第一篇:總結Java部分的框架和開源項目
總結Java部分的框架和開源項目
文章分類:Java編程
下面我將為大家總結一下Java部分的框架和開源項目,讓您從總的方面對Java部分框架有一定的了解。
Spring Framework【Java開源JEE框架】
Spring是一個解決了許多在J2EE開發(fā)中常見的問題的強大框架。Spring提供了管理業(yè)務對象的一致方法并且鼓勵了注入對接口編程而不 是對類編程的良好習慣。Spring的架構基礎是基于使用JavaBean屬性的InversionofControl容器。然而,這僅僅是完整圖景中的 一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。
Spring提供了唯一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。Spring的數據訪問架構 還集成了Hibernate和其他O/Rmapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或 者JDBC事務提供一個一致的編程模型。
Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業(yè)事務--如果你需要--還能實現 你自己的aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統(tǒng)EJB相關的關鍵服務。Spring還提供了可以和 IoC容器集成的強大而靈活的MVCWeb框架?!維pringIDE:Eclipse平臺下一個輔助開發(fā)插件】
WebWork【Java開源Web開發(fā)框架】
WebWork是由OpenSymphony組織開發(fā)的,致力于組件化和代碼重用的拉出式MVC模式J2EEWeb框架。WebWork目前最 新版本是2.1,現在的WebWork2.x前身是RickardOberg開發(fā)的WebWork,但現在WebWork已經被拆分成了Xwork1和 WebWork2兩個項目。Xwork簡潔、靈活功能強大,它是一個標準的Command模式實現,并且完全從web層脫離出來。
Xwork提供了很多核心功能:前端攔截機(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言(OGNL– theObjectGraphNotationLanguage),IoC(InversionofControl倒置控制)容器等。WebWork2建 立在Xwork之上,處理HTTP的響應和請求。WebWork2使用ServletDispatcher將HTTP請求的變成Action(業(yè)務層 Action類),session(會話)application(應用程序)范圍的映射,request請求參數映射。
WebWork2支持多視圖表示,視圖部分可以使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了對AJAX的支持,這支持是構建在DWR與Dojo這兩個框架的基礎之上.【EclipseWork:用于WebWork 輔助開發(fā)的一個Eclipse插件】
Struts【Java開源Web開發(fā)框架】
Struts是一個基于SunJ2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。由于Struts能充分滿足應用開發(fā) 的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽 和信息資源(messageresources)整合到一個統(tǒng)一的框架中,開發(fā)人員利用其進 行開發(fā)時不用再自己編碼實現全套MVC模式,極大的節(jié)省了時間,所以說Struts是一個非常不錯的應用框架?!維trutsIDE:用于Struts輔 助開發(fā)的一個Eclipse插件】
Hibernate【Java開源持久層框架 】
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象 編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的 Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。Eclipse平臺下的 Hibernate輔助開發(fā)工具:【HibernateSynchronizer】【MiddlegenIDE】
Quartz【Java開源調度框架】
Quartz是OpenSymphony開源組織在Jobscheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合 也可以單獨使用。Quartz可以用來創(chuàng)建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的日程序表。Jobs可以做成標準的Java組件或 EJBs。Quartz的最新版本為Quartz1.5.0。
Velocity【Java開源模板引擎】
Velocity是一個基于java的模板引擎(templateengine)。它允許任何人僅僅簡單的使用模板語言(templatelanguage)來引用由java代碼定義的對象。當Velocity應用于web開發(fā)時,界面設計人員可以和java程序開發(fā)人員 同步開發(fā)一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發(fā)人員關注業(yè)務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方 案。Velocity的能力遠不止web站點開發(fā)這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以 被當作一個獨立工具來產生源代碼和報告,或者作為其他系統(tǒng)的集成組件使用。Velocity也可以為Turbineweb開發(fā)架構提供模板服務(templateservice)。Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發(fā)?!綱eloEclipse:Velocity在Eclipse平臺下的一個輔助開發(fā)插件】
iBATIS【Java開源持久層框架】
使用ibatis提供的ORM機制,對業(yè)務邏輯實現人員而言,面對的是純粹的Java對象,這一層與通過Hibernate實現ORM而言基本 一致,而對于具體的數據操作,Hibernate會自動生成SQL語句,而ibatis則要求開發(fā)者編寫具體的SQL語句。相對Hibernate等―全 自動‖ORM機制而言,ibatis以SQL開發(fā)的工作量和數據庫移植性上的讓步,為系統(tǒng)設計提供了更大的自由空間。作為―全自動‖ORM實現的一種有益 補充,ibatis的出現顯得別具意義。
CompiereERP&CRM【Java開源ERP與CRM系統(tǒng)】
CompiereERP&CRM為全球范圍內的中小型企業(yè)提供綜合型解決方案,覆蓋從客戶管理、供應鏈到財務管理的全部領域,支持多組 織、多幣種、多會計模式、多成本計算、多語種、多稅制等國際化特性。易于安裝、易于實施、易于使用。只需要短短幾個小時,您就可以使用申購-采購-發(fā)票-付款、報價-訂單-發(fā)票-收款、產品與定價、資產管理、客戶關系、供應商關系、員工關系、經營業(yè)績分析等強大功能了。
RollerWeblogger【Java開源Blog博客】
這個weblogging設計得比較精巧,源代碼是很好的學習資料。它支持weblogging應有的特性如:評論功能,所見即所得HTML編 輯,TrackBack,提供頁面模板,RSSsyndication,blogroll管理和提供一個XML-RPC接口。
Eclipse【Java開源IDE】
Eclipse平臺是IBM向開發(fā)源碼社區(qū)捐贈的開發(fā)框架,它之所以出名并不是因為IBM宣稱投入開發(fā)的資金總數—4千萬美元,而是因為如此巨 大的投入所帶來的成果:一個成熟的、精心設計的以及可擴展的體系結構。
XPlanner【Java開源項目管理】
XPlanner一個基于Web的XP團隊計劃和跟蹤工具。XP獨特的開發(fā)概念如iteration、userstories 等,XPlanner都提供了相對應的的管理工具,XPlanner支持XP開發(fā)流程,并解決利用XP思想來開發(fā)項目所碰到的問題。XPlanner特點 包括:簡單的模型規(guī)劃,虛擬筆記卡(Virtualnotecards),iterations、userstories與工作記錄的追蹤,未完成 stories將自動迭代,工作時間追蹤,生成團隊效率,個人工時報表,SOAP界面支持。
HSQLDB【Java開源開源數據庫】
HSQLDB(HypersonicSQL)是純Java開發(fā)的關系型數據庫,并提供JDBC驅動存取數據。支持ANSI-92標準SQL語 法。而且他占的空間很小。大約只有160K,擁有快速的數據庫引擎。
Liferay【Java開源門戶系統(tǒng)】
代表了完整的J2EE應用,使用了Web、EJB以及JMS等技術,特別是其前臺界面部分使用Struts框架技術,基于XML的 portlet配置文件可以自由地動態(tài)擴展,使用了WebServices來支持一些遠程信息的獲取,使用ApahceLucene實現全文檢索功能。
主要特點:
◆提供單一登陸接口,多認證模式(LDAP或SQL)
◆管理員能通過用戶界面輕松管理用戶,組,角色
◆用戶能可以根據需要定制個性化的portallayout
◆能夠在主流的J2EE應用服務器 上運行,如 JBoss+Jetty/Tomcat,JOnAS
◆支持主流的數據庫,如PostgreSQL,MySQL
◆使用了第三放的開源項目,如Hibernate,Lucene,Struts
◆支持包括中文在內的多種語言
◆采用最先進的技術Java,EJB,JMS,SOAP,XML
JetSpeed【Java開源門戶系統(tǒng)】
Jetspeed是一個開放源代碼的企業(yè)信息門戶(EIP)的實現,使用的技術是Java和XML.用戶可以使用瀏覽器,支持WAP協(xié)議的手機 或者其它的設備訪問Jetspeed架設的信息門戶獲取信息.Jetspeed扮演著信息 集中器的角色,它能夠把信息集中起來并且很容易地提供給用戶。
Jetspeed具有如下的特征:
◆即將成為標準化的JavaPortletAPI
◆基于模板的布局,包括JSP和Velocity
◆通過開放的內容同步技術支持遠程XML內容交換
◆定制默認的主頁
◆使用數據庫進行用戶認證
◆內存 緩存技術,加快頁面的響應
◆通過RichSiteSummary技術,支持同步內容
◆和Cocoon,WebMacro,Velocity集成 ◆WirelessMarkupLanguage(WML)支持
◆使用XML格式的配置文件注冊portlet
◆完整的WebApplicationArchive(WAR)支持
◆Web應用程序開發(fā)的基礎設施
◆可以在本地緩存遠程內容
◆與Avantgo同步
◆可移植到所有支持JDK1.2和Servlet2.2的平臺
◆與Turbine模塊和服務集成
◆可以根據用戶,安裝媒體類型和語言的不同設定,產生不同的個性化服務
◆持續(xù)化服務使得所由的portlet能夠容易的存儲每個用戶的狀態(tài),頁面和portlet
◆使用皮膚技術使得用戶可以選擇portlet的顏色和顯示屬性
◆自定義功能是的管理員可以選擇portlet以及定義個人頁面的布局
◆在數據庫中存儲PSML
◆通過Jetspeed的安全portlets管理用戶,組,角色和權限
◆基于角色對訪問portlet進行控制
JOnAS【Java開源應用服務器 】
JOnAS是一個開放源代碼的J2EE實現,在ObjectWeb協(xié)會中開發(fā)。整合了Tomcat或Jetty成為它的Web容器,以確保符合 Servlet2.3和JSP1.2規(guī)范。JOnAS服務器 依賴或實現以下的 JavaAPI:JCA、JDBC、JTA、JMS、JMX、JNDI、JAAS、JavaMail。
JFox3.0【Java開源應用服務器 】
JFox是OpenSourceJavaEEApplicationServer,致力于提供輕量級的JavaEE應用服務器,從3.0開始,JFox提供了一個支持模塊化的MVC框架,以簡化EJB以及Web應用 的開發(fā)!如果您正在尋找一個簡單、輕量、高效、完善的JavaEE開發(fā)平臺,那么JFox正是您需要的。
JFox3.0擁有以下特性:
◆重新設計的IoC微內核,融入OSGi模塊化思想
◆設計成嵌入式架構,能夠和任何JavaWebServer集成部署
◆支持EJB3,JPA規(guī)范,支持容器內和容器外兩種方式運行EJB和JPA組件
◆支持EJB發(fā)布成WebService
◆采用JOTM(http://jotm.objectweb.org/)提供事務處理,支持兩階段提交(2PC)
◆采用XAPool(http://forge.objectweb.org/projects/xapool/)提供XADataSource,支持智能連接池管理
◆內置MVC框架,實現自動FormMapping,Validator,Uploading等功能,支持JSP/Velocity /Freemarker頁面引擎,并支持直接在Action中注入EJB
◆支持多應用模塊部署,讓中大型應用充分享受模塊化開發(fā)帶來的優(yōu)勢
◆提供Manager管理模塊,可以查看和管理各種運行時參數
◆提供根據JFox特色重寫的Petstore應用模塊
EasyJWeb【Java開源Web開發(fā)框架】
EasyJWeb是基于java技術,應用于WEB應用程序快速開發(fā)的MVC框架,框架設計構思來源于國內眾多項目實踐,框架充分借簽了當前主 要流行的開源Web框架(Struts、JSF、Tapestry、Webwork),吸取了其優(yōu)點及精華,利用Velocity作為模板頁面引擎,是一 個實現了頁面及代碼完全分離的MVC開發(fā)框架。是一個能實現中小型Web應用系統(tǒng)快速開發(fā)的簡易Web框架。
通過EasyJWebTools提供的配套開發(fā)工具,可以實現基于EasyJWeb框架的Web應用快速開發(fā),包括常用應用軟件的代碼自生成、數據庫添刪改查(CRUD)代碼生成、自動頁面模版生成、配置文件管理等。
框架特點:
◆零配文件置支持。以前我們每接觸一個框架,開始總都要被他的配置文件折騰一番。EasyJWeb實現零配置支持,可以不寫一句配置文件就在框 架基礎上構建你的運用。(適合小型網站系統(tǒng))。
◆簡易的模板頁面設計支持:放棄使用jsp,使用簡單Velocity腳本語言作為頁面模板。
◆頁面程序完全分離:實現顯示頁面與程序邏輯的完全分離,克服了傳統(tǒng)jsp頁面難于維護的問題。
◆基于頁面組件的框架。靈活的頁面組件配置,可以直接通過配置文件設置字段級的事件組件。
◆快速開發(fā)支持:通過EasyJWebTools,可以自動生成應用軟件模板代碼,定制并管理自己的J2EE代碼模板,代碼生成模板支持最流行 的實用Java開發(fā)框架(如hibernate、Spring等)實現快速開發(fā)。
Tapestry【Java開源Web開發(fā)框架】
Tapestry是一個開源的基于servlet的應用程序框架,它使用組件對象模型來創(chuàng)建動態(tài)的,交互的web應用。一個組件就是任意一個帶 有jwcid屬性的html標記。其中jwc的意思是JavaWebComponent。Tapestry使得java代碼與html完全分離,利用這個 框架開發(fā)大型應用變得輕而易舉。并且開發(fā)的應用很容易維護和升級。Tapestry支持本地化,其錯誤報告也很詳細。Tapestry主要利用 javabean和xml技術進行開發(fā)?!維pindle:Tapestry輔助開發(fā)Eclipse插件】
FreeMarker【Java開源模板引擎】
FreeMarker允許Javaservlet保持圖形設計同應用程序邏輯的分離,這是通過在模板中密封HTML完成的。模板用 servlet提供的數據動態(tài)地生成HTML。模板語言是強大的直觀的,編譯器速度快,輸出接近靜態(tài)HTML頁面的速度?!綟reeMarkerEclipsePlugin與FreeMarkerIDE:Eclipse平臺下的輔助開發(fā)工具】
Lucene【Java開源搜索引擎】
ApacheLucene是一個基于Java全文搜索引擎,利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是替文 件的每一個字作索引,索引讓搜尋的效率比傳統(tǒng)的逐字比較大大提高,Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強大之處除了高 效和簡單外,是最重要的是使使用者可以隨時應自已需要自訂其功能。
iText【Java開源PDF類庫】
iText是一個能夠快速產生PDF文件的java類庫。iText的java類對于那些要產生包含文本,表格,圖形的只讀文檔是很有用的。它 的類庫尤其與javaServlet有很好的給合。使用iText與PDF能夠使你正確的控制Servlet的輸出。
Groovy【Java開源動態(tài)語言】
Groovy是一種基于JVM的敏捷開發(fā)語言,它結合了Python、Ruby和Smalltalk的許多強大的特性。Groovy已在 WebWork2中的應用。它可以被編譯為標準的JavaBytecode。
OpenCms【Java開源CMS系統(tǒng)】
OpenCms是一個J2EE的產品,它是用Java寫成的。它和Tomcat捆綁在一起。但是也能夠使用ATGDynamo、WebLogic和WebSphere。OpenCms支持多種RDBMS來保存內容,包括Oracle、SQLServer、Sybase和 mySQL。新版本提供了一個新的模板引擎,JSP支持,一種新的連接管理系統(tǒng),提高了穩(wěn)定性。
JUnit【Java開源測試工具】
JUnit是由ErichGamma和KentBeck編寫的一個回歸測試框架(regressiontestingframework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框 架,繼承TestCase類,就可以用Junit進行自動測試了。
BlueJ【Java開源IDE】
BlueJ是一個專門為入門級教學設計的JavaTM開發(fā)環(huán)境。它是由澳大利亞墨爾本Monash大學BlueJ小組設計并開發(fā)的。
XWiki【Java開源Wiki系統(tǒng)】
XWiki是一個強大的Java開源的Wiki引擎。它支持一些受歡迎的特性如:
◆內容管理(瀏覽/編輯/預覽/保存)
◆支持附件
◆版本控制
◆全文本搜索
◆權限管理
◆使用Hibernate進行數據存儲
◆RSS輸出與顯示外部的RSSfeeds
◆多語言支持
◆提供XML/RPC的API
◆WYSIWYGHTML編輯器
◆導出為PDF
◆Groovy腳本支持等等....EJBCA【Java開源網絡服務器 端組件】
EJBCA是一個全功能的CA系統(tǒng)軟件,它基于J2EE技術,并提供了一個強大的、高性能并基于組件的CA。EJBCA兼具靈活性和平臺獨立 性,能夠獨立使用,也能和任何J2EE應用程序集成。
JXTA【Java開源其它項目】
Sun微系統(tǒng)公司公開了旨在建立P2P(PeertoPeer)通用技術基礎的JXTA計劃。JXTA技術是網絡編程和計算的平臺,用以解決現 代分布計算尤其是點對點(P2P)計算中出現的問題。
JXTA將建立核心的網絡計算技術,提供支持在任何平臺、任何地方以及任何時間實現P2P計算的一整套簡單、小巧和靈活的機制。JXTA首先將 歸納目前P2P的功能特別,而后建立核心的技術來表達目前的P2P計算的局限性。其重點是創(chuàng)建基本的機制,而具體的策略選擇權則交給應用的開發(fā)者。JXTA將充分利用XML、Java等開放技術,使得UNIX操作系統(tǒng) 更強大和靈 活,比如利用管道(Pipes)傳輸Shell命令實現復雜的計算任務。JXTA支持P2P應用的基本功能來建立一個P2P系統(tǒng),還將努力證實這些可以成 為建立更高層功能的基礎構造模塊。JXTA架構可以分為三個層面:JXTA核心層、JXTA業(yè)務層和JXTA應用層。
DWR【Java開源AJAX框架】
DWR(DirectWebRemoting)是一個WEB遠程調用框架.利用這個框架可以讓AJAX開發(fā)變得很簡單.利用DWR可以在客戶端 利用JavaScript直接調用服務端的Java方法并返回值給JavaScript就好像直接本地客戶端調用一樣(DWR根據Java類來動態(tài)生成 JavaScrip代碼).它的最新版本DWR0.6添加許多特性如:支持DomTrees的自動配置,支持Spring(JavaScript遠程調用 springbean),更好瀏覽器支持,還支持一個可選的commons-logging日記操作。
ZK【Java開源AJAX框架】
ZK是一個AjaxJavaWeb框架,利用少量代碼就能夠開發(fā)出擁有RichUI的Web應用。ZK提供基于XUL的標記語言和事件驅動的組 件,可以讓你像開發(fā)桌面應用程序一樣簡單。支持EL表達式和腳本語言包括:JavaScript、Ruby和Groovy等。支持Annotation及 數據綁定。集成GoogleMaps、FCKeditor、DOJO以及Timeline。
第二篇:【java總結】集合框架
【java總結】集合框架
Collection是集合框架層次結構中的根接口。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 允許有重復的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。Collection接口下有最常用的接口為List跟Set。需要注意的是,Map并沒有實現Collection接口。
List接口實現類ArrayList 優(yōu)點:類似數組的形式進行存儲,因此它的隨機訪問速度極快。缺點:不適合于在線性表中間需要頻繁進行插入和刪除操作。因為每次插入和刪除都需要移動數組中的元素,它是用數組存儲元素的,這個數組可以動態(tài)創(chuàng)建,如果元素個數超過了數組的容量,那么就創(chuàng)建一個更大的新數組,并將當前數組中的所有元素都復制到新數組中。[html] view plain copy public class ArrayListTest {
public static void main(String[] args){
List
arrayList.add(“Welcome”);
arrayList.add(“to”);
arrayList.add(“java”);
//把ArrayList變?yōu)閿到M相關的內容進行遍歷
String[] strArray=new String[arrayList.size()];
arrayList.toArray(strArray);
for(int i=0;i //使用迭代器進行ArrayList遍歷 Iterator while(iter.hasNext()){ System.out.println(iter.next()); } } } List接口實現類LinkedList 優(yōu)點:適合于在鏈表中間需要頻繁進行插入和刪除操作。 缺點: 隨機訪問速度較慢。查找一個元素需要從頭開始一個一個的找。此類實現 Deque 接口,為 add、poll 提供先進先出隊列操作,以及其他堆棧和雙端隊列操作LinkedList是在一個鏈表中存儲元素。[html] view plain copy public class LinkedListTest { public static void main(String[] args){ List //使用ForEach遍歷linkedList String[] strArray2=new String[linkedList.size()]; linkedList.toArray(strArray2); for(int i=0;i //foreach遍歷LinkedList for(String str:linkedList){ System.out.println(str); } //使用迭代器進行ArrayList遍歷 Iterator while(iter.hasNext()){ System.out.println(iter.next()); } } } List接口實現類Vector: Vector使用了關鍵字synchronized將訪問和修改向量的方法都變成同步的了,所以對于不需要同步的應用程序來說,類ArrayList比類Vector更高效。相同點: ①都繼承于AbstractList,并且實現List接口 ②都實現了RandomAccess和Cloneable接口 ③都是通過數組實現的,本質上都是動態(tài)數組,默認數組容量是10 ④都支持Iterator和listIterator遍歷 不同點: ①ArrayList是非線程安全,而Vector是線程安全的 ②容量增加方式不同,Vector默認增長為原來一倍,而ArrayList卻是原來的一半+1 ③Vector支持通過Enumeration去遍歷,而List不支持 [html] view plain copy public class VectorTest { public static void main(String[] args){ Vector for(int i = 0;i < 10;i++){ vector.add(i); } //直接打印 System.out.println(vector.toString()); //size() System.out.println(vector.size()); //contains System.out.println(vector.contains(2)); //總結:對比Vector的遍歷方式,使用索引的隨機訪問方式最快,使用迭代器最慢 //iterator遍歷 Iterator while(iterator.hasNext()){ System.out.print(iterator.next()+ “ ”); } //Enumeration遍歷 Enumeration enu = vector.elements(); while(enu.hasMoreElements()){ System.out.println((Integer)enu.nextElement()); } //toArray Object[] objArr = vector.toArray(); System.out.println(“nobjArr:” + Arrays.asList(objArr)); Integer[] intArr = vector.toArray(new Integer[vector.size()]); System.out.println(“intArr:” + Arrays.asList(intArr)); //add vector.add(5); //remove vector.remove(5); System.out.println(vector); //containsAll System.out.println(vector.containsAll(Arrays.asList(5,6))); //addAll vector.addAll(Arrays.asList(555,666)); System.out.println(vector); //removeAll vector.removeAll(Arrays.asList(555,666)); System.out.println(vector); //addAll方法 vector.addAll(5, Arrays.asList(666,666, 6)); System.out.println(vector); //get方法 System.out.println(vector.get(5)); //set方法 vector.set(5, 55); System.out.println(vector.get(5)); //add方法 vector.add(0, 555); System.out.println(vector); //remove方法 vector.remove(0); System.out.println(vector); //indexof方法 System.out.println(vector.indexOf(6)); //lastIndexOf方法 System.out.println(vector.lastIndexOf(6)); //listIterator方法 ListIterator System.out.println(listIterator.hasPrevious()); //listIterator(index)方法 ListIterator System.out.println(iListIterator.previous()); //subList方法 System.out.println(vector.subList(5, 7)); //clear vector.clear(); System.out.println(vector); } } List接口實現類Stack 棧類,是Java2之前引入的,繼承自類Vector。同樣是線程同步的 [html] view plain copy public class StackTest { public static void main(String[] args){ Stack for(int i = 0;i < 10;i++){ stack.add(i); } System.out.println(stack); System.out.println(stack.peek()); stack.push(555); System.out.println(stack); System.out.println(stack.pop()); System.out.println(stack); System.out.println(stack.empty()); System.out.println(stack.search(6)); System.out.println(“stack遍歷:”); while(!stack.empty()){ System.out.print(stack.pop()+ “ ”); } } } List接口總結:實際使用中我們需要根據特定的需求選用合適的類,如果 除了在末尾外不能在其他位置插入或者刪除元素,那么ArrayList效率更高,如果需要經常插入或者刪除元素,就選擇LinkedList。 Set接口實現類HashSet: HashSet是Set接口最常見的實現類,其底層是基于hash算法進行存儲相關元素的。HashSet中存儲元素的位置是固定的(由hashCode決定),并且是無序的。Set集合中的去重和hashCode與equals方法相關。[html] view plain copy public class Num implements Comparable{ private int num; public Num(int num){ this.num=num; } @Override public int compareTo(Object o){ // TODO Auto-generated method stub Num x=(Num)o; if(num>x.num)return 1; else if(num==x.num)return 0; else return-1; } public String toString(){ return “num=”+num; } } [html] view plain copy public class HashSetTest { public static void main(String[] args){ Set hashSet.add(“hello”); hashSet.add(“world”); hashSet.add(“world”); //使用數組的方法遍歷HashSet集合String[] strArray=new String[hashSet.size()]; strArray=hashSet.toArray(strArray); for(String str:strArray){ System.out.println(str); } //使用HashSet集合直接遍歷 for(String str:hashSet){ System.out.println(str); } //用迭代器遍歷HashSet集合Iterator while(iterator.hasNext()){ System.out.println(iterator.next()); } //無重寫hashCode跟equals方法的類,不會自動根據類中的值進行去重 Set set2.add(new Num(1)); set2.add(new Num(3)); set2.add(new Num(2)); set2.add(new Num(3)); set2.add(new Num(3)); set2.add(new Num(6)); System.out.println(set2.size()); Iterator while(iterator2.hasNext()){ System.out.println(iterator2.next()); } } } Set接口實現類LinkedHashSet: LinkedHashSet繼承HashSet,是用一個鏈表實現來擴展HashSet類,它支持對規(guī)則集內的元素排序。HashSet中的元素是沒有被排序的,而LinkedHashSet中的元素可以按照它們插入規(guī)則集的順序提取。[html] view plain copy public class LinkedHashSetTest { public static void main(String[] args){ Set linkedHashSet.add(“hello”); linkedHashSet.add(“world”); linkedHashSet.add(“world”); //使用數組的方法遍歷HashSet集合String[] strArray=new String[linkedHashSet.size()]; strArray=linkedHashSet.toArray(strArray); for(String str:strArray){ System.out.println(str); } //使用HashSet集合直接遍歷 for(String str:linkedHashSet){ System.out.println(str); } //用迭代器遍歷HashSet集合Iterator while(itera004km.cntor.hasNext()){ System.out.println(iterator.next()); } } } Set接口實現類TreeSet: TreeSet實現了Set接口,它與HashSet的區(qū)別主要在于TreeSet中的元素會按照相關的值進行排序。HashSet是通過HashMap實現的,TreeSet是通過TreeMap實現的,只不過Set用的只是Map的key。由于TreeMap需要排序,所以需要一個Comparator為鍵值進行大小比較.當然也是用Comparator定位的.如果創(chuàng)建時沒有確定,那么就會使用key.compareTo()方法,這就要求key必須實現Comparable接口.TreeMap是使用Tree數據結構實現的,所以使用compare接口就可以完成定位了.注意:TreeSet是根據對象的CompareTo方法來去重的,如果CompaerTo返回0說明兩個對象相等,不能同時存在于TreeSet中。 [html] view plain copy public class TreeSetTest { public static void main(String[] args){ Set treeSet.add(“d”); treeSet.add(“c”); treeSet.add(“b”); treeSet.add(“a”); //String實體類中實現Comparable接口,所以在初始化TreeSet的時候, //無需傳入比較器 Iterator while(iterator.hasNext()){ System.out.println(iterator.next()); } Set treeSet2.add(new Num(1)); treeSet2.add(new Num(3)); treeSet2.add(new Num(2)); treeSet2.add(new Num(3)); treeSet2.add(new Num(3)); treeSet2.add(new Num(6)); System.out.println(treeSet2.size()); Iterator while(iterator2.hasNext()) { System.out.println(iterator2.next()); } TreeSet set.add(1111); set.add(2222); set.add(3333); set.add(4444); set.add(5555); System.out.println(set.first());// 輸出第一個元素 System.out.println(set.lower(3333));//小于3333的最大元素 System.out.println(set.higher(2222));//大于2222的最大元素 System.out.println(set.floor(3333));//不大于3333的最大元素 System.out.println(set.ceiling(3333));//不小于3333的最大元素 System.out.println(set.pollFirst());//刪除第一個元素 System.out.println(set.pollLast());//刪除最后一個元素 System.out.println(set); } } Set接口區(qū)別于List接口在于: 所有Set中的元素實現了不重復,有點像數學中集合的概念,無序,不允許有重復的元素,最多允許有一個null元素對象 Map接口: Map接口儲存一組成對的鍵-值對象,提供key(鍵)到value(值)的映射,Map中的key不要求有序,不允許重復。value同樣不要求有序,但可以重復。 Map實現類HashMap 最常見的Map實現類,他的儲存方式是哈希表,優(yōu)點是查詢指定元素效率高。HashMap采用數組+鏈表實現,即使用鏈表處理沖突,同一hash值的鏈表都存儲在一個鏈表里。但是當鏈表中的元素較多,即hash值相等的元素較多時,通過key值依次查找的效率較低。而JDK1.8中,HashMap采用數組+鏈表+紅黑樹實現,當鏈表長度超過閾值(8)時,將鏈表轉換為紅黑樹,這樣大大減少了查找時間。 無論什么情況HashMap中哈希表的容量總是2的n次方的一個數。并且有這樣一個公式:當length=2^n時,hashcode &(length-1)== hashcode % length HashMap與Hashtable的區(qū)別: Hashtable實現Map接口,繼承自古老的Dictionary類,實現一個key-value的鍵值映射表。任何非空的(key-value)均可以放入其中。區(qū)別主要有三點: 1.Hashtable是基于陳舊的Dictionary實現的,而HashMap是基于Java1.2引進的Map接口實現的; 2.Hashtable是線程安全的,而HashMap是非線程安全的,我們可以使用外部同步的方法解決這個問題。 3.HashMap可以允許你在列表中放一個key值為null的元素,并且可以有任意多value為null,而Hashtable不允許鍵或者值為null。 [html] view plain copy public class HashMapTest { public static void main(String[] args){ Map hashMap.put(“a”,1); hashMap.put(“b”,2); hashMap.put(“JAVA”,3); System.out.println(hashMap.get(“JAVA”)); //第一種遍歷方法:普遍使用,二次取值 for(String key : hashMap.keySet()){ System.out.println(“key= ”+ key + “ and value= ” + hashMap.get(key)); } //第二種:通過Map.entrySet使用iterator遍歷key和value Iterator while(iter.hasNext()){ System.out.println(iter.next()); } //第三種:通過Map.entrySet遍歷key和value.推薦,尤其是容量大時 for(Map.Entry System.out.println(“key= ” + entry.getKey()+ “ and value= ” + entry.getValue()); } //第四種:通過Map.values()遍歷所有的value,但不能遍歷key for(Integer v : hashMap.values()){ System.out.println(“value= ” + v); } } } Map實現類LinkedHashMap LinkedHashMap繼承自HashMap,它主要是用鏈表實現來擴展HashMap類,HshMap中條目是沒有順序的,但是在LinkedHashMap中元素既可以按照它們插入圖的順序排序,也可以按它們最后一次被訪問 的順序排序。LinkedHashMap繼承自HashMap并且實現了Map接口。和HashMap一樣,LinkedHashMap 允許key和value均為null。于該數據結構和HashMap一樣使用到hash算法,因此它不能保證映射的順序,尤其是不能保證順序持久不變(再哈希)。 [html] view plain copy public class LinkedHashMapTest { public static void main(String[] args){ Map linkedHashMap.put(“a”, 1); linkedHashMap.put(“java”,2); linkedHashMap.put(“C”, 3); System.out.println(linkedHashMap.get(“a”)); Set Iterator while(iter.has004km.cnn(String[] args){ Map treeMap.put(“b”,2); treeMap.put(“a”,1); treeMap.put(“e”,5); treeMap.put(“d”,4); treeMap.put(“c”,3); Set Iterator while(iter.hasNext()){ System.out.println(iter.next()); } Set for(String x:keySet){ System.out.println(x+“=”+treeMap.get(x)); } Map treeMap2.put(new Num(2),“a”); treeMap2.put(new Num(1),“b”); treeMap2.put(new Num(5),“c”); treeMap2.put(new Num(4),“d”); treeMap2.put(new Num(3),“c”); Set for(Num x:ke004km.cnySet2){ System.out.println(x+“=”+treeMap2.get(x)); } //根據value排序 Map map.put(“d”, 2); map.put(“c”, 1); map.put(“b”, 4); map.put(“a”, 3); List new ArrayList //排序前 for(int i = 0;i < infoIds.size();i++){ String id = infoIds.get(i).toString(); System.out.println(id); } //排序 Collections.sort(infoIds, new Comparator public int compare(Map.Entry return(o2.getValue()-o1.getValue()); //return(o1.getKey()).toString().compareTo(o2.getKey()); } }); //排序后 for(int i = 0;i < infoIds.size();i++){ String id = infoIds.get(i).toString(); System.out.println(id); } } } Map接口總結:在實際使用中,如果更新圖時不需要保持圖中元素的順序,就使用HashMap,如果需要保持圖中元素的插入順序或者訪問順序,就使用LinkedHashMap,如果需要使圖按照鍵值排序,就使用TreeMap。 iOS超全開源框架、項目和學習資料匯總 iOS超全開源框架、項目和學習資料匯總(1)UI篇iOS超全開源框架、項目和學習資料匯總(2)動畫篇iOS超全開源框架、項目和學習資料匯總(3)網絡和Model篇數據庫FMDB – sqlite的工具,多線程FMDatabaseQueue實例,FMDB數據庫的使用演示和封裝工具類。GXDatabaseUtils – 在FMDB基礎上的工具。realm-cocoa – Realm是一個真正為移動設備打造的數據庫,同時支持Objective-C和Swfit。Realm宣稱其相比Sqlite,在移動設備上有著更好的性能表現。Breeze – 用Swift寫的一個輕量級的CoreData管理工具,并且還支持iCloud。AlecrimCoreData – Swift,更容易地訪問 CoreData 對象封裝類庫。除了 CRUD,還提供指針定位,強大的排序、篩選,異步數據獲取,以及獨立線程后臺存取數據。CoreStore – Core Data 管理類庫。其中事務管理及查詢是其比較大的亮點,整套 API 功能完整。Presentation – 重量級好項目 Presentation,它可以方便你制作定制的動畫式教程、Release Notes、個性化演講稿等。CoreValue – Swift 2 版 Core Data 封裝庫。相比另外兩個 SwiftRecord和 CoreStore更輕量。緩存處理YTKKeyValueStore – Key-Value存儲工具類,說明。TMCache – TMCache 是 Tumblr 開源的一個基于 key/value 的數據緩存類庫,可以用于緩存一些臨時數據或者需要頻繁加載的數據,比如某些下載的數據或者一些臨時處理結果。JLKeychain – 快捷使用keychain存儲數據的類,使keychain像NSUserDefaults一樣工作。sskeychain – SSKeyChains對蘋果安全框架API進行了簡單封裝,支持對存儲在鑰匙串中密碼、賬戶進行訪問,包括讀取、刪除和設置。KeychainAccess – 管理Keychain接入的小助手。圖像瀏覽及處理FLAnimatedImage – gif播放處理的工具。CLImageEditor – 超強的圖片編輯庫,快速幫你實現旋轉,防縮,濾鏡等等一系列麻煩的事情。VIPhotoView – 用于展示圖片的工具類,因為是個 View,所以你可以放在任何地方顯示。支持旋轉,雙擊指定位置放大等。MWPhotoBrowser – 一個非常不錯的照片瀏覽器,在github的star接近3000個,解決MWPhotoBrowser中的SDWebImage加載大圖導致的內存警告問題。core-image-explorer – Core Image 濾鏡處理圖片– swift,Core Image 介紹。CoreImageShop – CoreImageShop圖片濾鏡處理– Mac app that let you create a complete Core Image Filter usable on iOS using SCRecorder。GPUImage – 處理圖片效果。RSKImageCropper – 適用于iOS的圖片裁剪器,類似Contacts app,可上下左右移動圖片選取最合適的區(qū)域。WZRecyclePhotoStackView – 刪除照片交互–WZRecyclePhotoStackView,就是模擬生活中是刪除或保留猶豫不決的情形而產生的。在上滑,下滑的部分,借鑒了TinderSimpleSwipeCards。TimingFunctionEditor – TimingFunctionEditor用swift編寫,貝塞爾曲線編輯器,編輯后可以預覽或拷貝代碼片段直接使用。P.S.該項目采用更簡單的依賴管理器 Carthage,而非常用的 CocoaPods。Carthage介紹中文。AAFaceDetection – AAFaceDetection–swift,簡單、實用的面部識別封裝庫。雖然該技術從 iOS 5 發(fā)展,不過真正有趣的應用還不多。PhotoTweaks – 這個庫挺贊的,正好是對圖像操作的。Concorde – swift, Concorde, 一個可用于下載和解碼漸進式 JPEG 的庫, 可用來改善應用的用戶體驗。ZoomTransition – swift, 通過手勢操控圖片的放大、縮小、旋轉等自由變化效果的組件及示例。AFImageHelper – swift,一套針對 UIImage 和 UIImageView 的實用擴展庫,功能包含填色和漸變、裁剪、縮放以及具有緩存機制的在線圖片獲取。PinterestSwift – swift,Pinterest 風格圖片縮放、切換示例。KYElegantPhotoGallery – 一個優(yōu)雅的圖片瀏覽庫。SDCycleScrollView – 無限循環(huán)自動圖片輪播器(一步設置即可使用)。SDPhotoBrowser – 仿新浪動感圖片瀏覽器,非常簡單易用的圖片瀏覽器,模仿微博圖片瀏覽器動感效果,綜合了圖片展示和存儲等多項功能。HZPhotoBrowser – 一個類似于新浪微博圖片瀏覽器的框架(支持顯示和隱藏動畫;支持雙擊縮放,手勢放大縮?。恢С謭D片存儲;支持網絡加載gif圖片,長圖滾動瀏覽;支持橫豎屏顯示)。PhotoStackView-Swift – PhotoStackView——照片疊放視圖,使用說明。MarkingMenu – 基于手勢、類似 Autodesk Maya 風格標記菜單及圖片渲染。SXPhotoShow – UICollectionViewFlowLayout流水布局 是當下collectionView中常用且普通的布局方式。本代碼也寫了三種好看的布局,其中LineLayout和流水布局有很大的相同點就直接繼承UICollectionViewFlowLayout,然后StackLayout,CircleLayout這兩種都是直接繼承自最原始的UICollectionViewLayout 布局方案。攝像照相視頻音頻處理ZFPlayer-基于AVPlayer,支持豎屏、橫屏(橫屏可鎖定屏幕方向),上下滑動調節(jié)音量、屏幕亮度,左右滑動調節(jié)播放進度ZFPlayer剖析SCRecorder – SCRecorder 短視頻錄制。VideoPushDemo – 視頻剪輯 視頻特效制作1 視頻特效制作2。LLSimpleCamera – A simple, customizable camera control for iOS,攝像頭。EZAudio – EZAudio 是一個 iOS 和 OSX 上簡單易用的音頻框架,根據音量實時顯示波形圖,基于Core Audio,適合實時低延遲音頻處理,非常直觀。中文介紹,官網。ffmpeg – ffmpeg官網,FFmpeg在iOS上完美編譯。VCL – VCL官網。kxmovie – 使用ffmpeg的影片播放器,修改說明,修改代碼。ijkplayer – B站開源的視頻播放器,支持Android和iOS。StreamingKit – StreamingKit流媒體音樂播放器。FreeStreamer – FreeStreamer流媒體音樂播放器,cpu占用非常小。DOUAudioStreamer – DOUAudioStreamer豆瓣的音樂流媒體播放器。fmpro – 電臺播放器,支持鎖屏歌詞,支持基本播放流程,歌詞展示,后臺鎖屏播放和控制以及鎖屏后封面+歌詞,fmpro_R。IPDFCameraViewController – 支持相機定焦拍攝、濾鏡、閃光、實時邊框檢測以及透視矯正功能,并有簡單易用的API。SCRecorder – 酷似 Instagram/Vine 的音頻/視頻攝像記錄器,以 Objective-C 為基礎的過濾器框架。你可以做很多如下的操作:記錄多個視頻錄像片段。刪除任何你不想要的記錄段。可以使用任何視頻播放器播放片段。保存的記錄可以在序列化的 NSDictionary 中使用。(在 NSUserDefaults 的中操作)添加使用 Core Image 的視頻濾波器。可自由選擇你需要的 parameters 合并和導出視頻。Cool-iOS-Camera – Cool-iOS-Camera。FastttCamera – FastttCamera 快速照相。ICGVideoTrimmer – ICGVideoTrimmer提供提供視頻剪切的視圖(類似系統(tǒng)相冊中瀏覽視頻時頂部那個條狀視圖)。左右兩個邊界選擇器還能夠自定義。IOS錄音和播放功能demo – 比較完整的ios錄音和播放功能的實現。CameraManager – 相機管理封裝類庫??粗鴺O好用的樣子—-swift。MCAudioInputQueue – 簡易錄音類,基于AudioQueue的。DraggableYoutubeFloatingVideo – 展示像類似Youtube移動應用的那種瀏覽視頻的效果,當點擊某視頻時能夠從右下方彈出一個界面,并且該界面能夠通過手勢,再次收縮在右下方并繼續(xù)播放。這是通過AutoLayout設計實現。amr – 做即時通訊的音頻處理,錄音文件是m4a,便于web端的音頻播放。FSVoiceBubble – 一個輕量級播放錄音音頻的氣泡:1.支持短時間的音頻播放(支持網絡音頻);2.播放時的聲波動畫;3.自定義包括聲波的顏色,氣泡的背景等。KRVideoPlayer – 類似Weico的播放器,支持豎屏模式下全屏播放。其他DateTimeKit – 一個超贊的時間處理的庫,Joda-Time!他能幫你輕松處理時區(qū),處理時間加減,計算到期時間等等場景下的問題。SwiftDate – 特別完整、強大的日期時間操作管理類庫。它幾乎涵蓋了已知開源日期類庫所有優(yōu)秀特性。他能幫你輕松處理時區(qū),處理時間加減,計算到期時間等等場景下的問題。iOS私有API – 私有API,綠色 == public,紅色 == private,藍色 == dylib。iOS源代碼 – iOS源代碼。libfacedetection – C++ 人臉識別 包含正面和多視角人臉檢測兩個算法.優(yōu)點:速度快(OpenCV haar+adaboost的2-3倍), 準確度高(FDDB非公開類評測排名第二),能估計人臉角度。Slidden – 一個老外開源的開發(fā)自定義鍵盤的庫,利用這個開源庫,可以方便的配置鍵位、顏色以及鍵位對應的圖片。TPKeyboardAvoiding – 用戶鍵盤彈出自動計算高度,進行屏幕滾動操作。CDPMonitorKeyboard – CDPMonitorKeyboard封裝,可以解決輸入視圖(例如textField,textView等)被鍵盤覆蓋問題,并可設置高于鍵盤多少。自動監(jiān)聽鍵盤高度 – 自動監(jiān)聽鍵盤高度,初始界面,輸入框在屏幕最下方,當鍵盤出現時,輸入框隨即移動到鍵盤上方。SYKeyboardTextField – SYKeyboardTextField 是一個輕巧,簡單,非侵入式的鍵盤附隨輸入框!采用Swift編寫。BlocksKit – block框架,為 OC 常用類提供了強大的 Block 語法支持,使得編寫 OC 代碼變得舒適、快速、優(yōu)雅。KVOController – 在項目中有使用 KVO,那么 KVOController 絕對是個好選擇。它是 facebook 開源的一個 KVO 增強框架。appirater – 用于提醒用戶給你的 APP 打分的工具。MotionKitr – 為核心運動框架(The Core Motion framework)提供友好的類庫封裝,以更方便使用三軸陀螺儀和加速感應器特性。Review Monitor – 第一時間自動推送 Apple Store 的用戶評論到你的郵件箱或者 Slack,第一時間跟進用戶反饋,打造優(yōu)秀 App 必備工具!類似的有:App annie 的類似功能。WBWebViewConsole – 類似微博iPhone客戶端的 “調試選項” 嗎?把其中的 “內置瀏覽器網頁調試” 開源在 Github 上了。ios-good-practices – ios-good-practices iOS 開發(fā)最佳實踐。iOS開發(fā)最佳實踐 – iOS 開發(fā)最佳實踐 — 中文。TodayExtensionSharingDefaults – TodayExtensionSharingDefaults是一個iOS 8 Today擴展示例,可以使用NSUserDefaults與其containing app分享數據。QRCodeReader.swift – QRCodeReader.swift一款簡單的 QR 二維碼閱讀組件及示例,提供前后相機切換功能。QRCatcher – 一個簡潔美觀的二維碼掃描應用,iOS學習:AVFoundation 視頻流處理–二維碼掃描。Parsimmon – swift,小而美的語言學類庫封裝工具包。提供分詞、標記詞性、詞形歸并、樸素貝頁斯分類、決策樹等自然語言分析小工具。P.S.英語分詞效果好于中文,感興趣的同學可以針對中文做一些優(yōu)化開發(fā)。參考譯文 NSHipster – NSLinguistic?Tagger。Password-keyboard – 隨機變換數字位置的密碼鍵盤。模仿銀行類應用在付款時輸入的隨機密碼鍵盤。MKMapView-Extension – 這是關于 MKMapView 寫的一個基于swift的擴展,可以擴展 MKMapView 的相關功能,減少復用代碼量。SemverKit – 針對符合『語義化版本規(guī)范 2.0.0』版本號的解析、比較運算類庫。不僅支持 Major, Minor, Patch,還支持 Alpha 和 Beta 預發(fā)布版本,以及相應地遞增運算擴展。SwiftValidator – 基于規(guī)則的輸入驗證類庫。項目良好的面向對象設計思想,使規(guī)則的擴展及自定義非常方便。更專業(yè)的規(guī)則引擎(甚至是基于自然語言的規(guī)則配置)解決方案,比如:開源的 Drools,商用的 ILOG 等。Tesseract-OCR-iOS – 有關OCR文字識別項目。iOS-Categories – 收集了許多有助于開發(fā)的iOS擴展,各種category。Olla4iOS – 過去積累的一些方便復用的類和方法,還在整理中。DKNightVersion – 用最快的方式給你的應用加上夜間和白天的切換效果。TouchVisualizer – 實用的多點觸摸可視化組件。擴展并作用于 UIWindows,結構上提供了簡單地針對觸摸顯示定制,比如觸摸點的顏色。RegexKitLite – 用來處理正則表達式。XcodeServerSDK – 非官方 Xcode Server SDK 封裝庫。P.S.該 SDK 分離自之前推薦的由該作者開發(fā)的自動測試框架 Buildasaur。BFKit-Swift – BFKit-Swift 這套工具庫可以提高應用開發(fā)效率。CKSIncrementalStore – 基于 CloudKit 服務器實現多終端數據同步。SwiftSequence – 簡潔、靈活、多變的操作 SequenceType 的類庫(基于微框架(μframework)設計思想)。IDNFeedParser – 一個簡單易用的Rss解析庫。CoreUmeng – 簡單:友盟分享封裝。openshare – 不用官方SDK,利用社交軟件移動客戶端(微信/QQ/微博/人人/支付寶)分享/登錄/支付。Swifternalization – 一套實用的本地化工具庫。使用教程及 API 文檔完整。值得收入項目的“輪子”。apous – 一款有趣的 Swift 應用 - 讓 Swift 成為腳本語言。Mirror – 通過反射(Refection)實現鏡像對象封裝庫。從而可以更輕松獲?。ɑ蜉敵觯ο髮傩悦㈩愋图爸底兞?。Proposer – Proposer 用單個 API 處理 iOS 上的權限請求,以便使用前確認可訪問“相冊”、“相機”、“麥克風”、“通訊錄”或“用戶位置”。LocationManager – CoreLocation使用起來還是比較麻煩的,需要授權,判斷系統(tǒng)版本等等,所以推薦使用第三方框架LocationManager,使用Block,十分簡單!iOS CoreLocation:無論你在哪里,我都要找到你!。pangu.objective-c – 有多種語言實現版本~ Pangu.Objective-C:格式化中英文之間的空格(OC)。objection – 一個輕量級的依賴注入框架Objection。 Java開發(fā)工具點評 Java開發(fā)工具點評 在計算機開發(fā)語言的歷史中,從來沒有哪種語言象Java那樣受到如此眾多廠商的支持,有如此多的開發(fā)工具,Java菜鳥們如初入大觀園的劉姥姥,看花了眼,不知該何種選擇。的確,這些工具各有所長,都沒有絕對完美的,就算是老鳥也很難做出選擇。在本文中我簡要介紹了常見的十五種Java開發(fā)工具的特點,管中窺“器”,希望能對大家有所幫助。 一、JDK(Java Development Kit) SUN的Java不僅提了一個豐富的語言和運行環(huán)境,而且還提了一個免費的Java開發(fā)工具集(JDK)。開發(fā)人員和最終用戶可以利用這個工具來開發(fā)java程序。 JDK簡單易學,可以通過任何文本編輯器(如:Windows 記事本、UltrEdit、Editplus、FrontPage以及dreamweaver等)編寫Java源文件,然后在DOS狀況下利通過javac命令將Java源程序編譯成字節(jié)碼,通過Java命令來執(zhí)行編譯后的Java文件,這能帶給DOS時代程序員美好的回憶。Java 初學者一般都采用這種開發(fā)工具。 從初學者角度來看,采用JDK開發(fā)Java程序能夠很快理解程序中各部分代碼之間的關系,有利于理解Java面向對象的設計思想。JDK的另一個顯著特點是隨著Java(J2EE、J2SE以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規(guī)模企業(yè)級Java應用開發(fā)非常困難,不能進行復雜的Java軟件開發(fā),也不利于團體協(xié)同開發(fā)。 二、Java Workshop Sun MicroSystems公司于1996年3月26日推出了Java WorkShop 1.0,這是業(yè)界出現的第一個供Internet網使用的多平臺開發(fā)工具,它可以滿足各公司開發(fā)Internet和Intranet網應用軟件的需要。Java WorkShop完全用Java語言編寫,是當今市場上銷售的第一個完全的Java開發(fā)環(huán)境,目前Java WorkShop的最性版本是3.0。Java Workshop的特點表現如下: 1、結構易于創(chuàng)建:在創(chuàng)建平臺中立的網格結構方面,Java Workshop比其他任何一種Java開發(fā)工具都要方便。 2、可視化編程:Java Workshop的可視化編程特性是很基本的。Java Workshop允許程序員重新安排這些操作,甚至可以確定觸發(fā)操作行為的過濾器。1 Java Workshop產生的模板帶有許多注釋,這對程序員是很有幫助的。 此外,Java WorkShop支持JDK1.1.3以及JavaBeans組件模型,API和語言特征增加了編譯Java應用程序的靈活性。Java WorkShop開發(fā)環(huán)境由于完全用Java寫成,所以可移植性極好,以致于多個平臺都能支持,目前Java WorkShop支持Solaris操作環(huán)境SPARC及Intel 版)、Windows95、WindowsNT、以及HP/Ux等平臺。適合于初學者進行一些簡單的Java編程。Java WorkShop的缺點是Java Workshop中的每一個可視化對象都遲早會用到網格布局,這種設計方法是許多人不習慣的;Java Workdshop的調色板是較差的,僅僅能滿足絕大部分應用的基本要求。 三、NetBeans 與Sun Java Studio 5 NetBeans是開放源碼的Java集成開發(fā)環(huán)境(IDE),適用于各種客戶機和Web應用。Sun Java Studio是Sun公司最新發(fā)布的商用全功能Java IDE,支持Solaris、Linux和Windows平臺,適于創(chuàng)建和部署2層Java Web應用和n層J2EE應用的企業(yè)開發(fā)人員使用。 NetBeans是業(yè)界第一款支持創(chuàng)新型Java開發(fā)的開放源碼IDE。開發(fā)人員可以利用業(yè)界強大的開發(fā)工具來構建桌面、Web或移動應用。同時,通過NetBeans和開放的API的模塊化結構,第三方能夠非常輕松地擴展或集成NetBeans平臺。 NetBeans3.5.1主要針對一般Java軟件的開發(fā)者,而Java One Studio5則主要針對企業(yè)做網絡服務等應用的開發(fā)者。Sun不久還將推出Project Rave,其目標是幫助企業(yè)的開發(fā)者進行軟件開發(fā)。NetBeans 3.5.1版本與其他開發(fā)工具相比,最大區(qū)別在于不僅能夠開發(fā)各種臺式機上的應用,而且可以用來開發(fā)網絡服務方面的應用,可以開發(fā)基于J2ME的移動設備上的應用等。在NetBeans 3.5.1基礎上,Sun開發(fā)出了Java One Studio5,為用戶提供了一個更加先進的企業(yè)編程環(huán)境。在新的Java One Studio5里有一個應用框架,開發(fā)者可以利用這些模塊快速開發(fā)自己在網絡服務方面的各種應用程序。 NetBeans是開放源碼的Java集成開發(fā)環(huán)境(IDE),適用于各種客戶機和Web應用。Sun Java Studio是Sun公司最新發(fā)布的商用全功能Java IDE,支持Solaris、Linux和Windows平臺,適于創(chuàng)建和部署2層Java Web應用和n層J2EE應用的企業(yè)開發(fā)人員使用。 NetBeans是業(yè)界第一款支持創(chuàng)新型Java開發(fā)的開放源碼IDE。開發(fā)人員可以利用業(yè)界強大的開發(fā)工具來構建桌面、Web或移動應用。同時,通過NetBeans和開放的API的模塊化結構,第三方能夠非常輕松地擴展或集成NetBeans平臺。 NetBeans3.5.1主要針對一般Java軟件的開發(fā)者,而Java One Studio5則 主要針對企業(yè)做網絡服務等應用的開發(fā)者。Sun不久還將推出Project Rave,其目標是幫助企業(yè)的開發(fā)者進行軟件開發(fā)。NetBeans 3.5.1版本與其他開發(fā)工具相比,最大區(qū)別在于不僅能夠開發(fā)各種臺式機上的應用,而且可以用來開發(fā)網絡服務方面的應用,可以開發(fā)基于J2ME的移動設備上的應用等。在NetBeans 3.5.1基礎上,Sun開發(fā)出了Java One Studio5,為用戶提供了一個更加先進的企業(yè)編程環(huán)境。在新的Java One Studio5里有一個應用框架,開發(fā)者可以利用這些模塊快速開發(fā)自己在網絡服務方面的各種應用程序。 四、Borland 的JBuilder Jbuilder進入了Java集成開發(fā)環(huán)境的王國,它滿足很多方面的應用,尤其是對于服務器方以及EJB開發(fā)者們來說。下面簡單介紹一下Jbuilder的特點: 1、Jbuilder支持最新的Java技術,包括Applets、JSP/Servlets、JavaBean以及EJB(Enterprise JavaBeans)的應用。 2、用戶可以自動地生成基于后端數據庫表的EJB Java類,Jbuilder同時還簡化了EJB的自動部署功能.此外它還支持CORBA,相應的向導程序有助于用戶全面地管理IDL(分布應用程序所必需的接口定義語言Interface Definition Language)和控制遠程對象。 3、Jbuilder支持各種應用服務器。Jbuilder與Inprise Application Server緊密集成,同時支持WebLogic Server,支持EJB 1.1和EJB 2.0,可以快速開發(fā)J2EE的電子商務應用。 4、Jbuilder能用Servlet和JSP開發(fā)和調試動態(tài)Web 應用。 5、利用Jbuilder可創(chuàng)建(沒有專有代碼和標記)純Java2應用。由于Jbuilder是用純Java語言編寫的,其代碼不含任何專屬代碼和標記,它支持最新的Java標準。 6、Jbuilder擁有專業(yè)化的圖形調試介面,支持遠程調試和多線程調試,調試器支持各種JDK版本,包括J2ME/J2SE/J2EE。 JBuilder環(huán)境開發(fā)程序方便,它是純的Java 開發(fā)環(huán)境,適合企業(yè)的J2EE開發(fā);缺點是往往一開始人們難于把握整個程序各部分之間的關系,對機器的硬件要求較高,比較吃內存,這時運行速度顯得較慢。 五、Oracle 的JDeveloper Oracle9i JDeveloper(定為9.0版,最新為10g)為構建具有J2EE功能,XML和Web services的復雜的,多層的Java應用程序提供了一個完全集成的開發(fā)環(huán)境。它為運用Oracle9i數據庫和應用服務器的開發(fā)人員提供特殊的功能和 增強性能,除此以外,它也有資格成為用于多種用途Java開發(fā)的一個強大的工具。 六、Oracle9i JDeveloper的主要特點如下: 1、具有UML(Unified Modeling Language,一體化建模語言)建模功能??梢詫I(yè)務對象及e-business應用模型化。 2、配備有高速Java調試器(Debuger)、內置Profiling工具、提高代碼質量的工具“CodeCoach”等。 3、支持SOAP(Simple Object Access Protocol)“簡單對象訪問協(xié)議”、UDDI(Universal Description, Discovery and Integration)“統(tǒng)一描述、發(fā)現和集成協(xié)議”、WSDL(Web Services Description Language)“WEB服務描述語言”等Web服務標準。JDeveloper 不僅僅是很好的 Java 編程工具,而且是 Oracle Web 服務的延伸,支持 Apache SOAP,以及 9iAS,可擴充的環(huán)境和 XML 和 WSDL 語言緊密相關。Oracle9i Jdeveloper完全利用Java編寫,能夠與以前的Oracle服務器軟件以及其他廠商支持J2EE的應用服務器產品相兼容,而且在設計時著重針對Oracle9i,能夠無縫化跨平臺之間的應用開發(fā),提供了業(yè)界第一個完整的、集成了J2EE和XML的開發(fā)環(huán)境,允許開發(fā)者快速開發(fā)可以通過Web、無線設備及語音界面訪問的Web服務和交易應用,以往只能通過將傳統(tǒng)Java編程技巧與最新模塊化方式結合到一個單一集成的開發(fā)環(huán)境中之后才能完成J2EE應用開發(fā)生命周期管理的事實,從根本上得到改變。缺點就是對于初學者來說,較復雜,也比較難。 package datastructtest; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.LinkedList; import java.util.Scanner; import javax.swing.JFrame; public class Testbase { public static void main(String[] args)throws IOException{ //100之內被3或7整除的數的個數 //int m=0,n=0; //for(int i=0;i<100;i++){ //if(i%3==0){ //m++; //} //if(i%7==0){ //n++; //} //} //System.out.println(“m=”+m+“ ;”); //System.out.println(“n=”+n+“ ;”); //1~100之間的整數累加和,并顯示每個整數和當前累加和的對應關系 //int sum=0; //for(int i=1;i<=100;i++){ // //System.out.print(“i=”+i+“,sum=”+sum); //sum+=i; //System.out.println(“;i+sum=”+sum); //} //計算30的階乘 //int m=jiecheng(30); //System.out.println(m); //直接插入排序 //int[] test={64,5,7,89,6,24}; //int n=test.length; //insertSort(test); //for(int i=0;i //System.out.print(test[i]+“,”); //} //希爾排序 //int[] test={65,34,25,87,12,38,56,46,14,77,92,33};//int n=test.length; //int d[]={6,3,1};//每次循環(huán)用到的增量值 //int numOfD=d.length;//共進行幾次循環(huán) //shellSort(test,d,numOfD); //for(int i=0;i //System.out.print(test[i]+“,”); // } //直接選擇排序 //int[] test={65,34,25,87,12,38,56,46,14,77,92,33}; //int n=test.length; // //selectSort(test); //for(int i=0;i //System.out.print(test[i]+“,”); // } ////字符串逆轉 //char[]a={'a','f','g','h','j'}; //char[]b=reverse1(a); //for(int i=0;i //System.out.print(b[i]+“,”); //} //Scanner類的應用和split的使用 //System.out.println(“請輸入帶逗號的字符:”); //Scanner sc=new Scanner(System.in); // //while(sc.hasNext()){ //StringBuffer str=new StringBuffer(); //str=str.append(sc.next()); ////System.out.println(str); //String st=str.toString(); //String[] a=st.split(“,”); //System.out.println(“字符串被逗號分割之后:”); //for(int i=0;i //System.out.println(a[i]); //} //} //寫文件和讀文件復制文件aa到bb //FileReader filein=new FileReader(new File(“d://aa.txt”));//此句會產生異常 //FileWriter fileout=new FileWriter(new File(“d://bb.txt”));//int c; //while((c=filein.read())!=-1){ //fileout.write(c); //} //filein.close(); //fileout.close(); // } private static int jiecheng(int n){ if(n==1) return 1; else return n*jiecheng(n-1); } //棧 private LinkedList list=new LinkedList(); public void push(Object v){ list.addFirst(v); } public Object top(){ return list.getFirst(); } public Object pop(){ return list.removeFirst(); } //直接插入排序 public static void insertSort(int[] a){ int i,j,temp; int n=a.length; for(i=0;i temp=a[i+1]; j=i; while(j>-1&&temp<=a[j]){ a[j+1]=a[j]; j--; } a[j+1]=temp; } //for(i=0;i //temp=a[i+1]; //// j=i; //while(i>-1&&temp<=a[i]){ //a[i+1]=a[i]; //i--; //} //a[i+1]=temp; //} } //希爾排序 public static void shellSort(int[]a,int[]d,int numOfD){ int i,j,k,m,span; int temp; int n=a.length; for(m=0;m span=d[m];//取本次的增量值 for(k=0;k for(i=k;i temp=a[i+span]; j=i; while(j>-1&&temp<=a[j]){ a[j+span]=a[j]; j=j-span; } a[j+span]=temp; } } } } //直接選擇排序 public static void selectSort(int[]a){ int i,j,small; int temp; int n=a.length; for(i=0;i small=i;//設第i個數據元素最小第三篇:ios超全開源框架項目和學習資料匯總
第四篇:Java開源集成開發(fā)工具
第五篇:java部分數據結構總結