自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux-数据结构-哈夫曼树-哈希表-内核链表

哈夫曼树是一种带权路径长度最短的二叉树。给定一组权值,将这些权值作为叶子节点的权值构造一棵二叉树,若该树的带权路径长度(WPL)达到最小,则称这样的二叉树为哈夫曼树。

2025-03-23 16:25:20 913

原创 Linux-顺序队列练习-链式队列-树

【2】.h文件的查找函数【3】主函数复制,及递归函数【4】sem 信号量用于同步,队列收,子进程就接受【5】

2025-03-21 17:33:31 1235

原创 Linux—栈和队列

1.队列实现发送命令。2.栈计算运算表达式。

2025-03-20 17:53:14 138

原创 Linux-数据结构-双向链表与栈

传入二级指针的意义:

2025-03-19 18:45:05 397

原创 Linux-数据结构-单链表练习-双链表

(1)定义存放数据的结构体,在每次向里面存放数据时候需要清空(2)对字典进行切割空格切割字母,再从剩余里切割到解释,这里windows的txt文件下,以\r\n结尾,切除\r保留\n(3)存放进结构体中(4)插入链表,插入函数(5)从键盘获得要查询的单词,\n读入需要消除(6)进行查找。

2025-03-18 19:03:31 721

原创 Linux-数据结构-线性表-单链表

解决顺序存储的缺点,插入和删除,动态存储问题。

2025-03-17 19:16:45 1091

原创 Linux-数据结构-线性表-顺序表

相互之间存在一种或多种特定关系的数据元素的集合。(1)逻辑结构集合,所有数据在同一个集合中,关系平等。线性,数据和数据之间是一对一的关系树, 一对多图,多对多(2) 物理结构(在内存当中的存储关系)顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。

2025-03-17 15:22:51 1392

原创 HTML网上商城项目(sqlite3)

【1】结构说明:声明文档类型,告诉浏览器这是一个 HTML5 文档。<html>:根元素,包含整个 HTML 文档的内容。<head>:头部区域,包含元数据(如字符集、视口设置、标题、样式表链接等)。<body>:主体区域,包含用户可以看到的所有内容(如文本、图片、链接等)。

2025-03-13 17:45:08 1360

原创 IO多路复用实现并发服务器

select 的调用注意事项在使用 select 函数时,需要注意以下几个关键点:1. 参数的修改与拷贝readfds 等参数是结果参数 :select 函数会直接修改传入的 fd_set(如 readfds、writefds 和 exceptfds)。为了保留原始监听集合,通常会定义一个备份集合(如 allread_fdset),并将它的拷贝传递给 select。

2025-03-09 15:28:47 954

原创 天气查询项目(cJOSN)

JSON对象是一个无序的"名称/值"键值对的集合:以"“开始,以”"结束,允许嵌套使用;每个名称和值成对出现,名称和值之间使用""分隔;键值对之间用""分隔在这些字符前后允许存在无意义的空白符;对于键值,可以有如下值:一个新的json对象数组:使用"“和”"表示数字:直接表示,可以是整数,也可以是浮点数字符串:使用引号表示字面值:false、null、true中的一个(必须是小写)示例如下:"name""age"22"weight"55.5。

2025-03-09 13:53:57 915

原创 计算机网络-服务器模型

一.服务器模型一.服务器模型1.支持多客户端访问//单循环服务器socketbindlistenwhile(1)acceptwhile(1)recv/sendclose注:该模式remvform为阻塞态,服务器将等待接收数据2..支持多客户端同时访问 (并发能力)socketbindlistenwhile(1)//出错处理while(1) //负责 与 客户端通信的recv/sendclose。

2025-03-07 20:54:45 1012

原创 (1)udp双向通信(2)udp实现文件复制(3)udp实现聊天室

(1)父进程从键盘获取字符串(2)输入quit,发送结束子进程信号(3)exit退出父进程(1)子进程接受信息(2)getppid用于退出父进程。

2025-03-04 20:05:21 820

原创 Linux-计算机网络.udp

addrlen //src_addr 大小---使用方式与accept中的addrlen使用方式一样。recv(,0) /send(,0) ///TCP 常用套机字读写。recvfrom()/sendto() ///UDP 常用套接字读写。read()/write () ///通用文件读写,可以操作套接字。addrlen //dest_addr的大小。dest_addr //要发送到的目的地址。@src_addr //源地址。为len字节的数据到指定的buff内存中。

2025-03-03 20:34:05 1552

原创 Linux——计算机网络

整个互联网非常复杂,涉及到很多知识,学习互联网不能一蹴而就,所以这里从最简单的家庭网络开始学习:家庭网络一般是通过Modem拨号上网,然后通过家庭路由器,将网络连接到家里所有的可以联网的设备。家庭网络中,所有设备联网方式完全相同,所以只需要学习一个设备和其他设备之间如何通讯,即可理解家庭网络。这里我们通过telnet和百度两个网络应用,来研究A电脑如何跟其他设备进行通讯:telnet(远程登录)本地计算机B搞清楚计算机A如何跟局域网内部设备通讯。2.百度搞清楚计算机A如何跟局域网外部的设备通讯。

2025-03-01 13:54:09 2253

原创 Linux——mplayer项目

【2】赋值给current_index索引,用于播放选择歌曲.current_index范围是0-playlist_size-1,所以在输入基础减1。【1】如果输入1时有父进程在运行,说明此时有子进程运行,歌曲在播放,停止子进程并使pid=-1;【2】case3需要结束播放,停止子进程结束,并且将pid=-1.这样如果没有播放会跳过功能,命令不会滞留在管道.【3】如果没有播放音乐时使用停止命令会使命令滞留在管道里,在播放音乐会停止。【2】运行playlist中索引为current_index的曲目。

2025-02-27 17:34:06 1065

原创 进程间通信-信号,共享内存

xxxget()函数 //建立了 key <==>ipc对象之间的一一对应的关系。【3】key --- IPC_PRIVATE //创建一个key对应ipc对象 ---- 主要用于亲缘关系进程间。[用户空间] ````[key]``` //name ---fifo。sig 当前程序要发送的信号编号 《=== kill -l。中断(信号)处理程序 --- 负责对该中断(信号)做出反应的。//signo //参数 ---表示 接收到的信号的编号。

2025-02-25 19:39:24 745

原创 unxi-进程间通信

=>fd 是固定写端。==>fd 是固定读端。pipefd[1] ==>无名管道的固定写端//1 -- 标准输出。半双工 ---发送端 和 接收端 同一个时刻之后有一个起效 ---对讲机。参数:pipefd[0] ==>无名管道的固定读端//0 -- 标准输入。有名管道 ===》fifo ==》可以给任意单机进程通信(同一主机内)双工 ---发送和接收可以同时进行 --手机,电话。(1).创建有名管道 -- 类似 文件 (管道文件)单工 ---发送端 接收端固定 --- 广播。

2025-02-24 20:44:26 1068

原创 Unix——线程

2.pthread_cleanup_pop(0) //pthread_exit() //退出动作会导致 触发。1. pthread_detach //将指定的线程设置为分离状态 --- 那么资源的回收将自动完成。2. pthread_exit //主线程调用的时候,此时不会结束进程,只是结束了主线的执行流。1. pthread_exit //带出的是 保存了 退出状态值 的空间的地址。一般是NULL表示默认锁 //一般的锁 ,读写锁。定义互斥锁 ==》初始化锁 ==》加锁 ==》解锁 ==》销毁。

2025-02-23 13:39:45 950

原创 Unix-进程和线程

start_routine ---线程执行函数//线程回调函数 --- 提现线程任务执行的部分。线程(轻量级的进程): 更侧重于 成为一个 执行单位 ---- 调度执行的最小单位。@attr --- 线程属性 //默认属性 NULL --可结合性。进程(重量级的进程): 更多侧重于 成为 资源分配的单位 ---- 资源分配的基本单位。程序计数器 (program counter) //寄存器 --- 8字节。等待所有子进程 ---当前进程的所有进程。

2025-02-21 21:12:21 772

原创 Unix-进程

str 表示要分割的字符串 //如果填写NULL 表示接着原来的字符串继续分割。vector //向量 --- 后面的参数 以字符串指针数组的形式组织。@path //说明 --要执行的可执行文件的名字 (包含路径)//which 命令名 ---查看命令在系统中位置。list //列举 --- 后面的参数逐个列举出来。(主要用来 --- 回收子进程的资源----避免僵尸态)//看要执行的文件 是否有需要的参数。成功 返回结束了的子进程的pid号。@arg0 //执行文件的名字。

2025-02-20 20:55:20 1046

原创 进程-fork函数

全局区|data/bss data --- 已经初始化了的全局变量或静态变量 bss ---未初始化。bash(2590) bash() + exec()//执行了一个与bash完全不用的程序。bash(7765) (a.out)bash(7766) //运行了一个 a.out //exec。ps -eLf | grep a.out //查看a.out 信息 //可以观察到 PID PPID。init进程(1) //UNIX环境高级编程(init -- systemd)

2025-02-19 19:11:51 462

原创 Linux-文件IO(2)

根据gid到/etc/group文件中解析组信息。@statbuf //用来保存文件的属性信息。根据用户id到/etc/passwd文件下解析获得。功能: 获得/etc/passwd中相关的信息通过name。根据用户名到/etc/passwd文件下解析获得。创建一个链接向oldpath文件的新符号链接文件。根据组名到/etc/group文件中解析组信息。@pathname //需要一个文件名字。功能,从/etc/group,获取相关组的信息。oldpath:被链接向的文件的路径。

2025-02-17 20:11:04 606

原创 【无标题】

在我们桌面上的图标只是一个快捷方式,它真正的运行路径是在其他的磁盘中。我们的Linux系统中也存在类似的形式,在Linux中的链接形式有两种,一种叫做软链接,一种叫做硬连接。并且他们的inode号不一样。由上面接口可以知道,我们新建的硬链接文件,只是给源文件起了一个别名,他们共用同一个inode号。:对原文件删除,会导致软链接不可用,因为软连接存储是路径,而硬链接不受影响。3、然后通过inode表中的保存的数据区的指针,读取我们相应数据区的内容。当我们查看一个文件的时候,linux系统的运行过程如下图。

2025-02-17 13:58:37 233

原创 Linux-文件IO

c.设备文件 ---- 文件IO ///dev/video0 ----> fopen();offset >= 0 //可以 --- 创建 空洞 文件。offset < 0 //不能超过这个文件开头。O_TRUNC //文件存在 截短为0。SEEK_SET //相对于文件开头的。SEEK_END //相对于文件末尾。O_CREAT //文件不存在 创建。文件IO --- 安全性 操作的是硬件 ---文件IO。b.umask (掩码) //二进制位 --- 遮住。

2025-02-16 14:22:32 2288

原创 Linux-文件基本操作1

offset >= 0 //可以 --- 创建 空洞 文件。offset < 0 //不能超过这个文件开头。offset<0 //不能超过这个文件开头。time_t time(time_t *t) //可以获得一个时间的秒数。SEEK_SET //相对于文件开头的。SEEK_END //相对于文件末尾。./a.out < main.c //< 表示输入重定向。./a.out > main.c //> 表示输出重定向。3.fread/fwrite //二进制读写函数 按对象读写。

2025-02-14 18:39:42 864

原创 Linux-文件基本操作

"123" --- 文本文件 --- '1''2''3' //每个数据是按照固定的编码格式存放的 -ASCII。成功 FILE*指针 //文件指针 流指针 --- 从程序上讲,FILE *指针就代表打开的这个文件。stderr //标准出错 --- 屏幕 --- 可以专门把错误信息输出到 stderr。(1).处理缓冲区分配 (缓存--提高效率 --- 慢速 快速)@pathname --- 要打开的文件名 //字符串形式的名字。@c //要输出的字符 ---ascii码值。

2025-02-13 18:45:41 920

原创 Shell-基本命令与运算符

b 块设备文件 block test -b /dev/sda --- 硬盘。/bin/bash --- 表示指定当前shell脚本的解释器为 /bin/bash 这个解释器。/bin/bash --- 表示当前这个shell脚本用哪个shell来解释执行。/bin/bash //编辑文件 shebang。10.//条件的生成 --test的命令 //注意: test 执行结果为真 0。

2025-02-12 19:08:47 859

原创 C语言-结构体

192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值。//s是struct stu 这个类型的别名。无符号 --- 最高位补0 //逻辑右移。所谓"枚举"是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值。看是有符号 --- 最高位补符号位 //算术右移。枚举 --- 将变量的可能值(常量值) 一一列举出来。//使用方式 类似 结构体 --- 也是构造类型。

2025-02-10 18:55:53 1751 2

原创 C语言-结构体

1.free本身表示将空间释放,就是将空间交还给操作系统,操作系统之后,可以自由安排。//64位的平台 ---- 64位平台 整个结构体对齐, 按成员中最大的对齐。@size ---说明,要申请的空间的大小。//此时 表示 定义了一个 学生信息 的 结构体类型。1.结构体成员的对齐 --- 放在自然边界 (偶数位置)2.结构体整体的对齐 --- 以结构体中最大的成员对齐。//结构体类型 定义 --- 定义(从无到有) 声明()一般,都是变量定义的形式。//如果没有超过4字节的,则按成员变量中最大对齐。

2025-02-08 18:50:33 1163

原创 指针+函数 指针+数组

int cmpFunc(const void *a, const void *b) //a 和 b 获得到是 要比较的数组中的两个元素的地址。int (*compar)(const void *, const void *) //指向一个比较规则的 函数。//是带了一个int型返回值 和 两个int型形参的这样的函数的指针。//是带了一个int型返回值 和 两个int型形参的这样的函数的指针。int (*p)(int a,int b) // C语言正确的语法形式。// 函数(的)指针。

2025-02-07 20:32:09 447

原创 C语言-预处理

include "文件名" //首先在当前路径下寻找要包含的文件,找不到再到系统默认路径下寻找。|--add.h //一部分是 对外的函数声明 一部分时自己的点c需要用到的头文件等内容。人类语言 --->编程语言(C语言)---汇编语言--->机器语言(01010)宏名,一般都是大写 --- 主要是为了和普通变量名区分。7. 宏替换过程中,存在宏的副作用 ---- 文本的原样替换。|--add.c //自己的点c通常会包含自己的点h。条件编译: //也是文本替换 --- 符合条件的文本。

2025-02-07 20:07:24 526

原创 指针-操作字符一维数组(附快速排序)

const限定,指针实现strcpy,strcat,strcmp

2025-01-23 19:02:20 765

原创 指针实现排序和查找

排序和查找

2025-01-23 10:34:11 100

原创 c语言-指针

指针的基础定义与基本运用

2025-01-22 19:21:50 834

原创 近期函数,递归代码集合

5.一位数组求字符串长度(函数)6.一位数组中打印字符串(函数)4.二维数组中比较字符串大小。1.strcat的函数实现。2.strcmp的函数实现。3.strcpy的函数实现。

2025-01-21 20:26:42 165

原创 函数-基础(数组字,符串) 递归

形参 --- 字符型数组形式的形参 //不需要数组长度--- 因为字符型一维数组中主要存放的是 字符串数据。实参 --- 数组名 //因为字符串数据,本身有结束标志,此时不需要数组长度。(2)定义函数 --- 实现函数功能 --- function。形参 --- 字符型二维数组形式的形参,行数的形参。形参 --- 数组形式的参数,数组长度的参数。形参 --- 二维数组形式的形参,行数的形参。实参 --- 二维数组数组名,行数。实参 --- 数组名 , 数组长度。

2025-01-21 18:59:19 331

原创 C语言-函数基础

void printArray(int *a)//本质上 --数组传参 只是把数组所在空间的首元素地址传过去了。类型标识符 --- 写数据类型的 --- 表示的函数处理完之后,要带出的结果的类型。函数名 --- 体现函数功能 --- 命名规则 符合标识符命名规则。//数组元素 做函数参数 --- 和普通变量做函数参数 用法一样。函数的形参 --- 数组形式形参,数组长度的形参。形式参数 --- 用来接受 传递给函数中的数据的。//int a,b;//处理数据 -- 函数体 对应的代码。

2025-01-20 21:42:10 1055

原创 排序和查找的函数实现方式

数组的冒泡,选择,插入,数组的逆序,数组的查找

2025-01-20 19:53:50 105

原创 冒泡,选择,插入排序和二分查找

1.插入排序2.冒泡排序3.选择排序4.二分查找。

2025-01-20 11:24:20 118

原创 整型和字符串的二维数组

--->int[4]a[]//一维数组(int[4])的一维数组[3]int[6]score[5]//表示定义了一个一维数组。

2025-01-18 21:17:28 855

c语言存储和运算基础练习题

适用c语言初学者,存储和运算基础

2025-01-16

空空如也

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

TA关注的人

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