Posts

Showing posts from 2016

JVM architecture介绍

Image
by Jiaming What is JVM? A Java virtual machine (JVM) is an abstract computing machine that enables a computer to run a Java program. 开始前先理清楚涉及 JVM 三个层面的概念: Specification: 对 JVM 的定义, architecture 的设计   Implementation: JVM中 具体的算法实现,比如 Garbage collection 算法具体实现 (Implementation of JVM 也被称为 JRE, java runtime environment) Instance: 执行JAVA程序的 JVM 实例 , 其生命周期随着JAVA程序的开始而开始,也随着JAVA程序的结束而结束,每个JAVA程序都各自在一个JVM instance里面运行, 但是一个JAVA程序如果有multithread, 只会在一个Instance里面运行。 这篇文章主要关注的是 Specification, 即是architecture上的设计,希望通过理解JVM去了解一个JAVA程序是怎么被执行的, 从而更深层次地理解JAVA语言的特点。以后有机会还会继续细讲JVM各个部分是如何别实现的。 JVM主要的功能: Loads code Verifies code Executes code Provides runtime environment JVM 还对以下成分做了定义 Memory area Class file format Register set Garbage-collected heap Fatal error reporting etc. 假设我们现在有app.java这个程序要运行,那么具体的流程到底是怎么样的呢? 我们会先运行 javac app.java, 然后这个程序会被编译,产生了app.class这个file, 1. 这是一个简化的流程: class loader 先将开发者编译的 app.class 和基本的 .class 文件 load 到 RAM 里面,...

OAuth Authorization介绍

Image
By Jiaming 简介 What is OAuth? OAuth is an authentication  protocol  that allows users approve application to act on their behalf  without sharing their password.                                                         ——  cited from https://dev.twitter.com/oauth/overview/faq 打个比方, 比较具体的例子 是用T witter/Google 的账号去登陆别的平台,以及授权别的 App 去 access 用户 twitter 上的 data 。 主要特点: (1).  简单:不管是 OAuth 服务提供者还是应用开发者,都很易于理解与使用; (2).  安全:没有涉及到用户密钥等信息,更安全更灵活; (3).  开放:任何服务提供商都可以实现 OAuth ,任何软件开发商都可以使用 OAuth ; 这是OAuth的一个应用 (图一与图二为连续的过程) 当用户选择用 Google 账户登录时, 会被 redirect 到以下的框,选择具体的 账户以及登陆 此过程中, Quora 为 Consumer, Google/Facebook/Twitter 都为 Provider,  用户为 user.  用户希望用 Google/Facebook/Twitter 的账号去登陆 Quora,  此时这些 Users 无需向 Quora 提供密码,而 Provider 会向 Quora 提供一些用户的基本信息,比如说名字,性别,账号名等基本信息。 OAu...