25/1/13 嵌入式笔记 继续学习Esp32
PWM(Pulse Width Modulation,脉宽调制) 是一种通过快速切换高低电平来模拟中间电压值的技术。它广泛应用于控制 LED 亮度、电机速度、音频生成等场景。
analogWrite函数:用于在微控制器(如 Arduino)上生成模拟信号。
使用analogWrite改变亮度。
#define POT 26
#define LED 13
//初始化电位计输入信号
int pot_value;
int led_value;void setup(){pinMode(POT,INPUT);pinMode(POT,INPUT);
}
void loop(){//读取电位计模拟输入值pot_value=analogRead(POT);//吧电位计模拟输入值转换为LED模拟输出led_value = pot_value/16;analogWrite(LED,led_value);delay(50);
}
使用LEDC外设
#define POT 26
#define LED 13
#define CHANNEL 0
#define RESOLUTION 12
#define FREQ 1000//初始化电位计输入信号
int pot_value;//用于存储电位计读取的模拟值
int led_value;void setup(){ //设置ADC分辨率analogReadResolution(12);//配置输入衰减analogSetAttenuation(ADC_11db);//建立LEDC通道,配置LEDC分辨率ledcSetup(CHANNEL,1000,12);//关联GPIO与LEDC通道ledcAttachPin(LED,CHANNEL);
}
void loop(){//读取电位计模拟输入值pot_value=analogRead(POT);//输出PWMledcWrite(CHANNEL,pot_value);delay(50);
}
I2C控制LED1602
设计理念是:信号线尽量少并且速率要尽量高,信号线少,可以减少引脚占用,这对早期的芯片(引脚很少)的很重要。
标准的I2C需要两根信号线:
SCL:时钟线,时钟都是有master提供的
SDA:双向数据线,发数据或者收数据(收发不能同时)
简单来说,只需要2根线,就可以对多台设备传输大量数据,减少单片机上IO口的占用。
TIP:需要将LiquidCrystal_I2C.h和.cpp文件放在一个目录下
库的使用:
显示文字在液晶屏上。
#include "LiquidCrystal_I2C.h"//构造LCD对象,设置地址,列数,行数
LiquidCrystal_I2C lcd(0x27,16,2);void setup(){ //初始化LCD对象lcd.init();//打印内容lcd.backlight();lcd.print("Hello,world!");
}
void loop(){}
通过串口显示
Serial.available()//判断串口缓冲区有没有数据,若大于0就读取了数据
Serial.read()//
从串口读取一个字节的数据,并将其写入 LCD 显示屏。这通常用于将通过串口接收到的字符显示在 LCD 上。
Adafruit_SSD1306的使用
上述知识均来自小破站的
18. SPI 控制 OLED 液晶屏_哔哩哔哩_bilibili这里面。
使用步骤:
1.初始化OLED,调用构造函数,调用begin方法
2.初始化完成后,调用绘制类函数,当然可以设置颜色,字体
3.绘制完毕,调用显示类函数display。
#include <Arduino.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define WIDTH 128
#define HEIGH 64
#define OLED_MOSI 13
#define OLED_SCK 18
#define OLED_DC 2
#define OLED_CS 4
#define OLED_RESET 15Adafruit_SSD1306 oled(WIDTH,HIGH,OLED_MOSI,OLED_SCK,OLED_DC,OLED_RESET,OLED_CS);//初始化进度
int progress=0;void setup() {//OLED初始化oled.begin();//清除显示oled.clearDisplay();//绘制水平线oled.drawFastHLine(32,5,48,SSD1306_WHITE);//绘制斜线oled.drawLine(32,5,48,30,SSD1306_WHITE);//绘制矩形oled.drawRect(5,5,10,25,SSD1306_WHITE);//绘制实心矩阵oled.fillRect(75,5,10,30,SSD1306_WHITE);//设置光标位置oled.setCursor(5,50);//设置文本颜色oled.setTextColor(SSD1306_WHITE);//显示文字oled.println("Hello,world!");//显示内容oled.display();
}void loop() {//清楚显示oled.clearDisplay();//设置光标位置oled.setCursor(25,40);//显示文字oled.println("Progress");//显示进度条边框oled.drawRoundRect(0,10,128,20,5,SSD1306_WHITE);//显示进度oled.fillRoundRect(5,15,progress,10,2,SSD1306_WHITE);//进度递增
if (progress<118)
{progress++;
}
else
{progress=0;
}//显示内容oled.display();//延时delay(50);
}
U8G2库控制OLED
平台支持性好,支持中文
#include <Arduino.h>
#include <U8g2lib.h>//构造对象
U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0,18,13,4,2,15);void setup() {//初始化OLED对象u8g2.begin();//开启中文字符集支持u8g2.enableUTF8Print();//设置字体u8g2.setFont(u8g2_font_wqy12_t_chinese2);}void loop() {//清除缓存区内容u8g2.clearBuffer();//绘制内容u8g2.setCursor(0,15);u8g2.print("Hello,World!");u8g2.setCursor(0,40);u8g2.print("你好,ESP32");//发送缓存区内容到OLED显示
}
按键控制菜单
#include <Arduino.h>
#include <U8g2lib.h>#define BUTTON_UP 12
#define BUTTON_DOWN 14void display_menu();//定义菜单列表
char *menu[4] = {"Item 1","Item 2","Item 3","Item 4"};
//构造对象
U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0,18,13,4,2,15);//初始化按键列表
unsigned int order = 0;
void setup() {//初始化OLED对象u8g2.begin();u8g2.setFont(u8g2_font_6x12_tr);//配置输出按键pinMode(BUTTON_UP,INPUT_PULLUP);pinMode(BUTTON_DOWN,INPUT_PULLUP);
}void loop()
{//判断按键是否按下,并记录位置if(!digitalRead(BUTTON_UP)){order = (order - 1 + 4)%4;}if(!digitalRead(BUTTON_DOWN)){order = (order + 1)%4;}display_menu(order);delay(80);
}
void display_menu(){u8g2.firstPage();do {//绘制页面内容u8g2.drawStr(0,12,"Menu");u8g2.drawHLinie(0,14,128);for(int i=0;i<4;i++){if(i==index){u8g2.drawStr(5,(i+2)*12+2,">");u8g2.drawStr(20,(i+2)*12+2,menu[i]);}else{u8g2.drawStr(5,(i+2)*12+2,menu[i]);}}}while(u8g2.nextPage());}
中断分类:
硬件中断,也称外部中断,一键中断响应外部硬件时间而发生,
软件中断:当触发软件事件时,会发生这种类型的中断。
在中断执行函数中不能用delay()函数
delay()
的工作原理
-
delay()
函数依赖于 Arduino 的millis()
函数,后者通过定时器中断来更新时间。 -
在
delay()
执行期间,程序会不断检查millis()
的值,直到达到指定的延时时间。 -
如果在 ISR 中使用
delay()
,会导致以下问题:-
阻塞其他中断:
delay()
依赖于定时器中断,但在 ISR 中,定时器中断被禁用,导致millis()
无法更新,delay()
会一直阻塞。 -
影响系统实时性:ISR 应该尽快执行完毕,
delay()
会延长 ISR 的执行时间,影响系统的响应能力。
-
简单来说delay是一个阻塞函数,他会暂停代码的执行,会中断积压。
定时器中断
ESP32通过定时器可以完成各种预设好的任务,ESP32定时器达到指定时间后也会产生中断,然后在回调函数内执行所需功能。
#define LED 2
#define LED_ONCE 4hw_timer_t *timer = NULL;
hw_timer_t *timer_once = NULL;// 定时中断函数:用于 LED 闪烁
void IRAM_ATTR timer_interrupt() {digitalWrite(LED, !digitalRead(LED)); // 切换 LED 状态
}// 一次性定时中断函数:用于点亮 LED_ONCE
void IRAM_ATTR timer_once_interrupt() {digitalWrite(LED_ONCE, HIGH); // 点亮 LED_ONCE
}void setup() {pinMode(LED, OUTPUT);pinMode(LED_ONCE, OUTPUT);// 初始化定时器timer = timerBegin(0, 80, true); // 使用定时器 0,分频系数 80,向上计数timer_once = timerBegin(1, 80, true); // 使用定时器 1,分频系数 80,向上计数// 配置定时器中断timerAttachInterrupt(timer, &timer_interrupt, true); // 绑定 timer_interrupt 到定时器 0timerAttachInterrupt(timer_once, &timer_once_interrupt, true); // 绑定 timer_once_interrupt 到定时器 1// 设置定时器周期(单位:微秒)timerAlarmWrite(timer, 1000000, true); // 定时器 0 每 1 秒触发一次timerAlarmWrite(timer_once, 5000000, false); // 定时器 1 在 5 秒后触发一次(仅一次)// 启用定时器报警timerAlarmEnable(timer);timerAlarmEnable(timer_once);
}void loop() {// 主循环无需操作
}
软件定时器
#include <Ticker.h>
#define LED 2
#define LED_ONCE 4//定义定时器对象
Ticker timer;
Ticker timer_once;//切换指定引脚的电平状态
void toggle(int pin){digitalWrite(pin,!digitalRead(pin));
}void setup() {pinMode(LED, OUTPUT);pinMode(LED_ONCE, OUTPUT);//配置定时器timer.attach(0.5,toggle,LED);timer_once.once(3,toggle,toggle,LED_ONCE);
}void loop() {// 主循环无需操作
}
舵机转动
CHANNEL
是 ESP32 的 LEDC(LED PWM 控制器) 通道编号。ESP32 的 LEDC 模块提供了多个独立的 PWM 通道,可以用来生成 PWM 信号,控制设备如 LED 亮度、舵机角度等。
-
通道 0 用于生成 PWM 信号,控制连接到
SERVO
引脚(GPIO 13)的设备(如舵机)。
#define FREQ 50
#define CHANNEL 0
#define RESOLUTION 8
#define SERVO 13int calculatePWM(int degree){int min_width=0.5/20*pow(2,RESOLUTION);int max_width=2.5/20*pow(2,RESOLUTION);return (max_width-min_width)*degree/180+min_width;}void setup(){//建立LEDC通道ledcSetup(CHANNEL,FREQ,RESOLUTION);//关联GPIO口与LEDC通道ledcAttachPin(SERVO,CHANNEL);
}void loop(){for (int i=0;i<=180;i+=10){//输出PWM,设置占空比ledcWrite(CHANNEL,calculatePWM(i));delay(500);}
}
ok!明天见!
相关文章:
25/1/13 嵌入式笔记 继续学习Esp32
PWM(Pulse Width Modulation,脉宽调制) 是一种通过快速切换高低电平来模拟中间电压值的技术。它广泛应用于控制 LED 亮度、电机速度、音频生成等场景。 analogWrite函数:用于在微控制器(如 Arduino)上生成模拟信号。 …...
C语言的语法糖
C语言的语法糖 引言 在程序开发的过程中,语言的设计和编写风格往往会直接影响开发效率和代码可读性。C语言作为一种广泛应用于系统编程和嵌入式开发的编程语言,其设计虽然追求简洁与高效,但在某些方面同样存在可以提高编程体验的“语法糖”…...
客户案例:致远OA与携程商旅集成方案
一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…...
浔川 AI 翻译已修复,可正常使用
浔川 AI 翻译已修复,可正常使用 亲爱的用户们: 大家好!经过技术团队的不懈努力,浔川 AI 翻译平台已完成修复,目前各项功能均已恢复正常,可流畅使用。在此,我们向一直以来关心和支持浔川 AI 翻译…...
【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 单例模式(Singleton Pattern)是一种常见的设计模式,它确保一个类只有一个实例&…...
D. Paint the Tree
https://codeforces.com/problemset/problem/1975/D 分析: 观察样例可以发现,对于PB第一次在位置 r 接触到红点之后,接下来的怎么走完全可以有PB说了算,情况不会更差。同时还能发现,大部分边都是需要走两遍的ÿ…...
ScratchLLMStepByStep:训练自己的Tokenizer
1. 引言 分词器是每个大语言模型必不可少的组件,但每个大语言模型的分词器几乎都不相同。如果要训练自己的分词器,可以使用huggingface的tokenizers框架,tokenizers包含以下主要组件: Tokenizer: 分词器的核心组件,定…...
【Linux】Socket编程-TCP构建自己的C++服务器
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 Socket 编程 TCP 🦋 TCP socket API 详解🦋 多线程远程命令执行🦋 网络版计算器(应用层自定义协议与序列化…...
数据结构——线性表和顺序表
1、线性表的基本概念 1.1 定义 线性结构是简单且常用的数据结构,而线性表则是一种典型的线性结构 存储数据,最简单,最有效的方法是吧它们存储在一个线性表中 一个线性表是n个元素的有限序列。每个元素在不同的情况下有不同的含义,…...
FunASR 在Linux/Unix 平台编译
第一步拉取镜像并生成容器: ### 镜像启动 通过下述命令拉取并启动FunASR软件包的docker镜像: shell sudo docker pull \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12 mkdir -p ./funasr-runtime-…...
AIP-200 先例
编号200原文链接AIP-200: Precedent状态批准创建日期2018-06-28更新日期2018-06-28 很多时候,API的编写方式会违反新的指导原则。此外,有时出于特定原因也需要打破标准,例如与现有系统保持一致、满足严格的性能要求或其他因素。最后…...
SAP五大核心模块:塑造企业数字化未来
在数字化转型的浪潮中,SAP(Systems, Applications and Products in Data Processing)以其强大的企业资源规划(ERP)系统,成为众多企业信赖的伙伴。SAP系统通过五大核心模块,即财务管理࿰…...
【UE5.3】fix DONET报错
新的机器 4070 gpu 运行ue项目, 可能是epic 启动器是vs安装的, vs安装的epic 启动器自己更新了一波,导致了.NET的问题? ue项目是拷贝远程的windows的电脑里面的,应该不会导致ue源码里的cs出问题? 【UE5.3】UnrealLink 安装:fix Detected compiler newer than Visual Stu…...
【0393】Postgres内核 checkpointer process ③ 构建 WAL records 工作缓存区
1. 初始化 ThisTimeLineID、RedoRecPtr 函数 InitXLOGAccess() 内部会初始化 ThisTimeLineID、wal_segment_size、doPageWrites 和 RedoRecPtr 等全局变量。 下面是这四个变量初始化前的值: (gdb) p ThisTimeLineID $125 = 0 (gdb) p wal_segment_size $126 = 16777216 (gdb…...
pc 端 TensorRT API 实现 YOLOv11 的 C++ 小白部署经验
标题1 模型转化 python 先下载项目 https://github.com/ultralytics/ultralytics 同时下载模型 https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt pythonconda虚拟环境,主要是以下三个,其余缺什么直接pip anaconda…...
LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145185794 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律…...
【机器学习实战】kaggle 欺诈检测---使用生成对抗网络(GAN)解决欺诈数据中正负样本极度不平衡问题
【机器学习实战】kaggle 欺诈检测---如何解决欺诈数据中正负样本极度不平衡问题https://blog.csdn.net/2302_79308082/article/details/145177242 本篇文章是基于上次文章中提到的对抗生成网络,通过对抗生成网络生成少数类样本,平衡欺诈数据中正类样本极…...
C++ 之多线程相关总结
C 之多线程相关总结 1.多线程相关基础知识 1.1 线程的创建和管理 1. std::thread 类: 用于创建和管理线程。通过将可调用对象(如函数、函数对象、lambda 表达式)作为参数传递给 std::thread 的构造函数,可以创建一个新的线程。…...
基于机器学习随机森林算法的个人职业预测研究
1.背景调研 随着信息技术的飞速发展,特别是大数据和云计算技术的广泛应用,各行各业都积累了大量的数据。这些数据中蕴含着丰富的信息和模式,为利用机器学习进行职业预测提供了可能。机器学习算法的不断进步,如深度学习、强化学习等…...
性能测试 - Locust WebSocket client
Max.Bai 2024.10 0. 背景 Locust 是性能测试工具,但是默认只支持http协议,就是默认只有http的client,需要其他协议的测试必须自己扩展对于的client,比如下面的WebSocket client。 1. WebSocket test Client “”“ Max.Bai W…...
量子计算将彻底改变商业分析
虽然量子计算听起来颇具未来感,但这项技术正迅速走向成熟 —— 就如同 ChatGPT 这类人工智能(AI)工具一样。我相信,量子计算技术所产生的连锁反应很快就会对业务分析领域产生巨大影响。 什么是量子计算? 尽管名字听起…...
爬山算法与模拟退火算法的全方面比较
一、基本概念与原理 1. 爬山算法 爬山算法是一种基于启发式的局部搜索算法,通过不断地向当前解的邻域中搜索更优解来逼近全局最优解。它的核心思想是,从当前解出发,在邻域内找到一个使目标函数值更大(或更小)的解作为新的当前解,直到找不到更优的解为止。 2.模拟退火算…...
【深度学习】用RML2018训练好模型去识别RML2016的数据会遇到输入维度不匹配的问题,如何解决?
文章目录 问题解决办法1. 调整输入数据长度2. 修改模型结构(我个人比较推崇的方法)3. 迁移学习4. 重新训练模型5. 数据增强6. 其他差异问题 经常会有人问的一个问题: 我用RML2018跑的调制识别模型,用RML2016数据集能直接识别吗?(2018数据集信号样本的长度是1024,2016数据集…...
2025年1月17日(点亮一个 LED)
系统信息: Raspberry Pi Zero 2W 系统版本: 2024-10-22-raspios-bullseye-armhf Python 版本:Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习目标:…...
商用车电子电气零部件电磁兼容条件和试验(8)—辐射抗干扰(ALSE)和便携式发射机抗干扰(HPT)
写在前面 本系列文章主要讲解商用车电子/电气零部件或系统的传导抗干扰、传导发射和辐射抗干扰、电场辐射发射以及静电放电等试验内容及要求,高压试验项目内容及要求。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 目录 商用车电子电气零部件电磁兼容条件和试验—目录…...
NumPy;NumPy在数据分析中的应用;NumPy与其他库的搭配使用
NumPy;NumPy在数据分析中的应用;NumPy与其他库的搭配使用 NumPy:Python 数据分析的核心工具什么是 NumPy?NumPy 的主要优势 NumPy 在数据分析中的应用1. 数据处理与清洗2. 数学和统计分析3. 数组变换与矩阵运算 NumPy 与其他库的搭…...
机器学习经典无监督算法——聚类K-Means算法
目录 算法原理 算法步骤 算法API 算法导入 API参数理解 算法实现 算法原理 Kmeans 算法是一种无监督的聚类算法,目的是将数据集中的样本划分到 K 个不同的簇中。 聚类:将数据集中相似的数据点归为一组或一个簇的过程。 数据集:一组相…...
网络变压器的分类
网络变压器是局域网(LAN)中各级网络设备中必备的元件。它们的主要功能是传输数据,增强信号,并提供电气隔离,以防雷保护和匹配阻抗。网络变压器也被称为数据泵或网络隔离变压器。它们广泛应用于网络交换机、路由器、网卡、集线器等设备中。 网…...
【MySQL】复合查询+表的内外连接
复合查询表的内外连接 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单列子查询4.2多列子查询 5.在from子句中使用子查询6.合并查询7.表的内连和外连7.1内连接7.2外连接7.2.1左外连接7.2.2右外连接 点赞👍👍收藏🌟🌟关注…...
创建模式、结构模式及行为模式
谁在什么地方提供什么功能? 要设计几个类?这些类各个是什么功能?相互间的关系是什么? 创建模式指的是对象那么多,怎么把它"生"出来?生几个?从这个角度上来说数组就是一种另类的创建模式。主要…...
警惕IDEA 2024版重大Bug问题:LomBok失效、Gradle冲突、Spring Boot启动错误
一直以来我认为工具类的软件是越新越好,因为工具代表着一定的先进性;但是IDEA 2024好好的给我上了一课,比如lombok 不起作用、比如Spring Boot 3.4.x 启动报错、再比如MyBatis log plus冲突、再比如Gradle插件冲突. 一、Lombok 失效问题 请不…...
C语言中char str和char str[]的区别
char* str和char* str[]的区别:C语言中char *str[] 和char *str有什么区别-CSDN博客 char str 和 char str[] 在 C 语言中也有不同的含义和用途,以下是它们的区别: 1. char str 类型:这是一个单一的字符变量。 用途:…...
(学习总结20)C++11 可变参数模版、lambda表达式、包装器与部分新内容添加
C11 可变参数模版、lambda表达式、包装器与部分新内容添加 一、可变参数模版基本语法及原理包扩展emplace系列接口 二、lambda表达式lambda表达式语法捕捉列表lambda的原理lambda的应用 三、包装器bindfunction 四、部分新内容添加新的类功能1.默认的移动构造和移动赋值2.声明时…...
备份和容灾之区别(The Difference between Backup and Disaster Recovery)
备份和容灾之区别 备份和容灾都是数据安全常见的保障手段,但是一般在正常业务运行时是无需用到这两个技术手段的。只有在业务已经崩溃,需要进行业务恢复时,这两种技术的价值才能真正体现。所以,备份和容灾可以说是数据安全最后两…...
Go语言之路————数组、切片、map
Go语言之路————数组、切片、map 前言一、数组二、切片三、map 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程ÿ…...
Kotlin Bytedeco OpenCV 图像图像57 图像ROI
Kotlin Bytedeco OpenCV 图像图像57 图像ROI 1 添加依赖2 测试代码3 测试结果 1 添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns"http://maven.apache.o…...
字符编码通过字节数组向16进制的互转【终端设备通讯案例篇】:微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。(接收蓝牙设备的信息,发送北斗终端消息)
文章目录 引言I 原理II 案例一:微信小程序字符串转gb2312 字符编码,以16进制字符串传输。字节数组 转16进制字符串微信小程序字符串转gb2312 字节数组(utf8ToGb2312Bytes)demo:gb2312 字符编码->字节数组->16进制字符串III 案例二: 小程序接收gb2312 的16进制字符串…...
LabVIEW与WPS文件格式的兼容性
LabVIEW 本身并不原生支持将文件直接保存为 WPS 格式(如 WPS 文档或表格)。然而,可以通过几种间接的方式实现这一目标,确保您能将 LabVIEW 中的数据或报告转换为 WPS 可兼容的格式。以下是几种常见的解决方案: 导出…...
协程(还需要输入3个字)
昨天我偶然听到协程这个概念,不禁好奇地了解了一下,做些笔记如下: 一、什么是协程 协程是在线程内部,由程序自己控制逻辑, 显式地让出控制权(yield)来实现任务切换,而不是由操作系…...
系统架构设计师-第1章-计算机系统知识要点
【本章学习建议】 根据考试大纲,本章主要考查系统架构设计师单选题,预计考1分左右。第二版教材2.2节增加了本块内容,但较为简略,需要课程补充,属于非重点内容。 1.1 计算机硬件组成 计算机的基本硬件系统由运算器、控…...
Linux -- 初识HTTP协议
目录 什么是HTTP协议 什么是 URL ? 理解 URL 初识HTTP 请求与响应格式 代码验证 gitee HTTP.hpp 结果 什么是HTTP协议 HTTP(HyperText Transfer Protocol,超文本传输协议)主要用于客户端(通常是浏览器&#…...
【已解决】我和ollama运行的qwen2.5大模型通信,总是返回GGGG?
起因: 和大模型通信的时候,总是返回 GGG 之类的乱码。 curl查询返回到结果: 既然curl通信不行,直接在控制台聊天呢? 话都说不明白,我火了,结果一查,我熄火了,是ollama…...
在Mac mini上实现本地话部署AI和知识库
在Mac mini上实现本地话部署AI和知识库 硬件要求:大模型AI,也叫LLM,需要硬件支持,常见的方式有2种:一种是采用英伟达之类支持CUDA库的GPU芯片或者专用AI芯片;第二种是采用苹果M系列芯片架构的支持统一内存架…...
SQL和MySQL以及DAX的日期表生成?数字型日期?将生成的日期表插入到临时表或者实体表中
几种生成日期表的方法 如何用SQL语句生成日期表呢? 如何用MySQL语句生成日期表呢? 如何用DAX语句生成日期表呢? 1. MySQL生成日期表 1.1 日期格式:yyyy-MM-dd 字符型 2024-01-02 -- 生成日期表 WITH RECURSIVE temp_dateTable …...
win32汇编环境,窗口程序中基础列表框的应用举例
;运行效果 ;win32汇编环境,窗口程序中基础列表框的应用举例 ;比如在窗口程序中生成列表框,增加子项,删除某项,取得指定项内容等 ;直接抄进RadAsm可编译运行。重点部分加备注。 ;以下是ASM文件 ;>>>>>>>>>>>…...
Sentinel配置流控规则详解
前言 在微服务架构中,流量控制(Flow Control)是保障服务稳定性的重要手段之一。Sentinel作为一款开源的流量控制、熔断降级Java库,以其丰富的应用场景和完善的监控能力,在微服务保护中扮演了重要角色。本文将详细介绍…...
opencv图像基础学习
2.3图像的加密解密 源码如下: import cv2 import numpy as np import matplotlib.pyplot as plt def passImg():imgcv2.imread(./image/cat.jpg,0)h,wimg.shape#生成一个密码,加密key_imgnp.random.randint(0,256,size(h,w),dtypenp.uint8)img_addmcv2…...
递归40题!再见递归
简介:40个问题,有难有易,均使用递归完成,需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数,求该整数中每个数字出现的次数。 输入:19931003 输出…...
javadoc使用dos命令生成api文档演示
新建一个文本后缀改java,名字改为类名 文本内容: /** * author ZZJ * version jdk23.0.1 */ public class Test{/*** 求输入两个参数范围以内整数的和* param n 接收的第一个参数,范围起点* param m 接收的第二个参数,范围终点*…...
OpenAI推出首个AI Agent!日常事项自动化处理!
2025 年1月15日,OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说,你可以设置每天早晨 7 点获取天气预报,或定时提醒遛狗等日常事项。 看到这里,有没有一种熟悉的感觉&a…...