Mysql个人八股总结

1.一条 SQL 查询语句是如何执行的

第一步:连接器
  • 连接数据库:当用户发起SQL查询时,连接器负责与数据库建立连接,验证用户身份并准备执行查询。
第二步:查询缓存
  • 检查查询缓存:在执行查询之前,数据库会检查是否已有相同的查询结果被缓存。如果缓存中存在结果,数据库将直接返回这些结果,从而提高性能。
第三步:解析 SQL
  • 解析器:如果查询没有命中缓存,数据库会使用解析器对SQL语句进行解析。
    • 语法检查:确保SQL语句的语法正确。
    • 生成解析树:构建一个解析树,表示查询的结构。
第四步:执行 SQL
  • 预处理器

    • 编译查询:将解析树转化为执行计划,生成执行节点,该计划描述了如何执行查询。
  • 优化器

    • 查询优化:分析不同的执行计划,选择最优的执行方案。优化器会考虑数据分布、索引的使用、连接的顺序等因素,使用成本模型评估每个计划的效率。
  • 执行器

    • 执行查询:根据优化后的执行计划执行查询,访问数据库中的数据,进行计算和处理连接操作。

2.事务的四大特性有哪些?

事务的四大特性(ACID)

  1. 原子性(Atomicity)

    • 定义:事务中的所有操作要么全部执行成功,要么全部不执行。也就是说,事务是一个“原子”操作。
    • 例子:假设你在银行进行转账操作,涉及两个步骤:从账户A扣款和向账户B存款。如果在从账户A扣款后发生错误(比如系统崩溃),那么事务应该完全回滚,确保账户A的金额不会被扣除。
    • 重要性:原子性确保了数据的一致性,避免了部分操作成功而导致的数据不一致问题。
  2. 一致性(Consistency)

    • 定义:事务的执行必须使数据库从一种一致的状态转变到另一种一致的状态。数据库中的所有数据都必须符合预定义的规则和约束。
    • 例子:在转账操作中,账户A和账户B的总金额在转账前后应该保持不变。如果转账过程中数据出现错误(例如金额不匹配),数据库应保持在一致的状态。
    • 重要性:一致性确保了数据的完整性,防止不符合业务规则的数据进入数据库。
  3. 隔离性(Isolation)

    • 定义:多个事务并发执行时,每个事务的执行不应受到其他事务的影响。事务之间的操作和数据应当是互相隔离的。
    • 例子:如果两个用户同时试图转账到同一个账户,隔离性确保每个转账事务都能独立执行,避免产生错误的结果。
    • 重要性:隔离性防止了事务间的干扰,提高了数据的安全性和可靠性。不同的隔离级别(如读未提交、读已提交、可重复读和序列化)可用于平衡性能与数据准确性。
  4. 持久性(Durability)

    • 定义:一旦事务提交,其结果是永久性的,即使系统崩溃或故障,已提交的数据也不会丢失。
    • 例子:假设你完成了一个订单并提交,系统在此时崩溃,但订单信息仍然应该保存在数据库中,恢复后可以查看到该订单。
    • 重要性:持久性确保了用户的操作结果不会因为系统故障而丢失,提高了数据库的可靠性。

ACID 属性确保事务可靠性和安全性

  • 可靠性:通过ACID特性,数据库能够保证即使在系统崩溃、网络故障或其他问题情况下,数据的一致性和完整性仍然得到维护。
  • 安全性:ACID特性通过隔离性和一致性,确保并发事务之间不会互相干扰,防止了数据的错误和不一致性。

现代数据库事务处理的研究与发展

  1. 多版本并发控制(MVCC)

    • 概念:MVCC是一种允许多个事务并发执行的技术,每个事务可以看到数据的不同版本,从而提高了并发性能。
    • 优势:MVCC能够减少加锁的需求,从而降低了事务之间的冲突,提升了数据库的吞吐量。
  2. 分布式事务处理

    • 研究方向:在现代微服务架构中,分布式事务变得越来越重要。研究者们正在探索如何在多个数据库之间保持ACID特性,例如通过两阶段提交协议(2PC)和最终一致性模型。
  3. 事务日志与恢复机制

    • 重要性:事务日志用于记录事务的操作,以便在系统崩溃时恢复数据。现代数据库系统不断在日志记录和恢复机制上进行优化,以提高恢复速度和系统可靠性。

3.数据库的事务隔离级别有哪些?

事务隔离级别

根据SQL标准,数据库支持四种事务隔离级别,从最低到最高依次为:

  1. 读未提交(Read Uncommitted)

    • 定义:事务可以读取其他未提交事务的数据。
    • 特点:最低的隔离级别,允许脏读。
    • 影响
      • 脏读:允许读取未提交的数据,可能导致读取到不一致或错误的数据。
      • 不可重复读:可能存在。
      • 幻读:可能存在。
  2. 读已提交(Read Committed)

    • 定义:事务只能读取其他已提交事务的数据。
    • 特点:避免了脏读,但仍然可能发生不可重复读和幻读。
    • 影响
      • 脏读:不允许。
      • 不可重复读:可能存在。即同一事务中两次读取同一数据,可能得到不同的结果。
      • 幻读:可能存在。
  3. 可重复读(Repeatable Read)

    • 定义:在一个事务内,多次读取同一数据的结果都是一致的。
    • 特点:避免了脏读和不可重复读,但仍可能发生幻读。
    • 影响
      • 脏读:不允许。
      • 不可重复读:不允许。
      • 幻读:可能存在。即在一个事务中,其他事务的插入可能导致新记录的读取。
  4. 串行化(Serializable)

    • 定义:最高的隔离级别,确保事务完全串行执行。
    • 特点:避免了脏读、不可重复读和幻读,性能较低。
    • 影响
      • 脏读:不允许。
      • 不可重复读:不允许。
      • 幻读:不允许。

隔离级别对数据一致性的影响

  • 脏读:指一个事务可以读取另一个未提交事务的数据,可能导致不一致的结果。
  • 不可重复读:在同一事务中,对同一数据的多次读取可能得到不同的结果,导致数据不一致。
  • 幻读:当一个事务在读取一组数据时,另一个事务插入了新的数据,导致前一个事务的结果集在后续读取时发生变化。

如何选择合适的事务隔离级别

选择事务隔离级别时应考虑以下因素:

  1. 数据一致性要求

    • 如果应用对数据一致性要求极高,如金融系统,建议使用串行化可重复读
    • 如果可以接受一些不一致性,如日志分析或统计,读已提交可能更合适。
  2. 性能需求

    • 较高的隔离级别(如串行化)会导致更多的锁争用,影响性能。如果应用需要高并发,可能需要选择较低的隔离级别(如读已提交或读未提交)。
  3. 应用场景

    • 对于需要频繁读取且不需要严格一致性的场景,如数据分析,使用读未提交读已提交
    • 对于需要确保每次读取数据一致性的场景,如订单处理,使用可重复读串行化

4.MySQL的执行引擎有哪些?

1. 常见的MySQL存储引擎

1.1 InnoDB
  • 特点

    • 事务支持:InnoDB支持ACID事务特性,能够保证数据的一致性和可靠性。
    • 行级锁:使用行级锁,允许并发操作,适合高并发的应用场景。
    • 外键支持:支持外键约束,确保数据的完整性。
    • 崩溃恢复:内置崩溃恢复机制,能够在意外崩溃后自动恢复数据。
  • 适用场景

    • 适合需要高并发和数据一致性的应用,比如金融系统、电子商务和在线交易系统。
1.2 MyISAM
  • 特点

    • 不支持事务:MyISAM不支持ACID事务,适合对数据一致性要求不高的场景。
    • 表级锁:使用表级锁,可能导致在高并发情况下性能瓶颈。
    • 快速读操作:在只读或主要是读操作的应用中,MyISAM的性能通常优于InnoDB。
  • 适用场景

    • 适合以读取为主的应用,比如日志记录、数据仓库和分析型应用。

2. 其他存储引擎

2.1 MEMORY
  • 特点:将数据存储在内存中,读写速度非常快,但数据在数据库重启后会丢失。
  • 适用场景:适用于临时数据存储或需要快速访问的小型数据集,比如会话管理和缓存。
2.2 ARCHIVE
  • 特点:用于存储大量的历史数据,压缩存储,支持高效的插入操作,但不支持索引。
  • 适用场景:适合存储归档数据,比如日志数据和历史记录,主要用于写入而不需要频繁读取。

3. 存储引擎的比较

特性InnoDBMyISAMMEMORYARCHIVE
事务支持支持(ACID)不支持不支持不支持
锁定机制行级锁表级锁表级锁表级锁
外键支持支持不支持不支持不支持
性能适用于高并发场景适用于读取为主的场景适用于快速访问的小数据适用于写入大量数据

4. 如何选择合适的存储引擎

  • 业务需求:根据应用的具体需求选择合适的存储引擎。

    • 如果需要事务支持和数据一致性,选择InnoDB
    • 如果主要是读取操作且不需要事务,选择MyISAM
    • 对于需要快速访问的小型数据集,使用MEMORY
    • 对于存储大规模历史数据且主要是插入操作,选择ARCHIVE
  • 性能考虑:考虑系统的并发需求、数据一致性要求和访问模式,以选择最合适的存储引擎。

5.MySQL为什么使用B+树来作索引【重点】 

1. B+树的基本概念

B+树是一种自平衡的树数据结构,适用于存储大量数据并支持高效的插入、删除和查找操作。与B树不同,B+树的所有值都存储在叶子节点,而内部节点仅存储键值。这样可以保持树的高度低,从而实现高效的查询。

2. B+树的优势

2.1 高效的查询效率
  • 较低的树高度:B+树的每个节点可以存储多个键值(即“分支因子”较高),因此树的高度通常非常低。这意味着在查找数据时,所需的比较次数较少,从而提高了查询效率。
  • 顺序访问:叶子节点通过指针相连,使得B+树支持顺序访问。这对于范围查询特别有效,因为可以通过一次查找找到范围的起始点,然后顺序遍历叶子节点。
2.2 减少磁盘I/O
  • 提高缓存命中率:B+树的节点通常大小与页面大小相同(如4KB),这样可以减少磁盘I/O操作。每次读取一个节点就可以获得多个键值,从而减少需要访问的节点数量。
  • 较少的磁盘访问:由于B+树的高度较小,在进行查找时,通常只需要几次磁盘访问即可找到所需数据,极大地提高了性能。

3. B+树的范围查询

  • 高效的范围查询:B+树的叶子节点是按顺序链接的,这使得范围查询变得非常高效。只需找到范围的起始节点,然后沿着叶子节点的指针顺序访问即可获取所有符合条件的数据。例如,查询“值在10到20之间的数据”时,可以快速定位到10,并顺序遍历到20。

4. B+树在事务处理中的支持

  • 支持并发操作:B+树结构适合在高并发的环境下进行插入、删除和查询操作。通过合理的锁机制,可以实现高效的并发控制。
  • 事务一致性:B+树在插入和删除操作时保持自平衡,确保数据的一致性和完整性。这对数据库的事务处理至关重要,能够在多用户环境下保持数据的正确性。

5. 总结

使用B+树作为MySQL的索引结构,主要是因为它能够提供:

  • 高效的查询性能:通过较低的树高度和顺序访问,加快数据检索速度。
  • 减少磁盘I/O:通过高效的节点结构和缓存利用,降低数据访问成本。
  • 支持范围查询:顺序链接的叶子节点使得范围查询变得非常高效。
  • 良好的事务处理能力:适合高并发环境,确保数据一致性。

6.说一下索引失效的场景?

1. 常见的索引失效场景

1.1 使用了不等于(<>)或 IS NULL 条件
  • 场景:当查询条件使用不等于(<>)或 IS NULL 时,索引可能失效。
  • 原因:数据库无法利用索引来高效过滤数据,因为不等式导致了全表扫描的可能性。
  • 影响:查询性能下降,可能导致查询变慢。
1.2 使用了模糊查询(LIKE)开头带通配符
  • 场景:在使用 LIKE 进行模糊查询时,如果模糊查询以通配符开头,例如 LIKE '%abc',索引失效。
  • 原因:数据库无法利用索引,因为它需要扫描所有记录来查找匹配项。
  • 影响:导致全表扫描,性能显著降低。
1.3 使用了函数或表达式
  • 场景:在查询条件中对索引列使用了函数或表达式,例如 WHERE YEAR(order_date) = 2023
  • 原因:函数的使用会导致数据库无法使用索引,因为它需要先计算函数结果,然后再进行比较。
  • 影响:索引失效,查询效率降低。
1.4 复合索引的列顺序不当
  • 场景:在复合索引中,如果查询条件中的列顺序与索引的定义不一致,例如定义了 (a, b) 的索引,但查询条件是 WHERE b = 10 AND a = 20
  • 原因:数据库无法利用索引的顺序来优化查询,因此可能导致全表扫描。
  • 影响:性能下降。
1.5 高选择性字段使用不当
  • 场景:在高选择性的字段上使用索引,但查询条件过滤的数据量很小,例如 WHERE status = 'active',而该字段的值基本上都是 'active'。
  • 原因:索引的利用价值降低,因为返回的结果集过大。
  • 影响:导致索引失效,性能变差。

2. 如何优化查询条件以利用索引

  • 避免使用不等式:尽量使用等于(=)条件,避免使用 IS NULL<>
  • 合理使用 LIKE:确保 LIKE 查询不以通配符开头,例如使用 LIKE 'abc%'
  • 避免在索引列上使用函数:尽量在查询中直接使用原始列的值,避免对索引列使用函数或表达式。
  • 调整复合索引的顺序:确保复合索引的顺序与查询条件一致,优先将选择性高的列放在前面。
  • 使用覆盖索引:在查询中只选择索引中的列,避免访问表数据,提升查询性能。

7.undo log、redo log、binlog 有什么用?

1. Undo Log(回滚日志)

定义和作用
  • Undo Log用于记录事务执行过程中所做的修改,以便在事务发生错误或中止时,可以将数据库状态恢复到修改之前的状态。
  • 它主要用于支持事务的原子性一致性,确保如果事务不能成功完成,所有的修改都会被撤回。
在事务处理中的角色
  • 当一个事务执行时,系统会生成相应的Undo Log。比如,如果事务更新了一条记录,系统会记录更新前的状态,以便在需要时回滚到这个状态。
故障恢复
  • 如果事务失败或系统崩溃,Undo Log可以用来恢复到事务开始时的状态,确保数据的一致性。

2. Redo Log(重做日志)

定义和作用
  • Redo Log用于记录已提交事务的修改,以便在系统崩溃后可以重新执行这些操作来恢复数据。
  • 它确保了事务的持久性,即一旦事务提交,对数据的修改不会丢失。
在事务处理中的角色
  • 当一个事务提交时,Redo Log会记录该事务的所有修改。这些日志确保即使在系统崩溃的情况下,已提交的事务仍然可以恢复。
故障恢复
  • 在系统恢复时,Redo Log会被重放,以确保所有已提交的事务的结果都能找到,从而恢复到崩溃前的状态。

3. Binlog(二进制日志)

定义和作用
  • Binlog是MySQL的二进制日志,用于记录所有更改数据库状态的操作,包括数据的插入、更新和删除。
  • 它不仅用于恢复数据,还支持数据库的主从复制。
在事务处理中的角色
  • Binlog记录的是所有的SQL语句或数据变动,这些操作可以被用于重放,以支持数据库的一致性和数据恢复。
故障恢复
  • 在系统崩溃的情况下,Binlog可以帮助重放未提交的事务,确保数据的一致性。
数据库复制中的作用
  • Binlog在主从复制中起着重要的作用。主服务器的每一个数据更改都会记录到Binlog中,从服务器可以通过读取这些Binlog来同步主服务器的数据。

4. 总结

  • Undo Log:用于回滚未完成的事务,支持原子性和一致性。
  • Redo Log:用于在故障恢复时重做已提交的事务,确保持久性。
  • Binlog:用于记录所有的数据库更改,支持故障恢复和数据库的主从复制。

8.什么是慢查询?原因是什么?可以怎么优化?

慢查询是指执行时间超过预设阈值的SQL查询。在数据库中,慢查询会显著影响应用的性能和用户体验,因为它们会导致响应时间延迟,增加系统负载,甚至可能影响其他查询的执行。

慢查询的影响

  • 用户体验:用户在等待查询结果时可能会感到不满,影响应用的可用性。
  • 系统性能:慢查询会占用系统资源,导致数据库性能下降,可能影响到其他正常的查询。
  • 故障风险:高负载可能导致系统崩溃或数据库连接池耗尽,增加故障风险。

慢查询的常见原因

  1. 缺乏索引

    • 查询条件中使用的字段没有索引,导致全表扫描,增加了查询时间。
  2. 复杂的查询逻辑

    • 复杂的JOIN、子查询或聚合操作会导致查询执行时间增加。
  3. 数据量大

    • 表中的数据量过大,查询时需要处理的数据量也随之增加。
  4. 不合理的查询条件

    • 使用了不适合的查询条件,比如模糊查询(LIKE '%abc')或不等于条件(<>),导致无法利用索引。
  5. 锁竞争

    • 多个事务同时修改同一数据,导致锁等待,影响查询性能。
  6. 统计信息不准确

    • 数据库的统计信息过时,会导致查询优化器选择不合适的执行计划。

优化慢查询的方法

  1. 创建合适的索引

    • 分析查询条件,确保在高频使用的字段上建立索引,特别是用于过滤、排序和连接的字段。
  2. 优化查询逻辑

    • 尽量减少复杂的JOIN和子查询,考虑将复杂查询拆分为多个简单查询。
  3. 使用LIMIT限制结果集

    • 如果只需要部分结果,可以使用LIMIT来限制返回的数据量,降低查询负担。
  4. 更新统计信息

    • 定期更新数据库的统计信息,确保查询优化器能够根据最新的数据分布选择最佳的执行计划。
  5. 避免不必要的计算

    • 在查询中尽量避免对索引字段使用函数或表达式,直接使用字段本身。
  6. 监控和分析慢查询

    • 开启慢查询日志,定期分析慢查询,找出性能瓶颈并加以优化。
  7. 使用缓存

    • 对于频繁查询且数据变化不大的场景,可以使用缓存(如Redis)来减少数据库的负担。

9.MySQL 有哪些锁

1. MySQL中的锁类型

1.1 表锁
  • 定义:表锁是对整个表的锁定,其他事务在锁定期间无法访问该表。
  • 特点
    • 适用于读写频率不高的场景。
    • 处理开销小,但并发性能差,因为一个事务锁定了整个表。
1.2 行锁
  • 定义:行锁是对表中某一行的锁定,允许其他事务访问同一表的其他行。
  • 特点
    • 提高了并发性能,适合高并发环境。
    • 处理开销相对较大,因为需要管理多个锁。
1.3 间隙锁(Gap Lock)
  • 定义:间隙锁是锁定索引中的一个“间隙”,防止其他事务在该间隙中插入新行。
  • 特点
    • 防止幻读,保证了事务的隔离性。
    • 只在可重复读和串行化隔离级别生效。
1.4 意向锁
  • 定义:意向锁是表级锁,用于指示某个事务希望在表的某些行上获取行锁。
  • 特点
    • 主要用于支持行锁和表锁的兼容性。
    • 分为意向共享锁(IS)和意向排他锁(IX)。

2. 锁的实现方式

2.1 悲观锁
  • 定义:悲观锁假设会发生并发冲突,因此在操作数据之前就对数据加锁。
  • 实现:通常通过显式的锁机制(如SELECT ... FOR UPDATE)来实现,确保事务在进行任何操作前持有锁。
2.2 乐观锁
  • 定义:乐观锁假设不会发生并发冲突,因此在操作数据时不加锁,只有在提交时才检查是否有冲突。
  • 实现:常通过版本号或时间戳来实现,提交时检查版本号是否一致。如果不一致,则回滚事务。

3. 死锁的原因和解决方法

3.1 死锁的产生条件
  • 互斥条件:至少有一个资源被一个进程独占。
  • 占有且等待:一个进程持有某些资源的同时,等待其他资源。
  • 非抢占条件:资源不能被强制抢占。
  • 循环等待:存在一个进程的循环等待资源的情况。
3.2 避免死锁的策略
  • 资源有序分配:为所有资源分配一个顺序,进程按顺序请求资源。
  • 超时机制:设定事务的超时时间,超时后回滚事务。
  • 检测并解决:定期检测死锁情况,发现后强制回滚某个事务以打破死锁。

4. 锁的优化方法

4.1 索引优化
  • 创建合适的索引:通过创建索引来减少锁的竞争,尤其是对于高并发的读写操作。
  • 使用覆盖索引:确保查询只访问索引,而不需要回表查询,减少锁的持有时间。
4.2 事务管理
  • 控制事务大小:保持事务尽量短小,减少锁的持有时间,降低发生死锁的概率。
  • 合理使用隔离级别:根据应用的需求选择合适的事务隔离级别,平衡一致性和性能。
4.3 监控调优
  • 监控锁的状态:使用工具监控数据库的锁竞争情况,及时发现性能瓶颈。
  • 分析慢查询:定期分析慢查询,优化相关SQL以减少锁的等待时间。

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

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

相关文章

AutoDL使用简记

AutoDL使用简记 一、前言二、AutoDL显卡配置、价格简介2.1显卡配置及价格2.2计费方式的种类2.3开通会员及优惠 三、AutoDL使用教程3.1选择深度学习架构3.2文件传输3.3运行程序 一、前言 在进行深度学习模型训练时&#xff0c;通常会面临本地显卡显存或者运行速度的不足&#x…

基于STM32智能电流表

采用STM32F103C8T6微控制器为核心&#xff0c;设计了一款精密的电流表。该电流表通过精确采集采样电阻上的分压信号&#xff0c;并进行信号放大处理&#xff0c;随后利用ADC&#xff08;模数转换器&#xff09;高效地捕获放大后的电压信号&#xff0c;通过一系列算法运算&#…

【harbor】离线安装2.9.0-arm64架构服务制作和升级部署

harbor官网地址&#xff1a;Harbor 参考文档可以看这里&#xff1a;部署 harbor 2.10.1 arm64 - 简书。 前提环境准备&#xff1a; 安装docker 和 docker-compose 先拉arm64架构的harbor相关镜像 docker pull --platformlinux/arm64 ghcr.io/octohelm/harbor/harbor-regist…

支持 Win10 的网络环境模拟(丢包,延迟,带宽)

升级 Windows 10 以后&#xff0c;原来各种网络模拟软件都挂掉了&#xff0c;目前能用的就是只有 clumsy&#xff1a; 唯一问题是不支持模拟带宽&#xff0c;那么平时要模拟一些糟糕的网络情况的话&#xff0c;是不太方便的&#xff0c;而开虚拟机用 Linux tc 或者设置个远程 l…

网页web无插件播放器EasyPlayer.js点播播放器遇到视频地址播放不了的现象及措施

在数字媒体时代&#xff0c;视频点播已成为用户获取信息和娱乐的重要方式。EasyPlayer.js作为一款流行的点播播放器&#xff0c;以其强大的功能和易用性受到广泛欢迎。然而&#xff0c;在使用过程中&#xff0c;用户可能会遇到视频地址无法播放的问题&#xff0c;这不仅影响用户…

.NET周刊【11月第2期 2024-11-10】

国内文章 .NET 全能高效的 CMS 内容管理系统 https://www.cnblogs.com/1312mn/p/18511224 SSCMS 是一个完全开源的企业级内容管理系统&#xff0c;基于 .NET Core 开发&#xff0c;适合跨平台部署。其特点包括支持多终端发布和功能插件&#xff0c;具有完善的权限控制和安全…

Pytorch从0复现worc2vec skipgram模型及fasttext训练维基百科语料词向量演示

目录 Skipgram架构 代码开源声明 Pytorch复现Skip-gram 导包及随机种子设置 维基百科数据读取 建立词频元组列表并根据词频排序 建立词频字典,word_id字典,id_word字典 二次采样 正采样与负采样 Skipgram模型类 模型训练 词向量输出 近义词寻找 fasttext训练Skip-…

如何详细查询全球药品研发的进度信息?

药品的研发进展对于医药研发人员来说&#xff0c;不仅是知识和技能的积累&#xff0c;更是职业精神和价值观的塑造。通过了解药品的研发进展&#xff0c;研发人员可以更好地提高自己的专业知识和技能&#xff0c;激发创新思维&#xff0c;保持专业竞争力&#xff0c;提高研发效…

从0学习React(11)

1. 引言 上个星期的工作内容是写IT资产管理的前端页面。其实&#xff0c;尽管我之前有一些前端开发的经验&#xff0c;但并不是很多。这次让我独立完成一个页面的开发&#xff0c;刚开始时我感到无从下手。 2. 初期的困惑和焦虑 我记得在星期一和星期二的时候&#xff0c;那…

第3章 需求 3.3需求的有效传递与度量

3.3 需求的有效传递与度量 收集需求是需要投入很多工作量的&#xff0c;同时需求必须有效传递到产品端才能最终发挥价值。而需求的有效传递却是一个容易被忽视的环节。 现实中存在各种需求传递方式&#xff0c;如口头传递、邮件传递、会议传递等&#xff0c;但这些需求都未被统…

Vue2中使用firefox的pdfjs进行文件文件流预览

文章目录 1.使用场景2. 使用方式1. npm 包下载,[点击查看](https://www.npmjs.com/package/pdfjs-dist)2. 官网下载1. 放到public文件夹下面2. 官网下载地址[点我,进入官网](https://github.com/mozilla/pdf.js/tags?afterv3.3.122) 3. 代码演示4. 图片预览5. 如果遇到跨域或者…

vue3+vite 前端打包不缓存配置

最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题 所以…按以下方式配置完打包就没啥问题了&#xff0c;原理很简单就是加个时间戳 /* eslint-disable no-undef */ import {defineConfig, loadEnv} from vite import path from path import createVitePlugins from…

RS485/RS422保护电路

由于GJB 151B没有雷击和浪涌测试要求&#xff0c;故不需要防雷器件。TVS管使用SMB6.5CA&#xff0c;共模电感选择LCHWCM-453228-510YT01&#xff0c;详细设计电路如下图所示&#xff0c;此设计可同时满足GJB 151B和DO 160G的标准。注意SMB封装的TVS管是600W&#xff0c;SMA封装…

CKA认证 | Day1 k8s核心概念与集群搭建

第一章 Kubernetes 核心概念 1、主流的容器集群管理系统 容器编排系统&#xff1a; KubernetesSwarmMesos Marathon 2、Kubernetes介绍 Kubernetes是Google在2014年开源的一个容器集群管理系统&#xff0c;Kubernetes简称K8s。 Kubernetes用于容器化应用程序的部署&#x…

《大模型应用开发极简入门》笔记

推荐序 可略过不看。 初识GPT-4和ChatGPT LLM概述 NLP的目标是让计算机能够处理自然语言文本&#xff0c;涉及诸多任务&#xff1a; 文本分类&#xff1a;将输入文本归为预定义的类别。自动翻译&#xff1a;将文本从一种语言自动翻译成另一种语言&#xff0c;包括程序语言。…

在AutoDL上部署一个自定义的Python环境并在pycharm上使用

#AutoDL #GPU #租显卡 如何在AutoDL上部署一个自定义的Python环境 下面将会给出如何在AutoDL部署一个自定义的Python环境的详细步骤&#xff0c;希望可以帮助到同样对于显卡具有需求的同学。 注册账号 首先登陆AutoDL官网&#xff1a;https://www.gpuhub.com/register 链接…

高级AI记录笔记(二)

学习位置 B站位置&#xff1a;红豆丨泥 UE AI 教程原作者Youtube位置&#xff1a;https://youtu.be/-t3PbGRazKg?siRVoaBr4476k88gct素材自备 提前将动画素材准备好 枪的武器插槽位置调整好 动画蓝图基本没什么变化 准备武器 在AI的接口蓝图中添加两个函数一个是装备武…

汽车共享管理:SpringBoot技术的最佳实践

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足&#xff0c;创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系…

从0开始学PHP面向对象内容之(常用魔术方法)

一、什么是魔术方法 PHP中的魔术方法是以__两个下划线开头的方法&#xff0c;这些方法提供了一种机制&#xff0c;可以在类的生命周期中拦截某些事件或者进行一些操作 二、魔术方法有哪些 一、__construct()&&__destruct() __construct()构造函数&#xff0c;__des…

PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸

小编最近有一篇png图片要批量压缩&#xff0c;大小都在5MB之上&#xff0c;在网上找了半天要么就是有广告&#xff0c;要么就是有毒&#xff0c;要么就是功能复杂&#xff0c;整的我心烦意乱。 于是我自己用python写了一个纯净工具&#xff0c;只能压缩png图片&#xff0c;没任…