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

汕头网站制作找谁相册管理网站模板

汕头网站制作找谁,相册管理网站模板,seo基础课程,佛山网站制作在线文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数#xff08;例如磁盘IO#xff09;#xff0c;提高… 文章目录 1、缓存2、用HashMap模拟自定义缓存3、SpringBoot提供缓存的使用4、手机验证码案例完善 1、缓存 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数例如磁盘IO提高系统性能缓存不仅可以用于提高永久性存储介质的数据读取效率还可以提供临时的数据存储空间 注意最后这条缓存的不一定就是从持久层数据库来的数据也可以是程序运行的临时数据理解别太狭义如手机验证码对应于下图的Cache1 2、用HashMap模拟自定义缓存 传统的一个查询接口每次都查需要去和数据库交互数据库压力大且容易产生性能瓶颈 在Service层引入一个Map类型的非局部变量来模拟缓存这种使用一个Map来充当临时缓冲池的思想需要学习 private HashMapInteger,Book cache new HashMap();Override public Book getBookById(Integer id){Book book cache.get(id);if(book null){book bookDao.selectById(id);cache.put(id,book);}return book; }此时调用之前的接口除了第一次需要查数据库后面直到服务重启变量被回收都不用再去查数据库。同理写个手机验证码的demo代码 看下效果 3、SpringBoot提供缓存的使用 首先导入缓存技术对应的starter dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-cache/artifactId /dependency配置配或者直接启动类上加EnableCaching启动缓存 SpringBootApplicationEnableCaching //!!!!public class SpringbootApplication { public static void main(String[] args) {SpringApplication.run(SpringbootApplication.class, args); } } 此时上面用HashMap模拟缓存的Service码就可改为 Cacheable(valuecacheSpace,key#id)public Book getById(Integer id) { return bookDao.selectById(id);} 即先从cacheSpace这块缓存空间查看有则返回没有再查持久层。Cacheable注解即以属性里的key值为键以方法的返回值为value既存又取有则取无则查后存。 以上是背后使用的缓存技术是SpringBoot默认的Simple。SpringBoot提供的缓存技术除了提供默认的缓存方案外还可以对其他缓存技术进行整合统一接口方便缓存技术的开发与管理 GenericJCacheEhcacheHazelcastInfinispanCouchbaseRedisCaffeineSimple默认memcached 4、手机验证码案例完善 引入Cacheable注解后重写并完善下这个验证码的案例。先写个工具类来生成验证码这个工具类写的不优雅重点备份下补0串的这种思想吧 public class CodeUtil {private static final String[] patch {000000,00000,0000,000,00,0,};public static String generatorCode(String tel){int hash tel.hashCode();int encryption 20230927; //加密常量码long result hash ^ encryption; //第一次加密此时我加密码写死同一个电话号码的验证码会一直不变long nowTime System.currentTimeMillis();result result ^ nowTime; //引入时间二次加密long code Math.abs(result % 1000000); //取后六位String codeStr code ; //也可能不够6位比如000147则上面的long code就是147return patch[codeStr.length()] codeStr; //加一个补0数组根据字符串长度来取对应的补0串最多补5个0最少不补这里为了适配数组下标从0开始给array[0]给个值} } 注意根据字符串长度来取数组中对应的补0串时长度为6则取array[6]但数组下标从0开始会越界 此时有两种思路处理一种是上面的给数组加个下标为0的值此时str.length()就和数组下标对应上了也可以直接让str.length()-1 return patch[codeStr.length() -1 ] codeStr;Service层生成验证码并存缓存不能用Cacheable它既存又取这样验证码在缓存失效前都一样可改为CachePut只存不取 Service Slf4j public class MsgServiceImpl implements MsgService {ResourceLazy //解决下循环以来的问题MsgService msgService;/*** 返回验证码* param tel* return*/Override//Cacheable(value telCode,key #tel)CachePut(value telCode,key #tel)public String getCheckCode(String tel) {String checkCode CodeUtil.generatorCode(tel);return checkCode;}/*** 校验验证码* param tel* param checkCode* return*/Overridepublic boolean verify(String tel, String checkCode) {return checkCode.equals(msgService.getCode(tel));}OverrideCacheable(value telCode,key #tel)public String getCode(String tel){return null;} } 关于校验方法里的取验证码之前写需求用redis直接redisTemplate.get了但这里底层缓存技术是Simple可单独写个方法上面加Caceable注解然后校验方法里调用这个获取缓存值的方法即可实现此时会有Cacheable注解失效问题注意出去绕一圈拿代理对象来调用。还是利用了Cacheable注解的特点先查有无这个key有就把value当作这个方法的返回值没有再执行代码方法体。 Cacheable(value telCode,key #tel) public String getCode(String tel){return null; }Controller层随便写就行 RestController RequestMapping(/msg) public class MsgController {ResourceMsgService msgService;GetMapping({tel})public String getCode(PathVariable String tel){return msgService.getCheckCode(tel);}PostMappingpublic Boolean verifyCode(RequestParam String tel,String code){return msgService.verify(tel,code);} }重点关注 工具类中加密使用了一个补0数组的思想Cacheable既存又取这样验证码在缓存失效前都一样可改为CachePut只存不取Cacheable注解因方法内部调用而失效的解决不用Redis再取数据时引入了一个方法加Cacheable注解并返回null即查到这个key的值就返回否则返回方法的返回值即null
http://www.dnsts.com.cn/news/109367.html

相关文章:

  • 黄河道网站建设公司万网虚拟主机两个网站
  • 商标注册 网站建设如何入账饭店装修设计
  • 高效的客户管理crm系统一键优化助手
  • 做交网站企业招聘网
  • 怎么做网站步骤免费的做一个学校网站
  • 新网站建设的工作总结深圳保障住房轮候查询
  • 万网官方网站网站界面切片做程序
  • 食品企业网站模板wordpress login 必应壁纸 插件
  • 建什么网站做cpawordpress 伪静态原理
  • 企业做网站天津点评网页设计作业
  • 公司网站的建设要注意什么建设网站平台哪里最好
  • 网站建设公司哪家最好网站网页建设实训心得体会
  • wap网站开发和自适应九龙坡区网站建设
  • 项目推广计划书邯郸做seo网站优化
  • 广宁城乡建设网站广州黄埔做网站的公司哪家好
  • 陕西省煤炭建设公司第一中学官方网站图片编辑软件手机版
  • 仿一个展示型网站多少钱建设银行人力资源系统网站
  • 网站排名查询系统影视自助建站系统源码
  • 吉林省城乡建设厅网站6模拟建筑
  • 承德做网站的公司自己建设网站怎么做
  • 建设部网站诚信平台创业网站怎么做
  • 企业门户网站开发源码想开个网站怎么做
  • 网站建设选方舟网络高端网站建设的介绍
  • 常州网站建站公司做化验的在哪个网站里投简历
  • 现在还有做静态网站的酒店电子商务网站建设
  • 官方网站下载派的appwordpress用户名密码注册
  • 织梦网站后台一键更新没反应淮北市建筑
  • 网站站点风格合肥网络营销公司
  • 手机版的网站用什么开发建筑人网站
  • 怎么搭建自己的网站挣钱网络优化推广