04 2016 档案

摘要:新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。 老年代 GC(Major GC / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Min 阅读全文
posted @ 2016-04-25 10:10 空心菜小手 阅读(2045) 评论(0) 推荐(1)
摘要:分类 依据线程数:串行垃圾回收器和并行垃圾回收器 依据工作模式:并发垃圾回收器和独占垃圾回收器 依据碎片处理:压缩垃圾回收器和非压缩垃圾回收器 依据分代:新生代垃圾回收器和老年代垃圾处理器 评价GC策略的指标 可以用下列指标评价一个垃圾处理器的好坏: 吞吐量:应用程序所花费的时间和系统总运行时间的比 阅读全文
posted @ 2016-04-25 09:01 空心菜小手 阅读(295) 评论(0) 推荐(0)
摘要:java垃圾回收器需要解决的主要问题: 哪些对象需要回收? 何时回收这些对象? 如何回收这些对象? 1:引用计数法 引用计数法是最古老的算法,对于一个对象A,只要有一个对象引用A,引用计数器就加1,当引用失效时则减1。只要引用计数器的值为0,则对象A就不可能再被使用。 实现方法: 为每个对象配置一个 阅读全文
posted @ 2016-04-24 23:04 空心菜小手 阅读(284) 评论(0) 推荐(0)
摘要:java虚拟机内存模型主要包括:程序计数器、虚拟机栈、本地方法栈、java堆、方法区。 1:程序计数器 程序计数器是一块很小的内存,每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令。各个线程的计数器之间不相互影响,独立工作,是一个线程的私有的内存模型。 2:java虚拟机栈 jav 阅读全文
posted @ 2016-04-24 21:41 空心菜小手 阅读(4626) 评论(0) 推荐(0)
摘要:基本概念 一个用于特定基本类型数据的容器。缓冲区是特定基本类型元素的线性有限序列。除内容外,缓冲区的基本属性还包括容量、限制和位置: 缓冲区的容量 是它所包含的元素的数量。缓冲区的容量不能为负并且不能更改。 缓冲区的限制 是第一个不应该读取或写入的元素的索引。缓冲区的限制不能为负,并且不能大于其容量 阅读全文
posted @ 2016-04-23 21:25 空心菜小手 阅读(322) 评论(0) 推荐(0)
摘要:基本简介 Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,而N 阅读全文
posted @ 2016-04-23 17:45 空心菜小手 阅读(885) 评论(0) 推荐(0)
摘要:基本情况 Policy对象可能有多个实体,虽然任何时候只能有一个起作用。当前安装的Policy对象,在程序中可以通过调用getPolicy方法得到,也可以通过调用setPolicy方法改变。Policy对象评估整个策略,返回一个适当的Permissions对象,详细说明哪些代码可以访问哪些资源。 策 阅读全文
posted @ 2016-04-22 13:24 空心菜小手 阅读(4129) 评论(0) 推荐(0)
摘要:基本概念 安全管理器是一个负责控制具体操作是否允许执行的类,它主要负责检查的操作包括如下内容: 创建一个新的类加载器; 退出虚拟机 使用反射访问另一个类的成员 访问本地文件 打开socket连接 启动打印作业 访问系统剪贴板 打开一个顶层窗口 java.lang.SecurityManager类包含 阅读全文
posted @ 2016-04-22 10:51 空心菜小手 阅读(2289) 评论(0) 推荐(0)
摘要:java内省(Introspector) 内省(Introspector) 是Java 语言对JavaBean类属性、事件的一种缺省处理方法。 JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息 阅读全文
posted @ 2016-04-22 09:02 空心菜小手 阅读(794) 评论(0) 推荐(0)
摘要:1 线程上下文类加载器 线程上下文类加载器(context class loader)是从 JDK 1.2 开始引入的。类 java.lang.Thread中的方法 getContextClassLoader()和 setContextClassLoader(ClassLoader cl)用来获取和 阅读全文
posted @ 2016-04-21 23:01 空心菜小手 阅读(485) 评论(0) 推荐(0)
摘要:1 基本信息 每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失 阅读全文
posted @ 2016-04-21 21:56 空心菜小手 阅读(343) 评论(0) 推荐(0)
摘要:基本概念: Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。 Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 阅读全文
posted @ 2016-04-20 22:00 空心菜小手 阅读(195) 评论(0) 推荐(0)
摘要:基本概念 ThreadLocal提供了线程局部 (thread local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段 阅读全文
posted @ 2016-04-20 21:20 空心菜小手 阅读(154) 评论(0) 推荐(1)
摘要:一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。 例如 阅读全文
posted @ 2016-04-20 21:18 空心菜小手 阅读(175) 评论(0) 推荐(0)
摘要:在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者 消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就 阅读全文
posted @ 2016-04-20 10:56 空心菜小手 阅读(7304) 评论(0) 推荐(1)
摘要:原子性就是指该操作是不可再分的。 java.util.concurrent.atomic中有一组使用无锁算法实现的原子操作类。AtomicInteger、AtomicBoolean、AtomicLong 外还有 AtomicReference 。它们分别封装了对整数、整数数组、长整型、长整型数组和普 阅读全文
posted @ 2016-04-20 09:55 空心菜小手 阅读(7189) 评论(0) 推荐(0)
摘要:Volatile关键字最大的特点是,在多线程中保持变量的可见性。这个可见性主要是指变量在主存中的可见性。因此,有必要了解java内存模型。 java内存模型 java中每个线程有一块工作内存区,存放着被所有线程共享的主内存中的变量的值的拷贝。一个线程可以执行的操作有:使用(use)、赋值(assig 阅读全文
posted @ 2016-04-20 08:53 空心菜小手 阅读(330) 评论(0) 推荐(0)
摘要:为何有了synchronized还要有Lock synchronized只有等当前线程执行完,才能释放锁,或者虚拟机出错时释放资源。 synchronized可能造成其它线程长时间的等待,比如获取锁的线程在执行耗时的IO操作,那么其它需要该资源的线程只能长时间的等待。 synchronized无法知 阅读全文
posted @ 2016-04-19 21:13 空心菜小手 阅读(232) 评论(0) 推荐(0)
摘要:虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 一.什么时候会出现线程安全问题 在单线程中不会出现线程安全问题,而在 阅读全文
posted @ 2016-04-19 17:07 空心菜小手 阅读(226) 评论(0) 推荐(0)
摘要:线程的概念 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的 阅读全文
posted @ 2016-04-19 10:29 空心菜小手 阅读(225) 评论(0) 推荐(0)
摘要:一:java枚举简介 1:基本概念: 用enum定义枚举类默认继承了java.lang.Enum类而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口 枚举类的构造函数只能使用private 阅读全文
posted @ 2016-04-18 20:17 空心菜小手 阅读(804) 评论(0) 推荐(0)
摘要:一:基本概念 TreeSet基于 TreeMap 的 NavigableSet 实现。 使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。 此实现为基本操作(add、remove 和 contains)提供受保证的 log(n 阅读全文
posted @ 2016-04-18 14:58 空心菜小手 阅读(259) 评论(0) 推荐(0)
摘要:首先学习了TreeMap使用的数据结构,红黑数: 参照如下两篇文章: "平衡查找树之2 3树" "红黑树" TreeMap的源码分析,这位博主分析的很详细, "原文点击" 使用TreeMap 需要注意: 根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序; Tree 阅读全文
posted @ 2016-04-18 13:23 空心菜小手 阅读(176) 评论(0) 推荐(0)
摘要:一、基本概念 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。以前JDK中HashMap采用的是位桶+链表的方式,即我们常说的散列链表的方式,而JDK1.8中采用的是位桶+链表/红黑树的方式,也是非线程安全的。当某个位桶的链表的 阅读全文
posted @ 2016-04-17 17:33 空心菜小手 阅读(280) 评论(0) 推荐(0)
摘要:基本概念和实例 HashSet类,是存在于java.util包中的类。同时也被称为集合,该容器中只能存储不重复的对象。 HashMap的实现过程,对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素。 结构图:(来源互联网) 实例1:Hashset遍历 实例2:H 阅读全文
posted @ 2016-04-17 11:28 空心菜小手 阅读(328) 评论(0) 推荐(0)
摘要:基本概念及实例 ArrayDeque类实现Queue接口。对于数组实现的Deque来说,数据结构上比较简单,只需要一个存储数据的数组以及头尾两个索引即可。由于数组是固定长度的,所以很容易就得到数组的头和尾,那么对于数组的操作只需要移动头和尾的索引即可。 1. ArrayDeque并不是一个固定大小的 阅读全文
posted @ 2016-04-17 10:40 空心菜小手 阅读(317) 评论(0) 推荐(0)
摘要:LinkedList概念与简单实例 LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用. 1:LinkedList提供了4个不同位置的添加数据的方法,分别为链头插入,链尾插入,节点前插入,节点后插入 2:由于LinkedList是双向链表,在查询数据方面提供了“从前 阅读全文
posted @ 2016-04-17 09:44 空心菜小手 阅读(178) 评论(0) 推荐(0)
摘要:1:基本简介 1. ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。 ArrayList 继承了A 阅读全文
posted @ 2016-04-16 22:42 空心菜小手 阅读(220) 评论(0) 推荐(0)
摘要:通配符 — 使用一个奇怪的问号表示类型参数 — 是一种表示未知类型的类型约束的方法。通配符在类型系统中具有重要的意义,它们为一个泛型类所指定的类型集合提供了一个有用的类型范围。 介绍通配符的使用前先定义几个类: 首先我们不用通配符,测试端: 我们发现测试1顺利通过,而测试2编译不通过报错如下: 经过 阅读全文
posted @ 2016-04-16 20:54 空心菜小手 阅读(201) 评论(0) 推荐(0)
摘要:java泛型中存在一定的约束和局限性,这些限制的主要原因是java虚拟机中对泛型的处理机制有关,即 类型擦除 。 1:不能用基本类型实例化类型参数 主要原因就是:类型擦除引起的,ArrayList会被转为Object,但double没有继承object。 如: `ArrayList list=new 阅读全文
posted @ 2016-04-16 17:23 空心菜小手 阅读(424) 评论(0) 推荐(0)
摘要:java泛型概念及作用 泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类 阅读全文
posted @ 2016-04-16 15:40 空心菜小手 阅读(370) 评论(0) 推荐(0)
摘要:java中存在三种调用机制 1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; 3:异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会 阅读全文
posted @ 2016-04-15 22:38 空心菜小手 阅读(273) 评论(0) 推荐(0)
摘要:Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 1. 内部类基础 2. 深入理解内部类 3. 内部类的使用场景 阅读全文
posted @ 2016-04-15 20:59 空心菜小手 阅读(179) 评论(0) 推荐(0)
摘要:不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 在典型的 阅读全文
posted @ 2016-04-15 20:20 空心菜小手 阅读(135) 评论(0) 推荐(0)
摘要:本文主要针对java反射进行学习,以java.lang.reflect包中的接口和类进行学习和理解。文章目录如下: 1. java反射概念 2. java反射包接口详解 3. java发射包中类详解 4. java反射的应用例子 一:java反射概念 JAVA反射机制是在运行状态中,对于任意一个类, 阅读全文
posted @ 2016-04-15 16:55 空心菜小手 阅读(371) 评论(0) 推荐(0)