摘要:
前言 我们都知道之前所做的项目大部分都是集中式,单个节点的系统,而现在随着微服务和分布式的兴起,大部分企业慢慢的把集中式的系统拆分成各个服务,保证各个服务的模块单一,轻量级。微服务和分布式所带来的好处在于各个服务比较轻,每次修改功能只需要发布负责特定的服务即可。分布式所带来的更严重的问题就是数据的一 阅读全文
摘要:
前言 随着现在分布式,微服务的普及,怎样保证微服务之间的数据一致性就成了一个很大的问题,也就是怎样解决分布式事务。不像之前系统都是单点的,操作的都是同一个数据库,这样系统对数据库的操作都可以放在一个事务中,并不需要跨系统调用服务。而分布式的出现,一个大型的系统下面可能会有多个子系统模块,这时候就会出 阅读全文
摘要:
前言 ThreadLocal被称为线程本地存储,也就是实现线程之间的数据隔离。在ThreadLocal中set(变量)作用域属于当前线程,其他线程无法访问到。ThreadLocal的应用场景在Mybatis中的SqlSession管理有体现,因为每个线程都有自己的Session一次数据库会话,这时候 阅读全文
摘要:
前言 我们所编写的.java文件会经过javap指令编译成.class字节码文件,.class字节码文件中的内容描述类的相关信息。我们都知道.class文件是一种文件,但是我们的Java程序是运行在内存中的,如果我们需要使用到.class字节码中的内容描述的类信息,这时候就要讲到JVM的类加载机制了 阅读全文
摘要:
前言 我们都知道Java的垃圾回收并不需要程序员主动的去写代码回收内存,JVM会自动的帮我们去回收内存,既然JVM会自动帮我们进行内存回收,那是不是就不会出现内存不足的情况,显然不是的。即使JVM帮我们进行回收,但是还是有可能出现内存溢出。下面主要将JVM GC(垃圾回收机制)分为几个部分:对象是否 阅读全文
摘要:
前言 在我们进行开发时,为了加快程序的运行效率,可能会使用到线程池去加快程序效率,但是线程池也不是随便使用的,如果一旦使用错误,还可能会造成生产事故。在JDK1.5后提供了Executor框架来供开发者使用,无需关心任务如何被执行,如果不清楚线程池原理的话,使用Executor框架也可能会造成生产事 阅读全文
摘要:
前言 相信HashMap对于大家来说并不陌生,下面主要从HashMap的一些常见面试题来剖析,结合面试题和HashMap的一些源码来讲解,并不会一上来就一点一点源码去讲,相信大家一直对照着源码去讲解收获也不是很大,并且容易忘记。 1.HashMap底层数据结构是什么? 我们都知道HashMap是基于 阅读全文
摘要:
相信对Java程序员来说,synchronized关键字对大家来说并不陌生,当我们遇到并发情况时,优先会想到用synchronized关键字去解决,synchronized确实能够帮助我们去解决并发的问题,但是它会引起一些其他问题,比如最突出的一点就是程序效率问题,不过后面随着JDK1.6对sync 阅读全文
摘要:
在Java中我们都知道synchronized是一个重量级的锁,尽管JVM对synchronized关键字做出了许多优化,但是在多线程的情况下,synchronized的并发效率还是低下,而volatile是synchronized的轻量级的实现,在多线程编程中,能用volatile关键字解决的问题 阅读全文