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

输出比较简介

输出比较简介

主要是用来输出PWM波形,这个波形是驱动电机的(智能车和机器人等)必要条件

OC(Output Compare)输出比较,还有IC,全称是Input Capture,意为输入捕获,还有CC,全称是Capture/Compare,一般表示的是输入捕获和输出比较的单元

输出比较可以通过比较CNT与CCR(捕获/比较寄存器)寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形

Snipaste_2024-11-18_08-49-12

这个捕获/比较寄存器是输入捕获和输出比校共用的,当使用输入捕获时,它就是捕获寄存器,当使用输出比较时,它就是比较寄存器,那在输出比较这里,这块电路会比较CNT和CCR的值,CNT计数自增,CCR是我们给定的一个值,当CNT大于CCR、小于CCR或者等于CCR时,TIMx_CH1输出就会对应的置1、置0、置1、置0

每个高级定时器和通用定时器都拥有4个输出比较通道

高级定时器的前3个通道额外拥有死区生成和互补输出的功能:驱动三相无刷电机的

PWM波形简介

PWM(Pulse Width Modulation)脉冲宽度调制:是一个数字输出信号,也是由高低电平组成的

image-20241118091258039

在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域

我们让LED不断点亮、熄灭、点亮、熄灭,当这个频率足够大的时候,LED就不会闪烁了,而是呈现一个中等亮度,当我们调控这个点亮和熄灭的时间比例时,就能让LED呈现出不同的亮度级别,对于电机调速也是一样的,我们以一个很快的频率,给电机通电、断电、通电、断电,那么电机的速度就能维持在一个中等速度,这就是PWM的基本思想(天下武功,唯快不破)

PWM的应用场景必须要是一个惯性系统,就是说LED在熄灭的时候,由于余晖和人眼视觉暂留现象,LED不会立马熄灭,而是有一定的惯性,过一小段时间才会熄灭,电机也是,当电机断电时,电机的转动不会立马停止,而是有一定的惯性,过一会儿才停

image-20241118092053856

这种高低电平跳变的数字信号,它是可以等效为中间这个虚线所表示的模拟量的,当这个上面电平时间长一点,下面电平时间短一点的时候,那等效的模拟量就偏向于上面(反之亦然)

Snipaste_2024-11-18_09-22-51

PWM的频率越快,那它等效模拟的信号就越平稳,不过同时性能开销就越大

一般来说PWM的频率都在几K到几十KHz,这个频率就已经足够快了

占空比就是高电平时间相对于整个周期时间的比例,占空比决定了PWM等效出来的模拟电压的大小,占空比越大,那等效的模拟电压就越趋近于高电平,占空比越小,那等效的模拟电压就越趋近于低电平,这个等效关系一般来说是线性的,比如高电平是5V,低电平是0V,那50%占空比就等效于中间电压,就是2.5V,20%占空比就等效于,1/5处的电压,就是1V

那最后一个参数就是分辨率,它等于占空比变化步距,比如有的占空比只能是1%、2%、3%等等这样以1%的步距跳变,那它的分辨率就是1%,所以这个分辨率就是占空比变化的精细程度,这个分辨率需要多高,得看你实际项目的需求,如果你即要高频率,又要高分辨率,这就对硬件电路要求比较高了,不过一般要求不高的话,1%的分辨率就已经足够使用了

定时器的输出比较模块是怎么输出PWM波形的呢?

image-20241118093130578

这里这个图是高级定时器前三个通道的输出比较部分电路

image-20241118093204157

这个图是通用定时器的输出比较部分电路,包括高级定时器的第四个通道和这个结构也基本是一样的,这个图是通用定时器下面这个地方的放大版

Snipaste_2024-11-18_09-33-27

左边就是CNT计数器和CCR1第一路的捕获/比较寄存器,它俩进行比较,当CNT>CCR1,或者CNT=CCR1时,就会给这个输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF的高低电平,REF(reference的缩写,意思是参考信号)信号实际上就是指这里信号的高低电平,然后上面这里还有个ETRF输入,这个是定时器的一个小功能,一般不用,不需要了解,接着这个REF信号可以前往主模式控制器,你可以把这个REF映射到主模式的TRGO输出上去,不过REF的主要去向还是下面这一路,通过下面这一路到达一个极性选择,给这个寄存器写0,信号就会往上走,就是信号电平不翻转,进来啥样出去还是啥样,写1的话,信号就会往下走,就是信号通过一个非门取反

极性选择:选择是不是要把高低电平反转一下,接着就是输出使能电路了,选择要不要输出,最后就是OC1引脚,这个引脚就是CH1通道的引脚,在引脚定义表里就可以知道具体是哪个GPIO口了

输出模式控制器具体是怎么工作的呢?什么时候给REF高电平,什么时候给REF低电平?

下面是输出比较的8种模式,也就是输出模式控制寄存器里面的执行逻辑,这个模式控制器的输入CNT和CCR的大小关系,输出是REF的高低电平,里面可以选择多种模式来更加灵活地控制REF输出,这个模式可以通过寄存器来进行配置

Snipaste_2024-11-18_09-55-11

模式描述
冻结CNT=CCR时,REF保持为原状态(CNT和CCR无效,REF保持为原状态,比如你正在输出PWM波,突然想暂停一会儿输出,并且高低电平也维持为暂停时刻的状态,保持不变,就可以设置成这个模式)
匹配时置有效电平CNT=CCR时,REF置有效电平(高电平)
匹配时置无效电平CNT=CCR时,REF置无效电平(低电平)
匹配时电平翻转CNT=CCR时,REF电平翻转(这个可以方便地输出一个频率可调,占空比始终为50%的PWM波形,比如你设置CCR为0,那CNT每次更新清0时,就会产生一次CNT=CCR的事件,这就会导致输出电平翻转一次,每更新两次,输出为一个周期,并且高电平和低电平的时间是始终相等的,也就是占空比始终为50%,当你改变定时器更新频率时,输出波形的频率也会随之改变,它俩的关系是输出波形的频率=更新频率/2,因为更新两次输出才为一个周期,这就是匹配时电平翻转模式的用途)
强制为无效电平CNT与CCR无效,REF强制为无效电平
强制为有效电平CNT与CCR无效,REF强制为有效电平
PWM模式1向上计数:CNT<CCR时,REF置有效电平,CNT≥CCR时,REF置无效电平(用这个)
向下计数:CNT>CCR时,REF置无效电平,CNT≤CCR时,REF置有效电平
PWM模式2向上计数:CNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平
向下计数:CNT>CCR时,REF置有效电平,CNT≤CCR时,REF置无效电平

这个有效电平和无效电平,一般是高级定时器里面的一个说法,是和关断、刹车这些功能配合表述的,它说的比较严谨

为了理解方便,可以直接认为,置有效电平就是置高电平,置无效电平就是置低电平,这样就行了,这三个模式都是当CNT和CCR值相等时,执行操作

上面这两个相等时置高电平和低电平,感觉用途并不是很大,因为他们都只是一次性的,置完高或低电平后,就不管事了,所以这俩模式不适合输出连续变化的波形,如果你想定时输出一个一次性的信号,那就考虑这两个模式

强制为无效电平和强制为有效电平:这两个模式是CNT与CCR无效,REF强制为无效电平或者强制为有效电平,这两个模式和冻结模式差不多,如果你想暂停波形输出,并目在暂停期间保持低电平或者高电平

PWM1和PWM2这两个模式就很重要了,它们可以用于输出频率和占空比都可调的PWM波形,也是我们主要使用的模式

PWM2实际上就是PWM1输出的取反,改变PWM模式1和PWM模式2,就只是改变了REF电平的极性而已

从上面这个图125里可以看到,REF输出之后还有一个极性的配置,所以使用PWM模式1的正极性和PWM模式2的反极性最终的输出是一样的,这里设计的比较灵活,输出模式里可以设置极性,最终输出之前也可以设置极性,所以使用的话,我们可以只使用PWM模式1,并且是向上计数这一种模式就行了,那这种模式是怎么输出频率和占空比都可调的PWM波形的呢

Snipaste_2024-11-18_19-50-37

只是计数器那附近的更新事件的中断申请,我们不需要了,输出PWM暂时还不需要中断

配置好了时基单元,这里的CNT就可以开始不断地自增运行了

下面就是输出比较单元了,总共有4路,输出比较单元的最开始,是CCR(我们自己设置的)捕获/比较寄存器,CNT不断自增运行,同时它俩还在不断进行比较,后面这个就是输出模式控制器了,以PWM模式1为例子来讲解了

image-20241118195517816

这里蓝色线是CNT的值,黄色线是ARR的值,蓝色线从0开始自增,一直增到ARR,也就是99,之后清0继续自增,在这个过程中,我们再设置一条红色线,这条红色线就是CCR,比如我们设置CCR为30,之后再执行输出模式控制器的这个逻辑,下面绿色线就是输出,可以看到,在这一块,CNT<CCR,所以置高电平,之后这里,CNT就≥CCR了,所以就变为低电平,当CNT溢出清0后,CNT又小于CCR,所以置高电平,这样一直持续下去,REF的电平就会不断变化,并且它的占空比是受CCR值的调控的,如果CCR设置高一些,输出的占空比就变大

这里REF,就是一个频率可调,占空比也可调的PWM波形,最终再经过极性选择,输出使能,最终通向GPIO口,这样就能完成PWM波形的输出了

PWM波形参数的计算

PWM频率: F r e q = C K _ P S C / ( P S C + 1 ) / ( A R R + 1 ) Freq = CK\_PSC / (PSC + 1) / (ARR + 1) Freq=CK_PSC/(PSC+1)/(ARR+1) 等于计数器的更新频率
PWM占空比: D u t y = C C R / ( A R R + 1 ) Duty = CCR / (ARR + 1) Duty=CCR/(ARR+1)
PWM分辨率: R e s o = 1 / ( A R R + 1 ) Reso = 1 / (ARR + 1) Reso=1/(ARR+1) 占空比最小的变化步距,总之就是占空比变化的越细腻越好

从上面这个图可以看出,CCR的值应该设置在0到ARR+1这个范围里,CCR=ARR+1时,占空比就正好是100%,如果CCR再大一些,那占空比就始终是100%,没有意义了,所以CCR的变化范围取决于ARR的值,ARR越大,CCR的范围就越大,对应的分辨率就越大

image-20241118201344894

上图高级定时器部分自己了解就好

分辨率的理解:

分辩率:是指PWM最小能设定到的高电平时间所占周期的比例,也即最小占空比,意思就是把一个周期的时间分成了多少份,如果是10份,那么占空比的精度就为10%。如果分成1000份,那么占空比的精度就为0.1%。譬如频率为600HZ的PWM,若最小能给到的时钟是60kHZ,则分辨率即为(1/60k)/(1/600)=1%。在同一个系统中,由于时钟不变,提高频率,则周期变小,分辨率会变大。
————————————————版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/h1580824951/article/details/118151009

舵机

舵机是一种根据输入PWM信号占空比来控制输出角度的装置

输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms

舵机三根输入线,两根电源线,一根信号线,我们的PWM就是输入到这个信号线,来控制舵机的,有一个白色的输出轴,它的轴会固定在一个指定的角度不动,至于固定在哪个位置,是由信号线的PWM信号来决定的

image-20241118230256119

PWM信号输入到控制板,给控制板一个指定的目标角度,然后这个电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转,如果小于目标角度,电机就会正转,最终使输出轴固定在指定角度(总之就是输入一个PWM波形,输出轴固定在一个角度)

这是180度的舵机

image-20241118230538995

把PWM当成一个通信协议,也是一个比较常见的应用,因为很多控制器都有PWM输出的功能,而且PWM只需要一根信号线就行了

image-20241118230831582

image-20241118230841895

电源正的5V,这个是电机的驱动电源,一般电机都是大功率设备

它的驱动电源也必须是一个大功率的输出设备,如果能像这样单独提供供电,那就再好不过了,如果不能也要看电源的功率是不是能达标

对于我们套件的话,可以直接从STLINK的5V输出脚,引一根线,接到这里,这样就是使用USB的5V供电,也是可以带的动的

因为这个舵机内部是有驱动电路的,所以我们单片机的引脚可以直接接到这里来,我们这个PWM只是一个通信线是不需要PWM的

直流电机

因为这个直流电机是一个单独的电机,里面没有驱动电路,所以我们要外挂一个驱动电路来控制

直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转

我们套件里的电机,型号是130直流电机

直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作

电机驱动电路也是一个研究课题,现在市面上也有很多驱动电路可以选择,比如TB6612,DRV8833,L9110,L298N等等,另外还有一些用分离元件MOS管搭建的电路,这个功率可以做的更大一些,当然你也可以自己用MOS管来设计电路

image-20241119101050634

上面的芯片就是TB6612,外围电路就只需要三个滤波电容就行了,可见这个芯片的集成度还是非常高的,基本上不需要我们再加什么东西了

image-20241119101104241

然后上面这个就是H桥电路的基本结构,它是由两路推挽电路组成的,这个我们刚才也分析过,比如左边这个,上管寻导通,下管断开,那左边输出O1就是接在VM的电机电源正极,下管导通,上管断开,那就是接在PGND的电源负极,如果由两路推挽电路,中间这里接一个电机左上和右下导通,那电流就是这样的,从左边流向右边,右上和左下导通,那电流方向就反过来了,从右边流向左边,H桥可以控制电流流过的方向,所以它就能控制电机的正反转

TB6612是一款双路H桥型(里面一路有四个开关管,所以就可以控制正反转)的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向(我们使用这个)

TB6612的使用

image-20241119102108608

这里左下角VM,就是电机电源的正极,这个和刚才舵机的电源要求是一样的,要接一个可以输出大电流的电源(这个电压一般和你的电机额定电压保持一致,比如如果你是5V的电机,这里就接5V,如果你是7.2V的电机,这里就接7.2V)

然后下一个引脚是VCC,这个是逻辑电平输入端,范围是2.7V到5.5V,这个要和我们控制器的电源保持一致,比如你使用STM32,是3.3V的器件,那就接3.3V,如果是51单片机,是5V的器件,那就接5V,这个引脚不需要大功率,所以可以和控制器共用一个电源。

然后第三个脚是GND,这个就接系统的负极就行了,然后板子这右边还有两个GND,这个都是一样的引脚,在板子内部都是连通的,随便选一个GND用就可以

然后继续看,这里AO1、AO2(A路的两个输出,它的控制端就是PWMA(要接PWM信号输出端),AIN2,AIN1(这两个引脚可以任意接两个普通的GPIO口),这三个引脚直接接到单片机的GPIO口就行了,这三个引脚给一个低功率的控制信号,驱动电路就会从VM汲取电流,来输出到电机,这样就能完成低功率的控制信号控制大功率设备的目的了)、BO1、BO2就是两路电机的输出了(那个M代表电机)

STBY(Stand By)引脚,这个是待机控制脚,如果接GND,芯片就不工作,处于待机状态,如果接逻辑电源VCC,芯片就正常工作,这个引脚如果不需要待机模式的话,可以直接接VCC,3.3V,如果需要的话,可以任意接一个GPIO,给高低电平就可以控制了

那这三个脚是如何控制电机正反转和速度的呢?

看下面的下面这张表

这里输入是IN1、IN2、PWM、和STBY,STBY低电平就待机,高电平就正常工作,这个不用看了,然后右边是输出,O1,O2和模式状态,如果IN1和IN2全部接高电平,两个输出就都为低电平,这样两个输出没有电压差,电机是不会转的,如果它们全部接低电平,输出直接关闭,这样电机也是不会转的,这里如果IN1给低电平,IN2给高电平,电机就是处于反转状态,转还是不转,要取决于PWM,如果PWM给高电平,那输出就是一低一高,有电压差了,电机可以转,这时候定义的是反转,开始转了,如果PWM给低电平,那输出两个低电平,电机还是不转,这就是反转的逻辑,IN1给低,IN2给高,PWM高转低不转,如果PWM是一个不断翻转的电平信号,那电机就是快速地反转、停止、反转、停止,如果PWM频率足够快,那电机就可以连续稳定地反转了,并且速度取决于PWM信号的占空比(使用PWM来等效一个模拟量)正转同理

image-20241119102228823

相关文章:

输出比较简介

输出比较简介 主要是用来输出PWM波形&#xff0c;这个波形是驱动电机的&#xff08;智能车和机器人等&#xff09;必要条件 OC&#xff08;Output Compare&#xff09;输出比较&#xff0c;还有IC&#xff0c;全称是Input Capture&#xff0c;意为输入捕获&#xff0c;还有CC…...

什么是反向 DNS 查找以及它的作用是什么?

反向DNS查询&#xff08;rDNS&#xff09;是一种技术&#xff0c;用于确定与某个IP地址对应的域名。当我们对一个IP地址进行反向DNS查询时&#xff0c;实际上是向域名系统&#xff08;DNS&#xff09;的特殊部分请求信息&#xff0c;这部分被称为PTR记录。PTR记录会返回与这个I…...

集群聊天服务器(13)redis环境安装和发布订阅命令

目录 环境安装订阅redis发布-订阅的客户端编程环境配置客户端编程 功能测试 环境安装 sudo apt-get install redis-server 先启动redis服务 /etc/init.d/redis-server start默认在6379端口上 redis是存键值对的&#xff0c;还可以存链表、数组等等复杂数据结构 而且数据是在…...

[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案

问题log /tmp/ccByifPx.o: In function main: read.c:(.text0x1a): undefined reference to shm_open read.c:(.text0xd9): undefined reference to shm_unlink collect2: error: ld returned 1 exit status 程序代码 #include <stdio.h> #include <stdlib.h> #…...

Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装

Python Matplotlib 安装指南&#xff1a;使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装 Matplotlib是Python最常用的数据可视化工具之一&#xff0c;结合Miniconda可以轻松管理安装和依赖项。在这篇文章中&#xff0c;我们将详细介绍如何使用Miniconda在Linux、mac…...

DimensionX 部署笔记

目录 生成视频用CogVideoX-5b-I2V 推理代码&#xff1a; DimensionX 生成视频用CogVideoX-5b-I2V 推理代码&#xff1a; 可以生成&#xff0c;从左向右旋转的&#xff0c;也可以生成从上往下旋转的&#xff1a; import torch from diffusers import CogVideoXImageToVideo…...

django从入门到精通(五)——表单与模型

好的&#xff0c;下面将详细介绍 Django 的表单与模型&#xff0c;包括它们的定义、使用、如何在 Django Admin 中结合使用&#xff0c;以及相关的字段类型和验证机制。 Django 模型与表单 1. Django 模型 Django 模型是一个 Python 类&#xff0c;用于定义数据库中的数据结…...

C语言Day 03 学习总结

Day 03 学习总结 流程控制语句 顺序结构 程序从上到下依次执行。每一条语句顺序执行&#xff0c;直到结束。 选择结构 程序根据条件选择执行某一条分支。包括 if-else 和 switch-case。 循环结构 程序反复执行某段代码。包括 for、while、do-while。 跳转结构 控制程序直接跳…...

kafka中是如何快速定位到一个offset的

定位到具体的segment日志文件&#xff0c;采用二分法先定位到index索引文件计算查找的offset在日志文件的相对偏移量 1、分区和日志段&#xff1a; 每个主题的分区&#xff08;Partition&#xff09;被划分为多个日志段&#xff08;Log Segment&#xff09;。每个日志段是一个…...

视频对接rtsp协议学习

RTSP协议在视频平台中的应用‌ RTSP&#xff08;Real Time Streaming Protocol&#xff09;是一种基于TCP/IP的应用层协议&#xff0c;主要用于控制流媒体数据的传输和播放。它通过定义一系列命令和请求&#xff0c;实现对流媒体服务器的远程控制&#xff0c;但不传输媒体数据…...

【系统架构设计师】真题论文: 论企业信息化规划的实施与应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2012年 试题4)解题思路论文素材参考企业信息化规划概念与主要内容企业信息化规划实施的步骤企业信息化规划的应用案例真题题目(2012年 试题4) 企业信息化建设是一项长期而艰巨的任务,不可能在短时间…...

【ARM Coresight OpenOCD 系列 6.1 -- JTAG Commands】

请阅读【嵌入式开发学习必备专栏】 文章目录 JTAG Transport使用场景配置示例JTAG Speed配置示例初始化过程中的速度调整自适应时钟选择合适的速度Low Level JTAG Commandsdrscanflush_countirscanpathmoveruntestverify_ircaptureverify_jtagJTAG Transport OpenOCD 是一个强…...

开源许可协议

何同学推动了开源协议的认识&#xff0c;功不可没&#xff0c;第一次对开源有了清晰的认识&#xff0c;最宽松的MIT开源协议 源自OSC开源社区&#xff1a;何同学使用开源软件“翻车”&#xff0c;都别吵了&#xff01;扯什么违反MIT...

241121学习日志——[CSDIY] [InternStudio] 大模型训练营 [11]

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…...

跟千里马学框架 遇到的坑

在编译 aosp 的 所有的东西都是和他一样的&#xff0c; 但是出现了这个问题 emulator: command not found 明明所有的都是一样的但是出现了这个问题 &#xff0c; 啥情况 。 首先你的 ubuntu 要开启虚拟机 。 这个自己百度去 重新进行这些步骤 1、 . build/envsetup.s…...

Swift从0开始学习 协议和扩展 day5

协议:定义行为的契约 协议类似于其他语言中的接口。它们定义了一组方法、属性或其他需求,供结构体、类、枚举等类型去遵循和实现。协议并不实现这些需求,而是作为一种约定或合同,确保实现协议的类型会遵循特定的行为。 协议的定义和遵循 在 Swift 中,使用 protocol 关键…...

javaScript交互案例

1、模态框(弹出框) &#xff08;1&#xff09;、需求&#xff1a; 点击弹出层&#xff0c;会弹出模态框&#xff0c;并且显示灰色半透明的遮挡层点击关闭按钮&#xff0c;可以关闭模态框&#xff0c;并且同时关闭半透明遮挡层鼠标放在模态框最上面一行&#xff0c;可以按住鼠…...

【自动驾驶】数据集合集!

本文将为您介绍经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 Automatic-driving-Test 更新时间&#xff1a;2024-07-26 访问地址: GitHub 描述&#xff1a; 该模型使用 ultralytics yolo v8 和 deepsort 方法来检测车道与车轮的碰撞并跟踪车辆。…...

el-table表头前几列固定,后面几列根据接口返回的值不同展示不同

在使用 Element UI 的 el-table 组件时&#xff0c;如果想要实现表头的前几列固定&#xff0c;而后面的列根据接口返回的数据动态展示&#xff0c;可以通过以下步骤来实现&#xff1a; 1. 固定表头前几列 在 el-table-column 中使用 fixed 属性来固定表头的前几列。例如&…...

【Redis】redis缓存击穿,缓存雪崩,缓存穿透

一、什么是缓存&#xff1f; 缓存就是与数据交互中的缓冲区&#xff0c;它一般存储在内存中且读写效率高&#xff0c;提高响应时间提高并发性能&#xff0c;如果访问数据的话可以先访问缓存&#xff0c;避免数据查询直接操作数据库&#xff0c;造成后端压力过大。 但是可能会面…...

HBase Flink操作

Apache Flink 是一个开源的分布式流处理框架&#xff0c;能够高效地处理和分析实时数据流以及批数据。HBase 是一个分布式、面向列的开源数据库&#xff0c;是 Hadoop 项目的子项目&#xff0c;适合非结构化数据结构的存储&#xff0c;并提供实时读写能力。以下是关于 Flink 对…...

C# .Net Core通过StreamLoad向Doris写入CSV数据

以下代码可以只关注StreamLoad具体实现。 1.创建StreamLoad返回值Model public class StreamLoadResponse {public long TxnId { get; set; }public string Label { get; set; }public string Comment { get; set; }public string TwoPhaseCommit { get; set; }public string…...

React-自定义Hook与逻辑共享

#题引&#xff1a;我认为跟着官方文档学习不会走歪路 在 React 中&#xff0c;自定义 Hook 是一种复用逻辑的方式。自定义 Hook 是一个 JavaScript 函数&#xff0c;名称以 use 开头&#xff0c;可以调用其他的 Hook, 可以返回任意值。 创建自定义Hook 假设你正在开发一款重…...

蓝桥杯每日真题 - 第17天

题目&#xff1a;&#xff08;最大数字&#xff09; 题目描述&#xff08;13届 C&C B组D题&#xff09; 题目分析&#xff1a; 操作规则&#xff1a; 1号操作&#xff1a;将数字加1&#xff08;如果该数字为9&#xff0c;变为0&#xff09;。 2号操作&#xff1a;将数字…...

游戏开发实现简易实用的ui框架

游戏开发实现简易实用的ui框架 本文使用cocos引擎实现&#xff0c;框架代码本质上不依赖某一个引擎&#xff0c;稍作修改也能作为其他引擎的实现 1.1 UI管理框架的核心需求剖析 分层与类型管理 对不同类型UI需要进行分层管理。不同层级的UI需要有不同的父节点&#xff0c;保证渲…...

vue3的attr透传属性详解和使用法方式。以及在css样式的伪元素中实现

在 Vue 3 和 TypeScript 中&#xff0c;属性透传&#xff08;attr pass-through&#xff09;是指将组件的属性传递到其根元素或某个子元素中。这个概念在开发可复用的组件时非常有用&#xff0c;尤其是当你希望将父组件的属性动态地传递给子组件的某个 DOM 元素时。 在 Vue 3 …...

【仿真建模-MESA】框架简介

1. 简介 Mesa是一个基于Python3的开源项目&#xff0c;旨在提供一个现代、易用的多智能体仿真环境。它借鉴了NetLogo、Repast和MASON等多智能体仿真框架的优点&#xff0c;并结合Python语言的强大功能&#xff0c;为用户提供了丰富的建模和仿真工具。 《官方文档》 2. 核心组件…...

Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)

目录 Linux软件包管理器 - yum Linux下安装软件包的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 批量化注释 vim的简单配置 Linux编译器 - gcc/g gcc/g的作用 gcc/g语…...

VSCode 间距太小

setting->font family 使用&#xff1a;Consolas, Courier New, monospace 字体...

【K8S系列】imagePullSecrets配置正确,但docker pull仍然失败,进一步排查详细步骤

如果 imagePullSecrets 配置正确,但在执行 docker pull 命令时仍然失败,可能存在以下几种原因。以下是详细的排查步骤和解决方案。 1. 检查 Docker 登录凭证 确保你使用的是与 imagePullSecrets 中相同的凭证进行 Docker 登录: 1.1 直接登录 在命令行中,执行以下命令: …...