位域定义
十一 14th
测试环境:vc6.0struct mybitfields{unsigned short a : 4;unsigned short b : 5;unsigned short c : 7;} test;=> sizeof(test) == 2;struct mybitfields{unsigned char a : 4;unsigned char b : 5;unsigned char c : 7;} test;=> sizeof(test) == 3;struct mybitfields{unsigned char a : 4;unsigned short b : 5;unsigned char c : 7;} test;=> sizeof(test) == 6;struct mybitfields{unsigned short a : 4;unsigned char b : 5;unsigned char c : 7;} test;=> sizeof(test) == 4;struct mybitfields{unsigned char a : 4;unsigned char b : 5;unsigned short c : 7;} test;=> sizeof(test) == 4;struct mybitfields{unsigned char a : 4;unsigned int b : 5;unsigned short c : 7;} test;=> sizeof(test) == 12;
构造函数出现异常时的行为
十一 14th
char *g_pszTest = NULL;class B{public:B(){cout << "B constructed" << endl;}~B(){cout << "B destructed" << endl;}};class C{public:C(){cout << "C constructed" << endl;}~C(){cout << "C destructed" << endl;}};class A : public B{public:A(){cout << "A constructed" << endl;g_pszTest = new char[20];strcpy(g_pszTest, "before throw");throw 1;strcpy(g_pszTest, "after throw");}~A(){cout << "A destructed" << endl;if (g_pszTest != NULL){cout << g_pszTest << endl;}}private:C m_c;};该段程序代码输出为:B constructedC constructedA constructedC destructedB destructedbefore throw1. 构造函数throw之后的代码不会被执行;2. throw了异常的类的析构函数不会被执行,但throw之前已经构造的对象的析构函数会被正常执行。
构造析构的顺序问题
十一 14th
#include using namespace std;class M{public:M(){cout << "M constructed" << endl;}~M(){cout << "M destructed" << endl;}};class N{public:N(){cout << "N constructed" << endl;}~N(){cout << "N destructed" << endl;}};class A : virtual public M{public:A(){cout << "A constructed" << endl;}~A(){cout << "A destructed" << endl;}};class B : virtual public M{public:B(){cout << "B constructed" << endl;}~B(){cout << "B destructed" << endl;}};class C : public B, public A{public:C(){cout << "C constructed" << endl;}~C(){cout << "C destructed" << endl;}private:N m_n;};int main(){// 构造的几点原则:// 1. 先构造父类,然后构造子类// 2. 虚拟继承,虚基类只会被构造一次// 3. 多重继承,写在前面的先被构造(class C : public B, public A,所以B先于A被构造)// 4. 先构造基类,然后构造成员对象(m_n)// 所以,这里将依次输出:// M constructed// B constructed// A constructed// N constructed// C constructedC c; // 析造的重要原则:析构的顺序与构造的顺序刚好相反!// 所以,这里将依次输出:// C destructed// N destructed// A destructed// B destructed// M destructedreturn 0;}
要留住人才,必须培养自己的人才
十一 6th
我一直对团队是否能够吸引到人才表示担忧,上次我已经说过,“团队的竞争对手不仅仅是创新基地、ACM团队,更包括微软、IBM、intel等等大型企业及清华北大等等著名高校,所以我们如果要留住人才,必须培养自己的人才,到大四再去搜罗人才的方法是行不通的”。 这种担忧,已经成为一个严峻的现实了! 昨天dian展示了ljz访美的照片,我相信大多数人都会很向往很羡慕他的经历,这不是崇洋媚外,而是一种向往美好事物的天性。intel这种大公司是有很强的号召力的,它出得起钱,它随便搞个活动,就可以让ljz们激动好几个星期,团队与之相比,相形见绌! 我觉得团队要警觉起来。现在团队很多人,都沉浸在一种优越感之中,感觉团队很了不起,是众多学生梦寐以求想进入的地方。梦寐以求的确不假,但这仅仅是因为现在机会太少了,眼界太窄了,等到他们看到了机会,他们还会梦寐以求团队吗?在团队很辛苦,干得再多也不会加分,相比之下,做大赛很轻松,还可以加分免试保研甚至出国观光,找工作的时候,这种经历一写,顶上在团队做好几个项目。另外,团队出去的同学普遍缺乏表现力,英语水平又差,大多数人一看就是标准的蓝领,干本份工作的。 现实是残酷的,当我们还陶醉于自己的成绩的时候,我们可能很快就会失去自己的优势,我们的竞争对手太强了!我们的优势是做真实项目,但这也是我们最大的掣肘。真实项目意味着细节,意味着无限期的维护,当我们把GEMMING当成团队的人才培养基地的同时,也意味着我们终将为太大细节牵扯过多精力。细节很重要,但细节不是全部,我们需要open的精神,需要表现力,需要fluent oral english。 我希望团队以后能够做点改变。 首先,要尽快形成自己的核心竞争力,要提高项目的平均利润,要缩小项目数量,否则我们只能像现在这样在一些小项目上牵扯太多时间,而没有时间来培养人,熏陶人,提高人的气质和综合素质; 我不得不说,我们的思路存在着自相矛盾的地方。一方面我们要培养帅才,培养创新能力,另一方面,我们却把绝大多数精力放在了细节问题上,任何事情,要是太牵涉到细节,就会变成体力活。创新的过程,应该是一个不断有idea,不断有时间去实现idea的过程,而不是郁于某件事情,某个idea,我觉得我们现在太缺时间了,项目忙得要死,还怎么会有时间去实践自己的idea呢? 第二,要形成自己的理论方向,这年头,做ARM7、ARM9的都是产业链的最低层次,很多公司,我知道的sinfor、nsfocus,他们的产品有硬件平台,但他们自己不做,直接外包,因为最赚钱的不是ARM7/9的板子,而是在板子上跑的技术。这一点在招聘会上表现得淋漓尽致,人家第一条肯定不会说“熟悉ARM7/9”,而会说“熟悉移动通信理论….”,“熟悉ARM7/9”最多不过是个plus而已; 这不是怀疑我们积累的技术的价值,缺乏理论方向的确是我们的软肋,我觉得我们要有这样的抱负,除非我们不做这样的定位。当然,在目前看来,我觉得我们至少在3年之内,是没有办法在这方面取得实质性的突破的。 第三,我们不仅要培养有宽阔视野的人,更要培养创新思维。昨晚dian说到zxt做的那个东西,虽然把人家开发板所有功能都用上了,但是没有创新,一刀砍死,他们这种作品注定拿不到大奖。创新需要钻研,否则功能垒得再多,人家也不会认可你的。团队在创新这方面无疑是有很大缺陷的,队员普遍缺乏创新性思维,上次MS那个嵌入式大赛可见一斑,再如昨天看到的虚拟实验室和成都科技馆的很多展项比起来,更是相形见绌; 第四,我们要走出去,迎进来,我们也要参赛,我们的项目要鼓励多样性,没有必要老是固守在真实项目上。我们没有必要去抵抗大公司的进攻,我们要利用大公司发展自己,老是抓住真实项目不放,对人对己,都没有什么好处。 我不是说不要项目,而是说,我们要重视参赛!我清晰的记得,我们曾经有一段时间,对参赛是抱有一种不屑的,参赛甚至成为我们对比于创新基地的资本,走出去,迎进来,我们应该感谢ljz给我们带来的这次思想上的冲击!
莫衷一是!
十一 4th
昨天goldenray的生日,但他在实验室中度过过了一天;昨天duoergun的女朋友来了,就陪女朋友出去玩了。江山、美人,孰轻孰重?在这一刻,我感觉自己价值观模糊了。我能说duoergun不对吗?我也经历过项目和女朋友之间的抉择,我能够体会到这种难处,我只能说,goldenray非常敬业! 团队的兄弟们都太辛苦了,想起了王翰的诗: 凉州词 葡萄美酒夜光杯, 欲饮琵琶马上催。 醉卧沙场君莫笑, 古来征战几人回。
我们很需要经验和魄力
十 29th
魄力来自于什么?自信!自信来自于什么?历练! 昨天中午听hyxxl组例会,hyxxl在安排任务方面,还缺乏经验,安排任务没有远见(不知道现在做的事情在整个过程中处于哪个阶段)、不具体(有些应该由某人独立承担的任务,结果搞了N多人去关注)、不明确(没有给出截至日期,没有向队员明确他的任务对整个项目的重要作用)、并行性不高(也是没有远见的一种表现,比如:等到板子到了,才想到去买芯片,投板子时不是先投控制部分,而是先投外围,造成硬件调试时还需要大家额外的电路为外围电路模拟外部环境)。 作为监督员,应该在组长面前体现魄力,为组长起到表率作用,不仅要指出其问题所在,有时候也要身体力行,直接告诉组长应该怎么做,比如amuzing,昨天就直接越俎代庖,帮助黄勇理清了当前最紧迫的任务,并对分工进行了实时的调整,这对laser power组来说,是一剂非常及时的药,对hyxxl来说,也是一个极好的示范。 大多数时候,我们不知道为什么会这样,即使知道了为什么会这样,我们也不知道怎么做才能不这样,知道怎么做才能不这样,还要坚持做下去,才能从根本上解决问题。第二个问题是hyxxl的问题,第三个问题就是wikiexe的问题了,他的问题在于不知道如何坚持。 昨天quickmouse肢解了他们的项目,我惊叹于quickmouse的魄力和技术力,他一语道破冲突检测的带宽利用率问题,否定了冲突检测的可行性,进而建立了令牌环网模型,这是我或者amuzing或者dodo都无法做到的。 最后,说一句,我觉得hyxxl和wikiexe都是非常有天赋的队员,硬件是经验科学,项目管理在一定程度上也是经验科学,走过风雨才能见彩虹,相信二位有一个美好的明天!
第一次和校长同桌吃饭
十 29th
具体应该说是副校长,挺有亲和力的,但仍然不会把俺们小辈放在眼里,^_^ 校长跟记者介绍我们团队,理论层次拔得很高,受益菲浅,现在全国都在提实践教学,但真正实践的,就寥寥无几了,能在这个团队帮助dian老师成就这番事业,我感觉很自豪。后来校长同志又去参加另外一个应酬了,接下来就是教务处长在海聊了,教务处长看起来很年轻,理论水平也很高,看问题有深度,我很佩服他对于自己工作的认识:“我们就是在观察教师中间出现的问题,创造条件,让有价值的东西能够得到推广”,这是一种非常务实的认识,现在的官员能做到这样的,已经难能可贵了。 不过他对于大学培养目标的看法,似乎太脱离实际了。他说,我们大学培养的人才基础扎实,智商又不低,因此可以成为传统行业的leader和新兴行业的开拓者,我们不是在培养简单的工程师。我觉得这些只能作为目标,在当前教育体系的目标普遍缺失、教育资源普遍匮乏的大环境下,普遍husters就不要做太多奢望了。 PS:当记者真好,待遇忒高,^_^。
华北危急,平津危急,同志们,行动起来吧!
十 26th
HLD我们势必要延期3天时间,LLD只有14天,除去周末,只有12天,再加上liyong本周要去成都,大家的课程又占有了很多时间,不容乐观! 大家可以想想,我们什么时候才能将这3天时间补起来呢?LLD?我觉得没有可能,编码?但愿如此…… 总结一下HLD延期的原因(我能想到的): 1. yangrh去北京的几天内,由于对HLD书写格式不太熟悉,造成后面有局部修改; 2. 对分布式处理、热备份、热插拔等不太熟悉的知识不够重视、跟踪不力,导致SRS阶段的工作移到了HLD阶段完成,造成HLD的被动; 3. 前期我对报文处理、连接管理关注过多,对规则管理关注过少,导致两边进度不一致,HLD延期主要是在规则管理部分,这一部分要加油; 4. 各位课程的增加。 ……欢迎大家补充原因,善于总结才能更快进步!
鉴于以上原因,我觉得我们应该做一下改变: 1. 尽快确定热备份的方案,这个工作请yangrh和liyong配合; 2. 我会更多参与规则管理部分的设计和讨论(liyong也要持续参与),希望能加快这部分的进度; 3. 请大家在LLD阶段抓紧时间,尤其是报文处理和连接管理两部分,你们一定要走在前面,你们踏出来一条路,后面的人就能少走弯路,你们的工作先完成,就能为其他部分分担工作量; 4. 请yangrh今晚把LLD的要求讲一下,白天大家难以凑在一起,我觉得cmzb、duoergun、mef、fw、liyong(客户IP管理部分)明天可以开始这方面的工作了; 5. 请yangrh持续跟踪SRS、HLD中的某些问题,对于要基线化的文档,做一些把关。
拥有一批非常主动的组员,是项目组长的荣幸
十 24th
昨天下午,fw跑过来说,有没有什么东西可以分给他做的,他那一块已经做完了;接着suoluo、mef、liyong、mef都很主动的来说,有没有什么事情可以做;最感动的是今天上午,我本来把时间留出来让他们做完HLD,没想到他们都提前完成了,不过我没有及时发现这一情况,这时,fw跑过来说,我们下一阶段要干什么?我们已经完成了,然后我就安排他们交叉review。 主动,对于一个小组的融合、战斗力、效率等等都是非常重要的。组员主动,对他自身来说,是一个提高、表现的机会。我已经越来越看好他们中的某些人了,他们对整个项目非常了解,理解能力和设计水平在整个过程中得到了很好的体现。组员主动,还能极大地提高组员的协调效率,弥补组长的疏漏,比如今天,如果不是fw的提醒,我可能真的就让大家浪费了一个上午。 另外,我发现主动这种东西是可以培养和引导的,首先,应该培养组员的主人翁意识,某些工作,应该放手让他们去干,只有组长放手了,他们才能意识到自己工作的重要性,体会到自己的价值,进而激发自己的求知欲和责任心;另外,要保护好组员的信心,要时刻关注组内最短的那块木板,当她/他出现危机时,要注意以一种温和的态度,参与他模块的讨论,帮助他理解任务,最后度过难关,不要过分强硬,这样会对他造成压抑感,组员的天赋就得不到尽情发挥;最后,某些队员的带动作用对组员主动性的引导起着关键作用,在我们组,fw的主动性起了很好的带头作用,他的主动,经常让大家都动起来了。
PS:这些天suoluo的表现有所改变,前段时间她总是固守自己那一块,但现在她越来越乐意参与小范围内讨论了,这是一个可喜的变化,只要保持这种兴趣和激情,她会更快进步起来的。
