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

云计算-私有云-私有云运维开发

三、私有云运维开发(15)
​ 使用自动化运维工具 Ansible 完成系统的自动化部署与管理。
​ 基于 OpenStack APIs 与SDK,开发私有云运维程序
1.OpenStack Python运维开发:实现镜像管理(7分)
​ 编写Python代码,实现OpenStack镜像增删查改。
​ 在controller节点的/root目录下创建create_image.py文件,编写python代码对接OpenStack API,完成镜像的上传与查询。

​ ①创建镜像:要求在OpenStack私有云平台中上传镜像cirros-0.3.4-x86_64-disk.img,名字为pvm_image,disk_format为qcow2,container_format为bare。

​ ②查询镜像:查询pvm_image的详细信息,并控制台输出。

# 编写Python代码,实现OpenStack镜像增查
vi create_image.py
# encoding:utf-8
import requests,json,time
def get_auth_token(controller_ip,domain,name,password):try:url = f"http://{controller_ip}:5000/v3/auth/tokens"body = {"auth": {"identity": {"methods": ['password'],"password": {"user": {"domain": {"name": domain},"name": name,"password": password,}}},"scope": {"project": {"domain": {"name": domain},"name": name}}}}headers = {"Content-Type": "application/json"}token = requests.post(url,headers=headers,data=json.dumps(body)).headers['X-Subject-Token']headers = {"X-Auth-Token": token}print(f"token值为:{token}")return headersexcept Exception as e:print(f"token获取失败,{e}")class image_manager:def __init__(self,handers:dict,resUrl):self.headers = handersself.resUrl = resUrldef create_image(self,image_name,disk_format,container_format):body = {"name": image_name,"disk_format": disk_format,"container_format": container_format,}req = requests.post(self.resUrl,headers=self.headers,data=json.dumps(body)).textprint(f"创建镜像的信息为:{req}")return reqdef get_image_id(self,name):req = json.loads(requests.get(self.resUrl,headers=self.headers).text)for image in req['images']:if image['name'] == name:return image['id']return "NONE"def upload_image(self,id,file_path:str):url = self.resUrl + "/" + id + "/file"self.headers["Content-Type"] = "application/octet-stream"req = requests.put(url,headers=self.headers,data=open(file_path,'rb').read())if req.status_code == 204:print("上传镜像成功",req.status_code)else:print("上传镜像失败",req.status_code)print(f"镜像上传信息:{req}")return reqdef get_image(self,id):url = self.resUrl + "/" + idreq = json.loads(requests.get(self.resUrl,headers=self.headers).text)print(f"获取到的镜像信息为:{req}")return reqdef delete_image(self,id):url = self.resUrl + "/" + idreq = requests.delete(url,headers=self.headers)print(f"删除信息:{req}")return reqif __name__ == "__main__":controller_ip = "10.26.16.133"domain = "demo"name = "admin"password = "000000"headers = get_auth_token(controller_ip, domain, name, password)image_m = image_manager(headers,f"http://{controller_ip}:9292/v2/images")#createcreate_image = image_m.create_image("cirros001","qcow2","bare")#get idget_id = image_m.get_image_id("cirros001")print(f"cirros001镜像ID为:{get_id}")#uploadupload_image = image_m.upload_image(get_id,"cirros-0.3.4-x86_64-disk.img")#get imageget_image = image_m.get_image(get_id)with open("image_demo.json","w")as outfile:json.dump(get_image,outfile,indent=4)

2.OpenStack用户管理服务接口开发(8分)
​ 使用已建好的OpenStack Python运维开发环境,在/root目录下创建user_manager.py脚本,编写Python代码,端口为5043,IP地址为0.0.0.0,开发出OpenStack用户管理的接口,需要实现的接口如下:

​ ①GET /user/,自行调用查询接口,查询指定名称的用户;返回信息以json格式输出到控制台。

​ ②POST /user/create,自行调用创建接口,创建名为chinaskill的用户,密码为123456,返回信息以json格式输出到控制台。

​ ③DELETE /user/delete/,自行调用删除接口,删除指定名称的用户,若删除成功,返回信息输出到控制台。

# 编写api_user_manager.py
vi api_user_manager.py
# encoding:utf-8
import requests, json, time
import logging
# -----------logger-----------
# get logger
logger = logging.getLogger(__name__)
# level
logger.setLevel(logging.DEBUG)
# format
format = logging.Formatter('%(asctime)s %(message)s')
# to console
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(format)
logger.addHandler(stream_handler)
# -----------logger-----------
def get_auth_token(controller_ip, domain, user, password):''':param controller_ip: openstack master ip address:param domain: current user's domain:param user: user name:param password: user password:return: keystoen auth Token for current user.'''try:url = "http://controller:5000/v3/auth/tokens"body = {"auth": {"identity": {"methods": ["password"],"password": {"user": {"domain": {"name": domain},"name": user,"password": password}}},"scope": {"project": {"domain": {"name": domain},"name": user}}}}headers = {"Content-Type": "application/json",}print(body)Token = requests.post(url, data=json.dumps(body), headers=headers).headers['X-Subject-Token']headers = {"X-Auth-Token": Token}logger.debug(f"获取Token值:{str(Token)}")return headersexcept Exception as e:logger.error(f"获取Token值失败,请检查访问云主机控制节点IP是否正确?输出错误信息如下:{str(e)}")exit(0)
# 用户管理
# https://docs.openstack.org/api-ref/identity/v3/index.html#users
class user_manager:def __init__(self, handers: dict, resUrl: str):self.headers = handersself.resUrl = resUrldef create_users(self, user_name, password: str, desc: str):"""create a user with name and password and description."""body = {"user": {"name": user_name,"password": password,"description": desc,}}status_code = requests.post(self.resUrl, data=json.dumps(body), headers=self.headers).textlogger.debug(f"返回状态:{str(status_code)}")return status_codedef get_users(self):"""get user"""status_code = requests.get(self.resUrl, headers=self.headers).textlogger.debug(f"返回状态:{str(status_code)}")return status_codedef get_user_id(self, user_name):"""get user id by name."""result = json.loads(requests.get(self.resUrl, headers=self.headers).text)user_name = user_namefor item in result['users']:if item['name'] == user_name:return item['id']return "NONE"def get_user(self, id: str):"""get a flavor by id."""api_url = self.resUrl + "/" + idresult = json.loads(requests.get(api_url, headers=self.headers).text)logger.debug(f"返回信息:{str(result)}")return resultdef delete_user(self, name: str):"""delete a user by id."""id = self.get_user_id(name)api_url = self.resUrl + "/" + idresponse = requests.delete(api_url, headers=self.headers)if response.status_code == 204:return {"User itemDeletedSuccess": response.status_code}result = json.loads(response.text)logger.debug(f"返回信息:{str(result)}")return resultdef update_User_password(self, id: str, original_password: str, new_password: str):"""update a flavor desc by id."""self.headers['Content-Type'] = "application/json"body = {"user": {"password": new_password,"original_password": original_password}}api_url = self.resUrl + "/" + id + "/password"response = requests.post(api_url, data=json.dumps(body), headers=self.headers)# Normal response codes: 204 without return textif response.status_code == 204:return {"item Update Password Success": response.status_code}result = json.loads(response.text)logger.debug(f"返回信息:{str(result)}")return result
if __name__ == '__main__':# 1. openstack allinone (controller ) credentials# host ip address# controller_ip = "10.24.2.22"controller_ip = "controller"# controller_ip = "10.24.2.22"# domain namedomain = "demo"# user nameuser = "admin"# user passwordpassword = "000000"headers = get_auth_token(controller_ip, domain, user, password)print("headers:", headers)# get all useruser_m = user_manager(headers, "http://controller:5000/v3/users")# 1 查询所有users = user_m.get_users()print("查询所有users:", users)# 编写user_manager.py
vi user_manager.py
#encoding:utf-8
import argparse
import api_user_manager
import json
import csv
import yaml
controller_ip = "controller"
domain = "demo"
user = "admin"
password = "000000"
headers = api_user_manager.get_auth_token(controller_ip, domain, user, password)
print("headers:", headers)
user_m = api_user_manager.user_manager(headers, "http://controller:5000/v3/users")
print("-----------begin-----------------")
def define_args(parser):"""定义程序支持的args:return:"""# parser = argparse.ArgumentParser()#增加控制命令(postion 位置参数,必须)parser.add_argument('command',help='Resource command name',type=str)# parser.add_argument('delete',#                     help='delete a resource',#                     type=str)#可选参数(可有可无)parser.add_argument('-n', '--name',  # 可选参数,删除的名称help='The Name of the resource',  # 输入-h展示type=str)parser.add_argument('-i', '--input',  # 可选参数,删除的名称help='The input json format text ',  # 输入-h展示type=str)parser.add_argument('-o', '--output',  # 可选参数,删除的名称help='The output file path ',  # 输入-h展示type=str)
def parse_args(parser):args = parser.parse_args()if args.command:if args.command == "create":print("create some thing")create_user(args)elif args.command == "getall":print("getall some thing")getall_users(args)elif args.command == "get":print("get some thing")get_user(args)elif args.command == "delete":print("delete some thing")delete_user(args)else:print("Note support command name!")
def create_user(args):print('Provided command value is %r.' % args.command)print('Provided input value is %r.' % args.input)print('Provided output value is %r.' % args.output)output_file = args.output# user_name, password: str, desc: str):user_dict = json.loads(args.input)result = user_m.create_users(user_dict["name"],user_dict["password"],user_dict["description"])# 写出json文件print("--------write to json---------:", result)print(result)
def delete_user(args):print('Provided command value is %r.' % args.command)print('Provided input value is %r.' % args.input)print('Provided output value is %r.' % args.output)result = user_m.delete_user(args.name)print(result)
def getall_users(args):print('Provided command value is %r.' % args.command)print('Provided input value is %r.' % args.input)print('Provided output value is %r.' % args.output)print(type(args.input))result = user_m.get_users()output_file = args.output# 写出json文件print("--------result---------")print(result)configuration = json.loads(result)# 写出yaml (dict)with open(output_file, 'w') as yaml_file:yaml.dump(configuration, yaml_file)print(result)
def get_user(args):print('Provided command value is %r.' % args.command)print('Provided input value is %r.' % args.input)print('Provided output value is %r.' % args.output)id = user_m.get_user_id(args.name)result = user_m.get_user(id)output_file = args.output# 写出json文件with open(output_file, 'w') as jsonfile:json.dump(result, jsonfile, indent=4)print(result)
if __name__ == '__main__':import sysprint(sys.argv)parser = argparse.ArgumentParser()define_args(parser)
parse_args(parser)# 创建1个用户
python3 user_manager.py create --input '{ "name": "user01", "password": "000000", "description": "description" } '# 查询给定具体名称的用户查询
python3 user_manager.py get --name user01 -o user.json# 查询目前admin账号下所有的用户
python3 user_manager.py getall -o openstack_all_user.yaml# 删除指定的名称的用户
python3 user_manager.py delete --name user01

相关文章:

云计算-私有云-私有云运维开发

三、私有云运维开发(15) ​ 使用自动化运维工具 Ansible 完成系统的自动化部署与管理。 ​ 基于 OpenStack APIs 与SDK,开发私有云运维程序 1.OpenStack Python运维开发:实现镜像管理(7分) ​ 编写Python代…...

hadoop存储数据文件原理

Hadoop是一个开源的分布式计算框架,可以用于存储和处理大规模数据集。Hadoop的存储系统基于Hadoop Distributed File System(HDFS),它的主要原理如下: 数据切块:当用户向HDFS中存储一个文件时,该…...

spring2.x详解介绍

一、核心架构升级 Spring 2.x 是 Spring 框架的重要迭代版本(2006-2009年间发布),其核心改进体现在 模块化设计 和 轻量化配置 上。相较于 1.x 版本,2.x 通过以下方式重构了架构: XML Schema 支持:弃用 D…...

探索Grok-3的高级用法:功能与应用详解

引言 随着人工智能技术的迅猛发展,xAI推出的Grok-3模型以其卓越的性能和创新功能,成为AI领域的新标杆。Grok-3不仅在计算能力上实现了十倍提升,还引入了多种高级模式和实时数据处理能力,适用于学术研究、技术分析、市场洞察等多场…...

PyTorch_张量转换为numpy数组

使用 tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。共享内存会导致张量或者numpy中的其中一个更改后,另外一个会受到影响。 代码 import torch # 张量转换为 numpy 数组 def test01():data_te…...

什么是“原子变量”?

原子变量(std::atomic)在C++中是一个非常关键的机制,特别是在多线程编程中保持数据安全和避免竞争条件。它的设计目标就是让一段操作在多线程环境下变得“原子性”,即不可被中断,保证操作的完整与一致。 一、什么是“原子变量”? 简单来说: 普通变量:在多线程环境中,…...

[Linux开发工具]gcc/g++

C语言文件编译运行 gcc code.c -o mycode gcc -o mycode code.c 预处理 汇编 编译 链接 预处理(进行宏替换/去注释/条件编译/头文件展开) gcc -E code.c -o code.i -E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来 code.i预处理之后的结果 …...

【Mytais系列】Type模块:类型转换

MyBatis 的 类型系统(Type System) 是框架处理 Java 类型与数据库类型之间映射的核心模块,它通过 类型处理器(TypeHandler)、类型别名(TypeAlias) 和 类型转换器 等机制,实现了数据库…...

C++类_虚基类

在 C 里,虚基类是用来解决菱形继承问题的。菱形继承问题是指当一个派生类从两个或更多基类派生,而这些基类又从同一个基类派生时,派生类会包含多份间接基类的数据副本,这可能会引发数据冗余和二义性问题。虚基类可以保证在派生类中…...

【自然语言处理与大模型】使用Xtuner进行模型合并与导出

在上一篇文章中我为大家介绍了Xtuner框架如何进行QLoRA微调,这个框架在微调过后会得到适配器权重文件,它的后缀是.pth。但原模型都是huggingface模型,其后缀是safetensors。所以呢我们在使用这个框架导出模型之前要合并,合并之前要…...

数据结构4.0

大家好,今天是栈的知识点~ 目录 一、栈的概念 1.0 栈的概念 2.0 概念区分 二、栈的方法 1.0 MyStack方法: 2.0 将元素压入栈顶 3.0 移除并返回栈顶元素 4.0 返回栈顶元素但不移除 三、栈的题目 1.0括号匹配 2.0逆波兰表达式求值 3.0 出栈…...

SMT贴片检验标准核心要点与实施规范

内容概要 SMT贴片检验标准是确保电子产品组装质量的核心框架,其核心要点覆盖从原材料到成品的全流程工艺控制。该标准体系以焊点质量、元件定位精度及锡膏印刷检测为技术基线,结合IPC-A-610电子组装验收规范,对PCBA加工中的缺陷类型、判定阈…...

探索 C++23 std::to_underlying:枚举底层值获取的利器

文章目录 引言基本概念作用使用示例与之前方法的对比在 C23 中的意义总结 引言 在 C 的发展历程中,每一个新版本都带来了许多令人期待的新特性和改进,以提升代码的安全性、可读性和可维护性。C23 作为其中的一个重要版本,也不例外。其中&…...

PyTorch学习之张量(Tensor)(一)

1. 张量的基本概念 1.1. 定义与特性 张量是PyTorch中最基础的数据结构,可视为多维数组的泛化形式,支持标量(0维)、向量(1维)、矩阵(2维)及更高维度的数据存储。其核心特性包括&…...

理解数学概念——支集(支持)(support)

1. 支集(support)的定义 在数学中,一个实函数 f 的支集(support)是函数的不被映射到 0 的元素域(即定义域)的子集。若 f 的(定义)域(domain)是一个拓扑空间(即符合拓扑的集合),则 f 的支集则定义为包含( f 的元素域中)不被映射到0的所有点之最小闭集…...

Python 部分内置函数及其用法详解

在 Python 编程的世界里,内置函数是我们强大的 “工具箱”,它们提供了丰富而便捷的功能,帮助我们高效地完成各种任务。本文将带你深入了解这些常用内置函数及其用法,通过简单易懂的实例,让你轻松掌握它们。 一、数据类…...

[蓝桥杯真题题目及解析]2025年C++b组

移动距离(填空)** 小明初始在二维平面的原点,他想前往坐标 (233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用: 水平向右移动,即沿着 x 轴正方…...

yolov5 train笔记4 roboflow

How to Train a YOLOv5 Model On a Custom Dataset Sign in to Roboflow https://www.youtube.com/watch?vr3Ke7ZEh2Qo 他的ai懂中文的 还是得训练,明天再搞 https://www.youtube.com/watch?vEmYCpbFQ5wo&t2s 很香但是我没有马内...

工作记录 2015-06-01

工作记录 2015-06-01 序号 工作 相关人员 1 修改了FnetFax 修改了iConverter 修改了iCDA 郝 FNSR识别引擎 统计了最近几个星期0223医院的打字和录音的时间比。上周的比值是3.42,是近8个星期中最低的值。和05/03/2015 - 05/09/2015的3.74相比,下降…...

创意Python爱心代码分享

在代码的世界里,程序员以独特方式书写浪漫。他们精心打造的一个个 demo,宛如熠熠星辰。这些 demo 不仅是技术结晶,更饱含对编程的热爱与执着。从简洁的算法示例到复杂的系统雏形,每一行代码都凝聚着思考与智慧。它们被无私分享&am…...

【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means

一、向量化表示的核心概念 1.1 特征空间与向量表示 多维特征表示:通过多个特征维度(如体型、毛发长度、鼻子长短等)描述对象,每个对象对应高维空间中的一个坐标点,来表示狗这个对象,这样可以区分出不同种…...

降维大合集

1. 主成分分析(PCA,Principal Component Analysis) 基本原理 PCA 是一种线性降维方法,其核心思想是: 找到数据中方差最大的方向(称为主成分),并将数据投影到这些方向上。 利用正交变…...

AWS上构建基于自然语言和LINDO API的线性规划与非线性规划的优化计算系统

我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和附件文档里提到的LINDO API 15.0实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过LINDO API 15.0线性规划与非线性规划的优化计算程序输出计算结果和必要步骤的应用,结果用中…...

26考研 | 王道 | 计算机网络 | 第三章 数据链路层

26考研 | 王道 | 第三章 数据链路层 数据链路层所处的地位 数据链路层 使用 物理层 提供的“比特传输”服务数据链路层 为 网络层 提供服务,将网络层的 IP数据报(分组)封装成帧,传输给下一个相邻结点物理链路:传输介质…...

学习黑客资产威胁分析贴

第一天作业: 完成作业奖励: 🎁 奖励 1 ── Week 2《Web 渗透手册》预览 Day主题关键目标练手靶场 / 工具1HTTP 基础 & Burp 入门抓包、改包、重放PortSwigger Academy:“HTTP basics”2SQL 注入原理手工注入 sqlmapDVWA →…...

CSS元素动画篇:基于当前位置的变换动画(合集篇)

CSS元素动画篇:基于当前位置的变换动画(合集篇) 前言位移效果类元素动画水平抖动效果效果预览代码实现 垂直抖动效果效果预览代码实现 摇头动画效果效果预览代码实现 点头动画效果效果预览代码实现 旋转效果类元素动画摇摆动画效果效果预览代…...

Spring 容器相关的核心注解​

以下是 Spring 容器中用于 ​​Bean 管理、依赖注入、配置控制​​ 的关键注解,按功能分类说明: ​​1. Bean 声明与注册​​ 注解作用示例​​Component​​通用注解,标记一个类为 Spring Bean(自动扫描注册) Compo…...

经典算法 最小生成树(prim算法)

最小生成树 题目描述 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和。如果最小生成树不存在,则输出 impossible。 给定一张边带权的无向图 G (V, E),其中&#xff1a…...

机器学习中的分类和回归问题

1. 分类问题 机器学习中的分类问题是一种监督学习任务,其核心目标是将数据样本分配到预定义的离散类别中,例如判断邮件是否为垃圾邮件、识别图像中的物体类型等。 分类通过已知标签的训练数据(如带类别标注的样本)学习特征与类别…...

pip命令

安装&卸载 -- 安装numpy pip install numpy1.26.4 -- 从索引安装(自定义源) pip install package_name --index-url https://custom_url -- 安装本地文件或目录 pip install /path/to/package.whl pip install D:\Downloads\transformers-4.40.0-py…...

n8n工作流自动化平台的实操:Cannot find module ‘iconv-lite‘

解决问题: 1.在可视化界面,执行const iconv require(iconv-lite);,报Cannot find module iconv-lite [line 2]错误; 查看module的路径 进入docker容器 #docker exec -it n8n /bin/sh 构建一个test.js,并写入如何代码 vi tes…...

AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

文章目录 一、技术范式重构:从指令集到语义认知网络1.1 多模态语义解析器的进化路径1.2 提示词工程的认知分层 二、交互革命:从提示词到意图理解2.1 自然语言交互的认知进化2.2 专业领域的认知增强 三、未来技术图谱:2025-2030演进路线3.1 20…...

基于Springboot高校网上缴费综合务系统【附源码】

基于Springboot高校网上缴费综合务系统 效果如下: 系统登陆页面 个人中心页面 论坛交流页面 发表评论页面 付款页面 教师缴费页面 新增缴费类型页面 审核页面 研究背景 随着高校信息化建设进程的加速,传统手工缴费模式因效率低、错误率高、管理成本高…...

返回倒数第k个节点题解

这题要用到快慢指针的思想。 1.定义两个指针,一个快指针,一个慢指针,初始都指向头结点 2.先让快指针往后走k步,也就是移动k个节点,这个时候快指针比慢指针领先k 3.现在让快慢指针同时往后移动,两指针之间…...

《操作系统精髓与设计原理》第4章课后题答案-线程、对称多处理器和微内核

1.表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。对于多线程系统,这些元素中哪些可能属于线程控制块,哪些可能属于进程控制块? 对于不同的系统来说通常是不同的,但一般来说,进程是资源的所有者&#xf…...

《ATPL地面培训教材13:飞行原理》——第4章:亚音速气流

翻译:刘远贺;工具:Cursor & Claude 3.7;过程稿 第4章:亚音速气流 目录 翼型术语气流基础二维气流总结习题答案 翼型术语 翼型 一种能够以较高效率产生升力的特殊形状。 弦线 连接翼型前缘和后缘曲率中心的直…...

5月3日星期六今日早报简报微语报早读

5月3日星期六,农历四月初六,早报#微语早读。 1、五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”; 2、2025年五一档电影新片票房破3亿; 3、首日5金!中国队夺得跳水世界杯总决赛混合团体冠军&…...

2024 虚拟电厂与大电网三道防线的关系探讨【附全文阅读】

本文围绕虚拟电厂与大电网三道防线展开探讨。大电网三道防线包括第一道防线的预防性控制和继电保护、第二道防线的稳控系统、第三道防线的失步解列及频率电压紧急控制装置 ,新型电力系统建设对第三道防线带来频率稳定等挑战。当前新型配电网第三道防线建设存在问题&…...

【c++】模板详解

目录 泛型编程模板的使用函数模板函数模板的本质函数模板的实例化显式实例化隐式实例化 函数模板的模板参数的匹配原则 类模板类模板的本质类模板的实例化 非类型模板参数模板特化函数模板特化类模板特化类模板全特化类模板偏特化(半特化) 模板分离编译t…...

【Linux】驱动开发方法

使用Petalinux学习驱动开发时的一些经验。 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基础——字符设备驱动 1.1 分配设备号(驱动入口使用)…...

BUUCTF——禁止套娃

BUUCTF——禁止套娃 进入靶场 一个近乎空白的页面 看一下框架 没什么有用的信息&#xff0c;扫个目录吧 只扫出来给flag.php&#xff0c;但是0B&#xff0c;估计又是个空网站 拼接访问一下 果然又是什么都没有 没有突破口 githack找找看看也没有源码吧 <?php include …...

Spring MVC @RequestBody 注解怎么用?接收什么格式的数据?

RequestBody 注解的作用 RequestBody 将方法上的参数绑定到 HTTP 请求的 Body&#xff08;请求体&#xff09;的内容上。 当客户端发送一个包含数据的请求体&#xff08;通常在 POST, PUT, PATCH 请求中&#xff09;时&#xff0c;RequestBody 告诉 Spring MVC 读取这个请求体…...

线性DP(动态规划)

线性DP的概念&#xff08;视频&#xff09; 学习线性DP之前&#xff0c;请确保已经对递推有所了解。 一、概念 1、动态规划 不要去看网上的各种概念&#xff0c;什么无后效性&#xff0c;什么空间换时间&#xff0c;会越看越晕。从做题的角度去理解就好了&#xff0c;动态规划…...

Qt中实现工厂模式

在Qt中实现工厂模式可以通过多种方式&#xff0c;具体选择取决于需求和场景。以下是几种常见的实现方法&#xff1a; 1. 简单工厂模式通过一个工厂类根据参数创建不同对象。cppclass Shape {public: virtual void draw() 0; virtual ~Shape() default;};class Circle : publ…...

基于 Dify + vLLM插件 + Qwen3 构建问答机器人Docker版

前提条件 硬件要求&#xff1a; 推荐 NVIDIA GPU (至少 16GB 显存&#xff0c;Qwen3 可能需要更多) 至少 32GB 内存 足够的存储空间 (Qwen3 模型文件较大) 软件要求&#xff1a; Docker 和 Docker Compose Python 3.8 CUDA 和 cuDNN (与你的 GPU 兼容的版本) 安装步骤…...

【Linux】Linux应用开发小经验

基于Petalinux工具链的Linux应用开发小经验&#xff0c;未完待续... 部分图片和经验来源于网络&#xff0c;若有侵权麻烦联系我删除&#xff0c;主要是做笔记的时候忘记写来源了&#xff0c;做完笔记很久才写博客。 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录…...

第39课 绘制原理图——绘制命令在哪里?

绘制原理图符号的命令在哪里&#xff1f; 在新建完原理图之后&#xff0c;我们就可以在原理图上绘制各种相关的符号了。 我们基本会从以下的两个地方&#xff0c;找到绘制各种符号的命令&#xff1a; 菜单栏中的“放置”菜单&#xff1b; 悬浮于设计窗口中的快速工具条 在初…...

第十四篇:系统分析师第三遍——15章

目录 一、目标二、计划三、完成情况四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 五、总结六、后面准备怎么做&#xff1f; 一、目标 通过参加考试&#xff0c;训练学习能力&#xff0c;而非单纯以拿证为目的。 1.在复习过程中&…...

市面上所有大模型apikey获取指南(持续更新中)

阿里云(千问) 官方文档&#xff1a; 百炼控制台 1. 登录百炼控制台 2.前往我的api页面百炼控制台 3.创建api4. 添加描述&#xff08;用于aichat&#xff09; Deepseek 官方文档&#xff1a;首次调用 API | DeepSeek API Docs 1. 登录api平台 DeepSeek 开放平台 2. Deep…...

Java框架“若依RuoYi”前后端分离部署

运行环境 Eclipse IDE for Enterprise Java and Web Developers 下载Eclipse解压Eclipse到文件夹 Maven 下载Maven解压Maven到文件夹配置环境变量MAVEN_HOME为Maven安装位置配置环境变量path为%MAVEN_HOME%\bin Redis 下载Redis解压Redis到文件夹配置环境变量path为Redis安装位…...