Kubernetes剖析 梳理容器技术生态的发展脉络,用最通俗易懂的语言描述容器底层技术的实现方式,知其然,也知其所以然。Kubernetes 集群号称“非常复杂”,但是如果明白了其中的架构和原理,选择了正确的工具和方法,它的搭建却也可以“一键安装”,它的应用部署也可以浅显易懂。“编排”永远都是容器云项目的灵魂所在
DTM分布式事务 DTM,Distributed Transaction Manager, 其是一个分布式事务管理器,解决跨数据库、跨服务、跨语言更新数据的一致性问题。 DTM提供了Saga、TCC、XA和二阶段消息模式以满足不同应用场景的需求,同时首创的**子事务屏障**技术有效解决`幂等`、`悬挂`和`空补偿`等异常问题。 DTM的优点:- 提供简单易用的接口,拆分具体业务接入分布式事务- 支持多语言栈- 核心技术**子事务屏蔽**,降低处理子事务乱的难度
golang优雅退出 graceful shutdown,优雅退出。指HTTP服务接受到用户的退出指令后停止接收新请求,在处理和回复当前正在处理的这批请求后主动退出服务。区别于SIGKILL(kill -9 or CTRL + C),安全退出可以最小化程序在时的服务抖动用户的退出指令一般是SIGTERM(k8s的实现)或SIGINT(常常对应bash的Ctrl + C。
Mysql存储-EAV模式 EAV(Entity-Attribute-Value)模式,也称为对象-属性-值模式,是一种常用于数据库设计的灵活模式,适用于具有大量属性和属性值的实体。它在MySQL数据库中的实现可以解决一些传统关系型数据库表结构无法轻松满足的需求,例如动态属性、稀疏属性等。EAV模式的核心思想是将实体(Entity)的属性(Attribute)和值(Value)分别存储在不同的表中。这样可以在不修改表结构的情况下轻松添加或删除属性,从而提高数据库的灵活性。
Go并发读取string的Panic问题 本次问题出现的原因是string的修改并非是原子操作,与int、bool等不同,所以与数据竟态给的Demo不尽相同。在读取或复制这个字符串的时候,刚好另一个goRoutine只更改了str没有修改len,这时候会出现上述现象:空字符串的长度为9,最终在bytealg.CountString()发生panic。
AQS、CAS、Synchronized小理解 小伙伴们可以在参考思维导图的时候,去看java.util.concurrent的源码,理解max~ABA问题:耳冉现在有100块钱,按顺序执行线程应该是执行线程1、线程3(执行线程2时仅剩50块钱),所以最后结果耳冉还剩100块钱。若是在线程1读的时候, 线程2先进行操作,则剩50块钱(此时线程1还在读);若是在线程1读的时候,线程3再进程操作,则剩100块钱(此时线程1还在读);这是线程1读到了耳冉还有100块钱,就取走50 ,因此只剩下50块钱...
HashMap重要思维导图 HashMap为什么使用红黑树而不是其他的数据结构回顾一下二叉树的基本内容:二叉排序树(查找树)若左子树不为空,则左子树上所有结点的值均小于根结点的值。若右子树不为空,则右子树上所有结点的值均大于根节点的值。左右子树也为二叉排序树平衡二叉树(AVL树)是一种二叉查找树,当且仅当两个子树的高度差不超过1时,这个树是平衡二叉树红黑树是许多二叉查找树中的一种,它能保证在最坏的情况下,基本动态集合操作时间为O(lgn)为什么不使用二叉排序树在添加元素的时候极端情况下会出现线性结构eg:.