摘要:
参考链接BusyBox 简化嵌入式 Linux 系统Currently available applets include: [, [[, acpid, addgroup, adduser, adjtimex, ar, arp, arping, ash, awk, basename, beep, blkid, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt... 阅读全文
摘要:
原文链接screen其实就是linux虚拟终端,你可以用它创建很多虚拟终端,每个终端可以创建1~10个窗口,每个窗口相当于一个linux shell窗口,可以执行的操作和正常shell完全一样。【终端操作】 (需要在物理shell中操作)screen:创建一个虚拟终端并且登录之screen -ls:列出当前所有虚拟终端screen [-d] -r sessionid:进入指定的虚拟终端【终端中的窗口操作】(挂载某个终端)Ctrl-a c 新建 bash screen 终端Ctrl-a " 列出Ctrl-a A 重命名Ctrl-a n 在当前窗口中切换到下一个 screen 终端... 阅读全文
摘要:
原文链接建立数据库档案用sqlite3建立数据库的方法很简单,只要在shell下键入(以下$符号为shell提示号,请勿键入):$ sqlite3 foo.db如果目录下没有foo.db,sqlite3就会建立这个数据库。sqlite3并没有强制数据库档名要怎么取,因此如果你喜欢,也可以取个例如foo.icannameitwhateverilike的档名。在sqlite3提示列下操作进入了sqlite3之后,会看到以下文字:SQLite version 3.1.3Enter ".help" for instructionssqlite>这时如果使用.help可以取得求 阅读全文
摘要:
原文链接 catchattrchgrpchmodchowncksumcmpdiffdiffstatfilefindgitgitviewindentcutlnlesslocateisattrmattribmcmdelmdirmktempmoremmovemreadmrenmtoolsmtoolstestmvodpastepatchrcprmslocatesplitteetmpwatchtouchumaskwhichcpinmcopymshowfatrhmaskwhereis cddfdirsduedquotaejectmcdmdeltreemdumkdirmlabelmmdmrdmzippwdq 阅读全文
摘要:
#cat test.csvchinausajapanfucknow#head -2 test.csv (输出前两行)chinausa#tail -2 test.csv (输出最后两行)fucknow#tac test.csv (按列反序输出 常用于查看日志)nowfuckjapanusachina#rev test.csv (按行反序输出)anihcasunapajkcufwon 阅读全文
摘要:
原文链接一BOOSTBoost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。(引自:Beyond the C++ Standard Library: An Introduction to Boost)(慢慢体会哦!)二参考主要:boost的在线document:http://boost.org/libs/libraries.htm唯一的关于boost的book:Beyond the C++ Standard Library: An Introduction to Boost其他:http://www.boost.org/heroboy2000:http://blog 阅读全文
摘要:
原文链接有三种情况,会以一个object的内容作为另一个class object的初值。最明显的一种情况当然就是对一个object做明确得初始化操作,像这样:class X{…};X x;//明确地以一个object的内容作为另一个class object的初值X xx = x;另两种情况是当object被当做参数交给某个函数时,以及当函数传回一个class object时。假设class设计者明确定义了一个拷贝构造函数,像下面这样:X::X( const X& x );Y::Y( const Y& y, int = 0 );那么在大部分情况下,当一个class object以 阅读全文
摘要:
索引 已审核 gdb 设置source搜索目录 dir /path调用gdb编译需要在cc后面加 -g参数再加-o;[root@redhat home]#gdb 调试文件:启动gdb(gdb) l :(字母l)从第一行开始列出源码原文链接(gdb) break n :在第n行处设置断点(gdb) break func:在函数func()的入口处设置断点(gdb) info break: 查看断点信息(gdb) r:运行程序(gdb) n:单步执行(gdb) c:继续运行(gdb) p 变量 :打印变量的值(gdb) bt:查看函数堆栈(gdb) finish:退出函数(gdb) s... 阅读全文
摘要:
原文链接class类中默认会实现4个函数,分别为默认构造函数,拷贝构造函数,析构函数和=运算符重载#include <iostream>using namespace std;class myString{ public: myString(const char *str=NULL); myString(const myString &other); ~myString(); myString & operator=(const myString &other); showString(); private: ... 阅读全文
摘要:
原文链接尽量用const和inline而不用#define也称为:尽量用编译器而不用预处理。原因:(1)#define ASPECT_RATIO 1.653编译前预处理程序会将ASPECT_RATIO替换为1.653,编译出错时只会指出1.653,而无法跟踪ASPECT_RATIO,不便于调试(2)#define max(a,b) ((a) > (b) ? (a) : (b))有可能出错:int a = 5, b = 0;max(++a, b);// a的值增加了2次max(++a, b+10); // a的值只增加了1次解决方法:(1)用const而不用#define:const do 阅读全文
摘要:
原文链接指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。1、指针和引用的定义在深入介绍之前我们首先来看一下指针和引用的定义、指针和引用的区别,然后分别针对指针和引用展开讨论,深入细节为何有这些差异。指针的权威定义:In a declarationT DwhereDhas the form*cv-qualifier-seqoptD1And the ty 阅读全文
摘要:
原文链接按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p );//用C风格的字符串p作为初始化值//…}String s1 = “hello”;//OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n );//本意是预先分配n个字节给字符串String ( const char* p );//用C风格的字符串p作为初始化值//…} 阅读全文
摘要:
原文链接Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现。(关于虚拟机制是如何实现的,参见Inside the C++ Object Model ,Addison Wesley 1996)class 阅读全文
摘要:
原文链接在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(template metaprogramming, TMP)。C++继承了C的特色,既为高级语言,又含低 阅读全文
摘要:
原文链接基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改... 阅读全文
摘要:
原文链接使用throw抛出异常本人节选自《21天学通C++》一书 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw 表达式; 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。【范例20-2】处理除数为0的异常 阅读全文
摘要:
原文链接:在线手册第一章 从C转向C++条款1:尽量用const和inline而不用#define条款2:尽量用而不用条款3:尽量用new和delete而不用malloc和free条款4:尽量使用c++风格的注释第二章 内存管理条款5:对应的new和delete要采用相同的形式条款6:析构函数里对指针成员调用delete条款7:预先准备好内存不够的情况条款8: 写operator new和operator delete时要遵循常规条款9: 避免隐藏标准形式的new条款10: 如果写了operator new就要同时写operator delete第三章 构造函数,析构函数和赋值操作符条款11: 阅读全文