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

【《高性能 MySQL》笔记】性能优化

学习知识最快最好的方式就是问对问题。

本文将通过“问正确的问题”的方式循序渐进地深入总结性能优化相关知识。


性能优化基础

Q1:什么是“性能”?

响应时间(RT,Response Time),完成某个任务所需要的时间度量。

Q2:什么是“性能优化”?

性能优化为在一定工作负载下尽可能地降低响应时间。注意,当继续提升的成本超过收益的时候,应当停止优化

性能优化的第一原则是“性能即响应时间”,第二原则是“无法测量就无法有效优化”。

Q2.1:“性能”为什么要“优化”?

  • 急需快速上线的(互联网)应用系统,在业务初始阶段实现“功能”为首要目标。业务上线后,终于有时间对之前的“莽撞”上线行为做优化补偿了。
  • 优化的时间成本大于硬件采购成本,老板财大气粗,无脑堆硬件,暂时解决性能问题。
  • 随着业绩发展,需要针对现有软硬件基础设施做优化以满足业务增长。老板没钱了或不想再出钱,想“性能优化”和“采购新硬件”两手抓,优先选择“性能优化”,需要员工测试“性能优化”是否可以满足需求。如不能,再购买新硬件。
  • 硬件扩展达到瓶颈,或运维成本已经过高了,业务也趋于稳定进入瓶颈期,老板要求尽最大可能充分发挥现有系统性能,以提供高质量的服务。
  • 随着业务的发展,业务逻辑、代码、组件、中间件、schema 等不断变化导致很多历史遗留问题,即便最初的设计是良好合理的,到这个阶段系统性能也会出现问题,亟需优化,甚至更新换代。

简言之,不好的系统设计、业务增长是性能需要优化的诱因。当硬件成本大于优化成本时,就需要性能优化了。

Q3:性能优化的目标是什么?

降低响应时间。此外,还可能产生降低 CPU 等资源的利用率、提升吞吐量、提高并发度的副作用。降低了单个请求的响应时间,即增加了单位时间内系统能处理的并发请求数,这很好理解。

Q3.1:什么是吞吐量、吞吐率RT、RPS、QPS、TPS?

吞吐量(Throughput [Capacity])
特定时间间隔内系统处理的数据总量,以比特、字节等为单位。广义上,吞吐量等同于吞吐率,都可以用“ Throughput”表示,除非特定语境下为明确表示才需要严格区分。 有时,人们甚至会使用吞吐量来指代 RPS、QPS、TPS ,但不建议如此, 建议明确地使用这些术语
吞吐率(Throughput [Rate])
单位时间内系统处理数据的速率,即单位时间内的吞吐量。
每秒请求数(RPS)
对于诸如 Web 服务器的应用系统,其每秒可以处理的请求数量。
每秒查询数(QPS)
对于数据库系统来说,其每秒可处理的查询数量。
每秒事务数(TPS)
对于事务型应用系统来说,其每秒可处理的事务数。

Q3.2:QPS 和 RPS 有什么区别?

二者的对象不同,RPS 是针对 Web 服务器等应用系统的指标;QPS 是针对数据库系统的指标。有时,人们也将二者混淆不加以区分,甚至不是对一个数据库系统。

Q3.3:RPS/QPS 和 TPS 有什么区别?

一个事务可能包含不止一个请求/查询,因而 TPS 通常小于 RPS/QPS。当事务仅有一个请求/查询时,二者相等。

Q4:怎么做性能优化?

性能优化需要考虑的首要因素是成本利润率成本利润率 = 利润 / 成本 * 100% 。成本主要包括时间、金钱(人力、物力)两方面成本。我们总是会先权衡目标与成本后,选择最符合当前形势的、最经济的方式(简言之,经济实惠)来进行优化。

Q4.1:为什么要做性能剖析?

性能优化第一步要做的是测量响应时间花在哪里,并且应将大部分(甚至 90%)时间花在这里。完成这一步的主要方法是 性能剖析

性能剖析是对真实工作负载的测试。而我们在此之前往往更想要一个快速的、满足行业标准的测试,以大致了解系统的能力。这就是基准测试


基准测试

Q5:什么是基准测试?

基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。可测量、可重复、可对比是基准测试的三大原则。

基准测试的其他特点包括:

  • 基准测试的一个主要问题在于其不是真实压力的测试;
  • 基准测试要尽量简单直接,结果之间容易相互比较,成本低且易于执行;
  • 基准测试通常要求尽可能快地执行完成,所以经常给系统造成过大的压力。

Q6:怎样做基准测试?

需要使用一些策略来设计和规划基准测试。

1)如何选择基准测试的策略?

基准测试有两种主要策略:

  • 集成式(full-stack),是指对整个系统的集成测试
  • 单组件式(single-component),是指对 MySQL 这样的组件进行单独测试。

在项目初期通常不需要了解整个应用系统的情况,而只需要关注 MySQL 的性能。基于以下情况,可以选择只测试 MySQL :

  • 需要比较不同的 schema 或查询的性能。
  • 针对应用中某个具体问题的测试。
  • 为了避免漫长的基准测试,可以通过一个短期的基准测试,做快速的“周期循环”,来检测出某些调整后的效果。

有了策略后,就应该确定基准测试的目标,一般通过一些可量化的指标来表示。

2)应该测试哪些指标呢?

  • 吞吐量、RPS、QPS、TPS

    它们其实本质上是一类东西,只是针对的测试对象不同。

  • 响应时间或者延迟

    这个指标用于测试任务所需的整体时间。根据具体的应用,测试的时间单位可能是微秒、毫秒、秒或者分钟。根据不同的时间单位可以计算出平均响应时间、最小响应时间、最大响应时间和所占百分比。最大响应时间通常意义不大,因为测试时间越长,最大响应时间也可能越大。而且其结果通常不可重复,每次测试都可能得到不同的最大响应时间。因此,通常可以使用百分比响应时间(percentile response time)来替代最大响应时间。例如,如果95%的响应时间都是5毫秒,则表示任务在 95% 的时间段内都可以在 5 毫秒之内完成。

    使用图表有助于理解测试结果。可以将测试结果绘制成折线图(比如平均值折线或者95%百分比折线)或者散点图,直观地表现数据结果集的分布情况。通过这些图可以发现长时间测试的趋势。

  • 并发性

    Web 服务器的并发性更准确的度量指标,应该是在任意时间有多少同时发生的并发请求。注意不要将创建数据库连接和并发性搞混淆。一个设计良好的应用,同时可以打开成百上千个 MySQL 数据库服务器连接,但可能同时只有少数连接在执行查询。

    并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数或者连接数。当并发性增加时,需要测量吞吐量是否下降,响应时间是否变长,如果是这样,应用可能就无法处理峰值压力。

    并发性的测量完全不同于响应时间和吞吐量。它不像是一个结果,而更像是设置基准测试的一种属性。并发性测试通常不是为了测试应用能达到的并发度,而是为了测试应用在不同并发下的性能。

  • 可扩展性

    在系统的业务压力可能发生变化的情况下,测试可扩展性对于容量规划非常有用。可扩展性是指在对性能的影响在保持可接受范围内的情况下,系统的吞吐量随着资源的增加而变化的能力。理想情况下,吞吐量随资源的增加线性增长。

知道测试哪些指标,就可以指导如何设计和规划基准测试了。

3)如何设计和规划基准测试?

规划基准测试的第一步是提出问题并明确目标。然后决定是采用标准的基准测试,还是设计专用的测试

  • 如果采用标准的基准测试,应该确认选择了合适的测试方案

  • 设计专用的基准测试是很复杂的,往往需要一个迭代的过程。首先需要获得生产数据集的快照,并且该快照很容易还原,以便进行后续的测试

    然后,针对数据运行查询。可以建立一个单元测试集作为初步的测试,并运行多遍。但是这和真实的数据库环境还是有差别的。更好的办法是选择一个有代表性的时间段,比如高峰期的一个小时,或者一整天,记录生产系统上的所有查询如果时间段选得比较小,则可以选择多个时间段。这样有助于覆盖整个系统的活动状态,例如每周报表的查询、或者非峰值时间运行的批处理作业。

因为基准测试很可能是周期性的,所以应该建立将参数和结果文档化的规范。每一轮测试都必须进行详细记录测试数据、系统配置的步骤、如何测量和分析结果,以及预热的方案等。

4)基准测试应该运行多长时间?

应该在系统处于稳定状态时运行足够长的时间基准测试。如果无法确定测试需要运行多长时间,可以让测试一直运行,持续观察直到确认系统已经稳定。等待系统看起来稳定的时间至少等于系统预热的时间。监控系统的一些性能指标并绘制图形,可以迅速找到系统的稳定状态。

5)需要获取哪些系统性能和状态?

在执行基准测试时,需要尽可能多地收集被测试系统的信息。最好为基准测试建立一个目录,并且每执行一轮测试都创建单独的子目录,将测试结果、配置文件、测试指标、脚本和其他相关说明都保存在其中。即使有些结果不是目前需要的,也应该先保存下来。多余一些数据总比缺乏重要的数据要好,而且多余的数据以后也许会用得着。需要记录的数据包括系统状态和性能指标,诸如 CPU 使用率、磁盘 I/O、网络流量统计、SHOW GLOBAL STATUS计数器等

6)如何选择基准测试工具?

集成式测试工具
  • ab

    ab 是一个 Apache HTTP 服务器基准测试工具。它可以测试 HTTP 服务器每秒最多可以处理多少请求

  • http_load

    这个工具概念上和 ab 类似,也被设计为对 Web 服务器进行测试,但比 ab 要更加灵活。

  • JMeter

    JMeter 是一个Java 应用程序,可以加载其他应用并测试其性能。它虽然是设计用来测试Web应用的,但也可以用于测试其他诸如 FTP 服务器,或者通过 JDBC 进行数据库查询测试。

单组件式测试工具
  • sysbench (推荐)

    sysbench(https://launchpad.net/sysbench)是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件 I/O、操作系统调度器、内存分配和传输速度、POSIX 线程,以及数据库服务器等。sysbench 支持 Lua 脚本语言(http://www.lua.org),Lua 对于各种测试场景的设置可以非常灵活。sysbench 是我们非常喜欢的一种全能测试工具,支持 MySQL 、操作系统和硬件的硬件测试。

    更多 2.5.3 sysbench 。后续会整理一篇使用 sysbench 对 MySQL 做基准测试的文章。

  • MySQL Benchmark Suite(sql-bench)

    在 MySQL 的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。

  • Benchmark SQL (笔者加)

  • Super Smack

  • Database Test Suite

  • Percona’s TPCC-MySQL Tool

7)如何获得准确的测试结果?

  1. 获得准确测试结果的最好办法,是回答一些关于基准测试的基本问题:是否选择了正确的基准测试?是否为问题收集了相关的数据?是否采用了错误的测试标准?
  2. 确认测试结果是否可重复。每次重新测试之前要确保系统的状态、工作集是一致的。
  3. 确保基准测试运行过程中所需要的资源是专用于测试的。
  4. 每次测试中,修改的参数应该尽量少。变量控制的理想情况为一个变量。一般情况下,都是通过迭代逐步地修改基准测试的参数,而不是每次运行时都做大量的修改。。举个例子,如果要通过调整参数来创造一个特定行为,可以通过使用分治法(divide-and-conquer,每次运行时将参数对分减半)来找到正确的值。
  5. 很多基准测试都是用来做预测系统迁移后的性能的,比如从 Oracle 迁移到 MySQL 。这种测试通常比较麻烦,通常需要重新设计 MySQL 的 schema 和查询。
  6. 如果测试中出现异常结果,不要轻易当作坏数据点而丢弃。应该认真研究并找到产生这种结果的原因。

此外,基于 MySQL 的默认配置的测试没有什么意义,因为默认配置是基于消耗很少内存的极小应用的。有时候可以看到一些 MySQL 和其他商业数据库产品的对比测试,结果很让人尴尬,可能就是 MySQL 采用了默认配置的缘故。让人无语的是,这样明显有误的测试结果还容易变成头条新闻。同样,与其他“友商”跨越多年的测试结果比较,也挺让人无语的,其优异的测试结果主要归功于硬件的迭代。

8)运行基准测试并分析结果

通常来说,自动化基准测试、分析结果是个好主意。这样做可以获得更精确的测试结果。因为自动化的过程可以防止测试人员偶尔遗漏某些步骤,或者误操作。另外也有助于归档整个测试过程。

自动化的方式有很多,可以是一个 Makefile 文件或者一组脚本。脚本语言可以根据需要选择:shell、PHP、Perl 等都可以。要尽可能地使所有测试过程都自动化,包括装载数据、系统预热、执行测试、记录结果等。设计自动化基准测试脚本的输出作为 gnuplot 或者 R 等绘图工具的数据来源。

基准测试通常需要运行多次。具体需要运行多少次要看对结果的记分方式,以及测试的重要程度。

获得测试结果后,通常需要写一些脚本来分析数据,这不仅能减轻分析的工作量,而且和自动化基准测试一样可以重复运行,并易于文档化。推荐使用绘图工具将测试结果图形化,使分析结果更加直观、方便。 最简单有效的图形,就是将性能指标按照时间顺序绘制。


性能剖析

对系统做完有一些标准规范支撑的基准测试后,系统稳定运行一段时间后,就需要对做性能剖析了。

Q7:什么是性能剖析?

性能剖析是测量和分析时间花费在哪里的主要方法。

性能剖析一般分为两步:

  • 测量任务所花费的时间;
  • 然后按任务的重要程度(从高到低)对结果进行统计和排序。

完成一项任务所需要的时间可以分成两部分:

  • 执行时间
  • 等待时间。

如果要优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务、降低子任务的执行频率或执行时间。而优化任务的等待时间则相对要复杂一些,因为等待有可能是由其他系统间接影响导致,任务之间也可能由于争用磁盘或者 CPU 资源而相互影响。根据时间花在执行还是等待上的不同,诊断也需要不同的工具和技术。性能剖析是确认哪些子任务需要优化的技术。

根据任务时间类型将性能剖析分为两类:基于执行时间的分析和基于等待的分析。如果可以确定时间大部分花在执行还是等待上,另一部分时间的影响相对很小,则应集中精力优先处理重要的部分,对不重要的部分的优化可以推迟甚至不做。

性能剖析报告(profile report) 会列出所有任务列表,每行记录一个任务,包括任务名、任务的执行时间、任务的消耗时间、任务的平均执行时间,以及该任务执行时间占全部时间的百分比,按任务的消耗时间进行降序排序。

在性能剖析报告中显示的某些“执行时间”实际上是在等待。例如,报告中显示某些 SELECT 查询花费了大量时间,深入分析则可能发现时间都花在了等待 I/O 完成上。

对系统剖析前,需要确保系统是可测量的。这需要系统提供一些计数器来形成测量点。如果系统内部无法做到可测量化,则可从外部测量系统。如果测量失败,可以根据对系统的了解做出一些靠谱的猜测。但,无论是外部测量还是猜测,数据都不是百分百准确的,这是系统不透明所带来的风险。

性能剖析报告缺失的信息

  • 值得优化的查询首先,一些只占总响应时间比重很小的查询是不值得优化的。根据阿姆达尔定律(Amadahl’s Law),对一个占总响应时间不超过 5% 的查询进行优化,无论如何努力,收益也不会超过 5% 。其次,如果优化的成本大于收益,就应当停止优化
  • 异常情况。某些任务即使没有出现在性能剖析输出的前面也需要优化。例如,某些任务执行频率很低,但每次执行都很慢,严重影响用户体验。
  • “丢失的时间”。一款好的性能剖析工具会显示可能存在的“丢失的时间”。“丢失的时间”指的是任务的总时间和实际测量到的时间的差值。例如,如果处理器的 CPU 时间是 10 秒,而剖析到的任务总时间是 9.7 秒,那么就有 300 毫秒的丢失时间。这可能是有些任务没有测量到,也可能是由于测量的误差和精度问题的缘故。
  • 被掩藏的细节。性能剖析无法显示所有响应时间的分布。平均值无法表达全部情况。例如,测量医院所有病人的平均体温没有任何价值。应追加更多响应时间的信息,比如直方图、百分比、标准差、方差、偏差指数等。

推荐使用 pt-query-digest ,它在剖析的结果里包含了很多这类细节信息,并输出在剖析报告中。

Q8:如何进行性能剖析?

对整个应用系统进行性能剖析时建议采自顶向下地进行,这样可以追踪自用户发起到服务器响应的整个流程。

Q8.1:如何对应用程序进行性能剖析?

相关文章:

【《高性能 MySQL》笔记】性能优化

学习知识最快最好的方式就是问对问题。 本文将通过“问正确的问题”的方式循序渐进地深入总结性能优化相关知识。 性能优化基础 Q1:什么是“性能”? 即响应时间(RT,Response Time),完成某个任务所需要的时间度量。 Q2:什么是“性能优化”? 性能优化为在一定工作负…...

Spring AOP底层原理

目录 代理模式 静态代理 动态代理 1. JDK动态代理 创建⼀个代理对象并使用 2. CGLIB动态代理 SpringAOP底层原理面试 代理模式 Spring AOP是基于动态代理模式来实现的 代理模式:静态代理模式动态代理模式 代理模式, 也叫委托模式。 定义:为其…...

proteus8.9 示波器放大

proteus8.9 示波器放大** 1. 打开放大:Windows徽标键 加号 2. 取消放大:Windows徽标键 ESC...

代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集

动态规划:01背包理论基础 文章讲解:代码随想录(programmercarl.com) 视频讲解:带你学透0-1背包问题!_哔哩哔哩_bilibili 动态规划:01背包理论基础(滚动数组) 文章讲解:代码随想录(…...

1908_Arm Cortex-M3的实现

1908_Arm Cortex-M3的实现 全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com) 这是第一次看一份这样的手册,之前的MCU编程基本上就是专注于软件接口方面。而OS等方面的一些功能基本上都是用了现成的解决方案,因此也就没有过多的关注…...

编程笔记 html5cssjs 005 小学数学四则运算练习

编程笔记 html5&css&js 005 小学数学四则运算练习 一、代码二、解释 这段代码定义了一个页面&#xff0c;用于小学数学四则运算的练习。这可能有点难&#xff0c;实际如果需要可以通过更改代码来达到要求。 一、代码 <!DOCTYPE html> <html lang"zh&quo…...

【大厂AI课学习笔记NO.71】AI算力芯片GPU/TPU等

AI算力芯片的发展历程 人工智能&#xff08;AI&#xff09;算力芯片的发展历程紧密地跟随着AI技术的发展脚步。从早期的基于传统中央处理器&#xff08;CPU&#xff09;的计算&#xff0c;到图形处理器&#xff08;GPU&#xff09;的广泛应用&#xff0c;再到专门为AI设计的处…...

浅谈Redis和分布式系统

浅谈Redis Redis用于存储数据&#xff0c;且在内存当中进行存储。 但是在日常编写代码中&#xff0c;定义一个变量也就属于在内存当中存储一个数据。 Redis主要会在分布式系统当中发挥重要作用&#xff0c;如果只是单机程序&#xff0c;直接通过变量存储数据的方式会比使用Re…...

微信小程序onLoad加载定义好的函数

这里小程序开发中容易犯的错误-1 给客户做一个程序。需要在页面加载的时候在onLoad(options){}中加载定义好的函数&#xff0c;代码如下 onLoad(options) {get_week_()},运行时老报错 后来修改为正确的代码 onLoad(options) {this.get_week_()//必须加this},再尝试运行&#x…...

C++进阶:详细讲解继承

现在也是结束了初阶部分的内容&#xff0c;今天开始就进入进阶部分了。一刻也没有为初阶的结束而哀悼&#xff0c;立刻赶来“战场”的是进阶部分里的继承 文章目录 1.继承的概念和定义1.1继承的概念1.2继承的定义1.2.1继承的格式1.2.2再讲访问限定符(详讲protected)1.2.3**继承…...

第十一篇 - 应用于市场营销视频场景中的人工智能和机器学习技术 – Video --- 我为什么要翻译介绍美国人工智能科技巨头IAB公司(1)

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先后为700多家媒体…...

基于决策树实现葡萄酒分类

基于决策树实现葡萄酒分类 将葡萄酒数据集拆分成训练集和测试集&#xff0c;搭建tree_1和tree_2两个决策树模型&#xff0c;tree_1使用信息增益作为特征选择指标&#xff0c;B树使用基尼指数作为特征选择指标&#xff0c;各自对训练集进行训练&#xff0c;然后分别对训练集和测…...

上位机图像处理和嵌入式模块部署(qmacvisual三个特色)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 了解了qmacvisual的配置之后&#xff0c;正常来说&#xff0c;我们需要了解下不同插件的功能是什么。不过我们不用着急&#xff0c;可以继续学习下…...

电脑解锁后黑屏有鼠标--亲测!!不需要重装系统!!

问题&#xff1a;上周电脑黑屏&#xff0c;只有鼠标&#xff0c;鼠标还不能右键&#xff01;&#xff01; 中招&#xff1a;win10系统最新版火绒安全 &#xff0c;那你有概率获得开机黑屏套餐一份。 原因是&#xff1a;火绒把我们的explorer删除了导致黑屏&#xff0c;这个文…...

Spring 事务的种类 ? 传播机制 ?

在Spring框架中&#xff0c;事务管理可以分为编程式事务和声明式事务两种主要形式。每种形式都有其特点和使用场景。以下是这两种形式的具体介绍&#xff1a; 编程式事务 编程式事务是通过编写代码来实现事务管理的。在Spring中&#xff0c;编程式事务管理通常通过Transactio…...

深入了解 Java 方法和参数的使用方法

Java 方法 简介 方法是一块仅在调用时运行的代码。您可以将数据&#xff08;称为参数&#xff09;传递到方法中。方法用于执行特定的操作&#xff0c;它们也被称为函数。 使用方法的原因 重用代码&#xff1a;定义一次代码&#xff0c;多次使用。提高代码的结构化和可读性。…...

自动驾驶技术解析与关键步骤

目录 前言1 自动驾驶主要技术流程1.1 车辆周围环境感知1.2 车辆和行人检测分析1.3 运动轨迹规划 2 关键技术概述2.1 车辆探测与图片输入2.2 行人检测2.3 运动规划2.4 电子地图2.5 轨迹预测2.6 交通灯分析2.7 故障检测 结语 前言 自动驾驶汽车作为未来交通领域的重要发展方向&a…...

[Electron]中IPC进程间通信

Electron中IPC 进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。在 Electron 中&#xff0c;进程使用 ipcMain 和 ipcRenderer 模块&#xff0c;通过开发人员定义的“通道”传递消息来进行通信。 本文介绍以下几个方面&#xff1a; 1-渲染进程到…...

数学建模-动态规划(美赛运用)

动态规划模型的要素是对问题解决的抽象&#xff0c;其可分为&#xff1a; 阶段。指对问题进行解决的自然划分。例如&#xff1a;在最短线路问题中&#xff0c;每进行走一步的决策就是一个阶段。 状态。指一个阶段开始时的自然状况。例如&#xff1a;在最短线路问题中&#xff…...

bat文件给多个Android设备安装apk

本文是安装一个apk 1、确保以下3个文件在同一个目录下 1>要安装的apk&#xff0c;这里是mmb.apk 2>设备名单&#xff0c;保存在.txt文件中&#xff0c;一行一个设备名&#xff0c;设备名通过adb devices获取&#xff0c;截图中是两个设备 txt文件中的样式 3>要运行…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...