博客导读 对博客内的文章提供快速入口,按照分类进行查看。 其中主要涉及了以下几大模块 Android学习路线Android高级进阶 Android需要的必备知识 计算机网络相关HTTP的原理和工作机制 HTTP的原理和工作机制 TCP/IP协议相关 TCP/IP协议相关 JVM相关JVM相关合集整理 JVM相关合集整理 JVM内存区域 JVM相关及其拓展(一)-- JVM内存区域 类 2019-03-14 #目录
Activity,Window,View的关联与理解 Activity,Window,View相关 1. 什么是Activity,Window,View以及职能简介 Activity:不负责视图控制,只是控制生命周期和处理事件,真正控制视图的是Window,一个Activity包含一个Window,Window真正代表一个窗口。Activity是一个控制器,控制视图的添加与显示以及通过回调方法来进行Window与View的交互。 Window:Wi 2018-04-01 #Android
Activity启动过程 下列源码分析是基于 Android 8.0源码 Activity的启动过程分为两种: 根Activity的启动过程 - 指代根Actiivty的启动过程也可以认为是应用程序的启动过程 普通Activity的启动过程 - 除启动应用程序启动的第一个Activity之外Activity的启动过程 根Activity启动过程 点击桌面的应用程序图标就是启动根Activity的入口, 2019-01-02 #Android
Android-Binder分析 Linux传统的进程间通信原理 进程隔离 保护系统中进程互不干扰。在操作系统中,进程之间数据是不互通的,相互之间无法访问数据,保证数据的安全星。 在进程隔离的条件下,需要通过IPC(Inter Process Communication)机制进行进程间的通信。 进程空间划分 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间以及底层的硬件设备。 为了使用户进程不能操作内核 2026-02-16 #Android
IPC机制 IPC机制 IPC是Inter-Process Communication的缩写。含义为进程间通信或者跨进程通信,指代两个进程间进行数据交换的过程、 还需要理解进程以及线程的区别和联系 进程:一般指一个执行单元,在设备上一般代指应用程序。 线程:CPU调度的最小单元且线程是有限资源。 一个进程可以包含多个线程,即一个应用内部可以执行多个任务。在Android中就会区分为主线程(UI线程)和 2018-12-11 #Android
Flutter学习大纲 Flutter是Google全新推出的跨平台应用开发框架,主打跨平台、高保真、高性能,需要通过Dart语言进行开发App,编写完成后即可实现 一套代码运行多个平台,目前只是支持了Android及iOS平台,后续还会拓展到PC上。 整套学习大纲会按照由表及里,由简到难的过程进行深入的学习Flutter。 搭建开发环境 新建一个Flutter应用 Dart语言相关 基础部件 Widg 2019-04-01 #Flutter学习笔记
Glide源码解析要点 该源码解析是基于最新的Glide 4.8.0进行的 Glide基本流程分析Glide的基本使用代码 1Glide.with(context).load($img$).apply(RequestOptions().transform(MultiTransformation(CenterCrop(),CircleCrop())).placeholder(R.drawable.ic_defaul 2018-03-18 #源码解析
数据结构--HashMap实现原理及解析 HashMap定义HashMap是基于Map接口实现的一种键-值对<key,value>的存储结构。内部允许null值,同时非有序,非同步(线程不安全)。它存储和查找数据时,是根据key的hashcode计算出具体的存储位置。内部最多允许一条记录的key为null。 HashMap的底层实现是数组+链表+红黑树(Java 8新增的)。 数组是HashMap的主 2018-05-09 #数据结构 #Java源码
JVM相关及其拓展(七) — 线程安全与锁优化 线程安全与锁优化 首先需要并发的正确性,然后在此基础上实现高效。 线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 线程安全的代码必须具备一个特征:代码本身封装了所有必要的正确保障性手段,令调用者无需关心多线程的问题,更无须自己采 2018-12-19 #JVM
JVM相关及其拓展(六) -- Java与线程 Java与线程线程的实现线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程间既可以共享进程资源,又可以独立调度(线程是CPU调度的基本单位)。 实现线程主要有三种方式: 使用内核线程实现 直接由操作系统内核支持的线程。 由内核来完成切换,内核通过操纵调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。 多线程内核:有能力处理多件事情,支持多线 2018-12-18 #JVM
JVM相关及其拓展(五) -- Java内存模型 Java内存模型 屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到的一致的内存访问效果。 主要目标: 定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。变量包括了实例字段、静态字段和构成对象的元素,但不包括局部变量和方法参数(他们为线程私有,不被共享)。 主内存与工作内存 Java内存模型规定了所有的变量都存储在主内存 2018-05-09 #JVM
JVM相关及其拓展(八) — 静态分派&动态分派 方法调用方法调用不同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法)。 解析 调用目标在代码程序写好、编译器进行编译时就必须确定下来。 在Java语言中符合“编译期可知,运行期不可变”这个要求的方法,主要包括静态方法和私有方法两大类。前者与类型直接关联,后者在外部不可访问,这两种方法各自的特点决定了它们都不可能通过继承或别的方式重写其他版本,因此它们都适合在类加载阶 2019-02-21 #JVM
JVM相关及其拓展(一)-- JVM内存区域 1. JVM内存区域 JVM在执行Java程序的过程中会把管理的内存分为若干个数据局域。 程序计数器(Program Counter Register):一块较小的内存空间,可看作为当前线程所执行的字节码的行号指示器。每条线程都需要一个独立的程序计数器,所以为线程私有区域。没有规定任何OutOfMemoryError情况的区域。线程执行Java方法,则记录正在执行的虚拟机字节码指令地址,若为Na 2018-04-10 #JVM
JVM相关及其拓展(二) -- 虚拟机类加载机制 虚拟机类加载机制1.定义虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 2.类的生命周期 类从被加载到虚拟机内存中开始,到卸载除内存为止,生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用 2018-04-12 #JVM