Skip to content

Commit fdbeca2

Browse files
authored
Merge pull request #1 from CyC2018/master
更新
2 parents 9107695 + 7665cac commit fdbeca2

File tree

598 files changed

+12095
-6271
lines changed

Some content is hidden

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

598 files changed

+12095
-6271
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.txt

README.md

+73-38
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1+
<!-- ![](https://img.shields.io/badge/update-today-blue.svg) ![](https://img.shields.io/badge/gitbook-making-lightgrey.svg)</br> -->
2+
|||||||||||
3+
| :--------: | :---------: | :---------: | :---------: | :---------: | :---------:| :---------: | :-------: | :-------:| :------:|
4+
|网络[:cloud:](#网络-cloud) |操作系统[:computer:](#操作系统-computer)| 算法[:pencil2:](#数据结构与算法-pencil2)| 面向对象[:couple:](#面向对象-couple) |数据库[:floppy_disk:](#数据库-floppy_disk)| Java [:coffee:](#java-coffee)| 分布式[:sweat_drops:](#分布式-sweat_drops)| 工具[:hammer:](#工具-hammer)| 编码实践[:speak_no_evil:](#编码实践-speak_no_evil)| 后记[:memo:](#后记-memo) |
5+
</br>
16

2-
<!-- <br>
3-
<div align="center">
4-
<img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics/handbook.png" alt="" width="225"/>
5-
<img src="https://img.shields.io/badge/update-today-blue.svg"/> <img src="https://img.shields.io/badge/gitbook-making-yellow.svg"/>
6-
</div>
7-
<br> -->
7+
:loudspeaker: 本仓库不参与商业行为,不向读者收取任何费用。
88

9-
<!-- <img src="https://github.com/CyC2018/InterviewNotes/blob/master/pics+/handbook.png" alt="" width="225"/> -->
10-
11-
<!-- ![](https://img.shields.io/badge/update-today-blue.svg) ![](https://img.shields.io/badge/gitbook-making-yellow.svg) -->
12-
13-
<!-- ![](https://img.shields.io/badge/gitbook-making-green.svg) ![](https://img.shields.io/badge/update-today-blue.svg) -->
14-
15-
![](https://img.shields.io/badge/update-today-blue.svg) ![](https://img.shields.io/badge/gitbook-making-lightgrey.svg)
9+
:loudspeaker: This repository is not engaging in business activities, and does not charge readers any fee.
10+
</br></br>
1611

1712
## 网络 :cloud:
1813

@@ -38,15 +33,15 @@
3833

3934
> [算法](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/算法.md)
4035
41-
整理自《算法 第四版》,主要整理了面试常问的排序和查找算法。
36+
整理自《算法 第四版》
4237

4338
> [剑指 Offer 题解](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/剑指%20offer%20题解.md)
4439
4540
《剑指 Offer 第二版》的最优解,在牛客网在线编程中出现的题目都已 AC。
4641

4742
> [Leetcode 题解](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Leetcode%20题解.md)
4843
49-
对题目做了一个分类,并对每种题型的解题思路做了总结。已经整理了 300+ 的题目,基本涵盖所有经典题目。
44+
对题目做了一个分类,并对每种题型的解题思路做了总结。
5045

5146
## 面向对象 :couple:
5247

@@ -56,27 +51,31 @@
5651

5752
> [面向对象思想](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/面向对象思想.md)
5853
59-
一些面向对象思想和原则
54+
一些面向对象思想和设计原则
6055

6156
## 数据库 :floppy_disk:
6257

6358
> [数据库系统原理](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/数据库系统原理.md)
6459
6560
整理自《数据库系统概论 第四版》
6661

67-
> [SQL 语法](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/SQL%20语法.md)
62+
> [SQL](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/SQL.md)
6863
6964
整理自《SQL 必知必会》
7065

7166
> [MySQL](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/MySQL.md)
7267
73-
整理自《高性能 MySQL》,整理了一些重点内容。
68+
整理自《高性能 MySQL》
69+
70+
> [Redis](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Redis.md)
71+
72+
整理自《Redis 设计与实现》和《Redis 实战》
7473

7574
## Java :coffee:
7675

77-
> [JVM](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/JVM.md)
76+
> [Java 虚拟机](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20虚拟机.md)
7877
79-
整理自《深入理解 Java 虚拟机》,主要整理了内存模型、垃圾回收以及类加载机制。
78+
整理自《深入理解 Java 虚拟机》
8079

8180
> [Java 并发](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20并发.md)
8281
@@ -86,15 +85,44 @@
8685
8786
容器的一些总结,包含容器源码的分析。
8887

89-
> [Java IO](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20IO.md)
88+
> [Java I/O](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20IO.md)
9089
91-
FileInputStream OutputStreamReader WriterSerializableSocketNIO
90+
File, InputStream OutputStream, Reader Writer, Serializable, Socket, NIO
9291

9392
> [Java 基础](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20基础.md)
9493
9594
整理了一些常见考点。
9695

97-
## 编码实践 :hammer:
96+
> [JDK 中的设计模式](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/JDK%20中的设计模式.md)
97+
98+
对每种设计模式做了一个总结,并给出在 JDK 中的使用实例。
99+
100+
## 分布式 :sweat_drops:
101+
102+
> [分布式基础](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/分布式基础.md)
103+
104+
整理自《大规模分布式存储系统》
105+
106+
> [一致性协议](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/一致性协议.md)
107+
108+
两阶段提交、Paxos、Raft、拜占庭将军问题。
109+
110+
> [分布式问题分析](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/分布式问题分析.md)
111+
112+
分布式事务、负载均衡算法与实现、分布式锁、分布式 Session、分库分表的分布式困境与应对之策。
113+
114+
115+
## 工具 :hammer:
116+
117+
> [Git](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Git.md)
118+
119+
整理一些 Git 的使用和概念。
120+
121+
> [正则表达式](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/正则表达式.md)
122+
123+
整理自《正则表达式必知必会》
124+
125+
## 编码实践 :speak_no_evil:
98126

99127
> [重构](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/重构.md)
100128
@@ -108,33 +136,40 @@ File、InputStream OutputStream、Reader Writer、Serializable、Socket、NIO
108136
109137
Google 开源项目的代码风格规范。
110138

111-
<!-- ## 资料下载 :arrow_down:
139+
## 后记 :memo:
112140

113-
> [百度网盘](https://pan.baidu.com/s/1o9oD1s2#list/path=%2F)
141+
**关于仓库**
114142

115-
一些 PDF 书籍 -->
143+
本仓库是笔者在准备 2018 年春招实习过程中的学习总结,内容以计算机书籍的学习笔记为主,在整理重点知识的同时会尽量保证知识的系统性。
116144

117-
## 后记 :memo:
145+
**关于贡献**
146+
147+
因为大部分内容是笔者一个字一个字打上去的,所有难免会有一些笔误。如果发现,可以直接在相应的文档上编辑修改。
148+
149+
笔者能力有限,很多内容还不够完善。如果您希望和笔者一起完善这个仓库,可以在发表一个 Issue,表明您想要添加的内容,笔者会及时查看。
150+
151+
因为不打算将这个仓库做成一个大而全的面试宝典,只希望添加一些比较通用的基础知识,或者是与 Java 和分布式相关的内容,但是不添加 Java Web 相关的内容。
152+
153+
您也可以在 Issues 中发表关于改进本仓库的建议。
118154

119-
网上有很多相关的资料,但是这些资料都比较零散。本仓库的笔记是从经典的书籍和材料中整理而来,在整理出重点的同时会尽可能保证知识的系统性,因此比较适合作为应对面试的学习资料。
155+
**关于上传**
120156

121-
笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/#%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%9C%B0%E9%81%93%E7%9A%84%E7%BC%A9%E5%86%99) 进行排版,以保证内容的可读性。这里提供了本人实现的 Markdown 文档排版工具的下载:[Markdown-Typesetting](https://github.com/CyC2018/Markdown-Typesetting)
157+
笔者在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步
122158

123-
由于 Github 使用的 GFM 不支持 MathJax 公式,也不支持 TOC 标记,为了把本地的 Markdown 文档转换为 GFM 支持的格式,需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。并且为了让图片显示效果更好,笔记内容基本使用了 &lt;center> 标记来让图片居中显示,但是 GFM 却不支持 &lt;center> 标记,因此也需要进行一定的转换。这里提供了本人实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)
159+
进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)
124160

125-
因为大部分内容是一个字一个字打上去的,难免会有一些笔误,如果发现,可以直接在相应的文档上编辑修改。
161+
**关于排版**
126162

127-
如果觉得内容不够完善或者有写的不好的地方,您可以在 Issues 中发表反馈意见
163+
笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/#%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%9C%B0%E9%81%93%E7%9A%84%E7%BC%A9%E5%86%99) 进行排版,以保证内容的可读性。这里提供了笔者实现的中英混排文档在线排版工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting),目前实现了加空格的功能,之后打算实现对英文专有名词提示首字母大写的功能
128164

129-
笔记内容可供个人随意使用,转载或者引用请注明出处,毕竟写了很长时间没那么轻松~
165+
不使用 `![]()` 这种方式来引用图片是为了能够控制图片以合适的大小显示。而且 GFM 不支持 `<center> ![]() </center>` 让图片居中显示,只能使用 `<div align="center"> <img src=""/> </div>` ,所以只能使用 img 标签来引用图片。
130166

131-
## Donate
167+
**关于转载**
132168

133-
[Alipay](https://github.com/CyC2018/InterviewNotes/blob/master/other/alipay.md)
169+
本仓库内容使用到的资料都会在最后面的参考资料中给出引用链接,希望您在使用本仓库的内容时也能给出相应的引用链接。
134170

135-
## License
171+
**鸣谢**
136172

137-
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/cn/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/3.0/cn/88x31.png" /></a>
173+
[TeeKee](https://github.com/linw7)
138174

139-
本作品采用 <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/cn/">知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议</a> 进行许可。
140175

notes/Git.md

+158
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
<!-- GFM-TOC -->
2+
* [学习资料](#学习资料)
3+
* [集中式与分布式](#集中式与分布式)
4+
* [Git 的中心服务器](#git-的中心服务器)
5+
* [Git 工作流](#git-工作流)
6+
* [分支实现](#分支实现)
7+
* [冲突](#冲突)
8+
* [Fast forward](#fast-forward)
9+
* [分支管理策略](#分支管理策略)
10+
* [储藏(Stashing)](#储藏stashing)
11+
* [SSH 传输设置](#ssh-传输设置)
12+
* [.gitignore 文件](#gitignore-文件)
13+
* [Git 命令一览](#git-命令一览)
14+
<!-- GFM-TOC -->
15+
16+
17+
# 学习资料
18+
19+
- [Git - 简明指南](http://rogerdudler.github.io/git-guide/index.zh.html)
20+
- [图解 Git](http://marklodato.github.io/visual-git-guide/index-zh-cn.html)
21+
- [廖雪峰 : Git 教程](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)
22+
- [Learn Git Branching](https://learngitbranching.js.org/)
23+
24+
# 集中式与分布式
25+
26+
Git 属于分布式版本控制系统,而 SVN 属于集中式。
27+
28+
集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
29+
30+
集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。
31+
32+
集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件的会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。
33+
34+
分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一个分支相当于复制一份完整代码。
35+
36+
# Git 的中心服务器
37+
38+
Git 的中心服务器用来交换每个用户的修改。没有中心服务器也能工作,但是中心服务器能够 24 小时保持开机状态,这样就能更方便的交换修改。Github 就是一种 Git 中心服务器。
39+
40+
# Git 工作流
41+
42+
<div align="center"> <img src="../pics//a1198642-9159-4d88-8aec-c3b04e7a2563.jpg"/> </div><br>
43+
44+
新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。
45+
46+
Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针。
47+
48+
<div align="center"> <img src="../pics//46f66e88-e65a-4ad0-a060-3c63fe22947c.png"/> </div><br>
49+
50+
- git add files 把文件的修改添加到暂存区
51+
- git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了
52+
- git reset -- files 使用当前分支上的修改覆盖暂缓区,用来撤销最后一次 git add files
53+
- git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改
54+
55+
<div align="center"> <img src="../pics//17976404-95f5-480e-9cb4-250e6aa1d55f.png"/> </div><br>
56+
57+
可以跳过暂存区域直接从分支中取出修改或者直接提交修改到分支中
58+
59+
- git commit -a 直接把所有文件的修改添加到暂缓区然后执行提交
60+
- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作
61+
62+
# 分支实现
63+
64+
Git 把每次提交都连成一条时间线。分支使用指针来实现,例如 master 分支指针指向时间线的最后一个节点,也就是最后一次提交。HEAD 指针指向的是当前分支。
65+
66+
<div align="center"> <img src="../pics//fb546e12-e1fb-4b72-a1fb-8a7f5000dce6.jpg"/> </div><br>
67+
68+
新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支表示新分支成为当前分支。
69+
70+
<div align="center"> <img src="../pics//bc775758-89ab-4805-9f9c-78b8739cf780.jpg"/> </div><br>
71+
72+
每次提交只会让当前分支向前移动,而其它分支不会移动。
73+
74+
<div align="center"> <img src="../pics//5292faa6-0141-4638-bf0f-bb95b081dcba.jpg"/> </div><br>
75+
76+
合并分支也只需要改变指针即可。
77+
78+
<div align="center"> <img src="../pics//1164a71f-413d-494a-9cc8-679fb6a2613d.jpg"/> </div><br>
79+
80+
# 冲突
81+
82+
当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。
83+
84+
<div align="center"> <img src="../pics//58e57a21-6b6b-40b6-af85-956dd4e0f55a.jpg"/> </div><br>
85+
86+
Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。
87+
88+
```
89+
<<<<<<< HEAD
90+
Creating a new branch is quick & simple.
91+
=======
92+
Creating a new branch is quick AND simple.
93+
>>>>>>> feature1
94+
```
95+
96+
# Fast forward
97+
98+
"快进式合并"(fast-farward merge),会直接将 master 分支指向合并的分支,这种模式下进行分支合并会丢失分支信息,也就不能在分支历史上看出分支信息。
99+
100+
可以在合并时加上 --no-ff 参数来禁用 Fast forward 模式,并且加上 -m 参数让合并时产生一个新的 commit。
101+
102+
```
103+
$ git merge --no-ff -m "merge with no-ff" dev
104+
```
105+
106+
<div align="center"> <img src="../pics//dd78a1fe-1ff3-4bcf-a56f-8c003995beb6.jpg"/> </div><br>
107+
108+
# 分支管理策略
109+
110+
master 分支应该是非常稳定的,只用来发布新版本;
111+
112+
日常开发在开发分支 dev 上进行。
113+
114+
<div align="center"> <img src="../pics//245fd2fb-209c-4ad5-bc5e-eb5664966a0e.jpg"/> </div><br>
115+
116+
# 储藏(Stashing)
117+
118+
在一个分支上操作之后,如果还没有将修改提交到分支上,此时进行切换分支,那么另一个分支上也能看到新的修改。这是因为所有分支都共用一个工作区的缘故。
119+
120+
可以使用 git stash 将当前分支的修改储藏起来,此时当前工作区的所有修改都会被存到栈上,也就是说当前工作区是干净的,没有任何未提交的修改。此时就可以安全的切换到其它分支上了。
121+
122+
```
123+
$ git stash
124+
Saved working directory and index state \ "WIP on master: 049d078 added the index file"
125+
HEAD is now at 049d078 added the index file (To restore them type "git stash apply")
126+
```
127+
128+
该功能可以用于 bug 分支的实现。如果当前正在 dev 分支上进行开发,但是此时 master 上有个 bug 需要修复,但是 dev 分支上的开发还未完成,不想立即提交。在新建 bug 分支并切换到 bug 分支之前就需要使用 git stash 将 dev 分支的未提交修改储藏起来。
129+
130+
# SSH 传输设置
131+
132+
Git 仓库和 Github 中心仓库之间是通过 SSH 加密。
133+
134+
如果工作区下没有 .ssh 目录,或者该目录下没有 id_rsa 和 id_rsa.pub 这两个文件,可以通过以下命令来创建 SSH Key:
135+
136+
```
137+
$ ssh-keygen -t rsa -C "[email protected]"
138+
```
139+
140+
然后把公钥 id_rsa.pub 的内容复制到 Github "Account settings" 的 SSH Keys 中。
141+
142+
# .gitignore 文件
143+
144+
忽略以下文件:
145+
146+
1. 操作系统自动生成的文件,比如缩略图;
147+
2. 编译生成的中间文件,比如 Java 编译产生的 .class 文件;
148+
3. 自己的敏感信息,比如存放口令的配置文件。
149+
150+
不需要全部自己编写,可以到 [https://github.com/github/gitignore](https://github.com/github/gitignore) 中进行查询。
151+
152+
# Git 命令一览
153+
154+
<div align="center"> <img src="../pics//7a29acce-f243-4914-9f00-f2988c528412.jpg"/> </div><br>
155+
156+
比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf
157+
158+

0 commit comments

Comments
 (0)