cache

高效使用Bitmaps(三) 神奇的Cache

独自空忆成欢 提交于 2019-12-01 19:43:40
应用的场景 假设你开发了一个聊天程序,它的好友列表中显示从网络获取的好友头像。可是如果用户发现每次进入好友列表的时候,程序都要重新下载头像才能进行显示,甚至当把列表滑动到底部再重新滑动回顶部的时候,刚才已经加载完成了的头像竟然又变成了空白图片开始重新加载,这将是一种糟糕的用户体验。为了解决这种问题,你需要使用高速缓存技术——Cache。 什么是Cache? Cache,高速缓存,原意是指计算机中一块比内存更高速容量更小的存储器。更广义地说,Cache指对于最近使用过的信息的可高速读取的存储块。而本文要讲的Cache技术,指的就是将最近使用过的Bitmap缓存在手机的内存与磁盘中,来实现再次使用Bitmap 时的瞬时加载,以节省用户的时间和手机流量。 下面将针对Android中的两种Cache类型Memory Cache和Disk Cache分别进行介绍。样例代码取自 Android开发者站 。 1/2:Memory Cache ( 内存中的Cache ) Memory Cache使用内存来为应用程序提供Cache。由于内存的读写速度非常快,所以我们应该优先使用它(相对于下面将介绍的Disk Cache来说)。 Android中提供了 LruCache 类来进行Memory Cache的管理(该类是在Android 3.1时推出的,但我们可以使用 android -support

Mybatis源码概览(一)

余生颓废 提交于 2019-11-29 07:11:34
一般拿到源码会无从下手,我的基本思路一般就是根据一个基本的helloWorld Debug下去,把主线先大概理一遍,然后再具体分析细节,没有必要一个类一个类细看,看了也会忘掉。自己理源码的时候看不下去时,可以结合网上的分析文章,一边看别人的解析,一边自己对照源码。了解框架设计原理,以后项目中出了问题可以更容易定位。再往上一层面,以后自己可以根据需求扩展框架。 先执行个HelloWorld 去github上 clone Mybatis代码,然后再其测试源码里添加如下代码 示例代码,里面未贴出来的类自行补全。 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(true); try { //后面介绍mybatis通过动态代理来避免手工调用session,直接调用dao接口; //BlogDao mapper = session.getMapper

ceph的数据存储之路(12)----- cache tier 曾经有过的YY

荒凉一梦 提交于 2019-11-29 04:22:38
对于cache的东西啊,我曾经在公司的项目中,有写过cache的经历,所以我以为我很了解,在我看ceph手册对于cache tier描述的时候,感觉没啥新鲜的东西,但是当我对应到ceph源码级别的时候,发现自己YY的ceph cache tier不太正确。了解不难,深入不易啊。闲话少说进入正题。(排版有点乱) 一、什么是cache tier 在ceph的手册里 http://docs.ceph.com/docs/master/rados/operations/cache-tiering/ 中对 cache tiering 进行了描述。 分布式的集群一般都是采用廉价的pc搭建,这些pc通常使用的是传统的机械硬盘,所以在磁盘的访问速度上有一定的限制,没有理想的iops数据。当去优化一个系统的IO性能时,最先想到的就是添加cache,热数据在cache被访问到,缩短数据的访问延时。Cache 一般会有 memory 或者ssd来做,考虑到价格和安全性,一般都是采用ssd作为cache。尤其实在随机io上,如果随机io全部放在ssd上,等数据冷却,将数据合并后,再刷入机械硬盘中,提升系统的io性能。(本来是想给大家看一下ssd和机械盘的性能测试结果的,但是测试数据是公司的不能放出来,自己测试的数据找不到了。。。。)。 对于ceph而言,怎么利用ssd作为普通磁盘的cache的,从手册中可知