维护在线重做日志
学习目标
- 解释在线重做日志文件的目的概述
- 在线重做日志文件的结构
- 控制日志开关和检查点
- 多路复用和维护在线重做日志文件
- 使用OMF管理在线重做日志文件
- 获取在线重做日志文件信息
在线重做日志文件提供了在数据库发生故障时重做事务的方法。
每个事务都同步写入重做日志缓冲区,然后刷新到在线重做日志文件,以便在媒体失败时提供恢复机制。
(除了在启用了NOLOGGING子句的对象中直接加载插入等例外情况。)
这包括尚未提交的事务、撤消段信息以及模式和对象管理语句。
在线重做日志文件用于实例失败时恢复未写入数据文件的已提交数据的情况。
在线重做日志文件仅用于恢复。
在线重做日志文件具有以下特点
- 记录对数据所作的所有更改
- 提供恢复机制
- 可以组织成小组
- 至少需要两组
重做日志文件结构
重做日志文件组的工作原理
-
多个重做日志组:Oracle数据库可以配置多个在线重做日志组,每个重做日志组包含一个或多个在线重做日志文件。这样可以提高数据库的并发性和容错性。
-
轮流写入:当数据库进行修改操作时,这些操作会首先写入当前活跃的在线重做日志组中的重做日志文件。如果当前的重做日志文件写满了,数据库会自动切换到下一个在线重做日志组中的重做日志文件继续记录修改操作。
-
循环使用:在线重做日志组是循环使用的,当一个重做日志文件写满后,数据库会自动切换到下一个重做日志文件继续记录修改操作。这样可以确保数据库的重做日志不会无限增长,同时保证了数据库的持久性和一致性。
-
保证数据完整性:通过多个在线重做日志组的轮流写入,Oracle数据库可以确保即使在一个重做日志组发生故障或损坏时,仍然可以继续记录修改操作,保证数据库的数据完整性和可靠性。
-
性能优化:合理配置和管理多个在线重做日志组可以提高数据库的性能和并发能力,确保数据库的稳定性和可靠性。
联机重做日志文件的结构
-
数据库管理员可以设置Oracle数据库维护在线重做日志文件的副本,以避免由于单点故障而丢失数据库信息。
-
联机重做日志文件组
在线重做日志文件的一组相同的副本称为在线重做日志文件组。LGWR后台进程并发地将相同的信息写入组中的所有在线重做日志文件。
Oracle服务器至少需要两个在线重做日志文件组来保证数据库的正常运行。 -
联机重做日志文件成员
组中的每个在线重做日志文件称为一个成员。
组中的每个成员具有相同的日志序列号和相同的大小。
每次Oracle服务器写入日志组时,都会分配日志序列号,以唯一标识每个在线重做日志文件。当前日志序列号存储在控制文件和所有数据文件的头文件中。 -
联机重做日志文件的结构
创建初始在线重做日志文件
在线重做日志文件组和成员的初始集是在创建数据库时创建的。
以下参数限制在线重做日志文件的数量: -
CREATE DATABASE命令中的MAXLOGFILES参数指定在线重做日志文件组的绝对最大值。
-
MAXLOGFILES的最大值和默认值取决于您的操作系统。
-
在CREATE DATABASE命令中使用的MAXLOGMEMBERS参数决定每个组的最大成员数。
MAXLOGMEMBERS的最大值和默认值取决于您的操作系统。
多路复用重做日志文件
为了防止涉及重做日志本身的故障,Oracle数据库允许多路重做日志,这意味着可以在不同的位置自动维护两个或多个相同的重做日志副本。为了获得最大的好处,这些位置应该位于单独的磁盘上。但是,即使重做日志的所有副本都在同一个磁盘上,冗余也可以帮助防止I/O错误、文件损坏等。当重做日志文件多路复用时,LGWR并发地将相同的重做日志信息写入多个相同的重做日志文件,从而消除了重做日志的单点故障。
多路复用是通过创建重做日志文件组来实现的。组由重做日志文件及其多路副本组成。每一个相同的副本都被认为是这个群体的一个成员。每个重做日志组由一个数字定义,例如组1、组2,等这等。
注意:Oracle建议您将重做日志文件多路复用。如果需要恢复,日志文件数据的丢失可能是灾难性的。注意,当您复用重做日志时,数据库必须增加它执行的1/0量。根据您的配置,这可能会影响整体数据库性能。
在线重做日志文件是如何工作的
在线重做日志文件以循环的方式使用。
转到下一个日志组。
当在线重做日志文件已满时,LGWR将移动
- 称为日志开关
- 检查点操作也会发生
- 写入控制文件的信息
从一个日志文件组切换到另一个日志文件组的行为称为日志切换。
检查点是将脏(修改)块从缓冲缓存写到磁盘的过程。
LGWR(Log Writer)是Oracle数据库中的一个重要后台进程,负责将数据库缓冲区中的修改操作写入在线重做日志文件中。
- 写入重做日志:LGWR负责将数据库缓冲区中的修改操作(如插入、更新、删除)写入在线重做日志文件中,确保数据库的修改操作被持久化到磁盘,以保证数据库的一致性和持久性。
- 控制提交:LGWR在事务提交时负责将事务的修改操作写入重做日志文件,并生成提交记录,以确保事务的提交状态能够被恢复。
- 性能优化:LGWR通过批量写入和异步写入的方式优化性能,减少磁盘I/O的开销,提高数据库的性能和并发能力。
- 故障恢复:LGWR在数据库发生故障或崩溃时起着重要作用,通过重放在线重做日志中的操作,可以帮助数据库恢复到一致的状态。
- 保证数据完整性:LGWR的工作确保了数据库的数据完整性,即使在异常情况下,也可以通过重做日志文件中的记录来恢复数据库到一致的状态。
Oracle服务器将对数据库的所有更改顺序记录在Redo Log Buffer中。重做条目由LGWR进程从重做日志缓冲区写入当前在线垂做日志文件组。LGWR在以下情况下写入
- 当事务提交时
- 当重做日志缓冲区满三分之一时
- 当重做日志缓冲区中有超过1兆字节的更改记录时
- 在DBWn将数据库Buffer Cache中的修改块写入数据文件之前在线重做日志文件以循环方式使用。每个在线重做日志文件组由日志序列号标识,该序列号在日志每次被重用时被覆盖。
日志切换
LGWR按顺序写入在线重做日志文件。当当前在线重做日志文件组被填满时,LGWR开始向下一个组写入。这被称为日志开关。
当最后一个可用的在线重做日志文件被填满时,LGWR返回到第一个在线重做日志文件组并开始再次写入。
日志交换机和日志序列号
- 日志切换是数据库停止写入一个重做日志文件并开始写入另一个重做日志文件的点。通常,当当前重做日志文件被完全填满,并且必须继续写入下一个重做日志文件时,会发生日志切换。但是,您可以将日志开关配置为定期发生,而不管当前的重做日志文件是否被完全填充。您也可以手动强制记录交换机日志。
- Oracle数据库在每次发生日志切换和LGWR开始写入时,为每个重做日志文件分配一个新的日志序列号。当数据库归档重做日志文件时,归档日志保留其日志序列号。当重做日志文件被循环使用时,将给出下一个可用的日志序列号。
- 每个在线或归档的重做日志文件由其日志序列号唯一标识。在崩溃、实例或介质恢复期间,数据库通过使用必要的归档和重做日志文件的日志序列号,以升序正确地应用重做日志文件。
检查点
在检查点期间:
- DBWn将许多脏数据库缓冲区写入数据文件,这些缓冲区由正在被检查点的日志所覆盖。
检查点后台进程CKPT更新控制文件,以反映它已成功完成检查点。如果检查点是由日志切换引起的,CKPT还会更新数据文件的头。 - 检查点可以发生在数据库中的所有数据文件上,也可以只发生在特定的数据文件上。
例如,在以下情况下会出现检查点: - 在每个日志开关处
- 当使用正常、事务或立即选项关闭实例时
- 当通过设置FAST_START_MTTR_TARGET初始化参数强制时当数据库管理员手动请求时
- 当ALTER TABLESPACE [OFFLINE | NORMALIREAD ONLY|BEGIN BACKUP]命令对特定的数据文件进行校验时
每个检查点的信息记录在alert_SID.log中。如果初始化参数LOG_CHECKPOINTS_TO_ALERT设置为TRUE,则日志文件将被删除。该参数的默认值FALSE不记录检查点。
强制
与在线重做日志相关的视图
desc v$log select group# ,group#,sequence#,status from v$log;
FAST_START_MTTR_TARGET
FAST_START_MTTR_TARGET
是Oracle数据库中一个重要的参数,用于指定数据库的自动内存调整目标,以便在数据库发生故障时快速恢复到一致的状态。在您提供的情况下,FAST_START_MTTR_TARGET = 600
表示设置了数据库的自动内存调整目标为600秒。
具体来说,FAST_START_MTTR_TARGET
参数的作用是控制数据库的自动内存调整过程,以确保在数据库发生故障时,数据库可以在指定的时间内(以秒为单位)快速恢复到一致的状态。通过调整这个参数的值,可以影响数据库的恢复速度和性能。
在这种情况下,设置FAST_START_MTTR_TARGET = 600
表示数据库的自动内存调整目标为600秒,即数据库在发生故障时,会尽力在600秒内完成恢复操作,以确保数据库的一致性和可用性。
show parameter fast
可以查询当前参数
强制日志开关和检查点
日志切换和检查点在数据库操作的某些点自动执行,如前所述。但是,DBA可以强制执行日志切换或检查点。迫使检查点
FAST START MTTR TARGET参数取代了已弃用的参数:FAST_START_IO-TARGET LOG_CHECKPOINT_TIMEOUT如果使用了参数FAST START MTTR TARGET,则不能使用这些已弃用的参数。
在上面的示例中,已经设置了FAST-START_MTTR_TARGET参数,以便实例恢复不超过600秒。数据库将根据这一目标调整其他参数。
增加在线重做日志数量
在线重做日志组数量
-
确定当前的在线重做日志组数量:首先,您可以查询数据库的参数设置或查看数据库的配置文件,确认当前的在线重做日志组数量。
-
备份数据库:在进行任何更改之前,请务必备份数据库,以防意外发生。
-
添加新的在线重做日志组:您可以使用ALTER DATABASE ADD LOGFILE GROUP命令来添加新的在线重做日志组。例如,您可以执行类似以下的SQL语句:
ALTER DATABASE ADD LOGFILE GROUP 4 ('/path/to/logfile_group_4a.log', '/path/to/logfile_group_4b.log') SIZE 100M;
在上面的示例中,我们添加了一个新的在线重做日志组,包含两个重做日志文件,并指定了每个文件的大小为100M。您可以根据实际需求和数据库配置进行调整。
- 激活新的在线重做日志组:添加新的在线重做日志组后,您需要激活这些新的重做日志组,以便数据库开始使用它们记录修改操作。您可以执行以下SQL语句来激活新的重做日志组:
ALTER DATABASE ADD LOGFILE GROUP 4 ('/path/to/logfile_group_4a.log', '/path/to/logfile_group_4b.log') SIZE 100M;
- 验证和监控:添加新的在线重做日志组后,您可以验证数据库是否正常工作,并监控数据库的性能和日志记录情况,以确保新的重做日志组被正确使用。
在线重做日志组内数量
- 确定当前的在线重做日志组文件数量:首先,您可以查询数据库的参数设置或查看数据库的配置文件,确认每个在线重做日志组中当前的文件数量。
SELECT COUNT(*) AS "Number of Redo Log Groups" FROM V$LOG; # 查看重做日志组数量 SELECT * FROM V$PARAMETER WHERE NAME LIKE '%log_file%'; # 查看数据库的参数设置
2. **备份数据库**:在进行任何更改之前,请务必备份数据库,以防意外发生。3. **修改在线重做日志组文件数量**:您可以使用ALTER DATABASE ADD LOGFILE MEMBER或ALTER DATABASE DROP LOGFILE MEMBER命令来增加或减少每个在线重做日志组中的文件数量。以下是一些示例SQL语句:- **增加文件数量**:```sql
ALTER DATABASE ADD LOGFILE MEMBER '/path/to/new_logfile.log' TO GROUP 1;
在上面的示例中,我们向第一个重做日志组添加了一个新的重做日志文件。
- 减少文件数量:
ALTER DATABASE DROP LOGFILE MEMBER '/path/to/logfile_to_be_dropped.log';
在上面的示例中,我们从数据库中删除了一个特定的重做日志文件。
-
激活修改:在修改每个在线重做日志组中的文件数量后,您可能需要重新启动数据库实例或执行适当的命令来激活这些更改。
-
验证和监控:修改每个在线重做日志组中的文件数量后,您可以验证数据库是否正常工作,并监控数据库的性能和日志记录情况,以确保修改生效并不会影响数据库的稳定性。
查看重做日志位置
SELECT MEMBER FROM V$LOGFILE; # 获取重做日志文件的位置 SELECT * FROM V$LOG; # 查看所有重做日志文件的相关信息,包括位置、大小等
删除Redo文件成员
-
允许删除重做日志文件,使多路重做日志暂时变得不对称。例如,如果您使用重做日志文件的双工组,您可以删除一个组中的一个成员,即使所有其他组每个都有两个成员。但是,您应该立即纠正这种情况,以便所有组至少有两个成员,从而消除重做日志可能出现的单点故障。
-
一个实例总是需要至少两组有效的重做日志文件,无论组中有多少成员。(一个小组由一个或多个成员组成。)如果要删除的成员是组的最后一个有效成员,则在其他成员生效之前不能删除该成员。要查看重做日志文件的状态,请使用V$LOGFILE视图。如果数据库无法访问重做日志文件,则重做日志文件变为INVALID。如果数据库怀疑它不完整或不正确,则变为STALE。过时的日志文件在下次将其组设置为活动组时再次有效。
- 只有当重做日志成员不属于活动组或当前组时,才能删除该成员。如果要删除活动组成员,请首先强制进行日志切换。
- 在删除重做日志成员之前,请确保重做日志成员所属的组已存档(如果存档已启用)。要查看是否发生了这种情况,请使用V$LOG视图。
当重做日志成员从数据库中删除时,操作系统文件不会从磁盘中删除。相反,将更新关联数据库的控制文件以从数据库结构中删除成员。删除重做日志文件后,确保删除成功完成,然后使用适当的操作系统命令删除被删除的重做日志文件。
设置列格式
COLUMN column_name FORMAT A20 # 这将设置名为column_name的列的宽度为20个字符col member format A20
具体删除
- 确定要删除的重做日志文件:首先,您需要确定要删除的重做日志文件的位置和名称。您可以使用以下SQL查询语句来查看当前数据库中的重做日志文件信息:
SELECT * FROM V$LOGFILE;
这将列出数据库中所有的重做日志文件及其相关信息,包括位置、大小等。
- 切换日志文件组:在删除重做日志文件之前,建议首先切换到其他日志文件组,以确保数据库能够继续正常运行。您可以使用以下SQL语句来切换日志文件组:
ALTER SYSTEM SWITCH LOGFILE;
这将触发数据库切换到下一个可用的重做日志文件组。
- 删除重做日志文件:一旦切换到其他日志文件组,您可以使用操作系统命令来删除特定的重做日志文件。例如,如果要删除名为
redo_logfile_1.log
的重做日志文件,您可以使用类似以下的命令:
rm /path/to/redo_logfile_1.log
请确保在删除重做日志文件之前已经备份数据库,并且谨慎操作,以避免数据丢失或数据库损坏。
- 清除Oracle数据库中的重做日志信息:删除重做日志文件后,您可能需要清除数据库中对应的重做日志信息。您可以使用以下SQL语句来清除已删除的重做日志文件信息:
ALTER DATABASE CLEAR LOGFILE GROUP group_number;
请将group_number
替换为实际的重做日志组号。
- 另一种顺序
删除重做日志组
SELECT GROUP#, MEMBERS, ARCHIVED, STATUS FROM V$LOG;
查询Oracle数据库中的重做日志组的组号(group#)、成员数(members)、是否已归档(archived)、状态(status)
状态这一列:
CURRENT:表示该重做日志组当前正在被使用,是当前正在写入的重做日志组。
ACTIVE:表示该重做日志组包含尚未归档的重做日志,即这些重做日志还未被归档到归档日志中。
INACTIVE:表示该重做日志组中的重做日志已经被归档,不再处于活动状态。
UNUSED:表示该重做日志组尚未被使用,没有包含任何重做日志。
一个实例至少需要两组在线重做日志文件。
不能删除活动组或当前组。
删除在线重做日志文件组时,不会删除操作系统文件。
应该先删除组4,要保证序号是连续的
迁移和重命名
- 可以使用操作系统命令重新定位重做日志,然后使用ALTER DATABASE语句使数据库知道它们的新名称(位置)。这个过程是必要的,例如,如果当前用于一些重做日志文件的磁盘将被删除,或者如果数据文件和许多重做日志文件存储在同一个磁盘上,并且应该分开以减少争用。
- 要重命名重做日志成员,您必须具有ALTER DATABASE系统权限。此外,您可能还需要操作系,统特权来将文件复制到所需的位置,并需要特权来打开和备份数据库。
- 在重新定位重做日志或对数据库进行任何其他结构更改之前,请完全备份数据库,以防在执行操作时遇到问题。作为预防措施,在重命名或重定位一组重做日志文件后,应立即备份数据库控制文件。
相关文章:
维护在线重做日志
学习目标 解释在线重做日志文件的目的概述在线重做日志文件的结构控制日志开关和检查点多路复用和维护在线重做日志文件使用OMF管理在线重做日志文件获取在线重做日志文件信息 在线重做日志文件提供了在数据库发生故障时重做事务的方法。 每个事务都同步写入重做日志缓冲区&a…...
ASCB1系列APP操控末端回路智能微断 物联网断路器 远程控制开关 学校、工厂、农场、商业大楼等可用
安科瑞戴婷 Acrel-Fanny ASCB1系列智能微型断路器是安科瑞电气股份有限公司全新推出的智慧用电产品,产品由智能微型断路器与智能网关两部分组成,可用于对用电线路的关键电气因素,如电压、电流、功率、温度、漏电、能耗等进行实时监测&#x…...
Python入门(10)--面向对象进阶
Python面向对象进阶 🚀 1. 继承与多态 🔄 1.1 继承基础 class Animal:def __init__(self, name, age):self.name nameself.age agedef speak(self):passdef describe(self):return f"{self.name} is {self.age} years old"class Dog(Anim…...
Makefile 之 自动化变量
作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。 "$" 表示目标的集合,就像一个数组,"$"依次取出目标,并执于命令。 "$<"和"$&qu…...
鸿蒙开发:ForEach中为什么键值生成函数很重要
前言 在列表组件使用的时候,如List、Grid、WaterFlow等,循环渲染时都会使用到ForEach或者LazyForEach,当然了,也有单独使用的场景,如下,一个很简单的列表组件使用,这种使用方式,在官…...
沃丰科技智能外呼机器人:超越人工,重塑外呼体验
随着科技的不断发展,人工智能已经逐渐渗透到各行各业,其中智能外呼机器人的出现,更是给企业带来了全新的客户体验。与传统的人工外呼相比,智能外呼机器人具有更高的效率、更低的成本以及更好的用户体验等优势。 优势一࿱…...
百度飞浆:paddle 线性回归模型
学习引用 参考视频: https://www.bilibili.com/video/BV1oRtkeVEVx?spm_id_from333.788.player.switch&vd_sourcec7739de98d044e74cdc74d6e772bed5f&p2 这段代码使用PaddlePaddle深度学习框架来实现一个简单的线性回归模型,旨在从给定的出租车…...
【JavaSE】【网络编程】UDP数据报套接字编程
目录 一、网络编程简介二、Socket套接字三、TCP/UDP简介3.1 有连接 vs 无连接3.2 可靠传输 vs 不可靠传输3.3 面向字节流 vs 面向数据报3.4 双向工 vs 单行工 四、UDP数据报套接字编程4.1 API介绍4.1.1 DatagramSocket类4.1.1.1 构造方法4.1.1.2 主要方法 4.1.2 DatagramPocket…...
45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
点赞收藏加关注,你也能主打别墅! 一、问题描述 Mac上终端运行如下命令: sudo npm install typescript -g //全局安装ts提示成功安装后,我测试tsc -v这个命令时出现如下错误: 也就是说找不到 tsc 命令。 二、解决方…...
20241120-Milvus向量数据库快速体验
目录 20241120-Milvus向量数据库快速体验Milvus 向量数据库pymilvus内嵌向量数据库模式设置向量数据库创建 Collections准备数据用向量表示文本插入数据 语义搜索向量搜索带元数据过滤的向量搜索查询通过主键搜索 删除实体加载现有数据删除 Collections了解更多 个人主页: 【⭐…...
【Golang】——Gin 框架中间件详解:从基础到实战
中间件是 Web 应用开发中常见的功能模块,Gin 框架支持自定义和使用内置的中间件,让你在请求到达路由处理函数前进行一系列预处理操作。这篇博客将涵盖中间件的概念、内置中间件的用法、如何编写自定义中间件,以及在实际应用中的一些最佳实践。…...
量子计算来袭:如何保护未来的数字世界
目录 前言 一、量子计算安全的学习方向 1. 量子物理学基础 2. 量子计算原理与技术 3. 传统网络安全知识 4. 量子密码学 5. 量子计算安全政策与法规 二、量子计算的漏洞风险 1. 加密算法被破解风险 2. 区块链安全风险 3. 量子密钥分发风险 4. 量子计算系统自身风险 …...
VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源
VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源 由于需要在 Linux 环境下进行一些测试工作,于是决定使用 VMware 虚拟化软件来安装 Ubuntu 24.04 .1操作系统。考虑到测试过程中需要访问 Github ,要使用Docker拉去镜像等外部网络资源,因此产…...
光伏电站仿真系统的作用
光伏仿真系统有多方面的重要作用,不仅对前期的项目设计评估还是后期的运维效验都有非常重要的作用。 1、优化系统设计 通过输入不同的光伏组件参数、布局方案以及气象条件等,模拟各种设计场景下光伏电站的性能表现。例如,可以比较不同类型光…...
Golang文件操作
写文件 &emsp; os模块可以创建文件,使用fmt可以写入文件。如以下例子: package mainimport ("fmt""os" )func main() {// 学习 golang的文件操作file, err : os.Create("test.txt")if err ! nil {fmt.P…...
爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具
第三节:使用Postman和浏览器开发者工具 在网络爬虫开发过程中,我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具(特别是Network面板和Console面板)是两种最常用的工具,能够帮助开发者有效地捕…...
React(二)
文章目录 项目地址七、数据流7.1 子组件传递数据给父组件7.1.1 方式一:給父设置回调函数,传递给子7.1.2 方式二:直接将父的setState传递给子7.2 给props传递jsx7.2.1 方式一:直接传递组件给子类7.2.2 方式二:传递函数给子组件7.3 props类型验证7.4 props的多层传递7.5 cla…...
同步原语(Synchronization Primitives)
同步原语(Synchronization Primitives)是用于控制并发编程中多个线程或进程之间的访问顺序,确保共享资源的安全访问的一组机制或工具。它们解决了竞争条件(Race Condition)、死锁(Deadlock)等并…...
SpringBoot服务多环境配置
一个项目的的环境一般有三个:开发(dev)、测试(test)、生产(proc),一般对应三套环境,三套配置文件。 像下面这样直接写两个配置文件是不行的。 application.ymlserver:port: 8080application-dev.ymlspring:datasource:driver-class-name: co…...
STM32单片机CAN总线汽车线路通断检测-分享
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展,车辆通信接口在汽车电子控…...
【环境搭建】使用IDEA远程调试Docker中的Java Web
有时候要对Docker的Java Web远程调试其功能,于是就需要使用IDEA的远程调试功能,记录一下简单配置方法。 以Kylin4.0.0为例,首先拉取镜像并启动容器: $ docker pull apachekylin/apache-kylin-standalone:4.0.0$ docker run -d \-…...
贴代码框架PasteForm特性介绍之select,selects,lselect和reload
简介 PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管…...
STM32G4的数模转换器(DAC)的应用
目录 概述 1 DAC模块介绍 2 STM32Cube配置参数 2.1 参数配置 2.2 项目架构 3 代码实现 3.1 接口函数 3.2 功能函数 3.3 波形源代码 4 DAC功能测试 4.1 测试方法介绍 4.2 波形测试 概述 本文主要介绍如何使用STM32G4的DAC模块功能,笔者使用STM32Cube工具…...
SpringMVC跨线程获取requests请求对象(子线程共享servletRequestAttributes)和跨线程获取token信息
文章目录 引言I 跨线程共享数据跨线程获取requests请求对象基于org.slf4j.MDC存储共享数据InheritableThreadLocal解决异步线程,无法获取token信息问题II Feign 传递请求属性feign 模块处理被调用方处理请求头III 异步调用的方式CompletableFutureAsync注解Executors引言 本文…...
提取repo的仓库和工作树(无效)
问题 从供应商处获取的.repo的git仓库裸(project-object)仓库和工作树(projects)是分开的。 解决方案 根据工作树的软链接路劲,将工作树合并到project-object下。 import os import shutil import argparse import logging# 设置日志配置 logging.basicConfig(l…...
力扣整理版七:二叉树(待更新)
满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。深度为k,有2^k-1个节点的二叉树。 完全二叉树:在完全二叉树中,除了最底层节点可能没填满外&am…...
基于单片机的多功能环保宠物窝设计
本设计基于单片机设计的多功能环保宠物窝,利用温湿度传感器、压力传感模块、气味传感模块、红外测温传感器、通信模块、显示模块、清扫部件等,使其能够实现自动检测并调节温湿度、补充宠物食物、检测宠物体温健康并出现异常时进行报警、自动清扫消毒宠物…...
HBase 基础操作
一、启动HBase 首先,确保Hadoop和HBase服务已经启动。如果尚未启动,可以使用以下命令启动: # 启动Hadoop start-all.sh# 启动HBase start-hbase.sh二、HBase Shell操作 创建表 在HBase Shell中,使用create命令创建表。以下是一…...
小米顾此失彼:汽车毛利大增,手机却跌至低谷
科技新知 原创作者丨依蔓 编辑丨蕨影 三年磨一剑的小米汽车毛利率大增,手机业务毛利率却出现下滑景象。 11月18日,小米集团发布 2024年第三季度财报,公司实现营收925.1亿元,同比增长30.5%,预估902.8亿元;…...
PCL 三维重建 a-shape曲面重建算法
目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 Concave Hull重建 2.1.2 可视化曲面重建结果 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 …...
做网站什么价格/seo综合查询网站
原由 这几天在网上随便找了个简洁的接口框架,没想到简洁得过头了。没有配置文件,没有数据库调取,也没有单独的控制器,模型模块。然后自己一通的封装。用着倒是没问题,只是太多的文件引用了。显得很Low。于是想到了自动…...
长沙网站建设建/太原seo快速排名
1.Windows下安装RabbitMQ需要以下几个步骤 (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好,安装完成之后创…...
wordpress完整安装包/优化快速排名公司
目录 JQuery初级 概念快速入门JQuery对象和JS原生对象的区别选择器DOM操作 内容操作属性操作CRUD操作 案例 JQuery高级 动画遍历事件绑定插件 Ajax 概念实现方式 原生JS实现(了解)JQuery实现方式 $.ajax()$.get()$.post() json 概念语法 基本规则获取数据遍历 …...
建设微网站的特色/外贸网络营销平台
问题: 我的的phantomjs的版本是2.0,是否是这个问题,但如果是这个问题的话,怎么解决,我看到其他有些人,下载了1.版本的,phantomjs,好像也出现这个问题,大神们这个怎么解决。 另外…...
学校网站的建设目标是什么意思/学seo需要学什么专业
在Windows系统下,一般刷机命令是在cmd路径下执行如下命令: 1、adb reboot bootloader2、fastboot flash boot boot路径3、fastboot flash recovery recovery路径4、fastboot flash system sytem路径5、fastboot flash userdata userdata路径6 、fastboot…...
网站模板后台怎么做/百度seo排名培训优化
jenkins默认的邮件通知 我先讲解下,默认的。 jenkins默认就有一个邮件通知,只是太简单的,不能个性化或者说定制化。 设置系统管理员邮件地址 邮件通知 ①SMTP服务器:如果你使用的是公司邮箱,那么就询问你自己公司里的运…...