
进阶学习随记
文章平均质量分 90
秘密小房间的呆屁
努力得舒服,自然平庸得彻底--手机微信同号13923495466,添加请备注
展开
-
网络协议与TCP连接原理(学习笔记七)
一、 计算机网络背景和定义随着计算机技术发展,计算机的体积和价格都在下降,之前计算机多用于研究机构,现阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介质进行转存,人们需要将数据直接通过通信线路传输,来缩短传输时间,于是计算机网络开始诞生,并逐渐发展为现在巨大的Internet。定义和分类计算机网络的标准定义是:利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。计算机网络从覆盖范围原创 2021-01-05 14:26:57 · 701 阅读 · 0 评论 -
插件化实现原理(学习笔记六)
介绍:插件化本质上来说是运行没有安装的apk,支持插件的app一般称为宿主。宿主提供上下文环境通常作为主APP在运行时加载和运行插件,这样便可将app中一些不常用的功能模块做成插件,一方面可以减少安装包的大小,另一方面可以实现APP功能的动态扩展优势:让用户不用重新安装 APK 就能升级应用功能,减少发版本频率,增加用户体验。提供一种快速修复线上 BUG 和更新的能力。按需加载不同的模块,实现灵活的功能配置,减少服务器对旧版本接口兼容压力。模块化、解耦合、并行开发、 65535 问题。实现原理:在原创 2020-12-23 18:32:55 · 602 阅读 · 2 评论 -
Android性能优化之网络优化
流程优化前先描述一下一条正常网络请求的流程:DNS 解析,请求DNS服务器,获取域名对应的IP地址;与服务器建立连接,包括 TCP三次握手,安全协议同步流程;连接建立完成,发送和接收数据,解码数据;在了解了网络请求的流程后,针对上面这三步流程分别进行优化:一、DNS优化在 Android APP 访问网络的时候,第一步就是 DNS 解析,默认使用运行商的 LocalDNS 服务,DNS 完整的解析流程很长,会先从本地系统缓存取,若没有就到最近的 DNS 服务器取,若没有再到主域名服 务器取原创 2020-11-04 19:37:08 · 1954 阅读 · 0 评论 -
Android性能优化之容器使用
一款Android应用除了具备实现好用的功能和清晰明了的交互之外,对性能也应该有极致的追求,对每一个点做好优化,积少成多最终做出高性能的APP,能极大的增强用户的体验优化的目标从优化的目的来看,可分为以下三个:1.更快:更快指的是应用的流畅性,可从以下几点来提升APP的流畅性启动速度页面显示的速度响应的速度2.更稳定:更稳定指的是减少APP的异常情况避免出现APP崩溃(Crash)避免出现APP无响应(ANR)3.更节省:更节省指的是对资源的节省,可分为以下几点内存大小:应尽原创 2020-11-02 17:54:43 · 524 阅读 · 0 评论 -
理解JVM运行原理和垃圾回收机制(学习笔记五)
JVM基本概念首先是我们写的.java代码,通过javac编译成JVM能识别的.class文件,然后JVM将.class文件解析翻译,调用操作系统函数完成想要的操作,正是有了JVM这一抽象层,java才能跨平台运行,此外,因为JVM是解析.class文件,而不是java,所以其他诸如Groovy 、Kotlin、Jruby等等语言,它们其实也是编译成字节码,所以也可以在JVM上面跑,这样体现了JVM的跨语言特性。Java的类加载器与Android中的类加载器是不一样的,主要分为类加载-检查加载-分配内存原创 2020-08-12 14:18:55 · 527 阅读 · 2 评论 -
JMM原理与并发编程(学习笔记四)
定义Java内存模型:Java Memory Model,简称JMM,它隶属于JVM(整个计算机虚拟模型),定义了JVM在计算机内存(RAM)中的工作方式。根据《Jeff Dean在Google全体工程大会的报告》公布的数据:计算机在做一些我们平时的基本操作时,需要的响应时间是不一样的。假设没有任何缓存机制,每个数都需要从内存中读取,这样加上CPU读取一次内存需要100纳秒,262144个整数(1M的int数据)从内存读取到CPU加上计算时间一共需要262144*100+250000 = 26 4原创 2020-08-03 21:11:27 · 215 阅读 · 0 评论 -
AQS原理和队列锁机制(学习笔记三)
AQS的理解AQS是队列同步器AbstractQueuedSynchronizer的简称,它是用来构建锁或其他同步组件的基础框架,内部有一个int型变量state来表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。使用和设计模式AQS主要通过继承并实现它的抽象方法来管理同步状态,推荐使用自定义同步组件的静态内部类来继承,可以使用AQS提供的三个能保证状态安全的方法来进行操作getState、setState(int)、compareAndSetState(int expect,int原创 2020-08-01 11:26:41 · 504 阅读 · 0 评论 -
理解阻塞队列和线程池原理(学习笔记二)
阻塞队列队列介绍队列是一种先进先出的线性表结构,它的插入操作端为队尾,删除操作端为队头,在队列中插入一个元素称为入队,删除一个元素是出队。阻塞队列介绍支持阻塞插入方法:当队列满时,会阻塞向队列插入元素的线程,直到有元素出队支持阻塞移除方法:当队列为空时,获取元素的线程会等待队列变为非空阻塞队列常用于生产者消费者模式的场景,为了解决生产者和消费者处理效率不平衡的问题,通过阻塞队列来为生产者和消费者解耦,两者不直接通信,而是通过阻塞队列通信,生产者是向阻塞队列添加元素的线程,消费者是从阻塞队列拿元素原创 2020-07-31 19:45:21 · 867 阅读 · 0 评论 -
深入理解java中的线程并发(学习笔记一)
线程的状态在java中线程的启动方式只有两种:Thread.start创建一个Runnable任务交给Thread运行线程的状态分为6种:初始状态:新创建了一个Thread,但还没有start运行状态:在java中ready和running两种状态都称为运行阻塞:表示线程阻塞于锁等待:等待其他线程做出一些特定动作(中断,通知)超时等待:与等待不同,在指定时间自行返回终止:表示执行完毕死锁发生死锁,有四个必要条件:互斥:进程对所分配的资源进行排他性使用,其他进程申请该资原创 2020-07-30 21:38:25 · 359 阅读 · 0 评论