小林coding
码龄6年
  • 1,110,336
    被访问
  • 148
    原创
  • 274
    排名
  • 54,459
    粉丝
关注
提问 私信

个人简介:公众号 : 「小林coding」 专注图解计算机基础,期待你的关注,保证把你图解的明明白白。

  • 加入CSDN时间: 2016-04-28
博客简介:

小林coding

博客描述:
公众号:「小林coding」 专注图解计算机基础,期待你的关注!
查看详细资料
  • 9
    领奖
    总分 10,109 当月 391
个人成就
  • 网络领域优质创作者
  • 博客专家认证
  • 获得15,048次点赞
  • 内容获得3,831次评论
  • 获得34,213次收藏
创作历程
  • 33篇
    2022年
  • 48篇
    2021年
  • 37篇
    2020年
  • 30篇
    2019年
成就勋章
TA的专栏
  • 图解计算机网络
    36篇
  • 程序人生
    11篇
  • 学习路线
    7篇
  • 图解操作系统
    28篇
  • 图解Redis
    8篇
  • Linux性能调优
    3篇
  • sequoiadb
    2篇
  • 图解MySQL
    13篇
  • Redis
    1篇
  • C++基础知识
    15篇
  • 数据结构与算法
    1篇
  • 快速入门Shell编程
    9篇
  • Linux
    11篇
  • Shell
    11篇
  • FFmpeg
    1篇
  • C/C++
    19篇
兴趣领域 设置
  • 服务器
    linux
公众号:小林coding
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

开发者 API 管理神器 Eolink,比 postman 好用

最近,发现了一个开发者的 API 管理神器,功能很强大,但是页面不臃肿,很简洁。这款神器可以直接在上面设计 API 接口,然后可以直接生成 API 接口文档,这简直就是懒癌的福音,而且也有团队协作能力,这样在上面修改 API 接口时,团队的小伙伴都能实时看的见,大大提高了团队的接口对接和测试工作的效率。经过我的推荐,身边有不少小伙伴,都逐渐告别postman、swagger等产品,开始选择这款 API 管理神器。这款低调但实力强大的API管理神器就是:Eolink!功能强大。API 版本管理、返回复
原创
发布博客 2022.05.25 ·
69 阅读 ·
1 点赞 ·
0 评论

腾讯一面:内存满了,会发生什么?

作者:小林coding计算机八股文刷题网站:https://xiaolincoding.com大家好,我是小林。前几天有位读者留言说,面腾讯时,被问了两个内存管理的问题:先来说说第一个问题:虚拟内存有什么作用?第一,由于每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。进程也没有办法访问其他进程的页表,所以这些页表是私有的。这就解决了多进程之间地址冲突的问题。第二,页表里的页表项中除了物理地址之外,还有一些标记属性的比特,比如控制一个页的读写权限,标记该页是否存在等。在.
原创
发布博客 2022.05.24 ·
1218 阅读 ·
10 点赞 ·
2 评论

为什么 Redis 要有哨兵机制?

作者:小林coding计算机八股文刷题网站:https://xiaolincoding.com大家好,我是小林。这次聊聊,Redis 的哨兵机制。为什么要有哨兵机制?在 Redis 的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节点」,然后让其他从节点指向新的主节点,同时还需要通知上游那些连接 Redis .
原创
发布博客 2022.05.19 ·
1142 阅读 ·
7 点赞 ·
2 评论

一个霸占程序员休息时间的 APP

不知道大家有没有这个困惑。自己在学习一门技术的时候,虽然说看书是最好的方式,但是有些经典书出版很久了,有些知识点可能过时了,又或者学到的东西不知道怎么应用到工作,同时看书时遇到的问题也没办法向原作者提问。还记得在 18 年的时候,我在朋友圈看到有朋友分享了个课程海报:《趣谈网络协议》和《数据结构与算法之美》。当时很新奇,我去扫码看了下,原来一个专注于 IT 领域的专栏课程 APP —— 极客时间。我立马下载去看了看,那时候这个 APP 刚出来,专栏课程不多,大概就 5 门课程左右,都是业内的大佬写的专
原创
发布博客 2022.05.17 ·
2994 阅读 ·
6 点赞 ·
1 评论

TCP 协议有什么缺陷?

作者:小林coding图解计算机基础网站:https://xiaolincoding.com大家好,我是小林。忽然思考一个问题,TCP 通过序列号、确认应答、超时重传、流量控制、拥塞控制等方式实现了可靠传输,看起来它很完美,事实真的是这样吗?TCP 就没什么缺陷吗?所以,今天就跟大家聊聊,TCP 协议有哪些缺陷?主要有四个方面:升级 TCP 的工作很困难;TCP 建立连接的延迟;TCP 存在队头阻塞问题;网络迁移需要重新建立 TCP 连接;接下来,针对这四个方面详细说一下。升级 .
原创
发布博客 2022.05.09 ·
2060 阅读 ·
7 点赞 ·
4 评论

为什么要有虚拟内存?

4.1 为什么要有虚拟内存?本篇跟大家说说内存管理,内存管理还是比较重要的一个环节,理解了它,至少对整个操作系统的工作会有一个初步的轮廓,这也难怪面试的时候常问内存管理。干就完事,本文的提纲:虚拟内存如果你是电子相关专业的,肯定在大学里捣鼓过单片机。单片机是没有操作系统的,所以每次写完代码,都需要借助工具把程序烧录进去,这样程序才能跑起来。另外,单片机的 CPU 是直接操作内存的「物理地址」。在这种情况下,要想在内存中同时运行两个程序是不可能的。如果第一个程序在 2000 的位置写入一个新
原创
发布博客 2022.04.28 ·
469 阅读 ·
3 点赞 ·
4 评论

我发现 Linux 文档写错了

大家好,我是小林。周末的时候,有位读者疑惑为什么 Linux man 手册中关于 netstat 命令中的 tcp listen 状态下的 Recv-Q 和 Send-Q 这两个信息的描述跟我的图解网络写的不一样?我先给大家翻译一下,man 手册是怎么说的:Recv-Q:如果 TCP 连接状态处于 Established,Recv-Q 的数值表示内核中还没拷贝到应用层的数据大小;如果 TCP 连接状态处于 Listen 状态,Recv-Q 的数值表示当前 syn 半连接队列的大小(自内核 2
原创
发布博客 2022.04.25 ·
4675 阅读 ·
5 点赞 ·
4 评论

为什么 TIME_WAIT 状态的 TCP 连接,收到 SYN 报文后,可以正常建立连接?

大家好,我是小林。昨天群里有个读者问了一个很有意思的问题,他抓到一个抓包图,客户端和服务端四次挥手后,客户端在 17 秒内又复用了与上一次连接相同的端口,向服务端发起了 SYN 报文, 并成功建立了连接。他觉得服务端应该还是处于 TIME_WAIT 状态(因为 Linux 操作系统中,2MSL 的时间是 60 秒,也就是 TIME_WAIT 状态的持续时间),为什么收到客户端的 SYN 报文后可以正常建立连接?抓包图手机端不好看,为了方便大家看,我画了一个图:简单来说,这个问题就是,为什么处
原创
发布博客 2022.04.22 ·
2135 阅读 ·
1 点赞 ·
0 评论

1.5 万字 + 40 张图解 HTTP 常见面试题(值得收藏)

大家好,我是小林,我最开始写的第一篇图解文章就是这篇:那时候我也就不到 100 读者,如今这篇阅读都快 2 万了。当时这篇有些地方没有解释到位,然后我周末抽时间把一些没解释清楚的地方重写了,而且还增加 HTTP 缓存技术 方面的面试题,文章的内容相比以前多了 5000 +字和 10 +张图。不多说了,发车发车!HTTP 基本概念HTTP 是什么?HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。能否详细解释「超文本传输协议」?HTTP的名字「超文
原创
发布博客 2022.04.11 ·
2256 阅读 ·
11 点赞 ·
4 评论

malloc 是如何分配内存的?

大家好,我是小林。很早之前写了一篇图解虚拟内存的文章:真棒!20 张图揭开内存管理的迷雾,瞬间豁然开朗最近想多写一些内存管理的文章,这次我们就以 malloc 动态内存分配为切入点,我在文中也做了小实验:malloc 是如何分配内存的?malloc 分配的是物理内存吗?malloc(1) 会分配多大的内存?free 释放内存,会归还给操作系统吗?free() 函数只传入一个内存地址,为什么能知道要释放多大的内存?发车!Linux 进程的内存分布长什么样?在 Linux 操作系统中,
原创
发布博客 2022.04.07 ·
4209 阅读 ·
27 点赞 ·
9 评论

什么是MySQL 事务与 MVCC 原理?

作者:小林coding图解计算机基础网站:https://xiaolincoding.com/大家好,我是小林。之前写过一篇 MySQL 的 MVCC 的工作原理,最近有读者在网站上学习的时候,评论区指出了一些问题。而这个知识点很重要,面试太常问了,所以,我就重写了这篇文章!开车!正文这是我的钱包,共有 100 万元。今天我心情好,我决定给你的转账 100 万,最后的结果肯定是我的余额变为 0 元,你的余额多了 100 万元,是不是想到就很开心?转账这一动作在程序里会涉及到一系列的..
原创
发布博客 2022.04.01 ·
1749 阅读 ·
5 点赞 ·
4 评论

趣说 | 数据库和缓存如何保证一致性?

数据库和缓存如何保证一致性?一天,老板说「最近公司的用户越来越多了,但是服务器的访问速度越来越差的,阿旺帮我优化下,做好了给你画个饼!」。程序员阿旺听到老板口中的「画饼」后就非常期待,没有任何犹豫就接下了老板给的这个任务。阿旺登陆到了服务器,经过一番排查后,确认服务器的性能瓶颈是在数据库。这好办,给服务器加上 Redis,让其作为数据库的缓存。这样,在客户端请求数据时,如果能在缓存中命中数据,那就查询缓存,不用在去查询数据库,从而减轻数据库的压力,提高服务器的性能。先更新数据库,还是先更新缓存
原创
发布博客 2022.03.31 ·
1778 阅读 ·
3 点赞 ·
1 评论

MySQL 的 Buffer Pool,终于被我搞懂了

大家好,我是小林。今天就聊 MySQL 的 Buffer Pool,发车!为什么要有 Buffer Pool?虽然说 MySQL 的数据是存储在磁盘里的,但是也不能每次都从磁盘里面读取数据,这样性能是极差的。要想提升查询性能,加个缓存就行了嘛。所以,当数据从磁盘中取出后,缓存内存中,下次查询同样的数据的时候,直接从内存中读取。为此,Innodb 存储引擎设计了一个缓冲池(Buffer Pool),来提高数据库的读写性能。有了缓冲池后:当读取数据时,如果数据存在于 Buffer Pool
原创
发布博客 2022.03.25 ·
3444 阅读 ·
8 点赞 ·
1 评论

图解计算机基础网站上线了

大家好,我是小林。就在昨天 4 点半,我收到了工信部的短信,通知了我的域名备案完成了!足足等待了一周,域名终于备案完了,久等了各位!心急的小伙伴,可以到末尾见直接看网站域名。在此之间,我先来介绍(吹一吹)网站。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qjl4DVdW-1648020981377)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgY
原创
发布博客 2022.03.23 ·
4739 阅读 ·
31 点赞 ·
9 评论

什么是缓存雪崩、击穿、穿透?

什么是缓存雪崩、击穿、穿透?用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访问数据库,会用 Redis 作为缓存层。因为 Redis 是内存数据库,我们可以将数据库的数据缓存在 Redis 里,相当于数据缓存在内存,内存的读写速度比硬盘快好几个数量级,这样大大提高了系统性能。引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。
原创
发布博客 2022.03.13 ·
4108 阅读 ·
17 点赞 ·
0 评论

如何理解是 TCP 面向字节流协议?

有个读者问我,这么个问题:TCP 是面向字节流的协议,UDP 是面向报文的协议?这里的「面向字节流」和「面向报文」该如何理解。如何理解字节流?之所以会说 TCP 是面向字节流的协议,UDP 是面向报文的协议,是因为操作系统对 TCP 和 UDP 协议的发送方的机制不同,也就是问题原因在发送方。先来说说为什么 UDP 是面向报文的协议?当用户消息通过 UDP 协议传输时,操作系统不会对消息进行拆分,在组装好 UDP 头部后就交给网络层来处理,所以发出去的 UDP 报文中的数据部分就是完整的
原创
发布博客 2022.03.13 ·
4751 阅读 ·
3 点赞 ·
0 评论

HTTPS 中 TLS 和 TCP 能同时握手吗?

HTTPS 中 TLS 和 TCP 能同时握手吗?大家好,我是小林。有位读者在面试的时候,碰到这么个问题:面试官跟他说 HTTPS 中的 TLS 握手过程可以同时进行三次握手,然后读者之前看我的文章是说「先进行 TCP 三次握手,再进行 TLS 四次握手」,他跟面试官说了这个,面试官说他不对,他就感到很困惑。我们先不管面试官说的那句「HTTPS 中的 TLS 握手过程可以同时进行三次握手」对不对。但是面试官说「HTTPS 建立连接的过程,先进行 TCP 三次握手,再进行 TLS 四次握手」是错的
原创
发布博客 2022.03.13 ·
485 阅读 ·
4 点赞 ·
0 评论

tcp_tw_reuse 为什么默认是关闭的?

tcp_tw_reuse 为什么默认是关闭的?大家好,我是小林。上周有个读者在面试微信的时候,被问到既然打开 net.ipv4.tcp_tw_reuse 参数可以快速复用处于 TIME_WAIT 状态的 TCP 连接,那为什么 Linux 默认是关闭状态呢?好家伙,真的问好细节!当时看到读者这个问题的时候,我也是一脸懵逼的,经过我的一番思考后,终于知道怎么回答这题了。其实这题在变相问「如果 TIME_WAIT 状态持续时间过短或者没有,会有什么问题?」因为开启 tcp_tw_reuse 参数
原创
发布博客 2022.03.13 ·
324 阅读 ·
0 点赞 ·
1 评论

学习计算机基础有什么推荐的书和视频?

大家好,我是小林。之前有读者问我,学习计算机基础有什么推荐的书?这一个我就很有心得了,因为我大学的专业并不是计算机专业的,是电气自动化专业的,所以学校的课程并没有操作系统、计算机网络、计算机组成、数据库这类课程,但是还是会有编程课。所以,计算机基础这些课程都是我自学过来的,期间看过了很多的书,也在中国慕课和 B 站刷过很多视频,踩过不少的坑。其实在自学过程中,最容易踩坑的地方就是不看自己当前水平,盲目跟风买那些豆瓣高分的大而全的计算机黑皮系列的书,然后学几天,就放弃了。这些大而全的计算机黑皮书当然
原创
发布博客 2022.03.12 ·
5075 阅读 ·
31 点赞 ·
6 评论

什么是缓存雪崩、击穿、穿透?

用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访问数据库,会用 Redis 作为缓存层。因为 Redis 是内存数据库,我们可以将数据库的数据缓存在 Redis 里,相当于数据缓存在内存,内存的读写速度比硬盘快好几个数量级,这样大大提高了系统性能。引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。这三个问题也是面试中很常考察
原创
发布博客 2022.03.12 ·
397 阅读 ·
0 点赞 ·
1 评论
加载更多