Spring Boot WebSocket方案终极指南:Netty与官方Starter对比与实践
一、Maven依赖引入
1. Netty-WebSocket-Spring-Boot-Starter
<dependency>
<groupId>org.yeauty</groupId>
<artifactId>netty-websocket-spring-boot-starter</artifactId>
<version>0.13.0</version> <!-- 请使用最新版本 -->
</dependency>
2. Spring官方WebSocket Starter
<dependency>
<groupId>org.s ...
剑指offer-53、表达数值的字符串
题⽬描述
请实现⼀个函数⽤来判断字符串str是否表示数值(包括科学计数法的数字,⼩数和整数)。科学计数法的数字(按顺序)可以分成以下⼏个部分:
若⼲空格
⼀个整数或者⼩数
(可选)⼀个 ' e ' 或 ' E ' ,后⾯跟着⼀个整数(可正可负)
若⼲空格
⼩数(按顺序)可以分成以下⼏个部分:
若⼲空格
(可选)⼀个符号字符( ...
Web层接口通用鉴权注解实践(基于JDK8)
背景
目前我负责的一个公司内部Java应用,其Web层几乎没有进行水平鉴权,存在着一定的风险,比如A可以看到不属于他的B公司的数据。最近公司进行渗透测试,将这个风险暴露出来,并将修复提上了议程。
由于Web层的接口很多,我希望能用一种较为通用易于接入的方式来完成这个工作。很容易就想到了通过注解方式进行水平鉴权。说 ...
一文讲清楚图论相关算法
建图函数
List<Integer>[] buildGraph(int numCourses, int[][] prerequisites) {
// 图中共有 numCourses 个节点
List<Integer>[] graph = new LinkedList[numCourses];
for (int i = 0; i < numCourses; i++) {
graph = new LinkedList<>();
}
for (int[] edge : prerequisites) {
i ...
Vaadin 25 正式发布:回归标准Java Web,让企业级开发更简单、更高效
Vaadin 25.0 作为一个全新的大版本正式发布,开启了 Vaadin 的新一代产品线。本次升级的核心主题非常明确:减少 Vaadin 特有的“特殊机制”,让日常开发方式更加贴近标准的现代 Java + Web 技术栈,无论是样式、构建流程还是依赖管理,都更加“原生”“通用”。
获取Vaadin产品试用 请联系vaadi ...
递归与分治算法
递归算法
递归算法(Recursion Algorithm)是一种重要的编程方法,核心思想是函数通过调用自身来解决问题。在递归中,一个复杂的问题被分解为相同类型但规模更小的子问题,直到达到一个简单到可以直接解决的基本情况(基准情况)。递归算法特别适合解决具有自相似结构的问题,时间复杂度跟递归深度和每层处理的复杂度有关。 ...
WebSocket 的使用
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,允许服务器和客户端之间进行实时双向通信。
基本使用
1. 创建 WebSocket 连接
// 创建 WebSocket 连接
const socket = new WebSocket('ws://localhost:8080');
// 或者使用安全连接
const secureSocket = new WebSocket('wss://example.com/socket');
2. WebSoc ...
剑指offer-52、正则表达式匹配
题⽬描述
请实现⼀个函数⽤来匹配包括' . '和' * '的正则表达式。模式中的字符' . '表示任意⼀个字符,
⽽' * '表示它前⾯的字符可以出现任意次(包含0 次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串" aaa "与模式" a.a "和" ab*ac*a "匹配,但是与" aa.a "和" ab*a "均不匹
配
示例1
输⼊: "aaa", ...
剑指offer-51、构建乘积数组
题⽬描述
给定⼀个数组A[0,1,...,n-1] ,请构建⼀个数组B[0,1,...,n-1] ,其中B 中的元素B=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] 。不能使⽤除法。(注意:规定B[0] =A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2] )
对于A ⻓度为1 的情况,B⽆意义,故⽽⽆法构建,因此该情况不会存在。
输⼊:[1,2 ...
剑指offer-50、数组中重复的数字
题目描述
在⼀个⻓度为 n 的数组⾥的所有数字都在 0 到n-1 的范围内。 数组中某些数字是重复的,但不知
道有⼏个数字是重复的。也不知道每个数字重复⼏次。请找出数组中第⼀个重复的数字。 例如,如果输⼊⻓度为 7 的数组 [2,3,1,0,2,5,3] ,那么对应的输出是第⼀个重复的数字 2 。没有重复的数字
返回 -1 。
示例1
输⼊
[ ...
MyBatis 扩展BaseTypeHandler 转换泛型 JSON 列表
最近发现一个mybatis里面json转换的bug, 写了这么多年Java这方面还是没有理清楚, 把正确的处理方法记录一下.
一. 对象JSON转换
这个是比较简单的情况, 有通用的处理方法, 例如
用Jackson实现一个通用的 TypeHandler
@Slf4j
public class JacksonTypeHandler<T> extends BaseTypeHandler<T> {
private static ObjectMapp ...
接私活必备!一款轻量级、前后端分离的 Java 快速开发平台!
大家好,我是 Java陈序员。
在企业级项目开发中,权限管理、系统安全、快速交付往往是核心痛点。无论是接私活赶进度,还是企业搭建后台管理系统,从零开发权限模块不仅耗时耗力,还容易出现安全漏洞。
今天,给大家推荐一款轻量级、前后端分离的 Java 快速开发平台,接私活必备!
关注微信公众号:【Java陈序员】,获取开 ...
字符串匹配算法
Rabin-Karp算法
Rabin-Karp算法是一种基于哈希函数的字符串匹配算法,由 Michael O. Rabin 和 Richard M. Karp 于1987年提出,核心思想是用哈希函数将模式串和文本串中的子串转换为数值进行比较,避免大量不必要的字符比较。这个算法特别适合多模式串匹配场景,时间复杂度平均为O(n+m),n是文本串长度,m是模式串长度。
Rab ...
NCHU-数字电路模拟程序-23207332
数字电路模拟程序系列题目实践总结与分析
一、前言
数字电路模拟程序系列题目是面向编程与数字电路知识结合的综合性实践任务,分为四个迭代版本,本次聚焦前两个核心版本(数字电路模拟程序1与程序2)。该系列题目围绕数字电路中核心逻辑元件的功能模拟展开,逐步增加元件类型、扩展引脚功能、提升电路复杂度,旨在检验开发 ...
永别了,控制台!
本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!
🚀 魔都架构师 | 全网30W技术追随者
🔧 大厂分布式系统/数据中台实战专家
🏆 主导交易系统百万级流量调优 & 车联网平台架构
🧠 AIGC应用开发先行者 | 区块链落地实践者
🌍 以技术驱动创新,我们的征途是改变世界!
👉 实战干货:编程严选网
0 前言
从 20 ...
查找算法
二分查找
二分查找(Binary Search)是一种高效的查找算法,也叫折半查找。核心思想:对于一个有序的数据集合,每次查找都将查找范围缩小为原来的一半,直到找到目标值或确定目标值不存在。二分查找要求数据必须是有序的,经常应用于数组等支持随机访问的数据结构里。跟线性查找相比,二分查找的效率要高得多,特别是对于大 ...
剑指offer-49、把字符串转换成整数
题⽬描述
请你来实现⼀个 myAtoi(string s) 函数,使其能将字符串转换成⼀个 32 位有符号整数(类似C/C++ 中的 atoi 函数)。
函数 myAtoi(string s) 的算法如下:
读⼊字符串并丢弃⽆⽤的前导空格
检查下⼀个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数,还是正数。 如果两者都 ...
剑指offer-48、不使⽤加减乘除实现加法
题⽬描述
写⼀个函数,求两个整数之和,要求在函数体内不得使⽤ + 、 - 、 * 、 / 四则运算符号。
示例1
输⼊:1,2
返回值:3
思路及解答
位运算迭代法(推荐)
将加法分解为「无进位和」+「进位值」,循环直到进位为0
位运算加法的数学原理:
异或运算 (^):实现无进位加法
0^0=0, 0^1=1, 1^0=1, 1^1=0(进位丢失)
与 ...
Quartz定时任务持久化(服务重启后自动恢复)
Quartz 定时任务持久化(重启后自动恢复)
声明: 本文内容由 ChatGPT 协助生成,仅作为个人学习与记录之用。
Quartz 默认使用 RAMJobStore(内存存储),服务重启后任务会丢失。
要让定时任务在重启后仍然有效,必须启用:JDBCJobStore(数据库持久化)
本文说明如何在 Spring Boot 项目中配置 Quartz 持久化,使任务存入 ...
【技术干货】如何在Vaadin应用程序中使用自定义Figma组件
Vaadin 是一个面向企业级应用的现代 Web 开发框架,专注于 Java 全栈开发、组件化 UI 构建,并提供丰富的开箱即用 Web Components。Vaadin 的优势包括:
Java 到前端的统一开发体验
企业级安全性与长生命周期支持
高质量 UI 组件库与设计系统
与 Figma 无缝衔接的 Copilot AI 辅助开发能力
在最新版本 ...