AI 模式
大家应该还记得这个之前刷爆朋友圈的 估值两个一个亿的 AI 核心代码
。
和我这里的场景再合适不过了。
于是我新增了一个命令用于一键开启 AI 模式,使用情况大概如下。
欢迎大家更新源码体验,融资的请私聊我🤣。
聊天记录
聊天记录也是一个比较迫切的功能。
使用命令 :q 关键字
即可查询与个人相关的聊天记录。
这个功能其实比较简单,只需要在消息发送及接收消息时保存即可。
但要考虑的一点是,这个保存消息是 IO 操作,不可避免的会有耗时;需要尽量避免对消息发送、接收产生影响。
异步写入消息
因此我把消息写入的过程异步完成,可以不影响真正的业务。
实现起来也挺简单,就是一个典型的生产者消费者模式。
主线程收到消息之后直接写入队列,另外再有一个线程一直源源不断的从队列中取出数据后保存聊天记录。
大概的代码如下:
写入消息的同时会把消费消息的线程打开:
而最终存放消息记录的策略,考虑后还是以最简单的方式存放在客户端,可以降低复杂度。
简单来说就是根据当前日期+用户名写入到磁盘里。
当客户端关闭时利用线程中断的方式停止了消费队列的线程。
这点的设计其实和 logback
写日志的方式比较类似,感兴趣的可以去翻翻 logback
的源码,更加详细。