当前位置: 首页 > 编程日记 > 正文

一份职位信息的精准推荐之旅,从AI底层架构说起

640?wx_fmt=jpeg

整理 | 夕颜
出品 | AI科技大本营(ID:rgznai100)

【导读】也许,每天早上你的邮箱中又多了一封职位推荐信息,点开一看,你可能发现这些推荐正合你意,于是按照这些信息,你顺利找到一份符合自己期待的新工作。当然,也有可能推荐的信息根本无法让你满意,于是你手一滑,这份邮件的命运就是在你点下清空键之前,永远躺在邮箱底部,第二天被新的邮件淹没。

职场社交 App 的规则就是这么简单粗暴,在信息日益爆炸,各大职场社交平台竞争日益激烈的时代,只有对用户有价值的信息,才会留住他们流转的目光。

那么,怎样才能留住用户的目光?领英决定用当下最热、最有前景的 AI 技术和大数据处理来实现本地化的创新,以期为用户打造更好的产品体验。

自 2014 年进入中国以来,领英在中国北京和美国硅谷从无到有,构建了一支超过 100人的本土研发团队,两地团队以“One Team”的形式协作,利用总部的技术资源优势,希望推动中国市场完成本地化产品与技术创新。

本文采访了领英人工智能研发总监张梁,将从领英的AI系统底层架构与应用、流数据处理、开源三个角度,从技术层面对其进行全方位剖析,希望领英的 AI 技术与实践对读者有所启发和帮助。

AI系统底层架构与应用

640?wx_fmt=png

领英产品设计、人工智能系统和AB测试之间的关系

推荐系统+知识图谱

据领英人工智能研发总监张梁介绍,领英希望通过人机结合的方式,将数据标准化成人工智能系统可以理解的形式。

在领英应用的众多 AI 技术中,用户最熟悉的可能就是以站内信或消息推送等形式到达客户端的内容。用户收到的内容不尽相同,这背后涉及领英个性化推荐系统进行的一系列复杂的计算和推断。

领英个性化推荐系统的基础架构是怎样的?模型构建和基础架构的过程中采用了哪些技术使得其可以实时推送精准的个性化内容呢?

对此,张梁介绍道,领英的职位推荐系统的基础是通过大量用户数据建立的知识图谱和研发针对自然语言的标准化技术。针对每位用户的简历,领英使用基于深度学习模型的标准化技术,如 LSTM、CNN 等来实现信息抓取。

640?wx_fmt=png

领英追踪、检索和排名架构

640?wx_fmt=png

领英人才搜索架构和流程

张梁回忆道,6、7年前,领英的职位推荐还是一个线性模型,如果求职者是一位软件工程师,系统就会推荐一个软件工程师的职位给他。但后来他们在使用中发现,根据用户简历和工作职位的描述来做推荐,不一定能够完全实现个性化。

640?wx_fmt=png

用于具有树交互功能的GLMix模型管道

“我们还希望根据用户之前的职位申请,为他推荐更多类似的职位,即深度的个性化。之后我们又研发了 Generalized Linear Mixed Model(GLMix),针对每个用户和每个职位建立一个单独为他们服务的模型,这使得模型的参数量达到了上百亿的规模,同时也成功地把职位申请的数量提高了30%。领英团队把这个模型用在中国的数据上,又将职位申请的数量额外提高了 11%。”张梁说道。

除了智能推荐之外,领英还构建了自己的知识图谱。

640?wx_fmt=png

领英知识图谱

640?wx_fmt=png

领英知识图谱

领英全球拥有 6.45 亿会员、3.5 万项职业技能、3000 万雇主公司、超过 2000 万个开放职位以及 9 万家教育机构,形成高度结构化的数据集。领英的知识图谱便是建立在超过 10 亿数据点之上的一个大型知识库,包括用户职位、职级、技能、公司、地理位置、学校等。领英运用这些数据点及其之间的关系,优化推荐、搜索以及其他产品功能,推动业务增长。

首先,创建这样一个庞大的知识库本身就是一个巨大的挑战。与谷歌的知识库和微软的 Satori 从互联网上自动提取事实的做法不同,领英主要从会员、招聘人员、广告商和公司管理人员等大量用户生成的内容中获得领英的知识图谱,并用从互联网上提取的数据进行补充。因此,这些数据噪音大,并可能存在重复。

为了解决这一挑战,领英应用了自然语言处理、机器学习等技术手段,对用户生成的内容和外部数据源进行数据标准化,如使用机器学习进行实体分类结构、实体关系推理、下游数据消费者的数据表示、从图谱中提取洞察,以及从用户处获取交互式数据,以验证推理并收集训练数据。

利用这个庞大的知识图谱,领英能够做到什么呢?

张梁介绍道,以领英档案数据为例,几乎所有会员数据都是由会员自己自行输入的。因此,同一个职位在一家公司可能称为“资深软件工程师”,而在另一家公司则称为“研发负责人”。为了将这些大量的职位进行标准化,领英的分类学家创建了职位分类体系,然后采用机器学习模型(LSTM模型、其他神经网络等)进一步将大量职位进行关联。了解这些关联后就可以进一步推断出每名会员在档案内容之外具备的深层次技能,例如,具有“机器学习”技能的会员同时也了解“人工智能”。这就是构建领英知识图谱分类和关联体系的一个实例。

2019 年初领英中国APP推出了“职业指南”功能,便是知识图谱标准化的一大成果体现。“职业指南”基于领英知识图谱中已经标准化、系统化数据点,从知识库里的职位、职级、技能、公司等信息中提取出级别分布、升职年限,以及该职业“入行前”和“转行后”详细分析等精细洞察,并应用机器学习保证更好的相关性与精准性。

另外,2019 年领英中国APP推出的“薪资洞察”功能是基于用户提供的数据,利用贝叶斯平滑等人工智能技术来推测(Inference)不同领域和职级的平均薪资。具体来看,为了尽力消减样本量过小导致的误差,领英技术团队使用贝叶斯平滑等人工智能技术进行有效推测,确保最终呈现薪资区间的真实性。举例来说,在一些比较冷门的行业或地区,用户提供数据量不足时,产出的洞察容易缺少代表性。此时,为了得到相对接近真实情况的薪资区间,领英运用人工智能对数据进行筛选,寻找相近的地区或行业的数据来扩充样本量,并以形成的基准进行合理推测。

640?wx_fmt=png

此外,“薪资洞察”的数据既有用户主动提交的薪资数据,又有企业职位段的数据,确保参考样本量足够大的同时,也从不同数据维度综合衡量,尽可能真实反映职场人的薪资情况。当数据源覆盖得足够广足够多时,产生的洞察自然会更全面、精准。

另外,领英还把知识图谱与 AI 推荐系统结合起来,提供更加精准的服务。具体来说,基于领英数据的知识需要以机器可读的方式清晰地表达出来,领英知识图谱通过在实体分类法(entity taxonomies)之上形成专业领域的本体(ontology)来标准化实体和关系,定义每个实体的身份和属性以及实体之间的关系。例如,在领英职位推荐中,领英从成员个人资料中提取标准化实体,如职位、技能、公司、教育、地理位置等,并与从职位描述中提取的相同类型的实体直接匹配。这样的匹配信息可以直接用于驱动推荐系统的机器学习模型。与直接使用会员和职位发布者提供的原始数据相比,知识图谱中的标准化实体为推荐系统提供了更好的相关性。

多层感知器(MLP)解决延迟问题

针对某些指导性学习任务,领英会在必要时采用典型多层感知器。

MLP(多层感知器)网络是一个简单的深度神经网络模型,已被用于领英的推荐、搜索系统的推断过程,在类似于招聘者搜索和信息流排名等应用中使用了这种网络。

MLP 模型的优势在于它可以被快速试用而不必担心延迟。如果使用完全在线评分的系统,更复杂的模型,如 CNN 和 BERT 有时会面对延迟带来的挑战。领英通过离线、近线和在线评分的混合方法解决了这样的延迟挑战。例如,在搜索应用中,如果用于排序的神经网络模型遵循双塔模式 (two-tower neural network,一个神经网络用于对查询关键字的计算,另一个神经网络用于对需要排序的文档的评分),你可以对查询关键字使用在线计算,对文档使用离线/近线评分。

此外,领英还已经开始尝试在推荐、搜索在线系统中使用更高级的模型,如最近在搜索系统中尝试了 CNN、BERT 和 sequence-to-sequence 模型,并获得了较好的离线和在线结果。

运算平台:在线评分+近线评分+双塔模式

领英的运算平台面对庞大的用户数据和信息量,这要求领英对各种信息的处理需要“区别对待”,例如对于线上和线下的请求处理,领英就采用了不同的 AI 模型,以使效率最大化。

具体来说,张梁解释道,就是当用户向领英服务提出请求,并且需要在几毫秒内响应时,领英的 AI 模型通常会使用在线评分(scored online);其他情况下,则使用近线、离线评分。举例来说,对于领英的信息推送通知,因为不需要对用户请求以毫秒为单位进行响应,AI 模型会使用近线评分(scored nearline)来决定向谁和何时发送何种内容的通知。

而当模型需要大量运算力来满足对于延迟的要求时(例如深度神经网络模型)时,领英会将模型分解为在线评分和离线或近线评分组件,以在延迟和准确性之间达成良好的平衡。这将要求 AI 模型具有一定的结构以使其可以分割。例如,领英经常使用双塔(two-tower)方法(一个神经网络用于会员,另一个神经网络用于需要排序的文档),因此可以在会员在发出请求之前,给需要排序的文档的神经网络中的嵌入向量预打分,从而减少在线评分对系统延迟的影响。

Pro-ML“人工智能自动化”平台

AI 自动化已成为一股技术潮流,领英也不例外地赶上了这股技术潮流,并将其应用于服务中。

2017 年 8 月,领英开始了一项名为“Productive Machine Learning”(简称“Pro-ML”,人工智能自动化)的新项目。Pro-ML 的目标是将机器学习工程师的效率提高一倍,同时为来自领英的工程师打造人工智能和建模工具。

在构建 Pro-ML 的过程中,领英尽可能地利用和改进现有代码库中的最佳组件,从而灵活地支持现有的主要 ML 算法和将要出现的新算法。在 Pro-ML 平台上,领英主要做了:

  • 开发(Exploring and authoring):建模过程从探索问题空间、特征和数据开始,然后确定特定目标。通过交叉折叠验证、曲线下面积 AUC、F分数等方法评估机器学习算法并进行重试。

  • 训练(Training):利用 Azkaban 和 Spark 进行模型训练。模型通过脱机验证后,训练库会将经过训练的工件和元数据传递给部署系统。

  • 部署(Deploying):Pro-ML 将通过自动验证、编排、监视和通知,确保所需的代码和数据工件同步,部署的过程还与实验平台相关联,以确保所有活跃实验在整个系统中的正确目标中具有所需的工件(Artifacts)。

  • 运行(Running):为了构建真正能够成功运行的系统,领英需要可靠、高效、可操作地评估生产中的模型,包括在 Spark 和 Pig 等系统中的离线运算, Samza 中的近线数据处理,REST 服务中的在线评分以及在搜索系统中的文件抽取和排序。

除此之外,领英还采用多模态技术,使用多种不同类型的信号来优化信息流和搜索排名,如用自然语言处理技术(NLP)做文本理解,用计算机视觉技术做图像和视频理解,用微软生成视频脚本的 API 技术进行语音识别等,在信息流和搜索排序方面为会员提供了更有吸引力、更具个性化的用户体验。

流数据处理

Kafka:面向大规模流数据的标准消息系统

面对如此大的数据规模,领英在稳定运行机器学习模型上遇到哪些挑战?如何解决?

2011 年 7 月,领英开始大规模使用 Kafka,它由领英的工程师在 2010 年研发。

张梁坦承,在领英,不同的应用使用同一个 Kafka 集群,所以如果某个应用滥用 Kafka,将会对共享集群的其他应用带来性能和 SLA 上的负面影响。即便是有些合理的使用场景,也有可能会带来很坏的影响,比如,在某些场合如果要重新处理整个数据库的所有数据,那数据库中的所有记录会迅速推送到 Kafka 上,即便 Kafka 性能很高,也会很容易造成网络饱和磁盘冲击。

为了解决这个问题,领英研发了一个机制:如果每秒钟的字节数超过了一个阈值,就会降低这些Producer 和 Consumer 的速度。对于大多数应用来讲,这个默认的阈值都是可行的。但是有些用户会要求更高的带宽,于是领英引入白名单机制,让白名单中的用户能够使用更高数量的带宽。

对于领英来说,采用 Apache Kafka 好处很多。2011 年,当时 Kafka 每天大约处理 10 亿条消息,这一数据在 2012 年达到了每天 200 亿条,而到了 2013 年 7 月,每天处理的消息达到了 2000 亿条。目前,领英每天利用 Kafka 处理的消息超过 5 万亿条,在峰值时每秒钟会发布超过 450 万条消息。如今,Apache Kafka 已经成为了一个面向大规模流数据的,标准的消息系统,在领英,它被用作各类数据管道的支柱,支持一系列关键服务,已经成为确保企业基础架构健壮、容错和高性能的核心组件。

从MapReduce/Pig 框架迁移到 Spark

另一方面,领英已逐渐把数据处理从旧的 MapReduce/Pig 框架迁移到 Spark,并在 Spark 上做了一些创新。

张梁介绍道,领英从 2015 年开始在 Spark 上构建数据处理流程,现在大多数生产环境离线工作流都使用Spark 而不是 MapReduce 或 Pig。而且,领英已经将 Jupiter NoteBook 和工作流管理工具 Azkaban 与 Spark 集成在一起。

在 Spark 之上,领英还构建了许多机器学习库,例如 GLMix库,它能帮助领英构建具有数百亿参数的,针对个别用户或个别文档的个性化模型。

另外,可能会有人好奇,领英处理流数据是否为 Spark 和 领英自建的流数据处理框架 Samza 并用?以哪个为主?为什么?

对此,张梁也为我们解答了疑惑。“对于流数据处理,我们主要使用 Samza。在领英,Samza 每天处理超过一万亿条消息,并被数百个拥有超过 10,000 个容器的生产应用程序使用。我们之所以选择 Samza,是因为它在有效支持状态、快速故障恢复、再处理和无 Lambda 架构以及可扩展性方面具有独特优势。

大规模图处理

此外,随着自媒体的快速发展,每天都有大量用户生成的图信息涌现出来,如何应对大规模图处理带来的问题变得迫在眉睫。对此,领英是怎么做的呢?

对此,领英尝试在多处应用在线和离线图处理系统(online and offline graph processing systems)来解决问题。 领英的功能“你可能认识的人”(People You May Know)一直在使用 Gaia——一个实时图推荐平台来提供推荐服务。

离线图处理系统可以为工程师执行数据分析或生成非时间敏感的建议,探索新的图算法以生成建议和评估度量的影响。有前景的算法将会进入离线推荐管道( 使用离线图平台),然后进入领英的在线推荐解决方案( 使用在线图平台)。

张梁透露,目前,领英正在探索如何使用 Gaia 来收集可以用于离线训练的特性。

开源

如今,开源开放已成为一股潮流,很多大型企业都加入其中,推动着技术进步,同时从中受益。领英作为其中一员,也对开源持开放的态度,并做出了自己的贡献。

据张梁统计,目前领英已经开放了超过 100 个项目,贡献了超过 50 万行代码,跨越了许多软件类别,包括数据、框架、系统操作、测试和移动,如 Kafka、Samza 等开源项目已得到了广泛的应用。除了已经在前面介绍过的 Kafka,下面简单介绍一些其他开源项目:

  • Samza:Apache Samza 是一个开源框架,可以帮助开发者进行高速消息处理同时具有良好的容错能力。Samza 可从 Kafka 中获取消息并进行处理,处理完毕后把结果返回 Kafka

  • TonY(TensorFlow on YARN):TonY 是领英开发的在 Hadoop 上自然运行 TensorFlow 的框架。TonY 旨在通过处理资源协商和容器环境等任务,为在 Hadoop 上可靠、灵活地运行TensorFlow 提供相同的支持。

  • Photon ML: 一个用于 Apache Spark 的机器学习库。通过将 Spark 快速处理海量数据集的能力与强大的模型训练和诊断实用程序相结合,可以运用 Photon ML 对推荐系统选择的算法做出更明智的决策。

从 2014 年进入中国开始,领英不断地探索着中国这片独具特点的市场。未来,领英希望进一步依靠 AI 和大数据技术升级优化用户体验,这一次,它能够凭借技术吸引住用户的目光吗?我们且静待市场的反响。

采访嘉宾:

张梁,领英人工智能研发总监

(*本文为AI科技大本营原创文章,转载微信联系1092722531)


精彩推荐




推荐阅读

  • 掌握这些步骤,机器学习模型问题药到病除

  • 值得收藏!基于激光雷达数据的深度学习目标检测方法大合集(下)

  • 6张拓扑图揭秘中心化交易所的5种行为, 原来中心化比你想象的重要!

  • 分布式存储春天已来Storj首登top10; Cardano排名上升; 以太坊比特币活跃地址双下降 | 数据周榜

  • 华为愿出售5G技术渴望对手;苹果将向印度投资10亿美元;华为全联接大会首发计算战略;腾讯自研轻量级物联网操作系统正式开源……

  • TDD 就是个坑!

  • 我愿出 2 倍工资,挖这个被裁的程序员!

  • 厉害!接班马云的为何是张勇?

640?wx_fmt=png

你点的每个“在看”,我都认真当成了喜欢“

相关文章:

Vue.js 生命周期

2019独角兽企业重金招聘Python工程师标准>>> 每个 Vue 实例在被创建之前都要经过一系列的初始化过程 vue在生命周期中有这些状态, beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed。Vue在实例化的过程中&#x…

AX2009取销售订单的税额

直接用以下方法即可: Tax::calcTaxAmount(salesLine.TaxGroup, salesLine.TaxItemGroup, systemDateGet(), salesLine.CurrencyCode, salesParmLine.LineAmount, salesTable.taxModuleType()); salesParmLine.LineAmount:这个直接取的是装箱单或者发票…

Dubbo源码解析之服务路由策略

1. 简介 服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的服务提供者。在详细分析服务路由的源码之前,先来介绍一下服务路由是什么。服务路由包含一条路由规则,路由规则决定了服务消费者的调…

C++中std::reverse和std::reverse_copy的使用

std::reverse&#xff1a;反转排序容器内指定范围中的元素。std::reverse_copy与std::reverse唯一的区别是&#xff1a;reverse_copy会将结果拷贝到另外一个容器中&#xff0c;而不影响原容器的内容。std::reverse: defined in header <algorithm>, reverses the order …

真相!30K拿到互联网大厂offer,网友:我服了!

最近笔者在知乎刷到一个帖子&#xff0c;其中&#xff0c;这条回答让人印象深刻&#xff1a;其实&#xff0c;最近几年人工智能大火&#xff0c;其中深度学习岗位的薪酬爆增&#xff0c;BAT大厂高薪招聘AI人才&#xff0c;收到的简历却寥寥无几&#xff1f;究竟是大厂岗位要求高…

OracleDesigner学习笔记1――安装篇

OracleDesigner学习笔记1――安装篇 QQ&#xff1a;King MSN&#xff1a;qiutianwhmsn.com Email&#xff1a;qqkinggmail.com 一&#xff0e; 前言 Oracle是当今最流行的关系型数据库之一&#xff0c;和很多朋友一样&#xff0c;我也是一个Oracle的爱好者&#xff0c;从…

C++/C++11中std::queue的使用

std::queue: 模板类queue定义在<queue>头文件中。队列(Queue)是一个容器适配器(Container adaptor)类型&#xff0c;被特别设计用来运行于FIFO(First-in first-out)场景&#xff0c;在该场景中&#xff0c;只能从容器一端添加(Insert)元素&#xff0c;而在另一端提取(Ext…

常见的http状态码(Http Status Code)

常见的http状态码&#xff1a;&#xff08;收藏学习&#xff09; 2**开头 &#xff08;请求成功&#xff09;表示成功处理了请求的状态代码。 200 &#xff08;成功&#xff09; 服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。201 &#xff08;已创…

“不给钱就删库”的勒索病毒, 程序员该如何防护?

作者 | 阿木&#xff0c;王洪鹏&#xff0c;运营有个人公众号新新生活志。目前任职网易云计算技术部高级工程师&#xff0c;近3年云计算从业经验&#xff0c;爱读书、爱写作、爱技术。责编 | 郭芮来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;近期一家名为ProPub…

ruby实时查看日志

(文章是从我的个人主页上粘贴过来的&#xff0c; 大家也可以访问我的主页 www.iwangzheng.com) 在调试代码的时候&#xff0c;把日志文件打开&#xff0c;边操作边调试能很快帮助我们发现系统中存在的问题。 $tail rails_2014_03_03.log -f转载于:https://www.cnblogs.com/iw…

干货 | OpenCV看这篇就够了,9段代码详解图像变换基本操作

作者 | 王天庆&#xff0c;长期从事分布式系统、数据科学与工程、人工智能等方面的研究与开发&#xff0c;在人脸识别方面有丰富的实践经验。现就职某世界100强企业的数据实验室&#xff0c;从事数据科学相关技术领域的预研工作。来源 | 大数据&#xff08;ID&#xff1a;hzdas…

C++/C++11中std::priority_queue的使用

std::priority_queue:在优先队列中&#xff0c;优先级高的元素先出队列&#xff0c;并非按照先进先出的要求&#xff0c;类似一个堆(heap)。其模板声明带有三个参数&#xff0c;priority_queue<Type, Container, Functional>, 其中Type为数据类型&#xff0c;Container为…

left join 和 left outer join 的区别

老是混淆&#xff0c;做个笔记&#xff0c;转自&#xff1a;https://www.cnblogs.com/xieqian111/p/5735977.html left join 和 left outer join 的区别 通俗的讲&#xff1a; A left join B 的连接的记录数与A表的记录数同 A right join B 的连接的记录数与…

php减少损耗的方法之一 缓存对象

即把实例后的对象缓存起来(存入变量)&#xff0c;当需要再次实例化时&#xff0c;先去缓存里查看是否存在。存在则返回。否则实例化。转载于:https://www.cnblogs.com/zuoxiaobing/p/3581139.html

windows10 vs2013控制台工程中添加并编译cuda8.0文件操作步骤

一般有两种方法可以在vs2013上添加运行cuda8.0程序&#xff1a;一、直接新建一个基于CUDA8.0的项目&#xff1a;如下图所示&#xff0c;点击确定后即可生成test_cuda项目&#xff1b;默认会自动生成一个kernel.cu文件&#xff1b;默认已经配置好Debug/Release, Win32/x64环境&a…

算法人必懂的进阶SQL知识,4道面试常考题

&#xff08;图片付费下载自视觉中国&#xff09;作者 | 石晓文来源&#xff5c;小小挖掘机&#xff08;ID&#xff1a;wAlsjwj&#xff09;近期在不同群里有小伙伴们提出了一些在面试和笔试中遇到的Hive SQL问题&#xff0c;Hive作为算法工程师的一项必备技能&#xff0c;在面…

007-迅雷定时重启AutoHotkey脚本-20190411

;; 定时重启迅雷.ahk,;;~ 2019年04月11日;#SingleInstance,forceSetWorkingDir,%A_ScriptDir%DetectHiddenWindows,OnSetTitleMatchMode,2#Persistent ;让脚本持久运行&#xff08;即直到用户关闭或遇到 ExitApp&#xff09;。#NoEnv;~ #NoTrayIcon Hotkey,^F10,ExitThisApp lo…

关于ExtJS在使用下拉列表框的二级联动获取数据

2019独角兽企业重金招聘Python工程师标准>>> 使用下拉列表框的二级联动获取数据&#xff0c;如果第一个下拉列表框有默认值时&#xff0c;需要设置fireEvent执行select事件 示例&#xff1a; var combo Ext.getCmp("modifyBuildCom"); combo.setValue(re…

C++中std::sort/std::stable_sort/std::partial_sort的区别及使用

某些算法会重排容器中元素的顺序&#xff0c;如std::sort。调用sort会重排输入序列中的元素&#xff0c;使之有序&#xff0c;它默认是利用元素类型的<运算符来实现排序的。也可以重载sort的默认排序&#xff0c;即通过sort的第三个参数&#xff0c;此参数是一个谓词(predic…

阿里云智能 AIoT 首席科学家丁险峰:阿里全面进军IoT这一年 | 问底中国IT技术演进...

作者 | 屠敏受访者 | 丁险峰来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;「忽如一夜春风来&#xff0c;千树万树梨花开。」从概念的流行、至科技巨头的相继入局、再到诸多应用的落地&#xff0c;IoT 的发展终于在万事俱备只欠东风的条件下真正地迎来了属于自己的…

eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析...

Guide: eBCC性能分析最佳实践&#xff08;0&#xff09; - 开启性能分析新篇章eBCC性能分析最佳实践&#xff08;1&#xff09; - 线上lstat, vfs_fstatat 开销高情景分析eBCC性能分析最佳实践&#xff08;2&#xff09; - 一个简单的eBCC分析网络函数的latency敬请期待...0. I…

spring-data-mongodb必须了解的操作

http://docs.spring.io/spring-data/data-mongo/docs/1.0.0.M5/api/org/springframework/data/mongodb/core/MongoTemplate.html 在线api文档 1关键之识别 KeywordSampleLogical resultGreaterThanfindByAgeGreaterThan(int age){"age" : {"$gt" : age}}Le…

旷视张祥雨:高效轻量级深度模型的研究和实践 | AI ProCon 2019

演讲嘉宾 | 张祥雨&#xff08;旷视研究院主任研究员、基础模型组负责人&#xff09;编辑 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;基础模型是现代视觉识别系统中一个至关重要的关注点。基础模型的优劣主要从精度、速度或功耗等角度判定&#xff0c;如何…

Python脱产8期 Day02

一 语言分类 机器语言&#xff0c;汇编语言&#xff0c;高级语言&#xff08;编译和解释&#xff09; 二 环境变量 1、配置环境变量不是必须的2、配置环境变量的目的&#xff1a;为终端提供执行环境 三Python代码执行的方式 1交互式&#xff1a;.控制台直接编写运行python代码 …

分别用Eigen和C++(OpenCV)实现图像(矩阵)转置

(1)、标量(scalar)&#xff1a;一个标量就是一个单独的数。(2)、向量(vector)&#xff1a;一个向量是一列数&#xff0c;这些数是有序排列的&#xff0c;通过次序中的索引&#xff0c;可以确定每个单独的数。(3)、矩阵(matrix)&#xff1a;矩阵是一个二维数组&#xff0c;其中的…

Linux基础优化

***************************************************************************************linux系统的优化有很多&#xff0c;我简单阐述下我经常优化的方针&#xff1a;记忆口诀&#xff1a;***********************一清、一精、一增&#xff1b;两优、四设、七其他。*****…

数据集cifar10到Caffe支持的lmdb/leveldb转换的实现

在 http://blog.csdn.net/fengbingchun/article/details/53560637 对数据集cifar10进行过介绍&#xff0c;它是一个普通的物体识别数据集。为了使用Caffe对cifar10数据集进行train&#xff0c;下面实现了将cifar10到lmdb/leveldb的转换实现&#xff1a;#include "funset.h…

计算两个时间的间隔时间是多少

/*** 计算两个时间间隔* param startTime 开始时间* param endTime 结束时间* param type 类型&#xff08;1&#xff1a;相隔小时 2&#xff1a;&#xff09;* return*/public static int compareTime(String startTime, String endTime, int type) {if (endTime nul…

作为西二旗程序员,我是这样学习的.........

作为一名合格的程序员&#xff0c;需要时刻保持对新技术的敏感度&#xff0c;并且要定期更新自己的技能储备&#xff0c;是每个技术人的日常必修课。但要做到这一点&#xff0c;知乎上的网友说最高效的办法竟然是直接跟 BAT 等一线大厂取经。讲真的&#xff0c;BAT大厂的平台是…

2月国内搜索市场:360继续上升 百度下降0.62%

IDC评述网&#xff08;idcps.com&#xff09;03月06日报道&#xff1a;根据CNZZ数据显示&#xff0c;在国内搜索引擎市场中&#xff0c;百度在2014年2月份所占的份额继续被蚕食&#xff0c;环比1月份&#xff0c;下降了0.62%&#xff0c;为60.50%。与此相反&#xff0c;360搜索…