- 博客(17)
- 资源 (68)
- 收藏
- 关注
原创 (P20)socket编程(十五):UDP聊天室
文章目录1.UDP聊天室的实现1.UDP聊天室的实现C2S_LOGIN:客户端向服务端发送的登录消息S2C_LOGIN_OK:服务端到客户端的相应S2C_ALREADY_LOGINED:用户已经登录乐了,响应登陆失败S2C_SOMEONE_LOGIN:若有一个用户登录服务器,服务器会给其它用户发送有用户登录的消息C2S_ONLINE_USER:任何时刻客户端都可以向服务端发送一个在线用户请求列表的请求S2C_ONLINE_USER:服务器端将在线用户列表返还给客户端C2S_LOGOUT:客户
2020-06-23 23:01:44 384
原创 Linux内核的组成部分
文章目录1.进程、进程切换、调度2.UNIX进程3.地址空间与特权级别4.页表5.物理内存的分配6.系统调用1.进程、进程切换、调度系统中同时真正在运行的进程数目最多不超过CPU数目确定哪个进程运行多长时间的过程称之为调度2.UNIX进程init是进程树的根,所有进程都直接或间接起源该进程##@##>pstreeUNIX创建新进程的机制:分别是fork和exec(1)fork技术:写时复制(copy on write),原理:将内存复制操作延迟到父进程或子进程向某内存页面
2020-06-22 11:52:18 467
原创 (P19)socket编程(十四):UDP特点,UDP客户/服务基本模型,UDP回射客户/服务器,UDP注意点
文章目录不需要经过三次握手TCP是基于流的传输服务,消息之间没有边界,UDP数据包之间有边界数据包丢失,重复,乱序,以及缺乏流控红色竖线:表示客户端和服务端的边界16:28
2020-06-18 23:15:35 280 1
原创 (P18)socket编程(十三):select vs poll,epoll使用,epoll与select、poll的区别,epoll模式:EPOLLLT,EPOLLET
文章目录poll只有第一个限制cat /proc/sys/fs/file-max因为因为当前内存是512M,所以系统可以打开的最大文件描述符的个数为5万。若是1G,则是10万左右,10G就是百万。select和poll的共同点效率不高的原因:创建一个epoll实例,size不是最大并发数,size仅仅代表内部所创建的hash表的大小epoll_creat1:最新的,而且fd的数量已经由红黑树来控制将一个fd添加到epoll来管理等待事件epoll这块测试代码用c++编写客户
2020-06-17 23:42:53 535
原创 (P17)socket编程(十二):select限制,poll
文章目录1.select限制2.poll:与select差不多1.select限制命令:ulimit -n 2048,进程打开的文件描述符的数量编程:头文件中定义的而且需要重新编译内核客户端没有sleep服务端客户端客户端加了sleep服务端:客户端:客户端0 1 2已经被标准输入,标准输出,标准错误输出所占用1021个连接创建第1022个套接字的时候失败了,客户端sleep(4),就不会发送FIN段给对方了服务端收到这1021个连接,会在已完成连接队列中维护
2020-06-16 23:28:55 384
转载 shell脚本文件锁——避免脚本重复执行
文章目录1.在shell中实现文件锁的两种方式2.使用flock命令1.在shell中实现文件锁的两种方式方法一:利用普通文件(1)在脚本启动时检查特定文件是否存在,如果存在,则等待一段时间后继续检查,直到文件不存时创建该文件,在脚本结束时删除文件。(2)为确保脚本在异常退出时文件仍然能被删除,可以借助于trap “cmd” EXIT TERM INT命令。(3)一般这类文件存放在/var/lock/目录下,操作系统在启动时会对该目录做清理。方法二:使用flock命令(1)使用方式如下
2020-06-15 11:48:56 7382
转载 Docker为什么选择了AUFS?
文章目录1.AUFS2.但是每个 FS层都是 readonly权限,那么容器内部如何向这些文件写入数据呢?1.AUFSAUFS本质上仍是堆栈式的联合文件系统从功能上讲,AUFS可以将分布在不同地方的目录挂载到同一个虚拟文件系统当中(1)首先我们将思路切换到 Linux启动阶段。、典型的 Linux启动时,首先加载 bootfs(Boot File System)目录。这个目录里面包括 Bootloader和kerenl。Bootloader用来加载启动 kerenl。当kerenl成功加载到内存
2020-06-15 10:56:44 1780
原创 (P16)socket编程(十一):套接字I/O超时设置方法,用select实现超时
文章目录1.套接字I/O超时设置方法2.用select实现超时1.套接字I/O超时设置方法2.用select实现超时在都之前设置一个闹钟,若5s钟内没有返回数据(到达5s钟),则会产生一个SIGALRM信号将read打断错误码被打断了因为该闹钟可能会被其它使用,所以一般不使用闹钟来实现超时发送超时时间接收超时时间超时的错误码是EWOULDBLOCK不好移植,因为一些TCP选项不支持这两个选项19:51...
2020-06-14 22:16:34 550
原创 (P2)Linux开发工具——gcc入门下
文章目录1.使用外部库2.静态库与共享库3.生成静态库4.生成动态库1.使用外部库2.静态库与共享库3.生成静态库4.生成动态库
2020-06-13 21:15:18 337
原创 (P1)Linux开发工具——gcc入门上
文章目录1.什么是gcc2.gcc特点3.gcc编译过程4.gcc常用选项5.gcc编译多文件1.什么是gccgcc(GUN C Compile)编译器的作者是Richard Stallman,也是GNU项目的奠基者什么是gcc?gcc是GNU Compiler Collection的缩写。最初是作为C语言的编译器(GNU C Compile),现在已经支持多种语言了,如C,C++,Java,Pascal,Ada,COBOL语言等gcc支持多种硬件平台,甚至对Don Knuth设计的MMIX这类
2020-06-13 20:33:10 543
原创 (P5)Linux开发工具——gdb入门下
文章目录1.查看运行时的数据2.程序错误3.gdb调试逻辑错误4.gdb调试段错误5.core文件调试1.查看运行时的数据print 查看变量值ptype 查看类型print array 查看数组,查看数组,是查看的是静态数组print *array@len 查看动态内存,查看动态数组,静态数组都可以print x=5 改变运行时的数据eg:p arr1这里数组名是打印整个数组的元素p &arr1打印数组的地址p *arr2@10查看内存的10个元素p arr2
2020-06-11 23:46:05 266
原创 (P5)Linux开发工具——gdb入门上
文章目录1.什么是gdb2.gdb功能3.运行程序4.查看源码5.设置断点5.单步调试6.gdb常用命令总结1.什么是gdb什么是gdbgdb是GNU debugger的缩写,是程序的调试工具2.gdb功能启动程序,可以按照用户自定义的要求随心所欲的运行程序可让被调试的程序在用户所指定的调试的断点处停住**(断点可以是条件表达式)**当程序停住时,可以检查此程序中所发生的事动态改变程序的执行环境,可以动态改变变量的值3.运行程序gcc -Wall -g simple.c -o s
2020-06-10 22:44:08 276
原创 (P4)Linux开发工具—Makefile下
文章目录1.make常用内嵌函数2.多级目录Makefile1.make常用内嵌函数函数调用$(function arguments)(1)$(wildcard PATTERN) 当前目录下匹配模式的文件eg:src=$(wildcard *.c) 匹配所有的.c文件,所有.c文件列表保存到src变量中(2)$(patsubst PATTERN, REPLACEMENT, TEXT)模式替换函数eg:$(patsubst %.c,%.o,$src) .c的后缀名都替
2020-06-09 22:46:41 312
原创 (P3)Linux开发工具—Makefle上
文章目录1.make与Makefile介绍2.Makefile基本规则3.简单的Makefile编写4.Make自动化变量5.Makefile编译多个可执行文件1.make与Makefile介绍make工具利用make工具可以自动完成编译工作。这些工作包括:(1)如果仅仅修改了某几个源文件,则只重新编译这几个源文件;(2)如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译Makefilemake工具通过一个称为Makefil
2020-06-08 22:59:33 259
原创 (P15)socket编程(十):close与shutdown ,进一步改进回射客户程序
文章目录eg:前提:socketA调用了close,socketB没有调用closesocketA向socketB传送数据,socketA调用close是关闭了socketA的发送和接收数据这2个方向(即:socketA不能从套接字中读数据和也不能从套接字中写数据)。相当于socketA向B发送了FIN段,socketB收到后,read返回为0,但是这并不意味着socketB不能通过socket向socketA发送数据,仅仅意味着socketA到socketB的数据传送终止了,并不意味着socket
2020-06-07 11:44:53 383
原创 (P14)socket编程(九):select,select函数读,写,异常事件发生条件,用select改进回射服务器程序
文章目录单核CPU是不可以并行处理;select是并发服务器,对于多核CPU而言,select是无法充分利用的,除非使用多进程select,或者多线程select(1)关注前三个对等方发数据过来,填充了套接口缓冲区;对方调用close,返回为0表示对等方关闭;(2)关注第一个大多数时候缓冲区是不满的,会不断产生可写事件;40:41...
2020-06-03 23:51:24 1910
原创 (P13)socket编程(八):五种I/O模型,select ,用select改进回射客户端程序
文章目录一递交读操作,读操作就阻塞了,直到对方有数据到来;将套接口接收缓冲区拷贝到用户空间缓冲区buff中,拷贝完成,recv函数就返回了将套接口设置非阻塞方式fcntl(fd, F_SETFL, flag|O_NONBLOCK)recv函数即使没有数据到来,也不会阻塞,因为把他设置为了非阻塞模式了EMOULDBLOCK:改正为:EWOULDBLOCK忙等待:想等待一定的数据,而这些数据又没有到来,又需要占用CPU时间片,这种等待称之为忙等待不推荐使用这种非阻塞IO模型,应用很窄
2020-06-01 23:28:44 387
Shell编程ppt[C++教程网cppcourse[1].com].zip
2020-05-06
跟我一起学C++.zip
2020-05-06
NetworkProgramming-master.zip
2020-05-06
muduo_server_learn.zip
2020-03-12
Docker学习资料总结.7z
2020-02-08
VS code的linux服务器端的离线安装教程
2019-11-09
Scientific.Toolworks.Understand.v4.0.811.Incl.Keygen-AMPED.zip
2019-09-07
vscode的remote ssh中需要的ubuntu服务器中的sshd配置文件
2022-06-19
postgresql数据库插件PG-Strom中Scan算子执行流程分析
2022-03-16
CUDAppt.zip
2021-12-28
cpptools-osx.vsix
2019-12-05
VSCode Cpptools最新版1.40.2版本.7z
2019-12-04
VSCode Cpptools.7z
2019-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人