大数据面试题之Presto[Trino](6)

如何诊断Presto查询慢的问题?

诊断Presto查询慢的问题通常需要一个系统化的方法,结合监控、日志分析、查询优化策略和系统配置调整等多个方面。以下是一些具体的步骤和建议:
1、查看Presto Dashboard:
登录Presto的Web UI(Dashboard),查看查询的执行详情。注意观察查询的执行时间、CPU时间、调度时间、内存使用、输入行数等指标,这些能提供慢查询的初步线索。
2、审查查询计划:
使用EXPLAIN命令分析查询计划,了解Presto是如何规划查询的执行步骤。检查是否有全表扫描、大量数据移动或不合理的JOIN操作,这些都是可能导致查询慢的原因。
3、识别资源瓶颈:
检查CPU、内存、I/O是否成为瓶颈。Presto的性能受制于最稀缺的资源。例如,高的CPU时间可能意味着计算密集型操作,而高的I/O等待时间可能是因为数据读取速度慢。
4、分区与索引:
确认查询涉及的表是否适当分区。全表扫描是查询慢的常见原因,尤其是对于未分区的大表。考虑按时间或常用过滤字段进行分区。
尽管Presto没有传统意义上的索引,但可以利用数据的物理布局(如Hive表的分区)来加速查询。
5、优化查询语句:
避免在关联条件中使用多个LIKE操作,考虑使用正则表达式regexp_like以提高效率。
减少查询中不必要的字段选择,减少数据传输量。
利用WITH子句创建临时结果集(缓存表),避免在复杂查询中重复计算。
6、缓存策略:
考虑使用如Alluxio等缓存层,减少从远程存储(如HDFS、S3)读取数据的时间。
7、系统和JVM调优:
根据Presto的错误日志和性能日志,查找是否有JVM相关的问题,如垃圾回收、内存泄漏等。
调整Presto配置参数,如内存分配、并发度设置、查询队列配置等,以适应工作负载。
8、数据源和元数据:
检查与外部数据源(如Hive Metastore)的交互,确保元数据访问高效无误。
9、监控与日志:
定期审查Presto的日志文件,寻找慢查询的模式或异常信息。
使用外部监控工具跟踪集群资源使用情况,以便及时发现和解决问题。

Presto查询失败时如何进行错误排查? 

当Presto查询失败时,可以按照以下步骤进行错误排查:
1、查看错误信息:
首先,仔细阅读查询失败时返回的错误信息。Presto通常会提供详细的错误描述,包括错误代码、错误类型和可能的原因,这是定位问题的第一步。
2、使用EXPLAIN分析:
运行EXPLAIN <your-query>,获取查询的执行计划。这有助于理解Presto如何计划执行查询,可能揭示出查询设计中的问题,比如不恰当的JOIN顺序或数据分布不均导致的数据倾斜。
3、查询Presto日志:
检查Presto的协调器和工作节点的日志文件。这些日志通常包含了查询执行过程中的详细信息,包括错误堆栈跟踪,这对于诊断问题至关重要。
4、检查数据源状态:
如果Presto查询的是外部数据源(如Hive、HDFS、Kafka等),需要检查这些数据源的健康状况和配置。比如,确保Hive元数据正确无误,HDFS路径存在且可访问,Kafka主题可读等。
5、资源监控:
观察集群资源使用情况,包括CPU、内存和I/O。资源不足或分配不当可能导致查询失败。Presto的Web UI提供了资源使用的实时视图,可以辅助判断。
6、网络问题排查:
确保Presto集群内部以及与数据源之间的网络连接正常,没有防火墙或网络策略阻止必要的通信。
7、版本兼容性:
确认Presto的版本与数据源和其他组件(如Hive、Hadoop)的版本兼容。不兼容可能导致查询解析或执行错误。
8、配置检查:
重新审视Presto的配置文件,确保所有配置项正确无误,特别是那些与查询执行、资源管理相关的设置。
9、社区与文档:
查阅Presto的官方文档和社区论坛,如Stack Overflow、Presto Users邮件列表等,看是否有其他人遇到过类似问题及其解决方案。
10、尝试简化查询:
尝试将复杂的查询分解成更简单的部分,逐一排查,确定问题具体出在哪里。

通过上述步骤,通常可以定位并解决大多数Presto查询失败的问题。如果问题依然无法解决,考虑寻求专业的技术支持或在Presto社区寻求帮助。

描述如何使用Presto的日志来诊断问题。 

使用Presto的日志来诊断问题是一个系统化的过程,涉及到对不同类型的日志文件进行细致的分析。Presto的日志主要分为两类:协调器日志(Coordinator logs)和工作节点日志(Worker logs)。以下是使用Presto日志进行问题诊断的步骤:
1. 确定日志位置
首先,你需要知道Presto的日志文件存放的位置。默认情况下,这些日志通常位于Presto安装目录的logs文件夹下,具体路径可能因部署方式(如Docker、独立安装)而异。
2. 分析协调器日志
查询失败信息:协调器日志中通常会记录查询请求的接收、规划和分发过程,以及查询失败的具体原因。关注错误码、错误消息和堆栈跟踪,这些信息是问题诊断的关键。
资源分配:检查是否有资源分配失败的记录,这可能是由于资源不足或配置不当造成的。
查询计划:协调器日志也可能包含查询计划的概要信息,帮助理解查询执行的逻辑。
3. 分析工作节点日志
执行细节:工作节点日志记录了查询在各个工作节点上的执行细节,包括数据读写、处理阶段的进度、任何执行期间的错误等。
性能指标:关注内存使用、CPU负载、磁盘I/O等性能指标,这些可以帮助识别资源瓶颈。
异常信息:查找异常堆栈跟踪,它们提供了关于执行过程中发生错误的详细上下文。
4. 使用日志级别
调整日志级别:如果默认的日志信息不足以诊断问题,可以通过修改Presto配置文件(如config.properties)来增加日志的详细程度,如设置query.log-level=DEBUG以获得更详细的查询执行日志。
5. 日志分析工具
使用工具辅助:可以使用日志分析工具(如Logstash、ELK Stack、Grafana+Loki)来集中收集、分析和可视化Presto日志,这些工具能更高效地帮助你筛选和理解日志信息。
6. 关联查询ID
查询ID追踪:每个Presto查询都有一个唯一的查询ID,通过这个ID可以在协调器和工作节点日志中追踪查询的完整生命周期,便于跨日志关联分析问题。
7. 模式识别与趋势分析
识别模式:分析一段时间内的日志,识别错误或性能下降的模式,这有助于发现周期性问题或系统瓶颈。
性能趋势:持续监控日志,比较不同时间段的性能数据,评估优化措施的效果。

如何处理Presto中的OOM(内存溢出)问题?

处理Presto中的OOM(内存溢出)问题通常需要综合考虑查询优化、资源配置和系统调优等多方面因素。以下是一些具体的策略:
1. 优化查询

  • 减少数据扫描量:尽量减少查询中涉及的数据量,比如通过更精确的WHERE子句过滤掉不需要的数据行。
  • 避免大表JOIN:大表间的JOIN操作容易消耗大量内存,考虑使用分桶表(bucketed tables)和合适的JOIN键进行优化。
  • 限制结果集大小:使用LIMIT子句限制返回的结果数量,尤其是在测试或调试查询时。
  • 合理使用GROUP BY和ORDER BY:这两个操作都可能消耗大量内存,特别是当处理大量数据或结果集时。考虑是否可以减少分组或排序的范围。

2. 资源与配置调整
调整内存分配:

  • 查询内存限制:在config.properties中,调整query.max-memory-per-node和query.max-memory参数,限制单个查询或整个集群的最大内存使用量。
  • 并发度管理:通过query.queue-config-file配置文件调整队列设置,合理控制并发查询的数量,避免内存争抢。
  • JVM内存设置:针对协调器和工作节点调整JVM堆内存大小,如-Xms和-Xmx参数,确保与Presto配置相匹配。

动态资源管理(DRM):如果使用了如YARN或Kubernetes作为资源管理器,确保Presto配置与DRM设置相协调,合理分配容器资源。
3. 数据布局与索引
数据分区:合理分区可以减少查询时需要处理的数据量,尤其是对大型表采用时间序列或范围分区。
考虑使用索引:虽然Presto本身不支持索引,但底层数据存储(如Hive表)可以利用索引来加速特定查询。
4. 监控与日志分析
持续监控:使用Presto的Web UI监控内存使用情况,及时发现内存使用异常的查询。
日志分析:深入分析日志文件,找出导致内存溢出的具体查询或操作,并针对性地优化。
5. 测试与验证
使用EXPLAIN ANALYZE:分析查询的资源使用情况,特别是内存使用,以识别潜在的内存消耗点。
压力测试:对调整后的配置进行压力测试,模拟高负载情况下的表现,确保调整有效且稳定。
6. 升级与补丁
保持更新:定期检查Presto的更新,新版本可能包含内存管理方面的优化和修复。

Presto查询超时应该如何处理?

处理Presto查询超时的问题,可以采取以下几个策略:
1、调整查询超时设置:
在Presto的配置文件(通常是config.properties)中,可以调整与超时相关的参数。两个关键参数是:
query.max-execution-time:设置查询的最大执行时间,默认值可能是1小时。根据需求可以适当延长这个时间限制。
query.timeout:此参数定义了客户端等待查询响应的超时时间,如果客户端没有在指定时间内收到任何响应,会抛出超时异常。调整这个值可以给复杂查询更多完成时间。
2、优化查询性能:
优化查询语句,避免全表扫描,使用索引或分区减少数据扫描量。
减少查询中返回的列数和行数,特别是在测试或调试时。
分析查询计划(使用EXPLAIN),识别并优化慢速操作,比如重写JOIN语句或使用更高效的聚合函数。
3、资源调整:
增加集群资源,包括内存和CPU,确保Presto有足够的资源来处理查询。
调整工作节点的内存分配,如query.max-memory-per-node和总的查询内存限制query.max-memory,以适应查询的需求。
管理查询并发度,避免过多查询同时执行导致资源竞争。
4、使用查询队列管理:
利用查询队列配置(query.queue-config-file),为不同类型或优先级的查询分配不同的资源和超时设置。
5、监控与日志分析:
使用Presto的Web UI监控查询执行情况,包括资源使用情况,及时发现资源瓶颈。
分析Presto的错误日志和查询日志,寻找导致超时的具体原因,比如特定查询或数据分布问题。
6、测试与验证:
在非生产环境下测试复杂的查询,确保它们在调整后能够成功执行,不会导致生产环境中出现服务中断。
7、升级Presto版本:
检查是否有已知的bug或性能问题在当前使用的Presto版本中,考虑升级到最新版本以获取潜在的性能改进和修复。

Presto支持哪些安全特性?

Presto作为一个分布式SQL查询引擎,支持多种安全特性以保障数据的安全性和访问控制。以下是一些Presto支持的主要安全特性:
1、身份验证(Authentication):
Presto支持多种身份验证机制,允许用户在连接到Presto之前验证其身份。常见的身份验证方法包括Kerberos、LDAP、JWT(JSON Web Tokens)以及基于密码的简单身份验证。
2、授权(Authorization):
提供了灵活的访问控制机制,允许管理员定义细粒度的权限策略。Presto使用基于角色的访问控制(RBAC)模型,通过Catalog、Schema、Table等层次进行权限分配,可以控制用户或角色对数据的查询、插入、删除等操作权限。
3、连接器安全:
Presto的安全特性也扩展到了数据源连接器层面。例如,Hive连接器可以利用Hive Metastore的权限模型来实施访问控制,确保查询只能访问用户被授权的数据。
4、加密通信:
支持SSL/TLS加密,确保数据在传输过程中的安全性,包括客户端与协调器、协调器与工作节点之间的通信。
5、多租户隔离:
支持多租户模式,通过查询队列和资源组来隔离不同用户或应用程序的查询,防止资源争抢和保证服务质量。
6、审计日志:
记录用户查询行为和系统事件,便于事后审查和合规性检查。审计日志可以包括查询文本、用户信息、执行时间、结果状态等信息。
7、数据屏蔽和行级安全:
虽然Presto本身可能不直接提供数据屏蔽或行级安全功能,但可以通过与外部系统集成(如使用特定的数据源连接器或前处理数据)来实现敏感数据的保护。
8、安全配置管理:
通过配置文件(如config.properties)和系统目录的权限管理,可以实现对Presto配置的安全管理,确保只有授权用户可以修改配置。

如何在Presto中实现数据访问控制?

在Presto中实现数据访问控制主要依赖于其内置的授权(Authorization)机制和外部系统集成。以下是实现数据访问控制的一些关键步骤和概念:
1、角色与权限分配:
使用基于角色的访问控制(RBAC)模型。首先,定义不同的角色(Role),每个角色关联一系列权限,比如可以读取特定表、执行某些操作等。然后,将这些角色分配给用户或组。
2、Catalog、Schema、Table权限:
Presto允许对Catalog、Schema(数据库)、Table级别设置权限,包括SELECT、INSERT、DELETE、ALTER等操作权限。这使得管理员可以非常细粒度地控制用户对数据的访问。
3、使用Access Control插件:
Presto通过可插拔的Access Control插件来实现权限控制。默认情况下,Presto使用file-based-access-control插件,它允许通过配置文件定义权限。对于更复杂的需求,可以使用其他插件,如ldap-group-provider和file-based-group-provider,这些插件可以与LDAP集成,实现基于组的权限管理。
4、配置Access Control:
在Presto的配置文件中(如catalog.properties或全局的config.properties),配置相应的Access Control规则。例如,指定哪些用户或角色可以访问特定的Catalog或Schema,以及他们拥有哪些权限。
5、动态行级过滤(如果适用):
虽然Presto本身不直接支持动态行级安全,但可以通过编写自定义UDF(用户定义函数)或在数据加载时预处理数据来实现。此外,也可以结合外部系统(如Apache Ranger或自定义中间件)来实现行级过滤。
6、审计日志:
开启并监控审计日志,这可以帮助追踪用户活动,确保权限策略得到有效执行,并满足合规要求。
7、安全策略维护:
定期审查和更新权限设置,确保它们与组织的安全策略和业务需求保持一致。

Presto是否支持加密连接? 

Presto支持加密连接以保障数据传输的安全性。具体来说,Presto支持使用SSL/TLS协议来加密客户端与Presto协调器(coordinator)以及协调器与工作节点(worker nodes)之间的通信。这有助于保护数据在传输过程中的隐私和完整性,防止数据被截取或篡改。
为了启用SSL/TLS加密,你需要在Presto的配置文件中进行相应的设置,通常涉及以下几个方面:

  1. 配置SSL证书:需要为Presto的协调器配置SSL证书,这包括服务器证书和对应的私钥,有时还包括信任的CA证书链。
  2. 修改配置文件:在Presto的配置文件(如config.properties)中,需要设置SSL相关的参数,例如启用SSL连接、指定证书和私钥的路径等。
  3. 客户端配置:客户端也需要配置为使用SSL连接,这可能涉及在客户端连接字符串中指定SSL选项,或在客户端库中设置相应的SSL参数。
  4. 测试加密连接:配置完成后,应通过测试来验证加密连接是否配置成功,确保客户端可以顺利通过SSL/TLS连接到Presto服务器。

综上所述,Presto确实支持加密连接,并且提供了必要的配置选项来实现安全的数据传输。

解释Presto中的权限模型。 

Presto的权限模型是基于角色的访问控制(Role-Based Access Control, RBAC)模型,它允许系统管理员通过角色来管理和分配权限,从而控制用户对数据和操作的访问。以下是Presto权限模型的核心组成部分:
1、角色(Roles):
角色是一组权限的集合。系统管理员可以创建不同的角色,每个角色代表了一组预定义的权限,如允许读取特定Catalog、Schema或Table,或者执行特定的操作(如SELECT、INSERT、DELETE)。
2、权限(Privileges):
权限是授予用户或角色执行特定操作的权利。在Presto中,权限通常与数据对象相关联,如Catalog、Schema(数据库)、Table或Column,以及操作类型(如SELECT、INSERT等)。
3、权限层次结构:
权限在Presto中遵循一定的层次结构。权限可以被授予整个Catalog,然后细化到Schema,再到Table,甚至是列级别。例如,一个用户可能有权限读取整个Catalog中的所有表,但对特定Table的写权限可能被限制。
4、用户与角色的映射:
用户被分配到一个或多个角色,用户继承了所分配角色的所有权限。通过这种方式,管理员可以轻松地通过更改角色的权限来批量调整用户的访问权限,而不是逐个用户调整。
5、动态权限检查:
在查询执行前后,Presto会对用户试图访问的数据对象和执行的操作进行权限检查。如果用户没有足够的权限,查询将被拒绝执行。
6、访问控制插件:
Presto支持可插拔的访问控制插件,允许系统使用不同的策略来实现权限管理。默认情况下,Presto使用基于文件的访问控制插件(file-based-access-control),但也可以配置更复杂的插件,如与外部身份认证系统(如LDAP)集成的插件。
7、审计与日志:
Presto还提供审计功能,记录用户访问和操作的详细日志,这对于监控和审计权限使用情况至关重要。

如何保护Presto集群不受未授权访问? 

保护Presto集群不受未授权访问需要实施一系列安全措施,以确保数据的保密性、完整性和可用性。以下是一些关键的安全实践:
1、身份验证(Authentication):
实施强身份验证机制,如使用Kerberos、LDAP、JWT或密码认证,确保只有经过验证的用户才能访问集群。
2、授权(Authorization):
利用Presto的基于角色的访问控制(RBAC)模型,精细控制用户和角色对数据的访问权限,确保用户仅能访问其被授权的资源。
3、网络隔离与防火墙规则:
配置网络防火墙,只允许来自可信来源的流量访问Presto的协调器和工作节点,确保服务接口不暴露给公网。
4、SSL/TLS 加密:
启用SSL/TLS加密来保护数据在传输过程中的安全,包括客户端与服务器之间的通信,以及集群内部通信。
5、最小权限原则:
应用最小权限原则,确保每个用户或服务账户仅拥有完成其任务所需的最小权限集。
6、定期安全审计与日志监控:
定期审查访问日志和审计日志,监控异常访问模式,及时发现潜在的安全威胁。
7、保持系统更新:
定期更新Presto及其依赖组件,包括操作系统、JVM和其他软件,以修复已知的安全漏洞。
8、访问控制插件:
使用安全插件来增强访问控制,比如与企业身份管理系统集成,实现更高级别的权限管理和审计。
9、网络分段与VPC:
在云环境中,使用虚拟私有云(VPC)和子网划分来隔离Presto集群与其他服务,减少攻击面。
10、安全配置管理:
维护严格的配置管理,确保所有集群配置遵循最佳安全实践,避免因配置错误导致的安全漏洞。
11、敏感数据保护:
对存储在Presto中的敏感数据实施额外的保护措施,如数据加密、访问控制和数据脱敏。

Presto如何支持跨数据源查询? 

Presto支持跨数据源查询,能够透明地将多个不同类型的数据库或数据存储系统中的数据整合起来进行分析,无需先将数据移动到同一位置。以下是Presto支持跨数据源查询的关键机制和特点:
1、连接器(Connectors):
Presto通过高度可扩展的连接器架构来支持跨数据源查询。每个数据源(如Hive、MySQL、Cassandra、Amazon S3等)都有其专用的连接器,这些连接器负责与数据源通信、解析元数据和执行查询。
2、联邦查询(Federated Query):
Presto的查询引擎设计支持联邦查询,允许用户在一个查询中同时访问和操作来自不同数据源的数据。这意味着可以在单个SQL语句中JOIN来自Hadoop HDFS、MySQL数据库、Cassandra集群等不同源的数据。
3、分布式执行:
在处理跨数据源查询时,Presto的分布式架构能够智能地将查询任务分解,协调器(Coordinator)负责生成执行计划,并将任务分发到各个工作节点(Worker)上执行。即使数据分布在不同源,Presto也能高效地并行处理。
4、动态数据源发现:
Presto能够在查询执行时动态发现数据源,这意味着可以即时访问新添加的数据源而无需重启服务。
5、统一的SQL接口:
不论数据存储在哪里,Presto都提供了一个统一的SQL接口来查询数据。用户不需要了解底层数据源的具体细节,只需使用标准SQL语法就能实现跨数据源的查询和分析。
6、权限与安全:
在进行跨数据源查询时,Presto的权限模型确保用户只能访问其被授权的数据源和数据,实现了跨源查询的安全性。
例如,你可以编写如下SQL查询来跨数据源联合数据:

SELECT * FROM mysql.mydatabase.mytable AS mysql_table
JOIN hive.myhive.db.mytable AS hive_table
ON mysql_table.id = hive_table.external_id;

在这个查询中,数据从MySQL数据库和Hive数据仓库中被透明地联合起来,用户仿佛在操作单一的数据源。

引用:通义千问

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础: 二. Linux的目录和文件

文章目录 二. Linux的目录和文件1.1 目录概要1.2 目录详细说明 二. Linux的目录和文件 1.1 目录概要 command&#xff1a;ls / Linux的文件系统像一棵树一样&#xff0c;树干是根目录&#xff08;/&#xff09;&#xff0c;树枝是子目录&#xff0c;树叶是文件&#xff1b; …

QML:Settings介绍

用途 提供持久的独立于平台的应用程序设置。 用户通常希望应用程序在会话中记住其设置&#xff08;窗口大小、位置、选项等&#xff09;。Settings能够以最小的工作量保存和恢复此类应用程序设置。 通过在Settings元素中声明属性来指定各个设置值。仅支持由QSettings识别的值…

2024 JuniorCryptCTF reppc 部分wp

Random cipher 文本编辑器打开附件 比较简单。脚本 Mutated Caesar 文本编辑器打开附件 比较简单。脚本 Pizza 附件拖入dnSpy 比较简单。脚本 l33t Leet&#xff0c;又称黑客语&#xff0c;是指一种发源于欧美地区的BBS、线上游戏和黑客社群所使用的文字书写方式&#xff0c;通…

Polkadot(DOT)即将爆雷?治理无能还歧视亚洲!资金将在两年内耗尽!是下一个FTX吗?

近期&#xff0c;关于Polkadot(DOT)生态圈的一系列负面消息引发了业界和投资者的广泛关注。从高昂的营销开支、缺乏实际业务亮点&#xff0c;再到治理问题和种族歧视指控&#xff0c;Polkadot似乎正面临着严峻的危机。业内人士警告&#xff0c;Polkadot的财政状况堪忧&#xff…

【C语言】qsort()函数详解:能给万物排序的神奇函数

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C语言 ⚙️操作环境:Visual Studio 2022 目录 一.qsort()函数的基本信息及功能 二.常见的排序算法及冒泡排序 三.逐一解读qsort()函数的参数及其原理 1.void* base 2.size_t num 3.size_t size 4.int (*compar)(c…

机器学习Day12:特征选择与稀疏学习

1.子集搜索与评价 相关特征&#xff1a;对当前学习任务有用的特征 无关特征&#xff1a;对当前学习任务没用的特征 特征选择&#xff1a;从给定的特征集合中选择出相关特征子集的过程 为什么要特征选择&#xff1f; 1.任务中经常碰到维数灾难 2.去除不相关的特征能降低学习的…

认证授权auth

什么是认证授权 认证授权包含 认证和授权两部分。 什么是用户身份认证&#xff1f; 用户身份认证即当用户访问系统资源时&#xff0c;系统要求验证用户的身份信息&#xff0c;身份合法方可继续访问常见的用户身份认证表现形式有 用户名密码登录微信扫码登录等 什么是用户授…

【数据结构】链表带环问题分析及顺序表链表对比分析

【C语言】链表带环问题分析及顺序表链表对比分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C语言学习之路 文章目录 【C语言】链表带环问题分析及顺序表链表对比分析前言一.顺序表和链表对比1.1顺序表和链表的区别1.2缓存利用率&#…

ID3算法决策树

步骤&#xff1a; 先计算出信息量&#xff1b;信息熵&#xff1b;信息增量&#xff1b; 再比较信息增量的大小&#xff0c;确定分类依据。 信息量&#xff1a; 信息熵&#xff1a; 信息增益&#xff1a;

【网络安全】实验五(身份隐藏与ARP欺骗)

一、本次实验的实验目的 &#xff08;1&#xff09;了解网络攻击中常用的身份隐藏技术&#xff0c;掌握代理服务器的配置及使用方法 &#xff08;2&#xff09;通过实现ARP欺骗攻击&#xff0c;了解黑客利用协议缺陷进行网络攻击的一般方法 二、搭配环境 打开三台虚拟机&#…

IntelliJ IDEA 同时多行同时编辑操作快捷键

首先 点击要编辑的地方,长按鼠标左键不放,同时按住 Ctrl Shift Alt,然后就可以进行多行编辑了

【Unity】RPG2D龙城纷争(八)寻路系统

更新日期&#xff1a;2024年7月4日。 项目源码&#xff1a;第五章发布&#xff08;正式开始游戏逻辑的章节&#xff09; 索引 简介一、寻路系统二、寻路规则&#xff08;角色移动&#xff09;三、寻路规则&#xff08;角色攻击&#xff09;四、角色移动寻路1.自定义寻路规则2.寻…

如何根据控制框图写传递函数

控制框图&#xff08;也称为方块图或信号流图&#xff09;是控制系统工程中常用的一种图形表示方法&#xff0c;用于描述系统中各个组件之间的关系以及信号流向。传递函数则是描述线性时不变系统动态特性的数学模型&#xff0c;通常用于分析和设计控制系统。 识别组件&#xff…

Learn To Rank

在信息检索中&#xff0c;给定一个query&#xff0c;搜索引擎召回一系列相关的Documents&#xff0c;然后对这些Documents进行排序&#xff0c;最后将Top N的Documents输出。 排序问题最关注的是各Documents之间的相对顺序关系&#xff0c;而不是各个Documents的预测分最准确。…

GD32实战篇-双向数控BUCK-BOOST-BOOST升压理论基础

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

即时通讯平台项目测试(登录/注册页面)

http://8.130.98.211:8080/login.html项目访问地址&#xff1a;即时通讯平台http://8.130.98.211:8080/login.html 本篇文章进行登录和注册页面的测试。自动化脚本的依赖在文章末尾。 登录页面测试 UI测试 测试环境&#xff1a;Win11&#xff1b;IntelliJ IDEA 2023.2&#…

C语言课设--读取文件并统计数据

读取文件并统计数据 // 统计记事本英文字符数 //功能 &#xff1a; 读 文件 a.txt 统计出各种 数字 大写字母 小写字母 0~9 A~Z a ~z各有多少个 程序主体框架如下&#xff1a; #include<stdio.h> int a[128]{0};//其中数组元素a[i]保存 ASCII 码为i的字符的数量 v…

css样式学习样例之边框

成品效果 边框固定 .login_box{width: 450px;height: 300px;background-color: aliceblue;border-radius: 3px;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%); }这段CSS代码定义了一个名为.login_box的类的样式&#xff0c;它主要用于创建一个登录框…

【在Linux世界中追寻伟大的One Piece】HTTPS协议原理

目录 1 -> HTTPS是什么&#xff1f; 2 -> 相关概念 2.1 -> 什么是"加密" 2.2 -> 为什么要加密 2.3 -> 常见的加密方式 2.4 -> 数据摘要 && 数据指纹 2.5 -> 数字签名 3 -> HTTPS的工作过程 3.1 -> 只使用对称加密 3.2 …

Linux系统安装软件包的方法rpm和yum详解

起因&#xff1a; 本篇文章是记录学习Centos7的历程 关于rpm 常见命令 1&#xff09;查看已经安装的软件包 rpm -q 软件包名 2&#xff09;查看文件的相关信息 rpm -qi 软件包名 3&#xff09;查看软件包的依赖关系 就是说要想安装这个软件包&#xff0c;就必须把一些前…