当前位置: 首页 > news >正文

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

pxe server 前言

PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,使得客户端计算机可以通过网络启动并安装操作系统或运行其他软件。

在Debian系统中,要设置一个PXE服务器,您需要以下几个组件:

  • TFTP服务器:用于提供启动镜像和引导加载程序。
  • DHCP服务器:用于分配IP地址给客户端计算机。
  • NFS或HTTP服务器:用于提供操作系统镜像和其他文件。

在Debian中,可以使用以下软件包来设置PXE服务器:

  • atftpd:一个轻量级的TFTP服务器,可以用于提供启动镜像和引导加载程序。
  • dnsmasq:一个轻量级的DHCP和DNS服务器,可以用于分配IP地址给客户端计算机。
  • nfs-kernel-server:用于提供NFS服务,以便客户端可以访问操作系统镜像和其他文件。

RockyLinux download

  • Rocky Linux Download-CSDN博客

 创建一键部署pxe server 环境脚本

  • pxe server 是RockyLinux 9
  • dhcp /etc/dhcp/dhcpd.conf 配置文件
  • tftp 配置文件/etc/default/tftpd-hpa
  • tftp 69
  • http 配置文件/etc/httpd/conf/httpd.conf
  • /etc/httpd/conf.d/pxeboot.conf 镜像http配置
  • http 端口80
  • /var/lib/tftpboot/pxelinux.cfg/default (bios 支持)配置文件
  • 10-48 行变量内容详细注意,更改自己需要的,自动化脚本仔细看
  • /var/lib/tftpboot/grub.cfg (uefi 支持)配置文件,grub.cfg此处Redhat 系和debian 系不一样哦注意哦
  • rockylinux root密码1234.com
  • LVM 自动分区,默认禁止/home 分区 
  • /var/pxe/{rockylinux8.10,rockylinux9.4} 挂载目录
  • /var/www/html/{rockylinux8.10,rockylinux9.4} images目录
  • /var/www/html/rockylinx_iso 8 9  iso 下载存放目录
  • /var/www/html/rockylinx_cfg{Rockylinux8.10-ks.cfg,Rockylinux9.4-ks.cfg} 自动化编排
  • rockylinux cfg编排参考
  • redhat cfg 编排参考(需要注册redhat 转换登录)
  • PXE网络安装参考,相关配置参考
  • bios 实现自动化安装esxi 需要syslinux官方是指导3.86,Redhat 8 系列下使用此 版本
  • # 加密密码生成
    python -c 'import crypt,getpass; \
    print(crypt.crypt(getpass.getpass(), \
    crypt.mksalt(crypt.METHOD_SHA512)))' 
vim /rockylinux_pxe_server_rockylinx.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: make.han 
# Email: CIASM@CIASM
# Date: 2024/07/24
# rockylinux 8 9 action pxe server
# PXE Redhat rockylinux almalinx oraclelinux 8 9#tftp variable configuration
tftp_port=69
tftp_user=tftp
tftp_catalogue=/var/lib/tftpboot#dhcp ip address variable configuration
nic_network_name=`ifconfig -s | awk 'NR>1 && !/^lo/ && !/^idrac/ && !/^br/ && !/^veth/ && !/^docker/{print $1; exit}'`
host_IP=`ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{ print $2}' | awk 'NR==1'`
MASK="255.255.255.0"
BROADCAST_ADDRESS="192.168.11.255"
ROUTERS="192.168.11.1"
SUBNET="192.168.11.0"
DNS="8.8.8.8"
RANGE="192.168.11.50 192.168.11.80"root_password='$6$4QaHWOfkEYxT2Dv6$3h5T/4AT/vkINa.R.9tToEUwro5YqD2UjulKRQ8k8ZMjqJOhib23nZ/fnKKgRh5TRaTg6I1mIa8VWJxmKQR7o0'# apache2 variable configuration
apache_port=80
apache_catalogue=/var/www/html#syslinux variable configuration
syslinux_download_url=https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.07.tar.gz
syslinux_gz=syslinux-4.07.tar.gz
syslinux_catalogue=syslinux-4.07# rockylinx download variable configuration
rockylinux8_download_url=https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.10-x86_64-dvd1.iso
rockylinux9_download_url=https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.4-x86_64-dvd.iso
rockylinux8_iso=Rocky-8.10-x86_64-dvd1.iso
rockylinux9_iso=Rocky-9.4-x86_64-dvd.iso# rockylinx 8 9 catalogue
rockylinx_cfg=rockylinx_cfg
rockylinx_iso=rockylinx_iso
rockylinux8_catalogue=rockylinux8.10
rockylinux9_catalogue=rockylinux9.4install_pxe_server (){if ! [ -x "$(command -v dhcpd)" ]; thenif [ $? -eq 0 ];thenecho "install tftp dhcp"
dnf install tftp tftp-server dhcp-server httpd syslinux net-tools -yecho "stop selinx"
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
setenforce 0echo "firewalld tftp"
yum install -y curl
firewall-cmd --zone=public --add-port=$tftp_port/tcp --permanent && firewall-cmd --reload
firewall-cmd --zone=public --add-port=$tftp_port/udp --permanent && firewall-cmd --reloadecho "apache2 firewall"
firewall-cmd --zone=public --add-port=$apache_port/tcp --permanent && firewall-cmd --reloadecho "configuration dhcpd.conf"
rm -rf /etc/dhcp/dhcpd.conf
cat >> /etc/dhcp/dhcpd.conf << EOF
option domain-name         "$DNS";
option domain-name-servers  $DNS;
default-lease-time 2592000;
max-lease-time 2592000;
authoritative;# add follows
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;subnet $SUBNET  netmask $MASK {range dynamic-bootp $RANGE;option broadcast-address $BROADCAST_ADDRESS;option routers $ROUTERS;#add followsclass "pxeclients" {match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";# PXE servers hostname or IP addressnext-server $host_IP;if option architecture-type = 00:07 {filename "BOOTX64.EFI";}else {filename "pxelinux.0";}}
}
EOFecho "restrat dhcpd"
systemctl enable --now dhcpd tftpecho "mkdir catalogue rockylinux cfg ISO save"
mkdir -p $apache_catalogue/{$rockylinx_cfg,$rockylinx_iso}echo "download rockylinux 8 9"
curl -o $apache_catalogue/$rockylinx_iso/$rockylinux8_iso $rockylinux8_download_url
curl -o $apache_catalogue/$rockylinx_iso/$rockylinux9_iso $rockylinux9_download_url mkdir -p /var/pxe/{$rockylinux8_catalogue,$rockylinux9_catalogue}
mkdir -p $tftp_catalogue/{$rockylinux8_catalogue,$rockylinux9_catalogue}echo "mount rockylinux 8 9"
mount -t iso9660 -o loop,ro $apache_catalogue/$rockylinx_iso/$rockylinux8_iso /var/pxe/$rockylinux8_catalogue
mount -t iso9660 -o loop,ro $apache_catalogue/$rockylinx_iso/$rockylinux9_iso /var/pxe/$rockylinux9_catalogueecho "Mount an image on startup"
sed -i "$ a $apache_catalogue/$rockylinx_iso/$rockylinux8_iso  /var/pxe/$rockylinux8_catalogue/ iso9660 defaults,loop,ro 0 0" /etc/fstab 
sed -i "$ a $apache_catalogue/$rockylinx_iso/$rockylinux9_iso  /var/pxe/$rockylinux9_catalogue/ iso9660 defaults,loop,ro 0 0" /etc/fstab echo "http config"
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.org
sed -i "s#DirectoryIndex index.html#DirectoryIndex index.html index.php index.cgi#"  /etc/httpd/conf/httpd.conf
sed -i "s#Options Indexes FollowSymLinks#Options FollowSymLinks#"  /etc/httpd/conf/httpd.conf
sed -i "s#AllowOverride None#AllowOverride All#"  /etc/httpd/conf/httpd.conf
sed -i '$a ServerTokens Prod' /etc/httpd/conf/httpd.confecho "copy vmlinuz initrd.img"
cp -rf /var/pxe/$rockylinux8_catalogue/images/pxeboot/{vmlinuz,initrd.img} $tftp_catalogue/$rockylinux8_catalogue
cp -rf /var/pxe/$rockylinux9_catalogue/images/pxeboot/{vmlinuz,initrd.img} $tftp_catalogue/$rockylinux9_catalogueecho "add pxeboot.conf"
cat >> /etc/httpd/conf.d/pxeboot.conf<<EOF
# create new
Alias /$rockylinux8_catalogue /var/pxe/$rockylinux8_catalogue
<Directory /var/pxe/$rockylinux8_catalogue>Options Indexes FollowSymLinks# IP address you allow to accessRequire ip 127.0.0.1 $SUBNET/$MASK
</Directory># create new
Alias /$rockylinux9_catalogue /var/pxe/$rockylinux9_catalogue
<Directory /var/pxe/$rockylinux9_catalogue>Options Indexes FollowSymLinks# IP address you allow to accessRequire ip 127.0.0.1 $SUBNET/$MASK
</Directory>
EOF#下载syslinux-4.07.tar.gz,用于支持Bios 模式安装esxi
echo "low version syslinux"
curl -o /$syslinux_gz $syslinux_download_url
tar -zxf /$syslinux_gz -C /
cp -rf /$syslinux_catalogue/core/pxelinux.0 $tftp_catalogue/
cp -rf /$syslinux_catalogue/com32/menu/menu.c32 $tftp_catalogue/
cp -rf /$syslinux_catalogue/com32/menu/vesamenu.c32 $tftp_catalogue/echo "mkdir pxelinux.cfg"
mkdir -p $tftp_catalogue/pxelinux.cfg
cat <<EOF>>$tftp_catalogue/pxelinux.cfg/default
# change like follows#Official page display
default vesamenu.c32#Simple page display
#default menu.c32  #Set the home page timeout period according to project requirements timeout 30
timeout 300 #/var/lib/tftpboot/下,命名为you.png
#menu background ubunutu.pngmenu title ########## PXE Boot Menu #########
display boot.msglabel Auto Rockylinux8.10menu label ^Auto Install Rockylinux8.10kernel $rockylinux8_catalogue/vmlinuzappend initrd=$rockylinux8_catalogue/initrd.img ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux8.10-ks.cfglabel Auto Rockylinux9.4menu label ^Auto Install Rockylinux9.4kernel $rockylinux9_catalogue/vmlinuzappend initrd=$rockylinux9_catalogue/initrd.img ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux9.4-ks.cfglabel Manual Rockylinux8.10menu label ^Manual Install Rockylinux8.10kernel $rockylinux8_catalogue/vmlinuzappend initrd=$rockylinux8_catalogue/initrd.img ip=dhcp inst.repo=http://${host_IP}/$rockylinux8_cataloguelabel Manual Rockylinux9.4menu label ^Manual Install Rockylinux9.4kernel $rockylinux9_catalogue/vmlinuzappend initrd=$rockylinux9_catalogue/initrd.img ip=dhcp inst.repo=http://${host_IP}/$rockylinux9_cataloguelabel local#menu defaultcom32 chain.c32menu label Boot from ^local drivelocalboot 0xffff
menu end
EOFecho "creation grub.cfg"
cat <<EOF>>$tftp_catalogue/grub.cfg
# ubuntu 24
set default="3"set timeout=10
set gfxpayload=keep
set color_normal=white/blackfunction load_video {insmod video_bochsinsmod video_cirrusinsmod all_video
}load_video
insmod gzio
insmod part_msdos
insmod part_gpt
insmod ext2
insmod xfs
insmod png
insmod gfxterm
insmod gfxmenu
terminal_output gfxterm
background_image -m stretch bg.pngmenuentry 'EFI Firmware System Setup'  'uefi-firmware' {fwsetup
}menuentry 'Reboot System' {reboot
}menuentry 'Shutdown System' {halt
}menuentry 'Auto Install Rockylinux 8.10' {linuxefi $rockylinux8_catalogue/vmlinuz  ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux8.10-ks.cfginitrdefi $rockylinux8_catalogue/initrd.img
}menuentry 'Auto Install Rockylinux 9.4' {linuxefi $rockylinux9_catalogue/vmlinuz  ip=dhcp inst.ks=http://${host_IP}/$rockylinx_cfg/Rockylinux9.4-ks.cfginitrdefi $rockylinux9_catalogue/initrd.img
}menuentry 'Manual Install Rockylinux 8.10' {linuxefi $rockylinux8_catalogue/vmlinuz  ip=dhcp inst.repo=http://${host_IP}/$rockylinux8_catalogueinitrdefi $rockylinux8_catalogue/initrd.img
}menuentry 'Manual Install Rockylinux 9.4' {linuxefi $rockylinux9_catalogue/vmlinuz  ip=dhcp inst.repo=http://${host_IP}/$rockylinux9_catalogueinitrdefi $rockylinux9_catalogue/initrd.img
}
EOFecho "add rockylinx 9.4 cfg"
cat <<EOF>>$apache_catalogue/$rockylinx_cfg/Rockylinux9.4-ks.cfg
# automatically proceed for each steps
graphical# AppStream
repo --name="AppStream" --baseurl="http://${host_IP}/$rockylinux9_catalogue/AppStream"# Use network installation
url --url="http://${host_IP}/$rockylinux9_catalogue"# install disk
ignoredisk --only-use=sda# selinux stop
selinux --disabled# keyboard layouts
keyboard us# system locale
lang en_US# network settings
network  --bootproto=dhcp --ipv6=auto --activate --hostname=localhost
network --bootproto=static --device=em2 --ip=192.168.3.100 --netmask=255.255.255.0 --gateway=192.168.3.11 --nameserver=8.8.8.8 --ipv6=auto --activate# root password you generated above
rootpw --iscrypted $root_password# System timezone
timezone Asia/Shanghai --isUtc# Run the Setup Agent on first boot
firstboot --disable# Firewall configuration
auth --passalgo=sha512 --useshadow
firewall --enabled --ssh
firstboot --disable# Automated low-level formatting
zerombr#Automatic partition, / partition uses all space, disable home partition
autopart --type=lvm --fstype=xfs --nohome# initialize all partition tables
clearpart --all --initlabel
#clearpart --none --initlabel# partitioning
# for [/boot/efi], it needs only for UEFI clients
#part pv.106 --fstype="lvmpv" --ondisk=sda --size=919974
#part /boot --fstype="xfs" --ondisk=sda --size=1024
#part /boot/efi --fstype="efi" --ondisk=sda --size=600 --fsoptions="umask=0077,shortname=winnt"
#volgroup ro --pesize=4096 pv.106
#logvol swap --fstype="swap" --size=8611 --name=swap --vgname=ro
#logvol / --fstype="xfs" --size=911360 --name=root --vgname=ro# reboot after installing
reboot%packages
@^minimal-environment
@console-internet
kexec-tools
net-tools
vim
unzip
wget
tmux
git
tree
curl
jq
%end%post
yum clean all
yum makecache
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
%end
EOFecho "add Rockylinux8.10-ks.cfg"
cat <<EOF>>$apache_catalogue/$rockylinx_cfg/Rockylinux8.10-ks.cfg
# create new
# automatically proceed for each steps
graphical# AppStream
repo --name="AppStream" --baseurl="http://${host_IP}/$rockylinux8_catalogue/AppStream"# Use network installation
url --url=http://${host_IP}/$rockylinux8_catalogue# install disk
ignoredisk --only-use=sda# selinux stop
selinux --disabled# keyboard layouts
keyboard us# system locale
lang en_US# network settings
network  --bootproto=dhcp --ipv6=auto --activate --hostname=localhost
network --bootproto=static --device=em2 --ip=192.168.3.100 --netmask=255.255.255.0 --gateway=192.168.3.11 --nameserver=8.8.8.8 --ipv6=auto --activate# root password you generated above
rootpw --iscrypted $root_password# System timezone
timezone Asia/Shanghai --isUtc# Run the Setup Agent on first boot
firstboot --enable# Firewall configuration
firewall --enabled --port=22:tcp# Automated low-level formatting
zerombr#Automatic partition, / partition uses all space, disable home partition
autopart --type=lvm --fstype=xfs --nohome# initialize all partition tables
clearpart --all --initlabel# partitioning
# for [/boot/efi], it needs only for UEFI clients
#part /boot/efi --fstype="efi" --ondisk=sda --size=4096 --fsoptions="defaults,uid=0,gid=0,umask=0077,shortname=centos"
#part /boot --fstype="xfs" --size=4096
#part pv.12 --grow --fstype="lvmpv" --size=871120
#volgroup ro --pesize=4096 pv.12
#logvol swap  --fstype="swap" --size=4096 --name=swap --vgname=ro
#logvol /  --fstype="xfs" --size=871120 --name=root --vgname=ro# reboot after installing
reboot%packages
@^minimal-environment
kexec-tools
net-tools
vim
unzip
wget
tmux
git
tree
curl
jq
tar
lm_sensors
lm_sensors-libs
%end%post
yum clean all
yum makecache
yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
%end
EOFecho "uefl add"
mkdir -p /rpm
yum install yum-utils -y
yumdownloader --resolve --destdir=/rpm shim grub2-efi-x64 syslinux-tftpboot
cd /rpm
rpm2cpio shim-x64-*.rpm | cpio -dimv
rpm2cpio grub2-efi-x64-*.rpm | cpio -dimv
rpm2cpio syslinux-tftpboot-* | cpio -dimv
cp ./boot/efi/EFI/BOOT/BOOTX64.EFI $tftp_catalogue/
cp ./boot/efi/EFI/rocky/grubx64.efi $tftp_catalogue/
chmod 644 $tftp_catalogue/{BOOTX64.EFI,grubx64.efi}#Copy the EFI boot image from the boot directory
echo "Copy the EFI boot image from the boot directory"
mkdir -p $tftp_catalogue/uefi
cp -rf /rpm/boot/efi/EFI/rocky/* $tftp_catalogue/uefi/echo "copy pxelinux"
mkdir -p $tftp_catalogue/pxelinux
cp /rpm/tftpboot/* $tftp_catalogue/pxelinux/echo "restrat dhcp http tftp"
systemctl restart dhcpd httpd tftpecho "Deleting an rpm directory"
rm -rf /rpmecho -e "\033[32mThe esxi pxe server Install Sussess...\033[0m" elseecho -e "\033[33mThe esxi pxe server Install Failed...\033[0m" exit 1fielseecho -e "\033[31mThe esxi pxe server Install already...\033[0m"
fi
}main (){install_pxe_server
}main

 执行安装

bash /rockylinux_pxe_server_rockylinx.sh

RockyLinux 8 9 Bios 自动化部署

​​

RockyLinux 8 9 uefi 自动化部署 

分区lvm ,去除home目录

相关文章:

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

pxe server 前言 PXE&#xff08;Preboot eXecution Environment&#xff0c;预启动执行环境&#xff09;是一种网络启动协议&#xff0c;允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器&#xff0c;它提供了启动镜像和引导加载程序&#xff0c;…...

接口测试基础

一、认识接口测试 接口测试 接口&#xff1a;系统之间数据交互的通道。 硬件接口 软件接口 接口测试&#xff1a;基于不同的输入参数&#xff0c;校验接口响应数据与预期数据是否一致。 为什么要学接口测试? 提前介入测试、尽早发现问题 中级测试工程师必备技能 接口测试学…...

为什么 from . import * 不会导入子模块

为什么 from . import * 不会导入子模块 在 Python 中&#xff0c;from . import * 并不会自动导入子模块。这是因为 import * 的行为是由模块的 __all__ 变量决定的。如果没有定义 __all__&#xff0c;它只会导入当前模块中定义的顶层变量和函数&#xff0c;而不会递归地导入…...

LangGPT结构化提示词编写实践

langGPT提示词 # Role: 浮点数比较助手 ## Profile - author: LangGPT - version: 1.0 - language: 中文 - description: 一个专门帮助用户进行浮点数比较的助手&#xff0c;确保LLM能够准确识别和对比浮点数。## Skills 1. 理解浮点数的结构和数值意义。 2. 精…...

React: class 和 style

一、class 1、在react中使用className属性来绑定类名 <div className"header flex-middle-middle">添加2个类名 </div>2、动态添加类名 <div className{item ${nameactive ? active : }}>动态添加active类名 </div>二、style 1、react中…...

【数据结构】包装类、初识泛型

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…...

TCP客户端connect断线重连

文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况&#xff0c;我们可以试着写一个客户端重连的代码&#xff0c;模拟并理解一些客户端行为&#xff0c;比如游戏客户端等. 考虑到…...

细说MCU用DMA改变DAC输出信号频率和改善输出波形质量的方法

目录 一、参考硬件 二、修改定时器参数改变输出波形频率 三、改善波形质量 四、代码修改 五、查看结果 一、参考硬件 本项目的软件硬件工程参考作者的其他文章&#xff1a;细说MCU用DMA实现DAC输出的方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/14065…...

Java高级面试题

文章目录 Java高级特性Java 8 中的新特性有哪些&#xff1f;Lambda 表达式的用途是什么&#xff1f;Stream API 的工作原理是什么&#xff1f;Optional 类的作用是什么&#xff1f;什么是函数式接口&#xff1f;Java 9 之后的新特性有哪些&#xff1f; 并发编程Java中的线程池是…...

USART串口理论知识总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码 #include <stdint.h…...

基于 HTML+ECharts 实现智慧景区数据可视化大屏(含源码)

构建智慧景区数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 随着旅游业的蓬勃发展&#xff0c;智慧景区的概念逐渐深入人心。通过数据可视化&#xff0c;景区管理者可以实时监控游客流量、设施使用情况以及环境状况&#xff0c;从而提升游客体验和管理效率。本文将详…...

vxe-table——实现切换页码时排序状态的回显问题(ant-design+elementUi中table排序不同时回显的bug)——js技能提升

之前写的后台管理系统&#xff0c;都是用的antdelement&#xff0c;table组件中的【排序】问题是有一定的缺陷的。 想要实现的效果&#xff1a; antv——table组件一次只支持一个参数的排序 如下图&#xff1a; 就算是可以自行将排序字段拼接到列表接口的入参中&#xff0c…...

SQL

SQL全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库的…...

maven archetype

1.简介 maven脚手架是为了创建一个项目模板&#xff0c;以后新建项目都能够复用该模板 maven中模板引擎使用的是velocity,在文件中可以使用它的语法获取变量等操作 2.实现 单模块脚手架实现 pom.xml <?xml version"1.0" encoding"UTF-8"?> &…...

浏览器打开抽奖系统html

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>在线抽奖 随机选取 自动挑选</title> <script src"https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <style> body {…...

微信小程序-使用Component方法代替Page方法构造页面

一.使用Component方法的前提条件 在小程序js文件里使用Component方法代替Page方法需要在json文件里面定义usingComponents属性 {"usingComponents": {} }二.注意事项 1.在page页面里使用的钩子函数和事件监听方法都需要写在methods对象里面 methods:{update(){thi…...

Spark SQL----DISTRIBUTE BY子句

Spark SQL----DISTRIBUTE BY子句 一、描述二、语法三、参数四、例子 一、描述 DISTRIBUTE BY子句用于根据输入表达式对数据进行重新分区。与CLUSTER BY子句不同&#xff0c;这不会对每个分区内的数据进行排序。 二、语法 DISTRIBUTE BY { expression [ , ... ] }三、参数 e…...

HTML5-canvas1

1、canvas&#xff1a;创建画布 <canvas id"canvas"></canvas>2、画一条直线 var canvasdocument.getElementById(cancas&#xff09;; canvas.width800; canvas.height800; var contextcanvas.getContext(2d); //获得2d绘图上下文环境 //画一条直线 c…...

【NOI-题解】1009 - 数组逆序1162 - 数组元素的删除1211 - 数组元素的插入1161. 元素插入有序数组1159. 数组元素的移动

文章目录 一、前言二、问题问题&#xff1a;1009 - 数组逆序问题&#xff1a;1162 - 数组元素的删除问题&#xff1a;1211 - 数组元素的插入问题&#xff1a;1161. 元素插入有序数组问题&#xff1a;1159. 数组元素的移动 三、感谢 一、前言 本章节主要对数组问题中数组元素移…...

新电脑如何设置 npm 源及查看源、安装 cnpm、pnpm 和 yarn 的详细教程

当你获得一台新电脑&#xff0c;或需要在现有电脑上优化 JavaScript 和 Node.js 的开发环境时&#xff0c;正确配置 npm 是一步不可少的过程。本教程将详细指导你如何设置 npm 源&#xff0c;查看当前源&#xff0c;以及如何安装 cnpm、pnpm 和 yarn。 1. 设置 npm 源 npm (N…...

完全移动huggingface模型仓库(不是简单mv)

Linux中移动huggingface模型仓库 参考链接 先在bashrc中配置&#xff1a; export HF_DATASETS_CACHE"/your/path/dataset" export HF_HOME"/your/path/" export HUGGINGFACE_HUB_CACHE"/your/path/hub" export TRANSFORMERS_CACHE"/your…...

手机空号过滤批量查询的意义及方法

手机空号过滤批量查询是现代营销和通信管理中常用的技术手段&#xff0c;旨在通过批量处理手机号码&#xff0c;筛选出活跃号码和空号等无效号码&#xff0c;以提高营销效率和减少不必要的通信成本。以下是关于手机空号过滤批量查询的详细解答&#xff1a; 一、手机空号过滤批…...

Dockerfile制作部署wordpress-6.6

目录 一. 环境准备 二. 准备对应的配置文件 三. 编写Dockerfile 四. 构建镜像 五. 配置MySQL 六. 安装wordpress 七. 扩展 一. 环境准备 localhost192.168.226.25 rocky_linux9.4 Docker version 27.0.3 关闭防火墙和selinux&#xff0c;进行时间同步。 安装docker…...

项目的纪要

ai客服项目中发现的问题: 可以在控制台看到我们存储的cookie: 可以看到是这样的, 但是我们通过getCookie方法专门获取这个字段, 然后在控制台打印后 const userName getCookie(SA_USER_NICK_NAME); console.log(userName, userName); 输出结果是: 然后我们尝试通过de…...

ubuntu 更新源

前言 实现一键替换在线源 一键更新源 ubuntu 全球镜像站以下支持现有ubuntu 20&#xff0c;22&#xff0c;24 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.li…...

XGBoost、RF随机森林算法MATLAB实现

% 加载并预处理训练数据 opts1 = detectImportOptions(附件一AE.xlsx, PreserveVariableNames, true); train_data = readtable(附件一AE.xlsx, opts1); train_data.Time = datetime(train_data.time, InputFormat, yyyy-MM-dd HH:mm:ss); % 特征提取和标签准备 windowSize…...

WPF 解决: DataGrid 已定义列,但是还是会显示模型的所有属性的问题

AutoGenerateColumns 属性 AutoGenerateColumns&#xff1a;这个属性决定 DataGrid 是否根据数据源中的属性自动生成列。如果设置为 true&#xff0c;DataGrid 会根据数据源中的属性自动生成列。如果设置为 false&#xff0c;则 DataGrid 不会自动生成列&#xff0c;开发者需要…...

【ai】Easy-RAG : ImportError: cannot import name ‘BaseModel‘ from ‘pydantic‘

[Bug]: cannot import name ‘RootModel’ from ‘pydantic’ #1237 版本不匹配导致 ImportError: cannot import name ‘BaseModel’ from ‘pydantic’ /home/zhangbin/miniconda3/envs/Easy-RAG/bin/python /home/zhangbin/proj/06_rag/02_Easy-RAG/webui.py /home/zhangbi…...

WebKit简介

WebKit是一个开源的浏览器引擎&#xff0c;最初由苹果公司开发&#xff0c;用于Safari浏览器。它是基于KDE项目的KHTML引擎进行开发&#xff0c;并在改进和扩展中形成了WebKit引擎。 WebKit的工作流程可以分为以下几个步骤&#xff1a; 1.解析HTML&#xff1a;当浏览器加载一个…...

笔记 | Python环境下的GUI编程常用包

前言 Python的使用频率和范围越来越大&#xff0c;在一些开发工作中由于需要可视化的图形界面&#xff0c;常常需要进行图形用户界面&#xff08;Graphic User Interface, GUI&#xff09;开发。例如&#xff0c;目前最火热的大模型应用&#xff0c;常常是以一个网页界面进行操…...

mysql 数据库空间统计sql

mysql 数据库空间统计 文章目录 mysql 数据库空间统计说明一、数据库存储代码二、查询某个数据库的所有表的 代码总结 说明 INFORMATION_SCHEMA Table Reference 表参考 information_schema是‌MySQL中的一个特殊数据库&#xff0c;它存储了关于所有其他数据库的元数据信息。…...

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁&#xff08;Mutex&#xff09;8.2 条件变量&#xff08;Condition Variable&#xff09;8.3 信号量&#xff08;Semaph…...

stm32入门-----TIM定时器(PWM输出比较——下)

目录 前言 一、硬件元器件介绍 1.舵机 2.直流电机驱动 二、C语言编程步骤 1.开启时钟 2.配置输出的GPIO口 3.配置时基单元 4.初始化输出比较通道 5.开启定时器 三、实践项目 1.PWM驱动LED呼吸灯 2.PWM驱动舵机 3.PWM驱动直流电机 前言 本期我们就开始去进行TIM定时…...

css实现线条中间高亮,左右两边模糊(linear-gradient的运用)

效果&#xff1a; <div class"line"></div> .line {height: 1px;background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #a9c2ff 50%, rgba(255, 255, 255, 0) 100%);border-radius: 4px 4px 4px 4px; } CSS实现边框底部渐变色的方法:(最简单…...

【数据结构】建堆算法复杂度分析及TOP-K问题

【数据结构】建堆算法复杂度分析及TOP-K问题 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】建堆算法复杂度分析及TOP-K问题前言一.复杂度分析1.1向下建堆复杂度1.2向上建堆复杂度1.3堆排序复杂度 二.TOP-K问…...

Thinkphp5实现前后端通过接口通讯基本操作方法

在ThinkPHP5框架中&#xff0c;实现前后端通过接口通讯是一个常见的需求&#xff0c;尤其是在开发RESTful API时。下面是一个基本的步骤指南&#xff0c;用于设置ThinkPHP5来创建API接口&#xff0c;并使前端能够通过HTTP请求与后端进行通讯。 1. 创建API模块 首先&#xff0…...

Go 语言任务编排 WaitGroup

WaitGroup 是常用的 Go 同步原语之一,用来做任务编排。它要解决的就是并发-等待的问题: 现在有一个 goroutine A 在检查点 ( checkpoint ) 等待一组 goroutine 全部完成它们的任务,如果这些 goroutine 还没全部完成任务,那么 goroutine A 就会被阻塞在检查点,直到所有的 …...

星环科技推出知识库产品 AI PC时代数据交互方式变革

随着企业业务的快速发展&#xff0c;数据量呈爆炸式增长&#xff0c;有效的知识管理成为企业面临的重要问题。企业遇到的普遍问题是大量的结构化、半结构化数据存储在不同的系统中&#xff0c;需要用多种计算机语言进行检索。而大模型彻底改变了人们和数据的交互方式&#xff0…...

10道JVM经典面试题

1、 JVM中&#xff0c;new出来的对象是在哪个区&#xff1f; 2、 说说类加载有哪些步骤&#xff1f; 3、 JMM是什么&#xff1f; 4、 说说JVM内存结构&#xff1f; 5、 MinorGC和FullGC有什么区别&#xff1f; 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出&#xff1f…...

Redisson常用的数据结构及应用场景

Redisson 提供了一系列高级数据结构&#xff0c;这些数据结构封装了 Redis 的原生数据类型&#xff0c;提供了 Java API 的便利性和分布式特性。以下是 Redisson 中一些常用的数据结构&#xff0c;场景还在不断完善中&#xff1a; RBucket&#xff1a;这是一个简单的键值对存储…...

【实现100个unity特效之8】使用ShaderGraph实现2d贴图中指定部分局部发光效果

最终效果 寒冰法师 火焰法师 文章目录 最终效果寒冰法师火焰法师 素材一、功能分析实现方法基本思路Unity的Bloom后处理为什么关键部位白色&#xff1f;最终结果 二、 新建URP项目三、合并图片四、使用PS制作黑白图片方法一 手动涂鸦方法二 魔棒工具1. 拖入图片进PS&#xff0…...

Ubuntu 24.04 LTS Noble安装Docker Desktop简单教程

Docker 为用户提供了在 Ubuntu Linux 上快速创建虚拟容器的能力。但是&#xff0c;那些不想使用命令行管理容器的人可以在 Ubuntu 24.04 LTS 上安装 Docker Desktop GUI&#xff0c;本教程将提供用于设置 Docker 图形用户界面的命令…… Docker Desktop 是一个易于使用的集成容…...

XML 和 SimpleXML 入门教程

XML 和 SimpleXML 入门教程 XML&#xff08;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言。它是一种自我描述的语言&#xff0c;允许用户定义自己的标签来表示数据。SimpleXML 是 PHP 中的一个扩展&#xff0c;用于解析和操作 XML 数据。本文将介绍 XML 和 …...

leetcode--链表类题目总结

本文作为刷题时对链表类题目的总结. 常见技巧: 引入虚拟头节点 便于处理边界情况便于对链表操作快慢双指针(判环,找环的入口等)链表逆序(推荐使用 虚拟头节点 头插法 进行逆序) 链表逆序( 头插法 虚拟头节点):链表内指定区间反转_牛客题霸_牛客网 虚拟节点:合并…...

打卡第22天------回溯算法

开始学习了,希望我可以尽快成功上岸! 一、回溯理论基础 什么是回溯法?回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 回溯法的效率回溯法的本质是穷举,穷举所有可能,然后找出我们想要的答案。如果想让回溯法高效一些,可…...

Ubuntu对比两个文件内容有什么区别?

在Ubuntu&#xff08;或任何基于Linux的系统&#xff09;中&#xff0c;你可以使用多种命令行工具来比较两个文件的内容差异。以下是一些常用的方法&#xff1a; 1. **diff 命令**&#xff1a; diff 是Linux中用于比较两个文件差异的标准工具。它逐行比较文件&#xff0c;并显示…...

python:本机摄像头目标检测实时推理(使用YOLOv8n模型)

本文将介绍如何使用本机摄像头进行目标检测实时推理的python代码。 文章目录 一、下载YOLO权重文件二、环境配置三、完整代码 一、下载YOLO权重文件 https://github.com/ultralytics/ultralytics?tabreadme-ov-file 拉到网页最下面&#xff0c;选择适合的模型&#xff0c;下…...

Spark实时(四):Strctured Streaming简单应用

文章目录 Strctured Streaming简单应用 一、Output Modes输出模式 二、Streaming Table API 三、​​​​​​​​​​​​​​Triggers 1、​​​​​​​unspecified&#xff08;默认模式&#xff09; 2、​​​​​​​​​​​​​​Fixed interval micro-batches&am…...

SpringBoot上传超大文件导致OOM,完美问题解决办法

问题描述 报错: Caused by: java.lang.OutOfMemoryError at java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123) ~[?:1.8.0_381] at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117) ~[?:1.8.0_381] at java.…...

PyTorch 的各个核心模块和它们的功能

1. torch 核心功能 张量操作&#xff1a;PyTorch 的张量是一个多维数组&#xff0c;类似于 NumPy 的 ndarray&#xff0c;但支持 GPU 加速。数学运算&#xff1a;提供了各种数学运算&#xff0c;包括线性代数操作、随机数生成等。自动微分&#xff1a;torch.autograd 模块用于…...