首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
QZQ54188
掘友等级
华南理工大学
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
12
文章 12
沸点 0
赞
12
返回
|
搜索文章
QZQ54188
@华南理工大学
·
1月前
关注
DDIA第一章笔记:数据系统架构中的权衡
数据系统架构中的权衡 建议配合第一章食用。 当下数据系统的挑战 在Web和移动应用场景下,用户的数据被放在服务端数据基础设施中。用户每次与应用交互,既会读取服务端存储的数据...
0
评论
分享
QZQ54188
@华南理工大学
·
2月前
关注
redis分布式锁相关思考
随着数据量不断增大,单机部署整套应用程序已经不可能,此时需要水平扩展多台机器均摊负载。然而水平拓展带来的代价是共享内存的消失,在单机项目中,我们可以轻松通过锁在编码层面轻松...
0
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM项目13:优化消息通路(下)
使用SessionID替代UserID 当前消息采用用户ID作为发送对象,而不是会话ID,这就造成了在同一个聊天窗口里,A 发的消息和 B 发的消息,使用的是两套完全不相关...
3
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM项目12:优化消息通路(上)
消息唯一Uuid生成 消息在客户端会生成一个唯一的Uuid,这个Uuid是使用Uuidv4算法生成的128位随机,服务端收到上行之后就会根据消息的Uuid进行去重处理,不是...
2
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM项目11:上下行消息通路实现
上一节我们实现了上行消息的可靠性,这次我们分析下行消息可靠性应该怎么实现,实现一个可运行的上下行消息通路。 下行消息序列号 我们实现了上行消息可靠性,保证服务端处理消息的顺...
2
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM项目10:上行消息可靠性实现
上一节中我们分析了消息可靠性应该怎么做,这次我们进行具体实现。 上行消息可靠回顾 要保证客户端发送消息可靠的话,我们就必须在客户端与服务端交互的protocal.proto...
2
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM项目9:消息可靠性分析
上一节我们实现了消息协议的定义和交互测试,这一节我们需要实现消息的可靠性。 从端到端的设计思想来看,无论底层依赖何种通信协议(无论是 TCP、UDP 还是 QUIC),业务...
2
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统8:StateServer(上)
在网关层我们通过Epoll实现了对于用户长连接FD的监听,大大减少了协程数的消耗,还通过gateWay将消息转发给StateServer进行处理,这样网关层就只负责维护长连...
1
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统7:网关层(下)
在网关层(上)中我们实现了多Reactor模型监听用户连接的FD,不需要再为每个连接FD开启两个阻塞监听的读写协程,大大节省了服务器的资源。在这一节中我们需要实现网关层的核...
1
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统6:网关层(上)代码
上一节我们讲过要实现epoll监听用户建立的收发消息的FD,这样可以通过一个epoll协程监听多个FD,然而在大规模并发场景下, 单个协程监听所有 FD 依然存在明显的性能...
1
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统5:网关层(上)
我们在之前已经实现了ipconfig和etcd服务发现的分析和代码,客户端经过ipconfig找到合适的网关机器然后在上面建立长连接,之后就通过这个网关机器发送和接收消息,...
1
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统4:负载均衡代码设计
本节给大家带来前两节中负载均衡相关代码实现。 网关层 首先是网关层,这里我抽象出了网关层中对负载均衡有用的字段作为结构体: 第一个字段不要说返回的是网关节点的ip和端口,用...
2
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统3:负载均衡(下)
上一讲中提到了IM系统中需要拆分出一个接入层网关,这个网关维护了客户端的长链接和用户ID与socket的map关系。拆分完长连接网关层之后我们为了让客户端连接到对应的网关并...
2
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统2:负载均衡(上)
数据量或者并发量大到单机承受不住时,就进行多机器部署,此时为了分摊负载压力,我们就需要进行负载均衡和服务发现的处理,下面开始针对即时IM项目进行相关分析,得出重构方案。 一...
1
评论
分享
QZQ54188
@华南理工大学
·
3月前
关注
重构即时IM系统1:现状与目标
笔者之前在网上参考了一个IM即时通讯的项目,但是在看完DDIA之后发现这个项目还是太玩具了,虽然支持IM系统中的互发消息,群聊,好友功能和会话功能,但实际实现上相当暴力,就...
0
评论
分享
QZQ54188
@华南理工大学
·
5月前
关注
go中单例模式以及使用反射破坏单例的方法
单例模式保证一个类或者结构体在整个应用程序的生命周期中只存在一个实例,并且提供一个全局的访问点来获取这个实例,主要用于管理共享资源和控制全局状态。 例如在管理配置中,程序自...
0
评论
分享
QZQ54188
@华南理工大学
·
5月前
关注
C++编译期计算
C++是一个追求极致性能的语言,我们总想让代码跑的更快,这篇博客将聚焦于一个核心思想,尽可能的将运行时开销转移到编译期,通过在程序编译阶段就完成计算、逻辑判断和循环展开,我...
0
评论
分享
QZQ54188
@华南理工大学
·
5月前
关注
对Raft算法中一些边界情况的理解
笔者在复盘raft共识算法时,发现自己对一些边界情况的理解还不够,以下问题是笔者在学习时做的笔记。 在raft投票限制中,候选人除非日志中包含所有已提交的条目,否则无法赢得...
0
评论
分享
QZQ54188
@华南理工大学
·
5月前
关注
go泛型浅析
笔者是在学习C++之后转go的,在学习go语言的过程中发现go是使用接口实现泛型,使用interface{}接收任意类型,通过类型断言或反射处理具体类型。go语言中的接口使...
0
评论
分享
QZQ54188
@华南理工大学
·
6月前
关注
使用C++实现一个简易的线程池
在现代软件开发中,多线程编程已经成为提升程序性能的常见手段。无论是处理大量 I/O 请求的服务器,还是进行 CPU 密集型计算的应用,多线程都能显著提高吞吐量和响应速度。然...
0
评论
分享
下一页
个人成就
文章被点赞
38
文章被阅读
7,005
掘力值
947
关注了
1
关注者
7
收藏集
0
关注标签
7
加入于
2025-03-22