摘要: [toc] 分布式相关问题 Zookeeper应用场景 其实zk的应用场景都是针对zk可以监听某个节点,并且可以感知到节点的修改或者节点的数据的修改,这样就可以利用根据节点或者节点的数据变化这一特性而应用到很多的场景中,只要抓住这一个特性就可以了。 zk实现分布式协调 这个其实是zk很经典的一个用法 阅读全文
posted @ 2019-03-31 16:35 刘丽刚 阅读(229) 评论(0) 推荐(0) 编辑
摘要: [toc] 分布式事务 两阶段提交方案 布式事务方案,比较适合单块应用里,跨多个库的分布式事务,而且因为严重依赖于数据库层面来搞定复杂的事务,效率很低,绝对不适合高并发的场景。 TCC方案(实现起来非常复杂) 1)Try阶段:这个阶段说的是对各个服务的资源做检测以及对资源进行锁定或者预留 2)Con 阅读全文
posted @ 2019-03-31 16:35 刘丽刚 阅读(234) 评论(0) 推荐(0) 编辑
摘要: [toc] MQ相关问题 为什么使用MQ 解耦 如:A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩溃中。。。再来点更加崩溃的事儿,A系统要时时刻刻考虑BCDE四个系统如果挂了咋办?我要不要重 阅读全文
posted @ 2019-03-31 16:33 刘丽刚 阅读(217) 评论(0) 推荐(0) 编辑
摘要: [toc] java垃圾回收 JVM内存模型 如何判断是否垃圾 引用计数法 引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,则对象A就不可能再被使用。 引用计数法存在的问题: 1. 效率问题, 阅读全文
posted @ 2019-03-29 21:37 刘丽刚 阅读(1774) 评论(0) 推荐(0) 编辑
摘要: [toc] java运行时数据区分析 概览 堆 是Java虚拟机所管理的内存中最大的一块。由所有线程共享,在虚拟机启动时创建。 堆区唯一目的就是存放对象实例。 堆中可细分为新生代和老生代(垃圾回收期主要回收的区域),新生代又可细分为Eden空间,From Survivor空间、To Survivor 阅读全文
posted @ 2019-03-29 11:01 刘丽刚 阅读(546) 评论(0) 推荐(0) 编辑
摘要: [toc] String中字符串==分析 new String new String都是在堆上创建字符串对象。 intern() 调用intern()方法时,编译器会将字符串添加到常量池中(StringTable维护),并返回指向该常量的引用。 通过字面量赋值 如:String str = "twn 阅读全文
posted @ 2019-03-29 10:14 刘丽刚 阅读(584) 评论(0) 推荐(0) 编辑
摘要: [toc] 七种写法的单列模式 版本1:饿汉式 版本2:多线程可能导致多个实例 版本3:效率有待优化 版本4:Double Check可能出现空指针异常 版本5:Double Check 版本6:通过静态内部类构造 版本7:通过枚举构造 阅读全文
posted @ 2019-03-25 14:17 刘丽刚 阅读(347) 评论(0) 推荐(0) 编辑
摘要: [toc] 自定义Lock以及ReadWriterLock 基于synchronize实现自定义版Lock 基于synchronized实现自定义版ReadWriterLock 阅读全文
posted @ 2019-03-24 16:04 刘丽刚 阅读(305) 评论(0) 推荐(0) 编辑
摘要: [toc] 生产者消费者模型实现方案 版本1:无通信的生产消费模型 版本2:使用if导致临界变量出现问题生产消费模型 版本3:使用notify导致虚假唤醒导致死锁生产消费模型 版本4:使用wait,notifyAll生产消费模型 版本5:使用Lock,Condition生产消费模型 版本6:使用自定 阅读全文
posted @ 2019-03-24 15:44 刘丽刚 阅读(263) 评论(0) 推荐(0) 编辑
摘要: [toc] 守护线程与join 守护线程 所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在 阅读全文
posted @ 2019-03-24 14:33 刘丽刚 阅读(434) 评论(0) 推荐(0) 编辑