Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_pg
提交
a796fb05
S
skill_tree_pg
项目概览
CSDN 技术社区
/
skill_tree_pg
通知
9
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_pg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a796fb05
编写于
11月 24, 2021
作者:
M
Mars Liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed odd orders
上级
577d8251
变更
37
隐藏空白更改
内联
并排
Showing
37 changed file
with
259 addition
and
61 deletion
+259
-61
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/1.关系型数据库/config.json
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/1.关系型数据库/config.json
+5
-2
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/1.关系型数据库/relation.json
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/1.关系型数据库/relation.json
+8
-0
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/2.服务器和客户端/client.json
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/2.服务器和客户端/client.json
+3
-1
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/2.服务器和客户端/config.json
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/2.服务器和客户端/config.json
+6
-2
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/config.json
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/config.json
+2
-1
data/1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/config.json
...1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/config.json
+3
-2
data/1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/develop.json
....PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/develop.json
+7
-0
data/1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/develop.md
.../1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/develop.md
+42
-0
data/1.PostgreSQL初阶/2.PostgreSQL的安装/config.json
data/1.PostgreSQL初阶/2.PostgreSQL的安装/config.json
+2
-1
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/basic.json
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/basic.json
+7
-0
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/basic.md
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/basic.md
+43
-0
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/config.json
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/config.json
+3
-2
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/concept.json
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/concept.json
+0
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/concept.md
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/concept.md
+32
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/config.json
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/config.json
+8
-2
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/delete.json
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/delete.json
+0
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/delete.md
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/delete.md
+0
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/insert.json
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/insert.json
+0
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/insert.md
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/insert.md
+0
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/update.json
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/update.json
+0
-0
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/update.md
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/update.md
+0
-0
data/1.PostgreSQL初阶/3.查询数据/3.PostgreSQL的数据类型/config.json
data/1.PostgreSQL初阶/3.查询数据/3.PostgreSQL的数据类型/config.json
+0
-7
data/1.PostgreSQL初阶/3.查询数据/4.函数调用/config.json
data/1.PostgreSQL初阶/3.查询数据/4.函数调用/config.json
+0
-7
data/1.PostgreSQL初阶/3.查询数据/config.json
data/1.PostgreSQL初阶/3.查询数据/config.json
+2
-1
data/1.PostgreSQL初阶/config.json
data/1.PostgreSQL初阶/config.json
+2
-1
data/2.PostgreSQL中阶/2.服务端编程/6.DML/config.json
data/2.PostgreSQL中阶/2.服务端编程/6.DML/config.json
+0
-7
data/2.PostgreSQL中阶/config.json
data/2.PostgreSQL中阶/config.json
+2
-1
data/3.PostgreSQL高阶/2.高级数据类型/1.自定义类型/config.json
data/3.PostgreSQL高阶/2.高级数据类型/1.自定义类型/config.json
+0
-7
data/3.PostgreSQL高阶/2.高级数据类型/4.函数/distinct.json
data/3.PostgreSQL高阶/2.高级数据类型/4.函数/distinct.json
+0
-0
data/3.PostgreSQL高阶/2.高级数据类型/4.函数/distinct.md
data/3.PostgreSQL高阶/2.高级数据类型/4.函数/distinct.md
+47
-0
data/3.PostgreSQL高阶/2.高级数据类型/5.视图/view.json
data/3.PostgreSQL高阶/2.高级数据类型/5.视图/view.json
+0
-0
data/3.PostgreSQL高阶/2.高级数据类型/5.视图/view.md
data/3.PostgreSQL高阶/2.高级数据类型/5.视图/view.md
+31
-0
data/3.PostgreSQL高阶/3.SQL高级技巧/6.表函数/config.json
data/3.PostgreSQL高阶/3.SQL高级技巧/6.表函数/config.json
+0
-7
data/3.PostgreSQL高阶/3.SQL高级技巧/7.结果集类型/config.json
data/3.PostgreSQL高阶/3.SQL高级技巧/7.结果集类型/config.json
+0
-7
data/3.PostgreSQL高阶/config.json
data/3.PostgreSQL高阶/config.json
+2
-1
data/config.json
data/config.json
+1
-1
src/tree.py
src/tree.py
+1
-1
未找到文件。
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/1.关系型数据库/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
6920a4f2ba864459bd8883a7a48fa238
"
,
"node_id"
:
"pg-
11d131b2d01b40be90b23f096d4852cc
"
,
"keywords"
:
[],
"keywords"
:
[],
"children"
:
[],
"children"
:
[],
"export"
:
[
"relation.json"
]
"export"
:
[
"relation.json"
]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/1.关系型数据库/relation.json
浏览文件 @
a796fb05
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"relation.md"
,
"notebook_enable"
:
false
,
"exercise_id"
:
"e50c1cee116d4054b9794c57effa9f5a"
}
\ No newline at end of file
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/2.服务器和客户端/client.json
浏览文件 @
a796fb05
...
@@ -2,5 +2,6 @@
...
@@ -2,5 +2,6 @@
"type"
:
"code_options"
,
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"author"
:
"刘鑫"
,
"source"
:
"client.md"
,
"source"
:
"client.md"
,
"notebook_enable"
:
false
"notebook_enable"
:
false
,
"exercise_id"
:
"88b033cd97c642ef9900e5e091e335ff"
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/2.服务器和客户端/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
40374311856c4ad3b76fff16ecbe9dce
"
,
"node_id"
:
"pg-
cf0e5cb243a247e2a0b812c5798cdba4
"
,
"keywords"
:
[],
"keywords"
:
[],
"children"
:
[],
"children"
:
[],
"export"
:
[
"client.json"
,
"server.json"
]
"export"
:
[
"client.json"
,
"server.json"
]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/1.PostgreSQL基本概念/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
b710bd5c63fb4651bebfdd9b3fdb17a5
"
,
"node_id"
:
"pg-
1aad17890736469a8b2f61a36dfe41db
"
,
"keywords"
:
[]
"keywords"
:
[]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-c252ff4b0e7f4163837c9b6f81678505"
,
"node_id"
:
"pg-c252ff4b0e7f4163837c9b6f81678505"
,
"keywords"
:
[],
"keywords"
:
[
"login"
,
"connect"
],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"develop.json"
]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/develop.json
0 → 100644
浏览文件 @
a796fb05
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"develop.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/1.PostgreSQL初阶/2.PostgreSQL的安装/3.使用PostgreSQL/develop.md
0 → 100644
浏览文件 @
a796fb05
# 开发环境中的 PostgreSQL
你是 SmartMarket 公司的一名开发人员,公司使用 Linux 运行 PostgreSQL 服务,而你的开发机使用 MacOS。下列说法正确的是:
1.
在 MacOS 上,使用 Homebrew 安装 PostgreSQL 后,在当前用户下执行 psql postgres 可以登入数据库
2.
在 Linux 上,使用 yum 或 apt 安装 PostgreSQL 后,sudo su postgres 切换到 postgres 用户,可以执行 psql 登入数据库
3.
对于自己安装的数据库服务器(非RDS),如果需要开放远程登录,需要编辑数据目录下的 postgresql.conf 和 pg_hua.conf
4.
安装 PostgreSQL 前,需要重装系统以获得一个干净的内核环境
5.
安装 PostgreSQL 前,需要手工建立一个名为 postgres 的超级用户
6.
安装 PostgreSQL 需要先安装 gcc 或 llvm clang
7.
对于使用 linux 的开发者,通常需要安装 postgresql 的开发包,这通常可以在主流的 linux 发行版的软件服务中找到,一般叫 postgresql-devel 或 postgresql-dev
## 答案
1, 2, 3, 7
## 选项
### A
1, 2, 3, 4, 5, 6, 7
### B
1, 2, 3
### C
2, 3, 4, 5
### D
5, 6, 7
### E
1, 3, 5, 7
### F
2, 4, 6
data/1.PostgreSQL初阶/2.PostgreSQL的安装/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
3ac4a2bf31af423fb9e2ec9fe30024c5
"
,
"node_id"
:
"pg-
d95edf2d942b45d781e112be785ce260
"
,
"keywords"
:
[]
"keywords"
:
[]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/basic.json
0 → 100644
浏览文件 @
a796fb05
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"basic.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/basic.md
0 → 100644
浏览文件 @
a796fb05
# 基本语法
下列 SQL 语句,哪一项不合法?
## 答案
```
postgresql
from test select abc;
```
## 选项
### A
```
postgresql
select 3.14;
```
### B
```
postgresql
select * from employee;
```
### C
```
postgresql
select * from employee where dept = 'hr';
```
### D
```
postgresql
select id, name, dept, salary from employee where salary > 10000::money;
```
### E
```
postgresql
select now();
```
data/1.PostgreSQL初阶/3.查询数据/1.SQL基本语法/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-dca8da7637f94ded91a1871daa51746e"
,
"node_id"
:
"pg-dca8da7637f94ded91a1871daa51746e"
,
"keywords"
:
[],
"keywords"
:
[
"语法"
,
"select"
],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"basic.json"
]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/concept.json
0 → 100644
浏览文件 @
a796fb05
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/concept.md
0 → 100644
浏览文件 @
a796fb05
# 基本概念
下列叙述中,正确的是
1.
带有 select 关键字的查询不会修改数据
2.
查询表需要 select 权限
3.
修改一个数据库表或对象的结构,通常语句中会出现 create、add、drop、alter 等关键字
4.
修改数据内容,通常会出现update、insert、delete等关键字
5.
update、insert、delete可以单独授权
## 答案
2, 3, 4, 5
## 选项
### A
1, 2, 3, 4, 5
### B
4, 5
### C
1, 2, 3
### D
3, 4, 5
\ No newline at end of file
data/1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DDL/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-b0f366abe12e41b0a9672d317e556662"
,
"node_id"
:
"pg-b0f366abe12e41b0a9672d317e556662"
,
"keywords"
:
[],
"keywords"
:
[
"DML"
,
"insert"
,
"update"
,
"delete"
],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"insert.json"
,
"update.json"
,
"delete.json"
,
"concept.json"
]
}
}
\ No newline at end of file
data/
2.PostgreSQL中阶/2.服务端编程/6.DM
L/delete.json
→
data/
1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DD
L/delete.json
浏览文件 @
a796fb05
文件已移动
data/
2.PostgreSQL中阶/2.服务端编程/6.DM
L/delete.md
→
data/
1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DD
L/delete.md
浏览文件 @
a796fb05
文件已移动
data/
2.PostgreSQL中阶/2.服务端编程/6.DM
L/insert.json
→
data/
1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DD
L/insert.json
浏览文件 @
a796fb05
文件已移动
data/
2.PostgreSQL中阶/2.服务端编程/6.DM
L/insert.md
→
data/
1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DD
L/insert.md
浏览文件 @
a796fb05
文件已移动
data/
2.PostgreSQL中阶/2.服务端编程/6.DM
L/update.json
→
data/
1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DD
L/update.json
浏览文件 @
a796fb05
文件已移动
data/
2.PostgreSQL中阶/2.服务端编程/6.DM
L/update.md
→
data/
1.PostgreSQL初阶/3.查询数据/2.SQL、DML和DD
L/update.md
浏览文件 @
a796fb05
文件已移动
data/1.PostgreSQL初阶/3.查询数据/3.PostgreSQL的数据类型/config.json
已删除
100644 → 0
浏览文件 @
577d8251
{
"node_id"
:
"pg-1eae8a80615f436081e71b36d89fb0aa"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
}
\ No newline at end of file
data/1.PostgreSQL初阶/3.查询数据/4.函数调用/config.json
已删除
100644 → 0
浏览文件 @
577d8251
{
"node_id"
:
"pg-ebef9fceb3684b119a9ba221a81f304b"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
}
\ No newline at end of file
data/1.PostgreSQL初阶/3.查询数据/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
7e2e52dbddb44d5bad6deea6c5e57198
"
,
"node_id"
:
"pg-
30f905f73a574151994d6d7f58d8a20d
"
,
"keywords"
:
[]
"keywords"
:
[]
}
}
\ No newline at end of file
data/1.PostgreSQL初阶/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
6089aef54c4c4ce7bc85b4dfa14f44cd
"
,
"node_id"
:
"pg-
f1c160affc45417a9c5fff7dc4be448a
"
,
"keywords"
:
[]
"keywords"
:
[]
}
}
\ No newline at end of file
data/2.PostgreSQL中阶/2.服务端编程/6.DML/config.json
已删除
100644 → 0
浏览文件 @
577d8251
{
"node_id"
:
"pg-e1cd59819dd74a0bacc707f7863aad53"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[
"insert.json"
,
"update.json"
,
"delete.json"
]
}
\ No newline at end of file
data/2.PostgreSQL中阶/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
c360138dad92431594130596c5c91394
"
,
"node_id"
:
"pg-
fc32585f4136497ea9be2d057d4aeada
"
,
"keywords"
:
[]
"keywords"
:
[]
}
}
\ No newline at end of file
data/3.PostgreSQL高阶/2.高级数据类型/1.自定义类型/config.json
已删除
100644 → 0
浏览文件 @
577d8251
{
"node_id"
:
"pg-ec4bbb39e76949b48b13f04cc8c16532"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
}
\ No newline at end of file
data/3.PostgreSQL高阶/2.高级数据类型/4.函数/distinct.json
0 → 100644
浏览文件 @
a796fb05
data/3.PostgreSQL高阶/2.高级数据类型/4.函数/distinct.md
0 → 100644
浏览文件 @
a796fb05
# 去重
下列函数中,有一个实现了合并两个 jsonb 对象并对其去重,是哪一项?
## 答案
```
postgresql
create function jsonb_distinct_merge(a jsonb, b jsonb) returns jsonb as
$$
select jsonb_agg(distinct (value)) from jsonb_array_elements(a || b)
$$ language sql
```
## 选项
### A
```
postgresql
create function jsonb_distinct_merge(a jsonb, b jsonb) returns jsonb as $$
select a || b
$$ language sql
```
### B
```
postgresql
create function jsonb_distinct_merge(a jsonb, b jsonb) returns jsonb as $$
return jsonb_agg(distinct(value)) from jsonb_array_elements(a||b)
$$ language sql
```
### C
```
postgresql
create function jsonb_distinct_merge(a jsonb, b jsonb) returns jsonb as $$
return next jsonb_agg(distinct(value)) from jsonb_array_elements(a||b)
$$ language sql
```
### D
```
postgresql
create function jsonb_distinct_merge(a jsonb, b jsonb) returns jsonb as $$
select a + b;
$$ language sql
```
\ No newline at end of file
data/3.PostgreSQL高阶/2.高级数据类型/5.视图/view.json
0 → 100644
浏览文件 @
a796fb05
data/3.PostgreSQL高阶/2.高级数据类型/5.视图/view.md
0 → 100644
浏览文件 @
a796fb05
# 视图
SmartMarket 公司的数据分析师,每天要执行一个固定的复杂查询,生成每日报表。我们准备将其创建为视图,这能够解决:
1.
简化查询
2.
降低查询时死锁的风险
3.
大幅优化查询性能
4.
限制权限
## 答案
1, 4
## 选项
### A
1.
2, 3, 4
### B
1, 2, 3
### C
2, 3
### D
3, 4
\ No newline at end of file
data/3.PostgreSQL高阶/3.SQL高级技巧/6.表函数/config.json
已删除
100644 → 0
浏览文件 @
577d8251
{
"node_id"
:
"pg-e4b00736ab4c483785c022a0a464f30a"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
}
\ No newline at end of file
data/3.PostgreSQL高阶/3.SQL高级技巧/7.结果集类型/config.json
已删除
100644 → 0
浏览文件 @
577d8251
{
"node_id"
:
"pg-0e280b203b524a28ab8587aac125a865"
,
"keywords"
:
[],
"children"
:
[],
"export"
:
[]
}
\ No newline at end of file
data/3.PostgreSQL高阶/config.json
浏览文件 @
a796fb05
{
{
"node_id"
:
"pg-
2f46da8212cf41ad9c0d2a5bf1330adc
"
,
"node_id"
:
"pg-
c9c7629c52064d8780cbd4dc14dbe351
"
,
"keywords"
:
[]
"keywords"
:
[]
}
}
\ No newline at end of file
data/config.json
浏览文件 @
a796fb05
{
{
"tree_name"
:
"pg"
,
"tree_name"
:
"pg"
,
"keywords"
:
[],
"keywords"
:
[],
"node_id"
:
"pg-
4544619de2a54841930282c700ba92b8
"
"node_id"
:
"pg-
d8b0b9aded4c4cc0b2085d6a7c5611c7
"
}
}
\ No newline at end of file
src/tree.py
浏览文件 @
a796fb05
...
@@ -249,7 +249,7 @@ class TreeWalker:
...
@@ -249,7 +249,7 @@ class TreeWalker:
def
ensure_node_id
(
self
,
config
):
def
ensure_node_id
(
self
,
config
):
flag
=
False
flag
=
False
if
"node_id"
not
in
config
or
\
if
"node_id"
not
in
config
or
\
not
config
[
"node_id"
].
startswith
(
f
"
{
self
.
tre
e
}
-"
)
or
\
not
config
[
"node_id"
].
startswith
(
f
"
{
self
.
nam
e
}
-"
)
or
\
config
[
"node_id"
]
in
id_set
:
config
[
"node_id"
]
in
id_set
:
new_id
=
self
.
gen_node_id
()
new_id
=
self
.
gen_node_id
()
id_set
.
add
(
new_id
)
id_set
.
add
(
new_id
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录