From 6335fcd140df3fce62979f36a3aa6cd77fcb36fb Mon Sep 17 00:00:00 2001 From: luxin Date: Mon, 19 Jul 2021 23:26:54 +0800 Subject: [PATCH] add tree data and update README.md --- .DS_Store | Bin 0 -> 6148 bytes README.md | 181 + data/java_tree.txt | 4038 + data/python_tree.txt | 3618 + data/tree_java_mapping.json | 83923 ++++++++++++++++ data/tree_python_mapping.json | 72524 +++++++++++++ ...\221\345\216\237\347\224\237_mapping.json" | 73736 ++++++++++++++ ...\272\221\345\216\237\347\224\237_tree.txt" | 3712 + 8 files changed, 241732 insertions(+) create mode 100644 .DS_Store create mode 100644 data/java_tree.txt create mode 100644 data/python_tree.txt create mode 100644 data/tree_java_mapping.json create mode 100644 data/tree_python_mapping.json create mode 100644 "data/tree_\344\272\221\345\216\237\347\224\237_mapping.json" create mode 100644 "data/\344\272\221\345\216\237\347\224\237_tree.txt" diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2674bb5a0172a2572e83352a87deda61a2c9271d GIT binary patch literal 6148 zcmeHK!Ab)$5KY>u*^1bMV2`!Ee4;6Yf{dhjN!=s~63Ws6;?yV7ngx>oi#^pE@k zf5(|5EtV>H60tKdd6UUZLf$T!gfYh5QP^Ot!Wa{vhy@FpF9gR?7o=c3h#cn##>2ay zp9IiQNH$i$=FN%bToAR z!6o)i{j?Vt`z%TNGusc&qwcs}**Z$%)Q{rsKqW_E7ecNsqBu;(ZZe9)p_<3j143BB zYFDaRW;dHPY1?~~n#>M%>owW5_a_reZ0|Gba!V9Yjn z?+xO965oJt8b6IABnF59Vql3FFh`(RU!pzJR*3;(;Aafr`5-|N9fP?>b#y?3*GC*L zA)JUDzDfS_#?#MZvgS<17UX iRf-`NOK}xc3HT)%fR4djBX~gQBA{rXh8Xx&20j39(NKl} literal 0 HcmV?d00001 diff --git a/README.md b/README.md index fd80718..8b24980 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,189 @@ 一期: * python 技能树 + * 基本信息: + * 所有结点数: 3618 + * 所有结点中有数据结点数 / 所有结点数: 822 / 3618 = 0.23 + * 叶子结点数: 2893 + * 叶子结点中有数据结点数 / 叶子结点数: 741 / 2893 = 0.26 + * 不同等级难度结点数占比: 初阶: 37.39%, 中阶: 26.88%, 高阶: 35.73% + ![](https://gitee.com/AlexXinlu/markdown_image_host/raw/master/img/20210719231231.png) + + * 涵盖的数据资源 + * 第三方论坛: + * [廖雪峰的官方网站](https://www.liaoxuefeng.com/wiki/1016959663602400) --> liaoxuefeng + * [菜鸟教程](https://www.runoob.com/python/python-tutorial.html) --> runoob + * [csdn_roadmap](https://codechina.gitcode.host/developer-roadmap/python/intro/) --> csdn_roadmap + * python官方文档: + * [Python标准库](https://docs.python.org/zh-cn/3/library/) --> library + * [Python教程](https://docs.python.org/zh-cn/3/tutorial/index.html) --> tutorial + * [Python语言参考手册](https://docs.python.org/zh-cn/3/reference/index.html)reference + * [安装和使用Python](https://docs.python.org/zh-cn/3/using/index.html) --> using + * 书籍目录: + * [Python编程_从入门到实践_第2版](https://item.jd.com/11993134.html) + * [流畅的Python](https://item.jd.com/12186192.html) + * [Python编程快速上手_让繁琐工作自动化_第2版](https://item.jd.com/13131482.html) + * [Python从入门到精通](https://item.jd.com/12467272.html) + * [利用Python进行数据分析_原书第2版](https://item.jd.com/12398725.html) + * [Python核心编程_第3版](https://item.jd.com/11936238.html) + * [Python3网络爬虫开发实战](https://item.jd.com/12333540.html) + * [Python数据分析基础](https://item.jd.com/12230702.html) + * [Python_Cookbook_第3版](https://item.jd.com/11681561.html) + * [Python基础教程_第3版](https://item.jd.com/12279949.html) + * [Python3高级教程_第3版](https://item.jd.com/13005558.html) + * [Python进阶编程](https://item.jd.com/13214688.html) + * [Flask_Web开发_基于Python的Web应用开发实战_第2版](https://item.jd.com/12418677.html) + * [实用卷积神经网络:运用Python实现高级深度学习模型](https://item.jd.com/12591032.html) + * [Python高级数据分析:机器学习、深度学习和NLP实例](https://item.jd.com/12538466.html) + + * 树之间的关系 + ``` + basetree,,csdn_roadmap_python_revised + subtree,Python初阶,using_python + subtree,Python初阶,tutorial_python + subtree,Python初阶,reference_python + subtree,Python初阶,library_python + subtree,Python初阶,liaoxuefeng_python + subtree,Python初阶,Python基础教程_第3版 + subtree,Python初阶,Python编程快速上手_让繁琐工作自动化_第2版 + subtree,Python初阶,流畅的Python + subtree,Python初阶,Python编程_从入门到实践_第2版 + subtree,Python初阶,Python_Cookbook_第3版 + subtree,Python初阶,Python从入门到精通_初阶 + subtree,Python中阶;网络爬虫,Python3网络爬虫开发实战 + subtree,Python中阶;Web应用开发,Flask_Web开发_基于Python的Web应用开发实战_第2版 + subtree,Python中阶,Python进阶编程 + subtree,Python中阶,Python核心编程_第3版 + subtree,Python中阶,Python从入门到精通_中阶 + subtree,Python高阶;数据分析,Python数据分析基础 + subtree,Python高阶;数据分析,利用Python进行数据分析_原书第2版 + subtree,Python高阶;人工智能;计算机视觉,实用卷积神经网络:运用Python实现高级深度学习模型 + subtree,Python高阶;人工智能,Python高级数据分析:机器学习、深度学习和NLP实例 + subtree,Python高阶;高级教程,Python3高级教程_第3版 + subtree,Python高阶,Python从入门到精通_高阶 + subtree,其他,其他 + ``` + * java 技能树 + * 基本信息: + * 所有结点数: 4038 + * 所有结点中有数据结点数 / 所有结点数: 1253 / 4038 = 0.31 + * 叶子结点数: 3184 + * 叶子结点中有数据结点数 / 叶子结点数: 1144 / 3184 = 0.36 + * 不同等级难度结点数占比: 初阶: 48.57%, 中阶: 28.47%, 高阶: 22.96% + ![](https://gitee.com/AlexXinlu/markdown_image_host/raw/master/img/20210719231637.png) + + * 涵盖的数据资源 + * 第三方论坛: + * [廖雪峰的官方网站](https://www.liaoxuefeng.com/wiki/1252599548343744) --> liaoxuefeng + * 书籍目录: + * [Java编程思想](https://item.jd.com/10058149.html) + * [零基础学Java](https://item.jd.com/12185501.html) + * [Java从入门到精通](https://item.jd.com/12555860.html) + * [Java8编程参考官方教程](https://item.jd.com/11619195.html) + * [疯狂Java讲义_第5版](https://item.jd.com/12518025.html) + * [Java并发编程的艺术](https://item.jd.com/11740734.html) + * [Java实战_第2版](https://item.jd.com/12767450.html) + * [Java基础入门_第2版](https://item.jd.com/12484608.html) + * [Java核心技术_卷I_基础知识](https://item.jd.com/12759308.html) + * [Java核心技术_卷II_高级特性](https://item.jd.com/12791368.html) + * [Java_EE互联网轻量级框架整合开发_SSM框架](https://item.jd.com/12122571.html) + * [JavaEE开发的颠覆者:Spring_Boot实战](https://item.jd.com/11894632.html) + * [Spring_Boot_2精髓:从构建小系统到架构分布式大系统](https://item.jd.com/12214143.html) + + * 树之间的关系 + ``` + basetree,,Java8编程参考官方教程 + subtree,java初阶,Java基础入门_第2版 + subtree,java初阶,零基础学Java + subtree,java初阶,Java编程思想 + subtree,java初阶,Java从入门到精通 + subtree,java初阶,疯狂Java讲义_第5版 + subtree,java初阶,Java核心技术_卷I_基础知识 + subtree,java初阶,liaoxuefeng_java_初阶 + subtree,java中阶,Java并发编程的艺术 + subtree,java中阶,Java实战_第2版 + subtree,java中阶,Java核心技术_卷II_高级特性 + subtree,java中阶,liaoxuefeng_java_中阶 + subtree,java高阶,Java_EE互联网轻量级框架整合开发_SSM框架 + subtree,java高阶,JavaEE开发的颠覆者:Spring_Boot实战 + subtree,java高阶,Spring_Boot_2精髓:从构建小系统到架构分布式大系统 + subtree,java高阶,liaoxuefeng_java_高阶 + subtree,其他,其他 + ``` + * 云原生技能树 + * 基本信息: + * 所有结点数: 3712 + * 所有结点中有数据结点数 / 所有结点数: 593 / 3712 = 0.16 + * 叶子结点数: 2806 + * 叶子结点中有数据结点数 / 叶子结点数: 551 / 2806 = 0.2 + * 不同等级难度结点数占比: 初阶: 75.51%, 中阶: 22.96%, 高阶: 1.54% + ![](https://gitee.com/AlexXinlu/markdown_image_host/raw/master/img/20210719231905.png) + + * 涵盖的数据资源 + * 第三方论坛: + * [csdn_roadmap](https://codechina.gitcode.host/developer-roadmap/cloud-native/intro/) --> csdn_roadmap + * 书籍目录: + * [kubernetes权威指南](https://item.jd.com/12230380.html) + * [每天5分钟玩转kubernetes](https://item.jd.com/12329528.html) + * [基于kubernetes的容器云平台实战](https://item.jd.com/12433425.html) + * [docker技术入门与实战](https://item.jd.com/12453318.html) + * [go程序设计语言](https://item.jd.com/12187988.html) + * [go语言实战](https://item.jd.com/12136974.html) + * [goweb编程](https://item.jd.com/12252845.html) + * [go语言高级编程](https://item.jd.com/12647494.html) + * [DevOps实践指南](https://item.jd.com/12350780.html) + * [DevOps和自动化运维实践](https://item.jd.com/12473008.html) + * [Serverless架构:无服务器应用与AWS_Lambda](https://item.jd.com/12416446.html) + * [深入浅出Serverless:技术原理与应用实践](https://item.jd.com/12506392.html) + * [Serverless架构:从原理、设计到项目实战](https://item.jd.com/12592747.html) + * [Serverless架构应用开发:Python实现](https://item.jd.com/12691756.html) + * [深入理解Spring_Cloud与微服务构建](https://item.jd.com/12698004.html) + * [深入理解Spring_Cloud与实战](https://item.jd.com/13043028.html) + * [持续演进的Cloud_Native:云原生架构下微服务最佳实践](https://item.jd.com/37236336060.html) + * [Service_Mesh实战:基于Linkerd和Kubernetes的微服务实践](https://item.jd.com/12494016.html) + * [云原生服务网格Istio](https://item.jd.com/12538407.html) + * [Istio服务网格技术解析与实践](http://product.china-pub.com/8067565#ml) + * [高可用可伸缩微服务架构:基于Dubbo、Spring_Cloud和Service_Mesh](https://item.jd.com/12585284.html) + * [架构解密:从分布式到微服务](https://item.jd.com/12888366.html) + * [kubernetes进阶实战](https://item.jd.com/12477105.html) + * [kubernetes网络权威指南](https://item.jd.com/12724298.html) + * [云原生:运用容器、函数计算和数据构建下一代应用](https://item.jd.com/12867066.html) + * [云原生操作系统kubernetes](https://item.jd.com/13029786.html) + + * 树之间的关系 + ``` + basetree,,csdn_roadmap_云原生_revised + subtree,云原生初阶-平台开发;Kubernetes,kubernetes权威指南 + subtree,云原生初阶-平台开发;Kubernetes,每天5分钟玩转kubernetes + subtree,云原生初阶-平台开发;Kubernetes,基于kubernetes的容器云平台实战 + subtree,云原生初阶-平台开发;容器,Docker技术入门与实战 + subtree,云原生初阶-应用开发;编程语言,go程序设计语言 + subtree,云原生初阶-应用开发;编程语言,go语言实战 + subtree,云原生初阶-应用开发;编程语言,goweb编程 + subtree,云原生初阶-应用开发;编程语言,go语言高级编程 + subtree,云原生初阶-平台开发;DevOps,DevOps实践指南 + subtree,云原生初阶-平台开发;DevOps,DevOps和自动化运维实践 + subtree,云原生初阶-应用开发;Serverless,Serverless架构:无服务器应用与AWS_Lambda + subtree,云原生初阶-应用开发;Serverless,深入浅出Serverless:技术原理与应用实践 + subtree,云原生初阶-应用开发;Serverless,Serverless架构:从原理、设计到项目实战 + subtree,云原生初阶-应用开发;Serverless,Serverless架构应用开发:Python实现 + subtree,云原生初阶-应用开发;微服务,深入理解Spring_Cloud与微服务构建 + subtree,云原生初阶-应用开发;微服务,深入理解Spring_Cloud与实战 + subtree,云原生初阶-应用开发;微服务,持续演进的Cloud_Native:云原生架构下微服务最佳实践 + subtree,云原生初阶-应用开发;微服务,Service_Mesh实战:基于Linkerd和Kubernetes的微服务实践 + subtree,云原生初阶-应用开发;微服务,云原生服务网格Istio + subtree,云原生初阶-应用开发;微服务,Istio服务网格技术解析与实践 + subtree,云原生初阶-应用开发;微服务,高可用可伸缩微服务架构:基于Dubbo、Spring_Cloud和Service_Mesh + subtree,云原生初阶-应用开发;微服务,架构解密:从分布式到微服务 + subtree,云原生中阶-平台开发;Kubernetes,kubernetes进阶实战 + subtree,云原生中阶-平台开发;Kubernetes,kubernetes网络权威指南 + subtree,云原生中阶-平台开发;Kubernetes,云原生:运用容器、函数计算和数据构建下一代应用 + subtree,云原生中阶-平台开发;Kubernetes,云原生操作系统kubernetes + subtree,其他,其他 + ``` + ## 技能树概述 diff --git a/data/java_tree.txt b/data/java_tree.txt new file mode 100644 index 0000000..f662ed4 --- /dev/null +++ b/data/java_tree.txt @@ -0,0 +1,4038 @@ +java --> ( 难度等级: 无 || 挂载数据: 无 ) +├── java初阶 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Java的历史和演变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的家世 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 现代编程语言的诞生:C语言 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── C++:下一个阶段 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── Java出现的时机已经成熟 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的诞生 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java改变Internet的方式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Java applet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 可移植性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的魔力:字节码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── servlet:服务器端的Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的关键特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简单性 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 面向对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面向对象概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 面向对象程序设计的特点 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ ├── Java中的类与对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 类的定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ │ ├── 对象的创建与使用 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ ├── 存储到什么地方 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ │ └── Java中的数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ ├── 访问控制符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── String类与StringBuffer类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── String类的初始化 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ ├── String类的常见操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── StringBuffer类 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ │ │ ├── 声明字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ └── 创建字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── System类与Runtime类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── System类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ └── Runtime类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── Math类与Random类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Math类 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ │ ├── Random类 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ │ ├── Math类概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 常用数学运算方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 包装类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Integer类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ ├── Number类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ ├── Integer --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ │ │ ├── Boolean --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ │ ├── Character --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ │ └── Number --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 日期与时间类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Date类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ ├── Calendar类 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ │ └── JDK 8的日期与时间类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 格式化类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── DateFormat类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── SimpleDateFormat类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ │ └── DateTimeFormatter类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 用引用操纵对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 永远不需要销毁对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 作用域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 对象的作用域 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 构建一个Java程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 名字可见性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 运用其他构件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 编码风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 访问对象的属性和行为 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 对象的引用 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ │ ├── 对象的销毁 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 打印对象和toString方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ └── ==和equals方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ ├── 类的封装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 如何实现封装 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ ├── 构造方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 构造方法的定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ └── 构造方法的重载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── static关键字 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 静态变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 静态方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 静态代码块 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── 类的继承 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 继承的概念 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ │ ├── 重写父类方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ ├── extends关键字 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ ├── 所有类的父类——Object类 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ ├── super限定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 调用父类构造器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── final关键字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── final关键字修饰类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── final关键字修饰方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── final关键字修饰变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ ├── final数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── final方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── final类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 有关final的忠告 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 多态 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 多态概述 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 对象的类型转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 转机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 方法调用绑定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 产生正确的行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 可扩展性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 缺陷:“覆盖”私有方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 多态性 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ └── 引用变量的强制类型转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── JDK 8的Lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Lambda表达式入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 结构化程序设计简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 程序的三种基本结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面向对象程序设计简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面向对象的基本特征 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 方法详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 方法的所属性 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 方法的参数传递机制 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 形参个数可变的方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ └── 递归方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 类成员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 理解类成员 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ │ └── 单例(Singleton)类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── final修饰符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── final成员变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ ├── final局部变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ │ ├── final修饰基本类型变量和引用类型变量的区别 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 可执行“宏替换”的final变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ └── 不可变类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Java 9改进的接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 接口的概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Java 9中接口的定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 接口的继承 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ │ └── 面向接口编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Java 11增强的Lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Lambda表达式中使用var --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 使用Lambda表达式调用Arrays的类方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 枚举类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 手动实现枚举类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 枚举类入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 实现接口的枚举类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ └── 包含抽象方法的枚举类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 修饰符的适用范围 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 多版本JAR包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── jar命令详解 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 创建可执行的JAR包 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── 关于JAR包的技巧 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 健壮性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 体系结构中立 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 解释执行和高性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 动态性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的演变历程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java SE 8 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── 文化革新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java综述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 面向对象编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 两种范式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 抽象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OOP三原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 面向对象基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java核心类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StringJoiner --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包装类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 记录类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 第一个简单程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 输入程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 编译程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 深入分析第一个示例程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 第二个简短程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 两种控制语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── if语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── for循环 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 使用代码块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java类库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据类型、变量和数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java是强类型化的语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基本类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 整型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── byte --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── short --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── int --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── long --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ ├── 浮点型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── float --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── double --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 字符型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 布尔型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入分析字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 整型字面值 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 浮点型字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔型字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符型字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字符串字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变量的声明 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 动态初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 变量的作用域和生存期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型转换和强制类型转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Java的自动类型转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 强制转换不兼容的类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 表达式中的自动类型提升 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一维数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 多维数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 另一种数组声明语法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 关于字符串的一些说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串的连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 连接字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 连接其他数据类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 提取字符串信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取字符串长度 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 获取指定位置的字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 获取子字符串索引位置 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 判断字符串首尾内容 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ ├── 获取字符数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 判断子字符串是否存在 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串的操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 截取字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 字符串替换 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── 字符串分割 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 大小写转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 去除空白内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取子字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 去除空格 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 判断字符串的开始与结尾 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 按字典顺序比较两个字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 字母大小写转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可变字符串StringBuffer类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不可变String --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 重载"+"与StringBuilder --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 无意识的递归 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── String上的操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── printf() --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── System.out.format() --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Formatter类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 格式化说明符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Formatter转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── String.format() --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 正则表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基础 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ ├── 创建正则表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 限定符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pattern和Matcher --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── split() --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 替换操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── reset() --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 正则表达式与Java I/O --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 扫描输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Scanner定界符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用正则表达式扫描 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StringTokenizer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 获取字符串信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字符串查找 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 获取指定索引位置的字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 格式化字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 常规类型格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 子串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 拼接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不可变字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 检测字符串是否相等 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 空串与Null串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 码点与代码单元 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── String API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 阅读联机API文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 构建字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向C/C++程序员提供指针方面的说明 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 数组的定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 数组的常见操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 整数类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 浮点类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 布尔类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数组的概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建一维数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 给一维数组赋值 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 获取数组长度 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 一维数组的使用场景 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 不规则数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数组的基本操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 遍历数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 填充和批量替换数组元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 填充替换数组元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 数组查询 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 数组是第一级对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 返回一个数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 创建测试数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Arrays.fill() --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 数据生成器(Generator) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 从Generator中创建数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── Arrays实用功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 复制数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数组元素的比较 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 数组排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 在已排序的数组中查找 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 数组排序算法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 冒泡排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 直接选择排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 反转排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 数值中使用下画线分隔 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用var定义变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内存中的数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 基本类型数组的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 引用类型数组的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 操作数组的工具类:Arrays --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数组应用举例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── char类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── boolean类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 声明数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 访问数组元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── for each循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 数组拷贝 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 算术运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 基本算术运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 求模运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 算术与赋值复合运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 自增与自减运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 位运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 位逻辑运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 左移 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 右移 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无符号右移 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 位运算符与赋值的组合 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── 关系运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 布尔逻辑运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 赋值运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── “?”运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 运算符的优先级 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用圆括号 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自增和自减运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 扩展后的赋值运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 三目运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 数值类型之间的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 关系和boolean运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 括号与运算符级别 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── 控制语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的选择语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── if语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── switch语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 迭代语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── while语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── do-while语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── for语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── for循环的for-each版本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 嵌套的循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 跳转语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 使用break语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 使用continue语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── return语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ ├── 类 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 类的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类的一般形式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 一个简单的类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 声明对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 为对象引用变量赋值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为Box类添加方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 返回值 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 添加带参数的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构造函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── this关键字 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 在构造器中调用构造器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── static的含义 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 垃圾回收 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── finalize方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 堆栈类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 基本成员默认值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 成员变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 成员方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 权限修饰符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 操作对象的Objects工具类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── ThreadLocalRandom与Random --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── BigDecimal类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 方法和类的深入分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重载方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 区分重载方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 涉及基本类型的重载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 以返回值区分重载方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 将对象用作参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 参数传递的深入分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 返回对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 递归 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 访问控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java类包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类名冲突 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 完整的类路径 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 创建包 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 理解static --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── final介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重新审视数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 嵌套类和内部类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 成员内部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 局部内部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 静态内部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 匿名内部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ └── 再访工厂方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建内部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 链接到外部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 使用.this与.new --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 接口内部的类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 从多层嵌套类中访问外部类的成员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内部类的继承 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 内部类可以被覆盖吗 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 内部类标识符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用内部类访问对象状态 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 内部类的特殊语法规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内部类是否有用、必要和 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 由外部方法访问变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── String类介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用命令行参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── varargs:可变长度参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重载varargs方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── varargs方法与模糊性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 继承的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 成员访问与继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一个更实际的例子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 超类变量可以引用子类对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用super关键字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用super调用超类的构造函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── super的另一种用法 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 创建多级继承层次 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构造函数的调用时机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 方法重写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 动态方法调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 重写方法的目的 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 应用方法重写 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 使用抽象类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 抽象类的作用 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 在继承中使用final关键字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用final关键字阻止重写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用final关键字阻止继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Object类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── “是一个”(is-a)与“像是一个”(is-like-a)关系 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Object:所有类的超类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Object类型的变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── hashCode方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 泛型数组列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 声明数组列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问数组列表元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 类型化与原始数组列表的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 参数数量可变的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 继承的设计技巧 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 包和接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包查找与CLASSPATH --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 一个简短的包示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代码组织 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建独一无二的包名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定制工具库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用import改变行为 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 对使用包的忠告 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类的导入 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 在包中增加类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包访问 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ └── 设置类路径 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 访问保护 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 导入包 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 定义接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 实现接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 嵌套接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 应用接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口中的变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口可以扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 完全解耦 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── Java中的“多重继承” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过继承来扩展接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 组合接口时的名字冲突 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 适配接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 接口中的域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 初始化接口中的域 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 接口的属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 解决默认方法冲突 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Comparator接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 对象克隆 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 默认接口方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认方法的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 一个更加实用的例子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在接口中使用静态方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 关于包和接口的最后说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 异常处理 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 异常处理的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 未捕获的异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── try块 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 异常处理程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 栈轨迹 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 重新抛出异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 异常链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── f?inally子句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── try-with-Resources语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 分析堆栈轨迹元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用try和catch --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 多条catch子句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 嵌套的try语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── throw --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── throws --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── finally --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的内置异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建自己的异常子类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 链式异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 3个近期添加的异常特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── throws关键字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── throw关键字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自定义异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 捕捉处理异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── try-catch代码块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在方法中抛出异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用throws关键字抛出异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 使用throw关键字抛出异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java常见异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运行时异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 异常处理机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用try...catch捕获异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 异常类的继承体系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问异常信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 使用finally回收资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 异常处理的嵌套 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── Java 9增强的自动关闭资源的try语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Checked异常和Runtime异常体系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用throws声明抛出异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 方法重写时声明抛出异常的限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用throw抛出异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自定义异常类 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 使用throw语句抛出异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── Java的异常跟踪栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常处理规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不要过度使用异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 避免使用Catch All语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Java的异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── NullPointerException --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 使用断言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JDK Logging --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Commons Logging --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用Log4j --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── 使用SLF4J和Logback --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── 多线程编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Java线程模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程优先级 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 同步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 消息传递 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Thread类和Runnable接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 主线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 实现Runnable接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 扩展Thread类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 选择一种创建方式 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Thread类实现多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Runnable接口实现多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Callable接口实现多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 三种实现多线程方式的对比分析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 后台线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 创建多个线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用isAlive和join方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程优先级 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 同步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用同步方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── synchronized语句 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 竞态条件的一个例子 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 竞态条件详解 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 锁对象 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 条件对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── synchronized关键字 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 监视器概念 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── volatile字段 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 线程局部变量 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 挂起、恢复与停止线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 获取线程的状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 建立一个进程 --> ( 难度等级: 初阶 || 挂载数据: qa: 9 ) +│ │ │ │ ├── 运行一个进程 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ └── 进程句柄 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ └── 多线程的优势 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程的生命周期及状态转换 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 新建和就绪状态 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 运行和阻塞状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 线程死亡 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程的调度 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程休眠 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 线程让步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 线程插队 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 多线程同步 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 同步锁 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ ├── 多线程通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程池 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Executor接口实现线程池管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CompletableFuture类实现线程池管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用线程池管理线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用ForkJoinPool利用多CPU --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ ├── 线程简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 实现线程的两种方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 继承Thread类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 操作线程的方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程的中断 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 线程的礼让 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程的同步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程同步机制 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 释放同步监视器的锁定 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 同步锁(Lock) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 控制线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── join线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 线程睡眠:sleep --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ └── 改变线程优先级 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 传统的线程通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Condition控制线程通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用阻塞队列(BlockingQueue)控制线程通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程组和未处理的异常 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 线程相关类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── ThreadLocal类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 包装线程不安全的集合 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 线程安全的集合类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── Java 9新增的发布-订阅框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 枚举、自动装箱与注解(元数据) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 枚举 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 枚举的基础知识 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── values和valueOf方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Java枚举是类类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 枚举继承自Enum类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 另一个枚举示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型封装器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Character封装器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Boolean封装器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 数值类型封装器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自动装箱 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自动装箱与方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 表达式中发生的自动装箱/拆箱 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔型和字符型数值的自动装箱/拆箱 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自动装箱/拆箱有助于防止错误 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 一些警告 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 注解(元数据) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 注解的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指定保留策略 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 在运行时使用反射获取注解 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── AnnotatedElement接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用默认值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标记注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 单成员注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 内置注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 重复注解 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── I/O、applet以及其他主题 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── I/O的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 字节流和字符流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字节流概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 字节流读写文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 文件的拷贝 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 字节流的缓冲区 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 字节缓冲流 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 字符流概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── 字符流操作文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 转换流 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ └── 预定义流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读取控制台输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读取字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 读取字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向控制台写输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── PrintWriter类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读/写文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 自动关闭文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── applet的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── transient和volatile修饰符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用instanceof运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── strictfp --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 本地方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 使用assert --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 静态导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过this调用重载的构造函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 紧凑API配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 转换数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 获取基本类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 视图缓冲器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用缓冲器操纵数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 缓冲器的细节 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内存映射文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 文件加锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 泛型 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 什么是泛型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 一个简单的泛型示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 泛型只使用引用类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于不同类型参数的泛型类型是不同的 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 泛型提升类型安全性的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 带两个类型参数的泛型类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型类的一般形式 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 有界类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用通配符参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建泛型方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 原始类型与遗留代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型类层次 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用泛型超类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 泛型子类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 泛型层次中的运行时类型比较 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 强制转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 重写泛型类的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型的类型推断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 擦除 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模糊性错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用泛型的一些限制 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 对静态成员的一些限制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 对泛型数组的一些限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 对泛型异常的限制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 定义泛型类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型的用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一个元组类库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一个栈类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── RandomList --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用类型参数推断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可变参数与泛型方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 用于Generator的泛型方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一个通用的Generator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简化元组的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一个Set实用工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义泛型方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── “菱形”语法与泛型构造器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 类型推断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建复杂模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 擦除的神秘之处 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── C++的方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 迁移的可兼容性 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 边界处的动作 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 擦除的补偿 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 泛型数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 边界 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编译器有多聪明? --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 抗变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无界通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 捕获转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自限定的类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 离奇的循环泛型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自限定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 参数协变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 动态类型安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 混用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── C++中的混用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 与接口混用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用装饰器模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 与动态代理混用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 潜在类型机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 缺乏潜在类型机制的补偿 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将一个方法应用于序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 当你并未碰巧拥有正确的接口时 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用适配器仿真潜在类型机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 将函数对象用作策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型的常规用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型的高级用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编译时不检查类型的异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java 9增强的“菱形”语法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 从泛型类派生子类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用类型通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设定类型通配符的上限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设定类型通配符的下限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设定泛型形参的上限 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 通配符概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通配符的超类型限定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无限定通配符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 通配符捕获 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写泛型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 擦拭法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── extends通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── super通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── lambda表达式简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── lambda表达式的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数式接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 几个lambda表达式示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 块lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型函数式接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 作为参数传递lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── lambda表达式与异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── lambda表达式和变量捕获 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 方法引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 静态方法的方法引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 泛型中的方法引用 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 构造函数引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 预定义的函数式接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── lambda表达式的语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构造器引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 再谈Comparator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java开发入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java语言的特点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDK的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是JDK --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 安装JDK --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── JDK目录介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 系统环境变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PATH环境变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── CLASSPATH环境变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── 第一个Java程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编辑Java源代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编译Java程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 根据CLASSPATH环境变量定位类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的运行机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Eclipse开发工具 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Eclipse概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Eclipse的安装与启动 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 使用Eclipse进行程序开发 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Java编程基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java的基本语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java的基本语法格式 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── Java中的注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java中的关键字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java中的标识符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Java中的变量与常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变量的定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 变量的数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变量的类型转换32目录Java基础入门(第2版)2.2.4变量的作用域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java中的常量 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 指数记数法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java中的运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 逻辑运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 条件运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 选择结构语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── if条件语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── switch条件语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 循环结构语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── do…while循环语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ └── for循环语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── 集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 集合概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Collection接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── List接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── List接口简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ArrayList集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── LinkedList集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Collection集合遍历 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Iterator遍历集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── foreach遍历集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── JDK 8的forEach遍历集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Set接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Set接口简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HashSet集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── TreeSet集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Map接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Map接口简介 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── HashMap集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Map集合遍历 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── TreeMap集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Properties集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 常用工具类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Collections工具类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── Arrays工具类 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 聚合操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 聚合操作简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Stream流对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Stream流的常用方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Parallel Stream(并行流) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Java集合框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集合接口与实现分离 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 泛型实用方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合框架中的接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 链表 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 数组列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 散列集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 树集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 优先队列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本映射操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更新映射条目 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 映射视图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 弱散列映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 链接散列集与映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 枚举集与映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 标识散列映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 算法 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 二分查找 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简单算法 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 批操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 编写自己的算法 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 遗留的集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 属性映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 栈 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 位集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java集合简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写equals方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写equals和hashCode --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 使用TreeMap --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 使用Properties --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用Deque --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── I/O流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── I/O流概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── File类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── File类的常用方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 遍历目录下的文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 删除文件及目录 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 创建文件对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文件操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 文件夹操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 目录列表器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 目录实用工具 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 目录的检查及创建 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文件的创建与删除 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ └── 获取文件信息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── RandomAccessFile --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ ├── 对象序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 寻找类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 序列化的控制 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 使用“持久性” --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── NIO --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── NIO概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── Buffer(缓冲器) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Channel(通道) --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Java新IO概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 使用Buffer --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Channel --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 字符集和Charset --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ └── 文件锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── NIO. --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Path接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── Files工具类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── GUI(图形用户接口) --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Swing概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Swing特点 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Swing包 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 常用Swing组件概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing顶级容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JFrame --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ └── JDialog --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── BorderLayout --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FlowLayout --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── GridLayout --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── FlowLayout流布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── BorderLayout边界布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── GridLayout网格布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 边界布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 网格布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FlowLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── BorderLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── GridLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── GridBagLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CardLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── BoxLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 事件处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件处理机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Swing常用事件处理 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Java事件模型的流程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件适配器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用内部类实现监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用外部类实现监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 类本身作为事件监听器类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 匿名内部类实现监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 基本事件处理概念 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 简洁地指定监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 适配器类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 动作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── AWT事件继承层次 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Swing常用组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 面板组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文本组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── JTextField文本框组件 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── JPasswordField密码框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── JTextArea文本域组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文本框组件 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 密码框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 文本域组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标签组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 按钮组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── JButton按钮组件 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── JRadioButton单选按钮组件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── JCheckBox复选框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 提交按钮组件 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 单选按钮组件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 复选框组件 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 下拉框组件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 菜单组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing组件的整合使用——QQ登录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 案例分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 案例实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── JavaFX图形用户界面工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JavaFX概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JavaFX开发环境配置 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── JavaFX基础入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── JavaFX可视化管理工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JDBC --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 什么是JDBC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDBC常用API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Driver接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── DriverManager类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Connection接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Statement接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── PreparedStatement接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── ResultSet接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── JDBC编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDBC的编程步骤 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 实现第一个JDBC程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── 案例——使用JDBC实现QQ登录 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ ├── 网络编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网络编程基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 网络通信协议 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── IP地址和端口号 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── InetAddress --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── UDP与TCP协议 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── UDP通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── UDP通信简介 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── DatagramPacket --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── DatagramSocket --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── UDP网络程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── UDP案例——聊天程序 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ ├── TCP通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── TCP通信简介 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ ├── ServerSocket --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── Socket --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 简单的TCP网络程序 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 多线程的TCP网络程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── TCP案例——文件上传 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 网络编程的基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 网络基础知识 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── Java的基本网络支持 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用URLDecoder和URLEncoder --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── URL、URLConnection和URLPermission --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 基于TCP协议的网络编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── TCP协议基础 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用ServerSocket创建TCP服务器端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Socket进行通信 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 记录用户信息 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 半关闭的Socket --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用NIO实现非阻塞Socket通信 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用AIO实现非阻塞通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 基于UDP协议的网络编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── UDP协议基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用DatagramSocket发送、接收数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用MulticastSocket实现多点广播 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用代理服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 直接使用Proxy创建连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用ProxySelector自动选择代理服务器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── Java 11标准化的HTTP Client --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 发送同步GET请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ ├── 发送带请求体的请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 发送异步请求 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── WebSocket客户端支持 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 基于WebSocket的多人实时聊天 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 初识Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java的版本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JavaAPI文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java的应用领域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 怎样学好Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java API文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java代码助手 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用IDE --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用IDE练习插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 搭建Java环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDK的下载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置JDK --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 测试开发环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── Windows系统的JDK环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Eclipse开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Eclipse简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 下载Eclipse --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ └── Eclipse工作台 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Eclipse的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Java类文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用编辑器编写程序代码 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 运行Java程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 程序调试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 难点解答 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDK常用的基本组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置环境变量后,javac运行正常,但编译的时候仍找不到文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── Java中变量一定要初始化吗? --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── switch多分支语句后expression表达式的数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多维数组的长度 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── StringBuffer与String的不同之处 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 把数据抽象成类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 局部变量和全局变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 类的三大特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么情况下会使用匿名内部类? --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 异常的使用原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 注意随机数的取值范围 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── “装箱”与“拆箱” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集合的使用场合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集合的元素数量是变化的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Swing组件的层级关系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布局的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 输入/输出流的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 线程的核心方法:run方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 线程的启动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无法连接数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SQL语句的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── AWT与Swing组件的区别 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── Java语言的特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 简单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分布性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 解释型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 动态 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── Java语言基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 代码注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 文档注释 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 注释的插入 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 类注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方法注释 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 字段注释 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 通用注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包注释 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 注释抽取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据类型转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 隐式转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 显式转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 隐式类型转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 显式类型转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ └── Java主类结构 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 包声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写主方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 导入API类库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 流程控制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 程序结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 条件语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── switch多分支语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 循环语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── foreach语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 循环语句的嵌套 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 复合语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 循环控制 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ ├── 循环 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 中断控制流程的语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── if判断 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── switch多重选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── while循环 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ ├── 面向对象编程基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 类的主方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 面向对象核心技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 类的多态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向上转型 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 忘记对象类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 向下转型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── instanceof关键字 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Swing程序设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 常用窗体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JFrame窗体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDialog对话框窗体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── JDialog窗体 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 常用面板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JPanel面板 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── JScrollPane滚动面板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── JScrollPane面板 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 列表组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JComboBox下拉列表框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JList列表框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 下拉列表框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 列表框组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 事件监听器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 动作事件监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 键盘事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 鼠标事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ ├── 窗体事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 捕获窗体焦点变化事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 捕获窗体状态变化事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 捕获其他窗体事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ ├── 监听事件简介 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ └── 焦点事件监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── I/O(输入/输出) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 流概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 输入流 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 输出流 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ ├── 文件输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FileInputStream类与FileOutputStream类 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── FileReader类与FileWriter类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 带缓冲的输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── BufferedInputStream类与BufferedOutputStream类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── BufferedReader类与BufferedWriter类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 带缓存的输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 数据输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── ZIP压缩输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 压缩文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 解压缩ZIP文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ ├── 使用JDBC操作数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDBC概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── JDBC-ODBC桥 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── JDBC技术 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── JDBC驱动程序的类型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 数据库操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 数据库基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 数据查询 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 动态查询 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 添加、修改、删除记录 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 数据库基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 数据库的种类及功能 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── SQL语言 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 向数据库发送SQL语句 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ ├── 处理查询结果集 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 顺序查询 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 模糊查询 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── 预处理语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java绘图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java绘图基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Graphics绘图类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Graphics2D绘图类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Canvas画布类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 绘制几何图形 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 设置颜色与画笔 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设置颜色 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 设置画笔 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 图像处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制图像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 图像缩放 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 放大与缩小 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 图像翻转 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 图像旋转 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 图像倾斜 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Graphics --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Graphics2D --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 坦克大战游戏 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 开发背景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 系统开发环境要求 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 系统功能设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 系统功能结构 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 系统业务流程 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ ├── 枚举设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方向枚举 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 游戏模式枚举 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 坦克类型枚举 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 墙块类型枚举 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 公共类设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 绘图工具类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 地图工具类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模型类设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可显示图像的抽象类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 玩家坦克类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 电脑坦克类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 子弹类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 基地类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 爆炸效果类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 地图类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 墙块设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 墙块抽象类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 墙块实体类 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 窗体类设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 主窗体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 登录面板 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 显示关卡面板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 游戏面板 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ └── 游戏核心功能设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 碰撞检测 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 刷新帧 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ ├── 对象导论 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 抽象过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 每个对象都有一个接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 每个对象都提供服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 被隐藏的具体实现 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 复用具体实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 伴随多态的可互换对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 单根继承结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 参数化类型(范型) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 并发编程 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ ├── 操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 更简单的打印语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Java操作符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 优先级 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 赋值 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 算术操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 一元加、减操作符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 自动递增和递减 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 关系操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 测试对象的等价性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 逻辑操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 短路 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 按位操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 移位操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 三元操作符if-else --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符串操作符 + 和 += --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用操作符时常犯的错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型转换操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 截尾和舍入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 提升 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── Java没有“sizeof” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 控制执行流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── true和false --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── if-else --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── do-while --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 逗号操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Foreach语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── return --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── break和continue --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 臭名昭著的“goto” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── switch --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ ├── 初始化与清理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用构造器确保初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 缺省构造器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 成员初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 指定初始化 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── 构造器初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 初始化顺序 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 静态数据的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 显式的静态初始化 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 数组初始化 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 可变参数列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 枚举类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本enum特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 将静态导入用于enum --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 向enum中添加新方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 覆盖enum的方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── switch语句中的enum --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── values()的神秘之处 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 实现但不继承随机选取 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 为组织而使用接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用EnumSet替代标志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用EnumMap --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 常数相关的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用enum的职责链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用enum的状态机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多路分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用enum分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用EnumMap分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用枚举类型设置常量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用枚举类型的优势 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 类初始化块 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 访问权限控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java访问权限修饰词 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包访问权限 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── public:接口访问权限 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── private: 你无法访问 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ └── protected:继承访问权限 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 类的访问权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 复用类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 组合语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 继承语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 初始化基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建代理对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 代理类的特性 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 在组合与继承之间选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── protected关键字 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 持有对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基本概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 添加一组元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 容器的打印 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── List --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 迭代器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── ListIterator --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── LinkedList --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── Stack --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Set --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Map --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Queue --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── PriorityQueue --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Collection和Iterator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Foreach与迭代器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 适配器方法惯用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 通过异常处理错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 概念 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 创建自定义异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java标准异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 特例: RuntimeException(运行时异常) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用finally进行清理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── finally用来做什么 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 在return中使用finally --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 缺憾:异常丢失 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构造器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用构造器执行初始化 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── 构造器重载 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 异常匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 其他可选方式 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 历史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 观点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 把异常传递给控制台 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 把“受检查异常”转换为“不受检查的异常” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 异常使用指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 类型信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Class对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类字面常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 泛化的Class引用 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 新的转型语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型转换前先做检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用类字面常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 动态instanceof --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 递归计数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 注册工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── instanceof与Class的等价性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 反射:运行时类信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类方法抽取器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Class类与Java反射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 访问构造方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 访问成员变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 访问方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Annotation功能 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 定义Annotation类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── 访问Annotation信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 声明异常入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用反射分析类的能力 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 使用反射在运行时分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用反射编写泛型数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问字段 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 调用方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 调用构造方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 获取继承关系 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 动态代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 空对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 模拟对象与桩 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 容器深入研究 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 完整的容器分类法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 填充容器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 一种Generator解决方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Map生成器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用Abstract类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Collection的功能方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 可选操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 未获支持的操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── List的功能方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 队列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 优先级队列 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ └── 双向队列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 理解Map --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 性能 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── SortedMap --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── LinkedHashMap --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 散列与散列码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 理解hashCode() --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 为速度而散列 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 覆盖hashCode() --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 选择接口的不同实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 性能测试框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对List的选择 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 微基准测试的危险 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对Set的选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 对Map的选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 实用方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── List的排序和查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设定Collection或Map为不可修改 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Collection或Map的同步控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 持有引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── WeakHashMap --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java 1.0/1.1 的容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Vector和Enumeration --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Hashtable --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── BitSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java I/O系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 输入和输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── InputStream类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OutputStream类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 读取输入 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 添加属性和有用的接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过FilterInputStream从InputStream读取 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 通过FilterOutPutStream向OutputStream写入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Reader和Writer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据的来源和去处 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更改流的行为 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 未发生变化的类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── I/O流的典型使用方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 缓冲的输入文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 从内存中输入 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化的内存输入 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 基本文件输出 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 存储和恢复数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 读取和写入随机访问文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 管道流 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 文件读写的实用工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 读取二进制文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 标准I/O --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从标准输入中读取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将System.out转换成PrintWriter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 标准I/O重定向 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 进程控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 压缩 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用GZIP进行简单压缩 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 用Zip进行多文件存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java档案文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── XML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Preferences --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基本语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 元注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写注解处理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 注解元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 缺省值限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生成外部文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 注解不支持继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 实现处理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用apt处理注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 将观察者模式用于apt --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基于注解的单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将@Unit用于泛型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不需要任何“套件” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 实现@Unit --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 移除测试代码 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 限定重写父类方法:@Override --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java 9增强的@Deprecated --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 抑制编译器警告:@SuppressWarnings --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── “堆污染”警告与Java 9增强的@SafeVarargs --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 并发 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 并发的多面性 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 更快的执行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 改进代码设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 基本的线程机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 定义任务让步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Executor --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 休眠 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 让步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 编码的变体 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 术语 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 创建有响应的用户界面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 共享受限资源 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 不正确地访问资源 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 解决共享资源竞争 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 原子性与易变性 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 原子类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 临界资源 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 在其他对象上同步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 线程局部存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 终结任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 装饰性花园 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 在阻塞时终结 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 中断 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 检查中断 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程之间的协作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── wait()与notifyAll() --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── notify()与notifyAll() --> ( 难度等级: 初阶 || 挂载数据: qa: 9 ) +│ │ │ ├── 生产者与消费者 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 任务间使用管道进行输入/输出 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 死锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 新类库中的构件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── CountDownLatch --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CyclicBarrier --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── DelayQueue --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PriorityBlockingQueue --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用ScheduledExecutor的温室控制器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Semaphore --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Exchange --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 仿真 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 银行出纳仿真 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 饭店仿真 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 分发工作 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 性能调优 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 比较各类互斥技术 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 免锁容器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 乐观锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── ReadWriteLock --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 活动对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 进阶读物 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 新建线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 可运行线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 阻塞和等待线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 终止线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 守护线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程名 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 未捕获异常的处理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程安全的集合 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 阻塞队列 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 映射条目的原子更新 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 对并发散列映射的批操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 并发集视图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 写数组的拷贝 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 并行数组算法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 较早的线程安全集合 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 异步计算 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 可完成Future --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 组合可完成Future --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 用户界面回调中的长时间运行任务 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── 图形化用户界面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Swing基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 一个显示框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建按钮 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 捕获事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 文本区域 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 控制布局 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── GridBagLayout --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 绝对定位 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── BoxLayout --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Swing事件模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件与监听器的类型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 跟踪多个事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Swing组件一览 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 按钮 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 图标 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 工具提示 --> ( 难度等级: 初阶 || 挂载数据: qa: 9 ) +│ │ │ ├── 文本域 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 边框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 滚动面板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个迷你编辑器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 复选框 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 单选按钮 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 组合框(下拉列表) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 列表框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 页签面板 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 消息框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建菜单栏 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建弹出式菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定制个性化菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 菜单构建 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 菜单项中的图标 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 弹出菜单 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 键盘助记符和加速器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启用和禁用菜单项 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 工具条 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 弹出式菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 选项对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建对话框 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 数据交换 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文件对话框 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Swing组件上的HTML --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 滑块与进度条 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 选择外观 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 树、表格和剪贴板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 传递文本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用系统剪贴板传递图像 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用本地剪贴板传递对象引用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 通过系统剪贴板传递Java对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── JNLP与Java Web Start --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 可视化编程与JavaBean --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── JavaBean是什么 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 使用Introspector抽取出BeanInfo --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个更复杂的Bean --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 把Bean打包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 对更复杂的Bean的支持 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 更多有关Bean的读物 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Swing的可替换选择 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 用Flex构建Flash Web客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Hello, Flex --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 编译MXML --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── MXML与ActionScript --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 效果与风格 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 连接到Java --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 数据模型与数据绑定 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 构建和部署 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 创建SWT应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 安装SWT --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Hello, SWT --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 根除冗余代码 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 页签面板、按钮和事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 图形 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── SWT中的并发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── SWT还是Swing --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 熟悉Eclipse开发工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 熟悉Eclipse --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Eclipse的中文语言包 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 透视图与视图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 菜单栏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 工具栏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── “包资源管理器”视图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── “控制台”视图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 数字处理类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数字格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数学运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 随机数 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── Math.random方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 大数字运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── BigInteger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── BigDecimal --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── 核心技术 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 类的高级特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── final变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集合类概述 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── List集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── List接口的实现类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 改进的List接口和ListIterator接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ArrayList和Vector实现类 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ └── 固定长度的List --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Set集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── HashSet类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── LinkedHashSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── TreeSet类 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── EnumSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 各Set实现类的性能分析 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── Map集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Map接口的实现类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── 网络通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网络程序设计基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 局域网与因特网 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 网络协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 端口和套接字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── TCP程序设计基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── InetAddress类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── ServerSocket类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── UDP程序设计基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── DatagramPacket类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── DatagramSocket类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 高级应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing表格组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用JTable类直接创建表格 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 创建表格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定制表格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 操纵表格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 提供行标题栏的表格 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Swing树组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理选中节点事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 遍历树节点 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 定制树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 维护树模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 处理展开节点事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing其他高级组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 高级组件面板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分割面板 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 选项卡面板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 桌面面板和内部窗体 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文件选择器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文件选择对话框 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 使用文件过滤器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 系统托盘 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 桌面集成控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 高级事件处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 选项事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 表格模型事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── AWT绘图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 绘制图形 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 绘图颜色与画笔属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 画笔属性 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 绘制文本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 设置字体 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 显示文字 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ ├── 绘制图片 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 画图的实现原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用Graphics类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── 理解面向对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── UML(统一建模语言)介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用例图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 组件图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 顺序图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 活动图 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ └── 状态机图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java的面向对象特征 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java基础类库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 与用户互动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运行Java程序的参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用Scanner获取键盘输入 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 系统相关 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── Java 11改进的国际化与格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java国际化的思路 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── Java支持的国家和语言 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 完成程序国际化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用MessageFormat处理包含占位符的字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用类文件代替资源文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java 9新增的日志API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用NumberFormat格式化数字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用DateFormat格式化日期、时间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用SimpleDateFormat格式化日期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java 8新增的日期、时间格式器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用DateTimeFormatter完成格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用DateTimeFormatter解析字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java集合概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java 11增强的Collection和Iterator接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Lambda表达式遍历集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Iterator遍历集合元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 使用Lambda表达式遍历Iterator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用foreach循环遍历集合元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Predicate操作集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用Stream操作集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Queue集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PriorityQueue实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Deque接口与ArrayDeque实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── LinkedList实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 各种线性表的性能分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 增强的Map集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java 8为Map新增的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 改进的HashMap和Hashtable实现类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── LinkedHashMap实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Properties读写属性文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SortedMap接口和TreeMap实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── WeakHashMap实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IdentityHashMap实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── EnumMap实现类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 各Map实现类的性能分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── HashSet和HashMap的性能选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 操作集合的工具类:Collections --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 排序操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 同步控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 设置不可变集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java 9新增的不可变集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── AWT编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── AWT容器 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ ├── AWT常用组件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 基本组件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 对话框(Dialog) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── AWT菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 右键菜单 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 处理位图 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Image抽象类和BufferedImage实现类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Java 9增强的ImageIO --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 拖放功能 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 拖放目标 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 拖放源 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── Swing编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing基本组件的用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── AWT组件的Swing实现 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 为组件设置边框 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Swing组件的双缓冲和键盘驱动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用JToolBar创建工具条 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用JFileChooser和JColorChooser --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用JOptionPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing中的特殊容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用JSplitPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用JTabbedPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用JLayeredPane、JDesktopPane和JInternalFrame --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing简化的拖放功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java 7新增的Swing功能 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用JLayer装饰组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 创建透明、不规则形状窗口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建进度条 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 创建进度对话框 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JSlider和BoundedRangeModel创建滑动条 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JSpinner和SpinnerModel创建微调控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JList、JComboBox创建列表框 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不强制存储列表项的ListModel和ComboBoxModel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 强制存储列表项的DefaultListModel和DefaultComboBoxModel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用ListCellRenderer改变列表项外观 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JTree和TreeModel创建树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建树 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 拖动、编辑树节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 监听节点事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用DefaultTreeCellRenderer改变节点外观 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 扩展DefaultTreeCellRenderer改变节点外观 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 实现TreeCellRenderer改变节点外观 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JTable和TableModel创建表格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── TableModel和监听器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── TableColumnModel和监听器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 实现排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 绘制单元格内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 编辑单元格内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用JFormattedTextField和JTextPane创建格式文本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 监听Document的变化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JPasswordField --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JFormattedTextField --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用JEditorPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用JTextPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 注解(Annotation) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDK的元注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用@Retention --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用@Target --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用@Documented --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用@Inherited --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自定义注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 提取注解信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用注解的示例 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── 编译时处理注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 输入/输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 理解Java的IO流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流的分类 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── 流的概念模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 输入/输出流体系 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 处理流的用法 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 输入/输出流体系 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 推回输入流 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 重定向标准输入/输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java虚拟机读写其他进程的数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java 9改进的对象序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 序列化的含义和意义 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用对象流实现序列化 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 对象引用的序列化 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Java 9增加的过滤功能 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 自定义序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 另一种自定义序列化机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 版本 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ └── NIO.2的功能和用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Path、Paths和Files核心API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用WatchService监控文件变化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 访问文件属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Java程序设计概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java程序设计平台 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── Java“白皮书”的关键术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 解释型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java发展简史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 关于Java的常见误解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java程序设计环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装Java开发工具包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设置JDK --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 安装库源文件和文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用命令行工具 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用集成开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── JShell --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java的基本程序设计结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一个简单的Java应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 大数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 泛型程序设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型变量的限定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 限制与局限性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运行时类型查询只适用于原始类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不能创建参数化类型的数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Varargs警告 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不能构造泛型数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 泛型类的静态上下文中类型变量无效 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 可以取消对检查型异常的检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 注意擦除后的冲突 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型类型的继承规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 反射和泛型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 泛型Class类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Class参数进行类型匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 虚拟机中的泛型类型信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 类型字面量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 图形用户界面程序设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java用户界面工具包简史 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 显示窗体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建窗体 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 窗体属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在组件中显示信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理2D图形 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用颜色 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用字体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 显示图像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 首选项API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Swing用户界面组件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 布局管理概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 边框布局 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 网格布局 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 文本输入 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 密码域 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文本区 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 滚动窗格 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 选择组件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 组合框 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 滑动条 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 复杂的布局管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 网格包布局 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 定制布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Java快速入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java程序基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java程序基本结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 整数运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 浮点数运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 布尔运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 数组类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 数组操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── IO --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ ├── File对象 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── InputStream --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── OutputStream --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Filter模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 操作Zip --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 读取classpath资源 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── PrintStream和PrintWriter --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用Files --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ └── 单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 编写JUnit测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 使用Fixture --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 参数化测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +├── java中阶 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── 字符串处理 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── String类的构造函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符串的长度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 特殊的字符串操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串和其他数据类型的连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字符串转换和toString方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 提取字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── charAt --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── getChars --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── getBytes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── toCharArray --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 比较字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── equals和equalsIgnoreCase --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── regionMatches --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── startsWith和endsWith --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── equals与== --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── compareTo --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 查找字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 修改字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── substring --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── concat --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── replace --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── trim --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用valueOf转换数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 改变字符串中字符的大小写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 连接字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他String方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── StringBuffer类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StringBuffer类的构造函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── length与capacity --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── ensureCapacity --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── setLength --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── charAt与setCharAt --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── getChars --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── append --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── insert --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── reverse --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── delete与deleteCharAt --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── replace --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── substring --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 其他StringBuffer方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── StringBuilder类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 探究java.lang --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基本类型封装器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Number --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Double与Float --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 理解isInfinite与isNaN --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Byte、Short、Integer和Long --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Character --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对Unicode代码点的附加支持 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Boolean --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Void类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Process类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Runtime类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内存管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 执行其他程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── ProcessBuilder类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── System类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用currentTimeMillis计时程序的执行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用arraycopy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 环境属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Object类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用clone方法和Cloneable接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Class类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ClassLoader类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Math类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 三角函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指数函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 舍入函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 其他数学方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── StrictMath类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Compiler类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Thread类、ThreadGroup类和Runnable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Runnable接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── Thread类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── ThreadGroup类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ThreadLocal和InheritableThreadLocal类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Package类 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ ├── RuntimePermission类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Throwable类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── SecurityManager类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── StackTraceElement类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Enum类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ClassValue类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CharSequence接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Comparable接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Appendable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Iterable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Readable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AutoCloseable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Thread.UncaughtExceptionHandler接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── java.lang子包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── java.lang.annotation --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── java.lang.instrument --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── java.lang.invoke --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── java.lang.management --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── java.lang.ref --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── java.lang.reflect --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── java.util第1部分:集合框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDK 5对集合框架的修改 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 泛型从根本上改变了集合框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自动装箱使得使用基本类型更加容易 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── for-each风格的for循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Collection接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── List接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Set接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SortedSet接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── NavigableSet接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Queue接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Deque接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── ArrayList类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── LinkedList类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── HashSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── LinkedHashSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── TreeSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PriorityQueue类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ArrayDeque类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── EnumSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过迭代器访问集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用迭代器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用for-each循环替代迭代器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Spliterator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 拆分过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在集合中存储用户定义的类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── RandomAccess接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 映射接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 映射类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对流中每一个元素应用函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 流的扁平化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 比较器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合算法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Arrays类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 遗留的类和接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Enumeration接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Vector类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Stack类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Dictionary类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Hashtable类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Properties类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用store和load --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── java.util第2部分:更多实用工具类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── StringTokenizer类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── BitSet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Optional、OptionalDouble、OptionalInt和OptionalLong --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Date类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Calendar类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── GregorianCalendar类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── TimeZone类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── SimpleTimeZone类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Locale类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Random类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Observable类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Observer接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Observer示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Timer和TimerTask类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── Currency类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Formatter类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Formatter类的构造函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Formatter类的方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 格式化的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化字符串和字符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化数字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化时间和日期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── %n和%%说明符 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 指定最小字段宽度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指定精度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用格式标志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对齐输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 空格、“+”、“0”以及“(”标志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 逗号标志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── “#”标志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 大写选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用参数索引 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关闭Formatter对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── printf方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Scanner类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Scanner类的构造函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 扫描的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一些Scanner示例 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 设置定界符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 其他Scanner特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ResourceBundle、ListResourceBundle和 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他实用工具类和接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── java.util子包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── java.util.function --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── java.util.jar --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── java.util.logging --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── java.util.prefs --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── java.util.regex --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── java.util.spi --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── java.util.stream --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── java.util.zip --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 输入/输出:探究java.io --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── I/O类和接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── File类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 目录 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 使用FilenameFilter接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── listFiles方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 创建目录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AutoCloseable、Closeable和Flushable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── I/O异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 关闭流的两种方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 流类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字节流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── InputStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── OutputStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FileInputStream类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── FileOutputStream类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── ByteArrayInputStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ByteArrayOutputStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 过滤的字节流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 缓冲的字节流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── SequenceInputStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PrintStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── DataOutputStream和DataInputStream类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── RandomAccessFile类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 字符流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Reader类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Writer类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FileReader类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── FileWriter类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CharArrayReader类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── CharArrayWriter类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── BufferedReader类 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── BufferedWriter类 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── PushbackReader类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── PrintWriter类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── Console类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 串行化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serializable接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Externalizable接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ObjectOutput接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ObjectOutputStream类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── ObjectInput接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ObjectInputStream类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 串行化示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 流的优点 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 探究NIO --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── NIO类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── NIO的基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 缓冲区 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 通道 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 字符集和选择器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── JDK 7对NIO的增强 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Path接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Files类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Path接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文件属性接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── FileSystem、FileSystems和FileStore类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用NIO系统 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 为基于通道的I/O使用NIO --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 为基于流的I/O使用NIO --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 为路径和文件系统操作使用NIO --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── JDK 7之前基于通道的例子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读文件(JDK 7之前) --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 写文件(JDK 7之前) --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ ├── 联网 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 联网的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 联网类和接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── InetAddress类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 工厂方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Inet4Address类和Inet6Address类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── TCP/IP客户端套接字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── URL类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── URLConnection类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── HttpURLConnection类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── URI类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── cookie --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── TCP/IP服务器套接字 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 数据报 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── DatagramSocket类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── DatagramPacket类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 数据报示例 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ ├── Applet类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── applet的两种类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── applet的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── applet的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── applet的骨架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── applet的初始化和终止 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── 重写update方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 简单的applet显示方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 请求重画 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用状态栏窗口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── HTML APPLET标记 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向applet传递参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── getDocumentBase和getCodeBase --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AppletContext接口和showDocument方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AudioClip接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AppletStub接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 向控制台输出 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 事件处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 两种事件处理机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 委托事件模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 事件源 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 事件监听器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 事件类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ActionEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── AdjustmentEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ComponentEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ContainerEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── FocusEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── InputEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ItemEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── KeyEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── MouseEvent类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── MouseWheelEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── TextEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── WindowEvent类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 事件源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 事件监听器接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ActionListener接口 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── AdjustmentListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ComponentListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ContainerListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FocusListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ItemListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── KeyListener接口 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── MouseListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── MouseMotionListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── MouseWheelListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── TextListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── WindowFocusListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── WindowListener接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用委托事件模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理鼠标事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 处理键盘事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 适配器类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 内部类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── AWT介绍:使用窗口、图形和文本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── AWT类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 窗口基本元素 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Component类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Container类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Panel类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Window类 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── Frame类 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ └── Canvas类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用框架窗口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 设置窗口的尺寸 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 隐藏和显示窗口 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 设置窗口的标题 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 关闭框架窗口 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 在基于AWT的applet中创建框架窗口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建基于窗口的程序 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 在窗口中显示信息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用图形 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 绘制直线 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制矩形 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制椭圆和圆 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制弧形 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制多边形 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 演示绘制方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 改变图形的大小 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ ├── 使用颜色 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Color类的方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 设置当前图形的颜色 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 一个演示颜色的applet --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 设置绘图模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用字体 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 确定可用字体 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建和选择字体 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 获取字体信息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用FontMetrics管理文本输出 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 显示多行文本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 居中显示文本 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 对齐多行文本 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ ├── 使用AWT控件、布局管理器和菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── AWT控件的基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 添加和移除控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 响应控件 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ └── HeadlessException异常 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用标签 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ ├── 使用命令按钮 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用复选框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用复选框组 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用下拉列表 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用列表框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 管理滚动条 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用TextField --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用TextArea --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 理解布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── FlowLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── BorderLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用Insets --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── GridLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CardLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── GridBagLayout布局管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 菜单栏和菜单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── FileDialog类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 关于重写paint方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ ├── 图像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 文件格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 图像基础:创建、加载与显示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Image对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 加载图像 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── 显示图像 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── ImageObserver接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 双缓冲 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MediaTracker类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ImageProducer接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ImageConsumer接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ImageFilter类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CropImageFilter类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── RGBImageFilter类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 其他图像类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 并发实用工具 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 并发API包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── java.util.concurrent包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── java.util.concurrent.atomic包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── java.util.concurrent.locks包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用同步对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Semaphore类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CountDownLatch类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CyclicBarrier类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Exchanger类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Phaser类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用执行器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个简单的执行器示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用Callable和Future接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Future接口的局限性 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ └── 使用CompletableFuture构建异步应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── TimeUnit枚举 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 并发集合 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 原子操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 通过Fork/Join框架进行并行编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 主要的Fork/Join类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 分而治之的策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个简单的Fork/Join示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 理解并行级别带来的影响 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个使用RecursiveTask[V]的例子 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 异步执行任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 取消任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 确定任务的完成状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 重新启动任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 深入研究 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 关于Fork/Join框架的一些提示 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 并发实用工具与Java传统方式的比较 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 流API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 流的基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 如何获得流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 一个简单的流示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 缩减操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用并行流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 将顺序流转换为并行流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 测量流性能 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 高效使用并行流 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 映射 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 收集 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 迭代器和流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 对流使用迭代器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Spliterator --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 筛选 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用谓词筛选 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 筛选各异的元素 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流的切片 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用谓词对流进行切片 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 截短流 --> ( 难度等级: 初阶 || 挂载数据: qa: 9 ) +│ │ │ │ └── 跳过元素 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 查找和匹配 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 检查谓词是否至少匹配一个元素 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 检查谓词是否匹配所有元素 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 查找元素 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── 查找第一个元素 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 归约 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 元素求和 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 最大值和最小值 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 付诸实践 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 领域:交易员和交易 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 解答 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 数值流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 原始类型流特化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数值范围 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ └── 数值流应用:勾股数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 构建流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 由值创建流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 由可空对象创建流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 由数组创建流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 由文件生成流 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 由函数生成流:创建无限流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 流API中更多值得探究的地方 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── 正则表达式和其他包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 核心Java API包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 正则表达式处理 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── Pattern类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Matcher类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 正则表达式的语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 演示模式匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 模式匹配的两个选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 探究正则表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 反射 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 远程方法调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用java.text格式化日期和时间 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── DateFormat类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── SimpleDateFormat类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDK 8新增的时间和日期API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 时间和日期的基础知识 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 格式化日期和时间 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 解析日期和时间字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 探究java.time包的其他方面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 匹配字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 找出多个匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用分隔符来分割 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 替换匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 正则表达式简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 匹配规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分组匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 非贪婪匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 搜索和替换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 并发编程的挑战 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 上下文切换 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 多线程一定快吗 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 多线程基础 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 创建新线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 中断线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 守护线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 线程同步 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 同步方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用wait和notify --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 使用ReentrantLock --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 使用Condition --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用ReadWriteLock --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用StampedLock --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用Concurrent集合 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用Atomic --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 使用ForkJoin --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 测试上下文切换次数和时长 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 如何减少上下文切换 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 死锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 资源限制的挑战 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Java并发机制的底层实现原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── volatile的应用 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── synchronized的实现原理与应用 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Java对象头 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 锁的升级与对比 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── 原子操作的实现原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Java内存模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java内存模型的基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java内存模型的抽象结构 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 从源代码到指令序列的重排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 并发编程模型的分类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── happens-before简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重排序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据依赖性 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── as-if-serial语义 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 程序顺序规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 重排序对多线程的影响 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 顺序一致性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据竞争与顺序一致性 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 顺序一致性内存模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 同步程序的顺序一致性效果 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 未同步程序的执行特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── volatile的内存语义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── volatile的特性 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── volatile写-读建立的happens-before关系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── volatile写-读的内存语义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── volatile内存语义的实现 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 锁的内存语义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 锁的释放-获取建立的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 锁的释放和获取的内存语义 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 锁内存语义的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── concurrent包的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── final域的内存语义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── final域的重排序规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 写final域的重排序规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读final域的重排序规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── final域为引用类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── final语义在处理器中的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── happens-before --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JMM的设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── happens-before的定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ └── happens-before规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 双重检查锁定与延迟初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 双重检查锁定的由来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于volatile的解决方案 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 基于类初始化的解决方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java内存模型综述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理器的内存模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 各种内存模型之间的关系 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ ├── JMM的内存可见性保证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── JSR-133对旧内存模型的修补 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java并发编程基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 线程优先级 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程的状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Daemon线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 启动和终止线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 构造线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 启动线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 理解中断 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 过期的suspend、resume和stop --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 安全地终止线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ └── 线程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 等待/通知机制 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 等待/通知的经典范式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 管道输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── Thread.join的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Java中的锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Lock接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 队列同步器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 队列同步器的接口与示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Windows注册表概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 访问注册表的Java平台接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 以本地方法实现注册表访问函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 队列同步器的实现分析 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 重入锁 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 读写锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读写锁的接口与示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 读写锁的实现分析 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── LockSupport工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Condition接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Condition接口与示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Condition的实现分析 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Java并发容器和框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── ConcurrentHashMap的实现原理与使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ConcurrentHashMap的结构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ConcurrentHashMap的初始化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 定位Segment --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── ConcurrentHashMap的操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── ConcurrentLinkedQueue --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ConcurrentLinkedQueue的结构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 入队列 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 出队列 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ ├── Java中的阻塞队列 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是阻塞队列 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Java里的阻塞队列 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 阻塞队列的实现原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── Fork/Join框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 什么是Fork/Join框架 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 工作窃取算法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Fork/Join框架的设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用Fork/Join框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Fork/Join框架的异常处理 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── Fork/Join框架的实现原理 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── Java中的13个原子操作类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 原子更新基本类型类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 原子更新数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 原子更新引用类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 原子更新字段类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java中的并发工具类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 等待多线程完成的CountDownLatch --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 同步屏障CyclicBarrier --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CyclicBarrier简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CyclicBarrier的应用场景 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── CyclicBarrier和CountDownLatch的区别 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 控制并发线程数的Semaphore --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── 线程间交换数据的Exchanger --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── Java中的线程池 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 线程池的实现原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 线程池的使用 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 线程池的创建 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 向线程池提交任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 关闭线程池 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 合理地配置线程池 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 线程池的监控 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Executor框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Executor框架简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Executor框架的两级调度模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Executor框架的结构与成员 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── ThreadPoolExecutor详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── FixedThreadPool详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SingleThreadExecutor详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── CachedThreadPool详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ScheduledThreadPoolExecutor详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ScheduledThreadPoolExecutor的运行机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── ScheduledThreadPoolExecutor的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── FutureTask详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── FutureTask简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── FutureTask的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── FutureTask的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java并发编程实践 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 生产者和消费者模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 多生产者和多消费者场景 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ ├── 性能测试 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 异步任务池 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 基础知识 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Java 8、9、10以及11的变化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java怎么还在变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Java在编程语言生态系统中的位置 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 用行为参数化把代码传递给方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 并行与共享的可变数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Java需要演变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java中的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 方法和Lambda作为一等值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 从Java程序中调用C函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ ├── 数值参数与返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 字符串参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 访问域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 访问静态域 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ ├── 编码签名 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ ├── 调用Java方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 静态方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ │ ├── 构造器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 另一种方法调用 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 访问数组元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ └── 使用调用API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传递代码:一个例子 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 从传递方法到Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认方法及Java模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 不断演进的API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 初始版本的API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 第二版API --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 概述默认方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── 默认方法的使用模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 行为的多继承 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ └── 解决冲突的规则 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 选择提供了最具体实现的默认方法的接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 冲突及如何显式地消除歧义 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 来自函数式编程的其他好思想 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过行为参数化传递代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 应对不断变化的需求 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 初试牛刀:筛选绿苹果 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 再展身手:把颜色作为参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 第三次尝试:对你能想到的每个属性做筛选 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 行为参数化 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 对付啰唆 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 匿名类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 第五次尝试:使用匿名类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 第六次尝试:使用Lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 第七次尝试:将List类型抽象化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 真实的例子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用Comparator来排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 用Runnable执行代码块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过Callable返回结果 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── GUI事件处理 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ └── Lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Lambda管中窥豹 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在哪里以及如何使用Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数式接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 函数描述符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把Lambda付诸实践:环绕执行模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第 1 步:记得行为参数化 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 第 2 步:使用函数式接口来传递行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第 3 步:执行一个行为 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 第 4 步:传递Lambda --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── 使用函数式接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Predicate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Consumer --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Function --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 类型检查、类型推断以及限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类型检查 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 同样的Lambda,不同的函数式接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类型推断 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 使用局部变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 方法引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管中窥豹 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 构造函数引用 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 复合Lambda表达式的有用方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 比较器复合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 谓词复合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 函数复合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数学中的类似思想 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 积分 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 与Java 8的Lambda联系起来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测试可见Lambda函数的行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测试使用Lambda的方法的行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 将复杂的Lambda表达式分为不同的方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 高阶函数的测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 使用流进行函数式数据处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 引入流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 中间操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 终端操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 路线图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 用流收集数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 收集器简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 收集器用作高级归约 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 预定义收集器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 分组 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 操作分组的元素 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 多级分组 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ └── 按子组收集数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 分区 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 分区的优势 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 将数字按质数和非质数分区 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 收集器接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 理解Collector接口声明的方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 全部融合到一起 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 开发你自己的收集器以获得更好的性能 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 仅用质数做除数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 比较收集器的性能 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ ├── 无所不在的Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用Optional取代null --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何为缺失的值建模 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 采用防御式检查减少NullPointerException --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 其他语言中null的替代品 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Optional类入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 应用Optional的几种模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Optional对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用map从Optional对象中提取和转换值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用flatMap链接Optional对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 操纵由Optional对象构成的Stream --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认行为及解引用Optional对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 两个Optional对象的组合 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用filter剔除特定的值 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── Java模块系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块化的驱动力:软件的推理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关注点分离 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 信息隐藏 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Java软件 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── 使用Java模块系统开发应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从头开始搭建一个应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 细粒度和粗粒度的模块化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Java模块系统基础 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 使用多个模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── exports子句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── requires子句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 命名 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 编译及打包 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 自动模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 模块声明及子句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── requires --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── exports --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── requires的传递 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── exports to --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── open和opens --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── uses和provides --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 提升Java的并发性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── CompletableFuture及反应式编程背后的概念 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 为支持并发而不断演进的Java --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 其他的线程抽象:非嵌套方法调用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 你希望线程为你带来什么 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 同步及异步API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Future风格的API --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 反应式风格的API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 有害的睡眠及其他阻塞式操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 如何使用异步API进行异常处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── “线框–管道”模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── “发布–订阅”以及反应式编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 背压 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 一种简单的真实背压 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 反应式系统和反应式编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── CompletableFuture:组合式异步编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 实现异步API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将同步方法转换为异步方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 错误处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 让你的代码免受阻塞之苦 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用并行流对请求进行并行操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用CompletableFuture发起异步请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 寻找更好的方案 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 使用定制的执行器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 对多个异步任务进行流水线操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实现折扣服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用Discount服务 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 构造同步和异步操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 将两个CompletableFuture对象整合起来,无论它们是否存在依赖 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对Future和Completable-Future的回顾 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 高效地使用超时机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 响应CompletableFuture的completion事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 对最佳价格查询器应用的优化 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 反应式编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 反应式宣言 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 应用层的反应式编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 反应式系统 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 反应式流以及Flow API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Flow类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建你的第一个反应式应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用Processor转换数据 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 使用反应式库RxJava --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ └── 转换及整合多个Observable --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ ├── 函数式编程以及Java未来的演进 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数式的思考 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 实现和维护系统 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 声明式编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是函数式编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数式Java编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 引用透明性 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 面向对象的编程和函数式编程的对比 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 递归和迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数式编程的技巧 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无处不在的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 柯里化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 持久化数据结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 破坏式更新和函数式更新的比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 另一个使用Tree的例子 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── 采用函数式的方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Stream的延迟计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义的Stream --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ └── 创建你自己的延迟列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 模式匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 访问者模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用模式匹配力挽狂澜 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 杂项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 缓存或记忆表 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── “返回同样的对象”意味着什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 结论以及Java的未来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 回顾Java 8的语言特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java 10的局部变量类型推断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java的未来 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 声明处型变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模式匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 更加丰富的泛型形式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对不变性的更深层支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 值类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 让Java发展得更快 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 写在最后的话 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── Lambda基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用Stream --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 创建Stream --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 使用filter --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 使用reduce --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 输出集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── Java 8的流库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 从迭代到流的操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 流的创建 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── f?ilter、map和f?latMap方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 抽取子流和组合流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他的流转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 简单约简 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Optional类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 获取Optional值 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 消费Optional值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管道化Optional值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不适合使用Optional值的方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Optional值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用f?latMap构建Optional值的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 将Optional转换为流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 收集到映射表中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 下游收集器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 约简操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 基本类型流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 输入与输出 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 输入/输出流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 读写字节 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 完整的流家族 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 组合输入/输出流过滤器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文本输入与输出 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 如何写出文本输出 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 如何读入文本输入 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 以文本格式存储对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 字符编码方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 读写二进制数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── DataInput和DataOutput接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 随机访问文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── ZIP文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象输入/输出流与序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 保存和加载序列化对象 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 理解对象序列化的文件格式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 修改默认的序列化机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 序列化单例和类型安全的枚举 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 版本管理 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 为克隆使用序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 操作文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Path --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 读写文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 复制、移动和删除文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 获取文件信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 访问目录中的项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用目录流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── ZIP文件系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内存映射文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内存映射文件的性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 缓冲区数据结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 文件加锁机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── XML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── XML概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── XML文档的结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 解析XML文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 验证XML文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文档类型定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── XML Schema --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 一个实践示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用XPath来定位信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用命名空间 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 流机制解析器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用SAX解析器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用StAX解析器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 生成XML文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不带命名空间的文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 带命名空间的文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 写出文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 使用StAX写出XML文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── XSL转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 连接到服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用telnet --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 用Java连接到服务器 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 套接字超时 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 因特网地址 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 实现服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 服务器套接字 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 为多个客户端服务 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 半关闭 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 可中断套接字 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 获取Web数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── URL和URI --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 使用URLConnection获取信息 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 提交表单数据 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── HTTP客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 发送E-mail --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ ├── 数据库编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JDBC的设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDBC驱动程序类型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── JDBC的典型用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 结构化查询语言 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── JDBC配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据库URL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 驱动程序JAR文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 启动数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 注册驱动器类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 连接到数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 使用JDBC语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 执行SQL语句 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 管理连接、语句和结果集 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 分析SQL异常 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 组装数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 执行查询操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 预备语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读写LOB --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SQL转义 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 多结果集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 获取自动生成的键 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 可滚动和可更新的结果集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可滚动的结果集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 可更新的结果集 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── 行集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 构建行集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 被缓存的行集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 元数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用JDBC对事务编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 批量更新 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 高级SQL类型 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── Web与企业应用中的连接管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 国际化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── locale --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指定locale --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 默认locale --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 显示名字 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 数字格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化数字值 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 货币 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 排序和规范化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 消息格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 选择格式 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── 资源包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定位资源包 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 属性文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 包类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java平台模块系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块的概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对模块命名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块化的“Hello, World!”程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 对模块的需求 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 导出包 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 模块化的JAR --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 不具名模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用于迁移的命令行标识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 传递的需求和静态的需求 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 限定导出和开放 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 服务加载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 操作模块的工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类加载器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类加载过程 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 类加载器的层次结构 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 将类加载器用作命名空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编写你自己的类加载器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字节码校验 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 安全管理器与访问权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 权限检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java平台安全性 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 安全策略文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定制权限 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 实现权限类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用户认证 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── JAAS框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── JAAS登录模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 数字签名 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 消息摘要 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 消息签名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 校验签名 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 证书签名 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 证书请求 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 代码签名 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 加密 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── 对称密码 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 密钥生成 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 密码流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 公共密钥密码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 高级Swing和图形化编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 表格 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个简单表格 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 表格模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 对行和列的操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 单元格的绘制和编辑 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 树 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 简单的树 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 节点枚举 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制节点 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 监听树事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ └── 定制树模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 高级AWT --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 绘图操作流程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 形状 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 区域 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 笔画 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 着色 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 坐标变换 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 剪切 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 透明与组合 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 像素图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 图像的读取器和写入器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 图像处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 打印 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 图形打印 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 打印多页文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 打印服务程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 流打印服务程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 打印属性 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── Maven基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Maven介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 依赖管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用mvnw --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 发布Artifact --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 网络编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 网络编程基础 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── TCP编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── UDP编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 发送Email --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 接收Email --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── HTTP编程 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── RMI远程调用 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ └── JDBC编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JDBC简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JDBC查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JDBC更新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JDBC事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JDBC Batch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── JDBC连接池 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +├── java高阶 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Swing简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing的起源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing以AWT为基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 两个关键的Swing特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Swing组件是轻量级的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Swing支持可插入外观 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MVC连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 组件与容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 顶级容器窗格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一个简单的Swing应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 事件处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建Swing applet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 在Swing中绘图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 绘图的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 计算可绘制区域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 一个绘图示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 探究Swing --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JLabel与ImageIcon --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── JTextField --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Swing按钮 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JButton --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── JToggleButton --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 复选框 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 单选按钮 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── JTabbedPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JScrollPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JList --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JComboBox --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── JTable --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ ├── Swing菜单简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 菜单的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JMenuBar、JMenu和JMenuItem概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JMenuBar --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JMenu --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── JMenuItem --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建主菜单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向菜单项添加助记符和加速键 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向菜单项添加图片和工具提示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JRadioButtonMenuItem和JCheckBoxMenuItem --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建弹出菜单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建工具栏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用动作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 完整演示MenuDemo程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 继续探究Swing --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JavaFX GUI编程简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JavaFX的基础概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JavaFX包 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Stage和Scene类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 节点和场景图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布局 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Application类和生命周期方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 启动JavaFX应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JavaFX应用程序的骨架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编译和运行JavaFX程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 应用程序线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 一个简单的JavaFX控件:Label --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用按钮和事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件的基础知识 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 按钮控件简介 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 演示事件处理和按钮 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 直接在画布上绘制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 探究JavaFX控件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Image和ImageView --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 向标签添加图片 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 在按钮中使用图片 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── ToggleButton --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── RadioButton --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理开关组中的变化事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 处理单选按钮的另一种方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CheckBox --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── ListView --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ListView的滚动条 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── 启用多项选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ComboBox --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── TextField --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ScrollPane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── TreeView --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 效果和变换简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 效果 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 变换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 演示效果和变换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 添加工具提示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 禁用控件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── JavaFX菜单简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 菜单的基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MenuBar、Menu和MenuItem概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── MenuBar --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Menu --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── MenuItem --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建主菜单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向菜单项添加助记符和加速键 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 向菜单项添加图片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用RadioMenuItem和CheckMenuItem --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建上下文菜单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建工具栏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 完整的MenuDemo程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 继续探究JavaFX --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java Bean是什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java Bean的优势 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内省 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 属性的设计模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件的设计模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 方法与设计模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建型模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 工厂方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 抽象工厂 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 生成器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 原型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 单例 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 结构型模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 适配器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 桥接 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 装饰器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 外观 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 享元 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 代理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 行为型模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 责任链 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命令 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 解释器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迭代器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 中介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 备忘录 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 观察者 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 状态 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模板方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 访问者 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用BeanInfo接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 绑定属性与约束属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 持久性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java Bean API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Introspector类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PropertyDescriptor类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── EventSetDescriptor类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── MethodDescriptor类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 一个Bean示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── servlet --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 背景 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── servelet的生命周期 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── servlet开发选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Tomcat --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 一个简单的servlet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建和编译servlet源代码 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 启动Tomcat --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 启动Web浏览器并请求servlet --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ ├── Servlet API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── javax.servlet包 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Servlet接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── ServletConfig接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ServletContext接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── ServletRequest接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── ServletResponse接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── GenericServlet类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── ServletInputStream类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ServletOutputStream类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── servlet异常类 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 读取servlet参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── javax.servlet.http包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HttpServletRequest接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── HttpServletResponse接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HttpSession接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cookie类 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── HttpServlet类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 处理HTTP请求和响应 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 处理HTTP GET请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── 处理HTTP POST请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 使用cookie --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 会话跟踪 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 入门和技术基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 认识SSM框架和Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring IoC简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Spring AOP --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── MyBatis简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Hibernate简介 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ ├── MyBatis --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── Hibernate和MyBatis的区别 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── Spring MVC简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 最流行的NoSQL——Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SSM+Redis结构框图及概述 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Redis概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis在Java Web中的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 高速读/写场合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis基本安装和使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Windows下安装Redis --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ └── 在Linux下安装Redis --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── Redis的Java API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Java程序中使用Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 在Spring中使用Redis --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 简介Redis的6种数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Redis数据结构常用命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis数据结构——字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis数据结构——哈希 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── Redis数据结构——链表(linked-list) --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── Redis数据结构——集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis数据结构——有序集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Redis基础命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── spring-data-redis对有序集合的封装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 使用Spring操作有序集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 基数——HyperLogLog --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Redis的一些常用技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis的基础事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 探索Redis事务回滚 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 使用watch命令监控事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 流水线(pipelined) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 发布订阅 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 超时命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用Lua语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 执行输入Lua程序代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 执行Lua文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── Redis配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis基础配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis备份(持久化) --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── Redis内存回收策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 复制 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 主从同步基础概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Redis主从同步配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Redis主从同步的过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 哨兵(Sentinel)模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 哨兵模式概述 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 搭建哨兵模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在Java中使用哨兵模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 哨兵模式的其他配置项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用redis-cli --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安全设置 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 基本操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── keys --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis List --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis Hash --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── Set --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pub/Sub --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot集成Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用StringRedisTemplate --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── opsFor --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 绑定Key的操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── RedisConnection --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 序列化策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 默认序列化策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 自定义序列化策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── Java设计模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Java反射技术 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 通过反射构建对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 反射方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 9 ) +│ │ ├── 动态代理模式和责任链模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── JDK动态代理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CGLIB动态代理 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 拦截器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 拦截器的定义 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 拦截器的执行流程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发拦截器 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── 多个拦截器执行的顺序 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ └── 责任链模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 观察者(Observer)模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 工厂模式和抽象工厂模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 普通工厂(Simple Factory)模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 抽象工厂(Abstract Factory)模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ └── 建造者(Builder)模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 互联网持久框架——MyBatis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 认识MyBatis核心组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 准备MyBatis环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── MyBatis的核心组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SqlSessionFactory(工厂接口) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用XML构建SqlSessionFactory --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用代码创建SqlSessionFactory --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── SqlSession --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 映射器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用XML实现映射器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 注解实现映射器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── SqlSession发送SQL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用Mapper接口发送SQL --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 对比两种发送SQL方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SqlSessionFactoryBuilder --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SqlSessionFactory --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SqlSession --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Mapper --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── MyBatis配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── properties属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── property子元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用properties文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 使用程序传递方式传递参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── settings设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── typeAliases别名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 系统定义别名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义别名 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── typeHandler类型转换器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 系统定义的typeHandler --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义typeHandler --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 枚举typeHandler --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 文件操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ObjectFactory(对象工厂) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── environments(运行环境) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── transactionManager(事务管理器) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── environment数据源环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── databaseIdProvider数据库厂商标识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用系统默认的databaseIdProvider --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 不使用系统规则 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 引入映射器的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 映射器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── select元素——查询语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 简单的select元素的应用 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 自动映射和驼峰映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传递多个参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用resultMap映射结果集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 分页参数RowBounds --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── insert元素——插入语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 简单的insert语句的应用 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── 主键回填 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 自定义主键 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── update元素和delete元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── sql元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 存储过程参数支持 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 特殊字符串的替换和处理(#和$) --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── resultMap元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── resultMap元素的构成 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ ├── 使用map存储结果集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用POJO存储结果集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 级联 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── MyBatis中的级联 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 建立POJO --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 配置映射文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 延迟加载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 另一种级联 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 多对多级联 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 一级缓存和二级缓存 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── 缓存配置项、自定义和引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 存储过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IN和OUT参数存储过程 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 游标的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 动态SQL --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── if元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── choose、when、otherwise元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── trim、where、set元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── foreach元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用test的属性判断字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── bind元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MyBatis的解析和运行原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 构建SqlSessionFactory过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建Configuration --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 构建映射器的内部组成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 构建SqlSessionFactory --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── SqlSession运行过程 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 映射器(Mapper)的动态代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── SqlSession下的四大对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 插件接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 插件的初始化 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── 插件的代理和反射设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 常用的工具类——MetaObject --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring IoC的概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring的概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Spring的简史 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Spring IoC概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 主动创建对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 被动创建对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Spring IoC阐述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring IoC容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring IoC容器的设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring IoC容器的初始化和依赖注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Bean的生命周期 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 装配Spring Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 依赖注入的3种方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构造器注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用setter注入 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 接口注入 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 装配Bean概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过XML配置装配Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 装配简易值 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 装配集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 命名空间装配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过注解装配Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用@Component装配Bean --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 自动装配——@Autowired --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 自动装配的歧义性(@Primary和@Qualifier) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 装载带有参数的构造方法类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 使用@Bean装配Bean --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 注解自定义Bean的初始化和销毁方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 装配的混合使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Profile --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用注解@Profile配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用XML定义Profile --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启动Profile --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 点睛 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 演示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 加载属性(properties)文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用注解方式加载属性文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用XML方式加载属性文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 条件化装配Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Bean的作用域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用Spring表达式(Spring EL) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring EL相关的类 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── Spring EL运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 面向切面编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一个简单的约定游戏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 约定规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 读者的代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 笔者的代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring AOP的基本概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── AOP的概念和使用原因 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 面向切面编程的术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Spring对AOP的支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用@AspectJ注解开发Spring AOP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 选择切点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建切面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 连接点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试AOP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 装配AOP --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 使用注解装配AOP --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ └── AOP避坑指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 环绕通知 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 织入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 给通知传递参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 引入 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用XML配置开发Spring AOP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 前置通知、后置通知、返回通知和异常通知 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 环绕通知 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 给通知传递参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 引入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 经典Spring AOP应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多个切面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring和数据库编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 传统的JDBC代码的弊端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置数据库资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用简单数据库配置 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 使用第三方数据库连接池 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 使用JNDI数据库连接池 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── JDBC代码失控的解决方案——jdbcTemplate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── jdbcTemplate的增、删、查、改 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── 执行多条SQL --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── jdbcTemplate的源码分析 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ └── Spring的缺点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入Spring数据库事务管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring数据库事务管理器的设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置事务管理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 用Java配置方式实现Spring数据库事务 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 编程式事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 声明式事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Transactional的配置项 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 使用XML进行配置事务管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 事务定义器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 声明式事务的约定流程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 数据库的相关知识 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 数据库事务ACID特性 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 丢失更新 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 隔离级别 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 选择隔离级别和传播行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 选择隔离级别 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 传播行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Spring+MyBatis组合中使用事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 典型错误用法的剖析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 错误使用Service --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 过长时间占用事务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 错误捕捉异常 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── Spring基础配置 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── Java配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring MVC框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring MVC的初始化和流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── MVC设计概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring MVC的架构 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── Spring MVC组件与流程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Spring MVC初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 初始化Spring IoC上下文 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 初始化映射请求上下文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用注解配置方式初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring MVC开发流程详解 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 配置@RequestMapping --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制器的开发 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 视图渲染 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入Spring MVC组件开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制器接收各类请求参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 接收普通请求参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 使用@RequestParam注解获取参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 使用URL传递参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传递JSON参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ └── 接收列表数据和表单序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 重定向 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 保存并获取属性参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 注解@RequestAttribute --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 注解@SessionAttribute和注解@SessionAttributes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 注解@CookieValue和注解@RequestHeader --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 验证表单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用JSR 303注解验证输入内容 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 使用验证器 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 视图和视图解析器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 视图 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 视图解析器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 上传文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── MultipartResolver概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 提交上传文件表单 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── Spring MVC高级应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring MVC的数据转换和格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HttpMessageConverter和JSON消息转换器 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 一对一转换器(Converter) --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 数组和集合转换器GenericConverter --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用格式化器(Formatter) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 为控制器添加通知 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 国际化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MessageSource接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CookieLocaleResolver和SessionLocaleResolver --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 国际化拦截器(LocaleChangeInterceptor) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 开发国际化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── SSM框架+Redis实践应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 高并发业务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 互联系统应用架构基础分析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 高并发系统的分析和设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 有效请求和无效请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 系统设计 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 数据库设计 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 动静分离技术 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 锁和高并发 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── 搭建抢红包开发环境和超发现象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 搭建Service层和DAO层 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ └── 使用全注解搭建SSM开发环境 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 悲观锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 乐观锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CAS原理概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 乐观锁实现抢红包业务 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 乐观锁重入机制 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用Redis实现抢红包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用注解方式配置Redis --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 数据存储设计 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 使用Redis实现抢红包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 各类方式的优缺点 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── 点睛Spring 4.x --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Spring常用配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Bean的Scope --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring EL和资源调用. --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Bean的初始化和销毁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 事件(Application Event) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Spring高级话题 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Spring Aware --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 示例 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 计划任务 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 条件注解@Conditional --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 组合注解与元注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── @Enable*注解的工作原理 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 第一类:直接导入配置类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第二类:依据条件选择配置类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 第三类:动态注册Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 点睛Spring MVC 4.x --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Spring MVC基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring MVC概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring MVC的常用注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring MVC基本配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 静态资源映射 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 拦截器配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @ControllerAdvice --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 其他配置 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── Spring MVC的高级配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件上传配置 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 自定义HttpMessageConverter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 服务器端推送技术 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── Spring MVC的测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Java EE简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Java EE --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Java EE架构 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── Java EE的缺点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Boot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Hello,Spring Boot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建一个Maven工程 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 增加Web支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Hello Spring Boot示例 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 使用热部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 添加REST支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring Boot基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 检查Java环境与安装Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装和配置Maven --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Maven介绍 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── 安装Maven --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 设置Maven --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用IDE设置Maven --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Maven的常用命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Spring核心技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring的历史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring容器介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Spring AOP介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── MVC框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成MVC框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 引入依赖 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Web应用目录结构 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── Java包名结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Controller --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── URL映射到方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @RequestMapping --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── URL路径匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── HTTP method匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── consumes和produces --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── params和header匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 方法参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PathVariable --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Model&ModelAndView --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── JavaBean接受HTTP参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── @RequsetBody接受JSON --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── MultipartFile --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── @ModelAttribute --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── @InitBinder --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 验证框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JSR- --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── MVC中使用@Validated --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 自定义校验 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── WebMvcConfigurer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 跨域访问 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 注册Controller --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 视图技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Freemarker --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 使用Beetl --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Jackson --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Redirect和Forward --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Beetl模板引擎 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Beetl --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设置定界符号和占位符 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 配置Beetl --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── groupTemplate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 全局变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 局部变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 共享变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 模板变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 计算表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 逻辑表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 控制语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 循环语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 条件语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── try catch --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 函数调用 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 格式化函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 直接调用Java --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标签函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HTML标签 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 安全输出 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 高级功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 自定义格式化函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义标签函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义HTML标签 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── AJAX局部渲染 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 脚本引擎 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── JSON技术 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 在Spring Boot中使用Jackson --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义ObjectMapper --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Jackson的三种使用方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Jackson树遍历 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 对象绑定 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ ├── 流式操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── Jackson注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 集合的反序列化 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ └── MVC分离开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集成WebSimulate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 模拟JSON响应 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 模拟模板渲染 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通用错误处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── curl命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据库访问 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 配置数据源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring JDBC Template --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 查询 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 修改 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── JdbcTemplate增强 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── BeetlSQL介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── BeetlSQL功能概览 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 添加Maven依赖 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置BeetlSQL --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SQLManager --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用SQL文件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用实体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── SQLManager内置CRUD --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 内置的插入API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内置的更新(删除)API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内置的查询API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 代码生成方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用sqlId --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── md文件命名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── md文件构成 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 调用sqlId --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 翻页查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── TailBean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ORM查询 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 其他API --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── Mapper详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── BeetlSQL的其他功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 常用函数和标签 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 主键设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── BeetlSQL注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── NameConversion --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用JDBC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用DAO --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 集成Hibernate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成JPA --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成MyBatis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 设计ORM --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring Data JPA --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成Spring Data JPA --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集成数据源 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 配置JPA支持 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 创建Entity --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 简化Entity --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Repository --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CrudRepository --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── PagingAndSortingRepository --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JpaRepository --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 持久化Entity --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Sort --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Pageable和Page --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 基于方法名字查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── @Query查询 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 使用JPA Query --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Example查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring Boot配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 配置Spring Boot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务器配置 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 使用其他Web服务器 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 配置启动信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 配置浏览器显示ico --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 日志配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读取应用配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Environment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @Value --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ └── @ConfigurationProperties --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Spring Boot自动装配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── @Configuration和@Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Bean条件装配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Class条件装配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Environment装配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他条件装配 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 联合多个条件 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── Condition接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 制作Starter --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ ├── 部署Spring Boot应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 以jar文件运行 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 以war方式部署 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 多环境部署 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── @Profile注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Testing单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── JUnit介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JUnit的相关概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JUnit测试 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── Assert --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Suite --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Boot单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 测试范围依赖 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Spring Boot测试脚手架 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 测试MVC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 完成MVC请求模拟 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 比较MVC的返回结果 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── JSON比较 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── Mockito --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 模拟对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 模拟方法参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 模拟方法返回值 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 面向数据库应用的单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── @Sql --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── XLSUnit --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── XLSUnit的基本用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── REST --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── REST简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── REST风格的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用“api”作为上下文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 增加一个版本标识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标识资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 确定HTTP Method --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 确定HTTP Status --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── REST VS. WebService --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── Spring Boot集成REST --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集成REST --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @RestController --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── REST Client --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── Swagger UI --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 集成Swagger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Swagger规范 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 接口描述 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 查询参数描述 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── URI中的参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HTTP头参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 表单参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件上传参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 整个请求体作为参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 模拟REST服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── MongoDB --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装MongoDB --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 使用shell --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 指定数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 插入文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 查询文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更新操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 删除操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Boot集成MongoDB --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 增删改查 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 增加API --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 根据主键查询API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 查询API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 修改API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 删除API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用MongoDatabase --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 打印日志 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ ├── Elasticsearch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Elasticsearch介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Elasticsearch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Elasticsearch的基本概念 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 使用REST访问Elasticsearch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 添加文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 根据主键查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 根据主键更新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 根据主键删除 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 搜索文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 联合多个索引搜索 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用RestTemplate访问ES --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 创建Book --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 使用RestTemplate获取搜索结果 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── Spring Data Elastic --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装Spring Data --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ ├── 编写Entity --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 编写Dao --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 编写Controller --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Cache --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 关于Cache --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cache的组件和概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cache的单体应用 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用专有的Cache服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用一二级缓存服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Boot Cache --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 注释驱动缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @Cacheable --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Key生成器 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── @CachePut --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @CacheEvict --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── @Caching --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── @CacheConfig --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Redis Cache --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集成Redis缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 禁止缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 定制缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Redis缓存原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 实现Redis两级缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 实现TwoLevelCacheManager --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建RedisAndLocalCache --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 缓存同步说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 将代码组合在一起 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring Session --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 水平扩展实现 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── Spring Session --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Session介绍 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── Nginx+Redis --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ ├── 监控Spring Boot应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装Acutator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── HTTP跟踪 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 日志查看 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 线程栈信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内存信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 查看URL映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 查看Spring容器管理的Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 编写自己的监控信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写HealthIndicator --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ └── 自定义监控 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── Web开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Web基础 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── Servlet入门 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── Servlet开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Servlet进阶 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── JSP开发 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── MVC开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MVC高级开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Filter --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 修改响应 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Listener --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成Filter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Interceptor --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理CORS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异步处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用WebSocket --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ ├── Spring开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── IoC容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IoC原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Annotation配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定制Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Resource --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 注入配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 集成第三方组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成JavaMail --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ ├── 集成JMS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Scheduler --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 集成JMX --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成Open API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 访问Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成Artemis --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 集成RabbitMQ --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── 集成Kafka --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Spring Boot开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用开发者工具 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 打包Spring Boot应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Actuator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Profiles --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Conditional --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 加载配置文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 禁用自动配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 添加Filter --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ └── Spring Cloud开发 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +└── 其他 --> ( 难度等级: 无 || 挂载数据: 无 ) + ├── 其他类别标签问题 --> ( 难度等级: 无 || 挂载数据: qa: 10 ) + ├── 应用类问题 --> ( 难度等级: 无 || 挂载数据: qa: 10 ) + └── 第三方包问题 --> ( 难度等级: 无 || 挂载数据: qa: 10 ) diff --git a/data/python_tree.txt b/data/python_tree.txt new file mode 100644 index 0000000..c506e2a --- /dev/null +++ b/data/python_tree.txt @@ -0,0 +1,3618 @@ +python --> ( 难度等级: 无 || 挂载数据: 无 ) +├── Python初阶 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── 预备知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Python都能做什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 程序设计思想 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Windows安装Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Linux安装Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── MacOS安装Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运行方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 以交互方式运行 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 以脚本方式运行 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 常用开发工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── typing --- 类型提示支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── pydoc --- 文档生成器和在线帮助系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python Development Mode --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Effects of the Python Development Mode --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── ResourceWarning Example --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Bad file descriptor error example --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── doctest --- 测试交互性的Python示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── unittest --- 单元测试框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── unittest.mock --- mock对象库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── unittest.mock上手指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 2to3 - 自动将Python 2 代码转为Python 3 代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── test --- Python回归测试包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── test.support --- Utilities for the Python test suite --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── test.support.socket_helper --- Utilities for socket tests --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── test.support.script_helper --- Utilities for the Python execution tests --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── test.support.bytecode_helper --- Support tools for testing correct bytecode generation --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编码规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 模块管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── pip --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ ├── 基础语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 缩进规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 建议使用4个空格 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 如何编写注释 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 变量的命名和使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 变量是标签 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── 语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 表达式语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 赋值语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── assert语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── return语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── yield语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── raise语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── break语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── continue语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── import语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ │ ├── global语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── nonlocal语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标识符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 命名规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运算与表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代码风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 交互式解释器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 算法是什么 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 获取用户输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 保存并执行程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从命令提示符运行Python脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 让脚本像普通程序一样 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 起步 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 搭建编程环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Python版本 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ │ ├── 运行Python代码片段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── SublimeText简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在不同操作系统中搭建Python编程环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Windows系统中搭建Python编程环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在macOS系统中搭建Python编程环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 在Linux系统中搭建Python编程环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 运行HelloWorld程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 配置SublimeText以使用正确的Python版本 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ └── 运行程序hello_world.py --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 从终端运行Python程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在Windows系统中从终端运行Python程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 列表简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 修改、添加和删除元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 修改列表元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ │ ├── 在列表中添加元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ └── 从列表中删除元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 组织列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 使用方法sort对列表永久排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ ├── 使用函数sorted对列表临时排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 倒着打印列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ └── 确定列表的长度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用列表时避免索引错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 测试代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 测试函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数定义def --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 参数var --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 返回值return --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 参数传递 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数调用 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 函数递归 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数编写风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 调用函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数的参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 递归函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── None值 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 调用栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 局部和全局作用域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 局部变量不能在全局作用域内使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 局部作用域不能使用其他局部作用域内的变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 全局变量可以在局部作用域中读取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 把函数视作对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可调用对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用户定义的可调用类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数内省 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从定位参数到仅限关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 获取关于参数的信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 支持函数式编程的包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 传递实参 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 位置实参 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 关键字实参 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 默认值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 等效的函数调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 返回简单值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 让实参变成可选的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 返回字典 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 传递列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在函数中修改列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 禁止函数修改列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 传递任意数量的实参 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用任意数量的关键字实参 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 导入特定的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用as给函数指定别名 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 使用as给模块指定别名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 导入模块中的所有函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数编写指南 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 编写可接受任意数量参数的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编写只接受关键字参数的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将元数据信息附加到函数参数上 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从函数中返回多个值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义带有默认参数的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义匿名或内联函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在匿名函数中绑定变量的值 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 让带有N个参数的可调用对象以较少的参数形式调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用函数替代只有单个方法的类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 在回调函数中携带额外的状态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内联回调函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 访问定义在闭包内的变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类定义class --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 作用域和命名空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 属性和方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模拟数值类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 字符串表示形式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义的布尔值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类编码风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 初探类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 类定义语法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 类对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 方法对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 补充说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 私有变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生成器表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建自定义类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 再谈隐藏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类的命名空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指定超类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 深入探讨继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多个超类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口和内省 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python文化中的接口和协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python喜欢序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用猴子补丁在运行时实现协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Alex Martelli的水禽 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义抽象基类的子类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 标准库中的抽象基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义并使用一个抽象基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Tombola子类的测试方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python使用register的方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 鹅的行为有可能像鸭子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 抽象基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 导入类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 导入单个类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在一个模块中存储多个类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从一个模块中导入多个类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 导入模块中的所有类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用别名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Python标准库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 顺序语句结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 条件和分支 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── if --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── if-else语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── if-elif-else结构 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 省略else代码块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用if语句处理列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 检查特殊元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 确定列表不是空的 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ └── 设置if语句的格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── elif --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── else --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 条件判断 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 这正是布尔值的用武之地 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代码块嵌套 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字典列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 在字典中存储列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在字典中存储字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 检查是否相等 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 检查是否相等时忽略大小写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数值比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 检查多个条件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 检查特定值是否包含在列表中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 布尔表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── for --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── while --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── break --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── continue --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 循环判断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 迭代字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一些迭代工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 跳出循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 循环中的else子句 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 整型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 浮点型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单引号字符串以及对引号转义 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 拼接字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字符串表示str和repr --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 长字符串、原始字符串和字节 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 字符串基本操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设置字符串的格式:精简版 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ └── 替换字段名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用方法修改字符串的大小写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用制表符或换行符来添加空白 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 删除空白 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用字符串时避免语法错误 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 字符串编码转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 使用encode方法编码 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 使用decode方法解码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── datetime --- 基本的日期和时间类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── zoneinfo --- IANA时区支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── calendar --- 日历相关函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── collections --- 容器数据类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── collections.abc --- 容器的抽象基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── heapq --- 堆队列算法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── bisect --- 数组二分查找算法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── array --- 高效的数值数组 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── weakref --- 弱引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── types --- 动态类型创建和内置类型名称 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── copy --- 浅层 (shallow) 和深层 (deep) 复制操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── pprint --- 数据美化输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── reprlib --- 另一种repr实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── enum --- 对枚举的支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── graphlib --- Functionality to operate with graph-like structures --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 数据类型转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 内置类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 列表:list --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数list --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 基本的列表操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 遍历整个列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ ├── 深入研究循环 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ │ ├── 在for循环中执行更多操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ └── 在for循环结束后执行一些操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 避免缩进错误 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ │ ├── 忘记缩进 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 忘记缩进额外的代码行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 不必要的缩进 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ │ ├── 循环后不必要的缩进 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 遗漏了冒号 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 创建数值列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 使用range创建数字列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ │ │ ├── 对数字列表执行简单的统计计算 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ │ └── 列表解析 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ └── 设置代码格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 格式设置指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 行长 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 空行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 其他格式设置指南 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 列表方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 列表数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 增强的赋值操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 序列数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 引用 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 访问列表元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 索引从0而不是1开始 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用列表中的各个值 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 遍历切片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 复制列表 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 列表的创建和删除 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对列表进行统计计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 对列表进行排序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字典:dict --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 访问字典中的值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 添加键值对 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 先创建一个空字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 修改字典中的值 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 删除键值对 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 由类似对象组成的字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用get来访问值 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 遍历字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 遍历所有键值对 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ ├── 遍历字典中的所有键 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 按特定顺序遍历字典中的所有键 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 遍历字典中的所有值 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 访问字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 字典推导式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 元组:tuple --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义元组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 遍历元组中的所有值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 修改元组变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 访问元组元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 修改元组 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 元组推导式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集合:set --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 创建集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 集合的交集、并集和差集运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 整型:int --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 字符串:str --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ └── 常用内置函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── help --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── input --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── print --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── range --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── format --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── len --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── sorted --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── open --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── dir --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── enumerate/zip --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── type/isinstance --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── min/max/sum --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── abs/round/pow/divmod --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 进阶语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 列表推导式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 三元表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 算术转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 原子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 原型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── await表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 幂运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一元算术和位运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 二元算术运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 移位运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 布尔运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 赋值表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 条件表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 表达式列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 求值顺序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 运算符优先级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 断言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── with-as --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常捕获预处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── try-catch-finally --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 异常捕获 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不用提供参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多个except子句 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 一箭双雕 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 捕获对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一网打尽 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 万事大吉时 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 最后 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符串方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── find --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── index --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── join --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── lower --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── replace --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── split --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── strip --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── translate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── upper --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── center --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 判断字符串是否满足特定的条件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── lambda函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 迭代器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迭代器协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 从迭代器创建序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建生成器 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 递归式生成器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 通用生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成器的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 模拟生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 闭包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 打开文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 文件基本方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 读取和写入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用管道重定向输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 关闭文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ └── 文件内容迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 每次一个字符(或字节) --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 每次一行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读取所有内容 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 使用fileinput实现延迟行迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 文件迭代器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 常用标准库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── datetime --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── json --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── math --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── os --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── random --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ ├── re --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── sys --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── time --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── urllib --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── fileinput --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 其他有趣的标准模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 字符编码与解码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 理解内码和字节码的概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 面向对象编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类和对象的概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类成员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 面向对象三要素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 封装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 子类的方法__init__ --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重写父类的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 模拟实物 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 抽象类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 访问限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 获取对象信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 命令行与环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 命令行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通用选项 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 其他选项 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 不应当使用的选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 环境变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 调试模式变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 在Unix平台中使用Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 获取最新版本的Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Linux中 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── 在FreeBSD和OpenBSD上 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 在OpenSolaris系统上 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 杂项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 在Windows上使用Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 完整安装程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装步骤 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 删除MAX_PATH限制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 无UI安装 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 免下载安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 修改安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Microsoft Store包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── nuget.org安装包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 可嵌入的包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 嵌入Python --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 替代捆绑包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 配置Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 查找Python可执行文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── UTF-8 模式 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 适用于Windows的Python启动器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 从文件关联 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Shebang Lines --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── shebang lines的参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过INI文件自定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义默认的Python版本 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 诊断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 查找模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 附加模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PyWin32 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── cx_Freeze --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── WConio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在Windows上编译Python --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ └── 其他平台 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 在苹果系统上使用Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 获取和安装MacPython --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何运行Python脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运行有图形界面的脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 配置 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 提取常量 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ └── 配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── IDE --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 安装额外的Python包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Mac上的图形界面编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在Mac上分发Python应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 其他资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 编辑器和集成开发环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Python解释器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 调用解释器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 传入参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 交互模式 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 解释器的运行环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 源文件的字符编码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python速览 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python用作计算器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 数字 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 走向编程的第一步 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 其他流程控制工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── range函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── pass语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 定义函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 向函数传递信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 实参和形参 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数定义详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认值参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 特殊参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 位置或关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 仅位置参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 仅限关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 函数示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 任意实参列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 解包实参列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Lambda表达式 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 文档字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 函数注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 小插曲:编码风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 列表详解 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 用列表实现堆栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用列表实现队列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 嵌套的列表推导式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── del语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 循环的技巧 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入条件控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 序列和其他类型的比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 序列构成的数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内置序列类型概览 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 元组不仅仅是不可变的列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 序列的增量赋值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── list.sort方法和内置函数sorted --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用bisect来管理已排序的序列 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 当列表不是首选时 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 文本和字节序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字节概要 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基本的编解码器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理文本文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 为了正确比较而规范化Unicode字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Unicode文本排序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Unicode数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 支持字符串和字节序列的双模式API --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 以脚本方式执行模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 模块搜索路径 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── “已编译的” Python文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 标准模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── dir函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从包中导入 * --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 子包参考 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多目录中的包 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 安装第三方模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── Pillow --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── requests --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── chardet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── psutil --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── cmath和复数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 回到未来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块就是程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块是用来下定义的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 让模块可用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 输入与输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 更复杂的输出格式 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 格式化字符串字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串format方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 手动格式化字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 旧式字符串格式化方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读写文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 文件对象的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用json保存结构化数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 文件读写过程 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 用shelve模块保存变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用pprint.pformat函数保存变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用input函数输入 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── 使用print函数输出 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ ├── 错误和异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 句法错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 触发异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用户自定义异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定义清理操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 预定义的清理操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 让事情沿你指定的轨道出错 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ └── 自定义的异常类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 异常之禅 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 不那么异常的情况 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ ├── 标准库简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 操作系统接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 文件通配符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 命令行参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 错误输出重定向和程序终止 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符串模式匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数学 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 互联网访问 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 日期和时间 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 数据压缩 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 性能测量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 质量控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自带电池 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 格式化输出 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 模板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用二进制数据记录格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 多线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 弱引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用于操作列表的工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 十进制浮点运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 交互式编辑和编辑历史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Tab补全和编辑历史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 默认交互式解释器的替代品 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 浮点算术:争议和限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 表示性错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 标注 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 可用性注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 词法分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 行结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 其他形符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字面值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 赋值运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 比较(关系)运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 逻辑运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 位运算符 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── 分隔符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 标准类型层级结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 特殊方法名称 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 协程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 生成器如何进化成协程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用作协程的生成器的基本行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 预激协程的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 让协程返回值 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用yield from --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── yield from的意义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用案例:使用协程做离散事件仿真 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 执行模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 程序的结构 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ └── 命名与绑定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 导入系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── importlib --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 搜索 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 加载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基于路径的查找器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 替换标准导入系统 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 包相对导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 有关__main__的特殊事项 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── 参考文献 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 复合语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── while语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── try语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── with语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 类定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 顶级组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 完整的Python程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用文本编辑器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Python代码运行助手 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 文件输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 交互式输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 表达式输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 完整的语法规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 内置常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 由site模块添加的常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 内置类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 逻辑值检测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 布尔运算 --- and, or, not --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数字类型 --- int, float, complex --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 迭代器类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 序列类型 --- list, tuple, range --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 文本序列类型 --- str --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 二进制序列类型 --- bytes, bytearray, memoryview --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集合类型 --- set, frozenset --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 映射类型 --- dict --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 上下文管理器类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Generic Alias Type --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 其他内置类型 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── 内置异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 警告 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 异常层次结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 文本处理服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── string --- 常见的字符串操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── re --- 正则表达式操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── difflib --- 计算差异的辅助工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── textwrap --- 文本自动换行与填充 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── unicodedata --- Unicode数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── stringprep --- 因特网字符串预备 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── readline --- GNU readline接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── rlcompleter --- GNU readline的补全函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 二进制数据服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── struct --- 将字节串解读为打包的二进制数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── codecs --- 编解码器注册和相关基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 函数式编程模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── itertools --- 为高效循环而创建迭代器的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── functools --- 高阶函数和可调用对象上的操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── operator --- 标准运算符替代函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据持久化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── pickle --- Python对象序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── copyreg --- 注册配合pickle模块使用的函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── shelve --- Python对象持久化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── marshal --- 内部Python对象序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── dbm --- Unix "数据库" 接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── sqlite3 --- SQLite数据库DB-API 2.0 接口模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 文件格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── csv --- CSV文件读写 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── configparser --- 配置文件解析器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── netrc --- netrc文件处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── xdrlib --- 编码与解码XDR数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── plistlib --- 生成与解析Apple .plist文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 加密服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── hashlib --- 安全哈希与消息摘要 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── hmac --- 基于密钥的消息验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── secrets --- 生成管理密码的安全随机数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 通用操作系统服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── os --- 多种操作系统接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── io --- 处理流的核心工具 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── time --- 时间的访问和转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── argparse --- 命令行选项、参数和子命令解析器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── getopt --- C风格的命令行选项解析器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── logging --- Python的日志记录工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── logging.config --- 日志记录配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── logging.handlers --- 日志处理程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── getpass --- 便携式密码输入工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── curses --- 终端字符单元显示的处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── curses.textpad --- 用于curses程序的文本输入控件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── curses.ascii --- 用于ASCII字符的工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── curses.panel --- curses的面板栈扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── platform --- 获取底层平台的标识数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── errno --- 标准errno系统符号 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── ctypes --- Python的外部函数库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 并发执行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── threading --- 基于线程的并行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── multiprocessing --- 基于进程的并行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── multiprocessing.shared_memory --- 可从进程直接访问的共享内存 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── concurrent包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── concurrent.futures --- 启动并行任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── subprocess --- 子进程管理 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ ├── sched --- 事件调度器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── queue --- 一个同步的队列类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── contextvars --- 上下文变量 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── _thread --- 底层多线程API --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── 网络和进程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── asyncio --- 异步I/O --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── socket --- 底层网络接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── ssl --- 套接字对象的TLS/SSL包装器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── select --- 等待I/O完成 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── selectors --- 高级I/O复用库 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── asyncore --- 异步套接字处理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── asynchat --- 异步套接字指令/响应处理程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── signal --- 设置异步事件处理程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── mmap --- 内存映射文件支持 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 互联网数据处理 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── email --- 电子邮件与MIME处理包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── json --- JSON编码和解码器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── mailcap --- Mailcap文件处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── mailbox --- 操作多种格式的邮箱 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── mimetypes --- 映射文件名到MIME类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── base64 --- Base16, Base32, Base64, Base85 数据编码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── binascii --- 二进制和ASCII码互转 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── quopri --- 编码与解码经过MIME转码的可打印数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 结构化标记处理工具 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── html --- 超文本标记语言支持 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── html.parser --- 简单的HTML和XHTML解析器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── html.entities --- HTML一般实体的定义 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── XML处理模块 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.etree.ElementTree --- ElementTree XML API --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.dom --- 文档对象模型API --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.dom.minidom --- Minimal DOM implementation --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.dom.pulldom --- 支持构建部分DOM树 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.sax --- 支持SAX2 解析器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.sax.handler --- SAX处理程序的基类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.sax.saxutils --- SAX工具集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── xml.sax.xmlreader --- 用于XML解析器的接口 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── xml.parsers.expat --- Fast XML parsing using Expat --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ ├── 互联网协议和支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── webbrowser --- 方便的Web浏览器控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── cgi --- Common Gateway Interface support --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── cgitb --- 用于CGI脚本的回溯管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── wsgiref --- WSGI Utilities and Reference Implementation --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── urllib --- URL处理模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── urllib.request --- 用于打开URL的可扩展库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── urllib.response --- urllib使用的Response类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── urllib.parse用于解析URL --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── urllib.error --- urllib.request引发的异常类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── urllib.robotparser --- robots.txt语法分析程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── http --- HTTP模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── http.client --- HTTP协议客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── ftplib --- FTP协议客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── poplib --- POP3 协议客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── imaplib --- IMAP4 协议客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── nntplib --- NNTP protocol client --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── smtplib ---SMTP协议客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── smtpd --- SMTP服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── telnetlib -- Telnet客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── uuid --- UUID objects according to RFC 4122 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── socketserver --- A framework for network servers --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── http.server --- HTTP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── http.cookies --- HTTP状态管理 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── http.cookiejar —— HTTP客户端的Cookie处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── xmlrpc --- XMLRPC服务端与客户端模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── xmlrpc.client --- XML-RPC客户端访问 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── xmlrpc.server --- 基本XML-RPC服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── ipaddress --- IPv4/IPv6 操作库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 多媒体服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── audioop --- 处理原始音频数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── aifc --- 读写AIFF和AIFC文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── sunau --- 读写Sun AU文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── wave --- 读写WAV格式文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── chunk --- 读取IFF分块数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── colorsys --- 颜色系统间的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── imghdr --- 推测图像类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── sndhdr --- 推测声音文件的类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── ossaudiodev --- Access to OSS-compatible audio devices --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 国际化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── gettext --- 多语种国际化服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── locale --- 国际化服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 程序框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── turtle --- 海龟绘图 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── cmd --- 支持面向行的命令解释器 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── shlex --- Simple lexical analysis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Tk图形用户界面(GUI) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── tkinter --- Tcl/Tk的Python接口 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── tkinter.colorchooser --- 颜色选择对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── tkinter.font --- Tkinter字体封装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Tkinter对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── tkinter.messagebox --- Tkinter消息提示 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ ├── tkinter.scrolledtext --- 滚动文字控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── tkinter.dnd --- 拖放操作支持 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── tkinter.ttk --- Tk主题部件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── tkinter.tix --- Extension widgets for Tk --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── IDLE --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ └── 其他图形用户界面(GUI)包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 调试和分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 审计事件表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── bdb --- Debugger framework --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── faulthandler --- Dump the Python traceback --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── pdb --- Python的调试器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python Profilers分析器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── timeit --- 测量小代码片段的执行时间 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── trace --- 跟踪Python语句执行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── tracemalloc --- 跟踪内存分配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 抛出异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 取得回溯字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── Mu的调试器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 软件打包和分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── distutils --- 构建和安装Python模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ensurepip --- Bootstrapping the pip installer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── venv --- 创建虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── zipapp --- Manage executable Python zip archives --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python运行时服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── sysconfig --- Provide access to Python's configuration information --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── builtins --- 内建对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── __main__ --- 顶层脚本环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── warnings --- Warning control --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── dataclasses --- 数据类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── contextlib --- 为with语句上下文提供的工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── abc --- 抽象基类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── atexit --- 退出处理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── traceback --- 打印或检索堆栈回溯 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── __future__ --- Future语句定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── gc --- 垃圾回收器接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── inspect --- 检查对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── site —— 指定域的配置钩子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 自定义Python解释器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── code --- 解释器基类 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── codeop --- 编译Python代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 导入模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── zipimport --- 从Zip存档中导入模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── pkgutil --- 包扩展工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── modulefinder --- 查找脚本使用的模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── runpy --- Locating and executing Python modules --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── importlib --- import的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Using importlib.metadata --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Python语言服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── parser --- 访问Python解析树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── ast --- 抽象语法树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── symtable --- Access to the compiler's symbol tables --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── symbol --- 与Python解析树一起使用的常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── token --- 与Python解析树一起使用的常量 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── keyword --- 检验Python关键字 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── tokenize --- 对Python代码使用的标记解析器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── tabnanny --- 模糊缩进检测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── pyclbr --- Python模块浏览器支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── py_compile --- 编译Python源文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── compileall --- Byte-compile Python libraries --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── dis --- Python字节码反汇编器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── pickletools --- pickle开发者工具集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 杂项服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── formatter --- 通用格式化输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Windows系统相关模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── msilib --- Read and write Microsoft Installer files --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── msvcrt --- 来自MS VC++ 运行时的有用例程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── winreg --- Windows注册表访问 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── winsound --- Sound-playing interface for Windows --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Unix专有服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── posix --- 最常见的POSIX系统调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── pwd --- 用户密码数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── spwd --- The shadow password database --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── grp --- 组数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── crypt --- Function to check Unix passwords --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── termios --- POSIX风格的tty控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── tty --- 终端控制功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── pty --- 伪终端工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── fcntl --- The fcntl and ioctl system calls --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── pipes --- 终端管道接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── resource --- Resource usage information --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── nis --- Sun的NIS (黄页) 接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Unix syslog库例程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 被取代的模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── optparse --- 解析器的命令行选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── imp --- Access the import internals --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 未创建文档的模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 平台特定模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在交互式环境中输入表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符串连接和复制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在变量中保存值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 变量名 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 第一个程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ └── 程序剖析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── print函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── input函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 输出用户的名字 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── len函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 高级特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 切片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 列表生成式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 函数式编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 高阶函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── map/reduce --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── filter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 返回函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 匿名函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 偏函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 面向对象高级编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用__slots__ --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用@property --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 定制类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用枚举类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── IO编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── StringIO和BytesIO --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 操作文件和目录 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 进程和线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 多进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── ThreadLocal --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 进程vs. 线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ └── 分布式进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 正则表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 常用内建模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── collections --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── base64 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── struct --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── hashlib --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── hmac --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── itertools --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── contextlib --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── XML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── HTMLParser --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── virtualenv --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 图形界面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 海龟绘图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 网络编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── TCP/IP简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── TCP编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── UDP编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 几个网络模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 模块socket --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 模块urllib和urllib2 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── SocketServer及相关的类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Twisted --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 下载并安装Twisted --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── 编写Twisted服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 电子邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── SMTP发送邮件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── POP3收取邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 访问数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用SQLite --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用MySQL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用SQLAlchemy --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Web开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── HTTP协议简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── HTML简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── WSGI接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用Web框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 异步IO --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── asyncio --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── async/await --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── aiohttp --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 使用MicroPython --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 搭建开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 控制小车 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 遥控小车 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 遥控转向 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 当索引行不通时 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 字典的用途 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 抽象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 懒惰是一种美德 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自定义函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 给函数编写文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── 参数魔法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 值从哪里来 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 我能修改参数吗 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 收集参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 分配参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 递归 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 两个经典案例:阶乘和幂 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 另一个经典案例:二分查找 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 再谈抽象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象魔法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 关于面向对象设计的一些思考 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 开箱即用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 探索模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 模块包含什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用help获取帮助 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用源代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 图形用户界面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建GUI示例应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 初探 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布局 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 事件处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 最终的程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 使用其他GUI工具包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据库支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python数据库API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 全局变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 连接和游标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用SocketServer实现分叉和线程化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用select和poll实现异步I/O --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Python和Web --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 屏幕抓取 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Tidy和XHTML解析 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Beautiful Soup --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用CGI创建动态网页 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第一步:准备Web服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 第二步:添加!#行 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 第三步:设置文件权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CGI安全风险 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简单的CGI脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用cgitb进行调试 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用模块cgi --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 简单的表单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Web服务:更高级的抓取 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── RSS和相关内容 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用XML-RPC进行远程过程调用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── SOAP --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 测试基础 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 先测试再编码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 准确的需求说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 做好应对变化的准备 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 测试四步曲 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测试工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── doctest --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── unittest --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 超越单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用PyChecker和PyLint检查源代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 性能分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 扩展Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 鱼和熊掌兼得 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 简单易行的方式:Jython和IronPython --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 编写C语言扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── SWIG --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 手工编写扩展 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ ├── 程序打包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Setuptools基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 打包 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 编译扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用py2exe创建可执行程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 趣味编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 为何要有趣 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编程柔术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 原型设计 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 如果你已不胜其烦 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 如果你想深入学习 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ ├── Python编程基础 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 控制流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔值 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 比较操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 二元布尔操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── not操作符 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 混合布尔和比较操作符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制流的元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 代码块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 程序执行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制流语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── else语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── elif语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 恼人的循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 等价的while循环 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── 用sys.exit函数提前结束程序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 字符串操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 将字符串放入其他字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 有用的字符串方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用ord和chr函数的字符的数值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用pyperclip模块复制粘贴字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 计算字符串的长度 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 截取字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 分割、合并字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 检索字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字母的大小写转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 去除字符串中的空格和 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 格式化字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 自动化任务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 输入验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── PyInputPlus模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关键字参数min、max、greaterThan和lessThan --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关键字参数blank --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关键字参数limit、timeout和default --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关键字参数allowRegexes和blockRegexes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 将自定义验证函数传递给inputCustom --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 组织文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── shutil模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 遍历目录树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用zipfile模块压缩文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 从Web抓取信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 用requests模块从Web下载文件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 将下载的文件保存到硬盘 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HTML --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 用bs4模块解析HTML --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 用selenium模块控制浏览器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理Excel电子表格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Excel文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 安装openpyxl模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读取Excel文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 写入Excel文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 设置单元格的字体风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Font对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 公式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 调整行和列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理Google电子表格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装和设置EZSheets --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spreadsheet对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 工作表对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 利用Google Sheets配额 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 处理PDF和Word文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PDF文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── Word文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── 从Word文档中创建PDF --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理CSV文件和JSON数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── csv模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── json模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 发送电子邮件和短信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Gmail API发送和接收电子邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SMTP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 发送电子邮件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── IMAP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用IMAP获取和删除电子邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用短信电子邮件网关发送短信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用Twilio发送短信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 操作图像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 计算机图像基础 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 用pillow操作图像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 在图像上绘画 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 绘制形状 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 绘制文本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 用GUI自动化控制键盘和鼠标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装pyautogui模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在macOS上设置无障碍应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 走对路 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 控制鼠标指针移动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 控制鼠标交互 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 规划鼠标运动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 处理屏幕 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 图像识别 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 获取窗口信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 控制键盘 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 设置GUI自动化脚本 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 复习PyAutoGUI的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 显示消息框 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 序幕 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一摞Python风格的纸牌 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 特殊方法一览 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 把函数视作对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用一等函数实现设计模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 案例分析:重构“策略”模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── “命令”模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ ├── 面向对象惯用法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 对象引用、可变性和垃圾回收 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变量不是盒子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认做浅复制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数的参数作为引用时 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── del和垃圾回收 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Python对不可变类型施加的把戏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 符合Python风格的对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 对象表示形式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 再谈向量类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 备选构造方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── classmethod与staticmethod --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 格式化显示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可散列的Vector2d --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python的私有属性和“受保护的”属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用__slots__类属性节省空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 覆盖类属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 继承的优缺点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 子类化内置类型很麻烦 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多重继承的真实应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 一个现代示例:Django通用视图中的混入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 正确重载运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运算符重载基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重载向量加法运算符 + --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重载标量乘法运算符 * --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 增量赋值运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 控制流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用期物处理并发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 阻塞型I/O和GIL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用concurrent.futures模块启动进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 实验Executor.map方法 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 显示下载进度并处理错误 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用asyncio包处理并发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 避免阻塞型调用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 改进asyncio下载脚本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用asyncio包编写服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 元编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 动态属性和特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用动态属性转换数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用特性验证属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 特性全解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义一个特性工厂函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 处理属性删除操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 属性描述符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 描述符示例:验证属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 覆盖型与非覆盖型描述符对比 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方法是描述符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 描述符用法建议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 描述符的文档字符串和覆盖删除操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类元编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类工厂函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定制描述符的类装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 导入时和运行时比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 元类基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 定制描述符的元类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 元类的特殊方法__prepare__ --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 给函数添加一个包装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写装饰器时如何保存函数的元数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 对装饰器进行解包装 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 定义一个可接受参数的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定义一个属性可由用户修改的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定义一个能接收可选参数的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 利用装饰器对函数参数强制执行类型检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在类中定义装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把装饰器定义成类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把装饰器作用到类和静态方法上 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写装饰器为被包装的函数添加参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 利用装饰器给类定义打补丁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 获取类属性的定义顺序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定义一个能接受可选参数的元类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在*args和**kwargs上强制规定一种参数签名 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 在类中强制规定编码约定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过编程的方式来定义类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在定义的时候初始化类成员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过函数注解来实现方法重载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 避免出现重复的属性方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 以简单的方式定义上下文管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 执行带有局部副作用的代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 解析并分析Python源代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 将Python源码分解为字节码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据编码与处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读写CSV数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读写JSON数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 解析简单的XML文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 以增量方式解析大型XML文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 将字典转换为XML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用命名空间来解析XML文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 同关系型数据库进行交互 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读写二进制结构的数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读取嵌套型和大小可变的二进制结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 数据汇总和统计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 并发 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 启动和停止线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 判断线程是否已经启动 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 对临界区加锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 避免死锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 保存线程专有状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建线程池 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 实现简单的并行编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 如何规避GIL带来的限制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 定义一个Actor任务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 实现发布者/订阅者消息模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 使用生成器作为线程的替代方案 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 轮询多个线程队列 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 在UNIX上加载守护进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 实用脚本和系统管理 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 通过重定向、管道或输入文件来作为脚本的输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 终止程序并显示错误信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 解析命令行选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在运行时提供密码输入提示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 获取终端大小 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 执行外部命令并获取输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建和解包归档文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过名称来查找文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读取配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 给脚本添加日志记录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 给库添加日志记录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建一个秒表计时器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 给内存和CPU使用量设定限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 加载Web浏览器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── C语言扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 利用ctypes来访问C代码 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 编写简单的C语言扩展模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 编写一个可操作数组的扩展函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在C扩展模块中管理不透明指针 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在扩展模块中定义并导出C API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 从C中调用Python --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 在C扩展模块中释放GIL --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 混合使用C和Python环境中的线程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用Swig来包装C代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用Cython来包装C代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 用Cython来高效操作数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把函数指针转换为可调用对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把以NULL结尾的字符串传给C库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把Unicode字符串传递给C库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把C字符串转换到Python中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 同编码方式不确定的C字符串打交道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把文件名传给C扩展模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 把打开的文件传给C扩展模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在C中读取文件型对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 从C中访问可迭代对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 排查段错误 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ ├── 初识Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 搭建Python开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 开发环境概述 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ └── 运行已经编写好的.py文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ └── Python开发工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 使用自带的IDLE --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python语言基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python语法特点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 注释规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python中的变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 理解Python中的变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 定义变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ └── 流程控制语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 程序结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 选择语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── if…else语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── if…elif…else语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── if语句的嵌套 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ └── 循环语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 循环嵌套 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +├── Python中阶 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── 基本技能 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 时间日期处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── time --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── datetime --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 数据文件读写 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── excel/csv/hdf/netCDF --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 数据库操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 数据库概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 数据库安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── SQL语句 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── SQLite --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建数据库文件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 操作SQLite --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── MySQL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 下载安装MySQL --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 连接数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 创建数据表 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 操作MySQL数据表 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── MongoDB --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ └── 数据库编程接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 连接对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 游标对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 操作系统和环境 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── OS/Sys --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程进程和协程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 基础概念 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 加锁和解锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── threading --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── multiprocessing --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── queue --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── gevent --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 源码打包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── pyinstaller --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 网络编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── socket --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 与HTTP服务交互 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── TCP服务器 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ └── UDP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 通过CIDR地址生成对应的IP地址集 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── REST接口创建 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 远程调用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 远程方法调用 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 通过XML-RPC远程调用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 不同Python解释器之间的交互 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 客户端认证 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Socket文件描述符传递 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件驱动的I/O --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 大型数组发送与接收 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 客户端/服务端架构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 持久化存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据库基本操作和SQL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Web应用:客户端/服务器计算 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 因特网 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 客户端/服务器架构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 硬件客户端/服务器架构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 软件客户端/服务器架构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 银行出纳员作为服务器吗 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 客户端/服务器网络编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 套接字:通信端点 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 套接字 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 套接字地址:主机-端口对 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 面向连接的套接字与无连接的套接字 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Python中的网络编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── socket模块函数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 套接字对象(内置)方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建TCP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建TCP客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 执行TCP服务器和客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建UDP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建UDP客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 执行UDP服务器和客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── socket模块属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── *SocketServer模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建SocketServer TCP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建SocketServer TCP客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── *Twisted框架介绍 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建Twisted Reactor TCP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建Twisted Reactor TCP客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 相关模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 其他因特网客户端协议 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 发送邮件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── smtplib --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Web应用开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Web开发基础知识 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── HTML/HTML5/CSS --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 前端数据库和后台 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── MVC架构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── REST和Ajax --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Django --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Django简介 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ ├── Django安装配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── DTL(Django Template Language) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Django路由定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Django请求数据解析 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Django数据库操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Django提交表单 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Django Rest Framework --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署日志与安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Django开发案例 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Web框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── “Hello World”应用(一个博客) --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 创建模型来添加数据库服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 设置数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Python应用shell --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在Django中使用Python shell --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ └── 测试数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Django管理应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设置admin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用admin --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 创建博客的用户界面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建模板 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 创建URL模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建视图函数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 改进输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理用户输入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 添加URLconf项 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 视图:处理用户输入 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 跨站点请求伪造 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 表单和模型表单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Django表单简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模型表单示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用ModelForm来生成HTML表单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 处理ModelForm数据 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 视图进阶 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── *改善外观 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── *中级Django应用:TweetApprover --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Twython库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── URL结构 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ │ ├── 数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 提交新推文以便审核 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 审核推文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Tornado --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Tornado简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Tornado安装配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Tornado提交表单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Tornado模板 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Tornado数据库操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Tornado异步Web服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 外部服务认证(auth) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署日志与安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Tornado开发案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Flask --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Flask简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 创建应用目录 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ │ │ │ ├── 虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Python 3中创建虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Python 2中创建虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 使用虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 使用pip安装Python包 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 应用的基本结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 路由和视图函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 一个完整的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Web开发服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 动态路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 调试模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 命令行选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 请求–响应循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 应用和请求上下文 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 请求分派 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 请求对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ ├── 对象显示 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ │ │ └── 由字符串调用对象 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 请求钩子 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Flask扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Jinja2模板引擎 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 渲染模板 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ ├── 变量 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ │ │ ├── 匿名函数捕获变量值 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ └── 访问闭包中定义的变量 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ │ │ │ │ └── 控制结构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 使用Flask-Bootstrap集成Bootstrap --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 自定义错误页面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 链接 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 静态文件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 使用Flask-Moment本地化日期和时间 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Web表单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 配置 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 表单类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 把表单渲染成HTML --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在视图函数中处理表单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 重定向和用户会话 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ └── 闪现消息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── SQL数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ │ │ ├── NoSQL数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 使用SQL还是NoSQL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Python数据库框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 使用Flask-SQLAlchemy管理数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 定义模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 关系 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ ├── 数据库操作 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ ├── 创建表 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ ├── 插入行 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ │ ├── 修改行 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ │ │ │ ├── 删除行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 查询行 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ │ ├── 在视图函数中操作数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 集成Python shell --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 使用Flask-Migrate实现数据库迁移 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 创建迁移仓库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 创建迁移脚本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 更新数据库 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ │ └── 添加几个迁移 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 电子邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 电子邮件系统组件和协议 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 发送电子邮件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Python和SMTP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── smtplib.SMTP类方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 交互式SMTP示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── SMTP的其他内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 接收电子邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── POP和IMAP --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 交互式POP3示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── poplib.POP3类方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 客户端程序SMTP和POP3示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 交互式IMAP4示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── imaplib.IMAP4类中的常用方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 大型应用的结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 应用包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 使用应用工厂函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 在蓝本中实现应用功能 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 应用脚本 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 需求文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── blog应用的代码审查 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 创建数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 运行应用 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ │ ├── Flask安装配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Flask实现HTTP请求与响应 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Flask cookie与session --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Flask模板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Flask提交表单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Flask数据库操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Bootstrap-Flask --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Flask开发REST Web服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 部署日志与安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Flask开发案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网站可视化 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── Echarts --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网站高并发处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Web客户端和服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Python Web客户端工具 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 统一资源定位符 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── urlparse模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── urllib模块/包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用urllib2 HTTP验证的示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 将HTTP验证示例移植到Python 3中 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Web客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 一个简单的Web爬虫/蜘蛛/机器人 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 解析Web页面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 可编程的Web浏览 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ └── Web(HTTP)服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Web编程:CGI和WSGI --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 帮助Web服务器处理客户端数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── CGI简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── CGI应用程序 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── cgi模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── cgitb模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 构建CGI应用程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建Web服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 建立表单页 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成结果页面 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 生成表单和结果页面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 全面交互的Web站点 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 在CGI中使用Unicode --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 高级CGI --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── mulitipart表单提交和文件上传 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 多值字段 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── WSGI简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 动机(替代CGI) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务器集成 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 外部进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── WSGI简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── WSGI服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 参考服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── WSGI应用示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 中间件及封装WSGI应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 在Python 3中使用WSGI --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 现实世界中的Web开发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 云计算:Google App Engine --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 云计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 云计算服务的层次 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── App Engine --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 沙盒和App Engine SDK --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 选择一个App Engine框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python 2.7支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 一般差异 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 代码中的差异 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将“Hello World”改成一个简单的博客 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 快速发现改动:30秒内将纯文本转成HTML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 添加表单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 添加Datastore服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迭代改进 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 开发/SDK控制台 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 添加Memcache服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 添加用户服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Google账号验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 联合验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 远程API shell --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 问与答(Python实现) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用XMPP发送即时消息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 处理图片 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 任务队列(非定期任务) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置app.yaml --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 其他任务创建选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── deferred包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Appstats进行分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在app.yaml中添加标准处理程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 添加自定义Admin Console页面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 作为内置界面启用界面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── URLfetch服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 问与答(无Python实现) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Cron服务(计划任务作业) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 预热请求 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── DoS保护 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 厂商锁定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Web服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Yahoo!金融股票报价服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── Twitter微博 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 社交网络 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 稍微长一点的API组合应用示例 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 额外在线资源 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 网络爬虫 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 基础概念 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是网络爬虫 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── HTML与DOM树分析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 常用网络爬虫工具 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 相关法律及注意事项 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── urllib --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 处理异常 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 捕获所有异常 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义异常 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 抛出新的异常 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 异常重新抛出 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 警告信息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 解析链接 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 分析Robots协议 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 正则表达式 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── RE(Regular Expression ) --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 基础语法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 标签匹配常用规则 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 简介/动机 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 特殊符号和字符 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用择一匹配符号匹配多个正则表达式模式 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── 匹配任意单个字符 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 从字符串起始或者结尾或者单词边界匹配 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 创建字符集 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 限定范围和否定 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用闭包操作符实现存在性和频数匹配 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 表示字符集的特殊字符 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用圆括号指定分组 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 扩展表示法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一些正则表达式示例 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ └── 更长的正则表达式示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Beautiful Soup --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Beautiful Soup简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Beautiful Soup对象 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 元素定位 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 文档树遍历与搜索 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── lxml --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── lxml.etree --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── XPath选择器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── find/findall --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── CSS选择器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 解析HTML --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── requests --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 发送请求与HTTP请求类型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 传递URL参数 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 响应内容 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 定制请求头 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 响应状态码 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Cookie --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── POST请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 身份认证 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 基本用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 高级用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Selenium --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Selenium简介 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 单元素定位(find_element_id/name/xpath) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 多元素定位(find_elements_id/name/xpath) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 常用方法和属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 可管理属性创建 --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── 延迟计算属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 属性的代理访问 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 创建用于计算的属性 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 为属性添加安全保护机制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 键盘和鼠标操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── WebDriver API --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── 表单交互 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Scrapy框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy框架组成 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ ├── Item Pipeline --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Downloader --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Spiders --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scheduler --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy框架介绍 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy入门 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Selector的用法 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Spider的用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Downloader Middleware的用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Spider Middleware的用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Item Pipeline的用法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy对接Selenium --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Scrapy对接Splash --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy通用爬虫 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ ├── Scrapyrt的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy对接Docker --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Scrapy爬取新浪微博 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ ├── 数据存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 文件存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── TXT文本存储 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── JSON文件存储 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── CSV文件存储 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 数据库存储 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 关系型数据库存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── MySQL的存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── MongoDB存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Redis存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 渲染动态网页 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── WebKit/Selenium/headless/PhantomJS --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 表单交互处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 超时异常处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── timeout --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 验证码处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 自动输入/OCR字符识别 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 高并发处理 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 多线程爬虫 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 开发环境配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Python 3的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Windows下的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Linux下的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── Mac下的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 请求库的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── requests的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── Selenium的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── ChromeDriver的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── GeckoDriver的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── PhantomJS的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── aiohttp的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 解析库的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── lxml的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Beautiful Soup的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── pyquery的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── tesserocr的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 数据库的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── MySQL的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── MongoDB的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Redis的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 存储库的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── PyMySQL的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── PyMongo的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── redis-py的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── RedisDump的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Web库的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Flask的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Tornado的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── App爬取相关库的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Charles的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── mitmproxy的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Appium的安装 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 爬虫框架的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── pyspider的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Scrapy的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Scrapy-Splash的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Scrapy-Redis的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 部署相关库的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Docker的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapyd的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapyd-Client的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapyd API的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapyrt的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Gerapy的安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 爬虫基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── HTTP基本原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── URI和URL --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 超文本 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP和HTTPS --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP请求过程 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 请求 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 响应 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 网页基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 网页的组成 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 网页的结构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 节点树及节点间的关系 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 选择器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 爬虫的基本原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 爬虫概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 能抓怎样的数据 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── JavaScript渲染页面 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 会话和Cookies --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 静态网页和动态网页 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 无状态HTTP --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 常见误区 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 代理的基本原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 基本原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 代理的作用 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 爬虫代理 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 代理分类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 常见代理设置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 基本库的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 抓取猫眼电影排行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 解析库的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用XPath --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── 使用pyquery --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Ajax数据爬取 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是Ajax --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Ajax分析方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Ajax结果提取 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 分析Ajax爬取今日头条街拍美图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 动态渲染页面爬取 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Splash的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Splash负载均衡配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用Selenium爬取淘宝商品 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 验证码的识别 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 图形验证码的识别 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 极验滑动验证码的识别 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 点触验证码的识别 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 微博宫格验证码的识别 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 代理的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 代理的设置 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 代理池的维护 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 付费代理的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ADSL拨号代理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用代理爬取微信公众号文章 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 模拟登录 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 模拟登录并爬取GitHub --> ( 难度等级: 初阶 || 挂载数据: qa: 7 ) +│ │ │ └── Cookies池的搭建 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── App的爬取 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Charles的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── mitmproxy的使用 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── mitmdump爬取“得到”App电子书 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── Appium的基本使用 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Appium爬取微信朋友圈 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── Appium+mitmdump爬取京东商品 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── pyspider框架的使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── pyspider框架介绍 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── pyspider的基本使用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── pyspider用法详解 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 分布式爬虫 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式爬虫原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy-Redis源码解析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Scrapy分布式实现 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Bloom Filter的对接 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 分布式爬虫的部署 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Scrapyd分布式部署 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── Scrapyd-Client的使用 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── Scrapyd对接Docker --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Scrapyd批量部署 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── Gerapy分布式管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 桌面应用开发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Tkinter --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── Tkinter简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Tkinter模块 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Tkinter控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 标准属性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 几何管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── PyQT --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PyQT简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PyQT模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PyQT布局管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PyQT菜单和工具栏 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 事件和信号 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PyQT对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── PyQT控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── PyQT拖拽与绘图 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── WxPython --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── WxPython简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 安装配置 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── WxPython常用类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── WxPython布局管理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── WxPython事件处理 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ ├── WxPython对话框 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── WxPython组件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── WxPython拖拽处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── WxPython绘图API --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python总览 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python总体架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python源码组织 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python对象初探 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python内的对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象的分类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象机制的基石—PyObject --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定长对象和变长对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类型的类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象的创建 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象的多态性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 引用计数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数字对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 整数对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PyLongObject对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 小整数对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 大整数对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ ├── 数字格式化输出 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 进制转换 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 数字运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 四舍五入运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 浮点数运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 复数运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分数运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 大型数组运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 矩阵与线性代数运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字节到大整数的打包与解包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 无穷大与NaN --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 随机数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 字符串对象解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串对象的intern机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字符串操作效率 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 字符串操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串分割 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 删除不需要的字符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串清理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串对齐 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串拼接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串插入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字符串格式化 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 字符串匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串开头或结尾匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 用Shell通配符匹配字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 最短匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多行匹配 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 字符串搜索 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串搜索替换 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 字符串忽略大小写的搜索替换 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 将Unicode文本标准化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在正则表达式中使用Unicode字符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 令牌解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 简单的递归下降分析器实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 字节字符串操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 数据结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 序列对象解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 序列解压 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 序列去重并保持顺序 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 序列元素统计 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 过滤序列元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 序列元素名称映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 转换并计算数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字典对象解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字典映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字典排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 字典运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字典查找 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过关键字排序字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字典提取 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 字典合并 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 可迭代对象操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可迭代对象解压 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 保留最后N个元素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 记录分组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 查找最大或最小的N个元素 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 实现一个优先级队列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 命名切片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 排序不支持原生比较的对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 迭代器与生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 迭代操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 手动遍历迭代器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代理迭代 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 实现迭代协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 反向迭代 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 迭代器切片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 跳过可迭代对象的开始部分 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 排列组合的迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 序列上索引值迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多个序列迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集合元素的迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 顺序迭代合并后的排序迭代对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 迭代器代替while无限循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用生成器创建新的迭代模式 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 带有外部状态的生成器函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建数据处理管道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 展开嵌套的序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 文件与I/O --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读/写操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读/写文本数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 读/写字节数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 读/写压缩文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 文件操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件的写入 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 操作文件路径名 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 文件检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件列表获取 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 忽略文件名编码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 打印不合法的文件名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件编码变更 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 在文本文件中写入字节 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件描述符包装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建临时文件和文件夹 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 二进制文件映射 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 创建和解压归档文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件查找 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置文件读取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关闭文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 打开文件时使用with语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ ├── 写入文件内容 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 读取文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 8 ) +│ │ ├── 使用分隔符或行终止符打印 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字符串的I/O操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ ├── 可变缓冲区中二进制数据的读取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 串行端口的数据通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 对象序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 数据编码及处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据读/写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CSV数据读/写 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── JSON数据读/写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 二进制数组数据读/写 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 嵌套和可变长二进制数据读取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── XML数据解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简单XML数据解析 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 解析XML文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 修改XML --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 字典转换为XML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 与关系型数据库的交互 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 编码/解码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 十六进制数编码和解码 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ └── 编码/解码Base64数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ ├── 函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 有默认参数的函数定义 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 匿名或内联函数定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数的参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接收任意数量参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接收关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为参数增加元信息 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 减少参数个数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 返回多个值的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 类转换为函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 回调函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 有额外状态信息的回调函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 内联回调函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数的创建和调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建一个函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ │ └── 调用函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 参数传递 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 了解形式参数和实际参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 位置参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为参数设置默认值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 可变参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 变量的作用域 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 局部变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 全局变量 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 匿名函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 元编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 装饰器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 函数添加装饰器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 装饰器中保留函数元信息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 解除装饰器 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 带参数的装饰器 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 装饰器自定义属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 带可选参数的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数的类型检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类中定义装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 装饰器定义为类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类和静态方法的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 给函数增加参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 扩充类的功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 元类 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ └── 元类定义可选参数 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 类的属性定义顺序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 强制参数签名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 强制使用编程规约 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 以编程方式定义类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 初始化类的成员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 利用注解实现方法重载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 避免重复的属性方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 定义上下文管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 局部变量域中执行代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python源码解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python字节码拆解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 并发编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程的启动与停止 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 线程判断 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 线程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程加锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 防止死锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 线程状态信息保存 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 创建线程池 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 并行编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Actor任务定义 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 消息发布/订阅模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 生成器代替线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 线程队列轮询 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 守护进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 脚本编程与系统管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 脚本接收 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 终止程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 解析命令行选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 弹出密码输入提示 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── 执行外部命令 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── 添加日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 脚本增加日志功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 函数库增加日志功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 实现计时器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内存和CPU监测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 启动Web浏览器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python的内存管理机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python内存架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 小块空间的内存池 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── block --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── pool --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── arena --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 内存池 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 循环引用的垃圾收集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 三色标记模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python垃圾收集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 可收集对象链表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分代垃圾收集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Python中的标记—清除方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 性能优化与实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 优化的规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 先使程序可以正常工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从用户的角度进行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 保证代码易读 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 优化策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 寻找其他原因 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ ├── 度量硬件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 编写速度测试代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 查找瓶颈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 剖析CPU使用情况 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 剖析内存使用情况 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 降低复杂度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测量回路复杂度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测量大O记号 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 简化 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── 通用应用主题 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 因特网客户端编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 因特网客户端简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件传输 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文件传输因特网协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文件传输协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ftplib.FTP类的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 交互式FTP示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 客户端FTP程序示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── FTP的其他内容 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 网络新闻 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Usenet与新闻组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网络新闻传输协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── nntplib.NNTP类方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 交互式NNTP示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 客户端程序NNTP示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── NNTP的其他内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 多线程编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── thread模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── threading模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Thread类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── threading模块的其他函数 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 单线程和多线程执行对比 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 多线程实践 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── 图书排名示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 同步原语 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 锁示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 信号量示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 线程的替代方案 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── subprocess模块 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── multiprocessing模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── concurrent.futures模块 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── GUI编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Tkinter示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Label控件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── Button控件 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── Label和Button控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Label、Button和Scale控件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 偏函数应用示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 中级Tkinter示例 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 其他GUI简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Tk接口扩展(Tix) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Python MegaWidgets(PMW) --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── GTK+和PyGTK --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Tile/Ttk --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 数据库编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Python的DB-API --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 模块属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Connection对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Cursor对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 关系数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用数据库适配器的示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 数据库适配器示例应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ORM --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 考虑对象,而不是SQL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 员工角色数据库示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── SQLAlchemy --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── SQLObject --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 非关系数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── NoSQL介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 相关文献 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── *Microsoft Office编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用Python进行COM客户端编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 客户端COM编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 入门 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ ├── 入门示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Excel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Word --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── PowerPoint --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Outlook --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 中级示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Excel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Outlook --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── PowerPoint --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 相关模块/包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 扩展Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编写Python扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 根据样板编写封装代码 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 编译 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 导入并测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 相关主题 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ ├── SWIG --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Pyrex --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Cython --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Psyco --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── PyPy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 嵌入Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python中使用正则表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 正则表达式语法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 行定位符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 元字符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 重复 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 字符类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 排除字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 选择字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 转义字符 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 分组 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 在Python中使用正则 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ └── 使用re模块实现正则表达式操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 替换字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 使用正则表达式分割字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ ├── 面向对象程序设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 面向对象概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 面向对象程序设计的特点 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ ├── 类的定义和使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 创建__init__方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 创建类的成员并访问 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 访问限制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ └── 继承 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 继承的基本语法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 方法重写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 派生类中调用基类的__init__方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ └── 模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 模块概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 自定义模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ ├── 使用import语句导入模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 9 ) +│ │ ├── 使用from…import语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ └── 模块搜索目录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Python中的包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python程序的包结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 以主程序的形式执行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 引用其他模块 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +├── Python高阶 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── 科学计算基础软件包NumPy --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── NumPy概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── NumPy的前世今生 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── NumPy数组vs Python列表 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── NumPy数组类型和属性 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 维、轴、秩 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 广播和矢量化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 安装配置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 创建数组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 操作数组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 切片 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 改变数组结构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 合并和拆分 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 复制 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 排序 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 查找 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 筛选 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ └── 数组I/O --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── 常用函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── np.nan和np.inf --> ( 难度等级: 高阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 函数命名空间 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数学函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 统计函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 插值函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 多项式拟合函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 自定义广播函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 掩码数组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 创建掩码数组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 访问掩码数组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 矩阵对象 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 创建矩阵 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 矩阵特有属性 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 矩阵乘法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── 随机抽样子模块 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 随机数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 随机抽样 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 正态分布 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── 伪随机数的深度思考 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ ├── 结构化数据分析工具Pandas --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── Pandas概览 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Panda的特点 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 安装和使用 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── 数据结构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 索引数组Index --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 带标签的一维同构数组Series --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 带标签的二维异构表格DataFrame --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ ├── 基本操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数据预览 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数据选择 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 改变数据结构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 改变数据类型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 广播与矢量化运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 行列级广播函数 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ └── 高级应用 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 分组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 聚合 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 层次化索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 表级广播函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 日期时间索引对象 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 透视表 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 数据可视化 --> ( 难度等级: 高阶 || 挂载数据: qa: 4 ) +│ │ └── 数据I/O --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ ├── 绘图库Matplotlib --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 安装配置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── Matplotlib快速入门 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 画布 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 子图与子图布局 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 坐标轴与刻度的名称 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 图例和文本标注 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 显示和保存 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 图形绘制 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 曲线图 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 散点图 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 直方图 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 饼图 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 箱线图 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 绘制图像 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ └── 极坐标绘图 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── 风格和样式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 画布设置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 子图布局 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 颜色 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 线条和点的样式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 坐标轴 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 刻度 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 文本 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图例 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 网格设置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── Matplotlib扩展 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 使用BaseMap绘制地图 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ └── 3D绘图工具包 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ ├── 科学计算工具包SciPy --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── SciPy概览 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── 安装配置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 数据插值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 一维插值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 二维插值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 离散数据插值到网格 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 曲线拟合 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 最小二乘法拟合 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用curve_fit函数拟合 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ └── 多项式拟合函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 傅里叶变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 时域到频域的转换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 一维傅里叶变换的应用 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 二维傅里叶变换的应用 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 图像处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像卷积 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 边缘检测 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 侵蚀和膨胀 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 图像测量 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 积分 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 对给定函数的定积分 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 对给定样本的定积分 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 二重定积分 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── 非线性方程求解 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 非线性方程 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ └── 非线性方程组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 线性代数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 计算矩阵的行列式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 求解逆矩阵 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 计算特征向量和特征值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 矩阵的奇异值分解 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 求解线性方程组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── k-means聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 层次聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── 空间计算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 空间旋转的表述 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ └── 三维旋转 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ ├── 数据分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Python基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Python脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运行Python脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 与命令行进行交互的几项技巧 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python语言基础要素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数值 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 正则表达式与模式匹配 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 日期 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 元组 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 控制流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读取文本文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建文本文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 脚本和输入文件在同一位置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 读取文件的新型语法 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 使用glob读取多个文本文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 写入文本文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 向first_script.py添加代码 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 写入CSV文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── print语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ ├── CSV文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 筛选特定的行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 行中的值满足某个条件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 行中的值属于某个集合 --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ │ │ └── 行中的值匹配于某个模式/ 正则表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 选取特定的列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 列索引值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 列标题 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 选取连续的行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 添加标题行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读取多个CSV文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 从多个文件中连接数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 计算每个文件中值的总和与均值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Excel文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内省Excel工作簿 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理单个工作表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 读写Excel文件 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 筛选特定行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 读取工作簿中的所有工作表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在所有工作表中筛选特定行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在所有工作表中选取特定列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Excel工作簿中读取一组工作表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 处理多个工作簿 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 工作表计数以及每个工作表中的行列计数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 从多个工作簿中连接数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python内置的sqlite3 模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 向表中插入新记录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 更新表中记录 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── MySQL数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 向表中插入新记录 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 查询一个表并将输出写入CSV文件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 更新表中记录 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为CSV文件中数据的任意数目分类计算统计量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 为文本文件中数据的任意数目分类计算统计量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 图与图表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── matplotlib --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 条形图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 直方图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 折线图 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 散点图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 箱线图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── pandas --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ggplot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── seaborn --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 描述性统计与建模 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数据集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 葡萄酒质量 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 客户流失 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 葡萄酒质量 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 描述性统计 --> ( 难度等级: 高阶 || 挂载数据: qa: 6 ) +│ │ │ │ ├── 成对变量之间的关系和相关性 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用最小二乘估计进行线性回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 系数解释 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自变量标准化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 预测 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 客户流失 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 逻辑斯蒂回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 系数解释 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 预测 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 按计划自动运行脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 任务计划程序(Windows系统) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── cron工具(macOS系统和Unix系统) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── cron表文件:一次性设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 向cron表文件中添加cron任务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 从这里启航 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更多的标准库模块和内置函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python标准库(PSL):更多的标准模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 内置函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Python包索引(PyPI):更多的扩展模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── NumPy --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── SciPy --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── Scikit-Learn --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 更多的扩展包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更多的数据结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 队列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 树 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 从这里启航 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 准备工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 本书内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 什么类型的数据 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 为何利用Python进行数据分析 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── Python作为胶水 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 解决“双语言”难题 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 为何不使用Python --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 重要的Python库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── IPython与Jupyter --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── statsmodels --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装与设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Windows --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Apple(OS X和macOS) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── GNU/Linux --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 安装及更新Python包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python 2和Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 集成开发环境和文本编辑器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 社区和会议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 快速浏览本书 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 代码示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 一次性模拟多次随机漫步 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 示例数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 导入约定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 内建数据结构、函数及文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据结构和序列 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 内建序列函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命名空间、作用域和本地函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 返回多个值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数是对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 匿名(Lambda)函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 柯里化:部分参数应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 错误和异常处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 文件与操作系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字节与Unicode文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── NumPy基础:数组与向量化计算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── NumPy ndarray:多维数组对象 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成ndarray --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── ndarray的数据类型 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── NumPy数组算术 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 基础索引与切片 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 布尔索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神奇索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 数组转置和换轴 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 通用函数:快速的逐元素数组函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用数组进行面向数组编程 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将条件逻辑作为数组操作 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 数学和统计方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 布尔值数组的方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 排序 --> ( 难度等级: 高阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── 唯一值与其他集合逻辑 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用数组进行文件输入和输出 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 线性代数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 伪随机数生成 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── pandas入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── pandas数据结构介绍 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── Series --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── DataFrame --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 索引对象 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 基本功能 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重建索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 轴向上删除条目 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 索引、选择与过滤 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 整数索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 算术和数据对齐 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 含有重复标签的轴索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 描述性统计的概述与计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据载入、存储及文件格式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 文本格式数据的读写 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分块读入文本文件 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将数据写入文本格式 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 使用分隔格式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── JSON数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── XML和HTML:网络抓取 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 二进制格式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用HDF5格式 --> ( 难度等级: 高阶 || 挂载数据: qa: 7 ) +│ │ │ │ └── 读取Microsoft Excel文件 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 与Web API交互 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ └── 与数据库交互 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 数据清洗与准备 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 处理缺失值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 过滤缺失值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 补全缺失值 --> ( 难度等级: 高阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 数据转换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 删除重复值 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 使用函数或映射进行数据转换 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 替代值 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 重命名轴索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 离散化和分箱 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 检测和过滤异常值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 置换和随机抽样 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 计算指标/虚拟变量 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 字符串操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串对象方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── pandas中的向量化字符串函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 数据规整:连接、联合与重塑 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 分层索引 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重排序和层级排序 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 按层级进行汇总统计 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用DataFrame的列进行索引 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ ├── 联合与合并数据集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据库风格的DataFrame连接 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 根据索引合并 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 沿轴向连接 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 联合重叠数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 重塑和透视 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用多层索引进行重塑 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 将“长”透视为“宽” --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 将“宽”透视为“长” --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 绘图与可视化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简明matplotlib API入门 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图片与子图 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 颜色、标记和线类型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 刻度、标签和图例 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 注释与子图加工 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将图片保存到文件 --> ( 难度等级: 高阶 || 挂载数据: qa: 5 ) +│ │ │ │ └── matplotlib设置 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ └── 其他Python可视化工具 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 数据聚合与分组操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── GroupBy机制 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 遍历各分组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 选择一列或所有列的子集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用函数分组 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 根据索引层级分组 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数据聚合 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 返回不含行索引的聚合数据 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 应用:通用拆分-应用-联合 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 压缩分组键 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 分位数与桶分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 数据透视表与交叉表 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 交叉表:crosstab --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 时间序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 时间序列基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 含有重复索引的时间序列 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 时区处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 时区的本地化和转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 时区感知时间戳对象的操作 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 不同时区间的操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 时间区间和区间算术 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 区间频率转换 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 季度区间频率 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将时间戳转换为区间(以及逆转换) --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 从数组生成PeriodIndex --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 重新采样与频率转换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 向下采样 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 向上采样与插值 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用区间进行重新采样 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 移动窗口函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指数加权函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 二元移动窗口函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 用户自定义的移动窗口函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 高阶pandas --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 分类数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 背景和目标 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── pandas中的Categorical类型 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 使用Categorical对象进行计算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 分类方法 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 高阶GroupBy应用 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分组转换和“展开”GroupBy --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ │ └── 分组的时间重新采样 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 方法链技术 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── pipe方法 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ ├── Python建模库介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Patsy创建模型描述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── Patsy公式中的数据转换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── statsmodels介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 评估线性模型 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 评估时间序列处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── scikit-learn介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 继续你的教育 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── 数据分析示例 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ ├── 从Bitly获取1.USA.gov数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 纯Python时区计数 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用pandas进行时区计数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── MovieLens 1M数据集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 测量评价分歧 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 美国1880~2010年的婴儿名字 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 分析名字趋势 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 美国农业部食品数据库 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── 2012年联邦选举委员会数据库 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 按职业和雇主的捐献统计 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 捐赠金额分桶 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ └── 按州进行捐赠统计 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ ├── 人工智能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 机器学习工具包Scikit-learn --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Scikit-learn概览 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 安装配置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数据集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Scikit-learn自带的数据集 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 样本生成器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 加载其他数据集 --> ( 难度等级: 高阶 || 挂载数据: qa: 5 ) +│ │ │ ├── 数据预处理Preprocessing --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 标准化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 归一化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 正则化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 离散化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 特征编码 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 缺失值补全 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 分类Classification --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── K-近邻分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 贝叶斯分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 决策树分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 支持向量机分类 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 随机森林分类 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 集成学习Bagging/Boosting --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 神经网络模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 回归Regression --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 线性回归 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── Lasso回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 支持向量机回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── K-近邻回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 决策树回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 随机森林回归 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 逻辑回归 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 聚类Clustering --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── K-Means聚类 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 均值漂移聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于密度的空间聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 谱聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 层次聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自下而上的方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 聚类之间的距离 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 自上而下的方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 图论方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 成分分解与降维 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 主成分分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 因子分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 截断奇异值分解 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 独立成分分析ICA(Independent Component Analysis) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 模型评估与参数调优 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 估计器得分 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 交叉验证 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 评价指标 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 参数调优 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 模型持久化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 深度学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 神经网络基础知识 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 人工智能发展历史 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经元 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── BP神经网络 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 梯度下降 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 激励函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 过拟合、欠拟合 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 优化器Optimizer --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 常用开发工具 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 环境配置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Windows搭建深度学习环境 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Linux搭建深度学习环境 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── MacOS搭建深度学习环境 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── CPU/GPU环境搭建 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Theano --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Theano基础知识 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 定义Layer --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── RNN(GRU/LSTM) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Autoencoder --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经网络参数保存 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 神经网络性能评价 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── TensorFlow --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── TensorFlow基础知识 --> ( 难度等级: 高阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── Tensor --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Session --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Variable --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Placeholder --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── Dropout --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Tensorboard --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── RNN(GRU/LSTM) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Autoencoder --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── GNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经网络参数保存 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 神经网络性能评价 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Keras --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Keras基础语法 --> ( 难度等级: 高阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── 兼容Backend --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数模型和序列模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义Layer --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── RNN(GRU/LSTM) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Autoencoder --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── GNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迁移学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── BiLSTM-Attention --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成对抗网络GAN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经网络参数保存 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 神经网络性能评价 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── PyTorch --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── PyTorch基础知识 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Tensor --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Variable --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义Layer --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 可视化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN(TextCNN) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── RNN(GRU/LSTM) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Autoencoder --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── GNN/GCN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迁移学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成对抗网络GAN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经网络参数保存 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 神经网络性能评价 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 强化学习 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 强化学习概念 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ ├── Q-Learning --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Sarsa --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── DQN(Deep Q Network) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Policy Gradients --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── Actor Critic --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 计算机视觉 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 数字图像处理基础 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数字图像处理 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 图像三要素 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 像素及图像类型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 图像信号数字转换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── OpenCV基础 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装配置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── OpenCV基础语法 --> ( 难度等级: 高阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 几何图形绘制 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像处理入门 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 读取显示图像 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 读取修改像素 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 创建复制保存图像 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 获取图像属性及通道 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像算数与逻辑运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像加法运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像减法运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像与运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像或运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像异或运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 图像非运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像几何变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 平移变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 缩放变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 旋转变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 镜像变换 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 仿射变换 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 透视变换 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 图像量化与采样 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像量化处理 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 图像采样处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像金字塔 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 局部马赛克处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 直方图统计 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 直方图概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 直方图绘制 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 掩膜直方图 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── H-S直方图 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 直方图对比 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像增强 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像增强 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 直方图均衡化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 局部直方图均衡化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自动色彩均衡化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 图像去雾 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像平滑 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像平滑概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 均值滤波 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 方框滤波 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 高斯滤波 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 中值滤波 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 双边滤波 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像锐化及边缘检测 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 一阶微分算法、二阶微分算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Roberts算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Prewitt算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Sobel算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Laplacian算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Scharr算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Canny算子 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── LOG算子 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 图像形态学处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像腐蚀 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像膨胀 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像开运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像闭运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像梯度运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像顶帽运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 图像底帽运算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像分割 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于阈值的图像分割 --> ( 难度等级: 高阶 || 挂载数据: qa: 4 ) +│ │ │ │ ├── 基于边缘检测的图像分割 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于纹理背景的图像分割 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于K-Means聚类的区域分割 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于均值漂移算法的图像分割 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 基于分水岭算法的图像分割 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像漫水填充分割 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 文字区域分割及定位 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 傅里叶变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 傅里叶变换 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 傅里叶逆变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 高通滤波器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 低通滤波器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 霍夫变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 霍夫变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 霍夫线变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 霍夫圆变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像特效处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像毛玻璃特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像浮雕特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像素描特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像怀旧特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像流年特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像滤镜特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像水波特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 图像卡通特效 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图像分类概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于机器学习的图像分类 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 基于深度学习的图像分类 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── LeNet --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── VGG --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── AlexNet --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── ResNet --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 人脸识别 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 目标检测 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 目标检测概述 --> ( 难度等级: 高阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── RCNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Fast-RCNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── SPPNet --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Mask-RCNN --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── SSD --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── YOLO系列算法 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 深度神经网络概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建神经网络块 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── TensorFlow介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── MNIST数据集介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Keras深度学习库概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于Keras和MNIST的手写数字识别 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 训练和测试数据的检索 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 训练数据的可视化 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 创建神经网络 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 训练神经网络 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ │ └── 测试 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 理解反向传播 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 卷积神经网络介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN历史 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 卷积神经网络 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 计算机如何解释图像 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 编码实现图像可视化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── dropout --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 输入层 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 卷积层 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 池化层 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 构建CNN并进行性能优化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN架构和DNN的缺点 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 卷积操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 池化、步长和填充操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── TensorFlow中的卷积和池化操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在TensorFlow中应用池化操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── TensorFlow中的卷积操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 训练CNN --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ │ ├── 初始化权重和偏置 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 正则化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 激活函数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 模型性能优化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 隐含层数量 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 每个隐含层的神经元个数 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 批标准化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 高级正则化及过拟合的避免 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 运用哪个优化器 --> ( 难度等级: 高阶 || 挂载数据: qa: 5 ) +│ │ │ │ ├── 内存调优 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 层的位置调优 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 综合所有操作创建第二个CNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据集描述和预处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建CNN模型 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 经典的CNN模型架构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── ImageNet介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── AlexNet架构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── VGGNet架构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── GoogLeNet架构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 架构洞察 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── inception模块 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── ResNet架构 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 转移学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 特征提取方法 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 目标数据集较小且与原始训练集相似 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 目标数据集较小且与原始训练集不同 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 目标数据集很大且与原始训练集相似 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 目标数据集很大且与原始训练集不同 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 转移学习示例 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 多任务学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── CNN自编码器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自编码器介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 卷积自编码器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 应用 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── GAN:使用CNN生成新图像 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pix2pix:基于GAN的图像翻译 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── CycleGAN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 训练GAN模型 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── GAN的代码示例 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 计算损失 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 半监督学习和GAN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 特征匹配 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于半监督分类的GAN示例 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 深度卷积GAN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── CNN和视觉模型的注意力机制 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像描述中的注意力机制 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 注意力类型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 硬注意力 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 软注意力 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 运用注意力改善视觉模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 视觉CNN模型次优性能的原因 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 循环视觉注意力模型 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ └── 参考文献 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 自然语言处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 自然语言处理概览 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自然语言处理的基本概念 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自然语言处理的面临困难 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 自然语言处理的研究现状 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 预备知识 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 概率论基础知识 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 最大似然估计 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 隐马尔可夫模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 贝叶斯网络 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 条件概率分布 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 信息论基础知识 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 熵 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 困惑度 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 互信息 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经网络基础知识 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CRF --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── BiLSTM+Attention --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迁移学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 常用语料库和知识库 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── jieba --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── jieba概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── jieba分词 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── jieba添加自定义词典 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── jieba词性标注 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── jieba关键词抽取 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── nltk --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk概述 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk字符串处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk词性标注 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk词干提取 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk命名实体识别 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk分块处理 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── nltk文本分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── nltk情感分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Genism --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── TF-IDF --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── similarities --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── LSA --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── LDA --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── Word2vec --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 词法分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分词(英文分词/中文分词) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 词干提取 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 词形还原 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 词性标注 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 命名实体识别 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 句法分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 短语结构分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 依存句法分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 语义分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命名实体消歧 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 指代消解 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 语义角色标注 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 语义关系抽取 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 语义依存分析 --> ( 难度等级: 高阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── 抽象语义表示 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 词嵌入 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── Word2Vec --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── GloVe --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── fastText --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── ELMo --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── BERT --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── XLNet --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 文本挖掘 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文本相似度计算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文本聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文本分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 文本摘要 --> ( 难度等级: 高阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 情感分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于情感词典的情感分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于深度学习的情感分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 主题模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── LSA --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── LDA --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── 机器翻译 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── IBM统计翻译模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 短语抽取 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 语言模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── GNMT --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Seq2Seq --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── Transformer --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 语言模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── n-gram --> ( 难度等级: 高阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── Pitman-Yor过程模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── AWD-LSTM --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Transformer-XL --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── Gated CNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 智能问答 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于知识的问答 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于检索的问答 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 阅读理解 --> ( 难度等级: 高阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── 完形填空 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 智能对话 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对话行为分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对话状态跟踪 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 检索式聊天机器人 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成式聊天机器人 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 意图识别 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 槽填充(Slot Filling) --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 语音识别 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 傅里叶变换 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 声学模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 隐马尔可夫模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNN --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── LSTM-HMM --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 神经网络语言模型 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── MFCC --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 知识图谱 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 知识图谱构建 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 知识计算 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 知识存储 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ └── 知识服务与应用 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为何选择Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 何时避免使用Python --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python中的面向对象编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Python中调用其他语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将Python模型作为微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 高性能API和并发编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Python结构化数据提取、转换和加载 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── MySQL --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 如何安装MySQLdb --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 数据库连接 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── INSERT操作 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── READ操作 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── DELETE操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── UPDATE操作 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── COMMIT操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── ROLL-BACK操作 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Elasticsearch --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Neo4j Python驱动 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── neo4j-rest-client --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 内存数据库 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Python版本MongoDB --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将数据导入集合 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用pymongo创建连接 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 访问数据库对象 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 插入数据 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 更新数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 删除数据 --> ( 难度等级: 高阶 || 挂载数据: qa: 2 ) +│ │ │ ├── Pandas --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Python非结构化数据提取、转换和加载 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 电子邮件解析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 主题爬取 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 稳定方差 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使周期效应累加 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 使数据呈正态分布 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 基于Python的监督学习 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Python实现降维 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 相关性分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Python进行分类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 决策树 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 哪个属性优先 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 随机森林分类器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 朴素贝叶斯分类器 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 支持向量机 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 最近邻分类器 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 情绪分析 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 图像识别 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Python进行回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 最小二乘估计 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 分类和回归 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 使模型高估或低估 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 处理分类型数据 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 无监督学习—聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── K均值聚类 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 选择K—肘部法则 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 距离或相似性度量 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 属性 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 一般及欧氏距离 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── 平方欧氏距离 --> ( 难度等级: 高阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 字符串之间的编辑距离 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 文档上下文的相似性 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 如何判断聚类结果是否良好 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ ├── 时间序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变化的分类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包含趋势的序列分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 曲线拟合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 从时间序列中去除趋势 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 包含周期性的序列数据分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从时间序列中去除周期性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 滤波 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 差分 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 平稳时间序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 平稳过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自相关和相关图 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ └── 自协方差和自相关函数的估计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Python进行时间序列分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 有用的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自回归过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 估计AR过程的参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 混合ARMA模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集成ARMA模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一个特殊的场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 数据缺失 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 大数据分析 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── Hadoop --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── MapReduce编程 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── partitioning函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── combiner函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HDFS文件系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── MapReduce设计模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Spark --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 云分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 物联网 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 高级教程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 原理与哲学 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Python之禅 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 优美胜于丑陋 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 明了胜于晦涩 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 简洁胜于复杂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 复杂胜于难以理解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 扁平胜于嵌套 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 宽松胜于紧凑 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 可读性很重要 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 即便是特例,也不可违背这些规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实用性胜于纯粹性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 错误永远不应该悄无声息地过去 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 除非明确地沉默 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面对模棱两可的情况,拒绝猜测的诱惑 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 应该有一种(最好只有一种)显而易见的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 尽管这种方式起初可能并不明显,除非你是荷兰人 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 做比不做要好 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 不假思索就动手还不如不做 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 如果实现难以解释,那就是一个糟糕的想法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 如果实现容易解释,则可能是一个好主意 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 命名空间是一个很棒的想法,让我们做更多这样的事情吧 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不要重复自己 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 松耦合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 武士原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 帕累托原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 稳健性原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 向后兼容性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基础知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 总体概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 缓存 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 透明度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流程控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 捕获异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 异常链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 当一切顺利的时候 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 继续执行,无论异常如何 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 优化循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── with语句 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 条件表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 迭代 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 序列解包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 列表解析式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成器表达式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 集合解析式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字典解析式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将迭代器链接在一起 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 将迭代器压缩在一起 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 集合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命名元组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 有序字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 带有默认值的字典 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 导入代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 回退(备用)导入 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 从即将发布的版本中导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用__all__进行自定义导入 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 相对导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── __import__函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── importlib模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 令人兴奋的Python扩展:NIST的随机数信标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何安装NIST信标库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 示例:获取值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 示例:模拟抛硬币并记录每次正反面的结果 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Pandas和matplotlib --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建文本文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Pandas显示数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 进行一些数据分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用matplotlib进行绘图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 图表的类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Scrapy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运行Scrapy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Scrapy获取Web数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过Scrapy浏览网页 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── shell选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Beautiful Soup --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Beautiful Soup --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何安装feedparser库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何使用feedparser库 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 安装NumPy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用NumPy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用NumPy数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 统计度量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何安装Pillow库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 图像显示:确定文件的大小和类型并显示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 图像处理:裁剪图像的一部分 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 随机数 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 密码生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 规划时的灵活性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 可变位置参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 可变关键字参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 组合不同类型的参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 调用具有可变参数的函数 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ ├── 传递参数 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 自省 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 闭包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 包装器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 带参数的装饰器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 带参数或不带参数的装饰器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 提取样板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用装饰器进行注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── lambda --> ( 难度等级: 中阶 || 挂载数据: qa: 5 ) +│ │ │ └── 自省 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标识对象类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 模块和软件包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 文档字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 描述函数的作用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 包含预期的异常 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 继承 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 多重继承 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ │ ├── 方法解析顺序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用super函数将控制权传递给其他类 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 自省 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何创建类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在运行时创建类 --> ( 难度等级: 中阶 || 挂载数据: qa: 7 ) +│ │ │ │ ├── 元类 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ └── 控制命名空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 成员变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 描述器 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 非绑定方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 绑定方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ └── 魔术方法 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 处理成员变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 字符串表示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字节字符串 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── 借助chr和ord进行简单的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 借助struct模块进行复杂的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Unicode --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── 编码 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 简单的替换 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在对象中查找值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 区分字符串类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标准格式规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为文本文档制作目录 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ └── 自定义格式规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通用协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数学运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 按位运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ │ └── 运算符的变体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数字 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 符号运算 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 比较运算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可迭代对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 序列 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── _call_方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 上下文管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 对象管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 命名空间字典 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 垃圾回收 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 引用计数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 循环引用 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── 弱引用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python对象的序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 复制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 浅层复制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ └── 深层复制 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ ├── 文档的编写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 恰当地命名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 注释 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代码之外的文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装与配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 教程 --> ( 难度等级: 中阶 || 挂载数据: qa: 2 ) +│ │ │ │ └── 参考文档 --> ( 难度等级: 中阶 || 挂载数据: qa: 4 ) +│ │ │ └── 用于编写文档的实用工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 链接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Sphinx --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 测试驱动开发 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ ├── doctest --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 呈现输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 与文档集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 运行测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── unittest模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 初始化配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 编写测试 --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── 其他比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试对象标识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 释放资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 提供自定义的测试类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 许可证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── GNU通用公共许可证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Affero通用公共许可证 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ ├── GNU宽通用公共许可证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 伯克利软件发行许可证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 其他许可证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 打包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── setup.py --> ( 难度等级: 中阶 || 挂载数据: qa: 10 ) +│ │ │ │ ├── MANIFEST.in --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ │ │ │ └── sdist命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 构建CSV框架sheets --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建声明性框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 声明性编程简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 是否构建声明性框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管理选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义字段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将字段附加到类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 添加元类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 整合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 字段排序 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── DeclarativeMeta.__prepare__ --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Column.__init__ --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ ├── Column.__new__ --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CounterMeta.__call__ --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 挑选选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建字段库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StringField(字符串字段) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IntegerColumn(整数列) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── FloatColumn(浮点数列) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── DecimalColumn(小数列) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── DateColumn(日期列) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 回到CSV --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 检查参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 填充值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 读取器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 写入器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── GUI界面编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 初识GUI --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是GUI --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ │ ├── 常用的GUI框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 安装wxPython --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建应用程序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建一个wx.App的子类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 直接使用wx.App --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用wx.Frame框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 常用控件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── StaticText文本类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── TextCtrl输入文本类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Button按钮类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── BoxSizer布局 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是BoxSizer --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用BoxSizer布局 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 事件处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 什么是事件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 绑定事件 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ ├── Pygame游戏编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 初识Pygame --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Pygame --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Pygame常用模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Pygame基本使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 开发Flappy Bird游戏 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 游戏简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 游戏分析 --> ( 难度等级: 初阶 || 挂载数据: qa: 6 ) +│ │ ├── 搭建主框架 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 创建小鸟类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建管道类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 计算得分 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 碰撞检测 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 网络爬虫开发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 初识网络爬虫 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 网络爬虫概述 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ │ ├── 网络爬虫的分类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 网络爬虫的基本原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 网络爬虫的常用技术 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── Python的网络请求 --> ( 难度等级: 初阶 || 挂载数据: qa: 4 ) +│ │ │ ├── 请求headers处理 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 网络超时 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 代理服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── HTML解析之BeautifulSoup --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ └── 网络爬虫开发常用框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Scrapy爬虫框架 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── Crawley爬虫框架 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── PySpider爬虫框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 使用进程和线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 什么是进程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建进程的常用方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用multiprocessing模块创建进程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ ├── 使用Process子类创建进程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 使用进程池Pool创建进程 --> ( 难度等级: 初阶 || 挂载数据: qa: 2 ) +│ │ ├── 进程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 队列简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 多进程队列的使用 --> ( 难度等级: 初阶 || 挂载数据: qa: 5 ) +│ │ │ └── 使用队列在进程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 什么是线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 使用threading模块创建线程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 使用Thread子类创建线程 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ └── 线程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 什么是互斥锁 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ ├── 使用互斥锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 使用队列在线程间通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 网络编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网络基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── TCP/IP简介 --> ( 难度等级: 初阶 || 挂载数据: qa: 8 ) +│ │ │ ├── UDP简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Socket简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── TCP编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建TCP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 创建TCP客户端 --> ( 难度等级: 初阶 || 挂载数据: qa: 1 ) +│ │ │ └── 执行TCP服务器和客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── UDP编程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建UDP服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 创建UDP客户端 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ └── 执行UDP服务器和客户端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Web编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Web基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── HTTP协议 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Web服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 前端基础 --> ( 难度等级: 初阶 || 挂载数据: qa: 10 ) +│ │ │ └── 静态服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── WSGI接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CGI简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── WSGI简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义WSGI接口 --> ( 难度等级: 中阶 || 挂载数据: qa: 3 ) +│ │ │ └── 运行WSGI服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Web框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 什么是Web框架 --> ( 难度等级: 初阶 || 挂载数据: qa: 3 ) +│ │ └── Python中常用的Web框架 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ └── Flask框架 --> ( 难度等级: 中阶 || 挂载数据: qa: 1 ) +│ ├── Flask简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装虚拟环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安装Flask --> ( 难度等级: 中阶 || 挂载数据: qa: 6 ) +│ │ └── 第一个Flask程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Flask基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 开启调试模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 静态文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 蓝图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 模板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 渲染模板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 控制结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── Web表单 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── CSRF保护和验证 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── 表单类 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ └── 把表单渲染成HTML --> ( 难度等级: 初阶 || 挂载数据: 无 ) +└── 其他 --> ( 难度等级: 无 || 挂载数据: 无 ) + ├── 其他类别标签问题 --> ( 难度等级: 无 || 挂载数据: qa: 10 ) + ├── 应用类问题 --> ( 难度等级: 无 || 挂载数据: qa: 10 ) + └── 第三方包问题 --> ( 难度等级: 无 || 挂载数据: qa: 10 ) diff --git a/data/tree_java_mapping.json b/data/tree_java_mapping.json new file mode 100644 index 0000000..e5037ac --- /dev/null +++ b/data/tree_java_mapping.json @@ -0,0 +1,83923 @@ +{ + "java": { + "children": [ + { + "java初阶": { + "children": [ + { + "Java的历史和演变": { + "children": [ + { + "Java的家世": { + "children": [ + { + "现代编程语言的诞生:C语言": { + "data": { + "uuid": "java-4-0", + "seg": [ + [ + [ + "编程语言", + "诞生" + ] + ], + [ + [ + "c语言" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_671404_528377", + "13_257467_264044", + "13_363393_383608", + "13_178799_63438", + "13_7460884_53446002", + "13_226517_189345", + "13_7458626_53443256", + "13_226164_188403", + "13_701664_591605", + "13_250412_247601" + ] + } + } + } + } + }, + { + "C++:下一个阶段": { + "data": { + "uuid": "java-4-1", + "seg": [ + [ + [ + "c++" + ] + ], + [ + [ + "阶段" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_205238_135354", + "13_260709_271460", + "13_7448692_53428840", + "13_242104_229264", + "13_7399873_53347437" + ] + } + } + } + } + }, + { + "Java出现的时机已经成熟": { + "data": { + "uuid": "java-4-2", + "seg": [ + [ + [ + "java", + "时机", + "成熟" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-0", + "seg": [ + [ + [ + "java", + "家世" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的诞生": { + "data": { + "uuid": "java-3-1", + "seg": [ + [ + [ + "java", + "诞生" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java改变Internet的方式": { + "children": [ + { + "Java applet": { + "data": { + "uuid": "java-4-3", + "seg": [ + [ + [ + "java", + "applet" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全性": { + "data": { + "uuid": "java-4-4", + "seg": [ + [ + [ + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可移植性": { + "data": { + "uuid": "java-4-5", + "seg": [ + [ + [ + "可移植性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-2", + "seg": [ + [ + [ + "java", + "改变", + "internet", + "方式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1102323_1316718" + ] + } + } + } + } + }, + { + "Java的魔力:字节码": { + "data": { + "uuid": "java-3-3", + "seg": [ + [ + [ + "java", + "魔力" + ] + ], + [ + [ + "字节", + "码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "servlet:服务器端的Java": { + "data": { + "uuid": "java-3-4", + "seg": [ + [ + [ + "servlet" + ] + ], + [ + [ + "服务器端", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的关键特性": { + "children": [ + { + "简单性": { + "data": { + "uuid": "java-4-6", + "seg": [ + [ + [ + "性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367835_393873" + ] + } + } + } + } + }, + { + "面向对象": { + "children": [ + { + "面向对象概述": { + "children": [ + { + "面向对象程序设计的特点": { + "data": { + "uuid": "java-6-0", + "seg": [ + [ + [ + "面向对象", + "程序设计" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7435614_53406523", + "13_655971_467090", + "13_7438685_53412086", + "13_223524_181745", + "13_249302_245065", + "13_5159078_31564669", + "13_755395_810862", + "13_379228_411678" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-0", + "seg": [ + [ + [ + "面向对象", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的类与对象": { + "children": [ + { + "类的定义": { + "data": { + "uuid": "java-6-1", + "seg": [ + [ + [ + "类", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7462730_53448371", + "13_7431662_53400496", + "13_679386_526221", + "13_714438_706322", + "13_224742_184636", + "13_7462548_53448123", + "13_244630_234187", + "13_234890_212657", + "13_7427630_53392329" + ] + } + } + } + } + }, + { + "对象的创建与使用": { + "children": [ + { + "存储到什么地方": { + "data": { + "uuid": "java-7-0", + "seg": [ + [ + [ + "存储", + "地方" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_666749_485100", + "13_771307_833759", + "13_377001_407308" + ] + } + } + } + } + }, + { + "Java中的数组": { + "data": { + "uuid": "java-7-1", + "seg": [ + [ + [ + "java", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_761971_820019", + "13_243812_232700", + "13_226016_187916", + "13_696074_579907", + "13_415472_437125", + "13_7434965_53405502" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-2", + "seg": [ + [ + [ + "对象", + "创建" + ], + [] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_226483_189039", + "13_226485_189037", + "13_226487_189100", + "13_7466719_53454059", + "13_1057009_1254052", + "13_7457071_53441186", + "13_219700_171443", + "13_687776_552090", + "13_247563_241444", + "13_191129_92420" + ] + } + } + } + } + }, + { + "访问控制符": { + "data": { + "uuid": "java-6-3", + "seg": [ + [ + [ + "访问", + "控制符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "String类与StringBuffer类": { + "children": [ + { + "String类的初始化": { + "data": { + "uuid": "java-7-2", + "seg": [ + [ + [ + "string", + "类", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367892_393946", + "13_201106_123244", + "13_737908_799348", + "13_647043_450027", + "13_7428420_53394365", + "13_368121_394415", + "13_746550_796213", + "13_7457016_53441101", + "13_1052529_1250117", + "13_743349_787456" + ] + } + } + } + } + }, + { + "String类的常见操作": { + "data": { + "uuid": "java-7-3", + "seg": [ + [ + [ + "string", + "类", + "常见", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StringBuffer类": { + "data": { + "uuid": "java-7-4", + "seg": [ + [ + [ + "stringbuffer", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743613_788268", + "13_190404_90861", + "13_26443_7195", + "13_219948_171879" + ] + } + } + } + } + }, + { + "声明字符串": { + "data": { + "uuid": "java-7-5", + "seg": [ + [ + [ + "声明", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_650487_457285" + ] + } + } + } + } + }, + { + "创建字符串": { + "data": { + "uuid": "java-7-6", + "seg": [ + [ + [ + "创建", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-4", + "seg": [ + [ + [ + "string", + "类" + ], + [ + "stringbuffer", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "System类与Runtime类": { + "children": [ + { + "System类": { + "data": { + "uuid": "java-7-7", + "seg": [ + [ + [ + "system", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_646339_448751", + "13_194845_103504", + "13_680031_528793", + "13_1053489_1250743", + "13_231141_201680", + "13_188499_85495", + "13_749065_801385", + "13_386224_424265", + "13_241473_227672", + "13_233587_208970" + ] + } + } + } + } + }, + { + "Runtime类": { + "data": { + "uuid": "java-7-8", + "seg": [ + [ + [ + "runtime", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_192884_97117", + "13_7463979_53450348" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-5", + "seg": [ + [ + [ + "system", + "类" + ], + [ + "runtime", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Math类与Random类": { + "children": [ + { + "Math类": { + "data": { + "uuid": "java-7-9", + "seg": [ + [ + [ + "math", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_248166_242486", + "13_347640_353749", + "13_943977_1081979", + "13_223586_181824", + "13_241802_228279", + "13_385973_423708" + ] + } + } + } + } + }, + { + "Random类": { + "data": { + "uuid": "java-7-10", + "seg": [ + [ + [ + "random", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7428440_53394176", + "13_27286_7671", + "13_7431539_53399926", + "13_7441406_53417527", + "13_911664_1046928" + ] + } + } + } + } + }, + { + "Math类概述": { + "data": { + "uuid": "java-7-11", + "seg": [ + [ + [ + "math", + "类", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用数学运算方法": { + "data": { + "uuid": "java-7-12", + "seg": [ + [ + [ + "数学", + "运算", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-6", + "seg": [ + [ + [ + "math", + "类" + ], + [ + "random", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包装类": { + "children": [ + { + "Integer类": { + "data": { + "uuid": "java-7-13", + "seg": [ + [ + [ + "integer", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_645306_446682", + "13_7416199_53370179", + "13_649653_455518", + "13_367904_394013", + "13_229985_198748", + "13_237756_218644", + "13_7436501_53409940", + "13_200367_120788", + "13_700803_590013", + "13_7428676_53394706" + ] + } + } + } + } + }, + { + "Number类": { + "data": { + "uuid": "java-7-14", + "seg": [ + [ + [ + "number", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1066540_1266530" + ] + } + } + } + } + }, + { + "Integer": { + "data": { + "uuid": "java-7-15", + "seg": [ + [ + [ + "integer" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1062380_1260185", + "13_227483_191726", + "13_171871_48992", + "13_749548_802106" + ] + } + } + } + } + }, + { + "Boolean": { + "data": { + "uuid": "java-7-16", + "seg": [ + [ + [ + "boolean" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_715531_707848", + "13_248273_242854", + "13_229701_197967", + "13_747126_798001", + "13_211354_151502", + "13_1073220_1275549" + ] + } + } + } + } + }, + { + "Character": { + "data": { + "uuid": "java-7-17", + "seg": [ + [ + [ + "character" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1081434_1287396", + "13_197474_111627" + ] + } + } + } + } + }, + { + "Number": { + "data": { + "uuid": "java-7-18", + "seg": [ + [ + [ + "number" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_231001_201365", + "13_760694_817822" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-7", + "seg": [ + [ + [ + "包装", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日期与时间类": { + "children": [ + { + "Date类": { + "data": { + "uuid": "java-7-19", + "seg": [ + [ + [ + "date", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_200430_121005", + "13_371811_398609", + "13_392180_435363", + "13_3242248_21871153", + "13_671673_495828", + "13_365028_387615", + "13_163962_37416", + "13_7439644_53415269", + "13_10042_4633", + "13_698262_585100" + ] + } + } + } + } + }, + { + "Calendar类": { + "data": { + "uuid": "java-7-20", + "seg": [ + [ + [ + "calendar", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744838_791529", + "13_206249_138165", + "13_254232_256499", + "13_205820_136969", + "13_386524_424818" + ] + } + } + } + } + }, + { + "JDK 8的日期与时间类": { + "data": { + "uuid": "java-7-21", + "seg": [ + [ + [ + "jdk", + "日期" + ], + [ + "时间", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1157_1982", + "13_649407_455044", + "13_1024332_1217702", + "13_644903_446070", + "13_769371_830118", + "13_370748_397449", + "13_689436_557459", + "13_229121_196358", + "13_658255_471354", + "13_158686_23188" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-8", + "seg": [ + [ + [ + "日期" + ], + [ + "时间", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化类": { + "children": [ + { + "DateFormat类": { + "data": { + "uuid": "java-7-22", + "seg": [ + [ + [ + "dateformat", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SimpleDateFormat类": { + "data": { + "uuid": "java-7-23", + "seg": [ + [ + [ + "simpledateformat", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_697413_583203", + "13_374925_404050" + ] + } + } + } + } + }, + { + "DateTimeFormatter类": { + "data": { + "uuid": "java-7-24", + "seg": [ + [ + [ + "datetimeformatter", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_686618_548542" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-9", + "seg": [ + [ + [ + "格式化", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用引用操纵对象": { + "data": { + "uuid": "java-6-10", + "seg": [ + [ + [ + "引用", + "操纵", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "永远不需要销毁对象": { + "children": [ + { + "作用域": { + "data": { + "uuid": "java-7-25", + "seg": [ + [ + [ + "作用域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象的作用域": { + "data": { + "uuid": "java-7-26", + "seg": [ + [ + [ + "对象", + "作用域" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230506_199838", + "13_237972_219323", + "13_225737_187362", + "13_7445678_53424343", + "13_235569_214651", + "13_666332_484367", + "13_7439656_53414125", + "13_1061_1845", + "13_744159_789730", + "13_169034_45213" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-11", + "seg": [ + [ + [ + "永远", + "销毁", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建一个Java程序": { + "children": [ + { + "名字可见性": { + "data": { + "uuid": "java-7-27", + "seg": [ + [ + [ + "名字", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运用其他构件": { + "data": { + "uuid": "java-7-28", + "seg": [ + [ + [ + "构件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-12", + "seg": [ + [ + [ + "构建", + "java", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编码风格": { + "data": { + "uuid": "java-6-13", + "seg": [ + [ + [ + "编码", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问对象的属性和行为": { + "data": { + "uuid": "java-6-14", + "seg": [ + [ + [ + "访问", + "对象", + "属性" + ], + [] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_238964_221578", + "13_25346_118467", + "13_226230_188450", + "13_212321_153533", + "13_759425_815700", + "13_232316_205015", + "13_762038_820111", + "13_677696_520206", + "13_7439561_53414090", + "13_7414537_53367396" + ] + } + } + } + } + }, + { + "对象的引用": { + "data": { + "uuid": "java-6-15", + "seg": [ + [ + [ + "对象", + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_664297_480984", + "13_253852_256013", + "13_1073213_1275918", + "13_694530_574772", + "13_243396_231804", + "13_689830_558701", + "13_853143_975371", + "13_1096534_1308919" + ] + } + } + } + } + }, + { + "对象的销毁": { + "data": { + "uuid": "java-6-16", + "seg": [ + [ + [ + "对象", + "销毁" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_658996_472504" + ] + } + } + } + } + }, + { + "打印对象和toString方法": { + "data": { + "uuid": "java-6-17", + "seg": [ + [ + [ + "打印", + "对象" + ], + [ + "tostring", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_643953_444204", + "13_7438536_53411910", + "13_716869_709882", + "13_230674_200334", + "13_245790_236697", + "13_649879_456066", + "13_693318_570588", + "13_246958_239804", + "13_230603_200072", + "13_189917_89793" + ] + } + } + } + } + }, + { + "==和equals方法": { + "data": { + "uuid": "java-6-18", + "seg": [ + [ + [], + [ + "equals", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_248557_243459", + "13_649014_454219", + "13_206032_137784", + "13_647514_451236", + "13_228873_195618", + "13_965565_1144705", + "13_238149_219661", + "13_221775_176479" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1", + "seg": [ + [ + [ + "java", + "类" + ], + [ + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类的封装": { + "children": [ + { + "如何实现封装": { + "data": { + "uuid": "java-6-19", + "seg": [ + [ + [ + "封装" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_697317_582288", + "13_714467_706397", + "13_392461_435933", + "13_245922_236929", + "13_934386_1071876", + "13_217423_165670", + "13_946893_1086619", + "13_695053_576582" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-2", + "seg": [ + [ + [ + "类", + "封装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造方法": { + "children": [ + { + "构造方法的定义": { + "data": { + "uuid": "java-6-20", + "seg": [ + [ + [ + "构造方法", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_742665_785284", + "13_239636_223094", + "13_746314_795601", + "13_235865_215259", + "13_1099786_1314806" + ] + } + } + } + } + }, + { + "构造方法的重载": { + "data": { + "uuid": "java-6-21", + "seg": [ + [ + [ + "构造方法", + "重载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-3", + "seg": [ + [ + [ + "构造方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_353733_365578" + ] + } + } + } + } + }, + { + "static关键字": { + "children": [ + { + "静态变量": { + "data": { + "uuid": "java-6-22", + "seg": [ + [ + [ + "静态", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743871_789039", + "13_239875_223610", + "13_6180961_42897153", + "13_4646083_29329509", + "13_206150_137795", + "13_7428273_53393813", + "13_252536_252400", + "13_188787_86405", + "13_237832_218792", + "13_227151_190836" + ] + } + } + } + } + }, + { + "静态方法": { + "data": { + "uuid": "java-6-23", + "seg": [ + [ + [ + "静态方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "静态代码块": { + "data": { + "uuid": "java-6-24", + "seg": [ + [ + [ + "静态" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_198855_115646", + "13_240165_224249", + "13_649218_454745", + "13_927593_1062529", + "13_171615_48710" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-4", + "seg": [ + [ + [ + "static", + "关键字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_376539_406524", + "13_742222_783796", + "13_699747_588024", + "13_233350_208090", + "13_245567_236170", + "13_210370_149191", + "13_1056256_1253400", + "13_388204_427768", + "13_384305_420549", + "13_7431265_53399424" + ] + } + } + } + } + }, + { + "类的继承": { + "children": [ + { + "继承的概念": { + "data": { + "uuid": "java-6-25", + "seg": [ + [ + [ + "继承", + "概念" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7460972_53446802", + "13_690395_560350", + "13_7413468_53365407", + "13_1100768_1315549", + "13_7452997_53435534", + "13_742793_785661", + "13_363876_384801", + "13_1083453_1289741", + "13_1568_2584" + ] + } + } + } + } + }, + { + "重写父类方法": { + "data": { + "uuid": "java-6-26", + "seg": [ + [ + [ + "重写", + "父类", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7429170_53395683", + "13_231525_202776", + "13_231366_202310" + ] + } + } + } + } + }, + { + "extends关键字": { + "data": { + "uuid": "java-6-27", + "seg": [ + [ + [ + "extends", + "关键字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367888_393940", + "13_754267_809146", + "13_235073_213164", + "13_235074_213165", + "13_238657_220785" + ] + } + } + } + } + }, + { + "所有类的父类——Object类": { + "data": { + "uuid": "java-6-28", + "seg": [ + [ + [ + "类", + "父类", + "object" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_368223_394610", + "13_7445345_53423867", + "13_250696_248102", + "13_385057_421885", + "13_1061372_1259167" + ] + } + } + } + } + }, + { + "super限定": { + "data": { + "uuid": "java-6-29", + "seg": [ + [ + [ + "super", + "限定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调用父类构造器": { + "data": { + "uuid": "java-6-30", + "seg": [ + [ + [ + "调用", + "父类", + "构造", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_649439_455020" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-5", + "seg": [ + [ + [ + "类", + "继承" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744476_790559" + ] + } + } + } + } + }, + { + "final关键字": { + "children": [ + { + "final关键字修饰类": { + "data": { + "uuid": "java-6-31", + "seg": [ + [ + [ + "final", + "关键字", + "修饰", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "final关键字修饰方法": { + "data": { + "uuid": "java-6-32", + "seg": [ + [ + [ + "final", + "关键字", + "修饰", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "final关键字修饰变量": { + "data": { + "uuid": "java-6-33", + "seg": [ + [ + [ + "final", + "关键字", + "修饰", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_644382_445076", + "13_7462269_53447711", + "13_7462182_53447614", + "13_27752_7676", + "13_235071_213125", + "13_663594_479948" + ] + } + } + } + } + }, + { + "final数据": { + "data": { + "uuid": "java-6-34", + "seg": [ + [ + [ + "final", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7446166_53425347" + ] + } + } + } + } + }, + { + "final方法": { + "data": { + "uuid": "java-6-35", + "seg": [ + [ + [ + "final", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_251711_250590" + ] + } + } + } + } + }, + { + "final类": { + "data": { + "uuid": "java-6-36", + "seg": [ + [ + [ + "final", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "有关final的忠告": { + "data": { + "uuid": "java-6-37", + "seg": [ + [ + [ + "final", + "忠告" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-6", + "seg": [ + [ + [ + "final", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多态": { + "children": [ + { + "多态概述": { + "data": { + "uuid": "java-6-38", + "seg": [ + [ + [ + "多态", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_741842_782613", + "13_351549_361191", + "13_7438293_53411620", + "13_1090881_1297951", + "13_237926_219252", + "13_255460_259428", + "13_1049647_1247094", + "13_713570_705004", + "13_214915_160105", + "13_758620_814583" + ] + } + } + } + } + }, + { + "对象的类型转换": { + "data": { + "uuid": "java-6-39", + "seg": [ + [ + [ + "对象", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "转机": { + "children": [ + { + "方法调用绑定": { + "data": { + "uuid": "java-7-29", + "seg": [ + [ + [ + "方法", + "调用", + "绑定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "产生正确的行为": { + "data": { + "uuid": "java-7-30", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可扩展性": { + "data": { + "uuid": "java-7-31", + "seg": [ + [ + [ + "可扩展性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缺陷:“覆盖”私有方法": { + "data": { + "uuid": "java-7-32", + "seg": [ + [ + [ + "缺陷" + ] + ], + [ + [ + "覆盖", + "私有", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-40", + "seg": [ + [ + [ + "转机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多态性": { + "data": { + "uuid": "java-6-41", + "seg": [ + [ + [ + "多态性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_351438_360922", + "13_205050_134793" + ] + } + } + } + } + }, + { + "引用变量的强制类型转换": { + "data": { + "uuid": "java-6-42", + "seg": [ + [ + [ + "引用", + "变量", + "强制", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_647707_451443" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-7", + "seg": [ + [ + [ + "多态" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367898_394000", + "13_700081_588659" + ] + } + } + } + } + }, + { + "JDK 8的Lambda表达式": { + "children": [ + { + "Lambda表达式入门": { + "data": { + "uuid": "java-6-43", + "seg": [ + [ + [ + "lambda", + "表达式", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-8", + "seg": [ + [ + [ + "jdk", + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "结构化程序设计简介": { + "data": { + "uuid": "java-5-9", + "seg": [ + [ + [ + "结构化程序", + "设计", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序的三种基本结构": { + "data": { + "uuid": "java-5-10", + "seg": [ + [ + [ + "程序", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象程序设计简介": { + "data": { + "uuid": "java-5-11", + "seg": [ + [ + [ + "面向对象", + "程序设计", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象的基本特征": { + "data": { + "uuid": "java-5-12", + "seg": [ + [ + [ + "面向对象", + "基本特征" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法详解": { + "children": [ + { + "方法的所属性": { + "data": { + "uuid": "java-6-44", + "seg": [ + [ + [ + "方法", + "属性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7449270_53429310" + ] + } + } + } + } + }, + { + "方法的参数传递机制": { + "data": { + "uuid": "java-6-45", + "seg": [ + [ + [ + "方法", + "参数传递", + "机制" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1527570_5925411", + "13_171611_48707" + ] + } + } + } + } + }, + { + "形参个数可变的方法": { + "data": { + "uuid": "java-6-46", + "seg": [ + [ + [ + "形参", + "个数", + "可变", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_199141_116450", + "13_7458143_53442625" + ] + } + } + } + } + }, + { + "递归方法": { + "data": { + "uuid": "java-6-47", + "seg": [ + [ + [ + "递归", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_249303_245064", + "13_7434427_53404820", + "13_224770_184744" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-13", + "seg": [ + [ + [ + "方法", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类成员": { + "children": [ + { + "理解类成员": { + "data": { + "uuid": "java-6-48", + "seg": [ + [ + [ + "理解", + "类", + "成员" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457323_53441491", + "13_1101498_1316024", + "13_661623_476813", + "13_226013_187898", + "13_654400_463961", + "13_682283_536429", + "13_357467_374207", + "13_7410647_53361432" + ] + } + } + } + } + }, + { + "单例(Singleton)类": { + "data": { + "uuid": "java-6-49", + "seg": [ + [ + [ + "单例", + "singleton", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-14", + "seg": [ + [ + [ + "类", + "成员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "final修饰符": { + "children": [ + { + "final成员变量": { + "data": { + "uuid": "java-6-50", + "seg": [ + [ + [ + "final", + "成员", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_363475_383776", + "13_749754_802420", + "13_183027_69464", + "13_327076_320861", + "13_148685_12868" + ] + } + } + } + } + }, + { + "final局部变量": { + "data": { + "uuid": "java-6-51", + "seg": [ + [ + [ + "final", + "局部变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239715_223318", + "13_645991_448137", + "13_1048888_1246392", + "13_823772_919501", + "13_746606_796375", + "13_7448848_53428971", + "13_1096630_1309080" + ] + } + } + } + } + }, + { + "final修饰基本类型变量和引用类型变量的区别": { + "data": { + "uuid": "java-6-52", + "seg": [ + [ + [ + "final", + "修饰", + "类型", + "变量" + ], + [ + "引用", + "类型", + "变量", + "区别" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_210697_149829", + "13_1043212_1239911" + ] + } + } + } + } + }, + { + "可执行“宏替换”的final变量": { + "data": { + "uuid": "java-6-53", + "seg": [ + [ + [ + "执行", + "宏", + "替换", + "final", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743242_787145" + ] + } + } + } + } + }, + { + "不可变类": { + "data": { + "uuid": "java-6-54", + "seg": [ + [ + [ + "变类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-15", + "seg": [ + [ + [ + "final", + "修饰符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_192438_95660" + ] + } + } + } + } + }, + { + "Java 9改进的接口": { + "children": [ + { + "接口的概念": { + "data": { + "uuid": "java-6-55", + "seg": [ + [ + [ + "接口", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 9中接口的定义": { + "data": { + "uuid": "java-6-56", + "seg": [ + [ + [ + "java", + "接口", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口的继承": { + "data": { + "uuid": "java-6-57", + "seg": [ + [ + [ + "接口", + "继承" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_245473_235925", + "13_7457177_53441291", + "13_201279_123570", + "13_243567_232140" + ] + } + } + } + } + }, + { + "面向接口编程": { + "data": { + "uuid": "java-6-58", + "seg": [ + [ + [ + "面向", + "接口", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-16", + "seg": [ + [ + [ + "java", + "改进", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 11增强的Lambda表达式": { + "children": [ + { + "在Lambda表达式中使用var": { + "data": { + "uuid": "java-6-59", + "seg": [ + [ + [ + "lambda", + "表达式", + "var" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Lambda表达式调用Arrays的类方法": { + "data": { + "uuid": "java-6-60", + "seg": [ + [ + [ + "lambda", + "表达式", + "调用", + "arrays", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-17", + "seg": [ + [ + [ + "java", + "增强", + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "枚举类": { + "children": [ + { + "手动实现枚举类": { + "data": { + "uuid": "java-6-61", + "seg": [ + [ + [ + "手动", + "枚举", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "枚举类入门": { + "data": { + "uuid": "java-6-62", + "seg": [ + [ + [ + "枚举", + "类", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现接口的枚举类": { + "data": { + "uuid": "java-6-63", + "seg": [ + [ + [ + "接口", + "枚举", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_978351_1139543", + "13_1099890_1314864", + "13_350096_358348" + ] + } + } + } + } + }, + { + "包含抽象方法的枚举类": { + "data": { + "uuid": "java-6-64", + "seg": [ + [ + [ + "包含", + "抽象", + "方法", + "枚举", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-18", + "seg": [ + [ + [ + "枚举", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修饰符的适用范围": { + "data": { + "uuid": "java-5-19", + "seg": [ + [ + [ + "修饰符", + "适用范围" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多版本JAR包": { + "children": [ + { + "jar命令详解": { + "data": { + "uuid": "java-6-65", + "seg": [ + [ + [ + "jar", + "命令", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_717973_711482", + "13_743148_786843", + "13_182737_68911", + "13_211121_150722", + "13_699581_822481", + "13_1372048_4153928", + "13_745838_794360", + "13_688355_554009", + "13_7442603_53419541", + "13_751779_805553" + ] + } + } + } + } + }, + { + "创建可执行的JAR包": { + "data": { + "uuid": "java-6-66", + "seg": [ + [ + [ + "创建", + "执行", + "jar", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7428718_53394923", + "13_385063_421890", + "13_7444397_53422855", + "13_365759_389327" + ] + } + } + } + } + }, + { + "关于JAR包的技巧": { + "data": { + "uuid": "java-6-67", + "seg": [ + [ + [ + "jar", + "包", + "技巧" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_258047_265388", + "13_258049_265390", + "13_26342_7164", + "13_362936_382638", + "13_516180_438776", + "13_676976_517579", + "13_684201_541669", + "13_168121_43134", + "13_699393_587396", + "13_661286_476444" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-20", + "seg": [ + [ + [ + "版本", + "jar", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-7", + "seg": [ + [ + [ + "面向对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "健壮性": { + "data": { + "uuid": "java-4-8", + "seg": [ + [ + [ + "健壮性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多线程": { + "data": { + "uuid": "java-4-9", + "seg": [ + [ + [ + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "体系结构中立": { + "data": { + "uuid": "java-4-10", + "seg": [ + [ + [ + "体系结构", + "中立" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解释执行和高性能": { + "data": { + "uuid": "java-4-11", + "seg": [ + [ + [ + "执行" + ], + [ + "高性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式": { + "data": { + "uuid": "java-4-12", + "seg": [ + [ + [ + "分布式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_507688_438157" + ] + } + } + } + } + }, + { + "动态性": { + "data": { + "uuid": "java-4-13", + "seg": [ + [ + [ + "动态性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-5", + "seg": [ + [ + [ + "java", + "关键", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的演变历程": { + "data": { + "uuid": "java-3-6", + "seg": [ + [ + [ + "java", + "演变", + "历程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java SE 8": { + "data": { + "uuid": "java-3-7", + "seg": [ + [ + [ + "java", + "se" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367769_393774", + "13_239256_222233", + "13_388116_427605", + "13_246115_237271" + ] + } + } + } + } + }, + { + "文化革新": { + "data": { + "uuid": "java-3-8", + "seg": [ + [ + [ + "文化", + "革新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-0", + "seg": [ + [ + [ + "java", + "历史" + ], + [ + "演变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java综述": { + "children": [ + { + "面向对象编程": { + "children": [ + { + "两种范式": { + "data": { + "uuid": "java-4-14", + "seg": [ + [ + [ + "范式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抽象": { + "data": { + "uuid": "java-4-15", + "seg": [ + [ + [ + "抽象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OOP三原则": { + "data": { + "uuid": "java-4-16", + "seg": [ + [ + [ + "oop", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象基础": { + "children": [ + { + "模块": { + "data": { + "uuid": "java-5-21", + "seg": [ + [ + [ + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-17", + "seg": [ + [ + [ + "面向对象", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java核心类": { + "children": [ + { + "StringJoiner": { + "data": { + "uuid": "java-5-22", + "seg": [ + [ + [ + "stringjoiner" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包装类型": { + "data": { + "uuid": "java-5-23", + "seg": [ + [ + [ + "包装", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_189675_88984" + ] + } + } + } + } + }, + { + "记录类": { + "data": { + "uuid": "java-5-24", + "seg": [ + [ + [ + "记录", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-18", + "seg": [ + [ + [ + "java", + "核心", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-9", + "seg": [ + [ + [ + "面向对象编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_242160_229281" + ] + } + } + } + } + }, + { + "第一个简单程序": { + "children": [ + { + "输入程序": { + "data": { + "uuid": "java-4-19", + "seg": [ + [ + [ + "输入", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_655417_466070", + "13_7404384_53353167", + "13_751134_804601", + "13_350480_359164", + "13_7437465_53410388", + "13_7452868_53435231", + "13_7464798_53451372", + "13_250174_247028", + "13_189415_88208", + "13_241824_228433" + ] + } + } + } + } + }, + { + "编译程序": { + "data": { + "uuid": "java-4-20", + "seg": [ + [ + [ + "编译程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入分析第一个示例程序": { + "data": { + "uuid": "java-4-21", + "seg": [ + [ + [ + "深入分析", + "示例", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7427712_53393792" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-10", + "seg": [ + [ + [ + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7465109_53451853", + "13_7408455_53358590" + ] + } + } + } + } + }, + { + "第二个简短程序": { + "data": { + "uuid": "java-3-11", + "seg": [ + [ + [ + "简短", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "两种控制语句": { + "children": [ + { + "if语句": { + "data": { + "uuid": "java-4-22", + "seg": [ + [ + [ + "if语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1061430_1259246", + "13_180147_66009" + ] + } + } + } + } + }, + { + "for循环": { + "data": { + "uuid": "java-4-23", + "seg": [ + [ + [ + "for循环" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_653786_462930", + "13_1103782_1318093", + "13_698343_585296", + "13_363788_384621", + "13_838745_946979", + "13_176038_57439", + "13_7443813_53421121", + "13_227819_192612", + "13_374627_403645", + "13_7395564_53338164" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-12", + "seg": [ + [ + [ + "控制", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用代码块": { + "data": { + "uuid": "java-3-13", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java类库": { + "data": { + "uuid": "java-3-14", + "seg": [ + [ + [ + "java", + "类库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-1", + "seg": [ + [ + [ + "java", + "综述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据类型、变量和数组": { + "children": [ + { + "Java是强类型化的语言": { + "data": { + "uuid": "java-3-15", + "seg": [ + [ + [ + "java", + "强", + "类型化", + "语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本类型": { + "data": { + "uuid": "java-3-16", + "seg": [ + [ + [ + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "整型": { + "children": [ + { + "byte": { + "data": { + "uuid": "java-4-24", + "seg": [ + [ + [ + "byte" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_384356_420704", + "13_380913_414242", + "13_349519_357317", + "13_252225_251691", + "13_381015_414381", + "13_162354_33293", + "13_642605_442049", + "13_1101_1915", + "13_163136_39714", + "13_380143_412682" + ] + } + } + } + } + }, + { + "short": { + "data": { + "uuid": "java-4-25", + "seg": [ + [ + [ + "short" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_686010_546855" + ] + } + } + } + } + }, + { + "int": { + "data": { + "uuid": "java-4-26", + "seg": [ + [ + [ + "int" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_648965_454027", + "13_876762_1011626", + "13_7444810_53423372", + "13_7430279_53397348", + "13_7440247_53415307", + "13_1062044_1259901", + "13_676503_515839", + "13_168074_43334", + "13_685323_544795", + "13_225242_186094" + ] + } + } + } + } + }, + { + "long": { + "data": { + "uuid": "java-4-27", + "seg": [ + [ + [ + "long" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_233092_207241", + "13_233920_209966", + "13_651836_459462", + "13_771075_833372", + "13_7445614_53424317", + "13_7395750_53338623", + "13_646347_473574" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-17", + "seg": [ + [ + [ + "整型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "浮点型": { + "children": [ + { + "float": { + "data": { + "uuid": "java-4-28", + "seg": [ + [ + [ + "float" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "double": { + "data": { + "uuid": "java-4-29", + "seg": [ + [ + [ + "double" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_648431_452875", + "13_1102943_1317342", + "13_390798_432619", + "13_696977_581565", + "13_1065062_1264135", + "13_643136_443094" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-18", + "seg": [ + [ + [ + "浮点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符型": { + "data": { + "uuid": "java-3-19", + "seg": [ + [ + [ + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7399831_53347376" + ] + } + } + } + } + }, + { + "布尔型": { + "data": { + "uuid": "java-3-20", + "seg": [ + [ + [ + "布尔" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入分析字面值": { + "children": [ + { + "整型字面值": { + "data": { + "uuid": "java-4-30", + "seg": [ + [ + [ + "整型", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_771219_833611", + "13_7406501_53355981" + ] + } + } + } + } + }, + { + "浮点型字面值": { + "data": { + "uuid": "java-4-31", + "seg": [ + [ + [ + "浮点", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔型字面值": { + "data": { + "uuid": "java-4-32", + "seg": [ + [ + [ + "布尔", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符型字面值": { + "data": { + "uuid": "java-4-33", + "seg": [ + [ + [ + "字符", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串字面值": { + "data": { + "uuid": "java-4-34", + "seg": [ + [ + [ + "字符串", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-21", + "seg": [ + [ + [ + "深入分析", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量": { + "children": [ + { + "变量的声明": { + "data": { + "uuid": "java-4-35", + "seg": [ + [ + [ + "变量", + "声明" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_225165_185862" + ] + } + } + } + } + }, + { + "动态初始化": { + "data": { + "uuid": "java-4-36", + "seg": [ + [ + [ + "动态", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量的作用域和生存期": { + "data": { + "uuid": "java-4-37", + "seg": [ + [ + [ + "变量", + "作用域" + ], + [ + "生存期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-22", + "seg": [ + [ + [ + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型转换和强制类型转换": { + "children": [ + { + "Java的自动类型转换": { + "data": { + "uuid": "java-4-38", + "seg": [ + [ + [ + "java", + "自动", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "强制转换不兼容的类型": { + "data": { + "uuid": "java-4-39", + "seg": [ + [ + [ + "强制", + "转换", + "兼容", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_926503_1061349", + "13_212404_153704", + "13_366745_391588", + "13_373460_401567" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-23", + "seg": [ + [ + [ + "类型转换" + ], + [ + "强制", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_374559_403665" + ] + } + } + } + } + }, + { + "表达式中的自动类型提升": { + "data": { + "uuid": "java-3-24", + "seg": [ + [ + [ + "表达式", + "自动", + "类型", + "提升" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组": { + "children": [ + { + "一维数组": { + "data": { + "uuid": "java-4-40", + "seg": [ + [ + [ + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_375451_404953", + "13_344577_347885", + "13_7435306_53405818", + "13_869_1555", + "13_1098819_1313635", + "13_1105083_1319378", + "13_675003_506778", + "13_271503_294846", + "13_375181_404594", + "13_751224_804743" + ] + } + } + } + } + }, + { + "多维数组": { + "data": { + "uuid": "java-4-41", + "seg": [ + [ + [ + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "另一种数组声明语法": { + "data": { + "uuid": "java-4-42", + "seg": [ + [ + [ + "数组", + "声明", + "语法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239279_222266" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-25", + "seg": [ + [ + [ + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关于字符串的一些说明": { + "children": [ + { + "字符串的连接": { + "children": [ + { + "连接字符串": { + "data": { + "uuid": "java-5-25", + "seg": [ + [ + [ + "连接", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_241895_228578", + "13_7429521_53398311" + ] + } + } + } + } + }, + { + "连接其他数据类型": { + "data": { + "uuid": "java-5-26", + "seg": [ + [ + [ + "连接", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1094367_1304598", + "13_7442449_53419268", + "13_719962_714168", + "13_1092526_1300655", + "13_205314_135602", + "13_192854_96885", + "13_686409_548081", + "13_686244_547608", + "13_1092422_1300333", + "13_642738_442332" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-43", + "seg": [ + [ + [ + "字符串", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提取字符串信息": { + "children": [ + { + "获取字符串长度": { + "data": { + "uuid": "java-5-27", + "seg": [ + [ + [ + "获取", + "字符串", + "长度" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_243725_232519", + "13_7399329_53346410" + ] + } + } + } + } + }, + { + "获取指定位置的字符": { + "data": { + "uuid": "java-5-28", + "seg": [ + [ + [ + "获取", + "指定", + "位置", + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_770204_831670", + "13_345234_349248", + "13_697663_583608", + "13_689565_557939" + ] + } + } + } + } + }, + { + "获取子字符串索引位置": { + "data": { + "uuid": "java-5-29", + "seg": [ + [ + [ + "获取", + "子", + "字符串", + "索引", + "位置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_656723_468695" + ] + } + } + } + } + }, + { + "判断字符串首尾内容": { + "data": { + "uuid": "java-5-30", + "seg": [ + [ + [ + "判断", + "字符串", + "内容" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_507751_438340", + "13_4645863_29329021", + "13_746460_795992", + "13_348547_355326", + "13_211697_152417", + "13_7425707_53387361", + "13_7441938_53418477", + "13_701820_591966", + "13_7419911_53377786" + ] + } + } + } + } + }, + { + "获取字符数组": { + "data": { + "uuid": "java-5-31", + "seg": [ + [ + [ + "获取", + "字符", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7456285_53440111", + "13_3536_4452", + "13_247363_240747" + ] + } + } + } + } + }, + { + "判断子字符串是否存在": { + "data": { + "uuid": "java-5-32", + "seg": [ + [ + [ + "判断", + "子", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-44", + "seg": [ + [ + [ + "提取", + "字符串", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串的操作": { + "children": [ + { + "截取字符串": { + "data": { + "uuid": "java-5-33", + "seg": [ + [ + [ + "截取", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_742835_785784", + "13_742699_785402", + "13_380276_412969", + "13_646735_450612", + "13_784690_858029", + "13_349546_357747", + "13_667185_485914", + "13_240678_225394", + "13_188764_86279", + "13_683931_540876" + ] + } + } + } + } + }, + { + "字符串替换": { + "data": { + "uuid": "java-5-34", + "seg": [ + [ + [ + "字符串", + "替换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_375089_404427", + "13_756797_811939", + "13_7413087_53364950", + "13_1099428_1314609", + "13_30055_9261", + "13_742987_786246", + "13_720580_715488" + ] + } + } + } + } + }, + { + "字符串分割": { + "data": { + "uuid": "java-5-35", + "seg": [ + [ + [ + "字符串", + "分割" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_275427_303423", + "13_187379_81749", + "13_231203_201859", + "13_205308_135497", + "13_7411849_53362950", + "13_2897_4047", + "13_209508_147164", + "13_246852_239810", + "13_188600_86007", + "13_202236_126531" + ] + } + } + } + } + }, + { + "大小写转换": { + "data": { + "uuid": "java-5-36", + "seg": [ + [ + [ + "大小写", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "去除空白内容": { + "data": { + "uuid": "java-5-37", + "seg": [ + [ + [ + "去除", + "空白", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取子字符串": { + "data": { + "uuid": "java-5-38", + "seg": [ + [ + [ + "获取", + "子", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_659150_473122", + "13_746111_795072", + "13_657390_470035", + "13_680046_528926", + "13_705126_606542", + "13_666321_484425" + ] + } + } + } + } + }, + { + "去除空格": { + "data": { + "uuid": "java-5-39", + "seg": [ + [ + [ + "去除", + "空格" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_182598_68664", + "13_7396915_53341228", + "13_751874_805752" + ] + } + } + } + } + }, + { + "判断字符串的开始与结尾": { + "data": { + "uuid": "java-5-40", + "seg": [ + [ + [ + "判断", + "字符串" + ], + [ + "结尾" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_207202_140882", + "13_352409_363900", + "13_1100618_1315413", + "13_202987_129038", + "13_1055517_1252689", + "13_187409_81883", + "13_7417544_53372828", + "13_726150_732287", + "13_7433693_53403981", + "13_7395512_53338021" + ] + } + } + } + } + }, + { + "按字典顺序比较两个字符串": { + "data": { + "uuid": "java-5-41", + "seg": [ + [ + [ + "字典", + "顺序", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字母大小写转换": { + "data": { + "uuid": "java-5-42", + "seg": [ + [ + [ + "字母", + "大小写", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-45", + "seg": [ + [ + [ + "字符串", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可变字符串StringBuffer类": { + "data": { + "uuid": "java-4-46", + "seg": [ + [ + [ + "可变", + "字符串", + "stringbuffer", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不可变String": { + "data": { + "uuid": "java-4-47", + "seg": [ + [ + [ + "变", + "string" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重载\"+\"与StringBuilder": { + "data": { + "uuid": "java-4-48", + "seg": [ + [ + [ + "重载" + ], + [ + "stringbuilder" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_648152_452463" + ] + } + } + } + } + }, + { + "无意识的递归": { + "data": { + "uuid": "java-4-49", + "seg": [ + [ + [ + "无意识", + "递归" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "String上的操作": { + "data": { + "uuid": "java-4-50", + "seg": [ + [ + [ + "string", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化输出": { + "children": [ + { + "printf()": { + "data": { + "uuid": "java-5-43", + "seg": [ + [ + [ + "printf" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "System.out.format()": { + "data": { + "uuid": "java-5-44", + "seg": [ + [ + [ + "system", + "out", + "for", + "mat" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Formatter类": { + "data": { + "uuid": "java-5-45", + "seg": [ + [ + [ + "formatter", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化说明符": { + "data": { + "uuid": "java-5-46", + "seg": [ + [ + [ + "格式化", + "说明符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Formatter转换": { + "data": { + "uuid": "java-5-47", + "seg": [ + [ + [ + "formatter", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "String.format()": { + "data": { + "uuid": "java-5-48", + "seg": [ + [ + [ + "string", + "for", + "mat" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_213022_155144" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-51", + "seg": [ + [ + [ + "格式化", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "正则表达式": { + "children": [ + { + "基础": { + "data": { + "uuid": "java-5-49", + "seg": [ + [ + [ + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_380038_412479", + "13_218611_168495", + "13_240895_225987", + "13_717283_710457", + "13_249704_245880", + "13_7463237_53449059", + "13_7445932_53425337", + "13_271409_294494" + ] + } + } + } + } + }, + { + "创建正则表达式": { + "data": { + "uuid": "java-5-50", + "seg": [ + [ + [ + "创建", + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_645088_446304", + "13_747017_797667", + "13_3237854_21840563" + ] + } + } + } + } + }, + { + "限定符": { + "data": { + "uuid": "java-5-51", + "seg": [ + [ + [ + "限定符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pattern和Matcher": { + "data": { + "uuid": "java-5-52", + "seg": [ + [ + [ + "pattern" + ], + [ + "matcher" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1049098_1246651" + ] + } + } + } + } + }, + { + "split()": { + "data": { + "uuid": "java-5-53", + "seg": [ + [ + [ + "split" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_667132_485746", + "13_670445_493043", + "13_659768_473759", + "13_23082_6165", + "13_7431533_53399986", + "13_23029_6033", + "13_1057871_1254975", + "13_7417539_53372834", + "13_3535680_28201690", + "13_372389_399860" + ] + } + } + } + } + }, + { + "替换操作": { + "data": { + "uuid": "java-5-54", + "seg": [ + [ + [ + "替换", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "reset()": { + "data": { + "uuid": "java-5-55", + "seg": [ + [ + [ + "reset" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750301_803237" + ] + } + } + } + } + }, + { + "正则表达式与Java I/O": { + "data": { + "uuid": "java-5-56", + "seg": [ + [ + [ + "正则表达式" + ], + [ + "java", + "i", + "o" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-52", + "seg": [ + [ + [ + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扫描输入": { + "children": [ + { + "Scanner定界符": { + "data": { + "uuid": "java-5-57", + "seg": [ + [ + [ + "scanner", + "定界符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用正则表达式扫描": { + "data": { + "uuid": "java-5-58", + "seg": [ + [ + [ + "正则表达式", + "扫描" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-53", + "seg": [ + [ + [ + "扫描", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StringTokenizer": { + "data": { + "uuid": "java-4-54", + "seg": [ + [ + [ + "stringtokenizer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取字符串信息": { + "children": [ + { + "字符串查找": { + "data": { + "uuid": "java-5-59", + "seg": [ + [ + [ + "字符串", + "查找" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取指定索引位置的字符": { + "data": { + "uuid": "java-5-60", + "seg": [ + [ + [ + "获取", + "指定", + "索引", + "位置", + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_203159_129509", + "13_658133_471108", + "13_656564_468558", + "13_352957_364101", + "13_162760_35219", + "13_747316_798454", + "13_699653_587895", + "13_645077_446292", + "13_671324_495025", + "13_653714_462843" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-55", + "seg": [ + [ + [ + "获取", + "字符串", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化字符串": { + "children": [ + { + "常规类型格式化": { + "data": { + "uuid": "java-5-61", + "seg": [ + [ + [ + "常规", + "类型", + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-56", + "seg": [ + [ + [ + "格式化", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串生成器": { + "data": { + "uuid": "java-4-57", + "seg": [ + [ + [ + "字符串", + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "子串": { + "data": { + "uuid": "java-4-58", + "seg": [ + [ + [ + "子串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拼接": { + "data": { + "uuid": "java-4-59", + "seg": [ + [ + [ + "拼接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不可变字符串": { + "data": { + "uuid": "java-4-60", + "seg": [ + [ + [ + "变", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "检测字符串是否相等": { + "data": { + "uuid": "java-4-61", + "seg": [ + [ + [ + "检测", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_356995_373219", + "13_1521_2493" + ] + } + } + } + } + }, + { + "空串与Null串": { + "data": { + "uuid": "java-4-62", + "seg": [ + [ + [ + "空串" + ], + [ + "null", + "串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "码点与代码单元": { + "data": { + "uuid": "java-4-63", + "seg": [ + [ + [ + "码点" + ], + [ + "单元" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "String API": { + "data": { + "uuid": "java-4-64", + "seg": [ + [ + [ + "string", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "阅读联机API文档": { + "data": { + "uuid": "java-4-65", + "seg": [ + [ + [ + "阅读", + "联机", + "api", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_206803_139713", + "13_351585_361346" + ] + } + } + } + } + }, + { + "构建字符串": { + "data": { + "uuid": "java-4-66", + "seg": [ + [ + [ + "构建", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-26", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向C/C++程序员提供指针方面的说明": { + "data": { + "uuid": "java-3-27", + "seg": [ + [ + [ + "c", + "c++", + "程序员", + "提供", + "指针" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_206256_138110", + "13_11194_5319", + "13_7466092_53453235", + "13_650845_457767", + "13_7455491_53438635" + ] + } + } + } + } + }, + { + "数组的定义": { + "data": { + "uuid": "java-3-28", + "seg": [ + [ + [ + "数组", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7448369_53428525", + "13_207022_140617", + "13_4645084_29327227" + ] + } + } + } + } + }, + { + "数组的常见操作": { + "data": { + "uuid": "java-3-29", + "seg": [ + [ + [ + "数组", + "常见", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "整数类型": { + "data": { + "uuid": "java-3-30", + "seg": [ + [ + [ + "整数", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "浮点类型": { + "data": { + "uuid": "java-3-31", + "seg": [ + [ + [ + "浮点", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符类型": { + "data": { + "uuid": "java-3-32", + "seg": [ + [ + [ + "字符", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔类型": { + "data": { + "uuid": "java-3-33", + "seg": [ + [ + [ + "布尔", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组的概述": { + "data": { + "uuid": "java-3-34", + "seg": [ + [ + [ + "数组", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建一维数组": { + "data": { + "uuid": "java-3-35", + "seg": [ + [ + [ + "创建", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给一维数组赋值": { + "data": { + "uuid": "java-3-36", + "seg": [ + [ + [ + "数组", + "赋值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_714965_707064", + "13_7408369_53358540", + "13_161427_30956", + "13_380831_414034", + "13_7400526_53348486" + ] + } + } + } + } + }, + { + "获取数组长度": { + "data": { + "uuid": "java-3-37", + "seg": [ + [ + [ + "获取", + "数组", + "长度" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_823773_919513" + ] + } + } + } + } + }, + { + "一维数组的使用场景": { + "data": { + "uuid": "java-3-38", + "seg": [ + [ + [ + "数组", + "场景" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_201176_123275" + ] + } + } + } + } + }, + { + "不规则数组": { + "data": { + "uuid": "java-3-39", + "seg": [ + [ + [ + "不规则", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组的基本操作": { + "children": [ + { + "遍历数组": { + "data": { + "uuid": "java-4-67", + "seg": [ + [ + [ + "遍历", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7409613_53360064", + "13_1091491_1298965", + "13_717294_710497", + "13_348651_355557" + ] + } + } + } + } + }, + { + "填充和批量替换数组元素": { + "data": { + "uuid": "java-4-68", + "seg": [ + [ + [ + "填充" + ], + [ + "批量", + "替换", + "数组", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "填充替换数组元素": { + "data": { + "uuid": "java-4-69", + "seg": [ + [ + [ + "填充", + "替换", + "数组", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_952881_1096138", + "13_7419973_53377901", + "13_761224_818539", + "13_1096839_1309519" + ] + } + } + } + } + }, + { + "数组查询": { + "data": { + "uuid": "java-4-70", + "seg": [ + [ + [ + "数组", + "查询" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_647849_451637", + "13_7435744_53406824" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-40", + "seg": [ + [ + [ + "数组", + "基本操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组是第一级对象": { + "data": { + "uuid": "java-3-41", + "seg": [ + [ + [ + "数组", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回一个数组": { + "data": { + "uuid": "java-3-42", + "seg": [ + [ + [ + "返回", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1056698_1253767", + "13_501_937" + ] + } + } + } + } + }, + { + "创建测试数据": { + "children": [ + { + "Arrays.fill()": { + "data": { + "uuid": "java-4-71", + "seg": [ + [ + [ + "arrays", + "fill" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678406_522491" + ] + } + } + } + } + }, + { + "数据生成器(Generator)": { + "data": { + "uuid": "java-4-72", + "seg": [ + [ + [ + "数据", + "生成器", + "generator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从Generator中创建数组": { + "data": { + "uuid": "java-4-73", + "seg": [ + [ + [ + "generator", + "创建", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_687984_553013", + "13_737887_768630", + "13_243705_232442", + "13_7457151_53441240", + "13_1026301_1220151" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-43", + "seg": [ + [ + [ + "创建", + "测试数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Arrays实用功能": { + "children": [ + { + "复制数组": { + "data": { + "uuid": "java-4-74", + "seg": [ + [ + [ + "复制", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组元素的比较": { + "data": { + "uuid": "java-4-75", + "seg": [ + [ + [ + "数组", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7451774_53433230", + "13_669896_491865", + "13_7450576_53431255" + ] + } + } + } + } + }, + { + "数组排序": { + "data": { + "uuid": "java-4-76", + "seg": [ + [ + [ + "数组", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743843_788958", + "13_1081098_1286709", + "13_7454334_53437037", + "13_215200_160773" + ] + } + } + } + } + }, + { + "在已排序的数组中查找": { + "data": { + "uuid": "java-4-77", + "seg": [ + [ + [ + "排序", + "数组", + "查找" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1884_2969" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-44", + "seg": [ + [ + [ + "arrays", + "实用功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组排序算法": { + "children": [ + { + "冒泡排序": { + "data": { + "uuid": "java-4-78", + "seg": [ + [ + [ + "冒泡排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7445036_53423610", + "13_7428068_53393339" + ] + } + } + } + } + }, + { + "直接选择排序": { + "data": { + "uuid": "java-4-79", + "seg": [ + [ + [ + "选择", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222863_179907", + "13_353011_364251", + "13_204601_133636", + "13_253868_255562" + ] + } + } + } + } + }, + { + "反转排序": { + "data": { + "uuid": "java-4-80", + "seg": [ + [ + [ + "反转", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_717710_711099", + "13_198072_113185", + "13_7407268_53357964" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-45", + "seg": [ + [ + [ + "数组", + "排序", + "算法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数值中使用下画线分隔": { + "data": { + "uuid": "java-3-46", + "seg": [ + [ + [ + "数值", + "画线", + "分隔" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用var定义变量": { + "data": { + "uuid": "java-3-47", + "seg": [ + [ + [ + "var", + "定义", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存中的数组": { + "data": { + "uuid": "java-3-48", + "seg": [ + [ + [ + "内存", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7409616_53360113", + "13_364382_385862" + ] + } + } + } + } + }, + { + "基本类型数组的初始化": { + "data": { + "uuid": "java-3-49", + "seg": [ + [ + [ + "类型", + "数组", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引用类型数组的初始化": { + "data": { + "uuid": "java-3-50", + "seg": [ + [ + [ + "引用", + "类型", + "数组", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作数组的工具类:Arrays": { + "data": { + "uuid": "java-3-51", + "seg": [ + [ + [ + "操作", + "数组", + "工具", + "类" + ] + ], + [ + [ + "arrays" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组应用举例": { + "data": { + "uuid": "java-3-52", + "seg": [ + [ + [ + "数组", + "举例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "char类型": { + "data": { + "uuid": "java-3-53", + "seg": [ + [ + [ + "char", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_706372_622348", + "13_219377_170460", + "13_763311_821684", + "13_670331_492835", + "13_200213_120205", + "13_389651_430402", + "13_1094123_1304105", + "13_361300_379102", + "13_161066_29646", + "13_223559_181792" + ] + } + } + } + } + }, + { + "boolean类型": { + "data": { + "uuid": "java-3-54", + "seg": [ + [ + [ + "boolean", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明数组": { + "data": { + "uuid": "java-3-55", + "seg": [ + [ + [ + "声明", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问数组元素": { + "data": { + "uuid": "java-3-56", + "seg": [ + [ + [ + "访问", + "数组", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "for each循环": { + "data": { + "uuid": "java-3-57", + "seg": [ + [ + [ + "for", + "each", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组拷贝": { + "data": { + "uuid": "java-3-58", + "seg": [ + [ + [ + "数组", + "拷贝" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-2", + "seg": [ + [ + [ + "数据类型" + ], + [ + "变量" + ], + [ + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运算符": { + "children": [ + { + "算术运算符": { + "children": [ + { + "基本算术运算符": { + "data": { + "uuid": "java-4-81", + "seg": [ + [ + [ + "算术", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_710268_668279" + ] + } + } + } + } + }, + { + "求模运算符": { + "data": { + "uuid": "java-4-82", + "seg": [ + [ + [ + "模", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_190389_90828" + ] + } + } + } + } + }, + { + "算术与赋值复合运算符": { + "data": { + "uuid": "java-4-83", + "seg": [ + [ + [ + "算术" + ], + [ + "赋值", + "复合", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自增与自减运算符": { + "data": { + "uuid": "java-4-84", + "seg": [ + [ + [ + "增与", + "减", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-59", + "seg": [ + [ + [ + "算术", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_691656_564497" + ] + } + } + } + } + }, + { + "位运算符": { + "children": [ + { + "位逻辑运算符": { + "data": { + "uuid": "java-4-85", + "seg": [ + [ + [ + "位", + "逻辑", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "左移": { + "data": { + "uuid": "java-4-86", + "seg": [ + [ + [ + "左移" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "右移": { + "data": { + "uuid": "java-4-87", + "seg": [ + [ + [ + "右移" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无符号右移": { + "data": { + "uuid": "java-4-88", + "seg": [ + [ + [ + "符号", + "右移" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_349921_358017", + "13_7448282_53428417", + "13_7436239_53407794", + "13_164750_38739" + ] + } + } + } + } + }, + { + "位运算符与赋值的组合": { + "data": { + "uuid": "java-4-89", + "seg": [ + [ + [ + "位", + "运算符" + ], + [ + "赋值", + "组合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_704546_597959", + "13_669410_490805", + "13_7429968_53396928", + "13_648961_454045", + "13_7437402_53410201", + "13_1091461_1298891", + "13_168477_43670", + "13_7416458_53370543", + "13_675581_510248" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-60", + "seg": [ + [ + [ + "位", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关系运算符": { + "data": { + "uuid": "java-3-61", + "seg": [ + [ + [ + "关系", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔逻辑运算符": { + "data": { + "uuid": "java-3-62", + "seg": [ + [ + [ + "布尔", + "逻辑", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "赋值运算符": { + "data": { + "uuid": "java-3-63", + "seg": [ + [ + [ + "赋值", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“?”运算符": { + "data": { + "uuid": "java-3-64", + "seg": [ + [ + [ + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_676055_513343", + "13_1099947_1314897", + "13_977360_1135738", + "13_7440136_53415323" + ] + } + } + } + } + }, + { + "运算符的优先级": { + "data": { + "uuid": "java-3-65", + "seg": [ + [ + [ + "运算符", + "优先级" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_188761_86264" + ] + } + } + } + } + }, + { + "使用圆括号": { + "data": { + "uuid": "java-3-66", + "seg": [ + [ + [ + "圆括号" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自增和自减运算符": { + "data": { + "uuid": "java-3-67", + "seg": [ + [ + [ + "自增" + ], + [ + "自减", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扩展后的赋值运算符": { + "data": { + "uuid": "java-3-68", + "seg": [ + [ + [ + "扩展", + "赋值", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "三目运算符": { + "data": { + "uuid": "java-3-69", + "seg": [ + [ + [ + "三目", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_203423_130442", + "13_381344_414961", + "13_1098408_1312909" + ] + } + } + } + } + }, + { + "数值类型之间的转换": { + "data": { + "uuid": "java-3-70", + "seg": [ + [ + [ + "数值", + "类型", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关系和boolean运算符": { + "data": { + "uuid": "java-3-71", + "seg": [ + [ + [ + "关系" + ], + [ + "boolean", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "括号与运算符级别": { + "data": { + "uuid": "java-3-72", + "seg": [ + [ + [ + "括号" + ], + [ + "运算符", + "级别" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_243136_231287", + "13_356945_373115" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-3", + "seg": [ + [ + [ + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制语句": { + "children": [ + { + "Java的选择语句": { + "children": [ + { + "if语句": { + "data": { + "uuid": "java-4-90", + "seg": [ + [ + [ + "if语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "switch语句": { + "data": { + "uuid": "java-4-91", + "seg": [ + [ + [ + "switch", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7413036_53364753", + "13_7407694_53357732", + "13_244631_234186", + "13_7427490_53391946", + "13_683139_538913" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-73", + "seg": [ + [ + [ + "java", + "选择", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代语句": { + "children": [ + { + "while语句": { + "data": { + "uuid": "java-4-92", + "seg": [ + [ + [ + "while", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_358746_377422" + ] + } + } + } + } + }, + { + "do-while语句": { + "data": { + "uuid": "java-4-93", + "seg": [ + [ + [ + "do", + "while", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "for语句": { + "data": { + "uuid": "java-4-94", + "seg": [ + [ + [ + "for语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_179057_64122" + ] + } + } + } + } + }, + { + "for循环的for-each版本": { + "data": { + "uuid": "java-4-95", + "seg": [ + [ + [ + "for循环", + "for", + "each", + "版本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌套的循环": { + "data": { + "uuid": "java-4-96", + "seg": [ + [ + [ + "嵌套", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-74", + "seg": [ + [ + [ + "迭代", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "跳转语句": { + "children": [ + { + "使用break语句": { + "data": { + "uuid": "java-4-97", + "seg": [ + [ + [ + "break", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390074_431227", + "13_232860_206695" + ] + } + } + } + } + }, + { + "使用continue语句": { + "data": { + "uuid": "java-4-98", + "seg": [ + [ + [ + "continue", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "return语句": { + "data": { + "uuid": "java-4-99", + "seg": [ + [ + [ + "return", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1079919_1284858", + "13_7161605_51344510", + "13_231172_201750", + "13_227305_191233", + "13_237199_217048", + "13_656469_468129", + "13_233087_207221", + "13_237196_217039", + "13_181801_67388", + "13_7463530_53449457" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-75", + "seg": [ + [ + [ + "跳转", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1080170_1285375", + "13_355641_370147", + "13_660552_475142", + "13_672402_497933", + "13_7428642_53394572" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-4", + "seg": [ + [ + [ + "控制", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类": { + "children": [ + { + "类的基础知识": { + "children": [ + { + "类的一般形式": { + "data": { + "uuid": "java-4-100", + "seg": [ + [ + [ + "类", + "形式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7453775_53436474" + ] + } + } + } + } + }, + { + "一个简单的类": { + "data": { + "uuid": "java-4-101", + "seg": [ + [ + [ + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-76", + "seg": [ + [ + [ + "类", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明对象": { + "data": { + "uuid": "java-3-77", + "seg": [ + [ + [ + "声明", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为对象引用变量赋值": { + "data": { + "uuid": "java-3-78", + "seg": [ + [ + [ + "对象", + "引用", + "变量", + "赋值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法": { + "children": [ + { + "为Box类添加方法": { + "data": { + "uuid": "java-4-102", + "seg": [ + [ + [ + "box", + "类", + "添加", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3417_4364", + "13_8232_4517" + ] + } + } + } + } + }, + { + "返回值": { + "data": { + "uuid": "java-4-103", + "seg": [ + [ + [ + "返回值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_666124_484047", + "13_7457502_53441867" + ] + } + } + } + } + }, + { + "添加带参数的方法": { + "data": { + "uuid": "java-4-104", + "seg": [ + [ + [ + "添加", + "带", + "参数", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-79", + "seg": [ + [ + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造函数": { + "data": { + "uuid": "java-3-80", + "seg": [ + [ + [ + "构造函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_215751_162171" + ] + } + } + } + } + }, + { + "this关键字": { + "children": [ + { + "在构造器中调用构造器": { + "data": { + "uuid": "java-4-105", + "seg": [ + [ + [ + "构造", + "器", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "static的含义": { + "data": { + "uuid": "java-4-106", + "seg": [ + [ + [ + "static", + "含义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1103762_1318153", + "13_1056893_1253936" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-81", + "seg": [ + [ + [ + "this", + "关键字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_386727_425443", + "13_754834_809928", + "13_662490_478168" + ] + } + } + } + } + }, + { + "垃圾回收": { + "data": { + "uuid": "java-3-82", + "seg": [ + [ + [ + "垃圾", + "回收" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_235494_214403" + ] + } + } + } + } + }, + { + "finalize方法": { + "data": { + "uuid": "java-3-83", + "seg": [ + [ + [ + "finalize", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "堆栈类": { + "data": { + "uuid": "java-3-84", + "seg": [ + [ + [ + "堆栈", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745338_792979", + "13_671481_495364" + ] + } + } + } + } + }, + { + "基本成员默认值": { + "data": { + "uuid": "java-3-85", + "seg": [ + [ + [ + "成员", + "默认值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "成员变量": { + "data": { + "uuid": "java-3-86", + "seg": [ + [ + [ + "成员", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7417924_53373763", + "13_648914_453875" + ] + } + } + } + } + }, + { + "成员方法": { + "data": { + "uuid": "java-3-87", + "seg": [ + [ + [ + "成员", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1091337_1298692" + ] + } + } + } + } + }, + { + "权限修饰符": { + "data": { + "uuid": "java-3-88", + "seg": [ + [ + [ + "权限", + "修饰符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7428111_53393493" + ] + } + } + } + } + }, + { + "操作对象的Objects工具类": { + "data": { + "uuid": "java-3-89", + "seg": [ + [ + [ + "操作", + "对象", + "objects", + "工具", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7402195_53349823" + ] + } + } + } + } + }, + { + "ThreadLocalRandom与Random": { + "data": { + "uuid": "java-3-90", + "seg": [ + [ + [ + "threadlocalrandom" + ], + [ + "random" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BigDecimal类": { + "data": { + "uuid": "java-3-91", + "seg": [ + [ + [ + "bigdecimal", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-5", + "seg": [ + [ + [ + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1061543_1259400", + "13_368567_395006", + "13_1072258_1274547", + "13_7454876_53437618" + ] + } + } + } + } + }, + { + "方法和类的深入分析": { + "children": [ + { + "重载方法": { + "children": [ + { + "区分重载方法": { + "data": { + "uuid": "java-4-107", + "seg": [ + [ + [ + "区分", + "重载", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7464955_53451686", + "13_345717_350339", + "13_744573_790852", + "13_769516_830393", + "13_645035_446148", + "13_175937_57264", + "13_195969_106968" + ] + } + } + } + } + }, + { + "涉及基本类型的重载": { + "data": { + "uuid": "java-4-108", + "seg": [ + [ + [ + "涉及", + "类型", + "重载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "以返回值区分重载方法": { + "data": { + "uuid": "java-4-109", + "seg": [ + [ + [ + "返回值", + "区分", + "重载", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_387081_425903" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-92", + "seg": [ + [ + [ + "重载", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将对象用作参数": { + "data": { + "uuid": "java-3-93", + "seg": [ + [ + [ + "对象", + "用作", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数传递的深入分析": { + "data": { + "uuid": "java-3-94", + "seg": [ + [ + [ + "参数传递", + "深入分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回对象": { + "data": { + "uuid": "java-3-95", + "seg": [ + [ + [ + "返回", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "递归": { + "data": { + "uuid": "java-3-96", + "seg": [ + [ + [ + "递归" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_683165_538901", + "13_7424902_53386086", + "13_1088771_1295458", + "13_1058873_1256263" + ] + } + } + } + } + }, + { + "访问控制": { + "children": [ + { + "Java类包": { + "children": [ + { + "类名冲突": { + "data": { + "uuid": "java-5-62", + "seg": [ + [ + [ + "类名", + "冲突" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完整的类路径": { + "data": { + "uuid": "java-5-63", + "seg": [ + [ + [ + "类", + "路径" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_651363_458455", + "13_650621_457382", + "13_764872_823772" + ] + } + } + } + } + }, + { + "创建包": { + "data": { + "uuid": "java-5-64", + "seg": [ + [ + [ + "创建", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367561_393310" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-110", + "seg": [ + [ + [ + "java", + "类", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-97", + "seg": [ + [ + [ + "访问控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "理解static": { + "data": { + "uuid": "java-3-98", + "seg": [ + [ + [ + "理解", + "static" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_251556_250172" + ] + } + } + } + } + }, + { + "final介绍": { + "data": { + "uuid": "java-3-99", + "seg": [ + [ + [ + "final", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重新审视数组": { + "data": { + "uuid": "java-3-100", + "seg": [ + [ + [ + "审视", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌套类和内部类": { + "children": [ + { + "成员内部类": { + "data": { + "uuid": "java-4-111", + "seg": [ + [ + [ + "成员", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1035523_1241347" + ] + } + } + } + } + }, + { + "局部内部类": { + "data": { + "uuid": "java-4-112", + "seg": [ + [ + [ + "局部", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_224828_184902" + ] + } + } + } + } + }, + { + "静态内部类": { + "data": { + "uuid": "java-4-113", + "seg": [ + [ + [ + "静态", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_643648_443796" + ] + } + } + } + } + }, + { + "匿名内部类": { + "children": [ + { + "再访工厂方法": { + "data": { + "uuid": "java-5-65", + "seg": [ + [ + [ + "再访", + "工厂", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-114", + "seg": [ + [ + [ + "匿名", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_357419_374058", + "13_747096_797923", + "13_377910_408654", + "13_248739_243873", + "13_380273_412954", + "13_644486_445172", + "13_251259_250715" + ] + } + } + } + } + }, + { + "创建内部类": { + "data": { + "uuid": "java-4-115", + "seg": [ + [ + [ + "创建", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_742591_785114", + "13_364803_387088" + ] + } + } + } + } + }, + { + "链接到外部类": { + "data": { + "uuid": "java-4-116", + "seg": [ + [ + [ + "链接", + "部类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_187665_82679", + "13_245786_236690", + "13_718814_712670" + ] + } + } + } + } + }, + { + "使用.this与.new": { + "data": { + "uuid": "java-4-117", + "seg": [ + [ + [ + "this" + ], + [ + "new" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230634_200192", + "13_651905_459481", + "13_203850_131629", + "13_243200_231432", + "13_225720_187293", + "13_220682_173726", + "13_238716_220930", + "13_669021_489883", + "13_250392_247479", + "13_237220_217077" + ] + } + } + } + } + }, + { + "接口内部的类": { + "data": { + "uuid": "java-4-118", + "seg": [ + [ + [ + "接口", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7430197_53397234", + "13_250312_247297" + ] + } + } + } + } + }, + { + "从多层嵌套类中访问外部类的成员": { + "data": { + "uuid": "java-4-119", + "seg": [ + [ + [ + "嵌套", + "类", + "访问", + "部类", + "成员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内部类的继承": { + "data": { + "uuid": "java-4-120", + "seg": [ + [ + [ + "内部", + "类", + "继承" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_356399_372027", + "13_249046_244564" + ] + } + } + } + } + }, + { + "内部类可以被覆盖吗": { + "data": { + "uuid": "java-4-121", + "seg": [ + [ + [ + "内部", + "类", + "覆盖" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_386058_423931", + "13_366726_391505", + "13_680792_531808", + "13_3423189_22969905", + "13_232482_205494", + "13_256550_265431" + ] + } + } + } + } + }, + { + "内部类标识符": { + "data": { + "uuid": "java-4-122", + "seg": [ + [ + [ + "内部", + "类", + "标识符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用内部类访问对象状态": { + "data": { + "uuid": "java-4-123", + "seg": [ + [ + [ + "内部", + "类", + "访问", + "对象", + "状态" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_163752_37039", + "13_221607_176191" + ] + } + } + } + } + }, + { + "内部类的特殊语法规则": { + "data": { + "uuid": "java-4-124", + "seg": [ + [ + [ + "内部", + "类", + "语法", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内部类是否有用、必要和": { + "data": { + "uuid": "java-4-125", + "seg": [ + [ + [ + "内部", + "类", + "有用" + ], + [], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "由外部方法访问变量": { + "data": { + "uuid": "java-4-126", + "seg": [ + [ + [ + "外部", + "方法", + "访问", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_228649_195001" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-101", + "seg": [ + [ + [ + "嵌套", + "类" + ], + [ + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "String类介绍": { + "data": { + "uuid": "java-3-102", + "seg": [ + [ + [ + "string", + "类", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用命令行参数": { + "data": { + "uuid": "java-3-103", + "seg": [ + [ + [ + "命令行", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "varargs:可变长度参数": { + "children": [ + { + "重载varargs方法": { + "data": { + "uuid": "java-4-127", + "seg": [ + [ + [ + "重载", + "varargs", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "varargs方法与模糊性": { + "data": { + "uuid": "java-4-128", + "seg": [ + [ + [ + "varargs", + "方法" + ], + [ + "模糊性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-104", + "seg": [ + [ + [ + "varargs" + ] + ], + [ + [ + "可变", + "长度", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-6", + "seg": [ + [ + [ + "方法", + "和类", + "深入分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继承": { + "children": [ + { + "继承的基础知识": { + "children": [ + { + "成员访问与继承": { + "data": { + "uuid": "java-4-129", + "seg": [ + [ + [ + "成员", + "访问" + ], + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个更实际的例子": { + "data": { + "uuid": "java-4-130", + "seg": [ + [ + [ + "例子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "超类变量可以引用子类对象": { + "data": { + "uuid": "java-4-131", + "seg": [ + [ + [ + "超类", + "变量", + "引用", + "子类", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-105", + "seg": [ + [ + [ + "继承", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用super关键字": { + "children": [ + { + "使用super调用超类的构造函数": { + "data": { + "uuid": "java-4-132", + "seg": [ + [ + [ + "super", + "调用", + "超类", + "构造函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_192399_95675", + "13_682251_536255", + "13_1055549_1252729", + "13_213454_156307", + "13_1084665_1291008" + ] + } + } + } + } + }, + { + "super的另一种用法": { + "data": { + "uuid": "java-4-133", + "seg": [ + [ + [ + "super", + "用法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_742611_785172", + "13_382093_416344", + "13_365831_389408", + "13_1011433_1198875", + "13_1059152_1256451", + "13_225181_185948", + "13_649267_454670", + "13_229952_198672", + "13_234723_212087", + "13_714757_706765" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-106", + "seg": [ + [ + [ + "super", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建多级继承层次": { + "data": { + "uuid": "java-3-107", + "seg": [ + [ + [ + "创建", + "多级", + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造函数的调用时机": { + "data": { + "uuid": "java-3-108", + "seg": [ + [ + [ + "构造函数", + "调用", + "时机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法重写": { + "data": { + "uuid": "java-3-109", + "seg": [ + [ + [ + "方法", + "重写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "动态方法调度": { + "children": [ + { + "重写方法的目的": { + "data": { + "uuid": "java-4-134", + "seg": [ + [ + [ + "重写", + "方法", + "目的" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7460612_53445703" + ] + } + } + } + } + }, + { + "应用方法重写": { + "data": { + "uuid": "java-4-135", + "seg": [ + [ + [ + "方法", + "重写" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_191683_93600", + "13_231701_203235", + "13_346572_351943" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-110", + "seg": [ + [ + [ + "动态", + "方法", + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用抽象类": { + "children": [ + { + "抽象类的作用": { + "data": { + "uuid": "java-4-136", + "seg": [ + [ + [ + "抽象类", + "作用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_387628_426872", + "13_201294_123661", + "13_215841_162396", + "13_745176_792541", + "13_220675_173678", + "13_237482_217822", + "13_7445305_53423831", + "13_197155_110811", + "13_7423733_53383783", + "13_214886_159986" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-111", + "seg": [ + [ + [ + "抽象类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_228109_193500" + ] + } + } + } + } + }, + { + "在继承中使用final关键字": { + "children": [ + { + "使用final关键字阻止重写": { + "data": { + "uuid": "java-4-137", + "seg": [ + [ + [ + "final", + "关键字", + "阻止", + "重写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用final关键字阻止继承": { + "data": { + "uuid": "java-4-138", + "seg": [ + [ + [ + "final", + "关键字", + "阻止", + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-112", + "seg": [ + [ + [ + "继承", + "final", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Object类": { + "data": { + "uuid": "java-3-113", + "seg": [ + [ + [ + "object", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“是一个”(is-a)与“像是一个”(is-like-a)关系": { + "data": { + "uuid": "java-3-114", + "seg": [ + [ + [ + "is", + "a" + ], + [ + "像是", + "is", + "like", + "a", + "关系" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_856291_981343" + ] + } + } + } + } + }, + { + "Object:所有类的超类": { + "children": [ + { + "Object类型的变量": { + "data": { + "uuid": "java-4-139", + "seg": [ + [ + [ + "object", + "类型", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_382396_416989", + "13_225345_186297", + "13_252509_252384", + "13_1625_2615", + "13_649718_455654", + "13_7414504_53367334", + "13_7467405_53454966", + "13_719431_713482", + "13_659900_474241", + "13_364531_386466" + ] + } + } + } + } + }, + { + "hashCode方法": { + "data": { + "uuid": "java-4-140", + "seg": [ + [ + [ + "hashcode", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_362173_380804", + "13_749542_802107", + "13_648987_454574", + "13_369263_396267" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-115", + "seg": [ + [ + [ + "object" + ] + ], + [ + [ + "类", + "超类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_649001_454134" + ] + } + } + } + } + }, + { + "泛型数组列表": { + "children": [ + { + "声明数组列表": { + "data": { + "uuid": "java-4-141", + "seg": [ + [ + [ + "声明", + "数组", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问数组列表元素": { + "data": { + "uuid": "java-4-142", + "seg": [ + [ + [ + "访问", + "数组", + "列表", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型化与原始数组列表的": { + "data": { + "uuid": "java-4-143", + "seg": [ + [ + [ + "类型化" + ], + [ + "原始", + "数组", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-116", + "seg": [ + [ + [ + "泛型", + "数组", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数数量可变的方法": { + "data": { + "uuid": "java-3-117", + "seg": [ + [ + [ + "参数", + "数量", + "可变", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继承的设计技巧": { + "data": { + "uuid": "java-3-118", + "seg": [ + [ + [ + "继承", + "设计", + "技巧" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-7", + "seg": [ + [ + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包和接口": { + "children": [ + { + "包": { + "children": [ + { + "定义包": { + "data": { + "uuid": "java-4-144", + "seg": [ + [ + [ + "定义", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包查找与CLASSPATH": { + "data": { + "uuid": "java-4-145", + "seg": [ + [ + [ + "包", + "查找" + ], + [ + "classpath" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7400230_53348022" + ] + } + } + } + } + }, + { + "一个简短的包示例": { + "data": { + "uuid": "java-4-146", + "seg": [ + [ + [ + "简短", + "包", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码组织": { + "data": { + "uuid": "java-4-147", + "seg": [ + [ + [ + "组织" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建独一无二的包名": { + "data": { + "uuid": "java-4-148", + "seg": [ + [ + [ + "创建", + "包名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制工具库": { + "data": { + "uuid": "java-4-149", + "seg": [ + [ + [ + "定制", + "工具", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用import改变行为": { + "data": { + "uuid": "java-4-150", + "seg": [ + [ + [ + "import", + "改变" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_384025_420005", + "13_714325_706297", + "13_239138_222130", + "13_7462342_53447766", + "13_770061_831445", + "13_1060918_1258672", + "13_182462_68402" + ] + } + } + } + } + }, + { + "对使用包的忠告": { + "data": { + "uuid": "java-4-151", + "seg": [ + [ + [ + "包", + "忠告" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包名": { + "data": { + "uuid": "java-4-152", + "seg": [ + [ + [ + "包名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类的导入": { + "data": { + "uuid": "java-4-153", + "seg": [ + [ + [ + "类", + "导入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223629_181923", + "13_383474_418911", + "13_1094942_1305566", + "13_663873_480585", + "13_7465572_53452590" + ] + } + } + } + } + }, + { + "在包中增加类": { + "data": { + "uuid": "java-4-154", + "seg": [ + [ + [ + "包中", + "增加", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包访问": { + "data": { + "uuid": "java-4-155", + "seg": [ + [ + [ + "包", + "访问" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_980024_1140265", + "13_757688_813294", + "13_224327_183773", + "13_227594_191985", + "13_7461046_53446798", + "13_1099336_1314458", + "13_26025_7091", + "13_1060586_1258195" + ] + } + } + } + } + }, + { + "设置类路径": { + "data": { + "uuid": "java-4-156", + "seg": [ + [ + [ + "设置", + "类", + "路径" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750119_803060" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-119", + "seg": [ + [ + [ + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问保护": { + "data": { + "uuid": "java-3-120", + "seg": [ + [ + [ + "访问", + "保护" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入包": { + "data": { + "uuid": "java-3-121", + "seg": [ + [ + [ + "导入", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_701356_591112", + "13_157749_21001", + "13_645030_446149", + "13_718798_712714", + "13_193511_98905" + ] + } + } + } + } + }, + { + "接口": { + "children": [ + { + "定义接口": { + "data": { + "uuid": "java-4-157", + "seg": [ + [ + [ + "定义", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7452829_53435161", + "13_7462216_53447662", + "13_716297_708965", + "13_678932_524433", + "13_7423605_53383471", + "13_796547_884844" + ] + } + } + } + } + }, + { + "实现接口": { + "data": { + "uuid": "java-4-158", + "seg": [ + [ + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_240954_226067", + "13_4645165_29327450", + "13_7432357_53401464", + "13_245474_235927", + "13_217965_166859", + "13_163732_36954", + "13_7430900_53398727", + "13_7448205_53428257", + "13_7465655_53452692", + "13_171933_49821" + ] + } + } + } + } + }, + { + "嵌套接口": { + "data": { + "uuid": "java-4-159", + "seg": [ + [ + [ + "嵌套", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_27594_520687", + "13_648135_452471", + "13_7405724_53355102" + ] + } + } + } + } + }, + { + "应用接口": { + "data": { + "uuid": "java-4-160", + "seg": [ + [ + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口中的变量": { + "data": { + "uuid": "java-4-161", + "seg": [ + [ + [ + "接口", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口可以扩展": { + "data": { + "uuid": "java-4-162", + "seg": [ + [ + [ + "接口", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完全解耦": { + "data": { + "uuid": "java-4-163", + "seg": [ + [ + [ + "解", + "耦" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_384912_421770", + "13_7451401_53432654", + "13_7442263_53419078", + "13_380390_413310", + "13_176823_59554", + "13_769871_831058" + ] + } + } + } + } + }, + { + "Java中的“多重继承”": { + "data": { + "uuid": "java-4-164", + "seg": [ + [ + [ + "java", + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过继承来扩展接口": { + "children": [ + { + "组合接口时的名字冲突": { + "data": { + "uuid": "java-5-66", + "seg": [ + [ + [ + "组合", + "接口", + "名字", + "冲突" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7451372_53432601", + "13_775656_841109" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-165", + "seg": [ + [ + [ + "继承", + "扩展", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "适配接口": { + "data": { + "uuid": "java-4-166", + "seg": [ + [ + [ + "适配", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_772775_836222" + ] + } + } + } + } + }, + { + "接口中的域": { + "children": [ + { + "初始化接口中的域": { + "data": { + "uuid": "java-5-67", + "seg": [ + [ + [ + "初始化", + "接口", + "中的域" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_189445_88369", + "13_7452121_53433923", + "13_7415016_53368181", + "13_653668_462564", + "13_747262_798350", + "13_1077710_1282080", + "13_756947_812208", + "13_688752_555344", + "13_7465102_53451821", + "13_671023_494316" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-167", + "seg": [ + [ + [ + "接口", + "中的域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口的属性": { + "data": { + "uuid": "java-4-168", + "seg": [ + [ + [ + "接口", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "默认方法": { + "data": { + "uuid": "java-4-169", + "seg": [ + [ + [ + "默认", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解决默认方法冲突": { + "data": { + "uuid": "java-4-170", + "seg": [ + [ + [ + "默认", + "方法", + "冲突" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Comparator接口": { + "data": { + "uuid": "java-4-171", + "seg": [ + [ + [ + "comparator", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象克隆": { + "data": { + "uuid": "java-4-172", + "seg": [ + [ + [ + "对象", + "克隆" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-122", + "seg": [ + [ + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_242001_228749" + ] + } + } + } + } + }, + { + "默认接口方法": { + "children": [ + { + "默认方法的基础知识": { + "data": { + "uuid": "java-4-173", + "seg": [ + [ + [ + "默认", + "方法", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个更加实用的例子": { + "data": { + "uuid": "java-4-174", + "seg": [ + [ + [ + "实用", + "例子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-123", + "seg": [ + [ + [ + "默认", + "接口", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在接口中使用静态方法": { + "data": { + "uuid": "java-3-124", + "seg": [ + [ + [ + "接口", + "静态方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关于包和接口的最后说明": { + "data": { + "uuid": "java-3-125", + "seg": [ + [ + [ + "包和", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-8", + "seg": [ + [ + [ + "包和", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常处理": { + "children": [ + { + "异常处理的基础知识": { + "data": { + "uuid": "java-3-126", + "seg": [ + [ + [ + "异常", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常类型": { + "data": { + "uuid": "java-3-127", + "seg": [ + [ + [ + "异常", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_392898_436633" + ] + } + } + } + } + }, + { + "未捕获的异常": { + "children": [ + { + "try块": { + "data": { + "uuid": "java-4-175", + "seg": [ + [ + [ + "try", + "块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_387813_427161" + ] + } + } + } + } + }, + { + "异常处理程序": { + "children": [ + { + "错误": { + "data": { + "uuid": "java-5-68", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-176", + "seg": [ + [ + [ + "异常", + "处理程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7455998_53439330" + ] + } + } + } + } + }, + { + "栈轨迹": { + "data": { + "uuid": "java-4-177", + "seg": [ + [ + [ + "栈", + "轨迹" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重新抛出异常": { + "data": { + "uuid": "java-4-178", + "seg": [ + [ + [ + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390336_431982", + "13_704646_598121", + "13_632013_441137", + "13_1049102_1246557", + "13_178992_63917", + "13_202556_127688", + "13_390542_432184", + "13_6552956_46196169", + "13_7464109_53450456", + "13_671976_496415" + ] + } + } + } + } + }, + { + "异常链": { + "data": { + "uuid": "java-4-179", + "seg": [ + [ + [ + "异常", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "f?inally子句": { + "data": { + "uuid": "java-4-180", + "seg": [ + [ + [ + "f", + "inally", + "子句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "try-with-Resources语句": { + "data": { + "uuid": "java-4-181", + "seg": [ + [ + [ + "try", + "with", + "resources", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分析堆栈轨迹元素": { + "data": { + "uuid": "java-4-182", + "seg": [ + [ + [ + "分析", + "堆栈", + "轨迹", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-128", + "seg": [ + [ + [ + "捕获", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用try和catch": { + "data": { + "uuid": "java-3-129", + "seg": [ + [ + [ + "try" + ], + [ + "catch" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_981450_1143736" + ] + } + } + } + } + }, + { + "多条catch子句": { + "data": { + "uuid": "java-3-130", + "seg": [ + [ + [ + "catch", + "子句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌套的try语句": { + "data": { + "uuid": "java-3-131", + "seg": [ + [ + [ + "嵌套", + "try", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "throw": { + "data": { + "uuid": "java-3-132", + "seg": [ + [ + [ + "throw" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "throws": { + "data": { + "uuid": "java-3-133", + "seg": [ + [ + [ + "throws" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_364273_386352" + ] + } + } + } + } + }, + { + "finally": { + "data": { + "uuid": "java-3-134", + "seg": [ + [ + [ + "finally" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的内置异常": { + "data": { + "uuid": "java-3-135", + "seg": [ + [ + [ + "java", + "内置", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建自己的异常子类": { + "data": { + "uuid": "java-3-136", + "seg": [ + [ + [ + "创建", + "异常", + "子类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "链式异常": { + "data": { + "uuid": "java-3-137", + "seg": [ + [ + [ + "链式", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "3个近期添加的异常特性": { + "data": { + "uuid": "java-3-138", + "seg": [ + [ + [ + "添加", + "异常", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用异常": { + "data": { + "uuid": "java-3-139", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_170469_47048" + ] + } + } + } + } + }, + { + "throws关键字": { + "data": { + "uuid": "java-3-140", + "seg": [ + [ + [ + "throws", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "throw关键字": { + "data": { + "uuid": "java-3-141", + "seg": [ + [ + [ + "throw", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义异常": { + "data": { + "uuid": "java-3-142", + "seg": [ + [ + [ + "自定义", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常概述": { + "data": { + "uuid": "java-3-143", + "seg": [ + [ + [ + "异常", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "捕捉处理异常": { + "children": [ + { + "try-catch代码块": { + "data": { + "uuid": "java-4-183", + "seg": [ + [ + [ + "try", + "catch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-144", + "seg": [ + [ + [ + "捕捉", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在方法中抛出异常": { + "children": [ + { + "使用throws关键字抛出异常": { + "data": { + "uuid": "java-4-184", + "seg": [ + [ + [ + "throws", + "关键字", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239007_221669", + "13_7438445_53411798" + ] + } + } + } + } + }, + { + "使用throw关键字抛出异常": { + "data": { + "uuid": "java-4-185", + "seg": [ + [ + [ + "throw", + "关键字", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-145", + "seg": [ + [ + [ + "方法", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常参数": { + "data": { + "uuid": "java-3-146", + "seg": [ + [ + [ + "异常", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java常见异常": { + "data": { + "uuid": "java-3-147", + "seg": [ + [ + [ + "java", + "常见", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行时异常": { + "data": { + "uuid": "java-3-148", + "seg": [ + [ + [ + "运行", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_373739_402001", + "13_1065_1855" + ] + } + } + } + } + }, + { + "异常处理机制": { + "children": [ + { + "使用try...catch捕获异常": { + "data": { + "uuid": "java-4-186", + "seg": [ + [ + [ + "try", + "catch", + "捕获", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_646210_448476", + "13_391421_433776" + ] + } + } + } + } + }, + { + "异常类的继承体系": { + "data": { + "uuid": "java-4-187", + "seg": [ + [ + [ + "异常", + "类", + "继承", + "体系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问异常信息": { + "data": { + "uuid": "java-4-188", + "seg": [ + [ + [ + "访问", + "异常", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_766138_825249", + "13_690331_560110", + "13_745342_792986" + ] + } + } + } + } + }, + { + "使用finally回收资源": { + "data": { + "uuid": "java-4-189", + "seg": [ + [ + [ + "finally", + "回收", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常处理的嵌套": { + "data": { + "uuid": "java-4-190", + "seg": [ + [ + [ + "异常", + "嵌套" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7441407_53417535", + "13_225340_186350", + "13_379802_412058", + "13_7466262_53453461", + "13_1002607_1182966", + "13_7457307_53442256" + ] + } + } + } + } + }, + { + "Java 9增强的自动关闭资源的try语句": { + "data": { + "uuid": "java-4-191", + "seg": [ + [ + [ + "java", + "增强", + "自动", + "关闭", + "资源", + "try", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-149", + "seg": [ + [ + [ + "异常", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Checked异常和Runtime异常体系": { + "children": [ + { + "使用throws声明抛出异常": { + "data": { + "uuid": "java-4-192", + "seg": [ + [ + [ + "throws", + "声明", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法重写时声明抛出异常的限制": { + "data": { + "uuid": "java-4-193", + "seg": [ + [ + [ + "方法", + "重写", + "声明", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-150", + "seg": [ + [ + [ + "checked", + "异常" + ], + [ + "runtime", + "异常", + "体系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用throw抛出异常": { + "children": [ + { + "自定义异常类": { + "data": { + "uuid": "java-4-194", + "seg": [ + [ + [ + "自定义", + "异常", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457076_53441145", + "13_229619_197842", + "13_1061878_1259706", + "13_7455849_53439185" + ] + } + } + } + } + }, + { + "使用throw语句抛出异常": { + "data": { + "uuid": "java-4-195", + "seg": [ + [ + [ + "throw", + "语句", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_673558_501711", + "13_756849_812118", + "13_998993_1177644", + "13_217797_166498", + "13_364223_385656" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-151", + "seg": [ + [ + [ + "throw", + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的异常跟踪栈": { + "data": { + "uuid": "java-3-152", + "seg": [ + [ + [ + "java", + "异常", + "跟踪", + "栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常处理规则": { + "children": [ + { + "不要过度使用异常": { + "data": { + "uuid": "java-4-196", + "seg": [ + [ + [ + "过度", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "避免使用Catch All语句": { + "data": { + "uuid": "java-4-197", + "seg": [ + [ + [ + "catch", + "all", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7409601_53360068" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-153", + "seg": [ + [ + [ + "异常", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的异常": { + "data": { + "uuid": "java-3-154", + "seg": [ + [ + [ + "java", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NullPointerException": { + "data": { + "uuid": "java-3-155", + "seg": [ + [ + [ + "nullpointerexception" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7442430_53419235", + "13_223115_180673", + "13_3542_4384", + "13_223644_181973", + "13_372543_400065", + "13_671707_496044" + ] + } + } + } + } + }, + { + "使用断言": { + "data": { + "uuid": "java-3-156", + "seg": [ + [ + [ + "断言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JDK Logging": { + "data": { + "uuid": "java-3-157", + "seg": [ + [ + [ + "jdk", + "logging" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Commons Logging": { + "data": { + "uuid": "java-3-158", + "seg": [ + [ + [ + "commons", + "logging" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_755374_810810" + ] + } + } + } + } + }, + { + "使用Log4j": { + "data": { + "uuid": "java-3-159", + "seg": [ + [ + [ + "log4j" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7439052_53412598", + "13_349692_357624", + "13_7444629_53423144", + "13_7397035_53369452" + ] + } + } + } + } + }, + { + "使用SLF4J和Logback": { + "data": { + "uuid": "java-3-160", + "seg": [ + [ + [ + "slf4j" + ], + [ + "logback" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_663619_542295", + "13_693304_570611" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-9", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_366228_390412" + ] + } + } + } + } + }, + { + "多线程编程": { + "children": [ + { + "Java线程模型": { + "children": [ + { + "线程优先级": { + "data": { + "uuid": "java-4-198", + "seg": [ + [ + [ + "线程", + "优先级" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步": { + "data": { + "uuid": "java-4-199", + "seg": [ + [ + [ + "同步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "消息传递": { + "data": { + "uuid": "java-4-200", + "seg": [ + [ + [ + "消息传递" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Thread类和Runnable接口": { + "data": { + "uuid": "java-4-201", + "seg": [ + [ + [ + "thread", + "类" + ], + [ + "runnable", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-161", + "seg": [ + [ + [ + "java", + "线程", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "主线程": { + "data": { + "uuid": "java-3-162", + "seg": [ + [ + [ + "主线", + "程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建线程": { + "children": [ + { + "实现Runnable接口": { + "data": { + "uuid": "java-4-202", + "seg": [ + [ + [ + "runnable", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "扩展Thread类": { + "data": { + "uuid": "java-4-203", + "seg": [ + [ + [ + "扩展", + "thread", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "选择一种创建方式": { + "data": { + "uuid": "java-4-204", + "seg": [ + [ + [ + "选择", + "创建", + "方式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_209629_147607", + "13_9919_4548" + ] + } + } + } + } + }, + { + "Thread类实现多线程": { + "data": { + "uuid": "java-4-205", + "seg": [ + [ + [ + "thread", + "类", + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Runnable接口实现多线程": { + "data": { + "uuid": "java-4-206", + "seg": [ + [ + [ + "runnable", + "接口", + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Callable接口实现多线程": { + "data": { + "uuid": "java-4-207", + "seg": [ + [ + [ + "callable", + "接口", + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "三种实现多线程方式的对比分析": { + "data": { + "uuid": "java-4-208", + "seg": [ + [ + [ + "多线程", + "方式", + "分析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "后台线程": { + "data": { + "uuid": "java-4-209", + "seg": [ + [ + [ + "后台", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_220473_173173", + "13_386210_424256" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-163", + "seg": [ + [ + [ + "创建", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建多个线程": { + "data": { + "uuid": "java-3-164", + "seg": [ + [ + [ + "创建", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用isAlive和join方法": { + "data": { + "uuid": "java-3-165", + "seg": [ + [ + [ + "isalive" + ], + [ + "join", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程优先级": { + "data": { + "uuid": "java-3-166", + "seg": [ + [ + [ + "线程", + "优先级" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步": { + "children": [ + { + "使用同步方法": { + "data": { + "uuid": "java-4-210", + "seg": [ + [ + [ + "同步", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_261803_273953" + ] + } + } + } + } + }, + { + "synchronized语句": { + "data": { + "uuid": "java-4-211", + "seg": [ + [ + [ + "synchronized", + "语句" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "竞态条件的一个例子": { + "data": { + "uuid": "java-4-212", + "seg": [ + [ + [ + "竞态", + "条件", + "例子" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "竞态条件详解": { + "data": { + "uuid": "java-4-213", + "seg": [ + [ + [ + "竞态", + "条件", + "详解" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "锁对象": { + "data": { + "uuid": "java-4-214", + "seg": [ + [ + [ + "锁", + "对象" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_367700_393621", + "13_7407745_53358031" + ] + } + } + } + } + }, + { + "条件对象": { + "data": { + "uuid": "java-4-215", + "seg": [ + [ + [ + "条件", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "synchronized关键字": { + "data": { + "uuid": "java-4-216", + "seg": [ + [ + [ + "synchronized", + "关键字" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1097426_1310873", + "13_688048_552994", + "13_7399925_53347529", + "13_230141_199115", + "13_168762_44196", + "13_7403831_53352504" + ] + } + } + } + } + }, + { + "监视器概念": { + "data": { + "uuid": "java-4-217", + "seg": [ + [ + [ + "监视器", + "概念" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "volatile字段": { + "data": { + "uuid": "java-4-218", + "seg": [ + [ + [ + "volatile", + "字段" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_766955_826404" + ] + } + } + } + } + }, + { + "线程局部变量": { + "data": { + "uuid": "java-4-219", + "seg": [ + [ + [ + "线程", + "局部变量" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-167", + "seg": [ + [ + [ + "同步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程间通信": { + "data": { + "uuid": "java-3-168", + "seg": [ + [ + [ + "线程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "挂起、恢复与停止线程": { + "data": { + "uuid": "java-3-169", + "seg": [ + [ + [ + "挂" + ], + [ + "恢复" + ], + [ + "停止", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7439041_53412569" + ] + } + } + } + } + }, + { + "获取线程的状态": { + "data": { + "uuid": "java-3-170", + "seg": [ + [ + [ + "获取", + "线程", + "状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用多线程": { + "children": [ + { + "线程概述": { + "children": [ + { + "进程": { + "children": [ + { + "建立一个进程": { + "data": { + "uuid": "java-6-68", + "seg": [ + [ + [ + "建立", + "进程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_744116_789615", + "13_676951_517519", + "13_208476_144500", + "13_746095_795020", + "13_772922_836469", + "13_693860_572380", + "13_7440774_53416276", + "13_202437_127509", + "13_27111_7382" + ] + } + } + } + } + }, + { + "运行一个进程": { + "data": { + "uuid": "java-6-69", + "seg": [ + [ + [ + "运行", + "进程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7461055_53446158", + "13_7424018_53384437", + "13_1049126_1246552", + "13_7450530_53431746", + "13_780545_849913", + "13_7455804_53439128" + ] + } + } + } + } + }, + { + "进程句柄": { + "data": { + "uuid": "java-6-70", + "seg": [ + [ + [ + "进程", + "句柄" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-69", + "seg": [ + [ + [ + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程": { + "data": { + "uuid": "java-5-70", + "seg": [ + [ + [ + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_233275_207949", + "13_218206_167457", + "13_746633_796463", + "13_691619_564593", + "13_366550_391106", + "13_156640_18790", + "13_164123_37638" + ] + } + } + } + } + }, + { + "多线程的优势": { + "data": { + "uuid": "java-5-71", + "seg": [ + [ + [ + "多线程", + "优势" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-220", + "seg": [ + [ + [ + "线程", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程的生命周期及状态转换": { + "children": [ + { + "新建和就绪状态": { + "data": { + "uuid": "java-5-72", + "seg": [ + [ + [ + "新建" + ], + [ + "就绪", + "状态" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_699525_713259", + "13_744574_790854", + "13_240380_224660", + "13_7453943_53436602" + ] + } + } + } + } + }, + { + "运行和阻塞状态": { + "data": { + "uuid": "java-5-73", + "seg": [ + [ + [ + "运行" + ], + [ + "阻塞状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程死亡": { + "data": { + "uuid": "java-5-74", + "seg": [ + [ + [ + "线程", + "死亡" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-221", + "seg": [ + [ + [ + "线程", + "生命周期" + ], + [ + "状态", + "转换" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程的调度": { + "children": [ + { + "线程休眠": { + "data": { + "uuid": "java-5-75", + "seg": [ + [ + [ + "线程", + "休眠" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_29382_8727" + ] + } + } + } + } + }, + { + "线程让步": { + "data": { + "uuid": "java-5-76", + "seg": [ + [ + [ + "线程", + "让步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程插队": { + "data": { + "uuid": "java-5-77", + "seg": [ + [ + [ + "线程", + "插队" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-222", + "seg": [ + [ + [ + "线程", + "调度" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "多线程同步": { + "children": [ + { + "同步锁": { + "data": { + "uuid": "java-5-78", + "seg": [ + [ + [ + "同步", + "锁" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_374437_403296", + "13_4646704_29330497", + "13_697580_583540", + "13_202268_126812", + "13_227746_192399", + "13_687973_553439", + "13_678224_521877", + "13_745280_792836" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-223", + "seg": [ + [ + [ + "多线程", + "同步" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1062553_1260352", + "13_1103398_1317795", + "13_217204_165163" + ] + } + } + } + } + }, + { + "多线程通信": { + "data": { + "uuid": "java-4-224", + "seg": [ + [ + [ + "多线程", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程池": { + "children": [ + { + "Executor接口实现线程池管理": { + "data": { + "uuid": "java-5-79", + "seg": [ + [ + [ + "executor", + "接口", + "线程", + "池", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CompletableFuture类实现线程池管理": { + "data": { + "uuid": "java-5-80", + "seg": [ + [ + [ + "completablefuture", + "类", + "线程", + "池", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用线程池管理线程": { + "data": { + "uuid": "java-5-81", + "seg": [ + [ + [ + "线程", + "池", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用ForkJoinPool利用多CPU": { + "data": { + "uuid": "java-5-82", + "seg": [ + [ + [ + "forkjoinpool", + "利用", + "cpu" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_763206_821580", + "13_197839_112508", + "13_391126_433234", + "13_649233_454665", + "13_649743_455735", + "13_677121_518329", + "13_1051401_1248725", + "13_1063312_1261299" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-225", + "seg": [ + [ + [ + "线程", + "池" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程简介": { + "data": { + "uuid": "java-4-226", + "seg": [ + [ + [ + "线程", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "实现线程的两种方式": { + "children": [ + { + "继承Thread类": { + "data": { + "uuid": "java-5-83", + "seg": [ + [ + [ + "继承", + "thread", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_754307_809213" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-227", + "seg": [ + [ + [ + "线程", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作线程的方法": { + "children": [ + { + "线程的中断": { + "data": { + "uuid": "java-5-84", + "seg": [ + [ + [ + "线程", + "中断" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_232957_206899" + ] + } + } + } + } + }, + { + "线程的礼让": { + "data": { + "uuid": "java-5-85", + "seg": [ + [ + [ + "线程", + "礼让" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-228", + "seg": [ + [ + [ + "操作", + "线程", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程的同步": { + "children": [ + { + "线程同步机制": { + "data": { + "uuid": "java-5-86", + "seg": [ + [ + [ + "线程", + "同步", + "机制" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_643068_442850", + "13_392111_435122", + "13_245899_236915", + "13_1056053_1253290", + "13_240930_226047" + ] + } + } + } + } + }, + { + "释放同步监视器的锁定": { + "data": { + "uuid": "java-5-87", + "seg": [ + [ + [ + "释放", + "同步", + "监视器", + "锁定" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步锁(Lock)": { + "data": { + "uuid": "java-5-88", + "seg": [ + [ + [ + "同步", + "锁", + "lock" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-229", + "seg": [ + [ + [ + "线程", + "同步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "控制线程": { + "children": [ + { + "join线程": { + "data": { + "uuid": "java-5-89", + "seg": [ + [ + [ + "join", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_194600_102754" + ] + } + } + } + } + }, + { + "线程睡眠:sleep": { + "data": { + "uuid": "java-5-90", + "seg": [ + [ + [ + "线程", + "睡眠" + ] + ], + [ + [ + "sleep" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_365573_389005", + "13_377369_407932", + "13_223590_181832", + "13_226701_189636", + "13_665947_799732" + ] + } + } + } + } + }, + { + "改变线程优先级": { + "data": { + "uuid": "java-5-91", + "seg": [ + [ + [ + "改变", + "线程", + "优先级" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-230", + "seg": [ + [ + [ + "控制线", + "程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_222577_178993" + ] + } + } + } + } + }, + { + "线程通信": { + "children": [ + { + "传统的线程通信": { + "data": { + "uuid": "java-5-92", + "seg": [ + [ + [ + "传统", + "线程", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Condition控制线程通信": { + "data": { + "uuid": "java-5-93", + "seg": [ + [ + [ + "condition", + "控制线", + "程", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用阻塞队列(BlockingQueue)控制线程通信": { + "data": { + "uuid": "java-5-94", + "seg": [ + [ + [ + "阻塞", + "队列", + "blockingqueue", + "控制线", + "程", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-231", + "seg": [ + [ + [ + "线程", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程组和未处理的异常": { + "data": { + "uuid": "java-4-232", + "seg": [ + [ + [ + "线程", + "组" + ], + [ + "未处理", + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程相关类": { + "children": [ + { + "ThreadLocal类": { + "data": { + "uuid": "java-5-95", + "seg": [ + [ + [ + "threadlocal", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_771306_833761", + "13_1096862_1309566" + ] + } + } + } + } + }, + { + "包装线程不安全的集合": { + "data": { + "uuid": "java-5-96", + "seg": [ + [ + [ + "包装", + "线程", + "集合" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1576_2554" + ] + } + } + } + } + }, + { + "线程安全的集合类": { + "data": { + "uuid": "java-5-97", + "seg": [ + [ + [ + "线程", + "集合", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_230970_201189" + ] + } + } + } + } + }, + { + "Java 9新增的发布-订阅框架": { + "data": { + "uuid": "java-5-98", + "seg": [ + [ + [ + "java", + "新增", + "发布", + "订阅", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-233", + "seg": [ + [ + [ + "线程", + "相关", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-171", + "seg": [ + [ + [ + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-10", + "seg": [ + [ + [ + "多线程", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "枚举、自动装箱与注解(元数据)": { + "children": [ + { + "枚举": { + "children": [ + { + "枚举的基础知识": { + "data": { + "uuid": "java-4-234", + "seg": [ + [ + [ + "枚举", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_647045_450028" + ] + } + } + } + } + }, + { + "values和valueOf方法": { + "data": { + "uuid": "java-4-235", + "seg": [ + [ + [ + "values" + ], + [ + "valueof", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7461160_53446315" + ] + } + } + } + } + }, + { + "Java枚举是类类型": { + "data": { + "uuid": "java-4-236", + "seg": [ + [ + [ + "java", + "枚举", + "类", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "枚举继承自Enum类": { + "data": { + "uuid": "java-4-237", + "seg": [ + [ + [ + "枚举", + "继承", + "enum", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "另一个枚举示例": { + "data": { + "uuid": "java-4-238", + "seg": [ + [ + [ + "枚举", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-172", + "seg": [ + [ + [ + "枚举" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_377971_408765", + "13_238313_220055" + ] + } + } + } + } + }, + { + "类型封装器": { + "children": [ + { + "Character封装器": { + "data": { + "uuid": "java-4-239", + "seg": [ + [ + [ + "character", + "封装", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Boolean封装器": { + "data": { + "uuid": "java-4-240", + "seg": [ + [ + [ + "boolean", + "封装", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数值类型封装器": { + "data": { + "uuid": "java-4-241", + "seg": [ + [ + [ + "数值", + "类型", + "封装", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-173", + "seg": [ + [ + [ + "类型", + "封装", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动装箱": { + "children": [ + { + "自动装箱与方法": { + "data": { + "uuid": "java-4-242", + "seg": [ + [ + [ + "自动", + "装箱" + ], + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_768130_828040", + "13_659191_472764", + "13_181764_67305", + "13_804776_898980", + "13_7455887_53439222", + "13_7424826_53386015", + "13_1091052_1298336", + "13_1102314_1316761", + "13_653458_462158", + "13_756977_812222" + ] + } + } + } + } + }, + { + "表达式中发生的自动装箱/拆箱": { + "data": { + "uuid": "java-4-243", + "seg": [ + [ + [ + "表达式", + "发生", + "自动", + "装箱", + "拆箱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔型和字符型数值的自动装箱/拆箱": { + "data": { + "uuid": "java-4-244", + "seg": [ + [ + [ + "布尔" + ], + [ + "字符", + "数值", + "自动", + "装箱", + "拆箱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动装箱/拆箱有助于防止错误": { + "data": { + "uuid": "java-4-245", + "seg": [ + [ + [ + "自动", + "装箱", + "拆箱", + "有助于" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_681149_533007", + "13_252331_251997" + ] + } + } + } + } + }, + { + "一些警告": { + "data": { + "uuid": "java-4-246", + "seg": [ + [ + [ + "警告" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-174", + "seg": [ + [ + [ + "自动", + "装箱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解(元数据)": { + "children": [ + { + "注解的基础知识": { + "data": { + "uuid": "java-4-247", + "seg": [ + [ + [ + "注解", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指定保留策略": { + "data": { + "uuid": "java-4-248", + "seg": [ + [ + [ + "指定", + "保留", + "策略" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_774374_838333" + ] + } + } + } + } + }, + { + "在运行时使用反射获取注解": { + "data": { + "uuid": "java-4-249", + "seg": [ + [ + [ + "运行", + "反射", + "获取", + "注解" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_240884_225962" + ] + } + } + } + } + }, + { + "AnnotatedElement接口": { + "data": { + "uuid": "java-4-250", + "seg": [ + [ + [ + "annotatedelement", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用默认值": { + "data": { + "uuid": "java-4-251", + "seg": [ + [ + [ + "默认值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标记注解": { + "data": { + "uuid": "java-4-252", + "seg": [ + [ + [ + "标记", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单成员注解": { + "data": { + "uuid": "java-4-253", + "seg": [ + [ + [ + "单", + "成员", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置注解": { + "data": { + "uuid": "java-4-254", + "seg": [ + [ + [ + "内置", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-175", + "seg": [ + [ + [ + "注解", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型注解": { + "data": { + "uuid": "java-3-176", + "seg": [ + [ + [ + "类型", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重复注解": { + "data": { + "uuid": "java-3-177", + "seg": [ + [ + [ + "重复", + "注解" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_176788_59484", + "13_769969_831213" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-11", + "seg": [ + [ + [ + "枚举" + ], + [ + "自动", + "装箱" + ], + [ + "注解", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "I/O、applet以及其他主题": { + "children": [ + { + "I/O的基础知识": { + "children": [ + { + "流": { + "data": { + "uuid": "java-4-255", + "seg": [ + [ + [ + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "字节流和字符流": { + "children": [ + { + "字节流概述": { + "data": { + "uuid": "java-5-99", + "seg": [ + [ + [ + "字节", + "流", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1091135_1298414" + ] + } + } + } + } + }, + { + "字节流读写文件": { + "data": { + "uuid": "java-5-100", + "seg": [ + [ + [ + "字节", + "流", + "读写", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_350679_359456" + ] + } + } + } + } + }, + { + "文件的拷贝": { + "data": { + "uuid": "java-5-101", + "seg": [ + [ + [ + "文件", + "拷贝" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7439947_53414791" + ] + } + } + } + } + }, + { + "字节流的缓冲区": { + "data": { + "uuid": "java-5-102", + "seg": [ + [ + [ + "字节", + "流", + "缓冲区" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_232800_206397", + "13_184131_72941" + ] + } + } + } + } + }, + { + "字节缓冲流": { + "data": { + "uuid": "java-5-103", + "seg": [ + [ + [ + "字节", + "缓冲", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1084153_1290934" + ] + } + } + } + } + }, + { + "字符流概述": { + "data": { + "uuid": "java-5-104", + "seg": [ + [ + [ + "字符", + "流", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_646943_450558", + "13_225496_186724", + "13_1069477_1270893", + "13_1103933_1318253", + "13_7448639_53428794", + "13_220956_174466", + "13_185598_76913" + ] + } + } + } + } + }, + { + "字符流操作文件": { + "data": { + "uuid": "java-5-105", + "seg": [ + [ + [ + "字符", + "流", + "操作", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_366312_391135", + "13_1064320_1262521", + "13_1037656_1241356" + ] + } + } + } + } + }, + { + "转换流": { + "data": { + "uuid": "java-5-106", + "seg": [ + [ + [ + "转换", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_235555_214614", + "13_743964_789286", + "13_744503_790641", + "13_676068_513489", + "13_339679_338707", + "13_1051956_1249424", + "13_7404837_53353879" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-256", + "seg": [ + [ + [ + "字节", + "流" + ], + [ + "字符", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "预定义流": { + "data": { + "uuid": "java-4-257", + "seg": [ + [ + [ + "预定", + "义流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-178", + "seg": [ + [ + [ + "i", + "o", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取控制台输入": { + "children": [ + { + "读取字符": { + "data": { + "uuid": "java-4-258", + "seg": [ + [ + [ + "读取", + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_177282_60119", + "13_383160_418404", + "13_201911_125729", + "13_1052300_1249795", + "13_188898_86708", + "13_716610_712418", + "13_7396030_53339223", + "13_7403820_53352505", + "13_163261_36027", + "13_757622_813209" + ] + } + } + } + } + }, + { + "读取字符串": { + "data": { + "uuid": "java-4-259", + "seg": [ + [ + [ + "读取", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-179", + "seg": [ + [ + [ + "读取", + "控制台", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向控制台写输出": { + "data": { + "uuid": "java-3-180", + "seg": [ + [ + [ + "控制台", + "写", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PrintWriter类": { + "data": { + "uuid": "java-3-181", + "seg": [ + [ + [ + "printwriter", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读/写文件": { + "data": { + "uuid": "java-3-182", + "seg": [ + [ + [ + "读", + "写", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_180422_66276" + ] + } + } + } + } + }, + { + "自动关闭文件": { + "data": { + "uuid": "java-3-183", + "seg": [ + [ + [ + "自动", + "关闭", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "applet的基础知识": { + "data": { + "uuid": "java-3-184", + "seg": [ + [ + [ + "applet", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "transient和volatile修饰符": { + "data": { + "uuid": "java-3-185", + "seg": [ + [ + [ + "transient" + ], + [ + "volatile", + "修饰符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用instanceof运算符": { + "data": { + "uuid": "java-3-186", + "seg": [ + [ + [ + "instanceof", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "strictfp": { + "data": { + "uuid": "java-3-187", + "seg": [ + [ + [ + "strictfp" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "本地方法": { + "data": { + "uuid": "java-3-188", + "seg": [ + [ + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7429328_53396070", + "13_241339_227199", + "13_757397_812993" + ] + } + } + } + } + }, + { + "使用assert": { + "data": { + "uuid": "java-3-189", + "seg": [ + [ + [ + "assert" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "静态导入": { + "data": { + "uuid": "java-3-190", + "seg": [ + [ + [ + "静态", + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过this调用重载的构造函数": { + "data": { + "uuid": "java-3-191", + "seg": [ + [ + [ + "this", + "调用", + "重载", + "构造函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_654256_463754" + ] + } + } + } + } + }, + { + "紧凑API配置文件": { + "data": { + "uuid": "java-3-192", + "seg": [ + [ + [ + "紧凑", + "api", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "转换数据": { + "data": { + "uuid": "java-3-193", + "seg": [ + [ + [ + "转换", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_671346_495113" + ] + } + } + } + } + }, + { + "获取基本类型": { + "data": { + "uuid": "java-3-194", + "seg": [ + [ + [ + "获取", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "视图缓冲器": { + "data": { + "uuid": "java-3-195", + "seg": [ + [ + [ + "视图", + "缓冲器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用缓冲器操纵数据": { + "data": { + "uuid": "java-3-196", + "seg": [ + [ + [ + "缓冲器", + "操纵", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓冲器的细节": { + "data": { + "uuid": "java-3-197", + "seg": [ + [ + [ + "缓冲器", + "细节" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存映射文件": { + "data": { + "uuid": "java-3-198", + "seg": [ + [ + [ + "内存", + "映射", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件加锁": { + "data": { + "uuid": "java-3-199", + "seg": [ + [ + [ + "文件", + "加锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-12", + "seg": [ + [ + [ + "i", + "o" + ], + [ + "applet" + ], + [ + "主题" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型": { + "children": [ + { + "什么是泛型": { + "data": { + "uuid": "java-3-200", + "seg": [ + [ + [ + "泛" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_377977_408779" + ] + } + } + } + } + }, + { + "一个简单的泛型示例": { + "children": [ + { + "泛型只使用引用类型": { + "data": { + "uuid": "java-4-260", + "seg": [ + [ + [ + "泛", + "引用", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于不同类型参数的泛型类型是不同的": { + "data": { + "uuid": "java-4-261", + "seg": [ + [ + [ + "类型", + "参数", + "泛型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_220963_174329", + "13_744114_789605", + "13_644515_445335" + ] + } + } + } + } + }, + { + "泛型提升类型安全性的原理": { + "data": { + "uuid": "java-4-262", + "seg": [ + [ + [ + "泛型", + "提升", + "类型", + "安全性", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-201", + "seg": [ + [ + [ + "泛型", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "带两个类型参数的泛型类": { + "data": { + "uuid": "java-3-202", + "seg": [ + [ + [ + "带", + "类型", + "参数", + "泛型", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型类的一般形式": { + "data": { + "uuid": "java-3-203", + "seg": [ + [ + [ + "泛", + "型类", + "形式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_203161_129517", + "13_357182_373600" + ] + } + } + } + } + }, + { + "有界类型": { + "data": { + "uuid": "java-3-204", + "seg": [ + [ + [ + "界", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用通配符参数": { + "data": { + "uuid": "java-3-205", + "seg": [ + [ + [ + "通配符", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建泛型方法": { + "data": { + "uuid": "java-3-206", + "seg": [ + [ + [ + "创建", + "泛型", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型接口": { + "data": { + "uuid": "java-3-207", + "seg": [ + [ + [ + "泛型", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7453888_53436554" + ] + } + } + } + } + }, + { + "原始类型与遗留代码": { + "data": { + "uuid": "java-3-208", + "seg": [ + [ + [ + "原始", + "类型" + ], + [ + "遗留" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型类层次": { + "children": [ + { + "使用泛型超类": { + "data": { + "uuid": "java-4-263", + "seg": [ + [ + [ + "泛", + "超类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型子类": { + "data": { + "uuid": "java-4-264", + "seg": [ + [ + [ + "泛型", + "子类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_769938_831172", + "13_229225_196595", + "13_226816_190021" + ] + } + } + } + } + }, + { + "泛型层次中的运行时类型比较": { + "data": { + "uuid": "java-4-265", + "seg": [ + [ + [ + "泛型", + "运行", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_362237_381013" + ] + } + } + } + } + }, + { + "强制转换": { + "data": { + "uuid": "java-4-266", + "seg": [ + [ + [ + "强制", + "转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_260234_270329" + ] + } + } + } + } + }, + { + "重写泛型类的方法": { + "data": { + "uuid": "java-4-267", + "seg": [ + [ + [ + "重写", + "泛", + "型类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-209", + "seg": [ + [ + [ + "泛型", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_226800_189948" + ] + } + } + } + } + }, + { + "泛型的类型推断": { + "data": { + "uuid": "java-3-210", + "seg": [ + [ + [ + "泛型", + "类型", + "推断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "擦除": { + "data": { + "uuid": "java-3-211", + "seg": [ + [ + [ + "擦除" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模糊性错误": { + "data": { + "uuid": "java-3-212", + "seg": [ + [ + [ + "模糊性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用泛型的一些限制": { + "children": [ + { + "对静态成员的一些限制": { + "data": { + "uuid": "java-4-268", + "seg": [ + [ + [ + "静态", + "成员" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_211298_151102" + ] + } + } + } + } + }, + { + "对泛型数组的一些限制": { + "data": { + "uuid": "java-4-269", + "seg": [ + [ + [ + "对泛", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对泛型异常的限制": { + "data": { + "uuid": "java-4-270", + "seg": [ + [ + [ + "对泛", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_195971_106723" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-213", + "seg": [ + [ + [ + "泛型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_164399_38128", + "13_378879_410498", + "13_650142_456578", + "13_390666_432406", + "13_167201_40983", + "13_954890_1107093", + "13_7395577_53338255" + ] + } + } + } + } + }, + { + "定义泛型类": { + "data": { + "uuid": "java-3-214", + "seg": [ + [ + [ + "定义", + "泛型", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型的用法": { + "data": { + "uuid": "java-3-215", + "seg": [ + [ + [ + "泛型", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个元组类库": { + "data": { + "uuid": "java-3-216", + "seg": [ + [ + [ + "元组", + "类库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个栈类": { + "data": { + "uuid": "java-3-217", + "seg": [ + [ + [ + "栈类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RandomList": { + "data": { + "uuid": "java-3-218", + "seg": [ + [ + [ + "randomlist" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型方法": { + "children": [ + { + "利用类型参数推断": { + "data": { + "uuid": "java-4-271", + "seg": [ + [ + [ + "利用", + "类型", + "参数", + "推断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可变参数与泛型方法": { + "data": { + "uuid": "java-4-272", + "seg": [ + [ + [ + "可变", + "参数" + ], + [ + "泛型", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_240381_224664", + "13_644199_444672", + "13_1089071_1295489" + ] + } + } + } + } + }, + { + "用于Generator的泛型方法": { + "data": { + "uuid": "java-4-273", + "seg": [ + [ + [ + "用于", + "generator", + "泛型", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个通用的Generator": { + "data": { + "uuid": "java-4-274", + "seg": [ + [ + [ + "通用", + "generator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简化元组的使用": { + "data": { + "uuid": "java-4-275", + "seg": [ + [ + [ + "简化", + "元组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个Set实用工具": { + "data": { + "uuid": "java-4-276", + "seg": [ + [ + [ + "set", + "实用工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义泛型方法": { + "data": { + "uuid": "java-4-277", + "seg": [ + [ + [ + "定义", + "泛型", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678424_522536" + ] + } + } + } + } + }, + { + "“菱形”语法与泛型构造器": { + "data": { + "uuid": "java-4-278", + "seg": [ + [ + [ + "菱形", + "语法" + ], + [ + "泛型", + "构造", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型推断": { + "data": { + "uuid": "java-4-279", + "seg": [ + [ + [ + "类型", + "推断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-219", + "seg": [ + [ + [ + "泛型", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建复杂模型": { + "data": { + "uuid": "java-3-220", + "seg": [ + [ + [ + "构建", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "擦除的神秘之处": { + "children": [ + { + "C++的方式": { + "data": { + "uuid": "java-4-280", + "seg": [ + [ + [ + "c++", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迁移的可兼容性": { + "data": { + "uuid": "java-4-281", + "seg": [ + [ + [ + "迁移", + "兼容性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_262398_276593" + ] + } + } + } + } + }, + { + "边界处的动作": { + "data": { + "uuid": "java-4-282", + "seg": [ + [ + [ + "边界", + "处", + "动作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_242094_229175" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-221", + "seg": [ + [ + [ + "擦除", + "处" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "擦除的补偿": { + "children": [ + { + "泛型数组": { + "data": { + "uuid": "java-4-283", + "seg": [ + [ + [ + "泛型", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1105339_1328254", + "13_1094383_1304629", + "13_155923_17165", + "13_229212_196558" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-222", + "seg": [ + [ + [ + "擦除", + "补偿" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "边界": { + "data": { + "uuid": "java-3-223", + "seg": [ + [ + [ + "边界" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通配符": { + "children": [ + { + "编译器有多聪明?": { + "data": { + "uuid": "java-4-284", + "seg": [ + [ + [ + "编译器", + "聪明" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_158829_23560" + ] + } + } + } + } + }, + { + "抗变": { + "data": { + "uuid": "java-4-285", + "seg": [ + [ + [ + "抗变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无界通配符": { + "data": { + "uuid": "java-4-286", + "seg": [ + [ + [ + "界", + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "捕获转换": { + "data": { + "uuid": "java-4-287", + "seg": [ + [ + [ + "捕获", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-224", + "seg": [ + [ + [ + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自限定的类型": { + "children": [ + { + "离奇的循环泛型": { + "data": { + "uuid": "java-4-288", + "seg": [ + [ + [ + "循环", + "泛型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自限定": { + "data": { + "uuid": "java-4-289", + "seg": [ + [ + [ + "限定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数协变": { + "data": { + "uuid": "java-4-290", + "seg": [ + [ + [ + "参数", + "协变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-225", + "seg": [ + [ + [ + "限定", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "动态类型安全": { + "data": { + "uuid": "java-3-226", + "seg": [ + [ + [ + "动态", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混用": { + "children": [ + { + "C++中的混用": { + "data": { + "uuid": "java-4-291", + "seg": [ + [ + [ + "c++", + "混用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与接口混用": { + "data": { + "uuid": "java-4-292", + "seg": [ + [ + [], + [ + "接口", + "混用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用装饰器模式": { + "data": { + "uuid": "java-4-293", + "seg": [ + [ + [ + "装饰", + "器", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与动态代理混用": { + "data": { + "uuid": "java-4-294", + "seg": [ + [ + [], + [ + "动态", + "代理", + "混用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-227", + "seg": [ + [ + [ + "混用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "潜在类型机制": { + "data": { + "uuid": "java-3-228", + "seg": [ + [ + [ + "潜在", + "类型", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缺乏潜在类型机制的补偿": { + "children": [ + { + "将一个方法应用于序列": { + "data": { + "uuid": "java-4-295", + "seg": [ + [ + [ + "方法", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "当你并未碰巧拥有正确的接口时": { + "data": { + "uuid": "java-4-296", + "seg": [ + [ + [ + "并未", + "拥有", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用适配器仿真潜在类型机制": { + "data": { + "uuid": "java-4-297", + "seg": [ + [ + [ + "适配器", + "仿真", + "潜在", + "类型", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-229", + "seg": [ + [ + [ + "缺乏", + "潜在", + "类型", + "机制", + "补偿" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将函数对象用作策略": { + "data": { + "uuid": "java-3-230", + "seg": [ + [ + [ + "函数", + "对象", + "用作", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型的常规用法": { + "data": { + "uuid": "java-3-231", + "seg": [ + [ + [ + "泛型", + "常规", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型的高级用法": { + "data": { + "uuid": "java-3-232", + "seg": [ + [ + [ + "泛型", + "高级", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型入门": { + "children": [ + { + "编译时不检查类型的异常": { + "data": { + "uuid": "java-4-298", + "seg": [ + [ + [ + "编译", + "检查", + "类型", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 9增强的“菱形”语法": { + "data": { + "uuid": "java-4-299", + "seg": [ + [ + [ + "java", + "增强", + "菱形", + "语法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7400426_53348332" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-233", + "seg": [ + [ + [ + "泛型", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从泛型类派生子类": { + "data": { + "uuid": "java-3-234", + "seg": [ + [ + [ + "泛型", + "类", + "派生", + "子类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型通配符": { + "children": [ + { + "使用类型通配符": { + "data": { + "uuid": "java-4-300", + "seg": [ + [ + [ + "类型", + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设定类型通配符的上限": { + "data": { + "uuid": "java-4-301", + "seg": [ + [ + [ + "设定", + "类型", + "通配符", + "上限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设定类型通配符的下限": { + "data": { + "uuid": "java-4-302", + "seg": [ + [ + [ + "设定", + "类型", + "通配符", + "下限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设定泛型形参的上限": { + "data": { + "uuid": "java-4-303", + "seg": [ + [ + [ + "设定", + "泛型", + "形参", + "上限" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_196231_108175" + ] + } + } + } + } + }, + { + "通配符概念": { + "data": { + "uuid": "java-4-304", + "seg": [ + [ + [ + "通配符", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通配符的超类型限定": { + "data": { + "uuid": "java-4-305", + "seg": [ + [ + [ + "通配符", + "超", + "类型", + "限定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无限定通配符": { + "data": { + "uuid": "java-4-306", + "seg": [ + [ + [ + "无限", + "定", + "通配符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7406641_53356186" + ] + } + } + } + } + }, + { + "通配符捕获": { + "data": { + "uuid": "java-4-307", + "seg": [ + [ + [ + "通配符", + "捕获" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-235", + "seg": [ + [ + [ + "类型", + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写泛型": { + "data": { + "uuid": "java-3-236", + "seg": [ + [ + [ + "编写", + "泛型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "擦拭法": { + "data": { + "uuid": "java-3-237", + "seg": [ + [ + [ + "擦拭法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "extends通配符": { + "data": { + "uuid": "java-3-238", + "seg": [ + [ + [ + "extends", + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "super通配符": { + "data": { + "uuid": "java-3-239", + "seg": [ + [ + [ + "super", + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-13", + "seg": [ + [ + [ + "泛型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_248117_242472", + "13_389874_430847", + "13_4173500_27510836", + "13_742086_783416", + "13_7438616_53412021" + ] + } + } + } + } + }, + { + "lambda表达式": { + "children": [ + { + "lambda表达式简介": { + "children": [ + { + "lambda表达式的基础知识": { + "data": { + "uuid": "java-4-308", + "seg": [ + [ + [ + "lambda", + "表达式", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数式接口": { + "data": { + "uuid": "java-4-309", + "seg": [ + [ + [ + "函数", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "几个lambda表达式示例": { + "data": { + "uuid": "java-4-310", + "seg": [ + [ + [ + "lambda", + "表达式", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-240", + "seg": [ + [ + [ + "lambda", + "表达式", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "块lambda表达式": { + "data": { + "uuid": "java-3-241", + "seg": [ + [ + [ + "块", + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型函数式接口": { + "data": { + "uuid": "java-3-242", + "seg": [ + [ + [ + "泛", + "型函数", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "作为参数传递lambda表达式": { + "data": { + "uuid": "java-3-243", + "seg": [ + [ + [ + "参数传递", + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "lambda表达式与异常": { + "data": { + "uuid": "java-3-244", + "seg": [ + [ + [ + "lambda", + "表达式" + ], + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "lambda表达式和变量捕获": { + "data": { + "uuid": "java-3-245", + "seg": [ + [ + [ + "lambda", + "表达式" + ], + [ + "变量", + "捕获" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法引用": { + "children": [ + { + "静态方法的方法引用": { + "data": { + "uuid": "java-4-311", + "seg": [ + [ + [ + "静态方法", + "方法", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型中的方法引用": { + "data": { + "uuid": "java-4-312", + "seg": [ + [ + [ + "泛型", + "方法", + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_760071_816615", + "13_345372_349664", + "13_358555_376889", + "13_379703_411940" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-246", + "seg": [ + [ + [ + "方法", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造函数引用": { + "data": { + "uuid": "java-3-247", + "seg": [ + [ + [ + "构造函数", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "预定义的函数式接口": { + "data": { + "uuid": "java-3-248", + "seg": [ + [ + [ + "预定", + "义", + "函数", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "lambda表达式的语法": { + "data": { + "uuid": "java-3-249", + "seg": [ + [ + [ + "lambda", + "表达式", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造器引用": { + "data": { + "uuid": "java-3-250", + "seg": [ + [ + [ + "构造", + "器", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "再谈Comparator": { + "data": { + "uuid": "java-3-251", + "seg": [ + [ + [ + "谈", + "comparator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-14", + "seg": [ + [ + [ + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "Java开发入门": { + "children": [ + { + "Java概述": { + "children": [ + { + "什么是Java": { + "data": { + "uuid": "java-5-107", + "seg": [ + [ + [ + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java语言的特点": { + "data": { + "uuid": "java-5-108", + "seg": [ + [ + [ + "java", + "语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-313", + "seg": [ + [ + [ + "java", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDK的使用": { + "children": [ + { + "什么是JDK": { + "data": { + "uuid": "java-5-109", + "seg": [ + [ + [ + "jdk" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_251168_249229", + "13_350202_358526", + "13_353792_365687", + "13_240157_224169", + "13_7397296_53342466", + "13_245545_236243", + "13_773255_836843", + "13_237621_218184", + "13_339178_337694", + "13_174508_54465" + ] + } + } + } + } + }, + { + "安装JDK": { + "data": { + "uuid": "java-5-110", + "seg": [ + [ + [ + "安装", + "jdk" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457035_53441115", + "13_1067107_1267097" + ] + } + } + } + } + }, + { + "JDK目录介绍": { + "data": { + "uuid": "java-5-111", + "seg": [ + [ + [ + "jdk", + "目录", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-314", + "seg": [ + [ + [ + "jdk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "系统环境变量": { + "children": [ + { + "PATH环境变量": { + "data": { + "uuid": "java-5-112", + "seg": [ + [ + [ + "path", + "环境变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_337623_335003" + ] + } + } + } + } + }, + { + "CLASSPATH环境变量": { + "data": { + "uuid": "java-5-113", + "seg": [ + [ + [ + "classpath", + "环境变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743951_789263", + "13_745200_792614", + "13_191277_92688", + "13_229827_198364", + "13_7464124_53450462", + "13_750932_804278", + "13_769896_831110", + "13_699183_587019", + "13_252289_253698" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-315", + "seg": [ + [ + [ + "系统", + "环境变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第一个Java程序": { + "children": [ + { + "编辑Java源代码": { + "data": { + "uuid": "java-5-114", + "seg": [ + [ + [ + "编辑", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编译Java程序": { + "data": { + "uuid": "java-5-115", + "seg": [ + [ + [ + "编译", + "java", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_964803_1115854", + "13_190225_90551", + "13_7436895_53409138", + "13_182676_68812", + "13_387012_425797", + "13_25098_6643", + "13_10825_5136", + "13_373149_400865", + "13_756223_811467", + "13_7458657_53443281" + ] + } + } + } + } + }, + { + "根据CLASSPATH环境变量定位类": { + "data": { + "uuid": "java-5-116", + "seg": [ + [ + [ + "classpath", + "环境变量", + "定位", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-316", + "seg": [ + [ + [ + "java", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的运行机制": { + "data": { + "uuid": "java-4-317", + "seg": [ + [ + [ + "java", + "运行机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Eclipse开发工具": { + "children": [ + { + "Eclipse概述": { + "data": { + "uuid": "java-5-117", + "seg": [ + [ + [ + "eclipse", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Eclipse的安装与启动": { + "data": { + "uuid": "java-5-118", + "seg": [ + [ + [ + "eclipse", + "安装" + ], + [ + "启动" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7430975_53398940" + ] + } + } + } + } + }, + { + "使用Eclipse进行程序开发": { + "data": { + "uuid": "java-5-119", + "seg": [ + [ + [ + "eclipse", + "程序开发" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7461969_53447261" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-318", + "seg": [ + [ + [ + "eclipse", + "开发工具" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7427158_53391212" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-252", + "seg": [ + [ + [ + "java", + "开发", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java编程基础": { + "children": [ + { + "Java的基本语法": { + "children": [ + { + "Java的基本语法格式": { + "data": { + "uuid": "java-5-120", + "seg": [ + [ + [ + "java", + "语法", + "格式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230947_201113", + "13_241142_226696", + "13_247829_241763", + "13_7434889_53405346" + ] + } + } + } + } + }, + { + "Java中的注释": { + "data": { + "uuid": "java-5-121", + "seg": [ + [ + [ + "java", + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的关键字": { + "data": { + "uuid": "java-5-122", + "seg": [ + [ + [ + "java", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的标识符": { + "data": { + "uuid": "java-5-123", + "seg": [ + [ + [ + "java", + "标识符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1055942_1253172" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-319", + "seg": [ + [ + [ + "java", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的变量与常量": { + "children": [ + { + "变量的定义": { + "data": { + "uuid": "java-5-124", + "seg": [ + [ + [ + "变量", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239861_223548", + "13_196672_109551", + "13_4646483_29330802", + "13_750596_803749", + "13_7436731_53409082" + ] + } + } + } + } + }, + { + "变量的数据类型": { + "data": { + "uuid": "java-5-125", + "seg": [ + [ + [ + "变量", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量的类型转换32目录Java基础入门(第2版)2.2.4变量的作用域": { + "data": { + "uuid": "java-5-126", + "seg": [ + [ + [ + "变量", + "类型转换", + "目录", + "java", + "基础", + "入门", + "版", + "作用域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的常量": { + "data": { + "uuid": "java-5-127", + "seg": [ + [ + [ + "java", + "常量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7466662_53454001", + "13_345260_349335", + "13_231883_203776" + ] + } + } + } + } + }, + { + "指数记数法": { + "data": { + "uuid": "java-5-128", + "seg": [ + [ + [ + "指数", + "记数法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-320", + "seg": [ + [ + [ + "java", + "变量" + ], + [ + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的运算符": { + "children": [ + { + "逻辑运算符": { + "data": { + "uuid": "java-5-129", + "seg": [ + [ + [ + "逻辑", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_701608_591485", + "13_248456_243300" + ] + } + } + } + } + }, + { + "条件运算符": { + "data": { + "uuid": "java-5-130", + "seg": [ + [ + [ + "条件", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7442981_53420000" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-321", + "seg": [ + [ + [ + "java", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择结构语句": { + "children": [ + { + "if条件语句": { + "data": { + "uuid": "java-5-131", + "seg": [ + [ + [ + "if", + "条件语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_179151_64389", + "13_7395251_53337539", + "13_1096530_1308948", + "13_743304_787312", + "13_191788_93796", + "13_198052_113127", + "13_746542_796189", + "13_7417032_53371702", + "13_1098984_1313879", + "13_376869_407103" + ] + } + } + } + } + }, + { + "switch条件语句": { + "data": { + "uuid": "java-5-132", + "seg": [ + [ + [ + "switch", + "条件语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-322", + "seg": [ + [ + [ + "选择", + "结构", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环结构语句": { + "children": [ + { + "do…while循环语句": { + "data": { + "uuid": "java-5-133", + "seg": [ + [ + [ + "do", + "…", + "while循环", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_940629_1077927", + "13_7455237_53438050", + "13_385377_422573", + "13_7457465_53441815", + "13_265121_280889" + ] + } + } + } + } + }, + { + "for循环语句": { + "data": { + "uuid": "java-5-134", + "seg": [ + [ + [ + "for循环", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_237708_218558", + "13_670299_492802" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-323", + "seg": [ + [ + [ + "循环", + "结构", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-253", + "seg": [ + [ + [ + "java", + "编程", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合": { + "children": [ + { + "集合概述": { + "data": { + "uuid": "java-4-324", + "seg": [ + [ + [ + "集合", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Collection接口": { + "data": { + "uuid": "java-4-325", + "seg": [ + [ + [ + "collection", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "List接口": { + "children": [ + { + "List接口简介": { + "data": { + "uuid": "java-5-135", + "seg": [ + [ + [ + "list", + "接口", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ArrayList集合": { + "data": { + "uuid": "java-5-136", + "seg": [ + [ + [ + "arraylist", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_632045_441220", + "13_7465063_53451775", + "13_235354_213993", + "13_186251_79188", + "13_743338_787405", + "13_669464_490854", + "13_786872_862059", + "13_384706_421333", + "13_7416454_53370644", + "13_1090235_1297018" + ] + } + } + } + } + }, + { + "LinkedList集合": { + "data": { + "uuid": "java-5-137", + "seg": [ + [ + [ + "linkedlist", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_365874_389481" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-326", + "seg": [ + [ + [ + "list", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Collection集合遍历": { + "children": [ + { + "Iterator遍历集合": { + "data": { + "uuid": "java-5-138", + "seg": [ + [ + [ + "iterator", + "遍历", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_389091_429289", + "13_7426285_53389396", + "13_370765_397443", + "13_656837_468883", + "13_248512_243522", + "13_7407311_53357358", + "13_251675_250655", + "13_7456023_53439375", + "13_150738_72266", + "13_23033_6067" + ] + } + } + } + } + }, + { + "foreach遍历集合": { + "data": { + "uuid": "java-5-139", + "seg": [ + [ + [ + "for", + "each", + "遍历", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_768929_829457", + "13_651116_458086" + ] + } + } + } + } + }, + { + "JDK 8的forEach遍历集合": { + "data": { + "uuid": "java-5-140", + "seg": [ + [ + [ + "jdk", + "for", + "each", + "遍历", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-327", + "seg": [ + [ + [ + "collection", + "集合", + "遍历" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Set接口": { + "children": [ + { + "Set接口简介": { + "data": { + "uuid": "java-5-141", + "seg": [ + [ + [ + "set", + "接口", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HashSet集合": { + "data": { + "uuid": "java-5-142", + "seg": [ + [ + [ + "hashset", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TreeSet集合": { + "data": { + "uuid": "java-5-143", + "seg": [ + [ + [ + "treeset", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-328", + "seg": [ + [ + [ + "set", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Map接口": { + "children": [ + { + "Map接口简介": { + "data": { + "uuid": "java-5-144", + "seg": [ + [ + [ + "map", + "接口", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_323754_314567" + ] + } + } + } + } + }, + { + "HashMap集合": { + "data": { + "uuid": "java-5-145", + "seg": [ + [ + [ + "hashmap", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_376342_406201", + "13_187699_82749", + "13_7409191_53359511", + "13_717661_711070", + "13_207518_141833", + "13_650977_457915", + "13_323746_314899", + "13_679162_525504", + "13_646721_449513", + "13_780319_849384" + ] + } + } + } + } + }, + { + "Map集合遍历": { + "data": { + "uuid": "java-5-146", + "seg": [ + [ + [ + "map", + "集合", + "遍历" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1108775_1349185", + "13_656364_467901", + "13_656484_468237", + "13_655680_466599", + "13_516178_438763" + ] + } + } + } + } + }, + { + "TreeMap集合": { + "data": { + "uuid": "java-5-147", + "seg": [ + [ + [ + "treemap", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_232000_204088" + ] + } + } + } + } + }, + { + "Properties集合": { + "data": { + "uuid": "java-5-148", + "seg": [ + [ + [ + "properties", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-329", + "seg": [ + [ + [ + "map", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用工具类": { + "children": [ + { + "Collections工具类": { + "data": { + "uuid": "java-5-149", + "seg": [ + [ + [ + "collections", + "工具", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678977_524638", + "13_229073_196195", + "13_229022_196012" + ] + } + } + } + } + }, + { + "Arrays工具类": { + "data": { + "uuid": "java-5-150", + "seg": [ + [ + [ + "arrays", + "工具", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222282_177999", + "13_235369_214091", + "13_686432_548093", + "13_374474_403533" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-330", + "seg": [ + [ + [ + "常用工具", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "聚合操作": { + "children": [ + { + "聚合操作简介": { + "data": { + "uuid": "java-5-151", + "seg": [ + [ + [ + "聚合", + "操作", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建Stream流对象": { + "data": { + "uuid": "java-5-152", + "seg": [ + [ + [ + "创建", + "stream", + "流", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Stream流的常用方法": { + "data": { + "uuid": "java-5-153", + "seg": [ + [ + [ + "stream", + "流", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Parallel Stream(并行流)": { + "data": { + "uuid": "java-5-154", + "seg": [ + [ + [ + "parallel", + "stream", + "并行", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-331", + "seg": [ + [ + [ + "聚合", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java集合框架": { + "children": [ + { + "集合接口与实现分离": { + "data": { + "uuid": "java-5-155", + "seg": [ + [ + [ + "集合", + "接口" + ], + [ + "分离" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_370890_397956", + "13_662257_477680", + "13_668655_489170", + "13_184433_74079" + ] + } + } + } + } + }, + { + "泛型实用方法": { + "data": { + "uuid": "java-5-156", + "seg": [ + [ + [ + "泛型", + "实用", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-332", + "seg": [ + [ + [ + "java", + "集合", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合框架中的接口": { + "data": { + "uuid": "java-4-333", + "seg": [ + [ + [ + "集合", + "框架", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "链表": { + "data": { + "uuid": "java-4-334", + "seg": [ + [ + [ + "链表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1055376_1252500", + "13_1095989_1307906" + ] + } + } + } + } + }, + { + "数组列表": { + "data": { + "uuid": "java-4-335", + "seg": [ + [ + [ + "数组", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "散列集": { + "data": { + "uuid": "java-4-336", + "seg": [ + [ + [ + "散列", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "树集": { + "data": { + "uuid": "java-4-337", + "seg": [ + [ + [ + "树集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优先队列": { + "data": { + "uuid": "java-4-338", + "seg": [ + [ + [ + "优先", + "队列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射": { + "children": [ + { + "基本映射操作": { + "data": { + "uuid": "java-5-157", + "seg": [ + [ + [ + "映射", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新映射条目": { + "data": { + "uuid": "java-5-158", + "seg": [ + [ + [ + "更新", + "映射", + "条目" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射视图": { + "data": { + "uuid": "java-5-159", + "seg": [ + [ + [ + "映射", + "视图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "弱散列映射": { + "data": { + "uuid": "java-5-160", + "seg": [ + [ + [ + "弱", + "散列", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "链接散列集与映射": { + "data": { + "uuid": "java-5-161", + "seg": [ + [ + [ + "链接", + "散", + "列集" + ], + [ + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "枚举集与映射": { + "data": { + "uuid": "java-5-162", + "seg": [ + [ + [ + "枚举", + "集与", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标识散列映射": { + "data": { + "uuid": "java-5-163", + "seg": [ + [ + [ + "标识", + "散列", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-339", + "seg": [ + [ + [ + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "算法": { + "children": [ + { + "二分查找": { + "data": { + "uuid": "java-5-164", + "seg": [ + [ + [ + "查找" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单算法": { + "data": { + "uuid": "java-5-165", + "seg": [ + [ + [ + "算法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_650399_457875", + "13_384115_420831", + "13_697332_583493", + "13_1061793_1259671", + "13_204704_133922", + "13_351401_360849", + "13_243291_231660", + "13_354169_366578", + "13_168652_44021", + "13_252672_252708" + ] + } + } + } + } + }, + { + "批操作": { + "data": { + "uuid": "java-5-166", + "seg": [ + [ + [ + "批", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写自己的算法": { + "data": { + "uuid": "java-5-167", + "seg": [ + [ + [ + "编写", + "算法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_358710_377278", + "13_358745_377423" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-340", + "seg": [ + [ + [ + "算法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1037655_1241337", + "13_7408319_53358519", + "13_676266_515389", + "13_747413_798629" + ] + } + } + } + } + }, + { + "遗留的集合": { + "children": [ + { + "属性映射": { + "data": { + "uuid": "java-5-168", + "seg": [ + [ + [ + "属性", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "栈": { + "data": { + "uuid": "java-5-169", + "seg": [ + [ + [ + "栈" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7451189_53432609", + "13_367244_392667" + ] + } + } + } + } + }, + { + "位集": { + "data": { + "uuid": "java-5-170", + "seg": [ + [ + [ + "位集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-341", + "seg": [ + [ + [ + "遗留", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java集合简介": { + "data": { + "uuid": "java-4-342", + "seg": [ + [ + [ + "java", + "集合", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写equals方法": { + "data": { + "uuid": "java-4-343", + "seg": [ + [ + [ + "编写", + "equals", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写equals和hashCode": { + "data": { + "uuid": "java-4-344", + "seg": [ + [ + [ + "编写", + "equals" + ], + [ + "hashcode" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7430319_53397387", + "13_649362_454877", + "13_30039_9236", + "13_778168_844631" + ] + } + } + } + } + }, + { + "使用TreeMap": { + "data": { + "uuid": "java-4-345", + "seg": [ + [ + [ + "treemap" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_679052_524981", + "13_7408928_53359529", + "13_56554_10273", + "13_679260_525809" + ] + } + } + } + } + }, + { + "使用Properties": { + "data": { + "uuid": "java-4-346", + "seg": [ + [ + [ + "properties" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Deque": { + "data": { + "uuid": "java-4-347", + "seg": [ + [ + [ + "deque" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-254", + "seg": [ + [ + [ + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_371880_398660", + "13_1095048_1305855", + "13_337753_335038", + "13_371755_398467" + ] + } + } + } + } + }, + { + "I/O流": { + "children": [ + { + "I/O流概述": { + "data": { + "uuid": "java-4-348", + "seg": [ + [ + [ + "i", + "o", + "流", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_177743_61365" + ] + } + } + } + } + }, + { + "File类": { + "children": [ + { + "File类的常用方法": { + "data": { + "uuid": "java-5-171", + "seg": [ + [ + [ + "file", + "类", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7435934_53406903", + "13_744333_790150", + "13_332497_323709", + "13_2907_4066", + "13_223039_180473", + "13_977465_1135939", + "13_220367_173005", + "13_7426191_53388981", + "13_1056628_1253699", + "13_228113_193507" + ] + } + } + } + } + }, + { + "遍历目录下的文件": { + "data": { + "uuid": "java-5-172", + "seg": [ + [ + [ + "遍历", + "目录", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_745576_793704" + ] + } + } + } + } + }, + { + "删除文件及目录": { + "data": { + "uuid": "java-5-173", + "seg": [ + [ + [ + "删除", + "文件" + ], + [ + "目录" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_194751_103203" + ] + } + } + } + } + }, + { + "创建文件对象": { + "data": { + "uuid": "java-5-174", + "seg": [ + [ + [ + "创建", + "文件", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件操作": { + "data": { + "uuid": "java-5-175", + "seg": [ + [ + [ + "文件", + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1074382_1279791" + ] + } + } + } + } + }, + { + "文件夹操作": { + "data": { + "uuid": "java-5-176", + "seg": [ + [ + [ + "文件夹", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "目录列表器": { + "data": { + "uuid": "java-5-177", + "seg": [ + [ + [ + "目录", + "列表", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "目录实用工具": { + "data": { + "uuid": "java-5-178", + "seg": [ + [ + [ + "目录", + "实用工具" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "目录的检查及创建": { + "data": { + "uuid": "java-5-179", + "seg": [ + [ + [ + "目录", + "检查" + ], + [ + "创建" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件的创建与删除": { + "data": { + "uuid": "java-5-180", + "seg": [ + [ + [ + "文件", + "创建" + ], + [ + "删除" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_377908_408655", + "13_7425758_53387462", + "13_182627_68791", + "13_696156_579489", + "13_383567_419045" + ] + } + } + } + } + }, + { + "获取文件信息": { + "data": { + "uuid": "java-5-181", + "seg": [ + [ + [ + "获取", + "文件", + "信息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-349", + "seg": [ + [ + [ + "file", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "RandomAccessFile": { + "data": { + "uuid": "java-4-350", + "seg": [ + [ + [ + "randomaccessfile" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_261223_273948", + "13_661945_477443", + "13_352419_362789" + ] + } + } + } + } + }, + { + "对象序列化": { + "children": [ + { + "寻找类": { + "data": { + "uuid": "java-5-182", + "seg": [ + [ + [ + "寻找", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "序列化的控制": { + "data": { + "uuid": "java-5-183", + "seg": [ + [ + [ + "序列化", + "控制" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_763963_822586", + "13_991263_1162799", + "13_647971_453389" + ] + } + } + } + } + }, + { + "使用“持久性”": { + "data": { + "uuid": "java-5-184", + "seg": [ + [ + [ + "持久性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-351", + "seg": [ + [ + [ + "对象", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "NIO": { + "children": [ + { + "NIO概述": { + "data": { + "uuid": "java-5-185", + "seg": [ + [ + [ + "nio", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_746597_796345", + "13_184654_75752", + "13_345035_348871", + "13_229220_196576", + "13_383669_419320", + "13_746422_795891" + ] + } + } + } + } + }, + { + "Buffer(缓冲器)": { + "data": { + "uuid": "java-5-186", + "seg": [ + [ + [ + "buffer", + "缓冲器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Channel(通道)": { + "data": { + "uuid": "java-5-187", + "seg": [ + [ + [ + "channel", + "通道" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7432182_53401164", + "13_1055188_1253690" + ] + } + } + } + } + }, + { + "Java新IO概述": { + "data": { + "uuid": "java-5-188", + "seg": [ + [ + [ + "java", + "io", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_261245_272892", + "13_977943_1136626", + "13_346508_351806", + "13_7402597_53350640", + "13_226885_190165", + "13_231038_201665", + "13_7404275_53353092", + "13_908913_1044115" + ] + } + } + } + } + }, + { + "使用Buffer": { + "data": { + "uuid": "java-5-189", + "seg": [ + [ + [ + "buffer" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Channel": { + "data": { + "uuid": "java-5-190", + "seg": [ + [ + [ + "channel" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "字符集和Charset": { + "data": { + "uuid": "java-5-191", + "seg": [ + [ + [ + "字符集" + ], + [ + "charset" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1056806_1253857", + "13_196442_108475" + ] + } + } + } + } + }, + { + "文件锁": { + "data": { + "uuid": "java-5-192", + "seg": [ + [ + [ + "文件", + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-352", + "seg": [ + [ + [ + "nio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "NIO.": { + "children": [ + { + "Path接口": { + "data": { + "uuid": "java-5-193", + "seg": [ + [ + [ + "path", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Files工具类": { + "data": { + "uuid": "java-5-194", + "seg": [ + [ + [ + "files", + "工具", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-353", + "seg": [ + [ + [ + "nio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-255", + "seg": [ + [ + [ + "i", + "o", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GUI(图形用户接口)": { + "children": [ + { + "Swing概述": { + "children": [ + { + "Swing特点": { + "data": { + "uuid": "java-5-195", + "seg": [ + [ + [ + "swing" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_664029_480760" + ] + } + } + } + } + }, + { + "Swing包": { + "data": { + "uuid": "java-5-196", + "seg": [ + [ + [ + "swing", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_741841_782609" + ] + } + } + } + } + }, + { + "常用Swing组件概述": { + "data": { + "uuid": "java-5-197", + "seg": [ + [ + [ + "swing", + "组件", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-354", + "seg": [ + [ + [ + "swing", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing顶级容器": { + "children": [ + { + "JFrame": { + "data": { + "uuid": "java-5-198", + "seg": [ + [ + [ + "jframe" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_219475_170729", + "13_896364_1033545", + "13_194787_103320", + "13_383175_418448", + "13_183663_71393", + "13_772405_835580", + "13_191226_92723", + "13_7465177_53451933", + "13_233000_207832" + ] + } + } + } + } + }, + { + "JDialog": { + "data": { + "uuid": "java-5-199", + "seg": [ + [ + [ + "jdialog" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7452517_53434496", + "13_352697_363905" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-355", + "seg": [ + [ + [ + "swing", + "顶级", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布局管理器": { + "children": [ + { + "BorderLayout": { + "data": { + "uuid": "java-5-200", + "seg": [ + [ + [ + "borderlayout" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FlowLayout": { + "data": { + "uuid": "java-5-201", + "seg": [ + [ + [ + "flowlayout" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GridLayout": { + "data": { + "uuid": "java-5-202", + "seg": [ + [ + [ + "gridlayout" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_374629_403685" + ] + } + } + } + } + }, + { + "FlowLayout流布局管理器": { + "data": { + "uuid": "java-5-203", + "seg": [ + [ + [ + "flowlayout", + "流", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "BorderLayout边界布局管理器": { + "data": { + "uuid": "java-5-204", + "seg": [ + [ + [ + "borderlayout", + "边界", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GridLayout网格布局管理器": { + "data": { + "uuid": "java-5-205", + "seg": [ + [ + [ + "gridlayout", + "网格", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流布局管理器": { + "data": { + "uuid": "java-5-206", + "seg": [ + [ + [ + "流", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "边界布局管理器": { + "data": { + "uuid": "java-5-207", + "seg": [ + [ + [ + "边界", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网格布局管理器": { + "data": { + "uuid": "java-5-208", + "seg": [ + [ + [ + "网格", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FlowLayout布局管理器": { + "data": { + "uuid": "java-5-209", + "seg": [ + [ + [ + "flowlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7459412_53444324" + ] + } + } + } + } + }, + { + "BorderLayout布局管理器": { + "data": { + "uuid": "java-5-210", + "seg": [ + [ + [ + "borderlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_744218_789873", + "13_375481_404872" + ] + } + } + } + } + }, + { + "GridLayout布局管理器": { + "data": { + "uuid": "java-5-211", + "seg": [ + [ + [ + "gridlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GridBagLayout布局管理器": { + "data": { + "uuid": "java-5-212", + "seg": [ + [ + [ + "gridbaglayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CardLayout布局管理器": { + "data": { + "uuid": "java-5-213", + "seg": [ + [ + [ + "cardlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "BoxLayout布局管理器": { + "data": { + "uuid": "java-5-214", + "seg": [ + [ + [ + "boxlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-356", + "seg": [ + [ + [ + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件处理": { + "children": [ + { + "事件处理机制": { + "data": { + "uuid": "java-5-215", + "seg": [ + [ + [ + "事件处理", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Swing常用事件处理": { + "data": { + "uuid": "java-5-216", + "seg": [ + [ + [ + "swing", + "事件处理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_3517_4472" + ] + } + } + } + } + }, + { + "Java事件模型的流程": { + "data": { + "uuid": "java-5-217", + "seg": [ + [ + [ + "java", + "事件", + "模型", + "流程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件适配器": { + "data": { + "uuid": "java-5-218", + "seg": [ + [ + [ + "事件", + "适配器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用内部类实现监听器": { + "data": { + "uuid": "java-5-219", + "seg": [ + [ + [ + "内部", + "类", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用外部类实现监听器": { + "data": { + "uuid": "java-5-220", + "seg": [ + [ + [ + "部类", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "类本身作为事件监听器类": { + "data": { + "uuid": "java-5-221", + "seg": [ + [ + [ + "类", + "事件", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "匿名内部类实现监听器": { + "data": { + "uuid": "java-5-222", + "seg": [ + [ + [ + "匿名", + "内部", + "类", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基本事件处理概念": { + "data": { + "uuid": "java-5-223", + "seg": [ + [ + [ + "事件处理", + "概念" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "简洁地指定监听器": { + "data": { + "uuid": "java-5-224", + "seg": [ + [ + [ + "简洁", + "指定", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "适配器类": { + "data": { + "uuid": "java-5-225", + "seg": [ + [ + [ + "适配器", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "动作": { + "data": { + "uuid": "java-5-226", + "seg": [ + [ + [ + "动作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "AWT事件继承层次": { + "data": { + "uuid": "java-5-227", + "seg": [ + [ + [ + "awt", + "事件", + "继承" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-357", + "seg": [ + [ + [ + "事件处理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Swing常用组件": { + "children": [ + { + "面板组件": { + "data": { + "uuid": "java-5-228", + "seg": [ + [ + [ + "面板", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文本组件": { + "children": [ + { + "JTextField文本框组件": { + "data": { + "uuid": "java-6-71", + "seg": [ + [ + [ + "jtextfield", + "文本框", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_674049_505304", + "13_673391_501236" + ] + } + } + } + } + }, + { + "JPasswordField密码框组件": { + "data": { + "uuid": "java-6-72", + "seg": [ + [ + [ + "jpasswordfield", + "密码", + "框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JTextArea文本域组件": { + "data": { + "uuid": "java-6-73", + "seg": [ + [ + [ + "jtextarea", + "文本", + "域", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文本框组件": { + "data": { + "uuid": "java-6-74", + "seg": [ + [ + [ + "文本框", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_351801_361624", + "13_7435138_53405678" + ] + } + } + } + } + }, + { + "密码框组件": { + "data": { + "uuid": "java-6-75", + "seg": [ + [ + [ + "密码", + "框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文本域组件": { + "data": { + "uuid": "java-6-76", + "seg": [ + [ + [ + "文本", + "域", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-229", + "seg": [ + [ + [ + "文本", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标签组件": { + "data": { + "uuid": "java-5-230", + "seg": [ + [ + [ + "标签", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "按钮组件": { + "children": [ + { + "JButton按钮组件": { + "data": { + "uuid": "java-6-77", + "seg": [ + [ + [ + "jbutton", + "按钮", + "组件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_367166_392619", + "13_676116_513815", + "13_218359_168051" + ] + } + } + } + } + }, + { + "JRadioButton单选按钮组件": { + "data": { + "uuid": "java-6-78", + "seg": [ + [ + [ + "jradiobutton", + "单选", + "按钮", + "组件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_183459_70501" + ] + } + } + } + } + }, + { + "JCheckBox复选框组件": { + "data": { + "uuid": "java-6-79", + "seg": [ + [ + [ + "jcheckbox", + "复选框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提交按钮组件": { + "data": { + "uuid": "java-6-80", + "seg": [ + [ + [ + "提交", + "按钮", + "组件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_742248_783928", + "13_745114_792343", + "13_381328_414952" + ] + } + } + } + } + }, + { + "单选按钮组件": { + "data": { + "uuid": "java-6-81", + "seg": [ + [ + [ + "单选", + "按钮", + "组件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "复选框组件": { + "data": { + "uuid": "java-6-82", + "seg": [ + [ + [ + "复选框", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_208105_143582", + "13_7457148_53441318", + "13_746462_796005", + "13_27928_7782", + "13_238632_221698", + "13_668435_488924", + "13_201898_125748", + "13_1096772_1309375" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-231", + "seg": [ + [ + [ + "按钮", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "下拉框组件": { + "data": { + "uuid": "java-5-232", + "seg": [ + [ + [ + "下拉框", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_382129_416405" + ] + } + } + } + } + }, + { + "菜单组件": { + "data": { + "uuid": "java-5-233", + "seg": [ + [ + [ + "菜单", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-358", + "seg": [ + [ + [ + "swing", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing组件的整合使用——QQ登录": { + "children": [ + { + "案例分析": { + "data": { + "uuid": "java-5-234", + "seg": [ + [ + [ + "案例", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例实现": { + "data": { + "uuid": "java-5-235", + "seg": [ + [ + [ + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-359", + "seg": [ + [ + [ + "swing", + "组件", + "整合", + "qq", + "登录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaFX图形用户界面工具": { + "children": [ + { + "JavaFX概述": { + "data": { + "uuid": "java-5-236", + "seg": [ + [ + [ + "javafx", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaFX开发环境配置": { + "data": { + "uuid": "java-5-237", + "seg": [ + [ + [ + "javafx", + "开发", + "环境", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7410432_53361317" + ] + } + } + } + } + }, + { + "JavaFX基础入门": { + "data": { + "uuid": "java-5-238", + "seg": [ + [ + [ + "javafx", + "基础", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaFX可视化管理工具": { + "data": { + "uuid": "java-5-239", + "seg": [ + [ + [ + "javafx", + "可视化", + "管理工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-360", + "seg": [ + [ + [ + "javafx", + "图形用户界面", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-256", + "seg": [ + [ + [ + "gui", + "图形", + "用户", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_673747_502223" + ] + } + } + } + } + }, + { + "JDBC": { + "children": [ + { + "什么是JDBC": { + "data": { + "uuid": "java-4-361", + "seg": [ + [ + [ + "jdbc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC常用API": { + "children": [ + { + "Driver接口": { + "data": { + "uuid": "java-5-240", + "seg": [ + [ + [ + "driver", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_388848_430022", + "13_765747_824825" + ] + } + } + } + } + }, + { + "DriverManager类": { + "data": { + "uuid": "java-5-241", + "seg": [ + [ + [ + "drivermanager", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Connection接口": { + "data": { + "uuid": "java-5-242", + "seg": [ + [ + [ + "connection", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1084957_1291375", + "13_364313_385754", + "13_195446_105208", + "13_1051146_1248511", + "13_635720_441298", + "13_776611_842003", + "13_242864_230852", + "13_249910_246350", + "13_7441957_53418628", + "13_7404785_53353771" + ] + } + } + } + } + }, + { + "Statement接口": { + "data": { + "uuid": "java-5-243", + "seg": [ + [ + [ + "statement", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_343301_345304", + "13_7397005_53341418" + ] + } + } + } + } + }, + { + "PreparedStatement接口": { + "data": { + "uuid": "java-5-244", + "seg": [ + [ + [ + "preparedstatement", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_334704_327775", + "13_710287_668443", + "13_383202_418622", + "13_384078_420103", + "13_180093_65893", + "13_668187_488166" + ] + } + } + } + } + }, + { + "ResultSet接口": { + "data": { + "uuid": "java-5-245", + "seg": [ + [ + [ + "resultset", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_242249_229439", + "13_173493_52462", + "13_667538_487103", + "13_11386_5423", + "13_215014_160451" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-362", + "seg": [ + [ + [ + "jdbc", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC编程": { + "children": [ + { + "JDBC的编程步骤": { + "data": { + "uuid": "java-5-246", + "seg": [ + [ + [ + "jdbc", + "编程", + "步骤" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222981_180352", + "13_7434624_53405102" + ] + } + } + } + } + }, + { + "实现第一个JDBC程序": { + "data": { + "uuid": "java-5-247", + "seg": [ + [ + [ + "jdbc", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7445105_53423654", + "13_7402732_53351637", + "13_648660_453328", + "13_391255_433769", + "13_7438474_53411869", + "13_7441624_53418064", + "13_378249_409298", + "13_7446117_53425501", + "13_1048665_1246158", + "13_374633_403653" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-363", + "seg": [ + [ + [ + "jdbc", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例——使用JDBC实现QQ登录": { + "data": { + "uuid": "java-4-364", + "seg": [ + [ + [ + "案例", + "jdbc", + "qq", + "登录" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3573_4418", + "13_682690_537622", + "13_178817_63493", + "13_390602_432259", + "13_206341_138364", + "13_376435_406348", + "13_675854_511963", + "13_1060501_1258209", + "13_7440972_53416806" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-257", + "seg": [ + [ + [ + "jdbc" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_713098_704270" + ] + } + } + } + } + }, + { + "网络编程": { + "children": [ + { + "网络编程基础": { + "children": [ + { + "网络通信协议": { + "data": { + "uuid": "java-5-248", + "seg": [ + [ + [ + "网络通信", + "协议" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "IP地址和端口号": { + "data": { + "uuid": "java-5-249", + "seg": [ + [ + [ + "ip地址" + ], + [ + "端口号" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_243288_231936", + "13_7443225_53421007", + "13_1101455_1315948", + "13_380814_414056", + "13_159444_24936", + "13_7445779_53424609", + "13_202634_127897", + "13_678619_523173", + "13_26105_7165", + "13_28034_7818" + ] + } + } + } + } + }, + { + "InetAddress": { + "data": { + "uuid": "java-5-250", + "seg": [ + [ + [ + "inetaddress" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "UDP与TCP协议": { + "data": { + "uuid": "java-5-251", + "seg": [ + [ + [ + "udp" + ], + [ + "tcp", + "协议" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-365", + "seg": [ + [ + [ + "网络", + "编程", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "UDP通信": { + "children": [ + { + "UDP通信简介": { + "data": { + "uuid": "java-5-252", + "seg": [ + [ + [ + "udp", + "通信", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_161873_32139", + "13_225974_203337" + ] + } + } + } + } + }, + { + "DatagramPacket": { + "data": { + "uuid": "java-5-253", + "seg": [ + [ + [ + "datagrampacket" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "DatagramSocket": { + "data": { + "uuid": "java-5-254", + "seg": [ + [ + [ + "datagramsocket" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_182665_68880" + ] + } + } + } + } + }, + { + "UDP网络程序": { + "data": { + "uuid": "java-5-255", + "seg": [ + [ + [ + "udp", + "网络", + "程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "UDP案例——聊天程序": { + "data": { + "uuid": "java-5-256", + "seg": [ + [ + [ + "udp", + "案例", + "聊天", + "程序" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_234035_210386", + "13_752604_806736", + "13_350450_359043", + "13_2340_3584" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-366", + "seg": [ + [ + [ + "udp", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TCP通信": { + "children": [ + { + "TCP通信简介": { + "data": { + "uuid": "java-5-257", + "seg": [ + [ + [ + "tcp", + "通信", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7444577_53423332", + "13_344954_348651", + "13_7427239_53391345", + "13_162336_33216", + "13_829123_925274", + "13_243870_232807", + "13_1096521_1309194" + ] + } + } + } + } + }, + { + "ServerSocket": { + "data": { + "uuid": "java-5-258", + "seg": [ + [ + [ + "serversocket" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_207283_141117", + "13_334563_327601", + "13_238206_219823" + ] + } + } + } + } + }, + { + "Socket": { + "data": { + "uuid": "java-5-259", + "seg": [ + [ + [ + "socket" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_231645_203103", + "13_229700_198099", + "13_162233_32933", + "13_237105_216821", + "13_1052370_1249912", + "13_656074_469369", + "13_242946_230982", + "13_679590_527014", + "13_7433893_53404239", + "13_222337_178127" + ] + } + } + } + } + }, + { + "简单的TCP网络程序": { + "data": { + "uuid": "java-5-260", + "seg": [ + [ + [ + "tcp", + "网络", + "程序" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_175391_56006" + ] + } + } + } + } + }, + { + "多线程的TCP网络程序": { + "data": { + "uuid": "java-5-261", + "seg": [ + [ + [ + "多线程", + "tcp", + "网络", + "程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TCP案例——文件上传": { + "data": { + "uuid": "java-5-262", + "seg": [ + [ + [ + "tcp", + "案例", + "文件", + "上传" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_746863_797182" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-367", + "seg": [ + [ + [ + "tcp", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络编程的基础知识": { + "children": [ + { + "网络基础知识": { + "data": { + "uuid": "java-5-263", + "seg": [ + [ + [ + "网络", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_28065_7827", + "13_366421_390914", + "13_242829_230722", + "13_202339_126945", + "13_754647_809708", + "13_27461_7548", + "13_390856_432711", + "13_679864_528191", + "13_234676_212011", + "13_1093012_1301944" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-368", + "seg": [ + [ + [ + "网络", + "编程", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java的基本网络支持": { + "children": [ + { + "使用URLDecoder和URLEncoder": { + "data": { + "uuid": "java-5-264", + "seg": [ + [ + [ + "urldecoder" + ], + [ + "urlencoder" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_658400_471548" + ] + } + } + } + } + }, + { + "URL、URLConnection和URLPermission": { + "data": { + "uuid": "java-5-265", + "seg": [ + [ + [ + "url" + ], + [ + "urlconnection" + ], + [ + "urlpermission" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-369", + "seg": [ + [ + [ + "java", + "网络", + "支持" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基于TCP协议的网络编程": { + "children": [ + { + "TCP协议基础": { + "data": { + "uuid": "java-5-266", + "seg": [ + [ + [ + "tcp", + "协议", + "基础" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_3198023_21755113" + ] + } + } + } + } + }, + { + "使用ServerSocket创建TCP服务器端": { + "data": { + "uuid": "java-5-267", + "seg": [ + [ + [ + "serversocket", + "创建", + "tcp", + "服务器端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Socket进行通信": { + "data": { + "uuid": "java-5-268", + "seg": [ + [ + [ + "socket", + "通信" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_248630_245349", + "13_638538_441414", + "13_743997_789370", + "13_679340_526044" + ] + } + } + } + } + }, + { + "记录用户信息": { + "data": { + "uuid": "java-5-269", + "seg": [ + [ + [ + "记录", + "用户", + "信息" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_343727_346183", + "13_1334_2238", + "13_385260_422334", + "13_665078_482562", + "13_653160_461539" + ] + } + } + } + } + }, + { + "半关闭的Socket": { + "data": { + "uuid": "java-5-270", + "seg": [ + [ + [ + "关闭", + "socket" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用NIO实现非阻塞Socket通信": { + "data": { + "uuid": "java-5-271", + "seg": [ + [ + [ + "nio", + "阻塞", + "socket", + "通信" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_267212_285976" + ] + } + } + } + } + }, + { + "使用AIO实现非阻塞通信": { + "data": { + "uuid": "java-5-272", + "seg": [ + [ + [ + "aio", + "阻塞", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-370", + "seg": [ + [ + [ + "tcp", + "协议", + "网络", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基于UDP协议的网络编程": { + "children": [ + { + "UDP协议基础": { + "data": { + "uuid": "java-5-273", + "seg": [ + [ + [ + "udp", + "协议", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用DatagramSocket发送、接收数据": { + "data": { + "uuid": "java-5-274", + "seg": [ + [ + [ + "datagramsocket", + "发送" + ], + [ + "接收数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用MulticastSocket实现多点广播": { + "data": { + "uuid": "java-5-275", + "seg": [ + [ + [ + "multicastsocket", + "广播" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-371", + "seg": [ + [ + [ + "udp", + "协议", + "网络", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用代理服务器": { + "children": [ + { + "直接使用Proxy创建连接": { + "data": { + "uuid": "java-5-276", + "seg": [ + [ + [ + "proxy", + "创建", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用ProxySelector自动选择代理服务器": { + "data": { + "uuid": "java-5-277", + "seg": [ + [ + [ + "proxyselector", + "自动", + "选择", + "代理服务器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_195344_105080" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-372", + "seg": [ + [ + [ + "代理服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 11标准化的HTTP Client": { + "children": [ + { + "发送同步GET请求": { + "data": { + "uuid": "java-5-278", + "seg": [ + [ + [ + "发送", + "同步", + "get" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_772294_835601", + "13_159711_25664", + "13_986071_1153609" + ] + } + } + } + } + }, + { + "发送带请求体的请求": { + "data": { + "uuid": "java-5-279", + "seg": [ + [ + [ + "发送", + "带", + "体" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7425924_53388092" + ] + } + } + } + } + }, + { + "发送异步请求": { + "data": { + "uuid": "java-5-280", + "seg": [ + [ + [ + "发送", + "异步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WebSocket客户端支持": { + "data": { + "uuid": "java-5-281", + "seg": [ + [ + [ + "websocket", + "客户端", + "支持" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基于WebSocket的多人实时聊天": { + "data": { + "uuid": "java-5-282", + "seg": [ + [ + [ + "websocket", + "实时", + "聊天" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-373", + "seg": [ + [ + [ + "java", + "标准化", + "http", + "client" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-258", + "seg": [ + [ + [ + "网络", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初识Java": { + "children": [ + { + "Java简介": { + "children": [ + { + "Java的版本": { + "data": { + "uuid": "java-5-283", + "seg": [ + [ + [ + "java", + "版本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaAPI文档": { + "data": { + "uuid": "java-5-284", + "seg": [ + [ + [ + "javaapi", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的应用领域": { + "data": { + "uuid": "java-5-285", + "seg": [ + [ + [ + "java", + "应用领域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "怎样学好Java": { + "data": { + "uuid": "java-5-286", + "seg": [ + [ + [ + "学好", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java API文档": { + "data": { + "uuid": "java-5-287", + "seg": [ + [ + [ + "java", + "api", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java代码助手": { + "data": { + "uuid": "java-5-288", + "seg": [ + [ + [ + "java", + "助手" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用IDE": { + "data": { + "uuid": "java-5-289", + "seg": [ + [ + [ + "ide" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_692941_569413" + ] + } + } + } + } + }, + { + "使用IDE练习插件": { + "data": { + "uuid": "java-5-290", + "seg": [ + [ + [ + "ide", + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-374", + "seg": [ + [ + [ + "java", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "搭建Java环境": { + "children": [ + { + "JDK的下载": { + "data": { + "uuid": "java-5-291", + "seg": [ + [ + [ + "jdk", + "下载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置JDK": { + "data": { + "uuid": "java-5-292", + "seg": [ + [ + [ + "配置", + "jdk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试开发环境": { + "data": { + "uuid": "java-5-293", + "seg": [ + [ + [ + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_381891_416038", + "13_7417784_53373419", + "13_687165_550187", + "13_357739_374794", + "13_1059872_1257299" + ] + } + } + } + } + }, + { + "Windows系统的JDK环境": { + "data": { + "uuid": "java-5-294", + "seg": [ + [ + [ + "windows", + "系统", + "jdk", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_690996_562423" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-375", + "seg": [ + [ + [ + "搭建", + "java", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Eclipse开发环境": { + "children": [ + { + "Eclipse简介": { + "data": { + "uuid": "java-5-295", + "seg": [ + [ + [ + "eclipse", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "下载Eclipse": { + "data": { + "uuid": "java-5-296", + "seg": [ + [ + [ + "下载", + "eclipse" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7453203_53435910", + "13_228414_194330", + "13_684879_543600", + "13_750701_803944", + "13_7407546_53358953", + "13_160164_26783", + "13_1057075_1254132", + "13_355417_369460", + "13_1713444_7643137" + ] + } + } + } + } + }, + { + "Eclipse工作台": { + "data": { + "uuid": "java-5-297", + "seg": [ + [ + [ + "eclipse", + "工作台" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-376", + "seg": [ + [ + [ + "eclipse", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Eclipse的使用": { + "children": [ + { + "创建Java类文件": { + "data": { + "uuid": "java-5-298", + "seg": [ + [ + [ + "创建", + "java", + "类", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用编辑器编写程序代码": { + "data": { + "uuid": "java-5-299", + "seg": [ + [ + [ + "编辑器", + "编写", + "程序代码" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7452069_53433849" + ] + } + } + } + } + }, + { + "运行Java程序": { + "data": { + "uuid": "java-5-300", + "seg": [ + [ + [ + "运行", + "java", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7466549_53453867", + "13_7466757_53454098", + "13_200477_121081", + "13_196708_109479", + "13_713677_705197", + "13_1097622_1311338", + "13_379178_411015", + "13_7453916_53436576", + "13_7451439_53432683", + "13_757685_813295" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-377", + "seg": [ + [ + [ + "eclipse" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序调试": { + "data": { + "uuid": "java-4-378", + "seg": [ + [ + [ + "程序调试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "难点解答": { + "children": [ + { + "JDK常用的基本组件": { + "data": { + "uuid": "java-5-301", + "seg": [ + [ + [ + "jdk", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置环境变量后,javac运行正常,但编译的时候仍找不到文件": { + "data": { + "uuid": "java-5-302", + "seg": [ + [ + [ + "配置", + "环境变量", + "javac", + "运行", + "编译", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3535695_23009338", + "13_648664_453494", + "13_11792_33377", + "13_648661_453325", + "13_7435686_53406568", + "13_203591_130951", + "13_1096354_1308483", + "13_164073_37557", + "13_7417647_53372963" + ] + } + } + } + } + }, + { + "Java中变量一定要初始化吗?": { + "data": { + "uuid": "java-5-303", + "seg": [ + [ + [ + "java", + "变量", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "switch多分支语句后expression表达式的数据类型": { + "data": { + "uuid": "java-5-304", + "seg": [ + [ + [ + "switch", + "分支", + "语句", + "expression", + "表达式", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多维数组的长度": { + "data": { + "uuid": "java-5-305", + "seg": [ + [ + [ + "数组", + "长度" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222929_180177" + ] + } + } + } + } + }, + { + "StringBuffer与String的不同之处": { + "data": { + "uuid": "java-5-306", + "seg": [ + [ + [ + "stringbuffer" + ], + [ + "string", + "不同之处" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把数据抽象成类": { + "data": { + "uuid": "java-5-307", + "seg": [ + [ + [ + "数据抽象", + "成类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "局部变量和全局变量": { + "data": { + "uuid": "java-5-308", + "seg": [ + [ + [ + "局部变量" + ], + [ + "全局变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_349425_357206" + ] + } + } + } + } + }, + { + "类的三大特性": { + "data": { + "uuid": "java-5-309", + "seg": [ + [ + [ + "类", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "什么情况下会使用匿名内部类?": { + "data": { + "uuid": "java-5-310", + "seg": [ + [ + [ + "情况", + "下会", + "匿名", + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1094980_1305598", + "13_7407704_53357742", + "13_7462536_53448095", + "13_7462450_53447950", + "13_7440439_53422056", + "13_11297_5414" + ] + } + } + } + } + }, + { + "异常的使用原则": { + "data": { + "uuid": "java-5-311", + "seg": [ + [ + [ + "异常", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注意随机数的取值范围": { + "data": { + "uuid": "java-5-312", + "seg": [ + [ + [ + "随机数", + "取值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_198071_113397", + "13_323245_313682", + "13_7415231_53368588", + "13_225292_186169", + "13_366791_391731" + ] + } + } + } + } + }, + { + "“装箱”与“拆箱”": { + "data": { + "uuid": "java-5-313", + "seg": [ + [ + [ + "装箱" + ], + [ + "拆箱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合的使用场合": { + "data": { + "uuid": "java-5-314", + "seg": [ + [ + [ + "集合", + "场合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合的元素数量是变化的": { + "data": { + "uuid": "java-5-315", + "seg": [ + [ + [ + "集合", + "元素", + "数量", + "变化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing组件的层级关系": { + "data": { + "uuid": "java-5-316", + "seg": [ + [ + [ + "swing", + "组件", + "层级", + "关系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布局的使用": { + "data": { + "uuid": "java-5-317", + "seg": [ + [ + [ + "布局" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输入/输出流的使用": { + "data": { + "uuid": "java-5-318", + "seg": [ + [ + [ + "输入", + "输出", + "流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "线程的核心方法:run方法": { + "data": { + "uuid": "java-5-319", + "seg": [ + [ + [ + "线程", + "核心", + "方法" + ] + ], + [ + [ + "run", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230584_200045", + "13_227313_191248", + "13_655919_473719", + "13_381904_416061", + "13_7401977_53349540", + "13_202453_127265", + "13_188612_86005", + "13_349599_357539" + ] + } + } + } + } + }, + { + "线程的启动": { + "data": { + "uuid": "java-5-320", + "seg": [ + [ + [ + "线程", + "启动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无法连接数据库": { + "data": { + "uuid": "java-5-321", + "seg": [ + [ + [ + "连接", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SQL语句的使用": { + "data": { + "uuid": "java-5-322", + "seg": [ + [ + [ + "sql", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWT与Swing组件的区别": { + "data": { + "uuid": "java-5-323", + "seg": [ + [ + [ + "awt" + ], + [ + "swing", + "组件", + "区别" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-379", + "seg": [ + [ + [ + "难点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java语言的特性": { + "children": [ + { + "简单": { + "data": { + "uuid": "java-5-324", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布性": { + "data": { + "uuid": "java-5-325", + "seg": [ + [ + [ + "分布", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解释型": { + "data": { + "uuid": "java-5-326", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "动态": { + "data": { + "uuid": "java-5-327", + "seg": [ + [ + [ + "动态" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_648501_453132", + "13_658502_471623" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-380", + "seg": [ + [ + [ + "java", + "语言", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-259", + "seg": [ + [ + [ + "初识", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java语言基础": { + "children": [ + { + "代码注释": { + "children": [ + { + "文档注释": { + "children": [ + { + "注释的插入": { + "data": { + "uuid": "java-6-83", + "seg": [ + [ + [ + "注释", + "插入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7439999_53414844", + "13_27935_7764", + "13_207881_142992", + "13_678843_524133", + "13_244377_234443" + ] + } + } + } + } + }, + { + "类注释": { + "data": { + "uuid": "java-6-84", + "seg": [ + [ + [ + "类", + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法注释": { + "data": { + "uuid": "java-6-85", + "seg": [ + [ + [ + "方法", + "注释" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7460105_53445144", + "13_714376_706403" + ] + } + } + } + } + }, + { + "字段注释": { + "data": { + "uuid": "java-6-86", + "seg": [ + [ + [ + "字", + "段", + "注释" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_681911_535374", + "13_7424935_53386112", + "13_784800_862045", + "13_696861_581294", + "13_372337_399635", + "13_176647_59155", + "13_258441_266366", + "13_666212_484247", + "13_1064896_1263931", + "13_7438378_53411722" + ] + } + } + } + } + }, + { + "通用注释": { + "data": { + "uuid": "java-6-87", + "seg": [ + [ + [ + "通用", + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包注释": { + "data": { + "uuid": "java-6-88", + "seg": [ + [ + [ + "包", + "注释" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1088636_1295067", + "13_717787_711196", + "13_720089_714613", + "13_7434706_53405184", + "13_7454854_53437546", + "13_354751_368008", + "13_7415408_53368860", + "13_745189_792581", + "13_1097522_1311099", + "13_1062178_1260080" + ] + } + } + } + } + }, + { + "注释抽取": { + "data": { + "uuid": "java-6-89", + "seg": [ + [ + [ + "注释", + "抽取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-328", + "seg": [ + [ + [ + "文档", + "注释" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_380428_413257" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-381", + "seg": [ + [ + [ + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据类型转换": { + "children": [ + { + "隐式转换": { + "data": { + "uuid": "java-5-329", + "seg": [ + [ + [ + "隐式", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "显式转换": { + "data": { + "uuid": "java-5-330", + "seg": [ + [ + [ + "显式", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "隐式类型转换": { + "data": { + "uuid": "java-5-331", + "seg": [ + [ + [ + "隐式", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7413593_53365681" + ] + } + } + } + } + }, + { + "显式类型转换": { + "data": { + "uuid": "java-5-332", + "seg": [ + [ + [ + "显式", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_226615_189547", + "13_223295_181169", + "13_159356_24563", + "13_743378_787537", + "13_373466_401432", + "13_829012_925042" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-382", + "seg": [ + [ + [ + "数据", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1094360_1304607", + "13_226109_188138" + ] + } + } + } + } + }, + { + "Java主类结构": { + "children": [ + { + "包声明": { + "data": { + "uuid": "java-5-333", + "seg": [ + [ + [ + "包", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写主方法": { + "data": { + "uuid": "java-5-334", + "seg": [ + [ + [ + "编写", + "主", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入API类库": { + "data": { + "uuid": "java-5-335", + "seg": [ + [ + [ + "导入", + "api", + "类库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-383", + "seg": [ + [ + [ + "java", + "主类", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_216193_163322" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-260", + "seg": [ + [ + [ + "java", + "语言", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流程控制": { + "children": [ + { + "程序结构": { + "data": { + "uuid": "java-4-384", + "seg": [ + [ + [ + "程序结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "条件语句": { + "children": [ + { + "switch多分支语句": { + "data": { + "uuid": "java-5-336", + "seg": [ + [ + [ + "switch", + "分支", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-385", + "seg": [ + [ + [ + "条件语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环语句": { + "children": [ + { + "foreach语句": { + "data": { + "uuid": "java-5-337", + "seg": [ + [ + [ + "for", + "each", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_203609_131109", + "13_7460933_53446185", + "13_651498_458782", + "13_653541_462370" + ] + } + } + } + } + }, + { + "循环语句的嵌套": { + "data": { + "uuid": "java-5-338", + "seg": [ + [ + [ + "循环", + "语句", + "嵌套" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_241157_226760", + "13_6373037_44672022", + "13_7455194_53437979", + "13_7462062_53447369", + "13_10038_4650", + "13_646085_448282", + "13_200620_121405", + "13_7465959_53453082", + "13_390668_432389", + "13_7465922_53453046" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-386", + "seg": [ + [ + [ + "循环", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_195482_105276" + ] + } + } + } + } + }, + { + "复合语句": { + "data": { + "uuid": "java-4-387", + "seg": [ + [ + [ + "复合", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1092815_1301442" + ] + } + } + } + } + }, + { + "循环控制": { + "data": { + "uuid": "java-4-388", + "seg": [ + [ + [ + "循环", + "控制" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_252347_251984", + "13_644363_445004", + "13_1104933_1319142", + "13_354647_367759", + "13_664166_480941", + "13_226666_189796", + "13_4572392_29134447" + ] + } + } + } + } + }, + { + "循环": { + "data": { + "uuid": "java-4-389", + "seg": [ + [ + [ + "循环" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_185662_77130" + ] + } + } + } + } + }, + { + "中断控制流程的语句": { + "data": { + "uuid": "java-4-390", + "seg": [ + [ + [ + "中断", + "控制", + "流程", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "if判断": { + "data": { + "uuid": "java-4-391", + "seg": [ + [ + [ + "if", + "判断" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_388777_428848", + "13_225421_186499", + "13_227586_192107", + "13_7425293_53386620", + "13_781475_852228", + "13_665906_483739", + "13_7396669_53341157", + "13_655203_465610", + "13_251899_251039", + "13_7447035_53426568" + ] + } + } + } + } + }, + { + "switch多重选择": { + "data": { + "uuid": "java-4-392", + "seg": [ + [ + [ + "switch", + "多重选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "while循环": { + "data": { + "uuid": "java-4-393", + "seg": [ + [ + [ + "while循环" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744676_791129", + "13_720137_714450", + "13_1093369_1302689", + "13_1032518_1228306", + "13_766581_825861" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-261", + "seg": [ + [ + [ + "流程", + "控制" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7422932_53381818" + ] + } + } + } + } + }, + { + "面向对象编程基础": { + "children": [ + { + "类的主方法": { + "data": { + "uuid": "java-4-394", + "seg": [ + [ + [ + "类", + "主", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-262", + "seg": [ + [ + [ + "面向对象编程", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象核心技术": { + "children": [ + { + "类的多态": { + "children": [ + { + "向上转型": { + "children": [ + { + "忘记对象类型": { + "data": { + "uuid": "java-6-90", + "seg": [ + [ + [ + "忘记", + "对象", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_205547_136205" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-339", + "seg": [ + [ + [ + "向上", + "转型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_365572_388889", + "13_675330_508630", + "13_160689_28665" + ] + } + } + } + } + }, + { + "向下转型": { + "data": { + "uuid": "java-5-340", + "seg": [ + [ + [ + "向下", + "转型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_382380_416931" + ] + } + } + } + } + }, + { + "instanceof关键字": { + "data": { + "uuid": "java-5-341", + "seg": [ + [ + [ + "instanceof", + "关键字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_648936_453974" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-395", + "seg": [ + [ + [ + "类", + "多态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-263", + "seg": [ + [ + [ + "面向对象", + "核心技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing程序设计": { + "children": [ + { + "常用窗体": { + "children": [ + { + "JFrame窗体": { + "data": { + "uuid": "java-5-342", + "seg": [ + [ + [ + "jframe", + "窗体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDialog对话框窗体": { + "data": { + "uuid": "java-5-343", + "seg": [ + [ + [ + "jdialog", + "对话框", + "窗体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDialog窗体": { + "data": { + "uuid": "java-5-344", + "seg": [ + [ + [ + "jdialog", + "窗体" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_351192_360472", + "13_222702_179327", + "13_377786_408570", + "13_60573_34737" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-396", + "seg": [ + [ + [ + "窗体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用面板": { + "children": [ + { + "JPanel面板": { + "data": { + "uuid": "java-5-345", + "seg": [ + [ + [ + "jpanel", + "面板" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_717741_711153", + "13_651509_458836", + "13_204161_132456", + "13_685071_544235", + "13_754354_809411", + "13_7399615_53346971", + "13_216327_163521", + "13_188170_84509", + "13_215814_162360", + "13_398785_436864" + ] + } + } + } + } + }, + { + "JScrollPane滚动面板": { + "data": { + "uuid": "java-5-346", + "seg": [ + [ + [ + "jscrollpane", + "滚动", + "面板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JScrollPane面板": { + "data": { + "uuid": "java-5-347", + "seg": [ + [ + [ + "jscrollpane", + "面板" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1095811_1307532" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-397", + "seg": [ + [ + [ + "面板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表组件": { + "children": [ + { + "JComboBox下拉列表框组件": { + "data": { + "uuid": "java-5-348", + "seg": [ + [ + [ + "jcombobox", + "下拉", + "列表框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JList列表框组件": { + "data": { + "uuid": "java-5-349", + "seg": [ + [ + [ + "jlist", + "列表框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "下拉列表框组件": { + "data": { + "uuid": "java-5-350", + "seg": [ + [ + [ + "拉", + "列表框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表框组件": { + "data": { + "uuid": "java-5-351", + "seg": [ + [ + [ + "列表框", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-398", + "seg": [ + [ + [ + "列表", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件监听器": { + "children": [ + { + "动作事件监听器": { + "data": { + "uuid": "java-5-352", + "seg": [ + [ + [ + "动作", + "事件", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "键盘事件": { + "data": { + "uuid": "java-5-353", + "seg": [ + [ + [ + "键盘", + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_229242_197721", + "13_368513_394895" + ] + } + } + } + } + }, + { + "鼠标事件": { + "data": { + "uuid": "java-5-354", + "seg": [ + [ + [ + "鼠标", + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_256097_260981", + "13_689320_557122", + "13_1061305_1259112" + ] + } + } + } + } + }, + { + "窗体事件": { + "children": [ + { + "捕获窗体焦点变化事件": { + "data": { + "uuid": "java-6-91", + "seg": [ + [ + [ + "捕获", + "窗体", + "焦点", + "变化", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "捕获窗体状态变化事件": { + "data": { + "uuid": "java-6-92", + "seg": [ + [ + [ + "捕获", + "窗体", + "状态", + "变化", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "捕获其他窗体事件": { + "data": { + "uuid": "java-6-93", + "seg": [ + [ + [ + "捕获", + "窗体", + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_2855_3937", + "13_700209_589158", + "13_192989_97452", + "13_212061_152902", + "13_675115_507375", + "13_1078338_1282704", + "13_749692_802409", + "13_675366_508843" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-355", + "seg": [ + [ + [ + "窗体", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "监听事件简介": { + "data": { + "uuid": "java-5-356", + "seg": [ + [ + [ + "监听", + "事件", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_387179_426165", + "13_162501_33733", + "13_669997_491976" + ] + } + } + } + } + }, + { + "焦点事件监听器": { + "data": { + "uuid": "java-5-357", + "seg": [ + [ + [ + "焦点", + "事件", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-399", + "seg": [ + [ + [ + "事件", + "监听器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-264", + "seg": [ + [ + [ + "swing", + "程序设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "I/O(输入/输出)": { + "children": [ + { + "流概述": { + "data": { + "uuid": "java-4-400", + "seg": [ + [ + [ + "流", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "输入/输出流": { + "children": [ + { + "输入流": { + "data": { + "uuid": "java-5-358", + "seg": [ + [ + [ + "输入", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_235439_214429", + "13_248942_244366", + "13_7415679_53369237" + ] + } + } + } + } + }, + { + "输出流": { + "data": { + "uuid": "java-5-359", + "seg": [ + [ + [ + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_382536_417165", + "13_242955_231095", + "13_223418_181453", + "13_7452641_53434749", + "13_7463694_53449797", + "13_644309_446045" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-401", + "seg": [ + [ + [ + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件输入/输出流": { + "children": [ + { + "FileInputStream类与FileOutputStream类": { + "data": { + "uuid": "java-5-360", + "seg": [ + [ + [ + "fileinputstream", + "类" + ], + [ + "fileoutputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_227281_191354", + "13_392608_436148", + "13_373422_401365" + ] + } + } + } + } + }, + { + "FileReader类与FileWriter类": { + "data": { + "uuid": "java-5-361", + "seg": [ + [ + [ + "filereader", + "类" + ], + [ + "filewriter", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-402", + "seg": [ + [ + [ + "文件", + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "带缓冲的输入/输出流": { + "children": [ + { + "BufferedInputStream类与BufferedOutputStream类": { + "data": { + "uuid": "java-5-362", + "seg": [ + [ + [ + "bufferedinputstream", + "类" + ], + [ + "bufferedoutputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_667732_487097" + ] + } + } + } + } + }, + { + "BufferedReader类与BufferedWriter类": { + "data": { + "uuid": "java-5-363", + "seg": [ + [ + [ + "bufferedreader", + "类" + ], + [ + "bufferedwriter", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_790262_875541" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-403", + "seg": [ + [ + [ + "带", + "缓冲", + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "带缓存的输入/输出流": { + "data": { + "uuid": "java-4-404", + "seg": [ + [ + [ + "带", + "缓存", + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据输入/输出流": { + "data": { + "uuid": "java-4-405", + "seg": [ + [ + [ + "数据", + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ZIP压缩输入/输出流": { + "children": [ + { + "压缩文件": { + "data": { + "uuid": "java-5-364", + "seg": [ + [ + [ + "压缩文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_206292_138470" + ] + } + } + } + } + }, + { + "解压缩ZIP文件": { + "data": { + "uuid": "java-5-365", + "seg": [ + [ + [ + "解压缩", + "zip", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_389950_436476", + "13_349667_357578", + "13_745545_793618", + "13_747145_798046" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-406", + "seg": [ + [ + [ + "zip", + "压缩", + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-265", + "seg": [ + [ + [ + "i", + "o", + "输入", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JDBC操作数据库": { + "children": [ + { + "JDBC概述": { + "children": [ + { + "JDBC-ODBC桥": { + "data": { + "uuid": "java-5-366", + "seg": [ + [ + [ + "jdbc", + "odbc", + "桥" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "JDBC技术": { + "data": { + "uuid": "java-5-367", + "seg": [ + [ + [ + "jdbc", + "技术" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_223578_181836", + "13_696534_580517", + "13_6246364_43590967", + "13_220771_173831", + "13_222819_179664", + "13_960845_1109660", + "13_28058_7831", + "13_378937_410685", + "13_7400940_53348891", + "13_7433707_53403992" + ] + } + } + } + } + }, + { + "JDBC驱动程序的类型": { + "data": { + "uuid": "java-5-368", + "seg": [ + [ + [ + "jdbc", + "驱动程序", + "类型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-407", + "seg": [ + [ + [ + "jdbc", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库操作": { + "children": [ + { + "数据库基础": { + "data": { + "uuid": "java-5-369", + "seg": [ + [ + [ + "数据库", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据查询": { + "data": { + "uuid": "java-5-370", + "seg": [ + [ + [ + "数据", + "查询" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_924844_1061016", + "13_644929_445924", + "13_745433_793287", + "13_675629_510519", + "13_240573_225158", + "13_206097_137759", + "13_242278_229657", + "13_719897_714111", + "13_7416844_53371221", + "13_751578_805233" + ] + } + } + } + } + }, + { + "动态查询": { + "data": { + "uuid": "java-5-371", + "seg": [ + [ + [ + "动态", + "查询" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_743807_788860" + ] + } + } + } + } + }, + { + "添加、修改、删除记录": { + "data": { + "uuid": "java-5-372", + "seg": [ + [ + [ + "添加" + ], + [ + "修改" + ], + [ + "删除", + "记录" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_774134_838043", + "13_774154_838061" + ] + } + } + } + } + }, + { + "数据库基础知识": { + "children": [ + { + "什么是数据库": { + "data": { + "uuid": "java-6-94", + "seg": [ + [ + [ + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_229343_196949", + "13_364798_387050", + "13_7432772_53402615", + "13_215972_162722", + "13_250163_247051", + "13_321_653", + "13_354390_367022", + "13_181440_66599", + "13_939546_1075811", + "13_25642_6922" + ] + } + } + } + } + }, + { + "数据库的种类及功能": { + "data": { + "uuid": "java-6-95", + "seg": [ + [ + [ + "数据库", + "种类" + ], + [ + "功能" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_766110_825193" + ] + } + } + } + } + }, + { + "SQL语言": { + "data": { + "uuid": "java-6-96", + "seg": [ + [ + [ + "sql", + "语言" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_347725_353873", + "13_716998_710115", + "13_224951_185255", + "13_1091655_1299213", + "13_7455134_53438043", + "13_7447961_53427927", + "13_7452133_53433933", + "13_222535_178883", + "13_375765_405350", + "13_7449380_53429640" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-373", + "seg": [ + [ + [ + "数据库", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "向数据库发送SQL语句": { + "data": { + "uuid": "java-5-374", + "seg": [ + [ + [ + "数据库", + "发送", + "sql", + "语句" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_690163_559646", + "13_1490761_5955864", + "13_892065_1030350", + "13_770799_832847", + "13_166726_40042", + "13_757252_812635" + ] + } + } + } + } + }, + { + "处理查询结果集": { + "data": { + "uuid": "java-5-375", + "seg": [ + [ + [ + "查询", + "集" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "顺序查询": { + "data": { + "uuid": "java-5-376", + "seg": [ + [ + [ + "顺序", + "查询" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "模糊查询": { + "data": { + "uuid": "java-5-377", + "seg": [ + [ + [ + "模糊", + "查询" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_757378_812811", + "13_745331_792964" + ] + } + } + } + } + }, + { + "预处理语句": { + "data": { + "uuid": "java-5-378", + "seg": [ + [ + [ + "预处理", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-408", + "seg": [ + [ + [ + "数据库", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-266", + "seg": [ + [ + [ + "jdbc", + "操作", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java绘图": { + "children": [ + { + "Java绘图基础": { + "children": [ + { + "Graphics绘图类": { + "data": { + "uuid": "java-5-379", + "seg": [ + [ + [ + "graphics", + "绘图", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Graphics2D绘图类": { + "data": { + "uuid": "java-5-380", + "seg": [ + [ + [ + "graphics2d", + "绘图", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7422904_53383998" + ] + } + } + } + } + }, + { + "Canvas画布类": { + "data": { + "uuid": "java-5-381", + "seg": [ + [ + [ + "canvas", + "画布", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-409", + "seg": [ + [ + [ + "java", + "绘图", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "绘制几何图形": { + "data": { + "uuid": "java-4-410", + "seg": [ + [ + [ + "绘制", + "几何图形" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置颜色与画笔": { + "children": [ + { + "设置颜色": { + "data": { + "uuid": "java-5-382", + "seg": [ + [ + [ + "设置", + "颜色" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_24203_6289", + "13_1561_2546" + ] + } + } + } + } + }, + { + "设置画笔": { + "data": { + "uuid": "java-5-383", + "seg": [ + [ + [ + "设置", + "画笔" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_646495_449238", + "13_241004_226623", + "13_2176_3370", + "13_210957_150342", + "13_3477_4378", + "13_929470_1064424", + "13_1149_1985", + "13_700997_590437", + "13_1101447_1315932", + "13_1270_2158" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-411", + "seg": [ + [ + [ + "设置", + "颜色" + ], + [ + "画笔" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像处理": { + "children": [ + { + "绘制图像": { + "data": { + "uuid": "java-5-384", + "seg": [ + [ + [ + "绘制", + "图像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像缩放": { + "data": { + "uuid": "java-5-385", + "seg": [ + [ + [ + "图像", + "缩放" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_162477_33631" + ] + } + } + } + } + }, + { + "放大与缩小": { + "data": { + "uuid": "java-5-386", + "seg": [ + [ + [ + "放大" + ], + [ + "缩小" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像翻转": { + "data": { + "uuid": "java-5-387", + "seg": [ + [ + [ + "图像", + "翻转" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像旋转": { + "data": { + "uuid": "java-5-388", + "seg": [ + [ + [ + "图像", + "旋转" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3362_4385" + ] + } + } + } + } + }, + { + "图像倾斜": { + "data": { + "uuid": "java-5-389", + "seg": [ + [ + [ + "图像", + "倾斜" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-412", + "seg": [ + [ + [ + "图像处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Graphics": { + "data": { + "uuid": "java-4-413", + "seg": [ + [ + [ + "graphics" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Graphics2D": { + "data": { + "uuid": "java-4-414", + "seg": [ + [ + [ + "graphics2d" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-267", + "seg": [ + [ + [ + "java", + "绘图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "坦克大战游戏": { + "children": [ + { + "开发背景": { + "data": { + "uuid": "java-4-415", + "seg": [ + [ + [ + "开发", + "背景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "系统开发环境要求": { + "data": { + "uuid": "java-4-416", + "seg": [ + [ + [ + "系统", + "开发", + "环境" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "系统功能设计": { + "children": [ + { + "系统功能结构": { + "data": { + "uuid": "java-5-390", + "seg": [ + [ + [ + "系统", + "功能", + "结构" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_248748_243911" + ] + } + } + } + } + }, + { + "系统业务流程": { + "data": { + "uuid": "java-5-391", + "seg": [ + [ + [ + "系统", + "业务流程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_747545_798851", + "13_7466778_53454117", + "13_352269_362465", + "13_155587_16597", + "13_7461638_53446812", + "13_7466522_53453787", + "13_7464182_53450530", + "13_661956_477297" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-417", + "seg": [ + [ + [ + "系统", + "功能设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "枚举设计": { + "children": [ + { + "方向枚举": { + "data": { + "uuid": "java-5-392", + "seg": [ + [ + [ + "方向", + "枚举" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_26805_7281" + ] + } + } + } + } + }, + { + "游戏模式枚举": { + "data": { + "uuid": "java-5-393", + "seg": [ + [ + [ + "游戏", + "模式", + "枚举" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "坦克类型枚举": { + "data": { + "uuid": "java-5-394", + "seg": [ + [ + [ + "坦克", + "类型", + "枚举" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "墙块类型枚举": { + "data": { + "uuid": "java-5-395", + "seg": [ + [ + [ + "墙块", + "类型", + "枚举" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-418", + "seg": [ + [ + [ + "枚举", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "公共类设计": { + "children": [ + { + "绘图工具类": { + "data": { + "uuid": "java-5-396", + "seg": [ + [ + [ + "绘图", + "工具", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "地图工具类": { + "data": { + "uuid": "java-5-397", + "seg": [ + [ + [ + "地图", + "工具", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-419", + "seg": [ + [ + [ + "公共", + "类", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模型类设计": { + "children": [ + { + "可显示图像的抽象类": { + "data": { + "uuid": "java-5-398", + "seg": [ + [ + [ + "显示", + "图像", + "抽象类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "玩家坦克类": { + "data": { + "uuid": "java-5-399", + "seg": [ + [ + [ + "玩家", + "坦克", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "电脑坦克类": { + "data": { + "uuid": "java-5-400", + "seg": [ + [ + [ + "电脑", + "坦克", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_227645_203266", + "13_657605_470218" + ] + } + } + } + } + }, + { + "子弹类": { + "data": { + "uuid": "java-5-401", + "seg": [ + [ + [ + "子弹", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_681293_533502" + ] + } + } + } + } + }, + { + "基地类": { + "data": { + "uuid": "java-5-402", + "seg": [ + [ + [ + "基地", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "爆炸效果类": { + "data": { + "uuid": "java-5-403", + "seg": [ + [ + [ + "爆炸", + "效果", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7431780_53400329" + ] + } + } + } + } + }, + { + "地图类": { + "data": { + "uuid": "java-5-404", + "seg": [ + [ + [ + "地图", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_658924_472393" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-420", + "seg": [ + [ + [ + "模型", + "类", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "墙块设计": { + "children": [ + { + "墙块抽象类": { + "data": { + "uuid": "java-5-405", + "seg": [ + [ + [ + "墙块", + "抽象类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "墙块实体类": { + "data": { + "uuid": "java-5-406", + "seg": [ + [ + [ + "墙块", + "实体类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_358137_375827", + "13_720040_714436", + "13_7398609_53345817", + "13_1057289_1254307" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-421", + "seg": [ + [ + [ + "墙块", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "窗体类设计": { + "children": [ + { + "主窗体": { + "data": { + "uuid": "java-5-407", + "seg": [ + [ + [ + "主", + "窗体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "登录面板": { + "data": { + "uuid": "java-5-408", + "seg": [ + [ + [ + "登录", + "面板" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230930_201044", + "13_183779_71646", + "13_682240_536206", + "13_656288_468563", + "13_1102169_1316559", + "13_233356_208106", + "13_202589_128372", + "13_770936_834896", + "13_1070181_1271532", + "13_334982_328209" + ] + } + } + } + } + }, + { + "显示关卡面板": { + "data": { + "uuid": "java-5-409", + "seg": [ + [ + [ + "显示", + "关卡", + "面板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "游戏面板": { + "data": { + "uuid": "java-5-410", + "seg": [ + [ + [ + "游戏", + "面板" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_686617_548545", + "13_665132_482603", + "13_265759_282333", + "13_7454084_53436769", + "13_668060_488932", + "13_7463944_53450292", + "13_348070_354469", + "13_749598_802173" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-422", + "seg": [ + [ + [ + "窗体", + "类", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "游戏核心功能设计": { + "children": [ + { + "碰撞检测": { + "data": { + "uuid": "java-5-411", + "seg": [ + [ + [ + "碰撞检测" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7400818_53348776" + ] + } + } + } + } + }, + { + "刷新帧": { + "data": { + "uuid": "java-5-412", + "seg": [ + [ + [ + "刷新", + "帧" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_763022_823454", + "13_677706_520144" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-423", + "seg": [ + [ + [ + "游戏", + "核心", + "功能设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-268", + "seg": [ + [ + [ + "坦克", + "大战", + "游戏" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_365021_388302", + "13_644785_445751", + "13_200075_119768", + "13_215533_161961", + "13_194539_102336" + ] + } + } + } + } + }, + { + "对象导论": { + "children": [ + { + "抽象过程": { + "data": { + "uuid": "java-4-424", + "seg": [ + [ + [ + "抽象", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "每个对象都有一个接口": { + "data": { + "uuid": "java-4-425", + "seg": [ + [ + [ + "对象", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_653801_462929" + ] + } + } + } + } + }, + { + "每个对象都提供服务": { + "data": { + "uuid": "java-4-426", + "seg": [ + [ + [ + "对象", + "提供", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "被隐藏的具体实现": { + "data": { + "uuid": "java-4-427", + "seg": [ + [ + [ + "隐藏" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_647038_450031", + "13_183450_70669" + ] + } + } + } + } + }, + { + "复用具体实现": { + "data": { + "uuid": "java-4-428", + "seg": [ + [ + [ + "复用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "伴随多态的可互换对象": { + "data": { + "uuid": "java-4-429", + "seg": [ + [ + [ + "伴随", + "多态", + "互换", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单根继承结构": { + "data": { + "uuid": "java-4-430", + "seg": [ + [ + [ + "单根", + "继承", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器": { + "children": [ + { + "参数化类型(范型)": { + "data": { + "uuid": "java-5-413", + "seg": [ + [ + [ + "参数", + "化", + "类型", + "范型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-431", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发编程": { + "data": { + "uuid": "java-4-432", + "seg": [ + [ + [ + "并发", + "编程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_241884_228572", + "13_860068_987835" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-269", + "seg": [ + [ + [ + "对象", + "导论" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作符": { + "children": [ + { + "更简单的打印语句": { + "data": { + "uuid": "java-4-433", + "seg": [ + [ + [ + "打印", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Java操作符": { + "data": { + "uuid": "java-4-434", + "seg": [ + [ + [ + "java", + "操作符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7423082_53382939" + ] + } + } + } + } + }, + { + "优先级": { + "data": { + "uuid": "java-4-435", + "seg": [ + [ + [ + "优先级" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7407841_53357978", + "13_1051241_1248430" + ] + } + } + } + } + }, + { + "赋值": { + "data": { + "uuid": "java-4-436", + "seg": [ + [ + [ + "赋值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_338955_337173", + "13_654251_463740", + "13_667133_485923", + "13_7440055_53414960", + "13_7444622_53423042", + "13_716077_708586" + ] + } + } + } + } + }, + { + "算术操作符": { + "children": [ + { + "一元加、减操作符": { + "data": { + "uuid": "java-5-414", + "seg": [ + [ + [], + [ + "减", + "操作符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7433895_53404246" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-437", + "seg": [ + [ + [ + "算术操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动递增和递减": { + "data": { + "uuid": "java-4-438", + "seg": [ + [ + [ + "自动", + "递增" + ], + [ + "递减" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_747226_798251" + ] + } + } + } + } + }, + { + "关系操作符": { + "children": [ + { + "测试对象的等价性": { + "data": { + "uuid": "java-5-415", + "seg": [ + [ + [ + "对象", + "等价", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-439", + "seg": [ + [ + [ + "关系", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "逻辑操作符": { + "children": [ + { + "短路": { + "data": { + "uuid": "java-5-416", + "seg": [ + [ + [ + "短路" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-440", + "seg": [ + [ + [ + "逻辑", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "按位操作符": { + "data": { + "uuid": "java-4-441", + "seg": [ + [ + [ + "位", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "移位操作符": { + "data": { + "uuid": "java-4-442", + "seg": [ + [ + [ + "移位", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "三元操作符if-else": { + "data": { + "uuid": "java-4-443", + "seg": [ + [ + [ + "操作符", + "if", + "else" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串操作符 + 和 +=": { + "data": { + "uuid": "java-4-444", + "seg": [ + [ + [ + "字符串", + "操作符" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用操作符时常犯的错误": { + "data": { + "uuid": "java-4-445", + "seg": [ + [ + [ + "操作符", + "时常", + "犯" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型转换操作符": { + "children": [ + { + "截尾和舍入": { + "data": { + "uuid": "java-5-417", + "seg": [ + [ + [ + "截尾" + ], + [ + "舍入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提升": { + "data": { + "uuid": "java-5-418", + "seg": [ + [ + [ + "提升" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7461884_53447338" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-446", + "seg": [ + [ + [ + "类型转换", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java没有“sizeof”": { + "data": { + "uuid": "java-4-447", + "seg": [ + [ + [ + "java", + "sizeof" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-270", + "seg": [ + [ + [ + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制执行流程": { + "children": [ + { + "true和false": { + "data": { + "uuid": "java-4-448", + "seg": [ + [ + [ + "true" + ], + [ + "false" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_662624_478345", + "13_171_363", + "13_250899_248863", + "13_7418156_53374022", + "13_26987_7335", + "13_7420179_53378133", + "13_7429296_53396088", + "13_229169_196467", + "13_1101526_1316028" + ] + } + } + } + } + }, + { + "if-else": { + "data": { + "uuid": "java-4-449", + "seg": [ + [ + [ + "if", + "else" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_379480_411456", + "13_235101_213657", + "13_7431399_53399775", + "13_377575_408247", + "13_7428424_53394137", + "13_643647_443661", + "13_227848_192736", + "13_214732_159793", + "13_7459898_53444933", + "13_227835_192696" + ] + } + } + } + } + }, + { + "迭代": { + "children": [ + { + "do-while": { + "data": { + "uuid": "java-5-419", + "seg": [ + [ + [ + "do", + "while" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7397168_53341656", + "13_164544_38410", + "13_5268979_32301333", + "13_365327_388243", + "13_6375461_44757350", + "13_1101493_1315992", + "13_1085022_1291813", + "13_1069406_1270377", + "13_191569_93352", + "13_671750_496026" + ] + } + } + } + } + }, + { + "逗号操作符": { + "data": { + "uuid": "java-5-420", + "seg": [ + [ + [ + "逗号", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-450", + "seg": [ + [ + [ + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Foreach语法": { + "data": { + "uuid": "java-4-451", + "seg": [ + [ + [ + "foreach", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "return": { + "data": { + "uuid": "java-4-452", + "seg": [ + [ + [ + "return" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_210542_149500", + "13_1095992_1307874", + "13_643301_443264", + "13_7407214_53357077", + "13_659240_472823", + "13_415151_437060", + "13_347260_353102", + "13_219087_169712", + "13_7429380_53396230", + "13_6495251_45681420" + ] + } + } + } + } + }, + { + "break和continue": { + "data": { + "uuid": "java-4-453", + "seg": [ + [ + [ + "break" + ], + [ + "continue" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1094542_1304891", + "13_362216_381339", + "13_646611_449268", + "13_7405230_53354420", + "13_7395878_53338909" + ] + } + } + } + } + }, + { + "臭名昭著的“goto”": { + "data": { + "uuid": "java-4-454", + "seg": [ + [ + [ + "臭名昭著", + "goto" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "switch": { + "data": { + "uuid": "java-4-455", + "seg": [ + [ + [ + "switch" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_387160_426060", + "13_262829_276309", + "13_860569_987633", + "13_754209_809083", + "13_7416846_53371202", + "13_7451529_53432864", + "13_742597_785139" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-271", + "seg": [ + [ + [ + "控制", + "执行", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初始化与清理": { + "children": [ + { + "用构造器确保初始化": { + "data": { + "uuid": "java-4-456", + "seg": [ + [ + [ + "构造", + "器", + "确保", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缺省构造器": { + "data": { + "uuid": "java-4-457", + "seg": [ + [ + [ + "缺省", + "构造", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "成员初始化": { + "children": [ + { + "指定初始化": { + "data": { + "uuid": "java-5-421", + "seg": [ + [ + [ + "指定", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_2187_3386", + "13_366619_391424", + "13_188064_84029", + "13_765624_824600", + "13_671711_495926", + "13_221755_176420", + "13_241661_227976", + "13_7397491_53342543" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-458", + "seg": [ + [ + [ + "成员", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造器初始化": { + "children": [ + { + "初始化顺序": { + "data": { + "uuid": "java-5-422", + "seg": [ + [ + [ + "初始化", + "顺序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_197062_110483", + "13_357666_374795" + ] + } + } + } + } + }, + { + "静态数据的初始化": { + "data": { + "uuid": "java-5-423", + "seg": [ + [ + [ + "静态数据", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "显式的静态初始化": { + "data": { + "uuid": "java-5-424", + "seg": [ + [ + [ + "显式", + "静态", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_747565_798878", + "13_383288_418624" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-459", + "seg": [ + [ + [ + "构造", + "器", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组初始化": { + "children": [ + { + "可变参数列表": { + "data": { + "uuid": "java-5-425", + "seg": [ + [ + [ + "可变", + "参数", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_243831_232731", + "13_252719_252838", + "13_7403773_53352376", + "13_7465244_53451996", + "13_388247_427767" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-460", + "seg": [ + [ + [ + "数组", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_207054_140475", + "13_198970_116003" + ] + } + } + } + } + }, + { + "枚举类型": { + "children": [ + { + "基本enum特性": { + "children": [ + { + "将静态导入用于enum": { + "data": { + "uuid": "java-6-97", + "seg": [ + [ + [ + "静态", + "导入", + "用于", + "enum" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-426", + "seg": [ + [ + [ + "enum", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向enum中添加新方法": { + "children": [ + { + "覆盖enum的方法": { + "data": { + "uuid": "java-6-98", + "seg": [ + [ + [ + "覆盖", + "enum", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744355_790220", + "13_215727_162203", + "13_171673_48782", + "13_7428020_53393406", + "13_367064_392203", + "13_351877_361779", + "13_1031308_1226639", + "13_714944_707043", + "13_29859_9090" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-427", + "seg": [ + [ + [ + "enum", + "添加", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "switch语句中的enum": { + "data": { + "uuid": "java-5-428", + "seg": [ + [ + [ + "switch", + "语句", + "enum" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "values()的神秘之处": { + "data": { + "uuid": "java-5-429", + "seg": [ + [ + [ + "values", + "处" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现但不继承随机选取": { + "data": { + "uuid": "java-5-430", + "seg": [ + [ + [ + "继承", + "随机", + "选取" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7453589_53436288" + ] + } + } + } + } + }, + { + "为组织而使用接口": { + "data": { + "uuid": "java-5-431", + "seg": [ + [ + [ + "组织", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用EnumSet替代标志": { + "data": { + "uuid": "java-5-432", + "seg": [ + [ + [ + "enumset", + "标志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用EnumMap": { + "data": { + "uuid": "java-5-433", + "seg": [ + [ + [ + "enummap" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常数相关的方法": { + "children": [ + { + "使用enum的职责链": { + "data": { + "uuid": "java-6-99", + "seg": [ + [ + [ + "enum", + "职责", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用enum的状态机": { + "data": { + "uuid": "java-6-100", + "seg": [ + [ + [ + "enum", + "状态机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-434", + "seg": [ + [ + [ + "常数", + "相关", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多路分发": { + "children": [ + { + "使用enum分发": { + "data": { + "uuid": "java-6-101", + "seg": [ + [ + [ + "enum", + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用EnumMap分发": { + "data": { + "uuid": "java-6-102", + "seg": [ + [ + [ + "enummap", + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-435", + "seg": [ + [ + [ + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用枚举类型设置常量": { + "data": { + "uuid": "java-5-436", + "seg": [ + [ + [ + "枚举", + "类型", + "设置", + "常量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_680107_529118" + ] + } + } + } + } + }, + { + "使用枚举类型的优势": { + "data": { + "uuid": "java-5-437", + "seg": [ + [ + [ + "枚举", + "类型", + "优势" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_245664_236374" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-461", + "seg": [ + [ + [ + "枚举", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类初始化块": { + "data": { + "uuid": "java-4-462", + "seg": [ + [ + [ + "类", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_741839_782605" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-272", + "seg": [ + [ + [ + "初始化" + ], + [ + "清理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问权限控制": { + "children": [ + { + "Java访问权限修饰词": { + "children": [ + { + "包访问权限": { + "data": { + "uuid": "java-5-438", + "seg": [ + [ + [ + "包", + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_211196_150903", + "13_374732_403810", + "13_1054502_1251758", + "13_668396_488645", + "13_769616_830565", + "13_667682_486963", + "13_353618_365290", + "13_650379_457113", + "13_686395_551593", + "13_773666_837419" + ] + } + } + } + } + }, + { + "public:接口访问权限": { + "data": { + "uuid": "java-5-439", + "seg": [ + [ + [ + "public", + "接口", + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_246528_238717", + "13_226711_189653", + "13_1034072_1229420", + "13_654737_464688", + "13_238692_220899", + "13_1098109_1312458", + "13_1056786_1253832", + "13_715079_707252", + "13_807415_902812" + ] + } + } + } + } + }, + { + "private: 你无法访问": { + "data": { + "uuid": "java-5-440", + "seg": [ + [ + [ + "private", + "无法访问" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_651275_458539", + "13_651348_458440", + "13_7408105_53358304", + "13_226796_189898", + "13_1101593_1316581", + "13_181812_67426", + "13_220946_174566", + "13_681061_532691", + "13_7415580_53369084" + ] + } + } + } + } + }, + { + "protected:继承访问权限": { + "data": { + "uuid": "java-5-441", + "seg": [ + [ + [ + "protected" + ] + ], + [ + [ + "继承", + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367032_392193", + "13_834093_937136" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-463", + "seg": [ + [ + [ + "java", + "访问", + "权限", + "修饰词" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类的访问权限": { + "data": { + "uuid": "java-4-464", + "seg": [ + [ + [ + "类", + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-273", + "seg": [ + [ + [ + "访问", + "权限", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复用类": { + "children": [ + { + "组合语法": { + "data": { + "uuid": "java-4-465", + "seg": [ + [ + [ + "组合", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继承语法": { + "children": [ + { + "初始化基类": { + "data": { + "uuid": "java-5-442", + "seg": [ + [ + [ + "初始化", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-466", + "seg": [ + [ + [ + "继承", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代理": { + "children": [ + { + "创建代理对象": { + "data": { + "uuid": "java-5-443", + "seg": [ + [ + [ + "创建", + "代理", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代理类的特性": { + "data": { + "uuid": "java-5-444", + "seg": [ + [ + [ + "代理", + "类", + "特性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745902_794507", + "13_379970_412376" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-467", + "seg": [ + [ + [ + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在组合与继承之间选择": { + "data": { + "uuid": "java-4-468", + "seg": [ + [ + [ + "组合" + ], + [ + "继承", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "protected关键字": { + "data": { + "uuid": "java-4-469", + "seg": [ + [ + [ + "protected", + "关键字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_248434_243203" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-274", + "seg": [ + [ + [ + "复用", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持有对象": { + "children": [ + { + "基本概念": { + "data": { + "uuid": "java-4-470", + "seg": [ + [ + [ + "基本概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加一组元素": { + "data": { + "uuid": "java-4-471", + "seg": [ + [ + [ + "添加", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器的打印": { + "data": { + "uuid": "java-4-472", + "seg": [ + [ + [ + "容器", + "打印" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "List": { + "data": { + "uuid": "java-4-473", + "seg": [ + [ + [ + "list" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代器": { + "children": [ + { + "ListIterator": { + "data": { + "uuid": "java-5-445", + "seg": [ + [ + [ + "listiterator" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_716083_708619" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-474", + "seg": [ + [ + [ + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LinkedList": { + "data": { + "uuid": "java-4-475", + "seg": [ + [ + [ + "linkedlist" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_371596_398247", + "13_7423405_53383184", + "13_747136_798025", + "13_351834_361901", + "13_644511_445245" + ] + } + } + } + } + }, + { + "Stack": { + "data": { + "uuid": "java-4-476", + "seg": [ + [ + [ + "stack" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_208441_144428", + "13_716026_708555", + "13_7399301_53346341" + ] + } + } + } + } + }, + { + "Set": { + "data": { + "uuid": "java-4-477", + "seg": [ + [ + [ + "set" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Map": { + "data": { + "uuid": "java-4-478", + "seg": [ + [ + [ + "map" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Queue": { + "children": [ + { + "PriorityQueue": { + "data": { + "uuid": "java-5-446", + "seg": [ + [ + [ + "priorityqueue" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-479", + "seg": [ + [ + [ + "queue" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Collection和Iterator": { + "data": { + "uuid": "java-4-480", + "seg": [ + [ + [ + "collection" + ], + [ + "iterator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Foreach与迭代器": { + "children": [ + { + "适配器方法惯用法": { + "data": { + "uuid": "java-5-447", + "seg": [ + [ + [ + "适配器", + "方法", + "惯用", + "法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-481", + "seg": [ + [ + [ + "foreach" + ], + [ + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-275", + "seg": [ + [ + [ + "持有", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过异常处理错误": { + "children": [ + { + "概念": { + "data": { + "uuid": "java-4-482", + "seg": [ + [ + [ + "概念" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_335167_328738" + ] + } + } + } + } + }, + { + "创建自定义异常": { + "data": { + "uuid": "java-4-483", + "seg": [ + [ + [ + "创建", + "自定义", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java标准异常": { + "children": [ + { + "特例: RuntimeException(运行时异常)": { + "data": { + "uuid": "java-5-448", + "seg": [ + [ + [ + "特例", + "runtimeexception", + "运行", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-484", + "seg": [ + [ + [ + "java", + "标准", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用finally进行清理": { + "children": [ + { + "finally用来做什么": { + "data": { + "uuid": "java-5-449", + "seg": [ + [ + [ + "finally", + "做" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_364246_385671", + "13_244876_234766", + "13_27861_7757", + "13_657542_470232", + "13_362198_380857", + "13_743787_788803", + "13_7449619_53431609", + "13_7456191_53439614", + "13_1090037_1296720", + "13_7436628_53408472" + ] + } + } + } + } + }, + { + "在return中使用finally": { + "data": { + "uuid": "java-5-450", + "seg": [ + [ + [ + "return", + "finally" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_201328_123717" + ] + } + } + } + } + }, + { + "缺憾:异常丢失": { + "data": { + "uuid": "java-5-451", + "seg": [ + [ + [ + "缺憾" + ] + ], + [ + [ + "异常", + "丢失" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-485", + "seg": [ + [ + [ + "finally", + "清理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造器": { + "children": [ + { + "使用构造器执行初始化": { + "data": { + "uuid": "java-5-452", + "seg": [ + [ + [ + "构造", + "器", + "执行", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_199550_117929", + "13_157713_20919", + "13_176212_58081", + "13_261718_273780", + "13_717955_712724" + ] + } + } + } + } + }, + { + "构造器重载": { + "data": { + "uuid": "java-5-453", + "seg": [ + [ + [ + "构造", + "器重", + "载" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_176604_59011", + "13_156635_18730" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-486", + "seg": [ + [ + [ + "构造", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常匹配": { + "data": { + "uuid": "java-4-487", + "seg": [ + [ + [ + "异常", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7411463_53362467" + ] + } + } + } + } + }, + { + "其他可选方式": { + "children": [ + { + "历史": { + "data": { + "uuid": "java-5-454", + "seg": [ + [ + [ + "历史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "观点": { + "data": { + "uuid": "java-5-455", + "seg": [ + [ + [ + "观点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把异常传递给控制台": { + "data": { + "uuid": "java-5-456", + "seg": [ + [ + [ + "异常", + "传递", + "控制台" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把“受检查异常”转换为“不受检查的异常”": { + "data": { + "uuid": "java-5-457", + "seg": [ + [ + [ + "受", + "检查", + "异常", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-488", + "seg": [ + [ + [ + "方式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_347727_354729", + "13_978017_1136944" + ] + } + } + } + } + }, + { + "异常使用指南": { + "data": { + "uuid": "java-4-489", + "seg": [ + [ + [ + "异常", + "使用指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-276", + "seg": [ + [ + [ + "异常", + "处理错误" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型信息": { + "children": [ + { + "Class对象": { + "children": [ + { + "类字面常量": { + "data": { + "uuid": "java-5-458", + "seg": [ + [ + [ + "类", + "字面", + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛化的Class引用": { + "data": { + "uuid": "java-5-459", + "seg": [ + [ + [ + "泛化", + "class", + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_226079_188037", + "13_7466594_53453883", + "13_233373_208168", + "13_161975_32393", + "13_564846_439710", + "13_358620_376992", + "13_1094248_1304415", + "13_671019_494305", + "13_2532857_18665821", + "13_26365_7754" + ] + } + } + } + } + }, + { + "新的转型语法": { + "data": { + "uuid": "java-5-460", + "seg": [ + [ + [ + "转型", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-490", + "seg": [ + [ + [ + "class", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型转换前先做检查": { + "children": [ + { + "使用类字面常量": { + "data": { + "uuid": "java-5-461", + "seg": [ + [ + [ + "类", + "字面", + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "动态instanceof": { + "data": { + "uuid": "java-5-462", + "seg": [ + [ + [ + "动态", + "instanceof" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_246313_238153" + ] + } + } + } + } + }, + { + "递归计数": { + "data": { + "uuid": "java-5-463", + "seg": [ + [ + [ + "递归", + "计数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-491", + "seg": [ + [ + [ + "类型转换", + "做", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注册工厂": { + "data": { + "uuid": "java-4-492", + "seg": [ + [ + [ + "注册", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "instanceof与Class的等价性": { + "data": { + "uuid": "java-4-493", + "seg": [ + [ + [ + "instanceof" + ], + [ + "class", + "等价", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "反射:运行时类信息": { + "children": [ + { + "类方法抽取器": { + "data": { + "uuid": "java-5-464", + "seg": [ + [ + [ + "类", + "方法", + "抽取", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Class类与Java反射": { + "children": [ + { + "访问构造方法": { + "data": { + "uuid": "java-6-103", + "seg": [ + [ + [ + "访问", + "构造方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_197024_110385" + ] + } + } + } + } + }, + { + "访问成员变量": { + "data": { + "uuid": "java-6-104", + "seg": [ + [ + [ + "访问", + "成员", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_768224_828191", + "13_228652_195003" + ] + } + } + } + } + }, + { + "访问方法": { + "data": { + "uuid": "java-6-105", + "seg": [ + [ + [ + "访问", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-465", + "seg": [ + [ + [ + "class", + "类" + ], + [ + "java", + "反射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Annotation功能": { + "children": [ + { + "定义Annotation类型": { + "data": { + "uuid": "java-6-106", + "seg": [ + [ + [ + "定义", + "annotation", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_362291_384455", + "13_234803_212321", + "13_868324_1025718", + "13_1084676_1291292", + "13_773315_836957" + ] + } + } + } + } + }, + { + "访问Annotation信息": { + "data": { + "uuid": "java-6-107", + "seg": [ + [ + [ + "访问", + "annotation", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7431335_53399738", + "13_7458329_53442898", + "13_7438868_53412321", + "13_7434365_53404793", + "13_657675_470558", + "13_227896_192887", + "13_724133_726132", + "13_962223_1111773", + "13_389377_429901", + "13_356947_373119" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-466", + "seg": [ + [ + [ + "annotation", + "功能" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_748581_800584", + "13_1000965_1178722", + "13_378990_410894", + "13_7454898_53437589", + "13_386259_424860", + "13_245691_236447", + "13_251787_250750", + "13_743983_789340", + "13_659086_472639", + "13_357775_375019" + ] + } + } + } + } + }, + { + "声明异常入门": { + "data": { + "uuid": "java-5-467", + "seg": [ + [ + [ + "声明", + "异常", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源": { + "data": { + "uuid": "java-5-468", + "seg": [ + [ + [ + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用反射分析类的能力": { + "data": { + "uuid": "java-5-469", + "seg": [ + [ + [ + "利用", + "反射", + "分析", + "类", + "能力" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_763611_822099", + "13_252246_251985" + ] + } + } + } + } + }, + { + "使用反射在运行时分析": { + "data": { + "uuid": "java-5-470", + "seg": [ + [ + [ + "反射", + "运行", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用反射编写泛型数组": { + "data": { + "uuid": "java-5-471", + "seg": [ + [ + [ + "反射", + "编写", + "泛型", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问字段": { + "data": { + "uuid": "java-5-472", + "seg": [ + [ + [ + "访问", + "字", + "段" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_673828_502484" + ] + } + } + } + } + }, + { + "调用方法": { + "data": { + "uuid": "java-5-473", + "seg": [ + [ + [ + "调用", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调用构造方法": { + "data": { + "uuid": "java-5-474", + "seg": [ + [ + [ + "调用", + "构造方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743354_787480", + "13_1058228_1255442", + "13_193644_99242" + ] + } + } + } + } + }, + { + "获取继承关系": { + "data": { + "uuid": "java-5-475", + "seg": [ + [ + [ + "获取", + "继承", + "关系" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_669022_489965", + "13_187554_82294" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-494", + "seg": [ + [ + [ + "反射" + ] + ], + [ + [ + "运行", + "时类", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "动态代理": { + "data": { + "uuid": "java-4-495", + "seg": [ + [ + [ + "动态", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "空对象": { + "children": [ + { + "模拟对象与桩": { + "data": { + "uuid": "java-5-476", + "seg": [ + [ + [ + "模拟", + "对象" + ], + [ + "桩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-496", + "seg": [ + [ + [ + "空", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_8210_4491" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-277", + "seg": [ + [ + [ + "类型信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器深入研究": { + "children": [ + { + "完整的容器分类法": { + "data": { + "uuid": "java-4-497", + "seg": [ + [ + [ + "容器", + "分类法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "填充容器": { + "children": [ + { + "一种Generator解决方案": { + "data": { + "uuid": "java-5-477", + "seg": [ + [ + [ + "generator", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Map生成器": { + "data": { + "uuid": "java-5-478", + "seg": [ + [ + [ + "map", + "生成器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_748979_801256" + ] + } + } + } + } + }, + { + "使用Abstract类": { + "data": { + "uuid": "java-5-479", + "seg": [ + [ + [ + "abstract", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_644062_444389" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-498", + "seg": [ + [ + [ + "填充", + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_173256_52184" + ] + } + } + } + } + }, + { + "Collection的功能方法": { + "data": { + "uuid": "java-4-499", + "seg": [ + [ + [ + "collection", + "功能", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可选操作": { + "children": [ + { + "未获支持的操作": { + "data": { + "uuid": "java-5-480", + "seg": [ + [ + [ + "未获", + "支持", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-500", + "seg": [ + [ + [ + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "List的功能方法": { + "data": { + "uuid": "java-4-501", + "seg": [ + [ + [ + "list", + "功能", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "队列": { + "children": [ + { + "优先级队列": { + "data": { + "uuid": "java-5-481", + "seg": [ + [ + [ + "优先级", + "队列" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_246765_239309", + "13_1071264_1273196", + "13_768291_828448", + "13_749119_801457", + "13_195346_105067", + "13_697801_584062", + "13_1095206_1306245", + "13_761341_818694" + ] + } + } + } + } + }, + { + "双向队列": { + "data": { + "uuid": "java-5-482", + "seg": [ + [ + [ + "双向", + "队列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-502", + "seg": [ + [ + [ + "队列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "理解Map": { + "children": [ + { + "性能": { + "data": { + "uuid": "java-5-483", + "seg": [ + [ + [ + "性能" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_191348_93039" + ] + } + } + } + } + }, + { + "SortedMap": { + "data": { + "uuid": "java-5-484", + "seg": [ + [ + [ + "sortedmap" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LinkedHashMap": { + "data": { + "uuid": "java-5-485", + "seg": [ + [ + [ + "linkedhashmap" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_391692_434412", + "13_2297_3523", + "13_7412722_53364209" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-503", + "seg": [ + [ + [ + "理解", + "map" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "散列与散列码": { + "children": [ + { + "理解hashCode()": { + "data": { + "uuid": "java-5-486", + "seg": [ + [ + [ + "理解", + "hashcode" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_755066_810315", + "13_648718_453497", + "13_352503_362977", + "13_1101549_1316053", + "13_718063_711621" + ] + } + } + } + } + }, + { + "为速度而散列": { + "data": { + "uuid": "java-5-487", + "seg": [ + [ + [ + "速度", + "散列" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_201609_124577" + ] + } + } + } + } + }, + { + "覆盖hashCode()": { + "data": { + "uuid": "java-5-488", + "seg": [ + [ + [ + "覆盖", + "hashcode" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-504", + "seg": [ + [ + [ + "散列" + ], + [ + "散列码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择接口的不同实现": { + "children": [ + { + "性能测试框架": { + "data": { + "uuid": "java-5-489", + "seg": [ + [ + [ + "性能", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对List的选择": { + "data": { + "uuid": "java-5-490", + "seg": [ + [ + [ + "list", + "选择" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_249335_245164", + "13_7460886_53446016", + "13_746989_797575", + "13_7431406_53400445", + "13_7444487_53426627", + "13_176545_59541", + "13_7452658_53434771" + ] + } + } + } + } + }, + { + "微基准测试的危险": { + "data": { + "uuid": "java-5-491", + "seg": [ + [ + [ + "微", + "基准", + "危险" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对Set的选择": { + "data": { + "uuid": "java-5-492", + "seg": [ + [ + [ + "set", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对Map的选择": { + "data": { + "uuid": "java-5-493", + "seg": [ + [ + [ + "map", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-505", + "seg": [ + [ + [ + "选择", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实用方法": { + "children": [ + { + "List的排序和查询": { + "data": { + "uuid": "java-5-494", + "seg": [ + [ + [ + "list", + "排序" + ], + [ + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设定Collection或Map为不可修改": { + "data": { + "uuid": "java-5-495", + "seg": [ + [ + [ + "设定", + "collection", + "map", + "修改" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Collection或Map的同步控制": { + "data": { + "uuid": "java-5-496", + "seg": [ + [ + [ + "collection", + "map", + "同步控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-506", + "seg": [ + [ + [ + "实用", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457346_53441496" + ] + } + } + } + } + }, + { + "持有引用": { + "children": [ + { + "WeakHashMap": { + "data": { + "uuid": "java-5-497", + "seg": [ + [ + [ + "weakhashmap" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-507", + "seg": [ + [ + [ + "持有", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 1.0/1.1 的容器": { + "children": [ + { + "Vector和Enumeration": { + "data": { + "uuid": "java-5-498", + "seg": [ + [ + [ + "vector" + ], + [ + "enumeration" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_219533_170933", + "13_339950_339320", + "13_746703_796665" + ] + } + } + } + } + }, + { + "Hashtable": { + "data": { + "uuid": "java-5-499", + "seg": [ + [ + [ + "hashtable" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BitSet": { + "data": { + "uuid": "java-5-500", + "seg": [ + [ + [ + "bitset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-508", + "seg": [ + [ + [ + "java", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-278", + "seg": [ + [ + [ + "容器", + "深入研究" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java I/O系统": { + "children": [ + { + "输入和输出": { + "children": [ + { + "InputStream类型": { + "data": { + "uuid": "java-5-501", + "seg": [ + [ + [ + "inputstream", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OutputStream类型": { + "data": { + "uuid": "java-5-502", + "seg": [ + [ + [ + "outputstream", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取输入": { + "data": { + "uuid": "java-5-503", + "seg": [ + [ + [ + "读取", + "输入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7435954_53406929", + "13_392464_435932" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-509", + "seg": [ + [ + [ + "输入" + ], + [ + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加属性和有用的接口": { + "children": [ + { + "通过FilterInputStream从InputStream读取": { + "data": { + "uuid": "java-5-504", + "seg": [ + [ + [ + "filterinputstream", + "inputstream", + "读取" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_202996_129180" + ] + } + } + } + } + }, + { + "通过FilterOutPutStream向OutputStream写入": { + "data": { + "uuid": "java-5-505", + "seg": [ + [ + [ + "filteroutputstream", + "outputstream", + "写入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-510", + "seg": [ + [ + [ + "添加", + "属性" + ], + [ + "有用", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Reader和Writer": { + "children": [ + { + "数据的来源和去处": { + "data": { + "uuid": "java-5-506", + "seg": [ + [ + [ + "数据", + "来源" + ], + [ + "去处" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更改流的行为": { + "data": { + "uuid": "java-5-507", + "seg": [ + [ + [ + "更改", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_709846_667550" + ] + } + } + } + } + }, + { + "未发生变化的类": { + "data": { + "uuid": "java-5-508", + "seg": [ + [ + [ + "发生变化", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-511", + "seg": [ + [ + [ + "reader" + ], + [ + "writer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "I/O流的典型使用方式": { + "children": [ + { + "缓冲的输入文件": { + "data": { + "uuid": "java-5-509", + "seg": [ + [ + [ + "缓冲", + "输入", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7457717_53442172" + ] + } + } + } + } + }, + { + "从内存中输入": { + "data": { + "uuid": "java-5-510", + "seg": [ + [ + [ + "内存", + "输入" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "格式化的内存输入": { + "data": { + "uuid": "java-5-511", + "seg": [ + [ + [ + "格式化", + "内存", + "输入" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基本文件输出": { + "data": { + "uuid": "java-5-512", + "seg": [ + [ + [ + "文件", + "输出" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "存储和恢复数据": { + "data": { + "uuid": "java-5-513", + "seg": [ + [ + [ + "存储" + ], + [ + "恢复", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "读取和写入随机访问文件": { + "data": { + "uuid": "java-5-514", + "seg": [ + [ + [ + "读取" + ], + [ + "写入", + "随机", + "访问", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7455466_53439194" + ] + } + } + } + } + }, + { + "管道流": { + "data": { + "uuid": "java-5-515", + "seg": [ + [ + [ + "管道", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7429078_53402451" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-512", + "seg": [ + [ + [ + "i", + "o", + "流", + "典型", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件读写的实用工具": { + "children": [ + { + "读取二进制文件": { + "data": { + "uuid": "java-5-516", + "seg": [ + [ + [ + "读取", + "二进制", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1095187_1306207", + "13_27954_7796", + "13_235931_215467", + "13_7416179_53370136", + "13_175811_59985", + "13_667953_487551", + "13_380797_413931", + "13_759593_815920", + "13_270247_292058", + "13_743400_787592" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-513", + "seg": [ + [ + [ + "文件", + "读写", + "实用工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准I/O": { + "children": [ + { + "从标准输入中读取": { + "data": { + "uuid": "java-5-517", + "seg": [ + [ + [ + "标准", + "输入", + "读取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将System.out转换成PrintWriter": { + "data": { + "uuid": "java-5-518", + "seg": [ + [ + [ + "system", + "out", + "printwriter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准I/O重定向": { + "data": { + "uuid": "java-5-519", + "seg": [ + [ + [ + "标准", + "i", + "o", + "重定向" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_11454_5529", + "13_631852_440797", + "13_742554_785006", + "13_657316_469861", + "13_225726_187318", + "13_243786_232663", + "13_1053130_1250462", + "13_1104630_1318866", + "13_201818_125329", + "13_773895_837704" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-514", + "seg": [ + [ + [ + "标准", + "i", + "o" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "进程控制": { + "data": { + "uuid": "java-4-515", + "seg": [ + [ + [ + "进程", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "压缩": { + "children": [ + { + "用GZIP进行简单压缩": { + "data": { + "uuid": "java-5-520", + "seg": [ + [ + [ + "gzip", + "压缩" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_55915_10116", + "13_1056093_1253273", + "13_676737_516787", + "13_181809_67520" + ] + } + } + } + } + }, + { + "用Zip进行多文件存储": { + "data": { + "uuid": "java-5-521", + "seg": [ + [ + [ + "zip", + "文件", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java档案文件": { + "data": { + "uuid": "java-5-522", + "seg": [ + [ + [ + "java", + "档案文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-516", + "seg": [ + [ + [ + "压缩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XML": { + "data": { + "uuid": "java-4-517", + "seg": [ + [ + [ + "xml" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Preferences": { + "data": { + "uuid": "java-4-518", + "seg": [ + [ + [ + "preferences" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-279", + "seg": [ + [ + [ + "java", + "i", + "o", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解": { + "children": [ + { + "基本语法": { + "children": [ + { + "定义注解": { + "data": { + "uuid": "java-5-523", + "seg": [ + [ + [ + "定义", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元注解": { + "data": { + "uuid": "java-5-524", + "seg": [ + [ + [ + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-519", + "seg": [ + [ + [ + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写注解处理器": { + "children": [ + { + "注解元素": { + "data": { + "uuid": "java-5-525", + "seg": [ + [ + [ + "注解", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缺省值限制": { + "data": { + "uuid": "java-5-526", + "seg": [ + [ + [ + "缺省值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成外部文件": { + "data": { + "uuid": "java-5-527", + "seg": [ + [ + [ + "生成", + "外部", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解不支持继承": { + "data": { + "uuid": "java-5-528", + "seg": [ + [ + [ + "注解", + "支持", + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现处理器": { + "data": { + "uuid": "java-5-529", + "seg": [ + [ + [ + "处理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-520", + "seg": [ + [ + [ + "编写", + "注解", + "处理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用apt处理注解": { + "data": { + "uuid": "java-4-521", + "seg": [ + [ + [ + "apt", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将观察者模式用于apt": { + "data": { + "uuid": "java-4-522", + "seg": [ + [ + [ + "观察者", + "模式", + "用于", + "apt" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于注解的单元测试": { + "children": [ + { + "将@Unit用于泛型": { + "data": { + "uuid": "java-5-530", + "seg": [ + [ + [ + "unit", + "用于", + "泛型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不需要任何“套件”": { + "data": { + "uuid": "java-5-531", + "seg": [ + [ + [ + "套件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现@Unit": { + "data": { + "uuid": "java-5-532", + "seg": [ + [ + [ + "unit" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "移除测试代码": { + "data": { + "uuid": "java-5-533", + "seg": [ + [ + [ + "移除", + "测试代码" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_232114_204375", + "13_171995_49161" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-523", + "seg": [ + [ + [ + "注解", + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限定重写父类方法:@Override": { + "data": { + "uuid": "java-4-524", + "seg": [ + [ + [ + "限定", + "重写", + "父类", + "方法" + ] + ], + [ + [ + "override" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 9增强的@Deprecated": { + "data": { + "uuid": "java-4-525", + "seg": [ + [ + [ + "java", + "增强", + "deprecated" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抑制编译器警告:@SuppressWarnings": { + "data": { + "uuid": "java-4-526", + "seg": [ + [ + [ + "抑制", + "编译器", + "警告" + ] + ], + [ + [ + "suppresswarnings" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“堆污染”警告与Java 9增强的@SafeVarargs": { + "data": { + "uuid": "java-4-527", + "seg": [ + [ + [ + "堆", + "污染", + "警告" + ], + [ + "java", + "增强", + "safevarargs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-280", + "seg": [ + [ + [ + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发": { + "children": [ + { + "并发的多面性": { + "children": [ + { + "更快的执行": { + "data": { + "uuid": "java-5-534", + "seg": [ + [ + [ + "更快", + "执行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "改进代码设计": { + "data": { + "uuid": "java-5-535", + "seg": [ + [ + [ + "改进", + "设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-528", + "seg": [ + [ + [ + "并发", + "多面性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_716206_708819" + ] + } + } + } + } + }, + { + "基本的线程机制": { + "children": [ + { + "定义任务让步": { + "data": { + "uuid": "java-5-536", + "seg": [ + [ + [ + "定义", + "让步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Executor": { + "data": { + "uuid": "java-5-537", + "seg": [ + [ + [ + "executor" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "休眠": { + "data": { + "uuid": "java-5-538", + "seg": [ + [ + [ + "休眠" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "让步": { + "data": { + "uuid": "java-5-539", + "seg": [ + [ + [ + "让步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "编码的变体": { + "data": { + "uuid": "java-5-540", + "seg": [ + [ + [ + "编码", + "变体" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "术语": { + "data": { + "uuid": "java-5-541", + "seg": [ + [ + [ + "术语" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建有响应的用户界面": { + "data": { + "uuid": "java-5-542", + "seg": [ + [ + [ + "创建", + "响应", + "用户界面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-529", + "seg": [ + [ + [ + "线程", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "共享受限资源": { + "children": [ + { + "不正确地访问资源": { + "data": { + "uuid": "java-5-543", + "seg": [ + [ + [ + "访问", + "资源" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_654006_463310", + "13_7414792_53367758" + ] + } + } + } + } + }, + { + "解决共享资源竞争": { + "data": { + "uuid": "java-5-544", + "seg": [ + [ + [ + "共享资源", + "竞争" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "原子性与易变性": { + "data": { + "uuid": "java-5-545", + "seg": [ + [ + [ + "原子", + "性" + ], + [ + "易变性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_345263_349306" + ] + } + } + } + } + }, + { + "原子类": { + "data": { + "uuid": "java-5-546", + "seg": [ + [ + [ + "原子", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "临界资源": { + "data": { + "uuid": "java-5-547", + "seg": [ + [ + [ + "临界", + "资源" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在其他对象上同步": { + "data": { + "uuid": "java-5-548", + "seg": [ + [ + [ + "对象", + "同步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程局部存储": { + "data": { + "uuid": "java-5-549", + "seg": [ + [ + [ + "线程", + "局部", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-530", + "seg": [ + [ + [ + "共享", + "受限", + "资源" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "终结任务": { + "children": [ + { + "装饰性花园": { + "data": { + "uuid": "java-5-550", + "seg": [ + [ + [ + "装饰性", + "花园" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在阻塞时终结": { + "data": { + "uuid": "java-5-551", + "seg": [ + [ + [ + "阻塞", + "终结" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "中断": { + "data": { + "uuid": "java-5-552", + "seg": [ + [ + [ + "中断" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_878919_1014829" + ] + } + } + } + } + }, + { + "检查中断": { + "data": { + "uuid": "java-5-553", + "seg": [ + [ + [ + "检查", + "中断" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-531", + "seg": [ + [ + [ + "终结" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程之间的协作": { + "children": [ + { + "wait()与notifyAll()": { + "data": { + "uuid": "java-5-554", + "seg": [ + [ + [ + "wait" + ], + [ + "not", + "if", + "yall" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_694542_574877", + "13_747552_798844" + ] + } + } + } + } + }, + { + "notify()与notifyAll()": { + "data": { + "uuid": "java-5-555", + "seg": [ + [ + [ + "not", + "if", + "y" + ], + [ + "not", + "if", + "yall" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_743413_787636", + "13_4645735_29328849", + "13_7445416_53423972", + "13_638514_441379", + "13_198919_115921", + "13_646692_450495", + "13_666863_486111", + "13_1092387_1300326", + "13_702604_711898" + ] + } + } + } + } + }, + { + "生产者与消费者": { + "data": { + "uuid": "java-5-556", + "seg": [ + [ + [ + "生产者" + ], + [ + "消费者" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "任务间使用管道进行输入/输出": { + "data": { + "uuid": "java-5-557", + "seg": [ + [ + [ + "管道", + "输入", + "输出" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-532", + "seg": [ + [ + [ + "线程", + "协作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "死锁": { + "data": { + "uuid": "java-4-533", + "seg": [ + [ + [ + "死锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "新类库中的构件": { + "children": [ + { + "CountDownLatch": { + "data": { + "uuid": "java-5-558", + "seg": [ + [ + [ + "countdownlatch" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CyclicBarrier": { + "data": { + "uuid": "java-5-559", + "seg": [ + [ + [ + "cyclicbarrier" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "DelayQueue": { + "data": { + "uuid": "java-5-560", + "seg": [ + [ + [ + "delayqueue" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PriorityBlockingQueue": { + "data": { + "uuid": "java-5-561", + "seg": [ + [ + [ + "priorityblockingqueue" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用ScheduledExecutor的温室控制器": { + "data": { + "uuid": "java-5-562", + "seg": [ + [ + [ + "scheduledexecutor", + "温室", + "控制器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Semaphore": { + "data": { + "uuid": "java-5-563", + "seg": [ + [ + [ + "semaphore" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Exchange": { + "data": { + "uuid": "java-5-564", + "seg": [ + [ + [ + "exchange" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-534", + "seg": [ + [ + [ + "类库", + "构件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1063574_1261600" + ] + } + } + } + } + }, + { + "仿真": { + "children": [ + { + "银行出纳仿真": { + "data": { + "uuid": "java-5-565", + "seg": [ + [ + [ + "银行", + "出纳", + "仿真" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "饭店仿真": { + "data": { + "uuid": "java-5-566", + "seg": [ + [ + [ + "饭店", + "仿真" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分发工作": { + "data": { + "uuid": "java-5-567", + "seg": [ + [ + [ + "分发", + "工作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7434872_53405556", + "13_1074487_1277952" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-535", + "seg": [ + [ + [ + "仿真" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "性能调优": { + "children": [ + { + "比较各类互斥技术": { + "data": { + "uuid": "java-5-568", + "seg": [ + [ + [ + "互斥", + "技术" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "免锁容器": { + "data": { + "uuid": "java-5-569", + "seg": [ + [ + [ + "免锁", + "容器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "乐观锁": { + "data": { + "uuid": "java-5-570", + "seg": [ + [ + [ + "乐观", + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ReadWriteLock": { + "data": { + "uuid": "java-5-571", + "seg": [ + [ + [ + "readwritelock" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-536", + "seg": [ + [ + [ + "性能", + "调优" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "活动对象": { + "data": { + "uuid": "java-4-537", + "seg": [ + [ + [ + "活动", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "进阶读物": { + "data": { + "uuid": "java-4-538", + "seg": [ + [ + [ + "进阶", + "读物" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程状态": { + "children": [ + { + "新建线程": { + "data": { + "uuid": "java-5-572", + "seg": [ + [ + [ + "新建", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1090440_1297281", + "13_679698_527991" + ] + } + } + } + } + }, + { + "可运行线程": { + "data": { + "uuid": "java-5-573", + "seg": [ + [ + [ + "运行", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_744485_790585", + "13_25174_6672", + "13_370891_397672", + "13_649656_455514", + "13_673762_502372" + ] + } + } + } + } + }, + { + "阻塞和等待线程": { + "data": { + "uuid": "java-5-574", + "seg": [ + [ + [ + "阻塞" + ], + [ + "等待", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7438438_53411787", + "13_742770_785580", + "13_356528_372306" + ] + } + } + } + } + }, + { + "终止线程": { + "data": { + "uuid": "java-5-575", + "seg": [ + [ + [ + "终止", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-539", + "seg": [ + [ + [ + "线程", + "状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程属性": { + "children": [ + { + "守护线程": { + "data": { + "uuid": "java-5-576", + "seg": [ + [ + [ + "守护", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程名": { + "data": { + "uuid": "java-5-577", + "seg": [ + [ + [ + "线程", + "名" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_706467_641038" + ] + } + } + } + } + }, + { + "未捕获异常的处理器": { + "data": { + "uuid": "java-5-578", + "seg": [ + [ + [ + "捕获", + "异常", + "处理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-540", + "seg": [ + [ + [ + "线程", + "属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程安全的集合": { + "children": [ + { + "阻塞队列": { + "data": { + "uuid": "java-5-579", + "seg": [ + [ + [ + "阻塞", + "队列" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "映射条目的原子更新": { + "data": { + "uuid": "java-5-580", + "seg": [ + [ + [ + "映射", + "条", + "目的", + "原子", + "更新" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对并发散列映射的批操作": { + "data": { + "uuid": "java-5-581", + "seg": [ + [ + [ + "发散", + "列", + "映射", + "批", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "并发集视图": { + "data": { + "uuid": "java-5-582", + "seg": [ + [ + [ + "并发", + "集", + "视图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "写数组的拷贝": { + "data": { + "uuid": "java-5-583", + "seg": [ + [ + [ + "写", + "数组", + "拷贝" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "并行数组算法": { + "data": { + "uuid": "java-5-584", + "seg": [ + [ + [ + "并行", + "数组", + "算法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "较早的线程安全集合": { + "data": { + "uuid": "java-5-585", + "seg": [ + [ + [ + "早", + "线程", + "集合" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-541", + "seg": [ + [ + [ + "线程", + "集合" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "异步计算": { + "children": [ + { + "可完成Future": { + "data": { + "uuid": "java-5-586", + "seg": [ + [ + [ + "future" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "组合可完成Future": { + "data": { + "uuid": "java-5-587", + "seg": [ + [ + [ + "组合", + "future" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用户界面回调中的长时间运行任务": { + "data": { + "uuid": "java-5-588", + "seg": [ + [ + [ + "用户界面", + "回调", + "长时间", + "运行" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_366839_395713" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-542", + "seg": [ + [ + [ + "异步", + "计算" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-281", + "seg": [ + [ + [ + "并发" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_678172_521742" + ] + } + } + } + } + }, + { + "图形化用户界面": { + "children": [ + { + "Swing基础": { + "children": [ + { + "一个显示框架": { + "data": { + "uuid": "java-5-589", + "seg": [ + [ + [ + "显示", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-543", + "seg": [ + [ + [ + "swing", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建按钮": { + "data": { + "uuid": "java-4-544", + "seg": [ + [ + [ + "创建", + "按钮" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "捕获事件": { + "data": { + "uuid": "java-4-545", + "seg": [ + [ + [ + "捕获", + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_675583_510221" + ] + } + } + } + } + }, + { + "文本区域": { + "data": { + "uuid": "java-4-546", + "seg": [ + [ + [ + "文本", + "区域" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "控制布局": { + "children": [ + { + "GridBagLayout": { + "data": { + "uuid": "java-5-590", + "seg": [ + [ + [ + "gridbaglayout" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_704499_597852" + ] + } + } + } + } + }, + { + "绝对定位": { + "data": { + "uuid": "java-5-591", + "seg": [ + [ + [ + "定位" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "BoxLayout": { + "data": { + "uuid": "java-5-592", + "seg": [ + [ + [ + "boxlayout" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-547", + "seg": [ + [ + [ + "控制", + "布局" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Swing事件模型": { + "children": [ + { + "事件与监听器的类型": { + "data": { + "uuid": "java-5-593", + "seg": [ + [ + [ + "事件" + ], + [ + "监听器", + "类型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "跟踪多个事件": { + "data": { + "uuid": "java-5-594", + "seg": [ + [ + [ + "跟踪", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-548", + "seg": [ + [ + [ + "swing", + "事件", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Swing组件一览": { + "children": [ + { + "按钮": { + "data": { + "uuid": "java-5-595", + "seg": [ + [ + [ + "按钮" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "图标": { + "data": { + "uuid": "java-5-596", + "seg": [ + [ + [ + "图标" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_772793_836398" + ] + } + } + } + } + }, + { + "工具提示": { + "data": { + "uuid": "java-5-597", + "seg": [ + [ + [ + "工具", + "提示" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1064324_1262684", + "13_253443_254572", + "13_924508_1059388", + "13_243959_232949", + "13_774126_838032", + "13_220602_173534", + "13_1070499_1272448", + "13_1090130_1297692", + "13_230488_199801" + ] + } + } + } + } + }, + { + "文本域": { + "data": { + "uuid": "java-5-598", + "seg": [ + [ + [ + "文本", + "域" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "边框": { + "data": { + "uuid": "java-5-599", + "seg": [ + [ + [ + "边框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "滚动面板": { + "data": { + "uuid": "java-5-600", + "seg": [ + [ + [ + "滚动", + "面板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个迷你编辑器": { + "data": { + "uuid": "java-5-601", + "seg": [ + [ + [ + "迷你", + "编辑器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "复选框": { + "data": { + "uuid": "java-5-602", + "seg": [ + [ + [ + "复选框" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_742421_784589", + "13_649721_455689" + ] + } + } + } + } + }, + { + "单选按钮": { + "data": { + "uuid": "java-5-603", + "seg": [ + [ + [ + "单选", + "按钮" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "组合框(下拉列表)": { + "data": { + "uuid": "java-5-604", + "seg": [ + [ + [ + "组合", + "框", + "拉", + "列表" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "列表框": { + "data": { + "uuid": "java-5-605", + "seg": [ + [ + [ + "列表框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "页签面板": { + "data": { + "uuid": "java-5-606", + "seg": [ + [ + [ + "签", + "面板" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1068275_1269246" + ] + } + } + } + } + }, + { + "消息框": { + "data": { + "uuid": "java-5-607", + "seg": [ + [ + [ + "消息", + "框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "菜单": { + "children": [ + { + "创建菜单栏": { + "data": { + "uuid": "java-6-108", + "seg": [ + [ + [ + "创建", + "菜单栏" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建弹出式菜单": { + "data": { + "uuid": "java-6-109", + "seg": [ + [ + [ + "创建", + "弹出式", + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "定制个性化菜单": { + "data": { + "uuid": "java-6-110", + "seg": [ + [ + [ + "定制", + "个性化", + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "菜单构建": { + "data": { + "uuid": "java-6-111", + "seg": [ + [ + [ + "菜单", + "构建" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_208199_144209", + "13_245943_237056", + "13_391224_433417", + "13_190687_91402", + "13_749520_802053", + "13_749677_802421" + ] + } + } + } + } + }, + { + "菜单项中的图标": { + "data": { + "uuid": "java-6-112", + "seg": [ + [ + [ + "菜单项", + "图标" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "弹出菜单": { + "data": { + "uuid": "java-6-113", + "seg": [ + [ + [ + "弹", + "出", + "菜单" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_668394_488641", + "13_347560_353592", + "13_2476_3693" + ] + } + } + } + } + }, + { + "键盘助记符和加速器": { + "data": { + "uuid": "java-6-114", + "seg": [ + [ + [ + "键盘", + "助记符" + ], + [ + "加速器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "启用和禁用菜单项": { + "data": { + "uuid": "java-6-115", + "seg": [ + [ + [ + "启用" + ], + [ + "禁用", + "菜单项" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_11756_5606" + ] + } + } + } + } + }, + { + "工具条": { + "data": { + "uuid": "java-6-116", + "seg": [ + [ + [ + "工具条" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-608", + "seg": [ + [ + [ + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "弹出式菜单": { + "data": { + "uuid": "java-5-609", + "seg": [ + [ + [ + "弹出式", + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘图": { + "data": { + "uuid": "java-5-610", + "seg": [ + [ + [ + "绘图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对话框": { + "children": [ + { + "选项对话框": { + "data": { + "uuid": "java-6-117", + "seg": [ + [ + [ + "选项", + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建对话框": { + "data": { + "uuid": "java-6-118", + "seg": [ + [ + [ + "创建", + "对话框" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_252350_252187", + "13_213182_155582", + "13_1066896_1267075" + ] + } + } + } + } + }, + { + "数据交换": { + "data": { + "uuid": "java-6-119", + "seg": [ + [ + [ + "数据交换" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-611", + "seg": [ + [ + [ + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件对话框": { + "data": { + "uuid": "java-5-612", + "seg": [ + [ + [ + "文件", + "对话框" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_746032_794842" + ] + } + } + } + } + }, + { + "Swing组件上的HTML": { + "data": { + "uuid": "java-5-613", + "seg": [ + [ + [ + "swing", + "组件", + "html" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "滑块与进度条": { + "data": { + "uuid": "java-5-614", + "seg": [ + [ + [ + "滑块" + ], + [ + "进度条" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "选择外观": { + "data": { + "uuid": "java-5-615", + "seg": [ + [ + [ + "选择", + "外观" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "树、表格和剪贴板": { + "children": [ + { + "传递文本": { + "data": { + "uuid": "java-6-120", + "seg": [ + [ + [ + "传递", + "文本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用系统剪贴板传递图像": { + "data": { + "uuid": "java-6-121", + "seg": [ + [ + [ + "系统", + "剪贴板", + "传递", + "图像" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用本地剪贴板传递对象引用": { + "data": { + "uuid": "java-6-122", + "seg": [ + [ + [ + "剪贴板", + "传递", + "对象", + "引用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通过系统剪贴板传递Java对象": { + "data": { + "uuid": "java-6-123", + "seg": [ + [ + [ + "系统", + "剪贴板", + "传递", + "java", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-616", + "seg": [ + [ + [ + "树" + ], + [ + "表格" + ], + [ + "剪贴板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-549", + "seg": [ + [ + [ + "swing", + "组件", + "一览" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "JNLP与Java Web Start": { + "data": { + "uuid": "java-4-550", + "seg": [ + [ + [ + "jnlp" + ], + [ + "java", + "web", + "start" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "可视化编程与JavaBean": { + "children": [ + { + "JavaBean是什么": { + "data": { + "uuid": "java-5-617", + "seg": [ + [ + [ + "javabean" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_345354_349478", + "13_593081_440312", + "13_225487_186704", + "13_763878_822691", + "13_652176_460102", + "13_347676_353829", + "13_643044_443014", + "13_383108_418382", + "13_158937_23730", + "13_675042_507198" + ] + } + } + } + } + }, + { + "使用Introspector抽取出BeanInfo": { + "data": { + "uuid": "java-5-618", + "seg": [ + [ + [ + "introspector", + "抽取", + "出", + "beaninfo" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个更复杂的Bean": { + "data": { + "uuid": "java-5-619", + "seg": [ + [ + [ + "bean" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "把Bean打包": { + "data": { + "uuid": "java-5-620", + "seg": [ + [ + [ + "bean", + "打包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对更复杂的Bean的支持": { + "data": { + "uuid": "java-5-621", + "seg": [ + [ + [ + "bean", + "支持" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_718249_714457", + "13_816026_911619", + "13_645054_446295" + ] + } + } + } + } + }, + { + "更多有关Bean的读物": { + "data": { + "uuid": "java-5-622", + "seg": [ + [ + [ + "bean", + "读物" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-551", + "seg": [ + [ + [ + "可视化", + "编程" + ], + [ + "javabean" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Swing的可替换选择": { + "data": { + "uuid": "java-4-552", + "seg": [ + [ + [ + "swing", + "替换", + "选择" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用Flex构建Flash Web客户端": { + "children": [ + { + "Hello, Flex": { + "data": { + "uuid": "java-5-623", + "seg": [ + [ + [ + "hello", + "flex" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_743796_788825", + "13_745087_792280", + "13_743123_786761", + "13_27678_7703" + ] + } + } + } + } + }, + { + "编译MXML": { + "data": { + "uuid": "java-5-624", + "seg": [ + [ + [ + "编译", + "mxml" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MXML与ActionScript": { + "data": { + "uuid": "java-5-625", + "seg": [ + [ + [ + "mxml" + ], + [ + "actionscript" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "效果与风格": { + "data": { + "uuid": "java-5-626", + "seg": [ + [ + [ + "效果" + ], + [ + "风格" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件": { + "data": { + "uuid": "java-5-627", + "seg": [ + [ + [ + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "连接到Java": { + "data": { + "uuid": "java-5-628", + "seg": [ + [ + [ + "连接", + "java" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据模型与数据绑定": { + "data": { + "uuid": "java-5-629", + "seg": [ + [ + [ + "数据模型" + ], + [ + "数据", + "绑定" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_651932_459556" + ] + } + } + } + } + }, + { + "构建和部署": { + "data": { + "uuid": "java-5-630", + "seg": [ + [ + [ + "构建" + ], + [ + "部署" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-553", + "seg": [ + [ + [ + "flex", + "构建", + "flash", + "web", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建SWT应用": { + "children": [ + { + "安装SWT": { + "data": { + "uuid": "java-5-631", + "seg": [ + [ + [ + "安装", + "swt" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Hello, SWT": { + "data": { + "uuid": "java-5-632", + "seg": [ + [ + [ + "hello", + "swt" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_383971_419851", + "13_382818_417743" + ] + } + } + } + } + }, + { + "根除冗余代码": { + "data": { + "uuid": "java-5-633", + "seg": [ + [ + [ + "根除", + "冗余" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "菜单": { + "data": { + "uuid": "java-5-634", + "seg": [ + [ + [ + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "页签面板、按钮和事件": { + "data": { + "uuid": "java-5-635", + "seg": [ + [ + [ + "签", + "面板" + ], + [ + "按钮" + ], + [ + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "图形": { + "data": { + "uuid": "java-5-636", + "seg": [ + [ + [ + "图形" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "SWT中的并发": { + "data": { + "uuid": "java-5-637", + "seg": [ + [ + [ + "swt", + "并发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "SWT还是Swing": { + "data": { + "uuid": "java-5-638", + "seg": [ + [ + [ + "swt", + "swing" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-554", + "seg": [ + [ + [ + "创建", + "swt" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-282", + "seg": [ + [ + [ + "图形化", + "用户界面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基础知识": { + "children": [ + { + "熟悉Eclipse开发工具": { + "children": [ + { + "熟悉Eclipse": { + "children": [ + { + "安装Eclipse的中文语言包": { + "data": { + "uuid": "java-6-124", + "seg": [ + [ + [ + "安装", + "eclipse", + "中文", + "语言包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_196840_109932", + "13_7428568_53394403", + "13_248705_243804", + "13_746893_797278", + "13_353130_364564", + "13_683619_540010", + "13_680994_532451", + "13_7465948_53453069", + "13_715076_707209", + "13_676158_514248" + ] + } + } + } + } + }, + { + "透视图与视图": { + "data": { + "uuid": "java-6-125", + "seg": [ + [ + [ + "透视图" + ], + [ + "视图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "菜单栏": { + "data": { + "uuid": "java-6-126", + "seg": [ + [ + [ + "菜单栏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "工具栏": { + "data": { + "uuid": "java-6-127", + "seg": [ + [ + [ + "工具栏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“包资源管理器”视图": { + "data": { + "uuid": "java-6-128", + "seg": [ + [ + [ + "包", + "资源管理", + "器", + "视图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“控制台”视图": { + "data": { + "uuid": "java-6-129", + "seg": [ + [ + [ + "控制台", + "视图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-639", + "seg": [ + [ + [ + "熟悉", + "eclipse" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-555", + "seg": [ + [ + [ + "熟悉", + "eclipse", + "开发工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数字处理类": { + "children": [ + { + "数字格式化": { + "data": { + "uuid": "java-5-640", + "seg": [ + [ + [ + "数字", + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数学运算": { + "data": { + "uuid": "java-5-641", + "seg": [ + [ + [ + "数学", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239276_222361" + ] + } + } + } + } + }, + { + "随机数": { + "children": [ + { + "Math.random方法": { + "data": { + "uuid": "java-6-130", + "seg": [ + [ + [ + "math", + "random", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-642", + "seg": [ + [ + [ + "随机数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_389937_430921", + "13_203154_129499", + "13_7412753_53364202", + "13_700538_589415", + "13_7455161_53437949" + ] + } + } + } + } + }, + { + "大数字运算": { + "children": [ + { + "BigInteger": { + "data": { + "uuid": "java-6-131", + "seg": [ + [ + [ + "biginteger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BigDecimal": { + "data": { + "uuid": "java-6-132", + "seg": [ + [ + [ + "bigdecimal" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223534_181721", + "13_4645714_29328882" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-643", + "seg": [ + [ + [ + "数字", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222627_179207", + "13_234859_212594", + "13_366247_390467", + "13_25393_6789", + "13_7452087_53433886", + "13_7428938_53395927", + "13_382364_417044", + "13_4646351_29329955", + "13_7459947_53444977", + "13_7455187_53438122" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-556", + "seg": [ + [ + [ + "数字", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-283", + "seg": [ + [ + [ + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "核心技术": { + "children": [ + { + "类的高级特性": { + "children": [ + { + "final变量": { + "data": { + "uuid": "java-5-644", + "seg": [ + [ + [ + "final", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-557", + "seg": [ + [ + [ + "类", + "高级", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合类": { + "children": [ + { + "集合类概述": { + "data": { + "uuid": "java-5-645", + "seg": [ + [ + [ + "集合", + "类", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_231670_203157" + ] + } + } + } + } + }, + { + "List集合": { + "children": [ + { + "List接口的实现类": { + "data": { + "uuid": "java-6-133", + "seg": [ + [ + [ + "list", + "接口", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1129_1954", + "13_226831_190000", + "13_771983_834939", + "13_674521_505672", + "13_387543_426787", + "13_391715_434431", + "13_240482_225028", + "13_247207_240394", + "13_668367_488571", + "13_7459211_53444084" + ] + } + } + } + } + }, + { + "改进的List接口和ListIterator接口": { + "data": { + "uuid": "java-6-134", + "seg": [ + [ + [ + "改进", + "list", + "接口" + ], + [ + "listiterator", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ArrayList和Vector实现类": { + "data": { + "uuid": "java-6-135", + "seg": [ + [ + [ + "arraylist" + ], + [ + "vector", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_389048_429263", + "13_673222_500644", + "13_72593_11989", + "13_371813_398555", + "13_767095_826598", + "13_1058668_1256024" + ] + } + } + } + } + }, + { + "固定长度的List": { + "data": { + "uuid": "java-6-136", + "seg": [ + [ + [ + "固定", + "长度", + "list" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-646", + "seg": [ + [ + [ + "list", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_192310_95250" + ] + } + } + } + } + }, + { + "Set集合": { + "children": [ + { + "HashSet类": { + "data": { + "uuid": "java-6-137", + "seg": [ + [ + [ + "hashset", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390834_432755", + "13_662634_478379", + "13_372511_400009" + ] + } + } + } + } + }, + { + "LinkedHashSet类": { + "data": { + "uuid": "java-6-138", + "seg": [ + [ + [ + "linkedhashset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TreeSet类": { + "data": { + "uuid": "java-6-139", + "seg": [ + [ + [ + "treeset", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_246908_239647", + "13_250045_246690", + "13_362348_381318", + "13_782303_852791", + "13_247866_241805" + ] + } + } + } + } + }, + { + "EnumSet类": { + "data": { + "uuid": "java-6-140", + "seg": [ + [ + [ + "enumset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "各Set实现类的性能分析": { + "data": { + "uuid": "java-6-141", + "seg": [ + [ + [ + "set", + "类", + "性能", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239479_224757", + "13_218018_166987", + "13_227605_191979", + "13_717665_711054", + "13_381453_415213", + "13_666361_484385", + "13_385589_422961", + "13_1104199_1318554", + "13_189442_88367", + "13_724298_726281" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-647", + "seg": [ + [ + [ + "set", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Map集合": { + "children": [ + { + "Map接口的实现类": { + "data": { + "uuid": "java-6-142", + "seg": [ + [ + [ + "map", + "接口", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_954573_1099541", + "13_365872_389483", + "13_7436539_53409941", + "13_28195_7878", + "13_1102183_1316549", + "13_324214_315573", + "13_366158_390233", + "13_376382_406305", + "13_1063632_1261857", + "13_225124_185645" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-648", + "seg": [ + [ + [ + "map", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-558", + "seg": [ + [ + [ + "集合", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络通信": { + "children": [ + { + "网络程序设计基础": { + "children": [ + { + "局域网与因特网": { + "data": { + "uuid": "java-6-143", + "seg": [ + [ + [ + "局域网" + ], + [ + "因特网" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1099247_1314204" + ] + } + } + } + } + }, + { + "网络协议": { + "data": { + "uuid": "java-6-144", + "seg": [ + [ + [ + "网络协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "端口和套接字": { + "data": { + "uuid": "java-6-145", + "seg": [ + [ + [ + "端口" + ], + [ + "套", + "接字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-649", + "seg": [ + [ + [ + "网络", + "程序设计", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TCP程序设计基础": { + "children": [ + { + "InetAddress类": { + "data": { + "uuid": "java-6-146", + "seg": [ + [ + [ + "inetaddress", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServerSocket类": { + "data": { + "uuid": "java-6-147", + "seg": [ + [ + [ + "serversocket", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_351618_361311" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-650", + "seg": [ + [ + [ + "tcp", + "程序设计", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "UDP程序设计基础": { + "children": [ + { + "DatagramPacket类": { + "data": { + "uuid": "java-6-148", + "seg": [ + [ + [ + "datagrampacket", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DatagramSocket类": { + "data": { + "uuid": "java-6-149", + "seg": [ + [ + [ + "datagramsocket", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-651", + "seg": [ + [ + [ + "udp", + "程序设计", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-559", + "seg": [ + [ + [ + "网络通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-284", + "seg": [ + [ + [ + "核心技术" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_161001_29580" + ] + } + } + } + } + }, + { + "高级应用": { + "children": [ + { + "Swing表格组件": { + "children": [ + { + "利用JTable类直接创建表格": { + "children": [ + { + "创建表格": { + "data": { + "uuid": "java-6-150", + "seg": [ + [ + [ + "创建表格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制表格": { + "data": { + "uuid": "java-6-151", + "seg": [ + [ + [ + "定制", + "表格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操纵表格": { + "data": { + "uuid": "java-6-152", + "seg": [ + [ + [ + "操纵", + "表格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-652", + "seg": [ + [ + [ + "利用", + "jtable", + "类", + "创建表格" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230703_201204", + "13_7419463_53376640" + ] + } + } + } + } + }, + { + "提供行标题栏的表格": { + "data": { + "uuid": "java-5-653", + "seg": [ + [ + [ + "提供", + "标题栏", + "表格" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1094751_1305233", + "13_593_1092", + "13_7451391_53432648" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-560", + "seg": [ + [ + [ + "swing", + "表格", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing树组件": { + "children": [ + { + "处理选中节点事件": { + "data": { + "uuid": "java-5-654", + "seg": [ + [ + [ + "选中", + "节点", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遍历树节点": { + "data": { + "uuid": "java-5-655", + "seg": [ + [ + [ + "遍历", + "树", + "节点" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_767996_827815", + "13_248432_243242" + ] + } + } + } + } + }, + { + "定制树": { + "data": { + "uuid": "java-5-656", + "seg": [ + [ + [ + "定制", + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "维护树模型": { + "data": { + "uuid": "java-5-657", + "seg": [ + [ + [ + "维护", + "树", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理展开节点事件": { + "data": { + "uuid": "java-5-658", + "seg": [ + [ + [ + "展开", + "节点", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-561", + "seg": [ + [ + [ + "swing", + "树", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing其他高级组件": { + "children": [ + { + "高级组件面板": { + "children": [ + { + "分割面板": { + "data": { + "uuid": "java-6-153", + "seg": [ + [ + [ + "分割", + "面板" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7429039_53395483" + ] + } + } + } + } + }, + { + "选项卡面板": { + "data": { + "uuid": "java-6-154", + "seg": [ + [ + [ + "选项卡", + "面板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "桌面面板和内部窗体": { + "data": { + "uuid": "java-6-155", + "seg": [ + [ + [ + "桌面", + "面板" + ], + [ + "内部", + "窗体" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-659", + "seg": [ + [ + [ + "高级", + "组件", + "面板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件选择器": { + "children": [ + { + "文件选择对话框": { + "data": { + "uuid": "java-6-156", + "seg": [ + [ + [ + "文件", + "选择", + "对话框" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_347645_353887", + "13_158147_21932" + ] + } + } + } + } + }, + { + "使用文件过滤器": { + "data": { + "uuid": "java-6-157", + "seg": [ + [ + [ + "文件", + "过滤器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-660", + "seg": [ + [ + [ + "文件", + "选择器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "系统托盘": { + "data": { + "uuid": "java-5-661", + "seg": [ + [ + [ + "系统托盘" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "桌面集成控件": { + "data": { + "uuid": "java-5-662", + "seg": [ + [ + [ + "桌面", + "集成", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-562", + "seg": [ + [ + [ + "swing", + "高级", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级事件处理": { + "children": [ + { + "选项事件": { + "data": { + "uuid": "java-5-663", + "seg": [ + [ + [ + "选项", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表格模型事件": { + "data": { + "uuid": "java-5-664", + "seg": [ + [ + [ + "表格", + "模型", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-563", + "seg": [ + [ + [ + "高级", + "事件处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWT绘图": { + "children": [ + { + "绘制图形": { + "data": { + "uuid": "java-5-665", + "seg": [ + [ + [ + "绘制", + "图形" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘图颜色与画笔属性": { + "children": [ + { + "画笔属性": { + "data": { + "uuid": "java-6-158", + "seg": [ + [ + [ + "画笔", + "属性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_53774_9687", + "13_6365486_44583522" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-666", + "seg": [ + [ + [ + "绘图", + "颜色" + ], + [ + "画笔", + "属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制文本": { + "children": [ + { + "设置字体": { + "data": { + "uuid": "java-6-159", + "seg": [ + [ + [ + "设置", + "字体" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1048767_1246481" + ] + } + } + } + } + }, + { + "显示文字": { + "data": { + "uuid": "java-6-160", + "seg": [ + [ + [ + "显示", + "文字" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_204150_132555", + "13_358078_375679", + "13_668612_489093", + "13_647089_450163", + "13_719319_713364", + "13_188077_84153", + "13_655408_466033" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-667", + "seg": [ + [ + [ + "绘制", + "文本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制图片": { + "data": { + "uuid": "java-5-668", + "seg": [ + [ + [ + "绘制", + "图片" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7423489_53383301" + ] + } + } + } + } + }, + { + "画图的实现原理": { + "data": { + "uuid": "java-5-669", + "seg": [ + [ + [ + "画图", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Graphics类": { + "data": { + "uuid": "java-5-670", + "seg": [ + [ + [ + "graphics", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_688086_553111" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-564", + "seg": [ + [ + [ + "awt", + "绘图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-285", + "seg": [ + [ + [ + "高级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "理解面向对象": { + "children": [ + { + "UML(统一建模语言)介绍": { + "children": [ + { + "用例图": { + "data": { + "uuid": "java-5-671", + "seg": [ + [ + [ + "例图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类图": { + "data": { + "uuid": "java-5-672", + "seg": [ + [ + [ + "类图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组件图": { + "data": { + "uuid": "java-5-673", + "seg": [ + [ + [ + "组件", + "图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署图": { + "data": { + "uuid": "java-5-674", + "seg": [ + [ + [ + "部署", + "图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "顺序图": { + "data": { + "uuid": "java-5-675", + "seg": [ + [ + [ + "顺序", + "图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "活动图": { + "data": { + "uuid": "java-5-676", + "seg": [ + [ + [ + "活动", + "图" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7440260_53415328", + "13_700543_589486", + "13_7443836_53421130", + "13_251903_277056", + "13_216987_164834", + "13_364710_386832", + "13_763445_821894" + ] + } + } + } + } + }, + { + "状态机图": { + "data": { + "uuid": "java-5-677", + "seg": [ + [ + [ + "状态机", + "图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-565", + "seg": [ + [ + [ + "uml", + "统一", + "建模语言", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的面向对象特征": { + "data": { + "uuid": "java-4-566", + "seg": [ + [ + [ + "java", + "面向对象", + "特征" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-286", + "seg": [ + [ + [ + "理解", + "面向对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java基础类库": { + "children": [ + { + "与用户互动": { + "children": [ + { + "运行Java程序的参数": { + "data": { + "uuid": "java-5-678", + "seg": [ + [ + [ + "运行", + "java", + "程序", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Scanner获取键盘输入": { + "data": { + "uuid": "java-5-679", + "seg": [ + [ + [ + "scanner", + "获取", + "键盘输入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_650153_456638" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-567", + "seg": [ + [ + [], + [ + "用户", + "互动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "系统相关": { + "data": { + "uuid": "java-4-568", + "seg": [ + [ + [ + "系统", + "相关" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_384199_420314", + "13_755627_811046", + "13_7415975_53369611", + "13_1092126_1299873", + "13_7427514_53392485" + ] + } + } + } + } + }, + { + "Java 11改进的国际化与格式化": { + "children": [ + { + "Java国际化的思路": { + "data": { + "uuid": "java-5-680", + "seg": [ + [ + [ + "java", + "国际化", + "思路" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_252071_253024", + "13_263436_277623", + "13_688433_554211", + "13_676376_515284", + "13_631987_441078", + "13_652100_460049", + "13_181739_67263" + ] + } + } + } + } + }, + { + "Java支持的国家和语言": { + "data": { + "uuid": "java-5-681", + "seg": [ + [ + [ + "java", + "支持", + "国家" + ], + [ + "语言" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_230143_199085" + ] + } + } + } + } + }, + { + "完成程序国际化": { + "data": { + "uuid": "java-5-682", + "seg": [ + [ + [ + "程序", + "国际化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用MessageFormat处理包含占位符的字符串": { + "data": { + "uuid": "java-5-683", + "seg": [ + [ + [ + "messageformat", + "包含", + "占位", + "符", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用类文件代替资源文件": { + "data": { + "uuid": "java-5-684", + "seg": [ + [ + [ + "类", + "文件", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 9新增的日志API": { + "data": { + "uuid": "java-5-685", + "seg": [ + [ + [ + "java", + "新增", + "日志", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用NumberFormat格式化数字": { + "data": { + "uuid": "java-5-686", + "seg": [ + [ + [ + "numberformat", + "格式化", + "数字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用DateFormat格式化日期、时间": { + "data": { + "uuid": "java-5-687", + "seg": [ + [ + [ + "dateformat", + "格式化", + "日期" + ], + [ + "时间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用SimpleDateFormat格式化日期": { + "data": { + "uuid": "java-5-688", + "seg": [ + [ + [ + "simpledateformat", + "格式化", + "日期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-569", + "seg": [ + [ + [ + "java", + "改进", + "国际化" + ], + [ + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 8新增的日期、时间格式器": { + "children": [ + { + "使用DateTimeFormatter完成格式化": { + "data": { + "uuid": "java-5-689", + "seg": [ + [ + [ + "datetimeformatter", + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用DateTimeFormatter解析字符串": { + "data": { + "uuid": "java-5-690", + "seg": [ + [ + [ + "datetimeformatter", + "解析", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-570", + "seg": [ + [ + [ + "java", + "新增", + "日期" + ], + [ + "时间", + "格式", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7395184_53337805" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-287", + "seg": [ + [ + [ + "java", + "基础", + "类库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java集合": { + "children": [ + { + "Java集合概述": { + "data": { + "uuid": "java-4-571", + "seg": [ + [ + [ + "java", + "集合", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 11增强的Collection和Iterator接口": { + "children": [ + { + "使用Lambda表达式遍历集合": { + "data": { + "uuid": "java-5-691", + "seg": [ + [ + [ + "lambda", + "表达式", + "遍历", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Iterator遍历集合元素": { + "data": { + "uuid": "java-5-692", + "seg": [ + [ + [ + "iterator", + "遍历", + "集合", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_178816_65958", + "13_670256_492700", + "13_217919_167014", + "13_819387_916547", + "13_644031_444327", + "13_184697_74918", + "13_228368_194211" + ] + } + } + } + } + }, + { + "使用Lambda表达式遍历Iterator": { + "data": { + "uuid": "java-5-693", + "seg": [ + [ + [ + "lambda", + "表达式", + "遍历", + "iterator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用foreach循环遍历集合元素": { + "data": { + "uuid": "java-5-694", + "seg": [ + [ + [ + "for", + "each", + "循环", + "遍历", + "集合", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Predicate操作集合": { + "data": { + "uuid": "java-5-695", + "seg": [ + [ + [ + "predicate", + "操作", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Stream操作集合": { + "data": { + "uuid": "java-5-696", + "seg": [ + [ + [ + "stream", + "操作", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-572", + "seg": [ + [ + [ + "java", + "增强", + "collection" + ], + [ + "iterator", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Queue集合": { + "children": [ + { + "PriorityQueue实现类": { + "data": { + "uuid": "java-5-697", + "seg": [ + [ + [ + "priorityqueue", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Deque接口与ArrayDeque实现类": { + "data": { + "uuid": "java-5-698", + "seg": [ + [ + [ + "deque", + "接口" + ], + [ + "arraydeque", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LinkedList实现类": { + "data": { + "uuid": "java-5-699", + "seg": [ + [ + [ + "linkedlist", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "各种线性表的性能分析": { + "data": { + "uuid": "java-5-700", + "seg": [ + [ + [ + "线性表", + "性能", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-573", + "seg": [ + [ + [ + "queue", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增强的Map集合": { + "children": [ + { + "Java 8为Map新增的方法": { + "data": { + "uuid": "java-5-701", + "seg": [ + [ + [ + "java", + "map", + "新增", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "改进的HashMap和Hashtable实现类": { + "data": { + "uuid": "java-5-702", + "seg": [ + [ + [ + "改进", + "hashmap" + ], + [ + "hashtable", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_323757_314654" + ] + } + } + } + } + }, + { + "LinkedHashMap实现类": { + "data": { + "uuid": "java-5-703", + "seg": [ + [ + [ + "linkedhashmap", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Properties读写属性文件": { + "data": { + "uuid": "java-5-704", + "seg": [ + [ + [ + "properties", + "读写", + "属性", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SortedMap接口和TreeMap实现类": { + "data": { + "uuid": "java-5-705", + "seg": [ + [ + [ + "sortedmap", + "接口" + ], + [ + "treemap", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "WeakHashMap实现类": { + "data": { + "uuid": "java-5-706", + "seg": [ + [ + [ + "weakhashmap", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IdentityHashMap实现类": { + "data": { + "uuid": "java-5-707", + "seg": [ + [ + [ + "identityhashmap", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "EnumMap实现类": { + "data": { + "uuid": "java-5-708", + "seg": [ + [ + [ + "enummap", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "各Map实现类的性能分析": { + "data": { + "uuid": "java-5-709", + "seg": [ + [ + [ + "map", + "类", + "性能", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-574", + "seg": [ + [ + [ + "增强", + "map", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HashSet和HashMap的性能选项": { + "data": { + "uuid": "java-4-575", + "seg": [ + [ + [ + "hashset" + ], + [ + "hashmap", + "性能", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作集合的工具类:Collections": { + "children": [ + { + "排序操作": { + "data": { + "uuid": "java-5-710", + "seg": [ + [ + [ + "排序", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "同步控制": { + "data": { + "uuid": "java-5-711", + "seg": [ + [ + [ + "同步控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置不可变集合": { + "data": { + "uuid": "java-5-712", + "seg": [ + [ + [ + "设置", + "变", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 9新增的不可变集合": { + "data": { + "uuid": "java-5-713", + "seg": [ + [ + [ + "java", + "新增", + "变", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-576", + "seg": [ + [ + [ + "操作", + "集合", + "工具", + "类" + ] + ], + [ + [ + "collections" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-288", + "seg": [ + [ + [ + "java", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWT编程": { + "children": [ + { + "AWT容器": { + "data": { + "uuid": "java-4-577", + "seg": [ + [ + [ + "awt", + "容器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7451745_53433198", + "13_240860_225926", + "13_7445593_53424259", + "13_765419_829047", + "13_7442646_53419564", + "13_7436047_53407130", + "13_683310_539306" + ] + } + } + } + } + }, + { + "AWT常用组件": { + "children": [ + { + "基本组件": { + "data": { + "uuid": "java-5-714", + "seg": [ + [ + [ + "组件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对话框(Dialog)": { + "data": { + "uuid": "java-5-715", + "seg": [ + [ + [ + "对话框", + "dialog" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-578", + "seg": [ + [ + [ + "awt", + "组件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "AWT菜单": { + "children": [ + { + "右键菜单": { + "data": { + "uuid": "java-5-716", + "seg": [ + [ + [ + "右键", + "菜单" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_693289_570523" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-579", + "seg": [ + [ + [ + "awt", + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "处理位图": { + "children": [ + { + "Image抽象类和BufferedImage实现类": { + "data": { + "uuid": "java-5-717", + "seg": [ + [ + [ + "image", + "抽象类" + ], + [ + "bufferedimage", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java 9增强的ImageIO": { + "data": { + "uuid": "java-5-718", + "seg": [ + [ + [ + "java", + "增强", + "imageio" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_238959_221545" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-580", + "seg": [ + [ + [ + "位", + "图" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7444790_53423522" + ] + } + } + } + } + }, + { + "拖放功能": { + "children": [ + { + "拖放目标": { + "data": { + "uuid": "java-5-719", + "seg": [ + [ + [ + "拖放", + "目标" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "拖放源": { + "data": { + "uuid": "java-5-720", + "seg": [ + [ + [ + "拖放", + "源" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_375604_405154" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-581", + "seg": [ + [ + [ + "拖放", + "功能" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-289", + "seg": [ + [ + [ + "awt", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Swing编程": { + "children": [ + { + "Swing基本组件的用法": { + "children": [ + { + "AWT组件的Swing实现": { + "data": { + "uuid": "java-5-721", + "seg": [ + [ + [ + "awt", + "组件", + "swing" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_220079_172170", + "13_196281_108667", + "13_245387_235803", + "13_228823_195482", + "13_745321_792937", + "13_744215_789868", + "13_162525_33807", + "13_183087_69599", + "13_371059_397836", + "13_7462276_53447721" + ] + } + } + } + } + }, + { + "为组件设置边框": { + "data": { + "uuid": "java-5-722", + "seg": [ + [ + [ + "组件", + "设置", + "边框" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing组件的双缓冲和键盘驱动": { + "data": { + "uuid": "java-5-723", + "seg": [ + [ + [ + "swing", + "组件", + "双", + "缓冲" + ], + [ + "键盘", + "驱动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JToolBar创建工具条": { + "data": { + "uuid": "java-5-724", + "seg": [ + [ + [ + "jtoolbar", + "创建", + "工具条" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JFileChooser和JColorChooser": { + "data": { + "uuid": "java-5-725", + "seg": [ + [ + [ + "jfilechooser" + ], + [ + "jcolorchooser" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_193354_98530" + ] + } + } + } + } + }, + { + "使用JOptionPane": { + "data": { + "uuid": "java-5-726", + "seg": [ + [ + [ + "joptionpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-582", + "seg": [ + [ + [ + "swing", + "组件", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing中的特殊容器": { + "children": [ + { + "使用JSplitPane": { + "data": { + "uuid": "java-5-727", + "seg": [ + [ + [ + "jsplitpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JTabbedPane": { + "data": { + "uuid": "java-5-728", + "seg": [ + [ + [ + "jtabbedpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JLayeredPane、JDesktopPane和JInternalFrame": { + "data": { + "uuid": "java-5-729", + "seg": [ + [ + [ + "jlayeredpane" + ], + [ + "jdesktoppane" + ], + [ + "jinternalframe" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-583", + "seg": [ + [ + [ + "swing", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing简化的拖放功能": { + "data": { + "uuid": "java-4-584", + "seg": [ + [ + [ + "swing", + "简化", + "拖放", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 7新增的Swing功能": { + "children": [ + { + "使用JLayer装饰组件": { + "data": { + "uuid": "java-5-730", + "seg": [ + [ + [ + "jlayer", + "装饰", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建透明、不规则形状窗口": { + "data": { + "uuid": "java-5-731", + "seg": [ + [ + [ + "创建", + "透明" + ], + [ + "不规则", + "形状", + "窗口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-585", + "seg": [ + [ + [ + "java", + "新增", + "swing", + "功能" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1051451_1248797" + ] + } + } + } + } + }, + { + "使用JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条": { + "children": [ + { + "创建进度条": { + "data": { + "uuid": "java-5-732", + "seg": [ + [ + [ + "创建", + "进度条" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7398302_53344662" + ] + } + } + } + } + }, + { + "创建进度对话框": { + "data": { + "uuid": "java-5-733", + "seg": [ + [ + [ + "创建", + "进度", + "对话框" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-586", + "seg": [ + [ + [ + "jprogressbar" + ], + [ + "progressmonitor" + ], + [ + "boundedrangemodel", + "创建", + "进度条" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JSlider和BoundedRangeModel创建滑动条": { + "data": { + "uuid": "java-4-587", + "seg": [ + [ + [ + "jslider" + ], + [ + "boundedrangemodel", + "创建", + "滑动", + "条" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JSpinner和SpinnerModel创建微调控制器": { + "data": { + "uuid": "java-4-588", + "seg": [ + [ + [ + "jspinner" + ], + [ + "spinnermodel", + "创建", + "微调", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JList、JComboBox创建列表框": { + "children": [ + { + "不强制存储列表项的ListModel和ComboBoxModel": { + "data": { + "uuid": "java-5-734", + "seg": [ + [ + [ + "强制", + "存储", + "列表", + "listmodel" + ], + [ + "comboboxmodel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "强制存储列表项的DefaultListModel和DefaultComboBoxModel": { + "data": { + "uuid": "java-5-735", + "seg": [ + [ + [ + "强制", + "存储", + "列表", + "defaultlistmodel" + ], + [ + "defaultcomboboxmodel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用ListCellRenderer改变列表项外观": { + "data": { + "uuid": "java-5-736", + "seg": [ + [ + [ + "listcellrenderer", + "改变", + "列表", + "项", + "外观" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-589", + "seg": [ + [ + [ + "jlist" + ], + [ + "jcombobox", + "创建", + "列表框" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JTree和TreeModel创建树": { + "children": [ + { + "创建树": { + "data": { + "uuid": "java-5-737", + "seg": [ + [ + [ + "创建", + "树" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_263292_277330", + "13_5357_4467", + "13_364777_387030", + "13_7428643_53394818", + "13_766190_825375", + "13_221339_177188", + "13_1063925_1262061" + ] + } + } + } + } + }, + { + "拖动、编辑树节点": { + "data": { + "uuid": "java-5-738", + "seg": [ + [ + [ + "拖动" + ], + [ + "编辑", + "树", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监听节点事件": { + "data": { + "uuid": "java-5-739", + "seg": [ + [ + [ + "监听", + "节点", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用DefaultTreeCellRenderer改变节点外观": { + "data": { + "uuid": "java-5-740", + "seg": [ + [ + [ + "defaulttreecellrenderer", + "改变", + "节点", + "外观" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扩展DefaultTreeCellRenderer改变节点外观": { + "data": { + "uuid": "java-5-741", + "seg": [ + [ + [ + "扩展", + "defaulttreecellrenderer", + "改变", + "节点", + "外观" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现TreeCellRenderer改变节点外观": { + "data": { + "uuid": "java-5-742", + "seg": [ + [ + [ + "treecellrenderer", + "改变", + "节点", + "外观" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-590", + "seg": [ + [ + [ + "jtree" + ], + [ + "treemodel", + "创建", + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JTable和TableModel创建表格": { + "children": [ + { + "TableModel和监听器": { + "data": { + "uuid": "java-5-743", + "seg": [ + [ + [ + "tablemodel" + ], + [ + "监听器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TableColumnModel和监听器": { + "data": { + "uuid": "java-5-744", + "seg": [ + [ + [ + "tablecolumnmodel" + ], + [ + "监听器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现排序": { + "data": { + "uuid": "java-5-745", + "seg": [ + [ + [ + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_374923_404117" + ] + } + } + } + } + }, + { + "绘制单元格内容": { + "data": { + "uuid": "java-5-746", + "seg": [ + [ + [ + "绘制", + "单元格", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编辑单元格内容": { + "data": { + "uuid": "java-5-747", + "seg": [ + [ + [ + "编辑", + "单元格", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-591", + "seg": [ + [ + [ + "jtable" + ], + [ + "tablemodel", + "创建表格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JFormattedTextField和JTextPane创建格式文本": { + "children": [ + { + "监听Document的变化": { + "data": { + "uuid": "java-5-748", + "seg": [ + [ + [ + "监听", + "document", + "变化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JPasswordField": { + "data": { + "uuid": "java-5-749", + "seg": [ + [ + [ + "jpasswordfield" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JFormattedTextField": { + "data": { + "uuid": "java-5-750", + "seg": [ + [ + [ + "jformattedtextfield" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7459411_53444319" + ] + } + } + } + } + }, + { + "使用JEditorPane": { + "data": { + "uuid": "java-5-751", + "seg": [ + [ + [ + "jeditorpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JTextPane": { + "data": { + "uuid": "java-5-752", + "seg": [ + [ + [ + "jtextpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-592", + "seg": [ + [ + [ + "jformattedtextfield" + ], + [ + "jtextpane", + "创建", + "格式", + "文本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-290", + "seg": [ + [ + [ + "swing", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解(Annotation)": { + "children": [ + { + "JDK的元注解": { + "children": [ + { + "使用@Retention": { + "data": { + "uuid": "java-5-753", + "seg": [ + [ + [ + "retention" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_354809_367514" + ] + } + } + } + } + }, + { + "使用@Target": { + "data": { + "uuid": "java-5-754", + "seg": [ + [ + [ + "target" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用@Documented": { + "data": { + "uuid": "java-5-755", + "seg": [ + [ + [ + "documented" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用@Inherited": { + "data": { + "uuid": "java-5-756", + "seg": [ + [ + [ + "inherited" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-593", + "seg": [ + [ + [ + "jdk", + "元", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义注解": { + "children": [ + { + "提取注解信息": { + "data": { + "uuid": "java-5-757", + "seg": [ + [ + [ + "提取", + "注解", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743182_786935" + ] + } + } + } + } + }, + { + "使用注解的示例": { + "data": { + "uuid": "java-5-758", + "seg": [ + [ + [ + "注解", + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_198083_113246", + "13_904398_1039731", + "13_1072254_1274546", + "13_1166021_1929065", + "13_7445694_53424359", + "13_378339_409449", + "13_1101582_1316121", + "13_7463652_53449767", + "13_759020_815159", + "13_183454_72313" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-594", + "seg": [ + [ + [ + "自定义", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编译时处理注解": { + "data": { + "uuid": "java-4-595", + "seg": [ + [ + [ + "编译", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-291", + "seg": [ + [ + [ + "注解", + "annotation" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输入/输出": { + "children": [ + { + "理解Java的IO流": { + "children": [ + { + "流的分类": { + "data": { + "uuid": "java-5-759", + "seg": [ + [ + [ + "流", + "分类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_752122_806115", + "13_746035_794846", + "13_370781_397473", + "13_658381_471425", + "13_28570_8041", + "13_645602_447291", + "13_7437018_53409515", + "13_7413576_53365676", + "13_7444024_53421778", + "13_643462_443868" + ] + } + } + } + } + }, + { + "流的概念模型": { + "data": { + "uuid": "java-5-760", + "seg": [ + [ + [ + "流", + "概念模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-596", + "seg": [ + [ + [ + "理解", + "java", + "io", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "输入/输出流体系": { + "children": [ + { + "处理流的用法": { + "data": { + "uuid": "java-5-761", + "seg": [ + [ + [ + "流", + "用法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_693501_571189", + "13_648054_452059", + "13_385317_422513" + ] + } + } + } + } + }, + { + "输入/输出流体系": { + "data": { + "uuid": "java-5-762", + "seg": [ + [ + [ + "输入", + "输出", + "流", + "体系" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "推回输入流": { + "data": { + "uuid": "java-5-763", + "seg": [ + [ + [ + "推回", + "输入", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_690083_559389", + "13_766723_826119" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-597", + "seg": [ + [ + [ + "输入", + "输出", + "流", + "体系" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "重定向标准输入/输出": { + "data": { + "uuid": "java-4-598", + "seg": [ + [ + [ + "重定向", + "标准", + "输入", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java虚拟机读写其他进程的数据": { + "data": { + "uuid": "java-4-599", + "seg": [ + [ + [ + "java", + "虚拟机", + "读写", + "进程", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 9改进的对象序列化": { + "children": [ + { + "序列化的含义和意义": { + "data": { + "uuid": "java-5-764", + "seg": [ + [ + [ + "序列化", + "含义" + ], + [ + "意义" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_200787_122061" + ] + } + } + } + } + }, + { + "使用对象流实现序列化": { + "data": { + "uuid": "java-5-765", + "seg": [ + [ + [ + "对象", + "流", + "序列化" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_675939_512612" + ] + } + } + } + } + }, + { + "对象引用的序列化": { + "data": { + "uuid": "java-5-766", + "seg": [ + [ + [ + "对象", + "引用", + "序列化" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_755323_811394", + "13_7438932_53412371" + ] + } + } + } + } + }, + { + "Java 9增加的过滤功能": { + "data": { + "uuid": "java-5-767", + "seg": [ + [ + [ + "java", + "增加", + "过滤", + "功能" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7456575_53440420" + ] + } + } + } + } + }, + { + "自定义序列化": { + "data": { + "uuid": "java-5-768", + "seg": [ + [ + [ + "自定义", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "另一种自定义序列化机制": { + "data": { + "uuid": "java-5-769", + "seg": [ + [ + [ + "自定义", + "序列化", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "版本": { + "data": { + "uuid": "java-5-770", + "seg": [ + [ + [ + "版本" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7464561_53451045", + "13_697528_583288", + "13_1091157_1298489", + "13_7459452_53444386", + "13_770806_833246" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-600", + "seg": [ + [ + [ + "java", + "改进", + "对象", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "NIO.2的功能和用法": { + "children": [ + { + "Path、Paths和Files核心API": { + "data": { + "uuid": "java-5-771", + "seg": [ + [ + [ + "path" + ], + [ + "paths" + ], + [ + "files", + "核心", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用WatchService监控文件变化": { + "data": { + "uuid": "java-5-772", + "seg": [ + [ + [ + "watchservice", + "监控", + "文件", + "变化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "访问文件属性": { + "data": { + "uuid": "java-5-773", + "seg": [ + [ + [ + "访问", + "文件属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-601", + "seg": [ + [ + [ + "nio", + "功能" + ], + [ + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-292", + "seg": [ + [ + [ + "输入", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java程序设计概述": { + "children": [ + { + "Java程序设计平台": { + "data": { + "uuid": "java-4-602", + "seg": [ + [ + [ + "java", + "程序设计", + "平台" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7429981_53396951", + "13_707980_641196", + "13_7451390_53432913", + "13_7397081_53341593", + "13_7397085_53341547", + "13_645208_446518", + "13_354681_367352", + "13_333693_325966", + "13_7444620_53422990" + ] + } + } + } + } + }, + { + "Java“白皮书”的关键术语": { + "children": [ + { + "解释型": { + "data": { + "uuid": "java-5-774", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-603", + "seg": [ + [ + [ + "java", + "白皮书", + "关键", + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java发展简史": { + "data": { + "uuid": "java-4-604", + "seg": [ + [ + [ + "java", + "发展", + "简史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关于Java的常见误解": { + "data": { + "uuid": "java-4-605", + "seg": [ + [ + [ + "java", + "常见", + "误解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-293", + "seg": [ + [ + [ + "java", + "程序设计", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java程序设计环境": { + "children": [ + { + "安装Java开发工具包": { + "children": [ + { + "设置JDK": { + "data": { + "uuid": "java-5-775", + "seg": [ + [ + [ + "设置", + "jdk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装库源文件和文档": { + "data": { + "uuid": "java-5-776", + "seg": [ + [ + [ + "安装", + "库", + "源文件" + ], + [ + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-606", + "seg": [ + [ + [ + "安装", + "java", + "开发", + "工具包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用命令行工具": { + "data": { + "uuid": "java-4-607", + "seg": [ + [ + [ + "命令行", + "工具" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_26924_7376" + ] + } + } + } + } + }, + { + "使用集成开发环境": { + "data": { + "uuid": "java-4-608", + "seg": [ + [ + [ + "集成", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JShell": { + "data": { + "uuid": "java-4-609", + "seg": [ + [ + [ + "jshell" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-294", + "seg": [ + [ + [ + "java", + "程序设计", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的基本程序设计结构": { + "children": [ + { + "一个简单的Java应用程序": { + "data": { + "uuid": "java-4-610", + "seg": [ + [ + [ + "java", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大数": { + "data": { + "uuid": "java-4-611", + "seg": [ + [ + [ + "大数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-295", + "seg": [ + [ + [ + "java", + "程序设计", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型程序设计": { + "children": [ + { + "类型变量的限定": { + "data": { + "uuid": "java-4-612", + "seg": [ + [ + [ + "类型", + "变量", + "限定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限制与局限性": { + "children": [ + { + "运行时类型查询只适用于原始类型": { + "data": { + "uuid": "java-5-777", + "seg": [ + [ + [ + "运行", + "类型", + "查询", + "原始" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不能创建参数化类型的数组": { + "data": { + "uuid": "java-5-778", + "seg": [ + [ + [ + "创建", + "参数", + "化", + "类型", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Varargs警告": { + "data": { + "uuid": "java-5-779", + "seg": [ + [ + [ + "varargs", + "警告" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不能构造泛型数组": { + "data": { + "uuid": "java-5-780", + "seg": [ + [ + [ + "构造", + "泛型", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型类的静态上下文中类型变量无效": { + "data": { + "uuid": "java-5-781", + "seg": [ + [ + [ + "泛", + "型类", + "静态", + "上下文", + "类型", + "变量", + "无效" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_324443_316073" + ] + } + } + } + } + }, + { + "可以取消对检查型异常的检查": { + "data": { + "uuid": "java-5-782", + "seg": [ + [ + [ + "取消", + "检查", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注意擦除后的冲突": { + "data": { + "uuid": "java-5-783", + "seg": [ + [ + [ + "擦除", + "冲突" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-613", + "seg": [ + [ + [], + [ + "局限性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "泛型类型的继承规则": { + "data": { + "uuid": "java-4-614", + "seg": [ + [ + [ + "泛型", + "类型", + "继承", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "反射和泛型": { + "children": [ + { + "泛型Class类": { + "data": { + "uuid": "java-5-784", + "seg": [ + [ + [ + "泛型", + "class", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Class参数进行类型匹配": { + "data": { + "uuid": "java-5-785", + "seg": [ + [ + [ + "class", + "t", + "参数", + "类型", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_200008_119509" + ] + } + } + } + } + }, + { + "虚拟机中的泛型类型信息": { + "data": { + "uuid": "java-5-786", + "seg": [ + [ + [ + "虚拟机", + "泛型", + "类型信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7396683_53340999", + "13_194116_100761" + ] + } + } + } + } + }, + { + "类型字面量": { + "data": { + "uuid": "java-5-787", + "seg": [ + [ + [ + "类型", + "字面", + "量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_376857_407063" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-615", + "seg": [ + [ + [ + "反射", + "和泛" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-296", + "seg": [ + [ + [ + "泛型", + "程序设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图形用户界面程序设计": { + "children": [ + { + "Java用户界面工具包简史": { + "data": { + "uuid": "java-4-616", + "seg": [ + [ + [ + "java", + "用户界面", + "工具包", + "简史" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "显示窗体": { + "children": [ + { + "创建窗体": { + "data": { + "uuid": "java-5-788", + "seg": [ + [ + [ + "创建", + "窗体" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_351211_363867", + "13_7423516_53383337" + ] + } + } + } + } + }, + { + "窗体属性": { + "data": { + "uuid": "java-5-789", + "seg": [ + [ + [ + "窗体", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-617", + "seg": [ + [ + [ + "显示", + "窗体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在组件中显示信息": { + "children": [ + { + "处理2D图形": { + "data": { + "uuid": "java-5-790", + "seg": [ + [ + [ + "d", + "图形" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_354764_367795" + ] + } + } + } + } + }, + { + "使用颜色": { + "data": { + "uuid": "java-5-791", + "seg": [ + [ + [ + "颜色" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用字体": { + "data": { + "uuid": "java-5-792", + "seg": [ + [ + [ + "字体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "显示图像": { + "data": { + "uuid": "java-5-793", + "seg": [ + [ + [ + "显示", + "图像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-618", + "seg": [ + [ + [ + "组件", + "显示信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "首选项API": { + "data": { + "uuid": "java-4-619", + "seg": [ + [ + [ + "首选项", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-297", + "seg": [ + [ + [ + "图形用户界面", + "程序设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing用户界面组件": { + "children": [ + { + "布局管理概述": { + "children": [ + { + "边框布局": { + "data": { + "uuid": "java-5-794", + "seg": [ + [ + [ + "边框", + "布局" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网格布局": { + "data": { + "uuid": "java-5-795", + "seg": [ + [ + [ + "网格", + "布局" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-620", + "seg": [ + [ + [ + "布局", + "管理", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文本输入": { + "children": [ + { + "密码域": { + "data": { + "uuid": "java-5-796", + "seg": [ + [ + [ + "密码", + "域" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文本区": { + "data": { + "uuid": "java-5-797", + "seg": [ + [ + [ + "文本", + "区" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_163422_36252", + "13_743716_788550", + "13_7416142_53370041" + ] + } + } + } + } + }, + { + "滚动窗格": { + "data": { + "uuid": "java-5-798", + "seg": [ + [ + [ + "滚动", + "窗格" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-621", + "seg": [ + [ + [ + "文本", + "输入" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "选择组件": { + "children": [ + { + "组合框": { + "data": { + "uuid": "java-5-799", + "seg": [ + [ + [ + "组合", + "框" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1100861_1315580" + ] + } + } + } + } + }, + { + "滑动条": { + "data": { + "uuid": "java-5-800", + "seg": [ + [ + [ + "滑动", + "条" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-622", + "seg": [ + [ + [ + "选择", + "组件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "复杂的布局管理": { + "children": [ + { + "网格包布局": { + "data": { + "uuid": "java-5-801", + "seg": [ + [ + [ + "网格", + "包", + "布局" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7420383_53378422" + ] + } + } + } + } + }, + { + "定制布局管理器": { + "data": { + "uuid": "java-5-802", + "seg": [ + [ + [ + "定制", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-623", + "seg": [ + [ + [ + "布局", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-298", + "seg": [ + [ + [ + "swing", + "用户界面", + "组件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java快速入门": { + "children": [ + { + "Java程序基础": { + "children": [ + { + "Java程序基本结构": { + "data": { + "uuid": "java-5-803", + "seg": [ + [ + [ + "java", + "程序", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "整数运算": { + "data": { + "uuid": "java-5-804", + "seg": [ + [ + [ + "整数", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7441487_53417669", + "13_664814_481867", + "13_1102403_1316815", + "13_242494_229867", + "13_372118_399199", + "13_768720_829179", + "13_197214_110990", + "13_692451_567378" + ] + } + } + } + } + }, + { + "浮点数运算": { + "data": { + "uuid": "java-5-805", + "seg": [ + [ + [ + "浮点数", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_650747_457635", + "13_1082383_1288340", + "13_344453_347607" + ] + } + } + } + } + }, + { + "布尔运算": { + "data": { + "uuid": "java-5-806", + "seg": [ + [ + [ + "布尔运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组类型": { + "data": { + "uuid": "java-5-807", + "seg": [ + [ + [ + "数组", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223582_181848", + "13_228803_195458" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-624", + "seg": [ + [ + [ + "java", + "程序", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数组操作": { + "data": { + "uuid": "java-4-625", + "seg": [ + [ + [ + "数组", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-299", + "seg": [ + [ + [ + "java", + "快速", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IO": { + "children": [ + { + "File对象": { + "data": { + "uuid": "java-4-626", + "seg": [ + [ + [ + "file", + "对象" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_826805_923111" + ] + } + } + } + } + }, + { + "InputStream": { + "data": { + "uuid": "java-4-627", + "seg": [ + [ + [ + "inputstream" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_773567_837537" + ] + } + } + } + } + }, + { + "OutputStream": { + "data": { + "uuid": "java-4-628", + "seg": [ + [ + [ + "outputstream" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Filter模式": { + "data": { + "uuid": "java-4-629", + "seg": [ + [ + [ + "filter", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作Zip": { + "data": { + "uuid": "java-4-630", + "seg": [ + [ + [ + "操作", + "zip" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_231037_201417" + ] + } + } + } + } + }, + { + "读取classpath资源": { + "data": { + "uuid": "java-4-631", + "seg": [ + [ + [ + "读取", + "classpath", + "资源" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_644442_445132" + ] + } + } + } + } + }, + { + "序列化": { + "data": { + "uuid": "java-4-632", + "seg": [ + [ + [ + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PrintStream和PrintWriter": { + "data": { + "uuid": "java-4-633", + "seg": [ + [ + [ + "printstream" + ], + [ + "printwriter" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Files": { + "data": { + "uuid": "java-4-634", + "seg": [ + [ + [ + "files" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_671521_495433" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-300", + "seg": [ + [ + [ + "io" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_215410_161345", + "13_346112_351429", + "13_667118_486152", + "13_742331_784248", + "13_7434373_53404907" + ] + } + } + } + } + }, + { + "单元测试": { + "children": [ + { + "编写JUnit测试": { + "data": { + "uuid": "java-4-635", + "seg": [ + [ + [ + "编写", + "junit" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Fixture": { + "data": { + "uuid": "java-4-636", + "seg": [ + [ + [ + "fixture" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数化测试": { + "data": { + "uuid": "java-4-637", + "seg": [ + [ + [ + "参数", + "化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-301", + "seg": [ + [ + [ + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-15", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-1-0", + "seg": [ + [ + [ + "java", + "初阶" + ] + ] + ], + "related_data": {} + } + } + }, + { + "java中阶": { + "children": [ + { + "字符串处理": { + "children": [ + { + "String类的构造函数": { + "data": { + "uuid": "java-3-302", + "seg": [ + [ + [ + "string", + "类", + "构造函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串的长度": { + "data": { + "uuid": "java-3-303", + "seg": [ + [ + [ + "字符串", + "长度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特殊的字符串操作": { + "children": [ + { + "字符串字面值": { + "data": { + "uuid": "java-4-638", + "seg": [ + [ + [ + "字符串", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串连接": { + "data": { + "uuid": "java-4-639", + "seg": [ + [ + [ + "字符串", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串和其他数据类型的连接": { + "data": { + "uuid": "java-4-640", + "seg": [ + [ + [ + "字符串" + ], + [ + "数据类型", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串转换和toString方法": { + "data": { + "uuid": "java-4-641", + "seg": [ + [ + [ + "字符串", + "转换" + ], + [ + "tostring", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_742950_786103", + "13_692636_568121", + "13_743036_786414", + "13_687389_550880", + "13_232194_204639" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-304", + "seg": [ + [ + [ + "字符串", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提取字符": { + "children": [ + { + "charAt": { + "data": { + "uuid": "java-4-642", + "seg": [ + [ + [ + "charat" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_355757_370471" + ] + } + } + } + } + }, + { + "getChars": { + "data": { + "uuid": "java-4-643", + "seg": [ + [ + [ + "getchars" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "getBytes": { + "data": { + "uuid": "java-4-644", + "seg": [ + [ + [ + "getbytes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "toCharArray": { + "data": { + "uuid": "java-4-645", + "seg": [ + [ + [ + "tochararray" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_717143_710303" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-305", + "seg": [ + [ + [ + "提取", + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7450427_53431737" + ] + } + } + } + } + }, + { + "比较字符串": { + "children": [ + { + "equals和equalsIgnoreCase": { + "data": { + "uuid": "java-4-646", + "seg": [ + [ + [ + "equals" + ], + [ + "equalsignorecase" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "regionMatches": { + "data": { + "uuid": "java-4-647", + "seg": [ + [ + [ + "regionmatches" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "startsWith和endsWith": { + "data": { + "uuid": "java-4-648", + "seg": [ + [ + [ + "startswith" + ], + [ + "endswith" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "equals与==": { + "data": { + "uuid": "java-4-649", + "seg": [ + [ + [ + "equals" + ], + [] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7464816_53451431", + "13_365827_389402", + "13_368395_394783", + "13_365823_389403", + "13_755005_810253" + ] + } + } + } + } + }, + { + "compareTo": { + "data": { + "uuid": "java-4-650", + "seg": [ + [ + [ + "compareto" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_798987_890771", + "13_958670_1107096", + "13_1092176_1299977", + "13_242846_230773" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-306", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查找字符串": { + "data": { + "uuid": "java-3-307", + "seg": [ + [ + [ + "查找", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改字符串": { + "children": [ + { + "substring": { + "data": { + "uuid": "java-4-651", + "seg": [ + [ + [ + "substring" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "concat": { + "data": { + "uuid": "java-4-652", + "seg": [ + [ + [ + "concat" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "replace": { + "data": { + "uuid": "java-4-653", + "seg": [ + [ + [ + "replace" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "trim": { + "data": { + "uuid": "java-4-654", + "seg": [ + [ + [ + "trim" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7415390_53368802" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-308", + "seg": [ + [ + [ + "修改", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用valueOf转换数据": { + "data": { + "uuid": "java-3-309", + "seg": [ + [ + [ + "valueof", + "转换", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "改变字符串中字符的大小写": { + "data": { + "uuid": "java-3-310", + "seg": [ + [ + [ + "改变", + "字符串", + "字符", + "大小写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接字符串": { + "data": { + "uuid": "java-3-311", + "seg": [ + [ + [ + "连接", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他String方法": { + "data": { + "uuid": "java-3-312", + "seg": [ + [ + [ + "string", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StringBuffer类": { + "children": [ + { + "StringBuffer类的构造函数": { + "data": { + "uuid": "java-4-655", + "seg": [ + [ + [ + "stringbuffer", + "类", + "构造函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "length与capacity": { + "data": { + "uuid": "java-4-656", + "seg": [ + [ + [ + "length" + ], + [ + "capacity" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_258627_266763", + "13_382814_417745", + "13_760959_818202", + "13_1063516_1261588" + ] + } + } + } + } + }, + { + "ensureCapacity": { + "data": { + "uuid": "java-4-657", + "seg": [ + [ + [ + "ensurecapacity" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "setLength": { + "data": { + "uuid": "java-4-658", + "seg": [ + [ + [ + "setlength" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "charAt与setCharAt": { + "data": { + "uuid": "java-4-659", + "seg": [ + [ + [ + "charat" + ], + [ + "setcharat" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "getChars": { + "data": { + "uuid": "java-4-660", + "seg": [ + [ + [ + "getchars" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "append": { + "data": { + "uuid": "java-4-661", + "seg": [ + [ + [ + "append" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_243507_232027", + "13_7427449_53391898", + "13_205027_134717" + ] + } + } + } + } + }, + { + "insert": { + "data": { + "uuid": "java-4-662", + "seg": [ + [ + [ + "insert" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "reverse": { + "data": { + "uuid": "java-4-663", + "seg": [ + [ + [ + "reverse" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "delete与deleteCharAt": { + "data": { + "uuid": "java-4-664", + "seg": [ + [ + [ + "delete" + ], + [ + "deletecharat" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "replace": { + "data": { + "uuid": "java-4-665", + "seg": [ + [ + [ + "replace" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "substring": { + "data": { + "uuid": "java-4-666", + "seg": [ + [ + [ + "substring" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7445780_53424607", + "13_7412933_53364484", + "13_182882_69247" + ] + } + } + } + } + }, + { + "其他StringBuffer方法": { + "data": { + "uuid": "java-4-667", + "seg": [ + [ + [ + "stringbuffer", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-313", + "seg": [ + [ + [ + "stringbuffer", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StringBuilder类": { + "data": { + "uuid": "java-3-314", + "seg": [ + [ + [ + "stringbuilder", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-16", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_209569_147348" + ] + } + } + } + } + }, + { + "探究java.lang": { + "children": [ + { + "基本类型封装器": { + "children": [ + { + "Number": { + "data": { + "uuid": "java-4-668", + "seg": [ + [ + [ + "number" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Double与Float": { + "data": { + "uuid": "java-4-669", + "seg": [ + [ + [ + "double" + ], + [ + "float" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_264376_279153", + "13_264374_279130", + "13_7405276_53354429", + "13_226802_189900", + "13_7439773_53414769" + ] + } + } + } + } + }, + { + "理解isInfinite与isNaN": { + "data": { + "uuid": "java-4-670", + "seg": [ + [ + [ + "理解", + "isinfinite" + ], + [ + "isnan" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Byte、Short、Integer和Long": { + "data": { + "uuid": "java-4-671", + "seg": [ + [ + [ + "byte" + ], + [ + "short" + ], + [ + "integer" + ], + [ + "long" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7415588_53369082" + ] + } + } + } + } + }, + { + "Character": { + "data": { + "uuid": "java-4-672", + "seg": [ + [ + [ + "character" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对Unicode代码点的附加支持": { + "data": { + "uuid": "java-4-673", + "seg": [ + [ + [ + "unicode", + "附加", + "支持" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744800_791437" + ] + } + } + } + } + }, + { + "Boolean": { + "data": { + "uuid": "java-4-674", + "seg": [ + [ + [ + "boolean" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7455766_53439088" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-315", + "seg": [ + [ + [ + "类型", + "封装", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Void类": { + "data": { + "uuid": "java-3-316", + "seg": [ + [ + [ + "void", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_921_18233", + "13_230073_198915", + "13_365420_388580" + ] + } + } + } + } + }, + { + "Process类": { + "data": { + "uuid": "java-3-317", + "seg": [ + [ + [ + "process", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Runtime类": { + "children": [ + { + "内存管理": { + "data": { + "uuid": "java-4-675", + "seg": [ + [ + [ + "内存", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "执行其他程序": { + "data": { + "uuid": "java-4-676", + "seg": [ + [ + [ + "执行", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_665428_483020", + "13_769593_830508", + "13_357335_373925" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-318", + "seg": [ + [ + [ + "runtime", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ProcessBuilder类": { + "data": { + "uuid": "java-3-319", + "seg": [ + [ + [ + "processbuilder", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "System类": { + "children": [ + { + "使用currentTimeMillis计时程序的执行": { + "data": { + "uuid": "java-4-677", + "seg": [ + [ + [ + "currenttimemillis", + "计时", + "程序", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用arraycopy": { + "data": { + "uuid": "java-4-678", + "seg": [ + [ + [ + "arraycopy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环境属性": { + "data": { + "uuid": "java-4-679", + "seg": [ + [ + [ + "环境", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-320", + "seg": [ + [ + [ + "system", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Object类": { + "data": { + "uuid": "java-3-321", + "seg": [ + [ + [ + "object", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用clone方法和Cloneable接口": { + "data": { + "uuid": "java-3-322", + "seg": [ + [ + [ + "clone", + "方法" + ], + [ + "cloneable", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_219015_169590" + ] + } + } + } + } + }, + { + "Class类": { + "data": { + "uuid": "java-3-323", + "seg": [ + [ + [ + "class", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ClassLoader类": { + "data": { + "uuid": "java-3-324", + "seg": [ + [ + [ + "classloader", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Math类": { + "children": [ + { + "三角函数": { + "data": { + "uuid": "java-4-680", + "seg": [ + [ + [ + "三角函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指数函数": { + "data": { + "uuid": "java-4-681", + "seg": [ + [ + [ + "指数函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "舍入函数": { + "data": { + "uuid": "java-4-682", + "seg": [ + [ + [ + "舍入", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他数学方法": { + "data": { + "uuid": "java-4-683", + "seg": [ + [ + [ + "数学方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_901985_1038162" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-325", + "seg": [ + [ + [ + "math", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StrictMath类": { + "data": { + "uuid": "java-3-326", + "seg": [ + [ + [ + "strictmath", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Compiler类": { + "data": { + "uuid": "java-3-327", + "seg": [ + [ + [ + "compiler", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_677761_520308" + ] + } + } + } + } + }, + { + "Thread类、ThreadGroup类和Runnable接口": { + "children": [ + { + "Runnable接口": { + "data": { + "uuid": "java-4-684", + "seg": [ + [ + [ + "runnable", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7445255_53423798", + "13_208249_143938", + "13_525280_439270", + "13_774110_838042", + "13_384121_420224", + "13_175114_55339", + "13_1092653_1300832", + "13_274639_301767", + "13_385758_423269" + ] + } + } + } + } + }, + { + "Thread类": { + "data": { + "uuid": "java-4-685", + "seg": [ + [ + [ + "thread", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1064443_1262691", + "13_369050_395959", + "13_238684_220869", + "13_670725_493691", + "13_194067_100524", + "13_250759_248859", + "13_776213_841468", + "13_730831_819974", + "13_1096480_1308816", + "13_7467365_53454859" + ] + } + } + } + } + }, + { + "ThreadGroup类": { + "data": { + "uuid": "java-4-686", + "seg": [ + [ + [ + "threadgroup", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-328", + "seg": [ + [ + [ + "thread", + "类" + ], + [ + "threadgroup", + "类" + ], + [ + "runnable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ThreadLocal和InheritableThreadLocal类": { + "data": { + "uuid": "java-3-329", + "seg": [ + [ + [ + "threadlocal" + ], + [ + "inheritablethreadlocal", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Package类": { + "data": { + "uuid": "java-3-330", + "seg": [ + [ + [ + "package", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743467_787789", + "13_7439756_53414465", + "13_1021809_1214583", + "13_390001_431094", + "13_693130_570057", + "13_373126_400852", + "13_692088_566076" + ] + } + } + } + } + }, + { + "RuntimePermission类": { + "data": { + "uuid": "java-3-331", + "seg": [ + [ + [ + "runtimepermission", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Throwable类": { + "data": { + "uuid": "java-3-332", + "seg": [ + [ + [ + "throwable", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SecurityManager类": { + "data": { + "uuid": "java-3-333", + "seg": [ + [ + [ + "securitymanager", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StackTraceElement类": { + "data": { + "uuid": "java-3-334", + "seg": [ + [ + [ + "stacktraceelement", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_364212_385662" + ] + } + } + } + } + }, + { + "Enum类": { + "data": { + "uuid": "java-3-335", + "seg": [ + [ + [ + "enum", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ClassValue类": { + "data": { + "uuid": "java-3-336", + "seg": [ + [ + [ + "classvalue", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CharSequence接口": { + "data": { + "uuid": "java-3-337", + "seg": [ + [ + [ + "charsequence", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Comparable接口": { + "data": { + "uuid": "java-3-338", + "seg": [ + [ + [ + "comparable", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_877206_1012611", + "13_7409134_53359429", + "13_7439601_53414217" + ] + } + } + } + } + }, + { + "Appendable接口": { + "data": { + "uuid": "java-3-339", + "seg": [ + [ + [ + "appendable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Iterable接口": { + "data": { + "uuid": "java-3-340", + "seg": [ + [ + [ + "iterable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Readable接口": { + "data": { + "uuid": "java-3-341", + "seg": [ + [ + [ + "readable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AutoCloseable接口": { + "data": { + "uuid": "java-3-342", + "seg": [ + [ + [ + "autocloseable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Thread.UncaughtExceptionHandler接口": { + "data": { + "uuid": "java-3-343", + "seg": [ + [ + [ + "thread", + "uncaughtexceptionhandler", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.lang子包": { + "children": [ + { + "java.lang.annotation": { + "data": { + "uuid": "java-4-687", + "seg": [ + [ + [ + "java", + "lang", + "annotation" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_387434_426516", + "13_7397998_53343743", + "13_683789_540480", + "13_760281_1263897", + "13_184627_74625", + "13_205120_134968", + "13_7422819_53381564", + "13_635702_441275", + "13_382461_417036", + "13_667458_486609" + ] + } + } + } + } + }, + { + "java.lang.instrument": { + "data": { + "uuid": "java-4-688", + "seg": [ + [ + [ + "java", + "lang", + "instrument" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.lang.invoke": { + "data": { + "uuid": "java-4-689", + "seg": [ + [ + [ + "java", + "lang", + "invoke" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_348123_354643", + "13_687205_550300", + "13_197636_112983" + ] + } + } + } + } + }, + { + "java.lang.management": { + "data": { + "uuid": "java-4-690", + "seg": [ + [ + [ + "java", + "lang", + "mana", + "gemen", + "t" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_768805_829183" + ] + } + } + } + } + }, + { + "java.lang.ref": { + "data": { + "uuid": "java-4-691", + "seg": [ + [ + [ + "java", + "lang", + "ref" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.lang.reflect": { + "data": { + "uuid": "java-4-692", + "seg": [ + [ + [ + "java", + "lang", + "reflect" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_645418_446931" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-344", + "seg": [ + [ + [ + "java", + "lang", + "子", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-17", + "seg": [ + [ + [ + "探究", + "java", + "lang" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.util第1部分:集合框架": { + "children": [ + { + "集合概述": { + "data": { + "uuid": "java-3-345", + "seg": [ + [ + [ + "集合", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDK 5对集合框架的修改": { + "children": [ + { + "泛型从根本上改变了集合框架": { + "data": { + "uuid": "java-4-693", + "seg": [ + [ + [ + "泛型", + "改变", + "集合", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动装箱使得使用基本类型更加容易": { + "data": { + "uuid": "java-4-694", + "seg": [ + [ + [ + "自动", + "装箱", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "for-each风格的for循环": { + "data": { + "uuid": "java-4-695", + "seg": [ + [ + [ + "for", + "each", + "风格", + "for循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-346", + "seg": [ + [ + [ + "jdk", + "集合", + "框架", + "修改" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合接口": { + "children": [ + { + "Collection接口": { + "data": { + "uuid": "java-4-696", + "seg": [ + [ + [ + "collection", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_204050_132183", + "13_743540_788017", + "13_7416661_53371001" + ] + } + } + } + } + }, + { + "List接口": { + "data": { + "uuid": "java-4-697", + "seg": [ + [ + [ + "list", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Set接口": { + "data": { + "uuid": "java-4-698", + "seg": [ + [ + [ + "set", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SortedSet接口": { + "data": { + "uuid": "java-4-699", + "seg": [ + [ + [ + "sortedset", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NavigableSet接口": { + "data": { + "uuid": "java-4-700", + "seg": [ + [ + [ + "navigableset", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Queue接口": { + "data": { + "uuid": "java-4-701", + "seg": [ + [ + [ + "queue", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Deque接口": { + "data": { + "uuid": "java-4-702", + "seg": [ + [ + [ + "deque", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-347", + "seg": [ + [ + [ + "集合", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合类": { + "children": [ + { + "ArrayList类": { + "data": { + "uuid": "java-4-703", + "seg": [ + [ + [ + "arraylist", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_335879_330335", + "13_4646257_29329805" + ] + } + } + } + } + }, + { + "LinkedList类": { + "data": { + "uuid": "java-4-704", + "seg": [ + [ + [ + "linkedlist", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750087_803570" + ] + } + } + } + } + }, + { + "HashSet类": { + "data": { + "uuid": "java-4-705", + "seg": [ + [ + [ + "hashset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LinkedHashSet类": { + "data": { + "uuid": "java-4-706", + "seg": [ + [ + [ + "linkedhashset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TreeSet类": { + "data": { + "uuid": "java-4-707", + "seg": [ + [ + [ + "treeset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PriorityQueue类": { + "data": { + "uuid": "java-4-708", + "seg": [ + [ + [ + "priorityqueue", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ArrayDeque类": { + "data": { + "uuid": "java-4-709", + "seg": [ + [ + [ + "arraydeque", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "EnumSet类": { + "data": { + "uuid": "java-4-710", + "seg": [ + [ + [ + "enumset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-348", + "seg": [ + [ + [ + "集合", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_388464_428213" + ] + } + } + } + } + }, + { + "通过迭代器访问集合": { + "children": [ + { + "使用迭代器": { + "data": { + "uuid": "java-4-711", + "seg": [ + [ + [ + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_752055_806041" + ] + } + } + } + } + }, + { + "使用for-each循环替代迭代器": { + "data": { + "uuid": "java-4-712", + "seg": [ + [ + [ + "for", + "each", + "循环", + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_245571_236188" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-349", + "seg": [ + [ + [ + "迭代", + "器", + "访问", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spliterator": { + "children": [ + { + "拆分过程": { + "data": { + "uuid": "java-4-713", + "seg": [ + [ + [ + "拆分", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-350", + "seg": [ + [ + [ + "spliterator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在集合中存储用户定义的类": { + "data": { + "uuid": "java-3-351", + "seg": [ + [ + [ + "集合", + "存储用户", + "定义", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RandomAccess接口": { + "data": { + "uuid": "java-3-352", + "seg": [ + [ + [ + "randomaccess", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用映射": { + "children": [ + { + "映射接口": { + "data": { + "uuid": "java-4-714", + "seg": [ + [ + [ + "映射", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射类": { + "data": { + "uuid": "java-4-715", + "seg": [ + [ + [ + "映射", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对流中每一个元素应用函数": { + "data": { + "uuid": "java-4-716", + "seg": [ + [ + [ + "对流", + "元素", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流的扁平化": { + "data": { + "uuid": "java-4-717", + "seg": [ + [ + [ + "流", + "扁平化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-353", + "seg": [ + [ + [ + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "比较器": { + "data": { + "uuid": "java-3-354", + "seg": [ + [ + [ + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合算法": { + "data": { + "uuid": "java-3-355", + "seg": [ + [ + [ + "集合", + "算法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Arrays类": { + "data": { + "uuid": "java-3-356", + "seg": [ + [ + [ + "arrays", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遗留的类和接口": { + "children": [ + { + "Enumeration接口": { + "data": { + "uuid": "java-4-718", + "seg": [ + [ + [ + "enumeration", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Vector类": { + "data": { + "uuid": "java-4-719", + "seg": [ + [ + [ + "vector", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Stack类": { + "data": { + "uuid": "java-4-720", + "seg": [ + [ + [ + "stack", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_682655_537475" + ] + } + } + } + } + }, + { + "Dictionary类": { + "data": { + "uuid": "java-4-721", + "seg": [ + [ + [ + "dictionary", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hashtable类": { + "data": { + "uuid": "java-4-722", + "seg": [ + [ + [ + "hashtable", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Properties类": { + "data": { + "uuid": "java-4-723", + "seg": [ + [ + [ + "properties", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用store和load": { + "data": { + "uuid": "java-4-724", + "seg": [ + [ + [ + "store" + ], + [ + "load" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_182248_68027" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-357", + "seg": [ + [ + [ + "遗留", + "类" + ], + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-18", + "seg": [ + [ + [ + "java", + "util" + ] + ], + [ + [ + "集合", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.util第2部分:更多实用工具类": { + "children": [ + { + "StringTokenizer类": { + "data": { + "uuid": "java-3-358", + "seg": [ + [ + [ + "stringtokenizer", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BitSet类": { + "data": { + "uuid": "java-3-359", + "seg": [ + [ + [ + "bitset", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Optional、OptionalDouble、OptionalInt和OptionalLong": { + "data": { + "uuid": "java-3-360", + "seg": [ + [ + [ + "optional" + ], + [ + "optionaldouble" + ], + [ + "optionalint" + ], + [ + "optionallong" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Date类": { + "data": { + "uuid": "java-3-361", + "seg": [ + [ + [ + "date", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Calendar类": { + "data": { + "uuid": "java-3-362", + "seg": [ + [ + [ + "calendar", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_227451_191747" + ] + } + } + } + } + }, + { + "GregorianCalendar类": { + "data": { + "uuid": "java-3-363", + "seg": [ + [ + [ + "gregoriancalendar", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TimeZone类": { + "data": { + "uuid": "java-3-364", + "seg": [ + [ + [ + "timezone", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SimpleTimeZone类": { + "data": { + "uuid": "java-3-365", + "seg": [ + [ + [ + "simpletimezone", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Locale类": { + "data": { + "uuid": "java-3-366", + "seg": [ + [ + [ + "locale", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Random类": { + "data": { + "uuid": "java-3-367", + "seg": [ + [ + [ + "random", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Observable类": { + "children": [ + { + "Observer接口": { + "data": { + "uuid": "java-4-725", + "seg": [ + [ + [ + "observer", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Observer示例": { + "data": { + "uuid": "java-4-726", + "seg": [ + [ + [ + "observer", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-368", + "seg": [ + [ + [ + "observable", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Timer和TimerTask类": { + "data": { + "uuid": "java-3-369", + "seg": [ + [ + [ + "timer" + ], + [ + "timertask", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743896_789128", + "13_772811_836295" + ] + } + } + } + } + }, + { + "Currency类": { + "data": { + "uuid": "java-3-370", + "seg": [ + [ + [ + "currency", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Formatter类": { + "children": [ + { + "Formatter类的构造函数": { + "data": { + "uuid": "java-4-727", + "seg": [ + [ + [ + "formatter", + "类", + "构造函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Formatter类的方法": { + "data": { + "uuid": "java-4-728", + "seg": [ + [ + [ + "formatter", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7413171_53364979", + "13_7419721_53377246", + "13_774366_838332", + "13_7422604_53381235", + "13_945858_1085780" + ] + } + } + } + } + }, + { + "格式化的基础知识": { + "data": { + "uuid": "java-4-729", + "seg": [ + [ + [ + "格式化", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化字符串和字符": { + "data": { + "uuid": "java-4-730", + "seg": [ + [ + [ + "格式化", + "字符串" + ], + [ + "字符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化数字": { + "data": { + "uuid": "java-4-731", + "seg": [ + [ + [ + "格式化", + "数字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化时间和日期": { + "data": { + "uuid": "java-4-732", + "seg": [ + [ + [ + "格式化", + "时间" + ], + [ + "日期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "%n和%%说明符": { + "data": { + "uuid": "java-4-733", + "seg": [ + [ + [ + "%", + "n" + ], + [ + "%", + "说明符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_643493_443553" + ] + } + } + } + } + }, + { + "指定最小字段宽度": { + "data": { + "uuid": "java-4-734", + "seg": [ + [ + [ + "指定", + "小字", + "段", + "宽度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指定精度": { + "data": { + "uuid": "java-4-735", + "seg": [ + [ + [ + "指定", + "精度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用格式标志": { + "data": { + "uuid": "java-4-736", + "seg": [ + [ + [ + "格式", + "标志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对齐输出": { + "data": { + "uuid": "java-4-737", + "seg": [ + [ + [ + "对齐", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "空格、“+”、“0”以及“(”标志": { + "data": { + "uuid": "java-4-738", + "seg": [ + [ + [ + "空格" + ], + [], + [], + [ + "标志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "逗号标志": { + "data": { + "uuid": "java-4-739", + "seg": [ + [ + [ + "逗号", + "标志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“#”标志": { + "data": { + "uuid": "java-4-740", + "seg": [ + [ + [ + "标志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大写选项": { + "data": { + "uuid": "java-4-741", + "seg": [ + [ + [ + "大写", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用参数索引": { + "data": { + "uuid": "java-4-742", + "seg": [ + [ + [ + "参数", + "索引" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关闭Formatter对象": { + "data": { + "uuid": "java-4-743", + "seg": [ + [ + [ + "关闭", + "formatter", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "printf方法": { + "data": { + "uuid": "java-4-744", + "seg": [ + [ + [ + "printf", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-371", + "seg": [ + [ + [ + "formatter", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Scanner类": { + "children": [ + { + "Scanner类的构造函数": { + "data": { + "uuid": "java-4-745", + "seg": [ + [ + [ + "scanner", + "类", + "构造函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_385891_423568", + "13_745371_793099" + ] + } + } + } + } + }, + { + "扫描的基础知识": { + "data": { + "uuid": "java-4-746", + "seg": [ + [ + [ + "扫描", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一些Scanner示例": { + "data": { + "uuid": "java-4-747", + "seg": [ + [ + [ + "scanner", + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_208459_144476", + "13_249927_246509", + "13_7456440_53440207", + "13_7450331_53430877", + "13_203158_129519", + "13_346091_351061", + "13_4646868_29330790", + "13_669030_489910", + "13_170370_46780", + "13_7424812_53386008" + ] + } + } + } + } + }, + { + "设置定界符": { + "data": { + "uuid": "java-4-748", + "seg": [ + [ + [ + "设置", + "定界符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他Scanner特性": { + "data": { + "uuid": "java-4-749", + "seg": [ + [ + [ + "scanner", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-372", + "seg": [ + [ + [ + "scanner", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ResourceBundle、ListResourceBundle和": { + "data": { + "uuid": "java-3-373", + "seg": [ + [ + [ + "resourcebundle" + ], + [ + "listresourcebundle" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他实用工具类和接口": { + "data": { + "uuid": "java-3-374", + "seg": [ + [ + [ + "实用工具", + "类" + ], + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.util子包": { + "children": [ + { + "java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks": { + "data": { + "uuid": "java-4-750", + "seg": [ + [ + [ + "java", + "util", + "concurrent" + ], + [ + "java", + "util", + "concurrent", + "atomic" + ], + [ + "java", + "util", + "concurrent", + "locks" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_769947_831179" + ] + } + } + } + } + }, + { + "java.util.function": { + "data": { + "uuid": "java-4-751", + "seg": [ + [ + [ + "java", + "util", + "function" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_650448_457214", + "13_7447886_53427842", + "13_765926_824997", + "13_372489_400353", + "13_1084522_1290929" + ] + } + } + } + } + }, + { + "java.util.jar": { + "data": { + "uuid": "java-4-752", + "seg": [ + [ + [ + "java", + "util", + "jar" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_975577_1132797" + ] + } + } + } + } + }, + { + "java.util.logging": { + "data": { + "uuid": "java-4-753", + "seg": [ + [ + [ + "java", + "util", + "logging" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.util.prefs": { + "data": { + "uuid": "java-4-754", + "seg": [ + [ + [ + "java", + "util", + "prefs" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_652366_460474" + ] + } + } + } + } + }, + { + "java.util.regex": { + "data": { + "uuid": "java-4-755", + "seg": [ + [ + [ + "java", + "util", + "regex" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.util.spi": { + "data": { + "uuid": "java-4-756", + "seg": [ + [ + [ + "java", + "util", + "spi" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_358467_377335" + ] + } + } + } + } + }, + { + "java.util.stream": { + "data": { + "uuid": "java-4-757", + "seg": [ + [ + [ + "java", + "util", + "stream" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "java.util.zip": { + "data": { + "uuid": "java-4-758", + "seg": [ + [ + [ + "java", + "util", + "zip" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-375", + "seg": [ + [ + [ + "java", + "util", + "子", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-19", + "seg": [ + [ + [ + "java", + "util" + ] + ], + [ + [ + "实用工具", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输入/输出:探究java.io": { + "children": [ + { + "I/O类和接口": { + "data": { + "uuid": "java-3-376", + "seg": [ + [ + [ + "i", + "o", + "类" + ], + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "File类": { + "children": [ + { + "目录": { + "data": { + "uuid": "java-4-759", + "seg": [ + [ + [ + "目录" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_747341_798498", + "13_770637_832591" + ] + } + } + } + } + }, + { + "使用FilenameFilter接口": { + "data": { + "uuid": "java-4-760", + "seg": [ + [ + [ + "filenamefilter", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "listFiles方法": { + "data": { + "uuid": "java-4-761", + "seg": [ + [ + [ + "listfiles", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_743575_788147" + ] + } + } + } + } + }, + { + "创建目录": { + "data": { + "uuid": "java-4-762", + "seg": [ + [ + [ + "创建", + "目录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-377", + "seg": [ + [ + [ + "file", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AutoCloseable、Closeable和Flushable接口": { + "data": { + "uuid": "java-3-378", + "seg": [ + [ + [ + "autocloseable" + ], + [ + "closeable" + ], + [ + "flushable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "I/O异常": { + "data": { + "uuid": "java-3-379", + "seg": [ + [ + [ + "i", + "o", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关闭流的两种方式": { + "data": { + "uuid": "java-3-380", + "seg": [ + [ + [ + "关闭", + "流", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流类": { + "data": { + "uuid": "java-3-381", + "seg": [ + [ + [ + "流类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字节流": { + "children": [ + { + "InputStream类": { + "data": { + "uuid": "java-4-763", + "seg": [ + [ + [ + "inputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "OutputStream类": { + "data": { + "uuid": "java-4-764", + "seg": [ + [ + [ + "outputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FileInputStream类": { + "data": { + "uuid": "java-4-765", + "seg": [ + [ + [ + "fileinputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_237090_216683", + "13_679235_525888" + ] + } + } + } + } + }, + { + "FileOutputStream类": { + "data": { + "uuid": "java-4-766", + "seg": [ + [ + [ + "fileoutputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_235019_212945" + ] + } + } + } + } + }, + { + "ByteArrayInputStream类": { + "data": { + "uuid": "java-4-767", + "seg": [ + [ + [ + "bytearrayinputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ByteArrayOutputStream类": { + "data": { + "uuid": "java-4-768", + "seg": [ + [ + [ + "bytearrayoutputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "过滤的字节流": { + "data": { + "uuid": "java-4-769", + "seg": [ + [ + [ + "过滤", + "字节", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "缓冲的字节流": { + "data": { + "uuid": "java-4-770", + "seg": [ + [ + [ + "缓冲", + "字节", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "SequenceInputStream类": { + "data": { + "uuid": "java-4-771", + "seg": [ + [ + [ + "sequenceinputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PrintStream类": { + "data": { + "uuid": "java-4-772", + "seg": [ + [ + [ + "printstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "DataOutputStream和DataInputStream类": { + "data": { + "uuid": "java-4-773", + "seg": [ + [ + [ + "dataoutputstream" + ], + [ + "datainputstream", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "RandomAccessFile类": { + "data": { + "uuid": "java-4-774", + "seg": [ + [ + [ + "randomaccessfile", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-382", + "seg": [ + [ + [ + "字节", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "字符流": { + "children": [ + { + "Reader类": { + "data": { + "uuid": "java-4-775", + "seg": [ + [ + [ + "reader", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Writer类": { + "data": { + "uuid": "java-4-776", + "seg": [ + [ + [ + "writer", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FileReader类": { + "data": { + "uuid": "java-4-777", + "seg": [ + [ + [ + "filereader", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_691136_563017", + "13_668102_487974" + ] + } + } + } + } + }, + { + "FileWriter类": { + "data": { + "uuid": "java-4-778", + "seg": [ + [ + [ + "filewriter", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CharArrayReader类": { + "data": { + "uuid": "java-4-779", + "seg": [ + [ + [ + "chararrayreader", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_696020_579224" + ] + } + } + } + } + }, + { + "CharArrayWriter类": { + "data": { + "uuid": "java-4-780", + "seg": [ + [ + [ + "chararraywriter", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "BufferedReader类": { + "data": { + "uuid": "java-4-781", + "seg": [ + [ + [ + "bufferedreader", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_929819_1064684" + ] + } + } + } + } + }, + { + "BufferedWriter类": { + "data": { + "uuid": "java-4-782", + "seg": [ + [ + [ + "bufferedwriter", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_201845_125889", + "13_364203_385619", + "13_221849_176658", + "13_200164_120355", + "13_155604_18324", + "13_760080_816629" + ] + } + } + } + } + }, + { + "PushbackReader类": { + "data": { + "uuid": "java-4-783", + "seg": [ + [ + [ + "pushbackreader", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PrintWriter类": { + "data": { + "uuid": "java-4-784", + "seg": [ + [ + [ + "printwriter", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_226170_188292", + "13_351247_360691" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-383", + "seg": [ + [ + [ + "字符", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Console类": { + "data": { + "uuid": "java-3-384", + "seg": [ + [ + [ + "console", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_680085_528985" + ] + } + } + } + } + }, + { + "串行化": { + "children": [ + { + "Serializable接口": { + "data": { + "uuid": "java-4-785", + "seg": [ + [ + [ + "serializable", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_221787_176547", + "13_648581_453183" + ] + } + } + } + } + }, + { + "Externalizable接口": { + "data": { + "uuid": "java-4-786", + "seg": [ + [ + [ + "externalizable", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ObjectOutput接口": { + "data": { + "uuid": "java-4-787", + "seg": [ + [ + [ + "objectoutput", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ObjectOutputStream类": { + "data": { + "uuid": "java-4-788", + "seg": [ + [ + [ + "objectoutputstream", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_673489_501575", + "13_7437607_53410970" + ] + } + } + } + } + }, + { + "ObjectInput接口": { + "data": { + "uuid": "java-4-789", + "seg": [ + [ + [ + "objectinput", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ObjectInputStream类": { + "data": { + "uuid": "java-4-790", + "seg": [ + [ + [ + "objectinputstream", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "串行化示例": { + "data": { + "uuid": "java-4-791", + "seg": [ + [ + [ + "串行化", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-385", + "seg": [ + [ + [ + "串行化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流的优点": { + "data": { + "uuid": "java-3-386", + "seg": [ + [ + [ + "流", + "优点" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-20", + "seg": [ + [ + [ + "输入", + "输出" + ] + ], + [ + [ + "探究", + "java", + "io" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探究NIO": { + "children": [ + { + "NIO类": { + "data": { + "uuid": "java-3-387", + "seg": [ + [ + [ + "nio", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "NIO的基础知识": { + "children": [ + { + "缓冲区": { + "data": { + "uuid": "java-4-792", + "seg": [ + [ + [ + "缓冲区" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通道": { + "data": { + "uuid": "java-4-793", + "seg": [ + [ + [ + "通道" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "字符集和选择器": { + "data": { + "uuid": "java-4-794", + "seg": [ + [ + [ + "字符集" + ], + [ + "选择器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-388", + "seg": [ + [ + [ + "nio", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "JDK 7对NIO的增强": { + "children": [ + { + "Path接口": { + "data": { + "uuid": "java-4-795", + "seg": [ + [ + [ + "path", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Files类": { + "data": { + "uuid": "java-4-796", + "seg": [ + [ + [ + "files", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Path接口": { + "data": { + "uuid": "java-4-797", + "seg": [ + [ + [ + "path", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件属性接口": { + "data": { + "uuid": "java-4-798", + "seg": [ + [ + [ + "文件属性", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FileSystem、FileSystems和FileStore类": { + "data": { + "uuid": "java-4-799", + "seg": [ + [ + [ + "filesystem" + ], + [ + "filesystems" + ], + [ + "filestore", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-389", + "seg": [ + [ + [ + "jdk", + "nio", + "增强" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用NIO系统": { + "children": [ + { + "为基于通道的I/O使用NIO": { + "data": { + "uuid": "java-4-800", + "seg": [ + [ + [ + "通道", + "i", + "o", + "nio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "为基于流的I/O使用NIO": { + "data": { + "uuid": "java-4-801", + "seg": [ + [ + [ + "流", + "i", + "o", + "nio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "为路径和文件系统操作使用NIO": { + "data": { + "uuid": "java-4-802", + "seg": [ + [ + [ + "路径" + ], + [ + "文件系统", + "操作", + "nio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-390", + "seg": [ + [ + [ + "nio", + "系统" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "JDK 7之前基于通道的例子": { + "children": [ + { + "读文件(JDK 7之前)": { + "data": { + "uuid": "java-4-803", + "seg": [ + [ + [ + "读", + "文件", + "jdk" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750772_804076", + "13_7416176_53370120" + ] + } + } + } + } + }, + { + "写文件(JDK 7之前)": { + "data": { + "uuid": "java-4-804", + "seg": [ + [ + [ + "写", + "文件", + "jdk" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7397910_53343432", + "13_217176_165129", + "13_239787_223471", + "13_667810_487279" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-391", + "seg": [ + [ + [ + "jdk", + "通道", + "例子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-21", + "seg": [ + [ + [ + "探究", + "nio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "联网": { + "children": [ + { + "联网的基础知识": { + "data": { + "uuid": "java-3-392", + "seg": [ + [ + [ + "联网", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "联网类和接口": { + "data": { + "uuid": "java-3-393", + "seg": [ + [ + [ + "联网", + "类" + ], + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "InetAddress类": { + "children": [ + { + "工厂方法": { + "data": { + "uuid": "java-4-805", + "seg": [ + [ + [ + "工厂", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-394", + "seg": [ + [ + [ + "inetaddress", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Inet4Address类和Inet6Address类": { + "data": { + "uuid": "java-3-395", + "seg": [ + [ + [ + "inet4address", + "类" + ], + [ + "inet6address", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TCP/IP客户端套接字": { + "data": { + "uuid": "java-3-396", + "seg": [ + [ + [ + "tcp", + "ip", + "客户端", + "套", + "接字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "URL类": { + "data": { + "uuid": "java-3-397", + "seg": [ + [ + [ + "url", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "URLConnection类": { + "data": { + "uuid": "java-3-398", + "seg": [ + [ + [ + "urlconnection", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HttpURLConnection类": { + "data": { + "uuid": "java-3-399", + "seg": [ + [ + [ + "httpurlconnection", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_243757_234683", + "13_356703_374698" + ] + } + } + } + } + }, + { + "URI类": { + "data": { + "uuid": "java-3-400", + "seg": [ + [ + [ + "uri", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cookie": { + "data": { + "uuid": "java-3-401", + "seg": [ + [ + [ + "cookie" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_151106_13506", + "13_744697_791184", + "13_227619_192026" + ] + } + } + } + } + }, + { + "TCP/IP服务器套接字": { + "data": { + "uuid": "java-3-402", + "seg": [ + [ + [ + "tcp", + "ip", + "服务器", + "套", + "接字" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据报": { + "children": [ + { + "DatagramSocket类": { + "data": { + "uuid": "java-4-806", + "seg": [ + [ + [ + "datagramsocket", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DatagramPacket类": { + "data": { + "uuid": "java-4-807", + "seg": [ + [ + [ + "datagrampacket", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据报示例": { + "data": { + "uuid": "java-4-808", + "seg": [ + [ + [ + "数据", + "报", + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_245715_236523", + "13_7429929_53396926", + "13_647819_451621", + "13_678588_832603", + "13_186063_79505", + "13_1049757_1247164", + "13_1053342_1250665", + "13_359085_856845" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-403", + "seg": [ + [ + [ + "数据", + "报" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-22", + "seg": [ + [ + [ + "联网" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Applet类": { + "children": [ + { + "applet的两种类型": { + "data": { + "uuid": "java-3-404", + "seg": [ + [ + [ + "applet", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "applet的基础知识": { + "data": { + "uuid": "java-3-405", + "seg": [ + [ + [ + "applet", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "applet的架构": { + "data": { + "uuid": "java-3-406", + "seg": [ + [ + [ + "applet", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "applet的骨架": { + "children": [ + { + "applet的初始化和终止": { + "data": { + "uuid": "java-4-809", + "seg": [ + [ + [ + "applet", + "初始化" + ], + [ + "终止" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_178100_61942", + "13_7435444_53406026", + "13_665960_511560", + "13_188819_86489", + "13_349464_357207", + "13_218469_168059" + ] + } + } + } + } + }, + { + "重写update方法": { + "data": { + "uuid": "java-4-810", + "seg": [ + [ + [ + "重写", + "update", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-407", + "seg": [ + [ + [ + "applet", + "骨架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单的applet显示方法": { + "data": { + "uuid": "java-3-408", + "seg": [ + [ + [ + "applet", + "显示", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "请求重画": { + "data": { + "uuid": "java-3-409", + "seg": [ + [ + [ + "重画" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用状态栏窗口": { + "data": { + "uuid": "java-3-410", + "seg": [ + [ + [ + "状态栏", + "窗口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTML APPLET标记": { + "data": { + "uuid": "java-3-411", + "seg": [ + [ + [ + "html", + "applet", + "标记" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向applet传递参数": { + "data": { + "uuid": "java-3-412", + "seg": [ + [ + [ + "applet", + "传递", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "getDocumentBase和getCodeBase": { + "data": { + "uuid": "java-3-413", + "seg": [ + [ + [ + "getdocumentbase" + ], + [ + "getcodebase" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AppletContext接口和showDocument方法": { + "data": { + "uuid": "java-3-414", + "seg": [ + [ + [ + "appletcontext", + "接口" + ], + [ + "showdocument", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AudioClip接口": { + "data": { + "uuid": "java-3-415", + "seg": [ + [ + [ + "audioclip", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AppletStub接口": { + "data": { + "uuid": "java-3-416", + "seg": [ + [ + [ + "appletstub", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向控制台输出": { + "data": { + "uuid": "java-3-417", + "seg": [ + [ + [ + "控制台", + "输出" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_657482_470065" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-23", + "seg": [ + [ + [ + "applet", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件处理": { + "children": [ + { + "两种事件处理机制": { + "data": { + "uuid": "java-3-418", + "seg": [ + [ + [ + "事件处理", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "委托事件模型": { + "children": [ + { + "事件": { + "data": { + "uuid": "java-4-811", + "seg": [ + [ + [ + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_221307_175188" + ] + } + } + } + } + }, + { + "事件源": { + "data": { + "uuid": "java-4-812", + "seg": [ + [ + [ + "事件", + "源" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件监听器": { + "data": { + "uuid": "java-4-813", + "seg": [ + [ + [ + "事件", + "监听器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-419", + "seg": [ + [ + [ + "委托", + "事件", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件类": { + "children": [ + { + "ActionEvent类": { + "data": { + "uuid": "java-4-814", + "seg": [ + [ + [ + "actionevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AdjustmentEvent类": { + "data": { + "uuid": "java-4-815", + "seg": [ + [ + [ + "adjustmentevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ComponentEvent类": { + "data": { + "uuid": "java-4-816", + "seg": [ + [ + [ + "componentevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ContainerEvent类": { + "data": { + "uuid": "java-4-817", + "seg": [ + [ + [ + "containerevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FocusEvent类": { + "data": { + "uuid": "java-4-818", + "seg": [ + [ + [ + "focusevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "InputEvent类": { + "data": { + "uuid": "java-4-819", + "seg": [ + [ + [ + "inputevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ItemEvent类": { + "data": { + "uuid": "java-4-820", + "seg": [ + [ + [ + "itemevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "KeyEvent类": { + "data": { + "uuid": "java-4-821", + "seg": [ + [ + [ + "keyevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MouseEvent类": { + "data": { + "uuid": "java-4-822", + "seg": [ + [ + [ + "mouseevent", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_346367_351556" + ] + } + } + } + } + }, + { + "MouseWheelEvent类": { + "data": { + "uuid": "java-4-823", + "seg": [ + [ + [ + "mousewheelevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TextEvent类": { + "data": { + "uuid": "java-4-824", + "seg": [ + [ + [ + "textevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "WindowEvent类": { + "data": { + "uuid": "java-4-825", + "seg": [ + [ + [ + "windowevent", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-420", + "seg": [ + [ + [ + "事件", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件源": { + "data": { + "uuid": "java-3-421", + "seg": [ + [ + [ + "事件", + "源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件监听器接口": { + "children": [ + { + "ActionListener接口": { + "data": { + "uuid": "java-4-826", + "seg": [ + [ + [ + "actionlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1095035_1305834", + "13_643048_442898" + ] + } + } + } + } + }, + { + "AdjustmentListener接口": { + "data": { + "uuid": "java-4-827", + "seg": [ + [ + [ + "adjustmentlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ComponentListener接口": { + "data": { + "uuid": "java-4-828", + "seg": [ + [ + [ + "componentlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ContainerListener接口": { + "data": { + "uuid": "java-4-829", + "seg": [ + [ + [ + "containerlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FocusListener接口": { + "data": { + "uuid": "java-4-830", + "seg": [ + [ + [ + "focuslistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ItemListener接口": { + "data": { + "uuid": "java-4-831", + "seg": [ + [ + [ + "itemlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "KeyListener接口": { + "data": { + "uuid": "java-4-832", + "seg": [ + [ + [ + "keylistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_351966_362225" + ] + } + } + } + } + }, + { + "MouseListener接口": { + "data": { + "uuid": "java-4-833", + "seg": [ + [ + [ + "mouselistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MouseMotionListener接口": { + "data": { + "uuid": "java-4-834", + "seg": [ + [ + [ + "mousemotionlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MouseWheelListener接口": { + "data": { + "uuid": "java-4-835", + "seg": [ + [ + [ + "mousewheellistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TextListener接口": { + "data": { + "uuid": "java-4-836", + "seg": [ + [ + [ + "textlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WindowFocusListener接口": { + "data": { + "uuid": "java-4-837", + "seg": [ + [ + [ + "windowfocuslistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WindowListener接口": { + "data": { + "uuid": "java-4-838", + "seg": [ + [ + [ + "windowlistener", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-422", + "seg": [ + [ + [ + "事件", + "监听器", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用委托事件模型": { + "children": [ + { + "处理鼠标事件": { + "data": { + "uuid": "java-4-839", + "seg": [ + [ + [ + "鼠标", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "处理键盘事件": { + "data": { + "uuid": "java-4-840", + "seg": [ + [ + [ + "键盘", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-423", + "seg": [ + [ + [ + "委托", + "事件", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "适配器类": { + "data": { + "uuid": "java-3-424", + "seg": [ + [ + [ + "适配器", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内部类": { + "data": { + "uuid": "java-3-425", + "seg": [ + [ + [ + "内部", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_273875_300118" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-24", + "seg": [ + [ + [ + "事件处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWT介绍:使用窗口、图形和文本": { + "children": [ + { + "AWT类": { + "data": { + "uuid": "java-3-426", + "seg": [ + [ + [ + "awt", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "窗口基本元素": { + "children": [ + { + "Component类": { + "data": { + "uuid": "java-4-841", + "seg": [ + [ + [ + "component", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7451636_53434534", + "13_1092156_1300223" + ] + } + } + } + } + }, + { + "Container类": { + "data": { + "uuid": "java-4-842", + "seg": [ + [ + [ + "container", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Panel类": { + "data": { + "uuid": "java-4-843", + "seg": [ + [ + [ + "panel", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7404873_53354080", + "13_652798_460835" + ] + } + } + } + } + }, + { + "Window类": { + "data": { + "uuid": "java-4-844", + "seg": [ + [ + [ + "window", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_717104_710257", + "13_201083_123207", + "13_768672_828941" + ] + } + } + } + } + }, + { + "Frame类": { + "data": { + "uuid": "java-4-845", + "seg": [ + [ + [ + "frame", + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_691796_565164", + "13_690678_561299" + ] + } + } + } + } + }, + { + "Canvas类": { + "data": { + "uuid": "java-4-846", + "seg": [ + [ + [ + "canvas", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-427", + "seg": [ + [ + [ + "窗口", + "元素" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用框架窗口": { + "children": [ + { + "设置窗口的尺寸": { + "data": { + "uuid": "java-4-847", + "seg": [ + [ + [ + "设置", + "窗口", + "尺寸" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_224802_184833", + "13_7417891_53373670", + "13_766695_826037", + "13_762574_820830", + "13_1091284_1298640" + ] + } + } + } + } + }, + { + "隐藏和显示窗口": { + "data": { + "uuid": "java-4-848", + "seg": [ + [ + [ + "隐藏" + ], + [ + "显示", + "窗口" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_197036_110856", + "13_25220_6707", + "13_1096714_1309254", + "13_160865_29085", + "13_846430_962506", + "13_7458509_53443128" + ] + } + } + } + } + }, + { + "设置窗口的标题": { + "data": { + "uuid": "java-4-849", + "seg": [ + [ + [ + "设置", + "窗口", + "标题" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关闭框架窗口": { + "data": { + "uuid": "java-4-850", + "seg": [ + [ + [ + "关闭", + "框架", + "窗口" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7460202_53445263" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-428", + "seg": [ + [ + [ + "框架", + "窗口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在基于AWT的applet中创建框架窗口": { + "data": { + "uuid": "java-3-429", + "seg": [ + [ + [ + "awt", + "applet", + "创建", + "框架", + "窗口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建基于窗口的程序": { + "data": { + "uuid": "java-3-430", + "seg": [ + [ + [ + "创建", + "窗口", + "程序" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_766652_825974" + ] + } + } + } + } + }, + { + "在窗口中显示信息": { + "data": { + "uuid": "java-3-431", + "seg": [ + [ + [ + "窗口", + "显示信息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用图形": { + "children": [ + { + "绘制直线": { + "data": { + "uuid": "java-4-851", + "seg": [ + [ + [ + "绘制", + "直线" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制矩形": { + "data": { + "uuid": "java-4-852", + "seg": [ + [ + [ + "绘制", + "矩形" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制椭圆和圆": { + "data": { + "uuid": "java-4-853", + "seg": [ + [ + [ + "绘制", + "椭圆" + ], + [ + "圆" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制弧形": { + "data": { + "uuid": "java-4-854", + "seg": [ + [ + [ + "绘制", + "弧形" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制多边形": { + "data": { + "uuid": "java-4-855", + "seg": [ + [ + [ + "绘制", + "多边形" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "演示绘制方法": { + "data": { + "uuid": "java-4-856", + "seg": [ + [ + [ + "演示", + "绘制", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "改变图形的大小": { + "data": { + "uuid": "java-4-857", + "seg": [ + [ + [ + "改变", + "图形", + "大小" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_221340_175355", + "13_655605_466469", + "13_7465471_53452512", + "13_750646_803799", + "13_392065_435053", + "13_2606_4422", + "13_651237_458313", + "13_346592_352029" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-432", + "seg": [ + [ + [ + "图形" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_699770_588018" + ] + } + } + } + } + }, + { + "使用颜色": { + "children": [ + { + "Color类的方法": { + "data": { + "uuid": "java-4-858", + "seg": [ + [ + [ + "color", + "类", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "设置当前图形的颜色": { + "data": { + "uuid": "java-4-859", + "seg": [ + [ + [ + "设置", + "图形", + "颜色" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个演示颜色的applet": { + "data": { + "uuid": "java-4-860", + "seg": [ + [ + [ + "演示", + "颜色", + "applet" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7453322_53436025" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-433", + "seg": [ + [ + [ + "颜色" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "设置绘图模式": { + "data": { + "uuid": "java-3-434", + "seg": [ + [ + [ + "设置", + "绘图", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用字体": { + "children": [ + { + "确定可用字体": { + "data": { + "uuid": "java-4-861", + "seg": [ + [ + [ + "可用", + "字体" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建和选择字体": { + "data": { + "uuid": "java-4-862", + "seg": [ + [ + [ + "创建" + ], + [ + "选择", + "字体" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "获取字体信息": { + "data": { + "uuid": "java-4-863", + "seg": [ + [ + [ + "获取", + "字体", + "信息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-435", + "seg": [ + [ + [ + "字体" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用FontMetrics管理文本输出": { + "children": [ + { + "显示多行文本": { + "data": { + "uuid": "java-4-864", + "seg": [ + [ + [ + "显示", + "文本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "居中显示文本": { + "data": { + "uuid": "java-4-865", + "seg": [ + [ + [ + "居中", + "显示", + "文本" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_750309_803266" + ] + } + } + } + } + }, + { + "对齐多行文本": { + "data": { + "uuid": "java-4-866", + "seg": [ + [ + [ + "对齐", + "文本" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_383622_419296", + "13_155557_16502", + "13_833_1480", + "13_691712_810782", + "13_696802_581071", + "13_7446686_53426223", + "13_1001299_1179748" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-436", + "seg": [ + [ + [ + "fontmetrics", + "管理", + "文本", + "输出" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-25", + "seg": [ + [ + [ + "awt", + "介绍" + ] + ], + [ + [ + "窗口" + ], + [ + "图形" + ], + [ + "文本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用AWT控件、布局管理器和菜单": { + "children": [ + { + "AWT控件的基础知识": { + "children": [ + { + "添加和移除控件": { + "data": { + "uuid": "java-4-867", + "seg": [ + [ + [ + "添加" + ], + [ + "移除", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "响应控件": { + "data": { + "uuid": "java-4-868", + "seg": [ + [ + [ + "响应", + "控件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_195321_104885", + "13_7460748_53446034", + "13_699895_588309", + "13_745334_792970" + ] + } + } + } + } + }, + { + "HeadlessException异常": { + "data": { + "uuid": "java-4-869", + "seg": [ + [ + [ + "headlessexception", + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-437", + "seg": [ + [ + [ + "awt", + "控件", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用标签": { + "data": { + "uuid": "java-3-438", + "seg": [ + [ + [ + "标签" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_355565_369828", + "13_347702_353883", + "13_160925_29369", + "13_201032_122834", + "13_71390_11693", + "13_870979_1002671", + "13_7412848_53364536" + ] + } + } + } + } + }, + { + "使用命令按钮": { + "data": { + "uuid": "java-3-439", + "seg": [ + [ + [ + "命令", + "按钮" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用复选框": { + "data": { + "uuid": "java-3-440", + "seg": [ + [ + [ + "复选框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用复选框组": { + "data": { + "uuid": "java-3-441", + "seg": [ + [ + [ + "复选框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用下拉列表": { + "data": { + "uuid": "java-3-442", + "seg": [ + [ + [ + "拉", + "列表" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_646235_448502" + ] + } + } + } + } + }, + { + "使用列表框": { + "data": { + "uuid": "java-3-443", + "seg": [ + [ + [ + "列表框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "管理滚动条": { + "data": { + "uuid": "java-3-444", + "seg": [ + [ + [ + "管理", + "滚动条" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用TextField": { + "data": { + "uuid": "java-3-445", + "seg": [ + [ + [ + "textfield" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_3457683_23009415" + ] + } + } + } + } + }, + { + "使用TextArea": { + "data": { + "uuid": "java-3-446", + "seg": [ + [ + [ + "textarea" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "理解布局管理器": { + "children": [ + { + "FlowLayout布局管理器": { + "data": { + "uuid": "java-4-870", + "seg": [ + [ + [ + "flowlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "BorderLayout布局管理器": { + "data": { + "uuid": "java-4-871", + "seg": [ + [ + [ + "borderlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_745675_793961" + ] + } + } + } + } + }, + { + "使用Insets": { + "data": { + "uuid": "java-4-872", + "seg": [ + [ + [ + "insets" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GridLayout布局管理器": { + "data": { + "uuid": "java-4-873", + "seg": [ + [ + [ + "gridlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CardLayout布局管理器": { + "data": { + "uuid": "java-4-874", + "seg": [ + [ + [ + "cardlayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GridBagLayout布局管理器": { + "data": { + "uuid": "java-4-875", + "seg": [ + [ + [ + "gridbaglayout", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-447", + "seg": [ + [ + [ + "理解", + "布局", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "菜单栏和菜单": { + "data": { + "uuid": "java-3-448", + "seg": [ + [ + [ + "菜单栏" + ], + [ + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对话框": { + "data": { + "uuid": "java-3-449", + "seg": [ + [ + [ + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "FileDialog类": { + "data": { + "uuid": "java-3-450", + "seg": [ + [ + [ + "filedialog", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关于重写paint方法": { + "data": { + "uuid": "java-3-451", + "seg": [ + [ + [ + "重写", + "paint", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_643800_443924", + "13_178585_62988", + "13_667484_486661" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-26", + "seg": [ + [ + [ + "awt", + "控件" + ], + [ + "布局", + "管理器" + ], + [ + "菜单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "图像": { + "children": [ + { + "文件格式": { + "data": { + "uuid": "java-3-452", + "seg": [ + [ + [ + "文件格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像基础:创建、加载与显示": { + "children": [ + { + "创建Image对象": { + "data": { + "uuid": "java-4-876", + "seg": [ + [ + [ + "创建", + "image", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_2163_3361" + ] + } + } + } + } + }, + { + "加载图像": { + "data": { + "uuid": "java-4-877", + "seg": [ + [ + [ + "加载", + "图像" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7454733_53437411", + "13_183081_69595", + "13_2688_3837", + "13_749206_801579", + "13_672637_524458" + ] + } + } + } + } + }, + { + "显示图像": { + "data": { + "uuid": "java-4-878", + "seg": [ + [ + [ + "显示", + "图像" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3543_4410", + "13_655423_466210", + "13_782279_853152", + "13_161486_30906", + "13_7457251_53441372", + "13_7459932_53444961", + "13_378912_410549", + "13_688105_553149", + "13_7444135_53421978", + "13_209195_146384" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-453", + "seg": [ + [ + [ + "图像", + "基础" + ] + ], + [ + [ + "创建" + ], + [ + "加载" + ], + [ + "显示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ImageObserver接口": { + "data": { + "uuid": "java-3-454", + "seg": [ + [ + [ + "imageobserver", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "双缓冲": { + "data": { + "uuid": "java-3-455", + "seg": [ + [ + [ + "双", + "缓冲" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MediaTracker类": { + "data": { + "uuid": "java-3-456", + "seg": [ + [ + [ + "mediatracker", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ImageProducer接口": { + "data": { + "uuid": "java-3-457", + "seg": [ + [ + [ + "imageproducer", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ImageConsumer接口": { + "data": { + "uuid": "java-3-458", + "seg": [ + [ + [ + "imageconsumer", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ImageFilter类": { + "children": [ + { + "CropImageFilter类": { + "data": { + "uuid": "java-4-879", + "seg": [ + [ + [ + "cropimagefilter", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RGBImageFilter类": { + "data": { + "uuid": "java-4-880", + "seg": [ + [ + [ + "rgbimagefilter", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-459", + "seg": [ + [ + [ + "imagefilter", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他图像类": { + "data": { + "uuid": "java-3-460", + "seg": [ + [ + [ + "图像", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-27", + "seg": [ + [ + [ + "图像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发实用工具": { + "children": [ + { + "并发API包": { + "children": [ + { + "java.util.concurrent包": { + "data": { + "uuid": "java-4-881", + "seg": [ + [ + [ + "java", + "util", + "concurrent", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "java.util.concurrent.atomic包": { + "data": { + "uuid": "java-4-882", + "seg": [ + [ + [ + "java", + "util", + "concurrent", + "atomic", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "java.util.concurrent.locks包": { + "data": { + "uuid": "java-4-883", + "seg": [ + [ + [ + "java", + "util", + "concurrent", + "locks", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-461", + "seg": [ + [ + [ + "并发", + "api", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用同步对象": { + "children": [ + { + "Semaphore类": { + "data": { + "uuid": "java-4-884", + "seg": [ + [ + [ + "semaphore", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CountDownLatch类": { + "data": { + "uuid": "java-4-885", + "seg": [ + [ + [ + "countdownlatch", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CyclicBarrier类": { + "data": { + "uuid": "java-4-886", + "seg": [ + [ + [ + "cyclicbarrier", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Exchanger类": { + "data": { + "uuid": "java-4-887", + "seg": [ + [ + [ + "exchanger", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Phaser类": { + "data": { + "uuid": "java-4-888", + "seg": [ + [ + [ + "phaser", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-462", + "seg": [ + [ + [ + "同步", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用执行器": { + "children": [ + { + "一个简单的执行器示例": { + "data": { + "uuid": "java-4-889", + "seg": [ + [ + [ + "执行器", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Callable和Future接口": { + "children": [ + { + "Future接口的局限性": { + "data": { + "uuid": "java-5-808", + "seg": [ + [ + [ + "future", + "接口", + "局限性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_772932_836424", + "13_647476_451341" + ] + } + } + } + } + }, + { + "使用CompletableFuture构建异步应用": { + "data": { + "uuid": "java-5-809", + "seg": [ + [ + [ + "completablefuture", + "构建", + "异步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-890", + "seg": [ + [ + [ + "callable" + ], + [ + "future", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-463", + "seg": [ + [ + [ + "执行器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TimeUnit枚举": { + "data": { + "uuid": "java-3-464", + "seg": [ + [ + [ + "timeunit", + "枚举" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_201062_123156" + ] + } + } + } + } + }, + { + "并发集合": { + "data": { + "uuid": "java-3-465", + "seg": [ + [ + [ + "并发", + "集合" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "锁": { + "data": { + "uuid": "java-3-466", + "seg": [ + [ + [ + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "原子操作": { + "data": { + "uuid": "java-3-467", + "seg": [ + [ + [ + "原子", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通过Fork/Join框架进行并行编程": { + "children": [ + { + "主要的Fork/Join类": { + "data": { + "uuid": "java-4-891", + "seg": [ + [ + [ + "fork", + "join", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分而治之的策略": { + "data": { + "uuid": "java-4-892", + "seg": [ + [ + [ + "分而治之", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个简单的Fork/Join示例": { + "data": { + "uuid": "java-4-893", + "seg": [ + [ + [ + "fork", + "join", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "理解并行级别带来的影响": { + "data": { + "uuid": "java-4-894", + "seg": [ + [ + [ + "理解", + "并行", + "级别", + "带来", + "影响" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个使用RecursiveTask[V]的例子": { + "data": { + "uuid": "java-4-895", + "seg": [ + [ + [ + "recursivetask", + "v", + "例子" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "异步执行任务": { + "data": { + "uuid": "java-4-896", + "seg": [ + [ + [ + "异步", + "执行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "取消任务": { + "data": { + "uuid": "java-4-897", + "seg": [ + [ + [ + "取消" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "确定任务的完成状态": { + "data": { + "uuid": "java-4-898", + "seg": [ + [ + [ + "状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "重新启动任务": { + "data": { + "uuid": "java-4-899", + "seg": [ + [ + [ + "重新启动" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "深入研究": { + "data": { + "uuid": "java-4-900", + "seg": [ + [ + [ + "深入研究" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关于Fork/Join框架的一些提示": { + "data": { + "uuid": "java-4-901", + "seg": [ + [ + [ + "fork", + "join", + "框架", + "提示" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-468", + "seg": [ + [ + [ + "fork", + "join", + "框架", + "并行", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "并发实用工具与Java传统方式的比较": { + "data": { + "uuid": "java-3-469", + "seg": [ + [ + [ + "并发", + "实用工具" + ], + [ + "java", + "传统", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-28", + "seg": [ + [ + [ + "并发", + "实用工具" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流API": { + "children": [ + { + "流的基础知识": { + "children": [ + { + "流接口": { + "data": { + "uuid": "java-4-902", + "seg": [ + [ + [ + "流", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "如何获得流": { + "data": { + "uuid": "java-4-903", + "seg": [ + [ + [ + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个简单的流示例": { + "data": { + "uuid": "java-4-904", + "seg": [ + [ + [ + "流", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-470", + "seg": [ + [ + [ + "流", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "缩减操作": { + "data": { + "uuid": "java-3-471", + "seg": [ + [ + [ + "缩减", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用并行流": { + "children": [ + { + "将顺序流转换为并行流": { + "data": { + "uuid": "java-4-905", + "seg": [ + [ + [ + "顺序", + "流", + "转换", + "并行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "测量流性能": { + "data": { + "uuid": "java-4-906", + "seg": [ + [ + [ + "测量", + "流", + "性能" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高效使用并行流": { + "data": { + "uuid": "java-4-907", + "seg": [ + [ + [ + "高效", + "并行", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1064525_1262918" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-472", + "seg": [ + [ + [ + "并行", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "映射": { + "data": { + "uuid": "java-3-473", + "seg": [ + [ + [ + "映射" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "收集": { + "data": { + "uuid": "java-3-474", + "seg": [ + [ + [ + "收集" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "迭代器和流": { + "children": [ + { + "对流使用迭代器": { + "data": { + "uuid": "java-4-908", + "seg": [ + [ + [ + "对流", + "迭代", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Spliterator": { + "data": { + "uuid": "java-4-909", + "seg": [ + [ + [ + "spliterator" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "筛选": { + "children": [ + { + "用谓词筛选": { + "data": { + "uuid": "java-5-810", + "seg": [ + [ + [ + "谓词", + "筛选" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7400962_53349047", + "13_1093660_1303236" + ] + } + } + } + } + }, + { + "筛选各异的元素": { + "data": { + "uuid": "java-5-811", + "seg": [ + [ + [ + "筛选", + "各异", + "元素" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-910", + "seg": [ + [ + [ + "筛选" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流的切片": { + "children": [ + { + "使用谓词对流进行切片": { + "data": { + "uuid": "java-5-812", + "seg": [ + [ + [ + "谓词", + "对流", + "切片" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "截短流": { + "data": { + "uuid": "java-5-813", + "seg": [ + [ + [ + "截短", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_374371_403195", + "13_204620_133667", + "13_760930_818171", + "13_199948_119460", + "13_235925_215516", + "13_354889_367801", + "13_228116_193593", + "13_689616_558112", + "13_1093238_1302438" + ] + } + } + } + } + }, + { + "跳过元素": { + "data": { + "uuid": "java-5-814", + "seg": [ + [ + [ + "跳", + "元素" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1100746_1315522", + "13_1071624_1273647", + "13_2795_3872" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-911", + "seg": [ + [ + [ + "流", + "切片" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "查找和匹配": { + "children": [ + { + "检查谓词是否至少匹配一个元素": { + "data": { + "uuid": "java-5-815", + "seg": [ + [ + [ + "检查", + "谓词", + "匹配", + "元素" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "检查谓词是否匹配所有元素": { + "data": { + "uuid": "java-5-816", + "seg": [ + [ + [ + "检查", + "谓词", + "匹配", + "元素" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1058049_1255371", + "13_846431_962508" + ] + } + } + } + } + }, + { + "查找元素": { + "data": { + "uuid": "java-5-817", + "seg": [ + [ + [ + "查找", + "元素" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_770139_831569", + "13_924845_1059777", + "13_1099052_1313992", + "13_774510_838443", + "13_3197989_21755103" + ] + } + } + } + } + }, + { + "查找第一个元素": { + "data": { + "uuid": "java-5-818", + "seg": [ + [ + [ + "查找", + "元素" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-912", + "seg": [ + [ + [ + "查找" + ], + [ + "匹配" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "归约": { + "children": [ + { + "元素求和": { + "data": { + "uuid": "java-5-819", + "seg": [ + [ + [ + "元素", + "求和" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "最大值和最小值": { + "data": { + "uuid": "java-5-820", + "seg": [ + [ + [ + "最大值" + ], + [ + "最小值" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7462480_53447986" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-913", + "seg": [ + [ + [ + "归约" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "付诸实践": { + "children": [ + { + "领域:交易员和交易": { + "data": { + "uuid": "java-5-821", + "seg": [ + [ + [ + "领域" + ] + ], + [ + [ + "交易员" + ], + [ + "交易" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解答": { + "data": { + "uuid": "java-5-822", + "seg": [ + [ + [] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-914", + "seg": [ + [ + [ + "付诸实践" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数值流": { + "children": [ + { + "原始类型流特化": { + "data": { + "uuid": "java-5-823", + "seg": [ + [ + [ + "原始", + "类型", + "流", + "特化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数值范围": { + "data": { + "uuid": "java-5-824", + "seg": [ + [ + [ + "数值" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_215454_161782", + "13_7447209_53426721", + "13_1066459_1266232", + "13_7400205_53347998", + "13_7400073_53347847", + "13_654307_463844" + ] + } + } + } + } + }, + { + "数值流应用:勾股数": { + "data": { + "uuid": "java-5-825", + "seg": [ + [ + [ + "数值", + "流" + ] + ], + [ + [ + "勾", + "股数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-915", + "seg": [ + [ + [ + "数值", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "构建流": { + "children": [ + { + "由值创建流": { + "data": { + "uuid": "java-5-826", + "seg": [ + [ + [ + "值", + "创建", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "由可空对象创建流": { + "data": { + "uuid": "java-5-827", + "seg": [ + [ + [ + "可空", + "对象", + "创建", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "由数组创建流": { + "data": { + "uuid": "java-5-828", + "seg": [ + [ + [ + "数组", + "创建", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "由文件生成流": { + "data": { + "uuid": "java-5-829", + "seg": [ + [ + [ + "文件", + "生成", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1102276_1316652", + "13_7404757_53353757", + "13_647314_450668", + "13_7415097_53368429", + "13_675934_512553", + "13_208361_144238", + "13_195086_104320", + "13_660591_475246", + "13_666368_484455", + "13_213789_157189" + ] + } + } + } + } + }, + { + "由函数生成流:创建无限流": { + "data": { + "uuid": "java-5-830", + "seg": [ + [ + [ + "函数", + "生成", + "流" + ] + ], + [ + [ + "创建", + "无限", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-916", + "seg": [ + [ + [ + "构建", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "概述": { + "data": { + "uuid": "java-4-917", + "seg": [ + [ + [ + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-475", + "seg": [ + [ + [ + "迭代", + "器" + ], + [ + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流API中更多值得探究的地方": { + "data": { + "uuid": "java-3-476", + "seg": [ + [ + [ + "流", + "api", + "值得", + "探究", + "地方" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_30135_9340" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-29", + "seg": [ + [ + [ + "流", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "正则表达式和其他包": { + "children": [ + { + "核心Java API包": { + "data": { + "uuid": "java-3-477", + "seg": [ + [ + [ + "核心", + "java", + "api", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "正则表达式处理": { + "children": [ + { + "Pattern类": { + "data": { + "uuid": "java-4-918", + "seg": [ + [ + [ + "pattern", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Matcher类": { + "data": { + "uuid": "java-4-919", + "seg": [ + [ + [ + "matcher", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "正则表达式的语法": { + "data": { + "uuid": "java-4-920", + "seg": [ + [ + [ + "正则表达式", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "演示模式匹配": { + "data": { + "uuid": "java-4-921", + "seg": [ + [ + [ + "演示", + "模式匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模式匹配的两个选项": { + "data": { + "uuid": "java-4-922", + "seg": [ + [ + [ + "模式匹配", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探究正则表达式": { + "data": { + "uuid": "java-4-923", + "seg": [ + [ + [ + "探究", + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_5715666_35334393", + "13_387739_427122", + "13_371807_398545", + "13_364459_386270", + "13_768647_828910", + "13_672355_497647", + "13_171660_49727", + "13_355657_373057", + "13_366304_390651", + "13_695611_578411" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-478", + "seg": [ + [ + [ + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_204180_132468", + "13_744600_790916", + "13_245463_235973", + "13_747254_798336", + "13_746865_797189", + "13_183372_70318" + ] + } + } + } + } + }, + { + "反射": { + "data": { + "uuid": "java-3-479", + "seg": [ + [ + [ + "反射" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_742717_785455" + ] + } + } + } + } + }, + { + "远程方法调用": { + "data": { + "uuid": "java-3-480", + "seg": [ + [ + [ + "远程", + "方法", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用java.text格式化日期和时间": { + "children": [ + { + "DateFormat类": { + "data": { + "uuid": "java-4-924", + "seg": [ + [ + [ + "dateformat", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SimpleDateFormat类": { + "data": { + "uuid": "java-4-925", + "seg": [ + [ + [ + "simpledateformat", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-481", + "seg": [ + [ + [ + "java", + "text", + "格式化", + "日期" + ], + [ + "时间" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_370843_397574" + ] + } + } + } + } + }, + { + "JDK 8新增的时间和日期API": { + "children": [ + { + "时间和日期的基础知识": { + "data": { + "uuid": "java-4-926", + "seg": [ + [ + [ + "时间" + ], + [ + "日期", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_214873_160006" + ] + } + } + } + } + }, + { + "格式化日期和时间": { + "data": { + "uuid": "java-4-927", + "seg": [ + [ + [ + "格式化", + "日期" + ], + [ + "时间" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1092562_1300557" + ] + } + } + } + } + }, + { + "解析日期和时间字符串": { + "data": { + "uuid": "java-4-928", + "seg": [ + [ + [ + "解析", + "日期" + ], + [ + "时间", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-482", + "seg": [ + [ + [ + "jdk", + "新增", + "时间" + ], + [ + "日期", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探究java.time包的其他方面": { + "data": { + "uuid": "java-3-483", + "seg": [ + [ + [ + "探究", + "java", + "time", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "匹配字符串": { + "data": { + "uuid": "java-3-484", + "seg": [ + [ + [ + "匹配", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "找出多个匹配": { + "data": { + "uuid": "java-3-485", + "seg": [ + [ + [ + "找出", + "匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用分隔符来分割": { + "data": { + "uuid": "java-3-486", + "seg": [ + [ + [ + "分隔符", + "分割" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "替换匹配": { + "data": { + "uuid": "java-3-487", + "seg": [ + [ + [ + "替换", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_220435_173067" + ] + } + } + } + } + }, + { + "正则表达式简介": { + "data": { + "uuid": "java-3-488", + "seg": [ + [ + [ + "正则表达式", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "匹配规则": { + "data": { + "uuid": "java-3-489", + "seg": [ + [ + [ + "匹配", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分组匹配": { + "data": { + "uuid": "java-3-490", + "seg": [ + [ + [ + "分组", + "匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "非贪婪匹配": { + "data": { + "uuid": "java-3-491", + "seg": [ + [ + [ + "贪婪", + "匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "搜索和替换": { + "data": { + "uuid": "java-3-492", + "seg": [ + [ + [ + "搜索" + ], + [ + "替换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-30", + "seg": [ + [ + [ + "正则表达式" + ], + [ + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "并发编程的挑战": { + "children": [ + { + "上下文切换": { + "children": [ + { + "多线程一定快吗": { + "children": [ + { + "多线程基础": { + "data": { + "uuid": "java-6-161", + "seg": [ + [ + [ + "多线程", + "基础" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_659090_472618", + "13_758590_814680", + "13_654904_465124", + "13_377176_407658", + "13_239439_222749", + "13_647436_450933", + "13_366088_390007", + "13_388413_428166", + "13_682849_538033", + "13_1099749_1314751" + ] + } + } + } + } + }, + { + "创建新线程": { + "data": { + "uuid": "java-6-162", + "seg": [ + [ + [ + "创建", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_356744_372692" + ] + } + } + } + } + }, + { + "中断线程": { + "data": { + "uuid": "java-6-163", + "seg": [ + [ + [ + "中断", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "守护线程": { + "data": { + "uuid": "java-6-164", + "seg": [ + [ + [ + "守护", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程同步": { + "data": { + "uuid": "java-6-165", + "seg": [ + [ + [ + "线程", + "同步" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_747170_798101", + "13_226439_189018", + "13_192520_96058" + ] + } + } + } + } + }, + { + "同步方法": { + "data": { + "uuid": "java-6-166", + "seg": [ + [ + [ + "同步", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用wait和notify": { + "data": { + "uuid": "java-6-167", + "seg": [ + [ + [ + "wait" + ], + [ + "not", + "if", + "y" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_700602_589554", + "13_171163_48013", + "13_746742_796755", + "13_669879_492327", + "13_700507_589399", + "13_871757_1003857" + ] + } + } + } + } + }, + { + "使用ReentrantLock": { + "data": { + "uuid": "java-6-168", + "seg": [ + [ + [ + "reentrantlock" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1063978_1262216" + ] + } + } + } + } + }, + { + "使用Condition": { + "data": { + "uuid": "java-6-169", + "seg": [ + [ + [ + "condition" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用ReadWriteLock": { + "data": { + "uuid": "java-6-170", + "seg": [ + [ + [ + "readwritelock" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用StampedLock": { + "data": { + "uuid": "java-6-171", + "seg": [ + [ + [ + "stampedlock" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Concurrent集合": { + "data": { + "uuid": "java-6-172", + "seg": [ + [ + [ + "concurrent", + "集合" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Atomic": { + "data": { + "uuid": "java-6-173", + "seg": [ + [ + [ + "atomic" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_356335_371960" + ] + } + } + } + } + }, + { + "使用ForkJoin": { + "data": { + "uuid": "java-6-174", + "seg": [ + [ + [ + "forkjoin" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-831", + "seg": [ + [ + [ + "多线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7433549_53403930", + "13_348292_355015", + "13_193570_99083", + "13_7463853_53450090", + "13_745175_792537", + "13_700629_589595", + "13_741967_783094", + "13_1069468_1270897", + "13_363298_383427", + "13_744754_791340" + ] + } + } + } + } + }, + { + "测试上下文切换次数和时长": { + "data": { + "uuid": "java-5-832", + "seg": [ + [ + [ + "上下文", + "切换", + "次数" + ], + [ + "时长" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "如何减少上下文切换": { + "data": { + "uuid": "java-5-833", + "seg": [ + [ + [ + "减少", + "上下文", + "切换" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_772903_836445", + "13_183239_69954" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-929", + "seg": [ + [ + [ + "上下文", + "切换" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "死锁": { + "data": { + "uuid": "java-4-930", + "seg": [ + [ + [ + "死锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "资源限制的挑战": { + "data": { + "uuid": "java-4-931", + "seg": [ + [ + [ + "资源", + "挑战" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-493", + "seg": [ + [ + [ + "并发", + "编程", + "挑战" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java并发机制的底层实现原理": { + "children": [ + { + "volatile的应用": { + "data": { + "uuid": "java-4-932", + "seg": [ + [ + [ + "volatile" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_744766_791364" + ] + } + } + } + } + }, + { + "synchronized的实现原理与应用": { + "children": [ + { + "Java对象头": { + "data": { + "uuid": "java-5-834", + "seg": [ + [ + [ + "java", + "对象", + "头" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_250745_248190" + ] + } + } + } + } + }, + { + "锁的升级与对比": { + "data": { + "uuid": "java-5-835", + "seg": [ + [ + [ + "锁", + "升级" + ], + [] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_769722_830819", + "13_7402318_53350008" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-933", + "seg": [ + [ + [ + "synchronized", + "原理" + ], + [] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7405485_53354749", + "13_361893_380232", + "13_744931_791790", + "13_755192_810486", + "13_7404477_53353316", + "13_745100_792306", + "13_830549_927784", + "13_7447267_53426816", + "13_647711_451446", + "13_773862_837678" + ] + } + } + } + } + }, + { + "原子操作的实现原理": { + "data": { + "uuid": "java-4-934", + "seg": [ + [ + [ + "原子", + "操作", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-494", + "seg": [ + [ + [ + "java", + "并发", + "机制", + "底层", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java内存模型": { + "children": [ + { + "Java内存模型的基础": { + "children": [ + { + "Java内存模型的抽象结构": { + "data": { + "uuid": "java-5-836", + "seg": [ + [ + [ + "java", + "内存", + "模型", + "抽象", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_354580_367180" + ] + } + } + } + } + }, + { + "从源代码到指令序列的重排序": { + "data": { + "uuid": "java-5-837", + "seg": [ + [ + [ + "指令", + "序列", + "重", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678859_524156" + ] + } + } + } + } + }, + { + "并发编程模型的分类": { + "data": { + "uuid": "java-5-838", + "seg": [ + [ + [ + "并发", + "编程", + "模型", + "分类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "happens-before简介": { + "data": { + "uuid": "java-5-839", + "seg": [ + [ + [ + "happens", + "be", + "for", + "e", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-935", + "seg": [ + [ + [ + "java", + "内存", + "模型", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重排序": { + "children": [ + { + "数据依赖性": { + "data": { + "uuid": "java-5-840", + "seg": [ + [ + [ + "数据", + "依赖性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_921971_1056796" + ] + } + } + } + } + }, + { + "as-if-serial语义": { + "data": { + "uuid": "java-5-841", + "seg": [ + [ + [ + "as", + "if", + "serial", + "语义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_777531_846323" + ] + } + } + } + } + }, + { + "程序顺序规则": { + "data": { + "uuid": "java-5-842", + "seg": [ + [ + [ + "程序", + "顺序", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重排序对多线程的影响": { + "data": { + "uuid": "java-5-843", + "seg": [ + [ + [ + "重", + "排序", + "多线程", + "影响" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_214002_157583", + "13_752405_814574", + "13_352702_363691", + "13_564873_439914", + "13_199586_118019", + "13_646648_449256", + "13_241715_228140", + "13_1071607_1273625", + "13_346432_351649", + "13_7443243_53420307" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-936", + "seg": [ + [ + [ + "重", + "排序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "顺序一致性": { + "children": [ + { + "数据竞争与顺序一致性": { + "data": { + "uuid": "java-5-844", + "seg": [ + [ + [ + "数据", + "竞争" + ], + [ + "顺序", + "一致性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_749287_801722", + "13_7446799_53426347", + "13_696996_581913", + "13_230066_198898", + "13_932210_1069290" + ] + } + } + } + } + }, + { + "顺序一致性内存模型": { + "data": { + "uuid": "java-5-845", + "seg": [ + [ + [ + "顺序", + "一致性", + "内存", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "同步程序的顺序一致性效果": { + "data": { + "uuid": "java-5-846", + "seg": [ + [ + [ + "同步", + "程序", + "顺序", + "一致性", + "效果" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "未同步程序的执行特性": { + "data": { + "uuid": "java-5-847", + "seg": [ + [ + [ + "同步", + "程序", + "执行", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-937", + "seg": [ + [ + [ + "顺序", + "一致性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "volatile的内存语义": { + "children": [ + { + "volatile的特性": { + "data": { + "uuid": "java-5-848", + "seg": [ + [ + [ + "volatile", + "特性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_696308_579881", + "13_742394_784484", + "13_1092031_1299752", + "13_903760_1039227", + "13_7417634_53373019", + "13_229304_196945", + "13_695500_578126", + "13_681151_533002", + "13_187111_80843", + "13_375669_405228" + ] + } + } + } + } + }, + { + "volatile写-读建立的happens-before关系": { + "data": { + "uuid": "java-5-849", + "seg": [ + [ + [ + "volatile", + "写", + "读", + "建立", + "happens", + "be", + "for", + "e", + "关系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "volatile写-读的内存语义": { + "data": { + "uuid": "java-5-850", + "seg": [ + [ + [ + "volatile", + "写", + "读", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "volatile内存语义的实现": { + "data": { + "uuid": "java-5-851", + "seg": [ + [ + [ + "volatile", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367489_393260", + "13_344477_347760", + "13_208125_143685", + "13_7435830_53407445", + "13_364317_385793", + "13_7426122_53388874", + "13_380823_414344", + "13_704941_603516", + "13_7415743_53369727", + "13_7426085_53388816" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-938", + "seg": [ + [ + [ + "volatile", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "锁的内存语义": { + "children": [ + { + "锁的释放-获取建立的": { + "data": { + "uuid": "java-5-852", + "seg": [ + [ + [ + "锁", + "释放", + "获取", + "建立" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "锁的释放和获取的内存语义": { + "data": { + "uuid": "java-5-853", + "seg": [ + [ + [ + "锁", + "释放" + ], + [ + "获取", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_235099_213247", + "13_718265_711887", + "13_242917_230901" + ] + } + } + } + } + }, + { + "锁内存语义的实现": { + "data": { + "uuid": "java-5-854", + "seg": [ + [ + [ + "锁", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "concurrent包的实现": { + "data": { + "uuid": "java-5-855", + "seg": [ + [ + [ + "concurrent", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-939", + "seg": [ + [ + [ + "锁", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "final域的内存语义": { + "children": [ + { + "final域的重排序规则": { + "data": { + "uuid": "java-5-856", + "seg": [ + [ + [ + "final", + "域", + "重", + "排序", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "写final域的重排序规则": { + "data": { + "uuid": "java-5-857", + "seg": [ + [ + [ + "写", + "final", + "域", + "重", + "排序", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读final域的重排序规则": { + "data": { + "uuid": "java-5-858", + "seg": [ + [ + [ + "读", + "final", + "域", + "重", + "排序", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "final域为引用类型": { + "data": { + "uuid": "java-5-859", + "seg": [ + [ + [ + "final", + "域", + "引用", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "final语义在处理器中的实现": { + "data": { + "uuid": "java-5-860", + "seg": [ + [ + [ + "final", + "语义", + "处理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-940", + "seg": [ + [ + [ + "final", + "域", + "内存", + "语义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "happens-before": { + "children": [ + { + "JMM的设计": { + "data": { + "uuid": "java-5-861", + "seg": [ + [ + [ + "jmm", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "happens-before的定义": { + "data": { + "uuid": "java-5-862", + "seg": [ + [ + [ + "happens", + "be", + "for", + "e", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_941638_1079146", + "13_7425894_53390411", + "13_222489_178661", + "13_857849_983876", + "13_7441584_53417833", + "13_356269_371667", + "13_717835_711297", + "13_516192_438793", + "13_368005_394247" + ] + } + } + } + } + }, + { + "happens-before规则": { + "data": { + "uuid": "java-5-863", + "seg": [ + [ + [ + "happens", + "be", + "for", + "e", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-941", + "seg": [ + [ + [ + "happens", + "be", + "for", + "e" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "双重检查锁定与延迟初始化": { + "children": [ + { + "双重检查锁定的由来": { + "data": { + "uuid": "java-5-864", + "seg": [ + [ + [ + "双重", + "检查", + "锁定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于volatile的解决方案": { + "data": { + "uuid": "java-5-865", + "seg": [ + [ + [ + "volatile", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_657610_470244" + ] + } + } + } + } + }, + { + "基于类初始化的解决方案": { + "data": { + "uuid": "java-5-866", + "seg": [ + [ + [ + "类", + "初始化", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-942", + "seg": [ + [ + [ + "双重", + "检查", + "锁定" + ], + [ + "延迟", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java内存模型综述": { + "children": [ + { + "处理器的内存模型": { + "data": { + "uuid": "java-5-867", + "seg": [ + [ + [ + "处理器", + "内存", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "各种内存模型之间的关系": { + "data": { + "uuid": "java-5-868", + "seg": [ + [ + [ + "内存", + "模型", + "关系" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7428343_53394087", + "13_192626_96285", + "13_668495_488833", + "13_767358_827033", + "13_231535_202765", + "13_750499_804916", + "13_1082460_1289320" + ] + } + } + } + } + }, + { + "JMM的内存可见性保证": { + "data": { + "uuid": "java-5-869", + "seg": [ + [ + [ + "jmm", + "内存", + "性", + "保证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JSR-133对旧内存模型的修补": { + "data": { + "uuid": "java-5-870", + "seg": [ + [ + [ + "jsr", + "内存", + "模型", + "修补" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-943", + "seg": [ + [ + [ + "java", + "内存", + "模型", + "综述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-495", + "seg": [ + [ + [ + "java", + "内存", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java并发编程基础": { + "children": [ + { + "线程简介": { + "children": [ + { + "什么是线程": { + "data": { + "uuid": "java-5-871", + "seg": [ + [ + [ + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_189132_87432", + "13_245672_236442", + "13_745158_792484", + "13_746618_796418", + "13_245487_235981", + "13_167037_40975", + "13_7403911_53352681", + "13_1510255_5977620", + "13_208366_144234", + "13_746040_794852" + ] + } + } + } + } + }, + { + "线程优先级": { + "data": { + "uuid": "java-5-872", + "seg": [ + [ + [ + "线程", + "优先级" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程的状态": { + "data": { + "uuid": "java-5-873", + "seg": [ + [ + [ + "线程", + "状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Daemon线程": { + "data": { + "uuid": "java-5-874", + "seg": [ + [ + [ + "daemon", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-944", + "seg": [ + [ + [ + "线程", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "启动和终止线程": { + "children": [ + { + "构造线程": { + "data": { + "uuid": "java-5-875", + "seg": [ + [ + [ + "构造", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "启动线程": { + "data": { + "uuid": "java-5-876", + "seg": [ + [ + [ + "启动", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_226825_189969", + "13_237039_216536", + "13_233213_207814", + "13_149094_13015", + "13_349174_356617", + "13_7396288_53339690", + "13_7435911_53407002", + "13_680605_530932", + "13_767232_826839", + "13_1062989_1260999" + ] + } + } + } + } + }, + { + "理解中断": { + "data": { + "uuid": "java-5-877", + "seg": [ + [ + [ + "理解", + "中断" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1079291_1283903", + "13_263908_278701", + "13_377020_407345", + "13_10676_4896", + "13_182134_67925", + "13_7413235_53365162" + ] + } + } + } + } + }, + { + "过期的suspend、resume和stop": { + "data": { + "uuid": "java-5-878", + "seg": [ + [ + [ + "suspend" + ], + [ + "resume" + ], + [ + "stop" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安全地终止线程": { + "data": { + "uuid": "java-5-879", + "seg": [ + [ + [ + "终止", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1053693_1250920", + "13_653736_462768", + "13_761414_819914", + "13_217708_166354", + "13_234667_211969", + "13_923975_1058826" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-945", + "seg": [ + [ + [ + "启动" + ], + [ + "终止", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程间通信": { + "children": [ + { + "等待/通知机制": { + "data": { + "uuid": "java-5-880", + "seg": [ + [ + [ + "等待", + "通知", + "机制" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_676012_513131" + ] + } + } + } + } + }, + { + "等待/通知的经典范式": { + "data": { + "uuid": "java-5-881", + "seg": [ + [ + [ + "等待", + "通知", + "经典", + "范式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "管道输入/输出流": { + "data": { + "uuid": "java-5-882", + "seg": [ + [ + [ + "管道", + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Thread.join的使用": { + "data": { + "uuid": "java-5-883", + "seg": [ + [ + [ + "thread", + "join" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-946", + "seg": [ + [ + [ + "线程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-496", + "seg": [ + [ + [ + "java", + "并发", + "编程", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java中的锁": { + "children": [ + { + "Lock接口": { + "data": { + "uuid": "java-4-947", + "seg": [ + [ + [ + "lock", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7400445_53348354", + "13_751572_805237", + "13_7396569_53341136" + ] + } + } + } + } + }, + { + "队列同步器": { + "children": [ + { + "队列同步器的接口与示例": { + "children": [ + { + "Windows注册表概述": { + "data": { + "uuid": "java-6-175", + "seg": [ + [ + [ + "windows", + "注册表", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问注册表的Java平台接口": { + "data": { + "uuid": "java-6-176", + "seg": [ + [ + [ + "访问", + "注册表", + "java", + "平台", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "以本地方法实现注册表访问函数": { + "data": { + "uuid": "java-6-177", + "seg": [ + [ + [ + "方法", + "注册表", + "访问", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-884", + "seg": [ + [ + [ + "队列", + "同步器", + "接口" + ], + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "队列同步器的实现分析": { + "data": { + "uuid": "java-5-885", + "seg": [ + [ + [ + "队列", + "同步器", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_771579_834206" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-948", + "seg": [ + [ + [ + "队列", + "同步器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重入锁": { + "data": { + "uuid": "java-4-949", + "seg": [ + [ + [ + "重入", + "锁" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_763730_822257" + ] + } + } + } + } + }, + { + "读写锁": { + "children": [ + { + "读写锁的接口与示例": { + "data": { + "uuid": "java-5-886", + "seg": [ + [ + [ + "读写", + "锁", + "接口" + ], + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读写锁的实现分析": { + "data": { + "uuid": "java-5-887", + "seg": [ + [ + [ + "读写", + "锁", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_174479_54450", + "13_656121_467409" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-950", + "seg": [ + [ + [ + "读写", + "锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LockSupport工具": { + "data": { + "uuid": "java-4-951", + "seg": [ + [ + [ + "locksupport", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Condition接口": { + "children": [ + { + "Condition接口与示例": { + "data": { + "uuid": "java-5-888", + "seg": [ + [ + [ + "condition", + "接口" + ], + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Condition的实现分析": { + "data": { + "uuid": "java-5-889", + "seg": [ + [ + [ + "condition", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_757548_813685" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-952", + "seg": [ + [ + [ + "condition", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-497", + "seg": [ + [ + [ + "java", + "锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java并发容器和框架": { + "children": [ + { + "ConcurrentHashMap的实现原理与使用": { + "children": [ + { + "ConcurrentHashMap的结构": { + "data": { + "uuid": "java-5-890", + "seg": [ + [ + [ + "concurrenthashmap", + "结构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ConcurrentHashMap的初始化": { + "data": { + "uuid": "java-5-891", + "seg": [ + [ + [ + "concurrenthashmap", + "初始化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "定位Segment": { + "data": { + "uuid": "java-5-892", + "seg": [ + [ + [ + "定位", + "segment" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1097844_1311879" + ] + } + } + } + } + }, + { + "ConcurrentHashMap的操作": { + "data": { + "uuid": "java-5-893", + "seg": [ + [ + [ + "concurrenthashmap", + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_764593_823503" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-953", + "seg": [ + [ + [ + "concurrenthashmap", + "原理" + ], + [] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ConcurrentLinkedQueue": { + "children": [ + { + "ConcurrentLinkedQueue的结构": { + "data": { + "uuid": "java-5-894", + "seg": [ + [ + [ + "concurrentlinkedqueue", + "结构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "入队列": { + "data": { + "uuid": "java-5-895", + "seg": [ + [ + [ + "入", + "队列" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7466788_53454128" + ] + } + } + } + } + }, + { + "出队列": { + "data": { + "uuid": "java-5-896", + "seg": [ + [ + [ + "出", + "队列" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7438022_53411321", + "13_250176_247040", + "13_7447436_53427313", + "13_155321_15359", + "13_7467420_53454965" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-954", + "seg": [ + [ + [ + "concurrentlinkedqueue" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java中的阻塞队列": { + "children": [ + { + "什么是阻塞队列": { + "data": { + "uuid": "java-5-897", + "seg": [ + [ + [ + "阻塞", + "队列" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java里的阻塞队列": { + "data": { + "uuid": "java-5-898", + "seg": [ + [ + [ + "java", + "阻塞", + "队列" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "阻塞队列的实现原理": { + "data": { + "uuid": "java-5-899", + "seg": [ + [ + [ + "阻塞", + "队列", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-955", + "seg": [ + [ + [ + "java", + "阻塞", + "队列" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Fork/Join框架": { + "children": [ + { + "什么是Fork/Join框架": { + "data": { + "uuid": "java-5-900", + "seg": [ + [ + [ + "fork", + "join", + "框架" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_186955_80430", + "13_1093393_1302725", + "13_1066509_1266189", + "13_749696_802380", + "13_373167_400929", + "13_7403599_53352141", + "13_7463233_53449043", + "13_354460_367001", + "13_670201_492526", + "13_365467_388684" + ] + } + } + } + } + }, + { + "工作窃取算法": { + "data": { + "uuid": "java-5-901", + "seg": [ + [ + [ + "工作", + "窃取", + "算法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Fork/Join框架的设计": { + "data": { + "uuid": "java-5-902", + "seg": [ + [ + [ + "fork", + "join", + "框架", + "设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Fork/Join框架": { + "data": { + "uuid": "java-5-903", + "seg": [ + [ + [ + "fork", + "join", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Fork/Join框架的异常处理": { + "data": { + "uuid": "java-5-904", + "seg": [ + [ + [ + "fork", + "join", + "框架", + "异常" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_345976_386139", + "13_246212_237483" + ] + } + } + } + } + }, + { + "Fork/Join框架的实现原理": { + "data": { + "uuid": "java-5-905", + "seg": [ + [ + [ + "fork", + "join", + "框架", + "原理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_747072_797845" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-956", + "seg": [ + [ + [ + "fork", + "join", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-498", + "seg": [ + [ + [ + "java", + "并发", + "容器" + ], + [ + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java中的13个原子操作类": { + "children": [ + { + "原子更新基本类型类": { + "data": { + "uuid": "java-4-957", + "seg": [ + [ + [ + "原子", + "更新", + "类型", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原子更新数组": { + "data": { + "uuid": "java-4-958", + "seg": [ + [ + [ + "原子", + "更新", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原子更新引用类型": { + "data": { + "uuid": "java-4-959", + "seg": [ + [ + [ + "原子", + "更新", + "引用", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原子更新字段类": { + "data": { + "uuid": "java-4-960", + "seg": [ + [ + [ + "原子", + "更新", + "字段", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-499", + "seg": [ + [ + [ + "java", + "原子", + "操作", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的并发工具类": { + "children": [ + { + "等待多线程完成的CountDownLatch": { + "data": { + "uuid": "java-4-961", + "seg": [ + [ + [ + "等待", + "多线程", + "countdownlatch" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步屏障CyclicBarrier": { + "children": [ + { + "CyclicBarrier简介": { + "data": { + "uuid": "java-5-906", + "seg": [ + [ + [ + "cyclicbarrier", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CyclicBarrier的应用场景": { + "data": { + "uuid": "java-5-907", + "seg": [ + [ + [ + "cyclicbarrier", + "场景" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CyclicBarrier和CountDownLatch的区别": { + "data": { + "uuid": "java-5-908", + "seg": [ + [ + [ + "cyclicbarrier" + ], + [ + "countdownlatch", + "区别" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_364513_386351" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-962", + "seg": [ + [ + [ + "同步", + "屏障", + "cyclicbarrier" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "控制并发线程数的Semaphore": { + "data": { + "uuid": "java-4-963", + "seg": [ + [ + [ + "控制", + "并发", + "线程", + "semaphore" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_771208_833586", + "13_229782_198302" + ] + } + } + } + } + }, + { + "线程间交换数据的Exchanger": { + "data": { + "uuid": "java-4-964", + "seg": [ + [ + [ + "线程", + "交换", + "数据", + "exchanger" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1103947_1318251" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-500", + "seg": [ + [ + [ + "java", + "并发", + "工具", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Java中的线程池": { + "children": [ + { + "线程池的实现原理": { + "data": { + "uuid": "java-4-965", + "seg": [ + [ + [ + "线程", + "池", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程池的使用": { + "children": [ + { + "线程池的创建": { + "data": { + "uuid": "java-5-909", + "seg": [ + [ + [ + "线程", + "池", + "创建" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7458441_53443157", + "13_1071564_1274548" + ] + } + } + } + } + }, + { + "向线程池提交任务": { + "data": { + "uuid": "java-5-910", + "seg": [ + [ + [ + "线程", + "池", + "提交" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关闭线程池": { + "data": { + "uuid": "java-5-911", + "seg": [ + [ + [ + "关闭", + "线程", + "池" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_654142_463636", + "13_694276_573796", + "13_678025_521291", + "13_7419062_53376034", + "13_1089801_1296464", + "13_7401716_53350074", + "13_173978_53245", + "13_957451_1103747", + "13_1049021_1246423", + "13_747207_798201" + ] + } + } + } + } + }, + { + "合理地配置线程池": { + "data": { + "uuid": "java-5-912", + "seg": [ + [ + [ + "配置", + "线程", + "池" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程池的监控": { + "data": { + "uuid": "java-5-913", + "seg": [ + [ + [ + "线程", + "池", + "监控" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-966", + "seg": [ + [ + [ + "线程", + "池" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_710340_668596" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-501", + "seg": [ + [ + [ + "java", + "线程", + "池" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Executor框架": { + "children": [ + { + "Executor框架简介": { + "children": [ + { + "Executor框架的两级调度模型": { + "data": { + "uuid": "java-5-914", + "seg": [ + [ + [ + "executor", + "框架", + "调度", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Executor框架的结构与成员": { + "data": { + "uuid": "java-5-915", + "seg": [ + [ + [ + "executor", + "框架", + "结构" + ], + [ + "成员" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7455882_53439235", + "13_240094_224029", + "13_237914_219273", + "13_348885_356294", + "13_371939_400389", + "13_744501_790634", + "13_157465_20409", + "13_226463_188996", + "13_258358_396208", + "13_6148503_42167879" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-967", + "seg": [ + [ + [ + "executor", + "框架", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ThreadPoolExecutor详解": { + "children": [ + { + "FixedThreadPool详解": { + "data": { + "uuid": "java-5-916", + "seg": [ + [ + [ + "fixedthreadpool", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SingleThreadExecutor详解": { + "data": { + "uuid": "java-5-917", + "seg": [ + [ + [ + "singlethreadexecutor", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CachedThreadPool详解": { + "data": { + "uuid": "java-5-918", + "seg": [ + [ + [ + "cachedthreadpool", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-968", + "seg": [ + [ + [ + "threadpoolexecutor", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ScheduledThreadPoolExecutor详解": { + "children": [ + { + "ScheduledThreadPoolExecutor的运行机制": { + "data": { + "uuid": "java-5-919", + "seg": [ + [ + [ + "scheduledthreadpoolexecutor", + "运行机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ScheduledThreadPoolExecutor的实现": { + "data": { + "uuid": "java-5-920", + "seg": [ + [ + [ + "scheduledthreadpoolexecutor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-969", + "seg": [ + [ + [ + "scheduledthreadpoolexecutor", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FutureTask详解": { + "children": [ + { + "FutureTask简介": { + "data": { + "uuid": "java-5-921", + "seg": [ + [ + [ + "futuretask", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FutureTask的使用": { + "data": { + "uuid": "java-5-922", + "seg": [ + [ + [ + "futuretask" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FutureTask的实现": { + "data": { + "uuid": "java-5-923", + "seg": [ + [ + [ + "futuretask" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-970", + "seg": [ + [ + [ + "futuretask", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-502", + "seg": [ + [ + [ + "executor", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java并发编程实践": { + "children": [ + { + "生产者和消费者模式": { + "children": [ + { + "多生产者和多消费者场景": { + "data": { + "uuid": "java-5-924", + "seg": [ + [ + [ + "生产者" + ], + [ + "消费者", + "场景" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_742735_785501", + "13_199289_116906", + "13_690686_561295", + "13_719860_714128", + "13_357781_374828", + "13_1088118_1294781", + "13_7445422_53424051" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-971", + "seg": [ + [ + [ + "生产者" + ], + [ + "消费者", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "性能测试": { + "data": { + "uuid": "java-4-972", + "seg": [ + [ + [ + "性能" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "异步任务池": { + "data": { + "uuid": "java-4-973", + "seg": [ + [ + [ + "异步", + "池" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-503", + "seg": [ + [ + [ + "java", + "并发", + "编程", + "实践" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基础知识": { + "children": [ + { + "Java 8、9、10以及11的变化": { + "children": [ + { + "Java怎么还在变": { + "children": [ + { + "Java在编程语言生态系统中的位置": { + "data": { + "uuid": "java-6-178", + "seg": [ + [ + [ + "java", + "编程语言", + "生态系统", + "位置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1099200_1314188" + ] + } + } + } + } + }, + { + "用行为参数化把代码传递给方法": { + "data": { + "uuid": "java-6-179", + "seg": [ + [ + [ + "参数", + "化", + "传递", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7414520_53367331", + "13_1093212_1302387" + ] + } + } + } + } + }, + { + "并行与共享的可变数据": { + "data": { + "uuid": "java-6-180", + "seg": [ + [ + [ + "并行" + ], + [ + "共享", + "可变", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java需要演变": { + "data": { + "uuid": "java-6-181", + "seg": [ + [ + [ + "java", + "演变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-925", + "seg": [ + [ + [ + "java", + "变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java中的函数": { + "children": [ + { + "方法和Lambda作为一等值": { + "children": [ + { + "从Java程序中调用C函数": { + "data": { + "uuid": "java-7-33", + "seg": [ + [ + [ + "java", + "程序", + "调用", + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_244909_234786", + "13_691761_565202", + "13_230938_201084", + "13_7466337_53453535", + "13_237933_219276", + "13_1079545_1284257" + ] + } + } + } + } + }, + { + "数值参数与返回值": { + "data": { + "uuid": "java-7-34", + "seg": [ + [ + [ + "数值", + "参数" + ], + [ + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串参数": { + "data": { + "uuid": "java-7-35", + "seg": [ + [ + [ + "字符串", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问域": { + "children": [ + { + "访问静态域": { + "data": { + "uuid": "java-8-0", + "seg": [ + [ + [ + "访问", + "静态", + "域" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_680153_529336", + "13_235517_214464", + "13_797210_947795", + "13_364845_387251", + "13_7456173_53439627", + "13_668107_487954" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-7-36", + "seg": [ + [ + [ + "访问", + "域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编码签名": { + "data": { + "uuid": "java-7-37", + "seg": [ + [ + [ + "编码", + "签名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7399808_53347306", + "13_742803_785684", + "13_779188_847055", + "13_1095076_1305938", + "13_651268_458764" + ] + } + } + } + } + }, + { + "调用Java方法": { + "children": [ + { + "静态方法": { + "data": { + "uuid": "java-8-1", + "seg": [ + [ + [ + "静态方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744962_791890", + "13_361642_379672", + "13_7416434_53370504", + "13_1053601_1250846", + "13_646107_448604" + ] + } + } + } + } + }, + { + "构造器": { + "data": { + "uuid": "java-8-2", + "seg": [ + [ + [ + "构造", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "另一种方法调用": { + "data": { + "uuid": "java-8-3", + "seg": [ + [ + [ + "方法", + "调用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1101123_1315725", + "13_1060280_1257804", + "13_241789_228255", + "13_7425094_53386278", + "13_231027_201499", + "13_6557141_46949313", + "13_248587_243521", + "13_7397901_53343400", + "13_644558_445382", + "13_372009_398965" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-7-38", + "seg": [ + [ + [ + "调用", + "java", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问数组元素": { + "data": { + "uuid": "java-7-39", + "seg": [ + [ + [ + "访问", + "数组", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_644043_444357" + ] + } + } + } + } + }, + { + "使用调用API": { + "data": { + "uuid": "java-7-40", + "seg": [ + [ + [ + "调用", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-182", + "seg": [ + [ + [ + "方法" + ], + [ + "lambda", + "等值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递代码:一个例子": { + "data": { + "uuid": "java-6-183", + "seg": [ + [ + [ + "传递" + ] + ], + [ + [ + "例子" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_783587_855532" + ] + } + } + } + } + }, + { + "从传递方法到Lambda": { + "data": { + "uuid": "java-6-184", + "seg": [ + [ + [ + "传递", + "方法", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-926", + "seg": [ + [ + [ + "java", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "默认方法及Java模块": { + "children": [ + { + "不断演进的API": { + "children": [ + { + "初始版本的API": { + "data": { + "uuid": "java-7-41", + "seg": [ + [ + [ + "初始", + "版本", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第二版API": { + "data": { + "uuid": "java-7-42", + "seg": [ + [ + [ + "版", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_365551_388907", + "13_344497_347696", + "13_638523_441862", + "13_257151_263408", + "13_239872_223560", + "13_7403865_53352559", + "13_665039_482342", + "13_7437194_53409844", + "13_7419446_53376621", + "13_226489_189052" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-185", + "seg": [ + [ + [ + "演进", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "概述默认方法": { + "data": { + "uuid": "java-6-186", + "seg": [ + [ + [ + "概述", + "默认", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_236102_215747", + "13_208210_144411", + "13_699265_587142", + "13_755340_810882", + "13_751776_809112" + ] + } + } + } + } + }, + { + "默认方法的使用模式": { + "children": [ + { + "行为的多继承": { + "data": { + "uuid": "java-7-43", + "seg": [ + [ + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_699939_588433", + "13_374496_403913", + "13_384974_422079", + "13_163149_35654", + "13_1108793_1349184", + "13_681209_533762", + "13_4645471_29328097" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-187", + "seg": [ + [ + [ + "默认", + "方法", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解决冲突的规则": { + "children": [ + { + "选择提供了最具体实现的默认方法的接口": { + "data": { + "uuid": "java-7-44", + "seg": [ + [ + [ + "选择", + "提供", + "默认", + "方法", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "冲突及如何显式地消除歧义": { + "data": { + "uuid": "java-7-45", + "seg": [ + [ + [ + "冲突" + ], + [ + "显式", + "消除", + "歧义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_671585_495636" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-188", + "seg": [ + [ + [ + "冲突", + "规则" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7407584_53357576", + "13_685535_545495", + "13_749647_802277" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-927", + "seg": [ + [ + [ + "默认", + "方法" + ], + [ + "java", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "来自函数式编程的其他好思想": { + "data": { + "uuid": "java-5-928", + "seg": [ + [ + [ + "函数", + "编程", + "思想" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-974", + "seg": [ + [ + [ + "java" + ], + [], + [], + [ + "变化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过行为参数化传递代码": { + "children": [ + { + "应对不断变化的需求": { + "children": [ + { + "初试牛刀:筛选绿苹果": { + "data": { + "uuid": "java-6-189", + "seg": [ + [ + [ + "初试", + "牛刀" + ] + ], + [ + [ + "筛选", + "绿", + "苹果" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_227839_192725" + ] + } + } + } + } + }, + { + "再展身手:把颜色作为参数": { + "data": { + "uuid": "java-6-190", + "seg": [ + [ + [ + "再展", + "身手" + ] + ], + [ + [ + "颜色", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第三次尝试:对你能想到的每个属性做筛选": { + "data": { + "uuid": "java-6-191", + "seg": [ + [ + [ + "尝试" + ] + ], + [ + [ + "想到", + "属性", + "做", + "筛选" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_755341_810876" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-929", + "seg": [ + [ + [ + "应对", + "变化", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "行为参数化": { + "data": { + "uuid": "java-5-930", + "seg": [ + [ + [ + "参数", + "化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_252319_251919", + "13_1091641_1299221", + "13_773546_841369" + ] + } + } + } + } + }, + { + "对付啰唆": { + "children": [ + { + "匿名类": { + "data": { + "uuid": "java-6-192", + "seg": [ + [ + [ + "匿名", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_193100_97782", + "13_924558_1059458" + ] + } + } + } + } + }, + { + "第五次尝试:使用匿名类": { + "data": { + "uuid": "java-6-193", + "seg": [ + [ + [ + "尝试" + ] + ], + [ + [ + "匿名", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第六次尝试:使用Lambda表达式": { + "data": { + "uuid": "java-6-194", + "seg": [ + [ + [ + "尝试" + ] + ], + [ + [ + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第七次尝试:将List类型抽象化": { + "data": { + "uuid": "java-6-195", + "seg": [ + [ + [ + "尝试" + ] + ], + [ + [ + "list", + "类型", + "抽象化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-931", + "seg": [ + [ + [ + "对付", + "啰唆" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "真实的例子": { + "children": [ + { + "用Comparator来排序": { + "data": { + "uuid": "java-6-196", + "seg": [ + [ + [ + "comparator", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_274228_300924", + "13_860904_987999", + "13_1091523_1299008", + "13_710056_667836" + ] + } + } + } + } + }, + { + "用Runnable执行代码块": { + "data": { + "uuid": "java-6-197", + "seg": [ + [ + [ + "runnable", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过Callable返回结果": { + "data": { + "uuid": "java-6-198", + "seg": [ + [ + [ + "callable", + "返回" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_363257_383234", + "13_996119_1169609", + "13_194520_102425", + "13_755604_811027", + "13_748328_800286", + "13_350720_359517" + ] + } + } + } + } + }, + { + "GUI事件处理": { + "data": { + "uuid": "java-6-199", + "seg": [ + [ + [ + "gui", + "事件处理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_669741_491394", + "13_201394_123981", + "13_669291_490594", + "13_5744505_35766533", + "13_7448297_53428422", + "13_240244_224397", + "13_204421_133265", + "13_7448316_53428449", + "13_347066_352685", + "13_7466136_53453287" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-932", + "seg": [ + [ + [ + "真实", + "例子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-975", + "seg": [ + [ + [ + "参数", + "化", + "传递" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Lambda表达式": { + "children": [ + { + "Lambda管中窥豹": { + "data": { + "uuid": "java-5-933", + "seg": [ + [ + [ + "lambda", + "管中窥豹" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在哪里以及如何使用Lambda": { + "children": [ + { + "函数式接口": { + "data": { + "uuid": "java-6-200", + "seg": [ + [ + [ + "函数", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数描述符": { + "data": { + "uuid": "java-6-201", + "seg": [ + [ + [ + "函数", + "描述符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-934", + "seg": [ + [ + [], + [ + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把Lambda付诸实践:环绕执行模式": { + "children": [ + { + "第 1 步:记得行为参数化": { + "data": { + "uuid": "java-6-202", + "seg": [ + [ + [ + "步" + ] + ], + [ + [ + "记得", + "参数", + "化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7422968_53382290" + ] + } + } + } + } + }, + { + "第 2 步:使用函数式接口来传递行为": { + "data": { + "uuid": "java-6-203", + "seg": [ + [ + [ + "步" + ] + ], + [ + [ + "函数", + "接口", + "传递" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第 3 步:执行一个行为": { + "data": { + "uuid": "java-6-204", + "seg": [ + [ + [ + "步" + ] + ], + [ + [ + "执行" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1105134_1319387", + "13_195331_104888", + "13_350160_358632", + "13_1097800_1311774", + "13_218738_169367", + "13_749722_802384", + "13_947659_1099560", + "13_685231_544677", + "13_7459494_53444439", + "13_216120_163266" + ] + } + } + } + } + }, + { + "第 4 步:传递Lambda": { + "data": { + "uuid": "java-6-205", + "seg": [ + [ + [ + "步" + ] + ], + [ + [ + "传递", + "lambda" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7398400_53344854", + "13_754601_810078", + "13_363801_384630", + "13_391375_433727", + "13_761241_818612", + "13_7418148_53374026", + "13_7409268_53359668", + "13_754237_809141", + "13_1059347_1256633" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-935", + "seg": [ + [ + [ + "lambda", + "付诸实践" + ] + ], + [ + [ + "环绕", + "执行", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用函数式接口": { + "children": [ + { + "Predicate": { + "data": { + "uuid": "java-6-206", + "seg": [ + [ + [ + "predicate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Consumer": { + "data": { + "uuid": "java-6-207", + "seg": [ + [ + [ + "consumer" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_774715_838731" + ] + } + } + } + } + }, + { + "Function": { + "data": { + "uuid": "java-6-208", + "seg": [ + [ + [ + "function" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_28206_7904", + "13_178823_63503", + "13_751959_805846" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-936", + "seg": [ + [ + [ + "函数", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型检查、类型推断以及限制": { + "children": [ + { + "类型检查": { + "data": { + "uuid": "java-6-209", + "seg": [ + [ + [ + "类型", + "检查" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_214881_160044", + "13_234022_210324" + ] + } + } + } + } + }, + { + "同样的Lambda,不同的函数式接口": { + "data": { + "uuid": "java-6-210", + "seg": [ + [ + [ + "lambda", + "函数", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型推断": { + "data": { + "uuid": "java-6-211", + "seg": [ + [ + [ + "类型", + "推断" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750210_803106", + "13_7426044_53388781", + "13_57677_10508", + "13_648078_452125", + "13_1077959_1282401", + "13_169854_45953", + "13_26021_7107", + "13_3535533_23009406", + "13_222925_180088", + "13_7428678_53394729" + ] + } + } + } + } + }, + { + "使用局部变量": { + "data": { + "uuid": "java-6-212", + "seg": [ + [ + [ + "局部变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1057842_1254953", + "13_346202_351332", + "13_772407_835564" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-937", + "seg": [ + [ + [ + "类型", + "检查" + ], + [ + "类型", + "推断" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法引用": { + "children": [ + { + "管中窥豹": { + "data": { + "uuid": "java-6-213", + "seg": [ + [ + [ + "管中窥豹" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构造函数引用": { + "data": { + "uuid": "java-6-214", + "seg": [ + [ + [ + "构造函数", + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7440762_53416229", + "13_748549_800556", + "13_385498_422734", + "13_7423100_53382599", + "13_659048_472563", + "13_223673_182154", + "13_346224_351336", + "13_199360_117307", + "13_1061389_1259259", + "13_231382_202349" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-938", + "seg": [ + [ + [ + "方法", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复合Lambda表达式的有用方法": { + "children": [ + { + "比较器复合": { + "data": { + "uuid": "java-6-215", + "seg": [ + [ + [ + "器", + "复合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "谓词复合": { + "data": { + "uuid": "java-6-216", + "seg": [ + [ + [ + "谓词", + "复合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数复合": { + "data": { + "uuid": "java-6-217", + "seg": [ + [ + [ + "函数", + "复合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-939", + "seg": [ + [ + [ + "复合", + "lambda", + "表达式", + "有用", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数学中的类似思想": { + "children": [ + { + "积分": { + "data": { + "uuid": "java-6-218", + "seg": [ + [ + [ + "积分" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与Java 8的Lambda联系起来": { + "data": { + "uuid": "java-6-219", + "seg": [ + [ + [], + [ + "java", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-940", + "seg": [ + [ + [ + "数学", + "类似", + "思想" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_245064_235022" + ] + } + } + } + } + }, + { + "测试可见Lambda函数的行为": { + "data": { + "uuid": "java-5-941", + "seg": [ + [ + [ + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试使用Lambda的方法的行为": { + "data": { + "uuid": "java-5-942", + "seg": [ + [ + [ + "lambda", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将复杂的Lambda表达式分为不同的方法": { + "data": { + "uuid": "java-5-943", + "seg": [ + [ + [ + "lambda", + "表达式", + "分为", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745978_794705" + ] + } + } + } + } + }, + { + "高阶函数的测试": { + "data": { + "uuid": "java-5-944", + "seg": [ + [ + [ + "高阶", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-976", + "seg": [ + [ + [ + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-504", + "seg": [ + [ + [ + "基础知识" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_368969_395815" + ] + } + } + } + } + }, + { + "使用流进行函数式数据处理": { + "children": [ + { + "引入流": { + "children": [ + { + "流简介": { + "data": { + "uuid": "java-5-945", + "seg": [ + [ + [ + "流", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流操作": { + "children": [ + { + "中间操作": { + "data": { + "uuid": "java-6-220", + "seg": [ + [ + [ + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1084924_1291338", + "13_247130_240239", + "13_912205_1047366", + "13_7443745_53423994", + "13_664246_480917", + "13_7447535_53427523", + "13_384375_420724", + "13_377252_407707", + "13_742601_785145", + "13_751034_804660" + ] + } + } + } + } + }, + { + "终端操作": { + "data": { + "uuid": "java-6-221", + "seg": [ + [ + [ + "终端", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-946", + "seg": [ + [ + [ + "流", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "路线图": { + "data": { + "uuid": "java-5-947", + "seg": [ + [ + [ + "路线图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-977", + "seg": [ + [ + [ + "引入", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用流收集数据": { + "children": [ + { + "收集器简介": { + "children": [ + { + "收集器用作高级归约": { + "data": { + "uuid": "java-6-222", + "seg": [ + [ + [ + "收集器", + "用作", + "高级", + "归约" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7432783_53403147" + ] + } + } + } + } + }, + { + "预定义收集器": { + "data": { + "uuid": "java-6-223", + "seg": [ + [ + [ + "预定", + "义", + "收集器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-948", + "seg": [ + [ + [ + "收集器", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分组": { + "children": [ + { + "操作分组的元素": { + "data": { + "uuid": "java-6-224", + "seg": [ + [ + [ + "操作", + "分组", + "元素" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "多级分组": { + "data": { + "uuid": "java-6-225", + "seg": [ + [ + [ + "多级", + "分组" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_876880_1011795", + "13_645316_446972", + "13_371986_398940", + "13_7458816_53443582", + "13_7453002_53435550" + ] + } + } + } + } + }, + { + "按子组收集数据": { + "data": { + "uuid": "java-6-226", + "seg": [ + [ + [ + "按子", + "组", + "收集", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-949", + "seg": [ + [ + [ + "分组" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分区": { + "children": [ + { + "分区的优势": { + "data": { + "uuid": "java-6-227", + "seg": [ + [ + [ + "分区", + "优势" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_658117_471171", + "13_361667_379767", + "13_1051195_1249131" + ] + } + } + } + } + }, + { + "将数字按质数和非质数分区": { + "data": { + "uuid": "java-6-228", + "seg": [ + [ + [ + "数字", + "质数" + ], + [ + "质数", + "分区" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-950", + "seg": [ + [ + [ + "分区" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "收集器接口": { + "children": [ + { + "理解Collector接口声明的方法": { + "data": { + "uuid": "java-6-229", + "seg": [ + [ + [ + "理解", + "collector", + "接口", + "声明", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7463708_53449838" + ] + } + } + } + } + }, + { + "全部融合到一起": { + "data": { + "uuid": "java-6-230", + "seg": [ + [ + [ + "融合" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-951", + "seg": [ + [ + [ + "收集器", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "开发你自己的收集器以获得更好的性能": { + "children": [ + { + "仅用质数做除数": { + "data": { + "uuid": "java-6-231", + "seg": [ + [ + [ + "仅", + "质数", + "做", + "除数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "比较收集器的性能": { + "data": { + "uuid": "java-6-232", + "seg": [ + [ + [ + "收集器", + "性能" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_189956_89858", + "13_1056150_1253271", + "13_7455366_53441258" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-952", + "seg": [ + [ + [ + "开发", + "收集器", + "更好", + "性能" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-978", + "seg": [ + [ + [ + "流", + "收集", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-505", + "seg": [ + [ + [ + "流", + "函数", + "数据处理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "无所不在的Java": { + "children": [ + { + "用Optional取代null": { + "children": [ + { + "如何为缺失的值建模": { + "children": [ + { + "采用防御式检查减少NullPointerException": { + "data": { + "uuid": "java-6-233", + "seg": [ + [ + [ + "采用", + "防御", + "检查", + "减少", + "nullpointerexception" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他语言中null的替代品": { + "data": { + "uuid": "java-6-234", + "seg": [ + [ + [ + "语言", + "null", + "替代品" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_25284_6761", + "13_983220_1144536", + "13_199037_116173", + "13_7439827_53414678", + "13_1050348_1247473", + "13_206941_140187", + "13_184889_75476", + "13_742102_783465", + "13_763689_822279", + "13_207421_141519" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-953", + "seg": [ + [ + [ + "缺失", + "值", + "建模" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Optional类入门": { + "data": { + "uuid": "java-5-954", + "seg": [ + [ + [ + "optional", + "类", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用Optional的几种模式": { + "children": [ + { + "创建Optional对象": { + "data": { + "uuid": "java-6-235", + "seg": [ + [ + [ + "创建", + "optional", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用map从Optional对象中提取和转换值": { + "data": { + "uuid": "java-6-236", + "seg": [ + [ + [ + "map", + "optional", + "对象", + "提取" + ], + [ + "转换", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用flatMap链接Optional对象": { + "data": { + "uuid": "java-6-237", + "seg": [ + [ + [ + "flatmap", + "链接", + "optional", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操纵由Optional对象构成的Stream": { + "data": { + "uuid": "java-6-238", + "seg": [ + [ + [ + "操纵", + "optional", + "对象", + "stream" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "默认行为及解引用Optional对象": { + "data": { + "uuid": "java-6-239", + "seg": [ + [ + [ + "默认" + ], + [ + "解", + "引用", + "optional", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "两个Optional对象的组合": { + "data": { + "uuid": "java-6-240", + "seg": [ + [ + [ + "optional", + "对象", + "组合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1090920_1298034" + ] + } + } + } + } + }, + { + "使用filter剔除特定的值": { + "data": { + "uuid": "java-6-241", + "seg": [ + [ + [ + "filter", + "剔除", + "特定", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_238300_220031" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-955", + "seg": [ + [ + [ + "optional", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-979", + "seg": [ + [ + [ + "optional", + "取代", + "null" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java模块系统": { + "children": [ + { + "模块化的驱动力:软件的推理": { + "children": [ + { + "关注点分离": { + "data": { + "uuid": "java-6-242", + "seg": [ + [ + [ + "关注点", + "分离" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_703320_594723", + "13_1084552_1290946" + ] + } + } + } + } + }, + { + "信息隐藏": { + "data": { + "uuid": "java-6-243", + "seg": [ + [ + [ + "信息", + "隐藏" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_229750_198166" + ] + } + } + } + } + }, + { + "Java软件": { + "data": { + "uuid": "java-6-244", + "seg": [ + [ + [ + "java", + "软件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_258613_266921", + "13_1036983_1233720", + "13_207057_140505", + "13_258095_265515", + "13_201946_125716", + "13_220466_173115", + "13_1070163_1271495", + "13_746709_796685" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-956", + "seg": [ + [ + [ + "模块化", + "驱动力" + ] + ], + [ + [ + "软件", + "推理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Java模块系统开发应用": { + "children": [ + { + "从头开始搭建一个应用": { + "data": { + "uuid": "java-6-245", + "seg": [ + [ + [ + "从头开始", + "搭建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "细粒度和粗粒度的模块化": { + "data": { + "uuid": "java-6-246", + "seg": [ + [ + [ + "细粒度" + ], + [ + "粗粒度", + "模块化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java模块系统基础": { + "data": { + "uuid": "java-6-247", + "seg": [ + [ + [ + "java", + "模块", + "系统", + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_764657_823383", + "13_682806_537903", + "13_742415_784567", + "13_776348_851025", + "13_175024_55163", + "13_7443557_53420728", + "13_7430634_53397798", + "13_743766_788735", + "13_7448491_53428646", + "13_7437404_53410145" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-957", + "seg": [ + [ + [ + "java", + "模块", + "系统", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用多个模块": { + "children": [ + { + "exports子句": { + "data": { + "uuid": "java-6-248", + "seg": [ + [ + [ + "exports", + "子句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "requires子句": { + "data": { + "uuid": "java-6-249", + "seg": [ + [ + [ + "requires", + "子句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名": { + "data": { + "uuid": "java-6-250", + "seg": [ + [ + [ + "命名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_349438_357186" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-958", + "seg": [ + [ + [ + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1097162_1310334" + ] + } + } + } + } + }, + { + "编译及打包": { + "data": { + "uuid": "java-5-959", + "seg": [ + [ + [ + "编译" + ], + [ + "打包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7443311_53420396", + "13_743143_786819", + "13_380579_413678", + "13_251614_250316", + "13_719744_714428", + "13_366300_390617", + "13_647942_454157", + "13_7407598_53357594", + "13_678658_523331", + "13_748224_800054" + ] + } + } + } + } + }, + { + "自动模块": { + "data": { + "uuid": "java-5-960", + "seg": [ + [ + [ + "自动", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_195732_108068" + ] + } + } + } + } + }, + { + "模块声明及子句": { + "children": [ + { + "requires": { + "data": { + "uuid": "java-6-251", + "seg": [ + [ + [ + "requires" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "exports": { + "data": { + "uuid": "java-6-252", + "seg": [ + [ + [ + "exports" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "requires的传递": { + "data": { + "uuid": "java-6-253", + "seg": [ + [ + [ + "requires", + "传递" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "exports to": { + "data": { + "uuid": "java-6-254", + "seg": [ + [ + [ + "exports", + "to" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_157466_20418", + "13_742450_784689", + "13_346515_351832", + "13_7413751_53365957" + ] + } + } + } + } + }, + { + "open和opens": { + "data": { + "uuid": "java-6-255", + "seg": [ + [ + [ + "open" + ], + [ + "opens" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1069734_1271031", + "13_197234_111011", + "13_770995_834897", + "13_759826_817158" + ] + } + } + } + } + }, + { + "uses和provides": { + "data": { + "uuid": "java-6-256", + "seg": [ + [ + [ + "uses" + ], + [ + "provides" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-961", + "seg": [ + [ + [ + "模块", + "声明" + ], + [ + "子句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-980", + "seg": [ + [ + [ + "java", + "模块", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-506", + "seg": [ + [ + [ + "无所不在", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提升Java的并发性": { + "children": [ + { + "CompletableFuture及反应式编程背后的概念": { + "children": [ + { + "为支持并发而不断演进的Java": { + "children": [ + { + "其他的线程抽象:非嵌套方法调用": { + "data": { + "uuid": "java-6-257", + "seg": [ + [ + [ + "线程", + "抽象" + ] + ], + [ + [ + "嵌套", + "方法", + "调用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "你希望线程为你带来什么": { + "data": { + "uuid": "java-6-258", + "seg": [ + [ + [ + "希望", + "线程", + "带来" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7445492_53424136", + "13_7445539_53424185", + "13_667884_487442", + "13_350156_358467", + "13_7410132_53360872", + "13_372493_400030", + "13_716924_710038", + "13_233844_209944", + "13_7434377_53404790", + "13_7398832_53345432" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-962", + "seg": [ + [ + [ + "支持", + "并发", + "演进", + "java" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步及异步API": { + "children": [ + { + "Future风格的API": { + "data": { + "uuid": "java-6-259", + "seg": [ + [ + [ + "future", + "风格", + "api" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_29648_9042" + ] + } + } + } + } + }, + { + "反应式风格的API": { + "data": { + "uuid": "java-6-260", + "seg": [ + [ + [ + "反应式", + "风格", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "有害的睡眠及其他阻塞式操作": { + "data": { + "uuid": "java-6-261", + "seg": [ + [ + [ + "有害", + "睡眠", + "阻塞", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "如何使用异步API进行异常处理": { + "data": { + "uuid": "java-6-262", + "seg": [ + [ + [ + "异步", + "api", + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-963", + "seg": [ + [ + [ + "同步" + ], + [ + "异步", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "“线框–管道”模型": { + "data": { + "uuid": "java-5-964", + "seg": [ + [ + [ + "线框", + "–", + "管道", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "“发布–订阅”以及反应式编程": { + "children": [ + { + "背压": { + "data": { + "uuid": "java-6-263", + "seg": [ + [ + [ + "背压" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一种简单的真实背压": { + "data": { + "uuid": "java-6-264", + "seg": [ + [ + [ + "真实", + "背压" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-965", + "seg": [ + [ + [ + "发布", + "–", + "订阅" + ], + [ + "反应式", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "反应式系统和反应式编程": { + "data": { + "uuid": "java-5-966", + "seg": [ + [ + [ + "反应式", + "系统" + ], + [ + "反应式", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-981", + "seg": [ + [ + [ + "completablefuture" + ], + [ + "反应式", + "编程", + "背后", + "概念" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CompletableFuture:组合式异步编程": { + "children": [ + { + "实现异步API": { + "children": [ + { + "将同步方法转换为异步方法": { + "data": { + "uuid": "java-6-265", + "seg": [ + [ + [ + "同步", + "方法", + "转换", + "异步" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_235356_214126", + "13_188337_119958" + ] + } + } + } + } + }, + { + "错误处理": { + "data": { + "uuid": "java-6-266", + "seg": [ + [ + [ + "错误处理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-967", + "seg": [ + [ + [ + "异步", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "让你的代码免受阻塞之苦": { + "children": [ + { + "使用并行流对请求进行并行操作": { + "data": { + "uuid": "java-6-267", + "seg": [ + [ + [ + "并行", + "流对", + "并行操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用CompletableFuture发起异步请求": { + "data": { + "uuid": "java-6-268", + "seg": [ + [ + [ + "completablefuture", + "发起", + "异步" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7431887_53401177" + ] + } + } + } + } + }, + { + "寻找更好的方案": { + "data": { + "uuid": "java-6-269", + "seg": [ + [ + [ + "寻找", + "更好", + "方案" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_759847_816877", + "13_7435691_53406579", + "13_362483_381825" + ] + } + } + } + } + }, + { + "使用定制的执行器": { + "data": { + "uuid": "java-6-270", + "seg": [ + [ + [ + "定制", + "执行器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-968", + "seg": [ + [ + [ + "免受", + "阻塞", + "苦" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对多个异步任务进行流水线操作": { + "children": [ + { + "实现折扣服务": { + "data": { + "uuid": "java-6-271", + "seg": [ + [ + [ + "折扣", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Discount服务": { + "data": { + "uuid": "java-6-272", + "seg": [ + [ + [ + "discount", + "服务" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_4646844_29330776", + "13_384570_421074", + "13_699446_587577", + "13_155285_15085", + "13_771786_834459", + "13_1094687_1305134" + ] + } + } + } + } + }, + { + "构造同步和异步操作": { + "data": { + "uuid": "java-6-273", + "seg": [ + [ + [ + "构造", + "同步" + ], + [ + "异步", + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_743745_788669", + "13_189494_88468", + "13_1079267_1284276" + ] + } + } + } + } + }, + { + "将两个CompletableFuture对象整合起来,无论它们是否存在依赖": { + "data": { + "uuid": "java-6-274", + "seg": [ + [ + [ + "completablefuture", + "对象", + "整合", + "依赖" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对Future和Completable-Future的回顾": { + "data": { + "uuid": "java-6-275", + "seg": [ + [ + [ + "future" + ], + [ + "completable", + "future", + "回顾" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高效地使用超时机制": { + "data": { + "uuid": "java-6-276", + "seg": [ + [ + [ + "高效", + "超时", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-969", + "seg": [ + [ + [ + "异步", + "流水线", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "响应CompletableFuture的completion事件": { + "children": [ + { + "对最佳价格查询器应用的优化": { + "data": { + "uuid": "java-6-277", + "seg": [ + [ + [ + "价格", + "查询器", + "优化" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_356492_372468" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-970", + "seg": [ + [ + [ + "响应", + "completablefuture", + "completion", + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-982", + "seg": [ + [ + [ + "completablefuture" + ] + ], + [ + [ + "组合式", + "异步", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "反应式编程": { + "children": [ + { + "反应式宣言": { + "children": [ + { + "应用层的反应式编程": { + "data": { + "uuid": "java-6-278", + "seg": [ + [ + [ + "应用层", + "反应式", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "反应式系统": { + "data": { + "uuid": "java-6-279", + "seg": [ + [ + [ + "反应式", + "系统" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-971", + "seg": [ + [ + [ + "反应式", + "宣言" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "反应式流以及Flow API": { + "children": [ + { + "Flow类": { + "data": { + "uuid": "java-6-280", + "seg": [ + [ + [ + "flow", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建你的第一个反应式应用": { + "data": { + "uuid": "java-6-281", + "seg": [ + [ + [ + "创建", + "反应式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Processor转换数据": { + "data": { + "uuid": "java-6-282", + "seg": [ + [ + [ + "processor", + "转换", + "数据" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_363951_384958" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-972", + "seg": [ + [ + [ + "反应式", + "流" + ], + [ + "flow", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用反应式库RxJava": { + "children": [ + { + "转换及整合多个Observable": { + "data": { + "uuid": "java-6-283", + "seg": [ + [ + [ + "转换" + ], + [ + "整合", + "observable" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_688779_555441", + "13_1097505_1311052", + "13_7412385_53363719" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-973", + "seg": [ + [ + [ + "反应式", + "库", + "rxjava" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_349950_360059", + "13_358436_376547", + "13_695834_578849" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-983", + "seg": [ + [ + [ + "反应式", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-507", + "seg": [ + [ + [ + "提升", + "java", + "并发", + "性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "函数式编程以及Java未来的演进": { + "children": [ + { + "函数式的思考": { + "children": [ + { + "实现和维护系统": { + "children": [ + { + "声明式编程": { + "data": { + "uuid": "java-6-284", + "seg": [ + [ + [ + "声明", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-974", + "seg": [ + [ + [], + [ + "维护", + "系统" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_385976_423702" + ] + } + } + } + } + }, + { + "什么是函数式编程": { + "children": [ + { + "函数式Java编程": { + "data": { + "uuid": "java-6-285", + "seg": [ + [ + [ + "函数", + "java", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_358541_376803", + "13_206014_137496", + "13_193631_99179", + "13_337545_334614", + "13_719875_714151", + "13_376704_406844", + "13_7452070_53435431", + "13_7451090_53432248", + "13_7463405_53449277", + "13_199626_118184" + ] + } + } + } + } + }, + { + "引用透明性": { + "data": { + "uuid": "java-6-286", + "seg": [ + [ + [ + "引用", + "透明性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_159764_25766" + ] + } + } + } + } + }, + { + "面向对象的编程和函数式编程的对比": { + "data": { + "uuid": "java-6-287", + "seg": [ + [ + [ + "面向对象", + "编程" + ], + [ + "函数", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7452687_53434840" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-975", + "seg": [ + [ + [ + "函数", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "递归和迭代": { + "data": { + "uuid": "java-5-976", + "seg": [ + [ + [ + "递归" + ], + [ + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-984", + "seg": [ + [ + [ + "函数", + "思考" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1079305_1283905" + ] + } + } + } + } + }, + { + "函数式编程的技巧": { + "children": [ + { + "无处不在的函数": { + "children": [ + { + "柯里化": { + "data": { + "uuid": "java-6-288", + "seg": [ + [ + [ + "柯里化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-977", + "seg": [ + [ + [ + "无处不在", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持久化数据结构": { + "children": [ + { + "破坏式更新和函数式更新的比较": { + "data": { + "uuid": "java-6-289", + "seg": [ + [ + [ + "破坏", + "更新" + ], + [ + "函数", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "另一个使用Tree的例子": { + "data": { + "uuid": "java-6-290", + "seg": [ + [ + [ + "tree", + "例子" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_262990_276738", + "13_366203_390389", + "13_831717_931527", + "13_232629_205924", + "13_718915_712801" + ] + } + } + } + } + }, + { + "采用函数式的方法": { + "data": { + "uuid": "java-6-291", + "seg": [ + [ + [ + "采用", + "函数", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_657352_469941" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-978", + "seg": [ + [ + [ + "持久", + "化", + "数据结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Stream的延迟计算": { + "children": [ + { + "自定义的Stream": { + "data": { + "uuid": "java-6-292", + "seg": [ + [ + [ + "自定义", + "stream" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_696884_581370", + "13_7413174_53365011", + "13_1097711_1311534", + "13_695970_579109", + "13_695766_578724", + "13_1091358_1298736", + "13_774044_837962", + "13_748447_800429" + ] + } + } + } + } + }, + { + "创建你自己的延迟列表": { + "data": { + "uuid": "java-6-293", + "seg": [ + [ + [ + "创建", + "延迟", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-979", + "seg": [ + [ + [ + "stream", + "延迟", + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模式匹配": { + "children": [ + { + "访问者模式": { + "data": { + "uuid": "java-6-294", + "seg": [ + [ + [ + "访问者", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用模式匹配力挽狂澜": { + "data": { + "uuid": "java-6-295", + "seg": [ + [ + [ + "模式匹配", + "力挽狂澜" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-980", + "seg": [ + [ + [ + "模式匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "杂项": { + "children": [ + { + "缓存或记忆表": { + "data": { + "uuid": "java-6-296", + "seg": [ + [ + [ + "缓存", + "记忆", + "表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1049430_1246898", + "13_713793_705333", + "13_374442_403326", + "13_4645910_29329149" + ] + } + } + } + } + }, + { + "“返回同样的对象”意味着什么": { + "data": { + "uuid": "java-6-297", + "seg": [ + [ + [ + "返回", + "对象", + "意味着" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-981", + "seg": [ + [ + [ + "杂项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-985", + "seg": [ + [ + [ + "函数", + "编程", + "技巧" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "结论以及Java的未来": { + "children": [ + { + "回顾Java 8的语言特性": { + "data": { + "uuid": "java-5-982", + "seg": [ + [ + [ + "回顾", + "java", + "语言", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 10的局部变量类型推断": { + "data": { + "uuid": "java-5-983", + "seg": [ + [ + [ + "java", + "局部变量", + "类型", + "推断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java的未来": { + "children": [ + { + "声明处型变": { + "data": { + "uuid": "java-6-298", + "seg": [ + [ + [ + "声明", + "处型", + "变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模式匹配": { + "data": { + "uuid": "java-6-299", + "seg": [ + [ + [ + "模式匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更加丰富的泛型形式": { + "data": { + "uuid": "java-6-300", + "seg": [ + [ + [ + "泛型", + "形式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对不变性的更深层支持": { + "data": { + "uuid": "java-6-301", + "seg": [ + [ + [ + "不变性", + "深层", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "值类型": { + "data": { + "uuid": "java-6-302", + "seg": [ + [ + [ + "值", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_229518_197480", + "13_645076_446234", + "13_1093565_1303127", + "13_666284_484397", + "13_373565_401698", + "13_7458323_53442897", + "13_5363161_35294051", + "13_774061_837954", + "13_836895_943162", + "13_358429_376594" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-984", + "seg": [ + [ + [ + "java", + "未来" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_219529_170918", + "13_7424350_53390473" + ] + } + } + } + } + }, + { + "让Java发展得更快": { + "data": { + "uuid": "java-5-985", + "seg": [ + [ + [ + "java", + "发展", + "更快" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "写在最后的话": { + "data": { + "uuid": "java-5-986", + "seg": [ + [ + [ + "写" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_201530_124339", + "13_7442424_53419286", + "13_7455228_53438133", + "13_220119_172320", + "13_1056810_1253932", + "13_377952_408733", + "13_242074_229218", + "13_707693_640934", + "13_7409047_53359265", + "13_231917_203832" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-986", + "seg": [ + [ + [ + "结论" + ], + [ + "java", + "未来" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Lambda基础": { + "data": { + "uuid": "java-4-987", + "seg": [ + [ + [ + "lambda", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Stream": { + "children": [ + { + "创建Stream": { + "data": { + "uuid": "java-5-987", + "seg": [ + [ + [ + "创建", + "stream" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_751296_804900", + "13_922741_1058662", + "13_720380_714851" + ] + } + } + } + } + }, + { + "使用filter": { + "data": { + "uuid": "java-5-988", + "seg": [ + [ + [ + "filter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390234_431594", + "13_7447600_53427528", + "13_744175_789759", + "13_941544_1078168" + ] + } + } + } + } + }, + { + "使用reduce": { + "data": { + "uuid": "java-5-989", + "seg": [ + [ + [ + "reduce" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输出集合": { + "data": { + "uuid": "java-5-990", + "seg": [ + [ + [ + "输出", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7448801_53428948", + "13_7464711_53451249" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-988", + "seg": [ + [ + [ + "stream" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_6205997_43191271" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-508", + "seg": [ + [ + [ + "函数", + "编程" + ], + [ + "java", + "未来", + "演进" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java 8的流库": { + "children": [ + { + "从迭代到流的操作": { + "data": { + "uuid": "java-4-989", + "seg": [ + [ + [ + "迭代", + "流", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流的创建": { + "data": { + "uuid": "java-4-990", + "seg": [ + [ + [ + "流", + "创建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "f?ilter、map和f?latMap方法": { + "data": { + "uuid": "java-4-991", + "seg": [ + [ + [ + "f", + "ilter" + ], + [ + "map" + ], + [ + "f", + "latmap", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抽取子流和组合流": { + "data": { + "uuid": "java-4-992", + "seg": [ + [ + [ + "抽取", + "子流" + ], + [ + "组合", + "流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他的流转换": { + "data": { + "uuid": "java-4-993", + "seg": [ + [ + [ + "流", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单约简": { + "data": { + "uuid": "java-4-994", + "seg": [ + [ + [ + "约简" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Optional类型": { + "children": [ + { + "获取Optional值": { + "data": { + "uuid": "java-5-991", + "seg": [ + [ + [ + "获取", + "optional", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_188040_84858", + "13_7403461_53351942", + "13_7412945_53364643", + "13_267727_286914", + "13_379052_410855", + "13_193721_99509" + ] + } + } + } + } + }, + { + "消费Optional值": { + "data": { + "uuid": "java-5-992", + "seg": [ + [ + [ + "消费", + "optional", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管道化Optional值": { + "data": { + "uuid": "java-5-993", + "seg": [ + [ + [ + "管道化", + "optional", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不适合使用Optional值的方式": { + "data": { + "uuid": "java-5-994", + "seg": [ + [ + [ + "适合", + "optional", + "值", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建Optional值": { + "data": { + "uuid": "java-5-995", + "seg": [ + [ + [ + "创建", + "optional", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用f?latMap构建Optional值的函数": { + "data": { + "uuid": "java-5-996", + "seg": [ + [ + [ + "f", + "latmap", + "构建", + "optional", + "值", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将Optional转换为流": { + "data": { + "uuid": "java-5-997", + "seg": [ + [ + [ + "optional", + "转换", + "流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-995", + "seg": [ + [ + [ + "optional", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "收集到映射表中": { + "data": { + "uuid": "java-4-996", + "seg": [ + [ + [ + "收集", + "映射", + "表中" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "下游收集器": { + "data": { + "uuid": "java-4-997", + "seg": [ + [ + [ + "下游", + "收集器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "约简操作": { + "data": { + "uuid": "java-4-998", + "seg": [ + [ + [ + "约简", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本类型流": { + "data": { + "uuid": "java-4-999", + "seg": [ + [ + [ + "类型", + "流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-509", + "seg": [ + [ + [ + "java", + "流库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输入与输出": { + "children": [ + { + "输入/输出流": { + "children": [ + { + "读写字节": { + "data": { + "uuid": "java-5-998", + "seg": [ + [ + [ + "读写", + "字节" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "完整的流家族": { + "data": { + "uuid": "java-5-999", + "seg": [ + [ + [ + "流", + "家族" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "组合输入/输出流过滤器": { + "data": { + "uuid": "java-5-1000", + "seg": [ + [ + [ + "组合", + "输入", + "输出", + "流", + "过滤器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文本输入与输出": { + "data": { + "uuid": "java-5-1001", + "seg": [ + [ + [ + "文本", + "输入" + ], + [ + "输出" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_851826_976247", + "13_1052979_1250336", + "13_7460720_53445808", + "13_7434328_53404692", + "13_7429394_53396256", + "13_7442527_53419401", + "13_7463161_53448940", + "13_7406276_53355667", + "13_374740_403825", + "13_349517_357358" + ] + } + } + } + } + }, + { + "如何写出文本输出": { + "data": { + "uuid": "java-5-1002", + "seg": [ + [ + [ + "写出", + "文本", + "输出" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7465828_53452982", + "13_750512_803600", + "13_704000_595673", + "13_74530_12293", + "13_358653_377069", + "13_203521_130781", + "13_7451758_53433212", + "13_1050206_1247506", + "13_748732_800794", + "13_7452504_53434477" + ] + } + } + } + } + }, + { + "如何读入文本输入": { + "data": { + "uuid": "java-5-1003", + "seg": [ + [ + [ + "读入", + "文本", + "输入" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1054632_1251820", + "13_7454835_53437539", + "13_247527_241076", + "13_1049035_1246429", + "13_7424069_53384535", + "13_243447_231921", + "13_645371_446771", + "13_753503_808069", + "13_768949_829488", + "13_7437132_53409744" + ] + } + } + } + } + }, + { + "以文本格式存储对象": { + "data": { + "uuid": "java-5-1004", + "seg": [ + [ + [ + "文本格式", + "存储", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "字符编码方式": { + "data": { + "uuid": "java-5-1005", + "seg": [ + [ + [ + "字符", + "编码方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1000", + "seg": [ + [ + [ + "输入", + "输出", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "读写二进制数据": { + "children": [ + { + "DataInput和DataOutput接口": { + "data": { + "uuid": "java-5-1006", + "seg": [ + [ + [ + "datainput" + ], + [ + "dataoutput", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "随机访问文件": { + "data": { + "uuid": "java-5-1007", + "seg": [ + [ + [ + "随机", + "访问", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7441729_53418009" + ] + } + } + } + } + }, + { + "ZIP文档": { + "data": { + "uuid": "java-5-1008", + "seg": [ + [ + [ + "zip", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1001", + "seg": [ + [ + [ + "读写", + "二进制", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_189357_88071" + ] + } + } + } + } + }, + { + "对象输入/输出流与序列化": { + "children": [ + { + "保存和加载序列化对象": { + "data": { + "uuid": "java-5-1009", + "seg": [ + [ + [ + "保存" + ], + [ + "加载", + "序列化", + "对象" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_348086_354476", + "13_642574_442017" + ] + } + } + } + } + }, + { + "理解对象序列化的文件格式": { + "data": { + "uuid": "java-5-1010", + "seg": [ + [ + [ + "理解", + "对象", + "序列化", + "文件格式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "修改默认的序列化机制": { + "data": { + "uuid": "java-5-1011", + "seg": [ + [ + [ + "修改", + "默认", + "序列化", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "序列化单例和类型安全的枚举": { + "data": { + "uuid": "java-5-1012", + "seg": [ + [ + [ + "序列化", + "单例" + ], + [ + "类型", + "枚举" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "版本管理": { + "data": { + "uuid": "java-5-1013", + "seg": [ + [ + [ + "版本", + "管理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7457694_53442106" + ] + } + } + } + } + }, + { + "为克隆使用序列化": { + "data": { + "uuid": "java-5-1014", + "seg": [ + [ + [ + "克隆", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1002", + "seg": [ + [ + [ + "对象", + "输入", + "输出", + "流" + ], + [ + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作文件": { + "children": [ + { + "Path": { + "data": { + "uuid": "java-5-1015", + "seg": [ + [ + [ + "path" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_157665_20828", + "13_650009_457307" + ] + } + } + } + } + }, + { + "读写文件": { + "data": { + "uuid": "java-5-1016", + "seg": [ + [ + [ + "读写", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7409698_53360139", + "13_189485_88427", + "13_747252_798329", + "13_942855_1081693", + "13_1048872_1246273", + "13_247704_241468", + "13_7414850_53367936", + "13_244596_234161", + "13_743742_788652", + "13_686959_549631" + ] + } + } + } + } + }, + { + "复制、移动和删除文件": { + "data": { + "uuid": "java-5-1017", + "seg": [ + [ + [ + "复制" + ], + [], + [ + "删除", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1073921_1276399" + ] + } + } + } + } + }, + { + "获取文件信息": { + "data": { + "uuid": "java-5-1018", + "seg": [ + [ + [ + "获取", + "文件", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_675123_507498", + "13_702936_593596", + "13_386125_424118", + "13_7459788_53444791", + "13_346448_351803", + "13_1093820_1303527", + "13_174985_55046", + "13_660628_475302", + "13_390993_433301", + "13_1067136_1267135" + ] + } + } + } + } + }, + { + "访问目录中的项": { + "data": { + "uuid": "java-5-1019", + "seg": [ + [ + [ + "访问", + "目录", + "项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用目录流": { + "data": { + "uuid": "java-5-1020", + "seg": [ + [ + [ + "目录", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ZIP文件系统": { + "data": { + "uuid": "java-5-1021", + "seg": [ + [ + [ + "zip", + "文件系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1003", + "seg": [ + [ + [ + "操作", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_217008_164816" + ] + } + } + } + } + }, + { + "内存映射文件": { + "children": [ + { + "内存映射文件的性能": { + "data": { + "uuid": "java-5-1022", + "seg": [ + [ + [ + "内存", + "映射", + "文件", + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓冲区数据结构": { + "data": { + "uuid": "java-5-1023", + "seg": [ + [ + [ + "缓冲区", + "数据结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1004", + "seg": [ + [ + [ + "内存", + "映射", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件加锁机制": { + "data": { + "uuid": "java-4-1005", + "seg": [ + [ + [ + "文件", + "加锁", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-510", + "seg": [ + [ + [ + "输入" + ], + [ + "输出" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_698301_585151" + ] + } + } + } + } + }, + { + "XML": { + "children": [ + { + "XML概述": { + "data": { + "uuid": "java-4-1006", + "seg": [ + [ + [ + "xml", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XML文档的结构": { + "data": { + "uuid": "java-4-1007", + "seg": [ + [ + [ + "xml", + "文档", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解析XML文档": { + "data": { + "uuid": "java-4-1008", + "seg": [ + [ + [ + "解析", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_199008_116093", + "13_802362_896857", + "13_418788_437441", + "13_354443_366832" + ] + } + } + } + } + }, + { + "验证XML文档": { + "children": [ + { + "文档类型定义": { + "data": { + "uuid": "java-5-1024", + "seg": [ + [ + [ + "文档", + "类型定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XML Schema": { + "data": { + "uuid": "java-5-1025", + "seg": [ + [ + [ + "xml", + "schema" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_960150_1111759", + "13_721_1317", + "13_358012_375578", + "13_24927_6584", + "13_226527_189213", + "13_11183_5231", + "13_1558_2549", + "13_773858_837675", + "13_388251_427957", + "13_3298_4212" + ] + } + } + } + } + }, + { + "一个实践示例": { + "data": { + "uuid": "java-5-1026", + "seg": [ + [ + [ + "实践", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1009", + "seg": [ + [ + [ + "验证", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用XPath来定位信息": { + "data": { + "uuid": "java-4-1010", + "seg": [ + [ + [ + "xpath", + "定位", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_708446_668447" + ] + } + } + } + } + }, + { + "使用命名空间": { + "data": { + "uuid": "java-4-1011", + "seg": [ + [ + [ + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223881_182422" + ] + } + } + } + } + }, + { + "流机制解析器": { + "children": [ + { + "使用SAX解析器": { + "data": { + "uuid": "java-5-1027", + "seg": [ + [ + [ + "sax", + "解析器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用StAX解析器": { + "data": { + "uuid": "java-5-1028", + "seg": [ + [ + [ + "stax", + "解析器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1012", + "seg": [ + [ + [ + "流", + "机制", + "解析器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "生成XML文档": { + "children": [ + { + "不带命名空间的文档": { + "data": { + "uuid": "java-5-1029", + "seg": [ + [ + [ + "带", + "命名", + "空间", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "带命名空间的文档": { + "data": { + "uuid": "java-5-1030", + "seg": [ + [ + [ + "带", + "命名", + "空间", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "写出文档": { + "data": { + "uuid": "java-5-1031", + "seg": [ + [ + [ + "写出", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_355574_369841", + "13_195333_104941", + "13_1094746_1305235", + "13_205133_136409", + "13_389028_429237", + "13_362122_383574", + "13_246564_238829", + "13_7441032_53416812", + "13_1086889_1293651", + "13_764813_823611" + ] + } + } + } + } + }, + { + "使用StAX写出XML文档": { + "data": { + "uuid": "java-5-1032", + "seg": [ + [ + [ + "stax", + "写出", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_233993_212496", + "13_212188_153398" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1013", + "seg": [ + [ + [ + "生成", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XSL转换": { + "data": { + "uuid": "java-4-1014", + "seg": [ + [ + [ + "xsl", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-511", + "seg": [ + [ + [ + "xml" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络": { + "children": [ + { + "连接到服务器": { + "children": [ + { + "使用telnet": { + "data": { + "uuid": "java-5-1033", + "seg": [ + [ + [ + "telnet" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_865786_995317" + ] + } + } + } + } + }, + { + "用Java连接到服务器": { + "data": { + "uuid": "java-5-1034", + "seg": [ + [ + [ + "java", + "连接", + "服务器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_710219_668209", + "13_380694_413694", + "13_676147_514194", + "13_1051719_1249048", + "13_7418112_53374007" + ] + } + } + } + } + }, + { + "套接字超时": { + "data": { + "uuid": "java-5-1035", + "seg": [ + [ + [ + "套", + "接字", + "超时" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "因特网地址": { + "data": { + "uuid": "java-5-1036", + "seg": [ + [ + [ + "因特网", + "地址" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_160176_26859" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1015", + "seg": [ + [ + [ + "连接", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "实现服务器": { + "children": [ + { + "服务器套接字": { + "data": { + "uuid": "java-5-1037", + "seg": [ + [ + [ + "服务器", + "套", + "接字" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_275124_302875", + "13_385643_423013", + "13_670343_492936", + "13_660584_475186", + "13_653633_462631", + "13_23239_7845", + "13_204464_133295", + "13_1101428_1315942", + "13_663756_480313", + "13_378685_410194" + ] + } + } + } + } + }, + { + "为多个客户端服务": { + "data": { + "uuid": "java-5-1038", + "seg": [ + [ + [ + "客户端", + "服务" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7415218_53368604", + "13_7420135_53395814", + "13_212346_153649" + ] + } + } + } + } + }, + { + "半关闭": { + "data": { + "uuid": "java-5-1039", + "seg": [ + [ + [ + "关闭" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_704331_596443", + "13_1049440_1246913", + "13_978680_1140252" + ] + } + } + } + } + }, + { + "可中断套接字": { + "data": { + "uuid": "java-5-1040", + "seg": [ + [ + [ + "中断", + "套", + "接字" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1016", + "seg": [ + [ + [ + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "获取Web数据": { + "children": [ + { + "URL和URI": { + "data": { + "uuid": "java-5-1041", + "seg": [ + [ + [ + "url" + ], + [ + "uri" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_756982_812301", + "13_7415611_53369101" + ] + } + } + } + } + }, + { + "使用URLConnection获取信息": { + "data": { + "uuid": "java-5-1042", + "seg": [ + [ + [ + "urlconnection", + "获取信息" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7431451_53399787" + ] + } + } + } + } + }, + { + "提交表单数据": { + "data": { + "uuid": "java-5-1043", + "seg": [ + [ + [ + "提交", + "表单", + "数据" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_190721_91509", + "13_761661_819523", + "13_371784_399180", + "13_183166_69784", + "13_210630_149822", + "13_656996_469236", + "13_681810_535069", + "13_183565_70937", + "13_165175_39404", + "13_378812_410424" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1017", + "seg": [ + [ + [ + "获取", + "web", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP客户端": { + "data": { + "uuid": "java-4-1018", + "seg": [ + [ + [ + "http", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发送E-mail": { + "data": { + "uuid": "java-4-1019", + "seg": [ + [ + [ + "发送", + "e", + "mail" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_705201_607232", + "13_744087_789554", + "13_7403090_53351326", + "13_881844_1019844", + "13_201380_126425" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-512", + "seg": [ + [ + [ + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库编程": { + "children": [ + { + "JDBC的设计": { + "children": [ + { + "JDBC驱动程序类型": { + "data": { + "uuid": "java-5-1044", + "seg": [ + [ + [ + "jdbc", + "驱动程序", + "类型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "JDBC的典型用法": { + "data": { + "uuid": "java-5-1045", + "seg": [ + [ + [ + "jdbc", + "典型", + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1020", + "seg": [ + [ + [ + "jdbc", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "结构化查询语言": { + "data": { + "uuid": "java-4-1021", + "seg": [ + [ + [ + "结构化", + "查询语言" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "JDBC配置": { + "children": [ + { + "数据库URL": { + "data": { + "uuid": "java-5-1046", + "seg": [ + [ + [ + "数据库", + "url" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "驱动程序JAR文件": { + "data": { + "uuid": "java-5-1047", + "seg": [ + [ + [ + "驱动程序", + "jar", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动数据库": { + "data": { + "uuid": "java-5-1048", + "seg": [ + [ + [ + "启动", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "注册驱动器类": { + "data": { + "uuid": "java-5-1049", + "seg": [ + [ + [ + "注册", + "驱动器", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接到数据库": { + "data": { + "uuid": "java-5-1050", + "seg": [ + [ + [ + "连接", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_193319_98364", + "13_1090242_1296984", + "13_7412176_53363404", + "13_275101_302700", + "13_1086682_1293635", + "13_213918_157382", + "13_232437_205366", + "13_209012_146499", + "13_1050858_1247979", + "13_219163_169913" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1022", + "seg": [ + [ + [ + "jdbc", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JDBC语句": { + "children": [ + { + "执行SQL语句": { + "data": { + "uuid": "java-5-1051", + "seg": [ + [ + [ + "执行", + "sql", + "语句" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7442229_53419044", + "13_750812_804100", + "13_7405731_53355138", + "13_901323_1037072", + "13_7428235_53393696", + "13_954465_1098402", + "13_724211_743092", + "13_187979_83666", + "13_7447694_53427613", + "13_228231_193906" + ] + } + } + } + } + }, + { + "管理连接、语句和结果集": { + "data": { + "uuid": "java-5-1052", + "seg": [ + [ + [ + "管理", + "连接" + ], + [ + "语句" + ], + [ + "集" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457796_53442266" + ] + } + } + } + } + }, + { + "分析SQL异常": { + "data": { + "uuid": "java-5-1053", + "seg": [ + [ + [ + "分析", + "sql", + "异常" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7425877_53387796" + ] + } + } + } + } + }, + { + "组装数据库": { + "data": { + "uuid": "java-5-1054", + "seg": [ + [ + [ + "组装", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1023", + "seg": [ + [ + [ + "jdbc", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "执行查询操作": { + "children": [ + { + "预备语句": { + "data": { + "uuid": "java-5-1055", + "seg": [ + [ + [ + "预备", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读写LOB": { + "data": { + "uuid": "java-5-1056", + "seg": [ + [ + [ + "读写", + "lob" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SQL转义": { + "data": { + "uuid": "java-5-1057", + "seg": [ + [ + [ + "sql", + "转义" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_770802_832849", + "13_4645575_29328361", + "13_1096468_1308740", + "13_4645316_29327787", + "13_744009_789397", + "13_1066759_1266523" + ] + } + } + } + } + }, + { + "多结果集": { + "data": { + "uuid": "java-5-1058", + "seg": [ + [ + [ + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取自动生成的键": { + "data": { + "uuid": "java-5-1059", + "seg": [ + [ + [ + "获取", + "自动", + "生成", + "键" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_685898_546596", + "13_356297_371721", + "13_387984_427521", + "13_685858_546514", + "13_363130_383005", + "13_7446757_53426287" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1024", + "seg": [ + [ + [ + "执行", + "查询", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_731704_801319", + "13_651277_458522" + ] + } + } + } + } + }, + { + "可滚动和可更新的结果集": { + "children": [ + { + "可滚动的结果集": { + "data": { + "uuid": "java-5-1060", + "seg": [ + [ + [ + "滚动", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可更新的结果集": { + "data": { + "uuid": "java-5-1061", + "seg": [ + [ + [ + "更新", + "集" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_358936_377893", + "13_651511_458802", + "13_749182_801606", + "13_1399_2297", + "13_697139_581885", + "13_1086971_1293706", + "13_363338_392222", + "13_358596_376935", + "13_670087_492286" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1025", + "seg": [ + [ + [ + "滚动" + ], + [ + "更新", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "行集": { + "children": [ + { + "构建行集": { + "data": { + "uuid": "java-5-1062", + "seg": [ + [ + [ + "构建", + "行集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "被缓存的行集": { + "data": { + "uuid": "java-5-1063", + "seg": [ + [ + [ + "缓存", + "行集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1026", + "seg": [ + [ + [ + "行集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元数据": { + "data": { + "uuid": "java-4-1027", + "seg": [ + [ + [ + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_363936_384924", + "13_7419117_53376808", + "13_681852_535243", + "13_202721_128149" + ] + } + } + } + } + }, + { + "事务": { + "children": [ + { + "用JDBC对事务编程": { + "data": { + "uuid": "java-5-1064", + "seg": [ + [ + [ + "jdbc", + "事务", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7423409_53383373", + "13_829745_930046", + "13_946995_1086470" + ] + } + } + } + } + }, + { + "批量更新": { + "data": { + "uuid": "java-5-1065", + "seg": [ + [ + [ + "批量", + "更新" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7431699_53400239" + ] + } + } + } + } + }, + { + "高级SQL类型": { + "data": { + "uuid": "java-5-1066", + "seg": [ + [ + [ + "高级", + "sql", + "类型" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_821142_917248", + "13_687415_552258" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1028", + "seg": [ + [ + [ + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web与企业应用中的连接管理": { + "data": { + "uuid": "java-4-1029", + "seg": [ + [ + [ + "web" + ], + [ + "企业应用", + "连接", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-513", + "seg": [ + [ + [ + "数据库", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "国际化": { + "children": [ + { + "locale": { + "children": [ + { + "指定locale": { + "data": { + "uuid": "java-5-1067", + "seg": [ + [ + [ + "指定", + "locale" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_195043_104061", + "13_756290_811477" + ] + } + } + } + } + }, + { + "默认locale": { + "data": { + "uuid": "java-5-1068", + "seg": [ + [ + [ + "默认", + "locale" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "显示名字": { + "data": { + "uuid": "java-5-1069", + "seg": [ + [ + [ + "显示", + "名字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_344496_347675" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1030", + "seg": [ + [ + [ + "locale" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数字格式": { + "children": [ + { + "格式化数字值": { + "data": { + "uuid": "java-5-1070", + "seg": [ + [ + [ + "格式化", + "数字", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_27676_7662" + ] + } + } + } + } + }, + { + "货币": { + "data": { + "uuid": "java-5-1071", + "seg": [ + [ + [ + "货币" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1031", + "seg": [ + [ + [ + "数字", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "排序和规范化": { + "data": { + "uuid": "java-4-1032", + "seg": [ + [ + [ + "排序" + ], + [ + "规范化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消息格式化": { + "children": [ + { + "选择格式": { + "data": { + "uuid": "java-5-1072", + "seg": [ + [ + [ + "选择", + "格式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678157_521659", + "13_719194_713178", + "13_229436_197401", + "13_216367_163589" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1033", + "seg": [ + [ + [ + "消息", + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源包": { + "children": [ + { + "定位资源包": { + "data": { + "uuid": "java-5-1073", + "seg": [ + [ + [ + "定位", + "资源", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_698449_585462" + ] + } + } + } + } + }, + { + "属性文件": { + "data": { + "uuid": "java-5-1074", + "seg": [ + [ + [ + "属性", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包类": { + "data": { + "uuid": "java-5-1075", + "seg": [ + [ + [ + "包类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1034", + "seg": [ + [ + [ + "资源", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-514", + "seg": [ + [ + [ + "国际化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java平台模块系统": { + "children": [ + { + "模块的概念": { + "data": { + "uuid": "java-4-1035", + "seg": [ + [ + [ + "模块", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对模块命名": { + "data": { + "uuid": "java-4-1036", + "seg": [ + [ + [ + "模块", + "命名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块化的“Hello, World!”程序": { + "data": { + "uuid": "java-4-1037", + "seg": [ + [ + [ + "模块化", + "hello", + "world", + "!", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_383063_418267", + "13_383050_418412", + "13_239596_222983" + ] + } + } + } + } + }, + { + "对模块的需求": { + "data": { + "uuid": "java-4-1038", + "seg": [ + [ + [ + "模块", + "需求" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_688311_553847", + "13_207173_140974" + ] + } + } + } + } + }, + { + "导出包": { + "data": { + "uuid": "java-4-1039", + "seg": [ + [ + [ + "导出", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_347003_352694", + "13_771821_834566", + "13_174093_53482" + ] + } + } + } + } + }, + { + "模块化的JAR": { + "data": { + "uuid": "java-4-1040", + "seg": [ + [ + [ + "模块化", + "jar" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_354565_367087" + ] + } + } + } + } + }, + { + "不具名模块": { + "data": { + "uuid": "java-4-1041", + "seg": [ + [ + [ + "具名", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用于迁移的命令行标识": { + "data": { + "uuid": "java-4-1042", + "seg": [ + [ + [ + "用于", + "迁移", + "命令行", + "标识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递的需求和静态的需求": { + "data": { + "uuid": "java-4-1043", + "seg": [ + [ + [ + "传递", + "需求" + ], + [ + "静态", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限定导出和开放": { + "data": { + "uuid": "java-4-1044", + "seg": [ + [ + [ + "限定", + "导出" + ], + [ + "开放" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务加载": { + "data": { + "uuid": "java-4-1045", + "seg": [ + [ + [ + "服务", + "加载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作模块的工具": { + "data": { + "uuid": "java-4-1046", + "seg": [ + [ + [ + "操作", + "模块", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-515", + "seg": [ + [ + [ + "java", + "平台", + "模块", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全": { + "children": [ + { + "类加载器": { + "children": [ + { + "类加载过程": { + "data": { + "uuid": "java-5-1076", + "seg": [ + [ + [ + "类", + "加载", + "过程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390277_431705", + "13_7464509_53451065", + "13_638537_441446", + "13_203750_131435", + "13_687193_550257", + "13_516254_438955", + "13_646808_450561", + "13_391636_434278", + "13_675836_512051", + "13_760864_818054" + ] + } + } + } + } + }, + { + "类加载器的层次结构": { + "data": { + "uuid": "java-5-1077", + "seg": [ + [ + [ + "类", + "加载", + "器", + "层次结构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_741867_782701" + ] + } + } + } + } + }, + { + "将类加载器用作命名空间": { + "data": { + "uuid": "java-5-1078", + "seg": [ + [ + [ + "将类", + "加载", + "器", + "用作", + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写你自己的类加载器": { + "data": { + "uuid": "java-5-1079", + "seg": [ + [ + [ + "编写", + "类", + "加载", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字节码校验": { + "data": { + "uuid": "java-5-1080", + "seg": [ + [ + [ + "字节", + "码", + "校验" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_702444_592933" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1047", + "seg": [ + [ + [ + "类", + "加载", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全管理器与访问权限": { + "children": [ + { + "权限检查": { + "data": { + "uuid": "java-5-1081", + "seg": [ + [ + [ + "权限", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java平台安全性": { + "data": { + "uuid": "java-5-1082", + "seg": [ + [ + [ + "java", + "平台", + "安全性" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_183741_71621" + ] + } + } + } + } + }, + { + "安全策略文件": { + "data": { + "uuid": "java-5-1083", + "seg": [ + [ + [ + "安全策略", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制权限": { + "data": { + "uuid": "java-5-1084", + "seg": [ + [ + [ + "定制", + "权限" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7450984_53432940" + ] + } + } + } + } + }, + { + "实现权限类": { + "data": { + "uuid": "java-5-1085", + "seg": [ + [ + [ + "权限", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1048", + "seg": [ + [ + [ + "管理器" + ], + [ + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用户认证": { + "children": [ + { + "JAAS框架": { + "data": { + "uuid": "java-5-1086", + "seg": [ + [ + [ + "jaas", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JAAS登录模块": { + "data": { + "uuid": "java-5-1087", + "seg": [ + [ + [ + "jaas", + "登录", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_197765_112332", + "13_763286_821645", + "13_654018_463347", + "13_179669_66375", + "13_673934_502893" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1049", + "seg": [ + [ + [ + "用户", + "认证" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_355060_368014", + "13_1102125_1317086", + "13_747627_800419", + "13_978_1688", + "13_186561_79500" + ] + } + } + } + } + }, + { + "数字签名": { + "children": [ + { + "消息摘要": { + "data": { + "uuid": "java-5-1088", + "seg": [ + [ + [ + "消息", + "摘要" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_6369037_44641565", + "13_911766_1046927", + "13_7440901_53416594", + "13_7173302_51461644", + "13_749472_802065", + "13_747762_799405", + "13_375661_405183" + ] + } + } + } + } + }, + { + "消息签名": { + "data": { + "uuid": "java-5-1089", + "seg": [ + [ + [ + "消息", + "签名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "校验签名": { + "data": { + "uuid": "java-5-1090", + "seg": [ + [ + [ + "校验", + "签名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_201523_124331", + "13_1080512_1285814", + "13_198633_115083", + "13_702581_593218" + ] + } + } + } + } + }, + { + "证书签名": { + "data": { + "uuid": "java-5-1091", + "seg": [ + [ + [ + "证书", + "签名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7442799_53419775" + ] + } + } + } + } + }, + { + "证书请求": { + "data": { + "uuid": "java-5-1092", + "seg": [ + [ + [ + "证书" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_647459_450983" + ] + } + } + } + } + }, + { + "代码签名": { + "data": { + "uuid": "java-5-1093", + "seg": [ + [ + [ + "签名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_381522_415488", + "13_652141_464434" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1050", + "seg": [ + [ + [ + "数字签名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_239203_222156" + ] + } + } + } + } + }, + { + "加密": { + "children": [ + { + "对称密码": { + "data": { + "uuid": "java-5-1094", + "seg": [ + [ + [ + "对称", + "密码" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_840558_951822", + "13_897933_1036983" + ] + } + } + } + } + }, + { + "密钥生成": { + "data": { + "uuid": "java-5-1095", + "seg": [ + [ + [ + "密钥", + "生成" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7397596_53342760", + "13_761976_820038", + "13_696385_580074", + "13_686435_548078", + "13_7467244_53454717", + "13_7452271_53434164", + "13_645571_447198", + "13_7429423_53396327", + "13_1026623_1229604", + "13_7405000_53354158" + ] + } + } + } + } + }, + { + "密码流": { + "data": { + "uuid": "java-5-1096", + "seg": [ + [ + [ + "密码", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "公共密钥密码": { + "data": { + "uuid": "java-5-1097", + "seg": [ + [ + [ + "公共", + "密钥", + "密码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1051", + "seg": [ + [ + [ + "加密" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_238508_220434", + "13_746759_796812", + "13_247105_240240", + "13_654915_465095", + "13_246744_239182", + "13_769575_830589", + "13_7428781_53395082", + "13_1017685_1208979" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-516", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级Swing和图形化编程": { + "children": [ + { + "表格": { + "children": [ + { + "一个简单表格": { + "data": { + "uuid": "java-5-1098", + "seg": [ + [ + [ + "表格" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_207740_142481", + "13_236982_216498", + "13_564805_439648", + "13_677597_519948", + "13_381266_420611", + "13_687474_551077", + "13_378433_409631", + "13_4645035_29327082", + "13_755594_810995", + "13_682485_537087" + ] + } + } + } + } + }, + { + "表格模型": { + "data": { + "uuid": "java-5-1099", + "seg": [ + [ + [ + "表格", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对行和列的操作": { + "data": { + "uuid": "java-5-1100", + "seg": [ + [ + [ + "对行" + ], + [ + "列", + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_345538_349921" + ] + } + } + } + } + }, + { + "单元格的绘制和编辑": { + "data": { + "uuid": "java-5-1101", + "seg": [ + [ + [ + "单元格", + "绘制" + ], + [ + "编辑" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_686274_547666", + "13_238316_220096" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1052", + "seg": [ + [ + [ + "表格" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "树": { + "children": [ + { + "简单的树": { + "data": { + "uuid": "java-5-1102", + "seg": [ + [ + [ + "树" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_248563_243474", + "13_7418448_53374370" + ] + } + } + } + } + }, + { + "节点枚举": { + "data": { + "uuid": "java-5-1103", + "seg": [ + [ + [ + "节点", + "枚举" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绘制节点": { + "data": { + "uuid": "java-5-1104", + "seg": [ + [ + [ + "绘制", + "节点" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_757011_812264", + "13_5612737_34452463" + ] + } + } + } + } + }, + { + "监听树事件": { + "data": { + "uuid": "java-5-1105", + "seg": [ + [ + [ + "监听", + "树", + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_386335_424714", + "13_7407267_53357140" + ] + } + } + } + } + }, + { + "定制树模型": { + "data": { + "uuid": "java-5-1106", + "seg": [ + [ + [ + "定制", + "树", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1053", + "seg": [ + [ + [ + "树" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高级AWT": { + "children": [ + { + "绘图操作流程": { + "data": { + "uuid": "java-5-1107", + "seg": [ + [ + [ + "绘图", + "操作", + "流程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "形状": { + "data": { + "uuid": "java-5-1108", + "seg": [ + [ + [ + "形状" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "区域": { + "data": { + "uuid": "java-5-1109", + "seg": [ + [ + [ + "区域" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "笔画": { + "data": { + "uuid": "java-5-1110", + "seg": [ + [ + [ + "笔画" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "着色": { + "data": { + "uuid": "java-5-1111", + "seg": [ + [ + [ + "着色" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "坐标变换": { + "data": { + "uuid": "java-5-1112", + "seg": [ + [ + [ + "坐标", + "变换" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_3198015_22658353" + ] + } + } + } + } + }, + { + "剪切": { + "data": { + "uuid": "java-5-1113", + "seg": [ + [ + [ + "剪切" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "透明与组合": { + "data": { + "uuid": "java-5-1114", + "seg": [ + [ + [ + "透明" + ], + [ + "组合" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_384326_420594", + "13_656569_468471" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1054", + "seg": [ + [ + [ + "高级", + "awt" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "像素图": { + "children": [ + { + "图像的读取器和写入器": { + "data": { + "uuid": "java-5-1115", + "seg": [ + [ + [ + "图像", + "读取器" + ], + [ + "写入", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "图像处理": { + "data": { + "uuid": "java-5-1116", + "seg": [ + [ + [ + "图像处理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1055", + "seg": [ + [ + [ + "像素", + "图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "打印": { + "children": [ + { + "图形打印": { + "data": { + "uuid": "java-5-1117", + "seg": [ + [ + [ + "图形", + "打印" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_350184_358668", + "13_945187_1083334", + "13_367900_394002", + "13_694230_573539", + "13_325840_318664", + "13_688899_555701", + "13_1065412_1264528", + "13_7397873_53343358", + "13_353946_365940", + "13_221820_176675" + ] + } + } + } + } + }, + { + "打印多页文件": { + "data": { + "uuid": "java-5-1118", + "seg": [ + [ + [ + "打印", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_772362_838976" + ] + } + } + } + } + }, + { + "打印服务程序": { + "data": { + "uuid": "java-5-1119", + "seg": [ + [ + [ + "打印服务", + "程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流打印服务程序": { + "data": { + "uuid": "java-5-1120", + "seg": [ + [ + [ + "流", + "打印服务", + "程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "打印属性": { + "data": { + "uuid": "java-5-1121", + "seg": [ + [ + [ + "打印", + "属性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_202446_127632" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1056", + "seg": [ + [ + [ + "打印" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7396365_53339915" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-517", + "seg": [ + [ + [ + "高级", + "swing" + ], + [ + "图形化", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Maven基础": { + "children": [ + { + "Maven介绍": { + "data": { + "uuid": "java-4-1057", + "seg": [ + [ + [ + "maven", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "依赖管理": { + "data": { + "uuid": "java-4-1058", + "seg": [ + [ + [ + "依赖", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建流程": { + "data": { + "uuid": "java-4-1059", + "seg": [ + [ + [ + "构建", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用插件": { + "data": { + "uuid": "java-4-1060", + "seg": [ + [ + [ + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块管理": { + "data": { + "uuid": "java-4-1061", + "seg": [ + [ + [ + "模块", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用mvnw": { + "data": { + "uuid": "java-4-1062", + "seg": [ + [ + [ + "mvnw" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布Artifact": { + "data": { + "uuid": "java-4-1063", + "seg": [ + [ + [ + "发布", + "art", + "if", + "act" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-518", + "seg": [ + [ + [ + "maven", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络编程": { + "children": [ + { + "网络编程基础": { + "data": { + "uuid": "java-4-1064", + "seg": [ + [ + [ + "网络", + "编程", + "基础" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_161640_31721", + "13_7447395_53427274" + ] + } + } + } + } + }, + { + "TCP编程": { + "data": { + "uuid": "java-4-1065", + "seg": [ + [ + [ + "tcp", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "UDP编程": { + "data": { + "uuid": "java-4-1066", + "seg": [ + [ + [ + "udp", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发送Email": { + "data": { + "uuid": "java-4-1067", + "seg": [ + [ + [ + "发送", + "email" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_391481_433942", + "13_648328_452749" + ] + } + } + } + } + }, + { + "接收Email": { + "data": { + "uuid": "java-4-1068", + "seg": [ + [ + [ + "接收", + "email" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP编程": { + "data": { + "uuid": "java-4-1069", + "seg": [ + [ + [ + "http", + "编程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7464156_53450512", + "13_7451882_53433564" + ] + } + } + } + } + }, + { + "RMI远程调用": { + "data": { + "uuid": "java-4-1070", + "seg": [ + [ + [ + "rmi", + "远程", + "调用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_237766_218980", + "13_710493_668614", + "13_710496_668618", + "13_668168_488126" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-519", + "seg": [ + [ + [ + "网络", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_247308_240578" + ] + } + } + } + } + }, + { + "JDBC编程": { + "children": [ + { + "JDBC简介": { + "data": { + "uuid": "java-4-1071", + "seg": [ + [ + [ + "jdbc", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC查询": { + "data": { + "uuid": "java-4-1072", + "seg": [ + [ + [ + "jdbc", + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC更新": { + "data": { + "uuid": "java-4-1073", + "seg": [ + [ + [ + "jdbc", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC事务": { + "data": { + "uuid": "java-4-1074", + "seg": [ + [ + [ + "jdbc", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC Batch": { + "data": { + "uuid": "java-4-1075", + "seg": [ + [ + [ + "jdbc", + "batch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC连接池": { + "data": { + "uuid": "java-4-1076", + "seg": [ + [ + [ + "jdbc", + "连接池" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_192014_94432", + "13_227322_191371", + "13_7398126_53344461" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-520", + "seg": [ + [ + [ + "jdbc", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-31", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-1-1", + "seg": [ + [ + [ + "java", + "中阶" + ] + ] + ], + "related_data": {} + } + } + }, + { + "java高阶": { + "children": [ + { + "Swing简介": { + "children": [ + { + "Swing的起源": { + "data": { + "uuid": "java-3-521", + "seg": [ + [ + [ + "swing", + "起源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing以AWT为基础": { + "data": { + "uuid": "java-3-522", + "seg": [ + [ + [ + "swing", + "awt", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "两个关键的Swing特性": { + "children": [ + { + "Swing组件是轻量级的": { + "data": { + "uuid": "java-4-1077", + "seg": [ + [ + [ + "swing", + "组件", + "轻量级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing支持可插入外观": { + "data": { + "uuid": "java-4-1078", + "seg": [ + [ + [ + "swing", + "支持", + "插入", + "外观" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-523", + "seg": [ + [ + [ + "关键", + "swing", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MVC连接": { + "data": { + "uuid": "java-3-524", + "seg": [ + [ + [ + "mvc", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组件与容器": { + "children": [ + { + "组件": { + "data": { + "uuid": "java-4-1079", + "seg": [ + [ + [ + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器": { + "data": { + "uuid": "java-4-1080", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_751322_804890", + "13_349097_356884", + "13_7459658_53444633", + "13_7464172_53450531" + ] + } + } + } + } + }, + { + "顶级容器窗格": { + "data": { + "uuid": "java-4-1081", + "seg": [ + [ + [ + "顶级", + "容器", + "窗格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-525", + "seg": [ + [ + [ + "组件" + ], + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing包": { + "data": { + "uuid": "java-3-526", + "seg": [ + [ + [ + "swing", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个简单的Swing应用程序": { + "data": { + "uuid": "java-3-527", + "seg": [ + [ + [ + "swing", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件处理": { + "data": { + "uuid": "java-3-528", + "seg": [ + [ + [ + "事件处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建Swing applet": { + "data": { + "uuid": "java-3-529", + "seg": [ + [ + [ + "创建", + "swing", + "applet" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Swing中绘图": { + "children": [ + { + "绘图的基础知识": { + "data": { + "uuid": "java-4-1082", + "seg": [ + [ + [ + "绘图", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "计算可绘制区域": { + "data": { + "uuid": "java-4-1083", + "seg": [ + [ + [ + "计算", + "绘制", + "区域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个绘图示例": { + "data": { + "uuid": "java-4-1084", + "seg": [ + [ + [ + "绘图", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-530", + "seg": [ + [ + [ + "swing", + "绘图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-32", + "seg": [ + [ + [ + "swing", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探究Swing": { + "children": [ + { + "JLabel与ImageIcon": { + "data": { + "uuid": "java-3-531", + "seg": [ + [ + [ + "jlabel" + ], + [ + "imageicon" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_387771_427084", + "13_7445437_53424018" + ] + } + } + } + } + }, + { + "JTextField": { + "data": { + "uuid": "java-3-532", + "seg": [ + [ + [ + "jtextfield" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing按钮": { + "children": [ + { + "JButton": { + "data": { + "uuid": "java-4-1085", + "seg": [ + [ + [ + "jbutton" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_225348_186715", + "13_1419261_4617231", + "13_7465176_53451961" + ] + } + } + } + } + }, + { + "JToggleButton": { + "data": { + "uuid": "java-4-1086", + "seg": [ + [ + [ + "jtogglebutton" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复选框": { + "data": { + "uuid": "java-4-1087", + "seg": [ + [ + [ + "复选框" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单选按钮": { + "data": { + "uuid": "java-4-1088", + "seg": [ + [ + [ + "单选", + "按钮" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_23043_6048", + "13_229674_197964", + "13_145_305", + "13_384123_420254", + "13_1093307_1302612", + "13_349325_356878", + "13_7396570_53340793", + "13_26679_7214", + "13_901329_1036999", + "13_196275_107973" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-533", + "seg": [ + [ + [ + "swing", + "按钮" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JTabbedPane": { + "data": { + "uuid": "java-3-534", + "seg": [ + [ + [ + "jtabbedpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JScrollPane": { + "data": { + "uuid": "java-3-535", + "seg": [ + [ + [ + "jscrollpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JList": { + "data": { + "uuid": "java-3-536", + "seg": [ + [ + [ + "jlist" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JComboBox": { + "data": { + "uuid": "java-3-537", + "seg": [ + [ + [ + "jcombobox" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_193514_98945" + ] + } + } + } + } + }, + { + "树": { + "data": { + "uuid": "java-3-538", + "seg": [ + [ + [ + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JTable": { + "data": { + "uuid": "java-3-539", + "seg": [ + [ + [ + "jtable" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_189198_87602", + "13_193220_98081", + "13_376907_407262", + "13_746349_795687", + "13_221091_174662", + "13_367177_392498" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-33", + "seg": [ + [ + [ + "探究", + "swing" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swing菜单简介": { + "children": [ + { + "菜单的基础知识": { + "data": { + "uuid": "java-3-540", + "seg": [ + [ + [ + "菜单", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JMenuBar、JMenu和JMenuItem概述": { + "children": [ + { + "JMenuBar": { + "data": { + "uuid": "java-4-1089", + "seg": [ + [ + [ + "jmenubar" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JMenu": { + "data": { + "uuid": "java-4-1090", + "seg": [ + [ + [ + "jmenu" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JMenuItem": { + "data": { + "uuid": "java-4-1091", + "seg": [ + [ + [ + "jmenuitem" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-541", + "seg": [ + [ + [ + "jmenubar" + ], + [ + "jmenu" + ], + [ + "jmenuitem", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建主菜单": { + "data": { + "uuid": "java-3-542", + "seg": [ + [ + [ + "创建", + "主", + "菜单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向菜单项添加助记符和加速键": { + "data": { + "uuid": "java-3-543", + "seg": [ + [ + [ + "菜单项", + "添加", + "助记符" + ], + [ + "加速", + "键" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向菜单项添加图片和工具提示": { + "data": { + "uuid": "java-3-544", + "seg": [ + [ + [ + "菜单项", + "添加", + "图片" + ], + [ + "工具", + "提示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JRadioButtonMenuItem和JCheckBoxMenuItem": { + "data": { + "uuid": "java-3-545", + "seg": [ + [ + [ + "jradiobuttonmenuitem" + ], + [ + "jcheckboxmenuitem" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建弹出菜单": { + "data": { + "uuid": "java-3-546", + "seg": [ + [ + [ + "创建", + "弹", + "出", + "菜单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建工具栏": { + "data": { + "uuid": "java-3-547", + "seg": [ + [ + [ + "创建", + "工具栏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用动作": { + "data": { + "uuid": "java-3-548", + "seg": [ + [ + [ + "动作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完整演示MenuDemo程序": { + "data": { + "uuid": "java-3-549", + "seg": [ + [ + [ + "演示", + "menudemo", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继续探究Swing": { + "data": { + "uuid": "java-3-550", + "seg": [ + [ + [ + "探究", + "swing" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-34", + "seg": [ + [ + [ + "swing", + "菜单", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaFX GUI编程简介": { + "children": [ + { + "JavaFX的基础概念": { + "children": [ + { + "JavaFX包": { + "data": { + "uuid": "java-4-1092", + "seg": [ + [ + [ + "javafx", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7440565_53415879", + "13_664329_481886", + "13_337942_335426", + "13_695712_578631", + "13_228722_195365", + "13_7432690_53402654", + "13_7460673_53445771", + "13_1096411_1308591", + "13_754431_1000664", + "13_781113_851078" + ] + } + } + } + } + }, + { + "Stage和Scene类": { + "data": { + "uuid": "java-4-1093", + "seg": [ + [ + [ + "stage" + ], + [ + "scene", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点和场景图": { + "data": { + "uuid": "java-4-1094", + "seg": [ + [ + [ + "节点" + ], + [ + "场景", + "图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布局": { + "data": { + "uuid": "java-4-1095", + "seg": [ + [ + [ + "布局" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Application类和生命周期方法": { + "data": { + "uuid": "java-4-1096", + "seg": [ + [ + [ + "application", + "类" + ], + [ + "生命周期", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7440874_53416538", + "13_7443568_53420743", + "13_753632_808319" + ] + } + } + } + } + }, + { + "启动JavaFX应用程序": { + "data": { + "uuid": "java-4-1097", + "seg": [ + [ + [ + "启动", + "javafx", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-551", + "seg": [ + [ + [ + "javafx", + "基础", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaFX应用程序的骨架": { + "data": { + "uuid": "java-3-552", + "seg": [ + [ + [ + "javafx", + "应用程序", + "骨架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编译和运行JavaFX程序": { + "data": { + "uuid": "java-3-553", + "seg": [ + [ + [ + "编译" + ], + [ + "运行", + "javafx", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_238432_220621" + ] + } + } + } + } + }, + { + "应用程序线程": { + "data": { + "uuid": "java-3-554", + "seg": [ + [ + [ + "应用程序", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个简单的JavaFX控件:Label": { + "data": { + "uuid": "java-3-555", + "seg": [ + [ + [ + "javafx", + "控件" + ] + ], + [ + [ + "label" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用按钮和事件": { + "children": [ + { + "事件的基础知识": { + "data": { + "uuid": "java-4-1098", + "seg": [ + [ + [ + "事件", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_388837_428973", + "13_383318_418697" + ] + } + } + } + } + }, + { + "按钮控件简介": { + "data": { + "uuid": "java-4-1099", + "seg": [ + [ + [ + "按钮", + "控件", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_746848_797136" + ] + } + } + } + } + }, + { + "演示事件处理和按钮": { + "data": { + "uuid": "java-4-1100", + "seg": [ + [ + [ + "演示", + "事件处理" + ], + [ + "按钮" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-556", + "seg": [ + [ + [ + "按钮" + ], + [ + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "直接在画布上绘制": { + "data": { + "uuid": "java-3-557", + "seg": [ + [ + [ + "画布", + "绘制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-35", + "seg": [ + [ + [ + "javafx", + "gui", + "编程", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探究JavaFX控件": { + "children": [ + { + "使用Image和ImageView": { + "children": [ + { + "向标签添加图片": { + "data": { + "uuid": "java-4-1101", + "seg": [ + [ + [ + "标签", + "添加", + "图片" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_280_542", + "13_71948_11854" + ] + } + } + } + } + }, + { + "在按钮中使用图片": { + "data": { + "uuid": "java-4-1102", + "seg": [ + [ + [ + "按钮", + "图片" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1372_2287", + "13_1640_2655", + "13_7442886_53419883", + "13_743461_787770", + "13_656583_468419", + "13_272939_297918", + "13_5764889_39801951", + "13_663413_479705", + "13_398761_436728", + "13_743727_788596" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-558", + "seg": [ + [ + [ + "image" + ], + [ + "imageview" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_231399_202395", + "13_11437_5418" + ] + } + } + } + } + }, + { + "ToggleButton": { + "data": { + "uuid": "java-3-559", + "seg": [ + [ + [ + "togglebutton" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RadioButton": { + "children": [ + { + "处理开关组中的变化事件": { + "data": { + "uuid": "java-4-1103", + "seg": [ + [ + [ + "开关", + "组中", + "变化", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理单选按钮的另一种方式": { + "data": { + "uuid": "java-4-1104", + "seg": [ + [ + [ + "单选", + "按钮", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-560", + "seg": [ + [ + [ + "radiobutton" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CheckBox": { + "data": { + "uuid": "java-3-561", + "seg": [ + [ + [ + "checkbox" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_375401_404796", + "13_745304_792899" + ] + } + } + } + } + }, + { + "ListView": { + "children": [ + { + "ListView的滚动条": { + "data": { + "uuid": "java-4-1105", + "seg": [ + [ + [ + "listview", + "滚动条" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1556_2520", + "13_186566_79529", + "13_118_250", + "13_204386_133178", + "13_195620_105669" + ] + } + } + } + } + }, + { + "启用多项选择": { + "data": { + "uuid": "java-4-1106", + "seg": [ + [ + [ + "启用", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-562", + "seg": [ + [ + [ + "listview" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ComboBox": { + "data": { + "uuid": "java-3-563", + "seg": [ + [ + [ + "combobox" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_193298_98310", + "13_1022654_1216738" + ] + } + } + } + } + }, + { + "TextField": { + "data": { + "uuid": "java-3-564", + "seg": [ + [ + [ + "textfield" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ScrollPane": { + "data": { + "uuid": "java-3-565", + "seg": [ + [ + [ + "scrollpane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TreeView": { + "data": { + "uuid": "java-3-566", + "seg": [ + [ + [ + "treeview" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "效果和变换简介": { + "children": [ + { + "效果": { + "data": { + "uuid": "java-4-1107", + "seg": [ + [ + [ + "效果" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7454364_53437121", + "13_202666_127986" + ] + } + } + } + } + }, + { + "变换": { + "data": { + "uuid": "java-4-1108", + "seg": [ + [ + [ + "变换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "演示效果和变换": { + "data": { + "uuid": "java-4-1109", + "seg": [ + [ + [ + "演示", + "效果" + ], + [ + "变换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-567", + "seg": [ + [ + [ + "效果" + ], + [ + "变换", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加工具提示": { + "data": { + "uuid": "java-3-568", + "seg": [ + [ + [ + "添加", + "工具", + "提示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "禁用控件": { + "data": { + "uuid": "java-3-569", + "seg": [ + [ + [ + "禁用", + "控件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-36", + "seg": [ + [ + [ + "探究", + "javafx", + "控件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JavaFX菜单简介": { + "children": [ + { + "菜单的基础知识": { + "data": { + "uuid": "java-3-570", + "seg": [ + [ + [ + "菜单", + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MenuBar、Menu和MenuItem概述": { + "children": [ + { + "MenuBar": { + "data": { + "uuid": "java-4-1110", + "seg": [ + [ + [ + "menubar" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Menu": { + "data": { + "uuid": "java-4-1111", + "seg": [ + [ + [ + "menu" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_665939_483787", + "13_755302_810759" + ] + } + } + } + } + }, + { + "MenuItem": { + "data": { + "uuid": "java-4-1112", + "seg": [ + [ + [ + "menuitem" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-571", + "seg": [ + [ + [ + "menubar" + ], + [ + "menu" + ], + [ + "menuitem", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建主菜单": { + "data": { + "uuid": "java-3-572", + "seg": [ + [ + [ + "创建", + "主", + "菜单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向菜单项添加助记符和加速键": { + "data": { + "uuid": "java-3-573", + "seg": [ + [ + [ + "菜单项", + "添加", + "助记符" + ], + [ + "加速", + "键" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向菜单项添加图片": { + "data": { + "uuid": "java-3-574", + "seg": [ + [ + [ + "菜单项", + "添加", + "图片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用RadioMenuItem和CheckMenuItem": { + "data": { + "uuid": "java-3-575", + "seg": [ + [ + [ + "radiomenuitem" + ], + [ + "checkmenuitem" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建上下文菜单": { + "data": { + "uuid": "java-3-576", + "seg": [ + [ + [ + "创建", + "上下文", + "菜单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建工具栏": { + "data": { + "uuid": "java-3-577", + "seg": [ + [ + [ + "创建", + "工具栏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完整的MenuDemo程序": { + "data": { + "uuid": "java-3-578", + "seg": [ + [ + [ + "menudemo", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继续探究JavaFX": { + "data": { + "uuid": "java-3-579", + "seg": [ + [ + [ + "探究", + "javafx" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-37", + "seg": [ + [ + [ + "javafx", + "菜单", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java Bean": { + "children": [ + { + "Java Bean是什么": { + "data": { + "uuid": "java-3-580", + "seg": [ + [ + [ + "java", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java Bean的优势": { + "data": { + "uuid": "java-3-581", + "seg": [ + [ + [ + "java", + "bean", + "优势" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内省": { + "children": [ + { + "属性的设计模式": { + "data": { + "uuid": "java-4-1113", + "seg": [ + [ + [ + "属性", + "设计模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件的设计模式": { + "data": { + "uuid": "java-4-1114", + "seg": [ + [ + [ + "事件", + "设计模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_235272_213709", + "13_389326_429760", + "13_771099_833501", + "13_352974_364097", + "13_383508_418945" + ] + } + } + } + } + }, + { + "方法与设计模式": { + "children": [ + { + "创建型模式": { + "children": [ + { + "工厂方法": { + "data": { + "uuid": "java-6-303", + "seg": [ + [ + [ + "工厂", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7424508_53385554" + ] + } + } + } + } + }, + { + "抽象工厂": { + "data": { + "uuid": "java-6-304", + "seg": [ + [ + [ + "抽象", + "工厂" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "生成器": { + "data": { + "uuid": "java-6-305", + "seg": [ + [ + [ + "生成器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "原型": { + "data": { + "uuid": "java-6-306", + "seg": [ + [ + [ + "原型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "单例": { + "data": { + "uuid": "java-6-307", + "seg": [ + [ + [ + "单例" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_164496_38332", + "13_649424_454993", + "13_649388_455462", + "13_4645077_29327187", + "13_770007_831315", + "13_209373_146864" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1122", + "seg": [ + [ + [ + "创建", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "结构型模式": { + "children": [ + { + "适配器": { + "data": { + "uuid": "java-6-308", + "seg": [ + [ + [ + "适配器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "桥接": { + "data": { + "uuid": "java-6-309", + "seg": [ + [ + [ + "桥接" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "装饰器": { + "data": { + "uuid": "java-6-310", + "seg": [ + [ + [ + "装饰", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "外观": { + "data": { + "uuid": "java-6-311", + "seg": [ + [ + [ + "外观" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "享元": { + "data": { + "uuid": "java-6-312", + "seg": [ + [ + [ + "享元" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "代理": { + "data": { + "uuid": "java-6-313", + "seg": [ + [ + [ + "代理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1123", + "seg": [ + [ + [ + "结构型", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "行为型模式": { + "children": [ + { + "责任链": { + "data": { + "uuid": "java-6-314", + "seg": [ + [ + [ + "责任", + "链" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "命令": { + "data": { + "uuid": "java-6-315", + "seg": [ + [ + [ + "命令" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7442674_53419614" + ] + } + } + } + } + }, + { + "解释器": { + "data": { + "uuid": "java-6-316", + "seg": [ + [ + [ + "解释器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "迭代器": { + "data": { + "uuid": "java-6-317", + "seg": [ + [ + [ + "迭代", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "中介": { + "data": { + "uuid": "java-6-318", + "seg": [ + [ + [ + "中介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "备忘录": { + "data": { + "uuid": "java-6-319", + "seg": [ + [ + [ + "备忘录" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "观察者": { + "data": { + "uuid": "java-6-320", + "seg": [ + [ + [ + "观察者" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "状态": { + "data": { + "uuid": "java-6-321", + "seg": [ + [ + [ + "状态" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_202017_125938" + ] + } + } + } + } + }, + { + "策略": { + "data": { + "uuid": "java-6-322", + "seg": [ + [ + [ + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "模板方法": { + "data": { + "uuid": "java-6-323", + "seg": [ + [ + [ + "模板", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_772368_835522" + ] + } + } + } + } + }, + { + "访问者": { + "data": { + "uuid": "java-6-324", + "seg": [ + [ + [ + "访问者" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1124", + "seg": [ + [ + [ + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_344367_347615" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1115", + "seg": [ + [ + [ + "方法" + ], + [ + "设计模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用BeanInfo接口": { + "data": { + "uuid": "java-4-1116", + "seg": [ + [ + [ + "beaninfo", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745449_793342" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-582", + "seg": [ + [ + [ + "内省" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "绑定属性与约束属性": { + "data": { + "uuid": "java-3-583", + "seg": [ + [ + [ + "绑定", + "属性" + ], + [ + "约束", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持久性": { + "data": { + "uuid": "java-3-584", + "seg": [ + [ + [ + "持久性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制器": { + "data": { + "uuid": "java-3-585", + "seg": [ + [ + [ + "定制", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java Bean API": { + "children": [ + { + "Introspector类": { + "data": { + "uuid": "java-4-1117", + "seg": [ + [ + [ + "introspector", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PropertyDescriptor类": { + "data": { + "uuid": "java-4-1118", + "seg": [ + [ + [ + "propertydescriptor", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "EventSetDescriptor类": { + "data": { + "uuid": "java-4-1119", + "seg": [ + [ + [ + "eventsetdescriptor", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MethodDescriptor类": { + "data": { + "uuid": "java-4-1120", + "seg": [ + [ + [ + "methoddescriptor", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-586", + "seg": [ + [ + [ + "java", + "bean", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个Bean示例": { + "data": { + "uuid": "java-3-587", + "seg": [ + [ + [ + "bean", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-2-38", + "seg": [ + [ + [ + "java", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "servlet": { + "children": [ + { + "背景": { + "data": { + "uuid": "java-3-588", + "seg": [ + [ + [ + "背景" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_930241_1066557" + ] + } + } + } + } + }, + { + "servelet的生命周期": { + "data": { + "uuid": "java-3-589", + "seg": [ + [ + [ + "servelet", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_352961_364150" + ] + } + } + } + } + }, + { + "servlet开发选项": { + "data": { + "uuid": "java-3-590", + "seg": [ + [ + [ + "servlet", + "开发", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Tomcat": { + "data": { + "uuid": "java-3-591", + "seg": [ + [ + [ + "tomcat" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_353597_365199" + ] + } + } + } + } + }, + { + "一个简单的servlet": { + "children": [ + { + "创建和编译servlet源代码": { + "data": { + "uuid": "java-4-1121", + "seg": [ + [ + [ + "创建" + ], + [ + "编译", + "servlet" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1067934_1268423", + "13_241135_226715", + "13_74716_12332", + "13_648900_453827", + "13_232077_205238", + "13_1063975_1262108", + "13_201267_123560", + "13_229302_196962", + "13_664369_481092", + "13_754979_810220" + ] + } + } + } + } + }, + { + "启动Tomcat": { + "data": { + "uuid": "java-4-1122", + "seg": [ + [ + [ + "启动", + "tomcat" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1047467_1244227", + "13_714111_705823", + "13_338266_335950", + "13_656381_467920", + "13_694699_575371", + "13_350286_358888", + "13_392027_434947", + "13_204857_134492", + "13_763600_822114", + "13_651408_458601" + ] + } + } + } + } + }, + { + "启动Web浏览器并请求servlet": { + "data": { + "uuid": "java-4-1123", + "seg": [ + [ + [ + "启动", + "web", + "浏览器", + "servlet" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_160358_27942", + "13_244635_234197", + "13_366613_391196", + "13_663938_480590", + "13_670978_494285", + "13_1060720_1258423", + "13_1090018_1296659", + "13_1096495_1308849" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-592", + "seg": [ + [ + [ + "servlet" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Servlet API": { + "data": { + "uuid": "java-3-593", + "seg": [ + [ + [ + "servlet", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "javax.servlet包": { + "children": [ + { + "Servlet接口": { + "data": { + "uuid": "java-4-1124", + "seg": [ + [ + [ + "servlet", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_717269_710443" + ] + } + } + } + } + }, + { + "ServletConfig接口": { + "data": { + "uuid": "java-4-1125", + "seg": [ + [ + [ + "servletconfig", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServletContext接口": { + "data": { + "uuid": "java-4-1126", + "seg": [ + [ + [ + "servletcontext", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_384116_420177", + "13_224266_183372" + ] + } + } + } + } + }, + { + "ServletRequest接口": { + "data": { + "uuid": "java-4-1127", + "seg": [ + [ + [ + "servletrequest", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_644699_445638" + ] + } + } + } + } + }, + { + "ServletResponse接口": { + "data": { + "uuid": "java-4-1128", + "seg": [ + [ + [ + "servletresponse", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_768827_829201" + ] + } + } + } + } + }, + { + "GenericServlet类": { + "data": { + "uuid": "java-4-1129", + "seg": [ + [ + [ + "genericservlet", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_648024_451992" + ] + } + } + } + } + }, + { + "ServletInputStream类": { + "data": { + "uuid": "java-4-1130", + "seg": [ + [ + [ + "servletinputstream", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServletOutputStream类": { + "data": { + "uuid": "java-4-1131", + "seg": [ + [ + [ + "servletoutputstream", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "servlet异常类": { + "data": { + "uuid": "java-4-1132", + "seg": [ + [ + [ + "servlet", + "异常", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7422658_53381318", + "13_239552_222921", + "13_387439_426543", + "13_356246_371953" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-594", + "seg": [ + [ + [ + "javax", + "servlet", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_703239_595850" + ] + } + } + } + } + }, + { + "读取servlet参数": { + "data": { + "uuid": "java-3-595", + "seg": [ + [ + [ + "读取", + "servlet", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "javax.servlet.http包": { + "children": [ + { + "HttpServletRequest接口": { + "data": { + "uuid": "java-4-1133", + "seg": [ + [ + [ + "httpservletrequest", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_6900334_52830091" + ] + } + } + } + } + }, + { + "HttpServletResponse接口": { + "data": { + "uuid": "java-4-1134", + "seg": [ + [ + [ + "httpservletresponse", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HttpSession接口": { + "data": { + "uuid": "java-4-1135", + "seg": [ + [ + [ + "httpsession", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cookie类": { + "data": { + "uuid": "java-4-1136", + "seg": [ + [ + [ + "cookie", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_667014_485542", + "13_374216_402854", + "13_28030_8013", + "13_233977_214109", + "13_174882_54765", + "13_247227_240476" + ] + } + } + } + } + }, + { + "HttpServlet类": { + "data": { + "uuid": "java-4-1137", + "seg": [ + [ + [ + "httpservlet", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7448137_53428132", + "13_234595_212140" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-596", + "seg": [ + [ + [ + "javax", + "servlet", + "http", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理HTTP请求和响应": { + "children": [ + { + "处理HTTP GET请求": { + "data": { + "uuid": "java-4-1138", + "seg": [ + [ + [ + "http", + "get" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1099337_1314340", + "13_391807_434613", + "13_690166_559686", + "13_746985_797550", + "13_768779_829496", + "13_7438496_53411873", + "13_348835_356700", + "13_757552_813167", + "13_222359_178208", + "13_376374_406299" + ] + } + } + } + } + }, + { + "处理HTTP POST请求": { + "data": { + "uuid": "java-4-1139", + "seg": [ + [ + [ + "http", + "post" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_748142_799889", + "13_7444765_53423274", + "13_369225_401700", + "13_690971_562275", + "13_248044_242264", + "13_768948_829566", + "13_668088_487899", + "13_270188_291942", + "13_773137_836750", + "13_748039_799726" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-597", + "seg": [ + [ + [ + "http" + ], + [ + "响应" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用cookie": { + "data": { + "uuid": "java-3-598", + "seg": [ + [ + [ + "cookie" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "会话跟踪": { + "data": { + "uuid": "java-3-599", + "seg": [ + [ + [ + "话", + "跟踪" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_212534_154004", + "13_7426525_53390083", + "13_231623_203032" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-39", + "seg": [ + [ + [ + "servlet" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_339485_338247" + ] + } + } + } + } + }, + { + "其他": { + "children": [ + { + "入门和技术基础": { + "children": [ + { + "认识SSM框架和Redis": { + "children": [ + { + "Spring框架": { + "children": [ + { + "Spring IoC简介": { + "data": { + "uuid": "java-6-325", + "seg": [ + [ + [ + "spring", + "ioc", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring AOP": { + "data": { + "uuid": "java-6-326", + "seg": [ + [ + [ + "spring", + "aop" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_754110_808956" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1125", + "seg": [ + [ + [ + "spring", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MyBatis简介": { + "children": [ + { + "Hibernate简介": { + "data": { + "uuid": "java-6-327", + "seg": [ + [ + [ + "hibernate", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222650_179224", + "13_243813_232707", + "13_154530_14639", + "13_241566_227842", + "13_679595_527015", + "13_357890_375247", + "13_357355_373893", + "13_243869_232788", + "13_192384_95469" + ] + } + } + } + } + }, + { + "MyBatis": { + "data": { + "uuid": "java-6-328", + "seg": [ + [ + [ + "mybatis" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_752197_806211" + ] + } + } + } + } + }, + { + "Hibernate和MyBatis的区别": { + "data": { + "uuid": "java-6-329", + "seg": [ + [ + [ + "hibernate" + ], + [ + "mybatis", + "区别" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744204_789842", + "13_7439939_53414781", + "13_235010_212927", + "13_171020_47870", + "13_166967_40522", + "13_23136_6106" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1126", + "seg": [ + [ + [ + "mybatis", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC简介": { + "data": { + "uuid": "java-5-1127", + "seg": [ + [ + [ + "spring", + "mvc", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "最流行的NoSQL——Redis": { + "data": { + "uuid": "java-5-1128", + "seg": [ + [ + [ + "流行", + "nosql", + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SSM+Redis结构框图及概述": { + "data": { + "uuid": "java-5-1129", + "seg": [ + [ + [ + "ssm", + "redis", + "结构", + "框图" + ], + [ + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678284_525249", + "13_7457376_53441627", + "13_688603_554973", + "13_672762_499704", + "13_679898_528334", + "13_376803_408155", + "13_664485_481310", + "13_391760_434564", + "13_679822_528059", + "13_7457305_53441457" + ] + } + } + } + } + }, + { + "Redis概述": { + "children": [ + { + "Redis在Java Web中的应用": { + "children": [ + { + "高速读/写场合": { + "data": { + "uuid": "java-7-46", + "seg": [ + [ + [ + "高速", + "读", + "写", + "场合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-330", + "seg": [ + [ + [ + "redis", + "java", + "web" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis基本安装和使用": { + "children": [ + { + "在Windows下安装Redis": { + "data": { + "uuid": "java-7-47", + "seg": [ + [ + [ + "windows", + "安装", + "redis" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_215010_161130", + "13_718344_711984", + "13_4646690_29331384" + ] + } + } + } + } + }, + { + "在Linux下安装Redis": { + "data": { + "uuid": "java-7-48", + "seg": [ + [ + [ + "linux", + "安装", + "redis" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_237480_219394", + "13_213548_156553", + "13_7465164_53451899", + "13_654065_463427", + "13_654068_463512", + "13_689532_557811", + "13_678583_523140", + "13_3036424_19273104", + "13_713123_704732", + "13_183924_72194" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-331", + "seg": [ + [ + [ + "redis", + "安装" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis的Java API": { + "children": [ + { + "在Java程序中使用Redis": { + "data": { + "uuid": "java-7-49", + "seg": [ + [ + [ + "java", + "程序", + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Spring中使用Redis": { + "data": { + "uuid": "java-7-50", + "seg": [ + [ + [ + "spring", + "redis" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_642537_441929", + "13_680150_529268", + "13_1052111_1249653", + "13_216868_164551", + "13_668754_489464", + "13_673814_502450", + "13_768405_828500", + "13_747333_798486", + "13_873422_1006397", + "13_668560_488984" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-332", + "seg": [ + [ + [ + "redis", + "java", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简介Redis的6种数据类型": { + "data": { + "uuid": "java-6-333", + "seg": [ + [ + [ + "简介", + "redis", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1130", + "seg": [ + [ + [ + "redis", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis数据结构常用命令": { + "children": [ + { + "Redis数据结构——字符串": { + "data": { + "uuid": "java-6-334", + "seg": [ + [ + [ + "redis", + "数据结构", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis数据结构——哈希": { + "data": { + "uuid": "java-6-335", + "seg": [ + [ + [ + "redis", + "数据结构", + "哈希" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_737870_768580", + "13_7466644_53453967", + "13_669489_491104", + "13_7445864_53424911", + "13_662727_478463" + ] + } + } + } + } + }, + { + "Redis数据结构——链表(linked-list)": { + "data": { + "uuid": "java-6-336", + "seg": [ + [ + [ + "redis", + "数据结构", + "链表", + "linked", + "list" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_694700_575389" + ] + } + } + } + } + }, + { + "Redis数据结构——集合": { + "data": { + "uuid": "java-6-337", + "seg": [ + [ + [ + "redis", + "数据结构", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis数据结构——有序集合": { + "children": [ + { + "Redis基础命令": { + "data": { + "uuid": "java-7-51", + "seg": [ + [ + [ + "redis", + "基础", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "spring-data-redis对有序集合的封装": { + "data": { + "uuid": "java-7-52", + "seg": [ + [ + [ + "spring", + "data", + "redis", + "有序", + "集合", + "封装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring操作有序集合": { + "data": { + "uuid": "java-7-53", + "seg": [ + [ + [ + "spring", + "操作", + "有序", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_233772_209587" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-338", + "seg": [ + [ + [ + "redis", + "数据结构", + "有序", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基数——HyperLogLog": { + "data": { + "uuid": "java-6-339", + "seg": [ + [ + [ + "基数", + "hyperloglog" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1131", + "seg": [ + [ + [ + "redis", + "数据结构", + "常用命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis的一些常用技术": { + "children": [ + { + "Redis的基础事务": { + "data": { + "uuid": "java-6-340", + "seg": [ + [ + [ + "redis", + "基础", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探索Redis事务回滚": { + "data": { + "uuid": "java-6-341", + "seg": [ + [ + [ + "探索", + "redis", + "事务", + "回滚" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_749750_802488", + "13_7423184_53382773" + ] + } + } + } + } + }, + { + "使用watch命令监控事务": { + "data": { + "uuid": "java-6-342", + "seg": [ + [ + [ + "watch", + "命令", + "监控", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流水线(pipelined)": { + "data": { + "uuid": "java-6-343", + "seg": [ + [ + [ + "流水线", + "pipelined" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布订阅": { + "data": { + "uuid": "java-6-344", + "seg": [ + [ + [ + "发布", + "订阅" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_746718_796701", + "13_719222_713302" + ] + } + } + } + } + }, + { + "超时命令": { + "data": { + "uuid": "java-6-345", + "seg": [ + [ + [ + "超时", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Lua语言": { + "children": [ + { + "执行输入Lua程序代码": { + "data": { + "uuid": "java-7-54", + "seg": [ + [ + [ + "执行", + "输入", + "lua", + "程序代码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "执行Lua文件": { + "data": { + "uuid": "java-7-55", + "seg": [ + [ + [ + "执行", + "lua", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_381753_415756", + "13_212713_154579", + "13_656812_468812" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-346", + "seg": [ + [ + [ + "lua", + "语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1132", + "seg": [ + [ + [ + "redis", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis配置": { + "children": [ + { + "Redis基础配置文件": { + "data": { + "uuid": "java-6-347", + "seg": [ + [ + [ + "redis", + "基础", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis备份(持久化)": { + "data": { + "uuid": "java-6-348", + "seg": [ + [ + [ + "redis", + "备份", + "持久", + "化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7402350_53350044" + ] + } + } + } + } + }, + { + "Redis内存回收策略": { + "data": { + "uuid": "java-6-349", + "seg": [ + [ + [ + "redis", + "内存", + "回收", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复制": { + "children": [ + { + "主从同步基础概念": { + "data": { + "uuid": "java-7-56", + "seg": [ + [ + [ + "主从", + "同步", + "基础", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis主从同步配置": { + "data": { + "uuid": "java-7-57", + "seg": [ + [ + [ + "redis", + "主从", + "同步", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis主从同步的过程": { + "data": { + "uuid": "java-7-58", + "seg": [ + [ + [ + "redis", + "主从", + "同步", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-350", + "seg": [ + [ + [ + "复制" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_352600_363604", + "13_752603_807014" + ] + } + } + } + } + }, + { + "哨兵(Sentinel)模式": { + "children": [ + { + "哨兵模式概述": { + "data": { + "uuid": "java-7-59", + "seg": [ + [ + [ + "哨兵", + "模式", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_746775_796855" + ] + } + } + } + } + }, + { + "搭建哨兵模式": { + "data": { + "uuid": "java-7-60", + "seg": [ + [ + [ + "搭建", + "哨兵", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Java中使用哨兵模式": { + "data": { + "uuid": "java-7-61", + "seg": [ + [ + [ + "java", + "哨兵", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "哨兵模式的其他配置项": { + "data": { + "uuid": "java-7-62", + "seg": [ + [ + [ + "哨兵", + "模式", + "配置", + "项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-351", + "seg": [ + [ + [ + "哨兵", + "sentinel", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1133", + "seg": [ + [ + [ + "redis", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用redis-cli": { + "children": [ + { + "安全设置": { + "data": { + "uuid": "java-6-352", + "seg": [ + [ + [ + "设置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457017_53441117" + ] + } + } + } + } + }, + { + "基本操作": { + "data": { + "uuid": "java-6-353", + "seg": [ + [ + [ + "基本操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "keys": { + "data": { + "uuid": "java-6-354", + "seg": [ + [ + [ + "keys" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis List": { + "data": { + "uuid": "java-6-355", + "seg": [ + [ + [ + "redis", + "list" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis Hash": { + "data": { + "uuid": "java-6-356", + "seg": [ + [ + [ + "redis", + "hash" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_364742_386953", + "13_377034_407471" + ] + } + } + } + } + }, + { + "Set": { + "data": { + "uuid": "java-6-357", + "seg": [ + [ + [ + "set" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pub/Sub": { + "data": { + "uuid": "java-6-358", + "seg": [ + [ + [ + "pub", + "sub" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1134", + "seg": [ + [ + [ + "redis", + "cli" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot集成Redis": { + "data": { + "uuid": "java-5-1135", + "seg": [ + [ + [ + "spring", + "boot", + "集成", + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用StringRedisTemplate": { + "children": [ + { + "opsFor": { + "data": { + "uuid": "java-6-359", + "seg": [ + [ + [ + "opsfor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "绑定Key的操作": { + "data": { + "uuid": "java-6-360", + "seg": [ + [ + [ + "绑定", + "key", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RedisConnection": { + "data": { + "uuid": "java-6-361", + "seg": [ + [ + [ + "redisconnection" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1136", + "seg": [ + [ + [ + "stringredistemplate" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_766176_825308" + ] + } + } + } + } + }, + { + "序列化策略": { + "children": [ + { + "默认序列化策略": { + "data": { + "uuid": "java-6-362", + "seg": [ + [ + [ + "默认", + "序列化", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "自定义序列化策略": { + "data": { + "uuid": "java-6-363", + "seg": [ + [ + [ + "自定义", + "序列化", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1137", + "seg": [ + [ + [ + "序列化", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1140", + "seg": [ + [ + [ + "ssm", + "框架" + ], + [ + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java设计模式": { + "children": [ + { + "Java反射技术": { + "children": [ + { + "通过反射构建对象": { + "data": { + "uuid": "java-6-364", + "seg": [ + [ + [ + "反射", + "构建", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "反射方法": { + "data": { + "uuid": "java-6-365", + "seg": [ + [ + [ + "反射", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_151933_14475", + "13_250238_247208", + "13_200815_122198", + "13_186728_79969", + "13_674349_504374", + "13_25947_7070", + "13_203230_129751", + "13_336643_332363", + "13_7438736_53412129" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1138", + "seg": [ + [ + [ + "java", + "反射", + "技术" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "动态代理模式和责任链模式": { + "children": [ + { + "JDK动态代理": { + "data": { + "uuid": "java-6-366", + "seg": [ + [ + [ + "jdk", + "动态", + "代理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CGLIB动态代理": { + "data": { + "uuid": "java-6-367", + "seg": [ + [ + [ + "cglib", + "动态", + "代理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_233571_208928", + "13_644221_444760", + "13_187090_80785", + "13_7419236_53377967", + "13_742299_784123", + "13_212893_154943" + ] + } + } + } + } + }, + { + "拦截器": { + "children": [ + { + "拦截器的定义": { + "data": { + "uuid": "java-7-63", + "seg": [ + [ + [ + "拦截器", + "定义" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_230965_201208", + "13_7431957_53400719", + "13_1101239_1315803", + "13_7442725_53419648" + ] + } + } + } + } + }, + { + "拦截器的执行流程": { + "data": { + "uuid": "java-7-64", + "seg": [ + [ + [ + "拦截器", + "执行", + "流程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "开发拦截器": { + "data": { + "uuid": "java-7-65", + "seg": [ + [ + [ + "开发", + "拦截器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_238742_221046", + "13_199403_117576", + "13_653800_463015", + "13_1102275_1316682", + "13_7399254_53346324" + ] + } + } + } + } + }, + { + "多个拦截器执行的顺序": { + "data": { + "uuid": "java-7-66", + "seg": [ + [ + [ + "拦截器", + "执行", + "顺序" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_758176_814408", + "13_358372_376618", + "13_7413013_53364714", + "13_250633_248175", + "13_358427_376791" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-6-368", + "seg": [ + [ + [ + "拦截器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "责任链模式": { + "data": { + "uuid": "java-6-369", + "seg": [ + [ + [ + "责任", + "链", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_196718_109552", + "13_382313_416811" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1139", + "seg": [ + [ + [ + "动态", + "代理", + "模式" + ], + [ + "责任", + "链", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "观察者(Observer)模式": { + "children": [ + { + "概述": { + "data": { + "uuid": "java-6-370", + "seg": [ + [ + [ + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1140", + "seg": [ + [ + [ + "观察者", + "observer", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_683496_539824" + ] + } + } + } + } + }, + { + "工厂模式和抽象工厂模式": { + "children": [ + { + "普通工厂(Simple Factory)模式": { + "data": { + "uuid": "java-6-371", + "seg": [ + [ + [ + "工厂", + "simple", + "factory", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "抽象工厂(Abstract Factory)模式": { + "data": { + "uuid": "java-6-372", + "seg": [ + [ + [ + "抽象", + "工厂", + "abstract", + "factory", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_230499_202223", + "13_366349_390811", + "13_244872_234770" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1141", + "seg": [ + [ + [ + "工厂", + "模式" + ], + [ + "抽象", + "工厂", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "建造者(Builder)模式": { + "children": [ + { + "概述": { + "data": { + "uuid": "java-6-373", + "seg": [ + [ + [ + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1142", + "seg": [ + [ + [ + "建造", + "builder", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1141", + "seg": [ + [ + [ + "java", + "设计模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-600", + "seg": [ + [ + [ + "入门" + ], + [ + "技术", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "互联网持久框架——MyBatis": { + "children": [ + { + "认识MyBatis核心组件": { + "children": [ + { + "准备MyBatis环境": { + "data": { + "uuid": "java-5-1143", + "seg": [ + [ + [ + "mybatis", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1074279_1277004", + "13_7395440_53337950", + "13_7396649_53340647", + "13_719420_713473", + "13_674166_503684", + "13_696389_580070", + "13_6374151_44659638", + "13_839432_948749", + "13_947536_1087104", + "13_839434_948750" + ] + } + } + } + } + }, + { + "MyBatis的核心组件": { + "data": { + "uuid": "java-5-1144", + "seg": [ + [ + [ + "mybatis", + "核心", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSessionFactory(工厂接口)": { + "children": [ + { + "使用XML构建SqlSessionFactory": { + "data": { + "uuid": "java-6-374", + "seg": [ + [ + [ + "xml", + "构建", + "sqlsessionfactory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用代码创建SqlSessionFactory": { + "data": { + "uuid": "java-6-375", + "seg": [ + [ + [ + "创建", + "sqlsessionfactory" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_771608_834236" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1145", + "seg": [ + [ + [ + "sqlsessionfactory", + "工厂", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSession": { + "data": { + "uuid": "java-5-1146", + "seg": [ + [ + [ + "sqlsession" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射器": { + "children": [ + { + "用XML实现映射器": { + "data": { + "uuid": "java-6-376", + "seg": [ + [ + [ + "xml", + "映射器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解实现映射器": { + "data": { + "uuid": "java-6-377", + "seg": [ + [ + [ + "注解", + "映射器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSession发送SQL": { + "data": { + "uuid": "java-6-378", + "seg": [ + [ + [ + "sqlsession", + "发送", + "sql" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用Mapper接口发送SQL": { + "data": { + "uuid": "java-6-379", + "seg": [ + [ + [ + "mapper", + "接口", + "发送", + "sql" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_767476_827103", + "13_366926_391989", + "13_771402_833944" + ] + } + } + } + } + }, + { + "对比两种发送SQL方式": { + "data": { + "uuid": "java-6-380", + "seg": [ + [ + [ + "发送", + "sql", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1147", + "seg": [ + [ + [ + "映射器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生命周期": { + "children": [ + { + "SqlSessionFactoryBuilder": { + "data": { + "uuid": "java-6-381", + "seg": [ + [ + [ + "sqlsessionfactorybuilder" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSessionFactory": { + "data": { + "uuid": "java-6-382", + "seg": [ + [ + [ + "sqlsessionfactory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSession": { + "data": { + "uuid": "java-6-383", + "seg": [ + [ + [ + "sqlsession" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mapper": { + "data": { + "uuid": "java-6-384", + "seg": [ + [ + [ + "mapper" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7447364_53427287", + "13_7441293_53417199", + "13_1080159_1285268", + "13_1069836_1271881" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1148", + "seg": [ + [ + [ + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1142", + "seg": [ + [ + [ + "mybatis", + "核心", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MyBatis配置": { + "children": [ + { + "properties属性": { + "children": [ + { + "property子元素": { + "data": { + "uuid": "java-6-385", + "seg": [ + [ + [ + "property", + "子", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用properties文件": { + "data": { + "uuid": "java-6-386", + "seg": [ + [ + [ + "properties", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_698028_584470", + "13_7435517_53406138", + "13_7462150_53447576", + "13_747323_798465", + "13_7442080_53418866", + "13_344408_347562", + "13_1052058_1249598", + "13_653050_461394", + "13_767269_826826", + "13_220471_173399" + ] + } + } + } + } + }, + { + "使用程序传递方式传递参数": { + "data": { + "uuid": "java-6-387", + "seg": [ + [ + [ + "程序", + "传递", + "方式", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_650082_456515" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1149", + "seg": [ + [ + [ + "properties", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "settings设置": { + "data": { + "uuid": "java-5-1150", + "seg": [ + [ + [ + "settings", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "typeAliases别名": { + "children": [ + { + "系统定义别名": { + "data": { + "uuid": "java-6-388", + "seg": [ + [ + [ + "系统", + "定义", + "别名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义别名": { + "data": { + "uuid": "java-6-389", + "seg": [ + [ + [ + "自定义", + "别名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7435596_53406436" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1151", + "seg": [ + [ + [ + "typealiases", + "别名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "typeHandler类型转换器": { + "children": [ + { + "系统定义的typeHandler": { + "data": { + "uuid": "java-6-390", + "seg": [ + [ + [ + "系统", + "定义", + "typehandler" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义typeHandler": { + "data": { + "uuid": "java-6-391", + "seg": [ + [ + [ + "自定义", + "typehandler" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_760257_816924" + ] + } + } + } + } + }, + { + "枚举typeHandler": { + "data": { + "uuid": "java-6-392", + "seg": [ + [ + [ + "枚举", + "typehandler" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件操作": { + "data": { + "uuid": "java-6-393", + "seg": [ + [ + [ + "文件", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1152", + "seg": [ + [ + [ + "typehandler", + "类型", + "转换器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ObjectFactory(对象工厂)": { + "data": { + "uuid": "java-5-1153", + "seg": [ + [ + [ + "objectfactory", + "对象", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "插件": { + "data": { + "uuid": "java-5-1154", + "seg": [ + [ + [ + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "environments(运行环境)": { + "children": [ + { + "transactionManager(事务管理器)": { + "data": { + "uuid": "java-6-394", + "seg": [ + [ + [ + "transactionmanager", + "事务", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "environment数据源环境": { + "data": { + "uuid": "java-6-395", + "seg": [ + [ + [ + "environment", + "数据源", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1155", + "seg": [ + [ + [ + "environments", + "运行", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "databaseIdProvider数据库厂商标识": { + "children": [ + { + "使用系统默认的databaseIdProvider": { + "data": { + "uuid": "java-6-396", + "seg": [ + [ + [ + "系统", + "默认", + "databaseidprovider" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "不使用系统规则": { + "data": { + "uuid": "java-6-397", + "seg": [ + [ + [ + "系统", + "规则" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1156", + "seg": [ + [ + [ + "databaseidprovider", + "数据库", + "厂商", + "标识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引入映射器的方法": { + "data": { + "uuid": "java-5-1157", + "seg": [ + [ + [ + "引入", + "映射器", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1143", + "seg": [ + [ + [ + "mybatis", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射器": { + "children": [ + { + "select元素——查询语句": { + "children": [ + { + "简单的select元素的应用": { + "data": { + "uuid": "java-6-398", + "seg": [ + [ + [ + "select", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_346996_352719", + "13_200150_120034", + "13_718499_712206", + "13_719609_713833", + "13_653659_462540", + "13_7439895_53414756", + "13_7464483_53450919", + "13_1094427_1304705", + "13_766240_825702", + "13_695021_576586" + ] + } + } + } + } + }, + { + "自动映射和驼峰映射": { + "data": { + "uuid": "java-6-399", + "seg": [ + [ + [ + "自动", + "映射" + ], + [ + "驼峰", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递多个参数": { + "data": { + "uuid": "java-6-400", + "seg": [ + [ + [ + "传递", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用resultMap映射结果集": { + "data": { + "uuid": "java-6-401", + "seg": [ + [ + [ + "resultmap", + "映射", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分页参数RowBounds": { + "data": { + "uuid": "java-6-402", + "seg": [ + [ + [ + "参数", + "rowbounds" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1158", + "seg": [ + [ + [ + "select", + "元素", + "查询", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "insert元素——插入语句": { + "children": [ + { + "简单的insert语句的应用": { + "data": { + "uuid": "java-6-403", + "seg": [ + [ + [ + "insert", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_792577_881387", + "13_378091_409006", + "13_158760_23371", + "13_7445419_53423997", + "13_1094547_1304893", + "13_744738_791293", + "13_776798_844629" + ] + } + } + } + } + }, + { + "主键回填": { + "data": { + "uuid": "java-6-404", + "seg": [ + [ + [ + "主键", + "回填" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_345491_349790" + ] + } + } + } + } + }, + { + "自定义主键": { + "data": { + "uuid": "java-6-405", + "seg": [ + [ + [ + "自定义", + "主键" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1159", + "seg": [ + [ + [ + "insert", + "元素", + "插入", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "update元素和delete元素": { + "data": { + "uuid": "java-5-1160", + "seg": [ + [ + [ + "update", + "元素" + ], + [ + "delete", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_764683_823412" + ] + } + } + } + } + }, + { + "sql元素": { + "data": { + "uuid": "java-5-1161", + "seg": [ + [ + [ + "sql", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数": { + "children": [ + { + "存储过程参数支持": { + "data": { + "uuid": "java-6-406", + "seg": [ + [ + [ + "存储", + "过程", + "参数", + "支持" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_855796_980900", + "13_390243_431654" + ] + } + } + } + } + }, + { + "特殊字符串的替换和处理(#和$)": { + "data": { + "uuid": "java-6-407", + "seg": [ + [ + [ + "字符串", + "替换" + ], + [], + [] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7446430_53425779" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1162", + "seg": [ + [ + [ + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "resultMap元素": { + "children": [ + { + "resultMap元素的构成": { + "data": { + "uuid": "java-6-408", + "seg": [ + [ + [ + "resultmap", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_357514_374286", + "13_357513_374268", + "13_367347_392868", + "13_661850_477108", + "13_844_1515", + "13_195305_104857", + "13_349797_357873", + "13_675693_510957", + "13_7429595_53396500" + ] + } + } + } + } + }, + { + "使用map存储结果集": { + "data": { + "uuid": "java-6-409", + "seg": [ + [ + [ + "map", + "存储", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用POJO存储结果集": { + "data": { + "uuid": "java-6-410", + "seg": [ + [ + [ + "pojo", + "存储", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1163", + "seg": [ + [ + [ + "resultmap", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "级联": { + "children": [ + { + "MyBatis中的级联": { + "data": { + "uuid": "java-6-411", + "seg": [ + [ + [ + "mybatis", + "级联" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "建立POJO": { + "data": { + "uuid": "java-6-412", + "seg": [ + [ + [ + "建立", + "pojo" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1102259_1316632" + ] + } + } + } + } + }, + { + "配置映射文件": { + "data": { + "uuid": "java-6-413", + "seg": [ + [ + [ + "配置", + "映射", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "延迟加载": { + "data": { + "uuid": "java-6-414", + "seg": [ + [ + [ + "延迟", + "加载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "另一种级联": { + "data": { + "uuid": "java-6-415", + "seg": [ + [ + [ + "级联" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_692111_566129" + ] + } + } + } + } + }, + { + "多对多级联": { + "data": { + "uuid": "java-6-416", + "seg": [ + [ + [ + "级联" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1164", + "seg": [ + [ + [ + "级联" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓存": { + "children": [ + { + "一级缓存和二级缓存": { + "data": { + "uuid": "java-6-417", + "seg": [ + [ + [ + "缓存" + ], + [ + "二级缓存" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_169991_46226", + "13_1069107_1269969", + "13_677561_519634", + "13_1061836_1259650" + ] + } + } + } + } + }, + { + "缓存配置项、自定义和引用": { + "data": { + "uuid": "java-6-418", + "seg": [ + [ + [ + "缓存", + "配置", + "项" + ], + [ + "自定义" + ], + [ + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1165", + "seg": [ + [ + [ + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储过程": { + "children": [ + { + "IN和OUT参数存储过程": { + "data": { + "uuid": "java-6-419", + "seg": [ + [ + [ + "in" + ], + [ + "out", + "参数", + "存储", + "过程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_366309_390791", + "13_227799_192539", + "13_662268_484303", + "13_767844_838975", + "13_704735_600584", + "13_242721_230425", + "13_366325_390686", + "13_7420138_53378224", + "13_997398_1175877", + "13_7410347_53361030" + ] + } + } + } + } + }, + { + "游标的使用": { + "data": { + "uuid": "java-6-420", + "seg": [ + [ + [ + "游标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1166", + "seg": [ + [ + [ + "存储", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1144", + "seg": [ + [ + [ + "映射器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "动态SQL": { + "children": [ + { + "if元素": { + "data": { + "uuid": "java-5-1167", + "seg": [ + [ + [ + "if", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_678351_522304" + ] + } + } + } + } + }, + { + "choose、when、otherwise元素": { + "data": { + "uuid": "java-5-1168", + "seg": [ + [ + [ + "choose" + ], + [ + "when" + ], + [ + "otherwise", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "trim、where、set元素": { + "data": { + "uuid": "java-5-1169", + "seg": [ + [ + [ + "trim" + ], + [ + "where" + ], + [ + "set", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7395308_53337625", + "13_751369_804959", + "13_770751_832746", + "13_743214_799349", + "13_648307_452735" + ] + } + } + } + } + }, + { + "foreach元素": { + "data": { + "uuid": "java-5-1170", + "seg": [ + [ + [ + "for", + "each", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用test的属性判断字符串": { + "data": { + "uuid": "java-5-1171", + "seg": [ + [ + [ + "test", + "属性", + "判断", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7396172_53339430", + "13_759352_815609", + "13_710478_668605" + ] + } + } + } + } + }, + { + "bind元素": { + "data": { + "uuid": "java-5-1172", + "seg": [ + [ + [ + "bind", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1145", + "seg": [ + [ + [ + "动态", + "sql" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7463881_53450148" + ] + } + } + } + } + }, + { + "MyBatis的解析和运行原理": { + "children": [ + { + "构建SqlSessionFactory过程": { + "children": [ + { + "构建Configuration": { + "data": { + "uuid": "java-6-421", + "seg": [ + [ + [ + "构建", + "configuration" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_680058_529173" + ] + } + } + } + } + }, + { + "构建映射器的内部组成": { + "data": { + "uuid": "java-6-422", + "seg": [ + [ + [ + "构建", + "映射器", + "内部" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建SqlSessionFactory": { + "data": { + "uuid": "java-6-423", + "seg": [ + [ + [ + "构建", + "sqlsessionfactory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1173", + "seg": [ + [ + [ + "构建", + "sqlsessionfactory", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSession运行过程": { + "children": [ + { + "映射器(Mapper)的动态代理": { + "data": { + "uuid": "java-6-424", + "seg": [ + [ + [ + "映射器", + "mapper", + "动态", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SqlSession下的四大对象": { + "data": { + "uuid": "java-6-425", + "seg": [ + [ + [ + "sqlsession", + "四大", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1174", + "seg": [ + [ + [ + "sqlsession", + "运行", + "过程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7446545_53426000", + "13_7459410_53444321", + "13_745020_792074", + "13_7440518_53415820", + "13_7436236_53407761", + "13_7461265_53446337", + "13_7438517_53411894", + "13_7433341_53403403", + "13_7459588_53444585", + "13_1095921_1307762" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1146", + "seg": [ + [ + [ + "mybatis", + "解析" + ], + [ + "运行", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "插件": { + "children": [ + { + "插件接口": { + "data": { + "uuid": "java-5-1175", + "seg": [ + [ + [ + "插件接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "插件的初始化": { + "data": { + "uuid": "java-5-1176", + "seg": [ + [ + [ + "插件", + "初始化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1044358_1241766", + "13_175639_56998", + "13_7459818_53444824", + "13_197822_112473", + "13_250330_247315", + "13_768339_830390", + "13_173583_52919", + "13_358558_376881" + ] + } + } + } + } + }, + { + "插件的代理和反射设计": { + "data": { + "uuid": "java-5-1177", + "seg": [ + [ + [ + "插件", + "代理" + ], + [ + "反射", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用的工具类——MetaObject": { + "data": { + "uuid": "java-5-1178", + "seg": [ + [ + [ + "工具", + "类", + "metaobject" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1147", + "seg": [ + [ + [ + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-601", + "seg": [ + [ + [ + "互联网", + "持久", + "框架", + "mybatis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring基础": { + "children": [ + { + "Spring IoC的概念": { + "children": [ + { + "Spring的概述": { + "children": [ + { + "Spring的简史": { + "data": { + "uuid": "java-6-426", + "seg": [ + [ + [ + "spring", + "简史" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7447261_53426809", + "13_248500_244068", + "13_1094041_1303919", + "13_7436273_53408163", + "13_1073684_1276046", + "13_744587_790888", + "13_7414059_53366478", + "13_1101826_1316308", + "13_718612_712642", + "13_774780_838765" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1179", + "seg": [ + [ + [ + "spring", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring IoC概述": { + "children": [ + { + "主动创建对象": { + "data": { + "uuid": "java-6-427", + "seg": [ + [ + [ + "主动", + "创建对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_171610_48688", + "13_240181_224350" + ] + } + } + } + } + }, + { + "被动创建对象": { + "data": { + "uuid": "java-6-428", + "seg": [ + [ + [ + "被动", + "创建对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring IoC阐述": { + "data": { + "uuid": "java-6-429", + "seg": [ + [ + [ + "spring", + "ioc", + "阐述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1180", + "seg": [ + [ + [ + "spring", + "ioc", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring IoC容器": { + "children": [ + { + "Spring IoC容器的设计": { + "data": { + "uuid": "java-6-430", + "seg": [ + [ + [ + "spring", + "ioc", + "容器", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring IoC容器的初始化和依赖注入": { + "data": { + "uuid": "java-6-431", + "seg": [ + [ + [ + "spring", + "ioc", + "容器", + "初始化" + ], + [ + "依赖", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Bean的生命周期": { + "data": { + "uuid": "java-6-432", + "seg": [ + [ + [ + "spring", + "bean", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1053963_1251218" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1181", + "seg": [ + [ + [ + "spring", + "ioc", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1148", + "seg": [ + [ + [ + "spring", + "ioc", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装配Spring Bean": { + "children": [ + { + "依赖注入的3种方式": { + "children": [ + { + "构造器注入": { + "data": { + "uuid": "java-6-433", + "seg": [ + [ + [ + "构造", + "器", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用setter注入": { + "data": { + "uuid": "java-6-434", + "seg": [ + [ + [ + "setter", + "注入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_748994_801277", + "13_1104552_1318732", + "13_906265_1041538" + ] + } + } + } + } + }, + { + "接口注入": { + "data": { + "uuid": "java-6-435", + "seg": [ + [ + [ + "接口", + "注入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7466287_53453557" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1182", + "seg": [ + [ + [ + "依赖", + "注入", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装配Bean概述": { + "data": { + "uuid": "java-5-1183", + "seg": [ + [ + [ + "装配", + "bean", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过XML配置装配Bean": { + "children": [ + { + "装配简易值": { + "data": { + "uuid": "java-6-436", + "seg": [ + [ + [ + "装配", + "简易", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457952_53442446", + "13_237112_216840", + "13_7447927_53427875" + ] + } + } + } + } + }, + { + "装配集合": { + "data": { + "uuid": "java-6-437", + "seg": [ + [ + [ + "装配", + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名空间装配": { + "data": { + "uuid": "java-6-438", + "seg": [ + [ + [ + "命名", + "空间", + "装配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1184", + "seg": [ + [ + [ + "xml", + "配置", + "装配", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过注解装配Bean": { + "children": [ + { + "使用@Component装配Bean": { + "data": { + "uuid": "java-6-439", + "seg": [ + [ + [ + "component", + "装配", + "bean" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_761116_818379" + ] + } + } + } + } + }, + { + "自动装配——@Autowired": { + "data": { + "uuid": "java-6-440", + "seg": [ + [ + [ + "自动", + "装配", + "autowired" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_899587_1035893", + "13_224870_185012", + "13_7398762_53345258", + "13_670755_493751" + ] + } + } + } + } + }, + { + "自动装配的歧义性(@Primary和@Qualifier)": { + "data": { + "uuid": "java-6-441", + "seg": [ + [ + [ + "自动", + "装配", + "歧义", + "性", + "primary" + ], + [ + "qual", + "if", + "ier" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装载带有参数的构造方法类": { + "data": { + "uuid": "java-6-442", + "seg": [ + [ + [ + "装载", + "带有", + "参数", + "构造方法", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1056176_1253320" + ] + } + } + } + } + }, + { + "使用@Bean装配Bean": { + "data": { + "uuid": "java-6-443", + "seg": [ + [ + [ + "bean", + "装配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_171575_48654", + "13_7454573_53437250", + "13_1059336_1256644", + "13_7442431_53419239", + "13_754143_809038", + "13_1096982_1309856", + "13_205356_135709", + "13_222465_178546", + "13_664341_481377", + "13_229884_198425" + ] + } + } + } + } + }, + { + "注解自定义Bean的初始化和销毁方法": { + "data": { + "uuid": "java-6-444", + "seg": [ + [ + [ + "注解", + "自定义", + "bean", + "初始化" + ], + [ + "销毁", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1185", + "seg": [ + [ + [ + "注解", + "装配", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装配的混合使用": { + "data": { + "uuid": "java-5-1186", + "seg": [ + [ + [ + "装配", + "混合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Profile": { + "children": [ + { + "使用注解@Profile配置": { + "data": { + "uuid": "java-6-445", + "seg": [ + [ + [ + "注解", + "profile", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用XML定义Profile": { + "data": { + "uuid": "java-6-446", + "seg": [ + [ + [ + "xml", + "定义", + "profile" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动Profile": { + "data": { + "uuid": "java-6-447", + "seg": [ + [ + [ + "启动", + "profile" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "点睛": { + "data": { + "uuid": "java-6-448", + "seg": [ + [ + [ + "点睛" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "演示": { + "data": { + "uuid": "java-6-449", + "seg": [ + [ + [ + "演示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1187", + "seg": [ + [ + [ + "profile" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "加载属性(properties)文件": { + "children": [ + { + "使用注解方式加载属性文件": { + "data": { + "uuid": "java-6-450", + "seg": [ + [ + [ + "注解", + "方式", + "加载", + "属性", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用XML方式加载属性文件": { + "data": { + "uuid": "java-6-451", + "seg": [ + [ + [ + "xml", + "方式", + "加载", + "属性", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1051450_1253116", + "13_166601_39898", + "13_450232_437953", + "13_3498_4369" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1188", + "seg": [ + [ + [ + "加载", + "属性", + "properties", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "条件化装配Bean": { + "data": { + "uuid": "java-5-1189", + "seg": [ + [ + [ + "条件", + "化", + "装配", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Bean的作用域": { + "data": { + "uuid": "java-5-1190", + "seg": [ + [ + [ + "bean", + "作用域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring表达式(Spring EL)": { + "children": [ + { + "Spring EL相关的类": { + "data": { + "uuid": "java-6-452", + "seg": [ + [ + [ + "spring", + "el", + "相关", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1065089_1264133", + "13_678940_524450" + ] + } + } + } + } + }, + { + "Spring EL运算": { + "data": { + "uuid": "java-6-453", + "seg": [ + [ + [ + "spring", + "el", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_220981_174561", + "13_658636_471863", + "13_656567_468414", + "13_378218_409407", + "13_187663_82691", + "13_679634_527227", + "13_230418_199714", + "13_202485_127504", + "13_770519_832363", + "13_377962_408768" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1191", + "seg": [ + [ + [ + "spring", + "表达式", + "el" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1149", + "seg": [ + [ + [ + "装配", + "spring", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向切面编程": { + "children": [ + { + "一个简单的约定游戏": { + "children": [ + { + "约定规则": { + "data": { + "uuid": "java-6-454", + "seg": [ + [ + [ + "约定", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读者的代码": { + "data": { + "uuid": "java-6-455", + "seg": [ + [ + [ + "读者" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "笔者的代码": { + "data": { + "uuid": "java-6-456", + "seg": [ + [ + [ + "笔者" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1192", + "seg": [ + [ + [ + "约定", + "游戏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring AOP的基本概念": { + "children": [ + { + "AOP的概念和使用原因": { + "data": { + "uuid": "java-6-457", + "seg": [ + [ + [ + "aop", + "概念" + ], + [ + "原因" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_336149_330920", + "13_383093_418305", + "13_347582_353643", + "13_260546_271054", + "13_362605_381868", + "13_349079_356403", + "13_1071696_1273975", + "13_695538_578279", + "13_365932_389650", + "13_1092051_1299764" + ] + } + } + } + } + }, + { + "面向切面编程的术语": { + "data": { + "uuid": "java-6-458", + "seg": [ + [ + [ + "面向", + "切面", + "编程", + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring对AOP的支持": { + "data": { + "uuid": "java-6-459", + "seg": [ + [ + [ + "spring", + "aop", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1193", + "seg": [ + [ + [ + "spring", + "aop", + "基本概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用@AspectJ注解开发Spring AOP": { + "children": [ + { + "选择切点": { + "data": { + "uuid": "java-6-460", + "seg": [ + [ + [ + "选择", + "切点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建切面": { + "data": { + "uuid": "java-6-461", + "seg": [ + [ + [ + "创建", + "切面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接点": { + "data": { + "uuid": "java-6-462", + "seg": [ + [ + [ + "连接点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试AOP": { + "children": [ + { + "装配AOP": { + "data": { + "uuid": "java-7-67", + "seg": [ + [ + [ + "装配", + "aop" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_747911_799496", + "13_1066562_1266614", + "13_758272_814170", + "13_697813_583994", + "13_758271_814180", + "13_391730_434644", + "13_7402635_53350700", + "13_1091571_1299120", + "13_919330_1054217", + "13_354441_368934" + ] + } + } + } + } + }, + { + "使用注解装配AOP": { + "data": { + "uuid": "java-7-68", + "seg": [ + [ + [ + "注解", + "装配", + "aop" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1091698_1299246" + ] + } + } + } + } + }, + { + "AOP避坑指南": { + "data": { + "uuid": "java-7-69", + "seg": [ + [ + [ + "aop", + "避坑", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-6-463", + "seg": [ + [ + [ + "aop" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环绕通知": { + "data": { + "uuid": "java-6-464", + "seg": [ + [ + [ + "环绕", + "通知" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_224055_182834" + ] + } + } + } + } + }, + { + "织入": { + "data": { + "uuid": "java-6-465", + "seg": [ + [ + [ + "织入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给通知传递参数": { + "data": { + "uuid": "java-6-466", + "seg": [ + [ + [ + "通知", + "传递", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引入": { + "data": { + "uuid": "java-6-467", + "seg": [ + [ + [ + "引入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_251003_248850" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1194", + "seg": [ + [ + [ + "aspectj", + "注解", + "开发", + "spring", + "aop" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用XML配置开发Spring AOP": { + "children": [ + { + "前置通知、后置通知、返回通知和异常通知": { + "data": { + "uuid": "java-6-468", + "seg": [ + [ + [ + "前置", + "通知" + ], + [ + "后置", + "通知" + ], + [ + "返回", + "通知" + ], + [ + "异常", + "通知" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环绕通知": { + "data": { + "uuid": "java-6-469", + "seg": [ + [ + [ + "环绕", + "通知" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给通知传递参数": { + "data": { + "uuid": "java-6-470", + "seg": [ + [ + [ + "通知", + "传递", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引入": { + "data": { + "uuid": "java-6-471", + "seg": [ + [ + [ + "引入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1195", + "seg": [ + [ + [ + "xml", + "配置", + "开发", + "spring", + "aop" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "经典Spring AOP应用程序": { + "data": { + "uuid": "java-5-1196", + "seg": [ + [ + [ + "经典", + "spring", + "aop", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多个切面": { + "data": { + "uuid": "java-5-1197", + "seg": [ + [ + [ + "切面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1150", + "seg": [ + [ + [ + "面向", + "切面", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring和数据库编程": { + "children": [ + { + "传统的JDBC代码的弊端": { + "data": { + "uuid": "java-5-1198", + "seg": [ + [ + [ + "传统", + "jdbc", + "弊端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置数据库资源": { + "children": [ + { + "使用简单数据库配置": { + "data": { + "uuid": "java-6-472", + "seg": [ + [ + [ + "数据库", + "配置" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_945512_1246897", + "13_744785_791412", + "13_6654451_47494460", + "13_1014740_1206948" + ] + } + } + } + } + }, + { + "使用第三方数据库连接池": { + "data": { + "uuid": "java-6-473", + "seg": [ + [ + [ + "数据库", + "连接池" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_649452_455054", + "13_211020_150861", + "13_771060_833418" + ] + } + } + } + } + }, + { + "使用JNDI数据库连接池": { + "data": { + "uuid": "java-6-474", + "seg": [ + [ + [ + "jndi", + "数据库", + "连接池" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1199", + "seg": [ + [ + [ + "配置", + "数据库", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDBC代码失控的解决方案——jdbcTemplate": { + "children": [ + { + "jdbcTemplate的增、删、查、改": { + "data": { + "uuid": "java-6-475", + "seg": [ + [ + [ + "jdbctemplate", + "增" + ], + [ + "删" + ], + [ + "查" + ], + [ + "改" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7464205_53450580", + "13_7408154_53358359", + "13_691343_563459", + "13_241231_227152", + "13_7455139_53437963" + ] + } + } + } + } + }, + { + "执行多条SQL": { + "data": { + "uuid": "java-6-476", + "seg": [ + [ + [ + "执行", + "sql" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_955000_1099559" + ] + } + } + } + } + }, + { + "jdbcTemplate的源码分析": { + "data": { + "uuid": "java-6-477", + "seg": [ + [ + [ + "jdbctemplate", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_769407_830918", + "13_746961_797480", + "13_764693_823456", + "13_212752_154599", + "13_771297_833689", + "13_269983_291550", + "13_1077600_1281998" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1200", + "seg": [ + [ + [ + "jdbc", + "失控", + "解决方案", + "jdbctemplate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring的缺点": { + "data": { + "uuid": "java-5-1201", + "seg": [ + [ + [ + "spring", + "缺点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1151", + "seg": [ + [ + [ + "spring" + ], + [ + "数据库", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入Spring数据库事务管理": { + "children": [ + { + "Spring数据库事务管理器的设计": { + "children": [ + { + "配置事务管理器": { + "data": { + "uuid": "java-6-478", + "seg": [ + [ + [ + "配置", + "事务", + "管理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用Java配置方式实现Spring数据库事务": { + "data": { + "uuid": "java-6-479", + "seg": [ + [ + [ + "java", + "配置", + "方式", + "spring", + "数据库", + "事务" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1090254_1296979" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1202", + "seg": [ + [ + [ + "spring", + "数据库", + "事务", + "管理器", + "设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "编程式事务": { + "data": { + "uuid": "java-5-1203", + "seg": [ + [ + [ + "编程", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明式事务": { + "children": [ + { + "Transactional的配置项": { + "data": { + "uuid": "java-6-480", + "seg": [ + [ + [ + "transactional", + "配置", + "项" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_720161_714490", + "13_1009786_1197067" + ] + } + } + } + } + }, + { + "使用XML进行配置事务管理器": { + "data": { + "uuid": "java-6-481", + "seg": [ + [ + [ + "xml", + "配置", + "事务", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事务定义器": { + "data": { + "uuid": "java-6-482", + "seg": [ + [ + [ + "事务", + "定义", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明式事务的约定流程": { + "data": { + "uuid": "java-6-483", + "seg": [ + [ + [ + "声明", + "事务", + "约定", + "流程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223298_181176" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1204", + "seg": [ + [ + [ + "声明", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库的相关知识": { + "children": [ + { + "数据库事务ACID特性": { + "data": { + "uuid": "java-6-484", + "seg": [ + [ + [ + "数据库", + "事务", + "acid", + "特性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_28662_8258" + ] + } + } + } + } + }, + { + "丢失更新": { + "data": { + "uuid": "java-6-485", + "seg": [ + [ + [ + "丢失", + "更新" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_903973_1039337" + ] + } + } + } + } + }, + { + "隔离级别": { + "data": { + "uuid": "java-6-486", + "seg": [ + [ + [ + "隔离", + "级别" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1205", + "seg": [ + [ + [ + "数据库", + "相关", + "知识" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7467485_53455031", + "13_7443029_53420062" + ] + } + } + } + } + }, + { + "选择隔离级别和传播行为": { + "children": [ + { + "选择隔离级别": { + "data": { + "uuid": "java-6-487", + "seg": [ + [ + [ + "选择", + "隔离", + "级别" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_916851_1052193" + ] + } + } + } + } + }, + { + "传播行为": { + "data": { + "uuid": "java-6-488", + "seg": [ + [ + [ + "传播" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1206", + "seg": [ + [ + [ + "选择", + "隔离", + "级别" + ], + [ + "传播" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Spring+MyBatis组合中使用事务": { + "data": { + "uuid": "java-5-1207", + "seg": [ + [ + [ + "spring", + "mybatis", + "组合", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "典型错误用法的剖析": { + "children": [ + { + "错误使用Service": { + "data": { + "uuid": "java-6-489", + "seg": [ + [ + [ + "service" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_179012_63959", + "13_7415422_53368883", + "13_747273_798370", + "13_230677_814168", + "13_1076938_1281638", + "13_753635_815228", + "13_6242950_44784780", + "13_993371_1164516", + "13_753847_815229", + "13_751640_805301" + ] + } + } + } + } + }, + { + "过长时间占用事务": { + "data": { + "uuid": "java-6-490", + "seg": [ + [ + [ + "长时间", + "占用", + "事务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "错误捕捉异常": { + "data": { + "uuid": "java-6-491", + "seg": [ + [ + [ + "捕捉", + "异常" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_751077_804510" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1208", + "seg": [ + [ + [ + "典型", + "用法", + "剖析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1152", + "seg": [ + [ + [ + "spring", + "数据库", + "事务管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring基础配置": { + "children": [ + { + "Java配置": { + "data": { + "uuid": "java-5-1209", + "seg": [ + [ + [ + "java", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1153", + "seg": [ + [ + [ + "spring", + "基础", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7461954_53447234", + "13_746507_796110", + "13_745072_792242", + "13_7432923_53402553", + "13_7467041_53454371", + "13_661138_476013", + "13_271386_294427", + "13_7467056_53454391", + "13_196314_108116", + "13_749069_801378" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-602", + "seg": [ + [ + [ + "spring", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC框架": { + "children": [ + { + "Spring MVC的初始化和流程": { + "children": [ + { + "MVC设计概述": { + "children": [ + { + "Spring MVC的架构": { + "data": { + "uuid": "java-6-492", + "seg": [ + [ + [ + "spring", + "mvc", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_747147_798054", + "13_764262_823601", + "13_717558_711735", + "13_718650_712409", + "13_366524_391124", + "13_212665_154388", + "13_1091552_1299651", + "13_160398_27972", + "13_250951_248747", + "13_965884_1117655" + ] + } + } + } + } + }, + { + "Spring MVC组件与流程": { + "data": { + "uuid": "java-6-493", + "seg": [ + [ + [ + "spring", + "mvc", + "组件" + ], + [ + "流程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_758301_826725" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1210", + "seg": [ + [ + [ + "mvc", + "设计", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC初始化": { + "children": [ + { + "初始化Spring IoC上下文": { + "data": { + "uuid": "java-6-494", + "seg": [ + [ + [ + "初始化", + "spring", + "ioc", + "上下文" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_702981_593658" + ] + } + } + } + } + }, + { + "初始化映射请求上下文": { + "data": { + "uuid": "java-6-495", + "seg": [ + [ + [ + "初始化", + "映射", + "上下文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用注解配置方式初始化": { + "data": { + "uuid": "java-6-496", + "seg": [ + [ + [ + "注解", + "配置", + "方式", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1211", + "seg": [ + [ + [ + "spring", + "mvc", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC开发流程详解": { + "children": [ + { + "配置@RequestMapping": { + "data": { + "uuid": "java-6-497", + "seg": [ + [ + [ + "配置", + "requestmapping" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制器的开发": { + "data": { + "uuid": "java-6-498", + "seg": [ + [ + [ + "控制器", + "开发" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7467279_53454767", + "13_7421009_53378985", + "13_689832_558711", + "13_257454_264028", + "13_662793_478607", + "13_201199_123326", + "13_667476_486655", + "13_211555_151624", + "13_352673_363693", + "13_746063_794914" + ] + } + } + } + } + }, + { + "视图渲染": { + "data": { + "uuid": "java-6-499", + "seg": [ + [ + [ + "视图", + "渲染" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1212", + "seg": [ + [ + [ + "spring", + "mvc", + "开发", + "流程", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745874_794450" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1154", + "seg": [ + [ + [ + "spring", + "mvc", + "初始化" + ], + [ + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入Spring MVC组件开发": { + "children": [ + { + "控制器接收各类请求参数": { + "children": [ + { + "接收普通请求参数": { + "data": { + "uuid": "java-6-500", + "seg": [ + [ + [ + "接收", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_350015_358193", + "13_382678_417536", + "13_1096102_1308142", + "13_7450376_53431119", + "13_1094495_1304875", + "13_29769_8982", + "13_384807_421520", + "13_264945_280390", + "13_7395708_53338494", + "13_239002_221674" + ] + } + } + } + } + }, + { + "使用@RequestParam注解获取参数": { + "data": { + "uuid": "java-6-501", + "seg": [ + [ + [ + "requestparam", + "注解", + "获取", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_371525_398152", + "13_7409335_53359706", + "13_1087881_1294485", + "13_1100750_1315516" + ] + } + } + } + } + }, + { + "使用URL传递参数": { + "data": { + "uuid": "java-6-502", + "seg": [ + [ + [ + "url", + "传递", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递JSON参数": { + "data": { + "uuid": "java-6-503", + "seg": [ + [ + [ + "传递", + "json", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_755227_810579", + "13_357268_373742", + "13_172364_49689", + "13_932315_1067391", + "13_7432199_53401189", + "13_694093_573159", + "13_677428_519430", + "13_769558_830467" + ] + } + } + } + } + }, + { + "接收列表数据和表单序列化": { + "data": { + "uuid": "java-6-504", + "seg": [ + [ + [ + "接收", + "列表", + "数据" + ], + [ + "表单", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1213", + "seg": [ + [ + [ + "控制器接收", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重定向": { + "data": { + "uuid": "java-5-1214", + "seg": [ + [ + [ + "重定向" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_219060_169639", + "13_750941_804353" + ] + } + } + } + } + }, + { + "保存并获取属性参数": { + "children": [ + { + "注解@RequestAttribute": { + "data": { + "uuid": "java-6-505", + "seg": [ + [ + [ + "注解", + "requestattribute" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解@SessionAttribute和注解@SessionAttributes": { + "data": { + "uuid": "java-6-506", + "seg": [ + [ + [ + "注解", + "sessionattribute" + ], + [ + "注解", + "sessionattributes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注解@CookieValue和注解@RequestHeader": { + "data": { + "uuid": "java-6-507", + "seg": [ + [ + [ + "注解", + "cookievalue" + ], + [ + "注解", + "requestheader" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1215", + "seg": [ + [ + [ + "保存", + "获取", + "属性", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745904_794518" + ] + } + } + } + } + }, + { + "验证表单": { + "children": [ + { + "使用JSR 303注解验证输入内容": { + "data": { + "uuid": "java-6-508", + "seg": [ + [ + [ + "jsr", + "注解", + "验证", + "输入", + "内容" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7432322_53401422" + ] + } + } + } + } + }, + { + "使用验证器": { + "data": { + "uuid": "java-6-509", + "seg": [ + [ + [ + "验证", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_388146_427635", + "13_355347_369150", + "13_161187_30046", + "13_357582_374498", + "13_398755_436903", + "13_745601_793774", + "13_779747_848164", + "13_4646252_53418158", + "13_755683_811086", + "13_1097340_1310701" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1216", + "seg": [ + [ + [ + "验证", + "表单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据模型": { + "data": { + "uuid": "java-5-1217", + "seg": [ + [ + [ + "数据模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "视图和视图解析器": { + "children": [ + { + "视图": { + "data": { + "uuid": "java-6-510", + "seg": [ + [ + [ + "视图" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3612_4457", + "13_1739_2889", + "13_387363_426357" + ] + } + } + } + } + }, + { + "视图解析器": { + "data": { + "uuid": "java-6-511", + "seg": [ + [ + [ + "视图", + "解析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1218", + "seg": [ + [ + [ + "视图" + ], + [ + "视图", + "解析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上传文件": { + "children": [ + { + "MultipartResolver概述": { + "data": { + "uuid": "java-6-512", + "seg": [ + [ + [ + "multipartresolver", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提交上传文件表单": { + "data": { + "uuid": "java-6-513", + "seg": [ + [ + [ + "提交", + "上传", + "文件", + "表单" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_379465_411455", + "13_720361_714838", + "13_242201_229416", + "13_7422148_53379564", + "13_7450697_53431731", + "13_356008_371083", + "13_190470_91003", + "13_7438287_53411645", + "13_675948_512630", + "13_714076_706253" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1219", + "seg": [ + [ + [ + "上传", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_756944_812193" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1155", + "seg": [ + [ + [ + "spring", + "mvc", + "组件", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC高级应用": { + "children": [ + { + "Spring MVC的数据转换和格式化": { + "children": [ + { + "HttpMessageConverter和JSON消息转换器": { + "data": { + "uuid": "java-6-514", + "seg": [ + [ + [ + "httpmessageconverter" + ], + [ + "json", + "消息", + "转换器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7405408_53354873", + "13_649005_454139", + "13_173484_53024", + "13_886222_1025719", + "13_762133_820286", + "13_3522139_22965042" + ] + } + } + } + } + }, + { + "一对一转换器(Converter)": { + "data": { + "uuid": "java-6-515", + "seg": [ + [ + [ + "转换器", + "converter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7462731_53448360" + ] + } + } + } + } + }, + { + "数组和集合转换器GenericConverter": { + "data": { + "uuid": "java-6-516", + "seg": [ + [ + [ + "数组" + ], + [ + "集合", + "转换器", + "genericconverter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_246708_239194" + ] + } + } + } + } + }, + { + "使用格式化器(Formatter)": { + "data": { + "uuid": "java-6-517", + "seg": [ + [ + [ + "格式化", + "器", + "formatter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1220", + "seg": [ + [ + [ + "spring", + "mvc", + "数据", + "转换" + ], + [ + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为控制器添加通知": { + "data": { + "uuid": "java-5-1221", + "seg": [ + [ + [ + "控制器", + "添加", + "通知" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理异常": { + "data": { + "uuid": "java-5-1222", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "国际化": { + "children": [ + { + "MessageSource接口": { + "data": { + "uuid": "java-6-518", + "seg": [ + [ + [ + "messagesource", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CookieLocaleResolver和SessionLocaleResolver": { + "data": { + "uuid": "java-6-519", + "seg": [ + [ + [ + "cookielocaleresolver" + ], + [ + "sessionlocaleresolver" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "国际化拦截器(LocaleChangeInterceptor)": { + "data": { + "uuid": "java-6-520", + "seg": [ + [ + [ + "国际化", + "拦截器", + "localechangeinterceptor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发国际化": { + "data": { + "uuid": "java-6-521", + "seg": [ + [ + [ + "开发", + "国际化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1223", + "seg": [ + [ + [ + "国际化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1156", + "seg": [ + [ + [ + "spring", + "mvc", + "高级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-603", + "seg": [ + [ + [ + "spring", + "mvc", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SSM框架+Redis实践应用": { + "children": [ + { + "高并发业务": { + "children": [ + { + "互联系统应用架构基础分析": { + "data": { + "uuid": "java-5-1224", + "seg": [ + [ + [ + "互联", + "系统", + "架构", + "基础", + "分析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高并发系统的分析和设计": { + "children": [ + { + "有效请求和无效请求": { + "data": { + "uuid": "java-6-522", + "seg": [ + [ + [], + [ + "无效" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_161442_30801", + "13_768660_828979", + "13_763371_821766", + "13_194588_102761", + "13_7398998_53345728", + "13_271415_294606" + ] + } + } + } + } + }, + { + "系统设计": { + "data": { + "uuid": "java-6-523", + "seg": [ + [ + [ + "系统", + "设计" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_204496_133396" + ] + } + } + } + } + }, + { + "数据库设计": { + "data": { + "uuid": "java-6-524", + "seg": [ + [ + [ + "数据库", + "设计" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_384231_420504", + "13_675681_510933", + "13_353962_366551", + "13_7464702_53452688", + "13_183529_70787", + "13_349574_360109", + "13_267026_285540", + "13_676081_514272", + "13_206197_138313", + "13_383965_419844" + ] + } + } + } + } + }, + { + "动静分离技术": { + "data": { + "uuid": "java-6-525", + "seg": [ + [ + [ + "动静", + "分离", + "技术" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "锁和高并发": { + "data": { + "uuid": "java-6-526", + "seg": [ + [ + [ + "锁" + ], + [ + "高", + "并发" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_745554_793638", + "13_780059_848766", + "13_7462440_53447952", + "13_644541_445450", + "13_348630_355504", + "13_27645_7613", + "13_7398131_53343980", + "13_888763_1027485", + "13_644404_445088", + "13_234454_211429" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1225", + "seg": [ + [ + [ + "高", + "并发", + "系统", + "分析" + ], + [ + "设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "搭建抢红包开发环境和超发现象": { + "children": [ + { + "搭建Service层和DAO层": { + "data": { + "uuid": "java-6-527", + "seg": [ + [ + [ + "搭建", + "service", + "层" + ], + [ + "dao", + "层" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7431228_53399333", + "13_7427442_53391929", + "13_675230_508163", + "13_1100062_1314981", + "13_679913_528357", + "13_386459_424686" + ] + } + } + } + } + }, + { + "使用全注解搭建SSM开发环境": { + "data": { + "uuid": "java-6-528", + "seg": [ + [ + [ + "全", + "注解", + "搭建", + "ssm", + "开发", + "环境" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_773088_836683", + "13_244097_233231" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1226", + "seg": [ + [ + [ + "搭建", + "抢红包", + "开发", + "环境" + ], + [ + "超", + "象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "悲观锁": { + "data": { + "uuid": "java-5-1227", + "seg": [ + [ + [ + "悲观", + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "乐观锁": { + "children": [ + { + "CAS原理概述": { + "data": { + "uuid": "java-6-529", + "seg": [ + [ + [ + "cas", + "原理", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7424626_53385754", + "13_1090035_1296852" + ] + } + } + } + } + }, + { + "乐观锁实现抢红包业务": { + "data": { + "uuid": "java-6-530", + "seg": [ + [ + [ + "乐观", + "锁", + "抢红包", + "业务" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_773162_836802", + "13_7459884_53444915", + "13_246916_239704" + ] + } + } + } + } + }, + { + "乐观锁重入机制": { + "data": { + "uuid": "java-6-531", + "seg": [ + [ + [ + "乐观", + "锁", + "重入", + "机制" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_768807_829176" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1228", + "seg": [ + [ + [ + "乐观", + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Redis实现抢红包": { + "children": [ + { + "使用注解方式配置Redis": { + "data": { + "uuid": "java-6-532", + "seg": [ + [ + [ + "注解", + "方式", + "配置", + "redis" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据存储设计": { + "data": { + "uuid": "java-6-533", + "seg": [ + [ + [ + "数据", + "存储", + "设计" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_372963_400631", + "13_243755_232623", + "13_7413993_53366303" + ] + } + } + } + } + }, + { + "使用Redis实现抢红包": { + "data": { + "uuid": "java-6-534", + "seg": [ + [ + [ + "redis", + "抢红包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1229", + "seg": [ + [ + [ + "redis", + "抢红包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "各类方式的优缺点": { + "data": { + "uuid": "java-5-1230", + "seg": [ + [ + [ + "方式", + "优缺点" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_208196_144116" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1157", + "seg": [ + [ + [ + "高", + "并发", + "业务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-604", + "seg": [ + [ + [ + "ssm", + "框架", + "redis", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "点睛Spring 4.x": { + "children": [ + { + "Spring常用配置": { + "children": [ + { + "Bean的Scope": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-535", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1231", + "seg": [ + [ + [ + "bean", + "scope" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring EL和资源调用.": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-536", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1232", + "seg": [ + [ + [ + "spring", + "el" + ], + [ + "资源", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Bean的初始化和销毁": { + "data": { + "uuid": "java-5-1233", + "seg": [ + [ + [ + "bean", + "初始化" + ], + [ + "销毁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件(Application Event)": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-537", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1234", + "seg": [ + [ + [ + "事件", + "application", + "event" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1158", + "seg": [ + [ + [ + "spring", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring高级话题": { + "children": [ + { + "Spring Aware": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-538", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1235", + "seg": [ + [ + [ + "spring", + "aware" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多线程": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-539", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_661142_476043" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1236", + "seg": [ + [ + [ + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "计划任务": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-540", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1237", + "seg": [ + [ + [ + "计划" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_716867_709889" + ] + } + } + } + } + }, + { + "条件注解@Conditional": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-541", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1238", + "seg": [ + [ + [ + "条件", + "注解", + "conditional" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组合注解与元注解": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-542", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1239", + "seg": [ + [ + [ + "组合", + "注解" + ], + [ + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@Enable*注解的工作原理": { + "children": [ + { + "第一类:直接导入配置类": { + "data": { + "uuid": "java-6-543", + "seg": [ + [ + [] + ], + [ + [ + "导入", + "配置", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第二类:依据条件选择配置类": { + "data": { + "uuid": "java-6-544", + "seg": [ + [ + [] + ], + [ + [ + "条件", + "选择", + "配置", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第三类:动态注册Bean": { + "data": { + "uuid": "java-6-545", + "seg": [ + [ + [] + ], + [ + [ + "动态", + "注册", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1240", + "seg": [ + [ + [ + "enable", + "注解", + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_714160_705908" + ] + } + } + } + } + }, + { + "测试": { + "children": [ + { + "示例": { + "data": { + "uuid": "java-6-546", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1241", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1159", + "seg": [ + [ + [ + "spring", + "高级", + "话题" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223987_182618" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-605", + "seg": [ + [ + [ + "点睛", + "spring", + "x" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_710174_668096" + ] + } + } + } + } + }, + { + "点睛Spring MVC 4.x": { + "children": [ + { + "Spring MVC基础": { + "children": [ + { + "Spring MVC概述": { + "data": { + "uuid": "java-5-1242", + "seg": [ + [ + [ + "spring", + "mvc", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC的常用注解": { + "data": { + "uuid": "java-5-1243", + "seg": [ + [ + [ + "spring", + "mvc", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC基本配置": { + "children": [ + { + "静态资源映射": { + "data": { + "uuid": "java-6-547", + "seg": [ + [ + [ + "静态", + "资源", + "映射" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_760193_817423", + "13_357726_374789", + "13_772045_835666" + ] + } + } + } + } + }, + { + "拦截器配置": { + "data": { + "uuid": "java-6-548", + "seg": [ + [ + [ + "拦截器", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@ControllerAdvice": { + "data": { + "uuid": "java-6-549", + "seg": [ + [ + [ + "controlleradvice" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他配置": { + "data": { + "uuid": "java-6-550", + "seg": [ + [ + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1051211_1248385", + "13_199940_119308", + "13_224123_183089", + "13_1091691_1299247", + "13_199380_117423", + "13_871754_1003859", + "13_774265_838191", + "13_779776_850955" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1244", + "seg": [ + [ + [ + "spring", + "mvc", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC的高级配置": { + "children": [ + { + "文件上传配置": { + "data": { + "uuid": "java-6-551", + "seg": [ + [ + [ + "文件", + "上传", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1044248_1246298" + ] + } + } + } + } + }, + { + "自定义HttpMessageConverter": { + "data": { + "uuid": "java-6-552", + "seg": [ + [ + [ + "自定义", + "httpmessageconverter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务器端推送技术": { + "data": { + "uuid": "java-6-553", + "seg": [ + [ + [ + "服务器端", + "推送", + "技术" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_354781_367697", + "13_378449_410382" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1245", + "seg": [ + [ + [ + "spring", + "mvc", + "高级", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring MVC的测试": { + "data": { + "uuid": "java-5-1246", + "seg": [ + [ + [ + "spring", + "mvc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1160", + "seg": [ + [ + [ + "spring", + "mvc", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-606", + "seg": [ + [ + [ + "点睛", + "spring", + "mvc", + "x" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Java EE简介": { + "children": [ + { + "Java EE": { + "children": [ + { + "Java EE架构": { + "data": { + "uuid": "java-5-1247", + "seg": [ + [ + [ + "java", + "ee", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_177624_60951", + "13_173143_51989", + "13_7438688_53412106", + "13_56484_10226" + ] + } + } + } + } + }, + { + "Java EE的缺点": { + "data": { + "uuid": "java-5-1248", + "seg": [ + [ + [ + "java", + "ee", + "缺点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1161", + "seg": [ + [ + [ + "java", + "ee" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot": { + "data": { + "uuid": "java-4-1162", + "seg": [ + [ + [ + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hello,Spring Boot": { + "children": [ + { + "创建一个Maven工程": { + "data": { + "uuid": "java-5-1249", + "seg": [ + [ + [ + "创建", + "maven", + "工程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_158863_23557", + "13_7445014_53423589" + ] + } + } + } + } + }, + { + "增加Web支持": { + "data": { + "uuid": "java-5-1250", + "seg": [ + [ + [ + "增加", + "web", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hello Spring Boot示例": { + "data": { + "uuid": "java-5-1251", + "seg": [ + [ + [ + "hello", + "spring", + "boot", + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7403961_53352719", + "13_368600_395048" + ] + } + } + } + } + }, + { + "使用热部署": { + "data": { + "uuid": "java-5-1252", + "seg": [ + [ + [ + "热", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加REST支持": { + "data": { + "uuid": "java-5-1253", + "seg": [ + [ + [ + "添加", + "rest", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1163", + "seg": [ + [ + [ + "hello", + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-607", + "seg": [ + [ + [ + "java", + "ee", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot基础": { + "children": [ + { + "检查Java环境与安装Java": { + "data": { + "uuid": "java-4-1164", + "seg": [ + [ + [ + "检查", + "java", + "环境" + ], + [ + "安装", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装和配置Maven": { + "children": [ + { + "Maven介绍": { + "data": { + "uuid": "java-5-1254", + "seg": [ + [ + [ + "maven", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_680822_531842", + "13_836896_943156", + "13_856682_984024", + "13_213325_155980", + "13_671007_494283", + "13_357526_374324", + "13_692054_566189", + "13_7440978_53416682", + "13_702756_593315" + ] + } + } + } + } + }, + { + "安装Maven": { + "data": { + "uuid": "java-5-1255", + "seg": [ + [ + [ + "安装", + "maven" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_205597_136319", + "13_664924_482046" + ] + } + } + } + } + }, + { + "设置Maven": { + "data": { + "uuid": "java-5-1256", + "seg": [ + [ + [ + "设置", + "maven" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用IDE设置Maven": { + "data": { + "uuid": "java-5-1257", + "seg": [ + [ + [ + "ide", + "设置", + "maven" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Maven的常用命令": { + "data": { + "uuid": "java-5-1258", + "seg": [ + [ + [ + "maven", + "常用命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1165", + "seg": [ + [ + [ + "安装" + ], + [ + "配置", + "maven" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring核心技术": { + "children": [ + { + "Spring的历史": { + "data": { + "uuid": "java-5-1259", + "seg": [ + [ + [ + "spring", + "历史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring容器介绍": { + "data": { + "uuid": "java-5-1260", + "seg": [ + [ + [ + "spring", + "容器", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring AOP介绍": { + "data": { + "uuid": "java-5-1261", + "seg": [ + [ + [ + "spring", + "aop", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1166", + "seg": [ + [ + [ + "spring", + "核心技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-608", + "seg": [ + [ + [ + "spring", + "boot", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MVC框架": { + "children": [ + { + "集成MVC框架": { + "children": [ + { + "引入依赖": { + "data": { + "uuid": "java-5-1262", + "seg": [ + [ + [ + "引入", + "依赖" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web应用目录结构": { + "data": { + "uuid": "java-5-1263", + "seg": [ + [ + [ + "web", + "目录", + "结构" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_7414649_53367904" + ] + } + } + } + } + }, + { + "Java包名结构": { + "data": { + "uuid": "java-5-1264", + "seg": [ + [ + [ + "java", + "包名", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1167", + "seg": [ + [ + [ + "集成", + "mvc", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Controller": { + "data": { + "uuid": "java-4-1168", + "seg": [ + [ + [ + "controller" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750350_803594", + "13_755131_811058", + "13_7415487_53368998", + "13_717677_711088", + "13_663134_479382", + "13_661227_476213", + "13_390547_435344", + "13_768307_828333", + "13_7434840_53405275", + "13_690184_559752" + ] + } + } + } + } + }, + { + "URL映射到方法": { + "children": [ + { + "@RequestMapping": { + "data": { + "uuid": "java-5-1265", + "seg": [ + [ + [ + "requestmapping" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_379048_410839", + "13_367067_392209" + ] + } + } + } + } + }, + { + "URL路径匹配": { + "data": { + "uuid": "java-5-1266", + "seg": [ + [ + [ + "url", + "路径", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1093081_1302230", + "13_376137_405859", + "13_771921_834822", + "13_649194_454521", + "13_372269_399573", + "13_218552_168801", + "13_156254_17857", + "13_855747_980516", + "13_372224_399510", + "13_646990_449945" + ] + } + } + } + } + }, + { + "HTTP method匹配": { + "data": { + "uuid": "java-5-1267", + "seg": [ + [ + [ + "http", + "method", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_213052_155388", + "13_699824_588174" + ] + } + } + } + } + }, + { + "consumes和produces": { + "data": { + "uuid": "java-5-1268", + "seg": [ + [ + [ + "consumes" + ], + [ + "produces" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "params和header匹配": { + "data": { + "uuid": "java-5-1269", + "seg": [ + [ + [ + "params" + ], + [ + "header", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_155434_16387", + "13_352531_363217" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1169", + "seg": [ + [ + [ + "url", + "映射", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法参数": { + "children": [ + { + "PathVariable": { + "data": { + "uuid": "java-5-1270", + "seg": [ + [ + [ + "pathvariable" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Model&ModelAndView": { + "data": { + "uuid": "java-5-1271", + "seg": [ + [ + [ + "model", + "modelandview" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_665646_483354", + "13_7402902_53351012", + "13_672659_498844" + ] + } + } + } + } + }, + { + "JavaBean接受HTTP参数": { + "data": { + "uuid": "java-5-1272", + "seg": [ + [ + [ + "javabean", + "接受", + "http", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_228788_195522", + "13_235249_213626", + "13_229956_198650", + "13_226490_189058", + "13_644741_445774", + "13_7431292_53399597" + ] + } + } + } + } + }, + { + "@RequsetBody接受JSON": { + "data": { + "uuid": "java-5-1273", + "seg": [ + [ + [ + "requsetbody", + "接受", + "json" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_772105_835223" + ] + } + } + } + } + }, + { + "MultipartFile": { + "data": { + "uuid": "java-5-1274", + "seg": [ + [ + [ + "multipartfile" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_5714245_35403319" + ] + } + } + } + } + }, + { + "@ModelAttribute": { + "data": { + "uuid": "java-5-1275", + "seg": [ + [ + [ + "modelattribute" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@InitBinder": { + "data": { + "uuid": "java-5-1276", + "seg": [ + [ + [ + "initbinder" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1170", + "seg": [ + [ + [ + "方法", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "验证框架": { + "children": [ + { + "JSR-": { + "data": { + "uuid": "java-5-1277", + "seg": [ + [ + [ + "jsr" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MVC中使用@Validated": { + "data": { + "uuid": "java-5-1278", + "seg": [ + [ + [ + "mvc", + "validated" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义校验": { + "data": { + "uuid": "java-5-1279", + "seg": [ + [ + [ + "自定义", + "校验" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1171", + "seg": [ + [ + [ + "验证", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "WebMvcConfigurer": { + "children": [ + { + "跨域访问": { + "data": { + "uuid": "java-5-1280", + "seg": [ + [ + [ + "跨域", + "访问" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_647049_450016", + "13_170097_46374" + ] + } + } + } + } + }, + { + "注册Controller": { + "data": { + "uuid": "java-5-1281", + "seg": [ + [ + [ + "注册", + "controller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1172", + "seg": [ + [ + [ + "webmvcconfigurer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "视图技术": { + "children": [ + { + "使用Freemarker": { + "data": { + "uuid": "java-5-1282", + "seg": [ + [ + [ + "freemarker" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_3535609_24444184", + "13_234044_210752", + "13_665819_483654", + "13_226762_189783", + "13_926506_1061747", + "13_692219_566691", + "13_1061149_1258929" + ] + } + } + } + } + }, + { + "使用Beetl": { + "data": { + "uuid": "java-5-1283", + "seg": [ + [ + [ + "beetl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Jackson": { + "data": { + "uuid": "java-5-1284", + "seg": [ + [ + [ + "jackson" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_767921_827697" + ] + } + } + } + } + }, + { + "Redirect和Forward": { + "data": { + "uuid": "java-5-1285", + "seg": [ + [ + [ + "redirect" + ], + [ + "forward" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Beetl模板引擎": { + "children": [ + { + "安装Beetl": { + "data": { + "uuid": "java-6-554", + "seg": [ + [ + [ + "安装", + "beetl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置定界符号和占位符": { + "data": { + "uuid": "java-6-555", + "seg": [ + [ + [ + "设置", + "定界符" + ], + [ + "占位", + "符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_377331_408017", + "13_200283_120818" + ] + } + } + } + } + }, + { + "配置Beetl": { + "data": { + "uuid": "java-6-556", + "seg": [ + [ + [ + "配置", + "beetl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "groupTemplate": { + "data": { + "uuid": "java-6-557", + "seg": [ + [ + [ + "grouptemplate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1286", + "seg": [ + [ + [ + "beetl", + "模板", + "引擎" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用变量": { + "children": [ + { + "全局变量": { + "data": { + "uuid": "java-6-558", + "seg": [ + [ + [ + "全局变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_418755_437389", + "13_1090458_1297324" + ] + } + } + } + } + }, + { + "局部变量": { + "data": { + "uuid": "java-6-559", + "seg": [ + [ + [ + "局部变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "共享变量": { + "data": { + "uuid": "java-6-560", + "seg": [ + [ + [ + "共享", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1091155_1298464", + "13_756742_811898", + "13_1093191_1302379", + "13_238736_220960", + "13_227621_192057", + "13_198449_114315", + "13_196251_109041", + "13_696596_580660", + "13_748556_800558", + "13_743500_787890" + ] + } + } + } + } + }, + { + "模板变量": { + "data": { + "uuid": "java-6-561", + "seg": [ + [ + [ + "模板", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_214663_159468", + "13_654556_465792", + "13_1063696_1261844", + "13_764560_823244" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1287", + "seg": [ + [ + [ + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表达式": { + "children": [ + { + "计算表达式": { + "data": { + "uuid": "java-6-562", + "seg": [ + [ + [ + "计算", + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1092730_1300944", + "13_1062707_1260593", + "13_243907_232848", + "13_230845_200851", + "13_771523_834139", + "13_866430_996638", + "13_1093465_1302935", + "13_7463845_53450241", + "13_7438470_53411825", + "13_7405163_53354311" + ] + } + } + } + } + }, + { + "逻辑表达式": { + "data": { + "uuid": "java-6-563", + "seg": [ + [ + [ + "逻辑", + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_398864_436875", + "13_367848_393941" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1288", + "seg": [ + [ + [ + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_247902_241933" + ] + } + } + } + } + }, + { + "控制语句": { + "children": [ + { + "循环语句": { + "data": { + "uuid": "java-6-564", + "seg": [ + [ + [ + "循环", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_222281_177948" + ] + } + } + } + } + }, + { + "条件语句": { + "data": { + "uuid": "java-6-565", + "seg": [ + [ + [ + "条件语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "try catch": { + "data": { + "uuid": "java-6-566", + "seg": [ + [ + [ + "try", + "catch" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7446788_53426355", + "13_7431722_53400259", + "13_220952_174281", + "13_177370_60301", + "13_1095330_1306585", + "13_355489_369583" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1289", + "seg": [ + [ + [ + "控制", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数调用": { + "data": { + "uuid": "java-5-1290", + "seg": [ + [ + [ + "函数调用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_891287_1029648" + ] + } + } + } + } + }, + { + "格式化函数": { + "data": { + "uuid": "java-5-1291", + "seg": [ + [ + [ + "格式化", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "直接调用Java": { + "data": { + "uuid": "java-5-1292", + "seg": [ + [ + [ + "调用", + "java" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标签函数": { + "data": { + "uuid": "java-5-1293", + "seg": [ + [ + [ + "标签", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTML标签": { + "data": { + "uuid": "java-5-1294", + "seg": [ + [ + [ + "html", + "标签" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_364299_385746", + "13_253459_254822", + "13_749127_801472", + "13_654484_464208", + "13_486877_437989", + "13_241214_226901", + "13_564782_439977", + "13_743876_789062", + "13_346218_351357", + "13_388407_428286" + ] + } + } + } + } + }, + { + "安全输出": { + "data": { + "uuid": "java-5-1295", + "seg": [ + [ + [ + "输出" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1092900_1301629", + "13_221176_174822", + "13_751323_804896", + "13_765903_824932" + ] + } + } + } + } + }, + { + "高级功能": { + "children": [ + { + "自定义函数": { + "data": { + "uuid": "java-6-567", + "seg": [ + [ + [ + "自定义", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_704177_595992", + "13_759145_815738" + ] + } + } + } + } + }, + { + "自定义格式化函数": { + "data": { + "uuid": "java-6-568", + "seg": [ + [ + [ + "自定义", + "格式化", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义标签函数": { + "data": { + "uuid": "java-6-569", + "seg": [ + [ + [ + "自定义", + "标签", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义HTML标签": { + "data": { + "uuid": "java-6-570", + "seg": [ + [ + [ + "自定义", + "html", + "标签" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_367323_392825" + ] + } + } + } + } + }, + { + "AJAX局部渲染": { + "data": { + "uuid": "java-6-571", + "seg": [ + [ + [ + "ajax", + "局部", + "渲染" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_382060_416311", + "13_743376_787530", + "13_7436076_53407295", + "13_755675_811195", + "13_755616_811018", + "13_7410632_53361465", + "13_215377_161352", + "13_7437442_53410243", + "13_159866_25974", + "13_645478_448401" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1296", + "seg": [ + [ + [ + "高级", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "脚本引擎": { + "data": { + "uuid": "java-5-1297", + "seg": [ + [ + [ + "脚本", + "引擎" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7450516_53431174" + ] + } + } + } + } + }, + { + "JSON技术": { + "children": [ + { + "在Spring Boot中使用Jackson": { + "data": { + "uuid": "java-6-572", + "seg": [ + [ + [ + "spring", + "boot", + "jackson" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义ObjectMapper": { + "data": { + "uuid": "java-6-573", + "seg": [ + [ + [ + "自定义", + "objectmapper" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Jackson的三种使用方式": { + "data": { + "uuid": "java-6-574", + "seg": [ + [ + [ + "jackson", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Jackson树遍历": { + "data": { + "uuid": "java-6-575", + "seg": [ + [ + [ + "jackson", + "树", + "遍历" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_388695_428651", + "13_348674_373372", + "13_387701_426985" + ] + } + } + } + } + }, + { + "对象绑定": { + "data": { + "uuid": "java-6-576", + "seg": [ + [ + [ + "对象", + "绑定" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1064352_1262639", + "13_644839_445853", + "13_24942_6593", + "13_3769850_29328916", + "13_649316_454962", + "13_3416_4381", + "13_1705_2723", + "13_766359_825598", + "13_251004_248858" + ] + } + } + } + } + }, + { + "流式操作": { + "data": { + "uuid": "java-6-577", + "seg": [ + [ + [ + "流式", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_921858_1056787" + ] + } + } + } + } + }, + { + "Jackson注解": { + "data": { + "uuid": "java-6-578", + "seg": [ + [ + [ + "jackson", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合的反序列化": { + "data": { + "uuid": "java-6-579", + "seg": [ + [ + [ + "集合", + "反", + "序列化" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_231103_201571", + "13_190107_90250" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-5-1298", + "seg": [ + [ + [ + "json", + "技术" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_344864_348475", + "13_747222_798243", + "13_7434730_53405105", + "13_7463384_53449249", + "13_1079913_1284870", + "13_7449426_53429447", + "13_744900_791689", + "13_666151_484098", + "13_1077924_1282356", + "13_175975_57490" + ] + } + } + } + } + }, + { + "MVC分离开发": { + "children": [ + { + "集成WebSimulate": { + "data": { + "uuid": "java-6-580", + "seg": [ + [ + [ + "集成", + "websimulate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模拟JSON响应": { + "data": { + "uuid": "java-6-581", + "seg": [ + [ + [ + "模拟", + "json", + "响应" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模拟模板渲染": { + "data": { + "uuid": "java-6-582", + "seg": [ + [ + [ + "模拟", + "模板", + "渲染" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-5-1299", + "seg": [ + [ + [ + "mvc", + "分离", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1173", + "seg": [ + [ + [ + "视图", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通用错误处理": { + "data": { + "uuid": "java-4-1174", + "seg": [ + [ + [ + "通用", + "错误处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "curl命令": { + "data": { + "uuid": "java-4-1175", + "seg": [ + [ + [ + "curl", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-609", + "seg": [ + [ + [ + "mvc", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库访问": { + "children": [ + { + "配置数据源": { + "data": { + "uuid": "java-4-1176", + "seg": [ + [ + [ + "配置", + "数据源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring JDBC Template": { + "children": [ + { + "查询": { + "data": { + "uuid": "java-5-1300", + "seg": [ + [ + [ + "查询" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7441527_53417756", + "13_379068_410832" + ] + } + } + } + } + }, + { + "修改": { + "data": { + "uuid": "java-5-1301", + "seg": [ + [ + [ + "修改" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_223438_181694", + "13_752958_807367", + "13_7413450_53365370", + "13_7434873_53405320", + "13_186768_80172", + "13_7440213_53415355", + "13_7457637_53441984", + "13_717507_710821", + "13_671548_495540", + "13_720777_726113" + ] + } + } + } + } + }, + { + "JdbcTemplate增强": { + "data": { + "uuid": "java-5-1302", + "seg": [ + [ + [ + "jdbctemplate", + "增强" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1177", + "seg": [ + [ + [ + "spring", + "jdbc", + "template" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BeetlSQL介绍": { + "children": [ + { + "BeetlSQL功能概览": { + "data": { + "uuid": "java-5-1303", + "seg": [ + [ + [ + "beetlsql", + "功能", + "概览" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加Maven依赖": { + "data": { + "uuid": "java-5-1304", + "seg": [ + [ + [ + "添加", + "maven", + "依赖" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置BeetlSQL": { + "data": { + "uuid": "java-5-1305", + "seg": [ + [ + [ + "配置", + "beetlsql" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SQLManager": { + "data": { + "uuid": "java-5-1306", + "seg": [ + [ + [ + "sqlmanager" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用SQL文件": { + "data": { + "uuid": "java-5-1307", + "seg": [ + [ + [ + "sql", + "文件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用实体": { + "data": { + "uuid": "java-5-1308", + "seg": [ + [ + [ + "实体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1178", + "seg": [ + [ + [ + "beetlsql", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SQLManager内置CRUD": { + "children": [ + { + "内置的插入API": { + "data": { + "uuid": "java-5-1309", + "seg": [ + [ + [ + "内置", + "插入", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置的更新(删除)API": { + "data": { + "uuid": "java-5-1310", + "seg": [ + [ + [ + "内置", + "更新", + "删除", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置的查询API": { + "data": { + "uuid": "java-5-1311", + "seg": [ + [ + [ + "内置", + "查询", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码生成方法": { + "data": { + "uuid": "java-5-1312", + "seg": [ + [ + [ + "代码生成", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1179", + "seg": [ + [ + [ + "sqlmanager", + "内置", + "crud" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_273892_300175" + ] + } + } + } + } + }, + { + "使用sqlId": { + "children": [ + { + "md文件命名": { + "data": { + "uuid": "java-5-1313", + "seg": [ + [ + [ + "md", + "文件", + "命名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "md文件构成": { + "data": { + "uuid": "java-5-1314", + "seg": [ + [ + [ + "md", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_372147_400508" + ] + } + } + } + } + }, + { + "调用sqlId": { + "data": { + "uuid": "java-5-1315", + "seg": [ + [ + [ + "调用", + "sqlid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "翻页查询": { + "data": { + "uuid": "java-5-1316", + "seg": [ + [ + [ + "翻页", + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TailBean": { + "data": { + "uuid": "java-5-1317", + "seg": [ + [ + [ + "tailbean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ORM查询": { + "data": { + "uuid": "java-5-1318", + "seg": [ + [ + [ + "orm", + "查询" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745193_792589" + ] + } + } + } + } + }, + { + "其他API": { + "data": { + "uuid": "java-5-1319", + "seg": [ + [ + [ + "api" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_216623_164027", + "13_269328_290156" + ] + } + } + } + } + }, + { + "Mapper详解": { + "data": { + "uuid": "java-5-1320", + "seg": [ + [ + [ + "mapper", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1180", + "seg": [ + [ + [ + "sqlid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BeetlSQL的其他功能": { + "children": [ + { + "常用函数和标签": { + "data": { + "uuid": "java-5-1321", + "seg": [ + [ + [ + "函数" + ], + [ + "标签" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "主键设置": { + "data": { + "uuid": "java-5-1322", + "seg": [ + [ + [ + "主键", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BeetlSQL注解": { + "data": { + "uuid": "java-5-1323", + "seg": [ + [ + [ + "beetlsql", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NameConversion": { + "data": { + "uuid": "java-5-1324", + "seg": [ + [ + [ + "nameconversion" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1181", + "seg": [ + [ + [ + "beetlsql", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用JDBC": { + "data": { + "uuid": "java-4-1182", + "seg": [ + [ + [ + "jdbc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用DAO": { + "data": { + "uuid": "java-4-1183", + "seg": [ + [ + [ + "dao" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_219800_171602", + "13_686660_548648", + "13_236735_216183", + "13_750992_804407", + "13_366442_390953" + ] + } + } + } + } + }, + { + "集成Hibernate": { + "data": { + "uuid": "java-4-1184", + "seg": [ + [ + [ + "集成", + "hibernate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成JPA": { + "data": { + "uuid": "java-4-1185", + "seg": [ + [ + [ + "集成", + "jpa" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成MyBatis": { + "data": { + "uuid": "java-4-1186", + "seg": [ + [ + [ + "集成", + "mybatis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设计ORM": { + "data": { + "uuid": "java-4-1187", + "seg": [ + [ + [ + "设计", + "orm" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-610", + "seg": [ + [ + [ + "数据库", + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Data JPA": { + "children": [ + { + "集成Spring Data JPA": { + "children": [ + { + "集成数据源": { + "data": { + "uuid": "java-5-1325", + "seg": [ + [ + [ + "集成", + "数据源" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_774079_838007" + ] + } + } + } + } + }, + { + "配置JPA支持": { + "data": { + "uuid": "java-5-1326", + "seg": [ + [ + [ + "配置", + "jpa", + "支持" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7403261_53351594", + "13_802252_896764", + "13_1099646_1314630", + "13_694349_708097", + "13_1095177_1306187", + "13_756196_811481", + "13_7431774_53400553" + ] + } + } + } + } + }, + { + "创建Entity": { + "data": { + "uuid": "java-5-1327", + "seg": [ + [ + [ + "创建", + "entity" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简化Entity": { + "data": { + "uuid": "java-5-1328", + "seg": [ + [ + [ + "简化", + "entity" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1188", + "seg": [ + [ + [ + "集成", + "spring", + "data", + "jpa" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Repository": { + "children": [ + { + "CrudRepository": { + "data": { + "uuid": "java-5-1329", + "seg": [ + [ + [ + "crudrepository" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PagingAndSortingRepository": { + "data": { + "uuid": "java-5-1330", + "seg": [ + [ + [ + "pagingandsortingrepository" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JpaRepository": { + "data": { + "uuid": "java-5-1331", + "seg": [ + [ + [ + "jparepository" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持久化Entity": { + "data": { + "uuid": "java-5-1332", + "seg": [ + [ + [ + "持久", + "化", + "entity" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sort": { + "data": { + "uuid": "java-5-1333", + "seg": [ + [ + [ + "sort" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7412377_53363996", + "13_349890_357968", + "13_678697_523586" + ] + } + } + } + } + }, + { + "Pageable和Page": { + "data": { + "uuid": "java-5-1334", + "seg": [ + [ + [ + "pageable" + ], + [ + "page" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7415379_53368781", + "13_1049083_1246652" + ] + } + } + } + } + }, + { + "基于方法名字查询": { + "data": { + "uuid": "java-5-1335", + "seg": [ + [ + [ + "方法", + "名字", + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@Query查询": { + "data": { + "uuid": "java-5-1336", + "seg": [ + [ + [ + "query", + "查询" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1061927_1259795", + "13_367254_392702" + ] + } + } + } + } + }, + { + "使用JPA Query": { + "data": { + "uuid": "java-5-1337", + "seg": [ + [ + [ + "jpa", + "query" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Example查询": { + "data": { + "uuid": "java-5-1338", + "seg": [ + [ + [ + "example", + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1189", + "seg": [ + [ + [ + "repository" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-611", + "seg": [ + [ + [ + "spring", + "data", + "jpa" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot配置": { + "children": [ + { + "配置Spring Boot": { + "children": [ + { + "服务器配置": { + "data": { + "uuid": "java-5-1339", + "seg": [ + [ + [ + "服务器", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7441146_53416956", + "13_773444_838349", + "13_3198064_21755178", + "13_762081_820923", + "13_771378_833913", + "13_677041_517774", + "13_383906_420001", + "13_753345_807820", + "13_659135_472673", + "13_1061251_1315591" + ] + } + } + } + } + }, + { + "使用其他Web服务器": { + "data": { + "uuid": "java-5-1340", + "seg": [ + [ + [ + "web", + "服务器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_1080537_1286199" + ] + } + } + } + } + }, + { + "配置启动信息": { + "data": { + "uuid": "java-5-1341", + "seg": [ + [ + [ + "配置", + "启动", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390438_432968", + "13_669771_492828" + ] + } + } + } + } + }, + { + "配置浏览器显示ico": { + "data": { + "uuid": "java-5-1342", + "seg": [ + [ + [ + "配置", + "浏览器", + "显示", + "ico" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_657723_470474" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1190", + "seg": [ + [ + [ + "配置", + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志配置": { + "data": { + "uuid": "java-4-1191", + "seg": [ + [ + [ + "日志", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取应用配置": { + "children": [ + { + "Environment": { + "data": { + "uuid": "java-5-1343", + "seg": [ + [ + [ + "environment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@Value": { + "data": { + "uuid": "java-5-1344", + "seg": [ + [ + [ + "value" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_273850_300091", + "13_752562_806650", + "13_7432335_53401410", + "13_226144_188282", + "13_252209_251624", + "13_392519_436084", + "13_7441910_53418448", + "13_700116_828934" + ] + } + } + } + } + }, + { + "@ConfigurationProperties": { + "data": { + "uuid": "java-5-1345", + "seg": [ + [ + [ + "configurationproperties" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1192", + "seg": [ + [ + [ + "读取", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot自动装配": { + "children": [ + { + "@Configuration和@Bean": { + "data": { + "uuid": "java-5-1346", + "seg": [ + [ + [ + "configuration" + ], + [ + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Bean条件装配": { + "data": { + "uuid": "java-5-1347", + "seg": [ + [ + [ + "bean", + "条件", + "装配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Class条件装配": { + "data": { + "uuid": "java-5-1348", + "seg": [ + [ + [ + "class", + "条件", + "装配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Environment装配": { + "data": { + "uuid": "java-5-1349", + "seg": [ + [ + [ + "environment", + "装配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他条件装配": { + "data": { + "uuid": "java-5-1350", + "seg": [ + [ + [ + "条件", + "装配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_380290_412984", + "13_1101074_1315692", + "13_7440764_53416259" + ] + } + } + } + } + }, + { + "联合多个条件": { + "data": { + "uuid": "java-5-1351", + "seg": [ + [ + [ + "联合", + "条件" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Condition接口": { + "data": { + "uuid": "java-5-1352", + "seg": [ + [ + [ + "condition", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "制作Starter": { + "data": { + "uuid": "java-5-1353", + "seg": [ + [ + [ + "制作", + "starter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_262433_275409", + "13_672636_499361", + "13_229644_210607", + "13_244434_233857", + "13_672703_499134", + "13_384154_420375", + "13_242123_229203" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1193", + "seg": [ + [ + [ + "spring", + "boot", + "自动", + "装配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-612", + "seg": [ + [ + [ + "spring", + "boot", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Spring Boot应用": { + "children": [ + { + "以jar文件运行": { + "data": { + "uuid": "java-4-1194", + "seg": [ + [ + [ + "jar", + "文件", + "运行" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_246227_237648", + "13_757415_812867", + "13_390914_432811" + ] + } + } + } + } + }, + { + "以war方式部署": { + "data": { + "uuid": "java-4-1195", + "seg": [ + [ + [ + "war", + "方式", + "部署" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_231429_212037", + "13_694998_576480", + "13_671134_494554", + "13_756350_811485" + ] + } + } + } + } + }, + { + "多环境部署": { + "data": { + "uuid": "java-4-1196", + "seg": [ + [ + [ + "环境", + "部署" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7403155_53351408", + "13_250342_247367", + "13_375994_405783", + "13_4645964_29329633" + ] + } + } + } + } + }, + { + "@Profile注解": { + "data": { + "uuid": "java-4-1197", + "seg": [ + [ + [ + "profile", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-613", + "seg": [ + [ + [ + "部署", + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Testing单元测试": { + "children": [ + { + "JUnit介绍": { + "children": [ + { + "JUnit的相关概念": { + "data": { + "uuid": "java-5-1354", + "seg": [ + [ + [ + "junit", + "相关", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JUnit测试": { + "data": { + "uuid": "java-5-1355", + "seg": [ + [ + [ + "junit" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_238602_221109", + "13_186183_78981", + "13_668027_487804" + ] + } + } + } + } + }, + { + "Assert": { + "data": { + "uuid": "java-5-1356", + "seg": [ + [ + [ + "assert" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Suite": { + "data": { + "uuid": "java-5-1357", + "seg": [ + [ + [ + "suite" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1198", + "seg": [ + [ + [ + "junit", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot单元测试": { + "children": [ + { + "测试范围依赖": { + "data": { + "uuid": "java-5-1358", + "seg": [ + [ + [ + "依赖" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_370558_397229", + "13_1032625_1228428" + ] + } + } + } + } + }, + { + "Spring Boot测试脚手架": { + "data": { + "uuid": "java-5-1359", + "seg": [ + [ + [ + "spring", + "boot", + "脚手架" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_954574_1099543" + ] + } + } + } + } + }, + { + "测试MVC": { + "data": { + "uuid": "java-5-1360", + "seg": [ + [ + [ + "mvc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完成MVC请求模拟": { + "data": { + "uuid": "java-5-1361", + "seg": [ + [ + [ + "mvc", + "模拟" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "比较MVC的返回结果": { + "data": { + "uuid": "java-5-1362", + "seg": [ + [ + [ + "mvc", + "返回" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JSON比较": { + "data": { + "uuid": "java-5-1363", + "seg": [ + [ + [ + "json" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7428540_53394346", + "13_358934_377925", + "13_1051684_1248992", + "13_204708_133930", + "13_684047_541279", + "13_7433902_53404249", + "13_685176_544375", + "13_213121_155385", + "13_380037_412480", + "13_234692_212051" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1199", + "seg": [ + [ + [ + "spring", + "boot", + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mockito": { + "children": [ + { + "模拟对象": { + "data": { + "uuid": "java-5-1364", + "seg": [ + [ + [ + "模拟", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_662416_477986", + "13_657019_469294", + "13_383495_418996" + ] + } + } + } + } + }, + { + "模拟方法参数": { + "data": { + "uuid": "java-5-1365", + "seg": [ + [ + [ + "模拟", + "方法", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模拟方法返回值": { + "data": { + "uuid": "java-5-1366", + "seg": [ + [ + [ + "模拟", + "方法", + "返回值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_690578_560952", + "13_349560_357745" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1200", + "seg": [ + [ + [ + "mockito" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向数据库应用的单元测试": { + "children": [ + { + "@Sql": { + "data": { + "uuid": "java-5-1367", + "seg": [ + [ + [ + "sql" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1081085_1286693", + "13_200823_122142", + "13_1058042_1255238", + "13_363615_384092", + "13_174531_54480", + "13_194802_103392", + "13_593112_440405", + "13_715963_708451", + "13_696544_580498", + "13_7464594_53451069" + ] + } + } + } + } + }, + { + "XLSUnit": { + "data": { + "uuid": "java-5-1368", + "seg": [ + [ + [ + "xlsunit" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XLSUnit的基本用法": { + "data": { + "uuid": "java-5-1369", + "seg": [ + [ + [ + "xlsunit", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1201", + "seg": [ + [ + [ + "面向", + "数据库", + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-614", + "seg": [ + [ + [ + "testing", + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "REST": { + "children": [ + { + "REST简介": { + "children": [ + { + "REST风格的架构": { + "data": { + "uuid": "java-5-1370", + "seg": [ + [ + [ + "rest", + "风格", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用“api”作为上下文": { + "data": { + "uuid": "java-5-1371", + "seg": [ + [ + [ + "api", + "上下文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增加一个版本标识": { + "data": { + "uuid": "java-5-1372", + "seg": [ + [ + [ + "增加", + "版本", + "标识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标识资源": { + "data": { + "uuid": "java-5-1373", + "seg": [ + [ + [ + "标识", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确定HTTP Method": { + "data": { + "uuid": "java-5-1374", + "seg": [ + [ + [ + "http", + "method" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_686866_549257", + "13_234635_211866", + "13_1094590_1304964", + "13_710099_668507" + ] + } + } + } + } + }, + { + "确定HTTP Status": { + "data": { + "uuid": "java-5-1375", + "seg": [ + [ + [ + "http", + "status" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7440878_53416545" + ] + } + } + } + } + }, + { + "REST VS. WebService": { + "data": { + "uuid": "java-5-1376", + "seg": [ + [ + [ + "rest", + "vs", + "webservice" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_754901_810069", + "13_10400_4729", + "13_746842_797115", + "13_659326_473328", + "13_744740_791295", + "13_657611_470262", + "13_7424023_53384452", + "13_679474_526621", + "13_670633_493489", + "13_7458455_53443052" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1202", + "seg": [ + [ + [ + "rest", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot集成REST": { + "children": [ + { + "集成REST": { + "data": { + "uuid": "java-5-1377", + "seg": [ + [ + [ + "集成", + "rest" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@RestController": { + "data": { + "uuid": "java-5-1378", + "seg": [ + [ + [ + "restcontroller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "REST Client": { + "data": { + "uuid": "java-5-1379", + "seg": [ + [ + [ + "rest", + "client" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_203475_130594", + "13_7428509_53394388", + "13_685034_544363", + "13_764173_822863", + "13_979105_1139711" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1203", + "seg": [ + [ + [ + "spring", + "boot", + "集成", + "rest" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swagger UI": { + "children": [ + { + "集成Swagger": { + "data": { + "uuid": "java-5-1380", + "seg": [ + [ + [ + "集成", + "swagger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swagger规范": { + "data": { + "uuid": "java-5-1381", + "seg": [ + [ + [ + "swagger", + "规范" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1077652_1282047", + "13_7435389_53405929", + "13_744521_790706" + ] + } + } + } + } + }, + { + "接口描述": { + "data": { + "uuid": "java-5-1382", + "seg": [ + [ + [ + "接口", + "描述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_214326_158484" + ] + } + } + } + } + }, + { + "查询参数描述": { + "data": { + "uuid": "java-5-1383", + "seg": [ + [ + [ + "查询", + "参数", + "描述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7456764_53441348" + ] + } + } + } + } + }, + { + "URI中的参数": { + "data": { + "uuid": "java-5-1384", + "seg": [ + [ + [ + "uri", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP头参数": { + "data": { + "uuid": "java-5-1385", + "seg": [ + [ + [ + "http", + "头", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表单参数": { + "data": { + "uuid": "java-5-1386", + "seg": [ + [ + [ + "表单", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件上传参数": { + "data": { + "uuid": "java-5-1387", + "seg": [ + [ + [ + "文件", + "上传", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "整个请求体作为参数": { + "data": { + "uuid": "java-5-1388", + "seg": [ + [ + [ + "体", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1204", + "seg": [ + [ + [ + "swagger", + "ui" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_783034_862524", + "13_225825_187610", + "13_7418166_53374086", + "13_4646789_29330593" + ] + } + } + } + } + }, + { + "模拟REST服务": { + "data": { + "uuid": "java-4-1205", + "seg": [ + [ + [ + "模拟", + "rest", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-615", + "seg": [ + [ + [ + "rest" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MongoDB": { + "children": [ + { + "安装MongoDB": { + "data": { + "uuid": "java-4-1206", + "seg": [ + [ + [ + "安装", + "mongodb" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_182531_68978", + "13_660165_474323", + "13_250586_248260" + ] + } + } + } + } + }, + { + "使用shell": { + "children": [ + { + "指定数据库": { + "data": { + "uuid": "java-5-1389", + "seg": [ + [ + [ + "指定", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "插入文档": { + "data": { + "uuid": "java-5-1390", + "seg": [ + [ + [ + "插入", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_762674_821083" + ] + } + } + } + } + }, + { + "查询文档": { + "data": { + "uuid": "java-5-1391", + "seg": [ + [ + [ + "查询", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新操作": { + "data": { + "uuid": "java-5-1392", + "seg": [ + [ + [ + "更新", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除操作": { + "data": { + "uuid": "java-5-1393", + "seg": [ + [ + [ + "删除", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1207", + "seg": [ + [ + [ + "shell" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_745306_792901", + "13_188311_84939", + "13_747955_799590" + ] + } + } + } + } + }, + { + "Spring Boot集成MongoDB": { + "data": { + "uuid": "java-4-1208", + "seg": [ + [ + [ + "spring", + "boot", + "集成", + "mongodb" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增删改查": { + "children": [ + { + "增加API": { + "data": { + "uuid": "java-5-1394", + "seg": [ + [ + [ + "增加", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_390866_432707" + ] + } + } + } + } + }, + { + "根据主键查询API": { + "data": { + "uuid": "java-5-1395", + "seg": [ + [ + [ + "主键", + "查询", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查询API": { + "data": { + "uuid": "java-5-1396", + "seg": [ + [ + [ + "查询", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改API": { + "data": { + "uuid": "java-5-1397", + "seg": [ + [ + [ + "修改", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除API": { + "data": { + "uuid": "java-5-1398", + "seg": [ + [ + [ + "删除", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用MongoDatabase": { + "data": { + "uuid": "java-5-1399", + "seg": [ + [ + [ + "mongodatabase" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打印日志": { + "data": { + "uuid": "java-5-1400", + "seg": [ + [ + [ + "打印", + "日志" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_744728_791263", + "13_766097_825350", + "13_667870_487402", + "13_696071_579318", + "13_7405768_53355289", + "13_651176_458378", + "13_346614_352111", + "13_825653_922157", + "13_660342_474910" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1209", + "seg": [ + [ + [ + "增删", + "改查" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_345241_349823", + "13_7436890_53409107" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-616", + "seg": [ + [ + [ + "mongodb" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Elasticsearch": { + "children": [ + { + "Elasticsearch介绍": { + "children": [ + { + "安装Elasticsearch": { + "data": { + "uuid": "java-5-1401", + "seg": [ + [ + [ + "安装", + "elasticsearch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Elasticsearch的基本概念": { + "data": { + "uuid": "java-5-1402", + "seg": [ + [ + [ + "elasticsearch", + "基本概念" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1097599_1311287", + "13_4647068_29331122" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1210", + "seg": [ + [ + [ + "elasticsearch", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用REST访问Elasticsearch": { + "children": [ + { + "添加文档": { + "data": { + "uuid": "java-5-1403", + "seg": [ + [ + [ + "添加", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_232946_206925", + "13_2700_3811", + "13_684794_544072", + "13_7463855_53450081" + ] + } + } + } + } + }, + { + "根据主键查询": { + "data": { + "uuid": "java-5-1404", + "seg": [ + [ + [ + "主键", + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "根据主键更新": { + "data": { + "uuid": "java-5-1405", + "seg": [ + [ + [ + "主键", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "根据主键删除": { + "data": { + "uuid": "java-5-1406", + "seg": [ + [ + [ + "主键", + "删除" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_655868_466945", + "13_167270_41049" + ] + } + } + } + } + }, + { + "搜索文档": { + "data": { + "uuid": "java-5-1407", + "seg": [ + [ + [ + "搜索", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_688479_554921" + ] + } + } + } + } + }, + { + "联合多个索引搜索": { + "data": { + "uuid": "java-5-1408", + "seg": [ + [ + [ + "联合", + "索引", + "搜索" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1211", + "seg": [ + [ + [ + "rest", + "访问", + "elasticsearch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用RestTemplate访问ES": { + "children": [ + { + "创建Book": { + "data": { + "uuid": "java-5-1409", + "seg": [ + [ + [ + "创建", + "book" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7467243_53454683", + "13_1066862_1267492" + ] + } + } + } + } + }, + { + "使用RestTemplate获取搜索结果": { + "data": { + "uuid": "java-5-1410", + "seg": [ + [ + [ + "resttemplate", + "获取", + "搜索" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_755679_811098", + "13_762251_821611", + "13_719030_799320" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1212", + "seg": [ + [ + [ + "resttemplate", + "访问", + "es" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_750069_802923" + ] + } + } + } + } + }, + { + "Spring Data Elastic": { + "children": [ + { + "安装Spring Data": { + "data": { + "uuid": "java-5-1411", + "seg": [ + [ + [ + "安装", + "spring", + "data" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_185177_76381", + "13_380613_413663", + "13_232454_205462", + "13_779360_847347", + "13_240261_224427", + "13_244463_233899", + "13_210061_148585" + ] + } + } + } + } + }, + { + "编写Entity": { + "data": { + "uuid": "java-5-1412", + "seg": [ + [ + [ + "编写", + "entity" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_228089_193642", + "13_752616_806737" + ] + } + } + } + } + }, + { + "编写Dao": { + "data": { + "uuid": "java-5-1413", + "seg": [ + [ + [ + "编写", + "dao" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写Controller": { + "data": { + "uuid": "java-5-1414", + "seg": [ + [ + [ + "编写", + "controller" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_764133_822746" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1213", + "seg": [ + [ + [ + "spring", + "data", + "elastic" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-617", + "seg": [ + [ + [ + "elasticsearch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cache": { + "children": [ + { + "关于Cache": { + "children": [ + { + "Cache的组件和概念": { + "data": { + "uuid": "java-5-1415", + "seg": [ + [ + [ + "cache", + "组件" + ], + [ + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cache的单体应用": { + "data": { + "uuid": "java-5-1416", + "seg": [ + [ + [ + "cache", + "单体" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7438456_53411812" + ] + } + } + } + } + }, + { + "使用专有的Cache服务器": { + "data": { + "uuid": "java-5-1417", + "seg": [ + [ + [ + "专有", + "cache", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用一二级缓存服务器": { + "data": { + "uuid": "java-5-1418", + "seg": [ + [ + [ + "二级缓存", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1214", + "seg": [ + [ + [ + "cache" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Cache": { + "data": { + "uuid": "java-4-1215", + "seg": [ + [ + [ + "spring", + "boot", + "cache" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注释驱动缓存": { + "children": [ + { + "@Cacheable": { + "data": { + "uuid": "java-5-1419", + "seg": [ + [ + [ + "cacheable" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1078677_1309352" + ] + } + } + } + } + }, + { + "Key生成器": { + "data": { + "uuid": "java-5-1420", + "seg": [ + [ + [ + "key", + "生成器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_746768_796833", + "13_667373_486467", + "13_760388_817161", + "13_751178_804742", + "13_717837_799007" + ] + } + } + } + } + }, + { + "@CachePut": { + "data": { + "uuid": "java-5-1421", + "seg": [ + [ + [ + "cacheput" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@CacheEvict": { + "data": { + "uuid": "java-5-1422", + "seg": [ + [ + [ + "cacheevict" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@Caching": { + "data": { + "uuid": "java-5-1423", + "seg": [ + [ + [ + "caching" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "@CacheConfig": { + "data": { + "uuid": "java-5-1424", + "seg": [ + [ + [ + "cacheconfig" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1216", + "seg": [ + [ + [ + "注释", + "驱动", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Redis Cache": { + "children": [ + { + "集成Redis缓存": { + "data": { + "uuid": "java-5-1425", + "seg": [ + [ + [ + "集成", + "redis", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "禁止缓存": { + "data": { + "uuid": "java-5-1426", + "seg": [ + [ + [ + "禁止", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制缓存": { + "data": { + "uuid": "java-5-1427", + "seg": [ + [ + [ + "定制", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1217", + "seg": [ + [ + [ + "redis", + "cache" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis缓存原理": { + "data": { + "uuid": "java-4-1218", + "seg": [ + [ + [ + "redis", + "缓存", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现Redis两级缓存": { + "children": [ + { + "实现TwoLevelCacheManager": { + "data": { + "uuid": "java-5-1428", + "seg": [ + [ + [ + "twolevelcachemanager" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建RedisAndLocalCache": { + "data": { + "uuid": "java-5-1429", + "seg": [ + [ + [ + "创建", + "redisandlocalcache" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓存同步说明": { + "data": { + "uuid": "java-5-1430", + "seg": [ + [ + [ + "缓存", + "同步" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将代码组合在一起": { + "data": { + "uuid": "java-5-1431", + "seg": [ + [ + [ + "组合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1219", + "seg": [ + [ + [ + "redis", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-618", + "seg": [ + [ + [ + "cache" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Session": { + "children": [ + { + "水平扩展实现": { + "data": { + "uuid": "java-4-1220", + "seg": [ + [ + [ + "水平", + "扩展" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1099442_1314465", + "13_383117_418358" + ] + } + } + } + } + }, + { + "Spring Session": { + "children": [ + { + "Spring Session介绍": { + "data": { + "uuid": "java-5-1432", + "seg": [ + [ + [ + "spring", + "session", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7423192_53382807", + "13_7422406_53381487", + "13_744327_790129", + "13_706406_622413", + "13_209965_148276", + "13_696760_581023", + "13_234900_212693", + "13_377048_407660", + "13_249356_246669", + "13_624766_440706" + ] + } + } + } + } + }, + { + "Nginx+Redis": { + "data": { + "uuid": "java-5-1433", + "seg": [ + [ + [ + "nginx", + "redis" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_753297_807741", + "13_7459484_53444698", + "13_241536_227739", + "13_7409810_53360292", + "13_648927_453898", + "13_754528_1269415", + "13_703017_593680", + "13_7403219_53351545", + "13_158518_22824" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1221", + "seg": [ + [ + [ + "spring", + "session" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-619", + "seg": [ + [ + [ + "spring", + "session" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控Spring Boot应用": { + "children": [ + { + "安装Acutator": { + "data": { + "uuid": "java-4-1222", + "seg": [ + [ + [ + "安装", + "acutator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP跟踪": { + "data": { + "uuid": "java-4-1223", + "seg": [ + [ + [ + "http", + "跟踪" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志查看": { + "data": { + "uuid": "java-4-1224", + "seg": [ + [ + [ + "日志", + "查看" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7448452_53428624", + "13_770509_836689" + ] + } + } + } + } + }, + { + "线程栈信息": { + "data": { + "uuid": "java-4-1225", + "seg": [ + [ + [ + "线程", + "栈", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存信息": { + "data": { + "uuid": "java-4-1226", + "seg": [ + [ + [ + "内存", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看URL映射": { + "data": { + "uuid": "java-4-1227", + "seg": [ + [ + [ + "查看", + "url", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看Spring容器管理的Bean": { + "data": { + "uuid": "java-4-1228", + "seg": [ + [ + [ + "查看", + "spring", + "容器", + "管理", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他监控": { + "data": { + "uuid": "java-4-1229", + "seg": [ + [ + [ + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写自己的监控信息": { + "children": [ + { + "编写HealthIndicator": { + "data": { + "uuid": "java-5-1434", + "seg": [ + [ + [ + "编写", + "healthindicator" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7457550_53441850", + "13_7446609_53426093", + "13_7446386_53425593", + "13_7446582_53426045", + "13_202237_126553", + "13_7464597_53451076", + "13_714583_706558", + "13_250427_247572", + "13_7460095_53445222", + "13_674566_505495" + ] + } + } + } + } + }, + { + "自定义监控": { + "data": { + "uuid": "java-5-1435", + "seg": [ + [ + [ + "自定义", + "监控" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_1059494_1256953", + "13_29099_10368" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-4-1230", + "seg": [ + [ + [ + "编写", + "监控", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-620", + "seg": [ + [ + [ + "监控", + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web开发": { + "children": [ + { + "Web基础": { + "data": { + "uuid": "java-4-1231", + "seg": [ + [ + [ + "web", + "基础" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "13_354240_366478", + "13_703277_594055", + "13_656570_468464", + "13_370834_397597", + "13_215187_160783", + "13_3040031_24672296", + "13_675853_511967", + "13_371750_398461", + "13_340486_340245", + "13_383468_418986" + ] + } + } + } + } + }, + { + "Servlet入门": { + "data": { + "uuid": "java-4-1232", + "seg": [ + [ + [ + "servlet", + "入门" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_2033730_10549978", + "13_333091_324840", + "13_196634_109277", + "13_713379_704717", + "13_647453_450909", + "13_240230_224438" + ] + } + } + } + } + }, + { + "Servlet开发": { + "data": { + "uuid": "java-4-1233", + "seg": [ + [ + [ + "servlet", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Servlet进阶": { + "data": { + "uuid": "java-4-1234", + "seg": [ + [ + [ + "servlet", + "进阶" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_224048_182755" + ] + } + } + } + } + }, + { + "JSP开发": { + "data": { + "uuid": "java-4-1235", + "seg": [ + [ + [ + "jsp", + "开发" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_368765_395527", + "13_672311_497488", + "13_190130_90293", + "13_179683_65141", + "13_717820_711248", + "13_650488_457288", + "13_364734_387332", + "13_195782_106069", + "13_229385_210981", + "13_159695_25587" + ] + } + } + } + } + }, + { + "MVC开发": { + "data": { + "uuid": "java-4-1236", + "seg": [ + [ + [ + "mvc", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MVC高级开发": { + "data": { + "uuid": "java-4-1237", + "seg": [ + [ + [ + "mvc", + "高级", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Filter": { + "children": [ + { + "修改响应": { + "data": { + "uuid": "java-5-1436", + "seg": [ + [ + [ + "修改", + "响应" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1238", + "seg": [ + [ + [ + "filter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_373880_402460", + "13_196519_109146" + ] + } + } + } + } + }, + { + "使用Listener": { + "data": { + "uuid": "java-4-1239", + "seg": [ + [ + [ + "listener" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署": { + "data": { + "uuid": "java-4-1240", + "seg": [ + [ + [ + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成Filter": { + "data": { + "uuid": "java-4-1241", + "seg": [ + [ + [ + "集成", + "filter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Interceptor": { + "data": { + "uuid": "java-4-1242", + "seg": [ + [ + [ + "interceptor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理CORS": { + "data": { + "uuid": "java-4-1243", + "seg": [ + [ + [ + "cors" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异步处理": { + "data": { + "uuid": "java-4-1244", + "seg": [ + [ + [ + "异步" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用WebSocket": { + "data": { + "uuid": "java-4-1245", + "seg": [ + [ + [ + "websocket" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_241979_228840", + "13_387324_426295", + "13_648884_454498" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-621", + "seg": [ + [ + [ + "web", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring开发": { + "children": [ + { + "IoC容器": { + "children": [ + { + "IoC原理": { + "data": { + "uuid": "java-5-1437", + "seg": [ + [ + [ + "ioc", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Annotation配置": { + "data": { + "uuid": "java-5-1438", + "seg": [ + [ + [ + "annotation", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制Bean": { + "data": { + "uuid": "java-5-1439", + "seg": [ + [ + [ + "定制", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Resource": { + "data": { + "uuid": "java-5-1440", + "seg": [ + [ + [ + "resource" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7397177_53341778", + "13_226220_188528" + ] + } + } + } + } + }, + { + "注入配置": { + "data": { + "uuid": "java-5-1441", + "seg": [ + [ + [ + "注入", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1246", + "seg": [ + [ + [ + "ioc", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成第三方组件": { + "children": [ + { + "集成JavaMail": { + "data": { + "uuid": "java-5-1442", + "seg": [ + [ + [ + "集成", + "javamail" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_754879_810191", + "13_11765_5641", + "13_7439268_53413216", + "13_693786_572117", + "13_177519_60655", + "13_347764_354215", + "13_379873_414350" + ] + } + } + } + } + }, + { + "集成JMS": { + "data": { + "uuid": "java-5-1443", + "seg": [ + [ + [ + "集成", + "jms" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Scheduler": { + "data": { + "uuid": "java-5-1444", + "seg": [ + [ + [ + "scheduler" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_189202_90836" + ] + } + } + } + } + }, + { + "集成JMX": { + "data": { + "uuid": "java-5-1445", + "seg": [ + [ + [ + "集成", + "jmx" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成Open API": { + "data": { + "uuid": "java-5-1446", + "seg": [ + [ + [ + "集成", + "open", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问Redis": { + "data": { + "uuid": "java-5-1447", + "seg": [ + [ + [ + "访问", + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成Artemis": { + "data": { + "uuid": "java-5-1448", + "seg": [ + [ + [ + "集成", + "artemis" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_691703_564695", + "13_362154_380886", + "13_7419985_53395817" + ] + } + } + } + } + }, + { + "集成RabbitMQ": { + "data": { + "uuid": "java-5-1449", + "seg": [ + [ + [ + "集成", + "rabbitmq" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_373815_402303", + "13_384611_422482", + "13_700740_590158" + ] + } + } + } + } + }, + { + "集成Kafka": { + "data": { + "uuid": "java-5-1450", + "seg": [ + [ + [ + "集成", + "kafka" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-4-1247", + "seg": [ + [ + [ + "集成", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-3-622", + "seg": [ + [ + [ + "spring", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot开发": { + "children": [ + { + "使用开发者工具": { + "data": { + "uuid": "java-4-1248", + "seg": [ + [ + [ + "开发者", + "工具" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_207477_141929" + ] + } + } + } + } + }, + { + "打包Spring Boot应用": { + "data": { + "uuid": "java-4-1249", + "seg": [ + [ + [ + "打包", + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Actuator": { + "data": { + "uuid": "java-4-1250", + "seg": [ + [ + [ + "actuator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Profiles": { + "data": { + "uuid": "java-4-1251", + "seg": [ + [ + [ + "profiles" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Conditional": { + "data": { + "uuid": "java-4-1252", + "seg": [ + [ + [ + "conditional" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "加载配置文件": { + "data": { + "uuid": "java-4-1253", + "seg": [ + [ + [ + "加载", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7461166_53446258" + ] + } + } + } + } + }, + { + "禁用自动配置": { + "data": { + "uuid": "java-4-1254", + "seg": [ + [ + [ + "禁用", + "自动", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加Filter": { + "data": { + "uuid": "java-4-1255", + "seg": [ + [ + [ + "添加", + "filter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_809156_904212", + "13_939336_1075488" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-3-623", + "seg": [ + [ + [ + "spring", + "boot", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud开发": { + "data": { + "uuid": "java-3-624", + "seg": [ + [ + [ + "spring", + "cloud", + "开发" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "13_7443279_53420333", + "13_943272_1081707" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-2-40", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-1-2", + "seg": [ + [ + [ + "java", + "高阶" + ] + ] + ], + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "其他类别标签问题": { + "data": { + "uuid": "java-2-41", + "seg": [ + [ + [ + "类别", + "标签" + ] + ] + ], + "related_data": { + "qa": { + "data_id": [ + "13_753402_807942", + "13_676070_513541", + "13_7446587_53426042", + "13_344548_347832", + "13_7445129_53423677", + "13_772924_836696", + "13_662368_477878", + "13_7413800_53366043", + "13_706324_706068", + "13_871641_1003684" + ] + } + } + } + } + }, + { + "应用类问题": { + "data": { + "uuid": "java-2-42", + "seg": [ + [ + [ + "类" + ] + ] + ], + "related_data": { + "qa": { + "data_id": [ + "13_204623_133665", + "13_371555_398246", + "13_245013_234955", + "13_7399380_53346536", + "13_769712_830799", + "13_246966_239825", + "13_7398734_53345172", + "13_7408633_53358813", + "13_739567_798712", + "13_525259_439217" + ] + } + } + } + } + }, + { + "第三方包问题": { + "data": { + "uuid": "java-2-43", + "seg": [ + [ + [ + "包" + ] + ] + ], + "related_data": { + "qa": { + "data_id": [ + "13_703315_594107", + "13_165073_39296", + "13_181510_66808", + "13_743459_787764", + "13_863418_991711", + "13_1062741_1260615", + "13_695731_578770", + "13_7399208_53346247", + "13_236074_215698", + "13_70_149" + ] + } + } + } + } + } + ], + "data": { + "uuid": "java-1-3", + "seg": [ + [ + [] + ] + ], + "related_data": {} + } + } + } + ], + "data": { + "uuid": "java-0-0", + "seg": [ + [ + [ + "java8", + "编程", + "参考", + "官方", + "教程" + ] + ] + ], + "related_data": {} + } + } +} \ No newline at end of file diff --git a/data/tree_python_mapping.json b/data/tree_python_mapping.json new file mode 100644 index 0000000..46d4c4b --- /dev/null +++ b/data/tree_python_mapping.json @@ -0,0 +1,72524 @@ +{ + "python": { + "children": [ + { + "Python初阶": { + "children": [ + { + "预备知识": { + "children": [ + { + "Python简介": { + "children": [ + { + "Python都能做什么": { + "data": { + "uuid": "python-4-0", + "seg": [ + [ + [ + "python", + "做" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-0", + "seg": [ + [ + [ + "python", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序设计思想": { + "data": { + "uuid": "python-3-1", + "seg": [ + [ + [ + "程序设计", + "思想" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Python": { + "children": [ + { + "Windows安装Python": { + "data": { + "uuid": "python-4-1", + "seg": [ + [ + [ + "windows", + "安装", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linux安装Python": { + "data": { + "uuid": "python-4-2", + "seg": [ + [ + [ + "linux", + "安装", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MacOS安装Python": { + "data": { + "uuid": "python-4-3", + "seg": [ + [ + [ + "macos", + "安装", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-2", + "seg": [ + [ + [ + "安装", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行方式": { + "children": [ + { + "以交互方式运行": { + "data": { + "uuid": "python-4-4", + "seg": [ + [ + [ + "交互方式", + "运行" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_769551_830462", + "8_753161_807531", + "8_7457834_53442309", + "8_656388_469157", + "8_1095704_1307364", + "8_770067_831407", + "8_1050679_1247835", + "8_757675_813263", + "8_7425118_53386353", + "8_7416940_53371914" + ] + } + } + } + } + }, + { + "以脚本方式运行": { + "data": { + "uuid": "python-4-5", + "seg": [ + [ + [ + "脚本", + "方式", + "运行" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1065823_1271961", + "8_747794_799745", + "8_1065_1855", + "8_7456198_53439611", + "8_7396314_53339760" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-3", + "seg": [ + [ + [ + "运行", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用开发工具": { + "children": [ + { + "typing --- 类型提示支持": { + "data": { + "uuid": "python-4-6", + "seg": [ + [ + [ + "typing", + "类型", + "提示", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pydoc --- 文档生成器和在线帮助系统": { + "data": { + "uuid": "python-4-7", + "seg": [ + [ + [ + "pydoc", + "文档", + "生成器" + ], + [ + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python Development Mode": { + "data": { + "uuid": "python-4-8", + "seg": [ + [ + [ + "python", + "development", + "mode" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Effects of the Python Development Mode": { + "data": { + "uuid": "python-4-9", + "seg": [ + [ + [ + "effects", + "of", + "the", + "python", + "development", + "mode" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443135_53420253" + ] + } + } + } + } + }, + { + "ResourceWarning Example": { + "data": { + "uuid": "python-4-10", + "seg": [ + [ + [ + "resourcewarning", + "example" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Bad file descriptor error example": { + "data": { + "uuid": "python-4-11", + "seg": [ + [ + [ + "bad", + "file", + "descriptor", + "error", + "example" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_762630_820868", + "8_689403_557328", + "8_188160_84436", + "8_758998_830910", + "8_1048720_1246185", + "8_5895590_37986409", + "8_7444167_53422091", + "8_7398152_53344020", + "8_7422927_53384044", + "8_7433340_53403414" + ] + } + } + } + } + }, + { + "doctest --- 测试交互性的Python示例": { + "data": { + "uuid": "python-4-12", + "seg": [ + [ + [ + "doctest", + "交互性", + "python", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unittest --- 单元测试框架": { + "data": { + "uuid": "python-4-13", + "seg": [ + [ + [ + "unittest", + "单元测试", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unittest.mock --- mock对象库": { + "data": { + "uuid": "python-4-14", + "seg": [ + [ + [ + "unittest", + "mock", + "对象", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unittest.mock上手指南": { + "data": { + "uuid": "python-4-15", + "seg": [ + [ + [ + "unittest", + "mock", + "手指", + "南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "2to3 - 自动将Python 2 代码转为Python 3 代码": { + "data": { + "uuid": "python-4-16", + "seg": [ + [ + [ + "to3", + "自动", + "python", + "转为" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "test --- Python回归测试包": { + "data": { + "uuid": "python-4-17", + "seg": [ + [ + [ + "test", + "python", + "回归", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "test.support --- Utilities for the Python test suite": { + "data": { + "uuid": "python-4-18", + "seg": [ + [ + [ + "test", + "support", + "utilities", + "for", + "the", + "python", + "suite" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "test.support.socket_helper --- Utilities for socket tests": { + "data": { + "uuid": "python-4-19", + "seg": [ + [ + [ + "test", + "support", + "socket", + "helper", + "utilities", + "for", + "tests" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "test.support.script_helper --- Utilities for the Python execution tests": { + "data": { + "uuid": "python-4-20", + "seg": [ + [ + [ + "test", + "support", + "script", + "helper", + "utilities", + "for", + "the", + "python", + "execution", + "tests" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "test.support.bytecode_helper --- Support tools for testing correct bytecode generation": { + "data": { + "uuid": "python-4-21", + "seg": [ + [ + [ + "test", + "support", + "bytecode", + "helper", + "tools", + "for", + "testing", + "correct", + "generation" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-4", + "seg": [ + [ + [ + "开发工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编码规范": { + "data": { + "uuid": "python-3-5", + "seg": [ + [ + [ + "编码", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块管理": { + "children": [ + { + "pip": { + "data": { + "uuid": "python-4-22", + "seg": [ + [ + [ + "pip" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424709_53385879", + "8_1064279_1262480", + "8_7416147_53370059", + "8_5719755_35642947", + "8_7403493_53352438", + "8_1049447_1246935", + "8_771843_834565", + "8_7423912_53384293", + "8_700191_588874", + "8_7439597_53414081" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-6", + "seg": [ + [ + [ + "模块", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-0", + "seg": [ + [ + [ + "预备", + "知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基础语法": { + "children": [ + { + "缩进规则": { + "children": [ + { + "建议使用4个空格": { + "data": { + "uuid": "python-4-23", + "seg": [ + [ + [ + "建议", + "空格" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7433425_53403624" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-7", + "seg": [ + [ + [ + "缩进", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基础知识": { + "children": [ + { + "注释": { + "children": [ + { + "如何编写注释": { + "data": { + "uuid": "python-5-0", + "seg": [ + [ + [ + "编写", + "注释" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_716440_709176", + "8_7458031_53442538", + "8_7443894_53421872", + "8_7431838_53400519", + "8_7418574_53374797", + "8_7418576_53375374" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-24", + "seg": [ + [ + [ + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量": { + "children": [ + { + "变量的命名和使用": { + "data": { + "uuid": "python-5-1", + "seg": [ + [ + [ + "变量", + "命名" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量是标签": { + "data": { + "uuid": "python-5-2", + "seg": [ + [ + [ + "变量", + "标签" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451800_53433770", + "8_170644_47288", + "8_7455549_53438636", + "8_7421133_53390836", + "8_7408816_53359622", + "8_7409162_53359471", + "8_2061170_11305291", + "8_7406472_53355940", + "8_756994_812822" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-25", + "seg": [ + [ + [ + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "语句": { + "children": [ + { + "表达式语句": { + "data": { + "uuid": "python-5-3", + "seg": [ + [ + [ + "表达式", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "赋值语句": { + "data": { + "uuid": "python-5-4", + "seg": [ + [ + [ + "赋值", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "assert语句": { + "data": { + "uuid": "python-5-5", + "seg": [ + [ + [ + "assert", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7456636_53440820", + "8_714169_706009", + "8_7413411_53365314", + "8_7407903_53358092", + "8_844166_965275", + "8_7460291_53445368" + ] + } + } + } + } + }, + { + "return语句": { + "data": { + "uuid": "python-5-6", + "seg": [ + [ + [ + "return", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7457765_53442242", + "8_7451350_53432531", + "8_7449468_53429532" + ] + } + } + } + } + }, + { + "yield语句": { + "data": { + "uuid": "python-5-7", + "seg": [ + [ + [ + "yield", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "raise语句": { + "data": { + "uuid": "python-5-8", + "seg": [ + [ + [ + "raise", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "break语句": { + "data": { + "uuid": "python-5-9", + "seg": [ + [ + [ + "break", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "continue语句": { + "data": { + "uuid": "python-5-10", + "seg": [ + [ + [ + "continue", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "import语句": { + "data": { + "uuid": "python-5-11", + "seg": [ + [ + [ + "import", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424280_53384955", + "8_7455544_53438631", + "8_772054_835094", + "8_678541_524055", + "8_378228_409319", + "8_7412266_53363776", + "8_697202_803093", + "8_648702_566376" + ] + } + } + } + } + }, + { + "global语句": { + "data": { + "uuid": "python-5-12", + "seg": [ + [ + [ + "global", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_507827_438470", + "8_756311_811483", + "8_7417745_53373461", + "8_7404671_53353942", + "8_7404715_53353898" + ] + } + } + } + } + }, + { + "nonlocal语句": { + "data": { + "uuid": "python-5-13", + "seg": [ + [ + [ + "nonlocal", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-26", + "seg": [ + [ + [ + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451275_53432309", + "8_651617_459012" + ] + } + } + } + } + }, + { + "标识符": { + "data": { + "uuid": "python-4-27", + "seg": [ + [ + [ + "标识符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名规则": { + "data": { + "uuid": "python-4-28", + "seg": [ + [ + [ + "命名", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运算与表达式": { + "data": { + "uuid": "python-4-29", + "seg": [ + [ + [ + "运算" + ], + [ + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码风格": { + "data": { + "uuid": "python-4-30", + "seg": [ + [ + [ + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式解释器": { + "data": { + "uuid": "python-4-31", + "seg": [ + [ + [ + "交互式", + "解释器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "算法是什么": { + "data": { + "uuid": "python-4-32", + "seg": [ + [ + [ + "算法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7418583_53379738", + "8_858492_984540", + "8_1098045_1312397" + ] + } + } + } + } + }, + { + "获取用户输入": { + "data": { + "uuid": "python-4-33", + "seg": [ + [ + [ + "获取", + "用户", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保存并执行程序": { + "children": [ + { + "从命令提示符运行Python脚本": { + "data": { + "uuid": "python-5-14", + "seg": [ + [ + [ + "命令提示符", + "运行", + "python", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让脚本像普通程序一样": { + "data": { + "uuid": "python-5-15", + "seg": [ + [ + [ + "脚本", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-34", + "seg": [ + [ + [ + "保存", + "执行程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "起步": { + "children": [ + { + "搭建编程环境": { + "children": [ + { + "Python版本": { + "data": { + "uuid": "python-6-0", + "seg": [ + [ + [ + "python", + "版本" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_728030_738322", + "8_231511_202726", + "8_7439559_53414122", + "8_247171_240370" + ] + } + } + } + } + }, + { + "运行Python代码片段": { + "data": { + "uuid": "python-6-1", + "seg": [ + [ + [ + "运行", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SublimeText简介": { + "data": { + "uuid": "python-6-2", + "seg": [ + [ + [ + "sublimetext", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-16", + "seg": [ + [ + [ + "搭建", + "编程", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在不同操作系统中搭建Python编程环境": { + "children": [ + { + "在Windows系统中搭建Python编程环境": { + "data": { + "uuid": "python-6-3", + "seg": [ + [ + [ + "windows", + "系统", + "搭建", + "python", + "编程", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在macOS系统中搭建Python编程环境": { + "data": { + "uuid": "python-6-4", + "seg": [ + [ + [ + "macos", + "系统", + "搭建", + "python", + "编程", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Linux系统中搭建Python编程环境": { + "data": { + "uuid": "python-6-5", + "seg": [ + [ + [ + "linux", + "系统", + "搭建", + "python", + "编程", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7440803_53416632" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-17", + "seg": [ + [ + [ + "操作系统", + "搭建", + "python", + "编程", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行HelloWorld程序": { + "children": [ + { + "配置SublimeText以使用正确的Python版本": { + "data": { + "uuid": "python-6-6", + "seg": [ + [ + [ + "配置", + "sublimetext", + "python", + "版本" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_645908_447876" + ] + } + } + } + } + }, + { + "运行程序hello_world.py": { + "data": { + "uuid": "python-6-7", + "seg": [ + [ + [ + "运行", + "程序", + "hello", + "world", + "py" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_5624598_34529614", + "8_228228_194148", + "8_7458582_53443191", + "8_7399628_53347010", + "8_7413373_53366681", + "8_7441101_53416891", + "8_769658_830843", + "8_733180_754526", + "8_7455539_53438654", + "8_1053498_1250749" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-18", + "seg": [ + [ + [ + "运行", + "helloworld", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从终端运行Python程序": { + "children": [ + { + "在Windows系统中从终端运行Python程序": { + "data": { + "uuid": "python-6-8", + "seg": [ + [ + [ + "windows", + "系统", + "终端", + "运行", + "python", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_773376_837050" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-19", + "seg": [ + [ + [ + "终端", + "运行", + "python", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-35", + "seg": [ + [ + [ + "起步" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表简介": { + "children": [ + { + "修改、添加和删除元素": { + "children": [ + { + "修改列表元素": { + "data": { + "uuid": "python-6-9", + "seg": [ + [ + [ + "修改", + "列表", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7419562_53376895", + "8_1093799_1303451", + "8_7460007_53445035", + "8_1104149_1318441", + "8_896579_1033715", + "8_937464_1073306", + "8_677992_521266" + ] + } + } + } + } + }, + { + "在列表中添加元素": { + "data": { + "uuid": "python-6-10", + "seg": [ + [ + [ + "列表", + "添加", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7402351_53350050", + "8_7456507_53440314", + "8_773693_841124" + ] + } + } + } + } + }, + { + "从列表中删除元素": { + "data": { + "uuid": "python-6-11", + "seg": [ + [ + [ + "列表", + "删除", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424831_53386019", + "8_751638_805295", + "8_1080510_1285800", + "8_7402211_53349861", + "8_1086409_1293328", + "8_7425383_53386759", + "8_7399114_53345999", + "8_758594_814600", + "8_1093527_1303046", + "8_887540_1027745" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-20", + "seg": [ + [ + [ + "修改" + ], + [ + "添加" + ], + [ + "删除", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组织列表": { + "children": [ + { + "使用方法sort对列表永久排序": { + "data": { + "uuid": "python-6-12", + "seg": [ + [ + [ + "方法", + "sort", + "列表", + "永久", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_766589_825903", + "8_7432903_53402516", + "8_6161948_41750419", + "8_7439730_53414504", + "8_883592_1022058", + "8_7462510_53448115" + ] + } + } + } + } + }, + { + "使用函数sorted对列表临时排序": { + "data": { + "uuid": "python-6-13", + "seg": [ + [ + [ + "函数", + "sorted", + "列表", + "临时", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7407899_53358072" + ] + } + } + } + } + }, + { + "倒着打印列表": { + "data": { + "uuid": "python-6-14", + "seg": [ + [ + [ + "倒", + "打印", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7415399_53368808" + ] + } + } + } + } + }, + { + "确定列表的长度": { + "data": { + "uuid": "python-6-15", + "seg": [ + [ + [ + "列表", + "长度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-21", + "seg": [ + [ + [ + "组织", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用列表时避免索引错误": { + "data": { + "uuid": "python-5-22", + "seg": [ + [ + [ + "列表", + "索引" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-36", + "seg": [ + [ + [ + "列表", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试代码": { + "children": [ + { + "测试函数": { + "data": { + "uuid": "python-5-23", + "seg": [ + [ + [ + "测试函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-37", + "seg": [ + [ + [ + "测试代码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-8", + "seg": [ + [ + [ + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数": { + "children": [ + { + "函数定义def": { + "data": { + "uuid": "python-4-38", + "seg": [ + [ + [ + "函数", + "定义", + "def" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7456871_53440958", + "8_7453433_53436150", + "8_1097219_1310398", + "8_703811_594583" + ] + } + } + } + } + }, + { + "参数var": { + "data": { + "uuid": "python-4-39", + "seg": [ + [ + [ + "参数", + "var" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回值return": { + "data": { + "uuid": "python-4-40", + "seg": [ + [ + [ + "返回值", + "return" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数传递": { + "data": { + "uuid": "python-4-41", + "seg": [ + [ + [ + "参数传递" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数调用": { + "data": { + "uuid": "python-4-42", + "seg": [ + [ + [ + "函数调用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_4646662_29330314" + ] + } + } + } + } + }, + { + "函数递归": { + "data": { + "uuid": "python-4-43", + "seg": [ + [ + [ + "函数", + "递归" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数编写风格": { + "data": { + "uuid": "python-4-44", + "seg": [ + [ + [ + "函数", + "编写", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调用函数": { + "data": { + "uuid": "python-4-45", + "seg": [ + [ + [ + "调用函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数的参数": { + "data": { + "uuid": "python-4-46", + "seg": [ + [ + [ + "函数", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "递归函数": { + "data": { + "uuid": "python-4-47", + "seg": [ + [ + [ + "递归函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_703813_594587" + ] + } + } + } + } + }, + { + "None值": { + "data": { + "uuid": "python-4-48", + "seg": [ + [ + [ + "none", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7398252_53344197", + "8_7426497_53389988", + "8_7443582_53420759" + ] + } + } + } + } + }, + { + "调用栈": { + "data": { + "uuid": "python-4-49", + "seg": [ + [ + [ + "调用", + "栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "局部和全局作用域": { + "children": [ + { + "局部变量不能在全局作用域内使用": { + "data": { + "uuid": "python-5-24", + "seg": [ + [ + [ + "局部变量", + "全局", + "作用域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "局部作用域不能使用其他局部作用域内的变量": { + "data": { + "uuid": "python-5-25", + "seg": [ + [ + [ + "局部", + "作用域", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "全局变量可以在局部作用域中读取": { + "data": { + "uuid": "python-5-26", + "seg": [ + [ + [ + "全局变量", + "局部", + "作用域", + "读取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-50", + "seg": [ + [ + [ + "局部" + ], + [ + "全局", + "作用域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把函数视作对象": { + "data": { + "uuid": "python-4-51", + "seg": [ + [ + [ + "函数", + "视作", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可调用对象": { + "data": { + "uuid": "python-4-52", + "seg": [ + [ + [ + "调用", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用户定义的可调用类型": { + "data": { + "uuid": "python-4-53", + "seg": [ + [ + [ + "用户", + "定义", + "调用", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数内省": { + "data": { + "uuid": "python-4-54", + "seg": [ + [ + [ + "函数", + "内省" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从定位参数到仅限关键字参数": { + "data": { + "uuid": "python-4-55", + "seg": [ + [ + [ + "定位", + "参数", + "仅限", + "关键字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取关于参数的信息": { + "data": { + "uuid": "python-4-56", + "seg": [ + [ + [ + "获取", + "参数", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "支持函数式编程的包": { + "data": { + "uuid": "python-4-57", + "seg": [ + [ + [ + "支持", + "函数", + "编程", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递实参": { + "children": [ + { + "位置实参": { + "data": { + "uuid": "python-5-27", + "seg": [ + [ + [ + "位置", + "实参" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键字实参": { + "data": { + "uuid": "python-5-28", + "seg": [ + [ + [ + "关键字", + "实参" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "默认值": { + "data": { + "uuid": "python-5-29", + "seg": [ + [ + [ + "默认值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "等效的函数调用": { + "data": { + "uuid": "python-5-30", + "seg": [ + [ + [ + "等效", + "函数调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-58", + "seg": [ + [ + [ + "传递", + "实参" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回值": { + "children": [ + { + "返回简单值": { + "data": { + "uuid": "python-5-31", + "seg": [ + [ + [ + "返回", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让实参变成可选的": { + "data": { + "uuid": "python-5-32", + "seg": [ + [ + [ + "实参", + "可选" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回字典": { + "data": { + "uuid": "python-5-33", + "seg": [ + [ + [ + "返回", + "字典" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7411444_53362413", + "8_7409376_53359786", + "8_748755_800982", + "8_7449661_53429880" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-59", + "seg": [ + [ + [ + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递列表": { + "children": [ + { + "在函数中修改列表": { + "data": { + "uuid": "python-5-34", + "seg": [ + [ + [ + "函数", + "修改", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7411490_53362695", + "8_7455921_53439255", + "8_750017_802789" + ] + } + } + } + } + }, + { + "禁止函数修改列表": { + "data": { + "uuid": "python-5-35", + "seg": [ + [ + [ + "禁止", + "函数", + "修改", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-60", + "seg": [ + [ + [ + "传递", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传递任意数量的实参": { + "children": [ + { + "使用任意数量的关键字实参": { + "data": { + "uuid": "python-5-36", + "seg": [ + [ + [ + "任意", + "数量", + "关键字", + "实参" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7457098_53441176", + "8_7399107_53346022" + ] + } + } + } + } + }, + { + "导入特定的函数": { + "data": { + "uuid": "python-5-37", + "seg": [ + [ + [ + "导入", + "特定", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用as给函数指定别名": { + "data": { + "uuid": "python-5-38", + "seg": [ + [ + [ + "as", + "函数", + "指定", + "别名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7414886_53368020", + "8_937139_1072787", + "8_1095761_1307402" + ] + } + } + } + } + }, + { + "使用as给模块指定别名": { + "data": { + "uuid": "python-5-39", + "seg": [ + [ + [ + "as", + "模块", + "指定", + "别名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入模块中的所有函数": { + "data": { + "uuid": "python-5-40", + "seg": [ + [ + [ + "导入", + "模块", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-61", + "seg": [ + [ + [ + "传递", + "任意", + "数量", + "实参" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数编写指南": { + "data": { + "uuid": "python-4-62", + "seg": [ + [ + [ + "函数", + "编写", + "指南" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_242096_229296" + ] + } + } + } + } + }, + { + "编写可接受任意数量参数的函数": { + "data": { + "uuid": "python-4-63", + "seg": [ + [ + [ + "编写", + "接受", + "任意", + "数量", + "参数", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写只接受关键字参数的函数": { + "data": { + "uuid": "python-4-64", + "seg": [ + [ + [ + "编写", + "接受", + "关键字", + "参数", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将元数据信息附加到函数参数上": { + "data": { + "uuid": "python-4-65", + "seg": [ + [ + [ + "将元", + "数据", + "信息", + "附加", + "函数参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从函数中返回多个值": { + "data": { + "uuid": "python-4-66", + "seg": [ + [ + [ + "函数", + "返回", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义带有默认参数的函数": { + "data": { + "uuid": "python-4-67", + "seg": [ + [ + [ + "定义", + "带有", + "默认", + "参数", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义匿名或内联函数": { + "data": { + "uuid": "python-4-68", + "seg": [ + [ + [ + "定义", + "匿名", + "内联", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在匿名函数中绑定变量的值": { + "data": { + "uuid": "python-4-69", + "seg": [ + [ + [ + "匿名", + "函数", + "绑定", + "变量", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7400078_53347856" + ] + } + } + } + } + }, + { + "让带有N个参数的可调用对象以较少的参数形式调用": { + "data": { + "uuid": "python-4-70", + "seg": [ + [ + [ + "带有", + "n", + "参数", + "调用", + "对象", + "较少", + "形式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用函数替代只有单个方法的类": { + "data": { + "uuid": "python-4-71", + "seg": [ + [ + [ + "函数", + "单个", + "方法", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7412738_53364749" + ] + } + } + } + } + }, + { + "在回调函数中携带额外的状态": { + "data": { + "uuid": "python-4-72", + "seg": [ + [ + [ + "回调", + "函数", + "携带", + "额外", + "状态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内联回调函数": { + "data": { + "uuid": "python-4-73", + "seg": [ + [ + [ + "内联", + "回调", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问定义在闭包内的变量": { + "data": { + "uuid": "python-4-74", + "seg": [ + [ + [ + "访问", + "定义", + "闭包", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-9", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类": { + "children": [ + { + "类定义class": { + "data": { + "uuid": "python-4-75", + "seg": [ + [ + [ + "类", + "定义", + "class" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1081340_1287004", + "8_740098_776347", + "8_7445922_53424966", + "8_879250_1024477", + "8_7453557_53436261" + ] + } + } + } + } + }, + { + "作用域和命名空间": { + "data": { + "uuid": "python-4-76", + "seg": [ + [ + [ + "作用域" + ], + [ + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象": { + "data": { + "uuid": "python-4-77", + "seg": [ + [ + [ + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "属性和方法": { + "children": [ + { + "模拟数值类型": { + "data": { + "uuid": "python-5-41", + "seg": [ + [ + [ + "模拟", + "数值", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7418328_53374253" + ] + } + } + } + } + }, + { + "字符串表示形式": { + "data": { + "uuid": "python-5-42", + "seg": [ + [ + [ + "字符串", + "形式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义的布尔值": { + "data": { + "uuid": "python-5-43", + "seg": [ + [ + [ + "自定义", + "布尔值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-78", + "seg": [ + [ + [ + "属性" + ], + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类编码风格": { + "data": { + "uuid": "python-4-79", + "seg": [ + [ + [ + "类", + "编码", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初探类": { + "children": [ + { + "类定义语法": { + "data": { + "uuid": "python-5-44", + "seg": [ + [ + [ + "类", + "定义", + "语法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_763325_821701" + ] + } + } + } + } + }, + { + "类对象": { + "data": { + "uuid": "python-5-45", + "seg": [ + [ + [ + "类", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_680405_532318" + ] + } + } + } + } + }, + { + "方法对象": { + "data": { + "uuid": "python-5-46", + "seg": [ + [ + [ + "方法", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-80", + "seg": [ + [ + [ + "初探", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "补充说明": { + "data": { + "uuid": "python-4-81", + "seg": [ + [ + [ + "补充" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "私有变量": { + "data": { + "uuid": "python-4-82", + "seg": [ + [ + [ + "私有", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成器表达式": { + "data": { + "uuid": "python-4-83", + "seg": [ + [ + [ + "生成器", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建自定义类": { + "data": { + "uuid": "python-4-84", + "seg": [ + [ + [ + "创建", + "自定义", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7449628_53431618" + ] + } + } + } + } + }, + { + "再谈隐藏": { + "data": { + "uuid": "python-4-85", + "seg": [ + [ + [ + "谈", + "隐藏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类的命名空间": { + "data": { + "uuid": "python-4-86", + "seg": [ + [ + [ + "类", + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指定超类": { + "data": { + "uuid": "python-4-87", + "seg": [ + [ + [ + "指定", + "超类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入探讨继承": { + "data": { + "uuid": "python-4-88", + "seg": [ + [ + [ + "深入探讨", + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多个超类": { + "data": { + "uuid": "python-4-89", + "seg": [ + [ + [ + "超类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口和内省": { + "children": [ + { + "Python文化中的接口和协议": { + "data": { + "uuid": "python-5-47", + "seg": [ + [ + [ + "python", + "文化", + "接口" + ], + [ + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python喜欢序列": { + "data": { + "uuid": "python-5-48", + "seg": [ + [ + [ + "python", + "喜欢", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用猴子补丁在运行时实现协议": { + "data": { + "uuid": "python-5-49", + "seg": [ + [ + [ + "猴子", + "补丁", + "运行", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Alex Martelli的水禽": { + "data": { + "uuid": "python-5-50", + "seg": [ + [ + [ + "alex", + "martelli", + "水禽" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义抽象基类的子类": { + "data": { + "uuid": "python-5-51", + "seg": [ + [ + [ + "定义", + "抽象", + "基类", + "子类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准库中的抽象基类": { + "data": { + "uuid": "python-5-52", + "seg": [ + [ + [ + "标准", + "库中", + "抽象", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义并使用一个抽象基类": { + "data": { + "uuid": "python-5-53", + "seg": [ + [ + [ + "定义", + "抽象", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tombola子类的测试方法": { + "data": { + "uuid": "python-5-54", + "seg": [ + [ + [ + "tombola", + "子类", + "测试方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python使用register的方式": { + "data": { + "uuid": "python-5-55", + "seg": [ + [ + [ + "python", + "register", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "鹅的行为有可能像鸭子": { + "data": { + "uuid": "python-5-56", + "seg": [ + [ + [ + "鹅", + "鸭子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-90", + "seg": [ + [ + [ + "接口" + ], + [ + "内省" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抽象基类": { + "data": { + "uuid": "python-4-91", + "seg": [ + [ + [ + "抽象", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入类": { + "children": [ + { + "导入单个类": { + "data": { + "uuid": "python-5-57", + "seg": [ + [ + [ + "导入", + "单个", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在一个模块中存储多个类": { + "data": { + "uuid": "python-5-58", + "seg": [ + [ + [ + "模块", + "存储", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从一个模块中导入多个类": { + "data": { + "uuid": "python-5-59", + "seg": [ + [ + [ + "模块", + "导入", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_252189_251591" + ] + } + } + } + } + }, + { + "导入模块中的所有类": { + "data": { + "uuid": "python-5-60", + "seg": [ + [ + [ + "导入", + "模块", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用别名": { + "data": { + "uuid": "python-5-61", + "seg": [ + [ + [ + "别名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义工作流程": { + "data": { + "uuid": "python-5-62", + "seg": [ + [ + [ + "自定义", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-92", + "seg": [ + [ + [ + "导入", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python标准库": { + "data": { + "uuid": "python-4-93", + "seg": [ + [ + [ + "python", + "标准", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-10", + "seg": [ + [ + [ + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "顺序语句结构": { + "data": { + "uuid": "python-3-11", + "seg": [ + [ + [ + "顺序", + "语句", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "条件和分支": { + "children": [ + { + "if": { + "children": [ + { + "if-else语句": { + "data": { + "uuid": "python-5-63", + "seg": [ + [ + [ + "if", + "else", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_841390_953092", + "8_7454830_53437520", + "8_7448632_53428774", + "8_7448004_53427974", + "8_757865_813520", + "8_848909_967254", + "8_7416400_53370451", + "8_766225_825540", + "8_883811_1022933", + "8_7445436_53424026" + ] + } + } + } + } + }, + { + "if-elif-else结构": { + "data": { + "uuid": "python-5-64", + "seg": [ + [ + [ + "if", + "elif", + "else", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7453733_53436421" + ] + } + } + } + } + }, + { + "省略else代码块": { + "data": { + "uuid": "python-5-65", + "seg": [ + [ + [ + "省略", + "else" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用if语句处理列表": { + "children": [ + { + "检查特殊元素": { + "data": { + "uuid": "python-6-16", + "seg": [ + [ + [ + "检查", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确定列表不是空的": { + "data": { + "uuid": "python-6-17", + "seg": [ + [ + [ + "列表", + "空" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1102382_1316813", + "8_7448582_53428773", + "8_7441223_53417061", + "8_7455364_53438236", + "8_7443998_53421914", + "8_700946_590283" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-66", + "seg": [ + [ + [ + "if语句", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置if语句的格式": { + "data": { + "uuid": "python-5-67", + "seg": [ + [ + [ + "设置", + "if语句", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-94", + "seg": [ + [ + [ + "if" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "elif": { + "data": { + "uuid": "python-4-95", + "seg": [ + [ + [ + "elif" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "else": { + "data": { + "uuid": "python-4-96", + "seg": [ + [ + [ + "else" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "条件判断": { + "data": { + "uuid": "python-4-97", + "seg": [ + [ + [ + "条件", + "判断" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1055401_1252515", + "8_7438336_53411665", + "8_7407819_53357994" + ] + } + } + } + } + }, + { + "这正是布尔值的用武之地": { + "data": { + "uuid": "python-4-98", + "seg": [ + [ + [ + "布尔值", + "用武之地" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码块嵌套": { + "children": [ + { + "字典列表": { + "data": { + "uuid": "python-5-68", + "seg": [ + [ + [ + "字典", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7415456_53368934" + ] + } + } + } + } + }, + { + "在字典中存储列表": { + "data": { + "uuid": "python-5-69", + "seg": [ + [ + [ + "字典", + "存储", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在字典中存储字典": { + "data": { + "uuid": "python-5-70", + "seg": [ + [ + [ + "字典", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-99", + "seg": [ + [ + [ + "嵌套" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "检查是否相等": { + "data": { + "uuid": "python-4-100", + "seg": [ + [ + [ + "检查" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_376642_406658" + ] + } + } + } + } + }, + { + "检查是否相等时忽略大小写": { + "data": { + "uuid": "python-4-101", + "seg": [ + [ + [ + "检查", + "大小写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数值比较": { + "data": { + "uuid": "python-4-102", + "seg": [ + [ + [ + "数值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "检查多个条件": { + "data": { + "uuid": "python-4-103", + "seg": [ + [ + [ + "检查", + "条件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "检查特定值是否包含在列表中": { + "data": { + "uuid": "python-4-104", + "seg": [ + [ + [ + "检查", + "特定", + "值", + "包含", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔表达式": { + "data": { + "uuid": "python-4-105", + "seg": [ + [ + [ + "布尔", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-12", + "seg": [ + [ + [ + "条件" + ], + [ + "分支" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环": { + "children": [ + { + "for": { + "data": { + "uuid": "python-4-106", + "seg": [ + [ + [ + "for" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_739187_772963", + "8_7457653_53442038", + "8_815920_911626", + "8_7441773_53418127", + "8_7441736_53418025", + "8_7424381_53385248", + "8_1053214_1250580" + ] + } + } + } + } + }, + { + "while": { + "data": { + "uuid": "python-4-107", + "seg": [ + [ + [ + "while" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7414233_53366901", + "8_7458395_53443193", + "8_7423828_53383996" + ] + } + } + } + } + }, + { + "break": { + "data": { + "uuid": "python-4-108", + "seg": [ + [ + [ + "break" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7459763_53444761", + "8_7423850_53384014" + ] + } + } + } + } + }, + { + "continue": { + "data": { + "uuid": "python-4-109", + "seg": [ + [ + [ + "continue" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_665165_482711" + ] + } + } + } + } + }, + { + "循环判断": { + "data": { + "uuid": "python-4-110", + "seg": [ + [ + [ + "循环", + "判断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代字典": { + "data": { + "uuid": "python-4-111", + "seg": [ + [ + [ + "迭代", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一些迭代工具": { + "data": { + "uuid": "python-4-112", + "seg": [ + [ + [ + "迭代", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "跳出循环": { + "data": { + "uuid": "python-4-113", + "seg": [ + [ + [ + "跳出", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环中的else子句": { + "data": { + "uuid": "python-4-114", + "seg": [ + [ + [ + "循环", + "else子句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1096794_1309415", + "8_7456888_53440982", + "8_7460330_53445438" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-13", + "seg": [ + [ + [ + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据类型": { + "children": [ + { + "整型": { + "data": { + "uuid": "python-4-115", + "seg": [ + [ + [ + "整型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "浮点型": { + "data": { + "uuid": "python-4-116", + "seg": [ + [ + [ + "浮点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔型": { + "data": { + "uuid": "python-4-117", + "seg": [ + [ + [ + "布尔" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串": { + "children": [ + { + "单引号字符串以及对引号转义": { + "data": { + "uuid": "python-5-71", + "seg": [ + [ + [ + "单引号", + "字符串" + ], + [ + "引号", + "转义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7442437_53419248" + ] + } + } + } + } + }, + { + "拼接字符串": { + "data": { + "uuid": "python-5-72", + "seg": [ + [ + [ + "拼接", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串表示str和repr": { + "data": { + "uuid": "python-5-73", + "seg": [ + [ + [ + "字符串", + "str" + ], + [ + "repr" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_664017_480720", + "8_867203_999671", + "8_748859_801039" + ] + } + } + } + } + }, + { + "长字符串、原始字符串和字节": { + "data": { + "uuid": "python-5-74", + "seg": [ + [ + [ + "长", + "字符串" + ], + [ + "原始", + "字符串" + ], + [ + "字节" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_688858_555605" + ] + } + } + } + } + }, + { + "字符串基本操作": { + "data": { + "uuid": "python-5-75", + "seg": [ + [ + [ + "字符串", + "基本操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置字符串的格式:精简版": { + "children": [ + { + "替换字段名": { + "data": { + "uuid": "python-6-18", + "seg": [ + [ + [ + "替换", + "字段名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-76", + "seg": [ + [ + [ + "设置", + "字符串", + "格式" + ] + ], + [ + [ + "精简版" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_753378_807824", + "8_7432534_53401685" + ] + } + } + } + } + }, + { + "使用方法修改字符串的大小写": { + "data": { + "uuid": "python-5-77", + "seg": [ + [ + [ + "方法", + "修改", + "字符串", + "大小写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用制表符或换行符来添加空白": { + "data": { + "uuid": "python-5-78", + "seg": [ + [ + [ + "制表符", + "换行符", + "添加", + "空白" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除空白": { + "data": { + "uuid": "python-5-79", + "seg": [ + [ + [ + "删除", + "空白" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用字符串时避免语法错误": { + "data": { + "uuid": "python-5-80", + "seg": [ + [ + [ + "字符串", + "语法错误" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7405305_53354488", + "8_1085239_1291888", + "8_770512_832351" + ] + } + } + } + } + }, + { + "字符串编码转换": { + "children": [ + { + "使用encode方法编码": { + "data": { + "uuid": "python-6-19", + "seg": [ + [ + [ + "encode", + "方法", + "编码" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_776155_842988", + "8_7432066_53401008" + ] + } + } + } + } + }, + { + "使用decode方法解码": { + "data": { + "uuid": "python-6-20", + "seg": [ + [ + [ + "decode", + "方法", + "解码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-81", + "seg": [ + [ + [ + "字符串", + "编码", + "转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7413318_53365216", + "8_1072237_1274462" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-118", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "datetime --- 基本的日期和时间类型": { + "data": { + "uuid": "python-4-119", + "seg": [ + [ + [ + "datetime", + "日期" + ], + [ + "时间", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "zoneinfo --- IANA时区支持": { + "data": { + "uuid": "python-4-120", + "seg": [ + [ + [ + "zoneinfo", + "iana", + "时区", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "calendar --- 日历相关函数": { + "data": { + "uuid": "python-4-121", + "seg": [ + [ + [ + "calendar", + "日历", + "相关", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "collections --- 容器数据类型": { + "data": { + "uuid": "python-4-122", + "seg": [ + [ + [ + "collections", + "容器", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427488_53391953" + ] + } + } + } + } + }, + { + "collections.abc --- 容器的抽象基类": { + "data": { + "uuid": "python-4-123", + "seg": [ + [ + [ + "collections", + "abc", + "容器", + "抽象", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "heapq --- 堆队列算法": { + "data": { + "uuid": "python-4-124", + "seg": [ + [ + [ + "heapq", + "堆", + "队列", + "算法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "bisect --- 数组二分查找算法": { + "data": { + "uuid": "python-4-125", + "seg": [ + [ + [ + "bisect", + "数组", + "查找", + "算法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "array --- 高效的数值数组": { + "data": { + "uuid": "python-4-126", + "seg": [ + [ + [ + "array", + "高效", + "数值", + "数组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7418580_53374937" + ] + } + } + } + } + }, + { + "weakref --- 弱引用": { + "data": { + "uuid": "python-4-127", + "seg": [ + [ + [ + "weakref", + "弱", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "types --- 动态类型创建和内置类型名称": { + "data": { + "uuid": "python-4-128", + "seg": [ + [ + [ + "types", + "动态", + "类型", + "创建" + ], + [ + "内置", + "类型", + "名称" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "copy --- 浅层 (shallow) 和深层 (deep) 复制操作": { + "data": { + "uuid": "python-4-129", + "seg": [ + [ + [ + "copy", + "浅层", + "shallow" + ], + [ + "深层", + "deep", + "复制", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1078207_1282578" + ] + } + } + } + } + }, + { + "pprint --- 数据美化输出": { + "data": { + "uuid": "python-4-130", + "seg": [ + [ + [ + "pprint", + "数据", + "美化", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "reprlib --- 另一种repr实现": { + "data": { + "uuid": "python-4-131", + "seg": [ + [ + [ + "reprlib", + "repr" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "enum --- 对枚举的支持": { + "data": { + "uuid": "python-4-132", + "seg": [ + [ + [ + "enum", + "枚举", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "graphlib --- Functionality to operate with graph-like structures": { + "data": { + "uuid": "python-4-133", + "seg": [ + [ + [ + "graphlib", + "functionality", + "to", + "operate", + "with", + "graph", + "like", + "structures" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔类型": { + "data": { + "uuid": "python-4-134", + "seg": [ + [ + [ + "布尔", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据类型转换": { + "data": { + "uuid": "python-4-135", + "seg": [ + [ + [ + "数据", + "类型转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7445655_53424326", + "8_661374_476391" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-14", + "seg": [ + [ + [ + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置类": { + "children": [ + { + "列表:list": { + "children": [ + { + "函数list": { + "data": { + "uuid": "python-5-82", + "seg": [ + [ + [ + "函数", + "list" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_870985_1002820", + "8_7409560_53360089", + "8_7402779_53350929", + "8_3197981_21754921", + "8_7412051_53363238", + "8_7452168_53434075", + "8_7430278_53397491", + "8_1083226_1289402", + "8_710204_668138", + "8_7400719_53348804" + ] + } + } + } + } + }, + { + "基本的列表操作": { + "children": [ + { + "遍历整个列表": { + "children": [ + { + "深入研究循环": { + "data": { + "uuid": "python-7-0", + "seg": [ + [ + [ + "深入研究", + "循环" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451844_53433470", + "8_749509_802037", + "8_7455772_53439093", + "8_7413842_53366100", + "8_7450557_53431394", + "8_7441381_53417526" + ] + } + } + } + } + }, + { + "在for循环中执行更多操作": { + "data": { + "uuid": "python-7-1", + "seg": [ + [ + [ + "for循环", + "执行", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451358_53432555", + "8_7398246_53344202", + "8_647098_450186", + "8_7411099_53361864", + "8_232125_204714", + "8_7451500_53432784", + "8_692855_568949", + "8_7432819_53402401", + "8_694829_575823", + "8_700844_590049" + ] + } + } + } + } + }, + { + "在for循环结束后执行一些操作": { + "data": { + "uuid": "python-7-2", + "seg": [ + [ + [ + "for循环", + "结束", + "执行", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_760546_817497" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-21", + "seg": [ + [ + [ + "遍历", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1022125_1215082" + ] + } + } + } + } + }, + { + "避免缩进错误": { + "children": [ + { + "忘记缩进": { + "data": { + "uuid": "python-7-3", + "seg": [ + [ + [ + "忘记", + "缩进" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "忘记缩进额外的代码行": { + "data": { + "uuid": "python-7-4", + "seg": [ + [ + [ + "忘记", + "缩进", + "额外" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不必要的缩进": { + "data": { + "uuid": "python-7-5", + "seg": [ + [ + [ + "不必要", + "缩进" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427194_53391458", + "8_7400959_53348901" + ] + } + } + } + } + }, + { + "循环后不必要的缩进": { + "data": { + "uuid": "python-7-6", + "seg": [ + [ + [ + "循环", + "不必要", + "缩进" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遗漏了冒号": { + "data": { + "uuid": "python-7-7", + "seg": [ + [ + [ + "遗漏", + "冒号" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7465009_53451741" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-22", + "seg": [ + [ + [ + "缩进" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_754462_809455", + "8_7455898_53439231" + ] + } + } + } + } + }, + { + "创建数值列表": { + "children": [ + { + "使用range创建数字列表": { + "data": { + "uuid": "python-7-8", + "seg": [ + [ + [ + "range", + "创建", + "数字", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_762209_820315", + "8_7429457_53397639", + "8_7446695_53426240", + "8_817083_913308", + "8_7449305_53429379", + "8_7407342_53357229" + ] + } + } + } + } + }, + { + "对数字列表执行简单的统计计算": { + "data": { + "uuid": "python-7-9", + "seg": [ + [ + [ + "数字", + "列表", + "执行", + "统计", + "计算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7434106_53404460", + "8_7447238_53426785", + "8_1068621_1269510" + ] + } + } + } + } + }, + { + "列表解析": { + "data": { + "uuid": "python-7-10", + "seg": [ + [ + [ + "列表", + "解析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1093959_1303896", + "8_741669_782107", + "8_1089404_1295981", + "8_763584_822125", + "8_7429587_53396485", + "8_7441309_53417231", + "8_7441358_53417461", + "8_1053059_1250376", + "8_1064935_1263974", + "8_748934_801168" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-23", + "seg": [ + [ + [ + "创建", + "数值", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置代码格式": { + "children": [ + { + "格式设置指南": { + "data": { + "uuid": "python-7-11", + "seg": [ + [ + [ + "格式", + "设置", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "行长": { + "data": { + "uuid": "python-7-12", + "seg": [ + [ + [ + "行长" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "空行": { + "data": { + "uuid": "python-7-13", + "seg": [ + [ + [ + "空行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他格式设置指南": { + "data": { + "uuid": "python-7-14", + "seg": [ + [ + [ + "格式", + "设置", + "指南" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7430600_53397732", + "8_7426225_53389136", + "8_1091774_1301238", + "8_7405981_53355443", + "8_1052495_1250096", + "8_7434856_53405719", + "8_7426255_53390683", + "8_4646908_29330843", + "8_7437552_53410492", + "8_679897_528257" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-24", + "seg": [ + [ + [ + "设置", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-83", + "seg": [ + [ + [ + "列表", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表方法": { + "data": { + "uuid": "python-5-84", + "seg": [ + [ + [ + "列表", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表数据类型": { + "data": { + "uuid": "python-5-85", + "seg": [ + [ + [ + "列表", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增强的赋值操作": { + "data": { + "uuid": "python-5-86", + "seg": [ + [ + [ + "增强", + "赋值", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列数据类型": { + "data": { + "uuid": "python-5-87", + "seg": [ + [ + [ + "序列", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引用": { + "data": { + "uuid": "python-5-88", + "seg": [ + [ + [ + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7409921_53360433" + ] + } + } + } + } + }, + { + "访问列表元素": { + "data": { + "uuid": "python-5-89", + "seg": [ + [ + [ + "访问", + "列表", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "索引从0而不是1开始": { + "data": { + "uuid": "python-5-90", + "seg": [ + [ + [ + "索引" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用列表中的各个值": { + "data": { + "uuid": "python-5-91", + "seg": [ + [ + [ + "列表", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7435482_53406191" + ] + } + } + } + } + }, + { + "遍历切片": { + "data": { + "uuid": "python-5-92", + "seg": [ + [ + [ + "遍历", + "切片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复制列表": { + "data": { + "uuid": "python-5-93", + "seg": [ + [ + [ + "复制", + "列表" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7415142_53368444" + ] + } + } + } + } + }, + { + "列表的创建和删除": { + "data": { + "uuid": "python-5-94", + "seg": [ + [ + [ + "列表", + "创建" + ], + [ + "删除" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对列表进行统计计算": { + "data": { + "uuid": "python-5-95", + "seg": [ + [ + [ + "列表", + "统计", + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对列表进行排序": { + "data": { + "uuid": "python-5-96", + "seg": [ + [ + [ + "列表", + "排序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-136", + "seg": [ + [ + [ + "列表" + ] + ], + [ + [ + "list" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典:dict": { + "children": [ + { + "访问字典中的值": { + "data": { + "uuid": "python-5-97", + "seg": [ + [ + [ + "访问", + "字典", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加键值对": { + "data": { + "uuid": "python-5-98", + "seg": [ + [ + [ + "添加", + "键值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "先创建一个空字典": { + "data": { + "uuid": "python-5-99", + "seg": [ + [ + [ + "创建", + "空", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改字典中的值": { + "data": { + "uuid": "python-5-100", + "seg": [ + [ + [ + "修改", + "字典", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1064919_1263993", + "8_1099146_1314080" + ] + } + } + } + } + }, + { + "删除键值对": { + "data": { + "uuid": "python-5-101", + "seg": [ + [ + [ + "删除", + "键值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "由类似对象组成的字典": { + "data": { + "uuid": "python-5-102", + "seg": [ + [ + [ + "类似", + "对象", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用get来访问值": { + "data": { + "uuid": "python-5-103", + "seg": [ + [ + [ + "get", + "访问", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7441350_53417429", + "8_7435736_53406637", + "8_731475_748888" + ] + } + } + } + } + }, + { + "遍历字典": { + "children": [ + { + "遍历所有键值对": { + "data": { + "uuid": "python-6-25", + "seg": [ + [ + [ + "遍历", + "键值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_762808_821150", + "8_7423793_53383990", + "8_766365_825588", + "8_1092742_1301100", + "8_7441453_53419144", + "8_767958_827776", + "8_647879_452198", + "8_669456_490997", + "8_7413422_53365331", + "8_7447092_53426742" + ] + } + } + } + } + }, + { + "遍历字典中的所有键": { + "data": { + "uuid": "python-6-26", + "seg": [ + [ + [ + "遍历", + "字典", + "键" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7425633_53387203", + "8_7443679_53420857" + ] + } + } + } + } + }, + { + "按特定顺序遍历字典中的所有键": { + "data": { + "uuid": "python-6-27", + "seg": [ + [ + [ + "特定", + "顺序", + "遍历", + "字典", + "键" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遍历字典中的所有值": { + "data": { + "uuid": "python-6-28", + "seg": [ + [ + [ + "遍历", + "字典", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_3197613_21755052", + "8_7431926_53400617", + "8_651138_458140", + "8_7451387_53432606", + "8_684951_543942", + "8_1102303_1316694", + "8_7406021_53355454", + "8_7435824_53406808", + "8_7447868_53427826", + "8_7396926_53342086" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-104", + "seg": [ + [ + [ + "遍历", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问字典": { + "data": { + "uuid": "python-5-105", + "seg": [ + [ + [ + "访问", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典推导式": { + "data": { + "uuid": "python-5-106", + "seg": [ + [ + [ + "字典", + "推导" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_877535_1014317" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-137", + "seg": [ + [ + [ + "字典" + ] + ], + [ + [ + "dict" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_769878_831113", + "8_863836_996313", + "8_7424720_53385912" + ] + } + } + } + } + }, + { + "元组:tuple": { + "children": [ + { + "定义元组": { + "data": { + "uuid": "python-5-107", + "seg": [ + [ + [ + "定义", + "元组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遍历元组中的所有值": { + "data": { + "uuid": "python-5-108", + "seg": [ + [ + [ + "遍历", + "元组", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改元组变量": { + "data": { + "uuid": "python-5-109", + "seg": [ + [ + [ + "修改", + "元组", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1065408_1264598" + ] + } + } + } + } + }, + { + "访问元组元素": { + "data": { + "uuid": "python-5-110", + "seg": [ + [ + [ + "访问", + "元组", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改元组": { + "data": { + "uuid": "python-5-111", + "seg": [ + [ + [ + "修改", + "元组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7435305_53405810", + "8_7446014_53425068", + "8_7422270_53379677" + ] + } + } + } + } + }, + { + "元组推导式": { + "data": { + "uuid": "python-5-112", + "seg": [ + [ + [ + "元组", + "推导" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-138", + "seg": [ + [ + [ + "元组" + ] + ], + [ + [ + "tuple" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合:set": { + "children": [ + { + "创建集合": { + "data": { + "uuid": "python-5-113", + "seg": [ + [ + [ + "创建", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_672899_499852", + "8_198895_115731", + "8_651400_458597" + ] + } + } + } + } + }, + { + "集合的交集、并集和差集运算": { + "data": { + "uuid": "python-5-114", + "seg": [ + [ + [ + "集合", + "交集" + ], + [ + "并集" + ], + [ + "差集", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-139", + "seg": [ + [ + [ + "集合" + ] + ], + [ + [ + "set" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1092395_1300302" + ] + } + } + } + } + }, + { + "整型:int": { + "data": { + "uuid": "python-4-140", + "seg": [ + [ + [ + "整型" + ] + ], + [ + [ + "int" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1052099_1249646", + "8_769661_830731", + "8_7398663_53345095" + ] + } + } + } + } + }, + { + "字符串:str": { + "data": { + "uuid": "python-4-141", + "seg": [ + [ + [ + "字符串" + ] + ], + [ + [ + "str" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_193318_98326", + "8_661411_476399", + "8_766312_825514", + "8_679005_524784", + "8_678600_523075", + "8_747787_799358" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-15", + "seg": [ + [ + [ + "内置", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用内置函数": { + "children": [ + { + "help": { + "data": { + "uuid": "python-4-142", + "seg": [ + [ + [ + "help" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "input": { + "data": { + "uuid": "python-4-143", + "seg": [ + [ + [ + "input" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_188429_86313", + "8_252097_316193" + ] + } + } + } + } + }, + { + "print": { + "data": { + "uuid": "python-4-144", + "seg": [ + [ + [ + "print" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455066_53437800", + "8_716528_709342", + "8_7456892_53440977", + "8_7429896_53396882", + "8_945649_1085945", + "8_6674118_47207136", + "8_7460641_53445738", + "8_737912_768666", + "8_7415478_53368947", + "8_751732_805437" + ] + } + } + } + } + }, + { + "range": { + "data": { + "uuid": "python-4-145", + "seg": [ + [ + [ + "range" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7463060_53448838", + "8_7408874_53359118", + "8_7445781_53424617", + "8_1050452_1247618", + "8_643811_443944" + ] + } + } + } + } + }, + { + "format": { + "data": { + "uuid": "python-4-146", + "seg": [ + [ + [ + "for", + "mat" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_701347_591060", + "8_7431781_53400326", + "8_7431499_53399850", + "8_779718_848155", + "8_786559_902672" + ] + } + } + } + } + }, + { + "len": { + "data": { + "uuid": "python-4-147", + "seg": [ + [ + [ + "len" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7428691_53394796" + ] + } + } + } + } + }, + { + "sorted": { + "data": { + "uuid": "python-4-148", + "seg": [ + [ + [ + "sorted" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_783002_854183", + "8_832031_933916", + "8_1055457_1252607", + "8_1052748_1250156", + "8_1031310_1226497" + ] + } + } + } + } + }, + { + "open": { + "data": { + "uuid": "python-4-149", + "seg": [ + [ + [ + "open" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_768353_828888" + ] + } + } + } + } + }, + { + "dir": { + "data": { + "uuid": "python-4-150", + "seg": [ + [ + [ + "dir" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "enumerate/zip": { + "data": { + "uuid": "python-4-151", + "seg": [ + [ + [ + "enumerate", + "zip" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7454164_53436851", + "8_1057819_1254926", + "8_238378_220208" + ] + } + } + } + } + }, + { + "type/isinstance": { + "data": { + "uuid": "python-4-152", + "seg": [ + [ + [ + "type", + "isinstance" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "min/max/sum": { + "data": { + "uuid": "python-4-153", + "seg": [ + [ + [ + "min", + "max", + "sum" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1104806_29328164", + "8_7453952_53436606", + "8_748289_800185" + ] + } + } + } + } + }, + { + "abs/round/pow/divmod": { + "data": { + "uuid": "python-4-154", + "seg": [ + [ + [ + "abs", + "round", + "pow", + "divmod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-16", + "seg": [ + [ + [ + "内置", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-1", + "seg": [ + [ + [ + "基础", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "进阶语法": { + "children": [ + { + "列表推导式": { + "data": { + "uuid": "python-3-17", + "seg": [ + [ + [ + "列表", + "推导" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "三元表达式": { + "children": [ + { + "算术转换": { + "data": { + "uuid": "python-4-155", + "seg": [ + [ + [ + "算术", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原子": { + "data": { + "uuid": "python-4-156", + "seg": [ + [ + [ + "原子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原型": { + "data": { + "uuid": "python-4-157", + "seg": [ + [ + [ + "原型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "await表达式": { + "data": { + "uuid": "python-4-158", + "seg": [ + [ + [ + "await", + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7429286_53395904", + "8_7454620_53437292", + "8_7440469_53415733" + ] + } + } + } + } + }, + { + "幂运算符": { + "data": { + "uuid": "python-4-159", + "seg": [ + [ + [ + "幂", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一元算术和位运算": { + "data": { + "uuid": "python-4-160", + "seg": [ + [ + [ + "算术" + ], + [ + "位", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "二元算术运算符": { + "data": { + "uuid": "python-4-161", + "seg": [ + [ + [ + "算术", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "移位运算": { + "data": { + "uuid": "python-4-162", + "seg": [ + [ + [ + "移位", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_242494_229867" + ] + } + } + } + } + }, + { + "布尔运算": { + "data": { + "uuid": "python-4-163", + "seg": [ + [ + [ + "布尔运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "赋值表达式": { + "data": { + "uuid": "python-4-164", + "seg": [ + [ + [ + "赋值", + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427152_53391294" + ] + } + } + } + } + }, + { + "条件表达式": { + "data": { + "uuid": "python-4-165", + "seg": [ + [ + [ + "条件", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表达式列表": { + "data": { + "uuid": "python-4-166", + "seg": [ + [ + [ + "表达式", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "求值顺序": { + "data": { + "uuid": "python-4-167", + "seg": [ + [ + [ + "求值", + "顺序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运算符优先级": { + "data": { + "uuid": "python-4-168", + "seg": [ + [ + [ + "运算符", + "优先级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-18", + "seg": [ + [ + [ + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7464708_53451239" + ] + } + } + } + } + }, + { + "断言": { + "data": { + "uuid": "python-3-19", + "seg": [ + [ + [ + "断言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "with-as": { + "data": { + "uuid": "python-3-20", + "seg": [ + [ + [ + "with", + "as" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常捕获预处理": { + "children": [ + { + "try-catch-finally": { + "data": { + "uuid": "python-4-169", + "seg": [ + [ + [ + "try", + "catch", + "finally" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常捕获": { + "children": [ + { + "不用提供参数": { + "data": { + "uuid": "python-5-115", + "seg": [ + [ + [ + "不用", + "提供", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多个except子句": { + "data": { + "uuid": "python-5-116", + "seg": [ + [ + [ + "except", + "子句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7403646_53352214", + "8_7404249_53353091", + "8_7433336_53403374" + ] + } + } + } + } + }, + { + "一箭双雕": { + "data": { + "uuid": "python-5-117", + "seg": [ + [ + [ + "一箭双雕" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "捕获对象": { + "data": { + "uuid": "python-5-118", + "seg": [ + [ + [ + "捕获", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一网打尽": { + "data": { + "uuid": "python-5-119", + "seg": [ + [ + [ + "一网打尽" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "万事大吉时": { + "data": { + "uuid": "python-5-120", + "seg": [ + [ + [ + "万事大吉" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "最后": { + "data": { + "uuid": "python-5-121", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-170", + "seg": [ + [ + [ + "异常", + "捕获" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-21", + "seg": [ + [ + [ + "异常", + "捕获", + "预处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串方法": { + "children": [ + { + "find": { + "data": { + "uuid": "python-4-171", + "seg": [ + [ + [ + "find" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7414406_53370177", + "8_1070595_1272030", + "8_773454_837139", + "8_7397460_53342451", + "8_756303_811516", + "8_869416_1249590" + ] + } + } + } + } + }, + { + "index": { + "data": { + "uuid": "python-4-172", + "seg": [ + [ + [ + "index" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7426160_53388904", + "8_156319_18775", + "8_730782_746735", + "8_7447625_53427546" + ] + } + } + } + } + }, + { + "join": { + "data": { + "uuid": "python-4-173", + "seg": [ + [ + [ + "join" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1094906_1305693", + "8_7398798_53345374" + ] + } + } + } + } + }, + { + "lower": { + "data": { + "uuid": "python-4-174", + "seg": [ + [ + [ + "lower" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455679_53438991", + "8_696148_579463" + ] + } + } + } + } + }, + { + "replace": { + "data": { + "uuid": "python-4-175", + "seg": [ + [ + [ + "replace" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7449369_53429413", + "8_1097173_1310348" + ] + } + } + } + } + }, + { + "split": { + "data": { + "uuid": "python-4-176", + "seg": [ + [ + [ + "split" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_4645435_29328032", + "8_662699_478417" + ] + } + } + } + } + }, + { + "strip": { + "data": { + "uuid": "python-4-177", + "seg": [ + [ + [ + "strip" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "translate": { + "data": { + "uuid": "python-4-178", + "seg": [ + [ + [ + "translate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "upper": { + "data": { + "uuid": "python-4-179", + "seg": [ + [ + [ + "upper" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "center": { + "data": { + "uuid": "python-4-180", + "seg": [ + [ + [ + "center" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "判断字符串是否满足特定的条件": { + "data": { + "uuid": "python-4-181", + "seg": [ + [ + [ + "判断", + "字符串", + "特定", + "条件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_750394_803411" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-22", + "seg": [ + [ + [ + "字符串", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "lambda函数": { + "children": [ + { + "迭代器": { + "children": [ + { + "迭代器协议": { + "data": { + "uuid": "python-5-122", + "seg": [ + [ + [ + "迭代", + "器", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从迭代器创建序列": { + "data": { + "uuid": "python-5-123", + "seg": [ + [ + [ + "迭代", + "器", + "创建", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-182", + "seg": [ + [ + [ + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成器": { + "children": [ + { + "创建生成器": { + "data": { + "uuid": "python-5-124", + "seg": [ + [ + [ + "创建", + "生成器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_960950_1111761", + "8_7399906_53347475", + "8_757304_812715", + "8_7399901_53347466", + "8_675908_512320", + "8_695082_576728" + ] + } + } + } + } + }, + { + "递归式生成器": { + "data": { + "uuid": "python-5-125", + "seg": [ + [ + [ + "递归", + "生成器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7446964_53426575" + ] + } + } + } + } + }, + { + "通用生成器": { + "data": { + "uuid": "python-5-126", + "seg": [ + [ + [ + "通用", + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成器的方法": { + "data": { + "uuid": "python-5-127", + "seg": [ + [ + [ + "生成器", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模拟生成器": { + "data": { + "uuid": "python-5-128", + "seg": [ + [ + [ + "模拟", + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-183", + "seg": [ + [ + [ + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装饰器": { + "data": { + "uuid": "python-4-184", + "seg": [ + [ + [ + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "闭包": { + "data": { + "uuid": "python-4-185", + "seg": [ + [ + [ + "闭", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-23", + "seg": [ + [ + [ + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7433343_53403440" + ] + } + } + } + } + }, + { + "文件": { + "children": [ + { + "打开文件": { + "data": { + "uuid": "python-4-186", + "seg": [ + [ + [ + "打开", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1151465_1758956", + "8_7417164_53371940", + "8_7415163_53368587", + "8_754627_809665", + "8_6659778_47028558", + "8_7427548_53392186", + "8_1087892_1294745", + "8_719473_713588", + "8_715663_708032", + "8_7425663_53387254" + ] + } + } + } + } + }, + { + "文件基本方法": { + "children": [ + { + "读取和写入": { + "data": { + "uuid": "python-5-129", + "seg": [ + [ + [ + "读取" + ], + [ + "写入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用管道重定向输出": { + "data": { + "uuid": "python-5-130", + "seg": [ + [ + [ + "管道", + "重定向", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关闭文件": { + "data": { + "uuid": "python-5-131", + "seg": [ + [ + [ + "关闭", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7450664_53431620", + "8_744445_790474", + "8_189485_88427", + "8_7442766_53420029", + "8_7429056_53395497", + "8_7450710_53431675", + "8_7426140_53388892" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-187", + "seg": [ + [ + [ + "文件", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件内容迭代": { + "children": [ + { + "每次一个字符(或字节)": { + "data": { + "uuid": "python-5-132", + "seg": [ + [ + [ + "字符", + "字节" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_771488_834130" + ] + } + } + } + } + }, + { + "每次一行": { + "data": { + "uuid": "python-5-133", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取所有内容": { + "data": { + "uuid": "python-5-134", + "seg": [ + [ + [ + "读取", + "内容" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427929_53394276", + "8_7449012_53429106", + "8_7431920_53400692", + "8_1095753_1307597", + "8_725925_737989", + "8_7438950_53412397" + ] + } + } + } + } + }, + { + "使用fileinput实现延迟行迭代": { + "data": { + "uuid": "python-5-135", + "seg": [ + [ + [ + "fileinput", + "延迟", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件迭代器": { + "data": { + "uuid": "python-5-136", + "seg": [ + [ + [ + "文件", + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-188", + "seg": [ + [ + [ + "文件", + "内容", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-24", + "seg": [ + [ + [ + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用标准库": { + "children": [ + { + "datetime": { + "data": { + "uuid": "python-4-189", + "seg": [ + [ + [ + "datetime" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "json": { + "data": { + "uuid": "python-4-190", + "seg": [ + [ + [ + "json" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "math": { + "data": { + "uuid": "python-4-191", + "seg": [ + [ + [ + "math" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "os": { + "data": { + "uuid": "python-4-192", + "seg": [ + [ + [ + "os" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_748650_800711", + "8_701501_591474", + "8_1077736_1282231", + "8_7457483_53442175", + "8_646464_448897" + ] + } + } + } + } + }, + { + "random": { + "data": { + "uuid": "python-4-193", + "seg": [ + [ + [ + "random" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_680216_529471", + "8_7438802_53412198", + "8_367569_394129", + "8_6537999_46091946", + "8_7404395_53353177", + "8_7464593_53451081", + "8_716715_709624", + "8_696107_579444" + ] + } + } + } + } + }, + { + "re": { + "data": { + "uuid": "python-4-194", + "seg": [ + [ + [ + "re" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sys": { + "data": { + "uuid": "python-4-195", + "seg": [ + [ + [ + "sys" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_167960_42792", + "8_713341_704641", + "8_876881_1011987", + "8_2013695_10372037", + "8_834611_939822" + ] + } + } + } + } + }, + { + "time": { + "data": { + "uuid": "python-4-196", + "seg": [ + [ + [ + "time" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "urllib": { + "data": { + "uuid": "python-4-197", + "seg": [ + [ + [ + "urllib" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_697472_583143", + "8_7426450_53389928" + ] + } + } + } + } + }, + { + "fileinput": { + "data": { + "uuid": "python-4-198", + "seg": [ + [ + [ + "fileinput" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他有趣的标准模块": { + "data": { + "uuid": "python-4-199", + "seg": [ + [ + [ + "有趣", + "标准", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-25", + "seg": [ + [ + [ + "标准", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符编码与解码": { + "children": [ + { + "理解内码和字节码的概念": { + "data": { + "uuid": "python-4-200", + "seg": [ + [ + [ + "理解", + "内码" + ], + [ + "字节", + "码", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-26", + "seg": [ + [ + [ + "字符", + "编码" + ], + [ + "解码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-2", + "seg": [ + [ + [ + "进阶", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象编程": { + "children": [ + { + "类和对象的概念": { + "data": { + "uuid": "python-3-27", + "seg": [ + [ + [ + "类" + ], + [ + "对象", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类成员": { + "data": { + "uuid": "python-3-28", + "seg": [ + [ + [ + "类", + "成员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象三要素": { + "children": [ + { + "封装": { + "data": { + "uuid": "python-4-201", + "seg": [ + [ + [ + "封装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继承": { + "children": [ + { + "子类的方法__init__": { + "data": { + "uuid": "python-5-137", + "seg": [ + [ + [ + "子类", + "方法", + "init" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重写父类的方法": { + "data": { + "uuid": "python-5-138", + "seg": [ + [ + [ + "重写", + "父类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模拟实物": { + "data": { + "uuid": "python-5-139", + "seg": [ + [ + [ + "模拟", + "实物" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-202", + "seg": [ + [ + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多态": { + "data": { + "uuid": "python-4-203", + "seg": [ + [ + [ + "多态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-29", + "seg": [ + [ + [ + "面向对象", + "三要素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建类": { + "data": { + "uuid": "python-3-30", + "seg": [ + [ + [ + "创建", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抽象类": { + "data": { + "uuid": "python-3-31", + "seg": [ + [ + [ + "抽象类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问限制": { + "data": { + "uuid": "python-3-32", + "seg": [ + [ + [ + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取对象信息": { + "data": { + "uuid": "python-3-33", + "seg": [ + [ + [ + "获取", + "对象", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-3", + "seg": [ + [ + [ + "面向对象编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "命令行与环境": { + "children": [ + { + "命令行": { + "children": [ + { + "接口选项": { + "data": { + "uuid": "python-5-140", + "seg": [ + [ + [ + "接口", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通用选项": { + "data": { + "uuid": "python-5-141", + "seg": [ + [ + [ + "通用", + "选项" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7444985_53423550" + ] + } + } + } + } + }, + { + "其他选项": { + "data": { + "uuid": "python-5-142", + "seg": [ + [ + [ + "选项" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455638_53438946", + "8_693673_571772" + ] + } + } + } + } + }, + { + "不应当使用的选项": { + "data": { + "uuid": "python-5-143", + "seg": [ + [ + [ + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-204", + "seg": [ + [ + [ + "命令行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环境变量": { + "children": [ + { + "调试模式变量": { + "data": { + "uuid": "python-5-144", + "seg": [ + [ + [ + "调试模式", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-205", + "seg": [ + [ + [ + "环境变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-34", + "seg": [ + [ + [ + "命令行" + ], + [ + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Unix平台中使用Python": { + "children": [ + { + "获取最新版本的Python": { + "children": [ + { + "在Linux中": { + "data": { + "uuid": "python-5-145", + "seg": [ + [ + [ + "linux" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424090_53384641", + "8_1058656_1256126", + "8_391941_435054", + "8_254693_258511", + "8_7433249_53403298", + "8_7423278_53383054", + "8_2156033_11915593", + "8_689208_556745", + "8_1062379_1260214" + ] + } + } + } + } + }, + { + "在FreeBSD和OpenBSD上": { + "data": { + "uuid": "python-5-146", + "seg": [ + [ + [ + "freebsd" + ], + [ + "openbsd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在OpenSolaris系统上": { + "data": { + "uuid": "python-5-147", + "seg": [ + [ + [ + "opensolaris", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-206", + "seg": [ + [ + [ + "获取", + "最新", + "版本", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建Python": { + "data": { + "uuid": "python-4-207", + "seg": [ + [ + [ + "构建", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "杂项": { + "data": { + "uuid": "python-4-208", + "seg": [ + [ + [ + "杂项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-35", + "seg": [ + [ + [ + "unix", + "平台", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Windows上使用Python": { + "children": [ + { + "完整安装程序": { + "children": [ + { + "安装步骤": { + "data": { + "uuid": "python-5-148", + "seg": [ + [ + [ + "安装", + "步骤" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_949514_1090674", + "8_7450679_53431644" + ] + } + } + } + } + }, + { + "删除MAX_PATH限制": { + "data": { + "uuid": "python-5-149", + "seg": [ + [ + [ + "删除", + "max", + "path" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1095703_1307362" + ] + } + } + } + } + }, + { + "无UI安装": { + "data": { + "uuid": "python-5-150", + "seg": [ + [ + [ + "ui", + "安装" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451960_53433790" + ] + } + } + } + } + }, + { + "免下载安装": { + "data": { + "uuid": "python-5-151", + "seg": [ + [ + [ + "免", + "下载安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改安装": { + "data": { + "uuid": "python-5-152", + "seg": [ + [ + [ + "修改", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-209", + "seg": [ + [ + [ + "安装程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Microsoft Store包": { + "data": { + "uuid": "python-4-210", + "seg": [ + [ + [ + "microsoft", + "store", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "nuget.org安装包": { + "data": { + "uuid": "python-4-211", + "seg": [ + [ + [ + "nuget", + "org", + "安装包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可嵌入的包": { + "children": [ + { + "Python应用程序": { + "data": { + "uuid": "python-5-153", + "seg": [ + [ + [ + "python", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌入Python": { + "data": { + "uuid": "python-5-154", + "seg": [ + [ + [ + "嵌入", + "python" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_259274_271023", + "8_1094107_1304076" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-212", + "seg": [ + [ + [ + "嵌入", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "替代捆绑包": { + "data": { + "uuid": "python-4-213", + "seg": [ + [ + [ + "捆绑", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置Python": { + "children": [ + { + "查找Python可执行文件": { + "data": { + "uuid": "python-5-155", + "seg": [ + [ + [ + "查找", + "python", + "可执行文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-214", + "seg": [ + [ + [ + "配置", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "UTF-8 模式": { + "data": { + "uuid": "python-4-215", + "seg": [ + [ + [ + "utf", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_748057_799753", + "8_816239_911733", + "8_7455649_53438967", + "8_761123_53403585", + "8_648746_456316", + "8_1093416_1302840" + ] + } + } + } + } + }, + { + "适用于Windows的Python启动器": { + "children": [ + { + "入门": { + "children": [ + { + "从虚拟环境": { + "data": { + "uuid": "python-6-29", + "seg": [ + [ + [ + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从脚本": { + "data": { + "uuid": "python-6-30", + "seg": [ + [ + [ + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从文件关联": { + "data": { + "uuid": "python-6-31", + "seg": [ + [ + [ + "从文件", + "关联" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-156", + "seg": [ + [ + [ + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Shebang Lines": { + "data": { + "uuid": "python-5-157", + "seg": [ + [ + [ + "shebang", + "lines" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "shebang lines的参数": { + "data": { + "uuid": "python-5-158", + "seg": [ + [ + [ + "shebang", + "lines", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义": { + "children": [ + { + "通过INI文件自定义": { + "data": { + "uuid": "python-6-32", + "seg": [ + [ + [ + "ini", + "文件", + "自定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义默认的Python版本": { + "data": { + "uuid": "python-6-33", + "seg": [ + [ + [ + "自定义", + "默认", + "python", + "版本" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_774708_838753" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-159", + "seg": [ + [ + [ + "自定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "诊断": { + "data": { + "uuid": "python-5-160", + "seg": [ + [ + [ + "诊断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-216", + "seg": [ + [ + [ + "windows", + "python", + "启动器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查找模块": { + "data": { + "uuid": "python-4-217", + "seg": [ + [ + [ + "查找", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "附加模块": { + "children": [ + { + "PyWin32": { + "data": { + "uuid": "python-5-161", + "seg": [ + [ + [ + "pywin32" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cx_Freeze": { + "data": { + "uuid": "python-5-162", + "seg": [ + [ + [ + "cx", + "freeze" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "WConio": { + "data": { + "uuid": "python-5-163", + "seg": [ + [ + [ + "wconio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-218", + "seg": [ + [ + [ + "附加", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Windows上编译Python": { + "data": { + "uuid": "python-4-219", + "seg": [ + [ + [ + "windows", + "编译", + "python" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_725514_730229", + "8_686794_549292", + "8_160614_28626", + "8_167564_42331", + "8_222074_177441", + "8_710068_668407", + "8_987860_1152052" + ] + } + } + } + } + }, + { + "其他平台": { + "data": { + "uuid": "python-4-220", + "seg": [ + [ + [ + "平台" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7418051_53373897" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-36", + "seg": [ + [ + [ + "windows", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在苹果系统上使用Python": { + "children": [ + { + "获取和安装MacPython": { + "children": [ + { + "如何运行Python脚本": { + "data": { + "uuid": "python-5-164", + "seg": [ + [ + [ + "运行", + "python", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行有图形界面的脚本": { + "data": { + "uuid": "python-5-165", + "seg": [ + [ + [ + "运行", + "图形界面", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置": { + "children": [ + { + "提取常量": { + "data": { + "uuid": "python-6-34", + "seg": [ + [ + [ + "提取", + "常量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455562_53438710", + "8_1033955_1229172", + "8_7431699_53400239", + "8_715179_707353", + "8_7459326_53444189", + "8_757303_1256370", + "8_1097531_1311125" + ] + } + } + } + } + }, + { + "配置文件": { + "data": { + "uuid": "python-6-35", + "seg": [ + [ + [ + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-166", + "seg": [ + [ + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_700990_590519" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-221", + "seg": [ + [ + [ + "获取" + ], + [ + "安装", + "macpython" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IDE": { + "data": { + "uuid": "python-4-222", + "seg": [ + [ + [ + "ide" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7441211_53422738", + "8_160766_31217", + "8_7442277_53419090" + ] + } + } + } + } + }, + { + "安装额外的Python包": { + "data": { + "uuid": "python-4-223", + "seg": [ + [ + [ + "安装", + "额外", + "python", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mac上的图形界面编程": { + "data": { + "uuid": "python-4-224", + "seg": [ + [ + [ + "mac", + "图形界面", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Mac上分发Python应用程序": { + "data": { + "uuid": "python-4-225", + "seg": [ + [ + [ + "mac", + "分发", + "python", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他资源": { + "data": { + "uuid": "python-4-226", + "seg": [ + [ + [ + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-37", + "seg": [ + [ + [ + "苹果", + "系统", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编辑器和集成开发环境": { + "data": { + "uuid": "python-3-38", + "seg": [ + [ + [ + "编辑器" + ], + [ + "集成", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7454513_53437198" + ] + } + } + } + } + }, + { + "Python解释器": { + "children": [ + { + "调用解释器": { + "children": [ + { + "传入参数": { + "data": { + "uuid": "python-5-167", + "seg": [ + [ + [ + "传入", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互模式": { + "data": { + "uuid": "python-5-168", + "seg": [ + [ + [ + "交互", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_735779_762042", + "8_1104807_1319061" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-227", + "seg": [ + [ + [ + "调用", + "解释器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7462759_53448419" + ] + } + } + } + } + }, + { + "解释器的运行环境": { + "children": [ + { + "源文件的字符编码": { + "data": { + "uuid": "python-5-169", + "seg": [ + [ + [ + "源文件", + "字符", + "编码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-228", + "seg": [ + [ + [ + "解释器", + "运行", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_757231_1032467" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-39", + "seg": [ + [ + [ + "python", + "解释器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python速览": { + "children": [ + { + "Python用作计算器": { + "children": [ + { + "数字": { + "data": { + "uuid": "python-5-170", + "seg": [ + [ + [ + "数字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7452951_53435428" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-229", + "seg": [ + [ + [ + "python", + "用作", + "计算器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7445601_53424260" + ] + } + } + } + } + }, + { + "走向编程的第一步": { + "data": { + "uuid": "python-4-230", + "seg": [ + [ + [ + "走向", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-40", + "seg": [ + [ + [ + "python", + "速览" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他流程控制工具": { + "children": [ + { + "range函数": { + "data": { + "uuid": "python-4-231", + "seg": [ + [ + [ + "range", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7395192_53337394" + ] + } + } + } + } + }, + { + "pass语句": { + "data": { + "uuid": "python-4-232", + "seg": [ + [ + [ + "pass", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_742025_783242" + ] + } + } + } + } + }, + { + "定义函数": { + "children": [ + { + "向函数传递信息": { + "data": { + "uuid": "python-5-171", + "seg": [ + [ + [ + "函数", + "传递信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实参和形参": { + "data": { + "uuid": "python-5-172", + "seg": [ + [ + [ + "实参" + ], + [ + "形参" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-233", + "seg": [ + [ + [ + "定义", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7419960_53377868", + "8_7433755_53404071", + "8_7433753_53404061" + ] + } + } + } + } + }, + { + "函数定义详解": { + "children": [ + { + "默认值参数": { + "data": { + "uuid": "python-5-173", + "seg": [ + [ + [ + "默认值", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键字参数": { + "data": { + "uuid": "python-5-174", + "seg": [ + [ + [ + "关键字", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特殊参数": { + "children": [ + { + "位置或关键字参数": { + "data": { + "uuid": "python-6-36", + "seg": [ + [ + [ + "位置", + "关键字", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "仅位置参数": { + "data": { + "uuid": "python-6-37", + "seg": [ + [ + [ + "仅", + "位置", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "仅限关键字参数": { + "data": { + "uuid": "python-6-38", + "seg": [ + [ + [ + "仅限", + "关键字", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数示例": { + "data": { + "uuid": "python-6-39", + "seg": [ + [ + [ + "函数", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-175", + "seg": [ + [ + [ + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "任意实参列表": { + "data": { + "uuid": "python-5-176", + "seg": [ + [ + [ + "任意", + "实参", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解包实参列表": { + "data": { + "uuid": "python-5-177", + "seg": [ + [ + [ + "解包", + "实参", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Lambda表达式": { + "data": { + "uuid": "python-5-178", + "seg": [ + [ + [ + "lambda", + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1063755_1261946", + "8_754809_809871" + ] + } + } + } + } + }, + { + "文档字符串": { + "data": { + "uuid": "python-5-179", + "seg": [ + [ + [ + "文档", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数注解": { + "data": { + "uuid": "python-5-180", + "seg": [ + [ + [ + "函数", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-234", + "seg": [ + [ + [ + "函数", + "定义", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "小插曲:编码风格": { + "data": { + "uuid": "python-4-235", + "seg": [ + [ + [ + "插曲" + ] + ], + [ + [ + "编码", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-41", + "seg": [ + [ + [ + "流程", + "控制", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据结构": { + "children": [ + { + "列表详解": { + "children": [ + { + "用列表实现堆栈": { + "data": { + "uuid": "python-5-181", + "seg": [ + [ + [ + "列表", + "堆栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用列表实现队列": { + "data": { + "uuid": "python-5-182", + "seg": [ + [ + [ + "列表", + "队列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌套的列表推导式": { + "data": { + "uuid": "python-5-183", + "seg": [ + [ + [ + "嵌套", + "列表", + "推导" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-236", + "seg": [ + [ + [ + "列表", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7444621_53423004", + "8_7437744_53410880" + ] + } + } + } + } + }, + { + "del语句": { + "data": { + "uuid": "python-4-237", + "seg": [ + [ + [ + "del", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环的技巧": { + "data": { + "uuid": "python-4-238", + "seg": [ + [ + [ + "循环", + "技巧" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入条件控制": { + "data": { + "uuid": "python-4-239", + "seg": [ + [ + [ + "条件", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列和其他类型的比较": { + "data": { + "uuid": "python-4-240", + "seg": [ + [ + [ + "序列" + ], + [ + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列构成的数组": { + "children": [ + { + "内置序列类型概览": { + "data": { + "uuid": "python-5-184", + "seg": [ + [ + [ + "内置", + "序列", + "类型", + "概览" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元组不仅仅是不可变的列表": { + "data": { + "uuid": "python-5-185", + "seg": [ + [ + [ + "元组", + "变", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列的增量赋值": { + "data": { + "uuid": "python-5-186", + "seg": [ + [ + [ + "序列", + "增量", + "赋值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "list.sort方法和内置函数sorted": { + "data": { + "uuid": "python-5-187", + "seg": [ + [ + [ + "list", + "sort", + "方法" + ], + [ + "内置", + "函数", + "sorted" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用bisect来管理已排序的序列": { + "data": { + "uuid": "python-5-188", + "seg": [ + [ + [ + "bisect", + "管理", + "排序", + "序列" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7437968_53411243" + ] + } + } + } + } + }, + { + "当列表不是首选时": { + "data": { + "uuid": "python-5-189", + "seg": [ + [ + [ + "列表", + "首选" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-241", + "seg": [ + [ + [ + "序列", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文本和字节序列": { + "children": [ + { + "字节概要": { + "data": { + "uuid": "python-5-190", + "seg": [ + [ + [ + "字节", + "概要" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本的编解码器": { + "data": { + "uuid": "python-5-191", + "seg": [ + [ + [ + "编解码器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理文本文件": { + "data": { + "uuid": "python-5-192", + "seg": [ + [ + [ + "文本文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为了正确比较而规范化Unicode字符串": { + "data": { + "uuid": "python-5-193", + "seg": [ + [ + [ + "规范化", + "unicode", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Unicode文本排序": { + "data": { + "uuid": "python-5-194", + "seg": [ + [ + [ + "unicode", + "文本", + "排序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Unicode数据库": { + "data": { + "uuid": "python-5-195", + "seg": [ + [ + [ + "unicode", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "支持字符串和字节序列的双模式API": { + "data": { + "uuid": "python-5-196", + "seg": [ + [ + [ + "支持", + "字符串" + ], + [ + "字节", + "序列", + "双模式", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7459451_53445079" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-242", + "seg": [ + [ + [ + "文本" + ], + [ + "字节", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-42", + "seg": [ + [ + [ + "数据结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块": { + "children": [ + { + "模块详解": { + "children": [ + { + "以脚本方式执行模块": { + "data": { + "uuid": "python-5-197", + "seg": [ + [ + [ + "脚本", + "方式", + "执行", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块搜索路径": { + "data": { + "uuid": "python-5-198", + "seg": [ + [ + [ + "模块", + "搜索", + "路径" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7406339_53358780" + ] + } + } + } + } + }, + { + "“已编译的” Python文件": { + "data": { + "uuid": "python-5-199", + "seg": [ + [ + [ + "编译", + "python", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-243", + "seg": [ + [ + [ + "模块", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准模块": { + "data": { + "uuid": "python-4-244", + "seg": [ + [ + [ + "标准", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "dir函数": { + "data": { + "uuid": "python-4-245", + "seg": [ + [ + [ + "dir", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包": { + "children": [ + { + "从包中导入 *": { + "data": { + "uuid": "python-5-200", + "seg": [ + [ + [ + "包中", + "导入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1084971_1291392" + ] + } + } + } + } + }, + { + "子包参考": { + "data": { + "uuid": "python-5-201", + "seg": [ + [ + [ + "子", + "包", + "参考" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多目录中的包": { + "data": { + "uuid": "python-5-202", + "seg": [ + [ + [ + "目录", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_385495_422819", + "8_356293_371730", + "8_771448_834056", + "8_700745_589833" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-246", + "seg": [ + [ + [ + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装第三方模块": { + "data": { + "uuid": "python-4-247", + "seg": [ + [ + [ + "安装", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_237219_217099", + "8_7403121_53351359", + "8_202253_126613" + ] + } + } + } + } + }, + { + "Pillow": { + "data": { + "uuid": "python-4-248", + "seg": [ + [ + [ + "pillow" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "requests": { + "data": { + "uuid": "python-4-249", + "seg": [ + [ + [ + "requests" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7422629_53381336", + "8_1093148_1302277", + "8_7445044_53423605", + "8_1056835_1253886", + "8_7455246_53438096", + "8_1047358_1244368", + "8_1086125_1292939", + "8_7418209_53374117", + "8_765927_824952", + "8_688315_553853" + ] + } + } + } + } + }, + { + "chardet": { + "data": { + "uuid": "python-4-250", + "seg": [ + [ + [ + "chardet" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "psutil": { + "data": { + "uuid": "python-4-251", + "seg": [ + [ + [ + "psutil" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cmath和复数": { + "data": { + "uuid": "python-4-252", + "seg": [ + [ + [ + "cmath" + ], + [ + "复数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回到未来": { + "data": { + "uuid": "python-4-253", + "seg": [ + [ + [ + "回到未来" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块就是程序": { + "data": { + "uuid": "python-4-254", + "seg": [ + [ + [ + "模块", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块是用来下定义的": { + "data": { + "uuid": "python-4-255", + "seg": [ + [ + [ + "模块", + "下定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让模块可用": { + "data": { + "uuid": "python-4-256", + "seg": [ + [ + [ + "模块", + "可用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-43", + "seg": [ + [ + [ + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输入与输出": { + "children": [ + { + "更复杂的输出格式": { + "children": [ + { + "格式化字符串字面值": { + "data": { + "uuid": "python-5-203", + "seg": [ + [ + [ + "格式化", + "字符串", + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串format方法": { + "data": { + "uuid": "python-5-204", + "seg": [ + [ + [ + "字符串", + "for", + "mat", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_747724_799207", + "8_7426083_53388848", + "8_654100_463476" + ] + } + } + } + } + }, + { + "手动格式化字符串": { + "data": { + "uuid": "python-5-205", + "seg": [ + [ + [ + "手动", + "格式化", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "旧式字符串格式化方法": { + "data": { + "uuid": "python-5-206", + "seg": [ + [ + [ + "旧式", + "字符串", + "格式化", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-257", + "seg": [ + [ + [ + "输出", + "格式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7418799_53375290", + "8_7462835_53448532", + "8_7412112_53363289", + "8_7439132_53412990", + "8_1062626_1260468", + "8_7395892_53338975", + "8_7455519_53438632", + "8_7457477_53441728", + "8_205829_137017", + "8_7459737_53444735" + ] + } + } + } + } + }, + { + "读写文件": { + "children": [ + { + "文件对象的方法": { + "data": { + "uuid": "python-5-207", + "seg": [ + [ + [ + "文件", + "对象", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用json保存结构化数据": { + "data": { + "uuid": "python-5-208", + "seg": [ + [ + [ + "json", + "保存", + "结构化", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文件读写过程": { + "data": { + "uuid": "python-5-209", + "seg": [ + [ + [ + "文件", + "读写", + "过程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7415651_53369180", + "8_7431416_53399784", + "8_7411634_53362601", + "8_172864_51802", + "8_701610_591488" + ] + } + } + } + } + }, + { + "用shelve模块保存变量": { + "data": { + "uuid": "python-5-210", + "seg": [ + [ + [ + "shelve", + "模块", + "保存", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用pprint.pformat函数保存变量": { + "data": { + "uuid": "python-5-211", + "seg": [ + [ + [ + "pprint", + "p", + "for", + "mat", + "函数", + "保存", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-258", + "seg": [ + [ + [ + "读写", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7461911_53447346", + "8_7461476_53446601", + "8_7450243_53430801" + ] + } + } + } + } + }, + { + "使用input函数输入": { + "data": { + "uuid": "python-4-259", + "seg": [ + [ + [ + "input", + "函数", + "输入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7449233_53429448", + "8_7420692_53378911", + "8_7448210_53428263", + "8_750470_803545" + ] + } + } + } + } + }, + { + "使用print函数输出": { + "data": { + "uuid": "python-4-260", + "seg": [ + [ + [ + "print", + "函数", + "输出" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1078163_1282547", + "8_214673_159368", + "8_7458648_53443290", + "8_355220_368490", + "8_752199_806213", + "8_748186_799968", + "8_1092844_1301493", + "8_1096122_1308075" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-44", + "seg": [ + [ + [ + "输入" + ], + [ + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "错误和异常": { + "children": [ + { + "句法错误": { + "data": { + "uuid": "python-4-261", + "seg": [ + [ + [ + "句法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常": { + "data": { + "uuid": "python-4-262", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理异常": { + "data": { + "uuid": "python-4-263", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_202487_127554" + ] + } + } + } + } + }, + { + "触发异常": { + "data": { + "uuid": "python-4-264", + "seg": [ + [ + [ + "触发", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常链": { + "data": { + "uuid": "python-4-265", + "seg": [ + [ + [ + "异常", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用户自定义异常": { + "data": { + "uuid": "python-4-266", + "seg": [ + [ + [ + "用户", + "自定义", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义清理操作": { + "data": { + "uuid": "python-4-267", + "seg": [ + [ + [ + "定义", + "清理", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "预定义的清理操作": { + "data": { + "uuid": "python-4-268", + "seg": [ + [ + [ + "预定", + "义", + "清理", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让事情沿你指定的轨道出错": { + "children": [ + { + "自定义的异常类": { + "data": { + "uuid": "python-5-212", + "seg": [ + [ + [ + "自定义", + "异常", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-269", + "seg": [ + [ + [ + "事情", + "指定", + "轨道", + "出错" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7433278_53403240", + "8_7397571_53342669", + "8_7425072_53386245", + "8_672117_496732", + "8_7427640_53392251", + "8_7397803_53343221", + "8_682704_537563", + "8_7415829_53369414", + "8_869417_1000592" + ] + } + } + } + } + }, + { + "异常之禅": { + "data": { + "uuid": "python-4-270", + "seg": [ + [ + [ + "异常", + "禅" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不那么异常的情况": { + "data": { + "uuid": "python-4-271", + "seg": [ + [ + [ + "异常", + "情况" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7446806_53426362", + "8_7397290_53342042", + "8_7410791_53361591", + "8_7447031_53426569", + "8_7412495_53363925" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-45", + "seg": [ + [ + [], + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准库简介": { + "children": [ + { + "操作系统接口": { + "data": { + "uuid": "python-4-272", + "seg": [ + [ + [ + "操作系统", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件通配符": { + "data": { + "uuid": "python-4-273", + "seg": [ + [ + [ + "文件", + "通配符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命令行参数": { + "data": { + "uuid": "python-4-274", + "seg": [ + [ + [ + "命令行", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "错误输出重定向和程序终止": { + "data": { + "uuid": "python-4-275", + "seg": [ + [ + [ + "输出", + "重定向" + ], + [ + "程序", + "终止" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串模式匹配": { + "data": { + "uuid": "python-4-276", + "seg": [ + [ + [ + "字符串", + "模式匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数学": { + "data": { + "uuid": "python-4-277", + "seg": [ + [ + [ + "数学" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "互联网访问": { + "data": { + "uuid": "python-4-278", + "seg": [ + [ + [ + "互联网", + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日期和时间": { + "data": { + "uuid": "python-4-279", + "seg": [ + [ + [ + "日期" + ], + [ + "时间" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1052132_1249694" + ] + } + } + } + } + }, + { + "数据压缩": { + "data": { + "uuid": "python-4-280", + "seg": [ + [ + [ + "数据压缩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "性能测量": { + "data": { + "uuid": "python-4-281", + "seg": [ + [ + [ + "性能", + "测量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "质量控制": { + "data": { + "uuid": "python-4-282", + "seg": [ + [ + [ + "质量", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自带电池": { + "data": { + "uuid": "python-4-283", + "seg": [ + [ + [ + "自带", + "电池" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化输出": { + "data": { + "uuid": "python-4-284", + "seg": [ + [ + [ + "格式化", + "输出" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_720370_714855" + ] + } + } + } + } + }, + { + "模板": { + "data": { + "uuid": "python-4-285", + "seg": [ + [ + [ + "模板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用二进制数据记录格式": { + "data": { + "uuid": "python-4-286", + "seg": [ + [ + [ + "二进制", + "数据", + "记录", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多线程": { + "data": { + "uuid": "python-4-287", + "seg": [ + [ + [ + "多线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "日志": { + "data": { + "uuid": "python-4-288", + "seg": [ + [ + [ + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "弱引用": { + "data": { + "uuid": "python-4-289", + "seg": [ + [ + [ + "弱", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用于操作列表的工具": { + "data": { + "uuid": "python-4-290", + "seg": [ + [ + [ + "用于", + "操作", + "列表", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "十进制浮点运算": { + "data": { + "uuid": "python-4-291", + "seg": [ + [ + [ + "十进制", + "浮点运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-46", + "seg": [ + [ + [ + "标准", + "库", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式编辑和编辑历史": { + "children": [ + { + "Tab补全和编辑历史": { + "data": { + "uuid": "python-4-292", + "seg": [ + [ + [ + "tab", + "补全" + ], + [ + "编辑", + "历史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "默认交互式解释器的替代品": { + "data": { + "uuid": "python-4-293", + "seg": [ + [ + [ + "默认", + "交互式", + "解释器", + "替代品" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-47", + "seg": [ + [ + [ + "交互式", + "编辑" + ], + [ + "编辑", + "历史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "浮点算术:争议和限制": { + "children": [ + { + "表示性错误": { + "data": { + "uuid": "python-4-294", + "seg": [ + [ + [ + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-48", + "seg": [ + [ + [ + "浮点", + "算术" + ] + ], + [ + [ + "争议" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "概述": { + "children": [ + { + "其他实现": { + "data": { + "uuid": "python-4-295", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标注": { + "data": { + "uuid": "python-4-296", + "seg": [ + [ + [ + "标注" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可用性注释": { + "data": { + "uuid": "python-4-297", + "seg": [ + [ + [ + "可用性", + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-49", + "seg": [ + [ + [ + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "词法分析": { + "children": [ + { + "行结构": { + "data": { + "uuid": "python-4-298", + "seg": [ + [ + [ + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他形符": { + "data": { + "uuid": "python-4-299", + "seg": [ + [ + [ + "形符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字面值": { + "data": { + "uuid": "python-4-300", + "seg": [ + [ + [ + "字", + "面值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运算符": { + "children": [ + { + "赋值运算符": { + "data": { + "uuid": "python-5-213", + "seg": [ + [ + [ + "赋值", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_774122_838025", + "8_7460259_53445479" + ] + } + } + } + } + }, + { + "比较(关系)运算符": { + "data": { + "uuid": "python-5-214", + "seg": [ + [ + [ + "关系", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "逻辑运算符": { + "data": { + "uuid": "python-5-215", + "seg": [ + [ + [ + "逻辑", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "位运算符": { + "data": { + "uuid": "python-5-216", + "seg": [ + [ + [ + "位", + "运算符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7423742_53383866", + "8_7450673_53431696", + "8_7444550_53422769" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-301", + "seg": [ + [ + [ + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分隔符": { + "data": { + "uuid": "python-4-302", + "seg": [ + [ + [ + "分隔符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-50", + "seg": [ + [ + [ + "词法", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据模型": { + "children": [ + { + "标准类型层级结构": { + "data": { + "uuid": "python-4-303", + "seg": [ + [ + [ + "标准", + "类型", + "层级", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特殊方法名称": { + "data": { + "uuid": "python-4-304", + "seg": [ + [ + [ + "方法", + "名称" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "协程": { + "children": [ + { + "生成器如何进化成协程": { + "data": { + "uuid": "python-5-217", + "seg": [ + [ + [ + "生成器", + "进化", + "成", + "协程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用作协程的生成器的基本行为": { + "data": { + "uuid": "python-5-218", + "seg": [ + [ + [ + "作协", + "程", + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "预激协程的装饰器": { + "data": { + "uuid": "python-5-219", + "seg": [ + [ + [ + "预激", + "协程", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让协程返回值": { + "data": { + "uuid": "python-5-220", + "seg": [ + [ + [ + "协程", + "返回值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7435927_53406943" + ] + } + } + } + } + }, + { + "使用yield from": { + "data": { + "uuid": "python-5-221", + "seg": [ + [ + [ + "yield", + "from" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "yield from的意义": { + "data": { + "uuid": "python-5-222", + "seg": [ + [ + [ + "yield", + "from", + "意义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用案例:使用协程做离散事件仿真": { + "data": { + "uuid": "python-5-223", + "seg": [ + [ + [ + "案例" + ] + ], + [ + [ + "协程", + "做", + "离散", + "事件", + "仿真" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-305", + "seg": [ + [ + [ + "协程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-51", + "seg": [ + [ + [ + "数据模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "执行模型": { + "children": [ + { + "程序的结构": { + "data": { + "uuid": "python-4-306", + "seg": [ + [ + [ + "程序", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451367_53432577", + "8_7432013_53401083", + "8_748030_799840", + "8_7435548_53406317" + ] + } + } + } + } + }, + { + "命名与绑定": { + "data": { + "uuid": "python-4-307", + "seg": [ + [ + [ + "命名" + ], + [ + "绑定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-52", + "seg": [ + [ + [ + "执行", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入系统": { + "children": [ + { + "importlib": { + "data": { + "uuid": "python-4-308", + "seg": [ + [ + [ + "importlib" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "搜索": { + "data": { + "uuid": "python-4-309", + "seg": [ + [ + [ + "搜索" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "加载": { + "data": { + "uuid": "python-4-310", + "seg": [ + [ + [ + "加载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于路径的查找器": { + "data": { + "uuid": "python-4-311", + "seg": [ + [ + [ + "路径", + "查找", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "替换标准导入系统": { + "data": { + "uuid": "python-4-312", + "seg": [ + [ + [ + "替换", + "标准", + "导入", + "系统" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7412426_53363787", + "8_7425670_53387288", + "8_7459397_53444322", + "8_7444607_53422912", + "8_7444483_53422766" + ] + } + } + } + } + }, + { + "包相对导入": { + "data": { + "uuid": "python-4-313", + "seg": [ + [ + [ + "包", + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "有关__main__的特殊事项": { + "data": { + "uuid": "python-4-314", + "seg": [ + [ + [ + "main", + "事项" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_381959_416113", + "8_1096157_1308180", + "8_1095555_1307032" + ] + } + } + } + } + }, + { + "参考文献": { + "data": { + "uuid": "python-4-315", + "seg": [ + [ + [ + "参考文献" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-53", + "seg": [ + [ + [ + "导入", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复合语句": { + "children": [ + { + "while语句": { + "data": { + "uuid": "python-4-316", + "seg": [ + [ + [ + "while", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "try语句": { + "data": { + "uuid": "python-4-317", + "seg": [ + [ + [ + "try", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1063517_1261540" + ] + } + } + } + } + }, + { + "with语句": { + "data": { + "uuid": "python-4-318", + "seg": [ + [ + [ + "with", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_757547_813087" + ] + } + } + } + } + }, + { + "类定义": { + "data": { + "uuid": "python-4-319", + "seg": [ + [ + [ + "类", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-54", + "seg": [ + [ + [ + "复合", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "顶级组件": { + "children": [ + { + "完整的Python程序": { + "children": [ + { + "使用文本编辑器": { + "data": { + "uuid": "python-5-224", + "seg": [ + [ + [ + "文本编辑", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python代码运行助手": { + "data": { + "uuid": "python-5-225", + "seg": [ + [ + [ + "python", + "代码运行", + "助手" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-320", + "seg": [ + [ + [ + "python", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件输入": { + "data": { + "uuid": "python-4-321", + "seg": [ + [ + [ + "文件", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式输入": { + "data": { + "uuid": "python-4-322", + "seg": [ + [ + [ + "交互式", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表达式输入": { + "data": { + "uuid": "python-4-323", + "seg": [ + [ + [ + "表达式", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-55", + "seg": [ + [ + [ + "顶级", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完整的语法规范": { + "data": { + "uuid": "python-3-56", + "seg": [ + [ + [ + "语法", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置常量": { + "children": [ + { + "由site模块添加的常量": { + "data": { + "uuid": "python-4-324", + "seg": [ + [ + [ + "site", + "模块", + "添加", + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-57", + "seg": [ + [ + [ + "内置", + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置类型": { + "children": [ + { + "逻辑值检测": { + "data": { + "uuid": "python-4-325", + "seg": [ + [ + [ + "逻辑值", + "检测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔运算 --- and, or, not": { + "data": { + "uuid": "python-4-326", + "seg": [ + [ + [ + "布尔运算", + "and", + "or", + "not" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_368230_394646", + "8_718045_711598", + "8_175126_55398", + "8_7452207_53434102", + "8_7402121_53349724", + "8_7406350_53355783" + ] + } + } + } + } + }, + { + "比较": { + "data": { + "uuid": "python-4-327", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数字类型 --- int, float, complex": { + "data": { + "uuid": "python-4-328", + "seg": [ + [ + [ + "数字", + "类型", + "int", + "float", + "complex" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7398948_53345641", + "8_7424548_53385633", + "8_7439290_53413290", + "8_7410536_53361481" + ] + } + } + } + } + }, + { + "迭代器类型": { + "data": { + "uuid": "python-4-329", + "seg": [ + [ + [ + "迭代", + "器", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列类型 --- list, tuple, range": { + "data": { + "uuid": "python-4-330", + "seg": [ + [ + [ + "序列", + "类型", + "list", + "tuple", + "range" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7418675_53374974", + "8_776103_841049" + ] + } + } + } + } + }, + { + "文本序列类型 --- str": { + "data": { + "uuid": "python-4-331", + "seg": [ + [ + [ + "文本", + "序列", + "类型", + "str" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451782_53434165" + ] + } + } + } + } + }, + { + "二进制序列类型 --- bytes, bytearray, memoryview": { + "data": { + "uuid": "python-4-332", + "seg": [ + [ + [ + "二进制", + "序列", + "类型", + "bytes", + "bytearray", + "memoryview" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合类型 --- set, frozenset": { + "data": { + "uuid": "python-4-333", + "seg": [ + [ + [ + "集合", + "类型", + "set", + "frozenset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射类型 --- dict": { + "data": { + "uuid": "python-4-334", + "seg": [ + [ + [ + "映射", + "类型", + "dict" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上下文管理器类型": { + "data": { + "uuid": "python-4-335", + "seg": [ + [ + [ + "上下文", + "管理器", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Generic Alias Type": { + "data": { + "uuid": "python-4-336", + "seg": [ + [ + [ + "generic", + "alias", + "type" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他内置类型": { + "data": { + "uuid": "python-4-337", + "seg": [ + [ + [ + "内置", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_175789_56960", + "8_169502_45467" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-58", + "seg": [ + [ + [ + "内置", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置异常": { + "children": [ + { + "基类": { + "data": { + "uuid": "python-4-338", + "seg": [ + [ + [ + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "警告": { + "data": { + "uuid": "python-4-339", + "seg": [ + [ + [ + "警告" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_660081_475570" + ] + } + } + } + } + }, + { + "异常层次结构": { + "data": { + "uuid": "python-4-340", + "seg": [ + [ + [ + "异常", + "层次结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-59", + "seg": [ + [ + [ + "内置", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文本处理服务": { + "children": [ + { + "string --- 常见的字符串操作": { + "data": { + "uuid": "python-4-341", + "seg": [ + [ + [ + "string", + "常见", + "字符串", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_716709_709601", + "8_1049281_1246675", + "8_724268_726238", + "8_771959_834947", + "8_1068610_1269438" + ] + } + } + } + } + }, + { + "re --- 正则表达式操作": { + "data": { + "uuid": "python-4-342", + "seg": [ + [ + [ + "re", + "正则表达式", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "difflib --- 计算差异的辅助工具": { + "data": { + "uuid": "python-4-343", + "seg": [ + [ + [ + "d", + "if", + "flib", + "计算", + "差异", + "辅助工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "textwrap --- 文本自动换行与填充": { + "data": { + "uuid": "python-4-344", + "seg": [ + [ + [ + "textwrap", + "文本", + "自动", + "换行" + ], + [ + "填充" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unicodedata --- Unicode数据库": { + "data": { + "uuid": "python-4-345", + "seg": [ + [ + [ + "unicodedata", + "unicode", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "stringprep --- 因特网字符串预备": { + "data": { + "uuid": "python-4-346", + "seg": [ + [ + [ + "stringprep", + "因特网", + "字符串", + "预备" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "readline --- GNU readline接口": { + "data": { + "uuid": "python-4-347", + "seg": [ + [ + [ + "readline", + "gnu", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7403941_53352714", + "8_1092705_1300877", + "8_7395316_53337636" + ] + } + } + } + } + }, + { + "rlcompleter --- GNU readline的补全函数": { + "data": { + "uuid": "python-4-348", + "seg": [ + [ + [ + "rlcompleter", + "gnu", + "readline", + "补全", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-60", + "seg": [ + [ + [ + "文本处理", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "二进制数据服务": { + "children": [ + { + "struct --- 将字节串解读为打包的二进制数据": { + "data": { + "uuid": "python-4-349", + "seg": [ + [ + [ + "struct", + "字节", + "串", + "解读", + "打包", + "二进制", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_194449_102145" + ] + } + } + } + } + }, + { + "codecs --- 编解码器注册和相关基类": { + "data": { + "uuid": "python-4-350", + "seg": [ + [ + [ + "codecs", + "编解码器", + "注册" + ], + [ + "相关", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-61", + "seg": [ + [ + [ + "二进制", + "数据服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数式编程模块": { + "children": [ + { + "itertools --- 为高效循环而创建迭代器的函数": { + "data": { + "uuid": "python-4-351", + "seg": [ + [ + [ + "itertools", + "高效", + "循环", + "创建", + "迭代", + "器", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "functools --- 高阶函数和可调用对象上的操作": { + "data": { + "uuid": "python-4-352", + "seg": [ + [ + [ + "functools", + "高阶", + "函数" + ], + [ + "调用", + "对象", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "operator --- 标准运算符替代函数": { + "data": { + "uuid": "python-4-353", + "seg": [ + [ + [ + "operator", + "标准", + "运算符", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-62", + "seg": [ + [ + [ + "函数", + "编程", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据持久化": { + "children": [ + { + "pickle --- Python对象序列化": { + "data": { + "uuid": "python-4-354", + "seg": [ + [ + [ + "pickle", + "python", + "对象", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "copyreg --- 注册配合pickle模块使用的函数": { + "data": { + "uuid": "python-4-355", + "seg": [ + [ + [ + "copyreg", + "注册", + "配合", + "pickle", + "模块", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_237489_217969" + ] + } + } + } + } + }, + { + "shelve --- Python对象持久化": { + "data": { + "uuid": "python-4-356", + "seg": [ + [ + [ + "shelve", + "python", + "对象", + "持久", + "化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "marshal --- 内部Python对象序列化": { + "data": { + "uuid": "python-4-357", + "seg": [ + [ + [ + "marshal", + "内部", + "python", + "对象", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "dbm --- Unix \"数据库\" 接口": { + "data": { + "uuid": "python-4-358", + "seg": [ + [ + [ + "dbm", + "unix", + "数据库", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sqlite3 --- SQLite数据库DB-API 2.0 接口模块": { + "data": { + "uuid": "python-4-359", + "seg": [ + [ + [ + "sqlite3", + "sqlite", + "数据库", + "db", + "api", + "接口", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-63", + "seg": [ + [ + [ + "数据", + "持久", + "化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件格式": { + "children": [ + { + "csv --- CSV文件读写": { + "data": { + "uuid": "python-4-360", + "seg": [ + [ + [ + "csv", + "文件", + "读写" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1103849_1318233" + ] + } + } + } + } + }, + { + "configparser --- 配置文件解析器": { + "data": { + "uuid": "python-4-361", + "seg": [ + [ + [ + "configparser", + "配置文件", + "解析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "netrc --- netrc文件处理": { + "data": { + "uuid": "python-4-362", + "seg": [ + [ + [ + "netrc", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "xdrlib --- 编码与解码XDR数据": { + "data": { + "uuid": "python-4-363", + "seg": [ + [ + [ + "xdrlib", + "编码" + ], + [ + "解码", + "xdr", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "plistlib --- 生成与解析Apple .plist文件": { + "data": { + "uuid": "python-4-364", + "seg": [ + [ + [ + "plistlib", + "生成" + ], + [ + "解析", + "apple", + "plist", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-64", + "seg": [ + [ + [ + "文件格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "加密服务": { + "children": [ + { + "hashlib --- 安全哈希与消息摘要": { + "data": { + "uuid": "python-4-365", + "seg": [ + [ + [ + "hashlib", + "哈希" + ], + [ + "消息", + "摘要" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "hmac --- 基于密钥的消息验证": { + "data": { + "uuid": "python-4-366", + "seg": [ + [ + [ + "hmac", + "密钥", + "消息", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "secrets --- 生成管理密码的安全随机数": { + "data": { + "uuid": "python-4-367", + "seg": [ + [ + [ + "secrets", + "生成", + "管理", + "密码", + "随机数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-65", + "seg": [ + [ + [ + "加密", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通用操作系统服务": { + "children": [ + { + "os --- 多种操作系统接口": { + "data": { + "uuid": "python-4-368", + "seg": [ + [ + [ + "os", + "操作系统", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "io --- 处理流的核心工具": { + "data": { + "uuid": "python-4-369", + "seg": [ + [ + [ + "io", + "流", + "核心", + "工具" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "time --- 时间的访问和转换": { + "data": { + "uuid": "python-4-370", + "seg": [ + [ + [ + "time", + "时间", + "访问" + ], + [ + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "argparse --- 命令行选项、参数和子命令解析器": { + "data": { + "uuid": "python-4-371", + "seg": [ + [ + [ + "argparse", + "命令行", + "选项" + ], + [ + "参数", + "和子", + "命令", + "解析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "getopt --- C风格的命令行选项解析器": { + "data": { + "uuid": "python-4-372", + "seg": [ + [ + [ + "getopt", + "c", + "风格", + "命令行", + "选项", + "解析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "logging --- Python的日志记录工具": { + "data": { + "uuid": "python-4-373", + "seg": [ + [ + [ + "logging", + "python", + "日志", + "记录", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "logging.config --- 日志记录配置": { + "data": { + "uuid": "python-4-374", + "seg": [ + [ + [ + "logging", + "config", + "日志", + "记录", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "logging.handlers --- 日志处理程序": { + "data": { + "uuid": "python-4-375", + "seg": [ + [ + [ + "logging", + "handlers", + "日志", + "处理程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "getpass --- 便携式密码输入工具": { + "data": { + "uuid": "python-4-376", + "seg": [ + [ + [ + "getpass", + "便携式", + "密码", + "输入", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "curses --- 终端字符单元显示的处理": { + "data": { + "uuid": "python-4-377", + "seg": [ + [ + [ + "curses", + "终端", + "字符", + "单元", + "显示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "curses.textpad --- 用于curses程序的文本输入控件": { + "data": { + "uuid": "python-4-378", + "seg": [ + [ + [ + "curses", + "textpad", + "用于", + "程序", + "文本", + "输入", + "控件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "curses.ascii --- 用于ASCII字符的工具": { + "data": { + "uuid": "python-4-379", + "seg": [ + [ + [ + "curses", + "ascii", + "用于", + "字符", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "curses.panel --- curses的面板栈扩展": { + "data": { + "uuid": "python-4-380", + "seg": [ + [ + [ + "curses", + "panel", + "面板", + "栈", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "platform --- 获取底层平台的标识数据": { + "data": { + "uuid": "python-4-381", + "seg": [ + [ + [ + "plat", + "for", + "m", + "获取", + "底层", + "平台", + "标识", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "errno --- 标准errno系统符号": { + "data": { + "uuid": "python-4-382", + "seg": [ + [ + [ + "errno", + "标准", + "系统", + "符号" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_672406_497840", + "8_698353_585291" + ] + } + } + } + } + }, + { + "ctypes --- Python的外部函数库": { + "data": { + "uuid": "python-4-383", + "seg": [ + [ + [ + "ctypes", + "python", + "外部", + "函数库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-66", + "seg": [ + [ + [ + "通用", + "操作系统", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发执行": { + "children": [ + { + "threading --- 基于线程的并行": { + "data": { + "uuid": "python-4-384", + "seg": [ + [ + [ + "threading", + "线程", + "并行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "multiprocessing --- 基于进程的并行": { + "data": { + "uuid": "python-4-385", + "seg": [ + [ + [ + "multiprocessing", + "进程", + "并行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "multiprocessing.shared_memory --- 可从进程直接访问的共享内存": { + "data": { + "uuid": "python-4-386", + "seg": [ + [ + [ + "multiprocessing", + "shared", + "memory", + "进程", + "访问", + "共享内存" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "concurrent包": { + "data": { + "uuid": "python-4-387", + "seg": [ + [ + [ + "concurrent", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "concurrent.futures --- 启动并行任务": { + "data": { + "uuid": "python-4-388", + "seg": [ + [ + [ + "concurrent", + "futures", + "启动", + "并行任务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "subprocess --- 子进程管理": { + "data": { + "uuid": "python-4-389", + "seg": [ + [ + [ + "subprocess", + "子", + "进程", + "管理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_763706_822316", + "8_1071281_1273166", + "8_769967_831214" + ] + } + } + } + } + }, + { + "sched --- 事件调度器": { + "data": { + "uuid": "python-4-390", + "seg": [ + [ + [ + "sched", + "事件", + "调度", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "queue --- 一个同步的队列类": { + "data": { + "uuid": "python-4-391", + "seg": [ + [ + [ + "queue", + "同步", + "队列", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "contextvars --- 上下文变量": { + "data": { + "uuid": "python-4-392", + "seg": [ + [ + [ + "contextvars", + "上下文", + "变量" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "_thread --- 底层多线程API": { + "data": { + "uuid": "python-4-393", + "seg": [ + [ + [ + "thread", + "底层", + "多线程", + "api" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7426580_53391091" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-67", + "seg": [ + [ + [ + "并发", + "执行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络和进程间通信": { + "children": [ + { + "asyncio --- 异步I/O": { + "data": { + "uuid": "python-4-394", + "seg": [ + [ + [ + "asyncio", + "异步", + "i", + "o" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "socket --- 底层网络接口": { + "data": { + "uuid": "python-4-395", + "seg": [ + [ + [ + "socket", + "底层", + "网络接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ssl --- 套接字对象的TLS/SSL包装器": { + "data": { + "uuid": "python-4-396", + "seg": [ + [ + [ + "ssl", + "套", + "接字", + "对象", + "tls", + "包装", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "select --- 等待I/O完成": { + "data": { + "uuid": "python-4-397", + "seg": [ + [ + [ + "select", + "等待", + "i", + "o" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "selectors --- 高级I/O复用库": { + "data": { + "uuid": "python-4-398", + "seg": [ + [ + [ + "selectors", + "高级", + "i", + "o", + "复用", + "库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7434283_53404758" + ] + } + } + } + } + }, + { + "asyncore --- 异步套接字处理器": { + "data": { + "uuid": "python-4-399", + "seg": [ + [ + [ + "asyncore", + "异步", + "套", + "接字", + "处理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "asynchat --- 异步套接字指令/响应处理程序": { + "data": { + "uuid": "python-4-400", + "seg": [ + [ + [ + "asynchat", + "异步", + "套", + "接字", + "指令", + "响应", + "处理程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "signal --- 设置异步事件处理程序": { + "data": { + "uuid": "python-4-401", + "seg": [ + [ + [ + "signal", + "设置", + "异步", + "事件", + "处理程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "mmap --- 内存映射文件支持": { + "data": { + "uuid": "python-4-402", + "seg": [ + [ + [ + "mmap", + "内存", + "映射", + "文件", + "支持" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-68", + "seg": [ + [ + [ + "网络" + ], + [ + "进程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "互联网数据处理": { + "children": [ + { + "email --- 电子邮件与MIME处理包": { + "data": { + "uuid": "python-4-403", + "seg": [ + [ + [ + "email", + "电子邮件" + ], + [ + "mime", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "json --- JSON编码和解码器": { + "data": { + "uuid": "python-4-404", + "seg": [ + [ + [ + "json", + "编码" + ], + [ + "解码器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "mailcap --- Mailcap文件处理": { + "data": { + "uuid": "python-4-405", + "seg": [ + [ + [ + "mailcap", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "mailbox --- 操作多种格式的邮箱": { + "data": { + "uuid": "python-4-406", + "seg": [ + [ + [ + "mailbox", + "操作", + "格式", + "邮箱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "mimetypes --- 映射文件名到MIME类型": { + "data": { + "uuid": "python-4-407", + "seg": [ + [ + [ + "mimetypes", + "映射", + "文件名", + "mime", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "base64 --- Base16, Base32, Base64, Base85 数据编码": { + "data": { + "uuid": "python-4-408", + "seg": [ + [ + [ + "base64", + "base16", + "base32", + "base85", + "数据编码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "binascii --- 二进制和ASCII码互转": { + "data": { + "uuid": "python-4-409", + "seg": [ + [ + [ + "binascii", + "二进制" + ], + [ + "ascii", + "码", + "互转" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_752496_806604", + "8_7440181_53415246" + ] + } + } + } + } + }, + { + "quopri --- 编码与解码经过MIME转码的可打印数据": { + "data": { + "uuid": "python-4-410", + "seg": [ + [ + [ + "quopri", + "编码" + ], + [ + "解码", + "mime", + "转码", + "打印", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-69", + "seg": [ + [ + [ + "互联网", + "数据处理" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7463861_53450183" + ] + } + } + } + } + }, + { + "结构化标记处理工具": { + "children": [ + { + "html --- 超文本标记语言支持": { + "data": { + "uuid": "python-4-411", + "seg": [ + [ + [ + "html", + "超文本", + "标记", + "语言", + "支持" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "html.parser --- 简单的HTML和XHTML解析器": { + "data": { + "uuid": "python-4-412", + "seg": [ + [ + [ + "html", + "parser" + ], + [ + "xhtml", + "解析器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "html.entities --- HTML一般实体的定义": { + "data": { + "uuid": "python-4-413", + "seg": [ + [ + [ + "html", + "entities", + "实体", + "定义" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "XML处理模块": { + "data": { + "uuid": "python-4-414", + "seg": [ + [ + [ + "xml", + "模块" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.etree.ElementTree --- ElementTree XML API": { + "data": { + "uuid": "python-4-415", + "seg": [ + [ + [ + "xml", + "etree", + "elementtree", + "api" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.dom --- 文档对象模型API": { + "data": { + "uuid": "python-4-416", + "seg": [ + [ + [ + "xml", + "dom", + "文档", + "对象", + "模型", + "api" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.dom.minidom --- Minimal DOM implementation": { + "data": { + "uuid": "python-4-417", + "seg": [ + [ + [ + "xml", + "dom", + "minidom", + "minimal", + "implementation" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.dom.pulldom --- 支持构建部分DOM树": { + "data": { + "uuid": "python-4-418", + "seg": [ + [ + [ + "xml", + "dom", + "pulldom", + "支持", + "构建", + "树" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.sax --- 支持SAX2 解析器": { + "data": { + "uuid": "python-4-419", + "seg": [ + [ + [ + "xml", + "sax", + "支持", + "sax2", + "解析器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.sax.handler --- SAX处理程序的基类": { + "data": { + "uuid": "python-4-420", + "seg": [ + [ + [ + "xml", + "sax", + "handler", + "处理程序", + "基类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.sax.saxutils --- SAX工具集": { + "data": { + "uuid": "python-4-421", + "seg": [ + [ + [ + "xml", + "sax", + "saxutils", + "工具集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.sax.xmlreader --- 用于XML解析器的接口": { + "data": { + "uuid": "python-4-422", + "seg": [ + [ + [ + "xml", + "sax", + "xmlreader", + "用于", + "解析器", + "接口" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "xml.parsers.expat --- Fast XML parsing using Expat": { + "data": { + "uuid": "python-4-423", + "seg": [ + [ + [ + "xml", + "parsers", + "expat", + "fast", + "parsing", + "using" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-70", + "seg": [ + [ + [ + "结构化", + "标记", + "工具" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "互联网协议和支持": { + "children": [ + { + "webbrowser --- 方便的Web浏览器控制器": { + "data": { + "uuid": "python-4-424", + "seg": [ + [ + [ + "webbrowser", + "web", + "浏览器", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cgi --- Common Gateway Interface support": { + "data": { + "uuid": "python-4-425", + "seg": [ + [ + [ + "cgi", + "common", + "gateway", + "interface", + "support" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cgitb --- 用于CGI脚本的回溯管理器": { + "data": { + "uuid": "python-4-426", + "seg": [ + [ + [ + "cgitb", + "用于", + "cgi", + "脚本", + "回溯", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "wsgiref --- WSGI Utilities and Reference Implementation": { + "data": { + "uuid": "python-4-427", + "seg": [ + [ + [ + "wsgiref", + "wsgi", + "utilities", + "and", + "reference", + "implementation" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "urllib --- URL处理模块": { + "data": { + "uuid": "python-4-428", + "seg": [ + [ + [ + "urllib", + "url", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "urllib.request --- 用于打开URL的可扩展库": { + "data": { + "uuid": "python-4-429", + "seg": [ + [ + [ + "urllib", + "request", + "用于", + "打开", + "url", + "扩展", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "urllib.response --- urllib使用的Response类": { + "data": { + "uuid": "python-4-430", + "seg": [ + [ + [ + "urllib", + "response", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7428770_53395071" + ] + } + } + } + } + }, + { + "urllib.parse用于解析URL": { + "data": { + "uuid": "python-4-431", + "seg": [ + [ + [ + "urllib", + "parse", + "用于", + "解析", + "url" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7450349_53430937" + ] + } + } + } + } + }, + { + "urllib.error --- urllib.request引发的异常类": { + "data": { + "uuid": "python-4-432", + "seg": [ + [ + [ + "urllib", + "error", + "request", + "引发", + "异常", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_760836_822131", + "8_264945_280390", + "8_1099309_1314350" + ] + } + } + } + } + }, + { + "urllib.robotparser --- robots.txt语法分析程序": { + "data": { + "uuid": "python-4-433", + "seg": [ + [ + [ + "urllib", + "robotparser", + "robots", + "txt", + "语法分析", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "http --- HTTP模块": { + "data": { + "uuid": "python-4-434", + "seg": [ + [ + [ + "http", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "http.client --- HTTP协议客户端": { + "data": { + "uuid": "python-4-435", + "seg": [ + [ + [ + "http", + "client", + "协议", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ftplib --- FTP协议客户端": { + "data": { + "uuid": "python-4-436", + "seg": [ + [ + [ + "ftplib", + "ftp", + "协议", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "poplib --- POP3 协议客户端": { + "data": { + "uuid": "python-4-437", + "seg": [ + [ + [ + "poplib", + "pop3", + "协议", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "imaplib --- IMAP4 协议客户端": { + "data": { + "uuid": "python-4-438", + "seg": [ + [ + [ + "imaplib", + "imap4", + "协议", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "nntplib --- NNTP protocol client": { + "data": { + "uuid": "python-4-439", + "seg": [ + [ + [ + "nntplib", + "nntp", + "protocol", + "client" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "smtplib ---SMTP协议客户端": { + "data": { + "uuid": "python-4-440", + "seg": [ + [ + [ + "smtplib", + "smtp", + "协议", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "smtpd --- SMTP服务器": { + "data": { + "uuid": "python-4-441", + "seg": [ + [ + [ + "smtpd", + "smtp", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "telnetlib -- Telnet客户端": { + "data": { + "uuid": "python-4-442", + "seg": [ + [ + [ + "telnetlib", + "telnet", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "uuid --- UUID objects according to RFC 4122": { + "data": { + "uuid": "python-4-443", + "seg": [ + [ + [ + "uuid", + "objects", + "according", + "to", + "strong", + "rfc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "socketserver --- A framework for network servers": { + "data": { + "uuid": "python-4-444", + "seg": [ + [ + [ + "socketserver", + "a", + "framework", + "for", + "network", + "servers" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_698492_585767", + "8_3532032_23008990", + "8_901545_1037253", + "8_7441781_53418076", + "8_5588435_35515599", + "8_7450612_53431388" + ] + } + } + } + } + }, + { + "http.server --- HTTP服务器": { + "data": { + "uuid": "python-4-445", + "seg": [ + [ + [ + "http", + "server", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "http.cookies --- HTTP状态管理": { + "data": { + "uuid": "python-4-446", + "seg": [ + [ + [ + "http", + "cookies", + "状态", + "管理" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7402685_53350780" + ] + } + } + } + } + }, + { + "http.cookiejar —— HTTP客户端的Cookie处理": { + "data": { + "uuid": "python-4-447", + "seg": [ + [ + [ + "http", + "cookiejar", + "客户端", + "cookie" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "xmlrpc --- XMLRPC服务端与客户端模块": { + "data": { + "uuid": "python-4-448", + "seg": [ + [ + [ + "xmlrpc", + "服务端" + ], + [ + "客户端", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "xmlrpc.client --- XML-RPC客户端访问": { + "data": { + "uuid": "python-4-449", + "seg": [ + [ + [ + "xmlrpc", + "client", + "xml", + "rpc", + "客户端", + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "xmlrpc.server --- 基本XML-RPC服务器": { + "data": { + "uuid": "python-4-450", + "seg": [ + [ + [ + "xmlrpc", + "server", + "xml", + "rpc", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ipaddress --- IPv4/IPv6 操作库": { + "data": { + "uuid": "python-4-451", + "seg": [ + [ + [ + "ipaddress", + "ipv4", + "ipv6", + "操作", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-71", + "seg": [ + [ + [ + "互联网协议" + ], + [ + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多媒体服务": { + "children": [ + { + "audioop --- 处理原始音频数据": { + "data": { + "uuid": "python-4-452", + "seg": [ + [ + [ + "audioop", + "原始", + "音频", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "aifc --- 读写AIFF和AIFC文件": { + "data": { + "uuid": "python-4-453", + "seg": [ + [ + [ + "a", + "if", + "c", + "读写", + "aiff" + ], + [ + "aifc", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sunau --- 读写Sun AU文件": { + "data": { + "uuid": "python-4-454", + "seg": [ + [ + [ + "sunau", + "读写", + "sun", + "au", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "wave --- 读写WAV格式文件": { + "data": { + "uuid": "python-4-455", + "seg": [ + [ + [ + "wave", + "读写", + "wav", + "格式文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "chunk --- 读取IFF分块数据": { + "data": { + "uuid": "python-4-456", + "seg": [ + [ + [ + "chun", + "k", + "读取", + "iff", + "分块", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "colorsys --- 颜色系统间的转换": { + "data": { + "uuid": "python-4-457", + "seg": [ + [ + [ + "colorsys", + "颜色", + "系统", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "imghdr --- 推测图像类型": { + "data": { + "uuid": "python-4-458", + "seg": [ + [ + [ + "imghdr", + "推测", + "图像", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sndhdr --- 推测声音文件的类型": { + "data": { + "uuid": "python-4-459", + "seg": [ + [ + [ + "sndhdr", + "推测", + "声音文件", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ossaudiodev --- Access to OSS-compatible audio devices": { + "data": { + "uuid": "python-4-460", + "seg": [ + [ + [ + "ossaudiodev", + "access", + "to", + "oss", + "compatible", + "audio", + "devices" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_661981_477342" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-72", + "seg": [ + [ + [ + "多媒体", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "国际化": { + "children": [ + { + "gettext --- 多语种国际化服务": { + "data": { + "uuid": "python-4-461", + "seg": [ + [ + [ + "gettext", + "多语种", + "国际化", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "locale --- 国际化服务": { + "data": { + "uuid": "python-4-462", + "seg": [ + [ + [ + "locale", + "国际化", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-73", + "seg": [ + [ + [ + "国际化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序框架": { + "children": [ + { + "turtle --- 海龟绘图": { + "data": { + "uuid": "python-4-463", + "seg": [ + [ + [ + "turtle", + "海龟", + "绘图" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7459844_53444871", + "8_7425366_53387077", + "8_7438259_53411990", + "8_7396145_53339459", + "8_7446052_53425107", + "8_7430334_53397410" + ] + } + } + } + } + }, + { + "cmd --- 支持面向行的命令解释器": { + "data": { + "uuid": "python-4-464", + "seg": [ + [ + [ + "cmd", + "支持", + "面向", + "行", + "命令", + "解释器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_179262_64437", + "8_7418736_53375274", + "8_1097164_1310347" + ] + } + } + } + } + }, + { + "shlex --- Simple lexical analysis": { + "data": { + "uuid": "python-4-465", + "seg": [ + [ + [ + "shlex", + "simple", + "lexical", + "analysis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-74", + "seg": [ + [ + [ + "程序", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tk图形用户界面(GUI)": { + "children": [ + { + "tkinter --- Tcl/Tk的Python接口": { + "data": { + "uuid": "python-4-466", + "seg": [ + [ + [ + "tkinter", + "tcl", + "tk", + "python", + "接口" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_764339_823183", + "8_7408979_53359215" + ] + } + } + } + } + }, + { + "tkinter.colorchooser --- 颜色选择对话框": { + "data": { + "uuid": "python-4-467", + "seg": [ + [ + [ + "tkinter", + "colorchooser", + "颜色", + "选择", + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "tkinter.font --- Tkinter字体封装": { + "data": { + "uuid": "python-4-468", + "seg": [ + [ + [ + "tkinter", + "font", + "字体", + "封装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Tkinter对话框": { + "data": { + "uuid": "python-4-469", + "seg": [ + [ + [ + "tkinter", + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "tkinter.messagebox --- Tkinter消息提示": { + "data": { + "uuid": "python-4-470", + "seg": [ + [ + [ + "tkinter", + "messagebox", + "消息", + "提示" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_643756_443906", + "8_7456360_53440092", + "8_190668_91827" + ] + } + } + } + } + }, + { + "tkinter.scrolledtext --- 滚动文字控件": { + "data": { + "uuid": "python-4-471", + "seg": [ + [ + [ + "tkinter", + "scrolledtext", + "滚动", + "文字", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "tkinter.dnd --- 拖放操作支持": { + "data": { + "uuid": "python-4-472", + "seg": [ + [ + [ + "tkinter", + "dnd", + "拖放", + "操作", + "支持" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "tkinter.ttk --- Tk主题部件": { + "data": { + "uuid": "python-4-473", + "seg": [ + [ + [ + "tkinter", + "ttk", + "tk", + "主题", + "部件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "tkinter.tix --- Extension widgets for Tk": { + "data": { + "uuid": "python-4-474", + "seg": [ + [ + [ + "tkinter", + "tix", + "extension", + "widgets", + "for", + "tk" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7461262_53446373" + ] + } + } + } + } + }, + { + "IDLE": { + "data": { + "uuid": "python-4-475", + "seg": [ + [ + [ + "idle" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_774296_838338", + "8_7397113_53341614", + "8_25740_6999", + "8_202822_128536", + "8_1055594_1252791", + "8_203969_132003" + ] + } + } + } + } + }, + { + "其他图形用户界面(GUI)包": { + "data": { + "uuid": "python-4-476", + "seg": [ + [ + [ + "图形用户界面", + "gui", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-75", + "seg": [ + [ + [ + "tk", + "图形用户界面", + "gui" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "调试和分析": { + "children": [ + { + "审计事件表": { + "data": { + "uuid": "python-4-477", + "seg": [ + [ + [ + "审计", + "事件", + "表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "bdb --- Debugger framework": { + "data": { + "uuid": "python-4-478", + "seg": [ + [ + [ + "bdb", + "debugger", + "framework" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "faulthandler --- Dump the Python traceback": { + "data": { + "uuid": "python-4-479", + "seg": [ + [ + [ + "faulthandler", + "dump", + "the", + "python", + "traceback" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pdb --- Python的调试器": { + "data": { + "uuid": "python-4-480", + "seg": [ + [ + [ + "pdb", + "python", + "调试器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python Profilers分析器": { + "data": { + "uuid": "python-4-481", + "seg": [ + [ + [ + "python", + "profilers", + "分析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "timeit --- 测量小代码片段的执行时间": { + "data": { + "uuid": "python-4-482", + "seg": [ + [ + [ + "timeit", + "测量", + "执行", + "时间" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_708005_641245", + "8_7406880_53356549", + "8_1055709_1252961" + ] + } + } + } + } + }, + { + "trace --- 跟踪Python语句执行": { + "data": { + "uuid": "python-4-483", + "seg": [ + [ + [ + "trace", + "跟踪", + "python", + "语句", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "tracemalloc --- 跟踪内存分配": { + "data": { + "uuid": "python-4-484", + "seg": [ + [ + [ + "tracemalloc", + "跟踪", + "内存", + "分配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抛出异常": { + "data": { + "uuid": "python-4-485", + "seg": [ + [ + [ + "抛出", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "取得回溯字符串": { + "data": { + "uuid": "python-4-486", + "seg": [ + [ + [ + "回溯", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1099030_1314122" + ] + } + } + } + } + }, + { + "Mu的调试器": { + "data": { + "uuid": "python-4-487", + "seg": [ + [ + [ + "mu", + "调试器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-76", + "seg": [ + [ + [ + "调试" + ], + [ + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "软件打包和分发": { + "children": [ + { + "distutils --- 构建和安装Python模块": { + "data": { + "uuid": "python-4-488", + "seg": [ + [ + [ + "distutils", + "构建" + ], + [ + "安装", + "python", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ensurepip --- Bootstrapping the pip installer": { + "data": { + "uuid": "python-4-489", + "seg": [ + [ + [ + "ensurepip", + "bootstrapping", + "the", + "pip", + "installer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "venv --- 创建虚拟环境": { + "data": { + "uuid": "python-4-490", + "seg": [ + [ + [ + "venv", + "创建", + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "zipapp --- Manage executable Python zip archives": { + "data": { + "uuid": "python-4-491", + "seg": [ + [ + [ + "zipapp", + "manage", + "executable", + "python", + "zip", + "archives" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-77", + "seg": [ + [ + [ + "软件", + "打包" + ], + [ + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python运行时服务": { + "children": [ + { + "sysconfig --- Provide access to Python's configuration information": { + "data": { + "uuid": "python-4-492", + "seg": [ + [ + [ + "sysconfig", + "provide", + "access", + "to", + "python", + "s", + "configuration", + "in", + "for", + "mation" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "builtins --- 内建对象": { + "data": { + "uuid": "python-4-493", + "seg": [ + [ + [ + "builtins", + "建", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "__main__ --- 顶层脚本环境": { + "data": { + "uuid": "python-4-494", + "seg": [ + [ + [ + "main", + "顶层", + "脚本", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "warnings --- Warning control": { + "data": { + "uuid": "python-4-495", + "seg": [ + [ + [ + "warnings", + "warning", + "control" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7447039_53426572" + ] + } + } + } + } + }, + { + "dataclasses --- 数据类": { + "data": { + "uuid": "python-4-496", + "seg": [ + [ + [ + "dataclasses", + "数据", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "contextlib --- 为with语句上下文提供的工具": { + "data": { + "uuid": "python-4-497", + "seg": [ + [ + [ + "contextlib", + "with", + "语句", + "上下文", + "提供", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "abc --- 抽象基类": { + "data": { + "uuid": "python-4-498", + "seg": [ + [ + [ + "abc", + "抽象", + "基类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "atexit --- 退出处理器": { + "data": { + "uuid": "python-4-499", + "seg": [ + [ + [ + "atexit", + "退出", + "处理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "traceback --- 打印或检索堆栈回溯": { + "data": { + "uuid": "python-4-500", + "seg": [ + [ + [ + "traceback", + "打印", + "检索", + "堆栈", + "回溯" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7431000_53398957", + "8_777554_844885", + "8_7405272_53354406" + ] + } + } + } + } + }, + { + "__future__ --- Future语句定义": { + "data": { + "uuid": "python-4-501", + "seg": [ + [ + [ + "future", + "语句", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gc --- 垃圾回收器接口": { + "data": { + "uuid": "python-4-502", + "seg": [ + [ + [ + "gc", + "垃圾", + "回收", + "器", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "inspect --- 检查对象": { + "data": { + "uuid": "python-4-503", + "seg": [ + [ + [ + "inspect", + "检查", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "site —— 指定域的配置钩子": { + "data": { + "uuid": "python-4-504", + "seg": [ + [ + [ + "site", + "指定", + "域", + "配置", + "钩子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-78", + "seg": [ + [ + [ + "python", + "运行", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义Python解释器": { + "children": [ + { + "code --- 解释器基类": { + "data": { + "uuid": "python-4-505", + "seg": [ + [ + [ + "code", + "解释器", + "基类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_663230_479339", + "8_7459867_53444895", + "8_7411797_53362846" + ] + } + } + } + } + }, + { + "codeop --- 编译Python代码": { + "data": { + "uuid": "python-4-506", + "seg": [ + [ + [ + "codeop", + "编译", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-79", + "seg": [ + [ + [ + "自定义", + "python", + "解释器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入模块": { + "children": [ + { + "zipimport --- 从Zip存档中导入模块": { + "data": { + "uuid": "python-4-507", + "seg": [ + [ + [ + "zipimport", + "zip", + "存档", + "导入", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pkgutil --- 包扩展工具": { + "data": { + "uuid": "python-4-508", + "seg": [ + [ + [ + "pkgutil", + "包", + "扩展", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "modulefinder --- 查找脚本使用的模块": { + "data": { + "uuid": "python-4-509", + "seg": [ + [ + [ + "modulefinder", + "查找", + "脚本", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "runpy --- Locating and executing Python modules": { + "data": { + "uuid": "python-4-510", + "seg": [ + [ + [ + "runpy", + "locating", + "and", + "executing", + "python", + "modules" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "importlib --- import的实现": { + "data": { + "uuid": "python-4-511", + "seg": [ + [ + [ + "importlib", + "import" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Using importlib.metadata": { + "data": { + "uuid": "python-4-512", + "seg": [ + [ + [ + "using", + "importlib", + "metadata" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7420254_53378287" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-80", + "seg": [ + [ + [ + "导入", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python语言服务": { + "children": [ + { + "parser --- 访问Python解析树": { + "data": { + "uuid": "python-4-513", + "seg": [ + [ + [ + "parser", + "访问", + "python", + "解析", + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ast --- 抽象语法树": { + "data": { + "uuid": "python-4-514", + "seg": [ + [ + [ + "ast", + "抽象", + "语法", + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "symtable --- Access to the compiler's symbol tables": { + "data": { + "uuid": "python-4-515", + "seg": [ + [ + [ + "symtable", + "access", + "to", + "the", + "compiler", + "s", + "symbol", + "tables" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "symbol --- 与Python解析树一起使用的常量": { + "data": { + "uuid": "python-4-516", + "seg": [ + [ + [ + "symbol" + ], + [ + "python", + "解析", + "树", + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "token --- 与Python解析树一起使用的常量": { + "data": { + "uuid": "python-4-517", + "seg": [ + [ + [ + "token" + ], + [ + "python", + "解析", + "树", + "常量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7422620_53381330" + ] + } + } + } + } + }, + { + "keyword --- 检验Python关键字": { + "data": { + "uuid": "python-4-518", + "seg": [ + [ + [ + "keyword", + "检验", + "python", + "关键字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1096459_1308736" + ] + } + } + } + } + }, + { + "tokenize --- 对Python代码使用的标记解析器": { + "data": { + "uuid": "python-4-519", + "seg": [ + [ + [ + "tokenize", + "python", + "标记", + "解析器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_242406_229870" + ] + } + } + } + } + }, + { + "tabnanny --- 模糊缩进检测": { + "data": { + "uuid": "python-4-520", + "seg": [ + [ + [ + "tabnanny", + "模糊", + "缩进", + "检测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pyclbr --- Python模块浏览器支持": { + "data": { + "uuid": "python-4-521", + "seg": [ + [ + [ + "pyclbr", + "python", + "模块", + "浏览器", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "py_compile --- 编译Python源文件": { + "data": { + "uuid": "python-4-522", + "seg": [ + [ + [ + "py", + "compile", + "编译", + "python", + "源文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "compileall --- Byte-compile Python libraries": { + "data": { + "uuid": "python-4-523", + "seg": [ + [ + [ + "compileall", + "byte", + "compile", + "python", + "libraries" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_159109_24333" + ] + } + } + } + } + }, + { + "dis --- Python字节码反汇编器": { + "data": { + "uuid": "python-4-524", + "seg": [ + [ + [ + "dis", + "python", + "字节", + "码", + "反", + "汇编器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pickletools --- pickle开发者工具集": { + "data": { + "uuid": "python-4-525", + "seg": [ + [ + [ + "pickletools", + "pickle", + "开发者", + "工具集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-81", + "seg": [ + [ + [ + "python", + "语言", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "杂项服务": { + "children": [ + { + "formatter --- 通用格式化输出": { + "data": { + "uuid": "python-4-526", + "seg": [ + [ + [ + "for", + "matter", + "通用", + "格式化", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-82", + "seg": [ + [ + [ + "杂项", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Windows系统相关模块": { + "children": [ + { + "msilib --- Read and write Microsoft Installer files": { + "data": { + "uuid": "python-4-527", + "seg": [ + [ + [ + "msilib", + "read", + "and", + "write", + "microsoft", + "installer", + "files" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_771303_833712", + "8_7461584_53446745", + "8_1099043_1314414" + ] + } + } + } + } + }, + { + "msvcrt --- 来自MS VC++ 运行时的有用例程": { + "data": { + "uuid": "python-4-528", + "seg": [ + [ + [ + "msvcrt", + "ms", + "v", + "c++", + "运行", + "有用", + "例程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "winreg --- Windows注册表访问": { + "data": { + "uuid": "python-4-529", + "seg": [ + [ + [ + "winreg", + "windows", + "注册表", + "访问" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451237_53432288" + ] + } + } + } + } + }, + { + "winsound --- Sound-playing interface for Windows": { + "data": { + "uuid": "python-4-530", + "seg": [ + [ + [ + "winsound", + "sound", + "pl", + "ayi", + "ng", + "interface", + "for", + "windows" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-83", + "seg": [ + [ + [ + "windows", + "系统", + "相关", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Unix专有服务": { + "children": [ + { + "posix --- 最常见的POSIX系统调用": { + "data": { + "uuid": "python-4-531", + "seg": [ + [ + [ + "posix", + "常见", + "系统", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pwd --- 用户密码数据库": { + "data": { + "uuid": "python-4-532", + "seg": [ + [ + [ + "pwd", + "用户", + "密码", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "spwd --- The shadow password database": { + "data": { + "uuid": "python-4-533", + "seg": [ + [ + [ + "spwd", + "the", + "shadow", + "password", + "database" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7409485_53359930" + ] + } + } + } + } + }, + { + "grp --- 组数据库": { + "data": { + "uuid": "python-4-534", + "seg": [ + [ + [ + "grp", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "crypt --- Function to check Unix passwords": { + "data": { + "uuid": "python-4-535", + "seg": [ + [ + [ + "crypt", + "function", + "to", + "check", + "unix", + "passwords" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455744_53439069", + "8_1095528_1306953", + "8_7456861_53441578", + "8_1019212_1224566", + "8_1059490_1256892" + ] + } + } + } + } + }, + { + "termios --- POSIX风格的tty控制": { + "data": { + "uuid": "python-4-536", + "seg": [ + [ + [ + "termios", + "posix", + "风格", + "tty", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "tty --- 终端控制功能": { + "data": { + "uuid": "python-4-537", + "seg": [ + [ + [ + "tty", + "终端", + "控制", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pty --- 伪终端工具": { + "data": { + "uuid": "python-4-538", + "seg": [ + [ + [ + "pty", + "伪", + "终端", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "fcntl --- The fcntl and ioctl system calls": { + "data": { + "uuid": "python-4-539", + "seg": [ + [ + [ + "fcntl", + "the", + "and", + "ioctl", + "system", + "calls" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_790158_872741" + ] + } + } + } + } + }, + { + "pipes --- 终端管道接口": { + "data": { + "uuid": "python-4-540", + "seg": [ + [ + [ + "pipes", + "终端", + "管道", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "resource --- Resource usage information": { + "data": { + "uuid": "python-4-541", + "seg": [ + [ + [ + "resource", + "usage", + "in", + "for", + "mation" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_940215_1076695", + "8_755578_811283", + "8_7459237_53444103", + "8_652782_460815", + "8_685320_544767" + ] + } + } + } + } + }, + { + "nis --- Sun的NIS (黄页) 接口": { + "data": { + "uuid": "python-4-542", + "seg": [ + [ + [ + "nis", + "sun", + "黄页", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Unix syslog库例程": { + "data": { + "uuid": "python-4-543", + "seg": [ + [ + [ + "unix", + "syslog", + "库", + "例程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-84", + "seg": [ + [ + [ + "unix", + "专有", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "被取代的模块": { + "children": [ + { + "optparse --- 解析器的命令行选项": { + "data": { + "uuid": "python-4-544", + "seg": [ + [ + [ + "optparse", + "解析器", + "命令行", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "imp --- Access the import internals": { + "data": { + "uuid": "python-4-545", + "seg": [ + [ + [ + "imp", + "access", + "the", + "import", + "internals" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-85", + "seg": [ + [ + [ + "取代", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "未创建文档的模块": { + "children": [ + { + "平台特定模块": { + "data": { + "uuid": "python-4-546", + "seg": [ + [ + [ + "平台", + "特定", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-86", + "seg": [ + [ + [ + "创建", + "文档", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python基础": { + "children": [ + { + "在交互式环境中输入表达式": { + "data": { + "uuid": "python-4-547", + "seg": [ + [ + [ + "交互式", + "环境", + "输入", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串连接和复制": { + "data": { + "uuid": "python-4-548", + "seg": [ + [ + [ + "字符串", + "连接" + ], + [ + "复制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在变量中保存值": { + "children": [ + { + "变量名": { + "data": { + "uuid": "python-5-226", + "seg": [ + [ + [ + "变量名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7428737_53394984", + "8_659107_472762" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-549", + "seg": [ + [ + [ + "变量", + "保存", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第一个程序": { + "data": { + "uuid": "python-4-550", + "seg": [ + [ + [ + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7439367_53413655", + "8_650786_457791", + "8_7434637_53405016", + "8_7450233_53430803", + "8_235100_213291", + "8_7440493_53415784", + "8_7451735_53433180", + "8_7449165_53429218" + ] + } + } + } + } + }, + { + "程序剖析": { + "children": [ + { + "print函数": { + "data": { + "uuid": "python-5-227", + "seg": [ + [ + [ + "print", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1098593_1313233", + "8_7396555_53340347", + "8_1059372_1256851" + ] + } + } + } + } + }, + { + "input函数": { + "data": { + "uuid": "python-5-228", + "seg": [ + [ + [ + "input", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_699851_588313" + ] + } + } + } + } + }, + { + "输出用户的名字": { + "data": { + "uuid": "python-5-229", + "seg": [ + [ + [ + "输出", + "用户", + "名字" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1119017_1445397" + ] + } + } + } + } + }, + { + "len函数": { + "data": { + "uuid": "python-5-230", + "seg": [ + [ + [ + "len", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_766990_826425" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-551", + "seg": [ + [ + [ + "程序", + "剖析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-87", + "seg": [ + [ + [ + "python", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级特性": { + "children": [ + { + "切片": { + "data": { + "uuid": "python-4-552", + "seg": [ + [ + [ + "切片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代": { + "data": { + "uuid": "python-4-553", + "seg": [ + [ + [ + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表生成式": { + "data": { + "uuid": "python-4-554", + "seg": [ + [ + [ + "列表", + "生成式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-88", + "seg": [ + [ + [ + "高级", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数式编程": { + "children": [ + { + "高阶函数": { + "children": [ + { + "map/reduce": { + "data": { + "uuid": "python-5-231", + "seg": [ + [ + [ + "map", + "reduce" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7420591_53378467", + "8_7449379_53429400", + "8_7419660_53377192", + "8_7396540_53340373", + "8_7413090_53364865", + "8_713846_705436" + ] + } + } + } + } + }, + { + "filter": { + "data": { + "uuid": "python-5-232", + "seg": [ + [ + [ + "filter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-555", + "seg": [ + [ + [ + "高阶", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回函数": { + "data": { + "uuid": "python-4-556", + "seg": [ + [ + [ + "返回", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_729403_742526" + ] + } + } + } + } + }, + { + "匿名函数": { + "data": { + "uuid": "python-4-557", + "seg": [ + [ + [ + "匿名", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "偏函数": { + "data": { + "uuid": "python-4-558", + "seg": [ + [ + [ + "偏", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-89", + "seg": [ + [ + [ + "函数", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象高级编程": { + "children": [ + { + "使用__slots__": { + "data": { + "uuid": "python-4-559", + "seg": [ + [ + [ + "slots" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用@property": { + "data": { + "uuid": "python-4-560", + "seg": [ + [ + [ + "property" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_354775_367474", + "8_1091493_1299003" + ] + } + } + } + } + }, + { + "定制类": { + "data": { + "uuid": "python-4-561", + "seg": [ + [ + [ + "定制", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用枚举类": { + "data": { + "uuid": "python-4-562", + "seg": [ + [ + [ + "枚举", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-90", + "seg": [ + [ + [ + "面向对象", + "高级", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IO编程": { + "children": [ + { + "StringIO和BytesIO": { + "data": { + "uuid": "python-4-563", + "seg": [ + [ + [ + "stringio" + ], + [ + "bytesio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作文件和目录": { + "data": { + "uuid": "python-4-564", + "seg": [ + [ + [ + "操作", + "文件" + ], + [ + "目录" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "序列化": { + "data": { + "uuid": "python-4-565", + "seg": [ + [ + [ + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-91", + "seg": [ + [ + [ + "io", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "进程和线程": { + "children": [ + { + "多进程": { + "data": { + "uuid": "python-4-566", + "seg": [ + [ + [ + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ThreadLocal": { + "data": { + "uuid": "python-4-567", + "seg": [ + [ + [ + "threadlocal" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "进程vs. 线程": { + "data": { + "uuid": "python-4-568", + "seg": [ + [ + [ + "进程", + "vs", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_693219_570331", + "8_774518_838455", + "8_697320_582296", + "8_767492_827115", + "8_1058633_1255992" + ] + } + } + } + } + }, + { + "分布式进程": { + "data": { + "uuid": "python-4-569", + "seg": [ + [ + [ + "分布式", + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-92", + "seg": [ + [ + [ + "进程" + ], + [ + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "正则表达式": { + "data": { + "uuid": "python-3-93", + "seg": [ + [ + [ + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用内建模块": { + "children": [ + { + "collections": { + "data": { + "uuid": "python-4-570", + "seg": [ + [ + [ + "collections" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "base64": { + "data": { + "uuid": "python-4-571", + "seg": [ + [ + [ + "base64" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "struct": { + "data": { + "uuid": "python-4-572", + "seg": [ + [ + [ + "struct" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "hashlib": { + "data": { + "uuid": "python-4-573", + "seg": [ + [ + [ + "hashlib" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "hmac": { + "data": { + "uuid": "python-4-574", + "seg": [ + [ + [ + "hmac" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "itertools": { + "data": { + "uuid": "python-4-575", + "seg": [ + [ + [ + "itertools" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "contextlib": { + "data": { + "uuid": "python-4-576", + "seg": [ + [ + [ + "contextlib" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XML": { + "data": { + "uuid": "python-4-577", + "seg": [ + [ + [ + "xml" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTMLParser": { + "data": { + "uuid": "python-4-578", + "seg": [ + [ + [ + "htmlparser" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-94", + "seg": [ + [ + [ + "建", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "virtualenv": { + "data": { + "uuid": "python-3-95", + "seg": [ + [ + [ + "virtualenv" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图形界面": { + "children": [ + { + "海龟绘图": { + "data": { + "uuid": "python-4-579", + "seg": [ + [ + [ + "海龟", + "绘图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-96", + "seg": [ + [ + [ + "图形界面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络编程": { + "children": [ + { + "TCP/IP简介": { + "data": { + "uuid": "python-4-580", + "seg": [ + [ + [ + "tcp", + "ip", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TCP编程": { + "data": { + "uuid": "python-4-581", + "seg": [ + [ + [ + "tcp", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "UDP编程": { + "data": { + "uuid": "python-4-582", + "seg": [ + [ + [ + "udp", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "几个网络模块": { + "children": [ + { + "模块socket": { + "data": { + "uuid": "python-5-233", + "seg": [ + [ + [ + "模块", + "socket" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_251512_250187" + ] + } + } + } + } + }, + { + "模块urllib和urllib2": { + "data": { + "uuid": "python-5-234", + "seg": [ + [ + [ + "模块", + "urllib" + ], + [ + "urllib2" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_727119_735458" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-583", + "seg": [ + [ + [ + "网络", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "SocketServer及相关的类": { + "data": { + "uuid": "python-4-584", + "seg": [ + [ + [ + "socketserver" + ], + [ + "相关", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Twisted": { + "children": [ + { + "下载并安装Twisted": { + "data": { + "uuid": "python-5-235", + "seg": [ + [ + [ + "下载", + "安装", + "twisted" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_733035_754081", + "8_7446679_53426198", + "8_1056774_1253820" + ] + } + } + } + } + }, + { + "编写Twisted服务器": { + "data": { + "uuid": "python-5-236", + "seg": [ + [ + [ + "编写", + "twisted", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-585", + "seg": [ + [ + [ + "twisted" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-97", + "seg": [ + [ + [ + "网络", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "电子邮件": { + "children": [ + { + "SMTP发送邮件": { + "data": { + "uuid": "python-4-586", + "seg": [ + [ + [ + "smtp", + "发送", + "邮件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1094618_1304988" + ] + } + } + } + } + }, + { + "POP3收取邮件": { + "data": { + "uuid": "python-4-587", + "seg": [ + [ + [ + "pop3", + "收取", + "邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-98", + "seg": [ + [ + [ + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问数据库": { + "children": [ + { + "使用SQLite": { + "data": { + "uuid": "python-4-588", + "seg": [ + [ + [ + "sqlite" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用MySQL": { + "data": { + "uuid": "python-4-589", + "seg": [ + [ + [ + "mysql" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用SQLAlchemy": { + "data": { + "uuid": "python-4-590", + "seg": [ + [ + [ + "sqlalchemy" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_348437_355577" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-99", + "seg": [ + [ + [ + "访问", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web开发": { + "children": [ + { + "HTTP协议简介": { + "data": { + "uuid": "python-4-591", + "seg": [ + [ + [ + "http", + "协议", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTML简介": { + "data": { + "uuid": "python-4-592", + "seg": [ + [ + [ + "html", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "WSGI接口": { + "data": { + "uuid": "python-4-593", + "seg": [ + [ + [ + "wsgi", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Web框架": { + "data": { + "uuid": "python-4-594", + "seg": [ + [ + [ + "web", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-100", + "seg": [ + [ + [ + "web", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异步IO": { + "children": [ + { + "asyncio": { + "data": { + "uuid": "python-4-595", + "seg": [ + [ + [ + "asyncio" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "async/await": { + "data": { + "uuid": "python-4-596", + "seg": [ + [ + [ + "async", + "await" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "aiohttp": { + "data": { + "uuid": "python-4-597", + "seg": [ + [ + [ + "aiohttp" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-101", + "seg": [ + [ + [ + "异步", + "io" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用MicroPython": { + "children": [ + { + "搭建开发环境": { + "data": { + "uuid": "python-4-598", + "seg": [ + [ + [ + "搭建", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制小车": { + "data": { + "uuid": "python-4-599", + "seg": [ + [ + [ + "控制", + "小车" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遥控小车": { + "data": { + "uuid": "python-4-600", + "seg": [ + [ + [ + "遥控", + "小车" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遥控转向": { + "data": { + "uuid": "python-4-601", + "seg": [ + [ + [ + "遥控", + "转向" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-102", + "seg": [ + [ + [ + "micropython" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "当索引行不通时": { + "children": [ + { + "字典的用途": { + "data": { + "uuid": "python-4-602", + "seg": [ + [ + [ + "字典", + "用途" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-103", + "seg": [ + [ + [ + "索引", + "行不通" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抽象": { + "children": [ + { + "懒惰是一种美德": { + "data": { + "uuid": "python-4-603", + "seg": [ + [ + [ + "懒惰", + "美德" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义函数": { + "children": [ + { + "给函数编写文档": { + "data": { + "uuid": "python-5-237", + "seg": [ + [ + [ + "函数", + "编写", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7446039_53425061", + "8_1102196_1316591", + "8_7427183_53391236", + "8_7428455_53394214", + "8_709882_667693", + "8_7456450_53440266", + "8_666241_484559", + "8_7456701_53441357" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-604", + "seg": [ + [ + [ + "自定义", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7431787_53400340" + ] + } + } + } + } + }, + { + "参数魔法": { + "children": [ + { + "值从哪里来": { + "data": { + "uuid": "python-5-238", + "seg": [ + [ + [ + "值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7433138_53402943" + ] + } + } + } + } + }, + { + "我能修改参数吗": { + "data": { + "uuid": "python-5-239", + "seg": [ + [ + [ + "修改", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7404691_53353650" + ] + } + } + } + } + }, + { + "收集参数": { + "data": { + "uuid": "python-5-240", + "seg": [ + [ + [ + "收集", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分配参数": { + "data": { + "uuid": "python-5-241", + "seg": [ + [ + [ + "分配", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7410981_53361791" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-605", + "seg": [ + [ + [ + "参数", + "魔法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "递归": { + "children": [ + { + "两个经典案例:阶乘和幂": { + "data": { + "uuid": "python-5-242", + "seg": [ + [ + [ + "经典", + "案例" + ] + ], + [ + [ + "阶乘" + ], + [ + "幂" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7432664_53402065" + ] + } + } + } + } + }, + { + "另一个经典案例:二分查找": { + "data": { + "uuid": "python-5-243", + "seg": [ + [ + [ + "经典", + "案例" + ] + ], + [ + [ + "查找" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1054999_1252053" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-606", + "seg": [ + [ + [ + "递归" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1064883_1263906", + "8_7447860_53427816", + "8_7434772_53405437" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-104", + "seg": [ + [ + [ + "抽象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "再谈抽象": { + "children": [ + { + "对象魔法": { + "data": { + "uuid": "python-4-607", + "seg": [ + [ + [ + "对象", + "魔法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关于面向对象设计的一些思考": { + "data": { + "uuid": "python-4-608", + "seg": [ + [ + [ + "面向对象", + "设计", + "思考" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-105", + "seg": [ + [ + [ + "谈", + "抽象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开箱即用": { + "children": [ + { + "探索模块": { + "children": [ + { + "模块包含什么": { + "data": { + "uuid": "python-5-244", + "seg": [ + [ + [ + "模块", + "包含" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用help获取帮助": { + "data": { + "uuid": "python-5-245", + "seg": [ + [ + [ + "help", + "获取" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1095308_1306531", + "8_7412927_53364476", + "8_1095291_1306481" + ] + } + } + } + } + }, + { + "文档": { + "data": { + "uuid": "python-5-246", + "seg": [ + [ + [ + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用源代码": { + "data": { + "uuid": "python-5-247", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-609", + "seg": [ + [ + [ + "探索", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-106", + "seg": [ + [ + [ + "开箱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图形用户界面": { + "children": [ + { + "创建GUI示例应用程序": { + "children": [ + { + "初探": { + "data": { + "uuid": "python-5-248", + "seg": [ + [ + [ + "初探" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布局": { + "data": { + "uuid": "python-5-249", + "seg": [ + [ + [ + "布局" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件处理": { + "data": { + "uuid": "python-5-250", + "seg": [ + [ + [ + "事件处理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "最终的程序": { + "data": { + "uuid": "python-5-251", + "seg": [ + [ + [ + "最终", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1098759_1313518" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-610", + "seg": [ + [ + [ + "创建", + "gui", + "示例", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用其他GUI工具包": { + "data": { + "uuid": "python-4-611", + "seg": [ + [ + [ + "gui", + "工具包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-107", + "seg": [ + [ + [ + "图形用户界面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库支持": { + "children": [ + { + "Python数据库API": { + "children": [ + { + "全局变量": { + "data": { + "uuid": "python-5-252", + "seg": [ + [ + [ + "全局变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接和游标": { + "children": [ + { + "使用SocketServer实现分叉和线程化": { + "data": { + "uuid": "python-6-40", + "seg": [ + [ + [ + "socketserver", + "分叉" + ], + [ + "线程", + "化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用select和poll实现异步I/O": { + "data": { + "uuid": "python-6-41", + "seg": [ + [ + [ + "select" + ], + [ + "poll", + "异步", + "i", + "o" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1050402_1247553" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-253", + "seg": [ + [ + [ + "连接" + ], + [ + "游标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-612", + "seg": [ + [ + [ + "python", + "数据库", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-108", + "seg": [ + [ + [ + "数据库", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python和Web": { + "children": [ + { + "屏幕抓取": { + "children": [ + { + "Tidy和XHTML解析": { + "data": { + "uuid": "python-5-254", + "seg": [ + [ + [ + "tidy" + ], + [ + "xhtml", + "解析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7440602_53418882" + ] + } + } + } + } + }, + { + "Beautiful Soup": { + "data": { + "uuid": "python-5-255", + "seg": [ + [ + [ + "beaut", + "if", + "ul", + "soup" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-613", + "seg": [ + [ + [ + "屏幕", + "抓取" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_871746_1003841" + ] + } + } + } + } + }, + { + "使用CGI创建动态网页": { + "children": [ + { + "第一步:准备Web服务器": { + "data": { + "uuid": "python-5-256", + "seg": [ + [ + [] + ], + [ + [ + "web", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "第二步:添加!#行": { + "data": { + "uuid": "python-5-257", + "seg": [ + [ + [] + ], + [ + [ + "添加", + "!", + "行" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7444996_53423566" + ] + } + } + } + } + }, + { + "第三步:设置文件权限": { + "data": { + "uuid": "python-5-258", + "seg": [ + [ + [] + ], + [ + [ + "设置", + "文件", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CGI安全风险": { + "data": { + "uuid": "python-5-259", + "seg": [ + [ + [ + "cgi", + "风险" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单的CGI脚本": { + "data": { + "uuid": "python-5-260", + "seg": [ + [ + [ + "cgi", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用cgitb进行调试": { + "data": { + "uuid": "python-5-261", + "seg": [ + [ + [ + "cgitb", + "调试" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_919770_1055034" + ] + } + } + } + } + }, + { + "使用模块cgi": { + "data": { + "uuid": "python-5-262", + "seg": [ + [ + [ + "模块", + "cgi" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单的表单": { + "data": { + "uuid": "python-5-263", + "seg": [ + [ + [ + "表单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-614", + "seg": [ + [ + [ + "cgi", + "创建", + "动态", + "网页" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web服务:更高级的抓取": { + "children": [ + { + "RSS和相关内容": { + "data": { + "uuid": "python-5-264", + "seg": [ + [ + [ + "rss" + ], + [ + "相关", + "内容" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用XML-RPC进行远程过程调用": { + "data": { + "uuid": "python-5-265", + "seg": [ + [ + [ + "xml", + "rpc", + "远程", + "过程", + "调用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "SOAP": { + "data": { + "uuid": "python-5-266", + "seg": [ + [ + [ + "soap" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-615", + "seg": [ + [ + [ + "web", + "服务" + ] + ], + [ + [ + "高级", + "抓取" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-109", + "seg": [ + [ + [ + "python" + ], + [ + "web" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试基础": { + "children": [ + { + "先测试再编码": { + "children": [ + { + "准确的需求说明": { + "data": { + "uuid": "python-5-267", + "seg": [ + [ + [ + "准确", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "做好应对变化的准备": { + "data": { + "uuid": "python-5-268", + "seg": [ + [ + [ + "做好", + "应对", + "变化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7452467_53434475" + ] + } + } + } + } + }, + { + "测试四步曲": { + "data": { + "uuid": "python-5-269", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-616", + "seg": [ + [ + [ + "编码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试工具": { + "children": [ + { + "doctest": { + "data": { + "uuid": "python-5-270", + "seg": [ + [ + [ + "doctest" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unittest": { + "data": { + "uuid": "python-5-271", + "seg": [ + [ + [ + "unittest" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_749200_801624", + "8_1057564_1254701" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-617", + "seg": [ + [ + [ + "测试工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "超越单元测试": { + "children": [ + { + "使用PyChecker和PyLint检查源代码": { + "data": { + "uuid": "python-5-272", + "seg": [ + [ + [ + "pychecker" + ], + [ + "pylint", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "性能分析": { + "data": { + "uuid": "python-5-273", + "seg": [ + [ + [ + "性能", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-618", + "seg": [ + [ + [ + "超越", + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-110", + "seg": [ + [ + [ + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7445378_53423924", + "8_662804_478611" + ] + } + } + } + } + }, + { + "扩展Python": { + "children": [ + { + "鱼和熊掌兼得": { + "data": { + "uuid": "python-4-619", + "seg": [ + [ + [ + "鱼" + ], + [ + "熊掌", + "兼得" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单易行的方式:Jython和IronPython": { + "data": { + "uuid": "python-4-620", + "seg": [ + [ + [ + "简单易行", + "方式" + ] + ], + [ + [ + "jython" + ], + [ + "ironpython" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_719810_713939" + ] + } + } + } + } + }, + { + "编写C语言扩展": { + "children": [ + { + "SWIG": { + "data": { + "uuid": "python-5-274", + "seg": [ + [ + [ + "swig" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "手工编写扩展": { + "data": { + "uuid": "python-5-275", + "seg": [ + [ + [ + "手工", + "编写", + "扩展" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7447305_53426973", + "8_7443194_53420304" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-621", + "seg": [ + [ + [ + "编写", + "c语言", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-111", + "seg": [ + [ + [ + "扩展", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序打包": { + "children": [ + { + "Setuptools基础": { + "data": { + "uuid": "python-4-622", + "seg": [ + [ + [ + "setuptools", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打包": { + "data": { + "uuid": "python-4-623", + "seg": [ + [ + [ + "打包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_765472_825343", + "8_719184_713158" + ] + } + } + } + } + }, + { + "编译扩展": { + "data": { + "uuid": "python-4-624", + "seg": [ + [ + [ + "编译", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用py2exe创建可执行程序": { + "data": { + "uuid": "python-4-625", + "seg": [ + [ + [ + "py2exe", + "创建", + "可执行程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-112", + "seg": [ + [ + [ + "程序", + "打包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "趣味编程": { + "children": [ + { + "为何要有趣": { + "data": { + "uuid": "python-4-626", + "seg": [ + [ + [ + "有趣" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编程柔术": { + "data": { + "uuid": "python-4-627", + "seg": [ + [ + [ + "编程", + "柔术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原型设计": { + "data": { + "uuid": "python-4-628", + "seg": [ + [ + [ + "原型", + "设计" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7446138_53425433", + "8_1094263_1304330" + ] + } + } + } + } + }, + { + "如果你已不胜其烦": { + "data": { + "uuid": "python-4-629", + "seg": [ + [ + [ + "不胜其烦" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如果你想深入学习": { + "data": { + "uuid": "python-4-630", + "seg": [ + [ + [ + "想", + "学习" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_372604_400122", + "8_7460518_53445602", + "8_7425399_53386846", + "8_7410908_53361714", + "8_743209_787047", + "8_7399012_53345856", + "8_7405824_53355216", + "8_747116_797973", + "8_7401339_53349193", + "8_7462705_53448330" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-113", + "seg": [ + [ + [ + "趣味", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python编程基础": { + "children": [ + { + "控制流": { + "children": [ + { + "布尔值": { + "data": { + "uuid": "python-5-276", + "seg": [ + [ + [ + "布尔值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1093476_1302960" + ] + } + } + } + } + }, + { + "比较操作符": { + "data": { + "uuid": "python-5-277", + "seg": [ + [ + [ + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔操作符": { + "children": [ + { + "二元布尔操作符": { + "data": { + "uuid": "python-6-42", + "seg": [ + [ + [ + "布尔", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "not操作符": { + "data": { + "uuid": "python-6-43", + "seg": [ + [ + [ + "not", + "操作符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7417516_53372789", + "8_7443460_53420579", + "8_337637_335148", + "8_7456501_53440281", + "8_7410153_53360752", + "8_7413078_53365575", + "8_4646152_29329636", + "8_1024337_1217850", + "8_7407499_53357521", + "8_7464344_53450842" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-278", + "seg": [ + [ + [ + "布尔", + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混合布尔和比较操作符": { + "data": { + "uuid": "python-5-279", + "seg": [ + [ + [ + "混合", + "布尔" + ], + [ + "操作符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制流的元素": { + "children": [ + { + "代码块": { + "data": { + "uuid": "python-6-44", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-280", + "seg": [ + [ + [ + "控制流", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序执行": { + "data": { + "uuid": "python-5-281", + "seg": [ + [ + [ + "程序执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制流语句": { + "children": [ + { + "else语句": { + "data": { + "uuid": "python-6-45", + "seg": [ + [ + [ + "else", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7442897_53419903", + "8_7464161_53450550", + "8_7408729_53358904" + ] + } + } + } + } + }, + { + "elif语句": { + "data": { + "uuid": "python-6-46", + "seg": [ + [ + [ + "elif", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_978019_1136637" + ] + } + } + } + } + }, + { + "恼人的循环": { + "data": { + "uuid": "python-6-47", + "seg": [ + [ + [ + "恼人", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "等价的while循环": { + "data": { + "uuid": "python-6-48", + "seg": [ + [ + [ + "等价", + "while循环" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_712960_704022", + "8_654548_465625", + "8_7430841_53398340", + "8_1058609_1255944", + "8_7412007_53363154" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-282", + "seg": [ + [ + [ + "控制流", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用sys.exit函数提前结束程序": { + "data": { + "uuid": "python-5-283", + "seg": [ + [ + [ + "sys", + "exit", + "函数", + "提前结束", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_772432_835717" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-631", + "seg": [ + [ + [ + "控制流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串操作": { + "children": [ + { + "将字符串放入其他字符串": { + "data": { + "uuid": "python-5-284", + "seg": [ + [ + [ + "字符串", + "放入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7419634_53377162", + "8_7456425_53440196" + ] + } + } + } + } + }, + { + "有用的字符串方法": { + "data": { + "uuid": "python-5-285", + "seg": [ + [ + [ + "有用", + "字符串", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用ord和chr函数的字符的数值": { + "data": { + "uuid": "python-5-286", + "seg": [ + [ + [ + "ord" + ], + [ + "chr", + "函数", + "字符", + "数值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用pyperclip模块复制粘贴字符串": { + "data": { + "uuid": "python-5-287", + "seg": [ + [ + [ + "pyperclip", + "模块", + "复制粘贴", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443410_53420523" + ] + } + } + } + } + }, + { + "计算字符串的长度": { + "data": { + "uuid": "python-5-288", + "seg": [ + [ + [ + "计算", + "字符串", + "长度" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443491_53420637", + "8_7426761_53390656", + "8_7444251_53422355" + ] + } + } + } + } + }, + { + "截取字符串": { + "data": { + "uuid": "python-5-289", + "seg": [ + [ + [ + "截取", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451147_53432178", + "8_7419304_53376334", + "8_718167_711835" + ] + } + } + } + } + }, + { + "分割、合并字符串": { + "data": { + "uuid": "python-5-290", + "seg": [ + [ + [ + "分割" + ], + [ + "合并", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "检索字符串": { + "data": { + "uuid": "python-5-291", + "seg": [ + [ + [ + "检索", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字母的大小写转换": { + "data": { + "uuid": "python-5-292", + "seg": [ + [ + [ + "字母", + "大小写", + "转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_769097_829741", + "8_7447458_53427323", + "8_7405282_53354418" + ] + } + } + } + } + }, + { + "去除字符串中的空格和": { + "data": { + "uuid": "python-5-293", + "seg": [ + [ + [ + "去除", + "字符串", + "空格" + ], + [] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_716271_708943", + "8_7460625_53445719" + ] + } + } + } + } + }, + { + "格式化字符串": { + "data": { + "uuid": "python-5-294", + "seg": [ + [ + [ + "格式化", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-632", + "seg": [ + [ + [ + "字符串", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-114", + "seg": [ + [ + [ + "python", + "编程", + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7464362_53450750" + ] + } + } + } + } + }, + { + "自动化任务": { + "children": [ + { + "输入验证": { + "children": [ + { + "PyInputPlus模块": { + "children": [ + { + "关键字参数min、max、greaterThan和lessThan": { + "data": { + "uuid": "python-6-49", + "seg": [ + [ + [ + "关键字", + "参数", + "min" + ], + [ + "max" + ], + [ + "greaterthan" + ], + [ + "lessthan" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键字参数blank": { + "data": { + "uuid": "python-6-50", + "seg": [ + [ + [ + "关键字", + "参数", + "blank" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键字参数limit、timeout和default": { + "data": { + "uuid": "python-6-51", + "seg": [ + [ + [ + "关键字", + "参数", + "limit" + ], + [ + "timeout" + ], + [ + "default" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键字参数allowRegexes和blockRegexes": { + "data": { + "uuid": "python-6-52", + "seg": [ + [ + [ + "关键字", + "参数", + "allowregexes" + ], + [ + "blockregexes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将自定义验证函数传递给inputCustom": { + "data": { + "uuid": "python-6-53", + "seg": [ + [ + [ + "自定义", + "验证", + "函数", + "传递", + "inputcustom" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-295", + "seg": [ + [ + [ + "pyinputplus", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-633", + "seg": [ + [ + [ + "输入", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组织文件": { + "children": [ + { + "shutil模块": { + "data": { + "uuid": "python-5-296", + "seg": [ + [ + [ + "shutil", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遍历目录树": { + "data": { + "uuid": "python-5-297", + "seg": [ + [ + [ + "遍历", + "目录", + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用zipfile模块压缩文件": { + "data": { + "uuid": "python-5-298", + "seg": [ + [ + [ + "zipfile", + "模块", + "压缩文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-634", + "seg": [ + [ + [ + "组织", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从Web抓取信息": { + "children": [ + { + "用requests模块从Web下载文件": { + "data": { + "uuid": "python-5-299", + "seg": [ + [ + [ + "requests", + "模块", + "web", + "下载", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_704207_596108" + ] + } + } + } + } + }, + { + "将下载的文件保存到硬盘": { + "data": { + "uuid": "python-5-300", + "seg": [ + [ + [ + "下载", + "文件", + "保存", + "硬盘" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTML": { + "data": { + "uuid": "python-5-301", + "seg": [ + [ + [ + "html" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7405224_53356380", + "8_1094702_1305167", + "8_1058060_1255330", + "8_7423964_53384358", + "8_750570_803726", + "8_704503_597858", + "8_223986_182656", + "8_1097833_1311915", + "8_769985_831293", + "8_7405715_53356029" + ] + } + } + } + } + }, + { + "用bs4模块解析HTML": { + "data": { + "uuid": "python-5-302", + "seg": [ + [ + [ + "bs4", + "模块", + "解析", + "html" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7405288_53354542" + ] + } + } + } + } + }, + { + "用selenium模块控制浏览器": { + "data": { + "uuid": "python-5-303", + "seg": [ + [ + [ + "selenium", + "模块", + "控制", + "浏览器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-635", + "seg": [ + [ + [ + "web", + "抓取", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7458185_53442726" + ] + } + } + } + } + }, + { + "处理Excel电子表格": { + "children": [ + { + "Excel文档": { + "data": { + "uuid": "python-5-304", + "seg": [ + [ + [ + "excel", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7405597_53355007", + "8_4647286_29331593", + "8_1052049_1249565", + "8_237164_216975", + "8_7413725_53365965", + "8_7425586_53387159", + "8_7463828_53450002", + "8_7407431_53357545", + "8_7465157_53451929", + "8_708702_650062" + ] + } + } + } + } + }, + { + "安装openpyxl模块": { + "data": { + "uuid": "python-5-305", + "seg": [ + [ + [ + "安装", + "openpyxl", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取Excel文档": { + "data": { + "uuid": "python-5-306", + "seg": [ + [ + [ + "读取", + "excel", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7431103_53399068", + "8_392375_435784", + "8_717934_711447", + "8_7417607_53373122", + "8_3535586_23009257", + "8_693943_572898" + ] + } + } + } + } + }, + { + "写入Excel文档": { + "data": { + "uuid": "python-5-307", + "seg": [ + [ + [ + "写入", + "excel", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_778302_849363", + "8_262124_274832", + "8_7415965_53369805", + "8_763455_821889", + "8_7414773_53367715", + "8_1029085_1224134" + ] + } + } + } + } + }, + { + "设置单元格的字体风格": { + "data": { + "uuid": "python-5-308", + "seg": [ + [ + [ + "设置", + "单元格", + "字体", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Font对象": { + "data": { + "uuid": "python-5-309", + "seg": [ + [ + [ + "font", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "公式": { + "data": { + "uuid": "python-5-310", + "seg": [ + [ + [ + "公式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7396504_53340244" + ] + } + } + } + } + }, + { + "调整行和列": { + "data": { + "uuid": "python-5-311", + "seg": [ + [ + [ + "调整", + "行和列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-636", + "seg": [ + [ + [ + "excel", + "电子表格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理Google电子表格": { + "children": [ + { + "安装和设置EZSheets": { + "data": { + "uuid": "python-5-312", + "seg": [ + [ + [ + "安装" + ], + [ + "设置", + "ezsheets" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spreadsheet对象": { + "data": { + "uuid": "python-5-313", + "seg": [ + [ + [ + "spreadsheet", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "工作表对象": { + "data": { + "uuid": "python-5-314", + "seg": [ + [ + [ + "工作", + "表", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用Google Sheets配额": { + "data": { + "uuid": "python-5-315", + "seg": [ + [ + [ + "利用", + "google", + "sheets", + "配额" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7428390_53394082" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-637", + "seg": [ + [ + [ + "google", + "电子表格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理PDF和Word文档": { + "children": [ + { + "PDF文档": { + "data": { + "uuid": "python-5-316", + "seg": [ + [ + [ + "pdf", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7423182_53382762", + "8_774625_838927", + "8_7414384_53367016" + ] + } + } + } + } + }, + { + "Word文档": { + "data": { + "uuid": "python-5-317", + "seg": [ + [ + [ + "word", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7463488_53449393", + "8_7439495_53414052", + "8_7422130_53379541", + "8_7407172_53357050", + "8_7456379_53443602", + "8_1054073_1251355" + ] + } + } + } + } + }, + { + "从Word文档中创建PDF": { + "data": { + "uuid": "python-5-318", + "seg": [ + [ + [ + "word", + "文档", + "创建", + "pdf" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-638", + "seg": [ + [ + [ + "pdf" + ], + [ + "word", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理CSV文件和JSON数据": { + "children": [ + { + "csv模块": { + "data": { + "uuid": "python-5-319", + "seg": [ + [ + [ + "csv", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_744365_793336", + "8_736481_764250", + "8_1070170_1271493", + "8_7415531_53368997", + "8_1019101_1210409", + "8_756374_811491", + "8_718685_712506", + "8_1061397_1259252", + "8_750763_804118", + "8_7462810_53448507" + ] + } + } + } + } + }, + { + "json模块": { + "data": { + "uuid": "python-5-320", + "seg": [ + [ + [ + "json", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_757028_812294", + "8_7399757_53347240", + "8_643876_444042", + "8_631991_441788", + "8_7425897_53388274", + "8_7397643_53342821", + "8_797264_886228", + "8_917383_1057025", + "8_762709_822405", + "8_701101_590635" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-639", + "seg": [ + [ + [ + "csv", + "文件" + ], + [ + "json", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发送电子邮件和短信": { + "children": [ + { + "使用Gmail API发送和接收电子邮件": { + "data": { + "uuid": "python-5-321", + "seg": [ + [ + [ + "gmail", + "api", + "发送" + ], + [ + "接收", + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SMTP": { + "data": { + "uuid": "python-5-322", + "seg": [ + [ + [ + "smtp" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发送电子邮件": { + "data": { + "uuid": "python-5-323", + "seg": [ + [ + [ + "发送", + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7435579_53406455" + ] + } + } + } + } + }, + { + "IMAP": { + "data": { + "uuid": "python-5-324", + "seg": [ + [ + [ + "imap" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用IMAP获取和删除电子邮件": { + "data": { + "uuid": "python-5-325", + "seg": [ + [ + [ + "imap", + "获取" + ], + [ + "删除", + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用短信电子邮件网关发送短信": { + "data": { + "uuid": "python-5-326", + "seg": [ + [ + [ + "短信", + "电子邮件", + "网关", + "发送" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Twilio发送短信": { + "data": { + "uuid": "python-5-327", + "seg": [ + [ + [ + "twilio", + "发送", + "短信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-640", + "seg": [ + [ + [ + "发送", + "电子邮件" + ], + [ + "短信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作图像": { + "children": [ + { + "计算机图像基础": { + "data": { + "uuid": "python-5-328", + "seg": [ + [ + [ + "计算机", + "图像", + "基础" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "用pillow操作图像": { + "data": { + "uuid": "python-5-329", + "seg": [ + [ + [ + "pillow", + "操作", + "图像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在图像上绘画": { + "children": [ + { + "绘制形状": { + "data": { + "uuid": "python-6-54", + "seg": [ + [ + [ + "绘制", + "形状" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "绘制文本": { + "data": { + "uuid": "python-6-55", + "seg": [ + [ + [ + "绘制", + "文本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-330", + "seg": [ + [ + [ + "图像", + "绘画" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7396806_53340998", + "8_6209071_43183303", + "8_7449341_53430632" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-641", + "seg": [ + [ + [ + "操作", + "图像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用GUI自动化控制键盘和鼠标": { + "children": [ + { + "安装pyautogui模块": { + "data": { + "uuid": "python-5-331", + "seg": [ + [ + [ + "安装", + "pyautogui", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在macOS上设置无障碍应用程序": { + "data": { + "uuid": "python-5-332", + "seg": [ + [ + [ + "macos", + "设置", + "无障碍", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "走对路": { + "data": { + "uuid": "python-5-333", + "seg": [ + [ + [ + "走", + "路" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制鼠标指针移动": { + "data": { + "uuid": "python-5-334", + "seg": [ + [ + [ + "控制", + "鼠标", + "指针" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制鼠标交互": { + "data": { + "uuid": "python-5-335", + "seg": [ + [ + [ + "控制", + "鼠标", + "交互" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_773500_837228", + "8_7443178_53420245" + ] + } + } + } + } + }, + { + "规划鼠标运动": { + "data": { + "uuid": "python-5-336", + "seg": [ + [ + [ + "规划", + "鼠标", + "运动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理屏幕": { + "data": { + "uuid": "python-5-337", + "seg": [ + [ + [ + "屏幕" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7428076_53393364", + "8_7448551_53428724" + ] + } + } + } + } + }, + { + "图像识别": { + "data": { + "uuid": "python-5-338", + "seg": [ + [ + [ + "图像识别" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_852038_975374" + ] + } + } + } + } + }, + { + "获取窗口信息": { + "data": { + "uuid": "python-5-339", + "seg": [ + [ + [ + "获取", + "窗口", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1053981_1251175", + "8_7462932_53448724", + "8_734839_759424" + ] + } + } + } + } + }, + { + "控制键盘": { + "data": { + "uuid": "python-5-340", + "seg": [ + [ + [ + "控制", + "键盘" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7402766_53350935", + "8_764717_823495", + "8_371927_399126", + "8_1102465_1316908" + ] + } + } + } + } + }, + { + "设置GUI自动化脚本": { + "data": { + "uuid": "python-5-341", + "seg": [ + [ + [ + "设置", + "gui", + "自动化", + "脚本" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1054552_1251804", + "8_7444487_53426627" + ] + } + } + } + } + }, + { + "复习PyAutoGUI的函数": { + "data": { + "uuid": "python-5-342", + "seg": [ + [ + [ + "复习", + "pyautogui", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "显示消息框": { + "data": { + "uuid": "python-5-343", + "seg": [ + [ + [ + "显示", + "消息", + "框" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_731001_747646" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-642", + "seg": [ + [ + [ + "gui", + "自动化", + "控制", + "键盘" + ], + [ + "鼠标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-115", + "seg": [ + [ + [ + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序幕": { + "children": [ + { + "Python数据模型": { + "children": [ + { + "一摞Python风格的纸牌": { + "data": { + "uuid": "python-5-344", + "seg": [ + [ + [ + "python", + "风格", + "纸牌" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特殊方法一览": { + "data": { + "uuid": "python-5-345", + "seg": [ + [ + [ + "方法", + "一览" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-643", + "seg": [ + [ + [ + "python", + "数据模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-116", + "seg": [ + [ + [ + "序幕" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把函数视作对象": { + "children": [ + { + "使用一等函数实现设计模式": { + "children": [ + { + "案例分析:重构“策略”模式": { + "data": { + "uuid": "python-5-346", + "seg": [ + [ + [ + "案例", + "分析" + ] + ], + [ + [ + "重构", + "策略", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "“命令”模式": { + "data": { + "uuid": "python-5-347", + "seg": [ + [ + [ + "命令", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7429319_53396010", + "8_7419255_53376275" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-644", + "seg": [ + [ + [ + "函数", + "设计模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-117", + "seg": [ + [ + [ + "函数", + "视作", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象惯用法": { + "children": [ + { + "对象引用、可变性和垃圾回收": { + "children": [ + { + "变量不是盒子": { + "data": { + "uuid": "python-5-348", + "seg": [ + [ + [ + "变量", + "盒子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "默认做浅复制": { + "data": { + "uuid": "python-5-349", + "seg": [ + [ + [ + "默认", + "做", + "浅", + "复制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数的参数作为引用时": { + "data": { + "uuid": "python-5-350", + "seg": [ + [ + [ + "函数", + "参数", + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_700318_589145", + "8_7413734_53365943" + ] + } + } + } + } + }, + { + "del和垃圾回收": { + "data": { + "uuid": "python-5-351", + "seg": [ + [ + [ + "del" + ], + [ + "垃圾", + "回收" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python对不可变类型施加的把戏": { + "data": { + "uuid": "python-5-352", + "seg": [ + [ + [ + "python", + "变", + "类型", + "施加", + "把戏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-645", + "seg": [ + [ + [ + "对象", + "引用" + ], + [ + "可变性" + ], + [ + "垃圾", + "回收" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "符合Python风格的对象": { + "children": [ + { + "对象表示形式": { + "data": { + "uuid": "python-5-353", + "seg": [ + [ + [ + "对象", + "形式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7464736_53451299" + ] + } + } + } + } + }, + { + "再谈向量类": { + "data": { + "uuid": "python-5-354", + "seg": [ + [ + [ + "谈", + "向量", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "备选构造方法": { + "data": { + "uuid": "python-5-355", + "seg": [ + [ + [ + "备选", + "构造方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "classmethod与staticmethod": { + "data": { + "uuid": "python-5-356", + "seg": [ + [ + [ + "classmethod" + ], + [ + "staticmethod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "格式化显示": { + "data": { + "uuid": "python-5-357", + "seg": [ + [ + [ + "格式化", + "显示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可散列的Vector2d": { + "data": { + "uuid": "python-5-358", + "seg": [ + [ + [ + "散列", + "vector2d" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python的私有属性和“受保护的”属性": { + "data": { + "uuid": "python-5-359", + "seg": [ + [ + [ + "python", + "私有", + "属性" + ], + [ + "受", + "保护", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用__slots__类属性节省空间": { + "data": { + "uuid": "python-5-360", + "seg": [ + [ + [ + "slots", + "类", + "属性", + "节省", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "覆盖类属性": { + "data": { + "uuid": "python-5-361", + "seg": [ + [ + [ + "覆盖", + "类", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-646", + "seg": [ + [ + [ + "符合", + "python", + "风格", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_6374902_44871586" + ] + } + } + } + } + }, + { + "继承的优缺点": { + "children": [ + { + "子类化内置类型很麻烦": { + "data": { + "uuid": "python-5-362", + "seg": [ + [ + [ + "子", + "类化", + "内置", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多重继承的真实应用": { + "data": { + "uuid": "python-5-363", + "seg": [ + [ + [ + "继承", + "真实" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个现代示例:Django通用视图中的混入": { + "data": { + "uuid": "python-5-364", + "seg": [ + [ + [ + "示例" + ] + ], + [ + [ + "django", + "通用", + "视图", + "混入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-647", + "seg": [ + [ + [ + "继承", + "优缺点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "正确重载运算符": { + "children": [ + { + "运算符重载基础": { + "data": { + "uuid": "python-5-365", + "seg": [ + [ + [ + "运算符", + "重载", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重载向量加法运算符 +": { + "data": { + "uuid": "python-5-366", + "seg": [ + [ + [ + "重载", + "向量", + "加法", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重载标量乘法运算符 *": { + "data": { + "uuid": "python-5-367", + "seg": [ + [ + [ + "重载", + "标量", + "乘法", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增量赋值运算符": { + "data": { + "uuid": "python-5-368", + "seg": [ + [ + [ + "增量", + "赋值", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-648", + "seg": [ + [ + [ + "重载", + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-118", + "seg": [ + [ + [ + "面向对象", + "惯用", + "法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7442945_53419958" + ] + } + } + } + } + }, + { + "控制流程": { + "children": [ + { + "使用期物处理并发": { + "children": [ + { + "阻塞型I/O和GIL": { + "data": { + "uuid": "python-5-369", + "seg": [ + [ + [ + "阻塞", + "i", + "o" + ], + [ + "gil" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用concurrent.futures模块启动进程": { + "data": { + "uuid": "python-5-370", + "seg": [ + [ + [ + "concurrent", + "futures", + "模块", + "启动", + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "实验Executor.map方法": { + "data": { + "uuid": "python-5-371", + "seg": [ + [ + [ + "实验", + "executor", + "map", + "方法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7455783_53439118", + "8_7451008_53432077", + "8_1079250_1286684" + ] + } + } + } + } + }, + { + "显示下载进度并处理错误": { + "data": { + "uuid": "python-5-372", + "seg": [ + [ + [ + "显示", + "下载", + "进度", + "处理错误" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-649", + "seg": [ + [ + [ + "使用期", + "并发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用asyncio包处理并发": { + "children": [ + { + "避免阻塞型调用": { + "data": { + "uuid": "python-5-373", + "seg": [ + [ + [ + "阻塞", + "调用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "改进asyncio下载脚本": { + "data": { + "uuid": "python-5-374", + "seg": [ + [ + [ + "改进", + "asyncio", + "下载", + "脚本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用asyncio包编写服务器": { + "data": { + "uuid": "python-5-375", + "seg": [ + [ + [ + "asyncio", + "包", + "编写", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-650", + "seg": [ + [ + [ + "asyncio", + "包", + "并发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-119", + "seg": [ + [ + [ + "控制", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元编程": { + "children": [ + { + "动态属性和特性": { + "children": [ + { + "使用动态属性转换数据": { + "data": { + "uuid": "python-5-376", + "seg": [ + [ + [ + "动态", + "属性", + "转换", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用特性验证属性": { + "data": { + "uuid": "python-5-377", + "seg": [ + [ + [ + "特性", + "验证", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特性全解析": { + "data": { + "uuid": "python-5-378", + "seg": [ + [ + [ + "特性", + "全", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义一个特性工厂函数": { + "data": { + "uuid": "python-5-379", + "seg": [ + [ + [ + "定义", + "特性", + "工厂", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理属性删除操作": { + "data": { + "uuid": "python-5-380", + "seg": [ + [ + [ + "属性", + "删除", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-651", + "seg": [ + [ + [ + "动态", + "属性" + ], + [ + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "属性描述符": { + "children": [ + { + "描述符示例:验证属性": { + "data": { + "uuid": "python-5-381", + "seg": [ + [ + [ + "描述符", + "示例" + ] + ], + [ + [ + "验证", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "覆盖型与非覆盖型描述符对比": { + "data": { + "uuid": "python-5-382", + "seg": [ + [ + [ + "覆盖", + "描述符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法是描述符": { + "data": { + "uuid": "python-5-383", + "seg": [ + [ + [ + "方法", + "描述符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "描述符用法建议": { + "data": { + "uuid": "python-5-384", + "seg": [ + [ + [ + "描述符", + "用法", + "建议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "描述符的文档字符串和覆盖删除操作": { + "data": { + "uuid": "python-5-385", + "seg": [ + [ + [ + "描述符", + "文档", + "字符串" + ], + [ + "覆盖", + "删除", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-652", + "seg": [ + [ + [ + "属性", + "描述符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类元编程": { + "children": [ + { + "类工厂函数": { + "data": { + "uuid": "python-5-386", + "seg": [ + [ + [ + "类", + "工厂", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定制描述符的类装饰器": { + "data": { + "uuid": "python-5-387", + "seg": [ + [ + [ + "定制", + "描述符", + "类", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入时和运行时比较": { + "data": { + "uuid": "python-5-388", + "seg": [ + [ + [ + "导入" + ], + [ + "运行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元类基础知识": { + "data": { + "uuid": "python-5-389", + "seg": [ + [ + [ + "类", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "定制描述符的元类": { + "data": { + "uuid": "python-5-390", + "seg": [ + [ + [ + "定制", + "描述符", + "元类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元类的特殊方法__prepare__": { + "data": { + "uuid": "python-5-391", + "seg": [ + [ + [ + "元类", + "方法", + "prepare" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7434610_53404994" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-653", + "seg": [ + [ + [ + "类元", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给函数添加一个包装": { + "data": { + "uuid": "python-4-654", + "seg": [ + [ + [ + "函数", + "添加", + "包装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写装饰器时如何保存函数的元数据": { + "data": { + "uuid": "python-4-655", + "seg": [ + [ + [ + "编写", + "装饰", + "器", + "保存", + "函数", + "元", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对装饰器进行解包装": { + "data": { + "uuid": "python-4-656", + "seg": [ + [ + [ + "装饰", + "器", + "解", + "包装" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7397302_53342073", + "8_7447217_53426745", + "8_7436978_53409440", + "8_7398573_53344953", + "8_7398290_53344291", + "8_7438384_53411720" + ] + } + } + } + } + }, + { + "定义一个可接受参数的装饰器": { + "data": { + "uuid": "python-4-657", + "seg": [ + [ + [ + "定义", + "接受", + "参数", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义一个属性可由用户修改的装饰器": { + "data": { + "uuid": "python-4-658", + "seg": [ + [ + [ + "定义", + "属性", + "用户", + "修改", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义一个能接收可选参数的装饰器": { + "data": { + "uuid": "python-4-659", + "seg": [ + [ + [ + "定义", + "接收", + "参数", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用装饰器对函数参数强制执行类型检查": { + "data": { + "uuid": "python-4-660", + "seg": [ + [ + [ + "利用", + "装饰", + "器", + "函数参数", + "强制执行", + "类型", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在类中定义装饰器": { + "data": { + "uuid": "python-4-661", + "seg": [ + [ + [ + "类", + "定义", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把装饰器定义成类": { + "data": { + "uuid": "python-4-662", + "seg": [ + [ + [ + "装饰", + "器", + "定义", + "成类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把装饰器作用到类和静态方法上": { + "data": { + "uuid": "python-4-663", + "seg": [ + [ + [ + "装饰", + "器", + "作用", + "类" + ], + [ + "静态方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写装饰器为被包装的函数添加参数": { + "data": { + "uuid": "python-4-664", + "seg": [ + [ + [ + "编写", + "装饰", + "器为", + "包装", + "函数", + "添加", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用装饰器给类定义打补丁": { + "data": { + "uuid": "python-4-665", + "seg": [ + [ + [ + "利用", + "装饰", + "器", + "类", + "定义", + "打补丁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取类属性的定义顺序": { + "data": { + "uuid": "python-4-666", + "seg": [ + [ + [ + "获取", + "类", + "属性", + "定义", + "顺序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义一个能接受可选参数的元类": { + "data": { + "uuid": "python-4-667", + "seg": [ + [ + [ + "定义", + "接受", + "参数", + "元类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在*args和**kwargs上强制规定一种参数签名": { + "data": { + "uuid": "python-4-668", + "seg": [ + [ + [ + "args" + ], + [ + "kwargs", + "强制", + "参数", + "签名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_5716798_35650124" + ] + } + } + } + } + }, + { + "在类中强制规定编码约定": { + "data": { + "uuid": "python-4-669", + "seg": [ + [ + [ + "类", + "强制", + "编码", + "约定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过编程的方式来定义类": { + "data": { + "uuid": "python-4-670", + "seg": [ + [ + [ + "编程", + "方式", + "定义", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在定义的时候初始化类成员": { + "data": { + "uuid": "python-4-671", + "seg": [ + [ + [ + "定义", + "初始化", + "类", + "成员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过函数注解来实现方法重载": { + "data": { + "uuid": "python-4-672", + "seg": [ + [ + [ + "函数", + "注解", + "方法", + "重载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "避免出现重复的属性方法": { + "data": { + "uuid": "python-4-673", + "seg": [ + [ + [ + "避免出现", + "重复", + "属性", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "以简单的方式定义上下文管理器": { + "data": { + "uuid": "python-4-674", + "seg": [ + [ + [ + "方式", + "定义", + "上下文", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "执行带有局部副作用的代码": { + "data": { + "uuid": "python-4-675", + "seg": [ + [ + [ + "执行", + "带有", + "局部", + "副作用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解析并分析Python源代码": { + "data": { + "uuid": "python-4-676", + "seg": [ + [ + [ + "解析", + "分析", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将Python源码分解为字节码": { + "data": { + "uuid": "python-4-677", + "seg": [ + [ + [ + "python", + "分解", + "字节", + "码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-120", + "seg": [ + [ + [ + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据编码与处理": { + "children": [ + { + "读写CSV数据": { + "data": { + "uuid": "python-4-678", + "seg": [ + [ + [ + "读写", + "csv", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读写JSON数据": { + "data": { + "uuid": "python-4-679", + "seg": [ + [ + [ + "读写", + "json", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解析简单的XML文档": { + "data": { + "uuid": "python-4-680", + "seg": [ + [ + [ + "解析", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "以增量方式解析大型XML文件": { + "data": { + "uuid": "python-4-681", + "seg": [ + [ + [ + "增量", + "方式", + "解析", + "大型", + "xml", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将字典转换为XML": { + "data": { + "uuid": "python-4-682", + "seg": [ + [ + [ + "字典", + "转换", + "xml" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用命名空间来解析XML文档": { + "data": { + "uuid": "python-4-683", + "seg": [ + [ + [ + "命名", + "空间", + "解析", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "同关系型数据库进行交互": { + "data": { + "uuid": "python-4-684", + "seg": [ + [ + [ + "关系", + "数据库", + "交互" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读写二进制结构的数组": { + "data": { + "uuid": "python-4-685", + "seg": [ + [ + [ + "读写", + "二进制", + "结构", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取嵌套型和大小可变的二进制结构": { + "data": { + "uuid": "python-4-686", + "seg": [ + [ + [ + "读取", + "嵌套" + ], + [ + "大小", + "可变", + "二进制", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据汇总和统计": { + "data": { + "uuid": "python-4-687", + "seg": [ + [ + [ + "数据", + "汇总" + ], + [ + "统计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-121", + "seg": [ + [ + [ + "数据编码" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发": { + "children": [ + { + "启动和停止线程": { + "data": { + "uuid": "python-4-688", + "seg": [ + [ + [ + "启动" + ], + [ + "停止", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "判断线程是否已经启动": { + "data": { + "uuid": "python-4-689", + "seg": [ + [ + [ + "判断", + "线程", + "启动" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程间通信": { + "data": { + "uuid": "python-4-690", + "seg": [ + [ + [ + "线程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "对临界区加锁": { + "data": { + "uuid": "python-4-691", + "seg": [ + [ + [ + "临界", + "区", + "加锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "避免死锁": { + "data": { + "uuid": "python-4-692", + "seg": [ + [ + [ + "死锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "保存线程专有状态": { + "data": { + "uuid": "python-4-693", + "seg": [ + [ + [ + "保存", + "线程", + "专有", + "状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建线程池": { + "data": { + "uuid": "python-4-694", + "seg": [ + [ + [ + "创建", + "线程", + "池" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "实现简单的并行编程": { + "data": { + "uuid": "python-4-695", + "seg": [ + [ + [ + "并行", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "如何规避GIL带来的限制": { + "data": { + "uuid": "python-4-696", + "seg": [ + [ + [ + "规避", + "gil", + "带来" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "定义一个Actor任务": { + "data": { + "uuid": "python-4-697", + "seg": [ + [ + [ + "定义", + "actor" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "实现发布者/订阅者消息模式": { + "data": { + "uuid": "python-4-698", + "seg": [ + [ + [ + "发布者", + "订阅", + "消息", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用生成器作为线程的替代方案": { + "data": { + "uuid": "python-4-699", + "seg": [ + [ + [ + "生成器", + "线程", + "方案" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "轮询多个线程队列": { + "data": { + "uuid": "python-4-700", + "seg": [ + [ + [ + "轮询", + "线程", + "队列" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在UNIX上加载守护进程": { + "data": { + "uuid": "python-4-701", + "seg": [ + [ + [ + "unix", + "加载", + "守护", + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-122", + "seg": [ + [ + [ + "并发" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7407583_53357718" + ] + } + } + } + } + }, + { + "实用脚本和系统管理": { + "children": [ + { + "通过重定向、管道或输入文件来作为脚本的输入": { + "data": { + "uuid": "python-4-702", + "seg": [ + [ + [ + "重定向" + ], + [ + "管道", + "输入", + "文件", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "终止程序并显示错误信息": { + "data": { + "uuid": "python-4-703", + "seg": [ + [ + [ + "终止", + "程序", + "显示", + "错误信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解析命令行选项": { + "data": { + "uuid": "python-4-704", + "seg": [ + [ + [ + "解析", + "命令行", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在运行时提供密码输入提示": { + "data": { + "uuid": "python-4-705", + "seg": [ + [ + [ + "运行", + "提供", + "密码", + "输入", + "提示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取终端大小": { + "data": { + "uuid": "python-4-706", + "seg": [ + [ + [ + "获取", + "终端", + "大小" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_706319_622160" + ] + } + } + } + } + }, + { + "执行外部命令并获取输出": { + "data": { + "uuid": "python-4-707", + "seg": [ + [ + [ + "执行", + "外部命令", + "获取", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建和解包归档文件": { + "data": { + "uuid": "python-4-708", + "seg": [ + [ + [ + "创建", + "和解", + "包", + "归档文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过名称来查找文件": { + "data": { + "uuid": "python-4-709", + "seg": [ + [ + [ + "名称", + "查找文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取配置文件": { + "data": { + "uuid": "python-4-710", + "seg": [ + [ + [ + "读取", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给脚本添加日志记录": { + "data": { + "uuid": "python-4-711", + "seg": [ + [ + [ + "脚本", + "添加", + "日志", + "记录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给库添加日志记录": { + "data": { + "uuid": "python-4-712", + "seg": [ + [ + [ + "库", + "添加", + "日志", + "记录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建一个秒表计时器": { + "data": { + "uuid": "python-4-713", + "seg": [ + [ + [ + "创建", + "秒表", + "计时器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给内存和CPU使用量设定限制": { + "data": { + "uuid": "python-4-714", + "seg": [ + [ + [ + "内存" + ], + [ + "cpu", + "使用量", + "设定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "加载Web浏览器": { + "data": { + "uuid": "python-4-715", + "seg": [ + [ + [ + "加载", + "web", + "浏览器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-123", + "seg": [ + [ + [ + "实用", + "脚本" + ], + [ + "系统管理" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455330_53438235" + ] + } + } + } + } + }, + { + "C语言扩展": { + "children": [ + { + "利用ctypes来访问C代码": { + "data": { + "uuid": "python-4-716", + "seg": [ + [ + [ + "利用", + "ctypes", + "访问", + "c" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_703730_596385", + "8_703803_596364" + ] + } + } + } + } + }, + { + "编写简单的C语言扩展模块": { + "data": { + "uuid": "python-4-717", + "seg": [ + [ + [ + "编写", + "c语言", + "扩展", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_938000_1074700", + "8_913959_1049059", + "8_968532_1122119", + "8_938002_1074698", + "8_1005355_1186937", + "8_938001_1074699", + "8_913956_1049167", + "8_986176_1149650", + "8_968419_1122345", + "8_1005354_1186938" + ] + } + } + } + } + }, + { + "编写一个可操作数组的扩展函数": { + "data": { + "uuid": "python-4-718", + "seg": [ + [ + [ + "编写", + "操作", + "数组", + "扩展", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在C扩展模块中管理不透明指针": { + "data": { + "uuid": "python-4-719", + "seg": [ + [ + [ + "c", + "扩展", + "模块", + "管理", + "透明", + "指针" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在扩展模块中定义并导出C API": { + "data": { + "uuid": "python-4-720", + "seg": [ + [ + [ + "扩展", + "模块", + "定义", + "导出", + "c", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从C中调用Python": { + "data": { + "uuid": "python-4-721", + "seg": [ + [ + [ + "c", + "调用", + "python" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7457596_53441892", + "8_1641721_6769631", + "8_761376_820721" + ] + } + } + } + } + }, + { + "在C扩展模块中释放GIL": { + "data": { + "uuid": "python-4-722", + "seg": [ + [ + [ + "c", + "扩展", + "模块", + "释放", + "gil" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混合使用C和Python环境中的线程": { + "data": { + "uuid": "python-4-723", + "seg": [ + [ + [ + "混合", + "c" + ], + [ + "python", + "环境", + "线程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Swig来包装C代码": { + "data": { + "uuid": "python-4-724", + "seg": [ + [ + [ + "swig", + "包装", + "c" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Cython来包装C代码": { + "data": { + "uuid": "python-4-725", + "seg": [ + [ + [ + "cython", + "包装", + "c" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Cython来高效操作数组": { + "data": { + "uuid": "python-4-726", + "seg": [ + [ + [ + "cython", + "高效", + "操作", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把函数指针转换为可调用对象": { + "data": { + "uuid": "python-4-727", + "seg": [ + [ + [ + "函数指针", + "转换", + "调用", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把以NULL结尾的字符串传给C库": { + "data": { + "uuid": "python-4-728", + "seg": [ + [ + [ + "null", + "结尾", + "字符串", + "传给", + "c", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把Unicode字符串传递给C库": { + "data": { + "uuid": "python-4-729", + "seg": [ + [ + [ + "unicode", + "字符串", + "传递", + "c", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把C字符串转换到Python中": { + "data": { + "uuid": "python-4-730", + "seg": [ + [ + [ + "c", + "字符串", + "转换", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "同编码方式不确定的C字符串打交道": { + "data": { + "uuid": "python-4-731", + "seg": [ + [ + [ + "编码方式", + "c", + "字符串", + "打交道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把文件名传给C扩展模块": { + "data": { + "uuid": "python-4-732", + "seg": [ + [ + [ + "文件名", + "传给", + "c", + "扩展", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把打开的文件传给C扩展模块": { + "data": { + "uuid": "python-4-733", + "seg": [ + [ + [ + "打开", + "文件", + "传给", + "c", + "扩展", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在C中读取文件型对象": { + "data": { + "uuid": "python-4-734", + "seg": [ + [ + [ + "c", + "读取", + "文件", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从C中访问可迭代对象": { + "data": { + "uuid": "python-4-735", + "seg": [ + [ + [ + "c", + "访问", + "迭代", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "排查段错误": { + "data": { + "uuid": "python-4-736", + "seg": [ + [ + [ + "排查", + "段" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_914070_1049205", + "8_769399_830157", + "8_716608_709448", + "8_913964_1049067", + "8_1067977_1268804", + "8_717177_710352", + "8_779859_848376", + "8_7396996_53341380", + "8_7448546_53428711" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-124", + "seg": [ + [ + [ + "c语言", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初识Python": { + "children": [ + { + "搭建Python开发环境": { + "children": [ + { + "开发环境概述": { + "data": { + "uuid": "python-5-392", + "seg": [ + [ + [ + "开发", + "环境", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_683466_539666", + "8_7433297_53403715", + "8_7424164_53385317", + "8_733380_768557", + "8_7454053_53436721", + "8_751097_805477" + ] + } + } + } + } + }, + { + "运行已经编写好的.py文件": { + "data": { + "uuid": "python-5-393", + "seg": [ + [ + [ + "运行", + "编写", + "py", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_6211104_43273850", + "8_1096144_1308139", + "8_757177_812493", + "8_7456476_53440264", + "8_917588_1052607" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-737", + "seg": [ + [ + [ + "搭建", + "python", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python开发工具": { + "children": [ + { + "使用自带的IDLE": { + "data": { + "uuid": "python-5-394", + "seg": [ + [ + [ + "自带", + "idle" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-738", + "seg": [ + [ + [ + "python", + "开发工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-125", + "seg": [ + [ + [ + "初识", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python语言基础": { + "children": [ + { + "Python语法特点": { + "children": [ + { + "注释规则": { + "data": { + "uuid": "python-5-395", + "seg": [ + [ + [ + "注释", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-739", + "seg": [ + [ + [ + "python", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python中的变量": { + "children": [ + { + "理解Python中的变量": { + "data": { + "uuid": "python-5-396", + "seg": [ + [ + [ + "理解", + "python", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义变量": { + "data": { + "uuid": "python-5-397", + "seg": [ + [ + [ + "定义", + "变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_682943_538274", + "8_7397620_53342796" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-740", + "seg": [ + [ + [ + "python", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-126", + "seg": [ + [ + [ + "python", + "语言", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流程控制语句": { + "children": [ + { + "程序结构": { + "data": { + "uuid": "python-4-741", + "seg": [ + [ + [ + "程序结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择语句": { + "children": [ + { + "if…else语句": { + "data": { + "uuid": "python-5-398", + "seg": [ + [ + [ + "if", + "…", + "else", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1101987_1316432", + "8_770893_833006", + "8_693877_572457" + ] + } + } + } + } + }, + { + "if…elif…else语句": { + "data": { + "uuid": "python-5-399", + "seg": [ + [ + [ + "if", + "…", + "elif", + "else", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_771620_834263" + ] + } + } + } + } + }, + { + "if语句的嵌套": { + "data": { + "uuid": "python-5-400", + "seg": [ + [ + [ + "if语句", + "嵌套" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7460045_53445074" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-742", + "seg": [ + [ + [ + "选择", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环语句": { + "children": [ + { + "循环嵌套": { + "data": { + "uuid": "python-5-401", + "seg": [ + [ + [ + "循环", + "嵌套" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7434848_53405315", + "8_7457734_53442334", + "8_7458667_53443451", + "8_1013309_1203252", + "8_751535_805161", + "8_7401312_53349144", + "8_7416547_53370780", + "8_1097930_1312169", + "8_918915_1053902", + "8_714146_705871" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-743", + "seg": [ + [ + [ + "循环", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-127", + "seg": [ + [ + [ + "流程", + "控制", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-4", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-1-0", + "seg": [ + [ + [ + "python", + "初阶" + ] + ] + ], + "related_data": {} + } + } + }, + { + "Python中阶": { + "children": [ + { + "基本技能": { + "children": [ + { + "时间日期处理": { + "children": [ + { + "time": { + "data": { + "uuid": "python-4-744", + "seg": [ + [ + [ + "time" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7438823_53412282" + ] + } + } + } + } + }, + { + "datetime": { + "data": { + "uuid": "python-4-745", + "seg": [ + [ + [ + "datetime" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7419987_53377928", + "8_7420270_53378320" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-128", + "seg": [ + [ + [ + "时间", + "日期" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据文件读写": { + "children": [ + { + "excel/csv/hdf/netCDF": { + "data": { + "uuid": "python-4-746", + "seg": [ + [ + [ + "excel", + "csv", + "hdf", + "netcdf" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-129", + "seg": [ + [ + [ + "数据文件", + "读写" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库操作": { + "children": [ + { + "数据库概述": { + "data": { + "uuid": "python-4-747", + "seg": [ + [ + [ + "数据库", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库安装配置": { + "data": { + "uuid": "python-4-748", + "seg": [ + [ + [ + "数据库", + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "SQL语句": { + "data": { + "uuid": "python-4-749", + "seg": [ + [ + [ + "sql", + "语句" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_202457_129310", + "8_766219_53394413", + "8_7450653_53431898", + "8_765322_824301" + ] + } + } + } + } + }, + { + "SQLite": { + "children": [ + { + "创建数据库文件": { + "data": { + "uuid": "python-5-402", + "seg": [ + [ + [ + "创建", + "数据库", + "文件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作SQLite": { + "data": { + "uuid": "python-5-403", + "seg": [ + [ + [ + "操作", + "sqlite" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_767624_827495", + "8_7453597_53436289" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-750", + "seg": [ + [ + [ + "sqlite" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MySQL": { + "children": [ + { + "下载安装MySQL": { + "data": { + "uuid": "python-5-404", + "seg": [ + [ + [ + "下载安装", + "mysql" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_248606_243573", + "8_7443511_53420662", + "8_203882_132101", + "8_673965_503011", + "8_750839_804585", + "8_7449445_53429512", + "8_1082101_1287947", + "8_755906_811173", + "8_735973_762603", + "8_755251_810650" + ] + } + } + } + } + }, + { + "连接数据库": { + "data": { + "uuid": "python-5-405", + "seg": [ + [ + [ + "连接", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7396833_53341054", + "8_338389_336196" + ] + } + } + } + } + }, + { + "创建数据表": { + "data": { + "uuid": "python-5-406", + "seg": [ + [ + [ + "创建", + "数据表" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作MySQL数据表": { + "data": { + "uuid": "python-5-407", + "seg": [ + [ + [ + "操作", + "mysql", + "数据表" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_770513_832342" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-751", + "seg": [ + [ + [ + "mysql" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MongoDB": { + "data": { + "uuid": "python-4-752", + "seg": [ + [ + [ + "mongodb" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_190252_90602", + "8_190108_90598" + ] + } + } + } + } + }, + { + "数据库编程接口": { + "children": [ + { + "连接对象": { + "data": { + "uuid": "python-5-408", + "seg": [ + [ + [ + "连接", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "游标对象": { + "data": { + "uuid": "python-5-409", + "seg": [ + [ + [ + "游标", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-753", + "seg": [ + [ + [ + "数据库", + "编程", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-130", + "seg": [ + [ + [ + "数据库", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "操作系统和环境": { + "children": [ + { + "OS/Sys": { + "data": { + "uuid": "python-4-754", + "seg": [ + [ + [ + "os", + "sys" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-131", + "seg": [ + [ + [ + "操作系统" + ], + [ + "环境" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程进程和协程": { + "children": [ + { + "基础概念": { + "data": { + "uuid": "python-4-755", + "seg": [ + [ + [ + "基础", + "概念" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "加锁和解锁": { + "data": { + "uuid": "python-4-756", + "seg": [ + [ + [ + "加锁" + ], + [ + "解锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "threading": { + "data": { + "uuid": "python-4-757", + "seg": [ + [ + [ + "threading" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "multiprocessing": { + "data": { + "uuid": "python-4-758", + "seg": [ + [ + [ + "multiprocessing" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7413831_53366115" + ] + } + } + } + } + }, + { + "queue": { + "data": { + "uuid": "python-4-759", + "seg": [ + [ + [ + "queue" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7426599_53390226" + ] + } + } + } + } + }, + { + "gevent": { + "data": { + "uuid": "python-4-760", + "seg": [ + [ + [ + "gevent" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-132", + "seg": [ + [ + [ + "线程", + "进程" + ], + [ + "协程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "源码打包": { + "children": [ + { + "pyinstaller": { + "data": { + "uuid": "python-4-761", + "seg": [ + [ + [ + "pyinstaller" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-133", + "seg": [ + [ + [ + "打包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络编程": { + "children": [ + { + "socket": { + "data": { + "uuid": "python-4-762", + "seg": [ + [ + [ + "socket" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_884559_1024135", + "8_7433136_53402934", + "8_229057_196149", + "8_1097488_1311022", + "8_235920_215419", + "8_240274_225341", + "8_251314_251444" + ] + } + } + } + } + }, + { + "与HTTP服务交互": { + "data": { + "uuid": "python-4-763", + "seg": [ + [ + [], + [ + "http", + "服务", + "交互" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建服务器": { + "children": [ + { + "TCP服务器": { + "data": { + "uuid": "python-5-410", + "seg": [ + [ + [ + "tcp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7428190_53393633", + "8_679177_525511", + "8_814465_924131", + "8_736269_763350", + "8_695488_578213", + "8_685828_546566" + ] + } + } + } + } + }, + { + "UDP服务器": { + "data": { + "uuid": "python-5-411", + "seg": [ + [ + [ + "udp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-764", + "seg": [ + [ + [ + "创建", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通过CIDR地址生成对应的IP地址集": { + "data": { + "uuid": "python-4-765", + "seg": [ + [ + [ + "cidr", + "地址", + "生成", + "ip地址", + "集" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "REST接口创建": { + "data": { + "uuid": "python-4-766", + "seg": [ + [ + [ + "rest", + "接口", + "创建" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "远程调用": { + "children": [ + { + "远程方法调用": { + "data": { + "uuid": "python-5-412", + "seg": [ + [ + [ + "远程", + "方法", + "调用" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_192642_96267", + "8_735183_760262", + "8_7395302_53338139", + "8_7416619_53370943", + "8_7407910_53358089", + "8_1050869_1247999", + "8_7418875_53376335", + "8_690923_562303", + "8_378525_409855", + "8_7415495_53369003" + ] + } + } + } + } + }, + { + "通过XML-RPC远程调用": { + "data": { + "uuid": "python-5-413", + "seg": [ + [ + [ + "xml", + "rpc", + "远程", + "调用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-767", + "seg": [ + [ + [ + "远程", + "调用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "不同Python解释器之间的交互": { + "data": { + "uuid": "python-4-768", + "seg": [ + [ + [ + "python", + "解释器", + "交互" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "客户端认证": { + "data": { + "uuid": "python-4-769", + "seg": [ + [ + [ + "客户端", + "认证" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Socket文件描述符传递": { + "data": { + "uuid": "python-4-770", + "seg": [ + [ + [ + "socket", + "文件", + "描述符", + "传递" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件驱动的I/O": { + "data": { + "uuid": "python-4-771", + "seg": [ + [ + [ + "事件驱动", + "i", + "o" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "大型数组发送与接收": { + "data": { + "uuid": "python-4-772", + "seg": [ + [ + [ + "大型", + "数组", + "发送" + ], + [ + "接收" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "简介": { + "children": [ + { + "客户端/服务端架构": { + "data": { + "uuid": "python-5-414", + "seg": [ + [ + [ + "客户端", + "服务端", + "架构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "持久化存储": { + "data": { + "uuid": "python-5-415", + "seg": [ + [ + [ + "持久", + "化", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库基本操作和SQL": { + "data": { + "uuid": "python-5-416", + "seg": [ + [ + [ + "数据库", + "基本操作" + ], + [ + "sql" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web应用:客户端/服务器计算": { + "data": { + "uuid": "python-5-417", + "seg": [ + [ + [ + "web" + ] + ], + [ + [ + "客户端", + "服务器", + "计算" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "因特网": { + "data": { + "uuid": "python-5-418", + "seg": [ + [ + [ + "因特网" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-773", + "seg": [ + [ + [ + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "客户端/服务器架构": { + "children": [ + { + "硬件客户端/服务器架构": { + "data": { + "uuid": "python-5-419", + "seg": [ + [ + [ + "硬件", + "客户端", + "服务器", + "架构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "软件客户端/服务器架构": { + "data": { + "uuid": "python-5-420", + "seg": [ + [ + [ + "软件", + "客户端", + "服务器", + "架构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "银行出纳员作为服务器吗": { + "data": { + "uuid": "python-5-421", + "seg": [ + [ + [ + "银行", + "出纳员", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "客户端/服务器网络编程": { + "data": { + "uuid": "python-5-422", + "seg": [ + [ + [ + "客户端", + "服务器", + "网络", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-774", + "seg": [ + [ + [ + "客户端", + "服务器", + "架构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "套接字:通信端点": { + "children": [ + { + "套接字": { + "data": { + "uuid": "python-5-423", + "seg": [ + [ + [ + "套", + "接字" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7458257_53442924" + ] + } + } + } + } + }, + { + "套接字地址:主机-端口对": { + "data": { + "uuid": "python-5-424", + "seg": [ + [ + [ + "套", + "接字", + "地址" + ] + ], + [ + [ + "主机", + "端口" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_649065_454990" + ] + } + } + } + } + }, + { + "面向连接的套接字与无连接的套接字": { + "data": { + "uuid": "python-5-425", + "seg": [ + [ + [ + "面向", + "连接", + "套", + "接字" + ], + [ + "连接", + "套", + "接字" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-775", + "seg": [ + [ + [ + "套", + "接字" + ] + ], + [ + [ + "通信", + "端点" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7429472_53396351" + ] + } + } + } + } + }, + { + "Python中的网络编程": { + "children": [ + { + "socket模块函数": { + "data": { + "uuid": "python-5-426", + "seg": [ + [ + [ + "socket", + "模块", + "函数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "套接字对象(内置)方法": { + "data": { + "uuid": "python-5-427", + "seg": [ + [ + [ + "套", + "接字", + "对象", + "内置", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建TCP服务器": { + "data": { + "uuid": "python-5-428", + "seg": [ + [ + [ + "创建", + "tcp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建TCP客户端": { + "data": { + "uuid": "python-5-429", + "seg": [ + [ + [ + "创建", + "tcp", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "执行TCP服务器和客户端": { + "data": { + "uuid": "python-5-430", + "seg": [ + [ + [ + "执行", + "tcp", + "服务器" + ], + [ + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建UDP服务器": { + "data": { + "uuid": "python-5-431", + "seg": [ + [ + [ + "创建", + "udp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建UDP客户端": { + "data": { + "uuid": "python-5-432", + "seg": [ + [ + [ + "创建", + "udp", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "执行UDP服务器和客户端": { + "data": { + "uuid": "python-5-433", + "seg": [ + [ + [ + "执行", + "udp", + "服务器" + ], + [ + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "socket模块属性": { + "data": { + "uuid": "python-5-434", + "seg": [ + [ + [ + "socket", + "模块", + "属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-776", + "seg": [ + [ + [ + "python", + "网络", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "*SocketServer模块": { + "children": [ + { + "创建SocketServer TCP服务器": { + "data": { + "uuid": "python-5-435", + "seg": [ + [ + [ + "创建", + "socketserver", + "tcp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建SocketServer TCP客户端": { + "data": { + "uuid": "python-5-436", + "seg": [ + [ + [ + "创建", + "socketserver", + "tcp", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-777", + "seg": [ + [ + [ + "socketserver", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "*Twisted框架介绍": { + "children": [ + { + "创建Twisted Reactor TCP服务器": { + "data": { + "uuid": "python-5-437", + "seg": [ + [ + [ + "创建", + "twisted", + "reactor", + "tcp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建Twisted Reactor TCP客户端": { + "data": { + "uuid": "python-5-438", + "seg": [ + [ + [ + "创建", + "twisted", + "reactor", + "tcp", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-778", + "seg": [ + [ + [ + "twisted", + "框架", + "介绍" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "相关模块": { + "children": [ + { + "其他因特网客户端协议": { + "data": { + "uuid": "python-5-439", + "seg": [ + [ + [ + "因特网", + "客户端", + "协议" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-779", + "seg": [ + [ + [ + "相关", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-134", + "seg": [ + [ + [ + "网络", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发送邮件": { + "children": [ + { + "smtplib": { + "data": { + "uuid": "python-4-780", + "seg": [ + [ + [ + "smtplib" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-135", + "seg": [ + [ + [ + "发送", + "邮件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7460328_53445433" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-2-5", + "seg": [ + [ + [ + "基本技能" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web应用开发": { + "children": [ + { + "Web开发基础知识": { + "children": [ + { + "HTML/HTML5/CSS": { + "data": { + "uuid": "python-4-781", + "seg": [ + [ + [ + "html", + "html5", + "css" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "前端数据库和后台": { + "data": { + "uuid": "python-4-782", + "seg": [ + [ + [ + "前端", + "数据库" + ], + [ + "后台" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MVC架构": { + "data": { + "uuid": "python-4-783", + "seg": [ + [ + [ + "mvc", + "架构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "REST和Ajax": { + "data": { + "uuid": "python-4-784", + "seg": [ + [ + [ + "rest" + ], + [ + "ajax" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-136", + "seg": [ + [ + [ + "web", + "开发", + "基础知识" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Django": { + "children": [ + { + "Django简介": { + "data": { + "uuid": "python-4-785", + "seg": [ + [ + [ + "django", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7437466_53410367", + "8_1083861_1306291", + "8_688370_554707", + "8_748725_800795", + "8_651682_459116", + "8_381980_416173", + "8_762450_820720", + "8_952670_1104320" + ] + } + } + } + } + }, + { + "Django安装配置": { + "data": { + "uuid": "python-4-786", + "seg": [ + [ + [ + "django", + "安装", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DTL(Django Template Language)": { + "data": { + "uuid": "python-4-787", + "seg": [ + [ + [ + "dtl", + "django", + "template", + "language" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Django路由定义": { + "data": { + "uuid": "python-4-788", + "seg": [ + [ + [ + "django", + "路由", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Django请求数据解析": { + "data": { + "uuid": "python-4-789", + "seg": [ + [ + [ + "django", + "数据", + "解析" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_766403_827014" + ] + } + } + } + } + }, + { + "Django数据库操作": { + "data": { + "uuid": "python-4-790", + "seg": [ + [ + [ + "django", + "数据库", + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1085674_1292469" + ] + } + } + } + } + }, + { + "Django提交表单": { + "data": { + "uuid": "python-4-791", + "seg": [ + [ + [ + "django", + "提交", + "表单" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_184491_74159" + ] + } + } + } + } + }, + { + "Django Rest Framework": { + "data": { + "uuid": "python-4-792", + "seg": [ + [ + [ + "django", + "rest", + "framework" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署日志与安全": { + "data": { + "uuid": "python-4-793", + "seg": [ + [ + [ + "部署", + "日志" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Django开发案例": { + "data": { + "uuid": "python-4-794", + "seg": [ + [ + [ + "django", + "开发", + "案例" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_657376_469898" + ] + } + } + } + } + }, + { + "Web框架": { + "data": { + "uuid": "python-4-795", + "seg": [ + [ + [ + "web", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "“Hello World”应用(一个博客)": { + "data": { + "uuid": "python-4-796", + "seg": [ + [ + [ + "hello", + "world", + "博客" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7460089_53445205", + "8_7436137_53407413", + "8_7461790_53447039" + ] + } + } + } + } + }, + { + "创建模型来添加数据库服务": { + "children": [ + { + "设置数据库": { + "data": { + "uuid": "python-5-440", + "seg": [ + [ + [ + "设置", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-797", + "seg": [ + [ + [ + "创建", + "模型", + "添加", + "数据库", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Python应用shell": { + "children": [ + { + "在Django中使用Python shell": { + "data": { + "uuid": "python-5-441", + "seg": [ + [ + [ + "django", + "python", + "shell" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_183346_70166", + "8_7414018_53366293", + "8_738998_772326", + "8_692648_568195", + "8_160686_29253", + "8_774287_896750", + "8_361539_379489", + "8_1066832_1267071", + "8_1071910_1274045" + ] + } + } + } + } + }, + { + "测试数据模型": { + "data": { + "uuid": "python-5-442", + "seg": [ + [ + [ + "测试数据", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-798", + "seg": [ + [ + [ + "python", + "shell" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Django管理应用": { + "children": [ + { + "设置admin": { + "data": { + "uuid": "python-5-443", + "seg": [ + [ + [ + "设置", + "admin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用admin": { + "data": { + "uuid": "python-5-444", + "seg": [ + [ + [ + "admin" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_756182_812734" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-799", + "seg": [ + [ + [ + "django", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建博客的用户界面": { + "children": [ + { + "创建模板": { + "data": { + "uuid": "python-5-445", + "seg": [ + [ + [ + "创建", + "模板" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_955457_1100812", + "8_7439025_53413572", + "8_666538_484732", + "8_7448883_53429015", + "8_952306_1095059", + "8_175282_55740" + ] + } + } + } + } + }, + { + "创建URL模式": { + "data": { + "uuid": "python-5-446", + "seg": [ + [ + [ + "创建", + "url", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建视图函数": { + "data": { + "uuid": "python-5-447", + "seg": [ + [ + [ + "创建", + "视图", + "函数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-800", + "seg": [ + [ + [ + "创建", + "博客", + "用户界面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "改进输出": { + "data": { + "uuid": "python-4-801", + "seg": [ + [ + [ + "改进", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理用户输入": { + "children": [ + { + "添加URLconf项": { + "data": { + "uuid": "python-5-448", + "seg": [ + [ + [ + "添加", + "urlconf", + "项" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7445929_53425006" + ] + } + } + } + } + }, + { + "视图:处理用户输入": { + "data": { + "uuid": "python-5-449", + "seg": [ + [ + [ + "视图" + ] + ], + [ + [ + "用户", + "输入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7441674_53417978", + "8_698480_585495", + "8_3198067_21755191", + "8_7424772_53385987", + "8_692817_568872", + "8_753318_807745", + "8_7414002_53366446", + "8_1051269_1248608", + "8_693861_572500", + "8_1092910_1301655" + ] + } + } + } + } + }, + { + "跨站点请求伪造": { + "data": { + "uuid": "python-5-450", + "seg": [ + [ + [ + "跨", + "站点", + "伪造" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-802", + "seg": [ + [ + [ + "用户", + "输入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表单和模型表单": { + "children": [ + { + "Django表单简介": { + "data": { + "uuid": "python-5-451", + "seg": [ + [ + [ + "django", + "表单", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "模型表单示例": { + "data": { + "uuid": "python-5-452", + "seg": [ + [ + [ + "模型", + "表单", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用ModelForm来生成HTML表单": { + "data": { + "uuid": "python-5-453", + "seg": [ + [ + [ + "modelform", + "生成", + "html", + "表单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "处理ModelForm数据": { + "data": { + "uuid": "python-5-454", + "seg": [ + [ + [ + "modelform", + "数据" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_651597_459028" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-803", + "seg": [ + [ + [ + "表单" + ], + [ + "模型", + "表单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "视图进阶": { + "data": { + "uuid": "python-4-804", + "seg": [ + [ + [ + "视图", + "进阶" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "*改善外观": { + "data": { + "uuid": "python-4-805", + "seg": [ + [ + [ + "改善", + "外观" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "*中级Django应用:TweetApprover": { + "children": [ + { + "安装Twython库": { + "data": { + "uuid": "python-5-455", + "seg": [ + [ + [ + "安装", + "twython", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "URL结构": { + "data": { + "uuid": "python-5-456", + "seg": [ + [ + [ + "url", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_195024_104213", + "8_7397001_53341381", + "8_721802_718713", + "8_209203_146452", + "8_1096485_1308823", + "8_1052954_1250310", + "8_771701_834347", + "8_769361_830197", + "8_924392_1059258" + ] + } + } + } + } + }, + { + "数据模型": { + "data": { + "uuid": "python-5-457", + "seg": [ + [ + [ + "数据模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提交新推文以便审核": { + "data": { + "uuid": "python-5-458", + "seg": [ + [ + [ + "提交", + "新推文", + "审核" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "审核推文": { + "data": { + "uuid": "python-5-459", + "seg": [ + [ + [ + "审核", + "推文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-806", + "seg": [ + [ + [ + "中级", + "django" + ] + ], + [ + [ + "tweetapprover" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源": { + "data": { + "uuid": "python-4-807", + "seg": [ + [ + [ + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-137", + "seg": [ + [ + [ + "django" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tornado": { + "children": [ + { + "Tornado简介": { + "data": { + "uuid": "python-4-808", + "seg": [ + [ + [ + "tornado", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tornado安装配置": { + "data": { + "uuid": "python-4-809", + "seg": [ + [ + [ + "tornado", + "安装", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tornado提交表单": { + "data": { + "uuid": "python-4-810", + "seg": [ + [ + [ + "tornado", + "提交", + "表单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tornado模板": { + "data": { + "uuid": "python-4-811", + "seg": [ + [ + [ + "tornado", + "模板" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1094785_1305328" + ] + } + } + } + } + }, + { + "Tornado数据库操作": { + "data": { + "uuid": "python-4-812", + "seg": [ + [ + [ + "tornado", + "数据库", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Tornado异步Web服务": { + "data": { + "uuid": "python-4-813", + "seg": [ + [ + [ + "tornado", + "异步", + "web", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "外部服务认证(auth)": { + "data": { + "uuid": "python-4-814", + "seg": [ + [ + [ + "外部", + "服务", + "认证", + "auth" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署日志与安全": { + "data": { + "uuid": "python-4-815", + "seg": [ + [ + [ + "部署", + "日志" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tornado开发案例": { + "data": { + "uuid": "python-4-816", + "seg": [ + [ + [ + "tornado", + "开发", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-138", + "seg": [ + [ + [ + "tornado" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask": { + "children": [ + { + "Flask简介": { + "children": [ + { + "安装": { + "children": [ + { + "创建应用目录": { + "data": { + "uuid": "python-6-56", + "seg": [ + [ + [ + "创建", + "目录" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_202717_128131", + "8_7456868_53440938", + "8_7442525_53419397", + "8_7409725_53360159", + "8_7442552_53419432", + "8_7429909_53396846", + "8_7454604_53442021", + "8_218296_170253" + ] + } + } + } + } + }, + { + "虚拟环境": { + "data": { + "uuid": "python-6-57", + "seg": [ + [ + [ + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Python 3中创建虚拟环境": { + "data": { + "uuid": "python-6-58", + "seg": [ + [ + [ + "python", + "创建", + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Python 2中创建虚拟环境": { + "data": { + "uuid": "python-6-59", + "seg": [ + [ + [ + "python", + "创建", + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7455831_53439154" + ] + } + } + } + } + }, + { + "使用虚拟环境": { + "data": { + "uuid": "python-6-60", + "seg": [ + [ + [ + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用pip安装Python包": { + "data": { + "uuid": "python-6-61", + "seg": [ + [ + [ + "pip", + "安装", + "python", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_679094_525631", + "8_7427122_53391283", + "8_7442860_53419836", + "8_764175_822827", + "8_7437059_53409543", + "8_196761_109719", + "8_390629_432333", + "8_355090_368190", + "8_7423600_53383470", + "8_386747_425264" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-460", + "seg": [ + [ + [ + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用的基本结构": { + "children": [ + { + "初始化": { + "data": { + "uuid": "python-6-62", + "seg": [ + [ + [ + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "路由和视图函数": { + "data": { + "uuid": "python-6-63", + "seg": [ + [ + [ + "路由" + ], + [ + "视图", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个完整的应用": { + "data": { + "uuid": "python-6-64", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web开发服务器": { + "data": { + "uuid": "python-6-65", + "seg": [ + [ + [ + "web", + "开发", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "动态路由": { + "data": { + "uuid": "python-6-66", + "seg": [ + [ + [ + "动态", + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调试模式": { + "data": { + "uuid": "python-6-67", + "seg": [ + [ + [ + "调试模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命令行选项": { + "data": { + "uuid": "python-6-68", + "seg": [ + [ + [ + "命令行", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "请求–响应循环": { + "children": [ + { + "应用和请求上下文": { + "data": { + "uuid": "python-7-15", + "seg": [ + [ + [], + [ + "上下文" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "请求分派": { + "data": { + "uuid": "python-7-16", + "seg": [ + [ + [ + "分派" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "请求对象": { + "children": [ + { + "对象显示": { + "data": { + "uuid": "python-8-0", + "seg": [ + [ + [ + "对象", + "显示" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7444759_53423281", + "8_762208_820302", + "8_643866_444190", + "8_716549_711207", + "8_261104_272356", + "8_1097614_1311315", + "8_7421155_53379628", + "8_728244_739122", + "8_730504_745777", + "8_7436907_53409176" + ] + } + } + } + } + }, + { + "由字符串调用对象": { + "data": { + "uuid": "python-8-1", + "seg": [ + [ + [ + "字符串", + "调用", + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-7-17", + "seg": [ + [ + [ + "对象" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "请求钩子": { + "data": { + "uuid": "python-7-18", + "seg": [ + [ + [ + "钩子" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-6-69", + "seg": [ + [ + [ + "–", + "响应", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask扩展": { + "data": { + "uuid": "python-6-70", + "seg": [ + [ + [ + "flask", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-461", + "seg": [ + [ + [ + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模板": { + "children": [ + { + "Jinja2模板引擎": { + "children": [ + { + "渲染模板": { + "data": { + "uuid": "python-7-19", + "seg": [ + [ + [ + "渲染", + "模板" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7438391_53411733" + ] + } + } + } + } + }, + { + "变量": { + "children": [ + { + "匿名函数捕获变量值": { + "data": { + "uuid": "python-8-2", + "seg": [ + [ + [ + "匿名", + "函数", + "捕获", + "变量值" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "访问闭包中定义的变量": { + "data": { + "uuid": "python-8-3", + "seg": [ + [ + [ + "访问", + "闭", + "包中", + "定义", + "变量" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1069819_1271011", + "8_1073935_1276621", + "8_7156514_51352698", + "8_1054260_1251550", + "8_7431624_53400131", + "8_7416127_53370030", + "8_1071691_1273967", + "8_753434_807935" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-7-20", + "seg": [ + [ + [ + "变量" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_929579_1064422", + "8_6240932_43549673" + ] + } + } + } + } + }, + { + "控制结构": { + "data": { + "uuid": "python-7-21", + "seg": [ + [ + [ + "控制结构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-6-71", + "seg": [ + [ + [ + "jinja2", + "模板", + "引擎" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Flask-Bootstrap集成Bootstrap": { + "data": { + "uuid": "python-6-72", + "seg": [ + [ + [ + "flask", + "bootstrap", + "集成" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "自定义错误页面": { + "data": { + "uuid": "python-6-73", + "seg": [ + [ + [ + "自定义", + "页面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "链接": { + "data": { + "uuid": "python-6-74", + "seg": [ + [ + [ + "链接" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_703686_594233", + "8_1713444_7643137" + ] + } + } + } + } + }, + { + "静态文件": { + "data": { + "uuid": "python-6-75", + "seg": [ + [ + [ + "静态", + "文件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Flask-Moment本地化日期和时间": { + "data": { + "uuid": "python-6-76", + "seg": [ + [ + [ + "flask", + "moment", + "本地化", + "日期" + ], + [ + "时间" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-462", + "seg": [ + [ + [ + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web表单": { + "children": [ + { + "配置": { + "data": { + "uuid": "python-6-77", + "seg": [ + [ + [ + "配置" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_739252_773040" + ] + } + } + } + } + }, + { + "表单类": { + "data": { + "uuid": "python-6-78", + "seg": [ + [ + [ + "表单", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "把表单渲染成HTML": { + "data": { + "uuid": "python-6-79", + "seg": [ + [ + [ + "表单", + "渲染", + "成", + "html" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在视图函数中处理表单": { + "data": { + "uuid": "python-6-80", + "seg": [ + [ + [ + "视图", + "函数", + "表单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "重定向和用户会话": { + "data": { + "uuid": "python-6-81", + "seg": [ + [ + [ + "重定向" + ], + [ + "用户", + "话" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1051891_1249253" + ] + } + } + } + } + }, + { + "闪现消息": { + "data": { + "uuid": "python-6-82", + "seg": [ + [ + [ + "闪现", + "消息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-463", + "seg": [ + [ + [ + "web", + "表单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库": { + "children": [ + { + "SQL数据库": { + "data": { + "uuid": "python-6-83", + "seg": [ + [ + [ + "sql", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7417109_53371855", + "8_695156_577076", + "8_752908_807173", + "8_716386_709151", + "8_757299_812999" + ] + } + } + } + } + }, + { + "NoSQL数据库": { + "data": { + "uuid": "python-6-84", + "seg": [ + [ + [ + "nosql", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用SQL还是NoSQL": { + "data": { + "uuid": "python-6-85", + "seg": [ + [ + [ + "sql", + "nosql" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Python数据库框架": { + "data": { + "uuid": "python-6-86", + "seg": [ + [ + [ + "python", + "数据库", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Flask-SQLAlchemy管理数据库": { + "data": { + "uuid": "python-6-87", + "seg": [ + [ + [ + "flask", + "sqlalchemy", + "管理", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_754917_810330" + ] + } + } + } + } + }, + { + "定义模型": { + "data": { + "uuid": "python-6-88", + "seg": [ + [ + [ + "定义", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关系": { + "data": { + "uuid": "python-6-89", + "seg": [ + [ + [ + "关系" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_364424_386032", + "8_7442754_53419710" + ] + } + } + } + } + }, + { + "数据库操作": { + "children": [ + { + "创建表": { + "data": { + "uuid": "python-7-22", + "seg": [ + [ + [ + "创建", + "表" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7439428_53414033" + ] + } + } + } + } + }, + { + "插入行": { + "data": { + "uuid": "python-7-23", + "seg": [ + [ + [ + "插入" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7427643_53392268" + ] + } + } + } + } + }, + { + "修改行": { + "data": { + "uuid": "python-7-24", + "seg": [ + [ + [ + "修改" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7440964_53416676", + "8_7441644_53417884", + "8_7455081_53437878", + "8_7409818_53360277", + "8_1063698_1261807", + "8_7460375_53445444", + "8_7451749_53433253" + ] + } + } + } + } + }, + { + "删除行": { + "data": { + "uuid": "python-7-25", + "seg": [ + [ + [ + "删除" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "查询行": { + "data": { + "uuid": "python-7-26", + "seg": [ + [ + [ + "查询" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_762056_820181", + "8_730680_746320", + "8_1077441_1281847" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-90", + "seg": [ + [ + [ + "数据库", + "操作" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_691553_564711" + ] + } + } + } + } + }, + { + "在视图函数中操作数据库": { + "data": { + "uuid": "python-6-91", + "seg": [ + [ + [ + "视图", + "函数", + "操作", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1070486_1271996" + ] + } + } + } + } + }, + { + "集成Python shell": { + "data": { + "uuid": "python-6-92", + "seg": [ + [ + [ + "集成", + "python", + "shell" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Flask-Migrate实现数据库迁移": { + "children": [ + { + "创建迁移仓库": { + "data": { + "uuid": "python-7-27", + "seg": [ + [ + [ + "创建", + "迁移", + "仓库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建迁移脚本": { + "data": { + "uuid": "python-7-28", + "seg": [ + [ + [ + "创建", + "迁移", + "脚本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "更新数据库": { + "data": { + "uuid": "python-7-29", + "seg": [ + [ + [ + "更新", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_704602_598045", + "8_7451437_53432670", + "8_668340_488584", + "8_7464919_53451699", + "8_768617_829657", + "8_675714_511663", + "8_7410195_53360793", + "8_7434841_53405303", + "8_691951_565647", + "8_739249_773035" + ] + } + } + } + } + }, + { + "添加几个迁移": { + "data": { + "uuid": "python-7-30", + "seg": [ + [ + [ + "添加", + "迁移" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-6-93", + "seg": [ + [ + [ + "flask", + "migrate", + "数据库", + "迁移" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7408099_53358372" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-464", + "seg": [ + [ + [ + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "电子邮件": { + "children": [ + { + "电子邮件系统组件和协议": { + "data": { + "uuid": "python-6-94", + "seg": [ + [ + [ + "电子邮件系统", + "组件" + ], + [ + "协议" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发送电子邮件": { + "data": { + "uuid": "python-6-95", + "seg": [ + [ + [ + "发送", + "电子邮件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Python和SMTP": { + "data": { + "uuid": "python-6-96", + "seg": [ + [ + [ + "python" + ], + [ + "smtp" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "smtplib.SMTP类方法": { + "data": { + "uuid": "python-6-97", + "seg": [ + [ + [ + "smtplib", + "smtp", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式SMTP示例": { + "data": { + "uuid": "python-6-98", + "seg": [ + [ + [ + "交互式", + "smtp", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SMTP的其他内容": { + "data": { + "uuid": "python-6-99", + "seg": [ + [ + [ + "smtp", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接收电子邮件": { + "data": { + "uuid": "python-6-100", + "seg": [ + [ + [ + "接收", + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "POP和IMAP": { + "data": { + "uuid": "python-6-101", + "seg": [ + [ + [ + "pop" + ], + [ + "imap" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_990271_1157295" + ] + } + } + } + } + }, + { + "交互式POP3示例": { + "data": { + "uuid": "python-6-102", + "seg": [ + [ + [ + "交互式", + "pop3", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "poplib.POP3类方法": { + "data": { + "uuid": "python-6-103", + "seg": [ + [ + [ + "poplib", + "pop3", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "客户端程序SMTP和POP3示例": { + "data": { + "uuid": "python-6-104", + "seg": [ + [ + [ + "客户端程序", + "smtp" + ], + [ + "pop3", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式IMAP4示例": { + "data": { + "uuid": "python-6-105", + "seg": [ + [ + [ + "交互式", + "imap4", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "imaplib.IMAP4类中的常用方法": { + "data": { + "uuid": "python-6-106", + "seg": [ + [ + [ + "imaplib", + "imap4", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-465", + "seg": [ + [ + [ + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大型应用的结构": { + "children": [ + { + "配置选项": { + "data": { + "uuid": "python-6-107", + "seg": [ + [ + [ + "配置", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用包": { + "children": [ + { + "使用应用工厂函数": { + "data": { + "uuid": "python-7-31", + "seg": [ + [ + [ + "工厂", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在蓝本中实现应用功能": { + "data": { + "uuid": "python-7-32", + "seg": [ + [ + [ + "蓝本", + "功能" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7440574_53415903" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-108", + "seg": [ + [ + [ + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用脚本": { + "data": { + "uuid": "python-6-109", + "seg": [ + [ + [ + "脚本" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1068539_1269399" + ] + } + } + } + } + }, + { + "需求文件": { + "data": { + "uuid": "python-6-110", + "seg": [ + [ + [ + "需求", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7411331_53362231" + ] + } + } + } + } + }, + { + "单元测试": { + "children": [ + { + "blog应用的代码审查": { + "data": { + "uuid": "python-7-33", + "seg": [ + [ + [ + "blog", + "审查" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_735152_760194", + "8_735196_760295" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-111", + "seg": [ + [ + [ + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建数据库": { + "data": { + "uuid": "python-6-112", + "seg": [ + [ + [ + "创建", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行应用": { + "data": { + "uuid": "python-6-113", + "seg": [ + [ + [ + "运行" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1086136_1292942", + "8_716265_708908", + "8_7458112_53442587", + "8_774885_838887", + "8_919771_1056227", + "8_7461154_53446241", + "8_22_30", + "8_7428482_53394244" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-466", + "seg": [ + [ + [ + "大型", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-817", + "seg": [ + [ + [ + "flask", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask安装配置": { + "data": { + "uuid": "python-4-818", + "seg": [ + [ + [ + "flask", + "安装", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask实现HTTP请求与响应": { + "data": { + "uuid": "python-4-819", + "seg": [ + [ + [ + "flask", + "http" + ], + [ + "响应" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Flask cookie与session": { + "data": { + "uuid": "python-4-820", + "seg": [ + [ + [ + "flask", + "cookie" + ], + [ + "session" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask模板": { + "data": { + "uuid": "python-4-821", + "seg": [ + [ + [ + "flask", + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Flask提交表单": { + "data": { + "uuid": "python-4-822", + "seg": [ + [ + [ + "flask", + "提交", + "表单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask数据库操作": { + "data": { + "uuid": "python-4-823", + "seg": [ + [ + [ + "flask", + "数据库", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Bootstrap-Flask": { + "data": { + "uuid": "python-4-824", + "seg": [ + [ + [ + "bootstrap", + "flask" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask开发REST Web服务": { + "data": { + "uuid": "python-4-825", + "seg": [ + [ + [ + "flask", + "开发", + "rest", + "web", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "部署日志与安全": { + "data": { + "uuid": "python-4-826", + "seg": [ + [ + [ + "部署", + "日志" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask开发案例": { + "data": { + "uuid": "python-4-827", + "seg": [ + [ + [ + "flask", + "开发", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-139", + "seg": [ + [ + [ + "flask" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网站可视化": { + "children": [ + { + "Echarts": { + "data": { + "uuid": "python-4-828", + "seg": [ + [ + [ + "echarts" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-140", + "seg": [ + [ + [ + "网站", + "可视化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443233_53420572" + ] + } + } + } + } + }, + { + "网站高并发处理": { + "data": { + "uuid": "python-3-141", + "seg": [ + [ + [ + "网站", + "高", + "并发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web客户端和服务器": { + "children": [ + { + "Python Web客户端工具": { + "children": [ + { + "统一资源定位符": { + "data": { + "uuid": "python-5-467", + "seg": [ + [ + [ + "统一", + "资源", + "定位", + "符" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "urlparse模块": { + "data": { + "uuid": "python-5-468", + "seg": [ + [ + [ + "urlparse", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "urllib模块/包": { + "data": { + "uuid": "python-5-469", + "seg": [ + [ + [ + "urllib", + "模块", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用urllib2 HTTP验证的示例": { + "data": { + "uuid": "python-5-470", + "seg": [ + [ + [ + "urllib2", + "http", + "验证", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "将HTTP验证示例移植到Python 3中": { + "data": { + "uuid": "python-5-471", + "seg": [ + [ + [ + "http", + "验证", + "示例", + "移植", + "python" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-829", + "seg": [ + [ + [ + "python", + "web", + "客户端", + "工具" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web客户端": { + "children": [ + { + "一个简单的Web爬虫/蜘蛛/机器人": { + "data": { + "uuid": "python-5-472", + "seg": [ + [ + [ + "web", + "爬虫", + "蜘蛛", + "机器人" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解析Web页面": { + "data": { + "uuid": "python-5-473", + "seg": [ + [ + [ + "解析", + "web", + "页面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "可编程的Web浏览": { + "data": { + "uuid": "python-5-474", + "seg": [ + [ + [ + "可编程", + "web", + "浏览" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7403635_53352182", + "8_4645266_29327603", + "8_754240_809149", + "8_188816_86492", + "8_195519_105415", + "8_7445692_53425531" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-830", + "seg": [ + [ + [ + "web", + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web(HTTP)服务器": { + "data": { + "uuid": "python-4-831", + "seg": [ + [ + [ + "web", + "http", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-142", + "seg": [ + [ + [ + "web", + "客户端" + ], + [ + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web编程:CGI和WSGI": { + "children": [ + { + "帮助Web服务器处理客户端数据": { + "children": [ + { + "CGI简介": { + "data": { + "uuid": "python-5-475", + "seg": [ + [ + [ + "cgi", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CGI应用程序": { + "data": { + "uuid": "python-5-476", + "seg": [ + [ + [ + "cgi", + "应用程序" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1051667_1248934" + ] + } + } + } + } + }, + { + "cgi模块": { + "data": { + "uuid": "python-5-477", + "seg": [ + [ + [ + "cgi", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "cgitb模块": { + "data": { + "uuid": "python-5-478", + "seg": [ + [ + [ + "cgitb", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-832", + "seg": [ + [ + [ + "web", + "服务器", + "客户端", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "构建CGI应用程序": { + "children": [ + { + "构建Web服务器": { + "data": { + "uuid": "python-5-479", + "seg": [ + [ + [ + "构建", + "web", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "建立表单页": { + "data": { + "uuid": "python-5-480", + "seg": [ + [ + [ + "建立", + "表单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "生成结果页面": { + "data": { + "uuid": "python-5-481", + "seg": [ + [ + [ + "生成", + "页面" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_731376_748650", + "8_7411470_53362927" + ] + } + } + } + } + }, + { + "生成表单和结果页面": { + "data": { + "uuid": "python-5-482", + "seg": [ + [ + [ + "生成", + "表单" + ], + [ + "页面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "全面交互的Web站点": { + "data": { + "uuid": "python-5-483", + "seg": [ + [ + [ + "交互", + "web", + "站点" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-833", + "seg": [ + [ + [ + "构建", + "cgi", + "应用程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在CGI中使用Unicode": { + "data": { + "uuid": "python-4-834", + "seg": [ + [ + [ + "cgi", + "unicode" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高级CGI": { + "children": [ + { + "mulitipart表单提交和文件上传": { + "data": { + "uuid": "python-5-484", + "seg": [ + [ + [ + "mulitipart", + "表单", + "提交" + ], + [ + "文件", + "上传" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "多值字段": { + "data": { + "uuid": "python-5-485", + "seg": [ + [ + [ + "值", + "字段" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7423529_53383414" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-835", + "seg": [ + [ + [ + "高级", + "cgi" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WSGI简介": { + "children": [ + { + "动机(替代CGI)": { + "data": { + "uuid": "python-5-486", + "seg": [ + [ + [ + "动机", + "cgi" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "服务器集成": { + "data": { + "uuid": "python-5-487", + "seg": [ + [ + [ + "服务器", + "集成" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "外部进程": { + "data": { + "uuid": "python-5-488", + "seg": [ + [ + [ + "外部", + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WSGI简介": { + "data": { + "uuid": "python-5-489", + "seg": [ + [ + [ + "wsgi", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WSGI服务器": { + "data": { + "uuid": "python-5-490", + "seg": [ + [ + [ + "wsgi", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "参考服务器": { + "data": { + "uuid": "python-5-491", + "seg": [ + [ + [ + "参考", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WSGI应用示例": { + "data": { + "uuid": "python-5-492", + "seg": [ + [ + [ + "wsgi", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "中间件及封装WSGI应用": { + "data": { + "uuid": "python-5-493", + "seg": [ + [ + [ + "中间件" + ], + [ + "封装", + "wsgi" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在Python 3中使用WSGI": { + "data": { + "uuid": "python-5-494", + "seg": [ + [ + [ + "python", + "wsgi" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-836", + "seg": [ + [ + [ + "wsgi", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "现实世界中的Web开发": { + "data": { + "uuid": "python-4-837", + "seg": [ + [ + [ + "现实", + "世界", + "web", + "开发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-143", + "seg": [ + [ + [ + "web", + "编程" + ] + ], + [ + [ + "cgi" + ], + [ + "wsgi" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "云计算:Google App Engine": { + "children": [ + { + "云计算": { + "children": [ + { + "云计算服务的层次": { + "data": { + "uuid": "python-5-495", + "seg": [ + [ + [ + "云", + "计算", + "服务" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1101343_1315888", + "8_361735_379904", + "8_7455299_53438152", + "8_7442242_53419050", + "8_704280_596274", + "8_871758_1003858", + "8_7414737_53367681", + "8_7460113_53445158", + "8_7441446_53417680", + "8_7457823_53442301" + ] + } + } + } + } + }, + { + "App Engine": { + "data": { + "uuid": "python-5-496", + "seg": [ + [ + [ + "app", + "engine" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-838", + "seg": [ + [ + [ + "云", + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "沙盒和App Engine SDK": { + "data": { + "uuid": "python-4-839", + "seg": [ + [ + [ + "沙盒" + ], + [ + "app", + "engine", + "sdk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择一个App Engine框架": { + "data": { + "uuid": "python-4-840", + "seg": [ + [ + [ + "选择", + "app", + "engine", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python 2.7支持": { + "children": [ + { + "一般差异": { + "data": { + "uuid": "python-5-497", + "seg": [ + [ + [ + "差异" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码中的差异": { + "data": { + "uuid": "python-5-498", + "seg": [ + [ + [ + "差异" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-841", + "seg": [ + [ + [ + "python", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将“Hello World”改成一个简单的博客": { + "children": [ + { + "快速发现改动:30秒内将纯文本转成HTML": { + "data": { + "uuid": "python-5-499", + "seg": [ + [ + [ + "快速", + "改动" + ] + ], + [ + [ + "秒", + "纯", + "文本", + "转成", + "html" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加表单": { + "data": { + "uuid": "python-5-500", + "seg": [ + [ + [ + "添加", + "表单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加Datastore服务": { + "data": { + "uuid": "python-5-501", + "seg": [ + [ + [ + "添加", + "datastore", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代改进": { + "data": { + "uuid": "python-5-502", + "seg": [ + [ + [ + "迭代", + "改进" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发/SDK控制台": { + "data": { + "uuid": "python-5-503", + "seg": [ + [ + [ + "开发", + "sdk", + "控制台" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1091092_1298367", + "8_773680_837775" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-842", + "seg": [ + [ + [ + "hello", + "world", + "改成", + "博客" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加Memcache服务": { + "data": { + "uuid": "python-4-843", + "seg": [ + [ + [ + "添加", + "memcache", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加用户服务": { + "children": [ + { + "Google账号验证": { + "data": { + "uuid": "python-5-504", + "seg": [ + [ + [ + "google", + "账号", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "联合验证": { + "data": { + "uuid": "python-5-505", + "seg": [ + [ + [ + "联合", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-844", + "seg": [ + [ + [ + "添加", + "用户服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "远程API shell": { + "data": { + "uuid": "python-4-845", + "seg": [ + [ + [ + "远程", + "api", + "shell" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "问与答(Python实现)": { + "data": { + "uuid": "python-4-846", + "seg": [ + [ + [ + "问与答", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用XMPP发送即时消息": { + "data": { + "uuid": "python-4-847", + "seg": [ + [ + [ + "xmpp", + "发送", + "即时消息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "处理图片": { + "data": { + "uuid": "python-4-848", + "seg": [ + [ + [ + "图片" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7438990_53412450", + "8_7459349_53444221", + "8_7442696_53419721", + "8_7414390_53367057", + "8_374275_403137", + "8_752546_806642", + "8_7448299_53428436", + "8_7404178_53352993", + "8_7455037_53437803", + "8_7437984_53411246" + ] + } + } + } + } + }, + { + "任务队列(非定期任务)": { + "children": [ + { + "配置app.yaml": { + "data": { + "uuid": "python-5-506", + "seg": [ + [ + [ + "配置", + "app", + "yaml" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7423874_53384240" + ] + } + } + } + } + }, + { + "其他任务创建选项": { + "data": { + "uuid": "python-5-507", + "seg": [ + [ + [ + "创建", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "deferred包": { + "data": { + "uuid": "python-5-508", + "seg": [ + [ + [ + "deferred", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-849", + "seg": [ + [ + [ + "队列", + "定期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Appstats进行分析": { + "children": [ + { + "在app.yaml中添加标准处理程序": { + "data": { + "uuid": "python-5-509", + "seg": [ + [ + [ + "app", + "yaml", + "添加", + "标准", + "处理程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加自定义Admin Console页面": { + "data": { + "uuid": "python-5-510", + "seg": [ + [ + [ + "添加", + "自定义", + "admin", + "console", + "页面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "作为内置界面启用界面": { + "data": { + "uuid": "python-5-511", + "seg": [ + [ + [ + "内置", + "界面", + "启用" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-850", + "seg": [ + [ + [ + "appstats", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "URLfetch服务": { + "data": { + "uuid": "python-4-851", + "seg": [ + [ + [ + "urlfetch", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "问与答(无Python实现)": { + "children": [ + { + "Cron服务(计划任务作业)": { + "data": { + "uuid": "python-5-512", + "seg": [ + [ + [ + "cron", + "服务", + "计划" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "预热请求": { + "data": { + "uuid": "python-5-513", + "seg": [ + [ + [ + "预热" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "DoS保护": { + "data": { + "uuid": "python-5-514", + "seg": [ + [ + [ + "dos", + "保护" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-852", + "seg": [ + [ + [ + "问与答", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "厂商锁定": { + "data": { + "uuid": "python-4-853", + "seg": [ + [ + [ + "厂商", + "锁定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-144", + "seg": [ + [ + [ + "云", + "计算" + ] + ], + [ + [ + "google", + "app", + "engine" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web服务": { + "children": [ + { + "Yahoo!金融股票报价服务器": { + "data": { + "uuid": "python-4-854", + "seg": [ + [ + [ + "yahoo", + "!", + "金融", + "股票", + "报价", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Twitter微博": { + "children": [ + { + "社交网络": { + "data": { + "uuid": "python-5-515", + "seg": [ + [ + [ + "社交", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "稍微长一点的API组合应用示例": { + "data": { + "uuid": "python-5-516", + "seg": [ + [ + [ + "稍微", + "长", + "api", + "组合", + "示例" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_713334_704677" + ] + } + } + } + } + }, + { + "额外在线资源": { + "data": { + "uuid": "python-5-517", + "seg": [ + [ + [ + "额外", + "资源" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-855", + "seg": [ + [ + [ + "twitter", + "微", + "博" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_170090_46380" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-145", + "seg": [ + [ + [ + "web", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-6", + "seg": [ + [ + [ + "web", + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络爬虫": { + "children": [ + { + "基础概念": { + "children": [ + { + "什么是网络爬虫": { + "data": { + "uuid": "python-4-856", + "seg": [ + [ + [ + "网络", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTML与DOM树分析": { + "data": { + "uuid": "python-4-857", + "seg": [ + [ + [ + "html" + ], + [ + "dom", + "树", + "分析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "常用网络爬虫工具": { + "data": { + "uuid": "python-4-858", + "seg": [ + [ + [ + "网络", + "爬虫", + "工具" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "相关法律及注意事项": { + "data": { + "uuid": "python-4-859", + "seg": [ + [ + [ + "相关", + "法律" + ], + [ + "注意事项" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-146", + "seg": [ + [ + [ + "基础", + "概念" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "urllib": { + "children": [ + { + "处理异常": { + "children": [ + { + "捕获所有异常": { + "data": { + "uuid": "python-5-518", + "seg": [ + [ + [ + "捕获", + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "自定义异常": { + "data": { + "uuid": "python-5-519", + "seg": [ + [ + [ + "自定义", + "异常" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_6386932_44841254" + ] + } + } + } + } + }, + { + "抛出新的异常": { + "data": { + "uuid": "python-5-520", + "seg": [ + [ + [ + "出新", + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "异常重新抛出": { + "data": { + "uuid": "python-5-521", + "seg": [ + [ + [ + "异常", + "抛出" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_929826_1085958" + ] + } + } + } + } + }, + { + "警告信息": { + "data": { + "uuid": "python-5-522", + "seg": [ + [ + [ + "警告", + "信息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-860", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解析链接": { + "data": { + "uuid": "python-4-861", + "seg": [ + [ + [ + "解析", + "链接" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分析Robots协议": { + "data": { + "uuid": "python-4-862", + "seg": [ + [ + [ + "分析", + "robots", + "协议" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-147", + "seg": [ + [ + [ + "urllib" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_653772_462863" + ] + } + } + } + } + }, + { + "正则表达式": { + "children": [ + { + "RE(Regular Expression )": { + "data": { + "uuid": "python-4-863", + "seg": [ + [ + [ + "re", + "regular", + "expression" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_668566_488981", + "8_672138_498832", + "8_7424928_53386111", + "8_753780_808485", + "8_1098397_1312897", + "8_1094744_1305243", + "8_7439878_53414719", + "8_701803_591846", + "8_761543_819024", + "8_7415914_53369686" + ] + } + } + } + } + }, + { + "基础语法": { + "data": { + "uuid": "python-4-864", + "seg": [ + [ + [ + "基础", + "语法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "标签匹配常用规则": { + "data": { + "uuid": "python-4-865", + "seg": [ + [ + [ + "标签", + "匹配", + "规则" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "简介/动机": { + "data": { + "uuid": "python-4-866", + "seg": [ + [ + [ + "简介", + "动机" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "特殊符号和字符": { + "children": [ + { + "使用择一匹配符号匹配多个正则表达式模式": { + "data": { + "uuid": "python-5-523", + "seg": [ + [ + [ + "择", + "匹配", + "符号", + "正则表达式", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7405279_53354521", + "8_761083_818354", + "8_7435322_53405812", + "8_784911_859305", + "8_7435542_53406438", + "8_7406575_53356078", + "8_767572_827245" + ] + } + } + } + } + }, + { + "匹配任意单个字符": { + "data": { + "uuid": "python-5-524", + "seg": [ + [ + [ + "匹配", + "任意", + "单个", + "字符" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_190510_91081", + "8_1006707_1189937", + "8_366278_390476", + "8_7454693_53437382", + "8_1048886_1246358", + "8_701961_592060" + ] + } + } + } + } + }, + { + "从字符串起始或者结尾或者单词边界匹配": { + "data": { + "uuid": "python-5-525", + "seg": [ + [ + [ + "字符串", + "起始", + "结尾", + "单词", + "边界", + "匹配" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7434541_53404950" + ] + } + } + } + } + }, + { + "创建字符集": { + "data": { + "uuid": "python-5-526", + "seg": [ + [ + [ + "创建", + "字符集" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "限定范围和否定": { + "data": { + "uuid": "python-5-527", + "seg": [ + [ + [ + "限定" + ], + [ + "否定" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用闭包操作符实现存在性和频数匹配": { + "data": { + "uuid": "python-5-528", + "seg": [ + [ + [ + "闭", + "包", + "操作符", + "性" + ], + [ + "频数", + "匹配" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "表示字符集的特殊字符": { + "data": { + "uuid": "python-5-529", + "seg": [ + [ + [ + "字符集", + "特殊字符" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用圆括号指定分组": { + "data": { + "uuid": "python-5-530", + "seg": [ + [ + [ + "圆括号", + "指定", + "分组" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "扩展表示法": { + "data": { + "uuid": "python-5-531", + "seg": [ + [ + [ + "扩展", + "表示法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-867", + "seg": [ + [ + [ + "特殊符号" + ], + [ + "字符" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一些正则表达式示例": { + "data": { + "uuid": "python-4-868", + "seg": [ + [ + [ + "正则表达式", + "示例" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_382962_418431", + "8_740439_777853", + "8_7410924_53361808", + "8_1095585_1307055", + "8_7448938_53429049", + "8_355657_373057" + ] + } + } + } + } + }, + { + "更长的正则表达式示例": { + "data": { + "uuid": "python-4-869", + "seg": [ + [ + [ + "长", + "正则表达式", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-148", + "seg": [ + [ + [ + "正则表达式" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1100547_1315358", + "8_778104_844573", + "8_7415393_53368983", + "8_7423075_53382341", + "8_338270_335969", + "8_7427112_53391229" + ] + } + } + } + } + }, + { + "Beautiful Soup": { + "children": [ + { + "Beautiful Soup简介": { + "data": { + "uuid": "python-4-870", + "seg": [ + [ + [ + "beaut", + "if", + "ul", + "soup", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-871", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Beautiful Soup对象": { + "data": { + "uuid": "python-4-872", + "seg": [ + [ + [ + "beaut", + "if", + "ul", + "soup", + "对象" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7463735_53449864", + "8_7443152_53420192", + "8_649999_458243", + "8_377191_407648", + "8_892173_1030643", + "8_807188_902604", + "8_211342_151179", + "8_747913_799558", + "8_727955_739773", + "8_7402070_53349691" + ] + } + } + } + } + }, + { + "元素定位": { + "data": { + "uuid": "python-4-873", + "seg": [ + [ + [ + "元素", + "定位" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7451149_53432181" + ] + } + } + } + } + }, + { + "文档树遍历与搜索": { + "data": { + "uuid": "python-4-874", + "seg": [ + [ + [ + "文档", + "树", + "遍历" + ], + [ + "搜索" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-149", + "seg": [ + [ + [ + "beaut", + "if", + "ul", + "soup" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "lxml": { + "children": [ + { + "安装配置": { + "data": { + "uuid": "python-4-875", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "lxml.etree": { + "data": { + "uuid": "python-4-876", + "seg": [ + [ + [ + "lxml", + "etree" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_754198_809252" + ] + } + } + } + } + }, + { + "XPath选择器": { + "data": { + "uuid": "python-4-877", + "seg": [ + [ + [ + "xpath", + "选择器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "find/findall": { + "data": { + "uuid": "python-4-878", + "seg": [ + [ + [ + "find", + "findall" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_208443_144450", + "8_7413252_53365136", + "8_1057987_1255194" + ] + } + } + } + } + }, + { + "CSS选择器": { + "data": { + "uuid": "python-4-879", + "seg": [ + [ + [ + "css", + "选择器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解析HTML": { + "data": { + "uuid": "python-4-880", + "seg": [ + [ + [ + "解析", + "html" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-150", + "seg": [ + [ + [ + "lxml" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "requests": { + "children": [ + { + "安装配置": { + "data": { + "uuid": "python-4-881", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发送请求与HTTP请求类型": { + "data": { + "uuid": "python-4-882", + "seg": [ + [ + [ + "发送" + ], + [ + "http", + "类型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "传递URL参数": { + "data": { + "uuid": "python-4-883", + "seg": [ + [ + [ + "传递", + "url", + "参数" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_774861_838822", + "8_1093257_1302452" + ] + } + } + } + } + }, + { + "响应内容": { + "data": { + "uuid": "python-4-884", + "seg": [ + [ + [ + "响应", + "内容" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "定制请求头": { + "data": { + "uuid": "python-4-885", + "seg": [ + [ + [ + "定制", + "头" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_5609600_36999481" + ] + } + } + } + } + }, + { + "响应状态码": { + "data": { + "uuid": "python-4-886", + "seg": [ + [ + [ + "响应", + "状态", + "码" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Cookie": { + "data": { + "uuid": "python-4-887", + "seg": [ + [ + [ + "cookie" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_752483_806545", + "8_7415720_53369306", + "8_770642_832598", + "8_7396625_53342170" + ] + } + } + } + } + }, + { + "POST请求": { + "data": { + "uuid": "python-4-888", + "seg": [ + [ + [ + "post" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7423932_53384321", + "8_687711_551865", + "8_391843_434731", + "8_4647458_29331787", + "8_765257_824115", + "8_172553_50263", + "8_1587676_6273215", + "8_682674_537528", + "8_7422520_53381132", + "8_7444289_53422492" + ] + } + } + } + } + }, + { + "身份认证": { + "data": { + "uuid": "python-4-889", + "seg": [ + [ + [ + "身份", + "认证" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基本用法": { + "data": { + "uuid": "python-4-890", + "seg": [ + [ + [ + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高级用法": { + "data": { + "uuid": "python-4-891", + "seg": [ + [ + [ + "高级", + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-151", + "seg": [ + [ + [ + "requests" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Selenium": { + "children": [ + { + "Selenium简介": { + "data": { + "uuid": "python-4-892", + "seg": [ + [ + [ + "selenium", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_205499_136603", + "8_684996_544033", + "8_1061932_1259781", + "8_685636_546385", + "8_755595_811113", + "8_7416461_53370578", + "8_7398853_53345968", + "8_695019_576496", + "8_1050905_1248037", + "8_713146_704846" + ] + } + } + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-893", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "单元素定位(find_element_id/name/xpath)": { + "data": { + "uuid": "python-4-894", + "seg": [ + [ + [ + "单", + "元素", + "定位", + "find", + "element", + "id", + "name", + "xpath" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "多元素定位(find_elements_id/name/xpath)": { + "data": { + "uuid": "python-4-895", + "seg": [ + [ + [ + "元素", + "定位", + "find", + "elements", + "id", + "name", + "xpath" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "常用方法和属性": { + "children": [ + { + "可管理属性创建": { + "data": { + "uuid": "python-5-532", + "seg": [ + [ + [ + "管理", + "属性", + "创建" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_780083_849310", + "8_755033_810294", + "8_7443270_53420343", + "8_1061469_1259323", + "8_659631_473394", + "8_7458332_53442871", + "8_1058519_1255841" + ] + } + } + } + } + }, + { + "延迟计算属性": { + "data": { + "uuid": "python-5-533", + "seg": [ + [ + [ + "延迟", + "计算", + "属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "属性的代理访问": { + "data": { + "uuid": "python-5-534", + "seg": [ + [ + [ + "属性", + "代理", + "访问" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7429847_53396777", + "8_7409419_53359857", + "8_1034072_1229420" + ] + } + } + } + } + }, + { + "创建用于计算的属性": { + "data": { + "uuid": "python-5-535", + "seg": [ + [ + [ + "创建", + "用于", + "计算", + "属性" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_679279_525937" + ] + } + } + } + } + }, + { + "为属性添加安全保护机制": { + "data": { + "uuid": "python-5-536", + "seg": [ + [ + [ + "属性", + "添加", + "保护", + "机制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-896", + "seg": [ + [ + [ + "方法" + ], + [ + "属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "键盘和鼠标操作": { + "data": { + "uuid": "python-4-897", + "seg": [ + [ + [ + "键盘" + ], + [ + "鼠标", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WebDriver API": { + "data": { + "uuid": "python-4-898", + "seg": [ + [ + [ + "webdriver", + "api" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7457773_53444167", + "8_365324_388330", + "8_729159_741885", + "8_2072943_15672082", + "8_932000_1067512", + "8_677365_533575", + "8_766260_825408", + "8_7427274_53391428", + "8_1095331_1306601", + "8_7406568_53358136" + ] + } + } + } + } + }, + { + "表单交互": { + "data": { + "uuid": "python-4-899", + "seg": [ + [ + [ + "表单", + "交互" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-152", + "seg": [ + [ + [ + "selenium" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7439772_53414502", + "8_7444444_53423148" + ] + } + } + } + } + }, + { + "Scrapy框架": { + "children": [ + { + "Scrapy简介": { + "data": { + "uuid": "python-4-900", + "seg": [ + [ + [ + "scrapy", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-901", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy框架组成": { + "data": { + "uuid": "python-4-902", + "seg": [ + [ + [ + "scrapy", + "框架" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_864146_1008920", + "8_1069899_1271082", + "8_7436291_53407876", + "8_1060422_1258109", + "8_246175_237399" + ] + } + } + } + } + }, + { + "Item Pipeline": { + "data": { + "uuid": "python-4-903", + "seg": [ + [ + [ + "item", + "pipeline" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7451131_53432232" + ] + } + } + } + } + }, + { + "Downloader": { + "data": { + "uuid": "python-4-904", + "seg": [ + [ + [ + "downloader" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Spiders": { + "data": { + "uuid": "python-4-905", + "seg": [ + [ + [ + "spiders" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scheduler": { + "data": { + "uuid": "python-4-906", + "seg": [ + [ + [ + "scheduler" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy框架介绍": { + "data": { + "uuid": "python-4-907", + "seg": [ + [ + [ + "scrapy", + "框架", + "介绍" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy入门": { + "data": { + "uuid": "python-4-908", + "seg": [ + [ + [ + "scrapy", + "入门" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_383654_419220", + "8_211544_151579", + "8_7418184_53374052", + "8_7434858_53405383", + "8_1096070_1308002", + "8_7434575_53405198", + "8_7398176_53344065", + "8_942820_1098375", + "8_765164_824280", + "8_761571_823600" + ] + } + } + } + } + }, + { + "Selector的用法": { + "data": { + "uuid": "python-4-909", + "seg": [ + [ + [ + "selector", + "用法" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_754765_809848" + ] + } + } + } + } + }, + { + "Spider的用法": { + "data": { + "uuid": "python-4-910", + "seg": [ + [ + [ + "spider", + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Downloader Middleware的用法": { + "data": { + "uuid": "python-4-911", + "seg": [ + [ + [ + "downloader", + "middleware", + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Spider Middleware的用法": { + "data": { + "uuid": "python-4-912", + "seg": [ + [ + [ + "spider", + "middleware", + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Item Pipeline的用法": { + "data": { + "uuid": "python-4-913", + "seg": [ + [ + [ + "item", + "pipeline", + "用法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy对接Selenium": { + "data": { + "uuid": "python-4-914", + "seg": [ + [ + [ + "scrapy", + "对接", + "selenium" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1093671_1303392", + "8_1093668_1303799" + ] + } + } + } + } + }, + { + "Scrapy对接Splash": { + "data": { + "uuid": "python-4-915", + "seg": [ + [ + [ + "scrapy", + "对接", + "splash" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy通用爬虫": { + "data": { + "uuid": "python-4-916", + "seg": [ + [ + [ + "scrapy", + "通用", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_757267_837865", + "8_724246_768617", + "8_7425797_53387797", + "8_1091167_1298646", + "8_1078656_1283150", + "8_1069889_1271069" + ] + } + } + } + } + }, + { + "Scrapyrt的使用": { + "data": { + "uuid": "python-4-917", + "seg": [ + [ + [ + "scrapyrt" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy对接Docker": { + "data": { + "uuid": "python-4-918", + "seg": [ + [ + [ + "scrapy", + "对接", + "docker" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy爬取新浪微博": { + "data": { + "uuid": "python-4-919", + "seg": [ + [ + [ + "scrapy", + "爬取", + "新浪", + "微", + "博" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7448773_53428923", + "8_743866_789024", + "8_1021180_1213851", + "8_7456124_53439642" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-153", + "seg": [ + [ + [ + "scrapy", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据存储": { + "children": [ + { + "文件存储": { + "children": [ + { + "TXT文本存储": { + "data": { + "uuid": "python-5-537", + "seg": [ + [ + [ + "txt", + "文本", + "存储" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1103628_1317996", + "8_380993_414331", + "8_234697_212125", + "8_768355_828452", + "8_697827_584246", + "8_235201_213566", + "8_763820_822374", + "8_7403541_53352081", + "8_7445215_53423774", + "8_235166_213464" + ] + } + } + } + } + }, + { + "JSON文件存储": { + "data": { + "uuid": "python-5-538", + "seg": [ + [ + [ + "json", + "文件", + "存储" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7417450_53372686", + "8_750769_804067" + ] + } + } + } + } + }, + { + "CSV文件存储": { + "data": { + "uuid": "python-5-539", + "seg": [ + [ + [ + "csv", + "文件", + "存储" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7417591_53372876", + "8_7453987_53436657", + "8_7404006_53352798", + "8_7403364_53351766" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-920", + "seg": [ + [ + [ + "文件", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库存储": { + "data": { + "uuid": "python-4-921", + "seg": [ + [ + [ + "数据库", + "存储" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_758094_813841" + ] + } + } + } + } + }, + { + "关系型数据库存储": { + "children": [ + { + "MySQL的存储": { + "data": { + "uuid": "python-5-540", + "seg": [ + [ + [ + "mysql", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MongoDB存储": { + "data": { + "uuid": "python-5-541", + "seg": [ + [ + [ + "mongodb", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Redis存储": { + "data": { + "uuid": "python-5-542", + "seg": [ + [ + [ + "redis", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-922", + "seg": [ + [ + [ + "关系", + "数据库", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-154", + "seg": [ + [ + [ + "数据", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "渲染动态网页": { + "children": [ + { + "WebKit/Selenium/headless/PhantomJS": { + "data": { + "uuid": "python-4-923", + "seg": [ + [ + [ + "webkit", + "selenium", + "headless", + "phantomjs" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-155", + "seg": [ + [ + [ + "渲染", + "动态", + "网页" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "表单交互处理": { + "data": { + "uuid": "python-3-156", + "seg": [ + [ + [ + "表单", + "交互" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "超时异常处理": { + "children": [ + { + "timeout": { + "data": { + "uuid": "python-4-924", + "seg": [ + [ + [ + "timeout" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1915276_9431451" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-157", + "seg": [ + [ + [ + "超时", + "异常" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "验证码处理": { + "children": [ + { + "自动输入/OCR字符识别": { + "data": { + "uuid": "python-4-925", + "seg": [ + [ + [ + "自动", + "输入", + "ocr", + "字符识别" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-158", + "seg": [ + [ + [ + "验证码" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "高并发处理": { + "data": { + "uuid": "python-3-159", + "seg": [ + [ + [ + "高", + "并发" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7443750_53421074" + ] + } + } + } + } + }, + { + "多线程爬虫": { + "data": { + "uuid": "python-3-160", + "seg": [ + [ + [ + "多线程", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "开发环境配置": { + "children": [ + { + "Python 3的安装": { + "children": [ + { + "Windows下的安装": { + "data": { + "uuid": "python-5-543", + "seg": [ + [ + [ + "windows", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Linux下的安装": { + "data": { + "uuid": "python-5-544", + "seg": [ + [ + [ + "linux", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7438304_53411649" + ] + } + } + } + } + }, + { + "Mac下的安装": { + "data": { + "uuid": "python-5-545", + "seg": [ + [ + [ + "mac", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7459734_53446642" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-926", + "seg": [ + [ + [ + "python", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "请求库的安装": { + "children": [ + { + "requests的安装": { + "data": { + "uuid": "python-5-546", + "seg": [ + [ + [ + "requests", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_751015_804469", + "8_361376_379175", + "8_7413326_53365235" + ] + } + } + } + } + }, + { + "Selenium的安装": { + "data": { + "uuid": "python-5-547", + "seg": [ + [ + [ + "selenium", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ChromeDriver的安装": { + "data": { + "uuid": "python-5-548", + "seg": [ + [ + [ + "chromedriver", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7433969_53404330", + "8_697389_583100" + ] + } + } + } + } + }, + { + "GeckoDriver的安装": { + "data": { + "uuid": "python-5-549", + "seg": [ + [ + [ + "geckodriver", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PhantomJS的安装": { + "data": { + "uuid": "python-5-550", + "seg": [ + [ + [ + "phantomjs", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_686807_549071" + ] + } + } + } + } + }, + { + "aiohttp的安装": { + "data": { + "uuid": "python-5-551", + "seg": [ + [ + [ + "aiohttp", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7428809_53395164" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-927", + "seg": [ + [ + [ + "库", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_354805_367533" + ] + } + } + } + } + }, + { + "解析库的安装": { + "children": [ + { + "lxml的安装": { + "data": { + "uuid": "python-5-552", + "seg": [ + [ + [ + "lxml", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Beautiful Soup的安装": { + "data": { + "uuid": "python-5-553", + "seg": [ + [ + [ + "beaut", + "if", + "ul", + "soup", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "pyquery的安装": { + "data": { + "uuid": "python-5-554", + "seg": [ + [ + [ + "pyquery", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "tesserocr的安装": { + "data": { + "uuid": "python-5-555", + "seg": [ + [ + [ + "tesserocr", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_6131139_41057836", + "8_7432068_53400971" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-928", + "seg": [ + [ + [ + "解析", + "库", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据库的安装": { + "children": [ + { + "MySQL的安装": { + "data": { + "uuid": "python-5-556", + "seg": [ + [ + [ + "mysql", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "MongoDB的安装": { + "data": { + "uuid": "python-5-557", + "seg": [ + [ + [ + "mongodb", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Redis的安装": { + "data": { + "uuid": "python-5-558", + "seg": [ + [ + [ + "redis", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-929", + "seg": [ + [ + [ + "数据库", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "存储库的安装": { + "children": [ + { + "PyMySQL的安装": { + "data": { + "uuid": "python-5-559", + "seg": [ + [ + [ + "pymysql", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyMongo的安装": { + "data": { + "uuid": "python-5-560", + "seg": [ + [ + [ + "pymongo", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "redis-py的安装": { + "data": { + "uuid": "python-5-561", + "seg": [ + [ + [ + "redis", + "py", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7434952_53405525", + "8_647666_451734" + ] + } + } + } + } + }, + { + "RedisDump的安装": { + "data": { + "uuid": "python-5-562", + "seg": [ + [ + [ + "redisdump", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-930", + "seg": [ + [ + [ + "存储", + "库", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web库的安装": { + "children": [ + { + "Flask的安装": { + "data": { + "uuid": "python-5-563", + "seg": [ + [ + [ + "flask", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Tornado的安装": { + "data": { + "uuid": "python-5-564", + "seg": [ + [ + [ + "tornado", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-931", + "seg": [ + [ + [ + "web", + "库", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "App爬取相关库的安装": { + "children": [ + { + "Charles的安装": { + "data": { + "uuid": "python-5-565", + "seg": [ + [ + [ + "charles", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "mitmproxy的安装": { + "data": { + "uuid": "python-5-566", + "seg": [ + [ + [ + "mitmproxy", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Appium的安装": { + "data": { + "uuid": "python-5-567", + "seg": [ + [ + [ + "appium", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_197744_112299" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-932", + "seg": [ + [ + [ + "app", + "爬取", + "相关", + "库", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "爬虫框架的安装": { + "children": [ + { + "pyspider的安装": { + "data": { + "uuid": "python-5-568", + "seg": [ + [ + [ + "pyspider", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy的安装": { + "data": { + "uuid": "python-5-569", + "seg": [ + [ + [ + "scrapy", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy-Splash的安装": { + "data": { + "uuid": "python-5-570", + "seg": [ + [ + [ + "scrapy", + "splash", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy-Redis的安装": { + "data": { + "uuid": "python-5-571", + "seg": [ + [ + [ + "scrapy", + "redis", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-933", + "seg": [ + [ + [ + "爬虫", + "框架", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "部署相关库的安装": { + "children": [ + { + "Docker的安装": { + "data": { + "uuid": "python-5-572", + "seg": [ + [ + [ + "docker", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapyd的安装": { + "data": { + "uuid": "python-5-573", + "seg": [ + [ + [ + "scrapyd", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapyd-Client的安装": { + "data": { + "uuid": "python-5-574", + "seg": [ + [ + [ + "scrapyd", + "client", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapyd API的安装": { + "data": { + "uuid": "python-5-575", + "seg": [ + [ + [ + "scrapyd", + "api", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapyrt的安装": { + "data": { + "uuid": "python-5-576", + "seg": [ + [ + [ + "scrapyrt", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Gerapy的安装": { + "data": { + "uuid": "python-5-577", + "seg": [ + [ + [ + "gerapy", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-934", + "seg": [ + [ + [ + "部署", + "相关", + "库", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-161", + "seg": [ + [ + [ + "开发", + "环境", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "爬虫基础": { + "children": [ + { + "HTTP基本原理": { + "children": [ + { + "URI和URL": { + "data": { + "uuid": "python-5-578", + "seg": [ + [ + [ + "uri" + ], + [ + "url" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7430199_53397223", + "8_719861_714505", + "8_7427810_53392620" + ] + } + } + } + } + }, + { + "超文本": { + "data": { + "uuid": "python-5-579", + "seg": [ + [ + [ + "超文本" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP和HTTPS": { + "data": { + "uuid": "python-5-580", + "seg": [ + [ + [ + "http" + ], + [ + "https" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP请求过程": { + "data": { + "uuid": "python-5-581", + "seg": [ + [ + [ + "http", + "过程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7450986_53432049", + "8_7445946_53425003", + "8_7442207_53419000", + "8_7453839_53436522", + "8_7443648_53420843", + "8_7453813_53436513" + ] + } + } + } + } + }, + { + "请求": { + "data": { + "uuid": "python-5-582", + "seg": [ + [ + [] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "响应": { + "data": { + "uuid": "python-5-583", + "seg": [ + [ + [ + "响应" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-935", + "seg": [ + [ + [ + "http", + "基本原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网页基础": { + "children": [ + { + "网页的组成": { + "data": { + "uuid": "python-5-584", + "seg": [ + [ + [ + "网页" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_660322_474556", + "8_7417878_53373647", + "8_164266_37881", + "8_7450618_53431472", + "8_960372_1109276", + "8_771109_833647", + "8_1092994_1301945", + "8_831188_929764", + "8_7445361_53423916", + "8_7439490_53414003" + ] + } + } + } + } + }, + { + "网页的结构": { + "data": { + "uuid": "python-5-585", + "seg": [ + [ + [ + "网页", + "结构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "节点树及节点间的关系": { + "data": { + "uuid": "python-5-586", + "seg": [ + [ + [ + "节点", + "树及", + "关系" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "选择器": { + "data": { + "uuid": "python-5-587", + "seg": [ + [ + [ + "选择器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-936", + "seg": [ + [ + [ + "网页", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "爬虫的基本原理": { + "children": [ + { + "爬虫概述": { + "data": { + "uuid": "python-5-588", + "seg": [ + [ + [ + "爬虫", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_720123_714441", + "8_7400947_53349142", + "8_235454_214439", + "8_200546_121145", + "8_7409933_53360666", + "8_7451354_53432612", + "8_806966_902585", + "8_7411487_53411305", + "8_7405027_53354182", + "8_7443585_53420767" + ] + } + } + } + } + }, + { + "能抓怎样的数据": { + "data": { + "uuid": "python-5-589", + "seg": [ + [ + [ + "抓", + "数据" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7434252_53404652", + "8_900102_1036909", + "8_978354_1138230", + "8_7460759_53445859" + ] + } + } + } + } + }, + { + "JavaScript渲染页面": { + "data": { + "uuid": "python-5-590", + "seg": [ + [ + [ + "javascript", + "渲染", + "页面" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7411292_53362136" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-937", + "seg": [ + [ + [ + "爬虫", + "基本原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "会话和Cookies": { + "children": [ + { + "静态网页和动态网页": { + "data": { + "uuid": "python-5-591", + "seg": [ + [ + [ + "静态", + "网页" + ], + [ + "动态", + "网页" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_717310_710610", + "8_718834_713136" + ] + } + } + } + } + }, + { + "无状态HTTP": { + "data": { + "uuid": "python-5-592", + "seg": [ + [ + [ + "状态", + "http" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "常见误区": { + "data": { + "uuid": "python-5-593", + "seg": [ + [ + [ + "常见", + "误区" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-938", + "seg": [ + [ + [ + "会话" + ], + [ + "cookies" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1017546_1210331", + "8_7411172_53361923" + ] + } + } + } + } + }, + { + "代理的基本原理": { + "children": [ + { + "基本原理": { + "data": { + "uuid": "python-5-594", + "seg": [ + [ + [ + "基本原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "代理的作用": { + "data": { + "uuid": "python-5-595", + "seg": [ + [ + [ + "代理", + "作用" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_4646199_29329661", + "8_771587_834191" + ] + } + } + } + } + }, + { + "爬虫代理": { + "data": { + "uuid": "python-5-596", + "seg": [ + [ + [ + "爬虫", + "代理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_5995588_40761369" + ] + } + } + } + } + }, + { + "代理分类": { + "data": { + "uuid": "python-5-597", + "seg": [ + [ + [ + "代理", + "分类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "常见代理设置": { + "data": { + "uuid": "python-5-598", + "seg": [ + [ + [ + "常见", + "代理", + "设置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-939", + "seg": [ + [ + [ + "代理", + "基本原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-162", + "seg": [ + [ + [ + "爬虫", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基本库的使用": { + "children": [ + { + "抓取猫眼电影排行": { + "data": { + "uuid": "python-4-940", + "seg": [ + [ + [ + "抓取", + "猫眼", + "电影", + "排行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-163", + "seg": [ + [ + [ + "库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解析库的使用": { + "children": [ + { + "使用XPath": { + "data": { + "uuid": "python-4-941", + "seg": [ + [ + [ + "xpath" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7460213_53445277", + "8_7399983_53347616", + "8_692921_569357", + "8_1104083_1318410", + "8_715470_707880", + "8_7423280_53383014", + "8_7400211_53347988", + "8_721190_726161", + "8_1058620_1255953", + "8_716927_710071" + ] + } + } + } + } + }, + { + "使用pyquery": { + "data": { + "uuid": "python-4-942", + "seg": [ + [ + [ + "pyquery" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-164", + "seg": [ + [ + [ + "解析", + "库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Ajax数据爬取": { + "children": [ + { + "什么是Ajax": { + "data": { + "uuid": "python-4-943", + "seg": [ + [ + [ + "ajax" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_770576_832435", + "8_691716_564774" + ] + } + } + } + } + }, + { + "Ajax分析方法": { + "data": { + "uuid": "python-4-944", + "seg": [ + [ + [ + "ajax", + "分析方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Ajax结果提取": { + "data": { + "uuid": "python-4-945", + "seg": [ + [ + [ + "ajax", + "提取" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分析Ajax爬取今日头条街拍美图": { + "data": { + "uuid": "python-4-946", + "seg": [ + [ + [ + "分析", + "ajax", + "爬取", + "今日", + "头条", + "街", + "拍", + "美", + "图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-165", + "seg": [ + [ + [ + "ajax", + "数据", + "爬取" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "动态渲染页面爬取": { + "children": [ + { + "Splash的使用": { + "data": { + "uuid": "python-4-947", + "seg": [ + [ + [ + "splash" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Splash负载均衡配置": { + "data": { + "uuid": "python-4-948", + "seg": [ + [ + [ + "splash", + "负载", + "均衡", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Selenium爬取淘宝商品": { + "data": { + "uuid": "python-4-949", + "seg": [ + [ + [ + "selenium", + "爬取", + "淘宝", + "商品" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7453265_53436013", + "8_7453270_53435997" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-166", + "seg": [ + [ + [ + "动态", + "渲染", + "页面", + "爬取" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "验证码的识别": { + "children": [ + { + "图形验证码的识别": { + "data": { + "uuid": "python-4-950", + "seg": [ + [ + [ + "图形", + "验证码", + "识别" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "极验滑动验证码的识别": { + "data": { + "uuid": "python-4-951", + "seg": [ + [ + [ + "极验", + "滑动", + "验证码", + "识别" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1081735_1307459" + ] + } + } + } + } + }, + { + "点触验证码的识别": { + "data": { + "uuid": "python-4-952", + "seg": [ + [ + [ + "点触", + "验证码", + "识别" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1068640_1269512", + "8_748828_802140", + "8_7410581_53423588" + ] + } + } + } + } + }, + { + "微博宫格验证码的识别": { + "data": { + "uuid": "python-4-953", + "seg": [ + [ + [ + "微", + "博", + "宫格", + "验证码", + "识别" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-167", + "seg": [ + [ + [ + "验证码", + "识别" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "代理的使用": { + "children": [ + { + "代理的设置": { + "data": { + "uuid": "python-4-954", + "seg": [ + [ + [ + "代理", + "设置" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7429339_53396148", + "8_766524_825819" + ] + } + } + } + } + }, + { + "代理池的维护": { + "data": { + "uuid": "python-4-955", + "seg": [ + [ + [ + "代理", + "池", + "维护" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "付费代理的使用": { + "data": { + "uuid": "python-4-956", + "seg": [ + [ + [ + "付费", + "代理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ADSL拨号代理": { + "data": { + "uuid": "python-4-957", + "seg": [ + [ + [ + "adsl", + "拨号", + "代理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用代理爬取微信公众号文章": { + "data": { + "uuid": "python-4-958", + "seg": [ + [ + [ + "代理", + "爬取", + "微信", + "公众", + "文章" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-168", + "seg": [ + [ + [ + "代理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "模拟登录": { + "children": [ + { + "模拟登录并爬取GitHub": { + "data": { + "uuid": "python-4-959", + "seg": [ + [ + [ + "模拟", + "登录", + "爬取", + "github" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_383201_418473", + "8_653244_461742", + "8_701953_592099", + "8_714108_706611", + "8_7460605_53445717", + "8_1095426_1306710", + "8_1091500_1298995" + ] + } + } + } + } + }, + { + "Cookies池的搭建": { + "data": { + "uuid": "python-4-960", + "seg": [ + [ + [ + "cookies", + "池", + "搭建" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-169", + "seg": [ + [ + [ + "模拟", + "登录" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "App的爬取": { + "children": [ + { + "Charles的使用": { + "data": { + "uuid": "python-4-961", + "seg": [ + [ + [ + "charles" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "mitmproxy的使用": { + "data": { + "uuid": "python-4-962", + "seg": [ + [ + [ + "mitmproxy" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1092999_1301928" + ] + } + } + } + } + }, + { + "mitmdump爬取“得到”App电子书": { + "data": { + "uuid": "python-4-963", + "seg": [ + [ + [ + "mitmdump", + "爬取", + "app", + "电子书" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_719435_726258", + "8_703127_593834", + "8_761117_822129", + "8_1095098_1305987" + ] + } + } + } + } + }, + { + "Appium的基本使用": { + "data": { + "uuid": "python-4-964", + "seg": [ + [ + [ + "appium" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7418619_53374913" + ] + } + } + } + } + }, + { + "Appium爬取微信朋友圈": { + "data": { + "uuid": "python-4-965", + "seg": [ + [ + [ + "appium", + "爬取", + "微信", + "朋友圈" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7423976_53384464", + "8_1053051_1250403", + "8_7404511_53353420", + "8_1097392_1311002", + "8_226038_188216", + "8_7458291_53442843", + "8_753902_808641", + "8_774487_841064", + "8_7431802_53400357", + "8_7400229_53348633" + ] + } + } + } + } + }, + { + "Appium+mitmdump爬取京东商品": { + "data": { + "uuid": "python-4-966", + "seg": [ + [ + [ + "appium", + "mitmdump", + "爬取", + "京东", + "商品" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7453262_53436044" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-170", + "seg": [ + [ + [ + "app", + "爬取" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "pyspider框架的使用": { + "children": [ + { + "pyspider框架介绍": { + "data": { + "uuid": "python-4-967", + "seg": [ + [ + [ + "pyspider", + "框架", + "介绍" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "pyspider的基本使用": { + "data": { + "uuid": "python-4-968", + "seg": [ + [ + [ + "pyspider" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "pyspider用法详解": { + "data": { + "uuid": "python-4-969", + "seg": [ + [ + [ + "pyspider", + "用法", + "详解" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-171", + "seg": [ + [ + [ + "pyspider", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分布式爬虫": { + "children": [ + { + "分布式爬虫原理": { + "data": { + "uuid": "python-4-970", + "seg": [ + [ + [ + "分布式", + "爬虫", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy-Redis源码解析": { + "data": { + "uuid": "python-4-971", + "seg": [ + [ + [ + "scrapy", + "redis", + "解析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapy分布式实现": { + "data": { + "uuid": "python-4-972", + "seg": [ + [ + [ + "scrapy", + "分布式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Bloom Filter的对接": { + "data": { + "uuid": "python-4-973", + "seg": [ + [ + [ + "bloom", + "filter", + "对接" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-172", + "seg": [ + [ + [ + "分布式", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分布式爬虫的部署": { + "children": [ + { + "Scrapyd分布式部署": { + "data": { + "uuid": "python-4-974", + "seg": [ + [ + [ + "scrapyd", + "分布式", + "部署" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_748327_800287" + ] + } + } + } + } + }, + { + "Scrapyd-Client的使用": { + "data": { + "uuid": "python-4-975", + "seg": [ + [ + [ + "scrapyd", + "client" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7423099_53382483" + ] + } + } + } + } + }, + { + "Scrapyd对接Docker": { + "data": { + "uuid": "python-4-976", + "seg": [ + [ + [ + "scrapyd", + "对接", + "docker" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Scrapyd批量部署": { + "data": { + "uuid": "python-4-977", + "seg": [ + [ + [ + "scrapyd", + "批量", + "部署" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_367965_394204" + ] + } + } + } + } + }, + { + "Gerapy分布式管理": { + "data": { + "uuid": "python-4-978", + "seg": [ + [ + [ + "gerapy", + "分布式", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-173", + "seg": [ + [ + [ + "分布式", + "爬虫", + "部署" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-7", + "seg": [ + [ + [ + "网络", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7457735_53442209" + ] + } + } + } + } + }, + { + "桌面应用开发": { + "children": [ + { + "Tkinter": { + "children": [ + { + "Tkinter简介": { + "data": { + "uuid": "python-4-979", + "seg": [ + [ + [ + "tkinter", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-980", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Tkinter模块": { + "data": { + "uuid": "python-4-981", + "seg": [ + [ + [ + "tkinter", + "模块" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7427193_53391329" + ] + } + } + } + } + }, + { + "Tkinter控件": { + "data": { + "uuid": "python-4-982", + "seg": [ + [ + [ + "tkinter", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "标准属性": { + "data": { + "uuid": "python-4-983", + "seg": [ + [ + [ + "标准", + "属性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "几何管理": { + "data": { + "uuid": "python-4-984", + "seg": [ + [ + [ + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-174", + "seg": [ + [ + [ + "tkinter" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1065329_1264447", + "8_1064576_1262838", + "8_1063466_1263016", + "8_1064695_1263017" + ] + } + } + } + } + }, + { + "PyQT": { + "children": [ + { + "PyQT简介": { + "data": { + "uuid": "python-4-985", + "seg": [ + [ + [ + "pyqt", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-986", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyQT模块": { + "data": { + "uuid": "python-4-987", + "seg": [ + [ + [ + "pyqt", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyQT布局管理": { + "data": { + "uuid": "python-4-988", + "seg": [ + [ + [ + "pyqt", + "布局", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyQT菜单和工具栏": { + "data": { + "uuid": "python-4-989", + "seg": [ + [ + [ + "pyqt", + "菜单" + ], + [ + "工具栏" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件和信号": { + "data": { + "uuid": "python-4-990", + "seg": [ + [ + [ + "事件" + ], + [ + "信号" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyQT对话框": { + "data": { + "uuid": "python-4-991", + "seg": [ + [ + [ + "pyqt", + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyQT控件": { + "data": { + "uuid": "python-4-992", + "seg": [ + [ + [ + "pyqt", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "PyQT拖拽与绘图": { + "data": { + "uuid": "python-4-993", + "seg": [ + [ + [ + "pyqt", + "拖拽" + ], + [ + "绘图" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-175", + "seg": [ + [ + [ + "pyqt" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WxPython": { + "children": [ + { + "WxPython简介": { + "data": { + "uuid": "python-4-994", + "seg": [ + [ + [ + "wxpython", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-995", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WxPython常用类": { + "data": { + "uuid": "python-4-996", + "seg": [ + [ + [ + "wxpython", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WxPython布局管理": { + "data": { + "uuid": "python-4-997", + "seg": [ + [ + [ + "wxpython", + "布局", + "管理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WxPython事件处理": { + "data": { + "uuid": "python-4-998", + "seg": [ + [ + [ + "wxpython", + "事件处理" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7456673_53440729", + "8_751536_805177", + "8_693300_570579", + "8_731024_747704", + "8_723518_724316", + "8_7414276_53367040", + "8_7435791_53406800", + "8_655520_466846", + "8_1093424_1302861", + "8_7413778_53366204" + ] + } + } + } + } + }, + { + "WxPython对话框": { + "data": { + "uuid": "python-4-999", + "seg": [ + [ + [ + "wxpython", + "对话框" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WxPython组件": { + "data": { + "uuid": "python-4-1000", + "seg": [ + [ + [ + "wxpython", + "组件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_705066_605413" + ] + } + } + } + } + }, + { + "WxPython拖拽处理": { + "data": { + "uuid": "python-4-1001", + "seg": [ + [ + [ + "wxpython", + "拖拽" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WxPython绘图API": { + "data": { + "uuid": "python-4-1002", + "seg": [ + [ + [ + "wxpython", + "绘图", + "api" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-176", + "seg": [ + [ + [ + "wxpython" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_371800_398566" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-2-8", + "seg": [ + [ + [ + "桌面", + "开发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "Python总览": { + "children": [ + { + "Python总体架构": { + "data": { + "uuid": "python-4-1003", + "seg": [ + [ + [ + "python", + "总体", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python源码组织": { + "data": { + "uuid": "python-4-1004", + "seg": [ + [ + [ + "python", + "组织" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python对象初探": { + "children": [ + { + "Python内的对象": { + "data": { + "uuid": "python-5-599", + "seg": [ + [ + [ + "python", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象的分类": { + "data": { + "uuid": "python-5-600", + "seg": [ + [ + [ + "对象", + "分类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象机制的基石—PyObject": { + "data": { + "uuid": "python-5-601", + "seg": [ + [ + [ + "对象", + "机制", + "基石", + "pyobject" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定长对象和变长对象": { + "data": { + "uuid": "python-5-602", + "seg": [ + [ + [ + "定", + "长", + "对象" + ], + [ + "变长", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型对象": { + "data": { + "uuid": "python-5-603", + "seg": [ + [ + [ + "类型", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型的类型": { + "data": { + "uuid": "python-5-604", + "seg": [ + [ + [ + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象的创建": { + "data": { + "uuid": "python-5-605", + "seg": [ + [ + [ + "对象", + "创建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象的多态性": { + "data": { + "uuid": "python-5-606", + "seg": [ + [ + [ + "对象", + "多态性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引用计数": { + "data": { + "uuid": "python-5-607", + "seg": [ + [ + [ + "引用", + "计数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1005", + "seg": [ + [ + [ + "python", + "对象", + "初探" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-177", + "seg": [ + [ + [ + "python", + "总览" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数字对象": { + "children": [ + { + "整数对象": { + "children": [ + { + "PyLongObject对象": { + "data": { + "uuid": "python-5-608", + "seg": [ + [ + [ + "pylongobject", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "小整数对象": { + "data": { + "uuid": "python-5-609", + "seg": [ + [ + [ + "整数", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大整数对象": { + "data": { + "uuid": "python-5-610", + "seg": [ + [ + [ + "整数", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7399405_53347740", + "8_1014625_1205099", + "8_7451906_53433621", + "8_7431454_53399809" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1006", + "seg": [ + [ + [ + "整数", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数字格式化输出": { + "data": { + "uuid": "python-4-1007", + "seg": [ + [ + [ + "数字", + "格式化", + "输出" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7449160_53429209", + "8_7455742_53439060", + "8_887431_1026631", + "8_1089074_1295488", + "8_7399243_53346188" + ] + } + } + } + } + }, + { + "进制转换": { + "data": { + "uuid": "python-4-1008", + "seg": [ + [ + [ + "进制", + "转换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_812205_908321", + "8_7428884_53395244", + "8_7409673_53360484" + ] + } + } + } + } + }, + { + "数字运算": { + "children": [ + { + "四舍五入运算": { + "data": { + "uuid": "python-5-611", + "seg": [ + [ + [ + "四舍五入", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "浮点数运算": { + "data": { + "uuid": "python-5-612", + "seg": [ + [ + [ + "浮点数", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复数运算": { + "data": { + "uuid": "python-5-613", + "seg": [ + [ + [ + "复数", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分数运算": { + "data": { + "uuid": "python-5-614", + "seg": [ + [ + [ + "分数", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大型数组运算": { + "data": { + "uuid": "python-5-615", + "seg": [ + [ + [ + "大型", + "数组", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_827445_924449" + ] + } + } + } + } + }, + { + "矩阵与线性代数运算": { + "data": { + "uuid": "python-5-616", + "seg": [ + [ + [ + "矩阵" + ], + [ + "线性代数", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1009", + "seg": [ + [ + [ + "数字", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7403152_53351426", + "8_4646173_29329623", + "8_7398141_53344019", + "8_1052024_1249472", + "8_2054796_11785133", + "8_838007_950915", + "8_756398_811688", + "8_1063635_1261697", + "8_7444281_53422414", + "8_768749_829097" + ] + } + } + } + } + }, + { + "字节到大整数的打包与解包": { + "data": { + "uuid": "python-4-1010", + "seg": [ + [ + [ + "字节", + "整数", + "打包" + ], + [ + "解包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无穷大与NaN": { + "data": { + "uuid": "python-4-1011", + "seg": [ + [ + [ + "无穷大" + ], + [ + "nan" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1084095_1290577", + "8_685620_545724" + ] + } + } + } + } + }, + { + "随机数": { + "data": { + "uuid": "python-4-1012", + "seg": [ + [ + [ + "随机数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-178", + "seg": [ + [ + [ + "数字", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串": { + "children": [ + { + "字符串对象解析": { + "children": [ + { + "字符串对象的intern机制": { + "data": { + "uuid": "python-5-617", + "seg": [ + [ + [ + "字符串", + "对象", + "intern", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串操作效率": { + "data": { + "uuid": "python-5-618", + "seg": [ + [ + [ + "字符串", + "操作", + "效率" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7431026_53398984" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1013", + "seg": [ + [ + [ + "字符串", + "对象", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串操作": { + "children": [ + { + "字符串分割": { + "data": { + "uuid": "python-5-619", + "seg": [ + [ + [ + "字符串", + "分割" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_2021307_10637837", + "8_768474_828639", + "8_7450334_53430894", + "8_1054489_1251826", + "8_7426188_53389213", + "8_831823_931516", + "8_7436051_53407155", + "8_7431899_53400605", + "8_1102105_1316509", + "8_7438045_53411351" + ] + } + } + } + } + }, + { + "删除不需要的字符": { + "data": { + "uuid": "python-5-620", + "seg": [ + [ + [ + "删除", + "字符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串清理": { + "data": { + "uuid": "python-5-621", + "seg": [ + [ + [ + "字符串", + "清理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串对齐": { + "data": { + "uuid": "python-5-622", + "seg": [ + [ + [ + "字符串", + "对齐" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串拼接": { + "data": { + "uuid": "python-5-623", + "seg": [ + [ + [ + "字符串", + "拼接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串插入": { + "data": { + "uuid": "python-5-624", + "seg": [ + [ + [ + "字符串", + "插入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串格式化": { + "data": { + "uuid": "python-5-625", + "seg": [ + [ + [ + "字符串", + "格式化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7444553_53423196" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1014", + "seg": [ + [ + [ + "字符串", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串匹配": { + "children": [ + { + "字符串开头或结尾匹配": { + "data": { + "uuid": "python-5-626", + "seg": [ + [ + [ + "字符串", + "开头", + "结尾", + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1055590_1252784", + "8_7408511_53358641", + "8_7404225_53353117", + "8_7448467_53428620" + ] + } + } + } + } + }, + { + "用Shell通配符匹配字符串": { + "data": { + "uuid": "python-5-627", + "seg": [ + [ + [ + "shell", + "通配符", + "匹配", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_962559_1112693" + ] + } + } + } + } + }, + { + "最短匹配": { + "data": { + "uuid": "python-5-628", + "seg": [ + [ + [ + "短", + "匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多行匹配": { + "data": { + "uuid": "python-5-629", + "seg": [ + [ + [ + "匹配" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_175512_56322", + "8_4645684_29328641", + "8_703171_593922", + "8_7427852_53393100", + "8_391736_436685", + "8_175708_56810", + "8_220737_173812", + "8_761503_819055", + "8_769176_829840", + "8_7407719_53357829" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1015", + "seg": [ + [ + [ + "字符串", + "匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串搜索": { + "children": [ + { + "字符串搜索替换": { + "data": { + "uuid": "python-5-630", + "seg": [ + [ + [ + "字符串", + "搜索", + "替换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_727241_735904", + "8_739234_772992", + "8_772758_836208", + "8_1065070_1264112" + ] + } + } + } + } + }, + { + "字符串忽略大小写的搜索替换": { + "data": { + "uuid": "python-5-631", + "seg": [ + [ + [ + "字符串", + "大小写", + "搜索", + "替换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7428340_53393931" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1016", + "seg": [ + [ + [ + "字符串", + "搜索" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将Unicode文本标准化": { + "data": { + "uuid": "python-4-1017", + "seg": [ + [ + [ + "unicode", + "文本", + "标准化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在正则表达式中使用Unicode字符": { + "data": { + "uuid": "python-4-1018", + "seg": [ + [ + [ + "正则表达式", + "unicode", + "字符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "令牌解析": { + "data": { + "uuid": "python-4-1019", + "seg": [ + [ + [ + "令牌", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单的递归下降分析器实现": { + "data": { + "uuid": "python-4-1020", + "seg": [ + [ + [ + "递归", + "下降", + "分析器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字节字符串操作": { + "data": { + "uuid": "python-4-1021", + "seg": [ + [ + [ + "字节", + "字符串", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-179", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7457287_53441431", + "8_7409586_53360048" + ] + } + } + } + } + }, + { + "数据结构": { + "children": [ + { + "序列": { + "children": [ + { + "序列对象解析": { + "data": { + "uuid": "python-5-632", + "seg": [ + [ + [ + "序列", + "对象", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列解压": { + "data": { + "uuid": "python-5-633", + "seg": [ + [ + [ + "序列", + "解压" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_381898_416048", + "8_7432124_53402042", + "8_380780_413917", + "8_765273_824560" + ] + } + } + } + } + }, + { + "序列去重并保持顺序": { + "data": { + "uuid": "python-5-634", + "seg": [ + [ + [ + "序列", + "重", + "顺序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7425671_53387276" + ] + } + } + } + } + }, + { + "序列元素统计": { + "data": { + "uuid": "python-5-635", + "seg": [ + [ + [ + "序列", + "元素", + "统计" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1064444_1262681" + ] + } + } + } + } + }, + { + "过滤序列元素": { + "data": { + "uuid": "python-5-636", + "seg": [ + [ + [ + "过滤", + "序列", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列元素名称映射": { + "data": { + "uuid": "python-5-637", + "seg": [ + [ + [ + "序列", + "元素", + "名称", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "转换并计算数据": { + "data": { + "uuid": "python-5-638", + "seg": [ + [ + [ + "转换", + "计算", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1065811_1265133" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1022", + "seg": [ + [ + [ + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典": { + "children": [ + { + "字典对象解析": { + "data": { + "uuid": "python-5-639", + "seg": [ + [ + [ + "字典", + "对象", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典映射": { + "data": { + "uuid": "python-5-640", + "seg": [ + [ + [ + "字典", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典排序": { + "data": { + "uuid": "python-5-641", + "seg": [ + [ + [ + "字典", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_744789_791416", + "8_1108757_1429519", + "8_7459736_53444751" + ] + } + } + } + } + }, + { + "字典运算": { + "data": { + "uuid": "python-5-642", + "seg": [ + [ + [ + "字典", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典查找": { + "data": { + "uuid": "python-5-643", + "seg": [ + [ + [ + "字典", + "查找" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过关键字排序字典": { + "data": { + "uuid": "python-5-644", + "seg": [ + [ + [ + "关键字", + "排序", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典提取": { + "data": { + "uuid": "python-5-645", + "seg": [ + [ + [ + "字典", + "提取" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_771129_833454", + "8_1059157_1256447", + "8_7451163_53432198" + ] + } + } + } + } + }, + { + "字典合并": { + "data": { + "uuid": "python-5-646", + "seg": [ + [ + [ + "字典", + "合并" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7399101_53345955" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1023", + "seg": [ + [ + [ + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可迭代对象操作": { + "children": [ + { + "可迭代对象解压": { + "data": { + "uuid": "python-5-647", + "seg": [ + [ + [ + "迭代", + "对象", + "解压" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保留最后N个元素": { + "data": { + "uuid": "python-5-648", + "seg": [ + [ + [ + "保留", + "n", + "元素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "记录分组": { + "data": { + "uuid": "python-5-649", + "seg": [ + [ + [ + "记录", + "分组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1024", + "seg": [ + [ + [ + "迭代", + "对象", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查找最大或最小的N个元素": { + "data": { + "uuid": "python-4-1025", + "seg": [ + [ + [ + "查找", + "最小", + "n", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7430534_53397624", + "8_753006_807294" + ] + } + } + } + } + }, + { + "实现一个优先级队列": { + "data": { + "uuid": "python-4-1026", + "seg": [ + [ + [ + "优先级", + "队列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名切片": { + "data": { + "uuid": "python-4-1027", + "seg": [ + [ + [ + "命名", + "切片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "排序不支持原生比较的对象": { + "data": { + "uuid": "python-4-1028", + "seg": [ + [ + [ + "排序", + "支持", + "原生", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7436992_53415210" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-180", + "seg": [ + [ + [ + "数据结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代器与生成器": { + "children": [ + { + "迭代操作": { + "children": [ + { + "手动遍历迭代器": { + "data": { + "uuid": "python-5-650", + "seg": [ + [ + [ + "手动", + "遍历", + "迭代", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代理迭代": { + "data": { + "uuid": "python-5-651", + "seg": [ + [ + [ + "代理", + "迭代" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1099741_1314792", + "8_685273_544907" + ] + } + } + } + } + }, + { + "实现迭代协议": { + "data": { + "uuid": "python-5-652", + "seg": [ + [ + [ + "迭代", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "反向迭代": { + "data": { + "uuid": "python-5-653", + "seg": [ + [ + [ + "反向", + "迭代" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_688856_555602" + ] + } + } + } + } + }, + { + "迭代器切片": { + "data": { + "uuid": "python-5-654", + "seg": [ + [ + [ + "迭代", + "器", + "切片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "跳过可迭代对象的开始部分": { + "data": { + "uuid": "python-5-655", + "seg": [ + [ + [ + "跳", + "迭代", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_851824_973103" + ] + } + } + } + } + }, + { + "排列组合的迭代": { + "data": { + "uuid": "python-5-656", + "seg": [ + [ + [ + "排列组合", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列上索引值迭代": { + "data": { + "uuid": "python-5-657", + "seg": [ + [ + [ + "序列", + "索引", + "值", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多个序列迭代": { + "data": { + "uuid": "python-5-658", + "seg": [ + [ + [ + "序列", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合元素的迭代": { + "data": { + "uuid": "python-5-659", + "seg": [ + [ + [ + "集合", + "元素", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "顺序迭代合并后的排序迭代对象": { + "data": { + "uuid": "python-5-660", + "seg": [ + [ + [ + "顺序", + "迭代", + "合并", + "排序", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7406129_53355534" + ] + } + } + } + } + }, + { + "迭代器代替while无限循环": { + "data": { + "uuid": "python-5-661", + "seg": [ + [ + [ + "迭代", + "器", + "while", + "无限", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1029", + "seg": [ + [ + [ + "迭代", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用生成器创建新的迭代模式": { + "data": { + "uuid": "python-4-1030", + "seg": [ + [ + [ + "生成器", + "创建", + "迭代", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_773914_837826" + ] + } + } + } + } + }, + { + "带有外部状态的生成器函数": { + "data": { + "uuid": "python-4-1031", + "seg": [ + [ + [ + "带有", + "外部", + "状态", + "生成器", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建数据处理管道": { + "data": { + "uuid": "python-4-1032", + "seg": [ + [ + [ + "创建", + "数据处理", + "管道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "展开嵌套的序列": { + "data": { + "uuid": "python-4-1033", + "seg": [ + [ + [ + "展开", + "嵌套", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-181", + "seg": [ + [ + [ + "迭代", + "器" + ], + [ + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件与I/O": { + "children": [ + { + "读/写操作": { + "children": [ + { + "读/写文本数据": { + "data": { + "uuid": "python-5-662", + "seg": [ + [ + [ + "读", + "写", + "文本", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443142_53420180" + ] + } + } + } + } + }, + { + "读/写字节数据": { + "data": { + "uuid": "python-5-663", + "seg": [ + [ + [ + "读", + "写", + "字节", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读/写压缩文件": { + "data": { + "uuid": "python-5-664", + "seg": [ + [ + [ + "读", + "写", + "压缩文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7448187_53428228", + "8_7446337_53425511", + "8_7452328_53434256", + "8_7435333_53405891", + "8_878815_1014828", + "8_217013_164815", + "8_7451146_53432180", + "8_7447325_53427042", + "8_7434334_53404698", + "8_7447197_53426716" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1034", + "seg": [ + [ + [ + "读", + "写", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件操作": { + "children": [ + { + "文件的写入": { + "data": { + "uuid": "python-5-665", + "seg": [ + [ + [ + "文件", + "写入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427151_53391208" + ] + } + } + } + } + }, + { + "操作文件路径名": { + "data": { + "uuid": "python-5-666", + "seg": [ + [ + [ + "操作", + "文件", + "路径名" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7452190_53434090", + "8_1094253_1304319" + ] + } + } + } + } + }, + { + "文件检查": { + "data": { + "uuid": "python-5-667", + "seg": [ + [ + [ + "文件", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件列表获取": { + "data": { + "uuid": "python-5-668", + "seg": [ + [ + [ + "文件", + "列表", + "获取" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_175803_56934" + ] + } + } + } + } + }, + { + "忽略文件名编码": { + "data": { + "uuid": "python-5-669", + "seg": [ + [ + [ + "文件名", + "编码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打印不合法的文件名": { + "data": { + "uuid": "python-5-670", + "seg": [ + [ + [ + "打印", + "合法", + "文件名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件编码变更": { + "data": { + "uuid": "python-5-671", + "seg": [ + [ + [ + "文件", + "编码", + "变更" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_662504_478250", + "8_7425660_53387249" + ] + } + } + } + } + }, + { + "在文本文件中写入字节": { + "data": { + "uuid": "python-5-672", + "seg": [ + [ + [ + "文本文件", + "写入", + "字节" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件描述符包装": { + "data": { + "uuid": "python-5-673", + "seg": [ + [ + [ + "文件", + "描述符", + "包装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建临时文件和文件夹": { + "data": { + "uuid": "python-5-674", + "seg": [ + [ + [ + "创建", + "临时文件" + ], + [ + "文件夹" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件迭代": { + "data": { + "uuid": "python-5-675", + "seg": [ + [ + [ + "文件", + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "二进制文件映射": { + "data": { + "uuid": "python-5-676", + "seg": [ + [ + [ + "二进制", + "文件", + "映射" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7395775_53338660", + "8_7409941_53360481" + ] + } + } + } + } + }, + { + "创建和解压归档文件": { + "data": { + "uuid": "python-5-677", + "seg": [ + [ + [ + "创建" + ], + [ + "解压", + "归档文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件查找": { + "data": { + "uuid": "python-5-678", + "seg": [ + [ + [ + "文件", + "查找" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置文件读取": { + "data": { + "uuid": "python-5-679", + "seg": [ + [ + [ + "配置文件", + "读取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关闭文件": { + "data": { + "uuid": "python-5-680", + "seg": [ + [ + [ + "关闭", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7454455_53437156", + "8_685956_546738", + "8_1100143_1315065", + "8_7399989_53347631", + "8_5571133_34167755", + "8_7412977_53364578", + "8_7443483_53421117", + "8_993586_1164323", + "8_760794_817949", + "8_7440160_53415220" + ] + } + } + } + } + }, + { + "打开文件时使用with语句": { + "data": { + "uuid": "python-5-681", + "seg": [ + [ + [ + "打开", + "文件", + "with", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1095518_1306885", + "8_717875_711337", + "8_750386_803435", + "8_715560_707908", + "8_6982977_49888848", + "8_751402_805020", + "8_1059993_1257437", + "8_7432868_53402453", + "8_7408437_53358653" + ] + } + } + } + } + }, + { + "写入文件内容": { + "data": { + "uuid": "python-5-682", + "seg": [ + [ + [ + "写入", + "文件", + "内容" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7416533_53370965", + "8_7419365_53376495", + "8_653804_462925", + "8_1074828_1278752" + ] + } + } + } + } + }, + { + "读取文件": { + "data": { + "uuid": "python-5-683", + "seg": [ + [ + [ + "读取", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_774694_838681", + "8_346673_353417", + "8_959590_1107297", + "8_7440427_53415600", + "8_184707_75083", + "8_7417299_53372136", + "8_323527_314211", + "8_7465041_53451773" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1035", + "seg": [ + [ + [ + "文件", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用分隔符或行终止符打印": { + "data": { + "uuid": "python-4-1036", + "seg": [ + [ + [ + "分隔符", + "行", + "终止符", + "打印" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串的I/O操作": { + "data": { + "uuid": "python-4-1037", + "seg": [ + [ + [ + "字符串", + "i", + "o", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7444320_53422435", + "8_921754_1057441", + "8_1071986_1274126", + "8_7461650_53446831", + "8_7413794_53366168" + ] + } + } + } + } + }, + { + "可变缓冲区中二进制数据的读取": { + "data": { + "uuid": "python-4-1038", + "seg": [ + [ + [ + "可变", + "缓冲区", + "二进制", + "数据", + "读取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "串行端口的数据通信": { + "data": { + "uuid": "python-4-1039", + "seg": [ + [ + [ + "串行", + "端口", + "数据通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象序列化": { + "data": { + "uuid": "python-4-1040", + "seg": [ + [ + [ + "对象", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-182", + "seg": [ + [ + [ + "文件" + ], + [ + "i", + "o" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据编码及处理": { + "children": [ + { + "数据读/写": { + "children": [ + { + "CSV数据读/写": { + "data": { + "uuid": "python-5-684", + "seg": [ + [ + [ + "csv", + "数据", + "读", + "写" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427532_53393548", + "8_748584_800598" + ] + } + } + } + } + }, + { + "JSON数据读/写": { + "data": { + "uuid": "python-5-685", + "seg": [ + [ + [ + "json", + "数据", + "读", + "写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "二进制数组数据读/写": { + "data": { + "uuid": "python-5-686", + "seg": [ + [ + [ + "二进制", + "数组", + "数据", + "读", + "写" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1071215_1273039" + ] + } + } + } + } + }, + { + "嵌套和可变长二进制数据读取": { + "data": { + "uuid": "python-5-687", + "seg": [ + [ + [ + "嵌套" + ], + [ + "可变", + "长", + "二进制", + "数据", + "读取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1041", + "seg": [ + [ + [ + "数据", + "读", + "写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "XML数据解析": { + "children": [ + { + "简单XML数据解析": { + "data": { + "uuid": "python-5-688", + "seg": [ + [ + [ + "xml", + "数据", + "解析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7121511_51052702", + "8_743705_788514", + "8_7439463_53414129", + "8_7461228_53446311", + "8_7439766_53414492", + "8_7446011_53425062", + "8_7415926_53369553" + ] + } + } + } + } + }, + { + "解析XML文档": { + "data": { + "uuid": "python-5-689", + "seg": [ + [ + [ + "解析", + "xml", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改XML": { + "data": { + "uuid": "python-5-690", + "seg": [ + [ + [ + "修改", + "xml" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_372812_403203", + "8_856683_982292" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1042", + "seg": [ + [ + [ + "xml", + "数据", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典转换为XML": { + "data": { + "uuid": "python-4-1043", + "seg": [ + [ + [ + "字典", + "转换", + "xml" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与关系型数据库的交互": { + "data": { + "uuid": "python-4-1044", + "seg": [ + [ + [], + [ + "关系", + "数据库", + "交互" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编码/解码": { + "children": [ + { + "十六进制数编码和解码": { + "data": { + "uuid": "python-5-691", + "seg": [ + [ + [ + "十六进制", + "数", + "编码" + ], + [ + "解码" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_350942_359942", + "8_7436880_53409217", + "8_7431064_53399025", + "8_1089095_1295967", + "8_7445159_53423714" + ] + } + } + } + } + }, + { + "编码/解码Base64数据": { + "data": { + "uuid": "python-5-692", + "seg": [ + [ + [ + "编码", + "解码", + "base64", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1102246_1316619", + "8_237152_216885", + "8_4646351_29329955", + "8_693232_570403", + "8_716916_709991" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1045", + "seg": [ + [ + [ + "编码", + "解码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-183", + "seg": [ + [ + [ + "数据编码" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数": { + "children": [ + { + "函数定义": { + "children": [ + { + "有默认参数的函数定义": { + "data": { + "uuid": "python-5-693", + "seg": [ + [ + [ + "默认", + "参数", + "函数", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7403514_53352023", + "8_7398553_53344867", + "8_7409305_53359690", + "8_771909_834988", + "8_7443075_53420102", + "8_7439664_53414130", + "8_7434731_53405170", + "8_7452461_53434465", + "8_7455354_53438228", + "8_767205_826712" + ] + } + } + } + } + }, + { + "匿名或内联函数定义": { + "data": { + "uuid": "python-5-694", + "seg": [ + [ + [ + "匿名", + "内联", + "函数", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1046", + "seg": [ + [ + [ + "函数", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7433766_53404068", + "8_7433763_53404067" + ] + } + } + } + } + }, + { + "函数的参数": { + "children": [ + { + "接收任意数量参数": { + "data": { + "uuid": "python-5-695", + "seg": [ + [ + [ + "接收", + "任意", + "数量", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接收关键字参数": { + "data": { + "uuid": "python-5-696", + "seg": [ + [ + [ + "接收", + "关键字", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为参数增加元信息": { + "data": { + "uuid": "python-5-697", + "seg": [ + [ + [ + "参数", + "增加", + "信息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7436472_53408489", + "8_7423314_53383134" + ] + } + } + } + } + }, + { + "减少参数个数": { + "data": { + "uuid": "python-5-698", + "seg": [ + [ + [ + "减少", + "参数", + "个数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1047", + "seg": [ + [ + [ + "函数", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回多个值的函数": { + "data": { + "uuid": "python-4-1048", + "seg": [ + [ + [ + "返回", + "值", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类转换为函数": { + "data": { + "uuid": "python-4-1049", + "seg": [ + [ + [ + "类", + "转换", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_5144767_34402885" + ] + } + } + } + } + }, + { + "回调函数": { + "children": [ + { + "有额外状态信息的回调函数": { + "data": { + "uuid": "python-5-699", + "seg": [ + [ + [ + "额外", + "状态", + "信息", + "回调", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内联回调函数": { + "data": { + "uuid": "python-5-700", + "seg": [ + [ + [ + "内联", + "回调", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1050", + "seg": [ + [ + [ + "回调", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数的创建和调用": { + "children": [ + { + "创建一个函数": { + "data": { + "uuid": "python-5-701", + "seg": [ + [ + [ + "创建", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_773507_837502", + "8_7426070_53388802", + "8_7426068_53388815", + "8_7452156_53434000", + "8_231634_203069", + "8_7419067_53376075", + "8_771657_834330", + "8_1263418_3475211", + "8_1090287_1297066" + ] + } + } + } + } + }, + { + "调用函数": { + "data": { + "uuid": "python-5-702", + "seg": [ + [ + [ + "调用函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1051", + "seg": [ + [ + [ + "函数", + "创建" + ], + [ + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数传递": { + "children": [ + { + "了解形式参数和实际参数": { + "data": { + "uuid": "python-5-703", + "seg": [ + [ + [ + "形式参数" + ], + [ + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "位置参数": { + "data": { + "uuid": "python-5-704", + "seg": [ + [ + [ + "位置", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7430233_53397286", + "8_7461764_53446982" + ] + } + } + } + } + }, + { + "关键字参数": { + "data": { + "uuid": "python-5-705", + "seg": [ + [ + [ + "关键字", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为参数设置默认值": { + "data": { + "uuid": "python-5-706", + "seg": [ + [ + [ + "参数设置", + "默认值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可变参数": { + "data": { + "uuid": "python-5-707", + "seg": [ + [ + [ + "可变", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1052", + "seg": [ + [ + [ + "参数传递" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回值": { + "data": { + "uuid": "python-4-1053", + "seg": [ + [ + [ + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量的作用域": { + "children": [ + { + "局部变量": { + "data": { + "uuid": "python-5-708", + "seg": [ + [ + [ + "局部变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "全局变量": { + "data": { + "uuid": "python-5-709", + "seg": [ + [ + [ + "全局变量" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7429424_53396302", + "8_1090458_1297324" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1054", + "seg": [ + [ + [ + "变量", + "作用域" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7433376_53403578", + "8_7438894_53412339" + ] + } + } + } + } + }, + { + "匿名函数": { + "data": { + "uuid": "python-4-1055", + "seg": [ + [ + [ + "匿名", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-184", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元编程": { + "children": [ + { + "装饰器": { + "children": [ + { + "函数添加装饰器": { + "data": { + "uuid": "python-5-710", + "seg": [ + [ + [ + "函数", + "添加", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1067953_1268416" + ] + } + } + } + } + }, + { + "装饰器中保留函数元信息": { + "data": { + "uuid": "python-5-711", + "seg": [ + [ + [ + "装饰", + "器", + "保留", + "函数", + "信息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解除装饰器": { + "data": { + "uuid": "python-5-712", + "seg": [ + [ + [ + "解除", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_698224_584953", + "8_7412935_53364487", + "8_1082008_1287825" + ] + } + } + } + } + }, + { + "带参数的装饰器": { + "data": { + "uuid": "python-5-713", + "seg": [ + [ + [ + "带", + "参数", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1054413_1251678", + "8_7453451_53436168", + "8_7430452_53397530", + "8_7430478_53397565" + ] + } + } + } + } + }, + { + "装饰器自定义属性": { + "data": { + "uuid": "python-5-714", + "seg": [ + [ + [ + "装饰", + "器", + "自定义", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "带可选参数的装饰器": { + "data": { + "uuid": "python-5-715", + "seg": [ + [ + [ + "带", + "可选", + "参数", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数的类型检查": { + "data": { + "uuid": "python-5-716", + "seg": [ + [ + [ + "函数", + "类型", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类中定义装饰器": { + "data": { + "uuid": "python-5-717", + "seg": [ + [ + [ + "类", + "定义", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装饰器定义为类": { + "data": { + "uuid": "python-5-718", + "seg": [ + [ + [ + "装饰", + "器", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类和静态方法的装饰器": { + "data": { + "uuid": "python-5-719", + "seg": [ + [ + [ + "类" + ], + [ + "静态方法", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给函数增加参数": { + "data": { + "uuid": "python-5-720", + "seg": [ + [ + [ + "函数", + "增加", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_5884522_37226974" + ] + } + } + } + } + }, + { + "扩充类的功能": { + "data": { + "uuid": "python-5-721", + "seg": [ + [ + [ + "扩充", + "类", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1056", + "seg": [ + [ + [ + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_750243_803136" + ] + } + } + } + } + }, + { + "元类": { + "children": [ + { + "元类定义可选参数": { + "data": { + "uuid": "python-5-722", + "seg": [ + [ + [ + "类", + "定义", + "参数" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_235866_215290" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1057", + "seg": [ + [ + [ + "类" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_5649701_35331453", + "8_7428863_53395321", + "8_7445414_53424014" + ] + } + } + } + } + }, + { + "类的属性定义顺序": { + "data": { + "uuid": "python-4-1058", + "seg": [ + [ + [ + "类", + "属性", + "定义", + "顺序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "强制参数签名": { + "data": { + "uuid": "python-4-1059", + "seg": [ + [ + [ + "强制", + "参数", + "签名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "强制使用编程规约": { + "data": { + "uuid": "python-4-1060", + "seg": [ + [ + [ + "强制", + "编程", + "规约" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "以编程方式定义类": { + "data": { + "uuid": "python-4-1061", + "seg": [ + [ + [ + "编程", + "方式", + "定义", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初始化类的成员": { + "data": { + "uuid": "python-4-1062", + "seg": [ + [ + [ + "初始化", + "类", + "成员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用注解实现方法重载": { + "data": { + "uuid": "python-4-1063", + "seg": [ + [ + [ + "利用", + "注解", + "方法", + "重载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "避免重复的属性方法": { + "data": { + "uuid": "python-4-1064", + "seg": [ + [ + [ + "重复", + "属性", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义上下文管理器": { + "data": { + "uuid": "python-4-1065", + "seg": [ + [ + [ + "定义", + "上下文", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "局部变量域中执行代码": { + "data": { + "uuid": "python-4-1066", + "seg": [ + [ + [ + "局部变量", + "域", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python源码解析": { + "data": { + "uuid": "python-4-1067", + "seg": [ + [ + [ + "python", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python字节码拆解": { + "data": { + "uuid": "python-4-1068", + "seg": [ + [ + [ + "python", + "字节", + "码", + "拆解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-185", + "seg": [ + [ + [ + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7452918_53435555", + "8_7431428_53399747", + "8_7445151_53423698" + ] + } + } + } + } + }, + { + "并发编程": { + "children": [ + { + "线程处理": { + "children": [ + { + "线程的启动与停止": { + "data": { + "uuid": "python-5-723", + "seg": [ + [ + [ + "线程", + "启动" + ], + [ + "停止" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7418793_53375289" + ] + } + } + } + } + }, + { + "线程判断": { + "data": { + "uuid": "python-5-724", + "seg": [ + [ + [ + "线程", + "判断" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7430810_53398326", + "8_7430220_53397261", + "8_7416666_53371061", + "8_7436922_53409437" + ] + } + } + } + } + }, + { + "线程间通信": { + "data": { + "uuid": "python-5-725", + "seg": [ + [ + [ + "线程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程加锁": { + "data": { + "uuid": "python-5-726", + "seg": [ + [ + [ + "线程", + "加锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "防止死锁": { + "data": { + "uuid": "python-5-727", + "seg": [ + [ + [ + "死锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程状态信息保存": { + "data": { + "uuid": "python-5-728", + "seg": [ + [ + [ + "线程", + "状态", + "信息", + "保存" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建线程池": { + "data": { + "uuid": "python-5-729", + "seg": [ + [ + [ + "创建", + "线程", + "池" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7428377_53394095" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1069", + "seg": [ + [ + [ + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "并行编程": { + "data": { + "uuid": "python-4-1070", + "seg": [ + [ + [ + "并行", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Actor任务定义": { + "data": { + "uuid": "python-4-1071", + "seg": [ + [ + [ + "actor", + "定义" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "消息发布/订阅模型": { + "data": { + "uuid": "python-4-1072", + "seg": [ + [ + [ + "消息", + "发布", + "订阅", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "生成器代替线程": { + "data": { + "uuid": "python-4-1073", + "seg": [ + [ + [ + "生成器", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程队列轮询": { + "data": { + "uuid": "python-4-1074", + "seg": [ + [ + [ + "线程", + "队列", + "轮询" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "守护进程": { + "data": { + "uuid": "python-4-1075", + "seg": [ + [ + [ + "守护", + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-186", + "seg": [ + [ + [ + "并发", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "脚本编程与系统管理": { + "children": [ + { + "脚本接收": { + "data": { + "uuid": "python-4-1076", + "seg": [ + [ + [ + "脚本", + "接收" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7460188_53445249", + "8_769484_830444" + ] + } + } + } + } + }, + { + "终止程序": { + "data": { + "uuid": "python-4-1077", + "seg": [ + [ + [ + "终止", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "解析命令行选项": { + "data": { + "uuid": "python-4-1078", + "seg": [ + [ + [ + "解析", + "命令行", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "弹出密码输入提示": { + "data": { + "uuid": "python-4-1079", + "seg": [ + [ + [ + "弹", + "出", + "密码", + "输入", + "提示" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7435249_53405757", + "8_7396383_53339905", + "8_7451063_53432123" + ] + } + } + } + } + }, + { + "执行外部命令": { + "data": { + "uuid": "python-4-1080", + "seg": [ + [ + [ + "执行", + "外部命令" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7412807_53364821", + "8_7424160_53385314" + ] + } + } + } + } + }, + { + "添加日志": { + "children": [ + { + "脚本增加日志功能": { + "data": { + "uuid": "python-5-730", + "seg": [ + [ + [ + "脚本", + "增加", + "日志", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数库增加日志功能": { + "data": { + "uuid": "python-5-731", + "seg": [ + [ + [ + "函数库", + "增加", + "日志", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1081", + "seg": [ + [ + [ + "添加", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现计时器": { + "data": { + "uuid": "python-4-1082", + "seg": [ + [ + [ + "计时器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存和CPU监测": { + "data": { + "uuid": "python-4-1083", + "seg": [ + [ + [ + "内存" + ], + [ + "cpu", + "监测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动Web浏览器": { + "data": { + "uuid": "python-4-1084", + "seg": [ + [ + [ + "启动", + "web", + "浏览器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-187", + "seg": [ + [ + [ + "脚本", + "编程" + ], + [ + "系统管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python的内存管理机制": { + "children": [ + { + "Python内存架构": { + "data": { + "uuid": "python-4-1085", + "seg": [ + [ + [ + "python", + "内存", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "小块空间的内存池": { + "children": [ + { + "block": { + "data": { + "uuid": "python-5-732", + "seg": [ + [ + [ + "block" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pool": { + "data": { + "uuid": "python-5-733", + "seg": [ + [ + [ + "pool" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "arena": { + "data": { + "uuid": "python-5-734", + "seg": [ + [ + [ + "arena" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存池": { + "data": { + "uuid": "python-5-735", + "seg": [ + [ + [ + "内存", + "池" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7453010_53435577" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1086", + "seg": [ + [ + [ + "空间", + "内存", + "池" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环引用的垃圾收集": { + "children": [ + { + "三色标记模型": { + "data": { + "uuid": "python-5-736", + "seg": [ + [ + [ + "色", + "标记", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1087", + "seg": [ + [ + [ + "循环", + "引用", + "垃圾", + "收集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python垃圾收集": { + "children": [ + { + "可收集对象链表": { + "data": { + "uuid": "python-5-737", + "seg": [ + [ + [ + "收集", + "对象", + "链表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分代垃圾收集": { + "data": { + "uuid": "python-5-738", + "seg": [ + [ + [ + "分代", + "垃圾", + "收集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python中的标记—清除方法": { + "data": { + "uuid": "python-5-739", + "seg": [ + [ + [ + "python", + "标记", + "清除", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1088", + "seg": [ + [ + [ + "python", + "垃圾", + "收集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-188", + "seg": [ + [ + [ + "python", + "内存", + "管理机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "性能优化与实践": { + "children": [ + { + "优化的规则": { + "children": [ + { + "先使程序可以正常工作": { + "data": { + "uuid": "python-5-740", + "seg": [ + [ + [ + "程序", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从用户的角度进行": { + "data": { + "uuid": "python-5-741", + "seg": [ + [ + [ + "用户", + "角度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保证代码易读": { + "data": { + "uuid": "python-5-742", + "seg": [ + [ + [ + "保证", + "易读" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1089", + "seg": [ + [ + [ + "优化", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优化策略": { + "children": [ + { + "寻找其他原因": { + "data": { + "uuid": "python-5-743", + "seg": [ + [ + [ + "寻找", + "原因" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7398114_53343976", + "8_7445002_53423579", + "8_7413918_53366158", + "8_7425006_53386187", + "8_7440009_53414867", + "8_7460903_53446041", + "8_4646498_29330404" + ] + } + } + } + } + }, + { + "度量硬件": { + "data": { + "uuid": "python-5-744", + "seg": [ + [ + [ + "度量", + "硬件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写速度测试代码": { + "data": { + "uuid": "python-5-745", + "seg": [ + [ + [ + "编写", + "速度", + "测试代码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1090", + "seg": [ + [ + [ + "优化", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查找瓶颈": { + "children": [ + { + "剖析CPU使用情况": { + "data": { + "uuid": "python-5-746", + "seg": [ + [ + [ + "剖析", + "cpu", + "情况" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1064492_1262788" + ] + } + } + } + } + }, + { + "剖析内存使用情况": { + "data": { + "uuid": "python-5-747", + "seg": [ + [ + [ + "剖析", + "内存", + "情况" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1091", + "seg": [ + [ + [ + "查找", + "瓶颈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "降低复杂度": { + "children": [ + { + "测量回路复杂度": { + "data": { + "uuid": "python-5-748", + "seg": [ + [ + [ + "测量", + "回路", + "复杂度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测量大O记号": { + "data": { + "uuid": "python-5-749", + "seg": [ + [ + [ + "测量", + "o", + "记号" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简化": { + "data": { + "uuid": "python-5-750", + "seg": [ + [ + [ + "简化" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7401718_53349446" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1092", + "seg": [ + [ + [ + "降低", + "复杂度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-189", + "seg": [ + [ + [ + "性能", + "优化" + ], + [ + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通用应用主题": { + "children": [ + { + "因特网客户端编程": { + "children": [ + { + "因特网客户端简介": { + "data": { + "uuid": "python-5-751", + "seg": [ + [ + [ + "因特网", + "客户端", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件传输": { + "children": [ + { + "文件传输因特网协议": { + "data": { + "uuid": "python-6-114", + "seg": [ + [ + [ + "文件传输", + "因特网", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件传输协议": { + "data": { + "uuid": "python-6-115", + "seg": [ + [ + [ + "文件传输", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ftplib.FTP类的方法": { + "data": { + "uuid": "python-6-116", + "seg": [ + [ + [ + "ftplib", + "ftp", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式FTP示例": { + "data": { + "uuid": "python-6-117", + "seg": [ + [ + [ + "交互式", + "ftp", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "客户端FTP程序示例": { + "data": { + "uuid": "python-6-118", + "seg": [ + [ + [ + "客户端", + "ftp", + "程序", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FTP的其他内容": { + "data": { + "uuid": "python-6-119", + "seg": [ + [ + [ + "ftp", + "内容" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1061625_1259458" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-752", + "seg": [ + [ + [ + "文件传输" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络新闻": { + "children": [ + { + "Usenet与新闻组": { + "data": { + "uuid": "python-6-120", + "seg": [ + [ + [ + "usenet" + ], + [ + "新闻组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络新闻传输协议": { + "data": { + "uuid": "python-6-121", + "seg": [ + [ + [ + "网络新闻", + "传输", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "nntplib.NNTP类方法": { + "data": { + "uuid": "python-6-122", + "seg": [ + [ + [ + "nntplib", + "nntp", + "类", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互式NNTP示例": { + "data": { + "uuid": "python-6-123", + "seg": [ + [ + [ + "交互式", + "nntp", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "客户端程序NNTP示例": { + "data": { + "uuid": "python-6-124", + "seg": [ + [ + [ + "客户端程序", + "nntp", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NNTP的其他内容": { + "data": { + "uuid": "python-6-125", + "seg": [ + [ + [ + "nntp", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-753", + "seg": [ + [ + [ + "网络新闻" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1093", + "seg": [ + [ + [ + "因特网", + "客户端", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多线程编程": { + "children": [ + { + "thread模块": { + "data": { + "uuid": "python-5-754", + "seg": [ + [ + [ + "thread", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "threading模块": { + "children": [ + { + "Thread类": { + "data": { + "uuid": "python-6-126", + "seg": [ + [ + [ + "thread", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "threading模块的其他函数": { + "data": { + "uuid": "python-6-127", + "seg": [ + [ + [ + "threading", + "模块", + "函数" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1090457_1297431", + "8_225783_187579" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-755", + "seg": [ + [ + [ + "threading", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "单线程和多线程执行对比": { + "data": { + "uuid": "python-5-756", + "seg": [ + [ + [ + "单线程" + ], + [ + "多线程", + "执行" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_689219_556764" + ] + } + } + } + } + }, + { + "多线程实践": { + "children": [ + { + "图书排名示例": { + "data": { + "uuid": "python-6-128", + "seg": [ + [ + [ + "图书", + "排名", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步原语": { + "data": { + "uuid": "python-6-129", + "seg": [ + [ + [ + "同步", + "原语" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7445863_53424952" + ] + } + } + } + } + }, + { + "锁示例": { + "data": { + "uuid": "python-6-130", + "seg": [ + [ + [ + "锁", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "信号量示例": { + "data": { + "uuid": "python-6-131", + "seg": [ + [ + [ + "信号量", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-757", + "seg": [ + [ + [ + "多线程", + "实践" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_688948_555847", + "8_756864_812080", + "8_650141_456571", + "8_7413180_53364999", + "8_696441_580397" + ] + } + } + } + } + }, + { + "线程的替代方案": { + "children": [ + { + "subprocess模块": { + "data": { + "uuid": "python-6-132", + "seg": [ + [ + [ + "subprocess", + "模块" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_938609_1252393" + ] + } + } + } + } + }, + { + "multiprocessing模块": { + "data": { + "uuid": "python-6-133", + "seg": [ + [ + [ + "multiprocessing", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "concurrent.futures模块": { + "data": { + "uuid": "python-6-134", + "seg": [ + [ + [ + "concurrent", + "futures", + "模块" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-758", + "seg": [ + [ + [ + "线程", + "方案" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_978246_1136950" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1094", + "seg": [ + [ + [ + "多线程", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GUI编程": { + "children": [ + { + "Tkinter示例": { + "children": [ + { + "Label控件": { + "data": { + "uuid": "python-6-135", + "seg": [ + [ + [ + "label", + "控件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1091884_1299540" + ] + } + } + } + } + }, + { + "Button控件": { + "data": { + "uuid": "python-6-136", + "seg": [ + [ + [ + "button", + "控件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7400925_53349070", + "8_199904_119126", + "8_1093030_1302028" + ] + } + } + } + } + }, + { + "Label和Button控件": { + "data": { + "uuid": "python-6-137", + "seg": [ + [ + [ + "label" + ], + [ + "button", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Label、Button和Scale控件": { + "data": { + "uuid": "python-6-138", + "seg": [ + [ + [ + "label" + ], + [ + "button" + ], + [ + "scale", + "控件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "偏函数应用示例": { + "data": { + "uuid": "python-6-139", + "seg": [ + [ + [ + "偏", + "函数", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "中级Tkinter示例": { + "data": { + "uuid": "python-6-140", + "seg": [ + [ + [ + "中级", + "tkinter", + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7409209_53359543", + "8_227956_193131", + "8_7418023_53373974", + "8_760153_816728", + "8_7438717_53412138", + "8_7449330_53429401", + "8_1098697_1313417", + "8_7386004_53337209", + "8_7416714_53371058", + "8_160312_27673" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-759", + "seg": [ + [ + [ + "tkinter", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他GUI简介": { + "children": [ + { + "Tk接口扩展(Tix)": { + "data": { + "uuid": "python-6-141", + "seg": [ + [ + [ + "tk", + "接口", + "扩展", + "tix" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Python MegaWidgets(PMW)": { + "data": { + "uuid": "python-6-142", + "seg": [ + [ + [ + "python", + "megawidgets", + "pmw" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "GTK+和PyGTK": { + "data": { + "uuid": "python-6-143", + "seg": [ + [ + [ + "gtk" + ], + [ + "pygtk" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Tile/Ttk": { + "data": { + "uuid": "python-6-144", + "seg": [ + [ + [ + "tile", + "ttk" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-760", + "seg": [ + [ + [ + "gui", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1095", + "seg": [ + [ + [ + "gui", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库编程": { + "children": [ + { + "Python的DB-API": { + "children": [ + { + "模块属性": { + "data": { + "uuid": "python-6-145", + "seg": [ + [ + [ + "模块", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Connection对象": { + "data": { + "uuid": "python-6-146", + "seg": [ + [ + [ + "connection", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cursor对象": { + "data": { + "uuid": "python-6-147", + "seg": [ + [ + [ + "cursor", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_381274_414840", + "8_7437545_53411027", + "8_1092442_1300378" + ] + } + } + } + } + }, + { + "关系数据库": { + "data": { + "uuid": "python-6-148", + "seg": [ + [ + [ + "关系数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用数据库适配器的示例": { + "data": { + "uuid": "python-6-149", + "seg": [ + [ + [ + "数据库", + "适配器", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库适配器示例应用": { + "data": { + "uuid": "python-6-150", + "seg": [ + [ + [ + "数据库", + "适配器", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-761", + "seg": [ + [ + [ + "python", + "db", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424761_53386318" + ] + } + } + } + } + }, + { + "ORM": { + "children": [ + { + "考虑对象,而不是SQL": { + "data": { + "uuid": "python-6-151", + "seg": [ + [ + [ + "对象", + "sql" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "员工角色数据库示例": { + "data": { + "uuid": "python-6-152", + "seg": [ + [ + [ + "员工", + "角色", + "数据库", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SQLAlchemy": { + "data": { + "uuid": "python-6-153", + "seg": [ + [ + [ + "sqlalchemy" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_666634_487817", + "8_1061585_1259489" + ] + } + } + } + } + }, + { + "SQLObject": { + "data": { + "uuid": "python-6-154", + "seg": [ + [ + [ + "sqlobject" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-762", + "seg": [ + [ + [ + "orm" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "非关系数据库": { + "children": [ + { + "NoSQL介绍": { + "data": { + "uuid": "python-6-155", + "seg": [ + [ + [ + "nosql", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-763", + "seg": [ + [ + [ + "关系数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "相关文献": { + "data": { + "uuid": "python-5-764", + "seg": [ + [ + [ + "相关", + "文献" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1096", + "seg": [ + [ + [ + "数据库", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7453245_53435963" + ] + } + } + } + } + }, + { + "*Microsoft Office编程": { + "children": [ + { + "使用Python进行COM客户端编程": { + "children": [ + { + "客户端COM编程": { + "data": { + "uuid": "python-6-156", + "seg": [ + [ + [ + "客户端", + "com", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_675661_510740", + "8_5649730_36820927", + "8_693001_569579", + "8_7461686_53446922", + "8_1063618_1261677", + "8_7395899_53338951", + "8_7450467_53431132", + "8_7439332_53413599", + "8_7446542_53425998", + "8_7451851_53433627" + ] + } + } + } + } + }, + { + "入门": { + "data": { + "uuid": "python-6-157", + "seg": [ + [ + [ + "入门" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_675807_511796", + "8_235675_214891", + "8_737510_767519", + "8_716392_709149", + "8_724717_727505", + "8_7400525_53348462" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-765", + "seg": [ + [ + [ + "python", + "com", + "客户端", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "入门示例": { + "children": [ + { + "Excel": { + "data": { + "uuid": "python-6-158", + "seg": [ + [ + [ + "excel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Word": { + "data": { + "uuid": "python-6-159", + "seg": [ + [ + [ + "word" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PowerPoint": { + "data": { + "uuid": "python-6-160", + "seg": [ + [ + [ + "powerpoint" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Outlook": { + "data": { + "uuid": "python-6-161", + "seg": [ + [ + [ + "outlook" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-766", + "seg": [ + [ + [ + "入门", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "中级示例": { + "children": [ + { + "Excel": { + "data": { + "uuid": "python-6-162", + "seg": [ + [ + [ + "excel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Outlook": { + "data": { + "uuid": "python-6-163", + "seg": [ + [ + [ + "outlook" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7412218_53363657" + ] + } + } + } + } + }, + { + "PowerPoint": { + "data": { + "uuid": "python-6-164", + "seg": [ + [ + [ + "powerpoint" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-767", + "seg": [ + [ + [ + "中级", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "相关模块/包": { + "data": { + "uuid": "python-5-768", + "seg": [ + [ + [ + "相关", + "模块", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1097", + "seg": [ + [ + [ + "microsoft", + "office", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_756181_811295" + ] + } + } + } + } + }, + { + "扩展Python": { + "children": [ + { + "编写Python扩展": { + "children": [ + { + "根据样板编写封装代码": { + "data": { + "uuid": "python-6-165", + "seg": [ + [ + [ + "样板", + "编写", + "封装" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1058085_1255346", + "8_1057001_1254146", + "8_751045_804484", + "8_7446374_53425554", + "8_7459778_53444785", + "8_7411744_53363059", + "8_774528_838506", + "8_757788_813444", + "8_895240_1033332", + "8_7398533_53344826" + ] + } + } + } + } + }, + { + "编译": { + "data": { + "uuid": "python-6-166", + "seg": [ + [ + [ + "编译" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_222179_177658", + "8_184971_75772" + ] + } + } + } + } + }, + { + "导入并测试": { + "data": { + "uuid": "python-6-167", + "seg": [ + [ + [ + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-769", + "seg": [ + [ + [ + "编写", + "python", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "相关主题": { + "children": [ + { + "SWIG": { + "data": { + "uuid": "python-6-168", + "seg": [ + [ + [ + "swig" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pyrex": { + "data": { + "uuid": "python-6-169", + "seg": [ + [ + [ + "pyrex" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cython": { + "data": { + "uuid": "python-6-170", + "seg": [ + [ + [ + "cython" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Psyco": { + "data": { + "uuid": "python-6-171", + "seg": [ + [ + [ + "psyco" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PyPy": { + "data": { + "uuid": "python-6-172", + "seg": [ + [ + [ + "pypy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌入Python": { + "data": { + "uuid": "python-6-173", + "seg": [ + [ + [ + "嵌入", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-770", + "seg": [ + [ + [ + "相关", + "主题" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_987962_1152055", + "8_181397_66488", + "8_713264_704686" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1098", + "seg": [ + [ + [ + "扩展", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-190", + "seg": [ + [ + [ + "通用", + "主题" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python中使用正则表达式": { + "children": [ + { + "正则表达式语法": { + "children": [ + { + "行定位符": { + "data": { + "uuid": "python-5-771", + "seg": [ + [ + [ + "定位", + "符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元字符": { + "data": { + "uuid": "python-5-772", + "seg": [ + [ + [ + "元字符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重复": { + "data": { + "uuid": "python-5-773", + "seg": [ + [ + [ + "重复" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7437861_53411104" + ] + } + } + } + } + }, + { + "字符类": { + "data": { + "uuid": "python-5-774", + "seg": [ + [ + [ + "字符", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "排除字符": { + "data": { + "uuid": "python-5-775", + "seg": [ + [ + [ + "排除", + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427390_53391786", + "8_766921_826835" + ] + } + } + } + } + }, + { + "选择字符": { + "data": { + "uuid": "python-5-776", + "seg": [ + [ + [ + "选择", + "字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7457507_53441719", + "8_730832_746958", + "8_7456807_53440866" + ] + } + } + } + } + }, + { + "转义字符": { + "data": { + "uuid": "python-5-777", + "seg": [ + [ + [ + "转义字符" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_719808_713934", + "8_753215_807628" + ] + } + } + } + } + }, + { + "分组": { + "data": { + "uuid": "python-5-778", + "seg": [ + [ + [ + "分组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1093359_1302704", + "8_7409592_53360063" + ] + } + } + } + } + }, + { + "在Python中使用正则": { + "data": { + "uuid": "python-5-779", + "seg": [ + [ + [ + "python", + "正则" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427498_53392032", + "8_1095542_1306990", + "8_7410869_53361698" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1099", + "seg": [ + [ + [ + "正则表达式", + "语法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_384968_422585" + ] + } + } + } + } + }, + { + "使用re模块实现正则表达式操作": { + "children": [ + { + "替换字符串": { + "data": { + "uuid": "python-5-780", + "seg": [ + [ + [ + "替换", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7408377_53358588" + ] + } + } + } + } + }, + { + "使用正则表达式分割字符串": { + "data": { + "uuid": "python-5-781", + "seg": [ + [ + [ + "正则表达式", + "分割", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_6648908_47808650", + "8_760500_817412", + "8_765641_824604", + "8_801605_896019", + "8_7422924_53381816", + "8_7452792_53435063", + "8_7430743_53398059", + "8_1016729_1208668", + "8_769289_830001", + "8_7413592_53365691" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1100", + "seg": [ + [ + [ + "re", + "模块", + "正则表达式", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-191", + "seg": [ + [ + [ + "python", + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向对象程序设计": { + "children": [ + { + "面向对象概述": { + "children": [ + { + "面向对象程序设计的特点": { + "data": { + "uuid": "python-5-782", + "seg": [ + [ + [ + "面向对象", + "程序设计" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7430911_53398729", + "8_945401_1083942", + "8_7455656_53438977", + "8_7455567_53438743", + "8_7434174_53404586", + "8_1520230_5575494" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1101", + "seg": [ + [ + [ + "面向对象", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类的定义和使用": { + "children": [ + { + "定义类": { + "data": { + "uuid": "python-5-783", + "seg": [ + [ + [ + "定义", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_656871_469044", + "8_738918_772129", + "8_769218_829891", + "8_7458786_53443455", + "8_7419472_53376678", + "8_919782_1057528", + "8_1078629_1283106", + "8_810208_905553", + "8_4646919_29330850", + "8_7435709_53406614" + ] + } + } + } + } + }, + { + "创建__init__方法": { + "data": { + "uuid": "python-5-784", + "seg": [ + [ + [ + "创建", + "init", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1078723_1283519", + "8_763888_822482", + "8_1056725_1253780", + "8_1082094_1288713" + ] + } + } + } + } + }, + { + "创建类的成员并访问": { + "data": { + "uuid": "python-5-785", + "seg": [ + [ + [ + "创建", + "类", + "成员", + "访问" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7420308_53378405" + ] + } + } + } + } + }, + { + "访问限制": { + "data": { + "uuid": "python-5-786", + "seg": [ + [ + [ + "访问" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_210446_149328" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1102", + "seg": [ + [ + [ + "类", + "定义" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继承": { + "children": [ + { + "继承的基本语法": { + "data": { + "uuid": "python-5-787", + "seg": [ + [ + [ + "继承", + "语法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7452833_53435698" + ] + } + } + } + } + }, + { + "方法重写": { + "data": { + "uuid": "python-5-788", + "seg": [ + [ + [ + "方法", + "重写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "派生类中调用基类的__init__方法": { + "data": { + "uuid": "python-5-789", + "seg": [ + [ + [ + "派生类", + "调用", + "基类", + "init", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1068290_1269304" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1103", + "seg": [ + [ + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1057705_1254825" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-192", + "seg": [ + [ + [ + "面向对象", + "程序设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块": { + "children": [ + { + "模块概述": { + "data": { + "uuid": "python-4-1104", + "seg": [ + [ + [ + "模块", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义模块": { + "children": [ + { + "创建模块": { + "data": { + "uuid": "python-5-790", + "seg": [ + [ + [ + "创建", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_237160_216907", + "8_7400620_53348638", + "8_757909_813704", + "8_182255_68056", + "8_764341_823009", + "8_983436_1145979", + "8_7429939_53396899", + "8_5894331_37302528", + "8_718587_838729", + "8_1093556_1303071" + ] + } + } + } + } + }, + { + "使用import语句导入模块": { + "data": { + "uuid": "python-5-791", + "seg": [ + [ + [ + "import", + "语句", + "导入", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_753204_807821", + "8_391925_434851", + "8_695949_579187", + "8_387570_426747", + "8_7460689_53445790", + "8_686420_548037", + "8_693168_570182", + "8_706351_622340", + "8_717427_710706" + ] + } + } + } + } + }, + { + "使用from…import语句": { + "data": { + "uuid": "python-5-792", + "seg": [ + [ + [ + "from", + "…", + "import", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_765078_823975", + "8_7451994_53433823" + ] + } + } + } + } + }, + { + "模块搜索目录": { + "data": { + "uuid": "python-5-793", + "seg": [ + [ + [ + "模块", + "搜索", + "目录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1105", + "seg": [ + [ + [ + "自定义", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python中的包": { + "children": [ + { + "Python程序的包结构": { + "data": { + "uuid": "python-5-794", + "seg": [ + [ + [ + "python", + "程序", + "包", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "以主程序的形式执行": { + "data": { + "uuid": "python-5-795", + "seg": [ + [ + [ + "主程序", + "形式", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1106", + "seg": [ + [ + [ + "python", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引用其他模块": { + "data": { + "uuid": "python-4-1107", + "seg": [ + [ + [ + "引用", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_6182731_43026343" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-193", + "seg": [ + [ + [ + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-9", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-1-1", + "seg": [ + [ + [ + "python", + "中阶" + ] + ] + ], + "related_data": {} + } + } + }, + { + "Python高阶": { + "children": [ + { + "科学计算基础软件包NumPy": { + "children": [ + { + "NumPy概述": { + "children": [ + { + "NumPy的前世今生": { + "data": { + "uuid": "python-4-1108", + "seg": [ + [ + [ + "numpy", + "前世", + "今生" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "NumPy数组vs Python列表": { + "data": { + "uuid": "python-4-1109", + "seg": [ + [ + [ + "numpy", + "数组", + "vs", + "python", + "列表" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "NumPy数组类型和属性": { + "data": { + "uuid": "python-4-1110", + "seg": [ + [ + [ + "numpy", + "数组", + "类型" + ], + [ + "属性" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "维、轴、秩": { + "data": { + "uuid": "python-4-1111", + "seg": [ + [ + [ + "维" + ], + [ + "轴" + ], + [] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "广播和矢量化": { + "data": { + "uuid": "python-4-1112", + "seg": [ + [ + [ + "广播" + ], + [ + "矢量化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-194", + "seg": [ + [ + [ + "numpy", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-3-195", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "创建数组": { + "data": { + "uuid": "python-3-196", + "seg": [ + [ + [ + "创建", + "数组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "操作数组": { + "children": [ + { + "索引": { + "data": { + "uuid": "python-4-1113", + "seg": [ + [ + [ + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "切片": { + "data": { + "uuid": "python-4-1114", + "seg": [ + [ + [ + "切片" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7464469_53450889", + "8_387679_427313" + ] + } + } + } + } + }, + { + "改变数组结构": { + "data": { + "uuid": "python-4-1115", + "seg": [ + [ + [ + "改变", + "数组", + "结构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "合并和拆分": { + "data": { + "uuid": "python-4-1116", + "seg": [ + [ + [ + "合并" + ], + [ + "拆分" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "复制": { + "data": { + "uuid": "python-4-1117", + "seg": [ + [ + [ + "复制" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "排序": { + "data": { + "uuid": "python-4-1118", + "seg": [ + [ + [ + "排序" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "查找": { + "data": { + "uuid": "python-4-1119", + "seg": [ + [ + [ + "查找" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7413302_53365170", + "8_7454528_53437206" + ] + } + } + } + } + }, + { + "筛选": { + "data": { + "uuid": "python-4-1120", + "seg": [ + [ + [ + "筛选" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_751308_805113" + ] + } + } + } + } + }, + { + "数组I/O": { + "data": { + "uuid": "python-4-1121", + "seg": [ + [ + [ + "数组", + "i", + "o" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7419627_53377132" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-197", + "seg": [ + [ + [ + "操作", + "数组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "常用函数": { + "children": [ + { + "np.nan和np.inf": { + "data": { + "uuid": "python-4-1122", + "seg": [ + [ + [ + "np", + "nan" + ], + [ + "np", + "inf" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7416417_53370481", + "8_3535708_23009405", + "8_772571_835873", + "8_748937_801649" + ] + } + } + } + } + }, + { + "函数命名空间": { + "data": { + "uuid": "python-4-1123", + "seg": [ + [ + [ + "函数", + "命名", + "空间" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数学函数": { + "data": { + "uuid": "python-4-1124", + "seg": [ + [ + [ + "数学", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "统计函数": { + "data": { + "uuid": "python-4-1125", + "seg": [ + [ + [ + "统计", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "插值函数": { + "data": { + "uuid": "python-4-1126", + "seg": [ + [ + [ + "插值", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "多项式拟合函数": { + "data": { + "uuid": "python-4-1127", + "seg": [ + [ + [ + "多项式", + "拟合", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "自定义广播函数": { + "data": { + "uuid": "python-4-1128", + "seg": [ + [ + [ + "自定义", + "广播", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-198", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "掩码数组": { + "children": [ + { + "创建掩码数组": { + "data": { + "uuid": "python-4-1129", + "seg": [ + [ + [ + "创建", + "掩码", + "数组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "访问掩码数组": { + "data": { + "uuid": "python-4-1130", + "seg": [ + [ + [ + "访问", + "掩码", + "数组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-199", + "seg": [ + [ + [ + "掩码", + "数组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "矩阵对象": { + "children": [ + { + "创建矩阵": { + "data": { + "uuid": "python-4-1131", + "seg": [ + [ + [ + "创建", + "矩阵" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_6546437_46134052", + "8_714290_706442", + "8_7426376_53389966" + ] + } + } + } + } + }, + { + "矩阵特有属性": { + "data": { + "uuid": "python-4-1132", + "seg": [ + [ + [ + "矩阵", + "特有", + "属性" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "矩阵乘法": { + "data": { + "uuid": "python-4-1133", + "seg": [ + [ + [ + "矩阵", + "乘法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-200", + "seg": [ + [ + [ + "矩阵", + "对象" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "随机抽样子模块": { + "children": [ + { + "随机数": { + "data": { + "uuid": "python-4-1134", + "seg": [ + [ + [ + "随机数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "随机抽样": { + "data": { + "uuid": "python-4-1135", + "seg": [ + [ + [ + "随机抽样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "正态分布": { + "data": { + "uuid": "python-4-1136", + "seg": [ + [ + [ + "正态分布" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "伪随机数的深度思考": { + "data": { + "uuid": "python-4-1137", + "seg": [ + [ + [ + "伪", + "随机数", + "深度", + "思考" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-201", + "seg": [ + [ + [ + "随机抽样", + "子", + "模块" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-10", + "seg": [ + [ + [ + "科学计算", + "基础", + "软件包", + "numpy" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "结构化数据分析工具Pandas": { + "children": [ + { + "Pandas概览": { + "children": [ + { + "Panda的特点": { + "data": { + "uuid": "python-4-1138", + "seg": [ + [ + [ + "panda" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "安装和使用": { + "data": { + "uuid": "python-4-1139", + "seg": [ + [ + [ + "安装" + ], + [] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1055649_1252870" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-202", + "seg": [ + [ + [ + "pandas", + "概览" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据结构": { + "children": [ + { + "索引数组Index": { + "data": { + "uuid": "python-4-1140", + "seg": [ + [ + [ + "索引", + "数组", + "index" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "带标签的一维同构数组Series": { + "data": { + "uuid": "python-4-1141", + "seg": [ + [ + [ + "带", + "标签", + "同构", + "数组", + "series" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "带标签的二维异构表格DataFrame": { + "data": { + "uuid": "python-4-1142", + "seg": [ + [ + [ + "带", + "标签", + "异构", + "表格", + "dataframe" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7395384_53338744", + "8_7442292_53419716" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-203", + "seg": [ + [ + [ + "数据结构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基本操作": { + "children": [ + { + "数据预览": { + "data": { + "uuid": "python-4-1143", + "seg": [ + [ + [ + "数据", + "预览" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据选择": { + "data": { + "uuid": "python-4-1144", + "seg": [ + [ + [ + "数据", + "选择" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "改变数据结构": { + "data": { + "uuid": "python-4-1145", + "seg": [ + [ + [ + "改变", + "数据结构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "改变数据类型": { + "data": { + "uuid": "python-4-1146", + "seg": [ + [ + [ + "改变", + "数据类型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "广播与矢量化运算": { + "data": { + "uuid": "python-4-1147", + "seg": [ + [ + [ + "广播" + ], + [ + "矢量化", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "行列级广播函数": { + "data": { + "uuid": "python-4-1148", + "seg": [ + [ + [ + "行列", + "级", + "广播", + "函数" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7433504_53403772" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-204", + "seg": [ + [ + [ + "基本操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "高级应用": { + "children": [ + { + "分组": { + "data": { + "uuid": "python-4-1149", + "seg": [ + [ + [ + "分组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "聚合": { + "data": { + "uuid": "python-4-1150", + "seg": [ + [ + [ + "聚合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "层次化索引": { + "data": { + "uuid": "python-4-1151", + "seg": [ + [ + [ + "层次化", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "表级广播函数": { + "data": { + "uuid": "python-4-1152", + "seg": [ + [ + [ + "表级", + "广播", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "日期时间索引对象": { + "data": { + "uuid": "python-4-1153", + "seg": [ + [ + [ + "日期", + "时间", + "索引", + "对象" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "透视表": { + "data": { + "uuid": "python-4-1154", + "seg": [ + [ + [ + "透视", + "表" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据可视化": { + "data": { + "uuid": "python-4-1155", + "seg": [ + [ + [ + "数据", + "可视化" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7455800_53439138", + "8_7445343_53425952", + "8_7460967_53446178", + "8_7454719_53437378" + ] + } + } + } + } + }, + { + "数据I/O": { + "data": { + "uuid": "python-4-1156", + "seg": [ + [ + [ + "数据", + "i", + "o" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-205", + "seg": [ + [ + [ + "高级" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-11", + "seg": [ + [ + [ + "结构化", + "数据分析", + "工具", + "pandas" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "绘图库Matplotlib": { + "children": [ + { + "安装配置": { + "data": { + "uuid": "python-3-206", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Matplotlib快速入门": { + "children": [ + { + "画布": { + "data": { + "uuid": "python-4-1157", + "seg": [ + [ + [ + "画布" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_4645606_29328454" + ] + } + } + } + } + }, + { + "子图与子图布局": { + "data": { + "uuid": "python-4-1158", + "seg": [ + [ + [ + "子图" + ], + [ + "子图", + "布局" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "坐标轴与刻度的名称": { + "data": { + "uuid": "python-4-1159", + "seg": [ + [ + [ + "坐标轴" + ], + [ + "刻度", + "名称" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7414502_53367271" + ] + } + } + } + } + }, + { + "图例和文本标注": { + "data": { + "uuid": "python-4-1160", + "seg": [ + [ + [ + "图例" + ], + [ + "文本", + "标注" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "显示和保存": { + "data": { + "uuid": "python-4-1161", + "seg": [ + [ + [ + "显示" + ], + [ + "保存" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-207", + "seg": [ + [ + [ + "matplotlib", + "快速", + "入门" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图形绘制": { + "children": [ + { + "曲线图": { + "data": { + "uuid": "python-4-1162", + "seg": [ + [ + [ + "曲线图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "散点图": { + "data": { + "uuid": "python-4-1163", + "seg": [ + [ + [ + "散点图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "直方图": { + "data": { + "uuid": "python-4-1164", + "seg": [ + [ + [ + "直方图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "饼图": { + "data": { + "uuid": "python-4-1165", + "seg": [ + [ + [ + "饼", + "图" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_766549_825821" + ] + } + } + } + } + }, + { + "箱线图": { + "data": { + "uuid": "python-4-1166", + "seg": [ + [ + [ + "箱", + "线图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "绘制图像": { + "data": { + "uuid": "python-4-1167", + "seg": [ + [ + [ + "绘制", + "图像" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7433020_53402770", + "8_7427408_53391882", + "8_7418814_53375375", + "8_1093243_1302772", + "8_7451295_53432482", + "8_7453232_53435931", + "8_1097130_1310477", + "8_7435618_53406724", + "8_1078202_1282579", + "8_7452008_53433875" + ] + } + } + } + } + }, + { + "极坐标绘图": { + "data": { + "uuid": "python-4-1168", + "seg": [ + [ + [ + "极坐标", + "绘图" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7461674_53447324" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-208", + "seg": [ + [ + [ + "图形", + "绘制" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7438475_53411829", + "8_1090113_1296786" + ] + } + } + } + } + }, + { + "风格和样式": { + "children": [ + { + "画布设置": { + "data": { + "uuid": "python-4-1169", + "seg": [ + [ + [ + "画布", + "设置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "子图布局": { + "data": { + "uuid": "python-4-1170", + "seg": [ + [ + [ + "子图", + "布局" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "颜色": { + "data": { + "uuid": "python-4-1171", + "seg": [ + [ + [ + "颜色" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "线条和点的样式": { + "data": { + "uuid": "python-4-1172", + "seg": [ + [ + [ + "线条", + "和点", + "样式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "坐标轴": { + "data": { + "uuid": "python-4-1173", + "seg": [ + [ + [ + "坐标轴" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "刻度": { + "data": { + "uuid": "python-4-1174", + "seg": [ + [ + [ + "刻度" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文本": { + "data": { + "uuid": "python-4-1175", + "seg": [ + [ + [ + "文本" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图例": { + "data": { + "uuid": "python-4-1176", + "seg": [ + [ + [ + "图例" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "网格设置": { + "data": { + "uuid": "python-4-1177", + "seg": [ + [ + [ + "网格", + "设置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-209", + "seg": [ + [ + [ + "风格" + ], + [ + "样式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Matplotlib扩展": { + "children": [ + { + "使用BaseMap绘制地图": { + "data": { + "uuid": "python-4-1178", + "seg": [ + [ + [ + "basemap", + "绘制地图" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1090115_1296815" + ] + } + } + } + } + }, + { + "3D绘图工具包": { + "data": { + "uuid": "python-4-1179", + "seg": [ + [ + [ + "d", + "绘图", + "工具包" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-210", + "seg": [ + [ + [ + "matplotlib", + "扩展" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-12", + "seg": [ + [ + [ + "绘", + "图库", + "matplotlib" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "科学计算工具包SciPy": { + "children": [ + { + "SciPy概览": { + "data": { + "uuid": "python-3-211", + "seg": [ + [ + [ + "scipy", + "概览" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7438221_53412615" + ] + } + } + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-3-212", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据插值": { + "children": [ + { + "一维插值": { + "data": { + "uuid": "python-4-1180", + "seg": [ + [ + [ + "插值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "二维插值": { + "data": { + "uuid": "python-4-1181", + "seg": [ + [ + [ + "插值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "离散数据插值到网格": { + "data": { + "uuid": "python-4-1182", + "seg": [ + [ + [ + "离散", + "数据", + "插值", + "网格" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-213", + "seg": [ + [ + [ + "数据", + "插值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "曲线拟合": { + "children": [ + { + "最小二乘法拟合": { + "data": { + "uuid": "python-4-1183", + "seg": [ + [ + [ + "最小", + "乘法", + "拟合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用curve_fit函数拟合": { + "data": { + "uuid": "python-4-1184", + "seg": [ + [ + [ + "curve", + "fit", + "函数", + "拟合" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7455746_53439065" + ] + } + } + } + } + }, + { + "多项式拟合函数": { + "data": { + "uuid": "python-4-1185", + "seg": [ + [ + [ + "多项式", + "拟合", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-214", + "seg": [ + [ + [ + "曲线拟合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "傅里叶变换": { + "children": [ + { + "时域到频域的转换": { + "data": { + "uuid": "python-4-1186", + "seg": [ + [ + [ + "时域", + "频域", + "转换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "一维傅里叶变换的应用": { + "data": { + "uuid": "python-4-1187", + "seg": [ + [ + [ + "傅里叶", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "二维傅里叶变换的应用": { + "data": { + "uuid": "python-4-1188", + "seg": [ + [ + [ + "傅里叶", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-215", + "seg": [ + [ + [ + "傅里叶", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像处理": { + "children": [ + { + "图像卷积": { + "data": { + "uuid": "python-4-1189", + "seg": [ + [ + [ + "图像", + "卷积" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "边缘检测": { + "data": { + "uuid": "python-4-1190", + "seg": [ + [ + [ + "边缘", + "检测" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "侵蚀和膨胀": { + "data": { + "uuid": "python-4-1191", + "seg": [ + [ + [ + "侵蚀" + ], + [ + "膨胀" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像测量": { + "data": { + "uuid": "python-4-1192", + "seg": [ + [ + [ + "图像", + "测量" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-216", + "seg": [ + [ + [ + "图像处理" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "积分": { + "children": [ + { + "对给定函数的定积分": { + "data": { + "uuid": "python-4-1193", + "seg": [ + [ + [ + "给定", + "函数", + "的定", + "积分" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "对给定样本的定积分": { + "data": { + "uuid": "python-4-1194", + "seg": [ + [ + [ + "给定", + "样本", + "的定", + "积分" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "二重定积分": { + "data": { + "uuid": "python-4-1195", + "seg": [ + [ + [ + "定", + "积分" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7408037_53358350" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-217", + "seg": [ + [ + [ + "积分" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "非线性方程求解": { + "children": [ + { + "非线性方程": { + "data": { + "uuid": "python-4-1196", + "seg": [ + [ + [ + "非线性", + "方程" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1053954_1251226", + "8_652809_460840", + "8_7422761_53381427" + ] + } + } + } + } + }, + { + "非线性方程组": { + "data": { + "uuid": "python-4-1197", + "seg": [ + [ + [ + "线性方程组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-218", + "seg": [ + [ + [ + "非线性", + "方程" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "线性代数": { + "children": [ + { + "计算矩阵的行列式": { + "data": { + "uuid": "python-4-1198", + "seg": [ + [ + [ + "计算", + "矩阵", + "行列式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "求解逆矩阵": { + "data": { + "uuid": "python-4-1199", + "seg": [ + [ + [ + "逆", + "矩阵" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "计算特征向量和特征值": { + "data": { + "uuid": "python-4-1200", + "seg": [ + [ + [ + "计算", + "特征向量" + ], + [ + "特征值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "矩阵的奇异值分解": { + "data": { + "uuid": "python-4-1201", + "seg": [ + [ + [ + "矩阵", + "奇异", + "值", + "分解" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "求解线性方程组": { + "data": { + "uuid": "python-4-1202", + "seg": [ + [ + [ + "线性方程组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-219", + "seg": [ + [ + [ + "线性代数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "聚类": { + "children": [ + { + "k-means聚类": { + "data": { + "uuid": "python-4-1203", + "seg": [ + [ + [ + "k", + "means", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "层次聚类": { + "data": { + "uuid": "python-4-1204", + "seg": [ + [ + [ + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-220", + "seg": [ + [ + [ + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "空间计算": { + "children": [ + { + "空间旋转的表述": { + "data": { + "uuid": "python-4-1205", + "seg": [ + [ + [ + "空间", + "旋转", + "表述" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7442345_53419164" + ] + } + } + } + } + }, + { + "三维旋转": { + "data": { + "uuid": "python-4-1206", + "seg": [ + [ + [ + "旋转" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-221", + "seg": [ + [ + [ + "空间", + "计算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-13", + "seg": [ + [ + [ + "科学计算", + "工具包", + "scipy" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据分析": { + "children": [ + { + "Python基础": { + "children": [ + { + "创建Python脚本": { + "data": { + "uuid": "python-4-1207", + "seg": [ + [ + [ + "创建", + "python", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行Python脚本": { + "data": { + "uuid": "python-4-1208", + "seg": [ + [ + [ + "运行", + "python", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与命令行进行交互的几项技巧": { + "data": { + "uuid": "python-4-1209", + "seg": [ + [ + [], + [ + "命令行", + "交互", + "技巧" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python语言基础要素": { + "children": [ + { + "数值": { + "data": { + "uuid": "python-5-796", + "seg": [ + [ + [ + "数值" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7461142_53446232", + "8_766031_825095", + "8_7447209_53426721" + ] + } + } + } + } + }, + { + "字符串": { + "data": { + "uuid": "python-5-797", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "正则表达式与模式匹配": { + "data": { + "uuid": "python-5-798", + "seg": [ + [ + [ + "正则表达式" + ], + [ + "模式匹配" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日期": { + "data": { + "uuid": "python-5-799", + "seg": [ + [ + [ + "日期" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_732919_753729", + "8_7440397_53415856" + ] + } + } + } + } + }, + { + "列表": { + "data": { + "uuid": "python-5-800", + "seg": [ + [ + [ + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "元组": { + "data": { + "uuid": "python-5-801", + "seg": [ + [ + [ + "元组" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_938910_1074696" + ] + } + } + } + } + }, + { + "字典": { + "data": { + "uuid": "python-5-802", + "seg": [ + [ + [ + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制流": { + "data": { + "uuid": "python-5-803", + "seg": [ + [ + [ + "控制流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1210", + "seg": [ + [ + [ + "python", + "语言", + "基础", + "要素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取文本文件": { + "children": [ + { + "创建文本文件": { + "data": { + "uuid": "python-5-804", + "seg": [ + [ + [ + "创建", + "文本文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "脚本和输入文件在同一位置": { + "data": { + "uuid": "python-5-805", + "seg": [ + [ + [ + "脚本" + ], + [ + "输入", + "文件", + "位置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取文件的新型语法": { + "data": { + "uuid": "python-5-806", + "seg": [ + [ + [ + "读取", + "文件", + "新型", + "语法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1056636_1253701", + "8_176615_59100", + "8_763250_821608", + "8_7399539_53346808" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1211", + "seg": [ + [ + [ + "读取", + "文本文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用glob读取多个文本文件": { + "data": { + "uuid": "python-4-1212", + "seg": [ + [ + [ + "glob", + "读取", + "文本文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "写入文本文件": { + "children": [ + { + "向first_script.py添加代码": { + "data": { + "uuid": "python-5-807", + "seg": [ + [ + [ + "first", + "script", + "py", + "添加" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1100789_1315555" + ] + } + } + } + } + }, + { + "写入CSV文件": { + "data": { + "uuid": "python-5-808", + "seg": [ + [ + [ + "写入", + "csv", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7458683_53444143", + "8_663861_480442", + "8_7456241_53439713" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1213", + "seg": [ + [ + [ + "写入", + "文本文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "print语句": { + "data": { + "uuid": "python-4-1214", + "seg": [ + [ + [ + "print", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_737107_766224", + "8_698346_585241" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-222", + "seg": [ + [ + [ + "python", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CSV文件": { + "children": [ + { + "筛选特定的行": { + "children": [ + { + "行中的值满足某个条件": { + "data": { + "uuid": "python-5-809", + "seg": [ + [ + [ + "行", + "值", + "条件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "行中的值属于某个集合": { + "data": { + "uuid": "python-5-810", + "seg": [ + [ + [ + "行", + "值", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7460228_53445301", + "8_7452556_53434573", + "8_7426549_53390031", + "8_7451550_53432859", + "8_1058196_1255401", + "8_1064433_1262679" + ] + } + } + } + } + }, + { + "行中的值匹配于某个模式/ 正则表达式": { + "data": { + "uuid": "python-5-811", + "seg": [ + [ + [ + "行", + "值", + "匹配", + "模式", + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1215", + "seg": [ + [ + [ + "筛选", + "特定", + "行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选取特定的列": { + "children": [ + { + "列索引值": { + "data": { + "uuid": "python-5-812", + "seg": [ + [ + [ + "列", + "索引", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列标题": { + "data": { + "uuid": "python-5-813", + "seg": [ + [ + [ + "列", + "标题" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7413510_53365581", + "8_1100988_1315645", + "8_7409271_53359709", + "8_7405947_53355815" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1216", + "seg": [ + [ + [ + "选取", + "特定", + "列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选取连续的行": { + "data": { + "uuid": "python-4-1217", + "seg": [ + [ + [ + "选取", + "连续", + "行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加标题行": { + "data": { + "uuid": "python-4-1218", + "seg": [ + [ + [ + "添加", + "标题" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取多个CSV文件": { + "data": { + "uuid": "python-4-1219", + "seg": [ + [ + [ + "读取", + "csv", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7419585_53377102", + "8_7413835_53366111", + "8_7396380_53339913", + "8_679523_527139", + "8_7413102_53364872", + "8_213101_155349", + "8_7438411_53411862", + "8_702073_592287", + "8_884124_1022934", + "8_7405551_53355183" + ] + } + } + } + } + }, + { + "从多个文件中连接数据": { + "data": { + "uuid": "python-4-1220", + "seg": [ + [ + [ + "文件", + "连接", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_6211752_43388542", + "8_7439435_53414388", + "8_7423255_53383105" + ] + } + } + } + } + }, + { + "计算每个文件中值的总和与均值": { + "data": { + "uuid": "python-4-1221", + "seg": [ + [ + [ + "计算", + "文件", + "中值", + "总和" + ], + [ + "均值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-223", + "seg": [ + [ + [ + "csv", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Excel文件": { + "children": [ + { + "内省Excel工作簿": { + "data": { + "uuid": "python-4-1222", + "seg": [ + [ + [ + "内省", + "excel", + "工作", + "簿" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理单个工作表": { + "children": [ + { + "读写Excel文件": { + "data": { + "uuid": "python-5-814", + "seg": [ + [ + [ + "读写", + "excel", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1062383_1260144", + "8_807520_903618", + "8_7430140_53397149", + "8_7458887_53443770", + "8_7405566_53354833", + "8_7428192_53393641", + "8_1058142_1255605", + "8_7396837_53341154", + "8_1090634_1297677", + "8_7410314_53360933" + ] + } + } + } + } + }, + { + "筛选特定行": { + "data": { + "uuid": "python-5-815", + "seg": [ + [ + [ + "筛选", + "特定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1223", + "seg": [ + [ + [ + "单个", + "工作", + "表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取工作簿中的所有工作表": { + "children": [ + { + "在所有工作表中筛选特定行": { + "data": { + "uuid": "python-5-816", + "seg": [ + [ + [ + "工作", + "表中", + "筛选", + "特定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在所有工作表中选取特定列": { + "data": { + "uuid": "python-5-817", + "seg": [ + [ + [ + "工作", + "表中", + "选取", + "特定", + "列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1224", + "seg": [ + [ + [ + "读取", + "工作", + "簿", + "表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Excel工作簿中读取一组工作表": { + "data": { + "uuid": "python-4-1225", + "seg": [ + [ + [ + "excel", + "工作", + "簿", + "读取", + "表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理多个工作簿": { + "children": [ + { + "工作表计数以及每个工作表中的行列计数": { + "data": { + "uuid": "python-5-818", + "seg": [ + [ + [ + "工作", + "表", + "计数" + ], + [ + "工作", + "表中", + "行列", + "计数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_699675_587881" + ] + } + } + } + } + }, + { + "从多个工作簿中连接数据": { + "data": { + "uuid": "python-5-819", + "seg": [ + [ + [ + "工作", + "簿", + "连接", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1226", + "seg": [ + [ + [ + "工作", + "簿" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-224", + "seg": [ + [ + [ + "excel", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库": { + "children": [ + { + "Python内置的sqlite3 模块": { + "children": [ + { + "向表中插入新记录": { + "data": { + "uuid": "python-5-820", + "seg": [ + [ + [ + "表中", + "插入", + "记录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新表中记录": { + "data": { + "uuid": "python-5-821", + "seg": [ + [ + [ + "更新", + "表中", + "记录" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1227", + "seg": [ + [ + [ + "python", + "内置", + "sqlite3", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MySQL数据库": { + "children": [ + { + "向表中插入新记录": { + "data": { + "uuid": "python-5-822", + "seg": [ + [ + [ + "表中", + "插入", + "记录" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "查询一个表并将输出写入CSV文件": { + "data": { + "uuid": "python-5-823", + "seg": [ + [ + [ + "查询", + "表并", + "输出", + "写入", + "csv", + "文件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "更新表中记录": { + "data": { + "uuid": "python-5-824", + "seg": [ + [ + [ + "更新", + "表中", + "记录" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1228", + "seg": [ + [ + [ + "mysql", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-225", + "seg": [ + [ + [ + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用程序": { + "children": [ + { + "为CSV文件中数据的任意数目分类计算统计量": { + "data": { + "uuid": "python-4-1229", + "seg": [ + [ + [ + "csv", + "文件", + "数据", + "任意", + "数目", + "分类", + "计算", + "统计", + "量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为文本文件中数据的任意数目分类计算统计量": { + "data": { + "uuid": "python-4-1230", + "seg": [ + [ + [ + "文本文件", + "数据", + "任意", + "数目", + "分类", + "计算", + "统计", + "量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-226", + "seg": [ + [ + [ + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图与图表": { + "children": [ + { + "matplotlib": { + "children": [ + { + "条形图": { + "data": { + "uuid": "python-5-825", + "seg": [ + [ + [ + "条形图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "直方图": { + "data": { + "uuid": "python-5-826", + "seg": [ + [ + [ + "直方图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "折线图": { + "data": { + "uuid": "python-5-827", + "seg": [ + [ + [ + "折线图" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443534_53420711", + "8_714759_706840", + "8_7411419_53362345", + "8_7425876_53387798" + ] + } + } + } + } + }, + { + "散点图": { + "data": { + "uuid": "python-5-828", + "seg": [ + [ + [ + "散点图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "箱线图": { + "data": { + "uuid": "python-5-829", + "seg": [ + [ + [ + "箱", + "线图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1231", + "seg": [ + [ + [ + "matplotlib" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pandas": { + "data": { + "uuid": "python-4-1232", + "seg": [ + [ + [ + "pandas" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ggplot": { + "data": { + "uuid": "python-4-1233", + "seg": [ + [ + [ + "ggplot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "seaborn": { + "data": { + "uuid": "python-4-1234", + "seg": [ + [ + [ + "seaborn" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-227", + "seg": [ + [ + [ + "图" + ], + [ + "图表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "描述性统计与建模": { + "children": [ + { + "数据集": { + "children": [ + { + "葡萄酒质量": { + "data": { + "uuid": "python-5-830", + "seg": [ + [ + [ + "葡萄酒", + "质量" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "客户流失": { + "data": { + "uuid": "python-5-831", + "seg": [ + [ + [ + "客户", + "流失" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1235", + "seg": [ + [ + [ + "数据", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "葡萄酒质量": { + "children": [ + { + "描述性统计": { + "data": { + "uuid": "python-5-832", + "seg": [ + [ + [ + "描述性", + "统计" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7423980_53384417", + "8_7430312_53397395", + "8_7455040_53437777", + "8_7430120_53397108", + "8_7451835_53433466", + "8_1679770_21754919" + ] + } + } + } + } + }, + { + "成对变量之间的关系和相关性": { + "data": { + "uuid": "python-5-833", + "seg": [ + [ + [ + "成", + "变量", + "关系" + ], + [ + "相关性" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用最小二乘估计进行线性回归": { + "data": { + "uuid": "python-5-834", + "seg": [ + [ + [ + "最小", + "估计", + "线性", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "系数解释": { + "data": { + "uuid": "python-5-835", + "seg": [ + [ + [ + "系数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "自变量标准化": { + "data": { + "uuid": "python-5-836", + "seg": [ + [ + [ + "自变量", + "标准化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "预测": { + "data": { + "uuid": "python-5-837", + "seg": [ + [ + [ + "预测" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1236", + "seg": [ + [ + [ + "葡萄酒", + "质量" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "客户流失": { + "children": [ + { + "逻辑斯蒂回归": { + "data": { + "uuid": "python-5-838", + "seg": [ + [ + [ + "逻辑", + "斯蒂", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "系数解释": { + "data": { + "uuid": "python-5-839", + "seg": [ + [ + [ + "系数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "预测": { + "data": { + "uuid": "python-5-840", + "seg": [ + [ + [ + "预测" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1237", + "seg": [ + [ + [ + "客户", + "流失" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-228", + "seg": [ + [ + [ + "描述性", + "统计" + ], + [ + "建模" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "按计划自动运行脚本": { + "children": [ + { + "任务计划程序(Windows系统)": { + "data": { + "uuid": "python-4-1238", + "seg": [ + [ + [ + "计划", + "程序", + "windows", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cron工具(macOS系统和Unix系统)": { + "children": [ + { + "cron表文件:一次性设置": { + "data": { + "uuid": "python-5-841", + "seg": [ + [ + [ + "cron", + "表", + "文件" + ] + ], + [ + [ + "一次性", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向cron表文件中添加cron任务": { + "data": { + "uuid": "python-5-842", + "seg": [ + [ + [ + "cron", + "表", + "文件", + "添加" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1239", + "seg": [ + [ + [ + "cron", + "工具", + "macos", + "系统" + ], + [ + "unix", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-229", + "seg": [ + [ + [ + "按计划", + "自动", + "运行", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从这里启航": { + "children": [ + { + "更多的标准库模块和内置函数": { + "children": [ + { + "Python标准库(PSL):更多的标准模块": { + "data": { + "uuid": "python-5-843", + "seg": [ + [ + [ + "python", + "标准", + "库", + "psl" + ] + ], + [ + [ + "更多", + "标准", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置函数": { + "data": { + "uuid": "python-5-844", + "seg": [ + [ + [ + "内置", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_757704_814547" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1240", + "seg": [ + [ + [ + "更多", + "标准", + "库", + "模块" + ], + [ + "内置", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python包索引(PyPI):更多的扩展模块": { + "children": [ + { + "NumPy": { + "data": { + "uuid": "python-5-845", + "seg": [ + [ + [ + "numpy" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "SciPy": { + "data": { + "uuid": "python-5-846", + "seg": [ + [ + [ + "scipy" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7428766_53395298" + ] + } + } + } + } + }, + { + "Scikit-Learn": { + "data": { + "uuid": "python-5-847", + "seg": [ + [ + [ + "scikit", + "learn" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更多的扩展包": { + "data": { + "uuid": "python-5-848", + "seg": [ + [ + [ + "更多", + "扩展", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1241", + "seg": [ + [ + [ + "python", + "包", + "索引", + "pypi" + ] + ], + [ + [ + "更多", + "扩展", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更多的数据结构": { + "children": [ + { + "栈": { + "data": { + "uuid": "python-5-849", + "seg": [ + [ + [ + "栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "队列": { + "data": { + "uuid": "python-5-850", + "seg": [ + [ + [ + "队列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "树": { + "data": { + "uuid": "python-5-851", + "seg": [ + [ + [ + "树" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1242", + "seg": [ + [ + [ + "更多", + "数据结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从这里启航": { + "data": { + "uuid": "python-4-1243", + "seg": [ + [ + [ + "启航" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-230", + "seg": [ + [ + [ + "启航" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "准备工作": { + "children": [ + { + "本书内容": { + "children": [ + { + "什么类型的数据": { + "data": { + "uuid": "python-5-852", + "seg": [ + [ + [ + "类型", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7427496_53391961" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1244", + "seg": [ + [ + [ + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为何利用Python进行数据分析": { + "children": [ + { + "Python作为胶水": { + "data": { + "uuid": "python-5-853", + "seg": [ + [ + [ + "python", + "胶水" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "解决“双语言”难题": { + "data": { + "uuid": "python-5-854", + "seg": [ + [ + [ + "双", + "语言", + "难题" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1087322_1294082", + "8_7450887_53432105", + "8_7442971_53419987" + ] + } + } + } + } + }, + { + "为何不使用Python": { + "data": { + "uuid": "python-5-855", + "seg": [ + [ + [ + "python" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1245", + "seg": [ + [ + [ + "利用", + "python", + "数据分析" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7444386_53422586", + "8_7430372_53397467" + ] + } + } + } + } + }, + { + "重要的Python库": { + "children": [ + { + "IPython与Jupyter": { + "data": { + "uuid": "python-5-856", + "seg": [ + [ + [ + "ipython" + ], + [ + "jupyter" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_688181_553536" + ] + } + } + } + } + }, + { + "statsmodels": { + "data": { + "uuid": "python-5-857", + "seg": [ + [ + [ + "statsmodels" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1246", + "seg": [ + [ + [ + "python", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装与设置": { + "children": [ + { + "Windows": { + "data": { + "uuid": "python-5-858", + "seg": [ + [ + [ + "windows" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Apple(OS X和macOS)": { + "data": { + "uuid": "python-5-859", + "seg": [ + [ + [ + "apple", + "os", + "x" + ], + [ + "macos" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GNU/Linux": { + "data": { + "uuid": "python-5-860", + "seg": [ + [ + [ + "gnu", + "linux" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1079554_1284231" + ] + } + } + } + } + }, + { + "安装及更新Python包": { + "data": { + "uuid": "python-5-861", + "seg": [ + [ + [ + "安装" + ], + [ + "更新", + "python", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python 2和Python": { + "data": { + "uuid": "python-5-862", + "seg": [ + [ + [ + "python" + ], + [ + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成开发环境和文本编辑器": { + "data": { + "uuid": "python-5-863", + "seg": [ + [ + [ + "集成", + "开发", + "环境" + ], + [ + "文本编辑", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1247", + "seg": [ + [ + [ + "安装" + ], + [ + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "社区和会议": { + "data": { + "uuid": "python-4-1248", + "seg": [ + [ + [ + "社区" + ], + [ + "会议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "快速浏览本书": { + "children": [ + { + "代码示例": { + "children": [ + { + "一次性模拟多次随机漫步": { + "data": { + "uuid": "python-6-174", + "seg": [ + [ + [ + "一次性", + "模拟", + "随机", + "漫步" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7461711_53446985", + "8_7399272_53346692" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-864", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "示例数据": { + "data": { + "uuid": "python-5-865", + "seg": [ + [ + [ + "示例", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入约定": { + "data": { + "uuid": "python-5-866", + "seg": [ + [ + [ + "导入", + "约定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "术语": { + "data": { + "uuid": "python-5-867", + "seg": [ + [ + [ + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1249", + "seg": [ + [ + [ + "快速", + "浏览" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7432807_53433894" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-231", + "seg": [ + [ + [ + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内建数据结构、函数及文件": { + "children": [ + { + "数据结构和序列": { + "children": [ + { + "内建序列函数": { + "data": { + "uuid": "python-5-868", + "seg": [ + [ + [ + "建", + "序列", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合": { + "data": { + "uuid": "python-5-869", + "seg": [ + [ + [ + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1250", + "seg": [ + [ + [ + "数据结构" + ], + [ + "序列" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7449231_53430634" + ] + } + } + } + } + }, + { + "函数": { + "children": [ + { + "命名空间、作用域和本地函数": { + "data": { + "uuid": "python-5-870", + "seg": [ + [ + [ + "命名", + "空间" + ], + [ + "作用域" + ], + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_797744_887910" + ] + } + } + } + } + }, + { + "返回多个值": { + "data": { + "uuid": "python-5-871", + "seg": [ + [ + [ + "返回", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数是对象": { + "data": { + "uuid": "python-5-872", + "seg": [ + [ + [ + "函数", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451750_53433211", + "8_703144_593982", + "8_356621_372419", + "8_7409903_53360369", + "8_7440948_53416651", + "8_7418387_53374331", + "8_357891_375207", + "8_4645846_30317356", + "8_390227_431620", + "8_7435502_53406141" + ] + } + } + } + } + }, + { + "匿名(Lambda)函数": { + "data": { + "uuid": "python-5-873", + "seg": [ + [ + [ + "匿名", + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "柯里化:部分参数应用": { + "data": { + "uuid": "python-5-874", + "seg": [ + [ + [ + "柯里化" + ] + ], + [ + [ + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成器": { + "data": { + "uuid": "python-5-875", + "seg": [ + [ + [ + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "错误和异常处理": { + "data": { + "uuid": "python-5-876", + "seg": [ + [ + [], + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1251", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件与操作系统": { + "children": [ + { + "字节与Unicode文件": { + "data": { + "uuid": "python-5-877", + "seg": [ + [ + [ + "字节" + ], + [ + "unicode", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1252", + "seg": [ + [ + [ + "文件" + ], + [ + "操作系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-232", + "seg": [ + [ + [ + "建", + "数据结构" + ], + [ + "函数" + ], + [ + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NumPy基础:数组与向量化计算": { + "children": [ + { + "NumPy ndarray:多维数组对象": { + "children": [ + { + "生成ndarray": { + "data": { + "uuid": "python-5-878", + "seg": [ + [ + [ + "生成", + "ndarray" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7461639_53446928", + "8_898843_1035505", + "8_1082356_1288345" + ] + } + } + } + } + }, + { + "ndarray的数据类型": { + "data": { + "uuid": "python-5-879", + "seg": [ + [ + [ + "ndarray", + "数据类型" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_792591_884620" + ] + } + } + } + } + }, + { + "NumPy数组算术": { + "data": { + "uuid": "python-5-880", + "seg": [ + [ + [ + "numpy", + "数组", + "算术" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1906824_9415288", + "8_7418088_53373929", + "8_5781159_36547322", + "8_7421145_53379058", + "8_7409349_53359726", + "8_7432142_53401084", + "8_1099671_1314699", + "8_749709_802350", + "8_7414453_53367218", + "8_750865_805888" + ] + } + } + } + } + }, + { + "基础索引与切片": { + "data": { + "uuid": "python-5-881", + "seg": [ + [ + [ + "基础", + "索引" + ], + [ + "切片" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "布尔索引": { + "data": { + "uuid": "python-5-882", + "seg": [ + [ + [ + "布尔", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神奇索引": { + "data": { + "uuid": "python-5-883", + "seg": [ + [ + [ + "神奇", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数组转置和换轴": { + "data": { + "uuid": "python-5-884", + "seg": [ + [ + [ + "数组", + "转置" + ], + [ + "换轴" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7408783_53358999", + "8_3535547_23009112", + "8_7445364_53424010", + "8_7452581_53434587", + "8_831996_933928", + "8_864358_993346", + "8_7418765_53375395", + "8_701111_590653", + "8_1097325_1310672", + "8_747864_799424" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1253", + "seg": [ + [ + [ + "numpy", + "ndarray" + ] + ], + [ + [ + "数组", + "对象" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "通用函数:快速的逐元素数组函数": { + "data": { + "uuid": "python-4-1254", + "seg": [ + [ + [ + "通用", + "函数" + ] + ], + [ + [ + "快速", + "逐", + "元素", + "数组", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用数组进行面向数组编程": { + "children": [ + { + "将条件逻辑作为数组操作": { + "data": { + "uuid": "python-5-885", + "seg": [ + [ + [ + "条件逻辑", + "数组", + "操作" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_768492_828880" + ] + } + } + } + } + }, + { + "数学和统计方法": { + "data": { + "uuid": "python-5-886", + "seg": [ + [ + [ + "数学" + ], + [ + "统计", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "布尔值数组的方法": { + "data": { + "uuid": "python-5-887", + "seg": [ + [ + [ + "布尔值", + "数组", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "排序": { + "data": { + "uuid": "python-5-888", + "seg": [ + [ + [ + "排序" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_700541_589424", + "8_1063906_1262051", + "8_217438_165891", + "8_7425372_53386794", + "8_7399575_53346992" + ] + } + } + } + } + }, + { + "唯一值与其他集合逻辑": { + "data": { + "uuid": "python-5-889", + "seg": [ + [ + [ + "唯一", + "值" + ], + [ + "集合", + "逻辑" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1255", + "seg": [ + [ + [ + "数组", + "面向", + "编程" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用数组进行文件输入和输出": { + "data": { + "uuid": "python-4-1256", + "seg": [ + [ + [ + "数组", + "文件", + "输入" + ], + [ + "输出" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7455407_53438285", + "8_758758_814791" + ] + } + } + } + } + }, + { + "线性代数": { + "data": { + "uuid": "python-4-1257", + "seg": [ + [ + [ + "线性代数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "伪随机数生成": { + "data": { + "uuid": "python-4-1258", + "seg": [ + [ + [ + "伪", + "随机数", + "生成" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_702083_592274" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-233", + "seg": [ + [ + [ + "numpy", + "基础" + ] + ], + [ + [ + "数组" + ], + [ + "量化", + "计算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "pandas入门": { + "children": [ + { + "pandas数据结构介绍": { + "children": [ + { + "Series": { + "data": { + "uuid": "python-5-890", + "seg": [ + [ + [ + "series" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_863734_999674", + "8_770378_832056" + ] + } + } + } + } + }, + { + "DataFrame": { + "data": { + "uuid": "python-5-891", + "seg": [ + [ + [ + "dataframe" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7439198_53412993", + "8_7457519_53441741", + "8_7428688_53394804", + "8_7396359_53339924", + "8_7410819_53361621", + "8_7407107_53356857", + "8_886557_1035772", + "8_772299_836735", + "8_7431560_53400830", + "8_7416732_53371115" + ] + } + } + } + } + }, + { + "索引对象": { + "data": { + "uuid": "python-5-892", + "seg": [ + [ + [ + "索引", + "对象" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7410664_53361540" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1259", + "seg": [ + [ + [ + "pandas", + "数据结构", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7432262_53401350", + "8_1060287_1257810", + "8_7407880_53358083", + "8_714781_706834", + "8_1063561_1261573", + "8_7130867_51214474", + "8_7456702_53440829", + "8_7403605_53352133", + "8_748074_799761", + "8_693426_571175" + ] + } + } + } + } + }, + { + "基本功能": { + "children": [ + { + "重建索引": { + "data": { + "uuid": "python-5-893", + "seg": [ + [ + [ + "重建", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "轴向上删除条目": { + "data": { + "uuid": "python-5-894", + "seg": [ + [ + [ + "轴", + "向上", + "删除", + "条目" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "索引、选择与过滤": { + "data": { + "uuid": "python-5-895", + "seg": [ + [ + [ + "索引" + ], + [ + "选择" + ], + [ + "过滤" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "整数索引": { + "data": { + "uuid": "python-5-896", + "seg": [ + [ + [ + "整数", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "算术和数据对齐": { + "data": { + "uuid": "python-5-897", + "seg": [ + [ + [ + "算术" + ], + [ + "数据", + "对齐" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "含有重复标签的轴索引": { + "data": { + "uuid": "python-5-898", + "seg": [ + [ + [ + "含有", + "重复", + "标签", + "轴", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1260", + "seg": [ + [ + [ + "基本功能" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "描述性统计的概述与计算": { + "data": { + "uuid": "python-4-1261", + "seg": [ + [ + [ + "描述性", + "统计", + "概述" + ], + [ + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-234", + "seg": [ + [ + [ + "pandas", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据载入、存储及文件格式": { + "children": [ + { + "文本格式数据的读写": { + "children": [ + { + "分块读入文本文件": { + "data": { + "uuid": "python-5-899", + "seg": [ + [ + [ + "分块", + "读入", + "文本文件" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "将数据写入文本格式": { + "data": { + "uuid": "python-5-900", + "seg": [ + [ + [ + "数据", + "写入", + "文本格式" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7442555_53419444" + ] + } + } + } + } + }, + { + "使用分隔格式": { + "data": { + "uuid": "python-5-901", + "seg": [ + [ + [ + "分隔", + "格式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "JSON数据": { + "data": { + "uuid": "python-5-902", + "seg": [ + [ + [ + "json", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "XML和HTML:网络抓取": { + "data": { + "uuid": "python-5-903", + "seg": [ + [ + [ + "xml" + ], + [ + "html" + ] + ], + [ + [ + "网络", + "抓取" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_730559_745643", + "8_770033_831427", + "8_7430854_53398410" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1262", + "seg": [ + [ + [ + "文本格式", + "数据", + "读写" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "二进制格式": { + "children": [ + { + "使用HDF5格式": { + "data": { + "uuid": "python-5-904", + "seg": [ + [ + [ + "hdf5", + "格式" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7462874_53448614", + "8_7437528_53410454", + "8_7462767_53448474", + "8_1095306_1306538", + "8_7454103_53436878", + "8_1095307_1306537", + "8_1099026_1313983" + ] + } + } + } + } + }, + { + "读取Microsoft Excel文件": { + "data": { + "uuid": "python-5-905", + "seg": [ + [ + [ + "读取", + "microsoft", + "excel", + "文件" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1263", + "seg": [ + [ + [ + "二进制", + "格式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "与Web API交互": { + "data": { + "uuid": "python-4-1264", + "seg": [ + [ + [], + [ + "web", + "api", + "交互" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7449539_53429712" + ] + } + } + } + } + }, + { + "与数据库交互": { + "data": { + "uuid": "python-4-1265", + "seg": [ + [ + [], + [ + "数据库", + "交互" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-235", + "seg": [ + [ + [ + "数据", + "载入" + ], + [ + "存储" + ], + [ + "文件格式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据清洗与准备": { + "children": [ + { + "处理缺失值": { + "children": [ + { + "过滤缺失值": { + "data": { + "uuid": "python-5-906", + "seg": [ + [ + [ + "过滤", + "缺失", + "值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "补全缺失值": { + "data": { + "uuid": "python-5-907", + "seg": [ + [ + [ + "补全", + "缺失", + "值" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_762637_820886", + "8_7404260_53353079", + "8_718744_712541", + "8_7407153_53356945", + "8_1648440_6825009", + "8_1027062_1222172", + "8_1069072_1269890", + "8_932853_1071898" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1266", + "seg": [ + [ + [ + "缺失", + "值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据转换": { + "children": [ + { + "删除重复值": { + "data": { + "uuid": "python-5-908", + "seg": [ + [ + [ + "删除", + "重复", + "值" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7460165_53445223" + ] + } + } + } + } + }, + { + "使用函数或映射进行数据转换": { + "data": { + "uuid": "python-5-909", + "seg": [ + [ + [ + "函数", + "映射", + "数据", + "转换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_728331_739411", + "8_7427073_53391086", + "8_7395984_53339398", + "8_1101333_1315894", + "8_7456552_53440542", + "8_1097423_1310921", + "8_7404699_53353694", + "8_1015154_1206793", + "8_4645343_29327952", + "8_1096152_1308171" + ] + } + } + } + } + }, + { + "替代值": { + "data": { + "uuid": "python-5-910", + "seg": [ + [ + [ + "值" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_752040_805943" + ] + } + } + } + } + }, + { + "重命名轴索引": { + "data": { + "uuid": "python-5-911", + "seg": [ + [ + [ + "重命名", + "轴", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "离散化和分箱": { + "data": { + "uuid": "python-5-912", + "seg": [ + [ + [ + "离散", + "化" + ], + [ + "分箱" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "检测和过滤异常值": { + "data": { + "uuid": "python-5-913", + "seg": [ + [ + [ + "检测" + ], + [ + "过滤", + "异常", + "值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "置换和随机抽样": { + "data": { + "uuid": "python-5-914", + "seg": [ + [ + [ + "置换" + ], + [ + "随机抽样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "计算指标/虚拟变量": { + "data": { + "uuid": "python-5-915", + "seg": [ + [ + [ + "计算", + "指标", + "虚拟", + "变量" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1267", + "seg": [ + [ + [ + "数据", + "转换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "字符串操作": { + "children": [ + { + "字符串对象方法": { + "data": { + "uuid": "python-5-916", + "seg": [ + [ + [ + "字符串", + "对象", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "pandas中的向量化字符串函数": { + "data": { + "uuid": "python-5-917", + "seg": [ + [ + [ + "pandas", + "量化", + "字符串", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1268", + "seg": [ + [ + [ + "字符串", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-236", + "seg": [ + [ + [ + "数据", + "清洗" + ], + [] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据规整:连接、联合与重塑": { + "children": [ + { + "分层索引": { + "children": [ + { + "重排序和层级排序": { + "data": { + "uuid": "python-5-918", + "seg": [ + [ + [ + "重", + "排序" + ], + [ + "层级", + "排序" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "按层级进行汇总统计": { + "data": { + "uuid": "python-5-919", + "seg": [ + [ + [ + "层级", + "汇总", + "统计" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用DataFrame的列进行索引": { + "data": { + "uuid": "python-5-920", + "seg": [ + [ + [ + "dataframe", + "列", + "索引" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_771286_833820", + "8_770954_833169", + "8_1062510_1260268", + "8_817993_913246", + "8_7426896_53390877", + "8_968633_1124005", + "8_7411646_53362595", + "8_963654_1115547", + "8_7425144_53386402", + "8_1096738_1309289" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1269", + "seg": [ + [ + [ + "分层", + "索引" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "联合与合并数据集": { + "children": [ + { + "数据库风格的DataFrame连接": { + "data": { + "uuid": "python-5-921", + "seg": [ + [ + [ + "数据库", + "风格", + "dataframe", + "连接" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "根据索引合并": { + "data": { + "uuid": "python-5-922", + "seg": [ + [ + [ + "索引", + "合并" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_773576_837590", + "8_755008_810341", + "8_7434558_53405056" + ] + } + } + } + } + }, + { + "沿轴向连接": { + "data": { + "uuid": "python-5-923", + "seg": [ + [ + [ + "轴向", + "连接" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7442665_53421670" + ] + } + } + } + } + }, + { + "联合重叠数据": { + "data": { + "uuid": "python-5-924", + "seg": [ + [ + [ + "联合", + "重叠", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1270", + "seg": [ + [ + [ + "联合" + ], + [ + "合并", + "数据", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "重塑和透视": { + "children": [ + { + "使用多层索引进行重塑": { + "data": { + "uuid": "python-5-925", + "seg": [ + [ + [ + "索引", + "重塑" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "将“长”透视为“宽”": { + "data": { + "uuid": "python-5-926", + "seg": [ + [ + [ + "长", + "透视", + "宽" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "将“宽”透视为“长”": { + "data": { + "uuid": "python-5-927", + "seg": [ + [ + [ + "宽", + "透视", + "长" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1271", + "seg": [ + [ + [ + "重塑" + ], + [ + "透视" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-237", + "seg": [ + [ + [ + "数据", + "规整" + ] + ], + [ + [ + "连接" + ], + [ + "联合" + ], + [ + "重塑" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "绘图与可视化": { + "children": [ + { + "简明matplotlib API入门": { + "children": [ + { + "图片与子图": { + "data": { + "uuid": "python-5-928", + "seg": [ + [ + [ + "图片" + ], + [ + "子图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "颜色、标记和线类型": { + "data": { + "uuid": "python-5-929", + "seg": [ + [ + [ + "颜色" + ], + [ + "标记", + "和线", + "类型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "刻度、标签和图例": { + "data": { + "uuid": "python-5-930", + "seg": [ + [ + [ + "刻度" + ], + [ + "标签" + ], + [ + "图例" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "注释与子图加工": { + "data": { + "uuid": "python-5-931", + "seg": [ + [ + [ + "注释" + ], + [ + "子图", + "加工" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "将图片保存到文件": { + "data": { + "uuid": "python-5-932", + "seg": [ + [ + [ + "图片", + "保存", + "文件" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7434228_53404650", + "8_692679_568378", + "8_7462884_53448612", + "8_700726_589781", + "8_7426151_53389071" + ] + } + } + } + } + }, + { + "matplotlib设置": { + "data": { + "uuid": "python-5-933", + "seg": [ + [ + [ + "matplotlib", + "设置" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_960153_1111954", + "8_7417687_53373559", + "8_7444714_53423223", + "8_7406772_53356401", + "8_667771_487194", + "8_719931_714345", + "8_682823_538009", + "8_748583_800590", + "8_748633_800681", + "8_7447499_53427379" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1272", + "seg": [ + [ + [ + "简明", + "matplotlib", + "api", + "入门" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "其他Python可视化工具": { + "data": { + "uuid": "python-4-1273", + "seg": [ + [ + [ + "python", + "可视化", + "工具" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-238", + "seg": [ + [ + [ + "绘图" + ], + [ + "可视化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据聚合与分组操作": { + "children": [ + { + "GroupBy机制": { + "children": [ + { + "遍历各分组": { + "data": { + "uuid": "python-5-934", + "seg": [ + [ + [ + "遍历", + "分组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "选择一列或所有列的子集": { + "data": { + "uuid": "python-5-935", + "seg": [ + [ + [ + "选择", + "列", + "子集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用函数分组": { + "data": { + "uuid": "python-5-936", + "seg": [ + [ + [ + "函数", + "分组" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7414509_53367569" + ] + } + } + } + } + }, + { + "根据索引层级分组": { + "data": { + "uuid": "python-5-937", + "seg": [ + [ + [ + "索引", + "层级", + "分组" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1274", + "seg": [ + [ + [ + "groupby", + "机制" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据聚合": { + "children": [ + { + "返回不含行索引的聚合数据": { + "data": { + "uuid": "python-5-938", + "seg": [ + [ + [ + "返回", + "含行", + "索引", + "聚合", + "数据" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1058559_1255894", + "8_772486_835795" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1275", + "seg": [ + [ + [ + "数据", + "聚合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "应用:通用拆分-应用-联合": { + "children": [ + { + "压缩分组键": { + "data": { + "uuid": "python-5-939", + "seg": [ + [ + [ + "压缩", + "分组", + "键" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "分位数与桶分析": { + "data": { + "uuid": "python-5-940", + "seg": [ + [ + [ + "分", + "位数" + ], + [ + "桶", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1276", + "seg": [ + [ + [] + ], + [ + [ + "通用", + "拆分", + "联合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据透视表与交叉表": { + "children": [ + { + "交叉表:crosstab": { + "data": { + "uuid": "python-5-941", + "seg": [ + [ + [ + "交叉", + "表" + ] + ], + [ + [ + "crosstab" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1277", + "seg": [ + [ + [ + "数据", + "透视", + "表与", + "交叉", + "表" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-239", + "seg": [ + [ + [ + "数据", + "聚合" + ], + [ + "分组", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "时间序列": { + "children": [ + { + "时间序列基础": { + "children": [ + { + "含有重复索引的时间序列": { + "data": { + "uuid": "python-5-942", + "seg": [ + [ + [ + "含有", + "重复", + "索引", + "时间", + "序列" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_774633_838599", + "8_7400421_53348290" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1278", + "seg": [ + [ + [ + "时间", + "序列", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "时区处理": { + "children": [ + { + "时区的本地化和转换": { + "data": { + "uuid": "python-5-943", + "seg": [ + [ + [ + "时区", + "本地化" + ], + [ + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "时区感知时间戳对象的操作": { + "data": { + "uuid": "python-5-944", + "seg": [ + [ + [ + "区", + "感知", + "时间", + "戳", + "对象", + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424729_53385899" + ] + } + } + } + } + }, + { + "不同时区间的操作": { + "data": { + "uuid": "python-5-945", + "seg": [ + [ + [ + "区间", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1279", + "seg": [ + [ + [ + "区" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "时间区间和区间算术": { + "children": [ + { + "区间频率转换": { + "data": { + "uuid": "python-5-946", + "seg": [ + [ + [ + "区间", + "频率", + "转换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7432963_53402848" + ] + } + } + } + } + }, + { + "季度区间频率": { + "data": { + "uuid": "python-5-947", + "seg": [ + [ + [ + "季度", + "区间", + "频率" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "将时间戳转换为区间(以及逆转换)": { + "data": { + "uuid": "python-5-948", + "seg": [ + [ + [ + "时间", + "戳", + "转换", + "区间" + ], + [ + "逆", + "转换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_172786_50893", + "8_7414677_53367619", + "8_7446043_53426360", + "8_1060909_1258648", + "8_7425370_53411809", + "8_7403382_53351863", + "8_7433732_53404035", + "8_7435975_53406996", + "8_7435045_53405562", + "8_1102736_1317169" + ] + } + } + } + } + }, + { + "从数组生成PeriodIndex": { + "data": { + "uuid": "python-5-949", + "seg": [ + [ + [ + "数组", + "生成", + "periodindex" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_915325_1051578" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1280", + "seg": [ + [ + [ + "时间", + "区间" + ], + [ + "区间", + "算术" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "重新采样与频率转换": { + "children": [ + { + "向下采样": { + "data": { + "uuid": "python-5-950", + "seg": [ + [ + [ + "向下", + "采样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "向上采样与插值": { + "data": { + "uuid": "python-5-951", + "seg": [ + [ + [ + "向上", + "采样" + ], + [ + "插值" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用区间进行重新采样": { + "data": { + "uuid": "python-5-952", + "seg": [ + [ + [ + "区间", + "采样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1281", + "seg": [ + [ + [ + "采样" + ], + [ + "频率", + "转换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "移动窗口函数": { + "children": [ + { + "指数加权函数": { + "data": { + "uuid": "python-5-953", + "seg": [ + [ + [ + "指数", + "加权", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "二元移动窗口函数": { + "data": { + "uuid": "python-5-954", + "seg": [ + [ + [ + "窗口", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_751965_805845", + "8_7398232_53344186", + "8_973697_1131808", + "8_1094223_1304293" + ] + } + } + } + } + }, + { + "用户自定义的移动窗口函数": { + "data": { + "uuid": "python-5-955", + "seg": [ + [ + [ + "用户", + "自定义", + "窗口", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1282", + "seg": [ + [ + [ + "窗口", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-240", + "seg": [ + [ + [ + "时间", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高阶pandas": { + "children": [ + { + "分类数据": { + "children": [ + { + "背景和目标": { + "data": { + "uuid": "python-5-956", + "seg": [ + [ + [ + "背景" + ], + [ + "目标" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "pandas中的Categorical类型": { + "data": { + "uuid": "python-5-957", + "seg": [ + [ + [ + "pandas", + "categorical", + "类型" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7445996_53425041", + "8_760336_817107", + "8_696322_579899", + "8_7449123_53429206", + "8_714700_706783", + "8_783041_859306", + "8_367253_392691", + "8_7422210_53379622", + "8_771986_834964", + "8_7419825_53377843" + ] + } + } + } + } + }, + { + "使用Categorical对象进行计算": { + "data": { + "uuid": "python-5-958", + "seg": [ + [ + [ + "categorical", + "对象", + "计算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "分类方法": { + "data": { + "uuid": "python-5-959", + "seg": [ + [ + [ + "分类", + "方法" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7435899_53406896", + "8_717328_710581" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1283", + "seg": [ + [ + [ + "分类", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "高阶GroupBy应用": { + "children": [ + { + "分组转换和“展开”GroupBy": { + "data": { + "uuid": "python-5-960", + "seg": [ + [ + [ + "分组", + "转换" + ], + [ + "展开", + "groupby" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7458929_53443895", + "8_894818_1032542", + "8_7419176_53376165" + ] + } + } + } + } + }, + { + "分组的时间重新采样": { + "data": { + "uuid": "python-5-961", + "seg": [ + [ + [ + "分组", + "时间", + "采样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1284", + "seg": [ + [ + [ + "高阶", + "groupby" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "方法链技术": { + "children": [ + { + "pipe方法": { + "data": { + "uuid": "python-5-962", + "seg": [ + [ + [ + "pipe", + "方法" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_754274_809244" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1285", + "seg": [ + [ + [ + "方法", + "链", + "技术" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-241", + "seg": [ + [ + [ + "高阶", + "pandas" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Python建模库介绍": { + "children": [ + { + "使用Patsy创建模型描述": { + "children": [ + { + "Patsy公式中的数据转换": { + "data": { + "uuid": "python-5-963", + "seg": [ + [ + [ + "patsy", + "公式", + "数据", + "转换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1286", + "seg": [ + [ + [ + "patsy", + "创建", + "模型", + "描述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "statsmodels介绍": { + "children": [ + { + "评估线性模型": { + "data": { + "uuid": "python-5-964", + "seg": [ + [ + [ + "评估", + "线性", + "模型" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7431071_53399566" + ] + } + } + } + } + }, + { + "评估时间序列处理": { + "data": { + "uuid": "python-5-965", + "seg": [ + [ + [ + "评估", + "时间", + "序列" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1287", + "seg": [ + [ + [ + "statsmodels", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "scikit-learn介绍": { + "data": { + "uuid": "python-4-1288", + "seg": [ + [ + [ + "scikit", + "learn", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "继续你的教育": { + "data": { + "uuid": "python-4-1289", + "seg": [ + [ + [ + "教育" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-242", + "seg": [ + [ + [ + "python", + "建模", + "库", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据分析示例": { + "children": [ + { + "从Bitly获取1.USA.gov数据": { + "children": [ + { + "纯Python时区计数": { + "data": { + "uuid": "python-5-966", + "seg": [ + [ + [ + "纯", + "python", + "时区", + "计数" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7444593_53422828" + ] + } + } + } + } + }, + { + "使用pandas进行时区计数": { + "data": { + "uuid": "python-5-967", + "seg": [ + [ + [ + "pandas", + "区", + "计数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1290", + "seg": [ + [ + [ + "bitly", + "获取", + "usa", + "gov", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "MovieLens 1M数据集": { + "children": [ + { + "测量评价分歧": { + "data": { + "uuid": "python-5-968", + "seg": [ + [ + [ + "测量", + "评价", + "分歧" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1291", + "seg": [ + [ + [ + "movielens", + "m", + "数据", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "美国1880~2010年的婴儿名字": { + "children": [ + { + "分析名字趋势": { + "data": { + "uuid": "python-5-969", + "seg": [ + [ + [ + "分析", + "名字", + "趋势" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1292", + "seg": [ + [ + [ + "美国", + "婴儿", + "名字" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "美国农业部食品数据库": { + "data": { + "uuid": "python-4-1293", + "seg": [ + [ + [ + "美国农业部", + "食品", + "数据库" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "2012年联邦选举委员会数据库": { + "children": [ + { + "按职业和雇主的捐献统计": { + "data": { + "uuid": "python-5-970", + "seg": [ + [ + [ + "职业" + ], + [ + "雇主", + "捐献", + "统计" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "捐赠金额分桶": { + "data": { + "uuid": "python-5-971", + "seg": [ + [ + [ + "捐赠", + "金额" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "按州进行捐赠统计": { + "data": { + "uuid": "python-5-972", + "seg": [ + [ + [ + "州", + "捐赠", + "统计" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1294", + "seg": [ + [ + [ + "联邦", + "选举", + "委员会", + "数据库" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-243", + "seg": [ + [ + [ + "数据分析", + "示例" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_767470_827181", + "8_7461007_53446104" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-2-14", + "seg": [ + [ + [ + "数据分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "人工智能": { + "children": [ + { + "机器学习工具包Scikit-learn": { + "children": [ + { + "Scikit-learn概览": { + "data": { + "uuid": "python-4-1295", + "seg": [ + [ + [ + "scikit", + "learn", + "概览" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7407580_53357824", + "8_7441502_53417684" + ] + } + } + } + } + }, + { + "安装配置": { + "data": { + "uuid": "python-4-1296", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据集": { + "children": [ + { + "Scikit-learn自带的数据集": { + "data": { + "uuid": "python-5-973", + "seg": [ + [ + [ + "scikit", + "learn", + "自带", + "数据", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "样本生成器": { + "data": { + "uuid": "python-5-974", + "seg": [ + [ + [ + "样本", + "生成器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "加载其他数据集": { + "data": { + "uuid": "python-5-975", + "seg": [ + [ + [ + "加载", + "数据", + "集" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_779329_847674", + "8_7411430_53362368", + "8_681170_533280", + "8_7414979_53368138", + "8_7406886_53356555" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1297", + "seg": [ + [ + [ + "数据", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据预处理Preprocessing": { + "children": [ + { + "标准化": { + "data": { + "uuid": "python-5-976", + "seg": [ + [ + [ + "标准化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "归一化": { + "data": { + "uuid": "python-5-977", + "seg": [ + [ + [ + "归一化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "正则化": { + "data": { + "uuid": "python-5-978", + "seg": [ + [ + [ + "正则", + "化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "离散化": { + "data": { + "uuid": "python-5-979", + "seg": [ + [ + [ + "离散", + "化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "特征编码": { + "data": { + "uuid": "python-5-980", + "seg": [ + [ + [ + "特征", + "编码" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "缺失值补全": { + "data": { + "uuid": "python-5-981", + "seg": [ + [ + [ + "缺失", + "值", + "补全" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7461275_53446347" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1298", + "seg": [ + [ + [ + "数据", + "预处理", + "preprocessing" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "分类Classification": { + "children": [ + { + "K-近邻分类": { + "data": { + "uuid": "python-5-982", + "seg": [ + [ + [ + "k", + "近邻", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "贝叶斯分类": { + "data": { + "uuid": "python-5-983", + "seg": [ + [ + [ + "贝叶斯", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "决策树分类": { + "data": { + "uuid": "python-5-984", + "seg": [ + [ + [ + "决策树", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "支持向量机分类": { + "data": { + "uuid": "python-5-985", + "seg": [ + [ + [ + "支持", + "向量", + "机", + "分类" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7413389_53365545" + ] + } + } + } + } + }, + { + "随机森林分类": { + "data": { + "uuid": "python-5-986", + "seg": [ + [ + [ + "随机", + "森林", + "分类" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_755202_810739" + ] + } + } + } + } + }, + { + "集成学习Bagging/Boosting": { + "data": { + "uuid": "python-5-987", + "seg": [ + [ + [ + "集成", + "学习", + "bagging", + "boosting" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络模型": { + "data": { + "uuid": "python-5-988", + "seg": [ + [ + [ + "神经网络", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1299", + "seg": [ + [ + [ + "分类", + "class", + "if", + "ication" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "回归Regression": { + "children": [ + { + "线性回归": { + "data": { + "uuid": "python-5-989", + "seg": [ + [ + [ + "线性", + "回归" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7461537_53446955", + "8_692917_569159" + ] + } + } + } + } + }, + { + "Lasso回归": { + "data": { + "uuid": "python-5-990", + "seg": [ + [ + [ + "lasso", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "支持向量机回归": { + "data": { + "uuid": "python-5-991", + "seg": [ + [ + [ + "支持", + "向量", + "机", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "K-近邻回归": { + "data": { + "uuid": "python-5-992", + "seg": [ + [ + [ + "k", + "近邻", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "决策树回归": { + "data": { + "uuid": "python-5-993", + "seg": [ + [ + [ + "决策树", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "随机森林回归": { + "data": { + "uuid": "python-5-994", + "seg": [ + [ + [ + "随机", + "森林", + "回归" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1097501_1311047", + "8_7444725_53423310" + ] + } + } + } + } + }, + { + "逻辑回归": { + "data": { + "uuid": "python-5-995", + "seg": [ + [ + [ + "逻辑", + "回归" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7402087_53349695", + "8_7443656_53420844", + "8_7406432_53355990" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1300", + "seg": [ + [ + [ + "回归", + "regression" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "聚类Clustering": { + "children": [ + { + "K-Means聚类": { + "data": { + "uuid": "python-5-996", + "seg": [ + [ + [ + "k", + "means", + "聚类" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_759772_816179" + ] + } + } + } + } + }, + { + "均值漂移聚类": { + "data": { + "uuid": "python-5-997", + "seg": [ + [ + [ + "均值", + "漂移", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于密度的空间聚类": { + "data": { + "uuid": "python-5-998", + "seg": [ + [ + [ + "密度", + "空间", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "谱聚类": { + "data": { + "uuid": "python-5-999", + "seg": [ + [ + [ + "谱", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "层次聚类": { + "children": [ + { + "自下而上的方法": { + "data": { + "uuid": "python-6-175", + "seg": [ + [ + [ + "自下而上", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "聚类之间的距离": { + "data": { + "uuid": "python-6-176", + "seg": [ + [ + [ + "聚类", + "距离" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7409259_53359956", + "8_7426748_53390598" + ] + } + } + } + } + }, + { + "自上而下的方法": { + "data": { + "uuid": "python-6-177", + "seg": [ + [ + [ + "自上而下", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图论方法": { + "data": { + "uuid": "python-6-178", + "seg": [ + [ + [ + "图论", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1000", + "seg": [ + [ + [ + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1301", + "seg": [ + [ + [ + "聚类", + "clustering" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "成分分解与降维": { + "children": [ + { + "主成分分析": { + "data": { + "uuid": "python-5-1001", + "seg": [ + [ + [ + "主", + "成分", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "因子分析": { + "data": { + "uuid": "python-5-1002", + "seg": [ + [ + [ + "因子分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "截断奇异值分解": { + "data": { + "uuid": "python-5-1003", + "seg": [ + [ + [ + "截断", + "奇异", + "值", + "分解" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "独立成分分析ICA(Independent Component Analysis)": { + "data": { + "uuid": "python-5-1004", + "seg": [ + [ + [ + "独立", + "成分", + "分析", + "ica", + "independent", + "component", + "analysis" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1302", + "seg": [ + [ + [ + "成分", + "分解" + ], + [ + "降维" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "模型评估与参数调优": { + "children": [ + { + "估计器得分": { + "data": { + "uuid": "python-5-1005", + "seg": [ + [ + [ + "估计", + "器", + "得分" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "交叉验证": { + "data": { + "uuid": "python-5-1006", + "seg": [ + [ + [ + "交叉", + "验证" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "评价指标": { + "data": { + "uuid": "python-5-1007", + "seg": [ + [ + [ + "评价", + "指标" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "参数调优": { + "data": { + "uuid": "python-5-1008", + "seg": [ + [ + [ + "参数", + "调优" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "模型持久化": { + "data": { + "uuid": "python-5-1009", + "seg": [ + [ + [ + "模型", + "持久", + "化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1303", + "seg": [ + [ + [ + "模型", + "评估" + ], + [ + "参数", + "调优" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-244", + "seg": [ + [ + [ + "机器", + "学习", + "工具包", + "scikit", + "learn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "深度学习": { + "children": [ + { + "神经网络基础知识": { + "children": [ + { + "人工智能发展历史": { + "data": { + "uuid": "python-5-1010", + "seg": [ + [ + [ + "人工智能", + "发展", + "历史" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经元": { + "data": { + "uuid": "python-5-1011", + "seg": [ + [ + [ + "神经元" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "BP神经网络": { + "data": { + "uuid": "python-5-1012", + "seg": [ + [ + [ + "bp", + "神经网络" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_703262_598031", + "8_7426962_53390979" + ] + } + } + } + } + }, + { + "梯度下降": { + "data": { + "uuid": "python-5-1013", + "seg": [ + [ + [ + "梯度", + "下降" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "激励函数": { + "data": { + "uuid": "python-5-1014", + "seg": [ + [ + [ + "激励函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "过拟合、欠拟合": { + "data": { + "uuid": "python-5-1015", + "seg": [ + [ + [ + "拟合" + ], + [ + "欠", + "拟合" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7418071_53373973" + ] + } + } + } + } + }, + { + "优化器Optimizer": { + "data": { + "uuid": "python-5-1016", + "seg": [ + [ + [ + "优化", + "器", + "optimizer" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "常用开发工具": { + "data": { + "uuid": "python-5-1017", + "seg": [ + [ + [ + "开发工具" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1036983_1233720" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1304", + "seg": [ + [ + [ + "神经网络", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "环境配置": { + "children": [ + { + "Windows搭建深度学习环境": { + "data": { + "uuid": "python-5-1018", + "seg": [ + [ + [ + "windows", + "搭建", + "深度", + "学习", + "环境" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Linux搭建深度学习环境": { + "data": { + "uuid": "python-5-1019", + "seg": [ + [ + [ + "linux", + "搭建", + "深度", + "学习", + "环境" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "MacOS搭建深度学习环境": { + "data": { + "uuid": "python-5-1020", + "seg": [ + [ + [ + "macos", + "搭建", + "深度", + "学习", + "环境" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CPU/GPU环境搭建": { + "data": { + "uuid": "python-5-1021", + "seg": [ + [ + [ + "cpu", + "gpu", + "环境", + "搭建" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_760087_816637", + "8_770372_832019" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1305", + "seg": [ + [ + [ + "环境", + "配置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Theano": { + "children": [ + { + "Theano基础知识": { + "data": { + "uuid": "python-5-1022", + "seg": [ + [ + [ + "theano", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_172916_51297", + "8_357792_375114" + ] + } + } + } + } + }, + { + "定义Layer": { + "data": { + "uuid": "python-5-1023", + "seg": [ + [ + [ + "定义", + "layer" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN": { + "data": { + "uuid": "python-5-1024", + "seg": [ + [ + [ + "cnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "RNN(GRU/LSTM)": { + "data": { + "uuid": "python-5-1025", + "seg": [ + [ + [ + "rnn", + "gru", + "lstm" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Autoencoder": { + "data": { + "uuid": "python-5-1026", + "seg": [ + [ + [ + "autoencoder" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络参数保存": { + "data": { + "uuid": "python-5-1027", + "seg": [ + [ + [ + "神经网络", + "参数", + "保存" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络性能评价": { + "data": { + "uuid": "python-5-1028", + "seg": [ + [ + [ + "神经网络", + "性能", + "评价" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1306", + "seg": [ + [ + [ + "theano" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "TensorFlow": { + "children": [ + { + "TensorFlow基础知识": { + "data": { + "uuid": "python-5-1029", + "seg": [ + [ + [ + "tensorflow", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_686850_549462", + "8_1071605_1273636", + "8_7426038_53388709", + "8_798076_1027813", + "8_766817_826343" + ] + } + } + } + } + }, + { + "Tensor": { + "data": { + "uuid": "python-5-1030", + "seg": [ + [ + [ + "tensor" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Session": { + "data": { + "uuid": "python-5-1031", + "seg": [ + [ + [ + "session" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Variable": { + "data": { + "uuid": "python-5-1032", + "seg": [ + [ + [ + "variable" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Placeholder": { + "data": { + "uuid": "python-5-1033", + "seg": [ + [ + [ + "placeholder" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_665271_482693" + ] + } + } + } + } + }, + { + "Dropout": { + "data": { + "uuid": "python-5-1034", + "seg": [ + [ + [ + "dropout" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Tensorboard": { + "data": { + "uuid": "python-5-1035", + "seg": [ + [ + [ + "tensorboard" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN": { + "data": { + "uuid": "python-5-1036", + "seg": [ + [ + [ + "cnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "RNN(GRU/LSTM)": { + "data": { + "uuid": "python-5-1037", + "seg": [ + [ + [ + "rnn", + "gru", + "lstm" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Autoencoder": { + "data": { + "uuid": "python-5-1038", + "seg": [ + [ + [ + "autoencoder" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GNN": { + "data": { + "uuid": "python-5-1039", + "seg": [ + [ + [ + "gnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络参数保存": { + "data": { + "uuid": "python-5-1040", + "seg": [ + [ + [ + "神经网络", + "参数", + "保存" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络性能评价": { + "data": { + "uuid": "python-5-1041", + "seg": [ + [ + [ + "神经网络", + "性能", + "评价" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1307", + "seg": [ + [ + [ + "tensorflow" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Keras": { + "children": [ + { + "Keras基础语法": { + "data": { + "uuid": "python-5-1042", + "seg": [ + [ + [ + "keras", + "基础", + "语法" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_670424_493006", + "8_670476_493113", + "8_345355_349502", + "8_7442239_53419032", + "8_7447581_53427959" + ] + } + } + } + } + }, + { + "兼容Backend": { + "data": { + "uuid": "python-5-1043", + "seg": [ + [ + [ + "兼容", + "backend" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "函数模型和序列模型": { + "data": { + "uuid": "python-5-1044", + "seg": [ + [ + [ + "函数", + "模型" + ], + [ + "序列", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "定义Layer": { + "data": { + "uuid": "python-5-1045", + "seg": [ + [ + [ + "定义", + "layer" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN": { + "data": { + "uuid": "python-5-1046", + "seg": [ + [ + [ + "cnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "RNN(GRU/LSTM)": { + "data": { + "uuid": "python-5-1047", + "seg": [ + [ + [ + "rnn", + "gru", + "lstm" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Autoencoder": { + "data": { + "uuid": "python-5-1048", + "seg": [ + [ + [ + "autoencoder" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GNN": { + "data": { + "uuid": "python-5-1049", + "seg": [ + [ + [ + "gnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "迁移学习": { + "data": { + "uuid": "python-5-1050", + "seg": [ + [ + [ + "迁移", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "BiLSTM-Attention": { + "data": { + "uuid": "python-5-1051", + "seg": [ + [ + [ + "bilstm", + "attention" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "生成对抗网络GAN": { + "data": { + "uuid": "python-5-1052", + "seg": [ + [ + [ + "生成", + "对抗", + "网络", + "gan" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络参数保存": { + "data": { + "uuid": "python-5-1053", + "seg": [ + [ + [ + "神经网络", + "参数", + "保存" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络性能评价": { + "data": { + "uuid": "python-5-1054", + "seg": [ + [ + [ + "神经网络", + "性能", + "评价" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1308", + "seg": [ + [ + [ + "keras" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "PyTorch": { + "children": [ + { + "PyTorch基础知识": { + "data": { + "uuid": "python-5-1055", + "seg": [ + [ + [ + "pytorch", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Tensor": { + "data": { + "uuid": "python-5-1056", + "seg": [ + [ + [ + "tensor" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Variable": { + "data": { + "uuid": "python-5-1057", + "seg": [ + [ + [ + "variable" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "定义Layer": { + "data": { + "uuid": "python-5-1058", + "seg": [ + [ + [ + "定义", + "layer" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "可视化": { + "data": { + "uuid": "python-5-1059", + "seg": [ + [ + [ + "可视化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN(TextCNN)": { + "data": { + "uuid": "python-5-1060", + "seg": [ + [ + [ + "cnn", + "textcnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "RNN(GRU/LSTM)": { + "data": { + "uuid": "python-5-1061", + "seg": [ + [ + [ + "rnn", + "gru", + "lstm" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Autoencoder": { + "data": { + "uuid": "python-5-1062", + "seg": [ + [ + [ + "autoencoder" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GNN/GCN": { + "data": { + "uuid": "python-5-1063", + "seg": [ + [ + [ + "gnn", + "gcn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "迁移学习": { + "data": { + "uuid": "python-5-1064", + "seg": [ + [ + [ + "迁移", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "生成对抗网络GAN": { + "data": { + "uuid": "python-5-1065", + "seg": [ + [ + [ + "生成", + "对抗", + "网络", + "gan" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络参数保存": { + "data": { + "uuid": "python-5-1066", + "seg": [ + [ + [ + "神经网络", + "参数", + "保存" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络性能评价": { + "data": { + "uuid": "python-5-1067", + "seg": [ + [ + [ + "神经网络", + "性能", + "评价" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1309", + "seg": [ + [ + [ + "pytorch" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "强化学习": { + "children": [ + { + "强化学习概念": { + "data": { + "uuid": "python-5-1068", + "seg": [ + [ + [ + "强化", + "学习", + "概念" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_668876_489642", + "8_7409408_53359833", + "8_698520_585596", + "8_7432423_53401546", + "8_1101805_1316392", + "8_7465035_53451747", + "8_7458904_53443682", + "8_7453806_53436503", + "8_1100646_1315443", + "8_7464777_53451335" + ] + } + } + } + } + }, + { + "Q-Learning": { + "data": { + "uuid": "python-5-1069", + "seg": [ + [ + [ + "q", + "learning" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7424857_53386093" + ] + } + } + } + } + }, + { + "Sarsa": { + "data": { + "uuid": "python-5-1070", + "seg": [ + [ + [ + "sarsa" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "DQN(Deep Q Network)": { + "data": { + "uuid": "python-5-1071", + "seg": [ + [ + [ + "dqn", + "deep", + "q", + "network" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Policy Gradients": { + "data": { + "uuid": "python-5-1072", + "seg": [ + [ + [ + "policy", + "gradients" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Actor Critic": { + "data": { + "uuid": "python-5-1073", + "seg": [ + [ + [ + "actor", + "critic" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1310", + "seg": [ + [ + [ + "强化", + "学习" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7433033_53402822" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-245", + "seg": [ + [ + [ + "深度", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "计算机视觉": { + "children": [ + { + "数字图像处理基础": { + "children": [ + { + "数字图像处理": { + "data": { + "uuid": "python-5-1074", + "seg": [ + [ + [ + "数字图像处理" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1077769_1282167" + ] + } + } + } + } + }, + { + "图像三要素": { + "data": { + "uuid": "python-5-1075", + "seg": [ + [ + [ + "图像", + "三要素" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "像素及图像类型": { + "data": { + "uuid": "python-5-1076", + "seg": [ + [ + [ + "像素" + ], + [ + "图像", + "类型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像信号数字转换": { + "data": { + "uuid": "python-5-1077", + "seg": [ + [ + [ + "图像", + "信号", + "数字", + "转换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1311", + "seg": [ + [ + [ + "数字图像处理", + "基础" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "OpenCV基础": { + "children": [ + { + "安装配置": { + "data": { + "uuid": "python-5-1078", + "seg": [ + [ + [ + "安装", + "配置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "OpenCV基础语法": { + "data": { + "uuid": "python-5-1079", + "seg": [ + [ + [ + "opencv", + "基础", + "语法" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7399576_53346884", + "8_1064141_1262348", + "8_7427454_53392016", + "8_1067665_1268345", + "8_702166_592717", + "8_7416441_53370527", + "8_1087249_1295101", + "8_7444846_53423389", + "8_689196_556844", + "8_345984_350924" + ] + } + } + } + } + }, + { + "几何图形绘制": { + "data": { + "uuid": "python-5-1080", + "seg": [ + [ + [ + "几何图形", + "绘制" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1312", + "seg": [ + [ + [ + "opencv", + "基础" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像处理入门": { + "children": [ + { + "读取显示图像": { + "data": { + "uuid": "python-5-1081", + "seg": [ + [ + [ + "读取", + "显示", + "图像" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "读取修改像素": { + "data": { + "uuid": "python-5-1082", + "seg": [ + [ + [ + "读取", + "修改", + "像素" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7438792_53412229" + ] + } + } + } + } + }, + { + "创建复制保存图像": { + "data": { + "uuid": "python-5-1083", + "seg": [ + [ + [ + "创建", + "复制", + "保存", + "图像" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "获取图像属性及通道": { + "data": { + "uuid": "python-5-1084", + "seg": [ + [ + [ + "获取", + "图像", + "属性" + ], + [ + "通道" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1313", + "seg": [ + [ + [ + "图像处理", + "入门" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像算数与逻辑运算": { + "children": [ + { + "图像加法运算": { + "data": { + "uuid": "python-5-1085", + "seg": [ + [ + [ + "图像", + "加法", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像减法运算": { + "data": { + "uuid": "python-5-1086", + "seg": [ + [ + [ + "图像", + "减法", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像与运算": { + "data": { + "uuid": "python-5-1087", + "seg": [ + [ + [ + "图像" + ], + [ + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像或运算": { + "data": { + "uuid": "python-5-1088", + "seg": [ + [ + [ + "图像", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像异或运算": { + "data": { + "uuid": "python-5-1089", + "seg": [ + [ + [ + "图像", + "异或", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像非运算": { + "data": { + "uuid": "python-5-1090", + "seg": [ + [ + [ + "图像", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1314", + "seg": [ + [ + [ + "图像", + "算数" + ], + [ + "逻辑运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像几何变换": { + "children": [ + { + "平移变换": { + "data": { + "uuid": "python-5-1091", + "seg": [ + [ + [ + "平移变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "缩放变换": { + "data": { + "uuid": "python-5-1092", + "seg": [ + [ + [ + "缩放", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "旋转变换": { + "data": { + "uuid": "python-5-1093", + "seg": [ + [ + [ + "旋转变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "镜像变换": { + "data": { + "uuid": "python-5-1094", + "seg": [ + [ + [ + "镜像", + "变换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7402039_53349594" + ] + } + } + } + } + }, + { + "仿射变换": { + "data": { + "uuid": "python-5-1095", + "seg": [ + [ + [ + "仿射变换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_765006_823866" + ] + } + } + } + } + }, + { + "透视变换": { + "data": { + "uuid": "python-5-1096", + "seg": [ + [ + [ + "透视", + "变换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7428101_53393422" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1315", + "seg": [ + [ + [ + "图像", + "几何变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像量化与采样": { + "children": [ + { + "图像量化处理": { + "data": { + "uuid": "python-5-1097", + "seg": [ + [ + [ + "图像", + "量化" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_4646124_29329806" + ] + } + } + } + } + }, + { + "图像采样处理": { + "data": { + "uuid": "python-5-1098", + "seg": [ + [ + [ + "图像", + "采样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像金字塔": { + "data": { + "uuid": "python-5-1099", + "seg": [ + [ + [ + "图像", + "金字塔" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7416676_53371092" + ] + } + } + } + } + }, + { + "局部马赛克处理": { + "data": { + "uuid": "python-5-1100", + "seg": [ + [ + [ + "局部", + "马赛克" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1316", + "seg": [ + [ + [ + "图像", + "量化" + ], + [ + "采样" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "直方图统计": { + "children": [ + { + "直方图概述": { + "data": { + "uuid": "python-5-1101", + "seg": [ + [ + [ + "直方图", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "直方图绘制": { + "data": { + "uuid": "python-5-1102", + "seg": [ + [ + [ + "直方图", + "绘制" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "掩膜直方图": { + "data": { + "uuid": "python-5-1103", + "seg": [ + [ + [ + "掩膜", + "直方图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "H-S直方图": { + "data": { + "uuid": "python-5-1104", + "seg": [ + [ + [ + "h", + "s", + "直方图" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1094344_1304571" + ] + } + } + } + } + }, + { + "直方图对比": { + "data": { + "uuid": "python-5-1105", + "seg": [ + [ + [ + "直方图" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1317", + "seg": [ + [ + [ + "直方图", + "统计" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像增强": { + "children": [ + { + "图像增强": { + "data": { + "uuid": "python-5-1106", + "seg": [ + [ + [ + "图像增强" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "直方图均衡化": { + "data": { + "uuid": "python-5-1107", + "seg": [ + [ + [ + "直方图", + "均衡化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "局部直方图均衡化": { + "data": { + "uuid": "python-5-1108", + "seg": [ + [ + [ + "局部", + "直方图", + "均衡化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "自动色彩均衡化": { + "data": { + "uuid": "python-5-1109", + "seg": [ + [ + [ + "自动", + "色彩", + "均衡化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像去雾": { + "data": { + "uuid": "python-5-1110", + "seg": [ + [ + [ + "图像", + "雾" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1318", + "seg": [ + [ + [ + "图像增强" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像平滑": { + "children": [ + { + "图像平滑概述": { + "data": { + "uuid": "python-5-1111", + "seg": [ + [ + [ + "图像", + "平滑", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "均值滤波": { + "data": { + "uuid": "python-5-1112", + "seg": [ + [ + [ + "均值", + "滤波" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "方框滤波": { + "data": { + "uuid": "python-5-1113", + "seg": [ + [ + [ + "方框", + "滤波" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "高斯滤波": { + "data": { + "uuid": "python-5-1114", + "seg": [ + [ + [ + "高斯", + "滤波" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "中值滤波": { + "data": { + "uuid": "python-5-1115", + "seg": [ + [ + [ + "值", + "滤波" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "双边滤波": { + "data": { + "uuid": "python-5-1116", + "seg": [ + [ + [ + "双边", + "滤波" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1319", + "seg": [ + [ + [ + "图像", + "平滑" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像锐化及边缘检测": { + "children": [ + { + "一阶微分算法、二阶微分算子": { + "data": { + "uuid": "python-5-1117", + "seg": [ + [ + [ + "阶", + "微分", + "算法" + ], + [ + "二阶", + "微分", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Roberts算子": { + "data": { + "uuid": "python-5-1118", + "seg": [ + [ + [ + "roberts", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Prewitt算子": { + "data": { + "uuid": "python-5-1119", + "seg": [ + [ + [ + "prewitt", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Sobel算子": { + "data": { + "uuid": "python-5-1120", + "seg": [ + [ + [ + "sobel", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Laplacian算子": { + "data": { + "uuid": "python-5-1121", + "seg": [ + [ + [ + "laplacian", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Scharr算子": { + "data": { + "uuid": "python-5-1122", + "seg": [ + [ + [ + "scharr", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Canny算子": { + "data": { + "uuid": "python-5-1123", + "seg": [ + [ + [ + "canny", + "算子" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "LOG算子": { + "data": { + "uuid": "python-5-1124", + "seg": [ + [ + [ + "log", + "算子" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_756835_812017", + "8_754358_809793", + "8_1052443_1250014" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1320", + "seg": [ + [ + [ + "图像", + "锐化" + ], + [ + "边缘", + "检测" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像形态学处理": { + "children": [ + { + "图像腐蚀": { + "data": { + "uuid": "python-5-1125", + "seg": [ + [ + [ + "图像", + "腐蚀" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像膨胀": { + "data": { + "uuid": "python-5-1126", + "seg": [ + [ + [ + "图像", + "膨胀" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像开运算": { + "data": { + "uuid": "python-5-1127", + "seg": [ + [ + [ + "图像", + "开", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像闭运算": { + "data": { + "uuid": "python-5-1128", + "seg": [ + [ + [ + "图像", + "闭", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像梯度运算": { + "data": { + "uuid": "python-5-1129", + "seg": [ + [ + [ + "图像", + "梯度", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像顶帽运算": { + "data": { + "uuid": "python-5-1130", + "seg": [ + [ + [ + "图像", + "顶帽", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像底帽运算": { + "data": { + "uuid": "python-5-1131", + "seg": [ + [ + [ + "图像", + "底帽", + "运算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1321", + "seg": [ + [ + [ + "图像", + "形态学" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像分割": { + "children": [ + { + "基于阈值的图像分割": { + "data": { + "uuid": "python-5-1132", + "seg": [ + [ + [ + "阈值", + "图像", + "分割" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1066514_1266204", + "8_7443882_53422124", + "8_7444510_53422654", + "8_7439000_53412555" + ] + } + } + } + } + }, + { + "基于边缘检测的图像分割": { + "data": { + "uuid": "python-5-1133", + "seg": [ + [ + [ + "边缘", + "检测", + "图像", + "分割" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于纹理背景的图像分割": { + "data": { + "uuid": "python-5-1134", + "seg": [ + [ + [ + "纹理", + "背景", + "图像", + "分割" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于K-Means聚类的区域分割": { + "data": { + "uuid": "python-5-1135", + "seg": [ + [ + [ + "k", + "means", + "聚类", + "区域分割" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于均值漂移算法的图像分割": { + "data": { + "uuid": "python-5-1136", + "seg": [ + [ + [ + "均值", + "漂移", + "算法", + "图像", + "分割" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_774401_838444" + ] + } + } + } + } + }, + { + "基于分水岭算法的图像分割": { + "data": { + "uuid": "python-5-1137", + "seg": [ + [ + [ + "分水岭", + "算法", + "图像", + "分割" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像漫水填充分割": { + "data": { + "uuid": "python-5-1138", + "seg": [ + [ + [ + "图像", + "漫水", + "填充", + "分割" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文字区域分割及定位": { + "data": { + "uuid": "python-5-1139", + "seg": [ + [ + [ + "文字", + "区域分割" + ], + [ + "定位" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1322", + "seg": [ + [ + [ + "图像", + "分割" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "傅里叶变换": { + "children": [ + { + "傅里叶变换": { + "data": { + "uuid": "python-5-1140", + "seg": [ + [ + [ + "傅里叶", + "变换" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1079568_1284274", + "8_178178_63074" + ] + } + } + } + } + }, + { + "傅里叶逆变换": { + "data": { + "uuid": "python-5-1141", + "seg": [ + [ + [ + "傅里叶", + "逆变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "高通滤波器": { + "data": { + "uuid": "python-5-1142", + "seg": [ + [ + [ + "高通", + "滤波器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "低通滤波器": { + "data": { + "uuid": "python-5-1143", + "seg": [ + [ + [ + "低通滤波器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1323", + "seg": [ + [ + [ + "傅里叶", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "霍夫变换": { + "children": [ + { + "霍夫变换": { + "data": { + "uuid": "python-5-1144", + "seg": [ + [ + [ + "霍夫", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "霍夫线变换": { + "data": { + "uuid": "python-5-1145", + "seg": [ + [ + [ + "霍夫线", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "霍夫圆变换": { + "data": { + "uuid": "python-5-1146", + "seg": [ + [ + [ + "霍夫圆", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1324", + "seg": [ + [ + [ + "霍夫", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像特效处理": { + "children": [ + { + "图像毛玻璃特效": { + "data": { + "uuid": "python-5-1147", + "seg": [ + [ + [ + "图像", + "毛玻璃", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像浮雕特效": { + "data": { + "uuid": "python-5-1148", + "seg": [ + [ + [ + "图像", + "浮雕", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像素描特效": { + "data": { + "uuid": "python-5-1149", + "seg": [ + [ + [ + "图像", + "素描", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像怀旧特效": { + "data": { + "uuid": "python-5-1150", + "seg": [ + [ + [ + "图像", + "怀旧", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像流年特效": { + "data": { + "uuid": "python-5-1151", + "seg": [ + [ + [ + "图像", + "流", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像滤镜特效": { + "data": { + "uuid": "python-5-1152", + "seg": [ + [ + [ + "图像", + "滤镜", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像水波特效": { + "data": { + "uuid": "python-5-1153", + "seg": [ + [ + [ + "图像", + "水波", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像卡通特效": { + "data": { + "uuid": "python-5-1154", + "seg": [ + [ + [ + "图像", + "卡通", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1325", + "seg": [ + [ + [ + "图像", + "特效" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像分类": { + "children": [ + { + "图像分类概述": { + "data": { + "uuid": "python-5-1155", + "seg": [ + [ + [ + "图像", + "分类", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于机器学习的图像分类": { + "data": { + "uuid": "python-5-1156", + "seg": [ + [ + [ + "机器", + "学习", + "图像", + "分类" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_728763_740619" + ] + } + } + } + } + }, + { + "基于深度学习的图像分类": { + "data": { + "uuid": "python-5-1157", + "seg": [ + [ + [ + "深度", + "学习", + "图像", + "分类" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_789542_875086", + "8_783782_952834" + ] + } + } + } + } + }, + { + "LeNet": { + "data": { + "uuid": "python-5-1158", + "seg": [ + [ + [ + "lenet" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "VGG": { + "data": { + "uuid": "python-5-1159", + "seg": [ + [ + [ + "vgg" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "AlexNet": { + "data": { + "uuid": "python-5-1160", + "seg": [ + [ + [ + "alexnet" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "ResNet": { + "data": { + "uuid": "python-5-1161", + "seg": [ + [ + [ + "resnet" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7420678_53378824" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1326", + "seg": [ + [ + [ + "图像", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "人脸识别": { + "data": { + "uuid": "python-4-1327", + "seg": [ + [ + [ + "人脸识别" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "目标检测": { + "children": [ + { + "目标检测概述": { + "data": { + "uuid": "python-5-1162", + "seg": [ + [ + [ + "目标", + "检测", + "概述" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_748430_800396", + "8_7397574_53343850", + "8_7436818_53408967" + ] + } + } + } + } + }, + { + "RCNN": { + "data": { + "uuid": "python-5-1163", + "seg": [ + [ + [ + "rcnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Fast-RCNN": { + "data": { + "uuid": "python-5-1164", + "seg": [ + [ + [ + "fast", + "rcnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "SPPNet": { + "data": { + "uuid": "python-5-1165", + "seg": [ + [ + [ + "sppnet" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Mask-RCNN": { + "data": { + "uuid": "python-5-1166", + "seg": [ + [ + [ + "mask", + "rcnn" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1058702_1256112", + "8_1065083_1264127" + ] + } + } + } + } + }, + { + "SSD": { + "data": { + "uuid": "python-5-1167", + "seg": [ + [ + [ + "ssd" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "YOLO系列算法": { + "data": { + "uuid": "python-5-1168", + "seg": [ + [ + [ + "yolo", + "系列", + "算法" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_754662_809846" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1328", + "seg": [ + [ + [ + "目标", + "检测" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "深度神经网络概述": { + "children": [ + { + "创建神经网络块": { + "data": { + "uuid": "python-5-1169", + "seg": [ + [ + [ + "创建", + "神经网络" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "TensorFlow介绍": { + "data": { + "uuid": "python-5-1170", + "seg": [ + [ + [ + "tensorflow", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "MNIST数据集介绍": { + "data": { + "uuid": "python-5-1171", + "seg": [ + [ + [ + "mnist", + "数据", + "集", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Keras深度学习库概述": { + "data": { + "uuid": "python-5-1172", + "seg": [ + [ + [ + "keras", + "深度", + "学习", + "库", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于Keras和MNIST的手写数字识别": { + "children": [ + { + "训练和测试数据的检索": { + "data": { + "uuid": "python-6-179", + "seg": [ + [ + [ + "训练" + ], + [ + "测试数据", + "检索" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "训练数据的可视化": { + "data": { + "uuid": "python-6-180", + "seg": [ + [ + [ + "训练", + "数据", + "可视化" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7442181_53419035" + ] + } + } + } + } + }, + { + "创建神经网络": { + "data": { + "uuid": "python-6-181", + "seg": [ + [ + [ + "创建", + "神经网络" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "训练神经网络": { + "data": { + "uuid": "python-6-182", + "seg": [ + [ + [ + "训练", + "神经网络" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7415944_53369575", + "8_7416109_53370095" + ] + } + } + } + } + }, + { + "测试": { + "data": { + "uuid": "python-6-183", + "seg": [ + [ + [] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1173", + "seg": [ + [ + [ + "keras" + ], + [ + "mnist", + "手写", + "数字", + "识别" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1068540_1269354" + ] + } + } + } + } + }, + { + "理解反向传播": { + "data": { + "uuid": "python-5-1174", + "seg": [ + [ + [ + "理解", + "反向", + "传播" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1329", + "seg": [ + [ + [ + "深度", + "神经网络", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "卷积神经网络介绍": { + "children": [ + { + "CNN历史": { + "data": { + "uuid": "python-5-1175", + "seg": [ + [ + [ + "cnn", + "历史" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "卷积神经网络": { + "children": [ + { + "计算机如何解释图像": { + "data": { + "uuid": "python-6-184", + "seg": [ + [ + [ + "计算机", + "图像" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7435918_53406922" + ] + } + } + } + } + }, + { + "编码实现图像可视化": { + "data": { + "uuid": "python-6-185", + "seg": [ + [ + [ + "编码", + "图像", + "可视化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "dropout": { + "data": { + "uuid": "python-6-186", + "seg": [ + [ + [ + "dropout" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "输入层": { + "data": { + "uuid": "python-6-187", + "seg": [ + [ + [ + "输入", + "层" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "卷积层": { + "data": { + "uuid": "python-6-188", + "seg": [ + [ + [ + "卷积", + "层" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "池化层": { + "data": { + "uuid": "python-6-189", + "seg": [ + [ + [ + "池化层" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1176", + "seg": [ + [ + [ + "卷积", + "神经网络" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1330", + "seg": [ + [ + [ + "卷积", + "神经网络", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "构建CNN并进行性能优化": { + "children": [ + { + "CNN架构和DNN的缺点": { + "children": [ + { + "卷积操作": { + "data": { + "uuid": "python-6-190", + "seg": [ + [ + [ + "卷积", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "池化、步长和填充操作": { + "data": { + "uuid": "python-6-191", + "seg": [ + [ + [ + "池化" + ], + [ + "步长" + ], + [ + "填充", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1177", + "seg": [ + [ + [ + "cnn", + "架构" + ], + [ + "dnn", + "缺点" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "TensorFlow中的卷积和池化操作": { + "children": [ + { + "在TensorFlow中应用池化操作": { + "data": { + "uuid": "python-6-192", + "seg": [ + [ + [ + "tensorflow", + "池化", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "TensorFlow中的卷积操作": { + "data": { + "uuid": "python-6-193", + "seg": [ + [ + [ + "tensorflow", + "卷积", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1178", + "seg": [ + [ + [ + "tensorflow", + "卷积", + "和池化", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "训练CNN": { + "children": [ + { + "初始化权重和偏置": { + "data": { + "uuid": "python-6-194", + "seg": [ + [ + [ + "初始化", + "权重" + ], + [ + "偏置" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "正则化": { + "data": { + "uuid": "python-6-195", + "seg": [ + [ + [ + "正则", + "化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "激活函数": { + "data": { + "uuid": "python-6-196", + "seg": [ + [ + [ + "激活", + "函数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1179", + "seg": [ + [ + [ + "训练", + "cnn" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_769783_830940" + ] + } + } + } + } + }, + { + "模型性能优化": { + "children": [ + { + "隐含层数量": { + "data": { + "uuid": "python-6-197", + "seg": [ + [ + [ + "隐含", + "层", + "数量" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "每个隐含层的神经元个数": { + "data": { + "uuid": "python-6-198", + "seg": [ + [ + [ + "隐含", + "层", + "神经元", + "个数" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "批标准化": { + "data": { + "uuid": "python-6-199", + "seg": [ + [ + [ + "批", + "标准化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "高级正则化及过拟合的避免": { + "data": { + "uuid": "python-6-200", + "seg": [ + [ + [ + "高级", + "正则", + "化及", + "拟合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "运用哪个优化器": { + "data": { + "uuid": "python-6-201", + "seg": [ + [ + [ + "优化", + "器" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_733761_756051", + "8_158580_23104", + "8_700898_590152", + "8_213903_157317", + "8_4646448_29330064" + ] + } + } + } + } + }, + { + "内存调优": { + "data": { + "uuid": "python-6-202", + "seg": [ + [ + [ + "内存", + "调优" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "层的位置调优": { + "data": { + "uuid": "python-6-203", + "seg": [ + [ + [ + "层", + "位置", + "调优" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "综合所有操作创建第二个CNN": { + "data": { + "uuid": "python-6-204", + "seg": [ + [ + [ + "综合", + "操作", + "创建", + "cnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "数据集描述和预处理": { + "data": { + "uuid": "python-6-205", + "seg": [ + [ + [ + "数据", + "集", + "描述" + ], + [ + "预处理" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "创建CNN模型": { + "data": { + "uuid": "python-6-206", + "seg": [ + [ + [ + "创建", + "cnn", + "模型" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7429341_53396131", + "8_7405217_53354621" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-1180", + "seg": [ + [ + [ + "模型", + "性能", + "优化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1331", + "seg": [ + [ + [ + "构建", + "cnn", + "性能", + "优化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "经典的CNN模型架构": { + "children": [ + { + "ImageNet介绍": { + "data": { + "uuid": "python-5-1181", + "seg": [ + [ + [ + "imagenet", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "AlexNet架构": { + "data": { + "uuid": "python-5-1182", + "seg": [ + [ + [ + "alexnet", + "架构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "VGGNet架构": { + "data": { + "uuid": "python-5-1183", + "seg": [ + [ + [ + "vggnet", + "架构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GoogLeNet架构": { + "children": [ + { + "架构洞察": { + "data": { + "uuid": "python-6-207", + "seg": [ + [ + [ + "架构", + "洞察" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "inception模块": { + "data": { + "uuid": "python-6-208", + "seg": [ + [ + [ + "inception", + "模块" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1184", + "seg": [ + [ + [ + "googlenet", + "架构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "ResNet架构": { + "data": { + "uuid": "python-5-1185", + "seg": [ + [ + [ + "resnet", + "架构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1332", + "seg": [ + [ + [ + "经典", + "cnn", + "模型", + "架构" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "转移学习": { + "children": [ + { + "特征提取方法": { + "children": [ + { + "目标数据集较小且与原始训练集相似": { + "data": { + "uuid": "python-6-209", + "seg": [ + [ + [ + "目标", + "数据", + "集" + ], + [ + "原始", + "训练", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "目标数据集较小且与原始训练集不同": { + "data": { + "uuid": "python-6-210", + "seg": [ + [ + [ + "目标", + "数据", + "集" + ], + [ + "原始", + "训练", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "目标数据集很大且与原始训练集相似": { + "data": { + "uuid": "python-6-211", + "seg": [ + [ + [ + "目标", + "数据", + "集", + "很大" + ], + [ + "原始", + "训练", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "目标数据集很大且与原始训练集不同": { + "data": { + "uuid": "python-6-212", + "seg": [ + [ + [ + "目标", + "数据", + "集", + "很大" + ], + [ + "原始", + "训练", + "集" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1186", + "seg": [ + [ + [ + "特征提取", + "方法" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "转移学习示例": { + "data": { + "uuid": "python-5-1187", + "seg": [ + [ + [ + "转移", + "学习", + "示例" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "多任务学习": { + "data": { + "uuid": "python-5-1188", + "seg": [ + [ + [ + "多任务", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1333", + "seg": [ + [ + [ + "转移", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN自编码器": { + "children": [ + { + "自编码器介绍": { + "data": { + "uuid": "python-5-1189", + "seg": [ + [ + [ + "编码器", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "卷积自编码器": { + "data": { + "uuid": "python-5-1190", + "seg": [ + [ + [ + "卷积", + "编码器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "应用": { + "data": { + "uuid": "python-5-1191", + "seg": [ + [ + [] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1334", + "seg": [ + [ + [ + "cnn", + "编码器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GAN:使用CNN生成新图像": { + "children": [ + { + "Pix2pix:基于GAN的图像翻译": { + "children": [ + { + "CycleGAN": { + "data": { + "uuid": "python-6-213", + "seg": [ + [ + [ + "cyclegan" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "训练GAN模型": { + "data": { + "uuid": "python-6-214", + "seg": [ + [ + [ + "训练", + "gan", + "模型" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_3460891_23009154", + "8_753315_809246" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-1192", + "seg": [ + [ + [ + "pix2pix" + ] + ], + [ + [ + "gan", + "图像", + "翻译" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GAN的代码示例": { + "children": [ + { + "计算损失": { + "data": { + "uuid": "python-6-215", + "seg": [ + [ + [ + "计算", + "损失" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "半监督学习和GAN": { + "data": { + "uuid": "python-6-216", + "seg": [ + [ + [ + "监督", + "学习" + ], + [ + "gan" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1193", + "seg": [ + [ + [ + "gan", + "示例" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "特征匹配": { + "children": [ + { + "基于半监督分类的GAN示例": { + "data": { + "uuid": "python-6-217", + "seg": [ + [ + [ + "监督", + "分类", + "gan", + "示例" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "深度卷积GAN": { + "data": { + "uuid": "python-6-218", + "seg": [ + [ + [ + "深度", + "卷积", + "gan" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1194", + "seg": [ + [ + [ + "特征", + "匹配" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1335", + "seg": [ + [ + [ + "gan" + ] + ], + [ + [ + "cnn", + "生成", + "图像" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN和视觉模型的注意力机制": { + "children": [ + { + "图像描述中的注意力机制": { + "data": { + "uuid": "python-5-1195", + "seg": [ + [ + [ + "图像", + "描述", + "注意力", + "机制" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "注意力类型": { + "children": [ + { + "硬注意力": { + "data": { + "uuid": "python-6-219", + "seg": [ + [ + [ + "硬", + "注意力" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "软注意力": { + "data": { + "uuid": "python-6-220", + "seg": [ + [ + [ + "软", + "注意力" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1196", + "seg": [ + [ + [ + "注意力", + "类型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "运用注意力改善视觉模型": { + "children": [ + { + "视觉CNN模型次优性能的原因": { + "data": { + "uuid": "python-6-221", + "seg": [ + [ + [ + "视觉", + "cnn", + "模型", + "次优", + "性能", + "原因" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "循环视觉注意力模型": { + "data": { + "uuid": "python-6-222", + "seg": [ + [ + [ + "循环", + "视觉", + "注意力", + "模型" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7412643_53364841", + "8_7395881_53339130" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-1197", + "seg": [ + [ + [ + "注意力", + "改善", + "视觉", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "参考文献": { + "data": { + "uuid": "python-5-1198", + "seg": [ + [ + [ + "参考文献" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1336", + "seg": [ + [ + [ + "cnn" + ], + [ + "视觉", + "模型", + "注意力", + "机制" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-246", + "seg": [ + [ + [ + "计算机", + "视觉" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "自然语言处理": { + "children": [ + { + "自然语言处理概览": { + "children": [ + { + "自然语言处理的基本概念": { + "data": { + "uuid": "python-5-1199", + "seg": [ + [ + [ + "自然语言", + "基本概念" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "自然语言处理的面临困难": { + "data": { + "uuid": "python-5-1200", + "seg": [ + [ + [ + "自然语言", + "面临", + "困难" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "自然语言处理的研究现状": { + "data": { + "uuid": "python-5-1201", + "seg": [ + [ + [ + "自然语言", + "研究", + "现状" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7456720_53440762" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1337", + "seg": [ + [ + [ + "自然语言", + "概览" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "预备知识": { + "children": [ + { + "概率论基础知识": { + "data": { + "uuid": "python-5-1202", + "seg": [ + [ + [ + "概率论", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "最大似然估计": { + "data": { + "uuid": "python-5-1203", + "seg": [ + [ + [ + "似然", + "估计" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "隐马尔可夫模型": { + "data": { + "uuid": "python-5-1204", + "seg": [ + [ + [ + "隐", + "马尔可夫", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "贝叶斯网络": { + "data": { + "uuid": "python-5-1205", + "seg": [ + [ + [ + "贝叶斯", + "网络" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "条件概率分布": { + "data": { + "uuid": "python-5-1206", + "seg": [ + [ + [ + "条件", + "概率分布" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "信息论基础知识": { + "data": { + "uuid": "python-5-1207", + "seg": [ + [ + [ + "信息论", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "熵": { + "data": { + "uuid": "python-5-1208", + "seg": [ + [ + [ + "熵" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "困惑度": { + "data": { + "uuid": "python-5-1209", + "seg": [ + [ + [ + "困惑" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "互信息": { + "data": { + "uuid": "python-5-1210", + "seg": [ + [ + [ + "互信息" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络基础知识": { + "data": { + "uuid": "python-5-1211", + "seg": [ + [ + [ + "神经网络", + "基础知识" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CRF": { + "data": { + "uuid": "python-5-1212", + "seg": [ + [ + [ + "crf" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "BiLSTM+Attention": { + "data": { + "uuid": "python-5-1213", + "seg": [ + [ + [ + "bilstm", + "attention" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "迁移学习": { + "data": { + "uuid": "python-5-1214", + "seg": [ + [ + [ + "迁移", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "常用语料库和知识库": { + "data": { + "uuid": "python-5-1215", + "seg": [ + [ + [ + "语料库" + ], + [ + "知识库" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1338", + "seg": [ + [ + [ + "预备", + "知识" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "jieba": { + "children": [ + { + "jieba概述": { + "data": { + "uuid": "python-5-1216", + "seg": [ + [ + [ + "jieba", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "jieba分词": { + "data": { + "uuid": "python-5-1217", + "seg": [ + [ + [ + "jieba", + "分词" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7430524_53397631", + "8_1092631_1300730" + ] + } + } + } + } + }, + { + "jieba添加自定义词典": { + "data": { + "uuid": "python-5-1218", + "seg": [ + [ + [ + "jieba", + "添加", + "自定义", + "词典" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "jieba词性标注": { + "data": { + "uuid": "python-5-1219", + "seg": [ + [ + [ + "jieba", + "词性", + "标注" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "jieba关键词抽取": { + "data": { + "uuid": "python-5-1220", + "seg": [ + [ + [ + "jieba", + "关键词", + "抽取" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1339", + "seg": [ + [ + [ + "jieba" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7438759_53412146" + ] + } + } + } + } + }, + { + "nltk": { + "children": [ + { + "nltk概述": { + "data": { + "uuid": "python-5-1221", + "seg": [ + [ + [ + "nltk", + "概述" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk字符串处理": { + "data": { + "uuid": "python-5-1222", + "seg": [ + [ + [ + "nltk", + "字符串" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk词性标注": { + "data": { + "uuid": "python-5-1223", + "seg": [ + [ + [ + "nltk", + "词性", + "标注" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk词干提取": { + "data": { + "uuid": "python-5-1224", + "seg": [ + [ + [ + "nltk", + "词干", + "提取" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk命名实体识别": { + "data": { + "uuid": "python-5-1225", + "seg": [ + [ + [ + "nltk", + "命名", + "实体", + "识别" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk分块处理": { + "data": { + "uuid": "python-5-1226", + "seg": [ + [ + [ + "nltk", + "分块" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk文本分类": { + "data": { + "uuid": "python-5-1227", + "seg": [ + [ + [ + "nltk", + "文本", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "nltk情感分析": { + "data": { + "uuid": "python-5-1228", + "seg": [ + [ + [ + "nltk", + "情感", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1340", + "seg": [ + [ + [ + "nltk" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Genism": { + "children": [ + { + "TF-IDF": { + "data": { + "uuid": "python-5-1229", + "seg": [ + [ + [ + "tf", + "idf" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_1064889_1267447" + ] + } + } + } + } + }, + { + "similarities": { + "data": { + "uuid": "python-5-1230", + "seg": [ + [ + [ + "similarities" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "LSA": { + "data": { + "uuid": "python-5-1231", + "seg": [ + [ + [ + "lsa" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "LDA": { + "data": { + "uuid": "python-5-1232", + "seg": [ + [ + [ + "lda" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Word2vec": { + "data": { + "uuid": "python-5-1233", + "seg": [ + [ + [ + "word2vec" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1341", + "seg": [ + [ + [ + "genism" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "词法分析": { + "children": [ + { + "分词(英文分词/中文分词)": { + "data": { + "uuid": "python-5-1234", + "seg": [ + [ + [ + "分词", + "英文", + "中文" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "词干提取": { + "data": { + "uuid": "python-5-1235", + "seg": [ + [ + [ + "词干", + "提取" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "词形还原": { + "data": { + "uuid": "python-5-1236", + "seg": [ + [ + [ + "词形", + "还原" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "词性标注": { + "data": { + "uuid": "python-5-1237", + "seg": [ + [ + [ + "词性", + "标注" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "命名实体识别": { + "data": { + "uuid": "python-5-1238", + "seg": [ + [ + [ + "命名", + "实体", + "识别" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7416936_53371682" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1342", + "seg": [ + [ + [ + "词法", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "句法分析": { + "children": [ + { + "短语结构分析": { + "data": { + "uuid": "python-5-1239", + "seg": [ + [ + [ + "短语", + "结构", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "依存句法分析": { + "data": { + "uuid": "python-5-1240", + "seg": [ + [ + [ + "依存", + "句法分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1343", + "seg": [ + [ + [ + "句法分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "语义分析": { + "children": [ + { + "命名实体消歧": { + "data": { + "uuid": "python-5-1241", + "seg": [ + [ + [ + "命名", + "实体", + "消歧" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "指代消解": { + "data": { + "uuid": "python-5-1242", + "seg": [ + [ + [ + "指代", + "消解" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "语义角色标注": { + "data": { + "uuid": "python-5-1243", + "seg": [ + [ + [ + "语义", + "角色", + "标注" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "语义关系抽取": { + "data": { + "uuid": "python-5-1244", + "seg": [ + [ + [ + "语义", + "关系", + "抽取" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "语义依存分析": { + "data": { + "uuid": "python-5-1245", + "seg": [ + [ + [ + "语义", + "依存", + "分析" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_751136_804606", + "8_237019_216584", + "8_7426926_53390903", + "8_710232_668200" + ] + } + } + } + } + }, + { + "抽象语义表示": { + "data": { + "uuid": "python-5-1246", + "seg": [ + [ + [ + "抽象", + "语义" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1344", + "seg": [ + [ + [ + "语义", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "词嵌入": { + "children": [ + { + "Word2Vec": { + "data": { + "uuid": "python-5-1247", + "seg": [ + [ + [ + "word2vec" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GloVe": { + "data": { + "uuid": "python-5-1248", + "seg": [ + [ + [ + "glove" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7425497_53387049" + ] + } + } + } + } + }, + { + "fastText": { + "data": { + "uuid": "python-5-1249", + "seg": [ + [ + [ + "fasttext" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "ELMo": { + "data": { + "uuid": "python-5-1250", + "seg": [ + [ + [ + "elmo" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "BERT": { + "data": { + "uuid": "python-5-1251", + "seg": [ + [ + [ + "bert" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "XLNet": { + "data": { + "uuid": "python-5-1252", + "seg": [ + [ + [ + "xlnet" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1345", + "seg": [ + [ + [ + "词", + "嵌入" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7431208_53399226", + "8_7442353_53419216" + ] + } + } + } + } + }, + { + "文本挖掘": { + "children": [ + { + "文本相似度计算": { + "data": { + "uuid": "python-5-1253", + "seg": [ + [ + [ + "文本", + "计算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文本聚类": { + "data": { + "uuid": "python-5-1254", + "seg": [ + [ + [ + "文本", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文本分类": { + "data": { + "uuid": "python-5-1255", + "seg": [ + [ + [ + "文本", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文本摘要": { + "data": { + "uuid": "python-5-1256", + "seg": [ + [ + [ + "文本", + "摘要" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_175569_56460", + "8_773453_837133", + "8_7435587_53407310", + "8_7425164_53386391", + "8_7416671_53371042", + "8_7459336_53444307", + "8_7428287_53393915", + "8_769177_829885" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1346", + "seg": [ + [ + [ + "文本", + "挖掘" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "情感分析": { + "children": [ + { + "基于情感词典的情感分析": { + "data": { + "uuid": "python-5-1257", + "seg": [ + [ + [ + "情感", + "词典", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于深度学习的情感分析": { + "data": { + "uuid": "python-5-1258", + "seg": [ + [ + [ + "深度", + "学习", + "情感", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1347", + "seg": [ + [ + [ + "情感", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "主题模型": { + "children": [ + { + "LSA": { + "data": { + "uuid": "python-5-1259", + "seg": [ + [ + [ + "lsa" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "LDA": { + "data": { + "uuid": "python-5-1260", + "seg": [ + [ + [ + "lda" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7427617_53392754", + "8_7445702_53424402" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1348", + "seg": [ + [ + [ + "主题", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "机器翻译": { + "children": [ + { + "IBM统计翻译模型": { + "data": { + "uuid": "python-5-1261", + "seg": [ + [ + [ + "ibm", + "统计", + "翻译", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "短语抽取": { + "data": { + "uuid": "python-5-1262", + "seg": [ + [ + [ + "短语", + "抽取" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7465264_53452040" + ] + } + } + } + } + }, + { + "语言模型": { + "data": { + "uuid": "python-5-1263", + "seg": [ + [ + [ + "语言", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "GNMT": { + "data": { + "uuid": "python-5-1264", + "seg": [ + [ + [ + "gnmt" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Seq2Seq": { + "data": { + "uuid": "python-5-1265", + "seg": [ + [ + [ + "seq2seq" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Transformer": { + "data": { + "uuid": "python-5-1266", + "seg": [ + [ + [ + "trans", + "for", + "mer" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1349", + "seg": [ + [ + [ + "机器翻译" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "语言模型": { + "children": [ + { + "n-gram": { + "data": { + "uuid": "python-5-1267", + "seg": [ + [ + [ + "n", + "gram" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7436006_53407220", + "8_7435995_53407043", + "8_7432940_53402649", + "8_4646141_29329597", + "8_7451396_53432625", + "8_7459033_53444899", + "8_7447619_53427557" + ] + } + } + } + } + }, + { + "Pitman-Yor过程模型": { + "data": { + "uuid": "python-5-1268", + "seg": [ + [ + [ + "pitman", + "yor", + "过程", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "AWD-LSTM": { + "data": { + "uuid": "python-5-1269", + "seg": [ + [ + [ + "awd", + "lstm" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Transformer-XL": { + "data": { + "uuid": "python-5-1270", + "seg": [ + [ + [ + "trans", + "for", + "mer", + "xl" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Gated CNN": { + "data": { + "uuid": "python-5-1271", + "seg": [ + [ + [ + "gated", + "cnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1350", + "seg": [ + [ + [ + "语言", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "智能问答": { + "children": [ + { + "基于知识的问答": { + "data": { + "uuid": "python-5-1272", + "seg": [ + [ + [ + "知识", + "问答" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于检索的问答": { + "data": { + "uuid": "python-5-1273", + "seg": [ + [ + [ + "检索", + "问答" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "阅读理解": { + "data": { + "uuid": "python-5-1274", + "seg": [ + [ + [ + "阅读", + "理解" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_742041_783281", + "8_7465161_53451896", + "8_7453990_53436658", + "8_7412159_53363342" + ] + } + } + } + } + }, + { + "完形填空": { + "data": { + "uuid": "python-5-1275", + "seg": [ + [ + [ + "完形填空" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1351", + "seg": [ + [ + [ + "智能", + "问答" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "智能对话": { + "children": [ + { + "对话行为分类": { + "data": { + "uuid": "python-5-1276", + "seg": [ + [ + [ + "对话", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "对话状态跟踪": { + "data": { + "uuid": "python-5-1277", + "seg": [ + [ + [ + "对话", + "状态", + "跟踪" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "检索式聊天机器人": { + "data": { + "uuid": "python-5-1278", + "seg": [ + [ + [ + "检索", + "聊天", + "机器人" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "生成式聊天机器人": { + "data": { + "uuid": "python-5-1279", + "seg": [ + [ + [ + "生成式", + "聊天", + "机器人" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "意图识别": { + "data": { + "uuid": "python-5-1280", + "seg": [ + [ + [ + "意图", + "识别" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "槽填充(Slot Filling)": { + "data": { + "uuid": "python-5-1281", + "seg": [ + [ + [ + "槽", + "填充", + "slot", + "filling" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1352", + "seg": [ + [ + [ + "智能", + "对话" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "语音识别": { + "children": [ + { + "傅里叶变换": { + "data": { + "uuid": "python-5-1282", + "seg": [ + [ + [ + "傅里叶", + "变换" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "声学模型": { + "data": { + "uuid": "python-5-1283", + "seg": [ + [ + [ + "声学", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "隐马尔可夫模型": { + "data": { + "uuid": "python-5-1284", + "seg": [ + [ + [ + "隐", + "马尔可夫", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "CNN": { + "data": { + "uuid": "python-5-1285", + "seg": [ + [ + [ + "cnn" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "LSTM-HMM": { + "data": { + "uuid": "python-5-1286", + "seg": [ + [ + [ + "lstm", + "hmm" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "神经网络语言模型": { + "data": { + "uuid": "python-5-1287", + "seg": [ + [ + [ + "神经网络", + "语言", + "模型" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "MFCC": { + "data": { + "uuid": "python-5-1288", + "seg": [ + [ + [ + "mfcc" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1353", + "seg": [ + [ + [ + "语音", + "识别" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7417263_53372082" + ] + } + } + } + } + }, + { + "知识图谱": { + "children": [ + { + "知识图谱构建": { + "data": { + "uuid": "python-5-1289", + "seg": [ + [ + [ + "知识", + "图谱", + "构建" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "知识计算": { + "data": { + "uuid": "python-5-1290", + "seg": [ + [ + [ + "知识", + "计算" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "知识存储": { + "data": { + "uuid": "python-5-1291", + "seg": [ + [ + [ + "知识", + "存储" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_695112_576951", + "8_7443668_53423812" + ] + } + } + } + } + }, + { + "知识服务与应用": { + "data": { + "uuid": "python-5-1292", + "seg": [ + [ + [ + "知识", + "服务" + ], + [] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1354", + "seg": [ + [ + [ + "知识", + "图谱" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-247", + "seg": [ + [ + [ + "自然语言" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "简介": { + "children": [ + { + "为何选择Python": { + "data": { + "uuid": "python-4-1355", + "seg": [ + [ + [ + "选择", + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "何时避免使用Python": { + "data": { + "uuid": "python-4-1356", + "seg": [ + [ + [ + "python" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python中的面向对象编程": { + "data": { + "uuid": "python-4-1357", + "seg": [ + [ + [ + "python", + "面向对象编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Python中调用其他语言": { + "data": { + "uuid": "python-4-1358", + "seg": [ + [ + [ + "python", + "调用", + "语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将Python模型作为微服务": { + "data": { + "uuid": "python-4-1359", + "seg": [ + [ + [ + "python", + "模型", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高性能API和并发编程": { + "data": { + "uuid": "python-4-1360", + "seg": [ + [ + [ + "高性能", + "api" + ], + [ + "并发", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-248", + "seg": [ + [ + [ + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python结构化数据提取、转换和加载": { + "children": [ + { + "MySQL": { + "children": [ + { + "如何安装MySQLdb": { + "data": { + "uuid": "python-5-1293", + "seg": [ + [ + [ + "安装", + "mysqldb" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_689415_557421" + ] + } + } + } + } + }, + { + "数据库连接": { + "data": { + "uuid": "python-5-1294", + "seg": [ + [ + [ + "数据库", + "连接" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "INSERT操作": { + "data": { + "uuid": "python-5-1295", + "seg": [ + [ + [ + "insert", + "操作" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_751092_804525" + ] + } + } + } + } + }, + { + "READ操作": { + "data": { + "uuid": "python-5-1296", + "seg": [ + [ + [ + "read", + "操作" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7441024_53416772", + "8_782841_853939" + ] + } + } + } + } + }, + { + "DELETE操作": { + "data": { + "uuid": "python-5-1297", + "seg": [ + [ + [ + "delete", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "UPDATE操作": { + "data": { + "uuid": "python-5-1298", + "seg": [ + [ + [ + "update", + "操作" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7429356_53396206", + "8_7429057_53395503" + ] + } + } + } + } + }, + { + "COMMIT操作": { + "data": { + "uuid": "python-5-1299", + "seg": [ + [ + [ + "commit", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "ROLL-BACK操作": { + "data": { + "uuid": "python-5-1300", + "seg": [ + [ + [ + "roll", + "back", + "操作" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1361", + "seg": [ + [ + [ + "mysql" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Elasticsearch": { + "data": { + "uuid": "python-4-1362", + "seg": [ + [ + [ + "elasticsearch" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Neo4j Python驱动": { + "data": { + "uuid": "python-4-1363", + "seg": [ + [ + [ + "neo4j", + "python", + "驱动" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "neo4j-rest-client": { + "data": { + "uuid": "python-4-1364", + "seg": [ + [ + [ + "neo4j", + "rest", + "client" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "内存数据库": { + "data": { + "uuid": "python-4-1365", + "seg": [ + [ + [ + "内存", + "数据库" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Python版本MongoDB": { + "children": [ + { + "将数据导入集合": { + "data": { + "uuid": "python-5-1301", + "seg": [ + [ + [ + "数据", + "导入", + "集合" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用pymongo创建连接": { + "data": { + "uuid": "python-5-1302", + "seg": [ + [ + [ + "pymongo", + "创建", + "连接" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "访问数据库对象": { + "data": { + "uuid": "python-5-1303", + "seg": [ + [ + [ + "访问", + "数据库", + "对象" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_753300_807726" + ] + } + } + } + } + }, + { + "插入数据": { + "data": { + "uuid": "python-5-1304", + "seg": [ + [ + [ + "插入", + "数据" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_6716309_47578445" + ] + } + } + } + } + }, + { + "更新数据": { + "data": { + "uuid": "python-5-1305", + "seg": [ + [ + [ + "更新", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "删除数据": { + "data": { + "uuid": "python-5-1306", + "seg": [ + [ + [ + "删除", + "数据" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_757434_812944", + "8_7442837_53419801" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1366", + "seg": [ + [ + [ + "python", + "版本", + "mongodb" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Pandas": { + "data": { + "uuid": "python-4-1367", + "seg": [ + [ + [ + "pandas" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Python非结构化数据提取、转换和加载": { + "children": [ + { + "电子邮件解析": { + "data": { + "uuid": "python-5-1307", + "seg": [ + [ + [ + "电子邮件", + "解析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "主题爬取": { + "data": { + "uuid": "python-5-1308", + "seg": [ + [ + [ + "主题", + "爬取" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1368", + "seg": [ + [ + [ + "python", + "非", + "结构化", + "数据", + "提取" + ], + [ + "转换" + ], + [ + "加载" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "稳定方差": { + "data": { + "uuid": "python-4-1369", + "seg": [ + [ + [ + "稳定", + "方差" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使周期效应累加": { + "data": { + "uuid": "python-4-1370", + "seg": [ + [ + [ + "周期", + "效应", + "累加" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使数据呈正态分布": { + "data": { + "uuid": "python-4-1371", + "seg": [ + [ + [ + "数据", + "呈", + "正态分布" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-249", + "seg": [ + [ + [ + "python", + "结构化", + "数据", + "提取" + ], + [ + "转换" + ], + [ + "加载" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "基于Python的监督学习": { + "children": [ + { + "使用Python实现降维": { + "children": [ + { + "相关性分析": { + "data": { + "uuid": "python-5-1309", + "seg": [ + [ + [ + "相关性", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1372", + "seg": [ + [ + [ + "python", + "降维" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用Python进行分类": { + "data": { + "uuid": "python-4-1373", + "seg": [ + [ + [ + "python", + "分类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "决策树": { + "children": [ + { + "哪个属性优先": { + "data": { + "uuid": "python-5-1310", + "seg": [ + [ + [ + "属性", + "优先" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "随机森林分类器": { + "data": { + "uuid": "python-5-1311", + "seg": [ + [ + [ + "随机", + "森林", + "分类器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1374", + "seg": [ + [ + [ + "决策树" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7425762_53387565" + ] + } + } + } + } + }, + { + "朴素贝叶斯分类器": { + "data": { + "uuid": "python-4-1375", + "seg": [ + [ + [ + "朴素", + "贝叶斯", + "分类器" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_681473_534568" + ] + } + } + } + } + }, + { + "支持向量机": { + "data": { + "uuid": "python-4-1376", + "seg": [ + [ + [ + "支持", + "向量", + "机" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7443094_53420753" + ] + } + } + } + } + }, + { + "最近邻分类器": { + "data": { + "uuid": "python-4-1377", + "seg": [ + [ + [ + "邻", + "分类器" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "情绪分析": { + "data": { + "uuid": "python-4-1378", + "seg": [ + [ + [ + "情绪", + "分析" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "图像识别": { + "data": { + "uuid": "python-4-1379", + "seg": [ + [ + [ + "图像识别" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使用Python进行回归": { + "children": [ + { + "最小二乘估计": { + "data": { + "uuid": "python-5-1312", + "seg": [ + [ + [ + "最小", + "估计" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7425433_53386909" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1380", + "seg": [ + [ + [ + "python", + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "分类和回归": { + "data": { + "uuid": "python-4-1381", + "seg": [ + [ + [ + "分类" + ], + [ + "回归" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "使模型高估或低估": { + "data": { + "uuid": "python-4-1382", + "seg": [ + [ + [ + "模型", + "高估", + "低估" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "处理分类型数据": { + "data": { + "uuid": "python-4-1383", + "seg": [ + [ + [ + "分", + "类型", + "数据" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-250", + "seg": [ + [ + [ + "python", + "监督", + "学习" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "无监督学习—聚类": { + "children": [ + { + "K均值聚类": { + "data": { + "uuid": "python-4-1384", + "seg": [ + [ + [ + "k", + "均值", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "选择K—肘部法则": { + "data": { + "uuid": "python-4-1385", + "seg": [ + [ + [ + "选择", + "k", + "肘部", + "法则" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "距离或相似性度量": { + "children": [ + { + "属性": { + "data": { + "uuid": "python-5-1313", + "seg": [ + [ + [ + "属性" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "一般及欧氏距离": { + "data": { + "uuid": "python-5-1314", + "seg": [ + [ + [], + [ + "欧氏", + "距离" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "平方欧氏距离": { + "data": { + "uuid": "python-5-1315", + "seg": [ + [ + [ + "平方", + "欧氏", + "距离" + ] + ] + ], + "level": "3", + "related_data": { + "qa": { + "data_id": [ + "8_7425190_53386476" + ] + } + } + } + } + }, + { + "字符串之间的编辑距离": { + "data": { + "uuid": "python-5-1316", + "seg": [ + [ + [ + "字符串", + "编辑", + "距离" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1386", + "seg": [ + [ + [ + "距离", + "相似性", + "度量" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "文档上下文的相似性": { + "data": { + "uuid": "python-4-1387", + "seg": [ + [ + [ + "文档", + "上下文", + "相似性" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "如何判断聚类结果是否良好": { + "data": { + "uuid": "python-4-1388", + "seg": [ + [ + [ + "判断", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-251", + "seg": [ + [ + [ + "监督", + "学习", + "聚类" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "时间序列": { + "children": [ + { + "变化的分类": { + "data": { + "uuid": "python-4-1389", + "seg": [ + [ + [ + "变化", + "分类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包含趋势的序列分析": { + "children": [ + { + "曲线拟合": { + "data": { + "uuid": "python-5-1317", + "seg": [ + [ + [ + "曲线拟合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从时间序列中去除趋势": { + "data": { + "uuid": "python-5-1318", + "seg": [ + [ + [ + "时间", + "序列", + "去除", + "趋势" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7439531_53414091" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1390", + "seg": [ + [ + [ + "包含", + "趋势", + "序列", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包含周期性的序列数据分析": { + "data": { + "uuid": "python-4-1391", + "seg": [ + [ + [ + "包含", + "周期性", + "序列", + "数据分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从时间序列中去除周期性": { + "children": [ + { + "滤波": { + "data": { + "uuid": "python-5-1319", + "seg": [ + [ + [ + "滤波" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "差分": { + "data": { + "uuid": "python-5-1320", + "seg": [ + [ + [ + "差分" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1392", + "seg": [ + [ + [ + "时间", + "序列", + "去除", + "周期性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "平稳时间序列": { + "children": [ + { + "平稳过程": { + "data": { + "uuid": "python-5-1321", + "seg": [ + [ + [ + "平稳", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自相关和相关图": { + "data": { + "uuid": "python-5-1322", + "seg": [ + [ + [ + "相关" + ], + [ + "相关", + "图" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_772501_835791", + "8_769960_831242", + "8_7452373_53434330", + "8_7432790_53402324", + "8_7415394_53368798", + "8_7396616_53340547", + "8_7422252_53379719" + ] + } + } + } + } + }, + { + "自协方差和自相关函数的估计": { + "data": { + "uuid": "python-5-1323", + "seg": [ + [ + [ + "协方差" + ], + [ + "相关", + "函数", + "估计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1393", + "seg": [ + [ + [ + "平稳", + "时间", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Python进行时间序列分析": { + "children": [ + { + "有用的方法": { + "data": { + "uuid": "python-5-1324", + "seg": [ + [ + [ + "有用", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自回归过程": { + "data": { + "uuid": "python-5-1325", + "seg": [ + [ + [ + "回归", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "估计AR过程的参数": { + "data": { + "uuid": "python-5-1326", + "seg": [ + [ + [ + "估计", + "ar", + "过程", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1394", + "seg": [ + [ + [ + "python", + "时间", + "序列", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混合ARMA模型": { + "data": { + "uuid": "python-4-1395", + "seg": [ + [ + [ + "混合", + "arma", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成ARMA模型": { + "data": { + "uuid": "python-4-1396", + "seg": [ + [ + [ + "集成", + "arma", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个特殊的场景": { + "data": { + "uuid": "python-4-1397", + "seg": [ + [ + [ + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据缺失": { + "data": { + "uuid": "python-4-1398", + "seg": [ + [ + [ + "数据", + "缺失" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-252", + "seg": [ + [ + [ + "时间", + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大数据分析": { + "children": [ + { + "Hadoop": { + "children": [ + { + "MapReduce编程": { + "data": { + "uuid": "python-5-1327", + "seg": [ + [ + [ + "mapreduce", + "编程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7414249_53367702" + ] + } + } + } + } + }, + { + "partitioning函数": { + "data": { + "uuid": "python-5-1328", + "seg": [ + [ + [ + "partitioning", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "combiner函数": { + "data": { + "uuid": "python-5-1329", + "seg": [ + [ + [ + "combiner", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HDFS文件系统": { + "data": { + "uuid": "python-5-1330", + "seg": [ + [ + [ + "hdfs", + "文件系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MapReduce设计模式": { + "data": { + "uuid": "python-5-1331", + "seg": [ + [ + [ + "mapreduce", + "设计模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1399", + "seg": [ + [ + [ + "hadoop" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spark": { + "data": { + "uuid": "python-4-1400", + "seg": [ + [ + [ + "spark" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云分析": { + "data": { + "uuid": "python-4-1401", + "seg": [ + [ + [ + "云", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "物联网": { + "data": { + "uuid": "python-4-1402", + "seg": [ + [ + [ + "联网" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-253", + "seg": [ + [ + [ + "数据分析" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7448381_53428538" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-2-15", + "seg": [ + [ + [ + "人工智能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级教程": { + "children": [ + { + "原理与哲学": { + "children": [ + { + "Python之禅": { + "children": [ + { + "优美胜于丑陋": { + "data": { + "uuid": "python-5-1332", + "seg": [ + [ + [ + "优美", + "胜", + "丑陋" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "明了胜于晦涩": { + "data": { + "uuid": "python-5-1333", + "seg": [ + [ + [ + "明", + "胜于", + "晦涩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简洁胜于复杂": { + "data": { + "uuid": "python-5-1334", + "seg": [ + [ + [ + "简洁", + "胜" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复杂胜于难以理解": { + "data": { + "uuid": "python-5-1335", + "seg": [ + [ + [ + "胜", + "难以", + "理解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扁平胜于嵌套": { + "data": { + "uuid": "python-5-1336", + "seg": [ + [ + [ + "扁平", + "胜", + "嵌套" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "宽松胜于紧凑": { + "data": { + "uuid": "python-5-1337", + "seg": [ + [ + [ + "宽松", + "胜", + "紧凑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可读性很重要": { + "data": { + "uuid": "python-5-1338", + "seg": [ + [ + [ + "可读性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "即便是特例,也不可违背这些规则": { + "data": { + "uuid": "python-5-1339", + "seg": [ + [ + [ + "特例", + "违背", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实用性胜于纯粹性": { + "data": { + "uuid": "python-5-1340", + "seg": [ + [ + [ + "实用性", + "胜", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "错误永远不应该悄无声息地过去": { + "data": { + "uuid": "python-5-1341", + "seg": [ + [ + [ + "永远", + "悄无声息" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7446667_53426144" + ] + } + } + } + } + }, + { + "除非明确地沉默": { + "data": { + "uuid": "python-5-1342", + "seg": [ + [ + [ + "沉默" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面对模棱两可的情况,拒绝猜测的诱惑": { + "data": { + "uuid": "python-5-1343", + "seg": [ + [ + [ + "面对", + "模棱两可", + "情况", + "拒绝", + "猜测", + "诱惑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应该有一种(最好只有一种)显而易见的方法": { + "data": { + "uuid": "python-5-1344", + "seg": [ + [ + [ + "显而易见", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "尽管这种方式起初可能并不明显,除非你是荷兰人": { + "data": { + "uuid": "python-5-1345", + "seg": [ + [ + [ + "方式", + "荷兰人" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "做比不做要好": { + "data": { + "uuid": "python-5-1346", + "seg": [ + [ + [ + "做比", + "做" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7449321_53429361", + "8_7435343_53405838", + "8_7433477_53403730", + "8_7433911_53404257", + "8_7444492_53422658", + "8_7446689_53426255", + "8_7441250_53417127", + "8_7455044_53437782", + "8_950378_1091886", + "8_7459286_53444141" + ] + } + } + } + } + }, + { + "不假思索就动手还不如不做": { + "data": { + "uuid": "python-5-1347", + "seg": [ + [ + [ + "不假思索", + "动手", + "做" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如果实现难以解释,那就是一个糟糕的想法": { + "data": { + "uuid": "python-5-1348", + "seg": [ + [ + [ + "难以", + "糟糕", + "想法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如果实现容易解释,则可能是一个好主意": { + "data": { + "uuid": "python-5-1349", + "seg": [ + [ + [ + "主意" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名空间是一个很棒的想法,让我们做更多这样的事情吧": { + "data": { + "uuid": "python-5-1350", + "seg": [ + [ + [ + "命名", + "空间", + "很棒", + "想法", + "做", + "事情" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1403", + "seg": [ + [ + [ + "python", + "禅" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不要重复自己": { + "data": { + "uuid": "python-4-1404", + "seg": [ + [ + [ + "重复" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "松耦合": { + "data": { + "uuid": "python-4-1405", + "seg": [ + [ + [ + "松", + "耦合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "武士原则": { + "data": { + "uuid": "python-4-1406", + "seg": [ + [ + [ + "武士", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "帕累托原则": { + "data": { + "uuid": "python-4-1407", + "seg": [ + [ + [ + "帕累托", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "稳健性原则": { + "data": { + "uuid": "python-4-1408", + "seg": [ + [ + [ + "稳健性", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向后兼容性": { + "data": { + "uuid": "python-4-1409", + "seg": [ + [ + [ + "兼容性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-254", + "seg": [ + [ + [ + "原理" + ], + [ + "哲学" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7456886_53440969" + ] + } + } + } + } + }, + { + "基础知识": { + "children": [ + { + "总体概念": { + "children": [ + { + "迭代": { + "data": { + "uuid": "python-5-1351", + "seg": [ + [ + [ + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓存": { + "data": { + "uuid": "python-5-1352", + "seg": [ + [ + [ + "缓存" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_940317_1078150" + ] + } + } + } + } + }, + { + "透明度": { + "data": { + "uuid": "python-5-1353", + "seg": [ + [ + [ + "透明度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1410", + "seg": [ + [ + [ + "总体", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流程控制": { + "children": [ + { + "捕获异常": { + "data": { + "uuid": "python-5-1354", + "seg": [ + [ + [ + "捕获", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常链": { + "data": { + "uuid": "python-5-1355", + "seg": [ + [ + [ + "异常", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "当一切顺利的时候": { + "data": { + "uuid": "python-5-1356", + "seg": [ + [ + [ + "一切顺利" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "继续执行,无论异常如何": { + "data": { + "uuid": "python-5-1357", + "seg": [ + [ + [ + "继续执行", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优化循环": { + "data": { + "uuid": "python-5-1358", + "seg": [ + [ + [ + "优化", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "with语句": { + "data": { + "uuid": "python-5-1359", + "seg": [ + [ + [ + "with", + "语句" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_564848_439784" + ] + } + } + } + } + }, + { + "条件表达式": { + "data": { + "uuid": "python-5-1360", + "seg": [ + [ + [ + "条件", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1411", + "seg": [ + [ + [ + "流程", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迭代": { + "children": [ + { + "序列解包": { + "data": { + "uuid": "python-5-1361", + "seg": [ + [ + [ + "序列", + "解包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "列表解析式": { + "data": { + "uuid": "python-5-1362", + "seg": [ + [ + [ + "列表", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成器表达式": { + "data": { + "uuid": "python-5-1363", + "seg": [ + [ + [ + "生成器", + "表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集合解析式": { + "data": { + "uuid": "python-5-1364", + "seg": [ + [ + [ + "集合", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字典解析式": { + "data": { + "uuid": "python-5-1365", + "seg": [ + [ + [ + "字典", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将迭代器链接在一起": { + "data": { + "uuid": "python-5-1366", + "seg": [ + [ + [ + "迭代", + "器", + "链接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将迭代器压缩在一起": { + "data": { + "uuid": "python-5-1367", + "seg": [ + [ + [ + "迭代", + "器", + "压缩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1412", + "seg": [ + [ + [ + "迭代" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器数据类型": { + "children": [ + { + "集合": { + "data": { + "uuid": "python-5-1368", + "seg": [ + [ + [ + "集合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名元组": { + "data": { + "uuid": "python-5-1369", + "seg": [ + [ + [ + "命名", + "元组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "有序字典": { + "data": { + "uuid": "python-5-1370", + "seg": [ + [ + [ + "有序", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "带有默认值的字典": { + "data": { + "uuid": "python-5-1371", + "seg": [ + [ + [ + "带有", + "默认值", + "字典" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7453924_53436598" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1413", + "seg": [ + [ + [ + "容器", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入代码": { + "children": [ + { + "回退(备用)导入": { + "data": { + "uuid": "python-5-1372", + "seg": [ + [ + [ + "回退", + "备用", + "导入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_760899_818200" + ] + } + } + } + } + }, + { + "从即将发布的版本中导入": { + "data": { + "uuid": "python-5-1373", + "seg": [ + [ + [ + "发布", + "版本", + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用__all__进行自定义导入": { + "data": { + "uuid": "python-5-1374", + "seg": [ + [ + [ + "all", + "自定义", + "导入" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_4644978_29327026" + ] + } + } + } + } + }, + { + "相对导入": { + "data": { + "uuid": "python-5-1375", + "seg": [ + [ + [ + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "__import__函数": { + "data": { + "uuid": "python-5-1376", + "seg": [ + [ + [ + "import", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "importlib模块": { + "data": { + "uuid": "python-5-1377", + "seg": [ + [ + [ + "importlib", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1414", + "seg": [ + [ + [ + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "令人兴奋的Python扩展:NIST的随机数信标": { + "children": [ + { + "如何安装NIST信标库": { + "data": { + "uuid": "python-5-1378", + "seg": [ + [ + [ + "安装", + "nist", + "信标", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "示例:获取值": { + "data": { + "uuid": "python-5-1379", + "seg": [ + [ + [ + "示例" + ] + ], + [ + [ + "获取", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "示例:模拟抛硬币并记录每次正反面的结果": { + "data": { + "uuid": "python-5-1380", + "seg": [ + [ + [ + "示例" + ] + ], + [ + [ + "模拟", + "硬币", + "记录", + "正反面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Pandas和matplotlib": { + "data": { + "uuid": "python-5-1381", + "seg": [ + [ + [ + "安装", + "pandas" + ], + [ + "matplotlib" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建文本文件": { + "data": { + "uuid": "python-5-1382", + "seg": [ + [ + [ + "创建", + "文本文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Pandas显示数据": { + "data": { + "uuid": "python-5-1383", + "seg": [ + [ + [ + "pandas", + "显示", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "进行一些数据分析": { + "data": { + "uuid": "python-5-1384", + "seg": [ + [ + [ + "数据分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用matplotlib进行绘图": { + "data": { + "uuid": "python-5-1385", + "seg": [ + [ + [ + "matplotlib", + "绘图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图表的类型": { + "data": { + "uuid": "python-5-1386", + "seg": [ + [ + [ + "图表", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Scrapy": { + "data": { + "uuid": "python-5-1387", + "seg": [ + [ + [ + "安装", + "scrapy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行Scrapy": { + "data": { + "uuid": "python-5-1388", + "seg": [ + [ + [ + "运行", + "scrapy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Scrapy获取Web数据": { + "data": { + "uuid": "python-5-1389", + "seg": [ + [ + [ + "scrapy", + "获取", + "web", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过Scrapy浏览网页": { + "data": { + "uuid": "python-5-1390", + "seg": [ + [ + [ + "scrapy", + "浏览", + "网页" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "shell选项": { + "data": { + "uuid": "python-5-1391", + "seg": [ + [ + [ + "shell", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Beautiful Soup": { + "data": { + "uuid": "python-5-1392", + "seg": [ + [ + [ + "安装", + "beaut", + "if", + "ul", + "soup" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Beautiful Soup": { + "data": { + "uuid": "python-5-1393", + "seg": [ + [ + [ + "beaut", + "if", + "ul", + "soup" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何安装feedparser库": { + "data": { + "uuid": "python-5-1394", + "seg": [ + [ + [ + "安装", + "feedparser", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何使用feedparser库": { + "data": { + "uuid": "python-5-1395", + "seg": [ + [ + [ + "feedparser", + "库" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7422933_53382743" + ] + } + } + } + } + }, + { + "安装NumPy": { + "data": { + "uuid": "python-5-1396", + "seg": [ + [ + [ + "安装", + "numpy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用NumPy": { + "data": { + "uuid": "python-5-1397", + "seg": [ + [ + [ + "numpy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用NumPy数组": { + "data": { + "uuid": "python-5-1398", + "seg": [ + [ + [ + "numpy", + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "统计度量": { + "data": { + "uuid": "python-5-1399", + "seg": [ + [ + [ + "统计", + "度量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何安装Pillow库": { + "data": { + "uuid": "python-5-1400", + "seg": [ + [ + [ + "安装", + "pillow", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像显示:确定文件的大小和类型并显示": { + "data": { + "uuid": "python-5-1401", + "seg": [ + [ + [ + "图像", + "显示" + ] + ], + [ + [ + "文件", + "大小" + ], + [ + "类型", + "显示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "图像处理:裁剪图像的一部分": { + "data": { + "uuid": "python-5-1402", + "seg": [ + [ + [ + "图像处理" + ] + ], + [ + [ + "裁剪", + "图像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "随机数": { + "data": { + "uuid": "python-5-1403", + "seg": [ + [ + [ + "随机数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7436311_53407961", + "8_757801_813436" + ] + } + } + } + } + }, + { + "密码生成器": { + "data": { + "uuid": "python-5-1404", + "seg": [ + [ + [ + "密码", + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1415", + "seg": [ + [ + [ + "令人兴奋", + "python", + "扩展" + ] + ], + [ + [ + "nist", + "随机数", + "信标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-255", + "seg": [ + [ + [ + "基础知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数": { + "children": [ + { + "参数": { + "children": [ + { + "规划时的灵活性": { + "data": { + "uuid": "python-5-1405", + "seg": [ + [ + [ + "规划", + "灵活性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可变位置参数": { + "data": { + "uuid": "python-5-1406", + "seg": [ + [ + [ + "可变", + "位置", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7425110_53386302", + "8_7456545_53440359", + "8_7399447_53346657" + ] + } + } + } + } + }, + { + "可变关键字参数": { + "data": { + "uuid": "python-5-1407", + "seg": [ + [ + [ + "可变", + "关键字", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组合不同类型的参数": { + "data": { + "uuid": "python-5-1408", + "seg": [ + [ + [ + "组合", + "类型", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7414950_53368159" + ] + } + } + } + } + }, + { + "调用具有可变参数的函数": { + "data": { + "uuid": "python-5-1409", + "seg": [ + [ + [ + "调用", + "可变", + "参数", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_697921_584217", + "8_7400569_53348550" + ] + } + } + } + } + }, + { + "传递参数": { + "data": { + "uuid": "python-5-1410", + "seg": [ + [ + [ + "传递", + "参数" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_661908_477269", + "8_683841_540603", + "8_7426094_53388825", + "8_7408842_53359041", + "8_7462931_53448753", + "8_7436298_53407886", + "8_1102041_1316448", + "8_665808_483661", + "8_1101907_1316391", + "8_691682_564613" + ] + } + } + } + } + }, + { + "自省": { + "data": { + "uuid": "python-5-1411", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1416", + "seg": [ + [ + [ + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "装饰器": { + "children": [ + { + "闭包": { + "data": { + "uuid": "python-5-1412", + "seg": [ + [ + [ + "闭", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包装器": { + "data": { + "uuid": "python-5-1413", + "seg": [ + [ + [ + "包装", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7456975_53441583" + ] + } + } + } + } + }, + { + "带参数的装饰器": { + "data": { + "uuid": "python-5-1414", + "seg": [ + [ + [ + "带", + "参数", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7439759_53414855" + ] + } + } + } + } + }, + { + "带参数或不带参数的装饰器": { + "data": { + "uuid": "python-5-1415", + "seg": [ + [ + [ + "带", + "参数", + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1417", + "seg": [ + [ + [ + "装饰", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数注解": { + "children": [ + { + "提取样板": { + "data": { + "uuid": "python-5-1416", + "seg": [ + [ + [ + "提取", + "样板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用装饰器进行注解": { + "data": { + "uuid": "python-5-1417", + "seg": [ + [ + [ + "装饰", + "器", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1418", + "seg": [ + [ + [ + "函数", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成器": { + "data": { + "uuid": "python-4-1419", + "seg": [ + [ + [ + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "lambda": { + "data": { + "uuid": "python-4-1420", + "seg": [ + [ + [ + "lambda" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7395146_53337257", + "8_1063329_1261255", + "8_1071676_1273970", + "8_7396015_53339152", + "8_695393_577863" + ] + } + } + } + } + }, + { + "自省": { + "children": [ + { + "标识对象类型": { + "data": { + "uuid": "python-5-1418", + "seg": [ + [ + [ + "标识", + "对象", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模块和软件包": { + "data": { + "uuid": "python-5-1419", + "seg": [ + [ + [ + "模块" + ], + [ + "软件包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文档字符串": { + "children": [ + { + "描述函数的作用": { + "data": { + "uuid": "python-6-223", + "seg": [ + [ + [ + "描述", + "函数", + "作用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "返回值": { + "data": { + "uuid": "python-6-224", + "seg": [ + [ + [ + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包含预期的异常": { + "data": { + "uuid": "python-6-225", + "seg": [ + [ + [ + "包含", + "预期", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7443370_53420823" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-5-1420", + "seg": [ + [ + [ + "文档", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1421", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-256", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类": { + "children": [ + { + "继承": { + "children": [ + { + "多重继承": { + "data": { + "uuid": "python-5-1421", + "seg": [ + [ + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7426882_53390933", + "8_7399787_53347321", + "8_7419306_53376360" + ] + } + } + } + } + }, + { + "方法解析顺序": { + "data": { + "uuid": "python-5-1422", + "seg": [ + [ + [ + "方法", + "解析", + "顺序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用super函数将控制权传递给其他类": { + "data": { + "uuid": "python-5-1423", + "seg": [ + [ + [ + "super", + "函数", + "控制权", + "传递", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1091303_1298651" + ] + } + } + } + } + }, + { + "自省": { + "data": { + "uuid": "python-5-1424", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1422", + "seg": [ + [ + [ + "继承" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何创建类": { + "children": [ + { + "在运行时创建类": { + "data": { + "uuid": "python-5-1425", + "seg": [ + [ + [ + "运行", + "创建", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7396298_53339736", + "8_7425487_53386943", + "8_7431278_53399484", + "8_7421178_53379518", + "8_695356_577765", + "8_7448147_53428159", + "8_1056927_1254094" + ] + } + } + } + } + }, + { + "元类": { + "data": { + "uuid": "python-5-1426", + "seg": [ + [ + [ + "类" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_697693_583641", + "8_7426705_53390621", + "8_7452227_53434357", + "8_733469_800699", + "8_7455352_53438211", + "8_1080794_1286361", + "8_730467_745426", + "8_7443007_53420032", + "8_178099_61937", + "8_7426568_53390093" + ] + } + } + } + } + }, + { + "控制命名空间": { + "data": { + "uuid": "python-5-1427", + "seg": [ + [ + [ + "控制", + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1423", + "seg": [ + [ + [ + "创建", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "成员变量": { + "children": [ + { + "属性": { + "data": { + "uuid": "python-5-1428", + "seg": [ + [ + [ + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "描述器": { + "data": { + "uuid": "python-5-1429", + "seg": [ + [ + [ + "描述", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7436146_53407436" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1424", + "seg": [ + [ + [ + "成员", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法": { + "children": [ + { + "非绑定方法": { + "data": { + "uuid": "python-5-1430", + "seg": [ + [ + [ + "绑定", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "绑定方法": { + "data": { + "uuid": "python-5-1431", + "seg": [ + [ + [ + "绑定", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7424567_53385666", + "8_7427174_53391248", + "8_7433452_53403694", + "8_7396716_53340826", + "8_830555_929770", + "8_7453021_53435572", + "8_7460684_53445858", + "8_7463001_53448767", + "8_7413490_53365497", + "8_752458_806553" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1425", + "seg": [ + [ + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "魔术方法": { + "children": [ + { + "处理成员变量": { + "data": { + "uuid": "python-5-1432", + "seg": [ + [ + [ + "成员", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串表示": { + "children": [ + { + "字节字符串": { + "children": [ + { + "借助chr和ord进行简单的转换": { + "data": { + "uuid": "python-7-34", + "seg": [ + [ + [ + "借助", + "chr" + ], + [ + "ord", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "借助struct模块进行复杂的转换": { + "data": { + "uuid": "python-7-35", + "seg": [ + [ + [ + "借助", + "struct", + "模块", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-6-226", + "seg": [ + [ + [ + "字节", + "字符串" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_856351_981509" + ] + } + } + } + } + }, + { + "文本": { + "children": [ + { + "Unicode": { + "data": { + "uuid": "python-7-36", + "seg": [ + [ + [ + "unicode" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_200319_120483", + "8_7431338_53399569", + "8_717036_710275", + "8_7414933_53368053" + ] + } + } + } + } + }, + { + "编码": { + "data": { + "uuid": "python-7-37", + "seg": [ + [ + [ + "编码" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7450298_53430844" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-6-227", + "seg": [ + [ + [ + "文本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单的替换": { + "data": { + "uuid": "python-6-228", + "seg": [ + [ + [ + "替换" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_2165_5043", + "8_1084382_1290976", + "8_7460867_53445985" + ] + } + } + } + } + }, + { + "格式化": { + "children": [ + { + "在对象中查找值": { + "data": { + "uuid": "python-7-38", + "seg": [ + [ + [ + "对象", + "查找", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "区分字符串类型": { + "data": { + "uuid": "python-7-39", + "seg": [ + [ + [ + "区分", + "字符串", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准格式规范": { + "data": { + "uuid": "python-7-40", + "seg": [ + [ + [ + "标准", + "格式", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为文本文档制作目录": { + "data": { + "uuid": "python-7-41", + "seg": [ + [ + [ + "文本文档", + "制作", + "目录" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451087_53432172", + "8_760554_817954" + ] + } + } + } + } + }, + { + "自定义格式规范": { + "data": { + "uuid": "python-7-42", + "seg": [ + [ + [ + "自定义", + "格式", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-6-229", + "seg": [ + [ + [ + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-5-1433", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1426", + "seg": [ + [ + [ + "魔术", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7416213_53370263" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-3-257", + "seg": [ + [ + [ + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通用协议": { + "children": [ + { + "基本运算": { + "children": [ + { + "数学运算": { + "data": { + "uuid": "python-5-1434", + "seg": [ + [ + [ + "数学", + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "按位运算": { + "data": { + "uuid": "python-5-1435", + "seg": [ + [ + [ + "位", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7440608_53416042", + "8_7449500_53429646", + "8_7430509_53397609", + "8_7449351_53429676" + ] + } + } + } + } + }, + { + "运算符的变体": { + "data": { + "uuid": "python-5-1436", + "seg": [ + [ + [ + "运算符", + "变体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1427", + "seg": [ + [ + [ + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数字": { + "children": [ + { + "符号运算": { + "data": { + "uuid": "python-5-1437", + "seg": [ + [ + [ + "符号", + "运算" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7425125_53386330", + "8_7442730_53419672" + ] + } + } + } + } + }, + { + "比较运算": { + "data": { + "uuid": "python-5-1438", + "seg": [ + [ + [ + "运算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1428", + "seg": [ + [ + [ + "数字" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可迭代对象": { + "data": { + "uuid": "python-4-1429", + "seg": [ + [ + [ + "迭代", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列": { + "data": { + "uuid": "python-4-1430", + "seg": [ + [ + [ + "序列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射": { + "data": { + "uuid": "python-4-1431", + "seg": [ + [ + [ + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "_call_方法": { + "data": { + "uuid": "python-4-1432", + "seg": [ + [ + [ + "call", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上下文管理器": { + "data": { + "uuid": "python-4-1433", + "seg": [ + [ + [ + "上下文", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-258", + "seg": [ + [ + [ + "通用", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象管理": { + "children": [ + { + "命名空间字典": { + "data": { + "uuid": "python-4-1434", + "seg": [ + [ + [ + "命名", + "空间", + "字典" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "垃圾回收": { + "children": [ + { + "引用计数": { + "data": { + "uuid": "python-5-1439", + "seg": [ + [ + [ + "引用", + "计数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "循环引用": { + "data": { + "uuid": "python-5-1440", + "seg": [ + [ + [ + "循环", + "引用" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_728538_740043" + ] + } + } + } + } + }, + { + "弱引用": { + "data": { + "uuid": "python-5-1441", + "seg": [ + [ + [ + "弱", + "引用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1435", + "seg": [ + [ + [ + "垃圾", + "回收" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python对象的序列化": { + "data": { + "uuid": "python-4-1436", + "seg": [ + [ + [ + "python", + "对象", + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "复制": { + "children": [ + { + "浅层复制": { + "data": { + "uuid": "python-5-1442", + "seg": [ + [ + [ + "浅层", + "复制" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7435153_53405695" + ] + } + } + } + } + }, + { + "深层复制": { + "data": { + "uuid": "python-5-1443", + "seg": [ + [ + [ + "深层", + "复制" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_168687_44115" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1437", + "seg": [ + [ + [ + "复制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-259", + "seg": [ + [ + [ + "对象", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文档的编写": { + "children": [ + { + "恰当地命名": { + "data": { + "uuid": "python-4-1438", + "seg": [ + [ + [ + "恰当", + "命名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注释": { + "data": { + "uuid": "python-4-1439", + "seg": [ + [ + [ + "注释" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码之外的文档": { + "children": [ + { + "安装与配置": { + "data": { + "uuid": "python-5-1444", + "seg": [ + [ + [ + "安装" + ], + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "教程": { + "data": { + "uuid": "python-5-1445", + "seg": [ + [ + [ + "教程" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1095911_1308616", + "8_7441964_53418595" + ] + } + } + } + } + }, + { + "参考文档": { + "data": { + "uuid": "python-5-1446", + "seg": [ + [ + [ + "参考", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_1078235_1282634", + "8_750535_803650", + "8_7444935_53423492", + "8_1078229_1282604" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1440", + "seg": [ + [ + [ + "之外", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用于编写文档的实用工具": { + "children": [ + { + "链接": { + "data": { + "uuid": "python-5-1447", + "seg": [ + [ + [ + "链接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sphinx": { + "data": { + "uuid": "python-5-1448", + "seg": [ + [ + [ + "sphinx" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1441", + "seg": [ + [ + [ + "用于", + "编写", + "文档", + "实用工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-260", + "seg": [ + [ + [ + "文档", + "编写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试": { + "children": [ + { + "测试驱动开发": { + "data": { + "uuid": "python-4-1442", + "seg": [ + [ + [ + "驱动", + "开发" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7451499_53432790" + ] + } + } + } + } + }, + { + "doctest": { + "children": [ + { + "呈现输出": { + "data": { + "uuid": "python-5-1449", + "seg": [ + [ + [ + "呈现", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与文档集成": { + "data": { + "uuid": "python-5-1450", + "seg": [ + [ + [], + [ + "文档", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行测试": { + "data": { + "uuid": "python-5-1451", + "seg": [ + [ + [ + "运行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1443", + "seg": [ + [ + [ + "doctest" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unittest模块": { + "children": [ + { + "初始化配置": { + "data": { + "uuid": "python-5-1452", + "seg": [ + [ + [ + "初始化", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写测试": { + "data": { + "uuid": "python-5-1453", + "seg": [ + [ + [ + "编写" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_990484_1157810", + "8_7440561_53415905", + "8_7454419_53437139", + "8_7446343_53425495", + "8_7447759_53427705", + "8_7452866_53435291", + "8_7438286_53411981", + "8_7443024_53420059", + "8_7450559_53431245", + "8_7443021_53420061" + ] + } + } + } + } + }, + { + "其他比较": { + "data": { + "uuid": "python-5-1454", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试异常": { + "data": { + "uuid": "python-5-1455", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试对象标识": { + "data": { + "uuid": "python-5-1456", + "seg": [ + [ + [ + "对象", + "标识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "释放资源": { + "data": { + "uuid": "python-5-1457", + "seg": [ + [ + [ + "释放", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1444", + "seg": [ + [ + [ + "unittest", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提供自定义的测试类": { + "data": { + "uuid": "python-4-1445", + "seg": [ + [ + [ + "提供", + "自定义", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-261", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布": { + "children": [ + { + "许可证": { + "children": [ + { + "GNU通用公共许可证": { + "data": { + "uuid": "python-5-1458", + "seg": [ + [ + [ + "gnu", + "通用", + "公共", + "许可证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Affero通用公共许可证": { + "data": { + "uuid": "python-5-1459", + "seg": [ + [ + [ + "affero", + "通用", + "公共", + "许可证" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_717031_835269" + ] + } + } + } + } + }, + { + "GNU宽通用公共许可证": { + "data": { + "uuid": "python-5-1460", + "seg": [ + [ + [ + "gnu", + "宽", + "通用", + "公共", + "许可证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "伯克利软件发行许可证": { + "data": { + "uuid": "python-5-1461", + "seg": [ + [ + [ + "伯克利", + "软件", + "发行", + "许可证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他许可证": { + "data": { + "uuid": "python-5-1462", + "seg": [ + [ + [ + "许可证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1446", + "seg": [ + [ + [ + "许可证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打包": { + "children": [ + { + "setup.py": { + "data": { + "uuid": "python-5-1463", + "seg": [ + [ + [ + "setup", + "py" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7398362_53344427", + "8_7460526_53445603", + "8_662603_478562", + "8_7398986_53345718", + "8_7456539_53440726", + "8_72609_36651", + "8_7406993_53356714", + "8_699289_587335", + "8_1060961_1258745", + "8_648615_453820" + ] + } + } + } + } + }, + { + "MANIFEST.in": { + "data": { + "uuid": "python-5-1464", + "seg": [ + [ + [ + "manifest", + "in" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7408921_53359142" + ] + } + } + } + } + }, + { + "sdist命令": { + "data": { + "uuid": "python-5-1465", + "seg": [ + [ + [ + "sdist", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1447", + "seg": [ + [ + [ + "打包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布": { + "data": { + "uuid": "python-4-1448", + "seg": [ + [ + [ + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-262", + "seg": [ + [ + [ + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建CSV框架sheets": { + "children": [ + { + "构建声明性框架": { + "children": [ + { + "声明性编程简介": { + "data": { + "uuid": "python-5-1466", + "seg": [ + [ + [ + "声明", + "性", + "编程", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "是否构建声明性框架": { + "data": { + "uuid": "python-5-1467", + "seg": [ + [ + [ + "构建", + "声明", + "性", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1449", + "seg": [ + [ + [ + "构建", + "声明", + "性", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建框架": { + "children": [ + { + "管理选项": { + "data": { + "uuid": "python-5-1468", + "seg": [ + [ + [ + "管理", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义字段": { + "data": { + "uuid": "python-5-1469", + "seg": [ + [ + [ + "定义", + "字", + "段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将字段附加到类": { + "data": { + "uuid": "python-5-1470", + "seg": [ + [ + [ + "将字段", + "附加", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加元类": { + "data": { + "uuid": "python-5-1471", + "seg": [ + [ + [ + "添加", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "整合": { + "data": { + "uuid": "python-5-1472", + "seg": [ + [ + [ + "整合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1450", + "seg": [ + [ + [ + "构建", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字段排序": { + "children": [ + { + "DeclarativeMeta.__prepare__": { + "data": { + "uuid": "python-5-1473", + "seg": [ + [ + [ + "declarativemeta", + "prepare" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Column.__init__": { + "data": { + "uuid": "python-5-1474", + "seg": [ + [ + [ + "column", + "init" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_159666_29307", + "8_7447913_53427859", + "8_680514_530615" + ] + } + } + } + } + }, + { + "Column.__new__": { + "data": { + "uuid": "python-5-1475", + "seg": [ + [ + [ + "column", + "new" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CounterMeta.__call__": { + "data": { + "uuid": "python-5-1476", + "seg": [ + [ + [ + "countermeta", + "call" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "挑选选项": { + "data": { + "uuid": "python-5-1477", + "seg": [ + [ + [ + "挑选", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1451", + "seg": [ + [ + [ + "字", + "段", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_770447_832258", + "8_7462309_53448015", + "8_7414144_53366632" + ] + } + } + } + } + }, + { + "构建字段库": { + "children": [ + { + "StringField(字符串字段)": { + "data": { + "uuid": "python-5-1478", + "seg": [ + [ + [ + "stringfield", + "字符串", + "字", + "段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IntegerColumn(整数列)": { + "data": { + "uuid": "python-5-1479", + "seg": [ + [ + [ + "integercolumn", + "整数", + "列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FloatColumn(浮点数列)": { + "data": { + "uuid": "python-5-1480", + "seg": [ + [ + [ + "floatcolumn", + "浮点数", + "列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DecimalColumn(小数列)": { + "data": { + "uuid": "python-5-1481", + "seg": [ + [ + [ + "decimalcolumn" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DateColumn(日期列)": { + "data": { + "uuid": "python-5-1482", + "seg": [ + [ + [ + "datecolumn", + "日期", + "列" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1452", + "seg": [ + [ + [ + "构建", + "字段", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回到CSV": { + "children": [ + { + "检查参数": { + "data": { + "uuid": "python-5-1483", + "seg": [ + [ + [ + "检查", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "填充值": { + "data": { + "uuid": "python-5-1484", + "seg": [ + [ + [ + "填充", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "读取器": { + "data": { + "uuid": "python-5-1485", + "seg": [ + [ + [ + "读取器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "写入器": { + "data": { + "uuid": "python-5-1486", + "seg": [ + [ + [ + "写入", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1453", + "seg": [ + [ + [ + "回到", + "csv" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-263", + "seg": [ + [ + [ + "构建", + "csv", + "框架", + "sheets" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-2-16", + "seg": [ + [ + [ + "高级", + "教程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "GUI界面编程": { + "children": [ + { + "初识GUI": { + "children": [ + { + "什么是GUI": { + "data": { + "uuid": "python-5-1487", + "seg": [ + [ + [ + "gui" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7434802_53405206", + "8_7451673_53433125", + "8_7418406_53374329", + "8_7439039_53416120", + "8_668350_488565", + "8_713129_704299", + "8_718217_711805", + "8_1100557_1315375" + ] + } + } + } + } + }, + { + "常用的GUI框架": { + "data": { + "uuid": "python-5-1488", + "seg": [ + [ + [ + "gui", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装wxPython": { + "data": { + "uuid": "python-5-1489", + "seg": [ + [ + [ + "安装", + "wxpython" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1454", + "seg": [ + [ + [ + "初识", + "gui" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建应用程序": { + "children": [ + { + "创建一个wx.App的子类": { + "data": { + "uuid": "python-5-1490", + "seg": [ + [ + [ + "创建", + "wx", + "app", + "子类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "直接使用wx.App": { + "data": { + "uuid": "python-5-1491", + "seg": [ + [ + [ + "wx", + "app" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用wx.Frame框架": { + "data": { + "uuid": "python-5-1492", + "seg": [ + [ + [ + "wx", + "frame", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1455", + "seg": [ + [ + [ + "创建", + "应用程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "常用控件": { + "children": [ + { + "StaticText文本类": { + "data": { + "uuid": "python-5-1493", + "seg": [ + [ + [ + "statictext", + "文本", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TextCtrl输入文本类": { + "data": { + "uuid": "python-5-1494", + "seg": [ + [ + [ + "textctrl", + "输入", + "文本", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Button按钮类": { + "data": { + "uuid": "python-5-1495", + "seg": [ + [ + [ + "button", + "按钮", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1456", + "seg": [ + [ + [ + "控件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_736669_765029" + ] + } + } + } + } + }, + { + "BoxSizer布局": { + "children": [ + { + "什么是BoxSizer": { + "data": { + "uuid": "python-5-1496", + "seg": [ + [ + [ + "boxsizer" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用BoxSizer布局": { + "data": { + "uuid": "python-5-1497", + "seg": [ + [ + [ + "boxsizer", + "布局" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1078148_1282521" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1457", + "seg": [ + [ + [ + "boxsizer", + "布局" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "事件处理": { + "children": [ + { + "什么是事件": { + "data": { + "uuid": "python-5-1498", + "seg": [ + [ + [ + "事件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绑定事件": { + "data": { + "uuid": "python-5-1499", + "seg": [ + [ + [ + "绑定", + "事件" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7432708_53402390" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1458", + "seg": [ + [ + [ + "事件处理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-264", + "seg": [ + [ + [ + "gui", + "界面", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Pygame游戏编程": { + "children": [ + { + "初识Pygame": { + "children": [ + { + "安装Pygame": { + "data": { + "uuid": "python-5-1500", + "seg": [ + [ + [ + "安装", + "pygame" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pygame常用模块": { + "data": { + "uuid": "python-5-1501", + "seg": [ + [ + [ + "pygame", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1459", + "seg": [ + [ + [ + "初识", + "pygame" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pygame基本使用": { + "data": { + "uuid": "python-4-1460", + "seg": [ + [ + [ + "pygame" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发Flappy Bird游戏": { + "children": [ + { + "游戏简介": { + "data": { + "uuid": "python-5-1502", + "seg": [ + [ + [ + "游戏", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "游戏分析": { + "data": { + "uuid": "python-5-1503", + "seg": [ + [ + [ + "游戏", + "分析" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_769876_831094", + "8_354570_367108", + "8_1048722_1246232", + "8_1069179_1270459", + "8_7459761_53444790", + "8_931363_1066446" + ] + } + } + } + } + }, + { + "搭建主框架": { + "data": { + "uuid": "python-5-1504", + "seg": [ + [ + [ + "搭建", + "主", + "框架" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_361578_379570" + ] + } + } + } + } + }, + { + "创建小鸟类": { + "data": { + "uuid": "python-5-1505", + "seg": [ + [ + [ + "创建", + "鸟类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建管道类": { + "data": { + "uuid": "python-5-1506", + "seg": [ + [ + [ + "创建", + "管道", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "计算得分": { + "data": { + "uuid": "python-5-1507", + "seg": [ + [ + [ + "计算", + "得分" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7454572_53437253" + ] + } + } + } + } + }, + { + "碰撞检测": { + "data": { + "uuid": "python-5-1508", + "seg": [ + [ + [ + "碰撞检测" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1461", + "seg": [ + [ + [ + "开发", + "flappy", + "bird", + "游戏" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-265", + "seg": [ + [ + [ + "pygame", + "游戏", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络爬虫开发": { + "children": [ + { + "初识网络爬虫": { + "children": [ + { + "网络爬虫概述": { + "data": { + "uuid": "python-5-1509", + "seg": [ + [ + [ + "网络", + "爬虫", + "概述" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_716511_709361", + "8_955242_1099793", + "8_1079567_1284316" + ] + } + } + } + } + }, + { + "网络爬虫的分类": { + "data": { + "uuid": "python-5-1510", + "seg": [ + [ + [ + "网络", + "爬虫", + "分类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络爬虫的基本原理": { + "data": { + "uuid": "python-5-1511", + "seg": [ + [ + [ + "网络", + "爬虫", + "基本原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1462", + "seg": [ + [ + [ + "初识", + "网络", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络爬虫的常用技术": { + "children": [ + { + "Python的网络请求": { + "data": { + "uuid": "python-5-1512", + "seg": [ + [ + [ + "python", + "网络" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_687492_805179", + "8_7413367_53365304", + "8_179454_64784", + "8_1101412_1315915" + ] + } + } + } + } + }, + { + "请求headers处理": { + "data": { + "uuid": "python-5-1513", + "seg": [ + [ + [ + "headers" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7407825_53357988" + ] + } + } + } + } + }, + { + "网络超时": { + "data": { + "uuid": "python-5-1514", + "seg": [ + [ + [ + "网络", + "超时" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7412356_53363856" + ] + } + } + } + } + }, + { + "代理服务": { + "data": { + "uuid": "python-5-1515", + "seg": [ + [ + [ + "代理服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTML解析之BeautifulSoup": { + "data": { + "uuid": "python-5-1516", + "seg": [ + [ + [ + "html", + "解析", + "beaut", + "if", + "ulsoup" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1050574_1247876", + "8_1056290_1253439" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1463", + "seg": [ + [ + [ + "网络", + "爬虫", + "技术" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7438596_53412262" + ] + } + } + } + } + }, + { + "网络爬虫开发常用框架": { + "children": [ + { + "Scrapy爬虫框架": { + "data": { + "uuid": "python-5-1517", + "seg": [ + [ + [ + "scrapy", + "爬虫", + "框架" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1090245_1296983" + ] + } + } + } + } + }, + { + "Crawley爬虫框架": { + "data": { + "uuid": "python-5-1518", + "seg": [ + [ + [ + "crawley", + "爬虫", + "框架" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_4645514_29328195" + ] + } + } + } + } + }, + { + "PySpider爬虫框架": { + "data": { + "uuid": "python-5-1519", + "seg": [ + [ + [ + "pyspider", + "爬虫", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1464", + "seg": [ + [ + [ + "网络", + "爬虫", + "开发", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-266", + "seg": [ + [ + [ + "网络", + "爬虫", + "开发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用进程和线程": { + "children": [ + { + "什么是进程": { + "data": { + "uuid": "python-4-1465", + "seg": [ + [ + [ + "进程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建进程的常用方式": { + "children": [ + { + "使用multiprocessing模块创建进程": { + "data": { + "uuid": "python-5-1520", + "seg": [ + [ + [ + "multiprocessing", + "模块", + "创建", + "进程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_1070935_1272556" + ] + } + } + } + } + }, + { + "使用Process子类创建进程": { + "data": { + "uuid": "python-5-1521", + "seg": [ + [ + [ + "process", + "子类", + "创建", + "进程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7395380_53338562" + ] + } + } + } + } + }, + { + "使用进程池Pool创建进程": { + "data": { + "uuid": "python-5-1522", + "seg": [ + [ + [ + "进程", + "池", + "pool", + "创建" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_715115_707357", + "8_7441008_53416756" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1466", + "seg": [ + [ + [ + "创建", + "进程", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "进程间通信": { + "children": [ + { + "队列简介": { + "data": { + "uuid": "python-5-1523", + "seg": [ + [ + [ + "队列", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "多进程队列的使用": { + "data": { + "uuid": "python-5-1524", + "seg": [ + [ + [ + "进程", + "队列" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_677429_519257", + "8_1008246_1191962", + "8_7415431_53368956", + "8_3669054_24091150", + "8_7429887_53396833" + ] + } + } + } + } + }, + { + "使用队列在进程间通信": { + "data": { + "uuid": "python-5-1525", + "seg": [ + [ + [ + "队列", + "进程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1467", + "seg": [ + [ + [ + "进程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "什么是线程": { + "data": { + "uuid": "python-4-1468", + "seg": [ + [ + [ + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建线程": { + "children": [ + { + "使用threading模块创建线程": { + "data": { + "uuid": "python-5-1526", + "seg": [ + [ + [ + "threading", + "模块", + "创建", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用Thread子类创建线程": { + "data": { + "uuid": "python-5-1527", + "seg": [ + [ + [ + "thread", + "子类", + "创建", + "线程" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7417012_53371621" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-4-1469", + "seg": [ + [ + [ + "创建", + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "线程间通信": { + "children": [ + { + "什么是互斥锁": { + "data": { + "uuid": "python-5-1528", + "seg": [ + [ + [ + "互斥", + "锁" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_783342_855029" + ] + } + } + } + } + }, + { + "使用互斥锁": { + "data": { + "uuid": "python-5-1529", + "seg": [ + [ + [ + "互斥", + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用队列在线程间通信": { + "data": { + "uuid": "python-5-1530", + "seg": [ + [ + [ + "队列", + "程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1470", + "seg": [ + [ + [ + "线程", + "间通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-267", + "seg": [ + [ + [ + "进程" + ], + [ + "线程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络编程": { + "children": [ + { + "网络基础": { + "children": [ + { + "TCP/IP简介": { + "data": { + "uuid": "python-5-1531", + "seg": [ + [ + [ + "tcp", + "ip", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_676347_515186", + "8_5718088_37910519", + "8_338334_336135", + "8_680488_530507", + "8_338259_335932", + "8_7423350_53383664", + "8_1070868_1272507", + "8_932639_1072137" + ] + } + } + } + } + }, + { + "UDP简介": { + "data": { + "uuid": "python-5-1532", + "seg": [ + [ + [ + "udp", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Socket简介": { + "data": { + "uuid": "python-5-1533", + "seg": [ + [ + [ + "socket", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1471", + "seg": [ + [ + [ + "网络", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "TCP编程": { + "children": [ + { + "创建TCP服务器": { + "data": { + "uuid": "python-5-1534", + "seg": [ + [ + [ + "创建", + "tcp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建TCP客户端": { + "data": { + "uuid": "python-5-1535", + "seg": [ + [ + [ + "创建", + "tcp", + "客户端" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_157702_20946" + ] + } + } + } + } + }, + { + "执行TCP服务器和客户端": { + "data": { + "uuid": "python-5-1536", + "seg": [ + [ + [ + "执行", + "tcp", + "服务器" + ], + [ + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1472", + "seg": [ + [ + [ + "tcp", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "UDP编程": { + "children": [ + { + "创建UDP服务器": { + "data": { + "uuid": "python-5-1537", + "seg": [ + [ + [ + "创建", + "udp", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建UDP客户端": { + "data": { + "uuid": "python-5-1538", + "seg": [ + [ + [ + "创建", + "udp", + "客户端" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_338042_335582", + "8_338236_336117", + "8_338203_335798" + ] + } + } + } + } + }, + { + "执行UDP服务器和客户端": { + "data": { + "uuid": "python-5-1539", + "seg": [ + [ + [ + "执行", + "udp", + "服务器" + ], + [ + "客户端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1473", + "seg": [ + [ + [ + "udp", + "编程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-268", + "seg": [ + [ + [ + "网络", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web编程": { + "children": [ + { + "Web基础": { + "children": [ + { + "HTTP协议": { + "data": { + "uuid": "python-5-1540", + "seg": [ + [ + [ + "http", + "协议" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web服务器": { + "data": { + "uuid": "python-5-1541", + "seg": [ + [ + [ + "web", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "前端基础": { + "data": { + "uuid": "python-5-1542", + "seg": [ + [ + [ + "前端", + "基础" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7462783_53448445", + "8_1086913_1293689", + "8_7419234_53376254", + "8_7432239_53401270", + "8_3115086_19903244", + "8_7396843_53341099", + "8_7429035_53395492", + "8_7457696_53442118", + "8_7413309_53365200", + "8_645972_448043" + ] + } + } + } + } + }, + { + "静态服务器": { + "data": { + "uuid": "python-5-1543", + "seg": [ + [ + [ + "静态", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1474", + "seg": [ + [ + [ + "web", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "WSGI接口": { + "children": [ + { + "CGI简介": { + "data": { + "uuid": "python-5-1544", + "seg": [ + [ + [ + "cgi", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "WSGI简介": { + "data": { + "uuid": "python-5-1545", + "seg": [ + [ + [ + "wsgi", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义WSGI接口": { + "data": { + "uuid": "python-5-1546", + "seg": [ + [ + [ + "定义", + "wsgi", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7419076_53376267", + "8_1080533_1311692", + "8_773322_836985" + ] + } + } + } + } + }, + { + "运行WSGI服务": { + "data": { + "uuid": "python-5-1547", + "seg": [ + [ + [ + "运行", + "wsgi", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1475", + "seg": [ + [ + [ + "wsgi", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web框架": { + "children": [ + { + "什么是Web框架": { + "data": { + "uuid": "python-5-1548", + "seg": [ + [ + [ + "web", + "框架" + ] + ] + ], + "level": "1", + "related_data": { + "qa": { + "data_id": [ + "8_7463420_53449301", + "8_746367_795737", + "8_1064165_1262345" + ] + } + } + } + } + }, + { + "Python中常用的Web框架": { + "data": { + "uuid": "python-5-1549", + "seg": [ + [ + [ + "python", + "web", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1476", + "seg": [ + [ + [ + "web", + "框架" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-269", + "seg": [ + [ + [ + "web", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask框架": { + "children": [ + { + "Flask简介": { + "children": [ + { + "安装虚拟环境": { + "data": { + "uuid": "python-5-1550", + "seg": [ + [ + [ + "安装", + "虚拟环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Flask": { + "data": { + "uuid": "python-5-1551", + "seg": [ + [ + [ + "安装", + "flask" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_7440563_53415893", + "8_192123_94728", + "8_653829_463556", + "8_7422859_53384260", + "8_190182_90995", + "8_7440885_53416551" + ] + } + } + } + } + }, + { + "第一个Flask程序": { + "data": { + "uuid": "python-5-1552", + "seg": [ + [ + [ + "flask", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1477", + "seg": [ + [ + [ + "flask", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flask基础": { + "children": [ + { + "开启调试模式": { + "data": { + "uuid": "python-5-1553", + "seg": [ + [ + [ + "开启", + "调试模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "路由": { + "data": { + "uuid": "python-5-1554", + "seg": [ + [ + [ + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "静态文件": { + "data": { + "uuid": "python-5-1555", + "seg": [ + [ + [ + "静态", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "蓝图": { + "data": { + "uuid": "python-5-1556", + "seg": [ + [ + [ + "蓝图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1478", + "seg": [ + [ + [ + "flask", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模板": { + "children": [ + { + "渲染模板": { + "data": { + "uuid": "python-5-1557", + "seg": [ + [ + [ + "渲染", + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "变量": { + "data": { + "uuid": "python-5-1558", + "seg": [ + [ + [ + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制结构": { + "data": { + "uuid": "python-5-1559", + "seg": [ + [ + [ + "控制结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1479", + "seg": [ + [ + [ + "模板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web表单": { + "children": [ + { + "CSRF保护和验证": { + "data": { + "uuid": "python-5-1560", + "seg": [ + [ + [ + "csrf", + "保护" + ], + [ + "验证" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "表单类": { + "data": { + "uuid": "python-5-1561", + "seg": [ + [ + [ + "表单", + "类" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "把表单渲染成HTML": { + "data": { + "uuid": "python-5-1562", + "seg": [ + [ + [ + "表单", + "渲染", + "成", + "html" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-4-1480", + "seg": [ + [ + [ + "web", + "表单" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-3-270", + "seg": [ + [ + [ + "flask", + "框架" + ] + ] + ], + "level": "2", + "related_data": { + "qa": { + "data_id": [ + "8_356834_375068" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-2-17", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-1-2", + "seg": [ + [ + [ + "python", + "高阶" + ] + ] + ], + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "其他类别标签问题": { + "data": { + "uuid": "python-2-18", + "seg": [ + [ + [ + "类别", + "标签" + ] + ] + ], + "related_data": { + "qa": { + "data_id": [ + "8_769637_830593", + "8_1090983_1298161", + "8_720114_714420", + "8_772034_835058", + "8_6840189_50887868", + "8_7413270_53365115", + "8_738459_770368", + "8_1097042_1310014", + "8_772242_835898", + "8_1054372_1251698" + ] + } + } + } + } + }, + { + "应用类问题": { + "data": { + "uuid": "python-2-19", + "seg": [ + [ + [ + "类" + ] + ] + ], + "related_data": { + "qa": { + "data_id": [ + "8_838954_947554", + "8_1099978_1314903", + "8_7445785_53424616", + "8_768584_830176", + "8_7399295_53346285", + "8_7456509_53440302", + "8_770050_831384", + "8_718014_711556", + "8_703307_594118", + "8_356720_372635" + ] + } + } + } + } + }, + { + "第三方包问题": { + "data": { + "uuid": "python-2-20", + "seg": [ + [ + [ + "包" + ] + ] + ], + "related_data": { + "qa": { + "data_id": [ + "8_1077828_1282264", + "8_985644_1149188", + "8_1059883_1257278", + "8_688018_552849", + "8_7448039_53428034", + "8_783398_855452", + "8_7442196_53419008", + "8_7451545_53432836", + "8_7457671_53442092", + "8_7419404_53376575" + ] + } + } + } + } + } + ], + "data": { + "uuid": "python-1-3", + "seg": [ + [ + [] + ] + ], + "related_data": {} + } + } + } + ], + "data": { + "uuid": "python-0-0", + "seg": [ + [ + [ + "csdn", + "roadmap", + "python", + "revised" + ] + ] + ], + "related_data": {} + } + } +} \ No newline at end of file diff --git "a/data/tree_\344\272\221\345\216\237\347\224\237_mapping.json" "b/data/tree_\344\272\221\345\216\237\347\224\237_mapping.json" new file mode 100644 index 0000000..9c6c5ba --- /dev/null +++ "b/data/tree_\344\272\221\345\216\237\347\224\237_mapping.json" @@ -0,0 +1,73736 @@ +{ + "云原生": { + "children": [ + { + "云原生初阶-应用开发": { + "children": [ + { + "Serverless": { + "children": [ + { + "Cloud Events": { + "data": { + "uuid": "云原生-3-0", + "seg": [ + [ + [ + "cloud", + "events" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless Framework": { + "data": { + "uuid": "云原生-3-1", + "seg": [ + [ + [ + "serverless", + "framework" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless Devs": { + "data": { + "uuid": "云原生-3-2", + "seg": [ + [ + [ + "serverless", + "devs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FaaS Serverless": { + "children": [ + { + "Nuclio": { + "data": { + "uuid": "云原生-4-0", + "seg": [ + [ + [ + "nuclio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubeless": { + "children": [ + { + "Kubeless概述": { + "children": [ + { + "部署Kubeless": { + "data": { + "uuid": "云原生-6-0", + "seg": [ + [ + [ + "部署", + "kubeless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置客户端": { + "data": { + "uuid": "云原生-6-1", + "seg": [ + [ + [ + "配置", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署函数": { + "data": { + "uuid": "云原生-6-2", + "seg": [ + [ + [ + "部署", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubeless UI": { + "data": { + "uuid": "云原生-6-3", + "seg": [ + [ + [ + "kubeless", + "ui" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87943888" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-0", + "seg": [ + [ + [ + "kubeless", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Function": { + "children": [ + { + "函数调用": { + "data": { + "uuid": "云原生-6-4", + "seg": [ + [ + [ + "函数调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动扩展": { + "data": { + "uuid": "云原生-6-5", + "seg": [ + [ + [ + "自动", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1", + "seg": [ + [ + [ + "function" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "7040944", + "7514146" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-1", + "seg": [ + [ + [ + "kubeless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fission": { + "children": [ + { + "部署Fission": { + "children": [ + { + "部署Fission Chart": { + "data": { + "uuid": "云原生-6-6", + "seg": [ + [ + [ + "部署", + "fission", + "chart" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命令行工具": { + "data": { + "uuid": "云原生-6-7", + "seg": [ + [ + [ + "命令行", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hello Fission": { + "data": { + "uuid": "云原生-6-8", + "seg": [ + [ + [ + "hello", + "fission" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86647304" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-2", + "seg": [ + [ + [ + "部署", + "fission" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入探讨Fission": { + "children": [ + { + "Environment": { + "data": { + "uuid": "云原生-6-9", + "seg": [ + [ + [ + "environment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-3", + "seg": [ + [ + [ + "深入探讨", + "fission" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "执行模式": { + "children": [ + { + "Poolbased模式": { + "data": { + "uuid": "云原生-6-10", + "seg": [ + [ + [ + "poolbased", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "New Deploy模式": { + "data": { + "uuid": "云原生-6-11", + "seg": [ + [ + [ + "new", + "deploy", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-4", + "seg": [ + [ + [ + "执行", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Workflows": { + "children": [ + { + "Workflows定义": { + "data": { + "uuid": "云原生-6-12", + "seg": [ + [ + [ + "workflows", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置Workflows": { + "data": { + "uuid": "云原生-6-13", + "seg": [ + [ + [ + "配置", + "workflows" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fortune Whale": { + "data": { + "uuid": "云原生-6-14", + "seg": [ + [ + [ + "fortune", + "whale" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "53893672", + "34809467", + "96889697", + "112598022", + "109192472", + "90112241", + "108806597" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-5", + "seg": [ + [ + [ + "workflows" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-2", + "seg": [ + [ + [ + "fission" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenFaas": { + "children": [ + { + "初识OpenFaaS": { + "children": [ + { + "图形界面": { + "data": { + "uuid": "云原生-6-15", + "seg": [ + [ + [ + "图形界面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-6", + "seg": [ + [ + [ + "初识", + "openfaas" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenFaaS函数": { + "children": [ + { + "抽象方式": { + "data": { + "uuid": "云原生-6-16", + "seg": [ + [ + [ + "抽象", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数模板": { + "data": { + "uuid": "云原生-6-17", + "seg": [ + [ + [ + "函数", + "模板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建函数": { + "data": { + "uuid": "云原生-6-18", + "seg": [ + [ + [ + "构建", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79012419", + "81056767", + "78170863", + "82883078" + ] + } + } + } + } + }, + { + "推送镜像": { + "data": { + "uuid": "云原生-6-19", + "seg": [ + [ + [ + "推送", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-7", + "seg": [ + [ + [ + "openfaas", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86647163", + "85945793", + "109816846", + "110310033" + ] + } + } + } + } + }, + { + "Watchdog": { + "children": [ + { + "工作原理": { + "data": { + "uuid": "云原生-6-20", + "seg": [ + [ + [ + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置Watchdog": { + "data": { + "uuid": "云原生-6-21", + "seg": [ + [ + [ + "配置", + "watchdog" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109971608" + ] + } + } + } + } + }, + { + "ofwatchdog": { + "data": { + "uuid": "云原生-6-22", + "seg": [ + [ + [ + "ofwatchdog" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-8", + "seg": [ + [ + [ + "watchdog" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控": { + "children": [ + { + "监控指标": { + "data": { + "uuid": "云原生-6-23", + "seg": [ + [ + [ + "监控", + "指标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控面板": { + "data": { + "uuid": "云原生-6-24", + "seg": [ + [ + [ + "监控", + "面板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控预警": { + "data": { + "uuid": "云原生-6-25", + "seg": [ + [ + [ + "监控", + "预警" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-9", + "seg": [ + [ + [ + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "弹性扩展": { + "children": [ + { + "基于Alertmanager扩展": { + "data": { + "uuid": "云原生-6-26", + "seg": [ + [ + [ + "alertmanager", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于HPA扩展": { + "data": { + "uuid": "云原生-6-27", + "seg": [ + [ + [ + "hpa", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-10", + "seg": [ + [ + [ + "弹性", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数应用市场": { + "data": { + "uuid": "云原生-5-11", + "seg": [ + [ + [ + "函数", + "市场" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-3", + "seg": [ + [ + [ + "openfaas" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenWhisk": { + "children": [ + { + "Hello Whisk": { + "data": { + "uuid": "云原生-5-12", + "seg": [ + [ + [ + "hello", + "whisk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "逻辑架构": { + "children": [ + { + "Namespace": { + "data": { + "uuid": "云原生-6-28", + "seg": [ + [ + [ + "namespace" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Package": { + "data": { + "uuid": "云原生-6-29", + "seg": [ + [ + [ + "package" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Action": { + "data": { + "uuid": "云原生-6-30", + "seg": [ + [ + [ + "action" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52415346" + ] + } + } + } + } + }, + { + "Feed": { + "data": { + "uuid": "云原生-6-31", + "seg": [ + [ + [ + "feed" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Rule": { + "data": { + "uuid": "云原生-6-32", + "seg": [ + [ + [ + "rule" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-13", + "seg": [ + [ + [ + "逻辑", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "系统架构": { + "data": { + "uuid": "云原生-5-14", + "seg": [ + [ + [ + "系统", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "72877127", + "78900555" + ] + } + } + } + } + }, + { + "Kubernetes部署": { + "children": [ + { + "准备Kubernetes集群": { + "data": { + "uuid": "云原生-6-33", + "seg": [ + [ + [ + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群基础设置": { + "data": { + "uuid": "云原生-6-34", + "seg": [ + [ + [ + "集群", + "基础", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建访问入口": { + "data": { + "uuid": "云原生-6-35", + "seg": [ + [ + [ + "创建", + "访问", + "入口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署组件": { + "data": { + "uuid": "云原生-6-36", + "seg": [ + [ + [ + "部署", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "加载系统配置": { + "data": { + "uuid": "云原生-6-37", + "seg": [ + [ + [ + "加载", + "系统配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试集群": { + "data": { + "uuid": "云原生-6-38", + "seg": [ + [ + [ + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除集群": { + "data": { + "uuid": "云原生-6-39", + "seg": [ + [ + [ + "删除", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-15", + "seg": [ + [ + [ + "kubernetes", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm部署": { + "children": [ + { + "安装Helm": { + "data": { + "uuid": "云原生-6-40", + "seg": [ + [ + [ + "安装", + "helm" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114002681" + ] + } + } + } + } + }, + { + "环境配置": { + "data": { + "uuid": "云原生-6-41", + "seg": [ + [ + [ + "环境", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Chart": { + "data": { + "uuid": "云原生-6-42", + "seg": [ + [ + [ + "部署", + "chart" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "118195461", + "81907836", + "90815393", + "117828384" + ] + } + } + } + } + }, + { + "管理应用": { + "data": { + "uuid": "云原生-6-43", + "seg": [ + [ + [ + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-16", + "seg": [ + [ + [ + "helm", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "蛋糕管理服务": { + "children": [ + { + "开发环境": { + "data": { + "uuid": "云原生-6-44", + "seg": [ + [ + [ + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义Action": { + "data": { + "uuid": "云原生-6-45", + "seg": [ + [ + [ + "定义", + "action" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建Package": { + "data": { + "uuid": "云原生-6-46", + "seg": [ + [ + [ + "创建", + "package" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Action": { + "data": { + "uuid": "云原生-6-47", + "seg": [ + [ + [ + "部署", + "action" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布API": { + "data": { + "uuid": "云原生-6-48", + "seg": [ + [ + [ + "发布", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-17", + "seg": [ + [ + [ + "蛋糕", + "管理", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-4", + "seg": [ + [ + [ + "openwhisk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fn Project": { + "data": { + "uuid": "云原生-4-5", + "seg": [ + [ + [ + "fn", + "project" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-3", + "seg": [ + [ + [ + "faas", + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "踏上征途": { + "data": { + "uuid": "云原生-3-4", + "seg": [ + [ + [ + "踏上", + "征途" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无服务器初探": { + "children": [ + { + "来龙去脉": { + "children": [ + { + "面向服务的架构与微服务": { + "children": [ + { + "从SOA到微服务": { + "data": { + "uuid": "云原生-6-49", + "seg": [ + [ + [ + "soa", + "到微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务的价值与挑战": { + "data": { + "uuid": "云原生-6-50", + "seg": [ + [ + [ + "微", + "服务", + "价值" + ], + [ + "挑战" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-18", + "seg": [ + [ + [ + "面向", + "服务", + "架构" + ], + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "软件设计": { + "data": { + "uuid": "云原生-5-19", + "seg": [ + [ + [ + "软件设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-6", + "seg": [ + [ + [ + "来龙去脉" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无服务器架构原则": { + "children": [ + { + "根据需要使用计算服务执行代码": { + "data": { + "uuid": "云原生-5-20", + "seg": [ + [ + [ + "计算", + "服务", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写单一用途的无状态函数": { + "data": { + "uuid": "云原生-5-21", + "seg": [ + [ + [ + "编写", + "单一", + "用途", + "状态", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设计基于推送的、事件驱动的管道": { + "data": { + "uuid": "云原生-5-22", + "seg": [ + [ + [ + "设计", + "推送" + ], + [ + "事件驱动", + "管道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建更厚、更强大的前端": { + "data": { + "uuid": "云原生-5-23", + "seg": [ + [ + [ + "创建", + "厚" + ], + [ + "强大", + "前端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拥抱第三方服务": { + "data": { + "uuid": "云原生-5-24", + "seg": [ + [ + [ + "拥抱", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-7", + "seg": [ + [ + [ + "服务器", + "架构", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从服务器过渡到服务": { + "data": { + "uuid": "云原生-4-8", + "seg": [ + [ + [ + "服务器", + "过渡", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无服务器的利与弊": { + "children": [ + { + "决策驱动因素": { + "data": { + "uuid": "云原生-5-25", + "seg": [ + [ + [ + "决策", + "驱动", + "因素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "什么时候使用无服务器": { + "data": { + "uuid": "云原生-5-26", + "seg": [ + [ + [ + "服务器" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "90032997", + "117407975", + "88851190", + "108921819", + "110438060", + "90613294", + "7734986", + "5783677", + "79867130", + "7726666" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-9", + "seg": [ + [ + [ + "服务器", + "利与弊" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-5", + "seg": [ + [ + [ + "服务器", + "初探" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + ".架构与模式": { + "children": [ + { + "使用场景": { + "children": [ + { + "应用程序后端": { + "data": { + "uuid": "云原生-5-27", + "seg": [ + [ + [ + "应用程序", + "端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据处理与操作": { + "data": { + "uuid": "云原生-5-28", + "seg": [ + [ + [ + "数据处理" + ], + [ + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实时分析": { + "data": { + "uuid": "云原生-5-29", + "seg": [ + [ + [ + "实时", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遗留API代理": { + "data": { + "uuid": "云原生-5-30", + "seg": [ + [ + [ + "遗留", + "api", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "计划服务": { + "data": { + "uuid": "云原生-5-31", + "seg": [ + [ + [ + "计划", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "机器人(Bot)和技能(Skill) .": { + "data": { + "uuid": "云原生-5-32", + "seg": [ + [ + [ + "机器人", + "bot" + ], + [ + "技能", + "skill" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-10", + "seg": [ + [ + [ + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构": { + "children": [ + { + "计算即后端": { + "data": { + "uuid": "云原生-5-33", + "seg": [ + [ + [ + "计算", + "端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遗留API代理": { + "data": { + "uuid": "云原生-5-34", + "seg": [ + [ + [ + "遗留", + "api", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混合": { + "data": { + "uuid": "云原生-5-35", + "seg": [ + [ + [ + "混合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GraphQL .": { + "data": { + "uuid": "云原生-5-36", + "seg": [ + [ + [ + "graphql" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "计算即胶水": { + "data": { + "uuid": "云原生-5-37", + "seg": [ + [ + [ + "计算", + "胶水" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实时处理": { + "data": { + "uuid": "云原生-5-38", + "seg": [ + [ + [ + "实时处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-11", + "seg": [ + [ + [ + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模式": { + "children": [ + { + "命令模式": { + "data": { + "uuid": "云原生-5-39", + "seg": [ + [ + [ + "命令", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消息传输模式": { + "data": { + "uuid": "云原生-5-40", + "seg": [ + [ + [ + "消息", + "传输", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "56049305" + ] + } + } + } + } + }, + { + "优先级队列模式": { + "data": { + "uuid": "云原生-5-41", + "seg": [ + [ + [ + "优先级", + "队列", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扇出模式": { + "data": { + "uuid": "云原生-5-42", + "seg": [ + [ + [ + "扇", + "出", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管道和过滤器模式": { + "data": { + "uuid": "云原生-5-43", + "seg": [ + [ + [ + "管道" + ], + [ + "过滤器", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-12", + "seg": [ + [ + [ + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-6", + "seg": [ + [ + [ + "架构" + ], + [ + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "建立无服务器应用程序": { + "children": [ + { + "小时视频": { + "children": [ + { + "总体需求": { + "data": { + "uuid": "云原生-5-44", + "seg": [ + [ + [ + "总体", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Amazon Web Services(AWS)": { + "data": { + "uuid": "云原生-5-45", + "seg": [ + [ + [ + "amazon", + "web", + "services", + "aws" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建第一个Lambda函数": { + "data": { + "uuid": "云原生-5-46", + "seg": [ + [ + [ + "创建", + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名你的Lambda": { + "data": { + "uuid": "云原生-5-47", + "seg": [ + [ + [ + "命名", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "本地测试": { + "data": { + "uuid": "云原生-5-48", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署到AWS": { + "data": { + "uuid": "云原生-5-49", + "seg": [ + [ + [ + "部署", + "aws" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接S3 和Lambda": { + "data": { + "uuid": "云原生-5-50", + "seg": [ + [ + [ + "连接", + "s3" + ], + [ + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在AWS中测试": { + "data": { + "uuid": "云原生-5-51", + "seg": [ + [ + [ + "aws" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "观察日志": { + "data": { + "uuid": "云原生-5-52", + "seg": [ + [ + [ + "观察", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-13", + "seg": [ + [ + [ + "小时", + "视频" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置Simple Notification Service": { + "children": [ + { + "连接SNS和S": { + "data": { + "uuid": "云原生-5-53", + "seg": [ + [ + [ + "连接", + "sns" + ], + [ + "s" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从SNS接收电子邮件": { + "data": { + "uuid": "云原生-5-54", + "seg": [ + [ + [ + "sns", + "接收", + "电子邮件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试SNS": { + "data": { + "uuid": "云原生-5-55", + "seg": [ + [ + [ + "sns" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-14", + "seg": [ + [ + [ + "配置", + "simple", + "not", + "if", + "ication", + "service" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "4141177", + "6142146" + ] + } + } + } + } + }, + { + "设置视频权限": { + "children": [ + { + "创建第二个函数": { + "data": { + "uuid": "云原生-5-56", + "seg": [ + [ + [ + "创建", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置与安全": { + "data": { + "uuid": "云原生-5-57", + "seg": [ + [ + [ + "配置" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试第二个函数": { + "data": { + "uuid": "云原生-5-58", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-15", + "seg": [ + [ + [ + "设置", + "视频", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成元数据": { + "data": { + "uuid": "云原生-4-16", + "seg": [ + [ + [ + "生成元", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "收尾": { + "data": { + "uuid": "云原生-4-17", + "seg": [ + [ + [ + "收尾" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-7", + "seg": [ + [ + [ + "建立", + "服务器应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置你的云服务": { + "children": [ + { + "安全模型和身份管理": { + "children": [ + { + "创建和管理IAM用户": { + "data": { + "uuid": "云原生-5-59", + "seg": [ + [ + [ + "创建" + ], + [ + "管理", + "iam", + "用户" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-18", + "seg": [ + [ + [ + "模型" + ], + [ + "身份", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-8", + "seg": [ + [ + [ + "设置", + "云", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入核心": { + "data": { + "uuid": "云原生-3-9", + "seg": [ + [ + [ + "核心" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "身份认证和授权": { + "children": [ + { + "无服务器环境中的身份认证": { + "children": [ + { + "无服务器方法": { + "data": { + "uuid": "云原生-5-60", + "seg": [ + [ + [ + "服务器", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Amazon Cognito": { + "data": { + "uuid": "云原生-5-61", + "seg": [ + [ + [ + "amazon", + "cognito" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6861267" + ] + } + } + } + } + }, + { + "Auth0": { + "data": { + "uuid": "云原生-5-62", + "seg": [ + [ + [ + "auth0" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-19", + "seg": [ + [ + [ + "服务器", + "环境", + "身份", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为 24 小时视频增加身份认证": { + "children": [ + { + "计划": { + "data": { + "uuid": "云原生-5-63", + "seg": [ + [ + [ + "计划" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "直接调用Lambda": { + "data": { + "uuid": "云原生-5-64", + "seg": [ + [ + [ + "调用", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "小时视频网站": { + "data": { + "uuid": "云原生-5-65", + "seg": [ + [ + [ + "小时", + "视频", + "网站" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Auth0 配置": { + "data": { + "uuid": "云原生-5-66", + "seg": [ + [ + [ + "auth0", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在网站中加入Auth0": { + "data": { + "uuid": "云原生-5-67", + "seg": [ + [ + [ + "网站", + "auth0" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试Auth0 的集成": { + "data": { + "uuid": "云原生-5-68", + "seg": [ + [ + [ + "auth0", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-20", + "seg": [ + [ + [ + "小时", + "视频", + "增加", + "身份", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与AWS集成": { + "children": [ + { + "用户信息Lambda": { + "data": { + "uuid": "云原生-5-69", + "seg": [ + [ + [ + "用户", + "信息", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "API Gateway": { + "children": [ + { + "作为接口的API Gateway": { + "children": [ + { + "和AWS服务集成": { + "data": { + "uuid": "云原生-7-0", + "seg": [ + [ + [], + [ + "aws", + "服务", + "集成" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52896720", + "79226121", + "87204090", + "113759771", + "47187757", + "25392833", + "53671164", + "102457403", + "53607844", + "81952786" + ] + } + } + } + } + }, + { + "脚本": { + "data": { + "uuid": "云原生-7-1", + "seg": [ + [ + [ + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-51", + "seg": [ + [ + [ + "接口", + "api", + "gateway" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "85238110", + "80520827", + "50817559", + "51565074", + "90247043", + "87084646", + "71078016", + "83900200", + "79802452", + "82752408" + ] + } + } + } + } + }, + { + "创建资源和方法": { + "data": { + "uuid": "云原生-6-52", + "seg": [ + [ + [ + "创建", + "资源" + ], + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置方法执行": { + "data": { + "uuid": "云原生-6-53", + "seg": [ + [ + [ + "配置", + "方法", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新网站": { + "data": { + "uuid": "云原生-6-54", + "seg": [ + [ + [ + "更新", + "网站" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优化网关": { + "children": [ + { + "限制": { + "data": { + "uuid": "云原生-7-2", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓存": { + "data": { + "uuid": "云原生-7-3", + "seg": [ + [ + [ + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-55", + "seg": [ + [ + [ + "优化", + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-70", + "seg": [ + [ + [ + "api", + "gateway" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射": { + "data": { + "uuid": "云原生-5-71", + "seg": [ + [ + [ + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过API Gateway调用Lambda": { + "data": { + "uuid": "云原生-5-72", + "seg": [ + [ + [ + "api", + "gateway", + "调用", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义授权方": { + "data": { + "uuid": "云原生-5-73", + "seg": [ + [ + [ + "自定义", + "授权", + "方" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-21", + "seg": [ + [ + [], + [ + "aws", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "委托令牌": { + "children": [ + { + "真实案例": { + "data": { + "uuid": "云原生-5-74", + "seg": [ + [ + [ + "真实", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开通委托令牌": { + "data": { + "uuid": "云原生-5-75", + "seg": [ + [ + [ + "开通", + "委托", + "令牌" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-22", + "seg": [ + [ + [ + "委托", + "令牌" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-10", + "seg": [ + [ + [ + "身份", + "认证" + ], + [ + "授权" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编排者Lambda": { + "children": [ + { + "Lambda内幕": { + "children": [ + { + "事件模型和源": { + "data": { + "uuid": "云原生-5-76", + "seg": [ + [ + [ + "事件", + "模型", + "和源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "推送和拉取事件模型": { + "data": { + "uuid": "云原生-5-77", + "seg": [ + [ + [ + "推送" + ], + [ + "拉取", + "事件", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发执行": { + "data": { + "uuid": "云原生-5-78", + "seg": [ + [ + [ + "并发", + "执行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "容器重用": { + "data": { + "uuid": "云原生-5-79", + "seg": [ + [ + [ + "容器", + "重用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "冷Lambda和暖Lambda": { + "data": { + "uuid": "云原生-5-80", + "seg": [ + [ + [ + "冷", + "lambda", + "和暖" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79263437", + "52269565" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-23", + "seg": [ + [ + [ + "lambda", + "内幕" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编程模型": { + "children": [ + { + "函数处理程序": { + "data": { + "uuid": "云原生-5-81", + "seg": [ + [ + [ + "函数", + "处理程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件对象": { + "data": { + "uuid": "云原生-5-82", + "seg": [ + [ + [ + "事件", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上下文对象": { + "data": { + "uuid": "云原生-5-83", + "seg": [ + [ + [ + "上下文", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回调函数": { + "data": { + "uuid": "云原生-5-84", + "seg": [ + [ + [ + "回调", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志": { + "data": { + "uuid": "云原生-5-85", + "seg": [ + [ + [ + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码开发": { + "data": { + "uuid": "云原生-5-86", + "seg": [ + [ + [ + "开发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Handler": { + "data": { + "uuid": "云原生-5-87", + "seg": [ + [ + [ + "handler" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "7914902", + "6601558" + ] + } + } + } + } + }, + { + "执行上下文": { + "data": { + "uuid": "云原生-5-88", + "seg": [ + [ + [ + "执行", + "上下文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志输出": { + "data": { + "uuid": "云原生-5-89", + "seg": [ + [ + [ + "日志", + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异常处理": { + "data": { + "uuid": "云原生-5-90", + "seg": [ + [ + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无状态": { + "data": { + "uuid": "云原生-5-91", + "seg": [ + [ + [ + "状态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-24", + "seg": [ + [ + [ + "编程", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "版本管理、别名和环境变量": { + "children": [ + { + "版本管理": { + "data": { + "uuid": "云原生-5-92", + "seg": [ + [ + [ + "版本", + "管理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82823798" + ] + } + } + } + } + }, + { + "别名": { + "data": { + "uuid": "云原生-5-93", + "seg": [ + [ + [ + "别名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环境变量": { + "data": { + "uuid": "云原生-5-94", + "seg": [ + [ + [ + "环境变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-25", + "seg": [ + [ + [ + "版本", + "管理" + ], + [ + "别名" + ], + [ + "环境变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用命令行界面(CLI)": { + "children": [ + { + "调用命令": { + "data": { + "uuid": "云原生-5-95", + "seg": [ + [ + [ + "调用", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-26", + "seg": [ + [ + [ + "命令行", + "界面", + "cli" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Lambda模式": { + "children": [ + { + "异步瀑布": { + "data": { + "uuid": "云原生-5-96", + "seg": [ + [ + [ + "异步", + "瀑布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列与并行": { + "data": { + "uuid": "云原生-5-97", + "seg": [ + [ + [ + "序列" + ], + [ + "并行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用库": { + "data": { + "uuid": "云原生-5-98", + "seg": [ + [ + [ + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把逻辑移到另一个文件中": { + "data": { + "uuid": "云原生-5-99", + "seg": [ + [ + [ + "逻辑", + "移到", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-27", + "seg": [ + [ + [ + "lambda", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试Lambda函数 .": { + "children": [ + { + "在本地测试": { + "data": { + "uuid": "云原生-5-100", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写测试": { + "data": { + "uuid": "云原生-5-101", + "seg": [ + [ + [ + "编写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-28", + "seg": [ + [ + [ + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-11", + "seg": [ + [ + [ + "编排", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拓展架构": { + "data": { + "uuid": "云原生-3-12", + "seg": [ + [ + [ + "拓展", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储 .": { + "children": [ + { + "更智能的存储": { + "children": [ + { + "版本控制": { + "data": { + "uuid": "云原生-5-102", + "seg": [ + [ + [ + "版本控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "托管静态网站": { + "data": { + "uuid": "云原生-5-103", + "seg": [ + [ + [ + "托管", + "静态", + "网站" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储类别": { + "data": { + "uuid": "云原生-5-104", + "seg": [ + [ + [ + "存储", + "类别" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "8665738", + "88655608", + "111464534", + "6569447", + "117236116", + "116677477" + ] + } + } + } + } + }, + { + "对象生命周期管理": { + "data": { + "uuid": "云原生-5-105", + "seg": [ + [ + [ + "对象", + "生命周期", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "转移加速": { + "data": { + "uuid": "云原生-5-106", + "seg": [ + [ + [ + "转移", + "加速" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件通知": { + "data": { + "uuid": "云原生-5-107", + "seg": [ + [ + [ + "事件", + "通知" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-29", + "seg": [ + [ + [ + "智能", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全上传": { + "children": [ + { + "上传策略Lambda": { + "data": { + "uuid": "云原生-5-108", + "seg": [ + [ + [ + "上传", + "策略", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "S3 CORS配置": { + "data": { + "uuid": "云原生-5-109", + "seg": [ + [ + [ + "s3", + "cors", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "69357365" + ] + } + } + } + } + }, + { + "在网站中上传": { + "data": { + "uuid": "云原生-5-110", + "seg": [ + [ + [ + "网站", + "上传" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52643702" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-30", + "seg": [ + [ + [ + "上传" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限制对文件的访问": { + "children": [ + { + "禁止公开访问": { + "data": { + "uuid": "云原生-5-111", + "seg": [ + [ + [ + "禁止", + "公开", + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成预签名URL": { + "data": { + "uuid": "云原生-5-112", + "seg": [ + [ + [ + "生成", + "预", + "签名", + "url" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "62042292" + ] + } + } + } + } + }, + { + "签名URL Lambda": { + "data": { + "uuid": "云原生-5-113", + "seg": [ + [ + [ + "签名", + "url", + "lambda" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81505963" + ] + } + } + } + } + }, + { + "API Gateway设置": { + "data": { + "uuid": "云原生-5-114", + "seg": [ + [ + [ + "api", + "gateway", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提升性能": { + "data": { + "uuid": "云原生-5-115", + "seg": [ + [ + [ + "提升", + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提升Firebase安全性": { + "data": { + "uuid": "云原生-5-116", + "seg": [ + [ + [ + "提升", + "firebase", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-31", + "seg": [ + [ + [ + "文件", + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-13", + "seg": [ + [ + [ + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库": { + "children": [ + { + "Firebase简介": { + "children": [ + { + "数据结构": { + "data": { + "uuid": "云原生-5-117", + "seg": [ + [ + [ + "数据结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全规则": { + "data": { + "uuid": "云原生-5-118", + "seg": [ + [ + [ + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-32", + "seg": [ + [ + [ + "firebase", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为 24 小时视频添加Firebase": { + "children": [ + { + "设置Firebase": { + "data": { + "uuid": "云原生-5-119", + "seg": [ + [ + [ + "设置", + "firebase" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改转码视频Lambda": { + "data": { + "uuid": "云原生-5-120", + "seg": [ + [ + [ + "修改", + "转码", + "视频", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Transcode Video Firebase Update函数": { + "data": { + "uuid": "云原生-5-121", + "seg": [ + [ + [ + "transcode", + "video", + "firebase", + "update", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接Lambda": { + "data": { + "uuid": "云原生-5-122", + "seg": [ + [ + [ + "连接", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网站": { + "data": { + "uuid": "云原生-5-123", + "seg": [ + [ + [ + "网站" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81436075" + ] + } + } + } + } + }, + { + "端到端测试": { + "data": { + "uuid": "云原生-5-124", + "seg": [ + [ + [ + "端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-33", + "seg": [ + [ + [ + "小时", + "视频", + "添加", + "firebase" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-14", + "seg": [ + [ + [ + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "最后一英里 .": { + "children": [ + { + "部署与框架": { + "data": { + "uuid": "云原生-4-34", + "seg": [ + [ + [ + "部署" + ], + [ + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迈向更好的微服务": { + "data": { + "uuid": "云原生-4-35", + "seg": [ + [ + [ + "迈向", + "更好", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Step Functions": { + "data": { + "uuid": "云原生-4-36", + "seg": [ + [ + [ + "step", + "functions" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWS Marketplace": { + "data": { + "uuid": "云原生-4-37", + "seg": [ + [ + [ + "aws", + "marketplace" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "未来之路": { + "data": { + "uuid": "云原生-4-38", + "seg": [ + [ + [ + "未来", + "路" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-15", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless基础": { + "children": [ + { + "什么是Serverless": { + "children": [ + { + "Serverless技术的发展": { + "data": { + "uuid": "云原生-5-125", + "seg": [ + [ + [ + "serverless", + "技术", + "发展" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "91176481", + "116491708", + "85967830", + "91897999", + "101664662", + "89559796", + "117385144", + "112778230", + "108753823" + ] + } + } + } + } + }, + { + "Serverless框架和工具": { + "children": [ + { + "Chalice": { + "data": { + "uuid": "云原生-6-56", + "seg": [ + [ + [ + "chalice" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Claudia.js": { + "data": { + "uuid": "云原生-6-57", + "seg": [ + [ + [ + "claudia", + "js" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87989691", + "110220249", + "91467143", + "115031746", + "114851314", + "77825396", + "92796438", + "79748825", + "80042006", + "111166886" + ] + } + } + } + } + }, + { + "Apex": { + "data": { + "uuid": "云原生-6-58", + "seg": [ + [ + [ + "apex" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Function": { + "data": { + "uuid": "云原生-6-59", + "seg": [ + [ + [ + "spring", + "cloud", + "function" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100133932", + "89117087", + "102859463", + "72818673", + "84639676", + "79667184", + "115012844", + "89760037", + "108346274", + "50707868" + ] + } + } + } + } + }, + { + "AWS SAM": { + "data": { + "uuid": "云原生-6-60", + "seg": [ + [ + [ + "aws", + "sam" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51912795", + "91450055", + "60141447", + "86721206", + "79816861", + "50514123", + "84936818", + "97698097", + "93879302", + "110493112" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-126", + "seg": [ + [ + [ + "serverless", + "框架" + ], + [ + "工具" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114846168", + "110881857", + "100744213", + "116739942", + "109071867" + ] + } + } + } + } + }, + { + "Serverless后台服务": { + "data": { + "uuid": "云原生-5-127", + "seg": [ + [ + [ + "serverless", + "后台", + "服务" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80311217", + "91815630", + "104328850", + "102519302", + "103158470", + "80910401", + "89155164", + "89414836", + "89550740", + "103665094" + ] + } + } + } + } + }, + { + "获取AWS账号": { + "data": { + "uuid": "云原生-5-128", + "seg": [ + [ + [ + "获取", + "aws", + "账号" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWS Lambda控制面板": { + "data": { + "uuid": "云原生-5-129", + "seg": [ + [ + [ + "aws", + "lambda", + "控制面板" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79803267" + ] + } + } + } + } + }, + { + "编辑函数": { + "data": { + "uuid": "云原生-5-130", + "seg": [ + [ + [ + "编辑", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试函数": { + "data": { + "uuid": "云原生-5-131", + "seg": [ + [ + [ + "测试函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "外部访问": { + "data": { + "uuid": "云原生-5-132", + "seg": [ + [ + [ + "外部", + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运维监控": { + "data": { + "uuid": "云原生-5-133", + "seg": [ + [ + [ + "运维", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回顾": { + "data": { + "uuid": "云原生-5-134", + "seg": [ + [ + [ + "回顾" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100770212" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-39", + "seg": [ + [ + [ + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless带来的价值": { + "data": { + "uuid": "云原生-4-40", + "seg": [ + [ + [ + "serverless", + "带来", + "价值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的技术实现": { + "children": [ + { + "理念与实现": { + "data": { + "uuid": "云原生-5-135", + "seg": [ + [ + [ + "理念" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FaaS与BaaS": { + "children": [ + { + "FaaS的架构": { + "data": { + "uuid": "云原生-6-61", + "seg": [ + [ + [ + "faas", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82682082", + "109988994", + "85405018", + "82682087", + "102833144", + "85951023", + "83713623", + "87389931", + "97290306", + "79909862" + ] + } + } + } + } + }, + { + "函数的生命周期": { + "data": { + "uuid": "云原生-6-62", + "seg": [ + [ + [ + "函数", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数工作流": { + "data": { + "uuid": "云原生-6-63", + "seg": [ + [ + [ + "函数", + "工作", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "81240083" + ] + } + } + } + } + }, + { + "BaaS的价值": { + "data": { + "uuid": "云原生-6-64", + "seg": [ + [ + [ + "baas", + "价值" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80702555", + "65445813" + ] + } + } + } + } + }, + { + "广义的Serverless": { + "data": { + "uuid": "云原生-6-65", + "seg": [ + [ + [ + "广义", + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-136", + "seg": [ + [ + [ + "faas" + ], + [ + "baas" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-41", + "seg": [ + [ + [ + "serverless", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless应用架构": { + "children": [ + { + "传统应用架构": { + "data": { + "uuid": "云原生-5-137", + "seg": [ + [ + [ + "传统", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless应用架构": { + "data": { + "uuid": "云原生-5-138", + "seg": [ + [ + [ + "serverless", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52133533", + "80257980", + "89756366", + "91440364", + "103592869", + "53581728", + "88931487", + "103518327", + "104215723", + "103818074" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-42", + "seg": [ + [ + [ + "serverless", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的技术特点": { + "data": { + "uuid": "云原生-4-43", + "seg": [ + [ + [ + "serverless", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的应用场景": { + "data": { + "uuid": "云原生-4-44", + "seg": [ + [ + [ + "serverless", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的局限": { + "data": { + "uuid": "云原生-4-45", + "seg": [ + [ + [ + "serverless", + "局限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-16", + "seg": [ + [ + [ + "serverless", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWS Lambda": { + "children": [ + { + "AWS Serverless": { + "data": { + "uuid": "云原生-4-46", + "seg": [ + [ + [ + "aws", + "serverless" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "72842956", + "67636996", + "79160034", + "79474884", + "81103440", + "79788829", + "80989986", + "74939002", + "79965612", + "86698765" + ] + } + } + } + } + }, + { + "AWS Lambda概述": { + "data": { + "uuid": "云原生-4-47", + "seg": [ + [ + [ + "aws", + "lambda", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79744051", + "108552711", + "82967837", + "78411610", + "78526093", + "78405452", + "78616153", + "78404789", + "78608872", + "78410205" + ] + } + } + } + } + }, + { + "权限控制": { + "children": [ + { + "IAM": { + "data": { + "uuid": "云原生-5-139", + "seg": [ + [ + [ + "iam" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84902650" + ] + } + } + } + } + }, + { + "策略": { + "data": { + "uuid": "云原生-5-140", + "seg": [ + [ + [ + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "角色": { + "data": { + "uuid": "云原生-5-141", + "seg": [ + [ + [ + "角色" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-48", + "seg": [ + [ + [ + "权限", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件驱动": { + "children": [ + { + "事件源": { + "data": { + "uuid": "云原生-5-142", + "seg": [ + [ + [ + "事件", + "源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "触发模式": { + "data": { + "uuid": "云原生-5-143", + "seg": [ + [ + [ + "触发", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-49", + "seg": [ + [ + [ + "事件驱动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志监控": { + "data": { + "uuid": "云原生-4-50", + "seg": [ + [ + [ + "日志", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发辅助": { + "children": [ + { + "标签": { + "data": { + "uuid": "云原生-5-144", + "seg": [ + [ + [ + "标签" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-51", + "seg": [ + [ + [ + "开发", + "辅助" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行限制": { + "children": [ + { + "资源限制": { + "data": { + "uuid": "云原生-5-145", + "seg": [ + [ + [ + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发控制": { + "data": { + "uuid": "云原生-5-146", + "seg": [ + [ + [ + "并发", + "控制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-52", + "seg": [ + [ + [ + "运行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-17", + "seg": [ + [ + [ + "aws", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Azure Functions": { + "children": [ + { + "Microsoft Azure": { + "data": { + "uuid": "云原生-4-53", + "seg": [ + [ + [ + "microsoft", + "azure" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "1479866", + "6582531" + ] + } + } + } + } + }, + { + "Azure Functions概述": { + "data": { + "uuid": "云原生-4-54", + "seg": [ + [ + [ + "azure", + "functions", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建Azure Serverless应用": { + "children": [ + { + "注册Azure账号": { + "data": { + "uuid": "云原生-5-147", + "seg": [ + [ + [ + "注册", + "azure", + "账号" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Azure控制台": { + "data": { + "uuid": "云原生-5-148", + "seg": [ + [ + [ + "azure", + "控制台" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109695110", + "95630180", + "54093533", + "85003711", + "90342232", + "51970934", + "54632592", + "11194289", + "6279735", + "118151757" + ] + } + } + } + } + }, + { + "调用函数": { + "data": { + "uuid": "云原生-5-149", + "seg": [ + [ + [ + "调用函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-55", + "seg": [ + [ + [ + "创建", + "azure", + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Azure Functions命令行": { + "children": [ + { + "安装命令行": { + "data": { + "uuid": "云原生-5-150", + "seg": [ + [ + [ + "安装", + "命令行" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "83061973" + ] + } + } + } + } + }, + { + "发布至公有云": { + "data": { + "uuid": "云原生-5-151", + "seg": [ + [ + [ + "发布", + "公有", + "云" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-56", + "seg": [ + [ + [ + "azure", + "functions", + "命令行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入了解Azure Functions": { + "children": [ + { + "函数应用设置": { + "data": { + "uuid": "云原生-5-152", + "seg": [ + [ + [ + "函数", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Trigger与Bindings": { + "children": [ + { + "HTTP Trigger": { + "data": { + "uuid": "云原生-6-66", + "seg": [ + [ + [ + "http", + "trigger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cronjob Trigger": { + "data": { + "uuid": "云原生-6-67", + "seg": [ + [ + [ + "cronjob", + "trigger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kafka Trigger": { + "data": { + "uuid": "云原生-6-68", + "seg": [ + [ + [ + "kafka", + "trigger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NATS Trigger": { + "data": { + "uuid": "云原生-6-69", + "seg": [ + [ + [ + "nats", + "trigger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-153", + "seg": [ + [ + [ + "trigger" + ], + [ + "bindings" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数代理": { + "data": { + "uuid": "云原生-5-154", + "seg": [ + [ + [ + "函数", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Slot": { + "data": { + "uuid": "云原生-5-155", + "seg": [ + [ + [ + "slot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-57", + "seg": [ + [ + [ + "azure", + "functions" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "私有云部署": { + "data": { + "uuid": "云原生-4-58", + "seg": [ + [ + [ + "私有", + "云", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-18", + "seg": [ + [ + [ + "azure", + "functions" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器技术基础": { + "children": [ + { + "什么是容器": { + "children": [ + { + "容器": { + "data": { + "uuid": "云原生-5-156", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109277817", + "80553680", + "38183629", + "78705593", + "52130449", + "72082011", + "52047600", + "53333373", + "18473761", + "84800637" + ] + } + } + } + } + }, + { + "容器镜像": { + "data": { + "uuid": "云原生-5-157", + "seg": [ + [ + [ + "容器", + "镜像" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78522206", + "82996909", + "81154945", + "102827125" + ] + } + } + } + } + }, + { + "镜像仓库": { + "data": { + "uuid": "云原生-5-158", + "seg": [ + [ + [ + "镜像", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器编排": { + "data": { + "uuid": "云原生-5-159", + "seg": [ + [ + [ + "容器", + "编排" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-59", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker": { + "children": [ + { + "Vagrant": { + "data": { + "uuid": "云原生-5-160", + "seg": [ + [ + [ + "vagrant" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110818421" + ] + } + } + } + } + }, + { + "VirtualBox": { + "data": { + "uuid": "云原生-5-161", + "seg": [ + [ + [ + "virtualbox" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109759626" + ] + } + } + } + } + }, + { + "安装Docker": { + "data": { + "uuid": "云原生-5-162", + "seg": [ + [ + [ + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行容器": { + "data": { + "uuid": "云原生-5-163", + "seg": [ + [ + [ + "运行", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建容器镜像": { + "data": { + "uuid": "云原生-5-164", + "seg": [ + [ + [ + "构建", + "容器", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分享镜像": { + "data": { + "uuid": "云原生-5-165", + "seg": [ + [ + [ + "分享", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-60", + "seg": [ + [ + [ + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes基础": { + "children": [ + { + "命名空间": { + "data": { + "uuid": "云原生-5-166", + "seg": [ + [ + [ + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod": { + "data": { + "uuid": "云原生-5-167", + "seg": [ + [ + [ + "pod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service": { + "data": { + "uuid": "云原生-5-168", + "seg": [ + [ + [ + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Deployment": { + "data": { + "uuid": "云原生-5-169", + "seg": [ + [ + [ + "deployment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ReplicaSet": { + "data": { + "uuid": "云原生-5-170", + "seg": [ + [ + [ + "replicaset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络": { + "data": { + "uuid": "云原生-5-171", + "seg": [ + [ + [ + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ingress": { + "data": { + "uuid": "云原生-5-172", + "seg": [ + [ + [ + "ingress" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "交互工具": { + "data": { + "uuid": "云原生-5-173", + "seg": [ + [ + [ + "交互", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-61", + "seg": [ + [ + [ + "kubernetes", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建Kubernetes环境": { + "children": [ + { + "启动Vagrant Box": { + "data": { + "uuid": "云原生-5-174", + "seg": [ + [ + [ + "启动", + "vagrant", + "box" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改默认域": { + "data": { + "uuid": "云原生-5-175", + "seg": [ + [ + [ + "修改", + "默认", + "域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-62", + "seg": [ + [ + [ + "构建", + "kubernetes", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-19", + "seg": [ + [ + [ + "容器", + "技术", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的落地与展望": { + "children": [ + { + "Serverless的落地": { + "data": { + "uuid": "云原生-4-63", + "seg": [ + [ + [ + "serverless", + "落地" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless平台建设": { + "children": [ + { + "公有云": { + "data": { + "uuid": "云原生-5-176", + "seg": [ + [ + [ + "公有", + "云" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "私有云": { + "data": { + "uuid": "云原生-5-177", + "seg": [ + [ + [ + "私有", + "云" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78933061" + ] + } + } + } + } + }, + { + "混合云": { + "data": { + "uuid": "云原生-5-178", + "seg": [ + [ + [ + "混合", + "云" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-64", + "seg": [ + [ + [ + "serverless", + "平台", + "建设" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless应用架构转型": { + "children": [ + { + "开发模式": { + "data": { + "uuid": "云原生-5-179", + "seg": [ + [ + [ + "开发", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设计原则": { + "data": { + "uuid": "云原生-5-180", + "seg": [ + [ + [ + "设计", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迁移与重构": { + "data": { + "uuid": "云原生-5-181", + "seg": [ + [ + [ + "迁移" + ], + [ + "重构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-65", + "seg": [ + [ + [ + "serverless", + "架构", + "转型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的未来": { + "children": [ + { + "建立行业规范": { + "data": { + "uuid": "云原生-5-182", + "seg": [ + [ + [ + "建立", + "行业", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完善工具链": { + "data": { + "uuid": "云原生-5-183", + "seg": [ + [ + [ + "完善", + "工具", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-66", + "seg": [ + [ + [ + "serverless", + "未来" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-20", + "seg": [ + [ + [ + "serverless", + "落地" + ], + [ + "展望" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初识Serverless": { + "children": [ + { + "优势与劣势": { + "data": { + "uuid": "云原生-4-67", + "seg": [ + [ + [ + "优势" + ], + [ + "劣势" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "影响力和价值": { + "data": { + "uuid": "云原生-4-68", + "seg": [ + [ + [ + "影响力" + ], + [ + "价值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "典型应用场景": { + "children": [ + { + "视频转码服务": { + "data": { + "uuid": "云原生-5-184", + "seg": [ + [ + [ + "视频", + "转码", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据ETL处理服务": { + "data": { + "uuid": "云原生-5-185", + "seg": [ + [ + [ + "数据", + "etl", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网站(服务)后端": { + "data": { + "uuid": "云原生-5-186", + "seg": [ + [ + [ + "网站", + "服务", + "端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "人工智能推理预测": { + "data": { + "uuid": "云原生-5-187", + "seg": [ + [ + [ + "人工智能", + "推理", + "预测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "物联网相关应用": { + "data": { + "uuid": "云原生-5-188", + "seg": [ + [ + [ + "联网", + "相关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-69", + "seg": [ + [ + [ + "典型", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-21", + "seg": [ + [ + [ + "初识", + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless入门": { + "children": [ + { + "Serverless架构规范": { + "children": [ + { + "函数相关规范": { + "data": { + "uuid": "云原生-5-189", + "seg": [ + [ + [ + "函数", + "相关", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "工作流程": { + "data": { + "uuid": "云原生-5-190", + "seg": [ + [ + [ + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-70", + "seg": [ + [ + [ + "serverless", + "架构", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事件与规范": { + "children": [ + { + "相关术语": { + "data": { + "uuid": "云原生-5-191", + "seg": [ + [ + [ + "相关", + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上下文属性": { + "data": { + "uuid": "云原生-5-192", + "seg": [ + [ + [ + "上下文", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-71", + "seg": [ + [ + [ + "事件" + ], + [ + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "工业化产品": { + "children": [ + { + "Google Cloud Function": { + "data": { + "uuid": "云原生-5-193", + "seg": [ + [ + [ + "google", + "cloud", + "function" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "7549787", + "7044471", + "7222501", + "7026193", + "17610451", + "7826023", + "5822149", + "117016520", + "5482854", + "46988621" + ] + } + } + } + } + }, + { + "腾讯云SCF": { + "data": { + "uuid": "云原生-5-194", + "seg": [ + [ + [ + "腾讯", + "云", + "scf" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89160986", + "78949251", + "107925405" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-72", + "seg": [ + [ + [ + "工业化", + "产品" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发运维工具": { + "children": [ + { + "CLI命令行工具": { + "data": { + "uuid": "云原生-5-195", + "seg": [ + [ + [ + "cli", + "命令行", + "工具" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115752171" + ] + } + } + } + } + }, + { + "插件": { + "data": { + "uuid": "云原生-5-196", + "seg": [ + [ + [ + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-73", + "seg": [ + [ + [ + "开发", + "运维", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-22", + "seg": [ + [ + [ + "serverless", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web与监控告警场景实践": { + "children": [ + { + "Web后端与应用服务端": { + "children": [ + { + "上传图片加水印": { + "data": { + "uuid": "云原生-5-197", + "seg": [ + [ + [ + "上传", + "图片", + "加水", + "印" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用IP地址查天气并在小程序中应用": { + "data": { + "uuid": "云原生-5-198", + "seg": [ + [ + [ + "ip地址", + "查", + "天气", + "程序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "简易用户反馈功能与快应用实践": { + "data": { + "uuid": "云原生-5-199", + "seg": [ + [ + [ + "简易", + "用户", + "反馈", + "功能" + ], + [ + "实践" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-74", + "seg": [ + [ + [ + "web", + "后端" + ], + [ + "服务端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-23", + "seg": [ + [ + [ + "web" + ], + [ + "监控", + "告警", + "场景", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大数据与人工智能场景实践": { + "children": [ + { + "大数据技术之MapReduce的简单实现": { + "data": { + "uuid": "云原生-4-75", + "seg": [ + [ + [ + "数据", + "技术", + "mapreduce" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81133090", + "7091686", + "112360378", + "98833901", + "109241829" + ] + } + } + } + } + }, + { + "人工智能领域的实践": { + "children": [ + { + "自然语言处理为你的网站赋能": { + "data": { + "uuid": "云原生-5-200", + "seg": [ + [ + [ + "自然语言", + "网站", + "赋能" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "智能客服与微信小程序": { + "data": { + "uuid": "云原生-5-201", + "seg": [ + [ + [ + "智能", + "客服" + ], + [ + "微信", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87971576" + ] + } + } + } + } + }, + { + "简单的车牌识别系统": { + "data": { + "uuid": "云原生-5-202", + "seg": [ + [ + [ + "车牌", + "识别系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "视觉:对象检测系统": { + "data": { + "uuid": "云原生-5-203", + "seg": [ + [ + [ + "视觉" + ] + ], + [ + [ + "对象", + "检测", + "系统" + ] + ] + ], + "level": "3", + "related_data": { + "blog": { + "data_id": [ + "8782369" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-76", + "seg": [ + [ + [ + "人工智能", + "领域", + "实践" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79526474" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-24", + "seg": [ + [ + [ + "数据" + ], + [ + "人工智能", + "场景", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "物联网和其他场景实践": { + "children": [ + { + "物联网相关—定制智能音箱小工具": { + "data": { + "uuid": "云原生-4-77", + "seg": [ + [ + [ + "联网", + "相关", + "定制", + "智能", + "音箱", + "工具" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88743945" + ] + } + } + } + } + }, + { + "其他场景实践": { + "children": [ + { + "OJ判题机/小程序在线编程系统实现": { + "data": { + "uuid": "云原生-5-204", + "seg": [ + [ + [ + "oj", + "判题", + "机", + "程序", + "编程", + "系统" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51516329" + ] + } + } + } + } + }, + { + "微信公众号机器人": { + "data": { + "uuid": "云原生-5-205", + "seg": [ + [ + [ + "微信", + "公众", + "机器人" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-78", + "seg": [ + [ + [ + "场景", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-25", + "seg": [ + [ + [ + "联网" + ], + [ + "场景", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless范式": { + "children": [ + { + "Serverless架构不仅仅是实时的": { + "data": { + "uuid": "云原生-4-79", + "seg": [ + [ + [ + "serverless", + "架构", + "实时" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的优缺点": { + "data": { + "uuid": "云原生-4-80", + "seg": [ + [ + [ + "serverless", + "优缺点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-26", + "seg": [ + [ + [ + "serverless", + "范式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在AWS中构建Serverless应用程序": { + "children": [ + { + "AWS Lambda的触发器": { + "data": { + "uuid": "云原生-4-81", + "seg": [ + [ + [ + "aws", + "lambda", + "触发器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数即容器": { + "data": { + "uuid": "云原生-4-82", + "seg": [ + [ + [ + "函数", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置函数": { + "data": { + "uuid": "云原生-4-83", + "seg": [ + [ + [ + "配置", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Lambda函数的版本控制": { + "data": { + "uuid": "云原生-4-84", + "seg": [ + [ + [ + "lambda", + "函数", + "版本控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建部署包": { + "data": { + "uuid": "云原生-4-85", + "seg": [ + [ + [ + "创建", + "部署", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-27", + "seg": [ + [ + [ + "aws", + "构建", + "serverless", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置Serverless架构": { + "children": [ + { + "S3触发器": { + "data": { + "uuid": "云原生-4-86", + "seg": [ + [ + [ + "s3", + "触发器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SNS触发器": { + "data": { + "uuid": "云原生-4-87", + "seg": [ + [ + [ + "sns", + "触发器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SQS触发器": { + "data": { + "uuid": "云原生-4-88", + "seg": [ + [ + [ + "sqs", + "触发器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CloudWatch触发器": { + "data": { + "uuid": "云原生-4-89", + "seg": [ + [ + [ + "cloudwatch", + "触发器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-28", + "seg": [ + [ + [ + "设置", + "serverless", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Serverless API": { + "children": [ + { + "设置集成": { + "data": { + "uuid": "云原生-4-90", + "seg": [ + [ + [ + "设置", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为API部署Lambda函数": { + "data": { + "uuid": "云原生-4-91", + "seg": [ + [ + [ + "api", + "部署", + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理身份验证与用户控制": { + "data": { + "uuid": "云原生-4-92", + "seg": [ + [ + [ + "身份验证" + ], + [ + "用户", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-29", + "seg": [ + [ + [ + "部署", + "serverless", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扩展Serverless架构": { + "children": [ + { + "第三方编排工具": { + "data": { + "uuid": "云原生-4-93", + "seg": [ + [ + [ + "编排", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务器的创建和终止": { + "data": { + "uuid": "云原生-4-94", + "seg": [ + [ + [ + "服务器", + "创建" + ], + [ + "终止" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扩展的难点及解决方案": { + "data": { + "uuid": "云原生-4-95", + "seg": [ + [ + [ + "扩展", + "难点" + ], + [ + "解决方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-30", + "seg": [ + [ + [ + "扩展", + "serverless", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AWS Lambda的安全性": { + "children": [ + { + "了解AWS VPC": { + "data": { + "uuid": "云原生-4-96", + "seg": [ + [ + [ + "aws", + "vpc" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86538525", + "80900579", + "47724029", + "115396018", + "115298732", + "51464808" + ] + } + } + } + } + }, + { + "了解VPC中的子网": { + "data": { + "uuid": "云原生-4-97", + "seg": [ + [ + [ + "vpc", + "子网" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在私有子网内保护Lambda": { + "data": { + "uuid": "云原生-4-98", + "seg": [ + [ + [ + "私有", + "子网", + "保护", + "lambda" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Lambda函数的访问控制": { + "data": { + "uuid": "云原生-4-99", + "seg": [ + [ + [ + "lambda", + "函数", + "访问控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Lambda中使用STS执行安全会话": { + "data": { + "uuid": "云原生-4-100", + "seg": [ + [ + [ + "lambda", + "sts", + "执行", + "话" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-31", + "seg": [ + [ + [ + "aws", + "lambda", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用SAM部署Lambda函数": { + "children": [ + { + "SAM简介": { + "data": { + "uuid": "云原生-4-101", + "seg": [ + [ + [ + "sam", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将CloudFormation用于Serverless服务": { + "data": { + "uuid": "云原生-4-102", + "seg": [ + [ + [ + "cloudformation", + "用于", + "serverless", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用SAM进行部署": { + "data": { + "uuid": "云原生-4-103", + "seg": [ + [ + [ + "sam", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "了解SAM中的安全性": { + "data": { + "uuid": "云原生-4-104", + "seg": [ + [ + [ + "sam", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-32", + "seg": [ + [ + [ + "sam", + "部署", + "lambda", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微软Azure Functions简介": { + "children": [ + { + "微软Azure Functions简介": { + "data": { + "uuid": "云原生-4-105", + "seg": [ + [ + [ + "微软", + "azure", + "functions", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建你的第一个Azure Function": { + "data": { + "uuid": "云原生-4-106", + "seg": [ + [ + [ + "创建", + "azure", + "function" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "了解触发器": { + "data": { + "uuid": "云原生-4-107", + "seg": [ + [ + [ + "触发器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写微软Azure Functions的最佳实践": { + "data": { + "uuid": "云原生-4-108", + "seg": [ + [ + [ + "编写", + "微软", + "azure", + "functions", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-33", + "seg": [ + [ + [ + "微软", + "azure", + "functions", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-0", + "seg": [ + [ + [ + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务": { + "children": [ + { + "Service Mesh": { + "children": [ + { + "Istio": { + "data": { + "uuid": "云原生-4-109", + "seg": [ + [ + [ + "istio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linkerd": { + "data": { + "uuid": "云原生-4-110", + "seg": [ + [ + [ + "linkerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Conduit": { + "data": { + "uuid": "云原生-4-111", + "seg": [ + [ + [ + "conduit" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service Mesh的现状": { + "data": { + "uuid": "云原生-4-112", + "seg": [ + [ + [ + "service", + "mesh", + "现状" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio架构分析": { + "data": { + "uuid": "云原生-4-113", + "seg": [ + [ + [ + "istio", + "架构", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-34", + "seg": [ + [ + [ + "service", + "mesh" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Framework": { + "children": [ + { + "Dubbo": { + "data": { + "uuid": "云原生-4-114", + "seg": [ + [ + [ + "dubbo" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud": { + "children": [ + { + "简介": { + "data": { + "uuid": "云原生-5-206", + "seg": [ + [ + [ + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用组件": { + "data": { + "uuid": "云原生-5-207", + "seg": [ + [ + [ + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-115", + "seg": [ + [ + [ + "spring", + "cloud" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tars": { + "data": { + "uuid": "云原生-4-116", + "seg": [ + [ + [ + "tars" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-35", + "seg": [ + [ + [ + "framework" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78925282", + "100051535" + ] + } + } + } + } + }, + { + "微服务简介": { + "children": [ + { + "单体架构及其存在的不足": { + "children": [ + { + "单体架构简介": { + "data": { + "uuid": "云原生-5-208", + "seg": [ + [ + [ + "单体", + "架构", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单体架构存在的不足": { + "data": { + "uuid": "云原生-5-209", + "seg": [ + [ + [ + "单体", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单体架构使用服务器集群及存在的不足": { + "data": { + "uuid": "云原生-5-210", + "seg": [ + [ + [ + "单体", + "架构", + "服务器", + "集群" + ], + [] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89292631", + "84345442" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-117", + "seg": [ + [ + [ + "单体", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务": { + "children": [ + { + "什么是微服务": { + "data": { + "uuid": "云原生-5-211", + "seg": [ + [ + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "74420720", + "118449828", + "79270625", + "103509855", + "81284292", + "89879370", + "112240377", + "81016500", + "113605650", + "92982266" + ] + } + } + } + } + }, + { + "微服务的优势": { + "data": { + "uuid": "云原生-5-212", + "seg": [ + [ + [ + "微", + "服务", + "优势" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-118", + "seg": [ + [ + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务的不足": { + "children": [ + { + "微服务的复杂度": { + "data": { + "uuid": "云原生-5-213", + "seg": [ + [ + [ + "微", + "服务", + "复杂度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式事务": { + "data": { + "uuid": "云原生-5-214", + "seg": [ + [ + [ + "分布式", + "事务" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100340071", + "70195154", + "100519659", + "108934133" + ] + } + } + } + } + }, + { + "服务的划分": { + "data": { + "uuid": "云原生-5-215", + "seg": [ + [ + [ + "服务", + "划分" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务的部署": { + "data": { + "uuid": "云原生-5-216", + "seg": [ + [ + [ + "服务", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-119", + "seg": [ + [ + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务和SOA的关系": { + "data": { + "uuid": "云原生-4-120", + "seg": [ + [ + [ + "微", + "服务" + ], + [ + "soa", + "关系" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "118574712" + ] + } + } + } + } + }, + { + "微服务的设计原则": { + "data": { + "uuid": "云原生-4-121", + "seg": [ + [ + [ + "微", + "服务", + "设计", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-36", + "seg": [ + [ + [ + "微", + "服务", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud简介": { + "children": [ + { + "微服务应该具备的功能": { + "children": [ + { + "服务的注册与发现": { + "data": { + "uuid": "云原生-5-217", + "seg": [ + [ + [ + "服务", + "注册" + ], + [] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82257549", + "72891766", + "80691179", + "81913874", + "103747236", + "53559160", + "98069465" + ] + } + } + } + } + }, + { + "服务的负载均衡": { + "data": { + "uuid": "云原生-5-218", + "seg": [ + [ + [ + "服务", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "85012006", + "51066562", + "52167226" + ] + } + } + } + } + }, + { + "服务的容错": { + "data": { + "uuid": "云原生-5-219", + "seg": [ + [ + [ + "服务", + "容错" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务网关": { + "children": [ + { + "服务网关的实现原理": { + "data": { + "uuid": "云原生-6-70", + "seg": [ + [ + [ + "服务", + "网关", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "96330149" + ] + } + } + } + } + }, + { + "断言工厂": { + "children": [ + { + "After路由断言工厂": { + "data": { + "uuid": "云原生-7-4", + "seg": [ + [ + [ + "after", + "路由", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Header断言工厂": { + "data": { + "uuid": "云原生-7-5", + "seg": [ + [ + [ + "header", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cookie路由断言工厂": { + "data": { + "uuid": "云原生-7-6", + "seg": [ + [ + [ + "cookie", + "路由", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Host路由断言工厂": { + "data": { + "uuid": "云原生-7-7", + "seg": [ + [ + [ + "host", + "路由", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82191023" + ] + } + } + } + } + }, + { + "Method路由断言工厂": { + "data": { + "uuid": "云原生-7-8", + "seg": [ + [ + [ + "method", + "路由", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Path路由断言工厂": { + "data": { + "uuid": "云原生-7-9", + "seg": [ + [ + [ + "path", + "路由", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Query路由断言工厂": { + "data": { + "uuid": "云原生-7-10", + "seg": [ + [ + [ + "query", + "路由", + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-71", + "seg": [ + [ + [ + "断言", + "工厂" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "过滤器": { + "children": [ + { + "过滤器的作用": { + "data": { + "uuid": "云原生-7-11", + "seg": [ + [ + [ + "过滤器", + "作用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "过滤器的生命周期": { + "data": { + "uuid": "云原生-7-12", + "seg": [ + [ + [ + "过滤器", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网关过滤器": { + "data": { + "uuid": "云原生-7-13", + "seg": [ + [ + [ + "网关", + "过滤器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "全局过滤器": { + "data": { + "uuid": "云原生-7-14", + "seg": [ + [ + [ + "全局", + "过滤器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-72", + "seg": [ + [ + [ + "过滤器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限流": { + "children": [ + { + "常见的限流算法": { + "data": { + "uuid": "云原生-7-15", + "seg": [ + [ + [ + "常见", + "限流", + "算法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务网关的限流": { + "data": { + "uuid": "云原生-7-16", + "seg": [ + [ + [ + "服务", + "网关", + "限流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "普通方式": { + "data": { + "uuid": "云原生-7-17", + "seg": [ + [ + [ + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "条件方式": { + "data": { + "uuid": "云原生-7-18", + "seg": [ + [ + [ + "条件", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-73", + "seg": [ + [ + [ + "限流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务化": { + "children": [ + { + "工程介绍": { + "data": { + "uuid": "云原生-7-19", + "seg": [ + [ + [ + "工程", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "service-gateway工程详细介绍": { + "data": { + "uuid": "云原生-7-20", + "seg": [ + [ + [ + "service", + "gateway", + "工程", + "详细", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-74", + "seg": [ + [ + [ + "服务化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-220", + "seg": [ + [ + [ + "服务", + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务配置的统一管理": { + "data": { + "uuid": "云原生-5-221", + "seg": [ + [ + [ + "服务", + "配置", + "统一", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务链路追踪": { + "data": { + "uuid": "云原生-5-222", + "seg": [ + [ + [ + "服务", + "链路", + "追踪" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-122", + "seg": [ + [ + [ + "微", + "服务", + "具备", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo简介": { + "data": { + "uuid": "云原生-4-123", + "seg": [ + [ + [ + "dubbo", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes简介": { + "data": { + "uuid": "云原生-4-124", + "seg": [ + [ + [ + "kubernetes", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Could与Kubernetes比较": { + "data": { + "uuid": "云原生-4-125", + "seg": [ + [ + [ + "spring", + "could" + ], + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-37", + "seg": [ + [ + [ + "spring", + "cloud", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建微服务的准备": { + "children": [ + { + "JDK的安装": { + "children": [ + { + "JDK的下载和安装": { + "data": { + "uuid": "云原生-5-223", + "seg": [ + [ + [ + "jdk", + "下载" + ], + [ + "安装" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52752625", + "78943147", + "86110808", + "7275460", + "50203133", + "109596586", + "82015155", + "7946254", + "100066929", + "53147604" + ] + } + } + } + } + }, + { + "环境变量的配置": { + "data": { + "uuid": "云原生-5-224", + "seg": [ + [ + [ + "环境变量", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-126", + "seg": [ + [ + [ + "jdk", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IDEA的安装": { + "children": [ + { + "IDEA的下载": { + "data": { + "uuid": "云原生-5-225", + "seg": [ + [ + [ + "idea", + "下载" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100287663", + "97375938", + "79035374", + "80550378", + "88141444", + "88875784", + "103781940", + "82797236", + "6685739", + "116518773" + ] + } + } + } + } + }, + { + "用IDEA创建一个Spring Boot工程": { + "data": { + "uuid": "云原生-5-226", + "seg": [ + [ + [ + "idea", + "创建", + "spring", + "boot", + "工程" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109321248", + "54376855" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-127", + "seg": [ + [ + [ + "idea", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建工具Maven的使用": { + "children": [ + { + "Maven简介": { + "data": { + "uuid": "云原生-5-227", + "seg": [ + [ + [ + "maven", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Maven的安装": { + "data": { + "uuid": "云原生-5-228", + "seg": [ + [ + [ + "maven", + "安装" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78720976", + "79080601" + ] + } + } + } + } + }, + { + "Maven的核心概念": { + "data": { + "uuid": "云原生-5-229", + "seg": [ + [ + [ + "maven", + "核心", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写Pom文件": { + "data": { + "uuid": "云原生-5-230", + "seg": [ + [ + [ + "编写", + "pom", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用的Maven命令": { + "data": { + "uuid": "云原生-5-231", + "seg": [ + [ + [ + "maven", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-128", + "seg": [ + [ + [ + "构建", + "工具", + "maven" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-38", + "seg": [ + [ + [ + "构建", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发框架Spring Boot": { + "children": [ + { + "Spring Boot简介": { + "children": [ + { + "Spring Boot的特点": { + "data": { + "uuid": "云原生-5-232", + "seg": [ + [ + [ + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50278205", + "50281151", + "115591996", + "111519711", + "108698616", + "77592433", + "115448516", + "77249029", + "50520958", + "78789087" + ] + } + } + } + } + }, + { + "Spring Boot的优点": { + "data": { + "uuid": "云原生-5-233", + "seg": [ + [ + [ + "spring", + "boot", + "优点" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "76407830" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-129", + "seg": [ + [ + [ + "spring", + "boot", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用IDEA构建Spring Boot工程": { + "children": [ + { + "在Spring Boot工程中构建Web程序": { + "data": { + "uuid": "云原生-5-234", + "seg": [ + [ + [ + "spring", + "boot", + "工程", + "构建", + "web", + "程序" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "51923017", + "80993516", + "79025689", + "107577563", + "114999207", + "107650296", + "70341651", + "103550083" + ] + } + } + } + } + }, + { + "Spring Boot的测试": { + "data": { + "uuid": "云原生-5-235", + "seg": [ + [ + [ + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108273295", + "103015306", + "108445846", + "113773714", + "70598903", + "98478625", + "113834293", + "108419455", + "109083325", + "100192558" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-130", + "seg": [ + [ + [ + "idea", + "构建", + "spring", + "boot", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot配置文件详解": { + "children": [ + { + "自定义属性": { + "data": { + "uuid": "云原生-5-236", + "seg": [ + [ + [ + "自定义", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将配置文件的属性赋给实体类": { + "data": { + "uuid": "云原生-5-237", + "seg": [ + [ + [ + "配置文件", + "属性", + "赋给", + "实体类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义配置文件": { + "data": { + "uuid": "云原生-5-238", + "seg": [ + [ + [ + "自定义", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多个环境的配置文件": { + "data": { + "uuid": "云原生-5-239", + "seg": [ + [ + [ + "环境", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-131", + "seg": [ + [ + [ + "spring", + "boot", + "配置文件", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行状态监控Actuator": { + "children": [ + { + "查看运行程序的健康状态": { + "data": { + "uuid": "云原生-5-240", + "seg": [ + [ + [ + "查看", + "运行", + "程序", + "健康", + "状态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看运行程序的Bean": { + "data": { + "uuid": "云原生-5-241", + "seg": [ + [ + [ + "查看", + "运行", + "程序", + "bean" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Actuator关闭应用程序": { + "data": { + "uuid": "云原生-5-242", + "seg": [ + [ + [ + "actuator", + "关闭", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用shell连接Actuator": { + "data": { + "uuid": "云原生-5-243", + "seg": [ + [ + [ + "shell", + "连接", + "actuator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-132", + "seg": [ + [ + [ + "运行", + "状态", + "监控", + "actuator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot整合JPA": { + "data": { + "uuid": "云原生-4-133", + "seg": [ + [ + [ + "spring", + "boot", + "整合", + "jpa" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6253232" + ] + } + } + } + } + }, + { + "Spring Boot整合Redis": { + "children": [ + { + "Redis简介": { + "data": { + "uuid": "云原生-5-244", + "seg": [ + [ + [ + "redis", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis的安装": { + "data": { + "uuid": "云原生-5-245", + "seg": [ + [ + [ + "redis", + "安装" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89403136", + "78901124", + "80571389", + "98097708", + "87270959", + "100172640", + "80694560", + "88323561", + "109238083", + "109236398" + ] + } + } + } + } + }, + { + "在Spring Boot中使用Redis": { + "data": { + "uuid": "云原生-5-246", + "seg": [ + [ + [ + "spring", + "boot", + "redis" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "107064160", + "107025391", + "109038461", + "101351944", + "80308771", + "107300987", + "114260521", + "107560607", + "109388429", + "107590598" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-134", + "seg": [ + [ + [ + "spring", + "boot", + "整合", + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot整合Swagger2,搭建Restful API在线文档": { + "data": { + "uuid": "云原生-4-135", + "seg": [ + [ + [ + "spring", + "boot", + "整合", + "swagger2", + "搭建", + "restful", + "api", + "文档" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-39", + "seg": [ + [ + [ + "开发", + "框架", + "spring", + "boot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "负载均衡Ribbon": { + "children": [ + { + "RestTemplate简介": { + "data": { + "uuid": "云原生-4-136", + "seg": [ + [ + [ + "resttemplate", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "97281910" + ] + } + } + } + } + }, + { + "Ribbon简介": { + "data": { + "uuid": "云原生-4-137", + "seg": [ + [ + [ + "ribbon", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78045738" + ] + } + } + } + } + }, + { + "使用RestTemplate和Ribbon来消费服务": { + "data": { + "uuid": "云原生-4-138", + "seg": [ + [ + [ + "resttemplate" + ], + [ + "ribbon", + "消费", + "服务" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109005227", + "90025305", + "85246193", + "77206665", + "102891148", + "82905372", + "79820735", + "109050872", + "77336290", + "82148906" + ] + } + } + } + } + }, + { + "LoadBalancerClient简介": { + "data": { + "uuid": "云原生-4-139", + "seg": [ + [ + [ + "loadbalancerclient", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "源码解析Ribbon": { + "data": { + "uuid": "云原生-4-140", + "seg": [ + [ + [ + "解析", + "ribbon" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-40", + "seg": [ + [ + [ + "负载", + "均衡", + "ribbon" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明式调用Feign": { + "children": [ + { + "写一个Feign客户端": { + "data": { + "uuid": "云原生-4-141", + "seg": [ + [ + [ + "写", + "feign", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FeignClient详解": { + "data": { + "uuid": "云原生-4-142", + "seg": [ + [ + [ + "feignclient", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "FeignClient的配置": { + "data": { + "uuid": "云原生-4-143", + "seg": [ + [ + [ + "feignclient", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从源码的角度讲解Feign的工作原理": { + "data": { + "uuid": "云原生-4-144", + "seg": [ + [ + [ + "角度", + "讲解", + "feign", + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Feign中使用HttpClient和OkHttp": { + "data": { + "uuid": "云原生-4-145", + "seg": [ + [ + [ + "feign", + "httpclient" + ], + [ + "okhttp" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Feign是如何实现负载均衡的": { + "data": { + "uuid": "云原生-4-146", + "seg": [ + [ + [ + "feign", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51470051", + "92638667", + "103293139", + "84258559", + "81363038", + "80785973", + "108629490", + "88124773" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-41", + "seg": [ + [ + [ + "声明", + "调用", + "feign" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "熔断器Hystrix": { + "children": [ + { + "Hystrix简介": { + "data": { + "uuid": "云原生-4-147", + "seg": [ + [ + [ + "hystrix", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hystrix的设计原则": { + "data": { + "uuid": "云原生-4-148", + "seg": [ + [ + [ + "hystrix", + "设计", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hystrix的工作机制": { + "data": { + "uuid": "云原生-4-149", + "seg": [ + [ + [ + "hystrix", + "工作", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Feign上使用熔断器": { + "data": { + "uuid": "云原生-4-150", + "seg": [ + [ + [ + "feign", + "熔断器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Hystrix Dashboard监控熔断器的状态": { + "children": [ + { + "在RestTemplate中使用Hystrix Dashboard": { + "data": { + "uuid": "云原生-5-247", + "seg": [ + [ + [ + "resttemplate", + "hystrix", + "dashboard" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Feign中使用Hystrix Dashboard": { + "data": { + "uuid": "云原生-5-248", + "seg": [ + [ + [ + "feign", + "hystrix", + "dashboard" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87370201", + "84288994", + "85269153", + "78533727", + "92609776", + "96844651", + "89300789", + "117396341", + "114236813", + "84926330" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-151", + "seg": [ + [ + [ + "hystrix", + "dashboard", + "监控", + "熔断器", + "状态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Turbine聚合监控": { + "data": { + "uuid": "云原生-4-152", + "seg": [ + [ + [ + "turbine", + "聚合", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-42", + "seg": [ + [ + [ + "熔断器", + "hystrix" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "路由网关Spring Cloud Zuul": { + "children": [ + { + "Zuul的工作原理": { + "data": { + "uuid": "云原生-4-153", + "seg": [ + [ + [ + "zuul", + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "92806596", + "80590364", + "79698409" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-43", + "seg": [ + [ + [ + "路由", + "网关", + "spring", + "cloud", + "zuul" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置中心Spring Cloud Config": { + "children": [ + { + "Config Server从本地读取配置文件": { + "children": [ + { + "构建Config Server": { + "data": { + "uuid": "云原生-5-249", + "seg": [ + [ + [ + "构建", + "config", + "server" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "1786182", + "82182309", + "75332005", + "19557807", + "80734508", + "83993937", + "7183503", + "69055536", + "76598413", + "74516505" + ] + } + } + } + } + }, + { + "构建Config Client": { + "data": { + "uuid": "云原生-5-250", + "seg": [ + [ + [ + "构建", + "config", + "client" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "91175252", + "88578076", + "88200110", + "99826864", + "89840918", + "84455645", + "109707615", + "76921090" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-154", + "seg": [ + [ + [ + "config", + "server", + "读取", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Config Server从远程Git仓库读取配置文件": { + "data": { + "uuid": "云原生-4-155", + "seg": [ + [ + [ + "config", + "server", + "远程", + "git", + "仓库", + "读取", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52996911", + "79177871", + "88944357", + "114106272" + ] + } + } + } + } + }, + { + "构建高可用的Config Server": { + "children": [ + { + "构建Eureka Server": { + "data": { + "uuid": "云原生-5-251", + "seg": [ + [ + [ + "构建", + "eureka", + "server" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110062280", + "102668158", + "86756898", + "95909012", + "90752257", + "75969014", + "84872312", + "78184793", + "80704853", + "95374910" + ] + } + } + } + } + }, + { + "改造Config Server": { + "data": { + "uuid": "云原生-5-252", + "seg": [ + [ + [ + "改造", + "config", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "改造Config Client": { + "data": { + "uuid": "云原生-5-253", + "seg": [ + [ + [ + "改造", + "config", + "client" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-156", + "seg": [ + [ + [ + "构建", + "高", + "可用", + "config", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring Cloud Bus刷新配置": { + "data": { + "uuid": "云原生-4-157", + "seg": [ + [ + [ + "spring", + "cloud", + "bus", + "刷新", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将配置存储在MySQL数据库中": { + "children": [ + { + "改造config-server工程": { + "data": { + "uuid": "云原生-5-254", + "seg": [ + [ + [ + "改造", + "config", + "server", + "工程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "初始化数据库": { + "data": { + "uuid": "云原生-5-255", + "seg": [ + [ + [ + "初始化", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "28587051" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-158", + "seg": [ + [ + [ + "配置", + "存储", + "mysql", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-44", + "seg": [ + [ + [ + "配置", + "中心", + "spring", + "cloud", + "config" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务链路追踪Spring Cloud Sleuth": { + "children": [ + { + "基本术语": { + "data": { + "uuid": "云原生-4-159", + "seg": [ + [ + [ + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例讲解": { + "children": [ + { + "启动Zipkin Server": { + "data": { + "uuid": "云原生-5-256", + "seg": [ + [ + [ + "启动", + "zipkin", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建服务提供者": { + "data": { + "uuid": "云原生-5-257", + "seg": [ + [ + [ + "构建", + "服务提供者" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建服务消费者": { + "data": { + "uuid": "云原生-5-258", + "seg": [ + [ + [ + "构建", + "服务", + "消费者" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-160", + "seg": [ + [ + [ + "案例", + "讲解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在链路数据中添加自定义数据": { + "data": { + "uuid": "云原生-4-161", + "seg": [ + [ + [ + "链路", + "数据", + "添加", + "定义数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用RabbitMQ传输链路数据": { + "data": { + "uuid": "云原生-4-162", + "seg": [ + [ + [ + "rabbitmq", + "传输", + "链路", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在MySQL数据库中存储链路数据": { + "data": { + "uuid": "云原生-4-163", + "seg": [ + [ + [ + "mysql", + "数据库", + "存储", + "链路", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在ElasticSearch中存储链路数据": { + "data": { + "uuid": "云原生-4-164", + "seg": [ + [ + [ + "elasticsearch", + "存储", + "链路", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Kibana展示链路数据": { + "data": { + "uuid": "云原生-4-165", + "seg": [ + [ + [ + "kibana", + "展示", + "链路", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-45", + "seg": [ + [ + [ + "服务", + "链路", + "追踪", + "spring", + "cloud", + "sleuth" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务监控Spring Boot Admin": { + "children": [ + { + "使用Spring Boot Admin监控Spring Boot应用程序": { + "children": [ + { + "创建Spring Boot Admin Server": { + "data": { + "uuid": "云原生-5-259", + "seg": [ + [ + [ + "创建", + "spring", + "boot", + "admin", + "server" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "创建Spring Boot Admin Client": { + "data": { + "uuid": "云原生-5-260", + "seg": [ + [ + [ + "创建", + "spring", + "boot", + "admin", + "client" + ] + ] + ], + "level": "3", + "related_data": { + "blog": { + "data_id": [ + "112030573", + "79246665", + "112427297", + "83058455", + "80698312", + "105715005", + "110938662", + "80518266", + "116234700", + "110204462" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-166", + "seg": [ + [ + [ + "spring", + "boot", + "admin", + "监控", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring Boot Admin监控Spring Cloud微服务": { + "children": [ + { + "构建Admin Server": { + "data": { + "uuid": "云原生-5-261", + "seg": [ + [ + [ + "构建", + "admin", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建Admin Client": { + "data": { + "uuid": "云原生-5-262", + "seg": [ + [ + [ + "构建", + "admin", + "client" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52997286", + "80753491", + "96995564", + "82702380" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-167", + "seg": [ + [ + [ + "spring", + "boot", + "admin", + "监控", + "cloud", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Spring Boot Admin中添加Security和Mail组件": { + "children": [ + { + "Spring Boot Admin集成Security组件": { + "data": { + "uuid": "云原生-5-263", + "seg": [ + [ + [ + "spring", + "boot", + "admin", + "集成", + "security", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Admin集成Mail组件": { + "data": { + "uuid": "云原生-5-264", + "seg": [ + [ + [ + "spring", + "boot", + "admin", + "集成", + "mail", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113934858" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-168", + "seg": [ + [ + [ + "spring", + "boot", + "admin", + "添加", + "security" + ], + [ + "mail", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-46", + "seg": [ + [ + [ + "微", + "服务", + "监控", + "spring", + "boot", + "admin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Security详解": { + "children": [ + { + "Spring Security简介": { + "children": [ + { + "什么是Spring Security": { + "data": { + "uuid": "云原生-5-265", + "seg": [ + [ + [ + "spring", + "security" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103508579", + "81082453", + "52108369", + "70175198", + "78604376", + "109528425", + "79748422", + "76898524", + "77046453", + "76977239" + ] + } + } + } + } + }, + { + "Spring Security提供的安全模块": { + "data": { + "uuid": "云原生-5-266", + "seg": [ + [ + [ + "spring", + "security", + "提供", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-169", + "seg": [ + [ + [ + "spring", + "security", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Security与Spring Security的关系": { + "data": { + "uuid": "云原生-4-170", + "seg": [ + [ + [ + "spring", + "boot", + "security" + ], + [ + "spring", + "security", + "关系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Security案例详解": { + "children": [ + { + "构建Spring Boot Security工程": { + "data": { + "uuid": "云原生-5-267", + "seg": [ + [ + [ + "构建", + "spring", + "boot", + "security", + "工程" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "54319508", + "103682289", + "79975975", + "89048257", + "85015868", + "112759382", + "80918842", + "78241724", + "104180112", + "111504155" + ] + } + } + } + } + }, + { + "配置Spring Security": { + "data": { + "uuid": "云原生-5-268", + "seg": [ + [ + [ + "配置", + "spring", + "security" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79815491", + "81631064", + "74914852", + "108856337", + "82117166", + "80626930", + "109260840", + "110518984", + "110211808", + "109075810" + ] + } + } + } + } + }, + { + "编写相关界面": { + "data": { + "uuid": "云原生-5-269", + "seg": [ + [ + [ + "编写", + "相关", + "界面" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Spring Security方法级别上的保护": { + "data": { + "uuid": "云原生-5-270", + "seg": [ + [ + [ + "spring", + "security", + "方法", + "级别", + "保护" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从数据库中读取用户的认证信息": { + "data": { + "uuid": "云原生-5-271", + "seg": [ + [ + [ + "数据库", + "读取", + "用户", + "认证", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-171", + "seg": [ + [ + [ + "spring", + "boot", + "security", + "案例", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-47", + "seg": [ + [ + [ + "spring", + "boot", + "security", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring Cloud OAuth2保护微服务系统": { + "children": [ + { + "什么是OAuth2": { + "data": { + "uuid": "云原生-4-172", + "seg": [ + [ + [ + "oauth2" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何使用Spring OAuth2": { + "children": [ + { + "OAuth2 Provider": { + "data": { + "uuid": "云原生-5-272", + "seg": [ + [ + [ + "oauth2", + "provider" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OAuth2 Client": { + "data": { + "uuid": "云原生-5-273", + "seg": [ + [ + [ + "oauth2", + "client" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79194512", + "90672537", + "86745592", + "87376712", + "84912644", + "99686809" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-173", + "seg": [ + [ + [ + "spring", + "oauth2" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例分析": { + "children": [ + { + "编写Eureka Server": { + "data": { + "uuid": "云原生-5-274", + "seg": [ + [ + [ + "编写", + "eureka", + "server" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109010117", + "85077717", + "76977314", + "47038209", + "80320732", + "82785740", + "82980717", + "87100773", + "103769016", + "95605377" + ] + } + } + } + } + }, + { + "编写Uaa授权服务": { + "data": { + "uuid": "云原生-5-275", + "seg": [ + [ + [ + "编写", + "uaa", + "授权", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写service-hi资源服务": { + "data": { + "uuid": "云原生-5-276", + "seg": [ + [ + [ + "编写", + "service", + "hi", + "资源", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例架构设计": { + "data": { + "uuid": "云原生-5-277", + "seg": [ + [ + [ + "案例", + "架构设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写主Maven工程": { + "data": { + "uuid": "云原生-5-278", + "seg": [ + [ + [ + "编写", + "主", + "maven", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写user-service资源服务": { + "data": { + "uuid": "云原生-5-279", + "seg": [ + [ + [ + "编写", + "user", + "service", + "资源", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-174", + "seg": [ + [ + [ + "案例", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-48", + "seg": [ + [ + [ + "spring", + "cloud", + "oauth2", + "保护", + "微", + "服务", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring Security OAuth2和JWT保护微服务系统": { + "children": [ + { + "JWT简介": { + "children": [ + { + "什么是JWT": { + "data": { + "uuid": "云原生-5-280", + "seg": [ + [ + [ + "jwt" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84998517", + "87917869", + "115702298", + "88185206", + "85273757", + "90743199", + "52351772", + "54342258", + "103879771", + "115305231" + ] + } + } + } + } + }, + { + "JWT的结构": { + "data": { + "uuid": "云原生-5-281", + "seg": [ + [ + [ + "jwt", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JWT的应用场景": { + "data": { + "uuid": "云原生-5-282", + "seg": [ + [ + [ + "jwt", + "场景" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "94409848", + "105770750" + ] + } + } + } + } + }, + { + "如何使用JWT": { + "data": { + "uuid": "云原生-5-283", + "seg": [ + [ + [ + "jwt" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-175", + "seg": [ + [ + [ + "jwt", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-49", + "seg": [ + [ + [ + "spring", + "security", + "oauth2" + ], + [ + "jwt", + "保护", + "微", + "服务", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Spring Cloud构建微服务综合案例": { + "children": [ + { + "案例介绍": { + "children": [ + { + "工程结构": { + "data": { + "uuid": "云原生-5-284", + "seg": [ + [ + [ + "工程", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用的技术栈": { + "data": { + "uuid": "云原生-5-285", + "seg": [ + [ + [ + "技术", + "栈" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "105881191", + "74170843" + ] + } + } + } + } + }, + { + "工程架构": { + "data": { + "uuid": "云原生-5-286", + "seg": [ + [ + [ + "工程", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "功能展示": { + "data": { + "uuid": "云原生-5-287", + "seg": [ + [ + [ + "功能", + "展示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-176", + "seg": [ + [ + [ + "案例", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例详解": { + "children": [ + { + "准备工作": { + "data": { + "uuid": "云原生-5-288", + "seg": [ + [ + [ + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建主Maven工程": { + "data": { + "uuid": "云原生-5-289", + "seg": [ + [ + [ + "构建", + "主", + "maven", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建eureka-server工程": { + "data": { + "uuid": "云原生-5-290", + "seg": [ + [ + [ + "构建", + "eureka", + "server", + "工程" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86678822", + "84864551" + ] + } + } + } + } + }, + { + "构建config-server工程": { + "data": { + "uuid": "云原生-5-291", + "seg": [ + [ + [ + "构建", + "config", + "server", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建Zipkin工程": { + "data": { + "uuid": "云原生-5-292", + "seg": [ + [ + [ + "构建", + "zipkin", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建monitoring-service工程": { + "data": { + "uuid": "云原生-5-293", + "seg": [ + [ + [ + "构建", + "monitoring", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建uaa-service工程": { + "data": { + "uuid": "云原生-5-294", + "seg": [ + [ + [ + "构建", + "uaa", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建gateway-service工程": { + "data": { + "uuid": "云原生-5-295", + "seg": [ + [ + [ + "构建", + "gateway", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建admin-service工程": { + "data": { + "uuid": "云原生-5-296", + "seg": [ + [ + [ + "构建", + "admin", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建user-service工程": { + "data": { + "uuid": "云原生-5-297", + "seg": [ + [ + [ + "构建", + "user", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建blog-service工程": { + "data": { + "uuid": "云原生-5-298", + "seg": [ + [ + [ + "构建", + "blog", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建log-service工程": { + "data": { + "uuid": "云原生-5-299", + "seg": [ + [ + [ + "构建", + "log", + "service", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-177", + "seg": [ + [ + [ + "案例", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动源码工程": { + "data": { + "uuid": "云原生-4-178", + "seg": [ + [ + [ + "启动", + "工程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-50", + "seg": [ + [ + [ + "spring", + "cloud", + "构建", + "微", + "服务", + "综合", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud生态": { + "children": [ + { + "Spring Cloud基础:Spring Boot概述": { + "data": { + "uuid": "云原生-4-179", + "seg": [ + [ + [ + "spring", + "cloud", + "基础" + ] + ], + [ + [ + "spring", + "boot", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot核心特性": { + "children": [ + { + "Web服务器:WebServer": { + "data": { + "uuid": "云原生-5-300", + "seg": [ + [ + [ + "web", + "服务器" + ] + ], + [ + [ + "webserver" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "条件注解:@ConditionalOnXX": { + "data": { + "uuid": "云原生-5-301", + "seg": [ + [ + [ + "条件", + "注解" + ] + ], + [ + [ + "conditionalonxx" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "工厂加载机制": { + "data": { + "uuid": "云原生-5-302", + "seg": [ + [ + [ + "工厂", + "加载", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置加载机制": { + "data": { + "uuid": "云原生-5-303", + "seg": [ + [ + [ + "配置", + "加载", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Actuator": { + "data": { + "uuid": "云原生-5-304", + "seg": [ + [ + [ + "spring", + "boot", + "actuator" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78817449" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-180", + "seg": [ + [ + [ + "spring", + "boot", + "核心", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud概述": { + "children": [ + { + "Spring Cloud诞生背景": { + "data": { + "uuid": "云原生-5-305", + "seg": [ + [ + [ + "spring", + "cloud", + "诞生", + "背景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Netflix OSS": { + "data": { + "uuid": "云原生-5-306", + "seg": [ + [ + [ + "netflix", + "oss" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "71194519", + "101678657", + "45290311", + "80702805", + "53113274", + "66968718", + "52083553", + "109323530", + "79666166", + "112478109" + ] + } + } + } + } + }, + { + "Spring Cloud版本": { + "data": { + "uuid": "云原生-5-307", + "seg": [ + [ + [ + "spring", + "cloud", + "版本" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88759268", + "90028383", + "79474419", + "80067092", + "99725122", + "70810297", + "82860521", + "81049662", + "83382571", + "83382106" + ] + } + } + } + } + }, + { + "Spring Cloud最新动态": { + "data": { + "uuid": "云原生-5-308", + "seg": [ + [ + [ + "spring", + "cloud", + "最新", + "动态" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "106507150", + "106635918", + "113627950", + "89310353", + "109468057", + "108797606", + "116012372", + "103403932", + "106590923", + "81481222" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-181", + "seg": [ + [ + [ + "spring", + "cloud", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-51", + "seg": [ + [ + [ + "spring", + "cloud", + "生态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "负载均衡与服务调用": { + "children": [ + { + "负载均衡原理": { + "data": { + "uuid": "云原生-4-182", + "seg": [ + [ + [ + "负载", + "均衡", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103658690", + "54193868" + ] + } + } + } + } + }, + { + "Spring Cloud LoadBalancer负载均衡组件": { + "data": { + "uuid": "云原生-4-183", + "seg": [ + [ + [ + "spring", + "cloud", + "loadbalancer", + "负载", + "均衡", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "98027648" + ] + } + } + } + } + }, + { + "Netflix Ribbon负载均衡": { + "children": [ + { + "RibbonLoadBalancerClient": { + "data": { + "uuid": "云原生-5-309", + "seg": [ + [ + [ + "ribbonloadbalancerclient" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RibbonServer和Server": { + "data": { + "uuid": "云原生-5-310", + "seg": [ + [ + [ + "ribbonserver" + ], + [ + "server" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80797798" + ] + } + } + } + } + }, + { + "ServerIntrospector": { + "data": { + "uuid": "云原生-5-311", + "seg": [ + [ + [ + "serverintrospector" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ILoadBalancer": { + "data": { + "uuid": "云原生-5-312", + "seg": [ + [ + [ + "iloadbalancer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServerList": { + "data": { + "uuid": "云原生-5-313", + "seg": [ + [ + [ + "serverlist" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109907421" + ] + } + } + } + } + }, + { + "ServerListUpdater": { + "data": { + "uuid": "云原生-5-314", + "seg": [ + [ + [ + "serverlistupdater" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServerStats": { + "data": { + "uuid": "云原生-5-315", + "seg": [ + [ + [ + "serverstats" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ribbon缓存时间": { + "data": { + "uuid": "云原生-5-316", + "seg": [ + [ + [ + "ribbon", + "缓存", + "时间" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111079799", + "89531148", + "81273110", + "78345502", + "86619401", + "103523464", + "115690553", + "84836573", + "85849702", + "84941333" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-184", + "seg": [ + [ + [ + "netflix", + "ribbon", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo LoadBalance负载均衡": { + "data": { + "uuid": "云原生-4-185", + "seg": [ + [ + [ + "dubbo", + "loadbalance", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenFeign:声明式Rest客户端": { + "children": [ + { + "OpenFeign概述": { + "data": { + "uuid": "云原生-5-317", + "seg": [ + [ + [ + "openfeign", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115609599", + "87866269" + ] + } + } + } + } + }, + { + "OpenFeign对JAX-RS的支持": { + "data": { + "uuid": "云原生-5-318", + "seg": [ + [ + [ + "openfeign", + "jax", + "rs", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenFeign底层执行原理": { + "data": { + "uuid": "云原生-5-319", + "seg": [ + [ + [ + "openfeign", + "底层", + "执行", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-186", + "seg": [ + [ + [ + "openfeign" + ] + ], + [ + [ + "声明", + "rest", + "客户端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo Spring Cloud :服务调用的新选择": { + "data": { + "uuid": "云原生-4-187", + "seg": [ + [ + [ + "dubbo", + "spring", + "cloud" + ] + ], + [ + [ + "服务", + "调用", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "再谈路由和负载均衡": { + "data": { + "uuid": "云原生-4-188", + "seg": [ + [ + [ + "谈", + "路由" + ], + [ + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例:应用流量控制": { + "children": [ + { + "流量控制应用的业务场景": { + "data": { + "uuid": "云原生-5-320", + "seg": [ + [ + [ + "流量", + "控制", + "业务", + "场景" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "47844375" + ] + } + } + } + } + }, + { + "使用Netflix Ribbon完成应用灰度发布": { + "data": { + "uuid": "云原生-5-321", + "seg": [ + [ + [ + "netflix", + "ribbon", + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-189", + "seg": [ + [ + [ + "案例" + ] + ], + [ + [ + "流量", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-52", + "seg": [ + [ + [ + "负载", + "均衡" + ], + [ + "服务", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置管理": { + "children": [ + { + "配置中心背景概述": { + "data": { + "uuid": "云原生-4-190", + "seg": [ + [ + [ + "配置", + "中心", + "背景", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Config Server/Client": { + "children": [ + { + "Spring Cloud Config Server": { + "data": { + "uuid": "云原生-5-322", + "seg": [ + [ + [ + "spring", + "cloud", + "config", + "server" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80435269", + "6161475" + ] + } + } + } + } + }, + { + "Spring Cloud Config Client": { + "data": { + "uuid": "云原生-5-323", + "seg": [ + [ + [ + "spring", + "cloud", + "config", + "client" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78652017", + "71075527", + "80676753", + "80687902", + "51612187", + "80375185", + "104125790" + ] + } + } + } + } + }, + { + "Spring Cloud Config Client与Service Discovery整合": { + "data": { + "uuid": "云原生-5-324", + "seg": [ + [ + [ + "spring", + "cloud", + "config", + "client" + ], + [ + "service", + "discovery", + "整合" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "91355761" + ] + } + } + } + } + }, + { + "Spring Cloud Config配置动态刷新": { + "data": { + "uuid": "云原生-5-325", + "seg": [ + [ + [ + "spring", + "cloud", + "config", + "配置", + "动态", + "刷新" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113066637", + "108433917", + "88718052" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-191", + "seg": [ + [ + [ + "spring", + "cloud", + "config", + "server", + "client" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "再谈配置动态刷新": { + "data": { + "uuid": "云原生-4-192", + "seg": [ + [ + [ + "谈", + "配置", + "动态", + "刷新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-53", + "seg": [ + [ + [ + "配置管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "熔断器": { + "children": [ + { + "熔断器模式概述": { + "data": { + "uuid": "云原生-4-193", + "seg": [ + [ + [ + "熔断器", + "模式", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "手动实现一个断路器": { + "children": [ + { + "定义State枚举和Counter计数器类": { + "data": { + "uuid": "云原生-5-326", + "seg": [ + [ + [ + "定义", + "state", + "枚举" + ], + [ + "counter", + "计数器", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义CircuitBreaker类": { + "data": { + "uuid": "云原生-5-327", + "seg": [ + [ + [ + "定义", + "circuitbreaker", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用CircuitBreaker进行场景测试": { + "data": { + "uuid": "云原生-5-328", + "seg": [ + [ + [ + "circuitbreaker", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-194", + "seg": [ + [ + [ + "手动", + "断路器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Circuit Breaker的技术演进": { + "data": { + "uuid": "云原生-4-195", + "seg": [ + [ + [ + "spring", + "cloud", + "circuit", + "breaker", + "技术", + "演进" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Alib*ba Sentinel": { + "children": [ + { + "Sentinel核心概述": { + "data": { + "uuid": "云原生-5-329", + "seg": [ + [ + [ + "sentinel", + "核心", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Alib*ba Sentinel": { + "data": { + "uuid": "云原生-5-330", + "seg": [ + [ + [ + "spring", + "cloud", + "alib", + "ba", + "sentinel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sentinel限流与Dashboard": { + "data": { + "uuid": "云原生-5-331", + "seg": [ + [ + [ + "sentinel", + "限流" + ], + [ + "dashboard" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "94030377", + "115399917", + "99222541", + "87570156" + ] + } + } + } + } + }, + { + "Sentinel的高级特性": { + "data": { + "uuid": "云原生-5-332", + "seg": [ + [ + [ + "sentinel", + "高级", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-196", + "seg": [ + [ + [ + "alib", + "ba", + "sentinel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Netflix Hystrix": { + "children": [ + { + "Hystrix核心概述": { + "data": { + "uuid": "云原生-5-333", + "seg": [ + [ + [ + "hystrix", + "核心", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Netflix Hystrix": { + "data": { + "uuid": "云原生-5-334", + "seg": [ + [ + [ + "spring", + "cloud", + "netflix", + "hystrix" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51649240", + "103677889", + "80127590", + "103113833", + "78476740", + "112298417" + ] + } + } + } + } + }, + { + "Hystrix限流与Dashboard": { + "data": { + "uuid": "云原生-5-335", + "seg": [ + [ + [ + "hystrix", + "限流" + ], + [ + "dashboard" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Hystrix的高级特性": { + "data": { + "uuid": "云原生-5-336", + "seg": [ + [ + [ + "hystrix", + "高级", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-197", + "seg": [ + [ + [ + "netflix", + "hystrix" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Resilience4j": { + "children": [ + { + "Resilience4j体验": { + "data": { + "uuid": "云原生-5-337", + "seg": [ + [ + [ + "resilience4j", + "体验" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Resilience4j": { + "data": { + "uuid": "云原生-5-338", + "seg": [ + [ + [ + "spring", + "cloud", + "resilience4j" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Resilience4j的高级特性": { + "data": { + "uuid": "云原生-5-339", + "seg": [ + [ + [ + "resilience4j", + "高级", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-198", + "seg": [ + [ + [ + "resilience4j" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-54", + "seg": [ + [ + [ + "熔断器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring生态消息驱动": { + "children": [ + { + "消息中间件概述": { + "data": { + "uuid": "云原生-4-199", + "seg": [ + [ + [ + "消息中间件", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring与消息": { + "children": [ + { + "消息编程模型的统一": { + "data": { + "uuid": "云原生-5-340", + "seg": [ + [ + [ + "消息", + "编程", + "模型", + "统一" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消息的发送和订阅": { + "data": { + "uuid": "云原生-5-341", + "seg": [ + [ + [ + "消息", + "发送" + ], + [ + "订阅" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "91368332" + ] + } + } + } + } + }, + { + "WebSocket": { + "data": { + "uuid": "云原生-5-342", + "seg": [ + [ + [ + "websocket" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "38392629", + "80275084", + "78113463", + "73252904" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-200", + "seg": [ + [ + [ + "spring" + ], + [ + "消息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Integration": { + "children": [ + { + "Spring Integration核心组件概述": { + "data": { + "uuid": "云原生-5-343", + "seg": [ + [ + [ + "spring", + "integration", + "核心", + "组件", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108679699" + ] + } + } + } + } + }, + { + "Spring Integration核心组件的使用": { + "data": { + "uuid": "云原生-5-344", + "seg": [ + [ + [ + "spring", + "integration", + "核心", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86654905", + "115508363" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-201", + "seg": [ + [ + [ + "spring", + "integration" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Stream": { + "children": [ + { + "使用Spring Cloud Stream发送和接收消息": { + "data": { + "uuid": "云原生-5-345", + "seg": [ + [ + [ + "spring", + "cloud", + "stream", + "发送" + ], + [ + "接收", + "消息" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117927021", + "108032887" + ] + } + } + } + } + }, + { + "理解Binder和Binding": { + "data": { + "uuid": "云原生-5-346", + "seg": [ + [ + [ + "理解", + "binder" + ], + [ + "binding" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入理解Spring Cloud Stream": { + "data": { + "uuid": "云原生-5-347", + "seg": [ + [ + [ + "理解", + "spring", + "cloud", + "stream" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "72401373", + "111182985", + "80578340", + "80865009" + ] + } + } + } + } + }, + { + "Spring Cloud Stream的高级特性": { + "data": { + "uuid": "云原生-5-348", + "seg": [ + [ + [ + "spring", + "cloud", + "stream", + "高级", + "特性" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108082936" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-202", + "seg": [ + [ + [ + "spring", + "cloud", + "stream" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-55", + "seg": [ + [ + [ + "spring", + "生态", + "消息", + "驱动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消息总线": { + "children": [ + { + "消息总线概述": { + "data": { + "uuid": "云原生-4-203", + "seg": [ + [ + [ + "消息", + "总线", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入理解Spring Cloud Bus": { + "children": [ + { + "Spring Cloud Bus的使用": { + "data": { + "uuid": "云原生-5-349", + "seg": [ + [ + [ + "spring", + "cloud", + "bus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Bus的原理": { + "data": { + "uuid": "云原生-5-350", + "seg": [ + [ + [ + "spring", + "cloud", + "bus", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Bus事件": { + "data": { + "uuid": "云原生-5-351", + "seg": [ + [ + [ + "spring", + "cloud", + "bus", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Bus源码分析": { + "data": { + "uuid": "云原生-5-352", + "seg": [ + [ + [ + "spring", + "cloud", + "bus", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-204", + "seg": [ + [ + [ + "理解", + "spring", + "cloud", + "bus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-56", + "seg": [ + [ + [ + "消息", + "总线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Data Flow": { + "children": [ + { + "批处理/流处理概述": { + "data": { + "uuid": "云原生-4-205", + "seg": [ + [ + [ + "批处理", + "流", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "流处理案例:信用卡反欺诈系统": { + "data": { + "uuid": "云原生-4-206", + "seg": [ + [ + [ + "流", + "案例" + ] + ], + [ + [ + "信用卡", + "欺诈", + "系统" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "批处理案例:统计GitHub仓库的各项指标数据": { + "data": { + "uuid": "云原生-4-207", + "seg": [ + [ + [ + "批处理", + "案例" + ] + ], + [ + [ + "统计", + "github", + "仓库", + "指标", + "数据" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88852292", + "88008918", + "54581015", + "117281035" + ] + } + } + } + } + }, + { + "Spring Cloud Data Flow批处理任务组合": { + "data": { + "uuid": "云原生-4-208", + "seg": [ + [ + [ + "spring", + "cloud", + "data", + "flow", + "批处理", + "组合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Data Flow Shell": { + "data": { + "uuid": "云原生-4-209", + "seg": [ + [ + [ + "spring", + "cloud", + "data", + "flow", + "shell" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79710534", + "111711929", + "7973511", + "92999646" + ] + } + } + } + } + }, + { + "Spring Cloud Skipper": { + "data": { + "uuid": "云原生-4-210", + "seg": [ + [ + [ + "spring", + "cloud", + "skipper" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Deployer": { + "children": [ + { + "TaskLauncher接口": { + "data": { + "uuid": "云原生-5-353", + "seg": [ + [ + [ + "tasklauncher", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AppDeployer接口": { + "data": { + "uuid": "云原生-5-354", + "seg": [ + [ + [ + "appdeployer", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LocalAppDeployer": { + "data": { + "uuid": "云原生-5-355", + "seg": [ + [ + [ + "localappdeployer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-211", + "seg": [ + [ + [ + "spring", + "cloud", + "deployer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud Task": { + "children": [ + { + "体验Spring Cloud Task": { + "data": { + "uuid": "云原生-5-356", + "seg": [ + [ + [ + "体验", + "spring", + "cloud", + "task" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入理解Spring Cloud Task": { + "data": { + "uuid": "云原生-5-357", + "seg": [ + [ + [ + "理解", + "spring", + "cloud", + "task" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81701320", + "81089997", + "80553666", + "79638403", + "109597104", + "68946881", + "111028208", + "80786726", + "86529788" + ] + } + } + } + } + }, + { + "Spring Cloud Task Batch": { + "data": { + "uuid": "云原生-5-358", + "seg": [ + [ + [ + "spring", + "cloud", + "task", + "batch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-212", + "seg": [ + [ + [ + "spring", + "cloud", + "task" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Batch": { + "children": [ + { + "Spring Batch核心组件": { + "data": { + "uuid": "云原生-5-359", + "seg": [ + [ + [ + "spring", + "batch", + "核心", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "98459194", + "109065239", + "53369173", + "117289722" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-213", + "seg": [ + [ + [ + "spring", + "batch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-57", + "seg": [ + [ + [ + "spring", + "cloud", + "data", + "flow" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网关": { + "children": [ + { + "API网关概述": { + "children": [ + { + "API网关的定义、职能与关注点": { + "data": { + "uuid": "云原生-5-360", + "seg": [ + [ + [ + "api", + "网关", + "定义" + ], + [ + "职能" + ], + [ + "关注点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "API网关的分类与技术分析": { + "data": { + "uuid": "云原生-5-361", + "seg": [ + [ + [ + "api", + "网关", + "分类" + ], + [ + "技术", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86742532", + "86742973", + "95726741", + "84036052", + "73087478", + "89675753", + "110230011" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-214", + "seg": [ + [ + [ + "api", + "网关", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Netflix Zuul": { + "data": { + "uuid": "云原生-4-215", + "seg": [ + [ + [ + "netflix", + "zuul" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "非阻塞式的Spring Cloud Gateway": { + "data": { + "uuid": "云原生-4-216", + "seg": [ + [ + [ + "阻塞", + "spring", + "cloud", + "gateway" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Route路由信息": { + "data": { + "uuid": "云原生-4-217", + "seg": [ + [ + [ + "route", + "路由", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Predicate机制": { + "children": [ + { + "PredicateDefinition和AsyncPredicate": { + "data": { + "uuid": "云原生-5-362", + "seg": [ + [ + [ + "predicatedefinition" + ], + [ + "asyncpredicate" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RoutePredicateFactory": { + "data": { + "uuid": "云原生-5-363", + "seg": [ + [ + [ + "routepredicatefactory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置RoutePredicateFactory": { + "data": { + "uuid": "云原生-5-364", + "seg": [ + [ + [ + "内置", + "routepredicatefactory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-218", + "seg": [ + [ + [ + "predicate", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Filter机制": { + "children": [ + { + "FilterDefinition和GatewayFilter": { + "data": { + "uuid": "云原生-5-365", + "seg": [ + [ + [ + "filterdefinition" + ], + [ + "gatewayfilter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GlobalFilter": { + "data": { + "uuid": "云原生-5-366", + "seg": [ + [ + [ + "globalfilter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置GatewayFilterFactory": { + "data": { + "uuid": "云原生-5-367", + "seg": [ + [ + [ + "内置", + "gatewayfilterfactory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网关内置的GlobalFilter": { + "data": { + "uuid": "云原生-5-368", + "seg": [ + [ + [ + "网关", + "内置", + "globalfilter" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110120547" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-219", + "seg": [ + [ + [ + "filter", + "机制" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81075432", + "52250297" + ] + } + } + } + } + }, + { + "整合注册中心和配置中心": { + "data": { + "uuid": "云原生-4-220", + "seg": [ + [ + [ + "整合", + "注册", + "中心" + ], + [ + "配置", + "中心" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GatewayControllerEndpoint": { + "data": { + "uuid": "云原生-4-221", + "seg": [ + [ + [ + "gatewaycontrollerendpoint" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-58", + "seg": [ + [ + [ + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "综述": { + "children": [ + { + "Cloud Native的起源": { + "data": { + "uuid": "云原生-4-222", + "seg": [ + [ + [ + "cloud", + "native", + "起源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cloud Native的组成": { + "data": { + "uuid": "云原生-4-223", + "seg": [ + [ + [ + "cloud", + "native" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108114333" + ] + } + } + } + } + }, + { + "Cloud Native背后的诉求": { + "data": { + "uuid": "云原生-4-224", + "seg": [ + [ + [ + "cloud", + "native", + "背后", + "诉求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何衡量Cloud Native的能力": { + "data": { + "uuid": "云原生-4-225", + "seg": [ + [ + [ + "衡量", + "cloud", + "native", + "能力" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cloud Native的原则": { + "data": { + "uuid": "云原生-4-226", + "seg": [ + [ + [ + "cloud", + "native", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可用性和可靠性的关系": { + "data": { + "uuid": "云原生-4-227", + "seg": [ + [ + [ + "可用性" + ], + [ + "可靠性", + "关系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可用性的衡量标准": { + "data": { + "uuid": "云原生-4-228", + "seg": [ + [ + [ + "可用性", + "衡量标准" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "什么降低了可用性": { + "data": { + "uuid": "云原生-4-229", + "seg": [ + [ + [ + "降低", + "可用性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-59", + "seg": [ + [ + [ + "综述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务架构": { + "children": [ + { + "微服务架构的起源": { + "data": { + "uuid": "云原生-4-230", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "起源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务架构实施的先决条件": { + "children": [ + { + "研发环境和流程上的转变": { + "data": { + "uuid": "云原生-5-369", + "seg": [ + [ + [ + "研发", + "环境" + ], + [ + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拆分前先做好解耦": { + "data": { + "uuid": "云原生-5-370", + "seg": [ + [ + [ + "拆分", + "做好", + "解", + "耦" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-231", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "实施", + "先决条件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务划分模式": { + "children": [ + { + "基于业务复杂度选择服务划分方法": { + "data": { + "uuid": "云原生-5-371", + "seg": [ + [ + [ + "业务", + "复杂度", + "选择", + "服务", + "划分", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于数据驱动划分服务": { + "data": { + "uuid": "云原生-5-372", + "seg": [ + [ + [ + "数据", + "驱动", + "划分", + "服务" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78435658", + "78460599" + ] + } + } + } + } + }, + { + "基于领域驱动划分服务": { + "data": { + "uuid": "云原生-5-373", + "seg": [ + [ + [ + "领域", + "驱动", + "划分", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从已有单体架构中逐步划分服务": { + "data": { + "uuid": "云原生-5-374", + "seg": [ + [ + [ + "已有", + "单体", + "架构", + "划分", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务拆分策略": { + "data": { + "uuid": "云原生-5-375", + "seg": [ + [ + [ + "微", + "服务", + "拆分", + "策略" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "77511818" + ] + } + } + } + } + }, + { + "如何衡量服务划分的合理性": { + "data": { + "uuid": "云原生-5-376", + "seg": [ + [ + [ + "衡量", + "服务", + "划分", + "合理性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-232", + "seg": [ + [ + [ + "微", + "服务", + "划分", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务划分反模式": { + "data": { + "uuid": "云原生-4-233", + "seg": [ + [ + [ + "微", + "服务", + "划分", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务API设计": { + "children": [ + { + "YXAPI的设计原则": { + "data": { + "uuid": "云原生-5-377", + "seg": [ + [ + [ + "yxapi", + "设计", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务间通信——RPC": { + "data": { + "uuid": "云原生-5-378", + "seg": [ + [ + [ + "服务", + "间通信", + "rpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列化——Protobuf": { + "data": { + "uuid": "云原生-5-379", + "seg": [ + [ + [ + "序列化", + "protobuf" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "服务间通信——RESTful": { + "data": { + "uuid": "云原生-5-380", + "seg": [ + [ + [ + "服务", + "间通信", + "restful" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过Swagger实现RESTful": { + "data": { + "uuid": "云原生-5-381", + "seg": [ + [ + [ + "swagger", + "restful" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78008029" + ] + } + } + } + } + }, + { + "HTTP协议的进化——HTTP/2": { + "data": { + "uuid": "云原生-5-382", + "seg": [ + [ + [ + "http", + "协议", + "进化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP/2和Protobuf的组合——gRPC": { + "data": { + "uuid": "云原生-5-383", + "seg": [ + [ + [ + "http" + ], + [ + "protobuf", + "组合", + "grpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-234", + "seg": [ + [ + [ + "微", + "服务", + "api", + "设计" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113920007" + ] + } + } + } + } + }, + { + "微服务框架": { + "data": { + "uuid": "云原生-4-235", + "seg": [ + [ + [ + "微", + "服务", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Dubbo框架实现微服务": { + "data": { + "uuid": "云原生-4-236", + "seg": [ + [ + [ + "dubbo", + "框架", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Spring Cloud框架实现微服务": { + "data": { + "uuid": "云原生-4-237", + "seg": [ + [ + [ + "spring", + "cloud", + "框架", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务发现场景下的ZooKeeper与Etcd": { + "data": { + "uuid": "云原生-4-238", + "seg": [ + [ + [ + "服务", + "场景", + "zookeeper" + ], + [ + "etcd" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89512986", + "103940111", + "109281835" + ] + } + } + } + } + }, + { + "微服务部署策略": { + "children": [ + { + "服务D享数据库": { + "data": { + "uuid": "云原生-5-384", + "seg": [ + [ + [ + "服务", + "d", + "享", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务D享虚拟机/容器": { + "data": { + "uuid": "云原生-5-385", + "seg": [ + [ + [ + "服务", + "d", + "享", + "虚拟机", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-239", + "seg": [ + [ + [ + "微", + "服务", + "部署", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "几种常见的微服务架构方案": { + "children": [ + { + "ZeroC IceGrid微服务架构": { + "data": { + "uuid": "云原生-5-386", + "seg": [ + [ + [ + "zeroc", + "icegrid", + "微", + "服务", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud微服务架构": { + "data": { + "uuid": "云原生-5-387", + "seg": [ + [ + [ + "spring", + "cloud", + "微", + "服务", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81519267", + "69788938", + "113833391", + "77881185", + "108731234" + ] + } + } + } + } + }, + { + "基于消息队列的微服务架构": { + "data": { + "uuid": "云原生-5-388", + "seg": [ + [ + [ + "消息", + "队列", + "微", + "服务", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker Swarm微服务架构": { + "data": { + "uuid": "云原生-5-389", + "seg": [ + [ + [ + "docker", + "swarm", + "微", + "服务", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103925651", + "51588291", + "75758211", + "50822061", + "81868136", + "50510163", + "53728728", + "117646369" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-240", + "seg": [ + [ + [ + "常见", + "微", + "服务", + "架构", + "方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入Kubernetes微服务平台": { + "children": [ + { + "基于Kubernetes的PaaS平台": { + "data": { + "uuid": "云原生-5-390", + "seg": [ + [ + [ + "kubernetes", + "paas", + "平台" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89015435" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-241", + "seg": [ + [ + [ + "kubernetes", + "微", + "服务平台" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从微服务到Service Mesh": { + "children": [ + { + "Service Mesh之再见架构": { + "data": { + "uuid": "云原生-5-391", + "seg": [ + [ + [ + "service", + "mesh", + "再见", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy核心实践入门": { + "data": { + "uuid": "云原生-5-392", + "seg": [ + [ + [ + "envoy", + "核心", + "实践", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio背后的技术": { + "data": { + "uuid": "云原生-5-393", + "seg": [ + [ + [ + "istio", + "背后", + "技术" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113821240" + ] + } + } + } + } + }, + { + "Istio的架构演变": { + "data": { + "uuid": "云原生-5-394", + "seg": [ + [ + [ + "istio", + "架构", + "演变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-242", + "seg": [ + [ + [ + "微", + "服务", + "service", + "mesh" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "97885718" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-60", + "seg": [ + [ + [ + "微", + "服务", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "37659335" + ] + } + } + } + } + }, + { + "敏捷基础设施及公共基础服务": { + "children": [ + { + "传统基础设施面临的挑战": { + "data": { + "uuid": "云原生-4-243", + "seg": [ + [ + [ + "传统", + "基础设施", + "面临", + "挑战" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "什么是敏捷基础设施": { + "data": { + "uuid": "云原生-4-244", + "seg": [ + [ + [ + "敏捷", + "基础设施" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于容器的敏捷基础设施": { + "children": [ + { + "容器VS虚拟机": { + "data": { + "uuid": "云原生-5-395", + "seg": [ + [ + [ + "容器", + "vs", + "虚拟机" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100548241", + "70568448", + "80426680", + "80456781", + "83688797" + ] + } + } + } + } + }, + { + "安装Docker": { + "data": { + "uuid": "云原生-5-396", + "seg": [ + [ + [ + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署私有Docker Registry": { + "data": { + "uuid": "云原生-5-397", + "seg": [ + [ + [ + "部署", + "私有", + "docker", + "registry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于docker-compose管理容器": { + "data": { + "uuid": "云原生-5-398", + "seg": [ + [ + [ + "docker", + "compose", + "管理", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-245", + "seg": [ + [ + [ + "容器", + "敏捷", + "基础设施" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于公共基础服务的平台化": { + "data": { + "uuid": "云原生-4-246", + "seg": [ + [ + [ + "公共", + "基础", + "服务", + "平台", + "化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控告警fu务": { + "children": [ + { + "监控数据采集": { + "data": { + "uuid": "云原生-5-399", + "seg": [ + [ + [ + "监控", + "数据", + "采集" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110921219" + ] + } + } + } + } + }, + { + "监控数据接收模式": { + "data": { + "uuid": "云原生-5-400", + "seg": [ + [ + [ + "监控", + "数据", + "接收", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过时间序列数据库存储监控数据": { + "data": { + "uuid": "云原生-5-401", + "seg": [ + [ + [ + "时间", + "序列", + "数据库", + "存储", + "监控", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开源监控系统实现Prometheus": { + "data": { + "uuid": "云原生-5-402", + "seg": [ + [ + [ + "开源", + "监控", + "系统", + "prometheus" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88078657" + ] + } + } + } + } + }, + { + "通过Prometheus和Grafana监控服务": { + "data": { + "uuid": "云原生-5-403", + "seg": [ + [ + [ + "prometheus" + ], + [ + "grafana", + "监控", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-247", + "seg": [ + [ + [ + "监控", + "告警", + "fu", + "务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式消息中间件服务": { + "children": [ + { + "分布式消息中间件的作用": { + "data": { + "uuid": "云原生-5-404", + "seg": [ + [ + [ + "分布式", + "消息中间件", + "作用" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52779157" + ] + } + } + } + } + }, + { + "业界常用的分布式消息中间件": { + "data": { + "uuid": "云原生-5-405", + "seg": [ + [ + [ + "业界", + "分布式", + "消息中间件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "40114533", + "54411464", + "107075876" + ] + } + } + } + } + }, + { + "Kafka的设计原理": { + "data": { + "uuid": "云原生-5-406", + "seg": [ + [ + [ + "kafka", + "设计", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "85528519", + "48053965", + "72943207", + "88173552", + "80297208", + "102790124", + "100563722", + "86682232", + "72856762", + "57411790" + ] + } + } + } + } + }, + { + "Kafka的数据存储结构": { + "data": { + "uuid": "云原生-5-407", + "seg": [ + [ + [ + "kafka", + "数据", + "存储", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114019167", + "81910407", + "115368141", + "109010395", + "109685442", + "78519245", + "116599379", + "52268592", + "108002293", + "108599723" + ] + } + } + } + } + }, + { + "如何保证Kafka不丢消息": { + "data": { + "uuid": "云原生-5-408", + "seg": [ + [ + [ + "保证", + "kafka", + "丢", + "消息" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79888144" + ] + } + } + } + } + }, + { + "Kafka跨数据中心场景集群部署模式": { + "data": { + "uuid": "云原生-5-409", + "seg": [ + [ + [ + "kafka", + "跨", + "数据中心", + "场景", + "集群", + "部署", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-248", + "seg": [ + [ + [ + "分布式", + "消息中间件", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式缓存服务": { + "children": [ + { + "分布式缓存的应用场景": { + "data": { + "uuid": "云原生-5-410", + "seg": [ + [ + [ + "分布式", + "缓存", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "业界常用的分布式缓存Memcached": { + "data": { + "uuid": "云原生-5-411", + "seg": [ + [ + [ + "业界", + "分布式", + "缓存", + "memcached" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "业界常用的分布式缓存——Redis": { + "data": { + "uuid": "云原生-5-412", + "seg": [ + [ + [ + "业界", + "分布式", + "缓存", + "redis" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78769428", + "108109523", + "108374664" + ] + } + } + } + } + }, + { + "Redis常用的分布式缓存集群模式": { + "data": { + "uuid": "云原生-5-413", + "seg": [ + [ + [ + "redis", + "分布式", + "缓存", + "集群", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Codis实现Redis分布式缓存集群": { + "data": { + "uuid": "云原生-5-414", + "seg": [ + [ + [ + "codis", + "redis", + "分布式", + "缓存", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51307229", + "86102235", + "80417961" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-249", + "seg": [ + [ + [ + "分布式", + "缓存", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式任务调度服务": { + "children": [ + { + "通过Tbschedule实现分布式任务调度": { + "data": { + "uuid": "云原生-5-415", + "seg": [ + [ + [ + "tbschedule", + "分布式", + "任务调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过Elastic-Job实现分布式任务调度": { + "data": { + "uuid": "云原生-5-416", + "seg": [ + [ + [ + "elastic", + "job", + "分布式", + "任务调度" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "43449621" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-250", + "seg": [ + [ + [ + "分布式", + "任务调度", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何生成分布式ID": { + "children": [ + { + "UUID": { + "data": { + "uuid": "云原生-5-417", + "seg": [ + [ + [ + "uuid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SDwFlake": { + "data": { + "uuid": "云原生-5-418", + "seg": [ + [ + [ + "sdwflake" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ticket Server": { + "data": { + "uuid": "云原生-5-419", + "seg": [ + [ + [ + "ticket", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-251", + "seg": [ + [ + [ + "生成", + "分布式", + "id" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-61", + "seg": [ + [ + [ + "敏捷", + "基础设施" + ], + [ + "公共", + "基础", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可用性设计": { + "children": [ + { + "逐步切换": { + "children": [ + { + "影子测试": { + "data": { + "uuid": "云原生-5-420", + "seg": [ + [ + [ + "影子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "蓝绿部署": { + "data": { + "uuid": "云原生-5-421", + "seg": [ + [ + [ + "蓝绿", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "灰度发布/金丝雀发布": { + "data": { + "uuid": "云原生-5-422", + "seg": [ + [ + [ + "灰度", + "发布", + "金丝雀" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-252", + "seg": [ + [ + [ + "切换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容错设计": { + "children": [ + { + "消除单点": { + "data": { + "uuid": "云原生-5-423", + "seg": [ + [ + [ + "消除", + "单点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特性开关": { + "data": { + "uuid": "云原生-5-424", + "seg": [ + [ + [ + "特性", + "开关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务分级": { + "data": { + "uuid": "云原生-5-425", + "seg": [ + [ + [ + "服务", + "分级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "降级设计": { + "data": { + "uuid": "云原生-5-426", + "seg": [ + [ + [ + "降级", + "设计" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100399302", + "88635542", + "51931090", + "108128069", + "74014237", + "51986430", + "52039587", + "103938638", + "116456820", + "103967173" + ] + } + } + } + } + }, + { + "超时重试": { + "data": { + "uuid": "云原生-5-427", + "seg": [ + [ + [ + "超时", + "重试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "隔离策略": { + "data": { + "uuid": "云原生-5-428", + "seg": [ + [ + [ + "隔离", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-253", + "seg": [ + [ + [ + "容错", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流控设计": { + "children": [ + { + "限流算法": { + "data": { + "uuid": "云原生-5-429", + "seg": [ + [ + [ + "限流", + "算法" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6825843" + ] + } + } + } + } + }, + { + "流控策略": { + "data": { + "uuid": "云原生-5-430", + "seg": [ + [ + [ + "流控", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Guava限流": { + "data": { + "uuid": "云原生-5-431", + "seg": [ + [ + [ + "guava", + "限流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Nginx限流": { + "data": { + "uuid": "云原生-5-432", + "seg": [ + [ + [ + "nginx", + "限流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-254", + "seg": [ + [ + [ + "流控", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容量预估": { + "data": { + "uuid": "云原生-4-255", + "seg": [ + [ + [ + "容量", + "预估" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "故障演练": { + "data": { + "uuid": "云原生-4-256", + "seg": [ + [ + [ + "故障", + "演练" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据迁移": { + "children": [ + { + "逻辑分离,物理不分离": { + "data": { + "uuid": "云原生-5-433", + "seg": [ + [ + [ + "逻辑", + "分离", + "物理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "物理分离": { + "data": { + "uuid": "云原生-5-434", + "seg": [ + [ + [ + "物理", + "分离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-257", + "seg": [ + [ + [ + "数据", + "迁移" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-62", + "seg": [ + [ + [ + "可用性", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可扩展性设计": { + "children": [ + { + "横向扩展": { + "data": { + "uuid": "云原生-4-258", + "seg": [ + [ + [ + "横向", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AKF扩展立方体": { + "data": { + "uuid": "云原生-4-259", + "seg": [ + [ + [ + "akf", + "扩展", + "立方体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何扩展长连接": { + "data": { + "uuid": "云原生-4-260", + "seg": [ + [ + [ + "扩展", + "长", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何扩展数据库": { + "children": [ + { + "X轴扩展——主从复制集群": { + "data": { + "uuid": "云原生-5-435", + "seg": [ + [ + [ + "x", + "轴", + "扩展", + "主从复制", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Y轴扩展——分库、垂直分表": { + "data": { + "uuid": "云原生-5-436", + "seg": [ + [ + [ + "y", + "轴", + "扩展", + "分库" + ], + [ + "垂直", + "分表" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110646899", + "110914448" + ] + } + } + } + } + }, + { + "Z轴扩展——分片(sharding)": { + "data": { + "uuid": "云原生-5-437", + "seg": [ + [ + [ + "z", + "轴", + "扩展", + "分片", + "sharding" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分片扩容(re-sharding)": { + "data": { + "uuid": "云原生-5-438", + "seg": [ + [ + [ + "分片", + "扩容", + "re", + "sharding" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "精选案例": { + "data": { + "uuid": "云原生-5-439", + "seg": [ + [ + [ + "精选", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-261", + "seg": [ + [ + [ + "扩展", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何扩展数据中心": { + "children": [ + { + "两地三中心和同城多活": { + "data": { + "uuid": "云原生-5-440", + "seg": [ + [ + [ + "两地", + "中心" + ], + [ + "同城", + "多活" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "同城多活": { + "data": { + "uuid": "云原生-5-441", + "seg": [ + [ + [ + "同城", + "活" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "异地多活": { + "data": { + "uuid": "云原生-5-442", + "seg": [ + [ + [ + "异地", + "活" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-262", + "seg": [ + [ + [ + "扩展", + "数据中心" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-63", + "seg": [ + [ + [ + "可扩展性", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "性能设计": { + "children": [ + { + "性能指标": { + "data": { + "uuid": "云原生-4-263", + "seg": [ + [ + [ + "性能指标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何树立目标": { + "data": { + "uuid": "云原生-4-264", + "seg": [ + [ + [ + "树立", + "目标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何寻找平衡点": { + "data": { + "uuid": "云原生-4-265", + "seg": [ + [ + [ + "寻找", + "平衡点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何定位瓶颈点": { + "data": { + "uuid": "云原生-4-266", + "seg": [ + [ + [ + "定位", + "瓶颈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务通信优化": { + "children": [ + { + "同步转异步": { + "data": { + "uuid": "云原生-5-443", + "seg": [ + [ + [ + "同步", + "转", + "异步" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "阻塞转非阻塞": { + "data": { + "uuid": "云原生-5-444", + "seg": [ + [ + [ + "阻塞", + "转非" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列化": { + "data": { + "uuid": "云原生-5-445", + "seg": [ + [ + [ + "序列化" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-267", + "seg": [ + [ + [ + "服务", + "通信", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过消息中间件提升写性能": { + "data": { + "uuid": "云原生-4-268", + "seg": [ + [ + [ + "消息中间件", + "提升", + "写", + "性能" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109038205" + ] + } + } + } + } + }, + { + "通过缓存提升读性能": { + "children": [ + { + "基于ConcurrentHashMap实现本地缓存": { + "data": { + "uuid": "云原生-5-446", + "seg": [ + [ + [ + "concurrenthashmap", + "缓存" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79953811", + "81389583", + "72783008" + ] + } + } + } + } + }, + { + "基于Guava Cache实现本地缓存": { + "data": { + "uuid": "云原生-5-447", + "seg": [ + [ + [ + "guava", + "cache", + "缓存" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81283167" + ] + } + } + } + } + }, + { + "缓存的常用模式": { + "data": { + "uuid": "云原生-5-448", + "seg": [ + [ + [ + "缓存", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-269", + "seg": [ + [ + [ + "缓存", + "提升", + "读", + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库优化": { + "children": [ + { + "通过执行计划分析瓶颈点": { + "data": { + "uuid": "云原生-5-449", + "seg": [ + [ + [ + "执行", + "计划", + "分析", + "瓶颈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为搜索字段创建索引": { + "data": { + "uuid": "云原生-5-450", + "seg": [ + [ + [ + "搜索", + "字", + "段", + "创建", + "索引" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过慢查询日志分析瓶颈点": { + "data": { + "uuid": "云原生-5-451", + "seg": [ + [ + [ + "慢", + "查询", + "日志", + "分析", + "瓶颈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过提升硬件能力优化数据库": { + "data": { + "uuid": "云原生-5-452", + "seg": [ + [ + [ + "提升", + "硬件", + "能力", + "优化", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-270", + "seg": [ + [ + [ + "数据库", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简化设计": { + "children": [ + { + "转移复杂度": { + "data": { + "uuid": "云原生-5-453", + "seg": [ + [ + [ + "转移", + "复杂度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从业务角度优化": { + "data": { + "uuid": "云原生-5-454", + "seg": [ + [ + [ + "业务", + "角度", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-271", + "seg": [ + [ + [ + "简化", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-64", + "seg": [ + [ + [ + "性能", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一致性设计": { + "children": [ + { + "基础理论": { + "children": [ + { + "CAP定理": { + "data": { + "uuid": "云原生-5-455", + "seg": [ + [ + [ + "cap", + "定理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BASE理论": { + "data": { + "uuid": "云原生-5-456", + "seg": [ + [ + [ + "base", + "理论" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78601213" + ] + } + } + } + } + }, + { + "Quorum机制(NWR模型)": { + "data": { + "uuid": "云原生-5-457", + "seg": [ + [ + [ + "quorum", + "机制", + "nwr", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "租约机制(Lease)": { + "data": { + "uuid": "云原生-5-458", + "seg": [ + [ + [ + "租约", + "机制", + "lease" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "状态机(Replicated State Machine)": { + "data": { + "uuid": "云原生-5-459", + "seg": [ + [ + [ + "状态机", + "replicated", + "state", + "machine" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-272", + "seg": [ + [ + [ + "基础理论" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式系统的一致性分类": { + "children": [ + { + "以数据为中心的一致性模型": { + "data": { + "uuid": "云原生-5-460", + "seg": [ + [ + [ + "数据", + "中心", + "一致性", + "模型" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "53768464" + ] + } + } + } + } + }, + { + "以用户为中心的一致性模型": { + "data": { + "uuid": "云原生-5-461", + "seg": [ + [ + [ + "用户", + "中心", + "一致性", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "业界常用的一致性模型": { + "data": { + "uuid": "云原生-5-462", + "seg": [ + [ + [ + "业界", + "一致性", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-273", + "seg": [ + [ + [ + "分布式系统", + "一致性", + "分类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何实现强一致性": { + "children": [ + { + "两阶段提交": { + "data": { + "uuid": "云原生-5-463", + "seg": [ + [ + [ + "阶段", + "提交" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "三阶段提交(3PC)": { + "data": { + "uuid": "云原生-5-464", + "seg": [ + [ + [ + "阶段", + "提交", + "pc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-274", + "seg": [ + [ + [ + "强", + "一致性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何实现Z终一致性": { + "children": [ + { + "重试机制": { + "data": { + "uuid": "云原生-5-465", + "seg": [ + [ + [ + "重试", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "本地记录日志": { + "data": { + "uuid": "云原生-5-466", + "seg": [ + [ + [ + "记录", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可靠事件模式": { + "data": { + "uuid": "云原生-5-467", + "seg": [ + [ + [ + "可靠", + "事件", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Saga事务模型": { + "data": { + "uuid": "云原生-5-468", + "seg": [ + [ + [ + "saga", + "事务", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TCC事务模型": { + "data": { + "uuid": "云原生-5-469", + "seg": [ + [ + [ + "tcc", + "事务", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-275", + "seg": [ + [ + [ + "z", + "终", + "一致性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式锁": { + "children": [ + { + "基于数据库实现悲观锁和乐观锁": { + "data": { + "uuid": "云原生-5-470", + "seg": [ + [ + [ + "数据库", + "悲观", + "锁" + ], + [ + "乐观", + "锁" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基于ZooKeeper的分布式锁": { + "data": { + "uuid": "云原生-5-471", + "seg": [ + [ + [ + "zookeeper", + "分布式", + "锁" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82081953", + "102993655", + "108504704", + "83786331", + "83896169", + "85038336", + "116980779" + ] + } + } + } + } + }, + { + "基于Redis实现分布式锁": { + "data": { + "uuid": "云原生-5-472", + "seg": [ + [ + [ + "redis", + "分布式", + "锁" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82080962", + "88696999", + "82751790", + "79336986", + "111600302", + "81775044", + "114296755", + "80692278", + "108384490", + "86260854" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-276", + "seg": [ + [ + [ + "分布式", + "锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何保证幂等性": { + "children": [ + { + "幂等令牌(Idempotency Key)": { + "data": { + "uuid": "云原生-5-473", + "seg": [ + [ + [ + "幂", + "令牌", + "idempotency", + "key" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在数据库中实现幂等性": { + "data": { + "uuid": "云原生-5-474", + "seg": [ + [ + [ + "数据库", + "幂", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-277", + "seg": [ + [ + [ + "保证", + "幂", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-65", + "seg": [ + [ + [ + "一致性", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "未来值得关注的方向": { + "children": [ + { + "Serverless": { + "children": [ + { + "什么是Serverless": { + "data": { + "uuid": "云原生-5-475", + "seg": [ + [ + [ + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的现状": { + "data": { + "uuid": "云原生-5-476", + "seg": [ + [ + [ + "serverless", + "现状" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless的应用场景": { + "data": { + "uuid": "云原生-5-477", + "seg": [ + [ + [ + "serverless", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-278", + "seg": [ + [ + [ + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-66", + "seg": [ + [ + [ + "未来", + "值得", + "关注", + "方向" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "18854551" + ] + } + } + } + } + }, + { + "研发流程": { + "children": [ + { + "十二因子": { + "data": { + "uuid": "云原生-4-279", + "seg": [ + [ + [ + "因子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化测试": { + "children": [ + { + "单元测试": { + "data": { + "uuid": "云原生-5-478", + "seg": [ + [ + [ + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TDD": { + "data": { + "uuid": "云原生-5-479", + "seg": [ + [ + [ + "tdd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提交即意味着可测试": { + "data": { + "uuid": "云原生-5-480", + "seg": [ + [ + [ + "提交", + "意味着" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-280", + "seg": [ + [ + [ + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Code Review": { + "children": [ + { + "Code Review的意义": { + "data": { + "uuid": "云原生-5-481", + "seg": [ + [ + [ + "code", + "review", + "意义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Code Review的原则": { + "data": { + "uuid": "云原生-5-482", + "seg": [ + [ + [ + "code", + "review", + "原则" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84959946", + "69566209", + "53914588", + "89921877" + ] + } + } + } + } + }, + { + "Code Review的过程": { + "data": { + "uuid": "云原生-5-483", + "seg": [ + [ + [ + "code", + "review", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-281", + "seg": [ + [ + [ + "code", + "review" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流水线": { + "children": [ + { + "持续交付": { + "data": { + "uuid": "云原生-5-484", + "seg": [ + [ + [ + "持续", + "交付" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持续部署流水线": { + "data": { + "uuid": "云原生-5-485", + "seg": [ + [ + [ + "持续", + "部署", + "流水线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于开源打造流水线": { + "data": { + "uuid": "云原生-5-486", + "seg": [ + [ + [ + "开源", + "打造", + "流水线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "YMX的流水线": { + "data": { + "uuid": "云原生-5-487", + "seg": [ + [ + [ + "ymx", + "流水线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发人员自服务": { + "data": { + "uuid": "云原生-5-488", + "seg": [ + [ + [ + "开发人员", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-282", + "seg": [ + [ + [ + "流水线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于数据和反馈持续改进": { + "data": { + "uuid": "云原生-4-283", + "seg": [ + [ + [ + "数据" + ], + [ + "反馈", + "持续", + "改进" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拥抱变化": { + "data": { + "uuid": "云原生-4-284", + "seg": [ + [ + [ + "拥抱", + "变化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码即设计": { + "data": { + "uuid": "云原生-4-285", + "seg": [ + [ + [ + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-67", + "seg": [ + [ + [ + "研发", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "团队文化": { + "children": [ + { + "组织结构": { + "children": [ + { + "康威定律": { + "data": { + "uuid": "云原生-5-489", + "seg": [ + [ + [ + "康威", + "定律" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扁平化的组织": { + "data": { + "uuid": "云原生-5-490", + "seg": [ + [ + [ + "扁平化", + "组织" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "D裁的管理方式还是民主的管理方式": { + "data": { + "uuid": "云原生-5-491", + "seg": [ + [ + [ + "d", + "裁", + "管理", + "方式", + "民主" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "民主的团队如何做决策": { + "data": { + "uuid": "云原生-5-492", + "seg": [ + [ + [ + "民主", + "团队", + "做", + "决策" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-286", + "seg": [ + [ + [ + "组织", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环境氛围": { + "children": [ + { + "公开透明的工作环境": { + "data": { + "uuid": "云原生-5-493", + "seg": [ + [ + [ + "公开", + "透明", + "工作", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "学习型组织": { + "data": { + "uuid": "云原生-5-494", + "seg": [ + [ + [ + "学习型", + "组织" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "减少正式的汇报": { + "data": { + "uuid": "云原生-5-495", + "seg": [ + [ + [ + "减少", + "正式", + "汇报" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高效的会议": { + "data": { + "uuid": "云原生-5-496", + "seg": [ + [ + [ + "高效", + "会议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "量化指标致死": { + "data": { + "uuid": "云原生-5-497", + "seg": [ + [ + [ + "量化", + "指标", + "致死" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-287", + "seg": [ + [ + [ + "环境", + "氛围" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理风格": { + "children": [ + { + "下属请假你会拒绝吗": { + "data": { + "uuid": "云原生-5-498", + "seg": [ + [ + [ + "下属", + "请假", + "拒绝" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "得到了所有人的认可,说明你并不是一个好的管理者": { + "data": { + "uuid": "云原生-5-499", + "seg": [ + [ + [ + "所有人", + "认可", + "管理者" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "尽量避免用自己的权力去做决策": { + "data": { + "uuid": "云原生-5-500", + "seg": [ + [ + [ + "尽量避免", + "权力", + "做", + "决策" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一屋不扫也可助你“荡平天下”": { + "data": { + "uuid": "云原生-5-501", + "seg": [ + [ + [ + "屋", + "扫", + "可助", + "荡平", + "天下" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何留下你想要的人": { + "data": { + "uuid": "云原生-5-502", + "seg": [ + [ + [ + "留下" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-288", + "seg": [ + [ + [ + "管理", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "经典案例": { + "children": [ + { + "Instagram的团队文化": { + "data": { + "uuid": "云原生-5-503", + "seg": [ + [ + [ + "instagram", + "团队", + "文化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Netflix的团队文化": { + "data": { + "uuid": "云原生-5-504", + "seg": [ + [ + [ + "netflix", + "团队", + "文化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-289", + "seg": [ + [ + [ + "经典", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-68", + "seg": [ + [ + [ + "团队", + "文化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基础篇": { + "children": [ + { + "Service Mesh简介": { + "children": [ + { + "微服务架构面临的一些挑战": { + "data": { + "uuid": "云原生-5-505", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "面临", + "挑战" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "技术架构演进": { + "data": { + "uuid": "云原生-5-506", + "seg": [ + [ + [ + "技术", + "架构", + "演进" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6876058" + ] + } + } + } + } + }, + { + "Service Mesh的功能": { + "data": { + "uuid": "云原生-5-507", + "seg": [ + [ + [ + "service", + "mesh", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "业界Service Mesh产品": { + "children": [ + { + "Envoy": { + "data": { + "uuid": "云原生-6-75", + "seg": [ + [ + [ + "envoy" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90902514" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-508", + "seg": [ + [ + [ + "业界", + "service", + "mesh", + "产品" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-290", + "seg": [ + [ + [ + "service", + "mesh", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linkerd入门": { + "children": [ + { + "Linkerd架构": { + "data": { + "uuid": "云原生-5-509", + "seg": [ + [ + [ + "linkerd", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linkerd主要功能": { + "data": { + "uuid": "云原生-5-510", + "seg": [ + [ + [ + "linkerd", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Linkerd": { + "children": [ + { + "环境准备": { + "children": [ + { + "虚拟机及Docker引擎": { + "data": { + "uuid": "云原生-7-21", + "seg": [ + [ + [ + "虚拟机" + ], + [ + "docker", + "引擎" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务发现:Consul": { + "data": { + "uuid": "云原生-7-22", + "seg": [ + [ + [ + "服务" + ] + ], + [ + [ + "consul" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90521818", + "51559228", + "74838182", + "84874315", + "89394459", + "110402009", + "89389194", + "105555146", + "108331787", + "88373553" + ] + } + } + } + } + }, + { + "部署Linkerd": { + "data": { + "uuid": "云原生-7-23", + "seg": [ + [ + [ + "部署", + "linkerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署示例服务": { + "data": { + "uuid": "云原生-7-24", + "seg": [ + [ + [ + "部署", + "示例", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在本地搭建Istio环境": { + "children": [ + { + "安装Kubernetes集群": { + "data": { + "uuid": "云原生-8-0", + "seg": [ + [ + [ + "安装", + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "49683221" + ] + } + } + } + } + }, + { + "安装Helm": { + "data": { + "uuid": "云原生-8-1", + "seg": [ + [ + [ + "安装", + "helm" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50405532" + ] + } + } + } + } + }, + { + "安装Istio": { + "data": { + "uuid": "云原生-8-2", + "seg": [ + [ + [ + "安装", + "istio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-7-25", + "seg": [ + [ + [ + "搭建", + "istio", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81088799", + "106673157" + ] + } + } + } + } + }, + { + "在公有云上使用Istio": { + "data": { + "uuid": "云原生-7-26", + "seg": [ + [ + [ + "公有", + "云", + "istio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "尝鲜Istio命令行": { + "data": { + "uuid": "云原生-7-27", + "seg": [ + [ + [ + "尝鲜", + "istio", + "命令行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-76", + "seg": [ + [ + [ + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传统安装方式": { + "data": { + "uuid": "云原生-6-77", + "seg": [ + [ + [ + "传统", + "安装", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Docker的安装方式": { + "data": { + "uuid": "云原生-6-78", + "seg": [ + [ + [ + "docker", + "安装", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-511", + "seg": [ + [ + [ + "安装", + "linkerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "示例演示": { + "children": [ + { + "示例准备": { + "children": [ + { + "Weather Forecast简介": { + "data": { + "uuid": "云原生-7-28", + "seg": [ + [ + [ + "weather", + "forecast", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Weather Forecast部署": { + "data": { + "uuid": "云原生-7-29", + "seg": [ + [ + [ + "weather", + "forecast", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-79", + "seg": [ + [ + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "102921702" + ] + } + } + } + } + }, + { + "基于文件的服务发现": { + "data": { + "uuid": "云原生-6-80", + "seg": [ + [ + [ + "文件", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "示例演示": { + "data": { + "uuid": "云原生-6-81", + "seg": [ + [ + [ + "示例", + "演示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-512", + "seg": [ + [ + [ + "示例", + "演示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-291", + "seg": [ + [ + [ + "linkerd", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-69", + "seg": [ + [ + [ + "基础", + "篇" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "53122999" + ] + } + } + } + } + }, + { + "中级篇": { + "children": [ + { + "深入浅出Linkerd配置": { + "children": [ + { + "Linkerd术语": { + "data": { + "uuid": "云原生-5-513", + "seg": [ + [ + [ + "linkerd", + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linkerd配置": { + "children": [ + { + "配置构成": { + "data": { + "uuid": "云原生-6-82", + "seg": [ + [ + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51235898", + "52278376", + "117787705", + "67636240", + "80555526", + "97886185", + "51919553", + "90632239", + "89679004", + "104558908" + ] + } + } + } + } + }, + { + "admin": { + "data": { + "uuid": "云原生-6-83", + "seg": [ + [ + [ + "admin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "namer": { + "data": { + "uuid": "云原生-6-84", + "seg": [ + [ + [ + "namer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "router": { + "data": { + "uuid": "云原生-6-85", + "seg": [ + [ + [ + "router" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "telemetry": { + "data": { + "uuid": "云原生-6-86", + "seg": [ + [ + [ + "telemetry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "usage": { + "data": { + "uuid": "云原生-6-87", + "seg": [ + [ + [ + "usage" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-514", + "seg": [ + [ + [ + "linkerd", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-292", + "seg": [ + [ + [ + "深入浅出", + "linkerd", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入Linkerd数据访问流": { + "children": [ + { + "dtab详解": { + "children": [ + { + "dtab定义": { + "data": { + "uuid": "云原生-6-88", + "seg": [ + [ + [ + "dtab", + "定义" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "dtab路由原理": { + "data": { + "uuid": "云原生-6-89", + "seg": [ + [ + [ + "dtab", + "路由", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-515", + "seg": [ + [ + [ + "dtab", + "详解" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "数据访问流详解": { + "children": [ + { + "鉴别": { + "data": { + "uuid": "云原生-6-90", + "seg": [ + [ + [ + "鉴别" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "绑定": { + "data": { + "uuid": "云原生-6-91", + "seg": [ + [ + [ + "绑定" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "解析": { + "data": { + "uuid": "云原生-6-92", + "seg": [ + [ + [ + "解析" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "78496778" + ] + } + } + } + } + }, + { + "转换": { + "data": { + "uuid": "云原生-6-93", + "seg": [ + [ + [ + "转换" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-516", + "seg": [ + [ + [ + "数据", + "访问", + "流", + "详解" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "109174606" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-293", + "seg": [ + [ + [ + "linkerd", + "数据", + "访问", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Linkerd部署模式": { + "children": [ + { + "Linkerd部署模式": { + "children": [ + { + "Per-host模式": { + "data": { + "uuid": "云原生-6-94", + "seg": [ + [ + [ + "per", + "host", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sidecar模式": { + "data": { + "uuid": "云原生-6-95", + "seg": [ + [ + [ + "sidecar", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Per-host模式和Sidecar模式": { + "data": { + "uuid": "云原生-6-96", + "seg": [ + [ + [ + "per", + "host", + "模式" + ], + [ + "sidecar", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-517", + "seg": [ + [ + [ + "linkerd", + "部署", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置模型": { + "children": [ + { + "service-to-linker模型": { + "data": { + "uuid": "云原生-6-97", + "seg": [ + [ + [ + "service", + "to", + "linker", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "linker-to-service模型": { + "data": { + "uuid": "云原生-6-98", + "seg": [ + [ + [ + "linker", + "to", + "service", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "linker-to-linker模型": { + "data": { + "uuid": "云原生-6-99", + "seg": [ + [ + [ + "linker", + "to", + "模型" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "44156895", + "7901687", + "80753051", + "6636549", + "103260026", + "108763398" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-518", + "seg": [ + [ + [ + "配置", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-294", + "seg": [ + [ + [ + "linkerd", + "部署", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linkerd控制层:Namerd": { + "children": [ + { + "Namerd简介": { + "data": { + "uuid": "云原生-5-519", + "seg": [ + [ + [ + "namerd", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Namerd配置详解": { + "children": [ + { + "admin配置": { + "data": { + "uuid": "云原生-6-100", + "seg": [ + [ + [ + "admin", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "interface配置": { + "data": { + "uuid": "云原生-6-101", + "seg": [ + [ + [ + "interface", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "storage配置": { + "data": { + "uuid": "云原生-6-102", + "seg": [ + [ + [ + "storage", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "namer配置": { + "data": { + "uuid": "云原生-6-103", + "seg": [ + [ + [ + "namer", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-520", + "seg": [ + [ + [ + "namerd", + "配置", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接Linkerd和Namerd": { + "children": [ + { + "准备Namerd配置文件": { + "data": { + "uuid": "云原生-6-104", + "seg": [ + [ + [ + "namerd", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动Namerd": { + "data": { + "uuid": "云原生-6-105", + "seg": [ + [ + [ + "启动", + "namerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "准备Linkerd配置文件": { + "data": { + "uuid": "云原生-6-106", + "seg": [ + [ + [ + "linkerd", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动Linkerd": { + "data": { + "uuid": "云原生-6-107", + "seg": [ + [ + [ + "启动", + "linkerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-521", + "seg": [ + [ + [ + "连接", + "linkerd" + ], + [ + "namerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理dtab路由": { + "children": [ + { + "Namerd API简介": { + "data": { + "uuid": "云原生-6-108", + "seg": [ + [ + [ + "namerd", + "api", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过Namerd API管理dtab": { + "data": { + "uuid": "云原生-6-109", + "seg": [ + [ + [ + "namerd", + "api", + "管理", + "dtab" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过namerctl CLI管理dtab": { + "data": { + "uuid": "云原生-6-110", + "seg": [ + [ + [ + "namerctl", + "cli", + "管理", + "dtab" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-522", + "seg": [ + [ + [ + "管理", + "dtab", + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-295", + "seg": [ + [ + [ + "linkerd", + "控制", + "层" + ] + ], + [ + [ + "namerd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "东西向流量控制": { + "children": [ + { + "Istio东西向流量管理": { + "data": { + "uuid": "云原生-5-523", + "seg": [ + [ + [ + "istio", + "东西向", + "流量", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio路由控制": { + "data": { + "uuid": "云原生-5-524", + "seg": [ + [ + [ + "istio", + "路由", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现东西向流量转移路由": { + "data": { + "uuid": "云原生-5-525", + "seg": [ + [ + [ + "东西向", + "流量", + "转移", + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现流量镜像及对比分析": { + "data": { + "uuid": "云原生-5-526", + "seg": [ + [ + [ + "流量", + "镜像" + ], + [ + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-296", + "seg": [ + [ + [ + "东西向", + "流量", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "南北向流量控制": { + "children": [ + { + "Istio南北向流量管理": { + "data": { + "uuid": "云原生-5-527", + "seg": [ + [ + [ + "istio", + "南北向", + "流量", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio网关与K8s Ingress": { + "data": { + "uuid": "云原生-5-528", + "seg": [ + [ + [ + "istio", + "网关" + ], + [ + "k8s", + "ingress" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保护Istio网关流量": { + "data": { + "uuid": "云原生-5-529", + "seg": [ + [ + [ + "保护", + "istio", + "网关", + "流量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现入口流量路由的统一管理": { + "data": { + "uuid": "云原生-5-530", + "seg": [ + [ + [ + "入口", + "流量", + "路由", + "统一", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现出口流量路由的统一管理": { + "data": { + "uuid": "云原生-5-531", + "seg": [ + [ + [ + "出口", + "流量", + "路由", + "统一", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-297", + "seg": [ + [ + [ + "南北向", + "流量", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全": { + "children": [ + { + "Citadel架构设计": { + "data": { + "uuid": "云原生-5-532", + "seg": [ + [ + [ + "citadel", + "架构设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "认证机制": { + "data": { + "uuid": "云原生-5-533", + "seg": [ + [ + [ + "认证", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "授权机制": { + "data": { + "uuid": "云原生-5-534", + "seg": [ + [ + [ + "授权", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用认证策略": { + "data": { + "uuid": "云原生-5-535", + "seg": [ + [ + [ + "认证", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用双向认证": { + "data": { + "uuid": "云原生-5-536", + "seg": [ + [ + [ + "双向", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消除Privileged容器提升安全性": { + "data": { + "uuid": "云原生-5-537", + "seg": [ + [ + [ + "消除", + "privileged", + "容器", + "提升", + "安全性" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "43499409" + ] + } + } + } + } + }, + { + "通过NetworkPolicy增强安全性": { + "data": { + "uuid": "云原生-5-538", + "seg": [ + [ + [ + "networkpolicy", + "增强", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-298", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer控制与观测": { + "children": [ + { + "Mixer架构设计": { + "data": { + "uuid": "云原生-5-539", + "seg": [ + [ + [ + "mixer", + "架构设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "适配器机制": { + "data": { + "uuid": "云原生-5-540", + "seg": [ + [ + [ + "适配器", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用速率限制策略": { + "data": { + "uuid": "云原生-5-541", + "seg": [ + [ + [ + "速率", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用黑白名单策略": { + "data": { + "uuid": "云原生-5-542", + "seg": [ + [ + [ + "名单", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用基于Zipkin与Jaeger的分布式跟踪": { + "data": { + "uuid": "云原生-5-543", + "seg": [ + [ + [ + "zipkin" + ], + [ + "jaeger", + "分布式", + "跟踪" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成度量数据收集": { + "data": { + "uuid": "云原生-5-544", + "seg": [ + [ + [ + "集成度", + "量", + "数据", + "收集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成日志数据收集": { + "data": { + "uuid": "云原生-5-545", + "seg": [ + [ + [ + "集成", + "日志", + "数据", + "收集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-299", + "seg": [ + [ + [ + "mixer", + "控制" + ], + [ + "观测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-70", + "seg": [ + [ + [ + "中级", + "篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原理篇": { + "children": [ + { + "你好,Istio": { + "children": [ + { + "通过示例看看Istio能做什么": { + "data": { + "uuid": "云原生-5-546", + "seg": [ + [ + [ + "示例", + "istio", + "做" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-300", + "seg": [ + [ + [ + "你好", + "istio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio架构概述": { + "children": [ + { + "Istio的工作机制": { + "data": { + "uuid": "云原生-5-547", + "seg": [ + [ + [ + "istio", + "工作", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio的服务模型": { + "children": [ + { + "Istio的服务": { + "data": { + "uuid": "云原生-6-111", + "seg": [ + [ + [ + "istio", + "服务" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80804580", + "79127353", + "103903309", + "100833886", + "82350106" + ] + } + } + } + } + }, + { + "Istio的服务版本": { + "data": { + "uuid": "云原生-6-112", + "seg": [ + [ + [ + "istio", + "服务", + "版本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-548", + "seg": [ + [ + [ + "istio", + "服务", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio的主要组件": { + "children": [ + { + "istio-pilot": { + "data": { + "uuid": "云原生-6-113", + "seg": [ + [ + [ + "istio", + "pilot" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "92000621", + "103941348" + ] + } + } + } + } + }, + { + "istio-telemetry": { + "data": { + "uuid": "云原生-6-114", + "seg": [ + [ + [ + "istio", + "telemetry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "istio-policy": { + "data": { + "uuid": "云原生-6-115", + "seg": [ + [ + [ + "istio", + "policy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "istio-citadel": { + "data": { + "uuid": "云原生-6-116", + "seg": [ + [ + [ + "istio", + "citadel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "istio-galley": { + "data": { + "uuid": "云原生-6-117", + "seg": [ + [ + [ + "istio", + "galley" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "istio-sidecar-injector": { + "data": { + "uuid": "云原生-6-118", + "seg": [ + [ + [ + "istio", + "sidecar", + "injector" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "istio-proxy": { + "data": { + "uuid": "云原生-6-119", + "seg": [ + [ + [ + "istio", + "proxy" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "39475765" + ] + } + } + } + } + }, + { + "istio-ingressgateway": { + "data": { + "uuid": "云原生-6-120", + "seg": [ + [ + [ + "istio", + "ingressgateway" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89035105" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-549", + "seg": [ + [ + [ + "istio", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-301", + "seg": [ + [ + [ + "istio", + "架构", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "非侵入的流量治理": { + "children": [ + { + "Istio流量治理的原理": { + "children": [ + { + "服务熔断": { + "data": { + "uuid": "云原生-6-121", + "seg": [ + [ + [ + "服务", + "熔断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "故障注入": { + "children": [ + { + "延迟注入": { + "data": { + "uuid": "云原生-7-30", + "seg": [ + [ + [ + "延迟", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "中断注入": { + "data": { + "uuid": "云原生-7-31", + "seg": [ + [ + [ + "中断", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-122", + "seg": [ + [ + [ + "故障注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "灰度发布": { + "children": [ + { + "预先准备:将所有流量都路由到各个服务的v1版本": { + "data": { + "uuid": "云原生-7-32", + "seg": [ + [ + [ + "预先" + ] + ], + [ + [ + "流量", + "路由", + "服务", + "v1", + "版本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于流量比例的路由": { + "data": { + "uuid": "云原生-7-33", + "seg": [ + [ + [ + "流量", + "比例", + "路由" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81232992" + ] + } + } + } + } + }, + { + "基于请求内容的路由": { + "data": { + "uuid": "云原生-7-34", + "seg": [ + [ + [ + "内容", + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组合条件路由": { + "data": { + "uuid": "云原生-7-35", + "seg": [ + [ + [ + "组合", + "条件", + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多服务灰度发布": { + "data": { + "uuid": "云原生-7-36", + "seg": [ + [ + [ + "服务", + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TCP服务灰度发布": { + "data": { + "uuid": "云原生-7-37", + "seg": [ + [ + [ + "tcp", + "服务", + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化灰度发布": { + "children": [ + { + "正常发布": { + "data": { + "uuid": "云原生-8-3", + "seg": [ + [ + [ + "发布" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111030263" + ] + } + } + } + } + }, + { + "异常发布": { + "data": { + "uuid": "云原生-8-4", + "seg": [ + [ + [ + "异常", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-7-38", + "seg": [ + [ + [ + "自动化", + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-123", + "seg": [ + [ + [ + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务访问入口": { + "data": { + "uuid": "云原生-6-124", + "seg": [ + [ + [ + "服务", + "访问", + "入口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "外部接入服务治理": { + "data": { + "uuid": "云原生-6-125", + "seg": [ + [ + [ + "外部", + "接入", + "服务", + "治理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-550", + "seg": [ + [ + [ + "istio", + "流量", + "治理", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio路由规则配置:VirtualService": { + "children": [ + { + "路由规则配置示例": { + "data": { + "uuid": "云原生-6-126", + "seg": [ + [ + [ + "路由", + "规则", + "配置", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "路由规则定义": { + "data": { + "uuid": "云原生-6-127", + "seg": [ + [ + [ + "路由", + "规则", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP路由(HTTPRoute)": { + "data": { + "uuid": "云原生-6-128", + "seg": [ + [ + [ + "http", + "路由", + "httproute" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TLS路由(TLSRoute)": { + "data": { + "uuid": "云原生-6-129", + "seg": [ + [ + [ + "tls", + "路由", + "tlsroute" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TCP路由(TCPRoute)": { + "data": { + "uuid": "云原生-6-130", + "seg": [ + [ + [ + "tcp", + "路由", + "tcproute" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "98946090", + "76528206" + ] + } + } + } + } + }, + { + "三种协议路由规则的对比": { + "data": { + "uuid": "云原生-6-131", + "seg": [ + [ + [ + "协议", + "路由", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "VirtualService的典型应用": { + "data": { + "uuid": "云原生-6-132", + "seg": [ + [ + [ + "virtualservice", + "典型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-551", + "seg": [ + [ + [ + "istio", + "路由", + "规则", + "配置" + ] + ], + [ + [ + "virtualservice" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio目标规则配置:DestinationRule": { + "children": [ + { + "DestinationRule配置示例": { + "data": { + "uuid": "云原生-6-133", + "seg": [ + [ + [ + "destinationrule", + "配置", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DestinationRule规则定义": { + "data": { + "uuid": "云原生-6-134", + "seg": [ + [ + [ + "destinationrule", + "规则", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DestinationRule的典型应用": { + "data": { + "uuid": "云原生-6-135", + "seg": [ + [ + [ + "destinationrule", + "典型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-552", + "seg": [ + [ + [ + "istio", + "目标", + "规则", + "配置" + ] + ], + [ + [ + "destinationrule" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio服务网关配置:Gateway": { + "children": [ + { + "Gateway配置示例": { + "data": { + "uuid": "云原生-6-136", + "seg": [ + [ + [ + "gateway", + "配置", + "示例" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114500414", + "42422057", + "87873660", + "83863763", + "50537363", + "109118207", + "109504218", + "74951590", + "85255338", + "109483842" + ] + } + } + } + } + }, + { + "Gateway规则定义": { + "data": { + "uuid": "云原生-6-137", + "seg": [ + [ + [ + "gateway", + "规则", + "定义" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108328767" + ] + } + } + } + } + }, + { + "Gateway的典型应用": { + "data": { + "uuid": "云原生-6-138", + "seg": [ + [ + [ + "gateway", + "典型" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "102469745", + "85346170", + "105579033", + "108230113", + "99656413", + "109100433", + "78739661", + "72356586", + "42062071", + "107839335" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-553", + "seg": [ + [ + [ + "istio", + "服务", + "网关", + "配置" + ] + ], + [ + [ + "gateway" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio外部服务配置:ServiceEntry": { + "children": [ + { + "ServiceEntry配置示例": { + "data": { + "uuid": "云原生-6-139", + "seg": [ + [ + [ + "serviceentry", + "配置", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServiceEntry规则的定义和用法": { + "data": { + "uuid": "云原生-6-140", + "seg": [ + [ + [ + "serviceentry", + "规则", + "定义" + ], + [ + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServiceEntry的典型应用": { + "data": { + "uuid": "云原生-6-141", + "seg": [ + [ + [ + "serviceentry", + "典型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-554", + "seg": [ + [ + [ + "istio", + "外部", + "服务", + "配置" + ] + ], + [ + [ + "serviceentry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio代理规则配置:Sidecar": { + "children": [ + { + "Sidecar配置示例": { + "data": { + "uuid": "云原生-6-142", + "seg": [ + [ + [ + "sidecar", + "配置", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sidecar规则定义": { + "data": { + "uuid": "云原生-6-143", + "seg": [ + [ + [ + "sidecar", + "规则", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-555", + "seg": [ + [ + [ + "istio", + "代理", + "规则", + "配置" + ] + ], + [ + [ + "sidecar" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-302", + "seg": [ + [ + [ + "侵入", + "流量", + "治理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可扩展的策略和遥测": { + "children": [ + { + "Istio策略和遥测的原理": { + "children": [ + { + "应用场景": { + "data": { + "uuid": "云原生-6-144", + "seg": [ + [ + [ + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "工作原理": { + "data": { + "uuid": "云原生-6-145", + "seg": [ + [ + [ + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84854824", + "106676776", + "102917780" + ] + } + } + } + } + }, + { + "属性": { + "data": { + "uuid": "云原生-6-146", + "seg": [ + [ + [ + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer的配置模型": { + "data": { + "uuid": "云原生-6-147", + "seg": [ + [ + [ + "mixer", + "配置", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-556", + "seg": [ + [ + [ + "istio", + "策略" + ], + [ + "遥测", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio遥测适配器配置": { + "children": [ + { + "Prometheus适配器": { + "data": { + "uuid": "云原生-6-148", + "seg": [ + [ + [ + "prometheus", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fluentd适配器": { + "data": { + "uuid": "云原生-6-149", + "seg": [ + [ + [ + "fluentd", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatsD适配器": { + "data": { + "uuid": "云原生-6-150", + "seg": [ + [ + [ + "statsd", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Stdio适配器": { + "data": { + "uuid": "云原生-6-151", + "seg": [ + [ + [ + "stdio", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Zipkin适配器": { + "data": { + "uuid": "云原生-6-152", + "seg": [ + [ + [ + "zipkin", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "厂商适配器": { + "data": { + "uuid": "云原生-6-153", + "seg": [ + [ + [ + "厂商", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-557", + "seg": [ + [ + [ + "istio", + "遥测", + "适配器", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio策略适配器配置": { + "children": [ + { + "List适配器": { + "data": { + "uuid": "云原生-6-154", + "seg": [ + [ + [ + "list", + "适配器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81477649", + "55061737", + "117406359", + "47759729", + "47983033", + "117467942", + "8525451", + "41368989", + "56831089", + "8572000" + ] + } + } + } + } + }, + { + "Denier适配器": { + "data": { + "uuid": "云原生-6-155", + "seg": [ + [ + [ + "denier", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Memory Quota适配器": { + "data": { + "uuid": "云原生-6-156", + "seg": [ + [ + [ + "memory", + "quota", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Redis Quota适配器": { + "data": { + "uuid": "云原生-6-157", + "seg": [ + [ + [ + "redis", + "quota", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-558", + "seg": [ + [ + [ + "istio", + "策略", + "适配器", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes Env适配器配置": { + "data": { + "uuid": "云原生-5-559", + "seg": [ + [ + [ + "kubernetes", + "env", + "适配器", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-303", + "seg": [ + [ + [ + "扩展", + "策略" + ], + [ + "遥测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可插拔的服务安全": { + "children": [ + { + "Istio服务安全的原理": { + "children": [ + { + "认证": { + "data": { + "uuid": "云原生-6-158", + "seg": [ + [ + [ + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "授权": { + "children": [ + { + "命名空间级别的访问控制": { + "data": { + "uuid": "云原生-7-39", + "seg": [ + [ + [ + "命名", + "空间", + "级别", + "访问控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务级别的访问控制": { + "data": { + "uuid": "云原生-7-40", + "seg": [ + [ + [ + "服务", + "级别", + "访问控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-159", + "seg": [ + [ + [ + "授权" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "密钥证书管理": { + "data": { + "uuid": "云原生-6-160", + "seg": [ + [ + [ + "密钥", + "证书", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-560", + "seg": [ + [ + [ + "istio", + "服务", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio服务认证配置": { + "children": [ + { + "认证策略配置示例": { + "data": { + "uuid": "云原生-6-161", + "seg": [ + [ + [ + "认证", + "策略", + "配置", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "认证策略的定义": { + "data": { + "uuid": "云原生-6-162", + "seg": [ + [ + [ + "认证", + "策略", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TLS访问配置": { + "data": { + "uuid": "云原生-6-163", + "seg": [ + [ + [ + "tls", + "访问", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "认证策略的典型应用": { + "data": { + "uuid": "云原生-6-164", + "seg": [ + [ + [ + "认证", + "策略", + "典型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-561", + "seg": [ + [ + [ + "istio", + "服务", + "认证", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio服务授权配置": { + "children": [ + { + "授权启用配置": { + "data": { + "uuid": "云原生-6-165", + "seg": [ + [ + [ + "授权", + "启用", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110879101" + ] + } + } + } + } + }, + { + "授权策略配置": { + "data": { + "uuid": "云原生-6-166", + "seg": [ + [ + [ + "授权", + "策略", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "授权策略的典型应用": { + "data": { + "uuid": "云原生-6-167", + "seg": [ + [ + [ + "授权", + "策略", + "典型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-562", + "seg": [ + [ + [ + "istio", + "服务", + "授权", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-304", + "seg": [ + [ + [ + "插拔", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "透明的Sidecar机制": { + "children": [ + { + "Sidecar注入": { + "children": [ + { + "Sidecar Injector自动注入的原理": { + "data": { + "uuid": "云原生-6-168", + "seg": [ + [ + [ + "sidecar", + "injector", + "自动", + "注入", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sidecar注入的实现": { + "data": { + "uuid": "云原生-6-169", + "seg": [ + [ + [ + "sidecar", + "注入" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "102983834", + "81281327" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-563", + "seg": [ + [ + [ + "sidecar", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sidecar流量拦截": { + "children": [ + { + "iptables的基本原理": { + "data": { + "uuid": "云原生-6-170", + "seg": [ + [ + [ + "iptables", + "基本原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "iptables的规则设置": { + "data": { + "uuid": "云原生-6-171", + "seg": [ + [ + [ + "iptables", + "规则", + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流量拦截原理": { + "data": { + "uuid": "云原生-6-172", + "seg": [ + [ + [ + "流量", + "拦截", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-564", + "seg": [ + [ + [ + "sidecar", + "流量", + "拦截" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-305", + "seg": [ + [ + [ + "透明", + "sidecar", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多集群服务治理": { + "children": [ + { + "Istio多集群服务治理": { + "children": [ + { + "Istio多集群的相关概念": { + "data": { + "uuid": "云原生-6-173", + "seg": [ + [ + [ + "istio", + "集群", + "相关", + "概念" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "56673522" + ] + } + } + } + } + }, + { + "Istio多集群服务治理现状": { + "data": { + "uuid": "云原生-6-174", + "seg": [ + [ + [ + "istio", + "集群", + "服务", + "治理", + "现状" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78292448", + "79987802", + "114974691", + "84312543", + "115586468", + "76167159", + "115357298", + "82428279" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-565", + "seg": [ + [ + [ + "istio", + "集群", + "服务", + "治理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多集群模式1:多控制面": { + "children": [ + { + "服务DNS解析的原理": { + "data": { + "uuid": "云原生-6-175", + "seg": [ + [ + [ + "服务", + "dns", + "解析", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "105358762" + ] + } + } + } + } + }, + { + "Gateway连接的原理": { + "data": { + "uuid": "云原生-6-176", + "seg": [ + [ + [ + "gateway", + "连接", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-566", + "seg": [ + [ + [ + "集群", + "模式" + ] + ], + [ + [ + "控制", + "面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多集群模式2:VPN直连单控制面": { + "data": { + "uuid": "云原生-5-567", + "seg": [ + [ + [ + "集群", + "模式" + ] + ], + [ + [ + "vpn", + "直", + "连单", + "控制", + "面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多集群模式3:集群感知服务路由单控制面": { + "data": { + "uuid": "云原生-5-568", + "seg": [ + [ + [ + "集群", + "模式" + ] + ], + [ + [ + "集群", + "感知", + "服务", + "路由", + "单", + "控制", + "面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-306", + "seg": [ + [ + [ + "集群", + "服务", + "治理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-71", + "seg": [ + [ + [ + "原理篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实践篇": { + "children": [ + { + "流量监控": { + "children": [ + { + "调用链跟踪": { + "data": { + "uuid": "云原生-5-569", + "seg": [ + [ + [ + "调用", + "链", + "跟踪" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "99641821" + ] + } + } + } + } + }, + { + "指标监控": { + "children": [ + { + "Grafana": { + "data": { + "uuid": "云原生-6-177", + "seg": [ + [ + [ + "grafana" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-570", + "seg": [ + [ + [ + "指标", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务网格监控": { + "data": { + "uuid": "云原生-5-571", + "seg": [ + [ + [ + "服务", + "网格", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-307", + "seg": [ + [ + [ + "流量", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流量治理": { + "children": [ + { + "流量负载均衡": { + "children": [ + { + "ROUND_ROBIN模式": { + "data": { + "uuid": "云原生-6-178", + "seg": [ + [ + [ + "round", + "robin", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RANDOM模式": { + "data": { + "uuid": "云原生-6-179", + "seg": [ + [ + [ + "random", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-572", + "seg": [ + [ + [ + "流量", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "会话保持": { + "data": { + "uuid": "云原生-5-573", + "seg": [ + [ + [ + "话" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "超时": { + "data": { + "uuid": "云原生-5-574", + "seg": [ + [ + [ + "超时" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重试": { + "data": { + "uuid": "云原生-5-575", + "seg": [ + [ + [ + "重试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP重定向": { + "data": { + "uuid": "云原生-5-576", + "seg": [ + [ + [ + "http", + "重定向" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP重写": { + "data": { + "uuid": "云原生-5-577", + "seg": [ + [ + [ + "http", + "重写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "熔断": { + "data": { + "uuid": "云原生-5-578", + "seg": [ + [ + [ + "熔断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务隔离": { + "data": { + "uuid": "云原生-5-579", + "seg": [ + [ + [ + "服务", + "隔离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用流量策略": { + "data": { + "uuid": "云原生-5-580", + "seg": [ + [ + [ + "流量", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置负载均衡": { + "data": { + "uuid": "云原生-5-581", + "seg": [ + [ + [ + "设置", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理连接池": { + "data": { + "uuid": "云原生-5-582", + "seg": [ + [ + [ + "管理", + "连接池" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增强路由规则": { + "data": { + "uuid": "云原生-5-583", + "seg": [ + [ + [ + "增强", + "路由", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混沌工程之熔断": { + "data": { + "uuid": "云原生-5-584", + "seg": [ + [ + [ + "混沌", + "工程", + "熔断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "混沌工程之故障注入": { + "data": { + "uuid": "云原生-5-585", + "seg": [ + [ + [ + "混沌", + "工程", + "故障注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-308", + "seg": [ + [ + [ + "流量", + "治理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务保护": { + "children": [ + { + "网关加密": { + "children": [ + { + "单向TLS网关": { + "data": { + "uuid": "云原生-6-180", + "seg": [ + [ + [ + "单向", + "tls", + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "双向TLS网关": { + "data": { + "uuid": "云原生-6-181", + "seg": [ + [ + [ + "双向", + "tls", + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用SDS加密网关": { + "data": { + "uuid": "云原生-6-182", + "seg": [ + [ + [ + "sds", + "加密", + "网关" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-586", + "seg": [ + [ + [ + "网关", + "加密" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问控制": { + "children": [ + { + "黑名单": { + "data": { + "uuid": "云原生-6-183", + "seg": [ + [ + [ + "黑名单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "白名单": { + "data": { + "uuid": "云原生-6-184", + "seg": [ + [ + [ + "白名单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-587", + "seg": [ + [ + [ + "访问控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-309", + "seg": [ + [ + [ + "服务", + "保护" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多集群管理": { + "data": { + "uuid": "云原生-4-310", + "seg": [ + [ + [ + "集群", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-72", + "seg": [ + [ + [ + "实践", + "篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构篇": { + "children": [ + { + "司令官Pilot": { + "children": [ + { + "Pilot的架构": { + "children": [ + { + "xDS协议": { + "data": { + "uuid": "云原生-6-185", + "seg": [ + [ + [ + "xds", + "协议" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "116943268" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-588", + "seg": [ + [ + [ + "pilot", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pilot的工作流程": { + "children": [ + { + "Pilot的启动与初始化": { + "data": { + "uuid": "云原生-6-186", + "seg": [ + [ + [ + "pilot", + "启动" + ], + [ + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置规则发现": { + "data": { + "uuid": "云原生-6-187", + "seg": [ + [ + [ + "配置", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的配置分发": { + "data": { + "uuid": "云原生-6-188", + "seg": [ + [ + [ + "envoy", + "配置", + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-589", + "seg": [ + [ + [ + "pilot", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pilot的插件": { + "children": [ + { + "安全插件": { + "data": { + "uuid": "云原生-6-189", + "seg": [ + [ + [ + "插件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80479051", + "53708758", + "117434069" + ] + } + } + } + } + }, + { + "健康检查插件": { + "data": { + "uuid": "云原生-6-190", + "seg": [ + [ + [ + "健康检查", + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer插件": { + "data": { + "uuid": "云原生-6-191", + "seg": [ + [ + [ + "mixer", + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-590", + "seg": [ + [ + [ + "pilot", + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pilot的设计亮点": { + "children": [ + { + "三级缓存优化": { + "data": { + "uuid": "云原生-6-192", + "seg": [ + [ + [ + "三级", + "缓存", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "去抖动分发": { + "data": { + "uuid": "云原生-6-193", + "seg": [ + [ + [ + "抖动", + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "增量EDS": { + "data": { + "uuid": "云原生-6-194", + "seg": [ + [ + [ + "增量", + "eds" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源隔离": { + "data": { + "uuid": "云原生-6-195", + "seg": [ + [ + [ + "资源", + "隔离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-591", + "seg": [ + [ + [ + "pilot", + "设计", + "亮点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-311", + "seg": [ + [ + [ + "司令官", + "pilot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "守护神Mixer": { + "children": [ + { + "Mixer的整体架构": { + "data": { + "uuid": "云原生-5-592", + "seg": [ + [ + [ + "mixer", + "整体", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer的服务模型": { + "children": [ + { + "Template": { + "data": { + "uuid": "云原生-6-196", + "seg": [ + [ + [ + "template" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "102651461" + ] + } + } + } + } + }, + { + "Adapter": { + "data": { + "uuid": "云原生-6-197", + "seg": [ + [ + [ + "adapter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-593", + "seg": [ + [ + [ + "mixer", + "服务", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer的工作流程": { + "children": [ + { + "启动初始化": { + "data": { + "uuid": "云原生-6-198", + "seg": [ + [ + [ + "启动", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用户配置信息规则处理": { + "data": { + "uuid": "云原生-6-199", + "seg": [ + [ + [ + "用户", + "配置", + "信息", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问策略的执行": { + "data": { + "uuid": "云原生-6-200", + "seg": [ + [ + [ + "访问", + "策略", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无侵入遥测": { + "data": { + "uuid": "云原生-6-201", + "seg": [ + [ + [ + "侵入", + "遥测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-594", + "seg": [ + [ + [ + "mixer", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer的设计亮点": { + "data": { + "uuid": "云原生-5-595", + "seg": [ + [ + [ + "mixer", + "设计", + "亮点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何开发Mixer Adapter": { + "children": [ + { + "Adapter实现概述": { + "data": { + "uuid": "云原生-6-202", + "seg": [ + [ + [ + "adapter", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内置式Adapter的开发步骤": { + "data": { + "uuid": "云原生-6-203", + "seg": [ + [ + [ + "内置式", + "adapter", + "开发", + "步骤" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "独立进程式Adapter的开发步骤": { + "data": { + "uuid": "云原生-6-204", + "seg": [ + [ + [ + "独立", + "进程", + "adapter", + "开发", + "步骤" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "46516559" + ] + } + } + } + } + }, + { + "独立仓库式Adapter的开发步骤": { + "data": { + "uuid": "云原生-6-205", + "seg": [ + [ + [ + "独立", + "仓库", + "adapter", + "开发", + "步骤" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-596", + "seg": [ + [ + [ + "开发", + "mixer", + "adapter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-312", + "seg": [ + [ + [ + "守护神", + "mixer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全碉堡Citadel": { + "children": [ + { + "Citadel的架构": { + "data": { + "uuid": "云原生-5-597", + "seg": [ + [ + [ + "citadel", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Citadel的工作流程": { + "children": [ + { + "启动初始化": { + "data": { + "uuid": "云原生-6-206", + "seg": [ + [ + [ + "启动", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "证书控制器": { + "data": { + "uuid": "云原生-6-207", + "seg": [ + [ + [ + "证书", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gRPC服务器": { + "data": { + "uuid": "云原生-6-208", + "seg": [ + [ + [ + "grpc", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "证书轮换器": { + "data": { + "uuid": "云原生-6-209", + "seg": [ + [ + [ + "证书", + "轮换", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SDS服务器": { + "data": { + "uuid": "云原生-6-210", + "seg": [ + [ + [ + "sds", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-598", + "seg": [ + [ + [ + "citadel", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-313", + "seg": [ + [ + [ + "碉堡", + "citadel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高性能代理Envoy": { + "children": [ + { + "Envoy的架构": { + "data": { + "uuid": "云原生-5-599", + "seg": [ + [ + [ + "envoy", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的特性": { + "data": { + "uuid": "云原生-5-600", + "seg": [ + [ + [ + "envoy", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的模块结构": { + "data": { + "uuid": "云原生-5-601", + "seg": [ + [ + [ + "envoy", + "模块", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的线程模型": { + "data": { + "uuid": "云原生-5-602", + "seg": [ + [ + [ + "envoy", + "线程", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的内存管理": { + "children": [ + { + "变量管理": { + "data": { + "uuid": "云原生-6-211", + "seg": [ + [ + [ + "变量", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Buffer管理": { + "data": { + "uuid": "云原生-6-212", + "seg": [ + [ + [ + "buffer", + "管理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "7484627" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-603", + "seg": [ + [ + [ + "envoy", + "内存", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的流量控制": { + "data": { + "uuid": "云原生-5-604", + "seg": [ + [ + [ + "envoy", + "流量", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-314", + "seg": [ + [ + [ + "高性能", + "代理", + "envoy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代理守护进程Pilot-agent": { + "children": [ + { + "Pilot-agent的工作流程": { + "children": [ + { + "Envoy的启动": { + "data": { + "uuid": "云原生-6-213", + "seg": [ + [ + [ + "envoy", + "启动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的热重启": { + "data": { + "uuid": "云原生-6-214", + "seg": [ + [ + [ + "envoy", + "热", + "重启" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "守护Envoy": { + "data": { + "uuid": "云原生-6-215", + "seg": [ + [ + [ + "守护", + "envoy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优雅退出": { + "data": { + "uuid": "云原生-6-216", + "seg": [ + [ + [ + "优雅", + "退出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-605", + "seg": [ + [ + [ + "pilot", + "agent", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-315", + "seg": [ + [ + [ + "代理", + "守护", + "进程", + "pilot", + "agent" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置中心Galley": { + "children": [ + { + "Galley的架构": { + "children": [ + { + "MCP": { + "data": { + "uuid": "云原生-6-217", + "seg": [ + [ + [ + "mcp" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MCP API": { + "data": { + "uuid": "云原生-6-218", + "seg": [ + [ + [ + "mcp", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-606", + "seg": [ + [ + [ + "galley", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80913058" + ] + } + } + } + } + }, + { + "Galley的工作流程": { + "children": [ + { + "启动初始化": { + "data": { + "uuid": "云原生-6-219", + "seg": [ + [ + [ + "启动", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置校验": { + "data": { + "uuid": "云原生-6-220", + "seg": [ + [ + [ + "配置", + "校验" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置聚合与分发": { + "data": { + "uuid": "云原生-6-221", + "seg": [ + [ + [ + "配置", + "聚合" + ], + [ + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-607", + "seg": [ + [ + [ + "galley", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-316", + "seg": [ + [ + [ + "配置", + "中心", + "galley" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-73", + "seg": [ + [ + [ + "架构", + "篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "源码篇": { + "children": [ + { + "Pilot源码解析": { + "children": [ + { + "进程启动流程": { + "data": { + "uuid": "云原生-5-608", + "seg": [ + [ + [ + "进程", + "启动", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "children": [ + { + "ConfigController": { + "data": { + "uuid": "云原生-6-222", + "seg": [ + [ + [ + "configcontroller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ServiceController": { + "data": { + "uuid": "云原生-6-223", + "seg": [ + [ + [ + "servicecontroller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "xDS异步分发": { + "data": { + "uuid": "云原生-6-224", + "seg": [ + [ + [ + "xds", + "异步", + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置更新预处理": { + "data": { + "uuid": "云原生-6-225", + "seg": [ + [ + [ + "配置", + "更新", + "预处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-609", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-317", + "seg": [ + [ + [ + "pilot", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Mixer源码解析": { + "children": [ + { + "进程启动流程": { + "children": [ + { + "runServer通过newServer新建Server对象": { + "data": { + "uuid": "云原生-6-226", + "seg": [ + [ + [ + "runserver", + "newserver", + "新建", + "server", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动Mixer gRPC Server": { + "data": { + "uuid": "云原生-6-227", + "seg": [ + [ + [ + "启动", + "mixer", + "grpc", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-610", + "seg": [ + [ + [ + "进程", + "启动", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "children": [ + { + "监听用户的配置": { + "data": { + "uuid": "云原生-6-228", + "seg": [ + [ + [ + "监听", + "用户", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建数据模型": { + "data": { + "uuid": "云原生-6-229", + "seg": [ + [ + [ + "构建", + "数据模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Check接口": { + "data": { + "uuid": "云原生-6-230", + "seg": [ + [ + [ + "check", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Report接口": { + "data": { + "uuid": "云原生-6-231", + "seg": [ + [ + [ + "report", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "协程池": { + "data": { + "uuid": "云原生-6-232", + "seg": [ + [ + [ + "协程池" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-611", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-318", + "seg": [ + [ + [ + "mixer", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Citadel源码解析": { + "children": [ + { + "进程启动流程": { + "data": { + "uuid": "云原生-5-612", + "seg": [ + [ + [ + "进程", + "启动", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "children": [ + { + "证书签发实体IstioCA": { + "data": { + "uuid": "云原生-6-233", + "seg": [ + [ + [ + "证书", + "签发", + "实体", + "istioca" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SecretController的创建和核心原理": { + "data": { + "uuid": "云原生-6-234", + "seg": [ + [ + [ + "secretcontroller", + "创建" + ], + [ + "核心", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CA Server的创建和核心原理": { + "data": { + "uuid": "云原生-6-235", + "seg": [ + [ + [ + "ca", + "server", + "创建" + ], + [ + "核心", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-613", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-319", + "seg": [ + [ + [ + "citadel", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy源码解析": { + "children": [ + { + "Envoy的初始化": { + "children": [ + { + "启动参数bootstrap的初始化": { + "data": { + "uuid": "云原生-6-236", + "seg": [ + [ + [ + "启动", + "参数", + "bootstrap", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Admin API的初始化": { + "data": { + "uuid": "云原生-6-237", + "seg": [ + [ + [ + "admin", + "api", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Worker的初始化": { + "data": { + "uuid": "云原生-6-238", + "seg": [ + [ + [ + "worker", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CDS的初始化": { + "data": { + "uuid": "云原生-6-239", + "seg": [ + [ + [ + "cds", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "LDS的初始化": { + "data": { + "uuid": "云原生-6-240", + "seg": [ + [ + [ + "lds", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GuardDog的初始化": { + "data": { + "uuid": "云原生-6-241", + "seg": [ + [ + [ + "guarddog", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-614", + "seg": [ + [ + [ + "envoy", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy的运行和建立新连接": { + "children": [ + { + "启动worker": { + "data": { + "uuid": "云原生-6-242", + "seg": [ + [ + [ + "启动", + "worker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Listener的加载": { + "data": { + "uuid": "云原生-6-243", + "seg": [ + [ + [ + "listener", + "加载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接收连接": { + "data": { + "uuid": "云原生-6-244", + "seg": [ + [ + [ + "接收", + "连接" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "107311897" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-615", + "seg": [ + [ + [ + "envoy", + "运行" + ], + [ + "建立", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy对数据的读取、接收及处理": { + "children": [ + { + "读取数据": { + "data": { + "uuid": "云原生-6-245", + "seg": [ + [ + [ + "读取数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接收数据": { + "data": { + "uuid": "云原生-6-246", + "seg": [ + [ + [ + "接收数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-616", + "seg": [ + [ + [ + "envoy", + "数据", + "读取" + ], + [ + "接收" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy发送数据到服务端": { + "children": [ + { + "匹配路由": { + "data": { + "uuid": "云原生-6-247", + "seg": [ + [ + [ + "匹配", + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取连接池": { + "data": { + "uuid": "云原生-6-248", + "seg": [ + [ + [ + "获取", + "连接池" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择上游主机": { + "data": { + "uuid": "云原生-6-249", + "seg": [ + [ + [ + "选择", + "上游", + "主机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-617", + "seg": [ + [ + [ + "envoy", + "发送数据", + "服务端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-320", + "seg": [ + [ + [ + "envoy", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Galley源码解析": { + "children": [ + { + "进程启动流程": { + "children": [ + { + "RunServer的启动流程": { + "data": { + "uuid": "云原生-6-250", + "seg": [ + [ + [ + "runserver", + "启动", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RunValidation Server的启动流程": { + "data": { + "uuid": "云原生-6-251", + "seg": [ + [ + [ + "runvalidation", + "server", + "启动", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-618", + "seg": [ + [ + [ + "进程", + "启动", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "children": [ + { + "配置监听": { + "data": { + "uuid": "云原生-6-252", + "seg": [ + [ + [ + "配置", + "监听" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置分发": { + "data": { + "uuid": "云原生-6-253", + "seg": [ + [ + [ + "配置", + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-619", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-321", + "seg": [ + [ + [ + "galley", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-74", + "seg": [ + [ + [ + "篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初级篇": { + "children": [ + { + "快速上手Istio": { + "children": [ + { + "在MiniKube上搭建Istio环境": { + "data": { + "uuid": "云原生-5-620", + "seg": [ + [ + [ + "minikube", + "搭建", + "istio", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Docker Desktop上搭建Istio环境": { + "data": { + "uuid": "云原生-5-621", + "seg": [ + [ + [ + "docker", + "desktop", + "搭建", + "istio", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108641842" + ] + } + } + } + } + }, + { + "使用公有云Istio服务": { + "data": { + "uuid": "云原生-5-622", + "seg": [ + [ + [ + "公有", + "云", + "istio", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Istio中部署第一个应用程序": { + "data": { + "uuid": "云原生-5-623", + "seg": [ + [ + [ + "istio", + "部署", + "应用程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-322", + "seg": [ + [ + [ + "快速", + "上手", + "istio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio架构剖析": { + "children": [ + { + "Istio架构总体结构": { + "data": { + "uuid": "云原生-5-624", + "seg": [ + [ + [ + "istio", + "架构", + "总体", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "剖析Istio控制平面": { + "children": [ + { + "Istio Mixer": { + "data": { + "uuid": "云原生-6-254", + "seg": [ + [ + [ + "istio", + "mixer" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "104282753" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-625", + "seg": [ + [ + [ + "剖析", + "istio", + "控制", + "平面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "剖析Istio数据平面": { + "children": [ + { + "Envoy代理": { + "data": { + "uuid": "云原生-6-255", + "seg": [ + [ + [ + "envoy", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Envoy静态与动态配置": { + "data": { + "uuid": "云原生-6-256", + "seg": [ + [ + [ + "envoy", + "静态" + ], + [ + "动态", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代理部署": { + "data": { + "uuid": "云原生-6-257", + "seg": [ + [ + [ + "代理", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-626", + "seg": [ + [ + [ + "剖析", + "istio", + "数据", + "平面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-323", + "seg": [ + [ + [ + "istio", + "架构", + "剖析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-75", + "seg": [ + [ + [ + "初级", + "篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级篇": { + "children": [ + { + "Istio的性能分析与运维": { + "children": [ + { + "Istio功能稳定性": { + "data": { + "uuid": "云原生-5-627", + "seg": [ + [ + [ + "istio", + "功能", + "稳定性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio性能分析": { + "data": { + "uuid": "云原生-5-628", + "seg": [ + [ + [ + "istio", + "性能", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "106174708" + ] + } + } + } + } + }, + { + "Istio组件升级与回滚": { + "data": { + "uuid": "云原生-5-629", + "seg": [ + [ + [ + "istio", + "组件", + "升级" + ], + [ + "回滚" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pilot运维指南": { + "data": { + "uuid": "云原生-5-630", + "seg": [ + [ + [ + "pilot", + "运维", + "指南" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82526118", + "79022399", + "96774478", + "106679564", + "80592130", + "111560117", + "88124998", + "95935199", + "117307874" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-324", + "seg": [ + [ + [ + "istio", + "性能", + "分析" + ], + [ + "运维" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio的定制与扩展": { + "children": [ + { + "Mixer模板设计": { + "data": { + "uuid": "云原生-5-631", + "seg": [ + [ + [ + "mixer", + "模板", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "适配器生命周期管理": { + "data": { + "uuid": "云原生-5-632", + "seg": [ + [ + [ + "适配器", + "生命周期", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发实现适配器": { + "data": { + "uuid": "云原生-5-633", + "seg": [ + [ + [ + "开发", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编译与打包适配器": { + "data": { + "uuid": "云原生-5-634", + "seg": [ + [ + [ + "编译" + ], + [ + "打包", + "适配器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扩展EnvoyFilter": { + "data": { + "uuid": "云原生-5-635", + "seg": [ + [ + [ + "扩展", + "envoyfilter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-325", + "seg": [ + [ + [ + "istio", + "定制" + ], + [ + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Knative:基于Istio的无服务器计算": { + "children": [ + { + "Knative架构解析": { + "data": { + "uuid": "云原生-5-636", + "seg": [ + [ + [ + "knative", + "架构", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Istio实现Serving组件": { + "data": { + "uuid": "云原生-5-637", + "seg": [ + [ + [ + "istio", + "serving", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Knative Build运行机制": { + "data": { + "uuid": "云原生-5-638", + "seg": [ + [ + [ + "knative", + "build", + "运行机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Knative Eventing运行机制": { + "data": { + "uuid": "云原生-5-639", + "seg": [ + [ + [ + "knative", + "eventing", + "运行机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Istio上部署Knative": { + "data": { + "uuid": "云原生-5-640", + "seg": [ + [ + [ + "istio", + "部署", + "knative" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发部署Knative应用": { + "data": { + "uuid": "云原生-5-641", + "seg": [ + [ + [ + "开发", + "部署", + "knative" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-326", + "seg": [ + [ + [ + "knative" + ] + ], + [ + [ + "istio", + "服务器", + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云原生计算的未来展望": { + "data": { + "uuid": "云原生-4-327", + "seg": [ + [ + [ + "云", + "原生", + "计算", + "未来", + "展望" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108072234" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-76", + "seg": [ + [ + [ + "高级", + "篇" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "什么是架构": { + "data": { + "uuid": "云原生-3-77", + "seg": [ + [ + [ + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "几个相关概念": { + "data": { + "uuid": "云原生-3-78", + "seg": [ + [ + [ + "相关", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从软件的生命周期看架构设计": { + "data": { + "uuid": "云原生-3-79", + "seg": [ + [ + [ + "软件", + "生命周期", + "架构设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构的形式与特点": { + "data": { + "uuid": "云原生-3-80", + "seg": [ + [ + [ + "架构", + "形式" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构的目标与方法": { + "data": { + "uuid": "云原生-3-81", + "seg": [ + [ + [ + "架构", + "目标" + ], + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构的不同风格": { + "data": { + "uuid": "云原生-3-82", + "seg": [ + [ + [ + "架构", + "风格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务领域驱动设计": { + "children": [ + { + "领域驱动设计": { + "children": [ + { + "领域驱动设计概览": { + "data": { + "uuid": "云原生-5-642", + "seg": [ + [ + [ + "领域", + "驱动", + "设计", + "概览" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81091470", + "103963100" + ] + } + } + } + } + }, + { + "限界上下文": { + "data": { + "uuid": "云原生-5-643", + "seg": [ + [ + [ + "限界", + "上下文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上下文映射": { + "data": { + "uuid": "云原生-5-644", + "seg": [ + [ + [ + "上下文", + "映射" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "领域架构": { + "data": { + "uuid": "云原生-5-645", + "seg": [ + [ + [ + "领域", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-328", + "seg": [ + [ + [ + "领域", + "驱动", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务的设计": { + "children": [ + { + "限界上下文的边界": { + "data": { + "uuid": "云原生-5-646", + "seg": [ + [ + [ + "限界", + "上下文", + "边界" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限界上下文即微服务": { + "data": { + "uuid": "云原生-5-647", + "seg": [ + [ + [ + "限界", + "上下文", + "即微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "识别限界上下文": { + "data": { + "uuid": "云原生-5-648", + "seg": [ + [ + [ + "识别", + "限界", + "上下文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务之间的协作": { + "data": { + "uuid": "云原生-5-649", + "seg": [ + [ + [ + "微", + "服务", + "协作" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "102634941", + "84921558", + "95642923", + "112151316", + "111056474", + "112748723", + "110896877", + "112749362", + "110096925", + "110354642" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-329", + "seg": [ + [ + [ + "微", + "服务", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-83", + "seg": [ + [ + [ + "微", + "服务", + "领域", + "驱动", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Apache Dubbo框架的原理与实现": { + "children": [ + { + "Dubbo框架的选型与使用": { + "children": [ + { + "Dubbo框架的选型": { + "data": { + "uuid": "云原生-5-650", + "seg": [ + [ + [ + "dubbo", + "框架", + "选型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo框架的使用": { + "data": { + "uuid": "云原生-5-651", + "seg": [ + [ + [ + "dubbo", + "框架" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87010107", + "90712125", + "51282874", + "98780664", + "70214612", + "84921596", + "47082341", + "100106261", + "89012724", + "80962974" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-330", + "seg": [ + [ + [ + "dubbo", + "框架", + "选型" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo框架的原理分析": { + "children": [ + { + "总体架构分析": { + "data": { + "uuid": "云原生-5-652", + "seg": [ + [ + [ + "总体", + "架构", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo Bean的加载": { + "data": { + "uuid": "云原生-5-653", + "seg": [ + [ + [ + "dubbo", + "bean", + "加载" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82182533", + "102896795" + ] + } + } + } + } + }, + { + "Dubbo Extension机制": { + "data": { + "uuid": "云原生-5-654", + "seg": [ + [ + [ + "dubbo", + "extension", + "机制" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "102765349", + "109863382" + ] + } + } + } + } + }, + { + "Dubbo消费端": { + "data": { + "uuid": "云原生-5-655", + "seg": [ + [ + [ + "dubbo", + "消费", + "端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo服务端": { + "data": { + "uuid": "云原生-5-656", + "seg": [ + [ + [ + "dubbo", + "服务端" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51818769", + "51926682", + "107029848" + ] + } + } + } + } + }, + { + "Dubbo的通信机制": { + "data": { + "uuid": "云原生-5-657", + "seg": [ + [ + [ + "dubbo", + "通信", + "机制" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52290292" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-331", + "seg": [ + [ + [ + "dubbo", + "框架", + "原理", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Dubbo的自动化Mock系统": { + "children": [ + { + "Mock模拟系统的产生": { + "data": { + "uuid": "云原生-5-658", + "seg": [ + [ + [ + "mock", + "模拟系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo Mock的使用": { + "data": { + "uuid": "云原生-5-659", + "seg": [ + [ + [ + "dubbo", + "mock" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo Mock的原理解析": { + "data": { + "uuid": "云原生-5-660", + "seg": [ + [ + [ + "dubbo", + "mock", + "原理", + "解析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "92832811" + ] + } + } + } + } + }, + { + "自动化Mock系统的实现": { + "data": { + "uuid": "云原生-5-661", + "seg": [ + [ + [ + "自动化", + "mock", + "系统" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "66475879" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-332", + "seg": [ + [ + [ + "dubbo", + "自动化", + "mock", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-84", + "seg": [ + [ + [ + "apache", + "dubbo", + "框架", + "原理" + ], + [] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109690336" + ] + } + } + } + } + }, + { + "Spring Boot/Spring Cloud实践": { + "children": [ + { + "Spring Boot原理剖析": { + "children": [ + { + "Spring Boot Quick Start": { + "data": { + "uuid": "云原生-5-662", + "seg": [ + [ + [ + "spring", + "boot", + "quick", + "start" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "34446629", + "108310357" + ] + } + } + } + } + }, + { + "Spring Boot之SpringApplication": { + "data": { + "uuid": "云原生-5-663", + "seg": [ + [ + [ + "spring", + "boot", + "springapplication" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "95054675", + "113730679", + "80561748", + "113876580", + "52249289", + "77446947", + "112761439", + "81407400", + "112781694", + "117898550" + ] + } + } + } + } + }, + { + "spring-boot-loaded模块分析": { + "data": { + "uuid": "云原生-5-664", + "seg": [ + [ + [ + "spring", + "boot", + "loaded", + "模块", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "spring-boot-autoconfigure模块分析": { + "data": { + "uuid": "云原生-5-665", + "seg": [ + [ + [ + "spring", + "boot", + "autoconfigure", + "模块", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot Conditional注解分析": { + "data": { + "uuid": "云原生-5-666", + "seg": [ + [ + [ + "spring", + "boot", + "conditional", + "注解", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50120001", + "106005176", + "81491071", + "110791709" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-333", + "seg": [ + [ + [ + "spring", + "boot", + "原理", + "剖析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dubbo Spring Boot Starter": { + "children": [ + { + "Dubbo Spring Boot Starter简介": { + "data": { + "uuid": "云原生-5-667", + "seg": [ + [ + [ + "dubbo", + "spring", + "boot", + "starter", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108439933", + "51658292", + "76660353", + "116928501", + "78957309", + "44980193", + "54377043", + "109840365", + "92953982", + "108953093" + ] + } + } + } + } + }, + { + "Dubbo Initializr及sample": { + "data": { + "uuid": "云原生-5-668", + "seg": [ + [ + [ + "dubbo", + "initializr" + ], + [ + "sample" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "dubbo-spring-boot-autoconfigure模块": { + "data": { + "uuid": "云原生-5-669", + "seg": [ + [ + [ + "dubbo", + "spring", + "boot", + "autoconfigure", + "模块" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "dubbo-spring-boot-actuator模块": { + "data": { + "uuid": "云原生-5-670", + "seg": [ + [ + [ + "dubbo", + "spring", + "boot", + "actuator", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80511588" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-334", + "seg": [ + [ + [ + "dubbo", + "spring", + "boot", + "starter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Cloud栈": { + "children": [ + { + "Spring Cloud技术栈总览": { + "data": { + "uuid": "云原生-5-671", + "seg": [ + [ + [ + "spring", + "cloud", + "技术", + "栈", + "总览" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117635759", + "109003365", + "111613781", + "108776298" + ] + } + } + } + } + }, + { + "spring-cloud-scaffold基础库集合": { + "data": { + "uuid": "云原生-5-672", + "seg": [ + [ + [ + "spring", + "cloud", + "scaffold", + "基础", + "库", + "集合" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108695328" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-335", + "seg": [ + [ + [ + "spring", + "cloud", + "栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Maven Archetype的脚手架": { + "children": [ + { + "Maven Archetype": { + "data": { + "uuid": "云原生-5-673", + "seg": [ + [ + [ + "maven", + "archetype" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "55258275", + "81363205", + "78422953", + "78266520", + "53506401", + "52913086", + "80041146", + "54864504", + "117506859", + "77881467" + ] + } + } + } + } + }, + { + "脚手架的搭建": { + "data": { + "uuid": "云原生-5-674", + "seg": [ + [ + [ + "脚手架", + "搭建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成脚手架": { + "data": { + "uuid": "云原生-5-675", + "seg": [ + [ + [ + "生成", + "脚手架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-336", + "seg": [ + [ + [ + "maven", + "archetype", + "脚手架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-85", + "seg": [ + [ + [ + "spring", + "boot", + "cloud", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务稳定性保证的常用手段": { + "children": [ + { + "微服务的稳定性": { + "data": { + "uuid": "云原生-4-337", + "seg": [ + [ + [ + "微", + "服务", + "稳定性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高可用": { + "children": [ + { + "限流原理与实现": { + "data": { + "uuid": "云原生-5-676", + "seg": [ + [ + [ + "限流", + "原理" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "断路器原理与实现": { + "data": { + "uuid": "云原生-5-677", + "seg": [ + [ + [ + "断路器", + "原理" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-338", + "seg": [ + [ + [ + "高", + "可用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高并发": { + "children": [ + { + "异步": { + "data": { + "uuid": "云原生-5-678", + "seg": [ + [ + [ + "异步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "缓存": { + "data": { + "uuid": "云原生-5-679", + "seg": [ + [ + [ + "缓存" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-339", + "seg": [ + [ + [ + "高", + "并发" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "114272270" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-86", + "seg": [ + [ + [ + "微", + "服务", + "稳定性", + "保证", + "手段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务下如何保证事务的一致性": { + "children": [ + { + "从本地事务到分布式事务的演变": { + "data": { + "uuid": "云原生-4-340", + "seg": [ + [ + [ + "事务", + "分布式", + "演变" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "强一致性解决方案": { + "children": [ + { + "二阶段提交协议": { + "data": { + "uuid": "云原生-5-680", + "seg": [ + [ + [ + "阶段", + "提交", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "三阶段提交协议": { + "data": { + "uuid": "云原生-5-681", + "seg": [ + [ + [ + "阶段", + "提交", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-341", + "seg": [ + [ + [ + "强", + "一致性", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "最终一致性解决方案": { + "children": [ + { + "TCC模式": { + "data": { + "uuid": "云原生-5-682", + "seg": [ + [ + [ + "tcc", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "补偿模式": { + "data": { + "uuid": "云原生-5-683", + "seg": [ + [ + [ + "补偿", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-342", + "seg": [ + [ + [ + "最终", + "一致性", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-87", + "seg": [ + [ + [ + "微", + "服务", + "保证", + "事务", + "一致性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "百亿流量微服务网关的设计与实现": { + "children": [ + { + "开源网关的分析与调研": { + "children": [ + { + "常见的开源网关介绍": { + "data": { + "uuid": "云原生-5-684", + "seg": [ + [ + [ + "常见", + "开源", + "网关", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "四大开源网关的对比分析": { + "data": { + "uuid": "云原生-5-685", + "seg": [ + [ + [ + "四大", + "开源", + "网关", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-343", + "seg": [ + [ + [ + "开源", + "网关", + "分析" + ], + [ + "调研" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "百亿流量交易系统API网关设计": { + "children": [ + { + "业务网关的设计与最佳实践": { + "data": { + "uuid": "云原生-5-686", + "seg": [ + [ + [ + "业务", + "网关", + "设计" + ], + [ + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-344", + "seg": [ + [ + [ + "流量", + "交易系统", + "api", + "网关", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-88", + "seg": [ + [ + [ + "流量", + "微", + "服务", + "网关", + "设计" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务编排": { + "children": [ + { + "Netflix Conductor": { + "data": { + "uuid": "云原生-4-345", + "seg": [ + [ + [ + "netflix", + "conductor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Netflix Conductor的架构": { + "data": { + "uuid": "云原生-4-346", + "seg": [ + [ + [ + "netflix", + "conductor", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Conductor的使用案例": { + "data": { + "uuid": "云原生-4-347", + "seg": [ + [ + [ + "conductor", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Netflix Conductor源码分析": { + "children": [ + { + "Client层源码分析": { + "data": { + "uuid": "云原生-5-687", + "seg": [ + [ + [ + "client", + "层", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100776066" + ] + } + } + } + } + }, + { + "Server端源码分析": { + "data": { + "uuid": "云原生-5-688", + "seg": [ + [ + [ + "server", + "端", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "core端源码分析": { + "data": { + "uuid": "云原生-5-689", + "seg": [ + [ + [ + "core", + "端", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-348", + "seg": [ + [ + [ + "netflix", + "conductor", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-89", + "seg": [ + [ + [ + "微", + "服务", + "编排" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务数据抽取与统计": { + "children": [ + { + "案例小故事": { + "data": { + "uuid": "云原生-4-349", + "seg": [ + [ + [ + "案例", + "故事" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据仓库概述": { + "children": [ + { + "什么是数据仓库": { + "data": { + "uuid": "云原生-5-690", + "seg": [ + [ + [ + "数据仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据仓库架构": { + "data": { + "uuid": "云原生-5-691", + "seg": [ + [ + [ + "数据仓库", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据仓库建模方法": { + "data": { + "uuid": "云原生-5-692", + "seg": [ + [ + [ + "数据仓库", + "建模", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据统计": { + "data": { + "uuid": "云原生-5-693", + "seg": [ + [ + [ + "数据", + "统计" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88085543" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-350", + "seg": [ + [ + [ + "数据仓库", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据仓库工具Hive": { + "children": [ + { + "安装Hive": { + "data": { + "uuid": "云原生-5-694", + "seg": [ + [ + [ + "安装", + "hive" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88569175", + "109937861" + ] + } + } + } + } + }, + { + "Hive数据库": { + "data": { + "uuid": "云原生-5-695", + "seg": [ + [ + [ + "hive", + "数据库" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "45675705", + "40982435", + "85313410", + "82352856", + "20386731", + "78937820", + "50615816", + "111559274" + ] + } + } + } + } + }, + { + "Hive表": { + "data": { + "uuid": "云原生-5-696", + "seg": [ + [ + [ + "hive", + "表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-351", + "seg": [ + [ + [ + "数据仓库", + "工具", + "hive" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Sqoop抽取数据": { + "children": [ + { + "安装Sqoop": { + "data": { + "uuid": "云原生-5-697", + "seg": [ + [ + [ + "安装", + "sqoop" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将MySQL表数据导入Hive表": { + "data": { + "uuid": "云原生-5-698", + "seg": [ + [ + [ + "mysql", + "表", + "数据", + "导入", + "hive" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "77607054", + "115426714", + "46309797", + "112669032", + "116430161" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-352", + "seg": [ + [ + [ + "sqoop", + "抽取", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ETL作业调度": { + "data": { + "uuid": "云原生-4-353", + "seg": [ + [ + [ + "etl", + "调度" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111868775" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-90", + "seg": [ + [ + [ + "微", + "服务", + "数据", + "抽取" + ], + [ + "统计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务双活体系建设": { + "children": [ + { + "系统高可用": { + "data": { + "uuid": "云原生-4-354", + "seg": [ + [ + [ + "系统", + "高", + "可用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "双活数据中心": { + "children": [ + { + "单机房部署": { + "data": { + "uuid": "云原生-5-699", + "seg": [ + [ + [ + "单", + "机房", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "双机房部署": { + "data": { + "uuid": "云原生-5-700", + "seg": [ + [ + [ + "双", + "机房", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于支付场景的双活体系建设": { + "data": { + "uuid": "云原生-5-701", + "seg": [ + [ + [ + "支付", + "场景", + "双活", + "体系", + "建设" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-355", + "seg": [ + [ + [ + "活", + "数据中心" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-91", + "seg": [ + [ + [ + "微", + "服务", + "活", + "体系", + "建设" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于支付场景下的微服务改造与性能优化": { + "children": [ + { + "支付场景的介绍": { + "data": { + "uuid": "云原生-4-356", + "seg": [ + [ + [ + "支付", + "场景", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从代码层面提升微服务架构的性能": { + "children": [ + { + "从代码和设计的角度看": { + "data": { + "uuid": "云原生-5-702", + "seg": [ + [ + [], + [ + "设计", + "角度看" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从整体架构的角度看": { + "data": { + "uuid": "云原生-5-703", + "seg": [ + [ + [ + "整体", + "架构", + "角度看" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-357", + "seg": [ + [ + [ + "层面", + "提升", + "微", + "服务", + "架构", + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务架构中常见的一些故障分析技巧": { + "data": { + "uuid": "云原生-4-358", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "常见", + "故障", + "分析", + "技巧" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-92", + "seg": [ + [ + [ + "支付", + "场景", + "微", + "服务", + "改造" + ], + [ + "性能", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遗留系统的微服务架构改造": { + "children": [ + { + "代码分层结构的转变": { + "data": { + "uuid": "云原生-4-359", + "seg": [ + [ + [ + "分层", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "遗留系统的债券与思考": { + "data": { + "uuid": "云原生-4-360", + "seg": [ + [ + [ + "遗留", + "系统", + "债券" + ], + [ + "思考" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从单体系统拆分服务的方法论": { + "data": { + "uuid": "云原生-4-361", + "seg": [ + [ + [ + "单体", + "系统", + "拆分", + "服务", + "方法论" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "遗留系统的微服务架构改造": { + "children": [ + { + "从代码重构开始": { + "data": { + "uuid": "云原生-5-704", + "seg": [ + [ + [ + "重构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拆分服务需要面向服务进行架构设计": { + "data": { + "uuid": "云原生-5-705", + "seg": [ + [ + [ + "拆分", + "服务", + "面向", + "架构设计" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "改造是一个渐进的过程": { + "data": { + "uuid": "云原生-5-706", + "seg": [ + [ + [ + "改造", + "渐进", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单元测试是基石": { + "data": { + "uuid": "云原生-5-707", + "seg": [ + [ + [ + "单元测试", + "基石" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向失败的设计": { + "data": { + "uuid": "云原生-5-708", + "seg": [ + [ + [ + "面向", + "失败", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "前后端分离": { + "data": { + "uuid": "云原生-5-709", + "seg": [ + [ + [ + "端", + "分离" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81138127" + ] + } + } + } + } + }, + { + "共享现有数据库": { + "data": { + "uuid": "云原生-5-710", + "seg": [ + [ + [ + "共享", + "现有", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "灰度发布的必要性": { + "data": { + "uuid": "云原生-5-711", + "seg": [ + [ + [ + "灰度", + "发布", + "必要性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志聚合与全链路监控": { + "data": { + "uuid": "云原生-5-712", + "seg": [ + [ + [ + "日志", + "聚合" + ], + [ + "全", + "链路", + "监控" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-362", + "seg": [ + [ + [ + "遗留", + "系统", + "微", + "服务", + "架构", + "改造" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-93", + "seg": [ + [ + [ + "遗留", + "系统", + "微", + "服务", + "架构", + "改造" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service Mesh详解": { + "children": [ + { + "Service Mesh的背景": { + "data": { + "uuid": "云原生-4-363", + "seg": [ + [ + [ + "service", + "mesh", + "背景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service Mesh介绍": { + "children": [ + { + "Service Mesh架构": { + "data": { + "uuid": "云原生-5-713", + "seg": [ + [ + [ + "service", + "mesh", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78678460", + "97626386", + "88944391", + "79785493", + "80333423", + "84257923", + "78630241", + "79295896", + "112061313", + "78872404" + ] + } + } + } + } + }, + { + "Service Mesh能做什么": { + "data": { + "uuid": "云原生-5-714", + "seg": [ + [ + [ + "service", + "mesh", + "做" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89944800", + "82832345" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-364", + "seg": [ + [ + [ + "service", + "mesh", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service Mesh的价值": { + "data": { + "uuid": "云原生-4-365", + "seg": [ + [ + [ + "service", + "mesh", + "价值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio详解": { + "children": [ + { + "Istio架构": { + "data": { + "uuid": "云原生-5-715", + "seg": [ + [ + [ + "istio", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据平面": { + "data": { + "uuid": "云原生-5-716", + "seg": [ + [ + [ + "数据", + "平面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制平面": { + "data": { + "uuid": "云原生-5-717", + "seg": [ + [ + [ + "控制", + "平面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Isito案例": { + "data": { + "uuid": "云原生-5-718", + "seg": [ + [ + [ + "isito", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-366", + "seg": [ + [ + [ + "istio", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90205359" + ] + } + } + } + } + }, + { + "Service Mesh展望": { + "data": { + "uuid": "云原生-4-367", + "seg": [ + [ + [ + "service", + "mesh", + "展望" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-94", + "seg": [ + [ + [ + "service", + "mesh", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入理解网络": { + "children": [ + { + "从国际互联网开始": { + "data": { + "uuid": "云原生-4-368", + "seg": [ + [ + [ + "国际", + "互联网" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "NIO,一本难念的经": { + "children": [ + { + "难懂的ByteBuffer": { + "data": { + "uuid": "云原生-5-719", + "seg": [ + [ + [ + "难懂", + "bytebuffer" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "晦涩的“非阻塞”": { + "data": { + "uuid": "云原生-5-720", + "seg": [ + [ + [ + "晦涩", + "阻塞" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "复杂的Reactor模型": { + "data": { + "uuid": "云原生-5-721", + "seg": [ + [ + [ + "reactor", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-369", + "seg": [ + [ + [ + "nio", + "难念" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "111089399" + ] + } + } + } + } + }, + { + "AIO,大道至简的设计与苦涩的现实": { + "data": { + "uuid": "云原生-4-370", + "seg": [ + [ + [ + "aio", + "大道至简", + "设计" + ], + [ + "苦涩", + "现实" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HTTP的前世今生": { + "children": [ + { + "HTTP的设计思路": { + "data": { + "uuid": "云原生-5-722", + "seg": [ + [ + [ + "http", + "设计", + "思路" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP如何保持状态": { + "data": { + "uuid": "云原生-5-723", + "seg": [ + [ + [ + "http", + "状态" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "101020993", + "78979268", + "56847456", + "6570515", + "53893581", + "114817924", + "47354737", + "36634729", + "52385944", + "107373617" + ] + } + } + } + } + }, + { + "Session的秘密": { + "data": { + "uuid": "云原生-5-724", + "seg": [ + [ + [ + "session", + "秘密" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "50510717", + "6595267" + ] + } + } + } + } + }, + { + "再谈Token": { + "data": { + "uuid": "云原生-5-725", + "seg": [ + [ + [ + "谈", + "token" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分布式Session": { + "data": { + "uuid": "云原生-5-726", + "seg": [ + [ + [ + "分布式", + "session" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-371", + "seg": [ + [ + [ + "http", + "前世", + "今生" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分布式系统的基石:TCP/IP": { + "data": { + "uuid": "云原生-4-372", + "seg": [ + [ + [ + "分布式系统", + "基石" + ] + ], + [ + [ + "tcp", + "ip" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "从CDN到SD-WAN": { + "children": [ + { + "互联互不通的运营商网络": { + "data": { + "uuid": "云原生-5-727", + "seg": [ + [ + [ + "互联", + "互不", + "通", + "运营商", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "双线机房的出现": { + "data": { + "uuid": "云原生-5-728", + "seg": [ + [ + [ + "双线", + "机房" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CDN的作用": { + "data": { + "uuid": "云原生-5-729", + "seg": [ + [ + [ + "cdn", + "作用" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50395444", + "71331717", + "112264242" + ] + } + } + } + } + }, + { + "SD-WAN技术的诞生": { + "data": { + "uuid": "云原生-5-730", + "seg": [ + [ + [ + "sd", + "wan", + "技术", + "诞生" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-373", + "seg": [ + [ + [ + "cdn", + "sd", + "wan" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-95", + "seg": [ + [ + [ + "理解", + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式系统的经典理论": { + "children": [ + { + "从分布式系统的设计理念说起": { + "data": { + "uuid": "云原生-4-374", + "seg": [ + [ + [ + "分布式系统", + "设计", + "理念", + "说起" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式系统的一致性原理": { + "data": { + "uuid": "云原生-4-375", + "seg": [ + [ + [ + "分布式系统", + "一致性", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式系统的基石之ZooKeeper": { + "children": [ + { + "ZooKeeper的原理与功能": { + "data": { + "uuid": "云原生-5-731", + "seg": [ + [ + [ + "zookeeper", + "原理" + ], + [ + "功能" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52901319", + "19006911", + "77043523", + "79206893", + "79775738", + "117421309", + "78742625", + "78642052", + "52698555", + "23180355" + ] + } + } + } + } + }, + { + "ZooKeeper的应用场景案例分析": { + "data": { + "uuid": "云原生-5-732", + "seg": [ + [ + [ + "zookeeper", + "场景", + "案例", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80955110", + "77784171", + "85063868", + "52386229", + "53992653", + "53039482", + "109249069", + "106124543" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-376", + "seg": [ + [ + [ + "分布式系统", + "基石", + "zookeeper" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "经典的CAP理论": { + "data": { + "uuid": "云原生-4-377", + "seg": [ + [ + [ + "经典", + "cap", + "理论" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "106901367", + "30635543" + ] + } + } + } + } + }, + { + "BASE准则,一个影响深远的指导思想": { + "data": { + "uuid": "云原生-4-378", + "seg": [ + [ + [ + "base", + "准则", + "影响", + "深远", + "指导思想" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重新认识分布式事务": { + "children": [ + { + "数据库单机事务的实现原理": { + "data": { + "uuid": "云原生-5-733", + "seg": [ + [ + [ + "数据库", + "单机", + "事务", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "7184799" + ] + } + } + } + } + }, + { + "经典的X/OpenDTP事务模型": { + "data": { + "uuid": "云原生-5-734", + "seg": [ + [ + [ + "经典", + "x", + "opendtp", + "事务", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "互联网中的分布式事务解决方案": { + "data": { + "uuid": "云原生-5-735", + "seg": [ + [ + [ + "互联网", + "分布式", + "事务", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "43197665", + "79516298", + "108545380", + "64118963", + "52691210", + "88290514", + "104196903", + "89136666", + "106965828", + "116061960" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-379", + "seg": [ + [ + [ + "重新认识", + "分布式", + "事务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-96", + "seg": [ + [ + [ + "分布式系统", + "经典", + "理论" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "聊聊RPC": { + "children": [ + { + "从IPC通信说起": { + "data": { + "uuid": "云原生-4-380", + "seg": [ + [ + [ + "ipc", + "通信", + "说起" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "古老又有生命力的RPC": { + "data": { + "uuid": "云原生-4-381", + "seg": [ + [ + [ + "古老", + "生命力", + "rpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从RPC到服务治理框架": { + "data": { + "uuid": "云原生-4-382", + "seg": [ + [ + [ + "rpc", + "服务", + "治理", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于ZeroC Ice的微服务架构指南": { + "children": [ + { + "ZeroC Ice的前世今生": { + "data": { + "uuid": "云原生-5-736", + "seg": [ + [ + [ + "zeroc", + "ice", + "前世", + "今生" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6372444", + "6726754" + ] + } + } + } + } + }, + { + "ZeroC Ice微服务架构指南": { + "data": { + "uuid": "云原生-5-737", + "seg": [ + [ + [ + "zeroc", + "ice", + "微", + "服务", + "架构", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务架构概述": { + "children": [ + { + "微服务架构兴起的原因": { + "data": { + "uuid": "云原生-6-258", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "兴起", + "原因" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不得不提的容器技术": { + "data": { + "uuid": "云原生-6-259", + "seg": [ + [ + [ + "提", + "容器", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何全面理解微服务架构": { + "data": { + "uuid": "云原生-6-260", + "seg": [ + [ + [ + "理解", + "微", + "服务", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80534499", + "80951608", + "69055979", + "72651984", + "76408158", + "115507833", + "88935655", + "83654498", + "78515231", + "93629306" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-738", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-383", + "seg": [ + [ + [ + "zeroc", + "ice", + "微", + "服务", + "架构", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-97", + "seg": [ + [ + [ + "聊聊", + "rpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入浅析内存": { + "children": [ + { + "你所不知道的内存知识": { + "children": [ + { + "复杂的CPU与单纯的内存": { + "data": { + "uuid": "云原生-5-739", + "seg": [ + [ + [ + "cpu" + ], + [ + "内存" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110914585", + "51282415" + ] + } + } + } + } + }, + { + "深入理解不一致性内存": { + "data": { + "uuid": "云原生-5-740", + "seg": [ + [ + [ + "理解", + "不一致性", + "内存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-384", + "seg": [ + [ + [ + "内存", + "知识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存计算技术的前世今生": { + "data": { + "uuid": "云原生-4-385", + "seg": [ + [ + [ + "内存", + "计算技术", + "前世", + "今生" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存缓存技术分析": { + "children": [ + { + "缓存概述": { + "data": { + "uuid": "云原生-5-741", + "seg": [ + [ + [ + "缓存", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓存实现的几种方式": { + "data": { + "uuid": "云原生-5-742", + "seg": [ + [ + [ + "缓存", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Memcache的内存管理技术": { + "data": { + "uuid": "云原生-5-743", + "seg": [ + [ + [ + "memcache", + "内存", + "管理", + "技术" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113733598" + ] + } + } + } + } + }, + { + "Redis的独特之处": { + "data": { + "uuid": "云原生-5-744", + "seg": [ + [ + [ + "redis", + "独特", + "处" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-386", + "seg": [ + [ + [ + "内存", + "缓存", + "技术", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存计算产品分析": { + "children": [ + { + "SAP HANA": { + "data": { + "uuid": "云原生-5-745", + "seg": [ + [ + [ + "sap", + "hana" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "5772874" + ] + } + } + } + } + }, + { + "Hazelcast": { + "data": { + "uuid": "云原生-5-746", + "seg": [ + [ + [ + "hazelcast" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "VoltDB": { + "data": { + "uuid": "云原生-5-747", + "seg": [ + [ + [ + "voltdb" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-387", + "seg": [ + [ + [ + "内存", + "计算", + "产品", + "分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78142540" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-98", + "seg": [ + [ + [ + "浅析", + "内存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入解析分布式文件存储": { + "children": [ + { + "数据存储进化史": { + "data": { + "uuid": "云原生-4-388", + "seg": [ + [ + [ + "数据", + "存储", + "进化史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "经典的网络文件系统NFS": { + "data": { + "uuid": "云原生-4-389", + "seg": [ + [ + [ + "经典", + "网络", + "文件系统", + "nfs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高性能计算领域的分布式文件系统": { + "data": { + "uuid": "云原生-4-390", + "seg": [ + [ + [ + "高性能", + "计算", + "领域", + "分布式文件系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "企业级分布式文件系统GlusterFS": { + "data": { + "uuid": "云原生-4-391", + "seg": [ + [ + [ + "企业级", + "分布式文件系统", + "glusterfs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创新的Linux分布式存储系统——Ceph": { + "data": { + "uuid": "云原生-4-392", + "seg": [ + [ + [ + "创新", + "linux", + "分布式", + "存储系统", + "ceph" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "118110564" + ] + } + } + } + } + }, + { + "星际文件系统IPFS": { + "data": { + "uuid": "云原生-4-393", + "seg": [ + [ + [ + "星际", + "文件系统", + "ipfs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "软件定义存储": { + "data": { + "uuid": "云原生-4-394", + "seg": [ + [ + [ + "软件", + "定义", + "存储" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89156724" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-99", + "seg": [ + [ + [ + "解析", + "分布式", + "文件", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "聊聊分布式计算": { + "children": [ + { + "不得不说的Actor模型": { + "data": { + "uuid": "云原生-4-395", + "seg": [ + [ + [ + "说", + "actor", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初识Akka": { + "data": { + "uuid": "云原生-4-396", + "seg": [ + [ + [ + "初识", + "akka" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "适用面很广的Storm": { + "data": { + "uuid": "云原生-4-397", + "seg": [ + [ + [ + "面", + "广", + "storm" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "54691618", + "38168025" + ] + } + } + } + } + }, + { + "MapReduce及其引发的新世界": { + "data": { + "uuid": "云原生-4-398", + "seg": [ + [ + [ + "mapreduce", + "引发", + "新世界" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "76228522", + "1726553", + "6689489", + "104127040" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-100", + "seg": [ + [ + [ + "聊聊", + "分布式计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "全文检索与消息队列中间件": { + "children": [ + { + "全文检索": { + "children": [ + { + "Lucene": { + "data": { + "uuid": "云原生-5-748", + "seg": [ + [ + [ + "lucene" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6827391" + ] + } + } + } + } + }, + { + "Solr": { + "data": { + "uuid": "云原生-5-749", + "seg": [ + [ + [ + "solr" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ElasticSearch": { + "data": { + "uuid": "云原生-5-750", + "seg": [ + [ + [ + "elasticsearch" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-399", + "seg": [ + [ + [ + "全文检索" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消息队列": { + "children": [ + { + "JEE专属的JMS": { + "data": { + "uuid": "云原生-5-751", + "seg": [ + [ + [ + "jee", + "专属", + "jms" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "23391967", + "78657177" + ] + } + } + } + } + }, + { + "生生不息的ActiveMQ": { + "data": { + "uuid": "云原生-5-752", + "seg": [ + [ + [ + "生生不息", + "activemq" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78842061", + "7968886", + "81283951", + "5193464", + "74905616", + "52777526", + "109775813", + "108987860", + "53572400", + "54176520" + ] + } + } + } + } + }, + { + "RabbitMQ": { + "data": { + "uuid": "云原生-5-753", + "seg": [ + [ + [ + "rabbitmq" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84101852", + "116243905", + "79371312", + "72782138", + "110039741", + "100167717", + "114321124", + "88363376", + "86590758", + "54315940" + ] + } + } + } + } + }, + { + "Kafka": { + "data": { + "uuid": "云原生-5-754", + "seg": [ + [ + [ + "kafka" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80271853", + "81283142", + "85395080", + "52295772", + "99652448", + "23743821", + "116465216", + "64190798", + "80950337", + "53524884" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-400", + "seg": [ + [ + [ + "消息", + "队列" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80217591", + "88863904", + "109120499", + "80624521", + "51945408" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-101", + "seg": [ + [ + [ + "全文检索" + ], + [ + "消息", + "队列", + "中间件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构实践": { + "children": [ + { + "身边购平台实践": { + "data": { + "uuid": "云原生-4-401", + "seg": [ + [ + [ + "身边", + "购", + "平台", + "实践" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "83784684" + ] + } + } + } + } + }, + { + "DIY一个有难度的分布式集群": { + "data": { + "uuid": "云原生-4-402", + "seg": [ + [ + [ + "diy", + "难度", + "分布式", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50512442", + "103486958" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-102", + "seg": [ + [ + [ + "架构", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-1", + "seg": [ + [ + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编程语言": { + "children": [ + { + "Golang": { + "data": { + "uuid": "云原生-3-103", + "seg": [ + [ + [ + "golang" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "入门": { + "children": [ + { + "hello,world": { + "data": { + "uuid": "云原生-4-403", + "seg": [ + [ + [ + "hello", + "world" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "104280493" + ] + } + } + } + } + }, + { + "命令行参数": { + "data": { + "uuid": "云原生-4-404", + "seg": [ + [ + [ + "命令行", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "找出重复行": { + "data": { + "uuid": "云原生-4-405", + "seg": [ + [ + [ + "找出", + "重复" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GIF动画": { + "data": { + "uuid": "云原生-4-406", + "seg": [ + [ + [ + "gif", + "动画" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取一个URL": { + "data": { + "uuid": "云原生-4-407", + "seg": [ + [ + [ + "获取", + "url" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发获取多个URL": { + "data": { + "uuid": "云原生-4-408", + "seg": [ + [ + [ + "并发", + "获取", + "url" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "一个Web服务器": { + "data": { + "uuid": "云原生-4-409", + "seg": [ + [ + [ + "web", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "其他内容": { + "data": { + "uuid": "云原生-4-410", + "seg": [ + [ + [ + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-104", + "seg": [ + [ + [ + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "程序结构": { + "children": [ + { + "名称": { + "data": { + "uuid": "云原生-4-411", + "seg": [ + [ + [ + "名称" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明": { + "data": { + "uuid": "云原生-4-412", + "seg": [ + [ + [ + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变量": { + "children": [ + { + "短变量声明": { + "data": { + "uuid": "云原生-5-755", + "seg": [ + [ + [ + "短", + "变量", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指针": { + "data": { + "uuid": "云原生-5-756", + "seg": [ + [ + [ + "指针" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "new函数": { + "data": { + "uuid": "云原生-5-757", + "seg": [ + [ + [ + "new", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "21281933" + ] + } + } + } + } + }, + { + "变量的生命周期": { + "data": { + "uuid": "云原生-5-758", + "seg": [ + [ + [ + "变量", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-413", + "seg": [ + [ + [ + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "赋值": { + "children": [ + { + "多重赋值": { + "data": { + "uuid": "云原生-5-759", + "seg": [ + [ + [ + "赋值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可赋值性": { + "data": { + "uuid": "云原生-5-760", + "seg": [ + [ + [ + "赋值", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-414", + "seg": [ + [ + [ + "赋值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型声明": { + "data": { + "uuid": "云原生-4-415", + "seg": [ + [ + [ + "类型", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包和文件": { + "children": [ + { + "导入": { + "children": [ + { + "远程导入": { + "data": { + "uuid": "云原生-6-261", + "seg": [ + [ + [ + "远程", + "导入" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "75363642" + ] + } + } + } + } + }, + { + "命名导入": { + "data": { + "uuid": "云原生-6-262", + "seg": [ + [ + [ + "命名", + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-761", + "seg": [ + [ + [ + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包初始化": { + "data": { + "uuid": "云原生-5-762", + "seg": [ + [ + [ + "包", + "初始化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-416", + "seg": [ + [ + [ + "包和", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "作用域": { + "data": { + "uuid": "云原生-4-417", + "seg": [ + [ + [ + "作用域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-105", + "seg": [ + [ + [ + "程序结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本数据": { + "children": [ + { + "整数": { + "data": { + "uuid": "云原生-4-418", + "seg": [ + [ + [ + "整数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "浮点数": { + "data": { + "uuid": "云原生-4-419", + "seg": [ + [ + [ + "浮点数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复数": { + "data": { + "uuid": "云原生-4-420", + "seg": [ + [ + [ + "复数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "布尔值": { + "data": { + "uuid": "云原生-4-421", + "seg": [ + [ + [ + "布尔值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串": { + "children": [ + { + "字符串字面量": { + "data": { + "uuid": "云原生-5-763", + "seg": [ + [ + [ + "字符串", + "字面", + "量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Unicode": { + "data": { + "uuid": "云原生-5-764", + "seg": [ + [ + [ + "unicode" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "UTF-8": { + "data": { + "uuid": "云原生-5-765", + "seg": [ + [ + [ + "utf" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "字符串和字节slice": { + "data": { + "uuid": "云原生-5-766", + "seg": [ + [ + [ + "字符串" + ], + [ + "字节", + "slice" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113532665" + ] + } + } + } + } + }, + { + "字符串和数字的相互转换": { + "data": { + "uuid": "云原生-5-767", + "seg": [ + [ + [ + "字符串" + ], + [ + "数字", + "相互", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-422", + "seg": [ + [ + [ + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常量": { + "children": [ + { + "常量生成器iota": { + "data": { + "uuid": "云原生-5-768", + "seg": [ + [ + [ + "常量", + "生成器", + "iota" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无类型常量": { + "data": { + "uuid": "云原生-5-769", + "seg": [ + [ + [ + "类型", + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-423", + "seg": [ + [ + [ + "常量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-106", + "seg": [ + [ + [ + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "复合数据类型": { + "children": [ + { + "数组": { + "data": { + "uuid": "云原生-4-424", + "seg": [ + [ + [ + "数组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "slice": { + "children": [ + { + "append函数": { + "data": { + "uuid": "云原生-5-770", + "seg": [ + [ + [ + "append", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "slice就地修改": { + "data": { + "uuid": "云原生-5-771", + "seg": [ + [ + [ + "slice", + "修改" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-425", + "seg": [ + [ + [ + "slice" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "map": { + "data": { + "uuid": "云原生-4-426", + "seg": [ + [ + [ + "map" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "41889579", + "52706283", + "38035577", + "34856603", + "85175095", + "14164421", + "58221151", + "72862373" + ] + } + } + } + } + }, + { + "结构体": { + "children": [ + { + "结构体字面量": { + "data": { + "uuid": "云原生-5-772", + "seg": [ + [ + [ + "结构", + "体", + "字面", + "量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "结构体比较": { + "data": { + "uuid": "云原生-5-773", + "seg": [ + [ + [ + "结构", + "体" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "96753385" + ] + } + } + } + } + }, + { + "结构体嵌套和匿名成员": { + "data": { + "uuid": "云原生-5-774", + "seg": [ + [ + [ + "结构", + "体", + "嵌套" + ], + [ + "匿名", + "成员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-427", + "seg": [ + [ + [ + "结构", + "体" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JSON": { + "data": { + "uuid": "云原生-4-428", + "seg": [ + [ + [ + "json" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文本和HTML模板": { + "data": { + "uuid": "云原生-4-429", + "seg": [ + [ + [ + "文本" + ], + [ + "html", + "模板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-107", + "seg": [ + [ + [ + "复合", + "数据类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数": { + "children": [ + { + "函数声明": { + "data": { + "uuid": "云原生-4-430", + "seg": [ + [ + [ + "函数", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "递归": { + "data": { + "uuid": "云原生-4-431", + "seg": [ + [ + [ + "递归" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多返回值": { + "data": { + "uuid": "云原生-4-432", + "seg": [ + [ + [ + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "错误": { + "children": [ + { + "错误处理策略": { + "data": { + "uuid": "云原生-5-775", + "seg": [ + [ + [ + "错误处理", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件结束标识": { + "data": { + "uuid": "云原生-5-776", + "seg": [ + [ + [ + "文件", + "结束", + "标识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-433", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数变量": { + "data": { + "uuid": "云原生-4-434", + "seg": [ + [ + [ + "函数", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "匿名函数": { + "data": { + "uuid": "云原生-4-435", + "seg": [ + [ + [ + "匿名", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变长函数": { + "data": { + "uuid": "云原生-4-436", + "seg": [ + [ + [ + "变", + "长", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "延迟函数调用": { + "data": { + "uuid": "云原生-4-437", + "seg": [ + [ + [ + "延迟", + "函数调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "宕机": { + "data": { + "uuid": "云原生-4-438", + "seg": [ + [ + [ + "宕机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "恢复": { + "data": { + "uuid": "云原生-4-439", + "seg": [ + [ + [ + "恢复" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本语法": { + "data": { + "uuid": "云原生-4-440", + "seg": [ + [ + [ + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "参数和返回值的内存布局": { + "data": { + "uuid": "云原生-4-441", + "seg": [ + [ + [ + "参数" + ], + [ + "返回值", + "内存", + "布局" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数中的局部变量": { + "data": { + "uuid": "云原生-4-442", + "seg": [ + [ + [ + "函数", + "局部变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调用其他函数": { + "data": { + "uuid": "云原生-4-443", + "seg": [ + [ + [ + "调用", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "15416015" + ] + } + } + } + } + }, + { + "宏函数": { + "data": { + "uuid": "云原生-4-444", + "seg": [ + [ + [ + "宏", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数调用规范": { + "data": { + "uuid": "云原生-4-445", + "seg": [ + [ + [ + "函数调用", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级汇编语言": { + "data": { + "uuid": "云原生-4-446", + "seg": [ + [ + [ + "高级", + "汇编语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PCDATA和FUNCDATA": { + "data": { + "uuid": "云原生-4-447", + "seg": [ + [ + [ + "pcdata" + ], + [ + "funcdata" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法函数": { + "data": { + "uuid": "云原生-4-448", + "seg": [ + [ + [ + "方法", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "递归函数: 1到n求和": { + "data": { + "uuid": "云原生-4-449", + "seg": [ + [ + [ + "递归函数" + ] + ], + [ + [ + "n", + "求和" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "闭包函数": { + "data": { + "uuid": "云原生-4-450", + "seg": [ + [ + [ + "闭", + "包", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-108", + "seg": [ + [ + [ + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法": { + "children": [ + { + "方法声明": { + "data": { + "uuid": "云原生-4-451", + "seg": [ + [ + [ + "方法", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指针接收者的方法": { + "data": { + "uuid": "云原生-4-452", + "seg": [ + [ + [ + "指针", + "接收者", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过结构体内嵌组成类型": { + "data": { + "uuid": "云原生-4-453", + "seg": [ + [ + [ + "结构", + "体内", + "嵌", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法变量与表达式": { + "data": { + "uuid": "云原生-4-454", + "seg": [ + [ + [ + "方法", + "变量" + ], + [ + "表达式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82631123", + "43668349" + ] + } + } + } + } + }, + { + "示例:位向量": { + "data": { + "uuid": "云原生-4-455", + "seg": [ + [ + [ + "示例" + ] + ], + [ + [ + "位", + "向量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "封装": { + "data": { + "uuid": "云原生-4-456", + "seg": [ + [ + [ + "封装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-109", + "seg": [ + [ + [ + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口": { + "children": [ + { + "接口即约定": { + "data": { + "uuid": "云原生-4-457", + "seg": [ + [ + [ + "接口", + "约定" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口类型": { + "data": { + "uuid": "云原生-4-458", + "seg": [ + [ + [ + "接口类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现接口": { + "data": { + "uuid": "云原生-4-459", + "seg": [ + [ + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用flag.Value来解析参数": { + "data": { + "uuid": "云原生-4-460", + "seg": [ + [ + [ + "flag", + "value", + "解析", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "接口值": { + "data": { + "uuid": "云原生-4-461", + "seg": [ + [ + [ + "接口", + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用sort.Interface来排序": { + "data": { + "uuid": "云原生-4-462", + "seg": [ + [ + [ + "sort", + "interface", + "排序" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "39337331", + "80179680" + ] + } + } + } + } + }, + { + "http.Handler接口": { + "data": { + "uuid": "云原生-4-463", + "seg": [ + [ + [ + "http", + "handler", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "error接口": { + "data": { + "uuid": "云原生-4-464", + "seg": [ + [ + [ + "error", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50086577", + "86678486" + ] + } + } + } + } + }, + { + "类型断言": { + "data": { + "uuid": "云原生-4-465", + "seg": [ + [ + [ + "类型", + "断言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用类型断言来识别错误": { + "data": { + "uuid": "云原生-4-466", + "seg": [ + [ + [ + "类型", + "断言", + "识别" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过接口类型断言来查询特性": { + "data": { + "uuid": "云原生-4-467", + "seg": [ + [ + [ + "接口类型", + "断言", + "查询", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型分支": { + "data": { + "uuid": "云原生-4-468", + "seg": [ + [ + [ + "类型", + "分支" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一些建议": { + "data": { + "uuid": "云原生-4-469", + "seg": [ + [ + [ + "建议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准库": { + "children": [ + { + "文档与源代码": { + "data": { + "uuid": "云原生-5-777", + "seg": [ + [ + [ + "文档" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "记录日志": { + "children": [ + { + "log包": { + "data": { + "uuid": "云原生-6-263", + "seg": [ + [ + [ + "log", + "包" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "47336269", + "78930070", + "6682211" + ] + } + } + } + } + }, + { + "定制的日志记录器": { + "data": { + "uuid": "云原生-6-264", + "seg": [ + [ + [ + "定制", + "日志", + "记录器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117004292", + "88695321" + ] + } + } + } + } + }, + { + "结论": { + "data": { + "uuid": "云原生-6-265", + "seg": [ + [ + [ + "结论" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-778", + "seg": [ + [ + [ + "记录", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编码解码": { + "children": [ + { + "解码JSON": { + "data": { + "uuid": "云原生-6-266", + "seg": [ + [ + [ + "解码", + "json" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编码JSON": { + "data": { + "uuid": "云原生-6-267", + "seg": [ + [ + [ + "编码", + "json" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88710552", + "109053413" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-779", + "seg": [ + [ + [ + "编码", + "解码" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "输入和输出": { + "children": [ + { + "Writer和Reader接口": { + "data": { + "uuid": "云原生-6-268", + "seg": [ + [ + [ + "writer" + ], + [ + "reader", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "整合并完成工作": { + "data": { + "uuid": "云原生-6-269", + "seg": [ + [ + [ + "整合", + "工作" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88417152", + "80010967" + ] + } + } + } + } + }, + { + "简单的curl": { + "data": { + "uuid": "云原生-6-270", + "seg": [ + [ + [ + "curl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-780", + "seg": [ + [ + [ + "输入" + ], + [ + "输出" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-470", + "seg": [ + [ + [ + "标准", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现": { + "data": { + "uuid": "云原生-4-471", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "方法集": { + "data": { + "uuid": "云原生-4-472", + "seg": [ + [ + [ + "方法", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多态": { + "data": { + "uuid": "云原生-4-473", + "seg": [ + [ + [ + "多态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-110", + "seg": [ + [ + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "goroutine和通道": { + "children": [ + { + "goroutine": { + "data": { + "uuid": "云原生-4-474", + "seg": [ + [ + [ + "goroutine" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81159481" + ] + } + } + } + } + }, + { + "通道": { + "children": [ + { + "无缓冲通道": { + "data": { + "uuid": "云原生-5-781", + "seg": [ + [ + [ + "缓冲", + "通道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管道": { + "data": { + "uuid": "云原生-5-782", + "seg": [ + [ + [ + "管道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单向通道类型": { + "data": { + "uuid": "云原生-5-783", + "seg": [ + [ + [ + "单向", + "通道", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缓冲通道": { + "data": { + "uuid": "云原生-5-784", + "seg": [ + [ + [ + "缓冲", + "通道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-475", + "seg": [ + [ + [ + "通道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并行循环": { + "data": { + "uuid": "云原生-4-476", + "seg": [ + [ + [ + "并行", + "循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用select多路复用": { + "data": { + "uuid": "云原生-4-477", + "seg": [ + [ + [ + "select", + "多路复用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "取消": { + "data": { + "uuid": "云原生-4-478", + "seg": [ + [ + [ + "取消" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-111", + "seg": [ + [ + [ + "goroutine" + ], + [ + "通道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用共享变量实现并发": { + "children": [ + { + "竞态": { + "data": { + "uuid": "云原生-4-479", + "seg": [ + [ + [ + "竞态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "互斥锁:sync.Mutex": { + "data": { + "uuid": "云原生-4-480", + "seg": [ + [ + [ + "互斥", + "锁" + ] + ], + [ + [ + "sync", + "mutex" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "读写互斥锁:sync.RWMutex": { + "data": { + "uuid": "云原生-4-481", + "seg": [ + [ + [ + "读写", + "互斥", + "锁" + ] + ], + [ + [ + "sync", + "rwmutex" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "内存同步": { + "data": { + "uuid": "云原生-4-482", + "seg": [ + [ + [ + "内存", + "同步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "延迟初始化:sync.Once": { + "data": { + "uuid": "云原生-4-483", + "seg": [ + [ + [ + "延迟", + "初始化" + ] + ], + [ + [ + "sync", + "once" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "竞态检测器": { + "data": { + "uuid": "云原生-4-484", + "seg": [ + [ + [ + "竞态", + "检测器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-112", + "seg": [ + [ + [ + "共享", + "变量", + "并发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "包和go工具": { + "children": [ + { + "引言": { + "data": { + "uuid": "云原生-4-485", + "seg": [ + [ + [ + "引言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入路径": { + "data": { + "uuid": "云原生-4-486", + "seg": [ + [ + [ + "导入", + "路径" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包的声明": { + "data": { + "uuid": "云原生-4-487", + "seg": [ + [ + [ + "包", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导入声明": { + "data": { + "uuid": "云原生-4-488", + "seg": [ + [ + [ + "导入", + "声明" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "空导入": { + "data": { + "uuid": "云原生-4-489", + "seg": [ + [ + [ + "空", + "导入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包及其命名": { + "data": { + "uuid": "云原生-4-490", + "seg": [ + [ + [ + "包", + "命名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "go工具": { + "children": [ + { + "工作空间的组织": { + "data": { + "uuid": "云原生-5-785", + "seg": [ + [ + [ + "工作", + "空间", + "组织" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包的下载": { + "data": { + "uuid": "云原生-5-786", + "seg": [ + [ + [ + "包", + "下载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包的构建": { + "data": { + "uuid": "云原生-5-787", + "seg": [ + [ + [ + "包", + "构建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包的文档化": { + "data": { + "uuid": "云原生-5-788", + "seg": [ + [ + [ + "包", + "文档", + "化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内部包": { + "data": { + "uuid": "云原生-5-789", + "seg": [ + [ + [ + "内部", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "包的查询": { + "data": { + "uuid": "云原生-5-790", + "seg": [ + [ + [ + "包", + "查询" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-491", + "seg": [ + [ + [ + "go", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-113", + "seg": [ + [ + [ + "包和", + "go", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试": { + "children": [ + { + "go test工具": { + "data": { + "uuid": "云原生-4-492", + "seg": [ + [ + [ + "go", + "test", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Test函数": { + "children": [ + { + "随机测试": { + "data": { + "uuid": "云原生-5-791", + "seg": [ + [ + [ + "随机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试命令": { + "data": { + "uuid": "云原生-5-792", + "seg": [ + [ + [ + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "白盒测试": { + "data": { + "uuid": "云原生-5-793", + "seg": [ + [ + [ + "白盒" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "外部测试包": { + "data": { + "uuid": "云原生-5-794", + "seg": [ + [ + [ + "外部", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编写有效测试": { + "data": { + "uuid": "云原生-5-795", + "seg": [ + [ + [ + "编写" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "避免脆弱的测试": { + "data": { + "uuid": "云原生-5-796", + "seg": [ + [ + [ + "脆弱" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-493", + "seg": [ + [ + [ + "test", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "覆盖率": { + "data": { + "uuid": "云原生-4-494", + "seg": [ + [ + [ + "覆盖率" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Benchmark函数": { + "data": { + "uuid": "云原生-4-495", + "seg": [ + [ + [ + "benchmark", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "性能剖析": { + "data": { + "uuid": "云原生-4-496", + "seg": [ + [ + [ + "性能", + "剖析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Example函数": { + "data": { + "uuid": "云原生-4-497", + "seg": [ + [ + [ + "example", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-114", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "反射": { + "children": [ + { + "reflect.Type和reflect.Value": { + "data": { + "uuid": "云原生-4-498", + "seg": [ + [ + [ + "reflect", + "type" + ], + [ + "reflect", + "value" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Display:一个递归的值显示器": { + "data": { + "uuid": "云原生-4-499", + "seg": [ + [ + [ + "display" + ] + ], + [ + [ + "递归", + "值", + "显示器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用reflect.Value来设置值": { + "data": { + "uuid": "云原生-4-500", + "seg": [ + [ + [ + "reflect", + "value", + "设置", + "值" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100094826" + ] + } + } + } + } + }, + { + "访问结构体字段标签": { + "data": { + "uuid": "云原生-4-501", + "seg": [ + [ + [ + "访问", + "结构", + "体字段", + "标签" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "显示类型的方法": { + "data": { + "uuid": "云原生-4-502", + "seg": [ + [ + [ + "显示", + "类型", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "注意事项": { + "data": { + "uuid": "云原生-4-503", + "seg": [ + [ + [ + "注意事项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-115", + "seg": [ + [ + [ + "反射" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81193806" + ] + } + } + } + } + }, + { + "低级编程": { + "children": [ + { + "unsafe.Sizeof、Alignof和Offsetof": { + "data": { + "uuid": "云原生-4-504", + "seg": [ + [ + [ + "unsafe", + "sizeof" + ], + [ + "alignof" + ], + [ + "offsetof" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "unsafe.Pointer": { + "data": { + "uuid": "云原生-4-505", + "seg": [ + [ + [ + "unsafe", + "pointer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用cgo调用C代码": { + "data": { + "uuid": "云原生-4-506", + "seg": [ + [ + [ + "cgo", + "调用", + "c" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-116", + "seg": [ + [ + [ + "低级", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关于Go语言的介绍": { + "children": [ + { + "用Go解决现代编程难题": { + "children": [ + { + "开发速度": { + "data": { + "uuid": "云原生-5-797", + "seg": [ + [ + [ + "开发", + "速度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发": { + "children": [ + { + "竞争状态": { + "data": { + "uuid": "云原生-6-271", + "seg": [ + [ + [ + "竞争", + "状态" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "锁住共享资源": { + "children": [ + { + "原子函数": { + "data": { + "uuid": "云原生-7-41", + "seg": [ + [ + [ + "原子", + "函数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-272", + "seg": [ + [ + [ + "锁住", + "共享资源" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-798", + "seg": [ + [ + [ + "并发" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Go语言的类型系统": { + "children": [ + { + "用户定义的类型": { + "data": { + "uuid": "云原生-6-273", + "seg": [ + [ + [ + "用户", + "定义", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型的本质": { + "children": [ + { + "内置类型": { + "data": { + "uuid": "云原生-7-42", + "seg": [ + [ + [ + "内置", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "引用类型": { + "data": { + "uuid": "云原生-7-43", + "seg": [ + [ + [ + "引用", + "类型" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51661276" + ] + } + } + } + } + }, + { + "结构类型": { + "data": { + "uuid": "云原生-7-44", + "seg": [ + [ + [ + "结构", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-274", + "seg": [ + [ + [ + "类型", + "本质" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "嵌入类型": { + "data": { + "uuid": "云原生-6-275", + "seg": [ + [ + [ + "嵌入", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "公开或未公开的标识符": { + "data": { + "uuid": "云原生-6-276", + "seg": [ + [ + [ + "公开", + "未公开", + "标识符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-799", + "seg": [ + [ + [ + "go", + "语言", + "类型", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内存管理": { + "data": { + "uuid": "云原生-5-800", + "seg": [ + [ + [ + "内存", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-507", + "seg": [ + [ + [ + "go", + "编程", + "难题" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "你好,Go": { + "data": { + "uuid": "云原生-4-508", + "seg": [ + [ + [ + "你好", + "go" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-117", + "seg": [ + [ + [ + "go", + "语言", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "快速开始一个Go程序": { + "children": [ + { + "程序架构": { + "data": { + "uuid": "云原生-4-509", + "seg": [ + [ + [ + "程序", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "main包": { + "data": { + "uuid": "云原生-4-510", + "seg": [ + [ + [ + "main", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "search包": { + "children": [ + { + "search.go": { + "data": { + "uuid": "云原生-5-801", + "seg": [ + [ + [ + "search", + "go" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6746718", + "50714555", + "50925347", + "7242498", + "7526689", + "103396664" + ] + } + } + } + } + }, + { + "feed.go": { + "data": { + "uuid": "云原生-5-802", + "seg": [ + [ + [ + "feed", + "go" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "match.go default.go": { + "data": { + "uuid": "云原生-5-803", + "seg": [ + [ + [ + "match", + "go", + "default" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-511", + "seg": [ + [ + [ + "search", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RSS匹配器": { + "data": { + "uuid": "云原生-4-512", + "seg": [ + [ + [ + "rss", + "匹配", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-118", + "seg": [ + [ + [ + "快速", + "go", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打包和工具链": { + "children": [ + { + "包": { + "children": [ + { + "包名惯例": { + "data": { + "uuid": "云原生-5-804", + "seg": [ + [ + [ + "包名", + "惯例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-513", + "seg": [ + [ + [ + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数init": { + "data": { + "uuid": "云原生-4-514", + "seg": [ + [ + [ + "函数", + "init" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "进一步介绍Go开发工具": { + "children": [ + { + "go vet": { + "data": { + "uuid": "云原生-5-805", + "seg": [ + [ + [ + "go", + "vet" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go代码格式化": { + "data": { + "uuid": "云原生-5-806", + "seg": [ + [ + [ + "go", + "格式化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go语言的文档": { + "data": { + "uuid": "云原生-5-807", + "seg": [ + [ + [ + "go", + "语言", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "2899" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-515", + "seg": [ + [ + [ + "进一步", + "介绍", + "go", + "开发工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与其他Go开发者合作": { + "data": { + "uuid": "云原生-4-516", + "seg": [ + [ + [], + [ + "go", + "开发者", + "合作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "依赖管理": { + "children": [ + { + "第三方依赖": { + "data": { + "uuid": "云原生-5-808", + "seg": [ + [ + [ + "依赖" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对gb的介绍": { + "data": { + "uuid": "云原生-5-809", + "seg": [ + [ + [ + "gb", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-517", + "seg": [ + [ + [ + "依赖", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-119", + "seg": [ + [ + [ + "打包" + ], + [ + "工具", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并发模式": { + "children": [ + { + "runner": { + "data": { + "uuid": "云原生-4-518", + "seg": [ + [ + [ + "runner" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "pool": { + "data": { + "uuid": "云原生-4-519", + "seg": [ + [ + [ + "pool" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "work": { + "data": { + "uuid": "云原生-4-520", + "seg": [ + [ + [ + "work" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-120", + "seg": [ + [ + [ + "并发", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "测试和性能": { + "children": [ + { + "单元测试": { + "children": [ + { + "基础单元测试": { + "data": { + "uuid": "云原生-5-810", + "seg": [ + [ + [ + "基础", + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "表组测试": { + "data": { + "uuid": "云原生-5-811", + "seg": [ + [ + [ + "表组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模仿调用": { + "data": { + "uuid": "云原生-5-812", + "seg": [ + [ + [ + "模仿", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试服务端点": { + "data": { + "uuid": "云原生-5-813", + "seg": [ + [ + [ + "服务端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-521", + "seg": [ + [ + [ + "单元测试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基准测试": { + "data": { + "uuid": "云原生-4-522", + "seg": [ + [ + [ + "基准" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-121", + "seg": [ + [ + [], + [ + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go与Web应用": { + "children": [ + { + "Go与Web应用": { + "children": [ + { + "使用Go语言构建Web应用": { + "children": [ + { + "Go与可扩展Web应用": { + "data": { + "uuid": "云原生-6-277", + "seg": [ + [ + [ + "go" + ], + [ + "扩展", + "web" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "78740990", + "80021331", + "52433206", + "77931566", + "55048064", + "55102275", + "74529333", + "74199762", + "74330458", + "49888437" + ] + } + } + } + } + }, + { + "Go与模块化Web应用": { + "data": { + "uuid": "云原生-6-278", + "seg": [ + [ + [ + "go" + ], + [ + "模块化", + "web" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Go与可维护的Web应用": { + "data": { + "uuid": "云原生-6-279", + "seg": [ + [ + [ + "go" + ], + [ + "维护", + "web" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Go与高性能Web应用": { + "data": { + "uuid": "云原生-6-280", + "seg": [ + [ + [ + "go" + ], + [ + "高性能", + "web" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "41379851" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-814", + "seg": [ + [ + [ + "go", + "语言", + "构建", + "web" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web应用的工作原理": { + "data": { + "uuid": "云原生-5-815", + "seg": [ + [ + [ + "web", + "工作", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP简介": { + "data": { + "uuid": "云原生-5-816", + "seg": [ + [ + [ + "http", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web应用的诞生": { + "data": { + "uuid": "云原生-5-817", + "seg": [ + [ + [ + "web", + "诞生" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP请求": { + "children": [ + { + "幂等的请求方法": { + "data": { + "uuid": "云原生-6-281", + "seg": [ + [ + [ + "幂", + "方法" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "浏览器对请求方法的支持": { + "data": { + "uuid": "云原生-6-282", + "seg": [ + [ + [ + "浏览器", + "方法", + "支持" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "请求首部": { + "data": { + "uuid": "云原生-6-283", + "seg": [ + [ + [] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-818", + "seg": [ + [ + [ + "http" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "HTTP响应": { + "children": [ + { + "响应状态码": { + "data": { + "uuid": "云原生-6-284", + "seg": [ + [ + [ + "响应", + "状态", + "码" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "响应首部": { + "data": { + "uuid": "云原生-6-285", + "seg": [ + [ + [ + "响应" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-819", + "seg": [ + [ + [ + "http", + "响应" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "URI": { + "data": { + "uuid": "云原生-5-820", + "seg": [ + [ + [ + "uri" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "52084220", + "51112004" + ] + } + } + } + } + }, + { + "HTTP/2简介": { + "data": { + "uuid": "云原生-5-821", + "seg": [ + [ + [ + "http", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web应用的各个组成部分": { + "children": [ + { + "处理器": { + "data": { + "uuid": "云原生-6-286", + "seg": [ + [ + [ + "处理器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "模板引擎": { + "data": { + "uuid": "云原生-6-287", + "seg": [ + [ + [ + "模板", + "引擎" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "处理请求": { + "children": [ + { + "ResponseWriter": { + "data": { + "uuid": "云原生-7-45", + "seg": [ + [ + [ + "responsewriter" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "cookie": { + "children": [ + { + "将cookie发送至浏览器": { + "data": { + "uuid": "云原生-8-5", + "seg": [ + [ + [ + "cookie", + "发送至", + "浏览器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "从浏览器里面获取cookie": { + "data": { + "uuid": "云原生-8-6", + "seg": [ + [ + [ + "浏览器", + "获取", + "cookie" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "25145551", + "52821272", + "84036875", + "53204959", + "10163173", + "114063823" + ] + } + } + } + } + }, + { + "使用cookie实现闪现消息": { + "data": { + "uuid": "云原生-8-7", + "seg": [ + [ + [ + "cookie", + "闪现", + "消息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-7-46", + "seg": [ + [ + [ + "cookie" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-288", + "seg": [ + [ + [] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "内容展示": { + "children": [ + { + "Go的模板引擎": { + "children": [ + { + "对模板进行语法分析": { + "data": { + "uuid": "云原生-8-8", + "seg": [ + [ + [ + "模板", + "语法分析" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "105624642" + ] + } + } + } + } + }, + { + "执行模板": { + "data": { + "uuid": "云原生-8-9", + "seg": [ + [ + [ + "执行", + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-7-47", + "seg": [ + [ + [ + "go", + "模板", + "引擎" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "动作": { + "children": [ + { + "条件动作": { + "data": { + "uuid": "云原生-8-10", + "seg": [ + [ + [ + "条件", + "动作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "迭代动作": { + "data": { + "uuid": "云原生-8-11", + "seg": [ + [ + [ + "迭代", + "动作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "设置动作": { + "data": { + "uuid": "云原生-8-12", + "seg": [ + [ + [ + "设置", + "动作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "包含动作": { + "data": { + "uuid": "云原生-8-13", + "seg": [ + [ + [ + "包含", + "动作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-7-48", + "seg": [ + [ + [ + "动作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "上下文感知": { + "children": [ + { + "防御XSS攻击": { + "data": { + "uuid": "云原生-8-14", + "seg": [ + [ + [ + "防御", + "xss", + "攻击" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "103780900" + ] + } + } + } + } + }, + { + "不对HTML进行转义": { + "data": { + "uuid": "云原生-8-15", + "seg": [ + [ + [ + "html", + "转义" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "6611640", + "87970951", + "115816586", + "111351274", + "115364480" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-7-49", + "seg": [ + [ + [ + "上下文", + "感知" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "嵌套模板": { + "data": { + "uuid": "云原生-7-50", + "seg": [ + [ + [ + "嵌套", + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通过块动作定义默认模板": { + "data": { + "uuid": "云原生-7-51", + "seg": [ + [ + [ + "动作", + "定义", + "默认", + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-289", + "seg": [ + [ + [ + "内容", + "展示" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "存储数据": { + "children": [ + { + "内存存储": { + "data": { + "uuid": "云原生-7-52", + "seg": [ + [ + [ + "内存", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "文件存储": { + "children": [ + { + "读取和写入CSV文件": { + "data": { + "uuid": "云原生-8-16", + "seg": [ + [ + [ + "读取" + ], + [ + "写入", + "csv", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "7395213", + "113733017", + "117325240", + "95869795", + "53869429" + ] + } + } + } + } + }, + { + "gob包": { + "data": { + "uuid": "云原生-8-17", + "seg": [ + [ + [ + "gob", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-7-53", + "seg": [ + [ + [ + "文件", + "存储" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-290", + "seg": [ + [ + [ + "存储", + "数据" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-822", + "seg": [ + [ + [ + "web", + "组成部分" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Hello Go": { + "data": { + "uuid": "云原生-5-823", + "seg": [ + [ + [ + "hello", + "go" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-523", + "seg": [ + [ + [ + "go" + ], + [ + "web" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "ChitChat论坛": { + "children": [ + { + "ChitChat简介": { + "data": { + "uuid": "云原生-5-824", + "seg": [ + [ + [ + "chitchat", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用设计": { + "data": { + "uuid": "云原生-5-825", + "seg": [ + [ + [ + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据模型": { + "data": { + "uuid": "云原生-5-826", + "seg": [ + [ + [ + "数据模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "请求的接收与处理": { + "children": [ + { + "多路复用器": { + "data": { + "uuid": "云原生-6-291", + "seg": [ + [ + [ + "多路复用", + "器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "服务静态文件": { + "data": { + "uuid": "云原生-6-292", + "seg": [ + [ + [ + "服务", + "静态", + "文件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "创建处理器函数": { + "data": { + "uuid": "云原生-6-293", + "seg": [ + [ + [ + "创建", + "处理器", + "函数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用cookie进行访问控制": { + "data": { + "uuid": "云原生-6-294", + "seg": [ + [ + [ + "cookie", + "访问控制" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Go的net/http标准库": { + "data": { + "uuid": "云原生-6-295", + "seg": [ + [ + [ + "go", + "net", + "http", + "标准", + "库" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "96999724" + ] + } + } + } + } + }, + { + "使用Go构建服务器": { + "children": [ + { + "Go Web服务器": { + "data": { + "uuid": "云原生-7-54", + "seg": [ + [ + [ + "go", + "web", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通过HTTPS提供服务": { + "data": { + "uuid": "云原生-7-55", + "seg": [ + [ + [ + "https", + "提供", + "服务" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "75151846", + "69336273", + "89220092", + "108498434", + "52443274" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-6-296", + "seg": [ + [ + [ + "go", + "构建", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-827", + "seg": [ + [ + [ + "接收" + ], + [] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用模板生成HTML响应": { + "data": { + "uuid": "云原生-5-828", + "seg": [ + [ + [ + "模板", + "生成", + "html", + "响应" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "83043409" + ] + } + } + } + } + }, + { + "安装PostgreSQL": { + "children": [ + { + "在Linux或FreeBSD系统上安装": { + "data": { + "uuid": "云原生-6-297", + "seg": [ + [ + [ + "linux", + "freebsd", + "系统", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "在Mac OS X系统上安装": { + "data": { + "uuid": "云原生-6-298", + "seg": [ + [ + [ + "mac", + "os", + "x", + "系统", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "108906018", + "109014330", + "78161154", + "99056323", + "109014004", + "113778036", + "103214878", + "100788959" + ] + } + } + } + } + }, + { + "在Windows系统上安装": { + "data": { + "uuid": "云原生-6-299", + "seg": [ + [ + [ + "windows", + "系统", + "安装" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "80712214", + "108723202", + "86490198", + "78659049", + "108402612", + "103756607", + "78482846", + "102853064", + "6962548", + "104190220" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-829", + "seg": [ + [ + [ + "安装", + "postgresql" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117730158" + ] + } + } + } + } + }, + { + "连接数据库": { + "data": { + "uuid": "云原生-5-830", + "seg": [ + [ + [ + "连接", + "数据库" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "启动服务器": { + "data": { + "uuid": "云原生-5-831", + "seg": [ + [ + [ + "启动", + "服务器" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Web应用运作流程回顾": { + "data": { + "uuid": "云原生-5-832", + "seg": [ + [ + [ + "web", + "运作", + "流程", + "回顾" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-524", + "seg": [ + [ + [ + "chitchat", + "论坛" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Web开发简介": { + "data": { + "uuid": "云原生-4-525", + "seg": [ + [ + [ + "web", + "开发", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "请求路由": { + "children": [ + { + "httprouter": { + "data": { + "uuid": "云原生-5-833", + "seg": [ + [ + [ + "httprouter" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "原理": { + "data": { + "uuid": "云原生-5-834", + "seg": [ + [ + [ + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "压缩检索树创建过程": { + "data": { + "uuid": "云原生-5-835", + "seg": [ + [ + [ + "压缩", + "检索", + "树", + "创建", + "过程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-526", + "seg": [ + [ + [ + "路由" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "中间件": { + "children": [ + { + "代码泥潭": { + "data": { + "uuid": "云原生-5-836", + "seg": [ + [ + [ + "泥潭" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用中间件剥离非业务逻辑": { + "data": { + "uuid": "云原生-5-837", + "seg": [ + [ + [ + "中间件", + "剥离", + "业务", + "逻辑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更优雅的中间件写法": { + "data": { + "uuid": "云原生-5-838", + "seg": [ + [ + [ + "优雅", + "中间件", + "写法" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50518069", + "50445051", + "80035462", + "78535963", + "53787008", + "84530965", + "50617816", + "78293022", + "17718243", + "6816815" + ] + } + } + } + } + }, + { + "哪些事情适合在中间件中做": { + "data": { + "uuid": "云原生-5-839", + "seg": [ + [ + [ + "事情", + "适合", + "中间件", + "做" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-527", + "seg": [ + [ + [ + "中间件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "请求校验": { + "children": [ + { + "重构请求校验函数": { + "data": { + "uuid": "云原生-5-840", + "seg": [ + [ + [ + "重构", + "校验", + "函数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用请求校验器解放体力劳动": { + "data": { + "uuid": "云原生-5-841", + "seg": [ + [ + [ + "校验", + "器", + "解放", + "体力劳动" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-528", + "seg": [ + [ + [ + "校验" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Database和数据库打交道": { + "children": [ + { + "从database/sql讲起": { + "data": { + "uuid": "云原生-5-842", + "seg": [ + [ + [ + "database", + "sql", + "讲起" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "6539297", + "103571751", + "7796844", + "116750573" + ] + } + } + } + } + }, + { + "提高生产效率的ORM和": { + "data": { + "uuid": "云原生-5-843", + "seg": [ + [ + [ + "提高", + "生产", + "效率", + "orm" + ], + [] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "脆弱的数据库": { + "data": { + "uuid": "云原生-5-844", + "seg": [ + [ + [ + "脆弱", + "数据库" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "95288016", + "78745041", + "80102347", + "107587807" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-529", + "seg": [ + [ + [ + "database" + ], + [ + "数据库", + "打交道" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "服务流量限制": { + "children": [ + { + "常见的流量限制手段": { + "data": { + "uuid": "云原生-5-845", + "seg": [ + [ + [ + "常见", + "流量", + "手段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务瓶颈和QoS": { + "data": { + "uuid": "云原生-5-846", + "seg": [ + [ + [ + "服务", + "瓶颈" + ], + [ + "qos" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-530", + "seg": [ + [ + [ + "服务", + "流量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "灰度发布和A/B测试": { + "children": [ + { + "通过分批次部署实现灰度发布": { + "data": { + "uuid": "云原生-5-847", + "seg": [ + [ + [ + "分", + "批次", + "部署", + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过业务规则进行灰度发布": { + "data": { + "uuid": "云原生-5-848", + "seg": [ + [ + [ + "业务", + "规则", + "灰度", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何实现一套灰度发布系统": { + "data": { + "uuid": "云原生-5-849", + "seg": [ + [ + [ + "灰度", + "发布", + "系统" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-531", + "seg": [ + [ + [ + "灰度", + "发布" + ], + [ + "a", + "b" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-122", + "seg": [ + [ + [ + "go" + ], + [ + "web" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "语言基础": { + "children": [ + { + "Go语言创世纪": { + "children": [ + { + "来自贝尔实验室特有基因": { + "data": { + "uuid": "云原生-5-850", + "seg": [ + [ + [ + "贝尔实验室", + "特有", + "基因" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "你好,世界": { + "data": { + "uuid": "云原生-5-851", + "seg": [ + [ + [ + "你好", + "世界" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-532", + "seg": [ + [ + [ + "go", + "语言", + "创世纪" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“Hello, World”的革命": { + "children": [ + { + "B语言——Ken Thompson,": { + "data": { + "uuid": "云原生-5-852", + "seg": [ + [ + [ + "b", + "语言", + "ken", + "thompson" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C语言——Dennis Ritchie,1972—": { + "data": { + "uuid": "云原生-5-853", + "seg": [ + [ + [ + "c语言", + "dennis", + "ritchie" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117330527", + "117457629", + "93144389", + "101789118", + "114797075", + "115248849" + ] + } + } + } + } + }, + { + "Newsqueak——Rob Pike,": { + "data": { + "uuid": "云原生-5-854", + "seg": [ + [ + [ + "newsqueak", + "rob", + "pike" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Alef——Phil Winterbottom,": { + "data": { + "uuid": "云原生-5-855", + "seg": [ + [ + [ + "alef", + "phil", + "winterbottom" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Limbo——Sean Dorward, Phil Winterbottom, Rob Pike,": { + "data": { + "uuid": "云原生-5-856", + "seg": [ + [ + [ + "limbo", + "sean", + "dorward", + "phil", + "winterbottom", + "rob", + "pike" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go语言——2007—": { + "data": { + "uuid": "云原生-5-857", + "seg": [ + [ + [ + "go", + "语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "你好,世界!——V2.": { + "data": { + "uuid": "云原生-5-858", + "seg": [ + [ + [ + "你好", + "世界", + "!", + "v2" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-533", + "seg": [ + [ + [ + "hello", + "world", + "革命" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向并发的内存模型": { + "children": [ + { + "原子操作": { + "data": { + "uuid": "云原生-5-859", + "seg": [ + [ + [ + "原子", + "操作" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "顺序一致性内存模型": { + "data": { + "uuid": "云原生-5-860", + "seg": [ + [ + [ + "顺序", + "一致性", + "内存", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "初始化顺序": { + "data": { + "uuid": "云原生-5-861", + "seg": [ + [ + [ + "初始化", + "顺序" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Goroutine的创建": { + "data": { + "uuid": "云原生-5-862", + "seg": [ + [ + [ + "goroutine", + "创建" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基于通道的通信": { + "data": { + "uuid": "云原生-5-863", + "seg": [ + [ + [ + "通道", + "通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "不靠谱的同步": { + "data": { + "uuid": "云原生-5-864", + "seg": [ + [ + [ + "不靠", + "谱", + "同步" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-534", + "seg": [ + [ + [ + "面向", + "并发", + "内存", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "常见的并发模式": { + "children": [ + { + "并发版本的“Hello, World”": { + "data": { + "uuid": "云原生-5-865", + "seg": [ + [ + [ + "并发", + "版本", + "hello", + "world" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "生产者/消费者模型": { + "data": { + "uuid": "云原生-5-866", + "seg": [ + [ + [ + "生产者", + "消费者", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发布/订阅模型": { + "data": { + "uuid": "云原生-5-867", + "seg": [ + [ + [ + "发布", + "订阅", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "控制并发数": { + "data": { + "uuid": "云原生-5-868", + "seg": [ + [ + [ + "控制", + "并发", + "数" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "赢者为王": { + "data": { + "uuid": "云原生-5-869", + "seg": [ + [ + [ + "赢者", + "王" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "素数筛": { + "data": { + "uuid": "云原生-5-870", + "seg": [ + [ + [ + "素数", + "筛" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "并发的安全退出": { + "data": { + "uuid": "云原生-5-871", + "seg": [ + [ + [ + "并发", + "退出" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "context包": { + "data": { + "uuid": "云原生-5-872", + "seg": [ + [ + [ + "context", + "包" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-535", + "seg": [ + [ + [ + "常见", + "并发", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "错误和异常": { + "children": [ + { + "获取错误的上下文": { + "data": { + "uuid": "云原生-5-873", + "seg": [ + [ + [ + "获取", + "上下文" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "错误的错误返回": { + "data": { + "uuid": "云原生-5-874", + "seg": [ + [ + [ + "返回" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "剖析异常": { + "data": { + "uuid": "云原生-5-875", + "seg": [ + [ + [ + "剖析", + "异常" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80702449" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-536", + "seg": [ + [ + [], + [ + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "补充说明": { + "data": { + "uuid": "云原生-4-537", + "seg": [ + [ + [ + "补充" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-123", + "seg": [ + [ + [ + "语言", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CGO编程": { + "children": [ + { + "快速入门": { + "children": [ + { + "最简CGO程序": { + "data": { + "uuid": "云原生-5-876", + "seg": [ + [ + [ + "简", + "cgo", + "程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于C标准库函数输出字符串": { + "data": { + "uuid": "云原生-5-877", + "seg": [ + [ + [ + "c", + "标准", + "库函数", + "输出", + "字符串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用自己的C函数": { + "data": { + "uuid": "云原生-5-878", + "seg": [ + [ + [ + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C代码的模块化": { + "data": { + "uuid": "云原生-5-879", + "seg": [ + [ + [ + "c", + "模块化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Go重新实现C函数": { + "data": { + "uuid": "云原生-5-880", + "seg": [ + [ + [ + "go", + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向C接口的Go编程": { + "data": { + "uuid": "云原生-5-881", + "seg": [ + [ + [ + "面向", + "c", + "接口", + "go", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义整数变量": { + "data": { + "uuid": "云原生-5-882", + "seg": [ + [ + [ + "定义", + "整数", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义字符串变量": { + "data": { + "uuid": "云原生-5-883", + "seg": [ + [ + [ + "定义", + "字符串", + "变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义main函数": { + "data": { + "uuid": "云原生-5-884", + "seg": [ + [ + [ + "定义", + "main", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特殊字符": { + "data": { + "uuid": "云原生-5-885", + "seg": [ + [ + [ + "特殊字符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "没有分号": { + "data": { + "uuid": "云原生-5-886", + "seg": [ + [ + [ + "分" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-538", + "seg": [ + [ + [ + "快速", + "入门" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89136370" + ] + } + } + } + } + }, + { + "CGO基础": { + "children": [ + { + "import \"C\"语句": { + "data": { + "uuid": "云原生-5-887", + "seg": [ + [ + [ + "import", + "c", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "#cgo语句": { + "data": { + "uuid": "云原生-5-888", + "seg": [ + [ + [ + "cgo", + "语句" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "build标志条件编译": { + "data": { + "uuid": "云原生-5-889", + "seg": [ + [ + [ + "build", + "标志", + "条件", + "编译" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6566662" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-539", + "seg": [ + [ + [ + "cgo", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "类型转换": { + "children": [ + { + "数值类型": { + "data": { + "uuid": "云原生-5-890", + "seg": [ + [ + [ + "数值", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go字符串和切片": { + "data": { + "uuid": "云原生-5-891", + "seg": [ + [ + [ + "go", + "字符串" + ], + [ + "切片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指针间的转换": { + "data": { + "uuid": "云原生-5-892", + "seg": [ + [ + [ + "指针", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数值和指针的转换": { + "data": { + "uuid": "云原生-5-893", + "seg": [ + [ + [ + "数值" + ], + [ + "指针", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "切片间的转换": { + "data": { + "uuid": "云原生-5-894", + "seg": [ + [ + [ + "切片", + "转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-540", + "seg": [ + [ + [ + "类型转换" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数调用": { + "children": [ + { + "Go调用C函数": { + "data": { + "uuid": "云原生-5-895", + "seg": [ + [ + [ + "go", + "调用", + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C函数的返回值": { + "data": { + "uuid": "云原生-5-896", + "seg": [ + [ + [ + "c", + "函数", + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "void函数的返回值": { + "data": { + "uuid": "云原生-5-897", + "seg": [ + [ + [ + "void", + "函数", + "返回值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C调用Go导出函数": { + "data": { + "uuid": "云原生-5-898", + "seg": [ + [ + [ + "c", + "调用", + "go", + "导出", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-541", + "seg": [ + [ + [ + "函数调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内部机制": { + "children": [ + { + "CGO生成的中间文件": { + "data": { + "uuid": "云原生-5-899", + "seg": [ + [ + [ + "cgo", + "生成", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go调用C函数": { + "data": { + "uuid": "云原生-5-900", + "seg": [ + [ + [ + "go", + "调用", + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C调用Go函数": { + "data": { + "uuid": "云原生-5-901", + "seg": [ + [ + [ + "c", + "调用", + "go", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-542", + "seg": [ + [ + [ + "内部", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CGO内存模型": { + "children": [ + { + "Go访问C内存": { + "data": { + "uuid": "云原生-5-902", + "seg": [ + [ + [ + "go", + "访问", + "c", + "内存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C临时访问传入的Go内存": { + "data": { + "uuid": "云原生-5-903", + "seg": [ + [ + [ + "c", + "临时", + "访问", + "传入", + "go", + "内存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C长期持有Go指针对象": { + "data": { + "uuid": "云原生-5-904", + "seg": [ + [ + [ + "c", + "长期", + "持有", + "go", + "指针", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导出C函数不能返回Go内存": { + "data": { + "uuid": "云原生-5-905", + "seg": [ + [ + [ + "导出", + "c", + "函数", + "返回", + "go", + "内存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-543", + "seg": [ + [ + [ + "cgo", + "内存", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "C++类包装": { + "children": [ + { + "C++类到Go语言对象": { + "data": { + "uuid": "云原生-5-906", + "seg": [ + [ + [ + "c++", + "类到", + "go", + "语言", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go语言对象到C++类": { + "data": { + "uuid": "云原生-5-907", + "seg": [ + [ + [ + "go", + "语言", + "对象", + "c++", + "类" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "49913945", + "117598639", + "88340341" + ] + } + } + } + } + }, + { + "彻底解放C++的this指针": { + "data": { + "uuid": "云原生-5-908", + "seg": [ + [ + [ + "解放", + "c++", + "this", + "指针" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51603033", + "111939649" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-544", + "seg": [ + [ + [ + "c++", + "类", + "包装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "静态库和动态库": { + "children": [ + { + "使用C静态库": { + "data": { + "uuid": "云原生-5-909", + "seg": [ + [ + [ + "c", + "静态", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用C动态库": { + "data": { + "uuid": "云原生-5-910", + "seg": [ + [ + [ + "c", + "动态", + "库" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "83375552", + "79483414", + "80261233" + ] + } + } + } + } + }, + { + "导出C静态库": { + "data": { + "uuid": "云原生-5-911", + "seg": [ + [ + [ + "导出", + "c", + "静态", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导出C动态库": { + "data": { + "uuid": "云原生-5-912", + "seg": [ + [ + [ + "导出", + "c", + "动态", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导出非main包的函数": { + "data": { + "uuid": "云原生-5-913", + "seg": [ + [ + [ + "导出", + "非", + "main", + "包", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-545", + "seg": [ + [ + [ + "静态", + "库" + ], + [ + "动态", + "库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编译和链接参数": { + "children": [ + { + "编译参数:CFLAGS/CPPFLAGS/CXXFLAGS": { + "data": { + "uuid": "云原生-5-914", + "seg": [ + [ + [ + "编译", + "参数" + ] + ], + [ + [ + "cflags", + "cppflags", + "cxxflags" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "链接参数:LDFLAGS": { + "data": { + "uuid": "云原生-5-915", + "seg": [ + [ + [ + "链接", + "参数" + ] + ], + [ + [ + "ldflags" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79008053" + ] + } + } + } + } + }, + { + "pkg-config": { + "data": { + "uuid": "云原生-5-916", + "seg": [ + [ + [ + "pkg", + "config" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "go get链": { + "data": { + "uuid": "云原生-5-917", + "seg": [ + [ + [ + "go", + "get", + "链" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多个非main包中导出C函数": { + "data": { + "uuid": "云原生-5-918", + "seg": [ + [ + [ + "非", + "main", + "包中", + "导出", + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-546", + "seg": [ + [ + [ + "编译" + ], + [ + "链接", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-124", + "seg": [ + [ + [ + "cgo", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go汇编语言": { + "children": [ + { + "计算机结构": { + "children": [ + { + "图灵机和BrainFuck语言": { + "data": { + "uuid": "云原生-5-919", + "seg": [ + [ + [ + "图灵机" + ], + [ + "brainfuck", + "语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "《人力资源机器》游戏": { + "data": { + "uuid": "云原生-5-920", + "seg": [ + [ + [ + "人力资源", + "机器", + "游戏" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "X86-64体系结构": { + "data": { + "uuid": "云原生-5-921", + "seg": [ + [ + [ + "x86", + "体系结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Go汇编中的伪寄存器": { + "data": { + "uuid": "云原生-5-922", + "seg": [ + [ + [ + "go", + "汇编", + "伪", + "寄存器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "X86-64指令集": { + "data": { + "uuid": "云原生-5-923", + "seg": [ + [ + [ + "x86", + "指令集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-547", + "seg": [ + [ + [ + "计算机", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制流": { + "children": [ + { + "顺序执行": { + "data": { + "uuid": "云原生-5-924", + "seg": [ + [ + [ + "顺序", + "执行" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "48316919" + ] + } + } + } + } + }, + { + "if/goto跳转": { + "data": { + "uuid": "云原生-5-925", + "seg": [ + [ + [ + "if", + "goto", + "跳转" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78263379", + "45246865", + "83545442", + "79924884", + "91879280", + "82696369", + "113810573", + "116768440", + "98472748" + ] + } + } + } + } + }, + { + "for循环": { + "data": { + "uuid": "云原生-5-926", + "seg": [ + [ + [ + "for循环" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-548", + "seg": [ + [ + [ + "控制流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "汇编语言的威力": { + "children": [ + { + "系统调用": { + "data": { + "uuid": "云原生-5-927", + "seg": [ + [ + [ + "系统", + "调用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "直接调用C函数": { + "data": { + "uuid": "云原生-5-928", + "seg": [ + [ + [ + "调用", + "c", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "AVX指令": { + "data": { + "uuid": "云原生-5-929", + "seg": [ + [ + [ + "avx", + "指令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-549", + "seg": [ + [ + [ + "汇编语言", + "威力" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "例子:Goroutine ID": { + "children": [ + { + "故意设计没有goid": { + "data": { + "uuid": "云原生-5-930", + "seg": [ + [ + [ + "设计", + "goid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "纯Go方式获取goid": { + "data": { + "uuid": "云原生-5-931", + "seg": [ + [ + [ + "纯", + "go", + "方式", + "获取", + "goid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从g结构体获取goid": { + "data": { + "uuid": "云原生-5-932", + "seg": [ + [ + [ + "g", + "结构", + "体", + "获取", + "goid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取g结构体对应的接口对象": { + "data": { + "uuid": "云原生-5-933", + "seg": [ + [ + [ + "获取", + "g", + "结构", + "体", + "接口", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "goid的应用:局部存储": { + "data": { + "uuid": "云原生-5-934", + "seg": [ + [ + [ + "goid" + ] + ], + [ + [ + "局部", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-550", + "seg": [ + [ + [ + "例子" + ] + ], + [ + [ + "goroutine", + "id" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Delve调试器": { + "children": [ + { + "Delve入门": { + "data": { + "uuid": "云原生-5-935", + "seg": [ + [ + [ + "delve", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调试汇编程序": { + "data": { + "uuid": "云原生-5-936", + "seg": [ + [ + [ + "调试", + "汇编程序" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-551", + "seg": [ + [ + [ + "delve", + "调试器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-125", + "seg": [ + [ + [ + "go", + "汇编语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "RPC和Protobuf": { + "children": [ + { + "RPC入门": { + "children": [ + { + "RPC版“Hello, World”": { + "data": { + "uuid": "云原生-5-937", + "seg": [ + [ + [ + "rpc", + "版", + "hello", + "world" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更安全的RPC接口": { + "data": { + "uuid": "云原生-5-938", + "seg": [ + [ + [ + "rpc", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "跨语言的RPC": { + "data": { + "uuid": "云原生-5-939", + "seg": [ + [ + [ + "跨", + "语言", + "rpc" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82814489" + ] + } + } + } + } + }, + { + "HTTP上的RPC": { + "data": { + "uuid": "云原生-5-940", + "seg": [ + [ + [ + "http", + "rpc" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "39474123", + "86555445", + "81906027", + "82528469", + "39473807", + "78420091", + "103761024", + "84983770", + "100016003", + "107856098" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-552", + "seg": [ + [ + [ + "rpc", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Protobuf": { + "children": [ + { + "Protobuf入门": { + "data": { + "uuid": "云原生-5-941", + "seg": [ + [ + [ + "protobuf", + "入门" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103214294", + "54604615" + ] + } + } + } + } + }, + { + "定制代码生成插件": { + "data": { + "uuid": "云原生-5-942", + "seg": [ + [ + [ + "定制", + "代码生成", + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动生成完整的RPC代码": { + "data": { + "uuid": "云原生-5-943", + "seg": [ + [ + [ + "自动", + "生成", + "rpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-553", + "seg": [ + [ + [ + "protobuf" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "玩转RPC": { + "children": [ + { + "客户端RPC的实现原理": { + "data": { + "uuid": "云原生-5-944", + "seg": [ + [ + [ + "客户端", + "rpc", + "原理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "99436237" + ] + } + } + } + } + }, + { + "基于RPC实现监视功能": { + "data": { + "uuid": "云原生-5-945", + "seg": [ + [ + [ + "rpc", + "监视", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "反向RPC": { + "data": { + "uuid": "云原生-5-946", + "seg": [ + [ + [ + "反向", + "rpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上下文信息": { + "data": { + "uuid": "云原生-5-947", + "seg": [ + [ + [ + "上下文", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-554", + "seg": [ + [ + [ + "玩转", + "rpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gRPC入门": { + "children": [ + { + "gRPC技术栈": { + "data": { + "uuid": "云原生-5-948", + "seg": [ + [ + [ + "grpc", + "技术", + "栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gRPC入门": { + "data": { + "uuid": "云原生-5-949", + "seg": [ + [ + [ + "grpc", + "入门" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84381256", + "109194612", + "88931090", + "80216208", + "117964926", + "103280989", + "111934889", + "75332638", + "86493330", + "97118124" + ] + } + } + } + } + }, + { + "gRPC流": { + "data": { + "uuid": "云原生-5-950", + "seg": [ + [ + [ + "grpc", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "发布和订阅模式": { + "data": { + "uuid": "云原生-5-951", + "seg": [ + [ + [ + "发布" + ], + [ + "订阅", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-555", + "seg": [ + [ + [ + "grpc", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gRPC进阶": { + "children": [ + { + "证书认证": { + "data": { + "uuid": "云原生-5-952", + "seg": [ + [ + [ + "证书", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Token认证": { + "data": { + "uuid": "云原生-5-953", + "seg": [ + [ + [ + "token", + "认证" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50997465", + "50963985", + "73322057", + "79914216" + ] + } + } + } + } + }, + { + "截取器": { + "data": { + "uuid": "云原生-5-954", + "seg": [ + [ + [ + "截取", + "器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "和Web服务共存": { + "data": { + "uuid": "云原生-5-955", + "seg": [ + [ + [], + [ + "web", + "服务", + "共存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-556", + "seg": [ + [ + [ + "grpc", + "进阶" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gRPC和Protobuf扩展": { + "children": [ + { + "验证器": { + "data": { + "uuid": "云原生-5-956", + "seg": [ + [ + [ + "验证", + "器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81459979" + ] + } + } + } + } + }, + { + "REST接口": { + "data": { + "uuid": "云原生-5-957", + "seg": [ + [ + [ + "rest", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Nginx": { + "data": { + "uuid": "云原生-5-958", + "seg": [ + [ + [ + "nginx" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81060535", + "96671612", + "85238011", + "78348619", + "105787160", + "84306953", + "108384369", + "53242126", + "82733803", + "92657302" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-557", + "seg": [ + [ + [ + "grpc" + ], + [ + "protobuf", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pbgo:基于Protobuf的框架": { + "children": [ + { + "Protobuf扩展语法": { + "data": { + "uuid": "云原生-5-959", + "seg": [ + [ + [ + "protobuf", + "扩展", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "插件中读取扩展信息": { + "data": { + "uuid": "云原生-5-960", + "seg": [ + [ + [ + "插件", + "读取", + "扩展", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生成REST代码": { + "data": { + "uuid": "云原生-5-961", + "seg": [ + [ + [ + "生成", + "rest" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动REST服务": { + "data": { + "uuid": "云原生-5-962", + "seg": [ + [ + [ + "启动", + "rest", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-558", + "seg": [ + [ + [ + "pbgo" + ] + ], + [ + [ + "protobuf", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "grpcurl工具": { + "children": [ + { + "启动反射服务": { + "data": { + "uuid": "云原生-5-963", + "seg": [ + [ + [ + "启动", + "反射", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看服务列表": { + "data": { + "uuid": "云原生-5-964", + "seg": [ + [ + [ + "查看", + "服务", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务的方法列表": { + "data": { + "uuid": "云原生-5-965", + "seg": [ + [ + [ + "服务", + "方法", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取类型信息": { + "data": { + "uuid": "云原生-5-966", + "seg": [ + [ + [ + "获取", + "类型信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调用方法": { + "data": { + "uuid": "云原生-5-967", + "seg": [ + [ + [ + "调用", + "方法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-559", + "seg": [ + [ + [ + "grpcurl", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-126", + "seg": [ + [ + [ + "rpc" + ], + [ + "protobuf" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式系统": { + "children": [ + { + "分布式ID生成器": { + "children": [ + { + "worker_id分配": { + "data": { + "uuid": "云原生-5-968", + "seg": [ + [ + [ + "worker", + "id", + "分配" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103639052", + "109861677", + "85070660", + "94012682", + "48103727", + "8207473", + "110730309", + "80369469" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-560", + "seg": [ + [ + [ + "分布式", + "id", + "生成器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式锁": { + "children": [ + { + "进程内加锁": { + "data": { + "uuid": "云原生-5-969", + "seg": [ + [ + [ + "进程", + "加锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "尝试锁": { + "data": { + "uuid": "云原生-5-970", + "seg": [ + [ + [ + "尝试", + "锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Redis的setnx": { + "data": { + "uuid": "云原生-5-971", + "seg": [ + [ + [ + "redis", + "setnx" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于ZooKeeper": { + "data": { + "uuid": "云原生-5-972", + "seg": [ + [ + [ + "zookeeper" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于etcd": { + "data": { + "uuid": "云原生-5-973", + "seg": [ + [ + [ + "etcd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何选择合适的锁": { + "data": { + "uuid": "云原生-5-974", + "seg": [ + [ + [ + "选择", + "锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-561", + "seg": [ + [ + [ + "分布式", + "锁" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "延时任务系统": { + "children": [ + { + "定时器的实现": { + "data": { + "uuid": "云原生-5-975", + "seg": [ + [ + [ + "定时器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "任务分发": { + "data": { + "uuid": "云原生-5-976", + "seg": [ + [ + [ + "分发" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据再平衡和幂等考量": { + "data": { + "uuid": "云原生-5-977", + "seg": [ + [ + [ + "数据", + "平衡" + ], + [ + "幂", + "考量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-562", + "seg": [ + [ + [ + "延时", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式搜索引擎": { + "children": [ + { + "搜索引擎": { + "data": { + "uuid": "云原生-5-978", + "seg": [ + [ + [ + "搜索引擎" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "118111210" + ] + } + } + } + } + }, + { + "异构数据同步": { + "data": { + "uuid": "云原生-5-979", + "seg": [ + [ + [ + "异构", + "数据", + "同步" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-563", + "seg": [ + [ + [ + "分布式", + "搜索引擎" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "负载均衡": { + "children": [ + { + "常见的负载均衡思路": { + "data": { + "uuid": "云原生-5-980", + "seg": [ + [ + [ + "常见", + "负载", + "均衡", + "思路" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于洗牌算法的负载均衡": { + "data": { + "uuid": "云原生-5-981", + "seg": [ + [ + [ + "洗牌", + "算法", + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "118442118", + "83058819", + "79953788", + "79184125", + "117355310", + "51707270", + "80137282", + "36688043", + "39379965", + "41621083" + ] + } + } + } + } + }, + { + "负载均衡算法效果验证": { + "data": { + "uuid": "云原生-5-982", + "seg": [ + [ + [ + "负载", + "均衡", + "算法", + "效果", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-564", + "seg": [ + [ + [ + "负载", + "均衡" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式配置管理": { + "children": [ + { + "场景举例": { + "data": { + "uuid": "云原生-5-983", + "seg": [ + [ + [ + "场景", + "举例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用etcd实现配置更新": { + "data": { + "uuid": "云原生-5-984", + "seg": [ + [ + [ + "etcd", + "配置", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置膨胀": { + "data": { + "uuid": "云原生-5-985", + "seg": [ + [ + [ + "配置", + "膨胀" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置版本管理": { + "data": { + "uuid": "云原生-5-986", + "seg": [ + [ + [ + "配置", + "版本", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "客户端容错": { + "data": { + "uuid": "云原生-5-987", + "seg": [ + [ + [ + "客户端", + "容错" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-565", + "seg": [ + [ + [ + "分布式", + "配置管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式爬虫": { + "children": [ + { + "基于colly的单机爬虫": { + "data": { + "uuid": "云原生-5-988", + "seg": [ + [ + [ + "colly", + "单机", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分布式爬虫": { + "data": { + "uuid": "云原生-5-989", + "seg": [ + [ + [ + "分布式", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "72802961", + "93749143", + "109376379" + ] + } + } + } + } + }, + { + "结合nats和colly的消息生产": { + "data": { + "uuid": "云原生-5-990", + "seg": [ + [ + [ + "nats" + ], + [ + "colly", + "消息", + "生产" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "结合colly的消息消费": { + "data": { + "uuid": "云原生-5-991", + "seg": [ + [ + [ + "colly", + "消息", + "消费" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-566", + "seg": [ + [ + [ + "分布式", + "爬虫" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-127", + "seg": [ + [ + [ + "分布式系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-2", + "seg": [ + [ + [ + "编程语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "data": { + "uuid": "云原生-2-3", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-0", + "seg": [ + [ + [ + "云", + "原生", + "初阶", + "开发" + ] + ] + ], + "related_data": {} + } + } + }, + { + "云原生初阶-平台开发": { + "children": [ + { + "容器": { + "children": [ + { + "Docker": { + "data": { + "uuid": "云原生-3-128", + "seg": [ + [ + [ + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基础入门": { + "children": [ + { + "初识Docker与容器": { + "data": { + "uuid": "云原生-4-567", + "seg": [ + [ + [ + "初识", + "docker" + ], + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "核心概念与安装配置": { + "children": [ + { + "核心概念": { + "data": { + "uuid": "云原生-5-992", + "seg": [ + [ + [ + "核心", + "概念" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109298445", + "102132544" + ] + } + } + } + } + }, + { + "安装Docker引擎": { + "children": [ + { + "Ubuntu环境下安装Docker": { + "data": { + "uuid": "云原生-6-300", + "seg": [ + [ + [ + "ubuntu", + "环境", + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79411479", + "80641922", + "51570149", + "96081183", + "95149299", + "109487664", + "78765175", + "103196001", + "52506321", + "79253416" + ] + } + } + } + } + }, + { + "CentOS环境下安装Docker": { + "data": { + "uuid": "云原生-6-301", + "seg": [ + [ + [ + "centos", + "环境", + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79553227", + "107588353", + "111039468", + "74942036", + "51352966", + "87341635", + "84953155", + "109541336", + "78030056", + "73477730" + ] + } + } + } + } + }, + { + "通过脚本安装": { + "data": { + "uuid": "云原生-6-302", + "seg": [ + [ + [ + "脚本", + "安装" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78722752", + "109956865", + "82729076", + "88809791", + "113063671", + "83659254", + "79253740", + "88728253", + "103792638", + "51605625" + ] + } + } + } + } + }, + { + "macOS环境下安装Docker": { + "data": { + "uuid": "云原生-6-303", + "seg": [ + [ + [ + "macos", + "环境", + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109634503" + ] + } + } + } + } + }, + { + "Windows环境下安装Docker": { + "data": { + "uuid": "云原生-6-304", + "seg": [ + [ + [ + "windows", + "环境", + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "40426133", + "52028945", + "77106159", + "51372604", + "51387161", + "55211390", + "71809233", + "116602041", + "81737716", + "85166294" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-993", + "seg": [ + [ + [ + "安装", + "docker", + "引擎" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置Docker服务": { + "data": { + "uuid": "云原生-5-994", + "seg": [ + [ + [ + "配置", + "docker", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "推荐实践环境": { + "data": { + "uuid": "云原生-5-995", + "seg": [ + [ + [ + "推荐", + "实践", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-568", + "seg": [ + [ + [ + "核心", + "概念" + ], + [ + "安装", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Docker镜像": { + "children": [ + { + "获取镜像": { + "data": { + "uuid": "云原生-5-996", + "seg": [ + [ + [ + "获取", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看镜像信息": { + "data": { + "uuid": "云原生-5-997", + "seg": [ + [ + [ + "查看", + "镜像", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "搜寻镜像": { + "data": { + "uuid": "云原生-5-998", + "seg": [ + [ + [ + "搜寻", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除和清理镜像": { + "data": { + "uuid": "云原生-5-999", + "seg": [ + [ + [ + "删除" + ], + [ + "清理", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建镜像": { + "data": { + "uuid": "云原生-5-1000", + "seg": [ + [ + [ + "创建", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存出和载入镜像": { + "data": { + "uuid": "云原生-5-1001", + "seg": [ + [ + [ + "存出" + ], + [ + "载入", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上传镜像": { + "data": { + "uuid": "云原生-5-1002", + "seg": [ + [ + [ + "上传", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-569", + "seg": [ + [ + [ + "docker", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作Docker容器": { + "children": [ + { + "创建容器": { + "data": { + "uuid": "云原生-5-1003", + "seg": [ + [ + [ + "创建", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "停止容器": { + "data": { + "uuid": "云原生-5-1004", + "seg": [ + [ + [ + "停止", + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78587103", + "80889977" + ] + } + } + } + } + }, + { + "进入容器": { + "data": { + "uuid": "云原生-5-1005", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109394433", + "88955533", + "81023274", + "52213735", + "42713127", + "57079665" + ] + } + } + } + } + }, + { + "删除容器": { + "data": { + "uuid": "云原生-5-1006", + "seg": [ + [ + [ + "删除", + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "54891142", + "79987852" + ] + } + } + } + } + }, + { + "导入和导出容器": { + "data": { + "uuid": "云原生-5-1007", + "seg": [ + [ + [ + "导入" + ], + [ + "导出", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看容器": { + "data": { + "uuid": "云原生-5-1008", + "seg": [ + [ + [ + "查看", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他容器命令": { + "data": { + "uuid": "云原生-5-1009", + "seg": [ + [ + [ + "容器", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-570", + "seg": [ + [ + [ + "操作", + "docker", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问Docker仓库": { + "children": [ + { + "Docker Hub公共镜像市场": { + "data": { + "uuid": "云原生-5-1010", + "seg": [ + [ + [ + "docker", + "hub", + "公共", + "镜像", + "市场" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109442830" + ] + } + } + } + } + }, + { + "第三方镜像市场": { + "data": { + "uuid": "云原生-5-1011", + "seg": [ + [ + [ + "镜像", + "市场" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "搭建本地私有仓库": { + "data": { + "uuid": "云原生-5-1012", + "seg": [ + [ + [ + "搭建", + "私有", + "仓库" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78818462" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-571", + "seg": [ + [ + [ + "访问", + "docker", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker数据管理": { + "children": [ + { + "数据卷": { + "data": { + "uuid": "云原生-5-1013", + "seg": [ + [ + [ + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据卷容器": { + "data": { + "uuid": "云原生-5-1014", + "seg": [ + [ + [ + "数据", + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109473024" + ] + } + } + } + } + }, + { + "利用数据卷容器来迁移数据": { + "data": { + "uuid": "云原生-5-1015", + "seg": [ + [ + [ + "利用", + "数据", + "容器", + "迁移" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-572", + "seg": [ + [ + [ + "docker", + "数据管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "端口映射与容器互联": { + "children": [ + { + "端口映射实现容器访问": { + "data": { + "uuid": "云原生-5-1016", + "seg": [ + [ + [ + "端口映射", + "容器", + "访问" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109590013", + "94188902" + ] + } + } + } + } + }, + { + "互联机制实现便捷互访": { + "data": { + "uuid": "云原生-5-1017", + "seg": [ + [ + [ + "互联", + "机制", + "便捷", + "互访" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-573", + "seg": [ + [ + [ + "端口映射" + ], + [ + "容器", + "互联" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Dockerfile创建镜像": { + "children": [ + { + "基本结构": { + "data": { + "uuid": "云原生-5-1018", + "seg": [ + [ + [ + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "指令说明": { + "children": [ + { + "配置指令": { + "data": { + "uuid": "云原生-6-305", + "seg": [ + [ + [ + "配置", + "指令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作指令": { + "data": { + "uuid": "云原生-6-306", + "seg": [ + [ + [ + "操作", + "指令" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51674042" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1019", + "seg": [ + [ + [ + "指令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建镜像": { + "children": [ + { + "命令选项": { + "data": { + "uuid": "云原生-6-307", + "seg": [ + [ + [ + "命令", + "选项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择父镜像": { + "data": { + "uuid": "云原生-6-308", + "seg": [ + [ + [ + "选择", + "父", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用.dockerignore文件": { + "data": { + "uuid": "云原生-6-309", + "seg": [ + [ + [ + "dockerignore", + "文件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多步骤创建": { + "data": { + "uuid": "云原生-6-310", + "seg": [ + [ + [ + "步骤", + "创建" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79448402", + "72810209", + "79585590", + "79340980" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1020", + "seg": [ + [ + [ + "创建", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "最佳实践": { + "data": { + "uuid": "云原生-5-1021", + "seg": [ + [ + [ + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-574", + "seg": [ + [ + [ + "dockerfile", + "创建", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-129", + "seg": [ + [ + [ + "基础", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "进阶技能": { + "children": [ + { + "核心实现技术": { + "children": [ + { + "基本架构": { + "data": { + "uuid": "云原生-5-1022", + "seg": [ + [ + [ + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名空间": { + "data": { + "uuid": "云原生-5-1023", + "seg": [ + [ + [ + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制组": { + "data": { + "uuid": "云原生-5-1024", + "seg": [ + [ + [ + "控制组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "联合文件系统": { + "data": { + "uuid": "云原生-5-1025", + "seg": [ + [ + [ + "联合", + "文件系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linux网络虚拟化": { + "data": { + "uuid": "云原生-5-1026", + "seg": [ + [ + [ + "linux", + "网络", + "虚拟化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-575", + "seg": [ + [ + [ + "核心", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置私有仓库": { + "children": [ + { + "安装Docker Registry": { + "data": { + "uuid": "云原生-5-1027", + "seg": [ + [ + [ + "安装", + "docker", + "registry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置TLS证书": { + "data": { + "uuid": "云原生-5-1028", + "seg": [ + [ + [ + "配置", + "tls", + "证书" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理访问权限": { + "data": { + "uuid": "云原生-5-1029", + "seg": [ + [ + [ + "管理", + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置Registry": { + "data": { + "uuid": "云原生-5-1030", + "seg": [ + [ + [ + "配置", + "registry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "批量管理镜像": { + "data": { + "uuid": "云原生-5-1031", + "seg": [ + [ + [ + "批量", + "管理", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用通知系统": { + "data": { + "uuid": "云原生-5-1032", + "seg": [ + [ + [ + "通知", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-576", + "seg": [ + [ + [ + "配置", + "私有", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全防护与配置": { + "children": [ + { + "命名空间隔离的安全": { + "data": { + "uuid": "云原生-5-1033", + "seg": [ + [ + [ + "命名", + "空间隔离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制组资源控制的安全": { + "data": { + "uuid": "云原生-5-1034", + "seg": [ + [ + [ + "控制组", + "资源", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内核能力机制": { + "data": { + "uuid": "云原生-5-1035", + "seg": [ + [ + [ + "内核", + "能力", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker服务端的防护": { + "data": { + "uuid": "云原生-5-1036", + "seg": [ + [ + [ + "docker", + "服务端", + "防护" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更多安全特性的使用": { + "data": { + "uuid": "云原生-5-1037", + "seg": [ + [ + [ + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用第三方检测工具": { + "children": [ + { + "Docker Bench": { + "data": { + "uuid": "云原生-6-311", + "seg": [ + [ + [ + "docker", + "bench" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103722694", + "80469529" + ] + } + } + } + } + }, + { + "clair": { + "data": { + "uuid": "云原生-6-312", + "seg": [ + [ + [ + "clair" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1038", + "seg": [ + [ + [ + "检测工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-577", + "seg": [ + [ + [ + "防护" + ], + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "高级网络功能": { + "children": [ + { + "启动与配置参数": { + "data": { + "uuid": "云原生-5-1039", + "seg": [ + [ + [ + "启动" + ], + [ + "配置", + "参数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置容器DNS和主机名": { + "data": { + "uuid": "云原生-5-1040", + "seg": [ + [ + [ + "配置", + "容器", + "dns" + ], + [ + "主机名" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器访问控制": { + "data": { + "uuid": "云原生-5-1041", + "seg": [ + [ + [ + "容器", + "访问控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "映射容器端口到宿主主机的实现": { + "data": { + "uuid": "云原生-5-1042", + "seg": [ + [ + [ + "映射", + "容器", + "端口", + "宿主", + "主机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置容器网桥": { + "data": { + "uuid": "云原生-5-1043", + "seg": [ + [ + [ + "配置", + "容器", + "网桥" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义网桥": { + "data": { + "uuid": "云原生-5-1044", + "seg": [ + [ + [ + "自定义", + "网桥" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用OpenvSwitch网桥": { + "data": { + "uuid": "云原生-5-1045", + "seg": [ + [ + [ + "openvswitch", + "网桥" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建一个点到点连接": { + "data": { + "uuid": "云原生-5-1046", + "seg": [ + [ + [ + "创建", + "点到点", + "连接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-578", + "seg": [ + [ + [ + "高级", + "网络", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "libnetwork插件化网络功能": { + "children": [ + { + "容器网络模型": { + "data": { + "uuid": "云原生-5-1047", + "seg": [ + [ + [ + "容器", + "网络", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Docker网络命令": { + "data": { + "uuid": "云原生-5-1048", + "seg": [ + [ + [ + "docker", + "网络", + "命令" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "构建跨主机容器网络": { + "data": { + "uuid": "云原生-5-1049", + "seg": [ + [ + [ + "构建", + "跨", + "主机", + "容器", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-579", + "seg": [ + [ + [ + "libnetwork", + "插件", + "化", + "网络", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-130", + "seg": [ + [ + [ + "进阶", + "技能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-4", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes": { + "children": [ + { + "管理工具": { + "children": [ + { + "Kubelens": { + "data": { + "uuid": "云原生-4-580", + "seg": [ + [ + [ + "kubelens" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kuboard": { + "data": { + "uuid": "云原生-4-581", + "seg": [ + [ + [ + "kuboard" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "K3S": { + "data": { + "uuid": "云原生-4-582", + "seg": [ + [ + [ + "k3s" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "K9S": { + "data": { + "uuid": "云原生-4-583", + "seg": [ + [ + [ + "k9s" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Minikube": { + "data": { + "uuid": "云原生-4-584", + "seg": [ + [ + [ + "minikube" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubeasz": { + "data": { + "uuid": "云原生-4-585", + "seg": [ + [ + [ + "kubeasz" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Draft": { + "data": { + "uuid": "云原生-4-586", + "seg": [ + [ + [ + "draft" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-131", + "seg": [ + [ + [ + "管理工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes入门": { + "children": [ + { + "Kubernetes是什么": { + "children": [ + { + "Kubernetes的历史": { + "data": { + "uuid": "云原生-5-1050", + "seg": [ + [ + [ + "kubernetes", + "历史" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "97227038", + "51282254", + "87365021", + "105908526", + "102523957", + "103667509", + "114137286", + "81870193", + "54565638", + "79492374" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-587", + "seg": [ + [ + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从一个简单的例子开始": { + "children": [ + { + "环境准备": { + "data": { + "uuid": "云原生-5-1051", + "seg": [ + [ + [ + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "启动MySQL服务": { + "data": { + "uuid": "云原生-5-1052", + "seg": [ + [ + [ + "启动", + "mysql", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "启动Tomcat应用": { + "data": { + "uuid": "云原生-5-1053", + "seg": [ + [ + [ + "启动", + "tomcat" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "24717735", + "111336934", + "83218335", + "42739693", + "71910308", + "7884469" + ] + } + } + } + } + }, + { + "通过浏览器访问网页": { + "data": { + "uuid": "云原生-5-1054", + "seg": [ + [ + [ + "浏览器", + "访问", + "网页" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-588", + "seg": [ + [ + [ + "例子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes基本概念和术语": { + "children": [ + { + "Master": { + "data": { + "uuid": "云原生-5-1055", + "seg": [ + [ + [ + "master" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Node": { + "data": { + "uuid": "云原生-5-1056", + "seg": [ + [ + [ + "node" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "23650917", + "103607944", + "84928232", + "107739956", + "86486513" + ] + } + } + } + } + }, + { + "Pod": { + "children": [ + { + "Pod定义详解": { + "data": { + "uuid": "云原生-6-313", + "seg": [ + [ + [ + "pod", + "定义", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78125093", + "111415831" + ] + } + } + } + } + }, + { + "Pod的基本用法": { + "data": { + "uuid": "云原生-6-314", + "seg": [ + [ + [ + "pod", + "用法" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80886567" + ] + } + } + } + } + }, + { + "静态Pod": { + "data": { + "uuid": "云原生-6-315", + "seg": [ + [ + [ + "静态", + "pod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod容器共享Volume": { + "data": { + "uuid": "云原生-6-316", + "seg": [ + [ + [ + "pod", + "容器", + "共享", + "volume" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52324830", + "103179128", + "109335262", + "111663376" + ] + } + } + } + } + }, + { + "Pod的配置管理": { + "data": { + "uuid": "云原生-6-317", + "seg": [ + [ + [ + "pod", + "配置管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在容器内获取Pod信息(Downward API)": { + "data": { + "uuid": "云原生-6-318", + "seg": [ + [ + [ + "容器", + "获取", + "pod", + "信息", + "downward", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79463688" + ] + } + } + } + } + }, + { + "Pod生命周期和重启策略": { + "data": { + "uuid": "云原生-6-319", + "seg": [ + [ + [ + "pod", + "生命周期" + ], + [ + "重启", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod健康检查": { + "data": { + "uuid": "云原生-6-320", + "seg": [ + [ + [ + "pod", + "健康检查" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109451037", + "103232471", + "80761157", + "118277853", + "82706973", + "103758149", + "117330223" + ] + } + } + } + } + }, + { + "玩转Pod调度": { + "data": { + "uuid": "云原生-6-321", + "seg": [ + [ + [ + "玩转", + "pod", + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Init Container(初始化容器)": { + "data": { + "uuid": "云原生-6-322", + "seg": [ + [ + [ + "init", + "container", + "初始化", + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103138549", + "52105966", + "109780505" + ] + } + } + } + } + }, + { + "Pod的升级和回滚": { + "data": { + "uuid": "云原生-6-323", + "seg": [ + [ + [ + "pod", + "升级" + ], + [ + "回滚" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod的扩容和缩容": { + "data": { + "uuid": "云原生-6-324", + "seg": [ + [ + [ + "pod", + "扩容" + ], + [ + "缩容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用StatefulSet搭建MongoDB集群": { + "data": { + "uuid": "云原生-6-325", + "seg": [ + [ + [ + "statefulset", + "搭建", + "mongodb", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "94722657", + "118631248" + ] + } + } + } + } + }, + { + "Pod定义文件详解": { + "data": { + "uuid": "云原生-6-326", + "seg": [ + [ + [ + "pod", + "定义", + "文件", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本操作": { + "data": { + "uuid": "云原生-6-327", + "seg": [ + [ + [ + "基本操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他设置": { + "data": { + "uuid": "云原生-6-328", + "seg": [ + [ + [ + "设置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod调度": { + "data": { + "uuid": "云原生-6-329", + "seg": [ + [ + [ + "pod", + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1057", + "seg": [ + [ + [ + "pod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Label(标签)": { + "data": { + "uuid": "云原生-5-1058", + "seg": [ + [ + [ + "label", + "标签" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Replication Controller": { + "data": { + "uuid": "云原生-5-1059", + "seg": [ + [ + [ + "replication", + "controller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Deployment": { + "children": [ + { + "运行Deployment": { + "data": { + "uuid": "云原生-6-330", + "seg": [ + [ + [ + "运行", + "deployment" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "98779719", + "81781509", + "6415366", + "53112069" + ] + } + } + } + } + }, + { + "命令vs配置文件": { + "data": { + "uuid": "云原生-6-331", + "seg": [ + [ + [ + "命令", + "vs", + "配置文件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "40983143" + ] + } + } + } + } + }, + { + "Deployment配置文件简介": { + "data": { + "uuid": "云原生-6-332", + "seg": [ + [ + [ + "deployment", + "配置文件", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "伸缩": { + "data": { + "uuid": "云原生-6-333", + "seg": [ + [ + [ + "伸缩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Failover": { + "data": { + "uuid": "云原生-6-334", + "seg": [ + [ + [ + "failover" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用label控制Pod的位置": { + "data": { + "uuid": "云原生-6-335", + "seg": [ + [ + [ + "label", + "控制", + "pod", + "位置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1060", + "seg": [ + [ + [ + "deployment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Horizontal Pod Autoscaler": { + "data": { + "uuid": "云原生-5-1061", + "seg": [ + [ + [ + "horizontal", + "pod", + "autoscaler" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet": { + "children": [ + { + "扩容/缩容StatefulSet": { + "data": { + "uuid": "云原生-6-336", + "seg": [ + [ + [ + "扩容", + "缩容", + "statefulset" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109335312" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1062", + "seg": [ + [ + [ + "statefulset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service(服务)": { + "data": { + "uuid": "云原生-5-1063", + "seg": [ + [ + [ + "service", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Volume(存储卷)": { + "data": { + "uuid": "云原生-5-1064", + "seg": [ + [ + [ + "volume", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Persistent Volume": { + "data": { + "uuid": "云原生-5-1065", + "seg": [ + [ + [ + "persistent", + "volume" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Namespace(命名空间)": { + "data": { + "uuid": "云原生-5-1066", + "seg": [ + [ + [ + "namespace", + "命名", + "空间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Annotation(注解)": { + "data": { + "uuid": "云原生-5-1067", + "seg": [ + [ + [ + "annotation", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-589", + "seg": [ + [ + [ + "kubernetes", + "基本概念" + ], + [ + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-132", + "seg": [ + [ + [ + "kubernetes", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes实践指南": { + "children": [ + { + "Kubernetes安装与配置": { + "children": [ + { + "系统要求": { + "data": { + "uuid": "云原生-5-1068", + "seg": [ + [ + [ + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用kubeadm工具快速安装Kubernetes集群": { + "data": { + "uuid": "云原生-5-1069", + "seg": [ + [ + [ + "kubeadm", + "工具", + "快速", + "安装", + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "83116271", + "84839609", + "82753840", + "100075236", + "111060199", + "78703364", + "80150988", + "79624655", + "108874283", + "117264814" + ] + } + } + } + } + }, + { + "以二进制文件方式安装Kubernetes集群": { + "data": { + "uuid": "云原生-5-1070", + "seg": [ + [ + [ + "二进制", + "文件", + "方式", + "安装", + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88961823" + ] + } + } + } + } + }, + { + "Kubernetes集群的安全设置": { + "data": { + "uuid": "云原生-5-1071", + "seg": [ + [ + [ + "kubernetes", + "集群", + "设置" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78952987", + "108972354", + "100015071", + "88350745", + "103874977", + "111144990", + "78427434", + "87970338", + "90408315", + "107179715" + ] + } + } + } + } + }, + { + "Kubernetes集群的网络配置": { + "data": { + "uuid": "云原生-5-1072", + "seg": [ + [ + [ + "kubernetes", + "集群", + "网络", + "配置" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86726904", + "78840971", + "107085155", + "115706317", + "103062021", + "108550317", + "83988253" + ] + } + } + } + } + }, + { + "内网中的Kubernetes相关配置": { + "data": { + "uuid": "云原生-5-1073", + "seg": [ + [ + [ + "网中", + "kubernetes", + "相关", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes的版本升级": { + "data": { + "uuid": "云原生-5-1074", + "seg": [ + [ + [ + "kubernetes", + "版本升级" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88784346", + "90108200", + "111469531", + "113279403", + "86550554", + "109379340", + "91304127", + "109011354", + "75303774", + "78533936" + ] + } + } + } + } + }, + { + "Kubernetes核心服务配置详解": { + "data": { + "uuid": "云原生-5-1075", + "seg": [ + [ + [ + "kubernetes", + "核心", + "服务", + "配置", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "68061976", + "108385558", + "115573675", + "78732470" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-590", + "seg": [ + [ + [ + "kubernetes", + "安装" + ], + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl命令行工具用法详解": { + "children": [ + { + "kubectl用法概述": { + "data": { + "uuid": "云原生-5-1076", + "seg": [ + [ + [ + "kubectl", + "用法", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl子命令详解": { + "data": { + "uuid": "云原生-5-1077", + "seg": [ + [ + [ + "kubectl", + "子", + "命令", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl参数列表": { + "data": { + "uuid": "云原生-5-1078", + "seg": [ + [ + [ + "kubectl", + "参数", + "列表" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl输出格式": { + "data": { + "uuid": "云原生-5-1079", + "seg": [ + [ + [ + "kubectl", + "输出", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl操作示例": { + "data": { + "uuid": "云原生-5-1080", + "seg": [ + [ + [ + "kubectl", + "操作", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-591", + "seg": [ + [ + [ + "kubectl", + "命令行", + "工具", + "用法", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入掌握Service": { + "children": [ + { + "Service定义详解": { + "data": { + "uuid": "云原生-5-1081", + "seg": [ + [ + [ + "service", + "定义", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82585732" + ] + } + } + } + } + }, + { + "Service基本用法": { + "data": { + "uuid": "云原生-5-1082", + "seg": [ + [ + [ + "service", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Headless Service": { + "data": { + "uuid": "云原生-5-1083", + "seg": [ + [ + [ + "headless", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群外部访问Pod或Service": { + "data": { + "uuid": "云原生-5-1084", + "seg": [ + [ + [ + "集群", + "外部", + "访问", + "pod", + "service" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108568423" + ] + } + } + } + } + }, + { + "DNS服务搭建指南": { + "data": { + "uuid": "云原生-5-1085", + "seg": [ + [ + [ + "dns", + "服务", + "搭建", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义DNS和上游DNS服务器": { + "data": { + "uuid": "云原生-5-1086", + "seg": [ + [ + [ + "自定义", + "dns" + ], + [ + "上游", + "dns", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ingress:HTTP 7层路由机制": { + "data": { + "uuid": "云原生-5-1087", + "seg": [ + [ + [ + "ingress" + ] + ], + [ + [ + "http", + "层", + "路由", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-592", + "seg": [ + [ + [ + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-133", + "seg": [ + [ + [ + "kubernetes", + "实践", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes核心原理": { + "children": [ + { + "Kubernetes API Server原理分析": { + "children": [ + { + "Kubernetes API Server概述": { + "data": { + "uuid": "云原生-5-1088", + "seg": [ + [ + [ + "kubernetes", + "api", + "server", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "75675706", + "111295825", + "102932107", + "104688418", + "93250137", + "109335267", + "49509187" + ] + } + } + } + } + }, + { + "独特的Kubernetes Proxy API接口": { + "data": { + "uuid": "云原生-5-1089", + "seg": [ + [ + [ + "独特", + "kubernetes", + "proxy", + "api", + "接口" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "55236300", + "90734847" + ] + } + } + } + } + }, + { + "集群功能模块之间的通信": { + "data": { + "uuid": "云原生-5-1090", + "seg": [ + [ + [ + "集群", + "功能模块", + "通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-593", + "seg": [ + [ + [ + "kubernetes", + "api", + "server", + "原理", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Controller Manager原理分析": { + "children": [ + { + "Node Controller": { + "data": { + "uuid": "云原生-5-1091", + "seg": [ + [ + [ + "node", + "controller" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117720264" + ] + } + } + } + } + }, + { + "ResourceQuota Controller": { + "data": { + "uuid": "云原生-5-1092", + "seg": [ + [ + [ + "resourcequota", + "controller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Namespace Controller": { + "data": { + "uuid": "云原生-5-1093", + "seg": [ + [ + [ + "namespace", + "controller" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "75675761", + "44698845", + "27679153", + "70917104", + "44889219", + "108101445", + "86514115", + "79107380", + "49950813", + "85235220" + ] + } + } + } + } + }, + { + "Service Controller与Endpoint Controller": { + "data": { + "uuid": "云原生-5-1094", + "seg": [ + [ + [ + "service", + "controller" + ], + [ + "endpoint", + "controller" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "6053006", + "6785574", + "102679560" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-594", + "seg": [ + [ + [ + "controller", + "manager", + "原理", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Scheduler原理分析": { + "data": { + "uuid": "云原生-4-595", + "seg": [ + [ + [ + "scheduler", + "原理", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubelet运行机制分析": { + "children": [ + { + "节点管理": { + "data": { + "uuid": "云原生-5-1095", + "seg": [ + [ + [ + "节点", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod管理": { + "data": { + "uuid": "云原生-5-1096", + "seg": [ + [ + [ + "pod", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器健康检查": { + "data": { + "uuid": "云原生-5-1097", + "seg": [ + [ + [ + "容器", + "健康检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cAdvisor资源监控": { + "data": { + "uuid": "云原生-5-1098", + "seg": [ + [ + [ + "cadvisor", + "资源", + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-596", + "seg": [ + [ + [ + "kubelet", + "运行机制", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kube-proxy运行机制分析": { + "data": { + "uuid": "云原生-4-597", + "seg": [ + [ + [ + "kube", + "proxy", + "运行机制", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "深入分析集群安全机制": { + "children": [ + { + "API Server认证管理(Authentication)": { + "data": { + "uuid": "云原生-5-1099", + "seg": [ + [ + [ + "api", + "server", + "认证", + "管理", + "authentication" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "API Server授木又管理(Authorization)": { + "data": { + "uuid": "云原生-5-1100", + "seg": [ + [ + [ + "api", + "server", + "授", + "木", + "管理", + "authorization" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Admission Control(准入控制)": { + "data": { + "uuid": "云原生-5-1101", + "seg": [ + [ + [ + "admission", + "control", + "准入", + "控制" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50818615", + "80329769" + ] + } + } + } + } + }, + { + "Service Account": { + "data": { + "uuid": "云原生-5-1102", + "seg": [ + [ + [ + "service", + "account" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Secret私密凭据": { + "data": { + "uuid": "云原生-5-1103", + "seg": [ + [ + [ + "secret", + "私密" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-598", + "seg": [ + [ + [ + "深入分析", + "集群", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络原理": { + "children": [ + { + "Kubernetes网络模型": { + "data": { + "uuid": "云原生-5-1104", + "seg": [ + [ + [ + "kubernetes", + "网络", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Docker的网络基础": { + "data": { + "uuid": "云原生-5-1105", + "seg": [ + [ + [ + "docker", + "网络", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Docker的网络实现": { + "data": { + "uuid": "云原生-5-1106", + "seg": [ + [ + [ + "docker", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Kubernetes的网络实现": { + "children": [ + { + "单主机Docker网络通信": { + "children": [ + { + "Host模式": { + "data": { + "uuid": "云原生-7-56", + "seg": [ + [ + [ + "host", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Container模式": { + "data": { + "uuid": "云原生-7-57", + "seg": [ + [ + [ + "container", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "71425077" + ] + } + } + } + } + }, + { + "None模式": { + "data": { + "uuid": "云原生-7-58", + "seg": [ + [ + [ + "none", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Bridge模式": { + "data": { + "uuid": "云原生-7-59", + "seg": [ + [ + [ + "bridge", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基础网络模型的优缺点分析": { + "data": { + "uuid": "云原生-7-60", + "seg": [ + [ + [ + "基础", + "网络", + "模型", + "优缺点", + "分析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-337", + "seg": [ + [ + [ + "单", + "主机", + "docker", + "网络通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "跨主机Docker网络通信": { + "children": [ + { + "Flannel网络方案": { + "data": { + "uuid": "云原生-7-61", + "seg": [ + [ + [ + "flannel", + "网络", + "方案" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "77899108" + ] + } + } + } + } + }, + { + "Calico网络方案": { + "data": { + "uuid": "云原生-7-62", + "seg": [ + [ + [ + "calico", + "网络", + "方案" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "85870560", + "94511717", + "112727418", + "112760489", + "82725185", + "109484824", + "118117605", + "7999792", + "110189214" + ] + } + } + } + } + }, + { + "网络方案对比分析": { + "data": { + "uuid": "云原生-7-63", + "seg": [ + [ + [ + "网络", + "方案", + "分析" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-338", + "seg": [ + [ + [ + "跨", + "主机", + "docker", + "网络通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1107", + "seg": [ + [ + [ + "kubernetes", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CNI网络模型": { + "data": { + "uuid": "云原生-5-1108", + "seg": [ + [ + [ + "cni", + "网络", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Kubernetes网络策略": { + "data": { + "uuid": "云原生-5-1109", + "seg": [ + [ + [ + "kubernetes", + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "开源的网络组件": { + "data": { + "uuid": "云原生-5-1110", + "seg": [ + [ + [ + "开源", + "网络", + "组件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-599", + "seg": [ + [ + [ + "网络", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "共享存储原理": { + "children": [ + { + "共享存储机制概述": { + "data": { + "uuid": "云原生-5-1111", + "seg": [ + [ + [ + "共享", + "存储", + "机制", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PV详解": { + "data": { + "uuid": "云原生-5-1112", + "seg": [ + [ + [ + "pv", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PVC详解": { + "data": { + "uuid": "云原生-5-1113", + "seg": [ + [ + [ + "pvc", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PV和PVC的生命周期": { + "data": { + "uuid": "云原生-5-1114", + "seg": [ + [ + [ + "pv" + ], + [ + "pvc", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StorageClass详解": { + "data": { + "uuid": "云原生-5-1115", + "seg": [ + [ + [ + "storageclass", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-600", + "seg": [ + [ + [ + "共享", + "存储", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-134", + "seg": [ + [ + [ + "kubernetes", + "核心", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes开发指南": { + "children": [ + { + "REST简述": { + "data": { + "uuid": "云原生-4-601", + "seg": [ + [ + [ + "rest", + "简述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes API详解": { + "children": [ + { + "Kubernetes API概述": { + "data": { + "uuid": "云原生-5-1116", + "seg": [ + [ + [ + "kubernetes", + "api", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "101345091", + "115153067", + "102874791", + "113271514", + "109335313", + "103026131" + ] + } + } + } + } + }, + { + "API版本": { + "data": { + "uuid": "云原生-5-1117", + "seg": [ + [ + [ + "api", + "版本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "API Groups(API组)": { + "data": { + "uuid": "云原生-5-1118", + "seg": [ + [ + [ + "api", + "groups", + "组" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82986606" + ] + } + } + } + } + }, + { + "API方法说明": { + "data": { + "uuid": "云原生-5-1119", + "seg": [ + [ + [ + "api", + "方法" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "56012027" + ] + } + } + } + } + }, + { + "API响应说明": { + "data": { + "uuid": "云原生-5-1120", + "seg": [ + [ + [ + "api", + "响应" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-602", + "seg": [ + [ + [ + "kubernetes", + "api", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Java程序访问Kubernetes API": { + "children": [ + { + "Jersey": { + "data": { + "uuid": "云原生-5-1121", + "seg": [ + [ + [ + "jersey" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89307378", + "99829100" + ] + } + } + } + } + }, + { + "Fabric8": { + "data": { + "uuid": "云原生-5-1122", + "seg": [ + [ + [ + "fabric8" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用说明": { + "data": { + "uuid": "云原生-5-1123", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-603", + "seg": [ + [ + [ + "java", + "程序", + "访问", + "kubernetes", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "48978891", + "112975700", + "115372006", + "81148498", + "109895953", + "40958303", + "105236153", + "116569199", + "110004716", + "109103682" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-135", + "seg": [ + [ + [ + "kubernetes", + "开发", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes运维指南": { + "children": [ + { + "Kubernetes集群管理指南": { + "children": [ + { + "Node的管理": { + "data": { + "uuid": "云原生-5-1124", + "seg": [ + [ + [ + "node", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新资源对象的Label": { + "data": { + "uuid": "云原生-5-1125", + "seg": [ + [ + [ + "更新", + "资源", + "对象", + "label" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Namespace:集群环境共享与隔离": { + "data": { + "uuid": "云原生-5-1126", + "seg": [ + [ + [ + "namespace" + ] + ], + [ + [ + "集群", + "环境", + "共享" + ], + [ + "隔离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes资源管理": { + "data": { + "uuid": "云原生-5-1127", + "seg": [ + [ + [ + "kubernetes", + "资源管理" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51593535", + "109335301", + "109335306" + ] + } + } + } + } + }, + { + "资源紧缺时的Pod驱逐机制": { + "data": { + "uuid": "云原生-5-1128", + "seg": [ + [ + [ + "资源", + "紧缺", + "pod", + "驱逐", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod Disruption Budget(主动驱逐保护)": { + "data": { + "uuid": "云原生-5-1129", + "seg": [ + [ + [ + "pod", + "disruption", + "budget", + "主动", + "驱逐", + "保护" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes集群的高可用部署方案": { + "data": { + "uuid": "云原生-5-1130", + "seg": [ + [ + [ + "kubernetes", + "集群", + "高", + "可用", + "部署", + "方案" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "85002337", + "112797031", + "108343839" + ] + } + } + } + } + }, + { + "Kubernetes集群监控": { + "children": [ + { + "Weave Scope": { + "children": [ + { + "安装Scope": { + "data": { + "uuid": "云原生-7-64", + "seg": [ + [ + [ + "安装", + "scope" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Scope": { + "data": { + "uuid": "云原生-7-65", + "seg": [ + [ + [ + "scope" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-339", + "seg": [ + [ + [ + "weave", + "scope" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Heapster": { + "children": [ + { + "使用": { + "data": { + "uuid": "云原生-7-66", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-6-340", + "seg": [ + [ + [ + "heapster" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78853416", + "78618190", + "78704395", + "88979793", + "86490826", + "72547951" + ] + } + } + } + } + }, + { + "Prometheus Operator": { + "children": [ + { + "Prometheus架构": { + "data": { + "uuid": "云原生-7-67", + "seg": [ + [ + [ + "prometheus", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115333604", + "109792398", + "78881008", + "81564037", + "110008195", + "102844167", + "110097152", + "114876026", + "88392833", + "80764883" + ] + } + } + } + } + }, + { + "Prometheus Operator架构": { + "data": { + "uuid": "云原生-7-68", + "seg": [ + [ + [ + "prometheus", + "operator", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108656220", + "113815479", + "109335316" + ] + } + } + } + } + }, + { + "部署Prometheus Operator": { + "data": { + "uuid": "云原生-7-69", + "seg": [ + [ + [ + "部署", + "prometheus", + "operator" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88943136" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-6-341", + "seg": [ + [ + [ + "prometheus", + "operator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1131", + "seg": [ + [ + [ + "kubernetes", + "集群", + "监控" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113615968", + "92658111", + "113384082", + "113665756", + "115839943", + "110914215", + "73925301", + "84785214", + "78331847", + "103714455" + ] + } + } + } + } + }, + { + "集群统一日志管理": { + "data": { + "uuid": "云原生-5-1132", + "seg": [ + [ + [ + "集群", + "统一", + "日志", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes审计日志(Audit Log)": { + "data": { + "uuid": "云原生-5-1133", + "seg": [ + [ + [ + "kubernetes", + "审计", + "日志", + "audit", + "log" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87937800", + "103553866", + "109335285" + ] + } + } + } + } + }, + { + "使用Web UI(Dashboard)管理集群": { + "data": { + "uuid": "云原生-5-1134", + "seg": [ + [ + [ + "web", + "ui", + "dashboard", + "管理", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "70161982", + "79086221", + "79454319", + "62898741", + "79087929", + "45128689" + ] + } + } + } + } + }, + { + "Helm:Kubernetes应用包管理工具": { + "data": { + "uuid": "云原生-5-1135", + "seg": [ + [ + [ + "helm" + ] + ], + [ + [ + "kubernetes", + "包", + "管理工具" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89189751", + "103362783", + "103356942", + "103381947", + "81351492", + "83992120", + "103515050", + "91046663" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-604", + "seg": [ + [ + [ + "kubernetes", + "集群", + "管理", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Trouble Shooting指导": { + "children": [ + { + "查看系统Event事件": { + "data": { + "uuid": "云原生-5-1136", + "seg": [ + [ + [ + "查看", + "系统", + "event", + "事件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看容器日志": { + "data": { + "uuid": "云原生-5-1137", + "seg": [ + [ + [ + "查看", + "容器", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看Kubernetes服务日志": { + "data": { + "uuid": "云原生-5-1138", + "seg": [ + [ + [ + "查看", + "kubernetes", + "服务", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "寻求帮助": { + "data": { + "uuid": "云原生-5-1139", + "seg": [ + [ + [ + "寻求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-605", + "seg": [ + [ + [ + "trouble", + "shooting" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes开发中的新功能": { + "children": [ + { + "Pod Preset(运行时参数注入策略)": { + "data": { + "uuid": "云原生-5-1140", + "seg": [ + [ + [ + "pod", + "preset", + "运行", + "参数", + "注入", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cluster Federation(集群联邦)": { + "data": { + "uuid": "云原生-5-1141", + "seg": [ + [ + [ + "cluster", + "federation", + "集群", + "联邦" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器运行时接口(Container Runtime Interface-CRI)": { + "data": { + "uuid": "云原生-5-1142", + "seg": [ + [ + [ + "容器", + "运行", + "接口", + "container", + "runtime", + "interface", + "cri" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对GPU的支持": { + "data": { + "uuid": "云原生-5-1143", + "seg": [ + [ + [ + "gpu", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes的演进路线(Roadmap)和开发模式": { + "data": { + "uuid": "云原生-5-1144", + "seg": [ + [ + [ + "kubernetes", + "演进", + "路线", + "roadmap" + ], + [ + "开发", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80024886", + "111704388" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-606", + "seg": [ + [ + [ + "kubernetes", + "开发", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-136", + "seg": [ + [ + [ + "kubernetes", + "运维", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes源码导读": { + "children": [ + { + "Kubernetes源码结构和编译步骤": { + "data": { + "uuid": "云原生-4-607", + "seg": [ + [ + [ + "kubernetes", + "结构" + ], + [ + "编译", + "步骤" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kube-apiserver进程源码分析": { + "children": [ + { + "进程启动过程": { + "data": { + "uuid": "云原生-5-1145", + "seg": [ + [ + [ + "进程", + "启动", + "过程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "data": { + "uuid": "云原生-5-1146", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-608", + "seg": [ + [ + [ + "kube", + "apiserver", + "进程", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kube-controller-manager进程源码分析": { + "children": [ + { + "进程启动过程": { + "data": { + "uuid": "云原生-5-1147", + "seg": [ + [ + [ + "进程", + "启动", + "过程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "data": { + "uuid": "云原生-5-1148", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-609", + "seg": [ + [ + [ + "kube", + "controller", + "manager", + "进程", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kube-scheduler进程源码分析": { + "children": [ + { + "进程启动过程": { + "data": { + "uuid": "云原生-5-1149", + "seg": [ + [ + [ + "进程", + "启动", + "过程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "data": { + "uuid": "云原生-5-1150", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-610", + "seg": [ + [ + [ + "kube", + "scheduler", + "进程", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubelet进程源码分析": { + "children": [ + { + "进程启动过程": { + "data": { + "uuid": "云原生-5-1151", + "seg": [ + [ + [ + "进程", + "启动", + "过程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "data": { + "uuid": "云原生-5-1152", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-611", + "seg": [ + [ + [ + "kubelet", + "进程", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kube-proxy进程源码分析": { + "children": [ + { + "进程启动过程": { + "data": { + "uuid": "云原生-5-1153", + "seg": [ + [ + [ + "进程", + "启动", + "过程" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关键代码分析": { + "data": { + "uuid": "云原生-5-1154", + "seg": [ + [ + [ + "关键", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-612", + "seg": [ + [ + [ + "kube", + "proxy", + "进程", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl进程源码分析": { + "children": [ + { + "kubectl create命令": { + "data": { + "uuid": "云原生-5-1155", + "seg": [ + [ + [ + "kubectl", + "create", + "命令" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "97232498", + "73913597", + "78759318" + ] + } + } + } + } + }, + { + "rolling-update命令": { + "data": { + "uuid": "云原生-5-1156", + "seg": [ + [ + [ + "rolling", + "update", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-613", + "seg": [ + [ + [ + "kubectl", + "进程", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-137", + "seg": [ + [ + [ + "kubernetes", + "导读" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "先把Kubernetes跑起来": { + "children": [ + { + "先跑起来": { + "data": { + "uuid": "云原生-4-614", + "seg": [ + [ + [ + "跑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建Kubernetes集群": { + "data": { + "uuid": "云原生-4-615", + "seg": [ + [ + [ + "创建", + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署应用": { + "data": { + "uuid": "云原生-4-616", + "seg": [ + [ + [ + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问应用": { + "data": { + "uuid": "云原生-4-617", + "seg": [ + [ + [ + "访问" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Scale应用": { + "data": { + "uuid": "云原生-4-618", + "seg": [ + [ + [ + "scale" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "滚动更新": { + "data": { + "uuid": "云原生-4-619", + "seg": [ + [ + [ + "滚动", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-138", + "seg": [ + [ + [ + "kubernetes", + "跑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重要概念": { + "data": { + "uuid": "云原生-3-139", + "seg": [ + [ + [ + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Kubernetes Cluster": { + "children": [ + { + "安装Docker": { + "children": [ + { + "手动安装模式": { + "data": { + "uuid": "云原生-5-1157", + "seg": [ + [ + [ + "手动", + "安装", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ubuntu中自动化安装Docker": { + "data": { + "uuid": "云原生-5-1158", + "seg": [ + [ + [ + "ubuntu", + "自动化", + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CentOS中自动化安装Docker": { + "data": { + "uuid": "云原生-5-1159", + "seg": [ + [ + [ + "centos", + "自动化", + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114379449", + "99631249" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-620", + "seg": [ + [ + [ + "安装", + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装kubelet、kubeadm和kubectl": { + "data": { + "uuid": "云原生-4-621", + "seg": [ + [ + [ + "安装", + "kubelet" + ], + [ + "kubeadm" + ], + [ + "kubectl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用kubeadm创建Cluster": { + "children": [ + { + "初始化Master": { + "data": { + "uuid": "云原生-5-1160", + "seg": [ + [ + [ + "初始化", + "master" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置kubectl": { + "data": { + "uuid": "云原生-5-1161", + "seg": [ + [ + [ + "配置", + "kubectl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Pod网络": { + "data": { + "uuid": "云原生-5-1162", + "seg": [ + [ + [ + "安装", + "pod", + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "添加k8s-node1 和k8s-node2": { + "data": { + "uuid": "云原生-5-1163", + "seg": [ + [ + [ + "添加", + "k8s", + "node1" + ], + [ + "k8s", + "node2" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-622", + "seg": [ + [ + [ + "kubeadm", + "创建", + "cluster" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90728468" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-140", + "seg": [ + [ + [ + "部署", + "kubernetes", + "cluster" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes架构": { + "children": [ + { + "Master节点": { + "data": { + "uuid": "云原生-4-623", + "seg": [ + [ + [ + "master", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Node节点": { + "data": { + "uuid": "云原生-4-624", + "seg": [ + [ + [ + "node", + "节点" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115269200" + ] + } + } + } + } + }, + { + "完整的架构图": { + "data": { + "uuid": "云原生-4-625", + "seg": [ + [ + [ + "架构图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用例子把它们串起来": { + "data": { + "uuid": "云原生-4-626", + "seg": [ + [ + [ + "例子", + "串" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-141", + "seg": [ + [ + [ + "kubernetes", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行应用": { + "children": [ + { + "DaemonSet": { + "children": [ + { + "kube-flannel-ds": { + "data": { + "uuid": "云原生-5-1164", + "seg": [ + [ + [ + "kube", + "flannel", + "ds" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kube-proxy": { + "data": { + "uuid": "云原生-5-1165", + "seg": [ + [ + [ + "kube", + "proxy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行自己的DaemonSet": { + "data": { + "uuid": "云原生-5-1166", + "seg": [ + [ + [ + "运行", + "daemonset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-627", + "seg": [ + [ + [ + "daemonset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Job": { + "children": [ + { + "Pod失败的情况": { + "data": { + "uuid": "云原生-5-1167", + "seg": [ + [ + [ + "pod", + "失败", + "情况" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Job的并行性": { + "data": { + "uuid": "云原生-5-1168", + "seg": [ + [ + [ + "job", + "并行性" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109707730", + "83384264" + ] + } + } + } + } + }, + { + "定时Job": { + "data": { + "uuid": "云原生-5-1169", + "seg": [ + [ + [ + "定时", + "job" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-628", + "seg": [ + [ + [ + "job" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-142", + "seg": [ + [ + [ + "运行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过Service访问Pod": { + "children": [ + { + "创建Service": { + "data": { + "uuid": "云原生-4-629", + "seg": [ + [ + [ + "创建", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cluster IP底层实现": { + "data": { + "uuid": "云原生-4-630", + "seg": [ + [ + [ + "cluster", + "ip", + "底层" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DNS访问Service": { + "data": { + "uuid": "云原生-4-631", + "seg": [ + [ + [ + "dns", + "访问", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "外网如何访问Service": { + "data": { + "uuid": "云原生-4-632", + "seg": [ + [ + [ + "网", + "访问", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-143", + "seg": [ + [ + [ + "service", + "访问", + "pod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Rolling Update": { + "children": [ + { + "实践": { + "data": { + "uuid": "云原生-4-633", + "seg": [ + [ + [ + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-144", + "seg": [ + [ + [ + "rolling", + "update" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Health Check": { + "children": [ + { + "默认的健康检查": { + "data": { + "uuid": "云原生-4-634", + "seg": [ + [ + [ + "默认", + "健康检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Liveness探测": { + "data": { + "uuid": "云原生-4-635", + "seg": [ + [ + [ + "liveness", + "探测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Readiness探测": { + "data": { + "uuid": "云原生-4-636", + "seg": [ + [ + [ + "readiness", + "探测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Health Check在Scale Up中的应用": { + "data": { + "uuid": "云原生-4-637", + "seg": [ + [ + [ + "health", + "check", + "scale", + "up" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88017028", + "52801043" + ] + } + } + } + } + }, + { + "Health Check在滚动更新中的应用": { + "data": { + "uuid": "云原生-4-638", + "seg": [ + [ + [ + "health", + "check", + "滚动", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-145", + "seg": [ + [ + [ + "health", + "check" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据管理": { + "children": [ + { + "Volume": { + "children": [ + { + "emptyDir": { + "data": { + "uuid": "云原生-5-1170", + "seg": [ + [ + [ + "emptydir" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "hostPath": { + "data": { + "uuid": "云原生-5-1171", + "seg": [ + [ + [ + "hostpath" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "外部Storage Provider": { + "data": { + "uuid": "云原生-5-1172", + "seg": [ + [ + [ + "外部", + "storage", + "provider" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-639", + "seg": [ + [ + [ + "volume" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PersistentVolume & PersistentVolumeClaim": { + "children": [ + { + "NFS PersistentVolume": { + "data": { + "uuid": "云原生-5-1173", + "seg": [ + [ + [ + "nfs", + "persistentvolume" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回收PV": { + "data": { + "uuid": "云原生-5-1174", + "seg": [ + [ + [ + "回收", + "pv" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PV动态供给": { + "data": { + "uuid": "云原生-5-1175", + "seg": [ + [ + [ + "pv", + "动态", + "供给" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-640", + "seg": [ + [ + [ + "persistentvolume", + "persistentvolumeclaim" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一个数据库例子": { + "data": { + "uuid": "云原生-4-641", + "seg": [ + [ + [ + "数据库", + "例子" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-146", + "seg": [ + [ + [ + "数据管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Secret & Configmap": { + "children": [ + { + "创建Secret": { + "data": { + "uuid": "云原生-4-642", + "seg": [ + [ + [ + "创建", + "secret" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看Secret": { + "data": { + "uuid": "云原生-4-643", + "seg": [ + [ + [ + "查看", + "secret" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Pod中使用Secret": { + "children": [ + { + "Volume方式": { + "data": { + "uuid": "云原生-5-1176", + "seg": [ + [ + [ + "volume", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环境变量方式": { + "data": { + "uuid": "云原生-5-1177", + "seg": [ + [ + [ + "环境变量", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-644", + "seg": [ + [ + [ + "pod", + "secret" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ConfigMap": { + "data": { + "uuid": "云原生-4-645", + "seg": [ + [ + [ + "configmap" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-147", + "seg": [ + [ + [ + "secret", + "configmap" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm—Kubernetes的包管理器": { + "children": [ + { + "Why Helm": { + "data": { + "uuid": "云原生-4-646", + "seg": [ + [ + [ + "why", + "helm" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm架构": { + "data": { + "uuid": "云原生-4-647", + "seg": [ + [ + [ + "helm", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Helm": { + "children": [ + { + "Helm客户端": { + "data": { + "uuid": "云原生-5-1178", + "seg": [ + [ + [ + "helm", + "客户端" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84346573", + "103380446", + "103360312" + ] + } + } + } + } + }, + { + "Tiller服务器": { + "data": { + "uuid": "云原生-5-1179", + "seg": [ + [ + [ + "tiller", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-648", + "seg": [ + [ + [ + "安装", + "helm" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "chart详解": { + "children": [ + { + "chart目录结构": { + "data": { + "uuid": "云原生-5-1180", + "seg": [ + [ + [ + "chart", + "目录", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "21190793" + ] + } + } + } + } + }, + { + "chart模板": { + "data": { + "uuid": "云原生-5-1181", + "seg": [ + [ + [ + "chart", + "模板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "再次实践MySQL chart": { + "data": { + "uuid": "云原生-5-1182", + "seg": [ + [ + [ + "实践", + "mysql", + "chart" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "103389964" + ] + } + } + } + } + }, + { + "升级和回滚release": { + "data": { + "uuid": "云原生-5-1183", + "seg": [ + [ + [ + "升级" + ], + [ + "回滚", + "release" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发自己的chart": { + "data": { + "uuid": "云原生-5-1184", + "seg": [ + [ + [ + "开发", + "chart" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-649", + "seg": [ + [ + [ + "chart", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-148", + "seg": [ + [ + [ + "helm", + "kubernetes", + "包", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络": { + "children": [ + { + "各种网络方案": { + "data": { + "uuid": "云原生-4-650", + "seg": [ + [ + [ + "网络", + "方案" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Network Policy": { + "children": [ + { + "部署Canal": { + "data": { + "uuid": "云原生-5-1185", + "seg": [ + [ + [ + "部署", + "canal" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实践Network Policy": { + "data": { + "uuid": "云原生-5-1186", + "seg": [ + [ + [ + "实践", + "network", + "policy" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "42112141", + "42129479", + "89307828" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-651", + "seg": [ + [ + [ + "network", + "policy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-149", + "seg": [ + [ + [ + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes Dashboard": { + "children": [ + { + "安装": { + "data": { + "uuid": "云原生-4-652", + "seg": [ + [ + [ + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置登录权限": { + "data": { + "uuid": "云原生-4-653", + "seg": [ + [ + [ + "配置", + "登录", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dashboard界面结构": { + "data": { + "uuid": "云原生-4-654", + "seg": [ + [ + [ + "dashboard", + "界面", + "结构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "54091997", + "115404287", + "41283227", + "53838355", + "87177917", + "85318736", + "41283147" + ] + } + } + } + } + }, + { + "典型使用场景": { + "children": [ + { + "部署Deployment": { + "data": { + "uuid": "云原生-5-1187", + "seg": [ + [ + [ + "部署", + "deployment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在线操作": { + "data": { + "uuid": "云原生-5-1188", + "seg": [ + [ + [ + "操作" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89450200" + ] + } + } + } + } + }, + { + "查看资源详细信息": { + "data": { + "uuid": "云原生-5-1189", + "seg": [ + [ + [ + "查看", + "资源", + "详细信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看Pod日志": { + "data": { + "uuid": "云原生-5-1190", + "seg": [ + [ + [ + "查看", + "pod", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-655", + "seg": [ + [ + [ + "典型", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-150", + "seg": [ + [ + [ + "kubernetes", + "dashboard" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes集群日志管理": { + "data": { + "uuid": "云原生-3-151", + "seg": [ + [ + [ + "kubernetes", + "集群", + "日志", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker简介": { + "children": [ + { + "什么是Docker": { + "data": { + "uuid": "云原生-4-656", + "seg": [ + [ + [ + "docker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker基本概念": { + "children": [ + { + "镜像": { + "data": { + "uuid": "云原生-5-1191", + "seg": [ + [ + [ + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器": { + "data": { + "uuid": "云原生-5-1192", + "seg": [ + [ + [ + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "镜像仓库": { + "data": { + "uuid": "云原生-5-1193", + "seg": [ + [ + [ + "镜像", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-657", + "seg": [ + [ + [ + "docker", + "基本概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker架构及原理": { + "children": [ + { + "Docker架构": { + "data": { + "uuid": "云原生-5-1194", + "seg": [ + [ + [ + "docker", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker原理": { + "data": { + "uuid": "云原生-5-1195", + "seg": [ + [ + [ + "docker", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器网络": { + "data": { + "uuid": "云原生-5-1196", + "seg": [ + [ + [ + "容器", + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器存储": { + "data": { + "uuid": "云原生-5-1197", + "seg": [ + [ + [ + "容器", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-658", + "seg": [ + [ + [ + "docker", + "架构" + ], + [ + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-152", + "seg": [ + [ + [ + "docker", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器引擎": { + "children": [ + { + "容器引擎实现原理": { + "data": { + "uuid": "云原生-4-659", + "seg": [ + [ + [ + "容器", + "引擎", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器生命周期管理": { + "data": { + "uuid": "云原生-4-660", + "seg": [ + [ + [ + "容器", + "生命周期", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器状态管理": { + "data": { + "uuid": "云原生-4-661", + "seg": [ + [ + [ + "容器", + "状态", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问运行状态容器": { + "data": { + "uuid": "云原生-4-662", + "seg": [ + [ + [ + "访问", + "运行", + "状态", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问容器内容": { + "data": { + "uuid": "云原生-4-663", + "seg": [ + [ + [ + "访问", + "容器", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-153", + "seg": [ + [ + [ + "容器", + "引擎" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "镜像管理": { + "children": [ + { + "Dockerfile及镜像制作": { + "children": [ + { + "Dockerfile的作用": { + "data": { + "uuid": "云原生-5-1198", + "seg": [ + [ + [ + "dockerfile", + "作用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dockerfile文件构成": { + "data": { + "uuid": "云原生-5-1199", + "seg": [ + [ + [ + "dockerfile", + "文件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80921390", + "109788299", + "80464065", + "78318397", + "72366982", + "82879246", + "87886139", + "103915632", + "117431623", + "69668815" + ] + } + } + } + } + }, + { + "常用命令集": { + "data": { + "uuid": "云原生-5-1200", + "seg": [ + [ + [ + "常用命令", + "集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建镜像": { + "data": { + "uuid": "云原生-5-1201", + "seg": [ + [ + [ + "构建", + "镜像" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109323268" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-664", + "seg": [ + [ + [ + "dockerfile" + ], + [ + "镜像", + "制作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "镜像基本操作": { + "children": [ + { + "从镜像仓库下载镜像": { + "data": { + "uuid": "云原生-5-1202", + "seg": [ + [ + [ + "镜像", + "仓库", + "下载" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "53117496" + ] + } + } + } + } + }, + { + "将本地镜像上传到镜像仓库": { + "data": { + "uuid": "云原生-5-1203", + "seg": [ + [ + [ + "镜像", + "传到", + "仓库" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82220093" + ] + } + } + } + } + }, + { + "查看本地镜像": { + "data": { + "uuid": "云原生-5-1204", + "seg": [ + [ + [ + "查看", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "导出和导入本地镜像": { + "data": { + "uuid": "云原生-5-1205", + "seg": [ + [ + [ + "导出" + ], + [ + "导入", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建镜像": { + "data": { + "uuid": "云原生-5-1206", + "seg": [ + [ + [ + "构建", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改本地镜像标识": { + "data": { + "uuid": "云原生-5-1207", + "seg": [ + [ + [ + "修改", + "镜像", + "标识" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除本地镜像": { + "data": { + "uuid": "云原生-5-1208", + "seg": [ + [ + [ + "删除", + "镜像" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80785761", + "79387649" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-665", + "seg": [ + [ + [ + "镜像", + "基本操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Dockerfile优化": { + "children": [ + { + "Dockerfile检查项": { + "data": { + "uuid": "云原生-5-1209", + "seg": [ + [ + [ + "dockerfile", + "检查", + "项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "检查及优化工具": { + "data": { + "uuid": "云原生-5-1210", + "seg": [ + [ + [ + "检查" + ], + [ + "优化", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-666", + "seg": [ + [ + [ + "dockerfile", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作系统基础镜像制作": { + "children": [ + { + "操作系统版本选择": { + "data": { + "uuid": "云原生-5-1211", + "seg": [ + [ + [ + "操作系统", + "版本", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作系统参数调整": { + "data": { + "uuid": "云原生-5-1212", + "seg": [ + [ + [ + "操作系统", + "参数", + "调整" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确定基础rpm包范围": { + "data": { + "uuid": "云原生-5-1213", + "seg": [ + [ + [ + "基础", + "rpm", + "包" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确定常用命令范围": { + "data": { + "uuid": "云原生-5-1214", + "seg": [ + [ + [ + "常用命令" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109992343" + ] + } + } + } + } + }, + { + "操作系统镜像制作过程": { + "data": { + "uuid": "云原生-5-1215", + "seg": [ + [ + [ + "操作系统", + "镜像", + "制作", + "过程" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78961612", + "118102267", + "117961715" + ] + } + } + } + } + }, + { + "系统资源限制配置说明": { + "data": { + "uuid": "云原生-5-1216", + "seg": [ + [ + [ + "系统资源", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-667", + "seg": [ + [ + [ + "操作系统", + "基础", + "镜像", + "制作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器镜像安全加固": { + "children": [ + { + "容器安全加固规范": { + "data": { + "uuid": "云原生-5-1217", + "seg": [ + [ + [ + "容器", + "加固", + "规范" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全检查工具": { + "data": { + "uuid": "云原生-5-1218", + "seg": [ + [ + [ + "安全检查", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-668", + "seg": [ + [ + [ + "容器", + "镜像", + "加固" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-154", + "seg": [ + [ + [ + "镜像", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "镜像仓库管理": { + "children": [ + { + "Docker Registry": { + "children": [ + { + "Docker Hub": { + "data": { + "uuid": "云原生-5-1219", + "seg": [ + [ + [ + "docker", + "hub" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90046179" + ] + } + } + } + } + }, + { + "第三方公共仓库": { + "data": { + "uuid": "云原生-5-1220", + "seg": [ + [ + [ + "公共", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "建立私有镜像仓库": { + "data": { + "uuid": "云原生-5-1221", + "seg": [ + [ + [ + "建立", + "私有", + "镜像", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-669", + "seg": [ + [ + [ + "docker", + "registry" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Harbor": { + "children": [ + { + "Harbor架构": { + "data": { + "uuid": "云原生-5-1222", + "seg": [ + [ + [ + "harbor", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86063684", + "77941995", + "90606235", + "97130543" + ] + } + } + } + } + }, + { + "Harbor的镜像同步机制": { + "data": { + "uuid": "云原生-5-1223", + "seg": [ + [ + [ + "harbor", + "镜像", + "同步", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Harbor用户认证": { + "data": { + "uuid": "云原生-5-1224", + "seg": [ + [ + [ + "harbor", + "用户", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Harbor容器镜像安全扫描": { + "data": { + "uuid": "云原生-5-1225", + "seg": [ + [ + [ + "harbor", + "容器", + "镜像", + "扫描" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "118070832" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-670", + "seg": [ + [ + [ + "harbor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-155", + "seg": [ + [ + [ + "镜像", + "仓库", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker相关部署实践": { + "children": [ + { + "MySQL Docker部署实践": { + "children": [ + { + "MySQL简介": { + "data": { + "uuid": "云原生-5-1226", + "seg": [ + [ + [ + "mysql", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "81197821", + "96478395", + "56277430", + "70224185", + "103764829", + "52230727", + "50344085", + "115753224", + "54426502", + "112875131" + ] + } + } + } + } + }, + { + "MySQL容器化操作实践": { + "data": { + "uuid": "云原生-5-1227", + "seg": [ + [ + [ + "mysql", + "容器", + "化", + "操作", + "实践" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "108799267", + "113788092" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-671", + "seg": [ + [ + [ + "mysql", + "docker", + "部署", + "实践" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Docker支持GPU实践": { + "children": [ + { + "GPU简介": { + "data": { + "uuid": "云原生-5-1228", + "seg": [ + [ + [ + "gpu", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CPU与GPU的对比": { + "data": { + "uuid": "云原生-5-1229", + "seg": [ + [ + [ + "cpu" + ], + [ + "gpu" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52238470", + "79184540", + "89502404", + "110430622", + "112519369", + "89600703", + "88264682", + "117901084", + "106382148", + "108032120" + ] + } + } + } + } + }, + { + "通过nvidia-docker使用GPU": { + "data": { + "uuid": "云原生-5-1230", + "seg": [ + [ + [ + "nvidia", + "docker", + "gpu" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84558687" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-672", + "seg": [ + [ + [ + "docker", + "支持", + "gpu", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-156", + "seg": [ + [ + [ + "docker", + "相关", + "部署", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes简介": { + "children": [ + { + "PaaS简介": { + "children": [ + { + "传统PaaS系统": { + "data": { + "uuid": "云原生-5-1231", + "seg": [ + [ + [ + "传统", + "paas", + "系统" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "96015315", + "53466814", + "51669508", + "79096494", + "8480076", + "109205122", + "51145217", + "89849887", + "103784137", + "72811516" + ] + } + } + } + } + }, + { + "基于Docker的新型PaaS平台": { + "data": { + "uuid": "云原生-5-1232", + "seg": [ + [ + [ + "docker", + "新型", + "paas", + "平台" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "41266133", + "75215231", + "80864890", + "71104957", + "50721255", + "81291632", + "73163091", + "7657612", + "34440435", + "102833671" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-673", + "seg": [ + [ + [ + "paas", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes核心概念": { + "data": { + "uuid": "云原生-4-674", + "seg": [ + [ + [ + "kubernetes", + "核心", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-157", + "seg": [ + [ + [ + "kubernetes", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod相关核心技术": { + "children": [ + { + "Label": { + "data": { + "uuid": "云原生-4-675", + "seg": [ + [ + [ + "label" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "健康检查": { + "children": [ + { + "流程健康检查": { + "data": { + "uuid": "云原生-5-1233", + "seg": [ + [ + [ + "流程", + "健康检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用健康检查": { + "data": { + "uuid": "云原生-5-1234", + "seg": [ + [ + [ + "健康检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-676", + "seg": [ + [ + [ + "健康检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-158", + "seg": [ + [ + [ + "pod", + "相关", + "核心技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes Service": { + "children": [ + { + "DNS服务发现机制": { + "data": { + "uuid": "云原生-4-677", + "seg": [ + [ + [ + "dns", + "服务", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Headless服务": { + "data": { + "uuid": "云原生-4-678", + "seg": [ + [ + [ + "headless", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes服务": { + "children": [ + { + "ClusterIP": { + "data": { + "uuid": "云原生-5-1235", + "seg": [ + [ + [ + "clusterip" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "76022267" + ] + } + } + } + } + }, + { + "NodePort": { + "data": { + "uuid": "云原生-5-1236", + "seg": [ + [ + [ + "nodeport" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103232694" + ] + } + } + } + } + }, + { + "LoadBalancer": { + "data": { + "uuid": "云原生-5-1237", + "seg": [ + [ + [ + "loadbalancer" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-679", + "seg": [ + [ + [ + "kubernetes", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络策略": { + "data": { + "uuid": "云原生-4-680", + "seg": [ + [ + [ + "网络", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "完整的Kubernetes服务发布实践": { + "children": [ + { + "各Kubernetes集群": { + "data": { + "uuid": "云原生-5-1238", + "seg": [ + [ + [ + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "101267444", + "95460276", + "51680693", + "106440068", + "109143396", + "108184160", + "42538549", + "115600456", + "99214276", + "76576657" + ] + } + } + } + } + }, + { + "Ingress服务发布": { + "data": { + "uuid": "云原生-5-1239", + "seg": [ + [ + [ + "ingress", + "服务", + "发布" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "77066814" + ] + } + } + } + } + }, + { + "服务发现": { + "data": { + "uuid": "云原生-5-1240", + "seg": [ + [ + [ + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-681", + "seg": [ + [ + [ + "kubernetes", + "服务", + "发布", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-159", + "seg": [ + [ + [ + "kubernetes", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes存储": { + "children": [ + { + "存储使用场景": { + "data": { + "uuid": "云原生-4-682", + "seg": [ + [ + [ + "存储", + "场景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "文件存储的几种形式": { + "data": { + "uuid": "云原生-4-683", + "seg": [ + [ + [ + "文件", + "存储", + "形式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Flex Volume存储管理方案": { + "children": [ + { + "如何实现灵活存储组件": { + "data": { + "uuid": "云原生-5-1241", + "seg": [ + [ + [ + "灵活", + "存储", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-684", + "seg": [ + [ + [ + "flex", + "volume", + "存储管理", + "方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准化容器存储接口CSI": { + "data": { + "uuid": "云原生-4-685", + "seg": [ + [ + [ + "标准化", + "容器", + "存储", + "接口", + "csi" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-160", + "seg": [ + [ + [ + "kubernetes", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全及多租户配额管理": { + "children": [ + { + "API服务器认证": { + "data": { + "uuid": "云原生-4-686", + "seg": [ + [ + [ + "api", + "服务器", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-161", + "seg": [ + [ + [], + [ + "租户", + "配额", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-5", + "seg": [ + [ + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DevOps": { + "children": [ + { + "应用中心": { + "children": [ + { + "Helm Hub": { + "data": { + "uuid": "云原生-4-687", + "seg": [ + [ + [ + "helm", + "hub" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Operator Hub": { + "data": { + "uuid": "云原生-4-688", + "seg": [ + [ + [ + "operator", + "hub" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Aliyun App Hub": { + "data": { + "uuid": "云原生-4-689", + "seg": [ + [ + [ + "aliyun", + "app", + "hub" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51992771", + "51516090", + "109049687", + "81084661", + "105855714", + "111991150" + ] + } + } + } + } + }, + { + "Kubernetes App Hub": { + "data": { + "uuid": "云原生-4-690", + "seg": [ + [ + [ + "kubernetes", + "app", + "hub" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Prometheus Exporter Hub": { + "data": { + "uuid": "云原生-4-691", + "seg": [ + [ + [ + "prometheus", + "exporter", + "hub" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-162", + "seg": [ + [ + [ + "中心" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运维": { + "children": [ + { + "模板": { + "children": [ + { + "YAML": { + "data": { + "uuid": "云原生-5-1242", + "seg": [ + [ + [ + "yaml" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm": { + "data": { + "uuid": "云原生-5-1243", + "seg": [ + [ + [ + "helm" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "KUDO(Kubernetes Universal Declarative Operator)": { + "data": { + "uuid": "云原生-5-1244", + "seg": [ + [ + [ + "kudo", + "kubernetes", + "universal", + "declarative", + "operator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OAM(Open Application Model)": { + "data": { + "uuid": "云原生-5-1245", + "seg": [ + [ + [ + "oam", + "open", + "application", + "model" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109852659" + ] + } + } + } + } + }, + { + "OpenKruise": { + "data": { + "uuid": "云原生-5-1246", + "seg": [ + [ + [ + "openkruise" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MetaController": { + "data": { + "uuid": "云原生-5-1247", + "seg": [ + [ + [ + "metacontroller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-692", + "seg": [ + [ + [ + "模板" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-163", + "seg": [ + [ + [ + "运维" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控": { + "children": [ + { + "Prometheus": { + "data": { + "uuid": "云原生-4-693", + "seg": [ + [ + [ + "prometheus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Grafana": { + "data": { + "uuid": "云原生-4-694", + "seg": [ + [ + [ + "grafana" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Alertmanager": { + "data": { + "uuid": "云原生-4-695", + "seg": [ + [ + [ + "alertmanager" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-164", + "seg": [ + [ + [ + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CI/CD": { + "children": [ + { + "Jenkins": { + "data": { + "uuid": "云原生-4-696", + "seg": [ + [ + [ + "jenkins" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78901240", + "109014732" + ] + } + } + } + } + }, + { + "Argo": { + "data": { + "uuid": "云原生-4-697", + "seg": [ + [ + [ + "argo" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tekton": { + "data": { + "uuid": "云原生-4-698", + "seg": [ + [ + [ + "tekton" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Drone": { + "data": { + "uuid": "云原生-4-699", + "seg": [ + [ + [ + "drone" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80481460" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-165", + "seg": [ + [ + [ + "ci", + "cd" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "116094858", + "85219948" + ] + } + } + } + } + }, + { + "日志": { + "children": [ + { + "ELK": { + "children": [ + { + "ElasticSearch": { + "data": { + "uuid": "云原生-5-1248", + "seg": [ + [ + [ + "elasticsearch" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52602766", + "114533789", + "80309138", + "79815304", + "114585863", + "53577115" + ] + } + } + } + } + }, + { + "Logstash": { + "data": { + "uuid": "云原生-5-1249", + "seg": [ + [ + [ + "logstash" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "52454951" + ] + } + } + } + } + }, + { + "Kibana": { + "data": { + "uuid": "云原生-5-1250", + "seg": [ + [ + [ + "kibana" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "99432271" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-700", + "seg": [ + [ + [ + "elk" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84700835", + "99681107" + ] + } + } + } + } + }, + { + "EFK": { + "children": [ + { + "ElasticSearch": { + "data": { + "uuid": "云原生-5-1251", + "seg": [ + [ + [ + "elasticsearch" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111594267", + "116431436", + "114696262", + "102728604", + "117374349" + ] + } + } + } + } + }, + { + "Fluentd": { + "data": { + "uuid": "云原生-5-1252", + "seg": [ + [ + [ + "fluentd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kibana": { + "data": { + "uuid": "云原生-5-1253", + "seg": [ + [ + [ + "kibana" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-701", + "seg": [ + [ + [ + "efk" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Loki": { + "children": [ + { + "Loki": { + "data": { + "uuid": "云原生-5-1254", + "seg": [ + [ + [ + "loki" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Promtail": { + "data": { + "uuid": "云原生-5-1255", + "seg": [ + [ + [ + "promtail" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Grafana": { + "data": { + "uuid": "云原生-5-1256", + "seg": [ + [ + [ + "grafana" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-702", + "seg": [ + [ + [ + "loki" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-166", + "seg": [ + [ + [ + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "采集": { + "children": [ + { + "Logpilot": { + "data": { + "uuid": "云原生-4-703", + "seg": [ + [ + [ + "logpilot" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fluentbit": { + "data": { + "uuid": "云原生-4-704", + "seg": [ + [ + [ + "fluentbit" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fluentd": { + "data": { + "uuid": "云原生-4-705", + "seg": [ + [ + [ + "fluentd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-167", + "seg": [ + [ + [ + "采集" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DevOps介绍": { + "children": [ + { + "敏捷、持续交付和三步法": { + "children": [ + { + "制造业价值流": { + "data": { + "uuid": "云原生-5-1257", + "seg": [ + [ + [ + "制造业", + "价值", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "技术价值流": { + "children": [ + { + "聚焦于部署前置时间": { + "data": { + "uuid": "云原生-6-342", + "seg": [ + [ + [ + "聚焦", + "部署", + "前置", + "时间" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关注返工指标——%C/A": { + "data": { + "uuid": "云原生-6-343", + "seg": [ + [ + [ + "关注", + "返工", + "指标", + "%", + "c", + "a" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1258", + "seg": [ + [ + [ + "技术", + "价值", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "三步工作法:DevOps的基础原则": { + "data": { + "uuid": "云原生-5-1259", + "seg": [ + [ + [ + "工作", + "法" + ] + ], + [ + [ + "devops", + "基础", + "原则" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "7590678", + "113920500", + "76488044", + "108427237", + "111469691", + "114488730", + "80892734", + "7071894", + "101402737", + "117064173" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-706", + "seg": [ + [ + [ + "敏捷" + ], + [ + "持续", + "交付" + ], + [ + "法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第一步:流动原则": { + "children": [ + { + "使工作可见": { + "data": { + "uuid": "云原生-5-1260", + "seg": [ + [ + [ + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "限制在制品数": { + "data": { + "uuid": "云原生-5-1261", + "seg": [ + [ + [ + "制品", + "数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "减小批量大小": { + "data": { + "uuid": "云原生-5-1262", + "seg": [ + [ + [ + "减小", + "批量", + "大小" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "减少交接次数": { + "data": { + "uuid": "云原生-5-1263", + "seg": [ + [ + [ + "减少", + "交接", + "次数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持续识别和改善约束点": { + "data": { + "uuid": "云原生-5-1264", + "seg": [ + [ + [ + "持续", + "识别" + ], + [ + "改善", + "约束" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消除价值流中的困境和浪费": { + "data": { + "uuid": "云原生-5-1265", + "seg": [ + [ + [ + "消除", + "价值", + "流", + "困境" + ], + [] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-707", + "seg": [ + [ + [] + ], + [ + [ + "流动", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第二步:反馈原则": { + "children": [ + { + "在复杂系统中安全地工作": { + "data": { + "uuid": "云原生-5-1266", + "seg": [ + [ + [ + "系统", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在源头保障质量": { + "data": { + "uuid": "云原生-5-1267", + "seg": [ + [ + [ + "源头", + "保障", + "质量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为下游工作中心而优化": { + "data": { + "uuid": "云原生-5-1268", + "seg": [ + [ + [ + "下游", + "工作", + "中心", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-708", + "seg": [ + [ + [] + ], + [ + [ + "反馈", + "原则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第三步:持续学习与实验原则": { + "children": [ + { + "建立学习型组织和安全文化": { + "data": { + "uuid": "云原生-5-1269", + "seg": [ + [ + [ + "建立", + "学习型", + "组织" + ], + [ + "文化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "将日常工作的改进制度化": { + "data": { + "uuid": "云原生-5-1270", + "seg": [ + [ + [ + "日常", + "工作", + "改进", + "制度化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "把局部发现转化为全局优化": { + "data": { + "uuid": "云原生-5-1271", + "seg": [ + [ + [ + "局部", + "转化", + "全局", + "优化" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "在日常工作中注入弹性模式": { + "data": { + "uuid": "云原生-5-1272", + "seg": [ + [ + [ + "日常", + "工作", + "注入", + "弹性", + "模式" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "领导层强化学习文化": { + "data": { + "uuid": "云原生-5-1273", + "seg": [ + [ + [ + "领导层", + "强化", + "学习", + "文化" + ] + ] + ], + "level": "3", + "related_data": { + "blog": { + "data_id": [ + "38368137" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-709", + "seg": [ + [ + [] + ], + [ + [ + "持续", + "学习" + ], + [ + "实验", + "原则" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-168", + "seg": [ + [ + [ + "devops", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从何处开始": { + "children": [ + { + "选择合适的价值流作为切入点": { + "children": [ + { + "兼顾记录型系统和交互型系统": { + "data": { + "uuid": "云原生-5-1274", + "seg": [ + [ + [ + "兼顾", + "记录", + "系统" + ], + [ + "交互", + "系统" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "从最乐于创新的团队开始": { + "data": { + "uuid": "云原生-5-1275", + "seg": [ + [ + [ + "乐于", + "创新", + "团队" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "扩大DevOps的范围": { + "data": { + "uuid": "云原生-5-1276", + "seg": [ + [ + [ + "devops" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-710", + "seg": [ + [ + [ + "选择", + "价值", + "流", + "切入点" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "理解、可视化和运用价值流": { + "children": [ + { + "确定创造客户价值所需的团队": { + "data": { + "uuid": "云原生-5-1277", + "seg": [ + [ + [ + "创造", + "客户", + "价值", + "所需", + "团队" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "针对团队工作绘制价值流图": { + "data": { + "uuid": "云原生-5-1278", + "seg": [ + [ + [ + "团队", + "工作", + "绘制", + "价值", + "流图" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "101229467" + ] + } + } + } + } + }, + { + "组建专门的转型团队": { + "children": [ + { + "拥有共同的目标": { + "data": { + "uuid": "云原生-6-344", + "seg": [ + [ + [ + "拥有", + "目标" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "保持小跨度的改进计划": { + "data": { + "uuid": "云原生-6-345", + "seg": [ + [ + [ + "跨度", + "改进", + "计划" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "为非功能性需求预留20%的开发时间,减少技术债务": { + "data": { + "uuid": "云原生-6-346", + "seg": [ + [ + [ + "功能性", + "需求", + "预留", + "%", + "开发", + "时间", + "减少", + "技术", + "债务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "提高工作的可视化程度": { + "data": { + "uuid": "云原生-6-347", + "seg": [ + [ + [ + "提高", + "工作", + "可视化", + "程度" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1279", + "seg": [ + [ + [ + "组建", + "转型", + "团队" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用工具强化预期行为": { + "data": { + "uuid": "云原生-5-1280", + "seg": [ + [ + [ + "工具", + "强化", + "预期" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-711", + "seg": [ + [ + [ + "理解" + ], + [ + "可视化" + ], + [ + "价值", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "参考康威定律设计组织结构": { + "children": [ + { + "组织原型": { + "data": { + "uuid": "云原生-5-1281", + "seg": [ + [ + [ + "组织", + "原型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "过度职能导向的危害(“成本优化”)": { + "data": { + "uuid": "云原生-5-1282", + "seg": [ + [ + [ + "过度", + "职能", + "导向", + "危害", + "成本", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组建以市场为导向的团队(“速度优化”)": { + "data": { + "uuid": "云原生-5-1283", + "seg": [ + [ + [ + "组建", + "市场", + "导向", + "团队", + "速度", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使职能导向有效": { + "data": { + "uuid": "云原生-5-1284", + "seg": [ + [ + [ + "职能", + "导向" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将测试、运维和信息安全融入日常工作": { + "data": { + "uuid": "云原生-5-1285", + "seg": [ + [ + [], + [ + "运", + "维和", + "信息安全", + "融入", + "日常", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使团队成员都成为通才": { + "data": { + "uuid": "云原生-5-1286", + "seg": [ + [ + [ + "团队", + "成员", + "通才" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "根据康威定律设定团队边界": { + "data": { + "uuid": "云原生-5-1287", + "seg": [ + [ + [ + "康威", + "定律", + "设定", + "团队", + "边界" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建松耦合架构,提高生产力和安全性": { + "data": { + "uuid": "云原生-5-1288", + "seg": [ + [ + [ + "创建", + "松", + "耦合", + "架构", + "提高", + "生产力" + ], + [ + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-712", + "seg": [ + [ + [ + "参考", + "康威", + "定律", + "设计", + "组织", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将运维融入日常开发工作": { + "children": [ + { + "创建共享服务,提高开发生产力": { + "data": { + "uuid": "云原生-5-1289", + "seg": [ + [ + [ + "创建", + "共享", + "服务", + "提高", + "开发", + "生产力" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将运维工程师融入服务团队": { + "data": { + "uuid": "云原生-5-1290", + "seg": [ + [ + [ + "运", + "维", + "工程师", + "融入", + "服务", + "团队" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为每个服务团队分派运维联络人": { + "data": { + "uuid": "云原生-5-1291", + "seg": [ + [ + [ + "服务", + "团队", + "分派", + "运维", + "联络人" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "邀请运维工程师参加开发团队的会议": { + "children": [ + { + "邀请运维工程师参加每日站会": { + "data": { + "uuid": "云原生-6-348", + "seg": [ + [ + [ + "邀请", + "运维", + "工程师", + "参加", + "站" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51611322", + "78657541", + "102936138", + "56291871", + "113953862", + "92978356", + "79348254", + "86622821", + "82252722", + "82700539" + ] + } + } + } + } + }, + { + "邀请运维工程师参加回顾会议": { + "data": { + "uuid": "云原生-6-349", + "seg": [ + [ + [ + "邀请", + "运维", + "工程师", + "参加", + "回顾", + "会议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用看板图展示运维工作": { + "data": { + "uuid": "云原生-6-350", + "seg": [ + [ + [ + "板图", + "展示", + "运维", + "工作" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115940524", + "115278998" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1292", + "seg": [ + [ + [ + "邀请", + "运维", + "工程师", + "参加", + "开发", + "团队", + "会议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-713", + "seg": [ + [ + [ + "运", + "维", + "融入", + "日常", + "开发", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-169", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第一步:流动的技术实践": { + "children": [ + { + "为部署流水线奠定基础": { + "children": [ + { + "按需搭建开发环境、测试环境和生产环境": { + "data": { + "uuid": "云原生-5-1293", + "seg": [ + [ + [ + "需", + "搭建", + "开发", + "环境" + ], + [ + "测试环境" + ], + [ + "生产", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用统一的代码仓库": { + "data": { + "uuid": "云原生-5-1294", + "seg": [ + [ + [ + "统一", + "仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使基础设施的重建更容易": { + "data": { + "uuid": "云原生-5-1295", + "seg": [ + [ + [ + "基础设施", + "重建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运行在类生产环境里才算“完成”": { + "data": { + "uuid": "云原生-5-1296", + "seg": [ + [ + [ + "运行", + "类", + "生产", + "环境", + "算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-714", + "seg": [ + [ + [ + "部署", + "流水线", + "奠定", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现快速可靠的自动化测试": { + "children": [ + { + "对代码和环境做持续构建、测试和集成": { + "data": { + "uuid": "云原生-5-1297", + "seg": [ + [ + [], + [ + "环境", + "做", + "持续", + "构建" + ], + [], + [ + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建快速可靠的自动化测试套件": { + "children": [ + { + "在自动化测试中尽早发现错误": { + "data": { + "uuid": "云原生-6-351", + "seg": [ + [ + [ + "自动化", + "发现错误" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "尽可能并行地快速执行测试": { + "data": { + "uuid": "云原生-6-352", + "seg": [ + [ + [ + "并行", + "快速", + "执行" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "先编写自动化测试": { + "data": { + "uuid": "云原生-6-353", + "seg": [ + [ + [ + "编写", + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "尽量将手动测试自动化": { + "data": { + "uuid": "云原生-6-354", + "seg": [ + [ + [ + "手动", + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在测试套件中集成性能测试": { + "data": { + "uuid": "云原生-6-355", + "seg": [ + [ + [ + "套件", + "集成", + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在测试套件中集成非功能性需求测试": { + "data": { + "uuid": "云原生-6-356", + "seg": [ + [ + [ + "套件", + "集成", + "功能性", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1298", + "seg": [ + [ + [ + "构建", + "快速", + "可靠", + "自动化", + "套件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在部署流水线失败时拉下安灯绳": { + "data": { + "uuid": "云原生-5-1299", + "seg": [ + [ + [ + "部署", + "流水线", + "失败", + "时拉下", + "安", + "灯绳" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-715", + "seg": [ + [ + [ + "快速", + "可靠", + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用和实践持续集成": { + "children": [ + { + "小批量开发与大批量合并": { + "data": { + "uuid": "云原生-5-1300", + "seg": [ + [ + [ + "小批量", + "开发" + ], + [ + "合并" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用基于主干的开发实践": { + "data": { + "uuid": "云原生-5-1301", + "seg": [ + [ + [ + "主干", + "开发", + "实践" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "98944291", + "86685757", + "107853015" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-716", + "seg": [ + [ + [], + [ + "实践", + "持续", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化和低风险发布": { + "children": [ + { + "自动化部署流程": { + "children": [ + { + "应用自动化的自助式部署": { + "data": { + "uuid": "云原生-6-357", + "seg": [ + [ + [ + "自动化", + "自助式", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在部署流水线中集成代码部署": { + "data": { + "uuid": "云原生-6-358", + "seg": [ + [ + [ + "部署", + "流水线", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1302", + "seg": [ + [ + [ + "自动化", + "部署", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将部署与发布解耦": { + "children": [ + { + "基于环境的发布模式": { + "data": { + "uuid": "云原生-6-359", + "seg": [ + [ + [ + "环境", + "发布", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于应用的发布模式更安全": { + "data": { + "uuid": "云原生-6-360", + "seg": [ + [ + [ + "发布", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1303", + "seg": [ + [ + [ + "部署" + ], + [ + "发布", + "解", + "耦" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-717", + "seg": [ + [ + [ + "自动化" + ], + [ + "低", + "风险", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "降低发布风险的架构": { + "children": [ + { + "能提高生产力、可测试性和安全性的架构": { + "data": { + "uuid": "云原生-5-1304", + "seg": [ + [ + [ + "提高", + "生产力" + ], + [ + "性" + ], + [ + "安全性", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构原型:单体架构与微服务": { + "data": { + "uuid": "云原生-5-1305", + "seg": [ + [ + [ + "架构", + "原型" + ] + ], + [ + [ + "单体", + "架构" + ], + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全地演进企业架构": { + "data": { + "uuid": "云原生-5-1306", + "seg": [ + [ + [ + "演进", + "企业", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117490068" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-718", + "seg": [ + [ + [ + "降低", + "发布", + "风险", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-170", + "seg": [ + [ + [] + ], + [ + [ + "流动", + "技术", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第二步:反馈的技术实践": { + "children": [ + { + "分析遥测数据以更好地预测故障和实现目标": { + "children": [ + { + "异常状态的处理和告警": { + "data": { + "uuid": "云原生-5-1307", + "seg": [ + [ + [ + "异常", + "状态" + ], + [ + "告警" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用异常检测技术": { + "data": { + "uuid": "云原生-5-1308", + "seg": [ + [ + [ + "异常", + "检测", + "技术" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-719", + "seg": [ + [ + [ + "分析", + "遥测", + "数据", + "更好", + "预测", + "故障" + ], + [ + "实现目标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用反馈实现安全部署": { + "children": [ + { + "通过遥测使部署更安全": { + "data": { + "uuid": "云原生-5-1309", + "seg": [ + [ + [ + "遥测", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发和运维共同承担值班工作": { + "data": { + "uuid": "云原生-5-1310", + "seg": [ + [ + [ + "开发", + "和运维", + "承担", + "值班", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让开发人员跟踪工作对下游的影响": { + "data": { + "uuid": "云原生-5-1311", + "seg": [ + [ + [ + "开发人员", + "跟踪", + "工作", + "下游", + "影响" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让开发人员自行管理生产服务": { + "data": { + "uuid": "云原生-5-1312", + "seg": [ + [ + [ + "开发人员", + "管理", + "生产", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-720", + "seg": [ + [ + [ + "反馈", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将假设驱动的开发和A/B测试融入日常工作": { + "children": [ + { + "A/B测试简史": { + "data": { + "uuid": "云原生-5-1313", + "seg": [ + [ + [ + "a", + "b", + "简史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在功能测试中集成A/B测试": { + "data": { + "uuid": "云原生-5-1314", + "seg": [ + [ + [ + "功能测试", + "集成", + "a", + "b" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在发布中集成A/B测试": { + "data": { + "uuid": "云原生-5-1315", + "seg": [ + [ + [ + "发布", + "集成", + "a", + "b" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在功能规划中集成A/B测试": { + "data": { + "uuid": "云原生-5-1316", + "seg": [ + [ + [ + "功能", + "规划", + "集成", + "a", + "b" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-721", + "seg": [ + [ + [ + "假设", + "驱动", + "开发" + ], + [ + "a", + "b", + "融入", + "日常", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "建立评审和协作流程以提升当前工作的质量": { + "children": [ + { + "变更审批流程的危险": { + "data": { + "uuid": "云原生-5-1317", + "seg": [ + [ + [ + "变更", + "审批", + "流程", + "危险" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "“过度控制变更”的潜在危险": { + "data": { + "uuid": "云原生-5-1318", + "seg": [ + [ + [ + "过度", + "控制", + "变更", + "潜在", + "危险" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变更的协调和排程": { + "data": { + "uuid": "云原生-5-1319", + "seg": [ + [ + [ + "变更", + "协调" + ], + [ + "排程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "变更的同行评审": { + "data": { + "uuid": "云原生-5-1320", + "seg": [ + [ + [ + "变更", + "同行", + "评审" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "人工测试和变更冻结的潜在危害": { + "data": { + "uuid": "云原生-5-1321", + "seg": [ + [ + [ + "人工" + ], + [ + "变更", + "冻结", + "潜在", + "危害" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用结对编程改进代码变更": { + "data": { + "uuid": "云原生-5-1322", + "seg": [ + [ + [ + "利用", + "结对", + "编程", + "改进", + "变更" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消除官僚流程": { + "data": { + "uuid": "云原生-5-1323", + "seg": [ + [ + [ + "消除", + "官僚", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-722", + "seg": [ + [ + [ + "建立", + "评审" + ], + [ + "协作", + "流程", + "提升", + "当前工作", + "质量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-171", + "seg": [ + [ + [] + ], + [ + [ + "反馈", + "技术", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集成信息安全、变更管理和合规性的技术实践": { + "children": [ + { + "将信息安全融入每个人的日常工作": { + "children": [ + { + "将安全集成到开发迭代的演示中": { + "data": { + "uuid": "云原生-5-1324", + "seg": [ + [ + [ + "集成", + "开发", + "迭代", + "演示" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将安全集成到缺陷跟踪和事后分析会议中": { + "data": { + "uuid": "云原生-5-1325", + "seg": [ + [ + [ + "集成", + "缺陷", + "跟踪" + ], + [ + "事后", + "分析", + "会议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将预防性安全控制集成到共享源代码库及共享服务中": { + "data": { + "uuid": "云原生-5-1326", + "seg": [ + [ + [ + "预防性", + "安全控制", + "集成", + "共享", + "库及", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保证应用程序的安全性": { + "data": { + "uuid": "云原生-5-1327", + "seg": [ + [ + [ + "保证", + "应用程序", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确保软件供应链的安全": { + "data": { + "uuid": "云原生-5-1328", + "seg": [ + [ + [ + "确保", + "软件", + "供应链" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78329845" + ] + } + } + } + } + }, + { + "确保环境的安全": { + "data": { + "uuid": "云原生-5-1329", + "seg": [ + [ + [ + "确保", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将信息安全集成到生产环境遥测中": { + "data": { + "uuid": "云原生-5-1330", + "seg": [ + [ + [ + "信息安全", + "集成", + "生产", + "环境", + "遥测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在应用程序中建立安全遥测系统": { + "data": { + "uuid": "云原生-5-1331", + "seg": [ + [ + [ + "应用程序", + "建立", + "遥测", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在环境中建立安全遥测系统": { + "data": { + "uuid": "云原生-5-1332", + "seg": [ + [ + [ + "环境", + "建立", + "遥测", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保护部署流水线": { + "data": { + "uuid": "云原生-5-1333", + "seg": [ + [ + [ + "保护", + "部署", + "流水线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-723", + "seg": [ + [ + [ + "信息安全", + "融入", + "日常", + "工作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保护部署流水线": { + "children": [ + { + "将安全和合规性集成到变更批准流程中": { + "data": { + "uuid": "云原生-5-1334", + "seg": [ + [ + [], + [ + "合规性", + "集成", + "变更", + "批准", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将大量低风险变更重新归类为标准变更": { + "data": { + "uuid": "云原生-5-1335", + "seg": [ + [ + [ + "低", + "风险", + "变更", + "归类", + "标准" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何处理常规变更": { + "data": { + "uuid": "云原生-5-1336", + "seg": [ + [ + [ + "常规", + "变更" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "减少对职责分离的依赖": { + "data": { + "uuid": "云原生-5-1337", + "seg": [ + [ + [ + "减少", + "职责", + "分离", + "依赖" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确保为审计人员和合规人员留存文档和证据": { + "data": { + "uuid": "云原生-5-1338", + "seg": [ + [ + [ + "确保", + "审计", + "人员" + ], + [ + "合规", + "人员", + "留存", + "文档" + ], + [ + "证据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-724", + "seg": [ + [ + [ + "保护", + "部署", + "流水线" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-172", + "seg": [ + [ + [ + "集成", + "信息安全" + ], + [ + "变更", + "管理" + ], + [ + "合规性", + "技术", + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Shell脚本在DevOps下的应用": { + "children": [ + { + "Shell编程基础": { + "children": [ + { + "Shell脚本的基本元素": { + "data": { + "uuid": "云原生-5-1339", + "seg": [ + [ + [ + "shell", + "脚本", + "元素" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111447870", + "103766987", + "117526745", + "86499561", + "87641476", + "115500098" + ] + } + } + } + } + }, + { + "Shell基础正则表达式": { + "data": { + "uuid": "云原生-5-1340", + "seg": [ + [ + [ + "shell", + "基础", + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115553613", + "52818204" + ] + } + } + } + } + }, + { + "Shell特殊字符": { + "data": { + "uuid": "云原生-5-1341", + "seg": [ + [ + [ + "shell", + "特殊字符" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88684567", + "44945799", + "88826822", + "90901875", + "86718580", + "95560439", + "104645072", + "107080993", + "115274189", + "108752592" + ] + } + } + } + } + }, + { + "变量和运算符": { + "data": { + "uuid": "云原生-5-1342", + "seg": [ + [ + [ + "变量" + ], + [ + "运算符" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-725", + "seg": [ + [ + [ + "shell", + "编程", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Shell中的控制流结构": { + "data": { + "uuid": "云原生-4-726", + "seg": [ + [ + [ + "shell", + "控制流", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sed的基础用法及实用举例": { + "children": [ + { + "sed的基础语法格式": { + "data": { + "uuid": "云原生-5-1343", + "seg": [ + [ + [ + "sed", + "基础", + "语法", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sed的用法举例说明": { + "data": { + "uuid": "云原生-5-1344", + "seg": [ + [ + [ + "sed", + "用法", + "举例说明" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "71196410", + "76209094" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-727", + "seg": [ + [ + [ + "sed", + "基础", + "用法" + ], + [ + "实用", + "举例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "awk的基础用法及实用案例": { + "data": { + "uuid": "云原生-4-728", + "seg": [ + [ + [ + "awk", + "基础", + "用法" + ], + [ + "实用", + "案例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Shell应用于DevOps开发中应掌握的系统知识点": { + "data": { + "uuid": "云原生-4-729", + "seg": [ + [ + [ + "shell", + "devops", + "开发", + "应", + "系统", + "知识点" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88700896", + "108654602", + "115388168", + "115118538" + ] + } + } + } + } + }, + { + "生产环境下的Shell脚本": { + "children": [ + { + "生产环境下的备份类脚本": { + "data": { + "uuid": "云原生-5-1345", + "seg": [ + [ + [ + "生产", + "环境", + "备份", + "类", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生产环境下的统计类脚本": { + "data": { + "uuid": "云原生-5-1346", + "seg": [ + [ + [ + "生产", + "环境", + "统计", + "类", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生产环境下的监控类脚本": { + "data": { + "uuid": "云原生-5-1347", + "seg": [ + [ + [ + "生产", + "环境", + "监控", + "类", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "生产环境下的运维开发类脚本": { + "data": { + "uuid": "云原生-5-1348", + "seg": [ + [ + [ + "生产", + "环境", + "运维", + "开发", + "类", + "脚本" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "42526755" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-730", + "seg": [ + [ + [ + "生产", + "环境", + "shell", + "脚本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-173", + "seg": [ + [ + [ + "shell", + "脚本", + "devops" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python在DevOps与自动化运维中的应用": { + "children": [ + { + "Python语言的应用领域": { + "data": { + "uuid": "云原生-4-731", + "seg": [ + [ + [ + "python", + "语言", + "应用领域" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "选择Python的原因": { + "data": { + "uuid": "云原生-4-732", + "seg": [ + [ + [ + "选择", + "python", + "原因" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python的版本说明": { + "data": { + "uuid": "云原生-4-733", + "seg": [ + [ + [ + "python", + "版本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python基础学习工具": { + "children": [ + { + "Python(x,y)简单介绍": { + "data": { + "uuid": "云原生-5-1349", + "seg": [ + [ + [ + "python", + "x", + "y", + "介绍" + ] + ] + ], + "level": "3", + "related_data": { + "blog": { + "data_id": [ + "52020691", + "87927202", + "91533728", + "100958888", + "95570963", + "109145903", + "94362181", + "115431200", + "80242460", + "84863545" + ] + } + } + } + } + }, + { + "IPython详细介绍": { + "data": { + "uuid": "云原生-5-1350", + "seg": [ + [ + [ + "ipython", + "详细", + "介绍" + ] + ] + ], + "level": "3", + "related_data": { + "blog": { + "data_id": [ + "84144453", + "83692496" + ] + } + } + } + } + }, + { + "Sublime Text3简单介绍": { + "data": { + "uuid": "云原生-5-1351", + "seg": [ + [ + [ + "sublime", + "text3", + "介绍" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-734", + "seg": [ + [ + [ + "python", + "基础", + "学习", + "工具" + ] + ] + ], + "level": "3", + "related_data": {} + } + } + }, + { + "Python基础知识进阶": { + "children": [ + { + "正则表达式应用": { + "data": { + "uuid": "云原生-5-1352", + "seg": [ + [ + [ + "正则表达式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python程序构成": { + "data": { + "uuid": "云原生-5-1353", + "seg": [ + [ + [ + "python", + "程序" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "110499434", + "110516671", + "83187698", + "53152326", + "113333596", + "113186352" + ] + } + } + } + } + }, + { + "使用Python解析JSON": { + "data": { + "uuid": "云原生-5-1354", + "seg": [ + [ + [ + "python", + "解析", + "json" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "107066454", + "85211951" + ] + } + } + } + } + }, + { + "Python异常处理与程序调试": { + "data": { + "uuid": "云原生-5-1355", + "seg": [ + [ + [ + "python", + "异常" + ], + [ + "程序调试" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89386078" + ] + } + } + } + } + }, + { + "Python函数": { + "data": { + "uuid": "云原生-5-1356", + "seg": [ + [ + [ + "python", + "函数" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78691195", + "109033156", + "20961959", + "72775865", + "72590620", + "109697047", + "112165992" + ] + } + } + } + } + }, + { + "Python面向对象": { + "data": { + "uuid": "云原生-5-1357", + "seg": [ + [ + [ + "python", + "面向对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python多进程": { + "data": { + "uuid": "云原生-5-1358", + "seg": [ + [ + [ + "python", + "进程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python多线程": { + "data": { + "uuid": "云原生-5-1359", + "seg": [ + [ + [ + "python", + "多线程" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "7218611", + "114024849", + "115425682" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-735", + "seg": [ + [ + [ + "python", + "基础知识", + "进阶" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Python经常用到的第三方类库": { + "data": { + "uuid": "云原生-4-736", + "seg": [ + [ + [ + "python", + "用到", + "类库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用Flask设计后端Restful API": { + "data": { + "uuid": "云原生-4-737", + "seg": [ + [ + [ + "利用", + "flask", + "设计", + "后端", + "restful", + "api" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78313120" + ] + } + } + } + } + }, + { + "工作中的Python脚本分享": { + "data": { + "uuid": "云原生-4-738", + "seg": [ + [ + [ + "工作", + "python", + "脚本", + "分享" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-174", + "seg": [ + [ + [ + "python", + "devops" + ], + [ + "自动化", + "运维" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Vagrant在DevOps环境中的应用": { + "children": [ + { + "Vagrant简单介绍": { + "data": { + "uuid": "云原生-4-739", + "seg": [ + [ + [ + "vagrant", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Vagrant安装": { + "data": { + "uuid": "云原生-4-740", + "seg": [ + [ + [ + "vagrant", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Vagrant配置本地开发环境": { + "children": [ + { + "Vagrant的具体安装步骤": { + "data": { + "uuid": "云原生-5-1360", + "seg": [ + [ + [ + "vagrant", + "安装", + "步骤" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103292789", + "94393359", + "91049520", + "50013867", + "50898750", + "83897608", + "112882208", + "52866009", + "52963529", + "102571865" + ] + } + } + } + } + }, + { + "Vagrant配置文件详解": { + "data": { + "uuid": "云原生-5-1361", + "seg": [ + [ + [ + "vagrant", + "配置文件", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51089774", + "75098195" + ] + } + } + } + } + }, + { + "Vagrant常用命令详解": { + "data": { + "uuid": "云原生-5-1362", + "seg": [ + [ + [ + "vagrant", + "常用命令", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50673756", + "49385635", + "50503855", + "51591593", + "114478386", + "50849954", + "48772461", + "78470271", + "81517216", + "51911401" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-741", + "seg": [ + [ + [ + "vagrant", + "配置", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用Vagrant搭建DevOps开发环境": { + "data": { + "uuid": "云原生-4-742", + "seg": [ + [ + [ + "vagrant", + "搭建", + "devops", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "84906818", + "111569286", + "104237274", + "66475686", + "102810532", + "104235143", + "109963559", + "117021632", + "110212844", + "102810541" + ] + } + } + } + } + }, + { + "使用Vagrant搭建分布式环境": { + "data": { + "uuid": "云原生-4-743", + "seg": [ + [ + [ + "vagrant", + "搭建", + "分布式", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-175", + "seg": [ + [ + [ + "vagrant", + "devops", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化部署管理工具Ansible": { + "children": [ + { + "YAML介绍": { + "data": { + "uuid": "云原生-4-744", + "seg": [ + [ + [ + "yaml", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ansible的安装和配置": { + "data": { + "uuid": "云原生-4-745", + "seg": [ + [ + [ + "ansible", + "安装" + ], + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "定义主机与组规则(Inventory)": { + "data": { + "uuid": "云原生-4-746", + "seg": [ + [ + [ + "定义", + "主机" + ], + [ + "组", + "规则", + "inventory" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ansible常用模块介绍": { + "data": { + "uuid": "云原生-4-747", + "seg": [ + [ + [ + "ansible", + "模块", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "45507567", + "45013389", + "46316295", + "44925401", + "45080415" + ] + } + } + } + } + }, + { + "playbook介绍": { + "data": { + "uuid": "云原生-4-748", + "seg": [ + [ + [ + "playbook", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ansible在AWS云平台中的应用": { + "data": { + "uuid": "云原生-4-749", + "seg": [ + [ + [ + "ansible", + "aws", + "云", + "平台" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108921449", + "108920551", + "88944460" + ] + } + } + } + } + }, + { + "角色": { + "data": { + "uuid": "云原生-4-750", + "seg": [ + [ + [ + "角色" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Jinja2过滤器": { + "data": { + "uuid": "云原生-4-751", + "seg": [ + [ + [ + "jinja2", + "过滤器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ansible速度优化": { + "data": { + "uuid": "云原生-4-752", + "seg": [ + [ + [ + "ansible", + "速度", + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用Ansible API提供自动化运维后端": { + "children": [ + { + "runner API": { + "data": { + "uuid": "云原生-5-1363", + "seg": [ + [ + [ + "runner", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "playbook API": { + "data": { + "uuid": "云原生-5-1364", + "seg": [ + [ + [ + "playbook", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用Flask封装Ansible提供自动化运维后端": { + "data": { + "uuid": "云原生-5-1365", + "seg": [ + [ + [ + "flask", + "封装", + "ansible", + "提供", + "自动化", + "运维", + "后端" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114928957", + "104826245", + "44901509", + "79400801", + "112646599", + "83791130", + "53558598", + "115466721", + "95320106", + "102156911" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-753", + "seg": [ + [ + [ + "利用", + "ansible", + "api", + "提供", + "自动化", + "运维", + "后端" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ansible 2.2新增功能": { + "data": { + "uuid": "云原生-4-754", + "seg": [ + [ + [ + "ansible", + "新增", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-176", + "seg": [ + [ + [ + "自动化", + "部署", + "管理工具", + "ansible" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化配置管理工具SaltStack": { + "children": [ + { + "Salt的相关知识点介绍": { + "children": [ + { + "Salt的优势": { + "data": { + "uuid": "云原生-5-1366", + "seg": [ + [ + [ + "salt", + "优势" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt的安装": { + "data": { + "uuid": "云原生-5-1367", + "seg": [ + [ + [ + "salt", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt的工作流程": { + "data": { + "uuid": "云原生-5-1368", + "seg": [ + [ + [ + "salt", + "工作", + "流程" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114527428" + ] + } + } + } + } + }, + { + "Salt配置文件详解": { + "data": { + "uuid": "云原生-5-1369", + "seg": [ + [ + [ + "salt", + "配置文件", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt的命令格式": { + "data": { + "uuid": "云原生-5-1370", + "seg": [ + [ + [ + "salt", + "命令", + "格式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113825539" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-755", + "seg": [ + [ + [ + "salt", + "相关", + "知识点", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt的常用组件": { + "children": [ + { + "Salt常用的操作目标": { + "data": { + "uuid": "云原生-5-1371", + "seg": [ + [ + [ + "salt", + "操作", + "目标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt常用模块": { + "data": { + "uuid": "云原生-5-1372", + "seg": [ + [ + [ + "salt", + "模块" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "68953784" + ] + } + } + } + } + }, + { + "Granis组件": { + "data": { + "uuid": "云原生-5-1373", + "seg": [ + [ + [ + "granis", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "pillar组件": { + "data": { + "uuid": "云原生-5-1374", + "seg": [ + [ + [ + "pillar", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "job管理": { + "data": { + "uuid": "云原生-5-1375", + "seg": [ + [ + [ + "job", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "State介绍": { + "data": { + "uuid": "云原生-5-1376", + "seg": [ + [ + [ + "state", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-756", + "seg": [ + [ + [ + "salt", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt真实案例分享": { + "children": [ + { + "base环境配置": { + "data": { + "uuid": "云原生-5-1377", + "seg": [ + [ + [ + "base", + "环境", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "prod环境配置": { + "data": { + "uuid": "云原生-5-1378", + "seg": [ + [ + [ + "prod", + "环境", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-757", + "seg": [ + [ + [ + "salt", + "真实", + "案例", + "分享" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt多Master搭建": { + "data": { + "uuid": "云原生-4-758", + "seg": [ + [ + [ + "salt", + "master", + "搭建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Salt API介绍": { + "children": [ + { + "Python API介绍": { + "data": { + "uuid": "云原生-5-1379", + "seg": [ + [ + [ + "python", + "api", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "81115996", + "82285909", + "83035157", + "51560312", + "95090702" + ] + } + } + } + } + }, + { + "Restful API介绍": { + "data": { + "uuid": "云原生-5-1380", + "seg": [ + [ + [ + "restful", + "api", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103480842" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-759", + "seg": [ + [ + [ + "salt", + "api", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-177", + "seg": [ + [ + [ + "自动化", + "配置管理", + "工具", + "saltstack" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker和Jenkins在DevOps中的应用": { + "children": [ + { + "Docker的基础安装": { + "data": { + "uuid": "云原生-4-760", + "seg": [ + [ + [ + "docker", + "基础", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker的三大核心概念": { + "data": { + "uuid": "云原生-4-761", + "seg": [ + [ + [ + "docker", + "核心", + "概念" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker的基本架构": { + "data": { + "uuid": "云原生-4-762", + "seg": [ + [ + [ + "docker", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker网络实现原理": { + "data": { + "uuid": "云原生-4-763", + "seg": [ + [ + [ + "docker", + "网络", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用Dockerfile文件技巧打包Docker镜像": { + "data": { + "uuid": "云原生-4-764", + "seg": [ + [ + [ + "利用", + "dockerfile", + "文件", + "技巧", + "打包", + "docker", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用Docker-Compose编排和管理多容器": { + "children": [ + { + "Docker-Compose的基本语法": { + "data": { + "uuid": "云原生-5-1381", + "seg": [ + [ + [ + "docker", + "compose", + "语法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker-Compose常用命令": { + "data": { + "uuid": "云原生-5-1382", + "seg": [ + [ + [ + "docker", + "compose", + "常用命令" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80877643", + "88362801", + "79098302", + "86480522", + "79492866", + "110563169", + "79427878", + "118257013", + "117388594", + "118342907" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-765", + "seg": [ + [ + [ + "利用", + "docker", + "compose", + "编排" + ], + [ + "管理", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用Docker搭建Jenkins Master/Slave分布式环境": { + "children": [ + { + "Jenkins Master/Slave的详细部署过程": { + "data": { + "uuid": "云原生-5-1383", + "seg": [ + [ + [ + "jenkins", + "master", + "slave", + "详细", + "部署", + "过程" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "101289835", + "103629487", + "75160435", + "77768892", + "88717234", + "107877150", + "111975740", + "117692609", + "97692330", + "117288410" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-766", + "seg": [ + [ + [ + "利用", + "docker", + "搭建", + "jenkins", + "master", + "slave", + "分布式", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-178", + "seg": [ + [ + [ + "docker" + ], + [ + "jenkins", + "devops" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-6", + "seg": [ + [ + [ + "devops" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "中间件": { + "children": [ + { + "缓存": { + "children": [ + { + "etcd": { + "data": { + "uuid": "云原生-4-767", + "seg": [ + [ + [ + "etcd" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103438548" + ] + } + } + } + } + }, + { + "Redis": { + "data": { + "uuid": "云原生-4-768", + "seg": [ + [ + [ + "redis" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-179", + "seg": [ + [ + [ + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务与配置中心": { + "children": [ + { + "Nacos": { + "data": { + "uuid": "云原生-4-769", + "seg": [ + [ + [ + "nacos" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "97240935", + "94732523", + "96429383", + "103593878", + "86702961", + "102564603", + "111308891", + "96706593", + "88146854", + "108819253" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-180", + "seg": [ + [ + [ + "微", + "服务" + ], + [ + "配置", + "中心" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储": { + "children": [ + { + "S3标准": { + "data": { + "uuid": "云原生-4-770", + "seg": [ + [ + [ + "s3", + "标准" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "MinIO": { + "data": { + "uuid": "云原生-4-771", + "seg": [ + [ + [ + "minio" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109451878", + "109450407", + "109461091", + "109455360", + "109457558" + ] + } + } + } + } + }, + { + "Harbor": { + "data": { + "uuid": "云原生-4-772", + "seg": [ + [ + [ + "harbor" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-181", + "seg": [ + [ + [ + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-7", + "seg": [ + [ + [ + "中间件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "data": { + "uuid": "云原生-2-8", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-1", + "seg": [ + [ + [ + "云", + "原生", + "初阶", + "平台", + "开发" + ] + ] + ], + "related_data": {} + } + } + }, + { + "云原生中阶-应用开发": { + "children": [ + { + "Serverless": { + "children": [ + { + "App Serverless": { + "children": [ + { + "Knative": { + "data": { + "uuid": "云原生-4-773", + "seg": [ + [ + [ + "knative" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-182", + "seg": [ + [ + [ + "app", + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-9", + "seg": [ + [ + [ + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Microservices微服务": { + "children": [ + { + "Dapr": { + "data": { + "uuid": "云原生-3-183", + "seg": [ + [ + [ + "dapr" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-10", + "seg": [ + [ + [ + "microservices", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "data": { + "uuid": "云原生-2-11", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-2", + "seg": [ + [ + [ + "云", + "原生", + "中阶", + "开发" + ] + ] + ], + "related_data": {} + } + } + }, + { + "云原生中阶-平台开发": { + "children": [ + { + "Kubernetes": { + "children": [ + { + "边缘计算": { + "children": [ + { + "OpenYurt": { + "data": { + "uuid": "云原生-4-774", + "seg": [ + [ + [ + "openyurt" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "KubeEdge": { + "data": { + "uuid": "云原生-4-775", + "seg": [ + [ + [ + "kubeedge" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113369747" + ] + } + } + } + } + }, + { + "Akri": { + "data": { + "uuid": "云原生-4-776", + "seg": [ + [ + [ + "akri" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-184", + "seg": [ + [ + [ + "边缘", + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群联邦": { + "children": [ + { + "Federation": { + "data": { + "uuid": "云原生-4-777", + "seg": [ + [ + [ + "federation" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-185", + "seg": [ + [ + [ + "集群", + "联邦" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发行版": { + "children": [ + { + "EKS-D": { + "data": { + "uuid": "云原生-4-778", + "seg": [ + [ + [ + "eks", + "d" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Harvester": { + "data": { + "uuid": "云原生-4-779", + "seg": [ + [ + [ + "harvester" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenShift": { + "data": { + "uuid": "云原生-4-780", + "seg": [ + [ + [ + "opensh", + "if", + "t" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "116036307", + "50198791", + "114005834", + "7016185" + ] + } + } + } + } + }, + { + "k0s": { + "data": { + "uuid": "云原生-4-781", + "seg": [ + [ + [ + "k0s" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Wayne": { + "data": { + "uuid": "云原生-4-782", + "seg": [ + [ + [ + "wayne" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-186", + "seg": [ + [ + [ + "发行版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes系统基础": { + "children": [ + { + "容器技术概述": { + "children": [ + { + "容器技术的功用": { + "data": { + "uuid": "云原生-5-1384", + "seg": [ + [ + [ + "容器", + "技术", + "功用" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "70054393", + "80940692", + "109115256", + "78772657", + "53839237", + "81130153", + "89191023", + "89226780", + "112272814", + "109471076" + ] + } + } + } + } + }, + { + "容器简史": { + "data": { + "uuid": "云原生-5-1385", + "seg": [ + [ + [ + "容器", + "简史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker的功能限制": { + "data": { + "uuid": "云原生-5-1386", + "seg": [ + [ + [ + "docker", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-783", + "seg": [ + [ + [ + "容器", + "技术", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes概述": { + "children": [ + { + "Kubernetes简史": { + "data": { + "uuid": "云原生-5-1387", + "seg": [ + [ + [ + "kubernetes", + "简史" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes特性": { + "data": { + "uuid": "云原生-5-1388", + "seg": [ + [ + [ + "kubernetes", + "特性" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "75935700" + ] + } + } + } + } + }, + { + "Kubernetes概念和术语": { + "data": { + "uuid": "云原生-5-1389", + "seg": [ + [ + [ + "kubernetes", + "概念" + ], + [ + "术语" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109015382", + "101290820", + "108192915", + "109335261", + "108643556" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-784", + "seg": [ + [ + [ + "kubernetes", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes集群组件": { + "children": [ + { + "Master组件": { + "data": { + "uuid": "云原生-5-1390", + "seg": [ + [ + [ + "master", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "54233781" + ] + } + } + } + } + }, + { + "Node组件": { + "data": { + "uuid": "云原生-5-1391", + "seg": [ + [ + [ + "node", + "组件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78891733", + "99764230" + ] + } + } + } + } + }, + { + "核心附件": { + "data": { + "uuid": "云原生-5-1392", + "seg": [ + [ + [ + "核心", + "附件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-785", + "seg": [ + [ + [ + "kubernetes", + "集群", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes网络模型基础": { + "children": [ + { + "网络模型概述": { + "data": { + "uuid": "云原生-5-1393", + "seg": [ + [ + [ + "网络", + "模型", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "集群上的网络通信": { + "data": { + "uuid": "云原生-5-1394", + "seg": [ + [ + [ + "集群", + "网络通信" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-786", + "seg": [ + [ + [ + "kubernetes", + "网络", + "模型", + "基础" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-187", + "seg": [ + [ + [ + "kubernetes", + "系统", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes快速入门": { + "children": [ + { + "Kubernetes的核心对象": { + "children": [ + { + "Pod资源对象": { + "data": { + "uuid": "云原生-5-1395", + "seg": [ + [ + [ + "pod", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Controller": { + "data": { + "uuid": "云原生-5-1396", + "seg": [ + [ + [ + "controller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service": { + "data": { + "uuid": "云原生-5-1397", + "seg": [ + [ + [ + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署应用程序的主体过程": { + "data": { + "uuid": "云原生-5-1398", + "seg": [ + [ + [ + "部署", + "应用程序", + "主体", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-787", + "seg": [ + [ + [ + "kubernetes", + "核心", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Kubernetes集群": { + "children": [ + { + "kubeadm部署工具": { + "data": { + "uuid": "云原生-5-1399", + "seg": [ + [ + [ + "kubeadm", + "部署", + "工具" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "83150473", + "79399359", + "112093540", + "84990318", + "80602724", + "103888459" + ] + } + } + } + } + }, + { + "集群运行模式": { + "data": { + "uuid": "云原生-5-1400", + "seg": [ + [ + [ + "集群", + "运行", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80035470" + ] + } + } + } + } + }, + { + "准备用于实践操作的集群环境": { + "data": { + "uuid": "云原生-5-1401", + "seg": [ + [ + [ + "用于", + "实践", + "操作", + "集群", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "获取集群环境相关的信息": { + "data": { + "uuid": "云原生-5-1402", + "seg": [ + [ + [ + "获取", + "集群", + "环境", + "相关", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-788", + "seg": [ + [ + [ + "部署", + "kubernetes", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl使用基础与示例": { + "data": { + "uuid": "云原生-4-789", + "seg": [ + [ + [ + "kubectl", + "基础" + ], + [ + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命令式容器应用编排": { + "children": [ + { + "部署应用(Pod)": { + "data": { + "uuid": "云原生-5-1403", + "seg": [ + [ + [ + "部署", + "pod" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "探查Pod及应用详情": { + "data": { + "uuid": "云原生-5-1404", + "seg": [ + [ + [ + "探查", + "pod" + ], + [ + "详情" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Service对象": { + "data": { + "uuid": "云原生-5-1405", + "seg": [ + [ + [ + "部署", + "service", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "扩容和缩容": { + "data": { + "uuid": "云原生-5-1406", + "seg": [ + [ + [ + "扩容" + ], + [ + "缩容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修改及删除对象": { + "data": { + "uuid": "云原生-5-1407", + "seg": [ + [ + [ + "修改" + ], + [ + "删除", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-790", + "seg": [ + [ + [ + "命令式", + "容器", + "编排" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-188", + "seg": [ + [ + [ + "kubernetes", + "快速", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源管理基础": { + "children": [ + { + "资源对象及API群组": { + "children": [ + { + "Kubernetes的资源对象": { + "data": { + "uuid": "云原生-5-1408", + "seg": [ + [ + [ + "kubernetes", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源及其在API中的组织形式": { + "data": { + "uuid": "云原生-5-1409", + "seg": [ + [ + [ + "资源", + "api", + "组织", + "形式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "访问Kubernetes REST API": { + "data": { + "uuid": "云原生-5-1410", + "seg": [ + [ + [ + "访问", + "kubernetes", + "rest", + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-791", + "seg": [ + [ + [ + "资源", + "对象" + ], + [ + "api", + "群组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象类资源格式": { + "children": [ + { + "资源配置清单": { + "data": { + "uuid": "云原生-5-1411", + "seg": [ + [ + [ + "资源配置", + "清单" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "metadata嵌套字段": { + "data": { + "uuid": "云原生-5-1412", + "seg": [ + [ + [ + "metadata", + "嵌套", + "字", + "段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "spec和status字段": { + "data": { + "uuid": "云原生-5-1413", + "seg": [ + [ + [ + "spec" + ], + [ + "status", + "字段" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80538510" + ] + } + } + } + } + }, + { + "资源配置清单格式文档": { + "data": { + "uuid": "云原生-5-1414", + "seg": [ + [ + [ + "资源配置", + "清单", + "格式", + "文档" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "77914997" + ] + } + } + } + } + }, + { + "资源对象管理方式": { + "data": { + "uuid": "云原生-5-1415", + "seg": [ + [ + [ + "资源", + "对象", + "管理", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-792", + "seg": [ + [ + [ + "对象", + "类", + "资源", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl命令与资源管理": { + "children": [ + { + "资源管理操作概述": { + "data": { + "uuid": "云原生-5-1416", + "seg": [ + [ + [ + "资源管理", + "操作", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl的基本用法": { + "data": { + "uuid": "云原生-5-1417", + "seg": [ + [ + [ + "kubectl", + "用法" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-793", + "seg": [ + [ + [ + "kubectl", + "命令" + ], + [ + "资源管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理名称空间资源": { + "children": [ + { + "查看名称空间及其资源对象": { + "data": { + "uuid": "云原生-5-1418", + "seg": [ + [ + [ + "查看", + "名称", + "空间", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理Namespace资源": { + "data": { + "uuid": "云原生-5-1419", + "seg": [ + [ + [ + "管理", + "namespace", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-794", + "seg": [ + [ + [ + "管理", + "名称", + "空间", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod资源的基础管理操作": { + "children": [ + { + "陈述式对象配置管理方式": { + "data": { + "uuid": "云原生-5-1420", + "seg": [ + [ + [ + "陈述", + "对象", + "配置管理", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "声明式对象配置管理方式": { + "data": { + "uuid": "云原生-5-1421", + "seg": [ + [ + [ + "声明", + "对象", + "配置管理", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-795", + "seg": [ + [ + [ + "pod", + "资源", + "基础", + "管理", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-189", + "seg": [ + [ + [ + "资源管理", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理Pod资源对象": { + "children": [ + { + "管理Pod对象的容器": { + "children": [ + { + "镜像及其获取策略": { + "data": { + "uuid": "云原生-5-1422", + "seg": [ + [ + [ + "镜像", + "获取", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "暴露端口": { + "data": { + "uuid": "云原生-5-1423", + "seg": [ + [ + [ + "暴露", + "端口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义运行的容器化应用": { + "data": { + "uuid": "云原生-5-1424", + "seg": [ + [ + [ + "自定义", + "运行", + "容器", + "化" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82024352" + ] + } + } + } + } + }, + { + "环境变量": { + "data": { + "uuid": "云原生-5-1425", + "seg": [ + [ + [ + "环境变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "共享节点的网络名称空间": { + "data": { + "uuid": "云原生-5-1426", + "seg": [ + [ + [ + "共享", + "节点", + "网络", + "名称", + "空间" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "设置Pod对象的安全上下文": { + "data": { + "uuid": "云原生-5-1427", + "seg": [ + [ + [ + "设置", + "pod", + "对象", + "上下文" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "51052029", + "9500219" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-796", + "seg": [ + [ + [ + "管理", + "pod", + "对象", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标签与标签选择器": { + "children": [ + { + "标签概述": { + "data": { + "uuid": "云原生-5-1428", + "seg": [ + [ + [ + "标签", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "42213085" + ] + } + } + } + } + }, + { + "管理资源标签": { + "data": { + "uuid": "云原生-5-1429", + "seg": [ + [ + [ + "管理", + "资源", + "标签" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标签选择器": { + "data": { + "uuid": "云原生-5-1430", + "seg": [ + [ + [ + "标签", + "选择器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod节点选择器nodeSelector": { + "data": { + "uuid": "云原生-5-1431", + "seg": [ + [ + [ + "pod", + "节点", + "选择器", + "nodeselector" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-797", + "seg": [ + [ + [ + "标签" + ], + [ + "标签", + "选择器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源注解": { + "children": [ + { + "查看资源注解": { + "data": { + "uuid": "云原生-5-1432", + "seg": [ + [ + [ + "查看", + "资源", + "注解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90728637" + ] + } + } + } + } + }, + { + "管理资源注解": { + "data": { + "uuid": "云原生-5-1433", + "seg": [ + [ + [ + "管理", + "资源", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-798", + "seg": [ + [ + [ + "资源", + "注解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod对象的生命周期": { + "children": [ + { + "Pod的相位": { + "data": { + "uuid": "云原生-5-1434", + "seg": [ + [ + [ + "pod", + "相位" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod的创建过程": { + "data": { + "uuid": "云原生-5-1435", + "seg": [ + [ + [ + "pod", + "创建", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod生命周期中的重要行为": { + "data": { + "uuid": "云原生-5-1436", + "seg": [ + [ + [ + "pod", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器的重启策略": { + "data": { + "uuid": "云原生-5-1437", + "seg": [ + [ + [ + "容器", + "重启", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod的终止过程": { + "data": { + "uuid": "云原生-5-1438", + "seg": [ + [ + [ + "pod", + "终止", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-799", + "seg": [ + [ + [ + "pod", + "对象", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod存活性探测": { + "children": [ + { + "设置exec探针": { + "data": { + "uuid": "云原生-5-1439", + "seg": [ + [ + [ + "设置", + "exec", + "探针" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "46884605" + ] + } + } + } + } + }, + { + "设置HTTP探针": { + "data": { + "uuid": "云原生-5-1440", + "seg": [ + [ + [ + "设置", + "http", + "探针" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设置TCP探针": { + "data": { + "uuid": "云原生-5-1441", + "seg": [ + [ + [ + "设置", + "tcp", + "探针" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存活性探测行为属性": { + "data": { + "uuid": "云原生-5-1442", + "seg": [ + [ + [ + "存活", + "性", + "探测", + "属性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-800", + "seg": [ + [ + [ + "pod", + "存活", + "性", + "探测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod就绪性探测": { + "data": { + "uuid": "云原生-4-801", + "seg": [ + [ + [ + "pod", + "就绪", + "性", + "探测" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源需求及资源限制": { + "children": [ + { + "资源需求": { + "data": { + "uuid": "云原生-5-1443", + "seg": [ + [ + [ + "资源", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源限制": { + "data": { + "uuid": "云原生-5-1444", + "seg": [ + [ + [ + "资源" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115181682" + ] + } + } + } + } + }, + { + "容器的可见资源": { + "data": { + "uuid": "云原生-5-1445", + "seg": [ + [ + [ + "容器", + "资源" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "53728507", + "51731543" + ] + } + } + } + } + }, + { + "Pod的服务质量类别": { + "data": { + "uuid": "云原生-5-1446", + "seg": [ + [ + [ + "pod", + "服务质量", + "类别" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-802", + "seg": [ + [ + [ + "资源", + "需求" + ], + [ + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-190", + "seg": [ + [ + [ + "管理", + "pod", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod控制器": { + "children": [ + { + "关于Pod控制器": { + "children": [ + { + "Pod控制器概述": { + "data": { + "uuid": "云原生-5-1447", + "seg": [ + [ + [ + "pod", + "控制器", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "107767717" + ] + } + } + } + } + }, + { + "控制器与Pod对象": { + "data": { + "uuid": "云原生-5-1448", + "seg": [ + [ + [ + "控制器" + ], + [ + "pod", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod模板资源": { + "data": { + "uuid": "云原生-5-1449", + "seg": [ + [ + [ + "pod", + "模板", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-803", + "seg": [ + [ + [ + "pod", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ReplicaSet控制器": { + "children": [ + { + "ReplicaSet概述": { + "data": { + "uuid": "云原生-5-1450", + "seg": [ + [ + [ + "replicaset", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建ReplicaSet": { + "data": { + "uuid": "云原生-5-1451", + "seg": [ + [ + [ + "创建", + "replicaset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ReplicaSet管控下的Pod对象": { + "data": { + "uuid": "云原生-5-1452", + "seg": [ + [ + [ + "replicaset", + "管控", + "pod", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新ReplicaSet控制器": { + "data": { + "uuid": "云原生-5-1453", + "seg": [ + [ + [ + "更新", + "replicaset", + "控制器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "75244515", + "103748114", + "80156124", + "80287094", + "88313976", + "88781223", + "72354057", + "113697341", + "108701423", + "111596650" + ] + } + } + } + } + }, + { + "删除ReplicaSet控制器资源": { + "data": { + "uuid": "云原生-5-1454", + "seg": [ + [ + [ + "删除", + "replicaset", + "控制器", + "资源" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78501613" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-804", + "seg": [ + [ + [ + "replicaset", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Deployment控制器": { + "children": [ + { + "创建Deployment": { + "data": { + "uuid": "云原生-5-1455", + "seg": [ + [ + [ + "创建", + "deployment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新策略": { + "data": { + "uuid": "云原生-5-1456", + "seg": [ + [ + [ + "更新", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "升级Deployment": { + "data": { + "uuid": "云原生-5-1457", + "seg": [ + [ + [ + "升级", + "deployment" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "金丝雀发布": { + "data": { + "uuid": "云原生-5-1458", + "seg": [ + [ + [ + "金丝雀", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回滚Deployment控制器下的应用发布": { + "data": { + "uuid": "云原生-5-1459", + "seg": [ + [ + [ + "回滚", + "deployment", + "控制器", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-805", + "seg": [ + [ + [ + "deployment", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DaemonSet控制器": { + "children": [ + { + "创建DaemonSet资源对象": { + "data": { + "uuid": "云原生-5-1460", + "seg": [ + [ + [ + "创建", + "daemonset", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "更新DaemonSet对象": { + "data": { + "uuid": "云原生-5-1461", + "seg": [ + [ + [ + "更新", + "daemonset", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-806", + "seg": [ + [ + [ + "daemonset", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Job控制器": { + "children": [ + { + "创建Job对象": { + "data": { + "uuid": "云原生-5-1462", + "seg": [ + [ + [ + "创建", + "job", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "并行式Job": { + "data": { + "uuid": "云原生-5-1463", + "seg": [ + [ + [ + "并行", + "job" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Job扩容": { + "data": { + "uuid": "云原生-5-1464", + "seg": [ + [ + [ + "job", + "扩容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "删除Job": { + "data": { + "uuid": "云原生-5-1465", + "seg": [ + [ + [ + "删除", + "job" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-807", + "seg": [ + [ + [ + "job", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CronJob控制器": { + "children": [ + { + "创建CronJob对象": { + "data": { + "uuid": "云原生-5-1466", + "seg": [ + [ + [ + "创建", + "cronjob", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CronJob的控制机制": { + "data": { + "uuid": "云原生-5-1467", + "seg": [ + [ + [ + "cronjob", + "控制", + "机制" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "112158689", + "105325800", + "105827410", + "108186810", + "103340649", + "51451944", + "79645056", + "72235985", + "78798039", + "50619990" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-808", + "seg": [ + [ + [ + "cronjob", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ReplicationController": { + "data": { + "uuid": "云原生-4-809", + "seg": [ + [ + [ + "replicationcontroller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod中断预算": { + "data": { + "uuid": "云原生-4-810", + "seg": [ + [ + [ + "pod", + "中断", + "预算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-191", + "seg": [ + [ + [ + "pod", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储卷与数据持久化": { + "children": [ + { + "存储卷概述": { + "children": [ + { + "Kubernetes支持的存储卷类型": { + "data": { + "uuid": "云原生-5-1468", + "seg": [ + [ + [ + "kubernetes", + "支持", + "存储", + "类型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储卷的使用方式": { + "data": { + "uuid": "云原生-5-1469", + "seg": [ + [ + [ + "存储", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-811", + "seg": [ + [ + [ + "存储", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "临时存储卷": { + "children": [ + { + "emptyDir存储卷": { + "data": { + "uuid": "云原生-5-1470", + "seg": [ + [ + [ + "emptydir", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gitRepo存储卷": { + "data": { + "uuid": "云原生-5-1471", + "seg": [ + [ + [ + "gitrepo", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-812", + "seg": [ + [ + [ + "临时", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点存储卷hostPath": { + "data": { + "uuid": "云原生-4-813", + "seg": [ + [ + [ + "节点", + "存储", + "hostpath" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络存储卷": { + "children": [ + { + "NFS存储卷": { + "data": { + "uuid": "云原生-5-1472", + "seg": [ + [ + [ + "nfs", + "存储" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117113453" + ] + } + } + } + } + }, + { + "RBD存储卷": { + "data": { + "uuid": "云原生-5-1473", + "seg": [ + [ + [ + "rbd", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GlusterFS存储卷": { + "data": { + "uuid": "云原生-5-1474", + "seg": [ + [ + [ + "glusterfs", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Cinder存储卷": { + "data": { + "uuid": "云原生-5-1475", + "seg": [ + [ + [ + "cinder", + "存储" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109252061" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-814", + "seg": [ + [ + [ + "网络", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持久存储卷": { + "children": [ + { + "创建PV": { + "data": { + "uuid": "云原生-5-1476", + "seg": [ + [ + [ + "创建", + "pv" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建PVC": { + "data": { + "uuid": "云原生-5-1477", + "seg": [ + [ + [ + "创建", + "pvc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在Pod中使用PVC": { + "data": { + "uuid": "云原生-5-1478", + "seg": [ + [ + [ + "pod", + "pvc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储类": { + "data": { + "uuid": "云原生-5-1479", + "seg": [ + [ + [ + "存储", + "类" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PV和PVC的生命周期": { + "data": { + "uuid": "云原生-5-1480", + "seg": [ + [ + [ + "pv" + ], + [ + "pvc", + "生命周期" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-815", + "seg": [ + [ + [ + "持久", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "downwardAPI存储卷": { + "children": [ + { + "环境变量式元数据注入": { + "data": { + "uuid": "云原生-5-1481", + "seg": [ + [ + [ + "环境变量", + "数据", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "存储卷式元数据注入": { + "data": { + "uuid": "云原生-5-1482", + "seg": [ + [ + [ + "存储", + "卷式", + "数据", + "注入" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78770466", + "83784268" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-816", + "seg": [ + [ + [ + "downwardapi", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-192", + "seg": [ + [ + [ + "存储" + ], + [ + "数据", + "持久", + "化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置容器应用:ConfigMap和Secret": { + "children": [ + { + "容器化应用配置方式": { + "data": { + "uuid": "云原生-4-817", + "seg": [ + [ + [ + "容器", + "化", + "配置", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "通过命令行参数配置容器应用": { + "data": { + "uuid": "云原生-4-818", + "seg": [ + [ + [ + "命令行", + "参数", + "配置", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用环境变量配置容器应用": { + "data": { + "uuid": "云原生-4-819", + "seg": [ + [ + [ + "利用", + "环境变量", + "配置", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用程序配置管理及ConfigMap资源": { + "children": [ + { + "创建ConfigMap对象": { + "data": { + "uuid": "云原生-5-1483", + "seg": [ + [ + [ + "创建", + "configmap", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "向Pod环境变量传递ConfigMap对象键值数据": { + "data": { + "uuid": "云原生-5-1484", + "seg": [ + [ + [ + "pod", + "环境变量", + "传递", + "configmap", + "对象", + "键值", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ConfigMap存储卷": { + "data": { + "uuid": "云原生-5-1485", + "seg": [ + [ + [ + "configmap", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器应用重载新配置": { + "data": { + "uuid": "云原生-5-1486", + "seg": [ + [ + [ + "容器", + "重载", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用ConfigMap资源的注意事项": { + "data": { + "uuid": "云原生-5-1487", + "seg": [ + [ + [ + "configmap", + "资源", + "注意事项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-820", + "seg": [ + [ + [ + "应用程序", + "配置管理" + ], + [ + "configmap", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Secret资源": { + "children": [ + { + "Secret概述": { + "data": { + "uuid": "云原生-5-1488", + "seg": [ + [ + [ + "secret", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建Secret资源": { + "data": { + "uuid": "云原生-5-1489", + "seg": [ + [ + [ + "创建", + "secret", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Secret存储卷": { + "data": { + "uuid": "云原生-5-1490", + "seg": [ + [ + [ + "secret", + "存储" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89166807" + ] + } + } + } + } + }, + { + "imagePullSecret资源对象": { + "data": { + "uuid": "云原生-5-1491", + "seg": [ + [ + [ + "imagepullsecret", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-821", + "seg": [ + [ + [ + "secret", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-193", + "seg": [ + [ + [ + "配置", + "容器" + ] + ], + [ + [ + "configmap" + ], + [ + "secret" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet控制器": { + "children": [ + { + "StatefulSet概述": { + "children": [ + { + "Stateful应用和Stateless应用": { + "data": { + "uuid": "云原生-5-1492", + "seg": [ + [ + [ + "stateful" + ], + [ + "stateless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet控制器概述": { + "data": { + "uuid": "云原生-5-1493", + "seg": [ + [ + [ + "statefulset", + "控制器", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet的特性": { + "data": { + "uuid": "云原生-5-1494", + "seg": [ + [ + [ + "statefulset", + "特性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-822", + "seg": [ + [ + [ + "statefulset", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet基础应用": { + "children": [ + { + "创建StatefulSet对象": { + "data": { + "uuid": "云原生-5-1495", + "seg": [ + [ + [ + "创建", + "statefulset", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-823", + "seg": [ + [ + [ + "statefulset", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet资源扩缩容": { + "data": { + "uuid": "云原生-4-824", + "seg": [ + [ + [ + "statefulset", + "资源", + "扩缩", + "容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "StatefulSet资源升级": { + "children": [ + { + "滚动更新": { + "data": { + "uuid": "云原生-5-1496", + "seg": [ + [ + [ + "滚动", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "暂存更新操作": { + "data": { + "uuid": "云原生-5-1497", + "seg": [ + [ + [ + "暂存", + "更新", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "金丝雀部署": { + "data": { + "uuid": "云原生-5-1498", + "seg": [ + [ + [ + "金丝雀", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分段更新": { + "data": { + "uuid": "云原生-5-1499", + "seg": [ + [ + [ + "分段", + "更新" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他话题": { + "data": { + "uuid": "云原生-5-1500", + "seg": [ + [ + [ + "话题" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-825", + "seg": [ + [ + [ + "statefulset", + "资源", + "升级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "案例:etcd集群": { + "children": [ + { + "创建Service资源": { + "data": { + "uuid": "云原生-5-1501", + "seg": [ + [ + [ + "创建", + "service", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "etcd StatefulSet": { + "data": { + "uuid": "云原生-5-1502", + "seg": [ + [ + [ + "etcd", + "statefulset" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "86561476", + "52878639", + "78226061", + "115585041", + "75003868", + "78746768", + "112689123", + "91352029", + "78925694", + "113561889" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-826", + "seg": [ + [ + [ + "案例" + ] + ], + [ + [ + "etcd", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-194", + "seg": [ + [ + [ + "statefulset", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "认证、授权与准入控制": { + "children": [ + { + "访问控制概述": { + "children": [ + { + "用户账户与用户组": { + "data": { + "uuid": "云原生-5-1503", + "seg": [ + [ + [ + "用户", + "账户" + ], + [ + "用户组" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "认证、授权与准入控制基础": { + "data": { + "uuid": "云原生-5-1504", + "seg": [ + [ + [ + "认证" + ], + [ + "授权" + ], + [ + "准入", + "控制", + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80067349" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-827", + "seg": [ + [ + [ + "访问控制", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务账户管理与应用": { + "children": [ + { + "Service Account自动化": { + "data": { + "uuid": "云原生-5-1505", + "seg": [ + [ + [ + "service", + "account", + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "创建服务账户": { + "data": { + "uuid": "云原生-5-1506", + "seg": [ + [ + [ + "创建", + "服务", + "账户" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调用imagePullSecret资源对象": { + "data": { + "uuid": "云原生-5-1507", + "seg": [ + [ + [ + "调用", + "imagepullsecret", + "资源", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-828", + "seg": [ + [ + [ + "服务", + "账户", + "管理" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "X.509数字证书认证": { + "children": [ + { + "Kubernetes中的SSL/TLS认证": { + "data": { + "uuid": "云原生-5-1508", + "seg": [ + [ + [ + "kubernetes", + "ssl", + "tls", + "认证" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80385263" + ] + } + } + } + } + }, + { + "客户端配置文件kubeconfig": { + "data": { + "uuid": "云原生-5-1509", + "seg": [ + [ + [ + "客户端", + "配置文件", + "kubeconfig" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "TLS bootstrapping机制": { + "data": { + "uuid": "云原生-5-1510", + "seg": [ + [ + [ + "tls", + "bootstrapping", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-829", + "seg": [ + [ + [ + "x", + "数字证书", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于角色的访问控制:RBAC": { + "children": [ + { + "RBAC授权插件": { + "data": { + "uuid": "云原生-5-1511", + "seg": [ + [ + [ + "rbac", + "授权", + "插件" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "100773968" + ] + } + } + } + } + }, + { + "Role和RoleBinding": { + "data": { + "uuid": "云原生-5-1512", + "seg": [ + [ + [ + "role" + ], + [ + "rolebinding" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ClusterRole和ClusterRoleBin-ding": { + "data": { + "uuid": "云原生-5-1513", + "seg": [ + [ + [ + "clusterrole" + ], + [ + "clusterrolebin", + "ding" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "聚合型ClusterRole": { + "data": { + "uuid": "云原生-5-1514", + "seg": [ + [ + [ + "聚合", + "clusterrole" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "面向用户的内建ClusterRole": { + "data": { + "uuid": "云原生-5-1515", + "seg": [ + [ + [ + "面向用户", + "建", + "clusterrole" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他的内建ClusterRole和ClusterRoleBinding": { + "data": { + "uuid": "云原生-5-1516", + "seg": [ + [ + [ + "建", + "clusterrole" + ], + [ + "clusterrolebinding" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-830", + "seg": [ + [ + [ + "角色", + "访问控制" + ] + ], + [ + [ + "rbac" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes Dashboard": { + "children": [ + { + "部署HTTPS通信的Dashboard": { + "data": { + "uuid": "云原生-5-1517", + "seg": [ + [ + [ + "部署", + "https", + "通信", + "dashboard" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80966671", + "89314670", + "115321923", + "79679853", + "80136449", + "113403133", + "77285530", + "103902932", + "46581783", + "86638089" + ] + } + } + } + } + }, + { + "配置token认证": { + "data": { + "uuid": "云原生-5-1518", + "seg": [ + [ + [ + "配置", + "token", + "认证" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "95176833" + ] + } + } + } + } + }, + { + "配置kubeconfig认证": { + "data": { + "uuid": "云原生-5-1519", + "seg": [ + [ + [ + "配置", + "kubeconfig", + "认证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-831", + "seg": [ + [ + [ + "kubernetes", + "dashboard" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-195", + "seg": [ + [ + [ + "认证" + ], + [ + "授权" + ], + [ + "准入", + "控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络模型与网络策略": { + "children": [ + { + "Kubernetes网络模型及CNI插件": { + "children": [ + { + "Docker容器的网络模型": { + "data": { + "uuid": "云原生-5-1520", + "seg": [ + [ + [ + "docker", + "容器", + "网络", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Kubernetes网络模型": { + "data": { + "uuid": "云原生-5-1521", + "seg": [ + [ + [ + "kubernetes", + "网络", + "模型" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "109335318" + ] + } + } + } + } + }, + { + "Pod网络的实现方式": { + "data": { + "uuid": "云原生-5-1522", + "seg": [ + [ + [ + "pod", + "网络", + "方式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CNI插件及其常见的实现": { + "data": { + "uuid": "云原生-5-1523", + "seg": [ + [ + [ + "cni", + "插件", + "常见" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-832", + "seg": [ + [ + [ + "kubernetes", + "网络", + "模型" + ], + [ + "cni", + "插件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "flannel网络插件": { + "children": [ + { + "flannel的配置参数": { + "data": { + "uuid": "云原生-5-1524", + "seg": [ + [ + [ + "flannel", + "配置", + "参数" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "51161957" + ] + } + } + } + } + }, + { + "VxLAN后端和direct routing": { + "data": { + "uuid": "云原生-5-1525", + "seg": [ + [ + [ + "vxlan", + "后端" + ], + [ + "direct", + "routing" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "host-gw后端": { + "data": { + "uuid": "云原生-5-1526", + "seg": [ + [ + [ + "host", + "gw", + "后端" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-833", + "seg": [ + [ + [ + "flannel", + "网络", + "插件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络策略": { + "children": [ + { + "网络策略概述": { + "data": { + "uuid": "云原生-5-1527", + "seg": [ + [ + [ + "网络", + "策略", + "概述" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "部署Canal提供网络策略功能": { + "data": { + "uuid": "云原生-5-1528", + "seg": [ + [ + [ + "部署", + "canal", + "提供", + "网络", + "策略", + "功能" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "配置网络策略": { + "data": { + "uuid": "云原生-5-1529", + "seg": [ + [ + [ + "配置", + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "管控入站流量": { + "data": { + "uuid": "云原生-5-1530", + "seg": [ + [ + [ + "管控", + "入", + "站", + "流量" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "管控出站流量": { + "data": { + "uuid": "云原生-5-1531", + "seg": [ + [ + [ + "管控", + "出", + "站", + "流量" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "隔离名称空间": { + "data": { + "uuid": "云原生-5-1532", + "seg": [ + [ + [ + "隔离", + "名称", + "空间" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "网络策略应用案例": { + "data": { + "uuid": "云原生-5-1533", + "seg": [ + [ + [ + "网络", + "策略", + "案例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-834", + "seg": [ + [ + [ + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Calico网络插件": { + "children": [ + { + "Calico工作特性": { + "data": { + "uuid": "云原生-5-1534", + "seg": [ + [ + [ + "calico", + "工作", + "特性" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Calico系统架构": { + "data": { + "uuid": "云原生-5-1535", + "seg": [ + [ + [ + "calico", + "系统", + "架构" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Calico部署要点": { + "data": { + "uuid": "云原生-5-1536", + "seg": [ + [ + [ + "calico", + "部署", + "要点" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "80220601" + ] + } + } + } + } + }, + { + "部署Calico提供网络服务和网络策略": { + "data": { + "uuid": "云原生-5-1537", + "seg": [ + [ + [ + "部署", + "calico", + "提供", + "网络服务" + ], + [ + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "客户端工具calicoctl": { + "data": { + "uuid": "云原生-5-1538", + "seg": [ + [ + [ + "客户端", + "工具", + "calicoctl" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-835", + "seg": [ + [ + [ + "calico", + "网络", + "插件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-196", + "seg": [ + [ + [ + "网络", + "模型" + ], + [ + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Pod资源调度": { + "children": [ + { + "Kubernetes调度器概述": { + "children": [ + { + "常用的预选策略": { + "data": { + "uuid": "云原生-5-1539", + "seg": [ + [ + [ + "预选", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常用的优选函数": { + "data": { + "uuid": "云原生-5-1540", + "seg": [ + [ + [ + "优选", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-836", + "seg": [ + [ + [ + "kubernetes", + "调度", + "器", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点亲和调度": { + "children": [ + { + "节点硬亲和性": { + "data": { + "uuid": "云原生-5-1541", + "seg": [ + [ + [ + "节点", + "硬", + "亲和性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点软亲和性": { + "data": { + "uuid": "云原生-5-1542", + "seg": [ + [ + [ + "节点", + "软", + "亲和性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-837", + "seg": [ + [ + [ + "节点", + "亲" + ], + [ + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod资源亲和调度": { + "children": [ + { + "位置拓扑": { + "data": { + "uuid": "云原生-5-1543", + "seg": [ + [ + [ + "位置", + "拓扑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod硬亲和调度": { + "data": { + "uuid": "云原生-5-1544", + "seg": [ + [ + [ + "pod", + "硬亲" + ], + [ + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod软亲和调度": { + "data": { + "uuid": "云原生-5-1545", + "seg": [ + [ + [ + "pod", + "软亲" + ], + [ + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod反亲和调度": { + "data": { + "uuid": "云原生-5-1546", + "seg": [ + [ + [ + "pod", + "反亲" + ], + [ + "调度" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108868851" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-838", + "seg": [ + [ + [ + "pod", + "资源", + "亲" + ], + [ + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "污点和容忍度": { + "children": [ + { + "定义污点和容忍度": { + "data": { + "uuid": "云原生-5-1547", + "seg": [ + [ + [ + "定义", + "污点" + ], + [ + "容忍度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "管理节点的污点": { + "data": { + "uuid": "云原生-5-1548", + "seg": [ + [ + [ + "管理", + "节点", + "污点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod对象的容忍度": { + "data": { + "uuid": "云原生-5-1549", + "seg": [ + [ + [ + "pod", + "对象", + "容忍度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-839", + "seg": [ + [ + [ + "污点" + ], + [ + "容忍度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod优选级和抢占式调度": { + "data": { + "uuid": "云原生-4-840", + "seg": [ + [ + [ + "pod", + "优选", + "级" + ], + [ + "抢占", + "式调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-197", + "seg": [ + [ + [ + "pod", + "资源", + "调度" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes系统扩展": { + "children": [ + { + "自定义资源类型(CRD)": { + "children": [ + { + "创建CRD对象": { + "data": { + "uuid": "云原生-5-1550", + "seg": [ + [ + [ + "创建", + "crd", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义资源格式验证": { + "data": { + "uuid": "云原生-5-1551", + "seg": [ + [ + [ + "自定义", + "资源", + "格式", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "子资源": { + "data": { + "uuid": "云原生-5-1552", + "seg": [ + [ + [ + "子", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用资源类别": { + "data": { + "uuid": "云原生-5-1553", + "seg": [ + [ + [ + "资源", + "类别" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多版本支持": { + "data": { + "uuid": "云原生-5-1554", + "seg": [ + [ + [ + "版本", + "支持" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义控制器基础": { + "data": { + "uuid": "云原生-5-1555", + "seg": [ + [ + [ + "自定义", + "控制器", + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79585197", + "47333035", + "111187381", + "46385269" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-841", + "seg": [ + [ + [ + "自定义", + "资源类型", + "crd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义API Server": { + "children": [ + { + "自定义API Server概述": { + "data": { + "uuid": "云原生-5-1556", + "seg": [ + [ + [ + "自定义", + "api", + "server", + "概述" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "67652202" + ] + } + } + } + } + }, + { + "APIService对象": { + "data": { + "uuid": "云原生-5-1557", + "seg": [ + [ + [ + "apiservice", + "对象" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-842", + "seg": [ + [ + [ + "自定义", + "api", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes集群高可用": { + "children": [ + { + "etcd高可用": { + "data": { + "uuid": "云原生-5-1558", + "seg": [ + [ + [ + "etcd", + "高", + "可用" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87812739", + "103967985", + "108452512", + "87108882", + "84320945", + "113979741", + "110298506", + "79851235", + "81002436", + "82887607" + ] + } + } + } + } + }, + { + "Controller Manager和Scheduler高可用": { + "data": { + "uuid": "云原生-5-1559", + "seg": [ + [ + [ + "controller", + "manager" + ], + [ + "scheduler", + "高", + "可用" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89925938", + "80228625", + "79412726", + "102783298" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-843", + "seg": [ + [ + [ + "kubernetes", + "集群", + "高", + "可用" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes的部署模式": { + "children": [ + { + "关键组件": { + "data": { + "uuid": "云原生-5-1560", + "seg": [ + [ + [ + "关键", + "组件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "常见的部署模式": { + "data": { + "uuid": "云原生-5-1561", + "seg": [ + [ + [ + "常见", + "部署", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-844", + "seg": [ + [ + [ + "kubernetes", + "部署", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器时代的DevOps概述": { + "children": [ + { + "容器:DevOps协作的基础": { + "children": [ + { + "容器隔离等级": { + "data": { + "uuid": "云原生-6-361", + "seg": [ + [ + [ + "容器", + "隔离", + "等级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器编排": { + "data": { + "uuid": "云原生-6-362", + "seg": [ + [ + [ + "容器", + "编排" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117250024", + "114461596", + "108514019", + "37700085", + "109220565" + ] + } + } + } + } + }, + { + "将镜像存储在可信的注册服务器中": { + "data": { + "uuid": "云原生-6-363", + "seg": [ + [ + [ + "镜像", + "存储", + "可信", + "注册", + "服务器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "充分利用Docker的构建缓存": { + "data": { + "uuid": "云原生-6-364", + "seg": [ + [ + [ + "充分利用", + "docker", + "构建", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不要使用特权模式运行容器": { + "data": { + "uuid": "云原生-6-365", + "seg": [ + [ + [ + "特权", + "模式", + "运行", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用显式的容器镜像标签": { + "data": { + "uuid": "云原生-6-366", + "seg": [ + [ + [ + "显式", + "容器", + "镜像", + "标签" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "保持小的容器镜像": { + "data": { + "uuid": "云原生-6-367", + "seg": [ + [ + [ + "容器", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "单个容器只运行一个应用": { + "data": { + "uuid": "云原生-6-368", + "seg": [ + [ + [ + "单个", + "容器", + "运行" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82085888" + ] + } + } + } + } + }, + { + "使用可信镜像仓库中经过验证的镜像": { + "data": { + "uuid": "云原生-6-369", + "seg": [ + [ + [ + "可信", + "镜像", + "仓库", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对镜像进行漏洞扫描": { + "data": { + "uuid": "云原生-6-370", + "seg": [ + [ + [ + "镜像", + "漏洞", + "扫描" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不要将数据保存在容器中": { + "data": { + "uuid": "云原生-6-371", + "seg": [ + [ + [ + "数据", + "保存", + "容器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "90545115", + "43667785" + ] + } + } + } + } + }, + { + "永远不要在容器中存放密钥和配置": { + "data": { + "uuid": "云原生-6-372", + "seg": [ + [ + [ + "永远", + "容器", + "存放", + "密钥" + ], + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1562", + "seg": [ + [ + [ + "容器" + ] + ], + [ + [ + "devops", + "协作", + "基础" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "62426612", + "89355217" + ] + } + } + } + } + }, + { + "泛型端到端容器应用程序生命周期工作流": { + "data": { + "uuid": "云原生-5-1563", + "seg": [ + [ + [ + "泛", + "端", + "容器", + "应用程序", + "生命周期", + "工作", + "流" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "基于Kubernetes的DevOps": { + "data": { + "uuid": "云原生-5-1564", + "seg": [ + [ + [ + "kubernetes", + "devops" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111613191", + "102810548", + "105881669", + "82191516", + "83109530", + "99374896", + "100014437", + "108746718", + "111071825", + "93138036" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-845", + "seg": [ + [ + [ + "容器", + "时代", + "devops", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-198", + "seg": [ + [ + [ + "kubernetes", + "系统", + "扩展" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源指标及HPA控制器": { + "children": [ + { + "资源监控及资源指标": { + "children": [ + { + "资源监控及Heapster": { + "data": { + "uuid": "云原生-5-1565", + "seg": [ + [ + [ + "资源", + "监控" + ], + [ + "heapster" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "新一代监控架构": { + "data": { + "uuid": "云原生-5-1566", + "seg": [ + [ + [ + "新一代", + "监控", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-846", + "seg": [ + [ + [ + "资源", + "监控" + ], + [ + "资源", + "指标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "资源指标及其应用": { + "children": [ + { + "部署metrics-server": { + "data": { + "uuid": "云原生-5-1567", + "seg": [ + [ + [ + "部署", + "metrics", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "kubectl top命令": { + "data": { + "uuid": "云原生-5-1568", + "seg": [ + [ + [ + "kubectl", + "top", + "命令" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-847", + "seg": [ + [ + [ + "资源", + "指标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义指标与Prometheus": { + "children": [ + { + "Prometheus概述": { + "data": { + "uuid": "云原生-5-1569", + "seg": [ + [ + [ + "prometheus", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署Prometheus监控系统": { + "data": { + "uuid": "云原生-5-1570", + "seg": [ + [ + [ + "部署", + "prometheus", + "监控", + "系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义指标适配器k8s-prometheus-adapter": { + "data": { + "uuid": "云原生-5-1571", + "seg": [ + [ + [ + "自定义", + "指标", + "适配器", + "k8s", + "prometheus", + "adapter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-848", + "seg": [ + [ + [ + "自定义", + "指标" + ], + [ + "prometheus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动弹性缩放": { + "children": [ + { + "HPA概述": { + "data": { + "uuid": "云原生-5-1572", + "seg": [ + [ + [ + "hpa", + "概述" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HPA(v1)控制器": { + "data": { + "uuid": "云原生-5-1573", + "seg": [ + [ + [ + "hpa", + "v1", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HPA(v2)控制器": { + "data": { + "uuid": "云原生-5-1574", + "seg": [ + [ + [ + "hpa", + "v2", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-849", + "seg": [ + [ + [ + "自动", + "弹性", + "缩放" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-199", + "seg": [ + [ + [ + "资源", + "指标" + ], + [ + "hpa", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm程序包管理器": { + "children": [ + { + "Helm基础": { + "children": [ + { + "Helm的核心术语": { + "data": { + "uuid": "云原生-5-1575", + "seg": [ + [ + [ + "helm", + "核心", + "术语" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm架构": { + "data": { + "uuid": "云原生-5-1576", + "seg": [ + [ + [ + "helm", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Helm Client": { + "data": { + "uuid": "云原生-5-1577", + "seg": [ + [ + [ + "安装", + "helm", + "client" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安装Tiller server": { + "data": { + "uuid": "云原生-5-1578", + "seg": [ + [ + [ + "安装", + "tiller", + "server" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm快速入门": { + "data": { + "uuid": "云原生-5-1579", + "seg": [ + [ + [ + "helm", + "快速", + "入门" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-850", + "seg": [ + [ + [ + "helm", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm Charts": { + "children": [ + { + "Charts文件组织结构": { + "data": { + "uuid": "云原生-5-1580", + "seg": [ + [ + [ + "charts", + "文件组织", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Chart.yaml文件组织格式": { + "data": { + "uuid": "云原生-5-1581", + "seg": [ + [ + [ + "chart", + "yaml", + "文件组织", + "格式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Charts中的依赖关系": { + "data": { + "uuid": "云原生-5-1582", + "seg": [ + [ + [ + "charts", + "依赖", + "关系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模板和值": { + "data": { + "uuid": "云原生-5-1583", + "seg": [ + [ + [ + "模板" + ], + [ + "值" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自定义Charts": { + "data": { + "uuid": "云原生-5-1584", + "seg": [ + [ + [ + "自定义", + "charts" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-851", + "seg": [ + [ + [ + "helm", + "charts" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helm实践:部署EFK日志管理系统": { + "children": [ + { + "ElasticSearch集群": { + "data": { + "uuid": "云原生-5-1585", + "seg": [ + [ + [ + "elasticsearch", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志采集代理fluentd": { + "data": { + "uuid": "云原生-5-1586", + "seg": [ + [ + [ + "日志", + "采集", + "代理", + "fluentd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可视化组件Kibana": { + "data": { + "uuid": "云原生-5-1587", + "seg": [ + [ + [ + "可视化", + "组件", + "kibana" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-852", + "seg": [ + [ + [ + "helm", + "实践" + ] + ], + [ + [ + "部署", + "efk", + "日志", + "管理系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-200", + "seg": [ + [ + [ + "helm", + "程序包", + "管理器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "夯实基础:Linux网络虚拟化": { + "children": [ + { + "网络虚拟化基石:network namespace": { + "children": [ + { + "初识network namespace": { + "data": { + "uuid": "云原生-5-1588", + "seg": [ + [ + [ + "初识", + "network", + "namespace" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "配置network namespace": { + "data": { + "uuid": "云原生-5-1589", + "seg": [ + [ + [ + "配置", + "network", + "namespace" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "network namespace API的使用": { + "data": { + "uuid": "云原生-5-1590", + "seg": [ + [ + [ + "network", + "namespace", + "api" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "6648526", + "50573675", + "55002006", + "79612973" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-853", + "seg": [ + [ + [ + "网络", + "虚拟化", + "基石" + ] + ], + [ + [ + "network", + "namespace" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "千呼万唤始出来:veth pair": { + "children": [ + { + "veth pair内核实现": { + "data": { + "uuid": "云原生-5-1591", + "seg": [ + [ + [ + "veth", + "pair", + "内核" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-854", + "seg": [ + [ + [ + "千呼万唤", + "始" + ] + ], + [ + [ + "veth", + "pair" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "连接你我他:Linux bridge": { + "children": [ + { + "Linux bridge初体验": { + "data": { + "uuid": "云原生-5-1592", + "seg": [ + [ + [ + "linux", + "bridge", + "初体验" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "112621416", + "73918672", + "111151061", + "108305396", + "81432063", + "106267225", + "115734043", + "115296987", + "90710480", + "112968490" + ] + } + } + } + } + }, + { + "把IP让给Linux bridge": { + "data": { + "uuid": "云原生-5-1593", + "seg": [ + [ + [ + "ip", + "让给", + "linux", + "bridge" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "36665861", + "27667455", + "51506508", + "88394262", + "113799786", + "117593636", + "82052650", + "81349541", + "83834599", + "111167736" + ] + } + } + } + } + }, + { + "将物理网卡添加到Linux bridge": { + "data": { + "uuid": "云原生-5-1594", + "seg": [ + [ + [ + "物理", + "网卡", + "添加", + "linux", + "bridge" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115678779", + "68067017" + ] + } + } + } + } + }, + { + "Linux bridge在网络虚拟化中的应用": { + "data": { + "uuid": "云原生-5-1595", + "seg": [ + [ + [ + "linux", + "bridge", + "网络", + "虚拟化" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "109749050", + "90121994", + "85830041", + "68061954", + "110088715", + "51388087", + "89404607", + "108067509", + "105838205", + "109475447" + ] + } + } + } + } + }, + { + "网络接口的混杂模式": { + "data": { + "uuid": "云原生-5-1596", + "seg": [ + [ + [ + "网络接口", + "混杂", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-855", + "seg": [ + [ + [ + "连接" + ] + ], + [ + [ + "linux", + "bridge" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "给用户态一个机会:tun/tap设备": { + "children": [ + { + "tun/tap设备的工作原理": { + "data": { + "uuid": "云原生-5-1597", + "seg": [ + [ + [ + "tun", + "tap", + "设备", + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "利用tun设备部署一个VPN": { + "data": { + "uuid": "云原生-5-1598", + "seg": [ + [ + [ + "利用", + "tun", + "设备", + "部署", + "vpn" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "tun设备编程": { + "data": { + "uuid": "云原生-5-1599", + "seg": [ + [ + [ + "tun", + "设备", + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-856", + "seg": [ + [ + [ + "用户", + "态", + "机会" + ] + ], + [ + [ + "tun", + "tap", + "设备" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "iptables": { + "children": [ + { + "祖师爷netfilter": { + "data": { + "uuid": "云原生-5-1600", + "seg": [ + [ + [ + "祖师爷", + "netfilter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "iptables的三板斧:table、chain和rule": { + "data": { + "uuid": "云原生-5-1601", + "seg": [ + [ + [ + "iptables", + "三板斧" + ] + ], + [ + [ + "table" + ], + [ + "chain" + ], + [ + "rule" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "54924725", + "53899537", + "83115388", + "79986959" + ] + } + } + } + } + }, + { + "iptables的常规武器": { + "data": { + "uuid": "云原生-5-1602", + "seg": [ + [ + [ + "iptables", + "常规武器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "userspace模式": { + "data": { + "uuid": "云原生-5-1603", + "seg": [ + [ + [ + "userspace", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "iptables模式": { + "data": { + "uuid": "云原生-5-1604", + "seg": [ + [ + [ + "iptables", + "模式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80875993", + "95608635", + "108303299", + "109787031", + "109792505", + "117918124", + "117912324", + "103423668", + "73824555", + "43763073" + ] + } + } + } + } + }, + { + "IPVS模式": { + "data": { + "uuid": "云原生-5-1605", + "seg": [ + [ + [ + "ipvs", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "iptables VS. IPVS": { + "data": { + "uuid": "云原生-5-1606", + "seg": [ + [ + [ + "iptables", + "vs", + "ipvs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "conntrack": { + "data": { + "uuid": "云原生-5-1607", + "seg": [ + [ + [ + "conntrack" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "77920696" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-857", + "seg": [ + [ + [ + "iptables" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "初识Linux隧道:ipip": { + "children": [ + { + "测试ipip隧道": { + "data": { + "uuid": "云原生-5-1608", + "seg": [ + [ + [ + "ipip", + "隧道" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ipip隧道测试结果复盘": { + "data": { + "uuid": "云原生-5-1609", + "seg": [ + [ + [ + "ipip", + "隧道", + "复盘" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-858", + "seg": [ + [ + [ + "初识", + "linux", + "隧道" + ] + ], + [ + [ + "ipip" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Linux隧道网络的代表:VXLAN": { + "children": [ + { + "VXLAN协议原理简介": { + "data": { + "uuid": "云原生-5-1610", + "seg": [ + [ + [ + "vxlan", + "协议", + "原理", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "VXLAN组网必要信息": { + "data": { + "uuid": "云原生-5-1611", + "seg": [ + [ + [ + "vxlan", + "组网", + "信息" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "VXLAN基本配置命令": { + "data": { + "uuid": "云原生-5-1612", + "seg": [ + [ + [ + "vxlan", + "配置", + "命令" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "VXLAN网络实践": { + "data": { + "uuid": "云原生-5-1613", + "seg": [ + [ + [ + "vxlan", + "网络", + "实践" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "分布式控制中心": { + "data": { + "uuid": "云原生-5-1614", + "seg": [ + [ + [ + "分布式", + "控制中心" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "自维护VTEP组": { + "data": { + "uuid": "云原生-5-1615", + "seg": [ + [ + [ + "维护", + "vtep", + "组" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-859", + "seg": [ + [ + [ + "linux", + "隧道", + "网络", + "代表" + ] + ], + [ + [ + "vxlan" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "物理网卡的分身术:Macvlan": { + "children": [ + { + "Macvlan五大工作模式解析": { + "data": { + "uuid": "云原生-5-1616", + "seg": [ + [ + [ + "macvlan", + "五大", + "工作", + "模式", + "解析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试使用Macvlan设备": { + "data": { + "uuid": "云原生-5-1617", + "seg": [ + [ + [ + "macvlan", + "设备" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Macvlan的跨机通信": { + "data": { + "uuid": "云原生-5-1618", + "seg": [ + [ + [ + "macvlan", + "跨机", + "通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Macvlan与overlay对比": { + "data": { + "uuid": "云原生-5-1619", + "seg": [ + [ + [ + "macvlan" + ], + [ + "overlay" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113833523" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-860", + "seg": [ + [ + [ + "物理", + "网卡", + "分身术" + ] + ], + [ + [ + "macvlan" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Macvlan的救护员:IPvlan": { + "children": [ + { + "IPvlan简介": { + "data": { + "uuid": "云原生-5-1620", + "seg": [ + [ + [ + "ipvlan", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试IPvlan": { + "data": { + "uuid": "云原生-5-1621", + "seg": [ + [ + [ + "ipvlan" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Docker IPvlan网络": { + "data": { + "uuid": "云原生-5-1622", + "seg": [ + [ + [ + "docker", + "ipvlan", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-861", + "seg": [ + [ + [ + "macvlan", + "救护" + ] + ], + [ + [ + "ipvlan" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-201", + "seg": [ + [ + [ + "夯实", + "基础" + ] + ], + [ + [ + "linux", + "网络", + "虚拟化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "饮水思源:Docker网络模型简介": { + "children": [ + { + "主角登场:Linux容器": { + "data": { + "uuid": "云原生-4-862", + "seg": [ + [ + [ + "主角", + "登场" + ] + ], + [ + [ + "linux", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打开万花筒:Docker的四大网络模式": { + "children": [ + { + "bridge模式": { + "data": { + "uuid": "云原生-5-1623", + "seg": [ + [ + [ + "bridge", + "模式" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "101758657" + ] + } + } + } + } + }, + { + "host模式": { + "data": { + "uuid": "云原生-5-1624", + "seg": [ + [ + [ + "host", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "container模式": { + "data": { + "uuid": "云原生-5-1625", + "seg": [ + [ + [ + "container", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "none模式": { + "data": { + "uuid": "云原生-5-1626", + "seg": [ + [ + [ + "none", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-863", + "seg": [ + [ + [ + "打开", + "万花筒" + ] + ], + [ + [ + "docker", + "四大", + "网络", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "最常用的Docker网络技巧": { + "children": [ + { + "查看容器IP": { + "data": { + "uuid": "云原生-5-1627", + "seg": [ + [ + [ + "查看", + "容器", + "ip" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "端口映射": { + "data": { + "uuid": "云原生-5-1628", + "seg": [ + [ + [ + "端口映射" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "访问外网": { + "data": { + "uuid": "云原生-5-1629", + "seg": [ + [ + [ + "访问", + "网" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "DNS和主机名": { + "data": { + "uuid": "云原生-5-1630", + "seg": [ + [ + [ + "dns" + ], + [ + "主机名" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "自定义网络": { + "data": { + "uuid": "云原生-5-1631", + "seg": [ + [ + [ + "自定义", + "网络" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "114702210" + ] + } + } + } + } + }, + { + "发布服务": { + "data": { + "uuid": "云原生-5-1632", + "seg": [ + [ + [ + "发布", + "服务" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "docker link:两两互联": { + "data": { + "uuid": "云原生-5-1633", + "seg": [ + [ + [ + "docker", + "link" + ] + ], + [ + [ + "互联" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "42112325" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-864", + "seg": [ + [ + [ + "docker", + "网络", + "技巧" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "容器网络的第一个标准:CNM": { + "children": [ + { + "CNM标准": { + "data": { + "uuid": "云原生-5-1634", + "seg": [ + [ + [ + "cnm", + "标准" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "89964185" + ] + } + } + } + } + }, + { + "体验CNM接口": { + "data": { + "uuid": "云原生-5-1635", + "seg": [ + [ + [ + "体验", + "cnm", + "接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Libnetwork": { + "data": { + "uuid": "云原生-5-1636", + "seg": [ + [ + [ + "libnetwork" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Libnetwork扩展": { + "data": { + "uuid": "云原生-5-1637", + "seg": [ + [ + [ + "libnetwork", + "扩展" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-865", + "seg": [ + [ + [ + "容器", + "网络", + "标准" + ] + ], + [ + [ + "cnm" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "天生不易:容器组网的挑战": { + "children": [ + { + "容器网络挑战综述": { + "data": { + "uuid": "云原生-5-1638", + "seg": [ + [ + [ + "容器", + "网络", + "挑战", + "综述" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "90680834" + ] + } + } + } + } + }, + { + "Docker的解决方案": { + "data": { + "uuid": "云原生-5-1639", + "seg": [ + [ + [ + "docker", + "解决方案" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89787894" + ] + } + } + } + } + }, + { + "第三方容器网络插件": { + "data": { + "uuid": "云原生-5-1640", + "seg": [ + [ + [ + "容器", + "网络", + "插件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-866", + "seg": [ + [ + [ + "天生", + "不易" + ] + ], + [ + [ + "容器", + "组网", + "挑战" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何做好技术选型:容器组网方案沙场点兵": { + "children": [ + { + "隧道方案": { + "data": { + "uuid": "云原生-5-1641", + "seg": [ + [ + [ + "隧道", + "方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "路由方案": { + "data": { + "uuid": "云原生-5-1642", + "seg": [ + [ + [ + "路由", + "方案" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "容器网络组网类型": { + "data": { + "uuid": "云原生-5-1643", + "seg": [ + [ + [ + "容器", + "网络", + "组网", + "类型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "关于容器网络标准接口": { + "data": { + "uuid": "云原生-5-1644", + "seg": [ + [ + [ + "容器", + "网络", + "标准接口" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-867", + "seg": [ + [ + [ + "做好", + "技术", + "选型" + ] + ], + [ + [ + "容器", + "组网", + "方案", + "沙场", + "兵" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-202", + "seg": [ + [ + [ + "饮水思源" + ] + ], + [ + [ + "docker", + "网络", + "模型", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "标准的胜利:Kubernetes网络原理与实践": { + "children": [ + { + "容器基础设施的代言人:Kubernetes": { + "children": [ + { + "Kubernetes简介": { + "data": { + "uuid": "云原生-5-1645", + "seg": [ + [ + [ + "kubernetes", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes能做什么": { + "data": { + "uuid": "云原生-5-1646", + "seg": [ + [ + [ + "kubernetes", + "做" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何用Kubernetes": { + "data": { + "uuid": "云原生-5-1647", + "seg": [ + [ + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109489360", + "102848860", + "108529981" + ] + } + } + } + } + }, + { + "Docker在Kubernetes中的角色": { + "data": { + "uuid": "云原生-5-1648", + "seg": [ + [ + [ + "docker", + "kubernetes", + "角色" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-868", + "seg": [ + [ + [ + "容器", + "基础设施", + "代言人" + ] + ], + [ + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "终于等到你:Kubernetes网络": { + "children": [ + { + "Kubernetes网络基础": { + "data": { + "uuid": "云原生-5-1649", + "seg": [ + [ + [ + "kubernetes", + "网络", + "基础" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "79927444", + "109335287", + "109576309" + ] + } + } + } + } + }, + { + "Kubernetes网络架构综述": { + "data": { + "uuid": "云原生-5-1650", + "seg": [ + [ + [ + "kubernetes", + "网络", + "架构", + "综述" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "76804695", + "117557280", + "111655699", + "103859969" + ] + } + } + } + } + }, + { + "Kubernetes主机内组网模型": { + "data": { + "uuid": "云原生-5-1651", + "seg": [ + [ + [ + "kubernetes", + "主机", + "组网", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Kubernetes跨节点组网模型": { + "data": { + "uuid": "云原生-5-1652", + "seg": [ + [ + [ + "kubernetes", + "跨", + "节点", + "组网", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Pod的hosts文件": { + "data": { + "uuid": "云原生-5-1653", + "seg": [ + [ + [ + "pod", + "hosts", + "文件" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "81255713" + ] + } + } + } + } + }, + { + "Pod的hostname": { + "data": { + "uuid": "云原生-5-1654", + "seg": [ + [ + [ + "pod", + "hostname" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-869", + "seg": [ + [ + [ + "终于" + ] + ], + [ + [ + "kubernetes", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Pod的核心:pause容器": { + "data": { + "uuid": "云原生-4-870", + "seg": [ + [ + [ + "pod", + "核心" + ] + ], + [ + [ + "pause", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "打通CNI与Kubernetes:Kubernetes网络驱动": { + "children": [ + { + "即将完成历史使命:Kubenet": { + "data": { + "uuid": "云原生-5-1655", + "seg": [ + [ + [ + "历史使命" + ] + ], + [ + [ + "ku", + "ben", + "et" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "84372074", + "101028946", + "83692428", + "115208544", + "114674684" + ] + } + } + } + } + }, + { + "网络生态第一步:CNI": { + "data": { + "uuid": "云原生-5-1656", + "seg": [ + [ + [ + "网络", + "生态" + ] + ], + [ + [ + "cni" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "109057691", + "80408099" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-871", + "seg": [ + [ + [ + "打通", + "cni" + ], + [ + "kubernetes" + ] + ], + [ + [ + "kubernetes", + "网络", + "驱动" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "找到你并不容易:从集群内访问服务": { + "children": [ + { + "Kubernetes Service详解": { + "data": { + "uuid": "云原生-5-1657", + "seg": [ + [ + [ + "kubernetes", + "service", + "详解" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service的三个port": { + "data": { + "uuid": "云原生-5-1658", + "seg": [ + [ + [ + "service", + "port" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "你的服务适合哪种发布形式": { + "data": { + "uuid": "云原生-5-1659", + "seg": [ + [ + [ + "服务", + "适合", + "发布", + "形式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes Service发现": { + "data": { + "uuid": "云原生-5-1660", + "seg": [ + [ + [ + "kubernetes", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "特殊的无头Service": { + "data": { + "uuid": "云原生-5-1661", + "seg": [ + [ + [ + "无头", + "service" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "怎么访问本地服务": { + "data": { + "uuid": "云原生-5-1662", + "seg": [ + [ + [ + "访问", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-872", + "seg": [ + [ + [ + "找到" + ] + ], + [ + [ + "集群", + "访问", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "找到你并不容易:从集群外访问服务": { + "children": [ + { + "Kubernetes Ingress": { + "data": { + "uuid": "云原生-5-1663", + "seg": [ + [ + [ + "kubernetes", + "ingress" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-873", + "seg": [ + [ + [ + "找到" + ] + ], + [ + [ + "集群", + "访问", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "你的名字:通过域名访问服务": { + "children": [ + { + "DNS服务基本框架": { + "data": { + "uuid": "云原生-5-1664", + "seg": [ + [ + [ + "dns", + "服务", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "域名解析基本原理": { + "data": { + "uuid": "云原生-5-1665", + "seg": [ + [ + [ + "域名解析", + "基本原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "调试DNS": { + "data": { + "uuid": "云原生-5-1666", + "seg": [ + [ + [ + "调试", + "dns" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-874", + "seg": [ + [ + [ + "名字" + ] + ], + [ + [ + "域名", + "访问", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes网络策略:为你的应用保驾护航": { + "children": [ + { + "网络策略应用举例": { + "data": { + "uuid": "云原生-5-1667", + "seg": [ + [ + [ + "网络", + "策略", + "举例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-875", + "seg": [ + [ + [ + "kubernetes", + "网络", + "策略" + ] + ], + [ + [ + "保驾护航" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "前方高能:Kubernetes网络故障定位指南": { + "children": [ + { + "IP转发和桥接": { + "data": { + "uuid": "云原生-5-1668", + "seg": [ + [ + [ + "ip", + "转发" + ], + [ + "桥接" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pod CIDR冲突": { + "data": { + "uuid": "云原生-5-1669", + "seg": [ + [ + [ + "pod", + "cidr", + "冲突" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "hairpin": { + "data": { + "uuid": "云原生-5-1670", + "seg": [ + [ + [ + "hairpin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "查看Pod IP地址": { + "data": { + "uuid": "云原生-5-1671", + "seg": [ + [ + [ + "查看", + "pod", + "ip地址" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "故障排查工具": { + "data": { + "uuid": "云原生-5-1672", + "seg": [ + [ + [ + "故障", + "排查", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-876", + "seg": [ + [ + [ + "前方", + "高能" + ] + ], + [ + [ + "kubernetes", + "网络故障", + "定位", + "指南" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "迈向云原生": { + "children": [ + { + "找个合理的理由打破巨石应用": { + "data": { + "uuid": "云原生-5-1673", + "seg": [ + [ + [ + "理由", + "打破", + "巨石" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "先解耦简单的服务": { + "data": { + "uuid": "云原生-5-1674", + "seg": [ + [ + [ + "先解", + "耦", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "学会小规模的运维": { + "data": { + "uuid": "云原生-5-1675", + "seg": [ + [ + [ + "学会", + "小规模", + "运维" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "104311893" + ] + } + } + } + } + }, + { + "使用防损层模式": { + "data": { + "uuid": "云原生-5-1676", + "seg": [ + [ + [ + "防损", + "层", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用刀砍模式": { + "data": { + "uuid": "云原生-5-1677", + "seg": [ + [ + [ + "刀", + "砍", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "准备一个数据迁移策略": { + "data": { + "uuid": "云原生-5-1678", + "seg": [ + [ + [ + "数据", + "迁移", + "策略" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "重写所有模板代码": { + "data": { + "uuid": "云原生-5-1679", + "seg": [ + [ + [ + "重写", + "模板" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "淘汰老代码": { + "data": { + "uuid": "云原生-5-1680", + "seg": [ + [ + [ + "淘汰", + "老" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-877", + "seg": [ + [ + [ + "迈向", + "云", + "原生" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确保弹性": { + "children": [ + { + "用重试来解决瞬时故障": { + "data": { + "uuid": "云原生-5-1681", + "seg": [ + [ + [ + "重试", + "瞬时", + "故障" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用有限次的重试": { + "data": { + "uuid": "云原生-5-1682", + "seg": [ + [ + [ + "有限", + "重试" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用断路器来处理非瞬时故障": { + "data": { + "uuid": "云原生-5-1683", + "seg": [ + [ + [ + "断路器", + "瞬时", + "故障" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优雅地降级": { + "data": { + "uuid": "云原生-5-1684", + "seg": [ + [ + [ + "优雅", + "降级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用隔离模式": { + "data": { + "uuid": "云原生-5-1685", + "seg": [ + [ + [ + "隔离", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现健康及就绪检查": { + "data": { + "uuid": "云原生-5-1686", + "seg": [ + [ + [ + "健康" + ], + [ + "就绪", + "检查" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "为容器设定CPU和内存限制": { + "data": { + "uuid": "云原生-5-1687", + "seg": [ + [ + [ + "容器", + "设定", + "cpu" + ], + [ + "内存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现限速和限流": { + "data": { + "uuid": "云原生-5-1688", + "seg": [ + [ + [ + "限速" + ], + [ + "限流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-878", + "seg": [ + [ + [ + "确保", + "弹性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "确保安全性": { + "children": [ + { + "安全性需求同其他需求一样重要": { + "data": { + "uuid": "云原生-5-1689", + "seg": [ + [ + [ + "安全性", + "需求" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在设计时就考虑安全性": { + "data": { + "uuid": "云原生-5-1690", + "seg": [ + [ + [ + "设计", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "授予最小访问权限": { + "data": { + "uuid": "云原生-5-1691", + "seg": [ + [ + [ + "授予", + "最小", + "访问", + "权限" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全地存储所有密钥": { + "data": { + "uuid": "云原生-5-1692", + "seg": [ + [ + [ + "存储", + "密钥" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "模糊化数据": { + "data": { + "uuid": "云原生-5-1693", + "seg": [ + [ + [ + "模糊化", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "传输数据加密": { + "data": { + "uuid": "云原生-5-1694", + "seg": [ + [ + [ + "传输数据", + "加密" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用联合身份管理": { + "data": { + "uuid": "云原生-5-1695", + "seg": [ + [ + [ + "联合", + "身份", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes pod的隔离": { + "data": { + "uuid": "云原生-5-1696", + "seg": [ + [ + [ + "kubernetes", + "pod", + "隔离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-879", + "seg": [ + [ + [ + "确保", + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理数据": { + "children": [ + { + "使用托管数据库和数据分析服务": { + "data": { + "uuid": "云原生-5-1697", + "seg": [ + [ + [ + "托管", + "数据库" + ], + [ + "数据分析", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用符合数据需求的存储": { + "data": { + "uuid": "云原生-5-1698", + "seg": [ + [ + [ + "符合", + "数据", + "需求", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将数据保存在多个地域或可用区中": { + "data": { + "uuid": "云原生-5-1699", + "seg": [ + [ + [ + "数据", + "保存", + "地域", + "可用", + "区" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用数据分区和复制以提高扩展性": { + "data": { + "uuid": "云原生-5-1700", + "seg": [ + [ + [ + "数据", + "分区" + ], + [ + "复制", + "提高", + "扩展性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "避免过度获取及频繁的I/O操作": { + "data": { + "uuid": "云原生-5-1701", + "seg": [ + [ + [ + "过度", + "获取" + ], + [ + "频繁", + "i", + "o", + "操作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不要把业务逻辑放在数据库中执行": { + "data": { + "uuid": "云原生-5-1702", + "seg": [ + [ + [ + "业务", + "逻辑", + "放在", + "数据库", + "执行" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "使用类生产环境数据来测试": { + "data": { + "uuid": "云原生-5-1703", + "seg": [ + [ + [ + "类", + "生产", + "环境", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "处理瞬时故障": { + "data": { + "uuid": "云原生-5-1704", + "seg": [ + [ + [ + "瞬时", + "故障" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-880", + "seg": [ + [ + [ + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "性能和伸缩性": { + "children": [ + { + "设计可扩展的无状态服务": { + "data": { + "uuid": "云原生-5-1705", + "seg": [ + [ + [ + "设计", + "扩展", + "状态", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用平台的自动伸缩功能": { + "data": { + "uuid": "云原生-5-1706", + "seg": [ + [ + [ + "平台", + "自动", + "伸缩", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用缓存": { + "data": { + "uuid": "云原生-5-1707", + "seg": [ + [ + [ + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用分区来实现超出服务限制的扩容": { + "data": { + "uuid": "云原生-5-1708", + "seg": [ + [ + [ + "分区", + "超出", + "服务", + "扩容" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114128565" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-881", + "seg": [ + [ + [ + "性能" + ], + [ + "伸缩性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "运维": { + "children": [ + { + "部署和发布是两项独立的活动": { + "data": { + "uuid": "云原生-5-1709", + "seg": [ + [ + [ + "部署" + ], + [ + "发布", + "独立", + "活动" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署的内容要尽量小": { + "data": { + "uuid": "云原生-5-1710", + "seg": [ + [ + [ + "部署", + "内容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "组件层级的CI/CD定义": { + "data": { + "uuid": "云原生-5-1711", + "seg": [ + [ + [ + "组件", + "层级", + "ci", + "cd", + "定义" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用部署的一致性": { + "data": { + "uuid": "云原生-5-1712", + "seg": [ + [ + [ + "部署", + "一致性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "采用零宕机发布": { + "data": { + "uuid": "云原生-5-1713", + "seg": [ + [ + [ + "采用", + "宕机", + "发布" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不要变更部署后的架构": { + "data": { + "uuid": "云原生-5-1714", + "seg": [ + [ + [ + "变更", + "部署", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用容器化构建": { + "data": { + "uuid": "云原生-5-1715", + "seg": [ + [ + [ + "容器", + "化", + "构建" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用代码来描述基础设施": { + "data": { + "uuid": "云原生-5-1716", + "seg": [ + [ + [ + "描述", + "基础设施" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用命名空间来组织Kubernetes中的服务": { + "data": { + "uuid": "云原生-5-1717", + "seg": [ + [ + [ + "命名", + "空间", + "组织", + "kubernetes", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "环境间的隔离": { + "data": { + "uuid": "云原生-5-1718", + "seg": [ + [ + [ + "环境", + "隔离" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分隔函数源代码": { + "data": { + "uuid": "云原生-5-1719", + "seg": [ + [ + [ + "分隔", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "关联代码提交和部署": { + "data": { + "uuid": "云原生-5-1720", + "seg": [ + [ + [ + "关联", + "提交" + ], + [ + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-882", + "seg": [ + [ + [ + "运维" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79878834" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-203", + "seg": [ + [ + [ + "标准", + "胜利" + ] + ], + [ + [ + "kubernetes", + "网络", + "原理" + ], + [ + "实践" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "刨根问底:Kubernetes网络实现机制": { + "children": [ + { + "Kubernetes极客们的日常:DIY一个Ingress Controller": { + "children": [ + { + "Ingress Controller的通用框架": { + "data": { + "uuid": "云原生-5-1721", + "seg": [ + [ + [ + "ingress", + "controller", + "通用", + "框架" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82940598" + ] + } + } + } + } + }, + { + "Nginx Ingress Controller详解": { + "data": { + "uuid": "云原生-5-1722", + "seg": [ + [ + [ + "nginx", + "ingress", + "controller", + "详解" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82791101", + "111247322" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-883", + "seg": [ + [ + [ + "kubernetes", + "极客", + "日常" + ] + ], + [ + [ + "diy", + "ingress", + "controller" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "117560597" + ] + } + } + } + } + }, + { + "沧海桑田:Kubernetes DNS架构演进之路": { + "children": [ + { + "Kube-dns的工作原理": { + "data": { + "uuid": "云原生-5-1723", + "seg": [ + [ + [ + "kube", + "dns", + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "上位的CoreDNS": { + "data": { + "uuid": "云原生-5-1724", + "seg": [ + [ + [ + "上位", + "coredns" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kube-dns VS. CoreDNS": { + "data": { + "uuid": "云原生-5-1725", + "seg": [ + [ + [ + "kube", + "dns", + "vs", + "coredns" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78755162", + "81108939", + "76576558", + "38017027", + "114751137", + "83350000", + "107704114", + "88956043" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-884", + "seg": [ + [ + [ + "沧海桑田" + ] + ], + [ + [ + "kubernetes", + "dns", + "架构", + "演进", + "路" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "你的安全我负责:使用Calico提供Kubernetes网络策略": { + "children": [ + { + "部署一个带Calico的Kubernetes集群": { + "data": { + "uuid": "云原生-5-1726", + "seg": [ + [ + [ + "部署", + "带", + "calico", + "kubernetes", + "集群" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "78883847", + "50620187", + "84981945", + "88885539", + "116955197" + ] + } + } + } + } + }, + { + "测试Calico网络策略": { + "data": { + "uuid": "云原生-5-1727", + "seg": [ + [ + [ + "calico", + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-885", + "seg": [ + [ + [ + "负责" + ] + ], + [ + [ + "calico", + "提供", + "kubernetes", + "网络", + "策略" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-204", + "seg": [ + [ + [ + "刨根问底" + ] + ], + [ + [ + "kubernetes", + "网络", + "机制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "百花齐放:Kubernetes网络插件生态": { + "children": [ + { + "从入门到放弃:Docker原生网络的不足": { + "data": { + "uuid": "云原生-4-886", + "seg": [ + [ + [ + "入门", + "放弃" + ] + ], + [ + [ + "docker", + "原生", + "网络" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "CNI标准的胜出:从此江湖没有CNM": { + "children": [ + { + "CNI的工作原理": { + "data": { + "uuid": "云原生-5-1728", + "seg": [ + [ + [ + "cni", + "工作", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-887", + "seg": [ + [ + [ + "cni", + "标准", + "胜出" + ] + ], + [ + [ + "江湖", + "cnm" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes网络插件鼻祖flannel": { + "children": [ + { + "flannel简介": { + "data": { + "uuid": "云原生-5-1729", + "seg": [ + [ + [ + "flannel", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "flannel安装配置": { + "data": { + "uuid": "云原生-5-1730", + "seg": [ + [ + [ + "flannel", + "安装", + "配置" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "70174498" + ] + } + } + } + } + }, + { + "flannel backend详解": { + "data": { + "uuid": "云原生-5-1731", + "seg": [ + [ + [ + "flannel", + "backend", + "详解" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "115296317" + ] + } + } + } + } + }, + { + "flannel与etcd": { + "data": { + "uuid": "云原生-5-1732", + "seg": [ + [ + [ + "flannel" + ], + [ + "etcd" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "52440312", + "79121932", + "52059161", + "105298366", + "90235873", + "94564381", + "78783289" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-888", + "seg": [ + [ + [ + "kubernetes", + "网络", + "插件", + "鼻祖", + "flannel" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "全能大三层网络插件:Calico": { + "children": [ + { + "Calico简介": { + "data": { + "uuid": "云原生-5-1733", + "seg": [ + [ + [ + "calico", + "简介" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "79407483" + ] + } + } + } + } + }, + { + "Calico的隧道模式": { + "data": { + "uuid": "云原生-5-1734", + "seg": [ + [ + [ + "calico", + "隧道", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "安装Calico": { + "data": { + "uuid": "云原生-5-1735", + "seg": [ + [ + [ + "安装", + "calico" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Calico报文路径": { + "data": { + "uuid": "云原生-5-1736", + "seg": [ + [ + [ + "calico", + "报文", + "路径" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Calico使用指南": { + "data": { + "uuid": "云原生-5-1737", + "seg": [ + [ + [ + "calico", + "使用指南" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-889", + "seg": [ + [ + [ + "全能", + "网络", + "插件" + ] + ], + [ + [ + "calico" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Weave:支持数据加密的网络插件": { + "children": [ + { + "Weave简介": { + "data": { + "uuid": "云原生-5-1738", + "seg": [ + [ + [ + "weave", + "简介" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Weave实现原理": { + "data": { + "uuid": "云原生-5-1739", + "seg": [ + [ + [ + "weave", + "原理" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Weave安装": { + "data": { + "uuid": "云原生-5-1740", + "seg": [ + [ + [ + "weave", + "安装" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Weave网络通信模型": { + "data": { + "uuid": "云原生-5-1741", + "seg": [ + [ + [ + "weave", + "网络通信", + "模型" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Weave的应用示例": { + "data": { + "uuid": "云原生-5-1742", + "seg": [ + [ + [ + "weave", + "示例" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-890", + "seg": [ + [ + [ + "weave" + ] + ], + [ + [ + "支持", + "数据", + "加密", + "网络", + "插件" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Cilium:为微服务网络连接安全而生": { + "children": [ + { + "以API为中心的微服务安全": { + "data": { + "uuid": "云原生-5-1743", + "seg": [ + [ + [ + "api", + "中心", + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BPF优化的数据平面性能": { + "data": { + "uuid": "云原生-5-1744", + "seg": [ + [ + [ + "bpf", + "优化", + "数据", + "平面", + "性能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-891", + "seg": [ + [ + [ + "cilium" + ] + ], + [ + [ + "微", + "服务", + "网络连接", + "生" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes多网络的先行者:CNI-Genie": { + "children": [ + { + "CNI-Genie功能速递": { + "data": { + "uuid": "云原生-5-1745", + "seg": [ + [ + [ + "cni", + "genie", + "功能", + "速递" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "109335320" + ] + } + } + } + } + }, + { + "容器多IP": { + "data": { + "uuid": "云原生-5-1746", + "seg": [ + [ + [ + "容器", + "ip" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-892", + "seg": [ + [ + [ + "kubernetes", + "网络", + "先行者" + ] + ], + [ + [ + "cni", + "genie" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-205", + "seg": [ + [ + [ + "百花齐放" + ] + ], + [ + [ + "kubernetes", + "网络", + "插件", + "生态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes网络下半场:Istio": { + "children": [ + { + "微服务架构的大地震:sidecar模式": { + "children": [ + { + "你真的需要Service Mesh吗": { + "data": { + "uuid": "云原生-5-1747", + "seg": [ + [ + [ + "真的", + "service", + "mesh" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sidecar模式": { + "data": { + "uuid": "云原生-5-1748", + "seg": [ + [ + [ + "sidecar", + "模式" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Service Mesh与sidecar": { + "data": { + "uuid": "云原生-5-1749", + "seg": [ + [ + [ + "service", + "mesh" + ], + [ + "sidecar" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes Service VS. Service Mesh": { + "data": { + "uuid": "云原生-5-1750", + "seg": [ + [ + [ + "kubernetes", + "service", + "vs", + "mesh" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Service Mesh典型实现之Linkerd": { + "data": { + "uuid": "云原生-5-1751", + "seg": [ + [ + [ + "service", + "mesh", + "典型", + "linkerd" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-893", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "地震" + ] + ], + [ + [ + "sidecar", + "模式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio:引领新一代微服务架构潮流": { + "children": [ + { + "Istio简介": { + "data": { + "uuid": "云原生-5-1752", + "seg": [ + [ + [ + "istio", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio安装": { + "data": { + "uuid": "云原生-5-1753", + "seg": [ + [ + [ + "istio", + "安装" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Istio路由规则的实现": { + "data": { + "uuid": "云原生-5-1754", + "seg": [ + [ + [ + "istio", + "路由", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-894", + "seg": [ + [ + [ + "istio" + ] + ], + [ + [ + "引领", + "新一代", + "微", + "服务", + "架构", + "潮流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一切尽在不言中:Istio sidecar透明注入": { + "children": [ + { + "Init容器": { + "data": { + "uuid": "云原生-5-1755", + "seg": [ + [ + [ + "init", + "容器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "sideca注入示例": { + "data": { + "uuid": "云原生-5-1756", + "seg": [ + [ + [ + "sideca", + "注入", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "手工注入sidecar": { + "data": { + "uuid": "云原生-5-1757", + "seg": [ + [ + [ + "手工", + "注入", + "sidecar" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动注入sidecar": { + "data": { + "uuid": "云原生-5-1758", + "seg": [ + [ + [ + "自动", + "注入", + "sidecar" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从应用容器到sidecar代理的通信": { + "data": { + "uuid": "云原生-5-1759", + "seg": [ + [ + [ + "容器", + "sidecar", + "代理", + "通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-895", + "seg": [ + [ + [ + "尽在不言中" + ] + ], + [ + [ + "istio", + "sidecar", + "透明", + "注入" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不再为iptables脚本所困:Istio CNI插件": { + "data": { + "uuid": "云原生-4-896", + "seg": [ + [ + [ + "iptables", + "脚本", + "所困" + ] + ], + [ + [ + "istio", + "cni", + "插件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "除了微服务,Istio还能做更多": { + "data": { + "uuid": "云原生-4-897", + "seg": [ + [ + [ + "微", + "服务", + "istio", + "做" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-206", + "seg": [ + [ + [ + "kubernetes", + "网络", + "下半场" + ] + ], + [ + [ + "istio" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云原生简介": { + "children": [ + { + "分布式系统": { + "children": [ + { + "分布式系统的误区": { + "data": { + "uuid": "云原生-5-1760", + "seg": [ + [ + [ + "分布式系统", + "误区" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "79081112" + ] + } + } + } + } + }, + { + "CAP定理": { + "data": { + "uuid": "云原生-5-1761", + "seg": [ + [ + [ + "cap", + "定理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-898", + "seg": [ + [ + [ + "分布式系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "十二要素应用": { + "data": { + "uuid": "云原生-4-899", + "seg": [ + [ + [ + "要素" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可用性和服务等级协议": { + "data": { + "uuid": "云原生-4-900", + "seg": [ + [ + [ + "可用性" + ], + [ + "服务", + "等级", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-207", + "seg": [ + [ + [ + "云", + "原生", + "简介" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云原生基础": { + "children": [ + { + "无服务器架构": { + "data": { + "uuid": "云原生-4-901", + "seg": [ + [ + [ + "服务器", + "架构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数计算": { + "children": [ + { + "编写单一用途的函数": { + "data": { + "uuid": "云原生-5-1762", + "seg": [ + [ + [ + "编写", + "单一", + "用途", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "避免串联函数": { + "data": { + "uuid": "云原生-5-1763", + "seg": [ + [ + [ + "串联", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "函数应保持轻量和简单": { + "data": { + "uuid": "云原生-5-1764", + "seg": [ + [ + [ + "函数", + "应", + "轻量" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现无状态函数": { + "data": { + "uuid": "云原生-5-1765", + "seg": [ + [ + [ + "状态", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分离函数入口和函数的业务逻辑": { + "data": { + "uuid": "云原生-5-1766", + "seg": [ + [ + [ + "分离", + "函数", + "入口" + ], + [ + "函数", + "业务", + "逻辑" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78429783" + ] + } + } + } + } + }, + { + "避免长时间运行的函数": { + "data": { + "uuid": "云原生-5-1767", + "seg": [ + [ + [ + "长时间", + "运行", + "函数" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-902", + "seg": [ + [ + [ + "函数", + "计算" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "从虚拟机到云原生": { + "children": [ + { + "提升和转变": { + "data": { + "uuid": "云原生-5-1768", + "seg": [ + [ + [ + "提升" + ], + [] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "112781029", + "112308224", + "109647796" + ] + } + } + } + } + }, + { + "应用的现代化改造": { + "data": { + "uuid": "云原生-5-1769", + "seg": [ + [ + [ + "现代化", + "改造" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "应用的优化": { + "data": { + "uuid": "云原生-5-1770", + "seg": [ + [ + [ + "优化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-903", + "seg": [ + [ + [ + "虚拟机", + "云", + "原生" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "109583180", + "113740191", + "102937305", + "114854336", + "86555373", + "109353661", + "109405593", + "103066779", + "110244087", + "102328579" + ] + } + } + } + } + }, + { + "微服务": { + "children": [ + { + "微服务架构的优势": { + "data": { + "uuid": "云原生-5-1771", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "优势" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "微服务架构带来的挑战": { + "data": { + "uuid": "云原生-5-1772", + "seg": [ + [ + [ + "微", + "服务", + "架构", + "带来", + "挑战" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-904", + "seg": [ + [ + [ + "微", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "精益运营": { + "data": { + "uuid": "云原生-4-905", + "seg": [ + [ + [ + "精益", + "运营" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全性": { + "data": { + "uuid": "云原生-4-906", + "seg": [ + [ + [ + "安全性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可扩展性与成本": { + "data": { + "uuid": "云原生-4-907", + "seg": [ + [ + [ + "可扩展性" + ], + [ + "成本" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-208", + "seg": [ + [ + [ + "云", + "原生", + "基础" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云原生应用的设计": { + "children": [ + { + "云原生与传统架构的对比": { + "data": { + "uuid": "云原生-4-908", + "seg": [ + [ + [ + "云", + "原生" + ], + [ + "传统", + "架构" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114648338", + "109383789", + "108850155", + "92808106", + "113753494", + "118071077", + "118184997", + "112801972", + "102601776", + "117250483" + ] + } + } + } + } + }, + { + "API设计与版本控制": { + "children": [ + { + "API的前后兼容": { + "data": { + "uuid": "云原生-5-1773", + "seg": [ + [ + [ + "api", + "兼容" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114534304", + "110429539", + "115869908" + ] + } + } + } + } + }, + { + "语义版本号": { + "data": { + "uuid": "云原生-5-1774", + "seg": [ + [ + [ + "语义", + "版本号" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-909", + "seg": [ + [ + [ + "api", + "设计" + ], + [ + "版本控制" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务间的通信": { + "children": [ + { + "通信协议": { + "data": { + "uuid": "云原生-5-1775", + "seg": [ + [ + [ + "通信协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "消息协议": { + "data": { + "uuid": "云原生-5-1776", + "seg": [ + [ + [ + "消息", + "协议" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "序列化的考虑因素": { + "data": { + "uuid": "云原生-5-1777", + "seg": [ + [ + [ + "序列化", + "因素" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "幂等性": { + "data": { + "uuid": "云原生-5-1778", + "seg": [ + [ + [ + "幂", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "请求与响应": { + "data": { + "uuid": "云原生-5-1779", + "seg": [ + [ + [], + [ + "响应" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布者与订阅者": { + "data": { + "uuid": "云原生-5-1780", + "seg": [ + [ + [ + "发布者" + ], + [ + "订阅" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布者/订阅者模式与请求/响应模式间的选择": { + "data": { + "uuid": "云原生-5-1781", + "seg": [ + [ + [ + "发布者", + "订阅", + "模式" + ], + [ + "响应", + "模式", + "选择" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "同步与异步": { + "data": { + "uuid": "云原生-5-1782", + "seg": [ + [ + [ + "同步" + ], + [ + "异步" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "设计时考虑前后兼容性": { + "data": { + "uuid": "云原生-5-1783", + "seg": [ + [ + [ + "设计", + "兼容性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "封装好服务避免泄露内部细节": { + "data": { + "uuid": "云原生-5-1784", + "seg": [ + [ + [ + "封装", + "服务", + "泄露", + "内部", + "细节" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "优先考虑异步通信": { + "data": { + "uuid": "云原生-5-1785", + "seg": [ + [ + [ + "优先", + "异步", + "通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "使用高效的序列化技术": { + "data": { + "uuid": "云原生-5-1786", + "seg": [ + [ + [ + "高效", + "序列化", + "技术" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "用批处理来提高请求处理的效率": { + "data": { + "uuid": "云原生-5-1787", + "seg": [ + [ + [ + "批处理", + "提高", + "效率" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "拆分大的消息": { + "data": { + "uuid": "云原生-5-1788", + "seg": [ + [ + [ + "拆分", + "消息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-910", + "seg": [ + [ + [ + "服务", + "通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网关": { + "children": [ + { + "路由": { + "data": { + "uuid": "云原生-5-1789", + "seg": [ + [ + [ + "路由" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "聚合": { + "data": { + "uuid": "云原生-5-1790", + "seg": [ + [ + [ + "聚合" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "卸载": { + "data": { + "uuid": "云原生-5-1791", + "seg": [ + [ + [ + "卸载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网关的实现": { + "data": { + "uuid": "云原生-5-1792", + "seg": [ + [ + [ + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-911", + "seg": [ + [ + [ + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "出口网关": { + "data": { + "uuid": "云原生-4-912", + "seg": [ + [ + [ + "出口", + "网关" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务网格": { + "data": { + "uuid": "云原生-4-913", + "seg": [ + [ + [ + "服务", + "网格" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "架构示例": { + "data": { + "uuid": "云原生-4-914", + "seg": [ + [ + [ + "架构", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-209", + "seg": [ + [ + [ + "云", + "原生", + "设计" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据处理": { + "children": [ + { + "数据存储系统": { + "children": [ + { + "对象、文件和磁盘": { + "data": { + "uuid": "云原生-5-1793", + "seg": [ + [ + [ + "对象" + ], + [ + "文件" + ], + [ + "磁盘" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据库": { + "data": { + "uuid": "云原生-5-1794", + "seg": [ + [ + [ + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流和队列": { + "data": { + "uuid": "云原生-5-1795", + "seg": [ + [ + [ + "流" + ], + [ + "队列" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "区块链": { + "data": { + "uuid": "云原生-5-1796", + "seg": [ + [ + [ + "区块", + "链" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "103081099", + "78175907", + "104299664" + ] + } + } + } + } + }, + { + "数据存储的选择": { + "data": { + "uuid": "云原生-5-1797", + "seg": [ + [ + [ + "数据", + "存储", + "选择" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-915", + "seg": [ + [ + [ + "数据", + "存储系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "多数据存储下的数据": { + "children": [ + { + "捕获数据更改": { + "data": { + "uuid": "云原生-5-1798", + "seg": [ + [ + [ + "捕获", + "数据", + "更改" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50624952" + ] + } + } + } + } + }, + { + "将更改作为事件写入更改日志": { + "data": { + "uuid": "云原生-5-1799", + "seg": [ + [ + [ + "更改", + "事件", + "写入", + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事务监管": { + "data": { + "uuid": "云原生-5-1800", + "seg": [ + [ + [ + "事务", + "监管" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "事务回滚": { + "data": { + "uuid": "云原生-5-1801", + "seg": [ + [ + [ + "事务", + "回滚" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "提取、转换和加载": { + "data": { + "uuid": "云原生-5-1802", + "seg": [ + [ + [ + "提取" + ], + [ + "转换" + ], + [ + "加载" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-916", + "seg": [ + [ + [ + "数据", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "客户端访问数据": { + "children": [ + { + "受限的客户令牌(代客密钥)": { + "data": { + "uuid": "云原生-5-1803", + "seg": [ + [ + [ + "受限", + "客户", + "令牌", + "代客", + "密钥" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "细粒度访问控制的数据库服务": { + "data": { + "uuid": "云原生-5-1804", + "seg": [ + [ + [ + "细粒度", + "访问控制", + "数据库", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GraphQL数据服务": { + "data": { + "uuid": "云原生-5-1805", + "seg": [ + [ + [ + "graphql", + "数据服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-917", + "seg": [ + [ + [ + "客户端", + "访问", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可快速伸缩的数据": { + "children": [ + { + "数据分片": { + "data": { + "uuid": "云原生-5-1806", + "seg": [ + [ + [ + "数据", + "分片" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据缓存": { + "data": { + "uuid": "云原生-5-1807", + "seg": [ + [ + [ + "数据", + "缓存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "内容分发网络": { + "data": { + "uuid": "云原生-5-1808", + "seg": [ + [ + [ + "内容", + "分发", + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-918", + "seg": [ + [ + [ + "快速", + "伸缩", + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据分析": { + "children": [ + { + "数据流": { + "data": { + "uuid": "云原生-5-1809", + "seg": [ + [ + [ + "数据流" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "批处理": { + "data": { + "uuid": "云原生-5-1810", + "seg": [ + [ + [ + "批处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "对象存储上的数据湖": { + "data": { + "uuid": "云原生-5-1811", + "seg": [ + [ + [ + "对象", + "存储", + "数据", + "湖" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "数据湖和数据仓库": { + "data": { + "uuid": "云原生-5-1812", + "seg": [ + [ + [ + "数据", + "湖和", + "数据仓库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分布式查询引擎": { + "data": { + "uuid": "云原生-5-1813", + "seg": [ + [ + [ + "分布式", + "查询", + "引擎" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-919", + "seg": [ + [ + [ + "数据分析" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111713608" + ] + } + } + } + } + }, + { + "Kubernetes中的数据库": { + "children": [ + { + "StatefulSet": { + "data": { + "uuid": "云原生-5-1814", + "seg": [ + [ + [ + "statefulset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DaemonSet": { + "data": { + "uuid": "云原生-5-1815", + "seg": [ + [ + [ + "daemonset" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-920", + "seg": [ + [ + [ + "kubernetes", + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-210", + "seg": [ + [ + [ + "数据处理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DevOps": { + "children": [ + { + "什么是DevOps": { + "children": [ + { + "协作": { + "data": { + "uuid": "云原生-5-1816", + "seg": [ + [ + [ + "协作" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化": { + "data": { + "uuid": "云原生-5-1817", + "seg": [ + [ + [ + "自动化" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114548898" + ] + } + } + } + } + }, + { + "精益原则和流程": { + "data": { + "uuid": "云原生-5-1818", + "seg": [ + [ + [ + "精益", + "原则" + ], + [ + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "度量": { + "data": { + "uuid": "云原生-5-1819", + "seg": [ + [ + [ + "度量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "分享": { + "data": { + "uuid": "云原生-5-1820", + "seg": [ + [ + [ + "分享" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-921", + "seg": [ + [ + [ + "devops" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "45155183", + "117106967", + "105049952", + "97409497", + "79920382", + "78935486", + "112761254", + "77646024", + "78553177", + "77448607" + ] + } + } + } + } + }, + { + "测试": { + "children": [ + { + "测试替身": { + "data": { + "uuid": "云原生-5-1821", + "seg": [ + [ + [ + "替身" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动化测试金字塔": { + "data": { + "uuid": "云原生-5-1822", + "seg": [ + [ + [ + "自动化", + "金字塔" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "不同测试类型的适用时机": { + "data": { + "uuid": "云原生-5-1823", + "seg": [ + [ + [ + "类型", + "时机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试节奏": { + "data": { + "uuid": "云原生-5-1824", + "seg": [ + [ + [ + "节奏" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "在生产环境中测试": { + "data": { + "uuid": "云原生-5-1825", + "seg": [ + [ + [ + "生产", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-922", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发环境和工具": { + "children": [ + { + "开发工具": { + "data": { + "uuid": "云原生-5-1826", + "seg": [ + [ + [ + "开发工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "开发环境": { + "data": { + "uuid": "云原生-5-1827", + "seg": [ + [ + [ + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "107836914", + "79241369", + "80451318", + "84643497", + "108909396" + ] + } + } + } + } + }, + { + "本地开发环境": { + "data": { + "uuid": "云原生-5-1828", + "seg": [ + [ + [ + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "本地开发环境结合远端集群": { + "data": { + "uuid": "云原生-5-1829", + "seg": [ + [ + [ + "开发", + "环境", + "远端", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Skaffold开发工作流": { + "data": { + "uuid": "云原生-5-1830", + "seg": [ + [ + [ + "skaffold", + "开发", + "工作", + "流" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "79845248" + ] + } + } + } + } + }, + { + "将远端集群路由到本地开发环境": { + "data": { + "uuid": "云原生-5-1831", + "seg": [ + [ + [ + "远端", + "集群", + "路由", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云端开发环境": { + "data": { + "uuid": "云原生-5-1832", + "seg": [ + [ + [ + "云端", + "开发", + "环境" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-923", + "seg": [ + [ + [ + "开发", + "环境" + ], + [ + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持续集成/持续交付": { + "children": [ + { + "源代码管理": { + "data": { + "uuid": "云原生-5-1833", + "seg": [ + [ + [ + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "构建阶段": { + "data": { + "uuid": "云原生-5-1834", + "seg": [ + [ + [ + "构建", + "阶段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "测试阶段": { + "data": { + "uuid": "云原生-5-1835", + "seg": [ + [ + [ + "测试阶段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署阶段": { + "data": { + "uuid": "云原生-5-1836", + "seg": [ + [ + [ + "部署", + "阶段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布阶段": { + "data": { + "uuid": "云原生-5-1837", + "seg": [ + [ + [ + "发布", + "阶段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "发布后阶段": { + "data": { + "uuid": "云原生-5-1838", + "seg": [ + [ + [ + "发布", + "阶段" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-924", + "seg": [ + [ + [ + "持续", + "集成", + "交付" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "监控": { + "children": [ + { + "收集指标": { + "data": { + "uuid": "云原生-5-1839", + "seg": [ + [ + [ + "收集", + "指标" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "服务的可观测性": { + "data": { + "uuid": "云原生-5-1840", + "seg": [ + [ + [ + "服务", + "观测", + "性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-925", + "seg": [ + [ + [ + "监控" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置管理": { + "children": [ + { + "单一环境变量": { + "data": { + "uuid": "云原生-5-1841", + "seg": [ + [ + [ + "单一", + "环境变量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "将配置数据放入存储卷中": { + "data": { + "uuid": "云原生-5-1842", + "seg": [ + [ + [ + "配置", + "数据", + "放入", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "密钥保存": { + "data": { + "uuid": "云原生-5-1843", + "seg": [ + [ + [ + "密钥", + "保存" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署配置": { + "data": { + "uuid": "云原生-5-1844", + "seg": [ + [ + [ + "部署", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-926", + "seg": [ + [ + [ + "配置管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "持续集成/持续交付流程示例": { + "data": { + "uuid": "云原生-4-927", + "seg": [ + [ + [ + "持续", + "集成", + "交付", + "流程", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-211", + "seg": [ + [ + [ + "devops" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可移植性": { + "children": [ + { + "可移植性的代价": { + "data": { + "uuid": "云原生-4-928", + "seg": [ + [ + [ + "可移植性", + "代价" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "何时及如何实现可移植性": { + "children": [ + { + "标准化的接口": { + "data": { + "uuid": "云原生-5-1845", + "seg": [ + [ + [ + "标准化", + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "共用的服务和功能": { + "data": { + "uuid": "云原生-5-1846", + "seg": [ + [ + [ + "共用", + "服务" + ], + [ + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "抽象和分层": { + "data": { + "uuid": "云原生-5-1847", + "seg": [ + [ + [ + "抽象" + ], + [ + "分层" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "第三方服务商的托管服务": { + "data": { + "uuid": "云原生-5-1848", + "seg": [ + [ + [ + "服务商", + "托管", + "服务" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "可移植性工具": { + "data": { + "uuid": "云原生-5-1849", + "seg": [ + [ + [ + "可移植性", + "工具" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "把Kubernetes作为可移植性层": { + "data": { + "uuid": "云原生-5-1850", + "seg": [ + [ + [ + "kubernetes", + "可移植性", + "层" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-929", + "seg": [ + [ + [], + [ + "可移植性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-212", + "seg": [ + [ + [ + "可移植性" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "理论篇(技术进阶)": { + "children": [ + { + "鸟瞰云上Kubernetes": { + "children": [ + { + "内容概要": { + "data": { + "uuid": "云原生-5-1851", + "seg": [ + [ + [ + "内容", + "概要" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "云资源层": { + "children": [ + { + "专有版": { + "data": { + "uuid": "云原生-6-373", + "seg": [ + [ + [ + "专有", + "版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "托管版": { + "data": { + "uuid": "云原生-6-374", + "seg": [ + [ + [ + "托管", + "版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless版": { + "data": { + "uuid": "云原生-6-375", + "seg": [ + [ + [ + "serverless", + "版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1852", + "seg": [ + [ + [ + "云", + "资源", + "层" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108563257", + "48156861" + ] + } + } + } + } + }, + { + "单机系统层": { + "data": { + "uuid": "云原生-5-1853", + "seg": [ + [ + [ + "单机", + "系统", + "层" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群系统层": { + "children": [ + { + "专有版": { + "data": { + "uuid": "云原生-6-376", + "seg": [ + [ + [ + "专有", + "版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "托管版": { + "data": { + "uuid": "云原生-6-377", + "seg": [ + [ + [ + "托管", + "版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Serverless版": { + "data": { + "uuid": "云原生-6-378", + "seg": [ + [ + [ + "serverless", + "版" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1854", + "seg": [ + [ + [ + "集群", + "系统", + "层" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "功能扩展层": { + "children": [ + { + "日志": { + "data": { + "uuid": "云原生-6-379", + "seg": [ + [ + [ + "日志" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1855", + "seg": [ + [ + [ + "功能", + "扩展", + "层" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-930", + "seg": [ + [ + [ + "鸟瞰", + "云", + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "认识集群的大脑": { + "children": [ + { + "从控制器视角看集群": { + "data": { + "uuid": "云原生-5-1856", + "seg": [ + [ + [ + "控制器", + "视角", + "集群" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制器示例": { + "children": [ + { + "服务控制器": { + "data": { + "uuid": "云原生-6-380", + "seg": [ + [ + [ + "服务", + "控制器" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "78293700", + "105859540", + "90512543" + ] + } + } + } + } + }, + { + "路由控制器": { + "data": { + "uuid": "云原生-6-381", + "seg": [ + [ + [ + "路由", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1857", + "seg": [ + [ + [ + "控制器", + "示例" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-931", + "seg": [ + [ + [ + "集群", + "大脑" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络与通信原理": { + "children": [ + { + "背景": { + "data": { + "uuid": "云原生-5-1858", + "seg": [ + [ + [ + "背景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "阿里云Kubernetes集群网络大图": { + "data": { + "uuid": "云原生-5-1859", + "seg": [ + [ + [ + "阿里", + "云", + "kubernetes", + "集群", + "网络", + "大图" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "78867173" + ] + } + } + } + } + }, + { + "集群网络搭建": { + "children": [ + { + "初始阶段": { + "data": { + "uuid": "云原生-6-382", + "seg": [ + [ + [ + "初始", + "阶段" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "集群阶段": { + "data": { + "uuid": "云原生-6-383", + "seg": [ + [ + [ + "集群", + "阶段" + ] + ] + ], + "level": "1", + "related_data": { + "blog": { + "data_id": [ + "78041811", + "51283216" + ] + } + } + } + } + }, + { + "节点阶段": { + "data": { + "uuid": "云原生-6-384", + "seg": [ + [ + [ + "节点", + "阶段" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "Pod阶段": { + "data": { + "uuid": "云原生-6-385", + "seg": [ + [ + [ + "pod", + "阶段" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1860", + "seg": [ + [ + [ + "集群", + "网络", + "搭建" + ] + ] + ], + "level": "1", + "related_data": {} + } + } + }, + { + "通信原理": { + "data": { + "uuid": "云原生-5-1861", + "seg": [ + [ + [ + "通信", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-932", + "seg": [ + [ + [ + "网络" + ], + [ + "通信", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点伸缩的实现": { + "children": [ + { + "节点增加原理": { + "children": [ + { + "手动添加已有节点": { + "data": { + "uuid": "云原生-6-386", + "seg": [ + [ + [ + "手动", + "添加", + "已有", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动添加已有节点": { + "data": { + "uuid": "云原生-6-387", + "seg": [ + [ + [ + "自动", + "添加", + "已有", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群扩容": { + "data": { + "uuid": "云原生-6-388", + "seg": [ + [ + [ + "集群", + "扩容" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自动伸缩": { + "data": { + "uuid": "云原生-6-389", + "seg": [ + [ + [ + "自动", + "伸缩" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "73457256" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1862", + "seg": [ + [ + [ + "节点", + "增加", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点减少原理": { + "data": { + "uuid": "云原生-5-1863", + "seg": [ + [ + [ + "节点", + "减少", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点池原理": { + "data": { + "uuid": "云原生-5-1864", + "seg": [ + [ + [ + "节点", + "池", + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-933", + "seg": [ + [ + [ + "节点", + "伸缩" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简洁的服务模型": { + "children": [ + { + "服务的本质是什么": { + "data": { + "uuid": "云原生-5-1865", + "seg": [ + [ + [ + "服务", + "本质" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自带通信员": { + "data": { + "uuid": "云原生-5-1866", + "seg": [ + [ + [ + "自带", + "通信员" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "让服务照进现实": { + "data": { + "uuid": "云原生-5-1867", + "seg": [ + [ + [ + "服务", + "照进", + "现实" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Netfilter的实现": { + "children": [ + { + "过滤器框架": { + "data": { + "uuid": "云原生-6-390", + "seg": [ + [ + [ + "过滤器", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点网络大图": { + "data": { + "uuid": "云原生-6-391", + "seg": [ + [ + [ + "节点", + "网络", + "大图" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "升级过滤器框架": { + "data": { + "uuid": "云原生-6-392", + "seg": [ + [ + [ + "升级", + "过滤器", + "框架" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "用自定义链实现服务的反向代理": { + "data": { + "uuid": "云原生-6-393", + "seg": [ + [ + [ + "自定义", + "链", + "服务", + "反向", + "代理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1868", + "seg": [ + [ + [ + "netfilter" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-934", + "seg": [ + [ + [ + "简洁", + "服务", + "模型" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "镜像下载自动化": { + "children": [ + { + "镜像下载这件小事": { + "data": { + "uuid": "云原生-5-1869", + "seg": [ + [ + [ + "镜像", + "下载", + "小事" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "理解OAuth 2.0协议": { + "data": { + "uuid": "云原生-5-1870", + "seg": [ + [ + [ + "理解", + "oauth", + "协议" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "71242834", + "51785649", + "76863105", + "54318128", + "89491551", + "78475297", + "80412500", + "78147306", + "78860080", + "108878391" + ] + } + } + } + } + }, + { + "Docker扮演的角色": { + "children": [ + { + "整体结构": { + "data": { + "uuid": "云原生-6-394", + "seg": [ + [ + [ + "整体", + "结构" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "理解docker login": { + "data": { + "uuid": "云原生-6-395", + "seg": [ + [ + [ + "理解", + "docker", + "login" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50578009" + ] + } + } + } + } + }, + { + "拉取镜像是怎么回事": { + "data": { + "uuid": "云原生-6-396", + "seg": [ + [ + [ + "拉取", + "镜像", + "怎么回事" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80647620", + "82878576" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1871", + "seg": [ + [ + [ + "docker", + "扮演", + "角色" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes实现的私有镜像自动拉取": { + "children": [ + { + "基本功能": { + "data": { + "uuid": "云原生-6-397", + "seg": [ + [ + [ + "基本功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "进阶方式": { + "data": { + "uuid": "云原生-6-398", + "seg": [ + [ + [ + "进阶", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1872", + "seg": [ + [ + [ + "kubernetes", + "私有", + "镜像", + "自动", + "拉取" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "阿里云实现的ACR credential helper": { + "data": { + "uuid": "云原生-5-1873", + "seg": [ + [ + [ + "阿里", + "云", + "acr", + "credential", + "helper" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80323149", + "82106977" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-935", + "seg": [ + [ + [ + "镜像", + "下载", + "自动化" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "日志服务的集成": { + "children": [ + { + "日志服务介绍": { + "data": { + "uuid": "云原生-5-1874", + "seg": [ + [ + [ + "日志", + "服务", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "97546884" + ] + } + } + } + } + }, + { + "采集方案介绍": { + "children": [ + { + "方案简介": { + "data": { + "uuid": "云原生-6-399", + "seg": [ + [ + [ + "方案", + "简介" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "87101059" + ] + } + } + } + } + }, + { + "运行流程": { + "data": { + "uuid": "云原生-6-400", + "seg": [ + [ + [ + "运行", + "流程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "配置方式": { + "data": { + "uuid": "云原生-6-401", + "seg": [ + [ + [ + "配置", + "方式" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1875", + "seg": [ + [ + [ + "采集", + "方案", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "核心技术介绍": { + "children": [ + { + "背景": { + "data": { + "uuid": "云原生-6-402", + "seg": [ + [ + [ + "背景" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现方式": { + "data": { + "uuid": "云原生-6-403", + "seg": [ + [ + [ + "方式" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "77843519" + ] + } + } + } + } + }, + { + "alibaba-log-controller内部实现": { + "data": { + "uuid": "云原生-6-404", + "seg": [ + [ + [ + "ali", + "baba", + "log", + "controller", + "内部" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82043611", + "88895230", + "117406039", + "109616805", + "110433327", + "109160454", + "116990920" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1876", + "seg": [ + [ + [ + "核心技术", + "介绍" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-936", + "seg": [ + [ + [ + "日志", + "服务", + "集成" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群与存储系统": { + "children": [ + { + "从应用的状态谈起": { + "children": [ + { + "无状态的应用": { + "data": { + "uuid": "云原生-6-405", + "seg": [ + [ + [ + "状态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "有状态的应用": { + "data": { + "uuid": "云原生-6-406", + "seg": [ + [ + [ + "状态" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1877", + "seg": [ + [ + [ + "状态", + "谈起" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基本单元:Pod Volume": { + "data": { + "uuid": "云原生-5-1878", + "seg": [ + [ + [ + "单元" + ] + ], + [ + [ + "pod", + "volume" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "核心设计:PVC与PV体系": { + "data": { + "uuid": "云原生-5-1879", + "seg": [ + [ + [ + "核心", + "设计" + ] + ], + [ + [ + "pvc" + ], + [ + "pv", + "体系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "与特定存储系统解耦": { + "children": [ + { + "Volume Plugin": { + "data": { + "uuid": "云原生-6-407", + "seg": [ + [ + [ + "volume", + "plugin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "in-tree(内置) Volume Plugin": { + "data": { + "uuid": "云原生-6-408", + "seg": [ + [ + [ + "in", + "tree", + "内置", + "volume", + "plugin" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80314707" + ] + } + } + } + } + }, + { + "out-of-tree(外置) Volume Plugin": { + "data": { + "uuid": "云原生-6-409", + "seg": [ + [ + [ + "out", + "of", + "tree", + "外置", + "volume", + "plugin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1880", + "seg": [ + [ + [], + [ + "特定", + "存储系统", + "解", + "耦" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kubernetes CSI管控组件容器化部署": { + "data": { + "uuid": "云原生-5-1881", + "seg": [ + [ + [ + "kubernetes", + "csi", + "管控", + "组件", + "容器", + "化", + "部署" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "基于Kubernetes的存储": { + "data": { + "uuid": "云原生-5-1882", + "seg": [ + [ + [ + "kubernetes", + "存储" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-937", + "seg": [ + [ + [ + "集群" + ], + [ + "存储系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "流量路由Ingress": { + "children": [ + { + "基本原理": { + "children": [ + { + "基础用法": { + "data": { + "uuid": "云原生-6-410", + "seg": [ + [ + [ + "基础", + "用法" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "88219891" + ] + } + } + } + } + }, + { + "配置安全路由": { + "data": { + "uuid": "云原生-6-411", + "seg": [ + [ + [ + "配置", + "路由" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50610287" + ] + } + } + } + } + }, + { + "全局配置和局部配置": { + "data": { + "uuid": "云原生-6-412", + "seg": [ + [ + [ + "全局", + "配置" + ], + [ + "局部", + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实现原理": { + "data": { + "uuid": "云原生-6-413", + "seg": [ + [ + [ + "原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1883", + "seg": [ + [ + [ + "基本原理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "场景化需求": { + "children": [ + { + "多入口访问Ingress": { + "data": { + "uuid": "云原生-6-414", + "seg": [ + [ + [ + "入口", + "访问", + "ingress" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "部署多套Ingress Controller": { + "data": { + "uuid": "云原生-6-415", + "seg": [ + [ + [ + "部署", + "ingress", + "controller" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1884", + "seg": [ + [ + [ + "场景", + "化", + "需求" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "49490339" + ] + } + } + } + } + }, + { + "获取客户端真实IP地址": { + "children": [ + { + "理解客户端真实IP地址的传递过程": { + "data": { + "uuid": "云原生-6-416", + "seg": [ + [ + [ + "理解", + "客户端", + "真实", + "ip地址", + "传递", + "过程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "ExternalTrafficPolicy的影响": { + "data": { + "uuid": "云原生-6-417", + "seg": [ + [ + [ + "externaltrafficpolicy", + "影响" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "如何获取客户端真实IP地址": { + "data": { + "uuid": "云原生-6-418", + "seg": [ + [ + [ + "获取", + "客户端", + "真实", + "ip地址" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115397061", + "87974209", + "54142055", + "93385585", + "112968120", + "71082328", + "73438093", + "80700423", + "72798423", + "101262685" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1885", + "seg": [ + [ + [ + "获取", + "客户端", + "真实", + "ip地址" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "白名单功能": { + "data": { + "uuid": "云原生-5-1886", + "seg": [ + [ + [ + "白名单", + "功能" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-938", + "seg": [ + [ + [ + "流量", + "路由", + "ingress" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "升级设计与实现": { + "children": [ + { + "升级预检": { + "children": [ + { + "核心组件检查项": { + "data": { + "uuid": "云原生-6-419", + "seg": [ + [ + [ + "核心", + "组件", + "检查", + "项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "前置检查增项": { + "data": { + "uuid": "云原生-6-420", + "seg": [ + [ + [ + "前置", + "检查", + "增项" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1887", + "seg": [ + [ + [ + "升级", + "预检" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原地升级与替代升级": { + "children": [ + { + "原地升级": { + "data": { + "uuid": "云原生-6-421", + "seg": [ + [ + [ + "原地", + "升级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "替代升级": { + "data": { + "uuid": "云原生-6-422", + "seg": [ + [ + [ + "升级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1888", + "seg": [ + [ + [ + "原地", + "升级" + ], + [ + "升级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "升级三部曲": { + "children": [ + { + "升级Master节点": { + "data": { + "uuid": "云原生-6-423", + "seg": [ + [ + [ + "升级", + "master", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "升级Worker节点": { + "data": { + "uuid": "云原生-6-424", + "seg": [ + [ + [ + "升级", + "worker", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "核心组件升级": { + "data": { + "uuid": "云原生-6-425", + "seg": [ + [ + [ + "核心", + "组件", + "升级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1889", + "seg": [ + [ + [ + "升级" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-939", + "seg": [ + [ + [ + "升级", + "设计" + ], + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-213", + "seg": [ + [ + [ + "理论", + "篇", + "技术", + "进阶" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "实践篇(诊断之美)": { + "children": [ + { + "节点就绪状态异常(一)": { + "children": [ + { + "Docker栈": { + "children": [ + { + "docker daemon调用栈分析": { + "data": { + "uuid": "云原生-6-426", + "seg": [ + [ + [ + "docker", + "daemon", + "调用", + "栈", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Containerd调用栈分析": { + "data": { + "uuid": "云原生-6-427", + "seg": [ + [ + [ + "containerd", + "调用", + "栈", + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1890", + "seg": [ + [ + [ + "docker", + "栈" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "什么是D-Bus": { + "children": [ + { + "runC请求D-Bus": { + "data": { + "uuid": "云原生-6-428", + "seg": [ + [ + [ + "runc", + "d", + "bus" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "82698744" + ] + } + } + } + } + }, + { + "原因并不在D-Bus": { + "data": { + "uuid": "云原生-6-429", + "seg": [ + [ + [ + "原因", + "d", + "bus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1891", + "seg": [ + [ + [ + "d", + "bus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Systemd是硬骨头": { + "children": [ + { + "“没用”的core dump": { + "data": { + "uuid": "云原生-6-430", + "seg": [ + [ + [ + "没用", + "core", + "dump" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80363060" + ] + } + } + } + } + }, + { + "零散的信息": { + "data": { + "uuid": "云原生-6-431", + "seg": [ + [ + [ + "零散", + "信息" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "代码分析": { + "data": { + "uuid": "云原生-6-432", + "seg": [ + [ + [ + "分析" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Live Debugging": { + "data": { + "uuid": "云原生-6-433", + "seg": [ + [ + [ + "live", + "debugging" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1892", + "seg": [ + [ + [ + "systemd", + "硬骨头" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80493760", + "113577081" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-940", + "seg": [ + [ + [ + "节点", + "就绪", + "状态", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点就绪状态异常(二)": { + "children": [ + { + "节点状态机": { + "data": { + "uuid": "云原生-5-1893", + "seg": [ + [ + [ + "节点", + "状态机" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "就绪三分钟": { + "data": { + "uuid": "云原生-5-1894", + "seg": [ + [ + [ + "就绪" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "止步不前的PLEG": { + "data": { + "uuid": "云原生-5-1895", + "seg": [ + [ + [ + "止步不前", + "pleg" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "无响应的Terwayd": { + "data": { + "uuid": "云原生-5-1896", + "seg": [ + [ + [ + "响应", + "terwayd" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "原因": { + "data": { + "uuid": "云原生-5-1897", + "seg": [ + [ + [ + "原因" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "修复": { + "data": { + "uuid": "云原生-5-1898", + "seg": [ + [ + [ + "修复" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-941", + "seg": [ + [ + [ + "节点", + "就绪", + "状态", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名空间回收机制失效": { + "children": [ + { + "集群管控入口": { + "data": { + "uuid": "云原生-5-1899", + "seg": [ + [ + [ + "集群", + "管控", + "入口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "命名空间控制器的行为": { + "children": [ + { + "删除收纳盒里的资源": { + "data": { + "uuid": "云原生-6-434", + "seg": [ + [ + [ + "删除", + "收纳盒", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "API、Group、Version": { + "data": { + "uuid": "云原生-6-435", + "seg": [ + [ + [ + "api" + ], + [ + "group" + ], + [ + "version" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制器不能删除命名空间里的资源": { + "data": { + "uuid": "云原生-6-436", + "seg": [ + [ + [ + "控制器", + "删除", + "命名", + "空间", + "资源" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "80712245" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-5-1900", + "seg": [ + [ + [ + "命名", + "空间", + "控制器" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "回到集群管控入口": { + "data": { + "uuid": "云原生-5-1901", + "seg": [ + [ + [ + "回到", + "集群", + "管控", + "入口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "节点与Pod的通信": { + "data": { + "uuid": "云原生-5-1902", + "seg": [ + [ + [ + "节点" + ], + [ + "pod", + "通信" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "集群节点访问云资源": { + "data": { + "uuid": "云原生-5-1903", + "seg": [ + [ + [ + "集群", + "节点", + "访问", + "云", + "资源" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-942", + "seg": [ + [ + [ + "命名", + "空间", + "回收", + "机制", + "失效" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网络安全组加固对与错": { + "children": [ + { + "安全组扮演的角色": { + "data": { + "uuid": "云原生-5-1904", + "seg": [ + [ + [ + "扮演", + "角色" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "安全组与集群网络": { + "data": { + "uuid": "云原生-5-1905", + "seg": [ + [ + [ + "组与", + "集群", + "网络" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "怎么管理安全组规则": { + "children": [ + { + "限制集群访问外网": { + "data": { + "uuid": "云原生-6-437", + "seg": [ + [ + [ + "集群", + "访问", + "网" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "IDC与集群互访": { + "data": { + "uuid": "云原生-6-438", + "seg": [ + [ + [ + "idc" + ], + [ + "集群", + "互访" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115398339" + ] + } + } + } + } + }, + { + "使用新的安全组管理节点": { + "data": { + "uuid": "云原生-6-439", + "seg": [ + [ + [ + "管理", + "节点" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-5-1906", + "seg": [ + [ + [ + "管理", + "规则" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-943", + "seg": [ + [ + [ + "网络安全", + "加固" + ], + [ + "错" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网格应用存活状态异常": { + "children": [ + { + "代理与代理的生命周期管理": { + "data": { + "uuid": "云原生-5-1907", + "seg": [ + [ + [ + "代理" + ], + [ + "代理", + "生命周期", + "管理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "控制面和数据面": { + "data": { + "uuid": "云原生-5-1908", + "seg": [ + [ + [ + "控制", + "面" + ], + [ + "数据", + "面" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "简单的原因": { + "data": { + "uuid": "云原生-5-1909", + "seg": [ + [ + [ + "原因" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "阿里云服务网格(ASM)介绍": { + "data": { + "uuid": "云原生-5-1910", + "seg": [ + [ + [ + "阿里", + "云", + "服务", + "网格", + "asm", + "介绍" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "108931831", + "108922599", + "108931112", + "54411392", + "84954935", + "77283193", + "108932943", + "10944819", + "8577784", + "73506035" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-944", + "seg": [ + [ + [ + "网格", + "存活", + "状态", + "异常" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "网格自签名根证书过期": { + "children": [ + { + "连续重启的Citadel": { + "data": { + "uuid": "云原生-5-1911", + "seg": [ + [ + [ + "连续", + "重启", + "citadel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "一般意义上的证书验证": { + "data": { + "uuid": "云原生-5-1912", + "seg": [ + [ + [ + "意义", + "证书", + "验证" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "自签名证书验证失败": { + "data": { + "uuid": "云原生-5-1913", + "seg": [ + [ + [ + "签名", + "证书", + "验证", + "失败" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大神定理": { + "data": { + "uuid": "云原生-5-1914", + "seg": [ + [ + [ + "定理" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Citadel证书体系": { + "data": { + "uuid": "云原生-5-1915", + "seg": [ + [ + [ + "citadel", + "证书", + "体系" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "经验": { + "data": { + "uuid": "云原生-5-1916", + "seg": [ + [ + [ + "经验" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-945", + "seg": [ + [ + [ + "网格", + "签名", + "证书" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-214", + "seg": [ + [ + [ + "实践", + "篇", + "诊断", + "美" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-12", + "seg": [ + [ + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DevOps": { + "children": [ + { + "运维": { + "children": [ + { + "配置": { + "children": [ + { + "CUE(Cisco Unity Express)": { + "data": { + "uuid": "云原生-5-1917", + "seg": [ + [ + [ + "cue", + "cisco", + "unity", + "express" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Jsonnet": { + "data": { + "uuid": "云原生-5-1918", + "seg": [ + [ + [ + "jsonnet" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "HCL": { + "data": { + "uuid": "云原生-5-1919", + "seg": [ + [ + [ + "hcl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "BCL": { + "data": { + "uuid": "云原生-5-1920", + "seg": [ + [ + [ + "bcl" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "KubeVela": { + "data": { + "uuid": "云原生-5-1921", + "seg": [ + [ + [ + "kubevela" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Terraform": { + "data": { + "uuid": "云原生-5-1922", + "seg": [ + [ + [ + "terra", + "for", + "m" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "115628929" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-4-946", + "seg": [ + [ + [ + "配置" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-215", + "seg": [ + [ + [ + "运维" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "API": { + "children": [ + { + "GraphQL": { + "data": { + "uuid": "云原生-4-947", + "seg": [ + [ + [ + "graphql" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Swagger UI": { + "data": { + "uuid": "云原生-4-948", + "seg": [ + [ + [ + "swagger", + "ui" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "gRPC": { + "data": { + "uuid": "云原生-4-949", + "seg": [ + [ + [ + "grpc" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-216", + "seg": [ + [ + [ + "api" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "诊断": { + "children": [ + { + "OpenTracing标准": { + "data": { + "uuid": "云原生-4-950", + "seg": [ + [ + [ + "opentracing", + "标准" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SkyWalking": { + "data": { + "uuid": "云原生-4-951", + "seg": [ + [ + [ + "skywalking" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Zipkin": { + "data": { + "uuid": "云原生-4-952", + "seg": [ + [ + [ + "zipkin" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Jaeger": { + "data": { + "uuid": "云原生-4-953", + "seg": [ + [ + [ + "jaeger" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sonobuoy": { + "data": { + "uuid": "云原生-4-954", + "seg": [ + [ + [ + "sonobuoy" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-217", + "seg": [ + [ + [ + "诊断" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "质量": { + "children": [ + { + "Litmus": { + "data": { + "uuid": "云原生-4-955", + "seg": [ + [ + [ + "litmus" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Sysbench": { + "data": { + "uuid": "云原生-4-956", + "seg": [ + [ + [ + "sys", + "ben", + "ch" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "113796788" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-3-218", + "seg": [ + [ + [ + "质量" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-13", + "seg": [ + [ + [ + "devops" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "操作系统": { + "children": [ + { + "CoreOS": { + "data": { + "uuid": "云原生-3-219", + "seg": [ + [ + [ + "coreos" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "50427312" + ] + } + } + } + } + }, + { + "Alibaba Linux": { + "data": { + "uuid": "云原生-3-220", + "seg": [ + [ + [ + "ali", + "baba", + "linux" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Tencent Linux": { + "data": { + "uuid": "云原生-3-221", + "seg": [ + [ + [ + "tencent", + "linux" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-14", + "seg": [ + [ + [ + "操作系统" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "data": { + "uuid": "云原生-2-15", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-3", + "seg": [ + [ + [ + "云", + "原生", + "中阶", + "平台", + "开发" + ] + ] + ], + "related_data": {} + } + } + }, + { + "云原生高阶-应用开发": { + "children": [ + { + "Serverless": { + "children": [ + { + "BaaS Serverless": { + "children": [ + { + "Spring Cloud Connector": { + "data": { + "uuid": "云原生-4-957", + "seg": [ + [ + [ + "spring", + "cloud", + "connector" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Open Service Broker": { + "data": { + "uuid": "云原生-4-958", + "seg": [ + [ + [ + "open", + "service", + "broker" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-222", + "seg": [ + [ + [ + "baas", + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-16", + "seg": [ + [ + [ + "serverless" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "编程语言": { + "children": [ + { + "Java": { + "children": [ + { + "减小镜像": { + "children": [ + { + "Alpine Portola": { + "data": { + "uuid": "云原生-5-1923", + "seg": [ + [ + [ + "alpine", + "portola" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "JDK (version >= 9)": { + "data": { + "uuid": "云原生-5-1924", + "seg": [ + [ + [ + "jdk", + "version" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Spring Boot (version > 2.3)": { + "data": { + "uuid": "云原生-5-1925", + "seg": [ + [ + [ + "spring", + "boot", + "version" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-959", + "seg": [ + [ + [ + "减小", + "镜像" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "降低资源占用率": { + "children": [ + { + "Project Panama": { + "data": { + "uuid": "云原生-5-1926", + "seg": [ + [ + [ + "project", + "panama" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Project Valhalla": { + "data": { + "uuid": "云原生-5-1927", + "seg": [ + [ + [ + "project", + "valhalla" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-960", + "seg": [ + [ + [ + "降低", + "资源", + "占用率" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "缩短冷启动时间": { + "children": [ + { + "GraalVM": { + "data": { + "uuid": "云原生-5-1928", + "seg": [ + [ + [ + "graalvm" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "111290040", + "103324194" + ] + } + } + } + } + }, + { + "Quarkus": { + "data": { + "uuid": "云原生-5-1929", + "seg": [ + [ + [ + "quarkus" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "114027903" + ] + } + } + } + } + }, + { + "Micronaut": { + "data": { + "uuid": "云原生-5-1930", + "seg": [ + [ + [ + "micronaut" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Helidon": { + "data": { + "uuid": "云原生-5-1931", + "seg": [ + [ + [ + "helidon" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-961", + "seg": [ + [ + [ + "缩短", + "冷启动", + "时间" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-223", + "seg": [ + [ + [ + "java" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "116266501", + "89219985", + "109063041", + "51130030", + "83619274", + "109040570", + "97156939", + "71698167", + "51594039", + "102694262" + ] + } + } + } + } + } + ], + "data": { + "uuid": "云原生-2-17", + "seg": [ + [ + [ + "编程语言" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "data": { + "uuid": "云原生-2-18", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-4", + "seg": [ + [ + [ + "云", + "原生", + "高阶", + "开发" + ] + ] + ], + "related_data": {} + } + } + }, + { + "云原生高阶-平台开发": { + "children": [ + { + "Kubernetes": { + "children": [ + { + "接口": { + "children": [ + { + "CNI(Container Network Interface)": { + "children": [ + { + "Flannel": { + "data": { + "uuid": "云原生-5-1932", + "seg": [ + [ + [ + "flannel" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Calico": { + "data": { + "uuid": "云原生-5-1933", + "seg": [ + [ + [ + "calico" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Weave": { + "data": { + "uuid": "云原生-5-1934", + "seg": [ + [ + [ + "weave" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OVN(Open Virtual Network)": { + "data": { + "uuid": "云原生-5-1935", + "seg": [ + [ + [ + "ovn", + "open", + "virtual", + "network" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "SR-IOV(Single-root Input/Output Virtualization)": { + "data": { + "uuid": "云原生-5-1936", + "seg": [ + [ + [ + "sr", + "iov", + "single", + "root", + "input", + "output", + "virtualization" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "89524957" + ] + } + } + } + } + }, + { + "Romana": { + "data": { + "uuid": "云原生-5-1937", + "seg": [ + [ + [ + "romana" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "OpenContrail": { + "data": { + "uuid": "云原生-5-1938", + "seg": [ + [ + [ + "opencontrail" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Kuryr": { + "data": { + "uuid": "云原生-5-1939", + "seg": [ + [ + [ + "kuryr" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-962", + "seg": [ + [ + [ + "cni", + "container", + "network", + "interface" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CRI(Container Runtime Interface)": { + "children": [ + { + "Frakti": { + "data": { + "uuid": "云原生-5-1940", + "seg": [ + [ + [ + "frakti" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-963", + "seg": [ + [ + [ + "cri", + "container", + "runtime", + "interface" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "CSI(Container Storage Interface)": { + "children": [ + { + "FlexVolume": { + "data": { + "uuid": "云原生-5-1941", + "seg": [ + [ + [ + "flexvolume" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "GlusterFS": { + "data": { + "uuid": "云原生-5-1942", + "seg": [ + [ + [ + "glusterfs" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-964", + "seg": [ + [ + [ + "csi", + "container", + "storage", + "interface" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-224", + "seg": [ + [ + [ + "接口" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "PaaS": { + "children": [ + { + "Cloud Foundry": { + "data": { + "uuid": "云原生-4-965", + "seg": [ + [ + [ + "cloud", + "foundry" + ] + ] + ], + "level": "2", + "related_data": { + "blog": { + "data_id": [ + "49861897", + "7192000", + "44591591", + "45041319", + "45054165", + "8047329" + ] + } + } + } + } + }, + { + "Crossplane": { + "data": { + "uuid": "云原生-4-966", + "seg": [ + [ + [ + "crossplane" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Anthos": { + "data": { + "uuid": "云原生-4-967", + "seg": [ + [ + [ + "anthos" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "KubeSphere": { + "data": { + "uuid": "云原生-4-968", + "seg": [ + [ + [ + "kubesphere" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-225", + "seg": [ + [ + [ + "paas" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-19", + "seg": [ + [ + [ + "kubernetes" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "DevOps": { + "children": [ + { + "运维": { + "children": [ + { + "编程": { + "children": [ + { + "Operator": { + "data": { + "uuid": "云原生-5-1943", + "seg": [ + [ + [ + "operator" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Pulumi": { + "data": { + "uuid": "云原生-5-1944", + "seg": [ + [ + [ + "pulumi" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Ballerina": { + "data": { + "uuid": "云原生-5-1945", + "seg": [ + [ + [ + "ballerina" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "cdk8s": { + "data": { + "uuid": "云原生-5-1946", + "seg": [ + [ + [ + "cdk8s" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-4-969", + "seg": [ + [ + [ + "编程" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-226", + "seg": [ + [ + [ + "运维" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-20", + "seg": [ + [ + [ + "devops" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "中间件": { + "children": [ + { + "数据库": { + "children": [ + { + "Database Mesh": { + "data": { + "uuid": "云原生-4-970", + "seg": [ + [ + [ + "database", + "mesh" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-227", + "seg": [ + [ + [ + "数据库" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "大数据": { + "children": [ + { + "Kubeflow": { + "data": { + "uuid": "云原生-4-971", + "seg": [ + [ + [ + "kubeflow" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "Fluid": { + "data": { + "uuid": "云原生-4-972", + "seg": [ + [ + [ + "fluid" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "KubeTEE": { + "data": { + "uuid": "云原生-4-973", + "seg": [ + [ + [ + "kubetee" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-3-228", + "seg": [ + [ + [ + "数据" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-2-21", + "seg": [ + [ + [ + "中间件" + ] + ] + ], + "level": "2", + "related_data": {} + } + } + }, + { + "其他": { + "data": { + "uuid": "云原生-2-22", + "seg": [ + [ + [] + ] + ], + "level": "2", + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-5", + "seg": [ + [ + [ + "云", + "原生", + "高阶", + "平台", + "开发" + ] + ] + ], + "related_data": {} + } + } + }, + { + "其他": { + "children": [ + { + "其他类别标签问题": { + "data": { + "uuid": "云原生-2-23", + "seg": [ + [ + [ + "类别", + "标签" + ] + ] + ], + "related_data": {} + } + } + }, + { + "应用类问题": { + "data": { + "uuid": "云原生-2-24", + "seg": [ + [ + [ + "类" + ] + ] + ], + "related_data": {} + } + } + }, + { + "第三方包问题": { + "data": { + "uuid": "云原生-2-25", + "seg": [ + [ + [ + "包" + ] + ] + ], + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-1-6", + "seg": [ + [ + [] + ] + ], + "related_data": {} + } + } + } + ], + "data": { + "uuid": "云原生-0-0", + "seg": [ + [ + [ + "csdn", + "roadmap", + "云", + "原生", + "revised" + ] + ] + ], + "related_data": {} + } + } +} \ No newline at end of file diff --git "a/data/\344\272\221\345\216\237\347\224\237_tree.txt" "b/data/\344\272\221\345\216\237\347\224\237_tree.txt" new file mode 100644 index 0000000..ad28fa9 --- /dev/null +++ "b/data/\344\272\221\345\216\237\347\224\237_tree.txt" @@ -0,0 +1,3712 @@ +云原生 --> ( 难度等级: 无 || 挂载数据: 无 ) +├── 云原生初阶-应用开发 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Cloud Events --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Serverless Framework --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Serverless Devs --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── FaaS Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Nuclio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubeless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubeless概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 部署Kubeless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 配置客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 部署函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Kubeless UI --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Function --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 函数调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自动扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Fission --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署Fission --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 部署Fission Chart --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 命令行工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Hello Fission --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 深入探讨Fission --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Environment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 执行模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Poolbased模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── New Deploy模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Workflows --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Workflows定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置Workflows --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Fortune Whale --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ ├── OpenFaas --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 初识OpenFaaS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 图形界面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── OpenFaaS函数 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ │ ├── 抽象方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 函数模板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 构建函数 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ │ └── 推送镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Watchdog --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 工作原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 配置Watchdog --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── ofwatchdog --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 监控指标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 监控面板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 监控预警 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 弹性扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 基于Alertmanager扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 基于HPA扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 函数应用市场 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OpenWhisk --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Hello Whisk --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 逻辑架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Namespace --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Package --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Action --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── Feed --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Rule --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 系统架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Kubernetes部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 准备Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 集群基础设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 创建访问入口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 部署组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 加载系统配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 测试集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 删除集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Helm部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 安装Helm --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 环境配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 部署Chart --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ │ └── 管理应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 蛋糕管理服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义Action --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建Package --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署Action --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 发布API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Fn Project --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 踏上征途 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 无服务器初探 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 来龙去脉 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面向服务的架构与微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 从SOA到微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 微服务的价值与挑战 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 软件设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无服务器架构原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 根据需要使用计算服务执行代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 编写单一用途的无状态函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设计基于推送的、事件驱动的管道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建更厚、更强大的前端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 拥抱第三方服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从服务器过渡到服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 无服务器的利与弊 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 决策驱动因素 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 什么时候使用无服务器 --> ( 难度等级: 初阶 || 挂载数据: blog: 10 ) +│ │ ├── .架构与模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 应用程序后端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据处理与操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实时分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 遗留API代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 计划服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 机器人(Bot)和技能(Skill) . --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 计算即后端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 遗留API代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 混合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── GraphQL . --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 计算即胶水 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 实时处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 命令模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 消息传输模式 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 优先级队列模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 扇出模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 管道和过滤器模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 建立无服务器应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 小时视频 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 总体需求 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Amazon Web Services(AWS) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建第一个Lambda函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命名你的Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 本地测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署到AWS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 连接S3 和Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在AWS中测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 观察日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置Simple Notification Service --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 连接SNS和S --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从SNS接收电子邮件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 测试SNS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设置视频权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建第二个函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置与安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 测试第二个函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生成元数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 收尾 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 设置你的云服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 安全模型和身份管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 创建和管理IAM用户 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入核心 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 身份认证和授权 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无服务器环境中的身份认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 无服务器方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Amazon Cognito --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Auth0 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为 24 小时视频增加身份认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 计划 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 直接调用Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 小时视频网站 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Auth0 配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在网站中加入Auth0 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 测试Auth0 的集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 与AWS集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用户信息Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API Gateway --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 作为接口的API Gateway --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ │ ├── 和AWS服务集成 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ │ └── 脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 创建资源和方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 配置方法执行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 更新网站 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 优化网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过API Gateway调用Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义授权方 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 委托令牌 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 真实案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 开通委托令牌 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 编排者Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Lambda内幕 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 事件模型和源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 推送和拉取事件模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 并发执行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器重用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 冷Lambda和暖Lambda --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 编程模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数处理程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 事件对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 上下文对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 回调函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 代码开发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Handler --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 执行上下文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 日志输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 异常处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 无状态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 版本管理、别名和环境变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 版本管理 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 别名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 环境变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用命令行界面(CLI) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 调用命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Lambda模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 异步瀑布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 序列与并行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 把逻辑移到另一个文件中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 测试Lambda函数 . --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在本地测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 编写测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 拓展架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 存储 . --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更智能的存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 版本控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 托管静态网站 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 存储类别 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── 对象生命周期管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 转移加速 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 事件通知 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全上传 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 上传策略Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── S3 CORS配置 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 在网站中上传 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 限制对文件的访问 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 禁止公开访问 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生成预签名URL --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 签名URL Lambda --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── API Gateway设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 提升性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 提升Firebase安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Firebase简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 安全规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 为 24 小时视频添加Firebase --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设置Firebase --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 修改转码视频Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Transcode Video Firebase Update函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 连接Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网站 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 端到端测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 最后一英里 . --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署与框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 迈向更好的微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Step Functions --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── AWS Marketplace --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 未来之路 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Serverless基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Serverless技术的发展 --> ( 难度等级: 中阶 || 挂载数据: blog: 9 ) +│ │ │ │ ├── Serverless框架和工具 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ │ ├── Chalice --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Claudia.js --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── Apex --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Spring Cloud Function --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ └── AWS SAM --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Serverless后台服务 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 获取AWS账号 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── AWS Lambda控制面板 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 编辑函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 外部访问 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 运维监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 回顾 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Serverless带来的价值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless的技术实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 理念与实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── FaaS与BaaS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── FaaS的架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 函数的生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数工作流 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── BaaS的价值 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 广义的Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless应用架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传统应用架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Serverless应用架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Serverless的技术特点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless的应用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Serverless的局限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AWS Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── AWS Serverless --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── AWS Lambda概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 权限控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── IAM --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 角色 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 事件驱动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 事件源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 触发模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 日志监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 开发辅助 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 标签 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 运行限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 并发控制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Azure Functions --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Microsoft Azure --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Azure Functions概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Azure Serverless应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 注册Azure账号 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Azure控制台 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 调用函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Azure Functions命令行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装命令行 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 发布至公有云 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 深入了解Azure Functions --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数应用设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Trigger与Bindings --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── HTTP Trigger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Cronjob Trigger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Kafka Trigger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── NATS Trigger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Slot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 私有云部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 容器技术基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 容器镜像 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── 镜像仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 容器编排 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Vagrant --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── VirtualBox --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 安装Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 运行容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建容器镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 分享镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命名空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Deployment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ReplicaSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Ingress --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 交互工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 构建Kubernetes环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 启动Vagrant Box --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 修改默认域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Serverless的落地与展望 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless的落地 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless平台建设 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 公有云 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 私有云 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 混合云 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless应用架构转型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设计原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 迁移与重构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Serverless的未来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 建立行业规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 完善工具链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 初识Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 优势与劣势 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 影响力和价值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 典型应用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 视频转码服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据ETL处理服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网站(服务)后端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 人工智能推理预测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 物联网相关应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Serverless入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless架构规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数相关规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 事件与规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 相关术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 上下文属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 工业化产品 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Google Cloud Function --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 腾讯云SCF --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ └── 开发运维工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CLI命令行工具 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Web与监控告警场景实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Web后端与应用服务端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 上传图片加水印 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 用IP地址查天气并在小程序中应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 简易用户反馈功能与快应用实践 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 大数据与人工智能场景实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 大数据技术之MapReduce的简单实现 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ └── 人工智能领域的实践 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 自然语言处理为你的网站赋能 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 智能客服与微信小程序 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 简单的车牌识别系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 视觉:对象检测系统 --> ( 难度等级: 高阶 || 挂载数据: blog: 1 ) +│ │ ├── 物联网和其他场景实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 物联网相关—定制智能音箱小工具 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 其他场景实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OJ判题机/小程序在线编程系统实现 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 微信公众号机器人 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Serverless范式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless架构不仅仅是实时的 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Serverless的优缺点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 在AWS中构建Serverless应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── AWS Lambda的触发器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数即容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Lambda函数的版本控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 创建部署包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 设置Serverless架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── S3触发器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SNS触发器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SQS触发器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── CloudWatch触发器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 部署Serverless API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 设置集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为API部署Lambda函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 处理身份验证与用户控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 扩展Serverless架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第三方编排工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务器的创建和终止 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 扩展的难点及解决方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── AWS Lambda的安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 了解AWS VPC --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ ├── 了解VPC中的子网 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在私有子网内保护Lambda --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Lambda函数的访问控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 在Lambda中使用STS执行安全会话 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用SAM部署Lambda函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SAM简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将CloudFormation用于Serverless服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用SAM进行部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 了解SAM中的安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 微软Azure Functions简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微软Azure Functions简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 创建你的第一个Azure Function --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 了解触发器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 编写微软Azure Functions的最佳实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Service Mesh --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Linkerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Conduit --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Service Mesh的现状 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Istio架构分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Framework --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Dubbo --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 常用组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Tars --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 单体架构及其存在的不足 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单体架构简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单体架构存在的不足 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 单体架构使用服务器集群及存在的不足 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 什么是微服务 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 微服务的优势 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务的不足 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 微服务的复杂度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分布式事务 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── 服务的划分 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 服务的部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务和SOA的关系 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 微服务的设计原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Cloud简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务应该具备的功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务的注册与发现 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ ├── 服务的负载均衡 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── 服务的容错 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 服务网关的实现原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── After路由断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Header断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Cookie路由断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Host路由断言工厂 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ ├── Method路由断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Path路由断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── Query路由断言工厂 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 过滤器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 过滤器的作用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 过滤器的生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 网关过滤器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 全局过滤器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 限流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 常见的限流算法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 服务网关的限流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 普通方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 条件方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 服务化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 工程介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── service-gateway工程详细介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务配置的统一管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 服务链路追踪 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Dubbo简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Could与Kubernetes比较 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 构建微服务的准备 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDK的安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── JDK的下载和安装 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 环境变量的配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IDEA的安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── IDEA的下载 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 用IDEA创建一个Spring Boot工程 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── 构建工具Maven的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Maven简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Maven的安装 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Maven的核心概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编写Pom文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 常用的Maven命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 开发框架Spring Boot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Boot的特点 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── Spring Boot的优点 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 用IDEA构建Spring Boot工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在Spring Boot工程中构建Web程序 --> ( 难度等级: 初阶 || 挂载数据: blog: 8 ) +│ │ │ │ └── Spring Boot的测试 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Spring Boot配置文件详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将配置文件的属性赋给实体类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 多个环境的配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 运行状态监控Actuator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看运行程序的健康状态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看运行程序的Bean --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用Actuator关闭应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用shell连接Actuator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot整合JPA --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Spring Boot整合Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Redis的安装 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 在Spring Boot中使用Redis --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── Spring Boot整合Swagger2,搭建Restful API在线文档 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 负载均衡Ribbon --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── RestTemplate简介 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Ribbon简介 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 使用RestTemplate和Ribbon来消费服务 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── LoadBalancerClient简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 源码解析Ribbon --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 声明式调用Feign --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 写一个Feign客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── FeignClient详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── FeignClient的配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从源码的角度讲解Feign的工作原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Feign中使用HttpClient和OkHttp --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Feign是如何实现负载均衡的 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ ├── 熔断器Hystrix --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Hystrix简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Hystrix的设计原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Hystrix的工作机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Feign上使用熔断器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Hystrix Dashboard监控熔断器的状态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在RestTemplate中使用Hystrix Dashboard --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在Feign中使用Hystrix Dashboard --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── 使用Turbine聚合监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 路由网关Spring Cloud Zuul --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Zuul的工作原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ ├── 配置中心Spring Cloud Config --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Config Server从本地读取配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建Config Server --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 构建Config Client --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ ├── Config Server从远程Git仓库读取配置文件 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── 构建高可用的Config Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建Eureka Server --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 改造Config Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 改造Config Client --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Spring Cloud Bus刷新配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 将配置存储在MySQL数据库中 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 改造config-server工程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 初始化数据库 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ ├── 服务链路追踪Spring Cloud Sleuth --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 案例讲解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启动Zipkin Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建服务提供者 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 构建服务消费者 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在链路数据中添加自定义数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用RabbitMQ传输链路数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在MySQL数据库中存储链路数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 在ElasticSearch中存储链路数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用Kibana展示链路数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务监控Spring Boot Admin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Spring Boot Admin监控Spring Boot应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建Spring Boot Admin Server --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建Spring Boot Admin Client --> ( 难度等级: 高阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 使用Spring Boot Admin监控Spring Cloud微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建Admin Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 构建Admin Client --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ └── 在Spring Boot Admin中添加Security和Mail组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot Admin集成Security组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Boot Admin集成Mail组件 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── Spring Boot Security详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Security简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 什么是Spring Security --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── Spring Security提供的安全模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot Security与Spring Security的关系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Boot Security案例详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 构建Spring Boot Security工程 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 配置Spring Security --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 编写相关界面 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Security方法级别上的保护 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 从数据库中读取用户的认证信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Spring Cloud OAuth2保护微服务系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是OAuth2 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何使用Spring OAuth2 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── OAuth2 Provider --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── OAuth2 Client --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ └── 案例分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编写Eureka Server --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 编写Uaa授权服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编写service-hi资源服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 案例架构设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编写主Maven工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 编写user-service资源服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Spring Security OAuth2和JWT保护微服务系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── JWT简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是JWT --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── JWT的结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JWT的应用场景 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── 如何使用JWT --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用Spring Cloud构建微服务综合案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 案例介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 工程结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用的技术栈 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 工程架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 功能展示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 案例详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 准备工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建主Maven工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建eureka-server工程 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 构建config-server工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建Zipkin工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建monitoring-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建uaa-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建gateway-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建admin-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建user-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建blog-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 构建log-service工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 启动源码工程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Cloud生态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud基础:Spring Boot概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot核心特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Web服务器:WebServer --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 条件注解:@ConditionalOnXX --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 工厂加载机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置加载机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Spring Boot Actuator --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Spring Cloud概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud诞生背景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Netflix OSS --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Spring Cloud版本 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── Spring Cloud最新动态 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── 负载均衡与服务调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 负载均衡原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Spring Cloud LoadBalancer负载均衡组件 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Netflix Ribbon负载均衡 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── RibbonLoadBalancerClient --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── RibbonServer和Server --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── ServerIntrospector --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ILoadBalancer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ServerList --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── ServerListUpdater --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ServerStats --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Ribbon缓存时间 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Dubbo LoadBalance负载均衡 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OpenFeign:声明式Rest客户端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── OpenFeign概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── OpenFeign对JAX-RS的支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── OpenFeign底层执行原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Dubbo Spring Cloud :服务调用的新选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 再谈路由和负载均衡 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 案例:应用流量控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流量控制应用的业务场景 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 使用Netflix Ribbon完成应用灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 配置管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置中心背景概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Config Server/Client --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Cloud Config Server --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Spring Cloud Config Client --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ ├── Spring Cloud Config Client与Service Discovery整合 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Spring Cloud Config配置动态刷新 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ └── 再谈配置动态刷新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 熔断器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 熔断器模式概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 手动实现一个断路器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义State枚举和Counter计数器类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义CircuitBreaker类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用CircuitBreaker进行场景测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Circuit Breaker的技术演进 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Alib*ba Sentinel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Sentinel核心概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Cloud Alib*ba Sentinel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Sentinel限流与Dashboard --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ └── Sentinel的高级特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Netflix Hystrix --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Hystrix核心概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Cloud Netflix Hystrix --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── Hystrix限流与Dashboard --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Hystrix的高级特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Resilience4j --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Resilience4j体验 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Resilience4j --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Resilience4j的高级特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring生态消息驱动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 消息中间件概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring与消息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 消息编程模型的统一 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 消息的发送和订阅 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── WebSocket --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── Spring Integration --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Integration核心组件概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Spring Integration核心组件的使用 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── Spring Cloud Stream --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Spring Cloud Stream发送和接收消息 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 理解Binder和Binding --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 深入理解Spring Cloud Stream --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ └── Spring Cloud Stream的高级特性 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── 消息总线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 消息总线概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 深入理解Spring Cloud Bus --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Bus的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Bus的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Bus事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Cloud Bus源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Cloud Data Flow --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 批处理/流处理概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 流处理案例:信用卡反欺诈系统 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 批处理案例:统计GitHub仓库的各项指标数据 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── Spring Cloud Data Flow批处理任务组合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Data Flow Shell --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── Spring Cloud Skipper --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Deployer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── TaskLauncher接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── AppDeployer接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── LocalAppDeployer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Cloud Task --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 体验Spring Cloud Task --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 深入理解Spring Cloud Task --> ( 难度等级: 中阶 || 挂载数据: blog: 9 ) +│ │ │ │ └── Spring Cloud Task Batch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Batch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Batch核心组件 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ ├── 网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── API网关概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API网关的定义、职能与关注点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── API网关的分类与技术分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ ├── Netflix Zuul --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 非阻塞式的Spring Cloud Gateway --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Route路由信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Predicate机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── PredicateDefinition和AsyncPredicate --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── RoutePredicateFactory --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 内置RoutePredicateFactory --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Filter机制 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── FilterDefinition和GatewayFilter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── GlobalFilter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 内置GatewayFilterFactory --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 网关内置的GlobalFilter --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 整合注册中心和配置中心 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── GatewayControllerEndpoint --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 综述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cloud Native的起源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cloud Native的组成 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Cloud Native背后的诉求 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何衡量Cloud Native的能力 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cloud Native的原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可用性和可靠性的关系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可用性的衡量标准 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 什么降低了可用性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 微服务架构的起源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务架构实施的先决条件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 研发环境和流程上的转变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 拆分前先做好解耦 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务划分模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于业务复杂度选择服务划分方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于数据驱动划分服务 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 基于领域驱动划分服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从已有单体架构中逐步划分服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 微服务拆分策略 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 如何衡量服务划分的合理性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务划分反模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务API设计 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── YXAPI的设计原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务间通信——RPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 序列化——Protobuf --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务间通信——RESTful --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过Swagger实现RESTful --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── HTTP协议的进化——HTTP/2 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── HTTP/2和Protobuf的组合——gRPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于Dubbo框架实现微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于Spring Cloud框架实现微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务发现场景下的ZooKeeper与Etcd --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ ├── 微服务部署策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务D享数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 服务D享虚拟机/容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 几种常见的微服务架构方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ZeroC IceGrid微服务架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Cloud微服务架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ ├── 基于消息队列的微服务架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Docker Swarm微服务架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ ├── 深入Kubernetes微服务平台 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于Kubernetes的PaaS平台 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 从微服务到Service Mesh --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Service Mesh之再见架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Envoy核心实践入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio背后的技术 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Istio的架构演变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 敏捷基础设施及公共基础服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 传统基础设施面临的挑战 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是敏捷基础设施 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于容器的敏捷基础设施 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器VS虚拟机 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ ├── 安装Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署私有Docker Registry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于docker-compose管理容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于公共基础服务的平台化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 监控告警fu务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 监控数据采集 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 监控数据接收模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过时间序列数据库存储监控数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开源监控系统实现Prometheus --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 通过Prometheus和Grafana监控服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式消息中间件服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分布式消息中间件的作用 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 业界常用的分布式消息中间件 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── Kafka的设计原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Kafka的数据存储结构 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 如何保证Kafka不丢消息 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Kafka跨数据中心场景集群部署模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式缓存服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分布式缓存的应用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 业界常用的分布式缓存Memcached --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 业界常用的分布式缓存——Redis --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── Redis常用的分布式缓存集群模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于Codis实现Redis分布式缓存集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ ├── 分布式任务调度服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过Tbschedule实现分布式任务调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 通过Elastic-Job实现分布式任务调度 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 如何生成分布式ID --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── UUID --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SDwFlake --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Ticket Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 可用性设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 逐步切换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 影子测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 蓝绿部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 灰度发布/金丝雀发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容错设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 消除单点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 特性开关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务分级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 降级设计 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 超时重试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 隔离策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流控设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 限流算法 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 流控策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于Guava限流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于Nginx限流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容量预估 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 故障演练 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 数据迁移 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 逻辑分离,物理不分离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 物理分离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 可扩展性设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 横向扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── AKF扩展立方体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何扩展长连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何扩展数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── X轴扩展——主从复制集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Y轴扩展——分库、垂直分表 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Z轴扩展——分片(sharding) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分片扩容(re-sharding) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 精选案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 如何扩展数据中心 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 两地三中心和同城多活 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 同城多活 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 异地多活 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 性能设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 性能指标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何树立目标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何寻找平衡点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何定位瓶颈点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务通信优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 同步转异步 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 阻塞转非阻塞 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 序列化 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 通过消息中间件提升写性能 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 通过缓存提升读性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于ConcurrentHashMap实现本地缓存 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── 基于Guava Cache实现本地缓存 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 缓存的常用模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据库优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过执行计划分析瓶颈点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 为搜索字段创建索引 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过慢查询日志分析瓶颈点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 通过提升硬件能力优化数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 简化设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 转移复杂度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 从业务角度优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一致性设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基础理论 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── CAP定理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── BASE理论 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Quorum机制(NWR模型) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 租约机制(Lease) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 状态机(Replicated State Machine) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式系统的一致性分类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 以数据为中心的一致性模型 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 以用户为中心的一致性模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 业界常用的一致性模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何实现强一致性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 两阶段提交 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 三阶段提交(3PC) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何实现Z终一致性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重试机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 本地记录日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 可靠事件模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Saga事务模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── TCC事务模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于数据库实现悲观锁和乐观锁 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于ZooKeeper的分布式锁 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ └── 基于Redis实现分布式锁 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── 如何保证幂等性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 幂等令牌(Idempotency Key) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 在数据库中实现幂等性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 未来值得关注的方向 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Serverless的现状 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Serverless的应用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 研发流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 十二因子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自动化测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── TDD --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 提交即意味着可测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Code Review --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Code Review的意义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Code Review的原则 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ └── Code Review的过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流水线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 持续交付 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 持续部署流水线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于开源打造流水线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── YMX的流水线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 开发人员自服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于数据和反馈持续改进 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 拥抱变化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 代码即设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 团队文化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 组织结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 康威定律 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 扁平化的组织 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── D裁的管理方式还是民主的管理方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 民主的团队如何做决策 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 环境氛围 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 公开透明的工作环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 学习型组织 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 减少正式的汇报 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 高效的会议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 量化指标致死 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管理风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 下属请假你会拒绝吗 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 得到了所有人的认可,说明你并不是一个好的管理者 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 尽量避免用自己的权力去做决策 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 一屋不扫也可助你“荡平天下” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 如何留下你想要的人 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 经典案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Instagram的团队文化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Netflix的团队文化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基础篇 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Service Mesh简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 微服务架构面临的一些挑战 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 技术架构演进 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Service Mesh的功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 业界Service Mesh产品 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Envoy --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Linkerd入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Linkerd架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Linkerd主要功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Linkerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 环境准备 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 虚拟机及Docker引擎 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 服务发现:Consul --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── 部署Linkerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 部署示例服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在本地搭建Istio环境 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ │ │ ├── 安装Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ ├── 安装Helm --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ └── 安装Istio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在公有云上使用Istio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 尝鲜Istio命令行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传统安装方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于Docker的安装方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 示例演示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 示例准备 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Weather Forecast简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Weather Forecast部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于文件的服务发现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 示例演示 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 中级篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 深入浅出Linkerd配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Linkerd术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Linkerd配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置构成 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── admin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── namer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── router --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── telemetry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── usage --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 深入Linkerd数据访问流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── dtab详解 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── dtab定义 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── dtab路由原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 数据访问流详解 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 鉴别 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 绑定 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 解析 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 转换 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Linkerd部署模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Linkerd部署模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Per-host模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Sidecar模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Per-host模式和Sidecar模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 配置模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── service-to-linker模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── linker-to-service模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── linker-to-linker模型 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ ├── Linkerd控制层:Namerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Namerd简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Namerd配置详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── admin配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── interface配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── storage配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── namer配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 连接Linkerd和Namerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 准备Namerd配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 启动Namerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 准备Linkerd配置文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 启动Linkerd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 管理dtab路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Namerd API简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过Namerd API管理dtab --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 通过namerctl CLI管理dtab --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 东西向流量控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio东西向流量管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio路由控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实现东西向流量转移路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 实现流量镜像及对比分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 南北向流量控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio南北向流量管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio网关与K8s Ingress --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 保护Istio网关流量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实现入口流量路由的统一管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 实现出口流量路由的统一管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Citadel架构设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 认证机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 授权机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用认证策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用双向认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 消除Privileged容器提升安全性 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 通过NetworkPolicy增强安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Mixer控制与观测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Mixer架构设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 适配器机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用速率限制策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用黑白名单策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用基于Zipkin与Jaeger的分布式跟踪 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集成度量数据收集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 集成日志数据收集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 原理篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 你好,Istio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 通过示例看看Istio能做什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio架构概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio的工作机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio的服务模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Istio的服务 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ │ └── Istio的服务版本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Istio的主要组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── istio-pilot --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── istio-telemetry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── istio-policy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── istio-citadel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── istio-galley --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── istio-sidecar-injector --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── istio-proxy --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── istio-ingressgateway --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 非侵入的流量治理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio流量治理的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 服务熔断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 故障注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 延迟注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 中断注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 预先准备:将所有流量都路由到各个服务的v1版本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 基于流量比例的路由 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ ├── 基于请求内容的路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 组合条件路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 多服务灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── TCP服务灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 自动化灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 正常发布 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ └── 异常发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 服务访问入口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 外部接入服务治理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio路由规则配置:VirtualService --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 路由规则配置示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 路由规则定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── HTTP路由(HTTPRoute) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── TLS路由(TLSRoute) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── TCP路由(TCPRoute) --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ │ ├── 三种协议路由规则的对比 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── VirtualService的典型应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio目标规则配置:DestinationRule --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── DestinationRule配置示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── DestinationRule规则定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── DestinationRule的典型应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio服务网关配置:Gateway --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Gateway配置示例 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── Gateway规则定义 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── Gateway的典型应用 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Istio外部服务配置:ServiceEntry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── ServiceEntry配置示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── ServiceEntry规则的定义和用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── ServiceEntry的典型应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Istio代理规则配置:Sidecar --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Sidecar配置示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Sidecar规则定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可扩展的策略和遥测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio策略和遥测的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 应用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 工作原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ │ ├── 属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Mixer的配置模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio遥测适配器配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Prometheus适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Fluentd适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── StatsD适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Stdio适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Zipkin适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 厂商适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio策略适配器配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── List适配器 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── Denier适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Memory Quota适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Redis Quota适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kubernetes Env适配器配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可插拔的服务安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio服务安全的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 授权 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 命名空间级别的访问控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 服务级别的访问控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 密钥证书管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio服务认证配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 认证策略配置示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 认证策略的定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── TLS访问配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 认证策略的典型应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Istio服务授权配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 授权启用配置 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 授权策略配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 授权策略的典型应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 透明的Sidecar机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Sidecar注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Sidecar Injector自动注入的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Sidecar注入的实现 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── Sidecar流量拦截 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── iptables的基本原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── iptables的规则设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 流量拦截原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多集群服务治理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio多集群服务治理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio多集群的相关概念 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Istio多集群服务治理现状 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ ├── 多集群模式1:多控制面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务DNS解析的原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Gateway连接的原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多集群模式2:VPN直连单控制面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多集群模式3:集群感知服务路由单控制面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 实践篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流量监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 调用链跟踪 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 指标监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Grafana --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 服务网格监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流量治理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 流量负载均衡 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── ROUND_ROBIN模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── RANDOM模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 会话保持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 超时 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP重定向 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP重写 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 熔断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务隔离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用流量策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设置负载均衡 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 管理连接池 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 增强路由规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 混沌工程之熔断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 混沌工程之故障注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务保护 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 网关加密 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 单向TLS网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 双向TLS网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 用SDS加密网关 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 访问控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 黑名单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 白名单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多集群管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 架构篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 司令官Pilot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pilot的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── xDS协议 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Pilot的工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Pilot的启动与初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 配置规则发现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Envoy的配置分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pilot的插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 安全插件 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ │ ├── 健康检查插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Mixer插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pilot的设计亮点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 三级缓存优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 去抖动分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 增量EDS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 资源隔离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 守护神Mixer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Mixer的整体架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Mixer的服务模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Template --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── Adapter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Mixer的工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 启动初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 用户配置信息规则处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 访问策略的执行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 无侵入遥测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Mixer的设计亮点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 如何开发Mixer Adapter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Adapter实现概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 内置式Adapter的开发步骤 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 独立进程式Adapter的开发步骤 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 独立仓库式Adapter的开发步骤 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全碉堡Citadel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Citadel的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Citadel的工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启动初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 证书控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── gRPC服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 证书轮换器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── SDS服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 高性能代理Envoy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的模块结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的线程模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的内存管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 变量管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Buffer管理 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Envoy的流量控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代理守护进程Pilot-agent --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pilot-agent的工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的启动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的热重启 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 守护Envoy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 优雅退出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 配置中心Galley --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Galley的架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── MCP --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── MCP API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Galley的工作流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 启动初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置校验 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 配置聚合与分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 源码篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pilot源码解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ConfigController --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ServiceController --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── xDS异步分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 配置更新预处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Mixer源码解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── runServer通过newServer新建Server对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 启动Mixer gRPC Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 监听用户的配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Check接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Report接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 协程池 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Citadel源码解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 证书签发实体IstioCA --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── SecretController的创建和核心原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── CA Server的创建和核心原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Envoy源码解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 启动参数bootstrap的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Admin API的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Worker的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── CDS的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── LDS的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── GuardDog的初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Envoy的运行和建立新连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 启动worker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Listener的加载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 接收连接 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Envoy对数据的读取、接收及处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 读取数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 接收数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Envoy发送数据到服务端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 匹配路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取连接池 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 选择上游主机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Galley源码解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 进程启动流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── RunServer的启动流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── RunValidation Server的启动流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置监听 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 配置分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 初级篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 快速上手Istio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在MiniKube上搭建Istio环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在Docker Desktop上搭建Istio环境 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 使用公有云Istio服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在Istio中部署第一个应用程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Istio架构剖析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio架构总体结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 剖析Istio控制平面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Istio Mixer --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 剖析Istio数据平面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Envoy代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Envoy静态与动态配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 代理部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 高级篇 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio的性能分析与运维 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio功能稳定性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio性能分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Istio组件升级与回滚 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pilot运维指南 --> ( 难度等级: 中阶 || 挂载数据: blog: 9 ) +│ │ │ ├── Istio的定制与扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Mixer模板设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 适配器生命周期管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发实现适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 编译与打包适配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 扩展EnvoyFilter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Knative:基于Istio的无服务器计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Knative架构解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于Istio实现Serving组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Knative Build运行机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Knative Eventing运行机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在Istio上部署Knative --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 开发部署Knative应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 云原生计算的未来展望 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── 什么是架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 几个相关概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 从软件的生命周期看架构设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 架构的形式与特点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 架构的目标与方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 架构的不同风格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务领域驱动设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 领域驱动设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 领域驱动设计概览 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 限界上下文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 上下文映射 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 领域架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 微服务的设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 限界上下文的边界 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 限界上下文即微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 识别限界上下文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 微服务之间的协作 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── Apache Dubbo框架的原理与实现 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Dubbo框架的选型与使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dubbo框架的选型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Dubbo框架的使用 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Dubbo框架的原理分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 总体架构分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dubbo Bean的加载 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Dubbo Extension机制 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Dubbo消费端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dubbo服务端 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── Dubbo的通信机制 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 基于Dubbo的自动化Mock系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Mock模拟系统的产生 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Dubbo Mock的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Dubbo Mock的原理解析 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 自动化Mock系统的实现 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ ├── Spring Boot/Spring Cloud实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Spring Boot原理剖析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Boot Quick Start --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Spring Boot之SpringApplication --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── spring-boot-loaded模块分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── spring-boot-autoconfigure模块分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Spring Boot Conditional注解分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── Dubbo Spring Boot Starter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dubbo Spring Boot Starter简介 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Dubbo Initializr及sample --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── dubbo-spring-boot-autoconfigure模块 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── dubbo-spring-boot-actuator模块 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Spring Cloud栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Spring Cloud技术栈总览 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ └── spring-cloud-scaffold基础库集合 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 基于Maven Archetype的脚手架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Maven Archetype --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 脚手架的搭建 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 生成脚手架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务稳定性保证的常用手段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务的稳定性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 高可用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 限流原理与实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 断路器原理与实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 高并发 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 异步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 缓存 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 微服务下如何保证事务的一致性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从本地事务到分布式事务的演变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 强一致性解决方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 二阶段提交协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 三阶段提交协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 最终一致性解决方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── TCC模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 补偿模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 百亿流量微服务网关的设计与实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 开源网关的分析与调研 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 常见的开源网关介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 四大开源网关的对比分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 百亿流量交易系统API网关设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 业务网关的设计与最佳实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务编排 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Netflix Conductor --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Netflix Conductor的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Conductor的使用案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Netflix Conductor源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Client层源码分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Server端源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── core端源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务数据抽取与统计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 案例小故事 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据仓库概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 什么是数据仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据仓库架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据仓库建模方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 数据统计 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 数据仓库工具Hive --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Hive --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Hive数据库 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ │ └── Hive表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Sqoop抽取数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Sqoop --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 将MySQL表数据导入Hive表 --> ( 难度等级: 初阶 || 挂载数据: blog: 5 ) +│ │ │ └── ETL作业调度 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── 微服务双活体系建设 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 系统高可用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 双活数据中心 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 单机房部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 双机房部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 基于支付场景的双活体系建设 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基于支付场景下的微服务改造与性能优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 支付场景的介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从代码层面提升微服务架构的性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从代码和设计的角度看 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 从整体架构的角度看 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 微服务架构中常见的一些故障分析技巧 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 遗留系统的微服务架构改造 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代码分层结构的转变 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 遗留系统的债券与思考 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从单体系统拆分服务的方法论 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 遗留系统的微服务架构改造 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从代码重构开始 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 拆分服务需要面向服务进行架构设计 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 改造是一个渐进的过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 单元测试是基石 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 面向失败的设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 前后端分离 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 共享现有数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 灰度发布的必要性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 日志聚合与全链路监控 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Service Mesh详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Service Mesh的背景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Service Mesh介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Service Mesh架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── Service Mesh能做什么 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Service Mesh的价值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Istio详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Istio架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据平面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 控制平面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Isito案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Service Mesh展望 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入理解网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从国际互联网开始 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── NIO,一本难念的经 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 难懂的ByteBuffer --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 晦涩的“非阻塞” --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 复杂的Reactor模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── AIO,大道至简的设计与苦涩的现实 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HTTP的前世今生 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP的设计思路 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP如何保持状态 --> ( 难度等级: 初阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Session的秘密 --> ( 难度等级: 初阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 再谈Token --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 分布式Session --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式系统的基石:TCP/IP --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 从CDN到SD-WAN --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 互联互不通的运营商网络 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 双线机房的出现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CDN的作用 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ └── SD-WAN技术的诞生 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分布式系统的经典理论 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从分布式系统的设计理念说起 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式系统的一致性原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式系统的基石之ZooKeeper --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ZooKeeper的原理与功能 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── ZooKeeper的应用场景案例分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ ├── 经典的CAP理论 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── BASE准则,一个影响深远的指导思想 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 重新认识分布式事务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据库单机事务的实现原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 经典的X/OpenDTP事务模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 互联网中的分布式事务解决方案 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── 聊聊RPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从IPC通信说起 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 古老又有生命力的RPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从RPC到服务治理框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 基于ZeroC Ice的微服务架构指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ZeroC Ice的前世今生 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── ZeroC Ice微服务架构指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 微服务架构概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务架构兴起的原因 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不得不提的容器技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 如何全面理解微服务架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── 深入浅析内存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 你所不知道的内存知识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 复杂的CPU与单纯的内存 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 深入理解不一致性内存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内存计算技术的前世今生 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内存缓存技术分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 缓存概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 缓存实现的几种方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Memcache的内存管理技术 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Redis的独特之处 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 内存计算产品分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── SAP HANA --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Hazelcast --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── VoltDB --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 深入解析分布式文件存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据存储进化史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 经典的网络文件系统NFS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 高性能计算领域的分布式文件系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 企业级分布式文件系统GlusterFS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创新的Linux分布式存储系统——Ceph --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 星际文件系统IPFS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 软件定义存储 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── 聊聊分布式计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不得不说的Actor模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 初识Akka --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 适用面很广的Storm --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── MapReduce及其引发的新世界 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ ├── 全文检索与消息队列中间件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 全文检索 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Lucene --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Solr --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── ElasticSearch --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 消息队列 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ ├── JEE专属的JMS --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 生生不息的ActiveMQ --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── RabbitMQ --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── Kafka --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ └── 架构实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 身边购平台实践 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ └── DIY一个有难度的分布式集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ ├── 编程语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Golang --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── hello,world --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 命令行参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 找出重复行 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── GIF动画 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 获取一个URL --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 并发获取多个URL --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 一个Web服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 其他内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 程序结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 名称 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 短变量声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 指针 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── new函数 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 变量的生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 赋值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 多重赋值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 可赋值性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类型声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包和文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 远程导入 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── 命名导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 包初始化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 作用域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基本数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 整数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 浮点数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 复数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 布尔值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字符串字面量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Unicode --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── UTF-8 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 字符串和字节slice --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 字符串和数字的相互转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 常量生成器iota --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 无类型常量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 复合数据类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── slice --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── append函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── slice就地修改 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── map --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ ├── 结构体 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 结构体字面量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 结构体比较 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 结构体嵌套和匿名成员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JSON --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 文本和HTML模板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 递归 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 错误处理策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 文件结束标识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 匿名函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变长函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 延迟函数调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 宕机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 恢复 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 参数和返回值的内存布局 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数中的局部变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 调用其他函数 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 宏函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数调用规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 高级汇编语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PCDATA和FUNCDATA --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方法函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 递归函数: 1到n求和 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 闭包函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方法声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指针接收者的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过结构体内嵌组成类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方法变量与表达式 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 示例:位向量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 封装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口即约定 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 实现接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用flag.Value来解析参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 接口值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用sort.Interface来排序 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── http.Handler接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── error接口 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 类型断言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用类型断言来识别错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过接口类型断言来查询特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 类型分支 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一些建议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标准库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 文档与源代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 记录日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── log包 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ │ ├── 定制的日志记录器 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ │ └── 结论 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 编码解码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 解码JSON --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 编码JSON --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 输入和输出 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Writer和Reader接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 整合并完成工作 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 简单的curl --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 方法集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── goroutine和通道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── goroutine --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 通道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 无缓冲通道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 管道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单向通道类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 缓冲通道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 并行循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用select多路复用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 取消 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 使用共享变量实现并发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 竞态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 互斥锁:sync.Mutex --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 读写互斥锁:sync.RWMutex --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 内存同步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 延迟初始化:sync.Once --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 竞态检测器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 包和go工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 引言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 导入路径 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包的声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 导入声明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 空导入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包及其命名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── go工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 工作空间的组织 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包的下载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包的构建 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包的文档化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内部包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 包的查询 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── go test工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Test函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 随机测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 白盒测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 外部测试包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 编写有效测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 避免脆弱的测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 覆盖率 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Benchmark函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 性能剖析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Example函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 反射 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── reflect.Type和reflect.Value --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Display:一个递归的值显示器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用reflect.Value来设置值 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 访问结构体字段标签 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 显示类型的方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 注意事项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 低级编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── unsafe.Sizeof、Alignof和Offsetof --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── unsafe.Pointer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用cgo调用C代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 关于Go语言的介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用Go解决现代编程难题 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发速度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 并发 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 竞争状态 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 锁住共享资源 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 原子函数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go语言的类型系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 用户定义的类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 类型的本质 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 内置类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 引用类型 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ └── 结构类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 嵌入类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 公开或未公开的标识符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 内存管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 你好,Go --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 快速开始一个Go程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 程序架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── main包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── search包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── search.go --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── feed.go --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── match.go default.go --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── RSS匹配器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 打包和工具链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 包 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 包名惯例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数init --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 进一步介绍Go开发工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── go vet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go代码格式化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Go语言的文档 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 与其他Go开发者合作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 依赖管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第三方依赖 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 对gb的介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 并发模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── runner --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── pool --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── work --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 测试和性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基础单元测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 表组测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模仿调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 测试服务端点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 基准测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Go与Web应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Go与Web应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用Go语言构建Web应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Go与可扩展Web应用 --> ( 难度等级: 初阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── Go与模块化Web应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Go与可维护的Web应用 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Go与高性能Web应用 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Web应用的工作原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Web应用的诞生 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP请求 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 幂等的请求方法 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 浏览器对请求方法的支持 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 请求首部 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── HTTP响应 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 响应状态码 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 响应首部 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── URI --> ( 难度等级: 初阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── HTTP/2简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Web应用的各个组成部分 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 处理器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 模板引擎 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 处理请求 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── ResponseWriter --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── cookie --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 将cookie发送至浏览器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 从浏览器里面获取cookie --> ( 难度等级: 初阶 || 挂载数据: blog: 6 ) +│ │ │ │ │ │ └── 使用cookie实现闪现消息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 内容展示 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Go的模板引擎 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ ├── 对模板进行语法分析 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ │ └── 执行模板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 动作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ ├── 条件动作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ ├── 迭代动作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ ├── 设置动作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ └── 包含动作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 上下文感知 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ │ ├── 防御XSS攻击 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ │ └── 不对HTML进行转义 --> ( 难度等级: 初阶 || 挂载数据: blog: 5 ) +│ │ │ │ │ │ ├── 嵌套模板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 通过块动作定义默认模板 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 存储数据 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 内存存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 文件存储 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 读取和写入CSV文件 --> ( 难度等级: 初阶 || 挂载数据: blog: 5 ) +│ │ │ │ │ └── gob包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Hello Go --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── ChitChat论坛 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ChitChat简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 应用设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 请求的接收与处理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 多路复用器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 服务静态文件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 创建处理器函数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 使用cookie进行访问控制 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Go的net/http标准库 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── 使用Go构建服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Go Web服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 通过HTTPS提供服务 --> ( 难度等级: 初阶 || 挂载数据: blog: 5 ) +│ │ │ │ ├── 使用模板生成HTML响应 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 安装PostgreSQL --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 在Linux或FreeBSD系统上安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在Mac OS X系统上安装 --> ( 难度等级: 初阶 || 挂载数据: blog: 8 ) +│ │ │ │ │ └── 在Windows系统上安装 --> ( 难度等级: 初阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 连接数据库 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启动服务器 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Web应用运作流程回顾 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Web开发简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 请求路由 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── httprouter --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 压缩检索树创建过程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 中间件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 代码泥潭 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用中间件剥离非业务逻辑 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 更优雅的中间件写法 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 哪些事情适合在中间件中做 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 请求校验 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重构请求校验函数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 用请求校验器解放体力劳动 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Database和数据库打交道 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从database/sql讲起 --> ( 难度等级: 初阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── 提高生产效率的ORM和 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 脆弱的数据库 --> ( 难度等级: 初阶 || 挂载数据: blog: 4 ) +│ │ │ ├── 服务流量限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 常见的流量限制手段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 服务瓶颈和QoS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 灰度发布和A/B测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过分批次部署实现灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过业务规则进行灰度发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 如何实现一套灰度发布系统 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 语言基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Go语言创世纪 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 来自贝尔实验室特有基因 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 你好,世界 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── “Hello, World”的革命 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── B语言——Ken Thompson, --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── C语言——Dennis Ritchie,1972— --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── Newsqueak——Rob Pike, --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Alef——Phil Winterbottom, --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Limbo——Sean Dorward, Phil Winterbottom, Rob Pike, --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go语言——2007— --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 你好,世界!——V2. --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 面向并发的内存模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 原子操作 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 顺序一致性内存模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 初始化顺序 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Goroutine的创建 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于通道的通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 不靠谱的同步 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 常见的并发模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 并发版本的“Hello, World” --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生产者/消费者模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 发布/订阅模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 控制并发数 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 赢者为王 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 素数筛 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 并发的安全退出 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── context包 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 错误和异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取错误的上下文 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 错误的错误返回 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 剖析异常 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 补充说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CGO编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 快速入门 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 最简CGO程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于C标准库函数输出字符串 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用自己的C函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── C代码的模块化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用Go重新实现C函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面向C接口的Go编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义整数变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义字符串变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义main函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 特殊字符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 没有分号 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CGO基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── import "C"语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── #cgo语句 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── build标志条件编译 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 类型转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数值类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go字符串和切片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 指针间的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数值和指针的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 切片间的转换 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go调用C函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── C函数的返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── void函数的返回值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── C调用Go导出函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内部机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── CGO生成的中间文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go调用C函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── C调用Go函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CGO内存模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go访问C内存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── C临时访问传入的Go内存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── C长期持有Go指针对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 导出C函数不能返回Go内存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── C++类包装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── C++类到Go语言对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go语言对象到C++类 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── 彻底解放C++的this指针 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 静态库和动态库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用C静态库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用C动态库 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── 导出C静态库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 导出C动态库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 导出非main包的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 编译和链接参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 编译参数:CFLAGS/CPPFLAGS/CXXFLAGS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 链接参数:LDFLAGS --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── pkg-config --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── go get链 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 多个非main包中导出C函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Go汇编语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 计算机结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 图灵机和BrainFuck语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 《人力资源机器》游戏 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── X86-64体系结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Go汇编中的伪寄存器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── X86-64指令集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 顺序执行 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── if/goto跳转 --> ( 难度等级: 中阶 || 挂载数据: blog: 9 ) +│ │ │ │ └── for循环 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 汇编语言的威力 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 系统调用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 直接调用C函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── AVX指令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 例子:Goroutine ID --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 故意设计没有goid --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 纯Go方式获取goid --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从g结构体获取goid --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取g结构体对应的接口对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── goid的应用:局部存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Delve调试器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Delve入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 调试汇编程序 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── RPC和Protobuf --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── RPC入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── RPC版“Hello, World” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 更安全的RPC接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 跨语言的RPC --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── HTTP上的RPC --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Protobuf --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Protobuf入门 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 定制代码生成插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自动生成完整的RPC代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 玩转RPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 客户端RPC的实现原理 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 基于RPC实现监视功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 反向RPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 上下文信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── gRPC入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── gRPC技术栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── gRPC入门 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── gRPC流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 发布和订阅模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── gRPC进阶 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 证书认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Token认证 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── 截取器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 和Web服务共存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── gRPC和Protobuf扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 验证器 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── REST接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Nginx --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── pbgo:基于Protobuf的框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Protobuf扩展语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 插件中读取扩展信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 生成REST代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 启动REST服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── grpcurl工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 启动反射服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 查看服务列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务的方法列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 获取类型信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 调用方法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 分布式系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分布式ID生成器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── worker_id分配 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ ├── 分布式锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 进程内加锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 尝试锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于Redis的setnx --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于ZooKeeper --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于etcd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 如何选择合适的锁 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 延时任务系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定时器的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 任务分发 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 数据再平衡和幂等考量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分布式搜索引擎 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 搜索引擎 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 异构数据同步 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 负载均衡 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 常见的负载均衡思路 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于洗牌算法的负载均衡 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── 负载均衡算法效果验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 分布式配置管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 场景举例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用etcd实现配置更新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置膨胀 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置版本管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 客户端容错 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 分布式爬虫 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 基于colly的单机爬虫 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 分布式爬虫 --> ( 难度等级: 初阶 || 挂载数据: blog: 3 ) +│ │ ├── 结合nats和colly的消息生产 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 结合colly的消息消费 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +├── 云原生初阶-平台开发 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── 容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 基础入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 初识Docker与容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 核心概念与安装配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 核心概念 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 安装Docker引擎 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Ubuntu环境下安装Docker --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── CentOS环境下安装Docker --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── 通过脚本安装 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── macOS环境下安装Docker --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── Windows环境下安装Docker --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 配置Docker服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 推荐实践环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Docker镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看镜像信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 搜寻镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 删除和清理镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 存出和载入镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 上传镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 操作Docker容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 停止容器 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 进入容器 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── 删除容器 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 导入和导出容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 其他容器命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问Docker仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Docker Hub公共镜像市场 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 第三方镜像市场 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 搭建本地私有仓库 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Docker数据管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据卷容器 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 利用数据卷容器来迁移数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 端口映射与容器互联 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 端口映射实现容器访问 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 互联机制实现便捷互访 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用Dockerfile创建镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 指令说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置指令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 操作指令 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 创建镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 命令选项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 选择父镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用.dockerignore文件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 多步骤创建 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ └── 最佳实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 进阶技能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 核心实现技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基本架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 命名空间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 联合文件系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Linux网络虚拟化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 配置私有仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Docker Registry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置TLS证书 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管理访问权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置Registry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 批量管理镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用通知系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 安全防护与配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 命名空间隔离的安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制组资源控制的安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 内核能力机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker服务端的防护 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 更多安全特性的使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用第三方检测工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker Bench --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── clair --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 高级网络功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 启动与配置参数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置容器DNS和主机名 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器访问控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 映射容器端口到宿主主机的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置容器网桥 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自定义网桥 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用OpenvSwitch网桥 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 创建一个点到点连接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── libnetwork插件化网络功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 容器网络模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Docker网络命令 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ └── 构建跨主机容器网络 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ ├── Kubernetes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 管理工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubelens --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kuboard --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── K3S --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── K9S --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Minikube --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kubeasz --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Draft --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes是什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kubernetes的历史 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 从一个简单的例子开始 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 环境准备 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启动MySQL服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 启动Tomcat应用 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ └── 通过浏览器访问网页 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes基本概念和术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Master --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Node --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ ├── Pod --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod定义详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Pod的基本用法 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 静态Pod --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod容器共享Volume --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── Pod的配置管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在容器内获取Pod信息(Downward API) --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Pod生命周期和重启策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod健康检查 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ ├── 玩转Pod调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Init Container(初始化容器) --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── Pod的升级和回滚 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod的扩容和缩容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用StatefulSet搭建MongoDB集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Pod定义文件详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基本操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 其他设置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pod调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Label(标签) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Replication Controller --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Deployment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 运行Deployment --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── 命令vs配置文件 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Deployment配置文件简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 伸缩 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Failover --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用label控制Pod的位置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Horizontal Pod Autoscaler --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StatefulSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 扩容/缩容StatefulSet --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Service(服务) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Volume(存储卷) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Persistent Volume --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Namespace(命名空间) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Annotation(注解) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes实践指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes安装与配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 系统要求 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用kubeadm工具快速安装Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 以二进制文件方式安装Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Kubernetes集群的安全设置 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Kubernetes集群的网络配置 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ ├── 内网中的Kubernetes相关配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes的版本升级 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── Kubernetes核心服务配置详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── kubectl命令行工具用法详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kubectl用法概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kubectl子命令详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kubectl参数列表 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kubectl输出格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── kubectl操作示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 深入掌握Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Service定义详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Service基本用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Headless Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集群外部访问Pod或Service --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── DNS服务搭建指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自定义DNS和上游DNS服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Ingress:HTTP 7层路由机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes核心原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes API Server原理分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes API Server概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ ├── 独特的Kubernetes Proxy API接口 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 集群功能模块之间的通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Controller Manager原理分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Node Controller --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── ResourceQuota Controller --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Namespace Controller --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── Service Controller与Endpoint Controller --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ ├── Scheduler原理分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kubelet运行机制分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 节点管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器健康检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── cAdvisor资源监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kube-proxy运行机制分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 深入分析集群安全机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API Server认证管理(Authentication) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API Server授木又管理(Authorization) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Admission Control(准入控制) --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Service Account --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Secret私密凭据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网络原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes网络模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Docker的网络基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Docker的网络实现 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes的网络实现 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 单主机Docker网络通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Host模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Container模式 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ │ ├── None模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── Bridge模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 基础网络模型的优缺点分析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 跨主机Docker网络通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Flannel网络方案 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── Calico网络方案 --> ( 难度等级: 初阶 || 挂载数据: blog: 9 ) +│ │ │ │ │ └── 网络方案对比分析 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNI网络模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 开源的网络组件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 共享存储原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 共享存储机制概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PV详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PVC详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PV和PVC的生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── StorageClass详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes开发指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── REST简述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes API详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes API概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── API版本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API Groups(API组) --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── API方法说明 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── API响应说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用Java程序访问Kubernetes API --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Jersey --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Fabric8 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes运维指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes集群管理指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Node的管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 更新资源对象的Label --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Namespace:集群环境共享与隔离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes资源管理 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── 资源紧缺时的Pod驱逐机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod Disruption Budget(主动驱逐保护) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes集群的高可用部署方案 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── Kubernetes集群监控 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── Weave Scope --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ ├── 安装Scope --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ │ └── 使用Scope --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Heapster --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ │ │ └── 使用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Prometheus Operator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Prometheus架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ │ ├── Prometheus Operator架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ │ └── 部署Prometheus Operator --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 集群统一日志管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes审计日志(Audit Log) --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── 使用Web UI(Dashboard)管理集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ └── Helm:Kubernetes应用包管理工具 --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ ├── Trouble Shooting指导 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看系统Event事件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看容器日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看Kubernetes服务日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 寻求帮助 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes开发中的新功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pod Preset(运行时参数注入策略) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cluster Federation(集群联邦) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器运行时接口(Container Runtime Interface-CRI) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对GPU的支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes的演进路线(Roadmap)和开发模式 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ ├── Kubernetes源码导读 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes源码结构和编译步骤 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kube-apiserver进程源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动过程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kube-controller-manager进程源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动过程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kube-scheduler进程源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动过程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kubelet进程源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动过程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kube-proxy进程源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 进程启动过程 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 关键代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── kubectl进程源码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kubectl create命令 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ └── rolling-update命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 先把Kubernetes跑起来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 先跑起来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Scale应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 滚动更新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 重要概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 部署Kubernetes Cluster --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 手动安装模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Ubuntu中自动化安装Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── CentOS中自动化安装Docker --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 安装kubelet、kubeadm和kubectl --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用kubeadm创建Cluster --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 初始化Master --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置kubectl --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Pod网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 添加k8s-node1 和k8s-node2 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Master节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Node节点 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 完整的架构图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 用例子把它们串起来 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运行应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── DaemonSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kube-flannel-ds --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kube-proxy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 运行自己的DaemonSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Job --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pod失败的情况 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Job的并行性 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── 定时Job --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 通过Service访问Pod --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Cluster IP底层实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── DNS访问Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 外网如何访问Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Rolling Update --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Health Check --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 默认的健康检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Liveness探测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Readiness探测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Health Check在Scale Up中的应用 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── Health Check在滚动更新中的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Volume --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── emptyDir --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── hostPath --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 外部Storage Provider --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PersistentVolume & PersistentVolumeClaim --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── NFS PersistentVolume --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 回收PV --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── PV动态供给 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 一个数据库例子 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Secret & Configmap --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Secret --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 查看Secret --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在Pod中使用Secret --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Volume方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 环境变量方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── ConfigMap --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Helm—Kubernetes的包管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Why Helm --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Helm架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装Helm --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Helm客户端 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── Tiller服务器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── chart详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── chart目录结构 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── chart模板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 再次实践MySQL chart --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 升级和回滚release --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 开发自己的chart --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 各种网络方案 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Network Policy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署Canal --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 实践Network Policy --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ ├── Kubernetes Dashboard --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置登录权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Dashboard界面结构 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ └── 典型使用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署Deployment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 在线操作 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 查看资源详细信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 查看Pod日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes集群日志管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Docker简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是Docker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker基本概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 镜像仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Docker架构及原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 容器存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 容器引擎 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器引擎实现原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器生命周期管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器状态管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问运行状态容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 访问容器内容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 镜像管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Dockerfile及镜像制作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dockerfile的作用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dockerfile文件构成 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 常用命令集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 构建镜像 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 镜像基本操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从镜像仓库下载镜像 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 将本地镜像上传到镜像仓库 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 查看本地镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 导出和导入本地镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 修改本地镜像标识 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 删除本地镜像 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Dockerfile优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Dockerfile检查项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 检查及优化工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 操作系统基础镜像制作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 操作系统版本选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 操作系统参数调整 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 确定基础rpm包范围 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 确定常用命令范围 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 操作系统镜像制作过程 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── 系统资源限制配置说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 容器镜像安全加固 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器安全加固规范 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 安全检查工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 镜像仓库管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker Registry --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Docker Hub --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 第三方公共仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 建立私有镜像仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Harbor --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Harbor架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── Harbor的镜像同步机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Harbor用户认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Harbor容器镜像安全扫描 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── Docker相关部署实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── MySQL Docker部署实践 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── MySQL简介 --> ( 难度等级: 初阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── MySQL容器化操作实践 --> ( 难度等级: 初阶 || 挂载数据: blog: 2 ) +│ │ │ └── Docker支持GPU实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── GPU简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CPU与GPU的对比 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── 通过nvidia-docker使用GPU --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── Kubernetes简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── PaaS简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传统PaaS系统 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 基于Docker的新型PaaS平台 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── Kubernetes核心概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Pod相关核心技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Label --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 健康检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流程健康检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 应用健康检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── DNS服务发现机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Headless服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ClusterIP --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── NodePort --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── LoadBalancer --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网络策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 完整的Kubernetes服务发布实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 各Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── Ingress服务发布 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 服务发现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 存储使用场景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 文件存储的几种形式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Flex Volume存储管理方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 如何实现灵活存储组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 标准化容器存储接口CSI --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 安全及多租户配额管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── API服务器认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── DevOps --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 应用中心 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Helm Hub --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Operator Hub --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Aliyun App Hub --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ ├── Kubernetes App Hub --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Prometheus Exporter Hub --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运维 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 模板 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── YAML --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Helm --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── KUDO(Kubernetes Universal Declarative Operator) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OAM(Open Application Model) --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── OpenKruise --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── MetaController --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Prometheus --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Grafana --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Alertmanager --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CI/CD --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Jenkins --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── Argo --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Tekton --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Drone --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── 日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ELK --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── ElasticSearch --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── Logstash --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Kibana --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── EFK --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ElasticSearch --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ ├── Fluentd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kibana --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Loki --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Loki --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Promtail --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Grafana --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 采集 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Logpilot --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Fluentbit --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Fluentd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── DevOps介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 敏捷、持续交付和三步法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 制造业价值流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 技术价值流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 聚焦于部署前置时间 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 关注返工指标——%C/A --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 三步工作法:DevOps的基础原则 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 第一步:流动原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使工作可见 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 限制在制品数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 减小批量大小 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 减少交接次数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 持续识别和改善约束点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 消除价值流中的困境和浪费 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 第二步:反馈原则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在复杂系统中安全地工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在源头保障质量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 为下游工作中心而优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 第三步:持续学习与实验原则 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 建立学习型组织和安全文化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 将日常工作的改进制度化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 把局部发现转化为全局优化 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── 在日常工作中注入弹性模式 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ └── 领导层强化学习文化 --> ( 难度等级: 高阶 || 挂载数据: blog: 1 ) +│ │ ├── 从何处开始 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 选择合适的价值流作为切入点 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 兼顾记录型系统和交互型系统 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从最乐于创新的团队开始 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 扩大DevOps的范围 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 理解、可视化和运用价值流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 确定创造客户价值所需的团队 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 针对团队工作绘制价值流图 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 组建专门的转型团队 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 拥有共同的目标 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 保持小跨度的改进计划 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 为非功能性需求预留20%的开发时间,减少技术债务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 提高工作的可视化程度 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 用工具强化预期行为 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 参考康威定律设计组织结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 组织原型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 过度职能导向的危害(“成本优化”) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 组建以市场为导向的团队(“速度优化”) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使职能导向有效 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将测试、运维和信息安全融入日常工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使团队成员都成为通才 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 根据康威定律设定团队边界 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建松耦合架构,提高生产力和安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 将运维融入日常开发工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建共享服务,提高开发生产力 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将运维工程师融入服务团队 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为每个服务团队分派运维联络人 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 邀请运维工程师参加开发团队的会议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 邀请运维工程师参加每日站会 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 邀请运维工程师参加回顾会议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 使用看板图展示运维工作 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ ├── 第一步:流动的技术实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 为部署流水线奠定基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 按需搭建开发环境、测试环境和生产环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 应用统一的代码仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使基础设施的重建更容易 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 运行在类生产环境里才算“完成” --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 实现快速可靠的自动化测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对代码和环境做持续构建、测试和集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建快速可靠的自动化测试套件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在自动化测试中尽早发现错误 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 尽可能并行地快速执行测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 先编写自动化测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 尽量将手动测试自动化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 在测试套件中集成性能测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 在测试套件中集成非功能性需求测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在部署流水线失败时拉下安灯绳 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 应用和实践持续集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 小批量开发与大批量合并 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 应用基于主干的开发实践 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ ├── 自动化和低风险发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自动化部署流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 应用自动化的自助式部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 在部署流水线中集成代码部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 将部署与发布解耦 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基于环境的发布模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于应用的发布模式更安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 降低发布风险的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 能提高生产力、可测试性和安全性的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 架构原型:单体架构与微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 安全地演进企业架构 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── 第二步:反馈的技术实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分析遥测数据以更好地预测故障和实现目标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 异常状态的处理和告警 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 应用异常检测技术 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 应用反馈实现安全部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通过遥测使部署更安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发和运维共同承担值班工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 让开发人员跟踪工作对下游的影响 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 让开发人员自行管理生产服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将假设驱动的开发和A/B测试融入日常工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── A/B测试简史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在功能测试中集成A/B测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在发布中集成A/B测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在功能规划中集成A/B测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 建立评审和协作流程以提升当前工作的质量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变更审批流程的危险 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── “过度控制变更”的潜在危险 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变更的协调和排程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 变更的同行评审 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 人工测试和变更冻结的潜在危害 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用结对编程改进代码变更 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 消除官僚流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集成信息安全、变更管理和合规性的技术实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将信息安全融入每个人的日常工作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将安全集成到开发迭代的演示中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将安全集成到缺陷跟踪和事后分析会议中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将预防性安全控制集成到共享源代码库及共享服务中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 保证应用程序的安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 确保软件供应链的安全 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 确保环境的安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将信息安全集成到生产环境遥测中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在应用程序中建立安全遥测系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在环境中建立安全遥测系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 保护部署流水线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 保护部署流水线 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将安全和合规性集成到变更批准流程中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 将大量低风险变更重新归类为标准变更 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 如何处理常规变更 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 减少对职责分离的依赖 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 确保为审计人员和合规人员留存文档和证据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Shell脚本在DevOps下的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Shell编程基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Shell脚本的基本元素 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── Shell基础正则表达式 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Shell特殊字符 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 变量和运算符 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Shell中的控制流结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── sed的基础用法及实用举例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── sed的基础语法格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── sed的用法举例说明 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── awk的基础用法及实用案例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Shell应用于DevOps开发中应掌握的系统知识点 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ └── 生产环境下的Shell脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生产环境下的备份类脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生产环境下的统计类脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 生产环境下的监控类脚本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 生产环境下的运维开发类脚本 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── Python在DevOps与自动化运维中的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python语言的应用领域 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 选择Python的原因 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python的版本说明 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python基础学习工具 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python(x,y)简单介绍 --> ( 难度等级: 高阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── IPython详细介绍 --> ( 难度等级: 高阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── Sublime Text3简单介绍 --> ( 难度等级: 高阶 || 挂载数据: 无 ) +│ │ │ ├── Python基础知识进阶 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 正则表达式应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python程序构成 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── 使用Python解析JSON --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Python异常处理与程序调试 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Python函数 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ │ ├── Python面向对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Python多进程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Python多线程 --> ( 难度等级: 初阶 || 挂载数据: blog: 3 ) +│ │ │ ├── Python经常用到的第三方类库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用Flask设计后端Restful API --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 工作中的Python脚本分享 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Vagrant在DevOps环境中的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Vagrant简单介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Vagrant安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用Vagrant配置本地开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Vagrant的具体安装步骤 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Vagrant配置文件详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── Vagrant常用命令详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 使用Vagrant搭建DevOps开发环境 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── 使用Vagrant搭建分布式环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自动化部署管理工具Ansible --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── YAML介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Ansible的安装和配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 定义主机与组规则(Inventory) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Ansible常用模块介绍 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ ├── playbook介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Ansible在AWS云平台中的应用 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ ├── 角色 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Jinja2过滤器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Ansible速度优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用Ansible API提供自动化运维后端 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── runner API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── playbook API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用Flask封装Ansible提供自动化运维后端 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ └── Ansible 2.2新增功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自动化配置管理工具SaltStack --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Salt的相关知识点介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Salt的优势 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Salt的安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Salt的工作流程 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Salt配置文件详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Salt的命令格式 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Salt的常用组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Salt常用的操作目标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Salt常用模块 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Granis组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── pillar组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── job管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── State介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Salt真实案例分享 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── base环境配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── prod环境配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Salt多Master搭建 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Salt API介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Python API介绍 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ └── Restful API介绍 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ └── Docker和Jenkins在DevOps中的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Docker的基础安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Docker的三大核心概念 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Docker的基本架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Docker网络实现原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 利用Dockerfile文件技巧打包Docker镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 利用Docker-Compose编排和管理多容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker-Compose的基本语法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Docker-Compose常用命令 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ └── 利用Docker搭建Jenkins Master/Slave分布式环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Jenkins Master/Slave的详细部署过程 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ ├── 中间件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── etcd --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Redis --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 微服务与配置中心 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Nacos --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ └── 存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── S3标准 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── MinIO --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ └── Harbor --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +├── 云原生中阶-应用开发 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── App Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Knative --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── Microservices微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Dapr --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +├── 云原生中阶-平台开发 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Kubernetes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 边缘计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OpenYurt --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── KubeEdge --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Akri --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 集群联邦 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Federation --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 发行版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── EKS-D --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Harvester --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OpenShift --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── k0s --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Wayne --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes系统基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器技术概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器技术的功用 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 容器简史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Docker的功能限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes简史 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes特性 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Kubernetes概念和术语 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ ├── Kubernetes集群组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Master组件 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Node组件 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 核心附件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes网络模型基础 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 网络模型概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 集群上的网络通信 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes快速入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes的核心对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Controller --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 部署应用程序的主体过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署Kubernetes集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── kubeadm部署工具 --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ │ │ ├── 集群运行模式 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 准备用于实践操作的集群环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 获取集群环境相关的信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kubectl使用基础与示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 命令式容器应用编排 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署应用(Pod) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 探查Pod及应用详情 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署Service对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 扩容和缩容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 修改及删除对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 资源管理基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源对象及API群组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes的资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 资源及其在API中的组织形式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 访问Kubernetes REST API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 对象类资源格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 资源配置清单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── metadata嵌套字段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── spec和status字段 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 资源配置清单格式文档 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 资源对象管理方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── kubectl命令与资源管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 资源管理操作概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── kubectl的基本用法 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管理名称空间资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看名称空间及其资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 管理Namespace资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Pod资源的基础管理操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 陈述式对象配置管理方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 声明式对象配置管理方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 管理Pod资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 管理Pod对象的容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 镜像及其获取策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 暴露端口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义运行的容器化应用 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 环境变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 共享节点的网络名称空间 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 设置Pod对象的安全上下文 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 标签与标签选择器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 标签概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 管理资源标签 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 标签选择器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pod节点选择器nodeSelector --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看资源注解 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 管理资源注解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pod对象的生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod的相位 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod的创建过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod生命周期中的重要行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器的重启策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pod的终止过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pod存活性探测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设置exec探针 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 设置HTTP探针 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设置TCP探针 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 存活性探测行为属性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pod就绪性探测 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 资源需求及资源限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源需求 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源限制 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 容器的可见资源 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ └── Pod的服务质量类别 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Pod控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 关于Pod控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod控制器概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 控制器与Pod对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pod模板资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ReplicaSet控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ReplicaSet概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建ReplicaSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ReplicaSet管控下的Pod对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 更新ReplicaSet控制器 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 删除ReplicaSet控制器资源 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── Deployment控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建Deployment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 更新策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 升级Deployment --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 金丝雀发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 回滚Deployment控制器下的应用发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── DaemonSet控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建DaemonSet资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 更新DaemonSet对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Job控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建Job对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 并行式Job --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Job扩容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 删除Job --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CronJob控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建CronJob对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── CronJob的控制机制 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── ReplicationController --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Pod中断预算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 存储卷与数据持久化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 存储卷概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes支持的存储卷类型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 存储卷的使用方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 临时存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── emptyDir存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── gitRepo存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 节点存储卷hostPath --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网络存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── NFS存储卷 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── RBD存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── GlusterFS存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Cinder存储卷 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 持久存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建PV --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建PVC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在Pod中使用PVC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 存储类 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── PV和PVC的生命周期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── downwardAPI存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 环境变量式元数据注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 存储卷式元数据注入 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ ├── 配置容器应用:ConfigMap和Secret --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器化应用配置方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 通过命令行参数配置容器应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 利用环境变量配置容器应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 应用程序配置管理及ConfigMap资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建ConfigMap对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 向Pod环境变量传递ConfigMap对象键值数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ConfigMap存储卷 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器应用重载新配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 使用ConfigMap资源的注意事项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Secret资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Secret概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Secret资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Secret存储卷 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── imagePullSecret资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── StatefulSet控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StatefulSet概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Stateful应用和Stateless应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── StatefulSet控制器概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── StatefulSet的特性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StatefulSet基础应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 创建StatefulSet对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StatefulSet资源扩缩容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StatefulSet资源升级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 滚动更新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 暂存更新操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 金丝雀部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分段更新 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 其他话题 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 案例:etcd集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 创建Service资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── etcd StatefulSet --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── 认证、授权与准入控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 访问控制概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用户账户与用户组 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 认证、授权与准入控制基础 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 服务账户管理与应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Service Account自动化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建服务账户 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 调用imagePullSecret资源对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── X.509数字证书认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes中的SSL/TLS认证 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 客户端配置文件kubeconfig --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── TLS bootstrapping机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 基于角色的访问控制:RBAC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── RBAC授权插件 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Role和RoleBinding --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── ClusterRole和ClusterRoleBin-ding --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 聚合型ClusterRole --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 面向用户的内建ClusterRole --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 其他的内建ClusterRole和ClusterRoleBinding --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes Dashboard --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署HTTPS通信的Dashboard --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── 配置token认证 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 配置kubeconfig认证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网络模型与网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes网络模型及CNI插件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Docker容器的网络模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes网络模型 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Pod网络的实现方式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── CNI插件及其常见的实现 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── flannel网络插件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── flannel的配置参数 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── VxLAN后端和direct routing --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── host-gw后端 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 网络策略概述 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署Canal提供网络策略功能 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 管控入站流量 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 管控出站流量 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 隔离名称空间 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 网络策略应用案例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── Calico网络插件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Calico工作特性 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Calico系统架构 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Calico部署要点 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 部署Calico提供网络服务和网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 客户端工具calicoctl --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Pod资源调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes调度器概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 常用的预选策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 常用的优选函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 节点亲和调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 节点硬亲和性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 节点软亲和性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Pod资源亲和调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 位置拓扑 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod硬亲和调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod软亲和调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pod反亲和调度 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 污点和容忍度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 定义污点和容忍度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 管理节点的污点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Pod对象的容忍度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Pod优选级和抢占式调度 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes系统扩展 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自定义资源类型(CRD) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 创建CRD对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义资源格式验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 子资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用资源类别 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 多版本支持 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义控制器基础 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── 自定义API Server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义API Server概述 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── APIService对象 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes集群高可用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── etcd高可用 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── Controller Manager和Scheduler高可用 --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ ├── Kubernetes的部署模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 关键组件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 常见的部署模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 容器时代的DevOps概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器:DevOps协作的基础 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── 容器隔离等级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器编排 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ ├── 将镜像存储在可信的注册服务器中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 充分利用Docker的构建缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 不要使用特权模式运行容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用显式的容器镜像标签 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 保持小的容器镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单个容器只运行一个应用 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 使用可信镜像仓库中经过验证的镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对镜像进行漏洞扫描 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 不要将数据保存在容器中 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ └── 永远不要在容器中存放密钥和配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 泛型端到端容器应用程序生命周期工作流 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 基于Kubernetes的DevOps --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── 资源指标及HPA控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源监控及资源指标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 资源监控及Heapster --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 新一代监控架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 资源指标及其应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署metrics-server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── kubectl top命令 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 自定义指标与Prometheus --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Prometheus概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署Prometheus监控系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义指标适配器k8s-prometheus-adapter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 自动弹性缩放 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HPA概述 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HPA(v1)控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── HPA(v2)控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Helm程序包管理器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Helm基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Helm的核心术语 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Helm架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Helm Client --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Tiller server --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Helm快速入门 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Helm Charts --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Charts文件组织结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Chart.yaml文件组织格式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Charts中的依赖关系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模板和值 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 自定义Charts --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Helm实践:部署EFK日志管理系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── ElasticSearch集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 日志采集代理fluentd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 可视化组件Kibana --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 夯实基础:Linux网络虚拟化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网络虚拟化基石:network namespace --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 初识network namespace --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 配置network namespace --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── network namespace API的使用 --> ( 难度等级: 初阶 || 挂载数据: blog: 4 ) +│ │ │ ├── 千呼万唤始出来:veth pair --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── veth pair内核实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 连接你我他:Linux bridge --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Linux bridge初体验 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 把IP让给Linux bridge --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 将物理网卡添加到Linux bridge --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Linux bridge在网络虚拟化中的应用 --> ( 难度等级: 初阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 网络接口的混杂模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 给用户态一个机会:tun/tap设备 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── tun/tap设备的工作原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 利用tun设备部署一个VPN --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── tun设备编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── iptables --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 祖师爷netfilter --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── iptables的三板斧:table、chain和rule --> ( 难度等级: 中阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── iptables的常规武器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── userspace模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── iptables模式 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── IPVS模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── iptables VS. IPVS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── conntrack --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 初识Linux隧道:ipip --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试ipip隧道 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── ipip隧道测试结果复盘 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Linux隧道网络的代表:VXLAN --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── VXLAN协议原理简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── VXLAN组网必要信息 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── VXLAN基本配置命令 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── VXLAN网络实践 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分布式控制中心 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 自维护VTEP组 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 物理网卡的分身术:Macvlan --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Macvlan五大工作模式解析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试使用Macvlan设备 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Macvlan的跨机通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Macvlan与overlay对比 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── Macvlan的救护员:IPvlan --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IPvlan简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 测试IPvlan --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Docker IPvlan网络 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 饮水思源:Docker网络模型简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 主角登场:Linux容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 打开万花筒:Docker的四大网络模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── bridge模式 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── host模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── container模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── none模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 最常用的Docker网络技巧 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看容器IP --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 端口映射 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 访问外网 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── DNS和主机名 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自定义网络 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 发布服务 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── docker link:两两互联 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 容器网络的第一个标准:CNM --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── CNM标准 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 体验CNM接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Libnetwork --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Libnetwork扩展 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 天生不易:容器组网的挑战 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 容器网络挑战综述 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Docker的解决方案 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 第三方容器网络插件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 如何做好技术选型:容器组网方案沙场点兵 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 隧道方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 路由方案 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器网络组网类型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ └── 关于容器网络标准接口 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 标准的胜利:Kubernetes网络原理与实践 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 容器基础设施的代言人:Kubernetes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes能做什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 如何用Kubernetes --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── Docker在Kubernetes中的角色 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 终于等到你:Kubernetes网络 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes网络基础 --> ( 难度等级: 初阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── Kubernetes网络架构综述 --> ( 难度等级: 初阶 || 挂载数据: blog: 4 ) +│ │ │ │ ├── Kubernetes主机内组网模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes跨节点组网模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod的hosts文件 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Pod的hostname --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Pod的核心:pause容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 打通CNI与Kubernetes:Kubernetes网络驱动 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 即将完成历史使命:Kubenet --> ( 难度等级: 初阶 || 挂载数据: blog: 5 ) +│ │ │ │ └── 网络生态第一步:CNI --> ( 难度等级: 初阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 找到你并不容易:从集群内访问服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes Service详解 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Service的三个port --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 你的服务适合哪种发布形式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes Service发现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 特殊的无头Service --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 怎么访问本地服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 找到你并不容易:从集群外访问服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kubernetes Ingress --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 你的名字:通过域名访问服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── DNS服务基本框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 域名解析基本原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 调试DNS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes网络策略:为你的应用保驾护航 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 网络策略应用举例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 前方高能:Kubernetes网络故障定位指南 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── IP转发和桥接 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Pod CIDR冲突 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── hairpin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 查看Pod IP地址 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 故障排查工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 迈向云原生 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 找个合理的理由打破巨石应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 先解耦简单的服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 学会小规模的运维 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 使用防损层模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用刀砍模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 准备一个数据迁移策略 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 重写所有模板代码 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 淘汰老代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 确保弹性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用重试来解决瞬时故障 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用有限次的重试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用断路器来处理非瞬时故障 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 优雅地降级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用隔离模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实现健康及就绪检查 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 为容器设定CPU和内存限制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 实现限速和限流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 确保安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安全性需求同其他需求一样重要 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 在设计时就考虑安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 授予最小访问权限 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安全地存储所有密钥 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 模糊化数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 传输数据加密 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用联合身份管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kubernetes pod的隔离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 处理数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用托管数据库和数据分析服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用符合数据需求的存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将数据保存在多个地域或可用区中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用数据分区和复制以提高扩展性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 避免过度获取及频繁的I/O操作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 不要把业务逻辑放在数据库中执行 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用类生产环境数据来测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 处理瞬时故障 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 性能和伸缩性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设计可扩展的无状态服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用平台的自动伸缩功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用分区来实现超出服务限制的扩容 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 运维 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 部署和发布是两项独立的活动 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 部署的内容要尽量小 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 组件层级的CI/CD定义 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 应用部署的一致性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 采用零宕机发布 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不要变更部署后的架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用容器化构建 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 用代码来描述基础设施 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 使用命名空间来组织Kubernetes中的服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 环境间的隔离 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分隔函数源代码 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 关联代码提交和部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 刨根问底:Kubernetes网络实现机制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes极客们的日常:DIY一个Ingress Controller --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Ingress Controller的通用框架 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── Nginx Ingress Controller详解 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 沧海桑田:Kubernetes DNS架构演进之路 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kube-dns的工作原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 上位的CoreDNS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kube-dns VS. CoreDNS --> ( 难度等级: 中阶 || 挂载数据: blog: 8 ) +│ │ │ └── 你的安全我负责:使用Calico提供Kubernetes网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── 部署一个带Calico的Kubernetes集群 --> ( 难度等级: 初阶 || 挂载数据: blog: 5 ) +│ │ │ └── 测试Calico网络策略 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── 百花齐放:Kubernetes网络插件生态 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从入门到放弃:Docker原生网络的不足 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CNI标准的胜出:从此江湖没有CNM --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── CNI的工作原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Kubernetes网络插件鼻祖flannel --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── flannel简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── flannel安装配置 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── flannel backend详解 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── flannel与etcd --> ( 难度等级: 初阶 || 挂载数据: blog: 7 ) +│ │ │ ├── 全能大三层网络插件:Calico --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Calico简介 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Calico的隧道模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 安装Calico --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Calico报文路径 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Calico使用指南 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Weave:支持数据加密的网络插件 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Weave简介 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Weave实现原理 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Weave安装 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Weave网络通信模型 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── Weave的应用示例 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Cilium:为微服务网络连接安全而生 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 以API为中心的微服务安全 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── BPF优化的数据平面性能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes多网络的先行者:CNI-Genie --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── CNI-Genie功能速递 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ └── 容器多IP --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ ├── Kubernetes网络下半场:Istio --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务架构的大地震:sidecar模式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 你真的需要Service Mesh吗 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── sidecar模式 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── Service Mesh与sidecar --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes Service VS. Service Mesh --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Service Mesh典型实现之Linkerd --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ ├── Istio:引领新一代微服务架构潮流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Istio安装 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Istio路由规则的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 一切尽在不言中:Istio sidecar透明注入 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Init容器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── sideca注入示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 手工注入sidecar --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自动注入sidecar --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 从应用容器到sidecar代理的通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 不再为iptables脚本所困:Istio CNI插件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 除了微服务,Istio还能做更多 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 云原生简介 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 分布式系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分布式系统的误区 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── CAP定理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 十二要素应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 可用性和服务等级协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 云原生基础 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无服务器架构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 函数计算 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 编写单一用途的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 避免串联函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 函数应保持轻量和简单 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实现无状态函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 分离函数入口和函数的业务逻辑 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 避免长时间运行的函数 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 从虚拟机到云原生 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 提升和转变 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ ├── 应用的现代化改造 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 应用的优化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 微服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 微服务架构的优势 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 微服务架构带来的挑战 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 精益运营 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 可扩展性与成本 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 云原生应用的设计 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 云原生与传统架构的对比 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ ├── API设计与版本控制 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API的前后兼容 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── 语义版本号 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务间的通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 通信协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 消息协议 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 序列化的考虑因素 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 幂等性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 请求与响应 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 发布者与订阅者 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 发布者/订阅者模式与请求/响应模式间的选择 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 同步与异步 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 设计时考虑前后兼容性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 封装好服务避免泄露内部细节 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 优先考虑异步通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 使用高效的序列化技术 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 用批处理来提高请求处理的效率 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 拆分大的消息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 路由 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 聚合 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 卸载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 网关的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 出口网关 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 服务网格 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 架构示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据存储系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对象、文件和磁盘 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 流和队列 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ ├── 区块链 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── 数据存储的选择 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 多数据存储下的数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 捕获数据更改 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 将更改作为事件写入更改日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 事务监管 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 事务回滚 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 提取、转换和加载 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 客户端访问数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 受限的客户令牌(代客密钥) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 细粒度访问控制的数据库服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── GraphQL数据服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可快速伸缩的数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据分片 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据缓存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 内容分发网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 数据分析 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 数据流 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 批处理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 对象存储上的数据湖 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 数据湖和数据仓库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 分布式查询引擎 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Kubernetes中的数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── StatefulSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── DaemonSet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── DevOps --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是DevOps --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── 协作 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自动化 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 精益原则和流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 度量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 分享 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试替身 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自动化测试金字塔 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 不同测试类型的适用时机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试节奏 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 在生产环境中测试 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 开发环境和工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 开发环境 --> ( 难度等级: 中阶 || 挂载数据: blog: 5 ) +│ │ │ │ ├── 本地开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 本地开发环境结合远端集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Skaffold开发工作流 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 将远端集群路由到本地开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 云端开发环境 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 持续集成/持续交付 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 源代码管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 构建阶段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 测试阶段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 部署阶段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 发布阶段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 发布后阶段 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 监控 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 收集指标 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 服务的可观测性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 配置管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单一环境变量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 将配置数据放入存储卷中 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 密钥保存 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 部署配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 持续集成/持续交付流程示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 可移植性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可移植性的代价 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 何时及如何实现可移植性 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 标准化的接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 共用的服务和功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 抽象和分层 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 第三方服务商的托管服务 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 可移植性工具 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 把Kubernetes作为可移植性层 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 理论篇(技术进阶) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 鸟瞰云上Kubernetes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 内容概要 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 云资源层 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ │ ├── 专有版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 托管版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Serverless版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 单机系统层 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 集群系统层 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 专有版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 托管版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Serverless版 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 功能扩展层 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 日志 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 认识集群的大脑 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从控制器视角看集群 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 控制器示例 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务控制器 --> ( 难度等级: 中阶 || 挂载数据: blog: 3 ) +│ │ │ │ └── 路由控制器 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 网络与通信原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 背景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 阿里云Kubernetes集群网络大图 --> ( 难度等级: 初阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 集群网络搭建 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 初始阶段 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 集群阶段 --> ( 难度等级: 初阶 || 挂载数据: blog: 2 ) +│ │ │ │ │ ├── 节点阶段 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ │ └── Pod阶段 --> ( 难度等级: 初阶 || 挂载数据: 无 ) +│ │ │ │ └── 通信原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 节点伸缩的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 节点增加原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 手动添加已有节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 自动添加已有节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 集群扩容 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 自动伸缩 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 节点减少原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 节点池原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简洁的服务模型 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 服务的本质是什么 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 自带通信员 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 让服务照进现实 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于Netfilter的实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 过滤器框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 节点网络大图 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 升级过滤器框架 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 用自定义链实现服务的反向代理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 镜像下载自动化 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 镜像下载这件小事 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 理解OAuth 2.0协议 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ ├── Docker扮演的角色 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 整体结构 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 理解docker login --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── 拉取镜像是怎么回事 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ │ ├── Kubernetes实现的私有镜像自动拉取 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 基本功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 进阶方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 阿里云实现的ACR credential helper --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── 日志服务的集成 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 日志服务介绍 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── 采集方案介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 方案简介 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 运行流程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 配置方式 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 核心技术介绍 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 背景 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 实现方式 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── alibaba-log-controller内部实现 --> ( 难度等级: 中阶 || 挂载数据: blog: 7 ) +│ │ │ ├── 集群与存储系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 从应用的状态谈起 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 无状态的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 有状态的应用 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基本单元:Pod Volume --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 核心设计:PVC与PV体系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 与特定存储系统解耦 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── Volume Plugin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── in-tree(内置) Volume Plugin --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ └── out-of-tree(外置) Volume Plugin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Kubernetes CSI管控组件容器化部署 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 基于Kubernetes的存储 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 流量路由Ingress --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 基本原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 基础用法 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 配置安全路由 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 全局配置和局部配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 实现原理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 场景化需求 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ │ ├── 多入口访问Ingress --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 部署多套Ingress Controller --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 获取客户端真实IP地址 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── 理解客户端真实IP地址的传递过程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ ├── ExternalTrafficPolicy的影响 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ │ └── 如何获取客户端真实IP地址 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ │ │ └── 白名单功能 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 升级设计与实现 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 升级预检 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 核心组件检查项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 前置检查增项 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 原地升级与替代升级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 原地升级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 替代升级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 升级三部曲 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 升级Master节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 升级Worker节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 核心组件升级 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 实践篇(诊断之美) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 节点就绪状态异常(一) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Docker栈 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── docker daemon调用栈分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Containerd调用栈分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 什么是D-Bus --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── runC请求D-Bus --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ └── 原因并不在D-Bus --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Systemd是硬骨头 --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ │ ├── “没用”的core dump --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 零散的信息 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代码分析 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Live Debugging --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 节点就绪状态异常(二) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 节点状态机 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 就绪三分钟 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 止步不前的PLEG --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 无响应的Terwayd --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 原因 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 修复 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 命名空间回收机制失效 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 集群管控入口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 命名空间控制器的行为 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── 删除收纳盒里的资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── API、Group、Version --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── 控制器不能删除命名空间里的资源 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ ├── 回到集群管控入口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 节点与Pod的通信 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 集群节点访问云资源 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网络安全组加固对与错 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全组扮演的角色 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 安全组与集群网络 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 怎么管理安全组规则 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 限制集群访问外网 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── IDC与集群互访 --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ └── 使用新的安全组管理节点 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 网格应用存活状态异常 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 代理与代理的生命周期管理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 控制面和数据面 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── 简单的原因 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 阿里云服务网格(ASM)介绍 --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ └── 网格自签名根证书过期 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 连续重启的Citadel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 一般意义上的证书验证 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 自签名证书验证失败 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 大神定理 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Citadel证书体系 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 经验 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── DevOps --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 运维 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── 配置 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CUE(Cisco Unity Express) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Jsonnet --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── HCL --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── BCL --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── KubeVela --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Terraform --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── API --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── GraphQL --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Swagger UI --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── gRPC --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 诊断 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── OpenTracing标准 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── SkyWalking --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Zipkin --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Jaeger --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Sonobuoy --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 质量 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Litmus --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Sysbench --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ ├── 操作系统 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── CoreOS --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── Alibaba Linux --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Tencent Linux --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +├── 云原生高阶-应用开发 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── BaaS Serverless --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Spring Cloud Connector --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Open Service Broker --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 编程语言 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Java --> ( 难度等级: 中阶 || 挂载数据: blog: 10 ) +│ │ ├── 减小镜像 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Alpine Portola --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── JDK (version >= 9) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Spring Boot (version > 2.3) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 降低资源占用率 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── Project Panama --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Project Valhalla --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 缩短冷启动时间 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── GraalVM --> ( 难度等级: 中阶 || 挂载数据: blog: 2 ) +│ │ ├── Quarkus --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ ├── Micronaut --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── Helidon --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +├── 云原生高阶-平台开发 --> ( 难度等级: 无 || 挂载数据: 无 ) +│ ├── Kubernetes --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 接口 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CNI(Container Network Interface) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Flannel --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Calico --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── Weave --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── OVN(Open Virtual Network) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── SR-IOV(Single-root Input/Output Virtualization) --> ( 难度等级: 中阶 || 挂载数据: blog: 1 ) +│ │ │ │ ├── Romana --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ ├── OpenContrail --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Kuryr --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── CRI(Container Runtime Interface) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ │ └── Frakti --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── CSI(Container Storage Interface) --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ ├── FlexVolume --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── GlusterFS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── PaaS --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Cloud Foundry --> ( 难度等级: 中阶 || 挂载数据: blog: 6 ) +│ │ ├── Crossplane --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Anthos --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── KubeSphere --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── DevOps --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 运维 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 编程 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Operator --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Pulumi --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Ballerina --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── cdk8s --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ ├── 中间件 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── 数据库 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ │ └── Database Mesh --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── 大数据 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Kubeflow --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ ├── Fluid --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ │ └── KubeTEE --> ( 难度等级: 中阶 || 挂载数据: 无 ) +│ └── 其他 --> ( 难度等级: 中阶 || 挂载数据: 无 ) +└── 其他 --> ( 难度等级: 无 || 挂载数据: 无 ) + ├── 其他类别标签问题 --> ( 难度等级: 无 || 挂载数据: 无 ) + ├── 应用类问题 --> ( 难度等级: 无 || 挂载数据: 无 ) + └── 第三方包问题 --> ( 难度等级: 无 || 挂载数据: 无 ) -- GitLab