存档

‘Chrome源码学习’ 分类的存档

C++单例模式Singleton内存回收

2013年9月20日 3 条评论

单例模式(Singleton)也称为单件模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,操作系统只会弹出一个任务管理器等。
单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显的很不优雅。 使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。
GoF的《设计模式》一书中给出[......]

继续阅读

Chrome源码阅读之basictypes.h

2013年9月1日 4 条评论

对Chrome的源码阅读主要集中在src\base下,这里面实现了很多基础组件,相对来说更容易理解,也是阅读其他源码的一个基础。

文件src\base\basictypes.h定义了一些基础数据结构和宏。

1. 明确拒绝不需要的函数
下面这部分代码用于禁用类不需要的复制构造函数、复制操作符以及隐式的构造函数。

2. 编译期间条件检查
下面这部分代码用于编译期间的条件检查,如果COMPILE_ASSERT(expr, msg)中expr不为true,就会定义一个名字为msg,大小为-1的数组,显然编译器不允许定义一个大小小于零的数组,从而中断编译操作。[......]

Chrome源码编译

2013年8月31日 16 条评论

还是在四月份的时候,一时心血来潮下载下来了Chrome的代码打算随便看看,当时候确实看了几天,不过后来因为一些其他事情就放下了,最近无聊了很久,终于还是决定继续看看。虽然编译没什么技术含量,不过体验一下还是不错,主要是环境的搭建,另外是体验一下大工程的编译时间。
一、环境简介
软件(包):7Zip、Visual Studio 2010、Visual Studio 2010 SP1补丁、Windows 8 SDK、June 2010 DirectX SDK等。
操作系统:Windows 7 x64[......]

继续阅读

Chrome源码学习之scoped_ptr

2013年5月8日 4 条评论

scoped_ptr是一个智能指针,Boost中实现了一份,用于管理指针(参考《设计模式之桥接模式 Boost::scoped_ptr》)。Chrome也自己实现了一份,但是比Boost实现的版本要更加复杂,前者支持数组,后者不支持数组(数组使用scoped_array)。本篇分析文件为src\base\memory\scoped_ptr.h,记录要点:
1. 将错误提前到编译器提示
错误越早发现越好,一些不合理的语句的使用如果能提前到编译器就检测出来自然是件好事,Chrome使用了enum技巧[......]

继续阅读

设计模式之桥接模式 Boost::scoped_ptr

2013年4月29日 3 条评论

打算把Chrome浏览器源码阅读的一些笔记写到博客上来,Chrome是个大工程,源码下载下来光压缩包就有2G多,解压之后6G多,过段时间我会写一篇如何编译Chrome浏览器的文章。最近阅读了src\base下部分基础组件的代码,感觉学到了很多东西。本文作为第一篇,可能看起来和Chrome没什么关系,不过这个知识点会在实际的开发中经常用到。
你可能没有系统学过设计模式,不懂桥接模式是什么玩意,没关系,你应该见过Impl;你也可能没接触过Boost,不懂scoped_ptr是什么,没关系,你应该见过[......]

继续阅读