01-18-spark-入门简介-部署入门

news2024/10/7 14:28:28

01-spark-入门简介:

Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。

一次性数据计算:框架在处理数据的时候,从存储设备中读取数据,进行逻辑操作,然后将结果存储到介质中。

Hadoop 的 MR 框架和 Spark 框架(spark基于内存,mr和磁盘交互。spark快。

1、Hadoop MapReduce 由于其设计初衷并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习、图挖掘算法、交互式数据挖掘算法)中存在诸多计算效率等问题。所以 Spark 应运而生,Spark 就是在传统的 MapReduce 计算框

架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并将计算单元缩小到更适合并行计算和重复使用的 RDD 计算模型。

2、机器学习中 ALS、凸优化梯度下降等。这些都需要基于数据集或者数据集的衍生数据反复查询反复操作。MR 这种模式不太合适,即使多 MR 串行处理,性能和时间也是一个问题。数据的共享依赖于磁盘。另外一种是交互式数据挖掘,MR 显然不擅长。而park 所基于的 scala 语言恰恰擅长函数的处理。

3、Spark 是一个分布式数据快速分析项目。它的核心技术是弹性分布式数据集(Resilient Distributed Datasets),提供了比 MapReduce 丰富的模型,可以快速在内存中对数据集进行多次迭代,来支持复杂的数据挖掘算法和图形计算算法。

4、Spark 和Hadoop 的差异是多个作业之间的数据通信问题 : Spark 多个作业数据通信是基于内存,而 Hadoop 是基于磁盘。

5、 Spark Task 的启动时间快。Spark 采用 fork 线程的方式,而 Hadoop 采用创建新的进程的方式。

6、 Spark 只有在 shuffle 的时候将数据写入磁盘,而 Hadoop 中多个 MR 作业之间的数据交互都要依赖于磁盘交互

7、Spark 的缓存机制比 HDFS 的缓存机制高效。 Spark 是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会

由于内存资源不够导致 Job 执行失败,此时,MapReduce 其实是一个更好的选择,所以 Spark并不能完全替代 MR。(看场景)

hadoop-mr,spark基本区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OqHjMiWx-1670771338789)(png/image-20210920144340312.png)]

Spark核心模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJ3N5pfy-1670771338790)(png/image-20210920144458903.png)]

Spark Core

Spark Core 中提供了 Spark 最基础与最核心的功能,Spark 其他的功能如:Spark SQL,Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基础上进行扩展的

Spark SQL

Spark SQL 是 Spark 用来操作结构化数据的组件。用户可以使用 SQL或者 HQL来查询数据。

Spark Streaming

Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。

Spark MLlib

MLlib 是 Spark 提供的一个机器学习算法库。MLlib 不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。

Spark GraphX

GraphX 是 Spark 面向图计算提供的框架与算法库。

1.快速入门spark项目1

创建项目,引入scala。wordcount案例思路

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0kjC66R-1670771338790)(png/image-20210920152116191.png)]

路径:big-data-study\Spark-demo\src\main\java\com\myspark\demo\wordcount

2、spark运行环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0fiHiAp-1670771338791)(png/image-20210920161151131.png)]

本地运行模式:解压缩文件:将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 Linux 并解压缩,放置在指定位置,重命名

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-local

启动 Local 环境 本地模式

  1. 进入解压缩后的路径,执行
bin/spark-shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qyyI9br-1670771338792)(png/image-20210920164940684.png)]

在spark-local/data/下创建测试文件

scala> sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res3: Array[(String, Int)] = Array((Hello,3), (Scala,1), (Spark,2))
  1. 启动成功后,可以输入网址进行 Web UI 监控页面访问
http://虚拟机地址:4040

3.提交应用测试

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

1) --class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序
2) --master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量
3) spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

Standalone 模式

local 本地模式用来练习演示的,真实需将应用提交到对应的集群中去执行,集群模式,独立部署(Standalone)模式。Spark 的 Standalone 模式也是经典的 master-slave 模式。集群规划:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40xlWuVU-1670771338792)(png/image-20210920224248333.png)]

修改配置文件

  1. 进入解压缩后路径的 conf 目录,修改 slaves.template 文件名为 slaves
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module 
mv spark-3.0.0-bin-hadoop3.2 spark-standalone
mv slaves.template slaves
  1. 修改 slaves 文件,添加 work 节点
192.168.1.102
192.168.1.103
192.168.1.104
  1. 修改 spark-env.sh.template 文件名为 spark-env.sh
mv spark-env.sh.template spark-env.sh
  1. 修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
export JAVA_HOME=/opt/module/jdk1.8.0_251
SPARK_MASTER_HOST=192.168.1.102
SPARK_MASTER_PORT=7077

注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop配置

  1. 分发 spark-standalone 目录
xsync spark-standalone

启动集群

  1. 执行脚本命令:
sbin/start-all.sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JkzseO0l-1670771338793)(png/image-20210921112633736.png)]

查看 Master 资源监控 Web UI 界面: http://192.168.1.102:8080

提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://192.168.1.102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

1) --class 表示要执行程序的主类
2) --master spark://192.168.1.102:7077 独立部署模式,连接到 Spark 集群
3) spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包
4) 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHzPvRO1-1670771338793)(png/image-20210921112919546.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GCoFYMMw-1670771338794)(png/image-20210921113003781.png)]

提交参数说明

在这里插入图片描述

配置历史服务

由于 spark-shell 停止掉后,集群监控 hadoop102:4040 页面就看不到历史任务的运行情况,所以

开发时都配置历史服务器记录任务运行情况。

  1. 修改 spark-defaults.conf.template 文件名为 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
  1. 修改 spark-default.conf 文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://192.168.1.102:8020/directory

注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。

sbin/start-dfs.sh
hadoop fs -mkdir /directory
  1. 修改 spark-env.sh 文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://192.168.1.102:8020/directory 
-Dspark.history.retainedApplications=30"

参数 1 含义:WEB UI 访问的端口号为 18080
参数 2 含义:指定历史服务器日志存储路径
参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
  1. 分发配置文件,xsync conf

  2. 重新启动集群和历史服务

sbin/start-all.sh
sbin/start-history-server.sh
  1. 重新执行任务
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://192.168.1.102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
  1. 查看历史服务:http://192.168.1.102:18080

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FEOBz8KS-1670771338796)(png/image-20210921124855515.png)]

配置高可用(HA)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-88TEpq4n-1670771338796)(png/image-20210921130124165.png)]

  1. 停止集群 sbin/stop-all.sh

  2. 启动 Zookeeper xstart zk

  3. 修改 spark-env.sh 文件添加如下配置

注释如下内容:

#SPARK_MASTER_HOST=hadoop102
#SPARK_MASTER_PORT=7077
添加如下内容:
#Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=192.168.1.102,192.168.1.103,192.168.1.104
-Dspark.deploy.zookeeper.dir=/spark"
  1. 分发配置文件 xsync conf/

  2. 启动集群 sbin/start-all.sh

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4morRMU7-1670771338797)(png/image-20210921133315665.png)]

  3. 启动 linux2 的单独 Master 节点,此时 linux2 节点 Master 状态处于备用状态

[root@linux2 spark-standalone]# sbin/start-master.sh

  1. 提交应用到高可用集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://192.168.1.102:7077,192.168.1.103:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
  1. 停止 hadoop102 的 Master 资源监控进程

  2. 查看 linux2 的 Master 资源监控 Web UI,稍等一段时间后,linux2 节点的 Master 状态提升为活动状态

Yarn 模式

独立部署(Standalone)模式由 Spark 自身提供计算资源,无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是Spark 主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是和其他专业的资源调度框架集成会更靠谱一些。

将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 linux 并解压缩,放置在指定位置。

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module 
mv spark-3.0.0-bin-hadoop3.2 spark-yarn

修改配置文件

  1. 修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
 <name>yarn.nodemanager.pmem-check-enabled</name>
 <value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
 <name>yarn.nodemanager.vmem-check-enabled</name>
 <value>false</value>
</property>
  1. 修改 conf/spark-env.sh,添加 JAVA_HOME 和 YARN_CONF_DIR 配置
mv spark-env.sh.template spark-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_251
YARN_CONF_DIR=/opt/module/hadoop-3.1.4/etc/hadoop

启动 HDFS 以及 YARN 集群

提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VDdepgVv-1670771338797)(png/image-20210921145109800.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJ65nyCZ-1670771338798)(png/image-20210921144928836.png)]

配置历史服务器

  1. 修改 spark-defaults.conf.template 文件名为 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
  1. 修改 spark-default.conf 文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://192.168.1.102:8020/directory

注意:需要启动 hadoop 集群,HDFS 上的目录需要提前存在。

[root@hadoop102 hadoop]# sbin/start-dfs.sh
[root@hadoop102 hadoop]# hadoop fs -mkdir /directory
  1. 修改 spark-env.sh 文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory 
-Dspark.history.retainedApplications=30"

参数 1 含义:WEB UI 访问的端口号为 18080
参数 2 含义:指定历史服务器日志存储路径
参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

4)修改 spark-defaults.conf

spark.yarn.historyServer.address=hadoop102:18080
spark.history.ui.port=18080
  1. 启动历史服务 sbin/start-history-server.sh

  2. 重新提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10

Web 页面查看日志:http://192.168.1.102:18080/ http://192.168.1.103:8088

本地模式

将文件 spark-3.0.0-bin-hadoop3.2.tgz 解压缩到无中文无空格的路径中

  1. 执行解压缩文件路径下 bin 目录中的 spark-shell.cmd 文件,启动 Spark 本地环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwPWY1gE-1670771338798)(png/image-20210922193154012.png)]

  1. 在 bin 目录中创建 input 目录,并添加 word.txt 文件, 在命令行中输入脚本代码

sc.textFile(“input/word.txt”).flatMap(.split(" ")).map((,1)).reduceByKey(+).collect

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UX8m4iQT-1670771338799)(png/image-20210922193217762.png)]

3、命令行提交应用

在 DOS 命令行窗口中执行提交指令

spark-submit --class org.apache.spark.examples.SparkPi --master local[2] …/examples/jars/spark-examples_2.12-3.0.0.jar 10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xujqIn4Y-1670771338799)(png/image-20210922193348541.png)]

部署模式对比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O7ug5Joh-1670771338800)(png/image-20210922193423832.png)]

端口号

➢ Spark 查看当前 Spark-shell 运行任务情况端口号:4040(计算)

➢ Spark Master 内部通信服务端口号:7077

➢ Standalone 模式下,Spark Master Web 端口号:8080(资源)

➢ Spark 历史服务器端口号:18080

➢ Hadoop YARN 任务运行情况查看端口号:8088

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直播技术分享:千万级直播系统后端架构设计的方方面面

1、引言 本文以TFBOYS“日光旅行”七周年这场直播演唱会为案例&#xff0c;为你分享大型直播系统后端架构设计的方方面面&#xff0c;包括&#xff1a;基本架构、稳定性保障、安全性障、监控报警、应急预案等技术范畴。 案例中的这次演唱会采用了在线实时互动及演唱会现场的多…

【能效管理】关于某项目配套渗滤液工程电能管理系统的设计和应用

摘要&#xff1a; 介绍老港综合填埋场二期配套渗滤液工程电能管理系统&#xff0c;采用智能电力仪表采集配电现场的各种电参量。系统采用现场就地组网的方式&#xff0c;组网后通过现场总线通讯并远传至后台&#xff0c;通过Acrel-3000电能管理系统实现配电回路用电的实时监控…

服开与编排,老兵新传

前段时间&#xff0c;有同学问&#xff1a;编排与服开是什么关系&#xff1f;现在运营商都建设编排系统&#xff0c;那是不是服务开通以后就退出 OSS 舞台了&#xff1f;为什么会出现编排&#xff1f;这些问题对于行业老兵来说感慨万千&#xff0c;而对于新兵来说就要通过追溯其…

深度学习炼丹-超参数设定和网络训练

前言网络层内在参数 使用 3x3 卷积使用 cbr 组合尝试不同的权重初始化方法 图片尺寸与数据增强batch size 设定 背景知识batch size 定义选择合适大小的 batch size学习率和 batch size 关系 学习率参数设定 背景知识什么是学习率如何设置学习率 优化器选择 优化器定义如何选择…

中国制造构建全球产业链,是关于价值链的创新

经过20天激战&#xff0c;世界杯最终四强全部出炉。 与此同时&#xff0c;绿茵场外的品牌营销大战也即将步入终章。据伦敦数据分析咨询公司GlobalData表示&#xff0c;中国赞助商对卡塔尔世界杯总赞助金额为13.95亿美元&#xff0c;蝉联赞助金额榜单的首位。一时间&#xff0c…

一、Docker简介与安装

1、Docker是什么&#xff1f;为什么会出现Docker 假定您在开发一个购物商城&#xff0c;您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外&#xff0c;您的…

中国新闻周刊专访:大数据时代,普通人的信息安全如何保证?

技术是一个放大器 本质应该更好地服务人们的生产生活 近年来&#xff0c;随着大数据运用的日益频繁&#xff0c;技术日益成熟&#xff0c;隐私数据的泄露已到了触目惊心的状态。据不完全统计&#xff0c;2022年以来隐私数据泄露的各类案例多达数百万起&#xff0c;受隐私数据泄…

P4 PyTorch Broadcasting

前言&#xff1a; 维度变换 目录&#xff1a; Broadcasting 流程 broadcasting-able code参考: 课时24 Broadcasting-1_哔哩哔哩_bilibili 一 Broadcasting 流程 分三步&#xff1a; i broadcasting 从最后一个维度开始,进行维度对齐 ii 最前面插入一个维度 iii 最后对…

【测绘程序设计】——地形图图幅号计算

为便于地形图测制、管理和使用,各种比例尺地形图通常需要按规定的大小进行统一分幅,并进行系统的编号。地形图的分幅可分为两大类:一是按经纬度进行分幅,称为梯形分幅法,一般用于国家基本比例尺系列的地形图;二是按平面直角坐标进行分幅,称为矩形分幅法,一般用于大比例…

地心地固坐标系WGS84经纬度与笛卡尔直角坐标系相互转换的推导、理解与代码实现(C++和matlab)

目录一、大地坐标系现状简析1.1 我国1.2 美国1.3 日本二、经纬度坐标&#xff08;L,B,H&#xff09;与直角坐标系坐标&#xff08;X,Y,Z&#xff09;相互转换2.1 正解&#xff08;L,B,H&#xff09;——>&#xff08;X,Y,Z&#xff09;2.1.1 数学推导2.1.2 C代码实现2.1.3 m…

文件描述符和缓冲区

文章目录文件操作符系统调用接口文件接口的简单实用实验一&#xff1a;打开文件写入信息实验二&#xff1a;read接口读取文件返回值和fd联想到数组下标OS怎么管理文件呢&#xff1f;先描述再组织。一切皆文件012的操作文件描述符的分配规则&#xff1a;输出重定向的原理。追加重…

Apache Kyuubi、Spark Thrift Server与Hive Server2

HiveServer2和Spark Thrift Server HiveServer2和Spark Thrift Server&#xff0c;两者其实都是提供一个常驻的SQL服务&#xff0c;用来对外提供高性能的SQL引擎能力&#xff0c;不过两者又有些偏差&#xff0c;主要是HS2是独立的Server&#xff0c;可组成集群&#xff0c;而S…

【进阶】C语言第三课:升级你的指针(2)

目录 &#x1f347;前言&#x1f347;&#xff1a; 一、数组参数&#x1f920;&#xff1a; 1.一维数组传参&#x1f348;&#xff1a; 2.二维数组传参&#x1f349;&#xff1a; 二、指针参数&#x1f929;&#xff1a; 1.一级指针传参&#x1f34a;&#xff1a; 2.二级指针…

【论文写作】课程总结

文章目录1、前言2、概述3、摘要与关键字4、引言5、相关工作6、理论7、实验8、总结1、前言 《论文写作》不仅是本人认为的在本学期收获较大的一门&#xff0c;也是最重要的课程之一。因为作为研究生&#xff0c;论文是必不可少的一部分。论文是就自己研究方向中所得到的成果的一…

网络设备的运行隐患怎么排除?日常的例行维护绝对不能少,收藏本文,轻松拿捏各种场景!

设备稳定运行一方面依赖于完备的网络规划&#xff0c;另一方面&#xff0c;也需要通过日常的维护发现并消除设备的运行隐患。 日常维护怎么才能进行呢&#xff1f;有哪些必要的步骤呢&#xff1f; 记住这五步&#xff1a; 1、设备环境检查 设备运行环境正常是保证设备正常运…

PreScan快速入门到精通第四十二讲点云传感器

点云传感器(PCS)是一种理想化的传感器,用于构建高数据率和高更新率的点云数据。该传感器的实际应用包括检测算法的开发、激光雷达系统的设计和验证或HIL验证。同时具备竖直方向的FOV相关信息,支持4D成像雷达系统的仿真开发。 该传感器具有固定但可配置的模式,并针对性能(…

分享一些冷门但却很实用的css样式

在平常的代码工作中&#xff0c;有很多冷门不常用的css样式标签。有些偏门、冷门的标签一般都记不住&#xff0c;想起来的时候就又会去现找&#xff0c;很影响工作效率&#xff0c;现在&#xff0c;把这些标签都统一整理一下用的少但是超级实用的css样式。 ::-Webkit-Input-Pla…

0基础转行学软件测试,哪些技术是必须要掌握的?

作为近些年非常热门的IT岗位&#xff0c;软件测试-受到越来越多应届毕业生和诸多转行群体的青睐。为了满足同学们对软件测试的学习要求&#xff0c;测试猿课堂将在本文为大家详细讲述成为自动化软件测试工程师必须要具备的能力体系。 软件测试的学习体系总的来讲可以分为五个阶…

Redis框架(十一):大众点评项目 乐观锁解决超卖问题 悲观锁解决一人一单问题

大众点评项目 基于Session的短信登录需求&#xff1a;乐观锁解决超卖问题 悲观锁解决一人一单问题业务代码总结SpringCloud章节复习已经过去&#xff0c;新的章节Redis开始了&#xff0c;这个章节中将会回顾Redis实战项目 大众点评 主要依照以下几个原则 基础实战的Demo和Codi…

数字IC后端设计如何快速入门?(内附学习视频)

虽然2022年IC行业门槛有所提高&#xff0c;但这也抵挡不住同学们对转行IC行业的热情&#xff0c;数字后端设计的发展前景和高薪也在众多岗位中脱颖而出&#xff0c;那么数字IC后端设计如何快速入门&#xff1f;下面IC修真院就带大家来了解一下。 数字后端工程师是做什么的&…