06 2013 档案

摘要:1、Linux函数库介绍函数库可以看做是事先编写的函数集合,它可以与主函数分离,从而增加程序开发的复用性。Linux中函数库可以有3种使用的形式:静态、共享和动态。1) 静态库的代码在编译时就已连接到开发人员开发的应用程序中;2) 而共享库只是在程序开始运行时才载入;3) 动态库也是在程序运行时载入,但与共享库不同的是,动态库使用的库函数不是在程序运行使开始载入,而是在程序中的语句需要使用该函数时才载入。动态库可以在程序运行期间释放动态库所占用的内存,腾出空间供其他程序使用。注:l 由于共享库和动态库并没有在程序中包括库函数的内容,只是包含了对库函数的引用,因此代码的规模比较小。l 系统中可用 阅读全文

posted @ 2013-06-26 23:25 davy2013 阅读(288) 评论(0) 推荐(0) |

摘要:简介在进行服务器端开发的时候需要考虑一些算法和性能问题,经过了几年的开发,对这方面有了一些经验,现在写下来跟大家分享和讨论。我主要是在Linux下进行C语言的开发,所以后面的实现都是基于Linux操作系统并用C语言来讲解。其它平台和语言需要考虑的问题是类似的只不过可能是实现细节上有一些差异,我尽量减少这些差异吧。注意一下讲解的所有内容都是基于32位系统的开发!服务器程序开发核心是稳定,在稳定的前提下需要考虑效率。其中主要的公共模块是内存池和线程池。因为服务器程序一般都会长时间的运行,而且频繁的进行创建和释放内存的操作,这时如果使用系统的malloc和free方法,则会使系统中产生很多内存碎片, 阅读全文

posted @ 2013-06-24 13:47 davy2013 阅读(296) 评论(0) 推荐(1) |

摘要:Linux 下调试远没有windows下的VS方便,不管是VC++6还是VS2003,2005,2008,2010,2012.VS2012自动格式化代码 Ctrl+K+DVS下调试一定要注意尽量不要用F11,要用F10!不然需要引入库文件,提示的警告信息可以“忽略”即可所以我觉得不妨用VS调试程序,可以用VS来研究C语言似乎是一个比较不错的主意,当你的C已经很好的时候可以直接在Linux下去手写代码了。当然windows下写的C程序放到Linux下运行,也是可以的,不过需要知道的是有些语法Windows下支持但是Linux下是不支持。还有时会有乱码,需要注意!注意!其实微软是希望用C++的,所 阅读全文

posted @ 2013-06-24 08:29 davy2013 阅读(302) 评论(0) 推荐(0) |

摘要:Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数。1、Static修饰变量按照作用范围的不同,变量分为局部变量和全局变量。如果用static修饰变量,不论这个变量是全局的还是局部的都是存储在静态数据区。下面分开来讲:¨ 如果用static修饰全局变量,我们称其为静态全局变量。我们用static修饰全局变量的主要目的就是:使得其作用域仅限于变量被定义的文件中(即从变量定义处到本文件结尾处),其它文件不论通过什么方式都不能访问。¨ 如果用static修饰局部变量,我们称其为静态局部变量。我们用static修饰局部变量的目的主要有两个:1) 在某个函数体里面 阅读全文

posted @ 2013-06-22 16:34 davy2013 阅读(222) 评论(0) 推荐(0) |

摘要:1.[Effective C++原则07]:为多态基类声明virtual 析构函数。[如果不]: 如果不声明为析构函数,可能出现的结果如下:Derived对象的成分没有被销毁,形成资源泄露、在调试上会浪费很长时间。classCSimpleClass{public:CSimpleClass(){cout<<"CSimpleClass"<<endl;}~CSimpleClass(){cout<<"~CSimpleClass"<<endl;}private:};classCDerived:publicCSimpl 阅读全文

posted @ 2013-06-21 20:48 davy2013 阅读(244) 评论(0) 推荐(0) |

摘要:东软2012-11月笔试题<SPANstyle="FONT-SIZE:14px">classSample{intx;public:Sample(inta){x=a;cout<<"constructingobject:x="<<x<<endl;}};voidfunc(intn){staticSampleobj(n);}intmain(){func(1);func(10);//1 return0;}</SPAN> [分析]:题目的考查点,静态对象的创建及执行。类中的静态对象只会执行一次,这是输出上面 阅读全文

posted @ 2013-06-21 19:59 davy2013 阅读(211) 评论(0) 推荐(0) |

摘要:一、虚拟内存术语 虚拟内存 在存储分配机制中,尽管备用地址是主内存的一部分,它也可以被寻址。程序引用内存使用的地址与内存系统用于识别的物理地址是不同的,程序生成的地址会自动转化为机器地址。虚拟存储的大小受计算机系统寻址机制和可用的备用内存量的限制,而不受内存储位置实际数量的限制虚拟地址在虚拟内存中分配给某一位置的地址使该位置可以被访问,仿佛是主存的一部分虚拟地址空间分配给进程的虚拟存储地址空间可用于某进程的内存地址范围实地址内存中存储位置的地址二、分段和分页的特点(虚拟与非虚拟)简单分页虚拟分页简单分段虚拟分段内存被划分为固定大小的小块,成为页框... 阅读全文

posted @ 2013-06-21 08:27 davy2013 阅读(342) 评论(0) 推荐(0) |

摘要:C++中的四种强制类型转换除了具有C语言强制类型转换的功能外,还可提供更好的控制强制转换的过程;能更清晰地表明程序员的意图,程序员只有看到这样的代码,立即就能知道一个强制类型转换的目的。C风格的强制类型转换(TypeCast)很简单,不管什么类型的转换统统是:TYPEb=(TYPE)a,而C++风格的类型转换提供了四种类型转换操作符来对应不同的场景,使用格式是:TYPEb=强制转换类型符<TYPE>(a)。Const_cast常用于去掉类型的const或volalitle属性,只能用于指针和引用的,无法对变量进行使用,以便对const变量进行赋值等操作。Dynamic_cast能够 阅读全文

posted @ 2013-06-20 23:14 davy2013 阅读(284) 评论(0) 推荐(0) |

摘要:volatile 是易变的、不稳定的意思。很多人根本就没见过这个关键字,不知道它的存在。也有很多程序员知道它的存在,但从来没用过它。我对它有种“杨家有女初长成,养在深闺人未识” 的感觉。volatile 关键字和const 一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。先看看下面的例子:int i=10;int j = i;//(1)语句int k = i;//(2)语句这时候编译器对代码进行优化,因为在(1)、(2)两条语句中,i 没 阅读全文

posted @ 2013-06-20 21:46 davy2013 阅读(181) 评论(0) 推荐(1) |

摘要:第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。第二:类的继承后方法属性变化。private 属性不能够被继承。使用private继承,父类的prot 阅读全文

posted @ 2013-06-20 21:32 davy2013 阅读(1546) 评论(0) 推荐(1) |

摘要:1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包括至少一个纯虚函数的类。纯虚函数:virtual void breathe()=0;即抽象类!必须在子类实现这个函数!即先有名称,没内容,在派生类实现内容!我们先看一个例子:#include<iostream.h& 阅读全文

posted @ 2013-06-18 21:18 davy2013 阅读(180) 评论(0) 推荐(0) |

摘要:重载(overload):必须在一个域中,函数名称相同但是函数参数不同,重载的作用就是同一个函数有不同的行为,因此不是在一个域中的函数是无法构成重载的,这个是重载的重要特征覆盖(override):覆盖指的是派生类的虚拟函数覆盖了基类的同名且参数相同的函数,既然是和虚拟函数挂钩,说明了这个是一个多态支持的特性,所谓的覆盖指的是用基类对象的指针或者引用时访问虚拟函数的时候会根据实际的类型决定所调用的函数,因此此时派生类的成员函数可以"覆盖"掉基类的成员函数.注意唯有同名且参数相同还有带有virtual关键字并且分别在派生类和基类的函数才能构成虚拟函数,这个也是派生类的重要特征 阅读全文

posted @ 2013-06-18 21:04 davy2013 阅读(178) 评论(0) 推荐(0) |

摘要:当我们用ssh作为客户端访问到服务器之后,很多时候我们还需要在服务器上建立SI工程,想像访问windows文件夹那样访问Ubuntu的文件夹,这个时候就需要用到samba服务了。 首先必须确保安装了samba。通过apt-get命令或者设定文件夹的共享属性(自动安装samba)都可以安装这个服务,ubuntu 默认是没有这个服务的。第一步,添加samba账户:smbpasswd -a liwen,这个liwen是已经存在的账户,接着会要求输入密码,这个密码跟ssh的密码不是同一个,当然也可以设置成一样。第二步,配置smb.conf文件。执行vi /etc/samba/smb.conf,在文.. 阅读全文

posted @ 2013-06-13 08:25 davy2013 阅读(163) 评论(0) 推荐(0) |

摘要:Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下: # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包 ,-f指定包的文件名。 # tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包... 阅读全文

posted @ 2013-06-12 21:01 davy2013 阅读(99) 评论(0) 推荐(0) |

摘要:1、minicom串口的传输 一般在linux下直接检测到U转串的驱动了,若为虚拟机,先装主机驱动,然后将usbserial分配给虚拟机即可,若主机为linux系统,接上即可自动安装驱动。$ lsmod | grep pl2303 或者 $ lsmod | grep usbserial 可以看到设备如下 安装minicom$ sudo apt-get install minicom$ sudo apt-get install lrzsz 配置minicom$ sudo mincom -s 首先设置serial port setup 通常情况下只用改第一个,改为ttyUSB0(通过ls... 阅读全文

posted @ 2013-06-11 21:14 davy2013 阅读(175) 评论(0) 推荐(0) |

摘要:whereis <程序名称>查找软件的安装路径-b 只查找二进制文件-m 只查找帮助文件-s 只查找源代码-u 排除指定类型文件-f 只显示文件名-B <目录> 在指定目录下查找二进制文件-M <目录> 在指定目录下查找帮助文件-S <目录> 在指定目录下查找源代码locate <文件名称>在文件索引数据库中搜索文件-d <数据库路径> 搜索指定数据库updatedb更新文件索引数据库find [路径] <表达式>查找文件-name <表达式> 根据文件名查找文件-iname <表达式> 阅读全文

posted @ 2013-06-11 20:00 davy2013 阅读(146) 评论(0) 推荐(0) |

摘要:遇到问题:在一个脚本文件中定义一个了变量,然后export变量,脚本退出后,设置的环境变量失效。分析问题:执行一个脚本时,会先开启一个子shell环境(不知道执行其它程序是不是这样),然后将父shell中的所有系统环境变量复制过来,这个脚本中的语句就 在子shell中执行。(也就是说父shell的环境变量在子shell中可以调用,但反过来就不行,如果在子shell中定义了环境变量,只对该 shell或者它的子shell有效,当该子shell结束时,也可以理解为脚本执行完时,变量消失。)总结:1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;2、一个shell中的 阅读全文

posted @ 2013-06-11 09:32 davy2013 阅读(451) 评论(0) 推荐(0) |

摘要:两个重要的profile文件在UNIX/Xenix系统中有两个对用户而言必不可少的文件——etc目录下的profile文件和用户主目录($HOME)下的.profile文件。前者是系统文件,对系统下全体用户起作用,后者是用户自己的"私人"文件。这两个文件的功能类似于DOS系统下的Autoexec.bat文件,不同之处在于Autoexec.bat文件可以为空,而这两个文件内容不仅不能为空,而且必须存在。它们在用户登录(Login注册)时,被系统自动执行,为用户设置工作环境,若使用得当,可发挥强大作用。etc目录下的profile文件是每一个用户登录时,操作系统首先执行的文件, 阅读全文

posted @ 2013-06-11 09:31 davy2013 阅读(629) 评论(0) 推荐(0) |

摘要:高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20,可以重复20次。这个在文本的批处理中是非常有用的。同时编辑多个文件在vim众多的插件中,有一个叫minibuffer的插件,就是下面所说的标签页功能了,可以支持同时编辑多个文件。标签命令:tabe fn 在一个新的标 阅读全文

posted @ 2013-06-11 08:54 davy2013 阅读(124) 评论(0) 推荐(0) |

摘要:转载地址:http://blog.csdn.net/muge0913/article/details/7167599目前u-boot-2010.09对很多CPU直接支持,可以查看board目录的一些子目录,如:board/samsung/目录下就是对三星一些ARM处理器的支持,有smdk2400、smdk2410和smdk6400,但没有6410,所以我们就在这里建立自己的开发板项目。1)因6410和6400的资源差不多,主频和外设有点差别,所以我们就在board/samsung/下建立自己开发板的项目,取名叫th6410#tar -jxvf u-boot-2010.09.tar.bz2 // 阅读全文

posted @ 2013-06-11 08:41 davy2013 阅读(230) 评论(0) 推荐(0) |

摘要:查找字符命令f用于在本行内向前搜索。例如fx是向前(Forward)搜索字母x。而命令F是向后(Backward)搜索。例如Fx是向后搜索字母x。与f和F这两个相类似的是t和T命令。t命令类似于f向前搜索命令,所不同的是t搜索到时并不是将光标停在目标字符上,而是停在目标字符的前一个字符上。在搜索的过程中,我们可以使用ESC来退出搜索而开始新的工作。对于以上四个查找命令,我们可以重复执行这些操作。命令;是按照前一次的查找方向继续查找,如果要向相反的方向查找可以使用,命令。但是这些查找只是在行本行内进行,并不会将光标移动到其它的行。查找字符串我们可以使用/string命令来向前(Forward)查 阅读全文

posted @ 2013-06-11 08:37 davy2013 阅读(356) 评论(0) 推荐(0) |

摘要:做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。电平(Level) 在数字电路中,分为高电平和低电平,分别用1和0表示。一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0(其实,还有另一种状态,后面会提到)。总线(Bus) 在嵌入式系统中一定会有一块处理器芯片,此外,还有其它的芯片作为外部设备(后面简称外设),这些芯片与处理器协作实现产品的功能。复杂的产品往往是由大量的芯片组成的。那么不可避免的是我们需要将所有的外设与处理器进行相连,最为简单的是将所有的... 阅读全文

posted @ 2013-06-11 08:20 davy2013 阅读(218) 评论(0) 推荐(0) |

摘要:转载出处:http://blog.csdn.net/muge0913/article/details/70697321、解压交叉工具链tar xvzf arm-linux-gcc-4.3.2.tar.gc -C /(C指定解压目录)2、修改/etc/profile添加:pathmunge /usr/local/arm/4.3.2/bin(交叉工具链所在目录)3、执行source /etc/profile 阅读全文

posted @ 2013-06-10 21:58 davy2013 阅读(178) 评论(0) 推荐(0) |

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3