尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

news2025/2/26 3:02:19

视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili

  1. 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】
  2. 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程、案例实操)】
  3. 尚硅谷大数据技术Spark教程-笔记03【SparkSQL(概述、核心编程、项目实战)】
  4. 尚硅谷大数据技术Spark教程-笔记04【SparkStreaming(概述、Dstream入门、DStream创建)】
  5. 尚硅谷大数据技术Spark教程-笔记05【SparkStreaming(DStream转换、DStream输出、优雅关闭、SparkStreaming案例实操)】

目录

01_尚硅谷大数据技术之SparkCore

第01章-Spark概述

P001【001.尚硅谷_Spark框架 - 简介】04:54

P002【002.尚硅谷_Spark框架 - Vs Hadoop】07:49

P003【003.尚硅谷_Spark框架 - 核心模块 - 介绍】02:24

第02章-Spark快速上手

P004【004.尚硅谷_Spark框架 - 快速上手 - 开发环境准备】05:46

P005【005.尚硅谷_Spark框架 - 快速上手 - WordCount - 案例分析】07:57

P006【006.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark环境】07:07

P007【007.尚硅谷_Spark框架 - 快速上手 - WordCount - 功能实现】11:56

P008【008.尚硅谷_Spark框架 - 快速上手 - WordCount - 不同的实现】08:31

P009【009.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark的实现】04:24

P010【010.尚硅谷_Spark框架 - 快速上手 - WordCount - 日志和错误】03:50

第03章-Spark运行环境

P011【011.尚硅谷_Spark框架 - 运行环境 - 本地环境 - 基本配置和操作】08:11

P012【012.尚硅谷_Spark框架 - 运行环境 - 本地环境 - 提交应用程序】03:10

P013【013.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 基本配置和操作】06:13

P014【014.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 提交参数解析】03:08

P015【015.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 配置历史服务】04:08

P016【016.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 配置高可用】05:51

P017【017.尚硅谷_Spark框架 - 运行环境 - Yarn环境 - 基本配置 & 历史服务】06:42

P018【018.尚硅谷_Spark框架 - 运行环境 - Windows环境 & 总结】11:06

第04章-Spark运行架构

P019【019.尚硅谷_Spark框架 - 核心组件 - 介绍】03:33

P020【020.尚硅谷_Spark框架 - 核心概念 - Executor & Core & 并行度】03:31

P021【021.尚硅谷_Spark框架 - 核心概念 - DAG & 提交流程 & Yarn两种部署模式】07:00


01_尚硅谷大数据技术之SparkCore

制作不易,大家记得点个关注,一键三连呀【点赞、投币、收藏】感谢支持~ 众所期待,隆重推出!大数据领域中杀手级的应用计算框架:Spark视频教程。 本套视频教程基于Scala 2.12版本,对Spark 3.0版本的核心模块进行了详尽的源码级讲解,授课图文并茂,资料详实丰富,带你领略不一样的技术风景线。课程内容涉及方方面面,函数式编程,你熟悉吗?认知心理学,你知道吗?工程化代码框架,你了解吗?在这套Spark视频教程中,你想要的这些全都有!

第01章-Spark概述

P001【001.尚硅谷_Spark框架 - 简介】04:54

Spark 出现的时间相对较晚,并且主要功能主要是用于数据计算,所以其实 Spark 一直被认为是 Hadoop 框架的升级版。

P002【002.尚硅谷_Spark框架 - Vs Hadoop】07:49

spark将计算结果放到了内存中为下一次计算提供了更加便利的方式。

选择spark而非hadoop与MapReduce的原因:spark计算快,内存计算策略、先进的调度机制,spark可以更快地处理相同的数据集。

spark面对的问题:spark若部署在共享的集群中可能会遇到资源不足的问题,spark占用的资源更多一些,所以spark不适合与hadoop堆栈等组件一起使用。

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

P003【003.尚硅谷_Spark框架 - 核心模块 - 介绍】02:24

1.4 核心模块

  1. 【Spark Core】Spark Core 中提供了Spark最基础与最核心的功能,Spark 其他的功能如:Spark SQL, Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基础上进行扩展的
  2. 【Spark SQL】Spark SQL 是Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)来查询数据。
  3. 【Spark Streaming】Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API。
  4. 【Spark MLlib】MLlib 是 Spark 提供的一个机器学习算法库。MLlib不仅提供了模型评估、数据导入等额外的功能,还提供了一些更底层的机器学习原语。
  5. 【Spark GraphX】GraphX 是 Spark 面向图计算提供的框架与算法库。

第02章-Spark快速上手

P004【004.尚硅谷_Spark框架 - 快速上手 - 开发环境准备】05:46

第2章 Spark快速上手

先在file-settings-plugin里面安装Scala插件,然后在这里的global libraries里点+号选Scala,再downloading对应版本的scala。

 

package com.atguigu.bigdata.spark.core

object Test {
  def main(args: Array[String]): Unit = {
    println("Hello, spark!")
  }
}

P005【005.尚硅谷_Spark框架 - 快速上手 - WordCount - 案例分析】07:57

WordCount思路

P006【006.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark环境】07:07

TODO是标记下,表示待完善

package com.atguigu.bigdata.spark.core.wc

import org.apache.spark.{SparkConf, SparkContext};

object Spark01_WordCount {
  def main(args: Array[String]): Unit = {
    //Application、Spark框架,如何让Spark框架运行application

    //Application应用程序

    //Spark框架,运行应用程序的环境
    //TODO 建立和Spark框架的连接
    //JDBC:Connection
    //SparkConf():基础配置对象、setMaster():本地运行环境、setAppName():设置应用程序名称
    val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparkConf) //saprk上下文对象

    //TODO 执行业务操作

    //TODO 关闭连接
    sc.stop()
  }
}

P007【007.尚硅谷_Spark框架 - 快速上手 - WordCount - 功能实现】11:56

_.split() 等价于 x => x.split() 等价于 (x) => {x.split},是一个匿名函数。

package com.atguigu.bigdata.spark.core.wc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext};

object Spark01_WordCount {
  def main(args: Array[String]): Unit = {
    //Application、Spark框架,如何让Spark框架运行application

    //Application应用程序

    //Spark框架,运行应用程序的环境
    //TODO 建立和Spark框架的连接
    //JDBC:Connection
    val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")
    //SparkConf():基础配置对象、setMaster():本地运行环境、setAppName():设置应用程序名称
    val sc = new SparkContext(sparkConf) //saprk上下文对象

    //TODO 执行业务操作
    //1.读取文件,获取一行一行的数据(以行为单位读取数据)
    //hello world
    val lines: RDD[String] = sc.textFile("datas")

    //2.将一行数据进行拆分,形成一个一个的单词(分词)
    //扁平化:将整体拆分成个体的操作
    //"hello world" => hello, world, hello, world
    val words: RDD[String] = lines.flatMap(_.split(" "))

    //3.将数据根据单词进行分组,便于统计
    //(hello, hello, hello), (world, world)
    val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)

    //4.对分组后的数据进行转换
    //(hello, hello, hello), (world, world)
    //(hello, 3), (world, 2)
    val wordToCount = wordGroup.map {
      case (word, list) => {
        (word, list.size)
      }
    }

    //5.将转换结果采集到控制台打印出来
    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(println)

    //TODO 关闭连接
    sc.stop()
  }
}

P008【008.尚硅谷_Spark框架 - 快速上手 - WordCount - 不同的实现】08:31

package com.atguigu.bigdata.spark.core.wc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark02_WordCount {
  def main(args: Array[String]): Unit = {
    // TODO 建立和Spark框架的连接
    val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparConf)

    // TODO 执行业务操作
    // 1. 读取文件,获取一行一行的数据
    val lines: RDD[String] = sc.textFile("datas")

    // 2. 将一行数据进行拆分,形成一个一个的单词(分词),扁平化
    val words: RDD[String] = lines.flatMap(_.split(" "))

    var wordToOne = words.map(
      word => (word, 1)
    )

    // 3. 将单词进行结构的转换,方便统计
    val wordGroup: RDD[(String, Iterable[(String, Int)])] = wordToOne.groupBy(
      t => t._1
    )

    // 4. 对分组后的数据进行转换
    val wordToCount = wordGroup.map {
      case (word, list) => {
        list.reduce( //val wordCount: (String, Int) =
          (t1, t2) => {
            (t1._1, t1._2 + t2._2)
          }
        )
      }
    }

    // 5. 将转换结果采集到控制台打印出来
    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(println)

    //TODO 关闭连接
    sc.stop()
  }
}

P009【009.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark的实现】04:24

package com.atguigu.bigdata.spark.core.wc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark03_WordCount {
  def main(args: Array[String]): Unit = {
    // TODO 建立和Spark框架的连接
    val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparConf)

    // TODO 执行业务操作
    val lines: RDD[String] = sc.textFile("datas")

    val words: RDD[String] = lines.flatMap(_.split(" "))

    var wordToOne = words.map(
      word => (word, 1)
    )

    // Spark框架提供了更多的功能,可以将分组和聚合使用一个方法实现
    // reduceByKey:相同的key数据,可以对value进行reduce聚合
    // wordToOne.reduceByKey((x, y) => {x + y})
    // wordToOne.reduceByKey((x, y) => x + y)
    val wordToCount = wordToOne.reduceByKey(_ + _)

    val array: Array[(String, Int)] = wordToCount.collect()
    array.foreach(println)

    //TODO 关闭连接
    sc.stop()
  }
}

P010【010.尚硅谷_Spark框架 - 快速上手 - WordCount - 日志和错误】03:50

执行过程中,会产生大量的执行日志,如果为了能够更好的查看程序的执行结果,可以在项目的resources目录中创建log4j.properties文件,并添加日志配置信息。

log4j.rootCategory=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Set the default spark-shell log level to ERROR. When running the spark-shell, the
# log level for this class is used to overwrite the root logger's log level, so that
# the user can have different defaults for the shell and regular Spark apps.
log4j.logger.org.apache.spark.repl.Main=ERROR

# Settings to quiet third party logs that are too verbose
log4j.logger.org.spark_project.jetty=ERROR
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=ERROR
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=ERROR
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR

# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR

第03章-Spark运行环境

P011【011.尚硅谷_Spark框架 - 运行环境 - 本地环境 - 基本配置和操作】08:11

第3章-spark运行环境

 

sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

P012【012.尚硅谷_Spark框架 - 运行环境 - 本地环境 - 提交应用程序】03:10

P013【013.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 基本配置和操作】06:13

3.2 Standalone模式

P014【014.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 提交参数解析】03:08

3.2.4 提交应用

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://linux1:7077 \

./examples/jars/spark-examples_2.12-3.0.0.jar \

10

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

P015【015.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 配置历史服务】04:08

先启动hadoop服务(主要是hdfs),再启动spark相关服务。

 

su atguigu
myhadoop.sh start
jpsall

cd /opt/module/spark-standalone/
bin/spark-shell
sbin/start-all.sh
sbin/start-history-server.sh
jpsall

history

  1. http://node1:9870/explorer.html#/
  2. http://node1:4040/jobs/
  3. http://node1:8080/
  4. http://node1:8020/
  5. http://node1:18080/

3.2.6 配置历史服务

P016【016.尚硅谷_Spark框架 - 运行环境 - 独立部署环境 - 配置高可用】05:51

3.2.7 配置高可用(HA)

所谓的高可用是因为当前集群中的Master节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个Master节点,一旦处于活动状态的Master发生故障时,由备用Master提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper设置。

Linux1

Linux2

Linux3

Spark

Master

Zookeeper 

Worker

Master

Zookeeper

Worker

Zookeeper

Worker

省流简洁版zookeeper环境搭建:zookeeper 3.5.7安装部署

视频地址:【尚硅谷】大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili

  1. 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】
  2. 尚硅谷大数据技术Zookeeper教程-笔记02【服务器动态上下线监听案例、ZooKeeper分布式锁案例、企业面试真题】
  3. 尚硅谷大数据技术Zookeeper教程-笔记03【源码解析-算法基础】
  4. 尚硅谷大数据技术Zookeeper教程-笔记04【源码解析-源码详解】

P017【017.尚硅谷_Spark框架 - 运行环境 - Yarn环境 - 基本配置 & 历史服务】06:42

3.3 Yarn模式

独立部署(Standalone)模式由 Spark 自身提供计算资源,无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是你也要记住,Spark 主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是和其他专业的资源调度框架集成会更靠谱一些。所以接下来我们来学习在强大的Yarn 环境下 Spark 是如何工作的(其实是因为在国内工作中,Yarn 使用的非常多)。

3.3.5 配置历史服务器

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root, access=WRITE, inode="/user":atguigu:super

hadoop fs -chmod -R 777 /

P018【018.尚硅谷_Spark框架 - 运行环境 - Windows环境 & 总结】11:06

3.4 K8S&Mesos模式

Mesos 是Apache 下的开源分布式资源管理框架,它被称为是分布式系统的内核,在Twitter 得到广泛使用,管理着 Twitter 超过 30,0000 台服务器上的应用部署,但是在国内,依然使用着传统的Hadoop 大数据框架,所以国内使用 Mesos 框架的并不多,但是原理其实都差不多,这里我们就不做过多讲解了。

3.5 Windows模式

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

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

3.6 部署模式对比

模式

Spark 安装机器数

需启动的进程

所属者

应用场景

Local

1

Spark

测试

Standalone

3

Master Worker

Spark

单独部署

Yarn

1

Yarn 及 HDFS

Hadoop

混合部署

3.7 端口号

  1. Spark 查看当前 Spark-shell 运行任务情况端口号:4040(计算)
  2. Spark Master 内部通信服务端口号:7077
  3. Standalone 模式下,Spark Master Web 端口号:8080(资源)
  4. Spark 历史服务器端口号:18080
  5. Hadoop YARN 任务运行情况查看端口号:8088

第04章-Spark运行架构

P019【019.尚硅谷_Spark框架 - 核心组件 - 介绍】03:33

第4章 Spark运行架构

4.1 运行架构

4.2.1 Driver

4.2.2 Executor

4.2.3 Master&Worker

4.2.4 ApplicationMaster

P020【020.尚硅谷_Spark框架 - 核心概念 - Executor & Core & 并行度】03:31

4.3 核心概念

4.3.1 Executor与Core

4.3.2 并行度(Parallelism)

P021【021.尚硅谷_Spark框架 - 核心概念 - DAG & 提交流程 & Yarn两种部署模式】07:00

4.3.3 有向无环图(DAG)

4.4 提交流程

4.2.1 Yarn Client 模式

4.2.2 Yarn Cluster 模式

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

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

相关文章

Scala之面向对象(2)

目录 单例对象(伴生对象): 创建对象常用的两种方法: (1)使用构造器构造(new) (2)使用静态方法 伴生对象的定义: apply方法: app…

图像分割技术及经典实例分割网络Mask R-CNN(含基于Keras Python源码定义)

图像分割技术及经典实例分割网络Mask R-CNN(含Python源码定义) 文章目录图像分割技术及经典实例分割网络Mask R-CNN(含Python源码定义)1. 图像分割技术概述2. FCN与语义分割2.1 FCN简介2.2 反卷积2.2 FCN与语义分割的关系3. Mask …

Midjourney以图生图的详细教程(含6种案例介绍)

🏆 文章目标:学习并介绍Midjourney以图生图的详细教程 🍀 Midjourney以图生图的详细教程 ✅ 创作者:熊猫Jay 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您&#xff0c…

SQL Server 单表数据查询

提示: 本篇文章详细介绍怎样向SQLServer中导入表格数据,导入之后根据不同的查询条件完成查询任务. 文章目录前言一、向SQL Server中导入数据二、例题1.查询所有学生的全部信息2.查询学生的学号和姓名3.查询所有学生的姓名和出生年4. 查询所有学生的姓名和出生年&…

【关于Linux中----生产消费模型】

文章目录一、生产消费模型1.1概念的引入1.2 321原则二、条件变量2.1概念的引入2.2理解条件变量2.3条件变量的使用三、基于BlockingQueue的生产者消费者模型3.1BlockingQueue的介绍3.2C queue模拟阻塞队列的生产消费模型3.3对生产消费任务的模拟封装四、遗留问题一、生产消费模型…

基于YOLOv5的水下海洋目标检测

摘要:水下海洋目标检测技术具有广泛的应用前景,可以用于海洋环境监测、海洋资源开发、海洋生物学研究等领域。本文提出了一种基于 YOLOv5 的水下海洋目标检测方法,使用数据增强方法进行了大量实验,并与其他方法进行了对比&#xf…

(SQL学习随笔3)SQL语法——SELECT语句

导航基本认识FROM关键字LIMIT与OFFSETORDER BYWHERE条件查询单值比较多条件组合范围筛选空值匹配LIKE通配条件分组运算符和函数数据变换分组运算表连接内连接左(右)外连接全外连接外键约束窗口函数UNION:表上下拼接子查询条件判断PostgreSQLMySQL基本认识 SELECT t…

【论文阅读】BiSeNet V2用于实时语义分割的双边网络

前言BiSeNet V2延续了v1版本的双边结构,分别处理空间细节信息、高层语义信息。同时设计更简洁高效的结构,进行特征提取,实现高精度和高速度。在训练模型时,使用了增强训练策略 ,添加多个辅助训练分支来促进不同浅层网络…

Spring-aop面向切面

1、理解必要的专业术语 先看看上面图,这是我的个人理解。(画的丑,主打真实) 1)Advice,通知/增强:类方法中提出来的共性功能(大白话就是提出来的重复代码) 2)Pointcut,切入点/切点&#…

【微服务】微服务架构下你不得不知的3种部署策略

文章目录前言滚动部署蓝绿部署金丝雀部署总结前言 不知道大家有了解过你们公司的软件产品是如何部署的么?采用的什么部署策略?其实在软件开发生命周期中,部署是非常关键的一环,你需要考虑多方面的因素,如何保证你部署…

【推荐算法】CTR中embedding层的学习和训练

note 连续特征处理:facebook DLRM模型,对连续值的处理方式是把所有的连续值输入到一个神经网络,然后通过神经网络把它压缩到一个embedding维度大小的一个向量上,然后将Embedding和其他离散特征Embedding Concat起来,再…

springboot-分页功能

1.分页功能的作用 分页功能作为各类网站和系统不可或缺的部分(例如百度搜索结果的分页等) ,当一个页面数据量大的时候分页作用就体现出来的,其作用有以下5个。 (1)减少系统资源的消耗 (2&#…

redis设计与实现读书笔记

这里主要记录一下在阅读redis设计与实现中碰到的一些没有记录过的知识。 引用计数技术 Redis的对象系统实现了基于引用计数技术的内存回收机制,当程序不再使用某个对象的时候,这个对象所占用的内存就会被自动释放;另外,Redis还通过引用计数…

低调且强大--iVX低代码平台

iVX目录前言一、低代码那么多 为什么选择iVX?二、“拼”出来的低代码平台,真的好用吗?三、iVX与其他低代码有啥可比性?前言 首先我们应该明白自动编程突破可能是:领域内Mini LLM 现在的思路都是搞LLM,几乎像…

通俗举例讲解动态链接、静态链接

参考动态链接 - 知乎 加上我自己的理解,比较好懂,但可能在细节方面有偏差,但总体是一致的 静态链接的背景 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率&#xf…

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

🍎道阻且长,行则将至。🍓 目录引言:西部世界元宇宙,还记得吗ChatGPT 的世界?下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景&am…

springboot验证码生成及验证功能

1.easy-captcha工具包 生成验证码的方式有许多种,这里选择的是easy-captcha工具包。 github开原地址为:easy-captcha工具包 其支持Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。 2添加依赖 首先需…

SQL Server的死锁说明

死锁指南一、了解死锁二、检测并结束死锁2.1、可能死锁的资源三、处理死锁四、最大限度地减少死锁4.1、以相同的顺序访问对象4.2、避免事务中的用户交互4.3、保持交易简短且在一个批次中4.4、使用较低的隔离级别4.5、使用基于行版本控制的隔离级别4.6、使用绑定连接4.7、停止事…

【云原生|Docker】04-docker的资源限制

目录 前言 容器的生命周期 1. 容器的启动过程 2. 容器的生命周期 ​编辑 内存限制 1. 内存限制的相关参数 2. 内存限制方式 2.1 设置-m,--memory,不设置--memory-swap 2.2 设置-m,--memorya,--memory-swapb,且b >a 2.…

本地从0搭建Stable Diffusion WebUI及错误记录

从0开始搭建本地Stable Diffusion WebUI环境 一.环境配置 1.使用的电脑配置 系统Windows10处理器英特尔 i7内存24GB显卡NVIDIA GTX 1060(6GB) 2.镜像源 阿里云 清华大学 中国科技大学 3.电脑环境变量配置 我的电脑–属性–高级系统设置–系统属性(高级)–环境变量 新建…