jAVA EE NZ2001 java EE學習總結 第七週(包含思維導圖) 主要內容I/O框架、網絡編程、反射

第七週

Day31、Day32

I/O框架

  • 流的概念

    • 內存與存儲設備之間傳輸數據的通道
  • 流的分類

    • 按方向【重點】

      • 輸入流

        • 將存儲設備中的內容讀入到內存中
      • 輸出流

        • 將,<內存>中的內容寫入到<存儲設備>中
    • 按單位

      • 字節流

        • 以字節爲單位,可以讀寫所有數據
      • 字符流

        • 以字符爲單位,只能讀寫文本數據
    • 按功能

      • 節點流

        • 具有實際傳輸數據的讀寫功能
      • 過濾流

        • 在節點流的基礎之上增強功能
  • 字節流

    • 字節流的父類(抽象類)

      • InputStream 字節輸入流

        • public int read(){}
        • public int read(byte [] b ){}
        • public int read(byte[] b ,int off,int len){}
      • OutputStream: 字節輸出流

        • public void write(int n ){}
        • public void write(byte[] b){}
        • public void write(byte[] b ,int off ,int len){}
    • 字節節點流

      • FileOutputStream :

        • public void write(byte[] b);//一次寫多個字節,將數組中所有字節,寫入輸出流
      • FileInputStream:

        • public int read)(byte[] b)//從流中讀取多個字節,將讀到內容存入b 數組,返回實際讀到的字節數;如果達到文件的尾部,則返回-1
    • 字節過濾流

      • 緩衝流: BufferedOutputStream/BufferedInputStream

        • 提高IO效率,減少訪問磁盤的次數
        • 數據存儲在緩衝區中,flush 是將緩存區的內容寫入文件中,也可以直接close
      • 對象流:ObjectOutputStream/ObjectInputStream

        • 增強了緩衝區功能

        • 增強了讀寫8種基本數據類型和字符串功能

        • 增強了讀寫對象的功能

          • readObject() 從流中讀取一個對象
          • writeObject(Object obj) 向流中寫入一個對象
        • 使用流傳輸對象的過程稱爲序列化、反序列化

    • 對象序列化

      • 序列化細節

        • 必須實現Serializable接口
        • 必須保證其所有屬性均可序列化
        • transicent 修飾爲臨時屬性,不參與序列化
        • 讀取到文件尾部的標誌: java.io.EOFException
  • (字符編碼)編碼方式

    • ISO-8859-1收錄除了ASCII外,還包括西歐、希臘語、泰語、阿拉伯語、希伯來語對應的文字符號
    • UTF-8 針對Unicode 的可變長長度字符編碼
    • GB2312 簡體中文
    • GBK 簡體中文、補充
    • BIG5 臺灣,繁體中文
    • 注意:當編碼方式不一致時,會出現亂碼
  • 字符流

    • 字符流的父類(抽象類):

      • Reader:字符輸入流

        • public int read(){}
        • public int read(char[] c){}
        • public int read(char [] b, int off ,int len){}
      • Write:字符輸出流

        • public void write(int n ){}
        • public void write(String str[]){}
        • public void write(char [] c){}
      • 字符節點流

        • FileWriter

          • public void write(String str ) // 一次寫入多個字符,將b 數組中所有字符,寫入輸出流
        • FileReader

          • public int read(char [] c ) // 從流中讀取多個字符,將讀到內容存入c 數組,返回實際讀到的字符數,如果達到文件的尾部,則返回-1
    • 字符過濾流

      • 緩衝流:BufferedWrite、BufferedReader

        • 支持輸入換行符
        • 可一次寫一行,讀一行
      • printWriter

        • 封裝了print() 、println () 方法,支持寫入後換行
    • 字符節點流

      • 橋轉換流:InputStreamReader/OutputStreamWriter

        • 可將字節轉換爲字符流
        • 可設置字符的編碼方式
      • 使用步驟

        • 創建節點流
        • 創建過濾流,設置字符編碼集
        • 封裝過濾流
        • 讀寫數據
        • 關閉流
  • File類

    • 概念:代表物理盤符中的一個文件或者文件夾

    • 方法

      • createNewFile() // 創建一個新文件
      • Mkdir ()//創建一個新目錄
      • Delete()//刪除文件或新目錄
      • Exists()//判斷File對象所對象所代表的是否存在
      • getAbsolutePath()// 獲取文件的絕對路徑
      • getName() //取得名字
      • getParent() //獲取文件/目錄所在的目錄
      • isDirectory() // 是否是目錄
      • isFile() // 是否是文件
      • length() //獲得文件的長度
      • ListFiles()// 列出目錄中的所有內容
      • renameTo()//修改文件名爲

Day33-34

網絡編程

  • 什麼是網絡

    • 由點和線構成,表示諸多對象間的相互聯繫
  • 計算機網絡

    • 爲實現資源共享和信息傳遞,。通過通信線路連接起來的若干主機(Host)
    • 互聯網:點與點相連
    • 萬維網:端與端相連
    • 物聯網:物與物相連
    • 網路編程:讓計算機與計算機之間建立連接、進行通信
  • 網絡模型

    • 第一層:物理層設備之間的數據通信提供傳輸信號和物理介質。(雙絞線、光纖纖維)
    • 第二層:鏈路層在物理層上,通過規程或協議(差錯控制)來控制傳輸數據的正確性。(MAC)
    • 第三層:網絡層負責定義了能夠標識所有網絡節點的邏輯地址(IP地址)
    • 第四層:傳輸層負責是否選擇差錯恢復協議、數據流重組、錯誤順序重排。(TCP、UDP)
    • 第五層:會話層負責應用建立和維持會話,使通信在失效時繼承恢復通信。(斷點續傳)
    • 第六層:表示層負責定義轉換數據格式及加密,允許選擇以二進制或ASCII格式傳輸
    • 第七層:應用層負責文件訪問和管理、可靠運輸服務、遠程操作服務。(HTPP、FTP、SMTP)
  • 通信協議

    • TCP/IP 模型

      • 一組用於實現網絡互連的通信協議,將協議分成四個層次

      • 分四層

        • 應用層

          • 對應OSI參考模型的應用層、表示層、會話層

            • 第四層:應用層負責傳送各種最終形態的數據,是直接與用戶打交道的層,典型協議是HTTP、FTP等
        • 傳輸層

          • 對應OSI參考模型的傳輸層

            • 第三層:傳輸層負責傳送文本數據,主要協議是TCP、UDP協議
        • 網絡層

          • 對應OSI參考模型的網絡層

            • 第二層:網絡層負責分配地址和傳送二進制數據,主要協議是IP協議
        • 網絡接口層

          • 對應OSI參考模型的數據鏈路層和物理層

            • 第一層:接口層負責建立電路連接。是整個網絡的物理基礎,典型的協議包括以太網、ADSL等等
      • TCP協議: 傳輸控制協議

        • 是一種面向連接的、可靠性的、基於字節流的傳輸層通信協議。數據大小無限制。建立連接的過程需要三次握手,斷開連接的過程需要四次握手
      • UDP協議:用戶數據報協議

        • 是一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,每個包的大小64KB
    • IP

      • IP協議: Internet Protocol Address 互聯網協議地址/網際協議地址

        • 分配給互聯網設備的數字標籤(唯一標識)
      • IP地址分爲兩種

        • IPV4 :4字節32位整數,並分成4段8位的二進制數,每8位之間用圓點隔開,每8位整數可以轉換爲一個0^255的十進制整數 格式:D.D.D.D 例如 255.255.255.255
        • IPV6 :16字節128位整數,並分成8段十六進制數,每16位之間用圓點隔開。每16位整數可以轉換爲一個0^65535 的十進制數 格式: X. X.X .X.X.X.X.X 例如FFFF.FFFF.FFFF.FFFF.FFFF.FFFF.FFFF.FFFF
      • IPV4 的應用分類

        • A類:政府機構,1.0.0.1^126.255.255.254
        • B 類:中型企業,128.0.0.1^191.255.255.254
        • C 類:個人用戶,192.0.0.1^223.255.255.254
        • D 類:用於組播,224.0.0.1^239.255.255.254
        • E 類:用於實驗,244.0.0.1^255.255.255.254
        • 迴環地址:127.0.0.1, 指本機,一般用於測試使用
        • 查看IP命令:IPconfig
        • 測試IP命令:ping D.D.D.D
    • Port

      • 端口號:在通信實體上進行網絡通訊的程序的唯一標識

      • 端口分類

        • 公認端口: 0^1023
        • 註冊端口:1024^49151
        • 動態或私有端口:49152^65535
      • 常用端口

        • MySQL:3306
        • Oracle:1521
        • Tomcat:8080
        • SMTP:25
        • web 服務器:80
        • FTP服務器:21
    • InetAddress類

      • 概念:表示互聯網協議(IP)地址對象,封裝了該IP相關的所有信息,並提供獲取信息的常用方法

      • 方法:

        • public static InetAddress getLocalHost() 獲取本地主機地址對象
        • public static InetAddress getByName(String host) 根據主機名稱獲得地址對象
        • public static InetAddress [] getALLName(String host ) 獲得所有相關地址對象
        • public String getHostAddress() 獲取IP地址字符串
        • public String getHostName() 獲取IP地址主機名
  • 網絡編程

    • 基於TCP的網絡編程

      • Socket 編程:

        • Socket(套接字)是網絡中的一個通信節點
        • 分爲客戶端Socket 與服務器ServerSocket
        • 通信要求:IP地址+端口號
    • 開發步驟

      • 建立通信連接(會話)

        • 創建ServerSocket,指定端口號
        • 調用accept 等待客戶端接入
      • 客戶端請求服務器

        • 創建Socket,指定服務器IP+ 端口號
        • 使用輸出流,發送請求數據給服務器
        • 使用輸入流,接收響應數據到客戶端(等待)
      • 服務器響應客戶端

        • 使用輸入流,接收請求數據到服務器(等待)
        • 使用輸出流,發送響應數據給客戶端
    • 課堂案例

      • 使用S coket編程實現服務器端註冊

        • 註冊信息保存在properies 文件中
        • 封裝格式
        • Id= {id :“1001”,name :}
        • 註冊成功後返回字符串“註冊成功”
      • 使用Scoket編程實現服務器端登錄

        • 獲取properties 文件中的用戶信息,進行用戶名與密碼的校驗
        • 校驗成功後返回字符串“登錄成功”

總結

  • 計算機網絡:爲實現資源共享和信息傳遞,通過該通信線路連接起來的若干主機
  • TCP協議:是一種面向連接的,可靠的,基於字節流的傳輸層通信協議。數據大小無限制
  • IP:分配給互聯網設備的數字標籤(唯一標識)
  • Port:在通信實體上進行網絡通訊的程序的唯一標識
  • Scoket 編程:建立連接、接收請求、發送響應

Day35

反射

  • 什麼是類對象

    • 類的對象:基於某個類new 出來的對象,也稱爲實例對象
    • 類對象:類加載的產物,封裝了一個類的所有信息(類名、父類、接口、屬性、方法、構造方法)
  • 獲取類對象

    • 通過類的對象。獲取類對象

      • Student s = new Student(); Class c = s.getClass()
    • 通過類名獲取類對象

      • Class c = 類名.class;
    • 通過靜態方法獲取類對象

      • Class c = Class.forName(“包名.類名”);
  • 常見操作

    • 常用方法

      • public Sring getName()
      • public Package getPackage()
      • public Class<? super T >getSuperclass()
      • public Class<?>[] getInterfaces()
      • public Field[] getFields()
      • public Method[] getMethods()
      • public Constructor<?>[] getConstructors()
      • public T newInstance()
  • 設計模式介紹

    • 工廠設計模式

      • 開發中有一個非常重要的原則“開閉原則”。對拓展開放、對修改關閉
      • 工廠模式主要負責對象創建的問題
      • 可通過反射進行工廠模式的設計,完成動態的對象創建
  • 單例設計模式

    • 單例模式

      • 單例:只允許創建一個該類的對象

      • 方式1:餓漢式(類加載時創建,天生線程安全)

        class Singletion {

        private static final Singleton instance = new Singleton();
        private Singletonb() {}
        public static Singleton getInstance(){}
        return instance;

        }

      • 方式2“懶漢式(使用時創建,線程不安全,加同步)

        class Singleton {
        private static Singleton intance = null ;

        private Sington(){}
        public static synchronized Singleton getInstance(){
        if(instance == null){
        instance = new Singleton();

        }
        return instance;

        }
        }

      • 方式3:懶漢式(使用時創建,線程安全)

        class Singleton{
        private Singleton(){}

        private static class Holer{
        static Singleton s = new Singleton();
        }
        public static Singleton instance(){

        retuen Holder.s;
        }

        }

  • 總結

    • 類對象

      • Class對象,封裝了一個類的所有信息;程序運行中,可通過class 對象獲取類的信息
    • 獲取類對象的三種方式

      • Class c = 對象。getClass()
      • Class c = 類名.class;
      • class c = Class.forName(“包名.類名”);
    • 工廠模式

      • 主要用於創建對象,通過反射進行工廠模式的設計,完成動態的對象創建
    • 單例模式

      • Singleton ,只允許創建一個該類的對象
        微信公衆號:愛編碼的程序員
        在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章