揭开广告引擎的神秘面纱:如何在0.1秒内精准匹配用户需求?
目录
一、广告系统与广告引擎介绍
(一)广告系统与广告粗分
(二)广告引擎在广告系统中的重要性分析
二、广告引擎整体架构和工作过程
(一)一般概述
(二)核心功能架构图
三、标签检索:合理使用标签过滤和划分索引空间
四、向量检索:提供智能匹配能力
五、打分排序:用非精准打分结合深度学习模型的精准打分
六、索引精简:在索引构建环节缩小检索空间
离线过滤条件
动态索引更新
增量索引构建
定期清理
七、总结
参考文章技术
干货分享,感谢您的阅读!
在数字广告迅速发展的今天,广告引擎作为广告系统的核心组件,正日益发挥着不可或缺的作用。无论是精准投放广告,还是优化广告效果,这一复杂的系统背后都有着精细的算法和技术支持。本文将带您深入探讨广告引擎的运作机制,从标签检索到向量匹配,从打分排序到索引精简,全面解读广告引擎的整体架构和工作流程。您将了解到,如何利用数据收集与分析实现精准匹配,以及如何通过深度学习模型提升广告的展示效果。随着广告市场的竞争日益激烈,掌握这些技术无疑将为广告主和平台提供强有力的竞争优势。让我们一起揭开广告引擎的神秘面纱,探索其背后的科学与智慧,为您的广告策略提供新的启示与思路。
一、广告系统与广告引擎介绍
(一)广告系统与广告粗分
广告系统是一个复杂的软件系统,用于管理、发布和优化广告内容以达到广告主和广告平台的商业目标。这些系统在互联网和其他媒体上广泛使用,以连接广告主(企业或个人推广者)和广告发布者(网站、应用程序、社交媒体等),从而展示广告内容给目标受众。注意广告系统与性能和效率对广告商、用户和互联网公司都具有重大影响。
对于广告的了解可以具体见互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客,
互联网广告通常可以分为两大类:搜索广告和展示广告。
-
搜索广告:搜索广告是与用户的搜索查询相关的广告形式。当用户在搜索引擎上输入关键词或短语时,搜索引擎会在搜索结果页面中显示相关的广告链接,通常位于搜索结果的顶部或侧边。这些广告是以关键词匹配为基础的,广告主出价竞争关键词,以确保他们的广告在相关搜索中显示。搜索广告通常在用户主动寻找信息时出现,因此具有很高的相关性。
-
展示广告:展示广告是用户在浏览网站、使用应用程序或浏览社交媒体时被动看到的广告形式。这些广告可以包括横幅广告、视频广告、原生广告、弹出广告等,它们通常嵌入在网页或应用程序中,而不是由用户搜索触发。展示广告的投放通常是根据广告主的目标受众和兴趣进行定位,而不是像搜索广告那样依赖用户的搜索查询。
展示广告的特点是能够在广告中包含更多的创意元素,如图像、视频和互动元素,以吸引用户的注意力。它们通常用于建立品牌认知度、推广产品和服务,以及吸引潜在客户。
这两种广告形式在互联网广告生态系统中扮演不同的角色,广告主通常根据他们的广告目标和受众来选择使用搜索广告、展示广告或两者结合来推广他们的业务。
(二)广告引擎在广告系统中的重要性分析
广告检索引擎在广告系统中扮演着至关重要的角色,其重要性可以从以下几个方面来分析:
-
广告匹配和选择:广告检索引擎负责从广告库中选取最相关的广告来响应用户的广告请求。这需要高效的广告匹配算法和广告检索机制,以确保用户看到的广告与其兴趣和上下文相关。一个强大的广告检索引擎能够提高广告的点击率和转化率,从而提升广告系统的效益。
-
实时性和低延迟:广告系统需要在极短的时间内响应用户的广告请求,通常在毫秒级别完成。广告检索引擎必须能够高效地搜索广告库,进行广告匹配和选择,然后返回响应。低延迟是为了确保用户不会等待太长时间,提供更好的用户体验。
-
大规模数据处理:广告系统通常面对庞大的广告库和广告请求量,需要处理海量的数据。广告检索引擎必须具备高度可扩展性,以处理大规模数据,同时保持高性能。这可能涉及到分布式计算、数据分片和缓存等技术。
-
实时竞价和拍卖:在广告竞价市场中,广告检索引擎需要协调广告主的出价和广告位的竞争,以选择最佳广告。这需要实时的决策和竞价算法,以最大化广告系统的收入。
-
智能广告投放:现代广告系统不仅仅根据关键词匹配广告,还会利用用户的行为、兴趣和上下文信息来进行智能广告投放。广告检索引擎需要整合大量的数据和机器学习算法,以提供更个性化和精准的广告。
-
广告效果追踪和反馈:广告检索引擎通常需要追踪广告的效果和用户反馈,以帮助广告系统不断优化广告投放策略。这包括监测广告点击、转化和用户互动等数据,并利用这些数据进行实时调整。
总的来说,广告检索引擎是广告系统的核心组件,它直接影响广告的质量、效益和用户体验。因此,广告检索引擎的性能、算法和技术是广告系统成功的关键因素之一。广告系统开发人员和工程师需要不断改进和优化广告检索引擎,以应对不断变化的广告市场和用户需求。
二、广告引擎整体架构和工作过程
(一)一般概述
广告引擎的整体架构和工作过程涉及多个关键组件,下面是一个广告引擎的一般架构和工作流程的概述:
- 数据收集与存储:广告引擎首先需要收集和存储各种数据,包括广告库、用户数据、网站或应用数据等。这些数据用于广告匹配和定位广告目标受众。
- 广告库管理:广告库包含广告主提交的广告内容和相关信息。这些广告通常包括标题、描述、目标链接、关键词和出价等信息。广告库需要经常更新,以反映广告主的新广告和变化。
- 用户数据和行为分析:广告引擎使用用户数据,如搜索历史、兴趣、地理位置等,来了解用户的需求和兴趣。这可以帮助引擎更好地匹配广告。
- 广告请求接收:当用户在搜索引擎上输入查询或在浏览网页或应用时,广告引擎会接收广告请求。这个请求通常包括用户信息、上下文和查询关键词(如果有的话)。
- 广告匹配:广告引擎的核心部分是广告匹配引擎。它使用各种算法和规则来将广告库中的广告与广告请求进行匹配。匹配过程考虑关键词、用户兴趣、广告出价等因素,以确定哪些广告最相关,最有可能吸引用户的注意。
- 出价和拍卖:如果广告系统涉及到广告拍卖,广告匹配后的广告将被提交到拍卖系统,广告主的出价和相关性将决定哪些广告将在广告位上显示。广告拍卖系统会选择最高出价且相关性合适的广告。
- 广告展示:选中的广告将被展示给用户,这可以在搜索引擎结果页面、网站、应用程序或其他广告位上进行。广告可以是文本、图像、视频或其他多媒体形式,具体取决于广告位和广告主的选择。
- 广告效果跟踪:广告引擎通常会追踪广告的效果,包括广告的点击率、转化率和其他指标。这些数据用于分析广告效果,优化广告策略和反馈给广告主。
- 持续优化:广告引擎需要不断优化算法和规则,以提高广告匹配的质量和广告系统的性能。这可以包括采用机器学习技术、A/B 测试和数据分析来不断改进。
总的来说,广告引擎的工作过程涉及数据收集、广告匹配、拍卖、广告展示和效果追踪等多个步骤,需要高效的算法和技术来确保广告的相关性和用户体验,同时最大化广告系统的效益。
(二)核心功能架构图
为了方便,我们按极客时间《检索技术核心 20 讲》【广告系统:广告引擎如何做到在0.1s内返回广告信息?】中的广告引擎的核心功能架构图,从用户浏览和广告主投放广告这两个方面讲解一下广告引擎的工作过程。具体可见对应的极客时间文章。
当用户浏览网页时,网页会向广告系统的服务器发送一个广告请求。服务器收到请求后,首先进行请求解析,这涉及查询与用户唯一标识、网站地址和广告位相关的扩展信息。这些信息的查询是通过之前对用户行为的长期收集和分析来实现的。这样的分析能够帮助了解用户的兴趣,例如他们是否喜欢篮球或购物。同样,对于各种不同的网页和广告位,系统也会进行分类和分析。这些分析的结果会提前存储在Key-value数据库中,以便能够迅速查询。这种方式,广告请求解析能够通过查询Key-value数据库,迅速获得相关信息。
另一方面,广告主在投放广告时,通常会设定广告投放的限制条件,以确保广告能够达到预期效果。例如,他们可能希望广告仅对位于北京、年龄在20岁以上、对篮球感兴趣,或使用特定型号手机的用户展示。这些限制条件可以用标签的方式表示。因此,广告设置本质上是由一系列标签的组合构成。
因此,广告引擎在处理广告请求时,实际上是根据用户的广告请求信息,查找与标签匹配的广告设置,并对这些广告进行排序,然后返回给用户。这确保了广告能够有针对性地展示给最相关的受众。
三、标签检索:合理使用标签过滤和划分索引空间
在广告引擎中,合理使用标签过滤和划分索引空间是一项关键策略,用于提高广告匹配性能和效率。标签是一种有助于描述用户、广告和广告位的属性和特征的元数据。
以下是如何合理使用标签来进行索引和过滤的方法:
-
标签化广告和广告位: 广告库中的广告和广告位可以分配标签,这些标签可以描述广告的内容、目标受众、广告位的属性等。例如,广告可以被标记为"运动鞋"、"折扣",而广告位可以被标记为"体育新闻"、"健康与生活"。
-
用户标签: 对用户进行标签化,以描述他们的兴趣、行为和属性。用户标签可以包括地理位置、性别、年龄、兴趣领域等。这些标签可以通过用户的历史行为、搜索查询、点击记录等数据分析来获得。
-
构建标签索引: 基于标签,构建广告库的索引和用户数据库的索引。这可以是倒排索引或其他索引结构。标签索引将广告、广告位和用户数据连接起来,以便快速检索。
-
标签匹配算法: 开发标签匹配算法,以根据广告请求中的标签信息,匹配最相关的广告和广告位。这可能涉及标签的匹配程度、权重等考虑。
-
标签过滤和筛选: 在广告请求处理过程中,使用标签过滤和筛选广告库,以缩小匹配范围。这有助于减少匹配的时间和资源消耗。
-
标签层次结构: 创建标签层次结构,使标签之间存在父子关系,从而更好地组织和管理标签。例如,"运动"可以是一个父标签,而"篮球"和"足球"可以是子标签。
-
动态标签更新: 根据实时数据和用户行为,动态更新用户标签和广告标签。这有助于确保标签信息始终反映实际情况。
-
定向广告: 利用标签来实施广告定向,确保广告仅展示给符合特定标签条件的用户。这提高了广告的相关性和效果。
综合运用上述策略,广告引擎可以高效地利用标签来过滤、划分索引空间和匹配广告,以提供更相关的广告,提高广告系统的性能和用户体验。
四、向量检索:提供智能匹配能力
在广告引擎中引入向量检索技术可以提供更高级的智能匹配能力。向量检索允许广告引擎将广告、广告位和用户表示为向量,然后通过向量相似性来进行匹配,从而更精确地确定哪些广告最适合与哪些用户和广告位相匹配。
让我们通过一个具体案例来理解如何在广告引擎中应用向量检索以提供智能匹配能力。以一个虚构的在线体育新闻网站的广告引擎为例。
- 广告库: 包含不同类型的体育广告,如足球、篮球、网球、高尔夫等,以及不同品牌的广告。
- 广告位: 包括不同类型的页面和文章,如首页、足球新闻、篮球新闻、高尔夫新闻等。
- 用户数据: 包括用户的地理位置、兴趣领域、性别、年龄等信息。
使用向量检索实现智能匹配:
-
向量表示: 针对广告库中的每个广告、广告位和用户,使用向量表示。这些向量可以包括广告内容、广告位属性、用户兴趣等维度。例如,一个足球广告的向量可能包括 "足球"、"体育"、品牌信息等。
-
聚类: 使用聚类算法将相似的广告向量分组到同一簇中。例如,所有足球相关广告可能分为一个簇,所有篮球广告分为另一个簇。
-
倒排索引: 为每个簇构建倒排索引,将广告、广告位和用户向量映射到它们所属的簇。这样,当广告请求到达时,可以首先确定可能相关的簇。
-
乘积量化: 在每个簇中,将向量应用乘积量化来降低维度。这可以将每个向量表示为一组较低维度的子向量,并应用量化来减小向量的大小。
-
查询处理: 当用户访问网站时,广告引擎接收广告请求,其中包括用户的信息、页面类型和内容。引擎首先使用这些信息确定可能相关的簇。然后,在这些簇中使用乘积量化技术,将请求中的向量与广告、广告位和用户向量进行匹配。最相似的向量将被选择,以决定要显示的广告。
-
智能排序: 匹配后,引擎可以使用向量相似性来排序广告,确保最相关的广告首先显示给用户。例如,如果用户正在查看篮球新闻,引擎会更有可能选择篮球广告并根据与用户兴趣的匹配程度来排序。
-
动态更新: 引擎可以定期更新向量,以反映用户行为和广告内容的变化,确保匹配仍然是智能的。
通过这种方式,广告引擎可以实现智能匹配,确保广告与用户的兴趣和页面内容相关,并提供更个性化的广告体验。这有助于提高广告效果和用户满意度。
五、打分排序:用非精准打分结合深度学习模型的精准打分
在广告引擎中,使用非精准打分结合深度学习模型的精准打分是一种常见的策略,以提高广告的排序性能。这组合了两个环节:召回(Recall)和精准打分排序(Precision Ranking),中间加入了非精准打分(Non-Precision Scoring)的环节。
-
召回(Recall): 首先,广告引擎执行召回环节,目的是尽可能多地检索潜在匹配的广告候选集。在这一阶段,引擎可以使用基于标签、规则或其他快速方法来检索广告候选集。召回环节的目标是捕获潜在的广告,即使其中一些不是精确匹配,也要确保不错过任何潜在的机会。
-
非精准打分(Non-Precision Scoring): 这是添加到召回阶段的新环节。在非精准打分中,引擎可以使用快速的打分算法,例如基于规则或标签匹配的算法,来为召回的广告候选集打分。这些打分是非精确的,主要用于粗略排序,以便稍后的精准打分排序能够更聚焦在具有更高潜在匹配性的广告上。
-
精准打分排序(Precision Ranking): 在这一环节,引擎使用深度学习模型或其他精确的打分算法来为召回的广告候选集中的每个广告进行更精准的打分。这些算法可以综合考虑广告内容、用户兴趣、广告位属性等多个因素,以确定广告与用户的匹配程度。广告按照精确的打分进行排序,以确保最相关的广告最先呈现给用户。
-
结果返回: 最终,排名好的广告将根据其得分从高到低呈现给用户。用户将看到高度相关的广告,提高了广告效果和用户满意度。
这种组合策略允许广告引擎在召回阶段宽泛地捕获潜在广告,然后通过精准打分排序在确保精确匹配的同时,提高广告的排序性能。非精准打分阶段可以快速排除一些不相关的广告,从而加速精准打分的过程。同时,深度学习模型可以学习复杂的广告与用户之间的关系,以提供更准确的排序。这种策略有助于平衡性能和准确性。
六、索引精简:在索引构建环节缩小检索空间
广告引擎和搜索引擎在检索对象的生命周期上存在显著差异。广告设置的生命周期变化快,而不是像网页一样持久存在。这种快速变化的特性需要在广告引擎的索引构建环节采取不同的优化策略,以提高检索效率。主要优化策略包括:
离线过滤条件
在离线的索引构建环节,广告引擎应用广告设置的过滤条件。这些条件可能包括时间段、预算状态、地理位置等,而不仅仅是与广告内容或用户属性相关的条件。通过在索引构建时过滤掉那些在未来某个时间点不再有效的广告设置,可以大幅减小检索空间。
动态索引更新
由于广告设置的状态和限制条件可能随时发生变化,广告引擎应该支持动态索引更新。这意味着在实时或定期基础上,广告引擎需要更新索引以反映广告设置的最新状态。例如,当广告的投放时间段结束或预算用尽时,相应的广告设置应该从索引中移除。
增量索引构建
广告引擎可以使用增量索引构建策略,只构建或更新发生变化的广告设置的索引。这减少了索引构建的计算成本,因为不必重新构建所有广告设置的索引。
定期清理
定期清理索引中的过期或不再有效的广告设置是关键的。这有助于保持索引的整洁,减小检索空间,避免对无效广告进行不必要的检索。
通过将过滤条件提前到离线的索引构建环节,并支持动态索引更新,广告引擎可以更好地适应广告设置的生命周期的快速变化。这种优化策略有助于提高检索效率,减少冗余计算开销,提供更快速的广告检索。
七、总结
在本文中,我们深入探讨了广告引擎的构成与工作原理,揭示了其在现代广告系统中的重要性。从广告系统的基本概念到广告引擎的核心架构,我们分析了数据收集、广告匹配、打分排序和索引精简等关键过程。通过标签检索和向量检索等技术,我们了解了如何提升广告的匹配能力和用户体验。
广告引擎不仅仅是一个简单的广告投放工具,它是连接广告主与用户之间的桥梁,通过精准的数据分析和智能算法,确保广告能够有效地触达目标受众。本文中提到的每一个环节都是为了提高广告的相关性和效果,从而最大化广告投资的回报。
未来,随着技术的不断进步,广告引擎将会更加智能化,能够更好地适应快速变化的市场需求。广告主和平台应当不断关注新兴技术与趋势,以优化广告策略和提升用户体验。总结而言,掌握广告引擎的运作机制对于实现高效的广告投放至关重要,而不断创新与优化将是赢得竞争的关键。希望本文能够为您的广告策略提供有价值的见解与参考。
参考文章技术
- 极客时间《检索技术核心 20 讲》【广告系统:广告引擎如何做到在0.1s内返回广告信息?】,陈东 ----- 主要学习材料
- 互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客互联网广告及产品变现认知分析整理_张彦峰ZYF的博客-CSDN博客
- 美团广告实时索引的设计与实现 - 美团技术团队
- https://www.cnblogs.com/ErinCodeMM/p/5033321.html
- 搜索,推荐,广告系统架构及算法技术资料大合集吐血整理——2019 年终分享 - AIQ
- https://www.infoq.cn/article/73za7ahrg1osmdtfa9tv
- “量效合一”背后,巨量引擎搜索广告的业务逻辑是什么? - 数英
相关文章:
揭开广告引擎的神秘面纱:如何在0.1秒内精准匹配用户需求?
目录 一、广告系统与广告引擎介绍 (一)广告系统与广告粗分 (二)广告引擎在广告系统中的重要性分析 二、广告引擎整体架构和工作过程 (一)一般概述 (二)核心功能架构图 三、标…...
【2024】使用Docker搭建redis sentinel哨兵模式集群全流程(包含部署、测试、错误点指正以及直接部署)
目录💻 前言**Docker Compose介绍**最终实现效果 一、搭建集群1、创建文件结构2、创建redis节点3、验证节点4、创建sentinel哨兵5、验证Sentinel功能 二、spring连接1、添加依赖2、添加配置3、启动测试 三、直接部署流程1、拉取配置2、修改端口创建 前言 本篇文章主…...
Spring WebFlux与Spring MVC
Spring WebFlux 是对 Spring Boot 项目中传统 Spring MVC 部分的一种替代选择,主要是为了解决现代 Web 应用在高并发和低延迟场景下的性能瓶颈。 1.WebFlux 是对 Spring MVC 的替代 架构替代: Spring MVC 使用的是基于 Servlet 规范的阻塞式模型…...
江协科技最新OLED保姆级移植hal库
江协科技最新OLED移植到hal库保姆级步骤 源码工程存档 工程和源码下载(密码 1i8y) 原因 江协科技的开源OLED封装的非常完美, 可以满足我们日常的大部分开发, 如果可以用在hal库 ,将是如虎添翼, 为我们开发调试又增加一个新的瑞士军刀, 所以我们接下来手把手的去官网移植源码…...
Vue框架开发一个简单的购物车(Vue.js)
让我们利用所学知识来开发一个简单的购物车 (记得暴露属性和方法!!!) 首先来看一下最基本的一个html框架 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…...
探索嵌入式硬件设计:揭秘智能设备的心脏
目录 引言 嵌入式系统简介 嵌入式硬件设计的组成部分 设计流程 微控制器选择 原理图设计 PCB布局 编程与调试 系统集成与测试 深入理解微控制器 存储器管理 输入/输出接口 通信接口 电源管理 硬件抽象层(HAL) 操作系统(OS&am…...
逆向攻防世界CTF系列42-reverse_re3
逆向攻防世界CTF系列42-reverse_re3 参考:CTF-reverse-reverse_re3(全网最详细wp,超4000字有效解析)_ctfreverse题目-CSDN博客 64位无壳 _int64 __fastcall main(__int64 a1, char **a2, char **a3) {int v4; // [rsp4h] [rbp-…...
AIGC时代 | 如何从零开始学网页设计及3D编程
文章目录 一、网页设计入门1. 基础知识2. 学习平台与资源3. 示例代码:简单的HTMLCSSJavaScript网页 二、3D编程入门1. 基础知识2. 学习平台与资源3. 示例代码:简单的Unity 3D游戏 《编程真好玩:从零开始学网页设计及3D编程》内容简介作者简介…...
EMall实践DDD模拟电商系统总结
目录 一、事件风暴 二、系统用例 三、领域上下文 四、架构设计 (一)六边形架构 (二)系统分层 五、系统实现 (一)项目结构 (二)提交订单功能实现 (三࿰…...
基于多VSG独立微网的多目标二次控制MATLAB仿真模型
“电气仔推送”获得资料(专享优惠) 模型简介 本文将一致性算法引入微电网的二次频率和电压控制,自适应调节功率参考值和补偿电压,同时实现频率电压恢复、有功 无功功率的比例均分以及功率振荡抑制,提高系统的暂态和稳…...
自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析
前言:公司云原生k8s二开工程师发了一串通用性命令用来查询以下数值,我想着能不能将这命令写成一个自动化脚本。 起初设计的 版本一:开头加一条环境变量,执行脚本后,提示输入:需要查询的命名空间,…...
nginx 代理 web service 提供 soap + xml 服务
nginx 代理 web service 提供 soap xml 服务 最关键的配置: # Nginx默认反向后的端口为80,因此存在被代理后的端口为80的问题,这就导致访问出错。主要原因在Nginx的配置文件的host配置时没有设置响应的端口。Host配置只有host,没有对应的p…...
深入理解 MongoDB:一款灵活高效的 NoSQL 数据库
在现代应用程序开发中,数据存储技术已经从传统的关系型数据库(RDBMS)扩展到多样化的 NoSQL 数据库。MongoDB 作为一款广泛使用的文档型数据库,以其灵活性、高性能和易用性成为开发者的首选之一。本篇博文将从 MongoDB 的核心概念、…...
vue3 + vite + antdv 项目中自定义图标
前言: 去iconfont-阿里巴巴矢量图标库 下载自己需要的icon图标,下载格式为svg;项目中在存放静态资源的文件夹下 assets 创建一个存放svg格式的图片的文件夹。 步骤: 1、安装vite-plugin-svg-icons npm i vite-plugin-svg-icons …...
PDF版地形图矢量出现的问题
项目描述:已建风电场道路测绘项目,收集到的数据为PDF版本的地形图,图上标注了项目竣工时期的现状,之后项目对施工区域进行了复垦恢复地貌,现阶段需要准确的知道实际复垦修复之后的道路及其它临时用地的面积 解决方法&…...
JavaScript 高级教程:异步编程、面向对象与性能优化
在前两篇教程中,我们学习了 JavaScript 的基础和进阶内容。这篇文章将带领你进入更深层次,学习 JavaScript 的异步编程模型、面向对象编程(OOP),以及性能优化的技巧。这些内容对于构建复杂、流畅的前端应用至关重要。 …...
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。-多语言
目录 C 语言实现 Python 实现 Java 实现 Js 实现 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移…...
OCR实现微信截图改名
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple/ ──(Sat,Nov30)─┘ pip install shapely -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install paddleo…...
c++stl模板总结
stl 总结stl模板vectordequelistforward_liststl集合类set&unorder_setmap&unorder_map 自适应容器栈和队列stackqueuepriority_queue 总结stl模板 vector 1.初始化 vector具有多个重载的构造函数,可以在实例化vector时指定他开始时应该包含的元素个数以…...
文本生成类(机器翻译)系统评估
在机器翻译任务中常用评价指标:BLEU、ROGUE、METEOR、PPL。 这些指标的缺点:只能反应模型输出是否类似于测试文本。 BLUE(Bilingual Evaluation Understudy):是用于评估模型生成的句子(candidate)和实际句子(referen…...
Harmony NEXT-越过相机读写权限上传图片至项目云存储中
问题成因 在制作用户注册登录界面时想要实现用户头像上传共能,查询API文档,发现有picker和PhotoAccessHelper两个包可以选择使用,但是在使用PhotoAccessHelper包拉起相册并读入所选的照片后将该照片传入云存储中产生报错,需要相册…...
C++算法练习-day53——17.电话号码的字母组合
题目来源:. - 力扣(LeetCode) 题目思路分析 题目要求我们将一个数字字符串(每个数字对应一组字母,如2对应abc,3对应def等)转换成所有可能的字母组合。这是一个典型的组合生成问题,…...
计算机网络性能
任何一个系统都可以或需要不同的指标来度量系统的优劣、状态或特性。计算机网络是综合计算机技术与通信技术的复杂系统,可以通过许多指标对一个计算机网络的整体或局部、全面或部分、静态或动态等不同方面的性能进行度量与评价 1、传输时延 当一个分组在输出链路发…...
MAC卸载Vmware Fusion后无法再安装解决方案
MAC卸载Vmware Fusion后无法再安装解决方案 执行脚本 sudo rm -rf /Library/Application Support/VMware/VMware Fusion sudo rm -rf /Library/Application Support/VMware/Usbarb.rules sudo rm -rf /Library/Application Support/VMware Fusion sudo rm -rf /Library/Prefe…...
windows 服务器角色
windows 服务器角色 Active Directory Rights Management Services Active Directory RightsManagement Services (AD RS)帮助保护信息,防止未授权使用。AD RMS 将建立用户标识,并为授权用户提供受保护信息的许可证。 ServicesActive Directory 联合身…...
NAT学习手册
NAT(Network Address Translation,网络地址转换)是一种在局域网(LAN)内部使用私有地址,而在连接到互联网时将这些私有地址转换为全球唯一且有效的公网地址的技术。这种技术的主要目的是解决IPv4地址空间不足…...
python -从文件夹批量提取pdf文章的第n页,并存储起来
python -从文件夹批量提取pdf文章的第n页,并存储起来 废话不多说,看下面代码 讲解一下下面代码 reader PyPDF2.PdfReader (file) 将文件转化为PdfReader 对象,方便使用内置方法。 first_page reader.pages[0] 提取第一页 writer PyPDF…...
RPC中定时器制作思路
定时器设计 time_event time_event 类用来封装定时时间,内部需要包含一个任务执行时间,是否重复标记、是否取消标记,对于重复任务,还需要一个重复间隔时间。以及一个回调函数,用来执行任务到期后需要执行的动作。 构…...
Flutter简单实现滑块验证
现在实现一个 Flutter 滑动验证组件,类似于许多网站和应用程序中常见的“滑动以验证”功能。它通过滑动一个滑块来完成验证操作,用户需要将滑块拖动到指定位置以完成验证。 前置知识点整理 StatefulWidget 在 Flutter 中,StatefulWidget 是…...
第33周:运动鞋识别(Tensorflow实战第五周)
目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 1.3 查看数据 二、数据预处理 2.1 加载数据 2.2 可视化数据 2.3 再次检查数据 2.4 配置数据集 2.4.1 基本概念介绍 2.4.2 代码完成 三、构建CNN网络 四、训练模型 4.1 设置动态学习率 4.2 早停与保存最佳模型…...
C#中switch语句使用
编写一个程序,使用switch语句将用户输入的分数转换成等级,如表 private static void Main(string[] args) { Console.WriteLine("请输入分数:"); int score int.Parse(Console.ReadLine()); switch (score) …...
2024.11.28(作业)
思维导图 功能函数声明文件 #ifndef _FUN_H__ #define _FUN_H__ #include <myhead.h>#define MAX 50 //数组大小 #define QAZ 20 //长度和字符串大小typedef int datatype; //数据元素类型//2.1 定义顺序表类型 typedef struct {datatype data[MAX];int len; }S…...
充分统计量(Sufficient Statistic)概念与应用: 中英双语
充分统计量:概念与应用 在统计学中,充分统计量(Sufficient Statistic) 是一个核心概念。它是从样本中计算得出的函数,能够完整且无损地表征样本中与分布参数相关的信息。在参数估计中,充分统计量能够帮助我…...
2. STM32_中断
中断 中断是什么: 打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。 中断的意义: 中断可以高效处理紧急程序,不会一直占用CPU资源。如实时控制、故障处理、处理不确定…...
CAD 文件 批量转为PDF或批量打印
CAD 文件 批量转为PDF或批量打印,还是比较稳定的 1.需要本地安装CAD软件 2.通过 Everything 搜索工具搜索,DWG To PDF.pc3 ,获取到文件目录 ,替换到代码中, originalValue ACADPref.PrinterConfigPath \ r"C:…...
明明的随机数
题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉ÿ…...
2024金盾信安杯线上赛 MISC ezpng[wp]
下载题目发现给了个password和png 图片发现损坏的 password丢随波逐流一键解 base64 给出解码的结果是 cimbar搜索发现在Github有工具 然后对附件中的图片进行小厨房xor 得到一张新图片 利用工具进行跑出答案...
C与指针。
目录 1_指针理解 1.1变量的值 1.2变量的地址 1.3指针 1.4取变量的地址 2_分析指针 2.1分析指针变量的要素 2.2根据需求定义指针变量 3_指针的使用 3.1指针对变量的读操作 3.2指针对变量的写操作 4_指针占用空间的大小与位移 4.1指针占用空间的大小 4.2指针的位移…...
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践
使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践 在这篇博客中,我们将介绍如何利用 Selenium 和 Python 爬取腾讯新闻的内容,并将结果保存到 CSV 文件中。本教程包含以下内容: 项目简介依赖安装实现功能的代码实现中的关键技…...
ElasticSearch的下载和基本使用(通过apifox)
1.概述 一个开源的高扩展的分布式全文检索引擎,近乎实时的存储,检索数据 2.安装路径 Elasticsearch 7.8.0 | Elastic 安装后启动elasticsearch-7.8.0\bin里的elasticsearch.bat文件, 启动后就可以访问本地的es库http://localhost:9200/ …...
处理HTTP请求的两种常见方式:多个处理器(Handler)、多个处理函数(HandleFunc),两者有什么区别
一、多个处理器(Handler)、多个处理函数(HandleFunc),两者的区别: 在Go语言中,处理HTTP请求的两种常见方式是使用http.Handler接口和http.HandleFunc函数。它们都用于定义如何处理HTTP请求,但它们之间有一些关键的区别࿱…...
在oracle下载jdk显示400 Bad Request Request Header Or Cookie Too Large
下载JDK17,官网地址:【https://www.oracle.com/cn/java/technologies/downloads/#jdk17-windows】 问题: 出现 400 Bad Request: Request Header Or Cookie Too Large 错误,通常是由于浏览器存储的 Cookies 或请求头过大所导致的…...
机器学习与深度学习-2-Softmax回归从零开始实现
机器学习与深度学习-2-Softmax回归从零开始实现 1 前言 内容来源于沐神的《动手学习深度学习》课程,本篇博客对于Softmax回归从零开始实现进行重述,依旧是根据Python编程的PEP8规范,将沐神的template代码进行简单的修改。近期有点懒散哈哈哈…...
Vue3之弹窗
文章目录 第一步、引入JS第二步、弹框 在前端开发语言Vue3,在管理端如何进行弹窗?下面根据API实现效果。 Element API文档: Element-plus文档 搭建环境可参考博客【 初探Vue3环境搭建与nvm使用】 第一步、引入JS <script lang"ts&…...
计算机的错误计算(一百七十一)
摘要 探讨 MATLAB 中秦九韶(Horner)多项式的错误计算。 例1. 用秦九韶(Horner)算法计算(一百零七)例1中多项式 直接贴图吧: 这样,MATLAB 给出的仍然是错误结果,因为准…...
利用Python爬虫精准获取淘宝商品详情的深度解析
在数字化时代,数据的价值日益凸显,尤其是在电子商务领域。淘宝作为中国最大的电商平台之一,拥有海量的商品数据,对于研究市场趋势、分析消费者行为等具有重要意义。本文将详细介绍如何使用Python编写爬虫程序,精准获取…...
_C#_串口助手_字符串拼接缺失问题(未知原理)
最近使用WPF开发串口助手时,遇到一个很奇怪的问题,无论是主线程、异步还是多线程,当串口接收速度达到0.016s一次以上,就会发生字符串缺失问题并且很卡。而0.016s就一切如常,仿佛0.015s与0.016s是天堑之隔。 同一份代码…...
volcano k8s 部署
下载volcano-development文件 官网 https://volcano.sh/zh/docs/installation/volcano-development.yaml wget https://raw.githubusercontent.com/volcano-sh/volcano/master/installer/volcano-development.yaml部署volcano 查下需要下载的镜像 grep vc- volcano-develo…...
Linux---对时/定时服务
文章目录 目录 文章目录 前言 一.对时服务 服务端配置 客户端配置 二.定时服务 单次定时任务 循环定时任务 前言 在当今信息化高速发展的时代,时间的准确性和任务的定时执行对于各种系统和服务来说至关重要。Linux操作系统,凭借其强大的功能和灵活的…...
13 设计模式之外观模式(家庭影院案例)
一、什么是外观模式? 1.定义 在日常生活中,许多人喜欢通过遥控器来控制家中的电视、音响、DVD 播放器等设备。虽然这些设备各自独立工作,但遥控器提供了一个简洁的界面,让用户可以轻松地操作多个设备。而这一设计理念正是 外观模…...