程序设计中的基本设计原则

程序设计中的基本设计原则

在编写一个系统的时候,我们总是希望我们的系统在设计上具备较好的可维护性和可扩展性,从而当客户需求有变,或者需要增加新功能时,能够从容应对,而一些前人总结的设计原则可以让我们在遇到这样的情况时候,不至于被动,从而能够以竟可能小的工作量来...

利用享元模式解决内存大量细粒度对象

利用享元模式解决内存大量细粒度对象

最近在看之前一个自己写的项目代码的时候,发现之前构造的责任链像个楼梯台阶一样的堆在那里,很是影响代码的美观性,并且一条链上的七、八个对象在每次请求时都需要创建一遍,对于一个高并发的项目来说,是一笔不小的开销,于是想对这一块的代码进行优...

在小米:生态链论坛技术分享与交流

在小米:生态链论坛技术分享与交流

这两天由小米云平台、生态链,以及谷仓学院联合主办的首届 “小米生态链开发者论坛” 在北京举行,30 余家来自全国各地的小米生态链企业的百余名技术负责人和工程师参加了这场小米史上首次技术论坛,很荣幸自己有机会以讲师的身份去参与到这次论坛...

OAuth 2.0 协议原理与实现:token 生成策略

OAuth 2.0 协议原理与实现:token 生成策略

OAuth2.0 协议定义了授权详细流程,并最终以 token 的形式作为用户授权的凭证下发给客户端,客户端后续可以带着 token 去请求资源服务器,获取 token 权限范围内的用户资源。 对于 token 的描述,OAuth 2...

OAuth 2.0 协议原理与实现:协议原理

OAuth 2.0 协议原理与实现:协议原理

OAuth 2.0 协议是一种三方授权协议,目前大部分的第三方登录与授权都是基于该协议的标准或改进实现。OAuth 1.0 的标准在 2007 年发布,2.0 的标准则在 2011 年发布,其中 2.0 的标准取消所有 token 的...

在小米:最佳新人奖

在小米:最佳新人奖

不知不觉已经走出校园,踏上工作岗位 7 个多月,拥抱变化之后,在所有 offer 里面义无反顾地选择了小米,并在众多部门里面选择了云服务部门,小米的招聘还是比较人性化的,拿到 offer 之后,可以选择去任何一个自己喜欢的部门。 一些...

探秘JVM:方法解析与分派调用

探秘JVM:方法解析与分派调用

在不同的虚拟机实现中,执行引擎在执行 java 代码时可能会有 解释执行(通过解释器执行)和 编译执行(通过 JIT 生成本地代码执行)两种选择,也可能是二者兼备,但不管采用哪种方式执行,当我们调用一个方法的时候,都需要确定我们调用方...

探秘JVM:类加载机制

探秘JVM:类加载机制

JVM 的类加载机制描述了类数据从字节码文件加载到内存,并对其进行校验、解析、初始化、直至成为能够被 JVM 直接使用的 java 数据类型的过程。 类的整个生命周期包括: 加载、连接(验证、准备、解析)、初始化、使用、卸载 5 个阶...

探秘JVM:垃圾收集与内存分配策略

探秘JVM:垃圾收集与内存分配策略

JVM 中的程序计数器、java 虚拟机栈、本地方法区属于线程私有,其生命周期控制在线程生命周期范围之内,并且 java 虚拟机栈和本地方法区则随着栈帧的出栈入栈由生到灭,所以这些区域的内存使用是确定性的(编译期已知),而 java ...

探秘JVM:运行时数据区域

探秘JVM:运行时数据区域

JVM 内存区域从概念模型上主要分为 堆、方法区、java 虚拟机栈、本地方法栈、程序计数器 五大模块,其中前两者属于线程共享,而后三者属于线程私有,如下图: 一. 线程共享区域1.1 方法区 调整指令:-XX:PermSiz...