IDEA 中的奇技淫巧

慈云数据 7个月前 (05-09) 技术支持 43 0

IDEA 中的奇技淫巧

书签

  • 在使用ctrl+alt+方向键跳转时,或者追踪代码时,经常遇到的情况是层级太多,找不到代码的初始位置,入口。
  • 可以通过书签的形式去打上一个标记,后续可以直接跳转到书签位置。
    • 标记书签:ctrl+shift+数字标记为书签。
      • 普通书签: ctrl+F11
      • 跳转书签:ctrl+数字 跳转到书签位置。
      • 所有书签:alt+2 显示所有书签

        image-20240428195520636

        插件

        • 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注解。

                                调试

                                • 评估表达式
                                • 丢弃当前帧
                                • 强制返回

                                  image-20240428224226665

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

                                    image-20240428224942670

                                    字段断点(反射无效)

                                    • 当读写字段时,字段断点会命中。通过反射读写不会命中

                                      image-20240428225735807

                                      异常断点(排除框架异常)

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

                                        image-20240428222204552

                                        条件断点(源码中执行自定义代码)

                                        • 指定时间内连接zk超时,使用【条件断点+评估功能】重连,避免报错无法启动。

                                          image-20240428223529627

                                          过滤器

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

                                                  image-20240428220308254

                                                  其他技巧

                                                  1. maven无法获取远程仓库的最新代码

                                                    • maven设置中勾选始终更新快照

                                                      image-20240428230228010

                                                    • 项目编译代码慢或报错内部错误或者报错OOM。

                                                      • 修改编译时的堆内存大小

                                                        image-20240428230412096

                                                      • 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就是如此计算。

                                                        image-20240428232205272

                                                      • 常用容器 【不可修改】

                                                        • Collections.emptyList() 空list
                                                        • Collections.emptyMap() 空map
                                                        • Collections.singletonList(new Object()) 单值list
                                                        • List.contains() 仅contains场景,可以转换为set进行contains操作。效率比list高。

                                                          • list.contains内部是遍历,O(n)
                                                          • set.contains内部是hashMap的contains。使用哈希表,通过equals+hashCode实现。时间复杂度为O(1)。以及红黑树…
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon