{ "java": { "node_id": "java-cd78d5d1fb3749ecbc21ee6e8542a724", "keywords": [], "children": [ { "Java初阶": { "node_id": "java-71a99d2763734420aee110c5c5b904d8", "keywords": [], "children": [ { "Java概述": { "node_id": "java-43e7bb3ee96c44e29df8e2f4063be49a", "keywords": [], "children": [ { "什么是Java": { "node_id": "java-b45c34278b714bfbb6a6d80817e24639", "keywords": [], "children": [] } }, { "JDK的下载": { "node_id": "java-238f8a0558a949f29e56dd830eae1b8b", "keywords": [], "children": [] } }, { "配置JDK": { "node_id": "java-007e13f0e4db49a1b181b1561104873c", "keywords": [], "children": [] } }, { "Java的版本": { "node_id": "java-32823e681af949c4ae26e0bf9a9977a2", "keywords": [], "children": [] } }, { "JavaAPI文档": { "node_id": "java-36e8a46b02764541acd2800e1b189403", "keywords": [], "children": [] } }, { "Java的应用领域": { "node_id": "java-733ca772d4c14e94974c0fa98c41820b", "keywords": [], "children": [] } }, { "Java API文档": { "node_id": "java-eefa4050fc314922a8df1b5f101dcae1", "keywords": [], "children": [] } }, { "使用IDE": { "node_id": "java-ee4e218c826b4f5cb22150ce60a5880b", "keywords": [], "children": [] } }, { "测试开发环境": { "node_id": "java-6d12bdbdeb7144aeb3649d50e0f06007", "keywords": [], "children": [] } } ] } }, { "IO": { "node_id": "java-bff54193c9594a788b63428c761aa0db", "keywords": [], "children": [ { "IO概述": { "node_id": "java-34a5e258543140209c0a7ae93e90f334", "keywords": [], "children": [] } }, { "字节流": { "node_id": "java-bc0a001b9405489db020b8cc77e5d205", "keywords": [], "children": [ { "字节流概述": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "字节流概述" } }, { "字节流读写文件": { "keywords": [], "children": [], "node_id": "java-7a190721f9e14fc28a4dc1892ffe0845", "title": "字节流读写文件" } }, { "文件的拷贝": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "文件的拷贝" } }, { "字节流的缓冲区": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "字节缓冲流": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "File类": { "node_id": "java-f7b0c5b43fc14e7aaf54257d96469d21", "keywords": [], "children": [ { "File类的常用方法": { "keywords": [], "children": [], "node_id": "java-d2fa4eea5f30456c8fd7ca8ef2ad5eab", "title": "File类的常用方法" } }, { "遍历目录下的文件": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "遍历目录下的文件" } }, { "删除文件及目录": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "删除文件及目录" } }, { "创建文件对象": { "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" } } ] } } ] } }, { "操作符": { "node_id": "java-d131f1a8df9446d383ed50bbd172c4bb", "keywords": [], "children": [ { "更简单的打印语句": { "node_id": "java-abfea328567247299dda87840637e3cb", "keywords": [], "children": [] } }, { "移位操作符": { "node_id": "java-0d405a41281d424ca00dca4e18c12b61", "keywords": [], "children": [] } }, { "三元操作符if-else": { "node_id": "java-27584561349847fa84c7905215131621", "keywords": [], "children": [] } }, { "字符串操作符 + 和 +=": { "node_id": "java-8fad68e2479a4e93875c6ca1746baef6", "keywords": [], "children": [] } }, { "使用操作符时常犯的错误": { "node_id": "java-e284668a00844feb8b38b3073e3cb2b6", "keywords": [], "children": [] } }, { "类型转换操作符": { "node_id": "java-b075138ebd0145338459d7a9de46aef7", "keywords": [], "children": [ { "截尾和舍入": { "keywords": [], "children": [], "node_id": "java-805d92324ad14bf48a50084d9af74a8c", "title": "截尾和舍入" } }, { "提升": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "提升" } } ] } }, { "Java没有“sizeof”": { "node_id": "java-d5974aecec2f48839637253d09367815", "keywords": [], "children": [] } }, { "使用Java操作符": { "node_id": "java-a9431628c39b4daf993bc3768ff8a44d", "keywords": [], "children": [] } }, { "优先级": { "node_id": "java-e59d9d4b749543be8821b1d6a05c2afc", "keywords": [], "children": [] } }, { "赋值": { "node_id": "java-d8af839c715a43d6a7d18e5999f2bcde", "keywords": [], "children": [] } }, { "算术操作符": { "node_id": "java-a4cc291dc2264301a87f361de4b8d6ea", "keywords": [], "children": [ { "一元加、减操作符": { "keywords": [], "children": [], "node_id": "java-a6e0d49965584c4392cff18cb591a332", "title": "一元加、减操作符" } } ] } }, { "自动递增和递减": { "node_id": "java-f6e6b9e930ef46699788339fc7322f18", "keywords": [], "children": [] } }, { "关系操作符": { "node_id": "java-21247e52fb0849699959f78321bc855e", "keywords": [], "children": [ { "测试对象的等价性": { "keywords": [], "children": [], "node_id": "java-59cbb9821eed4c28a3e365e8ce963865", "title": "测试对象的等价性" } } ] } }, { "逻辑操作符": { "node_id": "java-a7a6076a60e140f18b63b6ea3574eed2", "keywords": [], "children": [ { "短路": { "keywords": [], "children": [], "node_id": "java-633e7df8ce304791b9981fccb636b3e8", "title": "短路" } } ] } }, { "按位操作符": { "node_id": "java-58320af2f24648198eda32c4da587b5d", "keywords": [], "children": [] } } ] } }, { "控制执行流程": { "node_id": "java-05024fbfd53a4d88978d6c78d7ff06bf", "keywords": [], "children": [ { "true和false": { "node_id": "java-09da728d4cac4f51bcb205b7170dd83b", "keywords": [], "children": [] } }, { "初始化与清理": { "node_id": "java-fd953c58b2024be0b11f829c3b7f36fd", "keywords": [], "children": [ { "用构造器确保初始化": { "keywords": [], "children": [], "node_id": "java-9917fd6871e845bf873eec19aa99a353", "title": "用构造器确保初始化" } }, { "缺省构造器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "缺省构造器" } }, { "成员初始化": { "keywords": [], "children": [ { "指定初始化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "成员初始化" } }, { "构造器初始化": { "keywords": [], "children": [ { "初始化顺序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "静态数据的初始化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "显式的静态初始化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "数组初始化": { "keywords": [], "children": [ { "可变参数列表": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "枚举类型": { "keywords": [], "children": [ { "基本enum特性": { "keywords": [], "children": [ { "将静态导入用于enum": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "向enum中添加新方法": { "keywords": [], "children": [ { "覆盖enum的方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "switch语句中的enum": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "values()的神秘之处": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "实现但不继承随机选取": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "为组织而使用接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用EnumSet替代标志": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用EnumMap": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "常数相关的方法": { "keywords": [], "children": [ { "使用enum的职责链": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用enum的状态机": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "多路分发": { "keywords": [], "children": [ { "使用enum分发": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用EnumMap分发": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用枚举类型设置常量": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用枚举类型的优势": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "类初始化块": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Java访问权限修饰词": { "keywords": [], "children": [ { "包访问权限": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "public:接口访问权限": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "private: 你无法访问": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "protected:继承访问权限": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "类的访问权限": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "组合语法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "继承语法": { "keywords": [], "children": [ { "初始化基类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "代理": { "keywords": [], "children": [ { "创建代理对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "代理类的特性": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "在组合与继承之间选择": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "protected关键字": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "添加一组元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "容器的打印": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "List": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "迭代器": { "keywords": [], "children": [ { "ListIterator": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "LinkedList": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Stack": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Set": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Map": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Queue": { "keywords": [], "children": [ { "PriorityQueue": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Collection和Iterator": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Foreach与迭代器": { "keywords": [], "children": [ { "适配器方法惯用法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "通过异常处理错误": { "node_id": "java-d11b7f01004c443ea6226d174ba1e3fa", "keywords": [], "children": [ { "概念": { "keywords": [], "children": [], "node_id": "java-74dba10624904700bca41dd2cfab0d17", "title": "概念" } }, { "捕获异常": { "keywords": [], "children": [ { "try块": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "try块" } }, { "异常处理程序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "f?inally子句": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "try-with-Resources语句": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "分析堆栈轨迹元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "捕获异常" } }, { "创建自定义异常": { "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" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Java标准异常": { "keywords": [], "children": [ { "特例: RuntimeException(运行时异常)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用finally进行清理": { "keywords": [], "children": [ { "finally用来做什么": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "在return中使用finally": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "缺憾:异常丢失": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "构造器": { "keywords": [], "children": [ { "使用构造器执行初始化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "构造器重载": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "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": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "异常使用指南": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "并发编程": { "node_id": "java-f372302ab33f4bfc875688641393d369", "keywords": [], "children": [] } }, { "if-else": { "node_id": "java-85a126a6ba39488aaabd2d4015353175", "keywords": [], "children": [] } }, { "迭代": { "node_id": "java-73fd080a97c34ae2a89bd60c9510c409", "keywords": [], "children": [ { "do-while": { "keywords": [], "children": [], "node_id": "java-0238e72ddb834cde8c0059fb0a213d57", "title": "do-while" } }, { "逗号操作符": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "逗号操作符" } } ] } }, { "Foreach语法": { "node_id": "java-722dc1cccbc74369b9bff5ac580bc649", "keywords": [], "children": [] } }, { "return": { "node_id": "java-66019537247040fcbb6d74a29f47819f", "keywords": [], "children": [] } }, { "break和continue": { "node_id": "java-1b0927bc3a3342869b4fc981abf17ff6", "keywords": [], "children": [] } }, { "臭名昭著的“goto”": { "node_id": "java-f7ba772bd92e4ee48ebb231d7cd86d07", "keywords": [], "children": [] } }, { "switch": { "node_id": "java-05144fa9daf94a64ad0667eab1d6cc9a", "keywords": [], "children": [] } }, { "对象导论": { "node_id": "java-30e9c233490b48cab3d429d4baa652d4", "keywords": [], "children": [ { "抽象过程": { "keywords": [], "children": [], "node_id": "java-a087266d273941c1b48ff7a6439c3763", "title": "抽象过程" } }, { "每个对象都有一个接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "每个对象都有一个接口" } }, { "每个对象都提供服务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "每个对象都提供服务" } }, { "被隐藏的具体实现": { "keywords": [], "children": [], "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" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "输入和输出": { "node_id": "java-64b6e35bfb53488a9ed0abae657a4000", "keywords": [], "children": [ { "InputStream类型": { "node_id": "java-fc2dfe1a80f64143b4ad339378ba61da", "keywords": [], "children": [] } }, { "OutputStream类型": { "node_id": "java-cc8c2e511db54a2ca2ee798f2cdbd03b", "keywords": [], "children": [] } }, { "读取输入": { "node_id": "java-602feb8538b7419aa660c552c3a40884", "keywords": [], "children": [] } } ] } }, { "添加属性和有用的接口": { "node_id": "java-4e35103c4b4043ee8f0fd4abe2fb0776", "keywords": [], "children": [ { "通过FilterInputStream从InputStream读取": { "node_id": "java-823a70a13c2b4adfa75de69821f05e84", "keywords": [], "children": [] } }, { "通过FilterOutPutStream向OutputStream写入": { "node_id": "java-f6539c97ec184d74b6da9c00f1352830", "keywords": [], "children": [] } } ] } }, { "Reader和Writer": { "node_id": "java-32396d02d16640b49e4bfc6beee5b2f2", "keywords": [], "children": [ { "数据的来源和去处": { "node_id": "java-a9ae14246ec447fb969860752ddfc947", "keywords": [], "children": [] } }, { "更改流的行为": { "node_id": "java-4cbbcc28c12644b38b2f3c67aa77b814", "keywords": [], "children": [] } }, { "未发生变化的类": { "node_id": "java-5841af2d0b914d9b98c9c686a21721b7", "keywords": [], "children": [] } } ] } }, { "IO的典型使用方式": { "node_id": "java-d81cdb255d3e448895c5d0ae11cc4a31", "keywords": [], "children": [ { "缓冲的输入文件": { "node_id": "java-b2e5b25889674bc7a9d623a1004f249b", "keywords": [], "children": [] } }, { "从内存中输入": { "node_id": "java-b7c5859c1d11403598c1e51ab5705167", "keywords": [], "children": [] } }, { "格式化的内存输入": { "node_id": "java-c2fbb86d10e14734a40d055b27922e8b", "keywords": [], "children": [] } }, { "基本文件输出": { "node_id": "java-e43aad7888f646fda05d997ac91d3ed0", "keywords": [], "children": [] } }, { "存储和恢复数据": { "node_id": "java-6204262ce42842e6808e0933cea39741", "keywords": [], "children": [] } }, { "读取和写入随机访问文件": { "node_id": "java-38f4f339ea78438b8fa150e9ae9a165b", "keywords": [], "children": [] } }, { "管道流": { "node_id": "java-5c0990c32ac741ff91599274d2ed98e3", "keywords": [], "children": [] } } ] } }, { "文件读写的实用工具": { "node_id": "java-77486c83e4a74b2dace24e1d78dccfc1", "keywords": [], "children": [ { "读取二进制文件": { "node_id": "java-8cc2f962c00f49b99437c4c6cf4bc5d3", "keywords": [], "children": [] } } ] } }, { "标准IO": { "node_id": "java-7cacdc5775454c959b9374d65811537b", "keywords": [], "children": [ { "从标准输入中读取": { "node_id": "java-b129db04d5944bd28646849bdeb02915", "keywords": [], "children": [] } }, { "将System.out转换成PrintWriter": { "node_id": "java-7e1fa0fd153441e98a8fc6228715366c", "keywords": [], "children": [] } }, { "标准IO重定向": { "node_id": "java-3cec01a35955478499952ffc662f21a9", "keywords": [], "children": [] } } ] } }, { "进程控制": { "node_id": "java-f7c6d831a9084704a3e91ec91a8e6d7b", "keywords": [], "children": [] } }, { "第一个Java程序": { "node_id": "java-379b792dde024090a7ed43b392ece2c5", "keywords": [], "children": [ { "编辑Java源代码": { "node_id": "java-55cfe3ca4d8f4611855475c2ea3737af", "keywords": [ "输出", "main", "程序入口" ], "children": [] } }, { "编译Java程序": { "node_id": "java-5fa1abbd66474a9e98f62e3e172dbdfb", "keywords": [], "children": [] } }, { "根据CLASSPATH环境变量定位类": { "node_id": "java-45cdc91007ba431e87124a6a9c15725e", "keywords": [], "children": [] } } ] } }, { "压缩": { "node_id": "java-bd599e5bf2c44f3eb73a06218c4a1d4c", "keywords": [], "children": [ { "用GZIP进行简单压缩": { "node_id": "java-10cc94d63a0e4804846f0b8f2d90bd58", "keywords": [], "children": [] } }, { "用Zip进行多文件存储": { "node_id": "java-4f965ba95d8d4950a6f83a52c2271a9f", "keywords": [], "children": [] } }, { "Java档案文件": { "node_id": "java-728e8731910f4289adbe110a5db754dd", "keywords": [], "children": [] } } ] } }, { "Preferences": { "node_id": "java-17e2f1ba71b9419283e7669fcdd455ec", "keywords": [], "children": [] } }, { "系统环境变量": { "node_id": "java-263ac3e02d10409a9f489674667f8ea5", "keywords": [], "children": [ { "PATH环境变量": { "node_id": "java-836b88c6e1ee46e8b01bbd843b0c8971", "keywords": [], "children": [] } }, { "CLASSPATH环境变量": { "node_id": "java-d8c0b7ac10d04711b99c7538b89a97bd", "keywords": [], "children": [] } } ] } }, { "Java的运行机制": { "node_id": "java-1c7f65aae3e344c39de8791b67e1fbb7", "keywords": [], "children": [] } }, { "Java的基本语法": { "node_id": "java-fc5d065c53404449bf726b5e441706c1", "keywords": [], "children": [ { "Java的基本语法格式": { "node_id": "java-efb87004230b4680a32c6584112c6f20", "keywords": [ "输出", "循环", "for" ], "children": [] } }, { "Java中的注释": { "node_id": "java-c668b26b90ab4982bd906933809d6049", "keywords": [], "children": [] } }, { "Java中的关键字": { "node_id": "java-0021d9d14dfc429cab17b4dd912651b6", "keywords": [], "children": [] } }, { "Java中的标识符": { "node_id": "java-1d41e245176e437e8103e481bc91aa3b", "keywords": [], "children": [] } } ] } }, { "Java中的变量与常量": { "node_id": "java-19afc527fd62401aaf89ff81a250d624", "keywords": [], "children": [ { "变量的定义": { "node_id": "java-b8e6eab222ad4a06b53b4d00182769db", "keywords": [ "变量", "赋值", "定义" ], "children": [] } }, { "变量的数据类型": { "node_id": "java-ac26535850ef4aaf8bb9fec08bc47825", "keywords": [], "children": [] } }, { "Java中的常量": { "node_id": "java-37cc072d202340f5ae3a6e829416edc7", "keywords": [ "常量", "定义", "变量", "final" ], "children": [] } }, { "变量的作用域": { "node_id": "java-4657e7685f1543ddbaba55b2562b4ec9", "keywords": [ "常量", "定义", "作用域" ], "children": [] } } ] } }, { "Java中的运算符": { "node_id": "java-624bba5cef024d2d8ebf54ded569343d", "keywords": [], "children": [ { "比较运算符": { "node_id": "java-e858a75415dd4f6cb36cb023f4bb9ed8", "keywords": [ "大于", "小于", "等于", "比较", "不等于" ], "children": [] } }, { "逻辑运算符": { "node_id": "java-79c8e7f14bee4898a52f3103a29ae564", "keywords": [ "逻辑运算符", "组合", "优先级" ], "children": [] } }, { "算术运算符": { "node_id": "java-5d46f8b7ac974df8a24a04805c4a167b", "keywords": [ "算术运算符", "优先级" ], "children": [] } } ] } }, { "选择结构语句": { "node_id": "java-630751c514da49b9b675fddc5b2d0418", "keywords": [], "children": [ { "if条件语句": { "node_id": "java-d4a802d353d648a0a4c90daf60774cf3", "keywords": [], "children": [] } }, { "switch条件语句": { "node_id": "java-180cf0806d374fa4b10fdaebcc946d89", "keywords": [], "children": [] } } ] } }, { "循环结构语句": { "node_id": "java-672a697e644041cda2a90dc1ca90d2a9", "keywords": [], "children": [ { "do…while循环语句": { "node_id": "java-9814a131da364cd0a3933b640ddb421c", "keywords": [], "children": [] } }, { "for循环语句": { "node_id": "java-911127b38b884ab4bb5a35365c41833b", "keywords": [], "children": [] } } ] } }, { "集合": { "node_id": "java-43b99c9c823a4ff798631990686d3088", "keywords": [], "children": [ { "集合概述": { "node_id": "java-3b6988c9edda4332ab2b2bde76ce74ba", "keywords": [], "children": [] } }, { "集合框架中的接口": { "node_id": "java-b65776c30f4e4aaf99d8bc8b66855e7c", "keywords": [], "children": [] } }, { "链表": { "node_id": "java-bfbb4319eb60496583ace9aca561c7ab", "keywords": [], "children": [] } }, { "数组列表": { "node_id": "java-a8e9302bf3f34c67b6d0d1d1dd5b8e06", "keywords": [], "children": [] } }, { "散列集": { "node_id": "java-53a2b2fe37394f808059240a7a65c347", "keywords": [], "children": [] } }, { "树集": { "node_id": "java-b295e8ba38ed4e3c90ea0f7b0d70039e", "keywords": [], "children": [] } }, { "优先队列": { "node_id": "java-d2a2357798784f6fbcd875b94165e350", "keywords": [], "children": [] } }, { "映射": { "node_id": "java-7625240ab0254b198142c52926465f42", "keywords": [], "children": [ { "基本映射操作": { "keywords": [], "children": [], "node_id": "java-80f2c854a2eb484aab8f9b793999c99e", "title": "基本映射操作" } }, { "更新映射条目": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "更新映射条目" } }, { "映射视图": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "映射视图" } }, { "弱散列映射": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "链接散列集与映射": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "枚举集与映射": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "标识散列映射": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "算法": { "node_id": "java-61f2876689974eec9689c33ef8a3f4cb", "keywords": [], "children": [ { "二分查找": { "keywords": [], "children": [], "node_id": "java-ded68731826d4bce9d963538e39a10ef", "title": "二分查找" } }, { "简单算法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "简单算法" } }, { "批操作": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "批操作" } }, { "编写自己的算法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "遗留的集合": { "node_id": "java-7f1d9ed947de49588bb7c8a02e052c10", "keywords": [], "children": [ { "属性映射": { "keywords": [], "children": [], "node_id": "java-3b67670fa36943f086358d867932c6ab", "title": "属性映射" } }, { "栈": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "栈" } }, { "位集": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "位集" } } ] } }, { "Java集合简介": { "node_id": "java-91db3dd24ea34bca8c6e9d0935d33d9c", "keywords": [], "children": [] } }, { "Collection接口": { "node_id": "java-73271e880f0843f69437427bfc557ff2", "keywords": [], "children": [] } }, { "编写equals方法": { "node_id": "java-8bfe31396801426e8ed6f8b8a8190b80", "keywords": [], "children": [] } }, { "编写equals和hashCode": { "node_id": "java-bb2a2b6d7b114799b01aa89bafbdab86", "keywords": [], "children": [] } }, { "使用TreeMap": { "node_id": "java-6d9ccc979da54411ac65fccd1a12071e", "keywords": [], "children": [] } }, { "使用Properties": { "node_id": "java-7b0b78c00f934f7f958dcf7107243ae1", "keywords": [], "children": [] } }, { "使用Deque": { "node_id": "java-ff4a16d20df24eda93d843749e777a76", "keywords": [], "children": [] } }, { "List接口": { "node_id": "java-c6a5d8d2c6394aae9ba504a2d2e922e8", "keywords": [], "children": [ { "List接口简介": { "keywords": [], "children": [], "node_id": "java-9027b2dc889a4898b4cc4197d6b2fe21", "title": "List接口简介" } }, { "ArrayList集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "ArrayList集合" } }, { "LinkedList集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "LinkedList集合" } } ] } }, { "Collection集合遍历": { "node_id": "java-04044ad9b1914b928a0f48be4478f9ac", "keywords": [], "children": [ { "Iterator遍历集合": { "keywords": [], "children": [], "node_id": "java-ba1b82874f154652bffd62c7b7b542ab", "title": "Iterator遍历集合" } }, { "foreach遍历集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "foreach遍历集合" } }, { "JDK 8的forEach遍历集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "JDK 8的forEach遍历集合" } } ] } }, { "Set接口": { "node_id": "java-243249b52e4449d1acc2f61ac3d492c4", "keywords": [], "children": [ { "Set接口简介": { "keywords": [], "children": [], "node_id": "java-bd790481aa4d405383426891c6e4ef2a", "title": "Set接口简介" } }, { "HashSet集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "HashSet集合" } }, { "TreeSet集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "TreeSet集合" } } ] } }, { "Map接口": { "node_id": "java-585898e24579448980def03a33fd553c", "keywords": [], "children": [ { "Map接口简介": { "keywords": [], "children": [], "node_id": "java-5ec3563f06184fa29eb5748b33ca4450", "title": "Map接口简介" } }, { "HashMap集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "HashMap集合" } }, { "Map集合遍历": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Map集合遍历" } }, { "TreeMap集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Properties集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "常用工具类": { "node_id": "java-61ba5b89d4284c1b9d59436bce805640", "keywords": [], "children": [ { "Collections工具类": { "keywords": [], "children": [], "node_id": "java-a07f943448184bf985a9f929567ed94e", "title": "Collections工具类" } }, { "Arrays工具类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Arrays工具类" } } ] } }, { "聚合操作": { "node_id": "java-2d3c1265286d4b58a87650a633ba2373", "keywords": [], "children": [ { "聚合操作简介": { "keywords": [], "children": [], "node_id": "java-4c3e7ab968f04393af0c008d7ab6fcc7", "title": "聚合操作简介" } }, { "创建Stream流对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "创建Stream流对象" } }, { "Stream流的常用方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Stream流的常用方法" } }, { "Parallel Stream(并行流)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "Java集合框架": { "node_id": "java-860b3800347942d2857795251974730b", "keywords": [], "children": [ { "集合接口与实现分离": { "keywords": [], "children": [], "node_id": "java-9d394513b1664cfc9686a8593f23975c", "title": "集合接口与实现分离" } }, { "泛型实用方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "泛型实用方法" } } ] } } ] } } ] } }, { "Java中阶": { "node_id": "java-b4719189dc7544228ef1b578548be47f", "keywords": [], "children": [ { "IO(输入输出)": { "node_id": "java-3dc422fd227a45db83e38ba6fe0003c0", "keywords": [], "children": [ { "流概述": { "node_id": "java-9d6d81f6283d414ba54d97cb25373b7c", "keywords": [], "children": [] } }, { "输入输出流": { "node_id": "java-4395c520c7514a97a792922acd5937bb", "keywords": [], "children": [ { "输入流": { "keywords": [], "children": [], "node_id": "java-a397c10e1a904c419811483b97c8d8b9", "title": "输入流" } }, { "输出流": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "输出流" } } ] } }, { "文件输入输出流": { "node_id": "java-132615c6b56b4ea883622abf5b81128d", "keywords": [], "children": [ { "FileInputStream类与FileOutputStream类": { "keywords": [], "children": [], "node_id": "java-a42ac36c7aae462f9ef8edf8b6212528", "title": "FileInputStream类与FileOutputStream类" } }, { "FileReader类与FileWriter类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "FileReader类与FileWriter类" } } ] } }, { "带缓冲的输入输出流": { "node_id": "java-56b6286ea8fa4b27b79e8b213db7204a", "keywords": [], "children": [ { "BufferedInputStream类与BufferedOutputStream类": { "keywords": [], "children": [], "node_id": "java-5af453276cf74fa68de03f85636a127d", "title": "BufferedInputStream类与BufferedOutputStream类" } }, { "BufferedReader类与BufferedWriter类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "BufferedReader类与BufferedWriter类" } } ] } }, { "带缓存的输入输出流": { "node_id": "java-454658fa2a694039b3610120dd13d49d", "keywords": [], "children": [] } }, { "数据输入输出流": { "node_id": "java-41dbdf68bd6a4b52a8673a57dcd6ee3e", "keywords": [], "children": [] } }, { "ZIP压缩输入输出流": { "node_id": "java-822ae98d5b294e699b7ed1bc6ffb9425", "keywords": [], "children": [ { "压缩文件": { "keywords": [], "children": [], "node_id": "java-c2a40bea599142e1bafe5c65e5f49e92", "title": "压缩文件" } }, { "解压缩ZIP文件": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "解压缩ZIP文件" } } ] } } ] } }, { "注解": { "node_id": "java-baada6303aca42f0b2f7882a3446fdf9", "keywords": [], "children": [ { "基本语法": { "node_id": "java-132c631a618e4828b4c69316d6163ec3", "keywords": [], "children": [ { "定义注解": { "keywords": [], "children": [], "node_id": "java-98201a6f1e8a445ea49972461f824686", "title": "定义注解" } }, { "元注解": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "元注解" } } ] } }, { "编写注解处理器": { "node_id": "java-7548e9cbfcef479dbc0cb18f95956ee5", "keywords": [], "children": [ { "注解元素": { "keywords": [], "children": [], "node_id": "java-8ab361278b074bf0885a40a5ba4ea4ff", "title": "注解元素" } }, { "缺省值限制": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "缺省值限制" } }, { "生成外部文件": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "生成外部文件" } }, { "注解不支持继承": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "实现处理器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "使用apt处理注解": { "node_id": "java-8b0806d4d89948598ac95e5c19b53298", "keywords": [], "children": [] } }, { "将观察者模式用于apt": { "node_id": "java-b351f154d1a94dc0ae830f51f5ac2320", "keywords": [], "children": [] } }, { "基于注解的单元测试": { "node_id": "java-352f523c7ad54583a0097cf171015d83", "keywords": [], "children": [ { "将@Unit用于泛型": { "keywords": [], "children": [], "node_id": "java-14e84a2913724dfc9e77bf2cd2dfc17c", "title": "将@Unit用于泛型" } }, { "不需要任何“套件”": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "不需要任何“套件”" } }, { "实现@Unit": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "实现@Unit" } }, { "移除测试代码": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "限定重写父类方法:@Override": { "node_id": "java-2d843168cf7c4d45b9e10bef5dd38424", "keywords": [], "children": [] } }, { "Java 9增强的@Deprecated": { "node_id": "java-2c4700ed3f94441a89ae1ce9cefb2acc", "keywords": [], "children": [] } }, { "抑制编译器警告:@SuppressWarnings": { "node_id": "java-53d85a25b0254b2ab2912c3ef05f9b44", "keywords": [], "children": [] } }, { "“堆污染”警告与Java 9增强的@SafeVarargs": { "node_id": "java-13e41a9fcdc348b180c14ff7c50883f3", "keywords": [], "children": [] } } ] } }, { "并发": { "node_id": "java-4363917cb433456e9bc2f56ee7848da6", "keywords": [], "children": [ { "并发的多面性": { "node_id": "java-66090dfe673e48a5a14c6ee846c4fc97", "keywords": [], "children": [ { "更快的执行": { "keywords": [], "children": [], "node_id": "java-4f4e7e1bf6714da0a24705e5cb433e71", "title": "更快的执行" } }, { "改进代码设计": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "改进代码设计" } } ] } }, { "线程状态": { "node_id": "java-7a4a0e08d7424b5896f2325f732bdeee", "keywords": [], "children": [ { "新建线程": { "keywords": [], "children": [], "node_id": "java-f1fece37484743eeab27863607dd9fde", "title": "新建线程" } }, { "可运行线程": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "可运行线程" } }, { "阻塞和等待线程": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "阻塞和等待线程" } }, { "终止线程": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "线程属性": { "node_id": "java-785476f0c71e437cadeb502a74dd86ed", "keywords": [], "children": [ { "中断线程": { "keywords": [], "children": [], "node_id": "java-689a856b2abb4cbb93fe6252c2eab816", "title": "中断线程" } }, { "守护线程": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "守护线程" } }, { "线程名": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "线程名" } }, { "未捕获异常的处理器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "线程安全的集合": { "node_id": "java-aa0b95d8960b4d12a2c9d9e90894a793", "keywords": [], "children": [ { "阻塞队列": { "keywords": [], "children": [], "node_id": "java-cc7d9f6eee604e51ad6efead3710b3ab", "title": "阻塞队列" } }, { "映射条目的原子更新": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "映射条目的原子更新" } }, { "对并发散列映射的批操作": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "对并发散列映射的批操作" } }, { "并发集视图": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "写数组的拷贝": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "并行数组算法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "较早的线程安全集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "异步计算": { "node_id": "java-bb0e1dac4dcd4d179e105e10e0817c31", "keywords": [], "children": [ { "可完成Future": { "keywords": [], "children": [], "node_id": "java-1b20487d8b774539a09a9a43d1028d9d", "title": "可完成Future" } }, { "组合可完成Future": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "组合可完成Future" } }, { "用户界面回调中的长时间运行任务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "用户界面回调中的长时间运行任务" } } ] } }, { "基本的线程机制": { "node_id": "java-16ccc9e637e9400ab649da79bbe22e25", "keywords": [], "children": [ { "定义任务让步": { "keywords": [], "children": [], "node_id": "java-9a5d3d5d6ff943dbbe1f001d65ca7a50", "title": "定义任务让步" } }, { "使用Executor": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用Executor" } }, { "从任务产生返回值": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "从任务产生返回值" } }, { "休眠": { "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" } } ] } }, { "共享受限资源": { "node_id": "java-6e7432768c234cbaa669694251acac52", "keywords": [], "children": [ { "不正确地访问资源": { "keywords": [], "children": [], "node_id": "java-1ac871427e9748739a060ca17d8fbe20", "title": "不正确地访问资源" } }, { "解决共享资源竞争": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "解决共享资源竞争" } }, { "原子性与易变性": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "原子性与易变性" } }, { "原子类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "临界资源": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "在其他对象上同步": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "线程局部存储": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "终结任务": { "node_id": "java-b58000412ab6443f9d1f71f3bf277966", "keywords": [], "children": [ { "装饰性花园": { "keywords": [], "children": [], "node_id": "java-6448199d7be947909b5ad6250bc6ceb8", "title": "装饰性花园" } }, { "在阻塞时终结": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "在阻塞时终结" } }, { "中断": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "中断" } }, { "检查中断": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "线程之间的协作": { "node_id": "java-5e82993df31e4989ac4b128c08cf0823", "keywords": [], "children": [ { "wait()与notifyAll()": { "keywords": [], "children": [], "node_id": "java-5c28af969c6b4771825c907aac1480b0", "title": "wait()与notifyAll()" } }, { "notify()与notifyAll()": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "notify()与notifyAll()" } }, { "生产者与消费者": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "生产者与消费者" } }, { "任务间使用管道进行输入输出": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "死锁": { "node_id": "java-372114d043a04070ad690f2753b5083b", "keywords": [], "children": [] } }, { "性能调优": { "node_id": "java-0e0ab101570648dead835dc698d47c7f", "keywords": [], "children": [ { "比较各类互斥技术": { "keywords": [], "children": [], "node_id": "java-8f95f37458464024ac66735cc5a304fc", "title": "比较各类互斥技术" } }, { "免锁容器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "免锁容器" } }, { "乐观锁": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "乐观锁" } }, { "ReadWriteLock": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "活动对象": { "node_id": "java-c72cb5c7af514f55b17f95097ff8d0e8", "keywords": [], "children": [] } }, { "进阶读物": { "node_id": "java-ecfe181731634ff680628d9f34888c12", "keywords": [], "children": [] } } ] } }, { "Maven基础": { "node_id": "java-a569056217524d5a8b6ed88fd678b73d", "keywords": [], "children": [ { "Maven介绍": { "node_id": "java-1fbf8f4636ed479aa87548441295c562", "keywords": [], "children": [] } }, { "依赖管理": { "node_id": "java-76e9c3885d4145368c052419f60ecdb5", "keywords": [], "children": [] } }, { "构建流程": { "node_id": "java-43be29e168624aff939849f39630bca6", "keywords": [], "children": [] } }, { "使用插件": { "node_id": "java-e8a67f0c34b04da294b1a349169402a7", "keywords": [], "children": [] } }, { "模块管理": { "node_id": "java-7b68f372c5e1489fa451ea520fef7d12", "keywords": [], "children": [] } }, { "使用mvnw": { "node_id": "java-bc7e72cfd9794593a8043aea050cb8ec", "keywords": [], "children": [] } }, { "发布Artifact": { "node_id": "java-333c0931793049eabb069ae08e5c92d9", "keywords": [], "children": [] } } ] } }, { "RandomAccessFile": { "node_id": "java-3c0553280d2a4b60983a5ae18e7112a4", "keywords": [], "children": [] } }, { "对象序列化": { "node_id": "java-ec1081c263a84d41b692d4821d8254e6", "keywords": [], "children": [ { "寻找类": { "node_id": "java-21c738a097fb46a4a156d787dc4778b7", "keywords": [], "children": [] } }, { "序列化的控制": { "node_id": "java-01546694ece242b6869cb662498c6670", "keywords": [], "children": [] } }, { "使用“持久性”": { "node_id": "java-89c87044f09c446588eb96d76b766dcd", "keywords": [], "children": [] } } ] } }, { "使用JDBC操作数据库": { "node_id": "java-952e5473dc85415b8d737648a1d20351", "keywords": [], "children": [ { "JDBC概述": { "node_id": "java-150a9965d3e34a19943b4bd5ab2d31bb", "keywords": [], "children": [ { "JDBC-ODBC桥": { "keywords": [], "children": [], "node_id": "java-a045157a68894eacb0e79c72bea465c8", "title": "JDBC-ODBC桥" } }, { "JDBC技术": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "JDBC技术" } }, { "JDBC驱动程序的类型": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "JDBC驱动程序的类型" } } ] } }, { "数据库操作": { "node_id": "java-fd66a76b04b84d8da4454f6f9728aca0", "keywords": [], "children": [ { "数据库基础": { "keywords": [], "children": [], "node_id": "java-bd09b1ca4af648e2a5435f96d4704e4b", "title": "数据库基础" } }, { "数据查询": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "数据查询" } }, { "动态查询": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "动态查询" } }, { "添加、修改、删除记录": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "数据库基础知识": { "keywords": [], "children": [ { "什么是数据库": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "数据库的种类及功能": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "SQL语言": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "向数据库发送SQL语句": { "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" } } ] } } ] } }, { "NIO": { "node_id": "java-3f06cb54c165459b85d0c7f225e6acb7", "keywords": [], "children": [ { "NIO概述": { "node_id": "java-5daee2a48ed2413fa38467811ea5ee23", "keywords": [], "children": [] } }, { "Files工具类": { "node_id": "java-868e1323bfdf4c239a6552a45a30d48d", "keywords": [], "children": [] } }, { "Buffer(缓冲器)": { "node_id": "java-e622e94340ee4f00ae2aec33047cb19f", "keywords": [], "children": [] } }, { "Channel(通道)": { "node_id": "java-1cbb9d1ea7c74caeaf8d88c2aad75965", "keywords": [], "children": [] } }, { "Java新IO概述": { "node_id": "java-f824cb48cef64bbcad371bb304b26d10", "keywords": [], "children": [] } }, { "使用Buffer": { "node_id": "java-4bae5939bee44a31ba92906e490293b0", "keywords": [], "children": [] } }, { "使用Channel": { "node_id": "java-9e2f3a44543c457e84d3d8a2e8321b65", "keywords": [], "children": [] } }, { "字符集和Charset": { "node_id": "java-984b508fc9a54650aa9509eeb198f925", "keywords": [], "children": [] } }, { "文件锁": { "node_id": "java-338c2cfa55b346a0a0cd4dfc61c40ae6", "keywords": [], "children": [] } }, { "Path接口": { "node_id": "java-386113b4f6274eb591e1f01b39f0c8ce", "keywords": [], "children": [] } } ] } }, { "网络编程": { "node_id": "java-94b280240e7c4f67b1512eb20fd9beaa", "keywords": [], "children": [ { "网络编程基础": { "node_id": "java-59e7173695814c90858bc221e8688329", "keywords": [], "children": [ { "网络通信协议": { "keywords": [], "children": [], "node_id": "java-8573a8cf4f914940b790785687f38b34", "title": "网络通信协议" } }, { "IP地址和端口号": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "IP地址和端口号" } }, { "InetAddress": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "InetAddress" } }, { "UDP与TCP协议": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "UDP通信": { "node_id": "java-f031c1ea305e4617bb1d9f2c4d41f009", "keywords": [], "children": [ { "UDP通信简介": { "keywords": [], "children": [], "node_id": "java-9118d12d817b45e5a69ecdaca6283d01", "title": "UDP通信简介" } }, { "DatagramPacket": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "DatagramPacket" } }, { "DatagramSocket": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "DatagramSocket" } }, { "UDP网络程序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "UDP案例——聊天程序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "TCP通信": { "node_id": "java-d1499a6f75a04d038344ce776d1c658a", "keywords": [], "children": [ { "TCP通信简介": { "keywords": [], "children": [], "node_id": "java-8664d9e4dcc04e77a24cfd6445635315", "title": "TCP通信简介" } }, { "ServerSocket": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "ServerSocket" } }, { "Socket": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Socket" } }, { "简单的TCP网络程序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "多线程的TCP网络程序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "TCP案例——文件上传": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "网络编程的基础知识": { "node_id": "java-0a41df2154834670a9facf2ff7530d6b", "keywords": [], "children": [ { "网络基础知识": { "keywords": [], "children": [], "node_id": "java-1cf4ca055b604ea49c6b762596371c71", "title": "网络基础知识" } } ] } }, { "Java的基本网络支持": { "node_id": "java-1e8ef0cdeec443d8addaaa79b760c6b1", "keywords": [], "children": [ { "使用URLDecoder和URLEncoder": { "keywords": [], "children": [], "node_id": "java-f880ae75add64feaae9a85ea7c9367b2", "title": "使用URLDecoder和URLEncoder" } }, { "URL、URLConnection和URLPermission": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "URL、URLConnection和URLPermission" } } ] } }, { "基于TCP协议的网络编程": { "node_id": "java-a89aa3ff88c1429396c8c20e12c17801", "keywords": [], "children": [ { "TCP协议基础": { "keywords": [], "children": [], "node_id": "java-7e9947e48fc6409b93ba1e3b5002e247", "title": "TCP协议基础" } }, { "使用ServerSocket创建TCP服务器端": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用ServerSocket创建TCP服务器端" } }, { "使用Socket进行通信": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用Socket进行通信" } }, { "记录用户信息": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "半关闭的Socket": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用NIO实现非阻塞Socket通信": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用AIO实现非阻塞通信": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "基于UDP协议的网络编程": { "node_id": "java-e424fbf24fc84b339db1b836c54ce647", "keywords": [], "children": [ { "UDP协议基础": { "keywords": [], "children": [], "node_id": "java-f28b8ebe51b34e4db9b94cfa6b0cbac7", "title": "UDP协议基础" } }, { "使用DatagramSocket发送、接收数据": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用DatagramSocket发送、接收数据" } }, { "使用MulticastSocket实现多点广播": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用MulticastSocket实现多点广播" } } ] } }, { "使用代理服务器": { "node_id": "java-cb9fdf69e28f40aca9ef741b9c8bc925", "keywords": [], "children": [ { "直接使用Proxy创建连接": { "keywords": [], "children": [], "node_id": "java-367580927af845268b72979f1e1e16be", "title": "直接使用Proxy创建连接" } }, { "使用ProxySelector自动选择代理服务器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用ProxySelector自动选择代理服务器" } } ] } }, { "Java 11标准化的HTTP Client": { "node_id": "java-dd60957a0a7f4155a68aea7c6807d504", "keywords": [], "children": [ { "发送同步GET请求": { "keywords": [], "children": [], "node_id": "java-01931200f6684a0bba54c8fe79070301", "title": "发送同步GET请求" } }, { "发送带请求体的请求": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "发送带请求体的请求" } }, { "发送异步请求": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "发送异步请求" } }, { "WebSocket客户端支持": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "基于WebSocket的多人实时聊天": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "类型信息": { "node_id": "java-7b912e7b9d1547e9ba78b26cb78e254c", "keywords": [], "children": [ { "Class对象": { "node_id": "java-1133afe68c004a0ea2ad957f0acb061e", "keywords": [], "children": [ { "类字面常量": { "keywords": [], "children": [], "node_id": "java-b94faa1fac2c4ffe8f8fcbdc8fc89ee9", "title": "类字面常量" } }, { "泛化的Class引用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "泛化的Class引用" } }, { "新的转型语法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "新的转型语法" } } ] } }, { "类型转换前先做检查": { "node_id": "java-48593d705752415e95c42b09d36bc2a4", "keywords": [], "children": [ { "使用类字面常量": { "keywords": [], "children": [], "node_id": "java-76e90c4c1397452b9569be2a05553053", "title": "使用类字面常量" } }, { "动态instanceof": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "动态instanceof" } }, { "递归计数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "递归计数" } } ] } }, { "注册工厂": { "node_id": "java-c4cbf0c25cbf47c4892a5f6635be9826", "keywords": [], "children": [] } }, { "instanceof与Class的等价性": { "node_id": "java-feca89c3fb9e4bcaba3f1f95e8ad4753", "keywords": [], "children": [] } }, { "反射:运行时类信息": { "node_id": "java-42b26ca8a2384dcfb02fca6e159ace67", "keywords": [], "children": [ { "类方法抽取器": { "keywords": [], "children": [], "node_id": "java-aa383e03d51a4ea588ee1b04192ab556", "title": "类方法抽取器" } }, { "Class类与Java反射": { "keywords": [], "children": [ { "访问构造方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "访问构造方法" } }, { "访问成员变量": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "访问方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Class类与Java反射" } }, { "使用Annotation功能": { "keywords": [], "children": [ { "定义Annotation类型": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "访问Annotation信息": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "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" } } ] } }, { "动态代理": { "node_id": "java-f7be740717c442c4a489a8c8d675f38c", "keywords": [], "children": [] } }, { "空对象": { "node_id": "java-dec42155c7904f7e9d00a37b5013470d", "keywords": [], "children": [ { "模拟对象与桩": { "keywords": [], "children": [], "node_id": "java-0109d4ae23934645bc817fd2ac423854", "title": "模拟对象与桩" } } ] } } ] } }, { "容器深入研究": { "node_id": "java-ca51e8798bc84a47b13a58c8d734ac34", "keywords": [], "children": [ { "完整的容器分类法": { "node_id": "java-d29c64a86fbb49b88cc2eaa7b39375b4", "keywords": [], "children": [] } }, { "实用方法": { "node_id": "java-3805023f872947c4874b6e7bab06c1a7", "keywords": [], "children": [ { "List的排序和查询": { "keywords": [], "children": [], "node_id": "java-3bdeb8d490114bcd856b7da73e037dad", "title": "List的排序和查询" } }, { "设定Collection或Map为不可修改": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "设定Collection或Map为不可修改" } }, { "Collection或Map的同步控制": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Collection或Map的同步控制" } } ] } }, { "持有引用": { "node_id": "java-16f140529ddd4709a2bc538fd83d4324", "keywords": [], "children": [ { "WeakHashMap": { "keywords": [], "children": [], "node_id": "java-77540b2eae5f4d25834edcb16f1f22fc", "title": "WeakHashMap" } } ] } }, { "填充容器": { "node_id": "java-4d469275970748d68a5e3e51ba8728f4", "keywords": [], "children": [ { "一种Generator解决方案": { "keywords": [], "children": [], "node_id": "java-873bf34ed07045bba19f3535e4d866f6", "title": "一种Generator解决方案" } }, { "Map生成器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Map生成器" } }, { "使用Abstract类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用Abstract类" } } ] } }, { "Collection的功能方法": { "node_id": "java-e4ee5c02d364431f901c2851e2bebdc0", "keywords": [], "children": [] } }, { "可选操作": { "node_id": "java-62b6b4f057f549d5b3a4498ef6c7a7e8", "keywords": [], "children": [ { "未获支持的操作": { "keywords": [], "children": [], "node_id": "java-2031010f8362415e9db1c070711e5fd1", "title": "未获支持的操作" } } ] } }, { "List的功能方法": { "node_id": "java-6a6a4fabc4e34b5d985e4787fda4793f", "keywords": [], "children": [] } }, { "队列": { "node_id": "java-3b1d3953fd724d1f87c1e95918bc2d0c", "keywords": [], "children": [ { "优先级队列": { "keywords": [], "children": [], "node_id": "java-ed2bb9f0663541629eccc6d1f8fa78fb", "title": "优先级队列" } }, { "双向队列": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "双向队列" } } ] } }, { "理解Map": { "node_id": "java-154f1448c9f04d7d950de1273760288f", "keywords": [], "children": [ { "性能": { "keywords": [], "children": [], "node_id": "java-8e3af4dbb58c4465921095cd49a8ebce", "title": "性能" } }, { "SortedMap": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "SortedMap" } }, { "LinkedHashMap": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "LinkedHashMap" } } ] } }, { "散列与散列码": { "node_id": "java-10969a6ccab543558603a3c5d149cb1c", "keywords": [], "children": [ { "理解hashCode()": { "keywords": [], "children": [], "node_id": "java-11f8416ef79f4128998d905e5c178b13", "title": "理解hashCode()" } }, { "为速度而散列": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "为速度而散列" } }, { "覆盖hashCode()": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "覆盖hashCode()" } } ] } }, { "选择接口的不同实现": { "node_id": "java-553c2f460603478f9d4047e1b4d78af1", "keywords": [], "children": [ { "性能测试框架": { "keywords": [], "children": [], "node_id": "java-6170302493d94af4a4a2377fb349b30a", "title": "性能测试框架" } }, { "对List的选择": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "对List的选择" } }, { "微基准测试的危险": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "微基准测试的危险" } }, { "对Set的选择": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "对Map的选择": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "新类库中的构件": { "node_id": "java-5a49d27c4caa4300936968edb642186c", "keywords": [], "children": [ { "CountDownLatch": { "node_id": "java-a5ad5ac879014d99b56546a687064de9", "keywords": [], "children": [] } }, { "CyclicBarrier": { "node_id": "java-626f8873229c4ebcbf9535893b3a2636", "keywords": [], "children": [] } }, { "DelayQueue": { "node_id": "java-d78ab239f1af4ea9a947bb073e25466f", "keywords": [], "children": [] } }, { "PriorityBlockingQueue": { "node_id": "java-ba4040d7af8d408aa6f26827ce977b93", "keywords": [], "children": [] } }, { "ScheduledExecutor": { "node_id": "java-7a2655c558a94868acfd5c47605c19df", "keywords": [], "children": [] } }, { "Semaphore": { "node_id": "java-c696f5c80c8f49eab7d45be97d02a9b4", "keywords": [], "children": [] } }, { "Exchange": { "node_id": "java-0b97e56a58b94d2da9dd53bb9b1baac6", "keywords": [], "children": [] } } ] } } ] } }, { "Java高阶": { "node_id": "java-f03087d9779b41a1acf435e3eb6e28f7", "keywords": [], "children": [ { "Java 8、9、10以及11的变化": { "node_id": "java-25d4ebb3d7be4cffac6dcd037236093d", "keywords": [], "children": [ { "Java怎么还在变": { "node_id": "java-7d49748c28c3409788af802e7f520956", "keywords": [], "children": [ { "Java在编程语言生态系统中的位置": { "keywords": [], "children": [], "node_id": "java-f4cd9c20134748979423d9abedc9c867", "title": "Java在编程语言生态系统中的位置" } }, { "用行为参数化把代码传递给方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "用行为参数化把代码传递给方法" } }, { "并行与共享的可变数据": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "并行与共享的可变数据" } }, { "Java需要演变": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "Java中的函数": { "node_id": "java-05c92e1e24e846c4913d04fbd6325c2e", "keywords": [], "children": [ { "方法和Lambda作为一等值": { "keywords": [], "children": [ { "从Java程序中调用C函数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "从Java程序中调用C函数" } }, { "数值参数与返回值": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "数值参数与返回值" } }, { "字符串参数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "访问域": { "keywords": [], "children": [ { "访问静态域": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "编码签名": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "调用Java方法": { "keywords": [], "children": [ { "静态方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "构造器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "另一种方法调用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "访问数组元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用调用API": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "java-52208b387a6f49f3849728c431d1d2b1", "title": "方法和Lambda作为一等值" } }, { "传递代码:一个例子": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "从传递方法到Lambda": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "默认方法及Java模块": { "node_id": "java-38c6e6f21c72455db7e643d24d0f9828", "keywords": [], "children": [ { "不断演进的API": { "keywords": [], "children": [ { "初始版本的API": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "初始版本的API" } }, { "第二版API": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第二版API" } } ], "node_id": "java-e10b062feb77493f994a19aee0fba38a", "title": "不断演进的API" } }, { "概述默认方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "默认方法的使用模式": { "keywords": [], "children": [ { "行为的多继承": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "解决冲突的规则": { "keywords": [], "children": [ { "选择提供了最具体实现的默认方法的接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "冲突及如何显式地消除歧义": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "来自函数式编程的其他好思想": { "node_id": "java-0df3f7d9c17a49d98247619bea4706e8", "keywords": [], "children": [] } } ] } }, { "收集器接口": { "node_id": "java-ff25a7a669714604a7605822962d4c63", "keywords": [], "children": [] } }, { "用Optional取代null": { "node_id": "java-c3a2ef586dd7449788102b631419992f", "keywords": [], "children": [ { "如何为缺失的值建模": { "node_id": "java-b4b04051f4be46288baaf54f55298949", "keywords": [], "children": [ { "采用防御式检查减少NullPointerException": { "keywords": [], "children": [], "node_id": "java-710beac55f7c4ce58da66d9ebc319dd4", "title": "采用防御式检查减少NullPointerException" } }, { "其他语言中null的替代品": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "其他语言中null的替代品" } } ] } }, { "Optional类入门": { "node_id": "java-d329521188284298b68e7d7d56c66557", "keywords": [], "children": [] } }, { "应用Optional的几种模式": { "node_id": "java-c73d3483b19e4d64a3c5bf802bb0f2c6", "keywords": [], "children": [ { "创建Optional对象": { "keywords": [], "children": [], "node_id": "java-9843c864f2b848129407ac2d6ecfaacd", "title": "创建Optional对象" } }, { "使用map从Optional对象中提取和转换值": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用map从Optional对象中提取和转换值" } }, { "使用flatMap链接Optional对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用flatMap链接Optional对象" } }, { "操纵由Optional对象构成的Stream": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "默认行为及解引用Optional对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "两个Optional对象的组合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用filter剔除特定的值": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "Java模块系统": { "node_id": "java-81c079af472746fc838268974b43dc55", "keywords": [], "children": [ { "exports子句": { "node_id": "java-b705d45009d84a609f9d8dd33935db31", "keywords": [], "children": [] } }, { "多模块项目": { "node_id": "java-da75bc8b6b0d471184961e44a5e4025f", "keywords": [], "children": [] } }, { "编译及打包": { "node_id": "java-02891816ef1e4421abda7f2e2fa300ba", "keywords": [], "children": [] } }, { "自动模块": { "node_id": "java-7a6f0097d06c47f180e1d8ede54722e7", "keywords": [], "children": [] } }, { "模块声明及子句": { "node_id": "java-91dc218d58244a70bbc610043cf8a597", "keywords": [], "children": [] } }, { "requires子句": { "node_id": "java-6aca051fce684c6c838c281e1e35b0fc", "keywords": [], "children": [] } }, { "命名": { "node_id": "java-300060ee7a04460685a0f3a359555ad1", "keywords": [], "children": [] } }, { "requires": { "node_id": "java-ad66a2df96f248539164e359391e6e63", "keywords": [], "children": [] } }, { "exports": { "node_id": "java-46cbc0a256454505906afa98f3052cbb", "keywords": [], "children": [] } }, { "requires的传递": { "node_id": "java-bf2afd6975e6426884923be9ab6c5083", "keywords": [], "children": [] } }, { "exports to": { "node_id": "java-c96aa563cbc84d5eaad4dbe8f025eaf4", "keywords": [], "children": [] } }, { "open和opens": { "node_id": "java-9b28ed31512b49e7ad8fb99a3345a678", "keywords": [], "children": [] } }, { "uses和provides": { "node_id": "java-fb13f5492e4e4eed9d83aca71bd9a9c4", "keywords": [], "children": [] } } ] } }, { "servlet": { "node_id": "java-d6b6b41615d44d3eac35276c5e9d5956", "keywords": [], "children": [ { "背景": { "node_id": "java-57b111f13f0c4bf8945ed80a53dec67d", "keywords": [], "children": [] } }, { "处理HTTP请求和响应": { "node_id": "java-9d66bec8e5c748e58cce215f91ff329a", "keywords": [], "children": [ { "处理HTTP GET请求": { "keywords": [], "children": [], "node_id": "java-ec58b97c02e14425a7680a12a9ac240b", "title": "处理HTTP GET请求" } }, { "处理HTTP POST请求": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "处理HTTP POST请求" } } ] } }, { "使用cookie": { "node_id": "java-13a9bddaa0e34a1bb4b5fdad77a38f55", "keywords": [], "children": [] } }, { "会话跟踪": { "node_id": "java-cfccde6970c84de2a4ad0a94f06b50a9", "keywords": [], "children": [] } }, { "servelet的生命周期": { "node_id": "java-4ce9d845f79d4c80b586cef342a77456", "keywords": [], "children": [] } }, { "servlet开发选项": { "node_id": "java-829440781d824fc4a7b2752d23a7e428", "keywords": [], "children": [] } }, { "使用Tomcat": { "node_id": "java-5bc983be3eb84a65b213839e2cba1e4d", "keywords": [], "children": [] } }, { "一个简单的servlet": { "node_id": "java-05f577b2d66d42d8a9c9034703ae7ec0", "keywords": [], "children": [ { "创建和编译servlet源代码": { "keywords": [], "children": [], "node_id": "java-992278332e0a4b04a6016b4a9b9f3036", "title": "创建和编译servlet源代码" } }, { "启动Tomcat": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "启动Tomcat" } }, { "启动Web浏览器并请求servlet": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "启动Web浏览器并请求servlet" } } ] } }, { "Servlet API": { "node_id": "java-e0749c1fc7114c7c83fe30a6cd19b73a", "keywords": [], "children": [] } }, { "javax.servlet包": { "node_id": "java-3460d1de87ae44af893531872dc49e4c", "keywords": [], "children": [ { "Servlet接口": { "keywords": [], "children": [], "node_id": "java-6c0006656ecb4f26b635f14f0e80bf75", "title": "Servlet接口" } }, { "ServletConfig接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "ServletConfig接口" } }, { "ServletContext接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "ServletContext接口" } }, { "ServletRequest接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "ServletResponse接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "GenericServlet类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "ServletInputStream类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "ServletOutputStream类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "servlet异常类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "读取servlet参数": { "node_id": "java-0b185754b3334e05893f70db71a7918d", "keywords": [], "children": [] } }, { "javax.servlet.http包": { "node_id": "java-5e7e698cfd634c4187e554449b025900", "keywords": [], "children": [ { "HttpServletRequest接口": { "keywords": [], "children": [], "node_id": "java-06e15dacbaf849dd81db512f4bb35b4e", "title": "HttpServletRequest接口" } }, { "HttpServletResponse接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "HttpServletResponse接口" } }, { "HttpSession接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "HttpSession接口" } }, { "Cookie类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "HttpServlet类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "Java异步任务": { "node_id": "java-267da81d131440de883b62376f5fc38b", "keywords": [], "children": [ { "为支持并发而不断演进的Java": { "node_id": "java-889e8043d080406fa4f505990615a20c", "keywords": [], "children": [ { "其他的线程抽象:非嵌套方法调用": { "keywords": [], "children": [], "node_id": "java-b0623f5f2fd04678aa56901d2eee493b", "title": "其他的线程抽象:非嵌套方法调用" } }, { "你希望线程为你带来什么": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "你希望线程为你带来什么" } } ] } }, { "同步及异步API": { "node_id": "java-ea102b3f32754119b4d16bcce54743b2", "keywords": [], "children": [ { "Future风格的API": { "keywords": [], "children": [], "node_id": "java-2311732fd9034ba68ae16842da51192e", "title": "Future风格的API" } }, { "反应式风格的API": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "反应式风格的API" } }, { "有害的睡眠及其他阻塞式操作": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "有害的睡眠及其他阻塞式操作" } }, { "如何使用异步API进行异常处理": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "“线框–管道”模型": { "node_id": "java-16a45f5c4e8242519004fe429dd335c9", "keywords": [], "children": [] } }, { "为并发而生的CompletableFuture和结合器": { "node_id": "java-90f4b7c696464886af9c8de8cbd95338", "keywords": [], "children": [] } }, { "“发布–订阅”以及反应式编程": { "node_id": "java-af9fa0cd03d643fdb6eecd75272140cf", "keywords": [], "children": [ { "背压": { "keywords": [], "children": [], "node_id": "java-bb8cf6772cb340c1adb74e9b231357a8", "title": "背压" } }, { "一种简单的真实背压": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "一种简单的真实背压" } } ] } }, { "反应式系统和反应式编程": { "node_id": "java-d720f1f3560343559bcc30eca566d317", "keywords": [], "children": [] } } ] } }, { "CompletableFuture:组合式异步编程": { "node_id": "java-6ce6d4e5e7ba41a9ba7b8c6a93f174b9", "keywords": [], "children": [ { "实现异步API": { "node_id": "java-4d530336323e47c2a9b4473063c89e67", "keywords": [], "children": [ { "将同步方法转换为异步方法": { "keywords": [], "children": [], "node_id": "java-1bd8d8d138eb45739c40bc5c534bd0a5", "title": "将同步方法转换为异步方法" } }, { "错误处理": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "错误处理" } } ] } }, { "让你的代码免受阻塞之苦": { "node_id": "java-eda0cce01a764ea1af3de7c9a9fcabf1", "keywords": [], "children": [ { "使用并行流对请求进行并行操作": { "keywords": [], "children": [], "node_id": "java-3aa25f53bb134905b6ecf0206a3a9305", "title": "使用并行流对请求进行并行操作" } }, { "使用CompletableFuture发起异步请求": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用CompletableFuture发起异步请求" } }, { "寻找更好的方案": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "寻找更好的方案" } }, { "使用定制的执行器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "对多个异步任务进行流水线操作": { "node_id": "java-c59f3c1a87dc471db307703cc818c11c", "keywords": [], "children": [ { "实现折扣服务": { "keywords": [], "children": [], "node_id": "java-36803626c8094af197a30359644590fb", "title": "实现折扣服务" } }, { "使用Discount服务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用Discount服务" } }, { "构造同步和异步操作": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "构造同步和异步操作" } }, { "将两个CompletableFuture对象整合起来,无论它们是否存在依赖": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "对Future和Completable-Future的回顾": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "高效地使用超时机制": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "响应CompletableFuture的completion事件": { "node_id": "java-ca42f0965c5e4a8898e44cfbe9b43180", "keywords": [], "children": [ { "对最佳价格查询器应用的优化": { "keywords": [], "children": [], "node_id": "java-4907ef223e2a4683b14a32e1edaae11f", "title": "对最佳价格查询器应用的优化" } } ] } } ] } }, { "反应式编程": { "node_id": "java-0969aecf77a7416ba0fed596b2569a23", "keywords": [], "children": [ { "反应式宣言": { "node_id": "java-4c450036165e492c87e35ff7fb65b286", "keywords": [], "children": [ { "应用层的反应式编程": { "keywords": [], "children": [], "node_id": "java-f329984b23344a9c986045dd92ef2dec", "title": "应用层的反应式编程" } }, { "反应式系统": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "反应式系统" } } ] } }, { "反应式流以及Flow API": { "node_id": "java-96551e0eb6b044ff8f7fe9b5ff27fd73", "keywords": [], "children": [ { "Flow类": { "keywords": [], "children": [], "node_id": "java-35293e7729734213bcd67b97853eb50b", "title": "Flow类" } }, { "创建你的第一个反应式应用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "创建你的第一个反应式应用" } }, { "使用Processor转换数据": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用Processor转换数据" } } ] } }, { "使用反应式库RxJava": { "node_id": "java-bf773ed23aad4739866b582a3679e381", "keywords": [], "children": [ { "转换及整合多个Observable": { "keywords": [], "children": [], "node_id": "java-5a62f6f76fc04129aa628b3bd0f22609", "title": "转换及整合多个Observable" } } ] } }, { "Java反射技术": { "node_id": "java-313674f323ec43919376c21a7e1bc88b", "keywords": [], "children": [ { "通过反射构建对象": { "keywords": [], "children": [], "node_id": "java-ac54833922254dceaccce5a2ffb0bf08", "title": "通过反射构建对象" } }, { "反射方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "反射方法" } } ] } } ] } }, { "Spring": { "node_id": "java-b7646a9c26bb43c4aebfbf835cc2f701", "keywords": [], "children": [ { "Spring IoC": { "node_id": "java-9d799f3d92fe461a8bb6fd8aded28ac5", "keywords": [], "children": [ { "Spring IoC概述": { "keywords": [], "children": [ { "主动创建对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "主动创建对象" } }, { "被动创建对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "被动创建对象" } }, { "Spring IoC阐述": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "java-82114296d9b84100bafaf92d335a2e58", "title": "Spring IoC概述" } }, { "Spring IoC容器": { "keywords": [], "children": [ { "Spring IoC容器的设计": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Spring IoC容器的初始化和依赖注入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Spring Bean的生命周期": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "装配Spring Bean": { "node_id": "java-3c8077571f18440abb0daa20b89762f8", "keywords": [], "children": [ { "依赖注入的3种方式": { "keywords": [], "children": [ { "构造器注入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "构造器注入" } }, { "使用setter注入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用setter注入" } }, { "接口注入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "java-2ec69188b9334cfa8639f45021536d06", "title": "依赖注入的3种方式" } }, { "装配Bean概述": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "通过XML配置装配Bean": { "keywords": [], "children": [ { "装配简易值": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "装配集合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "命名空间装配": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "通过注解装配Bean": { "keywords": [], "children": [ { "使用@Component装配Bean": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "自动装配——@Autowired": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "自动装配的歧义性(@Primary和@Qualifier)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "装载带有参数的构造方法类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用@Bean装配Bean": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "注解自定义Bean的初始化和销毁方法": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "装配的混合使用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用Profile": { "keywords": [], "children": [ { "使用注解@Profile配置": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用XML定义Profile": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "启动Profile": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "点睛": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "演示": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "加载属性(properties)文件": { "keywords": [], "children": [ { "使用注解方式加载属性文件": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用XML方式加载属性文件": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "条件化装配Bean": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Bean的作用域": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用Spring表达式(Spring EL)": { "keywords": [], "children": [ { "Spring EL相关的类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Spring EL运算": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "面向切面编程": { "node_id": "java-5e0f73f88d4448169d440cfe7d62a206", "keywords": [], "children": [ { "一个简单的约定游戏": { "keywords": [], "children": [ { "约定规则": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "约定规则" } }, { "读者的代码": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "读者的代码" } }, { "笔者的代码": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "java-0bc93af8b86343528c2fc1046b4f6c26", "title": "一个简单的约定游戏" } }, { "Spring AOP的基本概念": { "keywords": [], "children": [ { "AOP的概念和使用原因": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "面向切面编程的术语": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Spring对AOP的支持": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用@AspectJ注解开发Spring AOP": { "keywords": [], "children": [ { "选择切点": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "创建切面": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "连接点": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "测试AOP": { "keywords": [], "children": [ { "装配AOP": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用注解装配AOP": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "AOP避坑指南": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "环绕通知": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "织入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "给通知传递参数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "引入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用XML配置开发Spring AOP": { "keywords": [], "children": [ { "前置通知、后置通知、返回通知和异常通知": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "环绕通知": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "给通知传递参数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "引入": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "经典Spring AOP应用程序": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "多个切面": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "Spring数据库编程": { "node_id": "java-e779ffbdf65e416583af01f10fdace0d", "keywords": [], "children": [ { "传统的JDBC代码的弊端": { "keywords": [], "children": [], "node_id": "java-c16acc9c6c024abfbb18c1f88896f8c7", "title": "传统的JDBC代码的弊端" } }, { "配置数据库资源": { "keywords": [], "children": [ { "使用简单数据库配置": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用简单数据库配置" } }, { "使用第三方数据库连接池": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用JNDI数据库连接池": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "配置数据库资源" } }, { "JDBC代码失控的解决方案——jdbcTemplate": { "keywords": [], "children": [ { "jdbcTemplate的增、删、查、改": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "执行多条SQL": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "jdbcTemplate的源码分析": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "Spring的缺点": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "深入Spring数据库事务管理": { "node_id": "java-95598f8cc5da42db99fae07c82b014c3", "keywords": [], "children": [ { "Spring数据库事务管理器的设计": { "keywords": [], "children": [ { "配置事务管理器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "配置事务管理器" } }, { "用Java配置方式实现Spring数据库事务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "用Java配置方式实现Spring数据库事务" } } ], "node_id": "java-771650ac7eaa45efa910a7432236f442", "title": "Spring数据库事务管理器的设计" } }, { "编程式事务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "声明式事务": { "keywords": [], "children": [ { "Transactional的配置项": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用XML进行配置事务管理器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "事务定义器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "声明式事务的约定流程": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "数据库的相关知识": { "keywords": [], "children": [ { "数据库事务ACID特性": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "丢失更新": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "隔离级别": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "选择隔离级别和传播行为": { "keywords": [], "children": [ { "选择隔离级别": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "传播行为": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "在Spring+MyBatis组合中使用事务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "典型错误用法的剖析": { "keywords": [], "children": [ { "错误使用Service": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "过长时间占用事务": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "错误捕捉异常": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "Spring配置": { "node_id": "java-ba8a319433c94ea383719849144f73e7", "keywords": [], "children": [ { "Java配置": { "keywords": [], "children": [], "node_id": "java-f690e4f4f78948cca22732c96b0fed50", "title": "Java配置" } } ] } } ] } }, { "Spring MVC": { "node_id": "java-6515147940654b64b7cbbe093328958b", "keywords": [], "children": [ { "Spring MVC初始化": { "node_id": "java-f747d3b79d0948e4a763fe30be86259f", "keywords": [], "children": [] } }, { "保存并获取属性参数": { "node_id": "java-975b60900f62496f836db22835f5b231", "keywords": [], "children": [ { "注解@RequestAttribute": { "keywords": [], "children": [], "node_id": "java-7f3f031ab2c142908c8f6a572ba0dbac", "title": "注解@RequestAttribute" } }, { "注解@SessionAttribute和注解@SessionAttributes": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "注解@SessionAttribute和注解@SessionAttributes" } }, { "注解@CookieValue和注解@RequestHeader": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "注解@CookieValue和注解@RequestHeader" } } ] } }, { "验证表单": { "node_id": "java-e29b351351d84c2c836ab45a9dbe5773", "keywords": [], "children": [ { "使用JSR 303注解验证输入内容": { "keywords": [], "children": [], "node_id": "java-2aa4ceb984cf4b88a434802225d3e8f1", "title": "使用JSR 303注解验证输入内容" } }, { "使用验证器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "使用验证器" } } ] } }, { "数据模型": { "node_id": "java-ff23ccf79711429c9c87165d231ace4f", "keywords": [], "children": [] } }, { "视图和视图解析器": { "node_id": "java-67fd88d9c9404156922d2e1df978f935", "keywords": [], "children": [ { "视图": { "keywords": [], "children": [], "node_id": "java-f08ada909e244367b23c4a49dc0d4cfe", "title": "视图" } }, { "视图解析器": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "视图解析器" } } ] } }, { "上传文件": { "node_id": "java-8b3f9d1b3c274e61978d0919d472f737", "keywords": [], "children": [] } }, { "Spring MVC的数据转换和格式化": { "node_id": "java-1d0c3eccb9654104840d5997324ae3ea", "keywords": [], "children": [ { "HttpMessageConverter和JSON消息转换器": { "keywords": [], "children": [], "node_id": "java-dbad99e5ad8e49bcbbd72e1f589be3b9", "title": "HttpMessageConverter和JSON消息转换器" } }, { "一对一转换器(Converter)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "一对一转换器(Converter)" } }, { "数组和集合转换器GenericConverter": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "数组和集合转换器GenericConverter" } }, { "使用格式化器(Formatter)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "为控制器添加通知": { "node_id": "java-bbedbe9adddf4f17b15378df9dbd9203", "keywords": [], "children": [] } }, { "处理异常": { "node_id": "java-c672901bb15146ef95bb49cc07dc3160", "keywords": [], "children": [] } }, { "国际化": { "node_id": "java-ca8f2a981f924ab2a881d306c8cab6fc", "keywords": [], "children": [ { "MessageSource接口": { "keywords": [], "children": [], "node_id": "java-902fba4adec244e1886bafb55202304e", "title": "MessageSource接口" } }, { "CookieLocaleResolver和SessionLocaleResolver": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "CookieLocaleResolver和SessionLocaleResolver" } }, { "国际化拦截器(LocaleChangeInterceptor)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "国际化拦截器(LocaleChangeInterceptor)" } }, { "开发国际化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "Spring Aware": { "node_id": "java-d2679700cd3140819571032e023437ad", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [], "node_id": "java-4c3d595d39714a9898b89f5274c15d72", "title": "示例" } } ] } }, { "配置@RequestMapping": { "node_id": "java-b4daec2a8b154abd8a14ef747205783d", "keywords": [], "children": [] } }, { "多线程": { "node_id": "java-8e636a2e732b4ae092f5e16404b3f19f", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [], "node_id": "java-0b11fed0595a4672a06e00bf1e9a6059", "title": "示例" } } ] } }, { "计划任务": { "node_id": "java-1cb34893fbb9465389edef8bd0c62aae", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [], "node_id": "java-8e087c9f320e457da7d448d5a798e688", "title": "示例" } } ] } }, { "条件注解@Conditional": { "node_id": "java-4c06d7d08fc3442a9a4c8e55461ef8d5", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [], "node_id": "java-ba777217b539466ba820df5c7d107f99", "title": "示例" } } ] } }, { "组合注解与元注解": { "node_id": "java-aa42acb3545f42369f8f75da1d908c42", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [], "node_id": "java-2071d740fc4e403dbf49f9a0447d1dc3", "title": "示例" } } ] } }, { "@Enable*注解的工作原理": { "node_id": "java-db180cf37d1b470aaee25fb5c1ee4967", "keywords": [], "children": [ { "第一类:直接导入配置类": { "keywords": [], "children": [], "node_id": "java-062e6156671e44ddad0b7a2e8f0280b6", "title": "第一类:直接导入配置类" } }, { "第二类:依据条件选择配置类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第二类:依据条件选择配置类" } }, { "第三类:动态注册Bean": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第三类:动态注册Bean" } } ] } }, { "测试": { "node_id": "java-c15ac9b01d754d56b7ed4b8511836efb", "keywords": [], "children": [ { "示例": { "keywords": [], "children": [], "node_id": "java-cfc865d26ee44e3685f45a853c1803f7", "title": "示例" } } ] } }, { "控制器的开发": { "node_id": "java-47304ccf9c8e48f9bd8a9208307674c0", "keywords": [], "children": [] } }, { "视图渲染": { "node_id": "java-32b5897d479e4c808cfbaac7376502e0", "keywords": [], "children": [] } }, { "使用@RequestParam注解获取参数": { "node_id": "java-6ddaa708beb34971a34cb0c8c60c9540", "keywords": [], "children": [] } }, { "使用URL传递参数": { "node_id": "java-389dd5900f2c4cffb59e6114daac5c47", "keywords": [], "children": [] } }, { "传递JSON参数": { "node_id": "java-7f52453bf3914604af95b8acf9126cfa", "keywords": [], "children": [] } }, { "接收列表数据和表单序列化": { "node_id": "java-08556dcd648a4c12899ff7c84f6e0971", "keywords": [], "children": [] } }, { "重定向": { "node_id": "java-a542700299cf4f178df14f9e769f7e64", "keywords": [], "children": [] } } ] } }, { "Spring Boot": { "node_id": "java-54d006361f33475282de23e43fdc8de2", "keywords": [], "children": [] } }, { "通过行为参数化传递代码": { "node_id": "java-fb711fb0dfbb40db974476ea2d9faf9d", "keywords": [], "children": [ { "应对不断变化的需求": { "node_id": "java-0a39f4040da04b8591f9b36f3c446789", "keywords": [], "children": [ { "初试牛刀:筛选绿苹果": { "keywords": [], "children": [], "node_id": "java-e888465b1043473fbb919fd4958e3179", "title": "初试牛刀:筛选绿苹果" } }, { "再展身手:把颜色作为参数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "再展身手:把颜色作为参数" } }, { "第三次尝试:对你能想到的每个属性做筛选": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第三次尝试:对你能想到的每个属性做筛选" } } ] } }, { "行为参数化": { "node_id": "java-3a05a505cd514579a52321f0c945d577", "keywords": [], "children": [] } }, { "对付啰唆": { "node_id": "java-b121d453fc544e188b9ad50476c22f59", "keywords": [], "children": [ { "匿名类": { "keywords": [], "children": [], "node_id": "java-afe49e9037d946b2934d38fa45bfc80d", "title": "匿名类" } }, { "第五次尝试:使用匿名类": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第五次尝试:使用匿名类" } }, { "第六次尝试:使用Lambda表达式": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第六次尝试:使用Lambda表达式" } }, { "第七次尝试:将List类型抽象化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "真实的例子": { "node_id": "java-db33d9c7f2004cdbbc058254fe536ace", "keywords": [], "children": [ { "用Comparator来排序": { "keywords": [], "children": [], "node_id": "java-a218b2a634d34529b4b65991e217632c", "title": "用Comparator来排序" } }, { "用Runnable执行代码块": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "用Runnable执行代码块" } }, { "通过Callable返回结果": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "通过Callable返回结果" } }, { "GUI事件处理": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "Mybatis": { "node_id": "java-1e57ad0be67f4ac7974a52f5b5bc0925", "keywords": [], "children": [ { "MyBatis的解析和运行原理": { "node_id": "java-81a209e1e0e248bb83b45875408a2d28", "keywords": [], "children": [ { "构建SqlSessionFactory过程": { "keywords": [], "children": [ { "构建Configuration": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "构建Configuration" } }, { "构建映射器的内部组成": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "构建映射器的内部组成" } }, { "构建SqlSessionFactory": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "java-1daf32e864734f3dbdd59870b76c5b22", "title": "构建SqlSessionFactory过程" } }, { "SqlSession运行过程": { "keywords": [], "children": [ { "映射器(Mapper)的动态代理": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "SqlSession下的四大对象": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "插件接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "插件的初始化": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "插件的代理和反射设计": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "常用的工具类——MetaObject": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "映射器": { "keywords": [], "children": [ { "select元素——查询语句": { "keywords": [], "children": [ { "简单的select元素的应用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "自动映射和驼峰映射": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "传递多个参数": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用resultMap映射结果集": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "分页参数RowBounds": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "insert元素——插入语句": { "keywords": [], "children": [ { "简单的insert语句的应用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "主键回填": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "自定义主键": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "update元素和delete元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "sql元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "参数": { "keywords": [], "children": [ { "存储过程参数支持": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "特殊字符串的替换和处理(#和$)": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "resultMap元素": { "keywords": [], "children": [ { "resultMap元素的构成": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用map存储结果集": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "使用POJO存储结果集": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "级联": { "keywords": [], "children": [ { "MyBatis中的级联": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "建立POJO": { "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" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "缓存": { "keywords": [], "children": [ { "一级缓存和二级缓存": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "缓存配置项、自定义和引用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "存储过程": { "keywords": [], "children": [ { "IN和OUT参数存储过程": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "游标的使用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "动态SQL": { "keywords": [], "children": [ { "if元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "choose、when、otherwise元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "trim、where、set元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "foreach元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "用test的属性判断字符串": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } }, { "bind元素": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } } ] } }, { "Spark": { "node_id": "java-5ce19c44d3134c6594cda48a28730edd", "keywords": [], "children": [] } }, { "Flink": { "node_id": "java-6c6e3a98564443e09b0b419d474471f5", "keywords": [], "children": [] } }, { "Vert.x": { "node_id": "java-c10f0f7ff663469aae3aac593b28be98", "keywords": [], "children": [] } }, { "Quarkus": { "node_id": "java-b2558c64d18644088a9ac6186e99bb0b", "keywords": [], "children": [] } }, { "其他": { "node_id": "java-2276731a06a64d72bd22867525ccfb87", "keywords": [], "children": [ { "其他类别标签问题": { "node_id": "java-9852b531ca784949b8867e55fe6948f2", "keywords": [], "children": [] } }, { "应用类问题": { "node_id": "java-46930d850e9b4f31859d2dc9a61827af", "keywords": [], "children": [] } }, { "第三方包问题": { "node_id": "java-cae0698f09d8447d9cba7ab4db79fd14", "keywords": [], "children": [] } } ] } }, { "Lambda表达式": { "node_id": "java-a3b60740abe74bb8a6c16dec381d31c4", "keywords": [], "children": [ { "Lambda管中窥豹": { "node_id": "java-f19e427139fc4f1b881ce286e0b0e4f6", "keywords": [], "children": [] } }, { "测试使用Lambda的方法的行为": { "node_id": "java-e7f48c927ca6465dbdd3af4c4d795441", "keywords": [], "children": [] } }, { "将复杂的Lambda表达式分为不同的方法": { "node_id": "java-6d6fd33e57cd48f9b76243f7ba534f0d", "keywords": [], "children": [] } }, { "高阶函数的测试": { "node_id": "java-a7c7ebe0698741e0a6adea161a5139a6", "keywords": [], "children": [] } }, { "在哪里以及如何使用Lambda": { "node_id": "java-4ce628b8b7eb483faa286ee8d3000573", "keywords": [], "children": [ { "函数式接口": { "keywords": [], "children": [], "node_id": "java-f079f0add4d44e6bbc108f5189827c56", "title": "函数式接口" } }, { "函数描述符": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "函数描述符" } } ] } }, { "把Lambda付诸实践:环绕执行模式": { "node_id": "java-1cd095cedaae4df0abc6760f425f2157", "keywords": [], "children": [ { "第 1 步:记得行为参数化": { "keywords": [], "children": [], "node_id": "java-a2abd41288974a7bb1e4870e3a1dcd12", "title": "第 1 步:记得行为参数化" } }, { "第 2 步:使用函数式接口来传递行为": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第 2 步:使用函数式接口来传递行为" } }, { "第 3 步:执行一个行为": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "第 3 步:执行一个行为" } }, { "第 4 步:传递Lambda": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "使用函数式接口": { "node_id": "java-24d804bc97ba47d0ba5798a35eb7a4bd", "keywords": [], "children": [ { "Predicate": { "keywords": [], "children": [], "node_id": "java-a48e98bbc9ee412e8712c787018e0534", "title": "Predicate" } }, { "Consumer": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Consumer" } }, { "Function": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "Function" } } ] } }, { "类型检查、类型推断以及限制": { "node_id": "java-5a14598266004ad1a6dc7375348b1620", "keywords": [], "children": [ { "类型检查": { "keywords": [], "children": [], "node_id": "java-df8304bb13e94bec824365bfdec8b1c2", "title": "类型检查" } }, { "同样的Lambda,不同的函数式接口": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "同样的Lambda,不同的函数式接口" } }, { "类型推断": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "类型推断" } }, { "使用局部变量": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8" } } ] } }, { "方法引用": { "node_id": "java-a5a5542819914bc38d0454af6cf943a0", "keywords": [], "children": [ { "管中窥豹": { "keywords": [], "children": [], "node_id": "java-01b7b64326db41ffbbdca11fb1f91ada", "title": "管中窥豹" } }, { "构造函数引用": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "构造函数引用" } } ] } }, { "复合Lambda表达式的有用方法": { "node_id": "java-b4495bc9b8694eda8bf27c699d795f76", "keywords": [], "children": [ { "比较器复合": { "keywords": [], "children": [], "node_id": "java-76960eb8ee414dca8ea8082fe41df360", "title": "比较器复合" } }, { "谓词复合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "谓词复合" } }, { "函数复合": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "函数复合" } } ] } }, { "数学中的类似思想": { "node_id": "java-4e36ec97875946d0b23b1fe9aa162925", "keywords": [], "children": [ { "积分": { "keywords": [], "children": [], "node_id": "java-e7c688fbe3174abf890b1c47cfcfbf7b", "title": "积分" } }, { "与Java 8的Lambda联系起来": { "keywords": [], "children": [], "node_id": "569d5e11c4fc5de7844053d9a733c5e8", "title": "与Java 8的Lambda联系起来" } } ] } }, { "测试可见Lambda函数的行为": { "node_id": "java-e32903621c3145bdb7664eb20537cd16", "keywords": [], "children": [] } } ] } }, { "流简介": { "node_id": "java-9f8b0da343fd415c9b29380647b0f1f8", "keywords": [], "children": [] } }, { "流操作": { "node_id": "java-e892b3c6bfd44a3ea622f8c16de44279", "keywords": [], "children": [ { "中间操作": { "node_id": "java-d63b136fa11f4690a394643e5f9b8ea6", "keywords": [], "children": [] } }, { "终端操作": { "node_id": "java-c078722ba9bf41efbe97772bb97398b2", "keywords": [], "children": [] } } ] } }, { "路线图": { "node_id": "java-cc77eee8c1e3461f8af178e2bad8617b", "keywords": [], "children": [] } }, { "收集器简介": { "node_id": "java-0f1fc49b2e1c41368403ca2239810920", "keywords": [], "children": [ { "收集器用作高级归约": { "node_id": "java-a19efae63666441eb21c86dff3045c70", "keywords": [], "children": [] } }, { "预定义收集器": { "node_id": "java-0c52f1a755884deeb5e73305e0e7b744", "keywords": [], "children": [] } } ] } }, { "分组": { "node_id": "java-bbff17faa9a04aebbe14c62caccc2309", "keywords": [], "children": [ { "操作分组的元素": { "node_id": "java-4cc01469b31d42ac80854c4024c1b15a", "keywords": [], "children": [] } }, { "多级分组": { "node_id": "java-873636226f0e44ad9269f2a13fe2adb9", "keywords": [], "children": [] } }, { "按子组收集数据": { "node_id": "java-1223956aa7ae47a9a2e517dc23c3f371", "keywords": [], "children": [] } } ] } }, { "分区": { "node_id": "java-05498c81f6be42a2a44ddb4de0178420", "keywords": [], "children": [ { "分区的优势": { "node_id": "java-7dbbac2293584659a17e7dee9d666c56", "keywords": [], "children": [] } }, { "将数字按质数和非质数分区": { "node_id": "java-a6a177d99c7d46f48f50668aa124bcfe", "keywords": [], "children": [] } } ] } } ] } } ] } }