freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

河南師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科畢業(yè)論文(編輯修改稿)

2024-12-05 10:26 本頁面
 

【文章內(nèi)容簡介】 s)是 Apache 軟件組織開發(fā)的一種作為基于 NIO 的一個(gè)多功能網(wǎng)絡(luò)應(yīng)用程序框架 ,使用 Java 技術(shù)實(shí)現(xiàn) ,可以幫助用戶快速構(gòu)建穩(wěn)定、高性能的網(wǎng)絡(luò)應(yīng)用程序。該框架的主要特點(diǎn)有 :基于 Java NIO 設(shè)計(jì)。巧妙地采用松耦合架構(gòu);可靈活地加載過濾器機(jī)制;單元測試更容易實(shí)現(xiàn);可自定義線程的數(shù)量,以提高 運(yùn)行于多處理器上的性能 采用回調(diào)的方式完成調(diào)用.線程的使用更容易[7]。通過 Java 異步輸入輸出 (NIO)[8]技術(shù) ,可以方便的支持 TCP/UDP 協(xié)議 。靈活、可配置的線程模型 ,這對于網(wǎng)絡(luò)通信程序來說尤其重要 , 用戶可以根據(jù)實(shí)際需要選擇符合自身的線程模型 。多編碼方式支持 ,既可以使用字節(jié)流或者文本 ,也可以使用其它編碼方式 ,如 編碼等。 MINA 框架的系統(tǒng)結(jié)構(gòu)如圖二 所示。 圖二: MINA 系統(tǒng)機(jī)構(gòu)示意圖 河南師范大學(xué)本科畢業(yè)設(shè)計(jì) 7 MINA 框架主要由 I/O 服務(wù)管理 (IoService)、 I/O 過濾器鏈 (IoFilterChain)、 I/O 處理器 (IoHandler)和 I/O 會(huì)話管理 (IoSession)等模塊組成。 IoService 負(fù)責(zé)與遠(yuǎn)端客戶進(jìn)行通信底層操作 ,遠(yuǎn)端發(fā)送的數(shù)據(jù)首先由 IoService 接收并轉(zhuǎn)化為系統(tǒng)內(nèi)部可識(shí)別的事件 , 它的兩個(gè)實(shí)現(xiàn)類 IoAcceptor 和 IoConnector 分別對應(yīng)服務(wù)器端和客戶端的 I/O 服務(wù)管理類 。 然后 ,IoFilterChain 接收由 IoService 轉(zhuǎn)化的事件 ,并使用鏈中包含的過濾器(IoFilter)進(jìn)行處理 ,如日志記錄、編碼 /解碼、壓縮和黑名單過濾等 。最 后 ,IoHandler 負(fù)責(zé)處理由過濾器鏈處理后的事件 , 業(yè)務(wù)邏輯大多在本模塊中實(shí)現(xiàn)。處理完后 ,由 IoSession 負(fù)責(zé)與遠(yuǎn)端客戶進(jìn)行交互 ,即使用 IoSession 向遠(yuǎn)端發(fā)送的消息 ,該消息的發(fā)送順序與接收的處理順序剛好相反 [9](如圖二 )。 Mina 提供了時(shí)間驅(qū)動(dòng)和異步操作的編程模型。當(dāng)前發(fā)行的 Mhm 版本支持基于 Java NIO技術(shù)的 TCP/ UDP 應(yīng)用程序開發(fā)、串口通訊程序,且 Mina 所支持的功能也在進(jìn)一步的擴(kuò)展中。因此,在 Java 應(yīng)用程序中使用 Mhm 框架可以不用考慮底層 I/ 0 實(shí)現(xiàn)以及線程并發(fā)等復(fù)雜工作, 使開發(fā)人員能夠?qū)⒏嗟木ν度氲綐I(yè)務(wù)邏輯和開發(fā)中,故被廣泛采用 [10]。 和 io 的區(qū)別和比較 回顧 IO 在介紹 NIO 之前,有必要了解傳統(tǒng)的 I/O 操作的方式。以網(wǎng)絡(luò)應(yīng)用為例,傳統(tǒng)方式需要監(jiān)聽一個(gè) ServerSocket,接受請求的連接為其提供服務(wù)(服務(wù)通常包括了處理請求并發(fā)送響應(yīng))圖一是服務(wù)器的生命周期圖,其中標(biāo)有粗黑線條的部分表明會(huì)發(fā)生 I/O 阻塞。 圖三 河南師范大學(xué)本科畢業(yè)設(shè)計(jì) 8 可以分析創(chuàng)建服務(wù)器的每個(gè)具體步驟。 ( 1)首先創(chuàng)建 ServerSocket ServerSocket server=new ServerSocket( 10000); ( 2)然后接受新的連接請求 Socket newConnection=(); 對于 accept 方法的調(diào)用將造成阻塞,直到 ServerSocket 接受到一個(gè)連接請求為止。一旦連接請求被接受,服務(wù)器可以讀客戶 socket 中的請求。 InputStream in = ()。 InputStreamReader reader = new InputStreamReader(in)。 BufferedReader buffer = new BufferedReader(reader)。 Request request = new Request()。 while(!()) { String line = ()。 (line)。} 這樣的操作有兩個(gè)問題,首先 BufferedReader 類的 readLine()方法在其緩沖區(qū)未滿時(shí)會(huì)造成線程阻塞,只有一定數(shù)據(jù)填滿了緩沖區(qū)或者客戶關(guān)閉了套接字,方法才會(huì)返回。其次,它回產(chǎn)生大量的垃圾, BufferedReader 創(chuàng)建了緩沖區(qū)來從客戶套接字讀入數(shù)據(jù),但是同樣創(chuàng)建了一些字符串存儲(chǔ)這些數(shù)據(jù)。雖然 BufferedReader 內(nèi)部提供了 StringBuffer處理這一問題,但是所有的 String 很快變成了垃圾需要回收。同樣的問題在發(fā)送響應(yīng)代碼中也存在: Response response = ()。 OutputStream out = ()。 InputStream in = (); int ch; while(1 != (ch = ())) { (ch)。 } ()。 類似的,讀寫操作被阻塞而且向流中一次寫入一個(gè)字符會(huì)造成效率低下,所以應(yīng)該使河南師范大學(xué)本科畢業(yè)設(shè)計(jì) 9 用緩沖區(qū),但是一旦使 用緩沖,流又會(huì)產(chǎn)生更多的垃圾。傳統(tǒng)的解決方法通常在 Java 中處理阻塞 I/O 要用到線程(大量的線程 (Thread))。一般是實(shí)現(xiàn)一個(gè)線程池用來處理請求, 如圖四: 圖四 線程使得服務(wù)器可以處理多個(gè)連接,但是它們也同樣引發(fā)了許多問題。每個(gè)線程擁有自己的??臻g并且占用一些 CPU 時(shí)間,耗費(fèi)很大,而且很多時(shí)間是浪費(fèi) 在阻塞的 I/O 操作 上,沒有有效的利用 CPU。 NIO 的介紹和新 I/O 介紹 NIO Java 具有安全性、簡易性、健壯性以及平臺(tái)無關(guān)性等特點(diǎn),但用 Java 平臺(tái)編 寫的 Socket 系統(tǒng),在多客戶端/服務(wù)器模式下,易受到大置線程開銷的影響,這 樣既導(dǎo)致了性能問題又缺乏可伸縮性。為解決這個(gè)問題, Java 平臺(tái)的制訂者引 入了非阻塞 I/O 機(jī)制 [11]。 NIO 的非阻塞 I/O 機(jī)制的核心思想是多路復(fù)用,即將事物多路分離并分派 到各自相應(yīng)的事件處理程序中去.它主要是圍繞選擇器和通道構(gòu)建的 [12]。由于 NIO 的非阻塞 I/O 機(jī)制有效地解決了多線程服務(wù)器存在的線程開銷問題,同時(shí) 又避免了輪詢問題.在性能上優(yōu)于傳統(tǒng)的阻塞式通訊,因此被廣泛的大型的 河南師范大學(xué)本科畢業(yè)設(shè)計(jì) 10 Java 應(yīng)用程序所采用。 NIO 包( .*)引入了四個(gè)關(guān)鍵的抽象數(shù)據(jù)類型,它們共同解決傳統(tǒng)的 I/O 類中的一些問題。 Buffer:它是包含數(shù)據(jù)且用于讀寫的線形表結(jié)構(gòu)。其中還提供了一個(gè)特殊類用于內(nèi)存映射文件的 I/O 操作。 Charset:它提供 Unicode 字符串影射到字節(jié)序列以及逆影射的操作。 Channels:包含 socket, file 和 pipe 三種管道,它實(shí)際上是雙向交流的通道。 Selector:它將多元異步 I/O 操作集中到一個(gè)或多個(gè)線程中(它可以被看成是 Unix 中select()函數(shù)或 Win32 中 WaitForSingleEvent()函數(shù)的面向?qū)ο蟀姹荆? 新 I/O 1) Buffer 傳統(tǒng)的 I/O 不斷的浪費(fèi)對象資源(通常是 String)。新 I/O 通過使用 Buffer 讀寫數(shù)據(jù)避免了資源浪費(fèi)。 Buffer 對象是線性的,有序的數(shù)據(jù)集合,它根據(jù)其類別只包含唯一的數(shù)據(jù)類型。 類描述 包 含 字 節(jié) 類 型 。 可 以 從 ReadableByteChannel 中讀在 WritableByteChannel 中寫 包含字節(jié)類型,直接在內(nèi)存某一區(qū)域映射 包含字符類型,不能寫入通道 包含 double 類型,不能寫入通道 包含 float 類型 包含 int 類型 包含 long 類型 包含 short 類型 可以通過調(diào)用 allocate(int capacity)方法或者 allocateDirect(int capacity)方法 分 配 一 個(gè) Buffer 。 特 別 的 , 你 可 以 創(chuàng) 建 MappedBytesBuffer 通 過 調(diào) 用(int mode,long position,int size)。直接( direct) buffer 在內(nèi)存中分配一段連續(xù)的塊并使用本地訪問方法讀 寫數(shù)據(jù)。非直接 (nondirect)buffer 通過使用Java 中的數(shù)組訪問代碼讀寫數(shù)據(jù)。有時(shí)候必須使用非直接緩沖例如使用任何的 wrap 方法(如 (byte[]))在 Java 數(shù)組基礎(chǔ)上創(chuàng)建 buffer。 2)字符編碼 河南師范大學(xué)本科畢業(yè)設(shè)計(jì) 11 向 ByteBuffer 中存放數(shù)據(jù)涉及到兩個(gè)問題:字節(jié)的順序和字符轉(zhuǎn)換。 ByteBuffer 內(nèi)部通過 ByteOrder 類處理了字節(jié)順序問題,但是并沒有處理字符轉(zhuǎn)換。事實(shí)上, ByteBuffer沒有提供方法讀寫 String。 處理了字符轉(zhuǎn)換問題。它通過構(gòu)造 CharsetEncoder 和CharsetDecoder 將字符序列轉(zhuǎn)換成字節(jié)和逆轉(zhuǎn)換。 開發(fā)平臺(tái)與工具 J2EE 平臺(tái) J2EE ,即是 Java2 平臺(tái)企業(yè)版( Java 2 Platform Enterprise Edition),是原 Sun公司(現(xiàn)已被甲骨文公司收購)為企業(yè)級(jí)應(yīng)用推出的標(biāo)準(zhǔn)平臺(tái) [13]。它簡化了企業(yè)解決方案的開發(fā)、部署和管理相關(guān)復(fù)雜問題的體系結(jié)構(gòu), J2EE 技術(shù)的基礎(chǔ)就是核心 Java 平臺(tái)或Java 2 平臺(tái)的標(biāo)準(zhǔn)版,其最終目的就是成為一個(gè)能夠使企業(yè)開發(fā)者大幅縮短投放市場時(shí)間的體系結(jié)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1