![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
kangfu_521
不忘初心,方得始终。
展开
-
redis分布式锁
(1)存在的问题:假设线程获取了锁之后,在执行任务的过程中挂掉,来不及显示地执行del命令释放锁,那么竞争该锁的线程都会执行不了,产生死锁的情况。返回1,说明该进程获得锁,将 key 的值设为 value 返回0,说明其他进程已经获得了锁,进程不能进入临界区。加分布式锁,返回1,说明该进程获得锁,将 key 的值设为 value 返回0,说明其他进程已经获得了锁,进程不能进入临界区。2、解锁:当得到锁的线程执行完任务之后,使用del命令释放锁,以便其他线程可以继续执行setnx命令来获得锁。原创 2024-01-07 21:59:06 · 511 阅读 · 0 评论 -
regexp_substr截取指定的字符
sql原创 2023-02-11 17:23:57 · 685 阅读 · 0 评论 -
java常用快捷键以及自动跳转到空指针地方
java原创 2022-07-30 21:42:32 · 2331 阅读 · 0 评论 -
JAVA生成随机UUID的方式二
uuid原创 2022-07-24 21:33:19 · 3082 阅读 · 0 评论 -
避免空指针
java空指针原创 2022-07-24 21:20:19 · 402 阅读 · 0 评论 -
aop实现接口幂等性
aop实现接口幂等性原创 2022-06-04 20:03:32 · 619 阅读 · 0 评论 -
注解实现全局日志记录
1:自定义注解2:切面获取参数3:请求添加注解验证获取参数原创 2022-06-03 19:57:55 · 438 阅读 · 0 评论 -
lambda函数
lambda函数Function函数JDK8新增的函数式接口接口只有一个抽象方法apply, 接受一个T类型参数, 返回一个R类型参数, T, R表示泛型, 可以相同除了一个抽象的apply方法之外, Function存在两个默认的default方法,compose和andThen, 这两个方法都是用来组合不同的Function的 这个函数式接口被大量应用于集合以及Stream(流)中 private static Integer method(Function<String, I原创 2022-05-29 11:20:03 · 93 阅读 · 0 评论 -
ObjectMapper详细介绍,真的就这么简单
ObjectMapper详细介绍,真的就这么简单参考https://blog.csdn.net/qq_42017395/article/details/107555339原创 2022-01-16 20:41:21 · 923 阅读 · 0 评论 -
工具类commons-lang3(常用)
工具类commons-lang3(常用)https://www.jianshu.com/p/1886903ed14c<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3<原创 2022-01-08 14:31:04 · 882 阅读 · 0 评论 -
分布式事务的解决方案TCC
分布式事务的解决方案TCC参考https://blog.csdn.net/miaomiao19971215/article/details/117911483核心:增加中间阶段,所有的操作都执行成功,走confirm逻辑,否则回滚走cancel逻辑比如,1:库存服务,try 库存锁定10,增加冻结库存1,如果执行成功,confirm逻辑是库存减1,冻结库存变0,cancel逻辑库存不变10,冻结库存变0;2:积分服务,try 原积分 ,增加积分冻结,如果执行成功,confi原创 2021-08-31 22:14:11 · 80 阅读 · 0 评论 -
springboot集成hirbernate简单查询之一
springboot集成hirbernate1:引pom如图:2:application.properties增加配置如图3:简单使用扩展:封装分页如图原创 2021-08-19 21:12:30 · 80 阅读 · 0 评论 -
GOF23设计模式
GOF23设计模式菜鸟教程https://www.runoob.com/design-pattern/design-pattern-intro.html参考文档https://www.cnblogs.com/lqmblog/p/8549833.html系列教程设计模式1-5https://blog.csdn.net/zhangerqing/article/details/8194653设计模式6-12https://blog.csdn.net/zhangerqing/articl原创 2021-08-01 21:42:20 · 52 阅读 · 0 评论 -
在JAVA文件中获取该项目的相对路径
在JAVA文件中获取该项目的相对路径文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI()) https://blog.csdn.net/luckyspring/article/details/1663268原创 2021-07-22 10:07:03 · 148 阅读 · 0 评论 -
布隆过滤器与Redis过滤器
布隆过滤器与Redis过滤器布隆过滤器布隆过滤器可以用来判断一个元素是否在一个集合中。它的优势是只需要占用很小的内存空间以及有着高效的查询效率。引依赖(谷歌工程师开发,有容错率,默认0.03)<!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency> <groupId>com.google.guava</groupId> <ar原创 2021-07-17 23:16:31 · 150 阅读 · 2 评论 -
双亲委派机制
双亲委派机制Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象,而且,加载某个类的class文件时,Java虚拟机采用的是双亲委派机制,即把请求交由父类处理,它是一种任务委派模式原理(1)如果一个类加载器收到了类加载请求,它并不会自己先加载,而是把这个请求委托给父类的加载器去执行(2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的引导类加载器;(3)如果父类加载器可以完成类加载原创 2021-06-10 08:50:33 · 56 阅读 · 0 评论 -
java,js去除字符串数组中的空值
js去除字符串数组中的空值function trimSpace(array){ for(var i = 0 ;i<array.length;i++) { if(array[i] == " " || array[i] == null || typeof(array[i]) == "undefined") { array.splice(i,1); i=原创 2021-04-20 09:44:03 · 718 阅读 · 0 评论 -
java工具类poi导出多列
java工具类poi导出多列导出多列sheet,调用多次注意导出格式xss校验,数据量校验工具类package test; import java.io.OutputStream;import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermode原创 2020-09-13 16:25:28 · 309 阅读 · 0 评论 -
java 导出excel多个sheet参考
导出多个sheet要求:页面导出,同时导出四个sheet,不同的sheet展示内容不同原理分别查出四个sheet对应的数据,然后调用四次POI,所有数据一起写入,最后关闭流。注意:全量导出数据量的控制,大于20万是否自动分sheet,以及容错处理参考以下代码1:设置sheet格式以及标题 @RequestMapping("/exportAllyScoreCount")public void exportAllyScoreCount(HttpServletRequest re原创 2020-09-12 10:14:57 · 1366 阅读 · 4 评论 -
防止短信验证码被刷
防止短信验证码被刷可以采取以下几种措施:1、图形验证码限制:图形验证通过后再请求接口图形验证码限制是最常用的一种方式,用户输入图形验证码并通过之后,再请求短信接口获取验证码。2、时间限制:60秒后才能再次发送这种措施使用得比较普遍,从发送验证码开始,前端(客户端)会进行一个60秒的倒数,在这一分钟之内,用户是无法提交多次发送信息的请求的。但是却不是非常有用,技术稍微好点的人完全可以绕过这个限制,直接发送短信验证码。3、手机号限制:同一个手机号,24小时之内不能够超过5条对使用同一个手机原创 2020-08-23 17:53:26 · 1838 阅读 · 0 评论 -
存储性xss过滤
存储性xss过滤xss概念xss又叫css(cross sitescripting,跨站脚本攻击),xss攻击通过在web页面插入恶意脚本,当页面被浏览时,恶意脚本会被执行,实现攻击用户的目的。xss类型1、存储型/持久型 存储型指恶意脚本会被存储在服务器端,如数据库中或者文件中。例如留言板等很容易因为输入检验不严谨导致被攻击。2、反射型/非持久型 反射型一般是带有恶意脚本参数的URL,是一次性的。3、DOM型基于DOM文档对象模型的xss漏洞,客户端的恶意脚本程序可以通过DOM来动态原创 2020-08-23 16:27:13 · 808 阅读 · 0 评论 -
Java中List 删除元素方法參考
Java中List 删除元素Java中List 删除元素会使集合大小减少,合理删除的一些方法。1:删除后的元素i-1删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1位的元素。注意:在进行普通for循环删除时,不要把list.size()抽离出去赋值给变量,然后用此变量做为for条件, 因为删除时,list.size()的值是会改变的,要把list.size作为for条件。2:反向删除我们先从后边的元素开始循环,一个一个的往前面循环,找出特定元素删除原创 2020-08-22 14:44:07 · 2217 阅读 · 0 评论 -
文件上传,图片上传
1:文件上传1:引入阿帕奇的上传文件的jar包;官网下载2:配置文件配置bean交给spring容器管理,配置bean3:引入上传的方法把图片解析文件流的形式–保存到服务器的某一个路径下总结上传时注意设置文件大小,类型,等其他校验2:图片上传把图片存放到专门的服务器,返回一个图片名称保存到数据库,查找时根据图片名称查找图片加载返回...原创 2020-06-10 22:37:46 · 236 阅读 · 0 评论 -
Java设计模式中的策略模式
1:策略模式图解2:例如重构如下:取代if-elsepublic Double commonMethod(Integer type, Double amount) { if (3 == type) { // 计算费用 if (true) { // 此处省略200行代码,包含n个if-else,下同。。。 } return 0.00; } else if (2 == type) { /原创 2020-06-05 23:06:39 · 266 阅读 · 0 评论