个人简介

Echo Blog


江湖无名 安心练剑
  • 跳跃表(SkipList)
    什么是跳跃表 跳表由William Pugh发明。 他在论文 《Skip lists: a probabilistic alternative to balanced trees》中详细介绍了跳表的数据结构和插入删除等操作。 跳表是一种可以用来代替平衡树的数据结构,跳表使用概率平衡而不是严格执行的平衡,因此,与等效树的等效算法相比,跳表中插入和删除的算法要简单得多,并且速度要快得多。 ...
    2019-02-13 01:11:35 | Data-Struct
  • java doc 文档注释最佳实践
    为什么要写注释? 给别人看 给自己看 java 文档注释? 标签 作用域 说明 @author 类 标明开发该类模块作者 @version 类 标明该类模块的版本 @see 类, 属性, 方法 参考转向(相关主题) @param 方法 对方法中某参数的说明 @return 方法 对方法返回值的说明 @exception 方法 抛出的异常类型 @throws 方法 与@exceptio...
    2019-02-12 13:31:37 | DevOps
  • java 对象属性复制(BeanCopy)最佳实践
    常见的属性赋值工具 Frameworks that ease bean mapping. dOOv - Provides fluent API for typesafe domain model validation and mapping. It uses annotations, code generation and a type safe DSL to make bean val...
    2019-02-12 13:31:37 | Java
  • 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