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

哪一个网站有做实验的过程网站开发最流行的语言

哪一个网站有做实验的过程,网站开发最流行的语言,如何做网站首页收录,专门做化妆品平台的网站有哪些文章目录缓存使用缓存源码测试代码上一篇《【Mybatis源码解析】mapper实例化及执行流程源码分析》#xff0c;主要讲解了Mybatis的基本原理一级执行的流程#xff0c;这一章来讲一下Mybatis的两个缓存#xff1a;一级缓存和二级缓存。 因为网上大部分都是使用xml配置的方式… 文章目录缓存使用缓存源码测试代码上一篇《【Mybatis源码解析】mapper实例化及执行流程源码分析》主要讲解了Mybatis的基本原理一级执行的流程这一章来讲一下Mybatis的两个缓存一级缓存和二级缓存。 因为网上大部分都是使用xml配置的方式来使用缓存所以我们这里讲解一下注解的方式。 一级缓存 一级缓存是SqlSession级别。一级缓存的作用域是 SqlSession , Mabits 默认开启一级缓存。 在同一个SqlSession中执行相同的SQL查询时第一次会去查询数据库并写在缓存中第二次会直接从缓存中取。 当执行SQL时候两次查询中间发生了增删改的操作则SqlSession的缓存会被清空。 一级缓存 Mybatis的内部使用一个HashMapkey为hashcodestatementIdsql语句。Value为查询出来的结果集映射成的java对象。 Sqlsession执行insert、update、delete等操作commit后会清空该SqlSession缓存。 MyBatis一级缓存的生命周期和SqlSession一致。每次执行update前都会清空localCache。 MyBatis一级缓存内部设计简单只是一个没有容量限定的HashMap在缓存的功能性上有所欠缺。 MyBatis的一级缓存最大范围是SqlSession内部有多个SqlSession或者分布式的环境下数据库写操作会引起脏数据建议设定缓存级别为Statement即关闭一级缓存。 二级缓存 二级缓存是Mapper级别的缓存多个SqlSession去操作同一个Mapper中的sql语句则这些SqlSession可以共享二级缓存即二级缓存是跨SqlSession的。简单说就是同一个namespace 下的 mapper 映射文件中用相同的sql去查询数据会去对应的二级缓存内取结果。 MyBatis的二级缓存相对于一级缓存来说实现了SqlSession之间缓存数据的共享同时粒度更加的细能够到namespace级别通过Cache接口实现类不同的组合对Cache的可控性也更强。 MyBatis在多表查询时极大可能会出现脏数据有设计上的缺陷安全使用二级缓存的条件比较苛刻。 在分布式环境下由于默认的MyBatis Cache实现都是基于本地的分布式环境下必然会出现读取到脏数据需要使用集中式缓存将MyBatis的Cache接口实现有一定的开发成本直接使用Redis、Memcached等分布式缓存可能成本更低安全性也更高。 总结 生产上建议关闭一级和二级缓存。 缓存使用 yml配置 mybatis:configuration:# 驼峰大小写经典 Java 属性名 aColumn 的自动映射,默认值为falsemap-underscore-to-camel-case: true# statement: 关闭一级缓存session开启一级缓存 默认为sessionlocal-cache-scope: session# 开启二级缓存 默认为truecache-enabled: true# 打印sqllog-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper接口注解版 CacheNamespace注解 作用于mapper接口上面是用来实现二级缓存的如果不指定实现类的话默认就是PerpetualCache实际上就是hashmap实现的 CacheNamespaceRef注解 在多个命名空间中共享相同的缓存配置和实例 Options(useCache true,flushCache Options.FlushCachePolicy.DEFAULT)注解 useCache 是否用缓存默认为true。 flushCache 是否刷新缓存默认不刷新。 mapper接口xml版略。 缓存源码 新版的源码并没有太多改变发送请求时先从二级缓存中取未取到则去一级缓存中取仍未取到会去数据库中查再存到一级缓存中当事务提交之后会存到二级缓存中值得注意的是mybatis中的一些cashe相关类挺有意思的用来解决不同场景的问题比如脏读。因为源码比较简单易懂确实没什么值得可以写的我想大家cv一下我的demodebug一下应该就明白了。 Mybatis在生产环境是否应该开启缓存功能mybatis 开启二级缓存Mybatis开启本地二级缓存和使用redis开启二级缓存Mybatis 之 二级缓存你尝试过在mybatis某个mapper上同时配置cache/和cache-ref/吗Mybatis缓存源码分析 测试代码 controller package com.ossa.web3.controller;import com.ossa.web3.bean.User; import com.ossa.web3.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/user) public class TestController {Autowiredprivate UserMapper userMapper;GetMapping(/l1cache)Transactionalpublic User l1cache() {User user1 userMapper.selectById(c5329f3b-3e98-4722-8faf-e87d9b981871);User user2 userMapper.selectById(c5329f3b-3e98-4722-8faf-e87d9b981871);return null;}GetMapping(/l2cache)public User l2cache() {return userMapper.selectById(c5329f3b-3e98-4722-8faf-e87d9b981871);}DeleteMapping(/deleteById)public User deleteById() {return userMapper.deleteById(c5329f3b-3e98-4722-8faf-e87d9b981871);} } 实体类 package com.ossa.web3.bean;import lombok.Data;import java.io.Serializable;Data public class User implements Serializable {private String id;private String name;private Integer age; } mapper接口 package com.ossa.web3.mapper;import com.ossa.web3.bean.User; import org.apache.ibatis.annotations.*;CacheNamespace public interface UserMapper {Select(value select * from user where id #{id})Options(useCache true,flushCache Options.FlushCachePolicy.DEFAULT)User selectById(String id);Delete(value delete from user where id #{id})Options(useCache false,flushCache Options.FlushCachePolicy.TRUE)User deleteById(String id); } application.yml spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://issavior-aliyun-rds.mysql.rds.aliyuncs.com:3306/test?useUnicodetruecharsetEncodingutf-8useSSLfalseserverTimezoneAsia/ShanghaiallowMultiQueriestrueusername: rootpassword: rootmybatis:configuration:# 驼峰大小写经典 Java 属性名 aColumn 的自动映射,默认值为falsemap-underscore-to-camel-case: true# statement: 关闭一级缓存session开启一级缓存local-cache-scope: session# 开启二级缓存cache-enabled: true# 打印sqllog-impl: org.apache.ibatis.logging.stdout.StdOutImpl############### Sa-Token 配置 (文档: https://sa-token.cc) ############## #sa-token: # # token名称 (同时也是cookie名称) # token-name: satoken # # token有效期单位s 默认30天, -1代表永不过期 # timeout: 2592000 # # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 # activity-timeout: -1 # # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) # is-concurrent: true # # 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) # is-share: true # # token风格 # token-style: uuid # # 是否输出操作日志 # is-log: false
http://www.w-s-a.com/news/335881/

相关文章:

  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作
  • 苏州网站建设优化贵州网站建设lonwone
  • 网站建设与推广方案模板网站建设教程搭建浊贝湖南岚鸿给力
  • 网站建设内部下单流程图昆明网站制作公司
  • 手机网站焦点图在线外链推广
  • 做静态页面的网站中国建设银行河南省分行网站
  • 镇平县两学一做专题网站佛山家居网站全网营销
  • 做网站的需求wordpress图片怎么居中
  • 网站开发的技术流程图抖音seo排名优化软件
  • dedecms做电商网站得物app官方下载安装
  • python做网站教程微网站 举例
  • 百度喜欢什么样的网站如何引用网站上的资料做文献
  • 如何给网站添加网站地图军刀seo
  • 模板网站开发推广陈村大良网站建设
  • 建设工程网站单位名单广州微信网站建设效果
  • 网站开发选择框代码字节小程序开发教程
  • 杭州网站设计精选柚v米科技免费的简历制作
  • 网站域名 没有续费做外贸怎样上外国网站
  • 购物网站功能模块设计电子工程网站有哪些
  • 网站营销公司哪家好wordpress主题 破解主题
  • 做网站就是做服务中国效能建设网站
  • 唐河企业网站制作怎么样抖音seo排名软件哪个好
  • 做棋牌网站团队wordpress无限加载
  • 思创医惠网站建设微网站是手机网站吗
  • 宁波海曙网站建设市场营销管理
  • 网站被降权了怎么办做网站网页维护手机App开发
  • 营销型网站建设熊掌号tomcat 网站开发
  • 东莞网站建设seo广州 flash 网站