Administrator
发布于 2023-04-17 / 9 阅读
0
0

随笔-7

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类来传输。

 


评论