寝室晨起混乱用语
来学习一些地道的日常美语吧。 一清早起来,Alex洗漱完毕,发现Tony仍不见清醒,就大声说: “Tony! We gotta go! It’s burning down!” Tony正在做着美梦,被吵醒,心里自然很烦,遂说: “Don’t bother me!” ...
来学习一些地道的日常美语吧。 一清早起来,Alex洗漱完毕,发现Tony仍不见清醒,就大声说: “Tony! We gotta go! It’s burning down!” Tony正在做着美梦,被吵醒,心里自然很烦,遂说: “Don’t bother me!” ...
在网上发现了这篇“华为的冬天”,虽说是几年前的文章,但是读完后仍很有感触,遂转帖之。 公司所有员工是否考虑过,如果有一天,公司销售额下滑、利润下滑甚至会到破产的地步,我们怎么办?我们公司的太平时间太长了,在和平时期升的官太多了,这也许就是我们的灾难。泰坦尼克号也是在一片欢呼声中出的海。而且我相信,这一天一定会到来。面对这样的未来,我们怎样来处理,我们是不是思考过。我们好多员工盲目自豪,盲目乐观,如果想过的人太少,也许就快来临了。居安思危,不是危言耸听。 ...
大部分的关于C的著作都提到ANSI C Standard,但我相信少有C程序员真正细致阅读过ANSI C标准(当然了对于作C编译器的程序员来说这个标准肯定是烂熟于胸了^_^),在这个系列的文章中我将和大家一起浏览一下ANSI C标准(C99,以下称标准),呵呵,当然也不能面面俱到,只是“走马观花”。 ...
最近同寝室的一位朋友参加了一次某国内著名通讯公司的社招活动,回来后他简单给我讲了些他的经历,听后觉得有些东西是很值得自己思考的,就列举了出来。 ...
这是一篇从班级校友录上摘录下来的文章,删节一部分,我擅自加了个题目“人生数字”,也不知恰当与否。 23岁的时候,你毕业了,你第一份工作的薪水是1500块,转正以后变成2000块。工资总花得一分钱不剩,盼着发薪的日子。过了一年你跳槽了,工资变成3000块,你穿的衣服开始变贵了,吃的东西开始变好了,不过有一样没有变,工资还是花得一分钱不剩。这时候你谈恋爱了,你为了交女朋友,一个月要向朋友借1000块,她还是嫌你钱少,把你揣了。好不容易找个邻家女孩,感情甚好,学会了生活,一个月居然能存1000块,没想到在你憧憬未来的时候,她家里人不同意,把你们拆了。于是你发奋图强,终于工资涨到了6000块,变成白领,开始泡酒吧,追美女,给人家100块的小费。某一天,在街上碰见甩你的前女友,很奇怪自己当初怎么会看上她,她是那么的没品味。30岁的时候,你有了10万块存款,不过你觉得很疲惫,想找个地方,可以踏实地睡。于是你结婚了,存款变成了贷款,每月还要还上4000块,不过你和妻子的工资加起来有1万块,你一点都不觉得累。一晃几年过去,你还清了贷款还存了5万块,你的孩子也长到六岁,你不希望他重复你的生活,于是想送他到外国,可是人家一张嘴就是20万,你心里暗骂“这帮黑心的老外“。愿望虽好,没钱也是白费,你的孩子还是在国内,一直长到22岁。60岁的时候,你退休了,儿子要结婚,向你要了40万块,你没嫌多,反到觉得花在自己儿子身上,比送给老外实在。过了一年又一年,你对数字不再敏感除了自己的年龄。有时候你躺在床上还在想,我怎么还这么结实,是因为我补了钙还是上帝希望我健在。 终于你安息了,墓碑上刻着你生活的年代“198x--2046”,这也是你最后的一串人生数字。
内存问题是C程序员永久的话题,也是最能让C程序员心痛的话题。内存bug即隐秘,危害又大,而且往往当你解决了它之后,你会发现你的错误是多么的低级。以我为例,看下面的两个case: CASE1 背景: 配置信息读取 Bug现象: 通过打印语句观察到,在配置读取中间时刻,某一指针突然被置为NULL,出core。 耗时: 6小时 问题所在及分析: 经过6小时的不懈努力,终于发现了这一让我哭笑不得的低级错误。问题原因大致是这样的: 我定义了一个存储配置信息的结构体变量指针,并在初始化的时候给该指针在共享内存中分配空间,下面的代码就是我分配空间时的代码 xx_t *p; …// ...
2005年7月8日是我入司一周年纪念日,本想写篇Blog纪念一下,可是思维的小溪总是难以汇聚成大江大河,始终觉得无话可说,再加之最近的项目十分紧迫,So我放弃了。这周末公司去海边旅游放松,带着一身的疲惫回来后,坐在电脑前,突然觉得该写些东西了 ...
Alex正在电脑前面作冥思苦想状,这时Tony悄悄地走到Alex的身后,观察了一会儿… Tony : 看来今天我们要讨论同步问题了。 Alex : (惊奇地回头)。Hey Man , you scared me! 你说的没错,我正在学习同步这一块儿呢,有什么高见不妨说出来吧,我洗耳恭听! Tony : 不敢不敢。关于进程和线程同步的问题,W. Richard Stevens在他的那本经典的“UNIX Network Programming Volume 2”中有过详尽的讲解,你不妨仔细阅读一下。 Alex : 远水解不了近渴。你还是大概跟我说说吧! Tony : OK, 我们就拿一个最简单例子来探讨一下吧。在拿出例子之前我们来回顾一下同步的由来。Alex你说说为什么要同步呢? Alex : 有共享就要同步,就好比超市的POS,如果没有好的同步顾客活动的策略,那超市不就乱了套了么,大家都争着抢着去结账。 Tony : 嗯,没错。mess world is not what we need! 互斥和条件变量是我们经常使用的同步手段,当然更高级的还有信号灯等。 Alex : 逐一说明吧,看来今天又会有不小的收获^_^ Tony : 历史上有个特别有名的问题叫做“生产者-消费者”问题,又叫“有限缓冲区”问题,我们今天的例子大约就是这个样子的。 Alex : (入迷的样子) Tony : 我们的例子是这样的,我们有“生产者”和“消费者”两个角色,他们共享某一整型变量,规定如下: 1)生产者发现产品已经被消费了,便生产,即将该共享变量置为1; 2)消费者发现有产品了,便消费,即将该共享变量置为0; 很简单吧。我们还是用老办法,由简入难,我们可以使用最简单的手段“互斥锁”来完成这个任务。 Alex : 我知道“互斥锁”,但是了解得并不深,先讲讲理论把! Tony : 互斥,顾名思义互相排斥,它是最基本的同步手段,一般用来保护“临界区”,“临界区”是一段代码,看起来互斥保护了临界区这段代码的,实质上互斥保护的是“临界区”中被操纵的数据。 Alex : 互斥是不是即可用于线程,也可以用于进程呢? Tony : 都可以,在我们的例子中我们使用线程,因为线程间共享一个数据空间,实现起来比较容易;进程间要想共享数据就需要额外的支持,比如共享内存等。 Alex : 噢。 Tony : 我们开始吧,按照例子中所述我们应该有两个线程,分别代表生产者和消费者。按照W. Richard Stevens的指导,我们将我们的互斥锁和我们的共享数据放在一个结构体内。 ...
5月末我参加了一次“从技术到管理的”培训,总体来说还是有所收获的。这段时间我一直想把自己的收获总结出来与大家分享,但是也一直没找到一个很好的形式来表达,我想简单的罗列一些规则和技巧是最最乏味的。在我的“关于Tony与Alex的对话系列的一点说明”一文中曾经将“Tony与Alex对话系列”定位为技术类的系列文章,但是经过这几天的思考,发现它同样可以用做管理知识起码是技术管理知识的介绍,这篇Blog将作为本系列中的第一篇围绕管理知识的文章。由于本人现在并非管理角色,所以文章内容的正确性和合理性并不能完全保证。 ...
Tony : Hi Alex ! you just looks like drowing in your project. what is up? Alex : 我们的项目要求引入单元测试,but i’ve no experience in unit test. Tony : i think cppunit is your best choice. Alex : 是的,我刚从网上把它down了下来,正准备研究它呢。 Tony : Really ? I have done some practice on unit test before. would you like me to join you? Alex : Oh Tony, I’m so glad that you could help me ! Tony : My pleasue ! Alex : 我们从哪里开始呢? Tony : The simplest case! 我们拿一个最简单的例子吧。now we have a class with the name “SimpleCalculator” and it has four basic methods ‘add’, ‘sub’, ‘mul’ and ‘div’, All we should do is to test whether these methods run as same as we expect. First of all , complete the “SimpleCalculator” class, Alex. Alex : It is simple! ...