![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 79
nev1Mor
On My Way
展开
-
公平锁 非公平锁
今天偶然看ArrayBlockingQueue源码时,发现其中有关于公平锁 非公平锁。也趁此学习一下什么叫做公平锁 非公平锁。 下面是ArrayBlockingQueue的部分源码: public ArrayBlockingQueue(int capacity) { this(capacity, false); } public ArrayBlockingQu原创 2016-03-01 23:05:46 · 351 阅读 · 0 评论 -
java热部署及类加载
简介 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的重启都需 要花费大量的时间成本。虽然 osgi 架构的出现,让模块重启成为可能,但是如果模块之间有调用关系的话,这样的操作依然会让应用出现短暂的功能性休克。本文将探索如何在不破坏转载 2016-05-01 21:44:12 · 1198 阅读 · 1 评论 -
java多线程深入理解
首先先看看这个问题,程序和进程有什么区别? 我之前的理解是进程就是运行中的程序。但是读了操作系统后发现,其实进程是为了多道程序同时执行而引申出来的。因为操作系统同一时间只能运行一个程序(单cpu) 对于java来说,进程就是一个jvm。而线程就是一个Thread。当然jvm启动时还会启动很多线程,比如最熟悉的垃圾回收线程(应该是守护线程)。 没有真正意义上的多线程,正如没有原创 2016-04-09 21:30:58 · 334 阅读 · 0 评论 -
深入分析Java的序列化与反序列化
序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的作用是什么怎么自定义序列化策略自定义的序列化策略是如何被调用的ArrayList对序列化的实现有什么好处Java对象的序列化Jav转载 2016-02-29 22:25:34 · 222 阅读 · 0 评论 -
单例与序列化的那些事儿
本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。单例模式,是设计模式中最简单的一种。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。关于单例模式的使用方式,可以阅读单例模式的七种写法但是,单例模式真的能够实现实例的唯一性转载 2016-02-29 22:22:14 · 251 阅读 · 0 评论 -
深入分析Java的序列化与反序列化
序列化是一种对象持久化的手段。普遍应用在网络传输、RMI等场景中。本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题: 怎么实现Java的序列化 为什么实现了java.io.Serializable接口才能被序列化 transient的作用是什么 怎么自定义序列化策略 自定义的序列化策略是如何被调用的 ArrayLi转载 2016-02-28 16:26:25 · 375 阅读 · 0 评论 -
单例与序列化的那些事儿
本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。 单例模式,是设计模式中最简单的一种。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。关于单例模式的使用方式,可以阅读单例模式的七种写法 但是,单例模转载 2016-02-28 16:53:33 · 568 阅读 · 0 评论 -
深入分析 Java I/O 的工作机制
Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,所以 Java 在 I/O 上也一直在做持续的优化,如从 1.4 开始引入了 NIO,提升了 I/O 的性能。关于 NIO 我们将在后面详细介绍转载 2016-03-09 23:54:35 · 170 阅读 · 0 评论 -
深入分析 Java 中的中文编码问题
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言。由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元—— byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。我们可以把计算机能够理解的转载 2016-03-08 00:02:59 · 252 阅读 · 0 评论 -
CGLIB动态代理
一、原理 代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,当它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该怎么办?现在我们可以使用CGLIB包。 二、什么是cglib CGL转载 2016-03-05 12:04:20 · 209 阅读 · 0 评论 -
ConcurrentHashMap到底是什么后续
Java 内存模型 由于 ConcurrentHashMap 是建立在 Java 内存模型基础上的,为了更好的理解 ConcurrentHashMap,让我们首先来了解一下 Java 的内存模型。 Java 语言的内存模型由一些规则组成,这些规则确定线程对内存的访问如何排序以及何时可以确保它们对线程是可见的。下面我们将分别介绍 Java 内存模型的重排序,内存可见性和 happen原创 2016-03-03 23:39:39 · 288 阅读 · 0 评论 -
ConcurrentHashMap到底是什么?
ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。 /** * The segments,原创 2016-03-03 22:27:46 · 370 阅读 · 0 评论 -
HashMap到底是什么后续
transient Entry[] table = (Entry[]) EMPTY_TABLE; 为什么table数组要有关键字transient呢? 深入分析java序列化与反序列化中有提到。 http://blog.csdn.net/qq_24690761/article/details/50768887 保证序列化后的table数组中不含大量的null值。 上文提到"如果这两个 E原创 2016-03-03 21:56:12 · 156 阅读 · 0 评论 -
HashMap到底是什么?
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用HashMap 来实现的。 实际上,HashSet原创 2016-03-02 22:46:34 · 723 阅读 · 0 评论 -
try catch 的 return
先给出结论: 任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。 如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,编译器把finally中的return实现为一个warning。 明白了?看看下面这个例子: static int原创 2016-03-01 23:32:09 · 967 阅读 · 0 评论 -
java同步基石AQS
UNSAFE -> CompareAndSet(CAS) -> AbstractQueuedSynchronizer(AQS) /** * Provides a framework for implementing blocking locks and related * synchronizers (semaphores, events, etc) that rely on原创 2017-07-25 16:23:21 · 331 阅读 · 0 评论