- 博客(12)
- 收藏
- 关注
原创 面向对象设计的五大原则
Bob大叔在《敏捷软件开发》一书中给出了面向对象设计的五大原则:SRP,OCP,LSP,ISP,DIP。今天我就粗浅的说一下我对这几个原则的理解,请大家批评指正。1. SRP——单一职责原则这个是我认为在五大原则中最最重要的原则了,因为符合了它其他的原则都可以很轻松的办到。单一职责是说每一个对象都有且仅有一个关键抽象。凡是这个关键抽象能力之外的事都由
2015-10-28 13:29:14
811
原创 面向对象编程中如何描述对象之间的关系?
谈到面向对象编程中如何选择对象之间的关系,实在是一件令人头疼的事。对象之间的关系大致有以下几种:1. 继承关系举个例子:Person是一个描述所有人的类,Student可以继承于Person,所有Person具有的公有方法Student都有,即任何使用Person对象的地方,都可以毫无顾忌的直接用Student代替。这种关系是非常强的,有时候产生的问题会
2015-10-27 15:35:12
3380
原创 memorization function decorator
From ActiveState Recipes. “Probably the fastest memoization decorator in the world”Python code:#coding:utf-8from time import timedef memofunc(f): """ Memoization decorator for a func
2012-08-16 20:23:06
523
原创 Linux内核态设置某片虚拟地址为只读的方法
下面这段代码主要用在虚拟地址映射比较固定的情况。该代码的作用主要是便于调试“内存被别的代码踩”,把这段被怀疑的内存设置为只读后,如果有别的程序写到该区域就会打印出Stack,很容易找出是谁踩了你的内存了,呵呵。。。int mmap_SetAddrRDONLY (unsigned long virt_addr, unsigned long size /* KB */){ int i; pte_t *p_pte; uint32 level; int ret = RT_OK; ASS
2010-09-20 10:20:00
2829
转载 系统初始化函数集(subsys_initcall)和初始化段应用
<br />前言:前段时间做一个项目需要设计一个动态库,并希望在加载库的同时自动执行一些初始化动作,于是联想到了linux内核众子系统的初始化,于是研究之,并在过这程中发现了初始化段的存在,利用初始化段实现了该功能。工作一年,笔记积累多了,慢慢变得杂乱无章,于是开博,一方面整理笔记,梳理知识,另一方面和大家交流,共同进步。<br />keyword:subsys_initcall, init, init_call1 系统初始化调用函数集分析(静态)<br />1.1 函数定义<br /> 在linux内核代
2010-08-10 11:21:00
649
转载 [zz]asmlinkage & regparm
<br /><br />发信人: feiy (积极、乐观、率性、自信), 信区: KernelTech<br />标 题: asmlinkage 其他 regparm attribute函数的gcc汇编浅析<br />发信站: BBS 水木清华站 (Mon Apr 26 02:56:12 2004), 转信<br />[asmlinkage 其他 regparm attribute函数的gcc汇编浅析]<br />asmlinkage是一类特殊的regparm attribute函数:<br />#def
2010-08-06 16:00:00
671
转载 gcc中设置特定代码块的优化级别
<br /><br />今天碰到一个gcc优化相关的问题,为了让一个页变成脏页(页表中dirty位被置上),需要执行下面这段代码:1uint32_t *page;2// ...3page[0] = page[0];<br />最后一行代码很有可能被gcc优化掉,因为这段代码看起来没有任何实际的作用。那么如何防止gcc对这段代码做优化呢?<br />设置gcc编译时优化级别为-O0肯定是不合适的,这样对程序性能影响会比较大。stackoverflow上的Dietrich Epp给出了一个强制类型转换的方案:1
2010-08-06 15:50:00
4779
原创 vmware linux kernel driver config
基于linux_2.6.33内核$make defconfig$make menuconfig选择下面几项:Device Drivers SCSI device support ---> SCSI disk support SCSI generic support SCSI low-level drivers ---> [*] LSI Logic New Generation RAID Device Drivers Serial ATA and Paral
2010-08-06 15:28:00
1617
原创 LSI SAS 6G+SATA盘的问题
最近在做的磁盘稳定性工作中有个问题:LSI SAS 6G的卡接插SATA盘的JBOD,用dd测试读写磁盘,一段时间后出现有些命令被abort,而用SAS盘就没有这个问题,很奇怪。
2010-08-04 18:17:00
1210
转载 GRE经验贴
发信人: zczczcle (酒肉穿肠过), 信区: EnglishTest标 题: GRE经验v1.1发信站: 武汉白云黄鹤站 (2010年07月25日18:02:30 星期天)说明:此文由北大一牛人完成,他是我老朋友了,邀我修改,我索性也一吐为快,做了个补充,附在后面。如有不当之处,请多包含,毕竟经验有限。================分割线就分割线,为什么有人就是喜欢在中间写些字呢================出分了。一直也想着写点什么来纪念一下这个学
2010-07-27 13:07:00
1811
原创 关于Linux2.6中断的一些记录
<br />1. 中断向量和中断号(中断线)<br />中断向量是从cpu角度规定的中断信号划分;中断号是PIC引脚号<br />2. 几种异常<br />故障,陷阱,中止<br />3. 中断描述符表IDT<br />异常与中断发生时,都需要到IDT中查找相关信息,以找到对应的处理程序以及其他动作。需要注意的是,保护模式下发生权限提升时,中断穿越的是中断门,而异常穿越的是陷阱门。二者的区别是:当CPU穿越中断门时,是自动关中断的(清除eflags里的IF标志位[cli],在进入do_IRQ函数后会打开中断
2010-07-26 17:07:00
813
转载 makefile里PHONY的相关介绍
Phony TargetsPHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。例如: clean: rm *.o temp因为"rm"命令并不产生"clean"文件,则每次执行"make clean"的时候,该命令都会执行。如果目录
2009-08-19 16:08:00
1347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅