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

用GPT零负担学单片机之点亮一颗cpu 第3节 训练or特征匹配?用GPT开发嵌入式

用GPT零负担学单片机之点亮一颗cpu

第3节 训练or特征匹配?AI写代码

大家好,我是小杰学长
如果你是大学生 遇到电子技术 学习 成长 入行难题
我曾经通过大学比赛赚钱 从事嵌入式AI 航天军工
用特别的学习和求职方法线下半年带50+学弟学妹入行开发
主页佳喔威信,给你提供一定资源和战略方法上的帮助
相信我的职业经历的专业性,一定能帮到你
我的gitee仓库分享 海量嵌入式资源入行求职技巧–>

目录

  • 1. 概述
  • 2. 神经网络和机器视觉
  • 3. 用ai写ai代码
  • 4. 参考博客和lvgl桌面应用
  • 5. 结语
  • 6. 资源下载地址

1. 概述

哈喽 让大家久等了
上一节课和大家说一周后见
结果因为主页工作忙 鸽了两周
但是只要一有空我也没有闲着
一直在翻阅visionboard的博客
visionboard的例程文档不多
但是作品创作博客不少

话不多说 简述本章主题
相对内容较多且杂 但是有所进展 但进展不大
哈哈哈哈哈哈

从主题可以看出来
人脸识别 是要通过训练得到高精度人脸识别效果
还是使用传统的Eigen\fisher\LBPH
等传统机器视觉提取关键特征识别
这是个问题
最后我选择了在漫长等待训练的过程中
转而选择了传统的机器视觉提取关键特征识别
嘻嘻!!!
并且发现已经有人用visionboard
完成了LBP人脸识别考勤机
但是在一次次犹豫中
还是不搬运吧

第二个事
既然要从AI人脸识别
为什么不同AI工具自己写代码呢?
所以用起了Cursor工具
让他自己从0-1实现这个项目

第三个事
visionboard的官方例程、文档、教程不多
所以我在用一些硬件的时候卡了我很多时间
但是在一些作品博客中找到了使用方法

最后一个事
安装了LVGL上位机
为后面的UI开发做准备

2. 神经网络和机器视觉

玩过openMV的小伙伴应该都知道edgeImpule
在这里插入图片描述

那天我在搜集自拍样本和训练准备到自闭的时候
突然想到上次在写机器学习博客的时候
有提到过传统的人脸识别机器视觉算法
图中可以看到我对这几个算法的简介
在这里插入图片描述

对上图博客感兴趣的记得主页佳喔威信
后续能第一时间获取更新博客和课程资料

于是我在漫长等待训练的过程中
转而选择了传统的机器视觉提取关键特征识别
在这里插入图片描述

在omv的官方文档中我找到了如下API:
在这里插入图片描述

在这里插入图片描述

开始肝代码:
这个是我自己测试实现的
注释齐全
后面加了一些其他代码
运行不起来 就自行调试

import sensor
import os
import time
import image
import machine
import lcd
from machine import Pin
from face_recg import match_face, register_face
def LED_INIT():#led initled_green = machine.LED("LED_GREEN")led_red = machine.LED("LED_RED")led_blue = machine.LED("LED_BLUE")
def LED_BLACK():led_green.off()led_blue.off()led_red.off()
def LED_WHITE():led_green.on()led_blue.on()led_red.on()
def LED_RED():led_green.off()led_blue.off()led_red.on()
def LED_BLUE():led_blue.on()led_green.off()led_red.off()
def LED_GREEN():led_blue.off()led_green.on()led_red.off()
LED_WHITE()
time.sleep(1)
LED_BLACK()
time.sleep(1)
LED_WHITE()
time.sleep(1)
LED_BLACK()
# Initialize the lcd screen.
lcd.init()
#文件夹初始化
try:os.mkdir(rootpath)
except:print(os.listdir("/"))
#按键初始化
key_flag = 0
def key0_func(v):global key_flagif key_flag == 0:LED_WHITE()key_flag = 1else:LED_BLACK()key_flag = 0
key_0 = Pin(("key_0", 0x907))
key_0.irq(trigger=Pin.IRQ_RISING, handler=key0_func)sensor.reset()  # Reset and initialize the sensor.
# Sensor settings
sensor.set_contrast(3)
sensor.set_gainceiling(16)# HQVGA and GRAYSCALE are the best for face tracking.
sensor.set_framesize(sensor.HQVGA)
sensor.set_pixformat(sensor.RGB565)  # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_vflip(True)
sensor.set_hmirror(True)
sensor.skip_frames(time=2000)  # Wait for settings take effect.# Load Haar Cascade
# By default this will use all stages, lower satges is faster but less accurate.
face_cascade = image.HaarCascade("frontalface", stages=25)
print(face_cascade)print('loop start')
clock = time.clock()  # Create a clock object to track the FPS.
while True :res = "NONE"clock.tick()  # Update the FPS clock.img = sensor.snapshot()  # Take a picture and return the image.img_gray = img.copy().to_grayscale()if key_flag == 0:
#        人脸识别# Find objects.# Note: Lower scale factor scales-down the image more and detects smaller objects.# Higher threshold results in a higher detection rate, with more false positives.objects = img_gray.find_features(face_cascade, threshold=0.75, scale_factor=1.25)if len(objects) == 1:LED_GREEN()# Draw objectsimg.draw_rectangle( objects[0], color=(0,255,0))
#            for x, y, w, h in objects:
#                img.draw_rectangle( (x, y, w, h), color=(0,255,0))
#                img.draw_string(x, y, "M", color=(0,255,0), scale=3, mono_space=False)src_lbp = img_gray.find_lbp(objects[0])res = match_face(src_lbp)else:LED_BLACK()else:
#        人脸注册...img.draw_string(0, 0, "FPS"+str(int(clock.fps()))+" "+res, color=(0,255,0), scale=1, mono_space=False)lcd.display(img) # Take a picture and display the image.
def match_face(src_lbp):  # 人脸识别dir_lists = os.listdir(rootpath)  # 路径下文件夹dir_num = len(dir_lists)          # 文件夹数量
#    print("Total %d Folders -> %s"%(dir_num, str(dir_lists)))for i in range(0, dir_num):item_lists = os.listdir(rootpath+'/'+dir_lists[i])  # 路径下文件
#        print("The %d Folder[%s], Total %d Files -> %s" %(i+1, dir_lists[i], item_num, str(item_lists)))for j in item_lists:  # 文件依次对比
#            debug(">> Current File: " + item_lists[j])try:img = image.Image("/orl_faces/%s/%s" % (dir_lists[i], item_lists[j]), copy_to_fb=True)except Exception as e:debug(e)breakd1 = img.find_lbp((0, 0, img.width(), img.height()))  # 提取特征值dist = image.match_descriptor(src_lbp, d1)                 # 计算差异度debug(">> Difference Degree: " + str(dist))if dist < DIST_THRESHOLD:debug(">> ** Find It! **")green.on()time.sleep(1000)green.off()return item_lists[j]debug(">> ** No Match! **")return 0
def register_face(face_cascade, img):# ...global REGISTER_MODEif find(face_cascade, img) == 1:debug(">> Existing without registration!")REGISTER_MODE = 0return 0dir_lists = os.listdir(rootpath)  # 路径下文件夹dir_num = len(dir_lists)          # 文件夹数量new_dir = ("%s/%d") % (rootpath, int(dir_num)+1)os.mkdir(new_dir)                 # 创建文件夹cnt = 5  # 拍摄5次图片while cnt:img = sensor.snapshot()objects = img.find_features(face_cascade, threshold=0.75, scale_factor=1.25)  # 人脸检测if objects:width_old = 0height_old = 0index = 0for r in objects:  # 寻找最大的faceif r[2] > width_old and r[3] > height_old:width_old = r[2]height_old = r[3]index += 1index -= 1#print("index:", index)item_lists = os.listdir(new_dir)  # 新路径下文件item_num = len(item_lists)        # 文件数量img.save("%s/%d.pgm" % (new_dir, item_num))  # 写入文件debug(">> [%d]Regist OK!" % cnt)img.draw_rectangle(objects[index])green.on()time.sleep(50)green.off()cnt -= 1if cnt==0:green.on()time.sleep(1000)green.off()REGISTER_MODE = 0

3. 用AI写AI代码

既然要从AI人脸识别
为什么不用AI工具自己写代码呢?
所以用起了Cursor工具
让他基于我上面写的测试代码
从0-1实现这个项目
在这里插入图片描述

大家感兴趣代码的生成过程
可以关注我的短视频自媒体
b站 嵌入式男友杰哥
抖音 小杰学长
不过想让ai帮我们写好一个可以跑的代码
确实需要很好的文字表达功底
以下代码还没验证
但是过程基本是没什么毛病
等下期注册人脸的博客实现了
我在一起调好

import sensor
import os
import time
import image
import lcd
from machine import Pin
from led import LED_BLACK,LED_WHITE,LED_RED,LED_BLUE,LED_GREENLED_WHITE()
time.sleep(1)
LED_BLACK()
time.sleep(1)
LED_WHITE()
time.sleep(1)
LED_BLACK()# Initialize the lcd screen.
lcd.init()#文件夹初始化
rootpath = "/orl_faces"
print(os.listdir(rootpath))
#按键初始化
key_flag = 0
def key0_func(v):global key_flagif key_flag == 0:LED_WHITE()key_flag = 1else:LED_BLACK()key_flag = 0
key_0 = Pin(("key_0", 0x907))
key_0.irq(trigger=Pin.IRQ_RISING, handler=key0_func)sensor.reset()  # Reset and initialize the sensor.
# Sensor settings
sensor.set_contrast(3)
sensor.set_gainceiling(16)# HQVGA and GRAYSCALE are the best for face tracking.
sensor.set_framesize(sensor.HQVGA)
sensor.set_pixformat(sensor.RGB565)  # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_vflip(True)
sensor.set_hmirror(True)
sensor.skip_frames(time=2000)  # Wait for settings take effect.# Load Haar Cascade
# By default this will use all stages, lower satges is faster but less accurate.
face_cascade = image.HaarCascade("frontalface", stages=25)
# ----------------------
# 在文件开头添加全局变量
face_descriptors = {}  # 格式: {'person_name': [descriptor1, descriptor2, descriptor3]}# 修改加载人脸特征描述符的函数
def load_face_descriptors():global face_descriptorsfor person_name in os.listdir(rootpath):person_path = os.path.join(rootpath, person_name)if os.path.isdir(person_path):face_descriptors[person_name] = []# 遍历文件夹中的所有描述符文件for file in os.listdir(person_path):if file.endswith('.bin'):descriptor_path = os.path.join(person_path, file)descriptor = image.load_descriptor(descriptor_path)face_descriptors[person_name].append(descriptor)print(f"Loaded {len(face_descriptors[person_name])} descriptors for {person_name}")# 在主循环开始前添加
load_face_descriptors()  # 程序启动时加载所有已存储的人脸特征
# -------------
# 修改人脸匹配函数
def match_face(src_lbp):min_diff = float('inf')matched_name = "NONE"for name, descriptors in face_descriptors.items():# 对每个人的所有特征描述符进行匹配for descriptor in descriptors:diff = image.match_descriptor(src_lbp, descriptor, threshold=70, filter_outliers=False)if diff < min_diff:min_diff = diffmatched_name = name# 设置一个阈值,如果差异度太大,则认为是未知人脸if min_diff > 70:return f"NONE"return f"{matched_name}({min_diff})"clock = time.clock()  # Create a clock object to track the FPS.
while True :res = "NONE"clock.tick()  # Update the FPS clock.img = sensor.snapshot()  # Take a picture and return the image.img_gray = img.copy().to_grayscale()if key_flag == 1:LED_GREEN()# Find objects.# Note: Lower scale factor scales-down the image more and detects smaller objects.# Higher threshold results in a higher detection rate, with more false positives.objects = img_gray.find_features(face_cascade, threshold=0.75, scale_factor=1.25)# 首先找到人脸if len(objects) == 1:# Draw objectsimg.draw_rectangle( objects[0], color=(0,255,0))
#            for x, y, w, h in objects:
#                img.draw_rectangle( (x, y, w, h), color=(0,255,0))
#                img.draw_string(x, y, "M", color=(0,255,0), scale=3, mono_space=False)src_lbp = img_gray.find_lbp(objects[0])res = match_face(src_lbp)# 识别完成后关闭识别功能if res=="NONE":key_flag = 0LED_WHITE()else:LED_BLACK()img.draw_string(0, 0, "FPS"+str(int(clock.fps()))+" "+res, color=(0,255,0), scale=1, mono_space=False)lcd.display(img) # Take a picture and display the image.

4. 参考博客和LVGL桌面应用

触摸屏和LVGL
用户按键
LVGL桌面应用 GUI-guider
下载安装就不需要我教了吧!!!
在这里插入图片描述

5. 结语

下周见

太叼了!!!

相关文章:

用GPT零负担学单片机之点亮一颗cpu 第3节 训练or特征匹配?用GPT开发嵌入式

用GPT零负担学单片机之点亮一颗cpu 第3节 训练or特征匹配?AI写代码 大家好,我是小杰学长 如果你是大学生 遇到电子技术 学习 成长 入行难题 我曾经通过大学比赛赚钱 从事嵌入式AI 航天军工 用特别的学习和求职方法线下半年带50+学弟学妹入行开发 主页佳喔威信,给你提供一定资…...

2.6、vue2中侦听属性的变化

2.6.1、侦听属性作用侦听属性的变化其实就是监视某个属性的变化。当被监视的属性一旦发生改变时,执行某段代码。2.6.2、watch配置项监视属性变化时需要使用watch配置项 可以监视多个属性,监视哪个属性,请把这个属性的名字拿过来即可。 i.可以监视Vue的原有属性 ii.如果监视的…...

enable_shared_from_this

用途 struct S {shared_ptr<S> dangerous(){return shared_ptr<S>(this); // dont do this!} };int main() {shared_ptr<S> sp1(new S);shared_ptr<S> sp2 sp1->dangerous();return 0; }考虑以上代码&#xff0c;从一个被shared_ptr管理的struc…...

重生之我在异世界学智力题(2)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言智力题&#xff1a;逃离孤岛智力题&a…...

深入解析下oracle的number底层存储格式

oracle数据库中&#xff0c;number数据类型用来存储数值数据&#xff0c;它既可以存储负数数值&#xff0c;也可以存储正数数值。相对于其他类型数据&#xff0c;number格式的数据底层存储格式要复杂得多。今天我们就详细探究下oracle的number底层存储格式。 一、环境搭建 1.…...

prometheus

1.安装&#xff0c;tar包&#xff0c;解压即用 tar xf prometheus-2.33.3.linux-amd64.tar.gz -C /app/tools/ 2.创建软链接 ln -s prometheus-2.33.3.linux-amd64/ /app/tools/prometheus 3.进入目录 cd /app/tools/prometheus 4.运行 ./prometheus 5.此时&#xff0…...

C# 23种设计模式(1)单例模式(单件模式)

一、单例模式介绍 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这个模式在需要一个对象被共享且全局唯一的情况下非常有用&#xff0c;比如配置对象、日志对象、数据库连接…...

Javaweb:HTML、CSS

学习 资源1 学习资源 2 黑马javaweb HTML 1、基础标签、样式 图片标签&#xff1a;<img> src:绝对路径、相对路径(绝对磁盘路径&#xff0c;网络路径&#xff1b;./当前目录&#xff09;width:宽度&#xff08;百分比&#xff09;height:高度&#xff08;百分比&…...

SmartDV将SDIO系列IP授权给RANiX开发车联网(V2X)产品

双方的合作将增强符合ISO 26262标准的车联网&#xff08;V2X&#xff09;系统的通信和连接能力&#xff0c;加速实现更安全、更智能的汽车系统和车辆创新 加利福尼亚州圣何塞市&#xff0c;2024年12月——灵活、高度可配置、可定制化的半导体设计知识产权&#xff08;IP&#…...

【Android】创建型设计模式—单例模式、工厂模式、建造者模式

单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点。 单例模式类图&#xff1a; #mermaid-svg-kzf6IdXdYeNOHtP0 {font-family:"trebuchet ms",verdana,arial,sa…...

ida9pro压缩包

资源类型的博客大部分都是为了自己某天换新机了用 下载链接2&#xff1a;ida9.zip 下载链接1&#xff1a;https://mega.nz/folder/yiAiVDAa#T0kogEE7ufqy0x0EpCuOLQ 主目录下该文件为证书文件 ida9中选择它&#xff0c;就可以了...

前端入门之VUE--vue组件化编程

前言 VUE是前端用的最多的框架&#xff1b;这篇文章是本人大一上学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 2、Vue组件化编程2.1、组件2.2、基本使用2.2.1、VueComponent 2、Vue组件化编程 2.1、组件 组件&#xff1a;用来实现…...

C++是如何工作的?

首先来看一个最基本的C程序段。 #include <iostream>int main() {std::cout << "HelloWorld" << std::endl;std::cin.get(); } 第一行 #include 的含义是预处理的意思&#xff0c;这条语句的作用是将一个名为iostream的文件拷贝到源代码中这个…...

JavaScript中的this, 究竟指向什么?

在JavaScript代码的不同位置中&#xff0c;this所指向的数据是不一样的。比如大部分同学都知道&#xff0c;在对象的函数属性方法中&#xff0c;this指向对象本身&#xff1b;在构造函数中&#xff0c;this指向要生成的新对象。事实上&#xff0c;this指向的逻辑不止这几种&…...

JavaWeb学习(3)(Servlet详细、Servlet的三种实现方式(面试)、Servlet的生命周期、传统web.xml配置Servlet(了解))

目录 一、Servlet详细。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;基本作用。 1、接收客户端请求数据。 2、处理请求。 3、完成响应结果。 二、Servlet的三种实现方式。 &#xff08;1&#xff09;实现javax.servlet.Servlet接口。 1、基本介绍。 2、代码…...

【图像去雾数据集】URHI数据集介绍

URHI数据集对应论文&#xff1a;RESIDE: A Benchmark for Single Image Dehazing&#xff08;2017&#xff09; URHI数据集下载链接&#xff1a;https://sites.google.com/site/boyilics/website-builder/reside 为便于下载&#xff0c;将上述官方提供的链接中百度云链接粘贴如…...

Playwright中Page类的方法

导航和页面操作 goto(url: str, **kwargs: Any): 导航到一个URL。 reload(**kwargs: Any): 重新加载当前页面。 go_back(**kwargs: Any): 导航到会话历史记录中的前一个页面。 go_forward(**kwargs: Any): 导航到会话历史记录中的下一个页面。 set_default_navigation_tim…...

算力介绍与解析

算力&#xff08;Computing Power&#xff09;是指计算机系统在单位时间内处理数据和执行计算任务的能力。算力是衡量计算机性能的重要指标&#xff0c;直接影响计算任务的速度和效率。 算力的分类和单位 a. 基础算力&#xff1a;以CPU的计算能力为主。适用于各个领域的计算。…...

CentOS 上如何查看 SSH 服务使用的端口号?

我们知道&#xff0c;linux操作系统中的SSH默认情况下&#xff0c;端口是使用22&#xff0c;但是有些线上服务器并不是使用的默认端口&#xff0c;那么这个时候&#xff0c;我们应该如何快速知道SSH使用的哪个端口呢&#xff1f; 1、通过配置文件查看 cat /etc/ssh/sshd_confi…...

每日算法Day03

1.19.删除链表的倒数第N个节点 算法链接: 19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 类型: 链表 难度: 中等 思路&#xff1a;采用双指针法&#xff0c;控制两个指针之间的距离为n个节点 易错点&#xff1a;返回节点的确定和头节点的处理&…...

【漏洞复现】Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 【漏洞复现】Apache Solr 身份认证绕过导致任意文件读取漏洞复现(CVE-2024-45216) 一、漏洞概述1.1漏洞简介1.2组件描述1.3漏洞描述二、漏洞复现2.1 应用协议2.2 环境…...

若依将数据库更改为SQLite

文章目录 1. 添加依赖项2. 更新配置文件 application-druid.yml2.1. 配置数据源2.2. 配置连接验证 3. 更新 MybatisPlusConfig4. 解决 mapper 中使用 sysdate() 的问题4.1. 修改 BaseEntity4.2. 修改 Mapper 5. 更新 YML 配置 正文开始&#xff1a; 前提条件&#xff1a;在您的…...

ubuntu远程桌面开启opengl渲染权限

背景 最近用windows的【远程桌面连接】登录ubuntu后&#xff08;xrdp协议&#xff09;&#xff0c;发现gl环境是集显的&#xff0c;但是本地登录ubuntu桌面后是独显&#xff08;英伟达&#xff09;&#xff0c;想要在远程桌面上也用独显渲染环境。 一、查看是独显还是集显环境…...

Scala的泛型

需求:定义一个名为getMiddleEle 的方法用它来获取当前的列表的中间位置的值中间位置的下标 长度/2目标:getMiddleEle(List(1,2,3,4,5)) > 5/2 2 > 下标为2的元素是:3 getMiddleEle(List(1,2,3,4)) > 4/2 2 > 下标为2的元素是:3格式如下: 定义一个函数的格式:def…...

每隔一秒单片机向电脑发送一个16进制递增数据

SCON0x50 SM00 SM11&#xff08;工作方式为方式一&#xff09; REN1允许单片机从电脑接收数据 TB8 RB8 SM2是方式2和方式3直接配置为0 TI为发送中断请求标志位 由硬件配置为1 必须由 软件复位为0&#xff0c;RI为接收中断请求标志位&#xff0c;同理TI UART.c #include &l…...

轻量级日志管理平台:Grafana Loki搭建及应用(详细篇)

前言 Grafana Loki是Grafana Lab团队提供的一个水平可扩展、高可用性、多租户的日志聚合系统&#xff0c;与其他日志系统不同的是&#xff0c;Loki最初设计的理念是为了为日志建立标签索引&#xff0c;而非将原日志内容进行索引。 现在目前成熟的方案基本上都是&#xff1a;L…...

React和Vue.js的相似性和差异性是什么?

React和Vue.js都是现代前端开发中广泛使用的JavaScript框架&#xff0c;它们都旨在提高开发效率和组件化开发。以下是他们的一些相似性和差异性&#xff1a; 相似性 组件化&#xff1a;两者都支持组件化开发&#xff0c;允许开发者将UI拆分成独立的、可复用的组件。虚拟DOM&a…...

跨域 Cookie 共享

跨域请求经常遇到需要携带 cookie 的场景&#xff0c;为了确保跨域请求能够携带用户的认证信息或其他状态&#xff0c;浏览器提供了 withCredentials 这个属性。 如何在 Axios 中使用 withCredentials 为了在跨域请求中携带 cookie&#xff0c;需要在 Axios 配置中设置 withCr…...

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之计数器与累加器(一)

学习背景&#xff1a; 在现实生活中一些需要计数的场景下我们会用到计数器&#xff0c;如空姐手里记录乘客的计数器&#xff0c;跳绳手柄上的计数器等。累加器是累加器求和&#xff0c;以得到最后的结果。计数器和累加器它们虽然是基础知识&#xff0c;但是应用广泛&#xff0…...

红黑树(Red-Black Tree)

一、概念 红黑树&#xff08;Red Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;通过添加颜色信息来确保在进行插入和删除操作时&#xff0c;树的高度保持在对数级别&#xff0c;从而保证了查找、插入和删除操作的时间复杂度为 O(log n)。这种树可以很好地解决普…...

火电厂可视化助力提升运维效率

图扑智慧火电厂综合管理平台实现对火电厂关键设备和系统的实时监控和数据分析。图扑可视化不仅优化了运维流程&#xff0c;还增强了安全管理&#xff0c;有效提升了电厂整体运营效率。...

application.yml 和 bootstrap.yml

在 Spring Boot 中&#xff0c;application.yml 和 bootstrap.yml 都是用来配置应用程序的属性文件&#xff0c;通常用于环境配置、服务配置等。但是&#xff0c;它们有一些不同的用途和加载顺序。以下是它们之间的主要区别&#xff1a; 1. application.yml&#xff1a; 主要…...

电子应用设计方案-49:智能拖把系统方案设计

智能拖把系统方案设计 一、引言 随着人们生活水平的提高和对清洁效率的追求&#xff0c;智能拖把作为一种创新的清洁工具应运而生。本方案旨在设计一款功能强大、操作便捷、清洁效果出色的智能拖把系统。 二、系统概述 1. 系统目标 - 实现自动清洁地面&#xff0c;减轻用户劳…...

Model Context Protocol 精选资源列表

Model Context Protocol 精选资源列表 Model Context Protocol 精选资源列表什么是MCP&#xff1f;教程社区说明服务器实现&#x1f4c2; 浏览器自动化☁️ 云平台&#x1f4ac; 社交&#x1f464; 数据平台&#x1f5c4;️ 数据库&#x1f4bb; 开发者工具&#x1f9ee; 数据科…...

Windows 11 12 月补丁星期二修复了 72 个漏洞和一个零日漏洞

微软于 2024 年 12 月为 Windows 11 发布的补丁星期二修复了其产品生态系统中的 72 个漏洞&#xff0c;包括 Windows 通用日志文件系统驱动程序中一个被积极利用的零日漏洞。 这个严重漏洞可以通过基于堆的缓冲区溢出授予攻击者系统权限&#xff0c;使其成为此版本中优先级最高…...

Python毕业设计选题:基于Hadoop 的国产电影数据分析与可视化_django+spider

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 免费电影管理 在线论坛 留言反馈 看板展示 系统…...

蓝桥杯我来了

最近蓝桥杯报名快要截止了&#xff0c;我们学校开始收费了&#xff0c;我们学校没有校赛&#xff0c;一旦报名缴费就是省赛&#xff0c;虽然一早就在官网上报名了&#xff0c;但是一直在纠结&#xff0c;和家人沟通&#xff0c;和朋友交流&#xff0c;其实只是想寻求外界的支持…...

大模型qiming面试内容整理-编码能力评估

编码能力评估是大模型相关岗位面试中非常关键的一环,面试官通常希望通过这个环节了解候选人对编程语言、算法与数据结构的掌握情况,以及其在实践中解决实际问题的能力。以下是编码能力评估的常见内容和类型,特别是针对机器学习、大模型和深度学习方向: 编程语言熟练度 ● P…...

Vivado ILA数据导出MATLAB分析

目录 ILA数据导出 分析方式一 分析方式二 有时候在系统调试时&#xff0c;数据在VIVADO窗口获取的信息有限&#xff0c;可结合MATLAB对已捕获的数据进行分析处理 ILA数据导出 选择信号&#xff0c;单击右键后&#xff0c;会有export ILA DATA选项&#xff0c;将其保存成CS…...

Linux内核 -- 字符设备之read write poll基本实现

Linux字符设备&#xff1a;read、write和poll函数实现及完整代码 1. read函数 原型 ssize_t read(struct file *file, char __user *buf, size_t count, loff_t *pos);实现步骤 检查用户缓冲区&#xff1a;使用copy_to_user将数据从内核空间复制到用户空间。返回已读取的字…...

linux部署ansible自动化运维

ansible自动化运维 1&#xff0c;编写ansible的仓库&#xff08;比赛已经安装&#xff0c;无需关注&#xff09; 1、虚拟机右击---设置---添加---CD/DVD驱动器---完成---确定 2、将ansible.iso的光盘连接上&#xff08;右下角呈绿色状态&#xff09; 3、查看光盘挂载信息 df -h…...

springboot421社区医疗服务可视化系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装社区医疗服务可视化系统软件来发挥其高效地信息处理的作用…...

vue渲染时闪光白屏问题怎么解决(笔记)

Vue渲染时出现闪光白屏问题&#xff0c;可能是因为页面内容需要较长时间才能加载完成&#xff0c;而在加载期间&#xff0c;页面会显示白屏或者空白内容&#xff0c;给用户体验带来负面影响。 解决方法&#xff1a; 为标签绑定 v-cloak 在样式中写 v-clock {displa&#xff…...

duxapp 2024-12-09 更新 PullView可以弹出到中间,优化CLI使用体验

UI库 修复 Button 禁用状态失效的问题Modal 组件即将停用&#xff0c;请使用 PullView 基础库 PullView side 新增 center 指定弹出到屏幕中间PullView 新增 duration 属性&#xff0c;指定动画时长新增 useBackHandler hook 用来阻止安卓端点击返回键 RN端 修复 windows …...

vue调试插件vue Devtools下载安装

Vue.js Devtools_6.6.3_Chrome插件下载_极简插件 进图官网点击推荐下载下载该调试工具 解压缩找到扩展程序开启开发者模式 将解压缩的文件拖拽到该页面空白处&#xff0c;点击添加扩展程序 点击详情允许访问文件网址 页面右键检查可以发现已经成功添加该页面调试插件...

.net core使用AutoMapper

AutoMapper 是一个用于 .NET 平台的对象映射工具&#xff0c;它简化了不同对象类型之间的转换过程。在软件开发中&#xff0c;尤其是在分层架构的应用程序里&#xff0c;常常需要在不同的对象模型之间进行数据传递&#xff0c;例如从数据库实体到视图模型、DTO&#xff08;数据…...

HTTP头注入

注入类漏洞经久不衰&#xff0c;多年保持在owasp Top 10的首位。今天就聊聊那些被人遗忘的http头注入。用简单的实际代码进行演示&#xff0c;让每个人更深刻的去认识该漏洞。 3|0HOST注入 在以往http1.0中并没有host字段&#xff0c;但是在http1.1中增加了host字段&#xff…...

110.【C语言】编写命令行程序(1)

目录 1.前置知识 "命令"的含义 运行C语言程序 2.介绍 main函数的参数 实验1 执行结果 实验2 执行结果 修改代码 实验3 分析 方法:遍历数组argv[]中的所有参数 执行结果 修改代码 执行结果 1.前置知识 "命令"的含义 WINR输入cmd,在cmd窗口下…...

k8s 之 StatefulSet

深入理解StatefulSet&#xff08;一&#xff09;&#xff1a;拓扑状态 k8s有状态与无状态的区别 无状态服务&#xff1a;deployment Deployment被设计用来管理无状态服务的pod,每个pod完全一致.什么意思呢? 无状态服务内的多个Pod创建的顺序是没有顺序的. 无状态服务内的多…...

PTA 7-2 从身份证号码中提取出出生年月

分数 12 作者 崔孝凤 单位 山东理工大学 输入一个18位的身份证号码&#xff0c;提取出年份和月份并输出&#xff0c;请判断输入的号码是否是18位&#xff0c;如果不是请提示"Invalid data,input again!"&#xff0c;并重新输入新的号码。 输入格式: 输入一个18位…...