自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逸轩

哪怕前路崎岖,也要勇敢前行!!!

  • 博客(913)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring Boot + Calcite 实现跨库查询

Apache Calcite是一个动态数据管理框架,提供SQL解析、优化与执行能力,支持跨异构数据源(如MySQL、CSV、Kafka等)的联邦查询。本文通过Spring Boot集成Calcite,实现MySQL与CSV文件的联合查询,展示其作为虚拟数据层的能力。通过配置model.json定义Schema,结合自定义DataSource与JdbcClient,可快速构建统一查询接口,适用于多源数据整合、自研数据库开发及SQL功能扩展场景。

2026-09-16 18:01:24 83

原创 Spring Boot + Keyset 海量数据分页查询

传统Offset分页在大数据量下因扫描大量无效数据导致性能下降。Keyset滚动查询通过排序字段(如createTime+id)作为游标,利用索引范围扫描直接定位,避免全表扫描,适用于无限滚动、批量导出等场景。需依赖非空唯一排序字段,不支持跳页。Spring Data JPA中可通过Window与WindowIterator实现分页遍历,结合ScrollPosition.keyset()构建下一页位置,高效处理海量数据分页查询。

2026-09-16 15:24:21 120

原创 ThreadPoolTaskExecutor批量插入百万级数据

为提升百万级数据插入效率,采用Spring Boot + MyBatis-Plus结合ThreadPoolTaskExecutor实现多线程批量插入。通过配置核心线程30、最大线程30、队列容量99988,实现异步并行处理。测试显示,200万条数据多线程耗时1.67分钟,较单线程5.75分钟显著提升,且数据无重复、完整性良好。优化建议线程数按“核心数×2+2”设定,避免资源浪费。

2026-09-15 15:24:23 180

原创 FastUtil——Java 高性能集合库

FastUtil是高性能Java库,专为原始类型优化,性能比JDK集合快2~5倍,内存降低40%~70%。推荐使用OpenHashMap系列,预估容量并设置高负载因子(如0.9),避免频繁扩容。对原始类型(如Int2LongOpenHashMap)实现零装箱,提升效率;对String/Object场景,用Object2ObjectOpenHashMap并启用引用相等,可加速20%~30%。支持批量插入、原子计数、原始流处理及高效序列化。生产环境建议:原始类型>10万,或String/Object映射&

2026-09-10 18:55:32 76

原创 SpringBoot+Nacos实现动态化线程池

这里,只是简单实现了一个可以调整核心线程数和最大线程数的动态线程池。具体的线程池实现原理可以参考美团的这篇文章:https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html,结合监控告警等实现一个完善的动态线程池产品。优秀的轮子还有好多,比如Hippo4J ,使用起来和dynamic-tp差不多。

2026-09-10 17:04:45 153

原创 SpringBoot 4 新特性:Spring Data AOT

Spring Data 4.0 配套推出的底层革命性优化,彻底重构 Repository 运行逻辑:把过去启动时靠反射、动态代理、实时解析查询的全部工作,前置到编译阶段一次性完成。很多开发者误以为它只是“启动快一点”,实际上它解决了传统 Spring Data 三大长久痛点:启动缓慢、线上隐性查询异常、GraalVM 原生镜像维护地狱,同时大幅降低内存占用、支持编译期校验SQL、代码可调试。

2026-08-31 10:33:25 356

原创 Cursor+Playwright MCP提高Cursor自动化能力

本文介绍如何在 Cursor 中集成 Playwright MCP Server,为大模型外挂浏览器自动化能力,从而通过自然语言完成网页操作。核心要点:配置简单:在 Cursor Settings 的 MCP 页面添加全局 MCP server,将 Playwright 的 JSON 配置(npx @playwright/mcp@latest)粘贴进 mcp.json 即可启用。工具能力全面:Playwright 提供了八大类工具——页面交互(点击/输入/拖拽等)、基于视觉的坐标操作、快照与截图

2026-07-23 17:15:49 178

原创 Poiji高效实现Excel至Java对象映射

Poiji是一个基于Apache POI的Java库,用于将Excel数据映射到Java对象。它支持通过注解(如@ExcelCell、@ExcelCellName)配置字段映射,提供线程安全的Excel读取功能。主要特性包括:支持多种数据类型转换、处理受密码保护的Excel文件、自定义消费接口实现流式处理大数据量文件,以及通过继承实现复杂对象映射。通过PoijiOptions可配置读取选项,如跳过行数、设置分隔符等。该库特别适合处理大规模Excel数据转换场景,同时保持内存效率。

2026-02-06 15:59:52 706

原创 MetaUtil 轻松实现表结构查询、字段类型解析、主键判断、索引信息提取

Hutool的MetaUtil工具类封装了JDBC复杂的元数据操作,简化了数据库表结构、字段信息等元数据的获取过程。它提供了获取表名列表、字段信息、主键索引等核心API,支持跨数据库操作,并自动处理资源关闭和异常。适用于代码生成器、动态表单、数据库文档生成等多种场景,能显著提升开发效率。使用MetaUtil时需注意MySQL获取注释的特殊配置、连接资源管理以及跨数据库兼容性问题。该工具将复杂的DatabaseMetaData API转化为简洁方法调用,是处理数据库元信息的理想选择。

2026-01-31 17:16:03 813

原创 本地缓存选型:Guava vs Caffeine

本文介绍了Java生态中两种常用的本地缓存方案:Guava Cache和Caffeine。Guava Cache作为Google开源的工具库,API简洁稳定,适合旧项目维护;而Caffeine采用先进的W-TinyLFU淘汰算法,在性能、命中率和吞吐量上更优,是Spring Cache的默认实现。文章详细对比了两者的特性、使用场景和优化方案,建议新项目优先选择Caffeine,旧项目若无性能瓶颈可继续使用Guava Cache。对于高并发场景,Caffeine的异步支持和高效淘汰算法能显著提升系统性能。

2026-01-28 15:59:45 723

原创 RogueMap,HashMap替代品

RogueMap是一款高性能Java本地KV存储方案,针对传统HashMap和第三方存储的痛点提供创新解决方案。它提供三种存储模式:纯内存、临时文件映射和持久化存储,支持秒级数据恢复。通过五大核心技术(堆外内存、零拷贝序列化、乐观并发、内存映射文件和极致内存优化),实现读性能提升2.4倍、内存占用减少87%的显著优势。适用于游戏服务器、推荐系统和大数据处理等场景,API设计简单如HashMap,支持TB级数据存储。项目目前处于Beta测试阶段,未来将扩展更多数据结构支持。

2025-12-18 11:28:23 1209

原创 异常处理框架设计:全局异常捕获与统一错误码

于是 Controller 里 try-catch 泛滥,前端报错五花八门,代码的混乱,本质是协作防线的失守。不管业务逻辑抛出什么牛鬼蛇神,经过这个漏斗,流出来的必须是标准、干净的 JSON。平时没有存在感,但碰撞发生的瞬间,马上弹出,在崩溃边缘托住一切。密码输错三次,是用户的事,不是系统的事。是后端与前端、与用户之间,白纸黑字的契约。数据库挂了,半夜也得爬起来,这是命。衡量系统的标准,不是顺境时的速度,是逆境时的。构建异常处理框架,不为优雅,是为活下去。混用状态码,其实就是在逃避定义的责任。

2025-12-18 10:58:00 916

原创 SpringBoot实现接口幂等性方案

摘要:本文探讨了分布式系统中接口幂等性的4种实现方案。1)Token令牌机制:通过预生成一次性令牌并验证删除;2)数据库唯一索引:利用数据库约束实现天然幂等;3)分布式锁:使用Redisson等工具控制并发访问;4)请求内容摘要:基于请求体MD5摘要实现零侵入方案。文章对比了各方案的适用场景,强调幂等性是系统稳定的基石,建议根据业务特点选择最小代价方案,特别是支付、库存等核心路径必须实现防重。

2025-12-18 10:39:19 766

原创 Sensitive 框架日志脱敏

摘要:Sensitive框架是一款开源Java日志脱敏工具,通过注解驱动自动识别并处理敏感数据。其核心功能包括基于注解的自动脱敏、丰富内置策略(如身份证、手机号脱敏)、支持自定义策略和条件生效逻辑,并能处理嵌套对象和集合。框架可与Logback/Log4j2无缝集成,提供高性能深拷贝与缓存机制,确保日志在保留业务可读性的同时保护敏感信息。适用于金融、电商等需要合规处理个人隐私数据的场景,是提升系统安全性的有效解决方案。

2025-12-17 18:46:53 866

原创 Spring Boot3 集成 UUIDv7 有序、高性能 ID 生成方案

摘要:本文介绍新型UUIDv7标准在分布式系统中的优势与应用。相比传统UUIDv4,UUIDv7基于时间戳+随机数,具有有序递增、索引友好、高并发等特性。文章详细演示了在SpringBoot中集成UUIDv7的完整方案:引入uuid-creator库、创建工具类、JPA实体主键配置及CRUD接口实现。实践表明,UUIDv7作为主键能显著提升数据库性能(索引效率提升40%+),是替代UUIDv4和Snowflake的理想方案,特别适合微服务和分布式场景。文末还提供了批量生成示例和完整性能对比分析。

2025-12-17 18:11:52 923

原创 Hutool CollStreamUtil 一行搞定分组、转换、合并全场景

摘要:CollStreamUtil是Hutool工具包中简化StreamAPI操作的利器,针对集合处理常见痛点提供优雅解决方案。它能一键实现双层分组(无需嵌套groupingBy)、集合类型转换(省略stream()和collect()调用)以及Map合并(支持自定义合并逻辑),相比原生StreamAPI代码量减少50%以上。该工具基于StreamAPI封装,保留并行处理能力,特别适合电商订单统计等需要复杂分组、转换的场景。核心功能包括:groupByKey单层分组、groupBy2Key双层分组、toLi

2025-12-17 11:23:07 748

原创 MyBatis-Flex

MyBatis-Flex是一个轻量高效的MyBatis增强框架,具有极高性能和灵活性。其特点包括:1)轻量级,仅依赖MyBatis;2)通过SqlProvider实现,无SQL解析,性能优异;3)提供QueryWrapper简化SQL编写,支持多表查询等复杂场景;4)支持多种数据库和高级功能如逻辑删除、数据脱敏等。相比同类框架,查询和更新速度快5-10倍。快速入门仅需5步:创建表、添加依赖、配置数据源、编写实体类和Mapper接口、使用QueryWrapper进行查询。该框架集成了MyBatis-Plus、

2025-12-15 14:39:29 696

原创 Java校验图片是否被篡改文件类型

本文介绍了在Java中校验图片文件是否被篡改的两种方法:1.使用魔数(MagicNumber)检测,通过读取文件头部特定字节与常见图片格式的签名进行匹配;2.使用ApacheTika库进行更精确的文件类型检测。文中提供了完整的代码实现,包括魔数字典定义、文件头读取、类型验证等功能,并建议将两种方法结合使用以提高检测准确性。这些技术可有效识别文件实际内容与扩展名不符的情况,防范安全威胁。

2025-08-25 10:48:05 510

原创 Java校验PDF文件合法性的方法

在Java中,有几种方法可以校验PDF文件是否合法。

2025-08-14 14:40:51 635

原创 GO实现一个文件中实现多个不同类型的枚举

本文介绍了在Go中实现多类型枚举的方法,以用户模型中的状态、性别和删除标记为例。主要内容包括:1)定义枚举类型和常量值;2)可选添加枚举转字符串方法;3)业务逻辑中使用枚举进行查询过滤和状态更新;4)API层转换枚举值为可读字符串;5)实现软删除功能;6)验证枚举参数有效性。推荐使用自定义类型实现更优雅的枚举处理,强调通过is_deleted字段实现逻辑删除而非物理删除,以及利用模型钩子自动设置默认值和更新时间。

2025-07-24 16:38:14 457

原创 GoZero中实现Java枚举类

Go语言通过常量和自定义类型模拟Java枚举功能。在GoZero中,可使用常量组+iota实现基础枚举,为枚举类型添加String()方法获取字符串表示,并支持复杂结构和方法。在模型层存储枚举值,逻辑层进行状态验证,API层转换状态文本。还可实现枚举验证器、自定义JSON序列化及工具函数,便于全项目统一使用枚举值,确保类型安全。

2025-07-23 09:08:52 310

原创 Go 语言字符串拼接

每次拼接都会创建新字符串,性能较差(不适合大量拼接)稍好,但仍不是最高效的方式。高性能,适合大量字符串拼接。需要预先准备好所有字符串。不可重置(每次需要新建)专门为字符串拼接优化。

2025-07-17 13:41:24 494

原创 @Constraint实现自定义校验注解

首先,定义一个自定义校验注解。假设我们想创建一个注解,用于校验字符串的最大长度为20位。String message() default "长度必须在1到20个字符之间";Class<?Class<?

2024-11-18 21:09:49 461

原创 maven 导入resource lib文件夹中的jar

在Maven项目中,如果需要导入位于 src/main/resources/lib或其他目录中的JAR文件,通常不推荐直接将JAR文件放在资源目录中。Maven有更规范的方式来管理依赖项,通常是通过在 pom.xml 文件中声明依赖项来实现的。然而,如果你确实需要使用本地的JAR文件。

2024-10-29 16:49:41 2586

原创 MQTT协议与HTTP协议的区别

‌设计目的与应用场景‌:‌速度与效率‌:‌架构与模式‌:‌消息QoS支持‌:‌消息大小‌:‌连接方式‌:‌数据为中心‌:

2024-09-11 13:30:49 722

原创 GitLab安装问题处理方案

此时关闭执行"/opt/gitlab/embedded/bin/runsvdir-start"命令的卡顿的终端窗口,发现gitlab还是启动状态(ps -ef|grep gitlab)丢失了报错中的这两个配置文件,进入/etc/sysctl.d目录发现,这两个文件都是通过链接到/opt/gitlab/embedded/etc/目录下。/var/opt/gitlab/nginx/conf/gitlab-http.conf #gitlab核心nginx配置文件。重启gitlab需要重新授权。

2024-08-31 15:18:10 2547

原创 gitlab重置root初始密码

GitLab的root账号初始密码并不是固定的,而是由首次安装或设置GitLab时的流程自动生成的。如果你是初次设置GitLab,并且忘记了root。

2024-08-31 14:21:27 4918

原创 Docker相关知识

是一个开源的平台,允许开发者自动化地部署应用程序在容器中。容器是轻量级、独立且打包的应用服务,可以在任何环境中运行,确保一致性和可移植性,利用操作系统级别的虚拟化技术来打包、交付和运行应用程序。可以将应用程序及其所有依赖项打包到一个可移植的容器中,可以在任何安装了Docker引擎的服务器上运行这些容器。

2024-08-30 11:06:03 683

原创 idea 2024.2切换到旧版的UI

在 IntelliJ IDEA 2024.2 中,新 UI 现在成为所有用户的默认选项,经典 UI 则作为插件提供。新 UI 简洁而现代,提供更大、更易用的控件、一致的调色盘、明亮清晰的图标、增强的对比度和更好的强调色。为了使用原来的旧版UI操作其实很简单,升级到2024.2之后只需要装上。插件重新启动idea就可以使用之前的UI了。

2024-08-16 15:29:11 21605 6

转载 Zookeeper

ZooKeeper 是一个由Apache软件基金会开发的开源。它主要用于大型分布式系统中,用来解决诸如等分布式系统常见问题。允许分布式进程通过共享的层次名字空间,这是一组以目录树方式组织的数据注册引用,共同协调信息。

2024-08-06 16:01:22 857

原创 缓存和数据库的一致性方案

还有就是如果我们通过命令行直接来更新数据库的数据,或者通过公司提供的数据库管理平台来更新数据库数据,这个时候你就没法删除了,因为你的同步删除其实只是写在你的代码里面,这个时候也就导致脏数据问题了,这也是为什么说同步删除很难覆盖所有的入口,同时存在很大的风险。上面的例子中,灰度切读阶段中,我们还是优先保障老库的流程,因此还是先写老库,由于写新库和写老库之间存在时间间隔,导致线程2并发查询到新库的老数据,同时在监听binlog删除缓存流程之后将老数据写入缓存,从而导致脏数据问题,并且脏数据可能会持续很久。

2024-07-10 18:57:09 770

原创 3种方案实现接口不对外暴露

另外,每次请求进来,都需要判断白名单,增加了系统响应耗时,考虑到正常情况下外部进来的请求大部分都是在白名单内的,只有极少数恶意请求才会被白名单机制所拦截,所以该方案的性价比很低。该方案需要额外编写一个只对内部暴露接口的微服务,将所有只能对内暴露的业务接口聚合到这个微服务里,通过这个聚合的微服务,分别去各个业务侧获取资源。将对外暴露的接口和对内暴露的接口分别放到两个微服务上,一个服务里所有的接口均对外暴露,另一个服务的接口只能内网服务间调用。该方案的好处是,对业务代码零侵入,只需要维护好白名单列表即可;

2024-07-02 14:09:21 920

原创 Centos Stream9 Docker安装nacos

这时候就可以使用http://你的虚拟机IP:8848/nacos/index.html访问nacos了。注意:运行nacos前需要先启动MySQL的服务否则会报错。出现上图的信息则表示nacos已成功启动。账号:nacos 密码:nacos。此时还需要在防火墙开放8848端口。

2024-05-25 15:55:00 468

原创 centos8安装gitlab教程

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

2024-05-16 14:35:46 2416

原创 Windows使用nssm工具设置zookeeper开机启动

nssm简介nssm是一个服务封装程序,它可以将普通exe程序封装成服务,实现开机自启动,同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。

2024-05-12 18:25:29 1040

原创 DDD架构的理解与应用

软件开发中的挑战和问题复杂性管理当处理复杂业务需求时,软件系统往往变得复杂,难以理解和维护。不清晰的业务逻辑和模型使开发人员难以捕捉并准确地实现业务需求。领域专家与开发人员之间的沟通障碍业务专家负责提供业务需求和知识,而开发人员负责将这些需求转化为可执行的软件系统。然而,由于不同的专业背景和术语之间的差异,很难进行有效的沟通,造成开发过程中的误解和偏差。数据库驱动设计的局限性在传统的软件开发中,往往将数据库设计作为业务逻辑的中心。这导致了紧密耦合的数据模型和业务逻辑,使系统变得脆弱且难以修改

2024-05-12 15:36:21 1556

原创 CQRS模式

CQRS(Command-Query Responsibility Segregation)即命令查询职责分离,其中我们称增删改为命令型操作,是一种软件架构模式,也是处理复杂问题的一种具体实现方案。旨在通过将命令(写操作)和查询(读操作)分开处理来解决应用程序的复杂性,以提高系统的可维护性和性能。CQRS本质上是一种读写分离设计思想,这种框架设计模式将命令型业务和查询型业务分开单独处理。通过这种方式,CQRS可以针对命令和查询单独进行业务模型上的设计,从而用更加适合各自场景的方案与组件来提供能力。

2024-05-10 14:04:13 941

原创 Flowable相关的表信息

业务流程定义数据表与ACT_RE_DEPLOYMENT是多对一的关系,即一个部署的bar包可能包含多个流程定义文件,每个流程定义文件都会有一条记录在ACT_reprocdef表内,每个流程定义的数据,都会对于ACT_GE_BYTEARRAY表内的一个资源文件和png图片文件和ACT_GE_BYTEARRAY的关联是通过程序用ACT_GE_BYTEARRAY.NAME_与ACT_RE_PROCDEF.NAME_完成的。这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。

2024-05-04 18:40:42 1023

原创 springboot项目启动时报:could not be registered. A bean with that name has already been defined in file

启动SpringBoot项目时遇到报:The bean 'jpaAuditingHandler' could not be registered. A bean with that name has already been defined and overriding is disabled.

2024-04-27 17:23:58 1981

转载 SpringJPA日志输出SQL

重新启动项目,调用接口看看SQL语句和参数打印情况,sqltiming和sqlonly差别是多打印了sql语句的耗时,如果不想要这个时间可以修改筛选里面的配置项。可以看到我们想要的效果已经出来了,但是很多多余的日志都出来了,显然要对这些日志做筛选。如果是mybatis,和之前JPA一样使用没区别。2、修改application.yml配置。通过日志level级别,进行筛选。

2024-04-25 14:57:05 1487

2017最新全国街道乡镇级以上行政区划

2017最新全国街道乡镇级以上行政区划代码表格详细记录了全国省份、城市、县、乡镇和街道,可直接导入数据库使用。

2018-12-20

Spring+springmvc+hibernate+JQueryEasyUI

spring+springmvc+hibernate+JqueryEasyui整合项目。可根据用户角色来进行权限管理。

2018-08-01

Json字符应用的例子

一个关于Json应用的java例子,很实用哦

2015-09-01

jQuery用户注册表单验证代码

一个关于用户注册的JQuery表单验证小项目。

2015-09-01

aceAdminUI框架

国外很流行的后台开发框架,很适合后台人员的开发工作。

2015-09-01

网络管理后台代码

一个实用的网络管理后台代码,采用SpringMVC+spring框架。

2017-12-18

阳光酒店管理系统

阳光酒店管理系统是一款功能强大,内容丰富的酒店管理系统,采用Struts+hibernate+Spring框架搭建而成,美观且实用。

2015-12-01

jQueryEasyui1.2.6

jQueryEasyui是一个十分不错的框架,美观,简单,实用

2015-09-01

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除