![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 93
菜鸟学习JAVA
仅用于分享一下自己的学习笔记,有错误的话请大佬指出
展开
-
MySql单表过大水平分表实践从技术选型到方案代码落地
水平拆分表就是按照表中的记录进行分片,那么具体应该怎么进行拆分,涉及到数据归并要怎么进行处理,原来的join语句还能用吗?原创 2021-12-05 15:26:33 · 3091 阅读 · 0 评论 -
数据库分库分表主键生成策略SNOWFLAKE
分表的时候,如何去设计全局唯一的主键ID。全局唯一 ID 几乎是所有设计系统时都会遇到的,它在存储和检索中有至关重要的作用原创 2021-11-30 20:12:36 · 899 阅读 · 0 评论 -
CAS原理详解
CAS简介CAS 的意思是 compare and swap,比较并交换。CAS 的引入是为了解决java锁机制带来的性能问题。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。解决线程安全问题volatile是不错的机制,但是volatile不能保证原子性。因此对于同步最终还是要回到锁机制上来。独占锁原创 2021-09-11 22:11:21 · 2204 阅读 · 0 评论 -
HashMap源码数据结构与动态扩容分析
涉及知识点位运算 继承 数据结构 数组 链表 红黑树HashMap基本知识JDK1.8之前数据结构是数组+链表JDK1.8以后采用数组+链表+红黑树其中,当数组元素超过64个且数组单个位置存储的链表元素个数超过8个时,会进化成红黑树,红黑树的引进时为了加快查找效率同样,当数组单个位置存储的链表元素个数少于6个时,又会退化成链表HashMap重要的类属性其实JDK的源码都有非常详细的注释,但还是翻译一下吧,如下:初始容量大小为16/** * The default initial原创 2021-08-01 22:41:46 · 4088 阅读 · 0 评论 -
RabbitMQ实战指南之消息可靠性
要保证消息的可靠性,就需要保证消息在流转的每一个阶段都能够保证可靠性从图上我们大概可以看出来一个消息会经历四个节点,只有保证这四个节点的可靠性才能保证整个系统的可靠性。生产者发出后保证到达了MQ。MQ收到消息保证分发到了消息对应的Exchange。Exchange分发消息入队之后保证消息的持久性。消费者收到消息之后保证消息的正确消费。生产者发送消息到MQ Broker可靠性保障这是消息流转的第一个过程,我们的生产者发送消息之后可能由于网络闪断等各种原因导致我们的消息并没有发送到MQ之中,原创 2021-07-26 14:19:29 · 5272 阅读 · 0 评论 -
MySQL索引:BST、AVL、红黑树,B-树、B+树
二叉查找树(BST)二叉查找树(Binary Search Tree),也称二叉搜索树、有序二叉树(ordered binary tree),排序二叉树(orted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点二叉查找树在极端的情况下会退化成现线性的结构,降低查找效率树的深度直接决原创 2021-06-13 22:50:17 · 6116 阅读 · 1 评论