自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 使用线程池完成登录注册功能

如果客户端发送登录请求,则服务器需要读取保存了已注册用户的文件(user.dat),比对此刻客户端发送的用户名和密码是否。当客户端注册成功后可选择登录操作,登录成功会退出进程,否则一直停留在本界面,继续登录,或选择退出,结束进程。如果客户端发送注册请求,服务器将客户端发送的用户名和密码数据写入文件(user.dat)文件中已记录的数据,并发送登录成功或失败的信息给客户端。1. 用户注册。0. 退出。客户端交互界面设计如下。

2025-02-14 08:38:45 355

原创 liunx父子进程、管道练习题

创建一个进程,在该进程中启动另一个进程,要求启动的同时向其传递一个参数,被启动的进程根据传递的参数的不同取值,实现不同的操作,分别实现传递的参数为ls时,输出当前目录的内容,传递rm时,实现删除当前目录名为a.out的文件。利用fifo实现不相关的两个进程之间,一个进程通过键盘输入不断给另外一个进程发送消息,另外的进程不断打印接收到的消息,直到用户输入bye时发送完毕后,两个程序都执行完毕并退出。利用PIPE进行父子进程间通信,父进程给子进程发信息,子进程回复信息给父进程。

2025-01-18 17:55:01 282

原创 进程间通信练习题

主要运用管道、消息队列、信号的相关知识

2025-01-18 17:41:58 231

原创 liunx进程函数汇总(包含管道、共享内存、消息队列、信号)

liunx进程函数小总结

2025-01-18 17:35:54 1955

原创 liunx系统IO函数小汇总

liunx系统IO函数小总结

2025-01-17 15:46:21 975

原创 归并排序算法

归并排序和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。

2025-01-17 15:40:58 1188

原创 liunx系统IO函数

​ 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。DT_FIFO = 1, // 管道文件。DT_DIR = 4, // 目录文件。DT_REG = 8, // 一般文件。DT_LNK = 10, // 链接文件。

2025-01-11 17:51:28 995

原创 C与语言GDB调试

GDB是GUN开源组织发布的一款强大的Unix/Linux下的程序调试工具。

2024-12-30 09:25:16 402

原创 C语言预处理

不带参数的宏定义语法# define 宏名 常量数据宏定义的预处理机制:此时的预处理只做数据替换,不做类型检查注意:定义的宏不会占用内存空间,还未进入编译环节->运行。我们在编译前已经将宏名替换成了常量数据在预编译时将宏名替换成字符串的过程称为"宏展开"。这里的常量数据是一个不带双引号的字符串案例#define PI3.1415926int main()printf("请输入圆的半径:\n");//计算周长//计算面积return 0;带参数的宏定义#define 宏名。

2024-12-30 09:19:35 910

原创 C语言自定义类型与文件操作

什么是文件文件是保存在外存储器(U盘,移动硬盘)的数据的集合。文件操作体现在哪几个方面文件内容的读取文件内容的写入数据的读取和写入可被视为针对文件进行输入(Input)和输出(Output)操作,此时数据像水流一样从外存储器流向内存。或者从内存流向外存储器,所以系统形象的称文件操作为文件流。C语言程序对文件的操作采用"文件缓存机制"。就是说在程序对文件的数据读写并不是直接操作文件中的数据,而是系统会为文件在内存中创建"文件缓冲区",程序对文件的操作,其实是在缓冲区进行。文件的分类。

2024-12-30 09:18:39 1088

原创 C语言自定义类型

自定义数据类型的一种,关键字struct,结构体类型的变量可以存储多个不同数据类型的数据。定义格式:struct 结构体名数据类型1 成员名称1;//结构体中的变量叫做成员数据类型2 成员名称2;....注意:结构体中定义的变量,我们称之为成员变量格式说明结构体名,合法的标识符,建议单词的首字母大写(所谓的结构体名,就是自定义类型的类型名称)数据类型n:C语言支持的所有类型(包括函数,函数在这里用函数指针表示)成员的名称:合法的标识符,就是变量的命名标准。

2024-12-30 09:17:14 1067

原创 野指针、空指针、空悬指针与内存管理

在C语言中,悬空指针指的是指向已删除(或释放)的内存位置的指针。若一个指针指向的内存已经被释放,但指针的指向未重新指向有效的内存地址,那么这个指针就是空悬指针。(NULL是空常量,它的值是0,一般存放在内存0x00000000的位置,这个地址只能存NULL,不能被其他程序修改)很多情况下,我们不可避免会遇到野指针,如刚定义的指针无法立即为其分配一块恰当的内存,又或者指针的指向的内存已经被释放等等。定义:指向一块未知区域(已经销毁或访问内存受限的内存区域外的已存在或不存在的内存区域),的指针,被称作野指针。

2024-12-30 09:16:05 1932

原创 C语言指针常量、常量指针动态内存分配

每个C语言进程都拥有一片结构相同的虚拟内存,所谓的虚拟内存,就是从实际物理内存映射出来 的地址规范范围,最重要的特征是所有的虚拟内存布局都是相同的,极大地方便内核管理不同的进 程。虚拟内存中,内核区段对于应用程序而言是禁闭的,它们用于存放操作系统的关键性代码,另外由 于 Linux 系统的历史性原因,在虚拟内存的最底端 0x0 ~ 0x08048000 之间也有一段禁闭的区段, 该区段也是不可访问的。这些不同的内容,所存储的区域是不同的,且不同的区域有不同的特性。

2024-12-24 19:30:15 2006

原创 C语言字数指针、指针函数、函数指针

如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。定义:函数指针本质上是指针,它是函数的指针(定义一个指针变量,变量中存储了函数的地址)。简而言之,回调函数就是允许用户把需要调用的方法的指针作为参数传递给一个函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法。再函数中不要直接返回一个局部变量的地址,因为函数调用完毕后,局部变量会被回收,使得返回的地址就布明确,此时返回的指针就是野指针。三级指针本质上用法和二级指针差不多。

2024-12-24 19:28:20 969

原创 C语言变量指针、指针变量、数组指针、指针数组

②指针发:*(a+i)、 *(p+i)其中a数组名,p是指向数组元素的指针变量,其初值:p = a。指向数组元素的指针,本质上还是指针变量;现在指向数组的指针,叫做数组指针。特点:现有指针,后有数组。本质上还是数组,其中的元素类型为指针。需求有一整型数组a,有十个元素。概念:指针数组是一个数组,数组中的每一个元素都是指针。概念:数组指针是指向数组的指针,本质上还是指针。需求:用指向元素的指针变量输出二维数组元素的值。需求:数组指针输出二维数组任意行任意列元素的值。分析:要输出各元素的值,有三种方法。

2024-12-24 19:27:03 834

原创 C语言指针初阶

内存地址:系统为了内存管理的方便,将内存划分为一个个的内存单元,并为每一个内存单元进行编号。内存单元的编号称之为该内存的地址。一般情况下,每个变量都是由多个内存单元构成的,每个变量的内存地址,其实是这个变量对应的第一个内存单元的地址,也是基地址/首地址变量指针变量的地址称之为该变量的指针(本质是地址)。变量地址往往是指变量在内存中第一个内存单元的地址int a;&a //变量a的地址,也成为变量a的指针int arr[2];&arr //数组arr的地址,也称为数组arr的指针。

2024-12-24 19:25:28 798

原创 C语言函数

​ 当用 数组做函数的 实际参数时,则 形参应该也 要用数组/指针变量来接收,但请注意,此次并 不代表传递了数组中所有的元素数据,而是传递了第一个元素的内存地址(数组首地址),形参接 收这个地址后,则形参和实参就代表了同一块内存空间,则形参的数据修改会改变实参的。函数定义时指定的参数,形参是用来接收数据的,函数定义时,系统不会为形参申请内存,只有当函数调用时,才会申请内存,用于存储实参,当函数返回时,系统会自动回收形参申请的内存资源。,但我们对函数操作出现在函数的定义之前,则,需要对函数进声明。

2024-12-24 19:24:16 994

原创 C语言字符数组与函数

函数:实现一定功能的,独立的代码模块。一定是先定义,后使用。使用函数的优势:我们可以通过函数提供给别人使用,也可以使用他人的函数,减少代码量。借助函数可以复用代码实现结构化(模块化)程序设计思想关于结构化设计思想:将大型的任务功能划分为相互独立的小型任务模块设计。函数是C语言程序的基本组成单元:C语言程序是由一个或多个函数组成。[返回类型|类型标识符] 函数名(形参列表) //函数头(函数首部)函数体;//函数体(整个{}包含的内容)函数类型:函数返回值的类型。

2024-12-24 19:23:00 792

原创 C语言二维数组

注意:C语言中,二维数组在计算机的存储顺序是按行进行,即第一维的下表变化慢,第二维的下表变化快。元素类型为char字符型的数组,字符数组往往是用来存储字符串数据的。注意:C语言字符是字节字符。若提供字符个数与数组长度相同时,可省略数组长度,系统自动确定元素个数,适合字符个数较多时。数组大小和引用数组元素的区别。字节字符:也就是一个字符占一个字节,在C语言中,我们使用char表示字节。字符数组的语法与一维数组和二维数组一样,只不过数据类型是char。二维数组可被视为特殊的一维数组,只不过它的数据类型是数组。

2024-12-24 19:21:50 375

原创 C语言流程控制

数组是相同类型有序数据的集合。类型说明符 数组名 [ 数组大小 ]数组的类型说明符由数组中的元素决定,也就是元素是什么类型,数组就是什么类型数组名也是标识符,我们所说的数组名,可以理解为数据类型是数组的变量名。遵循标识符命名规则。数组容量也可以叫做元素个数或者常量表达式,表达式必须为整型,可以包含常量和符号常量,但不能是变量。类型:代表了数组中元素的类型容量:数组中能存储多少个元素,数组容量可以是常量、常量表达式、符号常量但必须是整数。

2024-12-24 19:20:09 463

原创 C语言流程

实现的,因为它们只能跳出单层循环,跳出多层循环需要我们定义标志位进行跳出(标志位也可以配合break使用)原则上,for循环能实现的while循环一定可以实现,for循环可以看作是while循环的一种特殊写法。功能:continue语句不会结束循环,跳过本次循环尚未执行的语句进入下一次循环。​ 在我们嵌套循环的情况下,continue语句只对包含它最近的一层循环起作用。该第二个数据项开始,依次与该变量比较,若大于/小于,则将当前变量赋值给该变量。特点:先执行,后判断,无论条件是否满足,至少执行一次。

2024-12-18 08:54:37 742

原创 C语言的输入与输出

一个int型整数也可以用%u输出,反之一个unsigned型数也可以用%d、%o、%x格式输出。如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则按实际的位数进行输出。在C语⾔中,输⼊与输出时⽤标准库()函数中的输⼊(scanf())、输出函数(printf())实现。反之,一个字符也可以输出成一个整数。字输出实型数据时,格式说明符中的m表示数据所占列宽,n表示小数点后面所占的位数。一个整数,只要其值在0~255范围内,也可以用%c格式使其按字符形式输出。

2024-12-18 08:51:56 797

原创 C语言运算符

广义的说,未解决一个问题而采取的方法和有限的步骤,称为“算法”

2024-12-16 18:41:07 977

原创 C语言常量与变量

C语言中有32个关键字,不允许用户定义标识符。12个预处理命令:长度。

2024-12-16 18:39:16 797

原创 C语言(程序结构分类)

当型循环:当给定条件P成⽴时,执⾏S操作,然后再判断P条件是否成⽴,如果仍成⽴,再执⾏S操作,然后再判 断…,如此反复,直到某⼀次P条件不成⽴为⽌,此时不再执⾏S,结束循环。直到型循环:执⾏S操作,然后判断条件P是否成⽴,如果成⽴,再执⾏S操作,然后再判断,…else结构中,语句1与语句2都可以是空语句。分支结构:分支结构又被称作“条件结构”或者“选择结构”,根据是否满足给定条件而从两组或者多组操作中选择一种进行执行。顺序结构:各操作是按先后顺序执行的,是最简单的一种结构,这个结构是默认的。

2024-12-09 18:53:16 529

原创 初入C语言

初学C语言小分享

2024-11-25 20:55:59 430

原创 初学liunx(二)

本指令针对于/mnt/hgfs/code/Study/a.txt文本文件对于当前用户可读可写可执行、同组用户可读可写可执行、其他用户可读可写可执行。把几个用户归在一起,这样的组被称之为用户组,规定文件所属用户组的权限可以使 该组所有成员拥有这些权限。对于计算机来论是通过用户名的区别来识别不同的使用者,而liunx中可以将用户分成三类用户:系统用户、root用户、普通用户。如果在新建用户的时候没有指定用户组,就会创建一个与用户名相同的组名,并让新用户属于这个组。最小内存是以字节(Byte)为单位。

2024-11-22 11:19:19 864

原创 初学linux

反引号``是命令替换,命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存,在适当的地方输出。双引号""则对于双引号""内的参数替换($)和命令替换(``)是个例外。单引号''剥夺了所有字符的特殊含义,单引号''内就变成了单纯的字符,。补充说明:需要查找的字符串可用' '(单引号)引起来。tail:查看文件尾部(默认10行)ls:罗列当前目录中的文件和子目录。pwd:显示当前工作目录的路径。若aa目录下无其他目录则删除aa。mkdir:创建目录。创建一个名为aa的目录。rm:删除目录/文件。

2024-11-20 12:42:58 856 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除