- 博客(24)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 TreeMap的深入剖析
TreeMap的深入剖析TreeMap的深入剖析一、简介二、概览2.1、属性三、源码分析3.1构造函数3.2 查找3.3 遍历3.3、插入3.4 删除总结参考文献一、简介TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 conta...
2018-06-26 21:06:56 921
原创 HashMap的深入剖析
HashMap的深入剖析HashMap的深入剖析前沿一、HashMap的顶部注释二、HashMap的依赖关系三、HashMap的数据结构五、HashMap 构造函数六、put()方法6.1、 hash(Object key)6.2、putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)6....
2018-06-26 16:40:12 412
原创 Map集合、散列表
Map集合、散列表Map集合、散列表一、Map1.1、为什么需要map1.2、Map与Collection的区别1.3、Map的大家庭1.4、简单的介绍一下Map的常用的功能二、散列表介绍2.1、散列表工作原理2.2、哈希函数2.3、hash冲突2.4、哈希函数构造方法2.5、处理冲突2.6、查找及分析参考文献一、Map1.1、为...
2018-06-25 16:50:53 2179
原创 List集合之LinkedList深度解析
List集合之LinkedList深度解析List集合之LinkedList深度解析1.1、结构图1.3、LinkedList 构造函数1.3.1、LinkedList()1.3.2、LinkedList(Collection1.3.3、小结1.4.1、添加方法(Add)概览1.4.2、 add(E e) & addLast(E e) & offer(E e...
2018-06-25 11:17:47 1251 1
原创 Vector
List集合之Vector深度解析List集合之Vector深度解析一、Vector解析1.1、概览1.2、Vector的属性1.3、Vector的 构造函数1.4、Vector的 方法1.4.1、Vector添加方法1.5、Vector线程安全问题的研究总结参考文献现在还是把Lits中重要的知识点回顾一遍,现在这篇主要讲List集合的三个子类:...
2018-06-24 16:54:22 1151
原创 List集合之ArrayList
List集合之ArrayList深度解析List集合之ArrayList深度解析一、ArrayList解析1.1、概览1.1.1、java.io.Serializable接口的作用1.1.2、讨论 RandomAccess 的作用。1.1.3、 Cloneable接口的作用:1.1.4、数组的默认大小1.2、ArrayList的属性1.3、ArrayList构造函数1...
2018-06-24 11:43:19 43343 7
转载 对象序列化为何要定义serialVersionUID的来龙去脉
对象序列化为何要定义serialVersionUID的来龙去脉在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到内存,等要用了,再还原到对象中,说白了,就是能将一个2进制文件变成内...
2018-06-23 16:12:48 1672
原创 容器中的设计模式
容器中的设计模式容器中的设计模式一、 迭代器模式二、迭代器模式的详细介绍四、适配器模式详解4.1、现实生活中的适配器4.2、实现电源适配器五:参考文献一、 迭代器模式Collection 实现了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection ...
2018-06-23 15:45:59 457
原创 容器中的设计模式
容器中的设计模式容器中的设计模式一、 迭代器模式二、迭代器模式的详细介绍三、适配器模式四、适配器模式详解4.1、现实生活中的适配器4.2、实现电源适配器五:参考文献一、 迭代器模式Collection 实现了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collec...
2018-06-23 11:58:28 1117
原创 容器概览
容器概览容器概览一、前言:二、概览:Collection2.1、先来谈一谈为什么需要Collection2.2、Collection的由来以及功能三、概览:Map四、概览:Iterator五、参考文献一、前言:由于在找工作的过程中,java容器的知识被问的频率是相当的高的,所以今天借此机会,写一系列的Collection的相关知识,深入到 源码进行...
2018-06-23 10:44:36 200
转载 散列表(hash)
Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。 1.Hash表的设计思想 对于一般的线性表,比如链表,如果要存...
2018-06-23 09:53:35 178
转载 Java 中的 ==, equals 与 hashCode 的区别与联系
一、概述1、概念== : 该操作符生成的是一个boolean结果,它计算的是操作数的值之间的关系equals : Object 的 实例方法,比较两个对象的content是否相同hashCode : Object 的 native方法 , 获取对象的哈希值,用于确定该对象在哈希表中的...
2018-06-19 16:15:51 301
原创 字符串常量池
字符串常量池字符串常量池1、创建字符串的方式1、创建字符串的方式在Java中有两种方法可以创建一个字符串对象:使用new运算符。例如: java String str = new String("Hello");使用字符串常量或者是常量表达式 java String str="Hello"; //(字符串常量) 或者 Strin
2018-06-19 16:11:11 1133
转载 红黑树
1、R-B Tree简介2、红黑树的应用3、红黑树的时间复杂度和相关证明4、红黑树的基本操作:左旋和右旋5、红黑树的基本操作(二) 添加5.1、(Case 1)叔叔是红色5.2、 现象说明3. (Case 3)叔叔是黑色,且当前节点是左孩子6、红黑树的基本操作(三) 删除1、R-B Tree简介R-B Tree,全称是Red-Black Tree,又称...
2018-06-17 21:10:55 482
原创 消息中间件-RabbitMQ简单实现和工作队列(2)
1、简单队列”Hello RabbitMQ”2、项目的创建2.1、引入jar包2.2、创建连接2.3、生产者2.3、消费者3、简单队列的不足4、work queue(工作队列)4.1、生产者4.2、消费者14.3、消费者24.4、现象消息队列的使用过程大概如下:(1)客户端连接到消息队列服务器,打开一个channel。 (2)客户端声明一个...
2018-06-09 18:19:06 253
原创 消息中间件-RabbitMQ介绍(1)
1.RabbitMQ历史2.应用的场景2.1、异步处理2.2、应用解耦2.3、流量削峰一般在秒杀活动中应用广泛3、RabbitMQ 基本概念4. 进一步的细节阐明4.1 使用ack确认Message的正确传递4.2 Reject a message4.3 Creating a queue4.4 Exchanges4.5 Virtual hosts...
2018-06-09 11:24:49 522
原创 String, StringBuffer,StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。 private final char value[]; ...
2018-06-07 20:23:10 138
原创 java中类的加载顺序
1.首先,需要明白类的加载顺序。 (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法) (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 ) (3) 父类非静态代码块( 包括非静态初始化块,非静态属性 ) (4) 父类构造函数 (5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 ) (6) 子类构造函数静态块:用static申明,JV...
2018-06-07 19:39:32 194
原创 Java 并发编程:深入理解 ThreadLocal
摘要: ThreadLocal 又名线程局部变量,是 Java 中一种较为特殊的线程绑定机制,用于保证变量在不同线程间的隔离性,以方便每个线程处理自己的状态。进一步地,本文以ThreadLocal类的源码为切入点,深入分析了ThreadLocal类的作用原理,并给出应用场景和一般使用步骤。...
2018-06-05 10:48:08 215
转载 单例设计模式
摘要: 本文首先概述了单例模式产生动机,揭示了单例模式的本质和应用场景。紧接着,我们给出了单例模式在单线程环境下的两种经典实现:饿汉式 和 懒汉式,但是饿汉式是线程安全的,而懒汉式是非线程安全的。在多线程环境下,我们特别介绍了五种方式来在多线程环境下创建线程安全的单例,即分别使用 sy...
2018-06-05 10:10:02 119
转载 Java并发编程:volatile关键字解析
摘要: 在 Java 并发编程中,要想使并发程序能够正确地执行,必须要保证三条原则,即:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能会导致程序运行不正确。volatile关键字 被用来保证可见性,即保证共享变量的内存可见性以解决缓存一致性问题。一旦一个共享变量被 volatile关键字 修饰,那么就具备了两层语义:内存可见性和禁止进行指令重排序。在多线程环境下,volatile关键...
2018-06-04 22:29:52 291
转载 接口和抽象类的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。另外,接口和抽象类在方法上有区别: 1.抽象类可以...
2018-06-04 16:38:40 167
原创 java并发编程:wait和sleep的区别
1:wait()可以指定时间也可以不指定时间,sleep必须指定时间2:在同步中时,对CPU的执行权和锁的处理不同:wait()释放CPU的执行权,释放锁;sleep()释放CPU的执行权,但是不释放锁...
2018-06-04 16:01:27 178
原创 java并发编程:线程间通信
摘要:线程与线程之间不是相互独立的个体,它们彼此之间需要相互通信和协作,最典型的例子就是生产者-消费者问题。本文首先介绍 wait/notify 机制,并对实现该机制的两种方式——synchronized+wait-notify模式和Lock+Condition模式进行详细剖析,以作为线程间通信与协作的基础。进一步地,以经典的生产者-消费者问题为背景,熟练对 wait/notify 机制的使用。最...
2018-06-04 15:22:05 371
TA创建的收藏夹 TA关注的收藏夹
TA关注的人