【AI大模型】Langchain探秘之旅:深入Prompt世界,解锁多种PromptTemplate的实战奇技!

news2024/12/26 10:38:46

在这里插入图片描述


文章目录

  • 前言
  • 一、Langchain 概述
    • 1. 概述
    • 2. 应用场景
    • 3. 案例
  • 二、Prompt
    • 1.Prompt 介绍
    • 2.PromptTemplate
      • a.PromptTemplate 案例
        • 单个参数
        • 多个参数
        • 多个参数-结合字典解包
      • b.使用jinja2与f-string来实现提示词模板格式化
    • 3.ChatPromptTemplate
      • a.ChatPromptTemplate 介绍
      • b.ChatPromptTemplate 案例
    • 4.ChatMessagePromptTemplate
      • a.ChatMessagePromptTemplate 介绍
      • b.ChatMessagePromptTemplate 案例
    • 5.FewShotPromptTemplate
    • 6.StringPromptTemplate
      • a.StringPromptTemplate 介绍
      • b.StringPromptTemplate 案例
    • 7.PipelinePromptTemplate
      • 多步提示词
    • 8. 总结


前言

    在探索人工智能与自然语言处理领域时,“Prompt”是一个核心概念,尤其在 Langchain 中,它是连接人类与机器思维的桥梁,能解锁模型潜能。本篇博客将深入这一领域,首先揭开 Prompt 的神秘面纱,随后剖析Langchain中的几种重要PromptTemplate,包括基础而灵活的PromptTemplate、专为聊天设计的ChatPromptTemplate及其案例、能快速学习的FewShotPromptTemplate、简洁的String PromptTemplate及其示例,以及复杂任务中的组织协调者PipelinePromptTemplate
在这里插入图片描述


一、Langchain 概述

1. 概述

    LangChain 是一个综合性的开发框架,专为利用语言模型(LLM)构建应用程序而设计。它通过提供一套丰富的工具、组件和接口,极大地简化了开发流程。

LangChain框架核心特性:

  • 数据集成LangChain能够将语言模型与外部数据源无缝连接。
  • 自主交互:赋予语言模型与环境互动的能力,提升应用的自主性。

主要价值点:

  • 组件化架构:提供语言模型使用的抽象层,以及各层的多样化实现,组件设计为模块化且用户友好。
  • 即用型链结构:提供完成特定高级任务的结构化组件集合。

应用场景示例:

  • 个人助理
  • 文档问答系统
  • 聊天机器人
  • 数据表查询
  • API交互
  • 数据提取、评估与汇总

LangChain模型分类:

  • 大型语言模型 (LLM):作为应用的核心,接收并输出文本字符串。
  • 聊天模型 (Chat Model):结构化API支持,优化对话管理和上下文维护。
  • 文本嵌入模型 (Text Embedding Models):将文本转换为嵌入向量,适用于文档检索和相似性分析。

LangChain功能特点:

  • 模型与提示管理:简化提示管理、优化,并为LLM提供统一接口。
  • 链调用序列:提供链的标准接口,支持与多种工具集成,实现端到端的解决方案。
  • 数据增强:支持链与外部数据源交互,增强生成步骤的数据收集。
  • 智能代理 (Agents):提供代理的标准接口和多样化实现,以及完整的代理示例。
  • 内存管理:标准化内存接口,维护状态连续性,并提供内存使用示例。
  • 评估工具:提供评估生成模型的提示和链,帮助开发者有效评估模型性能。

LangChain主要组件:

  • 模型 (Models):集成并管理语言模型。
  • 提示词 (Prompts):设计和优化与模型交互的提示。
  • 代理 (Agents):实现LLM的决策和行动逻辑。
  • 链 (Chains):序列化LLM调用,构建复杂流程。
  • 索引 (Indexes):支持数据检索和访问。
  • 内存 (Memory):管理应用状态和历史信息。
  • 模式 (Schema):定义数据结构和交互模式。

在这里插入图片描述

2. 应用场景

  • 信息检索
    • LangChain可以根据用户的查询意图,通过记忆链中的语义信息,提供准确、全面的搜索结果。
    • 无论是文本、图片还是视频等多媒体数据,LangChain都能进行深度理解和检索。
  • 问答系统
    • LangChain可以根据用户的问题,从记忆链中抽取相关信息,并给出准确的答案。
    • 无论是常见问题还是专业领域的知识,LangChain都能提供高质量的回答。
  • 个性化推荐
    • LangChain可以根据用户的兴趣和偏好,从记忆链中推荐相关的内容。
    • 无论是新闻、音乐还是电影等,LangChain都能根据用户的历史行为和喜好进行精准推荐。
  • 机器翻译
    • LangChain可以利用记忆链中的语义信息,进行更加准确、自然的机器翻译。
    • 通过对源语言和目标语言的语义关联进行建模,LangChain可以提供更加流畅、准确的翻译结果。
  • 聊天机器人
    • LangChain可以用于构建聊天机器人,使其具备更丰富的交互能力和更准确的回答能力。
    • 通过与大型语言模型的结合,聊天机器人可以更加智能地理解用户意图,并提供相应的回复。
  • 生成式问答(GQA)和摘要
    • LangChain允许将语言模型与其他数据源连接在一起,实现数据感知,从而支持生成式问答和摘要等任务。
    • 这些任务通常需要处理大量的文本数据,LangChain的模块化设计和对LLM的通用接口实现可以极大地简化开发过程。
  • 结合大型语言模型、知识库和计算逻辑快速开发AI应用
    • LangChain通过其强大的框架和灵活的表达语言(LCEL),支持并行化、回退、批处理、流式传输和异步操作等功能。
    • 这使得开发人员能够结合大型语言模型、知识库和计算逻辑快速开发强大的AI应用。

3. 案例

安装:

pip install langchain
pip install langchain-community

示例代码:

# 1、导入大模型的类
from langchain_community.llms import Tongyi
# 实例化
llm = Tongyi()
# 调用通义千问
ret =  llm.invoke("你是谁?")
print(ret)

输出
在这里插入图片描述


二、Prompt

1.Prompt 介绍

    LangChain 中的 prompt 是一个关键概念,它指的是输入给大型语言模型(LLM)的文本指令或提示,用于引导模型生成特定的输出或执行特定的任务。在 LangChain 的框架中,prompt 的设计和使用对于构建高效、准确的链式应用至关重要。

LangChain 中 prompt 的应用场景和重要性:

  1. 任务定义:通过精心设计的 prompt,可以明确告诉 LLM 要执行什么任务。例如,对于问答系统,prompt 可能包含问题文本和指示模型生成答案的指令。
  2. 上下文提供:Prompt 可以包含必要的上下文信息,以帮助 LLM 理解当前任务的背景和上下文。这对于处理具有复杂依赖关系或需要跨多个步骤推理的任务尤为重要。
  3. 示例引导:通过提供示例 prompt(即少样本学习或零次学习中的例子),可以指导 LLM 如何生成符合要求的输出。这种方法特别适用于那些难以用明确规则定义的任务。
  4. 链式推理:在 LangChain 中,prompt 可以用于构建链式推理流程。通过设计一系列相互关联的 prompt,可以引导 LLM 逐步完成复杂的推理任务,如多步骤问题解答或对话生成。
  5. 安全和合规性:通过适当的 prompt 设计,可以确保 LLM 的输出符合特定的安全和合规性要求。例如,可以通过在 prompt 中包含适当的过滤器或指导原则来避免生成不适当或冒犯性的内容。
  6. 性能优化:Prompt 的设计也可以影响 LLM 的性能和效率。通过优化 prompt 的长度、结构和内容,可以提高 LLM 的响应速度和输出质量。

2.PromptTemplate

a.PromptTemplate 案例

实现流程:

  1. 导入prompt的类
  2. 导入通义大模型
  3. 定义一个模板
  4. 实例化模板类
  5. 提醒用户输入
  6. 生成prompt
  7. 实例化通义大模型
  8. 调用invoke进行提问
单个参数
# 1导入prompt的类
from langchain.prompts import PromptTemplate
# 2.导入通义大模型
from langchain_community.llms import Tongyi
# 3.定义一个模板
pp = "{county}的首都是哪里?"
# 4.实例化模板类
promptTemplate = PromptTemplate.from_template(pp)
# 5.输入
ins = input("请输入国家名:")
# 6.生成prompt
prompt = promptTemplate.format(county=ins)
print(prompt)

# 7.实例化通义大模型
tongyi = Tongyi()
# 8.调用invoke进行提问
ret = tongyi.invoke(prompt)
print(ret)

多个参数
# 导入prompt的类
from langchain.prompts import PromptTemplate
# 定义一个模板
pp = "{county}的首都是哪里?境内有多少{question}"
# 实例化模板类
promptTemplate = PromptTemplate.from_template(pp)
# 输入
country_name = input("请输入国家名:")
question_name = input("请输入问题名:")
# 生成prompt
prompt = promptTemplate.format(county=country_name, question=question_name)
print(prompt)

多个参数-结合字典解包
# 导入prompt的类
from langchain.prompts import PromptTemplate

# 定义 prompt 模板
template = "请用简明的语言介绍一下{topic}和{topic2}。"

# 创建 PromptTemplate 对象
prompt_template = PromptTemplate(
    input_variables=["topic","topic2"],
    template=template
)

# 定义输入变量
input_variables = {"topic": "人工智能","topic2": "深度学习"}

# 生成最终的 prompt
prompt = prompt_template.format(**input_variables)
print(prompt)

在 Python 中,** 运算符用于将字典解包(unpack)成关键字参数(keyword arguments)。它将字典中的键值对传递给函数或方法,使每个键值对变成单独的关键字参数。

b.使用jinja2与f-string来实现提示词模板格式化

安装:

  • pip install jinja2

模板格式化:

jinja2方式格式化

from langchain.prompts import PromptTemplate
from langchain_community.llms import Tongyi

pp = "{{county}}的首都是哪里?"
# 实例化模板类
promptTemplate = PromptTemplate.from_template(pp,template_format="jinja2")
p1 = promptTemplate.format(county="中国")
print(p1)

tongyi = Tongyi()
ret = tongyi.invoke(p1)
print(ret)

字符串方式格式化

from langchain.prompts import PromptTemplate
from langchain_community.llms import Tongyi

pp1 = "{county}的首都是哪里?"
# 实例化模板类
promptTemplate = PromptTemplate.from_template(pp1,template_format="f-string")
p2 = promptTemplate.format(county="中国")
print(p2)

tongyi = Tongyi()
ret = tongyi.invoke(p2)
print(ret)

3.ChatPromptTemplate

a.ChatPromptTemplate 介绍

    ChatPromptTemplate 是一个模板化的对话工具,它允许用户创建、设定对话内容和格式,并与他人进行分享和互动。通过使用ChatPromptTemplate,用户能够以一种简洁、清晰的方式组织和展示对话内容,从而提高沟通效率,减少信息混乱和误解的可能性。

功能:

  • 上下文理解ChatPromptTemplate的上下文功能有助于用户更好地理解对话的背景和情境,从而更好地参与和回应对话内容。
  • 模板创建:用户可以轻松创建对话模板,这些模板可以包含各种元素,如文字、图片、信息等,以适应不同的沟通需求。
  • 角色和参数:在ChatPromptTemplate中,聊天消息可以与内容和一个称为角色的额外参数相关联。例如,在OpenAI Chat Completions API中,聊天消息可以与AI助手、人类或系统角色相关联。

应用场景:

  • ChatPromptTemplate广泛应用于各种聊天软件和社交平台,特别是在需要高效、清晰沟通的场景中,如客服系统、在线教育、社交媒体等。

优势:

  • 提高沟通效率:通过预定义的模板和格式,用户可以更快地创建和发送对话内容。
  • 减少误解:清晰的模板和上下文功能有助于减少信息混乱和误解的可能性。
  • 可定制性:ChatPromptTemplate允许用户根据自己的需求创建和修改模板,以满足不同的沟通场景。

相比于PromptTemplate区别:

  • PromptTemplate:这是一种通用形式的模板,用于生成系统提示或信息模板。它可以应用于多种场景,如用户输入错误时的提示、系统操作成功时的提示、数据加载提示、信息确认提示以及活动推广提示等。它并不特定于对话或聊天场景。
  • ChatPromptTemplate:这是 PromptTemplate 在聊天领域的一个特殊表达。它专注于对话和聊天场景,帮助用户更好地组织和展示对话内容。ChatPromptTemplate的上下文功能使得用户能够更好地理解对话的背景和情境,从而更好地参与和回应对话内容。

b.ChatPromptTemplate 案例

# 导入通义大模型
from langchain_community.llms import Tongyi
# 导入模板类
from langchain.prompts import ChatPromptTemplate
from langchain.schema import SystemMessage,HumanMessage,AIMessage

sm = SystemMessage(content="你是一个起名大师")
hm = HumanMessage("我姓{firstname},现在有一个{sex}孩,帮我起几个有深意的名字")
msg = [str(sm),str(hm)]

# 实例化模板类
cpt = ChatPromptTemplate.from_messages(msg)
prompt = cpt.format_messages(firstname="猫",sex="男")
print(prompt)

# 实例化通义大模型
tongyi = Tongyi()
ret = tongyi.invoke(prompt)
print(ret)

4.ChatMessagePromptTemplate

a.ChatMessagePromptTemplate 介绍

    ChatMessagePromptTemplateLangChain框架中用于生成特定角色或自定义角色对话提示的一个模板。这个模板允许用户指定角色的名称,并基于提供的模板字符串生成相应的聊天消息提示。

作用:

  • ChatMessagePromptTemplate主要用于在对话模型(chat model)中,封装并生成具有特定角色或自定义角色的聊天消息提示。

使用方式:

  • 用户首先需要从langchain.prompts模块中导入ChatMessagePromptTemplate类。
  • 然后,用户可以定义一个包含占位符(如{subject})的模板字符串。
  • 使用ChatMessagePromptTemplate.from_template()方法,用户可以指定角色的名称和模板字符串来创建一个ChatMessagePromptTemplate对象。
  • 接着,用户可以通过调用该对象的format()方法,并传入相应的参数来替换模板字符串中的占位符,从而生成具体的聊天消息提示。

b.ChatMessagePromptTemplate 案例

# ChatMessagePromptTemplate  可以自定义角色
from langchain.prompts import ChatMessagePromptTemplate
from langchain_community.llms import Tongyi

pt = "{country}的首都是哪里?"

# 实例化
cmpt = ChatMessagePromptTemplate.from_template(template=pt,role="地理小能手")
prom = cmpt.format(country='中国')

# 实例化通义大模型
tongyi = Tongyi()
ret = tongyi.invoke(prom.content)
print(ret)

5.FewShotPromptTemplate

    小样本提示模板,思想是对少量示例进行“训练 train” - 我们称之为 few-shot learning - 并将这些示例在提示中提供给模型。 few-shot learning 在我们的模型需要帮助理解我们要求它做什么时非常有效。

from langchain.prompts import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
from langchain_community.llms import Tongyi

# 示例 / 样本
samples = [
  {
    "fruit_type": "玫瑰葡萄",
    "occasion": "爱情",
    "ad_copy": "A玫瑰,浪漫的象征,是你向心爱的人表达爱意的最佳选择。"
  },
  {
    "fruit_type": "金钻菠萝",
    "occasion": "庆祝",
    "ad_copy": "B金钻菠萝,庆祝的完美伴侣,为您的特别时刻增添甜蜜与奢华。"
  },
  {
    "fruit_type": "蜜瓜",
    "occasion": "休闲",
    "ad_copy": "C蜜瓜,休闲时光的甜蜜伴侣,让您的闲暇时光更加美好。"
  },
  {
    "fruit_type": "富士苹果",
    "occasion": "健康",
    "ad_copy": "D富士苹果,健康生活的选择,丰富您的营养,活力每一天。"
  }
]

# 定义一个模板
template = "水果类型:{fruit_type}\n场景:{occasion}\n广告文案:{ad_copy}\n"
#实例化模板类
prompt_sample = PromptTemplate(template=template,input_variables=["fruit_type","occasion","ad_copy"])

#实例化少量样本模板类
prompt = FewShotPromptTemplate(
    examples = samples,
    example_prompt = prompt_sample,
    suffix = "水果类型:{fruit_type}\n场景:{occasion}",
    input_variables = ["fruit_type","occasion"]
)

# 生成Prompt
p = prompt.format(fruit_type="榴莲",occasion="居家")
print(p)

# 实例化通义大模型
llm = Tongyi()
ret = llm.invoke(p)
print(ret)

6.StringPromptTemplate

a.StringPromptTemplate 介绍

    StringPromptTemplate 是一个类,它允许用户通过提供模板字符串和参数来生成自定义的Prompt。在LangChain中,Prompt是引导大语言模型(LLM)生成响应的关键输入。StringPromptTemplate提供了一种灵活且可重复的方式来创建这些Prompt。

特性:

  • 参数化:模板字符串可以包含占位符,这些占位符在生成Prompt时会被实际参数替换。
  • 灵活性:用户可以根据需要自定义模板字符串,以生成适应不同任务和场景的Prompt。
  • 易于使用:通过简单的API调用,用户可以快速地根据模板和参数生成所需的Prompt。

b.StringPromptTemplate 案例

# 引入自定义的Prompt模板
from langchain.prompts import StringPromptTemplate
from langchain_community.llms import Tongyi
# 代码解析器
import inspect

Prompt = ("假设你是一个非常擅长编程的AI,现在给你如下函数名称,你会按照如下格式,"
          "输出这段代码的名称、源代码、中文解释。\n函数名称: {function_name}\n"
          "返回类型:{function_type}\n源代码:\n{source_code}\n代码解释:\n")

# 自定义的函数
def helloWorld(abc):
    print("Hello World" + abc)

class CustmPrompt(StringPromptTemplate):
    def format(self, **kwargs) -> str:
        # 获得源代码
        code = inspect.getsource(kwargs["function_name"])
        # 生成提示词模板
        prompt = Prompt.format(
            function_name=kwargs["function_name"].__name__, function_type=kwargs["function_type"], source_code=code
        )
        return prompt


pp = CustmPrompt(input_variables=["function_name", "function_type"])
prop = pp.format(function_name=helloWorld, function_type="int")

tongyi = Tongyi()
ret = tongyi.invoke(prop)
print(ret)

7.PipelinePromptTemplate

多步提示词

  • Final prompt: 最终返回的提示词模板
  • Pipeline prompts:组成提示词管道的模板
#角色
你是一个擅长成语接龙的游戏玩家。

## 技能
### 技能1:进行成语接龙游戏
1.当对方说出一个成语后,你首先判断它是不是一个成语。如果不是则提示用户,要求用户重新输入;如果是成语,则需要根据该成语的最后一个字,说出一个新的成语。
2.可以使用同音字接龙。
3.你说的必须是“成语”,不能是一般的词语
4.当用户或你无法找到下一个成语时,此游戏结束。用户可以输入一个新的成语,重新开始接龙

## 限制
只进行成语接龙游戏,拒绝回答其他话题
# 管道模板
from langchain.prompts.pipeline import PipelinePromptTemplate
from langchain.prompts.prompt import PromptTemplate


# Final Prompt由一系列变量构成
full_template = "{name}{skill}{limit}"
full_prompt = PromptTemplate.from_template(full_template)

# 第一层基本设计
name = """#角色
你是一个擅长{name}的游戏玩家。\n"""
name_prompt = PromptTemplate.from_template(name)

# 第二基本设计
skill = """## 技能
{skill}\n"""
skill_prompt = PromptTemplate.from_template(skill)

# 第三基本设计
limit = """## 限制
{limit}\n"""
limit_prompt = PromptTemplate.from_template(limit)

input_prompts = [
    ("name", name_prompt),
    ("skill", skill_prompt),
    ("limit", limit_prompt)
]
pipeline_prompt = PipelinePromptTemplate(final_prompt=full_prompt, pipeline_prompts=input_prompts)

ret1 = pipeline_prompt.format(
    name="石头剪刀布",
    skill="""### 技能1:进行石头剪刀布游戏
1.当对方说出一个石头剪刀布后,你首先判断它是不是一个石头剪刀布。如果不是则提示用户,要求用户重新输入;如果是剪刀,则需要根据该剪刀的最后一个字,说出一个新的剪刀。
2.你可以使用石头剪刀布接龙。
3.你说的必须是“剪刀”,不能是一般的词语""",
limit="只进行石头剪刀布游戏,拒绝回答其他话题")
print(ret1)


ret2 = pipeline_prompt.format(
    name="成语接龙",
    skill="""### 技能1:进行成语接龙游戏
1.当对方说出一个成语后,你首先判断它是不是一个成语。如果不是则提示用户,要求用户重新输入;如果是成语,则需要根据该成语的最后一个字,说出一个新的成语。
2.可以使用同音字接龙。
3.你说的必须是“成语”,不能是一般的词语
4.当用户或你无法找到下一个成语时,此游戏结束。用户可以输入一个新的成语,重新开始接龙""",
limit="只进行成语接龙游戏,拒绝回答其他话题")
print(ret2)

8. 总结

    langchain 是一个自然语言处理库,提供了多种模板类来帮助用户构建和格式化提示(prompts)。这些模板类之间的关系如下:

  1. PromptTemplate:这是所有模板类的基类,它定义了基本的模板功能。其他模板类都继承自这个基类。
  2. ChatPromptTemplate:这是一个特定于聊天场景的模板类,用于生成聊天机器人的提示。它继承了 PromptTemplate 类。
  3. ChatMessagePromptTemplate:这个模板类专门用于生成聊天消息的提示。它也继承自 PromptTemplate 类。
  4. StringPromptTemplate:这是一个通用的字符串模板类,用于生成简单的文本提示。它同样继承自 PromptTemplate 类。
  5. PipelinePromptTemplate:这个模板类用于在管道中生成提示。它可以包含多个子模板,每个子模板负责生成管道中的一个步骤的提示。它也继承自 PromptTemplate 类。

在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1988065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年8月一区SCI-海市蜃楼优化算法Fata morgana algorithm-附Matlab免费代码

引言 本期介绍了一种基于地球物理的高效优化方法名为海市蜃楼优化算法Fata morgana algorithm,FATA的元启发式算法。通过模拟海市蜃楼的形成过程,FATA分别设计了海市蜃楼滤光原理(MLF)和光传播策略(LPS)。该成果于2024年8月最新上线在JCR 1区&#xff0…

C#重要知识归纳总结

C#教程 C# 结构体(Struct) | 菜鸟教程C# 结构体(Struct) 在 C# 中,结构体(struct)是一种值类型(value type),用于组织和存储相关数据。 在 C# 中&#xff0c…

学习c语言第二十二天(c语言文件操作)

1. 为什么使用文件? 我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了&…

工地人员定位系统的功能和作用

工地人员定位系统是一种基于实时定位技术的管理系统,旨在为施工单位提供安全、高效的管理服务。该系统可以对工人进行实时监控与管理,极大地提高了工地施工安全性和工作效率,降低了工伤事故频率。通过使用该系统,施工单位能够实时…

解决mqtt在线或离线监听问题的多种方法

目录 前言 优缺点: 1.创建 DeviceMqttCallBacked类,实现 MqttCallbackExtended 接口,添加带cleintId参数的构造方法。 2. 在Mqtt连接成功之后,设置回调类。 3.执行上述代码,查看emqx界面 4.从emqx上踢除设备 5…

html+css 实现hover酷炫发光按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

“5G+Windows”推动全场景数字化升级:美格智能5G智能模组SRM930成功运行Windows 11系统

操作系统作为连接用户与数字世界的桥梁,在数字化迅速发展的时代扮演着至关重要的角色,智能设备与操作系统的协同工作,成为推动现代生活和商业效率的关键力量。其中,Windows系统以其广泛的应用基础和强大的兼容性成为全球最广泛使用…

服务器启动jar包的时候报”no main manifest attribute“异常(快捷解决)

所以,哥们,又出现问题咯.没事,我也出现了,哈哈哈哈哈,csdn感觉太麻烦了,所以搞了一篇这个. 没得事,往下看,包解决的. 希望可以帮助到各位,感谢阅览! 小手点个赞,作者会乐烂哈哈哈哈哈哈😆😆😆&#x1f606…

Linux中多线程压缩软件 | Mingz

原文链接:Linux中多线程压缩软件 本期教程 软件网址: https://github.com/hewm2008/MingZ安装: git clone https://github.com/hewm2008/MingZ.git cd MingZ make cd bin ./mingz -h使用源码安装: 若是你的git无法使用安装&am…

【IEEE出版 | 高校主办】第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024)

第三届人工智能、物联网和云计算技术国际会议(AIoTC 2024) 2024 3rd International Conference on Artificial Intelligence, Internet of Things and Cloud Computing Technology 2024年9月13-15日 | 中国武汉 重要信息 大会官网:www.ic…

Jboss 漏洞

一.CVE-2015-7501 访问/invoker/JMXInvokerServlet 开启下载存在漏洞 二.CVE-2017-7504 三CVE-2017-12149 启动vulhub环境,访问/invoker/readonly出现如下界面,说明存在漏洞 使用工具连接 四.Administration Console弱⼝令 访问/admin-console/login…

高职物联网智慧农业实训室建设方案

一、项目概述 随着物联网技术的迅猛发展及其在农业领域的广泛应用,智慧农业已经成为推动农业现代化的关键力量。近年来,国家高度重视物联网技术在农业领域的应用与发展,出台了一系列相关政策支持智慧农业建设。如《数字乡村发展战略纲要》明…

Dubbo框架实现RPC远程调用

项目背景介绍 这个技术我是直接在项目中运用并且学习的,所以我写笔记最优先的角度就是从项目背景出发 继上一次API网关完成了这个实现用户调用一次接口之后让接口次数增多的操作之后,又迎来了新的问题。 就是我们在调用接口的时候需要对用户进行校验&…

苍穹外卖day12(day15)---数据统计——Excel报表(项目完结)

工作台 接口设计 新建admin/WorkSpaceController /*** 工作台*/ RestController RequestMapping("/admin/workspace") Slf4j Api(tags "工作台相关接口") public class WorkSpaceController {Autowiredprivate WorkspaceService workspaceService;/*** 工…

★WIN10计算器程序员版的使用说明(详细)

主界面 拉动边框的角: 1.进制转换 HEX(hexadecimal):显示十六进制,DEC(decimal):显示十进制,OCT(octonary):显示八进制,BIN(binary):显示二进制 例如: 选中HEX 0~9,A…

Genymotion adb shell

Genymotion 账户是 qq邮箱 参考 Ubuntu 20.04 安装 Android 模拟器 Genymotion https://www.zzzmh.cn/post/553cd96d4e47490a90b3302a76a93c0d Genymotion adb shell adb shell C:\Program Files\Genymobile\Genymotion\tools>adb shell lsusb Bus 001 Device 001: ID …

【Bug分析】Keil报错:error: #18:expected a “)“问题解决

【Bug分析】Keil报错:error: #18:expected a “)”问题解决 前言bug查找bug解决方法小结 前言 keil编译时出现一个问题,缺少一个右括号。然后仔细查看代码,并没有括号缺失。 如下,代码括号正常。 bug查找 站内文章…

多机部署, 负载均衡-LoadBalance

目录 1.负载均衡介绍 1.1问题描述 1.2什么是负载均衡 1.3负载均衡的一些实现 服务端负载均衡 客户端负载均衡 2.Spring Cloud LoadBalancer 2.1快速上手实现负载均衡 2.2负载均衡策略 自定义负载均衡策略 3.服务部署(Linux) 3.1服务构建打包…

企业发展与智能化改造:从传统到现代的转型之路

引言 在当今全球化和数字化快速发展的背景下,企业面临着前所未有的竞争压力和市场变化。传统的商业模式已难以满足不断变化的市场需求和客户期望,迫使企业探索新的增长路径和创新方式。在这种情况下,智能化改造成为了企业发展的关键战略之一。…

springboot“云茶”新零售系统-计算机毕业设计源码25947

摘 要 科技的发展、企业的改革和管理技术的提高,中国很多中小型企业面临库存管理的时效性、准确性等难题。以前在网站上,企业的信誉难以认证、网络法律法规不健全、物流不发达等一系列的原因,限制了网上交易发展的步伐,进入21世纪…