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

基于导频方法的MIMO信道估计详解

        多输入多输出(MIMO)技术作为现代无线通信系统的核心,通过利用多天线阵列在发射端和接收端同时传输和接收多个数据流,显著提高了系统的频谱效率和数据传输速率。然而,MIMO系统的性能在很大程度上依赖于对信道状态的准确估计,因为信道状态信息(CSI)是设计有效的发射和接收策略、实现空间复用和分集增益的基础。信道估计的任务就是从接收到的信号中提取有关信道特性的信息,包括信道的增益、相位和延迟等参数。

        本文将深入探讨MIMO系统中的信道估计方法,特别是基于导频的信道估计方法。我们将从信道估计的基本原理出发,介绍不同类型的信道估计方法,详细阐述基于导频的信道估计的处理步骤和公式,并讨论其在实际应用中的挑战和解决方案。

一、信道估计的基本原理

        信道估计的基本思想是利用已知的发射信号和接收信号之间的关系,通过某种算法来估计信道的参数。在MIMO系统中,信道通常被建模为一个复数矩阵,其元素表示不同发射天线和接收天线之间的信道增益。信道估计的目标就是确定这个矩阵的元素值。

        信道估计的方法可以分为两大类:基于训练序列或导频的方法和盲方法。基于训练序列或导频的方法通过在发射信号中插入已知的训练序列或导频信号,利用这些已知信号在接收端进行信道估计。这种方法的好处是估计误差小,收敛速度快,但需要占用一定的信道容量来发送训练序列,从而降低了信道利用率。盲方法则不需要已知的训练序列,而是利用信道的统计特性或接收信号的某种结构来估计信道参数。盲方法的优点是传输效率高,但鲁棒性相对较差,收敛速度慢,且运算量较大。

二、基于导频的信道估计方法

        基于导频的信道估计方法是MIMO系统中最常用的信道估计方法之一。这种方法通过在发射信号中插入已知的导频信号,利用这些导频信号在接收端进行信道估计。下面我们将详细介绍基于导频的信道估计方法的处理步骤和公式。

1. 导频信号的设计

        导频信号的设计是基于导频的信道估计方法中的关键步骤之一。导频信号的选择和插入方式直接影响到信道估计的准确性和系统性能。在设计导频信号时,需要考虑以下因素:

  • 导频信号的功率:导频信号的功率应该足够大,以便在接收端能够可靠地检测和解码。然而,过大的导频功率会占用更多的发射功率,从而降低了有效数据的传输速率。
  • 导频信号的分布:导频信号在时域或频域上的分布应该足够均匀,以便能够覆盖整个信道带宽和时间范围。这有助于确保信道估计的准确性和一致性。
  • 导频信号的正交性:在MIMO系统中,不同发射天线上的导频信号应该保持正交性,以避免相互干扰。这可以通过使用不同的时隙、频率或码字来实现。

        在实际应用中,导频信号的设计通常需要根据具体的系统参数和性能要求来进行优化。

2. 接收端信道估计

        在接收端,基于导频的信道估计方法通常包括以下几个步骤:

  • 导频信号的提取:首先,接收端需要从接收到的信号中提取出导频信号。这通常通过匹配滤波或相关检测等方法来实现。
  • 信道参数的估计:然后,利用提取出的导频信号和已知的发射导频信号之间的关系,通过某种算法来估计信道的参数。常用的算法包括最小二乘(LS)估计、最小均方误差(MMSE)估计等。
  • 信道参数的插值:由于导频信号通常只占据整个信号的一部分,因此需要对估计出的信道参数进行插值,以得到整个信道带宽和时间范围内的信道参数。插值方法包括线性插值、二次插值、傅里叶变换插值等。

        下面我们将详细介绍最小二乘(LS)估计和最小均方误差(MMSE)估计的公式和处理步骤。

(1)最小二乘(LS)估计

        最小二乘(LS)估计是一种基于最小误差平方和的信道估计方法。其基本原理是:通过最小化接收信号与估计信号之间的误差平方和,来求解信道参数的最优估计值。

        在MIMO系统中,假设发射天线数量为Nt​,接收天线数量为Nr​,导频信号矩阵为P(大小为Nt​×Np​,其中Np​为导频符号数量),接收信号矩阵为Y(大小为Nr​×Np​),信道矩阵为H(大小为Nr​×Nt​)。则最小二乘估计的公式可以表示为:

        

        然而,在实际应用中,由于导频信号矩阵P通常是已知的且其逆矩阵可能不存在或难以计算(特别是当Nt​>Np​时),因此通常使用伪逆矩阵或正则化方法来求解。伪逆矩阵可以通过对PHP进行求逆并乘以PH来得到,即:

        

其中,PH表示P的共轭转置矩阵。

        最小二乘估计的优点是计算简单、易于实现,但其缺点是容易受到噪声和干扰的影响,导致估计误差较大。因此,在实际应用中,通常需要结合其他方法(如插值、滤波等)来提高估计的准确性。

(2)最小均方误差(MMSE)估计

        最小均方误差(MMSE)估计是一种基于最小均方误差准则的信道估计方法。其基本原理是:通过最小化接收信号与估计信号之间的均方误差,来求解信道参数的最优估计值。

        在MIMO系统中,最小均方误差估计的公式可以表示为:

        

其中,RHH​表示信道矩阵H的自相关矩阵,RHY​表示信道矩阵H与接收信号矩阵Y的互相关矩阵,σ2表示噪声功率,I表示单位矩阵。

        为了计算最小均方误差估计,需要知道信道矩阵的自相关矩阵和互相关矩阵。这通常可以通过对信道进行统计建模或利用已知的导频信号来估计得到。然而,在实际应用中,这些矩阵的精确估计可能是困难的,因此通常需要采用一些近似方法或迭代算法来求解。

        最小均方误差估计的优点是估计误差较小、性能较好,但其缺点是计算复杂度较高、实现难度较大。因此,在实际应用中,需要根据具体的系统参数和性能要求来选择合适的估计方法和算法。

3. 信道估计的插值

        由于导频信号通常只占据整个信号的一部分,因此需要对估计出的信道参数进行插值,以得到整个信道带宽和时间范围内的信道参数。插值方法包括线性插值、二次插值、傅里叶变换插值等。

        线性插值是一种最简单的插值方法,其基本原理是:通过连接相邻的已知点来形成一条直线,并利用这条直线来估计未知点的值。线性插值的优点是计算简单、易于实现,但其缺点是插值精度较低、容易受到噪声和干扰的影响。

        二次插值是一种比线性插值更精确的插值方法,其基本原理是:通过拟合一个二次多项式来逼近已知的信道参数点,并利用这个多项式来估计未知点的值。二次插值的优点是插值精度较高、能够更好地反映信道的变化趋势,但其缺点是计算复杂度较高、实现难度较大。

        傅里叶变换插值是一种基于频域分析的插值方法,其基本原理是:通过对已知的信道参数进行傅里叶变换,将其转换到频域上进行分析和处理;然后利用频域上的信息来估计未知点的值;最后再将估计结果转换回时域上。傅里叶变换插值的优点是能够充分利用频域上的信息来提高插值精度和鲁棒性,但其缺点是计算复杂度较高、需要额外的频域处理步骤。

        在实际应用中,需要根据具体的系统参数和性能要求来选择合适的插值方法和算法。同时,还需要注意插值过程中的误差控制和鲁棒性问题,以确保信道估计的准确性和可靠性。

三、基于导频的信道估计方法的挑战与解决方案

        基于导频的信道估计方法在MIMO系统中具有广泛的应用前景和重要的研究价值。然而,在实际应用中,该方法也面临着一些挑战和问题。如导频污染问题等。在多小区MIMO系统中,由于不同小区之间可能使用相同的导频信号进行信道估计,因此会导致导频污染问题。导频污染会严重影响信道估计的准确性,进而降低系统的性能。为了解决导频污染问题,可以采取以下措施:

  • 优化导频信号的设计:通过设计具有正交性或低相关性的导频信号来减少不同小区之间的干扰。这可以通过使用不同的时隙、频率或码字来实现。
  • 采用多小区协作技术:通过多个小区之间的协作和信息共享来减轻导频污染的影响。例如,可以利用相邻小区之间的信道估计结果来进行联合优化和干扰抑制。
  • 利用信道稀疏性进行估计:通过发掘信道的稀疏性特性来降低导频污染的影响。例如,可以利用压缩感知等算法来从少量的导频信号中恢复出完整的信道信息。

四、matlab代码示例

clc

clear all

close all

% 参数设置

Nt = 2; % 发射天线数量

Nr = 2; % 接收天线数量

Np = 100; % 导频符号数量

SNR_dB = 20; % 信噪比(dB)

 % 生成随机信道矩阵(假设信道在每个导频符号上保持不变)

H = (randn(Nr, Nt) + 1i * randn(Nr, Nt)) / sqrt(2)*100; % 瑞利信道

 % 生成导频信号

P = (ones(Nt, Np) + 1i * ones(Nt, Np)) * sqrt(2); % 简单的已知导频信号,具有单位功率

 % 通过信道传输(添加噪声)

SNR = 10^(SNR_dB / 10); % 将SNR从dB转换为线性比例

noise_power = 1 / SNR; % 噪声功率

noise = sqrt(noise_power / 2) * (randn(Nr, Np) + 1i * randn(Nr, Np)); % 复数高斯噪声

Y = H * P + noise; % 接收信号

 % 信道估计(基于导频)

% 使用最小二乘(LS)估计算法

H_est = (Y * P') / (Nt * Np); % P' 表示P的共轭转置

 % 由于我们使用了单位功率的导频信号,因此不需要对H_est进行额外的缩放。

% 如果导频信号具有不同的功率,则可能需要相应地调整H_est。

 % 评估信道估计的准确性

MSE = mean(abs(H(:) - H_est(:)).^2); % 均方误差

disp(['信道估计的均方误差(MSE): ', num2str(MSE)]);

 % 可视化实际信道和估计信道

figure;

subplot(1, 2, 1);

imagesc(abs(H));

title('实际信道矩阵');

colorbar;

subplot(1, 2, 2);

imagesc(abs(H_est));

title('估计信道矩阵');

colorbar;

基本步骤说明:

  1. 参数设置:定义了发射天线数量Nt、接收天线数量Nr、导频符号数量Np以及信噪比SNR_dB。
  2. 生成随机信道矩阵:使用瑞利分布生成了一个Nr x Nt的信道矩阵H。
  3. 生成导频信号:创建了一个简单的已知导频信号P,它是一个Nt x Np的矩阵,每个元素都是具有单位功率的复数(sqrt(2)用于确保信号功率为1,因为噪声功率是基于单位功率来计算的)。
  4. 通过信道传输(添加噪声):计算了噪声功率,生成了复数高斯噪声,并通过信道传输得到了接收信号Y。
  5. 信道估计(基于导频):使用最小二乘(LS)估计算法,基于接收到的导频信号对信道进行了估计。这里,Y * P'计算了接收信号与导频信号的共轭转置之间的乘积,并除以Nt * Np来得到信道估计。
  6. 评估信道估计的准确性:计算了实际信道和估计信道之间的均方误差(MSE)。
  7. 可视化实际信道和估计信道:使用imagesc函数可视化了实际信道矩阵和估计信道矩阵。

相关文章:

基于导频方法的MIMO信道估计详解

多输入多输出(MIMO)技术作为现代无线通信系统的核心,通过利用多天线阵列在发射端和接收端同时传输和接收多个数据流,显著提高了系统的频谱效率和数据传输速率。然而,MIMO系统的性能在很大程度上依赖于对信道状态的准确…...

#!/bin/bash^M 坏的解释器:没有哪个文件或者目录

#!/bin/bash^M 坏的解释器:没有哪个文件或者目录 问题背景问题分析问题解决dos2unixsedvim编辑器(推荐)在Windows上转换文件格式 最后 问题背景 工作中,在Windows上编写的shell脚本上传到Linux服务器,在执行的时候提示…...

aj-report本地前后端分离部署运行

github项目地址 aj-report-mine 在源代码v1.4版本基础上,本地进行前后端分离部署开发 这里我是进行了整合,把自己在拉取源代码到成功运行过程中的一些东西直接整合,根据下面的步骤即可成功运行 资源获取 夸克网盘(16-github-aj-report-re…...

1435A 信号发生器

1435A 信号发生器 1435系列信号发生器基于创新的技术实现了性能、经济性和体积重量的平衡设计。具有优良的频谱纯度,单边带相位噪声1GHz载波10kHz频偏达到-136dBc/Hz,10GHz载波10kHz频偏达到-116dBc/Hz;具有高功率输出和大动态范围&#xff…...

计算机组成原理的学习笔记(9)-- CPU·其一 CPU的基本概念/流水线技术/数据通路

学习笔记 前言 ​ 本文主要是对于b站尚硅谷的计算机组成原理的学习笔记,仅用于学习交流。 CPU(中央处理器) 1. 组成 定义:计算机的核心部件,负责执行指令和处理数据。 组成部分: 核心:多个处…...

【Python】 -- python3 读取 aws athena 表数据

目录 1、环境准备 2、安装环境 3、举例查询某张表数据和执行 add partition 操作 3.1、编辑文件 athena_jdbc.py 3.2、查找 JVM 的动态链接库路径 3.3、保存文件,执行以下命令 1、环境准备 oracle jdk 11centos 8依赖:pandas、pyathenajdbc 和 sq…...

子网掩码计算route命令

子网掩码 - 站长工具 1.子网掩码 子网掩码就是用来遮掩IP地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段。 2.网关 网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用…...

店铺营业状态设置

admineShopController RestController("admineShopController") RequestMapping("/admin/shop") Api(tags "店铺相关接口") Slf4j public class ShopController {//设置一个常量 因为经常使用public static final String KEY "SHOP-ST…...

JavaWeb 开发基础入门

在当今互联网时代,JavaWeb 开发是构建各类网络应用的核心技术之一。无论是大型企业级应用,还是小型的个人网站,JavaWeb 都展现出强大的生命力。今天,就让我们一起踏入 JavaWeb 开发的基础入门之旅。 一、认识 JavaWeb JavaWeb 是…...

Unity Dots理论学习-2.ECS有关的模块(1)

Unity的实体组件系统(ECS)是支撑DOTS模块和技术的面向数据架构。ECS为Unity中的内存数据和runtime进程调度提供了高度的控制和确定性。 ECS for Unity 2022 LTS 配备了两个兼容的物理引擎,一个高级的Netcode package,以及一个用来…...

CentOS下安装RabbitMQ

提示:“奔跑吧邓邓子” 的高效运维专栏聚焦于各类运维场景中的实际操作与问题解决。内容涵盖服务器硬件(如 IBM System 3650 M5)、云服务平台(如腾讯云、华为云)、服务器软件(如 Nginx、Apache、GitLab、Redis、Elasticsearch、Kubernetes、Docker 等)、开发工具(如 Gi…...

【JAVA高级篇教学】第四篇:MySQL 5.7 与 MySQL 8 的区别

MySQL 是最流行的开源数据库管理系统之一,而 MySQL 8 的发布相较于 MySQL 5.7 带来了大量的改进与功能增强。 目录 一、性能改进 二、功能增强 三、安全性 四、开发体验 五、默认排序规则 六、支持的排序规则数量 七、区分敏感性(Sensitivity&…...

【Git】-- 版本说明

Alpha:是内部测试版,一般不向外部发布,会有很多 Bug .一般只有测试人员使用。Beta:也是测试版,这个阶段的版本会一直加入新的功能。在 Alpha 版之后推出。RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台…...

Flink优化----FlinkSQL 调优

目录 FlinkSQL 调优 1 设置空闲状态保留时间 2 开启 MiniBatch 3 开启 LocalGlobal 3.1 原理概述 3.2 提交案例:统计每天每个 mid 出现次数 3.3 提交案例:开启 miniBatch 和 LocalGlobal 4 开启 Split Distinct 4.1 原理概述 4.2 提交案例&…...

云上「算力浪费」,正在掣肘企业应用落地。

投入算力,真的能换来利润吗?这是每个想“入局”大模型的企业都会思考的问题。 人工智能行业一直困于成本,无论从模型训练到推理,都充满了“烧钱”的气息。无法避免的高昂算力,成为企业入局大模型的“铁门槛”。 据多…...

科技创新 数智未来|清科·沙丘投研院走进竹云

12月20日,清科沙丘投研院带领企投家团队走进竹云交流分享,聚焦技术创新、企业数字化管理、行业前沿应用案例等热点议题,深入探讨数字技术如何点燃企业高质量发展的澎湃动力,共话企业数字化、智能化发展之道。 达晨财智股权管理部…...

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录 一、根据名字进行自动装配--byName 二、根据类型进行自动装配 byType 本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。 一、根据名字进行自动装配--byName Us…...

EDGE浏览器每次关闭时再次打开保存的密码就消失如何解决

文章目录 EDGE浏览器每次重启的时候保存的密码都消失如何解决? 打开EDGE浏览器点击三个点 点击设置 点击隐私、搜索和服务 找到选择每次关闭浏览器时要清除的内容 将开启的关闭即可...

Python - 获取当前函数中的所有参数信息(名称和值)

代码 import inspect import randomclass P:def start(self, p1, p2, p3None, p4None):arg_info inspect.getargvalues(inspect.currentframe())kwargs arg_info.locals # 获取到所有参数print(kwargs)del kwargs["self"]try:self._start(**kwargs)except Except…...

pyqt5冻结+分页表

逻辑代码 # -*- coding: utf-8 -*- import sys,time,copy from PyQt5.QtWidgets import QWidget,QApplication, QDesktopWidget,QTableWidgetItem from QhTableWidgetQGN import Ui_QhTableWidgetQGN from PyQt5.QtCore import Qt from PyQt5 import QtCore, QtGui, QtWidgets…...

uniapp中实现APP调用本地通知栏通知、震动、本地提示音或者mp3提醒

要在uniapp中实现APP调用本地通知栏通知、震动和本地提示音或者mp3提醒,你可以使用uni-app提供的原生API和插件来实现。 通知栏通知: 你可以使用uni-app的原生API uni.showToast() 或者 uni.showModal() 来实现通知栏通知的功能。可以在需要发送通知的地…...

JS 数组创建、访问、常用方法

文章目录 创建访问常用属性和相关方法1. length 长度属性2. push() 新增元素 - 末尾添加3. unshift() 新增元素 - 开头添加4. pop() 移除元素 - 末尾删除5. shift() 移除元素 - 开头删除6. concat() 复制数组后新增7. slice() 复制数组8. splice() 增删改9. toString() 转字符串…...

【C++】ceil 和 floor 函数的实现与分析

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯ceil 和 floor 函数的基础介绍1. ceil 函数定义与功能示例代码输出结果功能分析使用场景 2. floor 函数定义与功能示例代码输出结果功能分析使用场景 💯自行实现…...

每天40分玩转Django:Django类视图

Django类视图 一、今日学习内容概述 学习模块重要程度主要内容类视图基础⭐⭐⭐⭐⭐View类、URLconf配置通用视图⭐⭐⭐⭐⭐ListView、DetailView等Mixin机制⭐⭐⭐⭐多重继承、功能组合自定义类视图⭐⭐⭐⭐视图定制、方法重写 二、类视图基础 2.1 基本类视图 # views.py…...

运动控制卡网络通讯的心跳检测之C#上位机编程

本文导读 今天,正运动小助手给大家分享一下如何使用C#上位机编程实现运动控制卡网络通讯的心跳检测功能。 01 ECI2618B硬件介绍 ECI2618B经济型多轴运动控制卡是一款脉冲型、模块化的网络型运动控制卡。控制卡本身最多支持6轴,可扩展至12轴的运动控制…...

秒验简介与下载说明

秒验简介与下载说明 产品概述 秒验是一款帮助开发者实现一键验证功能的产品,从根源上降低企业验证成本, 有效提高拉新转化率,降低因验证带来的流失率,3秒完成手机号验证 SDK信息 下载SDK 下载地址 SDK提供Maven和pod引入两种方…...

Redis中的数据类型

文章目录 前言一、字符串(String)应用场景常用命令 二、哈希(Hash)应用场景常用命令 三、列表(List)应用场景常用命令 四、集合(Set)应用场景常用命令 五、有序集合(Sort…...

esp8266_TFTST7735语音识别UI界面虚拟小助手

文章目录 一 实现思路1 项目简介1.1 项目效果1.2 实现方式 2 项目构成2.1 软硬件环境2.2 完整流程总结(重点整合)(1) 功能逻辑图(2) 接线(3) 使用esp8266控制TFT屏(4)TFT_espI库配置方法(5) TFT_esp库常用代码详解(6)TFT屏显示图片(7) TFT屏显示汉字(8) …...

RTOS 基础知识

**实时操作系统(RTOS, Real-Time Operating System)**是一种专为实时性要求设计的操作系统,具有确定性和高效性。RTOS 的系统架构围绕任务调度、时间管理和资源管理展开,以确保系统能够在规定时间内响应外部事件。以下是RTOS的系统…...

【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!

目录 快速安装使用 . 1.简介 2.安装 3.配置 4.补充 官方盗料参考 快速安装使用 快速安装使用,四步即可: #Ubuntu/Debian系统 sudo apt update sudo apt install python3-dev python3-pip sudo pip3 install thefuck #编辑bashrc配置文件 vim ~/.bashrc…...

在Nginx部署Web应用,如何保障后端API的安全

1. 使用HTTPS和http2.0 参考:Nginx配置HTTP2.0_nginx 支持 2.0-CSDN博客 2. 设置严格的CORS策略 通过add_header指令设置CORS头。 只允许来自https://frontend.yourdomain.com的请求访问API location /api/ {if ($http_origin ~* (https://frontend\.yourdomai…...

vue关闭eslint校验及开启debugger

文章目录 在Vue项目中关闭ESLint检查,可以通过以下几种方式实现:修改package.json文件中的eslintScript,将其设置为空字符串或者直接删除。在项目根目录下创建.eslintrc.js文件,并设置rules为关闭所有规则。如果使用Vue CLI创建的…...

docker mysql5.7安装

一.更改 /etc/docker/daemon.json sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https:/…...

json字符串或者json文件转换成相应的bean,报错“Unrecognized field xxx , not marked as ignorable”

1. 异常描述 将一个json字符串或者json文件转换成相应的bean的时候&#xff0c;报如下错误&#xff1a; 2. 异常分析 bean中某个字段的get和set方法可能不是工具自动生成的&#xff0c;而是自己写的&#xff0c;譬如字段是“sInfo”&#xff0c;本来get方法是应该写成getsI…...

Windows下C++使用SQLite

1、安装 进入SQLite Download Page页面&#xff0c;下载sqlite-dll-win-x86-*.zip、sqlite-amalgamation-*.zip、sqlite-tools-win-x64-*.zip三个包&#xff0c;这三个包里分别包含dll文件和def文件、头文件、exe工具。 使用vs命令行工具生成.lib文件&#xff1a;进入dll和def文…...

依图科技简介

依图科技&#xff08;YITU Technology&#xff09;是中国一家全球领先的人工智能&#xff08;AI&#xff09;公司&#xff0c;成立于2012年&#xff0c;总部位于上海。公司专注于计算机视觉、语音识别和自然语言处理等核心AI技术&#xff0c;致力于推动AI技术在医疗、安防、金融…...

BiLSTM模型详解及代码复现(源码)

(需要源码请私信或留言) LSTM基础 LSTM (Long Short-Term Memory) 是一种特殊类型的循环神经网络(RNN),旨在解决传统RNN在处理长序列时面临的梯度消失和梯度爆炸问题。其核心创新在于引入了 门控机制 ,包括遗忘门、输入门和输出门,有效控制信息的流动和存储。这种独特的…...

HTMLCSS:超炫丝滑的卡片水波纹效果

这段代码创建了一个卡片&#xff0c;卡片上有三个波动效果&#xff0c;这些波动效果通过 CSS 的keyframes 动画实现&#xff0c;创建了一个旋转的动画效果。这种效果适用于创建动态的视觉效果&#xff0c;例如音乐播放器的封面、动态背景或其他需要动态效果的界面元素。 演示效…...

8086汇编(16位汇编)学习笔记05.asm基础语法和串操作

8086汇编(16位汇编)学习笔记05.asm基础语法和串操作-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net asm基础语法 1. 环境配置 xp环境配置 1.拷贝masm615到指定目录 2.将masm615目录添加进环境变量 3.在cmd中输入ml&#xff0c;可以识别即配置成功 dosbox…...

【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...

Go语言及MongoDB数据库安装配置详解!

Go语言安装 首先讲一下go语言的安装&#xff0c;这部分可直接从官网下载&#xff0c;基本上一键配置的&#xff1a; 官网地址&#xff1a;All releases - The Go Programming Language 选择自己对应系统的安装包&#xff0c;这里官网提供了5种不同的包可自行下载 之后便是默认…...

数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)

数据库管理275期 2024-12-25 数据库管理-第275期 Oracle 23ai&#xff1a;画了两张架构图&#xff08;20241225&#xff09;1 系统管理分片2 用户定义分片总结 数据库管理-第275期 Oracle 23ai&#xff1a;画了两张架构图&#xff08;20241225&#xff09; 作者&#xff1a;胖…...

HTML速查

HTML 基本文档 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>文档标题</title></head><body>可见文本...</body> </html>基本标签&#xff08;Basic Tags&#xff09; <h1>最大的…...

系统分析师第二版口诀

【绪 数 计 网 库】、【信 工 项 安 规 】、【需 架 设 测 运】、【We 嵌 移 大 微 物 论】&#xff08;第1章 绪论、第2章 数学与工程基础、第3章 计算机系统、第4章 计算机网络与分布式系统、第5章 数据库系统、第6章 企业信息化、第7章 软件工程、第8章 项目管理、第9章 信息…...

E-commerce .net+React(一)——项目初始化

文章目录 项目地址一、创建.Net环境1.1环境配置1.1.1 使用vscode创建webapi1.1.2 Clean architecture结构创建1.1.3 将创建好结构的项目添加到git里1.1.4 EF Core配置1. 在infrastructure里安装EF所需环境2. 创建Product数据模型3. 创建EF Core的DbContext 数据库上下文4. 创建…...

15 break和continue

while True: content input("请输入你要喷的内容") print("发送给下路",content) #上述的程序如果没有外力干扰&#xff1a;程序会一直进行输入下去 #break:就能让当前这个循环立即进行停止 while True: content input("请输入…...

SwiftUI 入门趣谈:在文本框(TextField)内限制数字的输入

概述 虽然 SwiftUI 本身提供了海量内置的原生视图供我们使用&#xff0c;但对于某些情况我们还需要根据实际需求“量体裁衣、专属定制”。 在日常的撸码场景中&#xff0c;我们有时需要限制文本框&#xff08;TextField&#xff09;中数字内容的输入&#xff0c;如何又简单又快…...

JOGL 从入门到精通:开启 Java 3D 图形编程之旅

一、引言 Java 作为一门广泛应用的编程语言&#xff0c;在图形编程领域也有着强大的工具和库。JOGL&#xff08;Java OpenGL&#xff09;便是其中之一&#xff0c;它为 Java 开发者提供了访问 OpenGL&#xff08;Open Graphics Library&#xff09;功能的接口&#xff0c;使得…...

scrollIntoView() 滚动到元素顶部和底部

scrollIntoView() 是一个 DOM 方法&#xff0c;通常用于将某个元素滚动到视口内&#xff08;可视区域&#xff09;。这个方法能够使目标元素在页面上可见&#xff0c;尤其是在有滚动条的容器中。当你调用 scrollIntoView() 时&#xff0c;浏览器会自动滚动页面&#xff0c;直到…...

数据预处理

数据预处理科普指南 一、数据预处理&#xff1a;开启数据价值之门的钥匙 在当今数字化浪潮中&#xff0c;数据被视作蕴含无尽宝藏的富矿。然而&#xff0c;原始数据就如同刚从矿山采出的原石&#xff0c;虽内藏珍贵信息&#xff0c;却混杂着诸多瑕疵&#xff0c;如噪声、缺失…...