当前位置: 首页 > news >正文

嵌入式蓝桥杯电子赛嵌入式(第14届国赛真题)总结

  1. 打开systic

 

  1. 生成工程
  2. 编译查看是否有问题
  3. 同时打开对应需要的文档

修改名称的要求 

5.简单浏览赛题

选择题,跟单片机有关的可以查相关手册

  1. 答题顺序

 先从显示开始看

1,2 

  1. 所以先打开PA1的定时器这次选TIM2

从模式、TI2FP2二通道、内部时钟、1通道设为直接2通道设置为间接、通道配置为:间接通道1设置为下降沿,直接通道设置为上升沿 

所以先打开PA7的定时器这次选TIM17_CH1

3后续再看

4 先在产品手册找到R37

检测一下J11跳线帽是否在,需要是连上的

定时器配置及参数扫描 

选择单边模式 

参数配置

连续不需要,用程序驱动就可以

配置过采样、使能过采样,3bit,方便滤波,采样时间,防止程序卡死

6、通过按键完成界面切换、参数设置等功能

按键配置

Led配置 

 

PD2设置默认为低电平

生成文件---10ms定时器用与按键使用

3.3显示界面 

  1. 实时数据界面
  1. 报警参数界面

 

  1. 报警统计界面

 

4)回放设置界面 

3.6 按键功能 

 

 

3) B3:定义为“加”按键。 ① 在报警参数界面下,按下 B3 按键: 若当前选择的是频率上限参数(FH),FH 值加 1000Hz。 若当前选择的是电压上限参数(AH),AH 值加 0.3V。 若当前选择的是温度上限参数(TH),TH 值加 1℃。 ② 在回放设置界面下,按下 B3 按键: 若当前选择的是脉冲信号回放分频系数(FP),FP 值加 1。 若当前选择的是电压信号回放最小值(VP),VP 值加 0.3V。 若当前选择的是记录回放时间(TT),TT 值加 2 秒。 ③ 在实时数据界面下,按下 B3 按键: 若设备已经完成了数据记录,则通过 PA7 引脚回放“电压信号”。

4) B4:定义为“减”按键。 ① 在报警参数界面下,按下 B4 按键: 若当前选择的是频率上限参数(FH),FH 值减 1000Hz。 若当前选择的是电压上限参数(AH),AH 值减 0.3V。 若当前选择的是温度上限参数(TH),TH 值减 1℃。 ② 在回放设置界面下,按下 B4 按键: 若当前选择的是脉冲信号回放分频系数(FP),FP 值减 1。 若当前选择的是电压信号回放最小值(VP),VP 值减 0.3V。 若当前选择的是记录回放时间(TT),TT 值减 2 秒。 ③ 在实时数据界面下,按下 B4 按键: 若设备已经完成了数据记录,则通过 PA7 引脚回放“脉冲信号”。

5) B3、B4。 在任何一个界面下,所检测到 B3、B4 按键均处于按下状态,且持续时间超- 6 - 过 2 秒,设备回到初始状态。4. 初始状态说明) 6) 通用按键要求: l 按键应进行有效的防抖处理,避免出现一次按键动作触发多次功能等 情形。 l 按键动作不应影响数据采集过程和屏幕显示效果。 l 有效区分长、短按键功能,互不影响。 l 参数调整应考虑边界值,不出现无效参数。 l 当前界面下无功能的按键按下,不触发其它界面的功能。

这里灯

LED处理完之后再写

 

要求基本符合

验证

没问题的功能标绿,

有问题的标绿

后半场难点

 

 

 

初值随便设置,在程序中也能更改

案例程序

extern struct Bkeys bkey[];
uint8_t led_sta=0x00;
char text[30];
float DS_temp;
int frq=0;
int duty=0;
float adc_data_PB15;
uint32_t time100ms;
uint8_t view=0;uint16_t FN,AN,TN;//频率报警次数(FN)、电压报警次数(AN)和温度报警次数(TN)。
uint16_t FH=2000,TH=30;//频率上限参数\温度上限参数
float AH=3.0f;//电压上限参数
uint16_t FP=1,TT=6;//脉冲信号回放分频系数、记录回放时间
float VP=0.9;//电压信号回放最小值int16_t FH_t=2000,TH_t=30;//频率上限参数\温度上限参数 临时显示
float AH_t=3.0f;//电压上限参数  临时显示
uint16_t FP_t=1,TT_t=6;//脉冲信号回放分频系数、记录回放时间 临时显示
float VP_t=0.9;//电压信号回放最小值  临时显示uint8_t para_sel;//按键参数选择
uint8_t rec_en;//记录使能
uint8_t is_rec;//已记录数据
uint8_t replay_V_en;//回放电压使能
uint8_t replay_PWM_en;//回放电压使能#define rec_maxLen 1000
float rec_V[rec_maxLen];
uint16_t rec_frq[rec_maxLen];
uint8_t  rec_duty[rec_maxLen];
uint16_t rec_pointer;//当前记录的数组下标
uint16_t rec_interval;//每两个数之间的时间间隔

 

void LED_Disp(uint8_t dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
void LED_Chg(uint8_t num,uint8_t sta)
{uint8_t pos=0x01<<(num-1);led_sta=(led_sta&(~pos))|(pos*sta);LED_Disp(led_sta);
}
float adc_read_os(ADC_HandleTypeDef *hadc)
{//定义两个变量一个接收传回值,最后一个接收经过处理的函数uint16_t adc_val;float adc_f;HAL_ADC_Start(hadc);adc_val=HAL_ADC_GetValue(hadc);adc_f=adc_val*3.3f/65536.0f;return adc_f;
}
void LCD_Show(void)
{if(view==0)//实时数据界面
{sprintf(text,"        DATA  ");LCD_DisplayStringLine(Line1,(uint8_t *)text);sprintf(text,"     F=%d   ",frq);//输入到 PA1 引脚的信号频率LCD_DisplayStringLine(Line3,(uint8_t *)text);sprintf(text,"     D=%d%%   ",duty);//占空比LCD_DisplayStringLine(Line4,(uint8_t *)text);sprintf(text,"     A=%.1f   ",adc_data_PB15);//电位器 R37 输出的实时电压值LCD_DisplayStringLine(Line5,(uint8_t *)text);sprintf(text,"     T=%.1f   ",DS_temp);//采集到的环境温度值(T)LCD_DisplayStringLine(Line6,(uint8_t *)text);
}if(view==1)//报警参数界面{sprintf(text,"        PARA  ");LCD_DisplayStringLine(Line1,(uint8_t *)text);sprintf(text,"     FH=%d   ",FH_t);//频率上限参数LCD_DisplayStringLine(Line3,(uint8_t *)text);sprintf(text,"     AH=%.1f   ",AH_t);//电压上限参数LCD_DisplayStringLine(Line4,(uint8_t *)text);sprintf(text,"     TH=%d   ",TH_t);//温度上限参数LCD_DisplayStringLine(Line5,(uint8_t *)text);		}if(view==2)// 报警统计界面{sprintf(text,"        RECD  ");LCD_DisplayStringLine(Line1,(uint8_t *)text);sprintf(text,"     FN=%d   ",FN);//频率报警次数LCD_DisplayStringLine(Line3,(uint8_t *)text);sprintf(text,"     AN=%d   ",AN);//电压报警次数LCD_DisplayStringLine(Line4,(uint8_t *)text);sprintf(text,"     TN=%d   ",TN);//温度报警次数LCD_DisplayStringLine(Line5,(uint8_t *)text);}if(view==3)// 回放设置界面{sprintf(text,"        FSET  ");LCD_DisplayStringLine(Line1,(uint8_t *)text);sprintf(text,"     FP=%d   ",FP_t);//脉冲信号回放分频系数LCD_DisplayStringLine(Line3,(uint8_t *)text);sprintf(text,"     VP=%.1f   ",VP_t);//电压信号回放最小值LCD_DisplayStringLine(Line4,(uint8_t *)text);sprintf(text,"     TT=%d   ",TT_t);// 记录回放时间LCD_DisplayStringLine(Line5,(uint8_t *)text);}	}
void key_proc()
{if(bkey[1].short_flag==1){view++;if(view>3)view=0;LCD_Clear(Black);para_sel=0;if(view==2)//生效{FH=FH_t;AH=AH_t;TH=TH_t;}if(view==0){FP=FP_t;VP=VP_t;TT=TT_t;}bkey[1].short_flag=0;}	if(bkey[2].short_flag==1){if(view==0){rec_en=1;rec_interval=(TT*1000)/rec_maxLen;rec_pointer=0;for(int i=0;i<rec_maxLen;i++){rec_V[i]=0;rec_frq[i]=0;rec_duty[i]=0;}}if(view==1||view==3) {para_sel++;if(para_sel>2)para_sel=0;}if(view==2) FN=AN=TN=0;bkey[2].short_flag=0;}		if(bkey[3].short_flag==1){if(view==1){if(para_sel==0)FH_t+=1000;else if(para_sel==1)AH_t+=0.3f;else if(para_sel==2)TH_t+=1;if(FH_t>10000)FH_t=10000;if(AH_t>3.3f)AH_t=3.3f;if(TH_t>80)TH_t=80;}if(view==3){if(para_sel==0)FP_t+=1;else if(para_sel==1)VP_t+=0.3f;else if(para_sel==2)TT_t+=2;if(FP_t>10)FP_t=10;if(VP_t>3.3f)VP_t=3.3f;if(TT_t>10)TT_t=10;			}	if(view==0&&is_rec==1) {replay_V_en=1;HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);rec_pointer=0;}bkey[3].short_flag=0;}		if(bkey[4].short_flag==1){if(view==1){if(para_sel==0)FH_t-=1000;else if(para_sel==1)AH_t-=0.3f;else if(para_sel==2)TH_t-=1;if(FH_t<1000)FH_t=1000;if(AH_t<0.0f)AH_t=0.0f;if(TH_t<0)TH_t=0;}if(view==3){if(para_sel==0)FP_t-=1;else if(para_sel==1)VP_t-=0.3f;else if(para_sel==2)TT_t-=2;if(FP_t<1)FP_t=1;if(VP_t<0.0f)VP_t=0.0f;if(TT_t<2)TT_t=2;		}	if(view==0&&is_rec==1) {replay_PWM_en=1;HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);rec_pointer=0;}bkey[4].short_flag=0;}		static uint8_t Llong=0;if(bkey[5].long_flag==1){if(Llong==0){FN=AN=TN=0;//频率报警次数(FN)、电压报警次数(AN)和温度报警次数(TN)。FH=2000;TH=30;//频率上限参数\温度上限参数AH=3.0f;//电压上限参数FP=1;TT=6;//脉冲信号回放分频系数、记录回放时间VP=0.9;//电压信号回放最小值		view=0;is_rec=0;replay_V_en=0;//回放电压使能replay_PWM_en=0;//回放电压使能FH_t=2000;TH_t=30;//频率上限参数\温度上限参数AH_t=3.0f;//电压上限参数FP_t=1;TT_t=6;//脉冲信号回放分频系数、记录回放时间VP_t=0.9;//电压信号回放最小值	Llong=1;}bkey[3].short_flag=0;bkey[4].short_flag=0;}else Llong=0;
}
void LED_proc()
{if(uwTick-time100ms>100){static uint8_t blink=0;blink=!blink;if(rec_en) LED_Chg(1,blink);else LED_Chg(1,0);if(replay_PWM_en) LED_Chg(2,blink);else LED_Chg(2,0);if(replay_V_en) LED_Chg(3,blink);else LED_Chg(3,0);time100ms=uwTick;}if(frq>FH) LED_Chg(4,1);else       LED_Chg(4,0);if(adc_data_PB15>AH) LED_Chg(5,1);else      					 LED_Chg(5,0);	if(DS_temp>TH) LED_Chg(6,1);else    		   LED_Chg(6,0);	
}
void alarm_proc()
{static uint8_t LF=0,LA=0,LT=0;if(frq>FH){if(LF==0){FN++;LF=1;}}else LF=0;if(adc_data_PB15>AH){if(LA==0){AN++;LA=1;}}else  LA=0;if(DS_temp>TH){if(LT==0){TN++;LT=1;}}else LT=0;	
}

 

void rec_proc()
{adc_data_PB15=adc_read_os(&hadc2);frq=1000000.0f/(HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2)+1);duty=((HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1)+1)*100.0f/((HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2)+1)));static uint16_t time_inv=0;if(rec_en==1){if(time_inv>=rec_interval){rec_V[rec_pointer]=adc_data_PB15;rec_frq[rec_pointer]=frq;rec_duty[rec_pointer]=duty;rec_pointer++;	time_inv=0;if(rec_pointer>=rec_maxLen){rec_en=0;is_rec=1;}}time_inv++;}
}
void replay_proc()
{static uint16_t time_inv=0;if(replay_PWM_en==1){if(time_inv>=rec_interval){__HAL_TIM_SET_AUTORELOAD(&htim17,(10000000/(rec_frq[rec_pointer]/FP))-1);__HAL_TIM_SET_COMPARE(&htim17,TIM_CHANNEL_1,((10000000/(rec_frq[rec_pointer]/FP))-1)*(rec_duty[rec_pointer]/100.0f));rec_pointer++;time_inv=0;if(rec_pointer>=rec_maxLen){HAL_TIM_PWM_Stop(&htim17,TIM_CHANNEL_1);replay_PWM_en=0;}}time_inv++;}if(replay_V_en==1){__HAL_TIM_SetAutoreload(&htim17,10000-1);if(time_inv>=rec_interval){uint16_t duty_temp;if(rec_V[rec_pointer]<VP)duty_temp=1000;else if(rec_V[rec_pointer]>3.3f)duty_temp=10000;else duty_temp=10000*((0.9f/(3.3f-VP))*(rec_V[rec_pointer]-3.3f)+1);__HAL_TIM_SET_COMPARE(&htim17,TIM_CHANNEL_1,duty_temp);rec_pointer++;time_inv=0;if(rec_pointer>=rec_maxLen){HAL_TIM_PWM_Stop(&htim17,TIM_CHANNEL_1);replay_V_en=0;}}time_inv++;}
}
void setup()
{HAL_TIM_Base_Start_IT(&htim6);//TIM2_CH2输入  PA1HAL_TIM_IC_Start(&htim2,TIM_CHANNEL_1);HAL_TIM_IC_Start(&htim2,TIM_CHANNEL_2);HAL_ADCEx_Calibration_Start(&hadc2,ADC_SINGLE_ENDED);LED_Disp(0x00);//关掉所有LEDLCD_Init();//LCD初始化LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);ds18b20_init_x();time100ms=uwTick;
}
void loop()
{LCD_Show();key_proc();LED_proc();alarm_proc();DS_temp=ds18b20_read();
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==TIM6)if(rec_en==0)key_serv_long();
}	

 ----------------------------key------------------------------------------------

#include "key.h"struct Bkeys bkey[6]={0,0,0,0};uint8_t key_read()
{if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0&&HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0)return 5;else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0) return 1;else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==0) return 2;else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0) return 3;else if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0) return 4;else return 0;
}/*长按快速增加功能*/
void key_serv_long()
{uint8_t key_sta=key_read();if(key_sta!=0){bkey[key_sta].age++;if(bkey[key_sta].age>1) bkey[key_sta].press=1;}else{for(int i=0;i<6;i++) {if(bkey[i].press==1&&bkey[i].long_flag==0)bkey[i].short_flag=1;bkey[i].age=0;bkey[i].press=0;bkey[i].long_flag=0;}}if(bkey[key_sta].age>199) bkey[key_sta].long_flag=1;
}

 

/------------------------stm32g4xx_it------------------------/void SysTick_Handler(void)
{/* USER CODE BEGIN SysTick_IRQn 0 *//* USER CODE END SysTick_IRQn 0 */HAL_IncTick();/* USER CODE BEGIN SysTick_IRQn 1 */rec_proc();replay_proc();/* USER CODE END SysTick_IRQn 1 */
}

 

 

 

 

相关文章:

嵌入式蓝桥杯电子赛嵌入式(第14届国赛真题)总结

打开systic 生成工程编译查看是否有问题同时打开对应需要的文档 修改名称的要求 5.简单浏览赛题 选择题&#xff0c;跟单片机有关的可以查相关手册 答题顺序 先从显示开始看 1,2 所以先打开PA1的定时器这次选TIM2 从模式、TI2FP2二通道、内部时钟、1通道设为直接2通道设置…...

【机器学习】深入探索SVM:支持向量机的原理与应用

目录 &#x1f354; SVM引入 1.1什么是SVM? 1.2支持向量机分类 1.3 线性可分、线性和非线性的区分 &#x1f354; 小结 学习目标 知道SVM的概念 &#x1f354; SVM引入 1.1什么是SVM? 看一个故事&#xff0c;故事是这样子的&#xff1a; 在很久以前的情人节&#xf…...

Leetcode40: 组合总和 II

题目描述&#xff1a; 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 代码思路&#xff…...

项目测试之MockMvc

文章目录 基础基础概念Mockxxx一般实现文件位置 实战MockMvc与Test注解不兼容RequestParams参数RequestBody参数 基础 基础概念 定义&#xff1a;是Spring框架提供的一种用于测试Spring MVC控制器的工具&#xff0c;它允许开发者在不启动完整的web服务器的情况下&#xff0c;…...

网易Android开发面试题200道及参考答案 (下)

说明原码、反码、补码的概念 原码:是一种简单的机器数表示法。对于有符号数,最高位为符号位,0 表示正数,1 表示负数,其余位表示数值的绝对值。比如,对于 8 位二进制数,+5 的原码是 00000101,-5 的原码是 10000101。原码的优点是直观,容易理解,但在进行加减法运算时,…...

PHP根据IP地址获取地理位置城市和经纬度信息

/** 根据IP地址 获取地理位置*/ function getLocationByIP($ip) {$url "http://ip-api.com/json/{$ip}?langzh-CN&fieldsstatus,message,country,countryCode,region,regionName,city,lat,lon,timezone,isp,org,as";$response file_get_contents($url);$data …...

AI Agent的多轮对话:提升用户体验的关键技巧

在前面的文章中&#xff0c;我们讨论了 AI Agent 的各个核心系统。今天&#xff0c;我想聊聊如何实现一个好用的多轮对话系统。说实话&#xff0c;这个话题我琢磨了很久&#xff0c;因为它直接影响到用户体验。 从一个槽点说起 还记得我最开始做对话系统时的一个典型场景&…...

在docker上部署nacos

一、首先下载nacos的docker镜像 docker pull nacos:2.5.0 二、然后下载nacos的安装包&#xff0c;这里是为了拿到他的配置文件。下载完解压缩后&#xff0c;以备后用 https://download.nacos.io/nacos-server/nacos-server-2.5.0.zip?spm5238cd80.6a33be36.0.0.2eb81e5d7mQ…...

ComfyUI实现老照片修复——AI修复老照片(ComfyUI-ReActor / ReSwapper)解决天坑问题及加速pip下载

AI修复老照片&#xff0c;试试吧&#xff0c;不一定好~~哈哈 2023年4月曾用过ComfyUI&#xff0c;当时就感慨这个工具和虚幻的蓝图很像&#xff0c;以后肯定是专业人玩的。 2024年我写代码去了&#xff0c;AI做图没太关注&#xff0c;没想到&#xff0c;现在ComfyUI真的变成了工…...

Win11画图工具没了怎么重新安装

有些朋友想要简单地把图片另存为其他格式&#xff0c;或是进行一些编辑&#xff0c;但是发现自己的Win11系统里面没有画图工具&#xff0c;这可能是因为用户安装的是精简版的Win11系统&#xff0c;解决方法自然是重新安装一下画图工具&#xff0c;具体应该怎么做呢&#xff1f;…...

Git Bash 配置 zsh

博客食用更佳 博客链接 安装 zsh 安装 Zsh 安装 Oh-my-zsh github仓库 sh -c "$(curl -fsSL https://install.ohmyz.sh/)"让 zsh 成为 git bash 默认终端 vi ~/.bashrc写入&#xff1a; if [ -t 1 ]; thenexec zsh fisource ~/.bashrc再重启即可。 更换主题 …...

《STL基础之hashtable》

【hashtable导读】STL为大家提供了丰富的容器&#xff0c;hashtable也是值得大家学习和掌握的基础容器&#xff0c;而且面试官经常会把它和hashmap混在一起&#xff0c;让同学们做下区分。因此关于hashtable的一些特性&#xff0c;比如&#xff1a;底层的数据结构、插入、查找元…...

Vue3组件重构实战:从Geeker-Admin拆解DataTable的最佳实践

一、前言 背景与动机 在当前的开发实践中&#xff0c;我们选择了开源项目 Geeker-Admin 作为前端框架的二次开发基础。其内置的 ProTable.vue 组件虽然提供了一定程度的开箱即用性&#xff0c;但在实际业务场景中逐渐暴露出设计上的局限性&#xff0c;尤其是其将 搜索条件表单…...

小智 AI 聊天机器人

小智 AI 聊天机器人 &#xff08;XiaoZhi AI Chatbot&#xff09; &#x1f449;参考源项目复现 &#x1f449; ESP32SenseVoiceQwen72B打造你的AI聊天伴侣&#xff01;【bilibili】 &#x1f449; 手工打造你的 AI 女友&#xff0c;新手入门教程【bilibili】 项目目的 本…...

关于圆周率的新认知

从自然对数底 的泰勒展开&#xff0c; 可以得出 的展开式&#xff0c; 它可以被认为是&#xff0c;以 0 为周期的单位 1 &#xff0c;以 1 为周期的单位 1 &#xff0c;以 2 为周期的单位 1 等所有自然数为周期的单位 1 分阶段合成&#xff08;体现为阶乘的倒数&#xff09;之…...

【趋势】《2024—2026金融科技十大趋势预测》一览

本白皮书基于新华三在金融行业的前沿实践和IDC的全球研究成果,深入分析了金融科技领域的十大关键趋势,旨在为金融机构提供前瞻性的战略指导和业务创新的参考。 导言 当前,在地缘政治冲突加剧、商业经济市场环境高度不确定、数字化业务加速发展的背景下,金融行业处于深度变…...

vim 中粘贴内容时提示: -- (insert) VISUAL --

目录 问题现象&#xff1a;解决方法&#xff1a;问题原因&#xff1a; 问题现象&#xff1a; 使用 vim 打开一个文本文件&#xff0c;切换到编辑模式后&#xff0c;复制内容进行粘贴时有以下提示&#xff1a; 解决方法&#xff1a; 在命令行模式下禁用鼠标支持 :set mouse …...

CAPL高级应用

CAPL高级应用 目录 CAPL高级应用1. 引言2. 多线程编程2.1 多线程编程简介2.2 多线程编程实现3. 数据库操作3.1 数据库操作简介3.2 数据库操作实现4. 网络通信4.1 网络通信简介4.2 网络通信实现5. 案例说明5.1 案例1:多线程编程实现5.2 案例2:数据库操作实现5.3 案例3:网络通…...

基于微信小程序的网上订餐管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

python的设计模式

设计模式是解决软件设计中常见问题的可重用解决方案。Python 作为一种灵活且强大的编程语言&#xff0c;支持多种设计模式的实现。以下是 Python 中常见的几种设计模式及其示例&#xff1a; 1. 单例模式&#xff08;Singleton Pattern&#xff09; 确保一个类只有一个实例&…...

EventBus事件总线的使用以及优缺点

EventBus EventBus &#xff08;事件总线&#xff09;是一种组件通信方法&#xff0c;基于发布/订阅模式&#xff0c;能够实现业务代码解耦&#xff0c;提高开发效率 发布/订阅模式 发布/订阅模式是一种设计模式&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖…...

C++解决走迷宫问题:DFS、BFS算法应用

文章目录 思路:DFSBFSBFS和DFS的特点BFS 与 DFS 的区别BFS 的优点BFS 时间复杂度深度优先搜索(DFS)的优点深度优先搜索(DFS)的时间复杂度解释:空间复杂度总结:例如下面的迷宫: // 迷宫的表示:0表示可以走,1表示障碍 vector<vector<int>> maze = {{0, 0,…...

2025春招 SpringCloud 面试题汇总

大家好&#xff0c;我是 V 哥。SpringCloud 在面试中属于重灾区&#xff0c;不仅是基础概念、组件细节&#xff0c;还有高级特性、性能优化&#xff0c;关键是项目实践经验的解决方案&#xff0c;都是需要掌握的内容&#xff0c;正所谓打有准备的仗&#xff0c;秒杀面试官&…...

PostGIS笔记:PostgreSQL 数据库与用户 基础操作

数据库基础操作包括数据模型的实现、添加数据、查询数据、视图应用、创建日志规则等。我这里是在Ubuntu系统学习的数据库管理。Windows平台与Linux平台在命令上几乎无差异&#xff0c;只是说在 Windows 上虽然也能运行良好&#xff0c;但在性能、稳定性、功能扩展等方面&#x…...

Selenium配合Cookies实现网页免登录

文章目录 前言1 方案一&#xff1a;使用Chrome用户数据目录2 方案二&#xff1a;手动获取并保存Cookies&#xff0c;后续使用保存的Cookies3 注意事项 前言 在进行使用Selenium进行爬虫、网页自动化操作时&#xff0c;登录往往是一个必须解决的问题&#xff0c;但是Selenium每次…...

HarmonyOS简介:HarmonyOS核心技术理念

核心理念 一次开发、多端部署可分可合、自由流转统一生态、原生智能 一次开发、多端部署 可分可合 自由流转 自由流转可分为跨端迁移和多端协同两种情况 统一生态 支持业界主流跨平台开发框架&#xff0c;通过多层次的开放能力提供统一接入标准&#xff0c;实现三方框架快速…...

Unity URP 获取/设置 Light-Indirect Multiplier

Unity URP 获取/设置 Light-Indirect Multiplier 他喵的代码的字段名称叫&#xff1a;bounceIntensity ~~~~~~...

计算机网络 (60)蜂窝移动通信网

一、定义与原理 蜂窝移动通信网是指将一个服务区分为若干蜂窝状相邻小区并采用频率空间复用技术的移动通信网。其原理在于&#xff0c;将移动通信服务区划分成许多以正六边形为基本几何图形的覆盖区域&#xff0c;称为蜂窝小区。每个小区设置一个基站&#xff0c;负责本小区内移…...

解决.NET程序通过网盘传到Linux和macOS不能运行的问题

问题描述&#xff1a;.net程序用U盘传到虚拟机macOS和Linux可以正常运行&#xff0c;但是网盘传过去就不行。 解决方法&#xff1a; 这是文件权限的问题。当你通过U盘将文件传输到虚拟机的macOS和Linux系统时&#xff0c;文件的权限和所有权可能得到了保留或正确设置。但如果…...

LeetCode | 不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 示例 1…...

渗透测试技法之口令安全

一、口令安全威胁 口令泄露途径 代码与文件存储不当&#xff1a;在软件开发和系统维护过程中&#xff0c;开发者可能会将口令以明文形式存储在代码文件、配置文件或注释中。例如&#xff0c;在开源代码托管平台 GitHub 上&#xff0c;一些开发者由于疏忽&#xff0c;将包含数据…...

【C语言】main函数解析

一、前言 在学习编程的过程中&#xff0c;我们很早就接触到了main函数。在Linux系统中&#xff0c;当你运行一个可执行文件&#xff08;例如 ./a.out&#xff09;时&#xff0c;如果需要传入参数&#xff0c;就需要了解main函数的用法。本文将详细解析main函数的参数&#xff…...

Vue3笔记——(二)

015 生命周期 组件的生命周期&#xff1a; 【时刻】 【调用特定的函数】 vue2生命周期 创建 beforeCreate、 created 挂载 beforeMounte、mounted 更新 beforeUpdate、updated 销毁 beforeDestroy、destroyed 生命周期、生命周期函数、生命周期钩子 vue3生命周期 创建 setup 挂…...

linux文件I/O

open 用于打开一个文件并返回一个文件描述符。文件描述符是一个整数&#xff0c;它在后续的文件操作中用于标识文件。 原型&#xff1a; int open(const char *pathname, int flags, mode_t mode);pathname&#xff1a;要打开的文件的路径flags&#xff1a;指定文件打开方式…...

利用双指针一次遍历实现”找到“并”删除“单链表倒数第K个节点(力扣题目为例)

Problem: 19. 删除链表的倒数第 N 个结点 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲找到倒数第k个节点&#xff0c;即是找到正数的第n-k1、其中n为单链表中节点的个数个节点。 2.为实现只遍历一次单链表&#xff0c;我们先可以使一个指针p1指向链表头部再让其先走k步…...

MySQL 8 不开通 CLONE 插件,建立主从关系

文章目录 前言一、主库操作二、从库操作三、主库操作四、测试总结 前言 MySQL 版本&#xff1a;8.0.36 MySQL 8 通过 CLONE 插件&#xff0c;搭建主从数据库详情参考链接文章 主库不开通 CLONE 插件&#xff0c;如何建立主从关系呢&#xff1f;本文简单介绍一下 一、主库操作…...

活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!

Code Without Barriers 上海活动回顾 Code Without Barriers&#xff1a;AI & DATA 深入探索人工智能与数据如何变革行业 2025年1月16日&#xff0c;微软开发者社区 Code Without Barriers &#xff08;CWB&#xff09;携手 She Rewires 她原力在大中华区的首场活动“AI &…...

Direct Preference Optimization (DPO): 一种无需强化学习的语言模型偏好优化方法

论文地址&#xff1a;https://arxiv.org/pdf/2305.18290 1. 背景与挑战 近年来&#xff0c;大规模无监督语言模型&#xff08;LM&#xff09;在知识获取和推理能力方面取得了显著进展&#xff0c;但如何精确控制其行为仍是一个难题。 现有的方法通常通过**强化学习从人类反馈&…...

搜狐Android开发(安卓)面试题及参考答案

ViewModel 的作用及原理是什么? ViewModel 是 Android 架构组件中的一部分,主要作用是在 MVVM 架构中充当数据与视图之间的桥梁。它负责为视图准备数据,并处理与数据相关的业务逻辑,让视图(Activity、Fragment 等)专注于展示数据和与用户交互。比如在一个新闻应用中,Vie…...

蓝牙的一些基础知识(TODO)

前阵工作中遇到的。 iOS 和 iPadOS 支持的蓝牙描述文件 - 官方 Apple 支持 (中国) 在树莓派上定制蓝牙 Profile 通常需要修改或创建自定义的 Bluetooth 服务 (Profile) 来实现特定的功能&#xff0c;例如定制 Audio Sink、HID&#xff08;Human Interface Device&#xff09;、…...

Redis实战(黑马点评)——涉及session、redis存储验证码,双拦截器处理请求

项目整体介绍 数据库表介绍 基于session的短信验证码登录与注册 controller层 // 获取验证码PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {return userService.sendCode(phone, session);}// 获…...

WPF常见面试题解答

以下是WPF&#xff08;Windows Presentation Foundation&#xff09;面试中常见的问题及解答&#xff0c;涵盖基础概念、高级功能和实际应用&#xff0c;帮助你更好地准备面试&#xff1a; 基础概念 什么是WPF&#xff1f; WPF是微软开发的用于构建桌面应用程序的UI框架&#x…...

Nginx前端后端共用一个域名如何配置

在 Nginx 中配置前端和后端共用一个域名的情况&#xff0c;通常是通过路径或子路径将请求转发到不同的服务。以下是一个示例配置&#xff0c;假设&#xff1a; 前端静态文件在 /var/www/frontend/。 后端 API 服务运行在 http://127.0.0.1:5000。 域名是 example.com&#xff…...

DeepSeek-R1-Distill-Qwen-1.5B:最佳小型LLM?

DeepSeek掀起了生成式AI领域的风暴。 首先推出DeepSeek-v3,现在推出DeepSeek-R1,这两款模型都打破了所有基准,并且完全开源。 但今天我们不是在讨论这两款超级模型,而是讨论DeepSeek-R1的一个蒸馏版本——DeepSeek-R1-Distill-Qwen-1.5B,它可能是今天被低估的版本,虽然…...

wampserver + phpstrom 调试配置

step 1 点击任务栏wampserver图标->php->php.ini[apache module] 在文件最后面,确保这些值被定义且跟以下的一样 xdebug.mode debug xdebug.start_with_request yes xdebug.client_port 9003 xdebug.client_host 127.0.0.1step 2 按如下配置 step3 下断点,运行即…...

MySQL分表自动化创建的实现方案(存储过程、事件调度器)

《MySQL 新年度自动分表创建项目方案》 一、项目目的 在数据库应用场景中&#xff0c;随着数据量的不断增长&#xff0c;单表存储数据可能会面临性能瓶颈&#xff0c;例如查询、插入、更新等操作的效率会逐渐降低。分表是一种有效的优化策略&#xff0c;它将数据分散存储在多…...

RabbitMQ 架构分析

文章目录 前言一、RabbitMQ架构分析1、Broker2、Vhost3、Producer4、Messages5、Connections6、Channel7、Exchange7、Queue8、Consumer 二、消息路由机制1、Direct Exchange2、Topic Exchange3、Fanout Exchange4、Headers Exchange5、notice5.1、备用交换机&#xff08;Alter…...

Spring Boot 无缝集成SpringAI的函数调用模块

这是一个 完整的 Spring AI 函数调用实例&#xff0c;涵盖从函数定义、注册到实际调用的全流程&#xff0c;以「天气查询」功能为例&#xff0c;结合代码详细说明&#xff1a; 1. 环境准备 1.1 添加依赖 <!-- Spring AI OpenAI --> <dependency><groupId>o…...

如何跨互联网adb连接到远程手机-蓝牙电话集中维护

如何跨互联网adb连接到远程手机-蓝牙电话集中维护 --ADB连接专题 一、前言 随便找一个手机&#xff0c;安装一个App并简单设置一下&#xff0c;就可以跨互联网的ADB连接到这个手机&#xff0c;从而远程操控这个手机做各种操作。你敢相信吗&#xff1f;而这正是本篇想要描述的…...

MySQL--》深度解析InnoDB引擎的存储与事务机制

目录 InnoDB架构 事务原理 MVCC InnoDB架构 从MySQL5.5版本开始默认使用InnoDB存储引擎&#xff0c;它擅长进行事务处理&#xff0c;具有崩溃恢复的特性&#xff0c;在日常开发中使用非常广泛&#xff0c;其逻辑存储结构图如下所示&#xff0c; 下面是InnoDB架构图&#xf…...