Amp

如何加速推荐系统?这是个高价值问题

那年仲夏 提交于 2020-08-11 01:54:59
今年的ISCA中有一个Tutorial[2]和三篇论文[3-5],直接和推荐系统的加速有关。以此为起点,本文讨论一下如何加速推荐系统这个问题。推荐系统的优化和加速是一个系统性问题。本文主要围绕Facebook的一些分析和工作,后续可能进行更多的讨论。 我们每打开一个App或者访问一个网站,呈现在我们面前的内容有很大的可能就是推荐系统工作的成果。它们都是推荐系统基于用户和“商品”的各种信息(特征),对用户动作进行预测后推送给我们的。和搜索引擎根据明确的搜索请求返回结果不同,推荐系统是主动去”猜“用户”想要什么“,能够在”信息过载“的情况下,推送最合适的内容,这是一个好的推荐系统能够给用户带来的最大的价值。 而对”商品“提供者来说,推荐系统的价值和重要性也是不言而喻的。引用王喆老师的《深度学习推荐系统》[6]中的例子,2019年天猫”双11“的成交额是2684亿元,而天猫的推荐系统实现了首页商品的个性化推荐,其目标是提高转化率和点击率。假设推荐系统进行了优化, 整体的转化率提高1%,那么增加的成交额大约就是26.84亿 。有这么明确的收益,我们不难想象互联网巨头优化推荐系统的动力。另一个例子是,在ISCA的tutorial[2]中,百度的同学介绍他们为什么在广告推荐系统中使用一个巨大的模型(10TB)而不能进行压缩的时候,给出的原因就是,尝试压缩后的模型会 导致0.1%左右的AUC

wifidisplay

余生颓废 提交于 2020-08-11 01:45:35
package com.android.settings.wfd; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; import android.hardware.display.DisplayManager; import android.hardware.display.WifiDisplay; import android.hardware.display.WifiDisplayStatus; import android.provider.Settings; import android.media.MediaRouter; import android.media.MediaRouter.RouteInfo; import android.os.Handler; import android.content.Context; import android.content.IntentFilter; import android.database.ContentObserver; import android.content.BroadcastReceiver; import android.view

PHP底层运行机制与原理

风格不统一 提交于 2020-08-11 01:20:37
PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,时代发展,PHP也早已支持多线程模型。 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、高效。 引擎(Zend)+组件(ext)的模式,降低内部耦合。 中间层(sapi),隔绝web server和PHP。 语法简单灵活,没有太多规范。 PHP的核心架构 PHP核心架构如下图,从下到上可以简单分为四层体系: Zend引擎:纯C实现,是PHP的内核部分,它将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。 Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array 系列)、标准库等都是通过extension来实现。 Sapi :全称是Server Application Programming Interface服务端应用编程接口

C++ 基础类型万能转换器

烂漫一生 提交于 2020-08-11 01:00:57
你可能还在使用atoi、atof、itoa等函数进行类型转换,赶紧看过来,用一个函数,解决所有支持io流类型的转换。 //基础类型转换 template<typename OUT,typename IN, typename std::enable_if<!std::is_same<OUT, IN>::value, int>::type N = 0> OUT Convert(const IN& val) { std::stringstream ss; ss << val;//向流中传值 OUT result;//这里存储转换结果 ss >> result;//向result中写入值 return result; } //输入、输出类型一致 template<typename OUT,typename IN, typename std::enable_if<std::is_same<OUT, IN>::value, int>::type N = 0> OUT Convert(const IN& val) { std::cout << "same" << std::endl; return val; } 测试代码: int main() { std::cout << Convert<int>("123") << std::endl; std::cout << Convert<int>

微服务的理想与现实

♀尐吖头ヾ 提交于 2020-08-11 01:00:13
随着云原生微服务的日益火热,很多人都开始对微服务的相关知识内容感兴趣。本篇内容,旨在扫盲(意思是小白可入),希望能对大家有帮助。如有问题,欢迎大家一起讨论,共同学习进步。 01 微服务从哪里来?--- 服务架构的演进史 互联网初期, 2G还是个时髦词儿,人们的需求也很朴实,一个静态网站告诉大家我是谁、一个留言板让大家能够与我联系,就能满足信息传播和互相交流的需要。于是码农们给我们提供了这样一套解决方案: 界面+业务处理+数据处理 ,通过一个zip包就可完成所有的事情,这也就是服务架构的 单体架构时代 。 图片为作者原创 随着3G的普及,越来越多的人们可以通过PC上网了,此时BBS、门户咨询网站的出现开始吸引着大量观众。当漂亮的交互更能抓人眼球、有趣的信息瞬间引爆千万用户在线围观时,“并发“问题产生了,于是码农们加班奋战,将系统分为前端和后端,通过拆分出可复用的中间件,来提升业务处理能力、解决并发问题,这便是 分层架构时代的到来 。 图片为作者原创 后来,互联网进入微博时代,几乎网民都有Blog,打开手机就刷weibo。而此时的分层架构面对更复杂服务要求时,在应用扩展、服务调用、扩容等方面都越发桎梏,于是服务架构走进了面向服务的架构(SOA)时代。SOA网上说的很多,这里列举几个关键词: 中心化的服务治理, ESB(企业服务总线)中心化、服务之间通过精确定义的接口进行通讯、耦合度更低

vivo悟空活动中台-基于行为预设的动态布局方案

一世执手 提交于 2020-08-10 23:31:06
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/CwLAV2j7Uxam01m1p7cXxg 作者:悟空中台研发团队 【悟空活动中台】系列往期精彩文章: 《 揭秘 vivo 如何打造千万级 DAU 活动中台 - 启航篇 》 主要为大家讲述 vivo 活动中台的能力与创新。 《 悟空活动中台 - 微组件状态管理(上) 》介绍了活动页内 RSC 组件之间的状态管理和背后的设计思路。 《 悟空活动中台 - 微组件状态管理(下) 》探索平台和跨沙箱环境下的微组件状态管理。 一、写在前面 作为前端工程师,页面布局是基本功。面对悟空中台的海量的活动需求,仅仅有几招常规的布局套路显然是难以招架的,悟空开发者团队从个性化需求中提炼特定场景下的共性特点,设计了多个“创意布局”方案。 本文以“满屏”场景下的页面布局思考为切入点,以微组件为元素单元,提供了一种新的布局方案设计思路—— 基于行为预设的动态布局方案 ,并详细的分享了设计目的及具体实现方案,对技术基础要求不高,是一篇男女老少皆宜的“技术甜点”。 二、灵感缘起 灵感往往并不是凭空产生的,而是与问题的出现形成因果关系,解决方案也鲜有一蹴而就,大多有一个不断完善的演进过程,我们都执着于发现问题,分析问题,解决问题的轮回。 1、问题是什么 1.1、客户端茫茫多,而设计稿只有一个

IM- Enter 发送,Ctrl+Enter 换行

孤者浪人 提交于 2020-08-10 22:49:01
< textarea id="content" className="right_ButtomInput" onChange={ this .handelChange.bind( this )} defaultValue={content} onKeyDown={(e)=> this . onkeydown (e)}/> var keyCode = e.keyCode || e.which || e.charCode; var ctrlKey = e.ctrlKey || e.metaKey; // 判断 ctrl+enter 换行 if (ctrlKey && keyCode == 13) { //换行 } else if (keyCode == 13) { // 阻止提交自动换行 e.preventDefault(); // 获取发送按钮id,调用 发送按钮事件 } 来源: oschina 链接: https://my.oschina.net/u/3407708/blog/4298536

ArrayList源码-常用方法

微笑、不失礼 提交于 2020-08-10 22:44:16
ArrayList 这个类应该是平时代码中最常用的一种列表实现类,在此通过查看源码来进一步理解常用方法,同时了解一下不常用的方法,应该会有惊喜。这次换个方式来看,以方法熟悉度去看对应源码,有必要的在贴源码。 1. ArrayList 头部注释 此类从 java 1.2 开始引入。它是 List 接口的 可调整大小 的 数组 实现。实现所有 可选的 列表操作,并允许所有元素,包括 null 。 除了实现 List 接口之外,此类还提供一些方法来 操纵内部 用于存储列表的 数组的大小 。此类与 Vector 大致等效,但它是 不同步 的。 size,isEmpty,get, set ,iterator 和 listIterator 操作在恒定时间内运行。add 操作在“ 摊销固定时间 ”中运行,也就是说,添加n个元素需要O(n)时间。所有其他操作均以线性时间运行(大致而言)。 与 LinkedList 实现的常量因子相比,常量因子较低。 每个 ArrayList 实例都有一个“ 容量 ”。 容量是用于在列表中存储元素的 数组的大小 。 它总是至少与列表大小一样大。 将元素添加到ArrayList后,其容量会自动增长。 除了添加元素具有固定的摊销时间成本外,没有指定增长策略的详细信息。在操作添加大量元素之前,应用程序可以使用 ensureCapacity 增加ArrayList

5 队列

瘦欲@ 提交于 2020-08-10 22:42:28
队列 主要内容: 队列 循环队列 队列的链式存储 队列的应用 ------------------------------------------------------------------------------------------------------------------- 队列&栈: 队列是两端出入数据,分队首、队尾,堆栈是单端出入数据,有栈顶指针; 要明确理解栈和队列的 应用场景, 这些场景我提到过啊,比如栈常用在函数调用发生时,形参压栈,保留现场信息(细节看: 从零开始学习数据结构-->栈 ),以及递归转为非递归使用栈,队列下文会提到键盘缓冲区的本质上是循环队列。 1 队列 逻辑线性结构,先进先出 FIFO;入队列在队尾,出队列在队首; 队首等于队尾存在 2 种情况: 空队:刚刚做完出队列操作; 满队:刚刚做完入队列操作; 模型如下: 队列的实现 :循环链表(物理非线性结构)、循环数组(物理线性结构) 2 循环队列 3 链式存储 思路:就是用 head 始终指向头结点,tail 始终指向尾结点,静态的模板变量,单链表实现,入队从尾 tail,出队从头 head; 模型如下: (数组和链表实现队列,自己补充) 4 队列的应用 键盘缓冲区,实质上是循环队列; I/O 缓冲区,在网络环境下,存在着连入网络的节点速度差异;在不进行任何处理的情况下

移动端悬浮球可拖拽可点击效果

泪湿孤枕 提交于 2020-08-10 21:05:32
需求:拖拽松开时,x轴方向,离哪近吸附到哪边 <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> <title>移动端可拖拽效果</title> <style> .ball { position: fixed; line-height: 2.75rem; width: 2.75rem; height: 2.75rem; padding: .5rem; text-align: center; border-radius: 99px; color: #fff; /*border: 1rem solid transparent;*/ background-color: #00bc12; background-clip: padding-box; text-decoration: none; top: 13em; } </style> </head> <body> <div style="height: 2000px;">拖拽效果测试,PC浏览器访问,需打开控制台进入移动模式。</div> <a href="https://blog.csdn.net/qq