201810-17 服务端I/O性能大比拼:Node、PHP、Java、Go 摘要:本文首先简单介绍了I/O相关的基础概念,然后横向比较了Node、PHP、Java、Go的I/O性能,并给出了选型建议。了解应用程序的输入/输出(I/O)模型能够更好的理解它在处理负载时理想情况与实际情况下的差异。也许你的应用程序很小,也无需支撑太高的负载,所以这方面需要考虑的东西还比较少。但是,随着应用程序流量负载的增加,使用错误的I/O模型可能会导致非常严重的后果。在本文中,我们将把Node、Java、Go和P... 继续阅读 >
201808-28 数据埋点太难!知乎的做法有何可借鉴之处? 埋点作为商业智能(BI)和人工智能(AI)体系中重要的一环,是公司提升产品工程质量、实施ABTesting、个性化推荐服务重要的数据来源。在传统的纯Web和Native开发的产品中,埋点从技术的角度来说未必多深奥,但从业务的角度来说要做到埋点设计规范、流程高效和保证质量却是很难。本文重点介绍一下知乎客户端的埋点模型、流程和平台技术。客户端埋点为什么难?Web端的埋点可以随着新代码上线即时生效,对版本... 继续阅读 >
201808-21 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践 “描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的行为,唯有一个形容词表现它的特征。要做的,就是用心去寻找那个名词、那个动词、那个形容词……”—— 福楼拜(GustaveFlaubert)我想讲个故事。很久很久以前(一般讲故事都是这样开头吧),两个老工程师在一起聊天,谈各自生涯中最自豪的工程。其中一个先讲述了他的杰作:“ 我们建... 继续阅读 >
201806-20 时序数据库技术体系 – Druid 多维查询之Bitmap索引 时序数据库从抽象语义上来说总体可以概括为两个方面的基本需求,一个方面是存储层面的基本需求:包括LSM写入模型保证写入性能、数据分级存储(最近2小时的数据存储在内存中,最近一天的数据存储在SSD中,一天以后的数据存储在HDD中)保证查询性能以及存储成本、数据按时间分区保证时间线查询性能。另一方面是查询层面的基本需求:包括基本的按时间线进行多个维度的原始数据查询、按时间线在多个维度进行聚合后的数据统计查询需... 继续阅读 >
201804-19 17 个成功案例,让你学会 MVP 最小可行性产品设计 编者按:在竞争日益激烈的世界里,创业公司需要比以往更快地将产品推向市场。最小可行的产品,也就是MVP,是实现这一目标的方法,但你必须能够提供正确的关键功能,这些关键功能需要与众不同且能够给用户创造价值。以便在推向市场之前吸引客户和投资者。RST收集了17个成功的MVP的例子,来展示创业公司在开发MVP的关键功能集时,应该关注什么。文章由36氪编译,希望能够为你带来启发。FacebookFacebook推出的所... 继续阅读 >
201804-19 携程图片服务架构 作者简介胡健,携程框架高级研发经理,目前负责多媒体服务的构建和研发工作。近些年携程业务突飞猛进,用户遍及世界各地。公司对用户体验也越来越重视,每一个小的功能改动、页面改版的背后,都有大量的A/B实验提供保障。与此同时,与用户体验息息相关的媒体文件的应用质量也被放到重要位置,如图片加载延时、成功率、清晰度等数据。本文将分享携程图片服务架构,包括服务架构的演变过程,以及在生产上实际遇到的... 继续阅读 >
201803-26 Nerv - 京东高性能前端框架 Nerv是一款由京东凹凸实验室打造的类React前端框架。目前已广泛运用在京东商城(JD.COM)核心业务及TOPLIFE全站。Nerv基于React标准,使用VirtualDom技术,拥有和React一致的API与生命周期,如果你已经对React使用非常熟悉,那么使用Nerv开发对你来说绝对是零学习成本。与此同时,相比于React以及市面其他同类型框架,Nerv更具体积轻量,性能高效的特点。并且,它符合当下国情,可以完美兼容IE8及... 继续阅读 >
201803-12 6 个新奇的编程方式,改变你对编码的认知 我时不时会发现一种编程语言的不同用法它有时候会改变我对编程的看法啊。这篇文章中,我想分享一下让我惊讶的发现。这不是类似于高呼“函数式编程会改变世界!”博客文章。我敢打赌,大多数读者都没有听说过下面的大多数语言和范例,所以你应该也会被这些新概念吸引。注意:我对以下大多数语言的使用经验都很少,但是我发现他们背后的想法非常吸引人,但对其没有专业知识,所以有任何错误请指出并指导更正。如果您也有新的... 继续阅读 >
201803-12 你想知道的2018年软件开发“10件事” 区块链、NLP、AI驱动的工具、机器学习、无服务器计算和devops创新将在2018年改变开发者的生活。开发人员应该对2018年的机遇感到兴奋,产品和工具围绕着诸如区块链、聊天机器人、无服务器功能和机器学习等技术在现实世界的项目中变得足够成熟。与此同时,许多开发人员会担心,在不影响安全性和性能的前提下,他们将无法更快地交付代码和功能。但这方面也有好消息。对于开发人员来说,2018年的定义是,在抓住转型新... 继续阅读 >
201802-23 一个函数的自白 我是——编程世界的函数,不是数学中的幂,指,对和三角函数等等,但是和f(x)又有着千丝万缕的关系。我是代码中的最小执行组织,但不是最小执行单元。最小的执行单元是一条条语句,这些语句有机地组合起来完成一个或多个功能并且可以复用,这才是我——函数。内存与堆栈和我之间是啥关系?有无参数的我有何异同?我的简洁性?复杂度如何评估?我的高阶与递归有啥区别?我的回调和匿名是一回事么?对象中的方法是... 继续阅读 >
201802-22 函数式编程简介 函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。–wiki例子一累加运算//sumList<Integer>nums=Arrays.asList(0,1,2,3,4,5,6,7,8,10);publicstaticIntegersum(List<Integer>nums){intresult=0;for(Integernum:nums){result+=num;}returnresult;}sum(nums);//->46同... 继续阅读 >
201801-02 OAuth 2.0 理解 OAuth是一个用于定于授权的开放标准,目前已经发展到了2.0的版本。它可以让用户允许第三方应用程序访问该用户存储在某一个网站或者系统上面的资源(比如照片,联系人)而不用提供密码给该第三方应用程序,并且还可以限制权限和有效期。OAuth做到了一下这两点:不需要将用户名和密码提供给第三方应用而是通过令牌让第三方应用访问资源每一个令牌授权一个特定的应用在特定的时段内访问特定的资源应用... 继续阅读 >
201712-20 GraphQL技术栈概览:如何将所有的功能组合起来 Facebook将GraphQL作为开源项目发布已经有两年的时间了。从那时算起,社区就以指数级的速度在增长,现在成千上万的公司在生产环境中使用GraphQL。在2017年10月举行的GraphQL峰会上,我非常荣幸地受邀在第二天演讲。读者可以在YouTube上观看完整的视频,也可以通过阅读本文对演讲有一个大致的了解(演讲的演示文稿可以在SlideShare站点下载——译者注)。首先,我会简要介绍一下GraphQL的现状,然后阐述它未来一段时间... 继续阅读 >
201712-11 函数式编程中的 “函数们” 函数式编程中函数有三种不同的解读方式,分别为纯函数、高阶函数和一等函数。本文分别对这三者的概念、应用和联系进行详解。纯函数定义:1.相同的输入必定产生相同的输出2.在计算的过程中,不会产生副作用满足上述两个条件,我们就说该函数是纯函数。纯函数也即数学意义上的函数,表达的是数据之间的转换(映射)关系,而非计算步骤的详述。数学函数的定义:函数通常由定义域X、值域Y,以及... 继续阅读 >
201711-30 Lens: 从入门到再次入门 类型补全计画从上一篇我们可以看出,Lens就是整合在一起的 Getter 和 Setter ,借助 set , over , view 这三个函数,我们可以分别使用Lens的 Getter 和 Setter 。但是我们目前的Lens类型定义并不是完整的,因此我们首先对Lens的类型进行补全。typeLenssa=Functorf=>(a->fa)->(s->fs)首先让我们看这样一个例子:... 继续阅读 >
201711-08 编程中的24条经典语录——戳中心房 1、不要看到别人的建议第一句话就说:给写个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。2、初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。3、看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。4、不要被对象、属... 继续阅读 >