揭开广告引擎的神秘面纱:如何在0.1秒内精准匹配用户需求?

目录

一、广告系统与广告引擎介绍

(一)广告系统与广告粗分

(二)广告引擎在广告系统中的重要性分析

二、广告引擎整体架构和工作过程

(一)一般概述

(二)核心功能架构图

三、标签检索:合理使用标签过滤和划分索引空间

四、向量检索:提供智能匹配能力

五、打分排序:用非精准打分结合深度学习模型的精准打分

六、索引精简:在索引构建环节缩小检索空间

离线过滤条件

动态索引更新

增量索引构建

定期清理

七、总结

参考文章技术


干货分享,感谢您的阅读!

在数字广告迅速发展的今天,广告引擎作为广告系统的核心组件,正日益发挥着不可或缺的作用。无论是精准投放广告,还是优化广告效果,这一复杂的系统背后都有着精细的算法和技术支持。本文将带您深入探讨广告引擎的运作机制,从标签检索到向量匹配,从打分排序到索引精简,全面解读广告引擎的整体架构和工作流程。您将了解到,如何利用数据收集与分析实现精准匹配,以及如何通过深度学习模型提升广告的展示效果。随着广告市场的竞争日益激烈,掌握这些技术无疑将为广告主和平台提供强有力的竞争优势。让我们一起揭开广告引擎的神秘面纱,探索其背后的科学与智慧,为您的广告策略提供新的启示与思路。

一、广告系统与广告引擎介绍

(一)广告系统与广告粗分

广告系统是一个复杂的软件系统,用于管理、发布和优化广告内容以达到广告主和广告平台的商业目标。这些系统在互联网和其他媒体上广泛使用,以连接广告主(企业或个人推广者)和广告发布者(网站、应用程序、社交媒体等),从而展示广告内容给目标受众。注意广告系统与性能和效率对广告商、用户和互联网公司都具有重大影响。

对于广告的了解可以具体见互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客,

互联网广告通常可以分为两大类:搜索广告和展示广告。

  1. 搜索广告:搜索广告是与用户的搜索查询相关的广告形式。当用户在搜索引擎上输入关键词或短语时,搜索引擎会在搜索结果页面中显示相关的广告链接,通常位于搜索结果的顶部或侧边。这些广告是以关键词匹配为基础的,广告主出价竞争关键词,以确保他们的广告在相关搜索中显示。搜索广告通常在用户主动寻找信息时出现,因此具有很高的相关性。

  2. 展示广告:展示广告是用户在浏览网站、使用应用程序或浏览社交媒体时被动看到的广告形式。这些广告可以包括横幅广告、视频广告、原生广告、弹出广告等,它们通常嵌入在网页或应用程序中,而不是由用户搜索触发。展示广告的投放通常是根据广告主的目标受众和兴趣进行定位,而不是像搜索广告那样依赖用户的搜索查询。

展示广告的特点是能够在广告中包含更多的创意元素,如图像、视频和互动元素,以吸引用户的注意力。它们通常用于建立品牌认知度、推广产品和服务,以及吸引潜在客户。

这两种广告形式在互联网广告生态系统中扮演不同的角色,广告主通常根据他们的广告目标和受众来选择使用搜索广告、展示广告或两者结合来推广他们的业务。

(二)广告引擎在广告系统中的重要性分析

广告检索引擎在广告系统中扮演着至关重要的角色,其重要性可以从以下几个方面来分析:

  1. 广告匹配和选择:广告检索引擎负责从广告库中选取最相关的广告来响应用户的广告请求。这需要高效的广告匹配算法和广告检索机制,以确保用户看到的广告与其兴趣和上下文相关。一个强大的广告检索引擎能够提高广告的点击率和转化率,从而提升广告系统的效益。

  2. 实时性和低延迟:广告系统需要在极短的时间内响应用户的广告请求,通常在毫秒级别完成。广告检索引擎必须能够高效地搜索广告库,进行广告匹配和选择,然后返回响应。低延迟是为了确保用户不会等待太长时间,提供更好的用户体验。

  3. 大规模数据处理:广告系统通常面对庞大的广告库和广告请求量,需要处理海量的数据。广告检索引擎必须具备高度可扩展性,以处理大规模数据,同时保持高性能。这可能涉及到分布式计算、数据分片和缓存等技术。

  4. 实时竞价和拍卖:在广告竞价市场中,广告检索引擎需要协调广告主的出价和广告位的竞争,以选择最佳广告。这需要实时的决策和竞价算法,以最大化广告系统的收入。

  5. 智能广告投放:现代广告系统不仅仅根据关键词匹配广告,还会利用用户的行为、兴趣和上下文信息来进行智能广告投放。广告检索引擎需要整合大量的数据和机器学习算法,以提供更个性化和精准的广告。

  6. 广告效果追踪和反馈:广告检索引擎通常需要追踪广告的效果和用户反馈,以帮助广告系统不断优化广告投放策略。这包括监测广告点击、转化和用户互动等数据,并利用这些数据进行实时调整。

总的来说,广告检索引擎是广告系统的核心组件,它直接影响广告的质量、效益和用户体验。因此,广告检索引擎的性能、算法和技术是广告系统成功的关键因素之一。广告系统开发人员和工程师需要不断改进和优化广告检索引擎,以应对不断变化的广告市场和用户需求。

二、广告引擎整体架构和工作过程

(一)一般概述

广告引擎的整体架构和工作过程涉及多个关键组件,下面是一个广告引擎的一般架构和工作流程的概述:

  1. 数据收集与存储:广告引擎首先需要收集和存储各种数据,包括广告库、用户数据、网站或应用数据等。这些数据用于广告匹配和定位广告目标受众。
  2. 广告库管理:广告库包含广告主提交的广告内容和相关信息。这些广告通常包括标题、描述、目标链接、关键词和出价等信息。广告库需要经常更新,以反映广告主的新广告和变化。
  3. 用户数据和行为分析:广告引擎使用用户数据,如搜索历史、兴趣、地理位置等,来了解用户的需求和兴趣。这可以帮助引擎更好地匹配广告。
  4. 广告请求接收:当用户在搜索引擎上输入查询或在浏览网页或应用时,广告引擎会接收广告请求。这个请求通常包括用户信息、上下文和查询关键词(如果有的话)。
  5. 广告匹配:广告引擎的核心部分是广告匹配引擎。它使用各种算法和规则来将广告库中的广告与广告请求进行匹配。匹配过程考虑关键词、用户兴趣、广告出价等因素,以确定哪些广告最相关,最有可能吸引用户的注意。
  6. 出价和拍卖:如果广告系统涉及到广告拍卖,广告匹配后的广告将被提交到拍卖系统,广告主的出价和相关性将决定哪些广告将在广告位上显示。广告拍卖系统会选择最高出价且相关性合适的广告。
  7. 广告展示:选中的广告将被展示给用户,这可以在搜索引擎结果页面、网站、应用程序或其他广告位上进行。广告可以是文本、图像、视频或其他多媒体形式,具体取决于广告位和广告主的选择。
  8. 广告效果跟踪:广告引擎通常会追踪广告的效果,包括广告的点击率、转化率和其他指标。这些数据用于分析广告效果,优化广告策略和反馈给广告主。
  9. 持续优化:广告引擎需要不断优化算法和规则,以提高广告匹配的质量和广告系统的性能。这可以包括采用机器学习技术、A/B 测试和数据分析来不断改进。

总的来说,广告引擎的工作过程涉及数据收集、广告匹配、拍卖、广告展示和效果追踪等多个步骤,需要高效的算法和技术来确保广告的相关性和用户体验,同时最大化广告系统的效益。

(二)核心功能架构图

为了方便,我们按极客时间《检索技术核心 20 讲》【广告系统:广告引擎如何做到在0.1s内返回广告信息?】中的广告引擎的核心功能架构图,从用户浏览和广告主投放广告这两个方面讲解一下广告引擎的工作过程。具体可见对应的极客时间文章。

当用户浏览网页时,网页会向广告系统的服务器发送一个广告请求。服务器收到请求后,首先进行请求解析,这涉及查询与用户唯一标识、网站地址和广告位相关的扩展信息。这些信息的查询是通过之前对用户行为的长期收集和分析来实现的。这样的分析能够帮助了解用户的兴趣,例如他们是否喜欢篮球或购物。同样,对于各种不同的网页和广告位,系统也会进行分类和分析。这些分析的结果会提前存储在Key-value数据库中,以便能够迅速查询。这种方式,广告请求解析能够通过查询Key-value数据库,迅速获得相关信息。

另一方面,广告主在投放广告时,通常会设定广告投放的限制条件,以确保广告能够达到预期效果。例如,他们可能希望广告仅对位于北京、年龄在20岁以上、对篮球感兴趣,或使用特定型号手机的用户展示。这些限制条件可以用标签的方式表示。因此,广告设置本质上是由一系列标签的组合构成。

因此,广告引擎在处理广告请求时,实际上是根据用户的广告请求信息,查找与标签匹配的广告设置,并对这些广告进行排序,然后返回给用户。这确保了广告能够有针对性地展示给最相关的受众。

三、标签检索:合理使用标签过滤和划分索引空间

在广告引擎中,合理使用标签过滤和划分索引空间是一项关键策略,用于提高广告匹配性能和效率。标签是一种有助于描述用户、广告和广告位的属性和特征的元数据。

以下是如何合理使用标签来进行索引和过滤的方法:

  1. 标签化广告和广告位: 广告库中的广告和广告位可以分配标签,这些标签可以描述广告的内容、目标受众、广告位的属性等。例如,广告可以被标记为"运动鞋"、"折扣",而广告位可以被标记为"体育新闻"、"健康与生活"。

  2. 用户标签: 对用户进行标签化,以描述他们的兴趣、行为和属性。用户标签可以包括地理位置、性别、年龄、兴趣领域等。这些标签可以通过用户的历史行为、搜索查询、点击记录等数据分析来获得。

  3. 构建标签索引: 基于标签,构建广告库的索引和用户数据库的索引。这可以是倒排索引或其他索引结构。标签索引将广告、广告位和用户数据连接起来,以便快速检索。

  4. 标签匹配算法: 开发标签匹配算法,以根据广告请求中的标签信息,匹配最相关的广告和广告位。这可能涉及标签的匹配程度、权重等考虑。

  5. 标签过滤和筛选: 在广告请求处理过程中,使用标签过滤和筛选广告库,以缩小匹配范围。这有助于减少匹配的时间和资源消耗。

  6. 标签层次结构: 创建标签层次结构,使标签之间存在父子关系,从而更好地组织和管理标签。例如,"运动"可以是一个父标签,而"篮球"和"足球"可以是子标签。

  7. 动态标签更新: 根据实时数据和用户行为,动态更新用户标签和广告标签。这有助于确保标签信息始终反映实际情况。

  8. 定向广告: 利用标签来实施广告定向,确保广告仅展示给符合特定标签条件的用户。这提高了广告的相关性和效果。

综合运用上述策略,广告引擎可以高效地利用标签来过滤、划分索引空间和匹配广告,以提供更相关的广告,提高广告系统的性能和用户体验。

四、向量检索:提供智能匹配能力

在广告引擎中引入向量检索技术可以提供更高级的智能匹配能力。向量检索允许广告引擎将广告、广告位和用户表示为向量,然后通过向量相似性来进行匹配,从而更精确地确定哪些广告最适合与哪些用户和广告位相匹配。

让我们通过一个具体案例来理解如何在广告引擎中应用向量检索以提供智能匹配能力。以一个虚构的在线体育新闻网站的广告引擎为例。

  • 广告库: 包含不同类型的体育广告,如足球、篮球、网球、高尔夫等,以及不同品牌的广告。
  • 广告位: 包括不同类型的页面和文章,如首页、足球新闻、篮球新闻、高尔夫新闻等。
  • 用户数据: 包括用户的地理位置、兴趣领域、性别、年龄等信息。

使用向量检索实现智能匹配:

  1. 向量表示: 针对广告库中的每个广告、广告位和用户,使用向量表示。这些向量可以包括广告内容、广告位属性、用户兴趣等维度。例如,一个足球广告的向量可能包括 "足球"、"体育"、品牌信息等。

  2. 聚类: 使用聚类算法将相似的广告向量分组到同一簇中。例如,所有足球相关广告可能分为一个簇,所有篮球广告分为另一个簇。

  3. 倒排索引: 为每个簇构建倒排索引,将广告、广告位和用户向量映射到它们所属的簇。这样,当广告请求到达时,可以首先确定可能相关的簇。

  4. 乘积量化: 在每个簇中,将向量应用乘积量化来降低维度。这可以将每个向量表示为一组较低维度的子向量,并应用量化来减小向量的大小。

  5. 查询处理: 当用户访问网站时,广告引擎接收广告请求,其中包括用户的信息、页面类型和内容。引擎首先使用这些信息确定可能相关的簇。然后,在这些簇中使用乘积量化技术,将请求中的向量与广告、广告位和用户向量进行匹配。最相似的向量将被选择,以决定要显示的广告。

  6. 智能排序: 匹配后,引擎可以使用向量相似性来排序广告,确保最相关的广告首先显示给用户。例如,如果用户正在查看篮球新闻,引擎会更有可能选择篮球广告并根据与用户兴趣的匹配程度来排序。

  7. 动态更新: 引擎可以定期更新向量,以反映用户行为和广告内容的变化,确保匹配仍然是智能的。

通过这种方式,广告引擎可以实现智能匹配,确保广告与用户的兴趣和页面内容相关,并提供更个性化的广告体验。这有助于提高广告效果和用户满意度。

五、打分排序:用非精准打分结合深度学习模型的精准打分

在广告引擎中,使用非精准打分结合深度学习模型的精准打分是一种常见的策略,以提高广告的排序性能。这组合了两个环节:召回(Recall)和精准打分排序(Precision Ranking),中间加入了非精准打分(Non-Precision Scoring)的环节。

  1. 召回(Recall): 首先,广告引擎执行召回环节,目的是尽可能多地检索潜在匹配的广告候选集。在这一阶段,引擎可以使用基于标签、规则或其他快速方法来检索广告候选集。召回环节的目标是捕获潜在的广告,即使其中一些不是精确匹配,也要确保不错过任何潜在的机会。

  2. 非精准打分(Non-Precision Scoring): 这是添加到召回阶段的新环节。在非精准打分中,引擎可以使用快速的打分算法,例如基于规则或标签匹配的算法,来为召回的广告候选集打分。这些打分是非精确的,主要用于粗略排序,以便稍后的精准打分排序能够更聚焦在具有更高潜在匹配性的广告上。

  3. 精准打分排序(Precision Ranking): 在这一环节,引擎使用深度学习模型或其他精确的打分算法来为召回的广告候选集中的每个广告进行更精准的打分。这些算法可以综合考虑广告内容、用户兴趣、广告位属性等多个因素,以确定广告与用户的匹配程度。广告按照精确的打分进行排序,以确保最相关的广告最先呈现给用户。

  4. 结果返回: 最终,排名好的广告将根据其得分从高到低呈现给用户。用户将看到高度相关的广告,提高了广告效果和用户满意度。

这种组合策略允许广告引擎在召回阶段宽泛地捕获潜在广告,然后通过精准打分排序在确保精确匹配的同时,提高广告的排序性能。非精准打分阶段可以快速排除一些不相关的广告,从而加速精准打分的过程。同时,深度学习模型可以学习复杂的广告与用户之间的关系,以提供更准确的排序。这种策略有助于平衡性能和准确性。

六、索引精简:在索引构建环节缩小检索空间

广告引擎和搜索引擎在检索对象的生命周期上存在显著差异。广告设置的生命周期变化快,而不是像网页一样持久存在。这种快速变化的特性需要在广告引擎的索引构建环节采取不同的优化策略,以提高检索效率。主要优化策略包括:

离线过滤条件

在离线的索引构建环节,广告引擎应用广告设置的过滤条件。这些条件可能包括时间段、预算状态、地理位置等,而不仅仅是与广告内容或用户属性相关的条件。通过在索引构建时过滤掉那些在未来某个时间点不再有效的广告设置,可以大幅减小检索空间。

动态索引更新

由于广告设置的状态和限制条件可能随时发生变化,广告引擎应该支持动态索引更新。这意味着在实时或定期基础上,广告引擎需要更新索引以反映广告设置的最新状态。例如,当广告的投放时间段结束或预算用尽时,相应的广告设置应该从索引中移除。

增量索引构建

广告引擎可以使用增量索引构建策略,只构建或更新发生变化的广告设置的索引。这减少了索引构建的计算成本,因为不必重新构建所有广告设置的索引。

定期清理

定期清理索引中的过期或不再有效的广告设置是关键的。这有助于保持索引的整洁,减小检索空间,避免对无效广告进行不必要的检索。

通过将过滤条件提前到离线的索引构建环节,并支持动态索引更新,广告引擎可以更好地适应广告设置的生命周期的快速变化。这种优化策略有助于提高检索效率,减少冗余计算开销,提供更快速的广告检索。

七、总结

在本文中,我们深入探讨了广告引擎的构成与工作原理,揭示了其在现代广告系统中的重要性。从广告系统的基本概念到广告引擎的核心架构,我们分析了数据收集、广告匹配、打分排序和索引精简等关键过程。通过标签检索和向量检索等技术,我们了解了如何提升广告的匹配能力和用户体验。

广告引擎不仅仅是一个简单的广告投放工具,它是连接广告主与用户之间的桥梁,通过精准的数据分析和智能算法,确保广告能够有效地触达目标受众。本文中提到的每一个环节都是为了提高广告的相关性和效果,从而最大化广告投资的回报。

未来,随着技术的不断进步,广告引擎将会更加智能化,能够更好地适应快速变化的市场需求。广告主和平台应当不断关注新兴技术与趋势,以优化广告策略和提升用户体验。总结而言,掌握广告引擎的运作机制对于实现高效的广告投放至关重要,而不断创新与优化将是赢得竞争的关键。希望本文能够为您的广告策略提供有价值的见解与参考。

参考文章技术

  1. 极客时间《检索技术核心 20 讲》【广告系统:广告引擎如何做到在0.1s内返回广告信息?】,陈东 ----- 主要学习材料
  2. 互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客
  3. 美团广告实时索引的设计与实现 - 美团技术团队
  4. https://www.cnblogs.com/ErinCodeMM/p/5033321.html
  5. 搜索,推荐,广告系统架构及算法技术资料大合集吐血整理——2019 年终分享 - AIQ
  6. https://www.infoq.cn/article/73za7ahrg1osmdtfa9tv
  7. “量效合一”背后,巨量引擎搜索广告的业务逻辑是什么? - 数英

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

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

相关文章

freertos任务调度学习

首先创建任务,创建好任务后,开启任务调度器,任务才能执行 1.开启任务调度器 2.启动第一个任务 3.任务切换

初始ArKTs 2

一.类 1.1 声明 类声明引入一个新类型,并定义其字段、方法和构造函数。 定义类后,可以使用关键字new创建实例 可以使用对象字面量创建实例 在以下示例中,定义了Person类,该类具有字段firstname和lastname、构造函数和方法full…

在云服务器搭建 Docker

操作场景 本文档介绍如何在腾讯云云服务器上搭建和使用 Docker。本文适用于熟悉 Linux 操作系统,刚开始使用腾讯云云服务器的开发者。如需了解更多关于 Docker 相关信息,请参见 Docker 官方。 说明: Windows Subsystem for Linux&#xff…

【IDER、PyCharm】免费AI编程工具完整教程:ChatGPT Free - Support Key call AI GPT-o1 Claude3.5

文章目录 CodeMoss 简介CodeMoss 的模型集成如何安装和配置 CodeMossIDER 插件安装步骤 CodeMoss 的实战使用AI 问答功能代码优化与解释优化这段代码解释这段代码 文件上传与对话联网查询与 GPT 助手联网查询GPT 助手 提升开发效率的最佳实践结语更多文献 CodeMoss 简介 CodeM…

编译报错:protoc did not exit cleanly. Review output for more information.

目录标题 解决“protoc did not exit cleanly”的报错问题检查.proto文件的语法 解决“protoc did not exit cleanly”的报错问题 今天做的项目需要用到grpc,然后需要编写proto然后编译后实现grpc的具体方法! 结果编译的时候报了protoc did not exit cl…

语义分割(semantic segmentation)

语义分割(semantic segmentation) 文章目录 语义分割(semantic segmentation)图像分割和实例分割代码实现 语义分割指将图片中的每个像素分类到对应的类别,语义区域的标注和预测是 像素级的,语义分割标注的像素级的边界框显然更加精细。应用&#xff1a…

【竞技宝】LOL-传奇杯:姿态飞机TP绕后一锤定音

北京时间2024年11月19日,英雄联盟第二届传奇杯正在如火如荼的进行之中。昨天迎来小组赛第四个比赛日,本日一共进行了七场小组赛的对决,那么在昨日上半场的四场比赛中,登场的各支队伍都取得了什么样的表现呢?接下来小宝为大家带来小组赛day4上半场的比赛战报。 OP(宁王队) 0-1 …

网络安全之信息收集-实战-1

请注意,本文仅供合法和授权的渗透测试使用,任何未经授权的活动都是违法的。 实战:补天公益src“吉林通用航空职业技术学院” 奇安信|用户登录https://www.butian.net/Loo/submit?cid64918 域名或ip:https://www.jlth…

【后端】版本控制

版本控制 1. 什么是版本控制? 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理…

【YOLOv11改进[注意力]】引入DA、FCA、SA、SC、SE + 含全部代码和详细修改方式

本文将进行在YOLOv11中引入DA、FCA、SA、SC、SE魔改v11,文中含全部代码、详细修改方式。助您轻松理解改进的方法。 一 DA、FCA、SA、SC、SE ① DA 论文:Dual Attention Network for Scene Segm

【数据结构】链表解析与实战运用(1.8w字超详细解析)

目录 引言 链表概念及结构 链表的优缺点 链表的分类 1.单向或者双向 2.带头或者不带头 3.带循环或者非循环 单链表接口函数的实现 接口函数一览 创建空节点&打印链表 尾部插入 头部插入 尾部删除 头部删除 查找 在pos位置之后插入节点 在pos位置之前插入节…

(微信小程序)基于Spring Boot的校园失物招领平台的设计与实现(vue3+uniapp+mysql)

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

【Linux课程学习】:Linux的调试器-gdb的使用(常见指令,cgdb)

🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 安装cgdb: 基本环境 1检查gdb是否…

【WRF-Urban】URBPARM.TBL参数解释及内容

【WRF-Urban】URBPARM.TBL参数解释及内容 URBPARM.TBL参数解释URBPARM.TBL参考 参考WRF-Urban教程-Urban Canopy Model URBPARM.TBL参数解释 各个城市相应的城市参数差异很大(例如,有些城市的道路可能很宽但建筑物很矮,而其他城市的道路可…

DBeaver 连接 OceanBase Oracle 租户

DBeaver 是一款通用的数据库工具软件,支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的,想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…

使用 Prompt API 与您的对象聊天

tl;dr:GET、PUT、PROMPT。现在,可以使用新的 PromptObject API 仅使用自然语言对存储在 MinIO 上的对象进行总结、交谈和提问。在本文中,我们将探讨这个新 API 的一些用例以及代码示例。 赋予动机: 对象存储和 S3 API 的无处不在…

23种设计模式-访问者(Visitor)设计模式

文章目录 一.什么是访问者模式?二.访问者模式的结构三.访问者模式的应用场景四.访问者模式的优缺点五.访问者模式的C实现六.访问者模式的JAVA实现七.代码解释八.总结 类图: 访问者设计模式类图 一.什么是访问者模式? 访问者模式(…

【开源免费】基于Vue和SpringBoot的在线考试系统(附论文)

本文项目编号 T 624 ,文末自助获取源码 \color{red}{T624,文末自助获取源码} T624,文末自助获取源码 网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合,利用java技术建设在线考试系统,实现…

【H2O2|全栈】MySQL的云端部署

目录 前言 开篇语 准备工作 MySQL移除 为什么需要移除? 移除操作 Yum仓库 yum简介 rpm安装 yum库安装 MySQL安装 使用yum安装 开机自启动 检查运行状态 MySQL配置 初始密码 ​编辑登录 修改root密码 退出MySQL 字符集配置 重启数据库 结束语 …

DAY30|贪心算法Part04|LeetCode:452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

目录 LeetCode:452. 用最少数量的箭引爆气球 基本思路 C代码 LeetCode:435. 无重叠区间 基本思路 C代码 LeetCode:763.划分字母区间 基本思路 C代码 LeetCode:452. 用最少数量的箭引爆气球 力扣代码链接 文字讲解:LeetCode:452. 用最少数量的箭引爆气球 视…