嵌入式人工智能(10-基于树莓派4B的DS1302实时时钟RTC)
1、实时时钟(Real Time Clock)
RTC,全称为实时时钟(Real Time Clock),是一种能够提供实时时间信息的电子设备。RTC通常包括一个计时器和一个能够记录日期和时间的电池。它可以独立于主控芯片工作,即使断电也能继续运行,并保持时间的精确度。
RTC一般用于需要准确时间的应用场合,如计算机系统的时间同步、数据采集系统的时间记录等。RTC可以提供秒、分、时、日、月、年等时间信息,还可以具备闹钟、定时器等功能。
在计算机系统中,RTC可以通过串行接口(如I2C、SPI接口)与主控芯片进行通信。主控芯片通过读取RTC的寄存器来获取当前时间,并可以通过写入寄存器来设置时间或功能。
除了计算机系统,RTC还可以用于其他电子设备中,如手机、电视等。
2、DS1302
(1)实时时钟芯片
DS1302是一款实时时钟芯片,由美国达拉斯半导体(Dallas Semiconductor)公司生产。它集成了时钟、日历和电池供电管理等功能。
DS1302通过3根线(数据线、时钟线和使能线)与外部控制器通信。它内部有一个32位的静态RAM,用于存储时间和日期等信息。它还有一个时钟输出引脚(CLKOUT),可以输出时钟信号。此外,DS1302还包括一个电池供电管理电路,可以在外部电源断开时维持时钟运行。
DS1302的主要特点如下:
- 时钟精度:±2分钟/月
- 工作电压:2V~5.5V
- 时钟频率:具有多个可选频率,最高可达到8MHz
- 时钟输出:可输出1Hz至32.768kHz的时钟信号
- 数据传输:采用串行方式传输,速率最高可达到2.048Mb/s
- 电源管理:具有电源失效检测和切换功能,可以自动切换到备用电池供电
DS1302广泛应用于各种需要实时时钟功能的设备,例如计算器、电子表、温度计、计步器、电子秤等。由于其低功耗和高精度的特点,它也常被用于嵌入式系统和物联网应用中。
(2)与树莓派接线
VCC:接树莓派的 3.3V 输出
GND:接树莓派的 Ground(地)
CLK:接树莓派的 GPIO21(BOARD 物理引脚编号40)
DAT:接树莓派的 GPIO20(BOARD 物理引脚编号38)
RST:接树莓派的 GPIO8(BOARD 物理引脚编号24)
(3)说明
DS1302的接线我特别说明下,我这里卡了一天,给我整懵了。我按照网上的接法接SLCK,ID_SD,CE0,运行程序老出问题,引脚功能报错,我估计接法不对,如果有同学整明白可以给我留言。我估计之前的接法是针对树莓派其他版本的。如果有时间还是要看下手册。
DS1302的接法还可以接到clk和IO引脚可以接树莓派SCL和SDA,不过不建议这样接,占用了OLED的引脚。如果接到这个IIC引脚上,通过sudo i2cdetect -y 1 命令也是查不到0x68这个1302器件ID。我这里也是搞了很长时间。
由于,DS1302的驱动在51和STM32都是通过IIC总线完成的,只要接到GPIO口,根据芯片手册的时序信号模拟IIC总线来发送与接收数据,主要有起始,结束、应答、非应答信号,再编写发送与接收字节函数,总之相比对程序员硬件软件要求比较高。在树莓派4B开发板中,DS1302也是基于IIC总线的,也有相应的C驱动和例程,但是我们还是用Pyhton来写。
3、DS1302驱动代码
import time
import RPi.GPIO
from datetime import datetime# 使用物理编码
SCL = 40
IO = 38
RST = 24# 数据读写的间隔
CLK_PERIOD = 0.00001# 关闭GPIO警告
RPi.GPIO.setwarnings(False)
# 配置树莓派GPIO接口 使用物理编码
RPi.GPIO.setmode(RPi.GPIO.BOARD)# 写入一个字节的数据
def writeByte(Byte):for Count in range(8):# 将SCL置为低电平 开启一次传输time.sleep(CLK_PERIOD)RPi.GPIO.output(SCL, 0)# 取一位数据进行写入Bit = Byte % 2Byte = int(Byte / 2)# 通过IO引脚进行写入time.sleep(CLK_PERIOD)RPi.GPIO.output(IO, Bit)# 将SCL置为高电平 结束一次传输time.sleep(CLK_PERIOD)RPi.GPIO.output(SCL, 1)# 读取一个字节的数据
def readByte():# 将IO引脚设置为输入RPi.GPIO.setup(IO, RPi.GPIO.IN, pull_up_down=RPi.GPIO.PUD_DOWN)Byte = 0for Count in range(8):# 先将SCL重置为高电平time.sleep(CLK_PERIOD)RPi.GPIO.output(SCL, 1)# 将SCL置为低电平 开启一次传输time.sleep(CLK_PERIOD)RPi.GPIO.output(SCL, 0)# 读取一位数据time.sleep(CLK_PERIOD)Bit = RPi.GPIO.input(IO)Byte |= ((2 ** Count) * Bit)return Byte# 重置一些数据
def resetDS1302():# SCL引脚设置为输出RPi.GPIO.setup(SCL, RPi.GPIO.OUT)# RST引脚设置为输出RPi.GPIO.setup(RST, RPi.GPIO.OUT)# IO引脚设置为输出RPi.GPIO.setup(IO, RPi.GPIO.OUT)# SCL和IO都置为低电平RPi.GPIO.output(SCL, 0)RPi.GPIO.output(IO, 0)time.sleep(CLK_PERIOD)# RST置为高电平RPi.GPIO.output(RST, 1)# 结束操作
def endDS1302():# SCL引脚设置为输出RPi.GPIO.setup(SCL, RPi.GPIO.OUT)# RST引脚设置为输出RPi.GPIO.setup(RST, RPi.GPIO.OUT)# IO引脚设置为输出RPi.GPIO.setup(IO, RPi.GPIO.OUT)# SCL和IO都置为低电平RPi.GPIO.output(SCL, 0)RPi.GPIO.output(IO, 0)time.sleep(CLK_PERIOD)# RST置为低电平RPi.GPIO.output(RST, 0)# 进行时间校准
def setDatetime(year, month, day, hour, minute, second, dayOfWeek):# 引脚重置resetDS1302()# 设置写始终数据脉冲指令writeByte(int("10111110", 2))# 开始依次写数据# 写入秒数据,*16的作用是把十位右移4位 下面同writeByte((second % 10) | int(second / 10) * 16)# 写入分钟数据writeByte((minute % 10) | int(minute / 10) * 16)# 写入小时数据writeByte((hour % 10) | int(hour / 10) * 16)# 写入日期数据writeByte((day % 10) | int(day / 10) * 16)# 写入月份数据writeByte((month % 10) | int(month / 10) * 16)# 写入星期数据writeByte(dayOfWeek)# 写入年份数据writeByte((year % 100 % 10) | int(year % 100 / 10) * 16)# 结束数据写入writeByte(int("00000000", 2))# 结束任务endDS1302()# 获取DS1302硬件时钟实践
def getDatetime():# 重置引脚resetDS1302()# 0xBF指令,开始时钟脉冲串读取数据writeByte(int("10111111", 2))Data = ""# 依次读取# 先读出秒数据Byte = readByte()second = (Byte % 16) + int(Byte / 16) * 10# 分钟数据Byte = readByte()minute = (Byte % 16) + int(Byte / 16) * 10# 小时数据Byte = readByte()hour = (Byte % 16) + int(Byte / 16) * 10# 日期数据Byte = readByte()day = (Byte % 16) + int(Byte / 16) * 10# 月份数据Byte = readByte()month = (Byte % 16) + int(Byte / 16) * 10# 星期数据Byte = readByte()day_of_week = (Byte % 16)# 年数据Byte = readByte()year = (Byte % 16) + int(Byte / 16) * 10 + 2000# 结束任务endDS1302()return datetime(year, month, day, hour, minute, second)# 时间格式化
def format_time(dt):if dt is None:return ""fmt = "%m/%d/%Y %H:%M"return dt.strftime(fmt)def parse_time(s):fmt = "%m/%d/%Y %H:%M"return datetime.strptime(s, fmt)
主要有2个函数,一个是setDatetime(year, month, day, hour, minute, second, dayOfWeek),一个是getDatetime()。日期参数可以删掉,也可以随便给一个。在主程序中如果要引用这个驱动文件.py,使用 from ds1302 import * 。
4、主程序
from datetime import datetimefrom ds1302 import *import time# 初始化程序def datetime_setup():print ('')print ('')print (getDatetime()) # 获取时间信息print ('')print ('')ds_a = input( "Do you want to setup date and time?(y/n/c)\n c:Set the current time to the system time\n") # 是否更新时间if ds_a == 'y' or ds_a == 'Y': # 重新更新时间ds_date = input("Input date:(YYYY MM DD) ") # 输入年月日ds_time = input("Input time:(HH MM SS) ") # 输入时分秒ds_date = list(map(lambda x: int(x), ds_date.split())) # 判断格式 ds_time = list(map(lambda x: int(x), ds_time.split())) # 判断格式print ('')print ('')setDatetime(ds_date[0], ds_date[1], ds_date[2], ds_time[0], ds_time[1], ds_time[2],33) # 设置时间dt = getDatetime() # 获取当前时间print ("You set the date and time to:", dt) # 打印出当前时间if ds_a == 'c' or ds_a == 'C': current_datetime()print ("current time is:", getDatetime()) # 循环函数def datetime_loop():while True:dt= getDatetime() # 获取时间print (dt) # 打印出时间time.sleep(1) # 延时1S# 释放资源def resource_destory():endDS1302() # 释放资源#获取当前时间写入ds1302def current_datetime():current = datetime.now()year = current.yearmonth = current.monthday = current.dayhour = current.hourminute = current.minutesecond = current.secondweek = current.weekday()setDatetime(year,month,day,hour,minute,second,week)# 程序入口if __name__ == '__main__': datetime_setup()try:datetime_loop() # 循环函数except KeyboardInterrupt: # 当按下Ctrl+C时,将执行destroy()子程序。resource_destory() # 释放资源
启动后可以不设置时间n,可以设置时间y,也可以读取系统时间设置到DS1302(C)。设置后,每隔一秒读取寄存器日期时间值,打印到屏幕上面。也可以显示到OLED上面。
显示到OLED上面需要把之前的显示封装成函数,在主程序中获取日期时间后调用。
5、问题
具体显示的结果参考之前的接线实物图,但是OLED显示会出现闪烁问题,就是用time.sleep(1)导致的,这个和C中的delay函数一样,对于这个问题,解决办法,是将获取时间函数直接放到OLED显示函数里面。
def Oled_display(x,y):global devicedevice = load_device()font = ImageFont.truetype('STKAITI.TTF',16)while True:with canvas(device) as draw:draw.rectangle(device.bounding_box, outline=0, fill=0)draw.text((x,y),str(getDatetime()),font=font, fill='white')
相关文章:
嵌入式人工智能(10-基于树莓派4B的DS1302实时时钟RTC)
1、实时时钟(Real Time Clock) RTC,全称为实时时钟(Real Time Clock),是一种能够提供实时时间信息的电子设备。RTC通常包括一个计时器和一个能够记录日期和时间的电池。它可以独立于主控芯片工作ÿ…...
C++ | Leetcode C++题解之第275题H指数II
题目: 题解: class Solution { public:int hIndex(vector<int>& citations) {int n citations.size();int left 0, right n - 1;while (left < right) {int mid left (right - left) / 2;if (citations[mid] > n - mid) {right m…...
编写DockerFile
将自己的项目或者环境通过Docker部署到服务器需要一下几个步骤: 打包项目或者环境 编写Dockerfile文件 运行Dockerfile文件,构建DockerImages镜像,将DockerImages存入DockerHub或者存入阿里云镜像仓库 服务器pull下DockerImages镜像&#…...
TCP并发服务器多线程
1.创建线程‐‐pthread_create int pthread_create( pthread_t *thread, // 线程 ID 无符号长整型 const pthread_attr_t *attr, // 线程属性, NULL void *(*start_routine)(void *), // 线程处理函数 void *arg); // 线程处理函数 参数: pthrea…...
技术速递|C# 13:探索最新的预览功能
作者:Kathleen Dollard 排版:Alan Wang C# 13 已初具雏形,其新特性侧重于灵活性、性能以及使您最喜欢的功能在日常中变得更容易使用。我们以公开的方式构建 C#,在今年的 Microsoft Build 大会上,我们会让您一睹 C# 13 …...
Python设计模式:巧用元类创建单例模式!
✨ 内容: 今天我们来探讨一个高级且实用的Python概念——元类(Metaclasses)。元类是创建类的类,它们可以用来控制类的行为。通过本次练习,我们将学习如何使用元类来实现单例模式,确保某个类在整个程序中只…...
构建自主可控的工业操作系统,筑牢我国工业安全堡垒
构建自主可控的工业操作系统,筑牢我国工业安全堡垒,鸿道(Intewell)操作系统为国家工业发展保驾护航。 7月19日,全球多地安装微软操作系统的电脑设备出现大规模宕机,导致“蓝屏”现象,严重影响了航空、铁路、医疗、金…...
WPF串口通讯程序
目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using HardwareCommunications; using System.IO.Ports; using System.Windows;namespace PortTest {/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainW…...
汽车技术智能化程度不断提升,线束可靠性如何设计?
随着汽车技术的高速发展,汽车自动化、智能化程度的逐步提高,人们对汽车的安全性、舒适性、娱乐性等要求也不断提高,加上汽车节能减排法规的不断严峻,整车电气设备不断增加,作为连接汽车各种电器设备“神经网络”的整车…...
实现Nginx的反向代理和负载均衡
一、反向代理和负载均衡简介 1.1、反向代理 反向代理(reverse proxy)指:以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。此时代理服务器对外就表现为一个反向代理服务器。 反向代…...
【算法】子集
难度:中等 题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,…...
Web前端:HTML篇(一)
HTML简介: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。 您可以使用 HTML 来建立自己的 WEB 站点,HTML 运行在浏览器上,由浏览器…...
ActiViz中的选择点vtkWorldPointPicker
文章目录 1. vtkWorldPointPicker简介2. 类的位置和继承关系3. 选择机制4. 返回的信息5. 选择的条件和参数6. 与屏幕空间选择器的比较7. 性能特征8. 应用场景9. 与其他vtk选择器的集成10. 完整示例总结1. vtkWorldPointPicker简介 vtkWorldPointPicker是Visualization Toolkit…...
如何开启或者关闭 Windows 安全登录?
什么是安全登录 什么是 Windows 安全登录呢?安全登录是 Windows 附加的一个组件,它可以在用户需要登录的之前先将登录界面隐藏,只有当用户按下 CtrlAltDelete 之后才出现登录屏幕,这样可以防止那些模拟登录界面的程序获取密码信息…...
【目标检测】Anaconda+PyTorch配置
前言 本文主要介绍在windows系统上的Anaconda、PyTorch关键步骤安装,为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程,为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网:https://www.anaconda.com/ 另外&#…...
什么是离线语音识别芯片?与在线语音识别的区别
离线语音识别芯片是一种不需要联网和其他外部设备支持,上电即可使用的语音识别系统。它的应用场合相对单一,主要适用于智能家电、语音遥控器、智能玩具等,以及车载声控和一部分智能家居。离线语音识别芯片的特点包括小词汇量、…...
使用Diffusion Models进行街景视频生成
Diffusion Models专栏文章汇总:入门与实战 前言:街景图生成相当有挑战性,目前的文本到视频的方法仅限于生成有限范围的场景的短视频,文本到3D的方法可以生成单独的对象但不是整个城市。除此之外街景图对一致性的要求相当高&#x…...
UFO:革新Windows操作系统交互的UI聚焦代理
人工智能咨询培训老师叶梓 转载标明出处 人机交互的便捷性和效率直接影响着我们的工作和生活质量。尽管现代操作系统如Windows提供了丰富的图形用户界面(GUI),使得用户能够通过视觉和简单的点击操作来控制计算机,但随着应用程序功…...
scp免密复制文件
实现在服务器A和服务器B之间使用scp命令免密互相传输文件 1. 在服务器A中免密复制到服务器B 1.1 生成服务器A的公钥私钥 #在服务器A中执行 ssh-keygen -t rsa -P ""命令执行完毕会在服务器A的 ~/.ssh 目录下生成两个文件:id_rsa 和 id_rsa.pub 1.2 拷…...
Maven 的模块化开发示例
Maven 的模块化开发是一种非常有效的软件开发方式,它允许你将一个大型的项目分割成多个更小、更易于管理的模块(modules)。每个模块都可以独立地构建、测试和运行,这不仅提高了开发效率,也便于团队协作和项目的维护。以…...
通过QT进行服务器和客户端之间的网络通信
客户端 client.pro #------------------------------------------------- # # Project created by QtCreator 2024-07-02T14:11:20 # #-------------------------------------------------QT core gui network #网络通信greaterThan(QT_MAJOR_VERSION, 4): QT widg…...
【STM32 HAL库】DMA+串口
DMA 直接存储器访问 DMA传输,将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场,它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道,…...
C#类型基础Part2-对象判等
C#类型基础Part2-对象判等 参考资料引用类型判等简单值类型判等复杂值类型判等 参考资料 《.NET之美-.NET关键技术深入解析》 引用类型判等 先定义两个类型,它们代表直线上的一个点,一个是引用类型class,一个是值类型struct public class…...
13.CSS 打印样式表 悬停下划线动画
CSS 打印样式表 虽然我们不经常从网上实际打印内容,但打印样式表不应被忽视。它们可以用来确保你的网站内容以一种易读和适合打印的方式呈现。这里有一个简单的、独特的打印样式表,你可以用它作为自己的基础: media print {page {size: A4;}body {margin: 0;padding: 0;}body, …...
C#基础:数据库分表的好处和实现方式
一、分表的好处: 1.提升查询速度:分表筛选后再拼接,而不是查大表,速度会显著提升 2.管理容易:根据业务需求,通常会按照时间或者空间来分表 3.提高并发性:降低锁竞争和查询阻塞的风险…...
基于3D开发引擎HOOPS平台的大型三维PLM系统的设计、开发与应用
产品生命周期管理(Product Lifecycle Management,PLM)系统在现代制造业中扮演着至关重要的角色。随着工业4.0和智能制造的推进,PLM系统从最初的CAD和PDM系统发展到现在的全面集成、协作和智能化的平台。本文将探讨基于HOOPS平台的…...
学习React(描述 UI)
React 是一个用于构建用户界面(UI)的 JavaScript 库,用户界面由按钮、文本和图像等小单元内容构建而成。React 帮助你把它们组合成可重用、可嵌套的 组件。从 web 端网站到移动端应用,屏幕上的所有内容都可以被分解成组件。在本章…...
mysql字符类型字段设置默认值为当前时间
-- 2024-07-22 10:22:20 select (DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)); ALTER TABLE tablename MODIFY COLUNN CREATE_DATE varchar (23) DEFAULT(DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)) COMMENT "创建日期;...
java题目之数字加密以及如何解密
public class Main6 {public static void main(String[] args) {// 某系统的数字密码(大于0),比如1983,采用加密方式进行传输//定义了一个静态数组int []arr{1,9,8,3};//1.加密//先给每位数加上5for (int i 0; i <arr.length …...
Linux基于CentOS7【yum】【vim】的基础学习,【普通用户提权】
目录 yum生态 什么是yum yum是如何得知目标服务器的地址和下载链接 vim vim模式 命名模式 光标移动 插入模式 i键插 a键插 o键插 底行模式 批量化注释 批量化去注释 创建vim配置文件 例子 高亮功能: 缩进功能: 符号位自动补齐功能…...
盛元广通实验室自动化生物样本库质量控制管理系统
随着我国生物医学研究的不断深入和精准医疗的快速发展,对高质量生物样本的需求日益增长。近年来,我国生物样本库建设取得了显著进展。各级政府、高校和医院纷纷投入资源建设生物样本库,推动了生物样本资源的有效整合和利用。生物样本库的质量…...
Java | 自制AWT单词猜一猜小游戏(测试版)
目录 游戏标题 开发过程 开发想法 技术栈 代码呈现 导包 核心代码 游戏标题 探索知识的迷宫,体验自制AWT单词猜一猜小游戏 在数字时代,学习可以是多彩的,游戏可以是智慧的。我们自豪地推出“单词猜猜猜”是一款结合了教育与娱乐的自制…...
docker搭建ES 8.14 集群
参考:【docker搭建es8集群kibana】_docker 安装生产级 es 8.14 集群-CSDN博客 1、之前已搭建一台单机版的dockerES集群 参见 Elasticsearch docker 安装_docker 安装es8.14.3-CSDN博客 2、现在需要重新搭建为docker ES集群 准备新搭建3个点 一、准备工作 提前开…...
自定义特征的智能演进:Mojo模型中的动态特征选择控制
自定义特征的智能演进:Mojo模型中的动态特征选择控制 在机器学习领域,特征选择是提升模型性能和泛化能力的关键步骤。Mojo模型,作为一种高效的模型部署方式,其对特征的动态选择和控制能力是实现高级机器学习应用的重要特性。本文…...
Git->Git生成patch和使用patch
生成patch git format-patch -1 HEAD -o "输出目录"format-patch:用于生成补丁文件-1:-1 表示最近一次提交,-2 表示生成最近两次提交的补丁。HEAD:HEAD 指向当前分支的最新提交-o:指定生成的补丁文件的输出…...
开发面试算法题求教
在《无尽的拉格朗日》中,有许多不同的星系建筑物。每个星系建筑物的等级不同,带来的影响力也不同。 已知宇宙可以抽象为一个无穷大的平面直角坐标系,现在给定了每个星系建筑物的所在坐标(xi,yi)和它的影响力ri,距离其切比雪夫距离…...
OpenStack中nova的架构
1.1 nova-api 负责接收和相应客户的API调用。 1.2 compute core nova-schedule 负责决定在哪个计算节点运行虚拟机。 nova-compute 通过调用Hypervisor实现虚拟机生命周期的管理。一般运行在计算节点。 hypervisor 对虚拟机进行硬件虚拟化的管理软件ÿ…...
力扣高频SQL 50题(基础版)第五题
文章目录 力扣高频SQL 50题(基础版)第五题1683. 无效的推文题目说明:思路分析:实现过程:结果截图: 力扣高频SQL 50题(基础版)第五题 1683. 无效的推文 题目说明: 表&a…...
Air780EP- AT开发-阿里云应用指南
简介 使用AT方式连接阿里云分为一机一密和一型一密两种方式,其中一机一密又包括HTTP认证二次连接和MQTT直连两种方式 关联文档和使用工具: AT固件获取在线加/解密工具阿里云平台 准备工作 Air780EP_全IO开发板一套,包括天线SIM卡࿰…...
【中项】系统集成项目管理工程师-第4章 信息系统架构-4.4数据架构
前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...
excel批量新建多个同类型的表格
背景引入 比如,一个企业有多个部门,现在需要按照某一个excel表模板收集各个部门的信息,需要创建数十个同类型表格,且标题要包含部门名称。 1.修改模板表格标题 在一个文件夹下面放入需要发放给各个部门的表格,将标题…...
React Native 与 Flutter:你的应用该如何选择?
Flutter 和 React Native 都被认为是混合应用程序开发中的热门技术。然而,当谈到为你的项目使用框架时,你必须考虑哪一个是最好的:Flutter 还是 React Native? 本篇文章包含 Flutter 和 React Native 在各个方面的差异。因此&…...
DP学习——状态模式
学而时习之,温故而知新。 状态模式 角色 2个角色,引用类,状态行为类。 和策略模式很相似 状态行为封装成很多独立的状态行为类——就是把不同的状态及其要执行的方法单独封装起来。 而策略模式类似,是不同的算法封装成一个个…...
前端性能优化面试题汇总
面试题 1. 简述如何对网站的文件和资源进行优化? 参考回答: 举列: 1.文件合并(目的是减少http请求):使用css sprites合并图片,一个网站经常使用小图标和小图片进行美化,但是很遗憾这些小图片…...
C#基于SkiaSharp实现印章管理(4)
前几篇文章实现了绘制不同外形印章的功能,印章内部一般包含圆形、线条等形状,有些印章内部还有五角星,然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。 定义FigureType枚举记录印章内部形状ÿ…...
Vue全家桶 - pinia 的理解和学习2(Pinia 核心概念的插件、组件外的 Store 和 服务器渲染(SSR))
Pinia(Vue 的专属状态管理库) Vue全家桶 - pinia 的理解和学习1(Pinia 核心概念的 Store、State、Getter、Action) https://blog.csdn.net/weixin_54092687/article/details/140520675 插件 由于有了底层 API 的支持,…...
数学建模(6)——预测类模型目录
预测模型是一类通过分析和建模历史数据来预测未来结果的算法或模型。这些模型广泛应用于各种领域,包括金融、医疗、市场营销、气象、制造业等。以下是一些常见的预测模型: 1. 回归模型 线性回归(Linear Regression):…...
安卓刷入系统证书
设备:Pixel XL 证书:reqable-ca.crt 刷入前需要手机已刷入Magisk 使用USB充电线连接手机,打开Windows终端面板手机打开Magisk,开启Shell的Root权限Windows终端输入su获取root权限查看SELinux状态并修改为Permissive修改system分…...
中科亿海微信号采集核心板在振动采集场景中的应用
在工业现场控制领域,对于旋转物体的速度我们通用的做法是测量旋转所产生的振动量来倒推设备的转速值。振动采集系统是一种广泛用于检测和记录系统振动的设备,整体包括传感器和数据采集两部分。传感器类型包括加速度传感器、速度传感器和位移传感器&#…...
`panic` 是 Go 语言中用来表示发生了严重错误的一种机制
目录 panic 是 Go 语言中用来表示发生了严重错误的一种机制案例goroutine空指针是什么栈展开是什么defer 语句会按照 LIFO(后进先出)的顺序执行 panic 是 Go 语言中用来表示发生了严重错误的一种机制 在 Go 程序中,panic 是一种运行时错误&a…...