7.存储过程中的事务管理(7/10)

1.引言

在现代信息技术快速发展的今天,数据库已经成为存储和管理数据的核心工具。无论是企业级应用、电子商务平台还是个人项目,数据库都扮演着不可或缺的角色。在这些应用中,数据的完整性、一致性和可靠性是至关重要的。这就引出了数据库事务的概念,它是确保数据操作安全性的关键机制。

数据库事务的重要性

数据库事务是一组不可分割的数据库操作序列,这些操作要么全部成功,要么全部失败。事务的重要性在于它能够维护数据库的完整性,即使在发生错误或系统故障的情况下也能保持数据的正确性。事务的ACID属性——原子性、一致性、隔离性和持久性——是数据库事务的核心特征,它们共同确保了数据库操作的可靠性。

  • 原子性保证了事务中的所有操作要么全部完成,要么全部不做,不会出现部分完成的情况。
  • 一致性确保了事务的执行将数据库从一个一致的状态转换到另一个一致的状态。
  • 隔离性保证了并发执行的事务之间的操作相互隔离,避免了数据的不一致性。
  • 持久性确保了一旦事务提交,其结果就是永久性的,即使系统发生故障也不会丢失。

事务管理在维护数据完整性中的作用

在复杂的业务逻辑中,经常需要执行一系列操作,这些操作必须全部成功才能保证数据的完整性。例如,在银行转账的场景中,从一个账户扣除金额并同时增加到另一个账户,这两个操作必须都成功执行,才能保证账目的平衡。如果只执行了其中一个操作,就会导致数据不一致的问题。事务管理通过确保这些操作在事务中要么全部成功,要么全部回滚,从而维护了数据的完整性。

此外,事务管理还有助于提高数据库的并发处理能力。通过合理的隔离级别设置,事务管理可以控制并发事务之间的交互,避免了更新丢失、脏读、不可重复读和幻读等问题。

存储过程中事务管理的概述

存储过程是一组为了执行特定任务而预编译并存储在数据库中的SQL语句。在存储过程中使用事务可以封装复杂的业务逻辑,确保一系列数据库操作的原子性和一致性。存储过程中的事务管理允许开发者在一个控制环境中执行事务,这不仅提高了代码的可维护性,还简化了错误处理和调试过程。

在存储过程中管理事务通常涉及以下几个步骤:

  1. 开始事务:明确地开始一个事务,为接下来的操作提供一个事务上下文。
  2. 执行操作:在事务中执行一系列的数据库操作,如插入、更新和删除等。
  3. 错误处理:在操作过程中检测到错误时,回滚事务以撤销所有已执行的操作。
  4. 提交事务:如果所有操作都成功执行,提交事务以保存更改。

通过在存储过程中有效地管理事务,开发者可以确保数据库操作的安全性和数据的完整性,从而提高应用程序的稳定性和可靠性。在接下来的部分中,我们将深入探讨事务的概念、在存储过程中使用事务的方法以及事务的提交和回滚机制。

2.事务的概念

定义与目的

事务是数据库管理系统中的一个核心概念,它定义了一组不可分割的数据库操作,这些操作共同完成一个完整的业务逻辑。事务的目的是确保数据库状态的转换是安全可靠的,即使在并发操作或系统故障的情况下也能保持数据的完整性和一致性。简而言之,事务是一种机制,它将多个数据库操作捆绑在一起,形成一个单一的工作单元,这个单元要么完全执行,要么完全不执行。

事务作为数据库操作的逻辑单元

事务将多个数据库操作组合在一起,这些操作在逻辑上是相关的,它们共同构成了一个完整的业务过程。例如,在银行转账的场景中,从一个账户扣款和向另一个账户存款这两个操作必须作为一个整体来处理,这就是一个典型的事务。如果扣款操作成功而存款操作失败,将会导致数据不一致的问题。

确保操作的原子性、一致性、隔离性和持久性

事务通过其ACID属性来确保数据库操作的可靠性:

  1. 原子性(Atomicity):原子性意味着事务中的所有操作要么全部完成,要么全部不完成。如果事务中的某个操作失败,整个事务将被回滚到操作之前的状态。原子性确保了事务的执行不会结束在中间某个点,从而避免了数据的不一致性。

  2. 一致性(Consistency):一致性保证了事务的执行将数据库从一个一致的状态转换到另一个一致的状态。事务执行前后,数据库的完整性约束必须得到满足。这意味着,即使在事务执行过程中发生错误,数据库仍然保持一致性,不会留下不完整或错误的数据。

  3. 隔离性(Isolation):隔离性确保了并发执行的事务之间的操作是相互隔离的,一个事务的中间状态对其他事务是不可见的。这种隔离机制可以防止事务之间的相互干扰,避免了数据的不一致性和脏读等问题。

  4. 持久性(Durability):持久性保证了一旦事务被提交,它对数据库的修改就是永久性的,即使系统发生故障也不会丢失。这意味着,一旦事务完成,其结果就是可靠的,可以被其他事务所依赖。

事务的生命周期

事务的生命周期包括事务的开始、执行、提交或回滚以及结束。以下是事务生命周期的详细描述:

  1. 事务的开始:事务的开始通常是由应用程序或数据库管理系统显式地通过BEGIN TRANSACTION或类似语句来标识的。从这一点开始,所有后续的数据库操作都将属于这个事务,直到事务被提交或回滚。

  2. 事务的执行:在事务执行阶段,应用程序将执行一系列数据库操作,如INSERTUPDATEDELETE等。这些操作都是事务的一部分,它们的执行结果将被临时保存,直到事务被提交。

  3. 事务的提交或回滚:如果事务中的所有操作都成功执行,应用程序可以通过COMMIT语句来提交事务,使所有更改永久生效。如果事务中有任何操作失败,或者应用程序检测到错误,可以通过ROLLBACK语句来回滚事务,撤销所有已执行的操作。

  4. 事务的结束:事务的结束标志着事务生命周期的完成。提交事务后,事务对数据库的更改将被永久保存;回滚事务后,事务的所有更改将被撤销,数据库状态回到事务开始前的状态。

事务的可见性和其他事务的关系

事务的隔离性还涉及到事务的可见性问题。在并发环境下,不同的事务可能同时对同一数据进行操作。事务的隔离级别定义了不同事务之间的可见性,以及它们如何相互影响。数据库管理系统通常提供不同的隔离级别,如读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。每个隔离级别都对事务的可见性和并发控制提出了不同的要求,以平衡数据的一致性和系统的并发性能。

事务的可见性还涉及到事务的锁定机制。在执行过程中,事务可能会锁定某些数据行或数据页,以防止其他事务的干扰。这些锁定通常会在事务提交或回滚时被释放,从而允许其他事务访问这些数据。

总的来说,事务的概念是数据库管理系统中确保数据完整性和一致性的关键。通过理解事务的生命周期和ACID属性,开发者可以更好地设计和实现数据库应用程序,确保在并发和故障情况下数据的安全性和可靠性。

3.在存储过程中使用事务

存储过程简介

存储过程的定义

存储过程是一组为了执行特定任务而预编译并存储在数据库中的SQL语句集合。它类似于一个可重用的程序,可以接受输入参数、返回结果,并且包含一系列的T-SQL命令。

存储过程的优点

  1. 性能提升:由于存储过程是预编译的,因此执行速度比单独执行的SQL语句更快。
  2. 代码重用:存储过程允许开发者编写可在多个程序中调用的可重用代码。
  3. 减少网络流量:存储过程在数据库服务器上执行,减少了客户端和服务器之间的数据传输。
  4. 安全性:通过存储过程,可以限制用户直接访问数据库,只允许他们执行存储过程,从而提高了数据的安全性。
  5. 简化应用程序逻辑:存储过程允许将复杂的业务逻辑封装在数据库端,简化了应用程序的代码。

事务的启动

BEGIN TRANSACTION语句的使用

在存储过程中,事务可以通过BEGIN TRANSACTION语句显式启动。这标志着一个新的事务的开始,后续的数据库操作将属于这个事务,直到提交(COMMIT)或回滚(ROLLBACK)。

sql

BEGIN TRANSACTION;
-- SQL operations
COMMIT; -- 或 ROLLBACK;

隐式和显式事务的区别

  • 隐式事务:在没有显式开始事务的情况下,数据库管理系统可能会自动开始一个新的事务。这通常发生在执行单个数据库操作时,如INSERTUPDATEDELETE
  • 显式事务:通过使用BEGIN TRANSACTION语句,开发者可以明确地开始一个事务,并控制事务的边界。这允许更细粒度的控制和更复杂的错误处理。

事务中的SQL操作

在事务中执行的常见SQL语句

在事务中,可以执行多种SQL语句,包括但不限于:

  • INSERT:插入新数据。
  • UPDATE:更新现有数据。
  • DELETE:删除数据。
  • SELECT:查询数据,通常不会引起数据变更,但有助于业务逻辑决策。

事务中操作的顺序和逻辑

事务中的操作应该按照逻辑顺序执行,以确保数据的完整性和一致性。例如,在执行更新操作前,可能需要先进行数据验证或条件检查。

事务的保存点

保存点的概念和作用

保存点是事务中一个特定的点,可以在这里记录事务的状态。如果在事务的后续操作中发生错误,可以回滚到这个保存点,而不是回滚整个事务。

如何设置和使用保存点

在SQL Server中,可以使用SAVE TRANSACTION语句来设置保存点,并给保存点指定一个名称。之后,可以使用ROLLBACK TRANSACTION语句回滚到指定的保存点。

sql

BEGIN TRANSACTION;
-- Some operations
SAVE TRANSACTION PointA;
-- More operations
ROLLBACK TRANSACTION PointA; -- Rollback to PointA
COMMIT; -- 或 ROLLBACK;

使用保存点可以在复杂的事务中提供更细粒度的控制,允许开发者在必要时撤销部分操作,而不是整个事务。这对于维护数据的完整性和提高应用程序的健壮性非常有用。

4.事务的提交和回滚

事务的提交(COMMIT)和回滚(ROLLBACK)是数据库事务管理中两个基本且关键的操作。它们决定了事务中进行的数据库更改是被永久保存还是临时性的。

事务的提交

COMMIT语句的作用

COMMIT语句用于结束一个事务,并把该事务的所有更改永久保存到数据库中。一旦事务被提交,更改就会对所有其他事务可见。

提交事务对数据库的永久性影响

提交事务后,所有在事务中执行的INSERTUPDATEDELETE操作都会永久地改变数据库的数据。这意味着这些更改不能被单个事务内部的操作所撤销,只能通过另一个事务来进一步修改。

提交事务的注意事项

  • 确保事务中的所有操作都已正确执行,且数据处于一致状态。
  • 在提交事务前,进行必要的数据验证和错误检查。
  • 考虑事务的隔离级别,以避免不可预见的并发问题。
  • 在使用自动提交模式的数据库中,每个单独的SQL语句都被视为一个事务。在这种情况下,COMMIT语句可能不是必须的。

事务的回滚

ROLLBACK语句的作用

ROLLBACK语句用于撤销一个事务中的所有操作。如果事务中出现了错误,或者业务逻辑条件没有被满足,ROLLBACK可以确保数据库状态回到事务开始之前的状态。

回滚事务对数据库状态的影响

回滚事务将撤销事务中所有已执行的数据库更改。这意味着数据库将恢复到事务开始前的状态,就好像事务中的操作从未执行过一样。

回滚事务的策略和注意事项

  • 在检测到错误时立即回滚事务,以避免数据不一致。
  • 使用TRY...CATCH块来捕获错误,并在CATCH块中执行ROLLBACK
  • 在长事务中定期检查业务逻辑条件,以决定是否需要回滚。
  • 了解数据库的锁定机制,因为回滚可能会释放持有的锁,影响并发性能。

事务的链式操作

AND CHAIN子句的使用

在某些数据库管理系统中,AND CHAIN子句可以用于在提交或回滚一个事务后自动开始一个新的事务。这被称为链式事务。

sql

COMMIT TRANSACTION AND CHAIN;
ROLLBACK TRANSACTION AND CHAIN;

使用AND CHAIN子句可以确保在提交或回滚当前事务后,立即开始一个新的事务,而不需要显式地再次使用BEGIN TRANSACTION

链式事务的管理和控制

链式事务可以简化事务管理,特别是在需要连续执行多个事务时。然而,它们也增加了事务管理的复杂性,因为需要跟踪和管理多个事务的边界。以下是管理链式事务的一些建议:

  • 明确事务的边界,确保每个事务只包含逻辑上相关的操作。
  • 在需要时使用AND NO CHAIN来阻止自动开始新的事务。
  • 监控事务的嵌套和链式操作,以避免过度复杂的事务结构。
  • 在事务链中使用保存点,以提供额外的回滚点和更细粒度的控制。

通过合理地使用提交、回滚和链式操作,开发者可以有效地管理数据库事务,确保数据的完整性和一致性,同时提高应用程序的健壮性和可靠性。

5.存储过程中的事务管理策略

有效的事务管理对于确保数据库操作的原子性、一致性、隔离性和持久性至关重要。在存储过程中,这意味着需要采取一系列策略来管理事务的生命周期、错误处理、嵌套以及性能优化。

错误处理与事务

TRY...CATCH语句的使用

在存储过程中,TRY...CATCH语句用于捕获和处理错误。TRY块包含可能会引发错误的SQL语句,而CATCH块包含错误处理逻辑。

sql

BEGIN TRYBEGIN TRANSACTION;-- 一系列数据库操作COMMIT TRANSACTION;
END TRY
BEGIN CATCHROLLBACK TRANSACTION;-- 错误处理逻辑,如记录错误信息、通知用户等
END CATCH

异常处理中的事务回滚

CATCH块中,一旦发现事务因为错误而无法继续,应立即执行ROLLBACK TRANSACTION语句来回滚事务。这可以确保数据库状态回到事务开始之前,避免不一致性。

事务的嵌套

嵌套事务的概念

嵌套事务指的是在一个已有的事务内部启动另一个事务。在某些数据库管理系统中,如SQL Server,嵌套事务也称为保存点,它们允许在事务内部设置一个或多个回滚点。

嵌套事务的管理

管理嵌套事务时,需要确保每个嵌套的事务都能够正确地提交或回滚。在SQL Server中,可以使用SAVE TRANSACTION来创建保存点,并通过指定保存点名称来回滚到该点。

sql

BEGIN TRANSACTION;
SAVE TRANSACTION PointA;
-- 更多操作
SAVE TRANSACTION PointB;
-- 如果发生错误
ROLLBACK TRANSACTION PointA;
-- 或回滚整个事务
ROLLBACK TRANSACTION;

事务的优化

事务大小和性能的关系

事务的大小直接影响其性能。较大的事务可能会锁定多个数据页,增加锁定争用并降低并发性能。另一方面,较小的事务可能会减少锁定争用,但频繁的事务提交会增加系统开销。

减少事务争用和锁定的策略

为了优化事务性能和减少锁定争用,可以采取以下策略:

  1. 保持事务简短:尽可能保持事务简短,减少事务的执行时间。
  2. 批量操作:对于大量数据的更新或插入,使用批量操作可以减少事务数量。
  3. 优化索引:确保适当的索引可以减少查询时间,从而减少事务的锁定时间。
  4. 使用合适的隔离级别:较低的隔离级别(如读已提交)可以减少锁定争用,但需要仔细考虑并发影响。
  5. 监控和调整:使用数据库监控工具来观察事务的性能和锁定行为,根据实际情况进行调整。

通过采取这些策略,开发者可以有效地管理存储过程中的事务,确保数据的完整性和一致性,同时提高数据库应用程序的性能和可伸缩性。

6.结论

事务管理是数据库系统中的一个关键组成部分,特别是在存储过程中,它确保了数据库操作的原子性、一致性、隔离性和持久性。通过合理地使用事务,开发者可以构建出可靠的数据库应用程序,这些应用程序能够在多种情况下保持数据的完整性和准确性。

事务管理在存储过程中的重要性

事务管理在存储过程中至关重要,因为它允许将一系列数据库操作封装为一个单一的工作单元。这确保了这些操作要么全部成功,要么在遇到错误时全部撤销,从而避免了数据不一致的问题。此外,事务管理还有助于提高数据库的并发处理能力,通过隔离级别控制并发事务之间的交互,避免了更新丢失、脏读和不可重复读等问题。

合理使用事务管理以提高数据库操作的可靠性和效率

合理使用事务管理可以显著提高数据库操作的可靠性和效率。通过将相关的数据库操作组合在事务中,可以确保这些操作的原子性和一致性。此外,通过合理的错误处理和事务回滚机制,可以在遇到错误时快速恢复到稳定状态,减少数据损坏的风险。事务的优化,如调整事务大小和选择合适的隔离级别,可以减少锁定争用,提高并发性能。

事务管理的最佳实践和建议

  • 明确事务边界:确保每个事务包含一组逻辑相关的操作,并在操作完成前不要跨越多个事务。
  • 使用适当的隔离级别:根据业务需求选择合适的隔离级别,以平衡数据一致性和并发性能。
  • 避免长事务:尽量减少事务的执行时间,以减少锁定资源的时间和潜在的死锁风险。
  • 监控事务性能:定期监控和分析事务的性能,以识别和解决性能瓶颈。
  • 错误处理:在存储过程中使用TRY...CATCH块来捕获和处理错误,确保在异常情况下能够正确回滚事务。

7.附录

事务管理的相关SQL命令总结

  • BEGIN TRANSACTION:开始一个新的事务。
  • COMMIT:提交当前事务,使所有更改永久生效。
  • ROLLBACK:回滚当前事务,撤销所有更改。
  • SAVE TRANSACTION:设置一个保存点,允许在事务中回滚到该点。
  • ROLLBACK TRANSACTION TO SAVEPOINT:回滚到指定的保存点。

事务管理的常见问题和解决方案

  • 死锁:当两个或多个事务相互等待对方持有的锁时发生。解决方案包括优化事务大小、使用锁定超时设置和避免不必要的锁定。
  • 脏读:一个事务读取了另一个事务未提交的更改。解决方案是提高事务的隔离级别。
  • 不可重复读:在一个事务中,多次读取同一数据集合时得到不同的结果。解决方案是使用更高的隔离级别,如可重复读或串行化。

进一步阅读和资源推荐

  • SQL Server Books Online:提供了关于SQL Server中事务管理的详细信息。
  • Oracle Database Concepts:详细介绍了Oracle数据库中的事务管理。
  • MySQL Reference Manual:涵盖了MySQL中的事务处理和隔离级别。
  • PostgreSQL Documentation:包含了PostgreSQL中的事务管理概念和实践。

通过深入研究这些资源,开发者可以更深入地理解事务管理的复杂性,并掌握在不同数据库系统中实现事务管理的最佳实践。


 8.学术会议

重要信息

参会网站:【参会入口】

截稿时间:以官网信息为准

大会时间:2024年11月8-10日

大会地点:中国-南京

提交检索:EI Compendex、Scopus

更多了解:【高录用 / 人工智能 / EI检索】2024年人工智能与数字图书馆国际学术会议(AIDL 2024)_艾思科蓝_学术一站式服务平台

*现场可领取会议资料(如纪念品、参会证书等),【click】投稿优惠、优先审核!

支持单位:

​​​

​​​

参会方式

1、作者参会:一篇录用文章允许1名作者免费参会;

2、主讲嘉宾:申请主题演讲,由组委会审核;

3、口头演讲:申请口头报告,时间为15分钟;

4、海报展示:申请海报展示,A1尺寸,彩色打印;

5、听众参会:不投稿仅参会,也可申请演讲及展示;

6、论文投稿、口头报告、海报展示、听众参会【参会入口】

​​

9.写在最后

在这篇博客中,我们深入探讨了事务管理在存储过程中的重要性和实践。事务是数据库操作的逻辑单元,确保了操作的原子性、一致性、隔离性和持久性。通过合理地使用事务,我们可以构建出可靠的数据库应用程序,这些应用程序能够在多种情况下保持数据的完整性和准确性。

事务的概念

事务通过其ACID属性——原子性、一致性、隔离性和持久性——确保了数据库操作的可靠性。事务的生命周期包括开始、执行、提交或回滚以及结束。在并发环境中,事务的隔离级别控制了事务之间的可见性,防止了数据不一致性和脏读等问题。

在存储过程中使用事务

存储过程是预编译的SQL语句集合,它们提供了一个可重用和性能优化的代码执行方式。在存储过程中使用事务可以封装复杂的业务逻辑,确保一系列数据库操作的原子性和一致性。我们探讨了如何启动事务、执行SQL操作、使用保存点以及如何提交或回滚事务。

事务的提交和回滚

事务的提交(COMMIT)和回滚(ROLLBACK)是管理事务生命周期的关键操作。提交事务会将更改永久保存到数据库中,而回滚事务则会撤销所有更改。我们还讨论了链式事务的概念,即在一个事务提交或回滚后自动开始一个新的事务。

事务管理策略

有效的事务管理策略包括错误处理、嵌套事务的管理以及事务性能的优化。使用TRY...CATCH块进行错误处理,可以在异常情况下确保事务的正确回滚。嵌套事务允许在事务内部设置回滚点,而事务优化则涉及调整事务大小和隔离级别以提高性能。

结论

事务管理是确保数据库操作安全性的关键机制。通过在存储过程中正确使用事务,开发者可以确保数据的完整性和一致性,即使在发生错误或系统故障的情况下也能保持数据库状态的正确性。合理的事务管理不仅提高了数据库操作的可靠性,还提升了效率。

附录

  • SQL命令:总结了事务管理中常用的SQL命令,如BEGIN TRANSACTIONCOMMITROLLBACKSAVE TRANSACTION
  • 常见问题:讨论了事务管理中的一些常见问题,如死锁和脏读,以及它们的解决方案。
  • 推荐阅读:提供了进一步学习和研究事务管理的资源,包括不同数据库系统的官方文档。

通过这篇博客,我们希望能够为开发者提供一个关于存储过程中事务管理的全面指南,帮助大家在实际开发中更好地应用事务,构建出更加健壮和可靠的数据库应用程序。


相关文章推荐

1.MySQL存储过程基础(1/10)

2.创建第一个MySQL存储过程(2/10)

3.使用条件语句编写存储过程(3/10)

4.循环结构在存储过程中的应用(4/10)

5.错误处理在存储过程中的重要性(5/10)

6.存储过程中的游标使用(6/10)

7.存储过程中的事务管理(7/10) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450350.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3--通用组件 popup 封装

在业务场景中,假设这里我们要实现点击 汉堡 后,会有一个自下而上的popup弹出层 因此这里我们需要先实现这样的一个公共的popup弹出层 那么我们这里的popup弹出层需要具备以下能力: 当popup展开时,内容视图应该不属于任何一个组件内部,而应该直接被插入到body下,这里需要…

【C++11】可变模板参数详解

个人主页:chian-ocean 文章专栏 C 可变模板参数详解 1. 引言 C模板是现代C编程中一个非常强大且灵活的工具。在C11标准中,引入了可变模板参数(variadic templates),它为模板编程带来了革命性改变。它的出现允许我们…

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-8

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件,用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB…

【云岚到家】-day07-5-实战项目-优惠券活动-活动管理

【云岚到家】-day07-5-实战项目-优惠券活动-活动管理 2 优惠券活动管理2.1 需求分析2.1.1 **新增优惠券活动**1)界面原型2)数据分析3)数据校验 2.1.2 **查询优惠券活动**1)界面原型 2.2.3 **修改优惠券活动**1) 界面原型2&#xf…

Qt-窗口对话框QMessageBox的使用(51)

目录 前言 描述 使用 自定义按钮 简单方式创建 前言 Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。常⽤标准对话框如下: 描述 消息对话框 QMessageBox 消息对话框是应⽤程序中最常⽤的界⾯元素。消息…

D3.js(五):实现组织架构图

实现组织架构图 效果初始化组织机构容器并实现缩放平移功能效果源码 渲染节点效果源码 渲染连线效果源码 完整源码 效果 初始化组织机构容器并实现缩放平移功能 效果 源码 import {useEffect} from react; import TreeData from ./json/tree-data.json;interface ITreeConfig…

crd介绍

在 Kubernetes 中,CRD(Custom Resource Definition)和 CR(Custom Resource)是用于扩展 Kubernetes 功能的机制。它们的关系和使用可以用一个完整案例来说明。 定义 CRD(Custom Resource Definition&#x…

中后台 B 端产品设计

中后台 B 端产品设计 一、设计目标二、设计流程三、设计要点四、相关模块 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! 中后台B端产品设计: 是指针对企业内部业务人员和管理…

python+appium+雷电模拟器安卓自动化及踩坑

一、环境安装 环境:window11 1.1 安装Android SDK AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 这里面任选一个就可以,最终下载完主要要安装操作安卓的工具adb,安装这个步骤的前提是要…

Linux驱动开发——设备树

文章目录 1 什么是设备树?2 DTS、DTB和DTC3 DTS语法3.1 dtsi头文件3.2 设备节点3.3 标准属性3.4 根节点compatible属性3.5 向节点追加或修改内容 4 创建小型模板设备树5 设备树在系统中的体现6 绑定信息文档7 设备树常用OF操作函数7.1 查找节点的OF函数7.2 查找父/子…

【工具变量】上市公司当年是否发生财务重述指标整理Stata代码(2000-2023年)

计算说明:使用财务重述公告中所更正年报对应的年度作为财务重述的年度,若企业年报中发生财务重述取1,否则取0。本示例的财务重述是指上市公司对以前年度财务报表中的会计差错进行更正和披露,不包括股票拆分、股票红利、终止经营、…

Java 类和对象详解(上 )

个人主页: 鲤鱼王打挺-CSDN博客 Java专栏:https://blog.csdn.net/2401_83779763/category_12801101.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12801101&sharereferPC&sharesource2401_83779763&sharefromfrom_link &…

SwiftUI 如何取得 @Environment 中 @Observable 对象的绑定?

概述 从 SwiftUI 5.0(iOS 17)开始,苹果推出了全新的 Observation 框架。它作为下一代内容改变响应者全面参与到数据流和事件流的系统中。 有了 Observation 框架的加持,原本需要多种状态类型的 SwiftUI 视图现在只需要 3 种即可大…

R语言详解predict函数

R语言中predict函数在建立模型&#xff0c;研究关系时常用。但是不同type得到的结果常常被混为一谈&#xff0c;接下来&#xff0c;探讨predict得到的不同结果。 #数据 set.seed(123) n<-1000 age<-rnorm(n,mean50,sd10) gender<-rbinom(n,1,0.5) disease<-rbinom…

CDC变更数据捕捉技术是什么?和ETL有什么不同?

一、什么是CDC技术? 变更数据捕获&#xff08;Change Data Capture&#xff0c;简称 CDC&#xff09;是一种用于识别和跟踪数据源中发生变化的数据的技术。 工作原理&#xff1a; 1.监测数据源&#xff1a;CDC 工具会持续监测指定的数据源&#xff0c;如数据库表、文件系统…

【踩坑随笔】Tensorflow-GPU训练踩坑

一个无语的坑&#xff0c;4060单卡训练&#xff0c;8G内存本来就不够&#xff0c;还没开始训练就已经爆内存了&#xff0c;但是居然正常跑完了训练&#xff0c;然后一推理发现结果就是一坨。。。往回翻日志才发现原来中间有异常。 首先解决第一个问题&#xff1a;Could not lo…

k8s部署Kafka集群超详细讲解

准备部署环境 Kubernetes集群信息 NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2 Kafka&#xff1a;3.7.1版本&#xff0c;apche版本 Zookeeper&#xff1a;3.6.3版本 准备StorageClass # kubectl get sc NAME PROVISIONER RECLA…

音频文件处理 m4a 格式转为 wav 格式 - python 实现

在做音频算法开发时&#xff0c;有时获取的样本为 .m4a格式需要将其转为 .wav,方便之后的数据处理。 安装 python 库&#xff1a; pip install AudioSegment 代码实现具体如下&#xff1a; #-*-coding:utf-8-*- # date:2024-10 # Author: DataBall - XIAN # Function: 音频文件…

LIN从节点:波特率测试

文章目录 1、为什么需要测&#xff1f;2、如何实现测试&#xff1f;3、测试结果4、注意事项 1、为什么需要测&#xff1f; 调节波特率的变化&#xff0c;使主节点同步场位速率变化&#xff0c;验证从节点能否通过同步段进行调节自身位速率。对应ISO17987协议。 2、如何实现测…