# CS-Notes-PDF **Repository Path**: pseudo/CS-Notes-PDF ## Basic Information - **Project Name**: CS-Notes-PDF - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2021-02-15 - **Last Updated**: 2021-02-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## 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 拥有**更好的阅读体验!** # 额外资料推荐 - 新增[机器学习小抄 ](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) - [深入理解操作系统 第三版英文版原版-CSAPP 3rd](https://pan.baidu.com/s/1yJLb6EHRa0bjka7ryfr6mw)
--- 分割线 以下就可耻的抄袭原有仓库的内容介绍吧 | Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ | Ⅹ | | :--------: | :---------: | :---------: | :---------: | :---------: | :---------:| :---------: | :-------: | :-------:| :------:| | 算法[: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/InnterviewNotes/blob/master/notes/剑指%20offer%20题解.md) 目录根据原书第二版进行编排,代码和原书有所不同,尽量比原书更简洁。 > [Leetcode 题解 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Leetcode%20题解.md) 对题目做了一个大致分类,并对每种题型的解题思路做了总结。 > [算法 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/算法.md) 排序、并查集、栈和队列、红黑树、散列表。 ## 操作系统 :computer: > [计算机操作系统 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/计算机操作系统.md) 进程管理、内存管理、设备管理、链接。 > [Linux](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Linux.md) 基本实现原理以及基本操作。 ## 网络 :cloud: > [计算机网络 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/计算机网络.md) 物理层、链路层、网络层、运输层、应用层。 > [HTTP](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/HTTP.md) 方法、状态码、Cookie、缓存、连接管理、HTTPs、HTTP 2.0。 > [Socket](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Socket.md) I/O 模型、I/O 多路复用。 ## 面向对象 :couple: > [设计模式 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/设计模式.md) 实现了 Gof 的 23 种设计模式。 > [面向对象思想 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/面向对象思想.md) 三大原则(继承、封装、多态)、类图、设计原则。 ## 数据库 :floppy_disk: > [数据库系统原理 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/数据库系统原理.md) 事务、锁、隔离级别、MVCC、间隙锁、范式。 > [SQL](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/SQL.md) SQL 基本语法。 > [Leetcode-Database 题解 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Leetcode-Database%20题解.md) Leetcode 上数据库题目的解题记录。 > [MySQL](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/MySQL.md) 存储引擎、索引、查询优化、切分、复制。 > [Redis](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Redis.md) 五种数据类型、字典和跳跃表数据结构、使用场景、和 Memcache 的比较、淘汰策略、持久化、文件事件的 Reactor 模式、复制。 ## Java :coffee: > [Java 基础 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20基础.md) 不会涉及很多基本语法介绍,主要是一些实现原理以及关键特性。 > [Java 容器 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20容器.md) 源码分析:ArrayList、Vector、CopyOnWriteArrayList、LinkedList、HashMap、ConcurrentHashMap、LinkedHashMap、WeekHashMap。 > [Java 并发 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20并发.md) 线程使用方式、两种互斥同步方法、线程协作、JUC、线程安全、内存模型、锁优化。 > [Java 虚拟机 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20虚拟机.md) 运行时数据区域、垃圾收集、类加载。 > [Java I/O](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Java%20IO.md) NIO 的原理以及实例。 ## 系统设计 :bulb: > [系统设计基础 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/系统设计基础.md) 性能、伸缩性、扩展性、可用性、安全性 > [分布式 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/分布式.md) 分布式锁、分布式事务、CAP、BASE、Paxos、Raft > [集群 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/集群.md) 负载均衡、Session 管理 > [攻击技术 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/攻击技术.md) XSS、CSRF、SQL 注入、DDoS > [缓存 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/缓存.md) 缓存特征、缓存位置、缓存问题、数据分布、一致性哈希、LRU、CDN > [消息队列 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/消息队列.md) 消息处理模型、使用场景、可靠性 ## 工具 :hammer: > [Git](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Git.md) 一些 Git 的使用和概念。 > [Docker](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/Docker.md) Docker 基本原理。 > [正则表达式 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/正则表达式.md) 正则表达式基本语法。 > [构建工具 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/构建工具.md) 构建工具的基本概念、主流构建工具介绍。 ## 编码实践 :speak_no_evil: > [重构 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/重构.md) 参考 重构 改善既有代码的设计。 > [代码可读性 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/代码可读性.md) 参考 编写可读代码的艺术。 > [代码风格规范 ](https://github.com/CyC2018/InnterviewNotes/blob/master/notes/代码风格规范.md) Google 开源项目的代码风格规范。 --- # 文档转换步骤 ## 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); } ```