自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

原创 第九章 简化条件表达式

简化条件表达式Decompose Conditional(分解条件表达式)Consolidate Conditional Expression(合并条件表达式)Consolidate Duplicate Conditional Fragments(合并重复的条件片段)Remove Control Flag(移除控制标记)Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式)Replace Conditional with Polymorphi

2020-12-09 00:01:28 205

原创 第八章 重新组织数据

重新组织数据Self Encapsulate Field (自封装字段)Replace Data Value with Object (以对象取代数据值)Change Value to Reference (将值对象改为引用对象)Change Reference to Value (将引用对象改为值对象)Replace Array with Object (以对象取代数组)Duplicate Observed Data (复制“被监视数据”)Change Unidirectional Association

2020-12-04 11:49:46 221

原创 第七章 在对象之间搬移特性

在对象之间搬移特性Move Method(搬移函数)Move Field (搬移字段)Extract Class (提炼类)Inline Class (将类内联化)Hide Delegate (隐藏委托关系)Remove Middle Man (移除中间人)Introduce Foreign Method (引入外加函数)Introduce Local Extension (引入本地扩展)在对象的设计过程中,“决定把责任放在哪儿”即使不是最重要的事,也是最重要的事之一。类往往会因为承担过多责任而变得臃肿不

2020-11-28 23:38:12 202

原创 第六章 重新组织函数

重新组织函数提炼函数(Extract Method)Inline method (内联函数)内联临时变量(Inline Temp)Replace Temp with QueryIntroduce Explaining Variable(引入解释性变量)Split Temporary Variable(分解临时变量)Remove Assignments to Parameters(移除对参数的赋值)Replace Method with Method Object(以函数对象取代函数)Substitute A

2020-11-24 23:35:54 206

原创 第四章 构筑测试体系

构筑测试体系自测试代码的价值测试框架添加更多测试自测试代码的价值程序员编写代码只占非常小的部分时间, 另一些时间花在设计上,最多的则是用来调试。确保所有测试都完全自动化,让他们检查自己的测试结果一套测试就是一个强大的bug侦测器,能够大大缩减查找bug所需的时间撰写测试代码的最佳时机是在开始编程之前,添加特性之前,先写相应测试代码测试框架JUnit单元测试和功能测试单元测试,高度局部化,目的为了提高程序员的生产率。功能测试,专门的QA部门,黑盒测试,从客户的角度保障质量。每当你

2020-11-15 22:47:55 121

原创 第三章 代码的坏味道

代码的坏味道重复代码(Duplicated Code)过长函数(Long Method)过大的类(Large Class)过长参数列表(Long Parameter List)发散式变化(Divergent Change)散弹式修改(Shotgun Surgery)依恋情节(Feature Envy)数据泥团(Data Clumps)基本类型偏执(Primitive Obsession)Switch惊悚现身(Switch Statements)平行继承体系(Parallel Inheritance Hie

2020-11-12 23:47:19 167

原创 第二章 重构原则

第二章 重构原则何谓重构为何重构何时重构怎么对经理说重构的难题何谓重构对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。重构提供了一种更高效且受控的代码整理技术和性能优化不同,后者往往使代码较难理解,但为了性能,你不得不那么做为何重构重构改进软件设计当人们只为短期目的,或是在完全理解整体设计之前,就冒然修改代码,程序将逐渐失去自己的结构,程序员越来越难通过阅读源码而理解原来的设计。代码结构的流失是累积性的。越难看出代码所代表的设计意图,

2020-11-07 23:21:43 189

原创 第一章 重构,第一个案例

起点何时重构重构第一步Tips何时重构如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。重构第一步重构前,为即将修改的代码建立一组可靠的测试环境。重构手法的运用虽然可以避免大多数bug,但程序员毕竟是人,所以需要可靠的、可自动化运行的测试环境。Tips重构技术就是以微小的步伐修改程序,如此,很容易发现犯的错误。好的代码应该清楚表达出自己的功能,好的名称(变量名、函数名、类名等)是代码清晰的关键。任何一个傻

2020-11-05 23:39:37 176

原创 运行apt-get update, 提示CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

OS: ubuntu 16.04.1问题:运行:apt-get update提示错误:***CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none解决方法:https://stackoverflow.com/questions/29319538/issue-with-my-ca-certificates-crt/2931...

2018-09-08 17:12:03 7580 2

转载 ubuntu为apt-get设置http代理

这种方法要用到/etc/apt/文件夹下的apt.conf文件。如果您希望apt-get(而不是其他应用程序)一直使用http代理,您可以使用这种方式。 注意: 某些情况下,系统安装过程中没有建立apt配置文件。下面的操作将视情况修改现有的配置文件或者新建配置文件。sudo vi /etc/apt/apt.conf在您的apt.conf文件中加入下面这行(根据你的实际情况替换yourproxy...

2018-06-26 18:19:04 1632

转载 Python的with...as的用法

python的with...as用法

2017-08-17 18:43:24 256

转载 制作Linux下程序一键安装包

制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin啊run啊等安装脚本的简单制作了。

2017-06-06 19:50:01 10811

原创 使用vim将文件中tab修改为空格

tab –> space::set ts=4:set expandtab:%retab!space –> tab::set ts=4:set noexpandtab:%retab!

2017-05-06 10:26:42 746

转载 Notepad++中查找替换回车符

Nodepad++, ”CR”, “LF”, Find/Replac 行结束符

2017-04-25 18:58:17 7932

原创 vim配置taglist时一个注意点

vim, taglist, ctags

2015-11-04 19:01:34 536

转载 C语言中extern的用法

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。1. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在a.c

2015-04-09 09:50:17 488

转载 Vimdiff---VIM的比较和合并工具

源程序文件(通常是纯文本文件)比较和合并工具一直是软件开发过程中比较重要的组成部分。现在市场上很多功能很强大的专用比较和合并工具,比如 BeyondCompare;很多IDE 或者软件配置管理系统,比如Eclipse, Rational ClearCase都提供了内建的功能来支持文件的比较和合并。当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff

2015-03-06 10:00:40 546

转载 Windows下交换Caps Lock和左ctrl

下个KeyTweak吧,图形化更改映射。如果不想下载,可以直接在注册表中修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout中添加Scancode Map二进制项,内容为0000 00 00 00 00 00 00 00 000008 03 00 00 00 1D E0

2015-02-07 09:41:00 5774 2

转载 Makefile编译选项

-D:条件选择编译-I :头文件搜索路径-l:连接静态库AR静态库打包命令的名字,缺省值是ar。ARFLAGS静态库打包命令的选项,缺省值是rv。AS汇编器的名字,缺省值是as。ASFLAGS汇编器的选项,没有定义。CCC编译器的名字,缺省值是cc。CFLAGSC编译器的选项,没有定义。CXXC++编译器的名字,缺省值是g++。

2013-08-19 15:12:08 880

转载 Make选项及makefile常用变量

Make命令可以带几种参数: 标志, 宏定义, 描述文件名和目标文件名, 标准形式为:Make [flags] [macro definitions] [targets] 在unix下, flags包含:-f file   指定file文件为描述文件. 如果file参数为"-", 描述文件指向标准输入, 如果没有"-f", 则系统默认当前目录下makefile或Makefile为描

2013-08-19 15:06:58 861

转载 Makefile中override 指示符

通常在执行make时,如果通过命令行定义了一个变量,那么它将替代在Makefile中出现的同名变量的定义。就是说,对于一个在Makefile中使用常规方式(使用“=”、“:=”或者“define”)定义的变量,我们可以在执行make时通过命令行方式重新指定这个变量的值,命令行指定的值将替代出现在Makefile中此变量的值。如果不希望命令行指定的变量值替代在Makefile中的变量定义,那么我们需

2013-08-09 15:47:34 894

转载 Makefile内置变量,递归式变量,直接展开式变量,条件赋值,追加赋值

将shell命令的输出赋值给变量:VALUE = $(shell   命令)Makefile中给变量赋值:=     是递归展开式变量          value1 = 5          value2 = $(value1)          value1 = 6          最终$(value2)就变成了6:=    是直接

2013-08-07 16:43:53 1079 1

转载 手机上h网和3g网的区别!!!!

H说白了就是3.5G,比3G还要快!!!联通已经先行部署了HSDPA网络,网速由以前的7.2Mbps提升到14.4Mbps!未来还可以通过简单的升级实现4G,达到28.8Mbps!手机网络显示的字母是代表正在使用的网络。除了我们现在经常提到的网络外,还有2G网络、2.5G 网络、2.75G 网络、3.5G 网络等。2G 就是普通的GSM 网络,2.5G 是在 GSM 基础上添加了GPRS或CDMA

2013-04-01 10:22:35 5945

转载 中断处理函数中不用disable_irq而用disable_irq_nosync原因

今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现在进入中断处理后内核就挂掉了,于是研究了一下才发现disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 在中断处理程序中应该使用disable_irq_nosync来关闭中断先看一下disable_irq_nosync,内核代码中是这样解释的:

2012-12-10 15:20:46 471

转载 简析Android init.rc

在 Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的启动脚本,其语法主要包含了以下内容:Commands:命令Actions: 动作Triggers:触发条件Services:服务Options: 选项Propert

2012-12-03 16:50:02 444

转载 copy_from_user

copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须很小心,假如用户空间的数据地址是个非法的地址,或是超出用户空间的范围,或是那些地址还没有被映射到,都可能对内核产生很大的影响,如oops,或被造成系统安全的影响.所以

2012-11-07 09:18:30 547

转载 container_of()宏

在学习Linux驱动的过程中,遇到一个宏叫做container_of。该宏定义在include/linux/kernel.h中,首先来贴出它的代码:/** * container_of - cast a member of a structure out to the containing structure * @ptr:        the pointer to the

2012-10-18 15:23:23 492

转载 sysfs接口函数的建立_DEVICE_ATTR

说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)函数宏DEVICE_ATTR内封装的是__ATTR(_na

2012-10-10 16:22:47 594

转载 i2c_msg一些标志的解释

I2C_M_IGNORE_NAK:      设置这个标志意味当前i2c_msg忽略I2C器件的ack和nack信号。I2C_M_NOSTART:            设置这个标志意味当前i2c_msg不发送start信号。注意,其实调用bit_xfer的一开始就已经发了start信号了(程序第10行),这个标记无非就是标志是否发送地址第18行。其次,如果一个i2c_msg没有定义I

2012-09-28 11:44:40 3040

转载 fcntl函数说明

(1)fcntl函数说明前面的这5个基本函数实现了文件的打开、读写等基本操作,这一节将讨论的是,在文 件已经共享的情况下如何操作,也就是当多个用户共同使用、操作一个文件的情况,这时,Linux 通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。文件锁包括建议性锁和强制性锁。建议性锁要求每个上锁文件的进程都要检查是否有锁存,并且尊重已有的锁。在一般情况下,内核和系统

2012-08-16 11:38:18 464

转载 Linux中等待队列机制分析

在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得到满足的时候再继续运行,进入运行状态。这种需求需要等待队列机制的支持。Linux中提供了等待队列的机制,该机制在内核中应用很广泛。在内核里面,等待队列是有很多用处的,尤其是在中断处理、进程同步、定时等场合。可以使用等待队列在实现阻塞进程的唤醒。它以队列为基础数据结构,与进程调度机制紧密结合,能够用于实现内核中的异步事件

2012-08-15 12:36:52 798

转载 attribute 用法 section 部分

1. gcc的__attribute__编译属性要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或 数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn表示没有返回值、pure表明函数除 返回值外,不会通过其它(如全局变量、指

2012-08-14 11:58:51 1194

转载 globalmem.c:160:2: 警告:从不兼容的指针类型初始化 [默认启用]

/globalmem.c:160:2: 警告:从不兼容的指针类型初始化 [默认启用]/globalmem.c:160:2: 警告:(在‘globalmem_fops.unlocked_ioctl’的初始化附近) [默认启用]这个错误网上搜索发现2.6.38版本内核 file_operation结构体已经删除了ioctl函数,取代的是:long (*unlocked_io

2012-08-13 16:34:45 4539

转载 错误: 初始值设定项里有未知的字段‘ioctl’

这个错误网上搜索发现3.0.0.15版本内核 file_operation结构体已经删除了ioctl函数,取代的是:long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);long (*compat_ioctl) (struct file *, unsigned int, unsigned long);

2012-08-10 11:46:26 1080

转载 globalmem.c:193:2: 错误:隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]

隐式声明函数错误的意思是函数在未声明之前就被调用了,需要先声明这两个函数,版本变化导致这个错误的出现。解决方法:找到kmalloc与kfree的声明头文件并include进来就可以了#include

2012-08-10 11:44:10 2299

转载 学习宏MKDEV

在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:struct cdev {        struct kobject kobj;        struct module *owner;   //所属模块        const struct file_operations*ops;                  //文件操作结构,在写驱动时,其结

2012-08-10 09:56:54 5859

转载 VIM配置方法--手把手教你把Vim改装成一个IDE编程环境(图文)

By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作

2012-08-09 16:48:00 1492 1

转载 VIM 中复制和粘帖

在vi编辑器有一个寄存器的概念(concept of register),正是这个概念使我们可以进行多次的剪切和粘贴操作。在一般的编辑器中我们被限制只有一个剪切板可用,而在vi中最多时可以有26个剪切板供使用,这样就会大大的提高工作的效率。在vi中,我们可以使用d或x来删除文本,但是经过这样操作所删除掉的文本并没有被vi所丢弃,而是被保存起来。我们可以使用p命令来粘贴刚刚所删掉的内容。下面来看

2012-08-09 10:47:18 8692 1

转载 Linux┊理解devfs、sysfs、udev

linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。  一、devfs  devfs是在2.4内核就出现了,它是用来解决linux中设备管理混乱的问题,你查看一下/dev下的设备文件就知道其中有许多是空的(也就是没有对应的硬件的),但是它们却必须存在,所以这给linux设备管理带来了很多麻烦,为了解决这个问题,linux内核开发人员开发了devfs,

2012-08-09 10:27:59 751

转载 读时序图的方法

从上到下,从左到右,高电平在上,低电平在下,高阻态在中间。双线表示可能高也可能低,视数据而定。交叉线表示状态的高低变化点,可以是高变低,也可以是低变高,也可以不变。      竖线是生命线,代表时序图的对象在一段时期内的存在,时序图中每个对象和底部中心都有一条垂直段的虚线,这就是对象的生命线,对象的消息存在于两条生命线之间时序要满足建立时间和保持时间的约束才能保证锁存到正确的地址。

2012-08-06 10:27:29 1175 1

gnu_make_manual

gnu make manual,学习makefile的权威手册,非常实用的学习文档

2012-08-07

vim命令图谱

vim命令图谱,较全的vim命令图谱,史上最好用的编辑器命令大全

2012-08-01

coreutils-5.96.tar.bz2

coreutils 提供了常用的核心工具集,比如 cp mv ls 等等 具体的参考man文档。非常好的东东!

2011-04-28

XML终极教程(PDF)

一本学习XML的不错的外文教程!分章节介绍……

2010-07-15

VC++6.0环境中LIB与DLL文件的使用

详细讲解VC6.0中lib文件和dll文件的使用,很实用……

2010-05-20

nbtscan网络扫描

nbtscan网络扫描,是一个网络扫描工具,扫描本机BIOS,不错的工具!

2009-11-16

NDOC 1.3 For .NET 2.0

NDOC 1.3 For .NET 2.0 很好用的工具!倾力为大家奉献!希望多大家有用!

2009-11-16

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

TA关注的人

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