开源框架分析
文章平均质量分 93
分析一些常用开源框架的使用方法以及实现原理,巩固对java 多线程、注解、Lambda的理解
chadm
这个作者很懒,什么都没留下…
展开
-
Okio原理分析之Segment数据管理
数据移动这一块,主要由3个关键类在控制Buffer 里面保存了一个segment双向循环链表,从head segment读取,从tail segment写入Segment 真正保存数据的类,pos和limit保存了可以读写的位置,shared和owner表示是否可以修改此Segment里面的值SegmentPool 保存了一个单向Segment链表,最大包含有8个Segment。recylce方法加入SegmentPool和take从SegmentPool里面读取,都是从next节点(链表的头节原创 2021-01-01 20:20:08 · 885 阅读 · 0 评论 -
Okio原理分析之简介
Okio是一个实现java.io和java.nio的库,更方便访问、存储和处理数据。作为OkHttp组件的一部分,在Android中引入支持HTTP的客户端Okio一些关键概念介绍先看一下类图,对整体框架有个大概的了解ByteString和Buffer保存数据ByteString 代表一个不可变的字节序列。对于char数据,String是基础类型。Buffer 可变的字节序列,像ArrayList,读写Buffer的操作与queue类似,从尾部写,从头部读,不需要管理position/limi原创 2020-12-27 22:03:23 · 941 阅读 · 0 评论 -
Okio原理分析之字符编码
OKio的原理分析,准备分3个部分来分析:字符编码 先了解一些背景知识,Okio里面基本上是基于UTF-8来编码实现的Okio简介 熟悉OKio里面引入的一些概念,如Source、Sink、Timeout、Buffer、Segment、SegmentPool、ByteString等Okio里面Segment数据移动管理 OKio高效的原因,在数据移动方面的一些巧妙的设计,来节约内存和节省CPU1.字符编码字符编码(Character encoding)、字集码是把字符集中的字符编码为指定原创 2020-12-27 22:00:04 · 173 阅读 · 0 评论 -
Retrofit-Okhttp-Okio-RxJava
先来一张Jake Wharton 关于 A Few “OK” Libraries 的简介,几个框架的关系前面先分析了RxJava的实现,第一感觉就是和Java 8里面的stream很像,以函数式编程的形式来处理数据,个人理解的核心思想有2个:函数接口 在函数的参数里面,定义了各种函数接口(functional interface),当需要这些参数的时候,有3种方式可以实现通过一个匿名内部类传递lambda表达式在某些情况下,传递方法引用(如System.out::println)而不是lam原创 2020-12-23 21:08:35 · 211 阅读 · 0 评论 -
RxJava实现原理分析part2-数据处理
先来一个Jack大神的演讲视频Managing the Reactive World with RxJavaBackpressueBackpressue是指一个Flowable管道处理中,有些异步状态无法及时处理产出的值,需要一种方式来告诉upstream降低生产数据的节奏,本质上是一种flow control策略。如下例子,source产出了过多的数据,会导致downstream处理不及时而导致问题 PublishProcessor<Integer> source = Publ原创 2020-12-18 23:01:40 · 340 阅读 · 2 评论 -
RxJava分析系列之RxJava实现原理分析part1
从RxJava实现原理,个人理解,主要从4个方面来说明Lambda表达式和Stream,函数式编程观察者模式的实现Scheduler线程切换的原理数据流的处理,针对5个基础类Flowable、Observable、Single、Completable、Maybe,也是最核心的部分1.Lambda表达式和Stream首先是 functional interface ,函数接口,RxJava里面也定义了很多functional interface,方便操作,在io.reactivex.rxjav原创 2020-12-16 00:06:12 · 361 阅读 · 0 评论 -
RxJava分析系列之RxJava 简介
1.RxJava 简介RxJava是一个通过可观察的序列方式实现异步和基于事件的响应式Reactive编程,RxJava 是实现了reactive-streams-jvm 定义了规范,4个有主要接口Publisher,发布者(生产者)Subscriber,订阅者(消费者)Subscription,订阅Processor,处理者RxJavae3 提供了5个基础类,来进行相关的操作io.reactivex.rxjava3.core.Flowable: 0…N flows, 支持响应式编程和原创 2020-12-16 00:03:21 · 913 阅读 · 1 评论