帐前卒专栏

code, software architect, articles and novels.
代码,软件架构,博客和小说

谨记srand()不要调用两次或两次以上。。

void main()
{
for(int i=0;i<10;i++)
{
srand( (unsigned)time( NULL ) );
cout<<rand()<<endl;
}
}

这样调用的时候,因为CPU高速的关系,调用的srand( (unsigned)time( NULL ) );
生成的种子数一样。导致rand()产生的随机数也一样。

改为:

void main()
{ srand( (unsigned)time( NULL ) );
for(int i=0;i<10;i++)
{
cout<<rand()<<endl;
}
}

有时候这些错误很隐蔽,在构造函数中做了一个check方法。在check方法中调用init方法,然后在init方法中产生随机数。注意如果srand(
(unsigned)time( NULL ) );
被写进了check()或者init()等方法中,一定要保证该方法在构造的时候只被调用一次。最好是把该行代码srand( (unsigned)time(
NULL ) );写到构造函数中进行初始化种子的操作。

1. For a long time, I believe them.But After a while,you learn to ignore the
names people call you,you just trust who you are.
很长一段时间我都相信他们说的。但是后来,就不再关心别人叫你什么。你只相信自己。
不管别人叫你什么:怪物也好,败者也罢。不必关心,因为你知道自己是什么或者将来会成为什么,这是一份自信。每个人都应这样,人生才能被很正确的定位与诠释。

2. The thing that matter the most is what you think of yourself. If there are
something you really want, or someone you really want to be, the only person
standing in your way is you. 最重要的事情其实是自己怎样看待自己。如果你想得到什么,或者你想成为什么,真正的挡路者也是自己。
我们是自己的挡路者,每个人都要挑战自己才能获得应有的成功。坚定自己的目标,当知道自己真正想要什么,并为之努力的时候,世界都将为之震动。

3. once upon the time,someone decided we were the losers. There are two sides
in every story, and our side is never been told.
曾几何时,他们都认为我们是失败者。但每一个故事都有其两面(成功或失败,美好的结局或者是失败的苦果),而我们失败后的事情却从来没有定论。
失败者们失败后,没有人关心。这个社会也只是注重成功的人士。不过事情没有定棺盖论。失败者不会也不应一生一世的都在失败之中度过。

![史莱克3/怪物史莱克3/怪物史瑞克3 电影海报](http://images.movie.xunlei.com/gallery/336/174e7f57
d7eabf84e240134cebec397b.jpg)

导演 |

Chris (VII) Miller , Raman Hui

主演 |

Mike Myers (I) , 埃迪.墨菲
, 卡梅伦.迪亚兹
, 伊恩.麦克谢
, Maya Rudolph
, Amy Sedaris
, 康拉德.弗农
, John Krasinski
, Justin Timberlake
, Regis Philbin

类型 |

动画 喜剧
家庭
幻想

年份 |

2007

地区 |

美国

语言 |

英语

片长 |

90分钟

色彩 |

彩色

有一个Road类,有一个Intersection类,Road类中要含有两个节点Intersection的信息,
Intersection要有相邻路的信息列表。

于是Road.h中这样定义:


class Road
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBloc
kStart.gif) ![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/
ContractedBlock.gif) … {

private :

Intersection * from;

Intersection * to;

public :


![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBloc
kEnd.gif) }

Intersection.h中这样定义:


class Intersection
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBloc
kStart.gif) ![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/
ContractedBlock.gif) … {

private :

list < Road *> roadNext;

public :


![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBloc
kEnd.gif) }

很可惜这样编译通不过,编译器会报找不到类型错误。

于是在Intersection类中添加一行代码

class Road;

在Road.h中导入Intersection的文件#include"Intersection.h"

这样编译应该没有问题。(如果函数中没有出现Road类型或者 Intersection类型的话)

但如果函数中有Road类型或者 Intersection类型又怎么办呢?

创建Road.cpp和Intersection.cpp文件

在*.h中只是写函数的声明,在cpp文件中写函数定义,并导入两个.h文件。例如:


#include " Road.h "

#include " Intersection.h "


void Intersection::InsertRoad(Road * r)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBloc
kStart.gif) ![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/
ContractedBlock.gif) … {

roadNext.insert(roadNext.begin,r);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBloc
kEnd.gif) }

编译。。。通过

东华合创昨日来我院招实习生。说好10:00,结果11:00才来。简单介绍了自己的公司。说自己公司什么都做,通过了cmm5级和ISO9000认证。说全国只有3
家通过了。然后叫我们投简历,并告诉我们下午两点半去面试。下午面试,秩序非常混乱,几乎是谁抢到位置谁就可以面试。没有任何的规章制度。我因为不想耽误时间就抢先面
试。4个人坐一起,只对其中一个人面试,谈完再面试其他。感觉就象医生问病情,针对简历一问一答。然后走人。

我感觉这家公司有几点没有做好或者是那两个招聘的人没有做好。

1.不正式。说话谈吐不正式,与人交流没有什么感情。招聘时迟到(大忌)。我认为这不是过了cmm5级后的表现。虽然cmm5并没有什么招聘人员的约定,但一个公司来
招聘至少要有像样的过程。

2.不停的讲自己过了cmm5级。优点是要讲,但是不要不停的讲。宣传的东西带的少,只有两份详细介绍他公司的宣传资料。

3.招聘流程没有任何规定。我们学生会面试还有相关的流程规定。一个偌大的公司,实习招聘竟然可以抢座面试。

4.他们宣称什么都做。可看看宣传资料发现还是做web应用,至少他们不做操作系统。这样的话最好还是少说。

5.面试问题设置。曾这样问一个家伙:一个内蒙的项目,你能不能一个人完成?现在的项目有一个人完成的吗?都能一个人完成,还不又到了手工磨房时代?要软件工程工程何
用?当然不排出个体软件的行为。但是像这样一个1000多人的公司,一个项目能让一个人去完成吗?如果真的有这种情况,说明这个公司做事情还没有到达第5级优化级。可
惜,那同学竟然说,经过培训应该可以吧。

面试有很多要注意的地方。前来招聘的人员也要注意一下。否则真的感觉这家公司内部有种种的问题。

顺便赞一下Tim chen,
人家虽然也迟到了。但是其他方面注意的很好。说话也很具亲和力。虽然微软没有过cmm,但是明显感觉到员工的差异。过来cmm5,没有形成企业文化,也是不行的!

话说上次宣传部和编辑部合并,成立宣传编辑部。现任部长张磊。 现在校里搞个大型义捐。本院承办。(龙哥说过,外包给别人的单位都挣了大钱,给别人做外包的只能挣些小
钱)我院还挣不到钱。只是书记们想出出风头吧了。人要出名。由他去吧。

童梓希望把宣传组分出来。我同意。张磊也同意。大家都同意。但是童梓点名要部里人去做宣传这一块。没有经由张磊的同意。张磊很郁闷的对我说,这学生会真不想做下去了。
我对他说,让洪莲出台一些制度吧。没有部长的同意,不允许任何人调用部内人员。又把童梓“训”了一顿。(我自己的权力好像很大??:>)

正如龙哥所说:制度要完善。要到cmm3级定义级。一切行为都是要有定义的。不能说调我部的人就调走了。

昨天一上午都在和睿哥聊天。然后十一点和他吃了顿饭。

算法老师就是不一样。给我说了一通算法。什么分支定界,NP,完全NP等等。又推荐了李佳同的书。“李佳同”不知道我把他名字写错了没有。然后给我说了他要带的课程设
计(动态交通图),又问我参不参加。我说当然参加,但是2+2,测试班选的是操作系统和数据库。开发班才能选数据结构。睿哥说没有问题,一切由他搞定。睿哥说现在研究
生出来也不一定能找到工作。前几天有个研究生(华中的)写过几篇被SEI索引的论文。结果却没有人要他。做研究做的不错,却找不到好的工作单位。我在心里想我应该不光
是去做研究,动手能力也要加强些。我说我现在有可能有向外保送的名额,如果保到清华,那就应该去吧。如果保到其他的学校,就不读了。工作几年再读。睿哥也有些赞同,说
可以向中科院那里想想。我问能不能保到那里。他大笑曰:那里必须要考!

后来聊着聊着,红亮也来了。又讨论了一通动态交通的要求。然后我又说猫咪也可以拉过来。有这两大高手的支持。做这个东西,心里有了些底。

十一点不到,睿哥非要拉我们去吃饭。向着天马方向走去,我和红亮就嘀咕:是不是去食堂吃饭去?还好中途停下,把我们带到音乐厨房。点了3份套餐,很好吃。其中的猪扒和
鱿鱼卷很好吃。红亮的那份看起来也不错,不过抑制了一下自己的欲望,没有吃他的。吃着的时候又谈起他以前的同学,他说混的最不错,现在最有钱的是过去被学校开除的那个
同学。大家上学的时候都认为那家伙是傻子。体育老师说抬铅球一定高度砸脚会很痛。那个同学非要试一下。我说或许他当时有这个想法:“first we try,
then we
trust!”。我又说:“有钱并不是衡量一个人是否成功的标准。商界中有人认为只能挣钱的商人还是小商人,能使企业内部和谐,企业和社会和谐的商人才是大商人。”

后来睿哥和我们谈起学英语。问我们怎么背单词。我说就拿本书背呗。睿哥说不好。然后就推荐我们用文曲星里的单词记忆来背单词。然后把文曲星借个红亮,说:“我家还有一
个,你先拿去用”。晕,今天睿哥怎么这样搞笑?

昨日要交SIT人脸的中期检查报告。锦哥突然对我说:你帮我找几个大二的,对作业判定感兴趣的人。然后给我解释了半天这个新的SIT计划。中午赶紧通知几个大二的负责
人。下午却没有接到任何电话。感觉大二是不是太不积极了,来这都没有人报名。可是后来找到大二的负责人,却发现很多申请书。很可惜,那些申请书写的一塌糊涂。什么爱好
打篮球,跑步什么的都写上了。和SIT的项目一点关系都没有。真不知道大二的是怎么想的。

后来因为交的人太多,要和锦哥商量一下。锦哥说反正你和大二的熟,就由你办了。(还真对我放心,很可惜我也不熟。汗!)我推荐了几个和我很熟的人,然后叫锦哥看了简历
,他又挑了一个写的最多的。看来以后写简历一定要写的多。虽然写的很菜。

晚上给睿哥发了封email,希望能在我走之前指点我一下。记得睿哥那句最经典的话:程序员就是农民,而你们连农民都不如。现在想来,的确有理!不过为了不引起看这篇
文章的程序员们的公愤,我先替睿哥道个歉。。

** 8088 汇编速查手册 **

一、数据传输指令
───────────────────────────────────────
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV    传送字或字节.
MOVSX  先符号扩展,再传送.
MOVZX  先零扩展,再传送.
PUSH    把字压入堆栈.
POP    把字弹出堆栈.
PUSHA  把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA    把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD  把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD  把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP  交换32位寄存器里字节的顺序
XCHG    交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
XADD    先交换再累加.( 结果在第一个操作数里 )
XLAT    字节查表转换.
── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN      I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
OUT    I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA    装入有效地址.
例: LEA DX,string  ;把偏移地址存到DX.
LDS    传送目标指针,把指针内容装入DS.
例: LDS SI,string  ;把段地址:偏移地址存到DS:SI.
LES    传送目标指针,把指针内容装入ES.
例: LES DI,string  ;把段地址:偏移地址存到ES:DI.
LFS    传送目标指针,把指针内容装入FS.
例: LFS DI,string  ;把段地址:偏移地址存到FS:DI.
LGS    传送目标指针,把指针内容装入GS.
例: LGS DI,string  ;把段地址:偏移地址存到GS:DI.
LSS    传送目标指针,把指针内容装入SS.
例: LSS DI,string  ;把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF    标志寄存器传送,把标志装入AH.
SAHF    标志寄存器传送,把AH内容装入标志寄存器.
PUSHF  标志入栈.
POPF    标志出栈.
PUSHD  32位标志入栈.
POPD    32位标志出栈.

二、算术运算指令
───────────────────────────────────────
ADD    加法.
ADC    带进位加法.
INC    加 1.
AAA    加法的ASCII码调整.
DAA    加法的十进制调整.
SUB    减法.
SBB    带借位减法.
DEC    减 1.
NEC    求反(以 0 减之).
CMP    比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS    减法的ASCII码调整.
DAS    减法的十进制调整.
MUL    无符号乘法.
IMUL    整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM    乘法的ASCII码调整.
DIV    无符号除法.
IDIV    整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);
或  商回送AX,余数回送DX, (字运算).
AAD    除法的ASCII码调整.
CBW    字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD    字转换为双字. (把AX中的字的符号扩展到DX中去)
CWDE    字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ    双字扩展.    (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令
───────────────────────────────────────
AND    与运算.
OR      或运算.
XOR    异或运算.
NOT    取反.
TEST    测试.(两操作数作与运算,仅修改标志位,不回送结果).
SHL    逻辑左移.
SAL    算术左移.(=SHL)
SHR    逻辑右移.
SAR    算术右移.(=SHR)
ROL    循环左移.
ROR    循环右移.
RCL    通过进位的循环左移.
RCR    通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时, 可直接用操作码.  如 SHL AX,1.
移位>1次时, 则由寄存器CL给出移位次数.
如  MOV CL,04
SHL AX,CL

四、串指令
───────────────────────────────────────
DS:SI  源串段寄存器  :源串变址.
ES:DI  目标串段寄存器:目标串变址.
CX      重复次数计数器.
AL/AX  扫描值.
D标志  0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
Z标志  用来控制扫描或比较操作的结束.
MOVS    串传送.
( MOVSB  传送字符.    MOVSW  传送字.    MOVSD  传送双字. )
CMPS    串比较.
( CMPSB  比较字符.    CMPSW  比较字. )
SCAS    串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.
LODS    装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
( LODSB  传送字符.    LODSW  传送字.    LODSD  传送双字. )
STOS    保存串.
是LODS的逆过程.
REP            当CX/ECX<>0时重复.
REPE/REPZ      当ZF=1或比较结果相等,且CX/ECX<>0时重复.
REPNE/REPNZ    当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
REPC          当CF=1且CX/ECX<>0时重复.
REPNC          当CF=0且CX/ECX<>0时重复.

五、程序转移指令
───────────────────────────────────────
1>无条件转移指令 (长转移)
JMP    无条件转移指令
CALL    过程调用
RET/RETF过程返回.
2>条件转移指令 (短转移,-128到+127的距离内)
( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
JE/JZ  等于转移.
JNE/JNZ 不等于时转移.
JC      有进位时转移.
JNC    无进位时转移.
JNO    不溢出时转移.
JNP/JPO 奇偶性为奇数时转移.
JNS    符号位为 “0” 时转移.
JO      溢出转移.
JP/JPE  奇偶性为偶数时转移.
JS      符号位为 “1” 时转移.
3>循环控制指令(短转移)
LOOP            CX不为零时循环.
LOOPE/LOOPZ    CX不为零且标志Z=1时循环.
LOOPNE/LOOPNZ  CX不为零且标志Z=0时循环.
JCXZ            CX为零时转移.
JECXZ          ECX为零时转移.
4>中断指令
INT    中断指令
INTO    溢出中断
IRET    中断返回
5>处理器控制指令
HLT    处理器暂停, 直到出现中断或复位信号才继续.
WAIT    当芯片引线TEST为高电平时使CPU进入等待状态.
ESC    转换到外处理器.
LOCK    封锁总线.
NOP    空操作.
STC    置进位标志位.
CLC    清进位标志位.
CMC    进位标志取反.
STD    置方向标志位.
CLD    清方向标志位.
STI    置中断允许位.
CLI    清中断允许位.

六、伪指令
───────────────────────────────────────
DW      定义字(2字节).
PROC    定义过程.
ENDP    过程结束.
SEGMENT 定义段.
ASSUME  建立段寄存器寻址.
ENDS    段结束.
END    程序结束.

倒不是我在忙编辑部里的事情。是编辑部自己在忙自己的事情。

让张磊接班,截至现在仍旧是个明智的选择。希望他能懂得怎样分配任务,不使自己很忙。给他谈话也谈论了很多关于做人做事方面的东西。至于那些东西是否正确要看他日后的
实践了。我说编辑部不光要做自己应该做的本行,也要做专业方面的事情。我希望编辑部里的人专业都是过关的,而不是说只会操作word,ps,flash什么东东。编程
培训之类的事情,我们也要做。而且培训自己的部下要比科技部做的还要好。张磊也希望能借助培训来提高自己的威望。我曰善。于是一拍即合。

回寝的时候有给洪莲讲了些事情。希望她在大学能记住这几点:不要完全指望老师,努力使自己成为优秀的人,不要copy。我希望她做到。至于谈完后是否她还记得,只有她
自己清楚。这小孩,上机也太不勤快了。叹口气说,女生都是这样。。。

第二天编辑部培训。张磊竟然借到了院里的会议室来培训。孺子可教。(我从来没有借过,虽然书记时常对我说能借)8点张磊打来电话要我过去合影。我说实验课还要签到,要
不下次。在qq上何雯也说要去合影。恰好刚刚签完。再给张磊打个电话,还好没有结束。于是急急忙忙的赶到会议室。发现鲁丹也在。编辑部大家庭算是齐了。合影耗时30秒
。30秒后,又急急忙忙的赶会实验室。前后总耗时3分钟。还好老师没有抽查签到情况。

希望这届编辑部比我这届做的要好。希望我12月份再回来的时候,他们能给我个很好的交待。

金山的kingsoft college准备在湖南大学招人。

沈家政做了个报告:

值得做笔记的地方:

软件要注重可用,性能,可靠,国际化

成为编程高手要多看,多试,多实践。

雷军希望程序员具有的品质:热爱编程 ,追求完美,个性执着。

金山训练营希望达到的目标:让进去的人都能写出规范漂亮的代码,夯实基础,熟悉工具,乐于合作。

然后是大家熟知的两句话:细节体现人品,细节决定成败。

什么是好的程序员(做人方面)自觉,职业,习惯,快乐。

什么是好的程序(做事方面)

就我感觉,金山训练营是个培训程序员的地方。它对于数据结构,算法的要求并不是太高,认为应该向印度人一样写程序。

我们是应该向印度人那样代码规范化,但是我总是感觉中国人要有自己的一条路。在创新的基础上规范化。代码为什么不能有些自己的个性?否则真的让人感觉那是群编代码的机
器。

至于培训最基础的东西,我没有任何异议。只是如果一个人只是把自己定位于程序员。未免让人感觉缺乏追求。当然要看把自己定位于做个什么样的程序员,有些程序员的确是令
我们倏然起敬的人。自己和福特.甘不太一样,不会去到说:我来就是为了服从您的命令。所以也不认为自己能有福特.甘那样的成就。

到底当个什么还是看自己。没有谁规定必须在软件这行里成为什么才能算功德圆满。

0%