1.八種基本數(shù)據(jù)類型的大小伶跷、默認值以及包裝類
2.equals與==的區(qū)別
1).對于==,如果作用于基本數(shù)據(jù)類型的變量秘狞,則直接比較其存儲的 “值”是否相等叭莫;如果作用于引用類型的變量,則比較的是所指向的對象的地址
2).對于equals方法烁试,注意:equals方法不能作用于基本數(shù)據(jù)類型的變量雇初,如果沒有對equals方法進行重寫,則比較的是引用類型的變量所指向的對象的地址减响,等同于“==”靖诗;諸如String、Date等類對equals方法進行了重寫的話支示,比較的是所指向的對象的內(nèi)容刊橘。
3. 請解釋自動裝箱、自動拆箱與常量池
自動裝箱:將基本數(shù)據(jù)類型轉(zhuǎn)換為對象
自動拆箱:將對象轉(zhuǎn)換為基本數(shù)據(jù)類型
常量池:Java中的常量池又分為靜態(tài)常量池和運行時常量池颂鸿。?所謂靜態(tài)常量池促绵,即*.class文件中的常量池,class文件中的常量池不僅僅包含字符串(數(shù)字)字面量嘴纺,還包含類败晴、方法的信息,占用class文件絕大部分空間颖医,這種常量池主要用于存放兩大類常量:字面量(Literal)和符號引用量(Symbolic References)位衩,字面量相當于Java語言層面常量的概念,符號引用則屬于編譯原理方面的概念熔萧,包括了三種類型的常量(類和接口的全限定名糖驴、字段名稱和描述符、方法名稱和描述符)佛致;?而運行時常量池贮缕,則是jvm虛擬機在完成類裝載操作后,將class文件中的常量池載入到內(nèi)存中俺榆,并保存在方法區(qū)中感昼,我們常說的常量池,就是指方法區(qū)中的運行時常量池罐脊。常量池是為了避免頻繁的創(chuàng)建和銷毀對象而影響系統(tǒng)性能定嗓,實現(xiàn)了對象的共享蜕琴。
4.進程和線程的區(qū)別
1).線程是進程的子集,一個進程可以有很多線程宵溅,每條線程并行執(zhí)行不同的任務凌简。
2).地址空間:同一進程的線程共享本進程的地址空間,而進程之間則是獨立的地址空間恃逻。
3).資源擁有:同一進程內(nèi)的線程共享本進程的資源如內(nèi)存雏搂、I/O、cpu等寇损,但是進程之間的資源是獨立的凸郑。一個進程崩潰后,在保護模式下不會對其他進程產(chǎn)生影響矛市,但是一個線程崩潰整個進程都死掉芙沥。所以多進程要比多線程健壯。進程切換時尘盼,消耗的資源大憨愉,效率高。所以涉及到頻繁的切換時卿捎,使用線程要好于進程配紫。同樣如果要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程不能用進程
4).執(zhí)行過程:每個獨立的進程程有一個程序運行的入口午阵、順序執(zhí)行序列和程序入口躺孝。但是線程不能獨立執(zhí)行,必須依存在應用程序中底桂,由應用程序提供多個線程執(zhí)行控制植袍。
5).線程是處理器調(diào)度的基本單位,但是進程不是籽懦。
5.
比較一下Java和JavaSciprt
1).JavaScript 與Java是兩個公司開發(fā)的不同的兩個產(chǎn)品于个。Java 是原Sun Microsystems公司推出的面向?qū)ο蟮某绦蛟O計語言,特別適合于互聯(lián)網(wǎng)應用程序開發(fā)暮顺;而JavaScript是Netscape公司的產(chǎn)品厅篓,為了擴展Netscape瀏覽器的功能而開發(fā)的一種可以嵌入Web頁面中運行的基于對象和事件驅(qū)動的解釋性語言。
2).Java是一種真正的面向?qū)ο蟮恼Z言捶码,即使是開發(fā)簡單的程序羽氮,必須設計對象;JavaScript是種腳本語言惫恼,它可以用來制作與網(wǎng)絡無關的档押,與用戶交互作用的復雜軟件。它是一種基于對象(Object-Based)和事件驅(qū)動(Event-Driven)的編程語言,因而它本身提供了非常豐富的內(nèi)部對象供設計人員使用
3).Java的源代碼在執(zhí)行之前令宿,必須經(jīng)過編譯叼耙。JavaScript是一種解釋性編程語言,其源代碼不需經(jīng)過編譯掀淘,由瀏覽器解釋執(zhí)行旬蟋。(目前的瀏覽器幾乎都使用了JIT(即時編譯)技術來提升JavaScript的運行效率)
4).Java采用強類型變量檢查油昂,即所有變量在編譯之前必須作聲明革娄;JavaScript中變量是弱類型的,甚至在使用變量前可以不作聲明冕碟,JavaScript的解釋器在運行時檢查推斷其數(shù)據(jù)類型拦惋。
5).代碼格式不一樣。
6. Error和Exception有什么區(qū)別安寺?
????????Error表示系統(tǒng)級的錯誤和程序不必處理的異常厕妖,是恢復不是不可能但很困難的情況下的一種嚴重問題;比如內(nèi)存溢出挑庶,不可能指望程序能處理這樣的情況言秸;Exception表示需要捕捉或者需要程序進行處理的異常,是一種設計或?qū)崿F(xiàn)問題迎捺;也就是說举畸,它表示如果程序運行正常,從不會發(fā)生的情況凳枝。
7. Java語言如何進行異常處理抄沮,關鍵字:throws、throw岖瑰、try叛买、catch、finally分別如何使用蹋订?
? ??????在Java中率挣,每個異常都是一個對象,它是Throwable類或其子類的實例露戒。當一個方法出現(xiàn)異常后便拋出一個異常對象椒功,該對象中包含有異常信息,調(diào)用這個對象的方法可以捕獲到這個異常并可以對其進行處理玫锋。
????????Java的異常處理是通過5個關鍵詞來實現(xiàn)的:try蛾茉、catch、throw撩鹿、throws和finally谦炬。一般情況下是用try來執(zhí)行一段程序,如果系統(tǒng)會拋出(throw)一個異常對象,可以通過它的類型來捕獲(catch)它键思,或通過總是執(zhí)行代碼塊(finally)來處理础爬;try用來指定一塊預防所有異常的程序;catch子句緊跟在try塊后面吼鳞,用來指定你想要捕獲的異常的類型看蚜;throw語句用來明確地拋出一個異常;throws用來聲明一個方法可能拋出的各種異常(當然聲明異常時允許無病呻吟)赔桌;finally為確保一段代碼不管發(fā)生什么異常狀況都要被執(zhí)行供炎。
8. 闡述final、finally疾党、finalize的區(qū)別
?final:修飾符(關鍵字)有三種用法:如果一個類被聲明為final音诫,意味著它不能再派生出新的子類,即不能被繼承雪位,因此它和abstract是反義詞竭钝。將變量聲明為final,可以保證它們在使用中不被改變雹洗,被聲明為final的變量必須在聲明時給定初值香罐,而在以后的引用中只能讀取不可修改。被聲明為final的方法也同樣只能使用时肿,不能在子類中被重寫庇茫。
finally:通常放在try…catch…的后面構(gòu)造總是執(zhí)行代碼塊,這就意味著程序無論正常執(zhí)行還是發(fā)生異常嗜侮,這里的代碼只要JVM不關閉都能執(zhí)行港令,可以將釋放外部資源的代碼寫在finally塊中。
finalize:Object類中定義的方法锈颗,Java中允許使用finalize()方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作顷霹。這個方法是由垃圾收集器在銷毀對象時調(diào)用的,通過重寫finalize()方法可以整理系統(tǒng)資源或者執(zhí)行其他清理工作击吱。
9. List淋淀、Set、Map是否繼承自Collection接口覆醇?
????????List朵纷、Set 是,Map 不是永脓。Map是鍵值對映射容器袍辞,與List和Set有明顯的區(qū)別,而Set存儲的零散的元素且不允許有重復元素(數(shù)學中的集合也是如此)常摧,List是線性結(jié)構(gòu)的容器搅吁,適用于按數(shù)值索引訪問元素的情形威创。
10. ArrayList,Vector谎懦,LinkedList的存儲性能和特性
????????ArrayList和Vector都是使用數(shù)組的方式來存儲數(shù)據(jù)肚豺,此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號查找元素界拦,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作吸申,所以查找數(shù)據(jù)快而插入數(shù)據(jù)慢;Vector 由于使用了synchronized 方法(線程安全) 享甸,通常性能上較 ArrayList 差截碴;而 LinkedList 使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷枪萄,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可隐岛,所以插入速度較快。
11. Collection和Collections的區(qū)別
????????Collection是一個接口瓷翻,它是Set、List等容器的父接口割坠;Collections是個一個工具類齐帚,提供了一系列的靜態(tài)方法來輔助容器操作,這些方法包括對容器的搜索彼哼、排序对妄、線程安全化等等。
12. List敢朱、Map剪菱、Set三個接口存取元素時,各有什么特點拴签?
? ??????List以特定索引來存取元素孝常,可以有重復元素。Set不能存放重復元素(用對象的equals()方法來區(qū)分元素是否重復)蚓哩。Map保存鍵值對(key-value pair)映射构灸,映射關系可以是一對一或多對一。Set和Map容器都有基于哈希存儲和排序樹的兩種實現(xiàn)版本岸梨,基于哈希存儲的版本理論存取時間復雜度為O(1)喜颁,而基于排序樹版本的實現(xiàn)在插入或刪除元素時會按照元素或元素的鍵(key)構(gòu)成排序樹從而達到排序和去重的效果。
13. Thread類的sleep()方法和對象的wait()方法都可以讓線程暫停執(zhí)行曹阔,它們有什么區(qū)別?
? ??????sleep()方法(休眠)是線程類(Thread)的靜態(tài)方法半开,調(diào)用此方法會讓當前線程暫停執(zhí)行指定的時間,將執(zhí)行機會(CPU)讓給其他線程赃份,但是對象的鎖依然保持寂拆,因此休眠時間結(jié)束后會自動恢復。wait()是Object類的方法,調(diào)用對象的wait()方法導致當前線程放棄對象的鎖(線程暫停執(zhí)行)漓库,進入對象的等待池(wait pool)恃慧,只有調(diào)用對象的notify()方法(或notifyAll()方法)時才能喚醒等待池中的線程進入等鎖池(lock pool),如果線程重新獲得對象的鎖就可以進入就緒狀態(tài)渺蒿。
14. 當一個線程進入一個對象的synchronized方法A之后痢士,其它線程是否可進入此對象的synchronized方法B?
????????不能茂装。其它線程只能訪問該對象的非同步方法怠蹂,同步方法則不能進入。因為非靜態(tài)方法上的synchronized修飾符要求執(zhí)行方法時要獲得對象的鎖少态,如果已經(jīng)進入A方法說明對象鎖已經(jīng)被取走城侧,那么試圖進入B方法的線程就只能在等鎖池(注意不是等待池哦)中等待對象的鎖。
15. 請說出與線程同步以及線程調(diào)度相關的方法彼妻。
wait():使一個線程處于等待(阻塞)狀態(tài)嫌佑,并且釋放所持有的對象的鎖;
sleep():使一個正在運行的線程處于睡眠狀態(tài)侨歉,是一個靜態(tài)方法屋摇,調(diào)用此方法要處理InterruptedException異常;
notify():喚醒一個處于等待狀態(tài)的線程幽邓,當然在調(diào)用此方法的時候炮温,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程牵舵,而且與優(yōu)先級無關柒啤;
notityAll():喚醒所有處于等待狀態(tài)的線程,該方法并不是將對象的鎖給所有線程畸颅,而是讓它們競爭担巩,只有獲得鎖的線程才能進入就緒狀態(tài);
16. 編寫多線程程序有幾種實現(xiàn)方式重斑?
????????Java 5以前實現(xiàn)多線程有兩種實現(xiàn)方法:一種是繼承Thread類兵睛;另一種是實現(xiàn)Runnable接口。兩種方式都要通過重寫run()方法來定義線程的行為窥浪,推薦使用后者祖很,因為Java中的繼承是單繼承,一個類有一個父類漾脂,如果繼承了Thread類就無法再繼承其他類了假颇,顯然使用Runnable接口更為靈活。
????????Java 5以后創(chuàng)建線程還有第三種方式:實現(xiàn)Callable接口骨稿,該接口中的call方法可以在線程執(zhí)行結(jié)束時產(chǎn)生一個返回值笨鸡。
17. 舉例說明同步和異步
????????如果系統(tǒng)中存在臨界資源(資源數(shù)量少于競爭資源的線程數(shù)量的資源)姜钳,例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了形耗,那么這些數(shù)據(jù)就必須進行同步存雀缜拧(數(shù)據(jù)庫操作中的排他鎖就是最好的例子)。當應用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法激涤,并且不希望讓程序等待方法的返回時拟糕,就應該使用異步編程,在很多情況下采用異步途徑往往更有效率倦踢。事實上送滞,所謂的同步就是指阻塞式操作,而異步就是非阻塞式操作辱挥。
18. 什么是線程池(Thread Pool)犁嗅?
????????線程池顧名思義就是事先創(chuàng)建若干個可執(zhí)行的線程放入一個池(容器)中,需要的時候從池中獲取線程不用自行創(chuàng)建晤碘,使用完畢不需要銷毀線程而是放回池中褂微,從而減少創(chuàng)建和銷毀線程對象的開銷。
19. Java中如何實現(xiàn)序列化哼蛆,有什么意義蕊梧?
? ? ? ? 序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內(nèi)容進行流化腮介。可以對流化后的對象進行讀寫操作端衰,也可將流化后的對象傳輸于網(wǎng)絡之間叠洗。序列化是為了解決對象流讀寫操作時可能引發(fā)的問題(如果不進行序列化可能會存在數(shù)據(jù)亂序的問題)。
????????要實現(xiàn)序列化旅东,需要讓一個類實現(xiàn)Serializable接口灭抑,該接口是一個標識性接口,標注該類對象是可被序列化的抵代,然后使用一個輸出流來構(gòu)造一個對象輸出流并通過writeObject(Object)方法就可以將實現(xiàn)對象寫出(即保存其狀態(tài))腾节;如果需要反序列化則可以用一個輸入流建立對象輸入流,然后通過readObject方法從流中讀取對象荤牍。序列化除了能夠?qū)崿F(xiàn)對象的持久化之外案腺,還能夠用于對象的深度克隆
20. Java中有幾種類型的流?
????????字節(jié)流和字符流康吵。字節(jié)流繼承于InputStream劈榨、OutputStream,字符流繼承于Reader晦嵌、Writer同辣。在java.io 包中還有許多其他的流拷姿,主要是為了提高性能和使用方便。關于Java的I/O需要注意的有兩點:一是兩種對稱性(輸入和輸出的對稱性旱函,字節(jié)和字符的對稱性)响巢;二是兩種設計模式(適配器模式和裝潢模式)。
21. jsp有哪些內(nèi)置對象棒妨?作用分別是什么踪古?
1).request對象:客戶端的請求信息被封裝在request對象中,通過????它才能了解到客戶的需求靶衍,然后做出響應灾炭。它是HttpServletRequest類的實例。
2).response對象:response對象包含了響應客戶請求的有關信息颅眶,但在JSP中很少直接用到它蜈出。它是HttpServletResponse類的實例。
3).session對象:session對象指的是客戶端與服務器的一次會話涛酗,從客戶端連到服務器的一個WebApplication開始铡原,直到客戶端與服務器斷開連接為止。它是HttpSession類的實例商叹。
4).out對象:out對象是JspWriter類的實例,是向客戶端輸出內(nèi)容常用的對象
5).page對象:page對象就是指向當前JSP頁面本身燕刻,有點象類中的this指針,它是java.lang.Object類的實例
6).application對象:application對象實現(xiàn)了用戶間數(shù)據(jù)的共享剖笙,可存放全局變量卵洗。它開始于服務器的啟動,直到服務器的關閉弥咪,在此期間过蹂,此對象將一直存在;這樣在用戶的前后連接或不同用戶之間的連接中聚至,可以對此對象的同一屬性進行操作酷勺;在任何地方對此對象屬性的操作,都將影響到其他用戶對此的訪問扳躬。服務器的啟動和關閉決定了application對象的生命脆诉。它是ServletContext類的實例
7).exception對象:exception對象是一個例外對象,當一個頁面在運行過程中發(fā)生了例外贷币,就產(chǎn)生這個對象击胜。如果一個JSP頁面要應用此對象,就必須把isErrorPage設為true片择,否則無法編譯潜的。他實際上是java.lang.Throwable的對象
8).pageContext對象:pageContext對象提供了對JSP頁面內(nèi)所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION字管,也可以取本頁面所在的application的某一屬性值啰挪,他相當于頁面中所有功能的集大成者信不,它的本類名也叫pageContext。
9).config對象:config對象是在一個Servlet初始化時亡呵,JSP引擎向它傳遞信息用的抽活,此信息包括Servlet初始化時所要用到的參數(shù)(通過屬性名和屬性值構(gòu)成)以及服務器的有關信息(通過傳遞一個ServletContext對象)
22. 闡述JDBC操作數(shù)據(jù)庫的步驟
1).加載驅(qū)動。
2).創(chuàng)建連接锰什。
3).創(chuàng)建語句下硕。
4).執(zhí)行語句。
5).處理結(jié)果汁胆。
6).關閉資源梭姓。
23. 使用JDBC操作數(shù)據(jù)庫時,如何提升讀取數(shù)據(jù)的性能嫩码?如何提升更新數(shù)據(jù)的性能誉尖?
????????要提升讀取數(shù)據(jù)的性能,可以指定通過結(jié)果集(ResultSet)對象的setFetchSize()方法指定每次抓取的記錄數(shù)(典型的空間換時間策略)铸题;要提升更新數(shù)據(jù)的性能可以使用PreparedStatement語句構(gòu)建批處理铡恕,將若干SQL語句置于一個批處理中執(zhí)行。
24. 什么是DAO模式丢间?
????????DAO(DataAccess Object)顧名思義是一個為數(shù)據(jù)庫或其他持久化機制提供了抽象接口的對象探熔,在不暴露底層持久化方案實現(xiàn)細節(jié)的前提下提供了各種數(shù)據(jù)訪問操作。在實際的開發(fā)中烘挫,應該將所有對數(shù)據(jù)源的訪問操作進行抽象化后封裝在一個公共API中诀艰。用程序設計語言來說,就是建立一個接口饮六,接口中定義了此應用程序中將會用到的所有事務方法涡驮。在這個應用程序中,當需要和數(shù)據(jù)源進行交互的時候則使用這個接口喜滨,并且編寫一個單獨的類來實現(xiàn)這個接口,在邏輯上該類對應一個特定的數(shù)據(jù)存儲撤防。DAO模式實際上包含了兩個模式虽风,一是Data Accessor(數(shù)據(jù)訪問器),二是Data Object(數(shù)據(jù)對象)寄月,前者要解決如何訪問數(shù)據(jù)的問題辜膝,而后者要解決的是如何用對象封裝數(shù)據(jù)。
25. 事務的ACID是指什么漾肮?
原子性(Atomic):事務中各項操作厂抖,要么全做要么全不做,任何一項操作的失敗都會導致整個事務的失斂税谩忱辅;
一致性(Consistent):事務結(jié)束后系統(tǒng)狀態(tài)是一致的七蜘;
隔離性(Isolated):并發(fā)執(zhí)行的事務彼此無法看到對方的中間狀態(tài);
持久性(Durable):事務完成后所做的改動都會被持久化墙懂,即使發(fā)生災難性的失敗橡卤。通過日志和同步備份可以在故障發(fā)生后重建數(shù)據(jù)。
26. JDBC中如何進行事務處理损搬?
????????Connection提供了事務處理的方法碧库,通過調(diào)用setAutoCommit(false)可以設置手動提交事務;當事務完成后用commit()顯式提交事務巧勤;如果在事務處理過程中發(fā)生異常則通過rollback()進行事務回滾嵌灰。除此之外,從JDBC 3.0中還引入了Savepoint(保存點)的概念颅悉,允許通過代碼設置保存點并讓事務回滾到指定的保存點沽瞭。
27. 簡述正則表達式及其用途。
????????在編寫處理字符串的程序時签舞,經(jīng)常會有查找符合某些復雜規(guī)則的字符串的需要秕脓。正則表達式就是用于描述這些規(guī)則的工具。換句話說儒搭,正則表達式就是記錄文本規(guī)則的代碼吠架。
28. 什么是UML?
????????UML是統(tǒng)一建模語言(Unified Modeling Language)的縮寫搂鲫,它發(fā)表于1997年傍药,綜合了當時已經(jīng)存在的面向?qū)ο蟮慕UZ言、方法和過程魂仍,是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言拐辽,為軟件開發(fā)的所有階段提供模型化和可視化支持。使用UML可以幫助溝通與交流擦酌,輔助應用設計和文檔的生成俱诸,還能夠闡釋系統(tǒng)的結(jié)構(gòu)和行為。
29. get和post請求的區(qū)別赊舶?
①get請求用來從服務器上獲得資源睁搭,而post是用來向服務器提交數(shù)據(jù);
②get將表單中數(shù)據(jù)按照name=value的形式笼平,添加到action 所指向的URL 后面园骆,并且兩者使用"?"連接,而各個變量之間使用"&"連接寓调;post是將表單中的數(shù)據(jù)放在HTTP協(xié)議的請求頭或消息體中锌唾,傳遞到action所指向URL;
③get傳輸?shù)臄?shù)據(jù)要受到URL長度限制(1024字節(jié))夺英;而post可以傳輸大量的數(shù)據(jù)晌涕,上傳文件通常要使用post方式滋捶;
④使用get時參數(shù)會顯示在地址欄上,如果這些數(shù)據(jù)不是敏感數(shù)據(jù)渐排,那么可以使用get炬太;對于敏感數(shù)據(jù)還是應用使用post;
⑤get使用MIME類型application/x-www-form-urlencoded的URL編碼(也叫百分號編碼)文本的格式傳遞參數(shù)驯耻,保證被傳送的參數(shù)由遵循規(guī)范的文本組成亲族,例如一個空格的編碼是"%20"。
30. 常用的Web服務器有哪些可缚?
IIS:Microsoft的Web服務器產(chǎn)品霎迫,全稱是Internet Information Services。IIS是允許在公共Intranet或Internet上發(fā)布信息的Web服務器帘靡。IIS是目前最流行的Web服務器產(chǎn)品之一知给,很多著名的網(wǎng)站都是建立在IIS的平臺上。IIS提供了一個圖形界面的管理工具描姚,稱為Internet服務管理器涩赢,可用于監(jiān)視配置和控制Internet服務。IIS是一種Web服務組件轩勘,其中包括Web服務器筒扒、FTP服務器、NNTP服務器和SMTP服務器绊寻,分別用于網(wǎng)頁瀏覽花墩、文件傳輸、新聞服務和郵件發(fā)送等方面澄步,它使得在網(wǎng)絡(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事冰蘑。它提供ISAPI(Intranet Server API)作為擴展Web服務器功能的編程接口;同時村缸,它還提供一個Internet數(shù)據(jù)庫連接器祠肥,可以實現(xiàn)對數(shù)據(jù)庫的查詢和更新。
Kangle:Kangle Web服務器是一款跨平臺梯皿、功能強大搪柑、安全穩(wěn)定、易操作的高性能Web服務器和反向代理服務器軟件索烹。此外,Kangle也是一款專為做虛擬主機研發(fā)的Web服務器弱睦。實現(xiàn)虛擬主機獨立進程百姓、獨立身份運行。用戶之間安全隔離况木,一個用戶出問題不影響其他用戶垒拢。支持PHP旬迹、ASP、ASP.NET求类、Java奔垦、Ruby等多種動態(tài)開發(fā)語言。
WebSphere:WebSphere Application Server是功能完善尸疆、開放的Web應用程序服務器椿猎,是IBM電子商務計劃的核心部分,它是基于Java的應用環(huán)境寿弱,用于建立犯眠、部署和管理Internet和Intranet Web應用程序,適應各種Web應用程序服務器的需要症革。
WebLogic:WebLogic Server是一款多功能、基于標準的Web應用服務器噪矛,為企業(yè)構(gòu)建企業(yè)應用提供了堅實的基礎。針對各種應用開發(fā)艇挨、關鍵性任務的部署,各種系統(tǒng)和數(shù)據(jù)庫的集成雷袋、跨Internet協(xié)作等Weblogic都提供了相應的支持。由于它具有全面的功能楷怒、對開放標準的遵從性、多層架構(gòu)鸠删、支持基于組件的開發(fā)等優(yōu)勢抱完,很多公司的企業(yè)級應用都選擇它來作為開發(fā)和部署的環(huán)境。WebLogic Server在使應用服務器成為企業(yè)應用架構(gòu)的基礎方面一直處于領先地位刃泡,為構(gòu)建集成化的企業(yè)級應用提供了穩(wěn)固的基礎巧娱。
?Apache:目前Apache仍然是世界上用得最多的Web服務器,其市場占有率很長時間都保持在60%以上(目前的市場份額約40%左右)烘贴。世界上很多著名的網(wǎng)站都是Apache的產(chǎn)物禁添,它的成功之處主要在于它的源代碼開放、有一支強大的開發(fā)團隊桨踪、支持跨平臺的應用(可以運行在幾乎所有的Unix老翘、Windows、Linux系統(tǒng)平臺上)以及它的可移植性等方面。
Tomcat:Tomcat是一個開放源代碼铺峭、運行Servlet和JSP的容器墓怀。Tomcat實現(xiàn)了Servlet和JSP規(guī)范。此外卫键,Tomcat還實現(xiàn)了Apache-Jakarta規(guī)范而且比絕大多數(shù)商業(yè)應用軟件服務器要好傀履,因此目前也有不少的Web服務器都選擇了Tomcat。
Nginx:讀作"engine x"莉炉,是一個高性能的HTTP和反向代理服務器钓账,也是一個IMAP/POP3/SMTP代理服務器。 Nginx是由Igor Sysoev為俄羅斯訪問量第二的Rambler站點開發(fā)的呢袱,第一個公開版本0.1.0發(fā)布于2004年10月4日官扣。其將源代碼以類BSD許可證的形式發(fā)布,因它的穩(wěn)定性羞福、豐富的功能集惕蹄、示例配置文件和低系統(tǒng)資源的消耗而聞名。在2014年下半年治专,Nginx的市場份額達到了14%卖陵。