网站集群批量管理-密钥认证与Ansible模块
一、集群批量管理-密钥认证
1、概述
管理更加轻松:两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向.
服务要求(应用场景):
- 一些服务在使用前要求我们做秘钥认证.
- 手动写批量管理脚本.
名字: 密钥认证,免密码登录,双机互信.
2、原理
税钥对:
公钥:public key 一般以 .pub 结尾.
私钥:private key 没有特殊的结尾
3、上手指南
基本检查
#检查网络是否能通
ping ip地址
#检查端口连通性。telnet ip 22也可以,nmap多用于多ip和扫描所有端口
nmap -p22 ip地址
3.1、创建密钥对
只能创建一次,否则再次创建会导致密钥失效。说明其他服务通过秘钥链接的全部失效
ssh-keygen -t rsa
#注意创建的啥时候也可以不加-t
通过rsa方法对数据进行加密,
[root@localhost .ssh]# tree
.
├── id_rsa
└── id_rsa.pub
3.2、分发公钥
#传给你需要免密测试的那台机器(-i /root/.ssh/id_rsa.pub可省略)
ssh-copy-id root@IP地址
ssh-copy-id -i /root/.ssh/id_rsa.pub root@IP
#传到对端服务器改名为
[root@localhost .ssh]# tree
.
├── authorized_keys
3.3、连接测试
ssh root@IP地址
4、自动化创建与分发密钥
阻碍:
- 创建密钥对
- 分发公钥的时候:yes/no(yes后会把信息保存到.ssh/known_hosts)
- 分发公钥的时候:输入密码
4.1、自动化创建密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
-f 用于指定私钥的位置
-P 密码短语 设置为空
4.2、自动化分发公钥
sshpass -p*** ssh-copy-id -oStrictHostKeyChecking=no IP地址#安装密码提供密码
yum install -y sshpass
#sshpass命令基本使用
-p 指定密码:
sshpass -p*** ssh 10.0.0.7 hostname -I
#使用sshpass 与ssh-copy-id分发公钥
sshpass -p*** ssh-copy-id -oStrictHostKeyChecking=no IP
补充说明:
sshpass适用于给ssh相关的命令提供密码:ssh,scp,ssh-copy-id.
阻碍:第1次连接的时候提示yes/no
温馨提示:第1次远程的提示 yes/no,主机密钥信息检查,输入yes后存放到~/.ssh/known_hosts 解决思路:临时取消即可,连接的时候不检查主机信息、-oStrictHostKeychecking=no 临时不检查主机信息。
SSH使用密钥对来进行身份验证和加密通信。当你连接一个未知的主机时,SSH会生成一个主机密钥对,并将公钥发送给你的客户端。你的客户端会提示你是否要保存这个公钥。如果你选择保存,该公钥将被存储在你的本地计算机上的一个文件中,通常是 known_hosts 文件中。之后,当你再次连接该主机时,SSH会使用这个已保存的公钥来验证主机的身份,以确保连接的安全性。
4.3、自动化创建密钥与分发脚本
1.0
#!/bin/bash
# author: linux皆文件
# version: v1.0
# desc: creating key, distributing key# 1 vars
password=1
ips="10.0.0.7 10.0.0.31"# 1.4 Networking or not
# 1.5 Whether yum is supported# 2 Creating a key_pair
if [ -f ~/.ssh/id_rsa ] ;thenecho "The key_pair already exists"
elseecho "Creating a key_pair..."ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' &>/dev/null
fi# 3 Batch send public_key through a loop
for ip in $ips
dosshpass -p${password} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStricHostKeyChecking=no $ip &>/dev/nullecho "$ip success..."
1.1
#!/bin/bash
# author: linux皆文件
# version: v1.1
# desc: creating key, distributing key# 1 vars
password=a
ips="10.0.0.7 10.0.0.31"
. /etc/init.d/functions# 1.4 Networking or not
# 1.5 Whether yum is supported# 2 Creating a key_pair
if [ -f ~/.ssh/id_rsa ] ;thenecho "The key_pair already exists"
elseecho "Creating a key_pair..."ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' &>/dev/nullif [ $? -eq 0 ] ;thenaction "Key_pair created successfully" /bin/trueelseaction "Key_pair creation failure" /bin/falsefi
fi# 3 Batch send public_key through a loop
for ip in $ips
dosshpass -p${password} ssh-copy-id -i ~/.ssh/id_rsa.pub -oStrictHostKeyChecking=no $ip &>/dev/nullif [ $? -eq 0 ] ;thenaction "$ip success..." /bin/trueelseaction "$ip failure..." /bin/falsefi
done
密钥自动化检查脚本
[root@m01 ~]# cat /server/scripts/check.sh
#!/bin/bash
# author: linux皆文件
# desc: 批量在所有机器上执行命令
for ip in 10.0.0.7 10.0.0.31
dossh $ip hostname
done
二、集群自动化维护-必备工具-Ansible
官方文档:链接指南
linux下帮助指令:ansible-doc -s 摸块名称
1、概述
自动化运维: 批量管理,批量分发,批量执行,维护
Ansible是python写的.
批量管理工具 | 说明 |
---|---|
Ansible | 无客户端,基于ssh进行管理和维护 |
Saltstack | 需要安装客户端,基于shh进行管理 |
terraform | tf批量管理基础设施(批量创建100台公有云)例如:腾讯云 |
2、Ansible管理架构
- Inventory 主机清单:被管理主机的ip列表,分类
- ad-hoc模式:命令行批量管理(使用ans模块),临时任务
- playbook 剧本模式:类似于把操作写出脚本,可以重复运行这个脚本
3、配置与部署
3.1、部署
yum install -y ansible
3.2、配置
修改配置文件
- 关闭主机认证Host_key_checking
- 开启日志功能.
root@m01 ~]# egrep -nv '^$|^#' /etc/ansible/ansible.cfg
10:[defaults]
71:host_key_checking = False
111:log_path = /var/log/ansible.log
327:[inventory]
340:[privilege_escalation]
346:[paramiko_connection]
370:[ssh_connection]
431:[persistent_connection]
445:[accelerate]
460:[selinux]
469:[colors]
485:[diff]
4、Ans-inventory主机清单
- 什么是主机清单: 让ansible管理的节点的列表.
- ansible默认读取在/etc/ansible/hosts文件,并非/etc/hosts.
- 未来实际使用中一般我们会把主机清单文件存放在指定的目录中,运行ansible的时候通过
- i
选项指定主机清单文件即可.
4.1、主机清单必会格式
主机清单格式: [分类或分组的名字] #注意分类要体现出服务器的作用 ip地址或主机名或域名 #注意主机名要能解析才行
[root@m01 ~]# cat /etc/ansible/hosts
[backup]
10.0.0.41
[web0]
10.0.0.7
主机清单分组详解:
需要我们进行分组:按照层次进行分组,按照功能/业务.
ansible命令格式
ansible主机ip / 分组 / all
-m 指定使用的模块名字,这里的ping模块用于检查被管理端是否可以访问。
4.2、子组
创建新的分组data包含已有的分组web和nfs
[root@m01 ~]# cat /etc/ansible/hosts
[backup]
10.0.0.41
[web]
10.0.0.7
[data:children]
web
backup[root@m01~]# ansible data -m ping
4.3、指定用户和密码
不推荐,推荐先配置密钥认证,然后管理
[root@m01~]# cat /etc/ansible/hosts
[web]
10.0.0.7
[nfs]
10.0.0.31 ansible_user=root ansible_password=*** ansible_port=22
4.4、报出错误提示
- 主机清单为空
- 没有关闭主机认证,去配置文件中host_key_checking = False
5、Ansible必知必会模块
-
Ansible模块概述
- ansible中的模块就类似于Linux中的命令,我们Linux命令管理系统,我们通过ansible模块实现批量管理.
- ansible中模块一般相当于Linux中的一些命令.yum模块,file模块,user模块.
- ansible中的模块拥有不同的选项,这些选项一般都是一些单词.。Ansible模块 modules
-
Ansible中通过各种模块实现批量管理
-
一般来说这些模块对应着Linux里面的基本操作或服务管理
-
找出Linux场景操作对应的模块即可
模块分类 | 模块 |
---|---|
命令和脚本模块 | command模块 ans默认的模块,执行简单命令,不支持特殊符号 |
shell模块 执行命令,支持特殊符号 | |
script模块 分发脚本并执行 | |
文件 | file创建目录,文件,软连接, |
copy远程分发文件,修改权限,所有者,备份 | |
服务 | systemd服务管理 |
service服务管理(了解) | |
软件包 | yum源 yum_repository |
yum命令 | |
get_ur1下载软件 | |
系统管理 | mount模块 挂载 |
cron模块定时任务 | |
用户管理 | group模块 管理用户组 |
user模块 管理用户 | |
其他可以研究 | 压缩解压(unarchive),rsync模块(synchronize),数据库模块(mysql_db,mysq1_user)… |
其他 | ansible管理docker k8s zabbix grafana … |
用于调试模块 | ping模块检查ansible与其他节点连通性. |
debug模块用于检查/显示变量 |
ansible | |||
---|---|---|---|
ansible | 主机清单(all/web/172.16.1.7) | -m模块 | -a模块中的选项 |
-i 指定主机清单文件 | |||
-m 指定模块 | |||
-a 指定模块中的选项 |
5.1、命令与脚本模块
a)command 模块
可以省略。
是ans默认的模块,适用于执行简单的命令,不支持特殊符号.
批量获取所有主机的主机名
ansible all -m command -a 'hostname'
b)shell模块
与command模块类似,但是shell支持特殊符号.
批量获取ip地址
ansible all -m shell -a "ip a s eth0 |awk -F'[ /]+' 'NR==3{print \$3}' "
温馨提示:
shell模块不推荐执行较为复杂的指令,如果需要执行放在脚本中执行
c)script模块
分发脚本(传输脚本)
运行脚本
ansible all -m script -a '/sh/xunjian.sh'
5.2、文件相关模块
a)file模块
管理文件,管理目录,软连接
file模块 | 模块说明 |
---|---|
path | 路径(目录,文本)必须写 |
src | 源文件,一般用于link(创建软连接模式)用于指定源文件 |
state | 状态(模式) state=directory 创建目录 state=file (默认) 更新文件,如果文件不存在也不创建 state=link 创建软连接 state=touch 创建文件 |
state | state=absent 删除(注意递归删除目录) |
mode | mode=755 创建并修改权限 |
owner | owner=root |
group | group=root |
创建文件
ansible all -m file -a 'path=/data/test.txt state=touch'
创建目录
ansible all -m file -a 'path=/app/a/b/c/d state=directory'
修改权限
ansible all -m file -a 'path=/data mode=700'
删除目录及其下面文件
ansible all -m file -a 'path=/app/ state=absent'
不能表示删除目录下的文件(表示只删除app目录下名叫
*
的文件)ansible all -m file -a 'path=/app/* state=absent'
创建软连接 /etc/hosts创建软连接到/opt/下
ansible all -m file -a 'src=/etc/hosts path=/opt/hosts state=link'
b)copy模块
批量分发:scp
copy模块 | |
---|---|
src | source 源文件 |
dest | destination 目标 |
backup | backup=yes 则会在覆盖前进行备份 |
mode | 修改权限 |
owner | 修改为指定所有者 |
group | 修改为指定用户组 |
把本机解析hosts覆盖全部
ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'
5.3、服务管理-sysytemd
systemd模块相当于是linux systemctl命令:
- 开启/关闭/重启服务
- 开机自启动
systemd模块 | 说明 |
---|---|
name | 用于指定服务名称 |
enabled | yes开机器启动(yes/no) |
state | 表示服务开,关,重启. state=started 开启 state=stopped 关闭 state=reloaded 重读配置文件 starte=restsrted 重启(关闭再开启) |
daemon-reload | yes是否重新加载对应的服务的管理配置文件(未来讲解书写systemctl配置文件) |
ansible all -m systemd -a 'name=crond enabled=yes state=started'
#关闭服务
ansible all -m systemd -a 'name=firewalld enabled=no state=stopped'
#重启ssh
ansible all -m systemd -a 'name=sshd state=reloaded'
额外扩展: systemd模块适用于目前大部分的Linux系统. service模块适用于管理旧的Linux系统.
5.4、软件管理
yum模块
get_url模块,wget命令
yum_repository模块yum源配置模块,未来可以通过copy模块
a)yum模块
yum模块 | |
---|---|
name | 指定软件包名字,可以指定多个,通过 ,分割 |
state | installed 安装(也可以写为present)(默认) removed 删除(也可以号为absent) lastest 安装或更新 |
update_cache | 可以设置为no加加速,表示不更新本地yur缓存,实际应用建议开启 |
ansible all -m yum -a 'name=htop,tree,lrzsz,sshpass'
b)get_url 模块
相当于是wget命令.所有主机能访问网络才行.
推荐在管理节点下载好,使用copy仅分发即可.
get_url下载功能 | |
---|---|
url | 指定要下载的地址 |
dest | 下载到哪个目录 |
ansible all -m file -a 'path=/app/tools/ state=directory'
ansible all -m get_url -a 'url="https://mirrors.aliyun.com/zabbix/zabbix/6.0/rh el/7/x86_64/zabbix-agent-6.0.13-release1.el7.x86_64.rpm" dest=/app/tools/'
c)yum_repository模块
未来书写好yum配置文件,copy分发过去即可.
ansible all -m copy -a 'src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/ backup=yes'
yum源模块 yum_repository | |
---|---|
name | yum源中名字 [epel] |
description | yum源的注释说明 对应的 是name的内容 |
baseurl | yum源中 baseurl 下载地址 |
enabled | 是否启动这个源 yes/no |
gpgcheck | 否启动gpgcheck功能 no |
file | 指定yum源的文件 自动添加.repo 默认与模块名字一致, |
5.5、用户管理
user用户管理:useradd,userdel
group用户组管理:groupadd
user模块
user模块 | |
---|---|
name | 用户名 |
uid | 指定uid |
group | 指定用户组,一般用于事先创建好了用户组,通过选项指定下 |
shell | 指定命令解释器:默认是/bin/bash /sbin/nologin |
create_home | 是否创建家目录(yes/no) |
state | present 添加 absent 删除 |
创建www-ans用户uid 2000虚拟用户
ansible all -m user -a 'name=www-ans uid=2000 shell=/sbin/nologin create_home=no state=present'
批量更新密码
ansible all -m user -a "name=test password={{ '1' | password_hash('sha512', 'lidao') }} state=present"
ansible all -m shell -a 'echo 1 |passwd --stdin test'
关于{{}}相关的解释 {{ ‘1’ | password_hash(‘sha512’, ‘lidao’) }} 表示1是密码,经过管道,传递给了password_hash()插件, sha512加密算法,lidao是随机字符用于生成随机加密后的密码.
group模块
group模块 | |
---|---|
nane | 指定用户组名字 |
gid | 指定组的gid |
state | present添加 absent 删除 |
6、mount模块
实现mount命令进行挂载可以修改/etc/fstab实现永久挂载.
mount选项 | 说明 |
---|---|
fstype | filesystem type指定文件系统,xfs,ext4,nfs |
src | 源地址(43.135.140.22:/backup-nfs/) |
path | 挂载点(要把源挂载到哪里) |
state | 参考下表 |
mount模块的state参数可使用的值 | |
---|---|
absent | 卸载升修改fstab |
unmounted | 卸载不修改/etc/fstab |
present | 仅修改/etc/fstab 不挂载 |
mounted | 挂载并修改/etc/fstab |
remounted | 重新挂载 |
通过ans管理在web01上挂载nfs:/data挂载到web01的/ans-upload/
nfs 服务端配置,目录
web 挂载
web 是否安装nfs
web 创建挂载点#在web服务器上安装nfs
ansible web -m yum -a 'name=nfs-utils state=present'
#创建挂载点
ansible web -m file -a 'path=/ans-upload/ state=directory'
#挂载nfs
ansible web -m mount -a 'src=172.16.1.31:/data/ path=/ans-upload/ fstype=nfs state=mounted'
#检查
ansible web -a 'df -h'
ansible web -a 'grep upload /etc/fstab '
7、cron模块
用于管理系统的定时任务,替代了crontab -e功能.
cron模块 选项 | 说明 |
---|---|
name | 定时任务名字(一定要加上),对应下面注释的内容 |
minute | 分钟 minute=“*/2” |
hour | 小时 |
day | 日期 |
month | 月份 |
week | 周几 |
job | 指定命令或脚本(定向到空)job=“/sbin/ntpdate ntp1.aliyun.com &>/dev/null” |
state | present 添加定时任务(默认) absent 删除 |
创建定时任务
ansible all -m cron -a 'name="sync time by linux" minute="*/3" job="/sbin/ntpdate ntp1.aliyun.com &>/dev/null"
相关文章:

网站集群批量管理-密钥认证与Ansible模块
一、集群批量管理-密钥认证 1、概述 管理更加轻松:两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向. 服务要求(应用场景): 一些服务在使用前要求我们做秘钥认证.手动写批量管理脚本. 名字: 密钥认证,免密码登录,双机互信. 2、原理 税钥对…...

TCP四次挥手过程详解
TCP四次挥手全过程 有几点需要澄清: 1.首先,tcp四次挥手只有主动和被动方之分,没有客户端和服务端的概念 2.其次,发送报文段是tcp协议栈的行为,用户态调用close会陷入到内核态 3.再者,图中的情况前提是双…...

在 MySQL 中处理和优化大型报告查询经验分享
在 MySQL 数据库的使用过程中,我们经常会遇到需要生成大型报告的情况,这些查询可能涉及大量的数据和复杂的计算,对数据库的性能提出了很高的要求。 一、问题背景 大型报告查询通常具有以下特点: 数据量大:涉及大量的…...

数字图像处理:空间域滤波
1.数字图像处理:空间域滤波 1.1 滤波器核(相关核)与卷积 图像上的邻域计算 线性空间滤波的原理 滤波器核(相关核)是如何得到的? 空间域的卷积 卷积:滤波器核与window中的对应值相乘后所有…...

【easypoi 一对多导入解决方案】
easypoi 一对多导入解决方案 1.需求2.复现问题2.1校验时获取不到一对多中多的完整数据2.2控制台报错 Cannot add merged region B5:B7 to sheet because it overlaps with an existing merged region (B3:B5). 3.如何解决第二个问题处理: Cannot add merged region …...

DDOS攻击会对网站服务器造成哪些影响?
DDOS攻击作为日常生活正比较常见的网络攻击类型,可以让多台计算机在同一时间内遭受到攻击,下面小编就带领大家一起来了解一下DDOS攻击会对网站服务器造成哪些影响吧! 首先DDOS攻击在进行攻击的过程中,可以对源IP地址进行伪造&…...

linux基础指令的认识
在正式学习linux前,可以简单认识一下linux与win的区别 win:是图形界面,用户操作更简单;在刚开始win也是黑屏终端 指令操作,图形界面就是历史发展的结果。Linux:也存在图形界面比如desktop OS;但…...

html5 + css3(下)
目录 CSS基础基础认识体验cssCSS引入方式 基础选择器选择器-标签选择器-类选择器-id选择器-通配符 字体和文本样式1.1 字体大小1.2 字体粗细1.3 字体样式(是否倾斜)1.4 常见字体系列(了解)1.5 字体系列拓展-层叠性font复合属性文本…...

828华为云征文|部署个人文档管理系统 Docspell
828华为云征文|部署个人文档管理系统 Docspell 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 Docspell3.1 Docspell 介绍3.2 Docspell 部署3.3 Docspell 使用…...

【深度学习】—激活函数、ReLU 函数、 Sigmoid 函数、Tanh 函数
【深度学习】—激活函数、ReLU 函数、 Sigmoid 函数、Tanh 函数 4.1.2 激活函数ReLU 函数参数化 ReLU Sigmoid 函数背景绘制 sigmoid 函数Sigmoid 函数的导数 Tanh 函数Tanh 函数的导数总结 4.1.2 激活函数 激活函数(activation function)用于计算加权和…...

对于基础汇编的趣味认识
汇编语言 机器指令 机器语言是机器指令的集合 机器指令展开来讲就是一台机器可以正确执行的命令 电子计算机的机器指令是一列二进制数字 (计算机将其转变为一列高低电平,使得计算机的电子器件受到驱动,进行运算 寄存器:微处理器…...

网络基础知识笔记(一)
什么是计算机网络 1.计算机网络发展的第一个阶段:(60年代) 标志性事件:ARPANET 关键技术:分组交换 计算机网络发展的第二个阶段:(70-80年代) 标志性事件:NSFNET 关键技术:TCP/IP 计算机网络发展的第三个阶段ÿ…...

fatal: urdf 中的 CRLF 将被 LF 替换
git add relaxed_ik_ros2 fatal: relaxed_ik_ros2/relaxed_ik_core/configs/urdfs/mobile_spot_arm.urdf 中的 CRLF 将被 LF 替换 这个错误信息表示 Git 在处理文件 mobile_spot_arm.urdf 时发现它使用了 CRLF(回车换行符,常见于 Windows 系统࿰…...

构建electron项目
1. 使用electron-vite构建工具 官网链接 安装构建工具 pnpm i electron-vite -g创建electron-vite项目 pnpm create quick-start/electron安装所有依赖 pnpm i其他 pnpm -D add sass scss1. 启动项目 2. 配置 package.json "dev": "electron-vite dev --…...

Stable Diffusion绘画 | 插件-Deforum:动态视频生成(中篇)
本篇文章重点讲解参数最多的 关键帧 模块。 「动画模式」选择「3D」: 下方「运动」Tab 会有一系列参数: 以下4个参数,只有「动画模式」选择「2D」才会生效,可忽略: 运动 平移 X 让镜头左右移动: 大于0&a…...

STM32中断——外部中断
目录 一、概述 二、外部中断(Extern Interrupt简称EXTI) 三、实例-对射式红外传感器 1、配置中断: 2 、完整代码 一、概述 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当…...

LeetCode78 子集
题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[…...

《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
希望这个下集里能有完整的代码 一、containsPoint实现 先从网上找一下Statement expected, found Py:DEDENTTAB还是空格呢??小小总结如何拆分矩形的四个点呢.我们来小小的测试一下这个函数结果出在哪里呢???修改完成variable in function should be lowercase 函数变量应该…...

【C++】入门基础介绍(上)C++的发展历史与命名空间
文章目录 1. 前言2. C发展历史2. 1 C版本更新特性一览2. 2 关于C23的一个小故事: 3. C的重要性3. 1 编程语言排行榜3. 2 C在工作领域中的应用 4. C学习建议和书籍推荐4. 1 C学习难度4. 2 学习书籍推荐 5. C的第一个程序6. 命名空间6. 1 namespace的价值6. 2 namespace的定义6. …...

dll动态库加载失败导致程序启动报错以及dll库加载失败的常见原因分析与总结
目录 1、问题说明 2、dll库的隐式加载与动态加载 2.1、dll库的隐式加载 2.2、dll库的显式加载 3、使用Process Explorer查看进程加载的dll库信息以及动态加载的dll库有没有加载成功 3.1、使用Process Explorer查看进程加载的dll库信息 3.2、使用Process Explorer查看动态…...

SAP MM学习笔记 - 豆知识10 - OMSY 初期化会计期间,ABAP调用MMPV/MMRV来批量更新会计期间(TODO)
之前用MMRV,MMPV来一次一个月来修改会计期间。 如果是老的测试机,可能是10几年前的,一次1个月,更新到当前期间,搞个100多次,手都抖。 SAP MM学习笔记 - 错误 M7053 - Posting only possible in periods 2…...

Pytorch实现RNN实验
一、实验要求 用 Pytorch 模块的 RNN 实现生成唐诗。要求给定一个字能够生成一首唐诗。 二、实验目的 理解循环神经网络(RNN)的基本原理:通过构建一个基于RNN的诗歌生成模型,学会RNN是如何处理序列数据的,以及如何在…...

四、Drf认证组件
四、Drf认证组件 4.1 快速使用 from django.shortcuts import render,HttpResponse from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.authentication import BaseAuthentication from rest_framework.exception…...

C++:静态成员
静态成员涉及到的关键字尾static 静态成员变量要在类外初始化 去掉static关键字类型类名::变量名 静态成员变量不属于任何对象 所有对象共享一份 静态成员可以不通过对象直接访问 类名::成员名 静态成员依旧受访问修饰符的约束 …...

28 Vue3之搭建公司级项目规范
可以看到保存的时候ref这行被提到了最前面的一行 要求内置库放在组件的前面称为auto fix,数组new arry改成了字面量,这就是我们配置的规范 js规范使用的是airbnb规范模块使用的是antfu 组合prettier&eslint airbnb规范: https://github…...

【pytorch】张量求导3
再接上文,补一下作者未补完的矩阵运算的坑。 首先贴一下原作者的图,将其转化为如下代码: import torch import torch.nn as nn import torch.optim as optim# 定义一个简单的两层神经网络 class TwoLayerNet(nn.Module):def __init__(self):super(TwoLayerNet, self).__in…...

Servlet——springMvc底层原理
我们也先了解一下什么的动态资源,什么是静态资源。 静态资源:无需程序运行就可以获取的资源(照片、html、css、js等) 动态资源:需要通关程序运行才可以获得的资源。 (其实动态、静态的资源都与Servlet有…...

Json 在线可视化工具,分享几个
文章目录 1.json.cn2.json4u.cn3.jsonvisual.com4.jsoncrack5.altearius.github.io6.json.wanvb.com 前序:本文是对多种 Json 在线可视化工具 的介绍、分享。Json官网 https://www.json.org/json-en.html 个人比较中意第四款: https://jsoncrack.com/ed…...

LLM | llama.cpp 安装使用(支持CPU、Metal及CUDA的单卡/多卡推理)
1. 详细步骤 1.1 安装 cuda 等 nvidia 依赖(非CUDA环境运行可跳过) # 以 CUDA Toolkit 12.4: Ubuntu-22.04/24.04(x86_64) 为例,注意区分 WSL 和 Ubuntu,详见 https://developer.nvidia.com/cuda-12-4-1-download-archive?targ…...

矩阵求解复数(aniwoth求解串扰)
所以这种求解串扰的格式是因为,有串扰的共轭项在方程组中 复数共轭项的作用,但是这是二次方程,...