摘要: 在这里我们介绍一下最简单的链表LinkedList; 看一下add()方法: add原理就是: 1.首先获取链表最后一个节点。 2.把新节点插入到最后一个节点之后。 3.linkedList的last属性重新指向最后一个节点。 4.如果这个节点是第一个节点,之前没有节点,那么将linkedList的 阅读全文
posted @ 2016-10-11 13:02 11楼的日记 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 兴趣所致研究一下HashMap的源码,写下自己的理解,基于JDK1.8。 本文大概分析HashMap的put(),get(),resize()三个方法。 首先让我们来看看put()方法。 1.首先通过hash(key)计算key的hash值 2.由于hashMap实际存储数据的就是table数组,那 阅读全文
posted @ 2016-09-30 12:27 11楼的日记 阅读(484) 评论(0) 推荐(0) 编辑
摘要: volatile 关键字作用是,使系统中所有线程对该关键字修饰的变量共享可见,可以禁止线程的工作内存对volatile修饰的变量进行缓存。 volatile 2个使用场景: 1.可见性:Java提供了volatile关键字来保证可见性。 当一个共享变量被volatile修饰时,它会保证修改的值会立即 阅读全文
posted @ 2016-09-29 16:04 11楼的日记 阅读(754) 评论(0) 推荐(0) 编辑
摘要: 其中\d+是匹配1个或者更多个数字。 最后输出结果为:3000 附上一张正则表达式元字符语法: 阅读全文
posted @ 2016-09-27 14:58 11楼的日记 阅读(9605) 评论(1) 推荐(2) 编辑
摘要: 我解释一下(* com.evan.crm.service.*.*(..))中几个通配符的含义: |第一个 * —— 通配 任意返回值类型| |第二个 * —— 通配 包com.evan.crm.service下的任意class| |第三个 * —— 通配 包com.evan.crm.service下 阅读全文
posted @ 2016-09-27 13:34 11楼的日记 阅读(2158) 评论(0) 推荐(1) 编辑
摘要: 1.String是只读字符串,引用的字符串内容是无法改变的。 2.StringBuffer和StringBuilder的字符串对象可以直接进行修改。 3.StringBuilder没有被synchronized关键字修饰,线程不安全,效率高于StringBuffer,StringBuffer线程安全 阅读全文
posted @ 2016-09-26 09:55 11楼的日记 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 忙等待没有对运行等待线程的 CPU 进行有效的利用(而且忙等待消耗cpu过于恐怖,请慎用),除非平均等待时间非常短。否则,让等待线程进入睡眠或者非运行状态更为明智,直到它接收到它等待的信号。 Java 有一个内建的等待机制来允许线程在等待信号的时候变为非运行状态。java.lang.Object 类 阅读全文
posted @ 2016-09-24 13:11 11楼的日记 阅读(1119) 评论(0) 推荐(0) 编辑
摘要: 使用Java多线程编程时经常遇到主线程需要等待子线程执行完成以后才能继续执行,那么接下来介绍一种简单的方式使主线程等待。 java.util.concurrent.CountDownLatch 使用countDownLatch.await()方法非常简单的完成主线程的等待: CountDownLat 阅读全文
posted @ 2016-09-24 12:07 11楼的日记 阅读(34701) 评论(1) 推荐(0) 编辑