摘要:
openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密。可以使用非对称加密:公钥加密,私钥解密。openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所以一般的做法是使用对称密钥加密数据,然后再把这个只在当前有效的临时生成的对称密钥用非对称密钥的公钥加密之后... 阅读全文
摘要:
HTTP是很常见的协议,虽然用得很多,但对细节的了解却是很浅,这回通过向服务端上传文件信息来理解细节。网络库的选择:1、WinHTTP是windows下常用的库;2、CURL是广受喜爱的开源库。对于我来说,libcurl最大的优点是使用方便,可以把注意力更多的集中到业务层上,提高工作效率,避免重... 阅读全文
摘要:
“局域网设置”里有自动配置、代理服务器的设置项目,在进行网络通讯相关的开发时,需要使用到它们,下边介绍如何将这些设置信息读取出来。 当“使用自动配置脚本”不使用时,使用WinHttpGetIEProxyConfigForCurrentUser函数来获取用户的代理配置。如果发现用户使用了自动配... 阅读全文
摘要:
其他人想必会有这样的感觉,早上酣畅淋漓的写完一段代码,心情特别舒适,可是却发现了异常,然后开始debug直到忘记了吃饭,好心情就一点点被消磨掉。这种情况在写多线程代码的时候更是常见,一个工作线程的任务被层层封装,然后才被扔到工作线程队列,我从哪里来是不知道的,甚至于连我在哪里都不知道,设置线程名称,就是为了解决“我在哪里”的问题。在debug时,线程有了名称,查bug的效率会得到提升。 设置线程名称,只有短短的几行代码,windows已经做好了准备,只需要触发它。这么简单的东西其实没有必要写到博客里,但是最近我发现还是有不少人不知道、或者没想到去这么做的。 以上是废话,以下才是重点:#... 阅读全文
摘要:
最近两周使用透明、半透明窗口比较多,在此之前我写代码都借助封装好了的皮肤库,而现在都是“手写”的——石器时代大冒险,遇到了一些困难,在此做总结。1、GDI函数对Alpha值的忽视。 GDI函数只有AlphaBlend api可以提供alpha通道的绘制,使用AlphaBlend可以实现32位位图的绘制。因为只有这个api能识别alpha通道,如果在一个MemDC上用DrawText绘制文本,这些文字区域的alpha值都为0,之后再使用AlphaBlend api把MemDC的位图拷贝到实际DC,就会导致文字区域异常,要么是透明了,要么是变成纯白色了。解决办法是:1、在能达到目的的前提下,从.. 阅读全文
摘要:
启动速度是很重要的一个点,如何加快呢?有个简单的原理:局部性原理。在计算速度越来越快的今天,性能的瓶颈很多时候是在I/O上(SSD硬盘的机器明显比机械硬盘快很多),如果能减少程序运行过程中读取磁盘的次数,那就能有效提高速度。减少程序运行过程中读取磁盘次数,就是减少缺页(Page fault)错误,让运行过程中的多数数据提前加载到物理内存,所以有个词,叫做“预读”。一、系统对启动加速的支持1、Prefetch支持 每当应用程序启动发生硬缺页中断时,操作系统会记录应用程序访问的文件及其位置,这些信息会被记录在\\Windows\Prefetch下,譬如,我机器上很容易就找到了“CHROME.... 阅读全文
摘要:
写chromium扩展、写webui,还有一点便是如何增加extension API,下边所描述涉及两种添加extension api的方法,第一种较为麻烦,但有利于完整理解。全文参考chromium官方文档。一、通过json文件添加扩展API1、增加导出接口权限限制:chrome/common/extensions/api/_permission_features.json。api的名称为“myapi”,如果加上"location": "component"表示只有内部程序可以使用该api,这样子外界插件使用就会出现提示:“'myapi' 阅读全文
摘要:
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处理对象负责定位到对应的前端页面、以及处理... 阅读全文
摘要:
一、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。 <... 阅读全文