0%

深入浅出MySQL++数据库开发优化与管理维护PDF下载

《深入浅出MySQL++数据库开发优化与管理维护》

链接: https://pan.baidu.com/s/1ydnPTZ531FwRxOdOPDj51A 提取码: 5eez

本书分为“基础篇”“开发篇”“优化篇”“管理维护篇”和“架构篇”,其内容源自网易公司多位资深数据库专家数年的经验总结和MySQL数据库的使用心得。本书以实用性和可操作性为主旨,章节安排合理有序,内容丰富全面,讲解由浅入深,还提供了大量的一线工作实例。

无论是数据库初学人员,还是有一定经验的数据库管理/维护/开发人员,都可以在阅读本书的过程中或有匪浅。本书还适合作为数据库相关专业的参考用户,以及相关培训机柜的培训教材

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967

目录

第 一部分 基础篇

第 1章 MySQL的安装与配置 2

1.1 MySQL的下载 2

1.1.1 在Windows平台下下载MySQL 3

1.1.2 在Linux平台下下载MySQL 3

1.2 MySQL的安装 5

1.2.1 在Windows平台下安装MySQL 5

1.2.2 在Linux平台下安装MySQL 8

1.3 MySQL的配置 12

1.3.1 Windows平台下配置MySQL 12

1.3.2 Linux平台下配置MySQL 13

1.4 启动和关闭MySQL服务 13

1.4.1 在Windows平台下启动和关闭MySQL服务 13

1.4.2 在Linux平台下启动和关闭MySQL服务 13

1.5 小结 14

第 2章 SQL基础 15

2.1 SQL简介 15

2.2 (My)SQL使用入门 15

2.2.1 SQL分类 15

2.2.2 DDL语句 16

2.2.3 DML语句 23

2.2.4 DCL语句 33

2.3 帮助的使用 34

2.3.1 按照层次看帮助 34

2.3.2 快速查阅帮助 35

2.4 查询元数据信息 36

2.5 小结 37

第3章 MySQL支持的数据类型 38

3.1 数值类型 38

3.2 日期时间类型 43

3.3 字符串类型 49

3.3.1 CHAR和VARCHAR类型 50

3.3.2 BINARY和VARBINARY类型 51

3.3.3 ENUM类型 51

3.3.4 SET类型 52

3.4 JSON类型 52

3.5 小结 54

第4章 MySQL中的运算符 55

4.1 算术运算符 55

4.2 比较运算符 56

4.3 逻辑运算符 59

4.4 位运算符 60

4.5 运算符的优先级 61

4.6 小结 62

第5章 常用函数 63

5.1 字符串函数 63

5.2 数值函数 66

5.3 日期和时间函数 68

5.4 流程函数 71

5.5 JSON函数 73

5.5.1 创建JSON函数 74

5.5.2 查询JSON函数 75

5.5.3 修改JSON的函数 79

5.5.4 查询JSON元数据函数 81

5.5.5 JSON工具函数 83

5.6 窗口函数 86

5.6.1 ROW_NUMBER() 87

5.6.2 RANK()/DENSE_RANK() 89

5.6.3 PERCENT_RANK()/CUME_DIST() 89

5.6.4 NFILE(N) 90

5.6.5 NTH_VALUE(expr,N) 91

5.6.6 LAG(expr,N)/LEAD(expr,N) 91

5.6.7 FIRST_VALUE(expr)/LAST_VALUE(expr) 92

5.6.8 聚合函数作为窗口函数 93

5.7 其他常用函数 93

5.8 小结 95

第二部分 开发篇

第6章 表类型(存储引擎)的选择 98

6.1 MySQL存储引擎概述 98

6.2 各种存储引擎的特性 100

6.2.1 MyISAM 101

6.2.2 InnoDB 102

6.2.3 MEMORY 108

6.2.4 MERGE 109

6.2.5 TokuDB 111

6.3 如何选择合适的存储引擎 112

6.4 小结 113

第7章 选择合适的数据类型 114

7.1 CHAR与VARCHAR 114

7.2 TEXT与BLOB 115

7.3 浮点数与定点数 118

7.4 日期类型选择 120

7.5 小结 120

第8章 字符集 121

8.1 字符集概述 121

8.2 Unicode简述 121

8.3 汉字及一些常见字符集 123

8.4 怎样选择合适的字符集 124

8.5 MySQL支持的字符集简介 125

8.6 MySQL字符集的设置 126

8.6.1 服务器字符集和排序规则 126

8.6.2 数据库字符集和排序规则 127

8.6.3 表字符集和排序规则 127

8.6.4 列字符集和排序规则 128

8.6.5 连接字符集和排序规则 128

8.7 字符集的修改步骤 129

8.8 小结 129

第9章 索引的设计和使用 130

9.1 索引概述 130

9.2 设计索引的原则 131

9.3 索引设计的误区 132

9.4 索引设计的一般步骤 132

9.5 BTREE索引与HASH索引 133

9.6 索引在MySQL 8.0中的改进 134

9.6.1 不可见索引 134

9.6.2 倒序索引 135

9.7 小结 136

第 10章 开发常用数据库对象 137

10.1 视图 137

10.1.1 什么是视图 137

10.1.2 视图操作 137

10.1.3 创建或者修改视图 137

10.1.4 删除视图 139

10.1.5 查看视图 139

10.2 存储过程和函数 140

10.2.1 什么是存储过程和函数 141

10.2.2 存储过程和函数的相关操作 141

10.2.3 创建、修改存储过程或者函数 141

10.2.4 删除存储过程或者函数 144

10.2.5 查看存储过程或者函数 144

10.2.6 变量的使用 146

10.2.7 定义条件和处理 146

10.2.8 光标的使用 148

10.2.9 流程控制 149

10.2.10 事件调度器 152

10.3 触发器 155

10.3.1 创建触发器 155

10.3.2 删除触发器 157

10.3.3 查看触发器 157

10.3.4 触发器的使用 158

10.4 小结 159

第 11章 事务控制和锁定语句 160

11.1 LOCK TABLES和UNLOCK TABLES 160

11.2 事务控制 161

11.3 分布式事务的使用 166

11.3.1 分布式事务的原理 166

11.3.2 分布式事务的语法 166

11.3.3 存在的问题 168

11.4 小结 171

第 12章 SQL中的安全问题 172

12.1 SQL注入简介 172

12.2 应用开发中可以采取的应对措施 173

12.2.1 PrepareStatement+Bind-Variable 173

12.2.2 使用应用程序提供的转换函数 174

12.2.3 自己定义函数进行校验 174

12.3 小结 175

第 13章 SQL Mode及相关问题 176

13.1 MySQL SQL Mode简介 176

13.2 SQL Mode的常见功能 178

13.3 常用的SQL Mode 180

13.4 SQL Mode在迁移中如何使用 182

13.5 小结 183

第 14章 MySQL分区 184

14.1 分区概述 184

14.2 分区类型 185

14.2.1 RANGE分区 187

14.2.2 LIST 分区 188

14.2.3 COLUMNS 分区 189

14.2.4 HASH分区 192

14.2.5 KEY分区 195

14.2.6 子分区 196

14.2.7 MySQL分区处理NULL值的方式 197

14.3 分区管理 199

14.3.1 RANGE与LIST分区管理 199

14.3.2 HASH与KEY分区管理 205

14.3.3 交换分区 206

14.4 小结 208

第三部分 优化篇

第 15章 SQL优化 210

15.1 优化SQL语句的一般步骤 210

15.1.1 通过show status命令了解各种SQL的执行频率 210

15.1.2 定位执行效率较低的SQL语句 211

15.1.3 通过EXPLAIN分析低效SQL的执行计划 211

15.1.4 通过show profile分析SQL 216

15.1.5 通过trace分析优化器如何选择执行计划 219

15.1.6 确定问题并采取相应的优化措施 220

15.2 索引问题 220

15.2.1 索引的存储分类 220

15.2.2 MySQL如何使用索引 222

15.2.3 查看索引使用情况 231

15.3 两个简单实用的优化方法 231

15.3.1 定期分析表和检查表 232

15.3.2 定期优化表 233

15.4 常用SQL的优化 233

15.4.1 大批量插入数据 234

15.4.2 优化INSERT语句 235

15.4.3 优化ORDER BY语句 235

15.4.4 优化GROUP BY语句 239

15.4.5 优化JOIN操作 239

15.4.6 优化嵌套查询 243

15.4.7 MySQL如何优化OR条件 245

15.4.8 优化分页查询 246

15.4.9 使用SQL提示 248

15.5 直方图 250

15.5.1 什么是直方图 250

15.5.2 直方图的分类 251

15.5.3 直方图实例应用 252

15.5.4 直方图小结 256

15.6 使用查询重写 256

15.7 常用SQL技巧 259

15.7.1 正则表达式的使用 259

15.7.2 巧用RAND()提取随机行 261

15.7.3 利用GROUP BY的WITH ROLLUP子句 262

15.7.4 用BIT GROUP FUNCTIONS做统计 263

15.7.5 数据库名、表名大小写问题 265

15.7.6 使用外键需要注意的问题 265

15.8 小结 266

第 16章 锁问题 267

16.1 MySQL锁概述 267

16.2 MyISAM表锁 268

16.2.1 查询表级锁争用情况 268

16.2.2 MySQL表级锁的锁模式 268

16.2.3 如何加表锁 269

16.2.4 并发插入(Concurrent Inserts) 271

16.2.5 MyISAM的锁调度 272

16.3 InnoDB锁问题 273

16.3.1 背景知识 273

16.3.2 获取InnoDB行锁争用情况 275

16.3.3 InnoDB的行锁模式及加锁方法 276

16.3.4 InnoDB行锁实现方式 279

16.3.5 Next-Key锁 283

16.3.6 恢复和复制的需要,对InnoDB锁机制的影响 284

16.3.7 InnoDB在不同隔离级别下的一致性读及锁的差异 287

16.3.8 什么时候使用表锁 288

16.3.9 关于死锁 289

16.4 小结 294

第 17章 优化MySQL Server 296

17.1 MySQL体系结构概览 296

17.2 MySQL内存管理及优化 298

17.2.1 内存优化原则 298

17.2.2 MyISAM内存优化 298

17.2.3 InnoDB内存优化 301

17.2.4 调整用户服务线程排序缓存区 305

17.3 InnoDB log机制及优化 305

17.3.1 InnoDB重做日志 305

17.3.2 innodb_flush_log_at_trx_commit的设置 306

17.3.3 设置log file size,控制检查点 307

17.3.4 调整innodb_log_buffer_size 308

17.4 调整MySQL并发相关的参数 308

17.4.1 调整max_connections,提高并发连接 308

17.4.2 调整back_log 309

17.4.3 调整table_open_cache 309

17.4.4 调整thread_cache_size 309

17.4.5 innodb_lock_wait_timeout的设置 309

17.5 持久化全局变量 309

17.6 使用资源组 310

17.7 小结 312

第 18章 磁盘I/O问题 313

18.1 使用固态硬盘 313

18.2 使用磁盘阵列 314

18.2.1 常见RAID级别及其特性 314

18.2.2 如何选择RAID级别 315

18.3 虚拟文件卷或软RAID 315

18.4 使用Symbolic Links分布I/O 315

18.5 禁止操作系统更新文件的atime属性 316

18.6 调整I/O调度算法 316

18.7 RAID卡电池充放电问题 318

18.7.1 什么是RAID卡电池充放电 318

18.7.2 RAID卡缓存策略 319

18.7.3 如何应对RAID卡电池充放电带来的I/O性能波动 321

18.8 NUMA架构优化 322

18.9 小结 325

第 19章 应用优化 326

19.1 优化数据表的设计 326

19.1.1 优化表的数据类型 326

19.1.2 通过拆分提高表的访问效率 328

19.1.3 逆规范化 329

19.2 数据库应用优化 330

19.2.1 使用连接池 330

19.2.2 减少对MySQL的访问 330

19.2.3 负载均衡 331

19.3 小结 331

第 20章 PS/SYS数据库 332

20.1 Performance Schema库 332

20.1.1 如何开启PS库 332

20.1.2 PS库的表 333

20.2 SYS 库 335

20.2.1 SYS库的对象 335

20.2.2 SYS对象的实际应用 336

20.3 小结 340

第 21章 故障诊断 341

21.1 故障诊断和处理的原则 341

21.2 故障处理一般流程 343

21.2.1 故障发现 343

21.2.2 故障定位 345

21.2.3 故障解决 346

21.3 典型故障案例 349

21.3.1 案例1 349

21.3.2 案例2 353

21.4 小结 356

第四部分 管理维护篇

第 22章 MySQL高级安装和升级 358

22.1 Linux/UNIX平台下的安装 358

22.1.1 安装包比较 358

22.1.2 安装二进制包 359

22.1.3 安装源码包 359

22.1.4 参数设置方法 360

22.2 升级MySQL 361

22.3 小结 363

第 23章 MySQL中的常用工具 364

23.1 MySQL官方工具 364

23.1.1 mysql(客户端连接工具) 364

23.1.2 mysqladmin(MySQL管理工具) 371

23.1.3 mysqlbinlog(日志管理工具) 371

23.1.4 mysqlcheck(表维护工具) 378

23.1.5 mysqldump(数据导出工具) 380

23.1.6 mysqlpump(并行的数据导出工具) 384

23.1.7 mysqlimport(数据导入工具) 385

23.1.8 mysqlshow(数据库对象查看工具) 385

23.1.9 perror(错误代码查看工具) 387

23.1.10 MySQL Shell 387

23.2 Percona工具包 390

23.2.1 pt-archiver(数据归档工具) 391

23.2.2 pt-config-diff(参数对比工具) 393

23.2.3 pt-duplicate-key-checker(检查冗余索引工具) 394

23.2.4 pt-find(查找工具) 395

23.2.5 pt-heartbeat(监控主从延迟工具) 395

23.2.6 pt-kill(杀死会话工具) 397

23.2.7 pt-online-schema-change(在线修改表结构工具) 397

23.2.8 pt-query-digest(SQL分析工具) 399

23.2.9 pt-table-checksum(数据检验工具) 401

23.2.10 pt-table-sync(数据同步工具) 402

23.3 小结 403

第 24章 MySQL日志 404

24.1 错误日志 404

24.2 二进制日志 405

24.2.1 日志的位置和格式 405

24.2.2 日志的读取 406

24.2.3 日志的删除 407

24.2.4 日志的事件 411

24.2.5 日志闪回 412

24.3 查询日志 415

24.3.1 日志的位置和格式 415

24.3.2 日志的读取 416

24.4 慢查询日志 416

24.4.1 文件位置和格式 416

24.4.2 日志的读取 417

24.4.3 Anemometer简介 419

24.5 小结 421

第 25章 备份与恢复 422

25.1 备份/恢复策略 422

25.2 逻辑备份和恢复 422

25.2.1 备份 423

25.2.2 完全恢复 425

25.2.3 基于时间点恢复 427

25.2.4 基于位置恢复 427

25.2.5 并行恢复 427

25.3 物理备份和恢复 428

25.3.1 冷备份和热备份 428

25.3.2 MyISAM存储引擎的热备份 429

25.3.3 InnoDB存储引擎的热备份 429

25.4 表的导入和导出 438

25.4.1 导出 438

25.4.2 导入 442

25.5 小结 445

第 26章 MySQL权限与安全 446

26.1 MySQL权限管理 446

26.1.1 权限系统的工作原理 446

26.1.2 权限表的存取 446

26.1.3 账号管理 449

26.2 MySQL安全问题 461

26.2.1 操作系统相关的安全问题 461

26.2.2 数据库相关的安全问题 463

26.3 其他安全设置选项 471

26.3.1 密码插件 471

26.3.2 safe-user-create 472

26.3.3 表空间加密 473

26.3.4 skip-grant-tables 474

26.3.5 skip-networking 474

26.3.6 skip-show-database 475

26.4 小结 475

第 27章 MySQL监控 476

27.1 如何选择一个监控方案 476

27.1.1 选择何种监控方式 476

27.1.2 如何选择适合自己的监控工具 477

27.2 常用的网络监控工具 477

27.2.1 Open-Falcon简介 477

27.2.2 Nagios简介 479

27.2.3 Zabbix简介 480

27.2.4 几种常见开源软件比较 481

27.3 Zabbix 部署 481

27.3.1 Zabbix Server软件安装 482

27.3.2 Zabbix Server配置与启动 482

27.3.3 配置Zabbix Web服务端 483

27.3.4 Zabbix Agent安装和配置 485

27.3.5 PMP插件介绍和部署 486

27.3.6 Zabbix Web端操作 489

27.4 性能医生orzdba 491

27.4.1 orzdba安装 491

27.4.2 orzdba使用 492

27.5 小结 492

第 28章 MySQL常见问题和应用技巧 493

28.1 忘记MySQL的root密码 493

28.2 数据目录磁盘空间不足的问题 494

28.3 mysql.sock丢失后如何连接数据库 495

28.4 从mysqldump文件抽取需要恢复的表 496

28.5 使用innobackupex备份恢复单表 497

28.6 分析BINLOG,找出写的热点表 498

28.7 在线DDL 499

28.8 小结 502

第 29章 自动化运维系统的开发 503

29.1 MySQL自动化运维背景 503

29.2 CMDB系统搭建 504

29.2.1 CMDB数据库 504

29.2.2 批量管理系统 505

29.2.3 后台API 511

29.3 任务调度系统 515

29.3.1 Celery安装 515

29.3.2 Celery任务部署 516

29.3.3 Flower监控 518

29.4 客户端搭建 519

29.4.1 Vue.js简介 519

29.4.2 Vue项目搭建 520

29.5 自动化运维平台实战 525

29.5.1 搭建CMDB 525

29.5.2 搭建任务调度平台 528

29.5.3 搭建客户端 529

29.5.4 项目演示 532

29.6 小结 532

第五部分 架构篇

第30章 MySQL复制 534

30.1 复制概述 534

30.1.1 复制中的各类文件 536

30.1.2 3种复制方式 537

30.1.3 复制的4种常见架构 540

30.2 复制搭建 543

30.2.1 异步复制 543

30.2.2 多线程复制 547

30.2.3 增强半同步复制 553

30.3 GTID(Global Transaction Identifier) 558

30.3.1 格式与存储 558

30.3.2 gtid_purged 561

30.3.3 复制搭建 565

30.3.4 主从切换 571

30.3.5 常见问题 572

30.4 主要复制启动选项 576

30.4.1 log-slave-updates 576

30.4.2 read-only/super_read_only 576

30.4.3 指定复制的数据库或者表 577

30.4.4 slave-skip-errors 579

30.5 日常管理维护 579

30.5.1 查看从库复制状态和进度 579

30.5.2 主从复制问题集锦 580

30.5.3 多主复制时的自增长变量冲突问题 582

30.5.4 如何提高复制的性能 584

30.6 小结 588

第31章 高可用架构 589

31.1 MHA架构 589

31.1.1 安装部署MHA 591

31.1.2 应用连接配置 598

31.1.3 自动failover 605

31.1.4 网络问题触发的failover操作 614

31.1.5 手动failover 614

31.1.6 在线进行切换 615

31.1.7 修复宕掉的Master 617

31.2 MGR架构 617

31.2.1 安装部署MGR 618

31.2.2 监控 625

31.2.3 primary成员切换 626

31.2.4 重要特性 628

31.2.5 常见问题 629

31.3 InnoDB Cluster 636

31.3.1 安装部署 637

31.3.2 初始化MySQL Router 642

31.3.3 集群Metadata 643

31.3.4 集群成员角色切换 644

31.3.5 集群删除/增加节点 646

31.3.6 重新加入节点 648

31.4 小结 649

第32章 MySQL中间件 650

32.1 MySQL Router 650

32.1.1 MySQL Router的安装 651

32.1.2 MySQL Router的初始化 653

32.1.3 MySQL Router策略验证 656

32.2 Cetus架构 658

32.2.1 Cetus的安装配置 659

32.2.2 Cetus的使用 670

32.2.3 Cetus日志文件 674

32.2.4 Cetus的后端管理 675

32.2.5 Cetus的路由策略 678

32.2.6 常见问题 681

32.3 小结 682


最后,这里为大家准备了几百本的互联网电子书,有需要的过来取吧。点击获取

本页书籍均来自网络,如有侵权,请联系我立即删除。我的邮箱:yaojianguolq@163.com

------ 全文结束------