
Java高级学习
文章平均质量分 85
主要涉及Java高级相关的学习内容
小飞鹤
这个作者很懒,什么都没留下…
展开
-
Java高级之反射
1反射的基石Class类1.Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个类的实例对象来确定的,不同的实例对象有不同的属性值。Java程序中的各个Java类,它们是否属于同一类事物,是不是可以用一个类来描述这类事物呢?这个类的名字就是Class,要注意与小写class关键字的区别哦。Class类描述了哪些方面的信息呢?类的名字,类的访原创 2014-06-30 17:02:04 · 1759 阅读 · 0 评论 -
Java对象池
单例模式是限制了一个类只能有一个实例,对象池模式则是限制一个类实例的个数。对象池类就像是一个对象管理员,它以Static列表(也就是装对象的池子)的形式存存储某个实例数受限的类的实例,每一个实例还要加一个标记,标记该实例是否被占用。当类初始化的时候,这个对象池就被初始化了,实例就被创建出来。然后,用户可以向这个类索取实例,如果池中所有的实例都已经被占用了,那么抛出异常。用户用完以后,还要把实例“还原创 2014-07-23 13:54:35 · 714 阅读 · 0 评论 -
Java多线程编程详解
线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方原创 2014-07-24 17:29:04 · 1120 阅读 · 0 评论 -
使用Java对文件进行压缩处理
在web开发过程中,进行文件的压缩传输是一种常见的需求。比如一种场景:用户需要下载定时生成的报表,我们需要先对报表文件进行压以方便用户的下载,并减少文件的存储空间。 事实上,JDK已经提供了文件压缩/解压缩的支持,可以生成zip/gzip的压缩格式,并且支持支持“校验和”以检查压缩文件的完整性。通常会使用CRC(循环冗余校验)算法进行校验。 遗憾的是,J原创 2014-07-29 11:28:50 · 3080 阅读 · 1 评论 -
Java反射机制
Java反射机制Reflection,是在程序运行的时候能够获取和改变类的属性、方法等信息。因为反射的动态控制类的特性,所以大多被用在框架开发中等。我主要通过实例的方式来展现Java反射的常用方法。Java 反射机制主要提供了以下功能:1. 在运行时判断任意一个对象所属的类;2. 在运行时构造任意一个类的对象;3. 在运行时判断任意一个类所具有的成员原创 2014-07-30 10:25:27 · 836 阅读 · 0 评论 -
Java并发器分析
一、简介 JDK5中添加了新的concurrent包,其中包含了很多并发容器,这些容器针对多线程环境进行了优化,大大提高了容器类在并发环境下的执行效率。 CopyOnWriteArrayList类是一个线程安全的List接口的实现,在该类的内部进行元素的写操作时,底层的数组将被完整的复制,这对于读操作远远多于写操作的应用非常适合。在CopyOnWriteArrayLis原创 2014-08-01 15:45:14 · 860 阅读 · 0 评论 -
Java中的内存模型和多线程分析
浅谈java内存模型 不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结java的内存模型,要解决两个主要的问题:可见性和有序性。我们都知道计算机有高速缓存的存在,处理器并不是每次处理数据都是取内存的。JVM定义了自己的内存模型,屏蔽了底层原创 2014-08-12 13:53:43 · 718 阅读 · 0 评论 -
Java学习笔记总结篇之集合类和多线程
Map List Set等集合类:一、概述在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系:+Collection 这个接口extends自 --java.lang.Iterable接口 ├+List(接口 代表有序,可重复的集合。列表) │├ ArreyList (Class 数组,随机访问,没有同原创 2014-08-14 14:09:36 · 1405 阅读 · 0 评论 -
Java多线程总结与分析
这里我们做一个完整的例子来说明线程产生的方式不同而生成的线程的区别:package debug;import java.io.*;import java.lang.Thread;class MyThread extends Thread{ public int x = 0; public void run(){ System.out.println(++x);原创 2014-08-26 10:41:11 · 1862 阅读 · 0 评论 -
Java高级知识总结
1.关于枚举的用法Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看。1、可以在enum中添加变量和方法先来看一段代码示例:[java] view plaincopypublic enum State { Normal("正常态", 1), Update("已更新",原创 2014-09-24 15:23:36 · 1669 阅读 · 0 评论 -
Java开发中的23种设计模式详解
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真转载 2014-09-25 17:44:07 · 848 阅读 · 0 评论 -
java 集合架构--[Collection] [List] [Set] [Map] [集合工具类]
数组与集合的共同点和区别集合框架--Set元素存取无序不可重复无索引Iterator 接口Stack 是 Vector的子类泛型Map 接口Collections 类关于数组 集合的总结 一 、集合架构数组与集合的共同点和区别相同点:数组或集合都是容器都可以存储对象区别是: --数组是长度固定的,一旦指定长度则不能再改变;数组除了可以存储对象,还可以存储基本数转载 2014-09-26 14:37:08 · 1295 阅读 · 1 评论 -
Google的guava,Java中集合的增强工具
1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 编写漂亮代码写在前面: 以前在一个项目中用到过guava,当时匆匆用,也没细研究,今天偶然在occhina看到这个系列教程的翻译,感觉不错,介绍得还比较全面,就一口气全看完了,但看到第四节,发现还没翻译,于是自己就硬着头皮看了英文,发现也能看懂大概意思,就顺手翻译了一下,也算是为开源事业做点儿转载 2015-01-12 15:19:41 · 3207 阅读 · 0 评论 -
Java中的习惯用法总结
在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《 Effective Java 》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。目录转载 2015-04-07 15:11:06 · 1049 阅读 · 0 评论 -
详解Java反射机制
1.Java反射机制:反射机制允许程序在运行时通过反射的API获取类中的描述,方法,并且允许我们在运行时改变fields内容或者去调用methods2.反射机制提供的功能: 1.运行时判断任意一个对象所属的类 2.运行时构造任意一个类的对象 3.运行时判断任意一个类所具有的成员变量和方法 4原创 2015-05-07 13:22:30 · 1091 阅读 · 1 评论 -
泛型总结
1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类转载 2015-05-07 13:37:50 · 736 阅读 · 0 评论 -
Java并发编程初级-未使用Java并发包的时候
转自Java并发编程网 http://ifeve.com/java_multi_thread_programming_1_2/ 本文介绍了Java原生的多线程技术(1.2),通过详细介绍wait和notify相关的机制、基础的多线程技术以及基于这些技术的等待超时、线程间的通信技术和线程池高阶技术,最后通过一个基于线程池的简单文本web服务器—MollyServer,来阐明多线程带来好处转载 2015-06-08 13:46:29 · 1164 阅读 · 0 评论 -
Java集合类操作优化总结
在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行 Java 开发时,JDK 已经为我们提供了一系列相应的类来实现基本的数据结构,所有类都在 java.util 这个包里,清单 1 描述了集合类的关系。清单 1.集合类之间关系Collection├转载 2015-07-31 15:21:58 · 948 阅读 · 0 评论 -
多线程与并发知识点总结
对于多线程和并发编程这个比较大的技术模块,我们会整理一些帖子方便知识点的梳理,同时会原创视频帮助大家理解线程和并发的各个细节,以及JMM等比较深入的线程内存结构。最终的目的是写好代码。现在以前收藏的帖子整理分享给大家.大体上结构还是很全面,有些具体的细节还不够仔细。在录制视频中注意这些细节的讲解。1.计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用转载 2015-08-03 10:35:46 · 2433 阅读 · 1 评论 -
Java内存模型与并发同步常用的关键字(volatile和Synchronized)
1.Java内存模型参考:http://www.infoq.com/cn/special-column/articles/ Java内存模型专栏2.volatile关键字的理解Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,原创 2015-12-10 20:53:18 · 988 阅读 · 0 评论 -
Java I/O模型与NIO解析
1.Java IO模型解析 也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计转载 2015-12-30 14:17:34 · 1011 阅读 · 0 评论 -
Java并发编程:深入剖析ThreadLocal
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二.深入解析ThreadLocal类转载 2015-12-30 15:11:37 · 780 阅读 · 0 评论 -
Java NIO 与 Nio Socket
Java NIO 目录:Java NIO概述Java NIO ChannelJava NIO BufferJava NIO Scatter / GatherJava NIO 通道之间的数据传输Java NIO SelectorJava NIO FileChannelJava NIO SocketChannelJava NIO ServerSocketChannelJava NIO Da原创 2016-01-22 20:31:54 · 1305 阅读 · 0 评论 -
Java类的加载机制 ClassLoader
1.图解JVM中的ClassLoader java应用环境中不同的class分别由不同的ClassLoader负责加载。 一个jvm中默认的classloader有Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader Bootstrap ClassLoader 负责加载java基础类,主要是 %JR原创 2016-01-29 18:01:37 · 2003 阅读 · 0 评论 -
JVM类加载机制与反射
一、Java类加载机制1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始转载 2016-05-30 10:50:37 · 1704 阅读 · 0 评论 -
JVM中的GC回收分析
1.GC垃圾回收算法1、三种垃圾回收算法标记-清除(年老代)标记-整理(即标记-压缩)(年老代)复制(年轻代)1.1、标记-清除算法原理:从根集合节点进行扫描,标记出所有的存活对象,最后扫描整个内存空间并清除没有标记的对象(即死亡对象)适用场合:存活对象较多的情况下比较高效适用于年老代(即旧生代)缺点:容易产生内存原创 2016-08-06 14:13:42 · 3710 阅读 · 1 评论 -
JVM性能监控和调优
参考:http://www.cnblogs.com/java-zhao/category/776216.html(万分感谢,学了好多东西)1. JVM性能监控1、定位系统问题依据GC日志堆转储快照(heapdump/hprof文件)线程快照(threaddump/javacore文件)运行日志异常堆栈分析依据的工具jps:显示指定系统内的所有JV转载 2016-08-06 14:31:40 · 3732 阅读 · 0 评论 -
理解concurrent包中的CountDownLatch
正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:目录CountDownLatch是什么转载 2016-09-12 20:05:09 · 2363 阅读 · 0 评论 -
如何通过Exector使用一个优先级队列
实现一个基于优先级的Executor类很容易将执行者转换成一个基于优先级的(执行者)。你只要传入一个参数化为Runnable接口的PriorityBlockingQueue对象作为参数。但是,使用执行者时,你应该知道存储在优先级列队中的所有对象必须实现Comparable接口在内部,一个执行者使用一个阻塞队列来存储待处理任务。以任务到达执行者的顺序来存储。一个可能的替代就是使用一个原创 2016-09-18 09:59:06 · 2563 阅读 · 0 评论 -
[源码解析]HashMap和HashTable的区别(源码分析解读)
先来一段比较拗口的定义:Hashtable 的实例有两个参数影响其性能:初始容量 和 加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲突”的情况下,单个桶会存储多个条目,这些条目必须按顺序搜索。加载因子 是对哈希表在其容量自动增加之前可以达到多满的一个尺度。初始容量和加载因子这两个参数只是对该实现的提示。关于何时转载 2016-09-26 14:53:54 · 2210 阅读 · 0 评论 -
Java并发的核心控制机制
转载自:http://frodoking.github.io/2015/07/19/java-concurrent-mechanism/在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法。比如volatile,synchronized。像Lock和atomic这类高级并发包很多人并不经常使用。我想大部分原因都是来之于对原理的不属性导致的。在繁忙的开发工作转载 2016-09-27 14:13:37 · 3325 阅读 · 0 评论 -
Java反射案例详解
案例驱动是最好的,要不然只看理论的话,看了也不懂,通过案例的实战之后,在回过头去看看理论,会有更好的理解。【案例1】通过一个对象获得完整的包名和类名package Reflect;/** * 通过一个对象获得完整的包名和类名 * */class Demo{ //other codes...}class hello{ public static void原创 2016-10-12 14:18:24 · 2864 阅读 · 0 评论 -
Java 动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
转自:http://www.cnblogs.com/linghu-java/p/5714769.htmlclass文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生转载 2017-03-08 14:30:53 · 1984 阅读 · 0 评论 -
JVM知识点总结
转自:http://www.ityouknow.com/java/2017/03/01/jvm-overview.html在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如转载 2017-03-23 13:15:24 · 2608 阅读 · 0 评论 -
从Java内存模型的角度思考线程安全与并发
并发的两个关键问题1、线程之间如何通信2、线程之间如何同步 通信是指线程之间以何种机制来交换信息,在命令式编程中,通信机制有两种:共享内存和消息传递;JAVA的并发采用的是共享内存,线程之间的通信总是隐式进行。 同步指程序中用于控制不同线程间操作发生相对顺序的机制,在共享内存并发模型中,同步是显式进行的。JAVA的内存模型1、共享变量:分配在堆内转载 2017-03-23 15:08:29 · 2492 阅读 · 0 评论 -
不同方式遍历Map集合
Map是一种以键值对的形式存在的集合,其中每个键映射到一个值,几乎所有通用 Map 都使用哈希映射。位于java.util包中。其子类有HashMap,TreeMap。HashMap缺省的情况下是线程非安全的;当多线程访问时可能需要提供同步机制,key和value的值允许为null,键值允许重复,没有顺序。 普通JAVA类遍历Map集合 Map原创 2014-07-09 15:25:59 · 681 阅读 · 0 评论 -
Java中Comparable接口的使用
public interface Comparable当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:int compareTo(T o)在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。返回值及比较规则:1、返回负值-原创 2014-07-11 18:50:09 · 4509 阅读 · 1 评论 -
Java类集框架解析
Java 类集框架1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实现动态的数组。灵活的代价是操作上的繁琐,在计算机的世界,处理繁琐问题的不二法门就是将其封装,只向外暴露以供调用的方法视图。Java类集框架就是对这一方法的一种官方实现——一原创 2014-07-11 19:18:43 · 692 阅读 · 0 评论 -
Java数组与容器类分析资料–数组、List和Set、Map等
数组是Java语言内置的类型,除此之外,Java有多种保存对象引用的方式。Java类库提供了一套相当完整的容器类,使用这些类的方法可以保存和操纵对象。下面分别进行讨论,在研究Java容器类之前,先了解一下Java数组的基本功能和特性。1. 数组的基本特性数组与其它种类的容器(List/Set/Map)之间的区别在于效率、确定的类型和保存基本类型数据的能力。数组是一种高效的存储和随原创 2014-07-11 19:22:38 · 1247 阅读 · 0 评论 -
Java中的集合类解析和一些有深入的面试题
Java集合类解析List、Map、Set三个接口,存取元素时,各有什么特点?List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。Hashtable和HashMap的区别: 1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类; 2原创 2014-07-23 11:32:48 · 12283 阅读 · 3 评论