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

FPGA学习(10)-数码管

前3节视频目的是实现显示0~F的数码管仿真,后3节是用驱动芯片驱动数码管。

目录

1.数码管显示原理

2.代码过程

2.1仿真结果

3.串行移位寄存器原理

3.1原理

​编辑 3.2 数据手册

3.3 先行设计思路

4.程序 

4.1确定SRCLK的频率

4.2序列计数器

4.3 不同counter值干不同事

4.4仿真 

5.实验结果


1.数码管显示原理

分为共阳极与共阴极驱动,共阴极:发光二极管负极都接地,a~dp接入端口引脚,输出高电平就点亮,共阳极与之相反。

不同位的高低电平可以组成不同的数字符号,后面查找表的值就看这张图。 

在驱动多个数码管场景中,往往a~dg与每个数码管对应的二极管是互联的,而sel端的电压可以控制三极管是否导通,以此可以单独让某个数码管亮灭。

根据以上分析可以画出电路图:

1.首先SEL决定了点亮哪个数码管,需要用到38译码器进行选择,而38译码器的输出选择需要用到一个3位的状态计数切换器。

2.如何让状态切换,即加入一个计数器记到1ms,当大于1ms时,让状态加1,且计数器本身清0。

3.SEG决定了数码管哪段亮,在没有规律的情况下可以用查表法,把这些状态一一列出来,例如这里有16个状态,那么需要一个4位的变量来表示对应的索引号。

4.将状态计数切换器值传到8选1数据选择器,分别代表8个数码管对应的通道值,作为索引。

2.代码过程

1.实现1ms的计数器;

2.位切换逻辑,计数器每满一次,状态位切换+1;

3.38译码器实现连接哪个数码管;

4.位选择控制逻辑。

(1)查找表case,完成SEG的配置。

(2)位切换逻辑将8个数码管对应的值当作索引传进去。这里数组顺序错了。

 代码:

module Shuma_guan(input                   clk,input                   reset,input[31:0]             Dis_data,output reg[7:0]         SEL,output reg[7:0]         SEG);
reg[29:0] counter_1ms;
reg[2:0] which_sel;
reg[3:0] data_temp;         //存放索引值
//数码管亮的时间
parameter Base_freq = 50_000_000;
parameter goal_freq = 1000;
parameter cworth = Base_freq/goal_freq-1;//计数器
always@(posedge clk or negedge reset)
beginif(!reset)counter_1ms <= 1'd0;else if(counter_1ms == cworth)counter_1ms <= 1'd0;elsecounter_1ms <= counter_1ms+1'd1;
end//数码管状态切换
always@(posedge clk or negedge reset)
beginif(reset)which_sel <= 1'd0;else if(counter_1ms == cworth)which_sel <= which_sel+1'd1;elsewhich_sel <= which_sel;
end//38译码器确定哪个数码管亮
always@(posedge clk)
begincase(which_sel)0:SEL <= 8'b0000_0001;1:SEL <= 8'b0000_0010;2:SEL <= 8'b0000_0100;3:SEL <= 8'b0000_1000;4:SEL <= 8'b0001_0000;5:SEL <= 8'b0010_0000;6:SEL <= 8'b0100_0000;7:SEL <= 8'b1000_0000;endcase
end//建立查找表,共阳
always@(posedge clk)
begincase(data_temp)0:SEG <= 8'b1100_0000;1:SEG <= 8'b1111_1001;2:SEG <= 8'b1010_0100;3:SEG <= 8'b1011_0000;4:SEG <= 8'b1001_1001;5:SEG <= 8'b1001_0010;6:SEG <= 8'b1000_0010;7:SEG <= 8'b1111_1000;8:SEG <= 8'b1000_0000;9:SEG <= 8'b1001_0000;10:SEG <= 8'b1000_1000;11:SEG <= 8'b1000_0011;12:SEG <= 8'b1100_0110;13:SEG <= 8'b1010_0001;14:SEG <= 8'b1000_0110;15:SEG <= 8'b1000_1110;endcase  
end//将状态值传给索引
always@(*)
begincase(which_sel)0:data_temp <= Dis_data[3:0];1:data_temp <= Dis_data[7:4];2:data_temp <= Dis_data[11:8];3:data_temp <= Dis_data[15:12];4:data_temp <= Dis_data[19:16];5:data_temp <= Dis_data[23:20];6:data_temp <= Dis_data[27:24];7:data_temp <= Dis_data[31:28];endcase
endendmodule

仿真:

`timescale 1ns / 1nsmodule Shuma_guan_tb();
reg                   clk;
reg                   reset;
reg[31:0]             Dis_data;
wire[7:0]             SEL;
wire[7:0]             SEG;Shuma_guan Shuma_guan_inst0(.clk(clk),.reset(reset),.Dis_data(Dis_data),.SEL(SEL),.SEG(SEG)
);  initial clk = 1;
always #10 clk=~clk;initial beginreset = 0;Dis_data = 32'h12345678;#201;reset = 1;#20_000_000;Dis_data = 32'h9abcdef0;#20_000_000;$stop;
end
endmodule

2.1仿真结果

切换状态计数没有随着计数器增加到49999而加1,原因是在切换状态的时序逻辑中,复位没有取反,直接if(reset),相当于复位信号为1时,状态计数就会为0,所以一直不会增加。

修改后正确:

3.串行移位寄存器原理

3.1原理

 为了节省IO口引脚,一般会使用驱动芯片74HC595驱动数码管,芯片的原理是基于串行移位寄存器。将上节输出的SEG与SEL传输到74HC595。

基本原理为,顺次连接4个D触发器,每经过一个时钟,就依次将DATA存储的值传送到下一个D触发器,例如,经过5个时钟周期后, 此时DFF3~DFF0存储的值为:1001。如果想在这个时刻把每个D触发器存储的值取出来,就在每个D触发器的输出端再接入一个D触发器,加的这4个D触发器单独用一个时钟进行控制,然后将输出分别接至各自端口。

 当要移位8位,16位时,直接加更多的D触发器就行。

74HC595能够驱动8位移位寄存器,SER是数据传输口,SRCLK是第一路串联触发器的时钟,SRCLR非应该是复位信号,RCLK是是每个单独加入的触发器的时钟,OE非是输出的使能信号。第1个74HC595的输出串联到了第2个74HC595的输入,以此构成16位移位寄存器输出。

 左边的74HC连接的是选择使能哪个数码管,右边的74HC是决定数码管哪段亮。DIO是数据输入,SRCLK是第一路串联触发器的时钟,RCLK是加入单个D触发器的时钟。

 3.2 数据手册

从时序图可以看出,RCLK有方波时,才有输出。

移位寄存器时钟为上升沿时,其实也就是让移位寄存器存前一阶段的数据。RCLK为上升沿时,移位寄存器的数据存储在存储寄存器中。

时钟频率最低为5MHz,其中,SRCLK/RCLK的高低电平时间至少为时钟周期的一半,电平为2V时,SER在SRCLK上升沿前125ns必须稳定,SRCLK的上升沿必须RCLK上升沿之前的94ns。 

3.3 先行设计思路

4.程序 

4.1确定SRCLK的频率

取50MHz的乘除整数倍,取SRCLK的频率为12.5MHz,定义一个分频计数器,在SRCLK下降沿将数据传到DIO,上升沿DIO将数据传给驱动芯片的寄存器。计数器计数两次为1个SRCLK周期,可根据counter找到SRCLK的上升沿和下降沿。

4.2序列计数器

根据时序图与原理图,先传的SEG,后传的SEL。1ms切换了一次,人眼看不出来,实际上应该是闪烁的数字循环跳变。共32个状态,需要拉低拉高。

4.3 不同counter值干不同事

counter=0,拉低SRCLK,将SEG[7]的值传给DIO,将RCLK拉高。

counter=1,拉高SRCLK(驱动芯片自动会将DIO的数据传给寄存器),RCLK拉低。

......

counter=31,拉高SRCLK

4.4仿真 

仿真的RCLK刚开始就拉高了,这是因为if后面没有跟else,直接按照每个时钟沿开始执行程序了。

 正确的仿真波形:

 此时代码:

module tube_active(input               clk,input               reset,input[7:0]          SEL,input[7:0]          SEG,output reg          SRCLK,output reg          RCLK,output reg          DIO);reg[29:0]       divi_counter;
reg[4:0]        state_counter;          //序列计数器
//确定SRCLK的频率为12.5MHz
parameter base_frequence = 50_000_000;
parameter goal_frequence = 12500_000;
parameter goal_counter = base_frequence/(goal_frequence*2)-1;//分频计数器
always@(posedge clk or negedge reset)
beginif(!reset)divi_counter <= 1'd0;else if(divi_counter == goal_counter)divi_counter <= 1'd0;elsedivi_counter <= divi_counter +1'd1;    
end//序列计数器
always@(posedge clk or negedge reset)
beginif(!reset)state_counter <= 1'd0;else if(divi_counter == goal_counter)state_counter <= state_counter+1'd1;elsestate_counter <= state_counter;
end//不同counter值做不同事,下降沿将值传给DIO,上升沿将DIO的值送给驱动芯片
always@(posedge clk or negedge reset)
beginif(!reset)beginSRCLK <= 1'd0;RCLK <= 1'd0;DIO <= 1'd0;endelse begincase(state_counter)0:begin DIO <= SEG[7]; SRCLK <= 1'd0; RCLK <= 1'd1; end1:begin SRCLK <= 1'd1; RCLK <= 1'd0; end2:begin DIO <= SEG[6]; SRCLK <= 1'd0;end3:begin SRCLK <= 1'd1; end4:begin DIO <= SEG[5]; SRCLK <= 1'd0;end    5:begin SRCLK <= 1'd1; end6:begin DIO <= SEG[4]; SRCLK <= 1'd0;end7:begin SRCLK <= 1'd1; end8:begin DIO <= SEG[3]; SRCLK <= 1'd0;end 9:begin SRCLK <= 1'd1; end10:begin DIO <= SEG[2]; SRCLK <= 1'd0;end11:begin SRCLK <= 1'd1; end12:begin DIO <= SEG[1]; SRCLK <= 1'd0;end13:begin SRCLK <= 1'd1; end14:begin DIO <= SEG[0]; SRCLK <= 1'd0;end15:begin SRCLK <= 1'd1; end16:begin DIO <= SEL[7]; SRCLK <= 1'd0;end17:begin SRCLK <= 1'd1; end18:begin DIO <= SEL[6]; SRCLK <= 1'd0;end19:begin SRCLK <= 1'd1; end20:begin DIO <= SEL[5]; SRCLK <= 1'd0;end    21:begin SRCLK <= 1'd1; end22:begin DIO <= SEL[4]; SRCLK <= 1'd0;end23:begin SRCLK <= 1'd1; end24:begin DIO <= SEL[3]; SRCLK <= 1'd0;end 25:begin SRCLK <= 1'd1; end26:begin DIO <= SEL[2]; SRCLK <= 1'd0;end27:begin SRCLK <= 1'd1; end28:begin DIO <= SEL[1]; SRCLK <= 1'd0;end29:begin SRCLK <= 1'd1; end30:begin DIO <= SEL[0]; SRCLK <= 1'd0;end31:begin SRCLK <= 1'd1; endendcaseend
end
endmodule

仿真代码:

`timescale 1ns / 1nsmodule tube_active_tb();reg clk;reg reset;reg [7:0]SEL;reg [7:0]SEG;wire SRCLK;wire RCLK;wire DIO;tube_active tube_active_inst0(.clk(clk),      .reset(reset),  .SEL(SEL),.SEG(SEG),.SRCLK(SRCLK),.RCLK(RCLK),  .DIO(DIO)  
);initial clk = 1;
always #10 clk = ~clk;initial beginreset = 0;SEL = 8'b0000_0001;SEG = 8'b0101_0101;#201;reset = 1;#5000;SEL = 8'b0000_0010;SEG = 8'b1010_1010;        #5000;SEL = 8'b1010_0101;SEG = 8'b0000_1101;     #5000;$stop;
end
endmodule

在现有模块添加新的源文件,必须点击这里的+,左上角的会出错。新源文件调用了上面的两个模块,让这两个模块连在一起,然后引出三根线与驱动芯片连接。

module tube_shuma_test(input               clk,input               reset,output              SRCLK,output              RCLK,output              DIO,input [1:0]         SW
);wire[7:0] SEL,SEG; //将两个例化的端口连接起来
reg[31:0] Dis_data;  //调用的并转串模块
tube_active tube_active_inst0(.clk(clk),      .reset(reset),  .SEL(SEL),.SEG(SEG),.SRCLK(SRCLK),.RCLK(RCLK),  .DIO(DIO)  
);//调用的hex8模块
Shuma_guan Shuma_guan_inst0(.clk(clk),.reset(reset),.Dis_data(Dis_data),.SEL(SEL),.SEG(SEG)
);  always@(*)
begincase(SW)0:Dis_data <= 32'h01234567;1:Dis_data <= 32'h89abcdef;2:Dis_data <= 32'haaaabbbb;3:Dis_data <= 32'h66666666;endcase
endendmodule

5.实验结果

根据拨码开关的开关情况,数码管显示不同的数字。 

 

相关文章:

FPGA学习(10)-数码管

前3节视频目的是实现显示0~F的数码管仿真&#xff0c;后3节是用驱动芯片驱动数码管。 目录 1.数码管显示原理 2.代码过程 2.1仿真结果 3.串行移位寄存器原理 3.1原理 ​编辑 3.2 数据手册 3.3 先行设计思路 4.程序 4.1确定SRCLK的频率 4.2序列计数器 4.3 不同coun…...

C++(继承)

继承的语法 继承的好处&#xff1a;减少重复代码 语法&#xff1a; class 子类 &#xff1a; 继承方法 父类 子类 也称为 派生类 父类 也成为 基类 继承方式 公共继承 保护继承 私有继承 结论&#xff1a;父类中私有成员也是被子类继承下去了&#xff0c;只是由编译器给隐藏后…...

华为OD机试 - RSA加密算法(Java 2024 E卷 100分)

long n (long) Math.sqrt(num); 与long n (long) Math.floor(Math.sqrt(num)); 这两行代码的目的都是计算 num 的平方根&#xff0c;并将结果转换为 long 类型的整数。然而&#xff0c;它们在处理方式上有一些微小的差别。 long n (long) Math.sqrt(num);long n (long) M…...

分组校验在Spring中的应用详解

目录 前言1. 什么是分组校验2. 分组校验的基本原理3. 分组校验的实现步骤3.1 定义分组接口3.2 在校验项中指定分组3.3 校验时指定要校验的分组3.4 默认分组和分组的继承 4. 分组校验的优势和适用场景4.1 优势4.2 适用场景 5. 常见问题与解决方案5.1 校验未生效5.2 无法识别默认…...

torch.nn.**和torch.nn.functional.**的区别

torch.nn.** torch.nn.**是一个继承了torch.nn.Module的类&#xff0c;使用前必须先构造对象&#xff0c;然后再调用。如果直接使用则会报错 例如 a torch.randn(3,4) print(a) sigmoid torch.nn.Sigmoid() a sigmoid(a) print(a) a torch.nn.Sigmoid(a)tensor([[ 0.2462…...

Air780E基于LuatOS编程开发

Air780E基于LuatOS编程开发 Air780E开发板下载固件版本开发板刷机开发调试源码编译下载源码编译工具编译工具链 Air780E开发板 合宙通信推出的 LTE Cat.1 bis通信模块&#xff0c;采用移芯EC618平台&#xff0c;支持4G全网通, 包括的模组有: Air780E – 4G Cat.1Air780EG – …...

贪心算法-汽车加油

这道题目描述了一个汽车旅行场景&#xff0c;需要设计一个有效的算法来决定在哪几个加油站停车加油&#xff0c;以便最小化加油次数。题目给出了汽车加满油后的行驶距离n公里&#xff0c;以及沿途若干个加油站的位置。我们需要找出一个方案&#xff0c;使得汽车能够完成整个旅程…...

Qt信号和槽-->day04

Qt信号和槽 标准的信号和槽函数Qt中的槽函数Qt中的信号 connect案例 自定义信号和槽案例分析 信号槽的拓展信号连接信号案例 信号槽的两种连接方式Qt5中的处理方式Qt4中的处理方式Qt5处理信号槽重载问题案例 lambda表达式简单案例Qt中的应用 补充知识点 标准的信号和槽函数 QW…...

【Linux】为终端命令自定义快件键并弹窗提醒 设置快捷键切换网络代理(Network Proxy)Disabled/Manual 并弹窗提醒

【Linux】为终端命令自定义快件键并弹窗提醒 设置快捷键切换网络代理&#xff08;Network Proxy&#xff09;Disabled/Manual 并弹窗提醒 可以自定义快捷键执行终端命令&#xff0c;执行完毕会有弹窗提醒。下面给一个例子&#xff0c;设置快捷键切换网络代理&#xff08;Netwo…...

十六:Spring Boot依赖 (1)-- spring-boot-starter 依赖详解

1. 简介&#xff1a; spring-boot-starter 是 Spring Boot 项目中的基础启动器依赖&#xff0c;它为开发者提供了 Spring Boot 应用所需的核心功能和自动配置 spring-boot-starter 不是一个具体的功能模块&#xff0c;而是一个基础的启动器。 Spring Boot 提供了一系列的 sta…...

讲讲关于SNMP与智能PDU插座

什么是SNMP 简单网络管理协议 (SNMP) 是一种应用层协议&#xff0c;主要用于网络管理中的设备监控和控制。通过 SNMP&#xff0c;网络管理员可以从管理站远程访问网络中的设备&#xff0c;获取设备的状态信息、配置参数&#xff0c;甚至控制设备的行为。SNMP 被广泛应用于 TCP/…...

在CentOS下安装RabbitMQ

在CentOS下安装RabbitMQ 在CentOS下安装RabbitMQ可以按照以下步骤进行&#xff1a;步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: 启用RabbitMQ管理插件&#xff08;可选&#xff…...

前端使用Canvas实现网页电子签名(兼容移动端和PC端)

实现效果&#xff1a; 要使用Canvas实现移动端网页电子签名&#xff0c;可以按照以下步骤&#xff1a; 在HTML文件中创建一个Canvas元素&#xff0c;并设置其宽度和高度&#xff0c;以适配移动设备的屏幕大小。 // 创建一个canvas元素 let canvas document.createElement(&q…...

什么是OSTRPT报文?

OSTRPT&#xff08;Order Status Report&#xff09;是一种 EDI&#xff08;电子数据交换&#xff09;报文&#xff0c;用于在供应链管理中向采购商报告订单状态。这种报文通常由供应商发送给采购商&#xff0c;目的是告知订单的当前处理状态、预期交货时间、订单中的变化等信息…...

PICO+Unity MR空间锚点

官方链接&#xff1a;空间锚点 | PICO 开发者平台 注意&#xff1a;该功能只能打包成APK在PICO 4 Ultra上真机运行&#xff0c;无法通过串流或PICO developer center在PC上运行。使用之前要开启视频透视。 在 Inspector 窗口中的 PXR_Manager (Script) 面板上&#xff0c;勾选…...

electron 中 contextBridge 作用

1. 安全地实现渲染进程和主进程之间的通信 在 Electron 应用中&#xff0c;主进程和渲染进程是相互隔离的&#xff0c;这是为了安全和稳定性考虑。 然而&#xff0c;在很多情况下&#xff0c;渲染进程需要访问主进程中的某些功能&#xff0c;例如系统级别的操作或者一些应用级…...

15分钟学 Go 第 42 天:RESTful API设计

第42天&#xff1a;RESTful API设计 目标&#xff1a;理解RESTful API的设计原则 在现代Web开发中&#xff0c;RESTful API&#xff08;Representational State Transfer&#xff09;已经成为了标准的架构风格&#xff0c;用于实现客户端与服务器之间的通信。通过遵循REST的设…...

如何安全的中断一个运行中的线程?

文心快码进入3.0时代&#xff0c; 最新发布的代码问答、编码、Debug、单测、安全智能体&#xff0c; 分别在开发的设计、编码、构建、测试验证全流程通过AI赋能&#xff0c;让效率更高、效果更好。可以通过自然语言对话&#xff0c;独立为你完成一项编码任务。 &#x1f449;点…...

【121. 买卖股票的最佳时机】——贪心算法/动态规划

121. 买卖股票的最佳时机 一、题目难度 简单 三、题目描述 给定一个数组 prices&#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择某一天买入这只股票&#xff0c;并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获…...

LLMs之Calculate:利用大语言模型技术基于文本内容实现数字计算能力的简介、常用方法、代码实现之详细攻略

LLMs之Calculate:利用大语言模型技术基于文本内容实现数字计算能力的简介、常用方法、代码实现之详细攻略 导读:在基于大语言模型(LLM)技术实现数字计算能力的背景下,文本内容的理解和计算过程涉及多个领域的交叉技术,包括自然语言处理(NLP)、机器学习、以及数值计算。…...

LeetCode题练习与总结:判断子序列--392

一、题目描述 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一…...

json数据结构的转换

# json可用于赌徒与原件数据的转换&#xff08;json以字符串的形式储存数据&#xff0c;在通过json进行两种语言的转换时&#xff0c;应先将数据类型转换成列表或字典&#xff0c;再由列表或字典转换成json字符串&#xff0c;最后由json字符串转换成另一种语言的列表或字典数据…...

mysql删除语句:@Update(“TRUNCATE TABLE employee“)讲解

这个 SQL 语句&#xff1a; TRUNCATE TABLE employee是一个 SQL DDL&#xff08;数据定义语言&#xff09; 操作&#xff0c;用于清空数据库表中的所有记录&#xff0c;但不会删除表结构&#xff08;即列和索引等&#xff09;。 逐部分解释&#xff1a; TRUNCATE&#xff1a;…...

如何修改浏览器指纹?

网络安全日益重要&#xff0c;我们的上网行为变得越来越容易被追踪和分析。其中&#xff0c;浏览器指纹就是一种强大的技术手段&#xff0c;它可以说是你上网的身份象征。 一、浏览器指纹是什么 浏览器指纹是网站和在线平台用来收集关于你的浏览器、设备和网络的详细信息的一…...

实现3D热力图

实现思路 首先是需要用canvas绘制一个2D的热力图&#xff0c;如果你还不会&#xff0c;请看json绘制热力图。使用Threejs中的canvas贴图&#xff0c;将贴图贴在PlaneGeometry平面上。使用着色器材质&#xff0c;更具json中的数据让平面模型 拔地而起。使用Threejs内置的TWEEN&…...

GEE ui界面实现:用户自画多边形, 按面积比例在多边形中自动生成样点,导出多边形和样点shp,以及删除上一组多边形和样点(有视频效果展示)

零、背景 这几天在选样点&#xff0c;发现GEE有强大的ui功能&#xff0c;于是应用在我的工作上。 下述代码实现了几个功能&#xff1a; ①用户可以自己勾勒多边形&#xff0c;随后程序会按面积比例在多边形中自动生成样点&#xff0c;同时根据改多边形的区域生成区域平均月N…...

React diff算法和Vue diff算法的主要区别

React和Vue都是流行的前端框架&#xff0c;它们各自实现了diff算法来优化虚拟DOM的更新过程。以下是React diff算法和Vue diff算法的主要区别&#xff1a; 1. diff策略 React diff算法&#xff1a; React的diff算法主要采用了同层级比较的策略&#xff0c;即它不会跨层级比较节…...

WSL 2 中 FastReport 与 FastCube 的设置方法与优化策略

软件开发人员长期以来一直在思考这个问题&#xff1a;“我们如何才能直接在 Windows 中运行 Linux 应用程序&#xff0c;而无需使用单独的虚拟机&#xff1f;” WSL 技术为这个问题提供了一个可能的答案。WSL 的历史始于 2016 年。当时&#xff0c;其实现涉及使用 Windows 内核…...

《线性代数》学习笔记

列向量无关 上个星期继续学线性代数&#xff0c;一个矩阵&#xff0c;如何判断它是的列向量有几个是线性无关呢&#xff1f;其实有好几个方法。第一个就是一个一个判断。 先选定一个&#xff0c;然后看下这两个&#xff0c;怎么看呢&#xff1f;如果两个列向量线性相关&#…...

Redis三种集群模式:主从模式、哨兵模式和Cluster模式

目录标题 1、背景及介绍2、 Redis 主从复制2.1、主从复制特点2.2、Redis主从复制原理2.3 PSYNC 工作原理2.3.1、启动或重连判断&#xff1a;2.3.2、第一次同步处理&#xff1a;2.3.3、断线重连处理&#xff1a;2.3.4、主节点响应2.3.5、全量同步触发条件&#xff1a;2.3.6、复制…...

网站地图 设计/南阳seo优化

原文链接&#xff1a;https://blog.csdn.net/u012562273/article/details/56297648 Hebb和Delta学习规则无监督学习规则有监督学习规则无监督学习规则 唐纳德赫布&#xff08;1904-1985&#xff09;是加拿大著名生理心理学家。Hebb学习规则与“条件反射”机理一致&#xff0c;…...

海南网站建设公司哪家靠谱/厦门网络推广哪家强

网上差了很多说要在vi /etc/sysconfig/network新增GATEWAY192.168.0.1 还有vi /etc/sysconfig/network-scripts/ifcfg-eth0中新增GATEWAY192.168.0.1 还有 vi /etc/resolv.conf中的dns设置正确没有。但是我发现这些都没有用每次开机后还是需要执行route add default gw 192.168…...

水果网店网站建设策划书/seo查询工具有哪些

上篇文章已经介绍了什么是消息队列&#xff0c;以及消息队列的作用&#xff0c;下面我们来用springboot集成一个消息队列ActiveMQ 一、ActiveMQ概述&#xff1a; ActiveMQ是Apache提供的一个开源的消息系统&#xff0c;采用java实现。 二、ActiveMQ的安装 第一步、从官网下载…...

网站建设相对路径/整站seo免费咨询

在《【ActionScript】使用键盘移动元件》&#xff08;点击打开链接&#xff09;中介绍了键盘如何与ActionScript2.0交互。本文继续介绍鼠标如何与ActionScript2.0的交互。其实鼠标与ActionScript2.0的交互在《【ActionScript】利用复制影片duplicateMovieClip与鼠标拖动跟随sta…...

修改文章wordpress/小红书seo关键词优化多少钱

深度学习模型训练和关键参数调优详解一、模型选择1.回归任务人脸关键点检测2.分类任务图像分类3.场景任务目标检测人像分割文字识别二、模型训练1.基于高层API训练模型加载数据集模型封装训练参数配置模型训练2.使用PaddleX训练模型配置数据集初始化模型模型训练3.模型训练通用…...

政府网站内容建设培训/免费培训机构管理系统

【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结下篇 0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启&#xff0c;然后使用addlashes函数对单引号等特殊字符进行转义。但仅仅使用这样的防护是存在很多盲点的&#xff0c;接上篇http://www…...