自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux软件高级编程-数据库--day15

1.数组、链表、文件、数据库。

2024-03-13 09:08:59 326

原创 Linux软件高级编程-网络--TCP通信--day14

4.select只能工作在水平触发模式(低速模式),无法工作在边沿触发(高速模式)3.poll只能工作在水平触发模式(低速模式),无法工作在边沿触发(高速模式)4.UDP是无连接的、TCP有连接的、UDP是以数据包形式传输、TCP是以流的方式传输。events:要监听的事件 POLLIN:是否可读 POLLOUT:是否可写。2.确认号:已经确认接收到的数据的编号(只有当ACK为1时,确认号才有用)1.select监听的集合中的文件描述符有上限限制。3.select必须轮询检测产生事件的文件描述符。

2024-03-11 20:17:44 796

原创 Linux软件高级编程-网络--TCP通信--day13

backlog:允许等待的尚未被处理的三次握手请求的最大个数。addrlen:存放IP地址大小空间首地址。address:存放IP地址的空间首地址。addr:目的地址存放空间首地址。sockfd:套接字文件描述符。sockfd:套接字文件描述符。addrlen:IP地址的大小。sockfd:套接字文件描述符。socket:套接字文件描述符。buf:发送数据空间首地址。flags:属性默认为0。buf:存放数据空间首地址。len:最大接收数据的长度。sockfd:文件描述符。len:发送数据的长度。

2024-03-08 09:07:59 437

原创 Linux软件高级编程-网络--day12

收端: socket -> bind -> recvfrom -> close。3.UDP是不安全不可靠的,连续且快速的传输数据容易产生数据丢失。addrlen:存放接收到IP地址大小空间的首地址。src_addr:存放IP地址信息的空间首地址。在套接字上绑定一个IP地址和端口号。addrlen:绑定IP地址的长度。addr:绑定IP地址空间首地址。ip.addr == IP地址。sockfd:套接字文件描述符。sockfd:套接字文件描述符。buf:存放数据空间首地址。打开wireshark抓包工具。

2024-03-08 09:00:46 362

原创 Linux软件高级编程-网络--day11

功能:创建一组信号量参数:key:IPC对象名字nsem:信号量的个数返回值:成功返回信号量ID失败返回-1。

2024-03-05 19:44:48 1563

原创 Linux软件高级编程-消息队列、共享内存、信号灯--day10

1.IPC对象: 内存文件 1.ipcs 查看系统重的消息队列、共享内存、信号灯的信息 2.ipcrm 删除消息队列、共享内存、信号灯 ipcrm -Q/-M/-S key ipcrm -q/-m/-s 消息队列ID/共享内存ID/信号灯ID 3.操作流程: 创建消息队列 -> 发送消息 -> 接收消息 4.函数接口: 1.ftok ke

2024-03-04 19:48:47 463

原创 Linux软件高级编程-进程间的通信--day9

写入数据时,如果管道中没有存满(64k),则直接写入,管道中如果存满,则阻塞等待直到有数据读出,才能继续写入。读取数据时,如果管道中有数据直接读取,管道中没有数据阻塞等待直到有数据写入读出,继续向后执行。读取数据时,如果管道中有数据直接读取,管道中没有数据不阻塞等待直接向下执行。handler:信号的处理方式。signum:信号的编号。信号用来实现内核层和用户层信息的交互,也可以实现进程之间的通信。打开管道文件 -> 读写管道文件 -> 关闭管道文件。按照系统默认的方式处理。按照自定义方式处理信号。

2024-02-28 19:55:16 798

原创 Linux软件高级编程-线程--day8

1.pthread_mutex_trylock 替代 pthread_mutex_lock。0 一个进程中的所有线程间共享。只能解决资源竞争的问题,无法同步代码(没有先后执行的顺序关系)同一时刻临界资源不能同时执行,只能执行其中一个临界资源代码。attr:互斥锁的属性(默认为NULL)PTHREAD_CREATE_JOINABLE 加入属性(默认)CPU最小的一次不能被任务调度打断的操作称为原子操作。多线程操作互斥锁,导致多个线程均无法向下执行的状态称为死锁状态。mutex:互斥锁空间首地址。

2024-02-27 19:53:35 1703

原创 Linux软件高级编程-线程基本概念--day7

一个线程异常结束会导致进程异常结束,进程异常结束,该进程内所有线程任务均 无法向下进行。线程:线程是一个轻量级的进程,位于进程空间内部每一个进程可以创建多个线程。进程空间是独立的,没有共享空间,通信实现比较复杂。进程没有共享空间,不存在资源竞争的问题。与进程调度是一样的--------宏观并行,微观串行。一个进程异常不会影响进程空间。多进程需要在不同的空间中切换。线程独占栈空间,文本区、数据段和堆区与进程共享。retval:存放线程结束状态空间的首地址。

2024-02-26 18:09:21 611

原创 Linux软件高级编程-进程基本概念--day6

进程的父进程先结束,此时该进程称为孤儿进程,被系统进程收养,进程再结束时,会被系统进程回收进程空间。一个进程在运行时,操作系统会为该进程分配0 -- 4G虚拟内存空间,分为文本段、数据段、系统数据段。功能:创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程称为新进程的父进程。父进程调用fork创建子进程,子进程拷贝父进程的文本段、数据段、系统数据段。3)通过MMU内存映射单元,单一个进程执行时,将物理地址中的数据加载到虚拟地址中运行。进程代码执行结束,空间没有被回收,称为僵尸进程。

2024-02-25 16:49:32 1808

原创 Linux软件高级编程-day5

SEEK_CUR 文件当前位置。SEEK_SET 文件开头。SEEK_END 文件末尾。X_OK 检测是否拥有执行权限。R_OK 检测是否拥有读权限。W_OK 检测是否拥有写权限。检测调用函数的程序对文件是否拥有指定权限。F_OK 检测文件是否存在。重新设定文件描述符的偏移量。成功返回包含目录项信息的空间首地址。r: 目录中是否能够查看文件。w: 目录中是否能够新建文件。pathname:文件路径。pathname:文件路径。读到文件末尾返回NULL。

2024-02-20 20:40:54 331

原创 Linux软件高级编程-day4

SEEK_CUR 文件当前位置。SEEK_SET 文件开头。SEEK_END 文件末尾。X_OK 检测是否拥有执行权限。R_OK 检测是否拥有读权限。W_OK 检测是否拥有写权限。检测调用函数的程序对文件是否拥有指定权限。F_OK 检测文件是否存在。重新设定文件描述符的偏移量。成功返回包含目录项信息的空间首地址。r: 目录中是否能够查看文件。w: 目录中是否能够新建文件。pathname:文件路径。pathname:文件路径。读到文件末尾返回NULL。

2024-02-19 21:44:42 312

原创 Linux软件高级编程-day3

从文件描述符fd对应的文件中读取count个字节存放到buf开始的空间中。O_TRUNC 文件存在截断(清0)向fd对应的文件中写入buf指向的count个字节。O_CREAT 文件不存在创建。新生成的文件描述符总是为尚未被使用的最小的非负整数。O_ASYNC 异步IO。2.文件IO是系统调用,是Linux内核中的函数接口。成功返回文件描述符(很小的非负整数)buf:存放数据空间的首地址。打开文件并且获得文件描述符。将fd对应的文件描述符关闭。count:写入的字节数。

2024-02-18 21:44:01 351

原创 Linux软件高级编程-day2

从流中读取nmemb个对象,每个对象size个字节,存放到ptr指向的空间中。向流中写入nmemb个对象,每个对象size字节大小,在ptr指向的空间中。将格式化字符串输出到stream指向的流中。ptr:存放读取内容空间首地址。ptr:存放数据空间的首地址。size:每个数据对象的大小。练习:编写程序统计文件的行数。nmemb:数据对象的个数。nmemb:读取对象的个数。stream:文件流指针。stream:文件流指针。stream:文件流指针。size:读取对象的大小。从流中读取格式化的字符串。

2024-02-07 10:39:00 262 1

原创 Linux软件高级编程-day1

4.DownLoad Form 选择 "Others" -> "China" -> "mirrors.aliyun.com"w 只写 文件不存在创建,文件存在将文件内容清空,只写打开。w+ 写读 文件不存在创建,文件存在将文件内容清空,写读打开。r+ 读写 文件不存在报错,文件存在读写打开。a 追加只写 文件不存在创建,文件存在追加只写打开。

2024-02-03 19:50:48 468 1

原创 结构体(2)-day16

/连续性,有序性,单一性 数据组织形式 ---会决定使用数据的算法。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。共用体用的数据最终存储的 --- 应该是最后一次给到的值。初始化 --- 只能给一个值,默认是给到第一个成员变量的。short -- 2字节 --- 能被2整除的地址编号上。5)共用体的大小 --是成员变量中最大的那个成员的大小。int -- 4字节 --- 能被4整除的地址编号上。char -- 1字节 --- 能被1整除的地址编号上。

2024-02-01 19:37:16 298 1

原创 结构体-day15

///64位的平台 默认是8字节。) 表示 --- 结构体类型定义。//3.性别 //char sex;//3.性别 //char sex;//1.姓名 //chat name[20]//1.姓名 //chat name[20]//4.成绩 //float score;//4.成绩 //float score;//2.班级 //int classNo。//2.班级 //int classNo。//5.年龄 //int age;//5.年龄 //int age;

2024-02-01 10:36:34 346 1

原创 指针(3)-day14

返回值为 指针类型 ---指针函数。&a[0]--对应的数据类型 int(*)[4] //数组类型 (一维整型数组类型)//返回值类型 --- 指针类型 --- 指针的函数 --指针函数。数组类型的指针 --- 数组指针。a --代表的值 -- 首元素的地址 -- a[0]a --数组名 --代表类型 int [3][4]指针函数 -- 指针的函数 --- 返回值为指针类型 的函数。void * //万能指针 --可以接收任意类型的指针。函数指针 -- 函数的指针 --- 函数类型的 指针。

2024-01-30 21:56:17 409 1

原创 指针(2)--day13

(p+i) <=> int型的变量 <=> a[i] <=>p[i]<=> *(a + i)//p和q都是指针类型的变量 *是修饰指针变量名的。}//const char *s --在函数里面 不能通过*s修改到外面的数据。//就近原则 -- 离谁近,就限定谁的。//野指针 --- 随机值 ---被当做了地址。b. * //定义时候的 * 表示定义的是一个 指针类型的变量。b.指针 --- 数据类型 ---指针类型 //类型。a.指针 --- 地址 ---内存单元编号 //值。

2024-01-29 23:12:08 331

原创 指针-day12(2)

基类型 表示 指针变量 指向的目标的 数据类型。&b ---得到了一块 存放着 float类型数据的 空间的地址。指针变量名 --- 标识符命名规则 + 见名知意。b有一块内存空间 -- 放的是float类型的数据。&b --- > 地址值的类型 -->float *b的数据类型--决定了这块空间放的的数据类型。* --- 表示此时定义的变量 是一个指针类型的变量。float * //这种类型的地址数据。&b--获得了 这块空间 的地址编号。p变量的数据类型 int * 指针类型。

2024-01-28 21:46:50 292 1

原创 函数(3)-day12

做声明,相当于,把别的文件中的变量作用域扩展到当前文件。如果想在当前文件使用别的文件中的 全局变量 ,表示 此时这个a 不是在当前文件中定义的 ,auto int a;---这个是一个自动变量 --- 栈上开辟的变量。表示的意思 --将函数作用域扩展到当前文件。动态变量(局部变量-空间是开辟在栈上的--自动申请自动释放)--静态区 修饰的是 局部变量。表示 将全局变量 的作用域限定到本文件中。则内层的作用域的同名标识符,会屏蔽外层的作用域的同名标识符。4.如果是不同的作用域,但是作用域之间存在嵌套关系,

2024-01-28 21:01:04 360 1

原创 函数(2)-day11

/编译器最终 是当做指针变量来看的。//形式上 写成字符数组的形式。//实参 -(1)数组名,(2)一个是数组长度。//注意: 此时不需要传数组长度 ---因为字符串有结束标志。//此时 形式上看 是数组。1.数组元素作为函数实参 --- 此时函数的形参 是一个与实参类型相同变量即可。//编译器最终当做指针变量处理。

2024-01-26 22:15:43 360 1

原创 函数-day10

返回值的类型标识符 函数名(形式参数) 函数头 --规定了一下函数的形式。返回的结果的类型 与 定义返回值类型 不一致 ,以定义的返回值类型为准。返回值的类型如果不写,默认为int型。(4).函数体 --- 完成函数具体功能的代码。形参 --不是一定要有,看函数功能的需要。(2).函数名 --- 一般和函数功能对应。(3).形式参数 --- 函数接收数据的入口。特殊的嵌套调用 --- 递归 (自己调用自己)(1).类型标识符 (返回值的类型标识符)函数体 --实现函数具体功能代码。

2024-01-25 22:36:04 324

原创 数组(3)-day9

字符串比较的规则与其他语言中的规则相同,即:对两个字符串自左至右逐个字符相比(按ASC正 码值大小比较)int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};b.二维整型数组操作 ---访问具体的元素 a[i][j]若出现不相同的字符,则以第一个不相同的字符的比较结果为准。//a的数据类型 int[4]int a[3][4];

2024-01-24 22:20:03 352 1

原创 数组(2)-day8

n = 2 比较的次数 1 冒了1个数 //总共n-1趟。n = 2 比较的次数 1 冒了1个数 //总共n-1趟。//本质存储时候,是按照 字符数组的形式存储。2)字符串结束的标志 比较重要,表示字符串结束。n = 7 比较的次数 6 冒了1个数。n = 6 比较的次数 5 冒了1个数。1)字符串更关注的是字符串的整体,不是单个字符。成功 返回的是 dest地址。

2024-01-24 08:56:33 330 1

原创 数组-day7

int a[10] = {} int a[10] = {0} 初始化为0。int a[10] = {1,2,3,4,5} 依次给到数组元素,没有给值的元素,默认初始化为0。int a[] = {1,2,3} 编译器会通过值来计算机 数组长度。3)a ---把名字去掉 ,剩下的就是名字对应的数据类型。3)定义 int a[10];1)a所代表的类型 int[10]

2024-01-23 09:00:50 344 1

原创 流程控制-day6

为真 执行语句,语句执行完,继续判断表达式,直到,表达式为假,while结束,程序继续向下。3)default 写错,不会报告语法错误问题,但是写错后,起不到default的作用。4)default 书写的位置,没有明确规定,如果写在前面,一定把break写上。含义:先执行循环体语句,之后,判断表达式,为假,while结束,程序继续往下。为真 执行循环体语句 求解表达式3 继续判断表达式2。为假 表达式为假,while结束,程序继续向下。}while(表达式);使循环趋于结束的语句(操作)

2024-01-21 23:21:45 336 1

原创 流程控制-day5

二,逻辑运算:与(&&) 或(||) 非(!为真 执行语句1 语句1 执行完,表示 if 语句结束,程序继续往下。为假 执行语句2 语句2 执行完,表示 if 语句结束,程序继续往下。为真 执行"语句1"语句1 执行完,表示if语句结束,程序继续往下。为真 执行"语句2"语句2 执行完,表示if语句结束,程序继续往下。为真 执行"语句3”语句3 执行完,表示if语句结束,程序继续往下。为真 执行语句 语句执行完,表示 if 语句结束,程序继续往下。

2024-01-19 20:35:18 371

原创 输入输出-day4

占了一个位置,将输入的数据,转换位 占位符 指定的格式,放到 地址列表对应的一块内存空间上。//%X 将输入的数据 转换为 十六进制 格式 输出 ,但是对应的a b c d e f 都是大写。占了一个位置,最终输出效果,将 输出列表中对应的参数,以占位符指定的格式输出。%c 以 字符的 格式 输出 //将对应的ASCII码值的 字符形式输出。%c 以 字符的 格式 输出 //将对应的ASCII码值的 字符形式输出。左对齐 加一个 负号(-)%g 以 更简洁 的方式输出 ,同时不会输出多余的0。

2024-01-18 19:45:36 326 1

原创 数据类型(2)-day3

(((10 + 'a') + 1.5) - (8765.1234 *'b') ) //结合性。10 + 'a' + 1.5 - (8765.1234 *'b') //优先级。3.求余运算的结果的符号 取决于 左操作数的符号。b.a%N 结果 [0~N-1]2. ++,--运算数 必须是左值 (变量)i++ :先用(表达式的结果) 后加 i。++i :先加i,后用 (表达式的结果)1,对转义字符[图片]进行学习及了解。低精度类型 与 高精度类型混合运算。2,对对运算符和结合性进行学习。

2024-01-17 20:06:16 334

原创 数据类型-day2

1|000 0000 0000 0000 0001 1010 0100 1111 //原码。1|111 1111 1111 1111 1110 0101 1011 0000 //反码。1|111 1111 1111 1111 1110 0101 1011 0001 //补码。110.01 ---> 1.1001 * 2^2 //科学计数法形式。step2:将二进制形式的小数,写成科学计数法形式。a ---> 编码值 (数值) ---> 无符号的整数。1位 符号位|8位-指数位|尾数位。

2024-01-16 19:51:43 678 1

原创 嵌入式基础及linux基础-day1

嵌入式是一种专用的计算机系统,以应用为核心,计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。w //write ---保存;一, ubuntu操作系统 --- linux系统 terminal --- 终端 --命令终端。cd ~ //~ 表示的就是 /home/linux 家目录。形式上,/home/linux 只要是以 /(根目录)开头的(绝对路径)。mkdir 1/2/3 -p //-p 选项。

2024-01-15 19:39:53 374

空空如也

空空如也

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

TA关注的人

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