会qt怎么做网站/怎样在网上推广自己的产品
目录
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会有变化。
相关文章:

单片机第二季:温度传感器DS18B20
目录 1,DS18B20介绍 2,DS18B20数据手册 2.1,初始化时序 2.2,读写时序 3,DS18B20工作流程 4,代码 1,DS18B20介绍 DS18B20的基本特征: (1)内置集成ADC,外部数字接…...

抓包工具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、作用 监控浏…...

监控基本概念
监控:这个词在不同的上下文中有不同的含义,在讲到监控MySQL或者监控Redis时,这里只涉及数据采集和可视化,不涉及告警引擎和事件处理。要是监控系统的话,不但包括数据采集和可视化,而且也包括告警和事件发送…...

【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
文章目录 🍀排序的概念及引用🐱👤排序的概念🐱👓排序运用🐱🐉常见的排序算法 🌴插入排序🎋基本思想:🛫直接插入排序📌算法步骤&…...

【Linux】高级IO --- Reactor网络IO设计模式
人其实很难抵制诱惑,人只能远离诱惑,所以千万不要高看自己的定力。 文章目录 一、LT和ET模式1.理解LT和ET的工作原理2.通过代码来观察LT和ET工作模式的不同3.ET模式高效的原因(fd必须是非阻塞的)4.LT和ET模式使用时的读取方式 二…...

Agisoft Metashape相机标定笔记
Lens Calibration(镜头标定) 使用Metashape进行自动相机标定是可能的。Metashape使用LCD显示屏作为标定目标(可选:使用打印的棋盘格图案,但需保证它是平坦的且单元格是正方形)。 相机标定步骤支持全相机标定矩阵的估计ÿ…...

vue-cropper在ie11下选择本地图片后,无显示、拒绝访问的问题
问题:vue-cropper在ie11下选择本地图片后,网页上并未显示出图片,打开F12有报错:拒绝访问blabla的。但是在chrome下一切正常。 开发环境:node14.17.5 , vue2 , vue-cropper0.6.2 , macOS big sur 11.4(M1). 解决办法&…...

Excel VSTO开发11-自定义菜单项
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 11 自定义菜单项 自定义菜单项可以在插件启动时候添加,即增加到ThisAddIn_Startup() 内。 下面以具体代码说明&#x…...

stm32之30.DMA
DMA(硬件加速方法)一般用于帮运比较大的数据(如:摄像头数据图像传输),寄存器-》DMA-》RAM 或者 RAM-》DMA-》寄存器提高CPU的工作效率 源码-- #include "myhead.h" #include "adc.h"#…...

【LeetCode75】第四十九题 数组中的第K个最大元素
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目很简单,就是给我们一个数组,让我们返回第K大的元素。 那么很直观的一个做法就是我们直接对数组进行降序排序…...

嵌入式面试笔试刷题(day14)
文章目录 前言一、进程控制块1.PCB控制块的作用2.PCB的存储位置 二、进程的三级映射三、return , exit, pthread_exit四、pthread_join作用五、互斥锁和信号量的区别六、怎么判断链表是否有环总结 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制…...

好用免费的Chat GPT(亲测有用)
1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版,点击登陆后,每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…...

SpringBoot项目--电脑商城【上传头像】
一、易错点 1.错误写法: 把文件存到数据库中,需要图片时访问数据库,数据库将文件解析为字节流返回,最后写到本地的某一个文件.这种方法太耗费资源和时间了 2.正确写法: 将对应的文件保存在操作系统上,然后再把这个文件路径记录下来,因为在记录路径的…...

优化SOCKS5的方法
在今天的互联网世界中,保护个人隐私和提升网络速度至关重要。作为一种常用的代理协议,SOCKS5代理服务器不仅可以保护您的隐私,还可以实现更快速的网络访问。本文将为您介绍一些优化SOCKS5代理服务器的方法,以提高网络速度和安全性…...

使用 HelpLook Chatbot,让AI聊天机器人变成销售经理
想要增强AI聊天机器人销售技巧的话,我们需要一个强大的搭建工具来帮助我们增加客户互动,通过很多的客户互动数据来支撑和锻炼我们的AI聊天机器人。在本篇文章中,looklook将会系统地来说说该如何定制聊天机器人的行为。 使用AI聊天机器人的好处…...

MT9700 80mΩ,可调快速响应限流配电开关芯片
MT9700 80mΩ,可调快速响应限流配电开关芯片 特征 符合USB规范 集成80mΩ电源MOSFET 低电源电流 15μA典型开启状态 1μA典型关闭状态 宽输入电压Range:2.4V到5.5V 快速瞬态响应:<2μs 反向电流流阻塞 热关机保护 热插件应…...

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 消息生产…...

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…...

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…...

LeetCode——贪心篇(一)
刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 455. 分发饼干 376. 摆动序列 53. 最大子数组和 122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II 1005. K 次取反后最大化的数组和 455. 分发饼干 假设你是…...

2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策
1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…...

【理解线性代数】(四)线性运算的推广与矩阵基础
1. 数值加法和乘法 数值加法与乘法,是小学数学课程中的基本数学运算。例如: 加法:112 乘法:2*24 在这个知识层次下,运算的基本单位是数字。 2. 从数值到向量 数值加法,可以看作一维空间中的向量加法&…...

C# 什么是继承和派生
C# 什么是继承和派生 在 C# 中,继承(Inheritance)是一种机制,它允许一个类(子类)从另一个类(父类)中继承属性和方法。这种关系使得子类可以重用父类的代码,同时可以在子…...

无涯教程-JavaScript - HEX2BIN函数
描述 HEX2BIN函数将十六进制数转换为二进制数。 语法 HEX2BIN (number, [places])争论 Argument描述Required/Optionalnumber 您要转换的十六进制数。 数字不能超过10个字符(40位)。数字的最高有效位是符号位(从右数第40位)。其余的39位是幅度位。 负数使用二进制补码表示。…...

前端面试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…...

OceanBase社区版4.x核心技术解密
数字化时代,各行各业的数据量呈现爆发式增长,对于海量数据价值的挖掘和应用,正成为推动创新的主要力量,与此同时,数据计算复杂度正在提升。在此背景下,对于数据处理的基石数据库而言,正面临市场…...

快速安装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…...

[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…...

代码随想录训练营第五十七天|647. 回文子串、516.最长回文子序列
647. 回文子串 题目链接/文章讲解/视频讲解:代码随想录 1.代码展示 //647.回文子串 int countSubstrings(string s) {//step1 构建dp数组,明确dp数组的含义,dp[i][j]的含义是在下标为i和j区间内的字串是否为回文串vector<vector<bool&…...

对线程池设置做压测
线程池代码 Configuration public class ThreadPoolConfig {// 核心线程池大小private int corePoolSize 24;// 最大可创建的线程数private int maxPoolSize 25;// 队列最大长度private int queueCapacity 100;// 线程池维护线程所允许的空闲时间private int keepAliveSeco…...