
java
文章平均质量分 78
王小工
java研发工程师、架构师、云计算、大数据、云原生
展开
-
Springboot JPA ShardingSphere 根据年分表java详细代码Demo
以上代码可实现:订单数据按年份自动存储到t_order_2023、t_order_2024等表中,且JPA操作完全透明化。通过动态建表机制,避免手动维护物理表结构。:若条件包含order_time范围,ShardingSphere自动合并多表结果。确保实体类中order_time字段类型与数据库DATETIME类型匹配。若需要支持历史数据归档,可结合Hint分片强制路由到指定表。每个年度表需单独创建索引(如order_time字段索引):根据order_time字段值自动路由到对应年度表。原创 2025-04-08 08:04:07 · 416 阅读 · 0 评论 -
Springboot JPA ShardingSphere 根据年分表
Spring Boot集成JPA与ShardingSphere实现按年分表,需重点关注分片算法选择、时间字段映射及动态表管理。原创 2025-04-07 18:22:57 · 533 阅读 · 0 评论 -
Springboot JPA 集成ShardingSphere
Spring Boot集成JPA与ShardingSphere可通过以下步骤实现分库分表功能,需重点关注依赖配置、分片规则定义及JPA适配问题:1. 引入核心依赖在pom.xml中添加ShardingSphere和JPA相关依赖:2. 禁用Hibernate自动DDL在application.yml中关闭自动建表,避免与分表结构冲突:二、分片规则配置1. 数据源定义若仅分表不分库,配置单一数据源:2. 分表策略按字段哈希分表(如mobile_hash字段):三、JPA实体类原创 2025-04-07 18:16:21 · 445 阅读 · 0 评论 -
springboot body 转对象强验证属性多余属性抛错误
在Spring Boot中,当使用@RequestBody注解来接收HTTP请求中的JSON数据并将其转换为Java对象时,Spring默认会忽略额外的属性。这意味着如果发送的JSON包含一些目标对象中没有定义的属性,Spring不会报错,这些额外的属性会被简单地忽略。可以通过自定义一个配置或者使用一个专门的类来处理JSON反序列化时的行为。在控制器方法参数上使用。原创 2025-03-25 07:53:28 · 373 阅读 · 0 评论 -
java字符串数字补齐位数
在Java中实现字符串位数补齐主要有以下几种常用方法,可根据不同场景选择使用:1. 左补齐(右侧补空格)2. 右对齐(左侧补零)3. 自定义补位字符通过替换空格实现其他字符补齐:二、Apache Commons Lang库方法使用StringUtils.leftPad()实现左补齐:三、Java 11+的String.repeat()方法适用于已知需要补足的具体字符数:四、循环遍历实现通过StringBuilder动态构建补位字符串:五、NumberFormat数字格式化适原创 2025-03-21 17:45:29 · 246 阅读 · 0 评论 -
Jackson 库进行 JSON 序列化时遇到了 无限递归(Infinite Recursion) 问题
ManyToOne// 其他字段...@Overrideif (value!= null) {// 仅序列化需要的字段,跳过 pointQuota总结推荐方案 2(@JsonManagedReference 和 @JsonBackReference):简单且能保持双向关联。>-推荐方案 3(DTO):彻底解耦序列化逻辑与数据库实体,适合复杂场景。避免直接序列化 JPA 实体,尤其是涉及双向关联时。原创 2025-03-18 15:27:52 · 705 阅读 · 0 评论 -
Spring MVC 页面重定向返回后通过nginx代理 丢失端口号问题处理
Nginx默认未将原始请求的端口信息传递给后端,导致应用生成重定向URL时缺少端口。确保后端应用能正确识别Nginx转发的X-Forwarded-*头信息。Nginx默认使用绝对路径重定向(如http://host/path/),导致端口丢失。## 一、Nginx配置问题(核心原因)。2. Tomcat容器适配(如适用)。## 二、后端应用适配代理环境。## 三、其他注意事项。原创 2025-03-03 17:12:54 · 477 阅读 · 0 评论 -
FastJSON如何判断json字符串是数组还是对象
通过自带的JSON校验类校验。原创 2025-02-21 09:07:15 · 466 阅读 · 0 评论 -
RestTemplate Https 证书访问错误
如果服务器使用的是自签名证书或私有 CA 签发的证书,可以将证书导入 Java 的信任库(cacerts)或自定义信任库。步骤:使用浏览器访问服务器的 URL,导出证书(通常为 .crt 或 .pem 格式)。找到 Java 的默认信任库(通常位于- 默认密码是 changeit。// 创建使用自定义信任库的 RestTemplate RestTemplate restTemplate = createRestTemplateWithCustomTrustStore();原创 2025-02-08 18:07:40 · 693 阅读 · 0 评论 -
如何解决HTTPS请求报错sun.security.validator.ValidatorException: PKIX path building failed
如果不想修改全局信任库,可以创建并使用自定义信任库。步骤:设置系统属性:检查证书链,确保完整。导入证书到Java信任库或使用自定义信任库。避免在生产环境中忽略证书验证。更新Java到最新版本。通过这些步骤,可以解决 PKIX path building failed 错误。原创 2025-02-07 17:45:34 · 605 阅读 · 0 评论 -
Java SM3withSM2 详解
SM3withSM2 在 Java 中涉及的是使用中国国家密码管理局制定的两种密码算法:SM2 和 SM3。SM2 是一种基于椭圆曲线的公钥密码算法,通常用于数字签名、密钥交换等;而 SM3 是一种密码哈希算法,用于数据完整性校验。在密码学中,SM3withSM2 通常指的是使用 SM2 算法进行签名,并使用 SM3 算法作为消息摘要(哈希)函数的过程。SM2 是中国国家密码管理局制定的一种基于椭圆曲线的公钥密码算法,主要用于数字签名、密钥交换等。而 SM3 是一种密码哈希算法,用于数据完整性校验。当提到原创 2025-02-07 14:06:27 · 961 阅读 · 0 评论 -
Java 根据另外数组顺序排序
注意,这个解决方案假设 orderArray 中的元素在 valuesArray 中有对应的值(尽管不一定按相同的顺序)。在这个更通用的解决方案中,我们为 valuesArray 中的每个元素创建了一个唯一的标识符(在这个例子中是 “item” + i),并使用 Map 来存储这些标识符及其索引。然而,这个示例代码有一个潜在的问题:如果 orderArray 中的元素并不包含 valuesArray 中所有可能的键,或者 orderArray 中有重复元素,那么这种方法可能会导致数据丢失或错误。原创 2024-12-17 15:58:02 · 196 阅读 · 0 评论 -
SpringBoot 自定义事件
首先,你需要创建一个类来表示你的自定义事件。这个类通常继承自ApplicationEvent或ApplicationEvent的子类(如PayloadApplicationEvent),并添加你需要的属性。} }} }} }原创 2024-12-17 08:12:22 · 483 阅读 · 0 评论 -
Java 注解 数组参数 @interface
注解是一种用于类、方法、变量、参数等声明的元数据,它可以被用来为代码提供额外的信息。注解本身不能直接包含数组,但注解的属性可以是数组类型。在这个示例中,MyClass 类和 myMethod 方法都被 @MyAnnotation 注解标记,并且它们的 value 属性被赋予了不同的字符串数组值。总结一下,虽然注解本身不能直接是数组,但注解的属性可以是数组类型,这使得注解能够包含多个值。在这个例子中,MyAnnotation 是一个注解,它包含一个名为 value 的属性,该属性是一个字符串数组。原创 2024-11-29 14:04:52 · 496 阅读 · 0 评论 -
springboot Scheduled 每小时 隔两分钟执行一次
请确保 Spring Boot 应用没有因为其他错误而停止运行,否则调度任务也不会执行。此外,如果更改了时区设置,请确保 cron 表达式或应用配置与期望时区相匹配。在 Spring Boot 应用中,可以使用 @Scheduled 注解来创建一个定期任务,使其每两分钟执行一次。在这个例子中,cron 表达式 0 0/2 * * *?原创 2024-11-26 17:52:08 · 691 阅读 · 0 评论 -
HBase Flink操作
Apache Flink 是一个开源的分布式流处理框架,能够高效地处理和分析实时数据流以及批数据。HBase 是一个分布式、面向列的开源数据库,是 Hadoop 项目的子项目,适合非结构化数据结构的存储,并提供实时读写能力。原创 2024-11-21 07:42:55 · 1443 阅读 · 0 评论 -
Java Servlet 详解
一旦部署成功,打开Web浏览器并访问http://localhost:8080/your-webapp-context/hello(其中your-webapp-context是Web应用程序的上下文路径),应该会看到一个包含“Hello, World!下面是一个简单的Servlet示例,它展示了如何创建一个基本的Servlet来处理HTTP GET请求,并返回一个简单的HTML响应。Servlet(Server Applet)是Java Servlet的简称,是Java语言编写的服务器端程序。原创 2024-11-20 18:19:23 · 1069 阅读 · 0 评论 -
HBase Java基础操作
Apache HBase 是一个开源的、分布式的、可扩展的大数据存储系统,它基于 Google 的 Bigtable 模型。使用 Java 操作 HBase 通常需要借助 HBase 提供的 Java API。以下是一个基本的示例,展示了如何在 Java 中连接到 HBase 并执行一些基本的操作,如创建表、插入数据、扫描表以及删除数据。原创 2024-11-20 18:06:51 · 1745 阅读 · 0 评论 -
JAVA IDEA 取消掉Warning:(22, 14) Class ‘XXXController‘ is never used 提示信息
Warning:(22, 14) Class 'XXXController' is never used 提示信息原创 2024-10-21 08:35:24 · 582 阅读 · 0 评论 -
FLINK SQL语法(1)
Flink SQL Connector是一种用于在Flink SQL与外部数据源或数据汇之间建立连接的插件。它允许Flink SQL从外部数据源读取数据,并将处理后的数据写入到外部数据汇中。通过Connector,Flink SQL能够轻松实现对各种类型数据的实时处理和分析。在某些特殊情况下,用户可能需要自定义Connector来满足特定的需求。Flink提供了丰富的API和工具来支持用户自定义Connector。自定义Connector通常涉及以下几个步骤:1.定义Connector的工厂类。原创 2024-10-14 10:36:17 · 1759 阅读 · 0 评论 -
Springmvc Thymeleaf 标签
Thymeleaf是一个适用于Java的模板引擎,它允许开发者将动态内容嵌入到HTML页面中。在SpringMVC框架中,Thymeleaf可以作为一个视图解析器,使得开发者能够轻松地创建动态网页。原创 2024-10-12 15:13:31 · 809 阅读 · 0 评论 -
FLINK SQL时区问题
接下来,需要定义数据源,并指定如何从数据中提取事件时间戳。这通常通过实现TimestampAssigner接口或使用Flink提供的便捷类来完成。// 数据源// 解析JSON并创建MyEvent对象// ...})@Override// 从MyEvent对象中提取时间戳});定义一个数据源,该数据源产生包含传感器值和到达时间戳的流数据。在Flink中,这通常通过实现SourceFunction接口或使用Flink提供的连接器(如Kafka连接器)来完成。原创 2024-10-12 13:38:08 · 1927 阅读 · 0 评论 -
FLINK SQL时间属性
在Flink SQL中,时间属性是一个核心概念,它主要用于处理与时间相关的数据流。Flink支持三种时间属性:事件时间(event time)、处理时间(processing time)和摄入时间(ingestion time)。原创 2024-10-12 11:38:46 · 1636 阅读 · 0 评论 -
FLINK SQL
简介运行环境集成UDF基类实现UDF执行逻辑函数注意UDF入参、出参类型推导明确UDF输出结果是否是定值巧妙运用运行时上下文。原创 2024-10-08 18:18:21 · 1623 阅读 · 1 评论 -
FLINK SQL数据类型
Flink SQL也支持用户自定义数据类型,用户可以根据自己的需求定义复杂的数据结构,并通过实现相应的接口或类来注册这些自定义类型。1、定义与用途用户自定义数据类型通常用于处理那些无法直接通过Flink内置数据类型表示的数据。例如,当需要处理一个包含多个字段的复杂数据结构时,就可以定义一个包含这些字段的用户自定义数据类型。2、实现方式定义数据类型:首先,需要定义一个Java或Scala类来表示用户自定义数据类型。原创 2024-10-10 18:14:46 · 2128 阅读 · 1 评论 -
FLINK SQL&Table API 的基本概念及常用API
首先,需要定义数据源source_table和数据输出目标result_table。这里假设source_table是一个Kafka数据源,而result_table是一个文件系统上的CSV文件。-- 定义数据源) WITH (-- 定义输出目标) WITH (原创 2024-10-10 17:55:32 · 1757 阅读 · 0 评论 -
FLINK SQL&Table API 简介及运行环境
Flink本身是批流统一的处理框架,所以Flink SQL和Table API是批流统一的上层处理API。目前,这两套API仍处于活跃的开发阶段,功能尚未完全完善。原创 2024-10-09 13:58:08 · 1094 阅读 · 0 评论 -
Spring JPA 注解@Id @GeneratedValue @GenericGenerator
在Spring JPA中,通常使用@Id和@GeneratedValue注解来指定实体的主键及其生成策略。然而,@GeneratedValue注解默认支持的生成策略(如IDENTITY, SEQUENCE, AUTO, TABLE等)可能不完全满足所有数据库或特定场景下的需求。在某些情况下,可能需要更复杂的生成策略,这时可以使用Hibernate特有的@GenericGenerator注解来定义。@GenericGenerator是Hibernate提供的一个高级特性,允许自定义主键的生成策略。原创 2024-09-12 08:22:34 · 1227 阅读 · 0 评论 -
Netty 知识目录
Netty原创 2024-08-31 11:33:23 · 395 阅读 · 0 评论 -
JAVA SpringBoot jar 程序 Systemctl 生产环境部署
在Linux系统中使用systemctl来管理和自动启动一个Spring Boot应用程序,需要将Spring Boot应用程序打包成一个可执行的JAR文件,并创建一个systemd服务单元文件。确保Spring Boot应用程序有适当的日志配置,以便systemd能够正确地记录输出和错误信息。如果应用程序需要额外的配置,可以通过环境变量或者命令行参数来传递。确保修改User为运行应用程序的用户,ExecStart为JAR文件的完整路径。原创 2024-08-15 11:00:20 · 489 阅读 · 0 评论 -
Flink Maven 依赖
定义:Apache Flink ML是Apache Flink的扩展库,提供了一套全面的机器学习(ML)API和基础设施,旨在简化机器学习管道的构建过程。开发者:Apache软件基金会编程语言:支持Python和Java,方便不同编程背景的开发者使用。原创 2024-08-05 18:58:25 · 1257 阅读 · 0 评论 -
MongoDB mongoTemplate 分组统计并修改返回值名
请注意,我在group阶段中按field1和field2进行了分组,并计算了每个组的文档数(使用.count().as(“count”))。然后,在project阶段中,我重命名了这些字段(尽管在这个特定示例中,field1和field2只是被简单地传递并重新命名,但可能想根据需要进行更复杂的操作)。注意:上面的代码示例中,我使用了Aggregation.project(“quota”).and(“quota”).as(“quotaLimit”)来重命名quota字段为quotaLimit。原创 2024-07-31 16:32:24 · 969 阅读 · 0 评论 -
Hutool TimedCache 应用
Hutool是一款非常强大的Java工具库,提供了许多便捷的功能和工具类。在Hutool中,TimedCache是一个非常实用的类,用于实现带有时间限制的缓存功能。原创 2024-07-31 11:52:19 · 1632 阅读 · 0 评论 -
Explicitly configure spring.jpa.open-in-view to disable this warning
这个警告信息来自Spring Boot应用程序,特别是与Spring Data JPA集成时出现的。spring.jpa.open-in-view 是一个配置属性,它决定了Spring是否应该在请求处理过程中自动开启一个EntityManager的持久化上下文(Persistence Context),并使其在整个请求处理过程中保持打开状态,包括视图渲染阶段。原创 2024-07-30 16:48:36 · 610 阅读 · 0 评论 -
AES 加密 key iv
AES(Advanced Encryption Standard)加密是一种广泛使用的对称加密算法,它使用相同的密钥进行加密和解密操作。在AES加密中,和,Initialization Vector)是两个重要的组成部分。原创 2024-07-30 08:30:53 · 13236 阅读 · 0 评论 -
IDEA解决 properties文件乱码问题
IDEA prop properties 文件乱码原创 2024-07-29 17:33:35 · 5718 阅读 · 3 评论 -
Spring MVC 本地目录图片文件暴漏出去
请注意,这里使用的是Spring Boot的版本,在Spring MVC中配置静态资源可能略有不同。此外,使用 file: 前缀后需要有一个目录分隔符(在Windows上是 \,在Unix-like系统上是 /),以确保路径正确。在生产环境中,可能还需要考虑将静态资源放在外部存储中,并使用URL前缀来引用它们。在这个配置中,任何映射到 /images/ 路径的请求都会被 Spring MVC 处理,并映射到本地的 images 目录。通过这种方式,你可以防止本地的图片文件被直接访问,确保安全性。原创 2024-07-29 09:36:23 · 450 阅读 · 0 评论 -
Netty SSL/TLS
SSL(Secure Sockets Layer)是网景公司设计的协议,用于在互联网上提供安全通信。TLS(Transport Layer Security)是SSL的后续版本,由IETF标准化,两者在技术上非常相似,通常可以视为同一个东西的不同阶段或版本。SSL/TLS协议的主要目的是在客户端和服务器之间建立一个加密的通道,以保护数据在传输过程中不被窃听、篡改或冒充。Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能、高扩展性协议服务器和客户端。原创 2024-07-17 08:27:35 · 996 阅读 · 0 评论 -
Netty Websocket
Netty 是一个高性能、异步事件驱动的网络应用程序框架,支持快速开发可维护的高性能协议服务器和客户端。它基于 Java NIO(非阻塞 I/O)进行封装,提供了更简单易用的 API,并解决了 NIO 编程中常见的复杂性和错误。原创 2024-07-17 08:18:10 · 1572 阅读 · 0 评论 -
Netty HTTP
Netty 是一个高性能的异步事件驱动的网络应用程序框架,支持快速开发可维护的高性能协议服务器和客户端。它广泛应用于开发网络应用程序,如服务器和客户端协议的实现。Netty 提供了对多种传输类型的抽象,如 TCP/IP 和 UDP/IP 等,使得开发者可以专注于业务逻辑的实现,而不必担心底层网络通信的复杂性。在 HTTP 协议的支持方面,Netty 提供了丰富的 HTTP 相关的编解码器和处理器,使得开发者可以轻松地实现 HTTP 服务器和客户端。原创 2024-07-16 11:57:30 · 1469 阅读 · 0 评论