自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

whgtheone的博客

简书地址:https://www.jianshu.com/u/f32e25c913ab

原创 谈谈数组

一、数组是如何实现O(1)级别的下标随机访问 我们平时经常说数组适合用于查找,不适合增删,是因为数组查找的时间复杂度低,为O(1)。其实这句话的表述不对,数组查找一个数的时间复杂度最多是O(logn),而所谓的时间复杂度为O(1)实际上指的是根据数组下标对数组进行的随机访问。那么,数组是如何实现对...

2018-11-23 17:17:44

阅读数 29

评论数 0

原创 手撸Java注解的注入实现过程

在Spring中使用注解,极大的减少了配置各种xml文件的反复操作,一个小小的注解就能够有如此强大的功能不经让人感慨。那注解是依靠那种机制将数据注入到我们的类中的呢?答案是反射机制。本文将自定义一个注解类,不依靠Spring,借助java的原生方法,手撸一个注解注入的实现过程。 自定义一个注解类 ...

2018-10-27 15:44:40

阅读数 221

评论数 0

原创 Cglib的Enhancer类动态创建代理对象的的过程

使用Enhance字节码增强创建动态代理对象的一般步骤为: Enhancre enhancer = new Enhancer(); enhancer.setSuperclass(目标对象的类对象); enhancer.setCallback(new MethodInterceptor(){ ...

2018-10-24 15:49:22

阅读数 1725

评论数 0

原创 解析——为什么单元素的枚举类型是单例模式的最佳实现

关于单例模式,我们可以使用静态内部类、双重检测的实现方法来保证线程安全,那么该如何保证单例模式最核心的作用——“实现该模式的类有且只有一个实例对象”呢? 我们知道,创建一个对象的方式有:new、克隆、序列化、反射。 由于单例模式提供的是一个私有的构造函数,所以不能外部使用new的方式创建对...

2018-10-10 11:46:34

阅读数 766

评论数 0

原创 细聊网络层协议之ARP、RARP协议

一、两台主机之间的通信解读ARP 首先我们必须明白一点的是,IP地址只在网络及其以上的层有用,在链路层及以下的层是没有用的。TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目的MAC(物理地址)。在实际网络的链路上传送数据帧时,最终还必须是硬件地址。说到...

2018-07-18 16:19:50

阅读数 94

评论数 0

原创 TCP的快速重传机制

一、快速重传机制 上一篇讲到了TCP 的超时重传,但是超时重传往往会带来许多微妙的问题,比如说: 当一个报文段丢失时,会等待一定的超时周期然后才重传分组,增加了端到端的时延。 当一个报文段丢失时,在其等待超时的过程中,可能会出现这种情况:其后的报文段已经被接收端接收但却迟迟得不到确认,发送端...

2018-07-10 14:51:37

阅读数 11048

评论数 6

原创 TCP的超时重传之深入了解RTT与RTO

TCP提供一种面向连接的、可靠的字节流服务,其中可靠的保证方法之一就是却让从另一端收到的数据。但是数据和确认信号都有可能丢失,。TCP通过在发送数据时设置一个重传定时器(注意这里的超时定时器和第四节讲的定时器不一样)来监控数据的丢失状态,如果重传定时器溢出时还没收到确认信号,则重传该数据。这就是建...

2018-07-09 17:09:24

阅读数 14547

评论数 2

原创 解读Java参数传递

Java语言的传递方式只有“按值传递”!“按值传递”! “按值传递”!重要的事情要说三遍。 不过呢,按值传递可能还不够确切,“按副本传递”会更好理解。 实验一、 public class test { public static void main(String args[]){...

2018-07-05 14:28:28

阅读数 56

评论数 0

原创 从TCP的“三次握手”和“四次分手”讲起

说起TCP中最常见最重要的问题当然就是“三次握手”、“四次分手”了。在此之前,我们先来预热一下TCP的基本知识。 TCP报文段结构 Source Port、Destination Port:即源端口号和目的端口号,被用于多路复用/多路分解来自或送到上层应用的数据。 Sequence ...

2018-07-04 21:34:24

阅读数 101

评论数 0

原创 深度剖析HashMap(二)——基于JDK7

上一篇说到的仅仅是JDK7在极端情况下读减少碰撞概率的一些优化,以及hash函数采用的“扰动函数”思想。本篇将分析HashMap的主要方法,同时也是核心方法,是学习HashMap必然要理解的部分。话不多少,Let’s do it! 一、插入元素 简述以下HashMap插入元素的大致的过程:...

2018-05-04 20:36:41

阅读数 60

评论数 0

原创 形象描述Java中equals与==的区别

开篇故事 ——一分钟读懂equals与==的区别 有一对双胞胎长得一模一样,就算大家来找茬也找不出外形的区别。哥哥暂且叫GG,弟弟叫DD。 “GG和DD长得真像啊,就像一个模子刻出来的,所以GG和DD长得一样。” 用JAVA的语句描述是:return GG.equals(DD);结果是tru...

2018-05-03 16:34:53

阅读数 56

评论数 0

原创 深度剖析HashMap(一)——基于JDK7

HashMap是每个Java/Android程序员必须掌握的一种容器。在这个专题下将分若干篇文章对其进行深度剖析。由于JDK版本的不同,HashMap的底层实现也有些许差别。本文先对基于JDK7的HashMap进行分析,之后会奉上JDK8中对HashMap实现改动的分析。 一、HashMap结构...

2018-05-02 21:50:52

阅读数 77

评论数 0

原创 List接口下的集合源码分析——LinkedList

源码版本JDK1.8 今天带来的是List的另一种实现——LinkedList,这是一种基于双向链表实现的列表。接下来让我们通过源码来分析一下它吧。 关于源码中的一些小改动 在JDK1.6及之前,LinkedList底层是一个双向循环链表,容器中的元素都是静态内部类Entry的对...

2018-05-02 09:33:23

阅读数 42

评论数 0

原创 List接口下的集合源码分析——ArrayList

从本篇开始将对实现List接口的集合——ArrayList、LinkedList、Vector做一个源码分析。那么先从ArrayList开始吧。 一、ArrayList概述 在源码中对ArrayList是这么描述的: Arraylist是实现List接口的可调整大小的数组,拥...

2018-04-27 16:29:40

阅读数 51

评论数 0

原创 关于Java集合中的迭代

一、接口Iterable和接口Iterator的区分及联系 【英文释义】 Iterable:可迭代的,形容词。 Iterator:迭代器,名词。 Iterable JDK源码: public interface Iterable<T> { It...

2018-04-26 22:37:37

阅读数 798

评论数 0

提示
确定要删除当前文章?
取消 删除