用麦肯锡7步法做战略

战略就是根据战况做出的一系列选择。好的战略就是,情况看得清清楚楚,方向选得有道理、能解决问题,措施定得抓重点、能落地。

简单介绍一下麦肯锡 7s 模型:7s 模型指出了企业在发展过程中必须全面地考虑各方面的情况,包括结构(Structure)、制度(Systems)、风格(Style)、员工(Staff)、技能(Skills)、战略(Strategy)、共同价值观(Shared Values)。本文主要是讲如何通过 7 个步骤制定战略,和 7s 模型关系倒不是很大,所以就不展开了。

阅读更多

Flink:新一代流式计算引擎概述

注:本文会持续补充。

背景介绍

Apache Flink 是德国柏林工业大学的几个博士生和研究生从学校开始做起来的项目,早期叫做 Stratosphere。刚开始,Flink 是做 Batch 计算的,但是在2014年,StratoSphere 里面的核心成员孵化出 Flink,同年将Flink 捐赠 Apache 基金会,并在后来成为 Apache 的顶级大数据项目,同时Flink计算的主流方向被定位为 Streaming,即用流式计算来做所有大数据的计算,这就是Flink技术诞生的背景。

Flink 是什么?一句话介绍就是:Flink 是一个低延迟、高吞吐、统一的大数据计算引擎。

阅读更多

Java 中 Null 的设计并不是一个错误

我使用 Java 开发项目很多年了,了解如何用它来开发大型的项目。在工业界,我看到大家做了很多努力来规避 NullPointerException(NPE),对其胆战心惊。NPE 的发明人 Tony Hoare 在 2009年承认:「null 引用的设计是一个十亿美元的错误」。

我把 null 引用称为自己的十亿美元错误。它的发明是在1965 年,那时我用一个面向对象语言( ALGOL W )设计了第一个全面的引用类型系统。我的目的是确保所有引用的使用都是绝对安全的,编译器会自动进行检查。但是我未能抵御住诱惑,加入了null引用,仅仅是因为实现起来非常容易。它导致了数不清的错误、漏洞和系统崩溃,可能在之后 40 年中造成了十亿美元的损失。近年来,大家开始使用各种程序分析程序,比如微软的 PREfix 和 PREfast 来检查引用,如果存在为非 null 的风险时就提出警告。更新的程序设计语言比如 Spec# 已经引入了非 null 引用的声明。这正是我在1965年拒绝的解决方案。” —— 《Null References: The Billion Dollar Mistake》托尼·霍尔(Tony Hoare),图灵奖得主。

阅读更多

合理使用设计模式

半吊子水平的设计模式理解 + 糟糕的抽象 + 多重继承 = 灾难。

最近接触很多项目,深感设计模式给项目带来的痛苦,比如:

  1. 不必要的接口。
  2. 不必要的池化。

首先是接口。设计合理的接口对程序员的能力要求很高,这需要很完备的顶层设计,建模能力、前瞻能力都需有。可我在现实中看到更多的是:接口更多被用来当做表征 feature 了(虽然这也是接口表达的初衷),不管什么业务类,都会先去做如下定义:

阅读更多

重新上路

好久没有发文章了,原因很简单:最近的工作、生活都有了一些变化,时间上不允许。此外,公司电脑对数据管控较严格,所以就打算在自己的电脑上写文章了。

买了自己的电脑后,第一件事就是搭建好了 hexo 静态博客。由于之前我的博客信息都是用 Onedrive 同步的,因此在新的电脑上恢复站点不熟、静态博客环境也非常简单。简单记录下:

  1. 安装好 nodejshexo 等基础环境;
  2. 使用 hexo init 初始化一个空的文件夹;
  3. 拷贝之前 Blog 下的所有文件到 2 中的文件夹中,选择覆盖,注意,隐藏的文件也需要拷贝;
  4. 如有报错,如 node xxx 找不到等,可以删除 node_modules 文件夹,然后 npm install 重新安装。

从今天开始,就要继续写啦~

遥远的相似性

Gremlin 图查询概述

图数据库基本概念

图形数据库是 NoSQL 数据库的一种类型,它应用图形理论存储实体之间的关系信息。最常见的例子,就是社会网络中人与人之间的关系。关系型数据库用于存储关系型数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。 Google的图形计算系统名为 Pregel。

目前主流的图数据库有:Neo4j,FlockDB,GraphDB,InfiniteGraph,Titan,JanusGraph,Pregel等。

下面介绍几个图数据库中的几个基本概念:

  • RDF:RDF(Resource Description Framework),即资源描述框架,其本质是一个数据模型(Data Model)。它提供了一个统一的标准,用于描述实体/资源。简单来说,就是表示事物的一种方法和手段。RDF 形式上表示为 SPO 三元组,有时候也称为一条语句(statement),知识图谱中我们也称其为一条知识。RDF 由节点和边组成,节点表示实体/资源、属性,边则表示了实体和实体之间的关系以及实体和属性的关系。RDF 没有外键和主键,它使用的是 URI,万维网的标准引用格式。通过 URI,一个三元组库可以直接链接到任何三元组库的其他任何数据。
阅读更多

《月亮与六便士》读书笔记

记得初中的时候就看到过这本书,一直没有读过,书名也没有让人读下去的欲望,十几年过去了,在这个惬意的午后,画了几个小时拜读了此书。

读完了后,触动是有一些的,譬如作者对「心中的故土」的描述,让我心有戚戚然。抛开个人情感和道德情感,斯特克利兰这个主人公还是被塑造的挺好的,追求梦想,内心坚定。

「理想」这两个字眼带着光芒。可我是个俗人,我依旧无法超脱于另外一些词语给我带来的温暖:责任、家庭、爱情。有的人愿意过着平平淡淡,按部就班的安稳生活;有的人乐于冒险,不甘平凡。这些都没关系,这都取决于你如何看待生活的意义。

不喜欢斯特克利兰的原型高更,同时毛姆在这本书里,自始至终流露出的对女性价值的评判,我也非常讨厌。

阅读更多

Gremlin 常用语法总结

Gremlin是 Apache TinkerPop 框架下的图遍历语言。Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图(property graph)的遍历或查询。每个Gremlin遍历由一系列步骤(可能存在嵌套)组成,每一步都在数据流(data stream)上执行一个原子操作。

Gremlin 语言包括三个基本的操作:

  • map-step:对数据流中的对象进行转换;
  • filter-step:对数据流中的对象就行过滤;
  • sideEffect-step:对数据流进行计算统计;
阅读更多

Serverless最佳实践

好久没有系统性地翻译文章了,最近看到这篇 Serverless Best Practices 感觉还不错,就尝试一下,翻译完这一篇后的感受是:阅读和翻译是两码事~~~

原文链接:Serverless Best Practices

在社区里(译者注:Medium),「最佳实践」已经被我们讨论很多年了,但在过去的时间里,只有很少一部分被我们接受。

绝大多数关注这些实践的 Serverless 从业者都在工作中使用了可伸缩的软件架构。Serverless 承诺在伸缩性和突发性的工作负载上发挥作用,所以很多的「最佳实践」是从「可伸缩」的角度来描述的。例如,零售业里的 Nordstrom(译者注:一家美国的高档连锁百货店)、IoT 中的 iRobot(译者注:一种扫地机器人)。如果你的目标不是应用可伸缩,那么你其实无需遵循这些「最佳实践」。

阅读更多

:D 一言句子获取中...