{ "Java": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java初阶": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "什么是Java": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "JDK的下载": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "配置JDK": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java的版本": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "JavaAPI文档": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java的应用领域": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java API文档": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用IDE": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "测试开发环境": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "IO": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "IO概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "字节流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "字节流概述": { "keywords": [], "children": [] } }, { "字节流读写文件": { "keywords": [], "children": [] } }, { "文件的拷贝": { "keywords": [], "children": [] } }, { "字节流的缓冲区": { "keywords": [], "children": [] } }, { "字节缓冲流": { "keywords": [], "children": [] } } ] } }, { "File类": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "File类的常用方法": { "keywords": [], "children": [] } }, { "遍历目录下的文件": { "keywords": [], "children": [] } }, { "删除文件及目录": { "keywords": [], "children": [] } }, { "创建文件对象": { "keywords": [], "children": [] } }, { "文件操作": { "keywords": [], "children": [] } }, { "文件夹操作": { "keywords": [], "children": [] } }, { "目录列表器": { "keywords": [], "children": [] } }, { "目录实用工具": { "keywords": [], "children": [] } }, { "目录的检查及创建": { "keywords": [], "children": [] } }, { "文件的创建与删除": { "keywords": [], "children": [] } }, { "获取文件信息": { "keywords": [], "children": [] } } ] } } ] } }, { "操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "更简单的打印语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "移位操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "三元操作符if-else": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "字符串操作符 + 和 +=": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用操作符时常犯的错误": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "类型转换操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "截尾和舍入": { "keywords": [], "children": [] } }, { "提升": { "keywords": [], "children": [] } } ] } }, { "Java没有“sizeof”": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用Java操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "优先级": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "赋值": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "算术操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "一元加、减操作符": { "keywords": [], "children": [] } } ] } }, { "自动递增和递减": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "关系操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "测试对象的等价性": { "keywords": [], "children": [] } } ] } }, { "逻辑操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "短路": { "keywords": [], "children": [] } } ] } }, { "按位操作符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "控制执行流程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "true和false": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "初始化与清理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "用构造器确保初始化": { "keywords": [], "children": [] } }, { "缺省构造器": { "keywords": [], "children": [] } }, { "成员初始化": { "keywords": [], "children": [ { "指定初始化": { "keywords": [], "children": [] } } ] } }, { "构造器初始化": { "keywords": [], "children": [ { "初始化顺序": { "keywords": [], "children": [] } }, { "静态数据的初始化": { "keywords": [], "children": [] } }, { "显式的静态初始化": { "keywords": [], "children": [] } } ] } }, { "数组初始化": { "keywords": [], "children": [ { "可变参数列表": { "keywords": [], "children": [] } } ] } }, { "枚举类型": { "keywords": [], "children": [ { "基本enum特性": { "keywords": [], "children": [ { "将静态导入用于enum": { "keywords": [], "children": [] } } ] } }, { "向enum中添加新方法": { "keywords": [], "children": [ { "覆盖enum的方法": { "keywords": [], "children": [] } } ] } }, { "switch语句中的enum": { "keywords": [], "children": [] } }, { "values()的神秘之处": { "keywords": [], "children": [] } }, { "实现但不继承随机选取": { "keywords": [], "children": [] } }, { "为组织而使用接口": { "keywords": [], "children": [] } }, { "使用EnumSet替代标志": { "keywords": [], "children": [] } }, { "使用EnumMap": { "keywords": [], "children": [] } }, { "常数相关的方法": { "keywords": [], "children": [ { "使用enum的职责链": { "keywords": [], "children": [] } }, { "使用enum的状态机": { "keywords": [], "children": [] } } ] } }, { "多路分发": { "keywords": [], "children": [ { "使用enum分发": { "keywords": [], "children": [] } }, { "使用EnumMap分发": { "keywords": [], "children": [] } } ] } }, { "使用枚举类型设置常量": { "keywords": [], "children": [] } }, { "使用枚举类型的优势": { "keywords": [], "children": [] } } ] } }, { "类初始化块": { "keywords": [], "children": [] } }, { "Java访问权限修饰词": { "keywords": [], "children": [ { "包访问权限": { "keywords": [], "children": [] } }, { "public:接口访问权限": { "keywords": [], "children": [] } }, { "private: 你无法访问": { "keywords": [], "children": [] } }, { "protected:继承访问权限": { "keywords": [], "children": [] } } ] } }, { "类的访问权限": { "keywords": [], "children": [] } }, { "组合语法": { "keywords": [], "children": [] } }, { "继承语法": { "keywords": [], "children": [ { "初始化基类": { "keywords": [], "children": [] } } ] } }, { "代理": { "keywords": [], "children": [ { "创建代理对象": { "keywords": [], "children": [] } }, { "代理类的特性": { "keywords": [], "children": [] } } ] } }, { "在组合与继承之间选择": { "keywords": [], "children": [] } }, { "protected关键字": { "keywords": [], "children": [] } }, { "添加一组元素": { "keywords": [], "children": [] } }, { "容器的打印": { "keywords": [], "children": [] } }, { "List": { "keywords": [], "children": [] } }, { "迭代器": { "keywords": [], "children": [ { "ListIterator": { "keywords": [], "children": [] } } ] } }, { "LinkedList": { "keywords": [], "children": [] } }, { "Stack": { "keywords": [], "children": [] } }, { "Set": { "keywords": [], "children": [] } }, { "Map": { "keywords": [], "children": [] } }, { "Queue": { "keywords": [], "children": [ { "PriorityQueue": { "keywords": [], "children": [] } } ] } }, { "Collection和Iterator": { "keywords": [], "children": [] } }, { "Foreach与迭代器": { "keywords": [], "children": [ { "适配器方法惯用法": { "keywords": [], "children": [] } } ] } } ] } }, { "通过异常处理错误": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "概念": { "keywords": [], "children": [] } }, { "捕获异常": { "keywords": [], "children": [ { "try块": { "keywords": [], "children": [] } }, { "异常处理程序": { "keywords": [], "children": [] } }, { "f?inally子句": { "keywords": [], "children": [] } }, { "try-with-Resources语句": { "keywords": [], "children": [] } }, { "分析堆栈轨迹元素": { "keywords": [], "children": [] } } ] } }, { "创建自定义异常": { "keywords": [], "children": [] } }, { "异常说明": { "keywords": [], "children": [] } }, { "捕获所有异常": { "keywords": [], "children": [ { "栈轨迹": { "keywords": [], "children": [] } }, { "重新抛出异常": { "keywords": [], "children": [] } }, { "异常链": { "keywords": [], "children": [] } } ] } }, { "Java标准异常": { "keywords": [], "children": [ { "特例: RuntimeException(运行时异常)": { "keywords": [], "children": [] } } ] } }, { "使用finally进行清理": { "keywords": [], "children": [ { "finally用来做什么": { "keywords": [], "children": [] } }, { "在return中使用finally": { "keywords": [], "children": [] } }, { "缺憾:异常丢失": { "keywords": [], "children": [] } } ] } }, { "构造器": { "keywords": [], "children": [ { "使用构造器执行初始化": { "keywords": [], "children": [] } }, { "构造器重载": { "keywords": [], "children": [] } } ] } }, { "异常匹配": { "keywords": [], "children": [] } }, { "其他可选方式": { "keywords": [], "children": [ { "历史": { "keywords": [], "children": [] } }, { "观点": { "keywords": [], "children": [] } }, { "把异常传递给控制台": { "keywords": [], "children": [] } }, { "把“受检查异常”转换为“不受检查的异常”": { "keywords": [], "children": [] } } ] } }, { "异常使用指南": { "keywords": [], "children": [] } } ] } }, { "并发编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "if-else": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "迭代": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "do-while": { "keywords": [], "children": [] } }, { "逗号操作符": { "keywords": [], "children": [] } } ] } }, { "Foreach语法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "return": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "break和continue": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "臭名昭著的“goto”": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "switch": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "对象导论": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "抽象过程": { "keywords": [], "children": [] } }, { "每个对象都有一个接口": { "keywords": [], "children": [] } }, { "每个对象都提供服务": { "keywords": [], "children": [] } }, { "被隐藏的具体实现": { "keywords": [], "children": [] } }, { "复用具体实现": { "keywords": [], "children": [] } }, { "伴随多态的可互换对象": { "keywords": [], "children": [] } }, { "单根继承结构": { "keywords": [], "children": [] } }, { "容器": { "keywords": [], "children": [ { "参数化类型(范型)": { "keywords": [], "children": [] } } ] } } ] } } ] } }, { "输入和输出": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "InputStream类型": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "OutputStream类型": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "读取输入": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "添加属性和有用的接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "通过FilterInputStream从InputStream读取": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "通过FilterOutPutStream向OutputStream写入": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Reader和Writer": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "数据的来源和去处": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "更改流的行为": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "未发生变化的类": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "IO的典型使用方式": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "缓冲的输入文件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "从内存中输入": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "格式化的内存输入": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "基本文件输出": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "存储和恢复数据": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "读取和写入随机访问文件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "管道流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "文件读写的实用工具": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "读取二进制文件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "标准IO": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "从标准输入中读取": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "将System.out转换成PrintWriter": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "标准IO重定向": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "进程控制": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "第一个Java程序": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "编辑Java源代码": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "编译Java程序": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "根据CLASSPATH环境变量定位类": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "压缩": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "用GZIP进行简单压缩": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "用Zip进行多文件存储": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java档案文件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "XML": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Preferences": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "JDK的使用": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "什么是JDK": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "安装JDK": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "JDK目录介绍": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "系统环境变量": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "PATH环境变量": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "CLASSPATH环境变量": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Java的运行机制": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java的基本语法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java的基本语法格式": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java中的注释": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java中的关键字": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java中的标识符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Java中的变量与常量": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "变量的定义": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "变量的数据类型": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "变量的类型转换32目录Java基础入门(第2版)2.2.4变量的作用域": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java中的常量": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "指数记数法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Java中的运算符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "比较运算符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "逻辑运算符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "条件运算符": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "选择结构语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "if条件语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "switch条件语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "循环结构语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "do…while循环语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "for循环语句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "集合": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "集合概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "集合框架中的接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "链表": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "数组列表": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "散列集": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "树集": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "优先队列": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "映射": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "基本映射操作": { "keywords": [], "children": [] } }, { "更新映射条目": { "keywords": [], "children": [] } }, { "映射视图": { "keywords": [], "children": [] } }, { "弱散列映射": { "keywords": [], "children": [] } }, { "链接散列集与映射": { "keywords": [], "children": [] } }, { "枚举集与映射": { "keywords": [], "children": [] } }, { "标识散列映射": { "keywords": [], "children": [] } } ] } }, { "算法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "二分查找": { "keywords": [], "children": [] } }, { "简单算法": { "keywords": [], "children": [] } }, { "批操作": { "keywords": [], "children": [] } }, { "编写自己的算法": { "keywords": [], "children": [] } } ] } }, { "遗留的集合": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "属性映射": { "keywords": [], "children": [] } }, { "栈": { "keywords": [], "children": [] } }, { "位集": { "keywords": [], "children": [] } } ] } }, { "Java集合简介": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Collection接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "编写equals方法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "编写equals和hashCode": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用TreeMap": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用Properties": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用Deque": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "List接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "List接口简介": { "keywords": [], "children": [] } }, { "ArrayList集合": { "keywords": [], "children": [] } }, { "LinkedList集合": { "keywords": [], "children": [] } } ] } }, { "Collection集合遍历": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Iterator遍历集合": { "keywords": [], "children": [] } }, { "foreach遍历集合": { "keywords": [], "children": [] } }, { "JDK 8的forEach遍历集合": { "keywords": [], "children": [] } } ] } }, { "Set接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Set接口简介": { "keywords": [], "children": [] } }, { "HashSet集合": { "keywords": [], "children": [] } }, { "TreeSet集合": { "keywords": [], "children": [] } } ] } }, { "Map接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Map接口简介": { "keywords": [], "children": [] } }, { "HashMap集合": { "keywords": [], "children": [] } }, { "Map集合遍历": { "keywords": [], "children": [] } }, { "TreeMap集合": { "keywords": [], "children": [] } }, { "Properties集合": { "keywords": [], "children": [] } } ] } }, { "常用工具类": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Collections工具类": { "keywords": [], "children": [] } }, { "Arrays工具类": { "keywords": [], "children": [] } } ] } }, { "聚合操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "聚合操作简介": { "keywords": [], "children": [] } }, { "创建Stream流对象": { "keywords": [], "children": [] } }, { "Stream流的常用方法": { "keywords": [], "children": [] } }, { "Parallel Stream(并行流)": { "keywords": [], "children": [] } } ] } }, { "Java集合框架": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "集合接口与实现分离": { "keywords": [], "children": [] } }, { "泛型实用方法": { "keywords": [], "children": [] } } ] } } ] } } ] } }, { "Java中阶": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "IO(输入输出)": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "流概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "输入输出流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "输入流": { "keywords": [], "children": [] } }, { "输出流": { "keywords": [], "children": [] } } ] } }, { "文件输入输出流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "FileInputStream类与FileOutputStream类": { "keywords": [], "children": [] } }, { "FileReader类与FileWriter类": { "keywords": [], "children": [] } } ] } }, { "带缓冲的输入输出流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "BufferedInputStream类与BufferedOutputStream类": { "keywords": [], "children": [] } }, { "BufferedReader类与BufferedWriter类": { "keywords": [], "children": [] } } ] } }, { "带缓存的输入输出流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "数据输入输出流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "ZIP压缩输入输出流": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "压缩文件": { "keywords": [], "children": [] } }, { "解压缩ZIP文件": { "keywords": [], "children": [] } } ] } } ] } }, { "注解": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "基本语法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "定义注解": { "keywords": [], "children": [] } }, { "元注解": { "keywords": [], "children": [] } } ] } }, { "编写注解处理器": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "注解元素": { "keywords": [], "children": [] } }, { "缺省值限制": { "keywords": [], "children": [] } }, { "生成外部文件": { "keywords": [], "children": [] } }, { "注解不支持继承": { "keywords": [], "children": [] } }, { "实现处理器": { "keywords": [], "children": [] } } ] } }, { "使用apt处理注解": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "将观察者模式用于apt": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "基于注解的单元测试": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "将@Unit用于泛型": { "keywords": [], "children": [] } }, { "不需要任何“套件”": { "keywords": [], "children": [] } }, { "实现@Unit": { "keywords": [], "children": [] } }, { "移除测试代码": { "keywords": [], "children": [] } } ] } }, { "限定重写父类方法:@Override": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java 9增强的@Deprecated": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "抑制编译器警告:@SuppressWarnings": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "“堆污染”警告与Java 9增强的@SafeVarargs": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "并发": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "并发的多面性": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "更快的执行": { "keywords": [], "children": [] } }, { "改进代码设计": { "keywords": [], "children": [] } } ] } }, { "线程状态": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "新建线程": { "keywords": [], "children": [] } }, { "可运行线程": { "keywords": [], "children": [] } }, { "阻塞和等待线程": { "keywords": [], "children": [] } }, { "终止线程": { "keywords": [], "children": [] } } ] } }, { "线程属性": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "中断线程": { "keywords": [], "children": [] } }, { "守护线程": { "keywords": [], "children": [] } }, { "线程名": { "keywords": [], "children": [] } }, { "未捕获异常的处理器": { "keywords": [], "children": [] } } ] } }, { "线程安全的集合": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "阻塞队列": { "keywords": [], "children": [] } }, { "映射条目的原子更新": { "keywords": [], "children": [] } }, { "对并发散列映射的批操作": { "keywords": [], "children": [] } }, { "并发集视图": { "keywords": [], "children": [] } }, { "写数组的拷贝": { "keywords": [], "children": [] } }, { "并行数组算法": { "keywords": [], "children": [] } }, { "较早的线程安全集合": { "keywords": [], "children": [] } } ] } }, { "异步计算": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "可完成Future": { "keywords": [], "children": [] } }, { "组合可完成Future": { "keywords": [], "children": [] } }, { "用户界面回调中的长时间运行任务": { "keywords": [], "children": [] } } ] } }, { "基本的线程机制": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "定义任务让步": { "keywords": [], "children": [] } }, { "使用Executor": { "keywords": [], "children": [] } }, { "从任务产生返回值": { "keywords": [], "children": [] } }, { "休眠": { "keywords": [], "children": [] } }, { "让步": { "keywords": [], "children": [] } }, { "编码的变体": { "keywords": [], "children": [] } }, { "术语": { "keywords": [], "children": [] } }, { "创建有响应的用户界面": { "keywords": [], "children": [] } } ] } }, { "共享受限资源": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "不正确地访问资源": { "keywords": [], "children": [] } }, { "解决共享资源竞争": { "keywords": [], "children": [] } }, { "原子性与易变性": { "keywords": [], "children": [] } }, { "原子类": { "keywords": [], "children": [] } }, { "临界资源": { "keywords": [], "children": [] } }, { "在其他对象上同步": { "keywords": [], "children": [] } }, { "线程局部存储": { "keywords": [], "children": [] } } ] } }, { "终结任务": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "装饰性花园": { "keywords": [], "children": [] } }, { "在阻塞时终结": { "keywords": [], "children": [] } }, { "中断": { "keywords": [], "children": [] } }, { "检查中断": { "keywords": [], "children": [] } } ] } }, { "线程之间的协作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "wait()与notifyAll()": { "keywords": [], "children": [] } }, { "notify()与notifyAll()": { "keywords": [], "children": [] } }, { "生产者与消费者": { "keywords": [], "children": [] } }, { "任务间使用管道进行输入输出": { "keywords": [], "children": [] } } ] } }, { "死锁": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "性能调优": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "比较各类互斥技术": { "keywords": [], "children": [] } }, { "免锁容器": { "keywords": [], "children": [] } }, { "乐观锁": { "keywords": [], "children": [] } }, { "ReadWriteLock": { "keywords": [], "children": [] } } ] } }, { "活动对象": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "进阶读物": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Maven基础": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Maven介绍": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "依赖管理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "构建流程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用插件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "模块管理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用mvnw": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "发布Artifact": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "RandomAccessFile": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "对象序列化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "寻找类": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "序列化的控制": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用“持久性”": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "使用JDBC操作数据库": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "JDBC概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "JDBC-ODBC桥": { "keywords": [], "children": [] } }, { "JDBC技术": { "keywords": [], "children": [] } }, { "JDBC驱动程序的类型": { "keywords": [], "children": [] } } ] } }, { "数据库操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "数据库基础": { "keywords": [], "children": [] } }, { "数据查询": { "keywords": [], "children": [] } }, { "动态查询": { "keywords": [], "children": [] } }, { "添加、修改、删除记录": { "keywords": [], "children": [] } }, { "数据库基础知识": { "keywords": [], "children": [ { "什么是数据库": { "keywords": [], "children": [] } }, { "数据库的种类及功能": { "keywords": [], "children": [] } }, { "SQL语言": { "keywords": [], "children": [] } } ] } }, { "向数据库发送SQL语句": { "keywords": [], "children": [] } }, { "处理查询结果集": { "keywords": [], "children": [] } }, { "顺序查询": { "keywords": [], "children": [] } }, { "模糊查询": { "keywords": [], "children": [] } }, { "预处理语句": { "keywords": [], "children": [] } } ] } } ] } }, { "NIO": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "NIO概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Files工具类": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Buffer(缓冲器)": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Channel(通道)": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Java新IO概述": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用Buffer": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用Channel": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "字符集和Charset": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "文件锁": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Path接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "网络编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "网络编程基础": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "网络通信协议": { "keywords": [], "children": [] } }, { "IP地址和端口号": { "keywords": [], "children": [] } }, { "InetAddress": { "keywords": [], "children": [] } }, { "UDP与TCP协议": { "keywords": [], "children": [] } } ] } }, { "UDP通信": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "UDP通信简介": { "keywords": [], "children": [] } }, { "DatagramPacket": { "keywords": [], "children": [] } }, { "DatagramSocket": { "keywords": [], "children": [] } }, { "UDP网络程序": { "keywords": [], "children": [] } }, { "UDP案例——聊天程序": { "keywords": [], "children": [] } } ] } }, { "TCP通信": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "TCP通信简介": { "keywords": [], "children": [] } }, { "ServerSocket": { "keywords": [], "children": [] } }, { "Socket": { "keywords": [], "children": [] } }, { "简单的TCP网络程序": { "keywords": [], "children": [] } }, { "多线程的TCP网络程序": { "keywords": [], "children": [] } }, { "TCP案例——文件上传": { "keywords": [], "children": [] } } ] } }, { "网络编程的基础知识": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "网络基础知识": { "keywords": [], "children": [] } } ] } }, { "Java的基本网络支持": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "使用URLDecoder和URLEncoder": { "keywords": [], "children": [] } }, { "URL、URLConnection和URLPermission": { "keywords": [], "children": [] } } ] } }, { "基于TCP协议的网络编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "TCP协议基础": { "keywords": [], "children": [] } }, { "使用ServerSocket创建TCP服务器端": { "keywords": [], "children": [] } }, { "使用Socket进行通信": { "keywords": [], "children": [] } }, { "记录用户信息": { "keywords": [], "children": [] } }, { "半关闭的Socket": { "keywords": [], "children": [] } }, { "使用NIO实现非阻塞Socket通信": { "keywords": [], "children": [] } }, { "使用AIO实现非阻塞通信": { "keywords": [], "children": [] } } ] } }, { "基于UDP协议的网络编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "UDP协议基础": { "keywords": [], "children": [] } }, { "使用DatagramSocket发送、接收数据": { "keywords": [], "children": [] } }, { "使用MulticastSocket实现多点广播": { "keywords": [], "children": [] } } ] } }, { "使用代理服务器": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "直接使用Proxy创建连接": { "keywords": [], "children": [] } }, { "使用ProxySelector自动选择代理服务器": { "keywords": [], "children": [] } } ] } }, { "Java 11标准化的HTTP Client": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "发送同步GET请求": { "keywords": [], "children": [] } }, { "发送带请求体的请求": { "keywords": [], "children": [] } }, { "发送异步请求": { "keywords": [], "children": [] } }, { "WebSocket客户端支持": { "keywords": [], "children": [] } }, { "基于WebSocket的多人实时聊天": { "keywords": [], "children": [] } } ] } } ] } }, { "类型信息": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Class对象": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "类字面常量": { "keywords": [], "children": [] } }, { "泛化的Class引用": { "keywords": [], "children": [] } }, { "新的转型语法": { "keywords": [], "children": [] } } ] } }, { "类型转换前先做检查": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "使用类字面常量": { "keywords": [], "children": [] } }, { "动态instanceof": { "keywords": [], "children": [] } }, { "递归计数": { "keywords": [], "children": [] } } ] } }, { "注册工厂": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "instanceof与Class的等价性": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "反射:运行时类信息": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "类方法抽取器": { "keywords": [], "children": [] } }, { "Class类与Java反射": { "keywords": [], "children": [ { "访问构造方法": { "keywords": [], "children": [] } }, { "访问成员变量": { "keywords": [], "children": [] } }, { "访问方法": { "keywords": [], "children": [] } } ] } }, { "使用Annotation功能": { "keywords": [], "children": [ { "定义Annotation类型": { "keywords": [], "children": [] } }, { "访问Annotation信息": { "keywords": [], "children": [] } } ] } }, { "声明异常入门": { "keywords": [], "children": [] } }, { "资源": { "keywords": [], "children": [] } }, { "利用反射分析类的能力": { "keywords": [], "children": [] } }, { "使用反射在运行时分析": { "keywords": [], "children": [] } }, { "使用反射编写泛型数组": { "keywords": [], "children": [] } }, { "访问字段": { "keywords": [], "children": [] } }, { "调用方法": { "keywords": [], "children": [] } }, { "调用构造方法": { "keywords": [], "children": [] } }, { "获取继承关系": { "keywords": [], "children": [] } } ] } }, { "动态代理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "空对象": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "模拟对象与桩": { "keywords": [], "children": [] } } ] } } ] } }, { "容器深入研究": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "完整的容器分类法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "实用方法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "List的排序和查询": { "keywords": [], "children": [] } }, { "设定Collection或Map为不可修改": { "keywords": [], "children": [] } }, { "Collection或Map的同步控制": { "keywords": [], "children": [] } } ] } }, { "持有引用": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "WeakHashMap": { "keywords": [], "children": [] } } ] } }, { "填充容器": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "一种Generator解决方案": { "keywords": [], "children": [] } }, { "Map生成器": { "keywords": [], "children": [] } }, { "使用Abstract类": { "keywords": [], "children": [] } } ] } }, { "Collection的功能方法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "可选操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "未获支持的操作": { "keywords": [], "children": [] } } ] } }, { "List的功能方法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "队列": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "优先级队列": { "keywords": [], "children": [] } }, { "双向队列": { "keywords": [], "children": [] } } ] } }, { "理解Map": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "性能": { "keywords": [], "children": [] } }, { "SortedMap": { "keywords": [], "children": [] } }, { "LinkedHashMap": { "keywords": [], "children": [] } } ] } }, { "散列与散列码": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "理解hashCode()": { "keywords": [], "children": [] } }, { "为速度而散列": { "keywords": [], "children": [] } }, { "覆盖hashCode()": { "keywords": [], "children": [] } } ] } }, { "选择接口的不同实现": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "性能测试框架": { "keywords": [], "children": [] } }, { "对List的选择": { "keywords": [], "children": [] } }, { "微基准测试的危险": { "keywords": [], "children": [] } }, { "对Set的选择": { "keywords": [], "children": [] } }, { "对Map的选择": { "keywords": [], "children": [] } } ] } } ] } }, { "新类库中的构件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "CountDownLatch": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "CyclicBarrier": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "DelayQueue": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "PriorityBlockingQueue": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "ScheduledExecutor": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Semaphore": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Exchange": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } } ] } }, { "Java高阶": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java 8、9、10以及11的变化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java怎么还在变": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java在编程语言生态系统中的位置": { "keywords": [], "children": [] } }, { "用行为参数化把代码传递给方法": { "keywords": [], "children": [] } }, { "并行与共享的可变数据": { "keywords": [], "children": [] } }, { "Java需要演变": { "keywords": [], "children": [] } } ] } }, { "Java中的函数": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "方法和Lambda作为一等值": { "keywords": [], "children": [ { "从Java程序中调用C函数": { "keywords": [], "children": [] } }, { "数值参数与返回值": { "keywords": [], "children": [] } }, { "字符串参数": { "keywords": [], "children": [] } }, { "访问域": { "keywords": [], "children": [ { "访问静态域": { "keywords": [], "children": [] } } ] } }, { "编码签名": { "keywords": [], "children": [] } }, { "调用Java方法": { "keywords": [], "children": [ { "静态方法": { "keywords": [], "children": [] } }, { "构造器": { "keywords": [], "children": [] } }, { "另一种方法调用": { "keywords": [], "children": [] } } ] } }, { "访问数组元素": { "keywords": [], "children": [] } }, { "使用调用API": { "keywords": [], "children": [] } } ] } }, { "传递代码:一个例子": { "keywords": [], "children": [] } }, { "从传递方法到Lambda": { "keywords": [], "children": [] } } ] } }, { "默认方法及Java模块": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "不断演进的API": { "keywords": [], "children": [ { "初始版本的API": { "keywords": [], "children": [] } }, { "第二版API": { "keywords": [], "children": [] } } ] } }, { "概述默认方法": { "keywords": [], "children": [] } }, { "默认方法的使用模式": { "keywords": [], "children": [ { "行为的多继承": { "keywords": [], "children": [] } } ] } }, { "解决冲突的规则": { "keywords": [], "children": [ { "选择提供了最具体实现的默认方法的接口": { "keywords": [], "children": [] } }, { "冲突及如何显式地消除歧义": { "keywords": [], "children": [] } } ] } } ] } }, { "来自函数式编程的其他好思想": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "收集器接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "用Optional取代null": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "如何为缺失的值建模": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "采用防御式检查减少NullPointerException": { "keywords": [], "children": [] } }, { "其他语言中null的替代品": { "keywords": [], "children": [] } } ] } }, { "Optional类入门": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "应用Optional的几种模式": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "创建Optional对象": { "keywords": [], "children": [] } }, { "使用map从Optional对象中提取和转换值": { "keywords": [], "children": [] } }, { "使用flatMap链接Optional对象": { "keywords": [], "children": [] } }, { "操纵由Optional对象构成的Stream": { "keywords": [], "children": [] } }, { "默认行为及解引用Optional对象": { "keywords": [], "children": [] } }, { "两个Optional对象的组合": { "keywords": [], "children": [] } }, { "使用filter剔除特定的值": { "keywords": [], "children": [] } } ] } } ] } }, { "Java模块系统": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "exports子句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "多模块项目": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "编译及打包": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "自动模块": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "模块声明及子句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "requires子句": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "命名": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "requires": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "exports": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "requires的传递": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "exports to": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "open和opens": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "uses和provides": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "servlet": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "背景": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "处理HTTP请求和响应": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "处理HTTP GET请求": { "keywords": [], "children": [] } }, { "处理HTTP POST请求": { "keywords": [], "children": [] } } ] } }, { "使用cookie": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "会话跟踪": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "servelet的生命周期": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "servlet开发选项": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用Tomcat": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "一个简单的servlet": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "创建和编译servlet源代码": { "keywords": [], "children": [] } }, { "启动Tomcat": { "keywords": [], "children": [] } }, { "启动Web浏览器并请求servlet": { "keywords": [], "children": [] } } ] } }, { "Servlet API": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "javax.servlet包": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Servlet接口": { "keywords": [], "children": [] } }, { "ServletConfig接口": { "keywords": [], "children": [] } }, { "ServletContext接口": { "keywords": [], "children": [] } }, { "ServletRequest接口": { "keywords": [], "children": [] } }, { "ServletResponse接口": { "keywords": [], "children": [] } }, { "GenericServlet类": { "keywords": [], "children": [] } }, { "ServletInputStream类": { "keywords": [], "children": [] } }, { "ServletOutputStream类": { "keywords": [], "children": [] } }, { "servlet异常类": { "keywords": [], "children": [] } } ] } }, { "读取servlet参数": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "javax.servlet.http包": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "HttpServletRequest接口": { "keywords": [], "children": [] } }, { "HttpServletResponse接口": { "keywords": [], "children": [] } }, { "HttpSession接口": { "keywords": [], "children": [] } }, { "Cookie类": { "keywords": [], "children": [] } }, { "HttpServlet类": { "keywords": [], "children": [] } } ] } } ] } }, { "Java异步任务": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "为支持并发而不断演进的Java": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "其他的线程抽象:非嵌套方法调用": { "keywords": [], "children": [] } }, { "你希望线程为你带来什么": { "keywords": [], "children": [] } } ] } }, { "同步及异步API": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Future风格的API": { "keywords": [], "children": [] } }, { "反应式风格的API": { "keywords": [], "children": [] } }, { "有害的睡眠及其他阻塞式操作": { "keywords": [], "children": [] } }, { "如何使用异步API进行异常处理": { "keywords": [], "children": [] } } ] } }, { "“线框–管道”模型": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "为并发而生的CompletableFuture和结合器": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "“发布–订阅”以及反应式编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "背压": { "keywords": [], "children": [] } }, { "一种简单的真实背压": { "keywords": [], "children": [] } } ] } }, { "反应式系统和反应式编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "CompletableFuture:组合式异步编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "实现异步API": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "将同步方法转换为异步方法": { "keywords": [], "children": [] } }, { "错误处理": { "keywords": [], "children": [] } } ] } }, { "让你的代码免受阻塞之苦": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "使用并行流对请求进行并行操作": { "keywords": [], "children": [] } }, { "使用CompletableFuture发起异步请求": { "keywords": [], "children": [] } }, { "寻找更好的方案": { "keywords": [], "children": [] } }, { "使用定制的执行器": { "keywords": [], "children": [] } } ] } }, { "对多个异步任务进行流水线操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "实现折扣服务": { "keywords": [], "children": [] } }, { "使用Discount服务": { "keywords": [], "children": [] } }, { "构造同步和异步操作": { "keywords": [], "children": [] } }, { "将两个CompletableFuture对象整合起来,无论它们是否存在依赖": { "keywords": [], "children": [] } }, { "对Future和Completable-Future的回顾": { "keywords": [], "children": [] } }, { "高效地使用超时机制": { "keywords": [], "children": [] } } ] } }, { "响应CompletableFuture的completion事件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "对最佳价格查询器应用的优化": { "keywords": [], "children": [] } } ] } } ] } }, { "反应式编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "反应式宣言": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "应用层的反应式编程": { "keywords": [], "children": [] } }, { "反应式系统": { "keywords": [], "children": [] } } ] } }, { "反应式流以及Flow API": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Flow类": { "keywords": [], "children": [] } }, { "创建你的第一个反应式应用": { "keywords": [], "children": [] } }, { "使用Processor转换数据": { "keywords": [], "children": [] } } ] } }, { "使用反应式库RxJava": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "转换及整合多个Observable": { "keywords": [], "children": [] } } ] } }, { "Java反射技术": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "通过反射构建对象": { "keywords": [], "children": [] } }, { "反射方法": { "keywords": [], "children": [] } } ] } } ] } }, { "Spring": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Spring IoC": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Spring IoC概述": { "keywords": [], "children": [ { "主动创建对象": { "keywords": [], "children": [] } }, { "被动创建对象": { "keywords": [], "children": [] } }, { "Spring IoC阐述": { "keywords": [], "children": [] } } ] } }, { "Spring IoC容器": { "keywords": [], "children": [ { "Spring IoC容器的设计": { "keywords": [], "children": [] } }, { "Spring IoC容器的初始化和依赖注入": { "keywords": [], "children": [] } }, { "Spring Bean的生命周期": { "keywords": [], "children": [] } } ] } } ] } }, { "装配Spring Bean": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "依赖注入的3种方式": { "keywords": [], "children": [ { "构造器注入": { "keywords": [], "children": [] } }, { "使用setter注入": { "keywords": [], "children": [] } }, { "接口注入": { "keywords": [], "children": [] } } ] } }, { "装配Bean概述": { "keywords": [], "children": [] } }, { "通过XML配置装配Bean": { "keywords": [], "children": [ { "装配简易值": { "keywords": [], "children": [] } }, { "装配集合": { "keywords": [], "children": [] } }, { "命名空间装配": { "keywords": [], "children": [] } } ] } }, { "通过注解装配Bean": { "keywords": [], "children": [ { "使用@Component装配Bean": { "keywords": [], "children": [] } }, { "自动装配——@Autowired": { "keywords": [], "children": [] } }, { "自动装配的歧义性(@Primary和@Qualifier)": { "keywords": [], "children": [] } }, { "装载带有参数的构造方法类": { "keywords": [], "children": [] } }, { "使用@Bean装配Bean": { "keywords": [], "children": [] } }, { "注解自定义Bean的初始化和销毁方法": { "keywords": [], "children": [] } } ] } }, { "装配的混合使用": { "keywords": [], "children": [] } }, { "使用Profile": { "keywords": [], "children": [ { "使用注解@Profile配置": { "keywords": [], "children": [] } }, { "使用XML定义Profile": { "keywords": [], "children": [] } }, { "启动Profile": { "keywords": [], "children": [] } }, { "点睛": { "keywords": [], "children": [] } }, { "演示": { "keywords": [], "children": [] } } ] } }, { "加载属性(properties)文件": { "keywords": [], "children": [ { "使用注解方式加载属性文件": { "keywords": [], "children": [] } }, { "使用XML方式加载属性文件": { "keywords": [], "children": [] } } ] } }, { "条件化装配Bean": { "keywords": [], "children": [] } }, { "Bean的作用域": { "keywords": [], "children": [] } }, { "使用Spring表达式(Spring EL)": { "keywords": [], "children": [ { "Spring EL相关的类": { "keywords": [], "children": [] } }, { "Spring EL运算": { "keywords": [], "children": [] } } ] } } ] } }, { "面向切面编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "一个简单的约定游戏": { "keywords": [], "children": [ { "约定规则": { "keywords": [], "children": [] } }, { "读者的代码": { "keywords": [], "children": [] } }, { "笔者的代码": { "keywords": [], "children": [] } } ] } }, { "Spring AOP的基本概念": { "keywords": [], "children": [ { "AOP的概念和使用原因": { "keywords": [], "children": [] } }, { "面向切面编程的术语": { "keywords": [], "children": [] } }, { "Spring对AOP的支持": { "keywords": [], "children": [] } } ] } }, { "使用@AspectJ注解开发Spring AOP": { "keywords": [], "children": [ { "选择切点": { "keywords": [], "children": [] } }, { "创建切面": { "keywords": [], "children": [] } }, { "连接点": { "keywords": [], "children": [] } }, { "测试AOP": { "keywords": [], "children": [ { "装配AOP": { "keywords": [], "children": [] } }, { "使用注解装配AOP": { "keywords": [], "children": [] } }, { "AOP避坑指南": { "keywords": [], "children": [] } } ] } }, { "环绕通知": { "keywords": [], "children": [] } }, { "织入": { "keywords": [], "children": [] } }, { "给通知传递参数": { "keywords": [], "children": [] } }, { "引入": { "keywords": [], "children": [] } } ] } }, { "使用XML配置开发Spring AOP": { "keywords": [], "children": [ { "前置通知、后置通知、返回通知和异常通知": { "keywords": [], "children": [] } }, { "环绕通知": { "keywords": [], "children": [] } }, { "给通知传递参数": { "keywords": [], "children": [] } }, { "引入": { "keywords": [], "children": [] } } ] } }, { "经典Spring AOP应用程序": { "keywords": [], "children": [] } }, { "多个切面": { "keywords": [], "children": [] } } ] } }, { "Spring数据库编程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "传统的JDBC代码的弊端": { "keywords": [], "children": [] } }, { "配置数据库资源": { "keywords": [], "children": [ { "使用简单数据库配置": { "keywords": [], "children": [] } }, { "使用第三方数据库连接池": { "keywords": [], "children": [] } }, { "使用JNDI数据库连接池": { "keywords": [], "children": [] } } ] } }, { "JDBC代码失控的解决方案——jdbcTemplate": { "keywords": [], "children": [ { "jdbcTemplate的增、删、查、改": { "keywords": [], "children": [] } }, { "执行多条SQL": { "keywords": [], "children": [] } }, { "jdbcTemplate的源码分析": { "keywords": [], "children": [] } } ] } }, { "Spring的缺点": { "keywords": [], "children": [] } } ] } }, { "深入Spring数据库事务管理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Spring数据库事务管理器的设计": { "keywords": [], "children": [ { "配置事务管理器": { "keywords": [], "children": [] } }, { "用Java配置方式实现Spring数据库事务": { "keywords": [], "children": [] } } ] } }, { "编程式事务": { "keywords": [], "children": [] } }, { "声明式事务": { "keywords": [], "children": [ { "Transactional的配置项": { "keywords": [], "children": [] } }, { "使用XML进行配置事务管理器": { "keywords": [], "children": [] } }, { "事务定义器": { "keywords": [], "children": [] } }, { "声明式事务的约定流程": { "keywords": [], "children": [] } } ] } }, { "数据库的相关知识": { "keywords": [], "children": [ { "数据库事务ACID特性": { "keywords": [], "children": [] } }, { "丢失更新": { "keywords": [], "children": [] } }, { "隔离级别": { "keywords": [], "children": [] } } ] } }, { "选择隔离级别和传播行为": { "keywords": [], "children": [ { "选择隔离级别": { "keywords": [], "children": [] } }, { "传播行为": { "keywords": [], "children": [] } } ] } }, { "在Spring+MyBatis组合中使用事务": { "keywords": [], "children": [] } }, { "典型错误用法的剖析": { "keywords": [], "children": [ { "错误使用Service": { "keywords": [], "children": [] } }, { "过长时间占用事务": { "keywords": [], "children": [] } }, { "错误捕捉异常": { "keywords": [], "children": [] } } ] } } ] } }, { "Spring配置": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Java配置": { "keywords": [], "children": [] } } ] } } ] } }, { "Spring MVC": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Spring MVC初始化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "保存并获取属性参数": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "注解@RequestAttribute": { "keywords": [], "children": [] } }, { "注解@SessionAttribute和注解@SessionAttributes": { "keywords": [], "children": [] } }, { "注解@CookieValue和注解@RequestHeader": { "keywords": [], "children": [] } } ] } }, { "验证表单": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "使用JSR 303注解验证输入内容": { "keywords": [], "children": [] } }, { "使用验证器": { "keywords": [], "children": [] } } ] } }, { "数据模型": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "视图和视图解析器": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "视图": { "keywords": [], "children": [] } }, { "视图解析器": { "keywords": [], "children": [] } } ] } }, { "上传文件": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Spring MVC的数据转换和格式化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "HttpMessageConverter和JSON消息转换器": { "keywords": [], "children": [] } }, { "一对一转换器(Converter)": { "keywords": [], "children": [] } }, { "数组和集合转换器GenericConverter": { "keywords": [], "children": [] } }, { "使用格式化器(Formatter)": { "keywords": [], "children": [] } } ] } }, { "为控制器添加通知": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "处理异常": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "国际化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "MessageSource接口": { "keywords": [], "children": [] } }, { "CookieLocaleResolver和SessionLocaleResolver": { "keywords": [], "children": [] } }, { "国际化拦截器(LocaleChangeInterceptor)": { "keywords": [], "children": [] } }, { "开发国际化": { "keywords": [], "children": [] } } ] } }, { "Spring Aware": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [] } } ] } }, { "配置@RequestMapping": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "多线程": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [] } } ] } }, { "计划任务": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [] } } ] } }, { "条件注解@Conditional": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [] } } ] } }, { "组合注解与元注解": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [] } } ] } }, { "@Enable*注解的工作原理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "第一类:直接导入配置类": { "keywords": [], "children": [] } }, { "第二类:依据条件选择配置类": { "keywords": [], "children": [] } }, { "第三类:动态注册Bean": { "keywords": [], "children": [] } } ] } }, { "测试": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [] } } ] } }, { "控制器的开发": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "视图渲染": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用@RequestParam注解获取参数": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "使用URL传递参数": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "传递JSON参数": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "接收列表数据和表单序列化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "重定向": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Spring Boot": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "通过行为参数化传递代码": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "应对不断变化的需求": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "初试牛刀:筛选绿苹果": { "keywords": [], "children": [] } }, { "再展身手:把颜色作为参数": { "keywords": [], "children": [] } }, { "第三次尝试:对你能想到的每个属性做筛选": { "keywords": [], "children": [] } } ] } }, { "行为参数化": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "对付啰唆": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "匿名类": { "keywords": [], "children": [] } }, { "第五次尝试:使用匿名类": { "keywords": [], "children": [] } }, { "第六次尝试:使用Lambda表达式": { "keywords": [], "children": [] } }, { "第七次尝试:将List类型抽象化": { "keywords": [], "children": [] } } ] } }, { "真实的例子": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "用Comparator来排序": { "keywords": [], "children": [] } }, { "用Runnable执行代码块": { "keywords": [], "children": [] } }, { "通过Callable返回结果": { "keywords": [], "children": [] } }, { "GUI事件处理": { "keywords": [], "children": [] } } ] } } ] } }, { "Mybatis": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "MyBatis的解析和运行原理": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "构建SqlSessionFactory过程": { "keywords": [], "children": [ { "构建Configuration": { "keywords": [], "children": [] } }, { "构建映射器的内部组成": { "keywords": [], "children": [] } }, { "构建SqlSessionFactory": { "keywords": [], "children": [] } } ] } }, { "SqlSession运行过程": { "keywords": [], "children": [ { "映射器(Mapper)的动态代理": { "keywords": [], "children": [] } }, { "SqlSession下的四大对象": { "keywords": [], "children": [] } } ] } }, { "插件接口": { "keywords": [], "children": [] } }, { "插件的初始化": { "keywords": [], "children": [] } }, { "插件的代理和反射设计": { "keywords": [], "children": [] } }, { "常用的工具类——MetaObject": { "keywords": [], "children": [] } }, { "映射器": { "keywords": [], "children": [ { "select元素——查询语句": { "keywords": [], "children": [ { "简单的select元素的应用": { "keywords": [], "children": [] } }, { "自动映射和驼峰映射": { "keywords": [], "children": [] } }, { "传递多个参数": { "keywords": [], "children": [] } }, { "使用resultMap映射结果集": { "keywords": [], "children": [] } }, { "分页参数RowBounds": { "keywords": [], "children": [] } } ] } }, { "insert元素——插入语句": { "keywords": [], "children": [ { "简单的insert语句的应用": { "keywords": [], "children": [] } }, { "主键回填": { "keywords": [], "children": [] } }, { "自定义主键": { "keywords": [], "children": [] } } ] } }, { "update元素和delete元素": { "keywords": [], "children": [] } }, { "sql元素": { "keywords": [], "children": [] } }, { "参数": { "keywords": [], "children": [ { "存储过程参数支持": { "keywords": [], "children": [] } }, { "特殊字符串的替换和处理(#和$)": { "keywords": [], "children": [] } } ] } }, { "resultMap元素": { "keywords": [], "children": [ { "resultMap元素的构成": { "keywords": [], "children": [] } }, { "使用map存储结果集": { "keywords": [], "children": [] } }, { "使用POJO存储结果集": { "keywords": [], "children": [] } } ] } }, { "级联": { "keywords": [], "children": [ { "MyBatis中的级联": { "keywords": [], "children": [] } }, { "建立POJO": { "keywords": [], "children": [] } }, { "配置映射文件": { "keywords": [], "children": [] } }, { "延迟加载": { "keywords": [], "children": [] } }, { "另一种级联": { "keywords": [], "children": [] } }, { "多对多级联": { "keywords": [], "children": [] } } ] } }, { "缓存": { "keywords": [], "children": [ { "一级缓存和二级缓存": { "keywords": [], "children": [] } }, { "缓存配置项、自定义和引用": { "keywords": [], "children": [] } } ] } }, { "存储过程": { "keywords": [], "children": [ { "IN和OUT参数存储过程": { "keywords": [], "children": [] } }, { "游标的使用": { "keywords": [], "children": [] } } ] } } ] } }, { "动态SQL": { "keywords": [], "children": [ { "if元素": { "keywords": [], "children": [] } }, { "choose、when、otherwise元素": { "keywords": [], "children": [] } }, { "trim、where、set元素": { "keywords": [], "children": [] } }, { "foreach元素": { "keywords": [], "children": [] } }, { "用test的属性判断字符串": { "keywords": [], "children": [] } }, { "bind元素": { "keywords": [], "children": [] } } ] } } ] } } ] } }, { "Spark": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Flink": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Vert.x": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "Quarkus": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "其他": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "其他类别标签问题": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "应用类问题": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "第三方包问题": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "Lambda表达式": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Lambda管中窥豹": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "测试使用Lambda的方法的行为": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "将复杂的Lambda表达式分为不同的方法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "高阶函数的测试": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "在哪里以及如何使用Lambda": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "函数式接口": { "keywords": [], "children": [] } }, { "函数描述符": { "keywords": [], "children": [] } } ] } }, { "把Lambda付诸实践:环绕执行模式": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "第 1 步:记得行为参数化": { "keywords": [], "children": [] } }, { "第 2 步:使用函数式接口来传递行为": { "keywords": [], "children": [] } }, { "第 3 步:执行一个行为": { "keywords": [], "children": [] } }, { "第 4 步:传递Lambda": { "keywords": [], "children": [] } } ] } }, { "使用函数式接口": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "Predicate": { "keywords": [], "children": [] } }, { "Consumer": { "keywords": [], "children": [] } }, { "Function": { "keywords": [], "children": [] } } ] } }, { "类型检查、类型推断以及限制": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "类型检查": { "keywords": [], "children": [] } }, { "同样的Lambda,不同的函数式接口": { "keywords": [], "children": [] } }, { "类型推断": { "keywords": [], "children": [] } }, { "使用局部变量": { "keywords": [], "children": [] } } ] } }, { "方法引用": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "管中窥豹": { "keywords": [], "children": [] } }, { "构造函数引用": { "keywords": [], "children": [] } } ] } }, { "复合Lambda表达式的有用方法": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "比较器复合": { "keywords": [], "children": [] } }, { "谓词复合": { "keywords": [], "children": [] } }, { "函数复合": { "keywords": [], "children": [] } } ] } }, { "数学中的类似思想": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "积分": { "keywords": [], "children": [] } }, { "与Java 8的Lambda联系起来": { "keywords": [], "children": [] } } ] } }, { "测试可见Lambda函数的行为": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "流简介": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "流操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "中间操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "终端操作": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "路线图": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "收集器简介": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "收集器用作高级归约": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "预定义收集器": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "分组": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "操作分组的元素": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "多级分组": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "按子组收集数据": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } }, { "分区": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [ { "分区的优势": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } }, { "将数字按质数和非质数分区": { "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "keywords": [], "children": [] } } ] } } ] } } ] } }