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

「MySQL」MySQL面试题全解析:常见问题与高级技巧详解

MySQL面试题全解析:常见问题与高级技巧详解

  • 1. 什么是数据库?
  • 2. 什么是MySQL?
  • 3. 什么是SQL?
  • 4. 什么是主键?
  • 5. 什么是外键?
  • 6. 请解释索引是什么以及为什么使用索引?
  • 7. 什么是事务?
  • 8. 什么是ACID属性?
  • 9. 请解释SQL注入攻击以及如何防范它?
  • 10. LEFT JOIN和INNER JOIN有什么区别?
  • 11. 如何优化MySQL查询性能?
  • 12. 什么是视图?
  • 13. 什么是触发器?
  • 14. 什么是存储过程?
  • 15. 如何备份和恢复MySQL数据库?
  • 16. 什么是归档日志?
  • 17. 什么是数据库事务隔离级别?
  • 18. 什么是回滚日志?
  • 19. 什么是查询优化器?
  • 20. 请解释什么是垂直分区和水平分区?
  • 21. 什么是数据库复制?
  • 22. 如何处理数据库的并发冲突?
  • 23. 在MySQL中,常见的索引类型有哪些?
  • 24. 什么是半同步复制?
  • 25. 请解释什么是查询缓存,并说明为什么在MySQL 8.0中被弃用?
  • 26. 什么是索引覆盖?
  • 27. 什么是数据库连接池,并举例说明如何配置数据库连接池?
  • 28. 如何处理MySQL中的死锁?
  • 29. 什么是MySQL存储引擎?
  • 30. 请解释什么是数据库范式,并列举出前三个范式。
  • 31. 什么是索引选择性,为什么它很重要?
  • 32. 什么是覆盖索引,它如何提高查询性能?
  • 33. 请解释B树和B+树的区别和应用场景。
  • 34. 什么是优化器统计信息,它如何影响查询执行计划?
  • 35. 什么是延迟关联(Late Join),它如何优化复杂查询?
  • 36. 请解释MySQL中的并行查询,以及如何启用并配置并行查询?
  • 37. 什么是复制滞后,如何减少主从复制的延迟?
  • 38. 请解释MySQL中的锁机制,包括共享锁和排他锁。
  • 39. 什么是死锁,如何检测和解决死锁?
  • 40. 请解释MySQL中的悲观锁和乐观锁,以及它们各自的应用场景。
  • 41. MySQL的存储引擎有哪些?
  • 42. 怎样实现外键约束
  • 43. MySQL中使用什么函数来保留小数?

1. 什么是数据库?

回答:数据库是一个组织和存储数据的集合,可通过各种方式对数据进行访问、管理和操作。

2. 什么是MySQL?

回答:MySQL是一种开源的关系型数据库管理系统,广泛用于Web应用程序的后端数据存储。

3. 什么是SQL?

回答:SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言,用于查询、插入、更新和删除数据。

4. 什么是主键?

回答:主键是唯一标识数据库表中每条记录的字段,它的值必须是唯一且非空。

5. 什么是外键?

回答:外键是一个表中的字段,它指向另一个表中的主键,用于建立表之间的关联关系。

6. 请解释索引是什么以及为什么使用索引?

回答:索引是一种数据结构,用于提高数据库查询效率。它可以帮助快速定位和访问表中的特定数据,减少全表扫描的开销。

7. 什么是事务?

回答:事务是一组数据库操作,要么全部成功提交,要么全部失败回滚。它确保了数据库的一致性和可靠性。

读未提交:在读未提交的隔离级别下,一个事务可以读取到其他事务尚未提交的数据,可能会导致脏读(读取到未提交的数据)。这种隔离级别最低,没有提供足够的一致性和隔离性保证,容易引发数据不一致的问题。

读已提交:在读已提交的隔离级别下,一个事务只能读取到其他事务已经提交的数据。这样可以避免脏读的问题,但是可能会出现不可重复读的情况(同一个事务内多次读取同一数据可能得到不同的结果),因为其他事务可以在事务执行期间修改数据。

可重复读:在可重复读的隔离级别下,一个事务在执行期间多次读取同一数据时,能够看到一致的结果,即使其他事务对数据进行了修改。通过使用锁或多版本控制(MVCC)等机制,可以防止不可重复读的情况发生。这个隔离级别提供了更高的隔离性。

串行化:在串行化的隔离级别下,数据库会确保每个事务都按照顺序依次执行,不存在并发执行的情况。这是最高的隔离级别,可以避免脏读、不可重复读和幻读(在一个事务的两次查询中,由于其他事务的插入操作,结果集的行数发生了变化)等问题。但是串行化会牺牲并发性能,因为事务之间无法并行执行。

综上所述:读未提交隔离级别最低,读已提交和可重复读提供不同程度的隔离性,而串行化提供最高级别的隔离性。选择合适的隔离级别取决于应用场景的需求和平衡并发性能与数据一致性的考虑。

MySQL数据库的各个版本默认采用的隔离级别是有所不同的。下面是MySQL各个版本中默认的隔离级别:

  1. MySQL 5.6及之前的版本:默认隔离级别为“可重复读”

  2. MySQL 5.7:默认隔离级别为“可重复读”。此外,MySQL 5.7引入了新的隔离级别“读已提交”,可以通过设置session参数来将隔离级别切换到“读已提交”。

  3. MySQL 8.0:默认隔离级别为“可重复读”(REPEATABLE READ)。与MySQL 5.7相同,MySQL 8.0也支持“读已提交”隔离级别。

需要注意的是,虽然上述是MySQL各个版本的默认隔离级别,但实际使用中我们可以通过设置事务隔离级别来覆盖默认设置。可以使用以下语句设置事务隔离级别:

SET TRANSACTION ISOLATION LEVEL <隔离级别>;

8. 什么是ACID属性?

回答:ACID是指事务的四个基本属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

原子性(Atomicity):原子性是指在数据库事务中,要么所有操作都成功执行并永久保存,要么所有操作都不执行,回滚到事务开始状态。就好比一个事务要么全部成功,要么全部失败,不能只完成部分操作。

一致性(Consistency):一致性是指在数据库事务中,事务执行前后数据库的状态必须保持一致。换句话说,事务的执行不能破坏数据库的完整性和业务规则。

隔离性(Isolation):隔离性是指多个并发事务之间互不干扰,每个事务都感觉不到其他事务的存在。事务的隔离性要求并发执行的事务不会产生相互影响的问题,如读取到未提交的数据或脏读取等。

持久性(Durability):持久性是指在事务提交后,对数据库的修改将被永久保存,即使出现系统故障也不会丢失。一旦事务提交成功,其对数据库的变更操作将永久生效,即使系统崩溃或断电,数据库也能够通过日志等机制保持更新的数据。

综上所述,原子性确保事务要么全部执行成功,要么全部回滚;一致性保证事务执行前后数据库的状态一致;隔离性保证并发事务之间互不干扰;持久性确保事务提交后数据库的变更永久保存。这四个特性共同构成了数据库事务的ACID特性。

9. 请解释SQL注入攻击以及如何防范它?

回答:SQL注入是利用恶意输入修改或绕过应用程序的SQL查询的攻击方式。为了防范SQL注入,可以使用参数化查询、输入验证和限制数据库访问权限等措施。

10. LEFT JOIN和INNER JOIN有什么区别?

回答:LEFT JOIN返回左表中的所有记录和右表中匹配的记录,而INNER JOIN只返回两个表中匹配的记录。

11. 如何优化MySQL查询性能?

回答:可以通过创建合适的索引、优化查询语句、使用适当的数据类型、分批处理数据等方式来优化MySQL查询性能。

12. 什么是视图?

回答:视图是一个虚拟表,它是根据存储在其他表中的数据动态生成的,可以简化复杂的查询操作。

13. 什么是触发器?

回答:触发器是与数据库表相关联的特殊存储过程,它在插入、更新或删除表中的数据时自动执行。

14. 什么是存储过程?

回答:存储过程是一组预定义的SQL语句,可在数据库中保存并多次调用。它可以提高性能并减少网络流量。

15. 如何备份和恢复MySQL数据库?

回答:可以使用mysqldump命令来备份MySQL数据库,并使用mysql命令行工具或MySQL Workbench等工具来恢复数据库。

16. 什么是归档日志?

回答:归档日志是MySQL中的日志文件,用于记录数据库中的所有更改操作,从而实现数据的灾难恢复和复制。

17. 什么是数据库事务隔离级别?

回答:数据库事务隔离级别定义了并发事务之间的可见性和影响范围。常见的隔离级别包括读未提交、读已提交、可重复读和串行化。

18. 什么是回滚日志?

回答:回滚日志是MySQL中的一种重要日志文件,用于回滚未完成的事务和恢复数据库到一致状态。

19. 什么是查询优化器?

回答:查询优化器是MySQL的组件之一,它根据查询语句和表结构等信息选择最优的执行计划以提高查询性能。

20. 请解释什么是垂直分区和水平分区?

回答:垂直分区是指将表按列进行划分,每个分区存储不同的列数据;水平分区是指将表按行进行划分,每个分区存储不同的行数据。

21. 什么是数据库复制?

回答:数据库复制是指将一个数据库的副本创建到另一个位置或服务器,以实现数据备份、负载均衡和高可用性等目的。

22. 如何处理数据库的并发冲突?

回答:可以使用锁机制、事务隔离级别、乐观锁或悲观锁等技术来处理数据库的并发冲突。

23. 在MySQL中,常见的索引类型有哪些?

回答:

  1. 主键索引(Primary Key Index):主键索引是针对表中唯一标识一条记录的一列或多列创建的索引。主键索引具有非常高的性能和查询效率,用于快速定位和处理数据。在创建表时,可以通过PRIMARY KEY关键字指定主键索引。

  2. 唯一索引(Unique Index):唯一索引是针对表中某个列或多个列创建的索引,它要求每个索引值都是唯一的。唯一索引可以确保数据的完整性和正确性,并且提高了查询效率。在创建表时,可以通过UNIQUE关键字指定唯一索引。

  3. 普通索引(Normal Index):普通索引是针对表中某个列或多个列创建的最基本的索引类型,它可以加快数据查询的速度。在创建表时,可以通过INDEX关键字指定普通索引。

  4. 全文索引(Fulltext Index):全文索引是针对表中文本内容列创建的索引,它支持全文搜索和全文匹配等高级搜索功能,提高了数据库检索的效率。在创建表时,可以通过FULLTEXT关键字指定全文索引。

这些索引类型之间的区别主要在于它们的存储方式和索引算法,以及适用场景。例如,主键索引和唯一索引都可以用于确保数据完整性,但主键索引是针对表中唯一标识一条记录的一列或多列创建的,而唯一索引限制索引列中的值互不相同。

总的来说,索引是MySQL中非常重要的性能优化手段之一,可以大幅度提高数据库查询效率和响应速度。在使用索引时,需要根据实际业务需求和数据访问模式合理选择并配置不同类型的索引,以达到最佳的性能优化效果。

24. 什么是半同步复制?

回答:半同步复制是MySQL中的一种复制方式,它确保至少有一个从库已成功接收并应用主库上的日志事件。

25. 请解释什么是查询缓存,并说明为什么在MySQL 8.0中被弃用?

回答:查询缓存是MySQL中的一种机制,用于缓存查询结果以提高查询性能。在MySQL 8.0中,查询缓存被弃用,因为它导致了性能问题和内存管理困难。

26. 什么是索引覆盖?

回答:索引覆盖是指查询语句只需要通过索引就可以获取所需的数据,而无需进一步访问表的行数据。

27. 什么是数据库连接池,并举例说明如何配置数据库连接池?

回答:数据库连接池是管理数据库连接的软件组件,它维护一组可重复使用的数据库连接,以减少连接的创建和销毁开销。例如,可以使用Apache Commons DBCP或HikariCP等库来配置数据库连接池。

28. 如何处理MySQL中的死锁?

回答:可以使用SHOW ENGINE INNODB STATUS命令来查看是否存在死锁,并使用KILL命令终止其中一个会话来解决死锁问题。

29. 什么是MySQL存储引擎?

回答:MySQL存储引擎是负责处理表的创建、读取、更新和删除等操作的组件。常见的存储引擎包括InnoDB、MyISAM和Memory。

30. 请解释什么是数据库范式,并列举出前三个范式。

回答:数据库范式是为了消除数据冗余和提高数据结构的规范化设计方法。前三个范式分别是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

31. 什么是索引选择性,为什么它很重要?

回答:索引选择性是指索引中不同值的数量与表中总行数的比例。它是评估索引的唯一性和查询效率的重要指标,高选择性的索引能提供更好的性能。

32. 什么是覆盖索引,它如何提高查询性能?

回答:覆盖索引是指索引包含了查询所需的所有列,在查询时无需再去查找表的行数据。它可以减少磁盘IO和减小查询开销,从而提高查询性能。

33. 请解释B树和B+树的区别和应用场景。

回答:B树是一种平衡的多路搜索树,B+树是B树的一种变体。B+树相比B树更适合磁盘存储,因为它在内部节点只保存索引信息,而数据都存储在叶子节点上,可以提供更好的顺序访问性能。

34. 什么是优化器统计信息,它如何影响查询执行计划?

回答:优化器统计信息是指数据库收集的关于表和索引的统计数据,如行数、唯一值的数量等。这些统计信息用于优化器选择查询执行计划,不准确或过期的统计信息可能导致选择不合适的执行计划。

35. 什么是延迟关联(Late Join),它如何优化复杂查询?

回答:延迟关联是指将复杂查询中的关联操作推迟到最后执行,以减少中间结果集和临时表的大小。通过延迟关联,可以优化复杂查询的性能和减少资源消耗。

36. 请解释MySQL中的并行查询,以及如何启用并配置并行查询?

回答:并行查询是指将查询任务分成多个子任务,并使用多个线程同时执行这些子任务。可以通过配置max_parallel_degree参数启用并行查询,并根据硬件和负载情况调整其值。

37. 什么是复制滞后,如何减少主从复制的延迟?

回答:复制滞后是指从库相对于主库在数据更新上的延迟。为了减少复制滞后,可以优化主库和从库的性能、调整复制线程的配置、使用并行复制等方法。

38. 请解释MySQL中的锁机制,包括共享锁和排他锁。

回答:MySQL中的锁机制用于控制并发访问,共享锁(S锁)用于读操作,多个事务可以同时持有共享锁;排他锁(X锁)用于写操作,独占资源。

39. 什么是死锁,如何检测和解决死锁?

回答:死锁是指两个或多个事务相互等待对方释放资源的情况,导致所有事务无法继续执行。可以使用死锁检测算法来检测死锁,并使用超时、设置合理的事务隔离级别或调整应用逻辑等方法来解决死锁问题。

40. 请解释MySQL中的悲观锁和乐观锁,以及它们各自的应用场景。

回答:悲观锁是在操作数据之前就获取锁,保证数据的独占性;乐观锁是在提交数据更新时检查是否有并发冲突,通过版本控制来实现。悲观锁适用于并发写操作较多的场景,而乐观锁适用于并发读操作较多的场景。

41. MySQL的存储引擎有哪些?

MySQL支持多种存储引擎,不同存储引擎具有各自的特点和适用场景。下面是一些常见的MySQL存储引擎:

  1. InnoDB:InnoDB是MySQL的默认存储引擎,它提供了事务支持、行级锁定、外键约束等功能。InnoDB适用于需要高并发性能和数据完整性保证的应用场景。

  2. MyISAM:MyISAM是MySQL较早的存储引擎,它不支持事务和行级锁定,但对于读密集型应用具有较好的性能。MyISAM适用于读取频率高于写入频率、对事务一致性要求较低的应用场景。

  3. Memory:Memory存储引擎将数据存储在内存中,因此速度非常快。然而,它的数据是易失的,即在MySQL重新启动或崩溃时数据将丢失。Memory存储引擎适用于缓存表、临时表等需要快速访问但对数据持久性要求不高的场景。

  4. Archive:Archive存储引擎被设计为进行高压缩的存储和查询,适用于大量历史数据的存储,但不适合频繁更新或随机访问。

  5. NDB Cluster:NDB Cluster存储引擎使用分布式架构,适用于需要高可用性和实时性的应用,例如分布式数据库集群。

除了上述常见的存储引擎,MySQL还支持其他存储引擎,如CSV、Blackhole、Federated等。在选择存储引擎时,需要根据应用需求(如性能、事务支持、数据一致性要求等)以及存储引擎的特性进行合理选择和配置。

42. 怎样实现外键约束

在InnoDB存储引擎中,可以使用外键约束(Foreign Key Constraint)来保持数据的完整性。外键约束用于在关系型数据库中定义表与表之间的关联关系。

要在InnoDB中约束外键,需要执行以下步骤:

  1. 创建父表:首先创建包含主键的父表。例如,如果有一个名为parent_table的表,其主键是id字段:

    CREATE TABLE parent_table (id INT PRIMARY KEY,...
    );
    
  2. 创建子表并添加外键约束:接下来,在创建子表时,需要指定外键约束和关联关系。例如,如果有一个名为child_table的表,其中包含一个parent_id字段与parent_tableid字段关联:

    CREATE TABLE child_table (id INT PRIMARY KEY,parent_id INT,...,FOREIGN KEY (parent_id) REFERENCES parent_table(id)
    );
    

    上述代码中,FOREIGN KEY (parent_id) REFERENCES parent_table(id)表示在child_table表中,parent_id字段是对parent_table表中id字段的外键引用。

  3. 约束选项:可以在外键约束中添加一些选项来定义删除和更新外键引用时的行为,如ON DELETE CASCADEON UPDATE RESTRICT等。这些选项的含义如下:

    • ON DELETE CASCADE:当父表中的行被删除时,自动删除子表中相关的行。
    • ON DELETE SET NULL:当父表中的行被删除时,将子表中相关的外键字段设为NULL。
    • ON DELETE RESTRICT:阻止删除父表中被子表引用的行。
    • ON UPDATE CASCADE:当父表中的主键值更新时,自动更新子表中相应的外键值。
    • ON UPDATE SET NULL:当父表中的主键值更新时,将子表中相应的外键字段设为NULL。
    • ON UPDATE RESTRICT:阻止更新父表中被子表引用的主键值。

通过以上步骤,就可以在InnoDB存储引擎中创建并约束外键,确保表与表之间的关联关系和数据完整性。

43. MySQL中使用什么函数来保留小数?

在 MySQL 中,你可以使用以下函数来保留小数:

  1. ROUND(x, d):将 x 四舍五入为指定小数位数 d。例如,ROUND(3.14159, 2) 将返回 3.14。

  2. TRUNCATE(x, d):截断 x 到指定小数位数 d。例如,TRUNCATE(3.14159, 2) 将返回 3.14,而不是进行四舍五入。

  3. FORMAT(x, d):格式化 x 并保留指定小数位数 d,并以千位分隔符进行适当的格式化。例如,FORMAT(12345.6789, 2) 将返回 “12,345.68”。

这些函数可以根据你的需求选择合适的方式来保留小数。请注意,这些函数的返回值是字符串类型,如果需要进行数值计算,可能需要进一步转换为数值类型(如 DECIMAL 或 FLOAT)。

如果你对其他 MySQL 函数或有其他问题感兴趣,请随时提问。

相关文章:

「MySQL」MySQL面试题全解析:常见问题与高级技巧详解

MySQL面试题全解析&#xff1a;常见问题与高级技巧详解 1. 什么是数据库&#xff1f;2. 什么是MySQL&#xff1f;3. 什么是SQL&#xff1f;4. 什么是主键&#xff1f;5. 什么是外键&#xff1f;6. 请解释索引是什么以及为什么使用索引&#xff1f;7. 什么是事务&#xff1f;8. …...

【USRP】产品型号、参数、架构全解析系列 6:N320 / N321

一、USRP 简介 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&am…...

Apifox 常用 JS 脚本

前置脚本常用 1、时间戳生成&#xff08;秒级&#xff09;&#xff1a; // 1、生成秒级时间戳到全局变量中 //let timestamp parseInt(new Date().getTime() / 1000) //pm.globals.set(timestamp, timestamp) // 2、生成秒级时间戳到全局变量中 pm.globals.set(timestamp, p…...

防止SQL注入的四种方案

一、什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服…...

java单元测试

版本区别 特性Junit 4Junit 5在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。BeforeClassBeforeAll在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。AfterClassAfterAll在每个测试方法之前执行。注解在…...

【LeetCode】双指针求解和为s的两个数字

Problem: 剑指 Offer 57. 和为s的两个数字 文章目录 题目解析算法思路分析复杂度Code 题目解析 首先来讲解一下本题的思路 我们看到本题的意思很简单&#xff0c;就是去这个nums这个数组中进行寻找&#xff0c;如果找到了两个数相加之和为target的话&#xff0c;那构成一个结果…...

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容&#xff0c;实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…...

数据库-事务

介绍&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事物会把所有的操作作为一个整体一起向系统 提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败 操作&#xff1a;事务控制 开启事务&#xff1a;start…...

MySQL 使用开源审计插件

文章目录 前言1. 审计插件下载2. 审计插件参数2.1 server_audit_events2.2 server_audit_excl_users2.3 server_audit_output_type2.4 server_audit_file_path2.5 server_audit_file_rotate_now2.6 server_audit_file_rotate_size2.7 server_audit_file_rotations2.8 server_au…...

Python入门教程 | Python3 集合(Set)

Python3 集合&#xff08;Set&#xff09; 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 集合中的元素不会重复&#xff0c;并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合&#xff0c;元素之间用逗号 , 分隔&#xff0c; 或…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…...

【C++模拟实现】反向迭代器的实现

【C模拟实现】反向迭代器的实现 目录 【C模拟实现】反向迭代器的实现反向迭代器的代码示例反向迭代器的模拟实现要点引入iterator模版参数rbegin()和rend()的实现 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2023.9.5 前言&#xff1a;本篇博客主要介绍反向迭代器的实现&…...

Kubernetes技术--k8s核心技术持久化存储

有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…...

【80天学习完《深入理解计算机系统》】第十四天 复习第三章

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…...

库中是如何实现string类的?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…...

无涯教程-JavaScript - WORKDAY.INTL函数

描述 WORKDAY.INTL函数返回带有自定义周末参数的指定工作日数之前或之后的日期的序列号。周末参数指示哪些和多少天是周末。周末和指定为假期的任何日子均不视为工作日。 语法 WORKDAY.INTL (start_date, days, [weekend], [holidays])争论 Argument描述Required/OptionalS…...

STM32--蓝牙

本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制 简介 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信。它是由爱立信&#xff08;Ericsson&#xff09;公司在1994年推出的&#xff0c;以取代…...

java 实现原型模式

原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许创建对象的副本&#xff0c;而无需暴露对象的创建细节。在Java中&#xff0c;原型模式通常通过克隆对象来实现。要实现原型模式&#xff0c;需要满足以下条件&#xff1a; 被克隆的对…...

maven本地安装jar包install-file,解决没有pom的问题

背景&#xff1a; 公司因为权限问题&#xff0c;没有所有的代码&#xff0c;内部maven还在搭建&#xff0c;所以需要拿到同事的jar包&#xff0c;本地install&#xff1a; mvn install:install-file -DgroupIdcom..framework -DartifactIdcloud-api -Dversion1.0.0-SNAPSHOT …...

【C++学习笔记】5、变量作用域

文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域&#xff0c;一般来说有三个地方可以定义变量&#xff1a; 在函数或一个代码块内部声明的变量&#xff0c;称为局部变量。 在函数参数的定义中声明的变量&#xff0c;称…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...