Java
Richard_Yi
热衷微服务、分布式; 关键词:重度猫瘾、健身、读书、生活
个人主页:https://ricstudio.top
展开
-
Spock in Java 慢慢爱上写单元测试
前言最近小组里面引进了Spock这个测试框架,本人在实际使用了之后,体验非常不错,本篇文章一是为了巩固输入的知识,二是为了向大家推广一下。在了解学习Spock测试框架之前,我们应该先关注单元测试本身,了解我们常见的单测痛点,这样才能更好地去了解Spock这个测试框架是什么,我们为什么要使用它,能解决我们什么痛点。现在让我们开始吧。关于单元测试我们写代码免不了要测试,测试有很多种,对于J...原创 2020-01-21 14:19:55 · 771 阅读 · 1 评论 -
Java 容器 - 一文详解HashMap
Map 类集合Java Map类集合,与Collections类集合存在很大不同。它是与Collection 类平级的一个接口。在集合框架中,通过部分视图方法这一根 微弱的线联系起来。(在之后的分享中,我们会讨论到Collections 框架的内容)Map类集合中的存储单位是K-V键值对,就是 使用一定的哈希算法形成一组比较均匀的哈希值作为Key,Value值挂在Key上。Map类 的...原创 2020-01-20 09:52:34 · 223 阅读 · 0 评论 -
JMH - Java 微基准测试工具
前言“If you cannot measure it, you cannot improve it”.在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。但是,如果熟悉JVM类加载机制的话,应该知道JVM默认的执行模式是JIT编译与解释混合执行...原创 2020-01-19 12:23:35 · 261 阅读 · 0 评论 -
Java 基础 - 并不神奇的泛型
前言前阵子给公司新人培训Java 基础相关的一些点,系统整理了一下泛型相关的知识点。特来分享一下。希望能让一些对泛型不熟悉的同学完全掌握Java 泛型的相关知识点。开始之前,先给大家来一道测试题。List<String> strList = new ArrayList<String>();List<Integer> integerList = new A...原创 2020-01-19 12:20:56 · 114 阅读 · 0 评论 -
Java 容器 - 集合世界的fail-fast机制 和 CopyOnWriteArrayList 源码详解
前言知识点概览:容器中的设计模式从Arrays.asList() 看集合与数组的关系集合世界中的 fail-fast 机制什么是 fail-fast 机制ArrayList.sublist() 有什么坑?foreach 循环里为什么不能进行元素的 remove/add 操作?集合世界中的 fail-safe 机制copy-on-write 机制Cop...原创 2020-01-19 12:14:53 · 259 阅读 · 0 评论 -
Java 容器 - 详细剖析 List 之 ArrayList, Vector, LinkedList
前言知识点概览:ArrayList 与 LinkedList对比ArrayList 中的 RandomAccess 接口 是什么?LinkedList 中的 Deque 接口 是什么?老调常谈 之 ArrayList 扩容机制ArrayList 与 Vector 对比ArrayList 与 LinkedList对比底层数据结构:ArrayList 底层使用的Obj...原创 2020-01-19 12:13:43 · 166 阅读 · 0 评论 -
Java 多线程 - CAS
前言记录在学习线程安全知识点中,关于CAS的有关知识点。线程安全是指:多个线程不管以何种方式访问某个类,并且在主调代码中不需要进行同步,都能表现正确的行为。常见的线程安全实现方法分为不可变对象、线程互斥同步、非阻塞同步、线程本地存储等方案,本文要讲的就是非阻塞同步中的核心CAS.非阻塞同步从处理问题的方式上说,互斥同步属于一种悲观的并发策略。随着硬件指令集的发展,我们可以采用**基于冲...原创 2020-01-19 12:11:57 · 121 阅读 · 0 评论 -
Java 多线程 - 锁优化(轻量级锁、偏向锁原理及锁的状态流转)
前言为了进一步改进高效并发,HotSpot虚拟机开发团队在JDK1.6版本上花费了大量精力实现各种锁优化。如适应性自旋、锁消除、锁粗化、轻量级锁和偏向锁等。(主要指的是synchronized的优化)。适应性自旋 (自旋锁)为了让线程等待,我们只需要让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。引入自旋锁的原因是互斥同步对性能最大的影响是阻塞的实现,管钱线程和恢复线程的操作都需要转...原创 2020-01-19 12:11:16 · 357 阅读 · 0 评论 -
Java 多线程 - Java 内存模型
前言注:这里提到的是Java内存模型,是和并发编程相关的,不是JVM内存结构(堆、方法栈这些概念),这两个不是一回事,别弄混了。Java 内存模型Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能得到一致效果的机制及规范。目的是解决由于多线程通过共享内存进行通信时,...原创 2020-01-19 12:08:42 · 138 阅读 · 0 评论