探索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.x4.9.2版本)的核心原理分析和最佳实践,还包括RocketMQ5.x5.1. 0版本)的新特性分析和最佳实践。

【特色三】精心设计的主线:零基础入门,循序渐进,直至彻底掌握RocketMQ

本书精心研究了程序类、架构类知识的认知规律,全书共分为6篇:基础;进阶;高级;高并发、高可用和高性能;应用;新特性,是一条相对科学的主线,让读者快速从“菜鸟”向“RocketMQ分布式架构实战高手”迈进。

【特色四】绘制了大量的图,便于读者理解RocketMQ的原理、架构、流程 

一图胜于文,书中在涉及原理、架构、流程的地方配有插图,以便读者更加直观地理解。

【特色五】从架构师和技术专家的视角分析RocketMQ 

本书创造性地分析了RocketMQ具备高并发、高可用和高性能的功能及原理,并从架构的视角展开分析,这些也是程序员进阶为技术专家或架构师必备的技能。

以下为从架构师和技术专家的视角分析RocketMQ典型案例,读者阅读完本书之后,也能够达到这样的水准。

【特色六】不仅有原理分析,还有大量的实战案例 

本书介绍了大量的实战案例,能让读者“动起来”,在实践中体会功能,而不只是一种概念上的理解。

在讲解每一个知识模块时,我在思考:在这个知识模块中,哪些是读者必须实现的“标准动作”(实例);哪些“标准动作”是可以先完成的,以求读者能快速有一个感知;哪些“标准动作”具有一定难度, 需要放到后面完成。读者在实践完书中的案例之后,就能更容易理解那些抽象的概念和原理了。

本书的目标之一是,让读者在动手中学习,而不是“看书时好像全明白了,一动手却发现什么都不会”。通过体系化的理论和实战案例去培养读者的主动学习能力,这样本书的价值就会被最大化。 

本书相信“知行合一”的理念,而不是“只知,而不行”,避免开发人员出现眼高手低的现象。尤其是在技术面试过程中,面试官更加看重的是既懂原理,又能够主动是实践技术的技术人。

【特色七】深入剖析原理 

 本书以系统思维的方式,从业务功能视角剖析 RocketMQ 底层的技术原理,使读者具备快速阅读 RocketMQ 框架源码的能力。读者只有具备了这种能力,才能举一反三,实现更复杂的功能,应对更复杂的应用场景。

 【特色八】从运维的视角分析 RocketMQ 的最佳实践

【特色九】参与开源 

 本书向读者展示了如何修改 RocketMQ 源码,并快速验证案例分析。这样,读者可以从中学到参与开源的技能,并为后续自己能够参与开源做准备。

【特色十】双色印刷,读者体验会更好 

为了提高读者阅读本书的体验,在有上下两册的前提下(巨无霸,超过800页),出版社不吝啬印刷成本,依然采用双色印刷。

【推荐】本书的最佳学习路径 

 为了提高读者学习RocketMQ的效率,我这边结合我自身从RocketMQ小白到RocketMQ专家的经历,为读者汇总了一条最佳学习路径。

【寄语】作者寄语 

RocketMQ是我深度参与研究的一款开源消息中间件,无论是从源码,还是架构场景,我都提炼了很多最佳实践。

在开源领域,技术小伙伴可以使用的开源消息中间件非常的多,比如KafkaPulsar等,我之所以选择研究RocketMQ,除了工作内容和角色需要之外,更多的还是自己感兴趣,因此我建议技术小伙伴一定要先培养自己的兴趣,兴趣才是提升技术硬实力的第1要素。

当然我并不止研究了RocketMQ,还研究了PulsarKafka等(包括开源消息中间件生态中的主流框架),只是本书作为一本关于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最具价值技术专家的技术奖项。

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

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

相关文章

深度学习笔记(四)——TF2构建基础网络常用函数+简单ML分类网络实现

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解,如有遗漏或错误,欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 TF2基础常用函数 1、张量处理类 强制数据类型转换: a1 tf.constant([1,2,3], dtypetf.floa…

装机必看:电脑Bios里的CSM兼容模块是啥?打开有啥用?

前言 最近朋友装了一台新的电脑,用的i5-13490f的CPU。但是由于预算有限,手边只有一块GTX650ti,没办法,只好先这么用着了。 谁知道出现了个大问题:电脑开机居然没办法显示。 由于电脑所有的配件基本上都是全新的&…

随身WiFi选购要点!从此不再踩坑!高性价比高口碑随身wifi推荐,随身WiFi哪个牌子最好用

一、买随身WiFi注意事项 1.随身WiFi常见的芯片高通、马维尔和中兴微,其中高通芯片大部分都是报废手机拆下来的二手芯片,价格相对来说比较低,那种一二十块的随身WiFi,常用这种,优点便宜,缺点设备发烫&#…

视频转码:掌握mp4视频格式转FLV视频的技巧,视频批量剪辑方法

在多媒体时代,视频格式的转换成为一种常见的需求。把MP4格式转换为FLV格式,FLV格式的视频文件通常具有较小的文件大小,同时保持了较好的视频质量。批量剪辑视频的方法能大大提高工作效率。下面来看云炫AI智剪如何进行MP4到FLV的转码&#xff…

轻量化的yolov8部署到安卓Android手机端

一、pytorch环境配置和yolov8源码安装 首先在电脑上需要配置好pytorch环境,和yolov8源码的下载 然后针对yolov8做自己的轻量化改进 二、下载Android Studio和ncnn-android-yolov8 1. Android Studio官网链接: 下载 Android Studio 和应用工具 - And…

企业数据中台整体介绍及建设方案:文件全文51页,附下载

关键词:数据中台解决方案,数据治理,数据中台技术架构,数据中台建设内容,数据中台核心价值 一、什么是数据中台? 数据中台是指通过数据技术,对海量数据进行采集、计算、存储、加工,…

面试算法119:最长连续序列

题目 输入一个无序的整数数组,请计算最长的连续数值序列的长度。例如,输入数组[10,5,9,2,4,3],则最长的连续数值序列是[2,3,4,5],因此…

2024年前端面试中JavaScript的30个高频面试题之中级知识

基础知识 高级知识 13. 什么是闭包?闭包的用例有哪些? 闭包是一个功能,它允许函数捕获定义该函数的环境(或保留对作用域中变量的访问)即使在该作用域已经关闭后。 我们可以说闭包是函数和词法环境的组合,其中定义了该函数。 换句话说,闭包为函数提供了访问自己的作用域、…

爬虫利器一览

前言 爬虫(英文:spider),可以理解为简单的机器人,如此一个“不为名利而活,只为数据而生,目标单纯,能量充沛,不怕日晒雨淋,不惧寒冬酷暑”的家伙,…

Casper Labs 与 IBM Consulting 合作,AI透明度、审计能力的新方案

​ “全新解决方案,旨在帮助企业更有效地管理训练数据,这些数据由不同的组织通过生成式人工智能系统产生” 企业区块链软件和服务提供商 Casper Labs 与 IBM Consulting 共同宣布,它们将联手推出新的解决方案,以帮助客户在其人工…

VSCode 搭建Java开发环境

笔者使用最多的语言是C,也使用过不少其它语言,像Erlang,Python,Lua,C#等等,目前项目中在使用Go,但是没使用过Java。最近看到C#夺冠,首次荣获 TIOBE 年度编程语言,同时也看…

拯救者y9000p安装linux、windows双系统。

首先需要准备启动盘 我用的是Win32DiskImager来做的。资源使用的是ubuntu-20.04.6-desktop-amd64.iso。别用低版本,失败很多次之后的教训。 磁盘管理-磁盘分区-右键-压缩卷 这边分区出来之后,不要分配。安装时候会自动分配的。 重启之后F2进去BIOS设置…

使用ArduinoMqttClient库连接阿里云,并实现发送接收数据(ESP8266)

文章目录 引言一、MQTT理论部分二、使用MQTT.fx接入物联网设备三、使用ESP8266连接阿里云四、参考例程 引言 阿里云物联网平台的接入方式有很多种,从阿里云提供的开发文档可以看到,支持的接入协议有MQTT、HTTPS、CoAP、JT/808、GB/32960协议等等&#x…

数据库悲观锁 select for update的详解

一 作用 1.1 结论 在mysql中,select ... for update 仅适用于InnoDB,且必须在事务块中才能生效。Innodb引擎默认是行锁。 Select .... from where .... for update 如果在where的查询条件字段使用了【主键|索引】,则此命令上行锁。否…

2024,传统鞋服的“高端梦”该醒了

文 | 螳螂观察 作者 | 图霖 “一千块都不要的波司登,宝贝们还不冲吗?” 入夜,一位身着羽绒服的美女主播在灯火通明的直播间正声嘶力竭地反复呐喊。 一群不知是托还是真实消费者的用户在评论区敲出自己的身高体重,想从主播那得…

【计算机组成原理】IEEE 754 标准定义的浮点数表示格式

IEEE 754 IEEE 754是一种由美国电气和电子工程师协会(IEEE)制定的标准,用于定义浮点数的表示和运算。这个标准定义了浮点数的格式、舍入规则、特殊值的处理以及算术操作的执行方式。 IEEE 754浮点数标准主要定义了两种浮点数格式&#xff1…

基于LVGL编写的windows串口工具: LCOM

LCOM: Serial Port Tools based on LVGL (PC Software) 一直以来我都想用LVGL做一个真正意义上的PC软件,来验证或者表达LVGL出色的特性,现在我用LCOM做到了! LCOM 是一个基于LVGL编写的串口工具,界面简洁,功能出色&a…

Javaweb之SpringBootWeb案例查询部门以及前后端联调的详细解析

2.1 查询部门 2.1.1 原型和需求 查询的部门的信息:部门ID、部门名称、修改时间 通过页面原型以及需求描述,我们可以看到,部门查询,是不需要考虑分页操作的。 2.1.2 接口文档 部门列表查询 基本信息 请求路径:/depts …

Github项目推荐-Insomnia

项目地址 GitHub地址:GitHub - Kong/insomnia 官网:The Collaborative API Development Platform - Insomnia 项目简述 想必大家都知道PostMan吧。Insomnia可以说是PostMan的开源平替。页面ui很不错,功能强大,使用也比较方便。…

Matlab 字符识别OCR实验

Matlab 字符识别实验 图像来源于屏幕截图,要求黑底白字。数据来源是任意二进制文件,内容以16进制打印输出,0-9a-f’字符被16个可打印字符替代,这些替代字符经过挑选,使其相对容易被识别。 第一步进行线分割和字符分割…