ubuntu 24 PXE Server (bios+uefi) 批量部署系统

 

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服务,以便客户端可以访问操作系统镜像和其他文件。

ubuntu download 

  • ubuntu 生命周期注意
ubuntu amdubuntu  其它ubuntu 历史版ubuntu 生命周期ubuntu 自动化编排user-datadebian dhcp 配置

ubuntu 全球镜像站

downloaddownloaddownload参考参考参考参考

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

  • 安装完成用户密码ubuntu/1234.com(root强制更新密码ubuntu24.04,默认密码1234.com)
  • dhcp /etc/dhcp/dhcpd.conf 配置文件
  • tftp 配置文件/etc/default/tftpd-hpa
  • tftp 69
  • apache2 配置文件/etc/apache2/apache2.conf 
  • apache2 端口80
  • syslinux 文件 /usr/lib/syslinux/modules/bios/ #需要安装syslinux
  • pxelinux 文件 /usr/lib/PXELINUX/ #需要安装pxelinux
  • /var/lib/tftp/pxelinux.cfg/default (bios 支持)配置文件
  • /var/lib/tftp/grub/grub.cfg (uefi 支持)配置文件
  • /var/www/html/ubuntu24.04/user-data #cloud-init #自动安装配置,user-data 配置增加了,root允许远程连接,禁止系统待机,禁止安装弹出窗口,开启系统默认使用vim,系统默认使用sh,分区结构LVM
  • /var/www/html/ubuntu24.04/meta-data 空文件创建
  • mkpasswd -m sha-512 生成密钥 安装whois
  • /etc/apt/soures.list.d/ubuntu.sources 在线源生成在此位置
  • 脚本自动化部署兼容 ubuntu 22,23,24
  • 17-52 行变量内容详细注意,更改自己需要的,自动化脚本仔细看
  • ds=nocloud-net;s= Bios启动特殊字符去除\不需要转义
  • ds=nocloud-net\;s= UEFI启动grub将;识别为了特殊字符要在;前加\转义
vim /ubuntu_pxe_server_bios_uefi.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: make.han 
# Email: CIASM@CIASM
# Date: 2024/07/19
# install PXE Server ubuntu 22 23 24<<!
#自动安装简介
https://canonical-subiquity.readthedocs-hosted.com/en/latest/intro-to-autoinstall.html
https://canonical-subiquity.readthedocs-hosted.com/en/latest/howto/autoinstall-quickstart.html#user-data 配置
https://canonical-subiquity.readthedocs-hosted.com/en/latest/reference/autoinstall-reference.html
!#tftp variable configuration
tftp_port=69
tftp_user=tftp
tftp_catalogue=/var/lib/tftp#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'`
IP="192.168.11.179"
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"# user automated scripts user-data
# root用户,普通用户 密码使用crypt(3)哈希进行加密(apt install -y whois) (mkpasswd -m sha-512 生成密钥)
root_user='root'
root_password='$6$4QaHWOfkEYxT2Dv6$3h5T/4AT/vkINa.R.9tToEUwro5YqD2UjulKRQ8k8ZMjqJOhib23nZ/fnKKgRh5TRaTg6I1mIa8VWJxmKQR7o0'
ubunutu_user='ubuntu'
ubunutu_hostname='ubuntu'
ubuntu_password='$6$4QaHWOfkEYxT2Dv6$3h5T/4AT/vkINa.R.9tToEUwro5YqD2UjulKRQ8k8ZMjqJOhib23nZ/fnKKgRh5TRaTg6I1mIa8VWJxmKQR7o0'
timezone='Asia/Shanghai'# apache2 variable configuration
apache_port=80
apache_catalogue=/var/www/html# ubuntu download variable configuration
ubuntu22_download_url=https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.4-live-server-amd64.iso
ubuntu24_download_url=https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/24.04/ubuntu-24.04-live-server-amd64.iso
ubuntu22_iso=ubuntu-22.04.4-live-server-amd64.iso
ubuntu24_iso=ubuntu-24.04-live-server-amd64.iso
ubuntu22_catalogue=ubuntu22.04
ubuntu24_catalogue=ubuntu24.04install_pxe_server (){if ! [ -x "$(command -v dhcpd)" ]; thenif [ $? -eq 0 ];thenecho "install firewalld curl"
apt install -y firewalld 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 "install whois mkpasswd"
apt install -y whoisecho "install dhcp"
apt install -y isc-dhcp-serverecho "isc-dhcp-server add nic"
sed -i "s/^INTERFACESv4=.*$/INTERFACESv4=\"$nic_network_name\"/" /etc/default/isc-dhcp-serverecho "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 $IP;if option architecture-type = 00:07 {filename "bootx64.efi";}else {filename "pxelinux.0";}}
}
EOFecho "restart dhcp"
systemctl enable isc-dhcp-server
systemctl restart isc-dhcp-serverecho "install tftpd-hpa"
apt install -y tftpd-hpaecho "configuration tftpd-hpa"
rm -rf /etc/default/tftpd-hpa
cat <<EOF>>/etc/default/tftpd-hpa
TFTP_USERNAME="$tftp_user"
TFTP_DIRECTORY="$tftp_catalogue/"
TFTP_ADDRESS=":$tftp_port"
TFTP_OPTIONS="--secure"
EOFecho "Create a new tftp directory"
mkdir -p $tftp_catalogueecho "start tftpd-hpa"
systemctl enable tftpd-hpa
systemctl start tftpd-hpaecho "install apache2"
apt install -y apache2echo "Delete the default apache2 page"
rm -rf $apache_catalogue/index.htmlecho "restart apache2"
systemctl enable apache2
systemctl restart apache2echo "apache2 firewall"
firewall-cmd --zone=public --add-port=$apache_port/tcp --permanent && firewall-cmd --reloadecho "mkdir catalogue ubuntu22.04 ubuntu24.04"
mkdir -p $apache_catalogue/{$ubuntu22_catalogue,$ubuntu24_catalogue}echo "download ubuntu22.04 ubuntu24.04"
curl -o $apache_catalogue/$ubuntu24_catalogue/$ubuntu24_iso $ubuntu24_download_url
curl -o $apache_catalogue/$ubuntu22_catalogue/$ubuntu22_iso $ubuntu22_download_urlecho "mount ubuntu22.04 ubuntu24.04"
mkdir -p /mnt/{$ubuntu22_catalogue,$ubuntu24_catalogue}
mount -t iso9660 -o loop,ro $apache_catalogue/$ubuntu24_catalogue/$ubuntu24_iso /mnt/$ubuntu24_catalogue
mount -t iso9660 -o loop,ro $apache_catalogue/$ubuntu22_catalogue/$ubuntu22_iso /mnt/$ubuntu22_catalogueecho "syslinux pxelinux"
apt install -y syslinux pxelinuxecho "copy ubuntu22.04 ubuntu24.04"
mkdir -p $tftp_catalogue/{$ubuntu22_catalogue,$ubuntu24_catalogue}
cp /mnt/$ubuntu24_catalogue/casper/{vmlinuz,initrd} $tftp_catalogue/$ubuntu24_catalogue
cp /mnt/$ubuntu24_catalogue/casper/{vmlinuz,initrd} $tftp_catalogue/$ubuntu22_catalogueecho "copy syslinux"
cp /usr/lib/syslinux/modules/bios/* $tftp_catalogue/
#cp /usr/lib/syslinux/modules/bios/{ldlinux.c32,libutil.c32,menu.c32,vesamenu.c32} $tftp_catalogue/
cp /usr/lib/PXELINUX/{lpxelinux.0,pxelinux.0} $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 Install ubuntu 22.04menuentry  ^Auto Install ubuntu22.04menu defaultkernel $ubuntu22_catalogue/vmlinuzinitrd $ubuntu22_catalogue/initrdappend ip=dhcp url=http://${host_IP}/$ubuntu22_catalogue/$ubuntu22_iso autoinstall ds=nocloud-net;s=http://${host_IP}/$ubuntu22_catalogue/label Auto Install ubuntu 24.04menuentry  ^Auto Install ubuntu24.04menu defaultkernel $ubuntu24_catalogue/vmlinuzinitrd $ubuntu24_catalogue/initrdappend ip=dhcp url=http://${host_IP}/$ubuntu24_catalogue/$ubuntu24_iso autoinstall ds=nocloud-net;s=http://${host_IP}/$ubuntu24_catalogue/label Manual ubuntu 22.04menu label ^Manual Install ubuntu 22.04kernel $ubuntu22_catalogue/vmlinuzinitrd $ubuntu22_catalogue/initrdappend ip=dhcp url=http://${host_IP}/$ubuntu22_catalogue/$ubuntu22_isolabel Manual ubuntu 24.04menu label ^Manual Install ubuntu 24.04kernel $ubuntu24_catalogue/vmlinuzinitrd $ubuntu24_catalogue/initrdappend ip=dhcp url=http://${host_IP}/$ubuntu24_catalogue/$ubuntu24_isolabel local#menu defaultcom32 chain.c32menu label Boot from ^local drivelocalboot 0xffff
menu end
EOFecho "creation grub.cfg"
mkdir -p $tftp_catalogue/grub
cat <<EOF>>$tftp_catalogue/grub/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 ubuntu22.04' {linux $ubuntu22_catalogue/vmlinuz ip=dhcp url=http://${host_IP}/$ubuntu22_catalogue/$ubuntu22_iso autoinstall ds=nocloud-net\;s=http://${host_IP}/$ubuntu22_catalogue/initrd $ubuntu22_catalogue/initrd
}menuentry 'Auto Install ubuntu24.04' {linux $ubuntu24_catalogue/vmlinuz ip=dhcp url=http://${host_IP}/$ubuntu24_catalogue/$ubuntu24_iso autoinstall ds=nocloud-net\;s=http://${host_IP}/$ubuntu24_catalogue/initrd $ubuntu24_catalogue/initrd
}menuentry 'Manual Install ubuntu 22.04'  {linux $ubuntu22_catalogue/vmlinuz ip=dhcp url=http://${host_IP}/$ubuntu22_catalogue/$ubuntu22_isoinitrd $ubuntu22_catalogue/initrd
}menuentry 'Manual Install ubuntu 24.04'  {linux $ubuntu24_catalogue/vmlinuz ip=dhcp url=http://${host_IP}/$ubuntu24_catalogue/$ubuntu24_isoinitrd $ubuntu24_catalogue/initrd
}
EOFecho "add ubuntu 24.04 user-data"
cat <<EOF>>$apache_catalogue/$ubuntu24_catalogue/user-data
#cloud-config
autoinstall:version: 1apt:primary:- arches: [i386, amd64]uri: http://mirrors.aliyun.com/ubuntu- arches: [s390x, arm64, armhf, powerpc, ppc64el, riscv64]uri: https://mirrors.aliyun.com/ubuntu-ports/user-data:timezone: $timezonedisable_root: falsechpasswd:list: |$root_user:$root_passwordidentity:realname: ubuntu userhostname: $ubunutu_hostnamepassword: $ubuntu_passwordusername: $ubunutu_userkeyboard: {layout: us, variant: ''}locale: en_US.UTF-8network:version: 2ethernets:eth0:critical: truedhcp-identifier: macdhcp4: truenameservers:addresses: [8.8.8.8,9.9.9.9]ssh:install-server: truestorage:grub:reorder_uefi: Falselayout:name: lvmsizing-policy: allupdates: securitylate-commands:- curtin in-target --target=/target -- sed -ir '/GRUB_CMDLINE_LINUX=.*$/c GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"' /etc/default/grub- curtin in-target --target=/target -- grub-mkconfig -o /boot/grub/grub.cfg- curtin in-target --target=/target -- sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config- curtin in-target --target=/target -- ln -sf bash /bin/sh - curtin in-target --target=/target -- systemctl restart sshd - curtin in-target --target=/target -- systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target - curtin in-target --target=/target -- sed -i '$ a\export DEBIAN_FRONTEND=noninteractive' /etc/profile- curtin in-target --target=/target -- sed -i '$ a\export EDITOR=vim' /etc/profile
EOFecho "copy user-data up ubuntu22.04 "
cp -rf $apache_catalogue/$ubuntu24_catalogue/user-data $apache_catalogue/$ubuntu22_catalogue/echo "add meta-data up ubuntu24.04"
cat <<'EOF'>>$apache_catalogue/$ubuntu24_catalogue/meta-data
instance-id: focal-autoinstall
EOFecho "cp meta-data up ubuntu22.04"
cp -rf $apache_catalogue/$ubuntu24_catalogue/meta-data $apache_catalogue/$ubuntu22_catalogue/echo "shim-signed"
cd /
apt download shim-signed
dpkg -x shim-signed*deb shim
cp /shim/usr/lib/shim/shimx64.efi.signed.latest $tftp_catalogue/bootx64.efiecho "grub-efi-amd64-signed"
cd /
apt download grub-efi-amd64-signed
dpkg -x grub-efi-amd64-signed*deb grub
cp /grub/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed $tftp_catalogue/grubx64.efiecho "grub-common"
cd /
apt download grub-common
dpkg -x grub-common*deb grub-common
cp /grub-common/usr/share/grub/unicode.pf2 $tftp_catalogue/echo "rm shim grub grub-common"
rm -rf /{shim,grub,grub-common}
rm -rf /{shim-signed*deb,grub-efi-amd64-signed*deb,grub-common*deb}echo "umount ubuntu22.04 ubuntu24.04"
umount /mnt/$ubuntu24_catalogue
umount /mnt/$ubuntu22_catalogueecho "restart tftpd-hpa isc-dhcp-server apache2"
systemctl restart tftpd-hpa isc-dhcp-server apache2echo -e "\033[32mThe ubuntu pxe server Install Sussess...\033[0m" elseecho -e "\033[33mThe ubunutu pxe server Install Failed...\033[0m" exit 1fielseecho -e "\033[31mThe ubuntu pxe server Install already...\033[0m"
fi
}main (){install_pxe_server
}main

一键部署pxe server 环境

bash /ubuntu_pxe_server_bios_uefi.sh

pxe 网络启动,bios自动安装

pxe 网络启动,UEFI自动安装

ubuntu 22.04 24.04 bios uefi 自动化部署一样

  • 以下自动化部署展示 24.04
  • 24.04 root 首次登录密码强制更新,root预设值默认密码1234.com ubuntu/1234.com 
  • 22.04 用户名密码 root/1234.com ubuntu/1234.com 

自动化部署完成后在线源默认位置

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决npm install(‘proxy‘ config is set properly. See: ‘npm help config‘)失败问题

摘要 重装电脑系统后&#xff0c;使用npm install初始化项目依赖失败了&#xff0c;错误提示&#xff1a;‘proxy’ config is set properly…&#xff0c;具体的错误提示如下图所示&#xff1a; 解决方案 经过报错信息查询解决办法&#xff0c;最终找到了两个比较好的方案&a…

git commit报错: pre-commit hook failed (add --no-verify to bypass)

原因&#xff1a; 在提交前做代码风格检查&#xff0c;若检查不通过&#xff0c;则提交失败 解决方案&#xff1a;进入项目的.git>hooks目录&#xff0c;找到pre-commit文件&#xff0c;删除即可

【银河麒麟服务器操作系统】java进程oom现象分析及处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问麒麟软件产品专区&#xff1a;https://product.kylinos.cn 现象描述 某服务器系统升级内核至4.19.90-25.22.v2101版本后仍会触发oom导致java进程被kill。 现象分析 oom现象分析 系统messages日志分析&#xff0c;故…

python--实验15 数据分析与可视化

目录 知识点 1 数据分析概述 1.1流程 1.2定义 1.3数据分析常用工具 2 科学计算 2.1numpy 2.1.1定义 2.1.2创建数组的方式 2.1.3np.random的随机数函数 3 数据可视化 3.1定义 3.2基本思想 3.3Matplotlib库 3.3.1模块 4 数据分析 4.1Pandas 4.2数据结构 4.3基…

html+canvas 实现签名功能-手机触摸

手机上的效果图 需要注意&#xff0c;手机触摸和鼠标不是一个事件&#xff0c;不能通用&#xff0c;上一篇是关于使用鼠标的样例 相关代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewpo…

Large Language Model系列之一:语言模型与表征学习(Language Models and Representation Learning)

语言模型与表征学习&#xff08;Language Models and Representation Learning&#xff09; 1 语言模型 N-Gram模型 from collections import defaultdictsentences [The swift fox jumps over the lazy dog.,The swift river flows under the ancient bridge.,The swift br…

Java关于JDBC的理解

JDBC Java Database Connectivity&#xff1a;意为Java数据库连接。是Java提供的一组独立于任何数据库管理系统的API。Java提供接口规范&#xff0c;由各个数据库厂商提供接口的实现&#xff0c;厂商提供的实现类封装成jar文件&#xff0c;也就是我们俗称的数据库驱动jar包。我…

PyTorch张量数值计算

文章目录 1、张量基本运算2、阿达玛积3、点积运算4、指定运算设备⭐5、解决在GPU运行PyTorch的问题 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&am…

LDR6020:重塑iPad一体式有线键盘体验的创新力量

在移动办公与娱乐日益融合的时代&#xff0c;iPad凭借其强大的性能和便携性&#xff0c;成为了众多用户不可或缺的生产力工具。然而&#xff0c;为了进一步提升iPad的使用体验&#xff0c;一款高效、便捷的键盘成为了不可或缺的配件。今天&#xff0c;我们要介绍的&#xff0c;…

云计算复习--虚拟化技术

文章目录 虚拟化技术定义与原理虚拟机监视器&#xff08;VMM&#xff09;虚拟化技术服务器虚拟化存储虚拟化网络虚拟化应用虚拟化 关键技术新型虚拟化技术发展进展作业 虚拟化技术定义与原理 定义&#xff1a;虚拟化技术是一种将计算机物理实体&#xff08;如服务器、存储设备…

【BUG】已解决:OSError: [Errno 22] Invalid argument

已解决&#xff1a;OSError: [Errno 22] Invalid argument 目录 已解决&#xff1a;OSError: [Errno 22] Invalid argument 【常见模块错误】 错误原因&#xff1a; 解决方法如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…

利用AI辅助制作ppt封面

如何利用AI辅助制作一个炫酷的PPT封面 标题使用镂空字背景替换为动态视频 标题使用镂空字 1.首先&#xff0c;新建一个空白的ppt页面&#xff0c;插入一张你认为符合主题的图片&#xff0c;占满整个可视页面。 2.其次&#xff0c;插入一个矩形&#xff0c;右键选择设置形状格式…

贝锐蒲公英远程运维方案:即装即用、无需专线,断网也可远程维护

目前&#xff0c;公路、隧道、桥梁、航道&#xff0c;甚至是施工现场和工业生产环境等&#xff0c;都采用了实时监测方案。 通过部署各类传感器和摄像头等设备&#xff0c;现场视频画面和控制单元&#xff08;如PLC、工控机等&#xff09;数据可以实时回传&#xff0c;用于集中…

智能优化算法之灰狼优化算法(GWO)

智能优化算法是一类基于自然界中生物、物理或社会现象的优化技术。这些算法通过模拟自然界中的一些智能行为&#xff0c;如遗传学、蚁群觅食、粒子群体运动等&#xff0c;来解决复杂的优化问题。智能优化算法广泛应用于各种工程和科学领域&#xff0c;因其具有全局搜索能力、鲁…

蚂蚁集团推出EchoMimic:能通过音频和面部标志生成逼真的肖像动画视频

蚂蚁集团最近推出了一项名为EchoMimic的新技术。能通过音频和面部标志生成逼真的肖像动画视频&#xff0c;让你的声音和面部动作被完美复制到视频中&#xff0c;效果自然如照镜子。 EchoMimic不仅可以单独使用音频或面部标志点生成肖像视频&#xff0c;也可以将两者结合&#…

【C++】16. set 和 map

在之前的博客中&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 我们这篇博客的内容是关联式容器&#xff…

在 Windows 上开发.NET MAUI 应用_1.安装开发环境

开发跨平台的本机 .NET Multi-platform App UI (.NET MAUI) 应用需要 Visual Studio 2022 17.8 或更高版本&#xff0c;或者具有 .NET MAUI 扩展的最新 Visual Studio Code。要开始在 Windows 上开发本机跨平台 .NET MAUI 应用&#xff0c;请按照安装步骤安装 Visual Studio 20…

对称加密与非对称加密

对称加密 对称加密指的是加密和解密使用同一个秘钥,所以叫对称加密。对称加密只有一个秘钥,称为私钥。 优点:算法公开、计算量小、加密速度快、效率高 缺点:数据传输前,发送方和接收方必须确定好秘钥,双方也必须要保存好秘钥。 常见对称加密算法: DES、3DES、AES、3…

【论文共读】【翻译】ShuffleNet v1:一种用于移动设备的极其高效的卷积神经网络

[原文地址] https://arxiv.org/pdf/1707.01083 [翻译] 0. 摘要 我们介绍了一种计算效率极高的CNN架构&#xff0c;称为ShuffleNet&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如&#xff0c;10-150 MFLOPs&#xff09;而设计。新架构利用了两个新操作&am…

STM32 CAN外设(基于STMF103C8T6)

STM32内置bxCAN外设&#xff08;CAN控制器)&#xff0c;支持CAN2.0A和2.0B&#xff0c;可以自动发送CAN报文和按照过滤器自动接收指定CAN报文&#xff0c;程序只需处理报文数据而无需关注总线的电平细节 波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接…