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

大数据面试题之Hive(2)

目录

Hive的join操作原理,leftjoin、right join、inner join、outer join的异同?

Hive如何优化join操作

Hive的mapjoin

Hive语句的运行机制,例如包含where、having、group by、orderby,整个的执行过程?

Hive使用的时候会将数据同步到HDFS,小文件问题怎么解决的?

Hive Shuffle的具体过程

Hive有哪些保存元数据的方式,都有什么特点?

Hive SOL实现查询用户连续登陆,讲讲思路

Hive的开窗函数有哪些

Hive存储数据吗


Hive的join操作原理,leftjoin、right join、inner join、outer join的异同?

Inner Join(内连接)
原理:Inner Join返回两个表中具有匹配关联键的所有行。如果在其中一个表中找不到匹配项,那么结果集中就
不会包含该行。
特点:结果集仅包含两个表中关联键相等的行。Left Join(左连接)
原理:Left Join返回左表(左边的表)的所有行,即使在右表中没有匹配项。如果右表中没有匹配项,则结果
集中右表的部分将填充NULL值。
特点:结果集包含左表的所有行,右表中无匹配的行以NULL填充。Right Join(右连接)
原理:与Left Join相反,Right Join返回右表(右边的表)的所有行,即使在左表中没有匹配项。左表中无
匹配的行将以NULL值填充。
特点:结果集包含右表的所有行,左表中无匹配的行以NULL填充。Full Outer Join(全外连接)
原理:Full Outer Join返回左表和右表中所有行的组合。如果某行在另一个表中没有匹配项,则另一个表对应
的列值将为NULL。
特点:结果集包含两个表的所有行,任一表中无匹配的行以NULL填充。Outer Join(外连接)
Outer Join是一个总称,实际上指的是Left Outer Join、Right Outer Join或Full Outer Join中的
任何一种。在某些数据库或上下文中,"Outer Join"可能特指其中一种,但在Hive中,通常需要明确指定是
Left、Right还是Full。Left Semi Join(左半连接/半连接)
原理:这是一种特殊的Join操作,它只返回左表中存在与右表匹配的行,但是结果集中不会包含右表的任何列,
只显示左表匹配的行。
特点:优化了数据处理,特别是当只需要判断是否存在匹配,而不需要实际合并数据时非常有用。

Hive如何优化join操作

1、选择正确的JOIN类型:
使用INNER JOIN只返回两个表中都有的记录。
如果只需要左表的所有记录,即使右表中没有匹配的记录,也要使用LEFT OUTER JOIN。
根据需求选择其他类型的JOIN(如RIGHT OUTER JOIN, FULL OUTER JOIN)。2、使用Map Join:
如果一个表很小(通常称为“小表”),你可以考虑使用Map Join。在Hive中,小表会被加载到每个mapper的内
存中,从而避免了shuffle和reduce阶段。
使用/*+ MAPJOIN(small_table) */提示来启用Map Join。3、排序和分区:
对JOIN的键进行排序可以加速JOIN操作。
使用分区来减少跨多个HDFS块的数据读取。确保JOIN的键与表的分区键匹配。4、启用Bucket Map Join:
如果两个表都很大,但它们的JOIN键有相同的桶数和相同的哈希函数,你可以使用Bucket Map Join。这允许
Hive在mapper级别直接进行JOIN操作,而无需reduce阶段。5、优化Hive配置:
增加mapreduce.map.memory.mb和mapreduce.reduce.memory.mb以增加mapper和reducer的内存。
调整hive.auto.convert.join和hive.mapjoin.smalltable.filesize以自动优化JOIN操作。6、使用Bucketing和Skew Join:
如果数据倾斜严重,考虑使用Bucketing和Skew Join优化。这允许Hive更好地处理具有不同数据分布的数据
集。7、使用ORC或Parquet格式:
ORC和Parquet是Hive中常用的列式存储格式,它们比文本格式(如CSV)更高效。这些格式允许Hive只读取所
需的列,从而减少I/O。8、减少数据倾斜:
数据倾斜是指某些键的数据量远大于其他键。这会导致某些reducer处理的数据量远大于其他reducer,从而延
长整个JOB的执行时间。考虑对数据进行重新分区或预聚合以减少倾斜。9、启用Vectorization:
Hive支持向量化执行,它允许一次处理多行数据,从而提高性能。通过设置hive.vectorized.execution.enabled为true来启用它。10、监控和调优:
使用Hive的查询执行计划和资源管理器来监控JOB的性能。根据观察到的瓶颈(如CPU、内存、磁盘I/O)进行调
整。
考虑使用YARN ResourceManager UI或HiveServer2 UI来查看作业的详细信息和资源使用情况。11、索引:
虽然Hive不像关系型数据库那样支持传统的B-tree索引,但它支持其他类型的索引,如分区索引和物化视图。在
适当的情况下使用这些索引可以加速JOIN操作。但是,请注意,索引也会占用额外的存储空间,并可能增加数据
写入的复杂性。12、考虑使用其他工具:
如果Hive的JOIN性能仍然是一个问题,并且你的数据集适合其他工具(如Spark SQL、Flink SQL或Presto),那么考虑使用这些工具来执行JOIN操作。这些工具可能提供了更好的性能优化和更灵活的执行计划。

Hive的mapjoin

Hive 中的 MapJoin 是一种在 Map 阶段完成表连接的操作,它与普通的连接(Common Join)不同。在 
MapJoin 中,Hive 会将小表全部读入内存中,并在 Map 阶段直接将其与大表进行连接,从而避免了在 
Reduce 阶段进行数据分发和连接的开销。MapJoin 的适用场景包括大表与小表的连接,以及不等值连接等。通过在 SQL 语句中添加/*+ 
MAPJOIN(smallTable) */提示或设置相关参数,Hive 可以自动将连接操作转换为 MapJoin。
与 Common Join 相比,MapJoin 省去了 Shuffle 阶段,减少了数据传输和排序的开销,因此在处理大表与
小表连接时具有更好的性能。然而,MapJoin 也有一些限制,例如需要将小表完全加载到内存中,因此对于过大
的小表可能不太适用。
在实际应用中,需要根据数据量、表大小和性能要求等因素来选择合适的连接方式。如果连接的表中有一个非常小
的表(例如,一个包含几行数据的表),或者需要进行等值连接,并且数据存储在支持快速 I/O 和压缩的格式
(如 ORC 或 Parquet)中,那么 MapJoin 可能是一个较好的选择。

Hive语句的运行机制,例如包含where、having、group by、orderby,整个的执行过程?

Hive SQL语句的执行机制,尤其是包含WHERE、HAVING、GROUP BY、ORDER BY等子句的复杂查询,遵循一个
典型的分阶段处理流程。下面是一个简化的概述,展示这些子句如何影响查询的执行顺序:1、解析与分析(Parse & Analyze):Hive首先解析SQL语句,生成抽象语法树(AST),然后进行语义分析,
验证查询的正确性,比如检查表和列是否存在。
2、逻辑计划生成(Logical Plan Generation):基于分析结果,Hive构建一个逻辑执行计划,描述查询的
大致操作流程,但不涉及具体实现细节。
3、优化(Optimization):Hive的优化器会应用一系列规则来改进逻辑计划,比如重写查询、消除冗余操作
等,以提高执行效率。
4、物理计划生成(Physical Plan Generation):优化后的逻辑计划被转换为物理执行计划,此时会确定使
用哪些具体的MapReduce作业或其他执行引擎(如Tez、Spark)来执行查询,并规划每个阶段的任务。执行过程具体到WHERE、GROUP BY、HAVING、ORDER BY等子句时,大致流程如下:WHERE子句:在Map阶段或者 Reduce阶段之前(取决于具体优化策略),数据会被过滤。Hive尝试将尽可能多的
过滤条件推送到Map阶段执行,这称为谓词下推(Predicate Pushdown),以减少后续阶段处理的数据量。GROUP BY子句:在MapReduce模型中,GROUP BY操作通常在Reduce阶段执行。Map任务会对输入数据进行局
部聚合(如果启用了Map端聚合,即map-side aggregation),然后将聚合结果发送给Reducer,Reducer完
成全局聚合操作,即按指定列分组并聚合数据。HAVING子句:类似于WHERE,但作用于分组后的结果。因此,HAVING条件会在GROUP BY之后、在Reducer阶
段,用来过滤掉不符合条件的分组结果。ORDER BY子句:排序操作通常发生在最后一个Reduce阶段,或者如果使用了分布式排序(Distributed 
Sort),则在Map和Reduce阶段都有参与。这一步骤会消耗较多资源,特别是当处理大量数据时。为了优化,可
以结合LIMIT子句使用CLUSTER BY或DISTRIBUTE BY来限制排序范围。整个过程中,数据在MapReduce作业间流动,先经过筛选(WHERE)、局部聚合(如果适用),然后分组(GROUP 
BY)、再次筛选(HAVING),最后排序(ORDER BY),输出结果。每一步都旨在高效地处理大规模数据集。

Hive使用的时候会将数据同步到HDFS,小文件问题怎么解决的?

Hive在使用过程中确实会将数据存储于HDFS上,而小文件问题(即HDFS中存在大量远小于HDFS块大小的文件)
会影响集群性能和资源利用率。解决Hive中的小文件问题,可以采取以下几种策略:1、合并小文件:
使用SET hive.merge.mapfiles=true;和SET hive.merge.mapredfiles=true;配置,可以在Map-
only任务或MapReduce任务完成后自动合并小文件。
执行ALTER TABLE your_table CONCATENATE;命令手动触发文件合并,但这在新版本的Hive中可能已被废弃,建议使用更现代的解决方案如Insert overwrite目录或使用Spark/Hadoop的文件合并功能。2、Bucketing与分区结合:
使用分桶表(Bucketing)可以将数据预分割成固定大小的文件,减少小文件产生。合理设置桶的数量以平衡文
件大小和查询效率。3、调整动态分区参数:
动态分区产生的小文件问题可以通过调整hive.exec.dynamic.partition.mode(设置为非strict模式)、
hive.exec.max.dynamic.partitions、hive.exec.max.dynamic.partitions.pernode等参数控制分
区数量,避免过度分区。4、控制Reduce数量:
调整hive.exec.reducers.bytes.per.reducer参数,适当增加每个Reducer处理的数据量,减少Reducer
的数量,从而减少输出文件数量。5、数据导入策略:
在数据导入Hive前,先通过Hadoop的getmerge工具或使用Spark等框架预先合并小文件。6、使用Compaction:
对于ACID表,可以利用Hive的Compaction特性来合并小文件。Compaction过程会重新组织数据,减少文件数
量,优化查询性能。7、考虑使用外部工具或脚本:
定期运行脚本检测并合并HDFS上的小文件,虽然这不是Hive直接提供的功能,但对维护集群健康是有帮助的。8、采用更高效的执行引擎:
切换到Tez或Spark作为Hive的执行引擎,它们在处理小文件时可能更加高效,尤其是Spark有良好的数据处理和优化能力。

Hive Shuffle的具体过程

Hive Shuffle的具体过程可以清晰地分为以下几个步骤:1、Map任务输出:
Map任务会将数据处理的结果输出到本地缓存中。
当本地缓存的数据达到一定大小时,Hive会将数据写入临时文件中。2、数据准备:
所有Map任务完成后,Reducer任务开始执行。
Reducer任务会从所有Map任务的临时文件中读取数据。3、数据排序:
为了确保数据的正确性,在读取数据之前,Hive会对数据进行排序。
排序操作可以按照Hadoop的默认排序算法(按照key值进行排序)或自定义排序算法来实现。4、数据分区:
排序完成后,Hive会根据Reducer的数量进行数据的分区。
每个分区的数据会被写入一个临时文件中,以便Reducer任务进行后续处理。5、Reducer任务处理:
Reducer任务从对应的临时文件中读取数据。
将结果输出到HDFS(Hadoop Distributed File System)中。
需要注意的是,Hive Shuffle过程中由于需要将数据写入和读取临时文件,因此会产生额外的I/O开销,这可能会降低任务的执行效率。为了优化Hive Shuffle过程,可以采取以下措施:调整Map和Reduce任务的并行度:避免产生过多的临时文件,减少I/O开销。
选择合适的分区策略:确保具有相同key值的数据能够发送到同一个Reducer节点上进行处理,从而提高效率。优化排序算法:根据具体需求和数据特点选择合适的排序算法,提高排序效率。
使用Bucket Map Join:如果两个表都很大,但它们的JOIN键有相同的桶数和相同的哈希函数,可以考虑使用Bucket Map Join来避免shuffle和reduce阶段。
此外,还可以考虑其他因素来优化Hive的性能,如选择合适的存储格式、使用索引、调整Hive配置参数等。

Hive有哪些保存元数据的方式,都有什么特点?

在Hive中,有多种保存元数据的方式,以下是一些常见的方式及其特点:内存数据库(Derby):Hive默认使用内嵌的Derby数据库来存储元数据。这种方式安装简单,配置方便。然而,
由于数据存储在内存中,不够稳定,且不支持多会话连接,因此不适用于生产环境。外部数据库(如MySQL):将元数据保存在外部独立的数据库中,如MySQL。这种方式可以支持多会话连接,并且
数据可以持久化存储,具有更好的稳定性和可靠性。此外,使用外部数据库还可以方便地进行元数据的管理和维
护。

Hive SOL实现查询用户连续登陆,讲讲思路

在Hive中实现查询用户连续登录的逻辑,通常涉及到用户行为日志分析,这里我们可以采用窗口函数来实现这一
需求。以下是一个简化的思路和示例:基础假设
假设你有一个用户登录日志表user_login_logs,包含至少两列:user_id(用户ID)和login_date(登录
日期,格式为YYYY-MM-DD)。
我们定义“连续登录”为用户在连续的日期上均有登录记录。
为了简化,我们不考虑具体登录时间,仅关注日期。思路
排序与分组:首先,需要按user_id和login_date对数据进行排序,确保每个用户的登录记录按日期排序。
计算连续日期差:使用窗口函数LAG或LEAD来获取每个用户登录日期与前一条或后一条记录的日期差。
过滤连续登录记录:基于日期差判断连续性,保留满足连续登录条件的记录。
示例SQL
以下是一个使用LAG函数找出至少连续两天登录的用户的示例SQL。这里我们计算每个用户每天的登录与前一天的
登录间隔,并筛选出间隔为1天的记录,意味着连续登录。WITH login_dates AS (SELECT user_id, login_date, LAG(login_date, 1) OVER (PARTITION BY user_id ORDER BY login_date) as prev_login_dateFROM user_login_logs
)SELECT user_id, login_date, DATE_ADD(prev_login_date, 1) as expected_login_date
FROM login_dates
WHERE login_date = DATE_ADD(prev_login_date, 1)
ORDER BY user_id, login_date;注意事项
上述SQL只是基础示例,实际场景可能更复杂,比如需要考虑跨月连续登录的情况,或者需要找出最长连续登录序
列等。
如果要找出所有连续登录序列,可能需要更复杂的逻辑,比如使用自定义UDF(用户自定义函数)或者编写更复杂
的窗口函数逻辑。
考虑性能,对于大规模数据,上述查询可能较慢,可能需要进一步优化,比如通过预处理数据或使用更高效的计算
引擎。

Hive的开窗函数有哪些

Hive的开窗函数(也称为窗口函数或分析函数)主要用于在数据集的每个窗口上执行计算,这些窗口可以是整个
数据集,也可以是由PARTITION BY子句定义的每个分区。以下是Hive中常用的一些开窗函数:ROW_NUMBER() OVER()
功能:为窗口中的每一行分配一个唯一的序号。
特点:对相等的值不进行区分,相等的值对应的排名相同,序号从1到n连续。RANK() OVER()
功能:为窗口中的每一行提供一个排名。
特点:相等的值排名相同,但若有相等的值,则序号从1到n不连续。例如,如果有两个人都排在第三名,则没有第
四名。DENSE_RANK() OVER()
功能:为窗口中的每一行提供一个排名。
特点:对相等的值排名相同,但序号从1到n连续。例如,如果有两个人都排在第一名,则排在第二名的人是第三个
人。NTILE(n) OVER()
功能:将有序的数据集合平均分配到指定的n个桶中,将桶号分配给每一行。
特点:如果不能平均分配,则较小的桶分配额外的行,并且各个桶中能放的数据条数最多相等。PERCENT_RANK()
功能:计算排名百分比。
排名计算公式:(当前排名 - 1)/(分组内总行数 - 1)。CUME_DIST()
功能:计算小于或等于当前值的行数占总数的比例。
如果按照升序排列,则统计小于等于当前值的行数/总行数;如果是降序排列,则统计大于等于当前值的行数/总行数。LEAD(value_expr[, offset[, default]])
功能:用于统计窗口内往下第n行值。
第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(如果往下第n行为null时,取默认值)。LAG(value_expr[, offset[, default]])
功能:与LEAD相反,用于统计窗口内往上第n行值。
参数含义与LEAD相同,但方向相反。这些开窗函数在Hive中通常与OVER()子句一起使用,以指定窗口的定义,包括PARTITION BY子句(用于定义分区)和ORDER BY子句(用于定义窗口内的排序)。通过这些函数,可以在Hive中进行各种复杂的数据分析操作。

Hive存储数据吗

Hive 本身并不直接存储数据,而是对存储在 Hadoop 分布式文件系统(HDFS)或其他兼容的文件系统中的数据
进行管理和查询。Hive 提供了一种类似于 SQL 的查询语言(HiveQL),使用户能够方便地对大规模数据进行分析和处理。当用户
在 Hive 中创建表并定义表结构时,Hive 会将这些元数据信息进行存储和管理,但实际的数据仍然存放在底层
的文件系统中。例如,如果您在 Hive 中创建了一个表,并指定数据存储在 HDFS 中的某个路径,那么 Hive 会知道如何解析
和查询该路径下的数据,但数据本身是由 HDFS 负责存储和管理的。

引用:https://www.nowcoder.com/discuss/353159520220291072

通义千问、文心一言、豆包

相关文章:

大数据面试题之Hive(2)

目录 Hive的join操作原理,leftjoin、right join、inner join、outer join的异同? Hive如何优化join操作 Hive的mapjoin Hive语句的运行机制,例如包含where、having、group by、orderby,整个的执行过程? Hive使用的时候会将数据同步到HD…...

求推荐几款http可视化调试工具?

Postman 非常流行的API调试工具,适用于构建、测试和文档化APIs。它支持各种HTTP方法,有强大的集合和环境管理功能,以及代码生成能力。 BB-API 是一款旨在提升开发效率的工具,它专注于提供简约、完全免费且功能强大的HTTP模拟请…...

Python逻辑控制语句 之 判断语句--if else结构

1.if else 的介绍 if else :如果 ... 否则 .... 2.if else 的语法 if 判断条件: 判断条件成立,执行的代码 else: 判断条件不成立,执行的代码 (1)else 是关键字, 后⾯需要 冒号 (2)存在冒号…...

word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。解决办法

问题描述:word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。设置了页边距也不管用。 如图1 图1 解决: 点击“视图”——“多页”——“单页”,即可。如图2操作 图2 结果展示:如图3 图3...

8.javaSE基础进阶_泛型generics(无解通配符?+上下界统配符superextends)

文章目录 泛型generics一.泛型简介二.泛型类1.泛型方法 三.泛型接口四.泛型进阶1.*<?>无解通配符*2.上界通配符 < ? extends E>3.下界通配符 < ? super E>4.泛型擦除 泛型generics 一.泛型简介 JDK5引入,一种安全机制,编译时检测不匹配类型 特点: 将数…...

酒店客房管理系统(Java+MySQL)

技术栈 Java: 作为主要编程语言。Swing GUI: 用于开发图形用户界面。MySQL: 作为数据库管理系统。JDBC: 用于连接和操作MySQL数据库。 功能要点 管理登录认证 系统提供管理员登录认证功能。通过用户名和密码验证身份&#xff0c;确保只有授权的用户可以访问和管理酒店客房信…...

S32K3 --- Wdg(内狗) Mcal配置

前言 看门狗的作用是用来检测程序是否跑飞,进入死循环。我们需要不停地喂狗,来确保程序是正常运行的,一旦停止喂狗,意味着程序跑飞,超时后就会reset复位程序。 一、Wdg 1.1 WdgGeneral Wdg Disable Allowed : 启用此参数后,允许在运行的时候禁用看门狗 Wdg Enable User…...

LeetCode 算法:二叉树的层序遍历 c++

原题链接&#x1f517;&#xff1a;二叉树的层序遍历 难度&#xff1a;中等⭐️⭐️ 题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;roo…...

博途TIA Portal「集成自动化软件」下载安装,TIA Portal 灵活多变的编程环境

在编程领域&#xff0c;博途TIA Portal以其卓越的编程工具和灵活多变的编程环境&#xff0c;为众多用户提供了前所未有的便利。这款软件不仅支持多种编程语言&#xff0c;如梯形图&#xff08;Ladder Diagram&#xff09;、功能块图&#xff08;Function Block Diagram&#xf…...

火了10年的电脑监控软件有哪些?盘点8款热门的电脑监控软件

电脑监控软件领域经历了多年的发展&#xff0c;一些软件因为其稳定的功能、良好的用户体验和不断更新的技术支持&#xff0c;得以在市场上保持长期的热度和用户基础。以下是几款在过去十年里广受好评且持续流行的内网监控软件&#xff1a; 1.安企神&#xff1a;由河北安企神网络…...

入门Java爬虫:认识其基本概念和应用方法

Java爬虫初探&#xff1a;了解它的基本概念与用途&#xff0c;需要具体代码示例 随着互联网的快速发展&#xff0c;获取并处理大量的数据成为企业和个人不可或缺的一项任务。而爬虫&#xff08;Web Scraping&#xff09;作为一种自动化的数据获取方法&#xff0c;不仅能够快速…...

Flask新手入门(一)

前言 Flask是一个用Python编写的轻量级Web应用框架。它最初由Armin Ronacher作为Werkzeug的一个子项目在2010年开发出来。Werkzeug是一个综合工具包&#xff0c;提供了各种用于Web应用开发的工具和函数。自发布以来&#xff0c;Flask因其简洁和灵活性而迅速受到开发者的欢迎。…...

Grafana-11.0.0 在线部署教程

Grafana-11.0.0 在线部署教程 环境&#xff1a; 操作系统&#xff1a; ubuntugrafana版本&#xff1a; 11.0.0 &#xff08;建议不要按照最新版&#xff09;grafana要求的系统配置不高&#xff0c;建议直接部署在监控服务器上&#xff0c;比如zabbix服务器、prometheus服务器…...

pytorch-01

加载mnist数据集 one-hot编码实现 import numpy as np import torch x_train np.load("../dataset/mnist/x_train.npy") # 从网站提前下载数据集&#xff0c;并解压缩 y_train_label np.load("../dataset/mnist/y_train_label.npy") x torch.tensor(y…...

梦想CAD二次开发

1.mxdraw简介 mxdraw是一个HTML5 Canvas JavaScript框架&#xff0c;它在THREE.js的基础上扩展开发&#xff0c;为用户提供了一套在前端绘图更为方便&#xff0c;快捷&#xff0c;高效率的解决方案&#xff0c;mxdraw的实质为一个前端二维绘图平台。你可以使用mxdraw在画布上绘…...

Eureka的介绍与使用

Eureka 是 Netflix 开源的一款服务注册与发现组件&#xff0c;在微服务架构中扮演着重要的角色。 一、Eureka 的介绍 工作原理 服务注册&#xff1a;各个微服务在启动时&#xff0c;会向 Eureka Server 发送注册请求&#xff0c;将自身的服务名、实例名、IP 地址、端口等信息注…...

ChatGPT之母:AI自动化将取代人类,创意性工作或将消失

目录 01 AI取代创意性工作的担忧 1.1 CTO说了啥 02 AI已开始大范围取代人类 01 AI取代创意性工作的担忧 几天前的采访中&#xff0c;OpenAI的CTO直言&#xff0c;AI可能会扼杀一些本来不应该存在的创意性工作。 近来一篇报道更是印证了这一观点。国外科技媒体的老板Miller用…...

【深度学习驱动流体力学】湍流仿真到深度学习湍流预测

目录 一、湍流项目结构二、三个OpenFOAM湍流算例1. motorBike背景和目的文件结构和关键文件使用和应用湍流仿真深度学习湍流预测深度学习湍流预测的挑战和应用结合湍流仿真与深度学习2. pitzDaily背景和目的文件结构和关键文件使用和应用3. pitzDailyMapped背景和目的文件结构和…...

如何从0构建一款类似pytest的工具

Pytest主要模块 Pytest 是一个强大且灵活的测试框架&#xff0c;它通过一系列步骤来发现和运行测试。其核心工作原理包括以下几个方面&#xff1a;测试发现&#xff1a;Pytest 会遍历指定目录下的所有文件&#xff0c;找到以 test_ 开头或 _test.py 结尾的文件&#xff0c;并且…...

6.27-6.29 旧c语言

#include<stdio.h> struct stu {int num;float score;struct stu *next; }; void main() {struct stu a,b,c,*head;//静态链表a.num 1;a.score 10;b.num 2;b.score 20;c.num 3;c.score 30;head &a;a.next &b;b.next &c;do{printf("%d,%5.1f\n&…...

Unidbg调用-补环境V3-Hook

结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。 应用场景:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。 1.大姨妈 1.1 0x1DA0 public void hook1() {...

从AICore到TensorCore:华为910B与NVIDIA A100全面分析

华为NPU 910B与NVIDIA GPU A100性能对比&#xff0c;从AICore到TensorCore&#xff0c;展现各自计算核心优势。 AI 2.0浪潮汹涌而来&#xff0c;若仍将其与区块链等量齐观&#xff0c;视作炒作泡沫&#xff0c;则将错失新时代的巨大机遇。现在&#xff0c;就是把握AI时代的关键…...

Edge 浏览器退出后,后台占用问题

Edge 浏览器退出后&#xff0c;后台占用问题 环境 windows 11 Microsoft Edge版本 126.0.2592.68 (正式版本) (64 位)详情 在关闭Edge软件后&#xff0c;查看后台&#xff0c;还占用很多系统资源。实在不明白&#xff0c;关了浏览器还不能全关了&#xff0c;微软也学流氓了。…...

实验八 T_SQL编程

题目 以电子商务系统数据库ecommerce为例 1、在ecommerce数据库&#xff0c;针对会员表member首先创建一个“呼和浩特地区”会员的视图view_hohhot&#xff0c;然后通过该视图查询来自“呼和浩特”地区的会员信息&#xff0c;用批处理命令语句将问题进行分割&#xff0c;并分…...

【爆肝34万字】从零开始学Python第2天: 判断语句【入门到放弃】

目录 前言判断语句True、False简单使用作用 比较运算符引入比较运算符的分类比较运算符的结果示例代码总结 逻辑运算符引入逻辑运算符的简单使用逻辑运算符与比较运算符一起使用特殊情况下的逻辑运算符 if 判断语句引入基本使用案例演示案例补充随堂练习 else 判断子句引入else…...

React 19 新特性集合

前言&#xff1a;https://juejin.cn/post/7337207433868197915 新 React 版本信息 伴随 React v19 Beta 的发布&#xff0c;React v18.3 也一并发布。 React v18.3相比最后一个 React v18 的版本 v18.2 &#xff0c;v18.3 添加了一些警告提示&#xff0c;便于尽早发现问题&a…...

耐高温水位传感器有哪些

耐高温水位传感器在现代液位检测技术中扮演着重要角色&#xff0c;特别适用于需要高温环境下稳定工作的应用场合。这类传感器的设计和材质选择对其性能和可靠性至关重要。 一种典型的耐高温水位传感器是FS-IR2016D&#xff0c;它采用了PPSU作为主要材质。PPSU具有优良的耐高温…...

Symfony国际化与本地化:打造多语言应用的秘诀

标题&#xff1a;Symfony国际化与本地化&#xff1a;打造多语言应用的秘诀 摘要 Symfony是一个高度灵活的PHP框架&#xff0c;用于创建Web应用程序。它提供了强大的国际化&#xff08;i18n&#xff09;和本地化&#xff08;l10n&#xff09;功能&#xff0c;允许开发者轻松创…...

ApolloClient GraphQL 与 ReactNative

要在 React Native 应用程序中设置使用 GraphQL 的简单示例&#xff0c;您需要遵循以下步骤&#xff1a; 设置一个 React Native 项目。安装 GraphQL 必要的依赖项。创建一个基本的 GraphQL 服务器&#xff08;或使用公共 GraphQL 端点&#xff09;。从 React Native 应用中的…...

【贡献法】2262. 字符串的总引力

本文涉及知识点 贡献法 LeetCode2262. 字符串的总引力 字符串的 引力 定义为&#xff1a;字符串中 不同 字符的数量。 例如&#xff0c;“abbca” 的引力为 3 &#xff0c;因为其中有 3 个不同字符 ‘a’、‘b’ 和 ‘c’ 。 给你一个字符串 s &#xff0c;返回 其所有子字符…...

C#基于SkiaSharp实现印章管理(3)

本系列第一篇文章中创建的基本框架限定了印章形状为矩形&#xff0c;但常用的印章有方形、圆形等多种形状&#xff0c;本文调整程序以支持定义并显示矩形、圆角矩形、圆形、椭圆等4种形式的印章背景形状。   定义印章背景形状枚举类型&#xff0c;矩形、圆形、椭圆相关的尺寸…...

如何理解泛型的编译期检查

既然说类型变量会在编译的时候擦除掉&#xff0c;那为什么我们往 ArrayList 创建的对象中添加整数会报错呢&#xff1f;不是说泛型变量String会在编译的时候变为Object类型吗&#xff1f;为什么不能存别的类型呢&#xff1f;既然类型擦除了&#xff0c;如何保证我们只能使用泛型…...

计算机组成原理:海明校验

在上图中&#xff0c;对绿色的7比特数据进行海明校验&#xff0c;需要添加紫色的4比特校验位&#xff0c;总共是蓝色的11比特。紫色的校验位pi分布于蓝色的hi的1, 2, 4, 8, 16, 32, 64位&#xff0c;是2i-1位。绿色的数据位bi分布于剩下的位。 在下图中&#xff0c;b1位于h3&a…...

信息学奥赛初赛天天练-39-CSP-J2021基础题-哈夫曼树、哈夫曼编码、贪心算法、满二叉树、完全二叉树、前中后缀表达式转换

PDF文档公众号回复关键字:20240629 2022 CSP-J 选择题 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 5.对于入栈顺序为a,b,c,d,e的序列&#xff0c;下列( )不合法的出栈序列 A. a&#xff0c;b&a…...

第11章 规划过程组(收集需求)

第11章 规划过程组&#xff08;一&#xff09;11.3收集需求&#xff0c;在第三版教材第377~378页&#xff1b; 文字图片音频方式 第一个知识点&#xff1a;主要输出 1、需求跟踪矩阵 内容 业务需要、机会、目的和目标 项目目标 项目范围和 WBS 可…...

探索WebKit的守护神:深入Web安全策略

探索WebKit的守护神&#xff1a;深入Web安全策略 在数字化时代&#xff0c;网络已成为我们生活的一部分&#xff0c;而网页浏览器作为我们探索网络世界的窗口&#xff0c;其安全性至关重要。WebKit作为众多流行浏览器的内核&#xff0c;例如Safari&#xff0c;其安全性策略是保…...

unity ScrollRect裁剪ParticleSystem粒子

搜了下大概有这几种方法 通过模板缓存通过shader裁剪区域&#xff1a;案例一&#xff0c;案例二&#xff0c;案例三&#xff0c;三个案例都是类似的方法&#xff0c;需要在c#传入数据到shader通过插件 某乎上的模板缓存方法link&#xff0c;&#xff08;没有登录看不到全文&a…...

凤仪亭 | 第7集 | 大丈夫生居天地之间,岂能郁郁久居人下 | 司徒一言,令我拨云见日,茅塞顿开 | 三国演义 | 逐鹿群雄

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客分享的是《三国演义》文学剧本第Ⅰ部分《群雄逐鹿》的第7️⃣集《凤仪亭》的经典语句和文学剧本全集台词 文章目录 1.经典语句2.文学剧本台词 …...

React实战学习(一)_棋盘设计

需求&#xff1a; 左上侧&#xff1a;状态左下侧&#xff1a;棋盘&#xff0c;保证胜利就结束 和 下过来的不能在下右侧&#xff1a;“时光机”,保证可以回顾&#xff0c;索引 语法&#xff1a; 父子之间属性传递&#xff08;props&#xff09;子父组件传递&#xff08;写法上&…...

【LeetCode】每日一题:三数之和

解题思路 最开始是打算沿着二数之和的思路做&#xff0c;即固定了最大的&#xff0c;然后小的开始遍历&#xff0c;因为这种遍历方式只需要遍历一轮就能完成&#xff0c;所以复杂度应该是O&#xff08;n2&#xff09;&#xff0c;但是最后几个示例还是超时了&#xff0c;可能进…...

逆风而行:提升逆商,让困难成为你前进的动力

一、引言 生活&#xff0c;总是充满了未知与变数。有时&#xff0c;我们会遇到阳光明媚的日子&#xff0c;享受着宁静与和谐&#xff1b;但更多时候&#xff0c;我们却不得不面对那些突如其来的坏事件&#xff0c;如工作的挫折、人际关系的困扰、健康的挑战等。这些事件如同突…...

新能源汽车CAN总线故障定位与干扰排除的几个方法

CAN总线是目前最受欢迎的现场总线之一,在新能源车中有广泛应用。新能源车的CAN总线故障和隐患将影响驾驶体验甚至行车安全,如何进行CAN总线故障定位及干扰排除呢? 目前,国内机动车保有量已经突破三亿大关。由于大量的燃油车带来严峻的环境问题,因此全面禁售燃油车的日程在…...

【涵子来信】——社交宝典:克服你心中的内向,世界总有缺陷

内向&#xff0c;你是内向的吗&#xff1f;想必每个人不同&#xff0c;面对的情形也是不同的。 暑假是一个很好的机会&#xff0c;我是可以去多社交社交。但是&#xff0c;面对着CSDN上这么多技术人er&#xff0c;那么&#xff0c;我的宝典&#xff0c;对于大家&#xff0c;有…...

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时&#xff0c;外协公司和个人兼职各有优劣。个人兼职成本较低且灵活&#xff0c;但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制&#xff0c;尽管成本较高&#xff0c;但能提…...

汽车电子工程师入门系列——CAN 规范系列通读

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

泽众云真机-平台华为机型HarmonyOS NEXT系统已上线!

泽众云真机平台华为机型HarmonyOS NEXT系统已上线&#xff01; 之前文章《泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统》&#xff0c;为什么要升级HarmonyOS NEXT系统&#xff1f;我们之前有说过&#xff0c…...

AI基础:从线性回归到梯度下降

一个简单的问题&#xff1a; 如果此时你正站在迷路缭绕的山坡上&#xff0c;能见度不高&#xff0c;但是你又想去往最低的山谷的位置&#xff0c;怎么走&#xff1f; 很简单&#xff0c;哪里陡那就往那里走呗——而这就是梯度下降算法的思想。 古话说&#xff1a;“先发制于人…...

AI产品经理面试

把优秀当习惯把优秀当习惯肯定不是口头说说&#xff0c;那有什么判断标准吗&#xff1f; 当我做完一件事儿的时候&#xff0c;我会看它有没有突破我的舒适圈、能不能惊艳到我自己。这就是我的判断标准。 在自我介绍和经历介绍时&#xff0c;面试者应该注重以下几个方面&#xf…...

二进制方式部署consul单机版

1.consul的下载 mkdir -p /root/consul/data && cd /root/consul wget https://releases.hashicorp.com/consul/1.18.0/consul_1.18.0_linux_amd64.zip unzip consul_1.18.0_linux_amd64.zip mv consul /usr/local/bin/ 2.配置文件 // 配置文件路径&#xff1a; /roo…...

SpringBoot整合Quartz实现动态定时任务

目录 1、Quartz简介1.1 Quartz的三大核心组件1.2 CronTrigger配置格式 2、SpringBoot整合Quartz框架2.1 创建项目2.2 实现定时任务 1、Quartz简介 Quartz是一个开源的任务调度服务&#xff0c;它可以独立使用&#xff0c;也可与其它的Java EE&#xff0c;Java SE应用整合使用。…...

Redis 哨兵主备切换的数据丢失问题应该怎么解决?

引言&#xff1a;Redis作为一种高性能的内存数据库&#xff0c;广泛应用于分布式系统中。为了保证服务的高可用性&#xff0c;Redis提供了哨兵&#xff08;Sentinel&#xff09;机制&#xff0c;用于监控和管理Redis实例的自动故障恢复。然而&#xff0c;即使在哨兵的保护下&am…...

EDI是什么?与ERP有何关系

EDI的发展过程 电子数据交换&#xff08;Electronic Data Interchange&#xff0c;EDI&#xff09;是一种通过电子方式传输商业文件的技术。EDI的历史可以追溯到20世纪60年代&#xff0c;当时企业开始使用计算机进行数据处理。最早的EDI系统是为解决大型企业间的信息交换问题而…...

【操作系统期末速成】 EP01 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文&#xff1a;☀️☀️☀️1.1 考点一&#xff1a;操作系统的概率及特征 三、总结&#xff1a;&#x1f353;&#x1f353;&#x1f353; 一、前言&#x1f680;&#x1f680;&#x1f680; ☀️ 回报不在行动…...

WDF驱动开发-特定于KMDF的技术(二)

支持可弹出设备 可弹出设备 是可以插入扩展坞并从扩展坞弹出的设备。 通常&#xff0c;必须先禁用可弹出设备的总线电源&#xff0c;然后才能移除设备。 如果设备可弹出&#xff0c;则设备总线的总线驱动程序必须在设备的WDF_DEVICE_PNP_CAPABILITIES结构中设置弹出成员。 当…...

RocketMQ实战:一键在docker中搭建rocketmq和doshboard环境

在本篇博客中&#xff0c;我们将详细介绍如何在 Docker 环境中一键部署 RocketMQ 和其 Dashboard。这个过程基于一个预配置的 Docker Compose 文件&#xff0c;使得部署变得简单高效。 项目介绍 该项目提供了一套 Docker Compose 配置&#xff0c;用于快速部署 RocketMQ 及其…...

vue3+ts+vite项目中使用spreadjs,通过script标签引入spreadjs可以提高打包速度

https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/quickstart/quickstart-js 右键另存这个官方的示例页面可以下载全部js文件 https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html spread.html: <!DOCTYPE html> <html lang"zh">…...

起售13.98万,取消鲢鱼嘴设计,试驾体验第十一代索纳塔!

对于2002年就进入国内市场的索纳塔,相信大多数人并不陌生,定位上是一台中型车,整体的风格就是突出运动基因,而在今年是迎来了家族第十一代车型上市。车辆指导售价在13.98~18.68万之间,作为一台中型车,定价方面还算合理,从低到高,动力上有两种选择,一种是1.5T涡轮增压引…...

【MySQL精通之路】SQL优化(1)-查询优化(10)-外部联接简化

主博客&#xff1a; 【MySQL精通之路】SQL优化(1)-查询优化-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】SQL优化(1)-查询优化(9)-外部联接优化-CSDN博客 下一篇&#xff1a; 【MySQL精通之路】SQL优化(1)-查询优化(11)-多范围查询优化-CSDN博客 查询时FROM子句中的表达…...

15、Spring系统-AOP

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术&#xff1a; 代理对象创建过程 JdkDynamicAopProxy 在构造JdkDynamicAopProxy对象时&#xff0c;会先拿到被代理对象自己所实现的接口&#xff0c;并且…...

docker mqqt 安装

安装 cd /data/mqqt/ 目录准备 mkdir /data/mqqt/mosquitto/config/ #vim Dockerfile # 使用官方Eclipse Mosquitto镜像作为基础镜像 FROM eclipse-mosquitto:latest # 复制配置文件到容器内 COPY mosquitto.conf /data/mqqt/mosquitto/config/mosquitto.conf# 暴露默认的M…...

前端RN是什么:深入解析React Native的前端革命

前端RN是什么&#xff1a;深入解析React Native的前端革命 在前端技术的飞速发展中&#xff0c;一个新的名词逐渐崭露头角——前端RN。对于许多初学者和开发者来说&#xff0c;这个术语可能充满了神秘与困惑。那么&#xff0c;前端RN究竟是什么呢&#xff1f;本文将从四个方面…...

计算机三级 网络技术

一、边界网关协议BGP BGP是边界网关协议&#xff0c;是外部而不是内部网关协议&#xff08;是不同自治系统的路由器之间使用的协议&#xff09;一个BGP发言人使用TCP&#xff08;不是UDP&#xff09;与其自治系统的BGP发言人交换路由信息。BGP协议交换路由由信息的节点数是以自…...