- 博客(187)
- 收藏
- 关注
原创 Linux网络HTTPS(20)
想了想,还有 HTTPS 也做一下笔记吧,其实还有I/O 多路复用的那三个API()我也分别想要做一下笔记,但是想了想还是未来再来吧~数字摘要 又称为 数字指纹,指通过 哈希函数 对信息进行运算后生成的 一串定长字符串 ,具有很强的唯一性,数字摘要 并不能加密,而是用于快速判断原始内容是否被修改从无限映射到有限,肯定是有概率碰巧重合的,但是这种概率极低,不影响也不考虑摘要的常见算法:有等。
2025-11-24 13:42:57
442
原创 Linux网络TCP(终)(14)
好了,终于来到了我们TCP的最后一篇啦,我真的保证这是最后一篇了,不会再有新的了,这次我主要就是从源码内核的角度跟大家谈谈 SOCKET网络编程 的本质!(1)半连接队列阶段(SYN 队列)首先客户端向服务器发送链接请求,当服务器收到客户端的 SYN 报文时,内核会将该报文封装为 sk_buff,并解析其中的 TCP 头部信息(如源端口、序号等)。
2025-11-22 14:35:28
788
原创 MySQL索引及其底层原理(下)(11)
本篇也是搞原理,但是比上一篇来得难些!频繁作为查询条件的字段:应该创建索引。唯一性太差的字段:不适合单独创建索引,即使频繁作为查询条件。示例:给性别打上索引,但性别只有男和女,构建出的B+树并不优秀。更新非常频繁的字段:不适合作创建索引。示例:考试信息更改太频繁,索引创建出来是为了方便查询,频繁修改不仅影响数据,还会调整索引结构。不会出现在 where 子句中的字段:不应创建索引。示例:某些字段从未在 where 子句中出现,创建索引没有意义。其实还有一个全文索引,
2025-07-17 16:32:41
833
原创 Linux网络socket套接字(完)(5)
结束喽,至少这个Tcp套接字有关内容要结束了~还有点难过呢!结束喽,并且我们甚至还串通了之前的知识!!!难死我了难死我了!!!
2025-07-04 10:59:43
914
原创 Linux线程初识(27)
进程和线程真是一个经典的概念,我们要来好好学习它哎,感觉时间总是不够用!!大家继续加油!!将一份代码成功编译后,可以得到一个可执行程序,程序运行后,相关代码和数据被 load 到内存中,并且操作系统会生成对应数据结构(比如 PCB)对其进行管理及分配资源,准备工作做完之后,我们就可以得到一个运行中的程序,简称为 进程,对于操作系统来说,光有 进程 的概念是无法满足高效运行的需求的,因此需要一种执行粒度更细、调度成本更低的执行流,而这就是 线程但是可以说,这样子是比较模糊的,不急,我们接下来继续讲解。
2025-05-19 03:02:37
899
原创 Linux进程地址空间(12)
融会贯通!本篇会让你再次对计算机世界里面的大智慧感到汗颜!本篇研究环境基于 Linux kernel 2.6.32 的32位平台精妙的设计,不得不感概计算机殿堂前辈们的智慧!!!
2025-04-06 16:30:48
878
原创 Cpp多态机制的深入理解(20)
多态也是三大面向对象语言的特性之一,同时我也觉得他也蛮有意思的与封装“一个方法,多个接口”不同的是,多态可以实现 “一个接口,多种方法调用同名函数时,可以根据不同的对象(父类对象或子类对象)调用属于自己的函数,实现不同的方法,因此 多态 的实现依赖于 继承virtual 修饰后形成的虚函数,与其他类中的虚函数形成 重写(三同:返回值、函数名、参数均相同)必须通过【父类指针】或【父类引用】进行虚函数调用在虚函数的后面写上 = 0 ,则这个函数为纯虚函数。
2024-11-01 14:48:31
2026
9
原创 DS堆的特性和实现(9)
继续,本篇较难正文开始!//存放数据的动态数组int size;//有效数据个数//数组容量}HP;哈哈,初步感受到堆的巧妙了吧,我们后面继续来学习堆的实际应用!
2024-10-17 13:17:12
1442
9
原创 C语言函数栈帧的创建与销毁(32)
应该是最后一篇了,这一篇相当重要!但是也是最难的一篇,涉及底层正文开始!我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何传回的?函数参数是如何传递的?这些问题都和函数栈帧有关系~函数参数和函数返回值临时变量(包括函数的非静态的局部变量以及编译器自动生产的其他临时变量)保存上下文信息(包括在函数调用前后需要保持不变的寄存器)其实我在Cpp篇内说了返回值具有临时常性,也就是这个原因。
2024-10-10 15:56:02
2747
16
原创 Linux网络DNS、ICMP、NPT(19)
DNS(Domain Name System,域名系统)协议,是一个用来将 域名 转化为 IP地址 的应用层协议结束喽!!!
2025-11-24 05:30:20
445
原创 Linux网络数据链路层(下)(18)
现在来到数据链路层的最后一篇吧!!地址解析协议(Address Resolution Protocol,ARP)协议,是根据 IP地址 获取 MAC地址 的一个 TCP / IP 协议,其实还有个能根据 MAC地址 获取 IP地址 的协议,就是叫做 TCP / IP 协议结束喽,到时候最后再讲几个协议差不多也就结束啦!
2025-11-23 20:34:12
579
原创 Linux网络数据链路层(上)(17)
终于到了我们网络协议栈 TCP / IP 的最后一层了,数据链路层,抱着激动的心情,我们开始来看看这一层到底是个什么说法吧!!!拜拜,下篇见!!!
2025-11-23 19:07:07
486
原创 Linux网络IP(下)(16)
本篇是我们 IP 篇的最后一篇了,马上就要迎来数据链路层了!!要到 数据链路层 喽,也就是我们 TCP/IP 四层模型的最后一层了!
2025-11-23 06:45:12
748
原创 Linux网络IP(上)(15)
开新篇,传输层结束了,那是不是就到了网络层了?这里是IP协议的主场!其实还有往下的,叫做数据链路层,不过不急,我们一层一层往下讲解!有点太多了,那我就单独先写个上篇,来个“分片”~~hhhh,下篇我们再见!!!
2025-11-22 21:17:23
644
原创 Linux网络TCP(下)(13)
如果没错的话,这应该会是我们关于 TCP 的最后一篇了总的来说, TCP 还是利用了很多机制来实现可靠性和提高性能的检验和。序列号。确认应答。超时重传。连接管理。流量控制。拥塞控制。滑动窗口。快速重传。延迟应答。捎带应答。重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间坚持定时器:专门为对方零窗口通知而设立的,也就是向对方发送窗口探测的时间间隔保活定时器:为了检查空闲连接的存在状态,也就是向对方发送探查报文的时间间隔TIME_WAIT定时器。
2025-11-22 03:37:54
538
原创 Linux网络TCP(中)(12)
让我们继续开始TCP的学习,在这里我将用源码的形式给大家讲解,边展示边解释的那种~麻了,还没讲完TCP,那就先停一下吧,后面还有很多东西呢!
2025-11-22 01:05:21
814
原创 Linux网络TCP(上)(11)
争取一下把网络的全部给更新出来,之后可能就不怎么会更新博客了,但也说不定,做博客的目的本来就是为了对抗遗忘,之前的内容比如说 C++ 、数据结构 、Linux系统与网络编程这些重要性高且容易遗忘但是能做的话还是要做的,后端要学的真的好多,后期还打算学一下 Redis、Docker 等等。
2025-11-21 20:05:02
1172
2
原创 Linux网络UDP(10)
我记得其实之前讲过 TCP 和 UDP ,但是那是从怎么用的角度来讲解的,本质上我们还是把 Socket API 当作黑盒,所以现在我就开始就着这两个传输层协议开始讲解在学习 HTTP 等应用层协议时,为了便于理解,可以简单的认为 HTTP 协议是将请求和响应直接发送到了网络当中,但实际应用层需要先将数据交给传输层,由传输层对数据做进一步处理后再将数据继续向下进行交付,该过程贯穿整个网络协议栈,最终才能将数据发送到网络当中。
2025-10-24 16:06:07
779
原创 Linux网络HTTP(下)(9)
本篇打算讲解 Cookie 和 Session!就通过一个生活当中的形象的例子来讲解吧!最后补充一个完整的 Cookie 的相应报头吧!UTC;path=/;secure;HttpOnlyexpires=< date >: 设置 Cookie 的过期日期/时间。如果未指定此属性, 则 Cookie 默认为会话 Cookie, 即当浏览器关闭时过期。path=< some_path >: 限制 Cookie 发送到服务器的哪些路径。默认为设置它的路径。
2025-10-23 19:18:59
650
原创 Linux网络HTTP(中)(8)
承接上文,我们来继续深入讨论HTTP!好了本篇就到这里,其实你有没有想过一个问题,假设我们现在登录B站,输入账号密码,后面很长一段时间在本机上就直接不用输入了,这是为什么呢,我将留到下篇再来解答,嘻嘻!
2025-10-19 17:26:18
890
原创 Linux网络HTTP(上)(7)
我又回来了,前段时间看书沉淀去了,现在开始回来继续更新!本篇我们将继续来结合实际代码来理解 HTTP 网络协议!下面是一个实际的通信流程,就由此来引入吧~你肯定会想什么是 HTTP ,其实我们前面在讲序列化和反序列化的时候,你可能就在想是不是可以定制一个协议,其实还真可以,并且也确实有还不少这样已经成熟并被广泛应用的网络通信协议了,HTTP,本篇的主角,就是其中之一(Hyper Text Transfer Protocol)中文名叫做超文本传输协议,底层协议是TCP,这是我们先要了解的一个大概知识。
2025-10-18 22:00:06
754
1
原创 Cpp::布隆过滤器(40)
我在面经中经常看到这一个问题(尤其是腾讯),怎么说呢,就是对一个内存(一般意义上)占用大到无法完整加载到内存的文件,我们要进行一些处理,或由于无法做到,抑或是磁盘I/O实在是太过低效,于是就有了专门的应对方法,我今天就是要来讲解这个布隆过滤器的,而它也正好基于我们上一篇的位图一个有关布隆过滤器的典型应用场景是用手机号注册账号,这种数据我们一般都是存在数据库上的,也就是磁盘里面,而众所周知的是 磁盘和文件的 I/O 是及其慢的,所以我们不可能每个手机号都去遍历磁盘,这会很大程度上降低用户的体验。
2025-09-08 23:40:20
1055
原创 Cpp::STL—位图bitset的使用与模拟实现(39)
Hello,我们又倒回来更新C++篇了好焦虑,时常在想着该如何调节~~好像不算太难,接下来我们要学的布隆过滤器才算是一个重点!
2025-09-08 17:21:55
1038
原创 Linux系统编程守护进程(36)
嘿,又回来更新喽!会话可以看作是一个或多个进程组的集合,一个会话可以包含多个进程组,每个会话也有一个会话 ID(SID)你注意看上图,可以看到三个sleep进程的PGID是一样的,那自然而然 SID 肯定也是一样的创建一个会话,一般会形成一个终端文件,然后关联一个 bash 进程,bash 进程单独一个进程组,会话 ID 一般是会话中第一个进程 的 ID,一般是 bash 进程 ID同一个会话中,可以同时存在多个进程组,但是,任何时刻只允许一个前台进程(组)运行,可以允许多个进程(组)后台运行。
2025-09-06 18:40:05
1172
原创 Boost搜索引擎 网络库与前端(4)
终于到了最后一篇喽,嘻嘻! 下载地址如下,我个人不喜欢新版本 cpp-httplib 下载地址 我们将cpp-httplib放到项目中的test目录下,并解压 unzip 好 再建立软链接到我们的项目路径下 相应的,我们更新一下我们的 makefile 编译后,我们直接开始运行这个 http_server 访问这个端口后有如下效果 问题在于,现在当我们访问服务器的时候,确实这个效果 问题在于,像我们访问百度时,www.baidu.com ,百度会给一个首页,所以在我们的项目目录
2025-09-05 22:12:10
1079
1
原创 Boost搜索引擎 查找并去重(3)
要结束喽,嘻嘻~我们现在已经完成了数据清洗与去标签、建立索引的工作,接下来就是要编写服务器的任务了!!很显然我们搜索的时候,内容并不会完全展现,最多展示一些字数,所以我们并不用传给 elem[“desc”] 文档的全部内容 “doc.content” ,所以我们现在来解决一下摘要函数问题// 找到word(关键字)在html_content中首次出现的位置// 然后往前找50个字节(如果往前不足50字节,就从begin开始)// 往后找100个字节(如果往后不足100字节,就找到end即可)
2025-09-05 20:19:24
1064
原创 Boost搜索引擎 数据清洗与去标签(1)
嘿,这是我的第二个项目啦,这个项目还是蛮简单的,不会太难! 但是还是要抱以认真的态度去学习! 我们常用的搜索引擎有 Google、百度、360 等,这些搜索引擎都是超大型超完善的全网搜索,而本项目Boost搜索引擎只是一个非常简单的站内搜索 该项目源自本人从 github 上找到的⼀个开源项目,主要是日常生活中经常使用搜索引擎, 对于搜索引擎技术如何实现的比较感兴趣。顺便也想锻炼⼀下自己的 C++ 工程代码能力,于是就这么自然而然的有了这个项目,嘻嘻 其实在2023年以前Boost是没有官方的
2025-09-04 13:02:38
1092
原创 Linux网络序列化与反序列化(6)
Hello,我又回来了,也是该静下心来好好继续沉淀了不过话说真是离谱,之前的很多知识都快忘记了,幸好有博客的帮助,虽然费时间也是真的费时间,不过总体来说还是利大于弊的协议就是指的网络协议,网络协议是通信计算机双方必须共同遵从的一组约定,比如怎么建立连接、怎么互相识别等。本质上就是一种约定写到这里其实你可以再次回顾一下OSI七层模型,看看协议对应那一层,相信我,你会有更深的感悟的public:: _x(x),_y(y),_op(op){}// 序列化:将请求转换为字符串格式。
2025-09-02 21:04:06
835
原创 高并发内存池 性能瓶颈分析与基数树优化(9)
到了最后一篇喽,嘻嘻!终于是要告一段落了,接下来我们将学什么呢,再说吧,可能得把Linux的一些内容给补完代码的世界里,没有“完美”,只有“不断迭代”,这个内存池是我的第一个项目,也是第一个孩子,过去学到的“锁优化”“内存对齐”“数据结构”不再是抽象概念,而是解决实际问题的工具,C++本身就与性能优化及其相关,通过这个项目也是领悟到了锁的魅力,真切感受到了工程能力的成长下一步可以怎么继续加深学习呢,或许可以尝试将内存池嵌入实际应用(如HTTP服务器)?不过那是之后的事了呢,但是我现在需要休息一下~
2025-08-14 23:40:02
835
1
原创 高并发内存池 用定长内存池脱离new与多线程测试(8)
我们回顾一下高并发内存池的最初目的就是要在高并发场景下替代 malloc 进行内存申请的,所以内部是不能使用 malloc 函数的,但是我们的代码里使用了 new 关键字,而结合前面的知识我们知道 new 底层封装了 malloc ,这显然不对所以我们之前一开始写的定长内存池这里就成了一个关键组件了其实我们还是遇到了性能瓶颈,可以看到有时候我们自己的内存池还是会比 malloc/free 差一点,这个我们下篇会再来讲解。
2025-08-14 10:33:01
1167
原创 高并发内存池 释放内存联调与大内存申请(7)
有了申请内存的教程就有联调,同样的有了释放内存的教程就有联调毕竟得试试我们的项目到底对了没有是吧!!!至此我们又结束了一个小章节,可以说本篇还是很有收获的!
2025-08-13 15:50:58
1021
原创 高并发内存池 内存释放回收(6)
Hello,我们继续乘胜追击本篇难度较大,大家要好好学一下本篇难度相当大,后面可能还会有类似难度的文章,大家要好好消化!!
2025-08-11 22:02:40
1185
原创 高并发内存池 内存申请与联调(5)
项目写好了(至少写好了一部分),那么首先我们要做的就是什么?答案是调试并修改!这就是我们本篇要开始讲的内容,,当然了,内存本身的调试观察本身就不是一件很容易的事情,但是别害怕,跟我一起!我们会发现知识是连贯关联的,我在 C语言 篇讲解的 VS调试 中写得条件断点到现在还有用,诸如此类不计其数,同时我们会发现思路一旦畅通了,代码写得就顺畅了,调试改 Bug 也顺了~~但是还是想说内存方面的调试真的就是史。
2025-08-11 11:38:24
755
原创 高并发内存池 设计PageCache(4)
这是最后一块缓存了,应该说也不简单,大家加油!!!感觉如何!哈哈,下篇内容较为简单,大家可以放松一下。
2025-08-07 10:58:11
813
原创 高并发内存池 设计CentralCache(3)
其实本篇我个人认为可能是最难的一篇,至少也是其中之一了大家要好好理解并掌握!总的看起来难,但是我们只要一步步拆解,再加上细致的理解,拿下这个高并发内存池难度也是不大的~~~
2025-08-07 00:44:16
893
原创 高并发内存池 设计ThreadCache(2)
Hello!接下来我会就三个不同类型的缓存分别进行讲解!那么先开始第一弹 ThreadCache 吧!开始上难度了,但是好像其实也还行?准备迎接下来的 Central Cache 吧!
2025-08-06 16:22:29
818
原创 高并发内存池 设计定长内存池(1)
Hello,今天我再次开启新篇,这里想为大家撰写一下项目【高并发内存池】,站在现在的上帝视角,我可以很明确的说这是一个非常有趣的项目难度也不小,主要集中在多线程与线程安全那里,并且本身涉及内存的项目就不是很好调试说多了都是泪,但是事不宜迟,就这样开始我们的第一篇吧!但是在正式开始讲解项目内容的时候,我们先聚焦这个项目本身,看看它是什么样的架构,什么样的原理,什么样的用途~~我记得这不是我第一次提到过池化技术这个词,应该在 C++篇 和 Linux篇 都有提一嘴。
2025-08-05 11:23:08
887
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅