- 博客(55)
- 收藏
- 关注
原创 Linux嵌入式学习——数据结构——概念和Seqlist
零个或多个数据元素的有限序列元素之间是有顺序了。如果存在多个元素,第一个元素无前驱,最有一个没有后继,其他的元素只有一个前驱和一个后继。当线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,为空表。在非空的表中每个元素都有一个确定的位置,如果a1是第一个元素,那么an就是第n个元素。线性表的常规操作ADTchar sex;int age;int score;DATATYPE;Datatype;int tlen;
2024-07-23 09:13:47
254
原创 Linux操作系统——数据库
数据库sun1、分类: 大型 中型 小型关系型数据库2、名词:DB 数据库 select update databaseDBMS 数据库管理系统MIS 管理信息系统OA 办公自动化3、嵌入式数据库:GNU特点:1、开源 C语言开发2、代码量少 1万行左右,总大小10M以内3、绿色软件无需安装4、文件型数据库,可以移动。
2024-07-15 23:36:48
967
原创 Linux——多路IO
④ select返回-1表示错误,返回0表示超时时间到没有监听到的事件发生,返回正数表示监听到的所有事件数(包括可读,可写,异常),通常在处理事件时 会利用这个返回值来提高效率,避免不必要的事件触发检查。① readfds等是指针结果参数,会被函数修改,所以一般会另外定义一个allread_fdset,保持全部要监听读的句柄,将它的拷贝传递给select函数,返回可读的句柄集合,类型fdset支持赋值运算符=;这样,进程就可以在需要时处理IO事件,而无需轮询或阻塞等待。
2024-07-13 09:18:48
590
原创 【无标题】
1、IP头格式(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
2024-07-12 16:07:48
793
原创 Linux_网络编程_TCP
client / server brow / serb / s http p2p 1、模式 C/S 模式 ==》服务器/客户端模型server :socket()-->bind()--->listen()-->accept()-->recv()-->close()client :socket()-->connect()-->send()-->close();int on = 1;setsockopt(listfd, SOL_SOCKET,SO_REUSEADDR
2024-07-09 19:25:43
1075
原创 Linux——网络编程——UDP
dest_addr: 必选,表示要发送到的目标主机信息结构体。buff 要存储数据的内存区,一般是数组或者动态内存。len 要获取的数据长度,一般是buff的大小。1、根据以上知识点编写UDP测试程序,验证UDP协议的无链接性质。buff 本地的数据存储,一般是要发送的数据。src_addr 可选,表示对方的地址信息结构体,3、将以上知识点融合,考虑如何实现一个基于UDP的聊天室程序。1、要有注册过程,每个客户端必须在服务器端有注册信息。bind() 客户端是可选的,服务器端是比选的。
2024-07-09 11:51:12
1005
原创 linux——网络编程(1)ositcp
网络编程1、OSI 模型 ===》开放系统互联模型 ==》分为7层:理想模型 ==》尚未实现tftpa /etc/123应用层表示层 加密解密 gzip会话层 网络断开,连接状态,keep-close keep-alive传输层tcp udp 协议 文件 视频,音频网路层ip NAT链路层 交换机 数据的格式化 帧 校验物理层 100Mb/8 Gbits 100MB 同轴电缆 10Gb 2.4G 5G。
2024-07-08 09:54:40
925
原创 进程间通信————信号通信,共享内存,IPC对象之信号量集
void fun(int sig) ////sig 接收到的信息编号10 SIGUSR112 SIGUSR2专门预留给程序员使用的未定义信号。printf("老爸叫你\n");i++;printf("老妈叫你\n");i++;return 0;
2024-07-03 19:35:33
898
原创 linux——IPC 进程间通信
在多进程操作系统中,不同的进程可能需要交换数据以完成共同的任务。:由于进程空间的独立性,一个进程无法直接读取或修改另一个进程的内存空间中的数据。这个返回值0是一个特殊的信号,它告诉读端进程,管道的写端已经被关闭,并且管道中没有更多的数据可以读取了。==>fd 是固定写端。函数从管道中读取数据,并且管道已经为空(即没有任何待读取的数据),同时写端已经被关闭,那么。1,读端存在,一直向管道中去写,超过64k,写会阻塞。2,写端是存在的,读管道,如果管道为空的话,读会阻塞(读的快,写的慢)
2024-07-03 10:46:44
845
原创 IPC_l练习
1.fifo a,b 实时聊天。发送#quit,a,b都退出。如果没找到,显示单词输入错误。如果输入#quit,退出。2.pipe,父进程把dict.txt写入管道。子进程从终端接收需要查找的单词。
2024-07-03 10:39:13
108
原创 Linux——互斥与同步练习
启动三个线程,th1输出a,th2输出b,th3输出c。不能重复买票,将100张车票均匀的从两个。用多线程程序设计一个火车票售票系统,要求至少有两个售票窗口,每个售票窗口。窗口1 卖出车票 1。窗口2 卖出车票 2。窗口1 卖出车票 3。窗口2 卖出车票 4。
2024-07-02 09:45:15
255
原创 Linux——线程练习
主线程,接收一个表达式,填充结构体,传递给th1线程,th1线程结算结果,并返回给主线程。1.创建一个多线程程序,至少有10个子线程,每个线程有会打印不同的数据,同时表明身份。
2024-07-01 11:50:03
271
原创 Linux高级编程——线程
===》 子线程的结束不会影响主线程的运行。====》主线程结束任意生成的子线程都会结束。功能:请求结束一个线程 (在主线程种调用 写入某个线程id号,可以关闭该线程)参数:thread 请求结束一个线程tid(想要关闭的线程id号)返回值:pthread_exit(0) ===>pthread_exit(9);1、线程的回收机制 ====》不同与进程没有孤儿线程和僵尸线程。要回收的子线程返回值/状态。==》ptread_exit(值);
2024-06-28 18:00:07
1070
原创 Linux高级编程——进程
1.进程的含义?进程是一个程序执行的过程,会去分配内存资源,cpu的调度PID, 进程标识符当前工作路径 chdirumask 0002进程打开的文件列表 文件IO中有提到 (类似于标准输入 标准输出的编号,系统给0,1,2 标准输入 标准输出 标准错误)信号相关设置 处理异步io,用户id,组id进程资源的上限的命令:ulimit -a,显示资源上限。2.进程和程
2024-06-27 19:33:45
880
原创 Linux——进程练习
/a.out ===> 1.txt ==>父进程写入的信息 时间+编号(father pid)/a.out时间+编号(child pid)父进程1123 186 16:02:10子进程1124 188 16:02:15。2、设计一个程序,动态生成两个进程,分别向相同的文件中写入不同的数据,要表明是两个进程同时写入的数据。输入n, 动态生成n个子进程,并打印输出各自进程的pid号。
2024-06-27 19:24:21
443
原创 嵌入式学习——Linux系统——文件编程(3)
1] [ ] ------------------> [硬盘 ]--hello.c。/* total size, in bytes */(*文件的大小)// long unsigned int。/* time of last status change */(*最后的状态改变的时间)if ((st_mode & S_IFMT) == S_IFSOCK ) //注意 优先级 & 低于 ==fd --->[0] ---> 文件的状态 / 偏移量。
2024-06-25 14:20:22
732
原创 嵌入式学习——Linux——目录练习
复制整个文件夹(包括其内容和子文件夹)通常不是一个简单的文件I/O操作,因为它需要递归地遍历源文件夹中的所有文件和子文件夹,统计该目录下的普通文件的个数。实现目录与目录的copy。
2024-06-25 10:47:25
204
原创 linux——文件编程文件IO
c.设备文件 ---- 文件IO ///dev/video0 ----> fopen();文件描述符 [1.txt] //硬盘。1.打开 --- fopen ---> hello.c FILE *fp。FILE *fp [1.txt]1. 使用文件io方式完成任意两个文件的比较功能,测试两个文件是否相等。
2024-06-24 19:36:07
980
原创 嵌入式学习——Linux操作系统——文件编程练习
1.使用fread和fwrite方式完成任意普通文件的拷贝功能。则最终效果是将 hell插入到了100个字节的后面。指定要插入的位置 (如100个字节之后,)c.将刚才读走的数据写到插入数据的后面。3.统计文本文件中a-z,出现的次数。指定要插入的内容 (如hello)4. 完成两个文件的合并操作。b.重新定位到要插入的位置。a.定位到要插入的位置。
2024-06-24 10:53:48
213
原创 嵌入式学习——Linux操作系统——文件编程—(1)
一、文件类型:文件操作:文本文件,mp3,jpeg,png ,mp4,avi文件:一组相关数据的有序集合文件名:这组相关数据的一个名称eg:hello.c --文件名linux里面对文件的处理:思想:一切皆文件ls -l文本文件目录摄像头话筒鼠标b -- block -- 块设备文件 --- 硬盘 ---- ls -l /dev/sda。
2024-06-21 17:30:40
945
原创 嵌入式技术学习——Linux环境编程(高级编程)——shell编程
Brain Fox作为FSF的员工,首次开始工作是在1988年的1月10号,一年之后,发布了.99的测试版本。-c 字符设备文件 char --- 鼠标,键盘。-b 块设备文件 block test -b /dev/usb0 --- 硬盘。进程 ---- 进行中程序(process id--进程的身份证号)$$:当前shell的PID --- $$ 21694 //进程的概念提示。
2024-06-19 19:12:27
1116
原创 嵌入式技术学习——c51单片机——蜂鸣器
如图所示的三极管是NPN三极管,当p11是1时,三极管导通,蜂鸣器会响 ,在我们的开发板上,就是把那个帽子戴上。无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。(2)利用定时器的计数功能,改变中断时间,来改变频率变化,使蜂鸣器声音变化。单位时间内周期变化的越小,频率越大,声音越尖锐。蜂鸣器分为有源蜂鸣器,无源蜂鸣器。c51中的蜂鸣器是无源蜂鸣器。
2024-06-18 22:05:14
625
原创 嵌入式技术学习——c51——串口
在总线上接受数据和发送数据,靠定时器计数,T1的溢出率经过二分频或16分频控制收放的速率,通过SBUF写入发送数据。将数据放在SBUF,单片机自动读写数据,发送之后会申请TI这个发送中断,接收数据会生成RI接受中断。串口是一个 通讯接口。成本低,容易使用,通信线路简单,可实现两个设备的相互通信。单片机的串口可以实现单片机于单片机,单片机与电脑,单片机与其他模块相互通信。RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)RS232电平:-3~-15V表示1,+3~+15V表示0。
2024-06-17 22:18:29
767
原创 嵌入式技术学习——c51单片机——定时器
1,定时器再单片机内部就像一个小闹钟一样,根据时钟的输出信号,每隔一秒,就单元的数值就增加当技术单元的数值增加到“设定的提醒时间”,计数单元会向中断系统发出中断请求。TH0高8位 和 TL0低8位:共存2的16次方-1的数据=65535。定时器的个数:T0,T1,T2.(要注意不同的单片机用的定时器不同)定时器是51单片机内部的资源,其电路连接和运转均在单片机内部完成。系统将12Mhz进行12分频,成1Mhz,成1微秒,给0就是定时器的功能,给1就是计时器的功能。模式1:13位定时器/计数器;
2024-06-17 09:12:52
288
原创 嵌入式学习(二)——c51单片机(1)
单片机没有操作系统可以不用return 0;可以把函数代码写成.h的文件达到多个文件合作。将变成好的文件存成 .hex。同时安装CH340驱动。
2024-06-12 09:43:11
185
原创 C语言——第五章习题
以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。请在【】内填入正确内容。(表达式),可能这种形式很怪异,但是还是希望大家能够理解并记住这一点,这可以避免你以后在这上面浪费太多的脑力。考察点:C语言里的’A’<=ch<=’Z’要表示成ch>=’A’&&ch<=’Z’的形式,切忌C语言里没有。负数的求余:只看被余数的符号,被余数符号为正,求余表达式为正,被余数为负,求余表达式为负。、输入一个四位数,要求将它的千位、百位、十位、个位上的数字按由小到大排列,输出一个新数。
2024-06-06 14:33:55
740
原创 c语言第三章练习
2、编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,b中原来的值给c, c中原来的值给a,且输出改变后的a,b,c的值。3、输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果,要求连同算式一起输出,每个算式占一行。10、a=1,b=2,c=3,d=4,则表达式a<b?16、设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_____
2024-06-06 00:06:54
555
原创 C语言---枚举&位运算
运算规则:一假则假 --------置位(0)运算。写程序----控制寄存器中的某些二进制位--->关联某些硬件引脚-》电平的变化。运算规则:一真则真 ----------置位(1)运算。要移动的数据,本身是有符号额类型,如果右移,最高位补符号位。typedef int a:给int型起一个别名叫a。要移动的数据,本身是无符号的,如果右移最高位补0。a<<2 //左移一位相当于 乘以2。写程序《--------》控制硬件。
2024-06-05 18:14:42
315
原创 C语言——共用体
数据的最低有效字节存储在最低的内存地址上,该电脑是小端。1.共用体初始化时,只能给一个值,这个值默认时给到第一个成员的。赋值的时候,每个成员只能影响,自己对应的字节。2.共用体空间中数据,取决最后一次给到值。可以做函数参数 和 返回值。计算机早期的时候能否尽量节省空间?union 共用体名。
2024-06-05 09:09:35
365
原创 C语言——链表
不足,插入数据 删除数据不方便。// 保存地址——指向下一个结点;——空链表 —— 只有头节点,但是没有有效的数据节点;//数据域——存储要处理的数据。数组的特点+连续性、有序性、单一性。(1)每次尾节点后面插入——尾插法。(2)每次头节点后面插入——头插法。数据结构——数据的组织形式 ——优点:随机访问(存取方便)操作:数据结构体 数据的处理。数据结构体——操作时的特点,优点:增加和删除数据 方便。链式数据结构——链表;
2024-06-04 16:21:52
274
原创 C语言——结构体
/初始化 ,需要按照 成员列表的顺序,依次初始化。//成员与成员之间的初始化的值,用逗号隔开。//s变量中,存储的是某一个学生的信息。小明 |1110 | 2班 |100 | 类型 定义出来 一个变量 此时有具体数据。//来描述结构体类型中 具体的一些数据。//表明这个结构体类型的 名称。//如果没有超过4字节的,则按成员变量中最大对齐。//如果没有超过4字节的,则按成员变量中最大对齐。1.在32位的平台上,默认都是按4字节对齐的。1.同一类型的结构体变量间,也是可以互相赋值的。
2024-06-04 09:20:30
440
原创 C语言——指针(4)
int (*compar)(const void *, const void *)//表示 排序 比较的依据。假如给一段数据排序,不只要这段数据,还需要这段数据每一个元素的其他运算的排序,为了避实现函数的灵活性,可以用到函数回调。int (int a,int b) //这表示一类函数 --- 返回值为int型,形参为两个int型的函数。size_t size, //表示要排序的数组的单个元素的大小。//基类型 int[4]这种类型 ---数组类型。//标准C语法: int (*)[4]
2024-05-30 21:52:51
514
原创 C语言——指针字符串练习
将字符串”Computer Science”赋给一个字符数组,然后从第一个字母开始间隔的输出该字符串,用指针完成。//1.整个字符串整体逆序。//2.每个单词再逆序。1. 编写程序实现单词的倒置。
2024-05-30 10:08:10
222
原创 C语言——指针(3)
/ *s1 和 s1 本身都不能被修改。//s1的空间开在栈上,但是s1指向的"字符串常量"//如果,不希望修改 *s1 的数据。//2.从dest的 '\0'位置开始,拷贝字符串 //受到n的控制。2.const 修饰的变量,为只读变量 //变量还是变量 只是成了只读的。实现: //返回值 表示的是dest 存放字符串的空间的首地址。//2.从dest的 '\0'位置开始,拷贝字符串。//3.最终dest中 需要有 '\0'结束标志。//3.最终dest中 需要有 '\0'结束标志。
2024-05-30 09:27:59
661
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人