上一页 1 ··· 7 8 9 10 11 12 13 14 下一页
摘要: 本文介绍了分布式系统中的一致性模型,包括严格一致性、顺序一致性和因果一致性。同时讨论了数据一致性和操作一致性,如单调读一致性、单调写一致性、写后读一致性和读后写一致性等概念。 阅读全文
posted @ 2024-03-31 21:30 pDJJq 阅读(70) 评论(0) 推荐(0)
摘要: 时间轮(TimeWheel)是用于任务调度的数据结构,允许固定时间间隔调度任务。该Go代码提供了一个简单的时间轮实现,包括任务接口、时间节点和时间轮结构体,以及启动、停止、循环和添加任务等功能。 阅读全文
posted @ 2024-03-31 21:28 pDJJq 阅读(49) 评论(0) 推荐(0)
摘要: 本文探讨了在并发环境下多级缓存可能存在的一致性问题,提出了针对读和写/更新操作的解决方案,包括分布式锁和 NO TTL 策略,旨在保证数据一致性和减小对底层数据库的负载。 阅读全文
posted @ 2024-03-31 01:37 pDJJq 阅读(79) 评论(0) 推荐(0)
摘要: atomic.CompareAndSwapInt64 汇编 ​​ 这段代码稍微有些复杂, 我们来慢慢的分析 ​MOVQ $0x1, 0(AX)​ 这一步是为了给i​赋值 ​MOVQ AX, CX​ 将i​的地址传入了CX​寄存器 ​MOVL $0x2, AX​ 将 立即数2​ 存入AX​寄存器, A 阅读全文
posted @ 2024-03-30 15:34 pDJJq 阅读(34) 评论(0) 推荐(0)
摘要: atomic.SwapInt64 汇编 不再浪费时间去找源码了, 因为atomic这部分的实现全部都依赖于底层的汇编指令 ​​ 会发现一件事情, 那就是这里的实现和Store是几乎一致的, 为什么呢? 原因出在XCHG XCHG ​XCHG​ 是x86架构汇编语言中的一条指令,它的全称是“Excha 阅读全文
posted @ 2024-03-30 15:34 pDJJq 阅读(49) 评论(0) 推荐(0)
摘要: 该文章介绍了Go语言中atomic.StoreInt64函数的底层实现。通过汇编指令XCHG来实现原子性地修改存储的值,展示了底层结构对上层建筑的影响。XCHG指令在多线程编程中具有重要作用,但在一些旧计算机上性能不佳。 阅读全文
posted @ 2024-03-30 15:34 pDJJq 阅读(49) 评论(0) 推荐(0)
摘要: LoadInt64函数实际上是通过寻址来获取最新的值,寻址操作的本质即间接引用存储地址。在当前计算机体系下,并发更多是由写操作引起,而读操作通常不存在并发冲突。 阅读全文
posted @ 2024-03-30 15:33 pDJJq 阅读(41) 评论(0) 推荐(0)
摘要: 前言 在atomic中, 常用的有这么几类操作 Add: 增加值 CAS: 比较, 如果old符合预期就替换为new Load: load当前最新的值 Store: 将当前值直接写入到内存中 需要注意的是, 以上操作全部都是原子性的. 对于指令来说, 是不区分类型的, 只区分位数, 而32位只是64 阅读全文
posted @ 2024-03-30 15:28 pDJJq 阅读(16) 评论(0) 推荐(0)
摘要: atomic.AddInt64 介绍 原理 源码 看不到源码解释个勾八原理 源码里只有函数doc, 但是没有函数实现, 但是有一段注释 // AddInt64 atomically adds delta to *addr and returns the new value. // Consider 阅读全文
posted @ 2024-03-29 22:59 pDJJq 阅读(87) 评论(0) 推荐(0)
摘要: golang: 分析查看汇编代码 查看可执行文件 可视化 注意: linux用户需要额外运行go install --tags nowayland loov.dev/lensm@main​ 下载 lensm: go install loov.dev/lensm@main 运行lensm​: lens 阅读全文
posted @ 2024-03-29 22:58 pDJJq 阅读(78) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 下一页