解决循环引用的一个例子

最近在讨论设计时注意到一个循环引用的问题。它是在使用引用计数指针时发生的。如下图所示: ClassA和ClassB分属两个不同的线程,ClassB通常由ClassA发起请求创建,并由ClassA使用,ClassB则会在必要时通知ClassA一些事件。两者中各保留了对方的一个引用计数指针RefPtr。 如果在析构时释放成员变量的话,就会发生循环引用的问题,导致两个对象释放失败。   最直...
阅读(3668) 评论(1)

关于手机浏览器用户群的思考

今天看到一篇报道:“三低用户”过半 手机浏览器用户“屌丝”当道  对于其中30岁年龄一条,我就已经不在手机浏览器的核心用户范围内了。先转述其中一部分文字: 在“手机浏览器用户群特征”方面,沙利文报告指出,“低年龄、低学历、低收入”群体是手机浏览器的核心用户,手机浏览器市场可谓“屌丝”当道。30岁以下的用户占87%,高中文化程度以下用户占74%,月收入低于3000元的用户占到了77.6%。...
阅读(5623) 评论(4)

为什么我们依然困于柏油坑?

《人月神话》发表了近30年了,柏油坑依然在那里。 如果软件零缺陷是个神话,为什么我们还始终将陷于Bug修复视为常态?为什么普遍认为软件是解Bug解出来的? 虽然以前微软总被嘲笑补丁打不完,而我们也常常是在打补丁。 一个问题发生了,我们运用智慧的大脑先分析,再找方案! 大部分情况想到的是以最小的代价修复Bug,从而新方案反而引入新Bug。如此往复,构成了程序员工作的主要内容。 为...
阅读(1861) 评论(0)

X公司的流程改造之路 (二) [课程报告]

在整个流程改造过程中,公司高层的支持必不可少。敏捷开发模型带来不单单是纯粹流程和方法上的变化,也会带来公司制度层面,甚至是文化层面的改变。只将流程改造限制在项目级别,只能产出一个勉强而来的结果,并不是真正的敏捷开发。 上一篇:X公司的流程改造之路 (一)   开端   Beck为团队进行了两天的培训,并逐一解答了大家的问题。在随后的团队的启动会议上,总经理Drucker亲自出席鼓励团队,...
阅读(11222) 评论(22)

JavaScriptCore, WebKit的JS实现(完)

什么是method JIT? 什么是DFG JIT? JSC的DFG JIT与V8 Crankshaft相比有何优劣? JIT:一个方法式的JIT(a method jit) *关于method JIT,可以参考另一份档案。 关于解释器(interpreter)和堆栈(stack,也就是寄存器文件,register file)都是应用了方法式JIT(method JIT). 所谓简单方法JI...
阅读(8672) 评论(1)

Webkit中HTML5 Video的实现分析 (四) - 视频加载及播放的时序图

MediaPlayer同MediaPlayerPrivateInterface,再同播放控件的交互过程应当要简单、清晰。MediaPlayer通过自身的状态(Network States 和 Ready States)来控制操作的步骤。MediaPlayerPrivateInterface具体到不同的平台和视频格式,使用的具体的播放控件会不同。 这里仅贴一张时序图,其中没有特别区分HTM...
阅读(13355) 评论(1)

JavaScriptCore, WebKit的JS实现(一)

目前,JavaScript的实现已经成为编译领域的一个重要组成部分。主要包括Google的V8, Mozilla的SpiderMonkey, 还有Webkit使用的JavaScriptCore。   jsc:WebKit的JS引擎( js for webkit) JavaScriptCore (JSC)正是WebKit的JavaScript实现。   起初,JavaScriptCore是...
阅读(9771) 评论(1)

爱迪生的致命大跟头

人生路上,起起落落。我们经常学习如何面对困境,有时也要学习下如何面对顺境。   被人称为“美国之父”的富兰克林少年得志,豪情满怀,意气风发,他的表现自然也是挺胸阔步,昂首视人。 一位爱护他的老前辈意识到,一位有成就的普通人如此表现无可厚非,但作为国家领导人,这样很危险。于是他将富兰克林约出来,地点选在一所低矮的茅屋。富兰克林习惯于昂首阔步、大步流星地走路,于是一进门只听“嘭”的一声,他的额头...
阅读(2714) 评论(0)

Webkit中HTML5 Video的实现分析 (三) - MediaPlayer & MediaPlayerPrivate的生命周期

明确主要类的生命周期有助于更好理解Webkit中视频的工作流程。下图展示了类间的引用关系。 如HTMLVideoElement与一个MediaPlayer对应,MediaPlayer与MediaPlayerPrivate一一对应,它们都是一个组合关系,当所有者自身被析构时,会自动释放引用的实例。这个过程都是使用OwnPtr智能指针来实现的。   OwnPtr赋值操作的代码:...
阅读(9263) 评论(0)

Webkit中HTML5 Video的实现分析 (二) - MediaPlayerFactory & RenderVideo的绘制操作

MediaPlayerFactory MediaPlayerFactory像是一个解码库一样,初始化时,各个可用的播放器(MediaPlayerPrivate)向它注册。当需要解码时,由它给出一个合适的播放器(呼叫MediaPlayerPrivate::constructor,即MediaPlayerPrivate::create)创建一个实例[由MediaPlayer:: loadWith...
阅读(12767) 评论(3)

Webkit中HTML5 Video的实现分析 (一) - 基本结构及HTMLMediaElement & MediaPlayer

以下为针对Webkit中HTML5 Video实现原理的分析和学习总结。至于其中的UML图档,可以到下面的github链接中下载。 首先预览一下Webkit中和Video相关的主要的类的层次结构: 其中主要的类为HTMLMediaElement, MediaPlayer以及RenderVideo(左下角). HTMLMediaElement代表了DOM结点,其继承关系可以追溯到Nod...
阅读(18640) 评论(3)

推荐一个HTML5视频转换工具

在开发过程为了便于测试,经常需要准备些视频,于是找到了这一款轻便的转换软件, Easy HTML5 Video。它可以很方便视频转转换为HTML5的三种格式和Flash格式,并可以为你生成一个简单的页面。 Windows和Mac都有相应的版本。当然,转出来的视频有水印。但做测试已经够了。 官网地址:LINK...
阅读(4623) 评论(0)

Chrome中的开发者插件

在这里列举几个在Chrome下的开发插件,希望可以帮助提高工作效率,更主要的是抛砖引玉,更多的好工具还要不断发现。 1. Developer Tool  第一位的自然是Chrome集成的开发工具了,几乎涵盖了所有你需要的功能。查看组件、获取XPath、性能分析、更改浏览器UA、调试JavaScript等等。 特别值得一提的是在Element中获取xpath的功能,对于解析HTML数据会很...
阅读(4819) 评论(2)

掌握HTML5中的多媒体--音频(audio)

使用音频标签 音频标签的使用和视频是非常相似的:指定多个音频文件,浏览器会播放其中支持的第一个。 1.       "audio.ogg" controls> 2.       你的浏览器不支持标签. 3.       audio>   Figure 5列出了所有可用的属性. 因为不需要像视频播放器那样显示整个控件,所以高、低和预览图(poster)都不再需要了。 Fig...
阅读(4341) 评论(0)

思维惯性引发的编程问题

为什么程序要了解思维的障碍,并要练习有意识的加以克服?这里举一个实际发生的问题。 写代码像写作一样,有时思如泉涌,顺着思路就把一段代码写得有模有样。 下面是一个状态码检查的例子(这种写法本身并不严谨,但这里要讨论是一个更为严重的问题.): typedef enum { STATE_DEFAULT, STATE_A = 1, STATE_B = 2, S...
阅读(1703) 评论(0)
20条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1521790次
    • 积分:16747
    • 等级:
    • 排名:第615名
    • 原创:221篇
    • 转载:30篇
    • 译文:47篇
    • 评论:362条
    微博/MSN/EMail

    新浪微博:Horky
    QQ:324014340
    Mail:horky.chen@gmail.com
    微信公众号 (聚焦软件开发):
    博客专栏
    最新评论