STM32-智能台灯项目
一、项目需求
1. 红外传感器检测是否有人,有人的话实时检测距离,过近则报警;同时计时,超过固定时间则报警;
2. 按键 1 切换工作模式:智能模式、按键模式、远程模式;
3. 智能模式下,根据光照强度自动调整光照档位(低亮、中亮、高亮),没人则自动光灯;
4. 按键模式下,按键 2 可以手动调整光照档位;
5. 远程模式下,可以通过蓝牙控制光照档位、计时等;
6. 按键 3 暂停/开始计时,按键 4 清零计时;
7. OLED 显示各项数据/状态。
二、项目框图
三、光敏电阻传感器
光照越强,电阻越小
四、项目实现
19-串口打印功能
adc重命名light_sensor----光敏电阻传感器
exti重命名ia_sensor-------红外传感器
别忘了把对应文件里面也要改
打开项目
加载文件
记得要添加
编译
将代码调到编译不出错
先从软柿子捏
4.1 beep.c文件
修改引脚
编译,不出错
4.2 bluetooch.c 文件
增加串口
因为需要接收从串口传递进来的数据
所以需要定义一个变量来接收的数据
注意:这里接收到的数据是字符类型的,虽然在这里是字符型还是数字的无所谓,需要注意一下。
话外拓展:如何将字符串类型的“123”,转变成数字的123?
代码如下:---来自心知天气的4.5 的代码
这里用的atoi函数的作用就是:将字符串转换为整数的函数
原型为:
新建一个函数,作用如下图的注释
下面的注释是:
直接return command;
和间接返回command的区别
别忘了把新写的代码添加到.h文件
编译,不出错之后,进行下一步
4.3 hcsr04.c文件
修改引脚
编译不出错
4.4 light_sensor.c文件
因为light_sensor文件是由adc.c文件重命名的,所以,在light_sensor里只有adc_init函数,所以需要对light_sensor重新初始化一个函数。
重新写一个函数,获取光敏电阻传感器函数
在这里,使用通道1传递数据,那么为什么是通道1呢?
首先,接光敏电阻传感器的引脚PA1
在产品书册中可以看到,PA1接的是通道1
因为ADC是12位的,所以可以得到的值的范围就是0-2^12 = 0-4096
得到的值太大了,所以想要把得到的值转化成0-100,并且随着光照越强,让得到的值越大
100-(adc_get_result(ADC_CHANNEL_1)* 100 % 4096)中
adc_get_result(ADC_CHANNEL_1)的取值范围是0-4096
adc_get_result(ADC_CHANNEL_1)* 100 % 4096的取值范围是0-100
现在依旧是光照越强,所得值越小,我们的目的是,让光照越强,所得值越大
所以用100-(adc_get_result(ADC_CHANNEL_1)* 100 % 4096)就可以达到效果
最后将所得值强转为uint8_t
4.5 oled.c文件
取模
取汉字
:模式、智能、按键、远程、有、无、人、亮度、高、中、低、关、计时
将这段代码
改成
在oled屏幕上显示汉字的界面代码如下:
4.5 led.c文件
先保存关闭项目
然后将
将原来的led文件删除,把新粘贴的pwm文件重命名为led,如下图
打开项目
打开led.c文件,修改头文件
将定时器4改成定时器3
TIM4->TIM3
修改下面几个地方
接下来就是增加函数了
代码如下:
//初始化led灯
void led_init(void)
{pwm_init(500-1,72-1);
}
//关灯
void led_off(void)
{pwm_compare_set(0);//将CCR的值设置为0,灯的亮度为0led_level = 0;//档位:关灯状态下为0oled_show_chinese(70, 2, 17);//显示oled当前的状态
}
//led灯低亮
void led_low(void)
{pwm_compare_set(150);//将CCR的值设置为0,灯的亮度为0led_level = 1;//档位:关灯状态下为0oled_show_chinese(70, 2, 14);//显示oled当前的状态
}
//led灯中亮
void led_medium(void)
{pwm_compare_set(300);//将CCR的值设置为0,灯的亮度为0led_level = 2;//档位:关灯状态下为0oled_show_chinese(70, 2, 15);//显示oled当前的状态
}
//led灯高亮
void led_high(void)
{pwm_compare_set(450);//将CCR的值设置为0,灯的亮度为0led_level = 3;//档位:关灯状态下为0oled_show_chinese(70, 2, 16);//显示oled当前的状态
}
//获取当前档位的值
uint8_t led_get_level(void)
{return led_level;
}
4.5 key.c文件
因为在key文件中需要修改的按键引脚很多,所以直接在.h文件中定义宏函数
代码如下:
设置一个按键状态标志和按键的值(默认取值0,赋值为其他值时,不同的值代表按下不同的按键)
使用一个if来判断,当按键标志为1时并且检测到某一按键的电平变低时,代表有按键被按下。
进入到if中时,代表有按键被按下,按键状态标志发生变化,所以这时候需要判断是哪一个按键被按下了
检测到对应按键被按下之后,将按键的返回值取对应按键编号。
否则,按键没有被按下,返回按键的值,用于后续处理。
static uint8_t key_up = 1; 这行代码中的 key_up 是一个静态变量,它会在函数调用之间保持其值。这意味着它只会在第一次调用 key_scan 函数时被初始化为1,之后的函数调用中它会保持上一次的值。这是用来检测按键是否被“新”按下的关键。
编译,不出错
4.6 ia_sensor.c 文件
红外传感器
这里红外传感器使用中断的方式来写,但是有一个问题会出现
如果用中断的方式,当从没有人到有人这个状态变化时,只会触发一次中断,后续这个人持续靠近,也不会触发响应。
所以,红外传感器这段代码不能使用中断的方式
修改如以下图所示
ia_sensor.h文件
4.7 timer.c文件
定时器主要是用来计时,不需要其他的功能,所以定时器4足够用
将定时器2改为定时器4
关于定时器,在智能台灯项目中,主要是当有人的时候,开始计时,人走开,计时清空0
新增函数:
将psc和arr的值修改成7200和10000就是一秒
编译。不出错
4.7 main.c文件
书写主函数的代码,重点就是按照流程图一步一步的写代码
代码如下:
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "beep.h"
#include "bluetooth.h"
#include "hcsr04.h"
#include "ia_sensor.h"
#include "key.h"
#include "light_sensor.h"
#include "oled.h"
#include "timer.h"
//设置一个枚举类型用于存放台灯的模式
enum lamp_mode
{AUTO_MODE = 0, //智能模式MANUAL_MODE, //按键模式REMOTE_MODE //远程模式
};int main(void)
{HAL_Init(); /* 初始化HAL库 */stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */uart1_init(115200);led_init();beep_init();bt_init(9600);//波特率hcsr04_init();ia_init();key_init();ls_init();oled_init();timer_init(10000-1,7200-1);printf("hello word!\r\n");oled_show_init();//显示当前oled的状态/*是否有人标志位:默认无人状态;是否第一次检测到有人: 默认是;距离变量 = 0显示距离变量给三个字符就够用了(因为代码定义的是uint32类型的变量,而oled上只能打印字符串类型的)人坐下的时间统计变量承接按下哪个按键的变量,默认0承接台灯模式的变量,默认智能模式承接光照的数值,默认0承接led灯的高中低关,默认关*/uint8_t person_flag = 0,first_loop =1,dis = 0,dis_str[3] = {0},sit_time_str[3] = {0},key_num = 0,mode = AUTO_MODE,light_value = 0, led_level = 0;while(1){ person_flag = ia_flag_get();if(person_flag == TRUE) //有人{oled_show_chinese(10, 4, 9);if(first_loop == 1){timer_start();//定时器打开first_loop = 0;}dis = hcsr04_get_lenght();//超声波测距if(dis < 10 || sit_timer_get() >= 5)//距离小于10,蜂鸣器响或者有人停留5秒,开始响beep_ON();elsebeep_OFF();}else //无人{oled_show_chinese(10, 4, 10);timer_stop(); //定时器停止计时sit_timer_set(0);//坐下的时间设置为0first_loop = 1;//检测是否第一次有人座置1beep_OFF();//蜂鸣器不响dis = 0;//距离为0}//这行代码将整数 dis 格式化为一个至少3位宽的十进制数,并将结果字符串存储在 dis_str 指向的内存位置。sprintf((char *)dis_str, "%3d", dis);//座的距离显示在oled屏幕上oled_show_string(60, 4, (char *)dis_str, 16);sprintf((char *)sit_time_str, "%3d", sit_timer_get());//将坐下的时间显示在oled屏幕上oled_show_string(60, 6, (char *)sit_time_str, 16);key_num = key_scan();//承接按键的值,根据不同的值,判断按下了哪个按键if(key_num == 1) //按键1,切换工作模式{if(mode++ > 1) //mode的取值有0,1,2,因为先使用mode的值在进行++,所以有三个值可取mode = AUTO_MODE;//mode取值为2的时候,就是智能模式}else if(key_num == 3)//按键3,手动切换灯的状态{timer_toggle();}else if(key_num == 4)//按键4,数据清0{timer_stop();sit_timer_set(0);}switch(mode){case AUTO_MODE:{oled_show_chinese(60, 0, 3); //智oled_show_chinese(75, 0, 4); //能if(person_flag == TRUE) //判断是否有人:有人才可以根据光照强度设置灯的亮度{light_value = ls_get_value(); //获取到光敏电阻的值if(light_value < 40)//光照强度小于40,亮度高一些led_high();else if(light_value >= 40 && light_value <= 70)//光照强度中等,亮度中等led_medium();else if(light_value > 70)//光照强度很强,亮度弱led_low();}else//没有人,直接关灯led_off();break;}case MANUAL_MODE:{oled_show_chinese(60, 0, 5); //按oled_show_chinese(75, 0, 6); //键if(key_num == 2){led_level = led_get_level();//获取光的挡位if(led_level++ > 2)//可以取值的范围是0,1,2,3led_level = 0; //当数值为3的时候,为关灯switch(led_level){case 0:led_off(); //关灯break;case 1:led_low();//低亮break;case 2:led_medium(); //中亮break;case 3:led_high(); //高亮break;default:break;}}break;}case REMOTE_MODE:{oled_show_chinese(60, 0, 7); //远oled_show_chinese(75, 0, 8); //程switch(bt_rx_get() - '0') //从蓝牙中获取的值是字符串类型的,需要减去字符串类型的0,就得到了数字{case 0: //数字0,关灯led_off();break;case 1: //数字1,低亮led_low();break;case 2: //数字2,中亮led_medium();break; case 3: //数字3,高亮led_high();break;case 4: //数字4,开始计时timer_start();break;case 5: //数字5,停止计时timer_stop();break;case 6: //数字6,停止计时并且将计数器清0timer_stop();sit_timer_set(0);break;default:break;}break;}default:break;}delay_ms(20);}
}
相关文章:
STM32-智能台灯项目
一、项目需求 1. 红外传感器检测是否有人,有人的话实时检测距离,过近则报警;同时计时,超过固定时间则报警; 2. 按键 1 切换工作模式:智能模式、按键模式、远程模式; 3. 智能模式下,根…...
HTML之JavaScript DOM操作元素(2)
HTML之JavaScript DOM操作元素(2) 4.增删元素var element document.createElement("元素名") 创建新元素父元素.appendChild(子元素) 在父元素中追加子元素父元素.insertBefore(新元素,参照元素) 在特定元素之前新增元…...
智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码
一、 莲花算法 1.1 算法原理 莲花算法(Lotus flower algorithm,LFA)是一种受自然启发的优化算法,其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性,即所谓的“莲花效应”,是由其叶片表面的微纳…...
【复习】计算机网络
网络模型 OSI 应用层:给应用程序提供统一的接口表示层:把数据转换成兼容另一个系统能识别的格式会话层:负责建立、管理、终止表示层实体之间的通信会话传输层:负责端到端的数据传输网络层:负责数据的路由、转发、分片…...
【R语言】读取CSV数据时,显示[1] PK...<0 行> (或0-长度的row.names)
一、问题 当我使用以下代码读取CSV数据后,发现使用head(data)显示[1] PK...<0 行> (或0-长度的row.names),如下截图所示。 # 尝试读取文件 data <- read.csv("C:\\Users\\11300\\Desktop\\test.csv", header TRUE) # 检查数据 hea…...
CentOS环境变量配置+解析
环境变量的作用就是让系统快速通过你的命令找到你的可执行程序,windows系统里也同理,也就是你每次输入个命令,系统就会找环境变量里到底有没有叫这个命令进程的 一、环境变量配置 1.编辑配置文件 vim /etc/profile export PATH$PATH:$JAVA…...
最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程
ExoPlayer 是一个开源的 Android 媒体播放库,由 Google 开发和维护,用于替代 Android 系统自带的 MediaPlayer。它提供了更强大的功能、更好的性能和更高的灵活性,适用于各种复杂的媒体播放场景。所以被广泛用于各种播放器场景。 最近项目中…...
【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
6134. 哞叫时间II Week 1 2月20日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解,所以农夫约翰将竞赛…...
HTML/CSS中子代选择器
1.作用:选中指定元素中,符合要求的子元素. 子代选择器又称:子元素选择器,子选择器. 2.语法:选择器1>选择器2>选择器3>......选择器n 3.实例 <style>/* div中子代选择器 */div>a{color: red;}</style><div><a href"#">张三</…...
计算机毕业设计SpringBoot+Vue.jst网上购物商城系统(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
EasyRTC:全平台支持与自研算法驱动的智能音视频通讯解决方案
在智能硬件的浪潮中,设备之间的互联互通已成为提升用户体验的核心需求。无论是智能家居、智能办公,还是工业物联网,高效的音视频通讯和交互能力是实现智能化的关键。然而,传统音视频解决方案往往面临平台兼容性差、交互体验不佳以…...
C#: 日志函数
背景: 1.常见的官方日志模块项目过于复杂,且配置过于繁琐,针对这种现象,实现在大型项目中快速定位错误问题; 实现思路: 1.设置当前日志文件路径(获取到当前文件应用程序路径 \ErrorLog) 2.判…...
PyTorch 是如何进行机器学习的
1. 机器学习的核心流程 机器学习的核心是通过数据训练模型,让模型学会从输入数据中提取规律,并对新数据做出预测。整个过程可以分为以下几个步骤: 准备数据:收集并整理数据,分为输入(特征)和输…...
Java中的Stream API:从入门到实战
引言 在现代Java开发中,Stream API 是处理集合数据的强大工具。它不仅让代码更加简洁易读,还能通过并行处理提升性能。本文将带你从基础概念入手,逐步深入Stream API的使用,并通过实战案例展示其强大功能。 1. 什么是Stream API…...
【蓝桥杯单片机】客观题
一、第十三届省赛(一) 二、第十三届省赛(二)...
Spring Boot 中使用 @Transactional 注解配置事务管理
事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污…...
嵌入式八股文(五)硬件电路篇
一、名词概念 1. 整流和逆变 (1)整流:整流是将交流电(AC)转变为直流电(DC)。常见的整流电路包括单向整流(二极管)、桥式整流等。 半波整流:只使用交流电的正…...
《论多源数据集成及应用》审题技巧 - 系统架构设计师
论多源数据集成及应用写作框架 一、考点概述 本论题“论多源数据集成及应用”主要考察的是计算机软件测试工程师在数据管理和集成方面的专业知识与实践能力。论题聚焦于信息爆炸时代企业、组织和个人所面临的数据挑战,特别是如何有效地收集、整理和清洗来自不同渠…...
怎么在Github上readme文件里面怎么插入图片?
环境: Github 问题描述: 怎么在Github上readme文件里面怎么插入图片? https://github.com/latiaoge/AI-Sphere-Butler/tree/master 解决方案: 1.相对路径引用 上传图片到仓库 将图片文件(如 .png/.jpgÿ…...
【NLP 31、预训练模型的发展过程】
人的行为,究竟是人所带来的思维方式不同还是与机器一样,刻在脑海里的公式呢? 只是因为不同的人公式不同,所以人的行为才不同,可这又真的是人引以为傲的意识吗? 人脑只是相当于一个大型、驳杂的处理器&#…...
【计算机网络】传输层TCP协议
传输层 - layer4 - TCP协议 传输层:位于ISO模型的第四层 ——>L4 tcp协议意为传输控制协议(Transmission Control Protocol) 提供端到端的连接 端口号范围:0-65535 (2^16次方) 一个应用程序(服务)会占用…...
vscode settings(二):文件资源管理器编辑功能主题快捷键
参考资料 Visual Studio Code权威指南 by 韩骏 一. 文件资源管理器 1.1 文件资源管理器隐藏文件夹 默认情况下,Visual Studio Code会在文件资源管理器中隐藏一些文件夹(如.git文件夹)。可以通过files.exclude来配置要被隐藏的文件和文件…...
halcon机器视觉深度学习对象检测,物体检测
目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本, 然后训练模型,导出模型文件 这个是模型 mod…...
go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值
内容包括 1. 用interface{}接收值 2. 判断interface{}的类型 switch 3. 打印interface{}的类型 4. 通过字符串对结构体,interface{}等进行设置值、获取值处理 示例代码 package mainimport ("fmt""log""reflect" )type Student…...
单臂路由
单臂路由(Router on a Stick)是一种网络配置方式,主要用于在单个物理接口上实现多个VLAN之间的路由。它通常用于交换机与路由器之间的连接,适用于VLAN间通信需求较小的情况。 工作原理 VLAN划分:交换机上配置多个VLAN…...
SpringBoot【实用篇】- 测试
文章目录 目标: 1.加载测试专用属性3.Web环境模拟测试2.加载测试专用配置4.数据层测试回滚5.测试用例数据设定 目标: 加载测试专用属性加载测试专用配置Web环境模拟测试数据层测试回滚测试用例数据设定 1.加载测试专用属性 我们在前面讲配置高级的…...
NutUI内网离线部署
文章目录 官网拉取源代码到本地仓库修改源代码打包构建nginx反向代理部署访问内网离线地址 在网上找了一圈没有写NutUI内网离线部署的文档,花了1天时间研究下,终于解决了。 对于有在内网离线使用的小伙伴就可以参考使用了 如果还是不会联系UP主:QQ:10927…...
【深度学习】Adam和AdamW优化器有什么区别,以及为什么Adam会被自适应学习率影响
Adam 和 AdamW 的主要区别在于 权重衰减(Weight Decay) 的实现方式,具体如下: 1. 权重衰减(Weight Decay)处理方式 Adam:采用 L2 正则化,通过在梯度更新时手动添加 weight_decay 项…...
Pytorch的F.cross_entropy交叉熵函数
参考笔记:pytorch的F.cross_entropy交叉熵函数和标签平滑函数_怎么给crossentropyloss添加标签平滑-CSDN博客 先来讲下基本的交叉熵cross_entropy,官网如下:torch.nn.functional.cross_entropy — PyTorch 1.12 documentation torch.nn.fun…...
一文讲解Redis为什么读写性能高以及I/O复用相关知识点
Redis为什么读写性能高呢? Redis 的速度⾮常快,单机的 Redis 就可以⽀撑每秒十几万的并发,性能是 MySQL 的⼏⼗倍。原因主要有⼏点: ①、基于内存的数据存储,Redis 将数据存储在内存当中,使得数据的读写操…...
[特殊字符] Elasticsearch 双剑合璧:HTTP API 与 Java API 实战整合指南
🚀 Elasticsearch 双剑合璧:HTTP API 与 Java API 实战整合指南 一、HTTP API 定义与用途 Elasticsearch 的 HTTP API 是基于 RESTful 接口设计的核心交互方式,支持通过 URL 和 JSON 数据直接操作索引、文档、集群等资源。适用于快速调试、…...
某手sig3-ios算法 Chomper黑盒调用
Chomper-iOS界的Unidbg 最近在学习中发现一个Chomper框架,Chomper 是一个模拟执行iOS可执行文件的框架,类似于安卓端大名鼎鼎的Unidbg。 这篇文章使用Chomper模拟执行某手的sig3算法,初步熟悉该框架。这里只熟悉模拟执行步骤以及一些常见的…...
蓝桥杯之阶段考核
📖 Day 7:阶段考核 - 蓝桥杯官方模拟赛(限时 4 小时) 📖 一、如何高效完成模拟赛? 模拟赛是一种接近真实竞赛的训练方式。要高效完成模拟赛,需要掌握以下策略: 1. 赛前准备 ✅ 环…...
DeepSeek掘金——VSCode 接入DeepSeek V3大模型,附使用说明
VSCode 接入DeepSeek V3大模型,附使用说明 由于近期 DeepSeek 使用人数激增,服务器压力较大,官网已 暂停充值入口 ,且接口响应也开始不稳定,建议使用第三方部署的 DeepSeek,如 硅基流动 或者使用其他模型/插件,如 豆包免费AI插件 MarsCode、阿里免费AI插件 TONGYI Lin…...
华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)
文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下: 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件(Firmware࿰…...
红帽7基于kickstart搭建PXE环境
Kickstart 文件是一种配置文件,用于定义 Linux 系统安装过程中的各种参数,如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面,方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…...
【Python爬虫(58)】从0到1:Scrapy实战爬取大型新闻网站
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
DeepSeek使用从入门到精通
1. DeepSeek概述 - DeepSeek是国产大模型,提供网页版和App版。因其强大功能,遭受网络攻击,但国内用户可直接使用。 2. 入门技巧 - 忘掉复杂提示词:用简洁明了的需求指令,AI能自我思考并生成优质内容 - 明确需求&#…...
【分布式数据一致性算法】Gossip协议详解
在分布式系统中,多个节点同时提供服务时,数据一致性是核心挑战。在多个节点中,若其中一个节点的数据发生了修改,其他节点的数据都要进行同步。 一种比较简单粗暴的方法就是 集中式发散消息,简单来说就是一个主节点同时…...
一、初始爬虫
1.爬虫的相关概念 1.1 什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地爬取互联网信息的程序。 原则上,只要是浏览器…...
C语言番外篇(3)------------>break、continue
看到我的封面图的时候,部分读者可能认为这和编程有什么关系呢? 实际上这个三个人指的是本篇文章有三个部分组成。 在之前的博客中我们提及到了while循环和for循环,在这里面我们学习了它们的基本语法。今天我们要提及的是关于while循环和for…...
ipad连接电脑断断续续,不断弹窗的解决办法
因为ipad air 屏幕摔坏,换了一个内外屏,想用爱思检验一下屏幕真伪, 连接电脑时,断断续续,连上几秒钟然后就断开,然后又连上 然后又断开,不断地弹出信任的弹窗。 刚开始以为是数据线问题&#x…...
dockerfile构建haproxy
1. 结构目录 [rootlocalhost ~]# tree haproxy/ haproxy/ ├── dockerfile └── files├── haproxy-2.5.0.tar.gz├── haproxy.cfg├── install.sh└── start.sh1 directory, 5 files [rootlocalhost ~]# [rootlocalhost ~]# cd haproxy/ [rootlocalhost haproxy]…...
创建第一个 Maven 项目(一)
一、引言 在 Java 开发的广袤天地中,Maven 宛如一位全能的管家,发挥着举足轻重的作用。它是一个基于项目对象模型(POM)的项目管理和构建自动化工具,极大地简化了 Java 项目的开发流程。 Maven 的核心优势之一在于其强…...
深度学习pytorch之19种优化算法(optimizer)解析
提示:有谬误请指正 摘要 本博客详细介绍了多种常见的深度学习优化算法,包括经典的LBFGS 、Rprop 、Adagrad、RMSprop 、Adadelta 、ASGD 、Adamax、Adam、AdamW、NAdam、RAdam以及SparseAdam等,通过对这些算法的公式和参数说明进行详细解析…...
C#贪心算法
贪心算法:生活与代码中的 “最优选择大师” 在生活里,我们常常面临各种选择,都希望能做出最有利的决策。比如在超市大促销时,面对琳琅满目的商品,你总想用有限的预算买到价值最高的东西。贪心算法,就像是一…...
SSH无密登录配置
SSH无密登录配置 1、在用户目录下创建.ssh目录 mkdir /home/atguigu/.ssh2、在.ssh目录下生成ssh秘钥(需要切换到Hadoop集群使用的用户,再运行命令) ssh-keygen -t rsa然后敲(三个回车),就会生成两个文件…...
Rust并发编程实践:10分钟入门系统级编程
目录 学前一问:Rust为何而出现? 摘要 引言 正文解析: 一、Rust中的并发编程基础 1.1 线程 1.2 协程 二、Rust并发编程的高级特性 2.1 通道 2.2 原子操作 2.3 锁 三、实例展示:优化并发编程性能 1. 并行计算 2. 异步…...
Linux 命令大全完整版(06)
2. 系统设置命令 pwunconv 功能说明:关闭用户的投影密码。语法:pwunconv补充说明:执行 pwunconv 指令可以关闭用户投影密码,它会把密码从 shadow 文件内,重回存到 passwd 文件里。 rdate(receive date) 功能说明&a…...
VSCode 中设置 Git 忽略仅因时间戳修改导致的文件变更【使用deepseek生成的一篇文章】
在 VSCode 中设置 Git 忽略仅因时间戳修改导致的文件变更,可通过以下步骤实现: 确认是否为纯时间戳修改 首先确认文件的修改是否仅涉及时间戳,使用终端运行: git diff -- <file>若输出为空但 Git 仍提示修改,可…...