有意思的增量计算算法

问题场景 假设有一张表(user_info),其数据结构如下 last_login_time记录的是每个用户最后一次登录时间。现在有这样一组标签"1天内","1~3天","3天以上"来描述用户登录日期和当前日期之间的差值,且为了保证查询的效率,需要将每个用户的登录标签提前计算出来并存储,方便前端高效查询,存储的表(user_tag)结构为 请问该如何实现。 普通的方式 每天将每个用户的最后登录日期和今天进行比较,计算出其登录标签,sql伪代码如下: »

我看锤子手机

最新的锤子坚果PRO发布了。也像往常一样看了发布会,但同往常不一样的是,我没能坚持把发布会看完。我开始对锤子手机和老罗有了一些厌倦。要知道,我曾经很是欣赏老罗,甚至跟很多人安利过老罗。可是为什么,在锤子可能发布了有史以来综合实力最好的产品之际,我开始感到厌倦? 五年前,老罗开始踏足手机领域,在这之初,其言行高调,对其它手机品牌的工业设计和人机交互进行了诸多批判,结合他之前已经给自己塑造的形象。似乎传递出,他能制造改变世界,或者起码给这个世界带来一点惊喜的产品。我对这点满怀期待,甚至深信不疑。 最新的坚果PRO,从外观和综合实力上来看,这基本就是锤子五年来最优秀的手机。但老罗偏执的采用方正设计, »

读《万历十五年》

万历十五年,也即1587年。这一年在同整个万里朝的其它年份比起来算是稀松平常的一年。但是黄仁宇先生通过对这一年的前后事件串联,试图说明明帝国的衰败已无可避免。 背景 首先我们的国家幅员辽阔,在统治技术简陋无力时,历朝历代为了维持帝国的统治,便求助于基于儒学的传统道德来约束整个社会,而道德本身并不足以弥补技术上的拙劣。而明朝洪武开国定下财政,资源分配政策,更是让明帝国在中后期对整个国家统筹管理上乏力。洪武制定的粮饷不必全部上缴中央,就近送往各地政府单位开销,虽然其目的是出于减少资源集中到再分派过程的运输损耗,节省运力,但这种收支没有两条线(我party就做的很好)分开的做法。在国家一旦遭遇战争或瘟疫时,很难集中力量办大事(好熟悉的味道) 到了万历朝时,文官集团趋于成熟。 »

为什么单元测试很重要

单元测试对程序员不陌生,可是对很多程序员来说,并不太喜欢写单元测试,感觉不是业务代码,又要做数据初始化,又要做数据清理,显得较为麻烦。毋庸置疑单元测试是重要的,尤其是可重复执行的单元测试,甚至早些年还有一些极端的公司践行着测试驱动开发的软件开发模式,但这份重要不见得每个程序员都认识,我就遇到过同事反问我,写单元测试有什么用?基于我自己的程序经验,我觉得有有以下几点进行阐述 白盒测试 大多数测试人员只只能做黑盒测试,但单元测试能更好的做白盒测试,因为代码就是你写的,你理应更清楚其逻辑和风险,从而在单元测试中进行测试。 节省开发时间 是的,你满以为不写单元测试,就是节约时间。但bug是守恒的, »

微服务的注册与发现

一、服务注册中心 Service Register 由于服务的的众多,且服务本身变更可能频繁。所以典型的分布式服务,需要一个服务注册中心来作为服务调用方和服务提供方之间的桥梁。 注册中心像一个数据库,存储了当前的可用服务。注册中心需提供API,供服务端注册、更新服务到注册中心,供客户端查询可用服务。 可用框架: etcd consul Apache Zookeeper 二、服务的注册 服务自己注册到注册中心 服务端自己发起注册,将自己的信息注册到注册中心。 优点 实现简单 »

跨域请求之JSONP

前言 由于安全原因,浏览器会限制脚本发起跨站请求,是为浏览器的同源策略。而有时我们又需要跨站请求,比如一个大型网站多个域名之间的信息协同共享。在不违反同源策略的前提下,大概有CORS,JSONP,Proxy Server等技术达到跨站请求的目的。前面我介绍了CORS,它是W3C推荐跨站请求方式,也更安全。这篇文章主要介绍JSONP。 什么是JSONP JSONP全称(JSON with Padding),是一种基于html中<script>标签实现跨域请求的技术。 为了方便全文举例说明, »