摘要:
很简单的配置,但是我在官网和Stack Overflow找了半天没解决,可能是我理解和搜索的不对,记录一下方便后来的人能快速解决 首先Zookeeper版本大于3.6.0 然后就是很常规的修改zoo.cfg文件 问题来了,按照官网的说法,我们首先需要配置,默认不开启 如果我们在zoo.cfg里添加z 阅读全文
摘要:
JMM 硬件的效率与一致性 由于计算机 的存储设备与处理器的运算速度有着几个数量级的差距,所以现代计算机系统都不得不加入一层或多层读写速度尽可能接近处理器运算速度的**高速缓存(Cache)**来作为内存与处理器之间的缓冲:将运算需要使用的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步 阅读全文
摘要:
四种锁状态对应的Mark Word内容 锁状态 存储内容 存储内容 无锁 对象的hashCode、对象分代年龄、是否是偏向锁(0) 01 偏向锁 偏向线程ID、偏向时间戳、对象分代年龄、是否是偏向锁(1) 01 轻量级锁 指向栈中锁记录的指针 00 重量级锁 指向Monitor的指针 10 轻量级锁 阅读全文
摘要:
start() 启动一个新的线程,在新的线程中运行run()方法中的代码 start方法只是让线程进入就绪状态,不是马上运行。需要等待CPU的时间片分给它 一个线程的 start 方法只能调用一次,如果多次调用会抛出IllegalThreadStateException run() 新线程启动后会调 阅读全文
摘要:
继承 Thread 类重写 run 方法或者 new Thread 重写 run 方法 继承Thread类 直接new Thread重写run方法 lamada简化 实现 Runnable 接口 将Runnable作为target传递给线程执行 将线程与任务(Runnable)分开 使用Runnab 阅读全文
摘要:
在这篇文章中介绍了一致性非锁定读和快照读的概念。快照数据其实就是当前行数据之前的历史版本,每行记录可能有多个版本。一个行记录可能有不止一个快照数据,一般称这种技术为行多版本技术。由此带来的并发控制,称之为多版本并发控制(Multi Version Concurrency Control, MVCC) 阅读全文
摘要:
标准SQL事务隔离级别实现原理 READ-UNCOMMITTED(读取未提交) 事务对当前被读取的数据不加锁; 事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级共享锁,直到事务结束才释放。 READ-COMMITTED(读取已提交) 事务对当前被读取的数据加行级共享锁(当读到时才加锁) 阅读全文
摘要:
锁 对于 MyISAM 存储引擎,只支持表级锁,对于 InnoDB 来说,既支持表级锁、也支持行级锁。所以 InnoDB 可以用于高并发的场景下而 MyISAM 不行。 按锁的颗粒度划分 行锁 对一行数据加锁,当一个事务操作某一行事务时,只对该行数据加排他锁时,其他事务对其他行数据操作时不会影响,并 阅读全文
摘要:
流程介绍 最近在做一个带有Spring Security和JWT权限验证的秒杀系统,写的差不多准备压测一下,因为与其他接口不同,需要在请求头中带有token才能验证,所以必须要先生成Token再登录, 本文分为三个部分 用户注册 用户登录生成Token 带着Token去访问秒杀接口 用户注册 这部分 阅读全文
摘要:
定时删除 定时删除策略对内存是最友好的:通过使用定时器,定时删除策略可以保证过期键会尽可能快地被删除,并释放过期键所占用的内存。 另一方面,定时删除策略的缺点是,它对CPU是最不友好的:在过期键比较多的情况下,删除过期键这一行为可能会占用相当一部分CPU,在内存不紧张但是CPU非常紧张的情况下,将C 阅读全文