其实很多时候并不是代码 BUG 导致,而是浏览器缓存的问题。所以都有哪些方式来禁用浏览器缓存呢? 熟悉 Chorme 的童鞋,可能知道 F12 ->Network->Disable cache ?...我们可以加一个 meta 标签,来声明缓存规则 <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate
一、请求时想要禁用缓存, 可以设置请求头: Cache-Control: no-cache, no-store, must-revalidate 二、另一种常用做法: 给请求的资源增加一个版本号, 如下...三、HTML也可以禁用缓存, 即在页面的HEAD中加入meta标签;虽能禁用缓存, 但只有部分浏览器支持, 而且由于代理不解析HTML文档, 故代理服务器也不支持这种方式.
所以希望能把这些资源缓存起来,刚好最近经常用七牛云,发现有类似的功能。...所以自己做了一下顺便记录一下步骤(网上大部分教程已经比较老,不太好与现在七牛云的对应了) 创建一个对象储存空间 首先你要有一个七牛云的帐号,帐号很好注册,注册完成后登录到后台,首先创建一个新的储存空间,...七牛空间名,就是你创建的对象储存的空间名,我的名字是 mycode ACCESS KEY 和 SECRET KEY ?...与此同时,我们在七牛云创建的储存空间中也可以看到被缓存的信息了: ?...其他设置 默认情况下,插件的设置只缓存 js|css|png|jpg|jpeg|gif|ico 文件,如果你要添加缓存其他后缀名的文件,比如 .zip .rar 等,可以自己进入七牛云插件设置中进行修改
在讲到如何加速大规模网站速度时,缓存一定是首当其冲的办法,例如加上CDN、Redis、主从分离等办法。一般在大规模系统中,客户会采用动静分离的办法进行本地的缓存加速。...在返回给客户的同时,将静态内容缓存在本地,当其它客户发起同样的需求时,将本地缓存的结果返回给客户,不会再继续将请求传递给真实的服务器。...nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful 三、反向代理服务器Nginx的缓存目录新建.../nginx 2、从客户端进行业务访问 我发现不管我怎么刷新,永远不再出现webServer2,应该是缓存生效了。 ?...4、验证服务器的缓存目录中是否有文件存在 我们发现缓存文件已存在。 ?
总结 声明 前言 我们知道Hystrix每个请求都对应有一个Command命令对象,在线程池隔离模式下,每个命令对象在初始化时都会对应有一个“自己的”线程池HystrixThreadPool,当然这由threadPoolKey...来决定(理论上多个CommandKey是可以共用同一个线程池资源的),并且有全局缓存(不会每次都执行初始化动作)。...Hystrix使用RxJava来编程,那么你是否知道它在执行目标方法时(发射数据时),是如何调用线程池资源的呢?换句话说,Hystrix是如何把自己的线程池“输入”到RxJava里让其调度的呢?...---- RxJava相关概念 rx.Scheduler.Worker:它是Scheduler的一个静态内部类,用于在单个线程或事件循环上执行操作的顺序调度程序,简单的说它就是真正干活的 Hystrix...文首介绍RxJava时候说到了,被观察对象Observable在哪个线程发射数据是由subscribeOn()方法指定的Scheduler来调度的。
当微服务的运行质量低于某个临界值时(静态阈值的实现方式),启动熔断机制,暂停微服务调用一段时间,以保障后端的微服务不会因为持续过负荷而宕机(熔断、限流)。...每个请求都会被包装成一个Command对象来执行,该图示展示的一个请求执行的关键流程。...} 实例中使用三种方式来执行,均是可以的,各位可自行选择。 ---- RxJava有话说 由于hystrixy-core依赖于RxJava构建,因此需要做个简单了解。 那么什么是RxJava呢?...Observable(被观察者,也就是数据发射器):public class Observable代表一个被观察对象 Observer(观察者,也就是数据接收器) :public interface...---- 关于RxJava的介绍就先到这,这是一个极简介绍而已,这里我贴出几篇文章,有兴趣者可前往阅读: 我所理解的RxJava——上手其实很简单(一)(二)(三) RxJava系列教程 我为什么不再推荐
在Hystrix熔断和限流(一)中,我们介绍了Hystrix API的底层使用方式, 今天就深入源码,看下是如何实现熔断和限流的. 一....而这种编程方式是使用责任链模式和观察者模式配合实现的....用到最多的就是Servlet中的Filter了. 1.2 观察者模式 当一个对象修改时, 会自动通知依赖它的对象....JDK中工具类:java.util.Observable 二. rxjava.jar中的Observable Hystrix是基于rxjava.jar中的Observable类实现的, 这节先一起熟悉下...如果您对rxjava已经很熟了, 可以跳过本节. 2.1 创建Observable 创建Observable的创建过程是通过静态方法create()创建实例对象; 参数是OnSubscribe的匿名类,
解决方案 & 思想主要如下: 示意图如下 与 RxJava1.0 中被观察者的旧实现 Observable 对比 好了,那么上图中在RxJava 2.0观察者模型中,Flowable到底是什么呢?...特点 Flowable的特点 具体如下 下面再贴出一张RxJava2.0 与RxJava1.0的观察者模型的对比图 实际上,RxJava2.0 也有保留(被观察者)Observerble - Observer...背压策略的使用 在本节中,我将结合 背压策略的原理 & Flowable的使用,为大家介绍在RxJava 2.0 中该如何使用Flowable来实现背压策略功能,即背压策略的使用 Flowable与Observable...:针对缓存区 作用:当缓存区大小存满、被观察者仍然继续发送下1个事件时,该如何处理的策略方式 缓存区大小存满、溢出 = 发送事件速度 > 接收事件速度 的结果 = 发送 & 接收事件不匹配的结果 5.3.2...(默认缓存区大小 = 128)、被观察者仍然继续发送下1个事件时 处理方式:将缓存区大小设置成无限大 即 被观察者可无限发送事件 观察者,但实际上是存放在缓存区 但要注意内存情况,防止出现OOM //
与 RxJava1.0 中被观察者的旧实现 Observable 对比 ? 好了,那么上图中在RxJava 2.0观察者模型中,Flowable到底是什么呢?...下面再贴出一张RxJava2.0 与RxJava1.0的观察者模型的对比图 实际上,RxJava2.0 也有保留(被观察者)Observerble - Observer(观察者)的观察者模型,此处只是为了做出对比让读者了解...背压策略的使用 在本节中,我将结合 背压策略的原理 & Flowable的使用,为大家介绍在RxJava 2.0 中该如何使用Flowable来实现背压策略功能,即背压策略的使用 Flowable与Observable...情况1:可叠加性 即:观察者可连续要求接收事件,被观察者会进行叠加并一起发送 Subscription.request(a1); Subscription.request(a2); FlowableEmitter.requested...面向对象:针对缓存区 作用:当缓存区大小存满、被观察者仍然继续发送下1个事件时,该如何处理的策略方式 缓存区大小存满、溢出 = 发送事件速度 > 接收事件速度 的结果 = 发送 & 接收事件不匹配的结果
主要功能如下: 支持Get、Post、Put、Delete等任意请求方式,可自定义请求方式 支持Json、DOM等任意数据解析方式,可自定义数据解析器 支持文件下载/上传,及进度的监听,并且支持断点下载...看名字,我们可以理解为它就是一个请求发送者,通过一个from操作符,传入一个Param对象,然后返回一个RxJava的Observable对象,此时,我们就可以使用RxJava强大的操作符去处理相关的逻辑...(这就是简介说的,做到了与RxJava的无缝链接),在这,我们只是使用了subscribe操作符去订阅观察者。...接下来,我们来看看,如何发送Post请求、如何在Activity/Fragment销毁时,自动关闭为完成的请求、如何上传/下载文件及进度的监听、如何把Http返回的结果自动解析成我们想要的对象。...数据解析器Parser 在上面的案例中,观察者拿到数据类型都是String类型,然后现实开发中,我们经常需要对数据解析成我们想要的对象,RxHttp考虑到了这一点,现在我们就来看看如何的到我们想要的对象
面试题 我把面试遇到过的以及自己学习用到过相关内容都整理到一起了,方便自己进行复盘和后续的查漏补缺: 一、 Java基础 1.1 静态内部类和非静态内部类的比较 静态内部类和非静态内部类的区别 扩展:内部类都有哪些...源码分析 1.10 深入理解ReentrantLock与Condition 1.11 Java多线程:线程间通信之Lock synchronized的缺陷 Lock类接口设计 ReentrantLock可重入锁...虚拟机栈+本地方法栈+程序计数器+堆】 Java中的对象一定在堆上分配吗?...的消息订阅和线程切换原理 7.21 RxJava如何进行线程切换的?...RxJava 是如何实现线程切换的(上) RxJava 线程切换原理 RxJava2线程切换原理分析 7.22 Rxjava内存泄漏防止方案——RxLifecycle,AutoDispose,RxLife
// 注:RxJava2 与 RxJava1 不能共存,即依赖不能同时存在 } 3.1 Map() 作用 对 被观察者发送的每1个事件都通过 指定的函数 处理,从而变换成另外一种事件 即, 将被观察者发送的事件转换为任意的类型事件...String类型 对象后返回 同时,事件的参数类型也由 Integer 类型变成了 String 类型 3.2 FlatMap() 作用:将被观察者发送的事件序列进行 拆分 & 单独转换,再合并成一个新的事件序列...都合并到一个 新建的、总的Observable 对象; 新建的、总的Observable 对象 将 新合并的事件序列 发送给观察者(Observer) 应用场景 无序的将被观察者发送的整个事件序列进行变换...(Obervable)需要发送的事件中 获取一定数量的事件 & 放到缓存区中,最终发送 原理 应用场景 缓存被观察者发送的事件 具体使用 那么,Buffer()每次是获取多少个事件放到缓存区中的呢...// 设置缓存区大小 & 步长 // 缓存区大小 = 每次从被观察者中获取的事件数量
决定我们如何交换数据和媒体。 如果有效地执行HTTP通讯会使您的内容加载更快,并且节省带宽。...(4)对响应进行 缓存 ,可以完全避免重复请求的网络。 ? Retrofit 用于Android的类型安全的HTTP客户端,能够将HTTP API转为Java接口。 ?...RxJava - JVM的反应式扩展Reactive Extension -使用可观察序列来组合异步和基于事件的程序。...它为易于使用而设计,功能丰富且可扩展,同时保持资源效率和高性能。...注释驱动 递送一切,尊重类型层次结构 同步和异步消息传递 可配置的引用类型 消息过滤 包装消息 处理程序优先级 自定义错误处理 可扩展性 ?
// 注:RxJava2 与 RxJava1 不能共存,即依赖不能同时存在 } 3.1 Map() 作用 对 被观察者发送的每1个事件都通过 指定的函数 处理,从而变换成另外一种事件 即, 将被观察者发送的事件转换为任意的类型事件...FlatMap() 作用:将被观察者发送的事件序列进行 拆分 & 单独转换,再合并成一个新的事件序列,最后再进行发送 原理 为事件序列中每个事件都创建一个 Observable 对象; 将对每个...原始事件 转换后的 新事件 都放入到对应 Observable对象; 将新建的每个Observable 都合并到一个 新建的、总的Observable 对象; 新建的、总的Observable 对象...应用场景 缓存被观察者发送的事件 具体使用 那么,Buffer()每次是获取多少个事件放到缓存区中的呢?.../ 设置缓存区大小 & 步长 // 缓存区大小 = 每次从被观察者中获取的事件数量
而rxjava却仍可以保持清晰的逻辑。它的原理就是创建一个Observable对象来搞事情。然后使用各种操作符通过建造者模式建立成一系列的链式操作。就如流水线一样,把事情搞完。...观察者模式 rxjava的实现主要是通过观察者模式实现的。那么什么是观察者模式,我这边做一个简单的介绍。 栗子:观察者对被观察者进行一个简单,当被观察者被改变时,要立即做出反应。...事件-->动态的,无法预知,例如:事件点击,服务器的推送等等 数据流-->静态的,可预知的,例如:读取本地文件,播放音视频等等。 通过操作符对中间事件的处理。 线程操作的便捷。关于这些具体的实现。...map map操作符通过指定一个Function对象,将Observable转换为一个新的Observable对象并发射,观察者将收到新的Observable处理。...也就是说它可以讲一个观察对象变换成多个观察对象,但是并不能保证事件的顺序。想保证事件的顺序?那你过会看下面降到的concatMap。 那么什么叫作数据集合变成一个Observable集合呢?
什么是RxJava? RxJava用于反应式编程。在反应式编程中,消费者在数据进入时作出反应。反应式编程允许事件更改传播给已注册的观察者。 我们知道RxJava是Android项目最重要的库。...如何在RxJava中实现RxBus(EventBus)? 如何用RxJava实现分页? 从这里学习。...---- 通过示例了解RxJava Zip运算符 Zip运算符允许我们一次从多个observable中获取结果。此运算符可帮助您并行运行所有任务,并在完成所有任务后在单个回调中返回所有任务的结果。...---- 理解RxJava中的Observable类型 了解RxJava主题 - 发布,重播,行为和异步主题 ---- 学习“如何使用RxJava操作符实现缓存” 缓存在以下情况下非常有用: 减少网络呼叫...非常快速地获取数据:如果缓存,我们可以非常快速地获取数据。 让我们学习如何使用以下RxJava运算符在Android中实现缓存: Concat运营商 FirstElement运算符 从这里学习。
ReactiveX更多介绍戳官网 RxJava学习路径与概念初始 了解什么是Observer什么是Observable? Observer是观察者,Observable表明是可以被观察的。...行人过红绿灯,行人是Observer,红绿灯的变化是可以Observable的 初识命令式编程和响应式编程 实际项目中希望数据一发生变化就通知需要知道这个变化的对象,这可以通过观察者模式实现...,数据变化观察者立马就可以对变化做出"响应" 初识函数式编程 从java8中的stream到RxJava的转变 RxJava的一些API介绍 创建Observable的基本方式...,可以先了解最简单的just操作 了解什么是Hot Observable,什么是 Cold Observable,以及如何将Cold转换成Hot cold:每次订阅和其它任何订阅它的取到的数据都是一样的...可以反过来限制生产的速度,比如把所有生产的数据都缓存起来,消费者自己来取,比如只有有请求的时候才给数据,没有请求的数据全部扔掉
Subject抽象主题负责提供一些接口,可以增加、删除和更新观察者对象。...如何使用观察者模式呢?...在RxJava中,Observable主题还会负责消息序列缓存,这一点像经典的生产者/消费者模式。...在经典的生产者/消费者模式中,生产者生产数据后放入缓存队列,自己不进行处理,而消费者从缓存队列里拿到所要处理的数据,完成逻辑处理。从这一点来说,RxJava借鉴了生产者消费者模式的思想。...RxJava的操作符按照其作用具体可以分为以下几类: (1)创建型操作符:创建一个可观察对象Observable主题对象,并根据输入参数弹射数据。
Java基础知识点 Jvm相关 Java内存结构及分区 Java对象的创建、存储及访问 Java判断对象是否存活及垃圾回收算法(GC) Jvm中的常见的垃圾回收器 Java类加载过程 Java类加载器(...IntentService的使用及原理 BroadcastReceiver相关 BroadcastReceiver定义及作用、应用场景 BroadcastReceiver的注册方式,静态方式、动态方式...相关 RxJava常用创建操作符 create、from、just、interval、range等 RxJava常用组合、合并操作符 combineLatest、join、merge、zip等 RxJava...Rxjava背压相关理解 RxJava实际开发中的使用:网络请求轮询、网络请求嵌套回调、从磁盘 / 内存缓存中 获取缓存数据等 Glide相关 Glide的执行流程 Glide的缓存机制 Glide图片转换...cookie与session的区别 Http与Https的区别 Https加密算法相关面试问题,签名证书,公钥私钥、数字摘要的理解 设计模式知识点 单例模式 Builder模式 装饰模式 策略模式 模板方法 观察者模式
领取专属 10元无门槛券
手把手带您无忧上云