网络编程一(基本概念)

1 Ip 端口 协议

Ip 网络间不同计算机通信,每台计算机唯一标识
端口 区分不同的应用程序0-65535,0-1023系统保留

2 socket
网络编程一(基本概念)_第1张图片

3 进程间通信

1)管道
2)消息队列
3)共享内存
4)信号量
5)套接字
6)条件变量

4 多线程与多进程区别

1)进程数据是分开的:共享复杂,需要用IPC,同步简单;多线程共享进程数据:共享简单,同步复杂
2)进程创建销毁、切换复杂,速度慢 ;线程创建销毁、切换简单,速度快
3)进程占用内存多, CPU利用率低;线程占用内存少, CPU利用率高
4)进程编程简单,调试简单;线程 编程复杂,调试复杂
5)进程间不会相互影响 ;线程一个线程挂掉将导致整个进程挂掉
6)进程适应于多核、多机分布;线程适用于多核
线程所私有的:
线程id、寄存器的值、栈、线程的优先级和调度策略、线程的私有数据、信号屏蔽字、errno变量。

5 线程通信编程技术
1、线程(thread):是os能够进行运算调度最小的基本单位,是进程中的实际
动作单位。一条线程指进程中一个单一顺序控制流,一个进程可以并发多个线程,每个线程并行执行不同任务。线程是独立调度分派的基本单位。
2、线程使用范围
服务器领域开发当中的文件管理,或者通信控制
前后处理或异步处理
目的:为提升cpu的使用率,处理大量IO操作
3、线程优缺点
优点:资源利用率更好,程序响应速度更快
缺点:增加调用和管理的开销,一个线程崩溃可能影响整个程序稳定性
4、内核对象:有操作系统分配,只能有内核访问的数据结构,供系统和应用程序使用管理各种资源
句柄:创建内核对象时,函数的返回值标记内核对象。类似于函数指针
进程:应用程序运行实例
线程:是程序执行流的最基本最小单元。
5、线程库
1、c/c++ 11的boost线程库,c++11线程头文件
2、pthread库,定义了创建和操纵线程的整套API。线程
在windows与unix皆可用
3、win的线程API函数,线程头文件是windows.h
6、线程间通信
全局变量(类型声明 violate);
使用消息实现通信(sendMessage postMessage)
用事件CEvent类实现线程间通信
7、线程间同步
各个线程可以防止进程中公共变量、资源等,所以使用多线程需注意如 何防止两个或两个以上线程同时访问同一个数据,避免破坏数据完整性
线程间的通信目的主要用于线程同步
a、当有多个线程访问共享资源而不希望共享资源遭到破坏(互斥)
b、当一个线程需要将某个任务已完成的情况通知另一个或多个线城时(同步)
c、windows线程通信:
临界区:critial section每个线程中访问临界资源的代码段
互斥量:加解锁
信号量:PV操作
事件:
8 多线程应用

1 io操作,文件传输,大量数据读取等耗时操作
2 数据库中导出数据,聊天用户,进度条
3 解决负载均衡问题,充分利用CPU的资源

9 正则常用运算符表达式:

?:等价于匹配长度{0,1}

*:等价于匹配长度{0,}

+:等价于匹配长度{1,}

\d:等价于[0-9]

\w:等价于[A-Za-z_0-9]

^ :表示开始

$ : 表示结束

() : 表示域

[] : 表示包含(默认是一个字符)

[^] : 表示不包含(默认是一个字符)

{n,m} : 表示匹配的长度

. : 任何单个字符(\ .字符除外,可以转义字符表示)

| : 表示或

\ : 转义

[A-Z] : 26个大写字母

[a-z] : 26个小写字母

[0-9] : 数字0-9

[A-Za-z0-9] : 26个大写字母,26个小写字母 跟0到9

你可能感兴趣的:(读书笔记,Socket网络编程)