自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

键盘上流淌的日子

以我所知,传递知识,帮助在猿生中挣扎的人

  • 博客(20)
  • 收藏
  • 关注

原创 Java IO(三) 之 FileInputStream

前言: 对于文件系统中的文件,都可以使用FileInputStream流类以二进制的形式进行读取,但是由于Java本身的定位在JVM之上,没有处理计算机底层的能力,因此一些涉及底层处理的方法都是使用native方法调用第三方底层语言进行处理的。 本人重在讲解FileInputStream类的内部实现,不会对其应用过分的讲解。FileInputStream的类图: 解析: Fi

2015-07-26 21:08:15 9107

原创 Java IO(二) 之 InputStream

源码均以JDK1.8作为参考前言: InputStream实现了两个接口Closeable和AutoCloseable: Closeable:JDK1.5中引入,Closeable接口中只有一个close()方法的定义: public void close() throws IOException; 实现了Closeable接口的类的对象可以被关闭,流类都实现了该接口,以达到关闭流的目

2015-07-26 00:08:59 9964 1

原创 Java IO(一) 之 IO总览

前言: IO对于系统设计来说,是一个很重要的关注点,往往系统运行的瓶颈就在IO设计上,无论是数据库IO,文件IO还是网络IO,都需要进行精致的设计,才能使得系统达到最佳运行状态。对于现代系统并发量、数据量的剧增,IO处理对于系统显得更加重要。研究Java IO对于我们工作有益无害。 Java.io包含了Java阻塞型IO的设计。Java的IO主要包含三个部分: 1.流式

2015-07-25 22:51:53 9026

原创 Java 四种引用

截止现今版本,Java的引用分为四种:强引用、软引用、弱引用和虚引用(又称幽灵引用),在JDK1.2中引入了这四种引用,使得开发中可以在一定程度上虚范围的控制Java对象的生命周期。之所以说虚范围,是因为即使使用了非强引用,最终的垃圾回收发起也都是由JVM垃圾回收机制决定的,但是这种改变是一种进步,使我们在应用中更加灵活。 强引用: 一般在Java开发中使用的都是强引用,之所以称之为

2015-07-24 18:07:37 9039

原创 Java FastJson 源码分析(一) 之 简单应用

fastjson是一个性能很好的Java语言实现的JSON解析器和生成器,来自阿里的工程师开发。提供了Java对象快速序列化和发序列化的工具。 主要特点: •快速FAST(比其它任何基于Java的解析器和生成器更快) •强大(支持普通JDK类包括任意JavaBean Class、Collection、Map、Date或enum) •零依赖(没有依赖其它任何类库

2015-07-24 17:55:28 11454

原创 Java设计模式(一) 之 详解单例模式

1.前言 单例模式可能是设计模式中相对比较简单的而且在工作中应用最频繁的设计模式了,例如系统配置文件的读取工具类要求得保证其实例唯一性。再比如在需要调用计算机底层时,需要一个Java来使用JNI来与其他语言进行交互,此时可能需要保证Java类的实例是唯一的。 那么在编写单例模式时,需要考虑哪些问题呢?2.简单实现: 常规单例模式实现的原则: 1.实例变量私有化

2015-07-23 17:55:18 8917

原创 Java Jaxb JavaBean与XML互转

1.Jaxb - Java Arcitecture for XML Binding是业界的一个标准,是一项可以根据XML Schema产生Java类的技术。Jaxb2.0是Jdk1.6的组成部分。不需要在第三方Jar包的支持下即可完成Xml与JavaBean的相互转换。2.重要概念:·JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。·Marshalle

2015-07-22 21:51:20 9392

原创 Java Lombok 减少代码冗余 利刃

前言:现在是ORM框架大行其道的时代,有着如Hibernate这样重量级的框架,提供Java数据的双向映射,也有如Mybatis这样的轻量级框架,提供Java无论使用的是哪种流行的框架,在其中都少不了Model类的编写,还有其中错综负责的getter/setter方法,这些getter/setter方法的存在,使得代码变得非常的臃肿。那么需要怎么解决这个问题呢,便引入了这篇文章的主角L

2015-07-22 21:06:18 10630

原创 Java volatile 关键字

前言:用在多线程,同步变量。线程为了提高效率,将某个成员(A)变量拷贝了一份(B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这个中情况的。volatile告诉jvm,它所修饰的变量不保留拷贝,直接访问主内存中的A。在Java内存模型中,有main memory,每个线程也有自己的memory(寄存器).为

2015-07-22 21:00:16 8993

原创 Java 位运算符 深入理解

在Java中存在着这样一类操作符,是针对二进制进行操作的,它们分别是&、|、^、~、>>、>>几个位操作符,无论是初始值是按照何种进制,都会换算成二进制进行位操作。接下来对这几种操作符进行一下简单的讲解。&:作用是对运算符两侧以二进制表达的操作符按位分别进行'与'运算,而这一运算是以数中相同的位(bit)为单位的。操作的规则是:仅当两个操作数都为1时,输出结果才为1,否则为0,示例

2015-07-21 21:48:44 8968

原创 Java synchronized 同步原语 详解

源码均以JDK1.8作为参考synchronized是Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个对象时,同一时间的另一个线程需要在等待当前线程释放锁的前提下可以继续执行。对于synchronized关键字的理解是不是很有限呢,记得本人在很早之前被一个面试官问的哑口无言的时候,就下定决心要好好的研究一下synchronized。在实际工作中synchro

2015-07-20 16:17:07 11951 1

原创 Java Timer 源码深入分析

源码均以JDK1.8作为参考JDK1.3中为定时任务提供了一种简单实现,java.util.Timer类调度java.util.TimerTask任务。TimerTask:TimerTask为Timer定时任务的执行提供了最小执行单元,TimerTask继承自Runnable接口,TimerTask本身是一个抽象类,给继承自Runnable接口的TimerTask更加详细的

2015-07-19 22:15:24 10378 1

原创 Java HashMap 深入源码分析

源码均以JDK1.8作为参考Map接口是JDK1.2中引入的K,V形式集合约定,此种集合形式为键值对的存储提供了一种可行性实现,在JDK1.0中使用Dictionary及其子类进行此种数据格式的存储,Dictionary也就是Map的前身。Map:Map接口在JDK1.2被引入,此接口中对键值(K, V)形式数据格式的存取定义了一系列的规则,同时也定义了Map中元素的基

2015-07-17 22:34:52 8769 1

原创 Java ArrayDeque、PriorityQueue 先进先出队列(FIFO)

源码均以JDK8作为参考队列是一种先进先出(FIFO)的数据结构。ArrayDeque:1.简介:ArrayDeque是JDK1.6中引入的实现。ArrayDeque继承了AbsrtactCollection抽象类,实现了Deque接口。因此ArrayDeque同时拥有这两者的特性,本身队列是基于先进先出(FIFO)的,但是由于JDK1.6中Deque接口的实现,A

2015-07-16 23:28:36 27890

原创 Java 队列 Queue、Deque、AbstractQueue 源码分析

源码均以JDK8作为参考在JDK1.5Collection集合框架重构中,引入了队列(Queue)的概念,同时在JDK1.6中引入了双端队列(Deque)的概念。1.Queue简介:Queue:Queue实现了一个先进先出(FIFO)队列的约定,Queue同样实现了Collection接口,接口中定义了一系列FIFO队列的基本操作。Queue的操作分为两类,这两类方法处理失败操作存

2015-07-15 23:29:06 11412

原创 Java ArrayList、Vector、LinkedList 异同

源码均以JDK8作为参考ArrayList、Vector、LinkedList都是Colleaction集合框架下的分支,这个分支主要来自于List,List定义了三种集合的主要操作约定,但是在实现上LinkedList实现了Deque接口,间接的实现了Queue接口,因此其拥有了队列的一系列操作方法的实现。1.结构:从结构上看,ArrayList和Vector属于一类,先不论它们

2015-07-15 16:55:19 8723

原创 Java LinkedList 源码分析

源码均以JDK8作为参考LinkedList在JDK1.2中引入,继承自AbstractSequentialList抽象类和实现了List接口,JDK1.5进行Collection框架重构时,由于其链表的特性与Queue及其相似,LinkedList实现了Queue接口,在JDK1.6中由于新引入了Deque双端队列(Deque继承自Queue),LinkedList放弃Queue接口

2015-07-15 16:42:05 8923 1

原创 Java Vector 源码分析

源码均以JDK1.8作为参考Vector是JDK1.0中既已引入的数据结构,在Vector现存的方法中依然可以看到比较古老的public方法,比如setElementAt、removeElementAt、insertElementAt等。在JDK1.2中引入了Collection集合框架,Collection下属的AbstractList和List规定了基于数组线性处理结构的一系列操作

2015-07-15 13:31:09 8720

原创 Java ArrayList 源码分析

1.ArrayList是基于数组实现其内部数据结构的,内部定义的数组的名称为elementData。2.ArrayList类内重载了3个构造方法,分别是:public ArrayList():无参构造函数,初始化时将内部定义的空数组DEFAULTCAPACITY_EMPTY_ELEMENTDATA赋值给elementData。public ArrayList(int initial

2015-07-14 16:30:52 8470 1

原创 集合总览--Collection框架整体解析

Collection简述:JDK中java.util包下,是JDK为java开发提供的常用工具类,在这些工具类中,java本身对常用的数据结构进行了封装,在JDK1.2版本中引入了collection框架,使得java开发者不再需要自行进行部分数据结构的设计。 在collection框架中有我们常用的诸如:ArrayList、HashMap、Vector等,每种集合结构为我们提

2015-07-14 11:41:32 8833 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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