提交 4738558b 编写于 作者: M Mars Liu

add keywords

上级 4f75dd86
{
"node_id": "java-9d6d81f6283d414ba54d97cb25373b7c",
"keywords": [],
"keywords": ["流", "stream", "input", "output"],
"children": [],
"export": ["Abstract.json"],
"title": "流概述"
......
{
"node_id": "java-3c0553280d2a4b60983a5ae18e7112a4",
"keywords": ["随机", "访问", "文件"],
"keywords": ["随机", "访问", "文件", "file"],
"children": [],
"export": ["RandomAccessFile.json"],
"title": "RandomAccessFile"
......
{
"node_id": "java-4395c520c7514a97a792922acd5937bb",
"keywords": [],
"keywords": ["input", "output", "stream", "输入", "输出"],
"children": [
{
"输入流": {
......
{
"node_id": "java-132615c6b56b4ea883622abf5b81128d",
"keywords": [],
"keywords": ["file", "input", "output", "文件", "输入", "输出", "reader", "writer"],
"children": [
{
"FileInputStream类与FileOutputStream类": {
......
{
"node_id": "java-ec1081c263a84d41b692d4821d8254e6",
"keywords": [],
"keywords": ["序列化", "serialize", "serializable"],
"children": [],
"export": ["ObjectSerializable.json"],
"title": "对象序列化"
......
{
"node_id": "java-822ae98d5b294e699b7ed1bc6ffb9425",
"keywords": [],
"keywords": ["zip", "unzip", "input", "output", "stream", "压缩", "解压", "流"],
"children": [
{
"压缩文件": {
......
{
"node_id": "java-fc2dfe1a80f64143b4ad339378ba61da",
"keywords": [],
"keywords": ["stream", "input", "输入", "流"],
"children": [],
"export": ["unzip.json"],
"title": "InputStream类型"
......
{
"node_id": "java-cc8c2e511db54a2ca2ee798f2cdbd03b",
"keywords": [],
"keywords": ["output", "stream", "输出", "流"],
"children": [],
"export": ["zip.json"],
"title": "OutputStream类型"
......
......@@ -2,6 +2,6 @@
"type": "code_options",
"author": "clong",
"source": "DriverType.md",
"exercise_id": "",
"exercise_id": "b061ceb22d07423da14a6ba9be44a70a",
"notebook_enable": true
}
\ No newline at end of file
{
"node_id": "java-150a9965d3e34a19943b4bd5ab2d31bb",
"keywords": [],
"keywords": ["jdbc", "驱动", "database", "driver"],
"children": [
{
"JDBC-ODBC桥": {
......@@ -27,6 +27,6 @@
}
}
],
"export": ["Abstract.json"],
"export": ["Abstract.json", "DriverType.json"],
"title": "JDBC概述"
}
\ No newline at end of file
{
"node_id": "java-fd66a76b04b84d8da4454f6f9728aca0",
"keywords": ["数据库", "操作", "添加", "修改", "删除", "查询"],
"keywords": ["数据库", "操作", "添加", "修改", "删除", "查询", "事务", "transaction"],
"children": [
{
"数据库基础": {
......
{
"node_id": "java-5daee2a48ed2413fa38467811ea5ee23",
"keywords": [],
"keywords": ["nio"],
"children": [],
"export": ["NIOAbstract.json"],
"title": "NIO概述"
......
{
"node_id": "java-e622e94340ee4f00ae2aec33047cb19f",
"keywords": [],
"keywords": ["buffer", "缓冲"],
"children": [],
"export": ["BufferType.json", "BufferRead.json"],
"title": "Buffer(缓冲器)"
......
{
"node_id": "java-1cbb9d1ea7c74caeaf8d88c2aad75965",
"keywords": [],
"keywords": ["channel", "通道"],
"children": [],
"export": ["Channel.json","ChannelType.json"],
"title": "Channel(通道)"
......
{
"node_id": "java-984b508fc9a54650aa9509eeb198f925",
"keywords": [],
"keywords": ["字符集", "charset"],
"children": [],
"export": ["Charset.json"],
"title": "字符集和Charset"
......
{
"node_id": "java-338c2cfa55b346a0a0cd4dfc61c40ae6",
"keywords": [],
"keywords": ["file", "文件", "lock", "锁"],
"children": [],
"export": ["FileLock.json"],
"title": "文件锁"
......
{
"node_id": "java-386113b4f6274eb591e1f01b39f0c8ce",
"keywords": ["Paths", "Path"],
"keywords": ["Paths", "Path", "路径"],
"children": [],
"export": ["Path.json"],
"title": "Path接口"
......
{
"node_id": "java-868e1323bfdf4c239a6552a45a30d48d",
"keywords": [],
"keywords": ["文件", "file"],
"children": [],
"export": ["Files.json"],
"title": "Files工具类"
......
{
"node_id": "java-f031c1ea305e4617bb1d9f2c4d41f009",
"keywords": [],
"keywords": ["network", "udp", "网络"],
"children": [
{
"UDP通信简介": {
......
{
"node_id": "java-d1499a6f75a04d038344ce776d1c658a",
"keywords": [],
"keywords": ["network", "tcp"],
"children": [
{
"TCP通信简介": {
......
{
"node_id": "java-0a41df2154834670a9facf2ff7530d6b",
"keywords": [],
"children": [
{
"网络基础知识": {
"keywords": [],
"children": [],
"node_id": "java-1cf4ca055b604ea49c6b762596371c71",
"title": "网络基础知识"
}
}
],
"export": [],
"title": "网络编程的基础知识"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "Support.md",
"exercise_id": "eac8c5c2b7b14122bdd66651e40169a5",
"notebook_enable": true
}
\ No newline at end of file
# Java基本网络支持
下列对于Java网络支持的相关说法错误的是:
## 答案
```
URI是统一资源标识符,可以用来定位资源
```
## 选项
### A
```
InetAddress类有两个子类:Inet4Address和Inet6Address
```
### B
```
URLDecoder和URLEncoder用于完成普通字符串和MIME字符串之间的相互转换
```
### C
```
URL是统一资源定位器
```
{
"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"
}
}
],
"export": ["Support.json"],
"title": "Java的基本网络支持"
}
\ No newline at end of file
{
"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"
}
}
],
"export": [],
"title": "基于TCP协议的网络编程"
}
\ No newline at end of file
{
"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实现多点广播"
}
}
],
"export": [],
"title": "基于UDP协议的网络编程"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "Proxy.md",
"exercise_id": "9ab4eaf561144775b08bf657416721af",
"notebook_enable": true
}
\ No newline at end of file
# Proxy
下列对http请求使用代理的方式正确的是:
## 答案
```
以上选择均正确
```
## 选项
### A
```java
// 在你发起Http请求之前设置代理属性
Properties prop = System.getProperties();
prop.setProperty("http.proxyHost", proxyHost);
prop.setProperty("http.proxyPort", proxyPort);
```
### B
```java
// 通过Proxy来配置代理信息
URL url = new URL("http://www.baidu.com");
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
URLConnection conn = url.openConnection(proxy);
```
### C
```java
// httpclient设置代理
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.connectTimeout(Duration.ofSeconds(10))
.proxy(ProxySelector.of(new InetSocketAddress(proxyHost, proxyHost)))
.build();
```
{
"node_id": "java-cb9fdf69e28f40aca9ef741b9c8bc925",
"keywords": [],
"children": [
{
"直接使用Proxy创建连接": {
"keywords": [],
"children": [],
"node_id": "java-367580927af845268b72979f1e1e16be",
"title": "直接使用Proxy创建连接"
}
},
{
"使用ProxySelector自动选择代理服务器": {
"keywords": [],
"children": [],
"node_id": "569d5e11c4fc5de7844053d9a733c5e8",
"title": "使用ProxySelector自动选择代理服务器"
}
}
],
"export": ["Proxy.json"],
"title": "使用代理服务器"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "HTTPClient.md",
"exercise_id": "c5456368050f4ad1bdce9e19548e5c1a",
"notebook_enable": true
}
\ No newline at end of file
# HTTPClient
下列语句皆为使用HTTPClient获取网页的流程之一,其中不正确的是:
## 答案
```java
HttpResponse.BodyHandler<String> bodyHandler = HttpResponse.BodyHandlers;
```
## 选项
### A
```java
String url = "https://www.baidu.com";
HttpClient client = HttpClient.newBuilder().build();
```
### B
```java
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "text/html")
.GET()
.build();
```
### C
```java
HttpResponse<String> response = client.send(request, bodyHandler);
if (response.statusCode() == 200) {
System.out.println(response.body());
}
```
{
"type": "code_options",
"author": "clong",
"source": "WebSocket.md",
"exercise_id": "dac563065d504db1bdca92dba611f4cb",
"notebook_enable": true
}
\ No newline at end of file
# WebSocket
`WebSocket`可以实现服务端对客户端的推送,避免客户端轮询,造成带宽资源浪费。以下关于`WebSocket`的说法错误的是:
## 答案
```
WebSockt与HTTP都是基于TCP的,因此url也是以HTTP开头
```
## 选项
### A
```
WebSocket基于TCP协议
```
### B
```
WebSocket是双向的,即全双工协议
```
### C
```
WebSocket是一种有状态的协议
```
{
"node_id": "java-dd60957a0a7f4155a68aea7c6807d504",
"keywords": ["websocket", "get", "post", "delete", "put", "请求"],
"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"
}
}
],
"export": ["HTTPClient.json", "WebSocket.json"],
"title": "Java 11标准化的HTTP Client"
}
\ No newline at end of file
{
"node_id": "java-1133afe68c004a0ea2ad957f0acb061e",
"keywords": [],
"keywords": ["class", "类", "面向对象"],
"children": [
{
"类字面常量": {
......
{
"node_id": "java-48593d705752415e95c42b09d36bc2a4",
"keywords": ["instanceof"],
"keywords": ["instanceof", "类型"],
"children": [
{
"使用类字面常量": {
......
{
"node_id": "java-c4cbf0c25cbf47c4892a5f6635be9826",
"keywords": [],
"children": [],
"export": [],
"title": "注册工厂"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "Instanceof.md",
"exercise_id": "d2b56cc9a32a4b9993ab41bad65892b2",
"notebook_enable": true
}
\ No newline at end of file
# Instanceof
已知Person是Man的父类,以下结果为True的是:
## aop
### before
```java
Man man = new Man();
Person person = new Person();
```
## 答案
```
man instanceof Person
```
## 选项
### A
```java
man.getClass.equals(Person.class)
```
### B
```java
Man.class.isInstance(person)
```
### C
```java
person.getClass() == Man.class
```
{
"node_id": "java-feca89c3fb9e4bcaba3f1f95e8ad4753",
"keywords": [],
"children": [],
"export": ["Instanceof.json"],
"title": "instanceof与Class的等价性"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "Reflect.md",
"exercise_id": "a37be7bf155943179abd1d1c3efb7064",
"notebook_enable": true
}
\ No newline at end of file
# Reflect
下列关于JAVA反射的说法正确的是:
## aop
### before
```java
```
## 答案
```
以上说法均正确
```
## 选项
### A
```
反射机制作用在程序运行状态
```
### B
```
能动态获取类的属性及方法并能进行调用
```
### C
```
反射首先要获取类的Class类对象
```
{
"type": "code_options",
"author": "clong",
"source": "ReflectTest.md",
"exercise_id": "23057a3a31b0428e8ed7c44b5328d48a",
"notebook_enable": true
}
\ No newline at end of file
# ReflectTest
以下程序是关于反射的一个例子,程序的控制台打印为:
```java
public class Reflect {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
Class clazz = Student.class;
Constructor con = clazz.getConstructor(String.class, Integer.class);
Student student1 = (Student) con.newInstance("小铭", 24);
Student student2 = new Student("小铭", 24);
System.out.println(student2 == student1);
System.out.println(student2.equals(student1));
}
}
```
## aop
### before
```java
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
class Student {
private String name;
private Integer age;
public Student() {}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
## 答案
```
false
false
```
## 选项
### A
```
false
true
```
### B
```
true
false
```
### C
```
true
true
```
{
"node_id": "java-42b26ca8a2384dcfb02fca6e159ace67",
"keywords": ["annotation"],
"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"
}
}
],
"export": ["Reflect.json", "ReflectTest.json"],
"title": "反射:运行时类信息"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "DynamicProxy.md",
"exercise_id": "3825ea2504a34a1fbd3f40090cb7a6ca",
"notebook_enable": true
}
\ No newline at end of file
# DynamicProxy
下列关于JAVA动态代理的说法正确的是:
## 答案
```
以上说法均正确
```
## 选项
### A
```
为对象提供一个代理,控制对对象的访问
```
### B
```
动态代理有两种实现方式:JDK动态代理实现和CGlib字节码技术实现
```
### C
```
JDK动态代理只能代理接口而不能代理类
```
{
"type": "code_options",
"author": "clong",
"source": "DynamicProxyTest.md",
"exercise_id": "675c2c4dcb41423095d3f6dcdae93aab",
"notebook_enable": true
}
\ No newline at end of file
# DynamicProxyTest
以下程序是关于动态代理的一个例子,1和2处填入正确的是:
```java
interface Person {
void speak(String text);
}
public class DynamicProxyTest {
public static void main(String[] args) {
InvocationHandler handler = new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) {
if (method.getName().equals("speak")) {
System.out.println("准备");
System.out.println(args[0]);
System.out.println("结束");
}
return null;
}
};
Person person = (Person) Proxy.newProxyInstance(
1,
2,
handler);
person.speak("你好,很高兴认识你。");
}
}
```
## 答案
```
Person.class.getClassLoader()
new Class[] { Person.class }
```
## 选项
### A
```
Person.getClassLoader()
Person.class
```
### B
```
Person.class.getClassLoader()
Person.getClass()
```
### C
```
Person.getClassLoader()
new Class[] { Person.class }
```
{
"node_id": "java-f7be740717c442c4a489a8c8d675f38c",
"keywords": [],
"children": [],
"export": ["DynamicProxy.json", "DynamicProxyTest.json"],
"title": "动态代理"
}
\ No newline at end of file
{
"type": "code_options",
"author": "clong",
"source": "None.md",
"exercise_id": "669d00b9f4c6408db09e5eeead918286",
"notebook_enable": true
}
\ No newline at end of file
# 空对象
下列关于空对象的说法错误的是:
## 答案
```
构造空对象是java内置的
```
## 选项
### A
```
空对象,没有赋值过,但是却在内存中存在
```
### B
```
空对象能避免报空指针异常
```
### C
```
有时候还是要判断对象是否为空对象
```
{
"node_id": "java-dec42155c7904f7e9d00a37b5013470d",
"keywords": [],
"children": [
{
"模拟对象与桩": {
"keywords": [],
"children": [],
"node_id": "java-0109d4ae23934645bc817fd2ac423854",
"title": "模拟对象与桩"
}
}
],
"export": ["None.json"],
"title": "空对象"
}
\ No newline at end of file
{
"node_id": "java-6a6a4fabc4e34b5d985e4787fda4793f",
"keywords": [],
"keywords": ["list", "数据结构"],
"children": [],
"export": ["List.json"],
"title": "List的功能方法"
......
{
"node_id": "java-d29c64a86fbb49b88cc2eaa7b39375b4",
"keywords": [],
"keywords": ["set", "数据结构"],
"children": [],
"export": ["Set.json"],
"title": "Set和存储顺序"
......
{
"node_id": "java-3b1d3953fd724d1f87c1e95918bc2d0c",
"keywords": ["队列", "queue"],
"keywords": ["队列", "queue", "数据结构"],
"children": [
{
"优先级队列": {
......
{
"node_id": "java-154f1448c9f04d7d950de1273760288f",
"keywords": [],
"keywords": ["map", "字典", "数据结构"],
"children": [
{
"性能": {
......
# 选择接口的不同实现
下列关于集合接口的不同实现的选择错误的是:
关于 Java 标准库的数据结构,下列选项错误的是
......
{
"node_id": "java-553c2f460603478f9d4047e1b4d78af1",
"keywords": [],
"keywords": ["数据结构"],
"children": [
{
"性能测试框架": {
......
{
"node_id": "java-3805023f872947c4874b6e7bab06c1a7",
"keywords": [],
"keywords": ["数据结构"],
"children": [
{
"List的排序和查询": {
......
{
"node_id": "java-132c631a618e4828b4c69316d6163ec3",
"keywords": [],
"keywords": ["注解", "annotation"],
"children": [
{
"定义注解": {
......
{
"node_id": "java-8b0806d4d89948598ac95e5c19b53298",
"keywords": [],
"keywords": ["apt", "注解", "annotation"],
"children": [],
"export": ["apt.json"],
"title": "使用apt处理注解"
......
{
"node_id": "java-352f523c7ad54583a0097cf171015d83",
"keywords": [],
"keywords": ["junit", "单元测试", "测试", "annotation"],
"children": [
{
"将@Unit用于泛型": {
......
{
"node_id": "java-66090dfe673e48a5a14c6ee846c4fc97",
"keywords": [],
"keywords": ["并发"],
"children": [
{
"更快的执行": {
......
{
"node_id": "java-785476f0c71e437cadeb502a74dd86ed",
"keywords": [],
"keywords": ["thread", "线程", "并发", "并行"],
"children": [
{
"中断线程": {
......
{
"node_id": "java-7a4a0e08d7424b5896f2325f732bdeee",
"keywords": [],
"keywords": ["thread", "线程", "并发", "并行"],
"children": [
{
"新建线程": {
......
{
"node_id": "java-5e82993df31e4989ac4b128c08cf0823",
"keywords": [],
"keywords": ["thread", "线程", "并发", "并行"],
"children": [
{
"wait()与notifyAll()": {
......
{
"node_id": "java-372114d043a04070ad690f2753b5083b",
"keywords": [],
"keywords": ["thread", "线程", "并发", "并行", "死锁 "],
"children": [],
"export": ["DeadLock.json"],
"title": "死锁"
......
{
"node_id": "java-aa0b95d8960b4d12a2c9d9e90894a793",
"keywords": [],
"keywords": ["thread", "线程", "并发", "并行"],
"children": [
{
"阻塞队列": {
......
{
"node_id": "java-13e82ac770bb42f3a6076274c28ead94",
"keywords": []
"keywords": ["maven", "构建"],
"export": ["MavenDesc.json", "MavenScript.json"]
}
\ No newline at end of file
{
"node_id": "java-fb711fb0dfbb40db974476ea2d9faf9d",
"keywords": [],
"keywords": ["流", "stream"],
"children": [],
"export": [
"map.json",
......
{
"node_id": "java-9f8b0da343fd415c9b29380647b0f1f8",
"keywords": [],
"keywords": ["流", "stream"],
"children": [],
"export": ["map_reduce.json"],
"title": "流简介"
......
{
"node_id": "java-0f1fc49b2e1c41368403ca2239810920",
"keywords": [],
"keywords": ["流", "stream", "collect"],
"children": [],
"export": [
"to_list.json",
......
{
"node_id": "java-bbff17faa9a04aebbe14c62caccc2309",
"keywords": [],
"keywords": ["流", "stream", "group by"],
"children": [],
"export": [],
"title": "分组"
......
{
"node_id": "java-05498c81f6be42a2a44ddb4de0178420",
"keywords": [],
"keywords": ["流", "stream", "partition by"],
"children": [],
"export": ["partition_by.json"]
}
\ No newline at end of file
{
"node_id": "java-36a3b51a36624ee8930794d64da6b22a",
"keywords": [],
"keywords": ["optional", "null"],
"children": [],
"export": ["optional.json"]
}
\ No newline at end of file
{
"node_id": "java-6a0ad22b08cd4520b453904d832936ea",
"keywords": [],
"keywords": ["optional", "null"],
"children": [],
"export": ["optional.json"]
}
\ No newline at end of file
{
"node_id": "java-5dcc74ab2617434f91ae6aa1ba0ac661",
"keywords": [],
"keywords": ["并发", "并行", "线程", "thread"],
"children": [],
"export": ["thread.json"]
}
\ No newline at end of file
{
"node_id": "java-90f4b7c696464886af9c8de8cbd95338",
"keywords": [],
"keywords": ["并发", "异步", "future"],
"children": [],
"export": [],
"title": "为并发而生的CompletableFuture和结合器"
......
......@@ -1096,7 +1096,12 @@
{
"流概述": {
"node_id": "java-9d6d81f6283d414ba54d97cb25373b7c",
"keywords": [],
"keywords": [
"流",
"stream",
"input",
"output"
],
"children": []
}
},
......@@ -1106,7 +1111,8 @@
"keywords": [
"随机",
"访问",
"文件"
"文件",
"file"
],
"children": []
}
......@@ -1114,7 +1120,13 @@
{
"输入输出流": {
"node_id": "java-4395c520c7514a97a792922acd5937bb",
"keywords": [],
"keywords": [
"input",
"output",
"stream",
"输入",
"输出"
],
"children": [
{
"输入流": {
......@@ -1138,7 +1150,16 @@
{
"文件输入输出流": {
"node_id": "java-132615c6b56b4ea883622abf5b81128d",
"keywords": [],
"keywords": [
"file",
"input",
"output",
"文件",
"输入",
"输出",
"reader",
"writer"
],
"children": [
{
"FileInputStream类与FileOutputStream类": {
......@@ -1162,14 +1183,27 @@
{
"对象序列化": {
"node_id": "java-ec1081c263a84d41b692d4821d8254e6",
"keywords": [],
"keywords": [
"序列化",
"serialize",
"serializable"
],
"children": []
}
},
{
"ZIP压缩输入输出流": {
"node_id": "java-822ae98d5b294e699b7ed1bc6ffb9425",
"keywords": [],
"keywords": [
"zip",
"unzip",
"input",
"output",
"stream",
"压缩",
"解压",
"流"
],
"children": [
{
"压缩文件": {
......@@ -1193,14 +1227,24 @@
{
"InputStream类型": {
"node_id": "java-fc2dfe1a80f64143b4ad339378ba61da",
"keywords": [],
"keywords": [
"stream",
"input",
"输入",
"流"
],
"children": []
}
},
{
"OutputStream类型": {
"node_id": "java-cc8c2e511db54a2ca2ee798f2cdbd03b",
"keywords": [],
"keywords": [
"output",
"stream",
"输出",
"流"
],
"children": []
}
}
......@@ -1215,7 +1259,12 @@
{
"JDBC概述": {
"node_id": "java-150a9965d3e34a19943b4bd5ab2d31bb",
"keywords": [],
"keywords": [
"jdbc",
"驱动",
"database",
"driver"
],
"children": [
{
"JDBC-ODBC桥": {
......@@ -1253,7 +1302,9 @@
"添加",
"修改",
"删除",
"查询"
"查询",
"事务",
"transaction"
],
"children": [
{
......@@ -1365,35 +1416,51 @@
{
"NIO概述": {
"node_id": "java-5daee2a48ed2413fa38467811ea5ee23",
"keywords": [],
"keywords": [
"nio"
],
"children": []
}
},
{
"Buffer(缓冲器)": {
"node_id": "java-e622e94340ee4f00ae2aec33047cb19f",
"keywords": [],
"keywords": [
"buffer",
"缓冲"
],
"children": []
}
},
{
"Channel(通道)": {
"node_id": "java-1cbb9d1ea7c74caeaf8d88c2aad75965",
"keywords": [],
"keywords": [
"channel",
"通道"
],
"children": []
}
},
{
"字符集和Charset": {
"node_id": "java-984b508fc9a54650aa9509eeb198f925",
"keywords": [],
"keywords": [
"字符集",
"charset"
],
"children": []
}
},
{
"文件锁": {
"node_id": "java-338c2cfa55b346a0a0cd4dfc61c40ae6",
"keywords": [],
"keywords": [
"file",
"文件",
"lock",
"锁"
],
"children": []
}
},
......@@ -1402,7 +1469,8 @@
"node_id": "java-386113b4f6274eb591e1f01b39f0c8ce",
"keywords": [
"Paths",
"Path"
"Path",
"路径"
],
"children": []
}
......@@ -1410,7 +1478,10 @@
{
"Files工具类": {
"node_id": "java-868e1323bfdf4c239a6552a45a30d48d",
"keywords": [],
"keywords": [
"文件",
"file"
],
"children": []
}
}
......@@ -1468,7 +1539,11 @@
{
"UDP通信": {
"node_id": "java-f031c1ea305e4617bb1d9f2c4d41f009",
"keywords": [],
"keywords": [
"network",
"udp",
"网络"
],
"children": [
{
"UDP通信简介": {
......@@ -1514,7 +1589,10 @@
{
"TCP通信": {
"node_id": "java-d1499a6f75a04d038344ce776d1c658a",
"keywords": [],
"keywords": [
"network",
"tcp"
],
"children": [
{
"TCP通信简介": {
......@@ -1564,26 +1642,12 @@
]
}
},
{
"网络编程的基础知识": {
"node_id": "java-0a41df2154834670a9facf2ff7530d6b",
"keywords": [],
"children": [
{
"网络基础知识": {
"keywords": [],
"children": [],
"node_id": "java-1cf4ca055b604ea49c6b762596371c71",
"title": "网络基础知识"
}
}
]
}
},
{
"Java的基本网络支持": {
"node_id": "java-1e8ef0cdeec443d8addaaa79b760c6b1",
"keywords": [],
"keywords": [
"network"
],
"children": [
{
"使用URLDecoder和URLEncoder": {
......@@ -1604,102 +1668,13 @@
]
}
},
{
"基于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": [],
"keywords": [
"network",
"proxy"
],
"children": [
{
"直接使用Proxy创建连接": {
......@@ -1784,7 +1759,11 @@
{
"Class对象": {
"node_id": "java-1133afe68c004a0ea2ad957f0acb061e",
"keywords": [],
"keywords": [
"class",
"类",
"面向对象"
],
"children": [
{
"类字面常量": {
......@@ -1817,7 +1796,8 @@
"类型转换前先做检查": {
"node_id": "java-48593d705752415e95c42b09d36bc2a4",
"keywords": [
"instanceof"
"instanceof",
"类型"
],
"children": [
{
......@@ -1847,17 +1827,12 @@
]
}
},
{
"注册工厂": {
"node_id": "java-c4cbf0c25cbf47c4892a5f6635be9826",
"keywords": [],
"children": []
}
},
{
"instanceof与Class的等价性": {
"node_id": "java-feca89c3fb9e4bcaba3f1f95e8ad4753",
"keywords": [],
"keywords": [
"类型"
],
"children": []
}
},
......@@ -1865,7 +1840,8 @@
"反射:运行时类信息": {
"node_id": "java-42b26ca8a2384dcfb02fca6e159ace67",
"keywords": [
"annotation"
"annotation",
"标注"
],
"children": [
{
......@@ -1998,14 +1974,18 @@
{
"动态代理": {
"node_id": "java-f7be740717c442c4a489a8c8d675f38c",
"keywords": [],
"keywords": [
"proxy"
],
"children": []
}
},
{
"空对象": {
"node_id": "java-dec42155c7904f7e9d00a37b5013470d",
"keywords": [],
"keywords": [
"空对象"
],
"children": [
{
"模拟对象与桩": {
......@@ -2582,14 +2562,23 @@
{
"线程与进程": {
"node_id": "java-5dcc74ab2617434f91ae6aa1ba0ac661",
"keywords": [],
"keywords": [
"并发",
"并行",
"线程",
"thread"
],
"children": []
}
},
{
"Future与CompletableFuture": {
"node_id": "java-90f4b7c696464886af9c8de8cbd95338",
"keywords": [],
"keywords": [
"并发",
"异步",
"future"
],
"children": []
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册