当前位置: 首页 > news >正文

泗阳网站建设用js做自适应网站

泗阳网站建设,用js做自适应网站,域名交易网站源代码下载,wordpress 实现申请友情链接links其实缓存字面的意思就是将一些内容缓存下来#xff0c;等下次使用的时候可以直接调用#xff0c;通过数据库得到数据#xff0c;有时候会使用相同的数据#xff0c;所以mybatis自然也支持缓存。 而mybatis按照缓存的效果可以分两大类#xff1a;一级缓存和二级缓存。 一…其实缓存字面的意思就是将一些内容缓存下来等下次使用的时候可以直接调用通过数据库得到数据有时候会使用相同的数据所以mybatis自然也支持缓存。 而mybatis按照缓存的效果可以分两大类一级缓存和二级缓存。 一级缓存 其实一级缓存是SqlSession级别通过SqlSession查询的数据会被缓存下次查询相同的数据就会从缓存中直接获取不会从数据库中重写访问。 还是老规矩进行代码演示 ListStudent getStudent();select idgetStudent resultTypeStudentSELECT sid , sname , sage , ssex , gid FROM testmybatis.student/select然后调用的时候不关闭SqlSession然后连续调用getStudent() System.out.println( -------------------- 第一次 studentMapper.getStudent());System.out.println( -------------------- 第二次 studentMapper.getStudent()); 可以看出sql语句只是调用了一次但是还是得到了数据。 但是一级缓存也是会失效的其中有四种情况 不同的SqlSession对应不同一级缓存比如例子一直说用的同一个sqlsession也没有关闭sqlsession重写创建了一个。 同一个SqlSession但是两次查询的条件不同甚至是操作相同但是方法名不同,也不会调用缓存可以看下演示 ListStudent getStudent();ListStudent getStudent1();select idgetStudent resultTypeStudentSELECT sid , sname , sage , ssex , gid FROM testmybatis.student/selectselect idgetStudent1 resultTypeStudentSELECT sid , sname , sage , ssex , gid FROM testmybatis.student/select然后调用 System.out.println( -------------------- 第一次 studentMapper.getStudent());System.out.println( -------------------- 第二次 studentMapper.getStudent());System.out.println( -------------------- 另一个第一次 studentMapper.getStudent1());System.out.println( -------------------- 第三次 studentMapper.getStudent());可以看出哪怕同一个sqlsession其一样的sql语句通过两个不同方法也不会调用缓存因为sql语句执行了两次。当然其也不会影响已缓存是数据。 同一个sqlsession同一个查询在两者依次执行期间执行了任何依次增改操作。 来实体体验一把 ListStudent getStudent();void deleteStudent();select idgetStudent resultTypeStudentSELECT sid , sname , sage , ssex , gid FROM testmybatis.student/selectdelete iddeleteStudent!--这里删除一个不存在的数据 --delete from testmybatis.student where sid100/deleteSystem.out.println( -------------------- 第一次 studentMapper.getStudent());studentMapper.deleteStudent();System.out.println( -------------------- 第二次 studentMapper.getStudent());可以看出其删除无论是否存在 同一个SqlSession两次执行同一个查询中介执行了手动清楚缓存。 System.out.println( -------------------- 第一次 studentMapper.getStudent()); // 调用clearCache() 手动清楚了缓存sqlSession.clearCache();System.out.println( -------------------- 第二次 studentMapper.getStudent());二级缓存 二级缓存是SqlSessionFactory级别的同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存此后执行相同的查询语句数据就会从缓存中得到。 启用的条件 在核心配置文件中加入配置setting namecacheEnabledvaluetrue /在映射文件中加入cache /查询的数据转换的实体类类型必须实现序列化接口Serializable。SqlSession在关闭或者提交以后二级缓存才会有效。 还是老规矩进行演示: 前提在核心配置文件mybatis-config.xml中配置 settingssetting namecacheEnabled valuetrue //settings然后再映射文件中添加 cache/cache实体类需要实现序列化接口 public class Student implements Serializable现在开始演示 SqlSession sqlSession sqlSessionFactory.openSession(true); // 这个通过代理模式传入什么类返回什么类StudentMapper studentMapper sqlSession.getMapper(StudentMapper.class);System.err.println( -------------------- 第一次 sqlSession -- getStudent studentMapper.getStudent());// 不关闭的话sqlSession.close();SqlSession sqlSession1 sqlSessionFactory.openSession();StudentMapper studentMapper1 sqlSession1.getMapper(StudentMapper.class);System.err.println( -------------------- 第一次 sqlSession1 -- 方法名为 getStudent studentMapper1.getStudent());System.err.println( -------------------- 第一次 sqlSession1 -- 方法名为 getStudent1 studentMapper1.getStudent1());studentMapper1.deleteStudent();System.err.println( -------------------- 第二次 sqlSession1 -- 执行deleteStudent后调用 getStudent studentMapper1.getStudent());sqlSession1.close();可以看出了只要删除或者修改了数据库无论是一级缓存还是二级缓存都会同时失效。 这个又有一个疑问了那就是一级缓存和二级缓存的查询顺序是什么 先查询二级缓存没有再查询二级缓存如果还没有再查询数据库。 为什么会这样因为二级缓存覆盖的更广一级缓存中没有但是在二级缓存中减少去数据库中取数的频次。 补充--------二级缓存的配置 其实再映射文件中可以配置一些属性 看一下官网举出的例子 cacheevictionFIFOflushInterval60000size512readOnlytrue/eviction 属性是缓存回收策略默认是LRU。 这个更高级的配置创建了一个 FIFO 缓存每隔 60 秒刷新最多可以存储结果对象或列表的 512 个引用而且返回的对象被认为是只读的因此对它们进行修改可能会在不同线程中的调用者产生冲突。 可用的清除策略有 LRU – 最近最少使用移除最长时间不被使用的对象。FIFO – 先进先出按对象进入缓存的顺序来移除它们。SOFT – 软引用基于垃圾回收器状态和软引用规则移除对象。WEAK – 弱引用更积极地基于垃圾收集器状态和弱引用规则移除对象。 默认的清除策略是 LRU。 flushInterval刷新间隔属性可以被设置为任意的正整数设置的值应该是一个以毫秒为单位的合理时间量。 默认情况是不设置也就是没有刷新间隔缓存仅仅会在调用语句时刷新。 size引用数目属性可以被设置为任意正整数要注意欲缓存对象的大小和运行环境中可用的内存资源。默认值是 1024。 readOnly只读属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。 因此这些对象不能被修改。这就提供了可观的性能提升。而可读写的缓存会通过序列化返回缓存对象的拷贝。 速度上会慢一些但是更安全因此默认值是 false。 当然还有一个属性没有写那就是type其在使用第三方的缓存的时候使用因为有些第三方的缓存的功能会更强大所以有时候会使用第三方缓存这个就下一篇具体聊。
http://www.hkea.cn/news/14577936/

相关文章:

  • 做网站首页轮播图代码我要自学网python
  • 苏州网站建设 江苏千渡vue移动端开发
  • 搭建一个网站教程网站后台要求
  • 网站开发常见毕业设计题目重庆装修公司大全
  • 做网站配置服务器建筑设计公司名字起名大全
  • 郑州做网站天强科技福田我要做网站优化比较好
  • 免费app做logo的网站石家庄企业网站制作哪家好
  • 网站开发z亿玛酷1流量订制如何避免网站模板侵权
  • 湛江建站公司模板学网页设计的课程
  • 有哪些基于网站开发的报表设计器上网站 ftp
  • 网站建设创业计划书wordpress网站网速慢
  • 网站建设外包价格河西集团网站建设
  • 电商建站价格wordpress添加首页
  • 网站发布内容是否过滤做h5的网站哪个好
  • 书店网站建设网站栏目结构企业建设网站需要什么资料
  • 建立网站的公司杭州免费wordpress搭建
  • 个人网站作业生产建设网站基坑开挖深度
  • 只做同城交易的网站小白怎么做网站
  • 网站建设所需美工画册设计流程
  • 网站建设腾讯云与阿里云网络商城是什么意思
  • 网站的push运营怎么做html网页上传到服务器
  • 加强网站基础建设网站管理系统安装
  • 网页排版软件关键词优化排名推广搜ノ牛霸天排名软件
  • 网站手机客户端开发兰州最坑人的装修公司
  • windows server 2008 wordpress网络优化推广公司
  • 域名备案网站源码游戏门户网站开发资源
  • 广州 建 网站wordpress装了英文版怎么转中文
  • 顺德龙江做网站图片转二维码在线制作生成器
  • 中国二级建造师网官网哈尔滨网站建设 seo
  • 网站建设 zzit6小白的博客 wordpress