java高級(jí)知識(shí)點(diǎn)

1.數(shù)據(jù)結(jié)構(gòu)

程序=數(shù)據(jù)結(jié)構(gòu)+算法

  • 棧:后進(jìn)先出,線性結(jié)構(gòu) 入棧:push 出棧:pop
    假如已知入棧順序是abcd,那么他的出棧順序可能有很多種abcd(馬上進(jìn)馬上出)
  • 隊(duì)列:先進(jìn)先出蝶糯,線性結(jié)構(gòu)
  • 樹(shù):有且只有一個(gè)根節(jié)點(diǎn)艇拍,每個(gè)節(jié)點(diǎn)也僅有一個(gè)父節(jié)點(diǎn)璧亮,每個(gè)節(jié)點(diǎn)可以有多個(gè)子節(jié)點(diǎn)( 鏈?zhǔn)浇Y(jié)構(gòu))
    樹(shù)的分類:
    有序數(shù)樹(shù) 無(wú)序數(shù)樹(shù)
    二叉樹(shù):每個(gè)節(jié)點(diǎn)最大有兩個(gè)子節(jié)點(diǎn)的有序數(shù)樹(shù)
    滿二叉樹(shù):如果一個(gè)二叉樹(shù)層級(jí)是K,樹(shù)的節(jié)點(diǎn)數(shù)是2^K-1
    完全二叉樹(shù):
    二叉樹(shù)的遍歷:
    1)先序遍歷(深度遍歷):根節(jié)點(diǎn)参萄,左子樹(shù),右子樹(shù)
    2)中序遍歷: 左子樹(shù)擎析,根節(jié)點(diǎn)瘾杭,右子樹(shù)
    3)后序遍歷: 左子樹(shù),右子樹(shù)汰具,根節(jié)點(diǎn)
    任何已知先中序或中后序就可以確定二叉樹(shù)的結(jié)構(gòu)卓鹿。
    例子:二叉樹(shù)的中序遍歷為:BADC,先序遍歷為ABCD留荔。求后序遍歷結(jié)果吟孙? BDCA

2.ajax(Asynchronous JavaScript and XML)

異步的JavaScript and XML技術(shù)
不刷新整個(gè)頁(yè)面,僅僅局部刷新 讓客戶端與服務(wù)器端進(jìn)行通信
它不是一個(gè)新技術(shù)存谎,只是幾種技術(shù)的結(jié)合

1)ajax 的核心對(duì)象是XMLHttpRequest

XMLHttpRequest存在瀏覽器端拔疚,不同的瀏覽器 創(chuàng)建方式不同
目前比較主流瀏覽器內(nèi)核:v/p

火狐內(nèi)核 :火狐 google..
window.XMLHttpRequest
IE內(nèi)核 : IE6 -IE11 360 遨游
Window.ActiveXObject

2)XMLHttpRequest 對(duì)象中的方法

a: 客戶端與服務(wù)器端建立連接
open("請(qǐng)求方式[get|post]","請(qǐng)求路徑",是否異步 [true|false]);
b: 監(jiān)聽(tīng)服務(wù)器狀態(tài)onreadystatechange肥隆,指定回調(diào)函數(shù)(當(dāng)狀態(tài)只要發(fā)生變化既荚,就調(diào)用這個(gè)回調(diào)函數(shù))

狀態(tài) readyState(屬性)
0 連接還未建立完成
1 已經(jīng)建立連接 請(qǐng)求未加載
2 正在加載
3 請(qǐng)求已經(jīng)加載完成 正在交互中
4 完成交互

c: send();發(fā)送請(qǐng)求
d: 完成交互 服務(wù)器響應(yīng)狀態(tài) status(屬性):

200 服務(wù)器端成功處理了請(qǐng)求
400 服務(wù)器端處理失敗
404 服務(wù)器端找不到處理請(qǐng)求的地址
500 服務(wù)器端內(nèi)部錯(cuò)誤

e:服務(wù)器回調(diào)回來(lái)的值:
XMLHttpRequest對(duì)象的屬性responseText

3)ajax的操作步驟

  1. 創(chuàng)建 XMLHttpRequest 對(duì)象
  2. 建立連接 對(duì)象.open()
  3. 指派監(jiān)聽(tīng)函數(shù) 對(duì)象.onreadystatechange=回調(diào)函數(shù)名
  4. 發(fā)送請(qǐng)求 對(duì)象.send()
  5. 寫(xiě)監(jiān)聽(tīng)函數(shù) 回調(diào)函數(shù)()
    判斷服務(wù)器連接的狀態(tài)xhr.readyState
    判斷服務(wù)器響應(yīng)狀態(tài) xhr.status

3.query 輕量級(jí) javaScript 框架

寫(xiě)的少做的多,良好的兼容性
強(qiáng)大的選擇器 dom 操作

1)用法:

  • 1:引入 jquery.xxxx.js
    jquery.1.xx.js 良好的兼容性
    jquery.2.xx.js 支持IE8以上的版本 firefox2.0
  • 2:初始化方法
       $(document).ready(function(){
       }); 

可以簡(jiǎn)寫(xiě) $(function(){}); 與 window.load=function(){}類似

2)選擇器

a. id 選擇器
         $("#id名")  
b. 類選擇器
          $(".類名")   
          <p class="p">a1 </p>  
          <p class="p">a2 </p>  
          <p class="p">a3 </p> 
           $(".p").each(function(){
           });  
 c:標(biāo)簽選擇器   
           $("標(biāo)簽名")    $("div") 

4.javai/o

1)名詞解釋

  • I/o : Input/OutPut 輸入/輸出
  • 流 : 具有產(chǎn)生數(shù)據(jù)的數(shù)據(jù)源對(duì)象 或者具有接收數(shù)據(jù)的客戶端對(duì)象
  • I/O流 : 站在程序的角度
    用來(lái)產(chǎn)生數(shù)據(jù)的數(shù)據(jù)源對(duì)象 輸入流;
    有接收數(shù)據(jù)的客戶端對(duì)象 輸出流
  • 為什么要使用 I/O流
    因?yàn)橛?jì)算機(jī)cpu 不能直接讀取硬盤(pán)的上的數(shù)據(jù)
    計(jì)算機(jī)要進(jìn)行讀寫(xiě)數(shù)據(jù)必須要通過(guò)I/o流來(lái)操作
  • java中的I/O ->java.Io
  • java中的文件操作
  • InputStream 抽象的類 輸入流
    OutputStream 抽象的類 輸出流

2)java.io.File 類

File 構(gòu)造方法

       File f=new File("文件絕對(duì)路徑");
       File f=new File("文件父級(jí)文件夾路徑","文件名");
       File f=new File(File dir,"文件名");
       File f=new File(URL url);

     f.exists();判斷文件是否存在      
     f.createNewFile(); 創(chuàng)建文件
     f.mkdir();  創(chuàng)建文件夾
     
     listFiles();
      listFiles(FileFilter filter)  

3) I/O流分類

  1. 根據(jù)方向劃分 : 輸入、輸出流
  2. 根據(jù)操作字節(jié)數(shù)來(lái)分:
    字節(jié)流 按照一個(gè)字節(jié)一個(gè)字節(jié)操作 只操作一個(gè)字節(jié)(8bit)

輸入字節(jié)流 InputStream 用于讀取字節(jié)流的抽象類 常見(jiàn)子類 FileInputStream 輸出字節(jié)流 OutputStream 寫(xiě)入字節(jié)流的抽象類 常見(jiàn)子類 FileOutputStream

字符流 按照兩個(gè)字節(jié)操作(16bit)

輸入字符流 Reader用于讀取字符流的抽象類
常見(jiàn)子類 InputStreamReader,FileReader
輸出字符流 Writer寫(xiě)入字符流的抽象類
常見(jiàn)子類 OutputStreamWriter,FileWriter

  1. 可以操作Java的數(shù)據(jù)類型栋艳,是與機(jī)器無(wú)關(guān)的操作流
    DataInputStream , DataOutputStream
  2. 包裝流 對(duì)基本流進(jìn)行添加緩存功能的流
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter

5. 序列化與反序列化

持久化:把內(nèi)存中的對(duì)象 數(shù)據(jù) 保存在介質(zhì)[文件恰聘,數(shù)據(jù)庫(kù)] 中去
序列化: 把java對(duì)象 存在文件 中 但不是任意對(duì)象都可以序列化
如果一個(gè)對(duì)象要能夠序列化 那么這個(gè)對(duì)象的類 必須可序列化
可序列化 的類 必須要實(shí)現(xiàn)一個(gè) Serializable 接口

序列化->ObjectOutputStream 對(duì)象存儲(chǔ)到文件中
反序列化->ObjectInputStream 文件去讀出來(lái)變成對(duì)象
靜態(tài)屬性不會(huì)序列化到文件中

1) java 創(chuàng)建對(duì)象的幾種方式

  1. new 類的構(gòu)造器
  2. 反序列化
    首先類必須實(shí)現(xiàn) 可序化接口 Serializable
    先進(jìn)行 序列化 在進(jìn)行 反序列化
  3. 克隆 類對(duì)象要 克隆 類必須實(shí)現(xiàn)可克隆接口 Cloneable 接口
  4. 反射

6. java多線程

程序-》計(jì)算機(jī)的指令集合 靜態(tài)的概念
進(jìn)程-》程序的一次運(yùn)行 動(dòng)態(tài)的概念,有獨(dú)立的內(nèi)存空間
線程-》進(jìn)程的一次運(yùn)行 可以分成若干條分支同時(shí)執(zhí)行
每一條分支就是一個(gè)線程 , 線程是比進(jìn)程更小的概念

多線程:一個(gè)進(jìn)程分成多條線索同時(shí)執(zhí)行 這個(gè)進(jìn)程就是多線程
java程序中 main 方法 jvm會(huì)自動(dòng)給他分配一個(gè)線程 通常這個(gè)線程
都叫做 主線程

1)線程和進(jìn)程有什么區(qū)別吸占?

  • 進(jìn)程它是程序的一次運(yùn)行晴叨,所以它會(huì)有獨(dú)立的內(nèi)存空間
    線程是進(jìn)程的一條執(zhí)行的線索,該進(jìn)程的所有線程都共享
    進(jìn)程的內(nèi)存矾屯,沒(méi)有獨(dú)立的內(nèi)存空間
  • 一個(gè)進(jìn)程分成多條線程兼蕊,同時(shí)執(zhí)行叫做多線程

2) java怎么實(shí)現(xiàn)多線程

第一種方式:
a:寫(xiě)一個(gè)類 extends Thread
b:重寫(xiě)run() 方法
c:創(chuàng)建線程類對(duì)象,調(diào)用對(duì)象的 start()方法
第二中方式:
a:寫(xiě)一個(gè)類 實(shí)現(xiàn)Runable 接口
b:實(shí)現(xiàn)Runable 接口中run() 方法
c:創(chuàng)建該類對(duì)象
d:再創(chuàng)建一個(gè) Thread類的對(duì)象件蚕,傳遞一個(gè)實(shí)現(xiàn)Runnable接口類的對(duì)象
e:再調(diào)用 Thread類的對(duì)象 的 start()方法(因?yàn)橹挥芯€程Thread有start方法

在Thread類中可以:
this.getName()來(lái)獲取線程的名稱
在非Thread類中可以:
Thread.currentThread().getName() 來(lái)獲取當(dāng)前正在運(yùn)行線程的名稱

3) 線程中常見(jiàn)方法:

  • boolean isAlive() 判斷線程是否處于活動(dòng)狀態(tài)(就緒)
    一個(gè)線程類對(duì)象 在start()之前 沒(méi)有處于活動(dòng)狀態(tài)
    在start()之后 run() 運(yùn)行完成之前 都處于 活動(dòng)狀態(tài)
    run()運(yùn)行完成之后 沒(méi)有處于活動(dòng)狀態(tài)
  • join() 合并線程
  • yield() 讓出 cpu 的使用權(quán)
  • sleep(long millis) 讓當(dāng)前線程休眠指定的時(shí)間 毫秒數(shù)
    sleep 但不會(huì)釋放cpu的使用權(quán) 也不釋放占用的資源
  • interrupt() 中斷線程孙技。
  • 線程的優(yōu)先級(jí) 默認(rèn)值是 5 范圍 0-9 值越大 越優(yōu)先
    getPriority() 返回線程的優(yōu)先級(jí)产禾。
    setPriority(int newPriority) 更改線程的優(yōu)先級(jí)。
    優(yōu)先級(jí) 越高 只是越有機(jī)會(huì)獲得cpu的使用權(quán) 并不是一定先運(yùn)行
  • stop();讓線程消亡
  • wait();讓當(dāng)前線程暫停執(zhí)行牵啦,進(jìn)入等待隊(duì)列亚情,需要notify()或noyifyAll()喚醒才能進(jìn)入就緒狀態(tài)
  • notify();喚醒等待隊(duì)列中的一個(gè)線程
  • notifyAll();喚醒等待隊(duì)列中的所有線程

4) 多線程安全問(wèn)題(synchronized)

Java程序可以讓多線程來(lái)同時(shí)執(zhí)行,如果多線程要訪問(wèn)共同的數(shù)據(jù)哈雏,可能會(huì)造成數(shù)據(jù) 的不一致的問(wèn)題楞件,所以要做線程的同步問(wèn)題。
線程的同步就是讓同一個(gè)時(shí)間點(diǎn)只有一個(gè)線程可以訪問(wèn)共享的資源.

5) 同步的方式:

  • synchronized修飾方法 同步方法
    同一時(shí)間只能有一個(gè)線程可以訪問(wèn)該方法
  • synchronized 代碼塊
    Synchronized(共享資源的對(duì)象){}
    同一時(shí)間只能有一個(gè)線程可以訪問(wèn)該對(duì)象
  • 一個(gè)可重入的互斥鎖類 ReentrantLock
    Lock();unlock();注意要用try-catch-finally來(lái)處理裳瘪,避免死鎖
  • volatile 特殊的類型變量來(lái)達(dá)到同步的目的
  • ThreadLocal

7.java反射(java.lang.reflect)

程序一般原理:Java創(chuàng)建對(duì)象——>知道類的源碼——>調(diào)用構(gòu)造土浸、屬性、方法
反射原理 :沒(méi)有源碼盹愚,只有字節(jié)碼——>反射類屬性栅迄、方法和父類實(shí)現(xiàn)的接口——>調(diào)用方法、構(gòu)造
反射 就是把一個(gè)類 用其他的類來(lái)表示 ;

獲取類的字節(jié)碼:
- 類路徑(包名+類名).class     ( Class c=包名+類名.class;)
- Class.forName("類路徑");
- 通過(guò)類的對(duì)象  .getClass();

獲取父類:Class suoerc=c.getSupperclass();
獲取實(shí)現(xiàn)的接口:Class[] interfaces=c.getInterfaces();

獲取類的屬性(Filed(java.lang.reflect)):
Filed[] fs=c.getFilelds();獲取public 屬性(自身與父類繼承過(guò)來(lái)的)
     Filed[] fs=c.getDeclaredFields();獲取自身所有的屬性
獲取類的方法(Method(java.lang.reflect)):
Method[] ms=c.getDeclaredMethods();獲取自身所有的方法
Method[] ms2=c.getMethods();獲取public 方法(自身與父類,父類的父類繼承過(guò)來(lái)的)
獲取類的構(gòu)造方法(Constructor (java.lang.reflect)):
Constructor[] crs=c.getConstructors() ;

8.設(shè)計(jì)模式之二

工廠模式:根據(jù)配置動(dòng)態(tài)產(chǎn)生一組類中某個(gè)類的實(shí)例
通常這一組類有共同的父類或?qū)崿F(xiàn)了相同的接口
配置:key——>value
key值保持不變皆怕,value根據(jù)實(shí)際情況改變 value=xxx(key)
父類(接口)對(duì)象= Class.forName(value).newIntance();

9.不常用知識(shí)點(diǎn)

1)內(nèi)部類

  1. 普通的內(nèi)部類 (成員內(nèi)部類 )
    在一個(gè)類的類體里面申明的一個(gè)類
  2. 靜態(tài)內(nèi)部類
    在一個(gè)類的類體里面申明的一個(gè)類 加上static 修飾符
  3. 匿名內(nèi)部類

2) 網(wǎng)絡(luò)編程

目的:使網(wǎng)絡(luò)中的計(jì)算機(jī)可以進(jìn)行通信
定位網(wǎng)絡(luò)中的一臺(tái)計(jì)算機(jī) InetAddress 數(shù)據(jù)的傳輸

TCP是Tranfer Control Protocol的簡(jiǎn)稱毅舆, 是一種面向連接的保證可靠傳輸?shù)膮f(xié)議
UDP是User Datagram Protocol的簡(jiǎn)稱,是一種無(wú)連接的不可靠協(xié)議愈腾。
傳輸?shù)臄?shù)據(jù)受到限制 最大64K (QQ離線)

Socket——> 套接字
網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通訊連接實(shí)現(xiàn)數(shù)據(jù)的交換憋活,
這個(gè)雙向鏈路的一端稱為一個(gè)Socket。
Socket通常用來(lái)實(shí)現(xiàn)客戶方和服務(wù)方的連接虱黄。
Socket是TCP/IP協(xié)議的一個(gè)十分流行的編程界面悦即,
一個(gè)Socket由一個(gè)IP地址和一個(gè)端口號(hào)唯一確定

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市橱乱,隨后出現(xiàn)的幾起案子辜梳,更是在濱河造成了極大的恐慌,老刑警劉巖泳叠,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件作瞄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡危纫,警方通過(guò)查閱死者的電腦和手機(jī)宗挥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)种蝶,“玉大人契耿,你說(shuō)我怎么就攤上這事◇φ鳎” “怎么了搪桂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)盯滚。 經(jīng)常有香客問(wèn)我踢械,道長(zhǎng)拙泽,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任裸燎,我火速辦了婚禮顾瞻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘德绿。我一直安慰自己荷荤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布移稳。 她就那樣靜靜地躺著蕴纳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪个粱。 梳的紋絲不亂的頭發(fā)上古毛,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音都许,去河邊找鬼稻薇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胶征,可吹牛的內(nèi)容都是我干的塞椎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼睛低,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼案狠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钱雷,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤骂铁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后罩抗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拉庵,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年澄暮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了名段。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阱扬。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泣懊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出麻惶,到底是詐尸還是另有隱情馍刮,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布窃蹋,位于F島的核電站卡啰,受9級(jí)特大地震影響静稻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匈辱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一振湾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亡脸,春花似錦押搪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至垂谢,卻和暖如春厦画,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滥朱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工根暑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徙邻。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓购裙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鹃栽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子躏率,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容