- 博客(9)
- 收藏
- 关注
原创 golang M会销毁吗
当执行完一批大量任务后,之前为了执行任务创建大量M和G,此时没有新任务了,会怎么样,一直自旋抢任务吗,还是会销毁一部分这是一个非常经典的状态转换场景。当你的“大计算”洪峰过去,系统进入枯水期时,Go Runtime 会经历一系列**“降温”**动作,既不会一直让所有线程死循环自旋,也不会立刻暴力销毁所有资源。
2026-01-08 19:36:11
285
原创 golang GPM
查找顺序来源细节1P.runnext响应最快,局部性最高。2P.runq (本地)正常的本地任务。3Global Queue (全局)同时也受“61次调度”规则监控。4Netpoller处理异步网络回调。5随机去别的 P 那里抢一半的任务。
2026-01-08 19:26:27
270
原创 golang 数据库缓存优化
采用分片锁机制( LockShardCount=32 ),通过 playerID % LockShardCount 分散锁竞争。- getOrCreatePlayerCache() 使用双重检查锁定(Double-Checked Locking)模式。缓存分区隔离 :目前所有表数据共享同一缓存结构,未来按业务模块拆分缓存。- 实现 getPlayerLock() 方法为不同玩家分配独立锁,大幅降低锁冲突。- 实现 StartCleaner() 定时清理闲置玩家缓存(默认10分钟)
2025-11-25 16:53:39
268
原创 mysql 数据库 InnoDB 数据写入流程
2. 崩溃恢复的关键,用于重做(Redo)已提交事务的物理更改。脏页会由后台线程异步地从 Buffer Pool 写入。必须安全刷新到磁盘,以保障事务持久性。1. 缓存数据和索引页,加速读写。文件,而不是每次提交都强制写入。2. 暂存所有数据变更(脏页)。数据最终的物理存储位置。服务器崩溃则内容丢失。写入是顺序的,非常快。配置决定写入磁盘频率。
2025-11-21 12:08:41
273
原创 有栈协程和无栈协程对比
python3 中异步接口中第三方库 还是有底层代码中使用greenlet,个人感觉 gevent 用起来心智负担小。大多数现代语言和新增的语言标准(Python、C#、C++20、Kotlin、Rust)倾向于。属于无栈协程,gevent 属于有栈携程,无栈协程之所以可以不用保留完整栈帧调用,是因为。由于所有需要的状态(局部变量)都已经被提升到堆上的对象中,当协程挂起时,)来精确标记代码中的每个挂起点。,因为它具有更好的内存效率和更快的上下文切换速度。golang 使用的是有栈携程,跟主流趋势不同。
2025-11-17 10:35:55
287
原创 go 接口和反射
在从key(表名)获取数据库数据的场景下,不同实现方式的性能差异主要体现在**应用层的类型处理开销**上,而数据库查询本身的开销通常占主导。- **特例**:如果Python代码经过高度优化(如使用C扩展的ORM库),在某些场景下可能接近Go的反射方式。- **性能影响**:在高频调用场景下,反射开销可能比纯接口方式高2-10倍(具体取决于实现复杂度)Python的实现方式(字典映射表名到ORM类):**性能通常低于Go的两种方式**- **适用场景**:对性能敏感、类型明确的场景。
2025-08-21 15:34:36
496
原创 Google支付订阅升级
Google Play 开发者 API 中 SubscriptionPurchase 对象内的 paymentState 字段已正式弃用并移除。此项变更作为 Google Play 结算库和订阅模式(2022 年 5 月更新)接口升级调整的一部分,意味着开发者无法再直接查询此字段来判断订阅是免费(例如,免费试用)还是付费
2025-08-08 11:25:51
1882
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1