- 博客(26)
- 收藏
- 关注
原创 Hot100——链表专项
本文介绍了四种常见的链表操作算法。1. 相交链表:使用双指针遍历两链表,当指针到达末尾时切换至另一链表头部,最终会在相交点相遇或同时到达NULL;2. 反转链表:递归实现,先递归到链表尾部,回溯时逐步调整指针方向;3. 回文链表:将链表值存入数组后双指针验证对称性;4. 环形链表:使用哈希表存储访问过的节点,检测重复访问判断环的存在。这些算法涵盖了链表的基本操作,展示了不同解题思路的实现方式。
2025-06-19 21:09:00
328
原创 # issue 10 进程通信
为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变量,程序对其访问都是原子操作,且只允许对它进行等待(即P(信号变量))和发送(即V(信号变量))信息操作。
2024-12-09 18:55:48
1105
原创 # issue 11 线程
线程是在进程中产生的一个执行单元,是CPU 调度和分配的最小单元,其在同一个进程中与其他线程并行运行,他们可以共享进程内的资源,比如内存、地址空间、打开的文件等等。是CPU 调度和分派的基本单位,是分配资源的基本单位进程:正在运行的程序(狭义)是处于执行期的程序以及它所管理的资源。
2024-12-09 18:55:06
845
原创 # issue 9 进程
利用之前学习到的内容,我们可以构建。当然,第一个客户端不会抱怨服务器端,但如果每个客户端的平均服务时间为0.5 秒,则第100 个客户端会对服务器端产生相当大的不满。
2024-12-06 16:32:08
912
原创 # issue 6 网络编程基础
协议就是一种网络交互中数据格式和交互流程的约定通过协议,我们可以与远程的设备进行数据交互请求或者完成对方的服务协议就是计算机中的语言(语言就需要遵循一些规定,这些规定就是协议)网络编程就是编写程序使两台连网的计算机相互交换数据。两台计算机之间用什么传输数据呢?首先需要物理连接。在此基础上,只需考虑如何编写数据传输软件。但实际上这也不用愁,因为操作系统会提供名为"套接字"(socket)的部件。套接字是网络数据传输用的软件设备(软件模块)。
2024-11-29 16:28:13
1422
原创 # issue 7 TCP回声服务器和客户端
为什么需要理解协议栈?根据数据传输方式的不同,基于网络协议(这里是指基于TCP/IP协议)的套接字一般分为TCP 套接字和UDP 套接字。因为TCP 套接字是面向连接的,因此又称基于流(stream)的套接字。TCP 是TransmissionControl Protocol(传输控制协议)的简写,意为"对数据传输过程的控制"。
2024-11-29 16:25:11
1317
原创 # issue 2 选择排序(Selection Sort)
通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小(最大)的记录,并和第i(1
2024-11-14 16:58:23
446
原创 # issue 1 冒泡排序(Bubble Sort)
当然,你也可以有其他的参数,并不一定要照我这个实现,只要明白了冒泡排序的思路就可以自己写出来了。冒泡排序比较基础,易于理解和上手。Bubble Sort是一种比较简单的排序算法,这个简单不仅在于原理比较简单,代码实现也是比较简单的。代码的实现上面并没有什么难点,主要就是我的参数那里,要区分指针就ok了。两两比较,如果反序则交换,直到没有反序的记录为止。综上,实际上冒泡排序还是可以的,毕竟好理解好写。(这里的稳定性指的是排序过后的值不会交换位置)平均时间复杂度:n^2。最坏时间复杂度:n^2。
2024-11-14 15:57:30
348
原创 # issue 3 串
串(string)是由零个或多个字符组成的有限序列,又名叫字符串。比如类似于s="a1a2......an",s 是串的名称,用双引号括起来的字符序列是串的值,注意引号不属于串的内容。ai(1≤i≤n)可以是字母、数字或其他字符,i 就是该字符在串中的位置。n 称为串的长度,这个“有限”是指长度n 是一个有限的数值。零个字符的串称为空串(nullstring)。它的长度为零,可以直接用两双引号“""”表示。所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。此外,还有一些概念需要解释。
2024-11-02 10:31:57
738
原创 # issue 2 队列
栈和队列,他们都是特殊的线性表,只不过对插入合删除操作做了限制栈(stack)是限定仅在表尾进行插入合删除操作的线性表队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表他们均可以用线性表的顺序存储结构来实现,但都存在着顺序存储的一些弊端。因此他们各自有各自的技巧来解决问题对于栈来说,如果是两个相同数据类型的栈,则可以用数组的两端作为栈底的方法来让两个栈共享数据,这就可以最大化利用数组的空间。
2024-10-24 17:15:54
410
原创 # issue 1 栈
栈(Stack)是限定仅在表尾进行插入和删除操作的线性表。我们把运行 插入的一段称为栈顶(top),运行删除的一端称为栈底(bottom),不含任何数据元素的栈称为1空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。理解栈的定义需要注意:首先它是一个线性表,就是说,栈元素具有线性关系,即前驱后继的关系。只不过他是一种特殊的线性表而已。定义中说是在线性表的表尾进行插入和删除操作,这里表尾的指栈顶,而不是栈底。
2024-10-20 11:06:34
736
原创 # issue 2 Linux权限控制函数
设置用户权限S 提权和降权设置组权限s 修改我当前的组仅所有者可删除权限t读取权限r 4写入权限w 2执行权限x 1所有者红色方框内的权限所在组蓝色方框内的权限其他组橙色方框内的权限对进程也是有效的对内存也是有效的。
2024-10-16 22:47:50
479
原创 前言(为什么必须至少5个字qwq)
因为我是转专业过来的,之前不是计算机的,所以浪费了大一一年时间,现在大二只能对一些基础进行恶补,希望通过这个专栏来记录,学习打卡吧,同时也希望我踩过的一些坑可以帮助到大家,再者大家一起共勉吧!这个栏目后面的文章主要用于记录我学习Linux的一些笔记心得。好吧,单独出一期前言。
2024-10-13 10:17:48
165
原创 TIM输入捕获之测频率&PWMI模式测占空比和频率(我测我自己)
我们是通过测周法来测量频率的,根据前面代码中的配置,标准频率就是1MHz,所以频率就是标准频率/次数。就这样,我们便打通了流程图中的每个部分,这意味着我们的输入捕获部分代码是完成了的。好吧,我没有波形发生器,只好让stm32的一个引脚输出pwm波,然后一个引脚去测自己输出的pwm波。那么知道了大体的流程(就是按照原理图,他要什么就配置什么),我们开始按照思路写代码。一样的,我直接把代码贴出来,不知道怎么初始化的翻翻我之前的文章有写。解决了PWM的发生和输入捕获部分,我们就开始编写主函数了。
2024-07-13 14:12:45
1623
1
原创 TIM输出比较和PWM之LED呼吸灯&驱动舵机
1.在具有惯性的系统中,可以通过对一系2.列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域3.PWM参数: 频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距。
2024-03-27 20:12:58
597
1
原创 EXTI外部中断实例:对射式红外计数
学习了EXTI外部中断的理论,通过一个对射式红外计数来熟悉巩固一下我所学的知识(因为第一次接触中断,想着练手熟悉一下这个东西)。特别的:一定要有清楚中断标志位的这个操作,不然的话会一直一直申请中断执行中断函数,那么程序就会出错。OLED相关的函数我就不做介绍了,不知道的读者可以看看我之前写的关于OLED的那篇。以上7个函数便是stm32标准库函数里与AFIO相关的函数,每个函数的作用我都注释了。中断触发的方式我设置的就是下降沿触发,意思当东西离开对射式红外时就会触发中断函数。
2024-02-21 16:33:49
632
1
原创 调试:简单的使用OLED进行调试
发现用OLED进行调试非常的方便于是有了这个文章(好吧,主要是keil5的调试用不来0.0)。由于我还是初学,仅仅找到到了OLED的调试工具,也就是网上大佬封装好的驱动函数,我搞清楚怎么调用就行,对于怎么封装的现在暂时不涉及,因为好像还需要学习协议什么的,我目前就是一个小卡拉米。。。。。
2024-02-08 20:54:56
1392
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅