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

关于SQL优化的几点说明

1. ORACLE DBA是如何进行SQL优化的

作为一个Oracle数据库管理员(DBA),SQL优化是他们的日常工作之一,主要目标是优化查询性能,减少查询时间,并提高数据库的整体性能。

以下是Oracle DBA如何进行SQL优化的一般流程:

  1. 监控和诊断:首先,DBA需要通过Oracle的监控工具来监控数据库的性能。可以使用Oracle Enterprise Manager (OEM)或其他第三方监控工具来检测数据库性能瓶颈,并确定哪些SQL语句需要优化

  2. 收集统计信息:接下来,DBA需要收集表和索引的统计信息。这些统计信息包括表和索引的大小、行数、分布度和空间利用率等信息,以便Oracle优化器可以选择正确的执行计划。

  3. 执行计划分析:DBA需要使用Oracle的执行计划分析工具来分析查询执行计划,并确定是否存在慢查询或不合理的执行计划。这可以帮助DBA识别需要优化的查询语句,并确定如何改进查询计划。

  4. 优化查询语句:根据分析结果,DBA可以尝试优化查询语句,例如修改查询条件、使用索引、重新组织表结构、使用视图、重构SQL语句等。DBA需要使用Oracle的SQL优化工具(如SQL Tuning Advisor)来识别性能问题和建议优化措施。

  5. 测试和验证:DBA需要对优化后的查询语句进行测试和验证,以确保它们能够提高查询性能。可以使用Oracle的测试工具,如SQL Trace或Autotrace来测试查询性能,以及评估查询结果的正确性和一致性。

  6. 定期维护:DBA还需要定期维护数据库,包括清理无用数据、重建索引、优化查询计划、更新统计信息等,以确保数据库保持高性能。

需要注意的是,SQL优化是一个迭代过程,DBA需要不断尝试优化措施,并进行测试和验证,以确保优化后的查询语句能够提高查询性能和数据库整体性能。

1.2 DBA如何收集统计信息?

在Oracle数据库中,DBA可以使用以下两种方式来收集统计信息:

  1. 自动统计信息收集:Oracle数据库提供了自动统计信息收集功能,可以通过设置参数来自动收集统计信息。这些参数包括:STATISTICS_LEVEL、AUTO_STATS_JOB_ENABLED、AUTO_STATS_JOB_RUN、DBMS_STATS.AUTO_TASK_* 等。

其中,STATISTICS_LEVEL参数用于控制数据库收集统计信息的详细程度,取值包括BASIC、TYPICAL和ALL三种级别。AUTO_STATS_JOB_ENABLED参数用于开启或关闭自动统计信息收集功能,AUTO_STATS_JOB_RUN参数用于指定统计信息收集的时间。DBMS_STATS.AUTO_TASK_* 系列过程则提供了更详细的控制方式。

  1. 手动统计信息收集:DBA也可以通过手动方式来收集统计信息。收集统计信息的过程包括三个步骤:采样、分析和存储

采样是指采集表中的样本数据,用于分析表中的数据分布情况。分析是指分析采样数据,并生成统计信息,包括表的行数、块数、平均行长度、列的分布情况等。存储是指将生成的统计信息存储到数据字典中,供优化器使用。

手动收集统计信息的方式有多种,包括使用DBMS_STATS包中的相关过程、使用Oracle Enterprise Manager等可视化工具等。其中,DBMS_STATS包中的过程提供了非常丰富的统计信息收集功能,包括对表、索引、列、分区等的统计信息收集,也提供了不同粒度的统计信息收集方式。

1.3 高效DBA如何进行SQL执行计划分析

  1. 确定需要优化的SQL语句:DBA需要通过数据库监控工具或用户反馈等方式,确定需要优化的SQL语句。

  2. 获取执行计划:在SQL语句执行时,可以通过设置参数来获取执行计划,包括使用EXPLAIN PLAN语句、使用SQL_TRACE功能、使用AUTOTRACE功能等方式。其中,EXPLAIN PLAN语句可以在不执行SQL语句的情况下生成执行计划,并将其存储到数据字典中。

    • EXPLAIN PLAN语句:使用EXPLAIN PLAN语句可以生成SQL语句的执行计划,语法如下:

EXPLAIN PLAN FOR <SQL Statement>;

这条语句会在数据字典中生成一个执行计划,可以通过以下语句查看执行计划:

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

SQL_TRACE功能:启用SQL_TRACE功能可以捕获SQL语句的执行情况,包括执行计划、绑定变量等。可以通过以下语句启用SQL_TRACE功能:

ALTER SESSION SET SQL_TRACE = TRUE;

运行SQL语句后,可以通过以下语句查看SQL_TRACE文件:

SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';

 AUTOTRACE功能:AUTOTRACE功能可以在SQL语句执行时,自动获取执行计划并输出到屏幕上。可以通过以下语句启用AUTOTRACE功能:

SET AUTOTRACE ON;

 运行SQL语句后,可以查看输出结果,包括执行计划、SQL语句结果、统计信息等。

3.解读执行计划:执行计划是一个树状结构,包含多个节点。每个节点代表一种操作,如全表扫描、索引扫描、连接操作等。在解读执行计划时,需要注意每个节点的操作类型、所访问的表或索引、使用的索引类型、访问数据块的方式等。

4.评估执行计划:评估执行计划的性能,可以考虑以下几个方面:

  • 访问数据块的数量:执行计划中每个节点访问的数据块数量越少,性能越好;

  • 使用的索引类型:使用索引的方式越多,性能越好;

  • 排序操作的数量:排序操作的数量越少,性能越好;

  • 连接操作的顺序:连接操作的顺序对性能的影响很大,需要优先考虑连接操作的顺序。

5.优化执行计划:优化执行计划的方式包括调整SQL语句、创建或删除索引、优化表结构、调整统计信息、调整数据库参数。

  • 调整SQL语句:根据执行计划的分析结果,对SQL语句进行调整,例如添加WHERE条件、使用优化的连接方式等。需要注意的是,SQL语句的调整可能会影响应用程序的功能或逻辑,需要谨慎操作;

  • 创建或删除索引:根据执行计划的分析结果,可以考虑创建或删除索引。如果执行计划中使用了索引扫描,但是索引的选择性较低,可以考虑创建更适合的索引。反之,如果索引的使用并未提高查询性能,可以考虑删除索引以减少维护成本;

  • 优化表结构:根据执行计划的分析结果,可以考虑调整表的结构,例如拆分或合并表、调整表的存储方式等。需要注意的是,表结构的调整可能会影响到数据库的整体性能,需要谨慎操作;

  • 调整统计信息:执行计划的准确性受到统计信息的影响,如果统计信息不准确,可能导致执行计划的不准确。因此,需要定期收集和分析统计信息,如果发现统计信息不准确,可以手动修改或使用自动统计信息收集功能来更新统计信息;

  • 调整数据库参数:数据库参数的设置对性能也有一定的影响如果执行计划分析结果显示数据库参数的设置不合理,可以考虑调整参数值。

 6.重新执行SQL语句并检查执行计划:在完成优化后,需要重新执行SQL语句并检查执行计划。如果优化效果良好,则可以将SQL语句保存在缓存中以提高性能。

 7.监控SQL语句性能:对于重要的SQL语句,需要定期监控其性能,以便及时发现和解决性能问题。可以使用AWR报告、ASH报告、SQL_TRACE文件等方式来监控SQL语句的性能,并对性能进行分析和优化

总的来说,高效DBA进行SQL执行计划分析需要多方面的技能和知识,包括对Oracle数据库的深入理解、对SQL语句的分析和优化能力、对SQL执行计划的解读和评估能力等。需要不断学习和实践,才能成为一名优秀的DBA。

1.4 Oracle DBA 如何进行查询语句的优化

优化查询语句是Oracle DBA日常工作的一项重要任务,以下是一些优化查询语句的方法:

  1. 使用优化的查询语句:在编写查询语句时,需要使用优化的语法和查询方式。例如,使用INNER JOIN代替WHERE子句连接、使用UNION ALL代替UNION、使用子查询代替连接等。此外,应尽可能避免在查询语句中使用通配符和模糊查询,以提高性能。

  2. 使用索引:在表中添加索引可以大大提高查询性能。需要注意的是,索引的使用必须合理,否则会导致索引的性能反而降低。可以通过执行计划分析来确定是否应该使用索引以及选择哪些列建立索引。

  3. 使用合适的表分区:表分区可以提高查询性能,特别是在大型表上。可以根据表的特点选择合适的分区方式,例如按时间分区、按地理位置分区等。

  4. 避免全表扫描:全表扫描会导致查询性能降低。可以通过使用索引、使用分区表等方式来避免全表扫描。

  5. 使用查询提示:Oracle数据库提供了查询提示功能,可以通过在查询语句中添加查询提示来指定查询的执行方式和优化方案。例如,可以使用/*+ INDEX() */提示来强制使用指定的索引。

  6. 收集和分析统计信息:统计信息对于查询优化非常重要。需要定期收集和分析统计信息,以便数据库优化器可以根据统计信息来生成最优的执行计划。

  7. 避免重复查询:在某些情况下,可以使用缓存或存储过程等方式来避免重复查询相同的数据。

总之,Oracle DBA在优化查询语句时需要综合考虑多个方面的因素,包括查询语句本身的优化、索引的使用、表分区、查询提示、统计信息、缓存等,以实现最佳的性能提升效果。

 SQL 优化的实战经验:

 

当需要优化Oracle SQL时,以下是一些实战经验可以参考:

  1. 使用合适的索引:确保表中经常查询的列上创建了适当的索引。在查询语句中尽量使用已有的索引,而不是创建新的索引。

  2. 使用BIND变量:避免在查询中硬编码值。相反,使用BIND变量来代替字面量,这样可以将已编译的SQL语句重复使用,以提高查询性能。

  3. 优化查询计划:分析查询计划以确定是否存在慢查询或不合理的执行计划。可以使用Oracle的执行计划分析工具(如SQL Trace和Autotrace)来分析查询计划,并针对性地进行优化。

  4. 避免全表扫描:使用WHERE子句来限制要查询的行数,避免全表扫描。此外,可以使用分区表、索引和视图来减少全表扫描。

  5. 避免使用子查询:尽量避免使用复杂的子查询。子查询通常比连接查询慢,所以应该尽量使用连接查询。

  6. 避免使用不必要的列:只选择需要的列。避免选择不必要的列,这将降低查询性能。

  7. 优化数据类型:使用适当的数据类型可以提高查询性能。尽量避免使用VARCHAR2数据类型,尽量使用CHAR数据类型代替,因为CHAR数据类型是定长的,可以提高查询性能。

  8. 建立合适的表结构:使用规范化的表结构可以提高查询性能。如果表结构不正确,则查询可能需要扫描大量行,这会影响查询性能。

  9. 避免使用全局变量:尽量避免使用全局变量,因为这可能会导致查询性能下降。

需要注意的是,SQL优化是一个迭代过程,需要不断尝试优化措施,并进行测试和验证,以确保优化后的查询语句能够提高查询性能和数据库整体性能。

 高效SQL优化的全过程:

以下是Oracle DBA进行高效SQL优化的全过程:

  1. 收集统计信息:首先,需要收集数据库和表的统计信息,以便Oracle优化器可以生成最佳的查询计划。可以使用Oracle提供的统计信息收集工具(如DBMS_STATS包)来收集统计信息。

  2. 分析查询语句:对查询语句进行分析,以确定是否存在慢查询或不合理的执行计划。可以使用Oracle的执行计划分析工具(如SQL Trace和Autotrace)来分析查询计划,并确定需要优化的查询语句。

  3. 确定瓶颈:确定查询性能的瓶颈所在,以便可以针对性地进行优化。可以使用Oracle提供的监控工具(如AWR报告)来查找数据库性能瓶颈。

  4. 优化查询计划:根据查询分析结果,优化查询计划。可以使用以下方法优化查询计划:

    a. 创建合适的索引:确保表中经常查询的列上创建了适当的索引。在查询语句中尽量使用已有的索引,而不是创建新的索引。

    b. 使用绑定变量:避免在查询中硬编码值。相反,使用绑定变量来代替字面量,这样可以将已编译的SQL语句重复使用,以提高查询性能。

    c. 避免全表扫描:使用WHERE子句来限制要查询的行数,避免全表扫描。此外,可以使用分区表、索引和视图来减少全表扫描。

    d. 避免使用子查询:尽量避免使用复杂的子查询。子查询通常比连接查询慢,所以应该尽量使用连接查询。

    e. 避免使用不必要的列:只选择需要的列。避免选择不必要的列,这将降低查询性能。

  5. 测试和验证:对优化后的查询语句进行测试和验证,以确保它们能够提高查询性能和数据库整体性能。可以使用Oracle提供的性能测试工具(如SQL*Plus)来测试优化后的查询语句。

  6. 监控和调整:监控数据库性能并进行调整。可以使用Oracle提供的监控工具(如AWR报告)来监控数据库性能,并根据需要调整数据库配置或查询语句。

需要注意的是,SQL优化是一个持续的过程,需要不断尝试优化措施,并进行测试和验证,以确保优化后的查询语句能够提高查询性能和数据库整体性能。

 

 Oracle DBA是如何进行监控和诊断的?用到了哪些工具或命令?

Oracle DBA在日常工作中需要进行数据库的监控和诊断,以下是一些常用的工具和命令:

  1. Oracle Enterprise Manager:这是一个Web界面的数据库管理工具,可以监控数据库、实例、表空间、性能指标等,提供了实时的性能监控、自动诊断和问题解决方案等功能。

  2. SQLPlus:这是一个命令行工具,可以连接到Oracle数据库实例,运行SQL语句、PL/SQL代码等。DBA可以使用SQLPlus来查看数据库对象、用户、权限等信息,并进行SQL优化、数据备份和恢复等操作。

  3. Oracle Trace和SQL Trace:这两个工具用于在Oracle数据库中收集诊断信息,可以帮助DBA分析查询的执行计划、瓶颈和性能问题。DBA可以使用这两个工具来收集和分析SQL语句执行计划、数据库事件、等待事件等信息。

  4. AWR报告:这是一份数据库性能分析报告,其中包括了数据库实例的性能指标、时间段内的活动、资源使用情况等信息。DBA可以使用AWR报告来分析数据库性能瓶颈,并根据建议的优化措施来调整数据库性能。

  5. SQL Tuning Advisor:这是一个Oracle自带的SQL优化工具,可以分析SQL语句的性能,并提供优化建议。DBA可以使用SQL Tuning Advisor来自动分析和优化SQL语句的性能,以提高查询性能。

  6. Oracle Diagnostic Pack:这是一个Oracle提供的诊断工具包,包括了AWR、ADDM、ASH、SQL Tuning Advisor等多个工具,可以帮助DBA诊断和解决数据库性能问题。

以上这些工具和命令是Oracle DBA进行监控和诊断的常用工具和方法,可以帮助DBA及时发现和解决数据库性能问题,提高数据库的可用性和稳定性。

ORACLEDBA面对一个突发的性能故障,在时间紧、任务急的情况下该如何处理?

面对突发的性能故障,Oracle DBA需要采取一系列快速和有效的措施,以最小化故障的影响和恢复数据库的正常运行。以下是一些建议:

  1. 快速响应和定位故障:首先需要快速响应,了解故障的性质、范围和影响。DBA需要使用Oracle的监控工具和命令,如AWR报告、ADDM、SQL Trace等,快速定位问题并查找故障的原因。

  2. 分析故障并采取措施:根据定位到的故障原因,DBA需要采取相应的措施来解决问题。例如,如果是由于大量的IO操作导致的性能瓶颈,可以考虑通过增加磁盘容量、调整表空间大小等方式来缓解问题

  3. 优先处理关键业务:在处理故障的过程中,需要根据业务的重要性和影响程度来制定优先级。例如,对于影响核心业务的故障,DBA需要优先解决,以确保系统正常运行。

  4. 与相关人员进行沟通:DBA需要与相关人员进行沟通,了解业务需求和应急计划。这些信息可以帮助DBA更好地理解问题的影响和优先级,并制定相应的解决方案。

  5. 记录和总结故障:最后,DBA需要记录和总结故障处理的经验和方法。这些经验和方法可以用于未来的故障处理,并帮助DBA更好地管理和优化数据库

总之,在面对突发的性能故障时,DBA需要快速响应、分析故障、制定优先级、与相关人员沟通,并记录和总结故障处理的经验和方法。这些步骤可以帮助DBA更好地处理故障,恢复数据库的正常运行。

Oracle DBA记录和总结故障处理的经验和方法:

以下是一些Oracle DBA记录和总结故障处理的经验和方法:

  1. 记录故障细节和解决方案:在处理故障时,DBA需要记录故障的细节,包括故障时间、范围、影响等,并记录解决方案的步骤和结果。这些记录可以帮助DBA更好地理解和分析故障,并为以后的故障处理提供参考。

  2. 建立故障知识库:在处理多个故障时,DBA可以将记录的故障信息整理成故障知识库,包括故障的类型、原因、解决方案等。这些知识库可以帮助DBA更快速地诊断和解决故障,并提高故障处理的效率。

  3. 分享经验和方法:DBA可以将记录和总结的经验和方法与团队和社区分享。通过分享经验和方法,DBA可以学习和借鉴其他人的经验,也可以帮助其他DBA更好地处理故障。

  4. 建立监控和预警系统:DBA可以建立监控和预警系统,包括实时监控数据库性能、预警系统发出警告信号等。这些系统可以帮助DBA及时发现和解决潜在的故障,避免故障对系统造成不必要的影响。

  5. 参加培训和学习:DBA可以参加培训和学习课程,学习新的技能和工具,以应对不同的故障和挑战。参加培训和学习也可以帮助DBA不断提高自己的技能和能力,更好地管理和优化数据库。

总之,记录和总结故障处理的经验和方法、建立故障知识库、分享经验和方法、建立监控和预警系统、参加培训和学习等都是Oracle DBA提高自身能力和处理故障的有效途径。

高效DBA日常运维在做什么?

高效的DBA日常运维包括以下几个方面:

  1. 数据库性能监控和调优:DBA需要定期对数据库进行性能监控和调优,包括监控数据库运行情况、识别潜在的性能问题、优化SQL语句等。

  2. 数据库备份和恢复:DBA需要定期对数据库进行备份,并能够在出现故障时迅速进行恢复。

  3. 数据库安全管理:DBA需要管理数据库的安全,包括设置用户权限、访问控制等。

  4. 数据库版本升级和补丁管理:DBA需要定期对数据库进行版本升级和补丁管理,以确保数据库的稳定性和安全性。

  5. 数据库容量规划和管理:DBA需要进行数据库容量规划和管理,确保数据库的容量能够满足业务需求,并防止数据库出现容量不足的问题。

  6. 数据库架构设计和优化:DBA需要对数据库的架构进行设计和优化,以提高数据库的性能和可用性。

  7. 数据库事务和锁管理:DBA需要管理数据库的事务和锁,以确保数据库的数据完整性和一致性。

  8. 数据库监控和告警管理:DBA需要建立数据库监控和告警系统,对数据库进行实时监控,并能够及时响应告警信息。

总之,高效的DBA日常运维需要全面掌握数据库的性能、备份恢复、安全管理、版本升级、容量规划、架构设计和优化、事务和锁管理、监控和告警管理等方面的知识和技能,以确保数据库的稳定运行和高效运维。

高效DBA日常运维需要进行以下方面的工作:

  1. 数据库监控和性能优化:DBA需要实时监控数据库性能,包括CPU利用率、内存利用率、I/O利用率等,并优化数据库性能,以提高数据库的响应速度和稳定性。

  2. 数据库备份和恢复:DBA需要定期备份数据库,以保证数据的安全和可靠性,并在需要时进行数据恢复,以尽快恢复数据库的正常运行。

  3. 安全管理和授权:DBA需要定期审查数据库的安全性和权限,以确保数据库的安全性,避免数据泄漏和攻击。

  4. 应用支持和故障处理:DBA需要对数据库相关的应用进行支持,并在出现故障时及时进行处理,以尽快恢复应用的正常运行。

  5. 数据库升级和迁移:DBA需要对数据库进行升级和迁移,以保证数据库的稳定性和可靠性,同时避免数据丢失或损坏。

  6. 性能测试和优化:DBA需要进行性能测试和优化,以确保数据库能够满足业务需求,并提高数据库的性能和响应速度。

  7. 系统监控和警报:DBA需要定期监控数据库系统和应用程序的运行情况,并在出现异常时发出警报,以及时发现和解决问题。

  8. 数据库容量规划和管理:DBA需要对数据库的容量进行规划和管理,以确保数据库能够满足业务需求,同时避免因容量不足而导致的系统故障。

综上所述,高效DBA日常运维需要进行多方面的工作,包括数据库监控和性能优化、数据库备份和恢复、安全管理和授权、应用支持和故障处理、数据库升级和迁移、性能测试和优化、系统监控和警报、数据库容量规划和管理等。只有在日常工作中不断学习和积累经验,才能成为一名高效的DBA。

相关文章:

关于SQL优化的几点说明

1. ORACLE DBA是如何进行SQL优化的 作为一个Oracle数据库管理员(DBA)&#xff0c;SQL优化是他们的日常工作之一&#xff0c;主要目标是优化查询性能&#xff0c;减少查询时间&#xff0c;并提高数据库的整体性能。 以下是Oracle DBA如何进行SQL优化的一般流程&#xff1a; 监控…...

使用高精度秒表StopWatch测试DateTime.Now的精度

StopWatch使用的命名空间&#xff1a;using System.Diagnostics;StopWatch的使用方法&#xff1a;创建Stopwatch对象&#xff1a;stopwatch&#xff1b;stopwatch计时表开启&#xff1a;stopwatch.Start();stopwatch计时表关闭&#xff1a;stopwatch.Stop();计算stopwatch.Stop…...

【C++】vector的使用及其模拟实现

这里写目录标题一、vector的介绍及使用1. vector的介绍2. 构造函数3. 遍历方式4. 容量操作及空间增长问题5. 增删查改6. vector二维数组二、vector的模拟实现1. 构造函数2. 迭代器和基本接口3. reserve和resize4. push_back和pop_back5. insert和erase5. 迭代器失效问题5. 浅拷…...

[洛谷-P2585][ZJOI2006]三色二叉树(树形DP+状态机DP)

[洛谷-P2585][ZJOI2006]三色二叉树&#xff08;树形DP状态机DP&#xff09;一、题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示数据规模与约定二、分析1、递归建树2、树形DP 状态机DP&#xff08;1&#xff09;状态表示&#xff08;2&#xff09;状态转移三、…...

BI技巧丨计算组

PowerBI有三大工具&#xff0c;分别是DAX Studio&#xff0c;Tabular Editor和Bravo。 DAX Studio通常我们会用来进行性能分析和DAX调优使用&#xff0c;Bravo一般用来批量格式化DAX&#xff0c;而Tabular Editor主要的功能就是计算组。 计算组这个名词&#xff0c;相信很多小伙…...

PMP项目管理项目范围管理

目录1 项目范围管理概述2 规划范围管理3 收集需求4 定义范围5 创建 WBS6 确认范围7 控制范围1 项目范围管理概述 项目范围管理包括确保项目做且只做所需的全部工作&#xff0c;以成功完成项目的各 个过程。管理项目范围主要在于定义和控制哪些工作应在项目内&#xff0c;哪些工…...

Flink 定时加载数据源

一、简介 flink 自定义实时数据源使用流处理比较简单&#xff0c;比如 Kafka、MQ 等&#xff0c;如果使用 MySQL、redis 批处理也比较简单 如果需要定时加载数据作为 flink 数据源使用流处理&#xff0c;比如定时从 mysql 或者 redis 获取一批数据&#xff0c;传入 flink 做处…...

ChatGPT、人工智能、人类和一些酒桌闲聊

© 2023 Conmajia Initiated 10th March, 2023 昨天跟某化学家喝酒&#xff0c;期间提到了 ChatGPT。他的评价是&#xff1a;这鬼东西大量输出毫无意义、错漏百出甚至是虚假的信息&#xff0c;“in a confident accent”。例如某次 GPT 针对“描述某某记者”这一问题&#…...

WebRTC开源库内部调用abort函数引发程序发生闪退问题的排查

目录 1、初始问题描述 2、使用Process Explorer工具查看到处理音视频业务的rtcmpdll.dll模块没有加载起来 3、使用Dependency Walker工具查看到rtcmpdll.dll依赖的库有问题 4、更新库之后Debug程序启动时就发生异常&#xff0c;程序闪退 5、VS调试时看不到有效的函数调用堆…...

Golang并发编程

Golang并发编程 文章目录Golang并发编程1. 协程2. channel2.1 channel的创建2.2 使用waitGroup实现同步3. 并发编程3.1 并发编程之runtime包3.2 mutex互斥锁3.3 channel遍历3.3.1 for if遍历3.3.2 for range3.4 select switch3.5 Timer3.5.1 time.NewTimer()3.5.2 Stop、reset…...

windows+Anaconda环境下安装BERT成功安装方法及问题汇总

前言 在WindowsAnaconda环境下安装BERT&#xff0c;遇到各种问题&#xff0c;几经磨难&#xff0c;最终成功。接下来&#xff0c;先介绍成功的安装方法&#xff0c;再附上遇到的问题汇总 成功的安装方法 1、创建虚拟环境 注意&#xff1a;必须加上python3.7.12以创建环境&a…...

git - 简易指南

git - 简易指南 创建新仓库 创建新文件夹&#xff0c;打开&#xff0c;然后执行 git init 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克隆版本&#xff1a; git clone /path/to/repository 如果是远端服务器上的仓库&#xff0c;你的命令会是这个样…...

[论文笔记]Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

引言 我们知道Transformer很好用&#xff0c;但它设定的最长长度是512。像一篇文章超过512个token是很容易的&#xff0c;那么我们在处理这种长文本的情况下也想利用Transformer的强大表达能力需要怎么做呢&#xff1f; 本文就带来一种处理长文本的Transformer变种——Transf…...

华为OD机试题 - 找目标字符串(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:找目标字符串题目输入输出示例一输入输出说明Code解题思路版权说…...

C++面向对象编程之六:重载操作符(<<,>>,+,+=,==,!=,=)

重载操作符C允许我们重新定义操作符&#xff08;例如&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff09;等&#xff0c;使其对于我们自定义的类类型对象&#xff0c;也能像内置数据类型&#xff08;例如&#xff1a;int&#xff0c;float&#xff0c;double&…...

JS_wangEditor富文本编辑器

官网&#xff1a;https://www.wangeditor.com/ 引入 CSS 定义样式 <link href"https://unpkg.com/wangeditor/editorlatest/dist/css/style.css" rel"stylesheet"> <style>#editor—wrapper {border: 1px solid #ccc;z-index: 100; /* 按需定…...

Django实践-06导出excel/pdf/echarts

文章目录Django实践-06导出excel/pdf/echartsDjango实践-06导出excel/pdf/echarts导出excel安装依赖库修改views.py添加excel导出函数修改urls.py添加excel/运行测试导出pdf安装依赖库修改views.py添加pdf导出函数修改urls.py添加pdf/生成前端统计图表修改views.py添加get_teac…...

java并发入门(一)共享模型—Synchronized、Wait/Notify、pack/unpack

一、共享模型—管程 1、共享存在的问题 1.1 共享变量案例 package com.yyds.juc.monitor;import lombok.extern.slf4j.Slf4j;Slf4j(topic "c.MTest1") public class MTest1 {static int counter 0;public static void main(String[] args) throws InterruptedEx…...

Ast2500增加用户自定义功能

备注&#xff1a;这里使用的AMI的开发环境MegaRAC进行AST2500软件开发&#xff0c;并非openlinux版本。1、添加上电后自动执行的任务在PDKAccess.c中列出了系统启动过程中的所有任务&#xff0c;若需要添加功能&#xff0c;在相应的任务中添加自定义线程。一般在两个任务里面添…...

用Python暴力求解德·梅齐里亚克的砝码问题

文章目录固定个数的砝码可称量重量砝码的组合方法40镑砝码的组合问 一个商人有一个40磅的砝码&#xff0c;由于跌落在地而碎成4块。后来&#xff0c;称得每块碎片的重量都是整磅数&#xff0c;而且可以用这4 块来称从1 至40 磅之间的任意整数磅的重物。问这4 块砝码片各重多少&…...

离散Hopfield神经网络的分类——高校科研能力评价

离散Hopfield网络离散Hopfield网络是一种经典的神经网络模型&#xff0c;它的基本原理是利用离散化的神经元和离散化的权值矩阵来实现模式识别和模式恢复的功能。它最初由美国物理学家John Hopfield在1982年提出&#xff0c;是一种单层的全连接神经网络&#xff0c;被广泛应用于…...

Retrofit核心源码分析(三)- Call逻辑分析和扩展机制

在前面的两篇文章中&#xff0c;我们已经对 Retrofit 的注解解析、动态代理、网络请求和响应处理机制有了一定的了解。在这篇文章中&#xff0c;我们将深入分析 Retrofit 的 Call 逻辑&#xff0c;并介绍 Retrofit 的扩展机制。 一、Call 逻辑分析 Call 是 Retrofit 中最基本…...

源码分析spring如和对@Component注解进行BeanDefinition注册的

Spring ioc主要职责为依赖进行处理&#xff08;依赖注入、依赖查找&#xff09;、容器以及托管的(java bean、资源配置、事件)资源声明周期管理&#xff1b;在ioc容器启动对元信息进行读取&#xff08;比如xml bean注解等&#xff09;、事件管理、国际化等处理&#xff1b;首先…...

C语言--字符串函数1

目录前言strlenstrlen的模拟实现strcpystrcatstrcat的模拟实现strcmpstrcmp的模拟实现strncpystrncatstrncmpstrstrstrchr和strrchrstrstr的模拟实现前言 本章我们将重点介绍处理字符和字符串的库函数的使用和注意事项。 strlen 我们先来看一个我们最熟悉的求字符串长度的库…...

Webstorm使用、nginx启动、FinalShell使用

文章目录 主题设置FinalShellFinalShell nginx 启动历史命令Nginx页面发布配置Webstorm的一些常用快捷键代码生成字体大小修改Webstorm - gitCode 代码拉取webstorm 汉化webstorm导致CPU占用率高方法一 【忽略node_modules】方法二 【设置 - 代码编辑 - 快速预览文档 - 关闭】主…...

源码分析Spring @Configuration注解如何巧夺天空,偷梁换柱。

前言 回想起五年前的一次面试&#xff0c;面试官问Configuration注解和Component注解有什么区别&#xff1f;记得当时的回答是&#xff1a; 相同点&#xff1a;Configuration注解继承于Component注解&#xff0c;都可以用来通过ClassPathBeanDefinitionScanner装载Spring bean…...

vector的使用及模拟实现

目录 一.vector的介绍及使用 1.vector的介绍 2.vector的使用 1.vector的定义 2.vector iterator的使用 3. vector 空间增长问题 4.vector 增删查改 3.vector 迭代器失效问题&#xff08;重点&#xff09; 1. 会引起其底层空间改变的操作 2.指定位置元素的删除操作--erase 3. Li…...

“华为杯”研究生数学建模竞赛2007年-【华为杯】A题:基于自助法和核密度估计的膳食暴露评估模型(附获奖论文)

赛题描述 我国是一个拥有13亿人口的发展中国家,每天都在消费大量的各种食品,这批食品是由成千上万的食品加工厂、不可计数的小作坊、几亿农民生产出来的,并且经过较多的中间环节和长途运输后才为广大群众所消费,加之近年来我国经济发展迅速而环境治理没有能够完全跟上,以…...

刷题(第三周)

目录 [CISCN2021 Quals]upload [羊城杯 2020]EasySer [网鼎杯 2020 青龙组]notes [SWPU2019]Web4 [Black Watch 入群题]Web [HFCTF2020]BabyUpload [CISCN2021 Quals]upload 打开界面以后&#xff0c;发现直接给出了源码 <?php if (!isset($_GET["ctf"]))…...

新C++(14):移动语义与右值引用

当你在学习语言的时候&#xff0c;是否经常听到过一种说法,""左边的叫做左值&#xff0c;""右边的叫做右值。这句话对吗&#xff1f;从某种意义上来说&#xff0c;这句话只是说对了一部分。---前言一、什么是左右值?通常认为:左值是一个表示数据的表达式(…...

TCP相关概念

目录 一.滑动窗口 1.1概念 1.2滑动窗口存在的意义 1.3 滑动窗口的大小变化 1.4丢包问题 二.拥塞控制 三.延迟应答 四.捎带应答 五.面向字节流 六.粘包问题 七.TIME_WAIT状态 八.listen第2个参数 九.TCP总结 一.滑动窗口 1.1概念 概念&#xff1a;双方在进行通信时&a…...

MySQL锁篇

MySQL锁篇 一、一条update语句 我们的故事继续发展&#xff0c;我们还是使用t这个表&#xff1a; CREATE TABLE t (id INT PRIMARY KEY,c VARCHAR(100) ) EngineInnoDB CHARSETutf8;现在表里的数据就是这样的&#xff1a; mysql> SELECT * FROM t; —------- | id | c | —…...

SWF (Simple Workflow Service)简介

Amazon Simple Workflow Service (Amazon SWF) 提供了给应用程序异步、分布式处理的流程工具。 SWF可以用在媒体处理、网站应用程序后端、商业流程、数据分析和一系列定义好的任务上。 举个例子&#xff0c;下图表明了一个电商网站的工作流程&#xff0c;其中涉及了程序执行的…...

java(Class 常用方法 获取Class对象六种方式 动态和静态加载 类加载流程)

ClassClass常用方法获取Class对象六种方式哪些类型有Class对象动态和静态加载类加载流程加载阶段连接阶段连接阶段-验证连接阶段-准备连接阶段-解析初始化阶段获取类结构信息Class常用方法 第一步&#xff1a;创建一个实体类 public class Car {public String brand "宝…...

【数据结构】线性表和顺序表

Yan-英杰的主页 悟已往之不谏 知来者之可追 目录 1.线性表 2.顺序表 2.1 静态顺序表 2.2 动态顺序表 2.3移除元素 1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线…...

Ubuntu数据库安装(mysql)

##1.下载mysql-apt-config_0.8.22-1_all.deb并且安装 wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb##2.更新apt-updata sudo apt update##3.如果出现如下图情况执行以下命令 [外链图片转存失败,源站可…...

MyBatis-Plus的入门学习

MyBatis-Plus入门学习简介特性快速开始MyBatis-Plus的注解详解Tableld主键生成策略1、数据库自动增长 AUTO2、UUID3、Redis生成id4、MP主键自动生成TableNameTableField自动填充测试方法&#xff1a;update乐观锁select查所有根据id查多个id批量查询简单条件查询&#xff08;通…...

华为OD机试题 - 内存池(JavaScript)

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:内存池题目输入输出示例一输入输出说明Code解题思路版权说明华为…...

数据库索引原理

数据库索引的作用是做数据的快速检索&#xff0c;而快速检索实现的本质是数据结构。像二叉树、红黑树、AVL树、B树、B树、哈希等数据结构都可以实现索引&#xff0c;但其中B树效率最高。MySQL数据库索引使用的是B树。二叉树&#xff1a;二叉树中&#xff0c;左子树比根节点小&a…...

字符函数和字符串函数详解(1)

目录前言strlen函数strlensizeofstrcpy函数strcat函数strcmp函数总结前言 最近要调整状态&#xff0c;写的文章质量不佳让大家失望&#xff0c;我现在也在反思我在做什么&#xff0c;我会什么&#xff0c;我学了什么。等我想明白的那天&#xff0c;我一定能跟大家顶峰相见的&a…...

【数据分析:工具篇】NumPy(1)NumPy介绍

【数据分析&#xff1a;工具篇】NumPy&#xff08;1&#xff09;NumPy介绍NumPy介绍NumPy的特点数组的基本操作创建数组索引和切片数组运算NumPy介绍 NumPy&#xff08;Numerical Python&#xff09;是Python的一个开源的科学计算库&#xff0c;它主要用于处理大规模的多维数组…...

mysql时区问题

设置mysql容器时间与服务器时间一致 问题背景&#xff1a; 今天测试发现一个问题&#xff0c;时间不一致&#xff0c;当工单入库时&#xff0c;其创建时间和更新时间应该是一样的&#xff0c;即使不一样最多只会错几秒的时间&#xff1b;实际上两个时间相差的大概8小时&#…...

磨金石教育摄影技能干货分享|高邮湖上观花海

江苏高邮&#xff0c;说到这里所有人能想到的&#xff0c;就是那烟波浩渺的高邮湖。高邮在旅游方面并不出名&#xff0c;但是这里的自然人文景观绝对不输于其他地方。高邮不止有浩瀚的湖泊&#xff0c;春天的油菜花海同样壮观。春日的午后&#xff0c;与家人相约游玩&#xff0…...

mysql navicat忘记密码

mysql忘记密码是常用的事情&#xff0c;那么如何解决它呢&#xff1f;1、首先将MySQL的服务关闭&#xff0c;两种方法&#xff1a;&#xff08;1&#xff09;打开命令行cmd输入net stop mysql命令即可关闭MySQL服务。&#xff08;2&#xff09;打开任务管理器&#xff0c;找到服…...

Git的下载、安装、配置、使用、卸载

前言 我是跟着狂神老师学的。该博客仅用于笔记所用。 下面是老师的B站和笔记 B站&#xff1a;https://www.bilibili.com/video/BV1FE411P7B3?p1&vd_source9266cf72b1f398b63abe0aefe358d7d6 笔记&#xff1a;https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ 一、准备工…...

【博客631】监控网卡与进程网络IO使用情况

监控进程的网络IO使用情况 1、vnstat 由于 vnstat 依赖于内核提供的信息&#xff0c;因此执行以下命令来验证内核是否提供了 vnStat 所期望的所有信息&#xff1a; # vnstat --testkernel This test will take about 60 seconds. Everything is ok.不带任何参数的 vnstat 将…...

【Leetcode】【简单】35. 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入:…...

sql面试题

mysql优化 优化准则&#xff1a; 建表时&#xff1a;合理选择字段的类型&#xff0c;单表字段数量 sql查询尽量单表操作&#xff0c;避免复杂操作&#xff0c;复杂的多表通过java代码实现 构建复合索引优化&#xff0c;索引尽量可以覆盖主要业务查询 sql避免索引失效 避免大…...

SQL 进阶刷题笔记

SQL 进阶刷题笔记 一、MySQL 进阶 这里主要是 MySQL 刷题相关笔记&#xff0c;方便后面温习和查阅&#xff0c;希望可以帮到大家&#xff01;&#xff01;&#xff01; 题1 请计算每张SQL类别试卷发布后&#xff0c;当天5级以上的用户作答的人数uv和平均分avg_score&#xff0…...

[网鼎杯 2020 朱雀组]Think Java

SqlDict.java ,其中sql语句处存在sql注入漏洞 package .sqldict;import cn.abc.core.sqldict.Row; import cn.abc.core.sqldict.Table; import java...