- 博客(65)
- 收藏
- 关注
原创 51单片机-动态数码管显示
动态数码管显示就是在数码管中显示多个数字,利用了人眼的视觉差显示了数字,但是存在一个问题,在顺序执行显示数字和数值的设置时候,数码管的显示数据会出现错乱,因此,需要执行消影,每次在数码管上显示了一个数字之后,需要关闭数码管,再继续显示下一个数码管。
2024-08-14 00:49:13
209
原创 51单片机学习记录-数码管操作
这里实现了静态数码管的显示。51单片机一共有可以显示4个数字,可以通过控制P2(4-2)的端口选择8个数字显示器中的一个显示数字,控制P0端口写入显示的数值信息。将操作的逻辑使用了函数Nixie进行了封装。
2024-08-13 23:56:10
267
原创 51单片机-数码管实验
下面是138译码器,使用P22-P24三个比特控制选中显示数字的数码管。显示了数字6,下面是数码管的电路图,使用P0口可以控制数码管的亮灭。注意到LCD有三个灯也是亮的,这是因为存在端口冲突。在单片机上显示了数字6。
2024-08-12 01:07:28
297
原创 51单片机-LED实验二
使用51单片机进行LED灯的实验,使用8个LED灯展示二进制数,使用独立按键控制二进制数的加法,每次按下独立按键K2,就让二进制数加一,定义了一个LedNum,表示二进制数,二进制数取反之后可以得到输出到LED端口的8比特数值。
2024-08-11 00:24:16
526
原创 leetcode 236 二叉树的最近公共祖先
使用dfs求解,根据返回值判断是否存在节点。返回值如果是空,表明当前子树不存在p或q。把p和q分为两种情况,一种是在p或q在当前节点,或者p或q分别在当前节点的左右子树上。如果当前节点是p或者q,返回当前节点。
2024-02-09 09:33:13
228
1
原创 分治法求解最大子数组和问题
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。53. 最大子数组和。
2024-02-08 22:19:49
313
原创 leetcode 1921
踩坑点:double类型的比较, C语言有qsort的排序函数,需要设计比较函数,double类型的数据存在精度问题,不能直接用==号判断数据是否相等,需要通过设置精度eps。
2024-01-30 09:35:08
473
原创 epoll_wait造成惊群问题
使用epoll_wait会造成惊群问题,执行下面的代码会出现连接异常。5有多个epoll_wait返回,但是只有一个accept返回,其他的进程会被阻塞在accept这里,无法返回。
2023-11-20 20:24:51
158
原创 make的内置变量
当编译器应该调用链接器时为编译器提供的库标志或名称,‘LD’。当编译器应该调用链接器时向编译器提供额外的标志,‘LD’, 例如-L。用于编译或预处理 Fortran 和 Ratfor 程序的程序;默认 ‘特克斯2DVI’。提供给汇编器的额外标志(当在 ’ 上显式调用时).s’ 或者 ‘.S’ 文件)。提供给 C 预处理器和使用它的程序(C 和 Fortran 编译器)的额外标志。为 Ratfor 程序提供给 Fortran 编译器的额外标志。编译 Pascal 程序的程序;默认 ‘个人电脑’。
2023-11-17 12:45:12
113
原创 explicit关键字的使用
主要是用于类的构造函数,在构造类的实例时,编译器会进行隐式替换,例如,通常,当一个构造函数只接受一个参数时,该构造函数可以用来执行隐式类型转换。然而,这种隐式转换有时可能导致一些意外的行为,为了防止这种情况发生,可以使用 explicit 关键字。下面的代码obj就使用了隐式类型替换。
2023-11-12 23:17:10
109
原创 mutex用法
一个使用mutex的错误用法,mutex是一个互斥原语,lock并不是锁住变量,只是让临界区的代码无法执行。mutex和变量并没有任何的联系。只有通过写正确的代码才能让mutex保护数据。(下面的代码mMutex并不能保护变量m)。
2023-11-07 16:38:14
44
原创 mmap使用踩坑(读写文件)
需要通过write给增加文件大小,lseek可以通过移动seek指针配合write增加文件大小。2.在mmap的时候一定要设置MAP_SHARED或者MAP_PRIVATE,否则的话会出错。1.open和mmap配合使用,如果是刚新create 的文件,文件大小为0.下面是一个写文件并且在子进程中读取文件并输出的例子。
2023-10-30 20:52:27
274
原创 qemu概述
qemu是一个虚拟化的开源项目,虚拟化就是模拟不同的CPU硬件架构,最终的代码运行实际上还是在host(宿主机)上执行的,qemu的思想非常简单,存在一个TCG,把源指令集翻译成目标指令集。还有一个软件MMU,一个内存管理单元。如果想从事qemu相关的虚拟化开发技术,可以阅读qemu的源码。只需要知道怎么用qemu就行,没必要在深挖。
2023-10-30 12:42:07
34
原创 mqueue使用方法
mq_open() 的name一定要在名字前加一个/,不然会出错的。可以在同一个进程中修改和读取message queue.
2023-10-30 01:40:02
105
原创 semaphore保护mmap共享内存
使用有名信号量保护共享内存,防止数据的不一致。4096在使用sem_open()和sem_unlink()时,需要注意死锁的问题,如果正确调用了sem_open创建了一个信号量,那么这个信号量就一直存在于内核中,即使调用了sem_close()关闭信号量,信号量依旧存在与内核中,sem_close()只是阻止了程序使用这个信号量,并不删除信号量,所以需要调用sem_unlink(“the name semaphore”)删除信号量。
2023-10-29 14:36:02
34
原创 mmap共享内存
mmap创建了共享内存,使用两个进程同时访问的时候,需要注意同步问题,需要用互斥量保护内存。下面是多次执行的结果,最终的变量不确定。
2023-10-29 01:59:27
21
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人