博客导读 对博客内的文章提供快速入口,按照分类进行查看。 其中主要涉及以下模块: 计算机网络相关 HTTP的原理和工作机制 HTTP的原理和工作机制 TCP/IP协议相关 TCP/IP协议相关 计算机网络基础 计算机网络基础 JVM相关 Android中的GC分析-Dalvik和ART虚拟机 Android中的GC分析-Dalvik和ART虚拟机 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相关及其拓展(八) — 静态分派&动态分派 方法调用方法调用不同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法)。 解析 调用目标在代码程序写好、编译器进行编译时就必须确定下来。 在Java语言中符合“编译期可知,运行期不可变”这个要求的方法,主要包括静态方法和私有方法两大类。前者与类型直接关联,后者在外部不可访问,这两种方法各自的特点决定了它们都不可能通过继承或别的方式重写其他版本,因此它们都适合在类加载阶 2019-02-21 #JVM
JVM相关及其拓展(一)-- JVM内存区域 1. JVM内存区域 JVM在执行Java程序的过程中会把管理的内存分为若干个数据局域。 程序计数器(Program Counter Register):一块较小的内存空间,可看作为当前线程所执行的字节码的行号指示器。每条线程都需要一个独立的程序计数器,所以为线程私有区域。没有规定任何OutOfMemoryError情况的区域。线程执行Java方法,则记录正在执行的虚拟机字节码指令地址,若为Na 2018-04-10 #JVM
JVM相关及其拓展(五) -- Java内存模型 Java内存模型 屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到的一致的内存访问效果。 主要目标: 定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。变量包括了实例字段、静态字段和构成对象的元素,但不包括局部变量和方法参数(他们为线程私有,不被共享)。 主内存与工作内存 Java内存模型规定了所有的变量都存储在主内存 2018-05-09 #JVM
JVM相关及其拓展(七) — 线程安全与锁优化 线程安全与锁优化 首先需要并发的正确性,然后在此基础上实现高效。 线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 线程安全的代码必须具备一个特征:代码本身封装了所有必要的正确保障性手段,令调用者无需关心多线程的问题,更无须自己采 2018-12-19 #JVM
JVM相关及其拓展(四) -- 垃圾收集器与内存分配策略 垃圾收集器与内存分配策略垃圾收集器1.概述垃圾收集(Garbage Collection,GC):自动管理回收不再引用的内存数据需要完成的三件事情: 哪些内存需要回收 什么时候回收 如何回收 Java语言会自动管理和回收不再引用的内存数据,由垃圾回收机制来完成。Java自身提供了内存管理机制,应用程序不需要去关注内存如何释放,内存用完后,GC会去自动进行处理,不需要人为干预出现错误。 在 2018-05-04 #JVM
JVM相关合集整理 本章主要针对JVM基础知识的整理以及拓展 JVM内存区域 JVM在执行Java程序的过程中会把管理的内存分为若干个不同的数据区域。 JDK1.8前后分区略有不同 根据上述两图,运行时数据区域按照线程是否私有分为两部分: 线程私有:程序计数器、虚拟机栈、本地方法栈 线程共享:堆、方法区 程序计数器 线程私有,当前线程所执行的字节码的行号指示器,记录当前线程执行的位置 2020-05-02 #JVM