用于提供 https://github.com/CyC2018/Interview-Notebook 项目的离线阅读
pdf使用 cmd-markdown 的付费工具手工进行pdf的转换。
原作者已经制作好gitbook地址:https://legacy.gitbook.com/book/cyc2018/interview-notebook/details
那么为什么还需要本仓库? 我个人认为cmd-markdown工具所转化的pdf相比gitbook直接生成的pdf拥有更好的阅读体验!
以前的单文件pdf并没有丢失, 直达链接
分割线
以下就可耻的抄袭原有仓库的内容介绍吧
Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ | Ⅹ |
---|---|---|---|---|---|---|---|---|---|
算法✏️ | 操作系统💻 | 网络☁️ | 面向对象👫 | 数据库💾 | Java ☕ | 分布式 💦 | 工具🔨 | 编码实践🙊 | 后记📝 |
目录根据原书第二版进行编排。
做了一个大致分类,并对每种分类题型的解题思路做了总结。
主要参考 Robert Sedgewick 的算法书进行实现,源代码以及测试代码可在另一个仓库获取。
参考 现代操作系统、Unix 环境高级编程、深入理解计算机系统。
参考 鸟哥的 Linux 私房菜。
参考 谢希仁的计算机网络、计算机网络 自顶向下方法、TCP/IP 详解。
参考 图解 HTTP,更多的是参考网上的文档,比如 MDN、维基百科等。
参考 Unix 网络编程。
参考 Head First 设计模式、设计模式 可复用面向对象软件的基础,实现了 Gof 的 23 种设计模式。
内容包括三大原则(继承、封装、多态)、类图、设计原则。
参考 数据库系统原理。
参考 SQL 必知必会。
Leetcode 上数据库题目的解题记录。
参考 高性能 MySQL。
参考 Redis 设计与实现、Redis 实战。
参考 Effective Java、Java 编程思想,也有部分内容参考官方文档以及 StackOverflow。
参考 深入理解 Java 虚拟机。
参考 Java 编程思想、深入理解 Java 虚拟机。
包含容器源码的分析。
包含 NIO 的原理以及实例。
CAP、BASE、Paxos、Raft
分布式事务、分布式锁、分布式 Session、负载均衡
一些 Git 的使用和概念。
参考 正则表达式必知必会。
参考 重构 改善既有代码的设计。
参考 编写可读代码的艺术。
Google 开源项目的代码风格规范。
<!-- GFM-TOC -->
***
<!-- GFM-TOC -->
对于所有的图片地址进行替换
例如:
src="../pics//f5757d09-88e7-4bbd-8cfb-cecf55604854.png"
替换为
src="https://github.com/CyC2018/Interview-Notebook/raw/master/pics/f5757d09-88e7-4bbd-8cfb-cecf55604854.png"
所有的width=""
都需要删除
使用正则表达式 width="[0-9]*"
进行替换
所有公式需要替换为遵守 MathJax
语法,代码为
public static void main(String[] args) {
// 使用最小匹配
String templete = "<img src=\"https://latex.codecogs.com/gif.latex?.*?\"/>";
Pattern pattern = Pattern.compile(templete);
String testStr = "为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 <img src=\"https://latex.codecogs.com/gif.latex?\\vec{S}\"/> 和 <img src=\"https://latex.codecogs.com/gif.latex?\\vec{T}\"/> 有";
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);
}