应用程序为了提高性能,可以通过使用缓存来达到目的,缓存的存储介质可以

内存或者硬盘,通常将数据存储在内存里,确切的说是jvm的内存中,缓存是

基于Map这种思想构建的,以键值对的方式进行存取,之所以还可以将

缓存的数据存储在硬盘中,是因为内存资源相当有限和宝贵,所以当内存资源

不足的时候,就可以将其存储到硬盘中,虽然硬盘的存取速度比内存要慢,但是

因为减少了网络通信量,所以还是提高程序的性能。缓存可以分为客户端缓存和

服务器端缓存,所谓的客户端缓存通常指的是IE浏览器的缓存,服务器端缓存指

的web服务器的缓存,通常可以通过第三方组件实现,如oscache,memcache

我们通常将那些频繁访问但是又不是经常改变的数据进行缓存。为了保证缓存数据的

有效性,在数据发生改变的时候,我们要刷新缓存,避免脏数据的出现。刷新缓存的

策略有两种,一种是定时刷新,一种手动刷新。

缓存的层次如下:jsp-->action-->service(通常放置在service)-->dao,

缓存越靠前对性能的提升越大

缓存的策略:(缓存空间不足需要进行清理的时候使用)

LRU:最近最少使用原则.(理解:存储书)

FIFO:先进先出的缓存策略.(理解:排队)

你来说说缓存?说说你对缓存的理解(如果遇到重复的,就可以省略)

我们在项目中使用缓存的目的是为了提高应用程序的性能,减少访问数据库

的次数,从而提高应用程序的吞吐量。我们通常将权限,菜单,组织机构

这些频繁访问但是不经常改变的基础数据进行缓存,其中我在做()某某项目的时候

就通过oscache对ZTree的树形菜单进行了缓存,并且在做的时候和单列设计

模式进行结合,考虑到多线程下的安全问题,还对单例模式加入了双重判定锁

的检查方式。

Oscache 概述相关推荐

  1. 一文了解 Kubernetes 中的服务发现

    原文链接:一文了解 Kubernetes 中的服务发现 Kubernetes 服务发现是一个经常让我产生困惑的主题之一.本文分为两个部分: 网络方面的背景知识 深入了解 Kubernetes 服务发现 ...

  2. java综合知识点总结-必背

    目录 目录 1 基础篇 4 一.JDK常用的包 4 二. Get和Post的区别 4 三. Java多态的具体体现 4 四. StringBuffer StringBuilder String 区别 ...

  3. JAVA超全笔试/面试考试题.(500问)--第三章面试题全面收录

    杂七杂八面试题收录(可能会有重复) 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承) ...

  4. java面试宝典(综合版)

    目录 目录............................................................................................... ...

  5. Java基础知识点总结(面试版)

    目录 基础篇 4 一.JDK常用的包 4 二. Get和Post的区别 4 三. Java多态的具体体现 4 四. StringBuffer StringBuilder String 区别 5 五. ...

  6. java面试题2019最新

    java面试题 常用 目录 1 基础篇 5 一.JDK常用的包 5 二. Get和Post的区别 5 三. Java多态的具体体现 5 四. StringBuffer StringBuilder St ...

  7. Java面试知识点大全

    知识点复习大纲 目录 1 基础篇 4 一.JDK常用的包 4 二. Get和Post的区别 4 三. Java多态的具体体现 4 四. StringBuffer StringBuilder Strin ...

  8. Java面试整理 -码之狼

    _面试概念整理以及项目逻辑分享 注意:( 所有的概念都是结合所学知识去记忆,死记硬背并不会有太好的记忆并且难以结合到自己的项目中去) 一.JDK常用的包 二. Get和Post的区别 三. Java多 ...

  9. Java 多线程概述

    多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...

最新文章

  1. 安装codeblocks17.12
  2. P5341-[TJOI2019]甲苯先生和大中锋的字符串【SAM】
  3. Linux Shell脚本专栏_服务器系统配置初始化脚本_01
  4. 02将代码开源到github(不会使用github的来看看吧)
  5. Flash Socket通信的安全策略问题
  6. interface not supported怎么解决_这20个婚礼伴手礼,怎么看都比喜糖有创意!
  7. iframe框架初识(一)
  8. log4j 配置和使用
  9. JDK官网下载历史版本
  10. 中国互联网络发展状况统计报告计算机,CNNIC发布《第22次中国互联网络发展状况统计报告》...
  11. 前端背景图放置_css如何设置背景图片?background属性添加背景图片
  12. win10安装PHP环境
  13. 盘点华为系工控企业——中国A股上市公司最多的创业体系
  14. echo命令详细解析(linux中超级详细,图文展示)
  15. 京东网页(动态)搭建,利用jquery实现
  16. uni-app z-index无效的解决办法(遮罩层)
  17. Win11上手初体验,文末附Win10升级Win11方法
  18. iOS客户端monkey测试
  19. 高等教育学:教育心理学概述
  20. 学习 Civil 3D二次开发从哪儿开始?

热门文章

  1. PyCharm平台下初学Django框架
  2. Python学习笔记:求一组数据的众数
  3. 16.对极几何——介绍,立体视觉约束,条件_1
  4. Linux下rcS文件中sleep用法,对busybox工具rcS脚本中exec执行﹑后台执行和nohup执行的理解...
  5. python hackrf_HackRF固件更新及编译环境搭建
  6. bzoj 2962 序列操作 线段树
  7. bzoj3190 [JLOI2013]赛车 半平面交
  8. 2017.3.14 软件包管理器 思考记录
  9. 个人计算机的缩写英语,计算机中常用的英语缩写
  10. 怎样将树的中序遍历的数输入到一个数组中_LeetCode 530.二叉搜索树的最小绝对差