II2C协议+Oled屏幕ssd1306

IIC协议

  1. IIC协议概述

    IIC全称Inter-Integrated Circuit (集成电路总线)是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双工同步通信方式。

  2. 特点

    • 简单性和有效性

      由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。

    • 多主控(multimastering)

      其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

  3. 构成

    IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。

    在这里插入图片描述

  4. IIC协议

    IIC总线在传输数据的过程中一共有三种类型信号,分别为:开始信号、结束信号和应答信号。

    起始位,停止位,数据位,速度。

    这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

    在这里插入图片描述

    初始(空闲)状态

    因为IIC的 SCL 和SDA 都需要接上拉电阻,保证空闲状态的稳定性;

    所以IIC总线在空闲状态下SCL 和SDA都保持高电平。

    void IIC_init()//IIC协议初始化,全部拉高
    {
    	scl = 1;
    	_nop_();
    	sda = 1;
    	_nop_();
    }
    

    开始信号:

    //产生IIC起始信号
    //1.先拉高SDA,再拉高SCL,空闲状态
    //2.拉低SDA
    void IIC_Start()         //启动信号
    
    {
           sda=1; //确保SDA线为高电平
           _nop_();
           scl=1;  //确保SCL高电平
           _nop_();
           sda=0; //在SCL为高时拉低SDA线,即为起始信号
           _nop_();
           scl=0;   //钳住I2C总线,准备发送或接收数据 
        
    }
    

    停止信号:

    //产生IIC停止信号
    //1.先拉低SDA,再拉低SCL
    //2.拉高SCL
    //3.拉高SDA
    //4.停止接收数据
    void IIC_Stop(void)
    {
    	scl = 1;
    	sda = 0;    //STOP:当SCL高时,数据由低变高
     	_nop_(); 
    	sda = 1;    //发送I2C总线结束信号
    	_nop_();							   	
    }
    

    在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占,其他I2C器件无法访问总线;而在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。

    在这里插入图片描述

  5. 应答信号

    每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据。

    应答信号:主机SCL拉高,读取从机SDA的电平,为低电平表示产生应答

    应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;

    应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

    在这里插入图片描述

  6. 数据发送的时序

    在这里插入图片描述

    SDA线上的数据在SCL时钟“高”期间必须是稳定的,只有当SCL线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。输出到SDA线上的每个字节必须是8位,数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

    当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位ACK, 此时才认为一个字节真正的被传输完成 ,如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

    void IIC_send_byte(char data_send)
    {
    	int i;
    	for(i=0;i<8;i++){
    		scl = 0;//拉低,才可以进行sda的变化
    		sda = data_send & 0x80;//将字节的最高位给sda
    		_nop_();//延时
    		scl = 1;//拉高开始发送
    		_nop_();//给数据发送的时间
    		
    		data_send << 1;//字节数据左移一位
    	}
    }
    

OLED

OLED,即有机发光二极管( Organic Light Emitting Diode )。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

在这里插入图片描述

Oled的IIC协议

在这里插入图片描述

!在这里插入图片描述

  1. 从属地址(Slave Address)格式为:b0111 10(SA0)(RW#)

    SA0:0或1可以分别代表两个oled

    RW#:0代表设置为写入模式

    ∴Slave Address:0x78

  2. Control Byte:(Co)(D/C)000000

    Co为0

    D/C为0写入命令:0x00;

    D/C为1写入数据:0x70;

写命令/数据的代码:

/*
1. start()
2. 写入 b0111 1000 0x78
3. ACK
4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据
5. ACK
6. 写入指令/数据
7. ACK
8. STOP
*/
void Oled_Write_Cmd(char data_cmd)
{
	//1. start()
	IIC_start();
	//2. 写入 从机地址b0111 1000 0x78
	IIC_send_byte(0x78);
	//3. ACK
	IIC_ack();
	//4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据
	IIC_send_byte(0x00);
	//5. ACK
	IIC_ack();
	//6. 写入指令/数据
	IIC_send_byte(data_cmd);
	//7. ACK
	IIC_ack();
	//8. STOP
	IIC_stop();
}
void Oled_Write_Data(char data_data)
{
	//1. start()
	IIC_start();
	//2. 写入 从机地址b0111 1000 0x78
	IIC_send_byte(0x78);
	//3. ACK
	IIC_ack();
	//4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据
	IIC_send_byte(0x40);
	//5. ACK
	IIC_ack();
	//6. 写入指令/数据
	IIC_send_byte(data_data);
	//7. ACK
	IIC_ack();
	//8. STOP
	IIC_stop();
}

最为常见的GDDRAM寻址模式——页模式

GDDRAM是位映射静态RAM,大小为 128x64 位。GDDRAM分为8页(PAGE0~PAGE7),每页内 1个SEG对应1Byte数据,一页由 128 Byte 组成。一帧显示数据为 1024 Byte(1KB)。**即屏幕每8行像素点(8PIXEL)记为一页(PAGE),64行即为8页,则屏幕变为128列(ROW)8页(PAGE),**若要显示整个屏幕,则需要1288个1字节数。
在这里插入图片描述

页寻址模式下,寻址只在一页(PAGEn)内进行,地址指针不会跳到其他页。每次向GDDRAM写入1byte显示数据后,列指针会自动+1。**当128列都寻址完之后,列指针会重新指向SEG0而页指针仍然保持不变。**通过页寻址模式我们可以方便地对一个小区域内数据进行修改。

在这里插入图片描述

设置页寻址模式

在这里插入图片描述

配置成页寻址模式需要两条指令

Oled_Write_Cmd(0x20);//Set Memory
Oled_Write_Cmd(0x02);//页寻址模式

页地址选择

在这里插入图片描述

页地址为:1011 0xxx
Oled_Write_Cmd(0xB0);//第一页

在这里插入图片描述

确定列的位置
Oled_Write_Cmd(0x00);
Oled_Write_Cmd(0x10);//第1列

Oled_Write_Cmd(0x0F);
Oled_Write_Cmd(0x17);//第128列

代码:显示一个点

void main()
{
	IIC_init();//IIC初始化
	Oled_Init();//OLED初始化

	Oled_Write_Cmd(0x20);
	Oled_Write_Cmd(0x02);//确认页寻址模式

	Oled_Clear();//清屏函数
	
	Oled_Write_Cmd(0xB0);//选择PAGE0   1011 0000
	
	Oled_Write_Cmd(0x00);
	Oled_Write_Cmd(0x10);//第0列

	Oled_Write_Data(0x08);//显示一个点

	while(1);
}

代码:显示一个A

/*--  文字:  A  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
char A1[8] = {0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00};
char A2[8] = {0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20};
void main()
{
	int i;
	IIC_init();//IIC初始化
	Oled_Init();//OLED初始化

	Oled_Write_Cmd(0x20);
	Oled_Write_Cmd(0x02);//确认页寻址模式

	Oled_Clear();//清屏函数

	//选择PAGE0   1011 0000  0xB0	第0列
	Oled_Write_Cmd(0xB0);
	Oled_Write_Cmd(0x00);
	Oled_Write_Cmd(0x10);
	for(i=0;i<8;i++){
		Oled_Write_Data(A1[i]);
	}	
	//选择PAGE1   1011 0001   0xB1	第0列
	Oled_Write_Cmd(0xB1);
	Oled_Write_Cmd(0x00);
	Oled_Write_Cmd(0x10);
	for(i=0;i<8;i++){
		Oled_Write_Data(A2[i]);
	}	

	while(1);
}

代码:实现一个图片

/*--  调入了一幅图像:D:\Desktop\比奇堡图像.bmp  --*/
/*--  宽度x高度=128x64  --*/
code unsigned char image[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x10,0xD0,0xD0,0xF0,0x1E,0x13,0x18,0x08,0x08,0x08,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0x70,0x38,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x40,0x7F,0x40,0xC0,0x41,0x41,0x61,0x3B,0x0E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,
0x20,0x38,0x28,0x2C,0x26,0x23,0x21,0x20,0x21,0x23,0x26,0x24,0x2C,0x28,0x28,0xA0,
0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
0x04,0x06,0x02,0x03,0x01,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x04,
0x04,0x04,0x84,0xC4,0x64,0x34,0xFF,0x24,0x64,0xC4,0x84,0x04,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFC,0x47,0x40,0x40,0x40,0x60,0x20,0x20,0x20,0x20,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x80,0xC0,0x70,0x18,0x0C,0x06,0x02,0x03,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFE,0x04,0x04,0x04,0x04,0x04,0x0C,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x04,
0x06,0x83,0x01,0x00,0x00,0x0F,0x01,0x00,0x00,0x00,0x01,0x03,0x02,0x06,0x0C,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,
0x1F,0x10,0x10,0x10,0x10,0x18,0x08,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x10,0x11,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7F,0x40,0x60,0x20,0x30,0x10,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x78,0x60,0x20,0x30,0x10,0x18,0x08,0x0C,0x04,
0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x3C,
0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x03,0x03,0x06,0x04,0x04,0x04,0x06,0x06,0x03,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void Oled_show_image(unsigned char *image )
{
	unsigned int i,j;
	for(i=0;i<8;i++){
		Oled_Write_Cmd(0xB0 + i);//page
		Oled_Write_Cmd(0x00);
		Oled_Write_Cmd(0x10);//从第0列开始
		for(j=(128 * i);j<(128 *( i+1));j++){
			Oled_Write_Data(image[j]);
		}
	}

}
void main()
{
	IIC_init();//IIC初始化
	Oled_Init();//OLED初始化

	Oled_Write_Cmd(0x20);
	Oled_Write_Cmd(0x02);//确认页寻址模式

	Oled_Clear();//清屏函数

	Oled_show_image(image);//显示图片
	while(1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/529251.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录 jdk的体系结构图Java语言的跨平台的特性&#xff0c;怎么实现的&#xff1f;jvm内部组成呢&#xff1f;pc的值怎么变得&#xff1f;main方法的栈帧有一点点区别&#xff0c;Math()是new出来的&#xff0c;放在堆区&#xff0c;这个堆区的math和我们栈帧中的局部变量表…

B端:权限管理,远非增删改查审,一文告诉你细节。

增删改查审是B系统权限的常用功能&#xff0c;但绝非是全部功能&#xff0c;权限管理从属于用户管理体系&#xff0c;本文就详细分享权限管理都有啥&#xff0c;该如何设计。 一、什么是权限管理 B端的权限管理是指针对企业内部员工或合作伙伴的权限控制和管理。这包括对员工…

HarmonyOS 应用开发-使用colorPicker实现背景跟随主题颜色转换

介绍 本示例介绍使用image库以及effectKit库中的colorPicker对目标图片进行取色&#xff0c;将获取的颜色作为背景渐变色&#xff0c;通过swiper组件对图片进行轮播&#xff0c; 效果图预览 使用说明 直接进入页面&#xff0c;对图片进行左右滑动&#xff0c;或者等待几秒&a…

YOLOv5标签值含义根据标签将检测框色块替换(马赛克)

以一个检测人脸的图片为例&#xff1a; 检测后生成的标签txt如下&#xff0c; 此时&#xff0c;如何根据标签值将检测到的人脸同色块替换呢&#xff1f; 关键是获取检测框的左上角坐标和右下角坐标。 img Image.open(D:/PythonWokspace/JINX/datasets_transform/dataset/im…

MySQL-7.mysql约束

约束用于确保数据库中的数据满足特定的商业规则。 MySQL约束包含五种&#xff1a;not null、unique、primary key、foreign key、check 7.1 primary key 主键 字段名 字段类型 primary key 用于唯一的标识表的行数据&#xff0c;当定义主键约束后&#xff0c;该列不能重复。 pr…

赛氪网成为中国翻译协会理事单位

环球赛乐(北京)科技有限公司&#xff08;赛氪网&#xff09;正式成为中国翻译协会理事单位&#xff01; 中国翻译协会&#xff0c;简称TAC&#xff0c;自1982年成立以来&#xff0c;始终致力于推动全国翻译事业的发展。作为一个由翻译工作相关的机关、企事业单位、社会团体及个…

第十课 Excel

最上方标题栏&#xff1a; 显示共工作薄名称&#xff0c;如果显示兼容模式是没有办法使用高级功能的。分辨高版本和低版本可以通过后缀名进行分辨&#xff1b;显示xlsx就是高版本工作薄&#xff0c;如果显示xls的话就是低版本工作薄了。如果同事老板都使用的是低版本的话我们发…

单点登录系统设计

一、介绍 token鉴权最佳的实践场景就是在单点登录系统上。 在企业发展初期&#xff0c;使用的后台管理系统还比较少&#xff0c;一个或者两个。 以电商系统为例&#xff0c;在起步阶段&#xff0c;可能只有一个商城下单系统和一个后端管理产品和库存的系统。 随着业务量越来…

openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

文章目录 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 Plan Hint的结果会体现在计划的变化上&#xff0c;可以通过explain来查看变化。 …

transformer上手(1) —— transformer介绍

1 起源与发展 2017 年 Google 在《Attention Is All You Need》中提出了 Transformer 结构用于序列标注&#xff0c;在翻译任务上超过了之前最优秀的循环神经网络模型&#xff1b;与此同时&#xff0c;Fast AI 在《Universal Language Model Fine-tuning for Text Classificat…

MQ的延迟队列

1&#xff0c;场景 1.定时发布文章 2.秒杀之后&#xff0c;给30分钟时间进行支付&#xff0c;如果30分钟后&#xff0c;没有支付&#xff0c;订单取消。 3.预约餐厅&#xff0c;提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间&#xff1a; 7*30 * 60 * …

【STL】顺序容器与容器适配器

文章目录 1顺序容器概述1.1array1.2forward_list1.3deque 2.如何确定使用哪种顺序容器呢&#xff1f;3.容器适配器的概念4.如何定义适配器呢&#xff1f; 1顺序容器概述 给出以下顺序容器表&#xff1a; 顺序容器类型作用vector可变大小的数组&#xff0c;支持快速访问&#…

Dev-C++详细安装教程及中文设置(附带安装包链接)

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍*************安装包链接在文章末尾***************** Dev-C详细安装教程…

指针 运算偏移

思维导图&#xff1a; 题目&#xff1a; 1.变量的指针&#xff0c;其含义是指该变量的 B 。 A&#xff09;值 B&#xff09;地址 C&#xff09;名 D&#xff09;一个标志 2.已有定义int k2;int *ptr1,*ptr2;且ptr1和ptr2均…

【实用工具】使用飞书机器人监控工程日志

1.创建一个飞书群聊&#xff0c;设置-->群机器人-->添加机器人-->自定义机器人-->修改机器人名称-->添加 2.复制webhook地址 3.编写日志请求代码 import logging import requests import json import os from datetime import datetime import time import sub…

机器-学习

获取数据数据处理特征工程机器学习模型调优 一&#xff1a;机器学习的定义 二&#xff1a;工作流程 三&#xff1a;工作流程解释 pandas numpy matplotlib 四&#xff1a;机器学习算法分类 4.1 监督学习 4.1.2 回归问题 目标值是连续的 4.1.2 分类问题 目标值是离散的 4.2…

软件测试面试真的很水的,不用焦虑

文档获取方式&#xff1a; 这份文档&#xff0c;对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库&#xff0c;这个仓库也陪伴我走过了最艰难的路程&#xff0c;希望也能帮助到你&#xff01;以上均可以分享&#xff0c;点击下方小卡片免费获取。

网工内推 | 深信服、宁德时代,最高20K招安全工程师,包吃包住

01 深信服科技 招聘岗位&#xff1a;安全服务工程师 职责描述&#xff1a; 1.负责现场安全服务项目工作内容&#xff0c;包含渗透测试、安全扫描、基线核查、应急响应等&#xff1b; 2.协助用户完成安全测试漏洞整改、复测工作&#xff1b; 3.为用户提供网络、主机、业务系统等…

Redis高级-分布式缓存

分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题&#xff1a; 0.目标 1.Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;…

Mogdb双网卡同步最佳实践

大家都知道Oracle数据库无论是单机还是RAC集群在进行生产部署实施时&#xff0c;我们都会对网卡做冗余考虑&#xff0c;比如使用双网卡&#xff0c;比如public、心跳网络。这样的目的主要是为了安全&#xff0c;避免淡点故障。当然也网卡Bond不仅是可以做主备还可以支持负载均衡…