1. 程式人生 > >IO流的分類&序列化&事件處理模型&J2EE各類名詞&LinkedBlockingQueue

IO流的分類&序列化&事件處理模型&J2EE各類名詞&LinkedBlockingQueue

IO流的分類

輸入流

主要是InputStream和Reader作為基類

輸出流

主要由outputStream和Writer作為基類

什麼是序列化?

  • 序列化:把Java物件轉換為位元組序列的過程。
  • 反序列化:把位元組序列恢復為Java物件的過程。
    用來處理物件流。
    什麼是物件流?將物件的內容進行流化。
  • 實現:實現java.io.Serializable介面,為了標註該物件是可被序列化的
  • 用途:1.永久儲存資料,儲存在檔案中2.在網路中傳輸物件的位元組序列
  • 物件的預設序列化機制寫入的內容是:物件的類,類簽名,以及非瞬態和非靜態欄位的值。

Java集合物件

Java 提供的事件處理模型是一種人機互動模型。它有三個基本要素:

  1. 事件源(Event Source):即事件發生的場所,就是指各個元件,如按鈕等,點選按鈕其實就是元件上發生的一個事件;

  2. 事件(Event):事件封裝了元件上發生的事情,比如按鈕單擊、按鈕鬆開等等;

  3. 事件監聽器(Event Listener):負責監聽事件源上發生的特定型別的事件,當事件到來時還必須負責處理相應的事件;

類中靜態語句塊僅在類載入時被執行一次

陣列複製方法

效率:System.arraycopy > clone > Arrays.copyOf > for迴圈

LinkedBlockingQueue

基於連結節點的可選限定的blocking queue 。
有界的阻塞佇列,不允許null。
執行緒安全。
這個佇列排列元素FIFO(先進先出)。 佇列的頭部是佇列中最長的元素。 佇列的尾部是佇列中最短時間的元素。 新元素插入佇列的尾部,佇列檢索操作獲取佇列頭部的元素。 連結佇列通常具有比基於陣列的佇列更高的吞吐量,但在大多數併發應用程式中的可預測效能較低。
blocking queue說明:不接受null元素;可能是容量有限的;實現被設計為主要用於生產者 - 消費者佇列;不支援任何型別的“關閉”或“關閉”操作,表示不再新增專案實現是執行緒安全的;

ConcurrentLinkedQueue

基於連結節點的無界執行緒安全佇列,該佇列的元素遵循FIFO原則。

PriorityQueue

無界佇列,不允許null值,入隊和出隊的時間複雜度是O(log(n))。
每次從佇列中取出的是具有最高優先權的元素。

  • java的封裝性:指的是將物件的狀態資訊隱藏在物件內部,不允許外部程式直接訪問物件內部資訊,通過該類提供的方法實現對內部資訊的操作訪問。
  • 反射機制:在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意一個方法和屬性

J2EE

  • web容器:給處於其中的應用程式元件(JSP,SERVLET)提供一個環境,使 JSP,SERVLET直接更容器中的環境變數接**互,不必關注其它系統問題。主要有WEB伺服器來實現。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的介面嚴格遵守J2EE規範中的WEB APPLICATION 標準。我們把遵守以上標準的WEB伺服器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean 容器。更具有行業領域特色。他提供給執行在其中的元件EJB各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的介面來獲得系統級別的服務。例如郵件服務、事務管理。

JNDI:(Java Naming & Directory Interface)JAVA命名目錄介面。主要提供的功能是:提供一個目錄系,讓其它各地的應用程式在其上面留下自己的索引,從而滿足快速查詢和定位分散式應用程式的功能。

JMS:(Java Message Service)JAVA訊息服務。主要實現各個應用程式之間的通訊。包括點對點和廣播。

JTA:(Java Transaction API)JAVA事務服務。提供各種分散式事務服務。應用程式只需呼叫其提供的介面即可。

JAF:(Java Action FrameWork)JAVA安全認證框架。提供一些安全控制方面的框架。讓開發者通過各種部署和自定義實現自己的個性安全控制策略。

RMI/IIOP:(Remote Method Invocation /internet物件請求中介協議)他們主要用於通過遠端呼叫服務。例如,遠端有一臺計算機上執行一個程式,它提供股票分析服務,我們可以在本地計算機上實現對其直接呼叫。當然這是要通過一定的規範才能在異構的系統之間進行通訊。RMI是JAVA特有的。

堆區:類中成員變數,執行緒共享
方法區:靜態儲存區。存放class檔案和靜態資料。執行緒共享
棧區:方法中的區域性變數,存放在棧區