LinkedList 源码分析

LinkedList 源码分析

1. 在阅读源码时做了大量的注释,并且做了一些测试分析源码内的执行流程,由于博客篇幅有限,并且代码阅读起来没有 IDE 方便,所以在 github 上提供JDK1.8 的源码、详细的注释及测试用例。欢迎大家 star、fork !

2. 由于个人水平有限,对源码的分析理解可能存在偏差或不透彻的地方还请大家在评论区指出,谢谢!

1.结构

1. 继承

  该类继承自 AbstractSequentialList 这个是由于他是一个顺序的列表,所以说继承的是一个顺序的 List

2. 实现

这个类实现的接口比较多,具体如下:

  1. 首先这个类是一个 List 自然有 List 接口
  2. 然后由于这个类是实现了 Deque 这个接口是双端队列的接口,所以说它是具有双端队列的特性的。后面我们会看到很多关于双端队列的方法。
  3. 然后就是两个集合框架肯定会实现的两个接口 Cloneable, Serializable 。

    Read More

ArrayList 源码分析

ArrayList 源码分析

1. 在阅读源码时做了大量的注释,并且做了一些测试分析源码内的执行流程,由于博客篇幅有限,并且代码阅读起来没有 IDE 方便,所以在 github 上提供JDK1.8 的源码、详细的注释及测试用例。欢迎大家 star、fork !

2. 由于个人水平有限,对源码的分析理解可能存在偏差或不透彻的地方还请大家在评论区指出,谢谢!

1. 结构

  首先我们需要对 ArrayList 有一个大致的了解就从结构来看看吧.

1. 继承

  该类继承自 AbstractList 这个比较好说

2. 实现

这个类实现的接口比较多,具体如下:

  1. 首先这个类是一个 List 自然有 List 接口
  2. 然后由于这个类需要进行随机访问,所谓随机访问就是用下标任一访问,所以实现了RandomAccess
  3. 然后就是两个集合框架肯定会实现的两个接口 Cloneable, Serializable 前面这个好说序列化一会我们具体再说说

    Read More

P2P 浅析

P2P 浅析

   对等网络(P2P)技术,是在传统的客户机和服务器模式来说的一种方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据。这种模式的优点是:数据的一致性容易控制,系统也容易管理。但是此种模式的缺点是:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一失效点;单一服务器面对众多的客户端,由于CPU能力、内存大小、网络带宽的限制,可同时服务的客户端非常有限,可扩展性差。

Read More

TCP 总结

TCP 总结

计算机网络中比较中要的无非就是 TCP/IP 协议栈,以及应用层的 HTTP 和 HTTPS 。
前几天一直炒的的比较火的就是 HTTP/2.0 了,但是其实 HTTP/2.0 早在2015年的时候就已经出来了,并且这个版本是基于 Google 公司的 SPDY 协议发布的,其实说白了就是用的 SPDY 做了一点修改。
好了今天的主题是 TCP 就不过多的介绍 HTTP/2.0 了,以后会专门写一篇关于 HTTP/2.0 的文章,介绍一下他的新特性。

Read More

今天是个转折点

今天是个转折点

今天是一个转折点,人生的转折点。

等待这天好久好久了,上高中到现在我好像没有任何改变,只是一个比较努力的傻子。慢慢的我的生活好像失去了那些本该有的颜色,开心,以及能够让我高兴半个月或者好久好久的事情了。

只是每个周惯例的给爸爸妈妈打电话,我想跟他们多聊聊可是话到了嘴边又咽下去了,好像不知道什么时候起突然就变得这么懂事,乖巧,大家眼里的好孩子。可是啊,我一点也不开心,找不到开心的事,就连收到那么久以来梦寐以求的阿里 offer 的时候我也非常平静,只是高兴了那么一会会,也就一会会。

今天发生了两件事,一个是我从阿里离职了,另外就是我跟父母说了我很想说的这些事。

我爸说 22 岁的我能达到目前的这个程度,我是他的骄傲!听到这句话的时候,怎么猛地眼泪就掉下来了,长时间积郁在胸口的悲伤,失望与痛苦瞬间随着眼泪涌了出来。我也明白了我告诉他们我睡不着的时候爸妈整晚的说我的事,为我想办法,也明白我是真的有多么幸运,一个爱你的人究竟能有多爱你。

所以什么才是对你真的用心的那种好,我想绝对不是那种看心情对你呼之即来挥之即去的爱。五点多的时候因为妈妈的关心,我大声说话时她有多么伤心,我说完她就没说话了,坐在那发呆,弟弟告诉她:“妈妈别担心,哥哥那么优秀怎么会找不到工作”,电话的尾声她还是不住的提醒爸爸关心我明天怎么坐车,有没有买药。电话意外挂断的时候,第一时间去打我的电话。从未觉得我的人生如此的幸运 :)

另外一个就是从阿里离职,办完离职手续的那一刻其实心里空空的,我不确信我这辈子是否还有机会踏入阿里的大门,我也不清楚明天的路会是怎样的,只是我明白了我不会去选择那条别人眼中的完美的充满鲜花和掌声的路,我想我选择的会是那条能让自己开心,有色彩的路。

是啊,我可以无趣,但不可以不开心。

今天是个转折点

今天是个转折点

今天是一个转折点,人生的转折点。

等待这天好久好久了,上高中到现在我好像没有任何改变,只是一个比较努力的傻子。慢慢的我的生活好像失去了那些本该有的颜色,开心,以及能够让我高兴半个月或者好久好久的事情了。

只是每个周惯例的给爸爸妈妈打电话,我想跟他们多聊聊可是话到了嘴边又咽下去了,好像不知道什么时候起突然就变得这么懂事,乖巧,大家眼里的好孩子。可是啊,我一点也不开心,找不到开心的事,就连收到那么久以来梦寐以求的阿里 offer 的时候我也非常平静,只是高兴了那么一会会,也就一会会。

今天发生了两件事,一个是我从阿里离职了,另外就是我跟父母说了我很想说的这些事。

我爸说 22 岁的我能达到目前的这个程度,我是他的骄傲!听到这句话的时候,怎么猛地眼泪就掉下来了,长时间积郁在胸口的悲伤,失望与痛苦瞬间随着眼泪涌了出来。我也明白了我告诉他们我睡不着的时候爸妈整晚的说我的事,为我想办法,也明白我是真的有多么幸运,一个爱你的人究竟能有多爱你。

所以什么才是对你真的用心的那种好,我想绝对不是那种看心情对你呼之即来挥之即去的爱。五点多的时候因为妈妈的关心,我大声说话时她有多么伤心,我说完她就没说话了,坐在那发呆,弟弟告诉她:“妈妈别担心,哥哥那么优秀怎么会找不到工作”,电话的尾声她还是不住的提醒爸爸关心我明天怎么坐车,有没有买药。电话意外挂断的时候,第一时间去打我的电话。从未觉得我的人生如此的幸运 :)

另外一个就是从阿里离职,办完离职手续的那一刻其实心里空空的,我不确信我这辈子是否还有机会踏入阿里的大门,我也不清楚明天的路会是怎样的,只是我明白了我不会去选择那条别人眼中的完美的充满鲜花和掌声的路,我想我选择的会是那条能让自己开心,有色彩的路。

是啊,我可以无趣,但不可以不开心。

二叉搜索树

一、操作:

  1. 判断元素是否存在:递归的在左右子树中查找
  2. 查找最小元素:在左子树中递归或者循环
  3. 查找最大元素:在右子树中递归或循环
  4. 插入:递归的插入,大于则插入在节点的右子树,小于则左子树,等于则是重复节点不作处理
  5. 删除:递归删除( 或者说递归查找需要删除的元素 ),找到该元素后,如果元素有两个子节点那么久找到这个元素的右子树的最小元素代替要删除的元素,然后再删除那个右子树上的最小元素。如果只有一个子节点直接让要被删除的节点赋值上他的子节点。

    Read More

八大排序算法

​ 八大排序算法是面试经常考到的,尤其是快排,希尔排序和归并也是经常会让写代码的题目,其实只要用一句话说明了他们的原理我们写起代码就没那么困难。

冒泡排序

思想:有 n 个数我们就进行 n-1 趟排序,每一趟我们都选取最大的一个数放到已经排序的位置即可。

伪代码:两个 For 循环,外层表示要进行的趟数,内层则是找出最大的数,找最大的数的方法就是比较、交换。

Read More