Skip to content

Commit

Permalink
Formatting the community standard format in both Chinese and English
Browse files Browse the repository at this point in the history
  • Loading branch information
ihavecoke committed Jul 24, 2023
1 parent 8dc585b commit db4ce41
Show file tree
Hide file tree
Showing 117 changed files with 1,591 additions and 1,591 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

👉 **点击**[图解计算机基础在线阅读](https://xiaolincoding.com/)

本站所有文章都是我[公众号:小林coding](https://mp.weixin.qq.com/s/FYH1I8CRsuXDSybSGY_AFA)的原创文章,内容包含图解计算机网络、操作系统、计算机组成、数据库,共 1000 张图 + 50 万字,破除晦涩难懂的计算机基础知识,让天下没有难懂的八股文(口嗨一下,大家不要当真哈哈)!🚀
本站所有文章都是我[公众号:小林 coding](https://mp.weixin.qq.com/s/FYH1I8CRsuXDSybSGY_AFA)的原创文章,内容包含图解计算机网络、操作系统、计算机组成、数据库,共 1000 张图 + 50 万字,破除晦涩难懂的计算机基础知识,让天下没有难懂的八股文(口嗨一下,大家不要当真哈哈)!🚀

曾经我也苦恼于那些晦涩难弄的计算机基础知识,但在我啃了一本又一本的书,看了一个又一个的视频后,终于对这些“家伙”有了认识。我想着,这世界上肯定有一些朋友也跟我有一样的苦恼,为此下决心,用图解 + 通熟易懂的讲解来帮助大家理解,利用工作之余,坚持输出图解文章两年之久,这才有了今天的网站!
曾经我也苦恼于那些晦涩难弄的计算机基础知识,但在我啃了一本又一本的书,看了一个又一个的视频后,终于对这些“家伙”有了认识。我想着,这世界上肯定有一些朋友也跟我有一样的苦恼,为此下决心,用图解 + 通熟易懂的讲解来帮助大家理解,利用工作之余,坚持输出图解文章两年之久,这才有了今天的网站



Expand Down Expand Up @@ -39,7 +39,7 @@
- [四次挥手中收到乱序的 FIN 包会如何处理?](https://xiaolincoding.com/network/3_tcp/out_of_order_fin.html)
- [在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?](https://xiaolincoding.com/network/3_tcp/time_wait_recv_syn.html)
- [TCP 连接,一端断电和进程崩溃有什么区别?](https://xiaolincoding.com/network/3_tcp/tcp_down_and_crash.html)
- [拔掉网线后, 原本的 TCP 连接还存在吗?](https://xiaolincoding.com/network/3_tcp/tcp_unplug_the_network_cable.html)
- [拔掉网线后,原本的 TCP 连接还存在吗?](https://xiaolincoding.com/network/3_tcp/tcp_unplug_the_network_cable.html)
- [tcp_tw_reuse 为什么默认是关闭的?](https://xiaolincoding.com/network/3_tcp/tcp_tw_reuse_close.html)
- [HTTPS 中 TLS 和 TCP 能同时握手吗?](https://xiaolincoding.com/network/3_tcp/tcp_tls.html)
- [TCP Keepalive 和 HTTP Keep-Alive 是一个东西吗?](https://xiaolincoding.com/network/3_tcp/tcp_http_keepalive.html)
Expand Down Expand Up @@ -69,7 +69,7 @@
- [CPU 缓存一致性](https://xiaolincoding.com/os/1_hardware/cpu_mesi.html)
- [CPU 是如何执行任务的?](https://xiaolincoding.com/os/1_hardware/how_cpu_deal_task.html)
- [什么是软中断?](https://xiaolincoding.com/os/1_hardware/soft_interrupt.html)
- [为什么 0.1 + 0.2 不等于 0.3 ](https://xiaolincoding.com/os/1_hardware/float.html)
- [为什么 0.1 + 0.2 不等于 0.3?](https://xiaolincoding.com/os/1_hardware/float.html)
- **操作系统结构** :point_down:
- [Linux 内核 vs Windows 内核](https://xiaolincoding.com/os/2_os_structure/linux_vs_windows.html)
- **内存管理** :point_down:
Expand Down Expand Up @@ -107,7 +107,7 @@
- [计算机网络怎么学?](https://xiaolincoding.com/os/10_learn/learn_os.html)
- [画图经验分享](https://xiaolincoding.com/os/10_learn/draw.html)

## :open_book:图解MySQL
## :open_book:图解 MySQL
- **介绍**:point_down:
- [图解 MySQL 介绍](https://xiaolincoding.com/mysql/)
- **基础篇**:point_down:
Expand All @@ -119,7 +119,7 @@
- [为什么 MySQL 采用 B+ 树作为索引?](https://xiaolincoding.com/mysql/index/why_index_chose_bpuls_tree.html)
- [MySQL 单表不要超过 2000W 行,靠谱吗?](https://xiaolincoding.com/mysql/index/2000w.html)
- [索引失效有哪些?](https://xiaolincoding.com/mysql/index/index_lose.html)
- [MySQL 使用 like “%x“,索引一定会失效吗?](https://xiaolincoding.com/mysql/index/index_issue.html)
- [MySQL 使用 like“%x“,索引一定会失效吗?](https://xiaolincoding.com/mysql/index/index_issue.html)
- [count(\*) 和 count(1) 有什么区别?哪个性能最好?](https://xiaolincoding.com/mysql/index/count.html)
- **事务篇** :point_down:
- [事务隔离级别是怎么实现的?](https://xiaolincoding.com/mysql/transaction/mvcc.html)
Expand All @@ -135,7 +135,7 @@
- **内存篇** :point_down:
- [揭开 Buffer Pool 的面纱](https://xiaolincoding.com/mysql/buffer_pool/buffer_pool.html)

## :open_book:图解Redis
## :open_book:图解 Redis

- **面试篇** :point_down:
- [Redis 常见面试题](https://xiaolincoding.com/redis/base/redis_interview.html)
Expand Down
48 changes: 24 additions & 24 deletions cs_learn/cs_learn.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@

在我看来,笔试能力在校招中要占据 60% 的重要程度。

首先笔试不过,你根本没有面试的展示机会。其次面试中也会反复让你手写代码,以字节为例,每一轮面试都是1-2道编程题,有时候不怎么聊简历;百度每一轮面试有一道编程题。现在公司的面试模式就是这样,如果代码没搞出来,大概率会被淘汰。
首先笔试不过,你根本没有面试的展示机会。其次面试中也会反复让你手写代码,以字节为例,每一轮面试都是 1-2 道编程题,有时候不怎么聊简历;百度每一轮面试有一道编程题。现在公司的面试模式就是这样,如果代码没搞出来,大概率会被淘汰。

并且最窒息的是这些代码题都不简单,一般都是 leetcode 中等到 hard 难度。

刷题主要可从以下三个渠道。

第一个,剑指offer
第一个,剑指 offer

*https://www.nowcoder.com/ta/coding-interviews*

Expand Down Expand Up @@ -156,14 +156,14 @@ leetcode 右侧有标签分类,如下图:

这本书是从程序员的角度学习计算机系统是如何工作的,通过描述程序是如何映射到计算机系统上,程序是如何执行的,以及程序效率低下的原因,这样的方式可以让大家能更好的知道「程序与计算机系统」的关系。

CSAPP 涵盖的内容非常多,有**计算机组成 + 操作系统 + 汇编 + C语言 + Linux系统编程**,涉猎的领域比较多,是一本综合性的书,更是一本程序员修炼内功的指引书。
CSAPP 涵盖的内容非常多,有**计算机组成 + 操作系统 + 汇编 + C 语言 + Linux 系统编程**,涉猎的领域比较多,是一本综合性的书,更是一本程序员修炼内功的指引书。

CSAPP 主要包括以下内容:

- 信息表示(如何使用二进制表示整型、浮点数等);
- C 和汇编语言的学习(通过汇编语言更深入地理解C语言是什么);
- C 和汇编语言的学习(通过汇编语言更深入地理解 C 语言是什么);
- 计算机体系结构(存储层次结构、局部性原理、处理器体系结构);
- 编译链接(C语言如何从文本变成可执行文件、静态链接、动态链接);
- 编译链接(C 语言如何从文本变成可执行文件、静态链接、动态链接);
- 操作系统的使用(异常控制流、虚拟内存、多个系统调用介绍);
- 网络及并发编程(并发的基本概念、网络相关的系统调用的介绍)。

Expand All @@ -178,7 +178,7 @@ CSAPP 主要包括以下内容:

CSAPP 的视频课程是国外老师录制的,但是在 b 站已经有好人帮我们做了中文字幕,看了这视频,相当于在国外上了一门计算机课的感觉。

B站地址*https://www.bilibili.com/video/BV1iW411d7hd*
B 站地址*https://www.bilibili.com/video/BV1iW411d7hd*

![图片](https://img-blog.csdnimg.cn/img_convert/911ab1c94e54c316c6d7a80a31707178.png)

Expand Down Expand Up @@ -232,7 +232,7 @@ B 站关于操作系统课程资源很多,我在里面也看了不同老师讲

推荐一个说的更细的操作系统书 —— 《**操作系统导论**》,这本书不仅告诉你 What,还会告诉你 How,书的内容都是循序渐进,层层递进的,阅读起来还是觉得挺有意思的,这本书的内存管理和并发这两个部分说的很棒。

去年国内也出了一本不错的操作系统书《**现代操作系统-原理与实现**》,这本书不怎么厚,把操作系统重要的知识都讲了一遍,是我看过的操作系统书里配图比较多的书了,学起来不会太费解。
去年国内也出了一本不错的操作系统书《**现代操作系统 - 原理与实现**》,这本书不怎么厚,把操作系统重要的知识都讲了一遍,是我看过的操作系统书里配图比较多的书了,学起来不会太费解。

当然,少不了这本被称为神书的《**深入理解计算机系统**》,豆瓣评分高达 `9.8` 分,这本书严格来说不算操作系统书,它是以程序员视角理解计算机系统,不只是涉及到操作系统,还涉及到了计算机组成、C 语言、汇编语言等知识,是一本综合性比较强的书。

Expand All @@ -252,7 +252,7 @@ TCP/IP 网络参考模型共有 `4` 层,其中需要我们熟练掌握的是

我觉得学习一个东西,就从我们常见的事情开始着手。

比如, ping 命令可以说在我们判断网络环境的时候,最常使用的了,你可以先把你电脑 ping 你舍友或同事的电脑的过程中发生的事情都搞明白,这样就基本知道一个数据包是怎么转发的了,于是你就知道了网络层、数据链路层和物理层之间是如何工作,如何相互配合的了。
比如,ping 命令可以说在我们判断网络环境的时候,最常使用的了,你可以先把你电脑 ping 你舍友或同事的电脑的过程中发生的事情都搞明白,这样就基本知道一个数据包是怎么转发的了,于是你就知道了网络层、数据链路层和物理层之间是如何工作,如何相互配合的了。

搞明白了 ping 过程,就明白了两个计算机是怎么通信的了,然后你学起 HTTP 请求过程的时候,会很快就能掌握了,因为网络层以下的工作方式,你在学习 ping 的时候就已经明白了,这时就只需要认真掌握传输层中的 TCP 和应用层中的 HTTP 协议,就能搞明白[访问网页的整个过程](https://mp.weixin.qq.com/s?__biz=MzUxODAzNDg4NQ==&mid=2247483989&idx=1&sn=7e2ed852770743d3955ef9d5561fcef3&scene=21#wechat_redirect)了,这也是面试常见的题目了,毕竟它能考察你网络知识的全面性。

Expand Down Expand Up @@ -304,42 +304,42 @@ TCP/IP 网络参考模型共有 `4` 层,其中需要我们熟练掌握的是

在学习书籍资料的时候,不管是 TCP、UDP、ICMP、DNS、HTTP、HTTPS 等协议,最好都可以亲手尝试抓数据报,接着可以用 [Wireshark 工具](https://mp.weixin.qq.com/s?__biz=MzUxODAzNDg4NQ==&mid=2247484469&idx=1&sn=55ec7f4addf10ddf25e8c8806da83921&scene=21#wechat_redirect)看每一个数据报文的信息,这样你会觉得计算机网络没有想象中那么抽象了,因为它们被你「抓」出来了,并毫无保留地显现在你面前了,于是你就可以肆无忌惮地「扒开」它们,看清它们每一个头信息。

那在这里,我也给你推荐 2 本关于 Wireshark 网络分析的书:**《Wireshark 网络分析就这么简单》《Wireshark 网络分析的艺术》**
那在这里,我也给你推荐 2 本关于 Wireshark 网络分析的书:**《Wireshark 网络分析就这么简单》《Wireshark 网络分析的艺术》**

这两本书都是同一个作者,书中的案例都是源于作者工作中的实际的案例,作者的文笔相当有趣,看起来堪比小说一样爽,相信你不用一个星期 2 本都能看完了。

## 五、MySQL

MySQL 入门的话是了解 SQL 语法,进阶的话是深入底层实现原理。

千万不要一上来就看《高性能 MySQL 》,我曾经先读《高性能 MySQL 》然后一路暴雷… 因为这本不是入门的书籍!
千万不要一上来就看《高性能 MySQL》,我曾经先读《高性能 MySQL》然后一路暴雷… 因为这本不是入门的书籍!

我先介绍下 MySQL 的重点知识,也是面试常面的知识点:

- **基本语法**:select/delete/insert/update、limit、join等
- **基本语法**:select/delete/insert/update、limit、join 等
- **索引**:B+树,聚族索引,二级索引,组合索引,最左匹配原则,索引失效、慢查询
- **事务**事务四大特性ACID,事务隔离级别,MVCC
- **事务**事务四大特性 ACID,事务隔离级别,MVCC
- ****:全局锁、表级锁、行级锁、快照读、当前读、乐观锁、悲观锁、死锁
- **日志**:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)
- **日志**:重做日志 (redo log)、回滚日志 (undo log)、二进制日志 (binlog)
- **架构**:读写分离、主从架构、分库分表、数据库和缓存双写一致性

MySQL 入门推荐《**SQL必知必会**》,这一本很薄的书,主要是讲数据库增删查改的 SQL 语法。
MySQL 入门推荐《**SQL 必知必会**》,这一本很薄的书,主要是讲数据库增删查改的 SQL 语法。

学完 SQL 语法,我们不能止步,要深入去了解 MySQL 底层知识。

这里建议先看《**MySQL 是怎么运行的**》,这本书含有很多图,是小白学习 MySQL 底层知识的最佳书籍,看了下作者简介,他是裸辞一年在家里写出来的这本书,看的出来非常用心的了。

MySQL 用的最多的就是 InnoDB 引擎了,所以进一步学习 InnoDB 是很有必要的,这里推荐《**MySQL技术内幕**》,这本书可以结合《MySQL是怎么样运行的》一起看。
MySQL 用的最多的就是 InnoDB 引擎了,所以进一步学习 InnoDB 是很有必要的,这里推荐《**MySQL 技术内幕**》,这本书可以结合《MySQL 是怎么样运行的》一起看。

好了,看完上面的,你对 MySQL 已经有相当多的认识了,MySQL 还有一本高性能的书《高性能 MySQL 》,非常的经典,这本书比较厚,大家可以当作字典,索引章节大家可以去看看,看完后你对索引的认识又会刷新一遍。
好了,看完上面的,你对 MySQL 已经有相当多的认识了,MySQL 还有一本高性能的书《高性能 MySQL》,非常的经典,这本书比较厚,大家可以当作字典,索引章节大家可以去看看,看完后你对索引的认识又会刷新一遍。

## 六、Redis

要入门Redis,就要先知道这东西怎么用,说白了,最开始就是先学习操作Reids的相关命令,就像我们入门MySQL的时候,都是先学习SQL语言
要入门 Redis,就要先知道这东西怎么用,说白了,最开始就是先学习操作 Reids 的相关命令,就像我们入门 MySQL 的时候,都是先学习 SQL 语言

入门 Redis 命令这一块我当时没有去专门买书看,而是直接看视频,因为我觉得命令的使用实操性还是比较强的,跟着老师敲命令学习会比较快一些。

这里我推荐下**尚硅谷 Redis 视频课**,在 B 站就可以看,讲的还是挺清晰的,也把Redis很多重点知识也讲了,比如 Redis基本数据结构、持久化技术、主从复制、哨兵、集群等等,一套连招下来,就基本入门了。
这里我推荐下**尚硅谷 Redis 视频课**,在 B 站就可以看,讲的还是挺清晰的,也把 Redis 很多重点知识也讲了,比如 Redis 基本数据结构、持久化技术、主从复制、哨兵、集群等等,一套连招下来,就基本入门了。

![图片](https://img-blog.csdnimg.cn/img_convert/ccf05f1c3190218a55eb4ba11a4fce89.png)

Expand All @@ -349,17 +349,17 @@ Redis 官网也有一整套的命令详解,遇到需要或者不会的地方

视频是帮助我们快速入门,但是并不能止于视频,因为一些细节的知识点视频上并没有提及,这时候我们就要回归书本。

这里推荐学习Redis的圣经级别的书——《**Redis设计与实现**》,因为它太经典了!
这里推荐学习 Redis 的圣经级别的书——《**Redis 设计与实现**》,因为它太经典了!

这本书不是教你如何使用 Redis,而是跟你讲解 Redis 是怎么实现,怎么设计的,也就说源码级别的学习,但是书上并没有大段贴代码,作者是用伪代码的方式来讲解,所以读起来不会太难的。

书本上主要围绕这几大知识点:**数据结构、AOF和RDB持久化技术、网络输入输出系统、主从复制、哨兵模式、集群模式。**
书本上主要围绕这几大知识点:**数据结构、AOF 和 RDB 持久化技术、网络输入输出系统、主从复制、哨兵模式、集群模式。**

到这里你已经是入门Redis了,不仅会了 Redis 基本命令,还懂 Redis 的实现,剩下的就是学习如何在实战中运用Redis
到这里你已经是入门 Redis 了,不仅会了 Redis 基本命令,还懂 Redis 的实现,剩下的就是学习如何在实战中运用 Redis

这里推荐《**Redis实战**》这本书,该书通过实际的例子, 展示了使用 Redis 构建多种不同的应用程序的方法。
这里推荐《**Redis 实战**》这本书,该书通过实际的例子,展示了使用 Redis 构建多种不同的应用程序的方法。

处于进阶阶段的 Redis 学习者可以通过阅读该书来学习如何使用 Redis 去构建实际的应用,然后举一反三, 把书中介绍的程序和方法应用到自己遇到的问题上。
处于进阶阶段的 Redis 学习者可以通过阅读该书来学习如何使用 Redis 去构建实际的应用,然后举一反三,把书中介绍的程序和方法应用到自己遇到的问题上。

## 七、看书心得

Expand All @@ -370,7 +370,7 @@ Redis 官网也有一整套的命令详解,遇到需要或者不会的地方
所以最好的看书方式是带着问题去翻阅,比如:

- 带着程序是如何在计算机里跑起来的问题,去学计算机组成原理;
- 带着输入一条 url 到网页显示, 期间发生了什么的问题,去学习计算机网络;
- 带着输入一条 url 到网页显示,期间发生了什么的问题,去学习计算机网络;
- 带着进程、内存、磁盘是如何被操作系统管理点,去学习操作系统;
- 带着如何实现一个高并发网络模型,去学习网络编程;
-
Expand Down
Loading

0 comments on commit db4ce41

Please sign in to comment.