![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
大多多
脚踏实地,仰望星空。
展开
-
JDK源码阅读(二)、HashMap
HashMap算是内容比较多的了,刚开始看3000行左右也是挺蒙蔽的,不过读起来也没那么麻烦。 一、概括HashMap内部采用数组+链表(树)的方式进行数据的存储与维护,数组的每个位置存放的是一个链表或者树。每次存放数据时候,由Key的Hash值经过一些操作决定存放的数据下标,再经过遍历指定数组位置链表(树),判断V是否相同,相同的话替换,不同的话放在链表的尾部。删除也是类似的流程。(需要注意,在...原创 2018-03-28 19:38:58 · 328 阅读 · 0 评论 -
JDK源码阅读(6)、常用集合间的关系
看了些源码了,该把这个集合间的关系缕清了。祭出网上流传已久的java集合关系类图一、集合关系类图二、相关的接口和类 1.Iterable接口 :进行集合中数据的遍历。 Iterator<T> iterator();//生成集合数据对应的迭代器 /** 从jdk1.8开始出现的接口,在集合中元素遍历过程中 进行一些自定义操作 */...原创 2018-04-02 23:04:45 · 299 阅读 · 0 评论 -
JDK源码阅读(四)、ArrayList&LinkedList
一、ArrayList与LinkedList对比 ArrayList内部采用可变数组存储数据,所谓可变,就是数组的长度不是固定的,当添加数据到达上限的时候,会增长为原来的1.5倍。ArrList适合数据的随机读取,不适合大数据量数据的删除与,因为删除的话会进行数组的复制。 LinkedList内部采用链表进行数据的存储,这也意味着LinkedList适合数据的增...原创 2018-04-02 17:12:16 · 242 阅读 · 0 评论 -
JDK源码阅读(一)、PriorityQueue
写在前面,最近准备春招找实习,还有项目要做,一直没更新博客。不过通过这次找实习总结出来一个结论,基础很重要。 唉,这次找实习就当试试水了,总结一下经验,打好基础。秋招再战~ JDK源码一个学长也说了,算是集大家之精华,读了有益无害哈~一、 优先队列的内部原理 优先队列,通过名字就应该知道它内部是按照一定的优先关系进行元素的排列。而优先队列默认内部采用小根堆维护着一个一维数组。 至于什么是堆原创 2018-03-26 23:44:58 · 246 阅读 · 0 评论 -
NIO学习三、基于NIO的WEB服务器
本文主要是对于NIO的应用,没什么特别的地方。一、准备过程 实现的http服务器只可以访问静态资源,需要将文件放在webroot目录下。二、设计流程: 1、开发Request进行请求资源的解析,找到请求的路径,如果请求不合法抛出异常。 2、开发Response将资源返回给客户端 3、开发HttpServer,创建ServerSocketCha原创 2017-12-05 17:14:30 · 1045 阅读 · 0 评论 -
动态代理的两种实现方式
最近在阅读Spring源码,对于Spring AOP动态代理的两种实现方式--JDK动态代理以及Cglib动态代理的实现又重新回顾了一下。特此记录。一、JDK动态代理 这是通过java反射机制来实现的,它所对应的类必须有接口。 Jdk动态代理主要有两个重要的地方: InvocationHandler:每一个动态代理类都需要折现这样一个原创 2017-11-27 17:35:10 · 3380 阅读 · 0 评论 -
NIO学习二、NIO的基本使用
这是作为学习NIO的总结,如有不对,请大佬指出。 一、基本操作(这些操作不会的时候查文档就行) 从一个buffer中读写到另一个buffer @Test public void bufferTest1(){ try { RandomAccessFile readAccessFile=new RandomAccessFi原创 2017-12-03 22:45:38 · 268 阅读 · 0 评论 -
NIO学习一、NIO简介
最近学习NIO,先说一下NIO的定义吧。NIO,就是new io,从jdk 1.4开始引入的新的api。它与传统的IO相比,有如下特性:1)NIO是面向缓冲区的,IO是面向流的。2)IO是阻塞的操作,如果一个io的read或者write没有得到数据的时候,会一直等待,当前线程不能做其他的事情。而NIO提供了非阻塞方式,它可以在没有数据到来之前,先做其他的事情,数据到来之后进行处理。3)N原创 2017-12-03 19:33:52 · 270 阅读 · 0 评论 -
Java中的Lambda表达式
最近看到一段代码, 里面用到了lambda表达式。刚开始学习java语法的时候对于这些东西只是草草看了一下,以后也没再用,到现在都忘干净了。突然感觉自己的基础很薄弱呀,,,所以重新学了一下,特此记录。一、什么是Lambda表达式?Lambda表达式是一个匿名函数,所谓的匿名函数,就是没有名字的函数。在Java中,Lambda表达式的出现,对于代码的简洁,性能的提升都有很大的帮助。二、Lambda表达原创 2017-11-30 23:22:35 · 293 阅读 · 0 评论 -
JDK源码阅读(三)、LinkedHashMap
一、LinkedHashMap原理 LinkedHashMap继承自HashMap,所以,它有hashMap的全部特性,它内部采用存储数据额的节点继承自HashMap的node。有一个before与after用于维护插入或者访问的顺序。它内部的put,get,remove等方法都是调用HashMap的方法。当这些方法调用完成后再通过一个回调子类的方法进行子类的相关操作。(因为它一些特...原创 2018-03-28 23:29:42 · 247 阅读 · 0 评论