- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 注解式方法级业务锁-支持分布式
在工作中,难免遇到需要进行并发控制的操作,要保证同一个数据,只允许一个进程来进行操作,其余进程等待解锁或返回失败的场景,遇到这样的情况,每次都需要在方法内编写很多并发控制的代码,不仅维护困难,也影响代码的可读性,所以考虑把这些代码写到切面里,并通过注解指定唯一的主键ID,即可实现分布式的并发控制,类似下面的场景都适用:1、存在同一时间多个用户操作同一物资、商品、订单等的库存的情况。(也是我遇到的场景)2、轮询支付结果,支付成功后进行缴费等操作。
2023-01-16 12:10:47
227
1
原创 【Mybatis在collection调用其他mapper方法查询数据】
代码如下 <resultMap id="userDeptRspResult" type="com.ruoyi.system.domain.DeptStreetRsp" extends="SysDeptResult"> <!-- childs:接收返回结果的对象中的属性名 javaType:用于接受结果的集合的类型 ofType:集合中泛型的类型 select:要调用的mapper方法 column:对应的本次返回结果中列的名称,会当成参数传到select中,此处
2021-11-26 16:53:14
2524
1
原创 【扫码登录的逻辑以及关于扫码登录的思考】
扫码登录的逻辑以及关于扫码登录的思考扫码登录逻辑概述流程概述:关于扫码登录的应用场景关于扫码登录的思考扫码登录逻辑概述流程概述:1、当用户打开门户网站时,浏览器请求服务器获取一个随机唯一序列用于识别本次的登录操作,同时浏览器每隔一段时间就请求服务器,查询本次随机序列当前的状态,例如,已扫码请在手机端确认登录、登录成功、或者是已经失效需要重新生成等。2、用户使用手机扫码[^思考点] ,此时手机会将用户的信息以及本次的随机序列发送至服务器3、服务器收到以后根据用户信息,以及本次序列查询到用户的密码,或
2021-11-26 16:22:24
1113
原创 分布式锁-注解式redisson分布式锁
注解式redission分布式锁原理概述适用场景引入依赖编写注解编写切面使用参考阅读原理概述利用aop特性,编制一个环绕切面给加了注解的方法体上,每次执行该方法时,首先进入切面进行加锁,执行完毕后回到切面,进行解锁。redission本身支持redis的集群部署,而redission的缺陷就是,当线程A对master的节点加锁成功,二master节点会异步复制到slave节点,而恰在此时,还没有复制到slave节点时,master节点发生奔溃宕机,slave节点切换为主节点的时候,线程B也加锁成功,此
2021-07-30 10:31:05
1099
原创 @ControllerAdvice注解的用法
@ControllerAdvice转载说明描述用法1-全局异常捕获用法2-全局数据绑定用法3-数据预处理转载说明转载参考于:spring的@ControllerAdvice注解,SpringMVC 中 @ControllerAdvice 注解的三种使用场景!描述@ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。对于@ControllerAdvice,我们比较熟知的用法是结合@Except
2021-07-29 16:32:32
15220
原创 springboot2+shiro+JWT实现权限校验功能——通过注解方式实现
shiro通过注解方式实现权限校验颗粒度概述总体概述总体步骤1、开启注解的支持2、编写doGetAuthorizationInfo进行授权3、在控制器中添加注解进行权限控制4、编写异常处理类测试颗粒度概述权限颗粒度分为粗粒度和细粒度:粗粒度:用户具有CRUD中的某些完整的权限,通常指表的操作细粒度:用户只允许操作表中的某些特定的数据,例如:用户只允许操作id为1,2,3,4的数据shiro的权限控制是粗粒度的,可以通过业务代码实现细粒度的权限控制总体概述shiro进行权限验证的前提是用户已经登
2021-07-27 11:32:17
417
原创 springboot2+shiro+JWT实现登录功能
springboot2+shiro+JWT实现登录功能啥是JWT?流程说明原理陈述实现步骤:创建项目,添加依赖编写application.yml配置文件创建用户实体类以及导入JwtUtil以及RedisUtil编写JwtToken实体类,需要实现AuthenticationToken接口编写ShiroConfig编写自定义ShiroRealm编写JwtFilter过滤器编写登录控制器测试啥是JWT?参考这片文章:link流程说明原理陈述其实就是用户登录的时候生成了一个字符串儿,存到了redis中,
2021-07-23 19:23:55
3772
3
原创 maven将依赖转为本地依赖后,报错找不到相关类
maven将依赖转为本地依赖后,报错找不到相关类场景描述原始部署新的部署问题解决办法借助idea插件:Maven Helper原因分析场景描述项目信息:springboot原始部署原本部署是将项目由本地打包成jar包,然后运行dockerfile打包成镜像后,在某台服务器上进行部署运行新的部署现在将项目制作成流水线,然后在流水线中拉取gitlab中的代码,然后执行maven install,之后执行dockerfile打包成镜像,推送到镜像仓库中。问题由于流水线也好,镜像仓库也好,都是公司不
2021-06-30 17:02:18
672
原创 通过代码向logback配置文件中传入值,输出文件增加ip标识
一、业务需求多个实例需要拥有各自的配置文件,并通过文件名-[ip].log标识。或想要在打印的日志中显示线程id,ip地址,自定义标识,都可以通过如下方式实现参考文章:https://blog.csdn.net/Somnus_k/article/details/102871048二、实现1、只在文件内部使用实现步骤: ①编写继承了ch.qos.logback.classic.pattern.ClassicConverter类的方法 ②重写convert()方法......
2021-03-23 17:41:49
1675
原创 nginx-专题,搭建https,配置nginx日志,配置http转https并解决post转get问题,反向代理参数丢失问题
一、nginx搭建https协议支持https://blog.csdn.net/huanger_/article/details/113184950二、nginx配置日志打印access_log用来定义日志级别,日志位置。语法如下:日志级别:debug > info > notice > warn > error > crit > alert > emerg1、使用默认格式的日志把默认配置文件中http模块的日志配置放开即可 #l.
2021-03-07 12:18:04
1315
原创 mybatis中使用foreach遍历集合参数
一、对于xml文件中使用foreach遍历集合的使用参考博客:https://www.cnblogs.com/fnlingnzb-learner/p/10566452.htmlforeach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,该参数为必选。 index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open:foreach代码的开始符号,一般
2021-03-06 18:13:06
1107
原创 基于Nginx,Zuul,Springboot,GridFS的大文件上传
基于Nginx,Zuul,Springboot的大文件上传一、前言 一共三环,三环都得配置文件大小等限制条件,缺一不可二、配置1、配置Nginx配置请求体最大限制大小,超过则报错413,请求实体过大server { listen 8889; client_max_body_size 1024M; #配置请求体最大限制大小,超过则报错413,请求实体过大.........}修改配置后执行./nginx -s relo...
2021-02-25 16:21:10
157
原创 阿里云个人站点基于nginx代理搭建https协议支持
阿里云个人站点基于nginx代理搭建https协议支持准备工作购买免费个人版dv证书配置nginx开放防火墙端口检测是否成功准备工作1.个人服务器2.安装了ssl_moudle的nginx3.一个静态页面购买免费个人版dv证书一、阿里云官方操作文档1.兑换免费资源扩容之前可以直接在付费页面购买免费的dv证书,但是2021年开始,需要先兑换免费证书扩容包,然后再用扩容包兑换免费dv证书2.使用免费证书扩容包兑换dv证书进入ssl管理控制台兑换单域名证书3.申请签发证书下
2021-01-26 17:57:06
785
原创 sql专题-逐步更新
1、sql中判断查询返回的字段是否为空(2021-01-22)错误:select case name when null then 1 when '' then 1 else 0 end as namefrom tb_b_student正确:select case when name is null then 1 else 0 end as namefrom tb_b_student...
2021-01-22 16:51:45
102
原创 java操作linux命令,调用ffmpeg转码视频
最近有一个需求需要调用linux上的ffmpeg将视频转换为MP4,切片,然后保存,在了解了ffmpeg后,下一步就是如何用java调用linux命令行了一、概述java要执行系统命令的话,其实是支持的,不需要添加其他的jar包或者依赖,就可以,java8APIhttps://docs.oracle.com/javase/8/docs/api/java/lang/Process.html#Process主要涉及的类就是公共抽象类Process,使用ProcessBuilder.start(),.
2021-01-13 15:30:39
2663
3
原创 FFmpeg,Nginx-rtmp-module搭建简易的流媒体服务器
学习笔记——FFmpeg,Nginx-rtmp-module说明:仅代表个人理解,肯定会有理解不准确的地方,劳烦指正,没有复制粘贴文档中的官方语言一、FFmpeg的安装以及使用1、FFmpeg简介ffmpeg就是一款基于命令行操作的,处理视频的开源工具,比较轻量比较好用,主要功能有音视频分离,视频转码,视频切片,加滤镜等功能。官网地址:www.ffmpeg.org,由于外国的网站,下载可能比较慢,也是全英文的,所以推荐个中文文档https://my.oschina.net/u/236747.
2021-01-13 11:59:24
491
原创 java基础——垃圾回收机制
java基础——垃圾回收机制内存的管理判断是否为垃圾的算法垃圾的分代回收机制分代步骤三种垃圾回收机制介绍JVM调优和FullGC易造成内存泄露的操作注意以下有更加全面的剖析,供参考借鉴,来源于百家号内存的管理java内存的管理很大程度上是指对对象的管理,包括对象的空间分配和释放对象的空间分配:使用new关键字创建对象对象的释放:将对象赋值为null判断是否为垃圾的算法引用计数法堆中的每个对象都有一个引用计数器,当对象被引用一次,就加一,置null一次就减一,变为0时,表示为无用的对象。优点:算
2020-08-16 21:26:54
154
原创 JAVA基础——类
JAVA基础——类对象和类的概念构造方法内存分析对象和类的概念类可以看做是对象的模板,对象的抽象,系统根据类来创建对象抽象:抽出相似的部分,归为类通过抽象创建类,系统根据类,再去创建对象构造方法用new关键字调用,用于创建对象不写构造方法时,默认产生一个无参构造方法,当自己定义其他构造方法的时候,系统不会产生默认无参构造方法内存分析JAVA虚拟机内存分为三类:栈Stack,堆heap,方法区method area栈:1、栈描述的是方法执行的内存模型,每个方法呗调用时都会创建一个栈帧,用于
2020-08-14 20:04:12
92
原创 java基础——方法
java基础——方法方法的本质方法的重载方法的本质方法就是用于完成特定功能的代码片段方法的重载构成重载的条件:1、不同的含义,形参的类型,形参的个数,顺序不同2、只有返回值不同不构成重载3、只有形参名称不同不构成重载重载和重写的区别:重写:顾名思义就是重新写了一遍,例如父类的toString方法,在子类中不太适用,就需要子类去重写父类的方法,来适应自己的业务需求重载的方法和原方法是两个完全不同的方法,好比两个人,只有名字相同而已4、递归算法:费时费力费内存,本质就是自己调用自己..
2020-08-14 19:50:22
65
原创 java基础(一)
java的优势与特性1、跨平台、可移植2、安全性3、简单性(C+±)4、高性能5、分布式6、多线程7、健壮性java应用程序的运行机制编译+解释编译:javac.exe将执行的java文件,编译成JVM可以识别的字节码文件,即*.class解释:java.exe启动jvm,调用所需类库,将字节码文件解释成机器码指令JVM,JRE,JDK区别JVM是一个虚拟的用于执行字节码文件的虚拟计算机JREJAVA运行的环境,包含JVM,库函数,和运行java程序必要的文件JDKjava开
2020-08-14 19:35:58
104
文件夹打包成压缩包工具类:PackToZipUtils.java
2020-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人