10.Ceph接口使用

news2024/11/29 2:53:50

文章目录

  • Ceph接口使用
    • CephFS文件系统
      • 服务端
        • 添加mds服务
        • 创建存储池
        • 授权用户权限
      • 客户端
        • 前期准备
        • 客户端挂载
          • 方式一:基于内核
          • 方式二:基于 fuse 工具
    • Ceph 块存储系统 RBD 接口
      • 服务端
        • 创建存储池和镜像
        • 管理镜像
      • 客户端
        • 镜像挂载
        • 快照管理
        • 快照分层
        • 快照展平
        • 镜像的导出导入
    • OSD 故障模拟与恢复
      • 模拟 OSD 故障
      • 将坏掉的 osd 踢出集群
        • 方法一
        • 方法二
      • 把原来坏掉的 osd 修复后重新加入集群

Ceph接口使用

CephFS文件系统

服务端

添加mds服务

---admin---

###在管理节点创建 mds 服务

cd /etc/ceph

ceph-deploy mds create node01 node02 node03
###查看各个节点的 mds 服务

ssh root@node01 systemctl status ceph-mds@node01
ssh root@node02 systemctl status ceph-mds@node02
ssh root@node03 systemctl status ceph-mds@node03

创建存储池

###创建存储池,启用 ceph 文件系统
###ceph 文件系统至少需要两个 rados 池
###一个用于存储数据,一个用于存储元数据。此时数据池就类似于文件系统的共享目录。


ceph osd pool create cephfs_data 128					#创建数据Pool

ceph osd pool create cephfs_metadata 128				#创建元数据Pool


ceph osd lspools    ###能查看到资源池的ID号

在这里插入图片描述

###创建 cephfs,命令格式:
ceph fs new <FS_NAME> <CEPHFS_METADATA_NAME> <CEPHFS_DATA_NAME>


ceph fs new mycephfs cephfs_metadata cephfs_data		
#启用ceph,元数据Pool在前,数据Pool在后
###查看cephfs

ceph fs ls				

###查看mds状态,一个up,其余两个待命,目前的工作的是node01上的mds服务

ceph -s

mds: mycephfs:1 {0=node01=up:active} 2 up:standby

或

ceph mds stat

mycephfs:1 {0=node01=up:active} 2 up:standby

在这里插入图片描述

授权用户权限

---admin---

###创建用户
###语法格式:ceph fs authorize  <fs_name>  client.<client_id>  <path-in-cephfs>  rw

###账户为 client.zhangsan,用户 name 为 zhangsan,zhangsan 对ceph文件系统的 / 根目录(注意不是操作系统的根目录)有读写权限

ceph fs authorize mycephfs client.zhangsan / rw | tee /etc/ceph/zhangsan.keyring



###账户为 client.lisi,用户 name 为 lisi,lisi 对文件系统的 / 根目录只有读权限,对文件系统的根目录的子目录 /test 有读写权限

ceph fs authorize mycephfs client.lisi / r /test rw | tee /etc/ceph/lisi.keyring

在这里插入图片描述

客户端

前期准备

主机名public网络cluster网络角色
admin192.168.242.69admin(管理节点)
node01192.168.242.66192.168.242.100.11mon、mgr、osd
node02192.168.242.67192.168.242.100.12mon、mgr、osd
node03192.168.242.68192.168.242.100.13mon、osd
client192.168.242.70client
####防火墙设置
####关闭 selinux 与防火墙
####客户端要在 public 网络内

systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
###配置时间同步(一定要做)

systemctl enable --now chronyd
timedatectl set-ntp true					#开启 NTP
timedatectl set-timezone Asia/Shanghai		#设置时区
chronyc -a makestep							#强制同步下系统时钟
timedatectl status							#查看时间同步状态
chronyc sources -v							#查看 ntp 源服务器信息
timedatectl set-local-rtc 0					#将当前的UTC时间写入硬件时钟
###安装常用软件和依赖包

yum -y install epel-release

yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass
###在客户端安装 ceph 软件包

cd /opt

wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate

rpm -ivh ceph-release-1-1.el7.noarch.rpm

yum install -y ceph 
#######根据规划设置主机名

hostnamectl set-hostname client

su


####配置 hosts 解析

vim /etc/hosts

192.168.242.69 admin
192.168.242.66 node01
192.168.242.67 node02
192.168.242.68 node03
192.168.242.70 client
###在客户端创建工作目录

mkdir /etc/ceph

###在 ceph 的管理节点给客户端拷贝 ceph 的配置文件 ceph.conf 和账号的秘钥环文件 zhangsan.keyring、lisi.keyring


scp ceph.conf zhangsan.keyring lisi.keyring client:/etc/ceph
###在客户端制作秘钥文件

cd /etc/ceph

ceph-authtool -n client.zhangsan -p zhangsan.keyring > zhangsan.key			
###把 zhangsan 用户的秘钥导出到 zhangsan.keyl

ceph-authtool -n client.lisi -p lisi.keyring > lisi.key						
###把 lisi 用户的秘钥导出到 lisi.key

在这里插入图片描述

客户端挂载

方式一:基于内核
###语法格式:

mount -t ceph node01:6789,node02:6789,node03:6789:/  <本地挂载点目录>  -o name=<用户名>,secret=<秘钥>

mount -t ceph node01:6789,node02:6789,node03:6789:/  <本地挂载点目录>  -o name=<用户名>,secretfile=<秘钥文件>

示例一

mkdir -p /data/zhangsan

mount -t ceph node01:6789,node02:6789,node03:6789:/ /data/zhangsan -o name=zhangsan,secretfile=/etc/ceph/zhangsan.key

df -hT

示例二

mkdir -p /data/lisi

mount -t ceph node01:6789,node02:6789,node03:6789:/ /data/lisi -o name=lisi,secretfile=/etc/ceph/lisi.key
###验证用户权限
cd /data/lisi
echo 123 > 2.txt
-bash:2.txt:权限不够

echo 123 > test/2.txt
cat test/2.txt
123

在这里插入图片描述

示例三

###停掉 node02 上的 mds 服务

ssh root@node02 "systemctl stop ceph-mds@node02"

ceph -s

###测试客户端的挂载点仍然是可以用的,如果停掉所有的 mds,客户端就不能用了

在这里插入图片描述

方式二:基于 fuse 工具
###在 ceph 的管理节点给客户端拷贝 ceph 的配置文件 ceph.conf 和账号的秘钥环文件 zhangsan.keyring、lisi.keyring


scp ceph.client.admin.keyring client:/etc/ceph
###在客户端安装 ceph-fuse

yum install -y ceph-fuse
###客户端挂载

mkdir -p /data/aa

cd /data/aa

ceph-fuse -m node01:6789,node02:6789,node03:6789 /data/aa -o nonempty

#挂载时,如果挂载点不为空会挂载失败,指定 -o nonempty 可以忽略

在这里插入图片描述

Ceph 块存储系统 RBD 接口

服务端

创建存储池和镜像

---node01---

###创建一个名为 rbd-demo 的专门用于 RBD 的存储池

ceph osd pool create rbd-demo 64 64
---node01---

###将存储池转换为 RBD 模式

ceph osd pool application enable rbd-demo rbd
---node01---

###初始化存储池

rbd pool init -p rbd-demo			

# -p 等同于 --pool
---node01---

###创建镜像

rbd create -p rbd-demo --image rbd-demo1.img --size 10G

###可简写为:

rbd create rbd-demo/rbd-demo2.img --size 10G

在这里插入图片描述

管理镜像

###查看存储池下存在哪些镜像

rbd ls -l -p rbd-demo
###查看镜像的详细信息

rbd info -p rbd-demo --image rbd-demo1.img


###结果展示


rbd image 'rbd-demo.img':
	size 10 GiB in 2560 objects			
	#镜像的大小与被分割成的条带数
	
	order 22 (4 MiB objects)			
	#条带的编号,有效范围是12到25,对应4K到32M,而22代表2的22次方,这样刚好是4M
	
	snapshot_count: 0                                   #快照数量
	id: 5fc98fe1f304									#镜像的ID标识
	block_name_prefix: rbd_data.5fc98fe1f304			#名称前缀
	format: 2											#使用的镜像格式,默认为2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten			#当前镜像的功能特性
	
	op_features: 																	#可选的功能特性
	flags: 

在这里插入图片描述

###修改镜像大小

rbd resize -p rbd-demo --image rbd-demo1.img --size 20G

rbd info -p rbd-demo --image rbd-demo1.img

###使用 resize 调整镜像大小,一般建议只增不减,如果是减少的话需要加选项 --allow-shrink

rbd resize -p rbd-demo --image rbd-demo1.img --size 5G --allow-shrink

在这里插入图片描述

###直接删除镜像

rbd rm -p rbd-demo --image rbd-demo2.img

rbd remove rbd-demo/rbd-demo2.img
###删除镜像
###推荐使用 trash 命令,这个命令删除是将镜像移动至回收站,如果想找回还可以恢复

rbd trash move rbd-demo/rbd-demo1.img

rbd ls -l -p rbd-demo

rbd trash list -p rbd-demo             ###查看回收站的镜像
5fc98fe1f304 rbd-demo1.img

###还原镜像

rbd trash restore rbd-demo/5fc98fe1f304

rbd ls -l -p rbd-demo

在这里插入图片描述

客户端

  • 客户端使用 RBD 有两种方式:

    • 通过内核模块KRBD将镜像映射为系统本地块设备,通常设置文件一般为:/dev/rbd*
    • 另一种是通过librbd接口,通常KVM虚拟机使用这种接口。
  • 本例主要是使用Linux客户端挂载RBD镜像为本地磁盘使用。

  • 开始之前需要在所需要客户端节点上面安装ceph-common软件包,因为客户端需要调用rbd命令将RBD镜像映射到本地当作一块普通硬盘使用。

  • 并还需要把ceph.conf配置文件和授权keyring文件复制到对应的节点。

镜像挂载

--admin---

###在管理节点创建并授权一个用户可访问指定的 RBD 存储池
###指定用户标识为client.osd-mount,对另对OSD有所有的权限,对Mon有只读的权限


ceph auth get-or-create client.osd-mount osd "allow * pool=rbd-demo" mon "allow r" > /etc/ceph/ceph.client.osd-mount.keyring
--admin---

###修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭

rbd feature disable rbd-demo/rbd-demo1.img object-map,fast-diff,deep-flatten
--admin---

###将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下

cd /etc/ceph

scp ceph.client.osd-mount.keyring ceph.conf client:/etc/ceph
---client---

###安装 ceph-common 软件包

yum install -y ceph-common
###执行客户端映射

cd /etc/ceph

rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount
###查看映射

rbd showmapped
rbd device list

###断开映射

rbd unmap rbd-demo/rbd-demo1.img

在这里插入图片描述

###格式化并挂载

mkfs.xfs /dev/rbd0


mkdir -p /data/bb
mount /dev/rbd0 /data/bb

在这里插入图片描述

###在线扩容
###在管理节点调整镜像的大小

rbd resize rbd-demo/rbd-demo1.img --size 30G


###在客户端刷新设备文件

xfs_growfs /dev/rbd0		#刷新xfs文件系统容量
resize2fs /dev/rbd0			#刷新ext4类型文件系统容量

df -hT

在这里插入图片描述

快照管理

  • 对 rbd 镜像进行快照,可以保留镜像的状态历史
  • 另外还可以利用快照的分层技术,通过将快照克隆为新的镜像使用。
###在客户端写入文件

echo 1111 > /data/bb/11.txt
echo 2222 > /data/bb/22.txt
echo 3333 > /data/bb/33.txt
###在管理节点对镜像创建快照

rbd snap create --pool rbd-demo --image rbd-demo1.img --snap demo1_snap1

可简写为:

rbd snap create rbd-demo/rbd-demo1.img@demo1_snap1
###列出指定镜像所有快照

rbd snap list rbd-demo/rbd-demo1.img

##用json格式输出:

rbd snap list rbd-demo/rbd-demo1.img --format json --pretty-format

在这里插入图片描述

回滚镜像到指定

在回滚快照之前,需要将镜像取消镜像的映射,然后再回滚。
###在客户端操作

rm -rf /data/bb/*

umount /data/bb
rbd unmap rbd-demo/rbd-demo1.img

在这里插入图片描述

###在管理节点操作

rbd snap rollback rbd-demo/rbd-demo1.img@demo1_snap1

在这里插入图片描述

###在客户端重新映射并挂载

rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount
mount /dev/rbd0 /data/bb

ls /data/bb				#发现数据还原回来了

在这里插入图片描述

###限制镜像可创建快照数

rbd snap limit set rbd-demo/rbd-demo1.img --limit 3

###解除限制

rbd snap limit clear rbd-demo/rbd-demo1.img

###删除快照
###删除指定快照:

rbd snap rm rbd-demo/rbd-demo1.img@demo1_snap1

#删除所有快照:

rbd snap purge rbd-demo/rbd-demo1.img

在这里插入图片描述
在这里插入图片描述

快照分层

  • 快照分层支持用快照的克隆生成新镜像,这种镜像与直接创建的镜像几乎完全一样,支持镜像的所有操作。
  • 唯一不同的是克隆镜像引用了一个只读的上游快照,而且此快照必须要设置保护模式。
###快照克隆

##将上游快照设置为保护模式:
rbd snap create rbd-demo/rbd-demo1.img@demo1_snap666

rbd snap protect rbd-demo/rbd-demo1.img@demo1_snap666

###克隆快照为新的镜像

rbd clone rbd-demo/rbd-demo1.img@demo1_snap666 --dest rbd-demo/rbd-demo666.img

rbd ls -p rbd-demo

###命令查看克隆完成后快照的子镜像

rbd children rbd-demo/rbd-demo1.img@demo1_snap666

在这里插入图片描述

快照展平

###通常情况下通过快照克隆而得到的镜像会保留对父快照的引用,这时候不可以删除该父快照,否则会有影响。

rbd snap rm rbd-demo/rbd-demo1.img@demo1_snap666
#报错 snapshot 'demo1_snap666' is protected from removal.
###如果要删除快照但想保留其子镜像,必须先展平其子镜像,展平的时间取决于镜像的大小

###展平子镜像

rbd flatten rbd-demo/rbd-demo666.img

###取消快照保护

rbd snap unprotect rbd-demo/rbd-demo1.img@demo1_snap666

###删除快照

rbd snap rm rbd-demo/rbd-demo1.img@demo1_snap666


rbd ls -l -p rbd-demo			
#在删除掉快照后,查看子镜像依然存在

在这里插入图片描述

###挂载子镜像

###在服务端,给子镜像做映射
rbd map rbd-demo/rbd-demo666.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount

###解挂原始镜像的挂载
umount /dev/rbd0

mkdir -p /data/cc

###挂载子镜像
mount /dev/rbd1 /data/cc

在这里插入图片描述

镜像的导出导入

###导出镜像

rbd export rbd-demo/rbd-demo1.img  /opt/rbd-demo1.img
###导入镜像

#卸载客户端挂载,并取消映射

umount /data/bb
rbd unmap rbd-demo/rbd-demo1.img


###清除镜像下的所有快照,并删除镜像
rbd snap purge rbd-demo/rbd-demo1.img
rbd rm rbd-demo/rbd-demo1.img

rbd ls -l -p rbd-demo

在这里插入图片描述
在这里插入图片描述

###导入镜像

rbd import /opt/rbd-demo1.img  rbd-demo/rbd-demo1.img

rbd ls -l -p rbd-demo

在这里插入图片描述

OSD 故障模拟与恢复

模拟 OSD 故障

###模拟 OSD 故障

###如果 ceph 集群有上千个 osd,每天坏 2~3 个太正常了,我们可以模拟 down 掉一个 osd

###如果 osd 守护进程正常运行,down 的 osd 会很快自恢复正常,所以需要先关闭守护进程

ssh root@node01 systemctl stop ceph-osd@0

###down 掉 osd
ceph osd down 0

ceph osd tree

在这里插入图片描述

将坏掉的 osd 踢出集群

方法一

###将 osd.0 移出集群,集群会开始自动同步数据

ceph osd out osd.0
###将 osd.0 移除 crushmap

ceph osd crush remove osd.0
###删除守护进程对应的账户信息

ceph auth rm osd.0

ceph auth list

在这里插入图片描述

###删掉 osd.0

ceph osd rm osd.0

ceph osd stat
ceph -s

在这里插入图片描述

方法二

ceph osd out osd.0

###使用综合步骤,删除配置文件中针对坏掉的 osd 的配置

ceph osd purge osd.0 --yes-i-really-mean-it

把原来坏掉的 osd 修复后重新加入集群

###在 osd 节点创建 osd,无需指定名,会按序号自动生成

cd /etc/ceph

ceph osd create

在这里插入图片描述

---admin---

###创建账户

ceph-authtool --create-keyring /etc/ceph/ceph.osd.0.keyring --gen-key -n osd.0 --cap mon 'allow profile osd' --cap mgr 'allow profile osd' --cap osd 'allow *'
---admin---

###导入新的账户秘钥

ceph auth import -i /etc/ceph/ceph.osd.0.keyring

ceph auth list

在这里插入图片描述

###更新对应的 osd 文件夹中的密钥环文件

ceph auth get-or-create osd.0 -o /var/lib/ceph/osd/ceph-0/keyring
---admin---

###加入 crushmap

ceph osd crush add osd.0 1.000 host=node01		#1.000 代表权重

###加入集群
ceph osd in osd.0

ceph osd tree

在这里插入图片描述

---osd节点---

###重启 osd 守护进程
systemctl restart ceph-osd@0

ceph osd tree		#稍等片刻后 osd 状态为 up

在这里插入图片描述

###如果重启失败

报错:
Job for ceph-osd@0.service failed because start of the service was attempted too often. See "systemctl  status ceph-osd@0.service" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed ceph-osd@0.service" followed by "systemctl start ceph-osd@0.service" again.

####运行

systemctl reset-failed ceph-osd@0.service && systemctl restart ceph-osd@0.service

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

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

相关文章

Ubuntu20.04升级到Ubuntu 22.04

升级Ubuntu到最新版本 执行如下命令将Ubuntu升级到最新的版本&#xff1a; $ sudo apt update && sudo apt upgrade -y升级完成后&#xff0c;重启系统 reboot重启成功之后&#xff0c;查看系统的当前版本 $ lsb_release -a最新版本应该是20.04.6&#xff0c;如下图…

JTS-Orientation方向计算

org.locationtech.jts.algorithm.Orientation 使用说明 用于计算基本几何结构(包括点三重体(三角形)和环)的方向的函数。方向是平面几何的基本属性。 Orientation.index(Coordinate p1, Coordinate p2, Coordinate q) 说明 计算q点处在p1点->p2点方向的左侧还是右侧,左侧…

9. selenium API 【万字】

目录 1. 元素的定位 1.1 css selector 1.1.1 id 选择器 1.1.2 类选择器 1.1.3 标签选择器 1.1.4 后代选择器 1.2 xpath 1.2.1 相对路径 索引 1.2.2 相对路径 元素 1.2.3 相对路径 通配符 1.2.4 相对路径 部分元素定位 1.2.5 相对路径 文本定位 1.3 应用&…

gazebo软件建立带摄像和红外功能的小车

背景&#xff1a; 为了方便调整摄像头的高度&#xff0c;我需要重新构建以下带小车的模型。小白分享来了。 目录 1. 先构建一个能跑的小车。 1.1 gazebo设计四个物体&#xff1a;车体三个车轮。组合然后构建好后在本地保存成小车模型。 1.2 打开本地文件添加plugin插件&…

转行软件测试成功的关键因素是什么?

三年前张伟是一名厨师,职高毕业&#xff0c;团队一共有5个人&#xff0c;大家各自负责自己的模块&#xff0c;整体上感觉相差不大&#xff0c;特别的团结稳定。 可是后来随着疫情的发生&#xff0c;对整个社会都产生了严重的冲击&#xff0c;饭店每天的订单是越来越少&#xf…

Spark 4:Spark Core 共享变量

广播变量 # coding:utf8 import timefrom pyspark import SparkConf, SparkContext from pyspark.storagelevel import StorageLevelif __name__ __main__:conf SparkConf().setAppName("test").setMaster("local[*]")sc SparkContext(confconf)stu_inf…

设计模式day03

01gradle极速安装与配置入门 下载6.8.2版本,配置环境变量 配置镜像仓库 给gradle安装目录下init.d文件夹&#xff0c;放一个init.gradle文件&#xff0c;内容如下&#xff1a; gradle.projectsLoaded {rootProject.allprojects {buildscript {repositories {def JCENTER_URL…

go语言计算推算心率算法 http服务

目的 为了计算心率和并且将心率计算作为http服务来运行 几种计算方法 1 基本数据 a&#xff09; hrv heart rate variability b&#xff09; 呼吸 2 傅里叶变换 计算频率 高频和低频 3 隐形马尔科夫 模型 hmm 重在于推测概率 根据最近的心率计算 4 神经网络计算 基本计算 …

APP外包开发原生和H5的对比

在开发APP的技术中&#xff0c;除了原生开发外也可以使用H5框架来开发。原生开发的特点是质量高&#xff0c;用户体验更好&#xff0c;但成本高&#xff0c;适用于对质量要求高的APP项目。H5框架的特点是通用性较强&#xff0c;对开发人员的要求相对较低&#xff0c;成本也低&a…

23款奔驰GLE350轿跑加装前排原厂座椅通风系统,夏天必备的功能

通风座椅的主动通风功能可以迅速将座椅表面温度降至适宜程度&#xff0c;从而确保最佳座椅舒适性。该功能启用后&#xff0c;车内空气透过打孔皮饰座套被吸入座椅内部&#xff0c;持续时间为 8 分钟。然后&#xff0c;风扇会自动改变旋转方向&#xff0c;将更凉爽的环境空气从座…

怎么批量查询快递单号的物流状态并导出查询数据

随着互联网技术的不断发展&#xff0c;电商行业想做大做强&#xff0c;售后环节一定要做到位。想要做好售后服务&#xff0c;需要借助一些技巧与手段。今天小编给大家安利一款软件&#xff1a;“固乔快递查询助手”&#xff0c;这是一款可以批量查询快递信息的软件&#xff0c;…

python_PyQt5开发股票日数据更新工具

写在前面&#xff1a; 该工具更新的股票日数据来自优矿&#xff0c;为了把股票日数据在本地存储一份&#xff0c;这就面临需要定期更新的需求&#xff0c;为此开发了这个工具。 定期更新的股票日数据特征&#xff1a; 1 旧股票日数据&#xff08;也就是上次更新的数据&#…

【机器学习】吴恩达课程2-单变量线性回归

一、单变量线性回归 1. 模型描述 监督学习的流程 & 单变量线性回归函数 代价函数&#xff1a;&#xff0c;其中 m 表示训练样本的数量 公式为预测值与实际值的差&#xff0c;平方为最小二乘法和最佳平方/函数逼近。 目标&#xff1a;最小化代价函数&#xff0c;即 2. 只…

PR模板-33组故障干扰文字标题动画 Motion Glitch Typography

Motion Glitch Typography包含33组故障干扰文字标题动画pr模板。不需要任何插件或脚本&#xff0c;只需点击几下&#xff0c;您的视频就有很酷的故障标题动画&#xff0c;适用于预告片、宣传片或任何类型的视频。 适用软件&#xff1a;Premiere Pro 2020 或更高版本 分辨率&a…

Go语言之函数补充defer语句,递归函数,章节练习

defer语句是go语言提供的一种用于注册延迟调用的机制&#xff0c;是go语言中一种很有用的特性。 defer语句注册了一个函数调用&#xff0c;这个调用会延迟到defer语句所在的函数执行完毕后执行&#xff0c;所谓执行完毕是指该函数执行了return语句、函数体已执行完最后一条语句…

密码学学习笔记(十四):SHA-3 Sponge Construction - 海绵结构

SHA-3算法满足了哈希函数的三个安全属性&#xff0c;并且和SHA-2的变体达到同样级别的安全性。此外&#xff0c;SHA-3算法不容易受到长度扩展攻击&#xff0c;并可用于计算秘密消息的哈希值。 SHA-3是一种建立在Permutation(置换)之上的密码算法。 置换就是假设有两个数组a和…

Hadoop第一课之环境配置

1.配置一个模板机 要求&#xff1a;IP DNS地址页 网址 防火墙 安装包 1.ip ifconfig 查询 先用虚拟机看一下自己的网关 vim search/provides 命令 查找 # 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 如果提示找不到vim命令&#xff0c;使用yum下载v…

Springboot Excel 最简单的 多sheet表 导入导出

前言 上周学习群里有人问到&#xff0c;多个sheet的导出导入&#xff0c;我第一反应就是easypoi不是自己就有方法了么&#xff1f; 后面一想&#xff0c;可能有些看客还处于是 找工具类&#xff0c;然后调试 的写代码 的 阶段&#xff0c;可能还不会去看jar包的一些函数。 既然…

SpringMVC入门篇5 --- 拦截器

目录 1. 简介 拦截器&#xff08;Interceptor&#xff09;是一种动态拦截方法调用的机制。 作用&#xff1a; 在指定的方法调用前后执行预先设定后的代码。阻止原始方法的执行。 拦截器与过滤器的区别 归属不同&#xff1a;Filter属于Servlet技术&#xff0c;Interceptor…

使用vue3 + Ts + Vite + ElementPlus实现一个抽奖程序

一. 说明 这是一个通过vue3 Ts Vite ElementPlus实现的一个抽奖程序。项目链接 二. 整体架构与功能描述 左侧设置了奖品说明&#xff0c;每个奖项配有文字和图片简介。总共设置了四个奖项&#xff0c;分别是特等奖1名&#xff0c;一等奖2名&#xff0c;二等奖5名&#xf…