自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Java异常

 import java.io.IOException;public class Arcane1 { public static void main(String[] args) { try { System.out.println("Hello world"); } catch(IOException e) { ...

2019-02-25 21:03:56 1680

原创 Java线程池基础

Executor提供了execute()接口来执行已提交的 Runnable 任务的对象。Executor存在的目的是提供一种将"任务提交"与"任务如何运行"分离开来的机制。ExecutorService提供了"将任务提交给执行者的接口(submit方法)","让执行者执行任务(invokeAll, invokeAny方法)"的接口等等。AbstractExecutorService存...

2019-02-23 11:56:50 165

原创 Java并发集合--ConcurrentLinkedQueue

ConcurrentLinkedQueueConcurrentLinkedQueue是线程安全的队列,它适用于“高并发”的场景。它是一个基于链接节点的无界线程安全队列,按照 FIFO(先进先出)原则对元素进行排序。队列元素中不可以放置null元素(内部实现的特殊节点除外)。ConcurrentLinkedQueue的链表Node中的next的类型是volatile,而且链表数据item的...

2019-02-23 11:33:56 230

原创 Java并发集合--LinkedBlockingDeque

LinkedBlockingDequeLinkedBlockingDeque是双向链表实现的双向并发阻塞队列。该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(插入/删除);并且,该阻塞队列是支持线程安全。此外,LinkedBlockingDeque还是可选容量的(防止过度膨胀),即可以指定队列的容量。如果不指定,默认容量大小等于Integer.MAX_VAL...

2019-02-23 11:32:27 144

原创 Java并发集合--LinkedBlockingQueue

 LinkedBlockingQueueLinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按 FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。此外,LinkedBlockingQueue还是可选容量的(防止过度膨胀),即可以指...

2019-02-23 11:29:21 111

原创 Java并发集合--ArrayBlockingQueue

ArrayBlockingQueueArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。 1. ArrayBlockingQueue继承于AbstractQueue,并且它实现了BlockingQueue接口。 2. ArrayBlockingQueue内部是通过Object[]数组保存数据的,也就是说ArrayBlockingQueue本质上是通过数组...

2019-02-23 10:58:55 121

原创 Java并发集合--ConcurrentSkipListMap

ConcurrentSkipListMapConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。ConcurrentSkipListMap和TreeMap,它们虽然都是有序的哈希表。但是,第一,它们的线程安全机制不同,TreeMap是非线程安全的,而ConcurrentSkipListMap是线程安全的。第二,ConcurrentSkipListMap是通过...

2019-02-23 10:44:56 292

原创 Java并发集合--ConcurrentHashMap

ConcurrentHashMap HashMap是非线程安全的哈希表,常用于单线程程序中。 Hashtable是线程安全的哈希表,它是通过synchronized来保证线程安全的;即,多线程通过同一个“对象的同步锁”来实现并发控制。Hashtable在线程竞争激烈时,效率比较低(此时建议使用ConcurrentHashMap)!因为当一个线程访问Hashtable的同步方法时,其它...

2019-02-22 19:12:16 153

原创 Java并发集合--CopyOnWriteArraySet

CopyOnWriteArraySet基础它是线程安全的无序的集合,可以将它理解成线程安全的HashSet。有意思的是,CopyOnWriteArraySet和HashSet虽然都继承于共同的父类AbstractSet;但是,HashSet是通过“散列表(HashMap)”实现的,而CopyOnWriteArraySet则是通过“动态数组(CopyOnWriteArrayList)”实现的,并...

2019-02-22 17:42:31 107

原创 java并发集合--CopyOnWriteArrayList

CopyOnWriteArrayList基础和ArrayList不同的时,它具有以下特性:1. 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。2. 它是线程安全的。3. 因为通常需要复制整个基础数组,所以可变操作(add()、set() 和 remove() 等等)的开销很大。4. 迭代器支持hasNext(), ...

2019-02-22 17:03:15 129

原创 Java并发集合

集合基础java集合的架构。主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和Set(集合)。1. List的实现类主要有: LinkedList, ArrayList, Vector, Stack。(01) LinkedList是双向链表实现的双端队列;它不是线程安全的,只适用于单线程。(02) ArrayList是数组实现的队...

2019-02-22 16:41:24 1065

原创 Java并发--锁

LockSupport提供“创建锁”和“其他同步类的基本线程阻塞原语”。   LockSupport的功能和"Thread中的Thread.suspend()和Thread.resume()有点类似",LockSupport中的park() 和 unpark() 的作用分别是阻塞线程和解除阻塞线程。但是park()和unpark()不会遇到“Thread.suspend 和 Thread.res...

2019-02-22 16:01:16 87

原创 java并发--原子类

原子操作类可以分为4类。1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray ;3. 引用类型: AtomicReference, AtomicStampedRerence, AtomicMarkableRef...

2019-02-20 20:31:19 85

原创 Java--并发

并发定义:即,并发(同时)发生。在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。线程之间如何通信及线程之间如何同步。(01) 通信 —— 是指线程之间如何交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。(02) 同步—— 是指程序用于控制不同线程之间操作...

2019-02-20 19:24:55 77

原创 Java线程--方法

线程实现我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable。之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程。start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run()   : run()就和普通的成员方法一样,可以被重复调用。单独调用run()的话...

2019-02-19 19:51:00 210

原创 Java线程

线程共包括以下5种状态。1. 新建状态(New)         : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。...

2019-02-18 10:35:06 81

原创 Java-IO系列

IO基础按数据流的方向划分:输入流、输出流按处理单位划分:字节流、字符流字节流和字符流的区别:    字节流没有缓冲区,是直接输出的,而字符流是输出到缓冲区的。因此在输出时,字节流不调用colse()方法时,信息已经输出了,而字符流只有在调用close()方法关闭缓冲区时,信息才输出。要想字符流在未关闭时输出信息,则需要手动调用flush()方法。    读写单位不同:字节流以...

2019-02-17 14:47:16 290

原创 Java集合--ConcurrentHashMap

背景     因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。    HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮...

2019-02-13 15:24:20 95

原创 Java集合01-02--CopyOnWriteArrayList

CopyOnWriteArrayList基础 从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。 其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正...

2019-02-13 14:13:57 103

原创 Java集合--10Map总结

Map概括HashMap是基于“拉链法”实现的散列表。一般用于单线程程序中。Hashtable也是基于“拉链法”实现的散列表。它一般用于多线程程序中。WeakHashMap也是基于“拉链法”实现的散列表,它一般也用于单线程程序中。相比HashMap,WeakHashMap中的键是“弱键”,当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除;而HashMap中的键是...

2019-02-03 10:36:46 131

原创 Java集合--09TreeMap

知识点:存储结构、同步问题、遍历、红黑树TreeMap基础public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable {}(01)是一个有序的key-value集合,它是通过红黑树实现的。(02)继承...

2019-02-03 09:29:41 130

原创 Java集合--08HashTable

Hashtable基础Hashtable叫哈希表或散列表,是根据关键码值(Key value)而直接进行访问的数据结构,采用的是数据结构中所说的链地址法处理冲突的方法。public class HashTable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io....

2019-02-02 11:12:09 91

原创 Java集合--07HashMap

HsahMap基础Java8 对 HashMap 进行了一些修改,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成。根据 Java7 HashMap 的介绍,我们知道,查找的时候,根据 hash 值我们能够快速定位到数组的具体下标,但是之后的话,需要顺着链表一个个比较下去才能找到我们需要的,时间复杂度取决于链表的长度,为 O(n)。为了降低这部分的开销,在 Java8 中...

2019-02-02 10:47:58 125

原创 Java集合--06WeekHashMap

WeekHashMap基础public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V> {}  (01)和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。  (02)Weak...

2019-02-01 19:28:50 183

原创 Java集合--05Map

Map基础(01)Map 是映射接口,Map中存储的内容是键值对(key-value)。Map映射中不能包含重复的键;每个键最多只能映射到一个值。(02)AbstractMap 是继承于Map的抽象类,它实现了Map中的大部分API。其它Map的实现类可以通过继承AbstractMap来减少重复编码。(03) SortedMap 是继承于Map的接口。SortedMap中的内容是排序的...

2019-02-01 11:34:42 84

原创 Java集合04--Stack

Stack基础public class Stack<E> extends Vector<E>Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedL...

2019-01-31 17:38:56 75

原创 java集合03-Vector

Vector基础public class Vector<E>  extends AbstractList<E>  implements List<E>, RandomAccess, Cloneable, java.io.Serializable {}(01)矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, Rand...

2019-01-31 17:15:44 101

原创 Java集合篇02--LinkedList

LinkedList基础public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable(01)是一个继承于AbstractSequentialList的双向链表。它也可以被当作...

2019-01-31 15:24:35 99

原创 Java集合篇01--ArrayList

ArrayList 基础public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable(01)ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。(02)ArrayList 实现了Ra...

2019-01-31 11:13:56 88

原创 JVM

1、类的实例化顺序http://www.importnew.com/18548.htmljava类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制。JVM中用来完成上述功能的具体实现就是类加载器.类加载器读取.class字节码文件将其转换成java.lang.Cla

2017-08-23 10:58:46 123

原创 Java基础

1、Arrays.sort实现原理和Collection实现原理 http://blog.sina.com.cn/s/blog_8e6f1b330101h7fa.html2、foreach和while的区别  在while循环里,内存读入一行输入,把它存入某个变量并且执行循环主体。然后,它再回头去找其他的输入行。       在foreach循环中,foreach需要逐行处理列

2017-08-21 10:36:48 139

原创 JVM 垃圾回收机制

一、什么是垃圾    当一个对象的引用不在使用,但仍占用内存空间时,则被认为是垃圾对象。二、怎么判断垃圾对象    1、引用计数器算法    当创建对象的时候,为这个对象在堆栈空间中分配对象,同时会产生一个引用计数器,同时引用计数器+1,当有新的引用的时候,引用计数器继续+1,而当其中一个引用销毁的时候,引用计数器-1,当引用计数器被减为零的时候,标志着这个对象已经没有引用了,

2017-03-07 14:00:09 175

原创 Java HashMap、HashTable详解

Map是一个映射接口,其中的每个元素都是一个key-value键值对,同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。

2017-03-03 21:38:38 166

原创 java中的ArrayList 、LinkedList详解

 LinkedList:     1、含有含参构造方法和无参构造方法(实现Collection的类都至少含有两种构造方法)。    2、实现了Deque、Queue接口,因此也可以作为堆栈、队列使用。    3、采用双向循环链表保存对象(查询效率低,但是增删效率很高。适用于增删动作的比较频繁,查询次数较少的元素管理集合)。    ArrayList:    ...

2017-03-03 10:49:13 488

原创 Java 五种类实例化的方法与初始化顺序

类的实例化:        1、使用new操作符。    2、通过工厂方法返回对象,如:String str = String.valueOf(23);     3、运用反射手段,调用Class对象的newInstance()方法,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Ob

2017-03-02 20:08:14 738

原创 Java的内存存储区域划分

jvm(java虚拟机)中的几个比较重要的内存区域(Java采用动态内存分配方式)。    方法区:又叫静态区,跟堆一样,被所有的线程共享。用于存储虚拟机已经加载的类信息、常量、静态变量和即时编译器编译后的方法代码。包含所有的class和static变量。   常量池:是方法区的一部分,主要用来存放常量和类中的符号引用等信息。   堆:线程共享的区域,存放对象实例,堆中不存放基

2017-03-02 15:20:46 323

原创 Javaj简介与基础

Java于1995由James Gosling创建,最初名字为OAK,1995年重命名为Java。Java语言编写的程序即是编译型又是解释型,编译只进行一次,解释在每次运行程序时都会进行。Java有三个版本:    Java SE(J2SE):开发桌面应用程序(如QQ、YY)C/S架构的软件。    Java EE(J2EE):基于浏览器的网站制作,B/S架构的软件。    Jav

2017-03-02 11:40:24 1516

原创 过滤器和拦截器的区别

过滤器:拦截器:区别:    1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。    2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。    3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。    4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。    5、在action的生命周期中

2017-01-21 16:19:10 121

原创 web.xml 中的listener、 filter、servlet 加载顺序及其详解

加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> filter -> servlet    filter-mapping 必须出现在 filter 之后,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-map

2017-01-21 15:29:40 127

原创 mybatis @param的解释

mybtis的数据库XML文件对参数的书写格式有两种① SELECT * FROM tableName  where time>=#{startTime} and time #{endTime}  order by time②SELECT * FROM tableName  where time>= '${param1}'and time  '${param1}' orde

2016-11-12 17:20:19 298

空空如也

空空如也

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

TA关注的人

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