探索SQL性能优化之道:实用技巧与最佳实践
SQL性能优化可能是每个数据库管理员和开发者在日常工作中必不可少的一个环节。在大数据时代,为确保数据库系统的响应速度和稳定性,掌握一些实用的SQL优化技巧至关重要。
本文将带着开发人员走进SQL性能优化的世界,深入剖析实用技巧和最佳实践。
理解和分析慢查询
在确定需要优化的目标时,先了解哪些查询执行速度较慢非常重要。通过分析慢查询日志,找出问题并对症下药。
慢查询其实是非常棘手的技术问题,因为他不是毕现的,只有满足一定的数据量和并发请求才会产生。
首先,让我们从慢查询背后的原因入手。慢查询通常是由于数据库中大量数据量、复杂查询语句或者索引缺失等问题导致的。了解这些根本原因是解决问题的第一步。
接下来,我们需要学会如何分析慢查询。一个强大而高效的工具是数据库性能监控工具。通过监控工具收集并分析关键性能指标,例如响应时间、执行计划和索引使用情况等,我们可以快速定位到导致慢查询现象的具体原因。
对于大部分情况来说,良好地编写SQL语句也是解决慢查询问题不可或缺的一环。使用正确的索引、避免全表扫描以及减少不必要的连接操作都能够显著改善查询性能。
此外,在优化过程中,还需要注意硬件资源以及数据库参数调整等方面。合理规划硬件资源(例如内存、磁盘和网络带宽)可以进一步提升数据库性能;同时,在数据库配置中进行适当调整(如缓冲区大小、并发连接数等),也是达到优化目标必不可少的步骤。
最后,在实际应用场景中,我们要时刻保持对业务逻辑和数据模型的深入理解,并进行合理地分库分表等策略调整。这些策略可以有效降低负载压力,并提高系统整体性能。
如果业务开放人员,解决了慢查询问题,小编可以负责任的告诉大家,基本可以解决至少90%以上的性能问题。至少在小编过往的性能优化经历中,大部分都是因为慢查询导致的,后端开发中最常见的慢查询就是SQL相关的语句,也就是CRUD语句,因此一定要重视CRUD,而不是简单的完成任务开发。
选择正确的索引
索引是提高数据库检索性能的一把利器。了解如何创建并利用合适的索引类型(如B-Tree、Hash等)会给您带来显著提升。
首先,开发人员需要明确一个基本概念:索引是数据库中用于加速数据检索的结构。正确的索引选择可以大幅提升查询性能与效率。要做到这一点,以下几点是至关重要的:
1. 确定性能需求。
首先,开发人员需要明确自己对于数据查询性能的具体要求。是更快速的响应时间?还是更高吞吐量?不同类型的应用场景可能对性能有不同要求,因此根据实际需求确定性能指标非常重要。
2. 分析数据访问模式。
深入了解数据访问模式是选择正确索引方案的关键步骤之一。通过分析常见查询类型、频率以及相关字段,您可以发现哪些字段可作为索引列,并且可以根据数据分布特征进一步优化索引效果。
3. 考虑存储和维护成本。
索引并非没有代价。它们需要额外的存储空间,并且在写入操作时可能会产生额外开销。因此,在选择正确的索引方案时,我们不能忽视存储和维护成本。权衡利弊,并根据实际情况做出明智决策。
4. 评估多个方案。
针对不同查询类型和性能需求,可能存在多种可行的索引方案。在做出最终决策之前,请务必评估多个候选方案,并对其进行性能测试和比较分析。只有通过充分评估和实验验证才能找到最适合当前环境和业务需求的方案。
5. 定期监测和调整。
一旦开发人员选择了适当的索引方案并部署到生产环境中,请定期监测其性能表现,并根据运行情况进行必要调整。业务需求和数据访问模式可能会随时间变化,及时优化更新索引将保持系统性能持续提升。
总结起来,选择正确的索引方案是实现高效数据管理不可或缺的一环。通过明确性能需求、分析数据访问模式、考虑存储成本、评估多个方案以及定期监测和调整,您将能够解锁高效数据管理之门,并极大提升工作效率与用户体验。
最重要的一条是开发人员一定要理解索引和熟悉业务,比如要知道MySQL或者PG支持哪些索引以及这些索引的业务场景。最简单的,你要知道唯一性索引的作用以及它带来的性能损耗有哪些。
优化表结构
合理设计表结构不仅有助于降低存储成本,而且有助于提高查询性能。注意减少不必要的字段、合并冗余数据等。
关于合理的设计表结构,其实这个是业务设计阶段需要重点考虑的事情,尤其是重视业务架构的公司,一定会狠抓表结构设计的。
1. 了解业务需求。
在开始表结构设计之前,全面了解业务需求是至关重要的。仔细分析数据类型、数据量和数据关系,并针对性地进行规划。确保每个表都具备清晰明确的定义,并且字段命名简洁、易于理解。
2. 正确选择主键。
主键在表中扮演着至关重要的角色,它可以保证数据唯一性并加速查询效率。选择一个合适的主键类型(如自增整数型或GUID),避免使用复合主键或过长字段作为主键,以免影响索引性能。
3. 合理使用索引。
索引是提高查询速度和降低系统负载的有效手段。但是过多或不恰当地使用索引可能会导致额外存储开销和更新操作延迟。根据具体查询需求选择适合的索引类型(如单列索引、组合索引等),避免冗余和重复索引。
4. 规范化与反规范化处理。
在设计表结构时,根据具体情况进行规范化或反规范化处理。规范化可以消除数据冗余并提升数据一致性,但也会增加查询时的连接操作;反规范化可以减少连接操作并提升查询速度,但会通过冗余数据增加存储空间。
5. 考虑分区和分表。
当数据库中包含大量数据时,考虑采用分区和分表技术可以进一步提高查询效率。通过将数据按照某种规则进行拆分、分区存储或者利用垂直与水平分表策略,可以减小单个表的大小,并使得查询操作更加高效。
6. 定期优化与维护。
优化表结构设计不仅仅只是一次性工作,在日常运营中需要定期进行监测和调整。识别慢查询、瓶颈点以及频繁更新字段等问题,并根据实际情况进行相应调整和优化。
总之,在现代数据库管理中,优化良好的表结构设计对于系统性能至关重要。通过深入了解业务需求、精心选择主键、合理使用索引以及灵活运用规范化与反规范化处理等手段,开发人员将能够实现更快速、可靠且高效地操作您宝贵的数据库资源。
后端开发人员一定要重视业务架构,并将性能的隐患规避在表设计这个环节,从而做到事半功倍。假如业务上线了,你再去改表结构就非常麻烦了,一方面要做数据迁移,另一方面数据量太大,你也没办法有效的去修改表结构。
编写高效的SQL语句
学会编写高效率的SQL语句至关重要。注意避免 SELECT *,合理使用 JOIN 和 WHERE 子句以及其他高级特性。
首先,在编写SQL语句之前,深入了解数据库结构和表之间的关系是至关重要的。确保你对所使用的数据库模式有着清晰的理解,并熟知表之间的连接方式。这将使你更加准确地定位你需要查询的数据,避免不必要的复杂性和性能问题。
其次,在优化查询性能方面,使用正确的索引是不可或缺的。索引可以极大地提升查询速度,但也需要谨慎使用。在选择合适的列作为索引时,考虑到频繁查询和经常更新的情况,并平衡索引维护带来的开销。
此外,了解各种SQL函数和操作符是提高编写效率和复杂查询能力的关键。例如,掌握聚合函数、条件语句和多表连接操作等功能可以让你更轻松地实现复杂业务逻辑和数据统计需求。
值得一提的是,遵循良好的编码规范也是高效SQL编写不可或缺的一环。清晰且可读性强的代码将使你自己和其他开发人员更容易理解、维护和调试。要始终保持一致性,并注意避免冗余代码以及无用或过度复杂化的查询。
最后但同样重要的是测试你所编写的SQL语句。通过对各种场景进行全面测试,包括正常输入、异常输入以及大数据量情况下等测试用例,以确保它们能够正确、快速地执行,并返回准确结果。
总而言之,在精通SQL编写方面并没有捷径可走。它需要不断地学习、实践和经验积累。
多利用查询缓存
尽量充分利用数据库自带的查询缓存机制,并对缓存策略进行调整以适应具体场景。
首先,让我们从基础开始。SQL 缓存的核心思想就是将频繁执行的 SQL 查询结果缓存在内存中,以避免重复查询数据库。这样一来,不仅可以大幅度提升查询性能,还能减轻数据库负载。
那么问题来了, 如何选择合适的缓存策略?这里有几个关键因素需要考虑:数据大小、更新频率和访问模式。根据实际情况选择适合你项目需求的缓存策略,如全量缓存、部分缓存或者延迟加载等。
接下来,让我们深入研究缓存失效问题。由于数据库中数据会不断更新,缓存失效会带来一系列问题。为了应对这个挑战,你可以采用两种常见策略之一:主动失效和被动失效。
主动失效通常基于时间或事件触发,在一定时间间隔或者指定更新事件发生后自动过期并重新查询数据库。而被动失效则需要在数据发生变化时手动触发缓存刷新操作。
此外,在设计 SQL 缓存系统时,请务必考虑到并发性和线程安全性问题。通过使用适当的锁机制或者采用分布式锁技术可以保证缓存操作的正确性和一致性。
最后但同样重要的是监控和调优。有句话说得好:“无法监控就无法改善。”建立一个完善的监控系统可以帮助你实时追踪缓存命中率、响应时间以及内存使用情况等关键指标,并及时采取相应措施进行调优。
分页查询和限制结果集大小
在处理大量数据时,分页查询和限制结果集大小可以避免服务器压力过大,并提升用户体验。
首先,让我们来了解什么是数据库分页。当查询一个包含大量数据的表时,为了避免一次性加载全部数据而导致性能问题,我们需要将查询结果分为多个页面进行展示。这种分页机制可以帮助用户浏览和导航数据,并且减轻服务器负担。
那么如何设计一个高效的数据库分页系统呢?首先,请考虑以下几点:
(1) 合理设置每页显示的数据量。
过多或过少都会对性能产生影响。根据具体需求和硬件条件,选择一个合适的数值。
(2)使用索引优化查询性能。
在SQL语句中使用适当的索引可以极大提高查询效率。请确保所涉及列有适当的索引,并避免全表扫描。
(3)考虑缓存机制。
如果你的应用对实时性要求不高,可以考虑将查询结果缓存在缓存中,以减少数据库访问频率。
(4)使用游标或偏移值进行分页。
在数据库查询中使用游标或偏移值(比如主键ID)来确定每一页的起始位置和结束位置。这种方法能够确保每一页之间没有重复数据,并且对于大型数据集也具备较好的性能优势。
接下来,让我们谈谈如何优化结果返回:
(1)精确筛选。
尽量在数据库层面进行筛选操作,只返回满足条件的数据集。这样可以减少网络传输和后续处理所需时间。
(2)惰性加载。
不要一次性加载所有可能需要展示的相关数据。尽可能延迟加载,并根据用户行为进行动态加载,以提高页面响应速度。
(3)使用异步请求。
将耗时较长且独立于页面交互的请求放在后台进行处理,并通过异步方式获取结果。这样可以增加系统并发处理能力并提升用户体验。
最后但同样重要的是测试和监控你设计好了分页系统后,请务必进行全面而持续地测试与监控。不断迭代改进并根据真实场景与反馈调整方案。
数据库层面调优
对数据库参数进行调整可以改善硬件资源使用效率和系统整体性能。熟悉各种参数及其设定对于挖掘数据库潜力极为重要。
1. 数据分析与清洗。
优质数据是一切分析和决策的基础。在进行任何分析之前,务必进行彻底而精确的数据清洗。去除重复、缺失或错误数据,确保您所依赖的数据质量可靠。
2. 存储与索引优化。
选择适当的存储引擎和数据结构对于提升性能至关重要。合理设计数据库表结构、选用合适的索引策略以及使用分区技术等方法都可以显著提高读写效率和查询速度。
3. 数据压缩与归档。
有效利用数据压缩算法可以显著降低存储空间需求,并提高读写速度。同时,定期进行归档操作可以将历史数据移出主数据库,减少查询负载,并保证核心业务系统的高效稳定运行。
4. 并行计算与分布式处理。
通过并行计算和分布式处理技术,您可以充分利用集群资源进行大规模计算任务。这不仅加快了处理速度,还提供了更好地可伸缩性和容错能力。
5. 缓存与预取技术。
将热门或频繁访问的数据缓存在内存中,并使用预取技术提前加载可能需要的数据块。这样可以显著减少访问外部存储系统(如磁盘)的频率,从而加快响应时间。
6. 数据监控与调优。监控是持续改进的基础。通过实时监控关键指标(如响应时间、吞吐量等),及时发现性能瓶颈并采取针对性调整策略,持续优化系统性能和稳定性。
要充分发挥这些技巧带来的效果,请记得根据具体场景进行权衡和调整。不同业务特点、规模以及硬件设施都会对调优方案产生影响。
监控与持续改进
使用监控工具持续关注数据库性能指标,并根据反馈调整优化策略以满足业务需求和变更。
1. 使用监控工具。
选择一款强大而智能化的监控工具是实现数据库性能监控不可或缺的一步。这些工具可以帮助您在整个数据库环境中追踪重要指标,如响应时间、吞吐量和查询执行时间等。通过实时数据收集和可视化展示,您可以及时发现潜在问题并采取必要的优化措施。
2. 设置警报机制。
除了收集和展示性能数据外,建议配置警报机制以及时通知相关人员关键指标变化或达到预设阈值。这样可以确保在出现不良情况时立即采取行动,并最大程度地减少潜在影响。
3. 进行定期性能优化。
只有对数据库进行定期维护和优化才能保持其高效运行状态。通过合理分析查询计划、索引优化以及存储结构调整等手段,您可以有效改善数据库性能并降低资源消耗。
4. 实施自动化任务调度。
借助自动化任务调度工具,您可以减少人工干预,并确保常规维护任务按计划执行。例如备份、日志清理和统计信息收集等任务都可以自动完成,从而节省时间和资源。
5. 采用云服务解决方案。
考虑将数据库迁移到云端,并利用云服务商提供的弹性伸缩功能与监控仪表盘。云平台通常具备高可用性、强大的计算资源以及自动备份和故障恢复机制,使您能够更好地管理和监控您的数据库环境。
总之,通过实时监控数据库性能指标,并根据实际情况进行优化与改进,在高效运营业务过程中将起到至关重要的作用。选择合适的监控工具、设置警报机制、进行定期性能优化、自动化任务调度以及考虑云服务解决方案都是提升数据库运行效率与稳定性的有效途径。始终牢记这些策略,并将它们融入到您组织的IT运营流程中,将有助于确保持续发展并满足不断增长的业务需求。
针对后端业务,可监控和可观测才是王道,也就是说业务开发人员要能够实时的查看到自己业务的运行状态,并依据运行的状态去决策性能优化的方向以及对应的技术方案。
另外我的新书RocketMQ消息中间件实战派上下册,在京东已经上架啦,目前都是5折,非常的实惠。
https://item.jd.com/14337086.html编辑https://item.jd.com/14337086.html
“RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微服务架构实战派上下册”之后,又一本历时超过1年半的巨无霸技术实战类型的书籍。
为了提高读者阅读本书的体验性,本书总共设计了十个特色,下面我一一的给技术小伙伴阐述一下。
【特色一】由浅到深
本书将RocketMQ的技术原理和最佳实践体系化,按照由浅到深的顺序呈现给读者,使读者可以按照章节顺序按部就班地学习。当学习完全书内容之后,读者不仅能熟悉RocketMQ的核心原理,还能充分理解RocketMQ的“根”。
【特色二】技术新
本书不仅包括RocketMQ4.x(4.9.2版本)的核心原理分析和最佳实践,还包括RocketMQ5.x(5.1. 0版本)的新特性分析和最佳实践。
【特色三】精心设计的主线:零基础入门,循序渐进,直至彻底掌握RocketMQ
本书精心研究了程序类、架构类知识的认知规律,全书共分为6篇:①基础;②进阶;③高级;④高并发、高可用和高性能;⑤应用;⑥新特性,是一条相对科学的主线,让读者快速从“菜鸟”向“RocketMQ分布式架构实战高手”迈进。
【特色四】绘制了大量的图,便于读者理解RocketMQ的原理、架构、流程
一图胜于文,书中在涉及原理、架构、流程的地方配有插图,以便读者更加直观地理解。
【特色五】从架构师和技术专家的视角分析RocketMQ
本书创造性地分析了RocketMQ具备高并发、高可用和高性能的功能及原理,并从架构的视角展开分析,这些也是程序员进阶为技术专家或架构师必备的技能。
以下为从架构师和技术专家的视角分析RocketMQ典型案例,读者阅读完本书之后,也能够达到这样的水准。
【特色六】不仅有原理分析,还有大量的实战案例
本书介绍了大量的实战案例,能让读者“动起来”,在实践中体会功能,而不只是一种概念上的理解。
在讲解每一个知识模块时,我在思考:在这个知识模块中,哪些是读者必须实现的“标准动作”(实例);哪些“标准动作”是可以先完成的,以求读者能快速有一个感知;哪些“标准动作”具有一定难度, 需要放到后面完成。读者在实践完书中的案例之后,就能更容易理解那些抽象的概念和原理了。
本书的目标之一是,让读者在动手中学习,而不是“看书时好像全明白了,一动手却发现什么都不会”。通过体系化的理论和实战案例去培养读者的主动学习能力,这样本书的价值就会被最大化。
本书相信“知行合一”的理念,而不是“只知,而不行”,避免开发人员出现眼高手低的现象。尤其是在技术面试过程中,面试官更加看重的是既懂原理,又能够主动是实践技术的技术人。
【特色七】深入剖析原理
本书以系统思维的方式,从业务功能视角剖析 RocketMQ 底层的技术原理,使读者具备快速阅读 RocketMQ 框架源码的能力。读者只有具备了这种能力,才能举一反三,实现更复杂的功能,应对更复杂的应用场景。
【特色八】从运维的视角分析 RocketMQ 的最佳实践
【特色九】参与开源
本书向读者展示了如何修改 RocketMQ 源码,并快速验证案例分析。这样,读者可以从中学到参与开源的技能,并为后续自己能够参与开源做准备。
【特色十】双色印刷,读者体验会更好
为了提高读者阅读本书的体验,在有上下两册的前提下(巨无霸,超过800页),出版社不吝啬印刷成本,依然采用双色印刷。
【推荐】本书的最佳学习路径
为了提高读者学习RocketMQ的效率,我这边结合我自身从RocketMQ小白到RocketMQ专家的经历,为读者汇总了一条最佳学习路径。
【寄语】作者寄语
RocketMQ是我深度参与研究的一款开源消息中间件,无论是从源码,还是架构场景,我都提炼了很多最佳实践。
在开源领域,技术小伙伴可以使用的开源消息中间件非常的多,比如Kafka、Pulsar等,我之所以选择研究RocketMQ,除了工作内容和角色需要之外,更多的还是自己感兴趣,因此我建议技术小伙伴一定要先培养自己的兴趣,兴趣才是提升技术硬实力的第1要素。
当然我并不止研究了RocketMQ,还研究了Pulsar和Kafka等(包括开源消息中间件生态中的主流框架),只是本书作为一本关于RocketMQ实战派的书籍,我必须要以RocketMQ为主。
假如技术小伙伴想成为Java领域的架构师或者技术专家,我强烈建议你去研究RocketMQ,它会给你带来很多意想不到的技术和架构方法论的收获,这个也是我写本书的主要目的之一。
建议技术小伙伴按照本书设计的学习路线,逐章的去阅读和实战,这样学习效果会更好。
如果技术小伙伴有技术交流的,可以通过博文视点官方的读者群找到我的联系方式,并与我沟通,我会实时的解答读者的疑问。
本文公众号“架构随笔录”
本人视频号“架构随笔录”
【博文视点】2021年度优秀作者
2021年我和博文视点合作了一本技术类型的书籍“Spring Cloud Alibaba微服务架构实战派上下册”,它是我涉足知识输出领域以来的第一本书,同时它也是我自己积累的技术池中部分技术的产出。
为了写好那本书,我几乎花费了所有的休息时间,并主动的承担了书的售后技术辅导和咨询的职责(几乎是有问必答,坚持了整整两年)。
所谓有付出总会有回报,Alibaba这本书的销量还不错,我也因此获得了博文视点颁发的2021年度优秀作者。
我很清楚,这个是博文视点为了鼓励我继续去用心写书,因此我又花了接近1年半的时间去写了RocketMQ消息中间件实战派上下册这本书。
所谓一分耕耘一份收获,我将我对RocketMQ的理解体系化的输出给喜欢技术的技术人,希望真的对大家有帮助。
【博文视点】2023技术成长领路人
2022年,我开始涉足技术直播和技术讲师领域,并和博文视点合作几次技术直播,直播效果还不错,再加上我孜孜不倦的布道“Spring Cloud Alibaba微服务架构实战派上下册”这本书相关的技术,并且这些技术都是有助于“技术人”快速成长的,因此也获得了博文视点颁发的“2023技术成长领路人”这个技术奖项,这个奖项也是为了鼓励我继续通过技术直播的方式给技术人去布道技术,因此只要我有时间,我就会孜孜不倦的去讲和聊技术。
【四维口袋】2022 KVP最具价值技术专家
2022年,我开始涉足企业培训和相关技术直播,并和“四维口袋”合作了几次技术直播,并荣获了2022 KVP最具价值技术专家的技术奖项。
相关文章:
探索SQL性能优化之道:实用技巧与最佳实践
SQL性能优化可能是每个数据库管理员和开发者在日常工作中必不可少的一个环节。在大数据时代,为确保数据库系统的响应速度和稳定性,掌握一些实用的SQL优化技巧至关重要。 本文将带着开发人员走进SQL性能优化的世界,深入剖析实用技巧和最佳实践…...
Github项目推荐-Insomnia
项目地址 GitHub地址:GitHub - Kong/insomnia 官网:The Collaborative API Development Platform - Insomnia 项目简述 想必大家都知道PostMan吧。Insomnia可以说是PostMan的开源平替。页面ui很不错,功能强大,使用也比较方便。…...
python 语法
闭包 在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。 def outfunc(arg):def innerFunc(msg):print(f"<{msg}> {arg} <{msg}>")retu…...
Mac下载Navicat premium提示文件损坏的解决方案
引用:https://blog.csdn.net/weixin_44898291/article/details/120879508 sudo xattr -r -d com.apple.quarantine...
算法——贪心法(Greedy)
贪心法 把整个问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直到所有步骤结束;在每一步都不考虑对后续步骤的影响,在后续步骤中也不再回头改变前面的选择。不足之处: 贪心算法并不能保证获得全局最优解&…...
VmWare虚拟机的安装
VmWare官方最新版下载地址 vmware官方下载地址 安装流程 安装成功验证 安装完成之后,打开网络中心,一定要确认这里多出两个网络连接,才证明Vmware已经安装成功...
Vue.js轻量级框架:快速搭建可扩展的管理系统
一、前言 在项目实战开发中,尤其是大平台系统的搭建,针对不同业务场景,需要为用户多次编写用于录入、修改、展示操作的相应表单页面。一旦表单需求过多,对于开发人员来说,算是一种重复开发,甚至是繁杂的工作…...
Android-多线程
线程是进程中可独立执行的最小单位,也是 CPU 资源(时间片)分配的基本单位,同一个进程中的线程可以共享进程中的资源,如内存空间和文件句柄。线程有一些基本的属性,如id、name、以及priority。 id࿱…...
sqlalchemy 监听所有实体插入以及更新事件
这边使用的是flaskdependency-injectersqlalchemy,有一个公共类,想插入或者更新的时候对公共类某些字段进行统一操作 这个是公共类:包括一些基础字段,所有的实体都会继承这个类 """Models module.""&q…...
go怎么结束很多个协程呢
在Go语言中,可以通过使用context来结束多个协程。context包提供了用于跟踪、取消和传递截止日期的机制,可用于协程的生命周期管理。 以下是一个使用context取消多个协程的示例: package mainimport ("context""fmt"&qu…...
springboot 项目访问静态资源遇到的问题,WebMvcConfigurer和WebMvcConfigurationSupport
之前发过通过继承WebMvcConfigurationSupport来访问静态资源的文章——img标签访问静态资源,代码如下 Configuration public class LocalPathWebMvcConfigurer extends WebMvcConfigurationSupport {/*** 在springboot项目中,允许浏览器访问指定本地文件…...
Nginx配置负载均衡实例
Nginx配置反向代理实例二 提醒一下:下面实例讲解是在Mac系统演示的; 负载均衡实例实现的效果 浏览器地址栏输入地址http://192.168.0.101/test/a.html,刷新页面进行多次请求,负载均衡效果,平均分配到8080端口服务和8…...
【算法题】50. Pow(x, n)
题目 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入:x 2.10000, n 3 输出:9.…...
K8S动态PV
pv和pvc存储卷 存储卷: emptyDir容器内部,随着pod销毁,emptyDir也会消失,不能做数据持久化 hostPath:持久化存储数据,可以和节点上目录做挂载。pod被销毁了数据还在 NFS:一台机器࿰…...
逆变器2(原理框图)
总流程 输入(低压直流24Vdc)——升压(DC—DC)(高压直流369Vdc) ——逆变(DC—AC)(交流220V) 升压电路:BOOST电路、LLC电路、推挽电路 逆变器过程…...
ERA5合集,使用ERA5得到GNSS站点的温度,气压,水汽压,Tm和PWV合集,可以求五个参数
0. 码字不易,点赞加关注(公众号:WZZHHH,部分资料在公众号可以下载),使用请注明出处(根据我的研究方向,我会不断更新代码)。 1.计算PWV的方法一般采用有三种, …...
c#让三个线程按照顺序执行
现实的例子 三个线程都是while(true)的循环体 A线程:采集数据 B线程:画曲线 C线程:存数据库 AutoResetEvent类 AutoResetEvent 是一个线程同步的类,它提供了一种机制,允许一个或多个线程等待直…...
AWS Directory Service 开启ldaps
启用客户端 LDAPS 要启用客户端 LDAPS,您需要将证书颁发机构(CA)证书导入 AWS Managed Microsoft AD,然后在目录上启用 LDAPS。启用后,AWS 应用程序与您自行管理的 Active Directory 之间的所有 LDAP 通信将通过安全套…...
Seata 以 Nacos 为注册中心启动
Seata 以 Nacos 为注册中心启动 修改 conf 下的 application.yml 配置 server:port: 7091spring:application:name: seata-serverlogging:config: classpath:logback-spring.xmlfile:path: ${user.home}/logs/seataextend:logstash-appender:destination: 127.0.0.1:4560kafk…...
Unity填坑-灯光烘焙相关
Unity填坑-灯光烘焙相关 文章目录 Unity填坑-灯光烘焙相关前言一、Light的模式二、光的效果分类三、各种Light模式与烘焙的说明1.Realtime,实时光2.baked,烘焙光3.mixed,混合 四、实时全局光五、其他说明1.动态物体的全局光照效果2.手机使用烘焙注意的点3.其他设置 前言 项目组…...
【python】TCP测速程序
一、服务端 下面是一个简单的 Python 服务端程序的示例,使用标准库中的 socket 模块来建立一个 TCP 服务器。该服务器接收客户端的连接请求,客户端发送一定大小的数据流以测试 TCP 带宽。 实际场景中带宽测试可能需要更复杂的逻辑来确保测试的准确性。 …...
新书速览|从零开始大模型开发与微调:基于PyTorch与ChatGLM
详细讲解大模型基本理论、算法、程序实现与应用实战,揭示大模型开发与微调技术 1 本书内容 大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以C…...
边缘计算:连接实时数据的力量与未来发展之路
边缘计算是一种分布式计算范式,它旨在将数据处理、存储和应用服务带到数据源的近端,即网络的“边缘”。在边缘计算模型中,算力和存储资源距离末端用户或数据源更近,这减少了数据在网络中传输的距离,从而降低延迟&#…...
ZooKeeper 实战(四) Curator Watch事件监听
文章目录 ZooKeeper 实战(四) Curator Watch事件监听0.前言1.Watch 事件监听概念2.NodeCache2.1.全参构造器参数2.2.代码DEMO2.3.日志输出 3.PathChildrenCache3.1.全参构造器参数3.2.子节点监听时间类型3.2.代码DEMO 4.TreeCache4.1.构造器参数4.2.代码DEMO4.3.日志输出 ZooKe…...
Spring Boot 构建工具插件
本文为官方文档直译版本。原文链接 Spring Boot 构建工具插件 引言Spring Boot Maven PluginSpring Boot Gradle PluginSpring Boot AntLib 模块Spring Boot Ant 任务使用 "exejar" 任务示例 使用 "findmainclass" 任务例子 支持其它构建系统重新包装档案嵌…...
Java集成消息队列Kafka
1.Kafka maven坐标 在使用Maven构建Java项目时,你可以通过添加Kafka的Maven依赖来引入Kafka相关的库。下面是Kafka的Maven坐标: <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId&g…...
第十四章JSON
第十四章JSON 1.什么是JSON2.JSON的定义和访问3.JSON在JavaScript中两种常用的转换方式4.JavaBean和JSON的相互转换5.List集合和JSON的相互转换6.map集合和JSON的相互转换 1.什么是JSON 2.JSON的定义和访问 JSON的定义 JSON的类型是一个Object类型 JSON的访问 我们要…...
0_项目git地址——正点原子minifly与crazyflie
1、说明: 在每个专栏的第一篇文章,笔者都会贴出项目的git地址,方便后来者学习和复现; 下面介绍两个项目的官网资料和git地址,最后给出两者的对比; 2、正点原子minifly (1)minifly官网资料下载中心&#…...
php 字符串常用函数
目录 1.一些常用函数 2.代码示例 1.一些常用函数 函数名描述trim()删除字符串两端空行或其它预定义符rtrim()删除字符串右边空行或其它预定义符ltrim()删除字符串左边空行或其它预定义符dirname()返回路径中的目录部分str_split()把字符串分割到数组里explode()使用一个字符串…...
Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)
Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2) 在 https://zhangphil.blog.csdn.net/article/details/135374279 基础上,增加一个功能,当手指在上面的图片…...
国外做内容网站/百度指数的功能
如今,面对形形色色的商品以及各式各样的产品服务项目以及越来越难满足的顾客,对于线下门店而言, “商品”作为门店盈利非常关键因素。光靠经验是远远不够的,必须懂得运用数据,从中挖掘可以提高门店营收能力的关键点。 …...
怎么做一款网站/搜索点击软件
本系列文章将会对CSS的flex布局做一个简单的介绍,希望读者朋友们能够对它的功能有一个整体的认知,在工作中可以自由的运用。这是本系列文章的第一篇,主要介绍flex布局中元素的收缩和扩展。如果要使用flex布局,那么第一个使用到的C…...
电子网站风格设计/百度的营销推广
“快男”有话说 最近大家的话题风头几乎都围绕在“双十一”、“阿里”这样的关键字眼上吧,但是,既海外版微信产品要下架的封口新闻之后,鹅厂一直没什么特别大的动静,但是老大都是悄悄默默干大事。 这不,最近看到了一…...
网站在线优化/杭州seo专员
一、引言 平均精度(Average Precision,简称AP)是目标检测中广泛使用的一种评价指标,用于衡量模型的检测精度。AP的计算方式基于精度-召回曲线(precision-recall curve)。 精度-召回曲线是在不同的置信度阈…...
老干部局网站建设的意义/增加百度指数的四种方法
Redis源码-Hash:Redis String与Hash的区别、Redis Hash存储原理、Redis Hash命令、 Redis Hash存储底层编码、Redis Hash应用场景用Redis存储一张表的数据,怎么存?Hash 哈希String与Hash的区别1.Hash存储原理2.Redis-Hash数据类型:…...
莆田免费建站模板/拉新项目官方一手平台
CIW Fireworks MX2004认证考试试题 难度级别: 难*** 中** 易* 1. 单项选择题(共25题,每小题2分,共50分。每小题选择结果正确得2分,选择结果错误或不选择均不得分。)克隆和 Duplicate 之间的区别是什么…...