diff --git a/docs/cpp/basics/volatile.md b/docs/cpp/basics/volatile.md index 8e2614f..1bcec02 100644 --- a/docs/cpp/basics/volatile.md +++ b/docs/cpp/basics/volatile.md @@ -59,7 +59,7 @@ int main() { 由于`counter`变量被声明为`volatile`,编译器不会对其进行优化,确保每次访问都会从内存中读取值。 -当然啦,即便是`volatile`关键字可以确保编译器不对变量进行优化,但上面任然存在并发问题,`counter++`操作仍然可能导致数据不一致。 +当然啦,即便是`volatile`关键字可以确保编译器不对变量进行优化,但上面仍然存在并发问题,`counter++`操作仍然可能导致数据不一致。 为了解决这个问题,需要使用互斥锁、原子操作或其他同步机制。 diff --git a/docs/cpp/memory/difference_of_pointers_and_ref.md b/docs/cpp/memory/difference_of_pointers_and_ref.md index 5573cae..906c569 100644 --- a/docs/cpp/memory/difference_of_pointers_and_ref.md +++ b/docs/cpp/memory/difference_of_pointers_and_ref.md @@ -112,7 +112,7 @@ __Z4swapRiS_: ## @_Z4swapRiS_ ## -- End function ``` -在来一个函数调用引用版本swap +再来一个函数调用引用版本swap ```cpp void call() { diff --git a/docs/network/transport/30_tcp_sliding_window.md b/docs/network/transport/30_tcp_sliding_window.md index 0ef7ed0..4613d84 100644 --- a/docs/network/transport/30_tcp_sliding_window.md +++ b/docs/network/transport/30_tcp_sliding_window.md @@ -332,7 +332,7 @@ $$ -这里面很多参数是通过实验试出来的,但是我们任然可以通过公式的特点,直观的感受为什么这个公式能适应不同网络特点。 +这里面很多参数是通过实验试出来的,但是我们仍然可以通过公式的特点,直观的感受为什么这个公式能适应不同网络特点。 * 假如一个网络耗时很稳定,那是否说明 SRTT 和 RTT 之间的波动很小? diff --git a/docs/offer/campus_process.md b/docs/offer/campus_process.md index 7e28cd2..747a234 100644 --- a/docs/offer/campus_process.md +++ b/docs/offer/campus_process.md @@ -48,7 +48,7 @@ head: #### 提前批(12 月 - 1 月) -是的,春招有少数的企业可能在昨年的 12 月就提前开始了,但是大部分来说还是 2月-3月之后开始。 +是的,春招有少数的企业可能在去年的 12 月就提前开始了,但是大部分来说还是 2月-3月之后开始。 一般来说每年过完年后2周左右,很多大公司就会放出职位开始招聘了。 diff --git a/docs/offer/chunzhao.md b/docs/offer/chunzhao.md index be469b3..9fe4388 100644 --- a/docs/offer/chunzhao.md +++ b/docs/offer/chunzhao.md @@ -46,7 +46,7 @@ head: ### 提前批(12 月 - 1 月) -是的,春招有少数的企业可能在昨年的 12 月就提前开始了,但是大部分来说还是 2月-3月之后开始。 +是的,春招有少数的企业可能在去年的 12 月就提前开始了,但是大部分来说还是 2月-3月之后开始。 一般来说每年过完年后2周左右,很多大公司就会放出职位开始招聘了。 diff --git a/docs/roadmap/basic/how_to_learn_networking.md b/docs/roadmap/basic/how_to_learn_networking.md index f6985c1..1259fc7 100644 --- a/docs/roadmap/basic/how_to_learn_networking.md +++ b/docs/roadmap/basic/how_to_learn_networking.md @@ -150,7 +150,7 @@ head: ### 4.4 深入理解计网 学习计网过程中也需要建立结构化的思维,最直观的结构就是按照计网的层次来,即:**应用层、传输层、网络层、数据链路层、物理层。** -然后在去学习每个层的功能和其中的每个协议,这个过程既可以自顶而下,也可以自底向上。 +然后再去学习每个层的功能和其中的每个协议,这个过程既可以自顶而下,也可以自底向上。 **分层学习过程中除了要掌握每一层之外,最重要的其实是要学习层与层之间是如何链接起来的,比如 IP 层和数据链路层就是 ARP 协议。** diff --git a/docs/roadmap/cpp/linux_cpp.md b/docs/roadmap/cpp/linux_cpp.md index 7e96025..d638335 100644 --- a/docs/roadmap/cpp/linux_cpp.md +++ b/docs/roadmap/cpp/linux_cpp.md @@ -185,7 +185,7 @@ head: #### 《C++ 沉思录》 -Andrew Koenig和Barbara Moo在C++领域可以说是元老级的人物,他们两个的远见卓识在这本书里体现的淋漓尽致,C++沉思录是一本讲工程方法的书,虽然这是一本老书了,在当今C++0x标准的大背景下再看这本书,任然可以让我们更多的理解标准中一些功能的作用。 +Andrew Koenig和Barbara Moo在C++领域可以说是元老级的人物,他们两个的远见卓识在这本书里体现的淋漓尽致,C++沉思录是一本讲工程方法的书,虽然这是一本老书了,在当今C++0x标准的大背景下再看这本书,仍然可以让我们更多的理解标准中一些功能的作用。 学好这本书,能为你的C++学习之路画龙点睛。 @@ -342,7 +342,7 @@ Youtube 直接搜 CppCon 即可找到。 > 这本书从我们最常接触的 HTTP、FTP、SMTP 等应用层协议讲起,可以清晰看到引入各个层的作用。 -比如为了区分同一个主机的不用应用,引入了传输层,并使用不用的端口号作为区别; +比如为了区分同一个主机的不同应用,引入了传输层,并使用不同的端口号作为区别; 为了在不同子网间传输数据引入了网络层,并使用 IP 地址寻址路由; diff --git a/docs/roadmap/java/java_web.md b/docs/roadmap/java/java_web.md index 385499a..2bb5fff 100644 --- a/docs/roadmap/java/java_web.md +++ b/docs/roadmap/java/java_web.md @@ -317,7 +317,7 @@ Servlet、Tomcat -> JDBC - > HTTP 协议-> Spring MVC -> Spring 全家桶。 > 这本书从我们最常接触的 HTTP、FTP、SMTP 等应用层协议讲起,可以清晰看到引入各个层的作用。 -比如为了区分同一个主机的不用应用,引入了传输层,并使用不用的端口号作为区别; +比如为了区分同一个主机的不同应用,引入了传输层,并使用不同的端口号作为区别; 为了在不同子网间传输数据引入了网络层,并使用 IP 地址寻址路由; diff --git a/docs/systemdesign/README.md b/docs/systemdesign/README.md index c3a49fe..378829e 100644 --- a/docs/systemdesign/README.md +++ b/docs/systemdesign/README.md @@ -147,7 +147,7 @@ Google 算是这方面的鼻祖,后来很多的 NewSQL 数据库基本都是 首先,第一块是硬件和资源的估算,这里的硬件和资源比较广义,包含了存储、运算力、网络等。 -像 TCP/IP Model、TCP、UDP 这些都是必需要知道的东西,这样才能选择适合的网络协议栈。 +像 TCP/IP Model、TCP、UDP 这些都是必须要知道的东西,这样才能选择适合的网络协议栈。 比如音视频、直播、游戏大多都是用的 UDP 来包一层可靠传输,这样可以达到更高的网络通信效率,因为 TCP 本身的慢启动、避让机制是对于整个网络最优的,有些策略对于我们应用却是不必要的,我们可以”自私“、”贪心“一点。 diff --git a/docs/systemdesign/high_performance_backend.md b/docs/systemdesign/high_performance_backend.md index bb5250f..2225d15 100644 --- a/docs/systemdesign/high_performance_backend.md +++ b/docs/systemdesign/high_performance_backend.md @@ -427,8 +427,8 @@ MySQL 的主从同步依赖于 binlog,binlog(二进制日志)是 MySQL Server 2. 第二步是对一些大表进行垂直分表,**将一个表按照字段分成多表,每个表存储其中一部分字段。** 比如商品详情表可能最初包含了几十个字段,但是往往最多访问的是商品名称、价格、产地、图片、介绍等信息,所以我们将不常访问的字段单独拆成一个表。 -* 由于垂直分库已经按照业务关联切分到了最小粒度,数据量任然非常大,**P9 大佬开始水平分库,比如可以把订单库分为订单1库、订单2库、订单3库......** 那么如何决定某个订单放在哪个订单库呢?可以考虑对主键通过哈希算法计算放在哪个库。 -* 分完库,单表数据量任然很大,查询起来非常慢,**P9 大佬决定按日或者按月将订单分表,叫做日表、月表。** +* 由于垂直分库已经按照业务关联切分到了最小粒度,数据量仍然非常大,**P9 大佬开始水平分库,比如可以把订单库分为订单1库、订单2库、订单3库......** 那么如何决定某个订单放在哪个订单库呢?可以考虑对主键通过哈希算法计算放在哪个库。 +* 分完库,单表数据量仍然很大,查询起来非常慢,**P9 大佬决定按日或者按月将订单分表,叫做日表、月表。** 分库分表同时会带来一些问题,比如平时单库单表使用的主键自增特性将作废,因为某个分区库表生成的主键无法保证全局唯一,这就需要引入全局 UUID 服务了。