摘要: 编译器的发展:上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文无关文法)被证明是程序 阅读全文
posted @ 2012-03-27 21:01 Mr.Rico 阅读(4282) 评论(0) 推荐(0)
摘要: 1. 关键字volatile有什么含意?并给出三个不同的例子。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:(1)并行设备的硬件寄存器(如:状态寄存器) (2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) (3) 多线程应用中被几个任务共享的变量 回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式 阅读全文
posted @ 2012-03-27 20:54 Mr.Rico 阅读(982) 评论(0) 推荐(0)
摘要: 这是一篇从网上看到的一篇文章,讲得挺有道理。记录下来。(1) 精英化趋势 C++是一门引起无数争议的语言。眼下最常听到的声音则是C++将趋于没落,会被某某语言取代。我很怀疑这种论调的起点是商业宣传,C++的真实趋势应该是越来越倾向于精英化。精英化是指在可用可不用C++的领域中,C++将逐渐退出,而所有剩下必须用C++的领域通常都是附加值比较高,难度较高的领域,比如:操作系统,数据库,大型网站后端等。这一过程造成的现象就是在TIOBE上,C++的份额逐步下降。但就像经济上挤泡沫一样,这倒不是C++衰落了,而是原本人们对C++的期望过高了。早在1995年,美国的调查机构就曾经预测:"终端 阅读全文
posted @ 2012-03-27 20:45 Mr.Rico 阅读(1462) 评论(0) 推荐(0)
摘要: 利用mplayer中的mencoder来将y4m文件转换为yuv文件。YUV4MPEG2这种文件格式是一种以头文件存储视频规格的未压缩视频序列。简单来说,在原始的yuv序列的起始和每一帧的头部都加入了纯文字形式的视频参数信息,包括分辨率、帧率、逐行/隔行扫描方式、高宽比(aspect ratio),以及每一帧起始的"FRAME "标志位。(1)利用mencoder可以将y4m转换为yuv文件:mencoder **.y4m -ovc raw -of rawvideo -vf format=i420 -o **.yuv(2)mplayer 播放yuv和264文件.yuv:mp 阅读全文
posted @ 2012-03-26 15:44 Mr.Rico 阅读(1451) 评论(0) 推荐(0)
摘要: mplayer是一款非常强大的播放器,至少在linux中,大部分的视频播放都可以由它来完成。我也一直在使用mplayer,用着很不错。一般我都是在命令行直接调用mplayer来播放电影。但是在使用的时候,感觉有一点很不爽:如果想快进的话,只能去按方向键。一般情况下按方向键的话,手就要离开键盘了。反正感觉很不爽。而我现在也会一些vi的操作,对jk键非常喜欢。所以就想,能不能用jk键实现快进和快退呢?然后我就从网上搜索相关内容,这种关于mplayer自定义按键的帖子很少。还好,从一些帖子中了解到mplayer的按键控制是放在文件/etc/mplayer/input.conf文件中的:RIGHTs. 阅读全文
posted @ 2012-03-25 23:34 Mr.Rico 阅读(2754) 评论(0) 推荐(0)
摘要: C和C++之间的关系非常的密切,我们也都知道C++是从C扩充而来的,但是这并不表示C++对C完全兼容。C++并不是C的超集,C的有些特性在C++中并不适用。看完《C专家编程》之后,从中了解到了几个。简单总结一下。 (1)在C++中,用户代码不能调用main函数,但在C语言中却是允许的。(所以可以递归调用main函数)比如:#include <stdio.h>int a=5;int main(){if(a==0)return 0;else{printf("call main again:%d\n",a);a--;main();}return 0;}输出如下:cal 阅读全文
posted @ 2012-03-12 15:33 Mr.Rico 阅读(1119) 评论(0) 推荐(0)
摘要: C++ Primer v3前两天看完了《C++ primer》的第4版,今天刚看完第3版。第3版看得比较粗略。总的感觉是第4版显得比较条理,第3版的细节比较分散。第4版中将很多应该注意的知识点都重点强调了一下,从第3版不好区分哪些比较重点。 第一章 C++概述1. 编译C++程序时,编译器自动定义了一个预处理器名字__cplusplus.在编译标准C时,编译器自动定义宏__STDC__。当然,__cplusplus和__STDC__不能被同时定义第二章 C++浏览1. C++中的数组在内置数据类型与标准库类的类型之间是复合类型(compound type)特别是指针和数... 阅读全文
posted @ 2012-03-10 18:17 Mr.Rico 阅读(401) 评论(0) 推荐(0)
摘要: 对于下面的程序:View Code #include<iostream>#include<string>usingstd::string;//usingstd::size_t;usingstd::endl;usingstd::cout;classItem_base{public:Item_base(conststring&book="",doublesales_price=0.0):isbn(book),price(sales_price){cout<<"base:constructor"<<end 阅读全文
posted @ 2012-03-05 11:34 Mr.Rico 阅读(367) 评论(0) 推荐(0)
摘要: 第15章 面向对象编程 面向对象中的三个基本概念:数据抽象,继承和动态绑定。 C++中利用类进行数据抽象,用类派生从一个类继承另一个类。动态绑定使编译器能够在运行时决定是使用基类中定义的函数还是派生类中定义的函数。 1. 多态性 面向对象的关键思想是多态性。在C++中,多态性仅用于通过继承而相关联的类型的引用或指针。 2. 继承 在C++中,基类必须指出希望派生类重定义哪些函数,定义为virtual的函数是基类期待派生类重新定义的。而那些基类希望派生类继承的函数不能定义为虚函数。 除了构造函数之外,任意非static成员函数都可以是虚函数。并且,保留字virtural只在类内部的成员函数... 阅读全文
posted @ 2012-03-05 00:07 Mr.Rico 阅读(923) 评论(0) 推荐(0)
摘要: Linux命令行和shell脚本编程宝典这次阅读《Linux命令行和shell脚本编程宝典》这本书是第3次阅读。 总的来说,这本书还是挺不错的。很适合入门。我也是从这本书开始了解shell编程的。不过,因为现在对Linux 环境也比较熟悉了,并且也会一些shell编程了,所以,这次看的时候会比较快,有些已经会的东西就没有写。只是记录下那些之前没有注意到的东西。第1章 Linux shell入门 Linux 内核 GNU软件:Gnome shell Gnome软件 Linux发行版(1)核心发行版 (2)特定发行版 第2章 了解shellLinux下的虚拟控制台:ctr... 阅读全文
posted @ 2012-03-04 16:05 Mr.Rico 阅读(4857) 评论(0) 推荐(0)
摘要: 第十八章、认识系统服务 (daemons)1. 什么是 daemon 与服务 (service) 我们在第十七章就曾经谈过『服务』这东西! 当时的说明是『常驻在记体体中的程序,且可以提供一些系统或网络功能,那就是服务』。而服务一般的英文说法是『 service 』。 但如果你常常上网去查看一些数据的话,尤其是 Unix-Like 的相关操作系统,应该常常看到『请启动某某 daemon 来提供某某功能』!那么 daemon 与 service 有关啰?否则为什么都能够提供某些系统或网络功能?此外,这个 daemon 是什么东西呀? daemon 的字面上的意思就是『守护神、恶魔?』简单的说,.. 阅读全文
posted @ 2012-03-02 22:40 Mr.Rico 阅读(1471) 评论(0) 推荐(0)
摘要: 第13章 学习Bash Shell 第14章 Linux账号管理与ACL权限设定 /etc/shadow文件 Su使用su总结一下用法是这样的:  若要完整的切换到新使用者的环境,必须要使用『 su - username 』或『 su -l username 』, 才会连同 PATH/USER/MAIL 等变量都转成新用户的环境;  如果仅想要执行一次 root 的指令,可以利用『 su - -c "指令串" 』的方式来处理;  使用 root 切换成为任何使用者时,并与需要输入新用户的密码; 虽然使用 su 很方便啦,与过缺点是,当我的主机是多人共管的环境时,如果大 阅读全文
posted @ 2012-03-02 22:36 Mr.Rico 阅读(874) 评论(0) 推荐(0)
摘要: 第八章、Linux 磁盘与文件系统管理1. 文件系统特性 2. 文件系统的运作方式 常常会听到所谓的『碎片整理』吧? 需要碎片整理的原因就是档案写入的 block 太过于离散了,此时档案读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个档案所属的 blocks 汇整在一起,这样数据的读取会比较容易啊! 想当然尔,FAT 的文件系统需要三不五时的碎片整理一下,那么 Ext2 是否需要磁盘重整呢? 由于Ext2 是索引式文件系统,基本上不太需要常常进行碎片整理的。但是如果文件系统使用太久, 常常删除/编辑/新增档案时,那么还是可能会造成档案数据太过于离散的问题,此时或许会需要进行重.. 阅读全文
posted @ 2012-03-02 22:33 Mr.Rico 阅读(1284) 评论(0) 推荐(0)
摘要: <<鸟哥私房菜>>记录第1章 计算机概论CPU的种类CPU主要分为两类:精简指令集RISC和复杂指令集CISC。对于精简指令集,常见系列有Sun公司的SPARC系列,IBM公司的PowerPC系列,和ARM系列复杂指令集主要有AMD,Intel 和VIA的x86系列的CPU第3章 主机规划与磁盘分区1. 磁盘介绍 整颗磁盘的第一个扇区特别重要,它记录了两个重要的信息: (1) MBR (master boot record) 主要启动记录区: 可以安装开机管理程序的地方, 有446bytes (2) 分区表 (partition table): 记录整个磁盘的分区状态, 阅读全文
posted @ 2012-03-02 22:30 Mr.Rico 阅读(3057) 评论(0) 推荐(1)
摘要: 《Linux 环境C程序设计》阅读笔记Chapter 1 GNU项目GNU项目是1983年理查德·斯托曼(Richard Stallman)创立的,最初的目标是通过使用必要的工具从源代码开始创建一个自由的类UNIX操作系统。GNU花了10年的时间创建了GCC编译器、Emacs编辑器等多个工具。这些工具的改进版本和衍生品必须遵循GPL协议。但是在20世纪80年代缺少最关键的组件,即操作系统核心,直到Linux诞生。2. 开源软件与免费软件免费软件是以二进制的形式发布的 ,可以使用,但是无权修改。开源软件是以源代码的形式发布的,遵循GPL协议,可以对其进行修改。3. Linux内核与版本 阅读全文
posted @ 2012-02-29 22:35 Mr.Rico 阅读(1356) 评论(0) 推荐(0)