- 博客(22)
- 收藏
- 关注
原创 RIP 协议实验全记录:从配置到问题解决
在网络世界中,路由协议就像是交通指挥员,引导数据在不同网络之间顺畅传输。今天,我们就来深入探索 RIP(Routing Information Protocol)协议,通过一系列实验,揭开它的神秘面纱!
2025-05-24 17:10:25
1680
原创 DS18B20 温度传感器实验探索与实践分享
本次实验主要有三大目标:一是掌握数码管的使用方式,实现数据的可视化呈现;二是深入理解 DS18B20 温度传感器的工作原理,包括其独特的单总线传输机制;三是熟练运用单总线通信方式,完成单片机 MCU 与 DS18B20 之间的数据传输。实验内容围绕学习 DS18B20 的单总线传输,通过单片机 I/O 实现温度采集,并将采集到的温度数据在数码管上显示,同时设置温度报警阈值,当温度超过阈值时触发嗡鸣器报警。通过本次实验,我对单片机编程和硬件交互有了更深入的理解。
2025-05-21 23:44:19
1017
原创 基于单片机的矩阵键盘与数码管显示实验实践
在本次实验过程中,遇到了诸如理解代码逻辑和硬件连接等问题。但通过查阅资料、反复调试和实践,逐步攻克了这些难关。通过这次实验,对 8051 微控制器编程有了更深入的理解,编程和硬件调试技能得到了显著提升。同时,也深刻认识到调试工具在排查问题中的重要性,以及代码注释和模块化设计对于程序可读性和可维护性的关键意义。未来,可以通过增加更详细的注释、优化延时处理算法以及增强用户交互功能,进一步提升程序的健壮性和友好性。最后附上完整的实验源代码,方便大家参考学习:ORG 0000HAJMP MAIN。
2025-05-20 10:33:36
864
原创 8051单片机实验:实现电子计数器与数码管显示
以下是实验的详细过程、设计思路、代码实现、遇到的问题及解决方法,以及我的心得体会。问题:初始代码编写时,数码管显示不正确,主要是因为对汇编语言指令(如MOVC、CJNE)的使用不熟悉,导致查表或进位逻辑错误。解决方法:优化防抖逻辑,采用10ms延时检测两次按键状态,并结合显示模块的调用,最终实现稳定的按键响应。解决方法:仔细检查开发板的硬件连接,重新焊接松动的引脚,并确保数码管的片选信号正确输出。根据R1、R2、R3中的计数值,通过查表(MOVC指令)获取对应的段码,输出到P0口。
2025-05-15 22:27:02
1610
原创 单片机跑马灯实验:从入门到实践的探索之旅
理解汇编语言:刚接触汇编语言时,感觉像在看 “天书”,和熟悉的高级编程语言完全不同。为了攻克这个难关,我开启了 “疯狂学习” 模式,啃教材、刷在线教程,还不断编写简单程序练手,慢慢摸清了汇编语言的语法和逻辑。硬件接口不熟悉:在连接硬件、烧录程序控制 LED 灯时,硬件接口问题频出。多亏了数据手册这个 “神器”,还有热心同学的指导,我才学会正确配置端口、编写控制代码。调试程序:程序运行结果和预期不符,简直让人抓狂!不过,我沉下心来,借助调试工具,逐行检查代码,一点点排查问题,最终成功揪出错误并修正。
2025-05-13 23:34:19
1861
原创 一文搞懂递归:从概念到实践
递归,简单来说,就是一个函数直接或间接地调用自身。听起来有点绕?我们来举个形象的例子:想象你站在两面相对的镜子中间,镜子里的画面会不断重复,一个 “你” 里面套着另一个 “你”,层层嵌套,无穷无尽。这就是递归的直观体现。基线条件:这是递归的终止条件,就像镜子尽头的边界,告诉程序什么时候停止调用自身,避免陷入无限循环。递归条件:函数调用自身的逻辑,不断向基线条件靠近,逐步解决问题。递归是一种强大的编程技巧,掌握它能帮助我们优雅地解决很多问题。使用递归时,一定要明确基线条件和递归条件,避免陷入无限循环。
2025-05-10 18:26:40
279
原创 Brute-Force 算法:简单直接的暴力美学
Brute-Force 算法的核心思想非常朴素,它通过穷举所有可能的解,然后逐一验证这些解是否满足问题的要求,从而找到最终答案。就像我们在一堆钥匙中找到能开锁的那一把,最直接的方法就是一把一把地试,Brute-Force 算法采用的就是这种 “笨办法”。Brute-Force 算法虽然有着明显的局限性,但它是很多复杂算法的基础,帮助我们理解问题的本质。在实际应用中,我们可以根据问题的规模和特点,选择是否使用 Brute-Force 算法,或者将它与其他更高效的算法结合使用。
2025-05-07 23:28:02
345
原创 搞懂希尔排序:图示 + 原理 + 代码详解
通过以上图示、代码和性能分析,我们对希尔排序有了全面的了解。它通过分组插入的策略,有效提升了排序效率,在处理大规模数据时优势明显。如果你对希尔排序还有疑问,或者想了解更多关于排序算法的知识,欢迎在评论区留言交流!
2025-05-06 12:51:05
240
原创 数据结构中的折半查找:原理、实现与应用
它的核心思想是通过不断将数组分成两部分,并比较目标元素与中间元素的大小关系,逐步缩小查找范围,直到找到目标元素或者确定目标元素不存在。随着数据规模的增大,折半查找的效率优势会更加明显,相比于顺序查找的O(n)时间复杂度,折半查找在处理大规模有序数据时具有显著的性能提升。折半查找只需要几个额外的变量(如left、right、mid)来记录查找范围,无论数据规模多大,这些变量所占用的空间都是固定的,因此空间复杂度为O(1)。在我们的例子中,目标元素7等于中间元素7,查找成功,返回位置3。
2025-05-03 14:18:24
801
原创 堆排序:理解与实现
在了解堆排序之前,我们需要先认识 “堆” 这种数据结构。大顶堆:每个节点的值都大于或等于其子节点的值,根节点是堆中的最大值。小顶堆:每个节点的值都小于或等于其子节点的值,根节点是堆中的最小值。以大顶堆为例,下图展示了一个大顶堆的结构:从图中可以看出,根节点 100 大于它的子节点 60 和 80,每个节点也都大于其下一层的子节点,满足大顶堆的特性。堆排序通过巧妙地利用堆这种数据结构,实现了高效的排序过程。从构建堆到交换调整,每个步骤都蕴含着计算机科学的智慧。
2025-04-28 23:59:45
550
原创 KMP字符串匹配算法
通过预处理next数组,避免无谓的回退。主串指针只前进,不回头。时间复杂度是O(n+m),比暴力法高效得多!KMP是字符串处理里必须掌握的一个算法思路,理解了KMP,也能更好理解后续更复杂的模式匹配算法(比如Boyer-Moore、Rabin-Karp等)。
2025-04-26 23:18:47
445
原创 Dify工作流的创建
旨在帮助用户快速构建、部署和管理基于大语言模型(LLM)的应用程序。它提供了直观的可视化界面,同时支持灵活的后端配置,让开发者能轻松集成多种 AI 模型(如 GPT、Claude、开源模型等),并实现数据预处理、工作流编排、性能优化等功能。Dify 降低了 AI 应用开发的门槛,尤其适合需要灵活编排 AI 能力但缺乏全栈开发资源的团队。6.我们到这里只是单纯的把每个节点连接了起来,还需要设置输入和输出,点击开始,为开始设置输入输出。可上传文档或数据库,增强 AI 的上下文理解能力(如构建企业知识助手)。
2025-04-23 20:01:36
613
原创 二叉树的层次遍历算法详解
二叉树的层次遍历,顾名思义,就是按照二叉树的层次顺序,从根节点开始,逐层访问每一个节点。具体来说,它先访问根节点,然后依次访问根节点的左子节点和右子节点,接着再访问下一层的所有节点,以此类推,直到访问完二叉树的所有节点。这种遍历方式就像是从上到下,一层一层地 “扫描” 二叉树,因此也被形象地称为 “广度优先搜索(BFS)”。
2025-04-21 22:52:58
526
原创 冒泡排序详解
冒泡排序是最基础的排序算法,通过相邻元素的反复比较和交换,将最大元素逐步"浮"到数组末端。冒泡排序(Bubble Sort)是一种简单的比较排序算法,它重复地遍历要排序的列表,一次比较两个元素,如果它们的顺序错误就把它们交换过来。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端(升序排列时),就像气泡从水底冒到水面一样。排序算法是计算机科学中最基础也最重要的概念之一,而冒泡排序作为最直观的排序算法之一,是每个程序员入门必学的经典算法。1. 从列表的第一个元素开始,比较相邻的两个元素。
2025-04-18 17:02:45
338
原创 图的遍历:DFS 与 BFS
DFS和BFS是处理图和树问题的两个基本方法。DFS就像走迷宫,遇到岔路就随便选一条走到底,走不通就返回;BFS则是从起点开始,先把周围所有地方都看一遍,再慢慢往外扩大范围。简单来说:DFS用栈,适合找所有可能的解BFS用队列,适合找最短路径比如:数一个公司有多少部门用DFS找两个人之间最短关系链用BFS这两种方法在编程中经常用到,是必须掌握的基础知识。理解它们的区别后,遇到问题就知道该用哪个更合适了。
2025-04-17 00:07:14
381
1
原创 数据结构——快速排序
它的核心思想是:选一个“基准”(pivot),把数组分成两部分,左边都比基准小,右边都比基准大,然后对两部分递归排序。比如,数组 [1, 2, 3, 4, 5],如果每次选第一个元素为基准,分区会极不平衡。分区后:[5, 2, 1, 5, 6, 9](6已到正确位置,左边 [5, 2, 1, 5] 都小于6,右边 [9] 大于6)对左边 [5, 2, 1, 5] 递归排序,选择 5 作为基准,分区后得 [2, 1, 5, 5],继续递归...没错,快速排序正是以这种方式,将复杂问题拆解为小问题,逐步解决。
2025-04-15 09:08:49
827
1
原创 数据结构——栈和队列
栈就像一摞盘子,你只能从顶部放盘子(push)或取盘子(pop)。这种“后进先出”(LIFO, Last In First Out)的特性让栈非常适合处理需要逆序操作的场景。这种“先进先出”(FIFO, First In First Out)的特性让队列非常适合处理顺序任务。在计算机科学中,栈和队列是两种基础且常用的数据结构。操作:主要包括push(入栈)、pop(出栈)、peek(查看栈顶元素)。时间复杂度:入栈和出栈操作通常为 O(1)。1. 栈(Stack):后进先出。3. 栈与队列的对比。
2025-04-12 09:53:14
215
1
原创 二叉树的遍历方法
总结:其实可以把每一次递归调用当做一次进栈处理,开始访问时,先序遍历根节点为1的二叉树,将其进栈,先访问其根节点,然后访问其左子树,左子树又是一个二叉树,将根节点为2的二叉树进栈,然后访问根节点为2的二叉树,先序遍历,依次访问其根节点,左子树和右子树,访问完出栈,这时栈中还有根节点为1的二叉树,此时他的根节点和左子树都访问完毕,再访问其右子树。(2)根节点访问完成后访问左子树,左子树为2,4,5,然后再递归执行前序变量,2为根节点,访问节点2,再访问左子树4,最后访问右子树5。
2025-04-10 22:10:08
283
1
原创 虚拟机的简单介绍以及解决虚拟机无法连接网络
VM(Virtual Machine,虚拟机)是一种通过软件模拟的虚拟计算机系统,它可以在一台物理主机上运行多个独立的操作系统和应用程序。虚拟机通过虚拟化技术(如VMware、VirtualBox、Hyper-V等)在物理硬件之上创建出一个虚拟环境,使得用户可以在同一台物理设备上同时运行多个操作系统(如Windows、Linux、macOS等),而这些系统之间互不干扰。隔离性:每个虚拟机都有自己的虚拟硬件(CPU、内存、磁盘、网络等),运行时与其他虚拟机隔离,互不影响。打开之后我们可以看到一个这样的界面。
2025-04-07 20:15:29
192
1
原创 操作系统——进程调度,调度算法等待时间的计算
可抢占:0时刻P1到达,执行完一秒后,P2到达此时P2运行时间小于P1,P2先执行,P2执行一秒后P3到达,P3执行时间小于P2所以继续执行P2,4秒完成P2,此时P1执行时间大于P3所以先执行P3。这里有P1,P2,P3,三个进程,在0时刻,只有P1到达,所以只能执行P1,然后1时刻只有P2到达,所以只能执行P2,最后执行P3,执行顺序为:P1,P2,P3。这里有三个进程,P1,P2,和P3,他们的到达时间分别为0,1,2,根据先来先服务,先对进程P1进行处理,再对进程P2,接着再对进程P3。
2025-04-04 20:11:23
462
原创 API的定义
小娜作为柜员去帮助顾客完成存取与记账的操作,小娜在系统中就相当于是api对于程序的作用。总结:API有点类似于调用函数的接口能够帮助我们经松实现和其它组件的交互作用。②简单样例(这里借助简单的银行系统作为简单的样例)①概念:用于构建应用子程序的定义协议和工具。*顾客自己打开仓库,存取资金,记录账本。①直接调用现成服务,减少开发成本。②用户可以填入账本虚假信息。解决方案:雇一个柜员。②可以实现跨语言交互。③比共享数据更为安全。
2025-04-02 12:11:01
215
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人