Integer

IntegerCache

为什么 127 == 127 会返回为 True,而 128 == 128 返回为 False?

Read more

Idea 读取 Java 源码

前记

如果需要读 Java 源码,默认点查看读的是 Idea 反编译的文件,没有注释,参数名也被简化了。

所以如果需要更好的读源码,需要添加 src.zip 源码包。

官网下载

从搜索结果看,都说是直接添加 JDK 目录下的 src.zip,但是我的 JDK8 怎么都找不到。只好去官网下载整个 JDK,然后拿出我想要的源码包。

JDK8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

里面有 src.zip 源码包,放到 JDK 目录下。

如果 Idea 读取的 SDK 就是你当前使用的 JDK 版本,它会自动帮你添加。

File => Project Structure => SDKs,将 JDK 设置成刚才的 JDK 目录。

OAuth2 SSO

前记

单点登录(Single Sign On)严格上来说和 OAuth2 没太大关系,只是 SSO 可以通过 OAuth2 实现。本文延续 OAuth2 初识的模式,看完原理写 Demo,在上一个 Demo 的基础上加以改造。

认证中心仍然是 QQ,然后子系统是 QQ 邮箱 + QQ 游戏,两个子系统除了配置上有少许差别外,基本一样。

代码:GitHub

原理参考单点登录原理,内容上有删改。

前提知识:

  • session 和 cookie 的使用
Read more

OAuth2 初识

前记

OAuth2 可以方便第三方应用获取用户在其他应用的信息。

比如用 QQ 账户登录优酷,优酷就会先让用户登录 QQ,然后让用户确认授权优酷访问 QQ 上的信息,确认后优酷就获得了 QQ 的 OAuth 服务器返回的 token,之后就可以通过 token 访问到权力范围内的用户相关信息。

Read more

Autowired 和 Resource 区别

共同点:装配 Bean,写在字段或 setter 方法上。

@Autowired

Spring 的注解,来自 org.springframework.beans.factory.annotation.Autowired

默认按类型装配,也可以使用名称装配,但要配合 @Qualifier 注解。

依赖对象必须存在,如果要允许 null 值,可以设置 @Autowired(required=false)

Read more

SpringCloud 笔记7

前记

上两章粗略的使用了配置中心和客户端,这一章将开始使用服务链路追踪(SpringCloud Sleuth)。

服务追踪分析

微服务架构上通过业务来划分服务,通过 REST 调用,对外暴露一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。

链路调用1

随着服务的越来越多,对调用链的分析会越来越复杂。它们之间的调用关系也许如下:

链路调用2

Read more

SpringCloud 笔记8

前记

一开始我们就创建了一个注册中心,但是当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这章将把 Eureka Server 集群化。

Read more