首页
学习
活动
专区
工具
TVP
发布

陈树义

聚焦于 Java 程序员的技术成长、职业规划、认知升级。欢迎关注公众号:陈树义。
专栏作者
266
文章
279746
阅读量
59
订阅数
关于 CMS 垃圾回收器,你真的懂了吗?
前段时间有个小伙伴去面试,被问到了 CMS 垃圾回收器的详细内容,没答出来。实际上,CMS 垃圾回收器是回收器历史上很重要的一个节点,其开启了 GC 回收器关注 GC 停顿时间的历史。今天,就让树哥带你一起来学一波吧!
陈树义
2022-10-05
8050
这三大特性,让 G1 取代了 CMS!
之前我们聊过 CMS 回收器,但那时候我们说 CMS 回收器已经落伍了,现在应该是用 G1 回收器的时候了。那么 G1 回收器到底有什么魔力,它比 CMS 回收器相比强在哪里呢?今天,就让树哥带大家盘一盘!
陈树义
2022-09-28
4800
老掉牙的 synchronized 锁优化,一次给你讲清楚!
我们都知道 synchronized 关键字能实现线程安全,但是你知道这背后的原理是什么吗?今天我们就来讲一讲 synchronized 实现线程同步背后的原因,以及相关的锁优化策略吧。
陈树义
2022-09-02
2740
集合系列 Queue(十一):ArrayDeque
为了深入理解 ArrayDeque 的原理,我们将从类成员变量、构造方法、核心方法两个方面逐一介绍。
陈树义
2019-08-29
5140
集合系列开篇:为什么要学集合?
集合可以说是学习 Java 中最重要的一块知识点了,无论做任何业务系统,集合总是最为基础的那块 API。我第一次接触集合,是在我大三的时候,那时候去面试,面试官问我:你了解过集合吗?可惜那时候没什么项目经验,所以基本没有了解过,因此也错失了机会。
陈树义
2019-08-26
8150
每周分享第4期
我们都知道在JDK1.8的HotSpot虚拟机中已经没有永久代这个内存区域了,但许多人其实并不知道在JDK1.7的时候这项工作就在悄悄进行了。
陈树义
2019-02-13
3560
JDK1.7 HashMap 导致循环链表
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loop”可以看到很多人都在说这个事)所以,觉得这个是个普遍问题,需要写篇疫苗文章说一下这个事,并且给大家看看一个完美的“Race Condition”是怎么形成的。
陈树义
2019-02-13
1K0
JVM系列第15讲:JDK性能监控命令
jps 命令可以列出所有的 Java 进程。如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示。
陈树义
2018-12-25
4890
JVM系列第9讲:JVM垃圾回收器
前面文章中,我们介绍了 Java 虚拟机的内存结构,Java 虚拟机的垃圾回收机制,那么这篇文章我们说说具体执行垃圾回收的垃圾回收器。
陈树义
2018-12-14
3420
JVM系列第6讲:Java 虚拟机内存结构
看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了。那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了。在这个过程中,Java 虚拟机会加载字节码文件,将其存入 Java 虚拟机的内存空间中,之后进行一系列的初始化动作,最后运行程序得出结果。
陈树义
2018-12-13
3420
JVM系列第4讲:从源代码到机器码,发生了什么?
在上篇文章我们聊到,无论什么语言写的代码,其到最后都是通过机器码运行的,无一例外。那么对于 Java 语言来说,其从源代码到机器码,这中间到底发生了什么呢?这就是今天我们要聊的。
陈树义
2018-12-11
1.1K0
JVM系列第2讲:Java 虚拟机的历史
说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待。但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM、Exact VM、BEA JRocketit、IBM J9 等等。今天我们就来简单回顾下 Java 虚拟机的发展历史。
陈树义
2018-12-10
5290
【超实用】面对枯燥的源码,如何才能坚持看下去?
一个软件开发人员,工作到了一定的年限(一般是3、4年左右),如果他还没学会阅读源码,那么他就会遇到瓶颈。因为到了这个时候的开发,他应该不仅仅只会做那些 CURD 的业务逻辑,而应该会根据公司的实际情况去写框架。而基本上没有谁能像天才一样从零写出一个框架,很多人写框架其实都是从模仿开始的。而你要模仿,那么你首先得看得懂框架源码才行。所以说阅读源码才显得那么重要。
陈树义
2018-09-28
5100
注解的那些事儿(一)| 为什么要使用注解?
注解是 JDK 1.5 引入的功能,相信不少开发者都使用过这个功能,但关于为什么要使用注解,你了解过多少呢?
陈树义
2018-08-01
3580
Java并发编程:JDK中的阻塞队列
  上次我们讲了一些常用的4个阻塞队列,但是在JDK中还提供了其他的一些阻塞队列。这篇文章将全面介绍一下JDK中的所有阻塞队列,并比较他们的区别。   JDK7提供了7个阻塞队列。分别是   ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列。   LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列。   PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列。   DelayQueue:一个使用优先级队列实现的无界阻塞队列。   Syn
陈树义
2018-04-13
6470
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用 synchronized 修饰的方法 或者 代码块。 vola
陈树义
2018-04-13
1K0
1.Java集合总结系列:Java集合概述
一、概述 集合是 Java 中非常重要的 API,在实际应用中非常广泛,在许多面试中也是必考的知识点。 Java 所有集合类都位于 java.util 包下,Java 的集合只能保存对象,而无法保存保存基本数据类型。当你尝试把一个基本数据类型存入集合中时,Java 会将其自动转为对应的对象类型(这就是自动装箱)。而当我们把一个对象放入集合中后,系统会把所有集合元素都当成 Object 类的实例进行处理。但从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类
陈树义
2018-04-13
7840
大白话说Java泛型:入门、使用、原理
远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的。当时 Java 程序员们写集合类的代码都是类似于下面这样: List list = new ArrayList(); list.add("www.cnblogs.com"); list.add(23); String name = (String)list.get(0); Integer number = (Integer)list.get(1); 在代码中声明一个集合,我们可以往集合中放入各种各样的数据,而在取出来的时候就进行强制类型转换。但其
陈树义
2018-04-13
8270
如何在IntelJ下用Maven创建一个Web项目
相信一开始做Web项目的同学都是直接把项目包放在WEB-INF/lib目录下,然后就开始做项目了。但是之后接触了一些使用了Maven进行包管理的项目,我们就不得不学一学如何用Maven做包管理。 在网上看了很多的文章,发现都不是很全面,因此就把自己摸索的过程记录下来,希望对大家有帮助。本文主要记录如何从无包管理的项目开发模式转到使用Maven进行项目包管理。 做编程的,对于新的知识,先运行起来再说,而不是去深究其原理。我们这里用Maven搭建一个简单的Web项目,让其可以运行起来。这可以让我们对Maven有
陈树义
2018-04-13
5740
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档