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

VLLM 格式化LLM输出

文章目录

    • 前言
    • guided_json
    • guided_choice
    • guided_regex
    • guided_grammar
    • 总结

前言

vllm OpenAI Compatible Server 提供了格式化LLM输出的能力,默认的格式化解码后端应该是outlines

目前提供了四个参数来控制格式化输出,分别是:

guided_json: 按照给定的json schema输出
guided_choice: 从给定的选项里面选一个
guided_regex: 按照给定的正则表达式输出
guided_grammar: 按照给定的 扩展巴科斯范式(EBNF)格式 的上下文无关语法输出(我也不懂)

下面我们直接看看如何使用这四个参数,控制LLM的输出

import json
from openai import OpenAIdef chatgpt_base(system_prompt, user_prompt):api_key = "empty"base_url = "http://localhost:8000/v1"model = "Qwen1.5-14B-Chat-AWQ"client = OpenAI(api_key=api_key, base_url=base_url)completion = client.chat.completions.create(model=model,temperature=0,messages=[{"role": "system", "content": system_prompt},{"role": "user", "content": user_prompt},],)return completion.choices[0].message.content

guided_json

from pydantic import BaseModelclass Topic(BaseModel):问题: str答案: strdef chatgpt_guide_json(system_prompt, user_prompt):api_key = "empty"base_url = "http://localhost:8000/v1"model = "Qwen1.5-14B-Chat-AWQ"client = OpenAI(api_key=api_key, base_url=base_url)completion = client.chat.completions.create(model=model,temperature=0,messages=[{"role": "system", "content": system_prompt},{"role": "user", "content": user_prompt},],extra_body={"guided_json": Topic.model_json_schema()},)return completion.choices[0].message.contentsystem_prompt = "You are a helpful assistant."
user_prompt = """
请你生成一对和python相关的问题和答案
"""
response = chatgpt_base(system_prompt, user_prompt)
print("base response: ", response)
print("----" * 5)
guide_reponse = chatgpt_guide_json(system_prompt, user_prompt)
print("guide json reponse: ", guide_reponse)

输出:

base response:  问题:如何在Python中安装一个新的库?答案:在Python中,你可以使用pip工具来安装新的库。首先,你需要确保pip已安装。然后,打开命令行或终端,输入以下命令来安装所需的库:```pip install 库名```例如,如果你想安装requests库,你可以输入:```pip install requests```这将从Python Package Index (PyPI)下载并安装requests库及其依赖项。
--------------------
guide json reponse:  { "问题": "如何在Python中安装一个新的库?", "答案": "在Python中,你可以使用pip工具来安装新的库。例如,如果你想安装requests库,你可以在命令行中输入:\">> pip install requests\"。这将会从Python Package Index (PyPI) 下载并安装requests库。" }

可以看到,即使我们不显式地在prompt中告诉LLM要返回JSON格式,我们拿到的响应竟还是JSON,并且符合我们给的格式。

我们还能给每个字段添加解释,如:

class Topic(BaseModel):问题: str = Field(description="问题")答案: str = Field(description="答案")

guided_choice

def chatgpt_guide_choice(system_prompt, user_prompt):api_key = "empty"base_url = "http://localhost:8000/v1"model = "Qwen1.5-14B-Chat-AWQ"client = OpenAI(api_key=api_key, base_url=base_url)completion = client.chat.completions.create(model=model,temperature=0,messages=[{"role": "system", "content": system_prompt},{"role": "user", "content": user_prompt},],extra_body={"guided_choice": ["Positive", "Negative"]},)return completion.choices[0].message.contentsystem_prompt = "You are a helpful assistant."
user_prompt = """
Is the following review positive or negative?Review: 今天天气真不错,好想出去吃大餐
"""
response = chatgpt_base(system_prompt, user_prompt)
print("base response: ", response)
print("----" * 5)
guide_reponse = chatgpt_guide_choice(system_prompt, user_prompt)
print("guide choice reponse: ", guide_reponse)

输出:

base response:  这条评论并不是在评价某个产品或服务,而是在描述天气并表达了想出去吃大餐的愿望。不过,如果要从情感色彩来看,这条评论是积极的,因为它提到了好天气,并且表达了积极的愿望。
--------------------
guide choice reponse:  Positive

注意:guide_choice 无法输出选项中的多个答案,即无法处理多标签任务

guided_regex

def chatgpt_guide_regex(system_prompt, user_prompt):api_key = "empty"base_url = "http://localhost:8000/v1"model = "Qwen1.5-14B-Chat-AWQ"client = OpenAI(api_key=api_key, base_url=base_url)completion = client.chat.completions.create(model=model,temperature=0,messages=[{"role": "system", "content": system_prompt},{"role": "user", "content": user_prompt},],extra_body={"guided_regex": r"((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)"},)return completion.choices[0].message.contentsystem_prompt = "You are a helpful assistant."
user_prompt = """
What is the IP address of the Google DNS servers? 
"""
response = chatgpt_base(system_prompt, user_prompt)
print("base response: ", response)
print("----" * 5)
guide_reponse = chatgpt_guide_regex(system_prompt, user_prompt)
print("guide regex reponse: ", guide_reponse)

输出:

base response:  The IP addresses for the Google Public DNS servers are as follows:- 8.8.8.8 (primary server)
- 8.8.4.4 (secondary server)These can be used as your DNS servers to take advantage of Google's DNS service.
--------------------
guide regex reponse:  1.8.8.88

从这个输出结果来看,使用格式化输出似乎会导致LLM效果下降?

guided_grammar

arithmetic_grammar = r"""?start: expression?expression: term (("+" | "-") term)*?term: factor (("*" | "/") factor)*?factor: NUMBER| "-" factor| "(" expression ")"%import common.NUMBER
"""def chatgpt_guide_grammar(system_prompt, user_prompt):api_key = "empty"base_url = "http://localhost:8000/v1"model = "Qwen1.5-14B-Chat-AWQ"client = OpenAI(api_key=api_key, base_url=base_url)completion = client.chat.completions.create(model=model,temperature=0,messages=[{"role": "system", "content": system_prompt},{"role": "user", "content": user_prompt},],extra_body={"guided_grammar": arithmetic_grammar},)return completion.choices[0].message.contentsystem_prompt = "You are a helpful assistant."
user_prompt = """
Alice had 4 apples and Bob ate 2. Write an expression for Alice's apples:
"""
response = chatgpt_base(system_prompt, user_prompt)
print("base response: ", response)
print("----" * 5)
guide_reponse = chatgpt_guide_grammar(system_prompt, user_prompt)
print("guide grammar reponse: ", guide_reponse)

输出:

base response:  If Alice originally had 4 apples and Bob ate 2 of them, the expression for the number of apples Alice has left would be:\[ 4 - 2 \]So, Alice now has:\[ 4 - 2 = 2 \]Therefore, the expression for the number of apples Alice has left is \( 4 - 2 \).
--------------------
guide grammar reponse: (4-2)

这个咱也不懂,就不乱讲了,各位同学可以自行探索

感兴趣的同学可以看看:EBNF

总结

输出JSON还可以通过 response_format 控制,具体介绍可以查看vllm官方文档

这几个例子,也可以通过 outlines 仓库学习具体的用法

相关文章:

VLLM 格式化LLM输出

文章目录 前言guided_jsonguided_choiceguided_regexguided_grammar总结 前言 vllm OpenAI Compatible Server 提供了格式化LLM输出的能力,默认的格式化解码后端应该是outlines 目前提供了四个参数来控制格式化输出,分别是: guided_json: …...

Java篇——Java通过JNA调用c++库时传参含有结构体时数据错乱的解决办法

Java通过JNA调用c库时传参含有结构体时,只继承Structure是不够的,还需要实现Structure.ByValue,或者强制指定结构体字节对齐。示例如下: 1、c库中的结构体定义: 2、java中结构体定义: 3、java中调用 如果没…...

sql分类

SQL(Structured Query Language)是一种用于管理和操作关系数据库管理系统(RDBMS)的编程语言。SQL 可以分为几个主要类别,每个类别都有其特定的用途和功能。以下是 SQL 的主要分类: 1. 数据定义语言&#x…...

LayaBox1.8.4实现战争迷雾效果

实现思路: 和Unity实现思路一样,可看我写的下面的一篇文章 战争迷雾FogOfWar---Unity中实现-CSDN博客 根据碰撞点可以计算出需要透明的位置,怎样计算如下: 根据迷雾mesh的长宽和纵向横向的的像素数可以得出,每个小方…...

Python打包元数据困境:约束的重要性

在Python社区中,一项旨在建立新的通用锁文件标准的努力正在展开,这一努力主要在Python讨论论坛上进行。此倡议凸显了创建一个让所有人都满意的标准化方案的难度。不同Python打包工具对锁文件应有的形态和用途有着略微不同的理解。然而,在这些…...

第29天 MCU入门

目录 MCU介绍 MCU的组成与作用 电子产品项目开发流程 硬件开发流程 常用元器件初步了解 硬件原理图与PCB板 常见电源符号和名称 电阻 电阻的分类 贴片电阻的封装说明: 色环电阻的计算 贴片电阻阻值计算 上拉电阻与下拉电阻 电容 电容的读数 二极管 LED 灯电路 钳位作…...

三分钟快速掌握——Linux【vim】的使用及操作方法

一、vim的使用 vim是一个文本编辑器 非常小巧轻便 1.1如何进入vim编辑器 方法一: 首先使用touch 1.c 创建一个源文件 然后使用vim 1.c进入 方法二: 直接使用指令 vim 2.c 会直接创建一个2.c的源文件 退出时记得保存(使用wq或者x&am…...

安达发|制造业APS智能优化排产软件的四类制造模型解决方案

在制造业中,APS(高级计划和排程系统)智能优化排产软件的应用越来越广泛。它通过集成先进的算法和模型,帮助企业提高生产效率、降低成本并提升客户满意度。针对不同类型的生产需求,APS软件提供了四类制造模型解决方案&a…...

屏幕分辨率|尺寸|颜色深度指纹修改

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度,横屏竖屏信息。 二、window.screen c接口实现: 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …...

Mac安装及合规无限使用Beyond Compare

文章目录 Beyond CompareBeyond Compare简介Beyond Compare安装Beyond Compare到期后继续免费使用 Beyond Compare Beyond Compare简介 Beyond Compare 是一款由 Scooter Software 开发的文件和文件夹比较工具。它主要用于对比两个文件或文件夹之间的差异,并支持文…...

记录一次 k8s 节点内存不足的排查过程

背景:前端服务一直报404,查看k8s日志,没发现报错,但是发现pods多次重启。 排查过程: 查看pods日志,发现日志进不去。 kubectrl logs -f -n weave pod-name --tail 100查看pod describe kubectl describ…...

方差分析、相关分析、回归分析

第一章:方差分析 1.1 方差分析概述 作用: 找出关键影响因素,并进行对比分析,选择最佳组合方案。影响因素: 控制因素(人为可控)和随机因素(人为难控)。控制变量的不同水平: 控制变量的不同取值…...

【JavaEE初阶 — 网络原理】初识网络原理

目录 1. 网络发展史 1.1 独立模式 1.2 网络互连 1.2.1 网络互联的背景 1.2.2 网络互联的定义 1.3 局域网LAN 1.4 广域网WAN 2. 网络通信基础 2.1 IP地址 2.2 端口号 2.3 认识协议 2.4 五元组 2.5 协议分层 2.5.1 分…...

算法的NPU终端移植:深入探讨与实践指南

目录 ​编辑 引言 算法选择 模型压缩 权重剪枝 量化 知识蒸馏 硬件适配 指令集适配 内存管理 并行计算 性能测试 速度测试 精度测试 功耗测试 案例分析 图像识别算法的NPU移植案例 结论 引言 在人工智能技术的浪潮中,神经网络处理器(…...

Lombok :简化 Java 编程的得力工具

在 Java 开发过程中,常常需要编写大量的样板代码,例如构造函数、Getter 和 Setter 方法、equals 和 hashCode 方法等。这些代码虽然逻辑相对固定,但编写起来却较为繁琐且容易出错,并且会使代码显得冗长。Lombok 应运而生&#xff…...

C语言实例_14之求俩数的最大公约数和最小公倍数

1.最大公约数和最小公倍数概述 最大公约数(Greatest Common Divisor,简称GCD): 也称为最大公因数,是指两个或多个整数共有约数中最大的一个。例如,对于整数12和18,它们的约数分别为&#xff1…...

wxWidgets-ImageView

wxWidgets实现图片浏览、放大缩小、另存为新的图片格式等 #include "wx/wxprec.h"#ifndef WX_PRECOMP#include "wx/wx.h" #endif#include "wx/filename.h" #include "wx/zstream.h"#include "imageviewctrl.h"class MyFrame…...

什么是Axios,有什么特点

什么是 Axios? Axios 是一个基于 Promise 的 HTTP 客户端,可以用于浏览器和 Node.js 环境。它由 Matt Zabriskie 创建,旨在提供一个简单、灵活且功能强大的 HTTP 请求库。Axios 支持所有现代浏览器和 Node.js,可以用于发送 GET、…...

springboot331“有光”摄影分享网站系统pf(论文+源码)_kaic

毕 业 设 计(论 文) “有光”摄影分享网站设计与实现 摘 要 自互联网的发展至今,其基础理论与技术都已完善,并积极参与了整个社会各个领域。它容许信息根据媒体传播,并和信息可视化工具一起为大家提供优质的服务。对于…...

3D姿势和跟踪的人体行为识别

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月28日21点20分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…...

手机设置了卡2上网,卡1禁止上网,但是卡1还是会偷偷跑流量,这是什么情况???

双卡双待手机,卡2设置为默认上网卡,卡1却会偷偷跑流量,这就很迷。 双卡双待手机,不管是哪个牌子(网上有小米,华为,vivo出现这种情况,我的是华为mate20),都存在…...

基于单片机的温度控制系统设计

摘 要 当今社会不断发展,工业以及生活领域对温度控制系统的要求日益增加。以往的设计系统已经不能满足如今的社会需求,因此设计更加符合要求的温度控制系统是大势所趋。采用单片机进行温度控制系统的设计可以使温度的调节更简单、灵活,节约操…...

pjfun.top相册中上传图片获取github apiToken

1、登录github [登录](https://github.com/login) 没有账号就注册2、 点击头像,进入设置settings 3、进入Developer settings 4、点击Fine-grained tokens 再点击 Generate new token 5、填写相关基础信息 Token name(随意起名) Expiratio…...

S4 UPA of AA :新资产会计概览

通用并行会计(Universal Parallel Accounting)可以支持每个独立的分类账与其他模块集成,UPA主要是为了支持平行评估、多货币类型、财务合并、多准则财务报告的复杂业务需求 在ML层面UPA允许根据不同的分类账规则对物料进行评估,并…...

单片机学习笔记 11. 外部中断

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…...

C++中智能指针的使用及其原理 -- RAII,内存泄漏,shared_ptr,unique_ptr,weak_ptr

目录 1.智能指针的使用场景分析 2.RAII和智能指针的设计思路 3.C标准库智能指针的使用 4.智能指针的原理以及模拟实现 5.shared_ptr循环引用问题和weak_ptr 5.1shared_ptr循环引用问题 5.2weak_ptr的原理和部分接口 5.3weak_ptr的简单模拟实现 6. shared_ptr的线程安…...

DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解

目录 引言 伪彩色映射的概念 基本原理 查找表(Look-Up Table, LUT) 步骤 示例映射方案 实现伪彩色映射的C代码 代码详解 伪彩色处理效果展示 总结 扩展知识 LUT 的基本概念 LUT 在伪彩色映射中的应用 示例 引言 在医学影像处理中&#xff0c…...

注意http-proxy-middleware要解决跨域问题,想修改origin请求头不要设置changeOrigin=true

在使用http-proxy-middleware的时候,有一个配置是“changeOrigin”,通过名字来看这个字段是用来控制是否修改origin的,但是实际使用下来,你会发现,当设置为true的时候,header中的origin的值并不会修改&…...

SpringBoot宠物领养平台:设计与实现

摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于宠物领养…...

qt 的udp发送和接收

udp要在.pro中加入 QT network udp接收 //QUdpSocket *udp1; udp1 new QUdpSocket(this); udp1->bind(2024,QUdpSocket::ShareAddress); connect(udp1,SIGNAL(readyRead()),this,SLOT(ReadyOut())); void MainWindow::ReadyOut() { while(udp1->hasPend…...

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【五】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...

中科亿海微SoM模组——波控处理软硬一体解决方案

本文介绍的波控处理软硬一体解决方案主要是面向相控阵天线控制领域,波控处理通过控制不同天线组件的幅相来调整天线波束的方向和增益,实现高精度角度控制和高增益。本方案由波控处理板、波控处理控制软件算法和上位机软件共同构成。波控处理SoM模组原型样…...

vue页面跟数据不同步this.$set

“Vue页面跟数据同步this.$set”可能是指在某些情况下,需要确保数据的响应式特性,即当数据发生变化时,页面上的显示也能实时更新。 如果你遇到数据已经设置,但页面没有更新,可能是因为你没有正确使用 Vue 的响应式系统…...

黑马2024AI+JavaWeb开发入门Day02-JS-VUE飞书作业

视频地址&#xff1a;哔哩哔哩 讲义作业飞书地址&#xff1a;飞书 一、作业1 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&l…...

(0基础保姆教程)-JavaEE开课啦!--12课程(Spring MVC注解 + Vue2.0 + Mybatis)-实验10

一、常见的SpringMVC注解有哪些&#xff1f; 1.Controller&#xff1a;用于声明一个类为 Spring MVC 控制器。 2.RequestMapping&#xff1a;用于将 HTTP 请求映射到特定的处理方法上。可以指定请求类型&#xff08;GET、POST等&#xff09;和URL路径。 3.GetMapping&#xff…...

未成年人模式护航,保障安全健康上网

为保护未成年人的上网环境&#xff0c;预防未成年人沉迷网络&#xff0c;帮助未成年人培养积极健康的用网习惯&#xff0c;HarmonyOS SDK 提供未成年人模式功能&#xff0c;在华为设备上加强对面向未成年人的产品和服务的管理。 场景介绍&#xff08;应用跟随系统未成年人模式…...

【实体配置】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列 &#x1f…...

MySQL中Update在什么情况下行锁会升级成表锁

MySQL中Update在什么情况下行锁会升级成表锁 在MySQL中&#xff0c;特别是使用InnoDB存储引擎时&#xff0c;行锁&#xff08;row-level locking&#xff09;通常用于提高并发性能。然而&#xff0c;在某些特定情况下&#xff0c;行锁可能会升级为表锁&#xff08;table-level…...

应急响应靶机——easy溯源

载入虚拟机&#xff0c;开启虚拟机&#xff1a; &#xff08;账户密码&#xff1a;zgsfsys/zgsfsys&#xff09; 解题程序.exe是额外下载解压得到的&#xff1a; 1. 攻击者内网跳板机IP地址 2. 攻击者服务器地址 3. 存在漏洞的服务(提示:7个字符) 4. 攻击者留下的flag(格式…...

使用Compose Multiplatform开发跨平台的Android调试工具

背景 最近对CMP跨平台很感兴趣&#xff0c;为了练手&#xff0c;在移动端做了一个Android和IOS共享UI和逻辑代码的天气软件&#xff0c;简单适配了一下双端的深浅主题切换&#xff0c;网络状态监测&#xff0c;刷新调用振动器接口。 做了两年多车机Android开发&#xff0c;偶…...

LabVIEW实现TCP通信

目录 1、TCP通信原理 2、硬件环境部署 3、云端环境部署 4、TCP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 8、测试验证 本专栏以LabVIEW为开发平台&#xff0c;讲解物联网通信组网原理与开发方法&#xff0c;覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合…...

Realtek网卡MAC刷新工具PG8168.exe Version:2.34.0.4使用说明

本刷新工具虽然文件名叫PG8168.EXE&#xff0c;但不是只有RTL8168可用&#xff0c;是这一个系列的产品都可以使用。实验证明RTL8111也可以使用。 用法&#xff1a; PG8168 [/h][/?][/b][/c HexOffsetHexValue][/d NICNumber][/l][/r][/w][/v] [/# NICNumber] [/nodeidHexNOD…...

【maven】配置下载私有仓库的快照版本

1、setting.xml配置 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/SETTINGS/1.0.0https://maven.apache.org/xsd/settings-1.0.0.…...

基于pytorch使用仿真数据集来训练一个深度学习模型进行相位解包裹

使用 PyTorch 来训练一个深度学习模型进行相位解包裹是一种常见的方法。下面是一个详细的示例&#xff0c;展示如何生成仿真数据集并在 PyTorch 中训练模型。 1. 生成仿真数据集 首先&#xff0c;我们生成一些仿真数据集&#xff0c;包含多个包裹相位图和对应的解包裹相位图。…...

【排序算法】之快速排序篇

思想&#xff1a; 分而治之&#xff0c;通过选定某一个元素作为基准值&#xff0c;将序列分为两部分&#xff0c;左边的序列小于基准值&#xff0c;右边的序列大于基准值&#xff0c; 然后再分别将左序列和右序列进行递归排序&#xff0c;直至每部分有序。 性质&#xff1a;这…...

WebSocket

握手 1 客户端发起握手请求&#xff1a;客户端向服务器发送一个特殊的HTTP请求&#xff0c;其中包含一个Upgrade字段&#xff0c;表明客户端希望将该连接从HTTP协议升级为WebSocket协议。请求的关键部分包括&#xff1a; GET请求&#xff1a;客户端使用GET方法请求与WebSocket…...

适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;详解 定义 适配器模式是一种结构型设计模式&#xff0c;通过将一个类的接口转换为客户期望的另一个接口&#xff0c;使得原本接口不兼容的类可以一起工作。适配器模式又称“包装器&#xff08;Wrapper&#xff09;”。 适配…...

Jmeter最新详细安装及修改中文教程(附安装包)

目录 初识&#xff1a;Jmeter 一、下载&#xff1a;Jmeter 二、安装前必要的配置 1.桌面点击菜单栏搜索【cmd】&#xff0c;然后打开命令提示符 2.输入java -version命令 三、安装&#xff1a;Jmeter 1.首先在D盘创建【Jmeter】文件夹&#xff0c;把下载的【Jmeter】压缩…...

Java 语言的起源发展与基本概念(JDK,JRE,JVM)

Java语言的起源 源起 Java语言最初是由Sun Microsystems公司&#xff08;该公司于2009年被Oracle公司收购&#xff09;开发的一种编程语言。其创造者是詹姆斯高斯林&#xff08;James Gosling&#xff09;&#xff0c;他是一位加拿大计算机科学家。其前身名为Oak&#xff08;橡…...

利用dockerCompose一键部署前后端分离项目

1.Docker Compose介绍 2.将自己准备好的docker-compose.yml文件上传到宿主机 3.查看docker-compose.yml文件 宿主机的文件内容可参考&#xff1a; 项目部署-通过docker手动部署前后端分离项目&#xff08;全网超级详细 的教程&#xff09;-CSDN博客 修改宿主机的nginx.conf …...