变相提高大模型上下文长度-RAG文档压缩-2.带早停机制的map-refine
我试过用map-refine方法来精炼上下文,由于它是线性的,运行时间随着文档数量线性增长。所以可以考虑通过判断上下文是否可以满足QA来提前结束过程。
import os
import json
from langchain_core.documents import Documentdata = []
file_path = './data/data_>=10.json'
with open(file_path) as f:for line in f:a_record = json.loads(line)data.append(a_record)print(len(data))data_indice = 1
a_query = data[data_indice]['query']
a_docs = data[data_indice]['pos']
a_docs = [Document(item) for item in a_docs]
50
Map-Refine 附加早停机制
Map 阶段
import asyncio
from pydantic import BaseModel, Field
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import PydanticOutputParser
from langchain_core.prompts import PromptTemplate, ChatPromptTemplate
from langchain.output_parsers import OutputFixingParser# ===== map =====class MapSummary(BaseModel):reasoning: str = Field(description="关于问题和本内容之间关联性的思考")summary: str = Field(description="对文本中与问题相关片段的提取,直接输出为str")map_parser = PydanticOutputParser(pydantic_object=MapSummary)map_prompt = ChatPromptTemplate.from_messages([# role, message("system", "你是一名专业的内容提取和总结专家。"),("human", ("请清晰简明地总结以下文本以回答问题。\n\n" "在总结时,请注意以下几点:\n" "- 你的任务是总结问题相关的文本,而不是回答问题。" "- 包含关键事件、重要事实和核心信息。\n" "- 省略不必要的细节。\n\n" "按以下格式要求输出:\n{format_instructions}\n\n""[问题-开始]:\n{query}\n[问题-结束]\n\n""[需要总结的文本-开始]:\n{context}\n[需要总结的文本-结束]\n" )),]
)map_prompt = map_prompt.partial(format_instructions=map_parser.get_format_instructions())llm = ChatOpenAI(base_url='http://localhost:5551/v1',api_key='EMPTY',model_name='Qwen2.5-7B-Instruct',temperature=0.5,
)map_chain = map_prompt | llm | map_parser
tasks = [map_chain.ainvoke({"query":a_query,"context":doc.page_content,})for doc in a_docs
]map_results = await asyncio.gather(*tasks)
map_results
[MapSummary(reasoning='文本主要介绍了90版本阿修罗武器的排行,提到了四把武器的特点和排名依据。', summary='荒古排名第一,理由是其技能攻击力和魔能提升效果;妖刀村正排名第二,因其无视和额外黄字属性;暗影蔽日排名第三,虽然所有攻击力亮眼但需注意堆属性的搭配;圣剑排名第四,适合当前版本的天域套装备。'),MapSummary(reasoning='文本主要讨论了90版本阿修罗的武器排行,提到了支点、别云和天丛云这三把武器的相关信息。', summary='支点、别云和天丛云是90版本阿修罗的优秀武器,支点适合光强修罗,别云有高黄字但存在黄字冲突问题,天丛云则有27白字且适合一觉cd换装。'),MapSummary(reasoning='文本主要描述了90版本阿修罗武器的排行情况,但并未直接提及名刀32和90版本的具体排行情况,因此需要进一步筛选相关信息。', summary='名刀32和七支刀在描述中被提及,但具体排名信息未给出。'),MapSummary(reasoning='文本主要讨论了90版本阿修罗武器的排行,提到了三把武器的特点和优势,与问题相关性较强,可以直接提取关键信息作为总结。', summary='90版本阿修罗武器排行:1.荒古太(未升级和升级后的技能攻击力及获取方式);2.妖刀村正(90版本新武器,无视和额外黄字优势);3.暗影蔽日(所有攻击力高,搭配需注意)。'),MapSummary(reasoning='文本主要讨论了90版本阿修罗的主流武器测试排名,特别是针对吞噬魔和破锁血马蹄卡的测试结果。', summary='90版本阿修罗主流武器测试排名:吞噬魔-支点>开魔能荒古>妖刀传奇;破锁血马蹄卡-妖刀不适合作为破锁血武器。'),MapSummary(reasoning='文本主要讨论了90版本阿修罗武器在20人本的表现,提到了妖刀、开魔能荒古、圣剑等武器的排名情况,以及影响排名的因素。', summary='20人本妖刀>开魔能荒古>圣剑=支点=避日,圣剑攻击力受自身属强影响,荒古属性攻击选最高值。'),MapSummary(reasoning='文本内容与90版本阿修罗武器排行无关,为避免误导,应排除。', summary=''),MapSummary(reasoning='文本主要讨论了90版本DNF游戏中阿修罗武器的排行,特别是前10名的排名情况,与问题相关度高。', summary='90版本DNF修罗武器排行榜:10.无影剑,荒古太刀排名第一。'),MapSummary(reasoning='文本主要介绍了90版本阿修罗武器的排行及特点,与问题相关性较强,但未直接提到排行结果。', summary='文本介绍了90版本阿修罗武器的排行及特点,如七支刀、名刀、天丛云等,但未直接给出具体排行结果。'),MapSummary(reasoning='文本主要介绍了90版本阿修罗武器的排行,提到了别云、支点和圣剑这三种武器的特点和适用情况。问题询问90版本阿修罗武器排行,因此这些信息与问题直接相关。', summary='别云武器适合搭配50黄字装备,支点适合幽魂套和光强修罗,圣剑100属强适合全属强套装,但释放速度慢影响手感。'),MapSummary(reasoning='文本主要讨论了90版本阿修罗武器的排行,提到了暗影蔽日和妖刀村正的优缺点。', summary='90版本阿修罗武器排行,暗影蔽日和妖刀村正表现突出,分别适用于幽魂流光和未升级的荒古。')]
Refine 阶段
一开始的早停只有两个选项:内容不完整(继续)和内容完整(早停)。但有问题,例如枚举类问题,你可以拿部分文档来回答问题,也可以那更多文档来提高QA效果,所以增加第三选项,可以继续完善。这个选项和内容不完整没有什么根本的不同,都是某种意义上的内容不完整。
class RefineSummary(BaseModel):query_context_reasoning: str = Field(description="关于问题、先前内容总结、新内容之间联系的思考")refined_summary: str = Field(description="整合局部内容总结的全局总结")summary_sufficiency_reasoning: str = Field(description="关于当前总结是否足够回答问题(是否提供了所有必要的细节)的思考,此外也需要判断是否可以再扩充新文本以获得更好的回答效果")summary_sufficiency_score: int = Field(description="用100分制表示利用当前总结回答问题的效果预期分数")next_action: str = Field(description="决定下一个动作,从以下选项中选一个:内容不完整, 内容完整, 内容可继续完善")refine_parser = PydanticOutputParser(pydantic_object=RefineSummary)refine_prompt = ChatPromptTemplate.from_messages([# role, message("system", "你是一名专业的摘要专家。你的任务是生成一个最终的内容总结。"),("human", ("我提供你一份当前的总结,和一份新文本,你需要结合两者,精炼出一份新的总结,以作为参考材料回答问题。\n\n""在总结时,请注意以下几点:\n" "- 你的任务是总结问题相关的文本,而不是回答问题。" "- 包含关键事件、重要事实和核心信息。\n" "- 省略不必要的细节。\n" "- 去除重复冗余内容,使语言更加简洁和凝练。\n\n""按以下格式要求输出:\n{format_instructions}\n\n""[问题-开始]:\n{query}\n[问题-结束]\n\n""[当前内容总结-开始]:\n{previous_summary}\n[当前内容总结-结束]\n\n""[新文本-开始]:\n{current_summary}\n[新文本-结束]\n" )),]
)refine_prompt = refine_prompt.partial(format_instructions=refine_parser.get_format_instructions())llm = ChatOpenAI(base_url='http://localhost:5551/v1',api_key='EMPTY',model_name='Qwen2.5-7B-Instruct',temperature=0.2,
)refine_chain = refine_prompt | llm | refine_parser
refine_prompt.pretty_print()
================================[1m System Message [0m================================你是一名专业的摘要专家。你的任务是生成一个最终的内容总结。================================[1m Human Message [0m=================================我提供你一份当前的总结,和一份新文本,你需要结合两者,精炼出一份新的总结,以作为参考材料回答问题。在总结时,请注意以下几点:
- 你的任务是总结问题相关的文本,而不是回答问题。- 包含关键事件、重要事实和核心信息。
- 省略不必要的细节。
- 去除重复冗余内容,使语言更加简洁和凝练。按以下格式要求输出:
[33;1m[1;3m{format_instructions}[0m[问题-开始]:
[33;1m[1;3m{query}[0m
[问题-结束][当前内容总结-开始]:
[33;1m[1;3m{previous_summary}[0m
[当前内容总结-结束][新文本-开始]:
[33;1m[1;3m{current_summary}[0m
[新文本-结束]
refine_result_saves = []for indice, item in enumerate(map_results):if indice == 0:previous_summary = item.summaryelse:refine_result = refine_chain.invoke({"query":a_query,"previous_summary":previous_summary,"current_summary":item.summary,})refine_result_saves.append(refine_result)previous_summary = refine_result.refined_summaryprint(refine_result)print('='*20)
====================
query_context_reasoning='新文本提供了90版本阿修罗的另外三种优秀武器,分别是支点、别云和天丛云,补充了当前总结中未提及的武器信息。' refined_summary='90版本阿修罗的优秀武器包括荒古(排名第一)、妖刀村正(排名第二)、暗影蔽日(排名第三)、圣剑(排名第四)、支点、别云和天丛云。其中,支点适合光强修罗,别云有高黄字但存在黄字冲突问题,天丛云则有27白字且适合一觉cd换装。' summary_sufficiency_reasoning='当前总结已经涵盖了90版本阿修罗的大部分优秀武器,但新文本提供了更多细节,特别是支点、别云和天丛云的具体适用情况,这些信息对于回答问题是有帮助的。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本补充了90版本阿修罗的优秀武器中未提及的名刀32和七支刀,但未给出具体排名。当前总结中已经包含了其他排名较高的武器,因此需要更新总结以包含新文本中的信息。' refined_summary='90版本阿修罗的优秀武器包括荒古(排名第一)、妖刀村正(排名第二)、暗影蔽日(排名第三)、圣剑(排名第四)、支点、别云、天丛云、名刀32和七支刀。其中,支点适合光强修罗,别云有高黄字但存在黄字冲突问题,天丛云则有27白字且适合一觉cd换装。' summary_sufficiency_reasoning='当前总结已经包含了大部分排名较高的90版本阿修罗武器,但未提及名刀32和七支刀的具体排名。新文本提供了这两款武器的信息,因此需要更新总结。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本提供了荒古太的具体信息和妖刀村正的详细描述,补充了当前总结中未提及的内容。' refined_summary='90版本阿修罗的优秀武器排名为:1. 荒古太(未升级和升级后的技能攻击力及获取方式);2. 妖刀村正(90版本新武器,无视和额外黄字优势);3. 暗影蔽日(所有攻击力高,搭配需注意)。支点适合光强修罗,别云有高黄字但存在黄字冲突问题,天丛云则有27白字且适合一觉cd换装。' summary_sufficiency_reasoning='当前总结已经涵盖了90版本阿修罗的主要武器排行,但新文本提供了更详细的武器信息,特别是荒古太和妖刀村正的具体描述,可以进一步丰富总结内容。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本提供了90版本阿修罗武器的主流测试排名,补充了当前总结中未提及的武器排名信息。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 妖刀村正;4. 暗影蔽日;5. 天丛云。支点适合光强修罗,别云有高黄字但存在黄字冲突问题,妖刀村正适合破锁血武器。' summary_sufficiency_reasoning='当前总结包含了90版本阿修罗的主要武器排名和部分武器的详细信息,但未提及妖刀村正适合破锁血武器的信息,需要补充。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本提供了20人本环境下妖刀村正的排名和属性攻击规则,需要结合当前内容总结进行整合。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 妖刀村正;4. 暗影蔽日;5. 天丛云。支点适合光强修罗,别云有高黄字但存在黄字冲突问题,妖刀村正适合破锁血武器。20人本环境下,妖刀村正>开魔能荒古>圣剑=支点=避日,圣剑攻击力受自身属强影响,荒古属性攻击选最高值。' summary_sufficiency_reasoning='当前总结已经涵盖了90版本阿修罗的优秀武器排名和适用情况,但未完全包含20人本环境下的具体排名和属性规则,需要进一步完善。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本为空,无需补充。当前总结已经涵盖了90版本阿修罗武器的排名和适用情况。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 妖刀村正;4. 暗影蔽日;5. 天丛云。支点适合光强修罗,妖刀村正适合破锁血武器。20人本环境下,妖刀村正>开魔能荒古>圣剑=支点=避日,圣剑攻击力受自身属强影响,荒古属性攻击选最高值。' summary_sufficiency_reasoning='当前总结已经涵盖了90版本阿修罗武器的排名和适用情况,信息较为全面。' summary_sufficiency_score=95 next_action='内容完整'
====================
query_context_reasoning='新文本提供了90版本DNF修罗武器排行榜的最新信息,但与当前内容总结中的具体排名和详细分析有所差异,需要结合两者进行整合。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 无影剑;4. 妖刀村正;5. 暗影蔽日;6. 天丛云。支点适合光强修罗,妖刀村正适合破锁血武器。20人本环境下,妖刀村正>开魔能荒古>圣剑=支点=避日,圣剑攻击力受自身属强影响,荒古属性攻击选最高值。' summary_sufficiency_reasoning='当前总结提供了详细的武器排名和适用情况,但未提及无影剑的具体排名,需要补充。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本补充了90版本阿修罗武器排行的相关信息,但未直接给出具体排行结果。当前内容总结已经包含了详细的排行结果,因此需要结合新文本进一步完善。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 无影剑;4. 妖刀村正;5. 暗影蔽日;6. 天丛云。支点适合光强修罗,妖刀村正适合破锁血武器。20人本环境下,妖刀村正>开魔能荒古>圣剑=支点=避日,圣剑攻击力受自身属强影响,荒古属性攻击选最高值。' summary_sufficiency_reasoning='当前总结已经包含了详细的排行结果和武器特点,但新文本提供了更多武器的信息,可以进一步完善总结。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
query_context_reasoning='新文本提供了关于别云武器和支点的额外信息,补充了当前内容总结中未提及的装备搭配和属性影响。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 无影剑;4. 妖刀村正;5. 暗影蔽日;6. 天丛云。支点适合光强修罗,妖刀村正适合破锁血武器。20人本环境下,妖刀村正>开魔能荒古>圣剑=支点=避日,圣剑攻击力受自身属强影响,荒古属性攻击选最高值。别云武器适合搭配50黄字装备,支点适合幽魂套和光强修罗,圣剑100属强适合全属强套装,但释放速度慢影响手感。' summary_sufficiency_reasoning='当前总结已经涵盖了主要的武器排名和属性,但补充了关于别云武器和支点的额外信息,使得总结更加全面。' summary_sufficiency_score=95 next_action='内容完整'
====================
query_context_reasoning='新文本补充了90版本阿修罗武器排行中的两个重要武器,暗影蔽日和妖刀村正,并指出了它们的适用流派。' refined_summary='90版本阿修罗的优秀武器排名为:1. 吞噬魔-支点;2. 开魔能荒古;3. 无影剑;4. 妖刀村正;5. 暗影蔽日;6. 天丛云。支点适合光强修罗,妖刀村正适合破锁血武器。20人本环境下,妖刀村正>开魔能荒古>圣剑=支点=避日。暗影蔽日适用于幽魂流光。' summary_sufficiency_reasoning='当前总结涵盖了90版本阿修罗的主要武器排名及其适用性,但未提及所有武器的详细对比,可以进一步完善。' summary_sufficiency_score=85 next_action='内容可继续完善'
====================
score_threshold = 95
refine_result_saves = []for indice, item in enumerate(map_results):if indice == 0:previous_summary = item.summaryelse:refine_result = refine_chain.invoke({"query":a_query,"previous_summary":previous_summary,"current_summary":item.summary,})refine_result_saves.append(refine_result)previous_summary = refine_result.refined_summary# 根据分数早停if refine_result.summary_sufficiency_score > score_threshold:break# 根据大模型的判断早停if refine_result.next_action == '内容完整':breakprint(refine_result)print('='*20)相关文章:
变相提高大模型上下文长度-RAG文档压缩-2.带早停机制的map-refine
我试过用map-refine方法来精炼上下文,由于它是线性的,运行时间随着文档数量线性增长。所以可以考虑通过判断上下文是否可以满足QA来提前结束过程。 import os import json from langchain_core.documents import Documentdata [] file_path ./data/da…...
大模型训练为什么依赖GPU
近年来,随着人工智能技术的飞速发展,特别是深度学习领域的进步,大模型的训练逐渐成为研究和工业界的热点。作为大模型训练中的核心硬件,GPU(图形处理单元)扮演了至关重要的角色。那么,为什么大模…...
二叉树链式结构:数据结构中的灵动之舞
目录 前言 一、 前置说明 二、二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3 后序遍历 2.4层序遍历 三、二叉树的遍历的应用 3.1二叉树节点个数: 3.2二叉树的高度 3.3 二叉树第k层的节点的个数 3.4二叉树的查找 总结 前言 在数据结构的世界里,二叉…...
【kafka系列】Kafka如何保证消息不丢失?
目录 1. 生产者端:确保消息成功发送到Broker 核心机制: 关键步骤: 2. Broker端:持久化与副本同步 核心机制: 关键源码逻辑: 3. 消费者端:可靠消费与Offset提交 核心机制: 关…...
新建github操作
1.在github.com的主页根据提示新建一个depository。 2.配置用户名和邮箱 git config --global user.name "name" git config --global user.email "email" 3.生成ssh秘钥 ssh-keygen -t rsa 找到public key 对应的文件路径 cat /root/.ssh/id_rsa 复制显…...
第 15 天:数据存储,打造存档 读取系统!
🎯 目标: ✅ 掌握 UE5 SaveGame 存档系统 ✅ 在 C 创建存档类,存储游戏数据 ✅ 实现存档 & 读取功能,让游戏状态可持久化 ✅ 在 BP_PlayerCharacter 里实现: * 游戏开始时自动加载存档 * 玩家受到伤害时自动存档 …...
Flutter 异步编程利器:Future 与 Stream 深度解析
目录 一、Future:处理单次异步操作 1. 概念解读 2. 使用场景 3. 基本用法 3.1 创建 Future 3.2 使用 then 消费 Future 3.3 特性 二、Stream:处理连续异步事件流 1. 概念解读 2. 使用场景 3. 基本用法 3.1 创建 Stream 3.2 监听 Stream 3.…...
Java短信验证功能简单使用
注册登录阿里云官网:https://www.aliyun.com/ 搜索短信服务 自己一步步申请就可以了 开发文档: https://next.api.aliyun.com/api-tools/sdk/Dysmsapi?version2017-05-25&languagejava-tea&tabprimer-doc 1.引入依赖 <dependency>…...
React进阶之React核心源码解析(一)
React核心源码解析 react 特点CPU卡顿IO 卡顿 新老 react 架构对比v15v16.8Scheduler 调度器Reconciler 协调器 React fiber原理更新dommount 构建过程 render阶段 — scheduler reconcilerreact源码解析react-domreact-dom/src/client/ReactDOMRoot.js react-reconcilerreact-…...
【Vue】打包vue3+vite项目发布到github page的完整过程
文章目录 第一步:打包第二步:github仓库设置第三步:安装插件gh-pages第四步:两个配置第五步:上传github其他问题1. 路由2.待补充 参考文章: 环境: vue3vite windows11(使用终端即可&…...
类加载机制及双亲委派模型
一、引言 二、类加载流程 1. 加载 2. 连接 2.1 验证 2.2 准备 2.3 解析 3. 初始化 三、类加载器 类加载器的类型 双亲委派模型 打破双亲委派模型 双亲委派模型优点 一、引言 在 Java 的运行机制中,类加载是一个至关重要的环节。它不仅决定了 Java 程序的动态…...
tcp/ip协议设置参数,tcp/ip协议6设置
TCP/IP协议设置参数主要涉及到IP地址、子网掩码、网关地址以及DNS服务器地址等关键参数。这些参数的配置确保了网络设备能够正确地接入互联网并与其他设备进行通信。以下是对这些参数设置的详细说明: 1. IP地址 定义:IP地址是互联网中用于唯一标识每一…...
如何在Java EE中使用标签库?
在Java EE(现在称为Jakarta EE)中使用标签库(Tag Library),主要是通过JSP标准标签库(JSTL)或自定义标签库来实现的。标签库允许在JSP页面中使用自定义的标签,从而简化页面逻辑、增强…...
【java】方法的基本内存原理(栈和堆)
java内存主要分为栈和堆,方法相关的部分主要在栈内存里,每个方法调用时会在栈里创建一个栈帧,存放局部变量和方法执行的信息。执行完后栈帧被销毁,局部变量消失。而对象实例存在堆里,由垃圾回收器管理。 **Java方法内…...
今日AI和商界事件(2025-02-15)
根据2025年2月15日的科技动态,以下是今日AI领域的重要事件及相关进展总结: 1. DeepSeek日活突破3000万,开源生态加速AI普惠 里程碑意义:开源大模型DeepSeek宣布日活跃用户数突破3000万,其R1模型凭借开源策略和低成本优…...
尚硅谷课程【笔记】——大数据之Hadoop【一】
课程视频链接:尚硅谷Hadoop3.x教程 一、大数据概论 1)大数据概念 大数据(Big Data):指无法再一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发…...
SQL 建表语句详解
SQL 建表语句详解 在 SQL 中,创建表(Table)是数据库设计的基础。表是存储数据的基本单位,每个表由行和列组成。创建表的过程涉及到定义表的结构,包括列名、数据类型、约束等。本文将详细介绍 SQL 中的建表语句&#x…...
wordpress主题插件开发中高频使用的38个函数
核心模板函数 get_header()/get_footer()/get_sidebar() – 加载模板部件 the_title()/the_content()/the_excerpt() – 显示文章标题、内容、摘要 the_post() – 循环中获取文章数据 bloginfo(‘url’) – 获取站点URL wp_head()/wp_footer() – 输出头部/尾部代码 wp_n…...
DockerFile优化镜像体积
title: DockerFile优化镜像体积 date: 2025-02-15 15:22:40 tags: DockerFile优化镜像体积DockerFile优化镜像体积 DockerFile优化镜像体积前文回顾:一、细数优化镜像体积的思路与方式二、优化Dockfile文件编辑 Dockerfile2文件三、构建镜像四、运行镜像五、查看运行效果原文 …...
使用 playwright 自定义 js 下载的路径和文件名
遇到一个问题,点击按钮自动下载文件,路径和文件名都不能自定义,可以用 playwright 来解决这个问题 from playwright.sync_api import sync_playwright import os import time class ExcelDownloader: def __init__(self, download_pat…...
Open FPV VTX开源之OSD使用分类
Open FPV VTX开源之OSD使用分类 1. 源由2. 硬件2.1 【天空端】SigmaStar2.2 【天空端】Raspberry Pi2.3 【地面端】 3. 软件3.1 天空端软件3.2 地面端软件 4. 分类4.1 嵌入式OSD分类A1-嵌入式OSD:SigmaStar Android分类A2-嵌入式OSD:SigmaStar Hi3536分…...
题解:洛谷 P4113 [HEOI2012] 采花
题目https://www.luogu.com.cn/problem/P4113 运用类似于P1972 [SDOI2009] HH的项链的操作,将数据离线下来处理。 按照区间右端点从小到大排序。 问题是数量大于等于 的时候才能算进去。 于是乎我们用两个数组维护倒数第二次出现和最后一次出现的地方。 每次在…...
linux概念详解
用户守护进程 用户空间守护进程是一些在后台运行的长期服务程序,提供系统级服务。 下面举一些例子。 网络服务: 如sshd(SSH服务)、httpd(HTTP服务)。 sshd:sshd 守护进程会在后台运行&#x…...
easyexcel快速使用
1.easyexcel EasyExcel是一个基于ava的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel 即通过java完成对excel的读写操作, 上传下载 2.easyexcel写操作 把java类中的对象写入到excel表格中 步骤 1.引入依赖 <depen…...
fetch() 与 XMLHttpRequest 的差异
fetch() 与 XMLHttpRequest 的差异 fetch() 的功能与 XMLHttpRequest 基本相同,都是向服务器发出 HTTP 请求,但有三个主要的差异。 (1)fetch()使用 Promise,不使用回调函数,因此大大简化了写法࿰…...
【java面向对象的三大特性】封装、继承和多态
目录标题 一、封装(Encapsulation):二、继承(Inheritance):三、多态(Polymorphism):1. 多态的三个必要条件:2.多态的具体实现:3.多态的使用场景&a…...
c# textbox 设置不获取光标
[DllImport("user32",EntryPoint "HideCaret")] private static extern bool HideCaret(IntPtr hWnd); //需引入命名空间using System.Runtime.InteropServices; private void Txt_RecInfo_MouseDown(object sender, MouseEventArgs e) { …...
算法13-BFPRT算法
一、BFPRT 算法概念 BFPRT 算法(Blum-Floyd-Pratt-Rivest-Tarjan 算法)是一种用于在无序数组中快速找到第 k 小(或第 k 大)元素的高效算法。它的时间复杂度为 O(n),在最坏情况下也能保证线性时间复杂度。BFPRT 算法的…...
android studio下载安装汉化-Flutter安装
1、下载android studio官方地址:(这个网址可能直接打不开,需要VPN) https://developer.android.com/studio?hlzh-cn mac版本分为X86和arm版本,电脑显示芯片是Inter的就是x86的,显示m1和m2的就是arm的 …...
Seaweedfs(master volume filer) docker run参数帮助文档
文章目录 进入容器后执行获取weed -h英文中文 weed server -h英文中文 weed volume -h英文中文 关键点测试了一下,这个-volume.minFreeSpace string有点狠,比如设置值为10(10%),它直接给系统只留下10%的空间࿰…...
