javanio框架
Ⅰ 最近看到java一個開源的nio框架MINA。想問MINA2.0有哪些缺陷。時間問題等不及慢慢看完MINA源碼。
mina一般是嵌入伺服器中的,要是標準的C/S還是用C++寫的吧。
Ⅱ java.nio.channels.ClosedSelectorException大概一秒鍾拋一次這個異常,怎麼破
建議你先網上搜搜java.nio.channels.ClosedSelectorException這個異常的解決方式,如果沒有再自己在代碼中捕獲這異常,然後什麼都不處理,捕獲異常你知道吧
Ⅲ java.nio相關及apache的mina框架求助
你就別置頂了 這么多天了!花點時間花點時間自己也就做出來了!
不就是socket通訊嘛,網上類似 java.nio斷點續傳的沒發現的話,那其他語言的斷點續傳的多的是啊? 原理就是 比如說客戶端讀取一段文件 1000位元組 同時建立一個記錄文件 記錄傳輸狀態
比如說 傳輸中 已完成之類的狀態
服務端接收文件,寫到一個臨時文件里,並建立一個記錄文件,記錄接收到哪兒了。
如此循環,一直到完成。 然後將這臨時文件改為目標文件名
如果通訊有中斷,客戶端再發起socket連接,第一步就是讀取記錄文件,如果有未完成的文件傳輸,就請求服務端返回服務端接收文件的位置。 客戶端就知道需要從哪兒開始讀。繼續讀 繼續發送
Ⅳ 如何學習Java的NIO
方法/步驟
1
你需要精通面向對象分析與設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該十分了解UML,尤其是class,object,interaction以及statediagrams。
2
你需要學習JAVA語言的基礎知識以及它的核心類庫(collections,serialization,streams,networking, multithreading,reflection,event,handling,NIO,localization,以及其他)。
你應該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類文件並且明白一些基本的匯編指令。
你應該了解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類文件並且明白一些基本的匯編指令。
如果你將要寫客戶端程序,你需要學習WEB的小應用程序(applet),必需掌握GUI設計的思想和方法,以及桌面程序的SWING,AWT, SWT。你還應該對UI部件的JAVABEAN組件模式有所了解。JAVABEANS也被應用在JSP中以把業務邏輯從表現層中分離出來。
你需要學習java資料庫技術,如JDBCAPI並且會使用至少一種persistence/ORM構架,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(國產JDO紅工廠軟體)或者iBatis。
你還應該了解對象關系的阻抗失配的含義,以及它是如何影響業務對象的與關系型資料庫的交互,和它的運行結果,還需要掌握不同的資料庫產品運用,比如:oracle,mysql,mssqlserver。
你需要學習一門輕量級應用程序框架,例如Spring,PicoContainer,Avalon,以及它們的IoC/DI風格(setter,constructor,interfaceinjection)。
你需要學習企業級JavaBeans(EJB)以及它們的不同組件模式:Stateless/StatefulSessionBeans,EntityBeans(包含Bean- ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者 Message-DrivenBeans(MDB)。
你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs)
你應該熟練掌握一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜歡VI或EMACS來編寫文件。隨便你用什麼了:)
JAVA(精確的說是有些配置)是冗長的,它需要很多的人工代碼(例如EJB),所以你需要熟悉代碼生成工具,例如XDoclet。
13
你需要熟悉一種單元測試體系(JNunit),並且學習不同的生成、部署工具(Ant,Maven)。
Ⅳ java nio並發量可以達到多少
我用的JAVA NIO,一般常用的高並發IO框架,也是用的這個做擴展。
Ⅵ java nio 伺服器架構有哪些
1,一個小的線程池負責dispatch NIO事件。
2,注冊事件,即操作selecter時,要使用一個同步鎖(即Architecture of a Highly Scalable NIO-Based Server一文中的guard對象),即對同一個selector的操作是互斥的。
3,這個小的線程池不處理邏輯業務,大小可以是Runtime.getRuntime().availableProcessors() + 1,即你系統有效CPU個數+1。這是因為我們假設有一個線程專門處理accept事件,
而其他線程處理read/write操作。
Ⅶ java nio並發訪問問題,我現在利用nio框架制伺服器的並發訪問,SelectionKey多線程
其實不要太迷信nio。這個東西如果你使用不當,效率還不如io高。
而且,使用了nio會造成和以前的代碼的不兼容。
當然,你是高手,那就例外了。
Ⅷ 有人能說清楚JAVA7 NIO NETTY IOCP之間的聯系嗎
早期網路訪問的做法是,連接以後,就等待對方應答,對方沒有應答,代碼就會死在那裡。這稱為阻塞式通訊。
後來,java 1.4 開始引入了nio, nio是非阻塞式網路通訊. 其實可以理解為系統去掃描埠,如果有返回就處理,沒有的話,代碼就繼續做別的事。
不過nio的編碼比較麻煩,雖然性能好,可是很多代碼還在用阻塞,因為代碼簡單,很多例子上也是socket的。
然後高麗人開發了apache的mina,可以快速開發nio。
後來高麗人離開apache,開發了netty,提供了另一種調用nio的framework。
現在mina和netty是最常用的nio框架。
至於iocp,這個是個系統級的實現,其實類似nio,不過是通過操作系統來實現的。而且只支持windows。java 7以後把iocp引入,提供了快速開發的介面。不過不是很推薦使用。系統實現就表示iocp不再是跨平台的。那麼實用性就差很多了。
Ⅸ 什麼是NIO框架
Java NIO框架MINA用netty性能和鏈接數、並發等壓力測試參數好於mina。
特點:
1。NIO彌補了原來的I/O的不足,它再標准java代碼中提供了高速和面向塊的I/O
原力的I/O庫與NIO最重要的區別是數據打包和傳輸方式的不同,原來的I/O以流的方式處理數據,而NIO以塊的方式處理數據;
2.NIO以通道channel和緩沖區Buffer為基礎來實現面向塊的IO數據處理,MINA是開源的。
JavaNIO非堵塞應用通常適用用在I/O讀寫等方面,我們知道,系統運行的性能瓶頸通常在I/O讀寫,包括對埠和文件的操作上,過去,在打開一個I/O通道後,read()將一直等待在埠一邊讀取位元組內容,如果沒有內容進來,read()也是傻傻的等,這會影響我們程序繼續做其他事情,那麼改進做法就是開設線程,讓線程去等待,但是這樣做也是相當耗費資源的。
Java NIO非堵塞技術實際是採取Reactor模式,或者說是Observer模式為我們監察I/O埠,如果有內容進來,會自動通知我們,這樣,我們就不必開啟多個線程死等,從外界看,實現了流暢的I/O讀寫,不堵塞了。
Java NIO出現不只是一個技術性能的提高,會發現網路上到處在介紹它,因為它具有里程碑意義,從JDK1.4開始,Java開始提高性能相關的功能,從而使得Java在底層或者並行分布式計算等操作上已經可以和C或Perl等語言並駕齊驅。
如果至今還是在懷疑Java的性能,說明思想和觀念已經完全落伍了,Java一兩年就應該用新的名詞來定義。從JDK1.5開始又要提供關於線程、並發等新性能的支持,Java應用在游戲等適時領域方面的機會已經成熟,Java在穩定自己中間件地位後,開始蠶食傳統C的領域。
原理:
NIO 有一個主要的類Selector,這個類似一個觀察者,只要我們把需要探知socketchannel告訴Selector,我們接著做別的事情,當有事件發生時,他會通知我們,傳回一組SelectionKey,我們讀取這些Key,就會獲得我們剛剛注冊過的socketchannel,然後,我們從這個Channel中讀取數據,放心,包準能夠讀到,接著我們可以處理這些數據。Selector內部原理實際是在做一個對所注冊的channel的輪詢訪問,不斷的輪詢(目前就這一個演算法),一旦輪詢到一個channel有所注冊的事情發生。比如數據來了,他就會站起來報告,交出一把鑰匙,讓我們通過這把鑰匙來讀取這個channel的內容。在使用上,也在分兩個方向,一個是線程處理,一個是用非線程,後者比較簡單。
Ⅹ java nio框架netty客戶端連接成功後為什麼會自動掉線
其實不要太迷信nio。這個東西如果你使用不當,效率還不如io高。 而且,使用了nio會造成和以前的代碼的不兼容。 當然,你是高手,那就例外了。