- 博客(96)
- 资源 (10)
- 收藏
- 关注

原创 Java文件上传【通用】
Java文件上传 主要是针对于网页来说,一般是通过input的file类型上传文件流到后台,再通过后台处理将文件移动到指定位置达到上传的目的。这里贴代码时,主要是以springboot框架为例,但是是通用的。1、表单提交上传<form enctype="multipart/form-data" method="post" action="/upload"> 文件:<input type="file" name="fileUpload"/> <input t
2020-12-13 11:51:07
25904
2
原创 SqlServer实现自定义编号(触发器、存储过程)
近期接触到需要生成自定义编号的功能,首先理清楚自定义编号的结构:“标识”+“日期”+“三位流水号”,实现原理呢其实很简单,就是找到拼接标识对应最大流水号,+1后成为新的流水号这边用到了两种方式:触发器、存储过程,其实也可以用java代码实现,因为这边用的是帆软报表的填报,就只考虑在数据库完成这部分操作。
2024-07-25 14:34:01
599
原创 FineReport填报列权限控制
首先讲解下场景:填报报表需要不同角色决定对不同列是否有填写或者查看权限以填写权限为例,首先考虑用到的是 帆软自带的权限编辑,其次考虑的是 JS控制单元格权限
2024-06-27 14:53:39
1950
1
原创 初识Jwt(结合SpringBoot)
JWT是JSON Web Token的简称,是目前流行的跨域的认证解决方案,作为传递信息的凭证,它是由服务器端签发的且是带签名的,服务器端通过数字签名来保证数据的完整性和有效性。
2024-03-12 18:18:37
923
原创 JVM入门篇(面试前速补)
内存效率:复制算法>标记清除>标记压缩(时间复杂度)内存整齐度:复制算法=标记压缩算法>标记清除算法内存利用率:标记压缩算法=标记清除算法>复制算法没有最优算法。只有最合适的算法。所以GC的好处:分代收集算法年轻代:存活率低,用复制算法老年代:存活率高,区域大,用标记清除+标记压缩混合实现(标记清除n次,进行标记压缩)
2024-03-06 12:38:53
1136
原创 Java使用Redis实现分页功能
lrange 是用于从列表中获取指定范围内的元素。zrange是用于从有序集合中排序查询(升序)指定范围内的元素。
2024-02-20 15:44:20
1208
原创 Java实现Redis延时队列
“如何实现Redis延时队列”这个面试题应该也是比较常见的,解答如下:使用sortedset(有序集合) ,拿时间戳作为 score ,消息内容作为key 调用 zadd 来生产消息,消费者用zrangebyscore 指令获取 N 秒之前的数据轮询进行处理。
2024-02-19 17:38:05
1839
原创 Java使用Redis实现消息队列
redis实现消息队列时一般使用 list 结构作为队列, rpush 生产消息, lpop 消费消息。当 lpop 没有消息的时候,要适当sleep 一会再重试。若不使用sleep,则可以用指令blpop(该指令在没有消息的时候,它会阻塞住直到消息到来)
2024-02-19 15:52:50
1671
原创 MyBatis多数据源以及动态切换实现(基于SpringBoot 2.7.x)
MyBatis多数据源以及动态切换实现可以实现不同功能模块可以对应到不同的数据库,现在就让我们来讲解一下。
2024-02-06 11:06:07
1861
原创 @ControllerAdvice(实现全局异常、全局参数、请求参数预处理)
ControllerAdvice注解实现 全局异常、全局参数、请求参数预处理 的功能
2024-02-01 16:34:26
1140
原创 锁的优化机制(偏向锁、自旋锁、轻量级锁、重量级锁)
锁的状态从低到高依次为无锁->偏向锁->轻量级锁->重量级锁,升级的过程就是从低到高,降级在一定条件也是有可能发生的,优化机制包括自适应锁、自旋锁、锁消除、锁粗化、轻量级锁和偏向锁。这边主要以synchronized、ReentrantLock两种实现方式来说明。
2024-01-30 12:01:52
2649
原创 synchronized 和 ReentrantLock 的区别
synchronized 和 ReentrantLock 都是 Java 中的同步机制,用于确保在多线程环境下,同一时刻只有一个线程能够访问特定的代码块、方法或对象。它们的区别在于实现方式和性能上。
2024-01-30 11:42:41
296
原创 CAS(多线程)
CAS的主要操作包括比较和替换,它会先比较内存中的某个位置的值是否等于预期值,如果是,则将该位置的值替换为新值;:ABA的问题指的是在CAS更新的过程中,当读取到的值是A,然后准备赋值的时候仍然是A,但是实际上有可能A的值被改成了B,然后又被改回了A,这个CAS更新的漏洞就叫做ABA。Java中有AtomicStampedReference来解决这个问题,他加入了预期标志和更新后标志两个字段,更新时不光检查值,还要检查当前的标志是否等于预期标志,全部相等的话才会更新。
2024-01-29 10:33:52
400
原创 CountDownLatch和CyclicBarrier的区别(简单聊聊)
需要注意的是,CyclicBarrier的同步位置是循环的,即当一组线程到达指定的位置后,它们会继续等待其他线程到达指定的位置,然后继续执行。因此,使用CyclicBarrier时需要特别注意循环次数的设置,避免死循环。(注意:若执行线程多余CyclicBarrier的容纳线程,则barrier.await()方法等待方法则不会执行,后续的执行完毕代码不会执行)也可以参考这篇博客。
2024-01-26 11:28:41
684
原创 基于Redis限流(aop切面+redis实现“固定窗口算法”)
令牌桶算法属于流量控制算法,令牌桶算法以恒定的速率产生令牌,之后再把令牌放回到桶当中,令牌桶有一个容量,当令牌桶满了的时候,再向其中放令牌会被直接丢弃。(注意我这边使用的springboot版本是2.6.x,因为2.7开始博主的部分代码不可用了):创建springboot项目并引入maven,配置好配置文件。:记得要下载redis并配置好。
2023-12-20 15:31:11
922
原创 JAVA三种拦截方式
最近面试有遇到拦截方式的场景,结合网上xdm的代码整理了下,分为以下三种:java原生过滤器Filter、springMVC拦截器、aop切面。
2023-08-18 11:24:24
4996
原创 Cookie的使用(Java、JavaScript)
Cookie是一种会话技术,它用于将会话过程中的数据保存到用户的浏览器中,从而使浏览器和服务器可以更好的进行数据交互。
2022-11-22 10:09:12
929
SpringBoot-MyBatis-DataSource(多数据源以及动态切换)
2024-02-06
狂神springcloud学习笔记加代码
2022-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人