
java
文章平均质量分 82
可儿·四系桜
这个作者很懒,什么都没留下…
展开
-
Kafka Snappy 压缩异常分析与解决方案
org.apache.kafka.common.KafkaException: java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.7-ee0a2284-1d05-4116-9ddc-a0d5d4b3f8cd-libsnappyjava.so 该异常表明 Kafka 在尝试加载 libsnappyjava.so 共享库时失败,原因是缺少依赖的动态链接库 ld-linux-x86-64.so.2。原创 2025-03-21 17:41:34 · 1097 阅读 · 0 评论 -
探索分布式事务与Seata:构建可靠的Spring微服务架构
分布式事务是指在分布式系统中,涉及多个独立节点或服务的事务。这些节点可能位于不同的物理或虚拟机上,每个节点可能有自己的数据库、资源管理器或其他持久化存储。为了确保数据的一致性,分布式事务需要协调这些节点上的操作,使得所有操作要么全部成功,要么全部失败。跨数据源的分布式事务跨服务的分布式事务既跨服务又跨数据库的分布式事务创建新订单:订单服务负责创建订单并写入订单数据库。扣减商品库存:库存服务负责检查并扣减商品库存,更新库存数据库。原创 2025-03-01 16:37:51 · 810 阅读 · 0 评论 -
基于 Spring 的本地事务管理
本地事务是指在单一数据库系统内执行的一组操作,这些操作要么全部完成,要么全部不执行,是一个不可分割的工作单元。本地事务具有ACID特性:3. 使用Spring框架进行本地事务管理3.1. 编程式事务管理编程式事务管理是指在代码中显式地控制事务的开始、提交和回滚。这种方式提供了更大的灵活性,但也会增加代码的复杂性。TransactionTemplate是Spring提供的一个类,用于简化编程式事务管理。它封装了事务管理的逻辑,使得开发者可以更方便地控制事务。首先,需要配置一个TransactionTem原创 2025-01-23 10:39:43 · 412 阅读 · 0 评论 -
数据库事务:确保数据一致性的关键机制
原子性保证事务是一个不可分割的工作单元,其中的操作要么全部完成,要么全部不执行。如果事务中的任何部分失败,则整个事务将被撤销。一致性确保事务必须使数据库从一个一致状态转换到另一个一致状态。事务执行前后,数据库的完整性约束没有被破坏。多个事务并发执行时,一个事务的执行不应影响其他事务的执行。每个事务都应在独立的环境中运行,就像它是唯一正在运行的事务一样。持久性确保一旦事务提交,它对数据库所做的更改将是永久性的,即使系统发生故障也不会丢失。事务可以读取其他事务未提交的数据。事务只能读取其他事务已经提交的数据。原创 2025-01-10 11:24:13 · 667 阅读 · 0 评论 -
Spring Boot 集成 Knife4j 的 Swagger 文档
在开发微服务应用时,API 文档的生成和维护是非常重要的一环。Swagger 是一个非常流行的 API 文档工具,可以帮助我们自动生成 RESTful API 的文档,并提供了一个友好的界面供开发者测试 API。本文将介绍如何在 Spring Boot 项目中集成 Knf4j 的 Swagger,以实现 API 文档的自动生成和展示。原创 2024-11-26 16:51:52 · 1292 阅读 · 0 评论 -
利用 Jsoup 进行高效 Web 抓取与 HTML 处理
Jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 JQuery 的操作方法来取出和操作数据。原创 2024-11-25 15:50:33 · 1784 阅读 · 0 评论 -
SpringBoot 集成 Sharding-JDBC(二):读写分离
Ctrl + 左键点击 loadBalanceAlgorithmType,点击定位文件位置,如下图所示,这三个文件即为主键生成策略的配置文件。org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator文件指定了两种生成策略,分别为UUID和雪花算法。1. 编写配置文件spring:sharding:master:name: # 读写分离数据源名称master-data-source-name: master # 主库数据源名称。原创 2024-11-22 09:31:33 · 1022 阅读 · 0 评论 -
SpringBoot 集成 Sharding-JDBC(一):数据分片
Sharding-JDBC 最初是由当当网内部开发的一款分库分表框架,于2017年开始对外开源。经过社区贡献者的不断迭代,功能逐渐完善,并于2020年4月16日正式成为 Apache 软件基金会的顶级项目,更名为 ShardingSphere。原创 2024-11-19 18:08:23 · 1609 阅读 · 0 评论 -
有状态登录与无状态登录:原理与对比
在数字化时代,登录系统成为了我们日常生活中的一个重要环节。而有状态登录与无状态登录两种方式备受关注。有状态登录是指服务器在验证了用户的身份后,会为其分配一个唯一的标识符,以便后续的请求都可以通过该标识符进行验证。而无状态登录则是在每次请求时都需要提供完整的身份验证信息,服务器不再保留任何关于用户的状态信息。那么,有状态登录与无状态登录各自有什么优劣势呢?它们又在哪些场景下更加适用呢?本文将从安全性、性能以及扩展性等方面对这两种登录方式进行比较和分析。通过深入探讨,我们可以更好地理解有状态登录与无状态登录。原创 2024-10-31 16:17:02 · 850 阅读 · 0 评论 -
Apache JMeter 入门指南:性能测试的利器
JMeter是由Apache软件基金会开发的一款开源性能测试工具,主要使用Java语言编写。它最初设计用于测试Web应用程序,但随着时间的发展,现在可以用来测试几乎所有类型的服务器、网络协议和服务。JMeter支持多种协议,包括HTTP、HTTPS、FTP、SMTP、POP3等,并且能够模拟大量用户对系统进行并发访问,以评估系统的性能和稳定性。原创 2024-10-29 08:49:49 · 1404 阅读 · 0 评论 -
函数式接口在Java中的应用与实践
函数式接口是Java 8引入的一个概念,它是指只有一个抽象方法的接口。函数式接口可以被用作lambda表达式的目标类型。在函数式接口中,除了抽象方法外,还可以有默认方法和静态方法。函数式接口的引入是为了支持函数式编程,函数式编程是一种编程范式,强调将计算过程看作是数学函数的求值。函数式编程可以使代码更简洁、易读,并且便于并发编程。函数式接口在Java中的使用广泛,它可以作为方法参数、返回类型、变量或成员变量的类型。通过使用函数式接口,可以实现更简洁、灵活的代码编写,提高代码的可读性和维护性。原创 2024-09-30 10:12:52 · 793 阅读 · 0 评论 -
如何在Linux虚拟机上安装和配置JDK
首先,访问Oracle官方网站下载JDK安装包。这里以JDK 8为例:1. 访问 Oracle JDK 下载页面。2. 选择合适的版本(如JDK 8)并下载适用于Linux的安装包(例如 jdk-8u171-linux-x64.tar.gz)。原创 2024-09-13 13:59:59 · 1228 阅读 · 0 评论 -
解决瀚高数据库(PostgreSQL)中com.highgo.jdbc.util.PSQLException: ERROR: function XXX does not exist
在使用PostgreSQL数据库的函数时,遇到“function XXX does not exist”的错误提示,通常意味着数据库无法识别这样的函数调用。这通常是因为当前库无法调用public库中的函数导致。下面是一篇解决此问题的详细指南。原创 2024-06-28 17:05:25 · 2213 阅读 · 0 评论 -
Spring Boot 集成 H2 数据库
Spring Boot 以其简洁的配置和快速开发能力,成为现代微服务架构的首选框架之一。而H2数据库作为一个轻量级的内存数据库,非常适合开发阶段作为嵌入式数据库进行单元测试和功能验证。本文将手把手教你如何在Spring Boot项目中集成H2数据库,实现数据的快速存取与管理。原创 2024-06-26 16:59:14 · 646 阅读 · 0 评论 -
优化Docker部署:解决Java应用ExcelGenerateException并提速镜像构建
在开发和部署应用时,经常会遇到在本地环境运行正常,但迁移到Docker容器后出现特定错误的情况。本篇博客将聚焦于解决一个具体问题:当使用Docker部署包含Excel生成功能的Java应用程序时,遇到ExcelGenerateException的排查与解决方法。原创 2024-06-26 16:42:34 · 620 阅读 · 0 评论 -
有效避免Long类型数据向前端传递时的精度丢失问题
JavaScript的Number类型遵循IEEE 754标准,只能精确表示到2^53 - 1(即9007199254740991)的整数,超过这个范围的整数会丢失精度。因此,后端的Long类型数据在未经处理直接传给前端时,可能会因JavaScript的这一限制而失真。原创 2024-06-25 18:33:35 · 734 阅读 · 0 评论 -
MAVEN私服配置
请按实际私服地址密码替换即可,该私服地址仅用于文档案例,实际不可访问。原创 2024-06-23 00:00:09 · 585 阅读 · 1 评论 -
Java内置函数式接口
对类型为T的对象应用操作,包含方法: void accept(T t)接收一个T类型和一个U类型对象,返回一个R类型对象结果。接收一个T类型和一个U类型对象,返回一个double。接收一个T类型和一个U类型对象,返回一个long。接收一个T类型和一个U类型对象,返回一个int。返回类型为T的对象,包含方法:T get()接收一个double值,返回一个double。接收一个T类型对象,返回一个T类型对象结果。接收一个double值,返回一个R类型对象。接收一个double值,返回一个int结果。原创 2024-06-22 23:38:32 · 730 阅读 · 0 评论 -
HttpClient工具类
HttpClient工具类支持:1. 支持http和https协议;2. 支持GET、POST、PUT、DELETE请求;3. 支持图片下载到本地。原创 2024-06-22 23:14:28 · 1680 阅读 · 0 评论 -
MySQL数据库切换瀚高数据库(PostgreSQL)导致SQL适配问题:BadSqlGrammarException
BadSqlGrammarException:ERROR: operator does not exist: smallint = character varyingBadSqlGrammarException:ERROR: could not determine data type of parameter $5BadSqlGrammarException:ERROR:could not determine data type of parameter $1原创 2024-06-22 22:28:35 · 1551 阅读 · 1 评论 -
模拟依赖服务以实现单元测试隔离性
在 Spring Boot 应用程序开发过程中,单元测试是保证代码质量、提高开发效率的重要环节。在复杂的业务场景中,服务之间往往存在依赖关系。为了更好地隔离被测试的服务,我们需要模拟其依赖项的行为。@MockBean 就是 Spring Boot Test 框架提供的一种强大工具,它允许我们在运行时的 Spring 应用上下文中注入一个模拟(Mock)对象来替换真实的bean。原创 2024-01-24 20:35:39 · 1073 阅读 · 0 评论 -
如何异步生成10位的兑换码
兑换码需求:长度不超过10个字符,只能是24个大写字母和8个数字,有10亿以上的唯一验证码,不可重兑,防止爆刷且兑换码生成、验证的算法必须保证效率原创 2024-01-21 15:17:15 · 1472 阅读 · 4 评论 -
Spring如何优雅实现结果统一封装
Spring如何优雅实现结果统一封装原创 2024-01-21 13:24:40 · 420 阅读 · 0 评论 -
使用 Java 操作 Redis 数据库
Redis管道是一种将多个命令一次性发送给Redis服务器并获取结果的机制。它的作用主要有:减少网络延迟,提高吞吐量,原子性操作。原创 2024-01-15 15:45:51 · 664 阅读 · 0 评论 -
JDK自带的延迟队列——DelayQueue
原理:DelayQueue是基于阻塞队列实现的,是JDK自带延迟队列。优点:使用成本最低,而且不依赖任何第三方服务,减少了网络交互。缺点:需要占用JVM内存,在数据量非常大的情况下可能会有问题。原创 2024-01-12 23:00:47 · 1636 阅读 · 0 评论 -
基于阿里云OSS的图片上传功能
阿里云对象存储服务(Object Storage Service,简称OSS)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。原创 2024-01-11 18:09:11 · 1226 阅读 · 1 评论 -
微服务如何查找报错
在微服务场景中,多个微服务关系错综复杂,一旦报错就难以查找,下面我将以项目中的某个报错为例,来逐步定位微服务中的报错位置。原创 2024-01-11 17:59:47 · 1559 阅读 · 1 评论 -
GateWay 解析前端请求携带的请求头信息,并向下游微服务传递
GateWay 解析前端请求携带的请求头信息,并向下游微服务传递原创 2024-01-11 16:55:31 · 983 阅读 · 1 评论