- 博客(45)
- 收藏
- 关注
原创 转码刷 LeetCode 笔记[2]:203. 移除链表元素(python)
移除链表节点,一般用的方法是,把前驱节点的指针域指向目标节点的下一个节点。先创建虚拟头节点,指向头节点,然后通过循环找到等于。已经删除了一个节点,如果再次右移,就会在循环中漏掉一个节点。节点就不在链表里了,所以不能返回这个被废弃的。如果链表开头的节点就等于。,那在循环中,这个旧的。,它表示此时真正的头节点。
2025-08-09 11:22:38
147
原创 转码刷 LeetCode 笔记[1]:3.无重复字符的最长子串(python)
len(seen) 是不重复的字符数量,当把题目改为“允许最多两个重复”时,len(seen)输出的结果就不是子串长度了。循环,可以只要出现重复字符,就删掉一次该字符,并实现左边界右移,直到窗口中没有重复子串为止。是窗口的实际长度,也就是从 left 到 right 之间的子串长度。输入"abcabcbb",输出的是5,正确结果是3。中并没有正确地移除所有在左边界左边的字符;输入"pwwkew",输出4,正确结果是3。中的每个元素,而不是只要重复就一直删。没有真正维护滑动窗口的左边界,只是。
2025-07-31 22:43:21
876
原创 0基础的人关于C++多态产生的一系列疑问
之前在面试的时候被问过懂不懂C++,懂不懂“多态”。我之前搞科研一直在用Python,不会C++。完全没听过“多态”这个词,只听说过“多模态”(无端联系,搞深度学习搞的)。全文主要记录了我的几大疑问:什么是多态?什么是面向对象编程?Python是面向对象编程(OOP)语言吗?什么是编译?除了面向对象编程,还有哪些编程范式?C++基类和Python父类有什么区别?
2025-03-14 19:31:54
668
原创 基于ESP32的桌面小屏幕实战[8]:任务创建
任务创建成功后,调度器会根据任务的优先级和时间片分配 CPU 时间,运行 test_task_example 函数中的代码。此处为 NULL,表示不需要任务句柄,如果需要在其他地方引用或管理此任务,可以传入指向句柄的指针,例如 TaskHandle_t 类型的变量地址。:任务名称,是一个字符串标识符,用于在调试时识别任务。:指向任务函数的指针,也就是任务的入口函数。:任务函数的输入参数,这里传递的是 NULL。是 FreeRTOS 提供的一个延迟函数,使任务进入阻塞状态,等待指定的时间后再继续执行。
2025-03-13 16:09:56
611
原创 基于ESP32的桌面小屏幕实战[7]:第一个工程Hello world!以及打印日志
本文构建下载了示例工程hello world,并在其中调用esp_log.h中的日志函数打印日志。
2025-02-05 20:45:16
806
原创 基于ESP32的桌面小屏幕实战[6]:环境搭建和软件基础
本文分为两部分:Linux开发环境搭建和软件基础。Linux开发环境搭建介绍了Ubuntu虚拟机安装及SSH、Samba配置,可以实现用VSCode操作虚拟机。为了后续工作,搭建了乐鑫ESP32 SDK环境。软件基础介绍了Linux开发常用的软件基础,包括Linux指令、Git、Makefile、裸机和RTOS。环境搭建ESP32学习方法:主要看API手册和历程API和寄存器的关系:因为寄存器的操作太复杂了,所以原厂工程师把寄存器的操作封装成API。
2025-01-25 21:02:41
840
1
原创 基于ESP32的桌面小屏幕实战[5]:PCB下单
在选择表面处理工艺时,应综合考虑产品的具体需求、环保法规以及成本等因素。例如,对于环保要求较高的消费电子和通信设备,无铅喷锡是首选;而对于某些对焊接性能有特殊要求的工业控制或汽车电子领域,有铅喷锡可能仍有应用。同时,对于需要高平整度和良好焊接性能的高端板子,沉金工艺可能是更合适的选择。选择需要SMT贴片,让立创贴好元器件再发给我。选择了SMT贴片后,订单中会提供钢网,不需要单独下单。可以看到“焊盘喷镀”有3个选项。其他地址、联系人信息、开票、支付方式填好。我在这里选择有铅喷锡,因为我穷。
2025-01-05 22:08:59
356
原创 基于ESP32的桌面小屏幕实战[4]:硬件设计之PCB Layout
板框大小根据屏幕尺寸确定。33mm×37mm画个框,然后在右侧轮廓对象设置宽和高鼠标右键,添加圆角可以先把元件移进来,然后点击2D预览3D效果图会更直观过孔可以把顶层和底层连起来一般在整个板框设计完之后进行铺铜。铺铜指的是在PCB的闲置空间或没有布线的区域填充固体铜皮,这些铜区也被称为灌铜或敷铜。增加载流面积,提高载流能力减小地线阻抗,提高抗干扰能力降低压降,提高电源效率与地线相连,减小环路面积多层板对称铺铜可以起到平衡作用填充区域可以设置禁止铺铜。
2024-12-15 20:21:38
1303
原创 反复出现 idf.py: command not found 的解决办法
使用ESP-IDF时不用反复安装编译链、设置环境,而用 get_idf 命令代替之。
2024-12-15 19:40:38
1366
原创 基于ESP32的桌面小屏幕实战[3]:硬件设计之主控模块、墨水屏和TP、USB转串口、蜂鸣器、稳压
由于它的容量较大,它能够提供较长时间的能量存储,帮助平滑电源电压的较大波动。虽然它的容量较小,但在高频下,它的等效串联电阻(ESR)较低,因此对于高频噪声的抑制效果更好。TP触摸屏,通常指的是Touch Panel触摸屏,是一种透明的触摸感应面板,它安装在显示屏幕的前面,用于检测用户的触摸操作并将其转换为电信号,以供电子设备(如智能手机、平板电脑、触摸屏显示器等)处理。使用一个大容量和一个小容量电容的原因是它们各自对电源噪声的不同频率成分有不同的响应,共同工作可以更有效地抑制宽频谱范围内的噪声。
2024-11-11 16:30:54
1567
原创 基于ESP32的桌面小屏幕实战[2]:硬件设计之充电管理
确定SCL和SDA连接的引脚,需要在《ESP32WROOM32E ESP32WROOM32UE 技术规格书》中找哪个引脚是固定有I2C功能的。一般可以理解为输出电压=VCC就是高电平,输出电压=GND(一般是0V)就是低电平,分别用1和0来表示,这个是理想值。在ESP32的datasheet的附录“A.4. IO_MUX”表格中显示,IO34和IO35只支持输入,不支持输出。高电平最低要达到多少伏,比如给出的是3.7V,那么在3.7~VCC的范围内,单片机都会识别成高电平。点击放置就能直接用。
2024-11-06 15:13:50
1199
原创 51 单片机[11]:蜂鸣器播放提示音和音乐
如果最短的是四分音符,那么把四分音符当作1,二分音符就为2,全音符就为4。无源蜂鸣器通常由一个线圈和一个振动膜组成,当给无源蜂鸣器施加变化的电压信号时,线圈中的电流会产生变化的磁场,这使得与线圈相连的振动膜振动,从而产生声音。由开发板的原理图可知,蜂鸣器是默认被使用的。每隔1毫秒触发一次定时器中断,每次中断执行的任务都是翻转Buzzer的状态,这就相当于给蜂鸣器输入了一个频率为 500Hz 的方波,导致它持续发声。8051单片机的机器周期是晶振频率的1/12,因此在12MHz晶振下,机器周期为。
2024-10-24 16:17:13
2158
原创 解决No module named ‘triton‘的问题
在Windows系统中,这是因为triton只支持Linux系统。需要安装triton for windows
2024-09-03 17:13:01
3361
5
原创 如何在D盘创建虚拟环境?包括安装PyTorch和配置PyCharm
本文首先在D盘创建了虚拟环境,然后在虚拟环境中安装了PyTorch,最后配置了pycharm的解释器。
2024-08-31 15:00:48
2971
原创 51 单片机[9]:LED点阵屏
LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。
2024-07-26 11:17:48
1044
原创 51 单片机[7]:计时器
51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。定时器作用:(1)用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作(2)替代长时间的Delay,提高CPU的运行效率和处理速度……定时器个数:3个(T0、T1、T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的。
2024-07-08 09:12:30
2832
原创 51 单片机[5]:模块化编程及LCD1602调试工具
模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。把上个例子的Delay.c和Delay.h复制粘贴到项目目录,并添加进左侧边栏。现在,在main.c文件中,可以通过鼠标右键打开Delay.h文件。选择.h文件,同样命名为Delay,点击Add。
2024-06-04 16:26:07
1082
原创 51 单片机[6]:矩阵键盘及密码锁
按下S1,显示0001,按下S3,显示0013。但是当数字很大超出数据范围时,密码就出现错误了,显示的数字就不按按下的按键显示了。,然后快速循环这个过程,最终实现所有按键同时检测的效果。当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流……,然后快速循环这个过程,最终实现所有数码管同时显示的效果。按下S1,LCD显示01,按下S2,LCD显示02。:S1 ~ S9为数字1 ~ 9,S10为0,S11为确认,S12为取消。注意,要在下划线中间打一个竖杠,这样在点击模板后,光标会出现在该位置。
2024-06-04 10:36:24
1260
1
原创 51 单片机[4]:数码管显示
由数码管的引脚定义可知,89C52开发板上的数码管是4位一体的,4个数码管共阴极,通过位选确定哪个位显示数字,通过段选确定显示什么数字。P07是高位,P00是低位。这种做法节约了I/O口,但是限制了数码管的显示,因为在4个数码管中,无论几位显示,都会显示相同的数字。事实真是这样吗?事实上,我们可以利用数码管的余辉和人眼的视觉暂留来同时显示不同的数字。
2024-05-19 18:04:14
3366
原创 51 单片机[3]:独立按键控制LED
如图所示,独立按键在开发板的左下角,K1~K4。独立按键是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。独立按键在开发板原理图中的样子如下图所示。
2024-05-17 10:45:01
4159
原创 C 语言笔记:字符串处理函数
获取字符串长度函数、字符串拷贝函数、字符串追加函数、字符串比较函数、字符查找函数、字符串匹配函数、字符串转换数值、字符串切割函数、格式化字符串操作函数、const
2024-05-02 15:49:25
1054
2
原创 C 语言笔记:指针(上)
内存相关知识、指针的相关概念、指针的定义方法、指针的分类、指针和变量的关系、指针和数组元素之间的关系、指针的运算、指针数组、指针的指针、字符串和指针
2024-03-29 09:42:40
771
1
原创 如何解决 Qt 6.6.0 里 printf() 输出中文乱码?
在使用Qt 6.6.0时,printf()中出现中文时,输出可能会出现乱码,本文解决了这一问题。
2024-03-12 10:42:22
708
1
原创 C 语言笔记:函数(上)
库函数:C 库实现的自定义函数:程序员自己实现的函数系统函数:操作系统实现的函数函数的定义方法返回值类型 函数名字(形参列表) {// 函数体,函数的功能在函数体实现 }函数名字是标识符,所以需要满足标识符的命名规则形参可以有,也可以没有,也可以有多个,但是即使是没有,函数名字后面也必须加括号函数体上下位置必须有大括号如果要返回函数的结果,则return后边的变量或者值必须与函数名左边的返回值类型一致形参必须带类型,而且以逗号分隔函数的定义不能嵌套所有函数的定义是平行的。
2024-02-29 19:53:24
845
原创 理解『注意力机制』的本质
本文介绍了注意力机制的本质。从一个简单的引例开始,首先介绍了一维情况的注意力机制。进一步地,推广到多维情况的注意力机制。最后,介绍了自注意力机制。本文举的例子简单易懂,公式推导清晰明了。
2024-02-04 16:17:21
1074
1
原创 手撸代码:从零开始的 AlexNet 图像分类(PyTorch框架)
本文在 PyTorch 框架下搭建了 AlexNet ,并在 CIFAR10 上完成了图片分类。同时,更正了一些原论文中的小错误(如:输入图像尺寸)。由于 CIFAR10 没有验证集,本文将训练集的 10% 当作验证集。
2024-02-03 14:24:05
1298
1
原创 详细教程:AutoDL 如何配置深度学习环境?
本文在AutoDL提供的JupyterLab中配置了深度学习环境。手把手教学!首先创建了base环境,然后创建了自己的环境(命名为x9py38),并在x9py38环境中安装了一些深度学习包,具体包括PyTorch、jupyter d2l和ipykernel。
2024-01-31 15:26:17
22954
29
原创 手撸代码:从零开始的 LeNet5 图像分类(PyTorch框架)
本文介绍了如何从0开始构建 LeNet5 去识别手写数字(在MNIST数据集上)。代码包括三大部分:网络结构部分、训练部分、测试部分。在编LeNet5部分代码之前,本文详细地梳理了LeNet5的结构,对于初学者十分友好。训练和测试部分也都有详细的代码说明。在实现 LeNet5 手写数字识别的同时,补充了很多CNN的基础概念和Python编程知识。包括:PyTorch中的常用库和其中的模块、特征图在卷积过程中尺寸如何变化、如何把数据加载进训练程序等。本文不是通过复制粘贴代码介绍如何实现 LeNet5 的手写数
2024-01-31 14:53:53
1938
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人