博客导读 对博客内的文章提供快速入口,按照分类进行查看。 其中主要涉及了以下几大模块 Android学习路线Android高级进阶 计算机网络相关HTTP的原理和工作机制 HTTP的原理和工作机制 TCP/IP协议相关 TCP/IP协议相关 JVM相关JVM相关合集整理 JVM相关合集整理 JVM内存区域 JVM相关及其拓展(一)-- JVM内存区域 类加载机制 JVM相关及其拓展(二) -- 虚拟机 2019-03-14 目录
重学Binder Linux传统的进程间通信原理 进程隔离 保护系统中进程互不干扰。在操作系统中,进程之间数据是不互通的,相互之间无法访问数据,保证数据的安全星。 在进程隔离的条件下,需要通过IPC(Inter Process Communication)机制进行进程间的通信。 进程空间划分 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间以及底层的硬件设备。 为了使用户进程不能操作内核, 2020-05-19 Android
Java线程相关合集整理 基础概念进程 应用程序在内存中分配的空间,也就是正在运行的程序。进程是系统运行程序的基本单位。 CPU采用时间片轮转的方式运行进程:CPU为每个进程分配一个时间段,称作它的时间片。 如果在这个时间片结束进程还在进行,则暂停这个进程的运行,并且CPU会被分配到另一个进程(上下文切换)。 进程让操作系统的并发成为了可能。进程就是程序的实体。 线程 线程与进程类似,但线程比进程更小,是CPU调度和分配 2020-05-02 Java
JVM相关合集整理 本章主要针对JVM基础知识的整理以及拓展 JVM内存区域 JVM在执行Java程序的过程中会把管理的内存分为若干个不同的数据区域。 JDK1.8前后分区略有不同 根据上述两图,运行时数据区域按照线程是否私有分为两部分: 线程私有:程序计数器、虚拟机栈、本地方法栈 线程共享:堆、方法区 程序计数器 线程私有,当前线程所执行的字节码的行号指示器,记录当前线程执行的位置。 程序计数 2020-05-02 JVM
Flutter学习大纲 Flutter是Google全新推出的跨平台应用开发框架,主打跨平台、高保真、高性能,需要通过Dart语言进行开发App,编写完成后即可实现 一套代码运行多个平台,目前只是支持了Android及iOS平台,后续还会拓展到PC上。 整套学习大纲会按照由表及里,由简到难的过程进行深入的学习Flutter。 搭建开发环境 新建一个Flutter应用 Dart语言相关 基础部件 Widg 2019-04-01 Flutter
OkHttp简析 基于OkHttp 3.13版本进行分析 OkHttp定义OkHttp现如今已成为主流的网络请求框架,连Android源码中都引入其作为基础网络库,可知它的重要性。 所以只会简单的使用是远远不够的,更要深入了解其原理,知道它的设计概念,这才是最重要的。 OkHttp支持SPDY协议,可以合并多个到同一个主机的请求,分享同一个Socket。如果SPDY不可用,会使用连接池的技术减少请求的延迟。 2019-03-08 源码解析
JVM相关及其拓展(八) — 静态分派&动态分派 方法调用方法调用不同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法)。 解析 调用目标在代码程序写好、编译器进行编译时就必须确定下来。 在Java语言中符合“编译期可知,运行期不可变”这个要求的方法,主要包括静态方法和私有方法两大类。前者与类型直接关联,后者在外部不可访问,这两种方法各自的特点决定了它们都不可能通过继承或别的方式重写其他版本,因此它们都适合在类加载阶 2019-02-21 JVM
插件化实现原理简析(基础概念) 动态加载技术 在应用程序运行时,动态的去加载一些程序中原本不存的可执行文件并运行这些文件里的代码逻辑。 可执行文件总的来说分为两种: 一种是动态链接库so 一种是dex相关文件(dex以及包含dex的jar/apk文件) 随着应用开发技术和业务的逐步发展,动态加载技术派生出两个技术:热修复技术以及插件化技术。 热修复技术主要用来修复Bug,插件化技术主要来解决应用越来越庞大以及功能模块的解耦 2019-02-05 Android
Service工作过程 Service基础知识Android Study Plan II - Service Service工作过程Service分为两种工作状态,一种是启动状态,主要用于执行后台计算;另一种是绑定状态,主要用于其他组件和Service的交互。 Service的这两种状态是可以共存的,即Service既可以处于启动状态也可以同时处于绑定状态。 1234567//启动ServiceIntent intent 2019-01-10 Android
Binder系列-Binder Android Binder机制相关以及AIDL介绍 在Linux中,为了避免一个进程对其他进程的干扰,进程之间是相互独立的。 Android的进程间通信采用了Binder基于性能,稳定和安全方面的考虑:。 性能:在移动设备上对性能的要求是比较严苛的,在Linux上通信方式例如管道,Socket都需要复制两次数据,Binder只需一次。 对于消息队列、Socket和管道而言,数据先从发送方的缓存 2019-01-06 Android
Activity启动过程 下列源码分析是基于 Android 8.0源码 Activity的启动过程分为两种: 根Activity的启动过程 - 指代根Actiivty的启动过程也可以认为是应用程序的启动过程 普通Activity的启动过程 - 除启动应用程序启动的第一个Activity之外Activity的启动过程 根Activity启动过程 点击桌面的应用程序图标就是启动根Activity的入口,当 2019-01-02 Android
JVM相关及其拓展(七) — 线程安全与锁优化 线程安全与锁优化 首先需要并发的正确性,然后在此基础上实现高效。 线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 线程安全的代码必须具备一个特征:代码本身封装了所有必要的正确保障性手段,令调用者无需关心多线程的问题,更无须自己采 2018-12-19 JVM
JVM相关及其拓展(六) -- Java与线程 Java与线程线程的实现线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程间既可以共享进程资源,又可以独立调度(线程是CPU调度的基本单位)。 实现线程主要有三种方式: 使用内核线程实现 直接由操作系统内核支持的线程。 由内核来完成切换,内核通过操纵调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。 多线程内核:有能力处理多件事情,支持多线 2018-12-18 JVM
IPC机制 IPC机制 IPC是Inter-Process Communication的缩写。含义为进程间通信或者跨进程通信,指代两个进程间进行数据交换的过程、 还需要理解进程以及线程的区别和联系 进程:一般指一个执行单元,在设备上一般代指应用程序。 线程:CPU调度的最小单元且线程是有限资源。 一个进程可以包含多个线程,即一个应用内部可以执行多个任务。在Android中就会区分为主线程(UI线程)和子 2018-12-11 Android