java
文章平均质量分 57
弋在西元前
这个作者很懒,什么都没留下…
展开
-
Java 之 ConcurrentModificationException
ArrayList 线程不安全会造成 java.util.ConcurrentModificationException(并发争抢修改导致异常),示例private static void list() { List<String> list = new ArrayList<>(); List<String> list2 = new Vector<>(); List<String> list3 = Collection.原创 2021-11-30 18:59:54 · 2563 阅读 · 0 评论 -
Java 之 CAS compare and swap
Unsafe类+CAS思想(自旋)CAS:比较并交换compare and swap,是一条CPU并发原语。原语属于操作系统用语范畴,是不可修改、不可中断的连续指令,不会造成数据不一致问题。1.AtomicInteger.compareAndSet( int expect,int update),符合期望才允许更新2.AtomicInteger.getAndIncrementpublic final int getAndIncrement() { return unsafe.getAndAd原创 2021-11-30 18:57:46 · 490 阅读 · 0 评论 -
Java 之 volatile是什么?
1.JUC:java并发包java.util.concurrent2.volatile:java虚拟机提供的轻量级同步机制,特性:保证可见性,不保证原子性,禁止指令重排。**工作内存和主内存之间同步延迟导致的可见性问题,可以使用synchronized或volatile关键字解决,它们都可以使一个线程修改后的变量立即对其他变量可见。**对于指令重排导致的可见性和有序性问题,可以使用volatile关键字解决,因为volatile的另一个作用是禁止指令重排优化2.1.可见性:volatile修饰的变量原创 2021-11-30 18:54:47 · 630 阅读 · 0 评论 -
StringBoot @JsonIgnoreProperties生效源码追踪
问题来源com.xxxx.common.domain.bean.content.TopicBean但是实际上TopicBean中没有这么多字段。导致报错。可以通过给该bean增加注解@JsonIgnoreProperties(ignoreUnknown = true)来消除该报错信息。现在通过追踪源码来查看报错位置以及该注解生效位置。1.报错原因及报错信息原因:json中指定了参数类型为com.xxxx.common.domain.bean.content.TopicBean,故反向序列化解析时会原创 2021-11-18 18:39:32 · 885 阅读 · 0 评论 -
Spring单元测试001-如何测试私有方法
Spring单元测试私有方法@RunWith(SpringRunner.class)@SpringBootTest(classes = ServerApplication.class)public class XXXTest extends XXXServiceImpl { /** * 测试私有方法示例及说明: * 想要测试某类中的私有方法,必须通过反射。 * 反射获取私有方法有两种方式,一种是直接new对象,然后通过getClass;一种是extends要测试的原创 2021-11-11 11:09:41 · 3677 阅读 · 0 评论