- 博客(59)
- 收藏
- 关注
原创 Linux网络---Select的使用
提示:FD_ISSET是判断文件描述符是否在就绪队列中,只有真的有新连接到来的时候,select才会把listensockfd加入rfds中,FD_ISSET才会返回true。如果我们将新的fd托管给了select,但是按照目前的代码逻辑,我们进入新的循环rfds会被情况啊,那我怎么知道我原本要关心的fd是哪个并将他添加到rfds呢?因为没有调用accept,用户连接放在缓冲区中,一直没有处理,循环一直有一个用户连接数据,所以会刷屏。我们只是获取了新连接,但是fd是否就绪,我们不知道!
2026-03-05 17:00:58
372
原创 Linux网络---非阻塞IO
阻塞vs非阻塞阻塞和非阻塞关注的是程序在等待调用结果时的状态。①阻塞调用时指调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。②非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
2026-03-04 19:07:20
318
3
原创 Linux网络---数据链路层
这中间要经过湖南、湖北、河南、河北,比如说你现在到了河南、下一个目的地是河北,河南就是源MAC地址,河北就是目的MAC地址,同样的你在湖南,要到湖北,湖南就是源MAC地址,湖北就是目的MAC地址。IP地址是你的开始出发位置和最终要到达的位置,而MAC地址是你在前往最终终点过程中的所在位置和下一步要去的位置,以到达终点。最理想的情况下, MSS的值正好是在IP不会被分⽚处理的最⼤⻓度(这个⻓度仍然是受制于数据链路层的MTU).最⼤值1500称为以太⽹的最⼤传输单元(MTU),不同的⽹络类型有不同的MTU;
2026-02-20 13:44:30
782
原创 位运算---LC268丢失的数字
创建一个[0,n]的tmp数组,先将原数组中的数字全部异或在一起,然后再将tmp中的数字全部异或在一起,然后让两次异或的结果相互异或,最后就只剩下一个丢失的数字了。哈希表:创建一个长度位n+1的数组,这个数组下标就是[0,n],然后遍历原数组,遍历到哪个数就在哈希表的对应下标的值加一,然后再遍历哈希表,哈希表中的值为0的下标就是丢失的数字。暴力解法:数组是缺失[0,n]中的一个数,所以我们先将数组按顺序排好,然后遍历一遍数组就能找到缺失的那个数字了。用总和减去数组中的和,剩下的就是丢掉的数字。
2026-01-26 22:46:17
526
原创 算法---常见位运算总结
③将nums分为两组,不同位为1的和不同位为0的,再进行异或,这样就肯定能将返回值分为两组,从而得到返回值。-n:先取反再加一,本质是将最右侧的1,左侧区域的区域全部取反。n-1: 本质是将最右侧的1右边的区域(包含1)全部变成相反。②找出异或值最右侧的1,这个位置就是两个返回值的第一个二进制不同位。思路:①相同的数异或后为0,将全部数异或后得到只出现1次的数的异或值。2.给一个数n,确定他的二进制表示中的第x位是0还是1。3.将一个数n的二进制表示的第x位修改成1。⑤| : 或,有1就是1。
2026-01-26 22:02:46
395
原创 [测开项目]问卷系统测试---测试用例
Microsoft Edge版本143.0.3650.80(70位)PC端Windows系统。Microsoft Edge版本143.0.3650.80(64位)PC端Windows系统。Microsoft Edge版本143.0.3650.80(65位)PC端Windows系统。Microsoft Edge版本143.0.3650.80(70位)PC端Windows系统。Microsoft Edge版本143.0.3650.80(70位)PC端Windows系统。
2025-12-26 15:46:57
743
原创 测试开发---测试分类
本文系统介绍了软件测试的多种分类方法。按照测试目标可分为界面、功能、性能、可靠性、安全性和易用性测试;按执行方式分为静态和动态测试;按测试方法分为白盒、黑盒和灰盒测试;按测试阶段分为单元、集成、系统、冒烟、回归和验收测试;按实施方式分为手工和自动化测试;按组织方式分为α测试和β测试。每种分类方法都详细说明了测试目的、内容和实施要点,为软件测试工作提供了全面的理论指导。
2025-12-02 20:36:53
1322
5
原创 [项目]基于正倒排索引的Boost搜索引擎---服务和前端模块
cpp-httplib是一个用C++11编写的HTTP/HTTPS客户端和服务器库,该库设计简洁、易于集成,用于快速开发轻量级的HTTP服务或客户端应用。
2025-11-30 14:17:35
747
原创 [项目]基于正倒排索引的Boost搜索引擎---编写建立索引的模块Index
正排索引以文档 ID 为键,存储每个文档的完整信息(标题、内容、URL、文档 ID),支持通过 ID 快速获取文档详情;倒排索引以分词后的单词为键,关联包含该单词的所有文档记录(InvertList),每条记录包含文档 ID 和权重(标题词频 ×10 + 内容词频 ×1,突出标题关键词重要性);构建索引时,先读取格式化文档并分割字段生成正排记录,再通过中文分词(JiebaUtil)对标题和内容分词、统计词频,最终生成倒排索引;
2025-11-23 15:49:24
869
11
原创 [项目]基于正倒排索引的Boost搜索引擎---编写数据去标签与数据清洗的模块Parse
解释:input存储boost库中的全部html文件raw_html存储去标签处理后的文件parser.cc:用来将input/html中的内容进行去标签,最中保存到raw_html中Util.hpp:工具文件,公用的工具写在这里边。
2025-11-19 17:31:28
990
3
原创 [项目]基于正倒排索引的Boost搜索引擎(一)---预备知识
1.项目的相关背景2.搜索引擎的相关宏观原理3.搜索引擎技术栈和项目环境4.正排索引vs倒排索引-搜索引擎具体原理5.编写数据去标签与数据清洗的模块Parser6.编写建立索引的模块Index7.编写搜索引擎模块Searcher8.编写http_server模块9.编写前端模块。
2025-11-18 15:27:58
736
4
原创 MySQL---C/C++链接
功能:插入中文后再select会出现乱码,是因为建立链接的默认字符集不同,该函数能建立字符集。参数解释:host参数用于指定MySQL服务器的主机地址。unix_socket 设置为nullptr。MYSQL_RES:类型名,将select查出来的数据组织好。用法:row保存一行数据,先读取一行,然后再按列打印。功能:查询结果不会自动释放,必须使用该函数主动释放。port连接端口号,默认3306。client_flag设置为0。返回值:失败返回null。功能:连接mysql。
2025-11-16 15:00:55
1071
3
原创 Linux---序列化与反序列化
序列化是 “数据出门的转换器”,将内存数据转为可存储 / 传输的格式;反序列化是 “数据进门的还原器”,将外部数据转回内存可操作的形式。二者共同支撑了数据在内存、存储、网络之间的无缝流转,是现代软件系统(尤其是分布式、前后端分离架构)的基础技术完。
2025-11-04 18:11:56
516
4
原创 Linux---线程概念
①执行流看到的资源,本质是:在合法的情况下,你拥有多少虚拟地址,虚拟地址就是资源的代表②虚拟地址空间mm_struct+vm_area_struct本质:进行资源的统计数据和整合数据③资源划分:本质是地址空间的划分④资源共享:本质是虚拟地址的共享⑤页表是一张虚拟到物理的地图。
2025-10-12 18:48:10
590
原创 Linux---进程信号
①物理:闹钟,红绿灯,上课铃声,狼烟,电话铃声,敲门声......②什么叫信号:终端人正在做的事情,是一种事件的异步通知机制③技术层面:信号是一种给进程发送的,用来进行事件异步通知的机制④异步:两件事情同步进行互不干扰,信号的产生,先对于进程的运行,是异步的!
2025-10-07 15:51:14
915
原创 C++---位图
位图(Bitmap)是一种高效的数据结构,主要用于(通常是整数),其核心原理是通过来表示数据的状态,具有空间效率极高的特点。10假设要表示范围为0~N的整数集合,位图需要的空间仅为N/8字节(或N/32个 32 位整数)。
2025-10-06 19:22:07
1166
原创 Linux---文件系统
①文件=内容+属性②被打开的文件再内存中③没有被打开的文件在磁盘中④如何找到磁盘中的文件:目录⑤文件系统的工作:帮助我们找到磁盘上的文件。
2025-09-22 21:55:14
911
1
原创 Linux---gdb和cgdb
注意:有一些变量不应该被修改,但是你怀疑他修改导致了问题,你可以watch他,如果发生了变化,他会通知你。⑫c(continue):直接运行到下一个断点处,断点对代码进行块级别划分,以块为单位进行快速定位区域。①watch+变量:查看变量是否变化,发生变化会显示出来,不变化不显示,删除和断点一样,d+断点号。②r:无断点直接将程序跑完,有断点运行到断点处(相当于vs中的F5)⑩disable+断点号:禁用断点,断点会变黄,起标记作用。③b+行号+if+条件语句:在循环中,直接进入条件所在的行。
2025-08-28 19:36:14
333
1
原创 C++---C++11
function的实例对象可以包装存储其他的可以调用对象,包括函数指针、仿函数、lambda、bind等表达式,存储的可调用对象被称为function的目标。若function不含目标,则称它为空。调用空function会抛异常。
2025-08-17 18:09:29
652
原创 Linux---编辑器vim
①命令模式控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式或者进去底行模式②插入模式可进行文本输入,按Esc回到命令行模式③底行模式文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
2025-08-01 11:35:37
568
原创 C++---继承
父类(基类/超类)被继承的类,提供基础的属性和方法。子类(派生类)继承父类的类,可以:直接使用父类的非私有成员(属性和方法)。新增自己的属性和方法。重写(Override)父类的方法以改变其行为。
2025-07-08 17:48:26
868
原创 C++---vector模拟实现
迭代器失效:给tmp开空间,然后将start中的数据移入tmp,delete start,size是由指针相减返回的,start=tmp,导致start指向的空间改变,但是finish还在原来的位置,最后导致size不再是原来的size,所以在删除start之前要保存old_size;如果空间已经满了,就要先保存pos于start的相对位置,因为开空间的话,start改变,pos的位置就失效了,开空间后要更新pos。在类外部使用模板,保证模拟实现的vector是通用的。9、删除任意位置数据。
2025-05-23 22:14:21
378
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅