Hive查询优化 - 面试工作不走弯路
引言:Hive作为一种基于Hadoop的数据仓库工具,广泛应用于大数据分析。然而,由于其依赖于MapReduce框架,查询的性能可能会受到影响。为了确保Hive查询能够高效运行,掌握查询优化技巧至关重要。在日常工作中,高效的Hive查询不仅能提高数据处理的速度,还能有效节省计算资源,降低成本。同时,优化Hive查询的能力也是大数据工程师面试中的常见问题之一,能够展示出你的技术深度和实际操作能力。我们将深入探讨Hive查询优化的多种方法,包括数据存储优化、查询写法优化、配置优化以及性能监控与调优。无论是正在准备面试,还是在实际工作中遇到了Hive查询性能瓶颈都能游刃有余。
目录
了解Hive的架构
Hive的工作原理
Hive与Hadoop的关系
查询的执行过程
数据存储优化
分区表的使用
桶表的使用
合理的数据格式
查询优化技巧
合理使用索引
优化JOIN操作
优化GROUP BY和ORDER BY
优化SQL写法
避免使用SELECT *
使用LIMIT限制返回结果
避免笛卡尔积
使用合适的过滤条件
配置优化
内存和资源的合理配置
设置合理的参数
性能监控与调优
使用EXPLAIN分析查询计划
常见性能瓶颈的识别与解决
使用Hive的性能监控工具
了解Hive的架构
在进行Hive查询优化之前,首先需要了解Hive的基本架构和工作原理。Hive将SQL查询翻译为MapReduce任务在Hadoop上运行。我们先来了解Hive的主要组件和它们的作用。
Hive的工作原理
Hive是一个基于Hadoop的数据仓库工具,允许用户使用类似SQL的语言(HiveQL)来查询存储在HDFS(Hadoop Distributed File System)上的数据。Hive的核心组件包括以下几个部分:
- 用户接口:Hive提供多种用户接口,包括CLI(命令行接口)、JDBC/ODBC驱动程序和Web UI等,方便用户提交查询。
- 编译器:编译器将用户的HiveQL查询解析成抽象语法树(AST),然后进一步转换成逻辑计划。
- 优化器:优化器对逻辑计划进行优化,包括查询重写、选择合适的Join策略、推测过滤条件等,以提高查询效率。
- 执行引擎:优化后的查询计划会被转换成一个或多个MapReduce任务,由Hadoop的执行引擎来调度和执行。
- 元数据存储:Hive使用一个元数据存储(如MySQL、PostgreSQL等)来存储表结构、分区信息、列类型等元数据。
Hive与Hadoop的关系
Hive依赖于Hadoop的分布式计算和存储能力,通过将SQL查询转换为MapReduce任务在Hadoop集群上运行,实现了大规模数据的处理能力。以下是Hive与Hadoop交互的主要步骤:
- 提交查询:用户通过CLI或其他接口提交HiveQL查询。
- 解析与编译:编译器将查询解析成AST,并转换为逻辑计划。
- 优化:优化器对逻辑计划进行优化,选择最佳执行策略。
- 生成MapReduce任务:优化后的查询计划被转换成一个或多个MapReduce任务。
- 执行任务:MapReduce任务在Hadoop集群上执行,处理数据并生成结果。
- 返回结果:查询结果通过用户接口返回给用户。
查询的执行过程
了解Hive查询的执行过程有助于识别潜在的性能瓶颈并进行优化。以下是一个典型的Hive查询执行过程:
- 解析:编译器将HiveQL查询解析为AST。
- 逻辑计划生成:编译器将AST转换为逻辑计划,包括操作符树。
- 优化:优化器对逻辑计划进行优化,选择合适的Join策略、推测过滤条件等。
- 物理计划生成:优化后的逻辑计划被转换为物理计划,即MapReduce任务。
- 任务执行:物理计划在Hadoop集群上执行,处理数据并生成中间结果。
- 结果合并:MapReduce任务的输出被合并,生成最终查询结果。
- 返回结果:查询结果通过用户接口返回给用户。
数据存储优化
数据存储的优化是提高Hive查询性能的重要手段。通过合理的表设计和数据格式,可以显著减少查询的执行时间和资源消耗。以下是一些常用的优化方法。
分区表的使用
分区表是将表按照某个列或多个列的值进行分区存储,这样在查询时可以只扫描相关分区的数据,从而大大减少扫描的数据量,提高查询效率。
-- 创建按年份和月份分区的销售表
CREATE TABLE sales (product_id INT,amount DOUBLE,date STRING
)
PARTITIONED BY (year INT, month INT)
STORED AS ORC;-- 加载数据到分区表
LOAD DATA INPATH '/path/to/data' INTO TABLE sales PARTITION (year=2023, month=6);-- 查询特定分区的数据
SELECT product_id, amount
FROM sales
WHERE year=2023 AND month=6;
桶表的使用
桶表通过将数据划分为多个桶,可以在JOIN操作和聚合操作中显著提高性能。每个桶的数据存储在一个单独的文件中。
-- 创建按用户ID划分为16个桶的用户信息表
CREATE TABLE user_info (user_id INT,name STRING,age INT
)
CLUSTERED BY (user_id) INTO 16 BUCKETS
STORED AS ORC;-- 加载数据到桶表
INSERT INTO TABLE user_info SELECT * FROM user_info_source;-- 查询桶表
SELECT user_id, name, age
FROM user_info
WHERE age > 30;
合理的数据格式
选择合适的数据格式和压缩方式可以显著提高查询性能。列式存储格式如ORC和Parquet在处理大数据时具有更高的压缩比和查询效率。
-- 创建使用ORC格式存储的交易表
CREATE TABLE transactions (trans_id INT,trans_date STRING,amount DOUBLE
)
STORED AS ORC;-- 加载数据到ORC格式表
LOAD DATA INPATH '/path/to/transactions' INTO TABLE transactions;-- 创建压缩存储的销售表
CREATE TABLE compressed_sales (product_id INT,amount DOUBLE,date STRING
)
STORED AS ORC TBLPROPERTIES ("orc.compress"="ZLIB");-- 加载数据到压缩表
LOAD DATA INPATH '/path/to/data' INTO TABLE compressed_sales;
查询优化技巧
除了数据存储的优化外,查询优化技巧也能显著提高Hive查询的性能。通过合理的索引使用、优化JOIN操作、优化GROUP BY和ORDER BY等方法,可以减少查询的执行时间和资源消耗。
合理使用索引
索引可以加速查询,但也会增加写操作的开销。因此,根据查询频率和数据更新情况,合理创建和使用索引非常重要。
-- 在销售表的金额列上创建索引
CREATE INDEX idx_amount ON TABLE sales (amount) AS 'COMPACT' WITH DEFERRED REBUILD;-- 重建索引
ALTER INDEX idx_amount ON sales REBUILD;-- 查询使用索引
SELECT product_id, amount
FROM sales
WHERE amount > 1000;
优化JOIN操作
JOIN操作是Hive查询中常见的性能瓶颈。选择合适的JOIN策略(Map-side Join或Reduce-side Join)和合理设置分布键,可以显著提高JOIN操作的性能。
-- Map-side Join
SELECT /*+ MAPJOIN(b) */a.id, a.name, b.salary
FROMemployees a
JOINemployee_salaries b
ON a.id = b.id;-- Reduce-side Join
SELECTa.id, a.name, b.salary
FROMemployees a
JOINemployee_salaries b
ON a.id = b.id
DISTRIBUTE BY a.id
SORT BY a.id;
优化GROUP BY和ORDER BY
通过在Map阶段进行部分聚合和排序,可以减少Reduce阶段的负担,从而提升查询效率。
-- Map-side aggregation
SET hive.map.aggr=true;
SET hive.groupby.mapaggr.checkinterval=100000;-- 分布式排序
SET hive.optimize.sort.dynamic.partition=true;
优化SQL写法
优化SQL查询的写法是提高Hive查询性能的关键步骤之一。通过避免不必要的操作和使用高效的查询语句,可以显著减少查询的执行时间和资源消耗。
避免使用SELECT *
使用SELECT * 会检索表中的所有列,这可能会导致大量不必要的数据传输和处理,尤其是在表包含许多列时。最好只选择需要的列。
-- 不推荐的用法
SELECT * FROM sales WHERE year=2023 AND month=6;-- 推荐的用法
SELECT product_id, amount FROM sales WHERE year=2023 AND month=6;
使用LIMIT限制返回结果
在进行数据探索或调试时,可以使用LIMIT子句限制返回的结果数量,以减少查询的执行时间和资源消耗。
-- 限制返回结果的数量
SELECT product_id, amount FROM sales WHERE year=2023 AND month=6 LIMIT 100;
避免笛卡尔积
笛卡尔积会生成所有可能的行组合,导致巨大的数据集。确保JOIN操作有合理的连接条件,以避免生成笛卡尔积。
-- 不推荐的用法:没有连接条件,可能生成笛卡尔积
SELECT a.id, a.name, b.salary
FROM employees a, employee_salaries b;-- 推荐的用法:有连接条件
SELECT a.id, a.name, b.salary
FROM employees a
JOIN employee_salaries b
ON a.id = b.id;
使用合适的过滤条件
在查询中尽可能使用WHERE子句进行过滤,以减少扫描的数据量和处理时间。
-- 不推荐的用法:没有过滤条件
SELECT * FROM sales;-- 推荐的用法:使用过滤条件
SELECT * FROM sales WHERE year=2023 AND amount > 1000;
配置优化
除了优化SQL查询和数据存储,Hive的配置优化也是提升查询性能的重要手段。通过合理配置内存、资源和参数,可以更好地利用集群资源,提高查询效率。
内存和资源的合理配置
根据数据量和查询复杂度,调整Map和Reduce任务的内存设置,可以有效避免内存不足导致的任务失败或性能下降。同时,合理设置并行度可以提高任务的执行效率。
-- 设置Map任务的内存大小
SET mapreduce.map.memory.mb=2048;-- 设置Reduce任务的内存大小
SET mapreduce.reduce.memory.mb=4096;-- 启用并行执行
SET hive.exec.parallel=true;-- 设置并行执行的线程数
SET hive.exec.parallel.thread.number=8;
设置合理的参数
通过设置Hive的执行参数,可以优化查询执行的各个环节,提高整体性能。
-- 设置每个Reduce任务处理的数据量
SET hive.exec.reducers.bytes.per.reducer=67108864; -- 64MB per reducer-- 启用动态分区
SET hive.exec.dynamic.partition=true;-- 设置动态分区模式
SET hive.exec.dynamic.partition.mode=nonstrict;-- 启用Map侧聚合
SET hive.map.aggr=true;-- 设置Map侧聚合检查间隔
SET hive.groupby.mapaggr.checkinterval=100000;-- 启用动态分区排序优化
SET hive.optimize.sort.dynamic.partition=true;
性能监控与调优
持续的性能监控与调优是确保Hive查询高效运行的重要步骤。通过使用性能监控工具和分析查询执行计划,可以识别和解决性能瓶颈,提高查询效率。
使用EXPLAIN分析查询计划
EXPLAIN命令可以显示Hive查询的执行计划,包括各个阶段的操作步骤和资源使用情况。通过分析查询计划,可以识别潜在的性能问题并进行优化。
-- 分析查询执行计划
EXPLAIN SELECT product_id, amount FROM sales WHERE year=2023 AND month=6;
执行EXPLAIN命令后,Hive会显示查询的详细执行计划,包括MapReduce任务的数量、数据扫描量、排序和聚合操作等信息。通过分析这些信息,可以识别查询的性能瓶颈,并采取相应的优化措施。
常见性能瓶颈的识别与解决
通过性能监控和查询计划分析,可以识别以下常见的性能瓶颈,并采取相应的解决措施:
- 数据倾斜:如果某些分区或桶中的数据量显著多于其他分区或桶,会导致计算资源不均衡,影响查询性能。解决方法包括重新划分数据、调整分区或桶的数量等。
- 内存不足:如果Map或Reduce任务的内存设置不足,会导致任务失败或性能下降。解决方法是增加内存配置,如提高
mapreduce.map.memory.mb
和mapreduce.reduce.memory.mb
的值。 - 过多的MapReduce任务:如果查询生成了过多的MapReduce任务,会增加任务调度和执行的开销。解决方法包括优化查询写法、减少不必要的操作、合并小文件等。
使用Hive的性能监控工具
Hive集成了多种性能监控工具,可以帮助用户实时监控查询的执行情况,识别和解决性能问题。常见的性能监控工具包括:
- Hadoop资源管理器(ResourceManager):可以监控MapReduce任务的执行情况,包括任务的运行时间、内存使用情况、数据传输量等。
- Ganglia:分布式监控系统,可以实时监控集群的资源使用情况,包括CPU、内存、网络等。
- Nagios:网络监控系统,可以监控Hive和Hadoop集群的运行状态,并在发现问题时发送告警。
相关文章:
![](https://img-blog.csdnimg.cn/direct/243900ae67014e52adca1d6c0c6815fc.png)
Hive查询优化 - 面试工作不走弯路
引言:Hive作为一种基于Hadoop的数据仓库工具,广泛应用于大数据分析。然而,由于其依赖于MapReduce框架,查询的性能可能会受到影响。为了确保Hive查询能够高效运行,掌握查询优化技巧至关重要。在日常工作中,高…...
![](https://img-blog.csdnimg.cn/direct/f35690957256443980a4c6a2bbdf562e.png)
【VUE3】uniapp + vite中 uni.scss 使用 /deep/ 不生效(踩坑记录三)
vite 中使用 /deep/ 进行样式穿透报错 原因:vite 中不支持,换成 ::v-deep 或:deep即可...
![](https://img-blog.csdnimg.cn/direct/65cae820633648a9bfab4e756fc52cf0.png)
容器部署rabbitmq集群迁移
1、场景: 因业务需要,要求把rabbitmq-A集群上的数据迁移到rabbitmq-B集群上,rabbitmq的数据包括元数据(RabbitMQ用户、vhost、队列、交换和绑定)和消息数据,而消息数据存储在单独的消息存储库中。 2、迁移要…...
![](https://img-blog.csdnimg.cn/direct/848e85cda365436b8ff75efb3cb77500.png)
DP:背包问题----0/1背包问题
文章目录 💗背包问题💛背包问题的变体🧡0/1 背包问题的数学定义💚解决背包问题的方法💙例子 💗解决背包问题的一般步骤?💗例题💗总结 ❤️❤️❤️❤️❤️博客主页&…...
![](https://www.ngui.cc/images/no-images.jpg)
React antd umi 监听当前页面离开,在菜单栏提示操作
需求是我这里有个页面,离开当前页面之后,需要在菜单栏显示个提示,也就是Tour const [unblock, setUnblock] useState<() > void>(() > () > {});const [next, setNext] useState();useEffect(() > {const unblockHandler…...
![](https://www.ngui.cc/images/no-images.jpg)
在 Windows PowerShell 中模拟 Unix/Linux 的 touch 命令
在 Unix 或 Linux 系统中,touch 命令被广泛用于创建新文件或更新现有文件的时间戳。不过,在 Windows 系统中,尤其是在 PowerShell 环境下,并没有内置的 touch 命令。这篇博客将指导你如何在 Windows PowerShell 中模拟 touch 命令…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?be=1&origin_url=https://www-file.huawei.com/-/media/corporate/images/news4/2024/q2/240624-3.jpg?la=zh)
鸿蒙NEXT
[中国,东莞,2024年6月24日] 华为开发者大会(HDC)正式开幕,带来全新的 HarmonyOS NEXT、盘古大模型5.0等最创新成果,持续为消费者和开发者带来创新体验。 HarmonyOS NEXT 鸿蒙生态 星河璀璨 鸿蒙生态设备数…...
![](https://img-blog.csdnimg.cn/direct/957de5675c9049ed811c4fdcd720a1a4.png)
VUE3-Elementplus-form表单-笔记
1. 结构相关 el-row表示一行,一行分成24份 el-col表示列 (1) :span"12" 代表在一行中,占12份 (50%) (2) :span"6" 表示在一行中,占6份 (25%) (3) :offset"3" 代表在一行中,左侧margin份数 el…...
![](https://img-blog.csdnimg.cn/direct/9d4eae2f7a494eb8b9b600e5ea911b67.png)
Analyze an ORA-12801分析并行 parallel 12801 实际原因
"ORA-06512: at "PKG_P_DATA", line 19639 ORA-06512: at "PKG_P_DATA", line 19595 ORA-06512: at "PKG_P_DATA", line 14471-JOB 调用 -ORA-12801: error signaled in parallel query server P009, instance rac2:dwh2 (2) Error: ORA-12…...
![](https://img-blog.csdnimg.cn/direct/d50693e2f59a4db6becb80e04536573d.png)
高级运维工程师讲述银河麒麟V10SP1服务器加固收回权限/tmp命令引起生产mysql数据库事故实战
高级运维工程师讲述银河麒麟V10SP1服务器加固收回权限/tmp命令引起生产MySql数据库事故实战 一、前言 作为运维工程师经常会对生产服务器进行安全漏洞加固,一般服务厂商、或者甲方信息安全中心提供一些安全的shell脚本,一般这种shell脚本都是收回权限&…...
![](https://www.ngui.cc/images/no-images.jpg)
昇思25天学习打卡营第09天|sea_fish
打开第九天,本次学习的内容为保存与加载,记录学习的过程。本次的内容少而且简单。 在训练网络模型的过程中,实际上我们希望保存中间和最后的结果,用于微调(fine-tune)和后续的模型推理与部署,因…...
![](https://img-blog.csdnimg.cn/a46466d4ae6541a08ab5856f63d99260.png)
flutter开发实战-Charles抓包设置,dio网络代理
flutter开发实战-Charles抓包设置 在开发过程中抓包,可以看到请求参数等数据,方便分析问题。flutter上使用Charles抓包设置。dio需要设置网络代理。 一、dio设置网络代理 在调试模式下需要抓包调试,所以需要使用代理,并且仅用H…...
![](https://img-blog.csdnimg.cn/direct/e2a4f100ac0845d39991f1ff5b4502f4.png)
Elasticsearch:Runtime fields - 运行时字段(二)
这是继上一篇文章 “Elasticsearch:Runtime fields - 运行时字段(一)” 的续篇。 在查询时覆盖字段值 如果你创建的运行时字段与映射中已存在的字段同名,则运行时字段会隐藏映射字段。在查询时,Elasticsearch 会评估运…...
![](https://www.ngui.cc/images/no-images.jpg)
Python正则表达式的入门用法(上)
Python正则表达式是使用re模块来进行操作的。re模块提供了一组函数,用于进行字符串的匹配和查找操作。 下面是Python中使用正则表达式的一些常用函数: re.search(pattern, string):在字符串中查找并返回第一个匹配的对象。 re.match(patte…...
![](https://img-blog.csdnimg.cn/direct/3f3930842c0f4f80ae32fa4b81413edf.png)
Audio Processing Graphs 管理 Audio Units
Audio Processing Graphs 管理 Audio Units Audio Processing Graphs 管理 Audio UnitsAudio Processing Graph 拥有精确的 I/O UnitAudio Processing Graph 提供线程安全通过 graph "pull" 音频流 Audio Processing Graphs 管理 Audio Units audio processing grap…...
![](https://img-blog.csdnimg.cn/img_convert/eab6381f720aefda4983857459c58095.png)
欧盟,又出了新规-通用充电器新规通用充電器的 RED 修正案如何办理?
欧盟,又出了新规-通用充电器新规通用充電器的 RED 修正案如何办理? 欧盟新规委员会发布《通用充电器指令》指南通用充電器的 RED 修正案办理流程: 2024年5月7日,欧盟委员会发布《通用充电器指令》指南,修订了《无线…...
![](https://img-blog.csdnimg.cn/direct/279ea12a81b34df6bb601247c4ea8f1c.png)
thinkphp6/8 验证码
html和后台验证代码按官方来操作 ThinkPHP官方手册 注意: 如果验证一直失败,看看Session是否开启, 打印dump(session_status());结果2为正确的, PHP_SESSION_DISABLED: Session功能被禁用(返回值为0)。…...
![](https://img-blog.csdnimg.cn/direct/6350206446374058961666a3c6d34661.png)
Ubuntu 22.04 LTS 上安装 MySQL8.0.23(在线安装)
目录 在线安装MySQL 步骤1:更新软件包列表 步骤2:安装MySQL服务器 步骤3:启动MySQL服务 步骤4:检查MySQL状态 步骤5:修改密码、权限 在线安装MySQL 步骤1:更新软件包列表 在进行任何软件安装之前&a…...
![](https://img-blog.csdnimg.cn/img_convert/3ebe88743453f543d30d94cdab2910df.png)
如何选择优质模型?SD3性能究竟如何?
遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答12 厚德提问大佬答第十二期 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux上脚本备份数据库(升级版)
直接上代码: #!/bin/bash# 配置部分 mysql_user"root" mysql_host"localhost" mysql_port"3306" mysql_charset"utf8mb4" mysql_defaults_file"/home/mysql/mysql_back/.my.cnf"backup_base_dir"/mnt/sdd/…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度解析】滑动窗口:目标检测算法的基石
标题:【深度解析】滑动窗口:目标检测算法的基石 目标检测是计算机视觉领域的一个核心任务,旨在识别图像中所有感兴趣的目标,并确定它们的位置和大小。滑动窗口方法作为目标检测中的一种传统技术,虽然在深度学习时代逐…...
![](https://www.ngui.cc/images/no-images.jpg)
约束:对于数据的限制
主键约束 主键约束:唯一约束非空约束,该字段上的数据不能重复且不能为null 注意:一张表必须有且只有一个主键 添加主键约束 -- 方式一(推荐) CREATE TABLE user(username VARCHAR(32) PRIMARY KEY,password VARCHAR(32),nick_name VARCHAR(3…...
![](https://img-blog.csdnimg.cn/direct/15825534638547d4a24d409be9ece22b.png)
【总线】AXI4第七课时:AXI的额外的控制信息(PROT和CACHE)
大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…...
![](https://www.ngui.cc/images/no-images.jpg)
MAVEN 重新配置参考
【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)-阿里云开发者社区 windows 系统环境变量 MAVEN_HOME 也可以改一下...
![](https://img-blog.csdnimg.cn/img_convert/2ef1e56f283e83e426e3c9eee087f3f7.png)
ByteTrack论文阅读笔记
目录 ByteTrack: Multi-Object Tracking by Associating Every Detection Box摘要INTRODUCTION — 简介BYTE算法BYTE算法用Python代码实现实验评测指标轻量模型的跟踪性能 总结SORT算法简介ByteTrack算法和SORT算法的区别 ByteTrack: Multi-Object Tracking by Associating Eve…...
![](https://www.ngui.cc/images/no-images.jpg)
LVS+Keepalived 高可用集群搭建实验
192.168.40.204lvs+keepalivedlvs-k1192.168.40.140lvs+keepalivedlvs-k2192.168.40.150nginx官方教程web-1192.168.40.151nginxepel阿里云源web-2Woo79 | LVS+Keepalived 高可用集群搭建 (图文详解小白易懂) doctor @yang | 生产环境必备的LVS+Keepalived ,超级详细的原理…...
![](https://www.ngui.cc/images/no-images.jpg)
代码随想三刷动态规划篇7
代码随想三刷动态规划篇7 198. 打家劫舍题目代码 213. 打家劫舍 II题目代码 337. 打家劫舍 III题目代码 121. 买卖股票的最佳时机题目代码 198. 打家劫舍 题目 链接 代码 class Solution {public int rob(int[] nums) {if(nums.length1){return nums[0];}if(nums.length2){…...
![](https://img-blog.csdnimg.cn/direct/5c9aedbabfab416693790159f5dea43e.png)
linux应用开发基础知识(八)——内存共享(mmap和system V)
mmap内存映射 内存共享定义 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对…...
![](https://img-blog.csdnimg.cn/img_convert/51a2ad70d541cd49f83e4f36060ac744.jpeg)
上海小程序开发需要进行定制开发吗?
随着互联网技术与移动设备的不断成熟,小程序也已普及到人们日常生活的方方面面。随着企业与互联网联结的愈发深入,小程序的开发可以为企业带来更高效的经营模式,降本增效。那么,上海小程序作为无需安装且开发门槛较低的应用&#…...
![](https://img-blog.csdnimg.cn/img_convert/1e8418f44f605f500f4555a67886137b.png)
Qt开发 | qss简介与应用
文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用:实时打开关闭状态按钮五、QComboBo…...
![](https://img-blog.csdnimg.cn/direct/f7399b87dd3c4b2fbc640c6cb72af22b.png)
模块一SpringBoot(一)
maven记得配置本地路径和镜像 IJ搭建 SpringIntiallizer--》将https://start.spring.io改成https://start.aliyun.com/ 项目结构 Spring有默认配置, application.properties会覆盖默认信息: 如覆盖端口号server.port8888...
![](https://img-blog.csdnimg.cn/direct/81859540f12c4c39ae000867ca9a795a.png)
C语言 | Leetcode C语言题解之第213题打家劫舍II
题目: 题解: int robRange(int* nums, int start, int end) {int first nums[start], second fmax(nums[start], nums[start 1]);for (int i start 2; i < end; i) {int temp second;second fmax(first nums[i], second);first temp;}retur…...
![](https://img-blog.csdnimg.cn/img_convert/5cb872cec91b6b520d035c79d0ac18c5.png)
Linux LVS 负载均衡群集
在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服…...
![](https://www.ngui.cc/images/no-images.jpg)
onTouch()与onTouchEvent()的区别
onTouch()和onTouchEvent()是Android中处理触摸事件的两个重要方法。它们用于不同的场景,并在事件分发机制中扮演不同的角色。以下是它们的详细区别和使用方法: onTouch() 方法 定义:onTouch(View v, MotionEvent event)是View.OnTouchList…...
![](https://img-blog.csdnimg.cn/img_convert/d786b66a35d58c12ce45f058b6833a0b.png)
计算机网络网络层复习题2
一. 单选题(共22题,100分) 1. (单选题)如果 IPv4 数据报太大,会在传输中被分片,对分片后的数据报进行重组的是( )。 A. 中间路由器B. 核心路由器C. 下一跳路由器D. 目的主机 我的答案: D:目的…...
![](https://www.ngui.cc/images/no-images.jpg)
[JS]面向对象ES6
class类 ES6是基于 class关键字 创建类 <script>// 1.定义类class Person {// 公有属性name// 公有属性 (设置默认值)age 18// 构造函数constructor(name) {// 构造函数的this指向实例化对象// 构造函数的作用就是给实例对象设置属性this.name name// 动态添加属性(不…...
![](https://img-blog.csdnimg.cn/direct/0abf9bc1706d4a9d9f15fd3955f1732c.png)
ctfshow web sql注入 web242--web249
web242 into outfile 的使用 SELECT ... INTO OUTFILE file_name[CHARACTER SET charset_name][export_options]export_options:[{FIELDS | COLUMNS}[TERMINATED BY string]//分隔符[[OPTIONALLY] ENCLOSED BY char][ESCAPED BY char]][LINES[STARTING BY string][TERMINATED…...
![](https://img-blog.csdnimg.cn/direct/12e6fd018b634b4fa5eb24d0e6e882a0.png)
发送微信消息和文件
参考:https://www.bilibili.com/video/BV1S84y1m7xd 安装: pip install PyOfficeRobotimport PyOfficeRobotPyOfficeRobot.chat.send_message(who"文件传输助手", message"你好,我是PyOfficeRobot,有什么可以帮助…...
![](https://img-blog.csdnimg.cn/img_convert/91af979e2e1ce66f476329b6e5233aaf.png)
数组-螺旋矩阵
M螺旋矩阵 ||(leetcode59) /*** param {number} n* return {number[][]}*/ var generateMatrix function(n) {const maxNum n * n;let curNum 1;const matrix new Array(n).fill(0).map(() > new Array(n).fill(0));let row 0,column 0;const d…...
![](https://www.ngui.cc/images/no-images.jpg)
GitStack详细配置与使用指南
1.引言 GitStack是一个功能强大的Git服务器管理工具,专为Windows环境设计。它提供了一个用户友好的Web界面,使得在Windows服务器上管理Git仓库变得简单高效。本文将详细介绍GitStack的安装、配置和使用方法,帮助您快速搭建自己的Git服务器。 2.GitStack安装 2.1 系统要求 Wi…...
![](https://img-blog.csdnimg.cn/direct/53c19d76cfcd4251aa47ea4fd6ff1e87.png)
LoadRunner-Virtual User Generator组件学习
重点知识 LR工具是拿C写的,所以它的脚本默认也是C,但是最终生成的脚本不止是C,它是支持C和Java语言的,这个大家要清楚,对本身懂代码的就很友好,你了解java,那就可以把脚本改成java,…...
![](https://img-blog.csdnimg.cn/direct/704afb3941f443afbf51c383eaa047b0.png)
NAT地址转换实验,实验超简单
实验拓扑 实验目的 将内网区域(灰色区域)的地址转换为172.16.1.0 实验过程 配置静态NAT(基于接口的静态NAT) R1配置 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname R1 [R1]un in en I…...
![](https://www.ngui.cc/images/no-images.jpg)
pip常用命令详解
pip 是 Python 的官方第三方包管理工具之一,其为 Python 包的安装与管理提供了极大的便利。本文将详细介绍 pip 的常见命令及其用法,帮助读者更好地利用这一强大的工具。 1. 安装 pip 在开始使用 pip 之前,确保您的系统中已经安装了 pip。p…...
![](https://img-blog.csdnimg.cn/direct/b3603b8a6c9f4f61871a48fb930287ec.png)
vue3从入门到精通
CDN方式使用vue: 获取复杂数据类型: 使用结构复制语法去除vue前缀: 使用模块化开发: 需要安装插件live server: 需要访问网络地址: 简单数据类型ref的使用: 如何修改number reactive修改值不需要.value&…...
![](https://img-blog.csdnimg.cn/direct/12988ef05da34f60a29c3627479a4c9d.png)
kubuadm 方式部署 k8s 集群
准备三台机器 主机名IP地址CPU/内存操作系统版本角色K8S版本Docker版本k8s231192.168.99.2312C4GCentos 7master1.23.1720.10.24k8s232192.168.99.2322C4GCentos 7woker1.23.1720.10.24k8s233192.168.99.2332C4GCentos 7woker1.23.1720.10.24 需要在K8S集群各节点上面安装dock…...
![](https://img-blog.csdnimg.cn/direct/a34e84b6b7264649887d228166a193a8.png)
Android studio 打包低版本的Android项目报错
一、报错内容 Execution failed for task :app:packageRelease. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade> com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "…...
![](https://img-blog.csdnimg.cn/direct/d2ad21d4efa54df5bf99d2bba35f81be.png)
【教程】lighttpd配置端口反向代理
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 1、修改配置文件: sudo vim /etc/lighttpd/lighttpd.conf2、先添加mod_proxy: 3、然后添加端口映射: 4、保存&…...
![](https://img-blog.csdnimg.cn/direct/17e3e402b68742dab2e65b13a0582149.png)
微服务之服务保护策略【持续更新】
文章目录 线程隔离一、滑动窗口算法二、漏桶算法三、令牌桶算法 面试题1、Sentinel 限流和Gateway限流的区别 线程隔离 两种实现方式 线程池隔离(Hystix隔离),每个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU…...
![](https://img-blog.csdnimg.cn/direct/263c73f105074bf9b6e4ca4a00493266.png)
微信小程序的开发
前端:微信小程序开发的技术 后端:springboot的框架 一:微信小程序环境的搭建 1. 访问微信开发者官⽅⽹站的⼩程序开发⼯具下载⻚⾯。 2. 根据你的操作系统(Windows、macOS或Linux)选择合适的版本进⾏下载。 3. 下…...
![](https://www.ngui.cc/images/no-images.jpg)
Oracle中CREATE FORCE VIEW的说明和例子
Oracle数据库中的CREATE FORCE VIEW语句用于创建视图,即使在视图所依赖的基表或对象不存在,或者创建视图的用户对这些对象没有足够的权限时,也能强制创建视图。不过,需要明确的是,尽管视图能被强制创建,但在…...
![](https://img-blog.csdnimg.cn/img_convert/cc5126d87900c9ed923f0dd5167ac8a4.png)
预约停车位app小程序模板
简单的手机预约停车位,在线停车位,预约停车管理小程序页面模板。包含:主页、预约停车、预约管理、地图导航等。 预约停车位app小程序模板...
![](https://www.ngui.cc/images/no-images.jpg)
深入解析怀庄之醉酱酒的独特魅力
在众多美酒中,酱酒以其独有的风格和丰富的文化内涵,赢得了无数鉴赏家的青睐。本文旨在从专业角度深入探讨酱酒的空杯留香现象、典型色泽特性及品鉴技巧,揭示其背后的科学原理与艺术魅力,助您更全面地理解与欣赏这一中华传统佳酿。…...
![](https://i-blog.csdnimg.cn/direct/0857171df33d4415b8b9240403f31d5a.png)
数据结构1:C++实现边长数组
数组作为线性表的一种,具有内存连续这一特点,可以通过下标访问元素,并且下标访问的时间复杂的是O(1),在数组的末尾插入和删除元素的时间复杂度同样是O(1),我们使用C实现一个简单的边长数组。 数据结构定义 class Arr…...
![](https://i-blog.csdnimg.cn/direct/2c40f17f87a14dd697e7c2d5d522dd55.png)
转发服务器实验
首先先克隆一个虚拟机并完成ip地址的修改 nmcli connection modify ens160 ipv4.addresses 192.168.209.128/24 nmcli connection modify ens160 ipv4.method manual nmcli connection modify ens160 connection.autoconnect yes nmcli connection up ens160 nmcli connection…...
![](https://i-blog.csdnimg.cn/direct/9b399bd97de04568b70344739637eafe.png)
CSS 【详解】样式选择器(含ID、类、标签、通配、属性、伪类、伪元素、Content属性、子代、后代、兄弟、相邻兄弟、交集、并集等选择器)
CSS 样式选择器,用于选中页面中的 html 元素,以便添加 CSS 样式。 按渲染性能由高到低 依次是: ID 选择器 #id 通过元素的 id 属性选中元素,区分大小写 <p id"p1" >第一段</p>#p1{color: red; }但不推荐使…...
![](https://i-blog.csdnimg.cn/direct/ca0b1a4366c343c79a8250edc42dceb7.png)
进程控制-exec函数
让父子进程来执行不相干的操作 能够替换进程地址空间的代码.text段 执行另外的程序,不需要创建额外的的地址空间 当前程序中调用另外一个应用程序 指定执行目录下的程序 int execl(const char *path, const char *arg,/* (char *) NULL */); /* pat…...
![](https://www.ngui.cc/images/no-images.jpg)
将生活与出行融合揽境凭什么可以做到?
中国消费者对SUV的钟爱与热衷,堪称市场中的一股强大潮流。他们对其的认可,不仅仅停留在功能性的满足,更是对品质、品味与生活态度的追求。SUV所代表的宽敞空间、卓越通过性和引人注目的外观,恰恰迎合了中国消费者对于舒适、实用与时尚并重的需求。从整个SUV市场来看,30万级…...
![](https://www.ngui.cc/images/no-images.jpg)
汽车智能化时代国产芯片加速“上车”
21世纪经济报道记者倪雨晴、实习生朱梓烨 深圳、广州报道随着汽车行业朝着电动化与智能化的方向发展,汽车芯片的重要性也越发凸显,市场需求也同步大量增长。“2023年,中国车用半导体中的中国品牌市场份额约在10%。我们预测到2030年左右,中国品牌在中国市场的份额应该有机会…...
![](https://img-blog.csdnimg.cn/direct/d22eab445ba14ba3b620d4885f847f38.png)
0基础认识C语言(理论+实操 2)
小伙伴们大家好,今天也要撸起袖子加油干!万事开头难,越学到后面越轻松~ 话不多说,开始正题~ 前提回顾: 接上次博客,我们学到了转义字符,最后留下两个转义字符不知道大家有没有动手尝试了一遍&a…...
![](https://img-blog.csdnimg.cn/direct/bb6a9d9627b647389753ab039affe5b3.png)
服务器内存与CPU要占用多少才合理?
一 通常服务器内存占用多少合理?cpu占用多少才合理? 1 通常配置范围建议: 建议CPU使用率不高于80%;内存使用率不高于80%; 注意:具体情况还需要根据服务器的实际负载和应用场景来判断。 2 内存使用率&…...
![](https://www.ngui.cc/images/no-images.jpg)
Flutter 中的 CompositedTransformTarget 小部件:全面指南
Flutter 中的 CompositedTransformTarget 小部件:全面指南 在Flutter的动画和高级布局系统中,CompositedTransformTarget是一个与CompositedTransformFollower配合使用的组件,用于创建硬件加速的跟随动画和视差效果。这种类型的动画通常用于…...
![](https://img-blog.csdnimg.cn/direct/09453f119e66461cb0786474ea30ca1e.png)
DETR整体模型结构解析
DETR流程 Backbone用卷积神经网络抽特征。最后通过一层1*1卷积转化到d_model维度fm(B,d_model,HW)。 position embedding建立跟fm维度相同的位置编码(B,d_model,HW)。 Transformer Encoder,V为fm,K,Q为fm…...