使用篇
0 查看环境 env |grep -i HADOOP_CMD ,添加环境在/etc/environment
1 其实在Linux 中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone() 。该系统copy 了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。不过这个copy 过程和fork 不一样。copy 后的进程和原先的进程共享了所有的变量,运行环境。这样,原先进程中的变量变动在copy 后的进程中便能体现出来
2 服务端开启后,可以在客户端用telnet服务端的地址和端口号进行连接,telnet退出命令:ctrl+]后q
3 securecrt上传文件rz命令不能使用,要先安装yum install lrzsz
4 查看文件命令: cat more less head tail tac nl
5 杀死进程
pid=$(ps aux| grep '*' | cut -d ' ' -f 2)
kill -9 $pid
//killall - i -9 name
6 shell相关
挂载:sudo mount -t nfs 主机名:/文件 /mnt
卸载:umount -f /mnt
查看栈信息:ulimit -s
设置栈容量无限: ulimit -s unlimited //linux一般进程栈大小为10mb
查看字体:fc-list :lang=zh-cn
gedit设置多字体支持:gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8','GB18030','GB2312','GBK','BIG5','CURRENT','UTF-16']"
cd - //返回刚才的目录 find //查找文件或目录 在vi中查看编辑文件的信息 :f 或者 ctrl+g ctrl+w //去掉以空格为分界的字段
apt-get // apt-cache search //whereis
7 解压缩
解压缩:
打包命令 : tar cv -f *.tar filename
压缩命令:tar -jcv -f *tar.bz2 filename //以.bizp2 方式压缩
tar -zcv -f *tar.gz filename //以.gzip方式压缩
gzip -dv *.gz //压缩.gz文件
bzip2 -dv *.bz2 //压缩.bz2文件
解压:
tar -jxv -f *tar.bz2 -C 目标目录 //解压.tar.bz2文件
tar -zxv -f *tar.gz -C 目标目录 //解压.tar.gz文件
unzip *.zip //解压.zip文件
unrar *.rar //解压.rar文件
7z *.7z //解压.7z文件
gzip -cv *.gz //解压.gz文件
bzip2 -cv *.bz2 //解压.bz2文件
8 vim:.,+3 s/^/#/g
批量替换
%s/*/#/g //全文*替换为#
自动编译程序文件
"make 运行
:set makeprg=g++\ -Wall\ \ %
改善下颜色效果:
set t_Co=256
9 查看文件大小
# du -h 查看每一个文件的大小
# du -sh 文件夹名 查看当前文件夹大小 单位是M
# du -ks 查看当前所在文件夹大小
# du -ks 文件夹名 查看当前指定文件夹大小
将一个大文件分成若干个小文件方法
例如将一个**.txt文件分成前缀为 B**_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式
先利用
wc -l **.txt 读出 B**.txt 文件一共有多少行
再利用 split 命令
split -l 2482 **.txt -d -a 4 **_
将 文件 **.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为**_ ,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)
11cscope: http://blog.csdn.net/liuxuejiang158blog/article/details/8607330
报错篇:
1 /usr/include/boost/smart_ptr/shared_ptr.hpp:418: T* boost::shared_ptr<T>::operator->() const [with T = Observer]: Assertion `px != 0' failed. //这个错误是断言不成立,具体原因是shared_ptr的->运算时智能指针所指对象不存在了。
2 free(): invalid pointer: 0x0000000000605330 *** //释放了空指针,这个错误我遇见时是这样的:先声明一个vector,然后shared_ptr.reset(&vector)这样shared_ptr对象析构时析构了vector,然后vector退出作用域时又析构...悲剧了
3 声明中有显式的限定 //在一个自定义的命名空间中的函数又加上命名域...
4 undefined reference to `boost::thread::join()' //没有安装libboost-thread库,安装后编译g++ -o a.out a.cpp -lboost_thread
5 ISO C++ 不允许通过提取一个未限定的或带括号的非静态成员函数的地址来形成一个成员函数指针。 //具体情景是类A中一个成员函数B调用pthread_create(&ID,NULL,func,NULL)其中func也是A的成员函数,出错原因大致是pthread_create不会传递this指针执行func函数。
6 void* fun(void* arg) //pthread_create(&ID,NULL,fun,NULL) //pthread_create(&ID,NULL,&fun,NULL)均可以
7 gettid()返回线程id,但是编译错误,替代方案#include<sys/syscall.h> syscall(SYS_gettid);
8 编译c++0x程序:g++ -o test test.cpp -std=c++0x
调试篇:
1 thread apply all bt // gdb中查看线程调用栈
编程篇:
1 等待所有子进程: while(wait(NULL)!=-1){}
c/c++
1 编译器常量:值在编译器就可以确定如const int i=5;而运行期常量是值在运行初始化后值不再改变const int i=rand()
2 POD:简单的标量类型如整型、指针;不具有自定义构造、析构、拷贝、赋值等操作的类;POD的二进制内容可以随意复制且能还原为原对象,memset,memcpy可以直接操作
3 static_cast转换类似于C/C++里面的强制类型转换,没有运行时类型检查来保证转换的安全性,static_cast < type-id > ( expression )该运算符把expression转换为type-id类型。dynamic_cast转换是根据基类派生类的原则进行转换,把一个派生类转换为基类使用这个转换。const_cast转换是去掉const变量的const。reinterpret_cast用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。
4 reinterpret_cast <new_type> (expression) reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。
5
R
1 Warning message: In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : EOF within quoted string //read.csv(...,quote="")
2 货币符号在是宽字符即不止用8bit表示,R不能读取