`
moor212
  • 浏览: 174099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

陈漠沙:如何正确理解推送服务的“送达率”

 
阅读更多
本文选自《程序员》杂志电子版 2015 年 6 月 B 刊,作者陈漠沙,如需转载请注明出处。
在选择和衡量第三方推送服务时,开发者首要考虑的因素就是消息的“送达率”,那么该如何理解“送达率”呢? 推送服务的“送达率”可以达到多高?今天和大家一起来聊聊这个话题。

一次消息推送的完整流程

以 Android 平台为例,一次典型的消息推送过程如下图所示(模型已经简化):




大致的流程可以描述如下:

开发者首先将消息推送指令发送给第三方推送提供商(如友盟消息推送),告知推送服务商本次推送任务要发送的内容和目标对象。

我们假定该推送指令要推送给该 App 的所有用户(广播),假设该 App 有 100W 安装量,那么“发送总数”就是 100W 。
推送服务商收到推送指令后,会对推送的设备集合做有效性检查,假设经有效性判断后,识别出有效设备 99W ,这 99W 设备就是该次推送任务的“接受数”。
有效性检查包括多个层面,基本的层面包括检查设备号 device-token 的合法性( device-token 根据一定的规则生成,如果设备号不符合生成规则,必然是无效设备)。
在步骤 2 筛选出的合法设备里面,第三方推送服务会选择当时长连通道在线的设备进行消息下发,我们称这部分设备为“在线设备”,假设有 40W ,我们称之为“下发数”。
这里说的“在线设备”表示的是设备已经联网,并且与服务器端建立了长连通道。“设备联网 & 长连通道建立”是消息下发的前提。上图中的“设备3”就是一个离线设备的例子。
第三方服务器对步骤 3 选择出来的“在线设备”进行消息投递,投递给设备。假设消息成功下发到设备的有 39.5W ,这个数字我们称之为“送达设备数”。
有可能因为网络原因,导致消息下发不成功,比如网络闪断(从而长连通道也会断掉)。一般来说,“送达设备数”和“下发数”非常接近,一般都在 98% 以上。
消息会首先送达设备,送达设备后,会根据 App 包名( Android 平台以包名作为 App 的唯一标识)路由给 App ,路由到 App 之后,终端用户就可以接收到通知消息了,由此消息推送的整个过程就算完成,上图中消息发到给“设备1”就是这样一个过程。
假设成功路由到 App 的消息数为 35W ,我们称为“送达 App 数”。 这个过程牵涉到较多的专业术语,我通过寄快递的例子来解释下这个过程: 假如你在上海要通过顺丰寄送一个快件给北京的友盟公司,那么快件首先会邮递到顺丰公司在北京的总站点,之后再根据友盟公司的地址投递/路由到友盟,这样一个寄件过程就算完成了。

在这里,你要寄送的快件就是你要发的“消息”,北京的友盟公司相当于最终“接收消息的App”,顺丰公司在北京的总站点相当于这里提到的“设备”,友盟公司的地址就相当于这个环节里面提到的“包名”。广义来讲,其实快递本质上也可以看做是一种消息推送~

消息送达设备,但最终没有成功路由到 App 的原因比较多,最常见的原因是 App 已经被删除,导致路由失败,或者在某些深度定制系统上(比如 MIUI )由于做了某些限制,如果 App 在消息送达设备后没有启动过,也会导致路由失败。"设备2"就是一个 App 已经卸载,消息可以下发到设备,但是最终路由不到 App 的例子。
由此来看,消息推送从开发者创建消息推送指令,到最终消息成功送达 App (只有送达 App 后,消息才可以正确展示出来),中间会经过几个步骤,在每个步骤中,相关数字都会有损耗。

解读“送达率”背后的那些指标、术语

接下来解释下前面提及的几个数字概念,由此来引出我们要重点讨论的消息“送达率”定义。

发送总数: 该数字是从开发者的角度出发的,表示从开发者看到的或者认为的该次发送目标集合的个数。

接受数: 表示第三方推送服务提供商认定的合法的发送设备数。"接受数"是真实的发送总数,表示该次任务计划下发的总数。
一般来说,“接受数”和“发送总数”是非常相近的。

下发数: 表示当次发送任务创建时刻,长连在线设备的个数(上文提到,设备联网且设备长连在线是消息能够下发的前提),推送服务商会选定这些长连在线的设备,做消息下发。

送达设备数: 表示消息送达到设备的数字,注意这个仅表示送达到设备层面的数字。
送达 App 数: 消息送达到设备后,成功路由到 App 的数字。

概念明确之后,我们给出两个送达率的定义,“在线送达率”和“通用送达率”。

在线送达率: 针对长连在线的设备进行消息下发,成功送达到设备的比例(注意,定义提及的只是送达到设备,而非送达到 App 这个层面)。
在线送达率 = 送达设备数( 39.5W ) / 下发数( 40W ) 或者在线送达率=送达设备数/接收数*在线设备率≈ 98.75% ,上文中的步骤 4 说的就是在线送达率。
绝大部分推送服务提供商所宣传的高送达率其实说的就是“在线送达率”。

通用送达率: 针对该次接受的设备集合,成功送达到 App 的比例(定义提及的是送到到 App ,而非设备)。
通用送达率 = 送达 Ap p数( 35W ) / 接收数( 99W )。

这里还需要补充一点的是,上述假定的数字都是针对消息创建时刻对长连在线的设备进行下发得出的数字。

实际上,开发者发送的消息都会设定一定的有效期(比如新闻类 App 的消息有效期一般比较短,而一些公告类的通知有效期可能会比较长)。在消息有效期内,如果仍有设备上线,那么消息会继续下发,“送达设备数”和“送达App数”会继续增长,直至消息过了有效期,当次发送任务生命周期才算结束,从而消息不会再去下发了,这个不会影响“在线送达率”,但是“通用送达率”在消息有效期内是会不断提升,直至消息过了有效期。假设消息最终送达到设备有 55W ,送达到 App 有50W,那么最终的“通用送达率”应该是 50W/99W 。

通用送达率和 App 活跃度的关系

看过这两个送达率的定义之后,相信大家就能明白“送达率”的含义了。一般来讲,“通用送达率”和 App 自身的活跃度以及所属的垂直领域相关度很大。

相信大家也能观察到一个现象:在 App 集成了推送 SDK 刚上线的时候,在友盟推送后台看到的通用送达率会很高,之后会发现通用送达率就会随着时间的增长而逐步降低,直至最后稳定在一个数值上。

这就说明了通用送达率和 App 活跃度有很大的关系。不活跃的 App ,有可能是因为卸载导致,有可能是因为 App 没有启动过,导致和服务器的长连接建立不起来,从而导致服务器端无法下发消息(消息下发的前提是设备联网且和服务器的长连通道建立)。

下面我们给出一个线上真实 App 的某次发送任务,细分到 App 的活跃区间,来看看 App 活跃度对消息送达率的影响:



这里的“受理”就是我们定义的“接收数”,“送出”表示“下发数”,“通道送达”表示“送达设备数”,“送达”表示“送达 App 数”。

上图表明,随着活跃度的下降,会导致消息的“下发数”、“送达设备” 和“送达 App 数”所占比例均会大幅度的降低。

上述过程,我们解释了 Android 平台的消息送达率,对于 iOS 平台来说,一般来说都是走的苹果自身提供的 APNs (Apple Push Notification Service)通道,这个时候,我们只能拿到“发送总数”和“接受数”这两个数字,其中“接受数”表示 APNs 接受的发送数,我们无法进一步获取苹果自身的送达数。

因此,谈到消息的送达率,我们一般都是针对 Android 平台来说的。

相信大家对推送的重要指标“送达率”有了一定了解,想了解更多推送指标和使用技巧?访问友盟论坛-推送版块http://bbs.umeng.com/forum-push-1.html

关于作者:陈漠沙,友盟研发总监,消息推送业务线负责人,曾就职于雅虎北京软件研发中心,担任系统开发工程师。新浪微博@贝克汉姆老了
2015年06月16日发布
  • 大小: 34.4 KB
分享到:
评论

相关推荐

    基于STC32单片机内部RTC的学习计时器+全部资料+详细文档(高分项目).zip

    【资源说明】 基于STC32单片机内部RTC的学习计时器+全部资料+详细文档(高分项目).zip基于STC32单片机内部RTC的学习计时器+全部资料+详细文档(高分项目).zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    2023新型智慧城市智慧交通专项设计方案[498页Word].docx

    2023新型智慧城市智慧交通专项设计方案[498页Word].docx

    QT开发的概要介绍与分析

    QT开发资源描述 QT是一款功能强大的跨平台应用程序和用户界面开发框架,广泛应用于各种软件项目的开发中。QT提供了丰富的库和工具,使得开发者能够高效地创建出具有专业外观和优秀用户体验的应用程序。 QT开发资源涵盖了从界面设计到后台逻辑实现的全流程。在界面设计方面,QT提供了强大的Qt Designer工具,支持拖拽式布局和丰富的控件库,使得开发者能够直观地设计复杂的用户界面。同时,QT还支持样式表(QSS)和自定义绘图,让界面更加美观和个性化。 在后台逻辑实现方面,QT提供了完整的C++ API,支持多线程、网络编程、数据库访问等功能。开发者可以利用QT的类库和框架,快速实现各种复杂的功能模块。此外,QT还提供了丰富的文档和社区支持,使得开发者在遇到问题时能够迅速找到解决方案。 QT的跨平台特性是其最大的优势之一。开发者只需编写一次代码,就可以在不同的操作系统和平台上运行应用程序。这使得QT成为开发跨平台桌面应用、移动应用和嵌入式系统的理想选择。 总之,QT开发资源为开发者提供了一套完整、高效、易用的开发工具链。通过利用QT提供的丰富资源和强大功能,开发者可以快速构建出高质量

    node-v5.4.1-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    整合了在Unity开发过程中自主开发的实用代码,如摄影机操作,角色操作,控制器交互等。涵盖3D游戏到VR领域。.zip

    VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

    西北工业大学-智慧树大学生心理健康章节测试答案.doc

    西北工业大学-智慧树大学生心理健康章节测试答案.doc

    Python爬虫示例之CnkiSpider-master.zip

    Python爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-masterPython爬虫示例之CnkiSpider-master

    数据库Node-Chat-Demo-mongodb.zip

    【mongodb基本操作】 在开发的过程中时不时需要用命令行查看数据库当前的状态,于是记住几条最常用的命令还是非常必要的。在这里我用windows8的命令行演示一些常用的操作。 (1)查看所有的数据库: show dbs 可以看出,这条命令显示了当前所有数据库的名字和内存大小信息 (2)切换到某一个数据库:use <dbname> (3)查看当前数据库的集合: show collections (4)查看各collection的状态:db.printCollectionStats() (5)删除当前的数据库: db.dropDatabase() (6)查看某个集合:db.<collectionName>.find() (7)删除某个集合:db.<collectionName>.drop()

    node-v5.1.1-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v5.11.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    msvbvm60.dll

    如果是32位的系统,那就将本站下载32位的dll文件放到“C:/Windows/System32”这个文件夹里面,如果是64位的系统,那就将本站下载的32位dll文件放到“C:/Windows/SysWOW64”这个文件夹里面,本站下载的64位文件放到“C:/Windows/System32”这个文件夹里面.

    基于深度强化学习DQN的FlappyBird游戏AI开发 .zip

    基于深度强化学习DQN的FlappyBird游戏AI开发 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一。它主要用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点在于没有监督数据,只有奖励信号。 强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。 强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。 强化学习在工程领域的应用也相当广泛。例如,Facebook提出了开源强化学习平台Horizon,该平台利用强化学习来优化大规模生产系统。在医疗保健领域,RL系统能够为患者提供治疗策略,该系统能够利用以往的经验找到最优的策略,而无需生物系统的数学模型等先验信息,这使得基于RL的系统具有更广泛的适用性。 总的来说,强化学习是一种通过智能体与环境交互,以最大化累积奖励为目标的学习过程。它在许多领域都展现出了强大的应用潜力。

    node-v0.12.14-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于GPT及个人习惯的comfyui节点.zip

    GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。

    基于飞思卡尔KEA系列单片机的电磁直立智能车+全部资料+详细文档(高分项目).zip

    【资源说明】 基于飞思卡尔KEA系列单片机的电磁直立智能车+全部资料+详细文档(高分项目).zip基于飞思卡尔KEA系列单片机的电磁直立智能车+全部资料+详细文档(高分项目).zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    基于强化学习的跳一跳游戏.zip

    基于强化学习的跳一跳游戏 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一。它主要用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点在于没有监督数据,只有奖励信号。 强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。 强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。 强化学习在工程领域的应用也相当广泛。例如,Facebook提出了开源强化学习平台Horizon,该平台利用强化学习来优化大规模生产系统。在医疗保健领域,RL系统能够为患者提供治疗策略,该系统能够利用以往的经验找到最优的策略,而无需生物系统的数学模型等先验信息,这使得基于RL的系统具有更广泛的适用性。 总的来说,强化学习是一种通过智能体与环境交互,以最大化累积奖励为目标的学习过程。它在许多领域都展现出了强大的应用潜力。

    node-v0.10.45-sunos-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    西北工业大学-复变函数mooc答案.pdf

    西北工业大学-复变函数mooc答案.pdf

    java基础第一阶段笔记(复习)

    Java基础

    node-v5.10.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics