沒有外貿(mào)網(wǎng)站 如果做外貿(mào)專業(yè)網(wǎng)絡(luò)推廣
IDEA 中的奇技淫巧
書簽
- 在使用
ctrl+alt+方向鍵
跳轉(zhuǎn)時(shí),或者追蹤代碼時(shí),經(jīng)常遇到的情況是層級(jí)太多,找不到代碼的初始位置,入口。 - 可以通過書簽的形式去打上一個(gè)標(biāo)記,后續(xù)可以直接跳轉(zhuǎn)到書簽位置。
- 標(biāo)記書簽:
ctrl+shift+數(shù)字
標(biāo)記為書簽。- 普通書簽:
ctrl+F11
- 普通書簽:
- 跳轉(zhuǎn)書簽:
ctrl+數(shù)字
跳轉(zhuǎn)到書簽位置。 - 所有書簽:
alt+2
顯示所有書簽
- 標(biāo)記書簽:
插件
- CamelCase
- 下劃線,駝峰,大小寫快速轉(zhuǎn)換。
- Easy Javadoc
- 快捷生成類,方法的
JavaDoc
注解。
- 快捷生成類,方法的
- Easy Code
- 快捷生成實(shí)體對(duì)象,mapper對(duì)象等
GenerateAllSetter
- 快捷調(diào)用一個(gè)對(duì)象的setter或者getter方法。
- Git Commit Template
- git提交模版
- Git Config
- 管理多個(gè)git賬號(hào)。項(xiàng)目空間下使用同一個(gè)git賬號(hào)
- JRebel
- 代碼熱更插件。支持新增方法和字段
- Json Helper
- Json可視化,格式化,轉(zhuǎn)義。
- Key Promoter X
- 快捷鍵提示,統(tǒng)計(jì),快捷定義快捷鍵。
- Mybatis Log Free
- sql格式化
- Swagger Tools
- 根據(jù)javaDoc生成swagger注解。
調(diào)試
- 評(píng)估表達(dá)式
- 丟棄當(dāng)前幀
- 強(qiáng)制返回
-
即時(shí)修改調(diào)試數(shù)據(jù)(選中變量按F2)
字段斷點(diǎn)(反射無效)
- 當(dāng)讀寫字段時(shí),字段斷點(diǎn)會(huì)命中。通過反射讀寫不會(huì)命中
異常斷點(diǎn)(排除框架異常)
- 捕獲空指針異常,同時(shí)排除spring框架中的空指針異常。用于在排除代碼時(shí)不知道具體異常位置,可通過異常斷點(diǎn)定位。
條件斷點(diǎn)(源碼中執(zhí)行自定義代碼)
- 指定時(shí)間內(nèi)連接zk超時(shí),使用【條件斷點(diǎn)+評(píng)估功能】重連,避免報(bào)錯(cuò)無法啟動(dòng)。
過濾器
- 實(shí)例過濾器
- 當(dāng)前this的id等于指定id才命中
- 類過濾器
- 當(dāng)前
this.getClass()
等于指定Class 【子類不行】
- 當(dāng)前
- 合格次數(shù)
- 命中指定次數(shù)才生效
其他技巧
-
maven無法獲取遠(yuǎn)程倉庫的最新代碼
-
maven設(shè)置中勾選始終更新快照
-
-
項(xiàng)目編譯代碼慢或報(bào)錯(cuò)內(nèi)部錯(cuò)誤或者報(bào)錯(cuò)OOM。
-
修改編譯時(shí)的堆內(nèi)存大小
-
-
ctrl+[或者]
按層級(jí)跳轉(zhuǎn)代碼塊 -
在類中搜索方法
ctrl+F12
-
ctrl+alt+[或者]
在多個(gè)項(xiàng)目中快捷切換
代碼
-
list和map指定初始容量,避免擴(kuò)容。
-
list是不夠用時(shí)再去擴(kuò)容,所以初始容量設(shè)置為原始list的大小即可。即不需要額外容量。
-
一般使用HshMap,擴(kuò)容因子0.75,數(shù)據(jù)達(dá)到75%就會(huì)開始擴(kuò)容。所以map的初始容量就是【原始容器大小/ 0.75 + 1】,就能保證在不擴(kuò)容的情況下的使用最小空間,達(dá)到最高利用率。
-
例:
我有一個(gè)list有16個(gè)元素,現(xiàn)在要轉(zhuǎn)為map?!?6/0.75+1 = 22】,即初始容量設(shè)置為22就不會(huì)擴(kuò)容,且容量最小。22*0.75 = 16.5,只有當(dāng)存入第17個(gè)元素時(shí)才需要擴(kuò)容。 -
即使在指定容量時(shí),hashMap的容量和閾值也不是指定值,因?yàn)樵谠O(shè)置容量時(shí),是hashMap內(nèi)部是計(jì)算出當(dāng)前值的最小2次冪。這樣得出的容量,以及閾值。
上面得出的結(jié)論不變,HashMap的構(gòu)造函數(shù)容量公式依舊為【存儲(chǔ)元素個(gè)數(shù)/0.75+1】;依舊是在使用最小空間下,不擴(kuò)容的方案
。 -
-
如何驗(yàn)證正確性:
google
的guava
中com.google.common.collect.Maps#newHashMapWithExpectedSize
就是如此計(jì)算。
-
-
-
常用容器 【不可修改】
Collections.emptyList()
空listCollections.emptyMap()
空mapCollections.singletonList(new Object())
單值list
-
List.contains()
僅contains場景,可以轉(zhuǎn)換為set進(jìn)行contains操作。效率比list高。- list.contains內(nèi)部是遍歷,O(n)
- set.contains內(nèi)部是hashMap的contains。使用哈希表,通過equals+hashCode實(shí)現(xiàn)。時(shí)間復(fù)雜度為O(1)。以及紅黑樹…