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

【智能时代的创新工具】LangChain快速入门指南:轻松掌握语言模型的集成与运用

一、LangChain:连接语言模型与现实世界的桥梁

在这里插入图片描述

1.1 LangChain的定义与重要性

LangChain是一个开源的Python库,它旨在为开发人员提供一种简便的方式来集成和运用语言模型。它不仅仅是一个简单的API调用工具,而是一个具有丰富功能的框架,可以帮助开发者构建各种基于语言模型的应用,如对话系统、文本生成、问答等。

LangChain的重要性在于,它使得语言模型的应用变得更加容易和高效。通过LangChain,开发者可以轻松地管理和维护多个语言模型,编写自定义的提示和链,以及处理模型的输入和输出。这大大降低了开发门槛,使得更多的人可以参与到语言模型的研究和应用中来。

1.2 LangChain在人工智能领域的应用

LangChain在人工智能领域的应用非常广泛。以下是一些常见的应用场景:

  • 对话系统:LangChain可以用来构建各种对话系统,如智能客服、聊天机器人等。通过自定义链和提示,可以使对话系统更加智能化和人性化。

  • 文本生成:LangChain支持各种文本生成任务,如文章生成、摘要生成等。通过调整模型的参数和链的结构,可以生成高质量且有深度的文本内容。

  • 问答系统:LangChain可以帮助构建高效的问答系统。通过自定义链和提示,可以使模型更好地理解用户的问题,并提供准确的答案。

  • 知识抽取:LangChain可以用于从长篇文章中提取出摘要,使得用户可以快速了解文章的主要内容。同时,还可以从文本中按照需求抽取出特定格式的数据。

  • 多模态任务:LangChain也支持多模态任务,如图像描述生成、视频字幕生成等。通过结合语言模型和其他类型的模型,可以使模型更好地理解和生成多模态内容。

以上只是LangChain应用的一部分,随着研究的深入和技术的发展,LangChain在人工智能领域的应用将会更加广泛。

二、LangChain的核心组件与功能

在这里插入图片描述

2.1 模型(Model)

LangChain 的核心组件之一是模型(Model),它是进行语言处理任务的主体。LangChain 支持多种语言模型,包括 GPT、GPT-2、GPT-3、BERT 等,开发者可以根据自己的需求选择合适的模型。

在 LangChain 中,模型通常被封装在一个模型包装器(Model Wrapper)中,以提供统一的接口进行调用。模型包装器负责初始化模型、加载模型权重、处理模型输入和输出等。

以下是一个使用 LangChain 加载 GPT-2 模型的简单示例:

from langchain import ModelWrapper# 创建 GPT-2 模型包装器实例
model_wrapper = ModelWrapper.from_pretrained("gpt2")# 使用模型包装器进行推理
input_text = "Once upon a time"
output = model_wrapper.predict(input_text)
print(output)

在这个示例中,我们首先从 langchain 库中导入 ModelWrapper 类。然后,我们使用 from_pretrained 方法创建了一个 GPT-2 模型包装器实例。接下来,我们使用模型包装器的 predict 方法对一个输入文本进行推理,并打印输出结果。

2.2 提示管理(Prompt Management)

LangChain 的另一个核心组件是提示管理(Prompt Management),它负责处理与语言模型交互时的一些高级功能,如链的构建、提示的生成和管理等。

在 LangChain 中,提示管理主要通过提示模板(Prompt Templates)来实现。提示模板是一种特殊的文本结构,它可以将输入文本转换为模型可以理解的形式,并指导模型生成特定的输出。

以下是一个使用 LangChain 提示管理功能进行文本生成的示例:

from langchain import PromptTemplate
from langchain.model_wrappers import GPT2ModelWrapper# 创建一个提示模板实例
prompt_template = PromptTemplate.from_prompt_string("Translate the following English text to Chinese: {input_text}")# 创建 GPT-2 模型包装器实例
model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 使用提示模板和模型包装器进行文本生成
input_text = "Once upon a time"
output = model_wrapper.predict(input_text, prompt_template=prompt_template)
print(output)

在这个示例中,我们首先从 langchain 库中导入 PromptTemplate 类。然后,我们使用 from_prompt_string 方法创建了一个提示模板实例,该实例将输入文本转换为模型可以理解的形式,并指导模型生成特定的输出。接下来,我们创建了一个 GPT-2 模型包装器实例。最后,我们使用提示模板和模型包装器进行文本生成,并打印输出结果。

2.3 记忆(Memory)

LangChain 的另一个重要组件是记忆(Memory),它用于存储和管理模型在处理任务过程中所需的信息。记忆可以是一个简单的列表、字典或其他任何数据结构,只要它能满足你的应用需求。

记忆的主要作用是在模型处理任务时提供上下文信息。例如,在一个对话系统中,记忆可以用于存储用户的历史消息和系统的回复,以便模型在生成回复时能够参考这些历史信息。

以下是一个使用 LangChain 记忆功能进行对话生成的示例:

from langchain import Memory, ModelWrapper
from langchain.model_wrappers import GPT2ModelWrapper# 创建一个记忆实例
memory = Memory()# 创建 GPT-2 模型包装器实例
model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 使用记忆和模型包装器进行对话生成
def generate_response(input_text):memory.append(input_text)output = model_wrapper.predict(input_text, memory=memory)memory.append(output)return output# 模拟用户输入
user_input = "What's the weather like today?"
response = generate_response(user_input)
print(response)

在这个示例中,我们首先从 langchain 库中导入 Memory 类。然后,我们创建了一个 GPT-2 模型包装器实例。接下来,我们定义了一个 generate_response 函数,该函数使用记忆和模型包装器生成回复。在函数中,我们使用 memory.append 方法将用户输入和历史回复存储在记忆中,并使用模型包装器的 predict 方法生成新的回复。最后,我们将新生成的回复添加到记忆中,并返回给用户。

2.4 链(Chains)

LangChain 的链(Chains)是一种高级功能,它允许开发者构建复杂的序列任务,这些任务可以组合多个模型的输出,以执行更复杂的数据处理任务。链由一系列的步骤组成,每个步骤都可以是一个模型调用、一个提示模板的应用或对输出的进一步处理。

链在 LangChain 中的应用非常灵活,它可以用于各种场景,如自动化文本处理、数据清洗、知识问答等。通过链,开发者可以有效地整合多个模型的优势,实现模型的协同工作。

以下是一个使用 LangChain 链功能进行文本处理的示例:

from langchain import Chain, GPT2ModelWrapper, PromptTemplate# 创建一个链实例
chain = Chain()# 创建 GPT-2 模型包装器实例
gpt2_model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 创建一个提示模板实例
prompt_template = PromptTemplate.from_prompt_string("Translate the following English text to Chinese: {input_text}")# 将模型包装器和提示模板添加到链中
chain.add_component(gpt2_model_wrapper, prompt_template)# 使用链进行文本处理
def process_text(input_text):output = chain.predict(input_text)return output# 模拟用户输入
user_input = "Once upon a time"
processed_output = process_text(user_input)
print(processed_output)

在这个示例中,我们首先从 langchain 库中导入 Chain 类。然后,我们创建了一个 GPT-2 模型包装器实例和一个提示模板实例。接下来,我们将模型包装器和提示模板添加到链中。最后,我们定义了一个 process_text 函数,该函数使用链进行文本处理,并打印处理后的输出。

三、LangChain的模型I/O:实现与应用的关键

3.1 模型I/O的概念与作用

模型I/O(Model Input/Output)是LangChain中的一个关键概念,它涉及如何将外部数据转换为模型可以理解的格式,以及如何将模型的输出转换为有用的信息。在LangChain中,模型I/O是连接模型与实际应用的桥梁,它确保数据能够在正确的格式下被模型处理,并且输出能够被应用程序有效地使用。

3.2 模型包装器(Model Wrappers)

模型包装器(Model Wrappers)是LangChain中用于封装模型的组件,它们负责将模型与LangChain的其他组件连接起来。模型包装器可以执行多种任务,包括加载模型权重、处理模型输入和输出、管理模型的状态等。通过使用模型包装器,开发者可以方便地管理和复用不同的模型。

以下是一个使用 LangChain 模型包装器进行文本生成的示例:

from langchain import ModelWrapper
from langchain.model_wrappers import GPT2ModelWrapper# 创建 GPT-2 模型包装器实例
model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 使用模型包装器进行文本生成
input_text = "Once upon a time"
output = model_wrapper.predict(input_text)
print(output)

在这个示例中,我们首先从 langchain 库中导入 ModelWrapper 类和 GPT2ModelWrapper 类。然后,我们使用 from_pretrained 方法创建了一个 GPT-2 模型包装器实例。接下来,我们使用模型包装器的 predict 方法对一个输入文本进行推理,并打印输出结果。

3.3 提示词模板(Prompt Templates)

提示词模板(Prompt Templates)是LangChain中用于定义模型输入的格式化的文本模板。它们允许开发者为模型提供结构化的输入,从而控制模型生成的输出。提示词模板通常包含动态部分,这些部分在预测时会被实际的输入数据替换。

以下是一个使用 LangChain 提示词模板进行文本生成的示例:

from langchain import PromptTemplate# 创建一个提示词模板实例
prompt_template = PromptTemplate.from_prompt_string("Translate the following English text to Chinese: {input_text}")# 使用提示词模板进行文本生成
input_text = "Once upon a time"
output = prompt_template.predict(input_text)
print(output)

在这个示例中,我们首先从 langchain 库中导入 PromptTemplate 类。然后,我们使用 from_prompt_string 方法创建了一个提示词模板实例。接下来,我们使用提示词模板的 predict 方法对一个输入文本进行推理,并打印输出结果。

3.4 输出解释器(Output Parsers)

输出解释器(Output Parsers)是LangChain中用于解析模型输出的组件。它们负责将模型的输出转换为有用的格式,以便开发者可以进一步处理或展示这些输出。输出解释器可以根据需要定制,以支持不同的输出格式和处理逻辑。

以下是一个使用 LangChain 输出解释器进行文本解析的示例:

from langchain import OutputParser# 创建一个输出解释器实例
output_parser = OutputParser()# 使用输出解释器进行文本解析
input_text = "Once upon a time"
output = model_wrapper.predict(input_text)
parsed_output = output_parser.parse(output)
print(parsed_output)

在这个示例中,我们首先从 langchain 库中导入 OutputParser 类。然后,我们创建了一个输出解释器实例。接下来,我们使用模型包装器的 predict 方法生成输出,并使用输出解释器的 parse 方法对输出进行解析,最后打印解析后的结果。

四、如何开始使用LangChain:从入门到实践

4.1 安装与配置LangChain环境

在开始使用LangChain之前,你需要确保你的环境中已经安装了必要的Python库。LangChain的安装过程非常简单,你可以通过pip进行安装:

pip install langchain

此外,LangChain还需要一个预训练的语言模型。你可以从Hugging Face的Transformers库中选择一个合适的模型进行安装:

pip install transformers

安装完成后,你可以通过以下方式加载一个预训练的GPT-2模型:

from langchain import ModelWrapper
from langchain.model_wrappers import GPT2ModelWrapper# 加载GPT-2模型
model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")

4.2 创建第一个LangChain应用程序

创建一个LangChain应用程序的基本步骤包括定义输入、使用模型包装器进行预测,并处理输出。以下是一个简单的文本生成的例子:

from langchain import Chain, GPT2ModelWrapper, PromptTemplate# 创建一个链实例
chain = Chain()# 创建 GPT-2 模型包装器实例
gpt2_model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 创建一个提示词模板实例
prompt_template = PromptTemplate.from_prompt_string("Translate the following English text to Chinese: {input_text}")# 将模型包装器和提示词模板添加到链中
chain.add_component(gpt2_model_wrapper, prompt_template)# 使用链进行文本生成
def generate_translation(input_text):return chain.predict(input_text)# 模拟用户输入
user_input = "Once upon a time"
translated_output = generate_translation(user_input)
print(translated_output)

在这个例子中,我们首先创建了一个链实例,然后加载了一个GPT-2模型包装器和一个提示词模板。接着,我们将它们添加到链中,并定义了一个函数来生成翻译。最后,我们调用这个函数并打印输出结果。

4.3 调试与优化LangChain应用

在开发过程中,调试是确保你的应用程序按预期工作的重要步骤。LangChain提供了一些工具来帮助你调试应用程序,如检查模型输出和链的执行过程。

以下是一个使用LangChain进行调试的例子:

from langchain import Chain, GPT2ModelWrapper, PromptTemplate, OutputParser# 创建一个链实例
chain = Chain()# 创建 GPT-2 模型包装器实例
gpt2_model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 创建一个提示词模板实例
prompt_template = PromptTemplate.from_prompt_string("Translate the following English text to Chinese: {input_text}")# 创建一个输出解释器实例
output_parser = OutputParser()# 将模型包装器、提示词模板和输出解释器添加到链中
chain.add_component(gpt2_model_wrapper, prompt_template)
chain.add_component(output_parser)# 使用链进行文本生成
def generate_translation(input_text):return chain.predict(input_text)# 模拟用户输入
user_input = "Once upon a time"
translated_output = generate_translation(user_input)
print(translated_output)

在这个例子中,我们不仅添加了一个输出解释器,还打印了模型的中间输出,以便我们可以在调试过程中查看链的执行过程。

五、LangChain的实际应用案例解析

5.1 从对话机器人到知识管理系统:LangChain的应用领域

LangChain是一个强大的语言处理工具,可以应用于多种场景,如对话机器人、知识管理系统、文本生成、文本分类等。以下是一些常见的应用领域:

  1. 对话机器人:使用LangChain构建智能对话机器人,可以实现自然语言理解和生成,提供用户友好的交互体验。
  2. 知识管理系统:通过LangChain对文本数据进行处理和分析,可以构建智能的知识管理系统,帮助用户快速获取相关信息。
  3. 文本生成:利用LangChain生成高质量的文本内容,如新闻报道、文章摘要、产品描述等。
  4. 文本分类:使用LangChain对文本进行分类,如垃圾邮件检测、情感分析、主题分类等。
  5. 文本摘要:通过LangChain生成文本摘要,帮助用户快速了解长篇文本的主要内容。

5.2 实际案例:利用LangChain构建智能客服系统

智能客服系统是一种使用自然语言处理技术来与用户进行交互的系统。以下是一个使用LangChain构建智能客服系统的步骤:

  1. 数据准备:收集大量的客服对话数据,包括用户的问题和客服的回复。
  2. 模型训练:使用收集到的数据对LangChain进行训练,以学习如何处理自然语言。
  3. 构建链:使用训练好的模型构建一个链,该链包括输入解析、模型预测和输出解释等步骤。
  4. 系统部署:将构建好的链部署到服务器上,以便与用户进行交互。
  5. 实时交互:用户通过文本输入提出问题,系统会根据链的执行结果生成回复。

以下是一个简单的智能客服系统的代码示例:

from langchain import Chain, GPT2ModelWrapper, PromptTemplate, OutputParser# 创建一个链实例
chain = Chain()# 创建 GPT-2 模型包装器实例
gpt2_model_wrapper = GPT2ModelWrapper.from_pretrained("gpt2")# 创建一个提示词模板实例
prompt_template = PromptTemplate.from_prompt_string("User: {input_text}, Bot: {generate_response}")# 创建一个输出解释器实例
output_parser = OutputParser()# 将模型包装器、提示词模板和输出解释器添加到链中
chain.add_component(gpt2_model_wrapper, prompt_template)
chain.add_component(output_parser)# 用户输入
user_input = "How can I reset my password?"# 使用链进行预测
response = chain.predict(user_input)# 打印回复
print(response)

在这个例子中,我们首先创建了一个链实例,然后加载了一个GPT-2模型包装器和一个提示词模板。接着,我们将它们添加到链中,并定义了一个函数来生成回复。最后,我们调用这个函数并打印输出结果。

六、LangChain的未来与发展趋势

在这里插入图片描述

6.1 LangChain在人工智能技术中的地位与作用

LangChain作为一款基于语言模型的集成工具,在人工智能领域中占据着重要的地位。它不仅能够提高语言处理任务的效率和准确性,还能够帮助开发者快速构建和部署复杂的语言处理应用。

在自然语言处理(NLP)领域,LangChain提供了一个强大的平台,使得开发者可以轻松地集成各种语言模型,实现从基础的语言理解到高级的语言生成等任务。同时,LangChain还支持多种语言模型,如GPT-2、BERT等,使得开发者可以根据不同的需求选择合适的模型。

此外,LangChain还具有高度的可扩展性和灵活性,使得开发者可以轻松地添加新的组件和功能,以满足不断变化的应用需求。例如,LangChain支持链的构建,使得开发者可以组合多个模型的输出,以执行更复杂的数据处理任务。

6.2 LangChain的发展前景与挑战

随着人工智能技术的不断发展和应用的不断扩展,LangChain的发展前景非常广阔。未来,LangChain可能会在以下几个方面进行发展和改进:

  1. 模型支持:随着新的语言模型的出现,LangChain可能会不断增加对更多模型的支持,以满足开发者的需求。
  2. 组件扩展:LangChain可能会进一步扩展其组件库,以支持更丰富的功能和应用场景。
  3. 链的优化:LangChain可能会不断优化链的构建和执行过程,以提高效率和准确性。
  4. 定制化:LangChain可能会提供更多的定制化选项,以满足不同应用场景的需求。

然而,LangChain的发展也面临着一些挑战,如模型的训练和部署成本、模型的解释性和可解释性、模型的偏见和歧视等。为了解决这些问题,LangChain需要不断改进其技术和算法,以提高模型的效率和准确性,同时还需要关注模型的伦理和社会影响。

七、总结

7.1 LangChain带来的机遇与变革

随着人工智能技术的飞速发展,语言模型在自然语言处理、对话系统、文本生成等多个领域中发挥着越来越重要的作用。LangChain作为一种创新的集成工具,为开发者提供了一个强大的平台,使得语言模型的应用变得更加便捷和高效。

LangChain的核心优势在于其灵活性和可扩展性,它不仅支持多种语言模型,还支持链的构建和自定义组件的添加。这意味着开发者可以根据自己的需求,轻松地将不同的模型和功能组合在一起,以实现更复杂和高级的应用场景。

此外,LangChain还提供了记忆和输出解释器等高级功能,使得模型可以更好地处理上下文信息,并将其转换为有用的输出。这为开发者提供了更多的灵活性和创造力,使得他们可以构建更加智能和人性化的应用。

7.2 面向未来的LangChain展望

随着人工智能技术的不断进步,LangChain的未来发展前景非常广阔。LangChain将继续在语言模型的集成和应用方面发挥重要作用,帮助开发者实现更高效和智能的语言处理任务。

在未来,LangChain可能会进一步扩展其功能和组件,以支持更多的语言模型和应用场景。此外,LangChain还可能会继续优化其算法和模型,以提高效率和准确性。

随着人工智能技术的普及和应用的不断扩展,LangChain也将成为更多开发者和企业的首选工具。它将为语言处理领域带来更多的机遇和变革,帮助开发者构建更加智能和人性化的应用。

总结起来,LangChain作为一种创新的集成工具,为语言模型的应用提供了强大的支持。它不仅提高了语言处理任务的效率和准确性,还提供了更多的灵活性和创造力。面向未来,LangChain将继续发挥重要作用,为语言处理领域带来更多的机遇和变革。

相关文章:

【智能时代的创新工具】LangChain快速入门指南:轻松掌握语言模型的集成与运用

一、LangChain:连接语言模型与现实世界的桥梁 1.1 LangChain的定义与重要性 LangChain是一个开源的Python库,它旨在为开发人员提供一种简便的方式来集成和运用语言模型。它不仅仅是一个简单的API调用工具,而是一个具有丰富功能的框架&#x…...

文献阅读:细胞分辨率全脑图谱的交互式框架

文献介绍 文献题目: An interactive framework for whole-brain maps at cellular resolution 研究团队: Daniel Frth(瑞典卡罗林斯卡学院)、Konstantinos Meletis(瑞典卡罗林斯卡学院) 发表时间&#xff…...

YAML基础语言深度解析

引言 YAML(YAML Aint Markup Language,即YAML不是一种标记语言)是一种直观、易于阅读的数据序列化格式,常用于配置文件、数据交换和程序间的通信。其设计目标是易于人类阅读和编写,同时也便于机器解析和生成。在本文中…...

xcode使用

1. 界面 1.1. Build Settings,Build Phases和Build Rules三个设置项 Build Settings(编译设置): 每个选项由标题(Title)和定义(Definition)组成。这里主要定义了Xcode在编译项目时的一些具体配置 Build Phases(编译资源):用于指定编译过程中项目所链接的原文件,依赖对象,库…...

OV2640引脚的定义(OV2640 FPC模组规格书(接口线序))

OV2640是一款由Omni Vision公司生产的1/4寸CMOS UXGA(1632x1222)图像传感器。这款传感器以其小巧的体积、低工作电压和强大的功能而著称,它集成了单片UXGA摄像头和影像处理器,能够通过SCCB总线控制输出各种分辨率的8/10位影像数据…...

CTFSHOW 萌新 web10 解题思路和方法(passthru执行命令)

点击题目链接,分析页面代码。发现代码中过滤了system、exec 函数,这意味着我们不能通过system(cmd命令)、exec(cmd命令)的方式运行命令。 在命令执行中,常用的命令执行函数有: system(cmd_code);exec(cmd_…...

深入Java数据库连接和JDBC

引言 Java数据库连接(JDBC)是Java语言中用于执行SQL语句的标准API。通过JDBC,开发者可以方便地与关系型数据库进行交互。然而,直接使用JDBC API面临着数据库连接管理复杂、性能瓶颈等问题。数据库连接池作为一种解决方案,可以有效地管理数据库连接,提高应用程序的性能。…...

灰狼优化算法(GWO)与长短期记忆网络(LSTM)结合的预测模型(GWO-LSTM)及其Python和MATLAB实现

#### 一、背景 在现代数据科学和人工智能领域,预测模型的准确性和效率是研究者和工程师不断追求的目标,尤其是在时间序列预测、金融市场分析、气象预测等领域。长短期记忆(LSTM)网络是一种解决传统递归神经网络(RNN&a…...

电路板热仿真覆铜率,功率,结温,热阻率信息计算获取方法总结

🏡《电子元器件学习目录》 目录 1,概述2,覆铜率3,功率4,器件尺寸5,结温6,热阻1,概述 电路板热仿真操作是一个复杂且细致的过程,旨在评估和优化电路板内部的热分布及温度变化,以确保电子元件的可靠性和性能。本文简述在进行电路板的热仿真时,元器件热信息的计算方法…...

C#中多线程编程中的同步、异步、串行、并行及并发及死锁

在C#中,多线程编程是一个强大的功能,它允许程序同时执行多个任务。然而,这也带来了复杂性,特别是在处理同步、异步、串行、并行、并发以及死锁等问题时。下面我将详细解释这些概念,并给出一些C#中的示例和注意事项。 …...

【Lampiao靶场渗透】

文章目录 一、IP地址获取 二、信息收集 三、破解SSH密码 四、漏洞利用 五、提权 一、IP地址获取 netdiscover -i eth0 Arp-scan -l Nmap -sP 192.168.78.0/24 靶机地址:192.168.78.177 Kali地址:192.168.78.128 二、信息收集 nmap -sV -p- 192.…...

使用WebSocket实现log日志流的实时展示-从轮询到通知

场景介绍 最近开发一个系统,其中一个模块需要展示实时的执行过程,过程日志可能比较多。以前的方案都是前端定时轮询,比如每秒查一次后端接口,将拉取回来的日志重新展示。轮询方案简单容易实现,但是比较消耗资源&#…...

UE5 从零开始制作跟随的大鹅

文章目录 二、绑定骨骼三、创建 ControlRig四、创建动画五、创建动画蓝图六、自动寻路七、生成 goose八、碰撞 和 Physics Asset缺点 # 一、下载模型 首先我们需要下载一个静态网格体,这里我们可以从 Sketchfab 中下载:Goose Low Poly - Download Free …...

O’Reilly

--江上往来人,但爱鲈鱼美。 --君看一叶舟,出没风波里。 OReilly OReilly出版社出版的技术类图书 俗称动物系列 应该是每个技术人员的必备手册。 OReilly动物系列(中译本) 简介" 动物系列作为 OReilly 书籍的典型代表被普遍…...

优盘驱动器未格式化:数据拯救行动指南

优盘困境:驱动器未格式化的挑战 在日常的数据存储与传输中,优盘以其便携性和高容量成为了我们不可或缺的伙伴。然而,当您尝试访问优盘时,突然弹出的“驱动器未被格式化”提示却如同晴天霹雳,让人措手不及。这一状况不…...

4.Handler mappings

处理程序映射 简介 在早期版本的 Spring 中,用户需要在 Web 应用程序上下文中定义一个或多个 HandlerMapping bean 以将传入的 Web 请求映射到适当的处理程序。随着注解控制器的引入,通常不再需要这样做,因为 RequestMappingHandlerMapping…...

《学会 SpringMVC 系列 · 消息转换器 MessageConverters》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...

深度学习项目 -7-使用 Python 的手写数字识别

一、前言 该文章仅作为个人学习使用 二、正文 项目源代码:深度学习项目 - 使用 Python 进行手写数字识别 - DataFlair (data-flair.training) 数据集:​​​​​​​https://drive.google.com/open?id1hJiOlxctFH3uL2yTqXU_1f6c0zLr8V_K Python 深…...

MySQL —— 库,数据类型 与 表

库与基础操作 1.1 查看数据库 使用 show databases; 可以查看当前 MySQL 目前有多少个数据库 5 rows 表示有 5 行,这里是表示的是有效的数据,不包括 第一行的指引 set 表示结果集合 0.01 sec 表示这个 sql 语句一共运行了0.01 秒,一般情况…...

Java重修笔记 第二十七天 匿名内部类

匿名内部类 1. 定义:无类名(底层自动分配类名“外部类名$1”),既是类也是对象,定义在外部类的局部位置,例如方法体和代码块中,通过new类或接口并在大括号里重写方法来实现。 2. 使用场景&…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...