LogParser-LLM 前缀树算法实现
根据 LogParser-LLM 的架构设计,前缀树(Prefix Tree / Prefix Parse Tree)的核心目标是作为高速缓存,拦截 99% 的重复日志模式,仅在无法“严格匹配”时才调用 LLM。以下是基于论文描述的 Java 实现方案。该实现涵盖了核心数据结构设计、日志匹配逻辑(Strict Match)以及模版更新机制。核心设计思路1. 节点设计 (Tree
Web层接口通用鉴权注解实践(基于JDK8)
背景目前我负责的一个公司内部Java应用,其Web层几乎没有进行水平鉴权,存在着一定的风险,比如A可以看到不属于他的B公司的数据。最近公司进行渗透测试,将这个风险暴露出来,并将修复提上了议程。由于Web层的接口很多,我希望能用一种较为通用易于接入的方式来完成这个工作。很容易就想到了通过注解方式进行水平鉴权。说来惭愧,我工作了十年多还没有从0到1写一个稍微复杂点的注解,正好利用这个机会进行学习和实践
Spring Boot WebSocket方案终极指南:Netty与官方Starter对比与实践
一、Maven依赖引入1. Netty-WebSocket-Spring-Boot-Starter<dependency> <groupId>org.yeauty</groupId> <artifactId>netty-websocket-spring
MyBatis踩坑实录:那些不报错但让你debug到深夜的Bug
早上刚到公司,打开电脑,写着需求听着歌。突然钉钉一响,测试发来消息:"你那个接口报错了"。打开日志一看,MyBatis又炸了。说实话,MyBatis这玩意儿平时挺好用的,但有时候报的错真让人摸不着头脑。尤其是那种本地跑得好好的,一上线就炸的Bug,简直让人怀疑人生。今天就记录两个让我debug到深夜的坑,它们都有个共同特点:代码看起来完全没问题,但运行时就是莫名其妙地报错。如果
国产化PDF处理控件Spire.PDF教程:在Java快速解析PDF文本、表格、图像和元数据
在 Java 应用中,PDF 解析(PDF parsing in Java)通常用于从 PDF 文件中提取可用信息,而不仅仅是将其渲染出来进行展示。常见的应用场景包括文档索引、自动化报表处理、发票分析以及数据采集与导入流程等。与 JSON、XML 等结构化数据格式不同,PDF 的设计目标是保证视觉呈现效果的一致性。文本、表格、图像等内容在 PDF 中并不是以逻辑结构存储的,而是以带有坐标信息的绘制
使用Java Stream,将集合转换为一对一Map
在日常的开发工作中,我们经常使用到Java Stream,特别是Stream API中提供的Collectors.toList()收集器,但有些场景下,我们需要将集合转换为Map,这时候就需要使用到Stream API中提供的另一个收集器:Collectors.toMap,它可以将流中的元素映射为键值对,并收集到一个Map中。1. 三种主要的重载方法Collectors.toMap有3种重载方法,
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
背景对于分库分表应用来说,使用org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource是一个不错的解决方案,你可以通过配置文件编写分库分表规则,从而在编码时透明地使用分表(当然,路由规则的相关字段还是要传的,之前也有文章分析过这些字段的处理过程:深入理解Mybatis分库分表执行原理)。但是,在一些
Java 操作 Markdown-commonmark-java 使用
commonmark-java 是一个用于解析和渲染 Markdown 文本的 Java 库;本文主要介绍其基本使用,文中所使用到的软件版本:Java 17.0.5、commonmark-java 0.25.1。1、简介commonmark-java 可以用来解析抽象语法树(AST),访问和操作其节点,以及生成 HTML 或 Markdown。它最初是 commonmark.j
Spring AOP + Guava RateLimiter:如何用注解实现优雅限流?
最近在项目中遇到了一个真实场景:这是一个基于 MQ 触发的定时跑批任务。平日里风平浪静,可是一旦大促或者数据量激增,MQ 里的积压消息就会瞬间推送给消费者。虽然消费者服务虽然处理得过来,但底层的核心业务数据库却扛不住了——大量并发查询瞬间打满 CPU,CPU 使用率飙升至 100%,直接影响了线上实时业务的稳定性。考虑到该服务是单节点部署,引入 Redis 做分布式限流显得“杀鸡用牛刀”,也增加了
收入写RAFT算法:Leader选举
1. 概述1.1 目的本文档详细说明了 LingRaft-Lite 模块中 Raft Leader 选举功能的实现,包括涉及的类、实现细节、测试方法等,便于开发者理解和复现。1.2 功能范围节点状态管理(Follower、Candidate、Leader)选举超时检测投票请求与响应处理多数派选举机制心跳维护 Leader 地位网络分区处理1.3 Raft 算法参考本实现基于 Raft 论文(Die
线程如何停止?线程之间如何协作?线程之间的异常如何处理?
线程停止stop方法stop 方法虽然可以停止线程,但它已经是不建议使用的废弃方法了,这一点可以通过 Thread 类中的源码发现,stop 源码如下:stop 方法是被 @Deprecated 修饰的不建议使用的过期方法,并且在注释的第一句话就说明了 stop 方法为非安全的方法。原因在于它在终止一个线程时会强制中断线程的执行,不管run方法是否执行完了,并且还会释放这个线程所持有的所有的锁对象
Java中的数据类型
Java 数据类型详解目录数据类型分类基本数据类型引用类型基本类型 vs 引用类型包装类String 详解字符串常量池内存布局对象生命周期常见问题数据类型分类Java 数据类型 ├── 基本类型(8种) │ ├── 整数类型:byte, short, int, long│ &nb
使用ZLMRTCClient.j实现webRtc流播放
Vue3基于 ZLMRTCClient 实现高性能 WebRTC 流播放器之前文章有介绍过weRtc的应用参考这边文章:https://www.cnblogs.com/lijinhuaboke/p/19456259 后面发现一个更便捷的在现代webRtc提出播放器,都不用自己封装写方法,下载ZLMRTCClient.js直接用就行。就介绍如何在 Vue 3 项目中,利用 ZLMediaK
Vue3 + 高德地图(AMap) 实现平滑的实时轨迹展示
在物联网、物流监控或安防调度系统中,实时展示设备(如无人机、车辆、手环)的移动轨迹是一个常见需求。如果仅仅是简单的更新标记点位置,视觉上会出现“跳变”现象,体验很不流畅。本文将分享如何在 Vue 3 项目中,利用 高德地图 (AMap) JS API 实现比较丝滑的实时轨轨迹效果。核心痛点平滑移动:点位更新时,Marker 需要从旧位置平滑过渡到新位置,而不
uniapp+vue2+uview图片上传封装
在移动端开发(App/小程序/H5)中, 图片上传 是一个极其高频且容易产生性能瓶颈的场景。直接上传原图往往会带来以下问题:上传缓慢 :现在的手机拍照动辄 5MB-10MB,用户在非 WiFi 环境下体验极差。体验不好 :大文件导致请求时间过长,容易超时。服务器压力 :不仅占用大量带宽,还浪费存储空间。虽然 uView UI 的 u-upload 组件已经非常好用,但它默认不包含“上传前压缩” 的
vue 可视化表单设计器 vxe-form-design 创建自定义控件的详细用法
vue 可视化表单设计器 vxe-form-design 创建自定义控件的详细用法,vxe-design 是 vxe 下的一个开源的可视化设计器,在使用表单设计器时,通常需要将业务的的每一个控件进行封装,以适应业务的需求,接下来介绍一下如果来定义一个自定义的控件。定义控件分组支持任意分组和自定义左侧控件分组名称<template> <
封装一个好用的页面导出 PDF 工具 Hook (html2canvas + jspdf)
在最近的一个项目中,遇到一个将页面内容(详情页)导出为 PDF的需求,但是好像目前没有直接把dom转成pdf这样一步到位的技术,所以自己封装了一个间接转换的方法,基于 Vue3 + TypeScript 的通用 Hook 封装,利用 html2canvas 和 jspdf 实现网页内容导出为 PDF,并解决了 滚动截断 、 清晰度不足 以及 自动分页 等常见问题。一、 技术选型html2canva
【3分钟学会】一招禁用表单中input输入框回车键自动触发提交事件!
在前端项目开发中,偶尔会有表单提交的问题:用户输入表单后,不小心按了回车键,导致提前触发了提交事件?问题概述当表单中仅有一个input输入框时,按下回车键就会自动触发提交事件,这是为什么呢?这里就要提到一个标准:W3C文中最后一句话已经解释了原因:当表单中只有一个单行文本输入字段时,用户代理应接受在该字段中按Enter键作为提交表单的请求。既然知道了这种现象不是bug,而是切实的标准后,那我们如何
浏览器多窗口通信有效实践总结
如何跨越不同窗口通信在现代 Web 开发中,多个窗口或标签页之间的通信成为了越来越常见的需求,尤其是在应用需要同步数据、共享状态或进行实时更新的场景中。不同窗口间的通信方式有很多种,选择合适的方式可以大大提高开发效率和用户体验。本文将详细介绍几种常见的浏览器多窗口通信技术,并结合实际代码示例,分析它们的优缺点及兼容性。1、window.postMessage的使用实践window.postMess
如何进行页面前端监控
前端监控主要分三个方向前端性能(用户体验优化)异常监控业务指标跟下面我来分别介绍三类指标如何获取1)前端性能指标:一、用户体验相关的:页面加载时间(Page Load Time) :定义:从用户请求页面到页面完全加载的时间。测量方法:使用Performance API中的performance.timing对象。内容绘制(First Contentful Paint, FCP)