问题描述今天排查线上偶现的问题,查日志是并发修改集合的异常: 问题代码: Map<String, Object> context = ContextUtil.getAll();req.getLines().parallelStream().forEach(lineNo -> ...
数据持久层框架调研(jpa vs mybatis)
背景1.Mybatis generator为mybatis生成了大量并没有实际使用的代码,实际发现只有 selectByExample,insertSelective 两个方法使用较多,而且为每个实体类生成一个 Example 类。 Example 这个类是大量相似的代码,完全可以抽象统一起来 2. ...
对java8 StreamApi的扩展
java8的流(Stream API)已经提供了很强大的api接口了,满足日常开发的绝大部分需要,但是还是有些欠缺比如 java9才增加的两个api takeWhile dropWhile takeWhile() 方法使用一个断言作为参数,返回给定 Stream 的子集直到断言语句第一次返回 fa ...
java8 Stream流水线实现分析
java8的Stream流水线,用起来很爽,但是他是怎么做到的呢。 Stream流水线记录用户的每一步操作步骤(map,filter等),当用户调用结束操作(Collect,reduce 等)时将用户之前记录的操作一并执行。这里就有几个问题要解决了 如何记录用户操作 如何将用户操作串联起来 如何触 ...
Spring boot 整合PowerMock
依赖<dependency><groupId>org.powermock</groupId><artifactId>powermock-module-junit4</artifactId><version>2.0.0-beta5 ...
mysql并发replace into 死锁问题
问题描述表A有(id,b,c)3个字段,id为自增主键,b字段上有唯一索引。多线程并发replace into 这个表会发生死锁抛出异常 om.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found ...
深入理解ThreadLocal
简介ThreadLocal 是一创建线程局部变量的类,就是说这个类创建的变量值能被当前线程访问,其他线程无法访问和修改。 特点Global:在当前线程中,任何位置能获取到ThreadLocal的值 Local:该线程的ThreadLocal只能被该线程访问,一般情况下其他线程访问不到(使用Inher ...
java中枚举的定义及使用
枚举的定义当类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类; 定义: public enum ElementType { NODE, EDGE} 这是java中的语法糖实际上会被编译成这样: public cla ...
异步编排CompletebleFuture
特点在传统future上,只能异步调用get方法,获取计算结果,能做的事情十分有限,比如想要异步执行完任务之后再去执行另一个任务。传统future做这个事情就显得力不从心了。这就是CompletebleFuture解决的问题。CompletebleFuture提供了丰富的接口用来添加异步任务的回调函 ...