Java进阶:ArrayList线程安全问题详解
摘要:概述 ArrayList 是线程不安全的集合类,当多线程环境下,并发对同一个ArrayList执行add,可能会抛出java.util.ConcurrentModificationException的异常 例子 这边有个简单的程序,创建30个线程,分别对ArrayList执行add操作 public
阅读全文
posted @
2020-09-17 22:41
风停了,雨来了
阅读(2554)
推荐(1)
Java进阶:CAS原理详解
摘要:概述 CAS是Compare And Swap的简称,即:比较并交换Java中常见的是Atomic相关类使用了CAS,例如:AtomicInteger、AtomicBoolean等等实现CAS的底层用的是Unsafe操作类 先看个小例子 public static void main(String[
阅读全文
posted @
2020-09-17 16:48
风停了,雨来了
阅读(544)
推荐(0)
Java类AtomicReference详解
摘要:前言 Atomic家族主要是保证多线程环境下的原子性,相比synchronized而言更加轻量级。比较常用的是AtomicInteger,作用是对Integer类型操作的封装,而AtomicReference作用是对普通对象的封装。 对AtomicInteger原子性不了解的,可以看这篇:volat
阅读全文
posted @
2020-09-17 10:52
风停了,雨来了
阅读(26665)
推荐(4)
Java注解之@CallerSensitive
摘要:前言 有一天在看Unsafe.getUnsafe()源码时,发现该方法上有一个@CallerSensitive注解。类似的,在Class.forName方法也有该注解。它们的源码分别如下: @CallerSensitive public static Unsafe getUnsafe() { Cla
阅读全文
posted @
2020-09-17 09:56
风停了,雨来了
阅读(4751)
推荐(3)
Java进阶:volatile使用详解
摘要:概述 volatile是Java提供的轻量级的同步机制,保证了可见性,不保证原子性。 了解volatile工作机制,首先要对Java内存模型(JMM)有初步的认识: 每个线程创建时,JVM会为其创建一份私有的工作内存(栈空间),不同线程的工作内存之间不能直接互相访问JMM规定所有的变量都存在主内存,
阅读全文
posted @
2020-09-16 17:56
风停了,雨来了
阅读(2815)
推荐(0)
Java根据enum某个属性值获取枚举项
摘要:现有如下枚举,假设需要找出status=3的枚举项 public enum StatusEnum { DRAFT(1, "草稿"), CHECKING(2, "审核中"), REFUSE(3, "退回"), FINISH(4, "结束"); private Integer status; priva
阅读全文
posted @
2020-09-11 18:07
风停了,雨来了
阅读(7518)
推荐(0)
Java使用stream将List转为Map
摘要:需求 从List对象列表提取2个字段,分别作为Map的key-value 实现 public static void main( String[] args ) { ArrayList<Person> list = new ArrayList<>(); list.add(new Person(1,"
阅读全文
posted @
2020-09-11 14:13
风停了,雨来了
阅读(2016)
推荐(0)
Java常用数据类型之间转换
摘要:String和Integer Integer 转 String //使用toString(),必须保证Integer对象不是null,否则会抛出NullPointerException异常 Integer i = 1; String s = i.toString(); //使用Integer.toS
阅读全文
posted @
2020-09-11 11:19
风停了,雨来了
阅读(232)
推荐(0)
Java运行报错NoClassDefFoundError: com/fasterxml/jackson/databind/JsonNode的解决方案
摘要:引入如下依赖即可: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency>
阅读全文
posted @
2020-09-02 17:27
风停了,雨来了
阅读(4007)
推荐(0)
Spring AOP讲解(Pointcut、Before、Around、AfterReturning、After)
摘要:AOP依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> @Pointcut 定义切入点,有以下2种方式:
阅读全文
posted @
2020-08-24 16:27
风停了,雨来了
阅读(7810)
推荐(1)
Java8使用stream对List列表分组
摘要:定义实体类 public class Person { public Integer id; public String name; public Integer age; public Person(){} public Person(Integer id, Integer age, String
阅读全文
posted @
2020-08-18 15:07
风停了,雨来了
阅读(13498)
推荐(0)