单片机第二季:温度传感器DS18B20
目录
1,DS18B20介绍
2,DS18B20数据手册
2.1,初始化时序
2.2,读写时序
3,DS18B20工作流程
4,代码
1,DS18B20介绍
DS18B20的基本特征:
(1)内置集成ADC,外部数字接口,也就是可以直接与单片机的数字接口连接,DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;
(2)单总线数字接口,布线成本低,独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条线即可实现微处理器与DS18B20 的双向通讯;
(3)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;
(4)数字值温度分辨率位数可软件设置,可根据需要设置分辨率位数,可编程的分辨率为9~12 位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃ 和0.0625℃,可实现高精度测温;
(5)温度阈值报警功能,且阈值可内置存储掉电不丢失;
(6)在9 位分辨率时最多在93.75ms 内把温度转换为数字,12 位分辨率时最多在750ms 内把温度值转换为数字,速度更快,DS18B20温度采集是由主CPU控制,需要采集温度时才工作;
(7)内置唯一64位序列码,CPU可以单线串联无限多个DS18B20,CPU通过序列码识别与哪个DS18B20通信,DS18B20 支持多点组网功能,多个DS18B20 可以并联在唯一的三线上,实现组网多点测温;
(8)支持VDD供电,或通过数据总线及内部电容实现寄生电源供电,也就是可以通过数据线(DQ)来供电,如果通过数据线供电,数据线在不传输数据时,需要拉高,否则如果内部电容没电时DS18B20就不能工作了;
(9)测量结果直接输出数字温度信号,以"一根总线"串行传送给CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力
使用到的三根线是GND(接地)、DQ(数据线)、VCC(电源线),当然也可以只使用GND和DQ。
综合评价:
(1)DS18B20是很多年前的东西了;
(2)现在趋向于温度+湿度的综合传感器;
(3)现实应用一般低端用热敏电阻、热电偶,高端用精密传感器;
(4)学习重点和难点是单总线协议的时序编程实现;
2,DS18B20数据手册
DS18B20数据手册
上图为DS18B20的内部框图。内部的64位的ROM存储其独一无二的序列号。暂存存储器(The scratchpad memory)包含了存储有数字温度结果的2个字节宽度的温度寄存器。另外,暂存存储器还提供了一个字节的过温和低温(TH和TL)温度报警寄存器和一个字节的配置寄存器。配置寄存器允许用户自定义温度转换为9、10、11、12位精度。过温和低温(TH和TL)温度报警寄存器是非易失性的(EEPROM),所以其可以在设备断电的情况下保存。
DS18B20的另外一个特性就是可以无需外部电源供电。当数据线DQ为高的时候由其为设备供电。总线拉高的时候为内部电容(Spp)充电,当总线拉低是由该电容向设备供电。这种由1-Wire总线为设备供电的方式称为“寄生电源”。此外,DS18B20也可以由外部电源通过VDD供电。
DS18B20的核心功能是直接温度-数字测量。其温度转换可由用户自定义为9、10、11、12位精度分别为0.5℃、0.25℃、0.125℃、0.0625℃分辨率。值得注意的是,上电默认为12位转换精度。DS18B20上电后工作在低功耗闲置状态下。主设备必须向DS18B20发送温度转换命令[44h]才能开始温度转换。温度转换后,温度转换的值将会保存在暂存存储器的温度寄存器中,并且DS18B20将会恢复到闲置状态。如果DS18B20是由外部供电,当发送完温度转换命令[44h]后,主设备可以执行“读数据时序”,若此时温度转换正在进行DS18B20将会响应“0”,若温度转换完成则会响应“1”。如果DS18B20是由“寄生电源”供电,该响应的技术将不能使用,因为在整个温度转换期间,总线必须强制拉高。
ROM 中的64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列号。64 位光刻ROM 的排列是:开始8 位(28H)是产品类型标号,接着的48 位是该DS18B20 自身的序列号,最后8 位是前面56 位的循环冗余校验码。光刻ROM 的作用是使每一个DS18B20 都各不相同,这样就可以实现一根总线上挂接多个DS18B20 的目的。
DS18B20 温度传感器的内部存储器包括一个高速的暂存器RAM 和一个非易失性的可电擦除的EEPROM,后者存放高温度和低温度触发器TH、TL 和配置寄存器。
配置寄存器是配置不同的位数来确定温度和数字的转化,配置寄存器结构如下:
低五位一直都是"1",TM 是测试模式位,用于设置DS18B20 在工作模式还是在测试模式。在DS18B20 出厂时该位被设置为0,用户不需要去改动。R1 和R0 用来设置DS18B20 的精度(分辨率),可设置为9,10,11 或12 位,对应的分辨率温度是0.5℃,0.25℃,0.125℃和0.0625℃。R0 和R1 配置如下图:
在初始状态下默认的精度是12 位,即R0=1、R1=1。高速暂存存储器由9 个字节组成,其分配如下:
当温度转换命令(44H)发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0 和第1 个字节。存储的两个字节,高字节的前5 位是符号位S,单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如下:
如果测得的温度大于0,这5 位为‘ 0’,只要将测到的数值乘以0.0625(默认精度是12 位)即可得到实际温度;如果温度小于0,这5 位为‘ 1’,测到的数值需要取反加1 再乘以-0.0625 即可得到实际温度。温度与数据对应关系如下:
比如我们要计算+85 度,数据输出十六进制是0X0550,因为高字节的高5位为0,表明检测的温度是正温度,0X0550 对应的十进制为1360,将这个值乘以12 位精度0.0625,所以可以得到+85 度。
知道了怎么计算温度,接下来我们就来看看如何读取温度数据,由于DS18B20是单总线器件,所有的单总线器件都要求采用严格的信号时序,以保证数据的完整性。DS18B20 时序包括如下几种:初始化时序、写(0 和1)时序、读(0和1)时序。DS18B20 发送所有的命令和数据都是字节的低位在前。这里我们简单介绍这几个信号的时序:
2.1,初始化时序
单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480us(该时间的范围可以从480 到960 微妙),以产生复位脉冲。接着主机释放总线,外部的上拉电阻将单总线拉高,延时15~60 us,并进入接收模式。接着DS18B20 拉低总线60~240 us,以产生低电平应答脉冲,若为低电平,还要做延时,其延时的时间从外部上拉电阻将单总线拉高算起最少要
480 微妙。初始化时序图如下:
注意:主机释放总线是指主机将这个port置1,因为port置1后可以被从设备拉低,但如果port被置0,就不能被从设备拉高,因此释放总线是将这个port置1。
由上述初始化时序,编写初始化函数代码:
//DS18B20初始化
unsigned char ds18b20_init()
{DSPORT = 0; //主设备拉低总线,发送复位脉冲,持续时间超过480usvoid delay500us(void) //误差 -0.859028845284us{unsigned char a,b;for(b=1;b>0;b--)for(a=227;a>0;a--);}DSPORT = 1; //释放总线unsigned char i = 0;while(DSPORT) //检测DS18B20是否在一定时间内拉低总线,//根据时序图判断最长时间为300us{if(i>20){return 0; //超过一定时间总线未被拉低,说明DS18B20没有发送存在脉冲}void delay20us(void) //误差 -0.468396780902us{unsigned char a,b;for(b=3;b>0;b--)for(a=1;a>0;a--);}i++;}return 1; //DS18B20在一定时间内响应了 }
初始化就是,主机发送复位脉冲,从机发送存在脉冲,双方都收到后,初始化完成。
2.2,读写时序
下图为写时序图:
写时序有两种情况:“写1”时段和“写0”时段。主设备通过写1时段来向DS18B20中写入逻辑1以及通过写0时段来向DS18B20中写入逻辑0。每个写时段最小必须有60us的持续时间且独立的写时段间至少有1us的恢复时间。
为了形成写1时段,在将1-Wire总线拉低后,主设备必须在15us之内释放总线。当总线释放后,5kΩ的上拉电阻将总线拉至高。为了形成写0时段,在将1-Wire总线拉低后,在整个时段期间主设备必须一直拉低总线(至少60us)。
在主设备初始化写时段后,DS18B20将会在15us至60us的时间窗口内对总线进行采样。如果总线在采样窗口期间是高电平,则逻辑1被写入DS18B20;若总线是低电平,则逻辑0被写入DS18B20。
写时序对应代码:
//DS18B20写命令函数void ds18b20_write(unsigned char data)
{unsigned char i,j;for(j = 0;j<8;j++){DSPORT = 0; //拉低总线,开始写时序,至少1usi++;DSPORT = data & 0x01; //从低字节开始void delay65us(void) //持续至少60us{unsigned char a;for(a=28;a>0;a--);}DSPORT = 1; //一个写周期后,至少间隔1us给总线恢复时间data >>= 1; //数据左移1位}
}
下图为读时序图:
仅在读时段期间DS18B20才能向主设备传送数据。因此,主设备在执行完读暂存寄存器[BEh]或读取供电模式[B4h]后,必须及时地生成读时段,这样DS18B20才能提供所需的数据。此外,主设备可以在执行完转换温度[44h]或拷贝EEPROM[B8h]命令后生成读时段,以便获得在“DS18B20功能命令”章节中提到的操作信息。
每个读时段最小必须有60us的持续时间且独立的写时段间至少有1us的恢复时间。读时段通过主设备将总线拉低超过1us再释放总线来实现初始化。当主设备初始化完读时段后,DS18B20将会向总线发送0或者1。DS18B20通过将总线拉至高来发送逻辑1,将总线拉至低来发送逻辑0。当发送完0后,DS18B20将会释放总线,则通过上拉电阻该总线将会恢复到高电平的闲置状态。从DS18B20中输出的数据在初始化读时序后仅有15us的有效时间。因此,主设备在开始改读时段后的15us之内必须释放总线,并且对总线进行采样。
//DS18B20 读命令函数unsigned char DS18B20_read()
{unsigned char byte,bi;unsigned char i,j;for(j=0; j<8; j++){DSPORT = 0; //拉低总线,开始时序i++;DSPORT = 1; //释放总线void delay6us(void) //延时6us等待总线上数据稳定{unsigned char a;for(a=1;a>0;a--);}bi = DSPORT; //要在15us内读取byte = (byte>>1)|(bi<<7);void delay45us(void) //延时至少45us{unsigned char a;for(a=19;a>0;a--);}}return byte;
}
3,DS18B20工作流程
温度获取流程:
DS18B20不会主动进行温度测量, 需要主控主动发起温度转换命令,这是因为温度转换本身需要耗电的,所以设计为平时待机,收到温度转换命令后才会进行温度AD转换;
主控和DS18B20之间通讯是分周期的,让DS18B20进行温度转换就是一个周期。周期包含初始化和N个命令(每个周期的开始都有初始化);
初始化主要探测目标DS18B20是否存在,若存在将芯片初始化;
命令很重要,DS18B20是一个典型的“命令-响应”型外设;这种外设的关键是命令集;
ROM操作指令:
DS18B20支持多个芯片串联在一个总线上,就是所谓的单总线协议,需要主控区分总线上多个DS18B20,因此需要ROM操作指令来完成这个任务;
ROM操作指令和温度采集一点关系都没有,所以当总线上只有一个DS18B20时,不需要管ROM操作指令;
系统中总线上有多个DS18B20,需要借助ROM操作指令来区分多个DS18B20,可能需要多条ROM操作指令来完成;
只有一个DS18B20时,使用SKIP ROM (0xCC)忽略;
功能指令:
ROM操作指令是为了在单总线上多个DS18B20中挑选那个我们要操作的DS18B20;
功能指令是为了和选定的DS18B20进行温度采样,常用温度转换指令和温度读取指令;
4,代码
时序代码:
#include "timesires.h"
#include "uart.h"void delay500us() //误差 -0.859028845284us
{unsigned char a,b;for(b=1;b>0;b--)for(a=227;a>0;a--);
}void delay20us(void) //误差 -0.468396780902us
{unsigned char a,b;for(b=3;b>0;b--)for(a=1;a>0;a--);
}void delay65us() //持续至少60us
{unsigned char a;for(a=28;a>0;a--);
}void delay6us(void) //延时6us等待总线上数据稳定
{unsigned char a;for(a=1;a>0;a--);
}void delay45us(void) //延时至少45us
{unsigned char a;for(a=19;a>0;a--);
}void delay1ms(void) //误差 -0.651041666667us
{unsigned char a,b;for(b=102;b>0;b--)for(a=3;a>0;a--);
}void delay750ms(void) //误差 -0.000000000171us
{unsigned char a,b,c;for(c=37;c>0;c--)for(b=66;b>0;b--)for(a=140;a>0;a--);
}//DS18B20初始化
unsigned char ds18b20_init()
{unsigned char i = 0;DSPORT = 0; //主设备拉低总线,发送复位脉冲,持续时间超过480usdelay500us();DSPORT = 1; //释放总线while(DSPORT) //检测DS18B20是否在一定时间内拉低总线,//根据时序图判断最长时间为300us{if(i>20){return 0; //超过一定时间总线未被拉低,说明DS18B20没有发送存在脉冲}delay20us();i++;}return 1; //DS18B20在一定时间内响应了 }//DS18B20写命令函数void ds18b20_write(unsigned char cmd)
{unsigned char i = 0,j = 0;for(j = 0;j<8;j++){DSPORT = 0; //拉低总线,开始写时序,至少1usi++;DSPORT = cmd & 0x01; //从低字节开始delay65us();DSPORT = 1; //一个写周期后,至少间隔1us给总线恢复时间cmd >>= 1; //数据左移1位}
}//DS18B20 读命令函数unsigned char DS18B20_read()
{unsigned char byte = 0,bi = 0;unsigned char i = 0,j = 0;for(j=0; j<8; j++){DSPORT = 0; //拉低总线,开始时序i++;DSPORT = 1; //释放总线delay6us();bi = DSPORT; //要在15us内读取byte = (byte>>1)|(bi<<7);delay45us();}return byte;
}void DS18B20_changeTempCmd()
{ds18b20_init();delay1ms(); //如果没有这个延时,读取的温度会有问题,用手捏着时在串口助手中看到的值不变ds18b20_write(0xcc); //跳过ROM操作指令ds18b20_write(0x44); //温度转换命令delay750ms();//delay750ms();
}void DS18B20_readTempCmd()
{ds18b20_init();delay1ms();ds18b20_write(0xcc); //跳过ROM操作指令ds18b20_write(0xbe); //温度读取命令
}unsigned int DS18B20_Temp_Read()
{unsigned int temp = 0;unsigned char tmh = 0, tml = 0;DS18B20_changeTempCmd();DS18B20_readTempCmd();tml = DS18B20_read();tmh = DS18B20_read();temp = tmh;temp <<=8;temp |= tml;return temp;}
串口代码:
#include "uart.h"// 串口设置为: 波特率9600、数据位8、停止位1、奇偶校验无
// 使用的晶振是11.0592MHz的,注意12MHz和24MHz的不行
void uart_init(void)
{// 波特率9600SCON = 0x50; // 串口工作在模式1(8位串口)、允许接收PCON = 0x00; // 波特率不加倍// 通信波特率相关的设置TMOD = 0x20; // 设置T1为模式2TH1 = 253;TL1 = 253; // 8位自动重装,意思就是TH1用完了之后下一个周期TL1会// 自动重装到TH1去TR1 = 1; // 开启T1让它开始工作
// ES = 1;
// EA = 1;
}// 通过串口发送1个字节出去
void uart_send_byte(unsigned char c)
{// 第1步,发送一个字节SBUF = c;// 第2步,先确认串口发送部分没有在忙while (!TI);// 第3步,软件复位TI标志位TI = 0;
}void uart_send_adVal(unsigned int val)
{uart_send_byte(val>>8); //AD采样的数据为12位的,首先左移8位串口输出高4位uart_send_byte(val); //再输出低8位
}
main.c
#include "timesires.h"
#include "uart.h"
#include <intrins.h>void delay1s(void) //误差 -0.000000000227us
{unsigned char a,b,c;for(c=13;c>0;c--)for(b=247;b>0;b--)for(a=142;a>0;a--);_nop_(); //if Keil,require use intrins.h
}void main()
{unsigned int ret = 0;uart_init();while(1){ret = DS18B20_Temp_Read();uart_send_adVal(ret);delay1s();}}
代码完成后遇到一个问题:用手捏着DS18B20发现在串口调试助手中看到的值不变化,
原因:DS18B20_changeTempCmd()函数中,初始化后没有进行时间延迟,直接发送ROM操作命令ds18b20_write(0xcc),增加延迟函数后串口助手中显示值当用手捏着DS18B20会有变化。
相关文章:
![](https://img-blog.csdnimg.cn/d0b9bb0a3cfb4a0faf4d4425f3b2ae11.png)
单片机第二季:温度传感器DS18B20
目录 1,DS18B20介绍 2,DS18B20数据手册 2.1,初始化时序 2.2,读写时序 3,DS18B20工作流程 4,代码 1,DS18B20介绍 DS18B20的基本特征: (1)内置集成ADC,外部数字接…...
![](https://img-blog.csdnimg.cn/775632765b6744fbbecbd8fdd097d1ab.png)
抓包工具fiddler的基础知识
目录 简介 1、作用 2、使用场景 3、http报文分析 3.1、请求报文 3.2、响应报文 4、介绍fiddler界面功能 4.1、AutoResponder(自动响应器) 4.2、Composer(设计请求) 4.3、断点 4.4、弱网测试 5、app抓包 简介 fiddler是位于客户端和服务端之间的http代理 1、作用 监控浏…...
![](https://www.ngui.cc/images/no-images.jpg)
监控基本概念
监控:这个词在不同的上下文中有不同的含义,在讲到监控MySQL或者监控Redis时,这里只涉及数据采集和可视化,不涉及告警引擎和事件处理。要是监控系统的话,不但包括数据采集和可视化,而且也包括告警和事件发送…...
![](https://img-blog.csdnimg.cn/img_convert/a25e47d23c0c51e59d851696c2be23d4.gif)
【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
文章目录 🍀排序的概念及引用🐱👤排序的概念🐱👓排序运用🐱🐉常见的排序算法 🌴插入排序🎋基本思想:🛫直接插入排序📌算法步骤&…...
![](https://img-blog.csdnimg.cn/098c7fd1537d46078098d181159134c8.png)
【Linux】高级IO --- Reactor网络IO设计模式
人其实很难抵制诱惑,人只能远离诱惑,所以千万不要高看自己的定力。 文章目录 一、LT和ET模式1.理解LT和ET的工作原理2.通过代码来观察LT和ET工作模式的不同3.ET模式高效的原因(fd必须是非阻塞的)4.LT和ET模式使用时的读取方式 二…...
![](https://img-blog.csdnimg.cn/69ae7bf7dbd24ee3ba2e6a742215ae25.png)
Agisoft Metashape相机标定笔记
Lens Calibration(镜头标定) 使用Metashape进行自动相机标定是可能的。Metashape使用LCD显示屏作为标定目标(可选:使用打印的棋盘格图案,但需保证它是平坦的且单元格是正方形)。 相机标定步骤支持全相机标定矩阵的估计ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
vue-cropper在ie11下选择本地图片后,无显示、拒绝访问的问题
问题:vue-cropper在ie11下选择本地图片后,网页上并未显示出图片,打开F12有报错:拒绝访问blabla的。但是在chrome下一切正常。 开发环境:node14.17.5 , vue2 , vue-cropper0.6.2 , macOS big sur 11.4(M1). 解决办法&…...
![](https://img-blog.csdnimg.cn/e7dedc996d474f69b3a1d2fd94bdfadb.jpeg)
Excel VSTO开发11-自定义菜单项
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 11 自定义菜单项 自定义菜单项可以在插件启动时候添加,即增加到ThisAddIn_Startup() 内。 下面以具体代码说明&#x…...
![](https://img-blog.csdnimg.cn/d6d6f2e5d9b04b80b19e22322855eebe.png)
stm32之30.DMA
DMA(硬件加速方法)一般用于帮运比较大的数据(如:摄像头数据图像传输),寄存器-》DMA-》RAM 或者 RAM-》DMA-》寄存器提高CPU的工作效率 源码-- #include "myhead.h" #include "adc.h"#…...
![](https://img-blog.csdnimg.cn/9ea53473e3e54e9cad4cf51b37b8d746.png)
【LeetCode75】第四十九题 数组中的第K个最大元素
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目很简单,就是给我们一个数组,让我们返回第K大的元素。 那么很直观的一个做法就是我们直接对数组进行降序排序…...
![](https://img-blog.csdnimg.cn/7d755e86adda46d58eacbf73eaec8772.png)
嵌入式面试笔试刷题(day14)
文章目录 前言一、进程控制块1.PCB控制块的作用2.PCB的存储位置 二、进程的三级映射三、return , exit, pthread_exit四、pthread_join作用五、互斥锁和信号量的区别六、怎么判断链表是否有环总结 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制…...
![](https://img-blog.csdnimg.cn/d63b15c8ea0041bc9d71175052ce6a70.png)
好用免费的Chat GPT(亲测有用)
1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版,点击登陆后,每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…...
![](https://img-blog.csdnimg.cn/fbf2ad3fa5c4479090bbbdd1cbd32370.png)
SpringBoot项目--电脑商城【上传头像】
一、易错点 1.错误写法: 把文件存到数据库中,需要图片时访问数据库,数据库将文件解析为字节流返回,最后写到本地的某一个文件.这种方法太耗费资源和时间了 2.正确写法: 将对应的文件保存在操作系统上,然后再把这个文件路径记录下来,因为在记录路径的…...
![](https://img-blog.csdnimg.cn/9331706a154a43aab3e85731e1899d4c.png)
优化SOCKS5的方法
在今天的互联网世界中,保护个人隐私和提升网络速度至关重要。作为一种常用的代理协议,SOCKS5代理服务器不仅可以保护您的隐私,还可以实现更快速的网络访问。本文将为您介绍一些优化SOCKS5代理服务器的方法,以提高网络速度和安全性…...
![](https://www.ngui.cc/images/no-images.jpg)
使用 HelpLook Chatbot,让AI聊天机器人变成销售经理
想要增强AI聊天机器人销售技巧的话,我们需要一个强大的搭建工具来帮助我们增加客户互动,通过很多的客户互动数据来支撑和锻炼我们的AI聊天机器人。在本篇文章中,looklook将会系统地来说说该如何定制聊天机器人的行为。 使用AI聊天机器人的好处…...
![](https://img-blog.csdnimg.cn/82733eb175814ad4bd77008d02a8fea0.png)
MT9700 80mΩ,可调快速响应限流配电开关芯片
MT9700 80mΩ,可调快速响应限流配电开关芯片 特征 符合USB规范 集成80mΩ电源MOSFET 低电源电流 15μA典型开启状态 1μA典型关闭状态 宽输入电压Range:2.4V到5.5V 快速瞬态响应:<2μs 反向电流流阻塞 热关机保护 热插件应…...
![](https://img-blog.csdnimg.cn/11d714d9ae6143a081e26e3d50894778.png)
RabbitMQ之延迟队列
RabbitMQ之延迟队列 1. 延迟队列概念2. 延迟队列使用场景3. RabbitMQ 中的 TTL3.1 消息设置 TTL3.2 队列设置 TTL3.3 两者的区别 4. 整合 SpringBoot4.1 创建项目4.2 添加依赖4.3 修改配置文件4.4 添加 Swagger 配置类 5. 队列 TTL5.1 代码架构图5.2 配置文件类代码5.3 消息生产…...
![](https://www.ngui.cc/images/no-images.jpg)
k8s部署手册-v06
一、基础配置 1.修改主机名 hostnamectl set-hostname k8s-master01 hostnamectl set-hostname k8s-master02 hostnamectl set-hostname k8s-master03 hostnamectl set-hostname k8s-node01 hostnamectl set-hostname k8s-node022.添加 主机名与IP地址解析 cat > /etc/ho…...
![](https://img-blog.csdnimg.cn/9ad9d27e707c4099ba4b744bb0e8d2b0.png#pic_center)
Qt 5.15集成Crypto++ 8.7.0(MSVC 2019)笔记
一、背景 笔者已介绍过在Qt 5.15.x中使用MinGW(8.10版本)编译并集成Crypto 8.7.0。 但是该编译出来的库(.a和.dll)不适用MSVC(2019版本)构建环境,需要重新编译(.lib或和.dll…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode——贪心篇(一)
刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 455. 分发饼干 376. 摆动序列 53. 最大子数组和 122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II 1005. K 次取反后最大化的数组和 455. 分发饼干 假设你是…...
![](https://img-blog.csdnimg.cn/13de9ce6925741909f3bfbc2583ec034.png)
2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策
1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…...
![](https://www.ngui.cc/images/no-images.jpg)
【理解线性代数】(四)线性运算的推广与矩阵基础
1. 数值加法和乘法 数值加法与乘法,是小学数学课程中的基本数学运算。例如: 加法:112 乘法:2*24 在这个知识层次下,运算的基本单位是数字。 2. 从数值到向量 数值加法,可以看作一维空间中的向量加法&…...
![](https://www.ngui.cc/images/no-images.jpg)
C# 什么是继承和派生
C# 什么是继承和派生 在 C# 中,继承(Inheritance)是一种机制,它允许一个类(子类)从另一个类(父类)中继承属性和方法。这种关系使得子类可以重用父类的代码,同时可以在子…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?be=1&origin_url=https://www.learnfk.com/guide/images/wuya.png)
无涯教程-JavaScript - HEX2BIN函数
描述 HEX2BIN函数将十六进制数转换为二进制数。 语法 HEX2BIN (number, [places])争论 Argument描述Required/Optionalnumber 您要转换的十六进制数。 数字不能超过10个字符(40位)。数字的最高有效位是符号位(从右数第40位)。其余的39位是幅度位。 负数使用二进制补码表示。…...
![](https://img-blog.csdnimg.cn/6058e5f3923547be8e8e2f1dc931ffca.png)
前端面试0906
// 请给出输出结果 function foo(){ console.log(a); } function bar(){ var a 3; console.log(this.a); foo(); } var a 2; bar(); 2 2 // 请从下面的问题中挑选3道进行回答 1. 防抖和节流分别是什么,一般用在什么场景? 防抖(Debounc…...
![](https://img-blog.csdnimg.cn/img_convert/42605178a0dd3b3ef0f16650dd162e71.png)
OceanBase社区版4.x核心技术解密
数字化时代,各行各业的数据量呈现爆发式增长,对于海量数据价值的挖掘和应用,正成为推动创新的主要力量,与此同时,数据计算复杂度正在提升。在此背景下,对于数据处理的基石数据库而言,正面临市场…...
![](https://www.ngui.cc/images/no-images.jpg)
快速安装k8s
RKE安装方式 官方文章资源地址 https://rke.docs.rancher.com/installation rke工具下载地址(arm,amd,windows都有) https://github.com/rancher/rke/releases x86的用amd64下载rke工具 https://github.com/rancher/rke/releases/download/v1.4.8/rke_li…...
![](https://www.ngui.cc/images/no-images.jpg)
[FFmpeg] 常用ffmpeg命令
去水印 ffmpeg -i water.jpeg -strict -2 -vf delogox300:y250:w56:h18:show0 no_water.jpeg 打时间戳 ffmpeg -i perf_60Hz_Raw.mp4 -vf "drawtextfontsize160:fontcolorred:text%{pts\:hms}" -c:v libx264 -an -f mp4 perf_output.mp4 -y ffmpeg -i perf_8k.mp4 -v…...
![](https://www.ngui.cc/images/no-images.jpg)
代码随想录训练营第五十七天|647. 回文子串、516.最长回文子序列
647. 回文子串 题目链接/文章讲解/视频讲解:代码随想录 1.代码展示 //647.回文子串 int countSubstrings(string s) {//step1 构建dp数组,明确dp数组的含义,dp[i][j]的含义是在下标为i和j区间内的字串是否为回文串vector<vector<bool&…...
![](https://img-blog.csdnimg.cn/7b2f3fa522c747b0b97db738bf1de10e.png)
对线程池设置做压测
线程池代码 Configuration public class ThreadPoolConfig {// 核心线程池大小private int corePoolSize 24;// 最大可创建的线程数private int maxPoolSize 25;// 队列最大长度private int queueCapacity 100;// 线程池维护线程所允许的空闲时间private int keepAliveSeco…...
网站建设服务器的选择方案/长春网站建设公司哪个好
Hbase全称为Hadoop Database,即hbase是hadoop的数据库,是一个分布式的存储系统。Hbase利用Hadoop的HDFS作为其文件存储系统,利用Hadoop的MapReduce来处理Hbase中的海量数据。利用zookeeper作为其协调工具。 本篇文章将重点介绍Hbase三个方面…...
![](/images/no-images.jpg)
网站制作上网/百度搜索官网
本想今晚由George来上PHP的课程,但由于多媒体教室还没有安排,只能晚上继续讲!昨晚的进度慢了些,是因为安装系统花了尽一个小时的时间,因此有些昨天晚上的课程今天还要继续,同时昨天由于写字的白板距离学生太…...
![](/images/no-images.jpg)
罗湖外贸网站建设/北京百度推广代运营
在php中可以使用内置函数gethostbyname获取域名对应的IP地址,比如:echo gethostbyname("www.jbxue.com");?>以上会输出域名所对应的的IP。对于做了负载与cdn的域名来讲,可能返回的结果会有不同,这点注意下。下面来说…...
![](https://img-blog.csdnimg.cn/20190428170045373.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjc1NDMy,size_16,color_FFFFFF,t_70)
学做视频的网站/百度图片
总结一下某某某页面的登录部分 1.视图部分 这是我自己对登录的理解方式,首先获取到登录按钮的点击事件,然后判断账号和密码(就是表单)不为空,如果为空的话就提示请填写完整。序列化表单,我用的是post提交习惯了, 接着…...
![](/images/no-images.jpg)
东莞市做网站的最好的是哪家的/深圳网站建设服务
一 代码编排1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。3 类和top-level函…...
![](/images/no-images.jpg)
网站欢迎页面怎么做/网络运营具体做什么
1、spring简介spring的最基本的功能就是创建对象及管理这些对象之间的依赖关系,实现低耦合、高内聚。还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还能帮我们管理最头疼的数据库事务,本身提供了一套简单的JDBC访问实…...