机器如何“猜你喜欢”?深度学习模型在1688的应用实践

发布时间:2019-02-20 VIEWUI 前端 SWIFT 人工智能

小叽导语:本文主要介绍了Wide&Deep、PNN、DeepFM三个模型以及1688CBU事业部的顾海倩同学提出的Wide&Resnet模型结构,并尝试在1688猜你喜欢的真实数据场景中进行应用。文内有一些实验结果,也提出了一些遇到的问题,希望能与大家一起分享讨论。

一、背景
_
猜你喜欢是推荐领域极其经典的一个场景,在1688首页无线端猜你喜欢栏目日曝光约23w,其中约72%的用户会产生点击行为,人均点击约8次。在我们的场景中,这部分是一个相对较大的流量来源。我们算法要做的就是通过用户的真实行为数据,预测用户最可能感兴趣的商品进行展示,以提高点击率,从而提高购买量。

不同于搜索,这种用户带有明确目的的行为,猜你喜欢是在用户没有明确目的时让用户“逛起来”,挖掘用户的潜在喜好商品,增强用户体验。
_
整个猜你喜欢的框架如图。用户产生的实时数据放在ABFS上,通过TPP传入BE,在BE中通过swing、c2i等算法召回1000个商品(粗排),再把这1000个商品通过TPP传入RTP中在线打分,最后把分数最高的600个商品按得分展现给用户(精排)。离线在Porsche平台上调试模型,调到最优结果再发布到RTP看线上效果。

ABFS (Ali Basic Feature Server),统一特征服务平台:该模块主要负责用户实时数据的处理以及特征的统计工作,如基础行为特征(点击、收藏、加购等),统计特征(点击次数、点击率等),并传递到TPP供BE系统调用;

TPP(The Personalization Platform),阿里个性化平台:集成RTP、IGraph、BE等常用服务,方便数据的流动调用,降低开发成本,帮助业务和算法快速上线迭代;

BE(Basic Engine),向量化召回:是DII上的一个为推荐场景定制的召回引擎服务,负责从多种类型的索引表中召回商品,并关联具体的商品信息进行过滤和粗排。线上召回效率极高,可以在几毫秒内对全库商品召回结果;

iGraph平台:超大规模分布式在线图存储和检索。在我们的流程中主要用来储存一些用户特征,用户偏好类目和热门商品召回等。因为这些信息不需要频繁更新,存到iGraph上方便存取和调用;

RTP(Real Time Prediction),实时打分服务系统:利用Swift增量传输模型,使用实时BUILD索引技术来实现特征和模型的秒级更新,RTP系统在收到TPP推荐系统的前端请求后,进行FG的实时特征产出,并对请求的item list中每个item计算出一个分值,是CTR、CVR各种机器学习模型预估的专用服务器;

Porsche在线学习平台: Porsche是基于Blink的分布式流式计算框架,提供了日志处理、特征计算和实时建模的插件接口。实时更新的模型和特征通过swift秒级别同步RTP等服务端。从用户发生交互行为、行为样本被实时系统接收和解析、加入在线训练、将更新的模型参数发送给服务端到最终新的推荐结果被用户感知,这个过程高度实时化、在线化。

二、模型简介

  1. 搭积木
    _

深度学习模型很大程度上来自不同基础模块的组合,通过不同方式组合不同模块,构建不同的模型。最经典的就是Google的Wide&Deep模型,结合深度模块DNN和线性模块LR,让模型同时拥有记忆性和泛化性。

在WDL之后,学术界和工业界在此结构上有很多其他的尝试。下面分析几个我试过的网络。

  1. Wide&Deep
    _

这是Google提出的非常经典的网络结构,论文见《Wide & Deep Learning for Recommender Systems》。离散特征经过Embedding和连续特征一起输入到DNN侧,Wide侧是一些人工交叉(如用笛卡尔积)特征,主要交叉的是id类特征,来学习特征间的共现。主要公式如下:
_
Wide侧LR模型的记忆性很强,比如用户买了一本科幻书,下一次再出现这样的组合,模型就会记住判断正确。但若此时来了一本科学书,LR模型不一定能分对,所以需要Deep侧DNN模型的补充。

Deep侧DNN模型通过Embedding层挖掘特征间的语义相关性,比如上个例子中,通过Embedding模型可以学到“科学”和“科幻”是相似的,从而也能推出用户也可能喜欢科学书。这样,通过DNN和LR模型的结合,Wide&Deep模型有很好的记忆性和泛化性。这也是我们目前猜你喜欢线上在用的模型。

3. PNN

PNN的思想来自于对MLP学习的交叉特征的补充,论文见《Product-based Neural Networks for User Response Prediction》。作者认为MLP不能很好地学出特征间的交叉关系,所以提出了一种product layer的思想,也就是基于乘法的运算强行显式地进行二阶特征交叉,结构如下图:

_
从结构图可以看出,product layer可以分成z和p两部分。线性部分z直接从Embedding结果得到,非线性部分也就是乘积部分,这里的乘积有两种选择,内积或者外积。
_
但这种结构的受限之处在于,它要求输入特征Embedding到相等的维度,因为维度相同才能做乘积运算。

4.DeepFM

DeepFM由华为诺亚方舟实验室和哈工大共同提出,论文见《DeepFM:A Factorization-Machine based Neural Network for CTR Prediction》。它的结构很像Wide&Deep与PNN的结合,它是把Wide&Deep中Wide侧的LR换成了乘积结构FM,通过FM和DNN分别提取低阶和高阶特征。而且这两部分共享Embedding输入。结构如下图:
_
FM部分是一个因子分解机。关于因子分解机可以参阅Steffen Rendle 在ICDM, 2010发表的文章《Factorization Machines》。因为引入了隐变量的原因,对于几乎不出现或者很少出现的隐变量,FM也可以很好的学习。FM的公式如下:

_

而且在FM的文章中,作者还给出了求解交叉项的化简公式:
_
跟PNN一样,因为FM强制特征间二阶交叉,所以需要把特征Embedding到相等长度的维度,且DeepFM结构两边的输入是共享的,不需要像Wide&Deep一样人工给LR模型构造交叉特征,节省了人力。但在集团实际应用中,不同特征的维度相差很大,比如性别只有3维(男、女、未知),而id类特征多达上亿维,不可能都Embedding到相同的长度。这里可以参考淘宝搜索团队的做法,通过Group product的方式分组Embedding:双11实战之大规模深度学习模型。他们在双十一中也取得了不错的效果。

5.Wide&Resnet

这个结构是我自己在工作中的尝试。想法来源于对Wide&Deep模型的改进,把原来Wide&Deep结构中DNN部分改成了一个类似Resnet那样skip connection的结构,也就是信号分成两路,一路还是经过两个relu层,另一路直接接到第二层relu,形成类似残差网络的结构。这样做的好处是,可以把不同层级的特征进行组合,丰富特征的信息量。两个模型的对比图如下:
_
此外,我还发现单纯从DNN改到Resnet的结构并没有多少作用,但是在Resnet中加入batch normalization,即BN层后,网络的表达能力得到了很大的提高。可以从离线CTR实验的准确率中得以提现。离线效果见第四部分。

_
三、训练数据

训练数据来自目标日前七天内用户在1688首页猜你喜欢模块行为数据,曝光点击label为1,曝光未点击则label为0。

1688猜你喜欢使用的数据特征体系如下:
_
图中滑窗期指目标前1/3/5/7/15/30天的行为窗口。

1688平台与淘宝等传统的B2C平台不同,1688是一个B2B的平台,意味着我们的买家和卖家都是B类用户。B类用户与C类用户在特征上有明显的不同,比如:

B类用户特征会有是否是淘宝卖家;

相比于C类,B类用户没有年龄、性别、社会状态(是否有孩子、车子、房子)等人口统计学特征;

对于1688的商品也没有品牌特征,因为我们主打的是非品牌类的批发市场。

四、实验结果

在Porsche平台上做离线实验,可以看到带BN层的Wide&Resnet的模型比baseline的Wide&Deep模型在训练集和测试集上的AUC基本都要高1个多百分点。经过三次增量,即每批数据从上一次训练的模型基础上进一步迭代训练,AUC能提高5%~6%。

_
从loss曲线中更能明显看出,加了BN后的模型,loss基本在0.3之下,稳定在一个较小水平;而原来Wide&Deep模型的loss波动范围较大。所以BN对模型的稳定性起到了很明显的效果。

_

五、调参经验

分享一些其他的调参经验:
_
六、总结

本文在Wide&Deep模型上进行改进,提出Wide&Resnet结构,并通过Batch Normalization的方式大幅提升网络效果,是一次有意义的探索。

原文发布时间为:2018-08-28
本文作者:顾海倩
本文来自云栖社区合作伙伴“ 阿里技术”,了解相关信息可以关注“ 阿里技术”。

更多相关推荐


自己玩,别介意

发布时间:2022-11-03 VUE.JS JAVASCRIPT 前端
<template> ceshi</template><scriptsetuplang='ts'>import{ref,reactive,defineComponent}from'vue'interfaceData{listArr:any[]} letlistArr=reactive([      {id:1,title:'num1',parentId:0}, ...

10-[案例2]个人简历

发布时间:2022-10-08 前端基础(HTML,CSS) 前端 CSS
此案例中,需要注意图片置入表格时会出现图片自身撑开的间距,导致无法居中,此时将图片转换为块状元素即可解决,也可以为图片设置垂直对齐属性。详见:07-[案例3]图片的默认bug。合并单元格时,需要区分进行的是行合并还是列合并,选择正确的属性。table{border:3pxsolid#c2cfe0;width:600px;height:700px;margin:0auto;border-spacin...

10-[案例1]多种表格的样式实现

发布时间:2022-10-08 前端基础(HTML,CSS) 前端 HTML CSS
通用样式表table{width:300px;height:100px;border:1pxsolid#000;margin-bottom:50px;}td{border:1pxsolid#000;}单元格之间无边距,且单元格边框合并。.table1{border-spacing:0;border-collapse:collapse;}表格外边框加粗,单元格边框合并。.table2{border-...

axios的Token无感刷新

发布时间:2022-10-26 前端
//响应拦截器axios.interceptors.response.use((res)=>{//处理后端返回的数据格式,将res返回给前面returnres},asyncerror=>{if(error&&error.response&&error.response.status){switch(error.response.status){case4...

Vue代理配置

发布时间:2022-11-04 JAVASCRIPT VUE.JS 前端
因为后端服务的端口和我们前端本地端口号不一致,所以就会产生跨域问题所以需要配置一个代理服务器来解决这个问题,在vue项目中,有一个config文件,在config文件中的index.js中进行代理配置在请求路径上加上'/dyf'就会去告诉代理服务器请求target这个地址,changeOrigin:true,//是否跨域pathRewrite就是代理服务器向后端请求的时候把'/dyf'替换成空然后...

Vue的跨域问题

发布时间:2018-12-20 VUE 前端 PHP YII2.0
有不少刚学Vue的童鞋们可能会遇到请求Api接口时出现跨域的问题(也会有运气好没有遇到的),这篇文章仅供参考,这是在询问了前端的朋友后写的。解决前端跨域的问题有两种情况,一个是开发环境,另外一个是线上生产环境。目前开发环境的跨域问题还没有解决,有知道的童鞋麻烦告知一声。只知道要配置服务器代理,但是按照网上的教程配置完后还是没有效果,求大神告知。另外一种情况是线上生产环境使用cors解决跨域的问题。...

路由中meta自定义keepAlive属性

发布时间:2022-11-17 VUE.JS JAVASCRIPT 前端 开发语言
返回路由缓存与不缓存:需求:领导要求点击跳转到另一个页面后回退缓存那个位置:1、给点击加上点击事件<divclass="sub_icon"@click="goBack"></div>定义该方法:window.history.go(-1);//表示返回上一页2、在router.js中设置属性importVuefrom"vue";//引入使用路由importVueRouterf...

CSS3渐变

发布时间:2022-11-24 前端 CSS3 CSS
1.CSS3渐变(1)、什么是渐变CSS3渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡。以前,你必须使用图像来实现这些效果。但是,通过使用CSS3渐变(gradients),你可以减少下载的时间和宽带的使用。此外,渐变效果的元素在放大时看起来效果更好,因为渐变(gradient)是由浏览器生成的。CSS3定义了两种类型的渐变(gradients):(2)、CSS3渐变...

Axios介绍

发布时间:2022-08-16 笔记 JAVASCRIPT 前端 JSON
Axios是专注于网络数据请求的库,相比于XMLHttpRequest对象。axios简单易用,相比于jQuery,axios更加轻量化,只专注于网络数据请求引入外部js文件<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>格式Axios发送get请求的语法:Axios.get("url",{pa...

ES6相关语法

发布时间:2022-08-01 JAVASCRIPT 前端 甲骨文
ES6语法ES6相关概念(★★)什么是ES6ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HDbdr4XM-1659360222817)(images/es-version.png)]为什么使用ES6?每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语...

vue监听器使用笔记

发布时间:2022-11-19 VUE.JS JAVASCRIPT VUE 前端
1.year是你监听的属性的属性名。2.vule是这个属性发生改变后的值。3.可以在{}里面去写剩下的业务逻辑代码。4.this.$emit("input",this.getTimeStr()); 是触发父组件的input事件(一般是来封装父组件的v-model时写的事件名),参数 :this.getTimeStr() ,是一个方法,这也可以可以是值。watch:{year(value){this...

JQuery设置光标到指定的位置

发布时间:2011-10-09 JAVASCRIPT VIEWUI
根据浏览器判断,来定位光标的位置:通过$.browser.msie来判断是否是IE浏览器 $(function(){$("#txt").click(function(){varposition=0;vartxtFocus=document.getElementById("txt");if($.browser.msie){varrange=txtFocus.createTextRange();ran...

关于如何用jq定位到某个元素的索引

发布时间:2018-08-24 JAVASCRIPT VIEWUI
在点击事件触发时候,通常如果有同样的className的列表我们都需获取它的索引来知道到底点击的是那一个$('.info_content').mousemove(function(){  varrowInfo=$(this).parent().index()-1;  $('.info_content:eq('+rowInfo+')').parent().children('.info_edit')...

回车键搜索 - Enter搜索

发布时间:2017-04-17 JAVASCRIPT VIEWUI
  今天写了个搜索 想来发表发表    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title></head><body><inputtype="text"name="keyword"id="ke...

B/S软件的结构、网页的组成部分

发布时间:2022-08-18 JAVAWEB-HTML&CSS 前端 服务器
B/S软件的结构 客户端:浏览器                                                                   服务器端:WEB服务器网页的组成部分网页由三部分内容组成:内容(结构)、表现、行为内容(结构):是在页面中可以看到的数据,称之为内容;一般内容使用html技术来展示表现:指这些内容在页面上的展示形式,如布局、颜色、大小等,一般使用CS...

手写call 方法

发布时间:2022-10-05 JAVASCRIPT 前端 开发语言
代码如下Function.prototype.call=functioncall(context,...params){ //这里的this是指向的这个函数letself=this,key=Symbol("KEY"),//用Symbol是为了拿到唯一的keyresult;//在==的情况下undefined跟null也是相等的context==null?context=window:null;//...

手写call方法(代码演示)

发布时间:2022-10-26 JAVASCRIPT 前端 开发语言
letperson={name:1,getName:function(){returnthis.name}}letperson1={name:'你猜'}//我们在这封装出来一个自己的call方法//这个Mycall方法肯定得是在原型上才能被每个function给访问到Function.prototype.Mycall=function(context){//我们先进行一个判断判断一下this(也就...

class类的基础知识

发布时间:2022-11-22 JAVASCRIPT 前端 开发语言 CALSS类
//创建一个Person类classPerson{//构造器方法constructor(name,age){//构造器中的this指向的是--类的实例this.name=namethis.age=age}//一般方法没有function哈哈哈speak(){//speak方法放在了--实例的原型对象__proto__上,供通过Person实例调用speak实例使用//通过Person实例调用spe...

数据通信基础

发布时间:2010-11-18 网络 运维 人工智能
一.基础概念1.信号(signal)信息(information)是事物现象及其属性标识的集合,它是对不确定性的消除。数据(data)是携带信息的载体。信号(signal)是数据的物理表现,如电气或电磁。根据信号中代表消息的参数的取值方式不同,信号可以分为两大类:(1)模拟信号:连续信号,代表消息的参数的取值是连续的。(2)数字信号:离散信号,代表消息的参数的取值是离散的。2.频率(frequen...

测试 Web 应用程序是否存在跨站点脚本漏洞

发布时间:2008-07-09 测试 JAVASCRIPT VIEWUI 后端
到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议。如果您很精通XSS并且只想看看有什么好的测试方法可供借鉴,那么请直接跳到本文的测试部分。如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击。“跨站点脚本”这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点...

ts 动态加载import()

发布时间:2022-11-25 JAVA JAVASCRIPT COCOS CREATOR 前端
import()函数 简介import命令会被JavaScript引擎静态分析,先于模块内的其他模块执行(叫做”连接“更合适)。所以,下面的代码会报错。//报错if(x===2){importMyModualfrom'./myModual';}上面代码中,引擎处理import语句是在编译时,这时不会去分析或执行if语句,所以import语句放在if代码块之中毫无意义,因此会报句法错误,而不是执行时...

05,JavaScript脚本中cookie

发布时间:2022-11-13 JQUERY JAVASCRIPT 前端 JAVA
cookie:一般是被浏览器以数据库的形式存储在电脑硬盘中,供该浏览器进行读、写操作。(1),添加cookie functionaddCookie() { //添加cookie document.cookie="username=xiobill;age=26"; debugger; //给cookie设置终止时间 vardate=newDate(); varexpireDays=10...

vue antd中的select用法

发布时间:2022-11-14 VUE ANTDDESIGN JAVASCRIPT VUE.JS 前端
1、基本用法<a-selectv-model:value="value1"style="width:120px"><a-select-optionvalue="jack">Jack</a-select-option><a-select-optionvalue="lucy">Lucy</a-select-option><a-selec...

cesium,实现下雨下雪效果切换

发布时间:2022-11-08 JAVASCRIPT 前端 HTML
honey们,一起来学习cesium天气效果吧^^本篇文章实现的是简单的HTML页面在线显示,用其他框架的改一下就可以啦1、CDN引入<scriptsrc='https://cdn.bootcdn.net/ajax/libs/cesium/1.98.1/Cesium.js'></script><linkhref='https://cdn.bootcdn.net/aja...

【Vue3】Vue3+Vite前端在组件中直接使用svg图标icon(实现设计稿的icon解决方案)

发布时间:2022-11-24 VUE JAVASCRIPT VITE VUE.JS 前端
webpack实现下载icon图标(svg格式)用到的是腾讯codesign,其他平台也能进行svg图片的下载放入项目svg中如何控制图标颜色如下图控制svg颜色的是fill参数,此处可以删除掉,保证添加后和同级文字样式统一引入插件在vite.config.ts中引入插件vite-plugin-svg-icons官方文档:https://github.com/vbenjs/vite-plugin-...

Vue脚手架搭建项目【小白看了都会】

发布时间:2022-11-20 VUE.JS VUE 前端
目录一、环境准备1、先安装node.js2、安装淘宝的镜像二、开始搭建vue1、检查脚手架是否安装 2、创建项目 vuecreateproject 3、选择项目的配置项 4、启动项目先附上重点步骤截图一、环境准备1、先安装node.js下载node.js的安装和全局配置参考:nodejs的安装和全局配置(超详细哦)_不甜呐的博客-CSDN博客2、安装淘宝的镜像在cmd中输入:npminstall-...

封装axios

发布时间:2022-09-20 AXIOS封装 JAVASCRIPT VUE.JS 前端
新建文件夹http,添加4个js文件需要的页面引入import{getBanners,getshoplist,login}from"../http/api";代理跨域index.js->devdev:{//env:require('./dev.env'),host:'localhost',//canbeoverwrittenbyprocess.env.HOSTport:8080,autoOp...

vue 日历签到组件

发布时间:2022-11-25 VUE.JS VUE 前端
vue写好的组件,直接安装npminstallvue-checkin--save,github地址  GitHub-hasbug/vue-checkin或者自己写,如下新建vue-checkin.vue,里面写<template>  <divclass="content-pageuk-body">    <divclass="calendar">      &l...

node入门(四)--Express

发布时间:2022-06-11 HTTP NODE.JS AJAX 服务器 前端
1、Express简介Express是基于Node.js平台,快速、开放、极简的Web开发框架。通俗的理解:Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的。Express的本质:就是一个npm上的第三方包,提供了快速创建Web服务器的便捷方法。Express的中文官网:http://www.expressjs.com.cn/对于前端程序员来说,最常见的两种...

百度分析js

发布时间:2014-09-27 JAVASCRIPT VIEWUI
(function(){varc={siteid:"84ed2e6f46b9d9bfdc018744dc663e07",domain:["testbaidustat.blogbus.com"],listener:[],_js_path:"tongji.baidu.com/hm-web/js/",icon:'http://eiv.baidu.com/hmt/icon/11|swf|20|20',br...

Web前端 笔记 (21-45)

发布时间:2022-10-28 前端
21、嵌套列表1、概念列表之间可以互相嵌套形成多层级列表2、有(无)序列表嵌套<ul><li>辽宁省<ul><li>沈阳</li><li>大连</li><li>丹东</li></ul></li><li>山东省<ul><li>济南&l...

Web前端 笔记(84-109)

发布时间:2022-11-19 前端 CSS3 CSS
Web前端笔记(84-109)84.relative相对定位一.position定位1.position特性cssposition属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则决定了该元素的最终位置。2.position取值static(默认)relativeabsolutefixedsticky3.relative相对定位如果没有定位偏移量,对元素本身没...

Web前端(46-71、78-83)

发布时间:2022-11-04 前端 CSS
Web前端(46-71、78-83)46、标签群组通配等选择器CSS选择器一.标签选择器(TAG选择器)div{}<div></div>使用的场景:1.去掉某些标签的默认样式时2.复杂的选择器中,如层次选择器二.群组选择器.SS:div,p,span{}<div>这是一个块</div><pid="text">这是一个段落</p&gt...

2020-5:作用域链--this的指向问题(JavaScript)

发布时间:2020-12-26 JAVASCRIPT 前端
obj.fun()fun中的this指向.前的objnew构造函数()构造函数中的this指向将来new出的新对象fun()匿名函数自调用:(function(){})()setInterval(function(){…},1000)setTimeout(function(){…},1000)setInterval(obj.fun,1000)setTimeout(obj.fun,1000)以上th...

Tauri 引入element-plus

发布时间:2022-11-19 VUE.JS TAURI JAVASCRIPT VUE 前端
1、安装element-plusnpminstallelement-plus--save2、Vue3的main.js引入elementimport{createApp}from"vue";import"./style.css";importrouterfrom'./router'//importAppfrom"./App.vue";//这里importElementPlusfrom'element...

CSS Float(浮动详解)

发布时间:2022-11-25 前端 HTML CSS
什么是CSSFloat(浮动)?CSS的Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。Float(浮动),往往是用于图像,但它在布局时一样非常有用。最早是为了让web开发人员实现简单的布局,例如:文章的文字环绕图片而诞生的,web开发人员很快的就意识到,浮动不仅仅可以浮动图片,而且可以浮动其他的元素,浮动被用来实现网站的布局,它使信息可以横向排列,浮动曾经是运用最广泛的布局...

JS实现像sql一样分组统计

发布时间:2022-11-24 JAVASCRIPT 前端 SQL
/***分组统计*@paramdatas数据集合*@paramkeys分组键值*@paramcallback回调函数(例如求和还是计算总数)*@returns{{}}*/functionGroupBy(datas,keys,callBack){constlist=datas||[];//数组对象constgroups=[];//数组遍历v是数组里的一个对象比如{name:'张三',value:1}...

创新案例|鞋服巨头Nike如何以DTC战略实现可持续增长

2022年是耐克实践“CDA(ConsumerDirectAcceleration加速直面消费者)”策略的第二个年头,该项新策略旨在继续提升自己的DTC(DirecttoConsumer:直接触达消费者)渠道的销售额,以减少其对传统批发商渠道的依赖。从结果看,耐克在这两年里依靠这种战略取得了惊人的进步,确实利用其拥有的优势实现了自己的战略目标1通过三大举措坚定DTC方向从2017年正式提出DTC(...

form表单验证提交

发布时间:2017-10-09 JAVASCRIPT VIEWUI
 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible"content="i...

利用ICallbackEventHandler接口实现异步调用

发布时间:2008-03-07 JAVASCRIPT VIEWUI UI
     除了利用AJAX框架之外,我们可以通过在页面实现ICallbackEventHandler接口实现客户端与服务器的异步通讯。下面我们实现如下一个简单的例子:当点击按钮时将文本框中的数值送到服务器,然后服务器处理该字符串值并传回客户端,在客户端弹出提示框显示,整个过程异步完成。     ICallbackEventHandler接口包含两个方法:     1.RaiseCallbackEv...

Element-ui实现loading的局部刷新

发布时间:2018-10-29 JAVASCRIPT VIEWUI UI
后台管理系统loading的局部刷新 在一次vue+element-ui后台管理系统的项目中,遇到这样一个问题,引入element-ui加载框后,loading会占满整个屏幕,虽然通过改变路由实现了局部刷新,但是loading的全屏刷新,让人看上去很是不爽,以为是全局刷新。再一个问题就是,一个页面中可能含有的多个请求,在拦截器汇总设置关闭loading后,会出现的问题就是,有些数据还是空的,但是l...

jQuery ajax表单提交实现局部刷新 ajaxSubmit

发布时间:2013-06-05 JAVA JAVASCRIPT VIEWUI JSON
jQuery ajaxSubmit可以实现AJAX提交表单局部刷新页面DIV (可以实现刷新JSPTABLE哦!) 需要引入:jquery-form.js  使用说明: Java代码 $(document).ready(function() {       var options = {           target:        '#mydiv',   // 需要刷新的区域        ...

防作弊-页面失焦与禁键

发布时间:2022-11-19 VUE.JS JAVASCRIPT REACT学习复盘 前端
监听页面失焦,禁右键及Ctrl键监听页面失焦代码:useEffect(()=>{window.addEventListener('visibilitychange',function(){if(document.hidden){//失去焦点notification.open({message:'',description:'请勿切换屏幕!',})}})},[])禁右键及Ctrl键代码://禁...

Webfunny 创始人:Skywalking × Zabbix 与观纵探索可观测性

发布时间:2022-11-24 ZABBIX SKYWALKING 前端
作为Webfunny的PMC,应伟长期致力于前端监控、埋点探针的产品研发,伴随着全链路监控的探索,在整合Skywalking与Zabbix打造一体化监控平台的实践中,是怎样的心路历程?“从前端监控到全链路监控的挑战Webfunny自2019年发布以来,收获GitHubStar4.1k,向数百家企业提供企业级服务。“衔接前端监控与基础监控的必经桥梁就是应用链路监控,当Skywalking资深玩家修能...

机器如何“猜你喜欢”?深度学习模型在1688的应用实践 ...

发布时间:2019-02-20 VIEWUI 前端 SWIFT 人工智能
小叽导语:本文主要介绍了Wide&Deep、PNN、DeepFM三个模型以及1688CBU事业部的顾海倩同学提出的Wide&Resnet模型结构,并尝试在1688猜你喜欢的真实数据场景中进行应用。文内有一些实验结果,也提出了一些遇到的问题,希望能与大家一起分享讨论。一、背景猜你喜欢是推荐领域极其经典的一个场景,在1688首页无线端猜你喜欢栏目日曝光约23w,其中约72%的用户会产生...

机器如何“猜你喜欢”?深度学习模型在1688的应用实践

发布时间:2018-09-06 VIEWUI 前端 SWIFT 人工智能
一、背景猜你喜欢是推荐领域极其经典的一个场景,在1688首页无线端猜你喜欢栏目日曝光约23w,其中约72%的用户会产生点击行为,人均点击约8次。在我们的场景中,这部分是一个相对较大的流量来源。我们算法要做的就是通过用户的真实行为数据,预测用户最可能感兴趣的商品进行展示,以提高点击率,从而提高购买量。不同于搜索,这种用户带有明确目的的行为,猜你喜欢是在用户没有明确目的时让用户“逛起来”,挖掘用户的潜...