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

数据仓库: 8- 数据仓库性能优化

CSDN 目录展示

目录

    • 8- 数据仓库性能优化
      • 8.1 查询优化
        • 8.1.1 索引优化
        • 8.1.2 分区和分桶
        • 8.1.3 使用缓存
        • 8.1.4 查询简化与重写
        • 8.1.5 聚合优化
        • 8.1.6 并行化和分布式计算
        • 8.1.7 基于列存储的优化
        • 8.1.8 表的分区和数据清洗
        • 8.1.9 查询提示 (Hints)
        • 8.1.10 自动调优工具
      • 8.2 索引设计
        • 8.2.1 索引的作用
        • 8.2.2 数据仓库中索引的常见类型
        • 8.2.3 索引设计原则
        • 8.2.4 索引设计中的常见问题
        • 8.2.5 索引设计案例
        • 8.2.6 数据仓库与传统OLTP索引的区别
        • 8.2.7 索引设计工具与方法
      • 8.3 数据倾斜处理
        • 8.3.1 数据倾斜的定义
        • 8.3.2 理解数据倾斜的原因
        • 8.3.3 数据倾斜的识别
        • 8.3.4 数据倾斜的处理方法
        • 8.3.5 示例 (Spark)
        • 8.3.6 总结
      • 8.4 资源管理
        • 8.4.1 资源管理的目标
        • 8.4.2 数据仓库资源管理的资源分类
        • 8.4.3 数据仓库资源管理的关键技术
          • 1. 资源分配与隔离
          • 2. 资源调度
          • 3. 并发控制
          • 4. 数据分区分片
          • 5. 缓存管理
          • 6. 压缩与存储优化
        • 8.4.4 常用资源管理工具与框架
          • 1. Hadoop YARN
          • 2. Apache Mesos
          • 3. Kubernetes
          • 4. Spark Resource Manager
          • 5. 数据仓库工具内置管理功能
        • 8.4.5 资源管理中的常见问题与优化措施
          • 1. 问题
          • 2. 优化措施
        • 8.4.6 案列分析
          • 案例1: 大数据批处理任务资源管理
          • 案例2: 热点查询的内存优化
        • 8.4.7 总结
      • end

8- 数据仓库性能优化

8.1 查询优化

在数据仓库中, 查询优化是性能优化的核心, 直接影响数据检索的速度和效率 ;

优化查询可以通过多种方法来提高性能, 确保在查询数据量较大时, 系统仍然能够快速响应 ;

8.1.1 索引优化
  • 创建合适的索引: 建立合理的索引可以显著提高查询速度, 特别是在使用 WHEREJOIN 语句过滤大量数据时 ; 索引的选取应基于查询中经常使用的列, 但避免过多索引以免造成插入和更新的性能开销 ;
  • 选择性索引: 在高选择性字段 (即不同值多、重复值少的字段) 上建立索引效果最好, 如 idname 等主键或唯一标识符 ;
8.1.2 分区和分桶
  • 分区表: 将表按某些字段 (如: 日期、区域) 分区, 允许查询在较小的数据集上进行操作, 显著加快查询速度 ; 在 Hive、Impala 等工具中, 分区是一种常用的优化方式 ;
  • 分桶: 将数据按字段分为多个桶 (通常使用 HASH 函数) 可以有效支持 JOIN 操作; 在分桶的情况下, 同样的 JOIN 字段的数据会放到相同的桶中, 从而加速查询 ;
8.1.3 使用缓存
  • 结果缓存: 对于频繁查询的相同数据, 可利用缓存 (如 Memcached、Redis) 减少数据库查询频率, 提升响应速度 ;
  • 中间结果缓存: 在数据仓库中, 复杂查询的中间结果可以缓存 (如 Materialized View 或临时表) 以便复用, 避免重复计算 ;
8.1.4 查询简化与重写
  • 避免SELECT * : 在查询中明确指定所需字段, 减少不必要的数据传输量 ;
  • 优化JOIN 和子查询: 调整JOIN 语句的顺序和类型, 选择性能更高的 INNER JOINLEFT JOIN ; 子查询可以尝试重写为 JOINWITH 子句以提高效率 ;
  • 过滤条件下推: 将过滤条件尽可能前置到底层表扫描阶段以减少数据扫描量; 例如, 在JOIN 前增加 WHERE 条件 ;
8.1.5 聚合优化
  • 预计算聚合结果: 对经常使用的聚合计算 (如 SUMAVG) 进行预计算, 存储在中间表或试图中 ;

  • 使用数据立方体(CUBE): 在某些查询引擎中, 可以使用 CUBEROLLUP 进行多维聚合操作, 避免重复计算 ;

8.1.6 并行化和分布式计算
  • 并行查询: 利用数据仓库的并行计算功能, 特别是在大规模数据处理平台(如 Hadoop、Spark) 上, 将查询分解为多个并行任务, 显著加速处理速度 ;
  • 分布式计算: 对于大数据量, 分布式数据仓库 (如 Snowflake、BigQuery) 可以通过将数据和计算任务分布到多个节点, 提高查询效率 ;
8.1.7 基于列存储的优化
  • 列式存储格式: 在数据仓库中使用列式存储格式 (如: Parquet、ORC) 能显著减少 I/O 读取量, 因为只需读取查询涉及的列数据, 特别适合分析型查询 ;
  • 数据压缩: 列式存储格式通常带有数据压缩功能, 在减少存储的同时还可以提高读取效率 ;
8.1.8 表的分区和数据清洗
  • 按时间分区: 对于时间序列数据, 将表按时间( 如 天、月) 分区, 并对老旧数据进行归档或删除, 减少活跃数据的量 ;
  • 去除冗余和脏数据: 对表数据进行清洗, 剔除无效数据, 能减少扫描量并提升查询效率 ;
8.1.9 查询提示 (Hints)
  • 在一些 SQL 查询引擎中 (如 Oracle) , 可以通过使用 HINT 指定查询策略 (如使用特定的索引或表扫描方式) , 从而控制查询执行计划以获得更高性能 ;
8.1.10 自动调优工具
  • 数据库调优工具: 许多数据仓库管理系统 (如 SQL Server 的自动调优功能) 可以提供索引建议、查询分析和执行计划优化, 帮助进一步提升查询性能 ;

通过以上优化措施, 数据仓库的查询性能可以显著提升, 确保在大数据量、高并发查询场景下仍能保持快速响应和稳定性 ;

8.2 索引设计

在数据仓库性能优化中, 索引设计 是一个关键环节, 可以显著提高查询效率和降低响应时间 ;

8.2.1 索引的作用

索引是数据库中用于快速查找数据的结构, 通过减少全表扫描的需求, 提升查询性能; 在数据仓库中, 索引主要优化以下场景:

  • 快速定位数据: 提升 SELECT 语句的效率 ;
  • 加速聚合查询: 如SUM、COUNT、AVG等操作 ;
  • 提高排序性能: ORDER BY 或 GROUP BY查询 ;
8.2.2 数据仓库中索引的常见类型
  1. 唯一索引: 确保列中的数据唯一性, 适用于主键或唯一约束列 ;
  2. 非唯一索引: 加速频繁查询但不需要唯一约束的字段, 适用于数据分析的维度查询 ;
  3. 聚簇索引: 数据存储顺序与索引顺序一致, 适用于范围查询和排序操作 ;
  4. 非聚簇索引: 索引结构独立于数据表, 适合随机查询和小范围数据的检索 ;
  5. Bitmap索引: 数据仓库常用, 针对低基数(如性别、地区) 的字段优化查询性能 ; 优点: 占用空间少, 适合多列组合过滤; 缺点: 不适合频繁更新的数据 ;
  6. 分区索引: 结合表分区, 将索引按分区存储, 适合大规模数据分区管理 ;
  7. 覆盖索引: 仅包含查询所需列, 减少磁盘访问次数 ;
8.2.3 索引设计原则
  1. 基于查询需求设计
    • 分析常见查询条件(WHERE子句)
    • 选择高频率、过滤性强的字段作为索引列
  2. 避免过多索引
    • 索引需要维护, 过多索引会增加数据插入、更新和删除的开销
    • 平衡读取性能和写入性能
  3. 考虑列的基础
    • 高基数字段 (如用户ID) : 适合 B-Tree索引
    • 低基数字段 (如性别) : 适合Bitmap索引
  4. 多列组合索引
    • 优化多条件查询 (WHERE col1 AND col2)
    • 列顺序需根据查询频率排列, 最常用的列放在前面
  5. 避免索引冗余
    • 不重复创建覆盖已有索引功能的索引
  6. 动态优化索引
    • 基于查询日志分析实际使用情况, 移除未使用索引或调整索引结构
8.2.4 索引设计中的常见问题
  1. 查询未命中索引
    • 查询未按索引顺序使用字段
    • 使用函数或计算, 如 WHERE UPPER(name) = 'JOHN'
  2. 索引失效
    • 索引字段类型与查询类型不匹配
    • 查询条件模糊, 如 LIKE '%keyword%'
  3. 高频更新导致索引开销
    • 索引频繁更新可能拖慢写入速度
8.2.5 索引设计案例
  1. 优化查询性能
    • 表: 销售数据表 ;
    • 查询: 根据销售日期和地区统计销售额 ;
    • 索引建议: 为 sales_dateregion 字段建立组合索引, 先以 sales_date 为主列 ;
  2. 多条件复杂过滤
    • 表: 用户行为日志表 ;
    • 查询: 根据 user_idevent_type 快速定位日志 ;
    • 索引建议: 建立Bitmap索引, 适配高效多条件过滤 ;
8.2.6 数据仓库与传统OLTP索引的区别
  • 查询频率: 数据仓库更注重读性能, 索引设计偏向复杂查询优化 ;
  • 更新频率: 数据仓库数据更新较少, 可使用更多低基数索引 (如 Bitmap) ;
  • 索引类型: 数据仓库常用分区索引和Bitmap索引, 而OLTP主要使用B-Tree ;
8.2.7 索引设计工具与方法
  • 工具: EXPLAIN语句、查询优化器、性能监控工具 ;
  • 方法: 通过查询分析器定位慢查询, 逐步调整索引 ;

通过合理的索引设计, 可以显著提升数据仓库的查询效率, 降低系统资源占用, 并优化用户体验 .

8.3 数据倾斜处理

在数据仓库性能优化中, 数据倾斜处理是一个关键问题, 因为数据倾斜会导致查询或计算任务的执行效率显著下降, 甚至导致任务失败;

8.3.1 数据倾斜的定义

数据倾斜: 是指在数据分布过程中, 某些数据节点 (分区或任务) 上的数据量远远多于其它节点, 导致任务的执行时间取决于最慢的节点 ;

常见的倾斜场景包括:

  • 某字段值过于集中 (如用户ID中大量重复值) ;
  • 数据分区方式导致某些分区存储了过多的数据 ;
  • 键值分布不均匀, 聚合或链接操作时部分键值过大 ;
8.3.2 理解数据倾斜的原因

数据倾斜通常由一下几个原因引起:

  • Key 分布不均匀: 在进行 shuffle 操作 (例如 JOIN、GROUP BY、DISTINCT 等) 时, 如果某些 key 的数据量特别大, 就会导致数据倾斜 ;
  • 数据本身的特性: 某些数据本身就存在倾斜, 例如某些用户的访问量远高于其他用户 ;
  • 不合理的 SQL 语句: 一些不合理的 SQL 语句也可能导致数据倾斜, 例如使用大量的子查询或复杂的JOIN 条件 ;
8.3.3 数据倾斜的识别
  • 观察作业执行时间: 如果某个作业的执行时间明显长于预期, 则可能存在数据倾斜 ;
  • 查看作业执行日志: 作业执行日志中通常会记录每个任务的执行时间和数据量, 可以从中发现数据倾斜的节点 ;
  • 使用监控工具: 一些数据仓库平台提供监控工具, 可以实时监控作业的执行情况, 并识别数据倾斜 ;
8.3.4 数据倾斜的处理方法
  • 预聚合 (Pre-aggregation): 对于一些常用的聚合操作, 可以预先计算并将结果存储起来, 避免在查询时进行大量的计算 ;
  • 过滤小表 (Filtering Small Tables): 在进行 JOIN 操作时, 如果其中一个表的数据量很小, 可以先将其广播到所有节点, 避免数据倾斜 ;
  • 增加 Reduce 的数量: 增加 Reduce 的数量可以将数据分散到更多的节点上, 减轻数据倾斜的影响 ;
  • 使用随机 Key: 在进行 JOIN 或 GROUP BY 操作时, 可以为 key 添加一个随机数, 将数据分散到不同的节点上 ;
  • 使用倾斜优化参数: 一些数据仓库平台提供专门的倾斜优化参数, 可以根据具体情况进行调整 ;
  • 调整数据分布: 重新设计表的分区键或分桶键, 使数据更均匀地分布到各个节点上 ;
  • 优化 SQL 语句: 避免使用复杂的 JOIN 条件或子查询, 尽量简化 SQL 语句 ;
8.3.5 示例 (Spark)
// 使用 随机 Key 解决数据倾斜
val saltedData = data.map(x => (Random.nextInt(100) + "_" + x._1, x._2))// 增加 Reduce 的数量
sqlContext.setConf("spark.sql.shuffle.partitions", "200")
8.3.6 总结

数据倾斜是数据仓库性能优化中的一个常见问题, 需要结合具体业务场景、数据分布特点以及查询模式来选择合适的解决方案 ; 理解数据倾斜的原因、识别数据倾斜的节点, 并采取相应的措施, 可以有效提高数据仓库的查询性能 .

8.4 资源管理

资源管理 是数据仓库性能优化的重要组成部分, 目的是通过合理分配和调控计算、存储、内存等资源, 提升数据仓库的整体运行效率, 同时降低成本和资源浪费 ;

8.4.1 资源管理的目标
  • 提升性能: 确保关键任务优先完成, 减少资源竞争 ;
  • 保障稳定性: 避免因资源不足导致任务失败或系统崩溃 ;
  • 优化成本: 合理分配资源, 避免浪费或过度分配 ;
  • 提高并发性: 支持多个任务同时执行 ;
8.4.2 数据仓库资源管理的资源分类
  • 计算资源
    • CPU核数
    • GPU加速 (如适用)
  • 存储资源
    • 磁盘空间 (本地或分布式存储, 如HDFS)
    • 数据压缩和分区策略
  • 内存资源
    • 用于缓存、查询优化、临时表存储等
  • 网络资源
    • 数据节点间的传输带宽
    • 分布式计算的网络性能
  • 作业列队和并发控制
    • 控制任务的优先级和排队规则
8.4.3 数据仓库资源管理的关键技术
1. 资源分配与隔离
  • 静态分配: 资源在任务运行前预先分配, 例如为每个用户或部门分配固定的资源配额 ;
  • 动态分配: 根据任务的优先级和运行状态实时调整资源 ;
  • 资源隔离: 通过 队列 (Queue) 或 容器化 (如Kubernetes) 实现, 确保不同用户或任务之间互不干扰 ;
2. 资源调度
  • 任务优先级: 优先调度关键业务任务 (如实时数据查询) , 延迟非关键任务 (如批处理任务) ;
  • 时间窗口调度: 根据业务需求设定高峰时段和非高峰时段的资源使用规则 ;
  • 多租户支持: 为不同用户、团队或部门分配资源上限, 支持多租户场景 ;
3. 并发控制
  • 限制同时运行的查询或任务数量, 避免资源争用 ;
  • 动态调整并发数, 根据当前系统负载情况优化 ;
4. 数据分区分片
  • 对大规模数据集进行水平或垂直分区, 减少单次查询的数据量 ;
  • 分片技术将数据均匀分布到每个节点, 防止数据倾斜 ;
5. 缓存管理
  • 利用内存或分布式缓存 (如 Redis、Memcahed) 加速热点查询 ;
  • 自动淘汰冷数据, 释放内存资源 ;
6. 压缩与存储优化
  • 压缩算法 (如 Parquet、ORC格式) 减少存储开销 ;
  • 分层存储 (如冷热数据分层) 降低高频查询的I/O延迟 ;
8.4.4 常用资源管理工具与框架
1. Hadoop YARN
  • 提供资源调度和任务管理
  • 支持动态资源分配与隔离
2. Apache Mesos
  • 提供分布式资源管理
  • 可支持多种框架 (如Spark、Hadoop)
3. Kubernetes
  • 基于容器技术实现资源隔离
  • 动态扩展计算资源, 支持弹性伸缩
4. Spark Resource Manager
  • 在分布式环境中管理内存、CPU和执行器资源
  • 与YARN或Kubernetes集成
5. 数据仓库工具内置管理功能
  • 如Amazon Redshift、Google BigQuery、Snowflake 等云数据仓库, 通常内置智能资源管理功能, 包括查询优化和自动扩展
8.4.5 资源管理中的常见问题与优化措施
1. 问题
  1. 资源不足: 高并发或大规模计算任务时, 系统资源耗尽
  2. 资源浪费: 任务的资源分配过大, 导致未充分利用
  3. 资源争用: 多个任务同时运行时争夺资源, 影响性能
  4. 单点瓶颈: 某节点过载, 而其它节点空闲
2. 优化措施
  • 资源池化: 将资源池化, 按需动态分配
  • 负载均衡: 调整任务分配策略, 避免单节点过载
  • 弹性扩展:在高峰时段增加资源, 在低峰时段释放资源
  • 监控与报警: 实时监控系统资源使用情况, 预警资源耗尽风险
8.4.6 案列分析
案例1: 大数据批处理任务资源管理
  • 场景: 每日定时运行批量数据分析任务, 占用大量计算资源
  • 优化措施:
    • 调整任务运行时间到非高峰时段
    • 使用分布式调度工具 (如Apache Airflow) 动态分配资源
    • 提起缓存热点数据, 减少计算需求
案例2: 热点查询的内存优化
  • 场景: 实时查询任务占用大量内存, 导致批处理任务无法运行
  • 优化措施:
    • 设置查询优先级, 高频查询分配更多资源
    • 使用分布式缓存存储查询结果, 减少重复计算
8.4.7 总结

数据仓库的资源管理是一个复杂的系统工程, 涵盖了计算、存储、内存、网络等多个维度;

通过合理的资源分配、任务调度、并发控制和存储优化, 可以显著提升数据仓库的性能和稳定性, 为企业提供更高效的数据支持 .

end

相关文章:

数据仓库: 8- 数据仓库性能优化

CSDN 目录展示 目录 8- 数据仓库性能优化8.1 查询优化8.1.1 索引优化8.1.2 分区和分桶8.1.3 使用缓存8.1.4 查询简化与重写8.1.5 聚合优化8.1.6 并行化和分布式计算8.1.7 基于列存储的优化8.1.8 表的分区和数据清洗8.1.9 查询提示 (Hints)8.1.10 自动调优工具 8.2 索引设计8.2…...

如何使用GCC手动编译stm32程序

如何不使用任何IDE(集成开发环境)编译stm32程序? 集成开发环境将编辑器、编译器、链接器、调试器等开发工具集成在一个统一的软件中,使得开发人员可以更加简单、高效地完成软件开发过程。如果我们不使用KEIL,IAR等集成开发环境,…...

2023年MathorCup高校数学建模挑战赛—大数据竞赛B题电商零售商家需求预测及库存优化问题求解全过程文档及程序

2023年MathorCup高校数学建模挑战赛—大数据竞赛 B题 电商零售商家需求预测及库存优化问题 原题再现: 电商平台存在着上千个商家,他们会将商品货物放在电商配套的仓库,电商平台会对这些货物进行统一管理。通过科学的管理手段和智能决策&…...

不可分割的整体—系统思考的微妙法则

不可分割的整体——系统思考的微妙法则 作为企业领导者,我们经常需要做出决策,但有时候,我们会忽略一个事实:每个决策都不是孤立的,它背后都是一个复杂系统的一部分。 无论是市场动态、团队协作,还是产品…...

使用Grafana K6来测测你的系统负载能力

背景 近期我们有个号称会有很高很高并发的系统要上线,为了测试一下自己开发的系统的负载能力,准备了点海克斯科技,来看看抗不抗的住。 之前笔者写过用Apache JMeter进行压力测试的文章(传送门👉:https://…...

ENSP IPV6-over-IPV4

IPv6是网络层协议的第二代标准协议,一个IPv6地址同样可以分为网络前缀和主机ID两个部分。 可以将IPV4的网络看成IPV6的承载网,只有IPv4网络是连通的,则IPv6网络才有可能连通。所以配置的时候需要先配置IPv4网络的路由功能,再配IP…...

FLASH分区---FAT分区添加操作

1、板卡配置 注意:使用fat文件系统的时候,必须download进去一个fat系统的镜像 fat.img 0xee0000 注意:需要打开fat宏定义(涉及到底层,必须开,否则无法创建文件) 2、板卡.c 配置 修改分区大小、增…...

javax.xml.ws.soap.SOAPFaultException: ZONE_OFFSET

javax.xml.ws.soap.SOAPFaultException 表示 SOAP 调用过程中发生了错误,并且服务端返回了一个 SOAP Fault。 错误信息中提到的 ZONE_OFFSET 可能指的是时区偏移量。在日期和时间处理中,时区偏移量是指格林威治标准时间 (GMT) 的偏移量。如果服务期望特…...

针对解决conda环境BUG的个人笔记

1-conda学习&安装 安装视频: 零基础教程:基于Anaconda和PyCharm配置Pytorch环境_哔哩哔哩_bilibili 安装过程: MX250笔记本安装Pytorch、CUDA和cuDNN-CSDN博客 Win10MX250CUDA10.1cuDNNPytorch1.4安装测试全过程(吐血)_nvidia geforc…...

代理IP与百度在信息时代的交互

目录 一、代理IP的基本概念和工作原理 二、代理IP在百度搜索中的多重作用 解决网络延时问题,提高搜索速度 提高网络安全 隐藏用户的真实IP地址,保护个人隐私 突破访问限制,拓宽网络视野 三、代理IP在百度关键词排名优化中的应用 模拟…...

10、PyTorch autograd使用教程

文章目录 1. 相关思考2. 矩阵求导3. 两种方法求jacobian 1. 相关思考 2. 矩阵求导 假设我们有如下向量: y 1 3 x 1 5 [ w T ] 5 3 b 1 3 \begin{equation} y_{1\times3}x_{1\times5}[w^T]_{5\times3}b_{1\times3} \end{equation} y13​x15​[wT]53​b13​​…...

Flink随笔 20241129 流数据处理:以生产线烤鸡为例理解 Flink

流数据(streaming data)就像是一条永不停歇的生产线,源源不断地向前推进,带来新的数据。而 Apache Flink 就是这条生产线的核心,它负责对数据进行处理、分类、聚合和存储。为了更好地理解 Flink 的流处理,我…...

Web day02 Js Vue Ajax

目录 1.javascript: 1.js的引入方式: 2.js变量 & 数据类型 & 输出语句: 模板字符串: 3.函数 & 自定义对象: 4. json 字符串 & DOM操作: 5. js事件监听: 6.js的模块化导入或者导出&a…...

Vue的生命周期

Vue.js 的生命周期是指一个 Vue 实例从创建到销毁的整个过程。在这个过程中,Vue 会提供一系列的钩子函数(也称为生命周期钩子),开发者可以在这些钩子中执行特定的操作。理解 Vue 的生命周期对于编写高效、可维护的 Vue 应用至关重…...

【LeetCode热题100】优先级队列

这盘博客记录了关于优先级队列的几道题&#xff0c;包括最后一块石头的重量、数据流中的第K大元素、前K个高频单词、数据流的中位数。 class Solution { public:int lastStoneWeight(vector<int>& stones) {priority_queue<int> heap;for(auto s : stones) hea…...

用go语言写一个小服务

文章目录 简介重新想到go 小服务main.go部署测试 结束语 简介 golang的优势 响应速度&#xff1a; Go > Java > Python 内存占用&#xff1a; Go < Java < Python 从java转go&#xff0c;然后go又转java&#xff0c;感觉就是go虽然在编译、内存占用都强于java&am…...

shell编程练习巩固

一、用shell写出一个简单的计算器。 其实用shell写个简单的计算器还是很简单&#xff0c;我们不用构建那么复杂的计算功能&#xff0c;只需要复现出简单的加减乘除取余即可。 既然是计算器就要明确一下思路&#xff1a; 用户可以输入一个数字根据数字选择加、减、乘、除、取…...

pytest+allure生成报告显示loading和404

pytestallure执行测试脚本后&#xff0c;通常会在电脑的磁盘上建立一个临时文件夹&#xff0c;里面存放allure测试报告&#xff0c;但是这个测试报告index.html文件单独去打开&#xff0c;却显示loading和404, 这个时候就要用一些办法来解决这个报告显示的问题了。 用命令产生…...

从数据孤岛到数据协同:企业如何构建安全的数据共享生态?

聚焦数据协作与隐私保护技术&#xff0c;探索企业如何在共享中保持安全性。 导读 在数字经济时代&#xff0c;数据已成为企业最宝贵的战略资源。然而&#xff0c;传统的"数据孤岛"模式正阻碍企业价值创新。本文将深度解析如何突破数据壁垒&#xff0c;构建安全高效的…...

数据采集中,除了IP池的IP被封,还有哪些常见问题?

在数据采集的过程中&#xff0c;代理IP池的使用无疑为我们打开了一扇通往信息宝库的大门。然而&#xff0c;除了IP被封禁这一常见问题外&#xff0c;还有许多其他问题可能影响数据采集的效果。本文将探讨在数据采集中&#xff0c;除了IP被封之外&#xff0c;还可能遇到的一些常…...

数据结构--数组

目录 1 定义 1.1 数组内存结构 1.2二维数组 2 练习 2.1 将数组内两个区间内有序元素合并 2.2 leetcode88. 合并两个有序数组 3 缓存与局部性原理 1 定义 1.1 数组内存结构 1 2 3 5 6 给数组添加元素时&#xff0c;应将原来添加位置的元素和之后的元素进行复制 System…...

基础入门-Web应用架构搭建域名源码站库分离MVC模型解析受限对应路径

知识点&#xff1a; 1、基础入门-Web应用-域名上的技术要点 2、基础入门-Web应用-源码上的技术要点 3、基础入门-Web应用-数据上的技术要点 4、基础入门-Web应用-解析上的技术要点 5、基础入门-Web应用-平台上的技术要点 一、演示案例-域名差异-主站&分站&端口站&…...

屏幕触控支持指纹

一、前端navigator.maxTouchPoints获取屏幕是否支持触控。 二、navigator.maxTouchPoints c接口修改。 1、third_party\blink\renderer\core\events\navigator_events.idl // https://w3c.github.io/pointerevents/#extensions-to-the-navigator-interface[ImplementedAsNavi…...

大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集

大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO&#xff0c;VOC&#xff0c;COCO格式标注&#xff0c;4070张图片的数据集 数据集分割 4070总图像数 训练组 87&#xff05; 3551图片 有效集 9&#xff05; 362图片 测试集 4% 157图片 预处理 自动定向…...

力扣第 74 题是 搜索二维矩阵

题目描述 给定一个 m x n 的矩阵 matrix 和一个目标值 target&#xff0c;请你编写一个函数来判断目标值 target 是否在矩阵中。 每行的元素按升序排列。每列的元素按升序排列。 示例 1 输入&#xff1a; matrix [[1, 4, 7, 11],[2, 5, 8, 12],[3, 6, 9, 16],[10, 13, 14…...

JavaScript实用工具lodash库

Lodash中文文档: Lodash 简介 | Lodash中文文档 | Lodash中文网 Lodash是一个功能强大、易于使用的JavaScript实用工具库&#xff0c;它提供了丰富的函数和工具&#xff0c;能够方便地处理集合、字符串、数值、函数等多种数据类型。通过使用Lodash&#xff0c;开发者可以大幅…...

MySQL之JDBC

我们在学习完了数据库的基本操作后&#xff0c;希望和我们的Java程序建立连接&#xff0c;那么我们今天就来一探究竟JDBC是如何让Java程序与数据库建立连接的 1. 什么是JDBC JDBC&#xff08;Java Data Base Connectivity, Java数据库连接&#xff09; 是Java程序和数据库之间…...

家校通小程序实战教程04教师管理

目录 1 创建数据源2 搭建管理后台3 搭建查询条件4 功能测试总结 我们上一篇介绍了如何将学生加入班级&#xff0c;学生加入之后就需要教师加入了。教师分为任课老师和班主任&#xff0c;班主任相当于一个班级的管理员&#xff0c;日常可以发布各种任务&#xff0c;发布接龙&…...

vitess使用记录:vtctldclient,设置分表规则

继续探索未完成的事情。 vitess使用记录系列已经写了好几篇了&#xff0c;记录了在测试过程中遇到的各种问题。《vitess使用&#xff1a;从部署到go客户端连接查询》、《vitess使用记录&#xff1a;vtctldclient》、《vitess使用&#xff1a;基于源码运行vtctldclient工具》整…...

Windows利用conda安装gpu版本Faiss + Ubuntu源码安装Faiss-gpu 记录(待更新~)

前言 由于在cpu上使用对向量检索算法时&#xff0c;发现面对数据量较大时&#xff0c;批量匹配耗时会显著增加&#xff0c;影响业务整体响应。便尝试使用GPU来实现检索计算&#xff0c;限于本人技术有限&#xff0c;写不出好算法。便取巧利用Faiss-gpu来检索(* ^ ▽ ^ *) 以下…...

react学习记录

目录结构react优秀代码之react目录结构简洁之道React 作为一个库&#xff0c;不会决定你如何组织项目的结构。这是件好事&#xff0c;因为这样 - 掘金【React】项目的目录结构全面指南_react项目结构-CSDN博客 生命周期【React 面经】生命周期详解&#xff1a;不同阶段与方法解…...

MaskRCNN训练自己的数据集

一. 数据标注 1. 安装labelme软件 conda install labelme2. 运行labelme # 命令行中直接输入 labelme3. 标注 二、训练数据处理 1. 在根目录下创建datasets/demo1文件夹&#xff0c;创建如下几个文件夹 2. 将标注好的.json文件放在json文件夹中 3. 原图放在pic文件夹中 4. …...

metawrap bin_refinement输入checkm数据库地址

这是运行metawrap bin_refinement -o bin_refinement -t 30 -A binning/metabat2_bins/ -B binning/maxbin2_bins/ -C binning/concoct_bins/ -c 50 -x 10 时遇到的报错&#xff08;在命令行跑的时候遇到的&#xff09; 参考metaGEM使用小记(解决各种问题)2024 2&#xff08;三…...

Spring Web MVC其他扩展(详解下)

文章目录 Spring MVC其他扩展&#xff08;下&#xff09;异常处理异常处理机制声明式异常好处基于注解异常声明异常处理 拦截器拦截器概念拦截器使用拦截器作用位置图解拦截器案例拦截器工作原理源码 参数校验校验概述操作演示SpringMVC自定义参数验证ValueObject(VO) 文件上传…...

深度学习之 SegNet

可训练的图像分割引擎&#xff0c;包含一个encoder网络&#xff0c;一个对应的decoder网络&#xff0c;衔接像素级分类层&#xff0c;解码网络与VGG16的13层卷积层相同。解码网络是将低分辨率的编码特征图映射到全分辨率的特征图。解码网络使用最大池化层的池化索引进行非线性上…...

Taro React小程序开发框架 总结

目录 一、安装 二、目录结构 三、创建一个自定义页面 四、路由 1、API 2、传参 3、获取路由参数 4、设置TabBar 五、组件 六、API Taro非常好用的小程序框架&#xff0c;React开发者无缝衔接上。 一、安装 官方文档&#xff1a;Taro 文档 注意&#xff0c;项目创建…...

《Django 5 By Example》阅读笔记:p339-p358

《Django 5 By Example》学习第12天&#xff0c;p339-p358总结&#xff0c;总计20页。 一、技术总结 1.项目(购物网站) django-admin startproject myshop 虽然这里只是示例&#xff0c;但我觉得这种命名为 myxxx 的习惯非常不好&#xff0c;因为在实际应用中&#xff0c;是…...

CSS:Web美学的革新之旅

自HTML的诞生之日起&#xff0c;Web页面设计便踏上了一段不断进化的旅程。起初&#xff0c;HTML作为构建网页的骨架&#xff0c;仅承载着最基本的文本结构与少量显示属性。然而&#xff0c;随着互联网的蓬勃发展和用户对视觉体验需求的日益增长&#xff0c;HTML开始不堪重负&am…...

java全栈day10--后端Web基础(基础知识)之续集

一、Servlet执行流程 二、Http协议&#xff08;相对Tomcat和servlet重要一点&#xff09; 2.1Http-概叙 2.2Http-请求协议 2.2.3请求数据格式 2.2.3请求数据获取 先启动服务器 访问/hello Servlet 访问浏览器端Http协议数据 查看数据...

MySQL 与 MongoDB 存储差异分析

MySQL 与 MongoDB 存储差异分析&#xff1a;为什么随机生成数据的存储空间不同&#xff1f; 在实际应用中&#xff0c;我们常常需要选择合适的数据库系统来处理不同类型的数据。在这个过程中&#xff0c;数据库的 存储机制 和 性能优化 起着至关重要的作用。对于很多开发者来说…...

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1&#xff1a;使用“空间连接 (Spatial Join)”工具方法 2&#xff1a;使用“点计数 (Point Count)”工具方法 3&#xff1a;通过“选择 (Select by Location)”统计方法 4&#xff1a;通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…...

Django-Vue3-Admin - 现代化的前后端分离权限管理系统

项目介绍 Django-Vue3-Admin是一个基于RBAC&#xff08;Role-Based Access Control&#xff09;模型的综合性基础开发平台&#xff0c;专注于权限控制&#xff0c;支持列级别的细粒度权限管理。该项目采用前后端分离架构&#xff0c;技术栈包括: 后端: Django Django REST …...

【Java基础入门篇】二、控制语句和递归算法

Java基础入门篇 二、控制语句和递归算法 2.1 switch-case多分支选择语句 switch执行case语句块时&#xff0c;若没有遇到break&#xff0c;则运行下一个case直到遇到break&#xff0c;最后的default表示当没有case与之匹配时&#xff0c;默认执行的内容&#xff0c;代码示例如…...

PS的功能学习

背景差色较大&#xff0c;就魔棒 魔棒的连续就是倒水点的跨越问题 魔棒的容差的选择就有点看经验了&#xff0c;看颜色的统一程度选择 Ctrl D 取消当前所有的选区 至于快速选择工具&#xff0c;和对象选择工具也差不多&#xff0c;只不过控制范围变成了一块一块的&#x…...

yolov8的深度学习环境安装(cuda12.4、ubuntu22.04)

目录 一、先安装基础环境包 1.首先给Ubuntu安装Chrome浏览器&#xff08;搜索引擎换成百度即可&#xff09; 2、ubuntu 22.04中文输入法安装 3、安装 terminator 4、安装WPS for Linux 5、安装其它之前需要先安装anaconda 6、安装配置anaconda 7、安装完成anaconda后创建…...

《JavaEat:探索 Java 在美食世界的奇妙之旅》

在当今数字化的时代&#xff0c;编程语言的应用领域不断拓展&#xff0c;而 Java 作为一种广泛使用且功能强大的编程语言&#xff0c;其影响力早已超越了传统的软件开发范畴。当我们将目光聚焦在美食领域时&#xff0c;会惊喜地发现 Java 也能在其中发挥独特而重要的作用。本文…...

将excel文件中的信息读取后批量生成word文件

在日常办公过程中&#xff0c;可能需要把excel文件中的信息批量生成成百上千份word文档&#xff0c;便于打印、发邮件或存档等&#xff0c;比如根据excel中的合格人员招聘信息生成word合同文件&#xff0c;或是根据excel中的参会人员名单生成word参会通知等。 首先需要制作wor…...

Android 图形系统之三:SurfaceControl

在 Android 系统中&#xff0c;SurfaceControl 是一个关键的类&#xff0c;用于管理应用窗口和屏幕上的显示内容。它与 SurfaceFlinger 紧密交互&#xff0c;通过 BufferQueue 提供高效的图形缓冲区管理能力。SurfaceControl 是 Android 的显示架构中不可或缺的部分&#xff0c…...

Nodemailer使用教程:在Node.js中发送电子邮件

目录 1. 简介 2. 安装 3. 基本配置 3.1 创建传输器 3.2 配置说明 4. 发送邮件 4.1 基本发送示例 4.2 发送验证码示例 5. 常见问题解决 5.1 "Greeting never received" 错误 5.2 安全建议 SMTP与邮件加密协议详解 1. SMTP简介 1.1 基本特点 2. 加密协…...

shell第二次作业

1. 使用case实现成绩优良差的判断 read -p "请输入你的成绩&#xff1a;" score if ! [[ "$score" ~ ^[0-9]$ ]];then echo "请输入数字" exit 1 fi if [ "$score" -lt 0 ] || [ "$score" -gt 100 ];then echo …...