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

深入了解 PXE:定义、架构、原理、应用场景及常见命令体系

引言

PXE(Preboot Execution Environment,预启动执行环境)是一种允许计算机通过网络启动操作系统而无需本地存储设备的技术。本文将详细介绍 PXE 的定义、架构、原理、应用场景及常见命令体系,特别是以 CentOS 为例,展示如何配置和使用 PXE。

一、PXE 的定义

       PXE 是一种基于网络的启动技术,最初由 Intel 开发,旨在提供一种在没有本地存储设备的情况下通过网络启动操作系统的标准。PXE 集成在计算机的 BIOS 或 UEFI 中,允许计算机从网络服务器下载并启动操作系统或其他软件。

1.1 背景

       随着计算机网络的发展和虚拟化技术的普及,PXE 成为一种流行的启动方式。它广泛应用于无盘工作站、服务器部署和系统恢复等场景,简化了大规模系统管理和维护的复杂性。

二、PXE 的架构

       PXE 的架构包括客户端和服务器两部分,依赖于多种网络协议和服务。以下是 PXE 架构的主要组成部分。

2.1 客户端

       PXE 客户端是启用了 PXE 的计算机,通常集成在 BIOS 或 UEFI 中。当计算机启动时,如果启用了 PXE,网络接口卡(NIC)会尝试通过网络启动操作系统。

2.2 服务器

PXE 服务器提供启动文件和相关服务,通常包括以下组件:

  1. DHCP 服务器:为 PXE 客户端分配 IP 地址,并提供启动文件的位置信息。
  2. TFTP 服务器:用于传输启动文件,如 PXE 引导程序和内核镜像。
  3. HTTP/FTP 服务器:在某些情况下,用于传输更大的文件或提供额外服务。
  4. NFS/SMB 服务器:用于提供网络文件系统,支持 PXE 客户端访问操作系统文件。

三、PXE 的工作原理

       PXE 的工作原理涉及多个步骤和网络协议的协同工作。以下是 PXE 启动过程的详细步骤。

3.1 PXE 启动过程

  1. PXE 客户端启动:当计算机启动时,PXE 客户端通过 BIOS 或 UEFI 启动,并向网络发送 DHCP 请求,寻找 DHCP 服务器。
  2. DHCP 服务器响应:DHCP 服务器响应 DHCP 请求,为客户端分配 IP 地址,并提供 TFTP 服务器的位置和引导文件名。
  3. 下载引导文件:PXE 客户端通过 TFTP 下载引导文件,通常是一个小型的 PXE 引导程序(如 pxelinux.0)。
  4. 执行引导文件:PXE 客户端执行下载的引导文件,该引导文件进一步下载操作系统内核和初始化文件系统。
  5. 启动操作系统:PXE 客户端加载内核和初始化文件系统,最终启动操作系统。

3.2 网络协议

PXE 启动过程中涉及多个网络协议:

  1. DHCP:用于分配 IP 地址和提供 TFTP 服务器信息。
  2. TFTP:用于传输引导文件。
  3. HTTP/FTP:用于传输更大的文件或提供额外服务(可选)。
  4. NFS/SMB:用于提供网络文件系统(可选)。

四、PXE 的应用场景

PXE 广泛应用于各种 IT 环境,以下是一些典型的应用场景。

4.1 无盘工作站

       在教育和科研机构中,无盘工作站通过 PXE 启动操作系统,从网络服务器获取所有需要的文件和应用程序。这样,系统管理和维护变得更加集中和简便。

4.2 服务器部署

       在数据中心,PXE 被广泛用于自动化服务器部署。管理员可以通过 PXE 大规模部署操作系统和应用程序,显著提高部署效率和一致性。

4.3 系统恢复

       PXE 也被用于系统恢复和应急启动。当计算机的本地存储设备故障时,可以通过 PXE 启动应急操作系统,进行数据恢复和系统修复。

4.4 虚拟化环境

       在虚拟化环境中,PXE 被用于启动虚拟机,使其可以从网络加载操作系统和应用程序,简化虚拟机的管理和配置。

五、PXE 的常见命令体系(以 CentOS 为例)

       PXE 的命令体系主要涉及配置和管理 PXE 服务器和客户端的命令。以下是一些在 CentOS 上常见的命令和配置步骤。

5.1 DHCP 服务器配置

       在 CentOS 系统中,配置 DHCP 服务器的常用工具是 dhcpd。

安装 DHCP 服务器

sudo yum install dhcp

配置 DHCP 服务器

编辑 /etc/dhcp/dhcpd.conf 文件,添加以下内容:

subnet 192.168.1.0 netmask 255.255.255.0 {

    range 192.168.1.100 192.168.1.200;

    option routers 192.168.1.1;

    option broadcast-address 192.168.1.255;

    next-server 192.168.1.10;

    filename "pxelinux.0";

}

启动 DHCP 服务器

sudo systemctl start dhcpd

sudo systemctl enable dhcpd

5.2 TFTP 服务器配置

在 CentOS 系统中,配置 TFTP 服务器的常用工具是 tftp-server。

  1. 安装 TFTP 服务器

sudo yum install tftp-server

  1. 配置 TFTP 服务器 编辑 /etc/xinetd.d/tftp 文件,确保以下内容:

service tftp

{

    socket_type     = dgram

    protocol        = udp

    wait            = yes

    user            = root

    server          = /usr/sbin/in.tftpd

    server_args     = -s /var/lib/tftpboot

    disable         = no

    per_source      = 11

    cps             = 100 2

    flags           = IPv4

}

  1. 启动 TFTP 服务器

sudo systemctl start xinetd

sudo systemctl enable xinetd

5.3 配置 PXE 引导程序

在 PXE 服务器上,需要配置引导程序(如 pxelinux.0)和相关文件。

  1. 安装 syslinux

sudo yum install syslinux

  1. 配置引导程序 将 pxelinux.0 文件复制到 TFTP 服务器目录中:

sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

  1. 创建配置文件 在 TFTP 服务器目录中创建 pxelinux.cfg 目录,并在其中创建默认配置文件:

sudo mkdir /var/lib/tftpboot/pxelinux.cfg

sudo nano /var/lib/tftpboot/pxelinux.cfg/default

添加以下内容:

DEFAULT vesamenu.c32

PROMPT 0

TIMEOUT 50

LABEL linux

    KERNEL vmlinuz

    APPEND initrd=initrd.img

5.4 NFS 服务器配置

在某些情况下,PXE 客户端需要从 NFS 服务器加载操作系统文件。

  1. 安装 NFS 服务器

sudo yum install nfs-utils

  1. 配置 NFS 服务器 编辑 /etc/exports 文件,添加以下内容:

/var/lib/tftpboot 192.168.1.0/24(ro,sync,no_subtree_check)

  1. 启动 NFS 服务器

sudo systemctl start nfs

sudo systemctl enable nfs

六、PXE 模拟场景操作

以下是一个典型的 PXE 模拟操作场景,展示如何通过 PXE 部署操作系统。

6.1 准备工作

  1. 设置网络环境
    • 配置一个专用的网络子网(如 192.168.1.0/24),包括 PXE 服务器和 PXE 客户端。
    • 确保 PXE 客户端可以通过网络访问 PXE 服务器。
  2. 安装必要软件
    • 在 PXE 服务器上安装 DHCP 服务器、TFTP 服务器和 NFS 服务器。

在这一部分,我们将详细介绍如何在 CentOS 上配置 PXE 服务器,并通过 PXE 部署一个 CentOS 操作系统。

6.2 配置 PXE 服务器

  1. 配置 DHCP 服务器 首先,我们需要确保 DHCP 服务器正确配置,以便为 PXE 客户端分配 IP 地址并提供引导文件的位置。

安装 DHCP 服务器:

sudo yum install dhcp

编辑 /etc/dhcp/dhcpd.conf 文件,添加以下内容:

subnet 192.168.1.0 netmask 255.255.255.0 {

    range 192.168.1.100 192.168.1.200;

    option routers 192.168.1.1;

    option broadcast-address 192.168.1.255;

    next-server 192.168.1.10; # PXE服务器的IP地址

    filename "pxelinux.0"; # 引导文件

}

启动并启用 DHCP 服务器:

sudo systemctl start dhcpd

sudo systemctl enable dhcpd

  1. 配置 TFTP 服务器 TFTP 服务器用于传输引导文件。我们将使用 tftp-server 来配置 TFTP 服务。

安装 TFTP 服务器:

sudo yum install tftp-server

编辑 /etc/xinetd.d/tftp 文件,确保以下内容:

service tftp

{

    socket_type     = dgram

    protocol        = udp

    wait            = yes

    user            = root

    server          = /usr/sbin/in.tftpd

    server_args     = -s /var/lib/tftpboot

    disable         = no

    per_source      = 11

    cps             = 100 2

    flags           = IPv4

}

启动并启用 TFTP 服务器:

sudo systemctl start xinetd

sudo systemctl enable xinetd

  1. 配置 PXE 引导程序 安装 syslinux:

sudo yum install syslinux

将 pxelinux.0 文件复制到 TFTP 服务器目录中:

sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

创建 pxelinux.cfg 目录,并在其中创建默认配置文件:

sudo mkdir /var/lib/tftpboot/pxelinux.cfg

sudo nano /var/lib/tftpboot/pxelinux.cfg/default

添加以下内容:

DEFAULT menu.c32

PROMPT 0

TIMEOUT 300

ONTIMEOUT local

LABEL linux

    MENU LABEL Install CentOS 7

    KERNEL vmlinuz

    APPEND initrd=initrd.img

  1. 配置 NFS 服务器(可选) 在某些情况下,PXE 客户端需要从 NFS 服务器加载操作系统文件。配置 NFS 服务器如下:

安装 NFS 服务器:

sudo yum install nfs-utils

编辑 /etc/exports 文件,添加以下内容:

/var/lib/tftpboot 192.168.1.0/24(ro,sync,no_subtree_check)

启动并启用 NFS 服务器:

sudo systemctl start nfs

sudo systemctl enable nfs

6.3 准备启动文件

  1. 下载 CentOS 安装镜像 从 CentOS 官方网站下载 CentOS 的 netinstall 镜像,并将其挂载到 /mnt 目录:

sudo mount -o loop CentOS-7-x86_64-NetInstall-xxxx.iso /mnt

  1. 复制必要的引导文件 将 vmlinuz 和 initrd.img 文件复制到 TFTP 服务器目录:

sudo cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/

sudo cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

6.4 配置 PXE 菜单

编辑 default 配置文件,以便 PXE 客户端可以从 TFTP 服务器下载并启动 CentOS 安装程序:

DEFAULT menu.c32

PROMPT 0

TIMEOUT 300

ONTIMEOUT local

LABEL linux

    MENU LABEL Install CentOS 7

    KERNEL vmlinuz

    APPEND initrd=initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/

6.5 测试 PXE 环境

  1. 启动 PXE 客户端 将一台计算机配置为 PXE 启动,并连接到同一网络子网。启动计算机并进入 BIOS 或 UEFI 设置,选择 PXE 启动。
  2. 验证 PXE 启动过程 观察 PXE 客户端的启动过程,确认其能通过 DHCP 获取 IP 地址,并从 TFTP 服务器下载引导文件和启动 CentOS 安装程序。

七、总结

       PXE(Preboot Execution Environment)是一种强大的网络启动技术,允许计算机通过网络启动操作系统而无需本地存储设备。通过本文的介绍,我们详细了解了 PXE 的定义、架构、原理、应用场景及常见命令体系,并通过具体的操作步骤展示了如何在 CentOS 上配置和使用 PXE。

       PXE 的应用场景非常广泛,尤其是在无盘工作站、服务器部署和系统恢复等领域中,能够极大地简化系统管理和维护的复杂性。通过配置 DHCP 服务器、TFTP 服务器和 PXE 引导程序,我们可以轻松实现大规模的网络启动和操作系统部署。

       希望本文能帮助您更好地理解和应用 PXE 技术,提高您的系统管理和维护效率。如果您有任何问题或建议,欢迎在评论区留言讨论。

相关文章:

深入了解 PXE:定义、架构、原理、应用场景及常见命令体系

引言 PXE(Preboot Execution Environment,预启动执行环境)是一种允许计算机通过网络启动操作系统而无需本地存储设备的技术。本文将详细介绍 PXE 的定义、架构、原理、应用场景及常见命令体系,特别是以 CentOS 为例,展…...

《每天5分钟用Flask搭建一个管理系统》第9章:API设计

第9章:API设计 9.1 RESTful API的概念 RESTful API是一种基于HTTP协议的网络服务接口设计方法,它使用标准的HTTP方法,如GET、POST、PUT、DELETE等,来执行资源的操作。 9.2 Flask-RESTful扩展的使用 Flask-RESTful是一个Flask扩…...

CCM的作用及原理

CCM调试的理论依据_ccm矩阵sat调试-CSDN博客 CCM是在WB之后,就是当AWB将白色校正之后其他颜色也会跟着有明显变化,CCM的作用就是要保持白色不变,把其他色彩校正到非常精准的地步。 校正后的颜色(target值是一个固定的值)CCM矩阵*原始的颜色…...

10.09面试题目记录

艾融软件 - 线上面试题 排序算法的时间复杂度 O(n^2):冒泡,选择,插入 O(logn):折半插入排序 O(nlogn):希尔,归并,快速,堆 O(nk):桶,…...

14-29 剑和诗人3 – 利用知识图谱增强 LLM 推理能力

知识图谱提供了一种结构化的方式来表示现实世界的事实及其关系。通过将知识图谱整合到大型语言模型中,我们可以增强它们的事实知识和推理能力。让我们探索如何实现这一点。 知识图谱构建 在利用知识图谱进行语言模型增强之前,我们需要从可靠的来源构建…...

【代码大全2 选读】看看骨灰级高手消灭 if-else 逻辑的瑞士军刀长啥样

文章目录 1 【写在前面】2 【心法】这把瑞士军刀长啥样3 【示例1】确定某个月份的天数(Days-in-Month Example)4 【示例2】确定保险费率(Insurance Rates Example)5 【示例3】灵活的消息格式(Flexible-Message-Format …...

深度学习 --- stanford cs231学习笔记八(训练神经网络之dropout)

6,dropout 6,1 线性分类器中的正则化 在线性分类器中,我们提到过正则化,其目的就是为了防止过度拟合。例如,当我们要用一条curve去拟合一些散点的数据时,常常是不希望训练出来的curve过所有的点&#xff0c…...

【C++】 解决 C++ 语言报错:Undefined Reference

文章目录 引言 未定义引用(Undefined Reference)是 C 编程中常见的错误之一,通常在链接阶段出现。当编译器无法找到函数或变量的定义时,就会引发未定义引用错误。这种错误会阻止生成可执行文件,影响程序的正常构建。本…...

【博士每天一篇文献-算法】Adult neurogenesis acts as a neural regularizer

阅读时间:2023-12-20 1 介绍 年份:2022 作者:Lina M. Tran,Adam Santoro,谷歌DeepMind 期刊: Proceedings of the National Academy of Sciences 引用量:13 代码:https://github.c…...

在Spring Boot项目中引入本地JAR包的步骤和配置

在Spring Boot项目中,有时需要引入本地JAR包以便重用已有的代码库或者第三方库。本文将详细介绍如何在Spring Boot项目中引入本地JAR包的步骤和配置,并提供相应的代码示例。 1. 为什么需要本地JAR包 在开发过程中,可能会遇到以下情况需要使…...

Android Studio中使用命令行gradle查看签名信息

Android Studio中使用命令行gradle查看签名信息: 使用 Gradle 插件生成签名报告 打开 Android Studio 的 Terminal。 运行以下命令:./gradlew signingReport 将生成一个签名报告,其中包含 MD5、SHA1 和 SHA-256 的信息。 如果失败&#xf…...

昇思25天学习打卡营第5天 | 神经网络构建

1. 神经网络构建 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同…...

Web缓存—Nginx和CDN应用

目录 一、代理的工作机制 二、概念 三、作用 四、常用的代理服务器 二.Nginx缓存代理服务器部署 1.在三台服务器上部署nginx 此处yum安装 2.准备测试界面 三、CDN概念及作用 1.CDN的工作过程 一、代理的工作机制 (1)代替客户机向网站请求数据…...

Linux 端口

什么是虚拟端口 计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通。 IP地址相当于小区地址,在小区内可以有许多用户(程序)&…...

菜鸡的原地踏步史02(◐‿◑)

每日一念 改掉自己想到哪写哪的坏习惯 二叉树 二叉树的中序遍历 class Solution {/**中序遍历左 - 中 - 右*/private List<Integer> res new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {if(root null) {return res;}tranve…...

实现Java应用的数据加密与解密技术

实现Java应用的数据加密与解密技术 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 数据加密与解密的重要性 数据安全是当今互联网应用开发中的重要问题之…...

赛博解压板

目录 开头程序程序的流程图程序的解压效果(暂无&#xff0c;但可以运行一下上面的代码)结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们要看关于赛博解压板的一些东西。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #define ROW 6//ROW表示行数&#xff0c;可…...

微信小程序常用的事件

1.点击事件 WXML 中绑定点击事件&#xff1a; <!-- index.wxml --> <button bindtap"handleTap">点击我</button> 对应的 JS 文件中编写点击事件处理函数&#xff1a; // index.js Page({handleTap: function() {console.log(按钮被点击了);} }…...

js时间转成xx前

// 时间戳转多少分钟之前 export default function getDateDiff(dateTimeStamp) {// console.log(dateTimeStamp,dateTimeStamp)// 时间字符串转时间戳var timestamp new Date(dateTimeStamp).getTime();var minute 1000 * 60;var hour minute * 60;var day hour * 24;var …...

iOS 锁总结(cc)

iOS中atomic和synchrosize锁的本质是什么? 在iOS中,atomic和@synchronized锁的本质涉及底层的多线程同步机制。以下是关于这两者本质的详细解释: atomic 定义与用途: atomic是Objective-C属性修饰符的一种,用于指示属性的存取方法是线程安全的。当一个属性被声明为ato…...

【CSAPP】-binarybomb实验

目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果&#xff08;可贴图&#xff09; 操作异常问题与解决方案 实验总结 实验目的与要求 1. 增强学生对于程序的机器级表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。 2. 掌握使用gdb调试器…...

SpringBoot实战:轻松实现XSS攻击防御(注解和过滤器)

文章目录 引言一、XSS攻击概述1.1 XSS攻击的定义1.2 XSS攻击的类型1.3 XSS攻击的攻击原理及示例 二、Spring Boot中的XSS防御手段2.1 使用注解进行XSS防御2.1.1 引入相关依赖2.1.2 使用XSS注解进行参数校验2.1.3 实现自定义注解处理器2.1.4 使用注解 2.2 使用过滤器进行XSS防御…...

如何改善提示词,让 GPT-4 更高效准确地把视频内容整体转换成文章?

&#xff08;注&#xff1a;本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费&#xff09; 让我们来讨论一下大语言模型应用中的一个重要原则 ——「欲速则不达」。 作为一个自认为懒惰的人&#xff0c;我一直有一个愿望&#xff1a;完成视频制作…...

TensorBoard进阶

文章目录 TensorBoard进阶1.设置TensorBoard2.图像数据在TensorBoard中可视化3.模型结构在TensorBoard中可视化&#xff08;重点✅&#xff09;4.高维数据在TensorBoard中低维可视化5.利用TensorBoard跟踪模型的训练过程&#xff08;重点✅&#xff09;6.利用TensorBoard给每个…...

使用AES加密数据传输的iOS客户端实现方案

在现代应用开发中&#xff0c;确保数据传输的安全性是至关重要的。本文将介绍如何在iOS客户端中使用AES加密数据传输&#xff0c;并与服务器端保持加密解密的一致性。本文不会包含服务器端代码&#xff0c;但会解释其实现原理。 加密与解密的基本原理 AES&#xff08;Advance…...

vue3【实战】语义化首页布局

技术要点&#xff0c;详见注释 <script setup></script><template><div class"page"><header>页头</header><nav>导航</nav><!-- 主体内容 --><main class"row"><aside>左侧边栏<s…...

FANG:利用社交网络图进行虚假新闻检测

1.概述 社交媒体已逐渐演变成为公众获取信息的主要途径。然而,值得警惕的是,并非所有流通的信息都具备真实性。特别是在政治选举、疫情爆发等关键节点,带有恶意企图的虚假信息(即“假新闻”)可能会对社会秩序、公平性和理性思考造成严重的干扰。作为全球抗击COVID-19的一部…...

Vue2 基础八电商后台管理项目——中

代码下载 商品分类页 新商品分类组件 goods/Cate.vue&#xff0c;在router.js中导入子级路由组件 Cate.vue&#xff0c;并设置路由规则。 绘制商品分类基本结构 在Cate.vue组件中添加面包屑导航以及卡片视图中的添加分类按钮&#xff1a; <template><div><…...

Typescript window.localStorage 存储 Obj Value区别

window.localStorage.setItem(UserC, JSON.stringify(userC)) const userC JSON.parse(window.localStorage.getItem(UserC) || {}) 不能获得UserC&#xff0c;所有保存的时候需要存储value&#xff0c;而不是对象。 {"__v_isShallow":false, "__v_isRef&quo…...

Linux要解压 .rar 文件,你应该使用 unrar 命令

命令 sudo tar -zxf ~/WebDemo.rar -C /usr/local 有一些问题。tar 命令通常用于解压 .tar、.tar.gz 或 .tar.bz2 文件&#xff0c;而不是 .rar 文件。要解压 .rar 文件&#xff0c;你应该使用 unrar 命令。下面是正确的步骤&#xff1a; 首先&#xff0c;安装 unrar&#xff0…...

【qt】如何获取网卡的信息?

网卡不只一种,有有线的,有无线的等等 我们用QNetworkInterface类的静态函数allInterfaces() 来获取所有的网卡 返回的是一个网卡的容器. 然后我们对每个网卡来获取其设备名称和硬件地址 可以通过静态函数humanReadableName() 来获取设备名称 可以通过静态函数**hardwareAddre…...

使用Netty框架实现WebSocket服务端与客户端通信(附ssl)

仓库地址&#xff1a; https://gitee.com/lfw1024/netty-websocket 导入后可直接运行 预览页面 自签证书&#xff1a; #换成自己的本地ip keytool -genkey -alias server -keyalg RSA -validity 3650 -keystore D:\mystore.jks -ext sanip:192.168.3.7,ip:127.0.0.1,dns:lo…...

ssm校园志愿服务信息系统-计算机毕业设计源码97697

摘 要 随着社会的进步和信息技术的发展&#xff0c;越来越多的学校开始重视志愿服务工作&#xff0c;通过组织各种志愿服务活动&#xff0c;让学生更好地了解社会、服务社会。然而&#xff0c;在实际操作中&#xff0c;志愿服务的组织和管理面临着诸多问题&#xff0c;如志愿者…...

JVM原理(二):JVM之HotSpot虚拟机中对象的创建寻位与定位整体流程

1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有&#xff0c;那么必须执行类的加载过程(加载、检查…...

(七)glDrawArry绘制

几何数据&#xff1a;vao和vbo 材质程序&#xff1a;vs和fs(顶点着色器和片元着色器) 接下来只需要告诉GPU&#xff0c;使用几何数据和材质程序来进行绘制。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostrea…...

记一次小程序渗透

这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露&#xff08;高危&#xff09; 水平越权&#xff08;高危&#xff09; 会话重用&#xff08;高危&#xff09; 硬编码加密密钥泄露&#xff08;中危&#xff0…...

C++ 的常见算法 之一

C 的常见算法 之一 不修改序列算法for_eachcountfind 修改序列算法copymove 不修改序列算法 for_each #include <iostream> // std::cout #include <algorithm> // std::for_each #include <vector> // std::vectorusing namespace std;struc…...

微前端的需求有哪些?微前端的原理是怎么样的?为什么这么设计,及微前端的应用场景是什么?对有些客户,前端的重要性高于后端

微前端&#xff08;Micro Frontends&#xff09;是将前端应用拆分成多个独立、可部署的部分&#xff0c;每个部分可以由不同的团队独立开发、测试、部署和维护。这种架构类似于微服务在后端的应用&#xff0c;是为了应对复杂前端应用的维护和扩展问题而提出的。 来龙去脉 背景…...

【Spring Boot】统一数据返回

目录 统一数据返回一. 概念二.实现统一数据返回2.1 重写responseAdvice方法2.2 重写beforeBodyWriter方法 三. 特殊类型-String的处理四. 全部代码 统一数据返回 一. 概念 其实统一数据返回是运用了AOP&#xff08;对某一类事情的集中处理&#xff09;的思维&#xff0c;简单…...

证券交易系统中服务器监控系统功能设计

1.背景介绍 此服务器监控系统的目的在于提高行情服务器的监管效率&#xff0c;因目前的的行情服务器&#xff0c;包括DM、DT、DS配置数量较多&#xff0c;巡回维护耗时较多&#xff0c;当行情服务器出现异常故障&#xff0c;或者因为网络问题造成数据断线等情况时&#xff0c;监…...

【线性代数的本质】矩阵与线性变换

线性变化要满足两点性质&#xff1a; 直线&#xff08;连续的点&#xff09;在变换后还是直线。原点不变。 假设有坐标轴&#xff08;基底&#xff09; i ^ \widehat{i} i 和 j ^ \widehat{j} j ​&#xff1a; i ^ [ 1 0 ] , j ^ [ 0 1 ] \widehat{i}\begin{bmatrix} 1 \…...

CV02_超强数据集:MSCOCO数据集的简单介绍

1.1 简介 MSCOCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是由微软公司在2014年推出并维护的一个大规模的图像数据集&#xff0c;旨在推动计算机视觉领域的研究&#xff0c;尤其是目标识别、目标检测、实例分割、图像描述生成等任务。该数据集…...

Linux--信号(万字详解!超完整!)

目录 0.预备知识 0.1.基本概念 0.2.信号的捕捉 0.3.理解信号的发送与保存 1.信号的产生&#xff08;阶段一&#xff09; 1.通过kill命令&#xff0c;向指定进程发送指定的信号 2.通过终端按键产生信号&#xff1a;ctrlc&#xff08;信号2&#xff09;&#xff0c;ctrl\(…...

onnx模型转rknn到部署

简介 最近开始用3568的板子&#xff0c;之前是在用3399&#xff0c;cpu的话3399比3568强&#xff0c;但是3568有1T的npu算力&#xff0c;所以模型移植过来用npu使用&#xff0c;之前用ncnn感觉太慢了&#xff0c;rk的npu使用没有开源&#xff0c;所以没法兼容&#xff0c;只能跑…...

lua入门(1) - 基本语法

本文参考自&#xff1a; Lua 基本语法 | 菜鸟教程 (runoob.com) 需要更加详细了解的还请参看lua 上方链接 交互式编程 Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。 Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用&#xff1a; 如下图: 按…...

Finding Global Homophily in Graph Neural Networks When Meeting Heterophily

本文发表于:ICML22 推荐指数: #paper/⭐⭐⭐ 问题背景: 异配图的邻接矩阵难以确定,以及异配图的计算复杂度开销大 可行的解决办法:高通滤波多跳邻居,GPRGNN(pagerank一类&#xff0c;各阶邻居的权重不同,ACM-GCN&#xff08;高低通滤波,H2GCN&#xff08;应该复杂度很大&…...

DisFormer:提高视觉动态预测的准确性和泛化能力

最新的研究进展已经显示出目标中心的表示方法在视觉动态预测任务中可以显著提升预测精度&#xff0c;并且增加模型的可解释性。这种表示方法通过将视觉场景分解为独立的对象&#xff0c;有助于模型更好地理解和预测场景中的变化。 尽管在静态图像的解耦表示学习方面已经取得了一…...

Android SurfaceFlinger——Surface和Layer介绍(十九)

按照前面系统开机动画的流程继续分析,在获取到显示屏信息后,下一步就是开始创建 Surface和设置 Layer 层级,这里就出现了两个新的概念——Surface 和 Layer。 一、基本概念 1、Surface介绍 在 Android 系统中,Surface 是一个非常核心的概念,它是用于显示图像的生产者-消…...

C++基础(七):类和对象(中-2)

上一篇博客学的默认成员函数是类和对象的最重要的内容&#xff0c;相信大家已经掌握了吧&#xff0c;这一篇博客接着继续剩下的内容&#xff0c;加油&#xff01; 目录 一、const成员&#xff08;理解&#xff09; 1.0 引入 1.1 概念 1.2 总结 1.2.1 对象调用成员函数 …...

对秒杀的思考

一、秒杀的目的 特价商品&#xff0c;数量有限&#xff0c;先到先得&#xff0c;售完为止 二、优惠券的秒杀 和特价商品的秒杀是一样的&#xff0c;只不过秒杀的商品是优惠券 三、秒杀的需求 秒杀前&#xff1a;提前将秒杀商品&#xff0c;存放到Redis秒杀中&#xff1a;使…...