`
hyshucom
  • 浏览: 808706 次
文章分类
社区版块
存档分类
最新评论
文章列表
Chrome源代码结构 首先,开始接触Chrome的童鞋可能有一个疑惑,Chrome和Chromium是同一个东西吗?答案是,Chrome是Google官方的浏览器项目名称,Chromium是Google官方对Chrome开源项目。说白了就是Chrome是Google自己的官方浏览器版本,而Chromium是开源项目,所有有兴趣的开发者都可以参加,Chromium中出现的新技术如果经过测试是可靠的,健壮的,那么将可能会出现在未来发布的C
沙箱技术早在Windows2000的时候就已经出现了,但是因为大部分的人都不会接触到也没有机会应用这种技术,导致大部分的人根本就对这个没有印象。而在一本讲到沙箱技术的书上,上面的翻译是‘沙框’,当然这本书的翻译质量 ...
原文:http://blog.sina.com.cn/s/blog_496be0db0100w39p.html 沙箱其实就是一个硬盘过滤文件驱动,具体来说,就是你把要写的东西写到了硬盘上,但实际上并没有写到硬盘,而是到了一个转存处,读取内容需要判断是沙箱开启之前就存在的内容还是开沙箱之后写入的内容,要分别从不同的地方读取内容,重启之后把转存的地方清零。 文件过滤的驱动编写和加载方法(网上找到的,关键词是bitmap):就是一小块一小块的扇区,bitmap每一位对应磁盘上的一个扇区,N位就有N个扇区,这个位如果为0,就认为这个扇区的数据没有被存储到其他地方,如果为1就是存到了其他地 ...
转载自Soul Apogee 本文链接地址:Chrome学习笔记(一):线程模型,消息循环 看Chrome已经有一段时间了,但是一直都没有沉淀些内容下来,是该写写笔记什么的了,免得自己忘记了。看的都是Windows平台下的代码,所以 ...
原文:http://blog.csdn.net/kendiv/article/details/1788966 1. 优先级反转(Priority Inversion) 由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。 2. 产生原因 其实,优先级反转是在高优级(假设为A)的任务要访问一个被低优先级任务(假设为C)占有的资源时,被阻塞.而此时又有优先级高于占有资源的任务(C)而低于被阻塞的任务(A)的优先级的任务(假设为B)时,于是,占 ...
原文:http://www.guao.hk/posts/cutting-edge-native-client.html 不知不觉,Google已经正式推出其Native Client (NaCl)过去约7个月之久。而目前国内似乎还没有多少关于NaCl的资料,所以在这里面向Web开发者做一下简单的介绍,希望能够起到一个抛砖引玉的效果。 本文的所有代码均来自于https://developers.google.com/native-client/devguide/tutorial,如果您对其中的任何技术细节存在疑问,请以原文为准。 何谓NaCl NaCl是一项能让C/C+ ...
今天和朋友聊到关于chromium的线程模型的东西,在网上查了半天竟然没有哪篇能说清楚的,于是review了一下代码写点东西出来备忘一下,其实chromium(以下称为chrome)在对待多线程这个事情上的做法还是很值得一看的,chrome并不推荐过多的使用锁和threadsafe对象,在线程之间直接共享对象不可避免的设计操作原子性的问题;chrome的解决之道是通过command模式将对象隔离在各个线程之间,每个线程拥有自己的消息队列和消息循环(message_loop), 数据的访问都是通过消息传递实现的。 这部分的代码写得还是比较漂亮,但是网上的文章对于这部分的解读基本是一笔带过 ...
总体概览 Chromium分为3个大模块(包括第三方库):浏览器,渲染器,WebKit。浏览器负责主进程,UI展现和I/O。渲染器一般是由浏览器调用的标签子进程。它嵌入WebKit中做布局和渲染。 你应该熟读多进程架构和Chromium如何显示web页。 快速介绍sln文件 有2个sln文件,chrome.sln是使用V8引擎的普通版本,chrome_kjs.sln是使用Webkit的JavaScriptCore(JSC)引擎的版本。一般都是用V8,保留JSC就是为了看有bug时,这bug是不是跟V8有关。 -App/chrome_dll和App/chrome工程是启动代码。 ...
目录 1。背景 2。概述 3。WebKit 4.渲染器 5。浏览器 6.Cookies 背景 所有网络通信由主浏览器进程处理。这样做不仅使浏览器进程可以控制每个渲染器的访问网
本文档从底层原理开始介绍了Chromium如何显示网页。阅读本文之前你应该首先阅读“Chromium的多进程架构”这篇文章,重点要理解主要组件结构图。您可能也有兴趣阅读“多进程资源加载“这篇文章来了解网页是如何从网络获取的。 应用层次概念图
原文地址:http://blog.csdn.net/magictong/article/details/3143947 池化技术 - 简单点来说,就是提前保存大量的资源,以备不时之需,O(∩_∩)O,对于线程,内存,oracle的连接对象等等,这些都是资源,程序中当你创建一个线程或者在堆上申请一块内存时,都涉及到很多系统调用,也是非常消耗CPU的,如果你的程序需要很多类似的工作线程或者需要频繁的申请释放小块内存,如果没有在这方面进行优化,那很有可能这部分代码将会成为影响你整个程序性能的瓶颈。池化技术主要有线程池,内存池,连接池,对象池等等,对象池就是提前创建很多对象,将用过的对象保存起 ...
前言 在大型C++系统中对指针的管理通常至关重要,这跟对象的生命周期相关,存在如下方面的考虑: 如何确保指针所指向的对象是在适当范围内是始终存在的? 如何构建一种机制,确保能正确检测指针所指向对象是否有效? 在chromium中对这类问题分别采用智能指针Scoped_refptr和弱指针WeakPtr来实现。 Scoped_refptr
布局Layout 当渲染对象被创建并添加到树中,它们并没有位置和大小,计算这些值的过程称为 layout 或 reflow。 Html使用基于流的布局模型,意味着大部分时间,可以以单一的途径进行几何计算。流中靠后的元素并不会影响前面元素的几何特性,所以布局可以在文档中从右向左、自上而下的进行。也存在一些例外,比如 html tables。 坐标系统相对于根 frame,使用 top和 left坐标。 布局是一个递归的过程,由根渲染对象开始,它对应 html 文档元素,布局继续递归的通过一些或所有的 frame 层级,为每个需要几何信息的渲染对象进行计算。 根渲染 ...
CSS解析CSS parsing 还记得简介中提到的解析的概念吗,不同于html,css属于上下文无关文法,可以用前面所描述的解析器来解析。Css规范定义了css的词法及语法文法。 看一些例子: 每个符号都由正则表达式定义了词法文法(词汇表): comment///*[^*]*/*+([^/*][^*]*/*+)*// num[0-9]+|[0-9]*"."[0-9]+ nonascii[/200-/377] nmstart[_a-z]|{nonascii}|{escape} nmchar[_a-z0-9-]|{nonascii ...
解析Parsing-general 既然解析是渲染引擎中一个非常重要的过程,我们将稍微深入的研究它。首先简要介绍一下解析。 解析一个文档即将其转换为具有一定意义的结构——编码可以理解和使用的东西。解析的结果通常是表达文档结构的节点树,称为解析树或语法树。 例如,解析“2+3-1”这个表达式,可能返回这样一棵树。 图5:数学表达式树节点 文法Grammars 解析基于文档依据的语法规则——文档的语言或格式。每种可被解析的格式必须具有由词汇及语法规则组成的特定的文法,称为上下文无关文法。人类语言不具有这一特性,因此不能被一般的解析技术所解析。
Global site tag (gtag.js) - Google Analytics