- 博客(20)
- 收藏
- 关注
原创 Linux内核心得
堆(malloc)从下往上动态扩展;栈(局部变量、返回地址。调用函数压栈,返回函数弹栈)从上往下动态分配。进程状态cpu调度理论上,同一时刻单核 CPU 只能运行一个进程,但很多时候,我们可以同时运行的程序数量远大于 CPU 的核心数。这是因为,操作系统的 CPU 调度单元对 CPU 的资源做了,即在时间尺度上对CPU 做了划分,如15:15到15:16 执行进程 A,15:16到15:17执行进程B。
2024-07-19 20:08:28
707
原创 Linux线程、信号量心得
与进程区别进程是资源分配的基本单位,线程是cpu执行的基本单位;进程可以看作做是公司管理层,线程则是真正干活的人。线程可看作是进程的一个执行单元,多个线程共享了同一个进程的地址控制和其他资源;同一进程的多线程之间通信开销更小,但也出现了线程同步问题;同一进程的每个多线程有独立的栈空间,所以线程的创建、销毁、切换比进程消耗资源更少,更适合高并发。多进程资源隔离比多线程更好。
2024-06-27 00:11:57
946
原创 Linux 进程心得
int:这是main函数的返回类型,表示函数返回一个整数类型的值作为程序的退出状态码。main:这是程序的入口函数,是程序开始执行的地方。argc:这是一个整数参数,表示命令行参数的数量。在运行程序时,命令行输入的参数个数会被计数,至少为1(即程序名本身)。char const *argv[]:可以将程序从命令行传递进来的参数,通过管道传输给子进程。(但是argc必须大于2,因为程序本身是第一个参数)在运行一个C程序时,可以通过命令行向程序传递参数。
2024-06-24 21:12:43
637
原创 Linux文件I/O心得
文件描述符是一个非负整数,用于唯一标识一个正在打开的文件。文件描述符是操作系统内核为每个进程维护的一种机制,它提供了一种抽象的方法来访问文件、套接字和其它I/O资源。:文件描述符是一个整数,它作为文件在进程中的唯一标识符。:每个进程能够打开的文件描述符数量通常受到操作系统的限制,可以通过修改操作系统的配置参数来调整这个限制。:文件描述符不仅仅用于文件,它也可以表示管道、套接字、设备和其它形式的I/O资源。:每个进程都有一个打开文件表,记录了所有当前打开的文件描述符及其状态信息。:进程通过系统调用(如。
2024-06-19 22:35:46
277
原创 单调队列经典题目(c++)
存入栈中,这样可以直接通过temp[st.top()]来查询到温度的值,就相当于变相的map容器。将元素的值压入栈,通过比较值大小,进而实现栈的增或减。将元素索引压入栈,通过遍历索引,进而实现栈的增或减。dq.empty()判断队列是否为空很重要!
2024-06-07 12:18:38
349
原创 Keil5文件路径问题
而完整的路径是:FreeRTOS-06-任务调度\Drivers\BSP\EXTI。如果想要变为这样的格式:#include "exti.h"
2024-05-30 20:31:39
1705
1
原创 STL容器心得(附代码)
vectorvector要读取 vector 容器的第三个元素,你可以使用 operator[] 或 at()`方法。这两种方法都可以通过索引来获取 vector 中的元素。这两种方法都会输出 vector 中的第三个元素。记得在使用 at() 方法时,如果索引超出了 vector 的范围,会抛出 std::out_of_range`异常,而使用 operator[] 方法则不会。
2024-05-28 21:04:39
992
原创 STM32通过ADC测量引脚电压
你就可以使用单片机的ADC(模数转换器)模块来读取该引脚上的电压值了。要记住,一旦将引脚配置为模拟输入模式,就不能再将其用作数字输入或输出了,因为模拟输入模式会禁用引脚上的数字电平逻辑。如果你想要测量某个引脚的电压,通过将引脚配置为。以上代码可以测出指定引脚的电压。
2024-05-02 23:16:47
1028
1
原创 c/c++向上取整
C语言中,整数相除后,如果不能整除,小数会部分会被被丢弃(6/5=1),即向下取整。但是很多时候,我们需要对结果向上取整(6/5=2),比如分配内存的时候,只有向上取整,分配的内存才足够程序使用。那么,代码应该如何实现?一种常见的方法是通过将被除数加上除数减一,然后除以除数,即 (被除数 + 除数 - 1) / 除数。这样可以确保在除法运算中向上取整,因为加上除数减一会将除法结果向上调整到最接近的整数。
2024-05-01 14:24:49
1305
原创 STM32定时器心得
这行代码使能了 TIM2 的更新事件中断,即当 TIM2 计数器溢出时会触发更新事件中断。总结:该定时器每隔100毫秒会执行一次中断。所以定时器每隔100毫秒会溢出。对于定时器TIM2来说。
2024-04-26 19:58:03
508
1
原创 哈希表心得(c/c++)(附leetcode题解)
3 map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,一般是key为下标,value存值mapm(key,value)。底层实现为红黑树时,当有新的数据插入数组时,会被自动排序,因为红黑树就是用来排序的。=map.end())//因为求a+b+c+d=0的情况,即a+b=0-(c+d)for(int a:nums1) //遍历nums1和nums2中的所有元素相加情况。2 set,适用于范围很大的情况,比如就3个数,但是是0,5,
2024-04-09 22:47:11
1303
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人