“dac93eb331feeff809e49cfe6beb8b5641d748a3”上不存在“cmake/git@gitcode.net:paddlepaddle/Paddle.git”
提交 b81dcf30 编写于 作者: M Mars Liu

fixed index if something been dropped

上级 5fa899dc
{
"keywords": [],
"children": []
"children": [],
"node_id": "java-461a08a44ae845018b7f0356ea928085"
}
\ No newline at end of file
{
"keywords": [],
"children": []
"children": [],
"node_id": "java-a02b334b2e364161badae34636a0284f"
}
\ No newline at end of file
{
"keywords": [],
"children": []
"children": [],
"node_id": "java-5d28bfbed25f4ae2b4d21fc1f2222e49"
}
\ No newline at end of file
{
"keywords": [],
"children": []
"children": [],
"node_id": "java-b06b5b2c7a6b44cc87744168729b31e6"
}
\ No newline at end of file
{
"keywords": [],
"children": []
"children": [],
"node_id": "java-e06f6fb888f940b4894e835d9afc9138"
}
\ No newline at end of file
{
"node_id": "java-e7f48c927ca6465dbdd3af4c4d795441",
"keywords": [],
"children": [],
"export": [],
"title": "测试使用Lambda的方法的行为"
}
\ No newline at end of file
{
"node_id": "java-6d6fd33e57cd48f9b76243f7ba534f0d",
"keywords": [],
"children": [],
"export": [],
"title": "将复杂的Lambda表达式分为不同的方法"
}
\ No newline at end of file
{
"node_id": "java-4ce628b8b7eb483faa286ee8d3000573",
"keywords": [],
"children": [
{
"函数式接口": {
"keywords": [],
"children": [],
"node_id": "java-f079f0add4d44e6bbc108f5189827c56",
"title": "函数式接口"
}
},
{
"函数描述符": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "函数描述符"
}
}
],
"export": [],
"title": "在哪里以及如何使用Lambda"
}
\ No newline at end of file
{
"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"
}
}
],
"export": [],
"title": "把Lambda付诸实践:环绕执行模式"
}
\ No newline at end of file
{
"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": "函数复合"
}
}
],
"export": [],
"title": "复合Lambda表达式的有用方法"
}
\ No newline at end of file
{
"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联系起来"
}
}
],
"export": [],
"title": "数学中的类似思想"
}
\ No newline at end of file
{
"node_id": "java-e32903621c3145bdb7664eb20537cd16",
"keywords": [],
"children": [],
"export": [],
"title": "测试可见Lambda函数的行为"
}
\ No newline at end of file
......@@ -1881,49 +1881,34 @@
}
},
{
"输入和输出": {
"node_id": "java-64b6e35bfb53488a9ed0abae657a4000",
"类和接口": {
"node_id": "java-e06f6fb888f940b4894e835d9afc9138",
"keywords": [],
"children": [
{
"InputStream类型": {
"node_id": "java-fc2dfe1a80f64143b4ad339378ba61da",
"keywords": [],
"children": []
}
},
{
"OutputStream类型": {
"node_id": "java-cc8c2e511db54a2ca2ee798f2cdbd03b",
"类和面向对象": {
"node_id": "java-461a08a44ae845018b7f0356ea928085",
"keywords": [],
"children": []
}
},
{
"读取输入": {
"node_id": "java-602feb8538b7419aa660c552c3a40884",
"抽象类": {
"node_id": "java-a02b334b2e364161badae34636a0284f",
"keywords": [],
"children": []
}
}
]
}
},
{
"添加属性和有用的接口": {
"node_id": "java-4e35103c4b4043ee8f0fd4abe2fb0776",
"keywords": [],
"children": [
{
"通过FilterInputStream从InputStream读取": {
"node_id": "java-823a70a13c2b4adfa75de69821f05e84",
"接口": {
"node_id": "java-5d28bfbed25f4ae2b4d21fc1f2222e49",
"keywords": [],
"children": []
}
},
{
"通过FilterOutPutStream向OutputStream写入": {
"node_id": "java-f6539c97ec184d74b6da9c00f1352830",
"匿名类": {
"node_id": "java-b06b5b2c7a6b44cc87744168729b31e6",
"keywords": [],
"children": []
}
......@@ -1932,27 +1917,27 @@
}
},
{
"Reader和Writer": {
"node_id": "java-32396d02d16640b49e4bfc6beee5b2f2",
"输入和输出": {
"node_id": "java-64b6e35bfb53488a9ed0abae657a4000",
"keywords": [],
"children": [
{
"数据的来源和去处": {
"node_id": "java-a9ae14246ec447fb969860752ddfc947",
"InputStream类型": {
"node_id": "java-fc2dfe1a80f64143b4ad339378ba61da",
"keywords": [],
"children": []
}
},
{
"更改流的行为": {
"node_id": "java-4cbbcc28c12644b38b2f3c67aa77b814",
"OutputStream类型": {
"node_id": "java-cc8c2e511db54a2ca2ee798f2cdbd03b",
"keywords": [],
"children": []
}
},
{
"未发生变化的类": {
"node_id": "java-5841af2d0b914d9b98c9c686a21721b7",
"读取输入": {
"node_id": "java-602feb8538b7419aa660c552c3a40884",
"keywords": [],
"children": []
}
......@@ -1961,55 +1946,27 @@
}
},
{
"IO的典型使用方式": {
"node_id": "java-d81cdb255d3e448895c5d0ae11cc4a31",
"Reader和Writer": {
"node_id": "java-32396d02d16640b49e4bfc6beee5b2f2",
"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",
"数据的来源和去处": {
"node_id": "java-a9ae14246ec447fb969860752ddfc947",
"keywords": [],
"children": []
}
},
{
"读取和写入随机访问文件": {
"node_id": "java-38f4f339ea78438b8fa150e9ae9a165b",
"更改流的行为": {
"node_id": "java-4cbbcc28c12644b38b2f3c67aa77b814",
"keywords": [],
"children": []
}
},
{
"管道流": {
"node_id": "java-5c0990c32ac741ff91599274d2ed98e3",
"未发生变化的类": {
"node_id": "java-5841af2d0b914d9b98c9c686a21721b7",
"keywords": [],
"children": []
}
......@@ -2032,99 +1989,12 @@
]
}
},
{
"标准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": []
}
},
{
"压缩": {
"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": []
}
}
]
}
}
]
}
......@@ -4113,944 +3983,298 @@
"keywords": [],
"children": [
{
"Java 8、9、10以及11的变化": {
"node_id": "java-25d4ebb3d7be4cffac6dcd037236093d",
"通过行为参数化传递代码": {
"node_id": "java-fb711fb0dfbb40db974476ea2d9faf9d",
"keywords": [],
"children": [
{
"Java怎么还在变": {
"node_id": "java-7d49748c28c3409788af802e7f520956",
"应对不断变化的需求": {
"node_id": "java-0a39f4040da04b8591f9b36f3c446789",
"keywords": [],
"children": [
{
"Java在编程语言生态系统中的位置": {
"初试牛刀:筛选绿苹果": {
"keywords": [],
"children": [],
"node_id": "java-f4cd9c20134748979423d9abedc9c867",
"title": "Java在编程语言生态系统中的位置"
"node_id": "java-e888465b1043473fbb919fd4958e3179",
"title": "初试牛刀:筛选绿苹果"
}
},
{
"用行为参数化把代码传递给方法": {
"再展身手:把颜色作为参数": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "用行为参数化把代码传递给方法"
"title": "再展身手:把颜色作为参数"
}
},
{
"并行与共享的可变数据": {
"第三次尝试:对你能想到的每个属性做筛选": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "并行与共享的可变数据"
}
},
{
"Java需要演变": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"title": "第三次尝试:对你能想到的每个属性做筛选"
}
}
]
}
},
{
"Java中的函数": {
"node_id": "java-05c92e1e24e846c4913d04fbd6325c2e",
"行为参数化": {
"node_id": "java-3a05a505cd514579a52321f0c945d577",
"keywords": [],
"children": [
"children": []
}
},
{
"方法和Lambda作为一等值": {
"对付啰唆": {
"node_id": "java-b121d453fc544e188b9ad50476c22f59",
"keywords": [],
"children": [
{
"从Java程序中调用C函数": {
"匿名类": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "从Java程序中调用C函数"
"node_id": "java-afe49e9037d946b2934d38fa45bfc80d",
"title": "匿名类"
}
},
{
"数值参数与返回值": {
"第五次尝试:使用匿名类": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "数值参数与返回值"
"title": "第五次尝试:使用匿名类"
}
},
{
"字符串参数": {
"第六次尝试:使用Lambda表达式": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "第六次尝试:使用Lambda表达式"
}
},
{
"访问域": {
"keywords": [],
"children": [
{
"访问静态域": {
"第七次尝试:将List类型抽象化": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
]
}
},
{
"编码签名": {
"真实的例子": {
"node_id": "java-db33d9c7f2004cdbbc058254fe536ace",
"keywords": [],
"children": [
{
"用Comparator来排序": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "java-a218b2a634d34529b4b65991e217632c",
"title": "用Comparator来排序"
}
},
{
"调用Java方法": {
"keywords": [],
"children": [
{
"静态方法": {
"用Runnable执行代码块": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "用Runnable执行代码块"
}
},
{
"构造器": {
"通过Callable返回结果": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "通过Callable返回结果"
}
},
{
"另一种方法调用": {
"GUI事件处理": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
]
}
}
]
}
},
{
"访问数组元素": {
"Lambda表达式": {
"node_id": "java-a3b60740abe74bb8a6c16dec381d31c4",
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"children": [
{
"Lambda概念": {
"node_id": "java-f19e427139fc4f1b881ce286e0b0e4f6",
"keywords": [],
"children": []
}
},
{
"使用调用API": {
"使用函数式接口": {
"node_id": "java-24d804bc97ba47d0ba5798a35eb7a4bd",
"keywords": [],
"children": [
{
"Predicate": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
],
"node_id": "java-52208b387a6f49f3849728c431d1d2b1",
"title": "方法和Lambda作为一等值"
"node_id": "java-a48e98bbc9ee412e8712c787018e0534",
"title": "Predicate"
}
},
{
"传递代码:一个例子": {
"Consumer": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "Consumer"
}
},
{
"从传递方法到Lambda": {
"Function": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "Function"
}
}
]
}
},
{
"默认方法及Java模块": {
"node_id": "java-38c6e6f21c72455db7e643d24d0f9828",
"keywords": [],
"children": [
{
"不断演进的API": {
"类型检查、类型推断以及限制": {
"node_id": "java-5a14598266004ad1a6dc7375348b1620",
"keywords": [],
"children": [
{
"初始版本的API": {
"类型检查": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "初始版本的API"
"node_id": "java-df8304bb13e94bec824365bfdec8b1c2",
"title": "类型检查"
}
},
{
"第二版API": {
"同样的Lambda,不同的函数式接口": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "第二版API"
}
}
],
"node_id": "java-e10b062feb77493f994a19aee0fba38a",
"title": "不断演进的API"
"title": "同样的Lambda,不同的函数式接口"
}
},
{
"概述默认方法": {
"类型推断": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "类型推断"
}
},
{
"默认方法的使用模式": {
"keywords": [],
"children": [
{
"行为的多继承": {
"使用局部变量": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
]
}
},
{
"解决冲突的规则": {
"方法引用": {
"node_id": "java-a5a5542819914bc38d0454af6cf943a0",
"keywords": [],
"children": [
{
"选择提供了最具体实现的默认方法的接口": {
"管中窥豹": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
},
{
"冲突及如何显式地消除歧义": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
]
}
},
{
"来自函数式编程的其他好思想": {
"node_id": "java-0df3f7d9c17a49d98247619bea4706e8",
"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": "再展身手:把颜色作为参数"
"node_id": "java-01b7b64326db41ffbbdca11fb1f91ada",
"title": "管中窥豹"
}
},
{
"第三次尝试:对你能想到的每个属性做筛选": {
"构造函数引用": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "第三次尝试:对你能想到的每个属性做筛选"
"title": "构造函数引用"
}
}
]
}
},
{
"行为参数化": {
"node_id": "java-3a05a505cd514579a52321f0c945d577",
"高阶函数": {
"node_id": "java-a7c7ebe0698741e0a6adea161a5139a6",
"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"
}
}
]
}
}
]
}
},
{
"Lambda表达式": {
"node_id": "java-a3b60740abe74bb8a6c16dec381d31c4",
"keywords": [],
"children": [
{
"Lambda管中窥豹": {
"node_id": "java-f19e427139fc4f1b881ce286e0b0e4f6",
"流": {
"node_id": "java-9f8b0da343fd415c9b29380647b0f1f8",
"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",
"收集器": {
"node_id": "java-0f1fc49b2e1c41368403ca2239810920",
"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": []
}
},
{
"测试使用Lambda的方法的行为": {
"node_id": "java-e7f48c927ca6465dbdd3af4c4d795441",
"keywords": [],
"children": []
}
},
{
"将复杂的Lambda表达式分为不同的方法": {
"node_id": "java-6d6fd33e57cd48f9b76243f7ba534f0d",
"keywords": [],
"children": []
}
},
{
"高阶函数的测试": {
"node_id": "java-a7c7ebe0698741e0a6adea161a5139a6",
"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": []
}
}
]
}
},
{
"收集器接口": {
"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": []
}
},
{
"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",
"收集器用作高级归约": {
"node_id": "java-a19efae63666441eb21c86dff3045c70",
"keywords": [],
"children": []
}
},
{
"uses和provides": {
"node_id": "java-fb13f5492e4e4eed9d83aca71bd9a9c4",
"预定义收集器": {
"node_id": "java-0c52f1a755884deeb5e73305e0e7b744",
"keywords": [],
"children": []
}
}
]
}
},
{
"多模块项目": {
"node_id": "java-da75bc8b6b0d471184961e44a5e4025f",
"分组": {
"node_id": "java-bbff17faa9a04aebbe14c62caccc2309",
"keywords": [],
"children": []
}
},
"children": [
{
"编译及打包": {
"node_id": "java-02891816ef1e4421abda7f2e2fa300ba",
"操作分组的元素": {
"node_id": "java-4cc01469b31d42ac80854c4024c1b15a",
"keywords": [],
"children": []
}
},
{
"自动模块": {
"node_id": "java-7a6f0097d06c47f180e1d8ede54722e7",
"多级分组": {
"node_id": "java-873636226f0e44ad9269f2a13fe2adb9",
"keywords": [],
"children": []
}
},
{
"模块声明及子句": {
"node_id": "java-91dc218d58244a70bbc610043cf8a597",
"按子组收集数据": {
"node_id": "java-1223956aa7ae47a9a2e517dc23c3f371",
"keywords": [],
"children": []
}
......@@ -5059,238 +4283,225 @@
}
},
{
"servlet": {
"node_id": "java-d6b6b41615d44d3eac35276c5e9d5956",
"分区": {
"node_id": "java-05498c81f6be42a2a44ddb4de0178420",
"keywords": [],
"children": [
{
"背景": {
"node_id": "java-57b111f13f0c4bf8945ed80a53dec67d",
"分区的优势": {
"node_id": "java-7dbbac2293584659a17e7dee9d666c56",
"keywords": [],
"children": []
}
},
{
"servelet的生命周期": {
"node_id": "java-4ce9d845f79d4c80b586cef342a77456",
"将数字按质数和非质数分区": {
"node_id": "java-a6a177d99c7d46f48f50668aa124bcfe",
"keywords": [],
"children": []
}
},
{
"servlet开发选项": {
"node_id": "java-829440781d824fc4a7b2752d23a7e428",
"keywords": [],
"children": []
}
]
}
},
{
"使用Tomcat": {
"node_id": "java-5bc983be3eb84a65b213839e2cba1e4d",
"收集器接口": {
"node_id": "java-ff25a7a669714604a7605822962d4c63",
"keywords": [],
"children": []
}
},
{
"一个简单的servlet": {
"node_id": "java-05f577b2d66d42d8a9c9034703ae7ec0",
"用Optional取代null": {
"node_id": "java-c3a2ef586dd7449788102b631419992f",
"keywords": [],
"children": [
{
"创建和编译servlet源代码": {
"如何为缺失的值建模": {
"node_id": "java-b4b04051f4be46288baaf54f55298949",
"keywords": [],
"children": [],
"node_id": "java-992278332e0a4b04a6016b4a9b9f3036",
"title": "创建和编译servlet源代码"
}
},
"children": [
{
"启动Tomcat": {
"采用防御式检查减少NullPointerException": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "启动Tomcat"
"node_id": "java-710beac55f7c4ce58da66d9ebc319dd4",
"title": "采用防御式检查减少NullPointerException"
}
},
{
"启动Web浏览器并请求servlet": {
"其他语言中null的替代品": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "启动Web浏览器并请求servlet"
"title": "其他语言中null的替代品"
}
}
]
}
},
{
"Servlet API": {
"node_id": "java-e0749c1fc7114c7c83fe30a6cd19b73a",
"Optional类入门": {
"node_id": "java-d329521188284298b68e7d7d56c66557",
"keywords": [],
"children": []
}
},
{
"javax.servlet包": {
"node_id": "java-3460d1de87ae44af893531872dc49e4c",
"应用Optional的几种模式": {
"node_id": "java-c73d3483b19e4d64a3c5bf802bb0f2c6",
"keywords": [],
"children": [
{
"Servlet接口": {
"创建Optional对象": {
"keywords": [],
"children": [],
"node_id": "java-6c0006656ecb4f26b635f14f0e80bf75",
"title": "Servlet接口"
"node_id": "java-9843c864f2b848129407ac2d6ecfaacd",
"title": "创建Optional对象"
}
},
{
"ServletConfig接口": {
"使用map从Optional对象中提取和转换值": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "ServletConfig接口"
"title": "使用map从Optional对象中提取和转换值"
}
},
{
"ServletContext接口": {
"使用flatMap链接Optional对象": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "ServletContext接口"
"title": "使用flatMap链接Optional对象"
}
},
{
"ServletRequest接口": {
"操纵由Optional对象构成的Stream": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
},
{
"ServletResponse接口": {
"默认行为及解引用Optional对象": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
},
{
"GenericServlet类": {
"两个Optional对象的组合": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
},
{
"ServletInputStream类": {
"使用filter剔除特定的值": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
},
{
"ServletOutputStream类": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
},
{
"servlet异常类": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
]
}
}
]
}
},
{
"读取servlet参数": {
"node_id": "java-0b185754b3334e05893f70db71a7918d",
"Java模块系统": {
"node_id": "java-81c079af472746fc838268974b43dc55",
"keywords": [],
"children": [
{
"exports子句": {
"node_id": "java-b705d45009d84a609f9d8dd33935db31",
"keywords": [],
"children": []
}
},
{
"javax.servlet.http包": {
"node_id": "java-5e7e698cfd634c4187e554449b025900",
"requires子句": {
"node_id": "java-6aca051fce684c6c838c281e1e35b0fc",
"keywords": [],
"children": [
"children": []
}
},
{
"HttpServletRequest接口": {
"命名": {
"node_id": "java-300060ee7a04460685a0f3a359555ad1",
"keywords": [],
"children": [],
"node_id": "java-06e15dacbaf849dd81db512f4bb35b4e",
"title": "HttpServletRequest接口"
"children": []
}
},
{
"HttpServletResponse接口": {
"requires": {
"node_id": "java-ad66a2df96f248539164e359391e6e63",
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "HttpServletResponse接口"
"children": []
}
},
{
"HttpSession接口": {
"exports": {
"node_id": "java-46cbc0a256454505906afa98f3052cbb",
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "HttpSession接口"
"children": []
}
},
{
"Cookie类": {
"requires的传递": {
"node_id": "java-bf2afd6975e6426884923be9ab6c5083",
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
"children": []
}
},
{
"HttpServlet类": {
"exports to": {
"node_id": "java-c96aa563cbc84d5eaad4dbe8f025eaf4",
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8"
}
}
]
"children": []
}
},
{
"处理HTTP请求和响应": {
"node_id": "java-9d66bec8e5c748e58cce215f91ff329a",
"open和opens": {
"node_id": "java-9b28ed31512b49e7ad8fb99a3345a678",
"keywords": [],
"children": [
"children": []
}
},
{
"处理HTTP GET请求": {
"uses和provides": {
"node_id": "java-fb13f5492e4e4eed9d83aca71bd9a9c4",
"keywords": [],
"children": [],
"node_id": "java-ec58b97c02e14425a7680a12a9ac240b",
"title": "处理HTTP GET请求"
"children": []
}
},
{
"处理HTTP POST请求": {
"多模块项目": {
"node_id": "java-da75bc8b6b0d471184961e44a5e4025f",
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "处理HTTP POST请求"
}
"children": []
}
]
},
{
"编译及打包": {
"node_id": "java-02891816ef1e4421abda7f2e2fa300ba",
"keywords": [],
"children": []
}
},
{
"使用cookie": {
"node_id": "java-13a9bddaa0e34a1bb4b5fdad77a38f55",
"自动模块": {
"node_id": "java-7a6f0097d06c47f180e1d8ede54722e7",
"keywords": [],
"children": []
}
},
{
"会话跟踪": {
"node_id": "java-cfccde6970c84de2a4ad0a94f06b50a9",
"模块声明及子句": {
"node_id": "java-91dc218d58244a70bbc610043cf8a597",
"keywords": [],
"children": []
}
......@@ -5414,146 +4625,6 @@
]
}
},
{
"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",
......
......@@ -119,7 +119,8 @@ class TreeWalker:
level_path = os.path.join(self.root, level)
num, config = self.load_level_node(level_path)
levels.append((num, config))
levels.sort(key=lambda item: item[0])
levels = self.resort_children(self.root, levels)
root_node["children"] = [item[1] for item in levels]
return root_node
......@@ -145,7 +146,7 @@ class TreeWalker:
num, chapter = self.load_chapter_node(full_name)
chapters.append((num, chapter))
chapters.sort(key=lambda item: item[0])
chapters = self.resort_children(base, chapters)
level_node["children"] = [item[1] for item in chapters]
return level_node
......@@ -157,10 +158,21 @@ class TreeWalker:
num, section = self.load_section_node(full_name)
sections.append((num, section))
sections.sort(key=lambda item: item[0])
sections = self.resort_children(base, sections)
chapter_node["children"] = [item[1] for item in sections]
return chapter_node
def resort_children(self, base, children):
children.sort(key=lambda item: item[0])
for index, [number, element] in enumerate(children):
title = list(element.keys())[0]
origin = os.path.join(base, f"{number}.{title}")
posted = os.path.join(base, f"{index+1}.{title}")
if origin != posted:
self.logger.info(f"rename [{origin}] to [{posted}]")
os.rename(origin, posted)
return children
def ensure_chapters(self):
for subdir in os.listdir(self.root):
self.ensure_level_config(subdir)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册