
笔记
文章平均质量分 67
无数碎片寻妳
打造自己的温馨小屋
展开
-
快捷键输出 打开 特定文件夹+资源管理器
在我们打开很多很多东西的时候, 此时此电脑这个图标已经被盖住了, 如果此时拥有路径, 或者记得那个路径, 如何快速打开这个文件夹, 当然, 可以直接多点击两下,但是不用这么麻烦我们让脚本帮我们做然后输入C: 或者 D: 就可以打开C盘或者D盘, 或者直接把绝对路径加入, 即可 打开那个文件夹如果只想打开一个 此电脑呢?好说, 直接。原创 2025-03-06 17:10:52 · 404 阅读 · 0 评论 -
电脑自动执行办公流程技术突破
之前写脚本, 只是利用autohotkey做一些简单的上下左右移动, 后来随着工作量的增加, 会发现一些重复性的工作, 那么通过组合键,把这一套流程记录后, 然后触发, 那么就会大大节省效率. 但是一些技术性的细节, 会阻挡功能的实现, 后续我会持续在专栏更新, 都是利用ai进行实现的.原创 2025-02-15 00:16:29 · 1183 阅读 · 1 评论 -
三端回链增加截图功能
在上一个版本中 , 我们成功获取了回链, 只是我后续还想增加自定义截图功能触发快捷键是 ctrl+alt+g。原创 2025-02-01 14:10:25 · 554 阅读 · 0 评论 -
深入解析STM32开发与应用
今天我们学习了 ARM 处理器的基本概念、CPU 内部结构以及虚拟内存、内存类型等内容。掌握这些基础知识对于嵌入式开发非常重要,尤其是在面试时,能够清晰地解释这些概念,会大大提升你的竞争力。希望大家在实际开发中能够灵活运用这些知识,提升编码效率和代码的可维护性!大家好,今天我们开始讨论 STM32 的最小系统。面试中,这个问题是常见的基础问题,了解它非常重要。我们先来解释什么是“最小系统”。最小系统指的是,能够让 STM32 单片机正常工作的最基础、最小的外围电路。原创 2025-01-24 10:43:37 · 897 阅读 · 0 评论 -
本地视频进度加入笔记+根据进度快速锁定视频位置
在学习的过程中, 如果我们想快速记录当前看视频的位置, 后续回溯查找就会非常方便了。原创 2025-01-12 22:46:48 · 841 阅读 · 0 评论 -
win10上部署win11记事本
win10的老用户们, 不肯升级win11, 绝对是有留恋的东西吧,就想win7用户那样, 但是win11在日益更新, 特别是记事本, 增加了很多好用的功能, 比如多标签页, 但是不想升级win11, 还想用, 怎么办?我在网上找到了解决方案, 接下来, 我们来操作一下吧.原创 2024-12-09 18:40:07 · 2265 阅读 · 2 评论 -
makefile动态库链接代码示例
make 一键链接, 代码示例。原创 2024-09-27 18:57:09 · 180 阅读 · 0 评论 -
大学生如何不带电脑去机房与屏幕被控解决方案
计算机专业的同学, 应该都有感触, 上计算机实验课, 机房有电脑, 但是有时候没网, 或者需要传输数据, 或者是需要把实验软件带回去自己操作, 所以必须带着自己的笔记本电脑, 但是电脑太重, 并且确实没必要带电脑.原创 2024-09-04 19:49:16 · 1283 阅读 · 0 评论 -
OLED预警系统与按键菜单交互代码实操
OLED顾名思义就是一个屏幕, 我们让一个屏幕在特定的时间, 显示特定的画面, 就是我们所需要的, 因为这里是涉及到环境预警,所以需要加入一个应急接管页面的选项, 所以我们要把按键直接操作画面, 变成按键操作完, 我们根据优先级判断之后, 才能确定要显示的是哪个画面.原创 2024-09-01 00:10:04 · 2027 阅读 · 0 评论 -
云盘挂载 开机自动模拟 cmd- alist server
帮我写一个vbs命令:在D:\sky目录下, 然后cmd, 进入命令行后, 输入 alist server 然后回车。这里 这个目录, 换成自己的 alist.exe所在目录。接着, 我们win+r, 输入 shell:startup。原创 2024-07-12 23:12:48 · 660 阅读 · 0 评论 -
重装系统心得
原则:1、看客户需求2、满足日常办公效率3、在满足最流畅运行的条件下,进行必要软件安装。用了两天,终于把我哥的think pad系统备份重装完。修复后效果如下 :按下开机按键,秒表计时一分半后,电脑可以基本流畅丝滑使用,日常办公无明显卡顿。刚拿到手的电脑的的效果:从开机到能进行操作,需要五分钟。初步判断原因 :电脑垃圾或碎片太多,也可能中流氓软件进行的操作 : 通过浏览器,下载阿里云盘,把我的软件先传输到电脑上。然后使用geek升级版,卸载部分流氓pdf和看图软件。然后进行重启观看效原创 2023-01-24 00:02:50 · 1149 阅读 · 0 评论 -
图(Graph)的定义
• 集合V(vertex):顶点的有限集合,记为V(G) ▪ 对于n个顶点的图,对每个顶点连续编号,即顶点的编号为0 ~ n-1 ▪ 通过编号唯一确定一个顶点• 集合E(Edge):连接V中两个不同顶点(顶点对)的边的有限集合,记为E(G). ♥ 无向图 • 边之间的"顶点对"是无序的,则称图G为无向图. • (i,j)表示一条无向边,和(j,i)是同一条边。 ♥ 有向图 • 边之间的顶点对是有序的,则称G为有向图。原创 2022-12-24 14:32:20 · 987 阅读 · 0 评论 -
图结构
▪ 18世纪初普鲁士的哥斯尼堡,有一条河穿过,河上有两个小岛,有七座桥把两个小岛与河岸联系起来。▪ 问题:一个步行者怎样才能不重复、不遗漏地一次走完七座桥,最后回到出发点。▪ [数据表示----数据结构]设邻接矩阵arc[n] [n]存储图.把图提取出来,转换成我们所擅长的图模型,去用计算机解决问题。▪ 难点:可能的走法----7! • 集合V: 顶点的有限集合。抽象出本质的东西,然后解决问题。▪形式化定义: G=(V,E) • 集合E: 边的有限集合。从哥尼斯堡的七桥问题开始。原创 2022-12-22 12:40:04 · 587 阅读 · 0 评论 -
哈夫曼树的构造及应用
▪ 具有最小带权路径长度的二叉树称为哈夫曼树,或称为最优二叉树。原创 2022-12-19 16:08:32 · 1694 阅读 · 0 评论 -
近期写博客的心路历程
最近又拖更了, 为什么呢?说来也惭愧 , 还是返回原点吧。当初为什么写博客呢?当初是听老师说,写博客可以把自己的思维拓展起来,从学习中,把自己的思路写下来。的确,从中我体会到了写博客的成就感,但那都是来源于攻克一个非常难的项目,所带来的的喜悦。我的纠结之处就在这里,我无法衡量—难的项目和需要打基础的项目直接的分量 , 对于需要打基础的博客,我很想去写,但是又力不从心了 , 脑子会了,到了写代码思路,需要想大半天,可能一天只能写一节课的知识点。原创 2022-12-14 20:45:50 · 216 阅读 · 2 评论 -
线索二叉树构建和遍历
/定义数据域 int ltag , rtag;//定义左右孩子的标志位,1为线索,0为有孩子 struct node * lchild;//左指针 struct node * rchild;//右指针 } TBTNode;原创 2022-12-14 19:54:31 · 2726 阅读 · 1 评论 -
二叉树的构造(如何唯一确定一棵二叉树?附证明)
通过构造二叉树的先序序列和中序序列,后序序列,我们可以发现,每一步都是有条不紊的,每一步都是分层次的,我们通过构造序列的过程,逆向可以构造出二叉树,就间接地证明了,这个定义的合法性.④ 根据中序序列的第二个节点,就可以确定下一层级的根节点,然后拿这个根节点去查找中序遍历的序列,就可以找到此层级的左子树和右子树,以此类推。③我们通过查找中序序列的根的左边的节点个数,就可以确定二叉树的左子树,根据根右边的节点个数,就可以确定二叉树的右子树。▪ 不同的二叉树可能具有相同的先序序列、中序序列和后序序列。原创 2022-12-11 18:04:46 · 3608 阅读 · 3 评论 -
层次遍历二叉树
既然要定义存储其双亲信息,那我们我们就需要遍历二叉树,那就非层次遍历莫属了,因为层次遍历没有递归遍历的冗余信息,没有先序遍历、中序遍历、后续遍历来回操作的烦恼,只需要按部就班的进行进队和出队节点即可,方便我们进行遍历每个节点。既然我们了解了层次遍历的次序, 那接下来就是层次遍历的设计,我们是逐层遍历,在同一层次上面的节点,先遍历的节点,其孩子在下一层也有优先权,所以我们在遍历到一个节点时,其孩子也要进入排队的序列。唯一需要注意的就是,当遍历一个节点的时候,我们要把其孩子入队,以方便下一层节点的有序遍历。原创 2022-12-10 19:09:54 · 2276 阅读 · 0 评论 -
二叉树遍历非递归算法
•三种遍历 • 先序遍历: 根节点–>左子树–>右子树 • 中序遍历: 左子树–>根节点–>右子树 • 后序遍历: 左子树–>右子树–>根节点•两类算法 • 递归算法(具体看我上一篇文章) ♥直观,易读 ♥效率低下 • 非递归算法 ♥ 如果一个算法可以使用递归或循环来进行完成,在不影响代码阅读的情况下,可以使用循环,来降低复杂度。下面介绍二叉树的遍历,把用。原创 2022-12-09 18:31:27 · 5893 阅读 · 1 评论 -
递归的效率问题及循环比较
大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的.具体是每次调用函数本身要保存的内容包括:局变量、形参、调用函数地址、返回值。那么,如果递归调用N次,就要分配N*局部变量、N *形参、N *调用函数地址、N *返回值。这势必是影响效率的。递归与循环是两种不同的解决问题的典型思路。当然也并不是说循环效率就一定比递归高,递归和循环是两码事,递归带有栈操作,循环则不一定,两个概念不是一个车层次,不同场景做不同的尝试。**优点:**代码简洁、清原创 2022-12-07 20:50:29 · 915 阅读 · 0 评论 -
二叉树的遍历
▪ 先序遍历二叉树的过程 •访问根节点 • 先序遍历左子树 • 先序遍历右子树构建思路 :代码实现:中序和后序遍历的递归算法● 中序遍历二叉树的过程 • 中序遍历左子树 • 访问根节点 • 中序遍历右子树思路: 都差不多,都是在同一层级上进行递归调用,我们换一下顺序即可代码实现:● 后序遍历二叉树的过程 • 后序遍历左子树 • 后序遍历右子树 • 访问根节点代码实现:二叉树遍历的相关问题♥问题1 • 假设二叉树采用二叉链式存储 ,设计算法,计算一棵给定二叉树的所有节点原创 2022-12-06 22:51:38 · 466 阅读 · 1 评论 -
二叉树的基本运算
上一讲我们已经讲了创建二叉树,所以这一讲,我们来说一下二叉树的基本运算方法,为以后二叉树的运用打下基础:(1)查找节点FindNode(*b,x):(2)找孩子节点LchildNode§和Rchild-Node§:(3)求高度BTNodeDepth(*b):(4)输出二叉树DispBTNode(*b):如上图,就是我们举的例子:我们定义的二叉树节点结构如下:(1)查找节点 FindNode(*b,x)•找到值为x的节点后返回节点指针,否则返回NULL•用递归算法,采用"根-左子树-右子树"的顺序,查找值原创 2022-12-06 16:51:47 · 2437 阅读 · 0 评论 -
二叉树的存储结构
我们后来又遇到 B, B后边有“(” , 我们就把 B 压入栈顶 , 然后我们接下来处理的元素 ,就是 栈顶 B 的孩子 , 直到遇到 “)” 我们才能断定此层嵌套结束, 弹出栈顶的一个根节点。• 此时,我们有发现一个问题 , 我们根据图示知道 , 遍历到 “(” , 刚才遇到了 B ,所以接下来处理的是 B 的子树, 但是计算机怎么知道,我们是需要处理元素是 后遇到的 B呢?接下来 ,如果出现元素,就是B 的左孩子,如果出现逗号,那接下来 ,再出现元素就是B的右孩子 ,欲知后事如何,请接着遍历。原创 2022-11-15 20:44:40 · 4309 阅读 · 2 评论 -
二叉树与树、森林之间的转换
我的理解是普通的树状结构自带的特点太少,而二叉树有很多其自身特点比如满二叉树每层的节点个数是确定,总节点个数个数确定了,其边的个数也就确定了,还有很多已经研究明白的性质,在具体的实际问题中抽象出来的树状结构可能并不是二叉树,如果针对么个树状结构提供一套解决方案那么树状结构不同,代码会有差异,而此时,如果把通用的树状结构转换为二叉树,就可以使用已经研究明白的二叉树的性质解决问题了。我们知道 , 森林转换成二叉树 , 二叉树所有节点的右孩子,转换前,是其此节点的兄弟 , 左孩子仍为其左孩子 ,原创 2022-11-15 11:51:59 · 5051 阅读 · 0 评论 -
树的存储结构
{//定义数据区//指向其双亲在数组中的位置{//存储数据//存储其孩子的指针数组}TsonNode;// MaxSons 为最多的孩子节点个数。原创 2022-11-12 14:04:18 · 1039 阅读 · 0 评论 -
树的性质及其证明
• 设具有 n 个节点的m次树的高度为h, 若在该数中前h-1层都是满的,即每一层的节点数都等于m^(i-1)个(1原创 2022-11-11 20:32:09 · 1204 阅读 · 0 评论 -
树的基本术语
● 对于任意两个节点 di 和 dj , 若树中存在一个节点序列 di, di1,di2 , ..., din, d j. 使得序列中除 di外的任一节点都是其在序列中的前一节点的后继 ,则称该节点序列为由 di 到d j 的一条。● 每个节点的后继 , 被称作该节点的孩子节点(或子女节点).相应地 ,该节点被称作孩子节点的双亲结点(或父母节点)● 节点的层次从树根开始定义,根节点为第一层,它的孩子节点为第二层,以此类推。● 从树根节点到达节点的路径上经过的所有节点被称作该节点的祖先节点.原创 2022-11-11 16:52:13 · 1260 阅读 · 0 评论 -
树结构导学
树 : T = {D,R}● D 是包含 n 个节点的有穷集合(n>=0)• 当 n = 0 时 , 为空树● 当 n > 0 时 , 关系 R 满足以下一对多关系• 有且仅有一个节点 d0∈D 没有前驱节点, 节点 d0称作树的根节点• 除根节点d0外 , D 中的每个节点有且仅有一个前驱节点• D中每个节点可以有零个或多个后继节点有趣的术语:●每个节点的后继 , 被称作该节点的孩子节点(或子女节点) . 相应地 , 该节点被称作孩子节点的双亲节点(或父母节点)原创 2022-11-11 16:00:38 · 558 阅读 · 0 评论 -
广义表的存储结构及其基本运算
通过观察上面的广义表结构 , 广义表在同一层的数据元素包括单个数据元素(原子)和广义表的子表所以我们需要对这两者节点进行定义我们可以为这两种节点设置类型标识 :1 ---子表 , 0----原子并且原子和广义表子表的存储的数据也不一样 , 原子存放的是 数据data, 广义表存放的是指向下一个元素的指针数据{int tag;//节点类型标识🤣: 1-1子表,0-原子union{//子表指向下一级的数据节点}val;//同级指向//指向下一个元素}GLNode;原创 2022-11-10 20:37:57 · 3068 阅读 · 0 评论 -
广义表的概念及其存储
ADT GList{数据对象:D = {ei | i=1,2,...,n,n>=0, ei∈AutoSet 或 GList} //AutoSet为某数据对象数据关系:数据操作:(1) CreatGL(s): 创建广义表(2) GLLength(L): 求广义表长度;(3) GLDepth(L): 求广义表深度;(4) DisGL(L): 输出广义表L;(5) Head(L): 求表头(6) Tail(L): 求表尾}原创 2022-11-09 20:18:34 · 319 阅读 · 0 评论 -
稀疏矩阵转十字链表
● 每个非零元素用一个节点表示 , 其中 i , j, tag.value 分别代表非零元素所在的行号,列号和相应的元素值;● 头节点的i,j 代表总行数和总列数● down 和 right 分别称为向下指针和向右指针,分别用来链接同列中和同行中的下一个非零元素节点.● 作为头结点, tag.value 变为tag.link,代表头结点的链 .下面,为了我们后面构建十字链表 , 我们先假设已经创建好了十字链表 , 先尝试输出。原创 2022-11-08 22:36:12 · 2971 阅读 · 3 评论 -
稀疏矩阵的压缩存储
• 一个阶数较大的矩阵中的非零元素个数s相对于矩阵元素的总个数t很小时,即s原创 2022-11-07 22:33:26 · 1785 阅读 · 2 评论 -
对角矩阵的压缩存储
• 若一个n阶方阵A满足,其所有非零元素都集中在以对角线为中心的带状区域中,则称其为n阶对角矩阵。原创 2022-11-07 11:08:23 · 2623 阅读 · 4 评论 -
矩阵存储和特殊矩阵的压缩存储
•若一个n阶方阵A[n][n]中的元素满足aij = aji(0原创 2022-11-06 16:05:28 · 300 阅读 · 0 评论 -
数组的基本概念和存储结构
• 行序为主序的线性排列次序 : a11, a12,a13,....., a1n,a21,a22,...., a2n,...., am1,am2,...,amn•实际存储就是一维概念•任一元素aij 的存储地址:(我们是从 1 ,开始算的,是逻辑上的位序 , 所以此元素前面的所有行就是 i -1 , 此元素所在行的前面的元素就是 j-1 , 初始地址加上前面的所有元素乘以单个元素所占有的空间就是 此元素的开始地址)原创 2022-11-06 15:04:22 · 1687 阅读 · 0 评论 -
KMP算法从常规思维到解题思路(感谢博主:sofu6)
如果用数学公式来表示是这样的这个相当重要,如果觉得不好记的话,可以通过下图来理解:弄明白了这个就应该可能明白为什么可以直接将j移动到k位置了。转载 2022-10-30 10:43:38 · 327 阅读 · 2 评论 -
串的匹配 (KPM算法由来引导)
引入 KPM 算法的前提是 , B-F算法中,匹配失败后不必完全从头再来 , 找到可以利用的信息 , 可以进行跳跃性匹配下面 , 我们对字符串匹配的一些思路进行剖析:开始匹配的操作 ,我们会让 目标串 s , 和 模式串进行对齐,就想如图所示:我们当然是从串 t 的头结点开始对比串 s :a串 t :a对比 第一个元素 , 符合串 s :ab串 t :ab然后对比第二个 元素符合串 s :aba串 t :abc。原创 2022-10-28 13:32:54 · 409 阅读 · 0 评论 -
串的匹配 (Brute - Force 算法)
我们电脑里存放了一段病毒文件 , 我们不可能人工地去一个一个对比 , 这是很耗费时间的 , 我们需要拿着病毒文件 , 和 系统文件作对比 , 逐个去对比 ,找出病毒位置。逐个进行对比 , 如果不同,则 串 t 向后移动 , 从串 t 开头和 串 s 第二个元素对齐,逐个遍历 ,总能找出答案 , 符合,或者不符合。上面是机器的模拟对比 , 我们可以拿两个纸片 , s固定 , 拿着 t ,从开头开始对比 , 不匹配,就后移一位 , 然后 再进行对比匹配。原创 2022-10-27 15:21:46 · 1457 阅读 · 3 评论 -
串的链式存储及其基本操作实现
我们大部分时间都是在使用数组来存储串 , 然后进行操作的 , 对于链串我们不经常使用, 在这里我们为了练习的需要 , 实现一下链串的基本操作 , 其实也就是插入,删除, 替换 ,然后指针的交替罢了.我们通常的操作是 在链串里面 ,每个节点存储四个字节的数据, 就是一个字的数据 , 在这个我们方便对数据进行操作 , 每个 节点只放一个字节 , 那一个节点明明可以存储 4 个字节 , 我们只存一个字节 ,那就会空余 3 个字节的空间 , 那也没办法 , 继续操作即可。原创 2022-10-25 20:38:06 · 4082 阅读 · 5 评论 -
串的顺序存储的应用实例二
苏格拉底是古希腊著名的哲学家。有一天,他带领几个弟子来到一块麦地边。那时正是麦子成熟的季节,地里满是沉甸甸的麦穗。苏格拉底对弟子们说:“你们去麦地里摘一个最大的麦穗,只许进不许退。我在麦地的尽头等你们。”弟子们陆续走进了麦地。到处都是大麦穗,哪一个才是最大的呢?他们埋头向前走,看看这一株,摇了摇头;看看那一株,又摇了摇头。虽然有人也曾试着摘了几穗,但想到前面可能还有更大的,于是就毫不犹豫地把手里的麦穗扔掉了。就这样,他们一边低着头往前走,一边用心地挑挑拣拣,经过了很长一段时间。原创 2022-10-21 20:46:40 · 544 阅读 · 0 评论