YYCache

YYCache 是提供用户使用的对象,内部对 YYMemoryCache 和 YYDiskCache 功能的整合封装。为 YYMemoryCache 提供了多线程功能,而 YYDiskCache 对象本身内部封装了异步读写功能。

YYMemoryCache

YYMemoryCache 内部有一个储存对象,实现分为两部分:
1.第一部分,淘汰算法,这里使用一个双向链表,每个节点为 _YYLinkedMapNode 类对象,通过访问最后访问时间来对链表进行排列,最新访问的缓存节点放在链表的头部,淘汰算法只需要将链表未尾节点移除即可
2.第二部分,查找算法,这里使用的是 CFMutableDictionaryRef 散列表进行存储
YYMemoryCache 的多线程安全是 使用 pthread_mutex_t(互斥锁) 来完成

YYDiskCache

1.YYDiskCache 是对 YYKVStorage 封装了异步访问 API,多线程安全使用 dispatch_semaphore_t(二元信号量) 来完成
2.YYDiskCache 中同一功能方法,同步和异步的区别:异步方法的实现其实质上就是只是异步的调用了同步方法
3.YYDiskCache 自动清理缓存机制,通过dispatch_after方法递归调用清理缓存

面试总结 - YYCache相关推荐

  1. iOS本地缓存方案之YYCache源码解析

    iOS持久化方案有哪些? 简单列举一下,iOS的本地缓存方案有挺多,各有各的适用场景: NSUserDefault : 系统提供的最简便的key-value本地存储方案,适合比较轻量的数据存储,比如一 ...

  2. java面试常见问题之Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象.) Ø  OID检索(按照对象的OID来检索对象.) Ø  HQL检索(使用面向对象的HQL查询语言.) ...

  3. Python 笔试面试合集

    Python 常见的 170 道面试题全解析:2019 版 全面剖析 Python 面试知识点 Python 全栈工程师必备面试题 300 道(2020 版) 2019 年最全 Python 面试题汇 ...

  4. C++ 笔记(33)— C/C++ 程序员常见面试试题深入剖析

    1. 找错题 试题1: void test1() {char string[10];char* str1 = "0123456789";strcpy(string, str1); ...

  5. 中信银行总行信息科技部笔试面试以及最后拿offer经历

    中信银行 提交简历 19年的招聘网站十分垃圾,提交只能用IE,感觉今年的招聘官网十分不错(ps:开发招聘官网的团队刚好去实习过一段时间,氛围不错,想了解的,可以介绍下的) 笔试 内容多,一般可能确实还 ...

  6. Redis常见面试问题汇总及解析

      面试后端开发的职位,相信大家经常被问到有关redis问题.Redis作为缓存系统的代表很有必要弄熟搞懂,无论是在工作当中还是求职面试过程中都是大有裨益的,本文将详细介绍一些redis的一些典型问题 ...

  7. ❤️手撕这十道HiveSQL题还不能吊打面试官,却能保你不被吊打❤️【推荐收藏】

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HiveSQL十题 第一题 1.需求 2.数据准备 3. ...

  8. 数据结构算法 简单的面试思考题

    目录 简单的面试思考题 思考题一 思考题二 思考题三 简单的面试思考题 思考题一 有64瓶疫苗, 其中一瓶不小心混入了有害物质, 现在要利用小白鼠找出那一瓶! 注意:小白鼠只要喝一点点混入有害物质的在 ...

  9. 阿里巴巴Web前端面试的一道JS题目,求解答!!!

    题目大概是这种: function outer(){return inner;var inner = "a";function inner(){};inner = 9; } ale ...

最新文章

  1. python曲线拟合笔记
  2. oracle性能优化总结
  3. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法
  4. WIN 10 安装 Hadoop 2.7.7 + Spark 2.4.7 记录
  5. 固件类型bios好还是uefi好_uefi启动是什么意思 UEFI启动对比Bios启动优势在哪里
  6. python2打印字符串_Python 3基础教程2-打印语句和字符串
  7. OCR文字识别,PDF格式转换
  8. 光伏发电极其并网控制matlab/simulink仿真文件,最大功率点跟踪采用扰动观察法
  9. 翻译www.djangobook.com之第一章:Django介绍
  10. jdk没有jre的解决方法
  11. nssa和stub_华为stub、nssa区域配置
  12. 电子元器件之电容-2
  13. 骨骼动画详解-Spine
  14. linux启动菜单ubuntu,在Ubuntu上用BURG来美化开机选择菜单
  15. JavaScript基础随笔
  16. 更改分辨率时banner图片变形解决方案
  17. 如何在AutoCAD中实现鼠标双击事件
  18. 人工智能导论--浙江工业大学--王万良
  19. mysql新加一列_mysql如何增加表中新的列?
  20. NBA表格_双红!34中24!NBA季后赛【掘金vs湖人】

热门文章

  1. 单耳蓝牙耳机怎么连接_apple watch怎么连接蓝牙耳机
  2. 混合精度训练-Automatic Mixed Precision
  3. 绘画教程:人物身体姿势怎么画?如何画好头部?
  4. Markdown的前世今生 + CSDN的Markdown语法和使用大全
  5. access查找出生日期年份_在 Access 查询中使用日期作为条件的示例
  6. 将一个很长(>30)的十进制数转换为二进制数
  7. 【PS功能学习】11:打造滤镜下的艺术效果
  8. continue语句可以用在switch语句和3种循环语句中_Java基础复习笔记P20——break和continue...
  9. 测试openvpn做二层桥接的性能.
  10. 中科大失联博士:微信仅有5个好友 最近一年比较颓废