【MAH开发日记】今天天气很好,先来一局昆特牌
-
鉴于催更的人不少,开个摸鱼贴记录一下摸鱼的日程,让大家焦急等待的过程中能够积累多一些愤懑(x)
- 催更可以集中到这里
- 特性提议也可以集中到这里
- 不允许发黄色图
-
今天是第一天
打牌
Duel~~
-
-
举报了。请增添发帖内容,不能少于 8 个字符。
-
今天是个上坟的好日子啊好日子
-
举报了
请增添发帖内容,不能少于 8 个字符。 -
第二天
打算替换原本的分段锁LinkHashMap,设计一个写阻塞的消息队列。通过偏置维护当前session读取到的消息位置,而session只需要维护当前的偏置即可,比起现在一个session单独维护一个链表会有更好的内存表现。在队列空间满足的情况下,对于历史消息的获取也比较方便。
写了几个字,好累哦。打牌!
-
@ryoii 你好菜啊
-
@ryoii 你好菜啊还没打赢一局
-
啊诺嗫啊诺嗫,这几天
打昆克牌了吗写mah了吗 -
催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更催更
-
好像摸鱼了几天,把缓存队列写得七七八八。为了实现简单,写入直接做了同步锁,测了一下性能,绝对是够用了。
队列设计成了两套:基于数组的方式有点在于缓存和未消费数据的大小都是固定的,比较好控制;基于链表的虽然缓存是固定的,但是如果上下文中有未消费的数据,链表就会堆积,内存的清理依赖于 GC ,稳定性我还没有太深入的测试。
吐槽一句最近梯子全面爆炸,导致我很多开发环境的导入全部走不了代理。垃圾华为云镜像明明有包,但是就是给我报错不能下载,切换到阿里云镜像瞬间舒畅了,果然福报场是真的福报
比较重要的队列实现了。接下来只要抽象出序列化器的接口,就可以实现多种模式的序列化。优先实现原http格式的序列化器,再实现 websocket 的序列化器,以恢复原1.0版本的兼容性。后阶段陆陆续续加入反向ws,远程hook等序列化器。有计划实现可以通过脚本语言自定义返回格式的序列化器,可是没想好使用什么脚本语言,以及上下文如何构建
大概就这么多了吧,摸完接口就开始打牌啦
-
开发日记也鸽了555
-
时隔一个月我回来啦。
写了半天的队列最后发现未读消息的缓存和已收消息缓存应该是区分的,因为还要考虑到bot自己发送的消息也应该被记录到已收的消息缓存里。结果呢,我造的队列就被我删掉啦。于是回到了原始人的生活,用会 buildin 的线程安全容器来做。
目前呢,http 和 ws 的模块化已经进行的差不多了,近期应该会发布一个快照版本,以让旧代码迁移到新的api上。
解耦的序列化器和其他模块会陆陆续续地更新
-
@ryoii FYI: 将来可能会支持通过 ID 拉取消息记录, 这可能会影响缓存策略?
-
@him188 部分影响,如果是分片的会怎么处理
-
@ryoii 那就只能拉到那一片,所以 MessageSource 里的 id 是array
-
@him188 这影响api了
-
原神真好玩
MAH 2.0 第一个快照版本已经发布 传送门
[2.0-RC1] - 2021-05-10
新增
- 支持新消息类型:
MusicShare
,Dice
,ForwardMessage
, `` - 支持新消息事件:
好友输入状态改变
,好友昵称改变
,群荣誉改变(龙王)
- 支持新操作:
设置精华
,删除好友
,查询资料片
,戳一戳
- 群成员返回
最后发言事件
,入群时间
等字段 - 多媒体上传支持 base64 格式
- 支持反向 websocket, 上报支持回调
变更
群名片变更
,群头衔变更
,群权限变更
,群匿名开启变更
等事件new
字段正式废除- 认证流程变更, 且支持从请求头认证
- http 部分接口返回格式变更
- 多媒体上传不再进行缓存
详见迁移文档
优化
- adapter 拆分
- 解决已发现的内存泄漏
正式发布前待解决
- 恢复
console
命令相关接口 - 恢复群文件相关接口
- 恢复 API TESTER 工具
版本依赖
- mirai core: 2.6.2
该版本为预览版本, 功能未经过充分测试, 提前发布以适应接口变更
请酌情使用 - 支持新消息类型:
-
怎么只有优化?