自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

求索

Make Something Different

  • 博客(9)
  • 资源 (28)
  • 收藏
  • 关注

原创 软件设计的复杂度

什么是软件设计的复杂度软件技术发展的使命之一就是控制复杂度(Complexity)。从高级语言的产生,到结构化编程,再到面向对象编程、组件化编程等等。本文介绍通过分解、改善依赖关系,以及抽象的方式来降低复杂度。

2015-04-30 00:57:32 9313 1

原创 [OOD] 隔离变化-桥接模式

使用一个抽象的接口隔离变化,既提高了各层的内聚性,又降低它们间的耦合。符合OO原则中的: 1. 封装变化 2. 针对接口编程,而不针对具体的实现。 3. 降低交互对象的耦合度。

2015-04-21 00:45:18 2411 1

原创 [OOD] 适配器模式

适配器模式常常与桥接模式相比较,两者最大的不同在于解决的问题不同。适配器用于对接两个不同的接口,而桥接则主要为了隔离变化。从应用上来说,一个是被动的,一个是主动的。 所谓被动的,就是当前的接口的差异是无法轻易改变的,必须引入一个中间层来解决。而中间层的引入往往带有性能、以及不必要的数据拷贝等开销,详细参考关于层的反模式讨论。如果接口是可控,就要尽量避免接口不一致的情形。而不是等待使用Adapter来处理。

2015-04-21 00:10:27 2062

原创 [OOD] 为什么单一职责原则(SRP)是最难运用的

RP是所有设计原则最简单的,但也是最难运用的。现实工作中,关于一个类是否符合SRP,或者是否有必要符合SRP的讨论是经常发生的。争论的关键在于职责的定义,但我理解SRP真正的核心是关注于变化。

2015-04-18 23:53:47 2812 1

原创 [架构设计] 组件和模块的区别

组件(Component)和模块(Module)又是一对容易混淆的名词,也常常被用来相互替换。个人总结,从设计上来看,组件强调复用,模块强调职责(内聚),或者说组件是达到可复用要求的模块。

2015-04-17 00:04:55 28409 5

原创 [架构设计] 什么是业务逻辑

讨论设计时,专业词汇满天飞,每个人的技术背景、工作经验上的不同都会导致在理解上存在着差异。无论是SEI的定义、OMG UML的定义、还有各路大神的定义,都有从不同视角带来的差异。准备后面关注这些定义的差异,摊开来大家一起来讨论。关于’业务逻辑’, 国内国外争论了很多年了(这篇在07年就说没有清晰的定义),其中几个比较详细的讨论见附录(一定要看评论)。我总结为两类: 一类是逻辑处理论,一类是数据操作论。

2015-04-15 00:51:58 12452 2

原创 用Feature Management补足技术管理

敏捷的执行最容易走样的就是技术管理层面的问题,反而是项目管理的层面被过度强调了。项目管理、质量管理的维度不同,会将产品的不同功能分割成不同的迭代任务,而功能间的关系被忽视了。简单而言就是研发过程的配置管理出现了漏洞。技术管理主要强调管理好功能间的依赖关系,便于系统的分析、追踪,甚至帮助做出重构的决策。 可以使用一个Feature Management的应用来进行管理。

2015-04-07 01:05:40 1790

原创 Chromium设计原则总结

文档的思路从需求决定设计开始展开Chromium主要设计特点。从来没有复杂的设计,它们都可以转换为简单的描述。期望能从学习中解开Chromium设计要点。

2015-04-07 00:38:22 5101

原创 [Chromium] Chromium Android WebView层的设计

Chromium Android WebView是Chormium专为Android WebView提供一个对Content的封装层。从整体上来看可以理解为一个特殊化的Embedder, 功能可以概括为:   1. 对Content和部分Browser Components封装到Java实现,供AOSP WebView调用实现WebView功能。   2. 实现Android WebView使用的

2015-04-07 00:16:53 6479 2

Google Chrome中的高性能网络

内容是"The Performance of Open Source Applications" (POSA)的草稿, 也是The Architecture of Open Source Applications的后继者. POSA囊括了一批针对性能的优化和设计,以及开发过程中的性能管理等内容的论文

2013-09-03

WebKit中两个小设计(以小见大)

通过介结WebKit中使用的两个小的技术点,来展示一些设计概念。

2013-07-26

Java虚拟机即时编译器的一种实现原理

讲述了JIT中的Trampoline的实现,对于了解JIT很有帮助.

2013-06-09

面向 HTML5 的图形加速和面向移动设备的 JAVASCRIPT 引擎 JIT 优化

本文将首先介绍 HTML5 带来的性能挑战。由于渲染引擎和 JavaScript 引擎 是 Web 运行时两个重要的基本构造模块,本文随后将讨论图形加速技术和 即时 (JIT) 优化技术应用于英特尔® 凌动TM [2] 处理器平台的解决方案,以显 著提升这两大组件的性能。文中评估了我们的解决方案对典型 HTML5 和 JavaScript 基准测试的影响,同时展望了未来工作的走向。

2013-06-09

主动自我优化的编译器

ADAPTIVE OPTIMIZATION FOR SELF - RECONCILING HIGH PERFORMANCE WITH EXPLORATORY PROGRAMMING 关于编译器优化的好文章,包括Inline Cache, Type feedback, Adaptive Recompilation, Performance Evaluation, Self Improving compiler...

2013-06-09

LLDB查看数据类型的示例脚本

不知道大家都没有遇到过在gdb和lldb里输出一个类时困扰,常常要一个个属性展开下去,或者调用提供函数来检查。我分享一个使用LLDB脚本来简化变量输出的方法。

2013-01-14

软件维护计划示例

软件维护计划的例子. 涉及范围、成本、风险等内容。

2013-01-07

McCabe的复杂度论文

McCabe关于软件复杂度的论文,全面而细节。反观现在许多关于McCabe复杂度的介绍却没能这么详细透彻。

2013-01-07

LLDB的Python扩展脚本

在LLDB下可以使用Python编写脚本扩展指令。 可以参考http://blog.csdn.net/horkychen

2012-12-20

Trace-based JIT简介(对Method JIT的改进)

IBM的一份对Method JIT和Trace JIT说明的文档。

2012-08-22

二维条码的插件(Chrome)

做了一个二维条码的插件,默认将当前网页地址转为二维条码。

2012-07-20

二维条码生成插件

二维条码生成插件,重构后。支持右击菜单,简化JS.

2012-07-20

二维条码生成插件 (Chrome)

做了一个二维条码的插件,默认将当前网页地址转为二维条码。

2012-07-14

Extreme Programming Explained英文版 第2版

XP的专业名词翻译得五花八门。这本书是正统之作,有个英文版,可以对照看看一些专业名词。

2012-06-28

Delphi数据库开发入门

2004年左右为同学写的Delphi数据库开发的入门教程,有一些纪念意义。

2011-11-23

代码优化的三个阶段

很久以前写的一个PPT,讨论了算法、流程及编码技巧三个层次的代码优化。

2011-11-23

<<突破思维障碍>>的思维导图 (Freemind)

<<突破思维障碍>>的思维导图 (Freemind)

2011-10-18

使用Cocoa开发的二十四点计算程序

使用Cocoa写了一个小的二十四点计算程序,可供初学者学习Cocoa使用。中间有一个递归调用的示例。 *XCode 3.2

2011-05-21

Lenovo LJ2000打印机驱动

以前自己分析了LJ2000数据所写的驱动程序,可以支持Mac OS及Linux,原来放在MacLinux.cn上,后来网站关掉了。偶然发现竟然有人在引用它,觉得它可能还有点用,就放上来分享.里面包含三个包: Linux:2 (DEB&RPM) Mac OS:1

2010-12-06

代码大全之编程基本功

小组内对代码大全学习的资料,包含的是程序撰写的基本概念!

2010-10-03

PMBOK 3思维导图(第3&4章)

利用MindManager绘制的PMP第3及4章的思维导图,有助于组织记忆!

2010-05-23

The book of Wireless

比较系统的介绍Wireless的资料! 涉及Wireless的基础知识和技术背景!很值得参考,唯一不足是英文书!

2010-03-20

UPnP Device Architecture

UPnP 参考资料! UPnP是实现DLNA的核心,所以读一读会有一些基本概念!

2010-03-18

STL Documents from SIG.com

将SIG上的STL Documents下载后转为CHM文件,方便查询! 本来cnheying已经做了,可惜下载不了,我重做了一下跟大家分享!

2009-09-20

实战KDevelop进行Linux软件开发

很多高手在Linux下很喜欢使用Makefile进行开发,但事实上并不是所有人都适合使用Makefile,尤其是初入Linux世界的人。 许多年来,Linux很难得以普及,就是因为使用及开发的难度被无端地夸大了,许多高手都以能运用复杂的指令为荣,而不愿意轻意妥协于那些更易于掌握的工具。而我认为不要在意用什么开发,只要关注你要开发什么!所以至于工具,自然由你决定。KDevelop也是一个选择,至少它可以使开发者摆脱Makefile体系的困扰! 软件开发要以产品论英雄,任何工具都是熟能生巧罢了,结果也都是殊途同归,没什么复杂的。

2009-03-11

实战KDevelop进行Linux软件开发

很多高手在Linux下很喜欢使用Makefile进行开发,但事实上并不是所有人都适合使用Makefile,尤其是初入Linux世界的人。 许多年来,Linux很难得以普及,就是因为使用及开发的难度被无端地夸大了,许多高手都以能运用复杂的指令为荣,而不愿意轻意妥协于那些更易于掌握的工具。而我认为不要在意用什么开发,只要关注你要开发什么!所以至于工具,自然由你决定。KDevelop也是一个选择,至少它可以使开发者摆脱Makefile体系的困扰! 软件开发要以产品论英雄,任何工具都是熟能生巧罢了,结果也都是殊途同归,没什么复杂的。

2009-03-11

空空如也

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

TA关注的人

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