chromium源码学习笔记(1) -- 学习计划

 
    对于c++开发者来说,chromium几乎是目前最值得学习的优秀开源代码。先看看chromium包含了多少令人激动的特性:

    1,出身google,代码质量几乎不用怀疑,肯定能让你学到不少东西;
    2,以webkit作为浏览器内核,单就webkit本身的魅力就足够吸引我们了;
    3,基于众多第三方开源库的跨平台的桌面应用程序框架;
    4,基于多进程的程序架构;
    5,闻名的V8 js解析内核;
    6,html5。
 
    chromium的代码量非常大,要想有效率的学习,需要找个最好的方法,定个计划。先来看看chromium的整体结构和代码组织:Getting Around the Chromium Source Code Directories。chromium设计主要分为三部分:browser,renderer和webkit。代码块主要包括:src/chrome/app(主程序逻辑代码),src/base(common库),src/chrome/browser,src/chrome/renderer,src/chrome/common(browser和renderer的common库),src/webkit等。src源码文件夹下的子文件目录的意义参考上面链接中的说明。
    
    根据以上信息,我们列一下要学习chromium代码的哪些部分:
 
    1,主程序控制逻辑;
    2,多进程架构,多进程及多线程管理和通信;
    3,消息循环;
    4,UI系统;
 
    5,web page和tag管理;
    6,js解析,V8内核;
    7,页面渲染;
    8,webkit;
 
    9,跨平台技术;
    10,第三方库;
    11,浏览器安全及sandbox;
    12,插件系统;
 
    13,gpu渲染;
    14,自动化测试系统;
    15,crash汇报系统(breakpad);
    16,html5:websocket,media,storage等;
    17,设计模式;
    18,win8特性;
    ...
 
    怎样制定学习的步骤?这是一个很重要的问题。一个基本思路是,从上至下,从整体到局部,
从框架到细节。因此总的计划是分成三个阶段,
 
一阶段着眼系统全局和框架设计(忽略不重要的部分),主要包括:主程序逻辑、进程线程架构、消息循环、UI、webkit整合、web渲染等;
 
第二阶段着眼感兴趣的关键技术,比如:跨平台,html5,gpu渲染等;
 
第三阶段研究前两阶段中未涉及的部分,从不同的角度进行学习,比如跨平台渲染,内存管理,log系统,http和https封装,设计模式以及更细节的技术点等。
 
    最后,时间计划。今年工作会很忙,但依然要挤时间坚持,希望第一阶段能尽快完成。
    
    整个系列以笔记的方式总结,希望能沉淀下一些切实的收获。

chromium ③的更多相关文章

  1. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  2. Google之Chromium浏览器源码学习——base公共通用库(一)

    Google的优秀C++开源项目繁多,其中的Chromium浏览器项目可以说是很具有代表性的,此外还包括其第三开发开源库或是自己的优秀开源库,可以根据需要抽取自己感兴趣的部分.在研究.学习该项目前的时 ...

  3. 如何在windows上编译Chromium (CEF3) 并加入MP3支持(二)

    时隔一年,再次编译cef3,独一无二的目的仍为加入mp3支持.新版本的编译环境和注意事项都已经发生了变化,于是再记录一下. 一.编译版本 cef版本号格式为X.YYYY.A.gHHHHHHH X为主版 ...

  4. 如何在Windows上从源码编译Chromium (CEF3) 加入mp3支持

    一.什么是CEF CEF即Chromium Embeded Framework,由谷歌的开源浏览器项目Chromium扩展而来,可方便地嵌入其它程序中以得到浏览器功能. CEF包括CEF1和CEF3两 ...

  5. 构建基于Chromium的应用程序

    chromium是google chrome浏览器所采用的内核,最开始由苹果的webkit发展而出,由于webkit在发展上存在分歧,而google希望在开发上有更大的自由度,2013年google决 ...

  6. ubuntu中chromium无法播放flash,安装flash

    ubuntu14.0.4中系统自带的chromium无法播放flash,后来查了下,得知chromium已经不支持adobe flash了,用户可使用pepper flash替代.安装pepper f ...

  7. windows下编译chromium浏览器的15个流程整理

    编译chromium 系统为windows, 国内在windows上编译chromium的资料比较少, 我这篇文章只能作为参考, 记录我遇到的一些问题,因为chromium团队也会修改了代码,或者编译 ...

  8. Google之Chromium浏览器源码学习——base公共通用库(二)

    上次提到Chromium浏览器中base公共通用库中的内存分配器allocator,其中用到了三方库tcmalloc.jemalloc:对于这两个内存分配器,个人建议,对于内存,最好是自己维护内存池: ...

  9. 浏览器-10 Chromium 移动版

    移动版 chromium 的iOS版和Android是为两个流行的移动操作系统设计的, UI方面进行了 较大的重新设计; 两者从外观上看颇为相似,但是其内部的渲染引擎的差别非常的大,原因在于iOS对应 ...

  10. 浏览器-09 javascript引擎和Chromium网络栈

    语言的运行 C/C++语言 使用编译器直接将它们编译成本地代码(机器指令),这是由开发人员在代码编写完成之后实施; 用户只是使用这些编译好的本地代码,这些本地代码被系统的加载器加载执行,由操作系统调度 ...

随机推荐

  1. yii框架中获取添加数据后的id值

    Yii::$app->db->createCommand()->insert('month4_user',['openid'=>$openid,'integ'=>0])- ...

  2. 原生js实现放大镜

    效果: 1.  鼠标放上去会有半透明遮罩.右边会有大图片局部图 2.  鼠标移动时右边的大图片也会局部移动 放大镜的关键原理: 鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置 ...

  3. 04 爬虫数据存储之Mongodb

    MongoDB 认识MongoDB MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...

  4. CF-787D-线段树建图+最短路

    http://codeforces.com/problemset/problem/787/D 题目大意是给出一个有向图,有N个节点,初始节点在S,询问S到所有点最短路.边的读入方式有三种, 1 u v ...

  5. 新增节点NewBook并增加属性Name="WPF"

    XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPath); var root = xmlDoc.DocumentElement;//取到 ...

  6. 【数据库】SQL语句

    SQL 分为两个部分:数据操作语言(DML)和 数据定义语言(DDL).增删改查(CRUD)构成了 SQL 的 DML 部分. SELECT - 从数据库表中获取数据 SELECT 列名 FROM 表 ...

  7. <Closing connections idle longer than 60000 MILLISECONDS> <Closing expired connections>

    日志信息如下: 2017-07-05 18:28:34 -18705 [idle_connection_reaper] DEBUG   - Closing expired connections 20 ...

  8. Linux基线合规检查中各文件的作用及配置脚本

    1./etc/motd 操作:echo " Authorized users only. All activity may be monitored and reported " ...

  9. sublime text 3 笔记 简单配置

    一.首先我们去sublime text 3 去下载(http://www.sublimetext.com/) 下载完成后,打开页面 二.汉化 1.如图所示,点击菜单栏中“preferences”,弹出 ...

  10. vue 列表选中 v-for class

    地址: https://jsfiddle.net/50wL7mdz/96567/ 列表循环,默认选择 样式控制 <script src="https://unpkg.com/vue&q ...