一些总结

来源:互联网 发布:阿里云学生服务器配置 编辑:程序博客网 时间:2024/04/29 19:35

1函数使用缺省参数时,要么在声明时使用,要么在实现时使用,不能在两个地方都使用。

2 当文件从实体机移动到虚拟机上,如果虚拟机上时钟比实体机上时钟小,则执行makefile会报clock时钟错误,修改虚拟机时间和实体机一致则可解决问题。

3 当使用多任务调用同一个函数时,如果函数为不可重入函数,则在中断时会破坏该函数数据,常见为以下三种情况:
  1)函数体内使用了静态数据结构
  2)函数体内调用了malloc或free函数
  3)函数体内调用了标准I/O函数
  总结一句话:就是要保证中断是安全的

4 使用fets或gzgets之类的函数,如果缓冲区不够大,没有读完一行的话,下一次读取不是在下一行开始,而是从上次    读取的下一个位置开始,即文件指针指向的地方。

5 stdio.h中有一个宏叫FILENAME_MAX表示编译器所支持的最大长度的合法文件名,LINUX下为4096

6 含有string类型的结构体不能使用malloc,遇到这种情况应该用new分配内存,同样含有stl容器时也是这样

7 如果打开文件没关闭,文件很多的话会造成too many open files错误,导致你文件不能打开了。
   可以用lsof查看打开的文件数,lsof -p pid可以查看某个进程打开的文件
   ulimit -n可以查看单个进程最多可以打开的文件数,可以修改这个值,不过终端重启后又会恢复,彻底修改需要改配置文件。

8 last|more 命令可以查看机器最近一次重启以来所有的IP登陆信息。

9 用backtrace可以打印段错时堆栈信息,用backtrace_symbols打印调用关系,可以用prctl函数生成core dump文件,
   来查看这些信息,不过第一个参数要设成PR_SET_DUMPABLE,另外prctl函数可以对线程取名。  
   可以用 ps -L -p 进程号查看进程下所有线程的信息 。

10 在对SIGINT,SIGTERM,SIGSEGV这些信号进行重新处理时,最好用sigaction函数取代signal函数。

11 使用inet_ntoa函数时,由于该函数返回的是一个静态指针,如果前后两次调用,后面使用的会覆盖前面的结果出现这种情况,需要前一次的IP字符串拷贝一份出来。

12 strtok函数内部使用一个静态指针来记录分割字符串的位置,是线程不安全的,建议使用安全的strtok_r函数。

13 mysql一些常用操作:

     1) 查看当前任务列表:show processlist;

     2) 将查询结果导入到磁盘文件:select xxx from xxx into outfile 'filename'

     3) 将磁盘文件内容插入数据库:load data infile ‘filename’ into table xxx

     4) mysql表结构导出:mysqldump -uroot -ppasswd  xxx --no-data > /home/xxx.sql

     5) 备份整个数据库:mysqldump -uroot -ppasswd 库名 > /home/xxx.sql

     6) mysql下查看事务是否开启:show variables like 'AUTOCOMMIT'

     7) 在innoDB引擎下,显式使用事务:SET AUTOCOMMIT=0;

         BEGIN; SQL; COMMIT/ROLLBACK

     8) 当磁盘空间满了时,mysql会启动不了,一直停在starting mysql ...界面;

         可用df -h查看磁盘所剩空间

14 vim在命令环境下,使用%!xxd可以将ASCII码转换为十六进制,使用vimdiff可以比较两个文件的不同。

15 shell中进行浮点数运算:
     a=1;
     b=0.12;
     a=$a+$b;
     echo "$a" | bc -l;

   对于无限小数,可以用scale=n指定小数位,如 echo "scale=2; 5/3"|bc -l

16 传入一个命令给数组
   cc=(`ls -l | awk '{print $9}'`);
   echo "${cc[@]}";

17 在为http header头增加字段时,每增加一个后面要加上\r\n,最后多一个\r\n才表示header头结束

18 tcpdump -i eth0 -s 2048 -l -A dst www.qq.com查看完整报文

19 linux下补丁文件的制作方法:
   diff -uN file1 file2 > file1.patch :比较两个文件的不同,将不同之处输出到补丁文件,-表示旧,+表示新
   选项-u表示统一格式创建补丁文件,这种格式比缺省格式更紧凑些
   选项-N确保补丁文件将正确地处理已经创建或删除文件的情况
   其他选项可以查看man手册

20 connect系统调用如果被中断返回EINTR错误,不能再次重启,否则返回一个错误,必须调用select等待连接完成。

先就总结到这里,以后再续。。。

原创粉丝点击