file.listFiles()
// 返回絕對(duì)路徑
file.getAbsolutePath()
byte[] tempbytes = new byte[fileSize];
// 從輸入流中讀取一定數(shù)量的字節(jié)辟躏,并將其存儲(chǔ)到字節(jié)數(shù)組
new FileInputStream(file).read(tempbytes);
File finallyFile = new File(fileUrl);
FileOutputStream fos = new FileOutputStream(finallyFile);
// 文件復(fù)制入蛆,底層是調(diào)用fos.write
Files.copy(sourceFilePath, fos);
// 第一個(gè)參數(shù)是包括在內(nèi)的inclusive
String.substring(...)
// 通俗一點(diǎn)的說(shuō)吧秕,就像洗牌一樣始赎,隨機(jī)打亂原來(lái)的順序
Collections.shuffle(list)
// 創(chuàng)建臨時(shí)文件
file.createTempFile(String prefix, String suffix)
// 創(chuàng)建文件
file.createNewFile()
// createNewFile()需要指定目錄路徑香璃,createTempFile()的路徑為App.getInstance().getApplicationContext().getCacheDir()目錄下这难。
// 將收到的文件傳輸?shù)浇o定的目標(biāo)文件
multipartFile.transferTo(destFile)
// hexStr表示字符串,16表示字符串?dāng)?shù)值的進(jìn)制
int a = Integer.parseInt(hexStr, 16)
// 向集合中加入指定元素
Collections.addAll(colls, elements)
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
list.add(new Student("張", 80));
list.add(new Student("王", 70));
// new了一個(gè)實(shí)現(xiàn)接口的匿名類葡秒,需要在匿名類內(nèi)部(花括號(hào)內(nèi))實(shí)現(xiàn)那個(gè)接口
list.sort(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getGrade() - o2.getGrade();
}
});
}
靜態(tài)內(nèi)部類的加載不需要依附外部類姻乓,在使用時(shí)才加載。
二維數(shù)組其實(shí)就是二級(jí)數(shù)組眯牧,數(shù)組中包含數(shù)組蹋岩。
char[][] x = new char[][]{{'a', 'b'}, {'c', 'd'}};
System.out.println(x[0][1]); //b
- Arrays.copyOf(...)
Arrays的copyOf()方法傳回的數(shù)組是新的數(shù)組對(duì)象,改變傳回?cái)?shù)組中的元素值学少,不會(huì)影響原來(lái)的數(shù)組剪个。
copyOf()的第二個(gè)自變量指定要建立的新數(shù)組長(zhǎng)度,如果新數(shù)組的長(zhǎng)度超過(guò)原數(shù)組的長(zhǎng)度版确,則保留數(shù)組默認(rèn)值0扣囊。
- System.arraycopy(...)
byte[] srcBytes = new byte[]{1,2,3,4,5,6,7,10,15,50};
byte[] destBytes = new byte[5];
// 原數(shù)組、從源數(shù)據(jù)的起始位置開(kāi)始绒疗、目標(biāo)數(shù)組侵歇、目標(biāo)數(shù)組的開(kāi)始起始位置、源數(shù)組中要copy的數(shù)組的長(zhǎng)度
System.arraycopy(srcBytes,0,destBytes ,0,4);
System.out.println(destBytes); // 1 2 3 4 0
- HashMap
hashmap進(jìn)行put時(shí)吓蘑,key相同惕虑,value值會(huì)進(jìn)行覆蓋。
put過(guò)程-》對(duì)象key的hashcode 經(jīng)過(guò)hash()處理-》得到hash值-》(n - 1) & hash計(jì)算出數(shù)組下標(biāo)i。 (n - 1) & hash相當(dāng)于hash % n溃蔫。
在put放入元素時(shí)健提,HashMap又自己寫(xiě)了一個(gè)hash方法來(lái)計(jì)算hash值,為什么不用key本身的hashCode方法酒唉,而是又處理了一下矩桂?
我的理解是當(dāng)table很小的時(shí)候,計(jì)算元素在table中的位置(n-1)&hash痪伦。如果用key本身的hashCode作為hash祥绞,只用到了hash值的低位泊藕,這樣當(dāng)不同的hash值低位相同,高位不同的時(shí)候會(huì)產(chǎn)生沖突。
實(shí)際上的hash值是將hashcode低16位與高16位做異或運(yùn)算距境,相當(dāng)于混合了高位和低位拥坛,增加了隨機(jī)性恼布。
判斷放入HashMap中的元素要不要替換當(dāng)前節(jié)點(diǎn)的元素耳贬,key滿足以下兩個(gè)條件即可替換:
1、hash值相等醋旦。
2恒水、key的==或equals的結(jié)果為true。
- 位移運(yùn)算符
<<左移運(yùn)算饲齐,>>右移運(yùn)算钉凌,還有不帶符號(hào)的位移運(yùn)算 >>>。
左移一位相當(dāng)于乘以2捂人,左移n位就相當(dāng)于乘以2的n次方御雕。
右移一位相當(dāng)于除2,右移n位相當(dāng)于除以2的n次方滥搭。
- catalina
Tomcat服務(wù)器使用的 Apache實(shí)現(xiàn)的servlet容器的名字酸纲。
Tomcat的核心分為3個(gè)部分:
(1)Web容器---處理靜態(tài)頁(yè)面;
(2)catalina --- 一個(gè)servlet容器-----處理servlet;
(3)還有就是JSP容器瑟匆,它就是把jsp頁(yè)面翻譯成一般的servlet闽坡。