IDEA插件推荐
-
FindBugs-IDEA 检测代码中可能的bug及不规范的位置,写完代码后检测下 避免低级bug。
-
Maven Helper 一键查看maven依赖,查看冲突的依赖,一键进行exclude依赖
-
VisualVM Launcher 运行java程序的时候启动visualvm,方便查看jvm的情况,比如堆内存大小的分配、某个对象占用了多大的内存,jvm调优必备工具
-
GenerateAllSetter 一键调用一个对象的所有set方法并且赋予默认值 在对象字段多的时候非常方便
-
Rainbow Brackets 彩虹颜色的括号 看着很舒服 敲代码效率变高。清除分清括号个数,防止括号错乱
-
Translation 最好用的翻译插件,功能很强大,界面很漂亮
-
P3c 阿里巴巴出品的java代码规范插件,可以扫描整个项目找到不规范的地方 并且大部分可以自动修复 。虽说检测功能没有findbugs强大,但是可以自动修复,阿里巴巴Java编码指南插件支持。
-
Cloud Toolkit
分布式ID方案
- UUID 生成方便,不过无序性对MySQL索引不利,而且过长不易存储
- 数据库生成——设置不同的起始值和自增值,强依赖DB
- redis实现——Redis实现分布式唯一ID主要是通过提供像 INCR 和 INCRBY 这样的自增原子命令,由于Redis自身的单线程的特点所以能保证生成的 ID 肯定是唯一有序的。可以配合集群、lua等技术实现并发和业务多线程安全
- 雪花算法-Snowflake——由Twitter开源的分布式ID生成算法,强依赖机器时钟
- 百度-UidGenerator
- 美团Leaf
单线程redis为什么这么快
- 纯内存访问,读取数据不需要io
- 单线程避免了线程切换及加锁释放锁的性能消耗,不过单线程很怕命令长时间执行导致阻塞
- 非阻塞多路io复用机制。Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll的read、write、close等都转换成事件,不在网络I/O上浪费过多的时间。实现对多个FD读写的监控,提高性能。
领域模型规约
-
DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
-
DTO(Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
-
BO(Business Object):业务对象。由Service层输出的封装业务逻辑的对象。
-
AO(Application Object):应用对象。在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
-
VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
-
Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用Map类来传输。