【GraphRAG】微软 graphrag 效果实测

GraphRAG

本文将基于以下来源,对Microsoft GraphRAG分析优缺点、以及示例实测分析。

1. Source

代码仓库:

Welcome to GraphRAGicon-default.png?t=N7T8https://microsoft.github.io/graphrag/

微软文章1(2024.2.13):GraphRAG: Unlocking LLM discovery on narrative private data

Microsoft First Blogicon-default.png?t=N7T8https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/

微软文章2(2024.7.2):GraphRAG: New tool for complex data discovery now on GitHub

Second Blogicon-default.png?t=N7T8https://www.microsoft.com/en-us/research/blog/graphrag-new-tool-for-complex-data-discovery-now-on-github/

论文:

From Local to Globalicon-default.png?t=N7T8https://arxiv.org/pdf/2404.16130

2. Advantages

使用新闻文章中的暴力事件信息(VIINA)数据集进行调查。选择此数据集是因为其复杂性以及存在不同意见和部分信息。这是一个混乱的现实世界测试用例,它是最近才出现的,不包括在LLM基础模型的训练中。

这里平分秋色,但是追加一步的提问,由于不存在对应的直接上下文,所以Baseline没检索到。

除了论文中提到的相对性比较之外,还使用SelfCheckGPT对可信度进行绝对测量,以帮助确保基于源材料的事实、连贯的结果。结果表明,GraphRAG的忠实度与基线RAG相似。

而在7月的文章中,再次强调:

当在社区层次结构的任何级别使用社区摘要时,GraphRAG在全面性和多样性方面都优于朴素的RAG(约70-80%的获胜率)。

使用中级和低级社区摘要的GraphRAG在这些指标上也比源文本摘要表现更好,token成本更低(每次查询约20-70%的令牌使用率)。性能与最高级别社区的分层源文本摘要具有竞争力,令牌成本大大降低(每次查询约2-3%的令牌使用率)。如图所示。


翻译一下就是:

问题:哪些公众人物在各种娱乐文章中被反复提及?

简单 RAG 回复

被反复提及的公众人物包括<公众人物1, 2, 3和4>。这些人物因各种原因被突出,从他们的职业成就到个人生活。

  • <公众人物1> [...]
  • <公众人物2> [...]
  • <公众人物3> [...]
  • <公众人物4> [...]

这些人物因其高调的地位和公众对其职业和个人生活的兴趣而频繁被报道。他们的活动,无论是在音乐、体育还是个人关系中,都具有显著的文化和经济影响,媒体报道和公众反应证明了这一点。

GraphRAG 回复

娱乐行业广泛且多样,涵盖电影、电视、音乐、体育和数字媒体。某些公众人物由于在这些领域中的重要贡献和影响力而脱颖而出。以下总结了在各种娱乐文章中反复提及的重要人物,反映了他们在行业中的影响力和存在感。

  • 演员和导演 [... 20个人物 ...]
  • 争议中的公众人物 [... 3个人物 ...]
  • 音乐家和高管 [... 5个人物 ...]
  • 运动员和教练 [... 7个人物 ...]
  • 影响者和企业家 [... 3个人物 ...]

这些人物在娱乐文章中反复提及,表明了他们的持续相关性以及公众对其工作的兴趣。他们的影响跨越了娱乐的各个方面,从塑造电影和电视中的文化叙事到推动音乐和数字媒体中的趋势。这些人物不仅在其各自的领域中做出贡献,而且还影响了更广泛的文化景观,常常成为社会讨论和公众话题的中心人物。


3. Limitations

Indexing is a relatively expensive operation;

虽然单次的查询成本降低了,但是建立 索引(或者说是图谱) 超级烧钱!

GraphRAG depends on a well-constructed indexing examples. For general applications (e.g. content oriented around people, places, organizations, things, etc.) we provide example indexing prompts. For unique datasets effective indexing can depend on proper identification of domain-specific concepts.

GraphRAG依赖于构造良好的索引示例。对于通用应用程序(例如,围绕人物、地点、组织、事物等进行的内容),我们提供示例索引提示。对于独特的数据集,有效的索引可能取决于对特定领域概念的适当识别。

不仅文章中提及了,论文中也有数据说明,其中的token消耗,虽然每个社区相比TS的消耗占比较少,但是每次建立索引构建出4层,消耗依旧是巨大的:


4. 示例demo 运行结果

论文的核心流程如下,使用的流程主要分为 建立索引的Indexing Time以及查询提问的Query Time.

4.1 建立索引(图谱)

我们输入约4.5万字符的《圣诞颂歌》(一本书.txt),包括空格,但是不包括空行。

《圣诞颂歌》的故事剧情在文章结尾附录处,有需要也可以先瞄一眼。

按照 chunk_size = 300 、 overlap = 100

最后拆成 230个300字符的chunk + 单个155字符chunk = 69155 字符 的文档块

抽取416个实体

分四个level,1664的最终节点,73个communities。

508条关系

我们用豆包Doubao-pro-128k替换了原本OpenAI的LLM,embedding模型选择azure_openai_embedding的text-embedding-ada-002,生成索引结束后查看了token的用量统计。

烧了95万的token!当然,也看到其他人用原生的API(加上embedding的消耗),烧了105万,7$.

根据论文生成的节点和边的关系,简单估算论文在Podcast的节点和边的数目,预计1400$ 以上?

不过文章也指出了缓解之法,就是在小规模数据集上测测性能,再迁移到大规模的数据集上。

How can users minimize the impact of GraphRAG’s limitations when using the system?

a best practice to mitigate indexing is to create a small test dataset in the target domain to ensure indexer performance prior to large indexing operations.

ps: 选择生成的LLM模型最好能够支持32k及以上的上下文,因为默认的prompt特别长,即便是chunk大小设置了300,构建节点的时候至少会出现6k的输入,一开始选择的模型能力仅有4k,导致报错。

8k的没有测试过,但是默认的entity_extraction.txt内部的prompt(few shot),算上空格空行,存在10835个字符!

4.2 全局性询问

不同query方法的框架流程介绍放在下一篇讲解,这里我们先展示效果。

我们进行了示例的全局性测试,询问两次:

python -m graphrag.query --root ./ragtest --method global "What are the top themes in this story?"

不知道是豆包能力不足还是其他原因,感觉倾向于根据节点来回复。(有点僵硬!)

method 改local,再次问询主题:

python -m graphrag.query --root ./ragtest --method local "What are the top themes in this story?"
SUCCESS: Local Search Response: In this story, several themes are prominent. One of the main themes is Scrooge's transformation. Initially, Scrooge is shown to be a harsh employer, with a negative attitude towards Christmas and his fellow human beings. However, through his encounters with various ghosts and his experiences, he undergoes a significant change and decides to improve his behavior and outlook on life [Data: Relationships (37, 72, 73, 75, 16, 18, 17, 127, 129); Entities (60)].Another theme is the significance of Christmas. It is initially not a favored holiday by Scrooge, but his interactions with the ghosts and his various experiences lead him to have a more positive view of Christmas, emphasizing its importance as a time of kindness, forgiveness, and charity [Data: Relationships (37, 285, 286, 313, 336); Entities (60)].The theme of death and its implications is also present. Scrooge is affected by the man's death and is shown various aspects related to it. This event has various implications and is connected to other characters and the spirit [Data: Relationships (159, 337, 376); Entities (354)].The story also explores the theme of family and relationships. Scrooge has relationships with his nephew and other family members, and his attitude towards them changes over the course of the story. Additionally, the Cratchit family is depicted, with their interactions and celebrations around Christmas [Data: Relationships (14, 19, 286, 427, 428); Entities (60)].Finally, the theme of employer-employee relationships is evident. Scrooge's relationship with his employees, such as Bob Cratchit, is complex. Initially, he is a harsh employer, but he later decides to improve their working conditions and salaries [Data: Relationships (127, 129)].

这个生成虽然也有根据节点关系生成的内容,但是相比global,更加自然,翻译过来如下:


在这个故事中,几个主题是突出的。其中一个主要主题是斯克鲁奇的转变。一开始,斯克鲁奇是一个严厉的雇主,对圣诞节和他的人类同胞持消极态度。然而,通过他与各种鬼魂的相遇和他的经历,他经历了一个重大的变化,并决定改善他的行为和人生观[数据:关系(37,72,73,75,16,18,17,127,129);实体(60)]。

另一个主题是圣诞节的重要性。起初,斯克鲁奇并不喜欢圣诞节,但他与鬼魂的互动以及他的各种经历使他对圣诞节有了更积极的看法,强调了圣诞节作为一个善良、宽恕和慈善的时刻的重要性[数据:关系(37,285,286,313,336);实体(60)]。

死亡的主题和它的含义也存在。斯克罗吉受到了这个人的死的影响,并被展示了与之相关的各个方面。这一事件具有各种含义,并与其他角色和精神相关联[数据:关系(159,337,376);实体(354)]。

故事还探讨了家庭和关系的主题。斯克鲁奇与他的侄子和其他家庭成员有关系,他对他们的态度随着故事的发展而改变。此外,Cratchit家族也被描绘成圣诞节前后的互动和庆祝活动[数据:Relationships (14, 19, 286, 427, 428);实体(60)]。

最后,雇主-雇员关系的主题是显而易见的。斯克鲁奇与他的雇员,如鲍勃·克拉特基特,关系复杂。最初,他是一个苛刻的雇主,但他后来决定改善他们的工作条件和工资[数据:关系(127,129)]。


4.3 局部信息提问

现在测试local的示例提问。

python -m graphrag.query \
--root ./ragtest \
--method local \
"Who is Scrooge, and what are his main relationships?"
SUCCESS: Local Search Response: Scrooge is the main character in 'A Christmas Carol'. He is initially described as a caustic, cold, grumpy, and cynical old sinner who is rich, tight-fisted, covetous, and against the celebration of Christmas. However, throughout the story, he undergoes a positive transformation.Scrooge has several important relationships:
- **Employer-Employee Relationships**: Scrooge is the employer of Bob Cratchit. Initially, he is a harsh employer, but later decides to improve Bob's working conditions and salary [Data: Relationships (127, 129)].
- **Interaction with Ghosts**: Scrooge has significant interactions with various ghosts, including Marley's Ghost and the Ghosts of Christmas Past, Present, and Yet to Come. These encounters have a profound impact on his character and worldview [Data: Relationships (72, 73, 75, 16, 18, 17)].
- **Family Connections**: Scrooge is the uncle of his nephew (referred to as Scrooge's Nephew, Fred, Your Nephew, and The Nephew in different contexts). His initial attitude towards them is not particularly warm, but this changes over the course of his experiences [Data: Relationships (34, 14, 19, 180, 216)].
- **Relationship with Christmas**: Scrooge initially has a negative attitude towards Christmas, but his encounters with the ghosts and various experiences lead him to have a more positive view of the holiday [Data: Relationships (37, 126)].
- **Old Friend and Former Partner**: Scrooge has an old friend Belle and was a partner with Jacob Marley [Data: Relationships (116, 70, 20)].
- **Fellow Apprentice**: Scrooge was a fellow apprentice with Dick Wilkins [Data: Relationship (109)].

非常nice的回答:


斯克鲁奇是《圣诞颂歌》中的主角。他最初被描述为一个刻薄、冷漠、脾气暴躁、愤世嫉俗的老罪人,他富有、吝啬、贪婪,反对庆祝圣诞节。然而,在整个故事中,他经历了一个积极的转变。

斯克鲁奇有几个重要的关系:

  • 雇主-雇员关系:斯克罗吉是鲍勃·克拉特基特的雇主。最初,他是一个苛刻的雇主,但后来决定改善鲍勃的工作条件和工资[数据:关系(127,129)]。
  • 与鬼魂的互动:斯克鲁奇与各种鬼魂有重要的互动,包括马利的鬼魂和圣诞节过去,现在和未来的鬼魂。这些遭遇对他的性格和世界观产生了深远的影响[数据:关系(72,73,75,16,18,17)]。
  • 家庭关系:斯克鲁奇是他侄子的叔叔(在不同的语境中被称为斯克鲁奇的侄子、弗雷德、你的侄子和侄子)。他最初对他们的态度不是特别热情,但随着他的经历,这种态度发生了变化[数据:关系(34,14,19,180,216)]。
  • 与圣诞节的关系:斯克鲁奇最初对圣诞节持消极态度,但他与鬼魂的接触和各种经历使他对圣诞节有了更积极的看法[数据:关系(37,126)]。
  • 老朋友和前合伙人:斯克鲁奇有一个老朋友贝尔,是雅各布·马利的合伙人[数据:关系(116,70,20)]。
  • 徒弟:斯克罗吉是迪克威尔金斯的徒弟[数据:关系(109)]。

换成global的method进行对比:

SUCCESS: Global Search Response: **Scrooge**Scrooge is a central figure in various communities. Here are his main relationships and associated details:**Employer-Employee Relationships**:
- He is the employer of The Clerk [Data: Reports (43)].
- He is also the employer of Bob Cratchit [Data: Reports (61, 67, 62, 37, 44, 9) +more].**Family Relationships**:
- He has a strained relationship with his nephew [Data: Reports (49)].
- He has a sister named Fan [Data: Reports (9, 61)].**Business Partnerships**:
- Jacob Marley was his partner [Data: Reports (63)].**Spiritual Encounters**:
- He is associated with the Spirit, with whom he has various discussions and is highly influenced [Data: Reports (26)].
- He has significant interactions with various ghosts, including Marley's Ghost and the Ghosts of Christmas Past, Present, and Yet to Come [Data: Reports (61, 67, 62, 37, 44, 9) +more].**Connections to Other Characters and Events**:
- He is associated with the Cratchit family, particularly Tiny Tim [Data: Reports (34)].
- He is involved in events related to Christmas Day. He is associated with the Bakers and the Dinner-Carriers on this day [Data: Reports (31)].
- He is also connected to the Ghost of Christmas Present, who shows him the present and blesses Bob Cratchit's house [Data: Reports (24)].
- He has a former relationship with old friend Belle and fellow apprentice Dick Wilkins. The Husband saw Scrooge and informed his wife Belle [Data: Reports (9, 61)].

斯克鲁奇是多个

社区的核心人物。以下是他主要的关系及相关细节:

雇主-雇员关系:

  • 他是职员的雇主 [数据:报告 (43)]。
  • 他也是鲍勃·克拉奇特的雇主 [数据:报告 (61, 67, 62, 37, 44, 9) +更多]。

家庭关系:

  • 他与侄子的关系紧张 [数据:报告 (49)]。
  • 他有一个叫范的妹妹 [数据:报告 (9, 61)]。

商业合作关系:

  • 雅各布·马利是他的合伙人 [数据:报告 (63)]。

灵性遭遇:

  • 他与幽灵有各种讨论,并深受其影响 [数据:报告 (26)]。
  • 他与多个幽灵有重要互动,包括马利的幽灵和过去、现在及未来的圣诞幽灵 [数据:报告 (61, 67, 62, 37, 44, 9) +更多]。

与其他角色和事件的联系:

  • 他与克拉奇特一家,特别是小蒂姆有关联 [数据:报告 (34)]。
  • 他参与了与圣诞节相关的事件,特别是与当天的面包师和送餐员有关 [数据:报告 (31)]。
  • 他还与现在的圣诞幽灵有关,幽灵向他展示了现在,并祝福了鲍勃·克拉奇特的家 [数据:报告 (24)]。
  • 他与旧友贝尔和学徒迪克·威尔金斯有过往关系。丈夫见到了斯克鲁奇并告知妻子贝尔 [数据:报告 (9, 61)]。

这本书开头有一个角色表,为了验证是否是角色表泄露太多,这里也翻译看看。

CHARACTERSBob Cratchit, clerk to Ebenezer Scrooge.
Peter Cratchit, a son of the preceding.
Tim Cratchit ("Tiny Tim"), a cripple, youngest son of Bob Cratchit.
Mr. Fezziwig, a kind-hearted, jovial old merchant.
Fred, Scrooge's nephew.Ghost of Christmas Past, a phantom showing things past.
Ghost of Christmas Present, a spirit of a kind, generous,and hearty nature.
Ghost of Christmas Yet to Come, an apparition showing the shadows of things which yet may happen.
Ghost of Jacob Marley, a spectre of Scrooge's former partner in business.Joe, a marine-store dealer and receiver of stolen goods.
Ebenezer Scrooge, a grasping, covetous old man, the surviving partner of the firm of Scrooge and Marley.
Mr. Topper, a bachelor.
Dick Wilkins, a fellow apprentice of Scrooge's.Belle, a comely matron, an old sweetheart of Scrooge's.
Caroline, wife of one of Scrooge's debtors.
Mrs. Cratchit, wife of Bob Cratchit.
Belinda and Martha Cratchit, daughters of the preceding.Mrs. Dilber, a laundress.
Fan, the sister of Scrooge.
Mrs. Fezziwig, the worthy partner of Mr. Fezziwig.

角色

鲍勃·克拉奇特,埃比尼泽·斯克鲁奇的职员。 彼得·克拉奇特,前者之子。 蒂姆·克拉奇特(简称“小蒂姆”),一个跛子,鲍勃·克拉奇特的幼子。 费泽威格先生,一位善良、快活的老商人。 弗雷德,斯克鲁奇的侄子。

圣诞节过去的幽灵,展示过去的事物。 圣诞节现在的幽灵,一个善良、慷慨、热忱的幽灵。 圣诞节未来的幽灵,展示将来可能发生的事物。 雅各布·马利的鬼魂,斯克鲁奇生意上的前合伙人。

乔,一家船舶用品商和盗窃物品的接收人。 埃比尼泽·斯克鲁奇,一个贪婪、贪得无厌的老头,是斯克鲁奇和马利公司的幸存的合伙人。 陶普先生,一个单身汉。 迪克·威尔金斯,斯克鲁奇的一个学徒。

贝尔,一个漂亮的已婚妇女,是斯克鲁奇的一个旧情人。 卡罗琳,斯克鲁奇一个债务人的妻子。 克拉奇特夫人,鲍勃·克拉奇特夫人。 贝琳达和玛莎·克拉奇特,前者的女儿。

迪尔伯夫人,一位洗衣女工。 范,斯克鲁奇的一个妹妹。 费泽威格夫人,费泽威格先生的贤内助。


感觉除了身份定位,并不会泄露太多。

5. 总结

  • 如果不是local和global的含义错了,即便是local的似乎也能进行全局性总结?
  • local的生成比global的生成更加自然。
  • 如果以博客内容为准,也可能是因为复用同一个处理摘要总结时候的prompt,但是GPT4和豆包对这个prompt的响应敏感程度和生成倾向不同。

6. 附录-圣诞颂歌 剧情简介

《A Christmas Carol》的具体剧情分为五个部分,分别称为“五个章节”(Staves),以下是每个章节的详细剧情:

第一章:斯克鲁奇的幽灵(Marley's Ghost)

故事开始于平安夜,吝啬刻薄的商人埃比尼泽·斯克鲁奇在伦敦的办公室里。他冷酷无情,对圣诞节毫无兴趣,对慈善和人情味毫不在意。当他的侄子弗雷德(Fred)来邀请他共度圣诞节时,斯克鲁奇粗暴地拒绝了。晚上回到家后,斯克鲁奇遇到了他已故合伙人雅各布·马利(Jacob Marley)的幽灵。马利告诉斯克鲁奇,他将被三个圣诞幽灵拜访,警告他如果不改变自己的行为,将在死后面临同样的悲惨命运。

第二章:过去的圣诞幽灵(The First of the Three Spirits)

第一个幽灵出现了——过去的圣诞幽灵(Ghost of Christmas Past)。这个幽灵带着斯克鲁奇回到了他的童年、青年和早年的职业生涯。斯克鲁奇看到了自己曾经的快乐时光,尤其是与他深爱的贝尔(Belle)的关系。然而,由于对金钱的贪婪,斯克鲁奇最终失去了贝尔。看到这些往事,斯克鲁奇深感痛苦和悔恨。

第三章:现在的圣诞幽灵(The Second of the Three Spirits)

第二个幽灵——现在的圣诞幽灵(Ghost of Christmas Present)带领斯克鲁奇参观了他同时代人的圣诞节庆祝活动。斯克鲁奇看到了他的店员鲍勃·克拉奇特(Bob Cratchit)一家尽管贫穷却充满温暖和爱,尤其是病弱的小蒂姆(Tiny Tim)。幽灵还展示了他侄子弗雷德的圣诞聚会,斯克鲁奇看到了自己被嘲笑和怜悯。通过这些经历,斯克鲁奇逐渐开始理解爱与同情的重要性。

第四章:未来的圣诞幽灵(The Last of the Spirits)

最后一个幽灵——未来的圣诞幽灵(Ghost of Christmas Yet to Come)出现了。这个幽灵带斯克鲁奇看到了他可能的未来:他的死亡。没有人悲伤,没有人关心他的去世。他看到了克拉奇特一家失去小蒂姆的痛苦,也看到了自己被遗忘和被嘲笑的结局。斯克鲁奇被这些景象吓坏了,恳求有机会改变自己的命运。

第五章:终章(The End of It)

在经历了三个幽灵的拜访后,斯克鲁奇醒来发现自己仍然活着,而且是圣诞节早晨。他深受感动,决定改变自己的一生。他变得慷慨和善良,帮助了克拉奇特一家,尤其是小蒂姆,并开始积极参与慈善事业。他还与侄子弗雷德重修旧好,变成了一个受到大家喜爱和尊敬的人。

这本书以斯克鲁奇的转变为核心,展示了爱、同情和社会责任的重要性。狄更斯通过这个故事传达了善行和仁爱可以带来个人和社会的巨大变化。

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

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

相关文章

Web开发:四角线框效果(HTML、CSS、JavaScript)

目录 一、实现效果 二、完整代码 三、页面准备 1、页面结构 2、初始样式 3、现有效果 三、线框实现 1、需求分析 2、线框结构 3、线框大小 4、线框位置 5、线框样式 6、移动线框 7、添加过渡效果 8、使用CSS变量 一、实现效果 如下图所示&#xff0c;当鼠标移动…

微服务设计原则——高性能:锁

文章目录 1.锁的问题2.无锁2.1 串行无锁2.2 无锁数据结构 3.减少锁竞争参考文献 1.锁的问题 高性能系统中使用锁&#xff0c;往往带来的坏处要大于好处。 并发编程中&#xff0c;锁带解决了安全问题&#xff0c;同时也带来了性能问题&#xff0c;因为锁让并发处理变成了串行操…

WebStorm 2024.1 最新变化 附问卷调查 AI

WebStorm 2024.1 最新变化 问卷调查项目在线AI WebStorm 2024.1 最新变化关键亮点粘性行快速文档改进全行代码补全默认启用的 Vue Language Server适用于 Vue、Svelte 和 Astro 的组件用法*Language Services*&#xff08;语言服务&#xff09;微件 框架和技术实验性 TypeScrip…

【PPT笔记】1-3节 | 默认设置/快捷键/合并形状

文章目录 说明笔记1 默认设置1.1 OFFICE版本选择1.1.1 Office某某数字专属系列1.1.2 Office3651.1.3 产品信息怎么看 1.2 默认设置1.2.1 暗夜模式1.2.2 无限撤回1.2.3 自动保存&#xff08;Office2013版本及以上&#xff09;1.2.4 图片压缩1.2.5 字体嵌入1.2.6 多格式导出1.2.7…

arcgis怎么选取某个指定区域地方的数据,比如从全国乡镇数据选取长沙市乡镇数据

一共5个步骤&#xff0c;没一句废话&#xff0c;耐心看完。 1、如图&#xff0c;先将数据加载到arcgis里面&#xff0c;我们要选取里面长沙市的范围数据。 2、选取长沙市的语句 “市” like ‘长沙%’ 切记&#xff0c;切记&#xff0c;切记。所有符号要在 输入法英文状态…

5.5 软件工程-系统测试

系统测试 - 意义和目的 系统测试 - 原则 系统测试 - 测试过程 系统测试 - 测试策略 系统测试 - 测试方法 真题 系统测试 - 测试用例设计 黑盒测试 白盒测试 真题 系统测试 - 调试 系统测试 - 软件度量 真题

服务器IP和电脑IP有什么不同

服务器IP和电脑IP有什么不同&#xff1f;在当今的信息化时代&#xff0c;IP地址作为网络世界中不可或缺的元素&#xff0c;扮演着举足轻重的角色。然而&#xff0c;对于非专业人士来说&#xff0c;服务器IP和电脑IP之间的区别往往模糊不清。本文旨在深入探讨这两者之间的不同&a…

Spock单元测试框架使用介绍和实践

背景 单元测试是保证我们写的代码是我们想要的结果的最有效的办法。根据下面的数据图统计&#xff0c;单元测试从长期来看也有很大的收益。 单元测试收益: 它是最容易保证代码覆盖率达到100%的测试。可以⼤幅降低上线时的紧张指数。单元测试能更快地发现问题。单元测试的性…

Flutter动画详解第二篇之显式动画(Explicit Animations)

目录 前言 一、定义 1.AnimationController 1.常用属性 1. value 2. status 3. duration 2.常用方法 1.forward 2.reverse 3.repeat 4.stop 5. reset 6. animateTo(double target, {Duration? duration, Curve curve Curves.linear}) 7.animateBack(double ta…

Qt 快速保存配置的方法

Qt 快速保存配置的方法 一、概述二、代码1. QFileHelper.cpp2. QSettingHelper.cpp 三、使用 一、概述 这里分享一下&#xff0c;Qt界面开发时&#xff0c;快速保存界面上一些参数配置的方法。 因为我在做实验的时候&#xff0c;界面上可能涉及到很多参数的配置&#xff0c;我…

鼠标的发明和鼠标“变形记”

注&#xff1a;机翻&#xff0c;未校对。 Who Invented the Computer Mouse? 谁发明了电脑鼠标&#xff1f; It was technology visionary and inventor Douglas Engelbart (January 30, 1925 – July 2, 2013) who revolutionized the way computers worked, turning it fr…

【数据结构】--- 顺序表

目录 前言&#xff1a; 顺序表 动态顺序表的实现 代码总览&#xff1a; 前言&#xff1a; 数据结构是由“数据”和“结构”两词组合而来。 什么是数据&#xff1f; 常见的数值1、2、3、4.....、教务系统⾥保存的⽤⼾信息&#xff08;姓名、性别、年龄、…

Kafka Producer之ACKS应答机制

文章目录 1. 应答机制2. 等级03. 等级14. 等级all5. 设置等级6. ISR 1. 应答机制 异步发送的效率高&#xff0c;但是不安全&#xff0c;同步发送安全&#xff0c;但是效率低。 无论哪一种&#xff0c;有一个关键的步骤叫做回调&#xff0c;也就是ACKS应答机制。 其中ACKS也分…

Qt QProcess 进程间通信读写数据通信

本文介绍了如何使用Qt的QProcess 进行程序开发&#xff0c;包括启动进程间通信、设置环境变量、通用方法&#xff1b;方便在日常开发中使用&#xff1b; 1.使用Qt进行程序开发&#xff0c;可以通过QProcess类用于启动外部程序并与其进行通信.&#xff1b; 进程A&#xff08;…

CentOS 7 安装MySQL 5.7.30

CentOS 7 安装MySQL卸载&#xff08;离线安装&#xff09; 安装配置MySQL之前先查询是否存在&#xff0c;如存在先卸载再安装 rpm -qa|grep -i mysql rpm -qa|grep -i mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64如下命令找到直接 rm -rf 删除&#xff08;删除…

代理IP服务中的代理池大小有何影响?

在当今数字化时代&#xff0c;网络爬虫已经成为获取各类信息必不可少的工具。在大规模数据抓取中&#xff0c;使用单一 IP 地址或同一 IP 代理往往会面临抓取可靠性降低、地理位置受限、请求次数受限等一系列问题。为了克服这些问题&#xff0c;构建代理池成为一种有效的解决方…

Java基础笔记(面试题)

一、Tomcat中为什么要使用自定义类加载器 Tomcat中可以放多个Java项目的jar文件&#xff0c;如果每个jar文件中都有一个User的类&#xff0c;那么User类在没有自定义类加载器的情况下是只能加载一次&#xff1b;想要加载多次&#xff0c;只能自定义类加载器 二、JDK、JRE、JVM…

【leetcode】 字符串相乘(大数相乘、相加)

记录一下大数相乘相加方法&#xff1a; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: nu…

基于嵌入式Linux的高性能车载娱乐系统设计与实现 —— 融合Qt、FFmpeg和CAN总线技术

随着汽车智能化的发展&#xff0c;车载娱乐系统已成为现代汽车的标配。本文介绍了一个基于Linux的车载娱乐系统的设计与实现过程。该系统集成了音视频娱乐、导航、车辆信息显示等功能&#xff0c;旨在提供安全、便捷、丰富的驾驶体验。 1. 项目概述 随着汽车智能化的发展&…

Java对象转换为JSON字符串

0 写在前面 业务中有很多场景需要 把一个带有数据的 Java对象/Java集合转换为JSON 存入数据库中。 在需要的时候还需要吧和这个JSON字符串拿出来再次转换成Java对象/集合 1 Java对象与JSON字符串互转 引入依赖: <dependency><groupId>com.alibaba</groupId&…