- 博客(31)
- 收藏
- 关注
原创 嵌入式学习第三十一天--树
树:n(n>=0)个结点的有限集合。n = 0 ,空树。在任意一个非空树中,1,有且仅有一个特定的根结点2,当n>1 时,其余结点可分为m个互不相交的有限集合T1,T2,T3.。。。。Tm,其中每一个集合又是一个树,并且称谓子树。结点拥有子树的个数称谓结点的度。度为0的结点称谓叶结点。度不为0,称谓分支结点。树的度数是指,这棵树中,最大的结点的度数,称谓树的度数。树的深度或高度,从根开始,根为第一层,根的孩子为第二层。树的存储,顺序结构,链式结构。
2025-04-02 21:15:47
292
原创 嵌入式学习第三十天--队列
队列练习:创建三个线程,对应三个任务,在主线程中输出要进行的操作,打印相应的输出。练习:找出指定目录下出现#define的文件,打印当前文件的路径。队列是只允许在一段进行插入,而在另一端进行删除操作的线性表。允许插入的称谓队尾,允许删除的一端队头。常用操作,入队,出队。
2025-03-31 21:12:08
290
原创 嵌入式学习第二十八天--顺序栈
栈是限定仅在表尾进行插入和删除操作的线性表。先进后出、后进先出栈顶:允许操作的一端栈底:不允许操作的一端入栈,出栈。顺序栈 链式栈30+2\51.创建 CreateSeqStack2.销毁 DestroySeqStack3.判断是否为空栈 IsEmptySeqStack4.判断是否为满栈 IsFullSeqStack5.压栈 PushSeqStack6.出栈 PopSeqStackseqstack.hseqstack.cmain.c。
2025-03-24 21:50:16
437
原创 嵌入式学习第二十七天--线性表的链式存储
为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。把存储元素信息的域叫数据域,把存储直接后继位置的域叫指针域。这两部分信息组成数据元素ai的存储映像,叫结点(Node);简单的来说,就是将原来单链表中最有一个元素的next指针指向第一个元素或头结点,链表就成了一个环,头尾相连,就成了循环链表。,线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。查找 顺序表O(1)
2025-03-22 17:39:23
355
原创 嵌入式学习第二十六天--数据结构
相互之间存在一种或多种特定关系的数据元素的集合。逻辑结构集合,所有数据在同一个集合中,关系平等。线性,数据和数据之间是一对一的关系树, 一对多图,多对多物理结构(在内存当中的存储关系)顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。struct Per 数据元素char name;//数据项int age;char phone;//数据对象。
2025-03-22 08:00:00
551
原创 嵌入式学习第二十五天--网络 服务器(二)
/epoll文件描述符的控制接口。这些缺点促使了更高效的 I/O 多路复用机制(如 poll 和 epoll)的出现,尤其是在高并发场景下,epoll 成为了更优的选择。返回的 fd_set 是一个位图,应用程序需要对所有监听的文件描述符逐一调用 FD_ISSET 来判断是否就绪。select 内部会遍历从 0 到 nfds-1 的所有文件描述符,判断每个描述符是否是关心的,并检查是否有事件发生。epoll_ctl控制对指定描述符fd执行op操作,event是与fd关联的监听事件。
2025-03-21 20:22:02
414
原创 嵌入式学习第二十四天--网络 服务器
web 服务器,apache--》cgi,php,perl,IIS--》asp,NGIX,Nlighty。//clear --- 将fd从 set中清除。/---client1(子进程/线程)-- | --->B。server <--------------->|-----client2(子进程/线程)-- | --->D。\---client3(子进程/线程)-- | --->F。//将fd设置(添加)到set中。//第1路IO fgets --收键盘 --- 打印出来 --- stdin 能不能读?
2025-03-10 21:38:27
688
原创 嵌入式学习第二十三天--网络及TCP
内核空间] [传输层tcp] [传输层tcp][内核空间] 传输层 [网络协议栈] //内核已经实现好的 属于网络功能。[物理层] -----------------> [物理层]PF_UNIX == AF_UNIX ==>单机程序。SOCK_STREAM 流式套接字 ===》TCP。
2025-03-04 20:50:51
1646
原创 嵌入式学习第二十二天--进程间通信
1.同一主机linux下通信方式:a.传统的进程间通信方式管道 --- 进行数据传输的"管道"无名管道有名管道信号 ---b.system v 进程间通信(posix 进程间通信)共享内存 (进程间 效率最高的通信方式)消息队列信号量2.不同主机socket --- 网络的方式实现3.进程间 实现 通信的 底层原理:进程间空间独立如果要实现进程间通信,必须借助于内核(内核也是在内存中运行的)
2025-02-26 20:28:29
552
原创 嵌入式学习第二十一天--线程
线程:1.线程 --- 轻量级的进程2.线程组成线程tid程序计数器其它寄存器栈3.创建线程tid属性 -- 可结合 可分离 ---决定最终资源的回收方式线程执行函数 --- 这是体现线程任务的部分arg -- 传给线程执行函数的参数4.线程退出b.return ---线程执行函数中d.exit5.线程退出状态值eg:多线程拷贝文件int fd_s;int fd_d;int size;int len;
2025-02-24 20:59:13
857
原创 嵌入式学习第二十天--进程(二)
1.进程执行exec 函数exec v -- 字符串指针数组中exec l p -- 要执行的文件到系统的环境变量PATH中去寻找exec l e -- 可以给要运行的程序传递一个环境变量2.进程操作文件fork 之前打开 (父子进程共用一个offset)fork 之后打开 (父子进程各自用自己的offset)3.进程结束exit特殊进程孤儿进程僵尸进程4.收尸操作wait进程的终止:8种情况。
2025-02-21 21:32:15
654
原创 嵌入式学习第十九天--进程
进程:进行中的程序程序的一次执行过程 (内存 + CPU)程序的实例a.outmain.c --- 源程序(程序源代码)a.out --- 可执行程序./a.out程序 ----加载到内存----> 进程静态 动态硬盘 内存内存 空间 ---- 掉电丢失。
2025-02-19 20:49:25
918
原创 嵌入式学习第十八天--fileio(二)
功能:获得文件的状态信息参数:@pathname //需要一个文件名字@statbuf //用来保存文件的属性信息返回值:成功 0失败 -14字节32位练习:实现statFile: ls.cBirth: -
2025-02-19 11:25:29
974
原创 嵌入式学习第十七天--fileio
缓存 操作对象 具体操作标准IO 全缓存/行缓存 文件指针(流指针)FILE * 1.打开 --fopen(库函数) 2.读写3.关闭fclose4.定位空洞文件文件IO 不带缓存 文件描述符 (整数) 1.打开 --open。
2025-02-18 22:36:30
780
原创 嵌入式学习第十四天--shell
bin/bash //编辑文件 shebang2.编写脚本 //#!/bin/bash3.chmod +x XX.sh //给执行权限4. ./XX.sh //执行文件注意:# --- 第一行 不要写注释 这些/bin/bash --- 表示当前这个shell脚本用哪个shell来解释执行。
2025-02-13 21:45:24
976
原创 嵌入式学习第十三天--结构体
struct 结构体名成员列表(1).struct 表示 这是一个结构体类型(2).结构体名 标识符(3).成员列表 这个结构类型中要描述的具体数据一般,都是变量定义的形式eg:int sno;int age;//此时 表示 定义了一个 学生信息 的 结构体类型//数据类型 --- 用户自定义//定义了一个学生类型的结构体变量1 是结构体类型名2 是变量名//变量的初始化 和 赋值//
2025-02-10 19:28:22
695
原创 嵌入式学习第十二天--指针函数,快速排序,预处理
define 标识符 字符串#define 宏名 宏值表示,定义了一个宏 (符号),而这个符号 代表的值 就是100#define 宏名(参数) 宏值说明:1. 预处理阶段,只做文本原样替换2. 宏 就是用 宏值 将 宏名 原样替换3. 用途当作常量来用好处,可以做到 一改全改,方便操作4. 宏名符合标识符命名规则宏名,一般都是大写 --- 主要是为了和普通变量名区分5. 程序中 处于 ""中的 宏名 不会被替换。
2025-02-07 21:22:49
502
原创 嵌入式学习第十一天--指针(二)
const char *p //const 此时是限定基类型的 --表示将基类型限定为只读。// p不能被修改 *p不能被修改。//准确说,是限定了通过 *p 的方式 访问到的基类型为只读。const char * p //const -- 限定为只读。char * const p //限定p为只读,表示不能修改p中值。字符串常量区 --- 常量区的数据,只能读,不能改。char const * p //const 限定的是基类型。//不能修改p的指向。//'\0' n也在控制拷贝过程。
2025-02-06 20:13:05
598
原创 嵌入式学习第十天--指针
基类型 * 指针变量名;(1) 基类型 ---- 基类型表示 地址(指针) 指向的目标空间存储的数据的类型(2) * ---- 表明此时定义的变量 为指针类型的变量(3) 指针变量名 --- 是一个标识符 (标识符符合命名规则)int a = 10;&aint * p;//定义了一个指针变量 p//指针变量p要指向的是 int型的一块空间//说 p 指向了 aeg:将n加一3 {4 *p=*p+1;
2025-01-22 20:38:02
929
原创 嵌入式学习第九天--函数(二)
形参 --- 二维数组形式的形参,行数的形参 实参 --- 二维数组数组名,行数 eg: 定义一个二维数组,找出最大值 运行结果: 形参 --- 字符型数组形式的形参 //不需要数组长度--- 因为字符型一维数组中主要存放的是 字符串数据 实参 --- 数组名 //因为字符串数据,本身有结束标志,此时不需要数组长度 int Strlen(char s[]) { //字符串的结束标志
2025-01-22 06:45:00
1477
原创 嵌入式学习第八天--函数
例子:ATM机?需求出发 --- 提供哪些功能ATM机验 证取钱 存钱 查询 转账 修改 退出提示菜单功能选择取钱提示输入金额确认一下金额驱动点钞机给到用户//返回值类型类型标识符 函数名(形式参数) //函数头 head//函数体 -- body声明部分语句部分函数头:类型标识符 --- 写数据类型的 --- 表示的函数处理完之后,要带出的结果的类型 ---
2025-01-21 19:49:26
1070
原创 嵌入式学习第七天--二维数组
类型说明符 数组名 [常量表达式][常量表达式];(1).类型说明符 ---表示二维数组中数据元素的类型(2).数组名 ---标识符(3).[常量表达式][常量表达式] //第1维 第2维行 列//表示定义了一个包含了5组6个int型数据的数组//表示定义了一个包含了5行 6列 int型数据的数组//数组 是一种数据类型//score5 ---数据类型 int[6]
2025-01-20 22:30:16
1057
原创 嵌入式学习第五天--选择程序结构设计与循环控制
C语言提供三种逻辑运算符逻辑与:&& 相当于其他语言中的and逻辑或:|| 相当于其他语言中的or逻辑非:!相当于其他语言中的nota&&b 一真则真a||b 一假则假!a 真假相对。
2025-01-16 22:37:07
897
原创 嵌入式学习第四天--输入输出
输入输出总体流程:从输入设备(键盘,鼠标,扫描仪等)向计算机输入数据 --->信息寄存在计算机 --->CPU处理后向外部输出设备输出数据[内存]c语言中用到的输入输出的功能 , 并不是c语言本身的一部分用到了别人写好的输入输出的功能(函数)stdio //标准输入输出函数库中的函数标准C库(函数库)中一部分#include<stdio.h> 提供的函数:getchar / putchar (单个字符输入输出)
2025-01-15 20:31:10
1175
原创 嵌入式学习第三天--运算符以及表达式
左值: 可以被定位的 lvalue --- localtionalble --- 变量。左值 能够放在 = 左边的 称为 左值 --- 变量。右值: 不能被定位的 --- 常量 ,表达式。//表达式的结果 --就是 左运算数的值。double/float => int ---- 精度丢失。'\n' //一个字符 ---- 换行效果 --- 换行符。const //constant ---常量。编译时 出错 --- 语法问题。运行时 出错 --- 逻辑问题。
2025-01-14 20:25:50
1003
1
原创 嵌入式学习第二天--数据类型
1 | 000 0000 0000 0000 0000 0000 0000 0000 //原码 -0 (规定: 最高位 既充当 符号位 又充当数值位)printf("a = %d\n",a);1 | 000 0000 0000 0000 0000 0000 0000 0000 //最小值 -2^31。1 | 000 0000 0000 0000 0000 0000 0000 0000 //补码。0000 0000 0000 0000 0000 0000 0000 0000 //数值位。
2025-01-14 01:30:00
481
原创 嵌入式学习第一天--Linux基础
/如果name代表的目录名, 存在,此时将 dir_s 复制一份 放到为 name的目录中。cp 1.txt dir //目标 如果是个目录名,则将1.txt 复制一份 到 dir 目录中。mv 1.txt dir //目标文件 如果是个目录文件 ,则将1.txt 移动到 dir中。mkdir 1/2/3 -p //多级目录 指定选项 -p parent。cd /home/linux //以/作为所在位置为起点 --- 绝对路径。//目录文件 , 加上 -r 表示递归删除。
2025-01-13 20:28:28
284
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅