RHEL——Linux母盘制作

最全Redhat X86_64版本ISO镜像合集 Redhat 8.10 ISO迅雷下载链接。Redhat 8.7 ISO迅雷下载链接。Redhat 8.6 ISO迅雷下载链接。Redhat 9.6 ISO迅雷下载链接。Redhat 9.5 ISO迅雷下载链接。Redhat 9.4 ISO迅雷下载链接。Redhat 9.3 ISO迅雷下载链接。Redhat 9.2 ISO迅雷下载链接。Redhat 9.1 ISO迅雷下载链接。Redhat 9.0 ISO迅雷下载链接。Redhat 8.9 ISO迅雷下载链接。Redhat 8.4 ISO迅雷下载链接。 阅读详情

# 制作一个红帽 Linux 系统的虚拟机作为母盘,然后通过母盘克隆出 n 个虚拟机来做实验或项目。

# Linux 系统运维技术

# 系统引导及修复:RHEL——系统引导过程及修复_系统引导文件修复-优快云博客

# LVS 负载均衡技术:RHEL——LVS负载均衡-优快云博客

# HAProxy 负载均衡技术:RHEL——HAProxy负载均衡-优快云博客

# Keepalived 高可用技术:RHEL——Keepalived高可用技术-优快云博客

# Web 高性能服务器 Nginx:RHEL——Web高性能服务器Nginx-优快云博客

# Web 应用服务器 Tomcat:RHEL——Web应用服务器Tomcat-优快云博客

# MySQL 集群技术:RHEL——MySQL集群技术-优快云博客

# NoSQL 集群技术:RHEL——NoSQL集群技术-优快云博客

# Docker 容器技术:RHEL——Docker容器技术-优快云博客

# Kubernetes 容器编排平台:

# Zabbix 监控系统:RHEL——Zabbix监控系统_服务器监控zabbix下载-优快云博客

# CI/CD 持续集成与交付:RHEL——CICD持续集成与交付-优快云博客


1. 下载红帽的镜像

# 建议下载 rhel9.6 版本

https://access.redhat.com/downloads


2. 设置网络环境

# 右击 VMwara——属性——快捷方式——高级——勾选用管理员身份运行——依次点击确定


# 点击导航栏——编辑——虚拟网络编辑器,如果虚拟机的网络有问题,可点击左下角的还原默认设置


 # 注意自己 NAT 的网关,之后的 NAT 网卡的主机都要配好自己的网关,否则虚拟机远程连接不了;点击 VMnet8 NAT···——NAT设置——查看网关


# 按"win键+R键"出现运行窗口,输入 cmd("按Ctrl键+Shift键+Enter键"可以管理员身份运行命令提示符)直接回车进入命令提示符,在命令提示符输入 ipconfig 查看网络,观察虚拟机的 IP 网段是否与 Windows 查看的虚拟机的 IP 网段一致

C:\Users\Forget>ipconfig


# 如果虚拟机的 IP 网段与 Windows 查看的不一致,可直接修改虚拟机的 IP 网段


# 如果不想修改虚拟机的 IP 网段,则可以修改 Windows 的 VMwara 的 IP 网段;按"Win键+S键"输入控制面板,点击控制面板——网络和 Internet——网络和共享中心——更改适配器设置——又击 VMnet1/VMnet8——属性——双击 Internet 协议版本4——修改 IP 网段


3. 创建一个新的虚拟机

(1)创建虚拟机

# 点击创建新的虚拟机,依次点击下一步


# 输入自己的虚拟机名称


# 处理器的内核数量增加到4个,如果内存资源有限,将内核数量减少到1-2个


# 磁盘类型建议选择 SATA 或 NVMe


# 最大磁盘大小调到100G


(2)修改虚拟机设置

  • 点击编辑虚拟机设置,点击硬件——CD/DVD——连接,使用 ISO 映像文件,一定要选择好自己的镜像文件
  • 点击硬件——显示,取消加速3D图形,指定监视器数量为1,最大分辨率为1024x768,勾选拉伸模式
  • 点击选项——高级——固件类型,勾选 BIOS,然后点击确定


(3)安装虚拟机

# 点击开启虚拟机,然后选择虚拟机语言


# 设置虚拟机的磁盘分区

  • 点击 Installation Destination——编辑安装位置,选择 Custom 然后点击左上角的 Done
  • 选择 Standard Partition——Click··· ,然后删除 /home 分区,设置 /boot——1G,/swap——4G,/——95G(Update Settings——更新设置)
  • 点击左上角的 Done,然后点击 Accept Changes


# 选择软件,点击 Softwara Selection,然后选择 Server(服务器),再点击 Done
#注意:如果需要图形化的虚拟机就默认选择 Server with GUI(可做两台母盘,一台图形化,一台无图形化;图形化虚拟机一般只用来做测试,因为耗内存较大)


# 设置虚拟机密码,点击 Root Password——输入密码,勾选 Allow···,再点击 Done


# 启动虚拟机,点击右下角的 Begin Installation 进行启动,进度条跑完后点击 Reboot System


4. 配置虚拟机环境

(1)创建本地仓库

# 输入用户(root)和密码,然后给主机重命名 RHEL9.6_db;然后点击导航栏上的虚拟机——可移动设备——CD/DVD——连接或者点击右下角倒数第二个圆圈图标——连接(都是连接镜像的)

[root@RHEL9 ~]# hostnamectl hostname RHEL9.6_db


# 创建要挂在镜像的目录 /rhel9.6_cd,将 /dev/sr0 挂载到 /rhel9.6_cd 下,用 cat 来写本地仓库 cd.repo;

[root@RHEL9 ~]# mkdir /rhel9.6_cd
[root@RHEL9 ~]# mount /dev/sr0 /rhel9.6_cd/
[root@RHEL9 ~]# cat > /etc/yum.repos.d/cd.repo << EOF
[BaseOS]
name = cd_BaseOS
baseurl = file:///rhel9.6_cd/BaseOS
gpgcheck = 0
[AppStream]
name = cd_AppStream
baseurl = file:///rhel9.6_cd/AppStream
gpgcheck = 0
EOF


(2)设置 vim 编辑器属性

# 可以用 vim 编辑"~/.vimrc"设置属性,也可以直接用 cat 写入;将"mount /dev/sr0 /rhel9.6_cd"这条命令写到"/etc/rc.local"下,然后给"/etc/rc.local"添加可执行权限,实现开启自动挂载镜像;用 reboot 重启虚拟机

[root@RHEL9 ~]# vim ~/.vimrc
  1 set nu
  2 set autoindent
  3 set tabstop=4

[root@RHEL9 ~]# vim /etc/rc.local
 15 mount /dev/sr0 /rhel9.6_cd

[root@RHEL9 ~]# chmod +x /etc/rc.local


(3)远程连接虚拟机

# 查看挂载目录 /rhel9.6_cd 是否成功自动挂载镜像,然后再查看 ip,用 MobaXterm 来远程连接虚拟机,方便敲代码


# 点击左上角的 Session——SSH,然后输入 IP 地址、root 用户


5. 创建网络脚本

(1)创建脚本

# 为了从母盘克隆出多台虚拟机时,能够快速、自动化地配置每台机器的独立 IP 和主机名,并清理系统唯一标识,避免冲突。

# 可通过":set nonu"这条命令来取消行号;创建好脚本后许给脚本授权,能方便使用脚本

# 给 vmset.sh 添加执行权限,之后可直接用 vmset.sh 来改网络

[root@RHBASE ~]# vim /bin/vmset.sh
#!/bin/bash
[ "$#" -lt "3" ] && {
    echo "用法: $0 <网卡名> <IP> <主机名> [noroute]"
    echo "示例: $0 eth0 192.168.153.100 node1"
    exit
}

# 删除旧连接
CONNECTION=$(nmcli connection show 2>/dev/null | awk "/$1/"'{print $1}' | grep -x "$1")
[ -n "$CONNECTION" ] && nmcli connection delete "$CONNECTION"

# 配置网络
if [ "$4" = "noroute" ]; then
    cat > /etc/NetworkManager/system-connections/$1.nmconnection << EOF
[connection]
id=$1
type=ethernet
interface-name=$1
[ipv4]
method=manual
address1=$2/24
EOF
else
    cat > /etc/NetworkManager/system-connections/$1.nmconnection << EOF
[connection]
id=$1
type=ethernet
interface-name=$1
[ipv4]
method=manual
address1=$2/24
gateway=${2%.*}.2
dns=8.8.8.8;
EOF
fi

chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection
nmcli connection reload
nmcli connection up "$1"

# 设置主机名
hostnamectl hostname "$3"

# 配置hosts
cat > /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
$2  $3
EOF

# 重新生成SSH主机密钥
rm -f /etc/ssh/ssh_host_*
ssh-keygen -A
systemctl restart sshd

# 清理
rm -f /etc/udev/rules.d/70-persistent-net.rules
rm -rf /tmp/* /var/tmp/*
find /var/log -type f -exec truncate -s 0 {} \; 2>/dev/null

# 重新生成machine-id
rm -f /etc/machine-id /var/lib/dbus/machine-id
systemd-machine-id-setup 2>/dev/null || dbus-uuidgen --ensure

# 更新网络配置
nmcli connection reload
nmcli connection down "$1" 2>/dev/null
nmcli connection up "$1"

# 清理历史
history -c
rm -f ~/.bash_history

echo "=========================================="
echo "配置完成!"
echo "IP: $2"
echo "主机名: $3"
echo "machine-id: $(cat /etc/machine-id)"
echo "=========================================="
echo "可直接用远程软件连接 $2"
echo "=========================================="

ip a s "$1"
hostname


[root@localhost ~]# chmod +x /bin/vmset.sh

(2)脚本分析

① 参数检查

# 我写的脚本的第一个参数是网卡,第二个参数是 ip,第三个参数是主机名,第四个参数没有或者 noroute

  • 这段代码的意思是判断传参数的个数("$#")是否小于(-lt)3,如果少于3个(网卡名、IP、主机名),就显示用法提示并退出,即不执行之后的命令
[ "$#" -lt "3" ] && {
    echo "用法: $0 <网卡名> <IP> <主机名> [noroute]"
    echo "示例: $0 eth0 192.168.153.100 node1"
    exit
}

② 删除旧连接
CONNECTION=$(nmcli connection show 2>/dev/null | awk "/$1/"'{print $1}' | grep -x "$1")
  • 将"nmcli connection show"的结果(网卡信息)传给 awk
  • "/$1/"——执行脚本传的第一个参数
  • awk "$1"——匹配第一个参数的行
  • "{print $1}"——打印每行的第一列
  • grep $1——再次过滤第一个参数
  • 将得到的最后结果传给 CONNECTION(即网卡名称)

[ -n "$CONNECTION" ] && nmcli connection delete "$CONNECTION"
  • [ -n "$CONNECTION" ]——判断这个参数是否为空
  • 则该命令的意思是如果 CONNECTION 这个参数的结果等于0(即没有该网卡)就不执行这条命令,继续执行下一条
  • 如果 CONNECTION 这个参数的结果不等于0(即已经有该网卡)就继续执行这条命令,说明该网卡以使用,删除掉这个网卡

③ 配置网络

# if 语句执行判断,如果有 noroute 参数则配置无网关的 ip;反之,没有 noroute 参数则进行完整配置

if [ "$4" = "noroute" ]; then
    cat > /etc/NetworkManager/system-connections/$1.nmconnection << EOF
[connection]
id=$1
type=ethernet
interface-name=$1
[ipv4]
method=manual
address1=$2/24
EOF
  • $1——第一个参数即网卡
  • $2——第二个参数即 ip
  • $4——第四个参数即有无 noroute(有网关则不行第四个参数,没有网关则写 noroute)
  • cat > ——覆盖(cat >> ——追加)
  • "/etc/NetworkManager/system-connections/$1.nmconnection"——某网卡的配置信息
  • << EOF——代码结束语
  • id=$1——连接时的网卡名称
  • type=ethernet——有线连接类型(lo 网卡:loopback 是回环接口类型)
  • interface-name——物理网卡名称
  • method=manual——手动设置
  • address1=$2/24——第一个ip为第二个参数(一个网卡可以有多个ip,即address2···)
  • 则这条命令的意思是如果第四个参数等于 noroute 就继续执行这条命令,将以下的代码直接覆盖原来的网卡配置文件中的代码

else
    cat > /etc/NetworkManager/system-connections/$1.nmconnection << EOF
[connection]
id=$1
type=ethernet
interface-name=$1
[ipv4]
method=manual
address1=$2/24
gateway=${2%.*}.2
dns=8.8.8.8;
EOF
fi
  • else——不符合上面的条件则执行下面的代码
  • gateway=${2%.*}.2——截取第二个参数,“%”最懒模式从右边开始删除,“.”以点为标识符即删到标识符停止包括标识符本身,“*”无论是什么全都删除,“.2”是 NAT 网络的默认网关(回看第2章虚拟网络环境)
  • dns=8.8.8.8——设置 dns

chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection
nmcli connection reload
nmcli connection up $1
  • chmod 600——给该网络配置文件设置可读可写权限,刷新网络配置,激活网卡

⑤ 设置主机名并解析
hostnamectl hostname $3

cat > /etc/hosts<< EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
$2     $3
EOF
  • 设置主机名,然后覆盖源解析文件的内容,给 ip 和主机名添加解析

⑥ 重新生成 SSH 主机密钥
rm -f /etc/ssh/ssh_host_*
ssh-keygen -A
systemctl restart sshd
  • 删除旧的 SSH 主机密钥(避免从母盘克隆出来的主机密钥相同)
  • 自动生成所有缺失的主机密钥(RSA、ECDSA、ED25519等)
  • 重启 SSH 服务使新密钥生效

⑦ 清理系统
rm -f /etc/udev/rules.d/70-persistent-net.rules
rm -rf /tmp/* /var/tmp/*
find /var/log -type f -exec truncate -s 0 {} \; 2>/dev/null
  • 删除 udev 网络规则(避免 MAC 地址冲突)
  • 清空临时目录
  • 清空所有日志文件内容

⑧ 重新生成machine-id
rm -f /etc/machine-id /var/lib/dbus/machine-id
systemd-machine-id-setup 2>/dev/null || dbus-uuidgen --ensure
  • 删除旧的机器 ID
  • 生成新的唯一机器 ID(确保每台克隆机有唯一标识)

⑨ 更新网络配置

# 基于新的 machine-id 重新加载网络配置,重新生成连接 UUID

nmcli connection reload
nmcli connection down "$1" 2>/dev/null
nmcli connection up "$1"

⑩ 清理命令历史并输出结果

# 清除当前会话和文件中的命令历史记录

history -c
rm -f ~/.bash_history

ip a s $1
hostname
  • ip a s $1——ip address show $1查看网络信息,输出主机名

6.配置网络环境

(1)设置新网络

# 编辑内核文件"/boot/loader/entries/xxx···xxx.x86_64.conf"(系统启动时加载的信息文件),在 options(内核启动参数)最后面添加"net.ifnames=0",即关闭可预测命名,网卡顺序从0开始,然后重启虚拟机

[root@RHEL9 ~]# vim /boot/loader/entries/f6cd27ec49f440e9b4301e0c2c22bdcc-5.14.0-570.12.1.el9_6.x86_64.conf
  5 options root=UUID=d61a7b9a-1fdc-441e-937e-98055e4377e2 ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=UUI    D=703ed7ad-0ce8-4b0f-b44a-87b054a415f1 rhgb quiet net.ifnames=0


# 然后删除 ens33 网卡,通过网络脚本来添加新的 ip

[root@RHEL9 ~]# nmcli connection show
[root@RHEL9 ~]# nmcli connection delete ens33
[root@RHEL9 ~]# nmcli connection delete Wired\ connection\ 1
[root@RHEL9 ~]# vmset.sh eth0 192.168.153.137 RHEL9


(2)关闭防火墙

# 在做运维管理和测试环境时,避免性能损耗和网络冲突,需要关闭防火墙

# 关闭 firewalld 和 selinux,立即关闭 firewalld 并锁住,然后修改 selinux 的数据库文件"/etc/sysconfig/selinux",将第22行修改为 disabled,再重启就能生效了

[root@RHEL9 ~]# systemctl disable --now firewalld.service
[root@RHEL9 ~]# systemctl mask firewalld.service
[root@RHEL9 ~]# vim /etc/sysconfig/selinux
 22 SELINUX=disabled


7.设置 ssh 无密登录

(1)设置无密登录

# 设置ssh免密认证
[root@RHEL9 ~]# ssh-keygen -f /root/.ssh/id_rsa -P ""
[root@RHEL9 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@localhost
[root@RHEL9 ~]# vim /etc/ssh/ssh_config
 20 Host *
 21     StrictHostKeyChecking no
[root@RHEL9 ~]# mkdir -p /etc/skel/.ssh
[root@RHEL9 ~]# cp -rp /root/.ssh/* /etc/skel/.ssh
[root@RHEL9 ~]# chmod 600 /etc/skel/.ssh/*
[root@RHEL9 ~]# ll /etc/skel/.ssh/

# 拷贝ssh密钥到图形化母盘(需要图形化母盘可做)
[root@RHEL9 ~]# scp -r /root/.ssh/ root@192.168.153.129:/root/
[root@RHEL9 ~]# scp -r /etc/skel/.ssh/ root@192.168.153.129:/etc/skel/
[root@RHEL9 ~]# scp /etc/ssh/ssh_config root@192.168.153.129:/etc/ssh/ssh_config

# 给图形化母盘授权
[root@RHEL9-GUI ~]# chmod 700 /root/.ssh
[root@RHEL9-GUI ~]# chmod 600 /root/.ssh/*
[root@RHEL9-GUI ~]# restorecon -R /root/.ssh 2>/dev/null
[root@RHEL9-GUI ~]# chmod 700 /etc/skel/.ssh
[root@RHEL9-GUI ~]# chmod 600 /etc/skel/.ssh/*
[root@RHEL9-GUI ~]# restorecon -R /etc/skel/.ssh 2>/dev/null
[root@RHEL9-GUI ~]# systemctl restart sshd

# 设置 ssh 免密认证操作后母盘就做好了,以下是免密登录的解析和测试


(2)分析和测试

① 设置无密登录

# 生成无密码的公钥和私钥

[root@RHEL9 ~]# ssh-keygen -f /root/.ssh/id_rsa -P ""
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:lwLgxPKatmPMP4+oEb2B/QqZV84HjortMkji0H16TLY root@RHEL9
The key's randomart image is:
+---[RSA 3072]----+
|   .o            |
|  .o..           |
|   o. .          |
| +  .  .   .     |
|o.++o   S o      |
|o==X..+  o       |
|@++.=*..         |
|=B*oooE          |
|+*=oo+.          |
+----[SHA256]-----+

[root@RHEL9 ~]# ls /root/.ssh/
id_rsa  id_rsa.pub

# 上锁

[root@RHEL9 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@localhost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@localhost's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@localhost'"
and check to make sure that only the key(s) you wanted were added.

# 然后关闭虚拟机,克隆两台该虚拟机(右击 RHEL9.6_db——管理——克隆,依次下一步,分别起名 node1、node2),分别通过网络脚本设置 ip


# 在 node1 主机上远程联连接 node2,在 node2 远程连接 node1


② 优化关闭响应

# 远程连接成功后,但每次远程连接都需要输入 yes,所以开启母盘 RHEL9.6_db,远程连接一下,设置关闭响应

[root@RHEL9 ~]# man ssh                        

#查看 ssh 能用什么命令,多回车几行输入"/-o"找到"StrictHostKeyChecking"参数

### 冷知识:在远程虚拟机中光标选中后即复制,可通过此操作来快速复制粘贴

[root@RHEL9 ~]# vim /etc/ssh/ssh_confi

 20 Host *
 21     StrictHostKeyChecking no


# 关闭虚拟机后,删除之前克隆出来的 node1、node2两台虚拟机(右击该虚拟机——管理——从磁盘中删除),再次通过母盘 RHEL9.6_db 克隆出两台虚拟机,设置 ip,测试远程登录


# 在两台主机上都执行 exit 退出登录,在 node1 上创建一个新用户 haha,在 node2 上远程连接 haha 用户


③ 设置建立新用户能无密登录

# 通过测试可看到新建立的用户是不能无密登录的,所以再次回到母盘上设置,用过"/etc/skel "用户的母文件(新建用户时,系统会把母文件下的所有文件和目录复制到新用户的家目录下)来实现新建用户的无密登录,即将"/root/.ssh"公钥和私钥文件复制到用户的母文件"/etc/skel/.ssh"

[root@RHEL9 ~]# mkdir -p /etc/skel/.ssh
[root@RHEL9 ~]# cp -rp /root/.ssh/* /etc/skel/.ssh
[root@RHEL9 ~]# chmod 600 /etc/skel/.ssh/*

# 关闭虚拟机,再次克隆测试新建用户是否能无密登录


### 至此,母盘就做好了,然后给母盘做一个快照,点击导航栏中间的“时钟+”;克隆是建议用链接克隆(可以节省空间)。

  • 链接克隆后,此时母盘相当于应该容器
  • 当链接出来的主机不要后,不仅要在虚拟机上删除,还要在母盘的快照里删除链接


④ 配置图形化母盘的免密登录

# 将无图形化母盘的 root 密钥拷贝到图形化母盘下,并给密钥授权

# 拷贝ssh密钥到图形化母盘(需要图形化母盘可做)
[root@RHEL9 ~]# scp -r /root/.ssh/ root@192.168.153.129:/root/
[root@RHEL9 ~]# scp -r /etc/skel/.ssh/ root@192.168.153.129:/etc/skel/
[root@RHEL9 ~]# scp /etc/ssh/ssh_config root@192.168.153.129:/etc/ssh/ssh_config

# 给图形化母盘授权
[root@RHEL9-GUI ~]# chmod 700 /root/.ssh
[root@RHEL9-GUI ~]# chmod 600 /root/.ssh/*
[root@RHEL9-GUI ~]# restorecon -R /root/.ssh 2>/dev/null
[root@RHEL9-GUI ~]# chmod 700 /etc/skel/.ssh
[root@RHEL9-GUI ~]# chmod 600 /etc/skel/.ssh/*
[root@RHEL9-GUI ~]# restorecon -R /etc/skel/.ssh 2>/dev/null
[root@RHEL9-GUI ~]# systemctl restart sshd

# 测试则将无图形和有图形的母盘各克隆出一台主机进行免密登录


8. 环境准备

(1)关闭 DHCP

# 点击导航栏——编辑——虚拟网络编辑器,关闭 DHCP 服务

  • 在运维测试环境中,仅主机和 NAT 模式都需要关闭 DHCP 服务,防止 ip被强占造成 ip 冲突


(2)开启模板模式

# 开启模版模式,防止母盘虚拟机被误删除


# 创建快照,防止误操作,可以恢复到原来状态


9. 扩展优化

(1)软件仓库

(2)浏览器扩展Tampermonkey

# Tampermonkey(篡改猴) 是一个用户脚本管理器扩展,可以在里面添加各种用户脚本,这些脚本可以改变网页的行为、外观,或者添加新功能。

① 下载篡改猴

# Edge 浏览器下载链接:https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd

# Chrome 浏览器下载链接:https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo


② Tampermonkey 功能

# 可通过脚本定制网页

功能类型例子
复制优化自动去掉命令提示符、行号
广告过滤自动屏蔽网页广告
视频增强跳过视频片头、自动播放
下载辅助解析网盘链接、批量下载图片
界面美化修改网页字体、暗黑模式
自动操作自动签到、自动填写表单

③ 创建复制脚本

# 在浏览器中,当我们用鼠标(三击)选中一行内容时是需要再次手动点击复制,而且在一行内容中,我们截断复制不需要某些字段的内容,需要拖动鼠标,较为麻烦;所以为了加快复制速度,可以通过 Tampermonkey 创建一个脚本来对浏览器中选中的内容进行快速复制。

  • 提取“#”后的内容
  • 去除内容前的行号


# 安装好 Tampermonkey 后,在浏览器右上角点击查看扩展,点击篡改猴添加脚本


# 编写复制脚本,编写完后按“Ctrl+s”键保存

// ==UserScript==
// @name         代码块智能复制
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  选中代码块时,自动去掉提示符和行首空格,保留代码中的#
// @author       YourName
// @match        *://*/*
// @grant        GM_setClipboard
// ==/UserScript==

(function() {
    'use strict';

    // 处理单行:去掉提示符[xxx]# 或 数字序号,再去掉行首空格
    function processLine(line) {
        let trimmed = line.trim();
        if (!trimmed) return '';

        let promptMatch = trimmed.match(/^\[[^\]]+\]#\s*(.*)$/);
        if (promptMatch) return promptMatch[1];

        let numMatch = trimmed.match(/^\d+[\.\:\、]?\s*(.*)$/);
        if (numMatch) return numMatch[1];

        return trimmed;
    }

    // 处理多行
    function processText(text) {
        return text.split('\n').map(processLine).filter(l => l).join('\n');
    }

    // 右下角提示
    function showTip(content) {
        let tip = document.createElement('div');
        let preview = content.length > 40 ? content.slice(0, 40) + '...' : content;
        tip.textContent = `✓ 已复制: ${preview}`;
        tip.style.cssText = 'position:fixed;bottom:20px;right:20px;background:#4CAF50;color:#fff;padding:8px 16px;border-radius:6px;font:13px monospace;z-index:999999;box-shadow:0 2px 8px rgba(0,0,0,0.2);';
        document.body.appendChild(tip);
        setTimeout(() => tip.remove(), 1500);
    }

    // 监听选中复制
    document.addEventListener('mouseup', () => {
        let selected = window.getSelection().toString().trim();
        if (!selected) return;

        let result = processText(selected);
        if (result) {
            GM_setClipboard(result, 'text');
            showTip(result);
        }
    });

    console.log('✓ 代码块复制脚本已启动');
})();

④ 脚本解析
// ==UserScript==
// @name         代码块智能复制
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  选中代码块时,自动去掉提示符和行首空格,保留代码中的#
// @author       YourName
// @match        *://*/*
// @grant        GM_setClipboard
// ==/UserScript==
  • @name:脚本名称,显示在 Tampermonkey 管理面板
  • @match:脚本在哪些网站运行,“*://*/*”表示所有网站
  • @grant:申请的特殊权限,GM_setClipboard 用于操作剪贴板

(function() {
    'use strict';
  • 立即执行函数:包裹代码避免变量冲突,“use strict”开启严格模式

    function processLine(line) {
        let trimmed = line.trim();
        if (!trimmed) return '';

        let promptMatch = trimmed.match(/^\[[^\]]+\]#\s*(.*)$/);
        if (promptMatch) return promptMatch[1];

        let numMatch = trimmed.match(/^\d+[\.\:\、]?\s*(.*)$/);
        if (numMatch) return numMatch[1];

        return trimmed;
    }
  • 有“#”→ 用正则“/#\s*(.+)$/”匹配“#”后面的内容(“\s*”匹配任意空格,“(.+)$”捕获剩余所有内容)
  • 无“#”但有数字序号 → 用正则“/^\d+[\.\:\s]+\s*(.*)$/”匹配行首的数字(\d+)、分隔符(. : 空格)、然后捕获后面的内容
  • 其他 → 原样返回

    function processText(text) {
        return text.split('\n').map(processLine).filter(l => l).join('\n');
    }
  • 按行分割 → 每行调用 processLine → 过滤掉空行 → 重新用换行符拼接

    function showTip(content) {
        let tip = document.createElement('div');
        let preview = content.length > 40 ? content.slice(0, 40) + '...' : content;
        tip.textContent = `✓ 已复制: ${preview}`;
        tip.style.cssText = 'position:fixed;bottom:20px;right:20px;background:#4CAF50;color:#fff;padding:8px 16px;border-radius:6px;font:13px monospace;z-index:999999;box-shadow:0 2px 8px rgba(0,0,0,0.2);';
        document.body.appendChild(tip);
        setTimeout(() => tip.remove(), 1500);
    }
  • 显示提示,1.5秒后自动移除

    document.addEventListener('mouseup', () => {
        let selected = window.getSelection().toString().trim();
        if (!selected) return;

        let result = processText(selected);
        if (result) {
            GM_setClipboard(result, 'text');
            showTip(result);
        }
    });
  • 监听 mouseup(双击、三击、拖动松开鼠标)事件
  • 获取选中的文本并处理
  • 用 GM_setClipboard 复制到剪贴板

    console.log('✓ 代码块复制脚本已启动');
})();
  • 控制台输出,确认脚本已运行
  • 最后的“})();”是立即执行函数的结束

⑤ 启动权限

# 开启脚本


# 给脚本授权

# 勾选用户脚本时,注意网上下的有些脚本可能有风险,劲量用自己写的脚本


⑥ 测试脚本

# 在浏览器中找一个网页进行测试:https://blog.youkuaiyun.com/Forget_8/article/details/157298700?spm=1001.2014.3001.5502#t12

# 测试只提取"#"后的字段(或代码)

# 输出结果:
vim ~/.vimrc

# 测试去除“序号+空格”,以及拖动选中

# 输出结果:
vim ~/.vimrc
set nu
set autoindent
set tabstop=4

虚拟机封装为母盘,利用母盘批量创建虚拟机 1.真机挂载镜像 本次使用rhel-server-7.5-x86_64-dvd.iso镜像,将其挂载到acaphe的发布目录下的westos目录中,确保在浏览器中能够访问到该镜像 [root@foundation72 westos]# mount /home/kiosk/rhel-server-7.5-x86_64-dvd.iso /var/www/html/westos mount: /dev/... 阅读详情

相关推荐

openssh9.6-redhat9-x86-64.tgz

适用于redhat 9 x86系列操作系统升级更新openssh版本,修复安全漏洞 2023年12月25日 openssh 9.6 版本,二进制rpm包

RHEL全系列镜像下载 | RedHat Enterprise Linux 4/5/6/7/8/9/10 各版本ISO镜像合集(含安装工具)

本文分享百度网盘资源链接,包含RHEL各版本ISO镜像文件(4.x-10.x)、Rufus工具及UltraISO软件。资源按版本分类存储,每个镜像均附带校验文件,涵盖x86_64和aarch64架构,部分版本还提供KVM镜像和WSL包。若链接失效请留言反馈。

weixin_51690777的博客 4781

Redhat9的下载列表

Redhat9的下载列表

rhel redhat 红帽系统镜像 多版本 rhel 7/8/9/10红帽镜像ISO下载

红帽系统镜像 多版本 rhel 7/8/9/10

muwusheji的博客 755

pgdg-redhat96-9.6-3.noarch.rpm

下载安装包后,执行yum install postgresql96-server命令即可

openssh9.6p1离线安装rpm包

centos7.X升级最新的openssh9.6p1

Redhat Linux 9.6 配置本地 yum 源

如果你是离线环境用本地 HTTP 仓库,就用 方法 1 禁用官方源,避免 yum/dnf 在访问网络时超时;这样会在 /etc/yum.repos.d/redhat.repo 中把对应仓库的 enabled=1 改成 enabled=0,并且保留本地源可用。执行后 subscription-manager 将不再管理或更新 redhat.repo,只会用你手动添加的 .repo 文件。方法 2:直接编辑 /etc/yum.repos.d/redhat.repo。现在您可以通过浏览器访问。

爱死亡机器人 1169

Rocky Linux 9.6 x86-64, aarch64.zip

目录: CHECKSUM-aarch64 CHECKSUM-x86_64 Rocky-9.6-aarch64-boot Rocky-9.6-aarch64-dvd Rocky-9.6-aarch64-minimal Rocky-9.6-x86_64-boot Rocky-9.6-x86_64-dvd Rocky-9.6-x86_64-minimal 网盘文件永久链接

Linux操作系统母盘便捷持久化部署方案

本文介绍了Linux操作系统(RHEL 7.9与RHEL 9.3)的安装部署流程,重点包括: 虚拟机创建及系统安装的图形化配置步骤 SSH远程登录设置方法 本地仓库配置详解(光驱挂载、自动挂载设置、yum仓库配置) 自动化网络配置脚本vmset.sh的实现 提供了RHEL 9和RHEL 7版本的关键配置差异说明 全文通过详细截图和命令行示例,指导用户完成Linux系统的安装部署及基础网络配置工作。

Mine:19829102887@163.com 可以一起学习! 455

RHEL9.6母盘设定[源码]

本文详细介绍了在RHEL9.6系统中进行母盘设定的步骤,包括关闭并禁用firewalld防火墙服务、完全禁用SELinux、启用传统网卡命名、搭建本地仓库、自定义网卡IP和主机重命名、配置SSH免密登录以及简化vim配置文件格式设置。这些操作旨在优化系统性能,简化管理流程,并提高操作效率。文章还分析了禁用SELinux的优缺点,指出虽然可以提高应用程序运行流畅度和简化故障排查,但会降低系统安全性。此外,文中提供了详细的命令行操作步骤和配置示例,适合系统管理员和Linux用户参考。

机器学习——径向基函数(RBF)神经网络

目录 一、什么是基函数 二、什么是径向基函数 三、为什么RBF神经网络使用一个径向基函数作为隐含层的激活函数 四、参数训练 五、RBF网络vs BP网络和 SVM 一、什么是基函数 著名的傅里叶变换是指:n个有参(权值)的正、余弦三角函数基的和式可以等价的表示任意一个周期函数,这里的“基”和我们数学中说的坐标基或向量基含义相同,即坐标空间中任意一个向量都可以用基向量的线性和表示出来。 因此,我们引入函数空间的概念,函数空间中的每个连续函数可以表示为基函数的线性组合,就像向量空间中的每..

CHWB2580的博客 6272

企业—rhel7.3版本母盘的封装

一.封装母盘 1.实验环境 rhel7.3的镜像 2.母盘的创建 在虚拟机管理界面,导入镜像 a.选择本地磁盘设备安装 b.选择镜像路径 c.选择内存及其cpu内核 d.设置磁盘容量 e.设置主机名 Linux系统的安装 a.选择第一个 b.选择语言,点击continue c.选择时区 d.选择语言,点击done e.选择最小安装 f. g.设置分区 选择自...

weixin_44224288的博客 249

Figma入门-自动布局

Figma原型图制作内置组件友好,自动布局类似CSS flex,通过布局网格控制对齐、分布、换行等,前端熟悉的同学易上手,参数设置基本一致。

我码玄黄的博客 2174

linux之redhat6.5虚拟机封装母盘

官网下载rhel6.5的镜像,安装一个linux6.5的虚拟机(最小安装即可) 母盘的制作 1.通过rhel6.5镜像安装一个虚拟机:在virt-manager模式下 2.选择好镜像的路径,因为不安装图形,最小安装即可 3.将该虚拟机作为母盘做快照,生成多台虚拟机,可以在母盘中配置好必要的文件,可以省去很多重复的操作,为之后的实验做准备。 4.先设置本地域名解析: ...

hetoto的博客 1042

实现 PDF 添加水印的五种方式

PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。

逸轩 6472

避开ns-3学习深坑:用sns3模块快速搭建GEO卫星通信仿真(附GitHub代码解读)

本文介绍了如何使用sns3模块快速搭建GEO卫星通信仿真环境,绕过复杂的ns-3底层细节。通过详细的Linux环境配置、sns3模块安装和示例代码解读,帮助开发者快速上手卫星通信仿真,并提供了常见问题的解决方案和性能优化技巧。

weixin_28720573的博客 438

使用镜像安装rhel6.5版本虚拟机,封装母盘详细过程

步骤一:在terminal中打开虚拟控制器 命令行输入: virt-manager 步骤二:在虚拟控制器界面,点击小电视,创建虚拟机 步骤三:导入镜像,配置虚拟机参数大小 安装或升级现有的系统:可选择skip跳过 设置超级用户登陆密码: 密码太简单,会弹出以下界面:选择use anyway即可 安装完成重启系统: 步骤四:封装母盘 1、修改主机名称 vi /etc/sysc...

CapejasmineY的博客 426

STM32使用LORA模块通信

目录 一、模块使用方法 1、模块简介 2、硬件及功能 3、传输方式 二、模块上手 1、连接 2、编写代码 usart3.h usart3.c lora.h lora.c 一、模块使用方法 本文以正点原子ATK-LORA-01模块为例进行介绍。 1、模块简介 ATK-LORA-01-V3.0(V3.0是版本号,下面均以ATK-LORA-01表示该产品)是ALIENTEK推出的一款体积小、微功率、低功耗、高性能远距离LORA无线串口模块。模块设计是采用高效的IS...

qq_54706971的博客 3万+

母盘设定(rhel9.6)

root@localhost ~]# vim /bin/vmset.sh #创建虚拟机网络配置脚本在系统二进制命令目录,存放可执行程序;/bin/bash[ "$#" -lt "3" ] && { # 检查参数数量是否小于3个,$#表示传入的参数个数!" # 参数不足时输出错误信息exit # 退出脚本执行。

celeste0310的博客 261

SAP SM30数据维护实战:条件筛选与动态校验的实现技巧

本文详细介绍了SAP SM30数据维护的实战技巧,重点讲解如何通过条件筛选实现精准数据查取,以及利用表维护生成器事件实现动态数据检查与校验。文章提供了从基础视图创建到高级事件编程的完整流程,包括调用函数VIEW_MAINTENANCE_CALL传递筛选条件,以及在NEW_DATA和CHANGE_SAVE事件中编写业务规则校验逻辑,帮助开发者提升SM30的管控能力与数据质量。

q9w8e7r6t5的博客 521

全栈拆解华为乾崑 ADS 5:WEWA2.0智能体架构与安全风险场技术、实现多传感器全融合感知与主动安全预判、助力城市NOA/高速领航/全场景无人通行极致落地

华为乾崑ADS 5的核心颠覆性,不在于单一功能的小幅升级,而在于实现了自动驾驶从“工具式辅助驾驶”到“拟人化智能体驾驶”的全栈范式革命。通过WEWA 2.0端云协同AI智能体架构,解决了传统智驾决策僵硬、博弈能力弱、学习效率低的行业痛点;通过行业首发安全风险场技术,将自动驾驶安全体系从被动避险升级为主动预判,直接减半行车风险;通过乾崑OS专属车规系统底座,保障高阶智驾的低时延、高稳定、高可靠运行;通过多传感器超融合感知体系,实现全场景、全天候、无盲区的精细化环境理解。

getusushu的博客 289

rhel6.5镜像安装虚拟机以及建立快照虚拟机

本操作是作为环境搭建以实现后续实验内容 首先下载一个rhel6.5的镜像,安装一个虚拟机来作为母盘(最小安装)来建立快照 安装步骤 一、建立rhel6.5镜像共享的yum源实现虚拟机网络安装 1.在共享主机上安装httpd,开启服务,关闭火墙 yum install httpd -y systemctl start httpd systemcl enable httpd systemctl st...

weixin_44246619的博客 400

78.在 Vue3 中使用 OpenLayers 实现地图地点搜索定位功能

本文详细介绍了如何在 Vue3 中集成 OpenLayers,实现地图地点搜索和定位功能。Vue3 项目环境的搭建与依赖安装。使用语法实现地图初始化和控件集成。通过 OpenLayers 的 Popup 和 Geocoder 插件,实现地址搜索和定位。希望这篇博文能帮助你快速掌握 Vue3 与 OpenLayers 的集成技术。如果在使用过程中遇到问题,欢迎在评论区留言讨论,或者参考 OpenLayers 官方文档获得更多帮助。注意。

小彭的博客 1849

虚拟机的封装

rhel7.x 的封装 今天所作的虚拟机的封装是对以前的一个回顾,可以更加的熟悉使用封装虚拟机。 我首先的是制作rhel7.3,因为现在企业中红帽7 和红帽6 都还在使用当中,所以我们呢 首先就是先对红帽7进行封装 首先第一步就是母盘的制作 一、母盘的制作 1、因为我们在做实验的时候,使用了真实主机当作 yum源,并且有自己内部网络,可以单独的和我们母盘 进行连接,将自己的网络调配和yum源调配好...

liuchuang11的博客 620

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

真机linux系统封装rhel7.6虚拟机

flameshot full -p /home/usr/ -d 2000 ## 1 开启捕捉界面 flameshot gui ## 2 开启捕捉并设置存储位置 flameshot gui -p /path/to/captures ## 3 开启全屏捕捉 flameshot full ## 4 开启配置界面 flameshot config ## 5 万能的man man flameshot ...

Tuki来了 419

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: RHCE第八章:防火墙
下一篇: RHEL——系统引导过程及修复
Forget_8550
博客等级 码龄3年 221粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值