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. 标准化数据-StandardScaler

    StandardScaler----计算训练集的平均值和标准差,以便测试数据集使用相同的变换 官方文档: class sklearn.preprocessing.StandardScaler(copy ...

  3. python-django rest framework框架之视图

    视图 :常用 1和4 两种 1. 原始的APIView class IndexView(views.APIView): def get(self, request, *args, **kwargs): ...

  4. 重写nyoj2——括号匹配

    #include "bits/stdc++.h" using namespace std; int comp(char s1,char s2){ ; ; } int main() ...

  5. Beta阶段——第3篇 Scrum 冲刺博客

    Beta阶段--第3篇 Scrum 冲刺博客 标签:软件工程 一.站立式会议照片 二.每个人的工作 (有work item 的ID) 昨日已完成的工作 人员 工作 林羽晴 完成了报表数据的接口函数 顾 ...

  6. 五、Oracle的常识点

    1.Oracle中使用rownum来进行分页,这个是效率最好的分页方法 select * from ( ) 2.Oracle的索引使用 创建索引: create index index_name on ...

  7. 二十三、Spring框架的相关知识点总结

    1.Spring的优点: 1.1.Spring在大小和透明性方面是轻量级的,Spring框架大约只有2MB大小. 1.2.控制反转(IOC):使用控制反转技术实现了低耦合,依赖注入(DI)到对象,而不 ...

  8. volatile原理解析

    Java并发编程:volatile关键字解析 volatile 有序性.可见性 volatile可以保证一定程度上有序性,即volatile前面的代码先于后面的代码先执行. 但是前.后代码,各自里面的 ...

  9. VisualSVN+TortoiseSVN搭建版本控制系统教程

    Tortoise VisualSVN用作SVN的服务端,TortoiseSVN用作SVN的客户端. 一.安装和配置VisualSVN 1.1安装VisualSVN 下载链接:https://www.v ...

  10. zabbix_server.conf、zabbix_agentd.conf配置文件详解

    zabbix_server.conf配置文件详解 AlertScriptsPath 默认值:/usr/local/share/zabbix/alertscripts 说明:告警脚本目录 AllowRo ...