硕士研究生毕业于南京邮电大学计算机应用技术专业,曾在中兴通讯从事软件开发工作,现就职于重庆某物联网技术公司,任高级嵌入式软件开发工程师。著有《C程序员从校园到职场》一书,同时也是《信息通信技术百科全书》的编者之一及CSDN博客专家。QQ(微信):245924426。
如何搞研究?我想是仁者见仁,智者见智。我认为,除了许多个人的因素之外,外部的激励因素也是必不可少的。在这点上,中国计算机学会(CCF)就做得很好。
身为计算机专业的学生,对于“软件”的深入了解是一项基本功。最近,本人阅读了“软件工程”的相关书籍,对于“软件”的基本理论也有了一定的认识。
软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。它是指导计算机软件开发和维护的工程学科。 (一) 软件工程的定义 采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
相信一到春节,大家就会收到不少祝福短信。人也是够聪明的,中国文字一下子摇身变为一条条让人开心的简短话语。以下是本人这个春节收到的一些较为精彩的、舍不得删除的短信,供大家鉴赏! 1.
春节放假之前,我写了一篇文章《学习习惯浅谈(一)》。正如文章中所说,我是读了刘未鹏老师的《一直以来伴随我的一些学习习惯》而受到的启发,觉得自己有必要把个人的一些学习习惯写出来与大家分享。
从哪里说起呢,我的程序员之路。有些话只是自己心里想的很明白,还从没说过。希望你有耐心看完,因为我的故事不精彩,也算不上奋斗史。我的文笔和叙事能力也很差。
最近,我阅读了刘未鹏老师的专栏《一直以来伴随我的一些学习习惯》(http://www.infzm.com/content/66757,http://www.infzm.com/content/66778),很受益。
一直以来,我对于技术人员及科研人员是无比的崇拜。社会能够发展,他们的贡献是举足轻重的。正因为如此,我才在近两年来充当了一个“准科研人员”的角色;也正因为如此,我才会选择“软件研发工程师”的岗位。
软件开发是一个跨度很大的技术工作,在语言方面,有C,C++,Java,Ruby等等;在环境方面,又分嵌入式,桌面系统,企业级,WEB,基础系统,或是科学研究。
从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。
集成测试是软件测试的第二步,其具体过程如下。 第一,非增量式测试。 非增量式测试是采用一步到位的方法来构造测试:对所有模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。
单元测试是软件测试的第一步,其详细描述如下: 第一,单元测试的主要任务。 单元测试针对每个程序的模块,主要测试5个方面的问题:模块接口、局部数据结构、边界条件、独立的路径和错误处理;如下图所示: (1)模块接口 这是对模块接口进行的测试,检查进出程序单元的数据流是否正确;模块接口测试必须在任何其它测试之前进行。
软件测试过程的流程如下图所示: 各部分的具体解释如下: 单元测试:针对每个单元的测试,以确保每个模块能正常工作为目标。
软件的开发模式包括:大棒开发法、边写边改法、瀑布法、快速原型法和螺旋模式法,它们的定义及特点如下: 第一,大棒开发法。 它是源于能量爆发创造宇宙,万物都由能量和物质积聚而成的理论,但如果不是遵循某种正确的排列和组合,形成的将不是预先期望的事物;大棒模式与上述理论一样:一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件产品或成为一堆“废品”(不成功的软件)。
虽然时间在一分一秒地向前移动,但在不经意间,2011年已接近尾声。回首这一年,我在学习、科研和工作中,均有颇多收获。 从去年的11月份到今年的4月份,我在南京爱立信熊猫通信有限公司实习。
我们经常说一句话,叫做“欲速则不达”。它告诫我们做任何事情都要循序渐进,要遵循既定的步骤,不要冒进和盲从。如果我们怀着极强的功利心来学习或工作,那么最终会付出代价的。
大家可能都看过一部电影,叫做《天下无贼》,其剧情主要是说小偷的技术太高了,能够在别人神不知鬼不觉的情况之下将东西偷走。那么他们是如何做到的呢?我总结起来有这么几点:第一,偷东西的整个过程,他们神情自若,让别人没有察觉;第二,偷东西之前先看好对象,下手就要快;第三,偷完东西之后立马转移,不露丝毫痕迹。
最近看了《青年文摘》2011年十一月下半月刊,在此摘录一些经典语句,供大家品评! 1. 庄子说:“吾安得夫忘言之人,而与之言哉?”懂得“沉默是金”这个道理的朋友,现在确实不多了。
10月12日,我们也没有开始正式上课,而是做了一些准备工作,包括:体检和新生健康讲座等。 现在不管是到单位去报到,还是升学,第一道手续都是体检。
周围同学都是“工程师”,像“网络工程师”、“数据库工程师”等,整个学校就是“工程师”的聚集地。当然,我也不能落后。于是,我花了将近一周的时间将《软件设计师教程》阅读完了,虽然是走马观花,但也学到了不少。
也许是受到从小到大课堂教育的影响,我们学东西之前都喜欢问一个问题:“教材(或参考书目)是什么?”我们都有一个根深蒂固的观点,那就是“教材在手,天下我有”,以为可以从书本上学到一切知识。
“工欲善其事,必先利其器”,做任何事情都需要有力的工具来支撑。就拿打仗来说,如果你的“工具”很简陋,人家是飞机坦克,而你却是“小米加步枪”,那么其结果是可想而知的(当然,也许打游击战的结果就不一样了)。
最近我又把《神探狄仁杰》第一部看完了,觉得确实很不错。狄仁杰身为一朝宰相,拥有“一人之下,万人之上”的权力。他始终以百姓的安居乐业和天下的兴亡为己任。
我前段时间写了一篇文章,叫做《“小论文”杂谈》,是有关自己就研究生写小论文的一些心得体会,点击率挺高的。感谢大家的支持!这也可以看出大家对于“搞科研”还是极有热情! 最近,我又看了一些论文,也有同学问我怎样才能找到比较好的文章来阅读。
这几天与同学交流,大家的话题有两个,一个是有关工作和实习的,另一个就是有关论文的。有人说,本科阶段最痛苦的事情就是考英语四六级,而研究生阶段最痛苦的事情就是写论文(不管是小论文还是毕业论文),这可真是说到大家心坎里去了!不过,我们要用胸怀接受自己不可改变的事情,要用勇气改变自己可以改变的事情,并用智慧分辨两者的不同。
来到学校的那天中午,我就到食堂去吃了一顿。感觉这边的食堂挺小的,而且菜品也不丰富。我们本科的学校一共有五个食堂,而且菜品各异。也许是南邮本部比较小,人不是很多,因此食堂也要精简一下。
微软资深副总裁张亚勤在2011移动开发者大会的演讲《移动互联的新趋势》这样描述当前的移动操作系统的分布趋势:随着Windows Phone的推出,移动平台市场渐成三国演义之势(并非原话,大致意思是这样)。
在这篇文章中要简单地介绍一下我最初的四位室友。基于众所周知的原因,我将它们的名字用字母表示。 我本以为同师门的几个人会被分在同一个宿舍,但后来才知道情况不总是这个样子的。
最近翻了一下谭浩强老师的《C程序设计》教材,顺便做了一下习题。这本书是本科时候上课的教材,因此看着它,就有一种见到老朋友的感觉。下面把我遇到的几个比较有意思的题目及程序写下来,供大家不时之需。
重庆到南京的距离,与重庆到海口的距离差不多,但是交通要方便很多。有一趟“重庆到南通”的火车路过南京,上车时间是晚上十一点左右,到达时间是第三天的早上七八点钟,历时大约30个小时。
在录取通知书上,我们的开学日期是9月16日,这比大部分学校的开学时间都要晚。我看了一下,很多读研的同学都是八月底就到学校去报到了,而我们晚了足足半个月。
纠结了很久,也思考了良久。今天,我终于提起笔,开始写“读研的那些事儿”这个系列。 在高考的时候,我们这一级的人数就是最多的,创了历史的新高。
今天看了一份有关未来Internet发展的资料,其中提到了“Web 1.0”、“Web 2.0”和“Web 3.0”等概念,说“Web 1.0”的特点是“sharing”,“Web 2.0”的特点是“contributing”,而“Web 3.0”的特点是“co-creating”。
我最近看了一份文档,叫做《C语言常见问题》,感觉里面有很多知识很基础,但就是容易弄错!正所谓“不及跬步,无以致千里”,只有打好了基础才会有所突破。
写大论文最关键的就是要找到创新点,而最伤脑筋的是如何才能找到创新点。最近看到许多同学为了找到大论文中的创新点是殚精竭虑,每天在教研室是如坐针毡,非常的痛苦。
最近,我们听了陈国良院士的讲座《计算思维与大学计算机基础教育》,触动颇大。在报告中,陈院士提到了计算机科学的重要性,他说美国将“科学”分为三类:理论科学、实验科学和计算科学。
最近,我看到有很多同学在找工作的同时,已经开始写大论文了。的确,时间已经不早了,从现在开始写的话,最多也只有三个月的时间。因此,为了顺利毕业,为了更加美好的未来,是时候写大论文了。
Q1. 为什么把设备分为“块设备”和“字符设备”两大类? A: 1) Linux将设备看成文件,具有三方面的含义:第一,每个设备都对应一个文件名,在内核中也就对应一个索引节点;第二,对文件操作的系统调用大都适用于设...
Q1. Linux目录树结构是怎样的?它与Windows的目录树结构有什么区别?为什么Linux的文件系统采用固定的目录形式? A:文件是一个抽象的概念,它是存放一切数据或信息的仓库; 1) Linux的目录树结构...
Q1. 什么是临界区?什么是竞争状态?什么是同步? A: 1) 临界区(critical regions)就是访问和操作共享数据的代码段,多个内核任务并发访问同一个资源通常是不安全的; 2) 如果两个内核任务可能处于同一个临界区,就是一种错误现象;如果确实发生了这种情况,就称它为竞争状态; 3) 避免并发和防止竞争状态称为同步(synchronization)。
Q1. 什么是系统调用?为什么要引入系统调用? A: 1) 操作系统为用户态的进程与硬件设备(如CPU、磁盘和打印机等)之间的交互提供了一组接口,这些接口使得程序更具有可移植性,因为不同的操作系统只要所提供的一组接...
Q1. 什么是中断?什么是异常?二者有何不同? A: 1) 中断控制是为克服对I/O接口采用程序查询控制服务方式所带来的处理器低效率而产生的,它的主要优点是只有在I/O接口需要服务时才能得到处理器的响应,而不需要处...
Q1. 为什么把进程的地址空间划分为“内核空间”和“用户空间”? A:Linux的虚拟地址空间的大小为4GB,内核将这4GB的空间分为两部分,较高的1GB(虚地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”;而较低的3GB(虚地址0x00000000到0xBFFFFFFF)供各个进程使用,称为“用户空间”;因为每个进程可以通过系统调用进入内核,因此,内核空间由系统内的所有进程共享;于是,从具体进程的角度来看,每个进程都可以拥有4GB的虚拟地址空间(也叫做虚拟内存)。
Q1. 程序与进程的概念分别是什么?为什么要引入“进程”的概念? A: 1) 程序是一个普通文件,是机器代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映像中,可执行映像(executable imag...
Q1. 什么是物理地址?什么是虚地址?什么是线性地址? A: 1) 将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址就是物理地址; 2) 将应用程序员看到的内存空间定义为虚拟地址空间(或地址空间),其中的地址就叫做虚拟地址(或虚地址),一般用“段:偏移量”的形式来描述,如A815:CF2D; 3) 线性地址空间是指一段连续的、不分段的、范围为0~4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。
Q1. 什么是GNU?Linux与GNU有什么关系? A: 1) GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目,该项目已...
由于最近参加笔试的原因,我感觉到了学习“设计模式”的重要性。为此,我从网上下载了一份资料,叫做《深入浅出设计模式》。在这份资料中,作者一共提到了22种设计模式,大致按照“引言”->“定义/分类”->“程序实现”->“实例”->“小结”的顺序将各“设计模式”为我们简要地一一道来。
Michelle and I are saddened to learn of the passing of Steve Jobs. Steve was among the greatest of American innovato...
在计算机科学专业的课程中,经常提到“函数”的概念。但什么是“函数”?使用它有什么好处?我想大家也不是特别的清楚。最近,我看了一份资料,叫做《C语言深度剖析》,感觉很不错!作者在资料里面专门提到了“函数的由来与好处”,读后让人耳目一新,豁然开朗! 在《C程序设计》(谭浩强第三版)中,作者对函数的概念作了简单的介绍,说:“一个较大的程序分为若干个程序模块,并用子程序实现模块的功能;在C语言中,子程序的作用就是由函数完成的。
Slowly but surely, many U.S. companies are loosening their viselike grips on IT hiring and looking to add new staffers to bolster business growth in the year ahead. 慢慢地,但几乎可以肯定地说,许多美国公司都将在来年雇佣更多的员工来促进商业的发展。