自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 WebSocket:实时通信的新时代

WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单、高效。WebSocket协议在2011年被IETF定为标准RFC 6455,并被现代浏览器广泛支持。单工模式(Simplex):通信方向完全单向且不可逆。例如广播、遥控器,发送端无法接收数据。半双工(Half-Duplex):双向通信但需分时切换方向,如对讲机,一方说话时另一方需沉默。全双工(Full-Duplex):同时双向传输,需两条独立信道或技术分割(如频分复用),如电话、网络通信。

2025-05-09 16:05:57 326

原创 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 1119

原创 探索分布式事务与Seata:构建可靠的Spring微服务架构

分布式事务是指在分布式系统中,涉及多个独立节点或服务的事务。这些节点可能位于不同的物理或虚拟机上,每个节点可能有自己的数据库、资源管理器或其他持久化存储。为了确保数据的一致性,分布式事务需要协调这些节点上的操作,使得所有操作要么全部成功,要么全部失败。跨数据源的分布式事务跨服务的分布式事务既跨服务又跨数据库的分布式事务创建新订单:订单服务负责创建订单并写入订单数据库。扣减商品库存:库存服务负责检查并扣减商品库存,更新库存数据库。

2025-03-01 16:37:51 818

原创 基于 Spring 的本地事务管理

本地事务是指在单一数据库系统内执行的一组操作,这些操作要么全部完成,要么全部不执行,是一个不可分割的工作单元。本地事务具有ACID特性:3. 使用Spring框架进行本地事务管理3.1. 编程式事务管理编程式事务管理是指在代码中显式地控制事务的开始、提交和回滚。这种方式提供了更大的灵活性,但也会增加代码的复杂性。TransactionTemplate是Spring提供的一个类,用于简化编程式事务管理。它封装了事务管理的逻辑,使得开发者可以更方便地控制事务。首先,需要配置一个TransactionTem

2025-01-23 10:39:43 422

原创 数据库事务:确保数据一致性的关键机制

原子性保证事务是一个不可分割的工作单元,其中的操作要么全部完成,要么全部不执行。如果事务中的任何部分失败,则整个事务将被撤销。一致性确保事务必须使数据库从一个一致状态转换到另一个一致状态。事务执行前后,数据库的完整性约束没有被破坏。多个事务并发执行时,一个事务的执行不应影响其他事务的执行。每个事务都应在独立的环境中运行,就像它是唯一正在运行的事务一样。持久性确保一旦事务提交,它对数据库所做的更改将是永久性的,即使系统发生故障也不会丢失。事务可以读取其他事务未提交的数据。事务只能读取其他事务已经提交的数据。

2025-01-10 11:24:13 717

原创 Kibana 部署

Kibana 是一个开源的数据可视化和探索工具,主要用于 Elasticsearch 数据的分析和展示。本文将详细介绍如何在 Linux 系统上部署 Kibana,并启用 SSL 加密以确保安全通信。

2024-12-12 20:33:23 1712

原创 Elasticsearch 集群部署

Elasticsearch 是一个分布式的搜索和分析引擎,广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置,包括节点间的通信、客户端访问、安全设置等关键步骤。我们将通过三个节点(node1、node2、node3)来搭建一个高可用的 Elasticsearch 集群,以确保您的数据能够在多个节点之间高效地存储和检索。

2024-12-12 11:12:14 1882 1

原创 离线安装 Nginx

在现代互联网应用中,Nginx 作为高性能的 HTTP 和反向代理服务器,被广泛应用于各种网站和应用系统中。它以其轻量级、高并发处理能力和稳定性而著称。然而,在某些网络受限的环境中,直接在线安装 Nginx 及其依赖项可能会遇到困难。为了满足这些环境的需求,本文将详细介绍如何在离线环境下安装 Nginx 及其所有必要的依赖项。我们将使用 CentOS7 作为示例操作系统,但这些步骤同样适用于其他 Linux 发行版。

2024-12-11 10:05:37 1793

原创 Spring Boot 集成 Knife4j 的 Swagger 文档

在开发微服务应用时,API 文档的生成和维护是非常重要的一环。Swagger 是一个非常流行的 API 文档工具,可以帮助我们自动生成 RESTful API 的文档,并提供了一个友好的界面供开发者测试 API。本文将介绍如何在 Spring Boot 项目中集成 Knf4j 的 Swagger,以实现 API 文档的自动生成和展示。

2024-11-26 16:51:52 1324

原创 利用 Jsoup 进行高效 Web 抓取与 HTML 处理

Jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 JQuery 的操作方法来取出和操作数据。

2024-11-25 15:50:33 1868

原创 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 1041

原创 SpringBoot 集成 Sharding-JDBC(一):数据分片

Sharding-JDBC 最初是由当当网内部开发的一款分库分表框架,于2017年开始对外开源。经过社区贡献者的不断迭代,功能逐渐完善,并于2020年4月16日正式成为 Apache 软件基金会的顶级项目,更名为 ShardingSphere。

2024-11-19 18:08:23 1635

原创 MySQL数据库分区

表分区(Partition)是一种数据存储方案,可以解决单表数据较多的问题。MySQL5.1开始支持表分区功能。数据库的表最终肯定是保存在磁盘中,对于InoDB引擎,一张表的数据在磁盘上对应一个ibd文件。`username` varchar(50) NOT NULL COMMENT '账号',`password` varchar(50) NOT NULL COMMENT '密码',`role` tinyint NOT NULL COMMENT '角色:0-管理员、1-1区用户、2-2区用户',

2024-11-14 11:19:26 1257

原创 关系型数据库海量数据存储策略

随着信息技术的不断发展和应用场景的不断扩大,大量数据的产生和存储已经成为了当今社会的一个重要问题。在许多领域,如互联网、金融、医疗等,都需要处理和存储海量的数据,这对数据库系统的存储和管理能力提出了巨大的挑战。

2024-11-11 09:16:56 1158

原创 SpEL(Spring Expression Language)入门指南

SpEL(Spring Expression Language)是 Spring 框架提供的一个强大的表达式语言,用于在运行时查询和操作对象图。它类似于 JSP EL(JavaServer Pages Expression Language)和 OGNL(Object-Graph Navigation Language),但在功能上更为丰富和强大。

2024-11-05 11:31:32 1058

原创 有状态登录与无状态登录:原理与对比

在数字化时代,登录系统成为了我们日常生活中的一个重要环节。而有状态登录与无状态登录两种方式备受关注。有状态登录是指服务器在验证了用户的身份后,会为其分配一个唯一的标识符,以便后续的请求都可以通过该标识符进行验证。而无状态登录则是在每次请求时都需要提供完整的身份验证信息,服务器不再保留任何关于用户的状态信息。那么,有状态登录与无状态登录各自有什么优劣势呢?它们又在哪些场景下更加适用呢?本文将从安全性、性能以及扩展性等方面对这两种登录方式进行比较和分析。通过深入探讨,我们可以更好地理解有状态登录与无状态登录。

2024-10-31 16:17:02 893

原创 Apache JMeter 入门指南:性能测试的利器

JMeter是由Apache软件基金会开发的一款开源性能测试工具,主要使用Java语言编写。它最初设计用于测试Web应用程序,但随着时间的发展,现在可以用来测试几乎所有类型的服务器、网络协议和服务。JMeter支持多种协议,包括HTTP、HTTPS、FTP、SMTP、POP3等,并且能够模拟大量用户对系统进行并发访问,以评估系统的性能和稳定性。

2024-10-29 08:49:49 1675

原创 OpenFeign 入门与实战:快速搭建 Spring Cloud 微服务客户端

OpenFeign 是 Spring Cloud 的一部分,它是一个声明式的 Web 服务客户端。通过使用 OpenFeign,开发者可以以声明的方式编写 Web 服务客户端接口,而不需要创建模板化的 HTTP 请求。Feign 内置了 Ribbon,用于实现客户端负载均衡,使得调用服务注册中心中的服务变得更加容易。引入依赖添加@EnableFeignClients注解编写FeignClient接口使用FeignClient中定义的方法代替RestTemplate类型作用说明。

2024-10-12 09:50:25 962

原创 函数式接口在Java中的应用与实践

函数式接口是Java 8引入的一个概念,它是指只有一个抽象方法的接口。函数式接口可以被用作lambda表达式的目标类型。在函数式接口中,除了抽象方法外,还可以有默认方法和静态方法。函数式接口的引入是为了支持函数式编程,函数式编程是一种编程范式,强调将计算过程看作是数学函数的求值。函数式编程可以使代码更简洁、易读,并且便于并发编程。函数式接口在Java中的使用广泛,它可以作为方法参数、返回类型、变量或成员变量的类型。通过使用函数式接口,可以实现更简洁、灵活的代码编写,提高代码的可读性和维护性。

2024-09-30 10:12:52 810

原创 如何在多台Linux虚拟机上安装和配置Kafka集群

Kafka是一个高性能、分布式的流处理平台,被广泛应用于大规模实时数据处理场景。它具有高吞吐量、低延迟和可水平扩展等特点,能够有效地处理海量数据流。为了提高Kafka的可用性和容错性,通常会在多个节点上部署Kafka集群。在这个指南中,我们将介绍如何在多台Linux虚拟机上安装和配置Kafka集群,以便你能够快速搭建一个高可用的数据流处理平台。在本教程中,我们将使用Apache Kafka 2.8.0版本,并以三个节点的集群为例进行说明。让我们开始吧!

2024-09-18 11:17:55 1306

原创 如何在多台Linux虚拟机上安装和配置Zookeeper集群

Zookeeper 是一个高性能的协调服务,广泛应用于分布式系统中。本文将详细介绍如何在多台Linux虚拟机上安装和配置Zookeeper集群。下面以三台服务器(node1、node2、node3)进行讲解。

2024-09-18 09:24:42 811

原创 如何在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 1274

原创 如何准备多台虚拟机并配置集群化软件

在搭建集群化软件的过程中,首先需要准备好多台Linux服务器。本文将详细介绍如何使用VMware提供的克隆功能来准备多台虚拟机,并进行必要的配置以实现集群化软件的部署。

2024-09-13 11:25:42 1337

原创 Spring Cloud Gateway

在SpringCloud中网关的实现包括两种:gateway:Spring Cloud Gateway属于响应式编程的实现,具备更好的性能,需要Spring Boot和Spring Webflux提供的Netty运行时。它不能在传统的Servlet容器中工作,也不能以WAR的形式构建。zuul:Zuul是基于Servlet的实现,属于阻塞式编程。网关搭建步骤:创建项目,引入nacos服务发现和gateway依赖配置application.yml,包括服务基本信息、nacos地址、路由。

2024-08-22 17:41:31 1119

原创 Java 读取树状结构的.yaml文件

Java 读取树状结构的.yaml文件。

2024-07-22 18:36:26 581

原创 解决瀚高数据库(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 2293

原创 如何高效使用 .http 文件记录和测试API接口

1. 文件类型为http,如文件名为 demo.http。2. 一个文件内写多个请求(通过 ### 分割),例如:3. #代表注释4. 通过@定义变量,{{}}使用变量,例如:注意:idea不支持定义变量5. post请求,地址和请求参数中间要有一行空行6. 点击Send Request即可发送请求。

2024-06-27 11:04:07 1112

原创 Spring Boot 集成 H2 数据库

Spring Boot 以其简洁的配置和快速开发能力,成为现代微服务架构的首选框架之一。而H2数据库作为一个轻量级的内存数据库,非常适合开发阶段作为嵌入式数据库进行单元测试和功能验证。本文将手把手教你如何在Spring Boot项目中集成H2数据库,实现数据的快速存取与管理。

2024-06-26 16:59:14 654

原创 优化Docker部署:解决Java应用ExcelGenerateException并提速镜像构建

在开发和部署应用时,经常会遇到在本地环境运行正常,但迁移到Docker容器后出现特定错误的情况。本篇博客将聚焦于解决一个具体问题:当使用Docker部署包含Excel生成功能的Java应用程序时,遇到ExcelGenerateException的排查与解决方法。

2024-06-26 16:42:34 630 1

原创 有效避免Long类型数据向前端传递时的精度丢失问题

JavaScript的Number类型遵循IEEE 754标准,只能精确表示到2^53 - 1(即9007199254740991)的整数,超过这个范围的整数会丢失精度。因此,后端的Long类型数据在未经处理直接传给前端时,可能会因JavaScript的这一限制而失真。

2024-06-25 18:33:35 749

原创 MAVEN私服配置

请按实际私服地址密码替换即可,该私服地址仅用于文档案例,实际不可访问。

2024-06-23 00:00:09 610 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 732

原创 MySQL时间转换

MySQL时间转换:1. bigint类型的时间戳2. datetime类型3. date类型4. timestamp类型5. varchar/char类型时间

2024-06-22 23:33:55 3173

原创 HttpClient工具类

HttpClient工具类支持:1. 支持http和https协议;2. 支持GET、POST、PUT、DELETE请求;3. 支持图片下载到本地。

2024-06-22 23:14:28 1699

原创 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 1589 2

原创 如何读取配置文件

如果需要从特定的外部properties文件加载属性,可以使用@PropertySource,但这在Spring Boot中不常用,因为它更倾向于从application.properties或yaml文件中加载。user.id=1使用@PropertySource读取后,就可以按照读取application.properties或application.yml格式读取配置文件了,这里以@ConfigurationProperties读取配置文件为例。

2024-01-24 22:07:09 1175 1

原创 模拟依赖服务以实现单元测试隔离性

在 Spring Boot 应用程序开发过程中,单元测试是保证代码质量、提高开发效率的重要环节。在复杂的业务场景中,服务之间往往存在依赖关系。为了更好地隔离被测试的服务,我们需要模拟其依赖项的行为。@MockBean 就是 Spring Boot Test 框架提供的一种强大工具,它允许我们在运行时的 Spring 应用上下文中注入一个模拟(Mock)对象来替换真实的bean。

2024-01-24 20:35:39 1086

原创 SpringCloud如何通过配置文件实现动态登录拦截

通过配置文件实现动态登录拦截可以实现实现灵活的权限控制、快速响应变化、集中管理权限配置、实现微服务的解耦以及方便地进行测试和部署

2024-01-21 17:47:47 602

原创 如何异步生成10位的兑换码

兑换码需求:长度不超过10个字符,只能是24个大写字母和8个数字,有10亿以上的唯一验证码,不可重兑,防止爆刷且兑换码生成、验证的算法必须保证效率

2024-01-21 15:17:15 1495 5

原创 Spring如何优雅实现结果统一封装

Spring如何优雅实现结果统一封装

2024-01-21 13:24:40 426

Nginx 离线安装包汇总 Linux 版

安装教程见:https://blog.csdn.net/kersixy/article/details/144381861

2024-12-16

JDK自带的延迟队列-DelayQueue

具体代码参考

2024-01-12

空空如也

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

TA关注的人

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