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

Vivado中的FFT IP核使用(含代码)

本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilogHDL>>TestBench仿真>>结果验证>>FFT运算。

1、调用IP核

该IP核对应手册pg109_xfft.pdf,首先按照图片找到IP核:

2、配置界面介绍

本小节主要介绍Fast Fourier Transform9.1这个IP核配置界面的一些选项:

第1页:Configuration

图1

表1 Configuration界面介绍

Configuration

Number of Channels

变换通道,可以选择多通道,实现多帧数据同时进行FFT运算

Transform Length

FFT变换长度,如果选择了最下面的‘run time configurable transform length’,则该参数是FFT变化的最大长度,一般不选

Architecture

Configuration

Target Clock

Frequency(MHz)

配置系统时钟

Target Data

Throughput(MSPS)

数据吞吐量

Architecture

Choice

Automatically Select

自动选择所需要的,FFT变化架构

Pipelined,

Streaming I/O

流水线结构,处理速度最快,但消耗资源多(只要将数据组成长序列输入,核就会按照FFT点数连续输出变换结果)

Radix-4, Burst I/O

基4 I/O突发结构

Radix-2, Burst I/O

基2 I/O突发结构

Radix-2 lite, Burst I/O

基2 lite I/O突发结构

Run Time Configuration Transform Length

该选项可以在FFT变换中通过设置s_axis_config_tdata中

NFFT字段的长度来改变FFT变化的长度

第2页:Implementation

图2

表2 Implementation界面介绍

Implementation

Data Format

Fixed Point

定点全精度

Floating Point

定点缩减位宽

Scaling Options

Block Floating Point

不管输入的格式如何,FFT变化内部都采用浮点,会根据每一级的数据情况自动缩放。 这个模式的输入输出位宽一致,便于调用

Scaled

在s_axis_config_data中会有相应的字段配置缩放因子.每一级别包含2个stage ,2个bit 表示一级缩放,一般0-3可选,如果log(NFFT)不是2的倍数,则最高一级的缩放只能在0-1之间选取

Unscaled

不用担心变化过程中会出现溢出,但是输入是32bit的话,输出是64bit

Rounding Modes

Convergent

Rounding

采用四舍五入输出数据(会使用更多的位宽来实现,增加转换速度和使用资源)

Trancation

采用截位输出数据

Precision Options

Input Data Width

输入数据的位宽

Phase Factor Width

输入数据相位因子宽度

Control Signals

ACLKEN

时钟使能

ARESETn(active low)

复位信号

Output Ordering Options

输出位序选项

Output Ordering

Bit/Digit Reversed

Order

逆序输出

Natural Order

顺序输出

Optional Output Fields

XK_INDEX

勾选表示给出输出索引

OVFLO

变换中溢出的指示信号

Throttle Sheme

Non Real Time

输出不遵循真实时间

Real Time

输出遵循真实时间

第3页:Detailed Implementation

图3

表3 Detailed Implementation

Detailed Implementation

Memory Options

存储器选项

Data

Block RAM

突发I/O架构:块RAM或分布式RAM均可用于数据和相位因子存储;

流水线流I/O:数据部分存储在块RAM部分存储在分布式RAM上,因此这两项都无法配置

Distributed RAM

Phase Factors

Block RAM

Distributed RAM

Number of stages using Block RAM

for Data and Phase Factors

选择块RAM的级数,

一般用不到默认即可

Reorder Buffer

Block RAM

流水线模式可选则配置,一般默认即可

Distributed RAM

Optimize Block RAM Count Using Hybrid

Memories

一种优化存储的方式,一般不用

Optimize Options

优化选项

Complex Multipliers

Use 3-multiplier structure

使用更多的DSP切片优化运算

Use 4-multiplier structure

比“3-multiplier”运算更快,

使用资源更多

Use CLB Logic

一般用在性能要求较低的设计中

Butterfly Arithmetic

Use CLB Logic

切片逻辑构造蝶形运算

Use XtremeDsp Slices

使用DSP切片的蝶形运算,强制使用DSP切片内部的加/减法器

3、IP核端口配置

根据上述配置界面的介绍,下面以64点IFFT为例子,总结了使用IP核时所需的端口配置,如表4所示,需要注意的是表4中没有涉及的部分按照IP核的默认配置即可:

表4 64点IFFT运算IP核的设置表汇总

Configuration

Number of Channels

1

Transform Length

64

Architecture

Configuration

Target Clock Frequency(MHz)

50

Target Data Throughput(MSPS)

50

Target

Pipelined, Streaming I/O

Implementation

Data Format

Fixed Point

Scaling Options

Scaled

Rounding Modes

Truncation

Precision Options

Input Data Width

16

Phase Factor Width

16

Control Signals

ACLKEN

勾选

Output Ordering Options

Output Ordering

Natural Order

Optional Output Fields

XK_INDEX

Throttle Sheme

Non Real Time

Detailed Implementation

该界面配置全部默认

配置完成之后IP核的端口图如下:

图4 64点IFFT核端口图

按照下面图找到例化原语:

图5

打开.veo后缀的文件找到例化原语:

图6

对例化语句的介绍见表5,其中L表示IFFT/FFT的点数。

表5 例化原语介绍

端口名称

IN/OUT

勾选

aclk

IN

系统时钟

aclken

IN

时钟使能

s_axis_config_tdata

IN

控制输入模式,进行fft/ifft以及衰减因子的设置,FWD_INV = 1做 fft,FWD_INV = 0做ifft

s_axis_config_tvalid

IN

拉高两个时钟周期之后,将端口s_axis_data_tvalid和s_axis_data_tready拉高

s_axis_config_tready

OUT

s_axis_config_tvalid拉高两个时钟周期后,该口给1输出;若干个时钟周期后,自动归零

s_axis_data_tdata

IN

将数据输入进行FFT运算结果

s_axis_data_tvalid

IN

当s_axis_data_tready高电平后,将s_axis_data_tvalid拉高L个周期,输入L个数据进行fft;L是FFT的点数

s_axis_data_tready

OUT

aresetn拉高两个时钟周期后,该口给1输出;此时ip核初始化完成,可进行数据输入

s_axis_data_tlast

IN

数据输入完毕后拉高,停止数据输入

m_axis_data_tdata

OUT

高位为虚部,低位为实部

m_axis_data_tuser

OUT

输出fft的地址值,输出值*fs/L为对应频点

m_axis_data_tvalid

OUT

当ifft结果输出时拉高,输出L个点的数据后拉低

m_axis_data_tready

IN

需保持高电平,保证FFT单元处在计算模式,并且能够输出结算结果

m_axis_data_tlast

OUT

当fft结果输出到最后一个结果时拉高,

紧接着下一个时钟就拉低

event_frame_started

OUT

当出现新的计算时给出

event_tlast_unexpected

OUT

当数据输入完毕而s_axis_data_tlast,没有拉高时给出

event_tlast_missing

OUT

但数据输入完毕之前s_axis_data_tlast,就拉高时给出

event_status_channel_halt

OUT

当核不能将数据正常输出给状态通道时给出

event_data_in_channel_halt

OUT

但核当前请求数据而数据没输入时给出

event_data_out_channel_halt

OUT

当核不能将数据正常输出给数据通道时给出

需要说明的是,需要配置的端口有,1)aclk;2)aclken;3)s_axis_config_tdata ;4)s_axis_config_tvalid ;5)s_axis_config_tready;6)s_axis_data_tdata;7)s_axis_data_tvalid;8)s_axis_data_tready;9)m_axis_data_tdata;10)m_axis_data_tuser;11)m_axis_data_tready;12)m_axis_data_tlast

4、MATLAB生成测试数据

本次测试只需要使用TestBench验证即可,需要生成.txt后缀的文件,产生IFFT核的输入数据,主要程序为:

%% 该.m文件用来生成介绍IFFT核的数据,具体为64点的IFFT  16QAM
clear
close all
clc
rng default  %产生固定数值的随机数据
%% 基于符号算法的目标距离和速度探测
%% 定义基本参数
Ns=1;                                                   %符号数
Nc=64;                                                  %子载波数
M=16;                                                   %调制方式
bit_num=log2(M);                                        %一个码组中的码元个数
bit=randi([0 1],Nc*Ns*bit_num,1);                       %产生比特
norm=1/sqrt(10);                                        %16qam 归一化因子
%% 16qam
bit_convert=(reshape(bit,bit_num,length(bit)/bit_num))';%二进制数据流按照调制的方式分成不同码元
data_2_to_10=bi2de(bit_convert,'left-msb');             %将每四位数据转换为十进制数
maxtix=reshape(data_2_to_10,Nc,Ns);
bit_mo=norm*qammod(data_2_to_10,M);
a_nm=reshape(bit_mo,Nc,Ns);
%% 发送端IFFT调制
IFFT_OUT=ifft(a_nm,64);
%%  数据保存为.txt文件echo_real=real(a_nm);echo_imag=imag(a_nm);echo1_real=quantizer([16 11]);echo1_imag=quantizer([16 11]);fid_echo=fopen('C:\Users\15865\Desktop\FFT_IP_core_64point\IFFT_IP_core_64point_exam.txt','wt');for j=1:Nsecho2_real=num2bin(echo1_real,echo_real(:,j));echo2_imag=num2bin(echo1_imag,echo_imag(:,j));for i=1:Ncimag_real_echo=[echo2_imag(i,:),echo2_real(i,:)];fwrite(fid_echo,imag_real_echo);fprintf(fid_echo,'\n');endend
fclose(fid_echo);

图中程序功能是生成了一段包含64个复数数据的数组,并将每个复数数据用16表示实部16位表示虚部共生成32位二进制数,最后将这组数据保存为.txt后缀文件。

5、测试verilog HDL

根据前文的配置编写一个简单的测试.v文件测试64点数据的IFFT运行结果,主要程序如下:

`timescale 1ns / 1ps
module IFFT_introduction(input        clk,input        rst_n,input        ifft_valid,input [31:0] data_in,
//        input        last,output        s_config_tready,output [31:0] m_data_tdata,output        s_data_tready,output [7:0]  m_data_tuser,output        m_data_tvalid,output        m_data_tlast);FFT_IP_core_64point ifft_u0(.aclk(clk),                                      // input wire aclk.aclken(rst_n),                                  // input wire aclken.s_axis_config_tdata(8'd0),                      // input wire [7 : 0] s_axis_config_tdata.s_axis_config_tvalid(1'b1),                     // input wire s_axis_config_tvalid.s_axis_config_tready(s_config_tready),          // output wire s_axis_config_tready.s_axis_data_tdata(data_in),                     // input wire [31 : 0] s_axis_data_tdata.s_axis_data_tvalid(ifft_valid),                 // input wire s_axis_data_tvalid.s_axis_data_tready(s_data_tready),              // output wire s_axis_data_tready
//  .s_axis_data_tlast(s_axis_data_tlast),         // input wire s_axis_data_tlast.m_axis_data_tdata(m_data_tdata),                // output wire [31 : 0] m_axis_data_tdata.m_axis_data_tuser(m_data_tuser),                // output wire [7 : 0] m_axis_data_tuser.m_axis_data_tvalid(m_data_tvalid),              // output wire m_axis_data_tvalid.m_axis_data_tready(1'b1),                       // input wire m_axis_data_tready.m_axis_data_tlast(m_data_tlast)                 // output wire m_axis_data_tlast
);wire [15:0] ifft_64point_out_RE,ifft_64point_out_IM;
//  assign RE={{4{m_data_tdata[15]}},m_data_tdata[15:4]};//IFFT归一化处理,除Nfft
//  assign IM={{4{m_data_tdata[39]}},m_data_tdata[39:28]};assign ifft_64point_out_IM=m_data_tdata[31:16]; //虚部assign ifft_64point_out_RE=m_data_tdata[15:0];  //实部 endmodule

这段程序调用了FFT IP核的例化原语,并将部分接口作为函数的输入和输出,方便TestBench调用。

6、TestBench仿真

主要程序如下:

`timescale 1ns / 1ps
module ifft_tb();
reg        clk;             //系统时钟
reg        rst_n;           //复位信号,低有效
reg        ifft_valid;      //数据有效位,指示输入数据有效
reg [31:0] data_in;         //输入数据wire s_config_tready;       
wire [31:0] m_data_tdata;   
wire s_data_tready;         
wire [7:0] m_data_tuser;    
wire m_data_tvalid;         
wire m_data_tlast;IFFT_introduction u0(    //例化.v文件.clk(clk),.rst_n(rst_n),.ifft_valid(ifft_valid),.data_in(data_in),.s_config_tready(s_config_tready),.m_data_tdata(m_data_tdata),.s_data_tready(s_data_tready), .m_data_tuser(m_data_tuser),.m_data_tvalid(m_data_tvalid),.m_data_tlast(m_data_tlast)
);
reg [31:0] mem [63:0];
initial begin       //$readmemb Vivado内置函数调用.txt文件$readmemb("C:/Users/15865/Desktop/FFT_IP_core_64point/IFFT_IP_core_64point_exam.txt",mem);clk=0;rst_n=0;#1000;rst_n=1;#10_000;$stop;
end
always #10 clk<=~clk;    //50MHz
reg [6:0] count;        
//计数
always@(posedge clk or negedge rst_n) beginif(!rst_n) count<='d0;else if(count<='d63)count<=count+1'b1;elsecount<='dz;
end
// 产生信号和数据
always@(posedge clk or negedge rst_n) beginif(!rst_n) beginifft_valid<='d0;data_in<='d0;endelse if(count>='d0 && count<='d63) beginifft_valid<=1;data_in<=mem[count];endelse beginifft_valid<=1'b0;data_in<='d0;end
end
endmodule

7、Modelsim结果与MATLAB输出结果验证

本节将验证Modelsim和MATLAB输出结果的一致性,并简单介绍Modelsim输出结果向MATLAB数据的转换。

Modelsim 输出结果如下图:

图10

由于数据有64个而这里验证前三个中间三个和后三个的方式验证Modelsim数据和MATLAB数据正确性:

表6数据验证

MATLAB

序号

Modelsim

序号

0.0791+0.791i

1

0.0788+0.0788i

1

0.1504-0.1122i

2

0.1503-0.1122i

2

-0.0336+0.2315i

3

-0.0337+0.2314i

3

-0.1444-0.0422i

31

-0.1444-0.0422i

31

-0.1533+0.1128i

32

-0.1553+0.1128i

32

-0.0395+0.0791i

33

-0.0395+0.0790i

33

0.0992-0.1690i

62

0.0992-0.1689i

62

-0.1036+0.0314i

63

-0.1036+0.0314i

63

-0.1168-0.1773i

64

-0.1167-0.1773i

64

需要注意的是,Modelsim输出的结果并不是小数,而是忽略了小数点的整数,要想获得和MATLAB类似的浮点数,需要我们将输出结果变换,这里以Modelsim输出的最后一个数为例(即表6中序号64),可见图11。

图11

对于该结果需要我们将输出结果除以2^(a+ b),a为用以表示小数的位宽数,本文中为11,b为FFT点数的2次幂幂值,本文为6,因此对于每一个Modelsim的输出结果都需要除以2^17,这里实部-15302/2^17=-0.1167,虚部-23234/2^17=-0.1773。

从表6中数据可以看出,IFFT 核执行的运算和MATLAB的运算结果十分接近,验证成功。

8、FFT运算

与IFFT运算类似,配置不用更改只需将第5小节程序中,s_axis_config_tdata端口配置改为8’d1即可,其他无需变动。

参考:

https://blog.csdn.net/duanchangrenhit/article/details/109639454

相关文章:

Vivado中的FFT IP核使用(含代码)

本文介绍了Vidado中FFT IP核的使用&#xff0c;具体内容为&#xff1a;调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilogHDL>>TestBench仿真>>结果验证>>FFT运算。 1、调用IP核 该IP核对应手册pg109_xfft.pd…...

​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化

2022年亚马逊云科技re:Invent盛会于近日在拉斯维加斯成功召开&#xff0c;吸引了众多业界精英和创新者。亚马逊云科技边缘服务副总裁Jan Hofmeyr在演讲中分享了关于亚马逊云科技海外服务器边缘计算的最新发展和创新成果&#xff0c;引发与会者热烈关注。 re:Invent的核心主题是…...

什么是“人机协同”机器学习?

“人机协同”&#xff08;HITL&#xff09;是人工智能的一个分支&#xff0c;它同时利用人类智能和机器智能来创建机器学习模型。在传统的“人机协同”方法中&#xff0c;人们会参与一个良性循环&#xff0c;在其中训练、调整和测试特定算法。通常&#xff0c;它的工作方式如下…...

数学建模笔记-拟合算法

内容&#xff1a;拟合算法 一.概念&#xff1a; 拟合的结果就是找到一个确定的曲线 二.最小二乘法&#xff1a; 1. 2.最小二乘法的二表示的是平方的那个2 3.求解最小二乘法&#xff1a; 三.评价拟合的好坏 1.总体评分和SST&#xff1a; 2.误差平方和SSE&#xff1a; 3.回…...

非线性约束的优化问题_序列二次规划算法代码

1. 理论部分 2. 序列二次规划算法代码及解析 3.完整代码 1.理论部分 a.约束优化问题的极值条件 库恩塔克条件(Kuhn-Tucker conditions&#xff0c;KT条件)是确定某点为极值点的必要条件。如果所讨论的规划是凸规划&#xff0c;那么库恩-塔克条件也是充分条件。 &#xff…...

【数据结构之顺序表】

数据结构学习笔记---002 数据结构之顺序表1、介绍线性表1.1、什么是线性表? 2、什么是顺序表?2.1、概念及结构2.2、顺序表的分类 3、顺序表接口的实现3.1、顺序表动态存储结构的Seqlist.h3.1.1、定义顺序表的动态存储结构3.1.2、声明顺序表各个接口的函数 3.2、顺序表动态存储…...

junit-mock-dubbo

dubbo单元测试分两种情况 Autowired注解是启动上下文环境&#xff0c;使用上下文对象进行测试&#xff0c;适合调试代码 InjectMocks注解是启动上下文环境&#xff0c;使用mock对象替换上下文对象&#xff0c;适合单元测试 BaseTest *** Created by Luohh on 2023/2/10*/ S…...

json解析之fastjson和jackson使用对比

前言 最近项目中需要做埋点分析&#xff0c;首先就需要对埋点日志进行解析处理&#xff0c;刚好这时候体验对比了下fastjson和jackson两者使用的区别&#xff0c;以下分别是针对同一个json串处理&#xff0c;最终的效果都是将json数据解析出来&#xff0c;并统一展示。 一、fa…...

设计模式之-模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…...

微软官方出品:GPT大模型编排工具,支持C#、Python等多个语言版本

随着ChatGPT的火热&#xff0c;基于大模型开发应用已经成为新的风口。虽然目前的大型模型已经具备相当高的智能水平&#xff0c;但它们仍然无法完全实现业务流程的自动化&#xff0c;从而达到用户的目标。 微软官方开源的Semantic Kernel的AI编排工具&#xff0c;就可以很好的…...

docker安装的php 在cli中使用

1: 修改 ~/.bashrc 中新增 php7 () {ttytty -s && tty--ttydocker run \$tty \--interactive \--rm \--volume /website:/website:rw \--workdir /website/project \--networkdnmp_dnmp \dnmp_php php "$" }–networkdnmp_dnmp 重要, 不然连不上数据库, 可通…...

tcp vegas 为什么好

我吹捧 bbr 时曾论证过它在和 buffer 拧巴的时候表现如何优秀&#xff0c;但这一次说 vegas 时&#xff0c;我说的是从拥塞控制这个问题本身看来&#xff0c;vegas 为什么好&#xff0c;并且正确。 接着昨天 tcp vegas 鉴赏 继续扯。 假设一群共享带宽的流量中有流量退出或有…...

【设计模式】命令模式

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、什么是命令模式&#xff1f; 二、命令模式的优点和应用场景 三、命令模式的要素和实现 3.1 命令 3.2 具体命令 3.3 接受者 …...

Unity头发飘动效果

Unity头发飘动 介绍动作做头发飘动头发骨骼绑定模拟物理组件 UnityChan插件下载UnityChan具体用法确定人物是否绑定好骨骼节点&#xff08;要做的部位比如头发等&#xff09;给人物添加SpringManager骨骼管理器给骨骼节点添加SpringBone这里给每个头发骨骼都添加上SpringBone。…...

【MIKE】MIKE河网编辑器操作说明

目录 MIKE河网编辑器说明河网定义河网编辑工具栏河网文件(.nwk11)输入步骤1. 从传统的地图引入底图1.1 底图准备1.2 引入河网底图1.3 输入各河段信息2. 从ARCView .shp文件引入底图MIKE河网编辑器说明 河网编辑器主要功能有两个: ①河网的编辑和参数输人,包括数字化河网及…...

RIPV1配置实验

查看路由器路由表&#xff1a; 删除手工配置的静态路由项&#xff1a; Route1->Config->static Remove删除路由项 删除Route3的路由项&#xff0c;方法同上删除Route2的路由项&#xff0c;方法同上 完成路由器RIP配置&#xff1a; Route1->Config->RIP->Ne…...

快速实现农业机械设备远程监控

农业机械设备远程监控解决方案 一、项目背景 近年来&#xff0c;农业生产事故时有发生&#xff0c;农业安全问题已经成为农业生产中的关键问题&#xff0c;农业监控系统在农业安全生产中发挥着重要作用。农业机械设备以计划维修或定期保养为主&#xff0c;在日常应用的过程中因…...

解决用Fiddler抓包,网页显示你的连接不是专用/私密连接

关键&#xff1a;重置fiddler的证书 在Fiddler重置证书 1、Actions --> Reset All Certificates --> 弹窗一路yes 2、关掉Fiddler&#xff0c;重新打开 3、手机删掉证书&#xff0c;重新下载安装。 &#xff08;如果还不行&#xff0c;重新试一遍&#xff0c;先把浏览器…...

单片机原理及应用:流水灯的点亮

流水灯是一种简单的单片机控制电路&#xff0c;由许多LED组成&#xff0c;电路工作时LED会按顺序点亮&#xff0c;类似于流水的效果。 下面是运行在keil上的代码&#xff0c;分别使用了数组&#xff0c;移位符和库函数来表示。 //数组法 #include <reg52.h> //头文…...

蓝桥杯宝藏排序算法(冒泡、选择、插入)

冒泡排序: def bubble_sort(li): # 函数方式for i in range(len(li)-1):exchangeFalsefor j in range(len(li)-i-1):if li[j]>li[j1]:li[j],li[j1]li[j1],li[j]exchangeTrueif not exchange:return 选择排序: 从左往右找到最小的元素&#xff0c;放在起始位置…...

使用@jiaminghi/data-view实现一个数据大屏

<template><div class"content bg"><!-- 全局容器 --><!-- <dv-full-screen-container> --><!-- 第二行 --><div class"module-box" style"align-items: start; margin-top: 10px"><!-- 左 -->…...

神经网络:池化层知识点

1.CNN中池化的作用 池化层的作用是对感受野内的特征进行选择&#xff0c;提取区域内最具代表性的特征&#xff0c;能够有效地减少输出特征数量&#xff0c;进而减少模型参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling)&a…...

微服务常见的配置中心简介

微服务架构中&#xff0c;常见的配置中心包括以下几种&#xff1a; Spring Cloud Config&#xff1a; Spring Cloud Config是官方推荐的配置中心解决方案&#xff0c;它支持将配置文件存储在Git、SVN等版本控制系统中。通过提供RESTful API&#xff0c;各个微服务可以远程获取和…...

银河麒麟v10 rpm安装包 安装mysql 8.35

银河麒麟v10 rpm安装包 安装mysql 8.35 1、卸载mariadb2、下载Mysql安装包3、安装Mysql 8.353.1、安装Mysql 8.353.3、安装后配置 1、卸载mariadb 由于银河麒麟v10系统默认安装了mariadb 会与Mysql相冲突&#xff0c;因此首先需要卸载系统自带的mariadb 查看系统上默认安装的M…...

一篇文章带你搞定CTFMice基本操作

CTF比赛是在最短时间内拿到最多的flag&#xff0c;mice必须要有人做&#xff0c;或者一支战队必须留出一块时间专门写一些mice&#xff0c;web&#xff0c;pwn最后的一两道基本都会有难度&#xff0c;这时候就看mice的解题速度了&#xff01; 说实话&#xff0c;这是很大一块&…...

Spring security之授权

前言 本篇为大家带来Spring security的授权&#xff0c;首先要理解一些概念&#xff0c;有关于&#xff1a;权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器 一.授权的基本介绍 Spring Security 中的授权分为两种类型&#xff1a; 基于角色的授权&…...

模式识别与机器学习(十一):Bagging

1.原理 Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出&#xff0c;它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集&#xff0c;我们先随机取出一个样本放入采样集中&#xff0c;再把该样本放回初始数据集&#xff0c;使得…...

数据压缩(哈夫曼编码)

【问题描述】在数据压缩问题中&#xff0c;需要将数据文件转换成由二进制字符0、1组成的二进制串&#xff0c;称之为编码&#xff0c;已知待压缩的数据中包含若干字母&#xff08;A-Z&#xff09;&#xff0c;为获得更好的空间效率&#xff0c;请设计有效的用于数据压缩的二进制…...

移动安全APP--Frida+模拟器,模拟器+burp联动

最近测APP被通报了&#xff0c;问题点测得比较深&#xff0c;涉及到frida和burp抓包&#xff0c;一般在公司可能会有网络的限制&#xff0c;手机没办法抓包&#xff0c;我就直接在模拟器上试了&#xff0c;就在这记录一下安装过程。 目录 一、Frida安装 二、burp与逍遥模拟器…...

MATLAB遗传算法工具箱的三种使用方法

MATLAB中有三种调用遗传算法的方式&#xff1a; 一、遗传算法的开源文件 下载“gatbx”压缩包文件&#xff0c;解压后&#xff0c;里面有多个.m文件&#xff0c;可以看到这些文件的编辑日期都是1998年&#xff0c;很古老了。 这些文件包含了遗传算法的基础操作&#xff0c;包含…...

网站视频链接怎么做的/有哪些可以推广的平台

2017计算机应用基础试题(附答案)选择题&#xff1a;1. 在计算机应用中&#xff0c;“计算机辅助设计”的英文缩写为___________。 A. CAD B. CAM C. CAE D. CAT2. 微型计算机中&#xff0c;合称为中央处理单元(CPU)的是指___________。 A.运算器和控制器 B.累加器和算术逻辑运算…...

对用户1万的网站做性能测试/免费的云服务器有哪些

我在下面有一个多维数组,我想循环遍历它并将[menu_cats]的值从一个数字更改为一个字符串,该字符串是从数据库选择中提取的.这可能吗&#xff1f;数组的名称是’result’.Array([0] > Array([0] > Array([menu_cats] > 1[item] > Introduction[link] > needs)[1]…...

2008服务器做网站/google chrome官网

不安全 如果servlet对象中存在一个共享的全局变量&#xff0c;而多个线程对这个变量进行操作&#xff0c;则可能引发线程安全问题 解决方案 使用同步代码块&#xff0c;以时间换空间&#xff0c;效率低实现SingleThreadModel接口&#xff0c;实质上是每个线程创建一个servle…...

能自己做效果图的网站/seo工程师

链接...

可以做ps的网站/网站软文推广范文

商品类别下拉菜单动态化数据库中建立TypeGoods表&#xff08;typeId&#xff0c;typeName&#xff09;&#xff0c;字符串创建商品类型Bean&#xff0c;TypeGoods.java package mybean;public class TypeGoods { private String typeId; private String typeName; public Strin…...

新企业在哪里做网站好/近期的新闻消息

clean-webpack-plugin 详见上一篇文章&#xff0c;点击查看 copy-webpack-plugin 能够将文件从A路径拷贝到B路径 使用方法&#xff1a; npm i copy-webpack-plugin -D//webpack.config.js let CopyWebpackPlugin require(copy-webpack-plugin);plugins:[new CopyWebpackPlugi…...