6 篇
欢迎来到 Go语言项目 专区。
配置读取 使用https://github.com/BurntSushi/toml.git作为toml配置文件的解析库 我们只需要Config.LoadConfig()函数来读取配置文件,其他部分不需要关心。 func LoadConfig() error { // 这里的路径需要根据实际情况修改,指向你的配置
日志库 校园即时聊天系统需要一个日志库来记录系统运行时的各种信息,包括错误日志,访问日志,调试日志等。一个好的日志库能够帮助我们快速定位问题,分析系统行为,以及监控系统状态。 日志库的核心能力主要包括: 支持多输出目标,可根据不同环境将日志写入控制台、文件等多个位置。 提供分级日志能力,例如 INFO、WARN、ER
Redis在校园即时聊天系统中的应用 Redis 是一种以内存为核心的数据库系统,因此具备很强的读写能力。由于数据直接保存在内存中,它可以在单位时间内完成大量读写请求,这使其非常适合高并发、低时延的业务场景。把 Redis 作为后端数据的存储与缓存媒介,能够有效提高系统处理请求的效率,并改善整体性能表现。 在本项目里,
我的理解是为了保证消息的顺序性和防止老消息饿死 这段代码的设计意图,本质上是两个字: 补发 它把消息队列分成两层: ChatServer.Transmit:全局主队列,服务端真正消费这个队列 c.SendTo:当前客户端自己的“积压队列” 为什么要先用 for 把 SendTo 里的旧消息往 Transmit 搬,
这里的 server 逻辑,核心就是一句话: 维护在线连接,消费待转发消息,再把消息分发给目标客户端。 核心文件是 internal/service/chat/server.go:25。 1. Server 里有什么 Server 结构体有 4 个关键成员: Clients map[string]*Client 按用
上来先盯着自己的 handler 盯了一会,越看越不对劲。 写到这一步,前面的 handler 基本能跑了,但越看越觉得别扭:日志全是 log.Fatal 跟 fmt.Println 混着来,错误常量到处散,handler 里又写参数校验又发邮件又操作 Redis。这一篇记录一次小重构,主题是三件事:日志