- 博客(42)
- 收藏
- 关注
原创 网络编程——套接字、创建服务器、创建客户端
套接字文件,原本就是一个和管道文件类似,用来实现进程间通信的一个文件既然有了管道文件,当时为什么还要开发套接字文件,去实现进程的通信因为管道文件是半双工模式的套接字文件是全双工模式的但是后来,有了OSI 7层模型以及TCP协议 4层模型之后套接字文件就进化出了新的功能:套接字文件中允许存放 ip 和 port 以实现数据的跨主机传输原先只能实现进程间通信的套接字,就有了一个新的名字:域套接字。
2025-03-18 20:10:56
1315
原创 IO进程线程5
1.线程:是进程并发执行多个任务的机制2.线程就是一个指令的执行体,一个进程至少存在一个任务,也就是一个线程3.并发、串行、并行并发:单核CPU同时执行多个线程(CPU时间片轮询机制)串行:多个任务有序执行,执行完一个任务以后,再执行另一个任务并行:多核CPU同时执行多个任务4.多个线程共享同一进程的所有资源5.一个进程至少有一个线程1.主线程结束(进程结束),分支线程随之结束2.分支线程结束,主线程不受影响2.主线程和分支线程共用进程的同一资源,例如可以访问同一个全局变量。
2025-03-10 20:43:36
715
原创 IO进程线程4
创建态:流程 首先向系统申请一个空白PCB资源,在PCB中填写管理或和控制进程的相关信息 申请进程相关的资源,插入到就绪队列中等CPU调度 就绪态:获取出cpu以外的所有资源 运行态:获取cpu资源,实现CPU调度 阻塞态:在运行的构成中遇到IO函数 终止态:流程 等待系统做稍后处理,清空PCB资源,把PCB返回给系统。pgid:process group id 进程组号,一个进程组是由多个进程组成,当创建一个新的进程,默认继承父进程的进程组号。CPU以ms级别的速度在多个进程或线程之间来回切换。
2025-03-06 22:17:30
1081
原创 IO进程线程3
当操作一个文件的时候,则需要创建并打开一个文件,系统就会给文件分配一个编号,这个编号就是文件描述符文件描述符本质就是数组的下表,标准IO是对文件IO的二次封装,所以FILE结构体里面存在文件描述符int _fileno;1.文件描述符:文件描述符的本质就是数组的下表,默认共有1024个文件描述符,范围[0-1023]ulimit -a 查看文件描述符的总个数修改文件描述符的个数(修改只对当前终端有效)ulimit -n 个数 ---》ulimit -n 2048。
2025-03-05 21:36:52
893
原创 IO进程线程2
当调用fwrite函数时,把一个整数转换为二进制,在把二进制的字符形式写入到文件中,展示给程序员(看不懂)把整数,小数转换为字符串,把字符串通过二进制的形式写入到文件中,那么在文件中显示的结果就是本身。全缓冲的对象:使用fopen函数打开文件后,返回一个流指针,此时这就是全缓冲。当main函数启动之前,会自动创建三个特殊的流指针stdin stdout stderr。行缓冲的大小:1024字节-----》1K。3.使用fclose函数关闭流指针。全缓冲的大小:4096字节----->4k。
2025-03-04 22:04:05
947
原创 IO进程线程
流指针FILE*: 本质FILE是一个结构体的别名,当存储./a.out的运行结果,需要创建一个文件,每常见一个文件则会在用户空间申请一片缓冲区。IO的作用:实现对文件的操作,把运行结果存到文件中,读取文件的数据,方便后期查询。4.属于系统函数调用,可以访问特殊文件(链接文件,设备文件,管道文件...)标准IO:指程序和用户之间的数据交互,标准IO=文件IO+缓冲区。练习题:使用标准IO函数,打印一个文件的内容,类似cat指令。日志:把内存的运行结果存到到文件,文件的操作:打开,关闭,读取,写入。
2025-03-03 20:22:50
1131
原创 C高级——shell(3)
1.回顾:C语言的选择结构:if , if else if ,if else,switch (switch的执行速度最快)2.shell的选择结构: 单分支if 双分支 if else 多分支if elif case..in。
2025-02-27 19:43:26
967
原创 C高级——shell(2)
预定义变量:已经存在的变量,并且表示特殊含义$* 外部输入的所有参数,不包含文件名,默认中间使用空格隔开$@ 外部输入的所有参数,不包含文件名,默认中间使用空格隔开$# 类似argc,外部参数的个数$$ 获取当前终端的进程号获取上一行指令的返回结果,用于函数返回一般获取的结果是0,上一行指令运行成功非0,上一行指令执行失败1.对数组元素全部初始化0 1 2 32.shell支持稀疏数组3.数组的单个元素赋值arr[0]=hello 给数组的第一个元素赋值,定义数组arr[1]=100。
2025-02-26 19:27:55
827
原创 C高级——终端指令
软件源网址,存在于/etc/apt/sources.list文件中,将文件原有的内容删除,将新的软件源粘贴进去。因为ubuntu中默认访问的是国外的软件源,将ubuntu中默认的国外的软件源,更新成国内的软件源。如果不能够添加桥接网络,点击左下角的还原默认设置,如果还不行,找到VMware的安装包,双击修复。ping baidu.com ---->ping+任意网址,只要能ping通,说明连接网络成功。格式: ln -s 绝对路径下被链接的文件 绝对路径下的创建的链接文件。清华源、阿里源、163源····
2025-02-24 19:16:48
962
原创 数据结构——哈希表
3.二次探测法:di=12,- 12 ,22,-22,32,…,±k2,(k≤m/2)即从冲突地址向前后以整数二次方为增量查找空闲地址的处理冲突方法。),即将冲突地址加上序列中的伪随机数以查找空地址的处理冲突方法。,m-1,即从冲突地址向后依次查找空闲地址的处理冲突方法。4>除留余数法:取关键字被某个不大于哈希表表长m的数p除后所得余数为哈希地址的方法。1> 直接定址法:取关键字或关键字的某个线性函数值为哈希地址的方法。3>平方取中法:取关键字平方后的中间几位数组成哈希地址的方法。
2025-02-18 20:28:01
1734
原创 数据结构——单向循环链表、双链表、双向循环链表
m,数到m的人出圈,然后从出圈的下一个人(m+1)开始重复此过程,直到 全部人出圈,于是得到一个出圈人员的新序列。如当n=8,m=4时,若从第一个位置数起,则所得到的新的序列 为4, 8, 5, 2, 1, 3, 7, 6。指针域:存储节点之间的关系,下一个节点的地址,单向循环链表的指针域指向该节点的地址。双向循环链表:尾节点的下一个节点是头节点,头节点的上一个节点是尾节点。1.单向循环链表:尾节点的指针域指向头结点的地址。2.单向循环链表的节点:数据域和指针域。3.双向链表节点的结构体定义。
2025-02-17 19:29:54
1525
原创 数据结构——链表
1. 引入目的:顺序表的方便修改和查找,不方便插入和删除,插入的和删除的时间复杂度是O(n),并且顺序表存在满的情况,顺序表是否用于数据量较小的情况,所以引出链表。3.链表的分类:单向链表,单向循环链表,双向链表,双向循环链表。1.单链表:只能从头开始单向向后遍历访问节点的链表,称为单链表。存储结构:链式存储(内存空间任意一段),逻辑结构:线性结构(一对一关系)指针域:下一个节点的地址。2.链表:线性表的链式存储,称为链表。数据域:存储数据元素。2.结点:包含数据域,指针域。4.链表的插入和删除的思想。
2025-02-15 10:25:56
1673
原创 数据结构——顺序表
目录一、数据二、数据结构 2.1 逻辑结构:数据元素之间一种或多种关系 2.2 存储结构:逻辑结构在计算机的存储形式三、时间复杂度四、顺序表 4.1 顺序表的概念4.2 顺序表的操作4.2.1 创建顺序表4.2.2 顺序表的尾插4.2.3 顺序表的遍历4.2.4 顺序表尾删4.2.5 顺序表按下表插入4.2.6 顺序表按下表删除4.2.7 顺序表按下表修改4.2.8 顺序表按下表查找4.2.9 顺序表按元素查找4.2.10 顺序表按元素删除4.2.11 顺序表按元素修改4.2.12 顺序表去重4.2.
2025-02-13 21:33:34
799
原创 数据结构——结构体位域、typedef类型重定义、宏、共用体union、枚举、虚拟内存划分
typedfef: 类型重定义格式: typedef 数据类型 别名;1.typedef: 类型重定义2.数据类型:基类型,构造类型,空类型,指针类型3.别名:满足命名规范size_t 在64操作系统unsigned long 32操作系统unsigned int//把int起别名size_4 int--->sise_4int a;int age;}p_t;方式1://struct Person起别名p_tp_t a;int a;int arr[2];int *p;
2025-02-13 20:51:30
1050
原创 数据分析——动态分配内存、结构体
申请堆区的空间,需要手动申请,手动释放如果直接定义在代码中的变量,是系统默认分配栈区的空间,栈区空间自动申请,生命周期结束自动释放。需要用到头文件#includemalloc和free一定成对出现1.1 malloc1.2 free功能:释放堆区的内存空间1.3 指针的强转因为不同数据类型的指针的大小相同,所以指针之间的强转是安全的但是会1.4 堆空间的地址作为指针函数的返回值1.5 悬空指针指针指向一片地址,但是对这片地址没有使用权,1.5.1 指向已经堆放的空间。
2025-02-11 19:18:46
1047
原创 C语言——指针2、函数
返回值类型 函数名(参数列表)函数体;return 返回值;//如果返回值类型是void,return可以不写返回值:返回给主调函数处的结果,如果主调函数处不需要结果就不用写返回值(如果函数没有返回值,就写void)参数列表:如果实现函数功能需要外部传递参数,就需要写参数列表,如果实现函数功能时不需要外部传递参数,不需要写参数列表。
2025-02-07 19:00:21
409
原创 C语言——指针
指针表示内存地址(如酒店的房间号表示房间的地址)我们平时说的指针,是保存地址的指针变量int a,b,c;//使用指针变量保存a的地址//因为指针变量p的值就是内存地址,所以使用%p格式符打印return 0;int *p=arr;for(i=0;i<6;j<5;i<6;
2025-02-06 19:47:48
770
原创 C语言练习1
int i;printf("请输入数组内的数据(6个)\n");for(i=0;i<LEN;i++)printf("请输入1或0决定数组是升序还是降序排列,1为升序0为降序\n");int k;int j;int temp;i<LEN-1;j<LEN-1-i;i<LEN-1;j<LEN-1-i;i<LEN;
2025-01-24 12:02:14
228
原创 C语言——一维字符数组、二维整形数组
/单个字符的输入和输出int i;for(i=0;i<5;i++)//字符类型的输入需要吸收垃圾字符gets(str1);for(i=0;i<5;return 0;
2025-01-23 13:41:33
605
原创 C语言—— 循环结构-赋值控制关键字、数组
printf("请输入10个放到数组中的数据:\n");inti;for(i=0;i<len;i<len;intarr[7];printf("请输入7个放到数组中的数据:\n");inti;for(i=0;i<len;i<len;i++)//保证Max_arrNum是arr中的值for(i=0;i<len;
2025-01-17 21:07:03
924
原创 C语言——switch case分支语句、while循环、for循环、do while循环
case后面的值,是switch()中的变量可能出现的值,switch···case的本质是对变量值进行判断,满足哪一个常量表达式,就自动执行该常量表达式后面的语句块,遇到break退出switch···case语句,如果所有的常量表达式都和变量的值不等,执行default后面的语句。在循环条件成立的情况下,do···while循环和while以及for循环执行结果相同;在循环条件不成立的情况下,do···while一定会在执行一次。}while(条件);(可以是常量比较的结果,不能是变量比较的结果)
2025-01-16 10:32:55
941
原创 C语言——输入函数、运算符、if分支语句
回车在每一个格式符都获取到数据以后,回车作为scanf结束的标志,如果有格式符没有获取到数据。eg:已知一个数a22,想要给a的第13个bit置0,给a的第5个bit置1,要求操作不能修改其他bit位的值。:如果运算符在前面就获取运算后的结果,如果运算符在后面就获取运算前的结果。逻辑与运算时,如果运算符左侧的表达式结果为0,右侧的表达式不会执行。逻辑或运算时,如果运算符左侧的表达式结果为1,右侧的表达式不会执行。关系运算的结果是一个固定的值,真值/假值,1/0。scanf输入结束时,按下回车执行后面程序;
2025-01-14 17:15:33
635
原创 C语言基础——数据类型、常量、宏定义、变量、输出函数
宏定义是一个简单的替换宏定义的位置:一般在头文件下方,主函数上方宏替换发生在编译的预处理阶段宏名一般大写(为了和变量做区分)存储类型 数据类型 变量名;//定义一个变量。
2025-01-13 19:48:46
1195
原创 C语言基础——初步认识学习Linux系统
接下来一起来编写我们的第一个程序第一步:vim xx.c第二步:写下main Tab键补全gcc xx.c -o 自定义文件名。
2025-01-10 00:28:26
1106
原创 MySQL 数据增删改查
PS:连接查询涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外健。PS:左连接和右连接就是分别以表1和表2为基表,返回左(右)表中所有记录及连接表中符合条件的记录的外连接。PS:ASC是降序,DESC是升序,在不写明是ASC还是DESC的情况下,默认是ASC降序。连接查询是将多张表中记录按照指定的条件进行连接的查询方式。定义:子查询是在一个查询的内部包括另一个查询的查询方式。如何查看班级同学的平均身高?
2025-01-08 20:03:36
1647
1
原创 数据库基础——操作数据表
这篇文章将从“查看数据表、创建数据表、查看表的创建语句、查看表结构、修改表名、增加数据表字段、修改数据表字段、删除数据表字段、删除数据表”这几个方面去展开讲解MySQL中的语法格式和示例。
2025-01-07 17:21:01
464
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人