Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
8fb9be8
Update HTTP.md
OOCZC Feb 25, 2019
55b8121
Merge pull request #582 from OOCZC/master
CyC2018 Feb 25, 2019
9b22f5e
edit leetcode 347
xpluto Feb 25, 2019
9a794b8
Merge pull request #583 from xpluto/modify-leetcode-347
CyC2018 Feb 26, 2019
f33c01e
auto commit
CyC2018 Feb 26, 2019
cc9dd44
Update Leetcode 题解.md
CyC2018 Feb 26, 2019
d526ebd
auto commit
CyC2018 Feb 26, 2019
0de7820
auto commit
CyC2018 Feb 27, 2019
9a5d509
auto commit
CyC2018 Feb 27, 2019
9a2435d
auto commit
CyC2018 Feb 27, 2019
fd93617
Update README.md
CyC2018 Feb 28, 2019
20f7147
Curstomers->Customers
CROSSWF Mar 1, 2019
9f1571a
Merge pull request #586 from CROSSWF/master
CyC2018 Mar 1, 2019
dac38c1
auto commit
CyC2018 Mar 2, 2019
e0818e1
Update README.md
CyC2018 Mar 2, 2019
300ba16
Update README.md
CyC2018 Mar 2, 2019
9eb3dff
Merge branch 'master' of https://github.com/CyC2018/Interview-Notebook
CyC2018 Mar 2, 2019
0ae1f6c
auto commit
CyC2018 Mar 3, 2019
2438545
Update README.md
CyC2018 Mar 3, 2019
edb1e3c
Update README.md
CyC2018 Mar 4, 2019
06248ac
Update README.md
CyC2018 Mar 4, 2019
d800649
Update _coverpage.md
CyC2018 Mar 4, 2019
c61d85c
Update README.md
CyC2018 Mar 4, 2019
a06e968
Update README.md
CyC2018 Mar 4, 2019
ebe98ad
Update README.md
CyC2018 Mar 4, 2019
3107d8d
Update README.md
CyC2018 Mar 4, 2019
52d167e
Update README.md
CyC2018 Mar 4, 2019
c0a6bc5
背包问题更新。
5renyuebing Mar 5, 2019
31bb879
Merge pull request #591 from 5renyuebing/master
CyC2018 Mar 5, 2019
2db2c09
auto commit
CyC2018 Mar 5, 2019
29ac44c
auto commit
CyC2018 Mar 5, 2019
91d6b76
auto commit
CyC2018 Mar 5, 2019
c6cfc0a
auto commit
CyC2018 Mar 5, 2019
351fb2e
auto commit
CyC2018 Mar 5, 2019
dda9556
Update _coverpage.md
CyC2018 Mar 5, 2019
d459f8a
Add files via upload
CyC2018 Mar 6, 2019
9f1aa70
Update README.md
CyC2018 Mar 6, 2019
9f7dc87
Update README.md
CyC2018 Mar 6, 2019
adb1eab
Update README.md
CyC2018 Mar 6, 2019
73806f6
Update README.md
CyC2018 Mar 6, 2019
7bc183a
Update README.md
CyC2018 Mar 6, 2019
1a3fcd3
Update README.md
CyC2018 Mar 6, 2019
4929644
Update _coverpage.md
CyC2018 Mar 6, 2019
c44353e
Update README.md
CyC2018 Mar 6, 2019
cf6459b
Update README.md
CyC2018 Mar 6, 2019
c61b55b
Update README.md
CyC2018 Mar 6, 2019
899c2c2
Update _coverpage.md
CyC2018 Mar 6, 2019
a44fa29
Update README.md
CyC2018 Mar 6, 2019
9ac6ff2
Update index.html
CyC2018 Mar 6, 2019
4a27e14
Update README.md
CyC2018 Mar 6, 2019
5b496cc
Update README.md
CyC2018 Mar 6, 2019
111f2fe
Update README.md
CyC2018 Mar 6, 2019
dd90aa6
Update README.md
CyC2018 Mar 6, 2019
123fc24
Update README.md
CyC2018 Mar 6, 2019
372445b
Update README.md
CyC2018 Mar 6, 2019
4185261
Update README.md
CyC2018 Mar 6, 2019
a21a884
auto commit
CyC2018 Mar 6, 2019
4d65a11
Merge branch 'master' of https://github.com/CyC2018/Interview-Notebook
CyC2018 Mar 6, 2019
8e47035
Update README.md
CyC2018 Mar 6, 2019
938330f
auto commit
CyC2018 Mar 6, 2019
bac43bf
Merge branch 'master' of https://github.com/CyC2018/Interview-Notebook
CyC2018 Mar 6, 2019
adac0fc
Update Leetcode 题解.md
fentise Mar 7, 2019
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
29 changes: 13 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
<br>
<a href="https://cyc2018.github.io/CS-Notes"> <img src="https://img.shields.io/badge/>-read-4ab8a1.svg"></a> <a href="https://xiaozhuanlan.com/CyC2018"> <img src="https://img.shields.io/badge/_-more-4ab8a1.svg"></a>
<br> <br>
本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以阅读 <a href="https://github.com/CyC2018/Backend-Interview-Guide">面试进阶指南</a>,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。
本项目包含了技术面试必备的基础知识,内容浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。推荐使用 https://cyc2018.github.io/CS-Notes 进行阅读,从而获得更好的阅读体验。你也可以订阅 <a href="https://xiaozhuanlan.com/CyC2018">面试进阶指南</a>,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。欢迎关注公众号“CyC2018”,每天发布一道高频基础知识面试题,让你在闲暇时间也能学习进步!公众号也提供了一个学习打卡圈子,记录你每天的学习收获,见证你的成长!<br/><br/><img src="assets/公众号1.jpg" width="200px">

</div>

<br>
Expand Down Expand Up @@ -87,35 +88,31 @@

为大家提供一个学习交流平台,在这里你可以自由地讨论技术问题。

<img src="assets/group1.png" width="150px"></br>
<img src="assets/group1.png" width="150px">

### 关于我
### 后端面试指南

<a href="https://www.zhihu.com/people/xiao-shi-guang-33/activities">
<img src="assets/知乎.jpg" width="60px">
</a> &nbsp;&nbsp;
<a href="https://xiaozhuanlan.com/CyC2018">
<img src="assets/小专栏.jpg" width="60px">
</a> &nbsp;&nbsp;
<a href="https://shimo.im/docs/1Vuo5GeWCHMnxMtF/">
<img src="assets/知识星球.png" width="60px">
</a>
<img src="assets/小专栏.jpg" width="80px">
</a>

### 排版

笔记内容按照 [文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines) 进行排版,以保证内容的可读性。笔记不使用 `![]()` 这种方式来引用图片,而是用 `<img>` 标签。一方面是为了能够控制图片以合适的大小显示,另一方面是因为 GFM 不支持 `<center> ![]() </center>` 让图片居中显示,只能使用 `<div align="center"> <img src=""/> </div>` 达到居中的效果。
笔记内容按照 [中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines) 进行排版,以保证内容的可读性。

不使用 `![]()` 这种方式来引用图片,而是用 `<img>` 标签。一方面是为了能够控制图片以合适的大小显示,另一方面是因为 [GFM](https://github.github.com/gfm/) 不支持 `<center> ![]() </center>` 这种方法让图片居中显示,只能使用 `<div align="center"> <img src=""/> </div>` 达到居中的效果。

我将自己实现的文档排版功能提取出来,放在 Github Page 中,无需下载安装即可免费使用:[Text-Typesetting](https://github.com/CyC2018/Text-Typesetting)。
在线排版工具:[Text-Typesetting](https://github.com/CyC2018/Text-Typesetting)。

### 上传方案

我在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步。进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。
为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括提取图片、Markdown 文档转换、Git 同步。进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。

我将自己实现文档转换功能提取出来,方便大家在需要将本地 Markdown 上传到 Github,或者制作项目 README 文档时生成目录时使用:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。
GFM 转换工具:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。

### License

学习笔记不是从网上到处拼凑而来,除了少部分引用书上和技术文档的原文,其余都是我的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。
本仓库内容将网上的资料随意拼凑而来,除了少部分引用书上和技术文档的原文,其余都是我的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。

<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a>

Expand Down
Binary file added assets/公众号.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/公众号1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

> [点击阅读面试进阶指南](https://github.com/CyC2018/Backend-Interview-Guide)
> [点击订阅面试进阶指南](https://xiaozhuanlan.com/CyC2018)

## ✏️ 算法

Expand Down Expand Up @@ -54,3 +54,7 @@
> [Docker](notes/Docker.md) </br>
> [正则表达式](notes/正则表达式.md) </br>
> [构建工具](notes/构建工具.md)

欢迎关注 公众号 “CyC2018” ,每天发布一道高频基础知识面试题,让你在闲暇时间也能学习进步!公众号也提供了一个学习打卡圈子,记录你每天的学习收获,见证你的成长!

![](https://github.com/CyC2018/CS-Notes/raw/master/assets/%E5%85%AC%E4%BC%97%E5%8F%B7.jpg)
4 changes: 2 additions & 2 deletions docs/_coverpage.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<img width="150px" src="_media/LogoMakr_1J56bI.png">
<img width="180px" src="_media/LogoMakr_1J56bI.png">

# CS-Notes

- 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以阅读 <a href="https://github.com/CyC2018/Backend-Interview-Guide">面试进阶指南</a>,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。
- 本项目包含了技术面试必备的基础知识,内容浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以订阅 <a href="https://xiaozhuanlan.com/CyC2018">面试进阶指南</a>,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。欢迎关注 <a href="https://shimo.im/docs/nWtqsWlyGq49x3O4"> 公众号“CyC2018” </a>,每天发布一道高频基础知识面试题,让你在闲暇时间也能学习进步!公众号也提供了一个学习打卡圈子,记录你每天的学习收获,见证你的成长!

<span id="busuanzi_container_site_pv">Site View : <span id="busuanzi_value_site_pv">

Expand Down
4 changes: 2 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<!-- 上面的基本不可用,无法搜索 -->
<script src="https://cdn.bootcss.com/docsify/4.5.9/plugins/search.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/gitalk.min.js"></script>
<script src="//unpkg.com/gitalk/dist/gitalk.min.js"></script>
<!-- <script src="//unpkg.com/gitalk/dist/gitalk.min.js"></script> -->
<script src="//unpkg.com/docsify-copy-code"></script>
<script src="//unpkg.com/prismjs/components/prism-java.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-c.min.js"></script>
Expand All @@ -64,4 +64,4 @@
</script>
</body>

</html>
</html>
24 changes: 13 additions & 11 deletions docs/notes/Git.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

Git 属于分布式版本控制系统,而 SVN 属于集中式。

<div align="center"> <img src="pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png"/> </div><br>

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。

集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。
Expand All @@ -35,49 +37,49 @@ Github 就是一个中心服务器。

# 工作流

<div align="center"> <img src="pics/a1198642-9159-4d88-8aec-c3b04e7a2563.jpg"/> </div><br>

新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。

Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针
Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 中存有所有分支,使用一个 HEAD 指针指向当前分支

<div align="center"> <img src="pics/46f66e88-e65a-4ad0-a060-3c63fe22947c.png"/> </div><br>
<div align="center"> <img src="pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200.png"/> </div><br>

- git add files 把文件的修改添加到暂存区
- git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了
- git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files
- git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改

<div align="center"> <img src="pics/17976404-95f5-480e-9cb4-250e6aa1d55f.png"/> </div><br>
<div align="center"> <img src="pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200.png"/> </div><br>

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。

- git commit -a 直接把所有文件的修改添加到暂存区然后执行提交
- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作

<div align="center"> <img src="pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png"/> </div><br>

# 分支实现

使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。

<div align="center"> <img src="pics/fb546e12-e1fb-4b72-a1fb-8a7f5000dce6.jpg"/> </div><br>
<div align="center"> <img src="pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png"/> </div><br>

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支表示新分支成为当前分支。

<div align="center"> <img src="pics/bc775758-89ab-4805-9f9c-78b8739cf780.jpg"/> </div><br>
<div align="center"> <img src="pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png"/> </div><br>

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。

<div align="center"> <img src="pics/5292faa6-0141-4638-bf0f-bb95b081dcba.jpg"/> </div><br>
<div align="center"> <img src="pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png"/> </div><br>

合并分支也只需要改变指针即可。

<div align="center"> <img src="pics/1164a71f-413d-494a-9cc8-679fb6a2613d.jpg"/> </div><br>
<div align="center"> <img src="pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png"/> </div><br>

# 冲突

当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。

<div align="center"> <img src="pics/58e57a21-6b6b-40b6-af85-956dd4e0f55a.jpg"/> </div><br>
<div align="center"> <img src="pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png"/> </div><br>

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。

Expand All @@ -99,7 +101,7 @@ Creating a new branch is quick AND simple.
$ git merge --no-ff -m "merge with no-ff" dev
```

<div align="center"> <img src="pics/dd78a1fe-1ff3-4bcf-a56f-8c003995beb6.jpg"/> </div><br>
<div align="center"> <img src="pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png"/> </div><br>

# 分支管理策略

Expand Down
26 changes: 11 additions & 15 deletions docs/notes/HTTP.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@
* [多部分对象集合](#多部分对象集合)
* [虚拟主机](#虚拟主机)
* [通信数据转发](#通信数据转发)
* [六、HTTPs](#六https)
* [六、HTTPS](#六https)
* [加密](#加密)
* [认证](#认证)
* [完整性保护](#完整性保护)
* [HTTPs 的缺点](#https-的缺点)
* [HTTPS 的缺点](#https-的缺点)
* [七、HTTP/2.0](#七http20)
* [HTTP/1.x 缺陷](#http1x-缺陷)
* [二进制分帧层](#二进制分帧层)
Expand All @@ -63,11 +63,7 @@

URI 包含 URL 和 URN。

- URI(Uniform Resource Identifier,统一资源标识符)
- URL(Uniform Resource Locator,统一资源定位符)
- URN(Uniform Resource Name,统一资源名称)

<div align="center"> <img src="pics/1_2001550415765493.png" width="500px"> </div><br>
<div align="center"> <img src="pics/417cb02e-853d-4288-a36e-9161ded2c9fd_200.png" width="600px"> </div><br>

## 请求和响应报文

Expand Down Expand Up @@ -650,17 +646,17 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名,

使用 SSL 等加密手段,在客户端和服务器之间建立一条安全的通信线路。

# 六、HTTPs
# 六、HTTPS

HTTP 有以下安全性问题:

- 使用明文进行通信,内容可能会被窃听;
- 不验证通信方的身份,通信方的身份有可能遭遇伪装;
- 无法证明报文的完整性,报文有可能遭篡改。

HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPs 使用了隧道进行通信。
HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。

通过使用 SSL,HTTPs 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

<div align="center"> <img src="pics/ssl-offloading.jpg" width="700"/> </div><br>

Expand Down Expand Up @@ -688,9 +684,9 @@ HTTPs 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)

<div align="center"> <img src="pics/39ccb299-ee99-4dd1-b8b4-2f9ec9495cb4.png" width="600"/> </div><br>

### 3. HTTPs 采用的加密方式
### 3. HTTPS 采用的加密方式

HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥)
HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥)

<div align="center"> <img src="pics/How-HTTPS-Works.png" width="600"/> </div><br>

Expand All @@ -702,7 +698,7 @@ HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对

服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。

进行 HTTPs 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。
进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

<div align="center"> <img src="pics/2017-06-11-ca.png" width=""/> </div><br>

Expand All @@ -712,9 +708,9 @@ SSL 提供报文摘要功能来进行完整性保护。

HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

HTTPs 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。
HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

## HTTPs 的缺点
## HTTPS 的缺点

- 因为需要进行加密解密等过程,因此速度会更慢;
- 需要支付证书授权的高额费用。
Expand Down
2 changes: 1 addition & 1 deletion docs/notes/Java 虚拟机.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

# 一、运行时数据区域

<div align="center"> <img src="pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg"/> </div><br>
<div align="center"> <img src="pics/83e9c5ed-35a1-41fd-b0dd-ce571969b5f3_200.png" width="500px"> </div><br>

## 程序计数器

Expand Down
Loading