大模型+LangChain知识

什么是 LangChain?

https://python.langchain.com/docs/get_started/introduction

LangChain 是一个基于语言模型的框架,用于构建聊天机器人、生成式问答(GQA)、摘要等功能。它的核心思想是将不同的组件“链”在一起,以创建更高级的语言模型应用。

LangChain 包含哪些核心概念?

  • Models(模型):这是LangChain框架的核心,指的是各种语言模型,如GPT-3、BERT等,它们用于理解和生成文本。
  • Prompts(提示):这是提供给模型的问题或指令,用于指导模型生成期望的输出。良好的提示设计对于获得高质量的输出至关重要。
  • Indexes(索引):这部分指的是将大量数据组织起来,以便模型可以快速准确地检索信息。索引可以是自定义的,也可以是利用现有的工具和数据库。
  • Memory(记忆):为了使模型能够在对话或任务中保持上下文连贯性,Memory组件允许模型存储和回忆先前的交互信息。
  • Chains(链):Chain是模型执行的一系列步骤。通过将模型调用组织成链,可以执行更复杂的任务,如信息检索、问题解答等。
  • Agents(代理):Agents是高级概念,它涉及模型自主地决定采取哪些行动来完成特定任务。这通常涉及到模型调用外部工具或API。
  • 训练数据选择:用户可以使用示例选择器从大型训练数据集中筛选和选择特定的示例。当使用有限的计算资源或专注于数据集的特定子集时,这非常有用。
  • 推理定制:在推理过程中,示例选择器可用于从数据集中检索特定示例。这允许用户根据特定的条件或标准生成响应或预测。

LangChain 中 Components and Chains 是什么?

https://python.langchain.com/docs/modules/chains/

组件和链是LangChain框架中的关键概念。

组件指的是构成LangChain框架的单个构建块或模块。这些组件可以包括语言模型、数据预处理器、响应生成器等其他功能。每个组件负责语言模型应用中的特定任务或功能。

另一方面,链是这些组件之间的连接或链接。它们定义了语言模型应用中数据和信息的流动。链允许一个组件的输出作为另一个组件的输入,从而能够创建更先进的语言模型。

总结来说,组件是LangChain框架内的单个模块或功能,而链则定义了这些组件之间的连接和数据流动。

以下是一个示例,说明LangChain中组件和链的概念:

from langchain import Component, Chain  # Define components  
preprocessor = Component("Preprocessor")  
language_model = Component("Language Model")  
response_generator = Component("Response Generator")  # Define chains  
chain1 = Chain(preprocessor, language_model)  
chain2 = Chain(language_model, response_generator)  # Execute chains  
input_data = "Hello, how are you?"  
processed_data = chain1.execute(input_data)  
response = chain2.execute(processed_data)  print(response)  

在上面的示例中,我们有三个组件:预处理器、语言模型和响应生成器。我们创建了两个链:chain1连接预处理器和语言模型,chain2连接语言模型和响应生成器。输入数据通过chain1进行预处理,然后通过chain2生成响应。

这是一个简化的示例,用于演示LangChain中组件和链的概念。在实际场景中,您会有更复杂的链,包含多个组件和数据转换。

LangChain 中 Prompt Templates and Values 是什么?

https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/

提示模板和值是LangChain框架中的关键概念。

提示模板指的是预先定义的结构或格式,用于指导语言模型提示的生成。这些模板通过指定所需的输入和输出格式,提供了一种一致和标准化的构建提示的方法。提示模板可以包括占位符或变量,这些占位符或变量稍后会被具体的值填充。

另一方面,值是用于填充提示模板中的占位符或变量的具体数据或信息。这些值可以是动态生成的,也可以从外部来源检索。它们为语言模型提供必要的上下文或输入,以生成所需的输出。

以下是一个示例,说明LangChain中提示模板和值的概念:

from langchain import PromptTemplate, Value  # Define prompt template  
template = PromptTemplate("What is the capital of {country}?")  # Define values  
country_value = Value("country", "France")  # Generate prompt  
prompt = template.generate_prompt(values=[country_value])  print(prompt)  

在上面的示例中,我们有一个提示模板,用于询问一个国家的首都。该模板包括一个占位符{country},它将被实际的国家值填充。我们定义了一个值对象country_value,其名称为"country",值为"France"。然后,我们通过将值对象传递给模板的generate_prompt方法来生成提示。

生成的提示将是"What is the capital of France?"。

提示模板和值允许在LangChain框架中灵活和动态地生成提示。它们使根据特定要求或场景定制和适应提示成为可能。

LangChain 中 Example Selectors 是什么?

https://python.langchain.com/docs/modules/model_io/prompts/example_selectors/

示例选择器是LangChain框架中的一个功能,它允许用户指定并从数据集中检索特定的示例或数据点。这些选择器通过选择符合特定标准或条件的特定示例,帮助定制训练或推理过程。

示例选择器可以用于各种场景,以下是一个示例,说明LangChain中示例选择器的概念:

from langchain import ExampleSelector  # Define an example selector  
selector = ExampleSelector(condition="label=='positive'")  # Retrieve examples based on the selector  
selected_examples = selector.select_examples(dataset)  # Use the selected examples for training or inference  
for example in selected_examples:  
# Perform training or inference on the selected example  
...  

在上面的示例中,我们定义了一个示例选择器,其条件是选择标签等于"positive"的示例。然后我们使用这个选择器从数据集中检索选定的示例。这些选定的示例可以用于训练或推理目的。

示例选择器为定制LangChain框架中使用的数据提供了一种灵活的方式。它们允许用户专注于数据的特定子集,或应用特定标准来选择符合他们要求的示例。

LangChain 中 Output Parsers 是什么?

https://python.langchain.com/docs/modules/model_io/output_parsers/

输出解析器是LangChain框架中的一个功能,它允许用户自动检测并解析语言模型生成的输出。这些解析器设计用来处理不同类型的输出,例如字符串、列表、字典甚至Pydantic模型。

输出解析器提供了一种方便的方式来处理和操作语言模型的输出,无需手动解析或转换。它们帮助从输出中提取相关信息,并使得进一步的加工或分析成为可能。

以下是一个示例,说明LangChain中输出解析器的概念:

   # Define an output parser  parser = OutputParser()  # Apply the output parser to a function  @llm_prompt(output_parser=parser)  def generate_response(input_text):  # Generate response using the language model  response = language_model.generate(input_text)  return response  # Generate a response  input_text = "Hello, how are you?"  response = generate_response(input_text)  # Parse the output  parsed_output = parser.parse_output(response)  # Process the parsed output  processed_output = process_output(parsed_output)  print(processed_output)

在上面的示例中,我们定义了一个输出解析器,并使用`llm_prompt`装饰器将其应用于`generate_response`函数。输出解析器自动检测输出的类型并提供解析后的输出。然后我们可以根据需要进一步处理或分析解析后的输出。

输出解析器在LangChain框架中提供了一种灵活且高效的方式来处理语言模型的输出。它们简化了输出的后处理,并使得与其他组件或系统的无缝集成成为可能。

LangChain 中 Indexes and Retrievers 是什么?

https://python.langchain.com/docs/modules/data_connection/retrievers/

https://python.langchain.com/docs/modules/data_connection/indexing

索引和检索器是Langchain框架中的组件。

索引用于存储和组织数据,以便高效检索。Langchain支持多种类型的文档索引,例如InMemoryExactNNIndex、HnswDocumentIndex、WeaviateDocumentIndex、ElasticDocIndex和QdrantDocumentIndex。每种索引都有自己的特点,适用于不同的用例。例如,InMemoryExactNNIndex适用于可以存储在内存中的小数据集,而HnswDocumentIndex轻量级,适用于中小型数据集。

另一方面,检索器用于根据给定的查询从索引中检索相关文档。Langchain提供了不同类型的检索器,如MetalRetriever和DocArrayRetriever。MetalRetriever与Metal平台一起使用,用于语义搜索和检索,而DocArrayRetriever与DocArray工具一起使用,用于管理多模态数据。

总的来说,索引和检索器是Langchain中用于高效数据存储和检索的基本组件。

LangChain 中 Chat Message History 是什么?

https://python.langchain.com/docs/modules/memory/chat_messages/

Chat Message History 是 Langchain 框架中的一个组件,用于存储和管理聊天消息的历史记录。它可以跟踪和保存用户和AI之间的对话,以便在需要时进行检索和分析。

Langchain 提供了不同的 Chat Message History 实现,包括 StreamlitChatMessageHistory、CassandraChatMessageHistory 和 MongoDBChatMessageHistory。

  • StreamlitChatMessageHistory:用于在 Streamlit 应用程序中存储和使用聊天消息历史记录。它使用 Streamlit 会话状态来存储消息,并可以与 ConversationBufferMemory 和链或代理一起使用。
  • CassandraChatMessageHistory:使用 Apache Cassandra 数据库存储聊天消息历史记录。Cassandra 是一种高度可扩展和高可用的 NoSQL 数据库,适用于存储大量数据。
  • MongoDBChatMessageHistory:使用 MongoDB 数据库存储聊天消息历史记录。MongoDB 是一种面向文档的 NoSQL 数据库,使用类似 JSON 的文档进行存储。

您可以根据自己的需求选择适合的 Chat Message History 实现,并将其集成到 Langchain 框架中,以便记录和管理聊天消息的历史记录。

请注意,Chat Message History 的具体用法和实现细节可以参考 Langchain 的官方文档和示例代码。

LangChain 中 Agents and Toolkits 是什么?

https://python.langchain.com/docs/modules/agents/

https://python.langchain.com/docs/modules/agents/toolkits/

在LangChain中,代理(Agents)和工具包(Toolkits)是用于创建和管理对话代理的组件。

代理负责根据对话的当前状态确定下一步行动。可以使用不同的方法创建代理,例如OpenAI函数调用、计划执行代理(Plan-and-execute Agent)、Baby AGI和Auto GPT。这些方法为构建代理提供了不同级别的定制和功能。

另一方面,工具包是代理可以用来执行特定任务或动作的工具集合。工具是接受输入并产生输出的函数或方法。它们可以是自定义构建的,也可以是预定义的,涵盖了广泛的功能性,如语言处理、数据操作和外部API集成。

通过结合代理和工具包,开发人员可以创建强大的对话代理,这些代理能够理解用户输入,生成适当的响应,并根据给定的上下文执行各种任务。

以下是如何使用LangChain创建代理的示例:

     from langchain.chat_models import ChatOpenAI  from langchain.agents import tool  # Load the language model  llm = ChatOpenAI(temperature=0)  # Define a custom tool  @tool  def get_word_length(word: str) -> int:  """Returns the length of a word."""  return len(word)  # Create the agent  agent = {  "input": lambda x: x["input"],  "agent_scratchpad": lambda x: format_to_openai_functions(x['intermediate_steps'])  } | prompt | llm_with_tools | OpenAIFunctionsAgentOutputParser()  # Invoke the agent  output = agent.invoke({  "input": "how many letters in the word educa?",  "intermediate_steps": []  })  # Print the result  print(output.return_values["output"])  

这是一个基本的示例,LangChain提供了更多的功能和特性来构建和定制代理和工具包。您可以通过查阅LangChain的文档来获取更多细节和示例。

什么是 LangChain Agent?

https://python.langchain.com/docs/modules/agents/

LangChain Agent 是 LangChain 框架中的一个组件,用于创建和管理对话代理。代理是根据当前对话状态确定下一步操作的组件。LangChain 提供了多种创建代理的方法,包括 OpenAI Function Calling、Plan-and-execute Agent、Baby AGI 和 Auto GPT 等。这些方法提供了不同级别的自定义和功能,用于构建代理。

代理可以使用工具包执行特定的任务或操作。工具包是代理使用的一组工具,用于执行特定的功能,如语言处理、数据操作和外部 API 集成。工具可以是自定义构建的,也可以是预定义的,涵盖了广泛的功能。

通过结合代理和工具包,开发人员可以创建强大的对话代理,能够理解用户输入,生成适当的回复,并根据给定的上下文执行各种任务。

以下是使用 LangChain 创建代理的示例代码:

    from langchain.chat_models import ChatOpenAI  from langchain.agents import tool  # 加载语言模型  llm = ChatOpenAI(temperature=0)  # 定义自定义工具  @tool  def get_word_length(word: str) -> int:  """返回单词的长度。"""  return len(word)  # 创建代理  agent = {  "input": lambda x: x["input"],  "agent_scratchpad": lambda x: format_to_openai_functions(x['intermediate_steps'])  } | prompt | llm_with_tools | OpenAIFunctionsAgentOutputParser()  # 调用代理  output = agent.invoke({  "input": "单词 educa 中有多少个字母?",  "intermediate_steps": []  })  # 打印结果  print(output.return_values["output"])  

这只是一个基本示例,LangChain 中还有更多功能和功能可用于构建和自定义代理和工具包。您可以参考 LangChain 文档以获取更多详细信息和示例。

如何使用 LangChain?

https://python.langchain.com/docs/get_started/quickstart

要使用LangChain,您首先需要在platform.langchain.com上注册以获取API密钥。一旦您有了API密钥,就可以安装Python库并编写一个简单的Python脚本来调用LangChain API。以下是一些入门的示例代码:

    import langchain  api_key = "YOUR_API_KEY"  langchain.set_key(api_key)  response = langchain.ask("What is the capital of France?")  print(response.response)  

这段代码将问题"What is the capital of France?"发送到LangChain API,并打印出响应。您可以通过提供max_tokens、temperature等参数来自定义请求。LangChain Python库文档中有更多关于可用选项的详细信息。

LangChain 支持哪些功能?

LangChain支持以下功能:

  1. 编写帖子的短标题:使用write_me_short_post函数可以生成关于特定主题、平台和受众的短标题。该函数的参数包括topic(主题)、platform(平台,默认为Twitter)和audience(受众,默认为开发人员)。生成的标题应该在15个单词以内。

  2. 模拟对话:使用simulate_conversation函数可以模拟对话,包括系统消息、用户消息和助手消息。对话可以根据角色(如助手、用户、系统)进行交互,并可以包含历史记录。这对于训练聊天模型非常有用。

  3. 可选部分:可以在提示中定义可选部分,只有在所有参数都不为空时才会渲染该部分。这可以通过在提示中使用{? ... ?}语法来实现。

  4. 输出解析器:llm_prompt装饰器可以自动检测输出类型,并提供相应的解析器。支持的输出类型包括字符串、列表、字典和Pydantic模型。

以上是LangChain支持的一些功能。您可以根据具体的需求使用这些功能来创建生产就绪的聊天应用程序。

什么是 LangChain model?

LangChain model 是一个基于语言模型的框架,用于构建聊天机器人、生成式问答(GQA)、摘要等功能。LangChain 的核心思想是可以将不同的组件“链”在一起,以创建更高级的语言模型应用。

LangChain model是一种基于大型语言模型(LLM)的模型。它是LangChain框架的核心组件之一,用于构建基于语言模型的应用程序。LangChain模型可以用于聊天机器人、生成式问答、摘要等多种应用。它提供了一种标准的接口,使开发人员能够使用LLM来处理自然语言处理任务。LangChain模型的目标是简化开发过程,使开发人员能够更轻松地构建强大的语言模型应用程序。

LangChain 包含哪些特点?

LangChain 包含以下特点:

  • 编写自定义的LangChain提示和链式代码的语法糖
  • 使用IDE内置的支持进行提示、类型检查和弹出文档,以快速查看函数的提示和参数
  • 利用LangChain生态系统的全部功能
  • 添加对可选参数的支持
  • 通过将参数绑定到一个类来轻松共享参数
  • 支持传递内存和回调函数
  • 简化的流式处理
  • 定义聊天消息提示
  • 可选部分
  • 输出解析器
  • 支持更复杂的数据结构

LangChain 如何调用 LLMs 生成回复?

要调用LLMs生成回复,您可以使用LangChain框架提供的LLMChain类。LLMChain类是LangChain的一个组件,用于与语言模型进行交互并生成回复。以下是一个示例代码片段,展示了如何使用LLMChain类调用LLMs生成回复:

from langchain.llms import OpenAI  
from langchain.chains import LLMChain  llm = OpenAI(temperature=0.9)  # 创建LLM实例  
prompt = "用户的问题"  # 设置用户的问题  # 创建LLMChain实例  
chain = LLMChain(llm=llm, prompt=prompt)  # 调用LLMs生成回复  
response = chain.generate()  print(response)  # 打印生成的回复  

在上面的代码中,我们首先创建了一个LLM实例,然后设置了用户的问题作为LLMChain的prompt。接下来,我们调用LLMChain的generate方法来生成回复。最后,我们打印生成的回复。

请注意,您可以根据需要自定义LLM的参数,例如温度(temperature)、最大令牌数(max_tokens)等。LangChain文档中有关于LLMChain类和LLM参数的更多详细信息。

LangChain 如何修改 提示模板?

要修改LangChain的提示模板,您可以使用LangChain框架提供的ChatPromptTemplate类。ChatPromptTemplate类允许您创建自定义的聊天消息提示,并根据需要进行修改。以下是一个示例代码片段,展示了如何使用ChatPromptTemplate类修改提示模板:

from langchain.prompts import ChatPromptTemplate  # 创建一个空的ChatPromptTemplate实例  
template = ChatPromptTemplate()  # 添加聊天消息提示  
template.add_message("system", "You are a helpful AI bot.")  
template.add_message("human", "Hello, how are you doing?")  
template.add_message("ai", "I'm doing well, thanks!")  
template.add_message("human", "What is your name?")  # 修改提示模板  
template.set_message_content(0, "You are a helpful AI assistant.")  
template.set_message_content(3, "What is your name? Please tell me.")  # 格式化聊天消息  
messages = template.format_messages()  print(messages)  

在上面的代码中,我们首先创建了一个空的ChatPromptTemplate实例。然后,我们使用add_message方法添加了聊天消息提示。接下来,我们使用set_message_content方法修 改了第一个和最后一个聊天消息的内容。最后,我们使用format_messages方法格式化聊天消息,并打印出来。请注意,您可以根据需要添加、删除和修改聊天消息提示。ChatPromptTemplate类提供了多种方法来操作提示模板。更多详细信息和示例代码可以在LangChain文档中找到。

LangChain 如何链接多个组件处理一个特定的下游任务?

要链接多个组件处理一个特定的下游任务,您可以使用LangChain框架提供的Chain类。Chain类允许您将多个组件连接在一起,以便按顺序处理任务。以下是一个示例代码片段,展示了如何使用Chain类链接多个组件处理下游任务:

     from langchain.chains import Chain  from langchain.components import Component1, Component2, Component3  # 创建组件实例  component1 = Component1()  component2 = Component2()  component3 = Component3()  # 创建Chain实例并添加组件  chain = Chain()  chain.add_component(component1)  chain.add_component(component2)  chain.add_component(component3)  # 处理下游任务  output = chain.process_downstream_task()  print(output)  

在上面的代码中,我们首先创建了多个组件的实例,例如Component1Component2Component3。然后,我们创建了一个Chain实例,并使用add_component方法将这些组件添加到链中。最后,我们调用process_downstream_task方法来处理下游任务,并打印输出结果。

请注意,您可以根据需要添加、删除和修改组件。Chain类提供了多种方法来操作链。更多详细信息和示例代码可以在LangChain文档中找到。

LangChain 如何Embedding & vector store?

要在LangChain中进行嵌入和向量存储,您可以使用LangChain框架提供的EmbeddingVectorStore类。Embedding类用于将文本嵌入到向量空间中,而VectorStore类用于存储和检索嵌入向量。以下是一个示例代码片段,展示了如何在LangChain中进行嵌入和向量存储:

     from langchain.embeddings import Embedding  from langchain.vectorstore import VectorStore  # 创建Embedding实例  embedding = Embedding()  # 将文本嵌入到向量空间中  embedding.embed("Hello, world!")  # 创建VectorStore实例  vector_store = VectorStore()  # 存储嵌入向量  vector_store.store("hello", embedding.get_embedding())  # 检索嵌入向量  vector = vector_store.retrieve("hello")  print(vector)  

在上面的代码中,我们首先创建了一个Embedding实例,并使用embed方法将文本嵌入到向量空间中。然后,我们创建了一个VectorStore实例,并使用store方法将嵌入向量存储到向量存储中。最后,我们使用retrieve方法检索嵌入向量,并打印出来。

请注意,您可以根据需要添加、删除和修改嵌入向量。Embedding类和VectorStore类提供了多种方法来操作嵌入和向量存储。更多详细信息和示例代码可以在LangChain文档中找到。

LangChain 存在哪些问题及方法方案?

  • LangChain 低效的令牌使用问题

LangChain的token使用是高效的。LangChain使用了一种称为"token-based"的方法来处理文本输入和输出。这种方法将文本分解为小的单元,称为"tokens",并对它们进行处理。相比于传统的字符或词语级别的处理,使用tokens可以更高效地处理文本。

LangChain还提供了一些参数,如max_tokenstemperature,可以用来控制生成回复的长度和多样性。通过调整这些参数,开发人员可以根据自己的需求来平衡生成回复的效率和质量。

总的来说,LangChain的token使用是高效的,并且开发人员可以通过调整参数来控制生成回复的效果。

  • LangChain 文档的问题

为了解决这个问题,LangChain的维护者可以提供更加清晰和结构化的文档,包括详细的教程、示例和组件之间的交互说明。此外,建立一个活跃的社区论坛,让用户可以互相帮助解答疑问,也是很有帮助的。

  • LangChain 太多概念容易混淆,过多的“辅助”函数问题

对辅助函数进行分类和模块化,提供清晰的API文档和使用指南,可以帮助用户更快地找到他们需要的函数,并理解如何使用它们。

  • LangChain 行为不一致并且隐藏细节问题

确保框架的一致性和透明性是至关重要的。这可以通过严格的测试和持续集成流程来实现。同时,提供详细的错误信息和日志记录功能,可以帮助开发人员更好地理解系统的状态和行为。

  • LangChain 缺乏标准的可互操作数据类型问题

LangChain提供了一种标准的接口,使开发人员能够使用大型语言模型(LLM)处理自然语言处理任务。虽然LangChain支持更复杂的数据结构,但它目前缺乏标准的可互操作数据类型。这意味着LangChain在处理数据时可能需要进行一些额外的处理和转换。开发人员可以根据自己的需求使用LangChain提供的功能和工具来处理和操作数据。

LangChain 替代方案?

LangChain是一个独特的框架,目前没有直接的替代方案。它提供了一种简化开发过程的方式,使开发人员能够更轻松地构建基于语言模型的应用程序。LangChain的特点包括编写自定义的LangChain提示和链式代码的语法糖、使用IDE内置的支持进行提示和类型检查、支持可选参数和共享参数等。虽然可能有其他类似的框架可用,但LangChain在其特定领域内提供了独特的功能和优势。

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

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

相关文章

Proteus -模拟串口被关闭后怎样打开

Proteus -模拟串口被关闭后怎样打开 点击恢复弹出窗口,即可重新打开

XGboost和lightGBM算法对比

XGBoost(eXtreme Gradient Boosting)和LightGBM(Light Gradient Boosting Machine)都是一类基于梯度提升树(Gradient Boosting Decision Trees)的机器学习算法。 XGBoost是由陈天奇开发的一种优化的梯度提…

WPF中值转换器的使用

什么是值转换器 在WPF(Windows Presentation Foundation)中,值转换器(Value Converter)是一种机制,允许你在绑定时转换绑定源和绑定目标之间的值。值转换器实现了 IValueConverter 接口,该接口…

剪辑思维大学习(Day5) - 剪辑时如何找到合适的音乐?!

目录 一、写在前面 二、关键词概括 1.找音乐前考虑什么? 2.常见的情绪关键词 3.常见的音乐风格关键词 三、思路总结 1.旅拍vlog/文旅宣传片 1).世界音乐/民族音乐 2).史诗音乐 3).中国传统乐器 2.炫酷/时尚/节奏感片子 …

【华为 ICT HCIA eNSP 习题汇总】——题目集12

1、企业网络内部常常采用私有 IP 地址进行通信,以下哪个地址属于私有 IP 地址? A、0.1.1.1 B、127.5.4.3 C、128.0.0.5 D、172.24.35.36 考点:网络层 解析:(D) A类 IP 地址中,10.0.0.0 ~ 10.255…

command的作用

int waitCommand(int waitFD) {uint32_t command0;ssize_t sread(waitFD,&command,sizeof(command));assert(ssizeof(uint32_t));return command; } 这段代码中的command是一个无符号32位整数变量,用于存储从文件描述符waitFD中读取的命令。函数waitCommand的作…

深入学习《大学计算机》系列之第1章 1.7节——图灵机的一个例子

一.欢迎来到我的酒馆 第1章 1.7节,图灵机的一个例子。 目录 一.欢迎来到我的酒馆二.图灵机2.1 艾伦-图灵简介2.2 图灵机简介 三.图灵机工作原理3.1 使用图灵机打印二进制数3.2 图灵机工作原理总结 四.总结 二.图灵机 本节内容主要介绍计算机科学之父——艾伦-图灵、…

Java学习-常用API-新增时间

1.学习JDK8新增时间的原因? 2.JDK8新增了那些时间? 代替calendar的 localDate localTime localDateTime 常用APi及代码示例: ZoneIdZonedDateTime 常用方法 代码示例: 代替Date的 Instant常见方法及其代码示例: 注…

权限提升:利用Linux漏洞提权

目录 Linux权限基础 Linux用户权限 Linux文件权限 特殊的Linux文件权限 Linux本机信息收集 利用Linux漏洞进行提权 脏牛漏洞 pkexec Linux权限基础 Linux用户权限 在Linux中,根据权限的不同,大致可以分为三种:超级用户(…

Linux系统上部署网站

在Linux系统上部署网站通常涉及以下步骤: 1. **选择 Web 服务器**:常见的选择包括 Apache、Nginx 或 Lighttpd。这些服务器都支持在 Linux 上部署网站,并且各有优缺点。 2. **安装 Web 服务器**:使用包管理器(如apt、…

C#,卢卡斯数(Lucas Number)的算法与源代码

1 卢卡斯数(Lucas Number) 卢卡斯数(Lucas Number)是一个以数学家爱德华卢卡斯(Edward Lucas)命名的整数序列。爱德华卢卡斯既研究了这个数列,也研究了有密切关系的斐波那契数(两个…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月13日,星期二

每天一分钟,知晓天下事! 2024年2月13日 星期二 农历正月初四 1、 春节假期旅游爆火!多地景区宣布门票售罄,建议错峰错区游览。 2、 中国旅游研究院:预计2024年全年国内旅游人数将超过60亿人次。 3、 应急管理部&#…

1.2 Verilog 简介及发展历史

Verilog 具有很强的电路描述与建模能力,能从多个层次对数字系统进行描述和建模。因此,在简化硬件设计任务、提高设计效率与可靠性、语言易读性、层次化和结构化设计等方面展现了强大的生命力与潜力。 发展历史 1983 年,Verilog 最初由 Gate…

Solidworks:从2D走向3D

Sokidworks 的强大之处在于三维实体建模,这个形状看似复杂,实际上只需要拉伸一次,再做一次减法拉伸就行了。第一次做三维模型,费了不少时间才搞明白。 接下来做一个稍微复杂一点的模型,和上面这个操作差不多&#xff0…

SpringBoot中的对象属性拷贝及MD5加密

目录 1 前言 2 属性拷贝 3 MD5加密 1 前言 属性拷贝常用于服务层之中dto和entity对象,如果使用get和set方法,那将过于麻烦。另外,我们可能需要使用MD5对密码之类的进行加密,如果手搓工具类,将同样麻烦。如果能够使…

基于Seaborn和Matplotlib的可视化案例分析

处理数据有时会有点无聊。将原始数据转换为可理解的格式是整个过程中最重要的部分之一,那么为什么只停留在数字上,当我们可以将数据可视化为令人兴奋的图表时,这些图表可以在python中获取。这篇文章将重点探索耐人寻味的预处理之旅。 Seabor…

SSM+SpringBoot框架

单例bean是线程安全的吗 AOP Spring事务失效 第四种,在方法内部使用,需要用代理类调用此方法 bean生命周期 bean的循环依赖 SpringMVC执行流程 、 SpringBoot自动配置原理 Spring常见注解 MyBatis执行流程 MyBatis延迟加载 MyBatis缓存

最新在线看4K高清电影网站推荐

随着互联网技术的发展,观看高清电影已经不再是难事。这里我为大家分享几个最新的在线看4K高清电影网站,让您在家就能享受到极致观影体验。 通过下面这个即可 1. 【超清影视】 【超清影视】是国内新兴的4K高清电影网站,拥有海量的影片资源&a…

000——对i.MAX6uLL进行开箱检查

目录 00外观检查 01有线网卡检查 02USB-host测试 03耳机测试 04按键测试 05查看CPU温度 00外观检查 看起来没什么问题,买了半年了刚开始要做 01有线网卡检查 开机启动正常,韦东山老师还写了个欢迎界面,这个我后面因为要用于毕业设计&am…

《Linux 简易速速上手小册》第5章: 用户与群组管理(2024 最新版)

文章目录 5.1 管理用户账户5.1.1 重点基础知识5.1.2 重点案例:创建一个新的开发者账户5.1.3 拓展案例 1:禁用用户登录5.1.4 拓展案例 2:设置账户到期 5.2 群组概念与管理5.2.1 重点基础知识5.2.2 重点案例:为项目团队设置群组5.2.…