第一篇:JAVA架構(gòu) 簡單描述(共)
Spring Framework 【Java開源 J2EE框架】
Spring是一個(gè)解決了許多在J2EE開發(fā)中常見的問題的強(qiáng)大框架。Spring提供了管理業(yè)務(wù)對象的一致方法并且鼓勵(lì)了注入對接口編程而不是對類編程的良好習(xí)慣。Spring的架構(gòu)基礎(chǔ)是基于使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構(gòu)建完關(guān)注所有架構(gòu)層的完整解決方案方面是獨(dú)一無二的。Spring提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進(jìn)了效率并且減少了可能的錯(cuò)誤。Spring的數(shù)據(jù)訪問架構(gòu)還集成了Hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務(wù)管理抽象,它能夠在各種底層事務(wù)管理技術(shù),例如JTA或者JDBC事務(wù)提供一個(gè)一致的編程模型。Spring提供了一個(gè)用標(biāo)準(zhǔn)Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務(wù)管理和其他企業(yè)事務(wù)--如果你需要--還能實(shí)現(xiàn)你自己的aspects。這個(gè)框架足夠強(qiáng)大,使得應(yīng)用程序能夠拋開EJB的復(fù)雜性,同時(shí)享受著和傳統(tǒng)EJB相關(guān)的關(guān)鍵服務(wù)。Spring還提供了可以和IoC容器集成的強(qiáng)大而靈活的MVC Web框架。【SpringIDE:Eclipse平臺(tái)下一個(gè)輔助開發(fā)插件】.Struts 【Java開源 Web框架】
Struts是一個(gè)基于Sun J2EE平臺(tái)的MVC框架,主要是采用Servlet和JSP技術(shù)來實(shí)現(xiàn)的。由于Struts能充分滿足應(yīng)用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關(guān)注。Struts把Servlet、JSP、自定義標(biāo)簽和信息資源(message resources)整合到一個(gè)統(tǒng)一的框架中,開發(fā)人員利用其進(jìn)行開發(fā)時(shí)不用再自己編碼實(shí)現(xiàn)全套MVC模式,極大的節(jié)省了時(shí)間,所以說Struts是一個(gè)非常不錯(cuò)的應(yīng)用框架?!維trutsIDE:用于Struts輔助開發(fā)的一個(gè)Eclipse插件】
Hibernate 【Java開源 持久層框架】
Hibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱?,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。Eclipse平臺(tái)下的Hibernate輔助開發(fā)工具:【Hibernate Synchronizer】【MiddlegenIDE】
第二篇:java技術(shù)架構(gòu)
Java技術(shù)體系圖
Java程序員
高級特性
反射、泛型、注釋符、自動(dòng)裝箱和拆箱、枚舉類、可變
參數(shù)、可變返回類型、增強(qiáng)循環(huán)、靜態(tài)導(dǎo)入
核心編程
IO、多線程、實(shí)體類、集合類、正則表達(dá)式、XML和屬性文件
圖形編程
AWT(Java2D/JavaSound/JMF)、Swing、SWT、JFace
網(wǎng)路編程
Applet、Socket/TCP/UDP、NIO、RMI、CORBA
Java語法基礎(chǔ)
類、抽象類、接口、最終類、靜態(tài)類、匿名類、內(nèi)部類、異常類、編碼規(guī)范
Java開發(fā)環(huán)境
JDK、JVM、Eclipse、Linux
Java核心編程技術(shù)
Java,設(shè)計(jì)而又非常精巧的語言。學(xué)習(xí)Java,須從Java開發(fā)環(huán)境開始,到Java語法,再到Java的核心API。
1.Java開發(fā)入門:Java開發(fā)環(huán)境的安裝與使用,包括JDK命令、EclipseIDE、Linux下Java程序的開發(fā)和部署等。
2.Java語法基礎(chǔ):基于JDK和Eclipse環(huán)境,進(jìn)行Java核心功能開發(fā),掌握J(rèn)ava面向?qū)ο蟮恼Z法構(gòu)成,包括類、抽象類、接口、最終類、靜態(tài)類、匿名類、內(nèi)部類、異常的編寫。
3.Java核心API:基于JDK提供的類庫,掌握三大核心功能:
A。Java核心編程:包括Java編程的兩大核心功能——Java輸入/輸出流和多線程,以及常用的輔助類庫——實(shí)體類、集合類、正則表達(dá)式、XML和屬性文件。
B。Java圖形編程:包括Sun的GUI庫AWT(Java2D、JavaSound、JMF)和Swing,IBM和GUI庫SWT和Jface;
C.Java網(wǎng)路編程:Applet組件編程,Socket編程,NIO非阻塞Socket編程、RMI和CORBA分布式開發(fā)。
4.Java高級特性:掌握J(rèn)DK1.4、JDK5.0、JDK6.0中的Java高級特性,包括反射、泛型、注釋,以及java高級特性——自動(dòng)裝箱和拆箱、枚舉類、可變參數(shù)、可變返回類型、增強(qiáng)循環(huán)、靜態(tài)導(dǎo)入等。
JavaEE初級軟件工程師
JSF框架開發(fā)技術(shù)
配置文件(頁面導(dǎo)航、后臺(tái)Bean)、JSF組件庫(JSF EL語言、HTML標(biāo)簽、事件處理、)、JSF核心庫(格式轉(zhuǎn)換、輸入驗(yàn)證、國際化)
Javaweb核心開發(fā)技術(shù)
開發(fā)環(huán)境(Eclipse、Linux)
三大組件(JSP、JavaBean、Servlet)
擴(kuò)展技術(shù)(EL、JSTL、Taglib)
網(wǎng)頁開發(fā)技術(shù)
HTML、XML、CSS、JavaScript、AJAX
數(shù)據(jù)庫設(shè)計(jì)技術(shù)
SQL、MySql、Oracle、SQLServer、JDBC
Web服務(wù)器(Tomcat/Jetty/Resin/JBossWeb)
JavaWeb核心技術(shù):
JavaWeb項(xiàng)目開發(fā)的全過程可以分解為:
網(wǎng)頁開發(fā)+數(shù)據(jù)庫設(shè)計(jì)——>JavaWeb項(xiàng)目開發(fā),其中,javaWeb由6項(xiàng)基本技術(shù)組成:JSP+JavaBean+Servlet+EL+JSTL+Taglib,而JSF正是將這6種技術(shù)進(jìn)行有機(jī)結(jié)合的技術(shù)框架:
JavaEE中級軟件工程師
四種經(jīng)典架構(gòu)SSH1、SSI1、SSH2、SSI2
Struts1表現(xiàn)層框架
入門配置、核心組件、標(biāo)簽庫、國際化、數(shù)據(jù)檢驗(yàn)、數(shù)據(jù)庫開發(fā)、Sitemesh集成、集成Hibernate/iBATIS
Struts2表現(xiàn)層框架
入門配置、核心組件、標(biāo)簽庫、國際化、數(shù)據(jù)校驗(yàn)、Sitemesh集成轉(zhuǎn)換器、攔截器、集成Hibernate/iBATIS
Spring業(yè)務(wù)層框架
入門配置、IoC容器、MVC、標(biāo)簽庫、國際化、數(shù)據(jù)校驗(yàn)、數(shù)據(jù)庫開發(fā)
Hibernate持久層框架
MySQL、Oracle、SQLServer iBATIS持久層框架
MySQL、Oracle、SQLServer
Web服務(wù)器(Tomcat/Jetty/Resin/JBossWeb)
Java高級軟件工程師
javaWeb開源技術(shù)與框架
工作流、規(guī)則引擎
搜索引擎、緩存引擎、任務(wù)調(diào)度、身份認(rèn)證
報(bào)表服務(wù)、系統(tǒng)測試、集群、負(fù)載平衡、故障轉(zhuǎn)移
JavaWeb分布式開發(fā)技術(shù)
JTA(Java事物管理)
JAAS(Java驗(yàn)證和授權(quán)服務(wù))
JNDI(Java命名和目錄服務(wù))
JavaMail(Java郵件服務(wù))
JMS(java信息服務(wù))
WebService(web服務(wù))
JCA(java連接體系)
JMS(java管理體系)
應(yīng)用服務(wù)器(JBossAS/WebLogic/WebSphere)
JavaEE系統(tǒng)架構(gòu)師
面向云架構(gòu)(COA)
COA、SaaS、網(wǎng)格計(jì)算、集群計(jì)算、分布式計(jì)算、云計(jì)算
面向資源架構(gòu)(ROA)
ROA、RESI
面向web服務(wù)架構(gòu)(SOA)
WebService、SOA、SCA、ESB、OSGI、EAI
Java設(shè)計(jì)模式
創(chuàng)建式模式:抽象工廠/建造者/工廠方法/原型/單例
構(gòu)造型模式:適配器/橋接/組合/裝飾/外觀/享元/代理
行為型模式:責(zé)任鏈/命令/解釋器/迭代子/中介者/備忘錄/觀察者/狀態(tài)/策略/模板方法/訪問者
Java與UML建模
對象圖、用例圖、組件圖、部署圖、序列圖、交互圖、活動(dòng)圖、正向工程與逆向工程
CTO首席技術(shù)官
發(fā)展戰(zhàn)略
技術(shù)總監(jiān)
團(tuán)隊(duì)提升
團(tuán)隊(duì)建設(shè)
項(xiàng)目管理
產(chǎn)品管理
第三篇:基于java技術(shù)的軟件開發(fā)架構(gòu)總結(jié)
基于java技術(shù)的軟件開發(fā)架構(gòu)總結(jié)
在具體的實(shí)現(xiàn)中,表現(xiàn)層可為Struts/JSF等,業(yè)務(wù)層、訪問層可為JavaBean或EJB等,資源層一般為數(shù)據(jù)庫。
宏觀上的層次就是這樣,在具體現(xiàn)實(shí)中,有如下幾種實(shí)現(xiàn)形式:
1,輕量級實(shí)現(xiàn)
表現(xiàn)層使用基于MVC的框架,比如Struts或JSF 業(yè)務(wù)層使用JavaBean(就是常說的Service)訪問層使用JavaBean(就是常說的DAO)優(yōu)點(diǎn):
輕量級實(shí)現(xiàn),簡單明了? 缺點(diǎn):
難以無法實(shí)現(xiàn)分布式應(yīng)用?
以下功能必須通過編程實(shí)現(xiàn)?
事務(wù)控制? 資源管理(包括組件的創(chuàng)建)?
線程安全問題?
安全性?
2,重量級J2EE實(shí)現(xiàn)
表現(xiàn)層依然是基于MVC的框架
訪問層采用實(shí)體Bean實(shí)現(xiàn),如果可能最好采用CMP,實(shí)現(xiàn)起來更簡潔。此處的實(shí)體Bean可以考慮采用本地接口
業(yè)務(wù)層一分為二,服務(wù)控制器可以由會(huì)話Bean充當(dāng),用來封裝業(yè)務(wù)流程(相當(dāng)于輕量級實(shí)現(xiàn)中的Service),也可以考慮采用本地接口;門面也可以由會(huì)話Bean充當(dāng)(一般來說無狀態(tài)會(huì)話Bean足矣),作為業(yè)務(wù)層的入口,應(yīng)該采用遠(yuǎn)程接口。優(yōu)點(diǎn):
以下功能可由EJB容器自動(dòng)實(shí)現(xiàn),或通過配置實(shí)現(xiàn)?
事務(wù)控制?
遠(yuǎn)程訪問?
線程安全?
資源管理?
安全性?
可以進(jìn)行分布式應(yīng)用?
因?yàn)椴捎昧薊JB,故部分特征可以由裝配人員來配置(比如事務(wù),安全性等),不需要在軟件中硬編碼? EJB組件有更好的重用性?
可利用容器提供的其他企業(yè)級的功能(比如集群,容錯(cuò),災(zāi)難恢復(fù)等)?
可以加入MDB(實(shí)現(xiàn)異步通訊)等技術(shù)? 缺點(diǎn):
開發(fā)難度較高?
如果不恰當(dāng)?shù)氖褂脤?shí)體Bean,會(huì)造成效率低下。如果采用CMP,則很多數(shù)據(jù)訪問的操作不能直接實(shí)現(xiàn)。?
缺少良好的開發(fā)環(huán)境?
軟件可能依賴于具體的EJB容器? EJB容器可能很貴,開發(fā)軟件也可能很貴?
3,輕量級和重量級J2EE的切換
如果項(xiàng)目有需求,并有充分的時(shí)間,還可以通過在表現(xiàn)層和業(yè)務(wù)層的交界處加入“業(yè)務(wù)代表”(JavaBean + 服務(wù)定位器實(shí)現(xiàn))來對表現(xiàn)層隱藏對業(yè)務(wù)層訪問的細(xì)節(jié)(JavaBean和EJB的訪問方式顯然不同),只需替換“業(yè)務(wù)代表”就可以切換輕量級和重量級兩種實(shí)現(xiàn)。舉例說明,一般電話上都有一個(gè)P/T開關(guān)(脈沖/音頻開關(guān)),隨著開關(guān)狀態(tài)的不同,撥號時(shí)電話機(jī)會(huì)判斷是使用脈沖撥號還是音頻撥號。
這種架構(gòu)唯一的缺點(diǎn)就是必須寫兩套實(shí)現(xiàn)代碼??
4,輕量級J2EE實(shí)現(xiàn)
訪問層通過JavaBean調(diào)用ORM框架實(shí)現(xiàn)(Hibernate,iBatis等),代碼簡潔,功能完備(相對于EJB 2.x而言),如果用的是Hibernate,可以忽略底層數(shù)據(jù)庫的差異,如果用的是iBatis,則方便對SQL進(jìn)行優(yōu)化。
業(yè)務(wù)層和訪問層依靠AOP框架(如Spring)可以在切面中實(shí)現(xiàn)事務(wù),安全性等功能,同時(shí)不影響業(yè)務(wù)代碼。如果采用Spring,其中已經(jīng)內(nèi)置了事物切面,并可以輕易的與主流ORM框架進(jìn)行整合,實(shí)現(xiàn)聲明式的事物管理。當(dāng)然,更可以使用IoC模式降低組件間的耦合性。優(yōu)點(diǎn):
可以通過AOP框架實(shí)現(xiàn)事物、安全性等功能,同時(shí)不影響業(yè)務(wù)代碼?
ORM框架比CMP更靈活,比BMP更簡潔(相對于EJB? 2.x而言),運(yùn)行效率也比較高
如果使用Spring,可以用更簡單的方式實(shí)現(xiàn)J2EE中比較復(fù)雜的功能?
無需額外的容器?
ORM和AOP框架可以找到免費(fèi)的開源實(shí)現(xiàn),降低項(xiàng)目成本(不過也有人認(rèn)為采用開源項(xiàng)目可能綜合成本更高)? 缺點(diǎn):
非官方框架,缺少文檔、技術(shù)支持和業(yè)界經(jīng)驗(yàn)?
采用技術(shù)太多,學(xué)習(xí)曲線較高,難以招到合適的程序員(咱們學(xué)員可以考慮在這方面下點(diǎn)功夫,呵呵)?
某些企業(yè)級的功能輕量級框架還不能實(shí)現(xiàn)(或獨(dú)立實(shí)現(xiàn))??????????????????????????????????????????
測試、調(diào)試均比較復(fù)雜?
另類之處:
使用BMP + Hibernate(具體做法為BMP中的持久化方法,比如ejbLoad, ejbStore等都委托給Hibernate實(shí)現(xiàn))優(yōu)點(diǎn):
借助于Hibernate強(qiáng)大的ORM功能彌補(bǔ)CMP的不足(特別是EJB-QL)缺點(diǎn):
事物不好控制
不倫不類,容易發(fā)生未知的錯(cuò)誤(比如Hibernate自身的緩存可能會(huì)于容易提供的緩存沖突)另類之處:
將業(yè)務(wù)層(也可能包含訪問層)包裝成Web Services,支持遠(yuǎn)程調(diào)用 優(yōu)點(diǎn):
借助于Web Services可以實(shí)現(xiàn)松散耦合分布式應(yīng)用,說的大一點(diǎn),就是傳說中的SOA,呵呵 缺點(diǎn):
Web Services自身效率不高,無狀態(tài),安全性差
當(dāng)然,即使不分層,也能做出軟件來,但我們應(yīng)該思考怎么做才能最好?如果說分層不好,那么不分層的優(yōu)勢又在哪里呢??如果說分層有性能的損耗,那么性能損耗在哪里呢??如果不分層,軟件工程思想中的“分而治之”的原則啟不受到了質(zhì)疑?
有人說,分層是為了減少代碼量,如果分層是為了減少代碼量,那怎么能減少,代碼的重用也許會(huì)減少一些,但是程序更多的是業(yè)務(wù),我們關(guān)心的也只是業(yè)務(wù),試問分層的意義就是為了減少代碼量?
總之我的觀點(diǎn)就是:軟件分層是必須做的。至于框架,不應(yīng)該問用不用,而應(yīng)該問用什么?要選用實(shí)踐檢驗(yàn)過的框架,畢竟實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。
二年的J2EE開發(fā)之后,我們應(yīng)該掌握了一些主流的架構(gòu)模式,總結(jié)一下:
宏觀上講,我們采用了分層的架構(gòu),將軟件分為如下的層次:
第四篇:協(xié)會(huì)組織架構(gòu)
協(xié)會(huì)組織架構(gòu)
本協(xié)會(huì)組織機(jī)構(gòu)包括會(huì)長單位、常務(wù)副會(huì)長單位、副會(huì)長單位、理事單位、監(jiān)事單位、會(huì)員單位。協(xié)會(huì)設(shè)會(huì)長、副會(huì)長和秘書處,秘書處設(shè)秘書長和若干名副秘書長。經(jīng)發(fā)起單位倡議,擬設(shè)組織機(jī)構(gòu)如下(排名不分先后順序):
一、協(xié)會(huì)會(huì)長單位
二、常務(wù)副會(huì)長
三、副會(huì)長單位(9家)
三、秘書處
秘 書 長: 副秘書長:
四、理事單位(6 家)
五、監(jiān)事單位(2家)
六、會(huì)員單位(33家)
第五篇:java總結(jié)
將數(shù)據(jù)成員聲明為靜態(tài)的,那么每次調(diào)用的時(shí)候,靜態(tài)成員的值并不會(huì)因之而改變。
如果想在主函數(shù)調(diào)用函數(shù)(不是有對象進(jìn)行調(diào)用),比如while(test()),那么test()必須聲明為靜態(tài)的。
構(gòu)造器,在c++中叫構(gòu)造函數(shù),也可以叫做構(gòu)造方法,每當(dāng)創(chuàng)建一個(gè)對象的時(shí)候,就會(huì)調(diào)用構(gòu)造器。
構(gòu)造器可以分為默認(rèn)構(gòu)造器和帶參數(shù)的構(gòu)造器,默認(rèn)構(gòu)造器就是無參的構(gòu)造器,構(gòu)造器的作用是使類中的成員初始化。
。構(gòu)造器的互相調(diào)用可以使用this,主要就是在構(gòu)造器內(nèi)使用this(參數(shù)),里面的參數(shù)個(gè)數(shù)和類型決定調(diào)用什么構(gòu)造器。
java中初始化的順序,首先是創(chuàng)建一個(gè)對象,如果是創(chuàng)建的靜態(tài)的對象和非靜態(tài)的對象,先調(diào)用靜態(tài)的對象,然后系統(tǒng)就會(huì)在堆中給他分配內(nèi)存空間,如果在靜態(tài)對象的類中有靜態(tài)的成員類和非靜態(tài)的成員類,先初始化靜態(tài)的成員類,然后在調(diào)用非靜態(tài)的成員類,最后調(diào)用自己的構(gòu)造函數(shù),如果在主函數(shù)創(chuàng)建的是非靜態(tài)的對象,如果創(chuàng)建的類中有靜態(tài)成員類,不進(jìn)行初始化,只進(jìn)行非成員類的初始化,最后執(zhí)行自己的構(gòu)造函數(shù)。
引進(jìn)類庫的時(shí)候要注意如果引進(jìn)的是同名的類或者方法,在不使用的情況下,系統(tǒng)不會(huì)報(bào)錯(cuò),但是,一不小心就會(huì)有錯(cuò)誤。,但是,如果類中的私有方法不能被繼承,在向上轉(zhuǎn)型的時(shí)候就會(huì)出錯(cuò),所以多態(tài)并不適合私有方法。而final不能被覆蓋,所以在運(yùn)行的時(shí)候也會(huì)出錯(cuò)。如果使用static,父類的靜態(tài)方法會(huì)被子類的靜態(tài)方法隱藏,而父類是靜態(tài),子類不是靜態(tài)的,則會(huì)編譯出錯(cuò)。
空白final增加了程序的靈活性,但必須在構(gòu)造器中給他賦值(可以是有參的構(gòu)造器,也可以是無參的構(gòu)造器),你可以定義一個(gè)final類,里面的屬性是可以引用改變它。
抽象類,如果父類是抽象類,則需要把父類的方法在子類中全部實(shí)現(xiàn),如果父類不是抽象類,而父類的父類是抽象類,不需要將方法實(shí)現(xiàn)。如果方法是抽象的,那么就需要把類也定義成抽象的。
如果抽象類有final,static定義的方法,則子類中的方法不需要實(shí)現(xiàn)的。私有的更沒法實(shí)現(xiàn)了。因此,當(dāng)我們實(shí)現(xiàn)一個(gè)接口的時(shí)候,就需要將接口的方法實(shí)現(xiàn),是因?yàn)榻涌诰褪浅橄蟮?,在接口中所有的方法都沒有實(shí)例化。
在java中存在著內(nèi)部類,就是在類中定義類,這跟內(nèi)部成員類是有區(qū)別,內(nèi)部類可以將方法和屬性在這個(gè)類中實(shí)現(xiàn)初始化形如A.a a=t.new a()的形式。當(dāng)然也有匿名內(nèi)部類等。下面說下容器也叫集合。
容器有set list queue和map
你可以聲明一個(gè)容器來保存一個(gè)對象或多個(gè)對象,通常我們add方法和get方法將某個(gè)對象加入容器和得到加入容器的對象,如果父類添加到
容器的對象,那么子類也可以加入到容器中,但是,如果是子類的子類,那么你就需要提示當(dāng)前的是什么類型的,否則的話,編輯器將會(huì)報(bào)錯(cuò),下面來討論下加入容器中的順序與重復(fù)值的問題,list必須按照順序添加元素,而set不能有重復(fù)元素。
剛剛我們討論add方法每次加一個(gè)元素到容器中,那么是否可以天健一組元素到容器中那,那么,使用我們可以(容器對象)。addall方法
運(yùn)行速度相對較快,我們還可以使用Collections.addall(),把一些值賦給某個(gè)對象,而這種方法似乎方便的多。
還有許多排序方法,當(dāng)然,你可以再實(shí)踐中檢驗(yàn)當(dāng)前的排序問題。
下面有 continous,indexof remove等一些方法,還是需要在實(shí)踐中檢驗(yàn)。
迭代器是個(gè)好東西,他可以使容器的類型發(fā)生多用,要首先見對象轉(zhuǎn)換成iterator類型,那么就需要調(diào)用iterator()方法,下面就需要檢驗(yàn)它是否
有下一個(gè)值,如果有的話,就把它的下一個(gè)值傳給當(dāng)前容器的對象,本質(zhì)上傳的應(yīng)該是引用,下面就可以輸出當(dāng)前的引用,但是你可以賦給toString方法
使他可以傳進(jìn)一個(gè)對象進(jìn)來。對象的getfirst()和element()方法傳的是當(dāng)前對象的頭對象,如果為空,則拋出異常,peek()方法,如果列表為空,則
返回null。remove和removefirst()如果列表為空,則返回異常,否則,返回移除當(dāng)前的對象,poll()方法當(dāng)列表為空時(shí),返回null,addfirst和add和addlast
一樣都是把對象加到列表的尾部。
棧是先進(jìn)后出或后進(jìn)先出的容器就像子彈夾一樣。模擬下?? 就是addfirst()不斷的將元素加到列表的末尾,然后,removefirst將的第一個(gè)元素去掉。
set元素的鍵 值相對,鍵使用的是keyset方法,值是value是方法。要想鍵值相對,只需要使用兩個(gè)for循環(huán)。
queue是先進(jìn)先出的容器??? 使用offer方法將對象依次向后排,然后使用removefirst就可以發(fā)現(xiàn)隊(duì)列的性質(zhì)。
java異常
異常通常來捕捉錯(cuò)誤,這些錯(cuò)誤,分為Error錯(cuò)誤,這些錯(cuò)誤如 內(nèi)部內(nèi)部錯(cuò)誤和資源耗盡錯(cuò)誤,通常是不可預(yù)知的,我們似乎通知用戶,無能為力,第二種是運(yùn)行錯(cuò)誤,在運(yùn)行錯(cuò)誤中,如果是文件操作,你不捕捉異常,系統(tǒng)將會(huì)報(bào)錯(cuò),而令一個(gè)錯(cuò)誤就是語法,這種錯(cuò)誤你可以盡可能的避免,但是有些錯(cuò)誤,在編程的時(shí)候還需要提醒用戶,而且盡可能的捕捉。
在異常處理的過程中如果在try{}中加入return語句,那么finally中的語句也會(huì)被執(zhí)行,拋出異常后,try{}下面的語句將不會(huì)被執(zhí)行,finally中的語句一定被執(zhí)行,但是如果finally語句
放在try{}和catch{}之間,那就悲劇了,可能會(huì)發(fā)生異常丟失,在構(gòu)造器中盡量不要捕捉異常。通常情況下,你知道怎樣捕捉異常才會(huì)去捕捉異常。
java
IO系統(tǒng)
javaIO系統(tǒng)通常進(jìn)行的文件的操作和網(wǎng)絡(luò)的操作和內(nèi)存的操作。有輸入流和輸出流,輸入流就是把文件或者網(wǎng)絡(luò)中的東西寫到內(nèi)存,輸出流就是把東西輸入到文件等。
輸入流通常使用的是write()方法將數(shù)據(jù)寫到文件。輸出流通常是通過read()方法將數(shù)據(jù)讀出來。在文件的外面可以加上緩沖流? 或者dateoutputstream來對整數(shù),double等進(jìn)行
操作。加入緩沖流可以提高速度,可以1行1行的讀。對文件進(jìn)行處理通常是字節(jié)和字符,有時(shí)候我們可以講字節(jié)轉(zhuǎn)化成字節(jié)。還有對壓縮文件的讀取等等。
java 線程
所謂線程? 就是一個(gè)程序有多個(gè)任務(wù)在執(zhí)行,每個(gè)任務(wù)都需要使他啟動(dòng),通常情況下需要將線程與集合聯(lián)系在一起,但在集合中有安全的和不安全的。那么線程將同步運(yùn)行。但是有時(shí)候我們通過start()方法來運(yùn)行線程是相當(dāng)消耗系統(tǒng)資源的,因此,java se5提供了一中
新的方法來啟動(dòng)線程,我們可以通過限制線程的數(shù)目來減小資源的浪費(fèi),如果我們想每次只啟動(dòng)一個(gè)線程,而且把這個(gè)線程結(jié)束,那么
就可以限制線程的數(shù)目為一。
當(dāng)然如果我們想加入一個(gè)線程,通常情況下,我們可以通過加入join()的方法,他會(huì)在某個(gè)線程結(jié)束之后,啟動(dòng)join()加入的線程,這個(gè)線程是可選的,如果這個(gè)線程被打斷了,通常這個(gè)線程會(huì)拋出異常,然后,join()方法加入的線程會(huì)立刻被執(zhí)行。
下面的就是圖形界面了。
可以添加按鈕,文本框,密碼框,和各種布局管理器。以及如何實(shí)現(xiàn)監(jiān)聽等等。感覺太沒意思了
下面就說下坦克大戰(zhàn)如何實(shí)現(xiàn)的。也就是多線程,圖形界面,各種類,監(jiān)聽,集合等構(gòu)成的像放電影一樣的由你操作的游戲。當(dāng)我們從鍵盤中進(jìn)行前進(jìn)或者退后的操作時(shí),那么面板中必須不斷重新畫出這個(gè)坦克,才能使我們感覺坦克在移動(dòng),那么以前的坦克哪里去了,那他肯定是垃圾了,所以一定會(huì)被回收,當(dāng)然畫出子彈的狀況也是如此。
而敵人的坦克也是這樣畫的,只不過是個(gè)死循環(huán)。