2011年5月24日

可重入与线程安全

摘要: 在单线程的进程中,有且仅有一个控制流,函数代码即使是不可重入的,或者线程不安全的,也没有问题。但在多线程的程序中,有可能同一段代码同事被多个控制流并发的访问。这个时候为了保证资源的完整性,要为多线程程序编写的代码必须是可重入的和线程安全的。可重入和线程安全是两个相互独立的概念。可重入一个可重入的函数不能为后续的调用保持静态(或全局)数据,也不能返回指向静态(或全局)数据的指针。函数中用到的所有的数据,都应该由该函数的调用者提供。一个可重入的函数不能调用不可重入的函数。线程安全一个线程安全的函数通过“锁”来bo保护共享资源不被并发地访问。线程安全仅关心函数的实现,而不影响它的外部接口。任何一个不 阅读全文

posted @ 2011-05-24 15:01 ActiveChange 阅读(1626) 评论(0) 推荐(0) 编辑

需要重构的代码(读重构)

摘要: 1.重复代码一个模块中存在一个以上的地方有相同的程序结构,则需要好好思考下是否需要处理。2.过长的函数函数的长短不是看其行数的长短,而是看其名称是否能够解释其用途。在于“做什么”和“如何做”之间的语义距离。3.过长的参数列表参数过多,导致使用者难以理解。4.类定义的过大一个类中做了太多的事情,类变得庞大,实例变量太多。5.封装变化一个类中有些东西受外界的影响,容易产生变化。尽量把这些变化的东西放在一个新的类中。使之根据外界的变化做出相应的反应。6.少用switch使用面向对象编程,要少用switch和case语句,尽量用多态来替换它。7.冗余类删除不再使用的,没有任何价值的类。(包括检查是否有 阅读全文

posted @ 2011-05-24 13:26 ActiveChange 阅读(123) 评论(0) 推荐(0) 编辑

2011年4月15日

【转载】RPM包管理器

摘要: RPM包管理员(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器。最早由Red Hat研制,现在也由开源社区开发。RPM通常随附于Linux发行版,但也有单独将RPM作为应用软件发行的发行版(例如Gentoo)。RPM仅适用于安装用RPM来打包的软件,目前是GNU/Linux下软件包资源最丰富的软件包类型。RPM软件包RPM软件包分为二进制包(Binary)、源代码包(Source)和Delta包三种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。 阅读全文

posted @ 2011-04-15 14:46 ActiveChange 阅读(117) 评论(0) 推荐(0) 编辑

2011年4月7日

日本人的暧昧说法(三)

摘要: 休暇や早退を願い出る言い方——请假或是早退怎么这么难以启齿?对话例子:羅:もしもし、わたくし、羅ですが…部長:あ、羅さん、どうしました?羅:今日は、ちょっと具合が悪いんです。休んでもいいですか。部長:今、とても忙しい時期ですよ。羅さんだって分かっているでしょう?参考译文:罗小姐早上起来时身体很不舒服,想要向公司请假……罗:喂,我是罗××部长:喔,是小罗呀!怎么了?罗:今天我身体有点不舒服,请问我今天可以休息吗?部长:(有点生气)罗小姐你应该知道现在是非常忙碌的时期吧!罗:呜……(心想:我真的不舒服,所以才想请假嘛!部长太过分了吧。)Tips: ちょっと待って!在抱怨部长之前 阅读全文

posted @ 2011-04-07 15:14 ActiveChange 阅读(2540) 评论(0) 推荐(0) 编辑

日本人的暧昧说法(二)

摘要: 不要随意地对自己人使用敬语对话例子:蔡:**貿易でございます。いつもお世話になっております。客様:xx貿易の吉村と申しますが、岡田社長はいらっしゃいますか。蔡:まことに申し訳ありませんが、岡田社長はただ今いらっしゃいません。客様:そ、そうですか。ではまた後でお電話致します。蔡:???参考译文:客户打电话来,蔡小姐接电话。蔡:**贸易,您好,长久以来一直承蒙您的照顾。客户:我是xx贸易的吉村,请问冈田社长在吗?蔡:(心想:现在社长不在,没办法接电话,但对方是很重要的客户,我应该用很礼貌的说法才对。)真的很抱歉,冈田社长现在刚好不在。客户:(稍感惊讶)啊!是这样啊!那么我晚一点再打电话过来。蔡:? 阅读全文

posted @ 2011-04-07 14:58 ActiveChange 阅读(165) 评论(0) 推荐(0) 编辑

日本人的暧昧说法(一)

摘要: 日本人的暧昧说法不只是 ちょっと,还有这样的……对话例子:山本:はい、山本でございます。張:もしもし、張と申しますが、ご主人はご在宅でしょうか。山本:すみません。まだ会社から戻っておりませんが…張:そうですか。何時ごろお戻りになりますか。山本:あの、今日は遅くなると申しておりましたが…張:あ、遅いんですか。すると、何時ぐらいですか。山本:それは、ちょっと…張:???参考译文:(张先生打电话给日本朋友,朋友妻子接的电话)山本:喂,山本家,您好。张:喂,敝姓张,请问您先生在家吗?山本:不好意思,她还没有从公司回来。张:这样呀,请问他大概几点会回家呢?山本:是这样,他说今天会晚点回来……张:啊,很晚 阅读全文

posted @ 2011-04-07 11:24 ActiveChange 阅读(214) 评论(0) 推荐(0) 编辑

2011年3月24日

#define宏的特殊用法

摘要: #define宏其实平时编程中用到比较普遍,但有几个使用方法比较特别,所以特地写下来。1.前加##或后加##,将标记作为一个合法的标识符的一部分如:#define A(x) T_##x则:int A(1) = 10; 等效于 T_1 = 10;2.前加#@,将标记符转换为相应的字符,仅对单一标记转换有效如:#define B(x) #@x则: B(a)即'a'3.前加#,将标记转换为字符串如:#define C(x) #x则:C(1+1) 即"1+1"4.定义多行宏,最后一行不能用斜杠#define FUN(this, class)\{\int a = 10 阅读全文

posted @ 2011-03-24 11:45 ActiveChange 阅读(302) 评论(0) 推荐(0) 编辑

程序员编程好习惯(不断追加中。。。)

摘要: 1.动手编码之前,需要对药编码实现的解决方案有个正式的或粗略的设计。2.试着使用版本管理工具。3.对环境设置复杂或有参考意义的内容,进行简单详细的记录,确保可用性,方便下次查阅。4.使用有意义的变量名,函数名和类名。5.对自己的操作系统和硬件设备有足够的了解,这样可以从资源占用等方面提升程序的性能。6.研究,阅读别人编写的代码,从中学习编程技术和方法。 阅读全文

posted @ 2011-03-24 11:30 ActiveChange 阅读(115) 评论(0) 推荐(0) 编辑

2011年1月24日

扩展VMware虚拟机硬盘大小

摘要: 在使用Vmware的时候,可能由于最开始安装时,设置的硬盘太小了,有些软件或者资料不能存放。所以需要在不重新安装的前提下,扩大硬盘的大小。在Vmware的安装目录下,有一个工具,vmware-vdiskmanager.exe,可以通过运行这个工具,来达到目的。在命令行下,进入安装目录,然后输入:vmwre-vdiskmanager -x 5GB E:\WindowsXp\windowsXp.vmdk除了通过工具来扩展硬盘大小外,还可以通过设置来改变,比如在虚拟机的hard disk上点击setting,在选择utility的expand来扩展。当然还有更多的其他方法,以后陆续列出! 阅读全文

posted @ 2011-01-24 11:10 ActiveChange 阅读(481) 评论(0) 推荐(0) 编辑

2011年1月19日

this关键字

摘要: 在C++语言中,我们都知道this关键字,它代表对象本身。这次想通过下面的代码,来简单说明下this关键字的作用和机理。上面的程序编译,能顺利运行。可能有些人不明白,为什么对象没有生成,却可以调用成员函数。其实在C++程序中,利用对象指针调用类的程序函数时,隐含向成员函数传递this这个参数,但这个this参数和一般的参数不同,除了一些细节方面不同外,this与其他参数的存储地址不同,如一般的参数都被压入栈中,函数返回时从栈中弹出来,而this指针被存放到ecx这个寄存器中保存起来。下面针对每个成员函数,分别进行说明:obj-Test1();由于Test是一个静态函数,而且其函数内操作的变量 阅读全文

posted @ 2011-01-19 21:46 ActiveChange 阅读(247) 评论(1) 推荐(0) 编辑

导航