RxJava

Spring Cloud 源码学习之 Hystrix 熔断器

南笙酒味 提交于 2020-11-23 08:24:29
文中源码基于 Spring Cloud Finchley.SR1 、Spring Boot 2.0.6.RELEASE . 本文学习了Hystrix熔断器的原理、配置和源码,包含滑动窗口、状态变化等。 简介 circuit-breaker: circuit表示电路,大家译为熔断器非常精准。 回想起小时候,家里保险丝突然被烧断,需 手工更换一根新的保险丝 ;后来,保险丝被取代,电流过大时会跳闸, 闸拉上去后立马恢复供电 ;等到上大学时,只要打开功率高一点的电吹风,砰的一声就断电,但过10分钟就 自动来电 。在电流过大时,通过熔断机制以保护电路和家电。 Hystrix 属于上面的第三种, 一种自动恢复的智能熔断器 ,区别在于它保护的是系统,且判断 “电流过大” 的方式是: 不断收集请求指标信息(sucess、failure、timeout、rejection),当达到设定熔断条件时(默认是请求失败率达到50%)进行熔断。 在 Spring Cloud 源码学习之 Hystrix Metrics 收集 一文中,学习了 Metrics 收集,这是上文的图。 Hystrix Command 执行过程中,各种情况都以事件形式发出,再封装成特定的数据结构,最后汇入到事件流中(HystrixEventStream)。事件流提供了 observe() 方法,摇身一变,事件流把自己变成了一个数据源

Android--常用框架大全

♀尐吖头ヾ 提交于 2020-11-19 04:56:13
1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库 3. 图片处理 名称 描述 Picasso-transformations 一个为Picasso提供多种图片变换的库 Glide-transformations 一个为Glide提供多种图片变换的库 Android-gpuimage 基于OpenGL的Android过滤器 4. 网络请求 名称 描述 Android Async HTTP Android异步HTTP库 AndroidAsync 异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。 OkHttp 一个Http与Http/2的客户端 Retrofit 类型安全的Http客户端 Volley Google推出的Android异步网络请求框架和图片加载框架 5. 网络解析 名称 描述 Gson 一个Java序列化/反序列化库,可以将JSON和java对象互相转换 Jackson

阿里巴巴内部Jetpack宝典意外流出!极致经典,堪称Android架构组件的天花板

百般思念 提交于 2020-11-10 18:44:57
简介 Jetpack是一套库、工具和指南,可以帮助开发者更轻松地编写优质应用。这些组件可以帮助开发者遵循最佳做法、让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。 Android Jetpack组件的作用是什么? Navigation:一个用于管理Fragment切换的工具类,可视化、可绑定控件、支持动画等是其优点。 Data Binding:不用说,都知道,加速MVVM的创建。 Lifecycle:他是我们能够处理Activity和Fragment的生命周期的重要原因,在AndroidX的Fragment和Activity已经对Lifecycle提供了默认支持。 ViewModel:当做MVVM的ViewModel层,并具有声明周期意识的处理和UI相关的数据。 LiveData:同RxJava的作用一样,对数据进行监听,优点就是无需处理生命周期、无内存泄漏等。 Room:强大的ORM数据库框架。 Paging:易于使用的数据分页库,支持RecyclerView。WorkManager:灵活、简单、延迟和保证执行的后台任务处理库。 你可能选择Android Jetpack的原因 以下可能是你会选择Android Jetpack的原因: 一起使用更方便:因为Android Jetpack组件中的很多库都对其他库提供了支持

阿里工作十年的Android架构师,总结出2020最新阿里、腾讯、字节、京东等一线大厂高频面试真题合集,以及从业心得分享

不想你离开。 提交于 2020-11-09 12:46:46
前言: 本文资料是由阿里工作十年架构师提供,属于纯干货篇,总结了最新2020整理收集的一些面试题(都整理成文档,附答案), 涵盖了阿里巴巴、腾讯、字节跳动、京东、华为等大厂的Android面试真题,和资深架构师学习路线以及Android架构文档。 不管你是要面试大厂还是普通的互联网公司,这些面试题对你肯定是有帮助的,毕竟大厂一定是行业的发展方向标杆,很多公司的面试官同样会研究大厂的面试题。也会对你的架构师之路带来帮助,文中更是有详细的学习规划图,给你带来不一样的阅读感。 干货献上: 第一部分:(Android中高级篇) 1.Android基础: 1.什么是Activity? 2.请描述一下Activity 生命周期 3.常见的Activity类型有FragmentActivitiy,ListActivity,TabAcitivty等。请描述一下Activity 生命周期 4.如何保存Activity的状态或者(Activiy 重启怎么保存数据?) 5.两个Activity之间跳转时必然会执行的是哪几个方法? 6.横竖屏切换时Activity的生命周期(★★★★) 7.如何将一个Activity设置成窗口的样式 8.如何退出Activity?如何安全退出已调用多个Activity的Application? 9.Activity的四种启动模式

阿里P8大佬熬夜10天,把所有Android第三方库整理成了PDF

空扰寡人 提交于 2020-11-07 12:33:20
缘起 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。 所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。 阿里P8大佬每天熬夜到凌晨一两点,花了将近半个月时间将Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架整合成了一套系统知识笔记PDF,长达1042页!相信看完这份文档,你将会对这些Android第三方框架有着更深入、更系统的理解。 由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,1042页详细完整版的【Android设计思想解读开源框架】文档领取方式: 点击我的GitHub 即可免费领取 第一章:热修复 1、AOT/JIT & dexopt 与dex2oat 2、热修复常见问题之CLASS_ISPREVERIFIED 问题 3、热修复原理 4、Tinker 的集成与使用(自动补丁包生成) image image 第二章:插件化 1、Class 文件与Dex 文件的结构解读 2

Kotlin Flow 看这一篇 带你入门~

戏子无情 提交于 2020-11-05 09:02:41
前言 在最近的三篇中,标题都是 ***** 看这一篇就够了,而这篇关于Flow的,我认怂了,只能说 看这一篇 带你入门~,因为我发现Flow牵扯的东西实在是太多了,就像RxJava别说两篇 可能五篇也是说不完的。 为什么需要Flow 首先我们来回顾下Kotlin中我们如何使用挂起函数,我们在main方法中,调用挂起函数返回一组数据,代码如下所示: suspend fun loadData(): List<Int> { delay(1000) return listOf(1, 2, 3) } fun main() { runBlocking { loadData().forEach { value -> println(value) } } } 运行main函数,结果为 1s后 输出1 2 3 那么我们想一下,如果loadData中的数据集合,并不是一起返回的,比如从网络中先获取到了1 在获取到了2 最后再获取到了3 ,那么这样如果我们仍然在返回最后一个结果(其实也不知道)时一并返回数据,会造成资源浪费并且用户体验不好,那么我们如何解决这个问题呢? 上面挂起函数的返回类型是List类型,那么就必定只能一次性返回数据,此时,Flow就出场了~ Flow的基础使用 构建器 我们改写loadData方法,返回类型修改为Flow<Int> ,并构造一个flow,在flow中 每隔一秒

Android 操作系统恐生变?

蹲街弑〆低调 提交于 2020-10-31 06:23:29
本文转载自公众号:CSDN 十年之伤,称霸已久的 Android 操作系统也开始动荡了! 曾几何时,竖起开源大旗的 Android 移动操作系统一路高歌,左手迅猛碾压了还站在智能机时代风口观望的塞班系统,右手成功扼制了闭源的 iOS 崛起的势头,一度掌控着移动操作系统市场近 85% 的份额。 如今转眼间十年已过,早已在智能机领域根深蒂固的 Android 操作系统于近期似乎遇到了前所未有的危机,一方面, 欧盟这位苛刻的检察官以系统垄断罪责,开出一张 50 亿美元的天价罚单;另一方面,其主子 Google 因为这张天价罚单一个不爽之后,或将对手机厂商以每部最高 40 美元的价格收取 Android 系统授权费,甚至还推出新条款,或强制 Android 设备定期更新系统,一代枭雄的 Android 未来该何去何从? 树大招风的 Android 操作系统 一个以绿色小机器人为 logo 的 Android,它的多事之秋最早还是要追溯到 2005 年 8 月,被 Google 收购的那一刻。当名不经传的毛头小子被富甲一方的科技巨头 Google 认做干儿子时,无数双眼睛随之被吸引过来,这其中就包括了“纯软件公司先驱”的 Oracle。 在 Android 被收购的第二年,彼时还极具开放精神的 Java 所属方 Sun 公司向 Google 抛出橄榄枝,表示只要 Google 支付 2000

java8 stream

℡╲_俬逩灬. 提交于 2020-10-29 16:46:43
map和faltMap的共同点和区别 共同点 都是依赖FuncX(入参,返回值)进行转换(将一个类型依据程序逻辑转换成另一种类型,根据入参和返回值) 都能在转换后直接被subscribe 区别 map返回的是结果集,flatmap返回的是包含结果集的Observable(返回结果不同) map被订阅时每传递一个事件执行一次onNext方法,flatmap多用于多对多,一对多,再被转化为多个时,一般利用from/just进行一一分发,被订阅时将所有数据传递完毕汇总到一个Observable然后一一执行onNext方法(执行顺序不同)>>>>(如单纯用于一对一转换则和map相同) map只能单一转换,单一只的是只能一对一进行转换,指一个对象可以转化为另一个对象但是不能转换成对象数组(map返回结果集不能直接使用from/just再次进行事件分发,一旦转换成对象数组的话,再处理集合/数组的结果时需要利用for一一遍历取出,而使用RxJava就是为了剔除这样的嵌套结构,使得整体的逻辑性更强。) flatmap既可以单一转换也可以一对多/多对多转换,flatmap要求返回Observable,因此可以再内部进行from/just的再次事件分发,一一取出单一对象(转换对象的能力不同) 代码演示 /** * */ package demo.test; import java.util

Kotlin Coroutines Flow 系列(五) 其他的操作符

佐手、 提交于 2020-10-28 03:07:23
八. Flow 其他的操作符 8.1 Transform operators transform 在使用 transform 操作符时,可以任意多次调用 emit ,这是 transform 跟 map 最大的区别: fun main ( ) = runBlocking { ( 1 .. 5 ) . asFlow ( ) . transform { emit ( it * 2 ) delay ( 100 ) emit ( it * 4 ) } . collect { println ( it ) } } transform 也可以使用 emit 发射任意值: fun main ( ) = runBlocking { ( 1 .. 5 ) . asFlow ( ) . transform { emit ( it * 2 ) delay ( 100 ) emit ( "emit $it " ) } . collect { println ( it ) } } 8.2 Size-limiting operators take take 操作符只取前几个 emit 发射的值。 fun main ( ) = runBlocking { ( 1 .. 5 ) . asFlow ( ) . take ( 2 ) . collect { println ( it ) } } 8.3

Android Retrofit2.0+RxJava3.0 基本使用

ぐ巨炮叔叔 提交于 2020-10-27 12:48:58
一,ReactiveX 要学习RxJava,那么不得不提他的由来ReactiveX,ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发; 二,Rx的发展 Rx这几年非常流行,以至于开发出多种语言版本,例如RxJava 、 RxGo 、RxJS、RxKotlin、 RxPY 、 Rx.NET 等等;Rx的大部分语言库由ReactiveX这个组织负责维护,社区网站是 reactivex.io 。 三,RxJava RxJava是响应式编程(Reactive Extensions)的java实现,它基于观察者模式的实现了异步编程接口。 Rxjava 3.x 的 github官网 ; Rxjava 3.0的一些改变: 官方Wiki ; Rxjava 3.x 文档可以在 官方javadoc 中找到 1,Retrofit + RxJava3组合使用 首先要引入依赖 implementation "io.reactivex.rxjava3:rxjava:3.0.0" implementation 'io.reactivex:rxandroid:1.2.1'