Android屏幕的刷新机制 基础概念在显示系统中,一般包含三个部分CPU、GPU,屏幕。 CPU:执行View的绘制流程measure,layout.draw GPU:进一步处理数据,对图形数据进行渲染并放到buffer缓冲区中缓存 屏幕:将buffer缓冲区的数据取出来填充屏幕像素点 CPU绘制后提交数据,GPU进一步处理和缓存数据、最后屏幕从缓冲区获取数据并显示。 屏幕刷新频率 一秒内屏幕刷新的次数也即显示了多少帧的 2020-05-30 Android
Kotlin-协程 协程本质上是轻量级的线程。 协程的概念协程是一种非抢占式或协作式的计算机程序并发调度的实现,程序可以主动挂起或者恢复执行。避免在异步编程中使用大量的回调,同时相比于传统的多线程技术,更容易提升系统的高并发处理能力。 线程和协程属于一对多关系,一个线程上允许存在多个协程。 线程大多数的实现是映射到内核的线程,当线程中的代码逻辑在线程抢到CPU的时间片才可以执行,否则只能等待。而协程之所以轻量级 2020-04-12 Kotlin
TCP/IP协议相关 TCP/IP协议族 由一系列网络协议所组成的一个网络分层模型,是Internet的核心协议并被广泛应用于局域网和互联网。 分层 为什么要分层? 每层内部的设计可以自由改动,只需要修改替换对应分层即可 设计变得简单,分层只需要考虑当前的任务,不需要在意其他分层情况 网络的不稳定性 应用层(Application Layer) 向用户提供应用服务时通信的活动 相关协议: HTTP协议 F 2020-03-31 HTTP
HTTP的原理和工作机制 HTTP的原理和工作机制 什么是HTTP? HyperText(可以指向其他文本的链接文本) Transfer Protocol——超文本传输协议。位于TCP/IP协议的最顶层——应用层。 从日常角度来说,在App中调用网络请求,直接就会使用到HTTP。发送数据(Request)到服务端,等待服务端数据处理完毕再返回(Response)到App,App在进行后续处理,例如页面展示等。 HTTP工 2020-03-29 HTTP
Android性能优化-内存优化详解 内存的概念内存是计算机中最重要的部件之一,是硬盘与CPU之间沟通的桥梁,所有程序都是运行其上,会对程序的性能造成很大的影响。 Why 内存优化?减少Crash 减少因为内存问题引起的Crash,其中最典型的就是OOM 运行流畅 当内存紧张时,就会导致频繁触发GC。当触发GC时,所有线程都要停止,会导致所有运行被搁置,导致运行卡顿。 延长后台运行时间 Android会按照特定的机制进行进程清理, 2020-03-23 Android
Android-Art类加载过程 Dex文件加载 加载Dex文件后会生成DexFile对象,里面储存了多个类文件信息。 通过PathClassLoader或者DexClassLoader去加载Dex文件,最后还是调用到BaseDexClassLoader的加载方法 12345678class BaseDexClassLoader extends ClassLaoder{ public BaseDexClass 2019-12-19 Android
Git常用指令及作用(速查) loggit log //显示提交信息git log –oneline //简要日志输出git log –oneline -5 //输出最近5次提交日志 statusgit status //显示当前git状态git status -s //简要信息 git push origin HEAD:refs/for/master //推送代码 taggit tag //列举标签 git tag ver 2019-12-06 Git
Java字节码学习-操作指令 对常见的字节码操作指令进行整理,方便日后进行查询。为了在字节码应用时可以进行合理利用。 JVM采用基于栈的架构,操作指令由操作码和操作数组成。操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。 操作码:一个字节长度(0~299),操作码个数不能不能超过256 操作数:一条指令可以包含0个或多个操作数。 为了提升传输效率,减少数据量。字节码指令放弃了 操作数对齐,减少了填充与间 2019-11-14 Java
Kotlin-委托相关知识 委托:有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 在Kotlin中,对委托进行了简化,通过by就可以实现委托的效果。例如前面提到的by lazy延迟初始化就是利用了委托。 Kotlin中主要分为两种:类委托、委托属性。 基本语法: 1val/var <属性名>:<类型> by <表达式> //<表达式> 指向委托 2019-07-09 Kotlin
《Kotlin核心编程》读书笔记-面向对象 内容摘自《Kotlin核心编程》第3章,在其基础上对一些概念进行拓展了解 本章主要讲Kotlin中一些面向对象的类和方法讲解以及一些相对Java的优化点。 类和构造方法定义类与Java相同使用class结构体来声明一个类 12345678class Bird{ //颜色 val color :String ="blue" //年纪 var age : Int = 1 //动 2019-06-23 Kotlin
《Kotlin核心编程》读书笔记-基础语法 内容摘自《Kotlin核心编程》第2章,在其基础上对一些概念进行拓展了解 本章主要讲Kotlin一些基础语法. 类型声明声明变量尽可能采用val、不可变对象及纯函数来设计程序。 123val a = "Hello World"或val a:String = "Hello World" val:引用不可变。反编译后的Java代码中是通过final对变量进行修饰。声明了只读变量,引用对象不可变, 2019-06-19 Kotlin
Gradle学习笔记-Project 基于Gradle 7.3.3源码分析 可以通过执行./gradlew projects打印工程下所有Project。 Project对应着项目中的build.gradle文件,每个gradle文件被解析后都会生成一个Project对象。所有build.gradle中定义的属性及方法都可以通过Project进行调用。 graph TB A(Project API组成) --- B(Proj 2019-06-14 Gradle
Gradle学习笔记-Task Gradle的两个重要的概念:Project和Task,一个Project由多个Task组成。 Task Gradle脚本中的最小执行单元,也是Gradle中的一个原子操作。 Task Result(任务结果)当Task执行时,最终控制台都会输出执行的结果,后面都会带有一个标签,这些标签表示了是否有Task需要执行,是否执行了Task等状态。 结果标签 结果描述 如何触发 没有 2019-05-08 Gradle