04 2019 档案
摘要:概述 我们要实现一个线程安全的队列有两种实现方法一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,我们就来研究下ConcurrentLinkedQueue
阅读全文
摘要:概述 CopyOnWriteArrayList是一个线程安全集合,原理简单说就是:在保证线程安全的前提下,牺牲掉写操作的效率来保证读操作的高效。所谓CopyOnWrite就是通过复制的方式来完成对数据的修改,在进行修改的时候,复制一个新数组,在新数组上面进行修改操作,这样就保证了不改变老数组,也就没
阅读全文
摘要:概述 是一个关联数组、哈希表,它是 线程不安全 的,允许 key为null,value为null 。他继承自 ,实现了 接口。其内部还维护了一个 双向链表 ,在每次 插入数据,或者访问、修改数据 时, 会增加节点、或调整链表的节点顺序 。以决定迭代时输出的顺序。 默认情况,遍历时的顺序是按照插入节点
阅读全文
摘要:简介 与`StringBuilder StringBuilder StringBuffer`是线程安全的。前者是JDK1.5加入的,后者在JDK1.0就有了。 继承关系 可以看到,两个类的继承关系是一模一样的。 是可以序列化的标志。 接口包含了 、`length() subSequence() to
阅读全文
摘要:访问权限 Java中有三个访问权限修饰符:private、protected以及public,如果不加访问修饰符,表示包级可见。 可以对类或类中的成员(字段以及方法)加上访问修饰符。 类可见表示其他类可以用这个类创建实例对象。 成员可见表示其他类可以用这个类的实例对象访问到该对象; protecte
阅读全文
摘要:概览 String被声明为final,因此它不可被继承。 内部使用char数组存储数据,该数组被声明为final,这意味着value数组初始化之后就不能再引用其他数组。并且String内部没有改变value数组的方法,因此可以保证String不可变。 不可变的好处 1. 可以缓存hash值 2. S
阅读全文
摘要:String String表示字符串,Java中所有字符串的字面值都是String类的实例,例如"ABC"。字符串是常量,在定义后不能被改变,字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可以共享他们。例如: String str = "abc"; 相当于 char data[]
阅读全文
摘要:注解 概念及作用 1. 概念 注解即元数据,就是源代码的元数据 注解在代码中添加信息提供了一种形式化的方法,可以在后续中更方便的 使用这些数据 Annotation是一种应用于类、方法、参数、变量、构造器及包声明中的特殊修饰符。它是一种由JSR 175标准选择用来描述元数据的一种工具。 2. 作用
阅读全文
摘要:包装类型 八个基本类型: Boolean/boolean/1 Byte/byte/8 Character/char/16 Short/short/16 Integer/int/32 Float/float/32 Long/long/64 Double/double/64 基本类型都有对应的包装类型,
阅读全文
摘要:反射是什么 反射的作用用一句简单的话来讲就是可以对代码进行操作的代码,这个特性经常在被用于创建JavaBean中,通常造轮子的人会用到这个特性,而应用程序员用到这个特性的场景则较少。 能够分析类能力的程序就叫做反射,简单来说就是可以对代码进行操作的代码。反射机制的功能极为强大,可以用来: 在运行时分
阅读全文
摘要:前驱知识 WebSocket 维基百科: WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数
阅读全文

浙公网安备 33010602011771号