欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      總結Java部分的框架和開源項目(精選五篇)

      時間:2019-05-14 04:32:50下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《總結Java部分的框架和開源項目》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《總結Java部分的框架和開源項目》。

      第一篇:總結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=new ArrayList();

      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 iter=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 linkedList=new LinkedList();

      //使用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 iter=linkedList.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 vector = new 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 iterator = vector.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 listIterator = vector.listIterator();

      System.out.println(listIterator.hasPrevious());

      //listIterator(index)方法

      ListIterator iListIterator = vector.listIterator(5);

      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 stack = new 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=new HashSet();

      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 iterator=hashSet.iterator();

      while(iterator.hasNext()){

      System.out.println(iterator.next());

      }

      //無重寫hashCode跟equals方法的類,不會自動根據類中的值進行去重

      Set set2=new HashSet();

      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 iterator2=set2.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=new LinkedHashSet();

      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 iterator=linkedHashSet.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=new TreeSet();

      treeSet.add(“d”);

      treeSet.add(“c”);

      treeSet.add(“b”);

      treeSet.add(“a”);

      //String實體類中實現Comparable接口,所以在初始化TreeSet的時候, //無需傳入比較器

      Iterator iterator=treeSet.iterator();

      while(iterator.hasNext()){

      System.out.println(iterator.next());

      }

      Set treeSet2=new TreeSet();

      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 iterator2=treeSet2.iterator();

      while(iterator2.hasNext())

      {

      System.out.println(iterator2.next());

      }

      TreeSet set = new 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=new HashMap();

      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> iter=hashMap.entrySet().iterator();

      while(iter.hasNext()){

      System.out.println(iter.next());

      }

      //第三種:通過Map.entrySet遍歷key和value.推薦,尤其是容量大時

      for(Map.Entry entry : hashMap.entrySet()){

      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=new LinkedHashMap();

      linkedHashMap.put(“a”, 1);

      linkedHashMap.put(“java”,2);

      linkedHashMap.put(“C”, 3);

      System.out.println(linkedHashMap.get(“a”));

      Set> entry=linkedHashMap.entrySet();

      Iterator> iter=entry.iterator();

      while(iter.has004km.cnn(String[] args){

      Map treeMap=new TreeMap();

      treeMap.put(“b”,2);

      treeMap.put(“a”,1);

      treeMap.put(“e”,5);

      treeMap.put(“d”,4);

      treeMap.put(“c”,3);

      Set> entry=treeMap.entrySet();

      Iterator> iter=entry.iterator();

      while(iter.hasNext()){

      System.out.println(iter.next());

      }

      Set keySet=treeMap.keySet();

      for(String x:keySet){

      System.out.println(x+“=”+treeMap.get(x));

      }

      Map treeMap2=new TreeMap();

      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 keySet2=treeMap2.keySet();//根據compareTo方法去重

      for(Num x:ke004km.cnySet2){

      System.out.println(x+“=”+treeMap2.get(x));

      }

      //根據value排序

      Map map = new HashMap();

      map.put(“d”, 2);

      map.put(“c”, 1);

      map.put(“b”, 4);

      map.put(“a”, 3);

      List> infoIds =

      new ArrayList>(map.entrySet());

      //排序前

      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 o1, Map.Entry o2){

      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超全開源框架、項目和學習資料匯總

      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ā)工具點評

      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ā)生命周期管理的事實,從根本上得到改變。缺點就是對于初學者來說,較復雜,也比較難。

      第五篇:java部分數據結構總結

      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個數據元素最小

      for(j=i+1;j

      if(a[j]

      if(small!=i){

      temp=a[small];

      for(j=small;j>i;j--)//把該區(qū)段尚未排序元素依次后移

      a[j]=a[j-1];

      a[i]=temp;//插入找出的最小元素

      }

      }

      }

      public static char[] reverse1(char[]a){

      int n=a.length;

      char[]b=new char[n];

      for(int i=0;i

      b[n-i-1]=a[i];

      }

      return b;

      }

      }

      下載總結Java部分的框架和開源項目(精選五篇)word格式文檔
      下載總結Java部分的框架和開源項目(精選五篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯網用戶自發(fā)貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        java的SSH框架總結(范文)

        對于java中SSH框架的理解 SSH 是指 Struts+ spring+ hibernate 的一個集成框架,這是一種比較流行的java web應用程序開源框架。Struts Struts是一個基于Sun J2EE平臺的MVC框......

        Java集合框架使用總結

        前言: 本文是對Java集合框架做了一個概括性的解說,目的是對Java集合框架體系有個總體認識,如果你想學習具體的接口和類的使用方法,請參看Java API文檔。 一、概述 數據結構對程......

        java項目總結(本站推薦)

        項目總結 這是一次比較完整的團隊合作項目,它要求團隊各成員對系統(tǒng)的主體設計搭成一定的共識,這包括數據庫設計,需求分析,以及其它一些細節(jié),因此在編碼之前的準備工作一定要充分......

        java項目心得總結

        java項目心得總結 篇一:Java應用項目開發(fā)總結報告1、In Action (1)根據添加信息()來考慮表中的字段,進行建表。使用PD畫出ER圖。要注意字段的數據類型的確定以及建表要滿足三范式,......

        java web框架簡介

        Java Web框架簡介 Web框架是人們在使用某種語言編寫Web應用服務端時關于架構的最佳實踐。 有些Web框架是從實際的Web項目抽取出來的,也就是說,做一個具體的應用項目時,采取的架......

        項目工程部總結框架

        項目工程部總結框架 一、上半年總結 (四)積極推進項目工程建設 1、上半年項目工程進展情況: 勾陳路北段道路工程上半年完成了掃尾工作,同時補辦了施工許可證,目前該工程正抓緊在......

        OA管理之JAVA開源:WebWork五篇

        萬戶網絡技術有限公司()OA管理之JAVA開源:WebWorkWebWork是由OpenSymphony組織開發(fā)的,致力于組件化和代碼重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,現在的Web......

        開源工作流框架及平臺集成分析報告(范文)

        開源工作流框架及平臺集成分析報告 目 錄 Java主要開源工作流列表 .......................................................................................................