编程语言漫谈

写在前边:我们知道现有语言的编程范式有:过程式,面向对象,函数式,逻辑式。随着软件工业化程度的普及,以及软件的复杂度越来越高,编程语言的发展历程也是从最初的过程式(命令式)语言c,发展到以java语言为代表的面向对象编程语言。而逻辑编程语言(以prolog为代表)和函数式语言(lisp系列)还多用在学术和人工智能领域中。近几年,随着多核,云计算时代的到来。函数式编程语言逐渐浮出水面,最经典的语言以scheme,common-lisp,ml,clojure,…

Read More

有赞统一日志平台初探

【编者的话】从2015年初入职有赞以来,一直致力于后端服务开发,主要设计开发了监控系统Hawk,但这不是本次要分享的点。一个月前,负责日志平台Track的小伙伴寻求梦想出去创业了,有幸接手了日志平台,这对本人确实是个不小的挑战,也同样是个学习成长的机会。此次就借着梳理日志平台的机会,给大家分享一下有赞统一日志平台的架构设计。 一、引言 自有赞成立以来,发展迅猛,业务增长很快,业务系统数量大,每天都会产生大量的系统日志和业务日志(据统计,平均每秒产生日志1.1万条,峰值1.5万条,每天的日志量约9亿条,…

Read More

有赞APP IM SDK 组件架构设计

本文主要以Android客户端为例,记录了有赞旗下 App 中使用自研 IM SDK 设计思路,由有赞移动开发组 IM SDK 团队共同讨论完成。 背景 设计目标 整体结构 设计要点 Socket长连接的创建与维护 消息发送流程 消息接收流程 可定制化的UI UIKit设计 UIKit 支持的富媒体类型 UI 中聊天会话数据加载策略 设计不足之处…

Read More

有赞延迟队列设计

延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢? 背景 我们先看看以下业务场景: 当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存? 如何定期检查处于退款状态的订单是否已经退款成功? 新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?等等 为了解决以上问题,最简单直接的办法就是定时去扫表。每个业务都要维护一个自己的扫表逻辑。 当业务越来越多时,我们会发现扫表部分的逻辑会非常类似。我们可以考虑将这部分逻辑从具体的业务逻辑里面抽出来,变成一个公共的部分。 那么开源界是否已有现成的方案呢?答案是肯定的。Beanstalkd(…

Read More

JavaScript 类型的那些事

概述 JavaScript的类型判断是前端工程师们每天代码中必备的部分,每天肯定会写上个很多遍if (a === 'xxx')或if (typeof a === 'object')类似的类型判断语句,所以掌握JavaScript中类型判断也是前端必备技能,以下会从JavaScript的类型,类型判断以及一些内部实现来让你深入了解JavaScript类型的那些事。 类型 JavaScript中类型主要包括了primitive和object类型,其中primitive类型包括了:null、undefined、boolean、number、string和symbol(es6)。其他所有的都为object类型。 类型判断 类型检测主要包括了:…

Read More