编程语言 for与foreach在遍历集合时的差别你竟然不知道? 在java中,遍历方式的写法有多种!但是底层无非就是for循环和迭代器两种方式!这两种遍历方式都能达到遍历集合的效果,但是在效率上孰优孰劣呢?这个就得从底层源码去寻找答案了! 2020-07-08 浏览(1,986) 评论(0) 阅读全文
编程语言 带你分析阻塞队列的源码实现 阻塞队列阻塞队列是一种队列,一种可以在多线程环境下使用,并且支持阻塞等待的队列。从5.0开始,JDK在java.util.concurrent包里提供了阻塞队列的实现。尽管JDK中已经包含了阻塞队列的官方实现,但是熟悉其背后的原理还是很有帮助的。本文我们就分析几个BlockingQueue常用的实现类源码。 2020-03-01 浏览(2,715) 评论(0) 阅读全文
编程语言 带你分析线程的状态及线程通信机制 多线程编程一直是普通程序员进阶为高级程序员的必备技能之一!他很难,难就难在难以理解、难以调试,出现了bug很难发现及排查。他很重要,因为我们可能随时都面对着线程的切换、调度,只是这些都由CPU来帮我们完成我们无法感知。 2020-02-22 浏览(2,676) 评论(0) 阅读全文
软件基础 假如古代皇帝也懂负载均衡算法 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。 2020-01-12 浏览(2,991) 评论(1) 阅读全文
编程语言 带你理清Thread、Runnable、Callable、FutureTask之间千丝万缕的联系 多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。Java自从1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。今天我们就来讨论一下Thread、Runable、Callable、FutureTask之间的联系! 2019-05-22 浏览(4,463) 评论(2) 阅读全文
应用框架 基于消息队列的分布式事务解决方案 由于分布式微服务的推广及普及,一些较大的项目就会进行业务拆分,不同的业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求。分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。而分布式事务就需要处理在分布式系统中保证不同节点之间的数据一致性... 2019-04-03 浏览(6,285) 评论(1) 阅读全文
应用框架 那些年我们用过的消息中间件-kafka Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景! 2019-03-17 浏览(5,991) 评论(1) 阅读全文
编程语言 你必须了解的java内存管理机制(四)-垃圾回收 JVM通过可达性分析算法将垃圾标记出来之后,会怎么样去做垃圾的清理呢?为了高效的回收垃圾,虚拟机又经历了哪些技术及算法的演变和优化呢?本文将重点介绍几种垃圾回收算法、HotSpot中常用的垃圾收集器的主要特点和应用场景! 2019-01-27 浏览(3,385) 评论(0) 阅读全文
编程语言 你必须了解的java内存管理机制(三)-垃圾标记 JVM通过可达性分析算法标记了需要回收的对象后,会采用什么算法对内存进行回收呢?为了高效的回收垃圾,虚拟机又经历了哪些技术及算法的演变和优化呢?这里将重点介绍几种垃圾回收算法、HotSpot中常用的垃圾收集器的主要特点和应用场景 2019-01-15 浏览(4,129) 评论(1) 阅读全文
编程语言 你必须了解的java内存管理机制(二)-内存分配 一个对象需要占用多大的内存?这个问题其实在类加载完成后就已经确定啦!JVM可以通过普通java对象的类元信息确定对象大小。为对象分配内存相当与把一块确定大小的内存从java堆中划分出来。 2019-01-04 浏览(4,204) 评论(3) 阅读全文