票务系统网站模板教育网络系统管理
IDEA 中的奇技淫巧
书签
- 在使用
ctrl+alt+方向键跳转时,或者追踪代码时,经常遇到的情况是层级太多,找不到代码的初始位置,入口。 - 可以通过书签的形式去打上一个标记,后续可以直接跳转到书签位置。 
- 标记书签:
ctrl+shift+数字标记为书签。- 普通书签: 
ctrl+F11 
 - 普通书签: 
 - 跳转书签:
ctrl+数字跳转到书签位置。 - 所有书签:
alt+2显示所有书签 
 - 标记书签:
 

插件
- CamelCase 
- 下划线,驼峰,大小写快速转换。
 
 - Easy Javadoc 
- 快捷生成类,方法的
JavaDoc注解。 
 - 快捷生成类,方法的
 - Easy Code 
- 快捷生成实体对象,mapper对象等
 
 GenerateAllSetter- 快捷调用一个对象的setter或者getter方法。
 
- Git Commit Template 
- git提交模版
 
 - Git Config 
- 管理多个git账号。项目空间下使用同一个git账号
 
 - JRebel 
- 代码热更插件。支持新增方法和字段
 
 - Json Helper 
- Json可视化,格式化,转义。
 
 - Key Promoter X 
- 快捷键提示,统计,快捷定义快捷键。
 
 - Mybatis Log Free 
- sql格式化
 
 - Swagger Tools 
- 根据javaDoc生成swagger注解。
 
 
调试
- 评估表达式
 - 丢弃当前帧
 - 强制返回
 

-  
即时修改调试数据(选中变量按F2)

 
字段断点(反射无效)
- 当读写字段时,字段断点会命中。通过反射读写不会命中
 

异常断点(排除框架异常)
- 捕获空指针异常,同时排除spring框架中的空指针异常。用于在排除代码时不知道具体异常位置,可通过异常断点定位。
 

条件断点(源码中执行自定义代码)
- 指定时间内连接zk超时,使用【条件断点+评估功能】重连,避免报错无法启动。
 

过滤器
- 实例过滤器 
- 当前this的id等于指定id才命中
 
 - 类过滤器 
- 当前
this.getClass()等于指定Class 【子类不行】 
 - 当前
 - 合格次数 
- 命中指定次数才生效
 
 

其他技巧
-  
maven无法获取远程仓库的最新代码
-  
maven设置中勾选始终更新快照

 
 -  
 -  
项目编译代码慢或报错内部错误或者报错OOM。
-  
修改编译时的堆内存大小

 
 -  
 -  
ctrl+[或者]按层级跳转代码块 -  
在类中搜索方法
ctrl+F12 -  
ctrl+alt+[或者]在多个项目中快捷切换 
代码
-  
list和map指定初始容量,避免扩容。
-  
list是不够用时再去扩容,所以初始容量设置为原始list的大小即可。即不需要额外容量。
 -  
一般使用HshMap,扩容因子0.75,数据达到75%就会开始扩容。所以map的初始容量就是【原始容器大小/ 0.75 + 1】,就能保证在不扩容的情况下的使用最小空间,达到最高利用率。
-  
例:
我有一个list有16个元素,现在要转为map。【16/0.75+1 = 22】,即初始容量设置为22就不会扩容,且容量最小。22*0.75 = 16.5,只有当存入第17个元素时才需要扩容。 -  
即使在指定容量时,hashMap的容量和阈值也不是指定值,因为在设置容量时,是hashMap内部是计算出当前值的最小2次幂。这样得出的容量,以及阈值。
上面得出的结论不变,HashMap的构造函数容量公式依旧为【存储元素个数/0.75+1】;依旧是在使用最小空间下,不扩容的方案。 -  

 -  
如何验证正确性:
google的guava中com.google.common.collect.Maps#newHashMapWithExpectedSize就是如此计算。
 
 -  
 
 -  
 -  
常用容器 【不可修改】
Collections.emptyList()空listCollections.emptyMap()空mapCollections.singletonList(new Object())单值list
 -  
List.contains()仅contains场景,可以转换为set进行contains操作。效率比list高。- list.contains内部是遍历,O(n)
 - set.contains内部是hashMap的contains。使用哈希表,通过equals+hashCode实现。时间复杂度为O(1)。以及红黑树…
 
 
