Skip to content

Commit 7899f56

Browse files
committed
auto commit
1 parent 236b85a commit 7899f56

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+572
-4565
lines changed

notes/43. 从 1 到 n 整数中 1 出现的次数.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ public int NumberOf1Between1AndN_Solution(int n) {
1515
}
1616
```
1717

18-
\> [Leetcode : 233. Number of Digit One](https://leetcode.com/problems/number-of-digit-one/discuss/64381/4+-lines-O(log-n)-C++JavaPython)
18+
> [Leetcode : 233. Number of Digit One](https://leetcode.com/problems/number-of-digit-one/discuss/64381/4+-lines-O(log-n)-C++JavaPython)

notes/Docker.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Docker
22
<!-- GFM-TOC -->
33
* [Docker](#docker)
4+
* [一、解决的问题](#一解决的问题)
5+
* [二、与虚拟机的比较](#二与虚拟机的比较)
6+
* [三、优势](#三优势)
7+
* [四、使用场景](#四使用场景)
8+
* [五、镜像与容器](#五镜像与容器)
9+
* [参考资料](#参考资料)
410
<!-- GFM-TOC -->
511

612

notes/HTTP.md

+54-10
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,58 @@
22
<!-- GFM-TOC -->
33
* [HTTP](#http)
44
* [一 、基础概念](#一-基础概念)
5+
* [请求和响应报文](#请求和响应报文)
6+
* [URL](#url)
57
* [二、HTTP 方法](#二http-方法)
8+
* [GET](#get)
9+
* [HEAD](#head)
10+
* [POST](#post)
11+
* [PUT](#put)
12+
* [PATCH](#patch)
13+
* [DELETE](#delete)
14+
* [OPTIONS](#options)
15+
* [CONNECT](#connect)
16+
* [TRACE](#trace)
617
* [三、HTTP 状态码](#三http-状态码)
18+
* [1XX 信息](#1xx-信息)
19+
* [2XX 成功](#2xx-成功)
20+
* [3XX 重定向](#3xx-重定向)
21+
* [4XX 客户端错误](#4xx-客户端错误)
22+
* [5XX 服务器错误](#5xx-服务器错误)
723
* [四、HTTP 首部](#四http-首部)
24+
* [通用首部字段](#通用首部字段)
25+
* [请求首部字段](#请求首部字段)
26+
* [响应首部字段](#响应首部字段)
27+
* [实体首部字段](#实体首部字段)
828
* [五、具体应用](#五具体应用)
29+
* [连接管理](#连接管理)
30+
* [Cookie](#cookie)
31+
* [缓存](#缓存)
32+
* [内容协商](#内容协商)
33+
* [内容编码](#内容编码)
34+
* [范围请求](#范围请求)
35+
* [分块传输编码](#分块传输编码)
36+
* [多部分对象集合](#多部分对象集合)
37+
* [虚拟主机](#虚拟主机)
38+
* [通信数据转发](#通信数据转发)
939
* [六、HTTPS](#六https)
40+
* [加密](#加密)
41+
* [认证](#认证)
42+
* [完整性保护](#完整性保护)
43+
* [HTTPS 的缺点](#https-的缺点)
1044
* [七、HTTP/2.0](#七http20)
45+
* [HTTP/1.x 缺陷](#http1x-缺陷)
46+
* [二进制分帧层](#二进制分帧层)
47+
* [服务端推送](#服务端推送)
48+
* [首部压缩](#首部压缩)
1149
* [八、HTTP/1.1 新特性](#八http11-新特性)
1250
* [九、GET 和 POST 比较](#九get-和-post-比较)
51+
* [作用](#作用)
52+
* [参数](#参数)
53+
* [安全](#安全)
54+
* [幂等性](#幂等性)
55+
* [可缓存](#可缓存)
56+
* [XMLHttpRequest](#xmlhttprequest)
1357
* [参考资料](#参考资料)
1458
<!-- GFM-TOC -->
1559

@@ -95,29 +139,29 @@ http 使用 URL( **U** niform **R**esource **L**ocator,统一资源定位符
95139

96140
### GET
97141

98-
\> 获取资源
142+
> 获取资源
99143
100144
当前网络请求中,绝大部分使用的是 GET 方法。
101145

102146
### HEAD
103147

104-
\> 获取报文首部
148+
> 获取报文首部
105149
106150
和 GET 方法类似,但是不返回报文实体主体部分。
107151

108152
主要用于确认 URL 的有效性以及资源更新的日期时间等。
109153

110154
### POST
111155

112-
\> 传输实体主体
156+
> 传输实体主体
113157
114158
POST 主要用来传输数据,而 GET 主要用来获取资源。
115159

116160
更多 POST 与 GET 的比较请见第九章。
117161

118162
### PUT
119163

120-
\> 上传文件
164+
> 上传文件
121165
122166
由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。
123167

@@ -132,7 +176,7 @@ Content-length: 16
132176

133177
### PATCH
134178

135-
\> 对资源进行部分修改
179+
> 对资源进行部分修改
136180
137181
PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。
138182

@@ -148,7 +192,7 @@ Content-Length: 100
148192

149193
### DELETE
150194

151-
\> 删除文件
195+
> 删除文件
152196
153197
与 PUT 功能相反,并且同样不带验证机制。
154198

@@ -158,15 +202,15 @@ DELETE /file.html HTTP/1.1
158202

159203
### OPTIONS
160204

161-
\> 查询支持的方法
205+
> 查询支持的方法
162206
163207
查询指定的 URL 能够支持的方法。
164208

165209
会返回 `Allow: GET, POST, HEAD, OPTIONS` 这样的内容。
166210

167211
### CONNECT
168212

169-
\> 要求在与代理服务器通信时建立隧道
213+
> 要求在与代理服务器通信时建立隧道
170214
171215
使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
172216

@@ -178,7 +222,7 @@ CONNECT www.example.com:443 HTTP/1.1
178222

179223
### TRACE
180224

181-
\> 追踪路径
225+
> 追踪路径
182226
183227
服务器会将通信路径返回给客户端。
184228

@@ -863,7 +907,7 @@ DELETE /idX/delete HTTP/1.1 -> Returns 404
863907

864908
为了阐述 POST 和 GET 的另一个区别,需要先了解 XMLHttpRequest:
865909

866-
\> XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。XMLHttpRequest 在 AJAX 中被大量使用。
910+
> XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。XMLHttpRequest 在 AJAX 中被大量使用。
867911
868912
- 在使用 XMLHttpRequest 的 POST 方法时,浏览器会先发送 Header 再发送 Data。但并不是所有浏览器会这么做,例如火狐就不会。
869913
- 而 GET 方法 Header 和 Data 会一起发送。

notes/Java IO.md

+21
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,31 @@
44
* [一、概览](#一概览)
55
* [二、磁盘操作](#二磁盘操作)
66
* [三、字节操作](#三字节操作)
7+
* [实现文件复制](#实现文件复制)
8+
* [装饰者模式](#装饰者模式)
79
* [四、字符操作](#四字符操作)
10+
* [编码与解码](#编码与解码)
11+
* [String 的编码方式](#string-的编码方式)
12+
* [Reader 与 Writer](#reader-与-writer)
13+
* [实现逐行输出文本文件的内容](#实现逐行输出文本文件的内容)
814
* [五、对象操作](#五对象操作)
15+
* [序列化](#序列化)
16+
* [Serializable](#serializable)
17+
* [transient](#transient)
918
* [六、网络操作](#六网络操作)
19+
* [InetAddress](#inetaddress)
20+
* [URL](#url)
21+
* [Sockets](#sockets)
22+
* [Datagram](#datagram)
1023
* [七、NIO](#七nio)
24+
* [流与块](#流与块)
25+
* [通道与缓冲区](#通道与缓冲区)
26+
* [缓冲区状态变量](#缓冲区状态变量)
27+
* [文件 NIO 实例](#文件-nio-实例)
28+
* [选择器](#选择器)
29+
* [套接字 NIO 实例](#套接字-nio-实例)
30+
* [内存映射文件](#内存映射文件)
31+
* [对比](#对比)
1132
* [八、参考资料](#八参考资料)
1233
<!-- GFM-TOC -->
1334

notes/Java 基础.md

+35-10
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,42 @@
22
<!-- GFM-TOC -->
33
* [Java 基础](#java-基础)
44
* [一、数据类型](#一数据类型)
5+
* [基本类型](#基本类型)
6+
* [包装类型](#包装类型)
7+
* [缓存池](#缓存池)
58
* [二、String](#二string)
9+
* [概览](#概览)
10+
* [不可变的好处](#不可变的好处)
11+
* [String, StringBuffer and StringBuilder ](#string-stringbuffer-and-stringbuilder )
12+
* [String Pool](#string-pool)
13+
* [new String("abc")](#new-stringabc)
614
* [三、运算](#三运算)
15+
* [参数传递](#参数传递)
16+
* [float 与 double](#float-与-double)
17+
* [隐式类型转换](#隐式类型转换)
18+
* [switch](#switch)
719
* [四、关键字](#四关键字)
20+
* [final](#final)
21+
* [static](#static)
822
* [五、Object 通用方法](#五object-通用方法)
23+
* [概览](#概览)
24+
* [equals()](#equals)
25+
* [hashCode()](#hashcode)
26+
* [toString()](#tostring)
27+
* [clone()](#clone)
928
* [六、继承](#六继承)
29+
* [访问权限](#访问权限)
30+
* [抽象类与接口](#抽象类与接口)
31+
* [super](#super)
32+
* [重写与重载](#重写与重载)
1033
* [七、反射](#七反射)
1134
* [八、异常](#八异常)
1235
* [九、泛型](#九泛型)
1336
* [十、注解](#十注解)
1437
* [十一、特性](#十一特性)
38+
* [Java 各版本的新特性](#java-各版本的新特性)
39+
* [Java 与 C++ 的区别](#java-与-c-的区别)
40+
* [JRE or JDK](#jre-or-jdk)
1541
* [参考资料](#参考资料)
1642
<!-- GFM-TOC -->
1743

@@ -1328,26 +1354,25 @@ public static void main(String[] args) {
13281354

13291355
Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect 类库主要包含了以下三个类:
13301356

1331-
- **Field** :可以使用 get() 和 set() 方法读取和修改 Field 对象关联的字段;
1332-
- **Method** :可以使用 invoke() 方法调用与 Method 对象关联的方法;
1333-
- **Constructor** :可以用 Constructor 的 newInstance() 创建新的对象。
1357+
- **Field** :可以使用 get() 和 set() 方法读取和修改 Field 对象关联的字段;
1358+
- **Method** :可以使用 invoke() 方法调用与 Method 对象关联的方法;
1359+
- **Constructor** :可以用 Constructor 的 newInstance() 创建新的对象。
13341360

13351361
**反射的优点:**
13361362

1337-
* **可扩展性** :应用程序可以利用全限定名创建可扩展对象的实例,来使用来自外部的用户自定义类。
1338-
* **类浏览器和可视化开发环境** :一个类浏览器需要可以枚举类的成员。可视化开发环境(如 IDE)可以从利用反射中可用的类型信息中受益,以帮助程序员编写正确的代码。
1339-
* **调试器和测试工具** : 调试器需要能够检查一个类里的私有成员。测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义,以确保一组测试中有较高的代码覆盖率。
1363+
- **可扩展性** :应用程序可以利用全限定名创建可扩展对象的实例,来使用来自外部的用户自定义类。
1364+
- **类浏览器和可视化开发环境** :一个类浏览器需要可以枚举类的成员。可视化开发环境(如 IDE)可以从利用反射中可用的类型信息中受益,以帮助程序员编写正确的代码。
1365+
- **调试器和测试工具** : 调试器需要能够检查一个类里的私有成员。测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义,以确保一组测试中有较高的代码覆盖率。
13401366

13411367
**反射的缺点:**
13421368

13431369
尽管反射非常强大,但也不能滥用。如果一个功能可以不用反射完成,那么最好就不用。在我们使用反射技术时,下面几条内容应该牢记于心。
13441370

1345-
* **性能开销** :反射涉及了动态类型的解析,所以 JVM 无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射。
1371+
- **性能开销** :反射涉及了动态类型的解析,所以 JVM 无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射。
13461372

1347-
* **安全限制** :使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如 Applet,那么这就是个问题了。
1348-
1349-
* **内部暴露** :由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用,这可能导致代码功能失调并破坏可移植性。反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化。
1373+
- **安全限制** :使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如 Applet,那么这就是个问题了。
13501374

1375+
- **内部暴露** :由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用,这可能导致代码功能失调并破坏可移植性。反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化。
13511376

13521377
- [Trail: The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/index.html)
13531378
- [深入解析 Java 反射(1)- 基础](http://www.sczyh30.com/posts/Java/java-reflection-1/)

notes/Java 容器.md

+12
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,20 @@
22
<!-- GFM-TOC -->
33
* [Java 容器](#java-容器)
44
* [一、概览](#一概览)
5+
* [Collection](#collection)
6+
* [Map](#map)
57
* [二、容器中的设计模式](#二容器中的设计模式)
8+
* [迭代器模式](#迭代器模式)
9+
* [适配器模式](#适配器模式)
610
* [三、源码分析](#三源码分析)
11+
* [ArrayList](#arraylist)
12+
* [Vector](#vector)
13+
* [CopyOnWriteArrayList](#copyonwritearraylist)
14+
* [LinkedList](#linkedlist)
15+
* [HashMap](#hashmap)
16+
* [ConcurrentHashMap](#concurrenthashmap)
17+
* [LinkedHashMap](#linkedhashmap)
18+
* [WeakHashMap](#weakhashmap)
719
* [参考资料](#参考资料)
820
<!-- GFM-TOC -->
921

0 commit comments

Comments
 (0)