-
java 对象属性复制(BeanCopy)-02-MapStruct 拷贝工具库
mapstruct
MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题。
区别于BeanUtils这种通过反射,它通过编译器编译生成常规方法,将可以很大程度上提升效率。
官方文档
为什么会引入 MapStruct 这类工具
JavaBean 问题引入
在开发的时候经常会有业务代码之间有很...
2019-02-12 13:31:37 |
Java
-
HTTP 传输 + 号不见了
问题场景
今天排查问题,遇到一个BUG
页面前端传值:
Hello+ World
传到后台变成了
Hello World
一开始没有怀疑这个问题,那到底是为什么呢?
URL 的转移
URL 会对 + 进行转义。
解决方案
修改客户端
将客户端带“+”的参数中的“+”全部替换为“2B%”,这样参数传到服务器端时就能得到“+”了。
加密+解密配合
strURL =...
2019-01-30 07:01:09 |
Web
-
Facade 设计最佳实践
Facade
facade 应该怎么设计?
最近暴露给外部使用,由于是历史遗留项目,问题很严重。
facade 引入了很多引用。
纯净性
最好的 facade 应该只有 POJO 和 Interface,不包含任何的三方 jar.
内部系统
如果公司内部有比较成熟的架构,可以统一使用公共的 jar。
保证不能有任何的 jar 冲突,不能有任何的冗余 jar。
版本
...
2019-01-30 07:01:09 |
Design
-
单元测试最佳实践
问题
什么是单元测试?为什么需要?
如何建立好的代码测试?
概览
单元测试
参数化测试
性能测试
断言
MocK
测试覆盖率
MQ 测试, redis 测试,数据库测试, dubbo 测试。
A/B Test
SOAP UI
Code Review
CI
单元测试
概念
开源框架
参数化测试
断言
Mock
测试覆盖率
如何建立好的测试
代码...
2019-01-23 05:44:33 |
Test
-
java 多线程测试工具-GroboUtils
GroboUtils
GroboUtils 旨在扩展Java的测试可能性。
它包含许多子项目,它们通过Java实验测试的不同方面。
GroboUtils中包含的流行工具包括多线程测试,分层单元测试和代码覆盖工具。
此工具集在MIT许可下发布。
快速开始
Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的。
JVM都...
2019-01-23 05:44:33 |
Test
-
Mybatis 拦截器 mybatis interceptor
分页插件
比如分页插件:pagehelper
可以大幅度提升我们的开发效率。
需求
数据库中敏感字段的对称加密,或者诸如密码之类的非对称加密。
其实都可以不是在一次次的代码查询和更新中手动实现,可以通过自定义注解来实现。
设计思路
利用注解标明需要加密解密的entity类对象以及其中的数据
mybatis拦截Executor.class对象中...
2019-01-23 00:49:44 |
Mybatis
-
JUC-06-LockSupport
LockSupport
在Java多线程中,当需要阻塞或者唤醒一个线程时,都会使用LockSupport工具类来完成相应的工作。
LockSupport定义了一组公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能,而LockSupport也因此成为了构建同步组件的基础工具。
方法
LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Thread...
2019-01-20 06:10:12 |
Concurrency
-
JUC-05-Unsafe
Unsafe类详解
Unsafe类就和它的名字一样,是一个比较危险的类,它主要用于执行低级别、不安全的方法。
尽管这个类和所有的方法都是公开的(public),但是这个类的使用仍然受限,你无法在自己的java程序中直接使用该类,因为只有授信的代码才能获得该类的实例。
方法分类
Unsafe API的大部分方法都是native实现,它由105个方法组成,主要包括以下几类:
(1)In...
2019-01-20 06:10:12 |
Concurrency