- 博客(171)
- 收藏
- 关注
原创 Linux内核常见的丢包场景有哪些
一个数据包在网络中传输的过程中,是没法保证一定能被目的机接收到的。其中有各种各样的丢包原因,今天来学习一下数据包经过 linux 内核时常见的丢包场景。
2024-04-14 11:34:09 933
原创 Linux是怎么发送一个网络包的?
一个网络包的发送,始于应用层,经层层协议栈的封装,终于网卡。今天来循着一个网络包的足迹👣,深入学习一下 Linux 下发送数据的处理流程。
2024-03-31 15:02:38 997
原创 Linux收到一个网络包是怎么处理的?
一个网络包的接收始于网卡,经层层协议栈的解析,终于应用层。今天来循着一个网络包的足迹👣,深入学习一下 Linux 下接收数据的处理流程。
2024-03-24 18:57:22 1241
原创 Linux的进程调度实现
经常被问到进程的调度算法有哪些,什么先进先出、短进程优先、时间片轮转、多级反馈多列等等算法能说一大堆?那具体的,linux内核使用了什么样的算法,且来探究一下。
2024-03-09 20:40:20 1148
原创 一个聊天系统
聊天应用每个人都用过,但一千个人心中就有一千个聊天应用。这篇博客就来探讨一下聊天系统的设计。如何设计一个聊天系统,首先需要搞清楚,要设计一个什么样的聊天系统。
2024-03-02 19:12:22 957
原创 LRU缓存
有人从网络读数据,有人从磁盘读数据,机智的人懂得合理利用缓存加速数据的读取效率,提升程序的性能,搏得上司的赏识,赢得白富美的青睐,进一步走向人生巅峰~
2024-02-05 20:09:50 1603
原创 C++ future/promise/thread/async/packaged_task入门
std::promise、future、thread、async、packaged_task这些到底是个啥?
2024-01-11 21:18:59 869 2
原创 HTTP打怪升级之路
上个世纪80年代末,有一天,Tim Berners-Lee正在工作,他需要与另一台计算机上的同事共享一个文件。他尝试使用电子邮件,但发现电子邮件不能发送二进制文件。Tim Berners-Lee意识到,他需要一种新的协议来共享二进制文件。
2024-01-04 17:38:53 1082
原创 一个简单的Client Base框架
开源代码Chromium可以给我们客户端的架构提供很多参考与借鉴,本文即是一个基于Chromium的mssage_loop事件机制与task投递流程,改造的一个更加简单易用的基本框架。
2024-01-01 16:35:07 404
原创 智能指针循环引用——你真的懂了吗?
起初,没有人在意这场灾难,这不过是一个指针的丢失、一个bug,一个服务器的宕机,直到这场灾难和每个人息息相关......
2022-12-17 14:50:39 1812
原创 数据安全与虚拟网卡的应用(三)
墨迹了大半年,终于把这个玩意墨迹的差不多了。整体的结构跟当初设计的还是有一些偏差的,一部分原因是因为懒,另一部分原因是没人关注没动力,随便搞搞吧。
2021-06-19 13:08:39 252
原创 数据安全与虚拟网卡的应用(二)
上次写到我们打开了一个虚拟网卡,得到的其实是一个文件描述符。考虑到我们后面还会有其它的文件描述符需要统一管理,为了方便,我们得提前实现好管理描述符的逻辑。Let‘s do it !
2021-04-24 17:49:56 213
原创 数据安全与虚拟网卡的应用
最近逛github偶然发现了自己之前写的一段创建tun网卡的c代码,才发现它孤零零的在那儿躺了很久,想着怎么不让它继续孤单下去,于是就有了现在这篇文章:30天用c实现一个代理,也算物尽其用了吧。
2021-01-31 23:24:30 239
原创 MySQL InnoDB存储引擎-事务篇
前言 说到数据库事务,想到的就是要么都做修改,要么都不做。或者是ACID的概念。其实事务的本质就是锁和并发和重做日志的结合体。那么,这一篇主要讲一下InnoDB中的事务到底是如何实现ACID的。原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability)一.隔离性隔离性的实现原理就是锁,因而隔离性也可以称为并发控制、锁等。事务的隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离。再者,比如操作缓冲池中的 LRU
2020-12-27 14:53:54 175 2
原创 MySQL InnoDB存储引擎-锁篇
锁机制用于管理对共享资源的并发访问。InnodDB存储引擎中,会在数据库内部的多个地方使用锁,从而允许多种不同资源的并发访问。比如:操作缓冲池的LRU列表,删除、添加、移动LRU列表的元素,为了保证一致性,必须有锁的介入。数据库系统使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。InnoDB存储引擎锁的实现提供一致性的非锁定读、行级锁支持。行级锁没有额外的开销,并可以同时得到并发性和一致性。锁的类型行级锁InnoDB存储引擎实现了两种如下的行级锁:共享锁(S Loc
2020-11-28 16:17:04 214 1
原创 MySQL InnoDB存储引擎-索引篇
历时两个月,利用地铁上飞驰的时间,终于把《MySQL技术内幕 InnoDB存储引擎》这本书看完了。这本书通篇讲了比较多InnoDB存储引擎底层实现的逻辑,包括跟其它数据库厂商实现的对比,令我这样的初学者看起来还是比较头大的,但不妨碍其成为一本优秀的科普书。虽然最近一直加班一直爽,但还是利用晚上的碎片时间把一些比较重要的知识整理了下分享出来,写完之后还是感觉美滋滋的^_^。
2020-10-31 11:38:55 558 1
原创 linux下的动态库注入
前言最近在维护公司的一个服务X,服务X因为协议设计的不够安全,存在被攻击的风险,所以修改协议提升安全性就显得势在必行了。然鹅,该项目涉及到多个版本,将改动合入到各个版本引起的开发及测试工作量颇大,最终讨论后决定通过动态库注入的方式进行修改。何为动态库注入动态库注入是指在程序启动或运行的时候,通过某种手段加载另一套接口库,替换原有依赖库中的函数。这样可以达到改变程序功能而又不对原有代码进行修改的目的。如何做linux下有一个环境变量叫LD_PRELOAD,动态链接器在载入一个程序所需的所有
2020-10-14 23:13:56 1594 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人