- 博客(14)
- 收藏
- 关注
原创 Java 集合——ConcurrentHashMap
ConcurrentHashMap 是一个 HasnMap 的并发容器版本,他实现了并发插入、并发扩容以及无阻塞读写。插入操作它通过使用 CAS 操作和分段锁机制来实现并发插入。当插入元素个数超过负载因子,则会进行扩容,并且通过实现并发扩容来减少扩容的占用的时间。读操作是无阻塞的,不需要进行加锁,它与 HashMap 的实现原理类似,它仅仅利用 volatile 变量来保证内存可见性,它属于弱一致类型。
2017-05-12 19:09:54
512
原创 volatile 关键字详解
volatile 关键字详解介绍 今天我们的主题是 volatile 关键字,与 synchronized 关键字一样,它也可用于同步,但它较轻量级,下面将会给大家讲解它的具体原理。这篇文章是在假定大家熟悉 Java 内存模型的设计的基础上来写的,若对 JMM 不熟悉,可以查看我写的这篇文章 Java 内存模型volatile 关键字 volatile 关键字与 synchronized 关键字
2017-05-09 23:27:23
1142
原创 Java 内存模型
Java 内存模型是围绕着在并发过程中如何处理数据在主内存和工作内存之间的传递过程的原子性、可见性和有序性来建立的,要想编写正确的多线程程序,就必须对 JMM 的内部规则了解透彻。 他定义了 8 种基本操作来操作数据,每一个操作都是原子性,通过基本操作的组合来完成对数据的访问。另外可以使用 happen-before 规则分析线程的行为并且做出正确的同步操作来保证程序的正确性,从而编写出正确的多线程程序。
2017-05-08 19:30:58
394
原创 Java 集合——HashMap
HashMap 是一个采用数组+链表+红黑树实现的 map 集合,hash 表采用数组存储,当出现冲突时,则采用拉链法解决冲突;在 Java 8 中加入了红黑树的优化,这是当链表过长时,为了减少查找次数添加的优化。另外本文还对HashMap、HashTable 与 ConcurrentHashMap 做出对比,分析他们实现原理上的不同。
2017-05-02 20:13:41
418
原创 Java 集合—— LinkedList
Java 集合—— LinkedList介绍 从名字上可以看出,它与 ArrayList 一样,都是 List 的具体实现子类,但它是基于链表的,链表这种数据结构相信只要学过编程或者计算机的,都应该熟悉这种数据结构,那么接下来,我将从 LinkedList 源码的角度来解读 LinkedList 对象是如何实现的。LinkedList 定义 以下为 LinkedList 的部分定义,它保存了链表
2017-04-28 16:45:14
377
原创 String 详解
本文给大家介绍了 String 创建对象的方式,通过例子分别介绍这些方式的区别;另外还介绍了在不同版本下的常量池的实现机制,博文可能会存在错误的地方,望指出,一起交流交流。
2017-04-28 12:58:19
1305
原创 static 关键字
对于 static 关键字,它可用于定义成员、方法、代码块和内部类,静态成员和静态方法都依赖于类,不依赖与具体的对象实例,并且对静态成员的修改是全局影响的,另外静态方法采用静态绑定,它不可被重写。 定义静态代码块,它在在类被加载的时候会被调用,并且只调用一次,常用于初始化一些与类相关的参数信息。静态内部类不需要依赖于外部类对象的存在,并且它可用于实现单例模式,提供一种较优的方式。
2017-04-20 10:23:42
479
原创 TCP 与 UDP 的区别及应用场景
TCP 与 UDP 的区别及应用场景概述 两者都是通信协议, TCP、UDP 是传输层协议,但他们的通信机制与应用场景不同,下面来阐述两者的区别以及它们的应用场景。
2017-04-18 10:41:25
31310
原创 Java 的 equals 和 ==
Java 的 equals 方法和 == 运算符都是比较两个变量是否相等,下面通过例子来说明他们的比较原理,并且从 String 和包装类型的特点来分析它们是如何工作的。
2017-03-27 23:21:12
335
原创 TCP 的三次握手和四次挥手
学习 TCP 协议,首先第一个要了解当然是 TCP 连接是如何建立的,下面给大家介绍一下三次握手和四次挥手的过程以及为什么要这样设计。
2017-03-04 10:31:35
2464
1
原创 Java集合 —— Vector
Java集合 —— Vector介绍 Vector 是一个古老的容器,它与 ArrayList 一样,都是 list 的动态数组实现,底层的数据结构是一个数组,对其进行操作则转化为对数组进行操作。另外,在数据长度不够时,还可指定要扩容多少,若没指定,则默认扩容为原来的 2 倍。功能实现 Vector 继承于 AbstractList,其与 ArrayList 一样都拥有对集合进行增删查改的操作,
2017-03-03 16:55:03
400
原创 Java 集合——ArrayList
Java 集合 —— ArrayList介绍 ArrayList 是 List 的动态数组实现,它的底层结构是一个数组,它与一般的数组的区别,则是它可以动态扩容,当 list 中添加的元素个数大于数组的容量,则会触发扩容,扩容之后的新数组为原数组的 1.5 倍,同时也会将旧元素复制到新数组中。功能实现 ArrayList 继承于 List,对元素的增删操作就转化为对数组的操作,下面分别介绍 Ar
2017-03-02 19:24:19
299
原创 理解 HTTPS
HTTPS概念 HTTPS(Hypertext Transfer Protocol Secure),顾名思义就是在 HTTP 协议的基础上加多一层安全的机制,本质上是 HTTP + SSL/TLS。什么是安全 我们都知道 HTTP 协议是用于网络通信的,用户 A 向 用户 B 要通信,就需要通过 HTTP 协议来发送报文,然后报文经过多个路由器的
2017-02-28 13:39:55
1236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人