HollisChuang's Blog

公众号:Hollis(hollischuang)。个人网站:http://www.hollischuang.com

Java工程师成神之路~(2018修订版)

主要版本更新时间备注v1.02015-08-01首次发布v1.12018-03-12增加新技术知识、完善知识体系一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)...

2018-05-14 09:38:25

阅读数:5090

评论数:16

全网把Map中的hash()分析的最透彻的文章,别无二家。

你知道HashMap中hash方法的具体实现吗?你知道HashTable、ConcurrentHashMap中hash方法的实现以及原因吗?你知道为什么要这么实现吗?你知道为什么JDK 7和JDK 8中hash方法实现的不同以及区别吗?如果你不能很好的回答这些问题,那么你需要好好看看这篇文章。文中...

2018-05-09 09:08:08

阅读数:5011

评论数:15

为什么阿里巴巴禁止把SimpleDateFormat定义为static类型的?

在日常开发中,我们经常会用到时间,我们有很多办法在Java代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们需要的格式。 最常用的方法就是使用SimpleDateFormat类。这是一个看上去功能比较简单的类,但是,一旦使用不当也有可能导致很大...

2019-01-18 08:59:30

阅读数:55

评论数:0

为什么阿里巴巴不建议在for循环中使用"+"进行字符串拼接

字符串,是Java中最常用的一个数据类型了。关于字符串的知识,作者已经发表过几篇文章介绍过很多,如: Java 7 源码学习系列(一)——String 该如何创建字符串,使用” “还是构造函数? 我终于搞清楚了和String有关的那点事儿 三张图彻底了解Java中字符串的不变性 为什么Java要把...

2019-01-16 12:07:25

阅读数:3095

评论数:10

为什么阿里巴巴禁止工程师直接使用日志系统(Log4j、Logback)中的 API

作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。 所以,日志在Java Web应用中至关重要,但是,很多人却以为日志输出只是一件简单的事情,所以会经常忽略和日志相关的问题。在接下来的几篇文章中,我会来介绍介绍这...

2018-11-27 09:36:24

阅读数:540

评论数:0

很多未解之谜终于有答案了——2018年JVM生态系统报告出炉

在Java开发者中,一直存在着很多鄙视链。如: IntelliJ → Eclipse → NetBeans Unix → Linux → Mac OS→ Windows → DOS Emacs → Vim → Sublime → Word → Power Point 这诸多鄙视链中一直存在着很大的...

2018-11-16 09:53:53

阅读数:5602

评论数:21

2018年排名Top 100的Java类库——在分析了277,975份源码之后得出的结论

最近,OveOps公布了The Top 100 Java Libraries in 2018 - Based on 277,975 Source Files,Hollis查看了这份榜单,做了翻译和补充,向你展示2018年的风云Java类库,希望可以给正在使用Java的你一些帮助和启示。不能说榜单中...

2018-11-12 09:37:43

阅读数:2993

评论数:2

Java中线程池,你真的会用吗?

在《深入源码分析Java线程池的实现原理》这篇文章中,我们介绍过了Java中线程池的常见用法以及基本原理。 在文中有这样一段描述: 可以通过Executors静态工厂构建线程池,但一般不建议这样使用。 关于这个问题,在那篇文章中并没有深入的展开。作者之所以这么说,是因为这种创建线程池的方式有很...

2018-11-05 09:34:19

阅读数:4445

评论数:7

好好说说Java中的常量池之Class常量池

在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的String面试题难倒了无数的开发者。所以说,常量池是Java体系中一个非常重要的概念。 谈到常量池,在Java体...

2018-10-29 09:43:21

阅读数:837

评论数:0

深入理解Java中的volatile关键字

在再有人问你Java内存模型是什么,就把这篇文章发给他中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。在前一篇文章中,我们也介绍了synchro...

2018-10-22 10:09:52

阅读数:3937

评论数:9

关于HashMap容量的初始化,还有这么多学问。

在《HashMap中傻傻分不清楚的那些概念》文章中,我们介绍了HashMap中和容量相关的几个概念,简单介绍了一下HashMap的扩容机制。 文中我们提到,默认情况下HashMap的容量是16,但是,如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择大于该数字的第一个2的幂作为容量。(...

2018-10-18 09:28:54

阅读数:1692

评论数:2

内存模型是怎么解决缓存一致性问题的?

在再有人问你Java内存模型是什么,就把这篇文章发给他这篇文章中,我们介绍过关于Java内存模型的来龙去脉。 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距,提升计算机能力,人们在CPU和主存之间增加了多层高速缓存。每个CPU会有L1、L2甚至L3缓存,在多核计算机...

2018-10-10 09:30:42

阅读数:23404

评论数:11

再有人问你volatile是什么,把这篇文章也发给他。

在上一篇文章中,我们围绕volatile关键字做了很多阐述,主要介绍了volatile的用法、原理以及特性。在上一篇文章中,我提到过:volatile只能保证可见性和有序性,无法保证原子性。关于这部分内容,有读者阅读之后表示还是不是很理解,所以我再单独写一篇文章深入分析一下。 volatile与有...

2018-10-08 09:24:05

阅读数:5097

评论数:15

再有人问你synchronized是什么,就把这篇文章发给他。

在再有人问你Java内存模型是什么,就把这篇文章发给他。中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。 在《深入理解Java虚拟机》中,有这...

2018-08-06 09:34:16

阅读数:334

评论数:1

学习分布式不得不会的CAP理论

2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。 无论你是一个系统架构师,还是一个普通开发,...

2018-07-16 11:52:59

阅读数:241

评论数:0

Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?

最近有很多朋友去目前主流的大型互联网公司面试(阿里巴巴、京东、美团、),面试回来之后会发给我一些面试题。有些朋友轻松过关拿到offer,但是有一些是来询问我答案的。 其实本来真的没打算写这篇文章,主要是自己得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。...

2018-07-11 09:59:43

阅读数:287

评论数:0

所有和Java中代理有关的知识点都在这了。

对于每一个Java开发来说,代理这个词或多或少都会听说过。你可能听到过的有代理模式、动态代理、反向代理等。那么,到底什么是代理,这么多代理又有什么区别呢。本文就来简要分析一下。 代理技术,其实不只是Java语言特有的技术,其实在互联网早期就已经出现了这种技术。 在计算机网络层面,常用的代理技术...

2018-07-09 09:33:01

阅读数:1664

评论数:2

深入理解Java中的逃逸分析

在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。 第一段编译就是javac命令。 在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令...

2018-07-05 10:16:58

阅读数:1184

评论数:2

再有人问你Java内存模型是什么,就把这篇文章发给他。

前几天,发了一篇文章,介绍了一下JVM内存结构、Java内存模型以及Java对象模型之间的区别。有很多小伙伴反馈希望可以深入的讲解下每个知识点。Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识。 网上有很多关于Java内存模型的文章,在《深入理解Java虚拟...

2018-07-02 09:25:09

阅读数:4352

评论数:7

JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。 可以这样说,很多高级开发甚至都搞不不清楚J...

2018-06-28 10:28:05

阅读数:1920

评论数:0

提示
确定要删除当前文章?
取消 删除