序列特征在推荐算法中的应用

简介:行为序列特征在推荐,广告等领域中有着广泛应用,最近几年涌现了很多有关行为序列的研究论文,讲解如何将行为序列应用到实际场景中。但是论文中的实际思想距离落地还有一段距离,因此本文先介绍一些论文中的序列特征的用法,然后介绍一下在大规模分布式推荐系统框架 EasyRec 中如何将序列特征快速落地,提升实际场景效果。

作者:刘国强 - 机器学习PAI团队

序列特征简介

序列特征推荐的目的是利用历史行为序列来预测下一次行为,在现实生活中,行为的前后都存在着极强的关联性,因此,不同于传统推荐任务以静态方式对行为偏好建模,序列特征推荐建模能够捕获动态偏好。例如,某段时间内对运动用品的兴趣较高,另一段时间内则更需要书籍,因此当前偏好可以通过时间顺序的“用户-物品”隐式反馈中推断出来。序列推荐系统不仅可以通过捕捉广义兴趣来提高用户体验,还可以准确预测当前时刻的兴趣,以增强下一时刻的交互效果。

                             图1 序列特征示例图 (图片来源于论文DIN[9])

如图1所示,在电商推荐中,用户的序列特征包含了和用户发生过交互的各种商品。箭头下方包含了用户的行为序列,上方是 DIN[9] 方法中对发生交互关系的各种商品赋予的不同的权重。然后根据所有的这些特征共同得到最后用户的推荐序列。

序列特征应用方法

按序列发展来看,推荐场景下行为序列建模的模型经历了 pooling, Target Attention, RNN, Capsule, Transformer,图神经网络的发展路线。基于 pooling 模型方法的主要包含有 Youtube , 基于 Target Attention 模型方法主要包含有 DIN,DSTN, 基于 RNN 模型方法主要包含有 GRU4Rec, DIEN, DUPN, HUP, DHAN 等,基于 Capsule 模型方法主要包含有 MIND, ComiRec 等,基于 Transformer 模型方法主要包含有 ATRank, BST, DSIN, TISSA, SDM, KFAtt, DFN, SIM, DMT, AliSearch 等,基于图神经网络的方法主要有 SURGE 等。

1. Pooling 方法

1.1 Youtube

基于 Pooling 模型方法的主要工作是 Youtube[10], 这些方法通常采用 mean, sum 或者 max pooling 的方法聚合行为序列,他们将用户的行为序列看得同等重要。Youtube[10] 通过基于 pooling 的操作建模用户的搜索序列、观看视频序列,应用在 Google Youtube 的视频推荐系统的召回和排序模块中。

在召回阶段的模型如下,使用了观看视频序列、搜索序列:

由上图可以看出,最底层的输入是用户观看过的 video 的 embedding 向量,以及搜索词的embedding向量,特征向量里面还包括了用户的地理位置的 embedding,年龄,性别等。然后把所有这些特征 concatenate 起来,喂给上层的ReLU神经网络。三层神经网络过后,经过 softmax 函数得到最后输出。

在排序阶段的模型如下所示,使用了观看视频序列:

排序阶段引入另一套 DNN 作为ranking model的目的就是引入更多描述视频、用户以及二者之间关系的特征,达到对候选视频集合准确排序的目的。

2. Target Attention 方法

基于pooling的方法中,将行为序列中的每个物品的重要性看作是相同的,无法区分历史行为中每个物品的重要性。对于不同的待排序物品,用户的兴趣向量也是相同的,无法建模多兴趣。

为了解决这些问题,研究者们提出了基于Target Attention的方法建模行为序列,主要包括 DIN [9], DSTN [11]等。它们通过attention机制建模行为序列中的物品和待排序物品的attention score (即关联程度),作为每个行为的权重,然后再将它们聚合起来。

2.1 DIN

DIN (Deep Interest Network for Click-Through Rate Prediction)[9] 基于 Target attention 建模用户的商品点击行为序列。注意力机制顾名思义,就是模型在预测的时候,对用户不同行为的注意力是不一样的,“相关”的行为历史看重一些,“不相关”的历史甚至可以忽略。那么这样的思想反应到模型中也是直观的。

上式中, 是用户的 embedding 向量,  是候选广告商品的embedding向量, 是用户 u 的第 i 次行为的embedding向量,因为这里用户的行为就是浏览商品或店铺,所以行为的embedding的向量就是那次浏览的商品或店铺的embedding向量。

因为加入了注意力机制, 从过去    的加和变成了 的加权和, 的权重 就由 与 的关系决定,也就是上式中的 。

基于 pooling 的 base 模型如下图所示:

改进后的 DIN 模型如下图所示:

DIN模型对于每个待排序的广告,计算出每个历史点击的商品和待排序广告的attention score, 作为这个历史行为的权重,然后基于这些权重,将历史行为序列物品的embedding,聚合成一个用户兴趣向量。对于不同的待排序广告,attention scores的分布也不相同,对应的用户的兴趣向量也不相同,从而建模用户的多个兴趣。

传统的Attention机制中,给定两个 item embedding,比如 u 和 v ,通常是直接做点积 uv 或者 uWv ,其中 W是一个 |u|x|v| 的权重矩阵,但 din 更进一步的改进,在上图右上角的activation unit 中,首先是把u和v以及u v的element wise差值向量合并起来作为输入,然后喂给全连接层,最后得出权重,这样的方法显然损失的信息更少。

2.2 DSTN

DSTN[11] 基于 Target attention 建模用户历史点击广告序列、未点击广告序列、附近的广告序列等信息,应用到神马搜索广告中。

在传统方法当我们要预估对一个广告的点击概率时,只考虑该广告的信息,而忽略了其他广告可能带来的影响。如用户历史点击或者曝光未点击的广告、当前上下文已经推荐过的广告等。因此,将这些广告作为辅助信息,加入到模型中,也许可以提升CTR预估的准确性。

多种行为序列的定义如下图所示:在用户发起搜索后,展示多个广告后用户会有点击、未点击的行为,以及附近的广告信息。

之前的模型可能一次计算所有广告的点击率,然后按点击率进行排序,取top-K进行展示。但 DSTN 中把一次推荐K个广告过程看作K个单次推荐的过程集合。先推荐第一个位置的广告,再推荐第二个位置的广告,,依次类推。在推荐第三个广告时,推荐的第一个广告和第二个广告便是这里所说的上下文广告。

为了将这些信息加入到模型中,必须要注意以下几点:

1)每种类型的辅助广告数量可能相差很多,模型必须适应这些所有可能的情况。

2)辅助的广告信息可能与目标广告是不相关的,因此,模型需要具备提取有效信息,而过滤无用信息的能力。举例来说,用户点击过的广告可能有咖啡广告、服装广告和汽车广告,当目标广告是咖啡相关的广告时,过往点击中咖啡相关的广告可能是起比较大作用的信息。

3)不同类型的辅助广告信息,有时候起到的作用可能是不同的,模型需要能够有能力对此进行判别。

总的来说,就是模型需要有能力有效处理和融合各方面的信息。

本文提出了DSTN(Deep Spatio-Temporal neural Networks)模型来处理和融合各种辅助广告信息。

DSTN 的模型如下图所示:

其主要包含三个子模型,DNN 模型用来处理目标广告,Pooling 模型用来处理辅助广告,Interactive attention模型用来处理辅助广告和额外广告之间的交互关系。

3.RNN 方法

基于pooling和attention的方法,不能建模行为序列的时间顺序特性,无法有效建模用户兴趣的不断演化。

为了解决这些问题,研究者们提出了基于RNN建模行为序列,主要包括 DIEN[12], DUPN [13], HUP [14], DHAN [15]等。它们通过RNN建模行为序列的时间顺序特性,能更好地建模用户实时兴趣的变化。

3.1 DIEN

DIEN [12] 基于双层RNN来建模用户的商品点击序列,应用在电商APP推荐广告排序中。同时,在模型提出了基于RNN中的隐藏向量和下一个商品计算辅助loss。第一层RNN,直接用来建模用户的商品点击序列;第二层RNN,基于第一层RNN的结果、待排序广告计算attention,用于RNN的更新。

3.2 DUPN

DUPN[13] 基于RNN建模用户的行为序列,再基于attention计算每个行为的权重,得到用户的兴趣向量表示,应用到电商APP搜索中。其整体框架如下图所示:

在本论文中,作者在 RNN 和 Attention 中都考虑了行为的属性信息 (场景、时间、行为类型等),如下图所示:

而且作者还利用多任务学习来学习模型参数:

4. Capsule方法

在召回阶段,基于pooling, attention, RNN等序列模型建模行为序列得到一个用户兴趣向量,然后通过Faiss查找最近的邻居商品,通常召回的商品都很相似,无法满足搜索推荐多样性的需求。

为了解决这些问题,研究者们提出了基于 Capsule 建模行为序列,主要包括 MIND [14], ComiRec [15] 等。它们通过Capsule建模行为序列,通过隐式聚类行为序列,得到多个用户兴趣向量,从而实现召回多个类目的物品的目的。

4.1 MIND

MIND [14] 基于Capsule建模用户的行为序列向量,应用在天猫推荐的召回模块中, 其整体框架如下图所示:

MIND 中的用户特征由历史交互 item 和基础画像属性组成,用户历史交互 item 由 item ID,item 所属类目ID和Item所属品牌ID三部分组成,这三部分进行低维 embedding 之后做 average pooling,合成 item 本身的embedding表示。用户交互过的 items 生成的一组向量(即item embedding)作为 Multi-Interest Extractor Layer的输入,经过 dynamic routing 之后,产生另外一组向量(即兴趣embedding),作为用户多样化兴趣的表示。用户基础画像属性的embedding与用户兴趣embedding分别做concat,接着经过两层ReLU隐层,得到用户的一组embedding。

在训练阶段,要进行预测的 label 只有一个 embedding,而用户有一组,没法直接求内积计算匹配度,这里MIND提出了Label-aware Attention,思路跟DIN是一致的,就是根据label的embedding对用户的一组embedding分别求出权重(所谓label-aware),然后对用户的一组embedding求加权和,得到最终的一个embedding。图中右上角是Label-aware Attention的图示,K,V都是用户embedding(矩阵),Q是label embedding(向量),K、Q相乘可以得到不同的用户embedding对label的响应程度,Power对求得的响应做指数运算(可以控制指数的大小),从而控制attention的程度,指数越大,响应高的用户embedding最终权重占比越大。Softmax 对结果进行归一化,最后一步的 MatMul 求得加权和。

MIND 借鉴了Hiton的胶囊网络(Capsule Network),提出了Multi-Interest Extractor Layer来对用户历史行为embedding进行软聚类,算法如下:

4.2 ComiRec

ComiRec [15] 提出基于Capsule或Self-attention来建模行为序列,得到用户的多个兴趣向量,并使用一个可控的多兴趣召回结果聚合模块来平衡召回结果的准确性、多样性,应用到电商APP推荐召回模块中。

5. Transformer 方法

基于RNN的序列建模模型,无法有效建模长序列、长依赖,以及行为序列内多个行为彼此间的关联关系。

为了解决这些问题,研究者们提出了基于Transformer建模行为序列,主要包括 ATRank [17], BST [4], DSIN [18], TISSA [19], SDM [20], KFAtt [21], DFN [22], SIM [23], DMT [24], AliSearch [17] 等。通过Transformer建模行为序列,逐步成为工业界搜索推荐行为序列建模的主流。

首先介绍一下 Transformer 方法,Transformer 模型的整体架构如下图所示:

这里面Multi-head Attention其实就是多个Self-Attention结构的结合,每个head学习到在不同表示空间中的特征,如下图所示,两个head学习到的Attention侧重点可能略有不同,这样给了模型更大的容量。

Self-Attention 的具体结构如下:

对于self-attention来讲,Q(Query), K(Key), V(Value) 三个矩阵均来自同一输入,首先我们要计算Q与K之间的点乘,然后为了防止其结果过大,会除以一个尺度标度   ,其中 为一个 query 和 key向量的维度。再利用Softmax操作将其结果归一化为概率分布,然后再乘以矩阵V就得到权重求和的表示。该操作可以表示为 

看一个将 Transformer 应用到翻译中的例子。“I arrived at the bank after crossing the river” 这里面的bank指的是银行还是河岸呢,这就需要我们联系上下文,当我们看到river之后就应该知道这里bank很大概率指的是河岸。在RNN中我们就需要一步步的顺序处理从bank到river的所有词语,而当它们相距较远时RNN的效果常常较差,且由于其顺序性处理效率也较低。Self-Attention则利用了Attention机制,计算每个单词与其他所有单词之间的关联,在这句话里,当翻译bank一词时,river一词就有较高的Attention score。利用这些Attention score就可以得到一个加权的表示,然后再放到一个前馈神经网络中得到新的表示,这一表示很好的考虑到上下文的信息。如下图所示,encoder读入输入数据,利用层层叠加的Self-Attention机制对每一个词得到新的考虑了上下文信息的表征。Decoder也利用类似的Self-Attention机制,但它不仅仅看之前产生的输出的文字,而且还要attend encoder的输出。

5.1 BST

BST[4] 基于Transformer建模行为序列,用于电商APP推荐。 BST 的模型结构主要是由 Embedding 层,Transformer 层与 MLP 层组成,如下图所示:

Embedding 层主要分为 Other Features, User Behavior Sequence, Target Item, Other Features 主要包括用户的基本特征、目标物品的基本特征、上下文信息、交叉特征等,先将每个大的种类特征内的所有内容进行拼接,再分别进行embedding映射为一个低维向量,最后得到一个embedding矩阵。User Behavior Sequence:由于表示一个序列特征,且不使用RNN神经网络,因此需要一个 Positional Feature 表示相对位置,Sequence Item Features表示历史物品信息。

自注意力机制层使用 self-attention[5] 论文中的多头自注意力机制。

MLP 层使用全连接神经网络。

BST 比较直接的将 Transformer 模型应用到推荐系统中,通过引入 Transformer Layer 来很好的利用了用户历史行为序列信息,最终在 Taobao 的数据集上取得了很好的效果。

5.2 AliSearch

AliSearch [16]使用Transformer分别建模用户的近期序列(点击,加购,购买的混合序列)、长期点击序列、长期购买序列、近期端上点击序列、近期端上曝光序列,用于电商APP搜索的CTR,CVR预测任务。其模型结构如下图所示:

AliSearch 模型结构大致所图所示,用户画像、多个行为序列特征、待打分的商品特征和一些其他的实时上下文特征(天气、网络、时间等特征),最终concat之后,进入DNN的分类器。行为序列建模是模型中最重要的部分之一,对于实时刻画用户兴趣尤其重要。在这里采用self atten和atten pooling的方式来做序列建模,self atten刻画行为之间的相互关系,atten pooling对行为进行匹配激活并实现combine。这是一个通用化的序列建模组件。

对于近期序列和端上点击序列,使用self-attention建模,然后使用user和query来解码得到用户近期兴趣向量。 DMT中是推荐系统所以使用target item来解码,AliSearch是搜索任务,所以使用user和query来解码(搜索对相关性要求高、不需要使用每个待排序商品解码效率更高)。

对于长期行为序列,作者将过去两年的行为分成8个季度序列。每个季度序列,使用self-atention建模,得到每个季度的兴趣表达。然后使用近期兴趣向量来解码多个长期行为序列,得到长期兴趣向量。

对于端上曝光未点击行为,使用pooling来建模。然后使用近期兴趣向量和曝光未点击兴趣向量,计算辅助loss。

6. 图神经网络方法

6.1 SURGE

在 SIGIR2021 中,Chang 等人将图卷积应用在序列特征建模中,提出 SURGE (SeqUential Recomendation with Graph neural nEtworks) 模型[3]。该模型主要分为四大部分,包括兴趣图构建,兴趣融合图卷积,兴趣图池化,和预测层。模型的框架如下图所示:

兴趣图构建的主要目的是将用户的交互序列转变为一个兴趣图,而用户的核心兴趣就会体现在项目节点间的相关性上,而预测下一个点击项的任何就转换为通过用户的核心兴趣来判断交互发生的可能性。

兴趣融合卷积的目的是通过GNN的思想,利用上个阶段A得到的兴趣图 ,通过图卷积操作实现相关项目节点间的信息流通(即局部范围内有差别的邻居聚合)来形成多个代表用户不同兴趣的簇集群,这一过程类似于图表示学习任务常见的节点分类。而为了减轻聚合过程中产生的噪声,作者提出两种注意力,包括簇意识注意力和搜索意识注意力。

兴趣图池化有点类似于卷积神经网络中的池化操作,通过学习一个集群指定矩阵,再通过矩阵相乘的到不同的兴趣集群表示,然后利用图中每个节点的重要性分数,得到全局图表示。

预测层对于上一阶段得到的兴趣图进行位置平整的到精简版的兴趣序列,利用 AUGRU(GRU with attentional update gate) 输出用户层的表示,最后将用户表示,兴趣图表示以及下一个需要预测的项目表示进行级联(concat) 后接 MLP 层,得到最后 CTR 预估的结果。

在 EasyRec 中将序列特征快速落地

接下来以 DIN 模型为例介绍将序列特征快速落地。

EasyRec 介绍

EasyRec[1] 是阿里云计算平台机器学习PAI团队开源的大规模分布式推荐算法框架,github 地址为:https://github.com/alibaba/EasyRec 。EasyRec 正如其名字一样,简单易用,集成了诸多优秀前沿的推荐系统论文思想,并且有在实际工业落地中取得优良效果的特征工程方法,集成训练、评估、部署,与阿里云产品无缝衔接,可以借助 EasyRec 在短时间内搭建起一套前沿的推荐系统。

EasyRec 环境配置及运行

使用 EasyRec 可以见 EasyRec 文档[2], 快速运行 EasyRec 可以见教程:Local Tutorial — easy_rec 0.3.1 documentation 。首先数据必不可少,可以先参考 EasyRec 中自带的数据集配置,规范格式。其次需要配置文件,对于自有数据集,配置文件可以参考数据 — easy_rec 0.3.1 documentation , 对于想先简单尝试 EasyRec 来说,可以直接使用 EasyRec 中自带的配置文件,见 samples/model_config 文件夹。

序列特征数据前期准备

序列特征,是多个特征的集合,组成序列。构建序列特征一般分为两步,第一步是构建原始序列特征。以实际工作为例,原始序列特征一般用 ":" 来分隔特征名和值,用 "#" 来分隔多个特征,用 ";" 来分隔多个序列。

第二阶段是预处理。预处理的目的是要处理成 EasyRec 可以接受的处理方式,预处理后每个单独的序列特征要放在一起。如对于 item__svid 特征,就要把序列中的所有的 item__svid 特征都要挑出来,放在一起,可以用 "|" 分隔,在 EasyRec 中配置好后就可以进行训练。此处还要注意要保证离线在线一致性。

在 Easyrec 中使用序列特征

序列特征在 EasyRec 中有专门的示例 config ,可以查看位于 samples/model_config/din_on_taobao.config 的配置文件,在配置文件中序列特征可用如下表示:

feature_configs : {

  input_names: 'tag_brand_list'

  feature_type: SequenceFeature

  separator: '|'

  hash_bucket_size: 100000

  embedding_dim: 16

}

feature_configs : {

  input_names: 'tag_category_list'

  feature_type: SequenceFeature

  separator: '|'

  hash_bucket_size: 100000

  embedding_dim: 16

}

其对应的两个特征的原始输入形式为:

4281|4281|4281|4281|4281|4281|4281|4281|4281|4281|4281|4281|4281|4281|4526|4526,283837|283837|283837|283837|283837|283837|283837|283837|283837|283837|283837|283837|283837|283837|367594|367594

这个配置文件使用了 DIN 模型,具体细节可以参考对应的论文[6]。 离线训练完成后,可以再参考文档[8]进行导出操作,部署到线上,快速应用到推荐场景中。

参考文献

[1] EasyRec : https://github.com/alibaba/EasyRec

[2] EasyRec 文档:Welcome to easy_rec’s documentation! — easy_rec 0.3.1 documentation

[3] Chang J, Gao C, Zheng Y, et al. Sequential Recommendation with Graph Neural Networks[C]//Proceedings of the 44th International ACM SIGIR Conference on Research and Development in Information Retrieval. 2021: 378-387.

[4] Chen Q, Zhao H, Li W, et al. Behavior sequence transformer for e-commerce recommendation in alibaba[C]//Proceedings of the 1st International Workshop on Deep Learning Practice for High-Dimensional Sparse Data. 2019: 1-4.

[5] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.

[6] Yu Z, Lian J, Mahmoody A, et al. Adaptive User Modeling with Long and Short-Term Preferences for Personalized Recommendation[C]//IJCAI. 2019: 4213-4219.

[7] Koren Y. Factorization meets the neighborhood: a multifaceted collaborative filtering model[C]//Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. 2008: 426-434.

[8] EasyRec 导出文档:导出 — easy_rec 0.3.1 documentation

[9] Zhou G, Zhu X, Song C, et al. Deep interest network for click-through rate prediction[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1059-1068.

[10] Covington, Paul, Jay Adams, and Emre Sargin. "Deep neural networks for youtube recommendations." Recsys'16

[11] Ouyang, Wentao, Xiuwu Zhang, Li Li, Heng Zou, Xin Xing, Zhaojie Liu, and Yanlong Du. "Deep spatio-temporal neural networks for click-through rate prediction." KDD'19.

[12] Zhou, Guorui, Na Mou, Ying Fan, Qi Pi, Weijie Bian, Chang Zhou, Xiaoqiang Zhu, and Kun Gai. "Deep interest evolution network for click-through rate prediction." AAAI'19.

[13] Ni, Yabo, Dan Ou, Shichen Liu, Xiang Li, Wenwu Ou, Anxiang Zeng, and Luo Si. "Perceive your users in depth: Learning universal user representations from multiple e-commerce tasks." KDD'18.

[14] Li, Chao, Zhiyuan Liu, Mengmeng Wu, Yuchi Xu, Huan Zhao, Pipei Huang, Guoliang Kang, Qiwei Chen, Wei Li, and Dik Lun Lee. "Multi-interest network with dynamic routing for recommendation at Tmall." CIKM'19.

[15] Cen, Yukuo, Jianwei Zhang, Xu Zou, Chang Zhou, Hongxia Yang, and Jie Tang. "Controllable Multi-Interest Framework for Recommendation." KDD'20.

[16] [AliSearch]: 搜索模型核心技术公开,淘宝如何做用户建模?

[17] Zhou, Chang, Jinze Bai, Junshuai Song, Xiaofei Liu, Zhengchao Zhao, Xiusi Chen, and Jun Gao. "Atrank: An attention-based user behavior modeling framework for recommendation." AAAI'18.

[18] Feng, Yufei, Fuyu Lv, Weichen Shen, Menghan Wang, Fei Sun, Yu Zhu, and Keping Yang. "Deep session interest network for click-through rate prediction." IJCAI'19.

[19] Lei, Chenyi, Shouling Ji, and Zhao Li. "Tissa: A time slice self-attention approach for modeling sequential user behaviors." WWW'19.

[20] Lv, Fuyu, Taiwei Jin, Changlong Yu, Fei Sun, Quan Lin, Keping Yang, and Wilfred Ng. "SDM: Sequential deep matching model for online large-scale recommender system." CIKM'19.

[21] Liu, Hu, Jing Lu, Xiwei Zhao, Sulong Xu, Hao Peng, Yutong Liu, Zehua Zhang et al. "Kalman Filtering Attention for User Behavior Modeling in CTR Prediction." NIPS'20.

[22] Xie, Ruobing, Cheng Ling, Yalong Wang, Rui Wang, Feng Xia, and Leyu Lin. "Deep Feedback Network for Recommendation." IJCAI'20.

[23] Pi, Qi, Guorui Zhou, Yujing Zhang, Zhe Wang, Lejian Ren, Ying Fan, Xiaoqiang Zhu, and Kun Gai. "Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Through Rate Prediction." CIKM'20.

[24] Gu, Yulong, Zhuoye Ding, Shuaiqiang Wang, Lixin Zou, Yiding Liu, and Dawei Yin. "Deep Multifaceted Transformers for Multi-objective Ranking in Large-Scale E-commerce Recommender Systems." CIKM'20.

原文链接

本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

BlackBerry 软件全球现已部署超过2.15亿辆汽车

BlackBerry近日宣布,据知名独立调研公司Strategy Analytics统计,目前全球已有超过2.15亿辆汽车搭载BlackBerry QNX软件,较2021年增加了2,000万辆。 作为获得安全认证的嵌入式汽车软件市场领导者,BlackBerry深受众多业内汽车制造商…

从托管到原生,MPP架构数据仓库的云原生实践

简介:本文介绍了云原生数据仓库产品AnalyticDB PostgreSQL从Cloud-Hosted到Cloud-Native的演进探索,探讨为了实现真正的资源池化和灵活售卖的底层设计和思考,涵盖内容包括产品的架构设计,关键技术,性能结果&#xff0c…

做到这4点,才是真正的持续交付| 研发效能提升36计

简介:全线专栏《研发效能提升36计_持续交付篇》上线啦!本专栏将通过10-20篇文章,系统分享云原生时代,企业如何落地持续交付。本文是该专栏的第2篇。 什么是真正的持续交付? 编者按:全线专栏《研发效能提升…

oracle打patch,Oracle初学者入门指南-How to get Oracle Patch?

Oracle初学者入门指南-How to get Oracle Patch?怎样获得/找到Oracle的Patch,这是一个朋友在Itpub上问到的问题。他还举了一个生动的例子:比如我要使用oracle的全文检索功能,但是这个全文检索在9201里不支持中文,中文的无法检索,…

e签宝:借助钉钉宜搭变革传统项目管理模式,交付效率显著提升

简介:通过钉钉宜搭,e签宝在半个月内搭建了项目交付管理平台,提升了项目管理的效率和质量,推进了团队核心业务的信息化建设。e签宝在有效梳理了各环节的工作进度、质量、成本、职权后,通过宜搭平台保障了内外通畅&#…

24 张图一次性说清楚 TCP

来源 | 杰哥的IT之旅做IT相关的工作,肯定都离不开网络,网络中最重要的协议是TCP。无论是实际工作还是笔试面试,你看哪里能少得了TCP?我看过RFC中与TCP相关的文档,也看过linux中TCP相关的源码,也看过不少框架中的TCP相…

php 实例化模型出错,实例化model出错了

我是按照老师所说的做的。在function user 中写入了这些<?php namespace Home\Controller;use Think\Controller;class IndexController extends Controller {public function index(){//省略了}public function user(){//其实新版的url应该这么写&#xff1a;http://www.t…

作业帮基于 DeltaLake 的数据湖建设实践

简介&#xff1a;作业帮是一家以科技为载体的在线教育公司&#xff0c;其大数据中台作为基础系统中台&#xff0c;主要负责建设公司级数仓&#xff0c;向各个产品线提供面向业务主题的数据信息。本文主要分享了作业帮基于 DeltaLake 的数据湖建设最佳实践。 作者&#xff1a; 刘…

iLogtail 与Filebeat 性能对比

简介&#xff1a;前段时间, iLogtail 阿里千万实例可观测采集器开源&#xff0c;其中介绍了iLogtail采集性能可以达到单核100MB/s&#xff0c;相比开源采集Agent有5-10倍性能优势。很多小伙伴好奇iLogtail具体的性能数据和资源消耗如何&#xff0c;本文将针对目前业界使用度较高…

如何快速开发 Serverless Devs Package ?

简介&#xff1a;目前&#xff0c;开发者开发 Serverless Package 的流程相对来说是比较简单的。因为在 Serverless Devs 开发者工具中&#xff0c;已经提供了相对完整的脚手架能力&#xff0c;一文了解详情~ 作者 | 江昱&#xff08;阿里云 Serverless 产品经理&#xff09; …

首发苹果 M2!MacBook Pro 正式开售,更像是一个增强版的 A15?

作者 | Ryan Smith 译者 | 弯月出品 | CSDN虽然一年一度的WWDC主要是一个软件发布会&#xff0c;但也总是时不时地给出一些硬件惊喜&#xff0c;今年也不例外。在WWDC22上&#xff0c;苹果公布了用于Mac&#xff08;和iPad&#xff09;平台的第二代苹果系统芯片——M2。这个…

专题实战 | 如何快速构建高质量电商行业搜索?

简介&#xff1a;本文详细介绍如何快速接入智能开放搜索&#xff08;OpenSearch&#xff09;电商行业增强版&#xff0c;助力企业实现高质量搜索效果&#xff0c;提升业务转化率及用户产品体验&#xff01; 电商搜索特点 1. 关键词堆砌 例如&#xff1a;明星同款夏季连衣裙包…

Linux 网络性能的 15 个优化建议!

作者 | 张彦飞allen来源 | 开发内功修炼那么具备了对网络的深刻的理解之后&#xff0c;我们在性能方面有哪些优化手段可用呢&#xff1f;我这里给出一些开发或者运维中的性能优化建议。这些建议都是从书中摘录的。不过要注意的是&#xff0c;每一种性能优化方法都有它适用或者不…

Flink Sort-Shuffle 实现简介

简介&#xff1a;Sort-Shuffle 使 Flink 在应对大规模批数据处理任务时更加游刃有余 本文介绍 Sort-Shuffle 如何帮助 Flink 在应对大规模批数据处理任务时更加游刃有余。主要内容包括&#xff1a; 数据 Shuffle 简介引入 Sort-Shuffle 的意义Flink Sort-Shuffle 实现测试结果调…

「现代C++设计魅力」虚函数继承-thunk技术初探

简介&#xff1a;工作中使用LLDB调试器调试这一段C多继承程序的时候&#xff0c;发现通过lldb print(expression命令的别名) 命令获取的指针地址和实际理解的C的内存模型的地址不一样。那么到底是什么原因呢&#xff1f; 作者 | 扬阜 来源 | 阿里技术公众号 一 问题背景 1 实…

万物互联时代到来,锐捷发布场景化无线零漫游方案

数字化和万物互联时代到来&#xff0c;物联网与 IoT 设备发展迅猛&#xff0c;以往只在办公区域主要由手机等移动设备使用的无线网络&#xff0c;正在接入更多核心业务生产、物流仓储等各类的生产设备。据分析机构 IDC 预测&#xff0c;无线网络优先是当下智能园区网络建设投资…

阿里云田涛涛:高效智能的云,CloudOps让运维更简单

简介&#xff1a;CloudOps:以应用为中心的自动化运维新趋势 12月21日&#xff0c;在阿里云弹性计算年度峰会上&#xff0c;阿里云弹性计算体验与控制系统负责人田涛涛发表了主题为《高效智能的云&#xff0c;CloudOps让运维更简单》的演讲&#xff0c;深度解读了云上运维新趋势…

打造南沙“强芯”,南沙首届IC Nansha大会召开

6月25日&#xff0c;2022 中国南沙国际集成电路产业论坛在广州南沙召开。本次峰会由广州南沙经济技术开发区管理委员会、广州市工业和信息化局主办&#xff1b;支持单位为广州湾区半导体产业集团有限公司、广东省集成电路行业协会、广州市半导体协会&#xff1b;广东省半导体及…

OpenAI开发者大会简介

文章目录 GPT-4 Turbo 昨天晚上 OpenAI的首届开发者大会召开 Sam Altman也做了公开演讲&#xff0c;应该说 这是继今年春天发布GPT-4之后 OpenAI在AI行业又创造的一个不眠夜 过去一年 ChatGPT绝对是整个科技领域最热的词汇 OpenAI 也依靠ChatGPT取得了惊人的成绩 ChatG…

阿里云贾少天:大规模云服务器高效使用及管理实践

简介&#xff1a;本篇内容分享了大规模云服务器高效使用及管理最佳实践。 2021年10月22日&#xff0c;在云栖大会的《云上运维最佳实践》分论坛&#xff0c;阿里云高级技术专家贾少天发表了主题为“大规模云服务器高效使用及管理最佳实践”的演讲&#xff0c;本篇内容根据他的…