Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
abace60
correct typos
StoneLyu May 7, 2019
f62deb8
Add translations
StoneLyu May 7, 2019
7d5f538
新增HTTP/1.0, HTTP/1.1, HTTP/2的对比
StoneLyu May 10, 2019
978f0e6
增加HTTP/1.1和HTTP/2的性能对比的Demo
StoneLyu May 10, 2019
badd1b1
翻译大部分基础数据结构,但是REACT部分没有翻译
StoneLyu May 10, 2019
45c53b5
update description of `HTTP/1.0`
StoneLyu May 29, 2019
53bd464
add WIP tag, update some translation details
StoneLyu May 29, 2019
7f6d697
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 3, 2019
a888630
change 'fundamental' to 'basic'
StoneLyu Jun 5, 2019
76689b7
remove some trivial details about HTTP/1.0
StoneLyu Jun 5, 2019
83b48c0
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 6, 2019
78d4f4b
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 17, 2019
6e2add0
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 20, 2019
1cb943e
error correction
StoneLyu Jun 21, 2019
2871ad1
translation for DP
StoneLyu Jun 21, 2019
2993775
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 21, 2019
987d03b
translation for string problems
StoneLyu Jun 21, 2019
0526ab4
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 21, 2019
10b87c1
Merge remote-tracking branch 'azl/master'
StoneLyu Jun 22, 2019
1574660
Merge remote-tracking branch 'azl/master'
StoneLyu Jul 8, 2019
aa90d5e
Merge remote-tracking branch 'azl/master'
StoneLyu Jul 9, 2019
da21132
error correction
StoneLyu Jul 11, 2019
f4f1e53
Merge remote-tracking branch 'azl/master'
StoneLyu Jul 12, 2019
5445058
Merge remote-tracking branch 'azl/master'
StoneLyu Jul 31, 2019
d8def59
Merge remote-tracking branch 'azl/master'
StoneLyu Aug 2, 2019
d124351
Merge remote-tracking branch 'azl/master'
StoneLyu Aug 11, 2019
7a66d89
correct wrongly typed
StoneLyu Aug 12, 2019
922dca8
translation for binary-tree-traversal.md
StoneLyu Aug 12, 2019
28d05ef
Merge remote-tracking branch 'azl/master'
StoneLyu Aug 12, 2019
33a2ee5
correct wrongly typed
StoneLyu Aug 12, 2019
e0136d0
update README.en.md
StoneLyu Aug 12, 2019
49affbd
update description of Huffman encoding
StoneLyu Aug 13, 2019
2cb016b
Merge remote-tracking branch 'azl/master'
StoneLyu Aug 13, 2019
8db781f
update file path of Binary-tree-traversal-en.md.
StoneLyu Aug 13, 2019
83acb43
correct wrongly typed
StoneLyu Aug 13, 2019
2806f2d
update paths of thinkings
StoneLyu Aug 13, 2019
0903e52
translation for basic-algorithm.md (Draft)
StoneLyu Aug 13, 2019
5c77911
translation for bloom-filter.md
StoneLyu Aug 13, 2019
66b122a
solve conflict in README.en.md
StoneLyu Aug 13, 2019
e2c3094
Merge remote-tracking branch 'azl/master'
StoneLyu Aug 13, 2019
111743c
Merge remote-tracking branch 'azl/master'
StoneLyu Aug 26, 2019
ba9572d
Merge remote-tracking branch 'azl/master'
StoneLyu Oct 9, 2019
c41748f
Merge remote-tracking branch 'azl/master'
StoneLyu Oct 24, 2019
f8edeb3
Merge remote-tracking branch 'azl/master'
StoneLyu Dec 14, 2019
366b72c
add java solution with inorder traversing
StoneLyu Dec 24, 2019
fc054c2
Update 230.kth-smallest-element-in-a-bst.md
azl397985856 Dec 24, 2019
779f714
add java implementations.
StoneLyu Dec 28, 2019
94db592
add java implementations
StoneLyu Dec 28, 2019
fc7a4cd
Merge remote-tracking branch 'refs/remotes/origin/master'
StoneLyu Dec 28, 2019
7e059d8
Merge remote-tracking branch 'azl/master'
StoneLyu Dec 28, 2019
dbd8e45
Update 94.binary-tree-inorder-traversal.md
azl397985856 Dec 30, 2019
b60184d
Update 98.validate-binary-search-tree.md
azl397985856 Dec 30, 2019
0eca3dd
add java implementation to 19
StoneLyu Dec 31, 2019
b66258d
Merge remote-tracking branch 'azl/master'
StoneLyu Dec 31, 2019
070c144
Merge branch 'master' of https://github.com/StoneLyu/leetcode
StoneLyu Dec 31, 2019
3d4cc23
fix conflict
StoneLyu Jan 1, 2020
8de4f14
fix typo
StoneLyu Jan 1, 2020
189450b
Merge remote-tracking branch 'azl/master'
StoneLyu Jan 1, 2020
3087fdb
fix typo
StoneLyu Jan 1, 2020
141d408
add java implementation. add more explanation.
StoneLyu Jan 2, 2020
fd048e9
Merge remote-tracking branch 'azl/master'
StoneLyu Jan 2, 2020
9055c6e
Update 232.implement-queue-using-stacks.md
azl397985856 Jan 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
新增HTTP/1.0, HTTP/1.1, HTTP/2的对比
  • Loading branch information
StoneLyu committed May 10, 2019
commit 7d5f538d2f9882399d9ab7440a06bf2ce3a5d8c5
20 changes: 14 additions & 6 deletions thinkings/basic-data-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,24 @@ React 将`如何确保组件内部hooks保存的状态之间的对应关系`这

![basic-data-structure-queue-1](../assets/thinkings/basic-data-structure-queue-1.png)

对于同一个tcp连接,http1.1允许一次发送多个http1.1请求,也就是说,不必等前一个响应收到,就可以发送下一个请求,这样就解决了http1.0的客户端的队头阻塞。
但是,`http1.1规定,服务器端的响应的发送要根据请求被接收的顺序排队`,也就是说,
先接收到的请求的响应也要先发送。这样造成的问题是,如果最先收到的请求的处理时间长的话,响应生成也慢,就会阻塞已经生成了的响应的发送。也会造成队头阻塞。
`HTTP/1.0` 和 `HTTP/1.1`:
在`HTTP/1.0` 中每一次请求都需要建立一个TCP连接,请求结束后立即断开连接。而且下一个包必须在收到前一个包的ACK之后才能发送。
在`HTTP/1.1` 中,每一个连接都默认是长连接(persistent connection)。对于同一个tcp连接,允许一次发送多个http1.1请求,也就是说,不必等前一个响应收到,就可以发送下一个请求。这样就解决了http1.0的客户端的队头阻塞,而这也就是`HTTP/1.1`中`管道(Pipeline)`的概念了。
但是,`http1.1规定,服务器端的响应的发送要根据请求被接收的顺序排队`,也就是说,先接收到的请求的响应也要先发送。这样造成的问题是,如果最先收到的请求的处理时间长的话,响应生成也慢,就会阻塞已经生成了的响应的发送。也会造成队头阻塞。
可见,http1.1的队首阻塞发生在服务器端。

如果用图来表示的话,过程大概是:

![basic-data-structure-queue-2](../assets/thinkings/basic-data-structure-queue-2.png)

`HTTP/2` 和 `HTTP/1.1`:

为了解决`HTTP/1.1`中的服务端队首阻塞,`HTTP/2`采用了`二进制分帧` 和 `多路复用` 等方法。
`二进制分帧`中,帧是`HTTP/2`数据通信的最小单位。在`HTTP/1.1`数据包是文本格式,而`HTTP/2`的数据包是二进制格式的,也就是二进制帧。采用帧可以将请求和响应的数据分割得更小,且二进制协议可以更高效解析。`HTTP/2`中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向数据流。每个数据流都以消息的形式发送,而消息又由一个或多个帧组成。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
`多路复用`用以替代原来的序列和拥塞机制。在`HTTP/1.1`中,并发多个请求需要多个TCP链接,且单个域名有6-8个TCP链接请求限制。在`HHTP/2`中,同一域名下的所有通信在单个链接完成,仅占用一个TCP链接,且在这一个链接上可以并行请求和响应,互不干扰。

### 栈

栈也是一种受限的序列,它只能够操作栈顶,不管入栈还是出栈,都是在栈顶操作。

在计算机科学中, 一个 栈(stack) 是一种抽象数据类型,用作表示元素的集合,具有两种主要操作:
Expand Down Expand Up @@ -236,11 +244,11 @@ return, children, sibling也都是一个fiber,因此fiber看起来就是一个
[这篇文章](https://engineering.hexacta.com/didact-fiber-incremental-reconciliation-b2fe028dcaec)也是早期讲述fiber架构的优秀文章

我目前也在写关于《从零开发react系列教程》中关于fiber架构的部分,如果你对具体实现感兴趣,欢迎关注。
### 非线性结构
## 非线性结构

那么有了线性结果,我们为什么还需要非线性结果呢? 答案是为了高效地兼顾静态操作和动态操作。
那么有了线性结构,我们为什么还需要非线性结构呢? 答案是为了高效地兼顾静态操作和动态操作。
大家可以对照各种数据结构的各种操作的复杂度来直观感受一下。
## 树
###
树的应用同样非常广泛,小到文件系统,大到因特网,组织架构等都可以表示为树结构,
而在我们前端眼中比较熟悉的DOM树也是一种树结构,而HTML作为一种DSL去描述这种树结构的具体表现形式。

Expand Down