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

STM32/N32G455国民科技芯片驱动DS1302时钟---笔记

这次来分享一下DS1302时钟IC,之前听说过这个IC,但是一直没搞过,用了半天时间就明白了原理和驱动,说明还是很简单的。

注:首先来区分一下DS1302和RTC时钟有什么不同,为什么不直接用RTC呢?

RTC不是很精准

DS1302:用于对时间精度较严格的产品上

1.首先看下实物图长什么样

2.然后我们来看看原理图长啥样

2.1无上拉电阻的配置

2.2有上拉电阻就将端口配置成开漏输出就行

3.下面来看怎么配置代码

由于DS1302的DATA根据时序图,还要配成输入模式

所以还得写上区分

然后后面的代码就照抄就行,只要会IIC,SPI协议,这些一看就明白是什么意思啦,无非就是移位和最高/最低位判断,然后将DATA拉高或者拉低,换汤不换药,简简单单。

根据DS1302的特殊寄存器,假设现在是15秒,那么1302的寄存器里面存储的是0x15,而不是0x0F,也就是说十六进制的0xAB,表示一个十进制数,高四位A代表十位,低四位B代表个位
,但这毕竟是用16进制表示的数字,我们在单片机的代码里操作起来并不方便,我们需要转换为正儿八经的十进制

所以上面一大堆,可能看的很乱,来,我们现在来捋一捋

还是假设是15秒

好,我们来分析上面的也就是说十六进制的0xAB,表示一个十进制数,高四位A代表十位,低四位B代表个位这句话

0X15=0001 0101

高四位右移:0001 0101 >>4=0000 0001=1

第四位不动:0000 0101&0X0F

        0000 0101

 &                               ->  0000 0101 =5

        0000 1111

好,那么这不就是15秒吗?

那么就有了后面的代码

这样就非常的清晰了吧,有没有拍桌子,拍案叫绝的感觉了!

我将DS1302.C和DS1302.H的代码都复制到后面,核心重点就讲完了,毫无难度呀

DS1302.C

#include "DS1302.h"
#include "main.h"TIME Time_Hex,Time_Dec,Time_Set;#define DS1302DELAY  100const u8 Ds1302SendBuf[6] = {0x23, 0x11, 0x15, 0x13, 0x49, 0x00}; //2016unsigned char  Month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};void INPUT_SDA()
{RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA ,ENABLE);	GPIO_InitType GPIO_InitStructure;GPIO_InitStructure.Pin =  GPIO_PIN_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置使用带宽50MhzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  //输入模式GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
}void OUTPUT_SDA()
{RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA ,ENABLE);	GPIO_InitType GPIO_InitStructure;GPIO_InitStructure.Pin =  GPIO_PIN_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置使用带宽50MhzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //输出模式GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
}void uDelay(unsigned int count)
{unsigned int j;for(j=0;j<count;j++) ;	
}void SendDat_1302(u8 Dat)
{ u8 i;u8 cTmp;for(i=0;i<8;i++){ cTmp=Dat&LSB; //数据端等于tmp数据的末位值if(cTmp)    //1DS1302DAT_H;elseDS1302DAT_L; Dat>>=1;uDelay(DS1302DELAY);DS1302CLK_H;uDelay(DS1302DELAY);DS1302CLK_L;uDelay(DS1302DELAY);}
}/*写入1个或者多个字节,第1个参数是相关命令
#define WrMulti     0xbe //写入多个字节的指令代码
#define WrSingle    0x84 //写入单个字节的指令代码
第2个参数是待写入的值
第3个参数是待写入数组的指针
*/ 
void WriteByte_1302(u8 CmdDat,u8 Num,u8 *pSend)
{ u8 i=0;DS1302RST_L;uDelay(DS1302DELAY);	DS1302RST_H;SendDat_1302(CmdDat);for(i=0;i<Num;i++){ SendDat_1302(*(pSend+i));}DS1302RST_L;
}
/*读出字节,第一个参数是命令
#define RdMulti  0xbf //读出多个字节的指令代码
第2个参数是读出的字节数,第3个是指收数据数组指针
*/
void RecByte_1302(u8 CmdDat,u8 Num,u8 *pRec)
{ u8 i,j,tmp=0,cTmp;DS1302RST_L;//复位引脚为低电平uDelay(DS1302DELAY);DS1302CLK_L;uDelay(DS1302DELAY);DS1302RST_H;SendDat_1302(CmdDat); //发送命令INPUT_SDA();uDelay(DS1302DELAY);for(i=0;i<Num;i++){ for(j=0;j<8;j++){ tmp>>=1;cTmp=DS1302DAT_READ;if(cTmp)tmp|=0x80;DS1302CLK_H;uDelay(DS1302DELAY);DS1302CLK_L;       uDelay(DS1302DELAY);}*(pRec+i)=tmp;}uDelay(DS1302DELAY);OUTPUT_SDA();DS1302RST_L;//复位引脚为低电平
}
/*
当写保护寄存器的最高位为0时,允许数据写入寄存器。
写保护寄存器可以通过命令字节8E、8F来规定禁止写入/读出。写保护位不能在多字节传送模式下写入。
当写保护寄存器的最高位为1时,禁止数据写入寄存器。
时钟停止位操作:当把秒寄存器的第7位时钟停止位设置为0时起动时钟开始
当把秒寄存器的第7位时钟停止位设置为1时,时钟振荡器停止。根据传入的参数决定相关命令,
第一个参数:命令字,第2个参数:写入的数据
写允许命令;8EH,00H
写禁止命令;8EH,80H
振荡器允许命令;80H,00H
振荡器禁止命令;80H,80H
*/
void WrCmd(u8 CmdDat,u8 CmdWord)
{ u8* CmdBuf;CmdBuf=&CmdWord;WriteByte_1302(CmdDat,1,CmdBuf);
}void DS1302_Init(void)
{
//DS1302====================WrCmd(0x80, 0x00); //?????WrCmd(0x8C, Ds1302SendBuf[0]);WrCmd(0x88, Ds1302SendBuf[1]);WrCmd(0x86, Ds1302SendBuf[2]);//const u8 Ds1302SendBuf[6] = {0x23, 0x11, 0x15, 0x13, 0x49, 0x00}; //2016WrCmd(0x84, Ds1302SendBuf[3]);WrCmd(0x82, Ds1302SendBuf[4]);WrCmd(0x80, Ds1302SendBuf[5]);WrCmd(0x8e, 0x80);	
}void Save_TimeDate(void)
{WrCmd(WrEnDisCmd, WrEnDat); WrCmd(0x80, 0x00); WrCmd(0x8C, Time_Hex.year);WrCmd(0x88, Time_Hex.month);WrCmd(0x86, Time_Hex.day);WrCmd(0x84, Time_Hex.hour);WrCmd(0x82, Time_Hex.minute);WrCmd(0x80, Time_Hex.second);WrCmd(0x8e, 0x80);
}void Get_Time(void)
{WrCmd(0x8F,0x00);RecByte_1302(0x8D,1,(u8*)&Time_Hex.year);RecByte_1302(0x89,1,(u8*)&Time_Hex.month);RecByte_1302(0x87,1,(u8*)&Time_Hex.day);RecByte_1302(0x85,1,(u8*)&Time_Hex.hour);RecByte_1302(0x83,1,(u8*)&Time_Hex.minute);	RecByte_1302(0x81,1,(u8*)&Time_Hex.second);Time_Dec.year = (Time_Hex.year>>4)*10 + (Time_Hex.year&0x0f); 	Time_Dec.month = (Time_Hex.month>>4)*10 + (Time_Hex.month&0x0f);Time_Dec.day = (Time_Hex.day>>4)*10 + (Time_Hex.day&0x0f);Time_Dec.hour = (Time_Hex.hour>>4)*10 + (Time_Hex.hour&0x0f);Time_Dec.minute = (Time_Hex.minute>>4)*10 + (Time_Hex.minute&0x0f);Time_Dec.second = (Time_Hex.second>>4)*10 + (Time_Hex.second&0x0f);	
}void Check_date(void)
{		Time_Dec.year   = Time_Set.year; 	Time_Dec.month  = Time_Set.month;Time_Dec.day    = Time_Set.day;Time_Dec.hour   = Time_Set.hour;Time_Dec.minute = Time_Set.minute;Time_Dec.second = Time_Set.second;if(Time_Dec.month < 1)  Time_Dec.month = 1;if(Time_Dec.month > 12) Time_Dec.month = 12;if(Time_Dec.day < 1)    Time_Dec.day = 1;if(Time_Dec.day> 31)     Time_Dec.day= 31;if(Time_Dec.hour  > 23) Time_Dec.hour= 23;		 if(Time_Dec.minute  > 59) Time_Dec.minute  = 59;	if(Time_Dec.second > 60) Time_Dec.second = 0;if(Time_Dec.minute > 60) Time_Dec.minute = 0;if(Time_Dec.hour > 60) Time_Dec.hour = 0;  	if(Time_Dec.year > 99)  Time_Dec.year = 99;Month[2] = 28;if((Time_Dec.year % 4 == 0 && Time_Dec.year % 100 != 0) || (Time_Dec.year % 400 == 0) )Month[2] = 29;    if(Time_Dec.day > Month[Time_Dec.month])    Time_Dec.day = Month[Time_Dec.month];	Time_Hex.year = 		((Time_Dec.year/10)<<4) 		| (Time_Dec.year%10);Time_Hex.month = 		((Time_Dec.month/10)<<4) 		| (Time_Dec.month%10);Time_Hex.day = 			((Time_Dec.day/10)<<4) 			| (Time_Dec.day%10);Time_Hex.hour = 		((Time_Dec.hour/10)<<4) 		| (Time_Dec.hour%10);Time_Hex.minute = 	((Time_Dec.minute/10)<<4) 	| (Time_Dec.minute%10);Time_Hex.second = 	((Time_Dec.second/10)<<4) 	| (Time_Dec.second%10);
}

DS1302.H

#ifndef __DS1302_H
#define __DS1302_H#include "main.h"#define  u8 unsigned char typedef struct 
{unsigned char year  	;unsigned char month 	;unsigned char day   	;unsigned char hour  	;unsigned char minute 	;unsigned char second 	;
} TIME;#define DS1302CLK_H  		GPIO_SetBits(GPIOA,GPIO_PIN_6)
#define DS1302CLK_L  		GPIO_ResetBits(GPIOA,GPIO_PIN_6)#define DS1302DAT_H  		GPIO_SetBits(GPIOA,  GPIO_PIN_7)
#define DS1302DAT_L  		GPIO_ResetBits(GPIOA,GPIO_PIN_7)
#define DS1302DAT_READ  GPIO_ReadInputDataBit(GPIOA,  GPIO_PIN_7)#define DS1302RST_H  		GPIO_SetBits(GPIOC,  GPIO_PIN_4)
#define DS1302RST_L  		GPIO_ResetBits(GPIOC,GPIO_PIN_4)#define WrEnDisCmd  0x8e  //写允许/禁止指令代码
#define WrEnDat     0x00 //写允许数据
#define WrDisDat    0x80 //写禁止数据
#define OscEnDisCmd 0x80 //振荡器允许/禁止指令代码
#define OscEnDat    0x00 //振荡器允许数据
#define OscDisDat   0x80 //振荡器禁止数据
#define WrMulti     0xbe //写入多个字节的指令代码
#define WrSingle    0x84 //写入单个字节的指令代码
#define RdMulti     0xbf //读出多个字节的指令代码
#define RamMulti_W 	0xFE //写入RAM多个字节的指令代码
#define RamMulti_R 	0xFf //读出多个RAM字节的指令代码#define LSB         0x01 void WrCmd(u8 CmdDat,u8  CmdWord);
void WriteByte_1302(u8 CmdDat,u8 Num,u8 *pSend);
void RecByte_1302(u8 CmdDat,u8 Num,u8 *pRec);
void ReCmd(u8 CmdDat,u8 CmdWord);
void DS1302_Init(void);
void Get_Time(void);
void Save_TimeDate(void);
void Check_date(void);
#endif 

注:以上笔记仅是个人学习笔记,若对你有帮忙那么最好不过,共勉!

相关文章:

STM32/N32G455国民科技芯片驱动DS1302时钟---笔记

这次来分享一下DS1302时钟IC&#xff0c;之前听说过这个IC&#xff0c;但是一直没搞过&#xff0c;用了半天时间就明白了原理和驱动&#xff0c;说明还是很简单的。 注&#xff1a;首先来区分一下DS1302和RTC时钟有什么不同&#xff0c;为什么不直接用RTC呢&#xff1f; RTC不…...

基于PLC的污水厌氧处理控制系统(论文+源码)

1. 系统设计 污水厌氧由进水系统通过粗格栅和清污机进行初步排除大块杂质物体以及漂浮物等&#xff0c;到达除砂池中。在除砂池系统中细格栅进一步净化污水厌氧中的细小颗粒物体&#xff0c;将污水厌氧中的细小沙粒滤除后进入氧化沟反应池。在该氧化沟系统中进行生化处理&…...

Unity之NetCode多人网络游戏联机对战教程(9)--NetworkAnimator组件

文章目录 前言NetworkAnimatorAnimator的Trigger属性服务器权威模式&#xff08;Server Authoritative Mode&#xff09;客户端权威模式 (Owner Authoritative Mode)学习文档 前言 这个组件是NetCode常用的组件之一&#xff0c;NetworkAnimator跟NetworkTransform一样&#xf…...

iceoryx之Roudi

目录...

.Net(C#)常用转换byte转uint32、byte转float等

1、byte转String Encoding.ASCII.GetString(byte[]); 2、base64string转byte byte[]Base64Decoder.Decoder.GetDecoded(string); 3、byte转UInt16 方法一 (UInt16)(bytes[0] * 256 bytes[1]) 方法二 (UInt16)((bytes[0] << 8) | bytes[1]); 方法三 字节序要对…...

windows快捷方式图标变成空白

今天突然有客户说应用程序快捷方式图标变成了空白&#xff0c;就研究了一下&#xff0c;网上找了一下很多都说是什么图标缓存有问题&#xff0c;试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志&#xff0c;查了一下说是文件属性里面设置加密之后就会…...

【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池

【Linux系统编程十九】&#xff1a;匿名管道原理/模拟实现进程池 一.进程通信理解二.通信实现原理三.系统接口四.五大特性与四种情况五.应用场景--进程池 一.进程通信理解 什么是通信&#xff1f; 通信其实就是一个进程想把数据给另一个进程&#xff0c;但因为进程具有独立性…...

【全网首发】2023年NOIP真题

目录 前言 真题 结尾 前言 NOIP题目了解一下&#xff0c;后续有可能会出讲解&#xff0c;题目全部来自于洛谷 真题 第一题&#xff1a;词典 第二题&#xff1a;三值逻辑 第三题&#xff1a;双序列扩展 第四题&#xff1a; 天天爱打卡 结尾 大家可以把你的预期分数打在评论…...

【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统

一、PXE网络批量装机的介绍 1、常见的三种系统安装方式 2、回顾系统安装的过程&#xff0c;了解系统安装的必要条件 3、什么是pxe 4、搭建pxe的原理 5、Linux的光盘镜像中的isolinux中的相关文件学习 二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解 5个…...

Pandas+Matplotlib 数据分析

利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据。图表能够清楚地呈现数据性质&#xff0c; 以及数据间或属性间的关系&#xff0c;可以轻易地让人看图释义。用户通过探索图&#xff08;Exploratory Graph&#xff09;可以了解数据的…...

k8s ingress高级用法一

前面的文章中&#xff0c;我们讲述了ingress的基础应用&#xff0c;接下来继续讲解ingress的一些高级用法 一、ingress限流 在实际的生产环境中&#xff0c;有时间我们需要对服务进行限流&#xff0c;避免单位时间内访问次数过多&#xff0c;常用的一些限流的参数如下&#x…...

C语言--从键盘输入10个数字放在数组中,并输出

用scanf读取数字的时候要注意&#xff0c;可以输入一个数字&#xff0c;按一下回车&#xff0c;输入一个数字&#xff0c;按一下回车&#xff0c;也可以一次性输入完10个数据。&#xff08;中间可以用空格隔开&#xff0c;系统会自动识别&#xff09; 输出一:每按下一个数字&am…...

SSL加密

小王学习录 今日摘录前言HTTP + SSL = HTTPSSSL加密1. 对称加密2. 非对称加密 + 对称加密3. 证书今日摘录 但愿四海无尘沙,有人卖酒仍卖花。 前言 SSL表示安全套接层,是一个用于保护计算机网络中数据传输安全的协议。SSL通过加密来防止第三方恶意截取并篡改数据。在实际应用…...

一个美观且功能丰富的 .NET 控制台应用程序开源库

推荐一个美观且功能丰富的 .NET 控制台应用程序开源库&#xff0c;从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库&#xff0c;用于创建美观、功能丰富的控制台&#xff08;命令行&#xff09;应用程序。它提供了一组易于使用的 API&#xff0c;…...

DispatcherSynchronizationContext and Dispatcher

https://www.cnblogs.com/liangouyang/archive/2008/11/20/1337907.html SynchronizationContext提供一个自由线程的同步上下文&#xff0c;一个常用的用法是把UI线程的同步上下文保存起来&#xff0c;传给另一个线程&#xff0c;因为UI只能再UI线程中操作&#xff0c;在另外一…...

java类型属性set方法无法被赋值

前言 遇到一个基础的问题 方法设置属性值 失败 问题代码 有个内部类的User对象 分别使用 方式一和 方式二 设置User的属性值 发现方式一的属性并不能被设置成功 可以自行测试下 public class Test{public static void main(String[] args) {#方式一 User user new User();u…...

【2】SM2验签工具和RSA验签工具

0X01 前言 最近看了好多验签工具&#xff0c;感觉不是很好用&#xff0c;就自己造了个。 0x02 工具功能介绍 对SM2算法进行验签和RSA算分进行验签&#xff0c;签名值可以是base64&#xff0c;也可以是十六进制。 兼容各种输入。 0x03 工具使用 RSA 验签 SM2 验签 0x04 工具…...

Python (十一) 迭代器与生成器

迭代器 迭代器是访问集合元素的一种方式&#xff0c;可以记住遍历的位置的对象 迭代器有两个基本的方法&#xff1a;iter() 和 next() 字符串&#xff0c;列表或元组对象都可用于创建迭代器 字符串迭代 str1 Python str_iter iter(str1) print(next(str_iter)) print(next(st…...

通过maven命令手动上传jar私服Nexus

Nexus3在界面上传组件时报&#xff1a; Ext.JSON.decode(): Youre trying to decode an invalid JSON String: 查找了很多资料&#xff0c;都没有解决。有哪位大佬知道的评论告诉一下&#xff0c;万分感谢。 于是换成maven命令上传&#xff1a; mvn deploy:deploy-file -Dgr…...

记一次用jlink调试正常,不进入调试就不能运行的情况

一、概述 我开机会闪烁所有指示灯&#xff0c;但是重新上电时&#xff0c;指示灯并没有闪烁&#xff0c;就像"卡死"了一样。 使用jlink的swd接口进行调试&#xff0c;需要多点几次运行才能跳转到main函数里面。 调试模式第一次点击运行&#xff0c;暂停查看函数堆栈…...

搞科研、写论文,如何正确使用GPT?AIGC技术解析、提示词工程高级技巧、AI绘图、ChatGPT/GPT4应用

目录 专题一 OpenAI开发者大会最新技术发展及最新功能应用 专题二 AIGC技术解析 专题三 提示词工程高级技巧 专题四 ChatGPT/GPT4的实用案例 专题五 让ChatGPT/GPT4成为你的论文助手 专题六 让ChatGPT/GPT4成为你的编程助手 专题七 让ChatGPT/GPT4进行数据处理 专题八 …...

Java实现的插件化策略模式

Java实现的插件化策略模式 目录结构实现BaseDealAnno.java(注解)BasePluginEnum.java(枚举)BaseDealFactory.javaContextBaseDealListener.java(核心类)BaseDealHandler.java(接口)BaseAudioService.java(可扩展多个)验证目录结构 com.demo.mytest ├── strategy │ ├──…...

【jvm】MinorGC、MajorGC和FullGC

目录 一、说明二、年轻代GC(Minor GC)触发机制三、老年代GC (Major GC/Full GC)触发机制四、Full GC触发机制 一、说明 1.jvm调优的主要目的是GC的时间少一些&#xff0c;用户线程执行的时间多一些 2.主要侧重于MajorGC和FullGC&#xff0c;这两块的GC产生的暂停时间比MinorGC产…...

Redis:java和SpringBoot中使用Redis

目录 Jedis操作Redis6SpringBoot整合Redis Jedis操作Redis6 Jedis是java开发的操作redis的工具包。 引入maven依赖&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…...

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可&#xff0c;比较复杂的列表遍历暂时还没找到方法&#xff0c;只能手动创建表格了 上面是模板&#xff0c;非常简单&#xff0c;以为我们是要自己创…...

基于RFID的自动化仓储设备研发项目可行性研究报告

一、项目概况 基于RFID的自动化仓储设备研发项目&#xff0c;是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上&#xff0c;针对有色金属供应链的仓储环节进行的研发。 多年来&#xff0c;公司一直坚持以“科技金融”为核心的未来发展战略&#xf…...

ajax异步传值以及后端接收参数的几种方式

异步传值 第一种呢&#xff0c;也是最简单的一种&#xff0c;通过get提交方式&#xff0c;将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...

千年TGS服务器日志报错如何解决

大家在修改sdb文件&#xff0c;建议使用sdb修改器。注意&#xff1a;每个文件&#xff0c;每个逗号都很重要&#xff1b;只要其中哪部分少一个逗号或多一个逗号&#xff0c;都很容易发生错误。 一常见 TGS1000.LOG 错误类型&#xff0c;因不同的错误&#xff0c;错误中括号“&…...

读取Json BugFix

遇到的错误如下所示&#xff1a; 遇到的错误如下所示&#xff1a;File ~/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)344 """Decode a JSON document from s (a str beginning with345 a JSON document) and retu…...

【Gradle构件工具深度学习】

Gradle构件工具深度学习 1. 课程大纲1.1 Gradle入门1.2 与Idea整合1.3 Gradle进阶 2. 常见项目构建工具3. 安装gradle 1. 课程大纲 1.1 Gradle入门 基本介绍、常用指令、项目目录、项目应用 1.2 与Idea整合 Groovy语法、整合IDEA、搭建web工程、项目部署 1.3 Gradle进阶 生命周…...

Attention Transformer

来源老师课件&#xff0c;方便以后复习。 课参考链接&#xff1a; http://jalammar.github.io/illustrated-transformer/ 之前的知识链接&#xff1a; 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数&#xff1a; 多头…...

[最新榜单] 智能手机数据恢复的 10 款最佳应用

当手机上的数据消失时&#xff0c;这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没&#xff0c;您可以使用数据恢复应用程序修复它。 在本文中&#xff0c;我们将解释一些有用的数据恢复应用程序。 数据恢复应用…...

修改CentOS默认mail发件名称

修改CentOS默认的邮件发件名称 要修改CentOS默认的邮件发件名称&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端或SSH连接到CentOS服务器。使用root或具有管理员权限的用户登录。编辑postfix配置文件。在终端中输入以下命令&#xff1a; vi /etc/postfix/main.cf…...

Lesson 03 C/C++内存管理

C&#xff1a;渴望力量吗&#xff0c;少年&#xff1f; 文章目录 一、C内存管理方式1. new/delete操作内置类型2. new和delete操作自定义类型 二、operator new与operator delete函数三、new和delete的实现原理1. 内置类型2. 自定义类型 四、内存泄漏1. 什么是内存泄漏2. 内存泄…...

【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)

【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理 一、MAX96712 解串器基础配置1.1 配置链路 GMSL 协议 及 传输速率1.1.1 配置GMSL1、GMSL2协议 及 配置使能 Link A/B/C/D [0x6]:GMSL2_A、LINK_EN_A1.1.2 配置GMSL2 传输速率 3 Gbps / 6 Gbps …...

Docker与Kubernetes结合的难题与技术解决方案

文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 &#x1f388;个人主页&#xff1a…...

CVE-2021-42287CVE-2021-42278 域内提权

倘见玉皇先跪奏&#xff1a;他生永不落红尘 本文首发于先知社区&#xff0c;原创作者即是本人 前言 网络安全技术学习&#xff0c;承认⾃⼰的弱点不是丑事。只有对原理了然于⼼&#xff0c;才能突破更多的限制。拥有快速学习能力的白帽子&#xff0c;是不能有短板的&#xf…...

springcloud整合nacos实现服务注册

Nacos是一个开源的分布式系统服务和基础设施解决方案&#xff0c;用于实现动态服务发现、配置管理和服务治理。它可以帮助开发人员和运维团队更好地管理微服务架构中的服务实例、配置信息和服务调用。 Nacos提供了服务注册与发现、动态配置管理、服务路由和负载均衡等功能&…...

redis实现布隆过滤器

思路&#xff1a; 用于快速检查一个元素是否属于某个集合中。它可以快速判断一个元素是否在一个大型集合中&#xff0c;且判断速度很快且不占用太 多内存空间。原理是使用一组哈希函数&#xff0c;将元素【映射】成数组中的【索引位置】&#xff0c;就是将元素转成他在索引中的…...

山西电力市场日前价格预测【2023-11-19】

1.日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-19&#xff09;山西电力市场全天平均日前电价为591.63元/MWh。其中&#xff0c;最高日前电价为1500.00元/MWh&#xff0c;预计出现在16:45~20:45。最低日前电价为268.57元/MWh&#x…...

深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用

OCR即光学字符识别&#xff0c;是通过扫描仪或工业相机等电子设备检查打印的字符&#xff0c;并通过检测暗、亮的模式确定其形状&#xff0c;然后用字符识别方法将形状翻译成计算机文字的过程。 目前&#xff0c;随着机器视觉和人工智能技术的进一步升级&#xff0c;OCR技术实…...

性能测试知多少---系统架构分析

之前有对性能需求进行过分析&#xff0c;那篇主要从项目业务、背景等角度如何抽丝剥茧的将项目的需求抽离出来。在我们进行需求的时候也需要对被测项目的架构有一定的认识&#xff0c;如果不了解被测系统的架构&#xff0c;那么在后期的性能分析与调优阶段将无从下手。 简单系…...

【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”

毫无疑问&#xff0c;数智化既是这个时代前进所趋&#xff0c;也是国家战略所指&#xff0c;更是所有企业未来发展进程中达成的高度共识。 但也要看到&#xff0c;由于大量新兴技术的出现&#xff0c;技术热点不停的轮转&#xff0c;加上市场环境的快速变化&#xff0c;让数智化…...

我的 2023 秋招总结,拿到了大厂offer

2023秋招小结 前言 & 介绍 作为2024年毕业的学生&#xff0c;在2023年也就是今年秋招。 现在秋招快结束了&#xff0c;人生可能没有几次秋招的机会&#xff08;应该就一次&#xff0c;最多两次吧哈哈&#xff09;&#xff0c;也有一点感悟&#xff0c;所以小小总结一下。…...

力扣labuladong——一刷day36

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣230. 二叉搜索树中第K小的元素二、力扣538. 把二叉搜索树转换为累加树三、力扣1038. 从二叉搜索树到更大和树 前言 首先&#xff0c;BST 的特性大家应该…...

解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者

文章目录 前言一、什么是 Amazon CodeWhisperer&#xff1f;二、如何使用CodeWhisperer&#xff1f;安装CodeWhisperer插件配置CodeWhisperer生成注释和文档 总结 前言 随着CHATGPT的一声巨响&#xff0c;大语言模型已经成为了一个备受瞩目的创新应用。亚马逊云科技作为全球领…...

01_面向对象高级_static

Static static 的中文意思是"静态"&#xff0c;它可以修饰成员变量、成员方法 1. Static 修饰成员变量 static 修饰的成员变量&#xff0c;也称之为"类变量"类变量它是属于类的&#xff0c;与类一起加载&#xff0c;在内存中只有一份&#xff0c;会被类…...

双写绕过 [极客大挑战 2019]BabySQL 1

打开题目 随便输入账号密码 根据报错信息可知这是单引号的字符型注入 那我们试试万能密码 1 or 11 页面报错 1 or 11 页面报错 而且根据报错内容显示是没有我们注入上去的or的 那我们就试试 1 order by 3 # 页面报错&#xff0c;根据报错显示页面过滤掉了or和by 那我们…...

uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能

uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能 1. 在utils文件夹下创建share.js2. 为所有页面挂载3.单独页面使用 1. 在utils文件夹下创建share.js export default{data(){return {// 默认全局分享内容mixinsShare:{title:首页, //分享标题path:/pag…...

贝叶斯AB测试

AB测试是用来评估变更效果的有效方法&#xff0c;但很多时候会运行大量AB测试&#xff0c;如果能够在测试中复用之前测试的结果&#xff0c;将有效提升AB测试的效率和有效性。原文: Bayesian AB Testing[1] 随机实验&#xff0c;又称AB测试&#xff0c;是行业中评估因果效应的既…...