October 17, 2018

记一次线上问题排查

1. 背景

先介绍下背景。

在滴滴,服务部署在弹性云上面。弹性云是一种动态可伸缩的服务器,底层是通过docker的方式创建的虚拟机而不是物理机。

本次发布的应用Maybach共五台机器,分为3批发布,第一批和第二批各一台机器,第三批3台机器。

2. 现象描述

14:34分开始发布第一批机器,14:35第一批机器部署成功。

14:45发布第二批机器,14:46发布成功。

登录已经发布的两台线上机器查看,服务正常运行(进程还在),且能正常打印请求log(能正常接收服务),调用方无明显异常,业务数据无明显异常,无业务监控报警。

14:58发布最后一批机器。

14:59第三台(最后一批第一......

September 09, 2018

时间波之时间裂缝说

这是09年上大一的时候无聊写的一篇文章,备份于此。

题记:伟大的发现往往需要天马行空的想象力。

  一直以来,我都在思考一个问题:时间到底是什么?(即时间的本质是什么?)时间从何而来?消失的时间又到哪里去了?时间有哪些内在的性质。这个问题很难,困扰了我很长的一段时间。在这段时间里,苦思不得,搞得我心神不宁。终于,突然的灵光一闪,让我的大脑异常清晰,思路豁然开朗,初步形成了“时间波”(姑且称之为“时间波”,这也是个人看法)这个概念。

  众所周知,光也是一种波,我想时间会不会也是一种特殊的未知的波呢?按照这个设想一直往下推理,我得出了我的看法:时间也是一种特殊的波,这种波具有“波物二像性”......

September 09, 2018

Thrift源码学习(一)

1. 前言

前段时间接手的优惠券的项目是以Thrift RPC的形式对外提供服务的,这是第一次真正接触并使用Thrift,在此之前对于Thrift的了解仅限于"听过"。作为一个喜欢刨根究底的程序员,周末花了两天时间好好地研究了下Thrift的实现(仅限于Thrift的Java SDK,对于Thrift Compiler,下次有时间在研究),这系列博客就是自己学习的总结吧。

2. What

Thrift是一种语言无关的RPC框架,它通过一个中间语言IDL(接口定义语言),在扩展名为.thrift的文件中定义服务类型和服务接口,然后通过Thrift Compiler......

July 15, 2018

Quartz分享

1. What

1. 简单介绍

Quartz是由OpenSymphony公司开源的一个定时任务调度框架,完全由Java开发。有以下的特点:

强大的调度功能。支持丰富多样的调度方法,可以满足各种常规及特殊需求。

灵活的应用方式。支持任务和调度的多种组合方式,支持调度数据的多种存储方式。

分布式和集群能力。

容易与其他框架集成,使用简单。

Quartz支持几乎以下所有的触发方式

在一天中的任意时刻(可以精确到毫秒)。

一周中特定的一些天。

一个月中特定的一些天。

一年中特定的一些天。

不在日历列表中注册的一些天(比如节假日)。

循环特定的次数。

无限循环。

按照一定的时间间隔循......

April 21, 2018

Java8收集器学习

·收集器是一种通用的,从流生成复杂值的结构。只需要把生成器作为参数传给collect()方法,任何流都可以使用它。

Java8中所有的收集器都是位于java.util.stream.Collectors这个包下面。

转换成其他集合

Collectors.toList()收集器把流中数据转换成List对象。

Collectors.toSet()收集器把流中数据转换成Set对象。

Collectors.toCollection()收集器把流中数据转换成Collection对象。

toCollection()收集器可以接受一个函数作为参数,用来指定生成的集合类型。比如指定生成的集合是TreeS......