- 博客(101)
- 收藏
- 关注
原创 应用层自定义协议【序列化+反序列化】
x = x;_y = y;int _y;char _oper;public:// 有效载荷长度\r\n有效载荷内容\r\n/*** 返回值说明:* 0:表示没有内容* -1:表示错误字符。
2025-07-23 16:18:55
652
原创 socket编程(TCP)
每一个都是对应一个文件描述符对外提供服务的, 未来我们一旦建立好连接,服务器不能用创建好的文件描述符和客户端通信,就好比不能用张三给客人提供服务,而应该让accept的返回值文件描述符来给用户提供服务。这里可以看到客户端关了服务端立马读到了,客户端在连这个文件又变成4了,这说明客户端一关闭服务端就将刚刚的文件描述符关了,关了之后你在连接我给你的还是4,此时文件描述符就被重复使用了。获取新连接之后创建子进程,创建子进程,父进程的文件描述符会被子进程继承的,文件描述符所指的文件也都是一样的。
2025-07-23 16:17:44
305
原创 socket编程(UDP)
认识端口号socket编程接口UDP网络程序查看已经运行的服务服务器读取数据Client客户端根据UDP客户端服务端实现简单的英译汉的网络字典server.ccclient.cc实现ChatServer聊天室Route.hpp(路由)windows客户端与linux服务端交汇windows客户端。
2025-07-21 17:25:54
784
原创 基于责任链模式实现消息队列
消息队列提供了一个从一个进程向另外一个进程发送有类型块数据的方法每个数据块都被认为是有⼀个类型,接收者进程接收的数据块可以有不同的类型值消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX)每个消息队列的总的字节数也是有上限的(MSGMNB),系统上消息队列的总数也有上限(MSGMNI)的消息队列的生命周期是随内核的消息队列支持全双工通信。
2025-07-16 10:52:20
880
原创 20. C++使用HashTable同时出封装unordered_map和unordered_set
20. C++使用HashTable同时出封装unordered_map和unordered_set
2025-05-07 12:44:29
429
原创 13. C生万物之动态内存管理
本文我总共会介绍三种动态内存函数,分别是malloc()calloc()realloc(),与之对应内存释放函数还有free()
2024-07-05 21:47:02
1241
原创 Linux多线程【线程互斥】
取出部分的汇编代码 操作并不是原子操作,而是对应三条汇编指令:初始化互斥量第二个是静态分配(不需要手动销毁)销毁互斥量销毁互斥量需要注意:调用 时,可能会遇到以下情况:加锁的本质:是用时间来换取安全加锁的表现:线程对于临界区代码串执行加锁原则:尽量的要保证临界区代码,越少越好结论:所有对于其他线程,要么没有申请锁,要么释放了锁,对于其他线程才有意义mythread.cc互斥量实现原理探究经过上面的例子,已经意识到单纯的 或者 都不是原子的,有可能会有数据一致性
2024-07-02 21:11:48
1012
原创 Linux多线程【线程控制】
线程概念: 线程是进程内的轻量级执行分支,共享进程资源(地址空间、页表等),在Linux中通过复用进程PCB(task_struct)实现 进程=多个PCB+程序代码/数据,线程是CPU调度的基本单元 特点:通信高效(共享内存)、创建/切换快、无内存隔离(线程崩溃导致进程退出) 分页式存储: 物理内存按固定页框划分,虚拟地址空间通过页表映射到物理页框 解决内存碎片问题,实现不连续物理内存的连续虚拟访问 内核用page结构体管理物理页,包含使用状态等元信息 核心区别: 进程
2024-07-02 16:37:15
1324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人