摘要: 开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。 或者是线程 A 在执行到某个条件通知线程 B 执行某个操作。 可以通过以下几种方式实现: 阅读全文
posted @ 2018-07-19 08:31 crossoverJie 阅读(896) 评论(3) 推荐(1) 编辑
摘要: 不管是在面试还是实际开发中都是一个应该掌握的技能。 阅读全文
posted @ 2018-07-18 08:35 crossoverJie 阅读(1026) 评论(7) 推荐(1) 编辑
摘要: 众所周知 HashMap 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。 阅读全文
posted @ 2018-07-17 08:55 crossoverJie 阅读(1597) 评论(1) 推荐(1) 编辑
摘要: 使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程获得了锁之后仍然可以反复的加锁,不会出现自己阻塞自己的情况。 阅读全文
posted @ 2018-07-16 08:00 crossoverJie 阅读(606) 评论(0) 推荐(1) 编辑
摘要: 当 JVM 收到一个 new 指令时,会检查指令中的参数在常量池是否有这个符号的引用,还会检查该类是否已经被加载过了,如果没有的话则要进行一次类加载。 阅读全文
posted @ 2018-07-13 08:08 crossoverJie 阅读(1585) 评论(3) 推荐(2) 编辑
摘要: 众所周知 synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式: 同步普通方法,锁的是当前对象。 同步静态方法,锁的是当前 Class 对象。 同步块,锁的是 {} 中的对象。 阅读全文
posted @ 2018-07-12 09:00 crossoverJie 阅读(1000) 评论(2) 推荐(2) 编辑
摘要: 当我们在做数据库分库分表或者是分布式缓存时,不可避免的都会遇到一个问题: 如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。 阅读全文
posted @ 2018-07-10 11:59 crossoverJie 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 之前或多或少分享过一些内存模型、对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。 直到有一天你会碰到线上奇奇怪怪的问题,如: 阅读全文
posted @ 2018-07-09 08:20 crossoverJie 阅读(3555) 评论(6) 推荐(21) 编辑
摘要: 现在越来越多的互联网公司还是将自己公司的项目进行服务化,这确实是今后项目开发的一个趋势,就这个点再凭借之前的 SSM 项目来让第一次接触的同学能快速上手。 阅读全文
posted @ 2018-07-06 08:39 crossoverJie 阅读(5181) 评论(1) 推荐(4) 编辑
摘要: Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 阅读全文
posted @ 2018-07-05 08:20 crossoverJie 阅读(7708) 评论(1) 推荐(1) 编辑