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

二、数据离线处理场景化解决方案

https://connect.huaweicloud.com/courses/learn/Learning/sp:cloudEdu_?courseNo=course-v1:HuaweiX+CBUCNXE147+Self-paced&courseType=1

1.离线处理方案

**业务场景-安平领域**

业务场景-金融领域

离线批处理常用组件

  • HDFS:分布式文件系统,为各种批处理引擎提供数据存储,可以存储各种文件格式数据。
  • YARN:资源调度引擎,为各种批处理引擎提供资源调度能力。
  • MapReduce:大数据批处理引擎,用于处理海量数据,但是处理速度较慢。
  • Hive:大数据 SQL 批处理引擎,用于处理 SQL 类批处理作业,但是处理速度较慢。
  • Spark:基于内存的数据处理引擎,适合海量数据,处理速度高校。
    • Spark SQL:Spark 处理结构化数据的一个模块。

思考题

  1. 以下哪些是离线批处理的特点?()
    1. 处理数据格式多样
    2. 支持SQL类作业和自定义作业
    3. 处理数据量巨大
    4. 处理时间要求高
  2. 离线批处理常用的组件不包括哪个?()
    1. Flume
    2. Hive
    3. Spark
    4. Storm
  3. Hive是大数据SQL批处理引I擎月用于处理SQL类批处理作业,但是处理速度较慢。()

2.离线处理技术框架介绍

2.1. 数据存储-HDFS

`2024年9月26日21:18:26`

HDFS 的概念

  • HDFS(Hadoop Distributed File System)基于 Google 发布的 GFS 论文设计开发。
  • 其除具备其它分布式文件系统相同特性外,HDFS 还有自己特有的特性:
    • 高容错性:认为硬件总是不可靠的。
    • 高吞吐量:为大量数据访问的应用提供高吞吐量支持
    • 大文件存储:支持存储 TB-PB 级别的数据

HDFS 的优势和劣势

  • 优势:大文件存储与访问;流式数据访问
  • 劣势:大量小文件存储;随机写入;低延迟读取

HDFS 基本系统架构

常用 Shell 命令

** 命令类别 **** 命令 **** 命令说明 **
hdfs dfs
-cat显示文件内容
-ls显示目录列表
-rm删除文件
-put上传目录/文件到 HDFS
-get从 HDFS 下载目录/文件到本地
-mkdir创建目录
-chmod/-chown改变文件属组
hdfs dfsadmin
-safemode安全模式操作
-report报告服务状态

HDFS 回收站机制

  • 在HDFS里,删除文件时,不会真正的删除,其实是放入回收站,回收站里的文件可以用来快速恢复误删文件。
  • 可以设置一个时间阀值(单位:分钟),当回收站里文件的存放时间超过这个阀值或是回收站被清空时,文件才会被彻底删除,并且释放占用的数据块。
  • Hadoop回收站trash,默认是关闭的,若开启需要修改配置文件core-site.xml。
<property><name>fs.trash.interval</name><value>1440</value>
</property>

思考题

  1. HDFS里包含哪些实例?()
    1. NameNode
    2. TaskManager
    3. DataNode
    4. JobManager
  2. 在HDFS根目录下有一个文件a.txt,我们应该如何删除?
  3. Hadoop回收站trash,若开启需要修改配置文件core-site.xml。()

2.2 数据仓库-Hive

2.2.1 数据仓库-Hive

**Hive 的概述**
  • Hive 是基于 Hadoop 的数据仓库软件,可以查询和管理 PB 级别的分布式数据
  • Hive 特性:
    • 灵活方便的 ETL(Extract/TransForm/Load)
    • 支持 MapReduce、Tez、Spark 多种计算引擎
    • 可直接访问 HDFS 文件以及 HBase
    • 易用易编程

Hive 的架构

Hive 的数据存储模型

Hive 内部表和外部表的区别

  • 区别:
关键字内部表外部表
CREATE/LOAD数据移到仓库目录数据位置不移动
DROP元数据和数据会被一起删除只删除元数据
  • 查询表的类型: desc formatted tableName;
  • 修改内部表 tableName 为外部表:alter table tableName set tblproperties('EXTERNAL'='TRUE');
  • 修改外部表 tableName 为外部表:alter table tableName set tblproperteis('EXTERNAL'='FALSE');

Hive 内置函数

  • 查看系统函数的用法:hive> show funcitons;
  • 显示函数的用法:hive> desc function upper;
  • 详细显示函数的用法:hive> desc function extended upper;
  • 常用函数:
    • 数学函数,如 round()、abs()、rand()等
    • 日期函数,如 to_date(),current_date()等
    • 字符串函数,如 trim(),length(),substr()等

Hive 自定义 UDF

  • 当Hive提供的内置函数无法满足业务处理需要时,此时就可以考虑使用用户自定义函数编写处理代码并在查询中使用
  • UDF(User-Defined-Function)
    • 用于接收单个数据行,并产生一个数据行作为输出。
  • UDAF(User-DefinedAggregationFunction)
    • 用于接收多个数据行,并产生一个数据行作为输出。
  • UDTF(User-DefinedTable-GeneratingFunctions)
    • 用于接收单个数据行,并产生多个数据行作为输出。

UDF 开发步骤

  • 继承"org.apache.hadoop.hive.ql.exec.UDF"
  • 实现一个evaluateO方法,编写要实现的逻辑
  • 打包并上传到HDFS里
  • Hive创建临时函数
  • 调用该函数

Hive 调优

  • 数据倾斜
    • 数据倾斜指计算数据的时候,数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均计算速度,导致整个计算过程过慢。
    • 日常使用过程中,容易造成数据倾斜的原因可以归纳为如下几点:
      • group by
      • distinct count(distinctxx)
      • join
  • 调优参数:set hive.map.aggr=true;
    • 在map中会做部分聚集操作,效率更高但需要更多的内存。set hive.groupby.skewindata=true;
    • 此时生成的查询计划会有两个MRJob,可实现数据倾斜时负载均衡。
  • map side join set hive.auto.convert.join=true;
    • 当连接一个较小和较大表的时候,把较小的表直接放到内存中去,然后再对较大的表进行map操作。
  • 并行化执行
    • 每个查询会被Hive转化为多个阶段,当有些阶段关联性不大时,可以并行化执行,减少整个任务的执行时间。
    • 开启任务并行执行:set hive.exec.parallel=true;
    • 设置同一个sql允许并行任务的最大线程数(例如设置为8个):set hive.exec.parallel.thread.number=8;

2.2.2 Hive SQL 命令

HQL 开发
+ 场景说明 - 假定用户开发一个基于Hive的数据分析应用,用于分析企业雇员信息。 - 假定需要创建三张表: * 雇员信息表:"employees_info" * 雇员联络信息表:"employees_concat” * 雇员信息扩展表:"employees_info_extended"

雇员信息表

雇员联络信息表

统计要求
**统计要求**
  • 查看薪水支付币种为美元的雇员联系方式。
  • 查询入职时间为2019年的雇员编号、姓名和电话号码字段,并将查询结果加载进表employees_info_extended对应的分区中。
  • 统计表employees_info中有多少条记录。
  • 查询以“cn”结尾的邮箱的员工信息。

创建雇员信息表

创建雇员联系表

创建雇员信息扩展表

加载数据

查询 1

——查看薪水支付币种为美元的雇员联系方式

查询 2

——查询入职时间为2019年的雇员编号、姓名和电话号码字段,并将查询结果加载进表employees_info_extended中的入职时间为2019的分区中。

查询 3

  • 使用Hive中自带的函数COUNTO,6统计表employees_concat中有多少条记录
    SELECT COUNT (*) FROM employees_contact;
  • 查询以’cn’结尾的邮箱的员工信息
    SELECT a.name,b.tel_phone FROM employees_info a JoIN employees_contact b ON a.id=b.id WHERE b.email like '%cn';

2.2.3 Hive 数据仓库设计

**数据集市和数据仓库的区别**
  • 数据集市
    • 数据集市(DataMart),也叫数据市场,数据集市就是满足特定的部门或者用户的需求按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。
  • 数据仓库
    • 为满足各类零散分析的需求,通过数据分层和数据模型的方式,并以基于业务和应用的角度将数据进行模块化的存储。

Hive 数据仓库

数据仓库分层:

  • ODS层:原始数据层。
  • DWD层:结构和粒度与原始表保持一致,简单清洗。
  • DWS层:以DWD为基础,进行轻度汇总。
  • ADS层:为各种统计报表提供数据。

分层的优点

  • 复杂问题简单化
    • 将任务分解成多个步骤完成,每一层只处理单一的步骤,比较简单,并且方便定位问题。
  • 减少重复开发
    • 规范数据分层,通过中间层数据,减少最大的重复计算,增加一次计算结果的复用性。
  • 隔离原始数据
    • 避免数据异常或者数据敏感,使真实数据与统计数据解耦。

思考题

  1. Hive的自定义函数有哪几种?()
    1. UDF
    2. UDTF
    3. UDCF
    4. UDAF
  2. Hive在删除表的时候,内部表的元数据和实际数据不会被一起删除。()
  3. Hive构建数据仓库时通常需要进行分层。()

2.3 离线分析-Spark SQL

2.3.1 离线分析-Spark SQL

**Spark 简介**

——Spark是基于内存的分布式批处理系统,它把任务拆分,然后分配到多个的CPU上进行处理,处理数据时产生的中间产物(计算结果)存放在内存中,减少了对磁盘的I/O操作,大大的提升了数据的处理速度,在数据处理和数据挖掘方面比较占优势。

Spark 应用场景

  • 数据处理(DataProcessing):可以用来快速处理数据,兼具容错性和可扩展性。
  • 选代计算(lterativeComputation):支持迭代计算,有效应对复杂的数据处理逻辑。
  • 数据挖掘(DataMining):在海量数据基础上进行复杂的挖掘分析,可支持多种数据挖掘和机器学习算法。
  • 流式处理(StreamingProcessing):支持秒级延迟的流处理,可支持多种外部数据源。
  • 查询分析(QueryAnalysis):支持SQL的查询分析,同时提供领域特定语言(DSL)以方便操作结构化数据,并支持多种外部数据源。

Spark 对比 MapReduce

  • 性能上提升了100倍
  • Spark的中间数据放在内存中,对于迭代运算的效率更高;进行批处理时更高效,同时有着更低的延迟
  • Spark提供更多的数据集操作类型,编程模型比MapReduce更灵活,开发效率更高
  • 更高的容错能力(血统机制)

RDD

  • RDD是分布式弹性数据集,可以理解一个存储数据的数据结构。Spark会把所要操作的数据,加载到RDD上,即RDD所有操作都是基于RDD来进行的。RDD是只读和可分区。要想对RDD进行操作,只能重新生成一个新的RDD。
    • 从HDFS输入创建,或从与Hadoop兼容的其他存储系统中输入创建。
    • 从父的RDD转换的到新的RDD。
    • 从数据集合转换而来,通过编码实现。
  • RDD的存储:
    • 用户可以选择不同的存储级别缓存RDD以便重用。
    • 当前RDD默认是存储于内存,但当内存不足时,RDD会溢出到磁盘中。

Shuffle

  • Shuffle是划分DAG中stage的标识,同时影响Spark执行速度的关键步骤
    • RDD的Transformation函数中,分为窄依赖(narrow dependency)和宽依赖(widedependency)的操作。
    • 窄依赖跟宽依赖的区别是是否发生Shuffle(洗牌)操作

窄依赖

  • 窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用
  • 表现为:
    • 一个父RDD的每一个分区对应于一个子RDD分区

stage

TransFormation

  • Transformation是RDD的算子类型,它的返回值还是一个RDD。
  • Transformation操作属于懒操作(算子),不会真正触发RDD的处理计算。
  • 变换方法的共同点:
    • 不会马上触发计算。
    • 每当调用一次变换方法,都会产生一个新的RDD。
  • 例如:map(func), flatMap(func)

Action

——Action是RDD的算子,它的返回值不是一个RDD。Action操作是返回结果或者将结果写入存储的操作。Action是Spark应用启动执行的触发动作,得到RDD的相关计算结果或将RDD保存到文件系统中。

SparkConf

  • SparkConf是用来对Spark进行任务参数配置的对象
  • 是通过键值对的形式,设置Spark任务执行时所需要的参数。
  • Spark读取任务参数的优先级是:
  • 代码配置>动态参数>配置文件

SparkContext

  • SparkContext是Spark的入口,相当于应用程序的main函数。
  • SparkContext表示与Spark集群的连接,可用于在该集群上创建RDD,记录计算结果和环境配置等信息。
  • Spark2.0中引l入了SparkSession的概念,为用户提供了一个统一的切入点来使用Spark的各项功能。
  • 封装了SparkConf和SparkContext对象,方便用户使用Spark的各种API。

2.3.2 Spark SQL 架构原理

**SparkSQL 简介**
  • SparkSQL是Spark用来处理结构化数据的一个模块,可以在Spark应用中直接使用SQL语句对数据进行操作。
  • SQL语句通过SparkSQL模块解析为RDD执行计划,交给SparkCore执行。

SparkSQL 使用方式

  • 通过SparkSession提交SQL语句任务像普通Spark应用一样,提交到集群中分布式运行。
  • JDBC:
    • 应用加载JDBC驱动然后统一提交到集群的JDBCServer执行
    • JDBCServer是单点服务,会成为任务执行的瓶颈,不能处理海量数据和高并发任务

SparkSQL 关键概念 DataSet

  • DataSet
    • DataSet是一个由特定域的对象组成的强类型集合,可通过功能或关系操作并行转换其中的对象
    • DataSet以Catalyst逻辑执行计划表示,并且数据以编码的二进制形式存储,不需要反序列化就可以执行sort、wefilter、huffle等操作。
    • Dataset是“懒惰”的,只在执行action操作时触发计算。当执行action操作时,Spark用查询优化程序来优化逻辑计划,并生成一个高效的并行分布式的物理计

Spark SQL 简单查询

  • 查询:df.select("id","name").show()
  • 带条件的查询:df.select($"id",$"name").where($"name"==="bbb").show()
  • 排序查询:df.select($"id",$"name").orderBy($"name".desc).show
    df.select($"id",$"name").sort($"name".desc).show

2.3.3 Spark SQL 开发

**场景说明:**
  • 假定用户有网民网购时停留网站的日志文本,基于某些业务要求,需要开发Spark应用程序并实现如下功能:
    • 统计日志文件中网购停留总时间超过2个小时的女性网民信息。

log1.txt:网民停留日志

  • 日志文件第一列为姓名,第二列为性别,第第三列为本次停留时间,单位为分钟
    • 分隔符为","

开发思路

  • 目标
    • 统计日志文件中网购停留总时间超过2个小时的女性网民信息。
  • 大致步骤:
    • 创建表,将日志文件数据导入到表中
    • 筛选女性网民,提取停留时间数据信息。
    • 汇总每个女性停留总时间。
    • 筛选出停留时间大于2个小时的女性网民信息。

Scala 样例代码

objectCollectFemaleInfo{
//表结构,后面用来将文本数据映射为df
case class FemaleInfo(name: String, gender: String, stayTime: Int)
def main(args:Array[String]){
//配置Spark应用名称
val sparkConf =new SparkConf().setAppName("FemaleInfo")
val ss = SparkSession.builder().config(sparkconf).getorCreate()
val sc = ss.sparkContext
sc.textFile(args(0) ).map(_.split(";")).map(p => FemaleInfo(p(0), p(1),
importss.implicits·_//通过隐式转换,将RDD转换成DataFrame,然后注册表
p(2).trim.toInt)).toDF.registerTempTable("FemaleInfoTable")
val femaleTimeInfo=sqlContext.sql(
//通过sql语句筛选女性上网时间数据,对相同名字行进行聚合
select name,sum(stayTime) as stayTime from FemaleInfoTable where
gender = 'female' group by name")
//筛选出时间大于两个小时的女性网民信息,并输出
val c= femaleTimeInfo.filter("stayTime >=120").collect()
c.foreach(println)
sc.stop()

Yarn-cluster 作业提交

  • 打 jar 包
  • 上传到Linux某个目录下
  • Yarn-cluster提交方式
./spark-submit
--master yarn-cluster
--class com.huawei.bigdata.spark.CollectFemaleInfo
../lib/spark-examples.jar
/user/logl.txt

思考题

  1. Spark的应用场景有哪些?()
    1. 查询分析
    2. 流式处理
    3. 迭代计算
    4. 数据挖掘
  2. Spark2.0中引入了SparkSession的概念,为用户提供了一个统一的切入点来使用Spark的各项功能。()
  3. SparkSQL可以进行实时查询()

2.4 数据采集工具

**常用采集工具**

——由于大数据的数据源各种各样;6由此对数据采集的挑战变的尤为突出。这里介绍几款常用数据采集工具:

——Sqoop

——Loader

Sqoop 简介

  • Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。
  • Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(MySQL、PostgreSQL…)间进行数据的传递,可以将一个关系型数据库(例如MySQL,Oracle,PostgreSQL等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Sqoop 原理

  1. Import 原理
    1. Sqoop在import时,需要指定split-by参数。Sqoop根据不同的split-by参数值来进行切分,然后将切分出来的区域分配到不同map中。
    2. 每个map中再处理数据库中获取的一行一行的值,写入到HDFS中。
    3. 同时split-by根据不同的参数类型有不同的切分方法,如比较简单的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的num-mappers来确定划分几个区域。
  2. Export原理:
    1. 获取导出表的schema、meta信息,和Hadoop中的字段match;
    2. 并行导入数据:将Hadoop上文件划分成若干个分片,每个分片由一个MapTask进行数据导入。

Loader 简介

  • Loader是实现FusionlnsightHD与关系型数据库、文件系统之间交换数据和文件的数据加载工具。
    • 提供可视化向导式的作业配置管理界面;
    • 提供定时调度任务,周期性执行Loader作业;
    • 在界面中可指定多种不同的数据源、配置数据的清洗和转换步骤、配置集群存储系统等。
  • 基于开源Sqoop研发,做了大量优化和扩展。

思考题

  1. Sqoop主要用来做实时流处理()
  2. Sqoop可以用于Hadoop(Hive)与传统的数据库(MySQL、PostgreSQL…)间进行数据的传递。()
  3. Loader不能提供图形化操作。()

3.离线批处理实战

**场景说明**
  • 某公司拥有一个购物网站,用户在登录网站、点击商品、收藏商品、购买商品时都会产生行为日志,该公司希望结合业务数据库中的数据和日志数据,进行大数据分析,得到分析结果作为公司决策依据。

客户需求

  • 网络产生的日志包含如下特点:
    • 数据量大
    • 价值密度低
    • 数据的业务种类多
  • 客户希望通过数据分层,让底层数据和指标数据分层,最终得到相关业务指标的数

据。

数据源

——数据来自于网站,网站通过在网页内代码埋点,用户每一次操作,都会将相关信息传到日志服务器,日志采集工具采集日志服务器上的数据,然后会对数据进行简单的处理过滤,最后将数据按照日期存到HDFS上。

设计分析

  • 数据源:网站产生的日志
  • 存储数据:HDFS上的不同目录下的数据。
  • 构建数据仓库:根据业务数据分层
  • 分析数据:相关指标,GMV,活跃度等
  • 结果的展示:网页版报表显示

方案架构-组件选取

  • 数据导入导出:Loader
  • 数据存储:HDFS、MySQL
  • 数据计算:Hive

方案架构-方案流程

效果展示

思考题

  1. 本实验的网站日志数据需要存放到HDFS。()
  2. 本实验的数据源包含网站日志数据和数据库业务数据()
  3. 本实验对数据处理过程中,进行了数据分层处理。()

相关文章:

二、数据离线处理场景化解决方案

https://connect.huaweicloud.com/courses/learn/Learning/sp:cloudEdu_?courseNocourse-v1:HuaweiXCBUCNXE147Self-paced&courseType1 1.离线处理方案 **业务场景-安平领域** 业务场景-金融领域 离线批处理常用组件 HDFS&#xff1a;分布式文件系统&#xff0c;为各种…...

算法题总结(十四)——贪心算法(上)

贪心算法 什么是贪心 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心的套路&#xff08;什么时候用贪心&#xff09; 刷题或者面试的时候&#xff0c;手动模拟一下感觉可以局部最优推出整体最优&#xff0c;而且想不到反例&#xff0c;那么就试一试…...

hive on tez 指定队列后任务一直处于running状态

如上图所示一直处于running状态&#xff0c;查看日志发现一直重复弹出同一个info&#xff1a; 2024-10-18 16:57:32,739 [INFO] [AMRM Callback Handler Thread] |rm.YarnTaskSchedulerService|: Allocated: <memory:0, vCores:0> 释义: 当前应用程序没有分配到任何内存…...

闲说视频清晰度和各种格式、编码技术的发展历史

文章目录 引子清晰度视频格式&#xff1a;MP4、AVI 、MKV、MOV、WMV、FLV 、RMVB等等什么是视频格式MP4AVIMKVMOVWMVFLVRM / RMVB其他 编码技术&#xff1a;MPEG-1、MPEG-2、MPEG-4、RealVideo、DivX、XviD、H.264&#xff08;AVC&#xff09;、H.265&#xff08;HEVC&#xff…...

嵌入式职业规划

嵌入式职业规划 在嵌入式的软件开发中&#xff0c;可以分为&#xff1a; 嵌入式MCU软件开发工程师&#xff1b; 嵌入式Linux底层&#xff08;BSP&#xff09;软件开发工程师&#xff1b; 嵌入式Linux应用开发工程师&#xff1b; 嵌入式FPGA算法开发工程师 对于前两个阶段 …...

Nginx - 实现 TCP/DUP流量的按 IP 动态转发

文章目录 需求背景需求目标&#xff1a;使用场景&#xff1a;成功标准&#xff1a;技术要求&#xff1a; Ng配置测试验证 需求 Nginx Stream TCP 协议按 IP 转发 背景 为了优化网络性能和提升服务的可用性&#xff0c;我们需要在 Nginx 中配置 stream 模块&#xff0c;使其根…...

基于深度学习的进化神经网络设计

基于深度学习的进化神经网络设计&#xff08;Evolutionary Neural Networks, ENNs&#xff09;结合了进化算法&#xff08;EA&#xff09;和神经网络&#xff08;NN&#xff09;的优点&#xff0c;用于自动化神经网络架构的设计和优化。通过模拟自然进化的选择、变异、交叉等过…...

软考-软件设计师(10)-专业英语词汇汇总与新技术知识点

场景 以下为高频考点、知识点汇总。 软件设计师上午选择题知识点、高频考点、口诀记忆技巧、经典题型汇总: 软考-软件设计师(1)-计算机基础知识点:进制转换、数据编码、内存编址、串并联可靠性、海明校验码、吞吐率、多媒体等: 软考-软件设计师(1)-计算机基础知识点:进制…...

PyTorch 2.5 发布带来一些新特性和改进

官网&#xff1a;https://github.com/pytorch/pytorchGitHub&#xff1a;https://github.com/pytorch/pytorch原文&#xff1a;https://github.com/pytorch/pytorch/releases/tag/v2.5.0 主要亮点 (Highlights)] SDPA CuDNN 后端&#xff1a;为 torch.nn.functional.scaled_d…...

算法:560.和为k的子数组

题目 链接:leetcode链接 思路分析&#xff08;前缀和&#xff09; 注意&#xff1a;我们前面讲过滑动窗口可以处理子数组、子串等问题&#xff0c; 但是在这道题目里面注意数据范围 -1000 < nums[i] < 1000 nums[i]可正可负&#xff0c;区间的和没有单调性&#xff0c;使…...

C++之list(2)

list(2) list的迭代器 const迭代器 根据我们之前学过的知识&#xff1a; const int*p1;//修饰的是指向的内容 int *const p2;//修饰的是迭代器本身我们写const迭代器&#xff0c;期望的是指向的内容不能修改。 所以更期望写上面p1的形式 const迭代器与普通迭代器的不同点在于…...

React Componet类组件详解(老项目)

React类组件是通过创建class继承React.Component来创建的&#xff0c;是React中用于构建用户界面的重要部分。以下是对React类组件的详细解释&#xff1a; 一、定义与基本结构 类组件使用ES6的class语法定义&#xff0c;并继承自React.Component。它们具有更复杂的功能&#…...

位运算题目-Java实现-LeetCode题解:判断字符是否唯一-丢失的数字-两整数之和-只出现一次的数字 II-消失的两个数字

这里是Themberfue 上一篇文章讲完了常见位运算的技巧以及总结 那么本章则通过五道题来运用这些技巧 判定字符是否唯一 题目解析 本题要求判断给定字符串中的字符是否唯一&#xff0c;也就是每个字符是否只出现一次 算法讲解 本题用哈希表遍历每一个字符也可以解决 如果这题使…...

复合泊松过程

复合泊松过程的均值、方差与特征函数 复合泊松过程的定义 复合泊松过程 ( Y(t) ) 是一种常见的随机过程&#xff0c;通常定义为&#xff1a; Y ( t ) ∑ k 1 N ( t ) X k Y(t) \sum_{k1}^{N(t)} X_k Y(t)k1∑N(t)​Xk​ 其中&#xff1a; ( N(t) ) 是一个强度为 ( \lambd…...

[week1] newstar ctf ezAndroidStudy

本题主要考查对 APK 基本结构的掌握 查看 AndroidManifest.xml 可以发现 activity 只有 Homo 和 MainActivity 我们用 Jadx 打开 work.pangbai.ezandroidstudy.Homo 就可以获得 flag1 打开 resources.arsc/res/value/string.xml 搜索 flag2 即可 按描述到 /layout/activity_ma…...

TCP——Socket

应用进程只借助Socket API发和收但是不关心他是怎么进行传和收的 数据结构 图示Socket连接 捆绑属于隐式捆绑...

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后&#xff0c;我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查&#xff0c;问题根源在于 Swift 服务所使用的存储挂载是临时挂载&#xff0c;而非永久挂载。 Swift 服务依赖于…...

System.Text.Json类库进行json转化时ValueKind:Object问题

当你的使用的Json库是System.Text.Json&#xff0c;而不是Newtonsoft.Json库的时候&#xff0c;你可能遇到以下问题及其解决办法。通常的解决办法是进行一些对应的配置。此外就需要根据情况使用自定义转换器实现你的需求。以下是通常遇到的使用自定义转换器解决的例子: Q1.当遇…...

免费Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里&#xff0c;当我们试图手动将多行同类数据合并为一行时&#xff0c;会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时&#xff0c;单纯依靠人工进行对比&#xff0c;极…...

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…...

LeetCode搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 …...

UE5学习笔记24-添加武器弹药

一、给角色的武器添加弹药 1.创建界面&#xff0c;根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…...

限制游客在wordpress某分类下阅读文章的数量

在WordPress中实现某个分类下的内容限制游客只能阅读前5篇文章&#xff0c;注册用户可以阅读更多文章的功能&#xff0c;可以通过以下步骤来完成&#xff1a; 1. 安装和激活插件 首先&#xff0c;你可以使用一个插件来简化这个过程。一个常用的插件是 “MemberPress” 或 “R…...

Oracle云主机申请和使用教程:从注册到SSH连接的全过程

今天我要和大家分享如何成功申请Oracle云主机,并进行基本的配置和使用。我知道很多同行的朋友在申请Oracle云主机时都遇到了困难&#xff08;疑惑abc错误&#xff09;,可能试了很多次都没有成功。现总结一下这些年来的一些注册流程经验&#xff0c;或许你们也能成功申请到自己的…...

芯知识 | NVH-FLASH语音芯片支持平台做语音—打造音频IC技术革新

随着科技的飞速发展&#xff0c;人们对于电子产品的音频性能要求越来越高。在这种背景下&#xff0c;NVH-FLASH系列语音芯片应运而生&#xff0c;作为音频IC领域的一次重大技术革新&#xff0c;NVH-FLASH系列语音芯片凭借其卓越的性能与灵活的支持平台&#xff0c;正逐步引领着…...

机器学习——解释性AI与可解释性机器学习

解释性AI与可解释性机器学习: 理解机器学习模型背后的逻辑 随着人工智能技术的广泛应用&#xff0c;机器学习模型越来越多地被用于决策过程。然而&#xff0c;这些模型&#xff0c;尤其是深度学习模型&#xff0c;通常被视为“黑箱”&#xff0c;难以理解其背后的决策逻辑。解…...

中国全国省市区县汇总全国省市区json省市区数据2024最新

简介 包含全国省市区县数据,共3465个。 全国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 ——更新于2024年10月16日,从2017年开始,已经更新坚持7年 从刚开始1000个左右的城市json,到现在全国省市区县3465个。 本人感觉应该是目前最完善的~ 每年都在更新中,…...

[Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器

目录 一. IP协议头格式 学习任何协议前的两个关键问题 IP 报头与有效载荷分离 分离方法 为什么需要16位总长度 如何交付 二. 网络通信 1.IP地址的划分理念 2. 子网管理 3.网络划分 CIDR&#xff08;无类别域间路由&#xff09; 目的IP & 当前路由器的子网掩码 …...

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合&#xff0c;路由器根据路由表做路径选择&#xff0c;里面记录了网段ip地址和对应下一跳接口的接口号。…...

UE5 使用Animation Budget Allocator优化角色动画性能

Animation Budget Allocator是UE内置插件&#xff0c;通过锁定动画系统所占CPU的预算&#xff0c;在到达预算计算量时对动画进行限制与优化。 开启Animation Budget Allocator需要让蒙皮Mesh使用特定的组件&#xff0c;并进行一些编辑器设置即可开启。 1.开启Animation Budget…...