webkit源碼閱讀:dom樹的構建

 今天關注webkit中dom樹是怎麼構建的,HTML是怎麼分析的。1、dom相關的代碼在webcore中dom目錄下,有很多類,比較重要的是Document.h、DocumentFragment.h、DocumentParser.hDocumentParser是一個基類感覺好像沒幹什麼事,只是傳入了一個開始parse的狀態,在DocumentFragment中有parseHTML,好像開始了真正的parse操作; 2、HTML的parse操作,從DocumentFragment中的parseH

淺談WebKit之JavaScriptCore/V8篇

轉載:http://ourpgh.blogspot.com/2008/09/webkitjavascriptcorev8.html WebKit作為一個瀏覽器引擎,其中Javascript實現包括JavaScriptCore和V8,為了能更全面的瞭解WebKit,我們需要深入的瞭解Javascript實現的基本原理、其在WebKit中的作用以及與其他部分之間的互動,同時與Gecko中的Javacript實現作初步的對比。讓我們開始瞭解WebKit之Javascript實現JavaScriptCo

GYP(Generate Your Project)一個很有價值的構建系統

因為閱讀chromium的需要,也熟悉了一下chromium使用的GYP構建系統,其實這個系統和我原來所在的一個公司的構建系統非常相似,因此學習起來也比較容易。首先看一下gyp的安裝,如果你使用ubuntu系統那麼安裝可以通過下面的命令完成:sudo apt-get install gyp下面我們就通過一個例子來看看gyp的使用,假設我們編寫三個檔案hello_world.cc, my_class.h, my_class.cc這三個檔案內容如下:hello_world.cc#include

淺談WebKit之WebCore篇

 轉自:http://ourpgh.blogspot.com/2008/09/webkitwebcore.html最近自從Google推出Chrome瀏覽器之後,瀏覽器受到人們更加廣泛的關注,網上時而會出現這樣那樣的評價,作為一個瀏覽器核心愛好者,希望能乘著大家都關注的東風,能對瀏覽器核心有更深入的理解,進而能更好的進行Web開發及利用。Chrome瀏覽器的代碼量其實是非常龐大的,要想對其有深入的理解,僅僅編譯編譯調試調試,是很難深入下去的。讓我們還是從其主要部分如多進程管理通訊、WebKit、

js中的delete機制

在javascript中,我們有時候要使用delete刪除對象。但是,對於delete的一些細節我們未必盡知。昨天,看到kangax分析delete的文章,獲益匪淺。本文將文章的精華部分翻譯出來,與各位分享。原理 代碼類型 執行內容 啟用物件/可變對象 屬性特性 內建對象和DontDelete 未聲明的賦值 Firebug 困惑 通過eval刪除變數 瀏覽器安全色性 Gecko DontDelete bug IE bugs 誤區 ‘delete’和宿主對象 ES5strict 模式 總結 1.

ubuntu compile b2g

安裝軟體sudo apt-get install git ccache bison flex libx11-dev libgl1-mesa-dev make curl bzip2 ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib配置libX11\libGLcd /usr/lib/i386-linux-gnusudo ln -s libX11.so.6 libX11.sosudo ln -s mesa/libGL.

undefined reference to error解決方案

Linux下編譯器時,經常會遇到“undefined reference error” 報錯,這裡總結一些可能的原因和解決方案,給需要的朋友:說道undefined reference error,先提一下Linux gcc連結規則:連結的時候尋找順序是:-L 指定的路徑, 從左至右依次尋找 由 環境變數 LIBRARY_PATH 指定的路徑,使用":"分割從左至右依次尋找 /etc/ld.so.conf 指定的路徑順序 /lib 和 /usr/lib

求子數組之和最大值(包括迴圈)

編程珠璣中給出了n*logn的解法,很有參考價值。O(n)的掃描方法,用到了前面分析的若干策略:1) 從某個位置開始,到i位置結束的sum的計算方法是max_ending_here + array[i]2)以往的最大值是max_sofar,要和到當前結束點的最大值進行比較取其大者3)如果max_ending_here +

WebKit介紹及總結(三)

http://blog.csdn.net/achellies/article/details/6106956六 . 編譯與調試在 ubuntu-10.04 上編譯 Webkit ,所用的版本 r60742 ,基於 Qt :安裝 sudo apt-get install libxslt-dev gperf bison libsqlite3-dev flex libqt4-dev build-essential subversion libenchant-dev

程式設計的非常規總結

一般思想1、將問題簡化,從比較簡單的情況開始分析,比如1個元素情況,2個元素情況,3個元素情況,不斷增加,尋找規律,這樣有利於發現規律,從而解決問題,並且也有利於處理邊界情況。比如編程之美1.11、又如送貨站選址問題、1的個數問題等都可一通過逐漸的分析加以解決2、從比較簡單的例子,類比程式運行過程,比如二分尋找,可以使用4個元素的例子,類比尋找過程,總結判斷條件等。3、拿到一個問題,首先看看能否依照題意通過迴圈直接求解,能否分治求解,分治求解關鍵的是兩部和合并後如何求解,例如距離最近的點問題,歸

HashTable的實現測試

1)衝突解決方式,通過鏈表解決2)slot數組中是否儲存資料的問題,這個是一個容易讓人困惑的問題,解決方案是slot不是HashNode的數組,而是一組指向HashNode的指標,因此slot數組中肯定不會儲存資料3)slot大小的選擇,在HashTable的建構函式中設定大小,但hash函數使用了乘法策略,因此需要找到一個2^p>使用者給的size的p,以2^p作為size,但存在這樣的情況,如果使用者給定大小size=33,實際的大小為64,最多是使用者給定大小的2倍。4)雜湊函數使用

KMP演算法與string::find以及strstr的比較

首先,簡單描述一下KMP演算法,要理解好KMP演算法,最好參考演算法導論[1],尤其是先理解好自動機匹配的方法,再看KMP就很容易理解了。它利用的是一個關鍵的回退原理,也就是如果匹配失敗時,那麼我知道只要從模式的某個位置繼續匹配就可以了,這個回退的位置事先通過模式計算出來,也就是說如果某個位置匹配不成功,就回退到事先算好的位置,繼續匹配。這個事先算好的位置就是從0到該位置應該是匹配不成功處的一個尾碼。這個過程可以通過已經算好的回退位置來遞推出來。從演算法的描述看,回退的數組的構建與匹配的過程是非

關於Hash的總結

hash函數  hash函數常用的是mod 素數,或者使用乘法策略,取某些位,這些策略直接影響到hash table的resize,如果是mod素數的話,只能按素數來遞增,如果是取乘法方法,只能以2^p來遞增。  參考文獻[1][2]等給出了很多,常用的字串hash函數,但更有價值的還包括下面這兩個:  murmur hash[3][4],其中[3]無法直接存取,不過本文的例子中有具體的實現,更多murmur hash[8]。  city hash見參考文獻[5]hash table的構建 

尋找最近點對

題目:平面中有若干個點,尋找距離最近的兩個點。分析:方法1:兩兩點比較,尋找最近的兩個點對,複雜度O(N^2),優點代碼簡單不容易出錯方法2:觀察兩兩比較的方法,發現有很多無用的比較,對於每一個點只要計算到它最近的點的距離就可以了,枚舉所有的點,最後得出距離最近的一對點,但對於一個給定的點,如何找到距離它最近的點呢?可以使用一些啟發學習法規則,減少比較的次數,例如:對於(x,y)取x軸投影上最近的點p1(x1,y1)和取y軸上投影最近的點p2(x2,y2),以(x,y)為一個定點,取x1,x2中

機率發生器(產生均勻和非均勻的0,1)

產生0, 1的機率可以根據設定調整的程式:#include <stdio.h>#include <stdlib.h>int EqualProbability() { if (rand() % 2 == 0) { return 0; } else { return 1; }}int BiasProbability(int parameter) { int size = parameter + 1; if (rand() % size == 0) {

把一個有序整數數組放到二叉樹中

對於有序數組,取中間節點作為根節點,將數組分成兩部分,對數組的兩部分遞迴構建左右子樹#include <stdio.h>#include <stdlib.h>#include <queue>template<typename T>class TreeNode { public: TreeNode() : left_(NULL), right_(NULL) {} T value_; TreeNode* left_; TreeNode*

淺談WebKit之Port篇

載自: http://ourpgh.blogspot.com/2008/10/webkitport.htmlWebKit作為一個瀏覽器引擎,其相對於Gecko而言一個較大的特點就是便於移植,嵌入到其他程式中,目前大家已瞭解使用WebKit引擎的應用程式套件括Safari、iPhone、Chrome、Android、Nokia S60 Browser及KDE

WebKit – WebKit Major Objects

http://www.jjos.org/%E4%BA%92%E8%81%94%E7%BD%91/%E6%B5%8F%E8%A7%88%E5%99%A8/2010/05/10/308_webkit-webkit-major-objects.htmlWebCore在載入並且顯示一張頁面時,會建立許多的對象與頁面中的各個元素相互對應。這些對象之間的關係,以及由誰來建立並且管理的呢?對於不同的MIME類型的頁面(比如HTML,XHTML,XML)又是如何區分的呢?Javascript指令碼中是如何訪問這

隊列中取最大值操作問題

問題:設計一個隊列能夠在O(1)時間內取得隊列的最大值。分析:這個問題和設計一個在O(1)時間內取最大值的堆棧看似比較相似,但實現難度要比最大值的堆棧困難一些,開始想模仿最大值堆棧的思想來設計取最大值的堆棧都失敗了。實際上這個問題可以拆分成兩個問題: 1)設計一個在O(1)時間內取最大值的堆棧; 2)如何使用堆棧來實現一個隊列;如果這兩個問題解決了,O(1)時間取最大值的隊列也就解決了,這體現了把一個困難的問題,分解為幾個比較簡單的問題,分步驟處理的思想。    首先看第一個問題:設計一個在O(

一個數拆分成連續自然數的和(只考加法的面試題)

題目:給定一個自然數,如何將它拆分成幾個連續的自然數的和的形式,例如:9 = 4 + 5,12 = 3 + 4 + 5等,有哪些數不能分解成這樣的形式,例如4,8等分析:通過上面的幾個例子可以發現一下規律:1)所有的奇數n都可以分解成(n/2) + (n/2 +1)2)偶數有點麻煩,先對部分例子進行計算,比如6 = 1 + 2 + 3,10 = 1 + 2 + 3 + 4, 12 = 3 + 4 + 5,  30 = 9 + 10 + 11 = 4 + 5 + 6 + 7 +

總頁數: 61357 1 .... 19196 19197 19198 19199 19200 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.