自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(148)
  • 收藏
  • 关注

ios上libevent在dns解析时崩溃的解决

 在window和mac,甚至模拟器里都一切正常,就是在iPad机器上崩溃了。 libevent版本:2.0.11-stable  1.       在DNS解析时需要使用ARC4RANDOM算法生成transaction id,而ios自带的算法库有问题,会导致崩溃。还好,libevents提供了另一套替代的算法库,使用该算法库可以不崩溃。Evutil_ra...

2011-06-10 17:51:16 555

如何让网页上的Flash视频在弹出窗口中播放

很多浏览器都有这个功能,当你把鼠标移动到网页视频上,就可以看到顶部有一个按钮出现,弹出独立播放器。当你点击按钮,视频就弹出在新窗口播放了,这时候视频窗口的大小可以自由调整不再受页面的限制。这是如何做到的呢?首先想到的是,浏览器缩放缩放了页面的大小,正好可以显示视频窗口的大小。好像火狐有一个魔镜功能,可以实现网页简报既截取网页任意部分。 要做到这点,浏览器的外框程序必须是自己写的(...

2010-06-29 10:47:00 1031

原创 IE Security Zone与Proxy的关系

有很多软件是通过修改IE的代理设置来实现下载加速,或者翻墙的,比如土豆视频加速器和Chrome的翻墙插件Proxy Switchy。但是,这个简单的修改会带来一些意想不到的问题。比如,如果网页中有IFrame,涉及到一些跨域的访问,就可能会有问题。   IE会根据Proxy的设置来识别一个网站到底是Intranet还是Internet。The Local Intranet ...

2010-02-21 15:09:26 350

原创 对象的强引用和弱引用

 如何保证一个对象在释放后不会再被访问? 最简单的是使用带引用计数的智能指针,但是强引用会导致对象不会被释放。那么弱引用如何?弱引用允许对象被释放,弱引用必须先转成强引用才能对对象进行操作,如果转换失败,则表示对象已经被删除。正好看到一篇文章“当析构函数遇到多线程──C++ 中线程安全的对象回调”,其大意是使用shared_ptr和weak_ptr来完成。对象必须使用sha

2010-01-29 11:27:00 5457

原创 对象的强引用和弱引用

如何保证一个对象在释放后不会再被访问? 最简单的是使用带引用计数的智能指针,但是强引用会导致对象不会被释放。那么弱引用如何?弱引用允许对象被释放,弱引用必须先转成强引用才能对对象进行操作,如果转换失败,则表示对象已经被删除。正好看到一篇文章“当析构函数遇到多线程──C++ 中线程安全的对象回调”,其大意是使用shared_ptr和weak_ptr来完成。对象必须使用shared...

2010-01-29 11:23:25 327

原创 Chromium的Sandbox机制

Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。 Restricted TokenRestricte

2010-01-22 14:49:00 3916

原创 Chromium的Sandbox机制

Chromium允许渲染进程运行在Sandbox里,这样即便代码存在漏洞被网页利用了,也不会对系统造成威胁。Chromium的Sandbox机制主要依赖于操作系统的安全机制,包括Restricted Token,Job Object,Windows Desktop,还有Integrity Level(Vista开始)。 Restricted TokenRestric...

2010-01-22 14:43:33 597

Chrome CancelableRequest类分析

在前面介绍的Chrome Task类,可以让代码在指定线程上运行。 另一种常见的场景就是发出一个异步请求,并想知道请求处理的结果。这时请求的处理过程虽然是在另一个线程上的,但是请求的结果却从(调用者)请求发起的线程上回来,并且请求是可以取消的。 这是很有用的,比如我们经常从界面上(UI线程)发起一个动作,该动作会在Worker线程执行,结束后会通过回调函数回来。这时的回调函数是运行在Wor...

2009-12-14 18:34:45 142

Chrome MessageLoop类分析

Windows程序是基于消息的,不管其封装形式如何,最后都要包含如下代码MSG msg;while(GetMesssage(&msg)){TranslateMessage(&msg);DispatchMessage(&msg); } 大部分的工作都是在这个while循环里完成。 GetMessage获得一条消息,然后调用DispatchMes...

2009-12-14 18:30:35 566

原创 Chrome CancelableRequest类分析

在前面介绍的Chrome Task类,可以让代码在指定线程上运行。 另一种常见的场景就是发出一个异步请求,并想知道请求处理的结果。这时请求的处理过程虽然是在另一个线程上的,但是请求的结果却从(调用者)请求发起的线程上回来,并且请求是可以取消的。 这是很有用的,比如我们经常从界面上(UI线程)发起一个动作,该动作会在Worker线程执行,结束后会通过回调函数回来。这时的回调函数是运行在Wor

2009-12-14 18:14:00 2161 1

Chrome Task类分析

在上一篇《Chrome线程模型》之后,我们来实际看一看代码。 多线程编程完全基于消息传递会比较麻烦,因为消息的封装和解析是比较麻烦的。不仅如此,被多个线程调用的其实是同一个对象的不同方法。比如class Work{ public: void Start() { //CreateThrea...

2009-12-09 20:42:33 139

原创 Chrome Task类分析

在上一篇《Chrome线程模型》之后,我们来实际看一看代码。多线程编程完全基于消息传递会比较麻烦,因为消息的封装和解析是比较麻烦的。不仅如此,被多个线程调用的其实是同一个对象的不同方法。比如class Work{ public:    void Start()    {  

2009-12-09 20:30:00 4487 3

Chrome线程模型(编译)

多线程编程是非常复杂的,Chrome的多线程处理有很多值得借鉴的地方。这篇文章是Chromium项目中Threading的设计和说明文档,简单翻译和注释了一下,以帮助理解。   简单总结就是,不要启动太多线程而应该使用专用的公共线程,代码一定要搞清楚运行在哪个线程上,要有一个简单的方式在线程之间进行通讯。 原文地址  http://dev.chromium.org/develope...

2009-12-08 23:28:48 121

翻译 Chrome线程模型(编译)

多线程编程是非常复杂的,Chrome的多线程处理有很多值得借鉴的地方。这篇文章是Chromium项目中Threading的设计和说明文档,简单翻译和注释了一下,以帮助理解。  简单总结就是,不要启动太多线程而应该使用专用的公共线程,代码一定要搞清楚运行在哪个线程上,要有一个简单的方式在线程之间进行通讯。原文地址  http://dev.chromium.org/develope

2009-12-08 23:04:00 2469

原创 开通JavaEye闲聊

只谈技术,不谈其它 http://optman.javaeye.com/blog/chat

2009-10-15 21:50:00 856

原创 像绘画那样写代码

很久不写代码,发现写代码的习惯有点变化了。以前基本都是把一个类(或者功能)写好了,并测试通过了,再去写另一个类。至于两者如何交互的,事先要考虑清楚,也就是要做设计,画UML图等。至少是先写的功能,要充分考虑未来调用者的各种使用场景。就像在一张白纸上作画,第一笔总是很难的,所以往往也是最苦闷的时候,写代码的进度也很慢。现在不一样了,根本不等把细节考虑,就开始写代码。先是大概把代码框架写了,想到什么就

2009-05-09 00:10:00 1375 2

原创 使用XmlLite+WinHttp下载RSS

我在CSDN的第一篇Blog是关于XML,介绍使用MSXML的DOM API来处理XML。当时曾经说后续介绍另一种处理模式SAX,结果一晃过了很多年也没有写。实在是因为SAX模型太过麻烦,也没实际用过。SAX是够麻烦的,连.NET Framework都没有提供类似的API,而改为提供XmlReader/Writer。在非托管环境下,XmlLite提供了类似的XmlReader/Writer接口。

2009-03-24 12:09:00 2105

原创 Flex,Flash和AIR的关系?

一开始我也被这几个概念给搞糊涂了,特别是在前面写了两篇文章《Silverlight与Flash的一点不同》之后,收到了一些人的疑问。其中就有一条,Silverlight应该跟Flex比较,而不是Flash。 直到我看了Adobe的官方介绍之后,这才明白过来。 原来Flex只是一个开源的类库,简单的可以认为是通用组件库。Flex编译出来的结果即SWF文件(类似二进制可执行文件),可以运行在Flas

2009-03-16 15:21:00 4164

原创 Silverlight与Flash的一点不同 续

前些日子随手写的《Silverlight与Flash的一点不同》一文,有读者提出了赞同和反对意见,意料之中的事情,呵呵,继续讨论如下。WPF是以XAML为基础的,而XAML并不是为Streaming而设计的,至少我没有看到对此的说明。理论上,XAML也是可以像XML Stream的方式来处理,但是Code Behide对应的DLL呢?至少,你总得把整个Dll下载完成后才能加载吧,我不知道微软已

2009-02-26 20:07:00 1418

原创 也谈IOCP

在这个言必称支持百万级用户的时代,似乎只要掌握IOCP就拿到了Windows平台下开发高性能服务端程序的入场券。网上的相关文章很多,写得都很经典。这里,我只想谈谈我的理解。 我是很早以前在研究Microsoft  Soap Toolkit 1.0源码的时候第一次见识IOCP的,里面是把它当做一个任务分发队列来使用的。创建一个IO Complete Port,创建多个工作线程,每个线程试图从Po

2009-02-24 17:33:00 1566 1

原创 Silverlight与Flash的一点不同

Silverlight与Flash的最大不同之一就是,Flash天生就是流媒体,Silverlight则是后天补充支持的。因为,Silverlight必须是整个xap应用包下载完成后才能显示(运行),而Flash是第一帧下载后就可以显示的。虽然Silverlight 也支持影片播放,但视频流是作为特殊对象进行处理的,并不是系统核心模型。记得很早以前看Flash的教程,进度显示是由每个SWF文件

2009-02-21 11:30:00 1637 2

原创 Getting Real

在过去的项目经验中,有一开始就把产品想得太大,太远和太复杂的。特别是,当公司有了一笔钱,想要做一件大事的时候,更加容易犯这种错误。这时候,你不可能只做一件小小的产品,你需要把事情搞得够大,每个人都不闲着。你还想,好不容易有这么一个机会,一定要好好做,一定要做得完美,每个细节都要考虑清楚,以后不能再修改…… 有了这样的考虑,每个人都在自己的岗位上努力着,把问题想得很全面很复杂,以表明自己的聪明和

2009-02-20 08:37:00 1037

原创 -1的二进制表示

虽然一直用C/C++,但很少涉及到Bit序列的问题。比如,-1的二进制表示到底是怎样的?从没有深究过,一直都是模棱两可的,说出来实在让人笑话。 对于有符号整型数的简单认识就是,最高位为符号位,0为正,1为负,那么剩下几位应该如何表示呢?理所当然的认为,既然是1表示为0000 0001(假设为8位整型数,下同),那么-1就应该表示为1000 0001了。 但是,在C语言里,-1的正确表示应该是1

2009-02-12 17:13:00 25847

原创 规模效应

建筑可以通过巨大形状和质量造成视觉和心理震撼,而成为伟大的艺术。比如长城,如果单单是一段,不管多么雄壮,都无法使之成为世界奇迹。而简单的城墙一旦重复达到一定规模,比如几千公里,于是就世人瞩目了。同样,单个的电阻,电容和三极管看起来并没有什么用处。但是,当千千万万个三极管组合起来,那就是集成电路芯片,能够实现的功能就很复杂了。原理就是,极其简单的个体,一旦形成有序的规模,其整体的表现力是惊人的。就像

2008-12-12 16:53:00 1388

原创 从GWT说起

一直把GWT和GData混淆,大概也知道GWT可以把Java代码转变成Javascript代码,但却一直认为这只限于对服务器的远程调用。现在看了一下正式文档,原来更多的还是UI Toolkit。为什么这么多基于浏览器的UIToolkit呢?我想主要原因就是,大家太想把桌面应用程序的UI带到浏览器中了,而浏览器并不天然具备这些功能。首先,让我们先来看一下桌面应用的情况。比如在Windows平台

2008-12-05 00:53:00 1116

转载 Thoughts on being a Solution Architect

SolutionArchitect都要做些什么呢?作者的想法跟我前面的经验比较吻合。比如,提出一个方案之前应该先确保可行,可以是先做一些原型或者技术贮备。在需求还没有确定之前,尽量避免让开发人员加入讨论,以减少干扰。架构师应该先想好,如何把新需求纳入现有系统中。设计文档虽然也有重要,但是更好的是跟开发人员面对面的交流,比如使用白板。经常也要写一些代码,至少要对熟悉产品的代码,这样才不至

2008-10-24 11:01:00 874

原创 软件开发需要常识

为什么软件开发这么困难?设想的和开发出来的不一致,工作量估算不准,还有很多隐藏的质量问题等等......是因为需求定义不够明确?是因为设计文档不够精确么?的确,从需求到产品,有太多的细节需要考虑,有太多的变数,而需求和设计文档并不能面面俱到。但是,你并不能要求建筑设计师把每一块砖都考虑到了。因为,建筑的很多环节已经形成了固有的约定,有了习惯的做法。所以,对于这些已经成熟的做法,你没有必要多加描

2008-10-16 21:19:00 936

原创 WPF的几个关键点

强大的组合能力WPF的UI元素可以很灵活的相互嵌套,从而可以实现很复杂的效果。比如,一个Button内部,可以嵌入Image,这样实现常见的位图按钮就很简单。    还可以使用Layout元素,对内部的对象进一步进行排列                      用户也可以通过Template来定义Button到底应该长啥样(每一个控件都是可以自由定义的)。虽然Button的模样可以随便定义,但是

2008-10-15 23:52:00 2362

原创 XAML的几个关键概念

Property Elements使用单独的XML节点来表示WPF对象的属性值,这样就可以表示比较复杂的对象。比如使用Property Elements就可以这样表示      Yellow对简单对象似乎更复杂了,但是如果要表示更复杂一点的对象,比如                                        这时候,如果没有Property Elements就很难表示了。Typ

2008-10-14 17:54:00 734

原创 《Windows Presentation Foundation Unleashed》(书评)

因为之前有做过类似用XML来定义界面的相关工作,所以是带着疑问来看这本书的--我曾经遇到的那些问题,究竟微软是如何解决的呢?WPF最重要的,就是XAML语言,全书也是以此为中心(这一点很重要)。开篇不久,首先就对XAML中一些关键的疑团进行了解释,比如Property Elements,Type Converters等等。之前也曾经看过一些WPF的介绍文章,就很惊叹于XAML的灵活性--为什么这样

2008-10-12 00:09:00 743

翻译 Project Management Truisms

原文链接:http://www.mariosalexandrou.com/blog/?p=67挺有意思的,于是加了一些自己的点评。Nothing is impossible for the person who doesnt have to do it.不记得有多少次,我总是对很多事情想当然,前提是不是我做。但是一旦是要我做的话,就会有很多抗拒的理由了。所以,站着说话不腰疼就是这个意思。You

2008-10-05 17:32:00 797

原创 《Release It! Design and Deploy Production-Ready Software》

所有功能开发完成,并通过QA测试,就一切大功告成了--我们一直存在这样的认识误区。其实,从软件产品正式发布交付给用户使用的那一天起,挑战才刚刚开始,路还很长。你会遇到各种各样的问题,让你半夜都无法安睡。因为,真实的运营环境跟开发测试环境是不同的,你会遇到各种各样的新问题和挑战。测试环境里,可能只有一台服务器,但是运营环境中可能有很多台服务器。测试环境中,可能没有防火墙,实际情况是防火墙一定存在。还

2008-06-06 16:29:00 1819

原创 try/catch的实现原理

明白了几个道理, 1. VC++的try/catch是基于Win32的SEH实现的。 2. try/catch只能捕捉当前线程的异常,每个线程都有自己的异常处理入口。 3. 异常处理入口是由OS负责调用的,在异常发生时。 4. 为了使用SEH,VC++编译器自动生成了很多的代码。   MSDN上关于SEH的经典文章A Crash Course on the Depths of Win32™ Str

2008-06-03 17:39:00 5440 1

原创 危险的线程

示例代码class WorkClass{public:void Start(){        CreateThread(...,ThreadFunc,this,...)}void Stop(){}static LRESULT WINAPI ThreadFunc(void* pThis){       return (WorkClas

2008-05-29 14:45:00 1352

原创 std::set的insert会把新元素放在什么位置?

我其实是希望放在第一个,这样我就可以用begin来访问到该新元素--正在在做一个连接池,希望把刚用完的连接放到最前面,这样就可以经常用到,而不常用的就逐渐废弃断掉了。从代码的实际运行情况来看,就是我所希望的模式,但是否偶然现象?   于是找到了这篇帖子,原来std::set内部并不是以数组来保存元素的,而是用树。这样的话,所谓的前后并没有什么意义!这个早就应该想到的!STL集合就是通过枚举器(it

2008-05-28 17:41:00 6170

原创 时空穿梭和系统重启

《时间旅行者的妻子》前些日子在豆瓣上很受关注,其实关于时空穿梭的故事已经很老套了,该书的文采也平淡无奇,但为什么还那么受关注呢?或许是一种感觉吧,想想看,你可以看着自己的妻子慢慢长大,那是怎样奇妙的感觉啊。要不怎么说青梅竹马呢,呵呵。 看《时间》一书的时候,一点都不轻松,因为我总是会不自觉的去进行推理。主人公总是穿梭来穿梭去,一会儿36岁,一会儿又是45岁。一会儿是现在,一会儿又是过去。还有相关

2008-05-24 16:00:00 892

原创 COM套间模型的相关文章

关于COM套间模型,一开始你可以不关心,但是总有一天你会碰上......   COM和套间(Apartments) 1 - 基本知识 简洁明了的中文介绍   OLE 线程模型的说明和工作方式 微软的技术文章,太详尽了。   Understanding and Using COM Threading Models MSDN的文章,1998年。   difference between STA and

2008-05-20 16:48:00 1290

原创 《设计规则 模块化的力量》书评

         作为一个程序员,对于模块化自然是不陌生的,因为我们一直在说模块化。以前我们说OOP,现在说SOA,其实不都是模块化嘛。但是,对于模块化,我们的认识有多深呢?      《设计规则》一书从比较抽象的概念,向我们说明了什么是设计,什么是模块化,以及模块化所带来的好处,最后是如何实现模块化。模块化不仅是技术层面的设计,还影响了社会层面的经济制度设计,包括对合同和公司制度的要求。   

2008-04-24 00:10:00 3263 2

原创 微软产品内部协议大公开

前些时候听说微软公开了很多产品的内部协议以推进与其它产品的互操作性,今天看了一下果然公开了很多文档。根据微软的互操作性原则(Interoperability Principles),分为几个部分:1. 与微软产品的开放互联包括: 开放的协议 开放的API 开放的访问 专利条款 与开源兼容2. 支持标准 支持主要标准

2008-04-15 23:34:00 1039

原创 诡异的TLB文件

COM组件IDL文件里大写的属性名称在生成的TLB文件里,竟然变成了小写!问题还不止这么简单,因为有时候变成小写,有时候又变成了大写!调用程序因此反复要修改,这不是折磨人嘛!   在Google Groups里搜索了一下,原来这是因为TLB里,所有的字符串存贮在一张表里,不管大小写,而且也不管是属性名还是参数名。第一个碰到的,就存贮到表里,并且保存大小写,以后同样的字符串(不分大小写)均以第一个为

2008-04-10 19:45:00 1241

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除