【移动应用开发技术】怎么掌握安卓中高级开发面试知识点?缓存重点都在这_第1页
【移动应用开发技术】怎么掌握安卓中高级开发面试知识点?缓存重点都在这_第2页
【移动应用开发技术】怎么掌握安卓中高级开发面试知识点?缓存重点都在这_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】怎么掌握安卓中高级开发面试知识点?缓存重点都在这!

之前早就说要整理一个集合方便大家,还好没有拖到2020年

BATJ、字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等已经上传到了的我的GitHub之前早就说要整理一个集合方便大家,还好没有拖到2020年

BATJ、字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等已经上传到了的我的GitHub

大家点击我的GitHub地址:

/Meng997998/AndroidJX点下star一起学习大家点击我的GitHub地址:

/Meng997998/AndroidJX点下star一起学习好了今天就跟着我来,告诉你缓存重点,一起熟练掌握安卓中高级开发面试知识点!我们都知道,几乎所有的项目都做了缓存,但是缓存做的怎么样,其实只有每个人自己知道。

缓存做的好,没有网络也能流畅的使用;再多的数据请求都不会出现卡顿延迟等待很久的情况。程序中除了图片缓存(三级缓存),还有信息缓存。当用户无法联网时,app会默认显示缓存的数据。前言缓存方式下载完数据文件后,把文件的相关信息如url,路经,下载时间,过期时间等存放到数据库,把url作为唯一的标识。下次下载的时候根据url先从数据库中查询,如果查询到当前时间并未过期,就根据路径读取本地文件,从而实现缓存的效果。文件缓存使用File.lastModified()方法得到文件的最后修改时间,与当前时间判断是否过期,从而实现缓存效果。数据格式为JSON。

缓存方式两点说明1、不同类型的文件的缓存时间不一样。笼统的说,不变文件的缓存时间是永久,变化文件的缓存时间是最大忍受不变时间。说白点,图片文件内容是不变的,一般存在SD卡上直到被清理,我们是可以永远读取缓存的。配置文件内容是可能更新的,需要设置一个可接受的缓存时间。2、不同环境下的缓存时间标准不一样。无网络环境下,我们只能读取缓存文件,为了应用有东西显示,没有什么过期之说了。网络环境下,缓存时间可以设置短一点,一是网速较快,而是流量不要钱。流量环境下,缓存时间可以设置长一点,节省流量,而且用户体验也更好。

缓存时间app中多个页面的缓存时间是不一样的,对实时性要求高的页面缓存时间较短。而http消息头中包含有缓存时间,android端无需自己记录/规定缓存时间,读取即可。

http协议对缓存的支持Expires&Cache-ControlExpires响应首部给出了响应失效的绝对时间,这样客户端就可以缓存一份副本,在这个时间到期之前,不用去询问服务器它是否有效了。http1.0引入。例:Expires:Thu,03Oct199717:15:00GMTCache-Control首部用于传输对象的缓存信息。http1.1引入。它的值是一个缓存指令,给出了与某个对象可缓存性有关的特有指令。这个首部可以出现在请求或者响应头中。例如:Cache-Control:no-cache

CacheControl有两个字段表达响应的过期时间:max-age和max-stale前者表示:max-age秒内,网页再有请求,你不要来我服务端,直接取你本地缓存的结果好了后者表示:max-stale秒内的请求,你可以使用本地缓存的,但还是要来我服务端问问,到底行不行,当然,这里要带上LastModified等信息,如果服务端返回了304,那说明你本地缓存继续用吧,我不给你响应体200的话,自然就带上了响应体。Expires和Cache-Control作用一致,都是指当前资源的有效期,控制是直接从缓存获取数据还是重新发送请求到服务器取数据。1、

LRU

-最近最少使用(最后访问时间)替换掉最近被请求最少的文档。这一传统策略在实际中应用最广。在CPU缓存淘汰和虚拟内存系统中效果较好。2、

LRU-K

LRU-K中的K代表最近使用的次数,也可以认为是LRU-1。LRU-K的主要目的是为了解决LRU算法“缓存污染”的问题,其核心思想是将“最近使用过1次”的判断标准扩展为“最近使用过K次”。相比LRU,LRU-K需要多维护一个队列,用于记录所有缓存数据被访问的历史。只有当数据的访问次数达到K次的时候,才将数据放入缓存。当需要淘汰数据时,LRU-K会淘汰第K次访问时间距当前时间最大的数据。如下:

LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按照时间排序。如下:引申几个问题,面试常被问到的问题:

1、http的缓存是怎么做的?

2、用的什么?(这个问题和线程会同问,一般问一个。)答案请自行百度。我就不说了。因为我看过http的源码,看过他的缓存和线程。是自定义的。大家做一个了解就行。这个问题被问到的频率不高。而高频问的一般是这种问题:有一个网络请求,有很多数据(比如一年,两年,每天的数据都要请求出来),然后拿到数据后做处理,然后recycleview(或listview)展示出来。像这种请求由于数据很多,会有一段时间的等待,导致页面UI数据延迟的情况的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论