- 博客(104)
- 资源 (2)
- 收藏
- 关注
原创 IDEA 代码模板配置教程(prs快捷生成private String)
摘要:本文详细介绍了如何在IDEA中配置prs代码模板,实现输入"prs"自动生成"private String [光标];"的功能。教程包含4个核心步骤:打开设置界面→创建模板组→添加prs模板→测试效果,并提供了进阶优化方案和常见问题解决方法。通过Live Templates功能,用户可快速创建变量声明模板,提升编码效率。配置完成后,所有Java项目均可使用该模板,支持自定义光标定位和变量名提示。(150字)
2026-04-02 13:34:02
386
原创 深入理解Java SPI:机制、原理、实战与开源框架应用全解析
SPI 全称 Service Provider Interface,直译“服务提供者接口”,是Java官方提供的一种动态服务发现机制,属于Java核心库(java.util包下)的一部分,无需引入额外依赖,从JDK1.6开始正式引入并完善。由接口的定义者(如框架开发者)制定接口规范,服务提供者(如第三方开发者、框架扩展者)实现该接口,程序运行时,通过固定的约定和机制,自动扫描并加载所有符合规范的实现类,无需调用方硬编码指定实现。
2026-04-01 14:06:30
406
原创 【大模型学习】 文本子词分词算法是大语言模型的一项关键技术,负责将文本转换为模型可处理的 token 序列。那为什么不能直接以“字符“或“单词“作为模型的输入单元?
方法问题字符级序列太长、语义弱单词级词表巨大、OOV问题在字符和单词之间找到一个合适的子词粒度。控制词表规模避免未登录词问题减少序列长度保留一定语义信息因此BPE 以及类似的子词分词算法(如 WordPiece、SentencePiece)成为大语言模型的标准分词方案。
2026-03-17 11:22:36
354
原创 XXLJOB的时间轮实现原理,为什么要用时间轮?
XXL-Job时间轮是一种高效管理定时任务的调度机制,通过分层时间轮结构解决传统线程池在高并发场景下的性能问题。其核心原理是将任务按触发时间分配到时间槽中,每个槽位对应一个任务链表,通过指针移动批量触发任务。时间轮支持O(1)时间复杂度操作,仅需单线程驱动,显著降低资源消耗。XXL-Job实现中,秒级任务直接放入对应槽位,超范围任务则降级处理。该机制适用于海量定时任务场景,相比传统线程池具有更高的吞吐量和更低的系统开销。
2026-03-12 20:10:38
314
原创 TKMyBatis 全解析:从实战用法到原理源码,简化 MyBatis 单表开发利器
TKMyBatis是MyBatis的通用Mapper框架,通过封装单表CRUD操作显著减少重复代码。它兼容JPA注解,支持条件构造和多种数据库,具有轻量无侵入特性。核心使用流程包括:引入依赖(需注意版本兼容)、实体类注解配置(重点标注主键和表映射)、继承通用Mapper接口(如Mapper和MySqlMapper),并使用专属@MapperScan扫描。TKMyBatis适用于单表开发场景,相比MyBatis-Plus更轻量专注,是企业级开发中提升效率的利器。
2026-01-29 10:15:18
118
原创 MyBatis实战技巧 - MySQL的JSON字段类型转换List<xxxVO>报错问题 - 从分析到落地方案
若项目为纯MyBatis(未集成MyBatis-Plus),可自定义通用泛型处理器,一次编写可复用所有嵌套List场景。本次问题的核心是MyBatis默认JSON解析规则与自定义嵌套集合类型不匹配,且报错时机因执行阶段差异延后。解决问题的关键的是“提前干预类型转换”,让MyBatis在查询阶段就完成JSON到目标Java类型的反序列化。实际开发中,优先选择MyBatis-Plus注解方案,高效简洁;纯MyBatis项目可采用自定义泛型处理器,通用可复用。
2026-01-29 09:49:19
363
原创 Redis ZSet+Lua脚本+SpringBoot实战:滑动窗口限流方案从原理到落地
本文介绍了基于Redis ZSet、Lua脚本和SpringBoot的滑动窗口限流方案。相比固定窗口限流,滑动窗口通过划分时间片解决了边界漏洞问题,精度更高。Redis ZSet的有序特性适合存储请求时间戳,Lua脚本确保限流操作的原子性,SpringBoot则提供工程化实现。方案详细拆解了核心逻辑,包括ZSet指令设计、Lua脚本编写以及SpringBoot集成步骤,并提供了完整的可复用代码,兼顾理论深度与实战性,帮助开发者快速落地高精度限流功能。
2026-01-28 14:50:48
769
原创 Linux 如何上传本地文件以及下载文件到本地命令总结
如果你希望在 Shell 终端中**将远程服务器上的文件下载到本地电脑**,可以使用以下工具和命令...
2025-03-17 17:04:22
11125
1
原创 RCE远程代码执行漏洞
“RCE(远程代码执行)漏洞”是指攻击者能够在目标系统上执行任意代码的漏洞,通常通过网络进行远程攻击。RCE 漏洞的危害非常大,攻击者通过这个漏洞可以控制目标机器,获取系统权限,执行恶意命令,甚至窃取敏感数据、植入恶意软件等。
2025-02-27 14:28:04
1097
原创 Spring的MutipartFile 会直接将流转成文件存放在临时目录嘛?
Spring 的 `MultipartFile` 默认会将上传的文件存储到临时目录。具体行为取决于底层的 `MultipartResolver` 实现。
2025-02-27 14:17:30
640
原创 人体工学椅用的网布为什么那么坚固耐用?
人体工学椅的网布通常使用以下几种高强度合成材料制成:- **尼龙(Nylon)**:耐磨性强,抗拉伸能力优越,且具有良好的弹性和耐用性。 - **聚酯纤维(Polyester)**:抗撕裂能力强,不易变形,耐久性好,且具备一定的防水防污性能。 - **聚氨酯(PU)/热塑性弹性体(TPE)**:柔韧性高,舒适透气,常用于高端工学椅。 - **凯夫拉(Kevlar,芳纶)**(部分高端型号)**:与防弹衣相同的材料,超高耐磨和抗撕裂性能,寿命极长。
2025-02-18 16:22:26
1548
原创 Linux nohup 命令完全指南:让进程永不掉线
`nohup`(No Hang Up)是 Linux/Unix 系统中用于**忽略挂断信号(SIGHUP)**的命令,能让进程在终端关闭后继续运行。配合 `&` 符号使用,可实现后台任务的无中断执行。
2025-02-17 10:10:03
4421
原创 Linux 远程文件复制传输-----scp/rsync/sftp
`scp`(Secure Copy Protocol)是基于 SSH 的安全文件传输工具,可用于在本地和远程计算机之间复制文件或目录。
2025-02-13 15:13:27
1088
原创 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <6> 5分钟集成好前端页面
**注意: 静态资源能访问的前提是权限要放开,配置的拦截器、filter、shiro、spring security都要把静态资源的权限放开才行**1. 把直接丢进resources/public目录就能直接访问了2. resoucehandler 配置前端访问目录和路由映射3. thymeleaf 框架4. 模版引擎驱动前端页面
2025-01-16 09:53:48
361
原创 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <5> 5分钟集成好caffeine并使用注解操作缓存
在 Spring Boot 中,注解操作缓存的原理基于 Spring 的缓存抽象 (Spring Cache Abstraction)。使用缓存注解时,Spring 会自动处理与缓存相关的逻辑,而开发者只需要专注于业务代码。常用的缓存注解有 @Cacheable、@CachePut 和 @CacheEvict。
2025-01-15 17:58:32
1135
原创 Springboot 注解缓存使用教程
Spring Boot 提供了强大的缓存抽象,开发者可以通过注解快速实现缓存功能,从而提高系统性能。本教程将全面介绍 Spring Boot 提供的缓存相关注解及其作用,并结合示例讲解实际应用。
2025-01-15 16:24:43
787
1
原创 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自动生成代码
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这篇文章将会讲解如何快速集成mybatis-plus并且使用代码生成工具自动生成代码。
2025-01-15 14:52:58
318
原创 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <3>5分钟集成好druid并使用druid自带监控工具监控sql请求
Druid 是一个 JDBC 组件库,包含数据库连接池、SQL Parser 等组件, 被大量业务和技术产品使用或集成,经历过最严苛线上业务场景考验,是你值得信赖的技术产品。这篇文章将会介绍如何继承druid并且配置好druid监控。
2025-01-15 14:08:58
454
原创 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <2> 5分钟集成好最新版本的开源swagger ui --- knife4j,并使用ui操作调用接口
集成 `knife4j` 非常便捷,只需要加入官方依赖,然后简单配置即可。这里只展示简单的配置,更多的配置可参考 `knife4j` 官网文档进行修改。
2025-01-15 09:51:23
620
原创 30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目
我们开发项目的第一步就是要搭建一个适合业务系统技术栈的脚手架,那么今天就来介绍如何快速搭建一个适合我们的万能轻量级的脚手架,包含前后端的开发,服务监控,接口管理等等。技术栈采用用Springboot 3.4.1 + druid + spring task + mybatis + mybatis generator + swagger(新版swaggerUI) + mysql + SpringbootAdmin + vue2 + element.
2025-01-14 17:40:07
1651
原创 Linux 上如何做MySQL数据备份
`crontab`(cron table 的缩写)是 Unix/Linux 系统上用于设置周期性被执行的任务的工具。它允许用户定义需要在特定时间(比如每天凌晨、每周的某个时间等)自动运行的脚本或命令。这些任务被保存在一个叫做 crontab 的文件中,该文件位于用户的家目录下的 .crontab 文件中(对于系统级的任务,则可能保存在 /etc/crontab 或 /etc/cron.d/ 目录下)。
2024-09-03 21:16:11
1090
1
原创 为什么volatile能保证有序性不能保证原子性?
对于内存模型的三大特性:有序性、原子性、可见性。大家都知道volatile能保证可见性和有序性但是不能保证原子性,但是为什么呢?
2024-09-02 17:48:31
2118
原创 如何排查JVM线程死锁和JAVA应用OOM问题?
控制javacore的输出有两种方式,第一种是通过`kill -3 [pid]`来输出java当前运行时的javacore线程信息。第二种是通过jstack命令来输出Javacore文件。先面我们分开讲解两种方式如何操作。第三种方式就是容器自带脚本,在OOM或CPU资源占用过多的情况下会自动输出javacore到指定目录,比如说websphere等等容器。
2024-06-04 23:55:58
802
1
原创 手把手教你如何一键发布项目到服务器
我们平时都是走jenkins或者是openshift这种k8s平台来打包java应用,但对于小项目来说部署jenkins和openshift消耗的精力很多,并且如果我们是小型项目的话,在测试环境根本用不到这种发布方式,特别是一个人开发后端的情况我们希望服务器能够快速响应发布,快速进行调试。那么如何通过本地命令直接将应用发布到服务器呢?比如:本地运行deploy.bat 直接就能发布项目到测试环境,且所有的流程都是自动化的...
2024-06-03 21:32:34
596
原创 学习Maven看完这篇就够了
Maven 是一个强大的Java项目管理工具,由Jason van Zyl在2002年创建,最初是为了简化Apache Jakarta Turbine项目构建过程而设计的。它后来成为Apache软件基金会的一个项目,并迅速成为Java开发的标准工具之一。Maven的核心理念是通过项目对象模型(Project Object Model,简称POM)来管理和构建软件项目。
2024-06-02 18:07:24
512
原创 手把手叫你封装一个适用于Springboot的Swagger UI组件
Swagger 原生UI存在的缺点① 不够方便直观swagger ui 布局是上下瀑布式的,比如我访问完A接口,想访问B接口,访问完B接口想继续访问A接口就必须往上翻,接口少还好操作。接口多的话来回就很烦。② 请求的参数没有缓存③ 不够美观④ 如果是JWT 无状态登录,Swagger使用起来就没有那么丝滑了,因为JWT无状态登录这种需要每次在请求的Header中带上TOKEN,Swagger可没那么只能给你登录接口返回的token带过去,这样就导致无状态session的情况下Swagg...
2024-05-21 17:10:09
577
原创 【算法一则】【动态规划】求二维数组可组成的最大正方形
在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。这道题目要求找出给定二维字符数组中最大正方形的面积。我们可以使用动态规划的方法来解决这个问题。
2024-04-26 17:19:23
743
原创 【算法一则】【贪心】数组中的数可以拼装成的最大数
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
2024-04-26 08:58:28
656
原创 Springboot 中RedisTemplate使用scan来获取所有的key底层做了哪些事情
每次迭代next()都要判断是否数据集中还有数据,没有的话去redis中通过游标取下次一的数据集(2条)。然后将获取到数据集迭代器替换到游标中,上一个数据集回收(防止内存过大),使迭代器可以正常流转。
2024-04-24 14:50:57
4539
原创 【做算法学数据结构】二叉树的层序遍历【二叉树】
`二叉树`是一种常见的树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的特点是每个节点最多有两个子节点,并且子节点的顺序是有序的,即左子节点在前,右子节点在后。
2024-04-24 14:01:27
1863
原创 【做算法学数据结构】【链表】删除排序链表中的重复元素
当涉及到数据结构时,链表是一种常见且重要的数据结构。链表由一系列节点组成,每个节点包含数据和指向下一个节点的引用。相比于数组,链表的大小可以动态地增长或缩小,因为每个节点只需要存储自己的数据和指向下一个节点的引用。
2024-04-18 09:57:52
1138
原创 【算法一则】矩阵置零 【矩阵】【空间复用】
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
2024-04-17 17:24:32
1675
原创 【算法一则】编辑距离 【动态规划】
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:①插入一个字符②删除一个字符③替换一个字符
2024-04-16 14:53:53
1091
原创 【算法一则】分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
2024-04-15 09:59:05
406
原创 【算法一则】做算法学数据结构 - 简化路径 - 【栈】
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。
2024-04-12 16:20:05
1160
原创 【算法一则】- 插入区间 - 数组
给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。
2024-04-11 16:06:31
605
原创 Redis 由浅入深 (3) - Redis的两种持久化方式RDB和AOF
RDB和AOF是Redis中的两种持久化方案。RDB是一种快照式持久化机制,将Redis数据集以二进制形式保存到RDB文件中,适用于快速备份和恢复。AOF是一种日志式持久化机制,将写命令以追加的方式记录到AOF文件中,适用于数据完整性要求较高的场景。RDB持久化具有快速、紧凑的特点,但可能导致数据丢失。AOF持久化具有高可靠性和数据完整性,但写入性能较低。根据实际需求,可以选择适合的持久化方案或同时使用两种方案,以确保数据的安全性和可靠性。
2024-04-11 13:53:46
365
原创 【算法一则】贪心加双指针-盛水最多的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。
2024-04-09 16:31:17
1636
封装swagger组件,提供全新UI以及无状态登录接口调用解决方案
2024-05-21
前端一个包就能从测试晋级生产的配置方案
2024-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅