STM32单片机入门学习——第17节: [6-5] TIM输入捕获
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!
本文写于:2025.04.06
STM32开发板学习——第17节: [6-5] TIM输入捕获
- 前言
- 开发板说明
- 引用
- 解答和科普
- 一、输入捕获
- 问题
- 总结
前言
本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!
开发板说明
本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
原理图如下
1、开发板原理图
2、STM32F103C6和51对比
3、STM32F103C6核心板
视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。
下图是实物图
引用
【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
数据手册
解答和科普
一、输入捕获
上升沿或者下降沿,可以通过程序配置,发生电平跳变的瞬间,输入捕获电路:会让当前CNT的值,锁存到CCR中(把当前CNT的值读出来,写入到CCR中去),
一旦有边沿,那输入滤波和边沿检测电路就会检测到上升沿,让输入捕获电路产生动作,所以这一块的作用和外部中断差不多,都是检测电平跳变,然后执行动作,只不过外部中断执行的动作是向CPU申请中断,而这里电路执行的动作是,控制后续电路,让当前CNT的值,锁存到CCR寄存器中,对比一下输出比较,就是输出比较,引脚是输出端口,输入捕获,引脚是输入端口,输出比较是根据CNT和CCR的大小关系来执行输出动作,输入捕获,是接收到输入信号,执行CNT锁存到CCR的动作,这就是输入捕获和输出比较的区别;
4个输入捕获和输出比较通道,公用4个CCR寄存器,另外它们的CH1到CH4,4个通道的引脚,也是共用的,所以对于同一个定时器,输入捕获和输出比较只能使用其中一个,不能同时使用。
PWMI模式和主从触发模式,设计的非常巧妙,把这两个功能结合起来,测量频率占空比就是硬件全自动执行,软件不需要进行任何干预,也不需要进中断,直接读取CCR寄存器就行了,使用非常方便,而且极大地减轻了软件的压力。
频率测量
输入给STM32的信号应该是高低的电平信号:
1、测频法:那就可以自定义一个闸门时间T,通常设置为1s,在1s时间内,对信号上升沿计次,从0开始计,每来一个上升沿,计次+1,每来一个上升沿,其实就是来了一个周期的信号,所以在1s时间内,来了多少个周期,它的频率就是多少赫兹。F=N/T;
2、测周法:测量出周期,再取个倒数,不就是频率了,捕获两个上升沿,并测量之间的时间,但实际上,没有一个精度无穷大的秒表来测量时间,测量时间的方法,实际上也是定时器计次,我们使用一个已知的标准频率FC的计次时钟,来驱动计数器,从一个上升沿开始计,计数器从0开始,一直记到下一个上升沿停止,及一个说的时间是1/fc,计N个数,时间就是N/fc,N/fc就是周期,再取个倒数,就得到公式,fx=fc/N;
测频法:高 (多出些上升沿,少计一个多记一个影响不大) ,均值滤波,比较平滑;测周法(周期的倒数):频率低 一个周期 多计数一个或者少了一个 N大误差越少,噪声大。都会出现正负1的误差;N越大,误差影响越小。
让它们的N相等解出来就是中介频率。
首先,测频法,这个我们用之前学过的外设就可以实现:
我们之前写过对射式红外传感器讨次,定时器外部时钟, 这些代码。稍加改进。就是测频法, 比如对射式红外传感器计次。每来一个上升沿计次+1, 那我们再用一个定时器。定一个1s的定时中断, 在中断里。每隔1s取一下计次值,同时清0计次,为下一次做准备,这样每次读取的计次值就直接是频率。对应定时器外部的代码,也是如此,每隔1s取一下计次,就能实现测频法测量频率的功能了。
测周法:输入捕获:左边是四个通道的引脚,参考引脚定义表,就能知道这个引脚是复用在了那个位置,然后引脚进来,这里有一个三输入的异或门,这个异或门的输入接在了通道1,2,3端口,当三个引脚任何一个有电平翻转时,输出引脚就产生一次电平翻转,之后输出通过数据选择器,到达输入捕获通道1,数据选择器如果选择上面一个,那么输入捕获通道1的输入,就是3个引脚的异或值,其实是为了三相无刷电机服务的,无刷电机有3个霍尔传感器检测转子的位置,可以根据转子的位置进行换相,有了这个异或门,就可以在前三个通道上接上无刷电机的霍尔传感器,然后这个定时器就作为无刷电机的接口定时器,去驱动换相电路工作。
进入输入滤波器:可以对信号进行滤波,避免一些高频的毛刺信号误触发,然后边沿检测器,这就和外部中断哪里是一样的了,可以选择高电平触发或者低电平触发,当出现指定的电平时,边沿检测电路就会触发后续电路执行动作。
这里其实设计了两套滤波和边沿检测电路,第一套电路,经过滤波和极性选择,得到TI1FP1,输入给通道1的后续电路,第二套电路,经过另一个滤波电路和极性选择,得到TF1FP2,输入给下面通道2 的后续电路;同理下面TI2信号过来,也经过两套滤波和极性选择,得到TI2FP1和TI2FP2,其中TI2FP1输入给上面,TI2FP2输入给下面,这里信号过来可以选择各走各的,也可以选择进行一个交叉,让CH2引脚输入给通道1,或者CH1引脚输入给通道2,为什么要进行交叉连接呢,目的有两个,第一个目的,可以灵活切换后续捕获电路的输入,比如你一会想以CH1作为输入,一会想用CH2作为输入,这样就可以通过这个数据选择器,灵活地进行选择;第二个目的,也是它的主要目的:就是把一个引脚的输入,同时映射到两个捕获单元,这也是PWMI模式的经典结构,第一个捕获通道,使用上升沿触发,用来捕获周期,第二个通道,使用下降沿触发,用来捕获占空比,两个通道同时对一个引脚进行捕获,就可以同时测量频率和占空比,这就是PWMI模式。TRC也是无刷电机的用的。
预分频器可以选择对前面的信号进行分频,分频之后的触发信号,就可以触发捕获电路了,每来一个触发信号,CNT的值,就会向CCR转运一次,转运的同时,会发生一个捕获事件,这个事件会在状态寄存器置标志位,同时也可以产生中断,如果需要在捕获的瞬间处理一下事情的话,就可以开启这个捕获中断,这就是整个电路的工作流程。
比如我们可以配置上升沿触发捕获,每来一个上升沿,CNT转运到CCR一次,又因为这个CNT计数器是由内部的标准时钟驱动的,所以CNT的值,其实就可以用来记录两个上升沿之间的时间间隔,这个时间间隔就是周期,再去取一个倒数,就是测周法的频率了。每次捕获之后,我们都要把CNT清0,这个在一次捕获后自动将CNT清零的步骤,可以用主从触发模式,自动来完成。
引脚进来,还是先经过一个滤波器,滤波器的输入是TI1,就是CH1的引脚,输出的TI1F就是滤波后的信号,fDTS是滤波器的采样时钟来源,下面CCMR1寄存器的ICF位可以控制滤波器的参数,那这个滤波器具体怎么工作的,以采样频率对输入信号进行采样,当连续N个值都为高电平,输出才为高电平,连续N个值都为低电平,输出才为低电平,抖动的话,那输出就不会变化,这样就可以起到滤波的效果,采样频率越低,采样个数越大,滤波效果就越好。
滤波之后的信号通过边沿检测器,捕获上升沿或者下降沿,用这个CCER寄存器里的CC1P位,就可以选择极性了,最终得到TI1FP1触发信号,通过数据选择器,进入通道1后续的捕获电路,当然还有一个一样的电路,用来得到TI1FP2触发信号,连通到通道2的后续电路,这里没有画出来。总共四种连接方式。然后经过这里的数据选择器,进入后续的捕获部分电路。CC1S位可以对数据选择位进行选择,之后ICPS位,可以配置这里的分频器,可以进行分频,最后CC1E位,控制输出使能或失能,如果使能了输出,输入端产生指定的边沿信号,经过层层电路,到达这里,就可以让这里CNT的值,转运到CCR里面来,另外刚才说了,每捕获一次CNT的值,都要把CNT的值清零一下,以便于下一次的捕获,在这里硬件电路就可以在捕获之后自动完成CNT的清零工作,如何自动清零呢?
这个TI1FP1和TI1F_ED(边沿信号)都可以通向从模式控制器,比如TI1FP1信号的上升沿触发捕获,那通过这里,TI1FP1还可以同时触发从模式,这个从模式里面,就有电路,可以自动完成CNT的清零,所以可以看出,这个从模式就是自动完成化操作的利器。
如何完成硬件自动化:
主从触发模式:主模式、从模式、触发源选择这三个功能的简称。
主模式可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设,所以这部分叫做主模式;
从模式:就是接受其他外设或者自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制,所以这部分叫从模式;
触发源选择:就是选择从模式的触发信号源的,你可以认为它是从模式的一部分,触发源选择,选择指定的一个信号,得到TRGI,TRGI去触发从模式,从模式可以在右边的列表里,选择一项操作来自动执行,如果想完成我们刚才说的任务,想让TI1FP1信号自动触发CNT清零,那触发源选择,就可以选择这里的TI1FP1,从模式的执行操作,就可以选择执行RESET的操作,这样TI1FP1的信号就可以自动触发从模式了,从模式自动清零CNT,实现硬件全自动化测量。
手册:
输入捕获基本结构:
这个结构只使用了一个通道,目前只能测量频率,右上角是时基单元,把时基单元配置好,启动定时器,那这个CNT就会在预分频之后的时钟驱动下,不断自增,这个CNT就是我们测周法用来计数计时的东西,经过预分频器分屏后的时钟频率,就是驱动CNT的标准频率fc,所以标准频率=72M/预分频系数;然后下面输入捕获通道1的GPIO口,输入一个这样的方波信号,经过滤波器和边沿检测,选择TI1FP1为上升沿触发,之后输入选择直连的童丹,分频器选择不分频,当TI1FP1出现上升沿之后,CNT的当前计数值转运到CCR1里,同时触发源选择,选中TI1FP1为触发信号,从模式选择复位操作,这样TI1FP1的上升沿,也会通过上面这一路,去触发CNT清零,当然这里面会有个先后顺序,肯定得是先转运CNT的值到CCR里面去,再触发从模式给CNT清零;或者是同时进行;
左上角的图,在这里,信号出现一个上升沿,CCR1=CNT,就是把CNT的值,转运到CCR1里面去,这是输入捕获自动执行的,然后CNT=0,清零计数器,这是从模式自动执行的,然后在一个周期之内,CNT在标准时钟的驱动下,不断自增,并且由于之前清零过了,所以CNT就是从上升沿开始从0开始计数,一直++,直到,下一次上升沿来临,然后执行相同的操作;进行下一个操作,这时候CCR1会刷新为第二个周期的计数值,然后不断重复这个过程,所以当这个电路工作时,始终保持为最新一个周期的技术值,这个计数值就是这里的N,频率就是FC/N;
CNT的值是有上限的,ARR一般设置为最大65535,那CNT最大也只能计65535个数,如果信号频率太低,CNT计数值可能溢出,另外还有就是,这个从模式的触发源选择,只有TI1FP1和TI2FP2,没有TI3和TI4的信号,对于通道3和4,就只能开启捕获中断,在中断里手动清零了,不过这样,程序就会处于频繁中断的状态,比较消耗软件资源;
使用了两个通道同时捕获一个引脚:可以同时测量周期和占空比,下面多了一个通道,首先配置TI1FP1为上升沿触发、触发捕获和清零CNT,正常的捕获周期;这时我们再来一个TIFP2,配置为下降沿触发,通过交叉通道,去触发通道2的捕获单元;
左上角:最开始上升沿,CCR1捕获,同时清零CNT,之后CNT一直++,然后,再下降沿这个时刻,触发CCR2捕获,所以这是CCR2的值们就是CNT从这里到这里的计数值,也就是高电平的计数值,CCR2捕获并不触发CNT清零,所以CNT继续++,直到下一次上升沿,CCR1捕获周期,CNT清零,这样执行之后,CCR1就是一整个周期的技术值,CCR2就是高电平期间的计数值,我们用CCR2/CCR1,就是占空比了;这就是PWMI模式,使用两个通道来捕获频率和占空比的思路。
问题
总结
本节课主要学习了输入捕获的模式。还学习了测量频率的方法,用输入捕获,把CNT的值转运到CCR,通过值来计算频率,最后学习了PWMI,其中用到了主从触发模式,实现了硬件全自动化。同时对一个输入进行频率和占空比的测量。
相关文章:
STM32单片机入门学习——第17节: [6-5] TIM输入捕获
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.06 STM32开发板学习——第17节: [6-5] TIM输入捕获 前言开发板说明引用解答和科普一…...
P8819 [CSP-S 2022] 星战 Solution
Preface 不可以,总司令 的来源. Description 给定一张 n n n 点 m m m 边的有向图 G G G,有 q q q 次操作分四种: 1 u v:使边 u → v u\to v u→v 失活.2 u:使点 u u u 的所有入边失活.3 u v:使边…...
【spring02】Spring 管理 Bean-IOC,基于 XML 配置 bean
文章目录 🌍一. bean 创建顺序🌍二. bean 对象的单例和多例❄️1. 机制❄️2. 使用细节 🌍三. bean 的生命周期🌍四. 配置 bean 的后置处理器 【这个比较难】🌍五. 通过属性文件给 bean 注入值🌍六. 基于 X…...
Llama 4架构解析与本地部署指南:MoE模型在170亿参数下的效率突破
Meta最新发布的Llama 4系列标志着开源大语言模型(LLM)的重大演进,其采用的混合专家(MoE)架构尤为引人注目。 两大核心模型——Llama 4 Scout(170亿参数含16专家)和Llama 4 Maverick(170亿参数含128专家)——展现了Meta向高效能AI模型的战略转型,这些模型在挑战传统扩…...
`docker run --restart no,always,on-failure,unless-stopped`笔记250406
docker run --restart no,always,on-failure,unless-stopped 笔记250406 docker run --restart 用于配置容器的自动重启策略,当容器意外退出时,Docker 会根据策略自动重新启动容器。这是确保服务高可用的重要参数。 语法 docker run --restart <策略…...
stl的VS的string的内部实现,引用计数的写实拷贝,编码
本章目标 1.stl的vs的string的内部实现 2.引用计数的写实拷贝 3.编码 1.stl的string的内部实现 我们先来看一个例子 string s1; cout<<sizeof(s1)<<endl;我们知道类的内存管理也是遵循内存对齐的规则的. 我们假设当前机器的环境是32位的.string类的内部有三个成…...
Docker 从入门到进阶 (Win 环境) + Docker 常用命令
目录 引言 一、准备工作 1.1 系统要求 1.2 启用虚拟化 二、安装Docker 2.1 安装WSL 2 2.2 安装Docker Desktop 2.3检查是否安装成功 三、配置Docker 3.1 打开Docker配置中心 四、下载和管理Docker镜像 4.1 拉取镜像 4.2 查看已下载的镜像 4.3 运行容器 4.4 查看正…...
C# Winform 入门(12)之制作简单的倒计时
倒计时效果展示 控件展示 以下均是使用label来形成的 label 的 BorderStyle:Fixed3D ForeColor:Red Blackground:Black label 的属性 Name: txtyear txtmonth txtday txttime txtweek txtDays txtHour txtM…...
基于springboot+vue的漫画天堂网
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
leetcode每日一题:最大整除子集
题目 368. 最大整除子集 给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足: answer[i] % answer[j] 0 ,或 answer[j] % answer[i] …...
【Unity】animator检测某state动画播放完毕方法
博主对动画系统很不熟,可能使用的方法比较曲折,但是我确实没找到更有效的方法了。 unity的这个animator在我看来简直有毛病啊,为什么那么难以获取某状态动画的信息呢??? 想要知道动画播完没有只有用norma…...
玄机-应急响应-webshell查杀
题目要求: 要求获取四个flag webshell查杀: 常见的webshell: PHP: eval(), system(), exec(), shell_exec(), passthru(), assert(), base64_decode() ASP: Execute(), Eval(), CreateObject() JSP: Runtime.getRuntime().exec() websh…...
小菜Go:Ubuntu下Go语言开发环境搭建
前置要求Ubuntu环境搭建 文章推荐 此处推荐一个比较好的文章,基本按部就班就欧克~ 安装虚拟机(VMware)保姆级教程(附安装包)_vmware虚拟机-CSDN博客 安装可能遇到的问题 虚拟机安装遇到的问题如:Exception…...
多功能指示牌是否支持多语言交互?
嘿,朋友们!你们知道吗?叁仟多功能指示牌在多语言交互方面可太厉害了,下面就为大家热情介绍一些常见的实现方式和相关说明哦! 显示多语言文字:哇哦,在众多国际化的超棒场所,像那充满…...
2025ArkTS语言开发入门之前言
2025ArkTS语言开发入门之前言(一) 引言 要想学好一门语言,必先会下载对应的编辑器/集成开发环境,ArkTS也是如此,下面我带着大家去下载并安装ArkTS语言的集成开发环境——Dev Eco Studio。 下载 来到华为开发者联盟…...
Python高级爬虫+安卓逆向1.1-搭建Python开发环境
目录 引言: 1.1.1 为什么要安装Python? 1.1.2 下载Python解释器 1.1.3 安装Python解释器 1.1.4 测试是否安装成功 1.1.5 跟大神学高级爬虫安卓逆向 引言: 大神薯条老师的高级爬虫安卓逆向教程: 这套爬虫教程会系统讲解爬虫的初级&…...
深入理解MySQL:核心特性、优化与实践指南
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle公司。它是目前世界上最流行的开源数据库之一,广泛应用于各种规模的Web应用和企业系统中。 目录 一、核心特点 关系型数据库: 开源免费&am…...
38常用控件_QWidget的enable属性(2)
实现用另一个按钮切换之前按钮的“可用”状态 在同一个界面中,要求不同的控件的 objectName 也是必须不同的.(不能重复) 后续就可以通过 ui->objectName 方式来获取到对应的控件对象了 ui->pushButton // 得到了第一个按钮对应的对象 ui->pushButton 2 //…...
如何单独指定 Android SDK tools 的 monitor.bat 使用特定 JDK 版本
核心概念与背景介绍 在 Android 开发过程中,Android SDK Tools 提供了许多实用工具,其中 monitor.bat 是 Windows 下用于启动 Android Device Monitor 的批处理文件。Device Monitor 可以帮助我们查看日志、内存、线程等运行信息。 JDK 与 monitor.bat …...
【代码随想录 字符串1】 344.反转字符串
自己的 class Solution {public void reverseString(char[] s) {int mid s.length /2;int j1;for (int i 0; i < mid; i) {char tem s[i];s[i] s[s.length -j];s[s.length -j] tem;j;}s.toString();} }双指针 class Solution {public void reverseString(char[] s) {…...
gogs私服对应SSH 协议配置
一、使用非特权端口(推荐) 1. 修改 Gogs 配置文件 sudo nano /home/git/gogs/custom/conf/app.ini 找到 [server] 部分,修改为: [server] START_SSH_SERVER true SSH_PORT 2222 # 改为1024以上的端口 2. 重启 Gogs sud…...
蓝桥与力扣刷题(74 搜索二维矩阵)
题目:给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则ÿ…...
多元高斯分布函数
1、 n n n元向量 假设 n n n元随机变量 X X X X [ X 1 , X 2 , ⋯ , X i , ⋯ , X n ] T μ [ μ 1 , μ 2 , ⋯ , μ i , ⋯ , μ n ] T σ [ σ 1 , σ 2 , ⋯ , σ i , ⋯ , σ n ] T X i ∼ N ( μ i , σ i 2 ) \begin{split} X&[X_1,X_2,\cdots,X_i,\cdots ,X_n…...
【PySpark大数据分析概述】02 Spark大数据技术框架
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PySpark大数据分析与应用 ⌋ ⌋ ⌋ PySpark作为Apache Spark的Python API,融合Python易用性与Spark分布式计算能力,专为大规模数据处理设计。支持批处理、流计算、机器学习 (MLlib) 和图计算 (GraphX)&am…...
JVM 参数调优指南_优化 Java 应用性能
1. 引言 1.1 什么是 JVM 参数调优 JVM 参数调优是指通过调整 Java 虚拟机的各种参数,以优化 Java 应用程序的性能和稳定性。 1.2 JVM 参数调优的重要性 提高性能:优化内存使用和垃圾回收,提升应用程序的响应速度。稳定性:减少内存溢出和垃圾回收暂停时间,提高系统的稳定…...
闭包和装饰器
什么是闭包 闭包(Closure)是 Python 中一个非常重要的概念,它是一种特殊的函数对象,通常用于封装和延迟计算某些值。以下是闭包的详细定义和解释: 1.闭包的定义 闭包是指一个函数对象,它不仅包含函数的代…...
电脑显示器选购
显示器分类 按尺寸大小 一般显示器屏幕有24寸、27寸、32寸等 按技术分类 LCD显示器 使用液晶分子作为主要材料,以液晶为显示/控制模块制造而成的显示设备。液晶显示器中的液晶体在工作时不发光,而是控制外部的光通过量。当外部光线通过液晶分子时&a…...
论伺服电机在轨道式巡检机器人中的优势及应用实践
一、引言 1.1 研究背景与意义 在现代工业生产、电力系统、轨道交通等诸多领域,保障设施设备的安全稳定运行至关重要。轨道式巡检机器人作为一种高效、智能的巡检工具,正逐渐在这些领域崭露头角。它能够沿着预设轨道,对目标区域进行全方位…...
室内指路机器人是否支持与第三方软件对接?
嘿,你知道吗?叁仟室内指路机器人可有个超厉害的技能,那就是能和第三方软件 “手牵手” 哦,接下来就带你一探究竟! 从技术魔法角度看哈:好多室内指路机器人都像拥有超能力的小魔法师,采用开放式…...
Docker 命令大全:从入门到精通
一、容器生命周期管理 1. 容器操作基础 # 运行容器 docker run -d --name my_nginx -p 8080:80 nginx:latest# 启动/停止容器 docker start my_nginx docker stop my_nginx# 重启容器 docker restart my_nginx# 删除容器 docker rm my_nginx 2. 容器状态管理 # 查看运行中的…...
【HarmonyOS Next之旅】DevEco Studio使用指南(十一)
目录 1 -> 代码实时检查 2 -> 代码快速修复 3 -> C快速修复使用演示 3.1 -> 填充switch语句 3.2 -> 使用auto替换类型 3.3 -> 用?:三元操作符替换if-else 3.4 -> 从使用处生成构造函数 3.5 -> 将变量拆分为声明和赋值 1…...
【中间件】使用ElasticSearch提供的RestClientAPI操作ES
一、简介 ElasticSearch提供了RestClient来操作ES,包括对数据的增删改查,可参照官方文档:Java High Level REST Client 二、使用步骤: 可参照官方文档操作 导包 <dependency><groupId>org.elasticsearch.client<…...
数字电子技术基础(三十九)——显示译码器
目录 1 显示译码器 1.1 显示译码器简介 1.2 七段显示译码器和八段显示译码器 1.3 BCD-七段显示译码器 1.4 多位显示译码器 1 显示译码器 1.1 显示译码器简介 显示译码器是一种数字电路,是将二进制转换为驱动显示设备所需要的信号,核心是将编码数据…...
Java学习总结-多线程-三种创建方法
什么是线程? 线程(Thread)是程序内部的一条执行流程。 程序如果只有一条执行流程,那这个程序就是单线程程序。 什么是多线程? 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行…...
sqli-labs靶场 less 7
文章目录 sqli-labs靶场less 7 mysql文件上传拿web shell sqli-labs靶场 每道题都从以下模板讲解,并且每个步骤都有图片,清晰明了,便于复盘。 sql注入的基本步骤 注入点注入类型 字符型:判断闭合方式 (‘、"、…...
大模型最新面试题系列:模型部署(二)
一、如何通过unsloth的批处理(Batching)功能提升推理效率? Unsloth的批处理(Batching)功能通过整合硬件加速、内存优化和动态调度技术,显著提升大模型推理效率。以下是具体实现方法和实际应用场景的深度解…...
Python助力去中心化云计算:构建分布式计算的未来
Python助力去中心化云计算:构建分布式计算的未来 随着区块链技术和Web 3.0生态的兴起,去中心化云计算正逐步成为主流。它不仅颠覆了传统集中式云计算的架构,还为数据安全、隐私保护以及资源分配带来了新的可能性。在这一领域,Python因其简洁易用、社区庞大以及强大的工具链…...
HCIP【路由过滤技术(详解)】
目录 1 简介 2 路由过滤方法 3 路由过滤工具 3.1 静默接口 3.2 ACL 3.3 地址前缀列表 3.4 filter-policy 3.4.1 filter-policy过滤接收路由(以RIP为例) 3.4.2 filter-policy过滤接收路由(以OSPF为例) 1 简介 路由过滤技术…...
LeetCode Hot100 刷题笔记(3)—— 链表
目录 前言 1. 相交链表 2. 反转链表 3. 回文链表 4. 环形链表 5. 环形链表 II 6. 合并两个有序链表 7. 两数相加 8. 删除链表的倒数第 N 个结点 9. 两两交换链表中的节点 10. K 个一组翻转链表 11. 随机链表的复制 12. 排序链表 13. 合并 K 个升序链表 14. LRU 缓存 前言 一、…...
商品计费打折实现效果
1.创建php站点 2.创建php文件 3.执行php文件打开浏览器地址栏输入http://localhost/dophp/price.php页面如图所示: 4.表单输入,创建php文件price_form.php 运行效果为...
游戏引擎学习第207天
回顾并为今天的内容定下基调 我们正在继续上一次的任务,目的是构建一个基本的元编程系统,用来自动处理结构体信息,减少手动维护的代码量。具体来说,我们写了一个简单的预处理器,它可以解析代码中的结构体定义…...
Linux内核页表缓存(TLB)与巨型页
一、页表缓存(TLB) 处理器厂商在内存管理单元 (MMU) 里增加一个 TLB (Translation Lookaside Buffer) 的高速缓存,TLB 直译为转译后备缓冲器,也被翻译为页表缓存。 TLB 为 CPU 的一种缓存,由存储器管理单元用于…...
Web3(阶段一:入门)——默克尔树
什么是默克尔树 默克尔树(Merkle Tree),又称哈希树,是一种基于哈希算法的数据结构,用于高效验证数据完整性。其核心思想是将数据分块并逐层哈希,最终生成唯一的根哈希值。 核心特点: 结构分层…...
Qt Quick 与 Qt 版本匹配关系
一、核心版本对应关系 Qt 版本Qt Quick 版本重要特性Qt 5.0Qt Quick 2.0首次引入基于Scene Graph的架构Qt 5.12Qt Quick 2.12长期支持版(LTS),新增粒子系统增强Qt 5.15Qt Quick 2.15最后5.x LTS,改进3D集成Qt 6.0Qt Quick 6.0完全重写渲染架构,支持VulkanQt 6.2Qt Quick 6.2…...
DefaultListableBeanFactory
文章目录 DefaultListableBeanFactory介绍继承关系源码码解析属性成员getbean方法setAutowireCandidateResolver方法resolveDependency方法doResolveDependency方法findAutowireCandidates 方法determineAutowireCandidate 方法 DefaultListableBeanFactory介绍 BeanFactory是…...
软件工程面试题(三十二)
1、java程序每天12点打印”hello” public static void main(String[] args) {Date date = new Date(); System.out.println(date.getHours()); while (true) {while (date.getHours() == 12) {if (date.getMinutes() == 0) {if (date.getSeconds() == 0) {System.out.print…...
高频面试题(含笔试高频算法整理)基本总结回顾66
干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…...
生成式人工智能(AIGC):内容创作的新引擎与新挑战
在数字化时代,内容创作的需求呈爆炸式增长。无论是社交媒体、新闻媒体、广告营销还是娱乐行业,都急需大量高质量的文本、图像、音频和视频内容。然而,传统的内容创作方式面临着效率低下、成本高昂、创意枯竭等问题。生成式人工智能࿰…...
Java 大视界 -- 基于 Java 的大数据分布式计算在气象数据处理与天气预报中的应用进展(176)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
react和vue在开发使用的语法上面有什么区别?
React和Vue在开发使用的语法上有诸多区别,下面从组件定义、数据绑定、事件处理、生命周期钩子等方面详细阐述: 1. 组件定义 React: 函数组件是React推荐的组件定义方式,它本质上是一个JavaScript函数,返回JSX元素。类…...