Java借一步说话
文章平均质量分 71
急景凋年
这个作者很懒,什么都没留下…
展开
-
使用JMH框架进行性能基准测试
介绍我们在选择不同框架、算法时,不同场景下的性能是很重要考虑因素。JMH这个Java的微基准测试框架提供简单的方式来实现性能测试的需求。本文将以一个对比序列化器性能的例子简单介绍JMH的使用。创建项目不同于 JUnit 这种测试框架,JMH推荐创建独立的项目来做测试。使用maven创建mvn archetype:generate \-DinteractiveMode=false \-DarchetypeGroupId=org.openjdk.jmh \-DarchetypeArtifactI原创 2021-09-30 16:55:52 · 347 阅读 · 0 评论 -
数据去哪了?:从一次生产事故聊聊并发编程原子性问题
1. 引言最近公司小伙伴的服务遇到一个奇怪的丢数据问题:每天总是莫名其妙的丢几条数据,经过分析排查之后发现是没有处理好并发而导致的。问题复盘之后我认为这是并发编程中典型的原子性问题。对于并发编程不是很熟悉的小伙伴来说是一个很好的例子。2. 问题复盘整个业务的逻辑其实是比较简单:不断的接收消息,定时的把收集的消息发送到一个目标地址。2.1 关键代码talk is cheap, show me the code!我仿写了引起并发问题的类,只保留了核心逻辑,除了lombok与logback之外没原创 2021-03-24 22:34:06 · 99 阅读 · 0 评论 -
mockStatic时抛出java.lang.ExceptionInInitializerError
解决方法在测试类上增加注解@SuppressStaticInitializationFor("org.mycompany.ClassWithEvilStaticInitializer")里面填上你要mock类的包名+类名参考资料https://github.com/powermock/powermock/wiki/Suppress-Unwanted-Behaviorhttps://stackoverflow.com/questions/38679426/java-lang-excepti原创 2020-12-25 10:31:01 · 2094 阅读 · 1 评论 -
用上ConcurrentHashMap,就没有并发问题了?
主题并发问题的三个来源:原子性、可见性、有序性ConcurrentHashMap只能保证提供的原子性读写操作是线程安全的用户注册模拟并发问题我们从一个用户注册的例子来了解并发问题。在这个例子中模拟了用户注册行为,定义了相同用户名不能重复注册的规则,我们使用ConcurrentHashMap保存用户信息,通过模拟同时注册的动作体现并发问题。定义用户类class User { // 用户名,也是Map的key private String username; private int a原创 2020-10-30 13:20:51 · 2365 阅读 · 10 评论 -
Spring + MyBatis构建REST简单查询语言
本系列文章起源于我在实际项目中遇到的问题,思路来源于网上的博客,可视为对该系列博客的思想继承。如有兴趣可访问原博客。1. 什么是REST查询语言如今REST接口大行其道,我们所构建的http接口也都是REST。看过RESTful接口介绍的,会觉得这种接口十分简单,语义也比较清楚。然而在实际的工作中,会发现网上的介绍类文章说的还是太浅了,我们所遇到的需求,要比教科书上复杂的多。查询是...原创 2019-12-04 20:37:08 · 289 阅读 · 0 评论