Java的泛型擦除

官方文档介绍了泛型擦除: https://docs.oracle.com/javase/tutorial/java/generics/erasure.html 翻译过来就是 用类型参数的上界或者Object(如果没有上界)替换类型参数,产生的字节码仅包含普通的类,接口和方法 如有必要,插入强制类型转换以保证类型安全 生成桥接方法以保留扩展泛型类型中的多态性 以下可以验证运行时的类型擦除和编译的强制...

阅读更多

自动生成接口响应数据方便前后端同步开发

在前后端分离的场景中,后端提供接口,待开发联调完成后才能给到数据给前端,这样降低了效率并且给前端带来不便,传统的解决方式就是手动写接口的返回,然后注册网关测试数据。这样前后端可同时开发联调,但是如果响应数据的字段比较多,手动写的方式比较耗时,最近发现一个工具可以自动生成测试数据,并且支持泛型,免去了手写的烦恼。 官网地址:https://mtedone.github.io/podam/ 工具名字叫...

阅读更多

使用CompletionService非阻塞获取并行任务执行结果

以用户个人页面举例,用户信息由若干部分元素组成,每部分元素需要单独调用一次远程接口且各部分无逻辑关联。使用传统的方式串行的调接口并且阻塞地获取执行结果,相当耗时,可使用CompletionService多线程并且非阻塞地获取并行任务执行结果。 示例代码 @Override public BaseResult...

阅读更多

屏蔽日志的敏感信息输出

在很多使用敏感信息的场景,后台容易错误的将敏感信息输出从而导致泄露,如果每个接口单独处理比较繁琐不易维护,可以使用过滤器在输出时将相关字段统一过滤掉 JsonUtils工具类 /** * https://blog.csdn.net/stubbornness1219/article/details/52947013 * ...

阅读更多

同时运行不同版本Firefox

一直用火狐插件DownThemAll!批量下载文件,不过Firefox新版本不再支持该插件安装,便用回低版本,但是又想同时体验最新版Firefox。于是考虑同时运行多版本Firefox。 查阅网络资料,可通过命令行参数让Firefox运行时使用指定不同的profile文件,从而使运行时的插件、登录用户和收藏夹等独立互不影响。 步骤: 在不同路径下安装最新版(62.0)和对应旧版本火狐(笔者安装的是...

阅读更多

try-catch影响性能吗

一直听说try-catch影响性能,但不确定在没有引发异常的情况下是否影响性能,于是用以下代码进行测试 public static void main(String[] args) { long max = 10000000000L; //100亿 long curr = System.currentTimeMillis(); for (long i = 0; i ...

阅读更多

分布式消息的常用特性

分布式消息一般用于业务异步实现,增强系统的可靠性,发生错误便于自动恢复。 常用到的特性: 异步:常用于一些无法实时的业务接口,比如支付,一般都是调用接口后业务系统监听支付系统消息获得终态 发布/订阅模式:多个消费者可以订阅一个主题,比如关键状态的改变需要通知到各个业务系统,单纯的点对点消息就无法达到效果(消息被发送到一个队列,消费者从队列里取出消息,然后队列里面的消息被移除,一个消息只能消费一次,...

阅读更多

跨域资源共享CORS

浏览器出于安全角度考虑,不允许ajax跨域获取资源,不过使用CORS可实现资源共享。 CORS分为简单请求和非简单请求,两种都会添加Origin头字段,非简单请求会在请求前产生一次OPTIONS请求进行预检查服务端的白名单配置,如果当前域不符合则不再发起正式请求。 当Origin请求头内容和Access-Control-Allow-Origin响应头的协议,域名,端口一致则允许。注意OPTIONS...

阅读更多