- 博客(15)
- 收藏
- 关注
原创 Java基础-红黑树(RBTree)学习与ArrayList,HashSet性能比较
这两天都在看红黑树,第一次听说这种数据结构是在大学,当时听不大懂,第二次是在一篇博客上面了解到,当时是分析的jdk1.8的ConcurrentHashMap当某一个链表的节点数达到8个会采用红黑树的数据结构,当时没看懂,后面查看很多博客,也翻阅了数据结构的书,稍微理解了很多。概念和源码二叉树:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后...
2018-04-10 22:41:49
1046
原创 Java基础-数据结构之Stack和Queue源码分析
栈和队列基本概念:栈 (Stack)是一种后进先出(last in first off,LIFO)的数据结构,而队列(Queue)则是一种先进先出 (fisrt in first out,FIFO)的结构。java栈实现:我本地是jdk1.6,实现方式是数组,他继承Vector,Vector其实很像ArrayList,只是他在很多关键方法都加了synchronized关键字,导致每...
2018-04-08 23:09:19
386
原创 Java基础-NIO(buffer、channel、selector)三大组件学习笔记
又是两天没有学习了,内心十分惭愧,今天又开始学习;Buffer一个用于特定基本类型数据的容器。先看结构上图一共七个buffer类,java的8大基本数据类型唯独差了boolean,查看源码,他们都是各自对应的数组组成。属性分析:position、limit、capacity0 <= 标记 <= 位置 <= 限制 <= 容量 capacity,它代表这个缓冲区的容量,一旦设定...
2018-04-07 14:27:00
1098
原创 Java基础-IO流
IO流结构流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读...
2018-04-02 22:12:57
206
原创 Java基础-synchronized 关键字浅析
1.使用方式Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法:(1)修饰普通方法(2)修饰静态方法(3)修饰代码块2.三种使用方法的示例:public class Lock...
2018-04-01 23:36:03
563
原创 Java基础-ConcurrentHashMap源码分析
1.官方解释: 1)支持获取的完全并发和更新的所期望可调整并发的哈希表。此类遵守与 Hashtable 相同的功能规范,并且包括对应于 Hashtable 的每个方法的方法版本。不过,尽管所有操作都是线程安全的,但获取操作不 必锁定,并且不 支持以某种防止所有访问的方式锁定整个表。此类可以通过程序完全与 Hashtable 进行互操作,这取决于其线程安全,而与其同步细节无关。 2)获取...
2018-04-01 16:08:40
171
原创 Java基础-ArrayList源码分析
老规矩也是先画个类图了解一下他的结构:画了三个类图之后我陷入了沉思,为啥类图和HashSet这么像?翻阅资料,了解集合框架采用了策略模式的设计模式,设计模式等后面再认真整理一份分析一下,这里就不多说了,留着这些问题,后面设计模式版本慢慢揭秘,下面说说几个重要的方法构造方法:这里了解到如果我们不设置初始值的话默认是10,和hashMap的16有差别,初始化方法就初始化了一个10长度的Object数组...
2018-03-31 14:24:28
173
原创 Java基础-HashSet源码分析
看完hashSet的源码,你肯定会来一句,我靠,因为HashSet居然是HashMap实现的,吓尿了,温习一下类图,画一个:源码走一波:构造方法 public HashSet() { map = new HashMap<E,Object>(); }add方法 public boolean add(E e) { return map.put(e, PRESENT)...
2018-03-30 22:53:37
209
原创 Java基础-HashMap源码分析
HashMap是我们工作中经常用到的key->value键值对数据结构,但是你可曾详细了解过他的内部实现?类图:刚复习完类图,马上温习一下,看一下HashMap的类家族先有一个整体的结构把握,ps:这个类图已经是我第三版的杰作了,哈哈从上图,我们能够理解,hashMap的存储结构其实就是一个entry数组,由于entry的特殊设计,entry的属性包含了一个entry,这样就让entry具有...
2018-03-29 22:43:30
167
原创 UML-类图笔记
最近要研究jdk源码,类图怎么能少呢,先记录一个笔记方便查阅1.类图关系大概分为6种:2.类图属性表示:符号含义:+ :表示public- :表示private# :表示protected方法格式:可见性 名称(参数列表) [ : 返回类型]...
2018-03-29 21:03:59
255
原创 Java基础-Thread和Runnable、start()和run()浅析
1.Thread和Runnable区别我们要清楚Thread是一个类,他实现了Runnable接口,Runnable是一个接口,这是他们本质上的区别,我们都知道java是单继承语言,一个子类他的父类只能有一个,但是可以实现多个接口,我们平时需要新建一个线程通常的方法有两种,废话不多说,代码说话。public class ThreadTest { public static void main(S...
2018-03-28 22:32:52
3086
原创 Java基础-StringBuilder、StringBuffer源码详解
UML类图:1.StringBuilder源码分析public final class StringBuilder extends AbstractStringBuilder{},他继承一个抽象类,AbstractStringBuilder,抽象类声明他的两个属性: char[] value;//具体数据 int count;//被使用的长度自己动手写一个public class MyString...
2018-03-28 22:05:35
194
原创 Java基础- System.arraycopy()
经过这段时间的源码阅读,我发现一个非常重要的方法,虽然我们平时很少用到,但是jdk源码里面对数组的复制都是通过这个方法,所以记录一下public static native void arraycopy(Object src,int srcPos,Object dest, int destPos,int length);方法简介:方法是一个本地方法,而且是一个System的静态方法,一般Syste...
2018-03-28 21:48:58
183
原创 Java基础-String详解
String详解1.数据结构:char数组:被final修饰,表示不可变,所以String一旦初始化之后不能改变;offset字段:offset有抵消的含义,在String里面表示数组存储的第一个索引;count字段:为数组的长度,实际上等于str.length();hash字段:在第一次获取hashCode的时候会初始化,之后再调用不会再计算;2.主要方法:其他方法可以不知道,但是toCharA...
2018-03-27 21:49:39
189
原创 SmartUpload控件 中文乱码问题 jsp+servlet解决办法
看到很多网友找不到答案,所有特别为这些网友写一点思路,SmartUpload控件 中文乱码问题 jsp+servlet解决办法
2015-03-16 17:20:08
1742
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人