摘要: 红黑树是每个节点都带有颜色属性的二叉查找树 ,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求: 性质1. 节点是红色或黑色。 性质2. 根是黑色。 性质3. 所有叶子都是黑色(叶子是NIL节点)。 性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子 阅读全文
posted @ 2013-12-12 16:13 yunfeng_net 阅读(1815) 评论(1) 推荐(0) 编辑
摘要: 介绍重构[1]:对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本。在这个定义中,"软件之可察行为"可以理解为相同的回归测试集,因此是确定、具体的。然而,虽然可以通过统计的方式计算”修改成本”,但是仍然缺乏可操作性。在本文中,把“降低其修改成本”改成“降低复杂度”。从而利用复杂性量度给出重构的量化尺度,提高了重构定义的一致性。软件量度[2][3]主要的软件量度有如下几种:1、 尺度性指标代码行数,类成员个数,方法行数:越少越好类个数:越多越好2、 结构性指标:继承深度:继承树的高度方法加权和:每个方法的环形量 阅读全文
posted @ 2013-02-19 13:28 yunfeng_net 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 介绍Ruby支持元编程,简单的说就是在运行时改变程序自身。利用这一点,可以做出很有趣的程序。本文介绍利用ruby演示程序的执行过程,显示包括函数调用和数据变化。演示程序执行Ruby每个class都有一个方法method_missing(name, *args)。当调用对象的方法不存在时,系统默认调用这个方法来处理。这就相当于一个系统后门,可以得到方法调用的轨迹。下面的程序演示如何把大象放进冰箱里。class User def act f = Frig.new f.open f.put_elephant f.close endendclass Frig def in... 阅读全文
posted @ 2012-11-11 14:44 yunfeng_net 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 介绍 树形结构具有在程序中普遍性。以XML为例,是一个树形的结构;其提供的XPath,给予了全局定位每一个节点的能力。本文针对这个操作,讨论性能上的优化。分析过程采用典型的自底向上的方式:基本算法设计、算法性能考虑以及对象接口设计。 基本设计 简化起见,定义Path:<n1, n2, …, nk>。 阅读全文
posted @ 2012-10-12 13:20 yunfeng_net 阅读(1732) 评论(0) 推荐(0) 编辑
摘要: 简介 最近要使用几种不同的编程语言,C++, java,javascript,php,python和ruby。为了避免混淆,特写此文,以备参考。 数据类型 这里数据类型指的是内部数据类型,不考虑语言内部的自动转换。 C++ java javascript php python ruby 基本类型 b 阅读全文
posted @ 2012-07-31 11:25 yunfeng_net 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 petri网是用来分析并发行为的一种形式模型。举例来说,一个进程创建两个线程,然后等待它们结束,如下图: Figure 1:开始进程 T2: 创建; T3: 合并;T1和T2为各自线程的操作。 P5为起始控制点,其中的黑点儿为token,表示拥有控制权。经过T2以后,P5失去控制权,P0 阅读全文
posted @ 2012-07-05 16:33 yunfeng_net 阅读(1594) 评论(0) 推荐(0) 编辑
摘要: 简介所谓离线应用,就是在离线时能够把数据存储到本地,在线时同步到服务器上。HTML5提供了程序缓存和本地存储两种机制来实现, 可以用cache manifest和indexedDB来搜索相关内容。各个浏览器对此支持都不太一样,本文尝试出一种可行的方案。程序缓存程序缓存比较容易设置,只要写一个.manifest文件,再把它写到html元素的属性就可以了。我遇到的一些问题:Firefox13有提示缓存,但是离线之后看不了。Chrome19成功了。没有测试动态文件缓存例如.php,感觉即使保存下来,也就和浏览器离线浏览差不多。开启缓存之后,外链的音乐文件chrome19就不认了。有些第三方服务不能缓 阅读全文
posted @ 2012-06-19 20:39 yunfeng_net 阅读(1610) 评论(0) 推荐(0) 编辑
摘要: MVC模式MVC模式提供了数据模型与数据显示的分离,使得两者可以独立演化。传统MVC这里传统MVC指以服务器脚本为主的建站方案。例如用PHP生成不同的HTML页面,各个页面之间用锚<a>来链接。对浏览器发来的请求,服务器首先进行授权认证,然后把这个请求发送(dispatch)到对应的数据处理模块,由该模块(很可能)存取数据,根据模板生成HTML页面会送给浏览器。这个方案由服务器完成MVC所有的部件,浏览器负责显示。MVC对应如下:C控制器:请求发送模块M模型:数据处理模块V视图:显示模板基于AJAX的MVC使用Ajax 减轻了浏览器与服务器之间的数据交换,因为一些视图直接在浏览器中 阅读全文
posted @ 2012-06-11 15:26 yunfeng_net 阅读(1181) 评论(0) 推荐(1) 编辑