summary about laysnc(little details)

来源:互联网 发布:淘宝买东西怎么分期 编辑:程序博客网 时间:2024/06/05 15:21

重构代码的书籍:<<refactor>> martin forler   (建议工作1到2年读) <<refactor to patterns>> kent bank (建议工作4年读)

泛型书籍:<<C++ template>>   <<现代C++程序设计>>  

设计模式书籍:<<大话设计模式>>  <<design C++ modern>>   <<设计模式>>

设计模式: 23种


cp的 --preserve选项:cp --preserve=mode  src  des      :拷贝时只保留文件的权限,其他被舍弃

           cp   --preserve=owenership   src  des:拷贝时只保留拥有者群组权限 其他选项被舍弃

           cp  --preserve=timestamps src des  :只保留文件的时间戳

cp文件时文件的属性为什么会改变:  因为有默认的文件掩码 :shell中 执行umask会看到: 0022,为文件的默认掩码


set  -x :打开shell的debug 模式.


正则表达式常用的元字符

. :可以匹配任意单个字符,英文字符,数字,以及他本身.

* :可以匹配到重复前面的字符0到无穷多次的字符串

[ ]:可以匹配[]里面多个字符中的一个或者只有一个就匹配这个字符,虽然[]里面可以有多个字符但只匹配一个字符

$:可以匹配结尾

^:可以匹配开头

+:重复前面的字符1到无穷多次(*的补充)

?:此处有0个或者1个字符

{ }:

( ):分组符 ,如下面的例子中有两个字符,前面的括号里面是第一部分,后面的括号里面是第二个部分

举个例子:

   port    =   "8888"

要取得port和8888字段则可以用下面的句子:[ \t]*([a-zA-Z0-9]+)[ \t]*=[.\t]*"([a-zA-Z0-9 /]*)"[ \t]*

               port     =    "8888"

   1)  前面匹配一个或者多个空格或者一个或者多个tab 

 2)然后是字符串(可以含有大小写字母和数字,+用来表示该字符后面还会有0个或者多个)

 3)然后又是0个到多个的空格或者tab匹配  

 4)=  

 5)然后又是0个到多个的空格或者tab匹配  

 6)"  

 7)然后是字符串(可以含有大小写字母和数字,*用来表示该字符后面还会有0个或者多个)

 8)"

 9)然后又是0个到多个的空格或者tab匹配

c语言里面的正则表达是函数:man  regexec        man  7  regex  ?

wildcard  和 regular experrsion 的区别?


配置文件怎么写(下面说说lasync工具的配置文件里面要用到的配置表象)

1)网卡(lasync广播消息是要用到的是那个网卡)

2)端口号(lasync  layclient在两台电脑上要通信是用的port)

3)sharedir="/data" 服务器上要共享的目录

4)plugindir="plugins" 插件目录

5)文件要同步到客户的那个目录下


单件模式singleton如何实现线程安全?


如何获得电脑上的网卡信息(即获取硬件信息)

1)iif_nameindex           if_freenameindex

2)man ioctl      /  man  ioctl_list  : SIOCGIFBRADDR            struct  ifreq


如何在网卡地址上发送消息

1)首先获得广播地址

2)setsockopt设置可以通过广播地址发送消息   SO_BROADCAST选项

广播的消息不能过路由


sockaddr_in 和 sockaddr 为什么可以相互强转:因为他们的长度是相同的(14bytes):这个可以在<sys/socket.h>  <netinet/in.h>文件里面查看具体的结构体


 FILE *popen(const char *command, const char *type);
      The  popen()  function opens a process by creating a pipe, forking, and invoking the shell.  Since a pipe is by definition unidirec‐
       tional, the type argument may specify only reading or writing, not both; the resulting stream is correspondingly read-only or write-
       only.

popen函数的详细解释和使用举例可以参考下面的文章:

http://www.cnblogs.com/hnrainll/archive/2011/07/23/2114857.html

点击打开链接

#include <sys/types.h>  #include <unistd.h>  #include <stdlib.h>  #include <stdio.h>  #include <string.h>int main( void )  {  FILE   *stream;  FILE    *wstream;char   buf[1024];memset( buf, '\0', sizeof(buf) );//初始化buf,以免后面写如乱码到文件中stream = popen( "ls   -l ../", "r" ); //将“ls -l”命令的输出 通过管道读取(“r”参数)到FILE* streamwstream = fopen( "test_popen.txt", "w+"); //新建一个可写的文件fread( buf, sizeof(char), sizeof(buf),  stream);  //将刚刚FILE* stream的数据流读取到buf中fwrite( buf, 1, sizeof(buf), wstream );//将buf中的数据写到FILE    *wstream对应的流中,也是写到文件中pclose( stream ); fclose( wstream );return 0;}   


柔性数组/魔性数组:(可变长数组)

struct  flexible_array

{

int data;

char tag[0];

};

tag指针指向动态开辟出来的数组,


kill  -l: 列出所有的信号

netstat -anp | grep port :列出所有的使用的端口号


地址:
A类:0-127

B类:128-192
C类:193-239

D类:240-


关闭套接字: 

1)shutdown  :      int  shutdown(int sockfd, int how);    man 2 shutdown

2)close(sockfd)


网络上发送消息的方式: ?

1)广播:

2)多播:

3)单播:


原创粉丝点击