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

《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》

手把手教你用 Kubernetes 部署高可用 WordPress 博客

本实验通过 Kubernetes 容器编排平台,完整部署了一个高可用的 WordPress 网站架构,包含 MariaDB 数据库、WordPress 应用和 Nginx 反向代理三大核心组件。实验涵盖了从基础环境准备到最终服务暴露的全流程,展示了云原生技术栈在实际应用中的完整实现。

1. 网站基本架构

实验采用经典的三层架构设计:

  1. 数据层:MariaDB 数据库容器化部署

  2. 应用层:WordPress 多副本容器部署

  3. 接入层:Nginx 反向代理服务

实验环境(如果只是学习环境也可以只用一个有k8s环境的Master节点完成本实验部署)

  • Kubernetes 集群:1个 Master 节点 + 2个 Worker 节点

  • 容器运行时:Docker

  • 核心组件版本

    • Kubernetes v1.28.2

    • MariaDB 10

    • WordPress 5

    • Nginx (Alpine 版)

img

2. 部署 MariaDB

(1)检查kubelet状态,确认核心组件(如 kube-apiserver)是否以 Pod 形式运行

sudo systemctl status kubeletkubectl get pods -n kube-system

 

(2) 定义一个 MariaDB 数据库的 Kubernetes 部署

mkdir mari-ng-wd
cd mari-ng-wd/
vim maria-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: maria-cm
data:DATABASE: "db"USER: "wp"PASSWORD: "123"ROOT_PASSWORD: "123"
部分1:

maria-cm.yaml - ConfigMap 配置
作用:存储 MariaDB 的配置数据(以键值对形式)。
关键字段:
• DATABASE: 数据库名称(db)
• USER: 数据库用户(wp)
• PASSWORD: 用户密码(123)
• ROOT_PASSWORD: root 用户密码(123)
用途:
将数据库配置(如账号密码)与容器镜像解耦,便于灵活修改(无需重新构建镜像)。 

vim maria-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: marialabels:app: wordpressrole: database
spec:replicas: 1selector:matchLabels:app: wordpressrole: databasetemplate:metadata:labels:app: wordpressrole: databasespec:containers:- name: mariaimage: mariadb:10ports:- containerPort: 3306envFrom:- prefix: "MARIADB_"configMapRef:name: maria-cm
部分2:

maria-deploy.yaml - Deployment 配置
作用:定义如何部署 MariaDB 容器。
关键部分:
• 镜像: mariadb:10(官方 MariaDB 10.x 版本镜像)
• 端口: 暴露 3306(MySQL/MariaDB 默认端口)
• 环境变量注入:
通过 envFrom 将 maria-cm 的所有数据以 MARIADB_ 为前缀注入容器,例如:
◦ DATABASE → MARIADB_DATABASE=db
◦ USER → MARIADB_USER=wp
◦ 其他变量同理。
MariaDB 的自动配置:
MariaDB 官方镜像会识别特定前缀(MARIADB_)的环境变量来自动初始化数据库:
1. 创建指定数据库(db)
2. 创建用户 wp 并设置密码 123
3. 设置 root 密码为 123 


分别用于创建 MariaDB 数据库的配置(ConfigMap)和部署(Deployment)资源 

kubectl create -f maria-cm.yamlkubectl create -f maria-deploy.yaml

(3)获取正确pod名称并查看该 Pod 容器内部的所有环境变量

# 查看 Deployment 是否正常
kubectl get deployments# 查看 Pod 名称及状态
kubectl get pods# 在指定的 Kubernetes Pod 中执行 env 命令,查看该 Pod 容器内部的所有环境变量
kubectl exec maria-88449d778-gv4c4 -- env# 最后需要查看一下mariadb的信息
kubectl get po -o wide

 

出现问题(如果查看成功可以跳过问题解决的这一步):

kubectl exec maria-88449d778-gv4c4 -- env      执行失败

查看节点状态,发现节点状态异常

Master 节点Ready,但有污点(node-role.kubernetes.io/control-plane:NoSchedule),默认不允许调度普通 Pod。

允许 Pod 调度到 Master 节点(临时方案)

让 Pod 调度到 Master:

# 去除 Master 的污点
kubectl taint nodes master node-role.kubernetes.io/control-plane:NoSchedule-
1.等待 Pod 完全启动:
ContainerCreating 表示正在拉取镜像并启动容器,稍等片刻后再次检查:
kubectl get pods -o wide
如果状态变为 Running,说明 Pod 已正常运行。
2. 进入 Pod 并验证 MariaDB:
使用正确的 Pod 名称(如 maria-88449d778-gv4c4)进入容器:
kubectl exec -it maria-88449d778-gv4c4 -- bash
在容器内验证环境变量和数据库:
echo $MARIADB_DATABASE  # 应输出 "db"
mysql -u wp -p123       # 登录 MariaDB
3. 测试数据库连接:
在 Pod 内执行以下命令验证数据库是否正常:
SHOW DATABASES;
USE db;
SHOW TABLES;

 

3. 部署 Wordpress

(1)定义了一个 Kubernetes 的 ConfigMap 对象

vim wp-cm.yamlapiVersion: v1
kind: ConfigMap
metadata:name: wp-cm
data:HOST: '10.244.0.4'     # 这个IP一定要与mariadb数据库绑定USER: 'wp'PASSWORD: '123'NAME: 'db'

这个 ConfigMap 的作用是存储与 MariaDB 数据库连接相关的配置信息,其他 Kubernetes 资源(如运行 WordPress 的 Deployment)可以通过 envFrom 等方式从这个 ConfigMap 中获取这些配置数据,以便正确连接到 MariaDB 数据库进行数据操作。

(2)定义一个 Kubernetes Deployment 对象,用于部署 WordPress 应用

vim wp-deploy.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: wordpresslabels:app: wordpressrole: web
spec:replicas: 3selector:matchLabels:app: wordpressrole: webtemplate:metadata:labels:app: wordpressrole: webspec:containers:- image: wordpress:5name: wordpressimagePullPolicy: IfNotPresentports:- containerPort: 80envFrom:- prefix: 'WORDPRESS_DB_'configMapRef:name: wp-cm

这个配置文件的核心功能是:

  1. 创建一个名为 wordpress 的 Deployment
  2. 管理 3 个运行 WordPress 的 Pod
  3. 使用 wp-cm ConfigMap 中的数据配置 WordPress 数据库连接信息
  4. 将 WordPress 容器的 80 端口暴露出来


(3)Kubernetes 集群中创建由 wp-cm.yaml 和 wp-deploy.yaml 文件定义的资源

kubectl create -f wp-cm.yaml -f wp-deploy.yaml



(4)获取当前 Kubernetes 集群中 Pod(容器组)的相关信息。
 

kubectl get po

 

4. 设置端口映射

(1)端口映射

nohup kubectl port-forward --address 0.0.0.0 deployments/wordpress 8080:80 &

当前监听127.0.0.1 上的8080是不能够被外部访问的,只能是本机;要想让外部访问到需要端口映射改为:

nohup ... & 忽略输入并将输出追加到 nohup.out,再掉到后台执行,若要关闭可以使用 fg 调到前台,使用 Ctrl+C 停止运行进程。 

(2)jobs 用来查后台进程

可以看到当前后台序号为1;那么杀后台进程的方式为 : kill   %1    ,1为查到的后台进程序号

(3)查看监听端口信息

# 下载工具包
sudo yum install net-tools# netstat -anpt | grep 8080

  • netstat 输出 验证了:
    • 主机的 8080 端口确实在被 kubectl 监听。
    • 之前有过与其他 Pod(IP 为 10.244.0.2 和 10.244.0.3)的通信,可能是 WordPress 容器。

 

5. 部署 Nginx 容器

(1)修改配置文件

WordPress 网站使用了 URL 重定向,直接使用“8080”会导致跳转故障,所以为了让网站正常工作,还应该在 Kubernetes 之外启动 Nginx 反向代理,保证外界看到的仍然是“80”端口号。

vim nginx.confserver {listen 80;default_type text/html;
​location / {proxy_http_version 1.1;proxy_set_header Host $host;proxy_pass http://127.0.0.1:8080;}
}

(2)启动指定容器

使用 Docker 启动了 Nginx 容器(--net=host),将 80 端口的请求转发到 127.0.0.1:8080,从而实现通过 80 端口访问 WordPress。实现Nginx 反向代理

docker run -d --name nginx --rm --net=host -v ./nginx.conf:/etc/nginx/conf.d/default.conf nginx:alpine
docker run: 这是Docker的基本命令,用于从指定的镜像启动一个新的容器。
-d: 这是“--detach”的简写,意思是让容器在后台运行。
--name nginx: 为这个容器指定一个名称,这里命名为“nginx”。
--rm: 当容器退出时自动删除容器。
--net=host: 使用主机的网络堆栈而不是Docker的默认网络堆栈。这意味着容器将使用主机的网络配置。
-v ./nginx.conf:/etc/nginx/conf.d/default.conf: 这是“--volume”参数,用于挂载文件或目录。这里,它将主机上的“nginx.conf”文件挂载到容器的“/etc/nginx/conf.d/default.conf”路径上。
nginx:alpine: 这是要运行的Docker镜像的名称和标签。

(3)访问测试WordPress

在浏览器中直接输入 http://10.1.1.85 ,Nginx 会把请求代理到 WordPress 服务,正常情况下就能进入如图所示的 WordPress 安装页面 。

过程:通过浏览器访问服务器的公网 IP(如 http://10.1.1.85),Nginx 会将请求转发到 127.0.0.1:8080,最终到达 WordPress Pod。

http://10.1.1.85/wp-admin/install.php

后续自行部署网站,也可使用 PV+PVC 实现 K8S 集群数据持久化

实验结论

  1. 架构验证成功

    • 实现了 WordPress (前端) + MariaDB (后端) + Nginx (反向代理) 的经典三层架构,全部运行在 Kubernetes 集群中,验证了容器化应用的灵活性和可扩展性。

    • 通过 ConfigMap 分离配置与镜像,使数据库账号、密码等关键信息可动态管理。

  2. 关键技术点

    • MariaDB 自动化初始化:利用 MARIADB_ 前缀环境变量自动创建数据库和用户。

    • 跨 Pod 通信:WordPress 通过 ConfigMap 中的数据库 IP (10.244.0.4) 成功连接 MariaDB。

    • Nginx 反向代理:解决 WordPress URL 重定向问题,对外隐藏真实端口(8080→80)。

  3. 问题与解决

    • Pod 调度问题:Master 节点默认污点导致 Pod 无法调度,通过 kubectl taint 临时去除污点解决。

    • 生产环境建议

      • 使用 Secret 替代 ConfigMap 存储密码。

      • 为数据库添加 PersistentVolume 防止数据丢失。

  4. 扩展性验证

    • WordPress 部署了 3 个副本(replicas: 3),验证了 Kubernetes 的横向扩展能力。

相关文章:

《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》

手把手教你用 Kubernetes 部署高可用 WordPress 博客 本实验通过 Kubernetes 容器编排平台,完整部署了一个高可用的 WordPress 网站架构,包含 MariaDB 数据库、WordPress 应用和 Nginx 反向代理三大核心组件。实验涵盖了从基础环境准备到最终服务暴露的…...

文件上传总结

攻击与绕过方式 一、条件竞争 攻击原理:在上传文件的同时利用代码逻辑中的时序问题(如 unlink() 删除操作)触发条件竞争,从而实现上传恶意文件并绕过限制。 示例测试源码: 以下为测试文件上传功能的 PHP 源码&#xff…...

在文档里如何引用在线SVG甘特图

在文档里如何引用在线SVG甘特图 介绍 本文将详细介绍如何快速创建一个功能强大的在线甘特图,并将其嵌入到其他文档(如 Notion、Wiki、Qiita、GitHub、Obsidian、Email 等)中。只要目标工具支持引用网络图片,你就可以轻松实现这一…...

Spring AI 与 Groq 的深度集成:解锁高效 AI 推理新体验

Spring AI 与 Groq 的深度集成:解锁高效 AI 推理新体验 前言 在人工智能飞速发展的当下,AI 推理的效率和性能成为开发者关注的焦点。Groq 作为一款基于 LPU™ 的超快速 AI 推理引擎,凭借其强大的性能,能够支持各类 AI 模型&…...

101alpha---第10

rank(((0 < ts_arg_min(ts_delta(close, 1), 4)) ? ts_delta(close, 1) : ((ts_arg_max(ts_delta(close, 1), 4) < 0) ? ts_delta(close, 1) : (-1 * ts_delta(close, 1))))) alpha 那么我们来看具体含义 吧 rank(((0 < ts_arg_min(ts_delta(close, 1), 4)) ? …...

vim中的查找

在 Vim 中&#xff0c;使用 n 键可以按正向&#xff08;向下&#xff09;继续查找下一个匹配项。若要反向&#xff08;向上&#xff09;查找&#xff0c;可以使用以下方法&#xff1a; 1. 使用 N 键反向查找 在查找命令&#xff08;如 /keyword&#xff09;后&#xff0c;按下…...

什么是IP专线?企业数字化转型的关键网络基础设施

为什么企业需要IP专线&#xff1f; 在当今数字化浪潮席卷全球的背景下&#xff0c;企业网络需求正经历着前所未有的变革。传统网络架构已难以满足现代企业对高效、安全、灵活网络服务的需求&#xff0c;IP专线正是在这一背景下应运而生的关键网络解决方案。 专线服务本质上是…...

Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)

目录 Linux软件包管理器 - yum Linux下载软件的方式 认识yum 查找软件包 安装软件包 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 Linux编译器 - gcc/g …...

5.11 - 5.12 JDBC+Mybatis+StringBoot项目配置文件

JDBC&#xff1a; 预编译SQL优点&#xff1a;安全&#xff0c;性能更高。 在cmd里面输入java-jar就可以运行jar包。 Mybatis&#xff1a; 持久层框架。用于简化JDBC的开发。 数据库连接池里面放置的是一个一个Connection连接对象。&#xff08;连接池中的连接可以复用&#…...

判断一个数组有没有重复值

要判断一个数组是否包含重复值&#xff0c;你可以使用多种方法。以下是一些常用的方法&#xff1a; 方法 1&#xff1a;使用 Set Set 是一种集合数据结构&#xff0c;它只存储唯一的值。因此&#xff0c;你可以将数组转换为 Set&#xff0c;然后比较 Set 的大小与数组的长度。…...

51c大模型~合集127

我自己的原文哦~ https://blog.51cto.com/whaosoft/13905076 #Executor-Workers架构 图解Vllm V1系列2 本文详细介绍了vllm v1的Executor-Workers架构&#xff0c;包括Executor的四种类型&#xff08;mp、ray、uni、external_launcher&#xff09;及其适用场景&#xff…...

Spring急速入门

Spring 是 企业级开发的一站式框架&#xff0c;核心是 IOC&#xff08;控制反转&#xff09; 和 AOP&#xff08;面向切面编程&#xff09; 一、Spring 核心&#xff1a;IOC 理论 1. 什么是 IOC&#xff1f; IOC&#xff08;Inversion of Control&#xff0c;控制反转&…...

#在 CentOS 7 中手动编译安装软件操作及原理

在 CentOS 7 中&#xff0c;手动编译安装软件&#xff08;即从源代码编译安装&#xff09;是一种高度灵活的方式&#xff0c;适用于需要定制化软件功能、优化性能或安装官方仓库未提供的软件版本的场景。以下是针对手动编译安装的详细说明&#xff0c;包括原理、步骤、注意事项…...

【Kubernetes】初识基础理论(第一篇)

前言 单机容器编排&#xff1a; docker-compose 容器集群编排&#xff1a; docker swarm、mesosmarathon、kubernetes 应用编排&#xff1a; ansible 一、Kubernetes概述 Kubernetes 是一个可移植的、可扩展的开源平台&#xff0c;用于管理容器化的…...

配置集群(yarn)

在配置 YARN 集群前&#xff0c;要先完成以下准备工作&#xff1a; 集群环境规划&#xff1a;明确各节点的角色&#xff0c;如 ResourceManager、NodeManager 等。网络环境搭建&#xff1a;保证各个节点之间能够通过网络互通。时间同步设置&#xff1a;安装 NTP 服务&#xff0…...

按钮导航组件 | 纯血鸿蒙组件库AUI

摘要&#xff1a; 按钮导航组件(A_ButtonNav)&#xff1a;可设置导航数据(含文本及路由)&#xff0c;可设置按钮颜色、导航标题及导航子标题。 一、组件调用方式 1.1.极简调用&#xff1a; 用 A_ButtonNav 调用“按钮导航组件”&#xff0c;只需要给属性 data &#xff08;导…...

自适应主从复制模拟器的构建与研究

自适应主从复制模拟器的构建与研究 摘要: 本文旨在构建一个自适应主从复制模拟器,深入研究主从复制原理及优化方法。从研究者视角出发,详细阐述模拟器的设计、实现与实验过程,通过表格、图表及代码等辅助手段,逐步探讨如何在不同网络条件和负载下,自动调整主从复制参数和…...

015枚举之滑动窗口——算法备赛

滑动窗口 最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 原题链接 思路分析 见代码注解 代码 int maxSubArray(vector<int>& num…...

【Dv3Admin】工具视图配置文件解析

在开发后台管理系统时,处理复杂的 CRUD 操作是常见的需求。Django Rest Framework(DRF)通过 ModelViewSet 提供了基础的增删改查功能,但在实际应用中,往往需要扩展更多的功能,如批量操作、权限控制、查询优化等。dvadmin/utils/viewset.py 模块通过继承并扩展 ModelViewS…...

在MyBatis Plus里处理LocalDateTime类型

在MyBatis Plus里处理LocalDateTime类型 在MyBatis Plus里处理LocalDateTime类型时&#xff0c;你要确保数据库字段和Java实体类属性之间的类型映射是正确的。下面为你介绍处理这种情况的方法&#xff1a; 1. 数据库字段类型对应设置 要保证数据库字段类型和LocalDateTime相…...

编程技能:字符串函数03,strncpy

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;字符串函数02&#xff0c;strcpy 回到目录…...

edge设置位IE模式打开网页

打开Edge浏览器->在浏览器工具栏右键->自定义工具栏->外观->选择要在工具栏上显示的按钮->找到“Internet Explorer 模式”按钮->开启,将其添加到工具栏中...

代码随想录训练营第二十二天| 101.对称二叉树 100.相同的树

101.对称二叉树&#xff1a; 文档讲解&#xff1a;代码随想录|101.对称二叉树 视频讲解&#xff1a;新学期要从学习二叉树开始&#xff01; | LeetCode&#xff1a;101. 对称二叉树_哔哩哔哩_bilibili 状态&#xff1a;已做出 思路&#xff1a; 这道题目我初始做的时候想着使用…...

nvm管理node版本

To manage Node.js versions on Windows, I recommend using nvm-windows (Node Version Manager for Windows). Here’s how we can handle this: First, let’s install nvm-windows. I’ll propose a command to check if it’s already installed: nvm versionGreat! I s…...

智能手表测试计划文档(软/硬件)

&#x1f4c4; 智能手表测试计划文档&#xff08;软/硬件&#xff09; 项目名称&#xff1a;Aurora Watch S1 文档编号&#xff1a;AW-S1-QA-TP-001 编制日期&#xff1a;2025-xx-xx 版本&#xff1a;V1.0 编写人&#xff1a;xxx&#xff08;测试主管&#xff09; 一、测试目标…...

基于大模型的原发性醛固酮增多症全流程预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与方法 二、原发性醛固酮增多症概述 2.1 疾病定义与发病机制 2.2 临床表现与诊断标准 2.3 流行病学特征 三、大模型预测原理与技术 3.1 大模型简介 3.2 预测原理与算法 3.3 数据收集与预处理 四…...

spring中的@Lazy注解详解

一、核心功能与作用 Lazy 注解是 Spring 框架中用于延迟 Bean 初始化的核心工具&#xff0c;通过将 Bean 的创建推迟到首次使用时&#xff0c;优化资源利用和启动性能。其核心功能包括&#xff1a; 延迟初始化 默认情况下&#xff0c;Spring 在容器启动时立即初始化所有单例 …...

Docker快速入门与应用

1. 什么是 Docker&#xff1f; Docker 就像一个“魔法箱子”&#xff0c;可以把你开发的应用&#xff08;代码、环境、配置&#xff09;‌打包成一个标准化的容器‌&#xff0c;这个容器可以在任何支持 Docker 的系统上运行&#xff0c;无需担心环境差异导致的问题。 ‌类比‌…...

判断一个数是不是素数的最高效的算法

判断一个数是否是素数&#xff0c;有从简单到复杂多种方法。最高效的算法取决于输入规模&#xff08;是几个亿以内的数&#xff0c;还是上百位的大整数&#xff09;&#xff0c;我会按实用场景分类讲解&#xff1a; ✅ 常规范围内&#xff08;比如 ≤ 1e12&#xff09;判断素数…...

《Head First 设计模式》第一章 - 笔记

本书是本人写的设计模式的笔记&#xff0c;写下核心要点&#xff0c;如果你掌握过设计模式&#xff0c;想快速阅读本书内容&#xff0c;这个笔记适合你阅读。如果你是新手&#xff0c;有 java 基础和 oo 设计原则基础&#xff0c;你适合跟我一样从零阅读本书。 第一章 策略模式…...

GPT系列:自然语言处理的演进与多模态的探索

GPT系列&#xff1a;自然语言处理的演进与多模态的探索 GPT系列的发展一、GPT-1 &#xff1a;通过生成式的预训练改进自然语言GPT-1的动机做一个预训练模型的难点GPT-1的微调模式GPT-1的训练数据Bert 二、GPT-2语言模型是非监督的GPT-2的动机引入promptGPT-2模型架构的改变GPT-…...

Linux驱动:驱动编译流程了解

要求 1、开发板中的linux的zImage必须是自己编译的 2、内核源码树,其实就是一个经过了配置编译之后的内核源码。 3、nfs挂载的rootfs,主机ubuntu中必须搭建一个nfs服务器。 内核源码树 解压 tar -jxvf x210kernel.tar.bz2 编译 make x210ii_qt_defconfigmakeCan’t use ‘…...

【MySQL】数据库基础

目录 1.什么是数据库2.见一见数据库3.服务器、表、库之间的关系4.MySQL架构5.sql语句分类6.查看MySQL存储引擎6.1 查看存储引擎6.2 常见存储引擎对比 1.什么是数据库 概念&#xff1a;数据库一般是指&#xff0c;在磁盘或者内存中存储的特定结构组织的数据 – 将来在磁盘上存储…...

1.1 文章简介

前因后果链 行业需求 → 技能断层 → 课程设计响应 (高薪岗位要求数学基础) → (符号/公式理解困难) → (聚焦原理与应用) 行业驱动因素 • 前因&#xff1a;机器学习/AI等领域的高薪岗位激增&#xff0c;但数学能力成为主要门槛 • 关键矛盾&#xff1a;算法论文中的数学…...

laravel 中使用的pdf 扩展包 laravel-snappy(已解决中文乱码)

Centos7 安装 wkhtmltopdf 1、先查看系统是 32 位的还是 64 位的 uname -a2、通过 composer 安装 wkhtmltopdf 32位: $ composer require h4cc / wkhtmltopdf-i386 0.12.x $ composer require h4cc / wkhtmltoimage-i386 0.12.x 64位: $ composer require h4cc/wkhtmltopdf-…...

java反序列化commons-collections链6

cc链6&#xff0c;最好用的cc链&#xff0c;因为它不受jdk版本的限制和cc版本的限制&#xff0c;前半段很像urldns链&#xff0c;后半段是cc1链 先来看一下它的利用链 Gadget chain:java.io.ObjectInputStream.readObject()java.util.HashSet.readObject()java.util.HashMap.p…...

WebSocket的原理及QT示例

一.WebSocket 介绍 1.概述 WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议&#xff0c;它在 2011 年被 IETF 定为标准 RFC 6455&#xff0c;并由 RFC7936 补充规范。与传统的 HTTP 协议不同&#xff0c;WebSocket 允许服务器和客户端之间进行实时、双向的数据传输&a…...

css 点击后改变样式

背景&#xff1a; 期望实现效果&#xff1a;鼠标点击之后&#xff0c;保持选中样式。 实现思路&#xff1a;在css样式中&#xff0c;:active 是一种伪类&#xff0c;用于表示用户当前正在与被选定的元素进行交互。当用户点击或按住鼠标时&#xff0c;元素将被激活&#xff0c;此…...

AI 在模仿历史语言方面面临挑战:大型语言模型在生成历史风格文本时的困境与研究进展

概述 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术在诸多领域展现出了强大的能力&#xff0c;但在处理历史语言这一特定任务时&#xff0c;却遭遇了不小的挑战。美国和加拿大的研究人员通过合作发现&#xff0c;像 ChatGPT 这样的大型语言模型&#x…...

C++.Windows图形

Windows图形 1. 基础知识1.1 Windows图形编程基础1.2 GDI与GDI1.3 窗口消息处理2.1 注册窗口类2.2 创建窗口2.3 显示窗口3.1 创建按钮3.2 按钮消息处理4.1 设置窗口透明度4.2 透明窗口示例5.1 使用区域创建异形窗口5.2 异形窗口示例6.1 GDI抗锯齿设置6.2 抗锯齿绘图示例7.1 Dir…...

【Vue3】使用vite创建Vue3工程、Vue3基本语法讲解

一、什么是Vite Vite是新一代前端构建工具&#xff0c;官网地址&#xff1a;Vite中文网&#xff0c;vite的优势如下&#xff1a; 轻量快速的热重载&#xff08;HMR&#xff09;&#xff0c;能实现极速的服务启动对TypeScript、JSX、CSS等支持开箱即用真正的按需编译&#xff…...

专题二:二叉树的深度优先搜索

以leetcode2331题为例 题目分析&#xff1a; 以第一个示例为例 算法原理分析&#xff1a; 从宏观角度&#xff0c;也就是我的算法之回溯的第一篇 我们发现我们在研究示例的时候&#xff0c;必须从下往上推 也就是我在研究一个结点是true还是false的时候&#xff0c;必须…...

Termius ssh连接服务器 vim打开的文件无法复制问题

你的问题是&#xff1a; • 在 Termius (macOS) SSH 连接到 VMware Ubuntu&#xff0c;使用 vim 打开 .cpp 文件时&#xff0c;可以复制文本&#xff1b; • 但在 Windows 10 上 SSH 到 VMware 的 Red Hat 6.4 时&#xff0c;复制操作无效。 ⸻ &#x1f3af; 初步分析 复制…...

搭建大数据学习的平台

一、基础环境准备 1. 硬件配置 物理机&#xff1a;建议 16GB 内存以上&#xff0c;500GB 硬盘&#xff0c;多核 CPU虚拟机&#xff1a;至少 3 台&#xff08;1 主 2 从&#xff09;&#xff0c;每台 4GB 内存&#xff0c;50GB 硬盘 2. 操作系统 Ubuntu 20.04 LTS 或 CentOS…...

Matlab 模糊控制节水洗衣机模型

1、内容简介 Matlab 232-模糊控制节水洗衣机模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

如何找正常运行虚拟机

1.新建虚拟机。Linux centos7&#xff0c;给虚拟机改个名字不要放在c盘 2.安装操作系统。cd/dvd->2009.iso 启动虚拟机...

python二手书交易管理系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

使用本地部署的 LLaMA 3 模型进行中文对话生成

以下程序调用本地部署的 LLaMA3 模型进行多轮对话生成&#xff0c;通过 Hugging Face Transformers API 加载、预处理、生成并输出最终回答。 程序用的是 Chat 模型格式&#xff08;如 LLaMA3 Instruct 模型&#xff09;&#xff0c;遵循 ChatML 模板&#xff0c;并使用 apply…...

C++编程练习,认识面向对象权限,如何进行封装

#include <iostream> #include <string> using namespace std; /* 银行的账户是一个模板&#xff0c;是一个类&#xff0c;有存款人信息和账户额度&#xff0c;而具体的存款人视为一个对象&#xff0c; 一个对象不能私自修改账户额度&#xff0c;需要通过一个操作流…...

A Survey of Learning from Rewards:从训练到应用的全面剖析

A Survey of Learning from Rewards&#xff1a;从训练到应用的全面剖析 你知道大语言模型&#xff08;LLMs&#xff09;如何通过奖励学习变得更智能吗&#xff1f;这篇论文将带你深入探索。从克服预训练局限的新范式&#xff0c;到训练、推理各阶段的策略&#xff0c;再到广泛…...