1景东、classpath的獲取規(guī)則
/**
* 獲取文件在classpath下的物理路徑
* @param fileName
* @return
*/
public static String getUrl(String fileName) {
if (fileName == null) throw new NullPointerException();
return ClassLoader.getSystemResource("").getPath() + fileName;
}
資源文件在系統(tǒng)資源目錄下,如resources/捆探,輸出則在target目錄下
2然爆、方法結(jié)果接收方式
- 參數(shù)接收
- 全局變量
- 返回值接收
說明:如果沒有特殊情況,一律用第三種方式:返回值接收與上下文無關(guān)黍图,只與方法當(dāng)前狀態(tài)有關(guān)曾雕,方便測試。
3助被、將過程拆分剖张,提高代碼可重用性
4、Java類加載的過程
java中類加載的全過程及內(nèi)存圖分析
類加載機(jī)制:
jvm把class文件加載到內(nèi)存揩环,并對數(shù)據(jù)進(jìn)行校驗(yàn)搔弄、解析和初始化,最終形成jvm可以直接使用的java類型的過程丰滑。
5肯污、禁止在catch中出現(xiàn) e.printStackTrace()
從源碼可以看到,e.printStackTrace() 對線程上鎖吨枉,影響多線程下的執(zhí)行效率蹦渣。
應(yīng)該使用Logback進(jìn)行日志管理。
6貌亭、代碼的系統(tǒng)無關(guān)性
例如:換行符 \n 和 \r\n柬唯,可以使用:
(1)System.getProperties()
(2)Guava中可以使用StandardSystemProperty
這個(gè)是用來方便調(diào)用如java.version, java.home 等環(huán)境變量的,使用的是enum了,比如:
StandardSystemProperty.JAVA_VERSION.value();
// [result] 1.7.0_25
7、是否要提供無參構(gòu)造方法
這個(gè)要考慮Bean是否允許屬性缺失的對象圃庭,如果允許锄奢,則可提供無參構(gòu)造方法。
8剧腻、使用Preconditions進(jìn)行參數(shù)校驗(yàn)
Preconditions里面的方法:
1 .checkArgument(boolean) :
功能描述:檢查boolean是否為真拘央。 用作方法中檢查參數(shù)
失敗時(shí)拋出的異常類型: IllegalArgumentException
**2.checkNotNull(T): **
功能描述:檢查value不為null, 直接返回value书在;
失敗時(shí)拋出的異常類型:NullPointerException
3.checkState(boolean):
功能描述:檢查對象的一些狀態(tài)灰伟,不依賴方法參數(shù)。 例如儒旬, Iterator可以用來next是否在remove之前被調(diào)用栏账。
失敗時(shí)拋出的異常類型:IllegalStateException
4.checkElementIndex(int index, int size):
功能描述:檢查index是否為在一個(gè)長度為size的list帖族, string或array合法的范圍。 index的范圍區(qū)間是[0, size)(包含0不包含size)挡爵。無需直接傳入list竖般, string或array, 只需傳入大小茶鹃。返回index涣雕。
失敗時(shí)拋出的異常類型:IndexOutOfBoundsException
5.checkPositionIndex(int index, int size):
功能描述:檢查位置index是否為在一個(gè)長度為size的list, string或array合法的范圍闭翩。 index的范圍區(qū)間是[0胞谭, size)(包含0不包含size)。無需直接傳入list男杈, string或array丈屹, 只需傳入大小。返回index伶棒。
失敗時(shí)拋出的異常類型:IndexOutOfBoundsException
6.checkPositionIndexes(int start, int end, int size):
功能描述:檢查[start, end)是一個(gè)長度為size的list旺垒, string或array合法的范圍子集。伴隨著錯(cuò)誤信息肤无。
失敗時(shí)拋出的異常類型:IndexOutOfBoundsException
例子:
Preconditions.checkNotNull(neme, "neme為null");
Preconditions.checkArgument(neme.length()>0, "neme為\'\'");
Preconditions.checkArgument(age>0, "age 必須大于0");