043推荐系统评测之二线上评测
076 | 推荐系统评测之二:线上评测
周一,我们聊了推荐系统的线下评测。线下评测是任何系统能够不断演化的最直接的要求。在线下的环境中,我们能够开发出系统的种种改进,并且希望能够通过这些线下评测的手段来选择下一个更好的版本。
076 | 推荐系统评测之二:线上评测
周一,我们聊了推荐系统的线下评测。线下评测是任何系统能够不断演化的最直接的要求。在线下的环境中,我们能够开发出系统的种种改进,并且希望能够通过这些线下评测的手段来选择下一个更好的版本。
今天如果你随便抓一个人问一声,当今世界上最有创新精神的公司是哪家?在互联网领域,很多人都会说是谷歌。无论是实际解决人类难题,还是时不时地爆出“大杀器”上,谷歌都是这个世界上当之无愧最有创新精神的互联网公司。接下来,我会和你讲讲谷歌的创新精神里好的、坏的和丑陋的方面。
077 | 推荐系统评测之三:无偏差估计
周三,我讲了推荐系统的线上评测,我们讨论了如何做在线评测,以及推荐系统在线评测可能遇到的一系列问题。
今天,我们来看一个比较高级的话题,那就是如何做到推荐系统的无偏差估计。
上回我讲了谷歌创新精神里面好的那部分。可以说,创新精神始于谷歌的创始人,融于谷歌的基因,无论从人还是从制度上,谷歌都很支持创新。同时,谷歌也是实用主义者,对创新精神的性价比把握得非常好。
078 | 现代推荐架构剖析之一:基于线下离线计算的推荐架构
上周,我们讨论了推荐系统的评测,聊了推荐系统的线下评测、线上评测和无偏差估计。至此,我们已经聊了推荐系统的一些基本技术和评测体系,相信你已对推荐系统有了一个基本的认识。
PeopleSoft,中文名是“仁科”,是一家非常著名的企业管理软件供应商,为企业提供全方位的管理软件。仁科成立于 1987 年,在 2005 年被 Oracle 恶意收购前,已成长为全球第二大应用软件公司。
079 | 现代推荐架构剖析之二:基于多层搜索架构的推荐系统
周一,我们讨论了基于线下离线计算的推荐架构,这也是最简单的一种推荐架构。我们了解了这种架构的优劣势,以及能够做的一些方案。
上回我们讲到 Integral System 对个人计算机上基于客户端 / 服务器的人力资源软件开发毫无兴趣,于是大卫 · 杜菲尔德(David Duffield)于 1987 年创办了仁科。仁科在经历了一段缺钱难熬的日子后获得了飞速发展,1992 年底顺利上市。
080 | 现代推荐架构剖析之三:复杂现代推荐架构漫谈
本周我们讨论现代推荐系统的架构体系。周一我们看了最简单的基于线下离线计算的推荐架构,周三我们聊了基于多层搜索架构的推荐系统。
进入 2003 年,仁科公司打算和 JD Edwards 合并。当时市面上最大的企业软件公司是 SAP,第二大是甲骨文,而第三和第四分别就是仁科和 JD Edwards。这两者显然是强强联合,虽然不一定能威胁到 SAP,起码也可以让甲骨文喝上一壶。
081 | 基于深度学习的推荐模型之一:受限波兹曼机
这几周我们进入专栏里一个比较大的模块,那就是推荐系统。
上周,我们谈了现代推荐系统的架构体系,帮助你在宏观上对推荐系统的构建有一个更加完整的认识。这周,我们主要来看在推荐系统研究领域里一个比较前沿的话题,那就是如何利用深度学习来提升推荐系统的精度。
仁科公司的故事至此告一段落。我们一起观看了仁科从一开始跌宕起伏的创业史,到波澜壮阔的发展史,到最后狗血的恶意收购过程。看完故事,你的心底多少都有些感触吧?今天我就仁科发展过程中的成败聊聊我个人的看法,希望可以给你一些启发。
082 | 基于深度学习的推荐模型之二:基于RNN的推荐系统
周一我们看了一篇经典的文章,那就是尝试使用受限波兹曼机(RBM)来对推荐系统建模。这应该是最早把深度学习应用到推荐建模的典范。当然,RBM 虽然算是相对比较早的深度学习模型,但其本质上并没有很多后来提出的深度模型的特质,也没有真正发挥出深度学习模型的特有优势。
在微服务架构落地实践的过程中,工程师往往会遇到微服务的粒度与边界划分等实践问题,DDD(Domain Driven Design,领域驱动设计)是解答这些问题的关键技术之一,它是一套完整且系统的设计方法。
反射是 Java 世界中非常强大、非常灵活的一种机制。在面向对象的 Java 语言中,我们只能按照 public、private 等关键字的规范去访问一个 Java 对象的属性和方法,但反射机制可以让我们在运行时拿到任何 Java 对象的属性或方法。
02|善用Python扩展库:如何批量合并多个文档?
你好,我是尹会生。
在日常工作中,我们打交道最多的文件就要数 Word 和 Excel 了。我们经常面临这么一种场景:需要将 Excel 的内容合并到 Word 中。你可以想一想,完成这个需求,需要手动进行几个步骤的操作呢?很显然,有 4 步。
03|键盘:那么多炫酷的电子音色都是怎么做出来的?
你好,我是邓柯,欢迎来和我一起玩音乐。
你一定听过很多流行音乐,对吧?音色对于流行音乐而言是非常重要的。如果你的耳朵有点儿灵敏,其实就能感受到流行音乐中的音色。哪怕你不想制作音乐片段,也没有关系,你可以在库乐队上跟着我动动手指,感受不同乐器带有不同效果的音色。相信我,这会让你的想象力更丰富。
03|深度学习基础:你打牢深度学习知识的地基了吗?
你好,我是王喆。
今天,我想用一节课的时间,带你梳理巩固一下深度学习的相关基础知识。打好基础之后,我们再去学习深度学习推荐系统的技术细节,就能更加得心应手了。
03丨Python基础语法:开始你的Python之旅
上一节课我跟你分享了数据挖掘的最佳学习路径,相信你对接下来的学习已经心中有数了。今天我们继续预习课,我会用三篇文章,分别对 Python 的基础语法、NumPy 和 Pandas 进行讲解,带你快速入门 Python 语言。如果你已经有 Python 基础了,那先恭喜你已经掌握了这门简洁而高效的语言,这几节课你可以跳过,或者也可以当作复习,自己查漏补缺,你还可以在留言区分享自己的 Python 学习和使用心得。
03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
在上一篇文章中,我们讲述了性能场景,下面就要说性能需求指标了。
通常我们都从两个层面定义性能场景的需求指标:业务指标和技术指标。
03丨学会用数据库的方式思考SQL是如何执行的
通过上一篇文章对不同的 DBMS 的介绍,你应该对它们有了一些基础的了解。虽然 SQL 是声明式语言,我们可以像使用英语一样使用它,不过在 RDBMS(关系型数据库管理系统)中,SQL 的实现方式还是有差别的。今天我们就从数据库的角度来思考一下 SQL 是如何被执行的。
04|用科学原理告诉你如何在考场上超常发挥
学习是有方法的,按照正确的方法练习,每个人都可以成为学霸。
大家好,我是冷冷。
今天要跟大家分享的是,考试以及做其它任何事情,如何才能超常发挥。
03 | 产品案例分析·Trigraphy的设计哲学
Trigraphy 是一款图片处理应用。它不同于美图秀秀那种传统意义上的图片应用,没有磨皮或者美白瘦脸之类的效果,而更像是一个艺术工具。它会把照片变得强烈的风格化,加上很多艺术的元素,看起来更像是一个艺术作品。
03 | 晋升原则:什么样的人更容易晋升?
你好,我是华仔。
当你了解了晋升的游戏规则和通关流程之后,自然就会产生一个疑问:我应该怎么做才能更快地晋升?
其实这门课后续的所有内容,都是在回答这个问题。但毕竟晋升涉及的因素太多了,不同的行业、公司和团队,你本人的经历、性格和爱好,可能都会影响晋升策略的选择。
03 | 列表和元组,到底用哪一个?
你好,我是景霄。
前面的课程,我们讲解了 Python 语言的学习方法,并且带你了解了 Python 必知的常用工具——Jupyter。那么从这节课开始,我们将正式学习 Python 的具体知识。
03 | 你应该知道的Servlet规范和Servlet容器
通过专栏上一期的学习我们知道,浏览器发给服务端的是一个 HTTP 格式的请求,HTTP 服务器收到这个请求后,需要调用服务端程序来处理,所谓的服务端程序就是你写的 Java 类,一般来说不同的请求需要由不同的 Java 类来处理。
03 | 优秀程序员的六个关键特质
上一讲我们从“五道关卡”的角度讨论了如何写出优秀代码这个话题。对我们每个程序员个体来说,其实第一道“程序员”关卡最重要。没有优秀的程序员,就没有优秀的代码。那么,什么样的程序员才是优秀的程序员呢?
在前面的课时中,我除了对响应式概念和应用场景为你进行了普及以外,还提到了响应式流规范以及响应式编程所包含的一些底层核心组件。相信你也发现了,在现实中,通常不会直接使用这些底层组件来开发应用程序,而是借助特定的开发框架。
首先解答一下上一课时的问题。磁盘的速度这么慢,为什么 Kafka 操作磁盘,吞吐量还能那么高?
我们开发的面向普通用户的应用程序,目前看来几乎都是互联网应用程序,也就是说,用户操作的应用程序,不管是浏览器还是移动 App,核心请求都会通过互联网发送到后端的数据中心进行处理。这个数据中心可能是像微信这样的自己建设的、在多个地区部署的大规模机房,也可能是阿里云这样的云服务商提供的一个虚拟主机。
其实关于这个主题,我也仔细想过,是放在生存发展篇合适,还是放在职业素养篇合适。最终还是觉得,作为程序员,发挥主观能动性应该算是一个基本的职业素养。
在上一节课,我们已经了解了 Kubernetes 集群的搭建方式。从现在开始,我们就要跟 Kubernetes 集群打交道了。本节课我们会学习 Kubernetes 中最重要、也最核心的对象——Pod。
在了解 Pod 之前,我们先来看一下CNCF 官方是怎么定义云原生的。
现代化前端架构离不开构建工具的加持。构建工具的选择、理解和应用决定了是否能够打造一个流畅且接近完美的开发体验。这一讲,我们通过“横向对比构建工具”这个非常新颖的角度,来了解构建工具背后的架构理念。
大家都知道程咬金的“三板斧”这个绝技,那今天我也给你介绍解决链表问题的“三板斧”:假头、新链表、双指针。由于内容比较多,所以这里拆分了上、下两篇来讲解,通过这一讲的学习,你可以深入理解带假头链表的 6 种最基本的操作。
你好,这一讲我将带你学习 Sentinel,Sentinel 是阿里开源的分布式架构的高可用防护工具,它以流量为切入点,提供流量控制、流量塑形、熔断降级和过载保护等多维度的高可用保障策略。
在前面的课时中,我们详细分析了“异步”的工作原理,并且在解决异步系统的 OOM 问题时,使用了“反向压力”的方法。在讨论过程中,我们已经明确地使用到,诸如上游、下游、streams 这样的概念都暗示着我们,“流”和“异步”之间有着某种关联。
你好,我是若地。通过前面课程的学习,我们已经知道 Netty 高性能的奥秘在于其 Reactor 线程模型。 EventLoop 是 Netty Reactor 线程模型的核心处理引擎,那么它是如何高效地实现事件循环和任务处理机制的呢?本节课我们就一起学习 EventLoop 的实现原理和最佳实践。
我们上一讲介绍了分片技术,它主要的目的是提高数据容量和性能。这一讲,我们将介绍分布式数据库另外一个重要根基:复制。
复制的主要目的是在几个不同的数据库节点上保留相同数据的副本,从而提供一种数据冗余。这份冗余的数据可以提高数据查询性能,而更重要的是保证数据库的可用性。
在上一课时中,我详细介绍了 ShardingSphere 与 JDBC 规范之间的兼容性关系,我们知道 ShardingSphere 对 JDBC 规范进行了重写,并嵌入了分片机制。基于这种兼容性,开发人员使用 ShardingSphere 时就像在使用 JDBC 规范所暴露的各个接口一样。这一课时,我们将讨论如何在业务系统中使用 ShardingSphere 的具体方式。
前段时间,团队有个同学在用 Serverless 实时处理日志时遇到了一个问题:每次处理结果都是相同的。后来问过我之后才发现是由于函数执行过程可能存在执行上下文重用,导致每次拉取到的都是同一份数据。归根究底是因为他对 Serverless 应用的运行原理理解得不够深入,而这也是很多刚开始学 Serverless 的同学经常遇到的共性问题,所以我准备了这节课,希望能让你有所收获。