java
文章平均质量分 95
左撇子小哥哥
一半现实,一半浪漫。
展开
-
java集合类(一)综述
java集合类,在我们开发过程中经常用到。因为接口很多,所以现在做一下总结。 java集合类图(仅仅列出了常用的一些、concurrent包中相关子类未列出): 从上图可以看出,集合类有两个分支:Collection与Map。List、Set、Queue接口都是继承自Collection接口。Collection继承了Iterable接口,所以List、Set、Queue都可以...原创 2016-07-11 11:38:07 · 725 阅读 · 0 评论 -
日志框架那点事
日志框架介绍一、简介日志框架市场上存在非常多的日志框架。JUL(java.util.logging),JCL(ApacheCommons Logging),Log4j,Log4j2,Logback、SLF4j、jboss-logging等。Spring Boot在框架内容部使用JCL,spring-boot-starter-logging采用了slf4j+logback的形式,Spri...原创 2018-11-25 12:20:23 · 166 阅读 · 1 评论 -
MQ学习笔记整理
MQ学习笔记一、为什么要使用MQ?其实这里要讲的就是使用MQ的好处,MQ的的使用场景有很多,但是比较核心的有3个:解耦、异步、削峰1. 解耦例如:A系统要发送数据到B、C、D三个系统,通过接口调用发送。假如现在又添加了一个E系统,也要数据,A系统需要修改;B系统说我现在不需要这个数据了,A系统还是要修改。这种情况下,A系统的维护者肯定很崩溃。其实这个调用是不需要直接同步调用接口的,如果...翻译 2018-11-12 12:24:40 · 4547 阅读 · 4 评论 -
JVM内核学习笔记
一、补充知识补码: 正数的补码是其本身,负数的补码是反码加1例如:-6原码:10000110反码:11111001补码:11111010为什么要有补码的存在?无歧义的表示零:0; 0既不属于正数,也不属于负数用正数表示0: 源码: 00000000 反码: 01111111 补码: 00000000用负数表示0: 源码: 100...原创 2018-09-08 17:43:44 · 279 阅读 · 0 评论 -
java集合类(四)ArrayList与LinkedList比较
概述 ArrayList与LinkedList均实现了List接口,所以从用户使用的角度来看是区别不大的。但是由于其底层实现的不同,对用户来讲无差异的操作(如:get,add,remove)底层所做的事情完全不一样,从而使得他们有着各自的应用场景。ArrayList与LinkedList类的声明1 ArrayListpublic class ArrayList<E> extends Abstr原创 2016-07-12 11:58:41 · 1293 阅读 · 0 评论 -
jvm - 类的初始化过程
加载->链接->初始化 我们知道,我们写的java代码称为源码,想要能够被jvm执行首先需要编译成.class文件,那么编译完到使用又都经理的哪些阶段呢?主要分为以下三个阶段:加载:查找并加载类的二进制数据(.class文件硬盘到内存的一个过程)。连接 - 验证:确保被加载的类的正确性。 - 准备:为类的 静态变量分配内存,并将其初始化为默认值。 - 解析:把类中的符号引用转原创 2016-12-31 15:29:36 · 4072 阅读 · 1 评论 -
jvm - ClassLoader
类加载机制 类加载器用来把类加载到Java虚拟机中,从JDK1.2开始,类的加在过程采用父亲委托机制。采用这种方式的祝要原因是保证Java平台的安全。在这种机制下,除了Jvm自带的根类加载器以外,其余的类加载器都有且只有一个父类加载器。JVM自带的几种类加载器根类加载器(Bootstrap):该加载器没有父加载器。它负责加载虚拟机的核心类库,如java.lang.*等。可以看出,java.lan原创 2017-01-02 18:20:28 · 2959 阅读 · 0 评论 -
java集合类(五)Vector与ArrayList比较
概述 为何将Vector和Arr**a**yList做比较呢?原因是他们底层都是基于数组的,主要区别是Vector是线程安全的,而ArrayList是非线程安全的。从源码可以看出Vector大部分方法都加了synchronized关键字。 除此之外,他们在初始化与扩容方面也有一些细微的差别。构造ArrayList的构造方法://构造一个具有指定初始容量的空列表Listpublic ArrayL原创 2016-07-12 17:19:35 · 1210 阅读 · 0 评论 -
Map(二)之LinkedHashMap(java8)
概述 LinkedHashMap继承自HashMap,所以它具有HashMap的结构和特性。它与HashMap的不同在于它可以按照顺序(插入顺序或LRU算法)来遍历里面的元素。原创 2016-07-21 15:18:40 · 2239 阅读 · 0 评论 -
Map(一)之HashMap(java8)
概述【本文基于jdk1.8.0_60】 在我们日常开发中,HashMap被使用到的概率非常高。它是一种非常典型的数据结构。我们应该都知道Map是存储key-value键值对的集合类,也就是说元素是成对出现的。并且key可以为null但必须是唯一的。 定义public class HashMap<K,V> extends AbstractMap<K,V> implements Map<原创 2016-07-13 16:26:13 · 5940 阅读 · 2 评论 -
java集合类(七)Set之LinkedHashSet&TreeSet
LinkedHashSet概述 我们知道HashSet是无序的,那么LinkedHashSet从名称上我们就可以感觉到他和链表有关系,那么它是否是有序的呢?事实上,LinkedHashSet是具有可预知迭代顺序的Set接口的实现。此实现与HashSet的不同之处在于,它维护着一个运行于所有条目的双重链表。此链表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 还记得HashSet中有一个原创 2016-07-13 15:16:47 · 1071 阅读 · 0 评论 -
java集合类(六)Set之HashSet
概述 关于集合Set想必大家都很熟悉,它的主要特点就是Set中的元素都是唯一的,并且是无序的。Set是一个接口,它提供了如下接口方法供子类实现: 这些接口都比较简单,就不一一介绍他们的用途了。本文我们主要讲解HashSet,看下它的底层是如何运作的。定义public class HashSet<E> extends AbstractSet<E> implemen原创 2016-07-13 11:30:59 · 1011 阅读 · 0 评论 -
java集合类(二)List之ArrayList
ArrayList概述:ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来原创 2016-07-11 18:01:42 · 953 阅读 · 0 评论 -
java集合类(三)List之LinkedList
LinkedList概述 LinkedList是基于链表的list,与C++中的链表是相同的,它是一个双向链表。先来看下LinkedList的定义:public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializ原创 2016-07-12 11:34:10 · 1152 阅读 · 0 评论 -
一生产者多消费者 --- 操作栈问题
一生产者多消费者 — 操作栈问题本文是想通过栈的方式来进行线程间通讯。1. 异常情况看如下代码:package entity;import java.util.ArrayList;import java.util.List;public class MyStack { private List list = new ArrayList(); synchronized...原创 2018-11-28 13:20:23 · 588 阅读 · 0 评论