编程语言 for与foreach在遍历集合时的差别你竟然不知道? 在java中,遍历方式的写法有多种!但是底层无非就是for循环和迭代器两种方式!这两种遍历方式都能达到遍历集合的效果,但是在效率上孰优孰劣呢?这个就得从底层源码去寻找答案了! 2020-07-08 浏览(2,377) 评论(0) 阅读全文
编程语言 从集合的遍历看迭代器模式 做为后台开发人员,集合类的知识是我们必须要掌握的!我们在对集合进行遍历时有多种方式,而通多迭代器进行遍历比较常用!迭代器模式提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 2020-07-07 浏览(2,487) 评论(0) 阅读全文
编程语言 带你分析阻塞队列的源码实现 阻塞队列阻塞队列是一种队列,一种可以在多线程环境下使用,并且支持阻塞等待的队列。从5.0开始,JDK在java.util.concurrent包里提供了阻塞队列的实现。尽管JDK中已经包含了阻塞队列的官方实现,但是熟悉其背后的原理还是很有帮助的。本文我们就分析几个BlockingQueue常用的实现类源码。 2020-03-01 浏览(3,089) 评论(0) 阅读全文
编程语言 带你分析线程的状态及线程通信机制 多线程编程一直是普通程序员进阶为高级程序员的必备技能之一!他很难,难就难在难以理解、难以调试,出现了bug很难发现及排查。他很重要,因为我们可能随时都面对着线程的切换、调度,只是这些都由CPU来帮我们完成我们无法感知。 2020-02-22 浏览(3,039) 评论(0) 阅读全文
编程语言 带你理清Thread、Runnable、Callable、FutureTask之间千丝万缕的联系 多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。Java自从1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。今天我们就来讨论一下Thread、Runable、Callable、FutureTask之间的联系! 2019-05-22 浏览(5,025) 评论(2) 阅读全文
编程语言 你必须了解的java内存管理机制(四)-垃圾回收 JVM通过可达性分析算法将垃圾标记出来之后,会怎么样去做垃圾的清理呢?为了高效的回收垃圾,虚拟机又经历了哪些技术及算法的演变和优化呢?本文将重点介绍几种垃圾回收算法、HotSpot中常用的垃圾收集器的主要特点和应用场景! 2019-01-27 浏览(3,664) 评论(0) 阅读全文
编程语言 你必须了解的java内存管理机制(三)-垃圾标记 JVM通过可达性分析算法标记了需要回收的对象后,会采用什么算法对内存进行回收呢?为了高效的回收垃圾,虚拟机又经历了哪些技术及算法的演变和优化呢?这里将重点介绍几种垃圾回收算法、HotSpot中常用的垃圾收集器的主要特点和应用场景 2019-01-15 浏览(4,432) 评论(1) 阅读全文
编程语言 你必须了解的java内存管理机制(二)-内存分配 一个对象需要占用多大的内存?这个问题其实在类加载完成后就已经确定啦!JVM可以通过普通java对象的类元信息确定对象大小。为对象分配内存相当与把一块确定大小的内存从java堆中划分出来。 2019-01-04 浏览(4,506) 评论(3) 阅读全文
编程语言 你必须了解的java内存管理机制(一)-运行时数据区 与C、C++程序员时刻要关注着内存的分配与释放,会不会又有哪里出现了内存泄露不同是,java程序员可以“高枕无忧”。因为这一切都已经有jvm来帮我们管理了,java程序员只需要关注具体的业务逻辑就可以了,至于内存分配与回收,交给jvm去干吧。 2018-12-27 浏览(5,100) 评论(6) 阅读全文