自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

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