- 博客(22)
- 收藏
- 关注
原创 记录java sse简单小例子
JavaSSE(Server-SentEvents)是一种用于在Web应用程序中发送实时数据的技术,它允许服务器向客户端推送数据,而无需客户端发送请求。SSE基于HTTP协议,支持单向通信,即服务器可以向客户端推送数据,但客户端不能向服务器推送数据。通过springboot的简单例子。//处理服务器返回的数据。//通过http发送消息。
2025-01-18 02:25:34
852
2
原创 spring security 6.3.3 + java-jwt 3.10.3
spring security 6.3.3 + java-jwt 3.10.3 模拟前后端分离使用token验证登录例子中实现了用户通过security验证成功后获取后端返回的token,在token有效期内可以访问受保护的 /user_request 接口,通过token验证后获取后端返回的数据项目结构pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM
2024-09-20 00:09:00
1847
原创 spring security 6.3.3
spring security 6.3.3 登录用户简单校验小例子项目结构pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
2024-09-17 16:24:01
883
翻译 spring security V6+版本 中文版文档
https://springdoc.cn/spring-security/index.htmlSpring Security Version 6+
2024-09-16 11:00:19
177
1
原创 springboot自定义线程池配合@EnableAsync和@Async使用小例子
Springboot自定义线程池配合@EnableAsync和@Async使用的小例子
2022-12-17 01:59:15
321
原创 mysql多个单列索引和联合索引的区别详解
https://blog.csdn.net/Abysscarry/article/details/80792876
2021-12-15 10:19:48
756
原创 Git撤销已经推送(push)至远端仓库的提交(commit)信息
@hanchao5272有关修改提交(git commit)信息的方法可以参考: Git commit –amend 修改提交信息有时,在git push之后,才发现还有一些代码需要进行很小的改动,这些改动在原则上不应该作为一次新的提交。这时,我们需要撤销这次推送(git push)与提交(git commit),然后进行代码修改,再重新进行提交和推送。为了实现这个目的,需要进行三步操作。1.撤销提交信息首先,通过git log查看提交信息,以便获取需要回退至的版本号:然后,通过git res
2021-09-22 10:40:06
829
原创 DateTimeFormatter线程安全的时间格式器
相信大家在项目中会经常获取时间进行操作,平时使用最多的就是SimpleDateFormat时间格式器了,但这个是线程不安全的,就像源码中提到的那样* <p> * Date formats are not synchronized. * It is recommended to create separate format instances for each thread. * If multiple threads access a format concurrently, it mu
2021-04-15 15:05:41
1632
原创 java aop 使用的简单小例子
例子是通过springboot项目内的自定义注解的方式,通过自定义注解来使用aop对需要执行的方法做一些操作的,废话不多说直接上代码1.首先pom.xml文件里添加aop的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>
2021-04-14 20:04:40
1087
2
原创 SpringMVC项目同时启动Netty服务,并解决Netty服务中Dao层依赖注入为null问题
前言:项目为SpringMVC架构,在此基础上新增加了Netty服务用来接收客户端发来的消息,在Netty的handler业务处理类内需要将消息存入数据库。流程:先看一下包的结构图按照此包结构图奉上精心修改过的伪代码,基本上可以拿走就直接使用的图片蓝色背景的都为netty(ats)相关服务新增加的文件1.netty服务端,实现了Runnable接口,为的是可以在重写的run()方法内启动服务端(没整合之前是在下边写了一个main函数启动的,当然也没有实现Runnable接口);因为在初始化时候
2021-04-09 16:44:22
1117
原创 netty客户端与服务端的接口协议中的多项式
一. 项目中实际使用的多项式:G(X)=X16+X12+X5+1(ISO 3309)二.这个多项式就是实际项目中用来做CRC校验码校验数据正确性的,可以将此多项式直接转换为对应的二进制,x后边的数字可以理解为位数,有的话就是1,没有的话就是0,最后一位就是1可以看作是x的0位,得出二进制10001000000100001。三.后边的详细内容以后再补充吧…...
2021-03-24 17:18:10
176
原创 jsp页面直接使用时分秒的情况
今天修改一处通过input输入框输入的时间,之前使用type=“time”,只可以显示出时/分,显示不出来秒;经过修改为type=“datetime-local” step="01"年月日时分秒都可以显示,或者type=“time” step="01"只显示时分秒;效果如下:开始时间:<td style="padding-left:2px;"><input name="start" id="start" value="${pd.start}" type="datetime-local"
2021-03-23 15:05:09
588
原创 LengthFieldBasedFrameDecoder详解
public LengthFieldBasedFrameDecoder( int maxFrameLength, int lengthFieldOffset, int lengthFieldLength, int lengthAdjustment, int initialBytesToStrip, boolean failFast)这是源码里的六个参数://1.单个包最大长度//2.长度字段开始位置偏移量//3.长度字段所占字节数//4.长度字段默
2021-03-19 14:29:12
1625
原创 Netty-LengthFieldBasedFrameDecoder参数的理解
Netty-LengthFieldBasedFrameDecoder参数的理解public LengthFieldBasedFrameDecoder(int maxFrameLength, int lengthFieldOffset, int lengthFieldLength, int lengthAdjustment, int initialBytesToStrip) { this(maxFrameLength, lengthFieldOffset, lengthFieldLength
2021-03-15 13:15:17
550
原创 Netty搭建服务端和客户端过程详解
服务端public class PrintServer { public void bind(int port) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); //1 EventLoopGroup workerGroup = new NioEventLoopGroup(); //2 try { ServerBootstrap b
2021-03-08 16:43:16
492
原创 java代码开启事务
同时操作多条sql语句向数据库内添加数据的代码开启事务例子@Autowiredprivate PlatformTransactionManager ptm;public string add(){ DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); Transa
2021-03-05 10:23:39
727
2
原创 HTTP请求中常见的GET和POST的区别
https://www.cnblogs.com/logsharing/p/8448446.html
2021-02-21 16:13:25
128
原创 idea提交git代码并防止代码冲突的步骤
idea提交git代码并防止代码冲突的步骤1.用idea将已经clone好的项目打开2.在idea打开的项目内正常写代码3.代码写完后,点击idea上方菜单栏内git旁边第1个蓝色"↙"按钮(这是将最新的代码从远处仓库更新到你的项目内,每次准备提交代码之前首先操作这一步)4.然后可以看到自己写的代码是在更新后的最新的代码基础上的,并没有冲掉自己写的代码5.再点击git旁边的第2个绿色"√"按钮,在跳出的界面内选择你提交时是否需要忽略的文件6.填写提交代码的备注7.commit下拉选择有comm
2021-02-04 11:16:20
904
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人