旧时光 | YoungChen's 博客

【技术栈 Java & Go,兴趣方向分布式存储,博客地址 chenjiayang.me,公众号 Young_Blog】...

回顾《深入理解 Java 虚拟机》之线程安全与锁优化

什么叫线程安全 我之前面试的时候就被问到过这个问题,其实说几句话描述下线程安全估计谁都能做到,问题是如何下一个准确的定义呢?书中选取了 Brain Goetz 的定义: 当多线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他...

2019-02-17 17:28:55

阅读数 6

评论数 0

“火箭男孩” 的毕业旅行

这是一篇迟到半年的总结 -_-|| 孟美岐不出意外的出道了,但看到陈意涵和刘人语落选还是很遗憾。 团队叫火箭少女就有点硬核了。。。 先说土创 6.23 晚我们四个还在重庆去成都的高铁上,当晚是土创的总决选,小赵想在高铁上拿手机看,但因为路上隧道很多,信号时断时续,画面一直卡成 PPT 所以最后...

2019-02-17 13:03:23

阅读数 53

评论数 0

回顾《深入理解 Java 虚拟机》之 Java 和线程

首先,并发不一定要依赖多线程,例如 PHP 中可以存在多进程并发。但是当我们在 Java 里面谈论并发时,一般都与线程脱不了干系,因此我们先来谈谈什么是线程,它跟进程有什么区别。 再谈进程与线程 如果一个服务器同时只能为一个客户端连接服务,其他都需要阻塞,那么效率定然会很感人,为了让服务器能同时服...

2019-02-16 16:48:07

阅读数 13

评论数 0

回顾《深入理解 Java 虚拟机》 之内存模型和 volatile 关键字

定义 Java 内存模型并不是一件容易的事情,这个模型必须定义得足够严谨,才能让 Java 的并发操作不会产生歧义;但是,也必须得足够宽松,使得虚拟机的实现能有足够的自由空间去利用硬件的各种特性(寄存器、高速缓存等)来获取更好的执行速度。经过长时间的验证和修补,在JDK1.5发布后,Java内存模...

2019-02-12 21:43:22

阅读数 17

评论数 0

回顾《深入理解 Java 虚拟机》之类加载器

虚拟机团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己去决定如何获取所需要的类,实现这个动作的代码模块称为** “类加载器”**。 首先,先要知道什么是类加载器。简单说,类加载器就是根据指定全限定名称将 Cla...

2019-02-08 22:33:08

阅读数 9

评论数 0

回顾《深入理解 Java 虚拟机》之类加载机制

虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段: 除却解析...

2019-02-07 20:53:36

阅读数 33

评论数 0

回顾《深入理解 Java 虚拟机》之垃圾收集器

GC 并非 Java 的专利,事实上最早 Lisp 语言就有了 GC 和内存动态分配的概念。GC 的重点在于两个: 如何判定对象的存活与否 如何进行垃圾回收,这里又分为不同的回收算法 如何判断对象存活 关于GC roots 选取的这个问题,知乎上 R大 有过详细的回答,这里贴上链接:Java...

2019-02-06 19:42:00

阅读数 36

评论数 0

回顾《深入理解 Java 虚拟机》之 Java 内存区域

过年会把《深入理解 Java 虚拟机》回看一遍,整理下知识点 C/C++ 的内存管理都在编码人员自己的手里进行控制,delete/free 虽能让人感受到上帝视角的快感,却也加大了对编码人员的考验。Java、Golang、Nodejs 等现代语言因为有虚拟机这层,所以将内存管理的工作移交给了虚...

2019-02-05 19:41:22

阅读数 46

评论数 0

ThreadPoolExecutor 核心源码深度解析

本文只介绍 ThreadPoolExecutor 源码的关键部分,开篇会先介绍 ThreadPoolExecutor 中的一些核心常量定义,然后选取线程池工作周期中的几个关键方法分析其源码实现。其实,看 JDK 源码的最好途径就是看类文件注释,作者把想说的全都写在里面了。 一些重要的常量 Thr...

2019-02-04 20:00:29

阅读数 50

评论数 0

前端如何优雅地显示 JSON

json.cn 是我们开发过程中,经常用来格式化显示 JSON 字符串的工具网址,那么如何在自己编写的前端界面显示同样风格的、格式化之后 JSON 字符串呢? 代码 pre {padding: 5px; margin: 5px; } .string { color: #3ab54a;...

2019-02-01 11:49:32

阅读数 33

评论数 0

Java基础知识总结:深入浅出Java线程池

ThreadPoolExecutor Java 中线程池的核心类为 ThreadPoolExecutor,它有五个具体的参数: 如果以下的文字解释你看的实在头疼,推荐你看看这种 图解线程池的文章 corePoolSize:核心线程数,最初为 0,接收一个任务创建一个直到数目增长至 corePo...

2019-01-31 18:48:10

阅读数 30

评论数 0

Java基础知识总结:基础数据类型和包装类

int 是 Java 的八个基础数据类型(boolean、byte 、short、char、int、foat、double、long)之一,Integer 则是其包装类型。需要注意的是,基础数据类型并不是对象,它们的包装类才是。 包装类的缓存 Integer 源码中存在IntegerCache 这...

2019-01-27 14:32:32

阅读数 29

评论数 0

Java基础知识总结:接口vs抽象类、重写vs重载

我觉得面试就真不该问这种问题,不了解的同学建议去看看 JDK 集合类的源码,对接口和抽象类的理解会更深刻。 接口 接口是方法的集合,不同的实现类可以去实现这个接口中的方法,因此有点像抽象类里的抽象方法,但是和抽象方法不同的是,接口更加通用,规定了一整套行为(例如java.util.List),而抽...

2019-01-27 14:05:06

阅读数 37

评论数 0

Java基础知识总结:Java里四种引用类型的作用和区别

对这个知识点不要去死记硬背,要知道 Java 为什么要有不同的引用类型,它们存在的意义是什么?其实之所以划分不同的引用类型,主要作用体现在划分对象不同的可达性和 GC 对对象回收的影响。 四种引用类型分别为强引用,软引用,弱引用和虚引用。 所谓强引用,就是我们最常见的普通对象引用,我们 new...

2019-01-27 13:47:04

阅读数 44

评论数 0

Java基础知识总结:一文讲透 Exception 和 Error 的差别

Exception 和 Error 都是继承自 Throwable 类,只有 Throwable 类型的实例才可以被抛出( throw )或者捕获( catch )。 Error Error 是指在程序的非正常错误,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状...

2019-01-27 13:35:29

阅读数 74

评论数 0

伪共享(False Sharing)产生的来龙去脉

之前读了一篇美团点评技术博客 2016 年发表的文章:高性能队列——Disruptor,里面提到了 ArrayBlockingQueue会因为加锁和伪共享等出现严重的性能问题。 什么是伪共享呢(False Sharing)呢,讲清楚伪共享出现的原因,我们要先理清楚高速缓存和MESI缓存一致性协议。...

2019-01-26 17:29:01

阅读数 46

评论数 0

Java基础知识总结:常见的负载均衡算法

单机压力过大促使架构向集群模式转变,那么对于请求必定需要一个分发器进行任务分配和流量权衡,业界一般习惯于叫“负载均衡器”,但其实它的作用不仅仅在于平衡机器间的压力,还在于如何更智能的选择任务分发策略,并在一定时候提供降级等保护措施,总之对负载均衡器的理解不能局限在表面意思上。 本文谈谈常见的负载均...

2019-01-23 19:55:32

阅读数 19

评论数 0

Java基础知识总结:Java 常见的垃圾收集器总结

从 Java 到 Golang,垃圾收集器几乎成为现代语言的标配,让编码人员可以从手动释放内存的繁琐中彻底解放出来,提高了编码效率,那么在 Java 中你知道有哪些常见的垃圾收集器么,它们经历了怎样的演进呢? 实际上,垃圾收集器并非是统一的,它和具体的 JVM 实现相关,本文主要谈谈最主流 的 O...

2019-01-22 19:44:39

阅读数 17

评论数 0

2018 年终总结,如果还有梦就追

博客很久没更新了,因为最近实在太忙了,明年一定会保持稳定更新的,这个 flag 立在这里。 2018 年是大学生涯的最后一年,也是参加工作的第一年。总的来说,一年的内容分为三个部分,6月份之前一边实习一边做毕设,7月初去了重庆和成都当做毕业旅行,7月中旬正式入职一直工作到现在。 毕设 毕设项目...

2019-01-01 13:26:28

阅读数 1121

评论数 7

Java 中的静态代理与动态代理

什么是代理模式 人话来讲就是由代理对象来执行目标对象的方法,且还可以在代理对象中增强目标对象方法的一种设计模式。类比生活,像是房产中介。代理模式存在的意义和一个架构设计原则息息相关 —— 开闭原则(对扩展开放,对修改关闭),即一种好的设计模式,都是在不修改原有形态的基础上扩展出新的功能。 为什么需...

2018-10-05 16:43:16

阅读数 28

评论数 0

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