Springboot中通过模糊搜索Redis中的key进行批量删除数据
前言:在开发后台的时候,通过Redis对分页查询的数据进行了缓存,但是数据在做新增、删除、更新的时候,为了保持Redis中缓存的数据与数据库中的数据保持一致性,需要对缓存也进行更新处理。
这里我用的更新方法也是非常简单暴力,就在查询的时候,会对Redis进行一次查询,根据分页的页码和相对应的表。如果查到的缓存为空,那么就会去数据库查询,然后再设置缓存。
而在增删改的接口上,我是直接将缓存删除,等到调用分页查询数据的接口的时候再去重新设置一次缓存,以此保持数据的一致性。
具体可以看看下面的代码
12345678910111213141516171819202122232425262728293031323334353637383940414243// 调用/page接口,参数有PageNum、pageSize,还有其他非必须参数进行模糊查询@GetMapping("/page")public Result page(@RequestParam("pageNum") Integer pageNum , ...
JQuery的基本使用
前言:JQ…被时代淘汰的三分前端库,也曾一度封神
JQuery是什么JQuery是轻量级、快速、简洁的脚本库,它对Js进行了封装,简单来说就是可以用更少的代码做更多的事情。
中文API手册:https://jqueryapi.net/
速查表:https://www.bejson.com/apidoc/jquery/
JQuery的下载和安装下载 JQuery有两个版本的 JQuery 可供下载:
Production version - 用于实际的网站中,已被精简和压缩。
Development version - 用于测试和开发(未压缩,是可读的代码)
以上两个版本都可以从 jquery.com 中下载。
Juery 库是一个 JavaScript 文件,您可以使用 HTML 的 <script> 标签引用它:
123<head> <script src="jquery-1.10.2.min.js"></script></head>
通过 CDN引用JQ
Staticfile CDN:
12 ...
HTML5之Canvas标签
前言:<canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。
Canvas基本使用<canvas>看起来和<img>标签一样,只是 <canvas> 只有两个可选的属性 width、heigth 属性,而没有 src、alt 属性。
如果不给<canvas>设置widht、height属性时,则默认 width为300、height为150,单位都是px。也可以使用css属性来设置宽高,但是如宽高属性和初始比例不一致,他会出现扭曲。所以,建议永远不要使用css属性来设置<canvas>的宽高。
兼容性某些较老的浏览器(尤其是IE9之前的IE浏览器)或者浏览器不支持HTML元素<canvas>,然后可以用替代内容来渲染。
用文本替换:
123<canvas> 你的浏览器不支持canvas,请升级你的浏览器</canv ...
Github+jsDelivr给网站静态资源键入免费的CDN加速
前言:对于一些静态资源,可以通过JsDelivr白嫖CDN进行免费加速
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。——百度百科
放在Github的资源在国内加载速度比较慢,因此需要使用CDN加速来优化网站打开速度,jsDelivr + Github便是免费且好用的CDN,非常适合博客网站使用。
jsDelivr可以为发布在GitHub上面的js、css、jpg等文件进行免费的CDN加速,虽然速度可能不算很快,但是相比于用GitHub直接来打开,速度还是有显著的提升的。
比如我自己发布的一个js文件:https://cdn.jsdelivr.net/gh/AliveLeqi/MyResume@v1.0/js/scripts.js
除此之外,还有其他CDN加速的方法,比如又拍云、七牛云、腾讯云等服务商都提供了国内的全 ...
Element-UI中获取表格当前行的操作
前言:很多时候我们需要用Element-UI中的表格表单来展示我们的数据,而很多时候我们需要对这些数据做增删改查啥的,所以需要获取每一行的数据,当前行的数据,然后才能对当前行的数据进行操作。
方法一Vue中有一个叫插槽的东西,可以在button按钮外层 使用template 标签包裹 然后使用slot-scope="scope",或者#default=scope进行设置 在需要获取数据的地方使用scope.row得到需要操作行的所有字段信息
1234567891011121314<el-table :data="tableData" :border="true" > <el-table-column prop="id" label="角色ID"/> <el-table-column prop="name" label="角色名称" /> <el-table-column prop=& ...
Element-UI上传文件用action上传跨域问题
前言:在实习过程,遇到了需要开发大文件上传的业务,由于公司之前的小文件上传是用action的方式来上传,但是这样做有比较大的限制,而且很容易遇到跨域的问题出现。
解决方法需要使用 :http-request 的方式上传,通过这种方式上传,可以不给action赋值。
1234567891011121314151617181920<el-form-item label="视频封面上传"> <el-upload class="upload-demo" action :http-request="uploadImg" list-type="picture-card" :limit="1" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :on-exceed="handleExceed" ...
Redis保存Json数据,有序和乱序(SpringBoot),Json和字符串相互转换顺序问题
前言:目前Java开发用到的JSON操作工具有很多,大多都有一点点小问题,我在开发毕设的时候有用过Hutool的JSONUtil、阿里的FastJSON、还有谷歌的GSON。
看过了很多CSDN和各个论坛的文章,感觉对这个JSON顺序问题的解决方案还是比较少相关文章,自己还是做一个记录吧
各个问题JSONUtil
Hutool的JSONUtil在进行JSON转字符串的时候(JSONUtil.toJsonStr()),会有个问题,就是会自动把时间类型LocalDateTime的值转成时间戳,然后存在Redis中,取出来就有问题了,和数据库拿出来的不一样,造成数据不一致
解决方案
序列化配置
用下面的方法(不知道生效不,听说可以)
123String mes= JSON.toJSONString(requestMap);改为String mes= JSON.toJSONStringWithDateFormat(requestMap,"yyyy-MM-dd HH:mm:ss");
FastJson
阿里的FastJSON更坑,其转换方法会自动给你把JSON数据按 ...
Java中list的stream流详解
Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作
使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询,也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。
基本使用
Java中的Stream的所有操作都是针对流的,所以,使用Stream必须要得到Stream对象
比如
123List<String> list = new ArrayList<>();Stream<String> stream = list.stream(); //获取一个顺序流Stream<String> parallelStream = list.parallelStream(); //获取一个并行流
获取流的方法
根据List集合获取流
123456// 创建List集合List<String> list = new ArrayList<>();l ...
Js实现防抖节流
Js实现防抖节流前言防抖节流是经常在开发中用到的一个东西,都是用来控制某个函数在一定时间内触发次数,两者都是为了减少触发频率,以便提高性能或者说避免资源浪费。
防抖: n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时
节流: n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效
手写防抖123456789101112131415161718192021222324252627282930313233343536373839<body> <button id="FangDou">防抖</button></body></html><script> var btn = document.querySelector('#FangDou') // 手写防抖 // 防抖是函数在n秒内重复触发,则重新计时 // func 要进行防抖的方法,delay是要防抖的时间 function debounce(func, delay){ ...
Java返回时间带T,LocalDateTime时间格式化方案
前言:除了标题的问题,Redis在存储LocalDateTime的时候也会有相关的问题,解决方案其实也很简单,在相对应的实体类,对LocalDateTime类型加几条注解即可
解决方案通过LocalDateTime的源码可以发现,问题出现的原因:
1234@Overridepublic String toString() { return date.toString() + 'T' + time.toString();}
这个问题可以前端处理,也可以后端处理,前端处理就是可以通过格式化的方式去掉T
而后端处理的方式,最简单就是加注解
123456/** * 时间 */@DateTimeFormat(pattern = "yyyy-MM-dd")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")private LocalDateTime time;
如果这个时候,后台返回还有T的话,可能是引用了fastJso ...