c++培训周总结7

来源:互联网 发布:小京东v7.完整源码分 编辑:程序博客网 时间:2024/05/21 19:45
培训部分


unix网络编程
socket本身是一个文件描述符
socket.h
int socket(int domain,int type,int protocol);
通常情况下protocol是0
 domain AF_INET为网络,AF_UNIX为本地
 AF_后端宏为PF_


 SOCK_STREAM tcp
 SOCK_DGREM  udp


struct sockaddr_in  addr
netinet/in.h
htons,inet_addr在arpa/inet.h中
addr.sin_family=AF_INET;
addr.port=htons(2222);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");


服务器端 需要bind (socket,&addr,sizeof(addr));
客户端:tcp需要connect udp可以直接sendto;
connect参数和bind一样
最后需要close


服务器端bind之后进行listen(socketfd, 233);
int len=sizeof(addr);
int accept(sockfd,(struct sockaddr*)&addr,&len);


!!accept的最后一个参数是一个指针!!用来传入传出
成功返回一个新的fd.用来本机稳定通讯


读写操作用新的fd进行操作


udp使用 sendto,recvfrom
sendto(sockfd,buf,sizeof(buf),0);第四个参数0为默认等待
如果不connect write无法发送.
read可以接收数据,但是不能包含发送方信息.


线程
pthread.h
编译时要包括 -pthread
pthread_t pid;
int pthread_create(&pid,pthread_attr_t* attr,void* (*f)(void*),void* p);
返回一个线程id,然后从f开始执行
第二个参数一般为0


pthread_join(pid,0);
等待一个进程结束,0为等待
线程最好以return 结束,或者pthread_exit(0);结束
exit(0);会连同进程一起推出


在create之后调用pthread_detach(pid)使线程分离,和主进程无关了


互斥量
pthread_mutex_t lock=THREAD_MUTEX_INITIALIZER;
或pthread_mutex_init(&lock,0);


pthread_mutex_lock(&lock) 加锁
pthread_mutex_unlock(&lock) 解锁
pthread_mutex_destroy(&lock)


对同一个上锁会等待,用pthread_mutex_trylock可以不等待


信号量
!不是信号量集
头文件semaphore.h
sem_t sem;
sem_init(&sem,0,5);
第二个参数是线程或进程,0为线程
第三个参数初始化计数器个数


sem_wait(&sem)
获取信号量 -1;
sem_post(&sem)
释放信号量 +1


destroy_sem(&sem)回收信号量资源




数据库


oracle字段类型
number
varchar2
date


任何值和null做运算都是null
nvl(e,1); 当e是null时返回1;
字符串用单引号,双引号中间可以有空格,且字符串形式完全一样


字符串拼接用||
单引号里面加两个个单引号用来输出一个单引号
%%表示%


dinstinct关键字放在select之后 用来去除重复,整句只能有一个


where条件判断
where a between 123 and 2
a在123到2之间


where a in(1,2,3);
a在1,2,3中


like '字符串' escape'\'
以\作为一个标示符,表明\后面的一个字符为实体


null  可以用 is和is not


排序
order by 排序字段 排序方式,排序字段2 排序方式2
默认ase这升序
desc 降序
永远在sql语句最后部分


当行函数
upper,lower,initcap首字母大写,length,
substr(e1,e2,e3) 字符串截取
e1 要处理的字串,e2从哪里开始截取-1代表最后一个字符位置,e3截取多少个字符
 round(e1,e2)四舍五入
 e2可以为负数,从小数点往前推
 trunc(e1,e2) 截取数据
 e2表示指定小数保留的位数


to_char(e1,e2)
e2为格式字符串,针对数字时 以fm开头
9 小数点前代表0-9,后代表1-9,
0 小数点前代表前导0,后面代表0-9


多表查询


自查询
给本表命名两个别名
from s_emp a,s_emp b;




组函数
count,sum


SQL>@脚本完整路径  导入sql


内连接,会损失一个表里没有匹配的内容
外连接,可以将没有匹配的内容页显示出来


只有oracle支持(+),加了(+)的表的对面表不损失,相当于本表加了null行
a left outer join b 左和右连接,都是右边的一个不损失


自学部分


移除性算法
remove
remove_if


remove_copy
remove_copy_if





















0 0
原创粉丝点击