Skip to content

Commit a212611

Browse files
authored
Merge pull request #8 from CyC2018/master
merge
2 parents e065982 + 673c9aa commit a212611

File tree

12 files changed

+95
-128
lines changed

12 files changed

+95
-128
lines changed

README.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
|||||||||||
22
| :--------: | :---------: | :---------: | :---------: | :---------: | :---------:| :---------: | :-------: | :-------:| :------:|
3-
| 算法[:pencil2:](#算法-pencil2) | 操作系统[:computer:](#操作系统-computer)|网络[:cloud:](#网络-cloud) | 面向对象[:couple:](#面向对象-couple) |数据库[:floppy_disk:](#数据库-floppy_disk)| Java [:coffee:](#java-coffee)| 系统设计[:bulb:](#系统设计-bulb)| 工具[:hammer:](#工具-hammer)| 编码实践[:speak_no_evil:](#编码实践-speak_no_evil)| 后记[:memo:](#后记-memo) |
3+
| 算法[:pencil2:](#pencil2-算法) | 操作系统[:computer:](#computer-操作系统)|网络[:cloud:](#cloud-网络) | 面向对象[:couple:](#couple-面向对象) |数据库[:floppy_disk:](#floppy_disk-数据库)| Java [:coffee:](#coffee-java)| 系统设计[:bulb:](#bulb-系统设计)| 工具[:hammer:](#hammer-工具)| 编码实践[:speak_no_evil:](#speak_no_evil-编码实践)| 后记[:memo:](#memo-后记) |
44

55
<br>
66
<div align="center">
@@ -11,7 +11,7 @@
1111

1212
<!-- [![](https://img.shields.io/badge/>-gitter-blue.svg)](https://gitter.im/CyC2018-Interview-Notebook/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link) [![](https://img.shields.io/badge/_-gitbook-4ab8a1.svg)](https://legacy.gitbook.com/book/cyc2018/interview-notebook/details) -->
1313

14-
## 算法 :pencil2:
14+
## :pencil2: 算法
1515

1616
- [剑指 Offer 题解](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/剑指%20offer%20题解.md)
1717

@@ -25,7 +25,7 @@
2525

2626
排序、并查集、栈和队列、红黑树、散列表。
2727

28-
## 操作系统 :computer:
28+
## :computer: 操作系统
2929

3030
- [计算机操作系统](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/计算机操作系统.md)
3131

@@ -35,7 +35,7 @@
3535

3636
基本实现原理以及基本操作。
3737

38-
## 网络 :cloud:
38+
## :cloud: 网络
3939

4040
- [计算机网络](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/计算机网络.md)
4141

@@ -49,7 +49,7 @@
4949

5050
I/O 模型、I/O 多路复用。
5151

52-
## 面向对象 :couple:
52+
## :couple: 面向对象
5353

5454
- [设计模式](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/设计模式.md)
5555

@@ -59,7 +59,7 @@
5959

6060
三大原则(继承、封装、多态)、类图、设计原则。
6161

62-
## 数据库 :floppy_disk:
62+
## :floppy_disk: 数据库
6363

6464
- [数据库系统原理](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/数据库系统原理.md)
6565

@@ -81,7 +81,7 @@
8181

8282
五种数据类型、字典和跳跃表数据结构、使用场景、和 Memcache 的比较、淘汰策略、持久化、文件事件的 Reactor 模式、复制。
8383

84-
## Java :coffee:
84+
## :coffee: Java
8585

8686
- [Java 基础](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20基础.md)
8787

@@ -103,7 +103,7 @@
103103

104104
NIO 的原理以及实例。
105105

106-
## 系统设计 :bulb:
106+
## :bulb: 系统设计
107107

108108
- [系统设计基础](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/系统设计基础.md)
109109

@@ -129,7 +129,7 @@
129129

130130
消息处理模型、使用场景、可靠性
131131

132-
## 工具 :hammer:
132+
## :hammer: 工具
133133

134134
- [Git](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Git.md)
135135

@@ -147,7 +147,7 @@
147147

148148
构建工具的基本概念、主流构建工具介绍。
149149

150-
## 编码实践 :speak_no_evil:
150+
## :speak_no_evil: 编码实践
151151

152152
- [重构](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/重构.md)
153153

@@ -161,7 +161,7 @@
161161

162162
Google 开源项目的代码风格规范。
163163

164-
## 后记 :memo:
164+
## :memo: 后记
165165

166166
### About
167167

@@ -195,12 +195,6 @@
195195

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

198-
### License
199-
200-
在对本作品进行演绎时,请署名并以相同方式共享。
201-
202-
<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>
203-
204198
### Statement
205199

206200
本仓库不参与商业行为,不向读者收取任何费用。(This repository is not engaging in business activities, and does not charge readers any fee.)
@@ -235,5 +229,9 @@ Power by [logomakr](https://logomakr.com/).
235229
<img src="other/10072416.jpg" width="50px">
236230
</a>
237231

232+
### License
238233

234+
在对本作品进行演绎时,请署名并以相同方式共享。
235+
236+
<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>
239237

notes/Docker.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程
3030

3131
## 启动速度
3232

33-
启动虚拟机需要启动虚拟机的操作系统,再启动相应的应用,这个过程会非常慢
33+
启动虚拟机需要启动虚拟机的操作系统,再启动应用,这个过程非常慢
3434

3535
而启动 Docker 相当于启动宿主操作系统上的一个进程。
3636

3737
## 占用资源
3838

39-
虚拟机是一个完整的操作系统,需要占用大量的磁盘空间、内存和 CPU,一台机器只能开启几十个的虚拟机。
39+
虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和 CPU,一台机器只能开启几十个的虚拟机。
4040

41-
而 Docker 只是一个进程,只需要将应用以及相应的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker。
41+
而 Docker 只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker。
4242

4343
参考资料:
4444

@@ -58,7 +58,7 @@ Docker 使用分层技术和镜像,使得应用可以更容易复用重复部
5858

5959
## 更容易扩展
6060

61-
可以使用基础镜像进一步扩展得到新的镜像,并且官方和开源社区提供了大量的镜像,通过扩展这些镜像得到我们想要的镜像非常容易
61+
可以使用基础镜像进一步扩展得到新的镜像,并且官方和开源社区提供了大量的镜像,通过扩展这些镜像可以非常容易得到我们想要的镜像
6262

6363
参考资料:
6464

@@ -91,7 +91,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服
9191

9292
镜像包含着容器运行时所需要的代码以及其它组件,它是一种分层结构,每一层都是只读的(read-only layers)。构建镜像时,会一层一层构建,前一层是后一层的基础。镜像的这种分层存储结构很适合镜像的复用以及定制。
9393

94-
在构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。
94+
构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。
9595

9696
<div align="center"> <img src="../pics//docker-filesystems-busyboxrw.png"/> </div><br>
9797

@@ -100,3 +100,4 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服
100100
- [How to Create Docker Container using Dockerfile](https://linoxide.com/linux-how-to/dockerfile-create-docker-container/)
101101
- [理解 Docker(2):Docker 镜像](http://www.cnblogs.com/sammyliu/p/5877964.html)
102102

103+

notes/Java 基础.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ public class EqualExample {
707707

708708
## hashCode()
709709

710-
hasCode() 返回散列值,而 equals() 是用来判断两个对象是否等价。等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价。
710+
hashCode() 返回散列值,而 equals() 是用来判断两个对象是否等价。等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价。
711711

712712
在覆盖 equals() 方法时应当总是覆盖 hashCode() 方法,保证等价的两个对象散列值也相等。
713713

notes/Java 并发.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,7 @@ public static void main(String[] args) {
184184
mt.start();
185185
}
186186
```
187-
## 三种实现方式的比较
188-
- 实现Runnable接又可以避免Java单继承特性而带来的局限;增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;适合多个相同程序代码的线程区处理同一资源的情况。
189-
- 继承Thread类和实现Runnable方法启动线 程都是使用start方法,然后JVM虚拟机将此线程放到就绪队列中,如果有处理机可用, 则执行run方法。
190-
- 实现Callable接又要实现call方法,并且线 程执行完毕后会有返回值。其他的两种都是 重写run方法,没有返回值。
187+
191188
## 实现接口 VS 继承 Thread
192189

193190
实现接口会更好一些,因为:
@@ -1023,7 +1020,7 @@ ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线
10231020

10241021
如果多个线程对同一个共享数据进行访问而不采取同步操作的话,那么操作的结果是不一致的。
10251022

1026-
以下代码演示了 1000 个线程同时对 cnt 执行自增操作,操作结束之后它的值为 997 而不是 1000。
1023+
以下代码演示了 1000 个线程同时对 cnt 执行自增操作,操作结束之后它的值有可能小于 1000。
10271024

10281025
```java
10291026
public class ThreadUnsafeExample {

notes/Leetcode 题解.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3602,7 +3602,7 @@ public int countPrimes(int n) {
36023602

36033603
```java
36043604
int gcd(int a, int b) {
3605-
return b == 0 ? a : gcd(b, a% b);
3605+
return b == 0 ? a : gcd(b, a % b);
36063606
}
36073607
```
36083608

@@ -3673,7 +3673,7 @@ public String convertToBase7(int num) {
36733673
}
36743674
```
36753675

3676-
Java 中 static String toString(int num, int radix) 可以将一个整数转换为 redix 进制表示的字符串。
3676+
Java 中 static String toString(int num, int radix) 可以将一个整数转换为 radix 进制表示的字符串。
36773677

36783678
```java
36793679
public String convertToBase7(int num) {
@@ -6403,7 +6403,6 @@ public int maxChunksToSorted(int[] arr) {
64036403
}
64046404
```
64056405

6406-
64076406
##
64086407

64096408
### 二分图
@@ -6620,6 +6619,7 @@ public int[] findRedundantConnection(int[][] edges) {
66206619
}
66216620

66226621
private class UF {
6622+
66236623
private int[] id;
66246624

66256625
UF(int N) {
@@ -6665,7 +6665,7 @@ x ^ x = 0 x & x = x x | x = x
66656665
```
66666666

66676667
- 利用 x ^ 1s = \~x 的特点,可以将位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数。
6668-
- 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask :00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位。
6668+
- 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask:00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位。
66696669
- 利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设值操作。一个数 num 与 mask:00111100 进行位或操作,将 num 中与 mask 的 1 部分相对应的位都设置为 1。
66706670

66716671
位与运算技巧:
@@ -6910,7 +6910,6 @@ public boolean isPowerOfFour(int num) {
69106910
}
69116911
```
69126912

6913-
69146913
**判断一个数的位级表示是否不会出现连续的 0 和 1**
69156914

69166915
[693. Binary Number with Alternating Bits (Easy)](https://leetcode.com/problems/binary-number-with-alternating-bits/description/)

0 commit comments

Comments
 (0)