摘要:
事务的隔离级别 读未提交(read-uncommitted):最低级的隔离级别,允许其他事务读到未提交的值; 读已提交(read-committed):事务只能读取到其他事务提交的数据; 可重复读(repeatable-read):对同一条数据多次读取结果都是一样(mysql默认隔离级别); 串行化 阅读全文
摘要:
简介 索引是一种用于快速查询和检索数据的数据结构,类似于书的目录。在几百页的书通过几页目录就可以精确定位到我们想看的章节 优点和缺点 优点 正确的使用索引可以大大提高检索速度 可以使用唯一索引保证数据在库中的唯一性 使用聚合索引减少回表,降低IO次数 缺点 索引不宜创建的太多,否则增删改时不仅修改数 阅读全文
摘要:
问题背景 前段时间碰到客户问题发现是 ConcurrentHashMap的computeIfAbsent导致死循环(ConcurrentHashMap死循环问题分析)就很好奇HashMap的computeIfAbsent会不会也有问题,一试之下发现确实存在问题,相同的代码在HashMap中会丢失插入 阅读全文
摘要:
问题背景 在处理客户问题时,有个方法一调用就卡住了,最后排查时发现堆栈一直卡在java.util.concurrent.ConcurrentHashMap#computeIfAbsent代码中,一直在进行循环,最后确认是在该代码中死循环了。 发生原因 在使用ConcurrentHashMap的com 阅读全文
摘要:
问题背景 https://stackoverflow.com/questions/9096987/how-to-overwrite-http-header-host-in-a-httpurlconnection/9098440 在与第三方系统联调时,给出的文档需要在 headers中给host属性添 阅读全文
摘要:
简介 Kafka是一个分布式消息系统,有LinkedIn公司开发,现已成为Apache基金顶级开源项目。 是一种快速、可扩展的、分布式的消息发布-订阅系统 基础组成 producer consumer broker topic partition 消息和批次 消息:Kafka把数据单元称之为消息,可 阅读全文
摘要:
AQS是什么 AbstractQueuedSynchronizer是一个抽象的队列同步器,AQS利用模板方法模式解决了开发者在实现同步器时的复杂问题,提供了一个通用的加锁解锁框架。 AQS执行原理 AQS为实现的同步器提供了通用的执行框架,定义了对资源state的获取和释放流程。AQS核心思想是在C 阅读全文
摘要:
volatile的作用 volatile主要用于解决可见性和有序性的问题,但不保证原子性 可见性: 线程在操作变量时,会将主存中的变量拷贝一份到本地存储;修改有再找时机写回主存(不可控),这样多线程并发时会导致其他线程看到的数据和当前线程不一致 使用volatile关键字修饰变量,可使得每次执行写操 阅读全文
摘要:
简介 JDK1.5之前想要并发使用官方提供的线程安全的List只能选择Vector,但是Vector类中增删改查等方法都加了synchronized关键字,虽然能够保证同步,但是因为同一个实例多个线程竞争一把锁,导致性能非常低下。 JDK1.5之后引入的JUC包中提供了一个CopyOnWriteAr 阅读全文
摘要:
一、ES集群模式 ES使用主从模式,因为ES的典型场景中的另一个简化是集群中没有那么多节点。通常节点数量远远小于单个节点能够维护的连接数,并且网络环境并不需要经常处理节点的加入和离开。 1、选举算法 ES中主要使用Bully算法作为选举算法(优点是易于实现) Bully算法:假定所有的节点都有一个唯 阅读全文