JVM字节码执行引擎 发表于 2018-08-30 | 分类于 Java 我们所写的代码,经过编译器的处理,生成了class文件,而这些文件则会作为执行引擎的输入,最终输出代码的执行结果。 执行引擎在这里的角色就是解析指令并执行。 运行时栈帧结构栈帧是虚拟机栈中用于支持虚拟机进行方法调用与方法执行的数据结构,每一个方法调用都对应着一个栈帧。对于执行引擎来说,在活动的线程中 ... 阅读全文 »
Java多线程与JVM内存模型 发表于 2018-08-28 | 分类于 Java 基本概念线程维基百科:线程 竞争条件、临界区当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。在临界区中使用适当的同步就可以避免竞态条件。 同步线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程 ... 阅读全文 »
JVM类加载机制 发表于 2018-08-13 | 分类于 Java 概述从类被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期分为7个阶段,加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading)。其中验证、 ... 阅读全文 »
Class文件格式与字节码指令 发表于 2018-07-26 | 分类于 Java 概述Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,中间没有任何的分隔符。当遇到需要8位字节以上空间的数据项时,则会按照高位在前(大端序)的方式分割成若干个8位字节进行存储。 按照虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体 ... 阅读全文 »
浅谈JVM内存模型与垃圾回收 发表于 2018-07-10 | 分类于 Java 本文主要是阅读<<深入理解Java虚拟机>>前几章节的一些摘记与总结,由于本人并不从事JVM相关工作,因此摘录整理的都是一些较为简单的概念,以期对内存模型与垃圾回收有一个宏观的认识。 Java内存模型概述Java虚拟机在运行的时候会将它所管理的内存划分成若干个不同的数据区域, ... 阅读全文 »
APT与ButterKnife 发表于 2018-07-08 | 分类于 Android 本文主要介绍APT技术与ButterKnife的源码简析。 注解处理器(Annotation Processor)注解关于注解这里不做介绍,参考这篇文章:简单介绍 Java 中的注解 (Annotation) 注解处理器 如果你对注解有一定了解的话,应该知道我们在运行时(Runtime)获取注解信息 ... 阅读全文 »
聊一聊MVP 发表于 2018-07-02 | 分类于 Android MVP的简介基本架构在Android开发过程中,随着页面逻辑的越来越复杂,如果遵从MVC的模式进行开发的话,会导致Activity中的代码变得非常臃肿,增加维护的难度。为了将业务逻辑从Activity中剥离出来,引入了MVP模式。 相较于MVC模式,MVP剥离了View对Model的依赖,剥离了Ac ... 阅读全文 »
Android Window机制 发表于 2018-06-15 | 分类于 Android Window层级结构相关类简介这里只介绍与UI层级相关的功能。 Window:抽象类,定义了window视图布局的一些规则,如是否显示ActionBar之类。 PhoneWindow:Window的唯一实现类,与Activity一一对应,持有了具体的View对象,对外提供操作这些View的具体实现。 ... 阅读全文 »
常用设计模式 发表于 2018-05-08 | 分类于 计算机基础 OOP基本设计原则 单一职责原则(Single Responsibility Principle(SRP)),尽量保持类的功能单一。 里氏替换原则(Liskov Substitution Principle) 里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以 ... 阅读全文 »
DES算法详解 发表于 2018-05-07 | 分类于 计算机基础 基本概念对称加密对称加密指的是在加密和解密过程中都使用同一个秘钥,相对于非对称加密(加解密使用不同的秘钥),加解密速度更快。 分组加密由于DES等算法的秘钥长度是定长的,并且单次加解密的明文(密文)只能等于秘钥长度,因此会对明文(密文)先做分块处理,然后逐块加解密。具体的分组加密实现中,不一定会对每 ... 阅读全文 »