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

使用docker创建cloudstack虚拟主机

文章目录

概要

环境准备:

1.使用rockyLinux:8镜像

2.配置yum源

3.添加vim cloudstack.repo为以下内容

4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面,

5.创建Dockerfile

6.构建镜像

7.使用命令创建容器

8.创建docker网络,使用docker network ls查看

9.在使用第七部的命令进行创建​编辑

10.物理机测试启动服务

11.容器测试

10.更改 /etc/cloudstack/agent/agent.properties

小结


概要

前面我们在物理机上创建了cloudstack平台,是成功了的,现在尝试使用docker去启动多个cloudstack虚拟主机节点。前提是需要在物理机上面进行搭建,然后通过物理机进行映射到容器里面

物理机搭建cloudstack单节点:cloudstack概要及单节点安装部署_docker部署cloudstack-CSDN博客

在当前目录下创建一个目录并进入目录

环境准备:

1.使用rockyLinux:8镜像

2.配置yum源

编辑 vim epel.repo添加以下内容

[epel]

name=Extra Packages for Enterprise Linux 8 - $basearch

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir

enabled=1

gpgcheck=1

countme=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

[epel-debuginfo]

name=Extra Packages for Enterprise Linux 8 - $basearch - Debug

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-8&arch=$basearch&infra=$infra&content=$contentdir

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

gpgcheck=1

[epel-source]

name=Extra Packages for Enterprise Linux 8 - $basearch - Source

metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-8&arch=$basearch&infra=$infra&content=$contentdir

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

gpgcheck=1

3.添加vim cloudstack.repo为以下内容

[cloudstack]

name=cloudstack

baseurl=Index of /centos$releasever/4.19/

enabled=1

gpgcheck=0

4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面,

需要映射以下内容,可以先将所需要的目录进行cp到我们前面创建好的目录

/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

/etc/cloudstack/agent/

/etc/pki/CA

/etc/pki/libvirt/

需将以上四个目录进行cp到创建的目录

5.创建Dockerfile

内容如下:

FROM rockylinux:8

COPY epel.repo /etc/yum.repos.d/epel.repo

COPY cloudstack.repo /etc/yum.repos.d/cloudstack.repo

COPY Rocky-BaseOS.repo /etc/yum.repos.d/Rocky-BaseOS.repo

COPY RPM-GPG-KEY-EPEL-8 /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

COPY agent/ /etc/cloudstack/

COPY CA/ /etc/pki/

COPY libvirt/ /etc/pki/

RUN yum makecache \

        && yum clean packages \

        && yum install -y \

        openssh-server \

        epel-release \

        java-11-openjdk-devel \

        cloudstack-agent \

        iptables

RUN mkdir -p /var/run/sshd \

        && echo 'root:root' | chpasswd \

        && sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/'         /etc/ssh/sshd_config \

        && ssh-keygen -A

CMD ["/usr/sbin/sshd", "-D"]

6.构建镜像

使用命令:docker build -t dockercloudstack:v1 .(镜像名可随意)

使用docker images进行查看已经构建好的镜像我这里是随意取的

7.使用命令创建容器

docker run -uroot --privileged --rm -v /etc/sysconfig/libvirtd:/etc/sysconfig/libvirtd -v /etc/libvirt/:/etc/libvirt/ -v /lib/udev/rules.d/:/lib/udev/rules.d/ -v /etc/cloudstack/agent:/etc/cloudstack/agent -v /etc/pki/:/etc/pki/ -v /run/dbus/:/run/dbus/ -e JAVA_OPTS="-Djava.io.tmpdir=/usr/share/cloudstack-agent/tmp -Xms256m -Xmx2048m" -e CLASSPATH="/usr/share/cloudstack-agent/lib/*:/usr/share/cloudstack-agent/plugins/*:/etc/cloudstack/agent:/usr/share/cloudstack-common/scripts" -e JAVA_CLASS=com.cloud.agent.AgentShell -it -d --hostname cloud --name cloud --network=my_macvlan_network --ip xxxxxxxxxxxxxxxx dockedahi:latest(替换IP地址)

使用docker run的时候发现docker创建的网络出现了以下问题,突然想到使用docker虚拟的容器,需要进行自定义bond0,然后重新设置网络。如果想了解docker网络模式可参看这篇文章:Docker不同的网络模式特点_docker网络类型 以及特点-CSDN博客

报错信息:docker: Error response from daemon: failed to create endpoint cloudworker160-2 on network my_macvlan_network: network id "9e54b8391319ab53087fea1a043c6cd0152bc5ddb1769d6cbe210732f529b240" not found.

8.创建docker网络,使用docker network ls查看

使用命令创建网络

docker network create -d macvlan --subnet=子网地址/24 --gateway=xxxxxxxxxxxxxxx -o parent=cloudbr0 my_macvlan_network

这里的subnet需要更改为所属自己的网络 ip a 的24位子网地址,以及对应网关,parent需要对应cloudbr0前面一篇cloudstack物理机搭建所讲解的,这是必要的

9.在使用第七部的命令进行创建

当我进入网页进行查看是否有这个主机时发现没有,这时候感到纳闷,就进入到容器进行查看,才发现没有启动服务,就试着去尝试systemctl status libvirtd才发现容器里面是没有systemctl这个指令,这不前功尽弃嘛,有试想这不用systemctl启动,或者尝试绕过这个命令不就可以了。尝试了很多次还是不行。就一直困恼着,后来在部门老大的的研究下,就尝试着拆解systemctl start libvirt这个命令

进入到/usr/lib/systemd/system/libvirtd.service配置信息如下

通过配置文件我们看到,他在启动时会去调用sbin下面的libvirtd进行启动,那好就回到根目录下面,确实发现有,然后使用libvirtd -h看一下指令,发现他需要的参数很少,就尝试加参数 - l 进行启动,还是失败,就去查看官方文档,发现,在进行启动libvirtd的时候,他会去调用cloudstack这个服务,那也就是意味着这个服务是不是也得开启。

然后我就去看systemctl status cloudstack-agent.server 发现确实有这个服务,然后进入到/usr/lib/systemd/system/cloudstack-agent.service

查看文件后,发现他在启动时会调用/etc/default/cloudstack-agent这个配置。

然后进入到etc/default/cloudstack-agent配置发现是调用的如下信息,也是环境变量,就export到用户的环境变量里面,然后在进行启动使用命令java $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS进行启动。

10.物理机测试启动服务

这时候我们拆解了libvrited启动服务,需要启动libvirtd -l ,以及java $JAVA_OPTS $JAVA_DEBUG -cp $CLASSPATH $JAVA_CLASS这两条命令,需要加三条环境变量才能启动成功,就开始测试,启动后登录网页发现成功了。

11.容器测试

这时候我们得到了两台启动命令后在容器里面迫不及待进行尝试,发现报错,这又是什么原因呢,看看报错信息。

从报错的信息看看

No libvirt.vif.driver specified. Defaults to BridgeVifDriver

Failed to get private nic name

这时候想想,网络接口,虚拟化,那是不是容器里面起的服务也需要更改网络呢,就用ip a去查看,发现是eth0

就上网查资料,说是在vi /etc/cloudstack/agent/agent.properties下面进行更改

发现这个配置文件是我们之前从物理机上面映射过来的,这不埋下了坑,然全部更改为eth0在进行启动,没有报错,看网页成功了。算是松了一口气,就尝试搞第二台。

10.更改 /etc/cloudstack/agent/agent.properties

在进行第二台的时候,同样的配置启动,然后登录网页,发现160.2不见了只发了160.3,过一会又变回去了,发现还存在bug,就看了一下这个文件的配置,发现这两个容器的uuid是一模一样的是不是这个影响呢,就尝试更改一下,使用uuidgen生成新的修改这个配置然后在启动试试发现实成功的。

小结

 以上就是在docker里面创建虚拟的cloudstack虚拟主机,但是在后续的研究中也存在一定的问题就是无法继续创建示例,需要在进行研究一下,因为这涉及到在容器里面在进行安装虚拟的,已经违背了docker的原则,但是可以进行docker里面套结docker,都需要各位大佬继续开发。提供批量创建云主机的脚本:docker批量创建cloudstack虚拟主机脚本-CSDN博客

相关文章:

使用docker创建cloudstack虚拟主机

文章目录 概要 环境准备: 1.使用rockyLinux:8镜像 2.配置yum源 3.添加vim cloudstack.repo为以下内容 4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面, 5.创建Dockerfile 6.构建镜像 7.使用命令创建…...

mybatis-xml映射文件及mybatis动态sql

规范 XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。 XML映射文件的namespace属性为Mapper接口全限定名一致。 XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致…...

Qt | TCP服务器实现QTcpServer,使用线程管理客户端套接字

点击上方"蓝字"关注我们 01、QTcpServer >>> QTcpServer 是 Qt 网络模块中的一个类,用于实现TCP服务器。它允许创建一个服务器,可以接受来自客户端的连接。QTcpServer 是事件驱动的,这意味着它将通过信号和槽机制处理网络事件。 常用函数 构造函数: QT…...

rustdesk远程桌面使用

文章目录 简介1.客户端rustdesk使用2.基于 S6-overlay 的镜像 服务端部署3.声明 简介 为什么使用rustdesk,因为向日葵,todesk,免费版本的有各种各样的坑,比如限制你的登录,需要你重新登录使用,画面模糊&am…...

C#中图片的Base64编码与解码转换详解

在C#中,我们可以使用Base64编码将图片转换为字符串,也可以将Base64编码的字符串转换回图片。这通常用于在需要文本表示图像数据的场合(例如在Web开发中传输图像数据)。 将图片转换为Base64字符串 要将图片文件转换为Base64字符串…...

瑞芯微方案主板Linux修改系统串口波特率教程,触觉智能RK3562开发板演示

遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。 温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或…...

阿里云整理(二)

阿里云整理 1. 访问网站2. 专业名词2.1 域名2.2 域名备案2.3 云解析DNS2.4 CDN2.5 WAF 1. 访问网站 用户使用浏览器访问网站大体分为几个过程: 用户在浏览器输入域名URL,例如www.baidu.com。 不过,浏览器并不知道为该域名提供服务的服务器具…...

python实现一个简单的不断发送dns查询的功能

the code below: import socket import struct import time import randomdef create_dns_query(domain"example123.com"):# DNS HeaderID random.randint(0, 65535) # 随机查询IDFLAGS 0x0100 # Standard queryQDCOUNT 1 # One questionANCOUNT 0 # …...

鲲鹏麒麟使用Docker部署Redis5

本次部署采用Docker方式进行部署,服务器为鲲鹏服务器,CPU架构为ARM64,操作系统版本信息为 # cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Tercel)镜像 下载镜像鲲鹏麒麟Redis5镜像包 部署 1、上传镜像到服务器 2、…...

MySQL悲观锁和乐观锁

MySQL悲观锁和乐观锁 在数据库中,锁是用来管理并发控制的一种机制,确保数据的一致性和完整性。MySQL中的悲观锁和乐观锁是两种不同的并发控制策略,它们在处理并发事务时采用不同的方法。 悲观锁(Pessimistic Locking&#xff09…...

【AI模型对比】Kimi与ChatGPT的差距:真实对比它们在六大题型中的全面表现!

文章目录 Moss前沿AI语义理解文学知识数学计算天文学知识物理学知识英语阅读理解详细对比列表总结与建议 Moss前沿AI 【OpenAI】获取OpenAI API Key的多种方式全攻略:从入门到精通,再到详解教程!! 【VScode】VSCode中的智能AI-G…...

一根网线如何用软路由给手机、电脑分配设置不同IP

众所周知,在同一个网络下,我们的互联网IP是一样的,即外网只有一个IP。很多互联网公司、游戏工作室、营利工作室都需要利用它们来实现同一网络下多台设备IP地址不同的效果。对此我们该怎么办?下面给大家简单分享一下! 在…...

面经自测——自我介绍

前言 这是作者新开的坑,一切题目都是从网上找的原题,为了总结网上有关的面经,以便在真实面试中较为流利的回答面试官的问题 面试之——自我介绍 自我介绍是面试中最常见的问题之一,主要目的是让面试官了解你的背景、技能和职业…...

uniapp 小程序 监听全局路由跳转 获取路由参数

uniapp 小程序 监听全局路由跳转 获取路由参数 app.vue中 api文档 onLaunch: function(options) {let that this;let event [navigateTo, redirectTo, switchTab, navigateBack];event.forEach(item > {uni.addInterceptor(item, { //监听跳转//监听跳转success(e) {tha…...

【LeetCode每日一题】——204.计数质数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 204.计数质数 四【题目描述】 给定整数 n &…...

TCP的“可靠性”(下)——三次握手四次挥手

目录 建立连接(三次握手)为啥要进行握手??意义何在??常见面试题:为啥必须是三次握手? 断开连接(四次挥手)三次握手和四次挥手的相同点和不同点连接过程中涉及…...

【笔记2-5】ESP32:freertos消息队列

主要参考b站宸芯IOT老师的视频,记录自己的笔记,老师讲的主要是linux环境,但配置过程实在太多问题,就直接用windows环境了,老师也有讲一些windows的操作,只要代码会写,操作都还好,开发…...

java操作doc(二)——java利用Aspose.Words动态创建自定义doc文档

有关java动态操作word文档,上一篇写了如何使用模板动态设置对于内容以及相关单元格的动态合并问题,详细请参看如下文档: java利用Aspose.Words操作Word动态模板文档并动态设置单元格合并 这篇文档说说,如何利用Aspose.Words动态…...

计算机光电成像理论基础

一、透过散射介质成像 1.1 光在散射介质中传输 光子携带物体信息并进行成像的过程是一个涉及光与物质相互作用的物理现象。这个过程可以分为几个步骤来理解: 1. **光的发射或反射**: - 自然界中的物体可以发射光(如太阳)&am…...

【Qt中实现屏幕录制】

在Qt中实现屏幕录制可以通过使用QScreen和QVideoEncoder类来完成。以下是一个简单的示例代码,演示如何捕获屏幕并将其保存为视频文件。请确保已经安装了Qt Multimedia模块,因为我们将使用其中的类来处理视频编码。 下面是一个基本的实现步骤&#xff1a…...

repo仓库转移到自己本地的git服务器

前提条件:搭建好gitolite 以转移正点原子rk3568_linux工程为例子,将其转移到自己的git服务器。 获取完整repo仓库 将正点原子epo仓库sync出来 evanevan-X99:~/SRC/atk$ .repo/repo/repo sync -l -j10 evanevan-X99:~/SRC/atk$ .repo/repo/repo list -n…...

java操作文件(一)——java如何实现多文件打包压缩并下载

在实际开发项目过程中,文件下载是异常频繁的操作,但是多文件zip打包下载并非常见使用场景,本文介绍如何使用io流操作多文件实现压缩并下载。 特别说明: 无需依赖任何第三方包或者拆件 一、效果展示: 1.打包前文件列…...

Git仓库移除文件的暂存和修改

在使用Git进行版本控制时,有时需要移除文件的暂存状态或者撤销对文件的修改。根据不同的需求和场景,可以采取不同的命令来完成这些操作。下面将详细介绍如何在Git中移除文件的暂存以及撤销文件的修改。 请注意,在执行这些命令之前&#xff0…...

Kube-Prometheus-Stack安装时初始化导入自定义Grafana dashboards

获取Grafana dashboards的JSON文件 这里是获取已经编辑好的Grafana dashboards的JSON文件;以便内置到Kube-Prometheus-Stack的helm charts的安装zip文件中。 编辑自定义dashboards JSON文件 获取dashboards JSON文件模板 其实Kube-Prometheus-Stack内部本身已经内…...

2024-12-05OpenCV高级-滤波与增强

OpenCV高级-滤波与增强 文章目录 OpenCV高级-滤波与增强1-OpenCV平滑滤波1. 均值滤波 (cv2.blur())2. 高斯滤波 (cv2.GaussianBlur())3. 中值滤波 (cv2.medianBlur())4. 双边滤波 (cv2.bilateralFilter())总结 2-OpenCV边缘检测1. Sobel算子 (cv2.Sobel())2. Canny边缘检测 (cv…...

taro小程序进入腾讯验证码

接入原因 昨天突然晚上有人刷我们公司的登录发送短信接口,紧急将小程序的验证码校验更新上去了 接下来就是我们的接入方法,其实很简单,不过有时候可能大家着急就没有仔细看文档,腾讯验证码文档微信小程序地址,注意这里…...

微信小程序怎么实现非tabbar页面显示tabbar,自定义组件实现

微信小程序没有发现可以实现非tabbar页面显示tabbar的方法,但是可以在tabbar页面当中隐藏tabbar,使用wx.hideTabBar()方法就可以实现,在非tabbar页面调用wx.showTabBar()方法却会显示失败,不能显示tabbar onLoad() {wx.showTabBar…...

001集—— 创建一个WPF项目 ——WPF应用程序入门 C#

本例为一个WPF应用&#xff08;.NET FrameWork&#xff09;。 首先创建一个项目 双击xaml文件 双击xaml文件进入如下界面&#xff0c;开始编写代码。 效果如下&#xff1a; 付代码&#xff1a; <Window x:Class"WpfDemoFW.MainWindow"xmlns"http://schema…...

【LeetCode: 316. 去除重复字母 + 栈 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

基于Python的Selenium详细教程

一、PyCharm安装配置Selenium 本文使用环境&#xff1a;windows11、Python 3.10.5、PyCharm 2022.1.3、Selenium 4.3.0 需要你懂的技术&#xff1a;Python、HTML、CSS、JavaScript 1.Seleium安装&#xff1a; 在PyCharm终端或window命令窗口输入以下命令 #查看已安装的Pytho…...

金仓KDTS迁移工具报错ERROR: 对访问方法 “btree“ 数据类型 unknown 没有默认的操作符表

ERROR: 对访问方法 "btree" 数据类型 unknown 没有默认的操作符表 查看错误日志 com.kingbase8.util.KSQLException: ERROR: 对访问方法 "btree" 数据类型 unknown 没有默认的操作符表Hint: 你必须指定一个操作符表给索引或定义一个默认的操作符表给数据…...

前端开发入门指南Day 17:TypeScript高级类型(泛型,类型守卫,Partial<T>和 Required<T>等)

泛型&#xff1a;代码的"变色龙" &#x1f98e; 为什么需要泛型&#xff1f; 想象一个快递员&#xff0c;每天要处理不同类型的包裹。如果为每种类型的包裹都写一套处理程序&#xff0c;那会很麻烦。泛型就像是一个"通用的包裹处理系统"&#xff0c;它能…...

数据链路层(四)---PPP协议的工作状态

1 PPP链路的初始化 通过前面几章的学习&#xff0c;我们学了了PPP协议帧的格式以及组成&#xff0c;那么对于使用PPP协议的链路是怎么初始化的呢&#xff1f; 当用户拨号上网接入到ISP后&#xff0c;就建立起了一条个人用户到ISP的物理链路。这时&#xff0c;用户向ISP发送一…...

EasyNVR中HTTP-FLV协议无法播放怎么解决?

在科技日新月异的今天&#xff0c;摄像头作为公共安全领域的重要一环&#xff0c;其技术的不断提升正显著地改变着社会的安全格局。从最初的简单监控到如今的高清智能分析&#xff0c;我们可以对特定区域进行实时监控和记录&#xff0c;为社会的安全稳定提供了强有力的保障。 问…...

微服务监控prometheus+Grafana

目录 Prometheus 概述 核心组件 特点 使用场景 Grafana 概述 功能特点 使用场景 PrometheusGrafana组合 部署和配置 一、准备工作 二、部署Prometheus 三、部署Grafana 四、创建监控仪表盘 五、验证和调优 总结 微服务监控是确保微服务架构稳定运行的关键环节…...

C++编程:模拟实现CyberRT的DataVisitor和DataDispatcher

文章目录 0. 引言1. 设计概要1.1 主要组件1.2 类关系图1.3 工作流程 2. 代码实现2.1. 定义数据结构2.2. 实现 DataVisitor2.3. 实现 DataDispatcher2.4. 实现 Receiver2.5. 实现具体的 DataVisitor2.6. 示例主程序2.7. 编译和运行 0. 引言 使用 C 实现一个类似CyberRT 架构的 …...

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…...

银河麒麟v4/v10 Ubuntu上添加服务过程-以编译postgressql数据库为例

1 首先联网安装依赖 apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libxml2-dev python-setuptools 2 下载安装包 下载地址&#xff1a;https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz 3 编译安装 mkdir -p /data/pgsql…...

电子商务人工智能指南 1/6 - 搜索、广告和发现

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…...

JAVA面试基础(总结了很多)

最近帮整理了一份JAVA的面试基础&#xff0c;不过很基础后面还回继续更新。 java的专业技能 2.1 java的基础部分 2.1.1 简单讲一下java的跨平台原理 由于各操作系统&#xff08;windows,liunx等&#xff09;支持的指令集&#xff0c;不是完全一致的。就会让我们的程序在不同的操…...

PPT怎样做的更加精美

目录 PPT怎样做的更加精美 3D的GIF图片 3维空间图​编辑 结果有明显的对比 阅读高质量文献,采用他们的图 PPT怎样做的更加精美 3D的GIF图片 3维空间图 结果有明显的对比...

postgresql与pgvector安装与使用

环境变量修改 打开 .bashrc 文件进行编辑&#xff1a; vim ~/.bashrc在文件的末尾添加上面的环境变量配置 # 添加 PostgreSQL 可执行文件路径到系统 PATH export PATH/home/....../pg/postgresql-12.4/bin:$PATH# 设置 PostgreSQL 数据目录 export PGDATA/home/....../pg/pos…...

Tomcat,javaweb, servlet , springBoot

在server.xml里配置服务器 <scope>provided</scope>打包的时候&#xff0c;这个jar包不会被打进去&#xff0c;因为tomcat已将封装了这个jar包&#xff0c;没必要要这个...

vue 通过 image-conversion 实现图片压缩

简介 vue项目中&#xff0c;上传图片时如果图片很大&#xff0c;通过 image-conversion 压缩到指定大小 1. 安装依赖 npm i image-conversion --save2. 引用 import * as imageConversion from image-conversion3. 使用 const newFile new Promise((resolve) > {// 压…...

自由学习记录(27)

event委托在类内可完全修改 &#xff08;前提为该event在类中的声明为public&#xff0c;外部可访问&#xff0c;然后外部访问的时候不能直接改&#xff09; 下面这段代码是在 类的内部 访问事件 void ClearAllListeners() {MyEvent null; }event 修饰的委托字段 在类内部没…...

MATLAB数学建模之画图汇总

MATLAB是一种强大的数学软件&#xff0c;广泛应用于工程计算、控制设计、信号处理等领域。在数学建模中&#xff0c;MATLAB的绘图功能可以帮助我们直观地展示数据和模型结果。 1. 二维数据曲线图 1.1 绘制二维曲线的基本函数 plot函数用于绘制二维平面上的线性坐标曲线图&am…...

UML箭线图的理解和实践

在软件开发的世界里&#xff0c;UML&#xff08;统一建模语言&#xff09;作为一种标准化的建模语言&#xff0c;扮演着举足轻重的角色。UML类图更是软件开发设计和架构过程中的核心工具&#xff0c;它不仅能帮助开发者明确系统中的类及其关系&#xff0c;还能为后续的代码实现…...

最新AI问答创作运营系统(SparkAi系统),GPT-4.0/GPT-4o多模态模型+联网搜索提问+问答分析+AI绘画+管理后台系统

目录 一、人工智能 系统介绍文档 二、功能模块介绍 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI大模型 多模态模型文档分析 多模态识图理解能力 联网搜索回复总结 3.2 AI智能体应用 3.2.1 AI智能体/GPTs商店 3.2.2 AI智能体/GPTs工作台 3.2.3 自…...

C#中的多态

多态&#xff08;Polymorphism&#xff09;是面向对象编程中的核心概念之一&#xff0c;它允许对象在不同的上下文中表现出不同的行为。简单来说&#xff0c;多态使得相同的方法调用可以表现出不同的行为&#xff0c;这使得代码更加灵活、可扩展和可维护。 在 C# 中&#xff0…...

【SQL】实战--组合两个表

题目描述 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主键&#xff08;具有唯一值的列&#xff09;…...