- 博客(18)
- 收藏
- 关注
原创 IM项目——Docker部署后续问题
在开发 IM 项目时,我遇到了一个由 Linux 网络管理机制引发的 Docker 环境问题,同时也总结了一些关于服务端口检测的经验。
2026-11-03 15:45:54
138
原创 IM系统 —— 消息队列解耦与削峰填谷
IM 系统中消息的转发与存储往往效率不匹配,当高并发实时通信的情况下,上层的大量流量很可能将下层存储压垮,为解决这种现象,我们引入了消息队列(该项目选择 RabbitMQ)将上层转发与下层存储解耦隔离,以此有效提高消息管理的可靠性。
2026-09-03 11:03:32
184
原创 IM系统 —— 文件存储管理服务
核心数据结构设计(文件名、大小、内容)。(文件ID、内容)。(文件ID、大小、内容,供客户端后续下载或展示使用)核心 RPC 接口单文件/多文件上传(单文件/多文件下载(
2026-08-10 14:50:59
162
原创 IM系统 -- 构建语音识别服务
该子服务虽然较为简单,但用于了解项目框架的设计非常适用,并且每个子服务的框架都大致相同,理解了一个子服务的启动->调用->完成业务就能够举一反三了。
2026-08-08 21:49:19
204
原创 基于微服务的即时通讯系统 -- brpc与etcd协作
客户端即Channel的使用也并不复杂,需要注意的是我们使用 EchoService_stub 类再次封装了一层,以此进一步简化通信。
2026-07-27 21:18:56
226
原创 基于微服务的即时通讯系统 -- etcd实现服务注册与发现
我们首先通过一个架构图来理解即时通讯系统:即时通讯系统是高并发高可用的,倘若不加注册中心,网关需要轮询每个子服务,子服务需要主动通知网关自己准备好了,不说效率,只是注册发现都会存在海量网络传输,引入注册中心将发现和注册解耦,极大提高效率。
2026-07-23 14:53:42
214
原创 基于微服务的即时通讯系统 —— 配置、日志与测试组件
在分布式系统的微服务复杂架构下,会有多台主机处理各种子服务,这样的并发量是很恐怖的,但问题不仅如此,不同主机的服务是独立的,要让不同主机协同工作需要引入网络通信,这又是很大的一笔开销,总之,微服务这样的高并发和高复杂度的场景下需要引入一些组件帮助我们调试、输出日志、配置等工作。
2026-07-21 14:03:21
159
原创 Linux中动静态库的基本原理
在Linux编程中,我们日常所用的<iostream>、<vector>等被称作库,它们是代码的复用,前人将代码包装好供我们开发使用,那么它的原理是什么呢?今天我们来深度剖析库的制作原理。
2026-07-14 21:22:57
194
原创 Redis的初步理解
1、数据存储在内存中响应速度快2、Redis是单线程模型,并且都是较为简单的数据结构操作(Redis的核心是读取数据,消耗内存和网络,不会很消耗CPU,多线程不仅发挥不出榨取CPU的优势,且会有大量锁竞争降低速率)3、网络方面Redis底层使用的是I/O多路复用的Epoll模型,拥有高效的事件通知机制。
2026-07-11 18:28:28
164
原创 仿 TCMalloc 高并发内存池的设计与实现
thread cache是一个哈希桶结构,每个桶是⼀个自由链表,并且按照映射规则对应内存块大小。thread cache框架:自由链表:利用空闲块头部存储下一个节点的指针,兼容32/64位环境使用void*作为头部大小。
2026-07-05 17:15:58
188
原创 仿muduo库One Thread One Loop式高并发服务器的理解和实现 —— 主从Reactor扩展篇
在底层架构篇我们说到了EventLoop与线程的一个单元的实现,然而为了应对高并发场景,单个EventLoop显然不足,于是我们接下来要扩展为主从Reactor模式,即:一个单元用于监听连接,之后用轮询的类似算法将任务分配给线程池中的各个单元解决(保持One Thread One Loop的设计原则),就像是收银员和后厨的关系。下次再见~
2026-06-28 19:19:16
230
原创 仿muduo库One Thread One Loop式高并发服务器的理解和实现 —— 底层架构篇
好些时间没有写文章了,今天想分享一些关于仿muduo库One Thread One Loop式高并发服务器的理解,希望能够帮助到大家。目录(一)核心架构设计原理(1)Reactor模式(2)One Thread One Loop核心思想(二)核心组件实现(1)Socket模块:套接字封装1、服务端/客户端快捷构造2、网络I/O操作3、套接字选项设置(2)Channel 模块:封装文件描述符与事件回调机制1、管理边界2、事件启停接口的设计3、事件分发函数 HandlerEvent() 的注意点。
2026-06-20 19:51:18
328
原创 C++的临时变量问题
作为一个C++初学者,在临时变量这一部分,听到说临时变量是有只读性的,乍一听没什么问题,但细想来,既然这样,为什么函数返回值为引用时调用后却可以修改了?希望接下来的分析可以解除你的疑惑。这就是我关于临时变量的一些看法,在写文章时,其实我自己也不断在驳倒自己,就是因为我将许多名词相互独立了,但实际上权限,临时变量,只读性,值拷贝,这些全都是可以互相串联起来理解的,你会发现不断串联下去可能会和硬件联系在一起,发现到设计这个语法的初衷,我认为这是我们需要注意的。
2025-10-22 23:17:13
1414
原创 数组指针和指针数组的区别
学习指针真的很让人头疼,最近几天无时不刻在想怎么使用它,现在又学了数组指针和指针数组,老实说,明明只是几个字调换了个位置就能有这么大差别,于是我想分享一下关于我对它们俩的看法int main()//指针数组int a = 10;int b = 20;int c = 30;//类比整型数组//数组指针//类比整型指针return 0;
2025-09-08 19:35:47
2342
原创 关于return的一些理解
在学习C语言时,返回值往往会有些许疑问:我是否应该在此处返回值?return有时或许不止能返回值?是否每个值都返回了?等等,关于这些疑问,我有一些看法。提示:以下是本篇文章正文内容,下面案例可供参考关于return语句的一些见解就分享到这了。我认为用好return的方法就是谨慎,保证每个路径都有返回值就是最安全的,并且最好,或许说一定不要返回局部变量的地址,这是极其危险的。
2025-08-30 19:47:12
1447
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅