自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 问答 (23)
  • 收藏
  • 关注

原创 GBase 8c 模式搜索路径(二)

要显示当前搜索路径,使用下面的命令:SHOW search_path;在默认设置下这将返回:search_path-−-−-−-−-−-−-−"$user", public第一个元素说明一个和当前用户同名的模式会被搜索。如果不存在这个模式,该项将被忽略。第二个元素指向我们已经见过的公共模式。搜索路径中的第一个模式是创建新对象的默认存储位置。这就是默认情况下对象会被创建在公共模式中的原因。当对象在任何其他没有模式限定的环境中被引用(表修改、数据修改或查询命令)时,搜索路径将被遍..

2022-05-27 17:56:51 669

原创 GBase 8c 模式搜索路径(一)

限定名写起来很冗长,通常最好不要把特定模式名写到应用中。因此,表名通常被使用非限定名来引用,它只由表名构成。系统将沿着一条搜索路径来决定该名称指的是哪个表,搜索路径是一个进行查看的模式列表。搜索路径中第一个匹配的表将被认为是所需要的。如果在搜索路径中没有任何匹配,即使在数据库的其他模式中存在匹配的表名也将会报告错误。在不同方案中创建命名相同的对象,使得编写每次都准确引用相同对象的查询变得复杂。这也使得用户有可能更改其他用户查询的行为。由于未经限定的名称在查询中以及在数据库内部的广泛使用,在search_

2022-05-27 17:56:17 349

原创 GBase 8c 创建模式

创建模式,可使用CREATE SCHEMA命令,并且给出选择的模式名称。例如:CREATE SCHEMA myschema;在一个模式中创建或访问对象,需要使用由模式名和表名构成的限定名,模式名和表名之间以点号分隔:schema.table在任何需要表名的地方都可以这样使用,包括表修改命令和数据访问命令(为了方便我们在这里只谈到表,但是这种方式对其他类型的命名对象同样有效,例如类型和函数)。还有更加通用的语法:database.schema.table也可以使用,但是目前它只是在形式

2022-05-27 17:53:29 388

原创 GBase 8c 模式

GBase 8c数据库集簇中包含一个或多个数据库,用户和用户组被整个集簇共享,但没有其他数据在数据库之间共享。任何给定客户端连接只能访问在连接中指定的数据库中的数据。数据库包含一个或多个命名模式,模式中包含着表。模式还包含其他类型的命名对象,包括数据类型、函数和操作符。相同的对象名称可以被用于不同的模式中二不会出现冲突,例如schema1和myschema都可以包含名为mytable的表。和数据库不同,模式并不是被严格地隔离:一个用户可以访问他们所连接的数据库中的所有模式内的对象,只要他们有足够的权限。

2022-05-27 17:52:29 364

原创 GBase 8c 行安全性策略(二)

启用和禁用行安全性以及向表增加策略是只有表拥有者具有的特权。策略的创建可以使用CREATE POLICY命令,策略的修改 可以使用ALTER POLICY命令,而策略的删除可以使用 DROP POLICY命令。要为一个给定表启用或者禁用行 安全性,可以使用ALTER TABLE命令。每一条策略都有名称并且可以为一个表定义多条策略。由于策略是表相关的,一个表的每一条策略都必须有一个唯一的名称。不同的表可以拥有相同名称的策略。当多条策略适用于一个给定的查询时,会把它们用OR(对宽容性策略,默认的策略

2022-05-27 17:51:19 117

原创 GBase 8c 行安全性策略(一)

除了可以通过GRANT使用SQL标准的特权系统之外,表还可以具有行安全性策略,它针对每一个用户限制哪些行可以被普通的查询返回或者可以被数据修改命令插入、更新或删除。这种特性也被称为行级安全性。默认情况下,表不具有任何策略,这样用户根据SQL特权系统具有对表的访问特权,对于查询或更新来说其中所有的行都是平等的。当在一个表上启用行安全性时(使用ALTER TABLE ... ENABLE ROW LEVEL SECURITY),所有对该表选择行或者修改行的普通访问都必须被一条行安全性策略所允许(不过,表的拥

2022-05-27 17:51:04 116

原创 GBase 8c 收集文档统计信息

函数ts_stat可用于检查配置和查找候选停用词。ts_stat(sqlquery text, [ weights text, ]OUT word text, OUT ndoc integer,OUT nentry integer) returns setof recordsqlquery是一个包含SQL查询语句的文本,该SQL查询将返回一个tsvector。ts_stat执行SQL查询语句并返回一个包含tsvector中每一个不同的语素(词)的统计信息。返回信息包括:word text

2022-05-26 20:49:38 105

原创 GBase 8c 处理查询

GBase 8c提供了函数和操作符用来操作tsquery类型的查询。tsquery && tsquery返回两个给定查询tsquery的与结果。tsquery || tsquery返回两个给定查询tsquery的或结果。!! tsquery返回给定查询tsquery的非结果。tsquery <-> tsquery返回给定查询tsquery的<->结果。例如:gbase=# SELECT to_tsquery('fat') <->

2022-05-26 20:47:07 179

原创 GBase 8c 查询重写

ts_rewrite函数族可以从tsquery中搜索一个特定的目标子查询,并在该子查询每次出现的地方都替换为另一个子查询。 实际上这只是通过字串替换而得到的一个特定tsquery版本。目标子查询和替换查询组合起来可以被认为是一个重写规则。一组类似的重写规则可以为搜索提供强大的帮助。例如,可以使用同义词扩大搜索范围(例如,new york, big apple, nyc, gotham)或限制搜索范围在用户直接感兴趣的热点话题上。ts_rewrite (query tsquery, target tsqu

2022-05-26 20:45:42 101

原创 GBase 8c 索引和排序规则

一个索引在每一个索引列上只能支持一种排序规则。如果需要多种排序规则,你可能需要多个索引。考虑这些语句:CREATE TABLE test1c (id integer,content varchar COLLATE "x");CREATE INDEX test1c_content_index ON test1c (content);该索引自动使用下层列的排序规则。因此一个如下形式的查询:SELECT * FROM test1c WHERE content &...

2022-05-26 20:42:08 317

原创 GBase 8c 部分索引-建立一个部分唯一索引

部分索引用途之一:并不要求索引被用于查询。其思想是在一个表的子集上创建一个唯一索引,如下例所示。这对那些满足索引谓词的行强制了唯一性,而对那些不满足的行则没有影响。假设我们有一个描述测试结果的表。我们希望保证其中对于一个给定的主题和目标组合只有一个“成功”项,但其中可能会有任意多个“不成功”项。实现它的方式是:CREATE TABLE tests (subject text,target text,success boolean,...);CR...

2022-05-26 20:40:10 364

原创 GBase 8c 部分索引-建立一个部分索引来排除不感兴趣的值

部分索引用途之一:从索引中排除那些查询不感兴趣的值。这导致了上述相同的好处,但它防止了通过索引来访问“不感兴趣的”值,即便在这种情况下一个索引扫描是有益的。显然,为这种场景建立部分索引需要很多考虑和实验。如果我们有一个表包含已上账和未上账的订单,其中未上账的订单在整个表中占据一小部分且它们是最经常被访问的行。我们可以通过只在未上账的行上创建一个索引来提高性能。创建索引的命令如下:CREATE INDEX orders_unbilled_index ON orders (order_nr)...

2022-05-26 20:34:27 190

原创 GBase 8c 部分索引示例-建立一个部分索引来排除公值

GBase 8c 支持部分索引。例如,建立一个部分索引来排除公值假设我们要在一个数据库中保存网页服务器访问日志。大部分访问都来自于我们组织内的IP地址,但是有些来自于其他地方(如使用拨号连接的员工)。如果我们主要通过IP搜索来自于外部的访问,我们就没有必要索引对应于我们组织内网的IP范围。假设有这样一个表:CREATE TABLE access_log (url varchar,client_ip inet,...);用以下命令可以创建适用于我们的部分...

2022-05-26 20:30:01 110

原创 GBase 8c 部分索引

一个部分索引是建立在表的一个子集上,而该子集则由一个条件表达式(被称为部分索引的谓词)定义。而索引中只包含那些符合该谓词的表行的项。部分索引是一种专门的特性,但在很多种情况下它们也很有用。使用部分索引的一个主要原因是避免索引公值。由于搜索一个公值的查询(一个在所有表行中占比超过一定百分比的值)不会使用索引,所以完全没有理由将这些行保留在索引中。这可以减小索引的尺寸,同时也将加速使用索引的查询。它也将加速很多表更新操作,因为这种索引并不需要在所有情况下都被更新。...

2022-05-26 20:26:03 99

原创 GBase 8c 表达式索引

一个索引列并不一定是底层表的一个列,也可以是从表的一列或多列计算而来的一个函数或者标量表达式。这种特性对于根据计算结果快速获取表中内容是有用的。例如,一种进行大小写不敏感比较的常用方法是使用lower函数:SELECT * FROM test1 WHERE lower(col1) = 'value';这种查询可以利用一个建立在lower(col1)函数结果之上的索引:CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));表达式索

2022-05-26 20:22:11 91

原创 GBase 8c 唯一索引

索引也可以被用来强制列值的唯一性,或者是多个列组合值的唯一性。CREATE UNIQUE INDEX name ON table (column [, ...]);当前,只有B-tree能够被声明为唯一。当一个索引被声明为唯一时,索引中不允许多个表行具有相同的索引值。空值被视为不相同。一个多列唯一索引将会拒绝在所有索引列上具有相同组合值的表行。GBase 8c会自动为定义了一个唯一约束或主键的表创建一个唯一索引。该索引包含组成主键或唯一约束的所有列(可能是一个多列索引),它也是用于强制这些约

2022-05-26 20:20:52 298

原创 GBase 8c 数据类型-数值类型

数字类型分为整数类型、任意精度数字类型、浮点类型和序数类型,GBase 8c数据库支持的所有数字类型如下: 类型名 存储尺寸 描述 范围 smallint 2字节 小范围整数 -32768 to +32767 integer 4字节 整数的典型选择 -214748

2022-04-27 14:27:13 892

原创 GBase 8c 数据类型-对象标识符类型

对象标识符(OID)被用来在内部作为多个系统表的主键。OID不会被添加到用户创建的表中,除非在创建表时指定了WITH OIDS或者启用了default_with_oids配置变量。OID类型有多个别名:regproc、regprocedure、regoper、regoperator、regclass、regtype、regrole、regnamespace、regconfig和regdictionary。 名字 引用 描述 值示

2022-04-27 14:26:02 279

原创 GBase 8c 数据类型-复合类型

复合类型用来表示一行或一个记录的结构。复合类型的定义,例如:CREATE TYPE complex AS ( r double precision, i double precision);CREATE TYPECREATE TYPE inventory_item AS ( name text, supplier_id integer, price numer

2022-04-27 14:24:01 68

原创 GBase 8c 数据类型-数组类型

GBase 8c允许定义变长多维数组,例如:CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][]);CREATE TABLE数组数据类型通过在数据类型后面加上方括号([])来命名。上述例子中创建一个名为sal_emp的表,它的列分别为:1、类型为text的列name;2、一维integer类型数据pay_by_qu

2022-04-27 14:22:28 174

原创 GBase 8c 数据类型-JSON类型

JSON 数据类型是用来存储JSON(JavaScript Object Notation)数据的。JSON数据类型有两种:json和jsonb。json数据类型存储输入文本的精准拷贝,处理函数必须在每次执行时必须重新解析该数据。而jsonb数据存储在二进制格式中,因为需要做附加的转换,jsonb输入速度比json慢,处理速度会快(因为不需要做解析)。同时jsonb还支持索引。JSON数据类型输入/输出语法:-- 简单标量/基本值-- 基本值可以是数字、带引号的字符串、true、false或

2022-04-27 14:20:20 368

原创 GBase 8c 数据类型-字符类型

类型名 描述 character varying(n), varchar(n) 有限制的变长 character(n), char(n) 定长,空格填充 varchar2 可变长度字符数据类型 nvarchar2 可变长度字符数据类型 text 无限变长 其中...

2022-04-27 14:18:25 223

原创 GBase 8c 数据类型-布尔类型

boolean的状态可以是::“true(真)”、“false(假)”和 “unknown(未知)”,未知状态表示为空值。 类型名 存储字节 描述 boolean 1字节 状态为真或假 ...

2022-04-27 14:17:11 166

原创 GBase 8c 数据类型-日期时间格式

支持日期格式如下: 日期格式 说明 Y,YY,YYY,YYYY,SYYY,SYEAR 年 I,IY,IYY,IYYY iso year Q, 季度 WW 周,一周中的第一天就是一年中的第一天 IW 周,周一是第一天 W 第一天是

2022-04-27 14:14:49 1530

原创 GBase 8c 数据类型-日期时间

GBase 8c支持所有的SQL日期和时间类型,如下表所示: 类型名 存储尺寸 描述 最小值 最大值 解析度 timestamp [ (p) ] [ without time zone ] 8字节 包括日期和时间(无时区) 4713 BC 294276 AD

2022-04-27 14:12:27 366

原创 GBase 8c DMT 迁移评估-用户权限

GBase8cDMT显示源数据库所有用户和角色的权限,并对应迁移到目标数据库中。不允许修改权限。支持三类用户权限:1. 管理权限安全策略RLS权限(BYPASSRLS) 复制(REPLICATION) 登陆(LOGIN) 创建角色权限(CREATEROLE) 创建库权限(CREATEDB) 继承(INHERIT) 超级用户(SUPERUSER)2. 库权限创建(CREATE) 查询(SELECT) 插入(INSERT) 更新(UPDATE) 删除(DELETE) 执行..

2022-04-27 14:11:38 693

原创 GBase 8c pg_hba.conf文件

客户端认证是由一个配置文件(通常名为pg_hba.conf并被存放在数据库集簇目录中)控制(HBA表示基于主机的认证)。在initdb初始化数据目录时,它会安装一个默认的pg_hba.conf文件。不过我们也可以把认证配置文件放在其它地方; 参阅hba_file配置参数。pg_hba.conf文件的常用格式是一组记录,每行一条。空白行将被忽略,#注释字符后面的任何文本也被忽略。记录不能跨行。一条记录由若干用空格和/或制表符分隔的域组成。如果域值用双引号包围,那么它可以包含空白。在数据库、用户或地址域中引

2022-04-26 16:48:09 1032

原创 GBase 8c SSL连接

GBase 8c有一个对使用SSL连接加密客户端/服务器通讯的本地支持,它可以增加安全性。这个特性要求在客户端和服务器端都安装OpenSSL并且在编译GBase 8c的时候打开这个支持。当SSL支持被编译在GBase 8c中时,可以通过将postgresql.conf中的ssl设置为on让GBase 8c服务器带着SSL支持被启动。 服务器在同一个 TCP 端口监听普通连接和SSL连接,并且将与任何正在连接的客户端协商是否使用SSL。默认情况下,这是客户端的选项,关于如何设置服务器来要求某些或者所有连接

2022-04-26 16:38:46 135

原创 GBase 8c 权限说明

GBase 8c 数据库中包含以下权限:SELECT:允许从指定表,视图或序列的任何列或列出的特定列进行SELECT。也允许使用COPY TO。在UPDATE或DELETE中引用现有列值也需要此权限。对于序列,此权限还允许使用currval函数。对于大对象,此权限允许读取对象。INSERT:允许将新行INSERT到指定的表中。如果列出了特定列,则只能在INSERT命令中为这些列分配(因此其他列将接收默认值)。也允许COPY FROM。UPDATE:允许更新指定表的任何列或列出的特定列,需要SELECT

2022-04-25 16:54:26 402

原创 GBase 8c集群状态监控

使用MONITOR可以分别监控集群GTM、Coordinator、Datanode、DCS节点状态或对集群全部节点状态进行监控。语法为:gha_ctl MONITOR all/gtm/coordinator/datanode/dcs -l dcslist [-c cluster][-c cluster]表示集群名称,为可选字段,缺省默认值gbase8c;dcslist为DCS地址,一般情况下可以只列出一个节点地址,其他节点会自动同步消息。为了保证高可用,也可以列出所有节点地址;具体操作命令

2021-12-08 10:27:18 2357

原创 GBase 8c数据库登陆

数据库登录语法为:gsql -p port -h host以gbase用户登录node3节点的CN3为例,具体操作命令为:[gbase@localhost ~]$ gsql -p 5432 -h 192.168.142.211正确返回信息:gsql (GBase8c 5.2.0.0BXX, based on PG 10.6 (GBase8cV5_S2.0.0BXX))Type "help" for help.gbase=#随后可以自由使用GBase 8c数据库。...

2021-12-08 09:59:27 947

原创 GBase 8c安装部署(三):手工部署方式

GBase 8c数据库支持手工部署、修改配置文件部署和创建配置文件部署三种安装部署方式,用户可以自行选择。推荐部署方式为:修改配置文件部署方式 > 创建配置文件部署方式 > 手工部署方式。注意:部署配置过程中,避免同节点上的端口复用,以免资源占用报错。手工部署操作过程(1)下载GBase 8c数据库安装包,并拷贝至GTM节点对应目录下。例如拷贝至目录为/home/gbase/deploy。注意:数据库安装部署需要在配置了免密登录的节点上进行,本例中为GTM节点免密,则安装部署操作需在该

2021-12-08 09:57:59 425

原创 GBase 8c安装部署(二):创建配置文件部署方式

GBase 8c数据库支持手工部署、修改配置文件部署和创建配置文件部署三种安装部署方式,用户可以自行选择。推荐部署方式为:修改配置文件部署方式 > 创建配置文件部署方式 > 手工部署方式。注意:部署配置过程中,避免同节点上的端口复用,以免资源占用报错。创建配置文件部署方式(1)下载GBase 8c数据库安装包,并拷贝至GTM节点对应目录下。例如拷贝至目录为/home/gbase/deploy。注意:数据库安装部署需要在配置了免密登录的节点上进行,本例中为GTM节点免密,则安装部署操作需在

2021-12-08 09:51:56 333

原创 GBase 8c安装部署(一):修改配置文件部署方式

GBase 8c数据库支持手工部署、修改配置文件部署和创建配置文件部署三种安装部署方式,用户可以自行选择。推荐部署方式为:修改配置文件部署方式 > 创建配置文件部署方式 > 手工部署方式。注意:部署配置过程中,避免同节点上的端口复用,以免资源占用报错。修改配置文件部署操作过程(1)下载GBase 8c数据库安装包,并拷贝至GTM节点对应目录下。例如拷贝至目录为/home/gbase/deploy。注意:数据库安装部署需要在配置了免密登录的节点上进行,本例中为GTM节点免密,则安装部署操作

2021-12-08 09:45:10 914

原创 GBase 8c产品高级特性之三:灰度发布

GBase 8c支持灰度发布,可以在保证业务持续可用的条件下,进行数据库版本升级和发布。在进行GBase 8c版本升级时,需要先下线一部分节点,剩下一部分节点继续提供服务,系统功能不受影响,性能会有一定程度下降。接着将下线的节点升级到新的版本,上线后提供服务,系统性能能够恢复到初始状态。新旧版本同时提供服务,运行一段时间确保新版本无异常后,再下线一部分节点继续升级。如此循环,通过灰度发布将所有节点都升级到新版本。在灰度发布的过程中,GBase 8c不中断服务,只是有短暂的性能下降,具备系统持续可用的能力

2021-11-29 14:41:06 417

原创 GBase 8c产品高级特性之二:弹性伸缩

GBase 8c具备弹性伸缩能力,用户可以根据业务需求和策略设置伸缩规则。在业务需求增长时,系统支持增加数据库节点以保证计算存储能力,在业务需求下降时,系统支持减少数据库节点以节约成本。用户可以通过管理平台进行伸缩规则的配置,例如资源使用达到扩容阈值进行弹性扩展,资源使用达到缩容阈值进行弹性收缩。当业务量增加,资源使用达到扩容阈值时,管理平台会实时监控资源使用的变化,并且从服务器资源池中选取资源,安装新数据库节点,保证业务的处理能力。当业务量降低,资源使用达到缩容阈值时,管理平台会删除数据库节点,并将资

2021-11-29 14:37:03 107

原创 GBase 8c产品高级特性之一:多场景的高可用方案

南大通用GBase 8c数据库采用shared noting架构和多数据副本机制,满足各种应用场景下对数据库不同的高可用需求。1.同机房容灾:采用同机房主从互备方案,可以抵御硬件级别故障,不能抵御城市级别和机房级别灾难。故障自动切换,RPO=0,RTO秒级。2.同城容灾:采用同城主从互备方案,可以抵御硬件级别故障和机房级别灾难,不能抵御城市级别灾难。故障自动切换,RPO=0,RTO秒级。3.异地多活容灾:采用异地主从互备方案,可以抵御硬件级别故障和机房级别、城市级别灾难。故障自动切换,RPO=0,R

2021-11-29 14:30:37 450

原创 GBase 8c产品架构

GBase 8c采用shared nothing的分布式架构,计算节点和存储节点分离,节点间通过高速网络进行通信,所有节点都有主从互备,确保系统的高可用性。由于没有资源共享,增加节点就可以线性地扩展集群的存储能力和计算能力,满足业务规模增长的要求。GBase 8c的节点分为三类,分别是协调器(Coordinator,CN)、数据节点(Data Node,DN)和全局事务管理器(Global Transaction Manager,GTM)。协调器:协调器管理和客户端的连接,对客户端发来的SQL进行解.

2021-11-29 14:21:45 1581

原创 剑指offer 45.孩子们的游戏(约瑟夫环)

剑指offer 45.孩子们的游戏(约瑟夫环)注 :注 :方法来自于b站up:子烁爱学习经本人在牛客调试通过版本,开贴做记录语言:javaimport java.util.LinkedList;public class Solution { public int LastRemaining_Solution(int n, int m) { LinkedList<Integer> kids = new LinkedList<>();

2020-12-01 11:10:33 107

原创 vmware下CenOS6镜像将python2.6.6升级到2.7及以上

一.vmtools按钮为灰不能用将fedora镜像改为CentOS6就好了,具体原因以后再去发现二.将python2.6.6升级到python2.7及以上方法大部分参考:https://www.cnblogs.com/gne-hwz/p/8586430.html再结合自己在实际操作中遇到的问题。具体过程如下:升级python1.命令行输入python查看python版本(如果pytho...

2019-11-13 14:58:08 311

空空如也

GBase 8c 全文检索使用有什么限制?

2022-05-29

GBase 8c怎么测试文本搜索解析器?

2022-05-29

GBase 8c的词典支持什么用法?

2022-05-29

GBase 8c周边平台能够修改数据库参数吗?

2022-05-29

GBase 8c能够修改数据库的角色参数吗?

2022-05-29

GBase 8c安装部署报错,显示80000105

2022-04-26

GBase 8c 数据库创建表失败

2022-04-26

GBase 8c数据库中有存储依赖关系的位置吗

2022-04-26

GBase 8c可以只监控单独的DN节点状态吗?

2022-04-26

GBase 8c怎么创建管理员用户

2022-04-26

GBase 8c数据库支持TRUNCATE操作吗?

2022-03-28

GBase 8c 数据库的列默认值可以是值,也可以是表达式吗?

2022-03-28

GBase 8c数据库支持哪些约束?

2022-03-28

GBase 8c 数据库怎么修改表列的默认值和数据类型?

2022-03-28

GBase 8c数据库支持查看分区表信息吗?

2022-03-28

MogDB的SCA工具,在初始化资料库时报错,这怎么解决

2022-02-17

怎么查看目前存在的GBase 8c数据库角色之间的成员关系?

2022-02-16

GBase 8c数据库有类似后台进程自动清理的功能吗?

2022-02-16

移除GBase 8c角色Jimmy失败,报错显示不存在,请问怎么判断是否创建了这个角色?

2022-02-16

创建GBase 8c哈希分片表后,怎么判断是不是呢?

2022-02-16

之前创建了一个GBase 8c数据库,忘记是用哪个用户创建的了,怎么查?

2021-12-11

如果升级GBase 8c版本,那是不是会中断业务?

2021-11-29

GBase 8c能否部署在云服务器上?

2021-11-29

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除