- 博客(33)
- 收藏
- 关注
原创 防止表单重复提交功能简单实现
在绝大多数提交的post请求中,重复提交数据不但会导致重复操作,可能有些操作比较耗时(比如:导入数据,可能需要频繁操作数据库),所以用户很可能会误以为请求没有响应,所以再次点击操作按钮。这种情况下的重复请求是没有意义的,而且还会占用服务端资源。因此,防止表单重复提交功能很有必要,是对系统功能的优化。本篇文章就介绍前端+后端的防止表单重复提交功能实现。
2025-10-29 18:42:54
420
1
原创 Spring Boot整合Apache Shiro权限认证框架(实战篇)
查看Authenticator接口的抽象实现类AbstractAuthenticator的authenticate()方法。
2025-10-15 10:34:49
897
原创 Spring Boot整合Apache Shiro权限认证框架(应用篇)
权限访问控制通常会使用RBAC(Role-Based Access Control,基于角色的访问控制)模型。用户表角色表权限表用户-角色表角色-权限表权限是分配给角色的,通过用户-角色表关联到用户,从而实现用户权限的访问控制。权限对应的就是项目中的接口资源信息,包括资源名称、资源URL等信息。
2025-10-07 21:50:08
955
原创 Spring Boot整合Apache Shiro权限认证框架(基础篇)
Sa-Token、Apache Shiro、Spring Security是我们常用的3大权限认证框架,这篇文章教大家怎么在Spring Boot中整合Apache Shiro实现简单的认证和授权功能。如无其他说明,文字中涉及类的包都是在项目根包cn.edu.sgu.www.shiro下创建的。
2025-10-07 09:50:40
1310
原创 聊天应用中发送多个文件的解决方案
在中一次性发送多个文件是博主最近做聊天项目遇到的最大的难题,通过表单可以提交一个文件,或者在表单中声明多个不同name属性的file文件输入框<input type="file" name="xxx" />,然后点击发送的时候提交表单的数据。通常表单的提交使用异步的方式,这就需要使用到Ajax、Axios等异步API。同时,需要使用FormData API来手动添加表单项,通过其append()、delete()方法动态增删表单数据。
2025-10-02 20:17:19
496
原创 MySQL学习笔记-JSON数据类型
MySQL支持JSON数据类型,可以高效地访问中的数据,并提供了许多操作的方法。文档是结构化数据库里的概念,学过MongoDB的同学应该知道文档就是指的一条记录,而MongoDB里的一条记录就是一个类似JSON的结构(BSON,Binary JSON)。
2025-09-08 15:05:44
523
原创 Apache Dubbo学习笔记-使用Dubbo发布、调用服务
Apache Dubbo经常作为一个RPC框架来使用,这篇文章主要介绍使用Dubbo配合注册中心来发布和调用服务。Apache Dubbo和Spring Boot、JDK的版本对应关系。博主使用的Spring Boot版本是2.3.4.RELEASE、jdk版本是1.8.0_461,所以采用dubbo的2.7.23版本(因为3.0.x版本不兼容)。
2025-09-07 18:20:39
1489
原创 Spring Boot整合Knife4j接口文档工具
可以通过设置knife4j.documents在knife4j的文档页面添加自定义的文档。knife4j.documents.group设置文档分组knife4j.documents.name设置文档所在的父菜单名knife4j.documents.locations指定自定义文档的路径knife4j:enable: true # 开启knife4j增强模式documents: # 自定义knife4j文档name: 开发文档。
2025-08-27 02:17:32
722
原创 request to https://registry.npm.taobao.org/vue-loader failed, reason: certificate has expired
今天在安装vue项目的依赖时,使用npm命令报错了,说是原来设置的源镜像网站的证书过期了。如图,修改之后npm命令正常执行~解决方案:将网址修改为。
2025-08-27 02:02:56
262
原创 Spring框架学习笔记-AOP
点切入代号(Pointcut Designators,PCD)是点切入表达式的一部分。Spring AOP支持在点切入表达式中使用以下代号: 经测试@target和@within的作用是一样的。点切入代号代号说明execution用于匹配方法执行连接点。within限制匹配有特定类型的连接点(可以指定多个类型)。this限制匹配Spring AOP代理对象是指定类型的实例的连接点。target限制匹配目标对象是指定类型的实例的连接点。args限制匹配参数是指定类型的实例的连接点。
2025-08-27 01:34:05
1371
原创 AbstractQueuedSynchronizer的enq()方法的代码问题
博主思考一番之后,觉得new Node()是额外的开销,可能jdk的开发者有另外的意图,但是这里完全可以用传入的node。这样的话,每次入队的操作就减少了一次对象的创建。这个// Must initialize注释引起了我的兴趣,意思是必须初始化,但是为什么是new Node()这是复制来自jdk1.8源码的AbstractQueuedSynchronizer类的enq()方法。当然,这个结论是经过了验证的,自己写了一个AQS测试了一下。
2025-08-24 23:03:06
235
原创 java.time.LocalDateTime详解
看到这篇文章的你,是否还在用java.util.Date?看完这篇后,可以果断抛弃它了,因为java.time包下有新的一整套的时间API,功能比它更强大。java.time.LocalDateTime是java.time.Temporal的实现类,用来表示包含年月日时分秒和纳秒的某个时间点,如:2025年8月24日13点27分13秒。
2025-08-24 16:54:19
630
原创 Spring Boot整合Eureka、Config搭建注册中心和配置中心
这篇文章详细介绍怎么通过Spring Boot整合Eureka和Config分别搭建一个注册中心和配置中心的服务。这篇文章详细介绍怎么通过eureka和config分别搭建一个注册中心和配置中心的服务。
2025-08-23 23:53:47
1302
原创 Spring Boot整合Nacos
本章主要介绍如何使用Spring Boot整合Nacos搭建一个注册中心和配置中心服务。文章使用的Nacos版本为:nacos-1.4.8。
2025-08-22 01:55:15
989
原创 Spring Boot整合Feign实现RPC调用,并通过Hystrix实现服务降级
feign/openfeign和dubbo是常用的微服务RPC框架,由于feigin内部已经集成ribbon,自带了负载均衡的功能,当有多个同名的服务注册到注册中心时,会根据ribbon默认的负载均衡算法将请求分配到不同的服务。这篇文章就简单介绍一下怎么使用feign来调用远程的服务。首先,需要有一个微服务注册中心来提供服务注册与发现,本章就使用nacos作为注册中心。springboot整合nacos搭建注册中心和配置中心。
2025-08-22 01:01:05
1130
原创 Spring Boot整合Spring Cloud Gateway搭建网关服务
spring cloud netflix zuul、spring cloud gateway是最常见的微服务网关,通过网关,我们可以在请求到达后端指定服务之前/后端服务处理完业务响应数据之后对请求/响应进行处理。比如常见的参数校验、接口鉴权等等,在后端服务的拦截器和过滤器能做的事都可以在网关实现。网关的主要功能是请求的转发以及负载均衡,和nginx的功能类似,只是底层实现不同。
2025-08-22 00:51:00
1856
原创 给easyui的textbox组件绑定回车事件
刚开始直接使用jquery的on()、bind()或者keydown()方法直接绑定,但是事件并没有生效。最后,直接把源代码里的inputEvents属性重新定义,保留原来的blur事件。上面的这个代码像是easyui通过这种方式管理了组件的keydown事件。经过上面的修改,终于成功为textbox组件绑定上了keydown事件。于是,就先解绑keydown事件,然后再重新绑定:但是还是绑定失败了。项目里有一个仓库搜索功能,需要为textbox组件绑定一个回车事件。
2025-08-17 13:55:48
390
原创 java.util.stream.Stream详解
java.stream.Stream是jdk-1.8的新特性,也是非常实用的API。Stream接口中定义了许多便捷的方法。作为一个爪哇程序猿,有必要熟练掌握Stream的使用。
2025-08-14 19:51:30
492
原创 尽量不要使用Arrays.asList()方法
再回到前面的java.util.AbstractList这个抽象类,在这里实现了iterator()方法,返回了一个内部类Itr的对象。看到这里,可能很多人就会怀疑是自己的代码的问题,毕竟java.util.ArrayList是支持removeAll()方法的,不可能报错。所以,调用removeAll()方法实际调用的是java.util.AbstractList的removeAll()方法。在Itr中的remove()方法,直接调用了java.util.AbstractList的remove()方法。
2025-08-14 18:38:11
1044
原创 LeetCode09-回文数
因为题目给出的条件是x的值在int范围内,int类型的最大值为2_147_483_647(21亿,一共10位数)。数组的长度是未知的,所以可以直接设置为最大值10,可以满足所有整数的要求。这个方法只需要遍历一次,只把数字的前半部分存到数组里,后半部分的数字直接和数组里的数据比较。这题的关键在对称,假设数字的位数(数组的有效长度)为bit:bit表示输入的整数x的位数。因为题目给的实例中,负数不可能对称(只有一个减号),因此负数可以直接返回false。回文数的最大特征是,中位数的两边是对称的。
2025-08-11 15:40:09
393
原创 java.util.Timer源代码详解
java.util.Timer是jdk提供的一个简单的定时任务工具类(定时器),底层通过单个线程+while循环实现。可以看到源代码中,定义了两个变量。
2025-08-11 15:29:05
378
原创 在eclipse中安装lombok插件(全网最简单教程)
很多文章写的安装方法都太复杂,其实安装很简单,只需要把lombok-${version}.jar复制到eclipse的安装目录下。然后修改一下eclipse安装目录下的配置文件eclipse.ini,在最后一行加上这个配置。好久没用eclipse了,现在打开之前的项目,需要在eclipse里安装lombok插件。最后刷新当前项目的Maven,使用的@Data等lombok的注解就会生效了。
2025-08-01 14:43:07
336
原创 ZooKeeper安装和使用
ZooKeeper是一个开源的分布式协调框架,主要用来解决分布式集群中应用系统的一致性问题。Zookeeper官网Zookeeper的数据结构类似于文件系统,其中每一个目录叫做Zookeeper的节点(znode)。
2025-07-23 15:34:42
1616
原创 Ubuntu上搭建Nacos集群
Nacos、Eureka、Consul、Zookeeper等都是常用的微服务注册中心。这篇文章详细介绍一下在Ubuntu操作系统上搭建一个nacos的集群,通过Nginx配置Nacos服务器的负载均衡。
2025-07-22 00:09:13
1293
原创 Ubuntu上安装和使用Docker
经过上面的步骤,已经完成了docker的安装,可以通过以下命令查看docker的版本。这部分参考了钟老师的。至此,ubuntu上安装docker就完成了。2、创建文件deamon.json。1、切换到/etc/docker。5、安装docker-ce。3、指定使用阿里云镜像。2、把下面的内容复制到。
2025-07-20 14:18:49
703
原创 Elasticsearch安装和使用教程
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够实现近乎实时的搜索。Elasticsearch官网。
2025-07-19 14:31:01
2219
1
原创 Ubuntu上搭建Redis集群(主从、哨兵、分片集群)
温馨提示:本文章的内容需要在上一篇文章的基础上阅读。Ubuntu上通过源码方式安装Redis因为设备有限,只能在一台Ubuntu虚拟机上通过不同端口启动多个redis服务来搭建集群。。
2025-07-17 16:27:00
1639
原创 Ubuntu上通过源码方式安装Redis
上一篇文章已经介绍了再Ubuntu操作系统上安装Redis的详细过程,但是因为安装的Redis只有最主要的配置文件和redis-server,为了更深入地学习Redis和进行更复杂的操作,需要安装一个完整的Redis服务。这篇文章就介绍一下怎么在Ubuntu上通过源码编译方式快速完成Redis的安装。
2025-07-17 13:30:36
1027
原创 Redis命令大全
本篇文章介绍Redis各种数据类型对应的命令,通用的命令将归纳到string类型中。注意:文章中涉及的下标index、start、end都是从0开始的。
2025-07-17 11:49:37
1649
1
原创 Ubuntu上Redis的安装和使用
注意:此文章的教程源于旧版本Redis官网。目前Redis官网的页面已经变得非常复杂,但文章内容依然有效。
2025-07-16 23:00:41
1413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅