- 博客(15)
- 收藏
- 关注
原创 【2026】最新ip2region JAVA使用教程(全量代码)
本文介绍了离线IP定位库Ip2region的使用方法。首先从GitHub下载项目并获取IPv4/IPv6数据文件,然后通过Maven导入依赖包。配置类负责初始化Searcher并加载xdb数据文件,工具类提供IP查询和校验功能。测试案例验证了查询功能的有效性,成功返回IP归属地信息。该方案支持微秒级查询,适用于需要快速IP定位的应用场景。
2025-12-12 09:29:17
370
原创 踩坑实录:PageHelper 分页后筛选数据致总条数异常?原理 + 解决方案
摘要: 文章探讨了PageHelper分页工具与用户服务团队筛选结合时出现的总条数异常问题。当使用内存筛选后,PageInfo返回的总数可能错误地等于当前页条数,而非实际符合权限的总数。解决方案分两种场景:1)优先在SQL层实现团队筛选,确保PageHelper自动计算正确总数;2)若需内存筛选,需手动保留分页元数据并同步总数。核心在于避免将筛选后的普通List误当作Page对象,导致分页信息丢失。完整代码示例见个人博客。
2025-10-23 10:04:16
410
原创 Electron + Vue 3 + Vite 开发桌面应用的完整步骤
本文介绍了基于Vite+Vue+Electron的桌面应用开发方案选择指南和完整配置流程。文章首先对比了Vite和Webpack两种方案的选择场景:Vite方案适合Vue3中大型项目,追求现代开发体验和快速热更新;Webpack方案则更适合Vue2小型项目或依赖老旧插件的场景。随后详细介绍了从项目初始化、依赖安装到完整配置的步骤,包括Vite配置调整、主进程与渲染进程代码编写、项目结构调整等关键环节,并提供了主进程与渲染进程通信的示例代码。该方案相比传统Vue CLI方案具有更快的启动速度和更简洁的配置流程
2025-08-25 14:30:55
898
1
原创 【优化】从压缩效率、内存占用和传输方式的角度解决文件下载慢的问题
摘要 本文针对Java文件压缩下载性能问题,分析了原代码存在的IO效率低、内存占用大和传输方式冗余三大瓶颈。通过引入缓冲区批量读写(8KB)、流式处理和直接响应流输出等优化手段,将10MB文件的下载时间从30-40秒大幅缩短。优化后的代码采用try-with-resources自动管理资源,避免临时文件产生,内存占用稳定在8KB左右,并新增重复文件名处理和响应头优化。关键改进包括: 压缩效率:单字节读写改为缓冲区批量处理,IO操作减少99.99% 内存控制:流式处理避免数据落地,内存占用降低99% 传输优化
2025-08-12 14:02:59
669
原创 【BUG】IDEA与Maven的设置冲突
摘要:在IDEA中修改Maven的settings.xml后仍使用旧配置,主要原因是多配置文件优先级问题。MAVEN_HOME/conf下的settings.xml会覆盖其他配置,且.m2目录下的配置优先级更高。此外,缓存未清理、项目级配置覆盖或文件名不规范(必须为settings.xml)也会导致该问题。建议检查配置文件层级关系,确保正确命名并清理缓存后重新导入。(98字) 核心问题:Maven多配置文件的优先级冲突导致修改失效,需注意配置加载顺序和命名规范。
2025-07-22 18:04:05
499
原创 【Web前端】CSS实现玻璃效果
CSS毛玻璃效果的实现方法,包含核心样式定义、使用方式和效果调整技巧。通过CSS变量定义背景透明度、模糊强度和边框颜色,使用backdrop-filter属性实现毛玻璃效果。文章展示了基础类应用和@apply复用方法,并提供了调整模糊强度、背景透明度等参数的示例。还列举了侧边栏、弹窗等应用场景,最后给出完整的样式代码,包含设计变量、毛玻璃基础样式、侧边栏容器和图标容器样式,实现平滑过渡和悬停交互效果。
2025-06-11 15:35:36
727
原创 【Web前端】对图片进行剪切并添加水印
基于cropperjs实现的图片裁剪组件,主要功能包括:支持自定义宽高比(默认16:9)、带透明水印、响应式对话框控制和高品质图片输出(JPEG 90%质量)。使用步骤简单,通过组件引入、参数配置和结果处理即可完成图片裁剪。核心实现涉及Cropper初始化设置、水印添加流程和样式定制选项。注意事项包括确保正确引入cropperjs库、图片加载完成后再显示对话框,以及大尺寸图片建议先压缩等优化建议。该组件适用于需要前端图片处理的各类应用场景。
2025-06-10 14:22:29
371
原创 使用 WebFlux 和 LangChain4j 的架构
Java响应式AI服务的内存优化策略:1) JVM参数调优,推荐使用ZGC并设置合理内存限制;2)响应式编程控制背压与并发;3)LangChain4j专项优化模型加载和向量存储;4)依赖瘦身和缓存策略优化;5)配置内存监控;6)类加载和容器化优化。特别针对AI服务建议使用内存敏感注解。验证方法包括JConsole监控和性能分析工具。全文提供了从JVM到框架层次的具体配置示例,帮助开发者构建高效稳定的AI服务。
2025-06-06 11:21:40
370
原创 【SSE】实现AI大模型的流式对话
摘要 文章介绍了SSE(Server-Sent Events)技术及其在AI流式对话中的应用。SSE作为一种服务器推送技术,支持单向实时数据传输,适用于需要实时更新但不需要双向通信的场景。在流式对话中,AI大模型通过边生成边传输的方式,将回答拆分为逻辑单元实时发送,显著减少用户等待时间。前端实现包含两个核心部分:通过Marked.js和DOMPurify安全渲染Markdown格式的AI回复,以及构建具备自动重连机制(指数退避算法)和超时检测的SSE客户端连接。全技术栈实现展现了从服务器推送到前端展示的完整
2025-06-06 10:00:01
1110
原创 【BUG记录】SpringSecurity6.2以上 AuthenticationManager=null
在多模块Spring Security开发中,出现AuthenticationManager返回null问题的解决方法是:当使用SecurityConfigurerAdapter配置类时,必须在继承该适配器的子类中(如JwtAuthenticationSecurityConfig)显式设置AuthenticationManager,而非在WebSecurityConfig中配置。这是因为SecurityConfigurerAdapter的配置顺序会影响AuthenticationManager的可用性。示例
2025-06-04 14:51:24
475
1
原创 【Langchain4j】Function Calling 函数调用
本文介绍了如何为大语言模型集成工具类并调用RPC接口。主要内容包括:1)创建带有@Tool注解的数学工具类,支持加减法和平方根运算;2)配置工具类到AI服务中;3)通过Feign调用RPC接口实现文章搜索功能,使用@ToolMemoryId维护上下文;4)通过REST API暴露聊天接口。关键点:工具类需用@Component/@Service注入,多工具配置需指定wiringMode=EXPLICIT,建议为工具方法添加清晰描述以提升AI调用准确性。
2025-05-26 10:44:50
445
原创 基于LangChain4j的智能助手开发实践
本文介绍了基于LangChain4j开发智能助手的实践,采用分层架构设计,核心模块包括接口层、服务层、存储层和配置层。通过@AiService注解定义对话接口,使用MongoDB实现对话记忆的持久化存储,并通过@MemoryId实现多用户对话的上下文隔离。技术策略上,采用弹性扩展设计,支持快速查询和更新操作。最佳实践建议包括合理设置内存管理参数、增强可观测性、优化聊天接口等。该架构具备多用户隔离、历史对话管理、弹性扩展和异常自动恢复等能力,开发者可根据需求调整记忆窗口大小和存储策略。
2025-05-16 10:53:17
457
原创 调整JVM参数的方式
调整JVM参数的方式取决于你的运行环境。无论是命令行、IDE、应用服务器、Spring Boot、Docker还是Kubernetes,都可以通过配置相应的参数来优化JVM性能。注:改文章只整理了大多数运行环境调参方式。如果需要了解如何调参可参考(
2025-03-31 17:53:01
2257
1
原创 Java讯飞语音评测ISE使用demo工具
讯飞语音评测(Speech Evaluator)是一款基于智能语音技术的发音评价系统,能够自动对用户的发音水平进行评价,定位发音错误和缺陷,并进行问题分析。该系统支持汉语和英语两种语言的评测,涵盖单字(汉语专有)、词语、句子、篇章朗读等多种题型,广泛应用于语言教学、口语测试、语音康复训练等领域。
2024-12-30 15:58:34
1815
原创 Knife4j最新基本使用文档
Knife4j是一个为Java应用程序提供API文档生成和可视化的开源工具,基于Swagger和OpenAPI规范。它整合了Swagger UI、Swagger Editor、springdoc的功能,同时提供了更友好的API管理界面。
2024-12-28 19:22:07
1230
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅