摘要: public class LinkedListRevert { public static void main(String[] args) { Node next3 = new Node(4,null); Node next2 = new Node(3,next3); Node next = new Node(2,next2); ... 阅读全文
posted @ 2019-04-23 00:27 菜霸 阅读(353) 评论(0) 推荐(0)
摘要: public class QuickSort { public static void main(String[] args) { int[] arr = { 49, 38, 65, 97, 23, 22, 76, 1, 5, 8, 2, 0, -1, 22 }; quickSort(arr, 0, arr.length - 1); Sys... 阅读全文
posted @ 2019-04-21 22:42 菜霸 阅读(126) 评论(0) 推荐(0)
摘要: public class binSearch { public static void main(String[] args) { int ary[] = {1,5,3,54,32,643,34,2543}; System.out.println(binSearch(ary,0,ary.length-1,643)); } publi... 阅读全文
posted @ 2019-04-21 22:39 菜霸 阅读(151) 评论(0) 推荐(0)
摘要: 很多人都分不清Major GC, Full GC的概念,事实上我查了下资料,也没有查到非常精确的Major GC和Full GC的概念定义。分不清这两个概念可能就会对这个问题疑惑:Full GC会引起Minor GC吗? 经过一系列的查找和对JVM表现的分析,基本可以给Full GC和Major G 阅读全文
posted @ 2019-04-12 01:50 菜霸 阅读(2294) 评论(0) 推荐(2)
摘要: 从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外, 阅读全文
posted @ 2019-04-08 18:58 菜霸 阅读(219) 评论(0) 推荐(0)
摘要: 分布式事务 指事务的每个操作步骤都位于不同的节点上,需要保证事务的 AICD 特性。 1. 产生原因 数据库分库分表; SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不同的节点上。 2. 应用场景 下单:减少库存同时更新订单状态。库存和订单不在不同一个数据库,因此涉及分布式事务。 支 阅读全文
posted @ 2019-04-08 17:55 菜霸 阅读(1207) 评论(0) 推荐(0)
摘要: 我们要做到不但会写SQL,还要做到写出性能优良的SQL语句。(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下, 阅读全文
posted @ 2019-04-04 13:01 菜霸 阅读(402) 评论(0) 推荐(0)
摘要: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致 阅读全文
posted @ 2019-04-03 21:01 菜霸 阅读(182) 评论(0) 推荐(0)
摘要: 单例模式是设计模式中用得比较多的一种设计模式,它的主要优点有: 1.访问受控,保证访问的是唯一的实例。 2.由于只有一个实例,所以节省资源。 缺点: 灵活性低,如果对象的应用场景多变,则不适用单例模式。 如何实现单例模式? 1.1 懒汉模式(线程不安全) 想要实现单例,莫非就是要适用static关键 阅读全文
posted @ 2019-04-03 20:16 菜霸 阅读(5034) 评论(0) 推荐(0)
摘要: 思路是创建两个字符串a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b;B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁。直接贴代码: 运行的结果如图所示: 可以看到,Lock1获取obj1,Lock2获 阅读全文
posted @ 2019-03-28 18:10 菜霸 阅读(190) 评论(0) 推荐(0)