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

LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略

LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略

目录

STORM系统简介

1、Co-STORM

2、更新新闻

STORM系统安装和使用方法

1、安装

pip安装

直接克隆GitHub仓库

2、模型和数据集

两个数据集

FreshWiki数据集

WildSeek数据集

支持的模型

3、使用方法

STORM (STORMWikiRunner)

Co-STORM (CoStormRunner)

4、管道定制

STORM

Co-STORM

案例应用

1、STORM示例

2、Co-STORM示例


STORM系统简介

2024年4月发布,STORM是一个基于大型语言模型(LLM)的知识整理系统,能够根据互联网搜索结果从零开始撰写类似维基百科的文章,并包含参考文献。它将长文章的生成过程分解为两个阶段
>> 预写阶段:系统进行基于互联网的调研,收集参考资料并生成提纲
>> 写作阶段:系统利用提纲和参考资料生成包含引文的完整文章

STORM的核心在于自动提出高质量问题的机制。它采用两种策略来提高问题的深度和广度:
>> 视角引导式提问:根据输入主题,STORM通过调查类似主题的现有文章来发现不同的视角,并利用这些视角来控制提问过程。
>> 模拟对话:STORM模拟维基百科撰写者和主题专家之间的对话,这些对话以互联网资源为基础,使语言模型能够更新对主题的理解并提出后续问题。

STORM无法生成可以直接发表的文章(这通常需要大量编辑),但经验丰富的维基百科编辑发现它在写作前的准备阶段非常有用。超过70,000人体验过它的在线研究预览版。

GitHub地址:https://github.com/stanford-oval/storm

1、Co-STORM

Co-STORM是STORM的增强版,它允许人机协作,以支持更一致和更符合用户偏好的信息查找和知识整理。Co-STORM引入了协作式话语协议,通过轮次管理策略支持人机之间的流畅协作,包含以下几个角色:
>> Co-STORM LLM专家:基于外部知识源生成答案,或根据对话历史提出后续问题。
>> 主持人:根据检索器发现但未在之前的轮次中直接使用到的信息,生成发人深省的问题。问题生成也可以基于外部信息!
>> 人类用户:人类用户可以(1)观察对话以更深入地理解主题,或(2)主动参与对话,通过插入话语来引导讨论重点。

Co-STORM还维护一个动态更新的思维导图,它将收集到的信息组织成层次化的概念结构,旨在构建人类用户和系统之间的共享概念空间。思维导图已被证明有助于减少长时间深入讨论时的认知负担。

STORM和Co-STORM都以高度模块化的方式使用dspy实现。总而言之,STORM和Co-STORM提供了一个强大的框架,用于构建基于LLM的知识整理系统,并支持高度的自定义和扩展。

2、更新新闻

[2025/01] 在知识风暴 v1.1.0 版本中,我们为语言模型和嵌入模型添加了 litellm 集成

[2024/09] Co-STORM 代码库现已发布,并集成到 knowledge-storm Python 包 v1.0.0 中。运行 pip install knowledge-storm --upgrade 进行查看。

[2024 年 9 月] 我们推出协作式 STORM(Co-STORM)以支持人类与 AI 协同进行知识整理!Co-STORM 论文已被 EMNLP 2024 主会议录用。

[2024/07] 您现在可以使用“pip install knowledge-storm”来安装我们的软件包!

[2024/07] 我们新增了 VectorRM 以支持基于用户提供的文档进行知识关联,这补充了现有的搜索引擎支持(YouRM、BingSearch)。(详情请见 #58)

[2024/07] 我们为开发者发布了演示版的轻量级界面,这是一个使用 Python 中的 Streamlit 框架构建的极简用户界面,非常适合本地开发和演示托管(查看 #54)

[2024 年 6 月] 我们将在 2024 年北美计算语言学协会年会(NAACL 2024)上展示 STORM!6 月 17 日请在海报展示会 2 找到我们,或者查看我们的展示材料。

[2024/05] 我们在 rm.py 中添加了必应搜索支持。使用 GPT-4o 测试 STORM - 我们现在在演示中使用 GPT-4o 模型配置文章生成部分。

[2024/04] 我们发布了 STORM 代码库的重构版本!我们为 STORM 管道定义了接口,并重新实现了 STORM-wiki(请查看 src/storm_wiki),以展示如何实例化该管道。我们提供了 API 以支持不同语言模型的定制以及检索/搜索集成。

STORM系统安装和使用方法

1、安装

pip安装

pip install knowledge-storm

直接克隆GitHub仓库

安装源码,以便直接修改STORM引擎的行为:

git clone https://github.com/stanford-oval/storm.gitcd storm
conda create -n storm python=3.11
conda activate stormpip install -r requirements.txt

2、模型和数据集

两个数据集

FreshWiki和WildSeek,分别用于研究自动知识整理和复杂信息检索。

FreshWiki数据集

包含 100 篇高质量的维基百科文章,这些文章聚焦于 2022 年 2 月至 2023 年 9 月期间编辑次数最多的页面。更多详情请参阅 STORM 论文的 2.1 节。可以直接从 Huggingface 下载数据集。为缓解数据污染问题,我们存档了数据构建流程的源代码,以便日后重复使用。

WildSeek数据集

为了研究用户在复杂信息搜索任务中的兴趣,我们在野外利用从网络研究预览中收集的数据创建了 WildSeek 数据集。我们对数据进行了下采样,以确保主题的多样性和数据的质量。每个数据点都是一对,包括一个主题和用户针对该主题进行深度搜索的目标。更多详情,请参阅 Co-STORM 论文的第 2.2 节和附录 A。

支持的模型

>> 语言模型组件:litellm 支持的所有语言模型,https://docs.litellm.ai/docs/providers。
>> 嵌入模型组件:litellm 支持的所有嵌入模型,https://docs.litellm.ai/docs/embedding/supported_embedding。
>> 检索模块组件:YouRM、BingSearch、VectorRM、SerperRM、BraveRM、SearXNG、DuckDuckGoSearchRM、TavilySearchRM、GoogleSearch 和 AzureAISearch

无论是 STORM 还是 Co-STORM,它们都在信息整理层工作,您需要分别设置信息检索模块和语言模型模块,以创建它们各自的运行器类。

3、使用方法

STORM和Co-STORM都提供了Python接口。

STORM (STORMWikiRunner)

STORM的知识整理引擎定义为一个简单的Python STORMWikiRunner 类。以下是一个使用You.com搜索引擎和OpenAI模型的例子:

# 导入所需的模块
import os
from knowledge_storm import STORMWikiRunnerArguments, STORMWikiRunner, STORMWikiLMConfigs
from knowledge_storm.lm import LitellmModel
from knowledge_storm.rm import YouRM# 初始化语言模型配置
lm_configs = STORMWikiLMConfigs()# 获取环境变量中的OpenAI API密钥,并设置模型参数
openai_kwargs = {'api_key': os.getenv("OPENAI_API_KEY"),  # 从环境变量中获取API密钥'temperature': 1.0,  # 控制生成文本的随机性'top_p': 0.9,  # 控制生成文本的多样性
}# STORM是一个语言模型系统,不同的组件可以使用不同的模型以达到成本和质量之间的平衡
# 实践中,选择一个更便宜/更快的模型用于`conv_simulator_lm`,用于拆分查询和在对话中合成答案
# 选择一个更强大的模型用于`article_gen_lm`,以生成带有引用的可验证文本
gpt_35 = LitellmModel(model='gpt-3.5-turbo', max_tokens=500, **openai_kwargs)  # 创建一个GPT-3.5模型实例
gpt_4 = LitellmModel(model='gpt-4o', max_tokens=3000, **openai_kwargs)  # 创建一个GPT-4模型实例# 设置不同的语言模型用于不同的任务
lm_configs.set_conv_simulator_lm(gpt_35)  # 对话模拟器
lm_configs.set_question_asker_lm(gpt_35)  # 问题提问器
lm_configs.set_outline_gen_lm(gpt_4)  # 大纲生成器
lm_configs.set_article_gen_lm(gpt_4)  # 文章生成器
lm_configs.set_article_polish_lm(gpt_4)  # 文章润色器# 查看STORMWikiRunnerArguments类以获取更多配置选项
engine_args = STORMWikiRunnerArguments(...)  # 初始化运行参数# 初始化资源管理器
rm = YouRM(ydc_api_key=os.getenv('YDC_API_KEY'), k=engine_args.search_top_k)  # 使用环境变量中的API密钥和搜索参数# 创建STORMWikiRunner实例
runner = STORMWikiRunner(engine_args, lm_configs, rm)# 使用简单的run方法调用STORMWikiRunner实例
topic = input('Topic: ')  # 获取用户输入的主题
runner.run(topic=topic,  # 传入主题do_research=True,  # 是否进行研究do_generate_outline=True,  # 是否生成大纲do_generate_article=True,  # 是否生成文章do_polish_article=True,  # 是否润色文章
)
runner.post_run()  # 运行后处理
runner.summary()  # 输出摘要# 参数说明:
# do_research: 如果为True,模拟不同观点的对话以收集关于主题的信息;否则,加载结果。
# do_generate_outline: 如果为True,为该主题生成大纲;否则,加载结果。
# do_generate_article: 如果为True,基于大纲和收集的信息生成文章;否则,加载结果。
# do_polish_article: 如果为True,通过添加摘要部分和(可选)删除重复内容来润色文章;否则,加载结果。

Co-STORM (CoStormRunner)

Co-STORM的知识整理引擎定义为一个简单的Python CoStormRunner 类。以下是一个使用Bing搜索引擎和OpenAI模型的例子:

# 导入协同STORM引擎的相关模块
from knowledge_storm.collaborative_storm.engine import CollaborativeStormLMConfigs, RunnerArgument, CoStormRunner
from knowledge_storm.lm import LitellmModel
from knowledge_storm.logging_wrapper import LoggingWrapper
from knowledge_storm.rm import BingSearch# Co-STORM采用了与STORM相同的多个LM系统范式
lm_config = CollaborativeStormLMConfigs()  # 初始化协同STORM的语言模型配置# 设置OpenAI API的参数
openai_kwargs = {"api_key": os.getenv("OPENAI_API_KEY"),  # 从环境变量中获取API密钥"api_provider": "openai",  # API提供商"temperature": 1.0,  # 控制生成文本的随机性"top_p": 0.9,  # 控制生成文本的多样性"api_base": None,  # API基础URL
}# 创建不同用途的语言模型实例
question_answering_lm = LitellmModel(model=gpt_4o_model_name, max_tokens=1000, **openai_kwargs)  # 问题回答模型
discourse_manage_lm = LitellmModel(model=gpt_4o_model_name, max_tokens=500, **openai_kwargs)  # 话语管理模型
utterance_polishing_lm = LitellmModel(model=gpt_4o_model_name, max_tokens=2000, **openai_kwargs)  # 话语润色模型
warmstart_outline_gen_lm = LitellmModel(model=gpt_4o_model_name, max_tokens=500, **openai_kwargs)  # 大纲生成模型
question_asking_lm = LitellmModel(model=gpt_4o_model_name, max_tokens=300, **openai_kwargs)  # 问题提问模型
knowledge_base_lm = LitellmModel(model=gpt_4o_model_name, max_tokens=1000, **openai_kwargs)  # 知识库模型# 将创建的模型实例设置到配置中
lm_config.set_question_answering_lm(question_answering_lm)
lm_config.set_discourse_manage_lm(discourse_manage_lm)
lm_config.set_utterance_polishing_lm(utterance_polishing_lm)
lm_config.set_warmstart_outline_gen_lm(warmstart_outline_gen_lm)
lm_config.set_question_asking_lm(question_asking_lm)
lm_config.set_knowledge_base_lm(knowledge_base_lm)# 查看Co-STORM的RunnerArguments类以获取更多配置选项
topic = input('Topic: ')  # 获取用户输入的主题
runner_argument = RunnerArgument(topic=topic, ...)  # 初始化运行参数# 初始化日志包装器
logging_wrapper = LoggingWrapper(lm_config)# 初始化Bing搜索资源管理器
bing_rm = BingSearch(bing_search_api_key=os.environ.get("BING_SEARCH_API_KEY"),k=runner_argument.retrieve_top_k)  # 使用环境变量中的API密钥和检索参数# 创建CoStormRunner实例
costorm_runner = CoStormRunner(lm_config=lm_config,runner_argument=runner_argument,logging_wrapper=logging_wrapper,rm=bing_rm)# 使用warmstart()和step(...)方法调用CoStormRunner实例# 热启动系统,建立Co-STORM与用户之间的共享概念空间
costorm_runner.warm_start()# 通过协作话语逐步进行
# 可以按任意顺序运行以下任一代码片段,次数不限
# 观察对话:
conv_turn = costorm_runner.step()
# 主动引导对话,注入用户话语:
costorm_runner.step(user_utterance="YOUR UTTERANCE HERE")# 根据协作话语生成报告
costorm_runner.knowledge_base.reorganize()  # 重新组织知识库
article = costorm_runner.generate_report()  # 生成报告
print(article)  # 打印报告

4、管道定制

STORM

如果您已安装源代码,可以根据自己的使用场景对 STORM 进行定制。STORM 引擎由 4 个模块组成:
>> 知识整理模块:收集给定主题的广泛信息。
>> 大纲生成模块:通过生成分层大纲来组织收集到的信息。
>> 文章生成模块:用收集到的信息填充生成的大纲。
>> 文章润色模块:优化和改进所写的文章,使其呈现效果更佳。

每个模块的接口在 knowledge_storm/interface.py 中定义,而它们的实现则在 knowledge_storm/storm_wiki/modules/ 中实例化。这些模块可以根据您的具体需求进行定制(例如,以项目符号格式生成章节,而非完整段落)。

Co-STORM

如果您已安装源代码,可以根据自己的使用场景对 Co-STORM 进行自定义。

Co-STORM 引入了多种 LLM 代理类型(即 Co-STORM 专家和调解员)。LLM 代理接口在 knowledge_storm/interface.py 中定义,而其实现则在 knowledge_storm/collaborative_storm/modules/co_storm_agents.py 中实例化。不同的 LLM 代理策略可以进行自定义。

Co-STORM 引入了一种协作式对话协议,其核心功能集中在回合策略管理上。我们通过 knowledge_storm/collaborative_storm/engine.py 中的 DiscourseManager 提供了回合策略管理的一个示例实现。它可以进行自定义和进一步改进。

5、在线测试

Write a hot news article about the DeepSeek-R1 model based on the latest authoritative sources

案例应用

GitHub项目提供了示例脚本(位于examples文件夹),用于快速启动STORM和Co-STORM,并配置不同的参数。建议使用secrets.toml文件设置API密钥。

项目还提供了自定义流水线的方法,允许用户根据自身需求修改知识整理模块、提纲生成模块、文章生成模块和文章润色模块。 Co-STORM的自定义则更加灵活,允许自定义LLM代理策略和协作式话语协议。

1、STORM示例

运行以下命令可以使用GPT系列模型和默认配置运行STORM:

python examples/storm_examples/run_storm_wiki_gpt.py \--output-dir $OUTPUT_DIR \--retriever bing \--do-research \--do-generate-outline \--do-generate-article \--do-polish-article

更多自定义语言模型或自定义语料库的例子,请参考examples/storm_examples/README.md。

2、Co-STORM示例

运行以下命令可以使用GPT系列模型和默认配置运行Co-STORM (需要在secrets.toml中设置BING_SEARCH_API_KEY和ENCODER_API_TYPE):

python examples/costorm_examples/run_costorm_gpt.py \--output-dir $OUTPUT_DIR \--retriever bing

相关文章:

LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略

LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略 目录 STORM系统简介 1、Co-STORM 2、更新新闻 STORM系统安装和使用方法 1、安装 pip安装 直接克隆GitHub仓库 2、模型和数据集 两个数据集 FreshWiki数据集 WildSeek数据集 支持…...

鸿蒙HarmonyOS实战-ArkUI动画(页面转场动画)_鸿蒙arkui tab 切换动画

PageTransitionExit({type?: RouteType,duration?: number,curve?: Curve | string,delay?: number}) 在HarmonyOS中,PageTransitionEnter和PageTransitionExit是用于控制页面切换动画的参数。它们分别表示页面进入和退出时的动画。1. type(动画类型…...

图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)

文章目录 前言1.Camport ROS2 SDK 介绍1.1 Camport ROS2 SDK源文件介绍1.2 Camport ROS2 SDK工作流程1.2.1 包含头文件1.2.2 2 初始化 ROS 2 节点1.2.3 创建节点对象1.2.4 创建发布者对象并实现发布逻辑1.2.5 启动 ROS 2 1.3 ROS2 SDK环境配置与编译1.3.1 Ubuntu 20.04 下ROS2 …...

小程序的协同工作与发布

1.小程序API的三大分类 2.小程序管理的概念,以及成员管理两个方面 3.开发者权限说明以及如何维护项目成员 4.小程序版本...

解锁维特比算法:探寻复杂系统的最优解密码

引言 在复杂的技术世界中,维特比算法以其独特的魅力和广泛的应用,成为通信、自然语言处理、生物信息学等领域的关键技术。今天,让我们一同深入探索维特比算法的奥秘。 一、维特比算法的诞生背景 维特比算法由安德鲁・维特比在 1967 年提出…...

计算机网络一点事(20)

IEEE802.11 无线局域网 分类有无基础设施 星型拓扑,基本服务集BSS一基站多移动站,服务集标识符SSID不超过32b,可接入802.3 漫游:移动站从一个基本服务集切换到另一个(类似换联WiFi) 802.11帧&#xff1…...

java求职学习day23

MySQL 单表 & 约束 & 事务 1. DQL操作单表 1.1 创建数据库,复制表 1) 创建一个新的数据库 db2 CREATE DATABASE db2 CHARACTER SET utf8; 2) 将 db1 数据库中的 emp 表 复制到当前 db2 数据库 1.2 排序 通过 ORDER BY 子句 , 可以将查询出的结果进行排序 ( 排序只…...

Vue-cli 脚手架搭建

安装node.js 官网下载node.js安装包,地址:Node.js — Download Node.js 先在node.js即将要安装的路径下创建两个文件夹:node_cache(缓存)、node_global(全局) 点击安装包&#xf…...

认识小程序的基本组成结构

1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件) 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观...

Spring Boot 热部署实现指南

在开发 Spring Bot 项目时,热部署功能能够显著提升开发效率,让开发者无需频繁重启服务器就能看到代码修改后的效果。下面为大家详细介绍一种实现 Spring Boot 热部署的方法,同时也欢迎大家补充其他实现形式。 步骤一、开启 IDEA 自动编译功能…...

深度学习编译器的演进:从计算图到跨硬件部署的自动化之路

第一章 问题的诞生——深度学习部署的硬件困境 1.1 计算图的理想化抽象 什么是计算图? 想象你正在组装乐高积木。每个积木块代表一个数学运算(如加法、乘法),积木之间的连接代表数据流动。深度学习框架正是用这种"积木拼接…...

【数据结构】_顺序表经典算法OJ(力扣版)

目录 1. 移除元素 1.1 题目描述及链接 1.2 解题思路 1.3 程序 2. 合并两个有序数组 1.1 原题链接及题目描述 1.2 解题思路 1.3 程序 1. 移除元素 1.1 题目描述及链接 原题链接:27. 移除元素 - 力扣(LeetCode) 题目描述&#xff1a…...

数据结构:队列篇

图均为手绘,代码基于vs2022实现 系列文章目录 数据结构初探: 顺序表 数据结构初探:链表之单链表篇 数据结构初探:链表之双向链表篇 链表特别篇:链表经典算法问题 数据结构:栈篇 文章目录 系列文章目录前言一.队列的概念和结构1.1概念一、动态内存管理优势二、操作效率与安全性…...

第05章 17 Contour 过滤器介绍与例子

vtkContourFilter 是 VTK(Visualization Toolkit)中的一个关键类,用于从输入数据生成等值线或等值面。它是基于阈值的过滤器,可以从标量字段中提取等值线或等值面。vtkContourFilter 的核心功能是根据用户指定的值生成等值线或等值…...

【落羽的落羽 数据结构篇】顺序表

文章目录 一、线性表二、顺序表1. 概念与分类2. 准备工作3. 静态顺序表4. 动态顺序表4.1 定义顺序表结构4.2 顺序表的初始化4.3 检查空间是否足够4.3 尾部插入数据4.4 头部插入数据4.5 尾部删除数据4.6 头部删除数据4.7 在指定位置插入数据4.8 在指定位置删除数据4.9 顺序表的销…...

AI编程:如何编写提示词

这是小卷对AI编程工具学习的第2篇文章,今天讲讲如何编写AI编程的提示词,并结合实际功能需求案例来进行开发 1.编写提示词的技巧 好的提示词应该是:目标清晰明确,具有针对性,能引导模型理解问题 下面是两条提示词的对…...

DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?

近年来,人工智能(AI)领域发展迅猛,大语言模型(LLMs)为通用人工智能(AGI)的发展开辟了道路。OpenAI 的 o1 模型表现非凡,它引入的创新性推理时缩放技术显著提升了推理能力…...

高阶C语言|深入理解字符串函数和内存函数

文章目录 前言1.求字符串长度1.1 字符串长度函数:strlen模拟实现 2.长度不受限制的字符串函数2.1 字符串拷贝函数:strcpy模拟实现 2.2 字符串连接函数:strcat模拟实现 2.3 字符串比较函数:strcmp模拟实现 3.长度受限制的字符串函数…...

UE学习日志#17 C++笔记#3 基础复习3

19.2 [[maybe_unused]] 禁止编译器在未使用某些内容时发出警告 19.3 [[noreturn]] 永远不会把控制权返回给调用点 19.4 [[deprecated]] 标记为已弃用,仍然可以使用但是不鼓励使用 可以加参数表示弃用的原因[[deprecated("")]] 19.5 [[likely]]和[[un…...

团体程序设计天梯赛-练习集——L1-028 判断素数

前言 一道10分的题目,相对来说比较简单,思考的时候要仔细且活跃,有时候在写代码的时候一些代码的出现很多余,并且会影响最后的结果 L1-028 判断素数 本题的目标很简单,就是判断一个给定的正整数是否素数。 输入格式…...

从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础图形库实现)

目录 基础图形库的抽象 抽象图形 抽象点 设计我们的抽象 实现我们的抽象 测试 抽象线 设计我们的抽象 实现我们的抽象 绘制垂直的和水平的线 使用Bresenham算法完成任意斜率的绘制 绘制三角形和矩形 矩形 三角形 实现 绘制圆,圆弧和椭圆 继续我们的…...

创新创业计划书|建筑垃圾资源化回收

目录 第1部分 公司概况........................................................................ 1 第2部分 产品/服务...................................................................... 3 第3部分 研究与开发.................................................…...

反射、枚举以及lambda表达式

一.反射 1.概念:Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么&am…...

ROS应用之IMU碰撞检测与接触事件识别

前言 碰撞检测与接触事件识别是机器人与环境交互中的重要任务,尤其是在复杂的动态环境中。IMU(惯性测量单元)作为一种高频率、低延迟的传感器,因其能够检测加速度、角速度等动态变化而成为实现碰撞检测的核心手段之一。结合先进的…...

docker安装MySQL8:docker离线安装MySQL、docker在线安装MySQL、MySQL镜像下载、MySQL配置、MySQL命令

一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令 docker pull mysql:8.0.41 2、离线包下载 两种方式: 方式一: -)在一台能连外网的linux上安装docker执行第一步的命令下载镜像 -)导出 # 导出镜…...

android安卓用Rime

之前 [1] 在 iOS 配置用上自改方案 [2],现想在安卓也用上。Rime 主页推荐了两个安卓平台支持 rime 的输入法 [3]: 同文 Tongwen Rime Input Method Editor,但在我的 Realme X2 Pro 上似乎有 bug:弹出的虚拟键盘只有几个 switcher…...

每日一博 - 三高系统架构设计:高性能、高并发、高可用性解析

文章目录 引言一、高性能篇1.1 高性能的核心意义 1.2 影响系统性能的因素1.3 高性能优化方法论1.3.1 读优化:缓存与数据库的结合1.3.2 写优化:异步化处理 1.4 高性能优化实践1.4.1 本地缓存 vs 分布式缓存1.4.2 数据库优化 二、高并发篇2.1 高并发的核心…...

C++ 中的引用(Reference)

在 C 中,引用(Reference)是一种特殊的变量类型,它提供了一个已存在变量的别名。引用在很多场景下都非常有用,比如函数参数传递、返回值等。下面将详细介绍 C 引用的相关知识。 1. 引用的基本概念和语法 引用是已存在…...

负荷预测算法模型

1. 时间序列分析方法 时间序列分析方法是最早被用来进行电力负荷预测的方法之一,它基于历史数据来构建数学模型,以描述时间与负荷值之间的关系。这种方法通常只考虑时间变量,不需要大量的输入数据,因此计算速度快。然而&#xff…...

【C语言】内存管理

【C语言】内存管理 文章目录 【C语言】内存管理1.概念2.库函数3.动态分配内存malloccalloc 4.重新调整内存的大小和释放内存reallocfree 1.概念 C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 在 C 语言中&#xff0c;内存是通过…...