欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Mozilla研究—mozilla中的設計亮點(diǎn)

mozilla是一個(gè)以瀏覽器為中心的軟件平臺,它在我們平臺中占有重要地位。我們用它來(lái)實(shí)現WEB瀏覽器、WAP瀏覽器、郵件系統、電子書(shū)和幫助閱讀器等應用程序。為此,我最近花了不少時(shí)間去閱讀mozilla的代碼和文檔,我將寫(xiě)一系列的BLOG作為筆記,供有需要的朋友參考。本文介紹一下mozilla中的設計亮點(diǎn)。

 

近幾年我看了不少大型開(kāi)源系統,它們每個(gè)設計得都很經(jīng)典,而mozilla無(wú)疑是其中的佼佼者之一。好的設計總是遵循一些眾所周知的設計準則,套句俗語(yǔ)說(shuō),差的設計千差萬(wàn)別,好的設計都差不多。Mozilla也一樣,它也無(wú)非是遵循了一些好的準則,只是實(shí)現手段有些差異罷了。這里簡(jiǎn)單的說(shuō)一說(shuō),就算是溫故知新吧。

 

1.       針對接口編程。

Mozilla整個(gè)設計都是基于組件對象模型(COM)的,而組件對象模型(COM)的主要特點(diǎn)就是針對接口編程。在《設計模式》中,作者把針對接口編程作為設計的首要準則。針對接口編程的主要目的就是信息隱藏,隔離變化,把模塊的使用者和實(shí)現者之間的耦合減到最小。而且在XPCOM的幫助下,組件可以動(dòng)態(tài)替換或者增加,具有更強的靈活性。

 

2.       分離界面和實(shí)現。

在這一方面,mozilla算是非常前衛了:用標記語(yǔ)言(XML)開(kāi)發(fā)界面,用編程語(yǔ)言來(lái)實(shí)現(C++)邏輯,而用腳本語(yǔ)言(javascript)把兩者膠合起來(lái),這可以說(shuō)是把三者的長(cháng)處發(fā)揮到了極致。以前我也有過(guò)類(lèi)似的想法,當時(shí)剛進(jìn)入手機行業(yè),我發(fā)現各種GUI的不統一,導致手機程序移植非常困難。當時(shí)就想,如果應用程序的界面用HTML來(lái)寫(xiě),應用程序的邏輯用C/C++寫(xiě),界面在瀏覽器中運行,而應用程序的邏輯作為WEB服務(wù)器運行。再擴展一下HTTP協(xié)議,支持異步事件,完全可以實(shí)現傳統的應用程序。后來(lái)發(fā)現mozilla早就實(shí)現了類(lèi)似的東東,讓我大跌眼鏡。

 

另外mozilla也大量應用了觀(guān)察者模式,這對分離界面和實(shí)現很有幫助。比如,網(wǎng)絡(luò )操作通常都要花很長(cháng)時(shí)間,在此期間要報告操作的當前狀態(tài)。通過(guò)觀(guān)察者模式,可以在長(cháng)時(shí)間操作中更新?tīng)顟B(tài),而又避免了操作與用戶(hù)界面的耦合。

 

3.       可移植性。

Mozilla是一個(gè)跨平臺的軟件,它的基本運行平臺有linux、windows和mac,實(shí)際上它還可以運行在其它unix平臺上,所以可移植性是mozilla是主要目標之一。如果開(kāi)發(fā)過(guò)跨平臺軟件,你就會(huì )知道開(kāi)發(fā)可移植性軟件是多么困難,特別是大型GUI應用程序。Mozilla在可移植性上可謂費盡苦心:

l         實(shí)現了一套跨平臺的組件對象模型(XPCOM),這使得mozilla可以利用組件對象模型(COM)的好處,而又不限于windows平臺。

l         實(shí)現了一套可移植運行庫,對各種操作系統的接口作了抽象,隔離上層模塊對操作系統的依賴(lài)。

l         實(shí)現了自己國際化機制,包括編碼轉換、編碼檢測和字符串翻譯等等。

l         GUI作了抽象,實(shí)現了widget和gfx兩個(gè)庫,前者負責窗口/控件的處理,后者負責圖形/圖像的繪制??梢杂貌煌腉UI作為實(shí)現后端。

 

4.       可擴展性。

對于瀏覽器來(lái)說(shuō),可擴展性也是非常重要的。由于它涉及的東西太多,專(zhuān)業(yè)的功能應該由專(zhuān)業(yè)的廠(chǎng)商去做,而不是全部由瀏覽器來(lái)實(shí)現。比如像flash播放、視頻播放和pdf閱讀等等都應該從瀏覽器中分離出來(lái)。Mozilla提供了兩種擴展機制,一種稱(chēng)為plugin,另外一種稱(chēng)為extension。這可能有點(diǎn)讓人混淆,我是這樣理解的:

l         plugin用來(lái)增強現有功能,比如wml browser plugin可以把wml轉換成html,而media player plugin可以播放音/視頻文件。所有的plugin都要實(shí)現指定的接口。

l         extension用來(lái)擴展新功能,這些功能可能與瀏覽器有關(guān),也可能無(wú)關(guān),像help extension就是用來(lái)實(shí)現幫助功能的。Extension不必實(shí)現特定的接口。

 

5.       穩定性(內存問(wèn)題檢測)。

C/C++開(kāi)發(fā)的應用程序,最大的毛病就是容易出現內存泄露和越界,即使有多年開(kāi)發(fā)經(jīng)驗的老手也可能在此栽了跟頭。有人說(shuō),有很多工具可以幫助檢測內存問(wèn)題啊。沒(méi)錯,但有兩種情況可能讓這些工具失效,一是GUI系統,它們通常使用了共享內存,大多數工具對此都無(wú)能為力。不信的話(huà),你可以用valgrind檢查一下GTK應用程序試試。二是自己管理了內存,大型系統中,為了高效的利用內存,往往實(shí)現了自己的內存管理器,工具對此一無(wú)所知,自然幫不上忙。

 

Mozilla實(shí)現了自己的內存管理器,同時(shí)還實(shí)現多種內存問(wèn)題檢查機制,比如用boehm垃圾回收機制來(lái)檢查內存泄露問(wèn)題。當然,對于C/C++這個(gè)毛病,也是迫不得已,大家都在重復實(shí)現這些東西,卻沒(méi)有好的重用辦法,這不怪mozilla。

 

~~end~~

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java編程語(yǔ)言中EJB技術(shù)的詳細說(shuō)明
XUL - 快速開(kāi)發(fā)跨平臺易用用戶(hù)接口的新途徑
OSGi: Eclipse的根基
J2SE J2EE J2ME JDK JSDK JRE JVM什么意思
.net的命名空間類(lèi)庫的簡(jiǎn)單介紹
.Net掃盲
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久