全面了解java中的CAS机制

什么是CAS 在jdk 1.5中增加的一个最主要的支持是Atomic类,比如说AtomicInteger, AtomicLong,这些类可帮助最大限度地减少在多线程中对于一些基本操作(例如,增加或减少多个线程之间共享的值)的复杂性。而这些类的实现都依赖于CAS(compare and swap)...

2018-07-27 16:57:08

阅读数 71

评论数 0

4. 虚拟机类加载机制(二)

1.类加载器 把加载阶段的 “通过一个类的全限定名来获取一个类的二进制字节流”这个动作放到java虚拟机外部去实现,实现这个动作的代码模块为“类加载器” 三种不同的类加载器:启动类加载器、扩展类加载器、应用程序类加载器 除此之外,还有自定义的类加载器,它们之间的层次关系被称为类加载器的双亲委...

2018-07-20 16:58:28

阅读数 48

评论数 0

4. 虚拟机类加载机制 (一)

1.概述 上节讲到虚拟机要加载Class文件,那是如何加载这些Class文件呢?Class文件中的信息进入到虚拟机会发生哪些变化?都是这节要讨论的。 2. 什么是虚拟机的类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使...

2018-07-19 17:04:42

阅读数 64

评论数 0

3.类文件结构

1.  代码编译结果从本地机器码转变为字节码,是构成平台无关性的基石。 实现平台无关性的基础是虚拟机和字节码存储格式。 java虚拟机不与java等任何语言绑定,java虚拟机只认识.class文件,任何语言只要编译成了.class文件(字节码),java虚拟机都能运行。即虚拟机不关心Class...

2018-07-19 11:46:49

阅读数 57

评论数 0

2. 垃圾收集器与内存分配策略(二)

上一篇我们已经讨论了内存回收的内容,我们再来说一下,对象的内存分配策略往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启用了本地线程分配缓冲,将按线程优先在TLAB上分配。普遍的内存分配规则:(1)对象优先在Eden分配  大多数情况下,对象在Eden区中分配。当Eden区没有...

2018-07-16 16:09:47

阅读数 47

评论数 0

2.垃圾收集器与内存分配策略(一)

1. 垃圾收集需要完成的三件事情:(1)哪些内存需要回收?(2)什么时候回收?(3)如何回收?哪些内存需要回收? 程序计数器、虚拟机栈、本地方法栈3个区域都是随着线程而生或死,当线程结束时,内存自然跟着回收了。但java堆和方法区则不一样,我们只有在程序运行期间才会知道创建哪些对象,这部分的内存分...

2018-07-15 17:40:17

阅读数 63

评论数 0

1.Java内存区域

1.对象的创建过程     (1)当遇到一个new指令的时候,首先去检查这个指令参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化,若没有,则先执行类的加载过程.     (2)在类加载检查通过后,虚拟机为新生对象在堆上分配内存。对象所需内存大小在类...

2018-07-14 18:35:15

阅读数 128

评论数 0

面试准备:基于JDK1.8的 hashMap源码

在jdk1.8中hashMap进行了较大优化,具体可以回答以下几点:1.  hashMap内部由 数组+链表转变为数组+链表+红黑树实现,当链表节点大于8时,存储结构由链表转为红黑树。...

2018-07-12 16:20:50

阅读数 218

评论数 0

Mybatis语法解释

在使用Mybatis的时候,我们将查询语句写入.xml文件中,那具体的xml文件赢如何写呢?我们可以拿一个例子来解释:1. 前提:我们首先定义了java Bean:Color类public class Color { private Integer id; private Str...

2018-07-06 11:12:39

阅读数 208

评论数 0

全面了解java中的CAS机制

什么是CAS在jdk 1.5中增加的一个最主要的支持是Atomic类,比如说AtomicInteger, AtomicLong,这些类可帮助最大限度地减少在多线程中对于一些基本操作(例如,增加或减少多个线程之间共享的值)的复杂性。而这些类的实现都依赖于CAS(compare and swap)的算...

2018-07-02 15:43:03

阅读数 42

评论数 0

transient关键字详解

1,transient的用途及使用方法1,用途  我们知道,当一个对象实现了Serilizable接口,这个对象就可以被序列化,我们不关心其内在的原理,只需要了解这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。而在开发过程中,我们可能要求:当对象被序列化时(写入字节序...

2018-05-14 11:35:51

阅读数 57

评论数 0

java IO知识点

1.对于字节流InputStream和OutPutStream,当read()和writer()时,他们只接受byte[]型数组。对于字符流Reader和Writer,read()接受char[]类型,writer()可以接受字符串、char[]数组,int值等参数。为什么已经存在字节流还要引入字...

2018-05-04 16:40:33

阅读数 118

评论数 0

AOP概念与运行原理

转载于:https://blog.csdn.net/u012403290/article/details/64443021引言AOP指的就是面向切面编程,在实际的开发和工作中很多地方都深有体现,比如权限控制,控制全局状态等。接下来会详细阐述AOP的概念,给出对应的DEMO来深入学习实践,探讨AOP...

2018-04-28 10:49:19

阅读数 70

评论数 0

LinkedHashMap源码分析

1. 综述:LinkedHashMap继承了HashMap,HashMap是以散列表的形式存储数据的,所以,LinkedHashMap其实也是散列表的结构,但是“linked”是它对HashMap功能的进一步增强,LinkedHashMap用双向链表的结构,把所有存储在HashMap中的数据连接起...

2018-04-26 20:35:58

阅读数 38

评论数 0

TreeSet源码分析

TreeSet常用方法,都是调用Treemap中的方法,只是在添加的时候用静态常量PRESENT来填充map的value位置。iterator()迭代器方法,返回的就是map的keySet的迭代器。总结TreeSet底层实现严重依赖于TreeMap,所以弄清楚TreeMap是关键。...

2018-04-25 21:21:18

阅读数 57

评论数 0

LinkedHashSet源码分析

 LinkedHashSet具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按照元素的插入次序显示。看LinkedHashSet的内容。public class LinkedHashSet<E&gt...

2018-04-25 21:09:21

阅读数 34

评论数 0

HashSet源码分析

对于HashSet而言,它是基于HashMap实现的。HashSet底层采用HashMap来保存元素,因此HashSet底层其实比较简单。package java.util; public class HashSet<E> extends Ab...

2018-04-25 20:56:03

阅读数 44

评论数 0

LinkedList源码分析

1.综述:  LinkedList 是通过一个直线型的双向链表来实现的,它允许插入所有元素,包括null,同时,它是线程不同步的。下面是双向链表的结构:LinkedList构造方法有两个,一个是无参构造,一个是传入Collection对象的构造。2.属性://链表的节点个数 transient i...

2018-04-25 20:10:00

阅读数 42

评论数 0

ArrayList源码分析

基于jdk 1.8的源码分析1.ArrayList底层使用java中的数组实现,类型为Object数组transient Object[] elementData; //ArrayList就存放在这个数组里面2.数组默认容量为10:private static final int DEFAUL...

2018-04-24 21:51:59

阅读数 39

评论数 0

adsas

1. java只支持单重继承,一个类可以实现多个接口2. 接口不提供构造方法,接口中的方法默认为public abstract修饰,接口中的属性默认使用public static final修饰,接口允许多继承。3. 抽象类和接口都不允许实例化,一个类可以实现多个接口,但只能继承一个抽象类。接口中...

2018-04-19 19:27:13

阅读数 55

评论数 0

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