An open API service indexing awesome lists of open source software.

https://github.com/sjsdfg/cs-notes-pdf

https://github.com/CyC2018/CS-Notes PDF版本离线阅读
https://github.com/sjsdfg/cs-notes-pdf

coding-interviews

Last synced: 26 days ago
JSON representation

https://github.com/CyC2018/CS-Notes PDF版本离线阅读

Awesome Lists containing this project

README

        

# CS-Notes-PDF

用于提供 https://github.com/CyC2018/CS-Notes 项目的离线阅读

**pdf 使用 cmd-markdown 的付费工具手工进行 pdf 的转换。**

原作者已经制作好 gitbook 地址:https://legacy.gitbook.com/book/cyc2018/interview-notebook/details

~~**那么为什么还需要本仓库?**
我个人认为**cmd-markdown 工具所转化的 pdf**相比 gitbook 直接生成的 pdf 拥有**更好的阅读体验!**~~

项目不更新了。原有 repo 已经开始提供自制 pdf 功能了。
而且现在原有 repo 把很多文件都拆开了(也打上了自己公众号的信息),对我更新仓库来说太麻烦了。

# 额外资料推荐

- 新增[机器学习小抄 ](https://pan.baidu.com/s/1XvwRLqgAnUtMqjNsJT-wTQ), 文件较大,已放在百度云盘。不过 README 一般也没啥人看,就当个小彩蛋?
- 新增[深度学习 500 问 ](https://github.com/scutan90/DeepLearning-500-questions)
- [100-Days-Of-ML-Code 中文版 ](https://github.com/MLEveryday/100-Days-Of-ML-Code)
- [阿里 Java 手册 1.4.0 版本 ](https://pan.baidu.com/s/1le0nvGP6GIpnczOZldrBGQ)
- [计算机网络-自顶向下 第七版英文原版 ](https://pan.baidu.com/s/1VPzcjXc0TR1SPIkexM1YTw)
- [用动画的形式呈现解LeetCode题目的思路](https://github.com/MisterBooo/LeetCodeAnimation)
- [effective-java 第三版中文开源翻译](https://github.com/sjsdfg/effective-java-3rd-chinese)
- [深入理解操作系统 第三版英文版原版-CSAPP 3rd](https://pan.baidu.com/s/1yJLb6EHRa0bjka7ryfr6mw)
- [【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频](https://www.bilibili.com/video/av31289365)
- [《机器学习》(西瓜书)公式推导解析](https://github.com/datawhalechina/pumpkin-book)
- [Treen Pool](http://treenpool.com/#/home):知识体系分享网站(脑图分享)
- [从程序员到CTO,从专业走向卓越,企业内部分享文档pdf与PPT整理](https://github.com/0voice/from_coder_to_expert)

# 简历

- [冷熊简历](http://cv.ftqq.com/)
- [简历模板](https://github.com/geekcompany/ResumeSample)

# 电子书索引区

- https://github.com/royeo/awesome-programming-books
- https://salttiger.com/
- https://www.foxebook.net/
- https://www.jiumodiary.com/
- [免费优质电子书下载](https://epubw.com/)
- http://www.allitebooks.org/
- http://www.dcsdn.com/

# 绘图工具

- [cloudcraft](https://cloudcraft.co/):Visualize your cloud architecture like a pro.

---

分割线

以下就可耻的抄袭原有仓库的内容介绍吧

| Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ | Ⅹ |
| :--------: | :---------: | :---------: | :---------: | :---------: | :---------:| :---------: | :-------: | :-------:| :------:|
| 算法[: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) |

### :pencil2: 算法

- [剑指 Offer 题解](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/剑指%20offer%20题解.md)
- [Leetcode 题解](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode%20题解.md)
- [算法](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/算法.md)

### :computer: 操作系统

- [计算机操作系统](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机操作系统.md)
- [Linux](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Linux.md)

### :cloud: 网络

- [计算机网络](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/计算机网络.md)
- [HTTP](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/HTTP.md)
- [Socket](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Socket.md)

### :couple: 面向对象

- [设计模式](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/设计模式.md)
- [面向对象思想](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/面向对象思想.md)

### :floppy_disk: 数据库

- [数据库系统原理](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/数据库系统原理.md)
- [SQL](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/SQL.md)
- [Leetcode-Database 题解](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode-Database%20题解.md)
- [MySQL](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/MySQL.md)
- [Redis](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Redis.md)

### :coffee: Java

- [Java 基础](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Java%20基础.md)
- [Java 容器](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Java%20容器.md)
- [Java 并发](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Java%20并发.md)
- [Java 虚拟机](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Java%20虚拟机.md)
- [Java I/O](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Java%20IO.md)

### :bulb: 系统设计

- [系统设计基础](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/系统设计基础.md)
- [分布式](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/分布式.md)
- [集群](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/集群.md)
- [攻击技术](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/攻击技术.md)
- [缓存](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/缓存.md)
- [消息队列](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/消息队列.md)

### :hammer: 工具

- [Git](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Git.md)
- [Docker](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Docker.md)
- [构建工具](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/构建工具.md)
- [正则表达式](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/正则表达式.md)

### :speak_no_evil: 编码实践

- [代码可读性](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/代码可读性.md)
- [代码风格规范](https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/代码风格规范.md)

## Java Programer Suggestion

在 Java 中除了最为基础的东西之外,你只要看三样东西就可以了:

Java 中有三大支柱,在 java.util.concurrent、java.security、javax.cropty、javax.security 四个包中就占了两个(多线程、安全)

还有一个网络在 java.net、javax.net 中,呵呵

掌握了上面 6 个包及其子包中内容的话,那 Java 水平可以说达到了另一种境界。

PS:三大支柱是我之前给 Java 中多线程、网络和安全取的代号,嘿嘿

这三样中的东西非常多,基本上就是 Java 的核心所在。

**多线程(multi-threading and concurrent)**

1. 关键词:volatile, sychronized
2. 传统的线程 API:java.lang.Thread, java.lang.Runnable, java.lang.ThreadGroup, Object#wait, Object#notify, Object#notifyAll
3. JDK 5 并发包(java.util.concurrent)API:线程池、任务执行器、计数信号量、倒计数门闩、并发集合(并发 Map、阻塞队列等)、基于 CPU CAS 指令的原子 API(java.util.concurrent.atomic)、锁 API(java.util.concurrent.lock)和条件对象等。
4. 作为个人知识提升,还需要理解诸如自旋锁、分离锁、分拆锁、读写锁等的同步锁策略,以及可重入锁、锁的公平性的意义。以及各种并发锁的算法,比如:Peterson锁、Bakery锁 等等,以及现代 CPU 体系结构

涉及多线程及并发的 API 在 java.lang 中及 java.util.concurrent.* 中。

**网络(network communication)**

1. 阻塞 TCP 通信、阻塞 UDP 通信、组播
2. 非阻塞 TCP 通信、非阻塞 UDP 通信
3. 客户端通信 API(java.net.URL, java.net.URLConnection 等类库)

涉及网络通信的 API 都在 java.net 和 java.nio.channels 包中。这里的网络已经将 RMI 相关包 java.rmi, javax.rmi 都排除了。

**安全(security, cryptography and AAA)**

1. Java 加密类库 JCA
2. Java 加密类库扩展 JCE
3. 涉及密码学知识点的消息摘要、消息认证码、对称加密、非对称加密、数字签名
4. 涉及网络通信证书管理工具(keytool)及 API(PKI、X.509证书)
5. 基于 SSL/TLS 的安全网络通信 API(JSSE),包括:密钥库管理、信任库管理、阻塞 SSL 通信和非阻塞 SSL 通信等等
6. Java 认证及授权服务(JAAS)API

涉及安全的东西都在:

- java.security(JCA、JCE、数字证书,以及 JCE 的 SPI)
- javax.net(SSL/TLS)
- javax.security(JAAS)
- javax.crypto(密码学)
- keytool 的 JDK 工具

---

# 文档转换步骤

## 1. 删除目录
```

***

```

## 2. 字符串替换

### 2.1 图像路径替换

对于所有的图片地址进行替换

例如:

`src="../pics//f5757d09-88e7-4bbd-8cfb-cecf55604854.png"`

替换为

`src="https://github.com/CyC2018/Interview-Notebook/raw/master/pics/f5757d09-88e7-4bbd-8cfb-cecf55604854.png"`

### 2.2 图像宽度替换

所有的`width=""`都需要删除
使用正则表达式 `width="[0-9]*"`进行替换

### 2.3 公式替换
所有公式需要替换为遵守 `MathJax`语法,代码为

```
public static void main(String[] args) {
// 使用最小匹配
String templete = "";
Pattern pattern = Pattern.compile(templete);
String testStr = "为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 有";

Matcher matcher = pattern.matcher(testStr);

while (matcher.find()) {
String str = matcher.group(0);
System.out.println(str);

String newStr = str.substring(str.indexOf("?") + 1, str.length() - 3);
System.out.println("$" + newStr + "$");

testStr = testStr.replace(str, "$" + newStr + "$");
}

System.out.println(testStr);

}
```