2013年3月27日
摘要: 启动速度是很重要的一个点,如何加快呢?有个简单的原理:局部性原理。在计算速度越来越快的今天,性能的瓶颈很多时候是在I/O上(SSD硬盘的机器明显比机械硬盘快很多),如果能减少程序运行过程中读取磁盘的次数,那就能有效提高速度。减少程序运行过程中读取磁盘次数,就是减少缺页(Page fault)错误,让运行过程中的多数数据提前加载到物理内存,所以有个词,叫做“预读”。一、系统对启动加速的支持1、Prefetch支持 每当应用程序启动发生硬缺页中断时,操作系统会记录应用程序访问的文件及其位置,这些信息会被记录在\\Windows\Prefetch下,譬如,我机器上很容易就找到了“CHROME.... 阅读全文
posted @ 2013-03-27 00:42 -银光- 阅读(6105) 评论(0) 推荐(1)
  2013年3月13日
摘要: 写chromium扩展、写webui,还有一点便是如何增加extension API,下边所描述涉及两种添加extension api的方法,第一种较为麻烦,但有利于完整理解。全文参考chromium官方文档。一、通过json文件添加扩展API1、增加导出接口权限限制:chrome/common/extensions/api/_permission_features.json。api的名称为“myapi”,如果加上"location": "component"表示只有内部程序可以使用该api,这样子外界插件使用就会出现提示:“'myapi' 阅读全文
posted @ 2013-03-13 00:20 -银光- 阅读(9663) 评论(2) 推荐(2)
  2013年3月5日
摘要: 智能指针 阅读全文
posted @ 2013-03-05 00:51 -银光- 阅读(2017) 评论(0) 推荐(0)
  2013年3月1日
摘要: webui的资源被编译在chrome.dll下,当在地址栏里输入一个内部url时,它所对应的资源会从chrome.dll找到。每当修改前端代码之后都要再编译一次chrome.dll,这很浪费时间,而且前端一般由非C++程序员负责,要让他们去编译,实在不合理,所以必须有办法可以重定向url到本地文件。通过咨询、查看代码,找到了解决方法。 webui,以“chrome”为前缀的url跟“UI处理对象”的关联是在“src\chrome\browser\ui\webui\chrome_web_ui_controller_factory.cc”里做的。UI处理对象负责定位到对应的前端页面、以及处理... 阅读全文
posted @ 2013-03-01 18:29 -银光- 阅读(2535) 评论(3) 推荐(0)
  2013年2月27日
摘要: 一、webui的demo 想给chromium增加一个页面,类似于download页面一样。先写个helloworld吧。1、写前端代码。定义好js要调用的接口,拷贝一份模板代码,写好html、css、js,放到src/chrome/browser/resources/目录下。webui的资源文件是打包在chrome.dll下的,需要把前端代码信息记录到src\chrome\browser\browser_resources.grd文件中,在该文件中定义的ID会在C++代码中用上。2、添加本地化显示到src\chrome\app\generated_resources.grd。 <... 阅读全文
posted @ 2013-02-27 01:39 -银光- 阅读(2398) 评论(0) 推荐(0)
  2013年2月20日
摘要: 最近要搞chromium,虽然之前下载、编译过一次两次,但是都没有时间认真看代码(拖延症患者)。后来机器上又装了其它东西,也不知道是不是因为装了vs2005的原因,现在把以前拉的代码拿过来就编译不过,需要每个工程都去修改platform toolset,把它从v100修改为windows7.1,面对chromium650个工程,逐个修改太累,所以重装系统再来一遍,好在SSD硬盘够快。 一、安装环境流程如下:1、安装win7 64位 专业版。(C盘剩下33G空间)2、安装驱动\安装工作常用软件(压缩、输入法、IM...)3、安装vs2010 Ultimate (网上只下载到这个2010版本... 阅读全文
posted @ 2013-02-20 19:11 -银光- 阅读(11871) 评论(1) 推荐(1)
  2012年8月22日
摘要: 2012-8-22cswuyg1. 派生类对象析构时,基类析构函数执行的前期会修改对象的虚函数表指针值 一般情况下(特指基类不使用novtable属性),debug编译出来的exe,派生类对象的析构,在析构基类部分的时候,对象的虚函数表指针值项会被修改成基类的虚函数表地址,然后再执行基类的析构函数体。其中高亮的那一行是修改对象的虚函数表指针值为基类虚函数表地址 release下编译出来的就不是这样子。以一个小测试程序为例,编译器做了优化,并没有在调用基类析构函数时做赋值。但不确定编译器是否会一直做优化,因为看到了派生类析构函数体实质内容执行之前对虚函数表指针值做了一次赋值,那么为什么在基... 阅读全文
posted @ 2012-08-22 12:32 -银光- 阅读(4095) 评论(0) 推荐(0)
  2012年8月20日
摘要: 2012-7-8cswuyg不要在WM_ACTIVATE里调用可以触发活动转移的函数一、来源 WM_ACTIVATE的问题6月19号发现了,当时发现窗口会收到两次WM_ACTIVATE消息,很是奇怪,但找不到入手点,就没有深入追究。前几天同事发现有个按钮点击了没反应,是因为WM_LBUTTONDOW消息丢失,导致按钮事件没有生成,这才发现是WM_ACTIVATE有问题,总算找到原因了。但这是为什么呢?这就需要详细分析了。二、详细分析 避免在WM_ACTIVATE里调用可能触发活动转移的函数(如:ShowWindow( SW_HIDE )); 有一个窗口A显示着,点击了跟窗口A使用同一个消... 阅读全文
posted @ 2012-08-20 13:39 -银光- 阅读(3199) 评论(0) 推荐(0)
  2012年7月9日
摘要: 2012-7-8cswuyg 半年多以前就遇到这个问题,当时由于时间关系没有做详细分析,又用其他方式打补丁解决问题,最近又遇到,总算不懒惰,写个demo看看到底怎么回事。一、窗口的Parent、Owner关系 窗口有两种可能的上下级关系,一种是Owner,一种是parent。 创建窗口时,有WS_POPUP属性的窗口,它的父窗口其实是Owner窗口。创建之后,可以通过SetParent,为它设置父窗口,这样子他就有父窗口(子窗口位置限制在父窗口中)又有POPUP属性。 创建窗口时,有WS_CHILD属性的窗口,它的父窗口就是父窗口。可以通过SetWindowLongPtr给它加上POP... 阅读全文
posted @ 2012-07-09 09:33 -银光- 阅读(6659) 评论(0) 推荐(1)
  2012年7月7日
摘要: 2012-6-27整理cswuyg前几天遇到过一种奇葩的代码,用0xFEEEFEEE来判断是否是悬垂指针,这种必须反对,太冒险了。另外填充值到底是什么呢?发觉要全面彻底分析,不是那么简单,最后只是把网络上的一些资料拿到这里,作为记录。一、Release下,用OllyDbg查看1、申请了50个字节的空间。可以看到被初始化为0xBAADF00D。2、把申请的内存释放之后,释放之后内存初始化为0xFEEEFEEE。二、debug下用VS2005查看1、申请了50个字节的空间。可以看到被初始化为0xcdcdcdcd2、把申请的内存释放之后,初始化为0xFEEEFEEE三、总结按照网络上某篇文章的说法: 阅读全文
posted @ 2012-07-07 19:29 -银光- 阅读(3309) 评论(1) 推荐(2)