crossoverJie - 博客园
摘要: 分布式锁在分布式应用中应用广泛,想要搞懂一个新事物首先得了解它的由来,这样才能更加的理解甚至可以举一反三。 首先谈到分布式锁自然也就联想到分布式应用。 在我们将应用拆分为分布式应用之前的单机系统中,对一些并发场景读取公共资源时如扣库存,卖车票之类的需求可以简单的使用同步或者是加锁就可以实现。 但是应用分布式了之后系统由以前的单进程多线程的程序变为了多进程多线程,这时使用以上的解决方案明显就不够了。阅读全文
posted @ 2018-07-20 08:32 crossoverJie 阅读(666) 评论(8) 编辑
摘要: 开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。 或者是线程 A 在执行到某个条件通知线程 B 执行某个操作。 可以通过以下几种方式实现:阅读全文
posted @ 2018-07-19 08:31 crossoverJie 阅读(289) 评论(3) 编辑
摘要:

不管是在面试还是实际开发中都是一个应该掌握的技能。

阅读全文
posted @ 2018-07-18 08:35 crossoverJie 阅读(416) 评论(7) 编辑
摘要: 众所周知 HashMap 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。阅读全文
posted @ 2018-07-17 08:55 crossoverJie 阅读(257) 评论(1) 编辑
摘要: 使用 synchronize 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程获得了锁之后仍然可以反复的加锁,不会出现自己阻塞自己的情况。阅读全文
posted @ 2018-07-16 08:00 crossoverJie 阅读(189) 评论(0) 编辑
摘要: 当 JVM 收到一个 new 指令时,会检查指令中的参数在常量池是否有这个符号的引用,还会检查该类是否已经被加载过了,如果没有的话则要进行一次类加载。阅读全文
posted @ 2018-07-13 08:08 crossoverJie 阅读(275) 评论(3) 编辑
摘要:

众所周知 synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式:

  • 同步普通方法,锁的是当前对象。
  • 同步静态方法,锁的是当前 Class 对象。
  • 同步块,锁的是 {} 中的对象。
阅读全文
posted @ 2018-07-12 09:00 crossoverJie 阅读(305) 评论(2) 编辑
摘要: 当我们在做数据库分库分表或者是分布式缓存时,不可避免的都会遇到一个问题: 如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。阅读全文
posted @ 2018-07-10 11:59 crossoverJie 阅读(250) 评论(0) 编辑
摘要: 之前或多或少分享过一些内存模型对象创建之类的内容,其实大部分人看完都是懵懵懂懂,也不知道这些的实际意义。 直到有一天你会碰到线上奇奇怪怪的问题,如:阅读全文
posted @ 2018-07-09 08:20 crossoverJie 阅读(2186) 评论(6) 编辑
摘要: 现在越来越多的互联网公司还是将自己公司的项目进行服务化,这确实是今后项目开发的一个趋势,就这个点再凭借之前的 SSM 项目来让第一次接触的同学能快速上手。阅读全文
posted @ 2018-07-06 08:39 crossoverJie 阅读(624) 评论(1) 编辑