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

数字信号处理基础知识(二)

        在介绍完“离散时间序列”基本概念和性质后,实际上就已经踏入了“数字信号处理”这门学科的学习征程,这篇文章里主要去说明“线性时不变系统”的定义概念和探讨“周期采样”的注意细节,相信更加理解这些概念定义和底层逻辑,对于大家在后期的工程应用中会有更多启发价值。

       这里不由地多写一些题外话,可能会引起不少朋友共鸣,笔者读高中时学化学和生物,依稀记得高中比初中的内容要深很多并且老师上课讲得很快,一时间灌入很多概念和公式,那时也没有现在这么多一对一辅导补课,都是传统大班教育,老师上课讲过布置作业,课后同学买练习册刷题巩固,但是这样的学习方式延续到高三就较为吃力,特别是生物感到很多东西都见过,考试时成绩却很不好。

       这时生物老师告诉了一个方法叫“回归课本”,于是笔者在高三中期少刷题、多看书。因为刷题见了很多概念上的应用,再回过头看书上的概念,一些模糊的知识点就慢慢清晰了,坚持下来到高三后期化学和生物成绩就提高很快,会发现虽然题型在不断变化,但是都在那些知识点中来回变换。

       一晃眼已经硕士毕业工作六年了,有时回想起高中和本科学习过程,真的也会感到很多似曾相识,比如本科学习一个专业,学校会给开设很多门专业课,但是大部分只在学习理论概念,为了保研考研大家又要延续了高中时期的苦学精神,但是即便笔试和上机成绩很好,面对现实项目又不知所学专业知识的具体应用在哪里,大学老师通常也只是就课本概念问题给予一些解答,所以说本科学习可能更多的则是眼界上的提升、思维上的扩展。

       毕业后工作学习不断积累经验,这时再去看一些本科时期枯燥的专业课才会豁然开朗,慢慢有更多的感性认识和理性认识,所以撰写“数字信号处理基础知识”专栏的初衷即是采用“回归课本”方式加深理解理论概念,再通过实例去说明理论概念在具体项目中的应用,感性和理性层面深刻理解“底层逻辑”和“实施细节”。

       首先来举例说明“线性时不变系统”的概念,阅读国内外不同版本的“数字信号处理”类书籍,发现对这个概念给出了不唯一的解释,当然这并不是核心问题,我们更应该从底层逻辑上理解其意义而不仅仅是字面上的定义。

        “线性”这个术语生活中也经常会用到,直观上的感觉比如初中学的一次函数y = kx+b,自变量x和因变量y是满足线性关系的,但是这样感性认识在定义一个概念时就显得不那么准确,这里关于“线性系统”的判断有个重要的标准,则需要满足“叠加原理”,即这类的输出是各个输入分别加到该系统后所得的各个输出的叠加或求和。

我们假设一个系统为T[•],那么“线性系统”的叠加原理可以用公式化表示:

  1. 可加性:设 y1 (n) = T[x1 (n)],y2 (n) = T[x2 (n)],如果T[x1 (n)+x2 (n)] = T[x1 (n)] + T[x2 (n)] =y1 (n)+y2 (n),则说明系统 T[•] 满足可加性;
  2. 齐次性:设 y1 (n) = T[x1 (n)] ,如果T[a1x1 (n)] = a1T[x1 (n)] = a1 y1 (n),则说明系统T[•]满足齐次性;

      同样也举例来说明:假设对于一个离散系统,其输出定义为:y(n) = -0.5* x(n),即输出序列的振幅等于负的1/2输入序列的振幅,若输入序列x(n)表示1Hz的正弦波,采样率为每周期采样32个样本值,在这里我们用matlab来绘制其图形。

       如图1所示是matlab下生成正弦波的绘图程序,当然每个工程师可能也有自己的使用习惯,这里为了便于说明我们按照x(n) = sin (2π*f0*n*ts)的格式来书写。

       首先解释下程序中matlab用到的几个函数:1. sin()即正弦绘制函数;2. subplot(m,n,p) 即将当前图窗划分为 mxn 网格,并在 p 指定的位置创建坐标区,因为有2个函数x和y图形要绘制且在同一张视图下,所以m=2,n=1即绘图上下分割开,p=1代表绘图坐标在上,p=2代表绘图坐标在下;3. stem(n,x)即在 n 指定的值的位置绘制数据序列x,可以通俗理解成以n为横坐标,x为纵坐标进行绘图;4. axis([xmin xmax ymin ymax]) 即用来标注输出的图线的最大值最小值;5. xlabel(),ylabel()即标注输出的图线横纵坐标的标签值。

        在这里我们设置采样周期Ts是1/32,待采波形的频率是1Hz,n = 0:64则表示从时间点0开始采样64个点,调用matlab下相关函数即可生成如图2所示的绘图,细节上可以对照图2再加深理解不过多赘述。

图1 matlab绘制x(n)和y(n)正弦采样图形的程序

图2 matlab绘制x(n)和y(n) = -0.5* x(n)正弦采样图形

       类似的我们再用matlab生成序列x1(n)表示1Hz的正弦波和序列x2(n)表示3Hz的正弦波,如图3所示采样率均为每周期采样32个样本值,y(n)表示-0.5*(x1(n)+x2(n)),大家可以发现对于系统y(n) = -0.5* x(n)是满足“线性系统”的叠加原理。

图3 matlab绘制x1(n)、x2(n)、y(n) = -0.5*(x1(n)+x2(n))正弦采样图形

        再来看一个例子y(n) = x2 (n),还是用大家熟知的三角函数进行推算验证,假设x(n)用来描述一个频率f0等于1Hz的正弦波序列即x(n) = sin (2π*f0*n*ts) = sin (2π*1*n*ts),若x(n)是输入序列,则系统的输出序列y(n)是1Hz正弦波的平方,即y(n) = x2 (n) = sin (2π*1*n*ts)* sin (2π*1*n*ts)。

高中数学里学过三角函数变换sinA*sinB = (1/2)[cos(A-B) - cos(A+B)],代入其中可得:

y(n)   = sin(2π*1*n*ts)*sin(2π*1*n*ts)

= 1/2*[cos(2π*1*n*ts-2π*1*n*ts) - cos(2π*1*n*ts+2π*1*n*ts)]

= 1/2*[cos(0) - cos(2π*2*n*ts)]

= 1/2*[1 - cos(2π*2*n*ts)]

       显然在这里我们输入x(n)是1Hz的正弦波,而输出y(n)却得到了0Hz直流成分和2Hz的正弦波混合,所以不满足“线性系统”的叠加原理,如图所示是用matlab绘制的x(n)和y(n) = x2 (n)正弦采样图形。

图4 matlab绘制x(n)和y(n) = x2 (n)正弦采样图形

       “时不变系统”也有的教科书也叫“移不变系统”,顾名思义就是说系统输入序列的时间延迟会引起系统输出序列相等的时间延迟。当然也有更加书面化的表达方式,比如国内课本给出定义:若系统响应与激励加于系统的时刻无关,则系统为移不变或时不变系统,即若有 y(n) = T[x(n)],则有y(n-m) = T[x(n-m)]成立。

       同样的为了有助于理解,这里也举例说明假设原始的输入序列是x(n)为振幅为1个单位、频率为1Hz的正弦波,其输出为y(n)= -0.5* x(n),那么考虑一个新的序列x`(n) = x(n+4)即x`(n)等于左移4个采样点的x(n),即x`(0) = x(4)、x`(1) = x(5)、x`(2) = x(6)等,这个系统便是时不变的,因为输出序列y`(n) = y(n)向左移4个样值,即y`(n) = y(n+4),不难发现y`(0) = y(4) 、y`(1) = y(5)、y`(2) = y(6)。

      同时具有线性和时不变性的离散时间系统称为LSI系统,LSI系统也是“数字信号处理”中主要的研究对象,也许写到这里大家还不能确切地知道什么是卷积,什么是频率响应,亦或者什么是傅里叶变换,不过不必着急在后面的博客中,笔者会循循渐进层层深入,从理论推演到现实应用详细地讨论它们。

相关文章:

数字信号处理基础知识(二)

在介绍完“离散时间序列”基本概念和性质后,实际上就已经踏入了“数字信号处理”这门学科的学习征程,这篇文章里主要去说明“线性时不变系统”的定义概念和探讨“周期采样”的注意细节,相信更加理解这些概念定义和底层逻辑,对于大…...

人生低谷来撸C#--015 C# 属性(Property)

1、概念 在C#中,属性(Property)是一种特殊的成员,它提供了一种灵活的机制来访问和修改对象的状态(即类的字段)。属性结合了字段和方法的特性,使得数据的访问和修改更加安全和便捷。下面我用一个…...

面试题003:面向对象的特征——封装性

Java规定了4种权限修饰,分别是:private、缺省、protected、public。我们可以使用4种权限修饰来修饰类及类的内部成员。当这些成员被调用时,体现可见性的大小。 封装性在程序中的体现: 场景1:私有化(private)类的属性,提供公共(pub…...

森林防火,森林防火智能储水罐_鼎跃安全

森林防火是保护森林的重要措施,每年发生的森林火灾都严重威胁着自然安全,对社会经济和生态造成严重的破坏。为了切实有效地预防并扑灭森林火灾,森林防火智能储水罐已成为现代森林防火体系中的重要装备。 储水罐内置传感器和控制系统&#xff…...

虚幻引擎,体积雾、体积光、镜头泛光

1、体积雾 这里介绍的是用于地面的体积雾效果,效果如图1-1: 图1-1 首先,需要场景中存在指数级高度雾并开启体积雾(如图1-2)。然后创建材质,材质域选择“体积”,混合模式选择“Additive”。材质节…...

Python 机器学习求解 PDE 学习项目——PINN 求解二维 Poisson 方程

本文使用 TensorFlow 1.15 环境搭建深度神经网络(PINN)求解二维 Poisson 方程: 模型问题 − Δ u f in Ω , u g on Γ : ∂ Ω . \begin{align} -\Delta u & f \quad & \text{in } \Omega,\\ u & g \quad & \text{on } \Gamma:\p…...

微信小程序删除滑块 SwiperCell 自动收起 Van weapp van-swipe-cell 滑块自动收起 点击页面也自动收起滑块

在当前页面整个 view 中 给页面绑定 点击事件bindtap"onSwipeCellPage"给 van-swipe-cell 组件设置 id (for循环可以添加 id"swip-cell-{{item.id}}" )van-swipe-cell 组件 添加属性 当用户打开滑块时触发 bind:open"swiperCel…...

【vluhub】log4j注入漏洞 CVE-2021-44228

LOG4介绍 是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布 log4j存在远程代码执行漏洞、受影响版本2.x 部署环境 攻击机环境:192.168.3.180 kail环境:192.168.203.12【NAT…...

Redis核心技术与实战学习笔记

Redis核心技术与实战学习笔记 最近想沉下心来看下redis,买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋,可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …...

力扣经典题目之->设计循环队列 的超详细讲解与实现

一:题目 二:思路讲解 前提: a:本文采取数组来实现队列去解决题目 b:开辟k1个空间,front指向队首,rear指向队尾的后一个,rear这样会更好的判空和判满 以下根据pop和push感受满和空…...

【数据结构】排序算法——Lesson2

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...

Ubuntu编译ffmpeg并添加cmake工程

文章目录 前言前提须知为什么要自己编译 FFmpeg前提软件包与工具的安装编译ffmpeg写CMakeList.txt包含ffmpeg到我们项目中 总结 前言 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包…...

Vue.js[组件(Component)]

什么是: 拥有专属的HTML,CSS,数据的,可重用的页面独立区域 一个页面由多个组件聚合而成一个大型的页面 在代码层面上,一个组件就是一个可反复使用的自定义标签。 vs jq插件 vs boot组件 boot插件: 虽然可重用,但仍需…...

基于微信小程序+SpringBoot+Vue的校园自助打印系统(带1w+文档)

基于微信小程序SpringBootVue的校园自助打印系统(带1w文档) 基于微信小程序SpringBootVue的校园自助打印系统(带1w文档) 管理信息可以处理复杂的信息从而提高用户的工作效率,减少失误。所以本基于Vue和微信小程序的校园自助打印系统的开发非常有意义,本系…...

qt设置过滤器

1.创建事件过滤器类,在主窗口中安装事件过滤器 class PasteFilter : public QObject {Q_OBJECTpublic:PasteFilter(QObject *parent nullptr) : QObject(parent) {}protected:bool eventFilter(QObject *obj, QEvent *event) override {if (event->type() QEv…...

线上环境服务器CPU飙升排查

前因 收到线上服务器CPU使用率100%的告警信息。 环境 jdk1.8CentOS Linux ;CentOS Linux 排查 查看服务器CPU使用率 果然cpu已经达到了100%了 命令 top 使用arthas工具 使用方式 arthas 执行命令java -jar arthas-boot.jar 然后执行命令 thread 看到有两个…...

unity文字||图片模糊

一.文字模糊 1、增大字体大小后等比缩放 快捷键R 2、更改字体渲染模式 二.图片模糊 1、更改过滤模式 2、更改格式或者压缩 3、如果只是图片边缘看不清,可以增加canvas/图片的每单位参考像素...

香薰学习笔记

1 喷香水的方法 ChatGPT-4o 学习使用香水是提升个人形象的一个好方法。 喷香水的方法如下: 皮肤吸收:香水最好喷在皮肤上,因为皮肤的温度能帮助香水散发出更好的香味。喷在衣服上可能会影响香水的原始味道。脉搏点:将香水喷在脉搏…...

iOS ------ weak的基本原理

1.weak的基本概念 weak弱引用,所引用的对象的引用计数不会加一,引用对象被释放的时候会自动设置为nil多用于解决对象间的相互引用造成内存泄露的循环引用的问题 2.实现原理 Person *object [[Person alloc] init]; id __weak objc object;Runtime维…...

实时更新UI界面

1.处理实时通信,几种方案 1:当一个用户发送一条需要实时更新的信息,我可以直接查找在线用户,通过在线用户来进行判断条件,发送更新请求 2:用户在一个需要实时更新的界面时,就不断的向服务端发…...

为什么Spring不推荐@Autowired用于字段注入

背景 Spring是Java程序员常用的框架之一。官方从Spring 4.0开始不推荐使用Autowired进行字段注入。 Spring注入方式 基于构造器注入:在构造器上使用Autowired。 优点:可以声明字段为final,确保字段在构造时被初始化。 基于setter方法注入&…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十九章 Linux MISC驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

基于MobileNetv2的垃圾分类函数式自动微分-昇思25天打卡

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入,对图像中的垃圾物体进行检测,并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写(Python语言)&a…...

STM32CubeIDE(CAN)

目录 一、概念 1、简述 2、CAN 的几种模式 二、实践 1、环回模式轮询通信 1.1 软件配置 1.2 代码编写 2、环回模式中断通信 2.1 软件配置 2.2 代码编写 一、概念 1、简述 STM32微控制器系列包含多个型号,其中一些型号集成了CAN(Controller Are…...

GO Channel使用详解(各种场景下的最佳实践)

GO Channel使用详解(各种场景下的最佳实践) 一个知识点:通过反射的方式执行 select 语句,在处理很多的 case clause,尤其是不定长的 case clause 的时候,非常有用。而且,在后面介绍任务编排的实现时,我也会采用这种方法,所以,我先带你具体学习下 Channel 的反射用法…...

SwiftUI 5.0(iOS 17)滚动视图的滚动目标行为(Target Behavior)解惑和实战

概览 在 SwiftUI 的开发过程中我们常说:“屏幕不够,滚动来凑”。可见滚动视图对于超长内容的呈现有着多么秉轴持钧的重要作用。 这不,从 SwiftUI 5.0(iOS 17)开始苹果又为滚动视图增加了全新的功能。但是官方的示例可…...

picker 构建记录

picker 构建记录 tomlinuxtom:~/openverify/picker$ cd picker bash: cd: picker: 没有那个文件或目录 tomlinuxtom:~/openverify/picker$ export BUILD_XSPCOMM_SWIGpython tomlinuxtom:~/openverify/picker$ make rm -rf temp build /home/tom/Tools/verible-v0.0-3724/bin/…...

Docker部署kafka,Docker所在宿主机以外主机访问

# 安装启动zookeeper docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime zookeeper:latest --network 指定的网络 -p:设置映射端口(默认2181) -d:后台启动 # 启动kafka docker run -d…...

控制欲过强的Linux小进程

控制欲强?视奸?普通人那才叫视奸,您是皇帝,天下大事无一逃过您的耳目,您想看什么就看什么,臣怀疑他在朋友圈私养兵士,囤积枪甲,蓄意谋反,图谋皇位啊! 哈哈哈哈开个玩笑&…...

​探讨元宇宙和VR虚拟现实之间的区别​

在数字时代,人们对虚拟现实的兴趣与日俱增。在虚拟现实技术的推动下,出现了两个概念:元宇宙和VR虚拟现实。虽然这两个概念都与虚拟现实有关,但它们有着不同的特点和用途。在本文中,我们将探讨元宇宙和VR虚拟现实之间的…...

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后,运行Docker Desktop,出现WSL 2安装不完整情况,具体情况如下: 解决方法:旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…...

《Towards Black-Box Membership Inference Attack for Diffusion Models》论文笔记

《Towards Black-Box Membership Inference Attack for Diffusion Models》 Abstract 识别艺术品是否用于训练扩散模型的挑战,重点是人工智能生成的艺术品中的成员推断攻击——copyright protection不需要访问内部模型组件的新型黑盒攻击方法展示了在评估 DALL-E …...

vscode调试nextjs前端后端程序、nextjs api接口

最近有一个项目使用了nextjs框架,并且使用nextjs同时实现了前后端,由于之前前后端都是分离的,前端的调试可以通过在代码种添加debugger或者直接在浏览器中打断点实现,现在想调试后端接口,前面的方式就不适用了。故研究…...

《SeTformer Is What You Need for Vision and Language》

会议:AAAI 年份:2024 论文:DDAE: Towards Deep Dynamic Vision BERT Pretraining - AMinerhttps://www.aminer.cn/pub/6602613613fb2c6cf6c387c2/ddae-towards-deep-dynamic-vision-bert-pretraining 摘要 这篇论文介绍了一种新型的变换器…...

[保姆级教程]uniapp安装使用uViewUI教程

文章目录 创建 UniApp 项目下载uView UI下载安装方式步骤 1: 安装 uView UI步骤 2: 查看uView UI是否下载成功步骤 3: 引入 uView 主 JS 库步骤 4: 引入 uView 的全局 SCSS 主题文件步骤 5: 引入 uView 基础样式步骤 6: 配置 easycom 组件模式注意事项 NPM方式步骤 1: 安装 uVi…...

网络安全法规对企业做等保有哪些具体规定?

网络安全法规对企业做等保的具体规定 根据《中华人民共和国网络安全法》,企业作为网络运营者,需要履行网络安全等级保护制度的相关义务,确保网络安全和数据保护。具体规定包括: 网络安全等级保护制度:企业应根据网络安…...

Java开发中超好用Orika属性映射工具

Orika属性映射工具 引入pom依赖 <dependency><groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>1.5.4</version></dependency>上干货 封装的工具类:OriUtilsimport ma.glasnost.orika.Map…...

qt初入门8:下拉框,输入框模糊查询,提示简单了解 (借助QCompleter)

实现一个简单的模糊查询的逻辑&#xff0c;输入框能提示相关项。 主要借助qt的QCompleter 类&#xff08; Qt 框架中提供的一个用于自动补全和模糊搜索的类&#xff09;&#xff0c;结合一些控件&#xff0c;比如QComboBox和QLineEdit&#xff0c;实现模糊查询的功能。 1&…...

【qt】VS中如何配置Qt环境

https://download.qt.io/official_releases/vsaddin/ 首先需要下载一下vsaddin,上面的是下载的网站. 下载的时候可能会出现下图的情况 说明你下的vsaddin和您的VS版本不匹配,所以你可以多下几个其他版本的vsAddin,一般都是和你VS版本相匹配的才可以,如Vs2022,那就试试vsaddin2…...

对于相同网段的IP,部分无法ping通问题

现象1&#xff1a;在Linux上执行 ping 192.168.1.232&#xff0c;无法ping通 分析1&#xff1a;使用ifconfig查询&#xff0c;联网使用eth0口&#xff0c;只能上网192.168.10.xx网段&#xff0c;需要增加网段 解决方法&#xff1a;使用ip addr 查询&#xff0c;本身只具备10网…...

Unity发布XR中用于worldbuilding的全新电子书

通过身临其境的虚拟领域开始旅程&#xff0c;在维度之间传送&#xff0c;或将数字奇迹与现实世界融合——虚拟现实(VR)和混合现实(MR)的千万种可能性将邀请创作者把他们的想象力带入生活。 Unity发布的最新版综合指南将帮助有抱负的创作者和经验丰富的开发者深入研究和理解构建…...

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象&#xff0c;然后进行深度遍历所有属性&#xff0c;给每个属性添加getter和setter&#xff0c;结合发布订阅模式实现响应式。 存在的问题&#xff1a; 检测不到对象属性的添加和删除数组API方法无法监听到需要对…...

Unity UGUI 之 Slider

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.Slider是什么 滑块&#xff0c;由三部分组成&#xff1a;背景 填充条 手柄 填充条就是…...

这7款高效爬虫工具软件,非常实用!

在当今数据驱动的时代&#xff0c;自动化爬虫工具和软件成为了许多企业和个人获取数据的重要手段。这里会介绍6款功能强大、操作简便的自动化爬虫工具&#xff0c;用好了可以更高效地进行数据采集。 1. 八爪鱼采集器 八爪鱼是一款功能强大的桌面端爬虫软件&#xff0c;主打可…...

【OJ】二叉树相关OJ题

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;OJ题 个人主页&#xff1a;Celias blog~ 目录 ​编辑 单值二叉树 题目描述 OJ-单值二叉树 解题思路 …...

Blender中保存透明图片

在Blender中保存透明图片&#xff0c;主要是通过在渲染设置中调整背景透明度&#xff0c;并选择合适的文件格式来保存图像。以下是一个详细的步骤指南&#xff1a; 一、设置渲染属性 打开Blender并加载你想要渲染的模型。在右侧的属性编辑器中&#xff0c;找到并点击“渲染属…...

MySQL之索引优化

1、在进行查询时&#xff0c;索引列不能是表达式的一部分&#xff0c;也不能是函数的参数&#xff0c;否则无法使用索引 例如下面的查询不能使用 actor_id 列的索引&#xff1a; #这是错误的 SELECT actor_id FROM sakila.actor WHERE actor_id 1 5; 优化方式&#xff1a;…...

Spring Boot 与 Amazon S3:快速上传与下载文件的完整指南

概要 在将 Spring Boot 更新到 3 系列时&#xff0c;由于 javax 需要被替换为 jakarta&#xff0c;因此原先依赖于 javax 的 spring-cloud-starter-aws1 将无法使用&#xff08;虽然在我本地环境中仍然可以正常工作&#xff09;。为了确保兼容性&#xff0c;我将依赖关系更改为…...

细节剖析:HTTP与HTTPS在安全性、性能等方面的不同!

HTTPS是现代互联网通信的重要基石&#xff0c;通过加密通信、身份验证和数据完整性保护&#xff0c;为数十亿用户提供了安全可靠的互联网体验。 小编整理了2GB程序员相关资料&#xff0c;关注微信公众号“程序员Style”回复“程序员”免费领取&#xff01; 1、介绍 随着 HTT…...

MySQL面试篇章——MySQL索引

文章目录 MySQL 索引索引分类索引创建和删除索引的执行过程explain 查看执行计划explain 结果字段分析 索引的底层实现原理B-树B树哈希索引 聚集和非聚集索引MyISAM&#xff08;\*.MYD&#xff0c;*.MYI&#xff09;主键索引辅助索引&#xff08;二级索引&#xff09; InnoDB&a…...