Hadoop(2):单机Hadoop环境安装

作为一个从来没接触过大数据的小白,从0开始来学习一下Hadoop。首先是安装环境,官网给出了几种方式:

  • Local (Standalone) Mode: 单机版的模式,运行在一个JVM进程
  • Pseudo-Distributed Mode: 伪分布式模式,运行多个JVM进程来模拟分布式的环境
  • Fully-Distributed Mode: 完全分布式部署在多台机器上

当然最理想的当然是真实的分布式部署了,在进行分布式部署之前,先来简单的单机版本部署一下,以便熟悉一下Hadoop相关的概念。

[阅读更多...]
C#异步编程(1):并发的实现基础

从Java技术栈迁移到C#,一个最直观的不同是C#对异步编程的语法层面的支持:async/await。在此之前,我也在Javascript以及Dart等语言中使用过类似的功能,以至于我一度想当然地认为async/await是Javascript最先发明的;但当我去追根溯源的时候才发现这其实C#几乎是最早开始引入的(2012年的时候C# 5.0中正式引入),比Javascript(ECMAScript 2017)整整领先了5年。不得不佩服,虽然没有很火,但是微软的技术前瞻性的确是做的很好的。

那异步编程到底是什么呢?我没有找到一个完全准确的释义,但是要解释清楚还是比较容易的:

  • 程序执行无序等待一个任务的完成(比如I/O操作)
  • 可以并发地执行多个任务

实际上,并发也即意味着任务之间不需要串行等待。我的理解是,异步编程的核心就是优雅的实现“并发”。

[阅读更多...]
Jer语言(1):语法设计

最近准备实现一个基于JVM的新语言"Jer",一开始想先实现一个Hello world,然后逐步再朝上面添加新的功能;后来觉得还是需要先把这个语言的语法层面大致设计好再动手才行。本身是出于好玩的一个目的,但是也的确希望这个语言有一些特点,而不是单纯换一个语法而已。在这个期间思考了很多,但一直没有想到自己满意的方法,姑且先按照现在的想法设计一版出来吧。

[阅读更多...]
Microservice中的安全策略

最近在思考微服务中的安全问题,在读Chris Richardson的文章的时候,发现自己对微服务有了一些新的认识和理解:p。

如图所示是一个典型的微服务架构:

Problem

这个架构下有如下的需求场景:

  • 不同的APP会消费微服务,通常需求会有差别
  • 有些微服务还会希望暴露给第三方的系统进行消费
  • 具体的服务通常在设计API的时候会尽量考虑通用,但是实际消费服务的时候并不能完全满足需求,还需要二次加工,或者将多个服务的调用进行组合。
[阅读更多...]
使用OpenID Connect进行用户认证

OAuth2作为一个广泛使用的授权标准,已经基本上普及了,但是其协议本身是比较复杂的,如果不仔细研究还是会一知半解。一个常见的错误用法就是用OAuth2来进行认证(Authentication)。OAuth2不是为解决认证的问题的协议,也没有定义认证的流程;但是,在OAuth2的基础上,加以扩展得到的OpenID Connect确是为解决这个问题而生的。 [阅读更多...]