自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谢文峰的博客

全栈JavaWeb

  • 博客(227)
  • 收藏
  • 关注

原创 GitHub 开源项目 eval-tx 分布式事务解决方案

eval-tx基于 redis 的分布式事务框架2PC 两阶段提交,60s 超时机制,原理简单易懂附简单 Demo如果还没碰到过分布式事务问题,也可通过本文进行了解和学习。项目地址: https://github.com/huajiexiewenfeng/eval-tx特点侵入性低自动装配@Enable注解激活,开箱即用基于 Spring 事务进行二次封装,学习成本低原理&设计原图地址:https://www.processon.com/view/5f1

2020-07-31 12:30:40 628

原创 JVM 常见面试题汇总(Java8)

JVM 常见面试题汇总(Java8)文章目录JVM 常见面试题汇总(Java8)前言1.JVM 有哪些内存区域?(JVM 的内存布局是什么?)2.Java 的内存模型是什么?(JMM 是什么?)3.JVM 垃圾回收时如何确定垃圾?什么是 GC Roots?4.能够找到 Reference Chain 的对象,就一定会存活么?5.强引用、软引用、弱引用、虚引用是什么?6.你说你做过 JVM 参数调优和参数配置,请问如何查看 JVM 系统默认值7.你平时工作中用过的 JVM 常用基本配置参数有哪些?8.请你谈

2020-07-10 16:54:44 2121 1

原创 夯实Spring系列|总览介绍

文章目录系列文章1.文章说明2.整理目的3.Spring 核心特性4.数据存储(Data Access)5.Web 技术6.技术整合7.测试(Testing)8.Java 版本依赖于支持9.面试题9.1 Spring Framework 有哪些核心模块?系列文章夯实Spring系列|总览介绍夯实Spring系列|夯实Spring系列|第一章:IoC到底什么是?1.文章说明本系列文...

2020-04-17 09:38:49 733 1

原创 github开源项目 eval-echarts 对echarts3.x前后端封装

文章目录1.项目简介2.特点3.项目背景4.开源地址5.环境6.代码7.项目截图1.项目简介对echarts前端js对象option进行封装,前端只需要传接口url和div的id后台提供对应的java数据结构,每种图形对应自己的抽象模板类,整个数据对象拼接的过程都已经封装好极大的方便了开发人员,只需关注业务代码和sql语句的实现即可2.特点1.使用多种设计模式保证代码的扩展性和解...

2019-05-30 20:05:01 2107 1

原创 JVM内存区域划分 Java8 和 Java21区别

Java 8的内存模型以堆、方法区、栈为核心,适合传统应用,但需要手动调优(如 GC、元空间大小)。Java 21在内存管理上更现代化:低延迟 GC(ZGC/Shenandoah)和虚拟线程减少停顿和内存占用。元空间和字符串常量池优化降低 OOM 风险。FFM API提供更安全的本地内存访问。建议追求低延迟、高吞吐量应用可升级到 Java 21,使用 ZGC 和虚拟线程。遗留系统仍可基于 Java 8,但需关注元空间和堆内存调优。

2025-04-09 11:12:13 420

原创 夯实 kafka 系列|第六章:自定义注解 @EvalEventListener 开发

在文章《夯实 kafka 系列|第五章:基于 kafka 分布式事件框架 eval-event》留了一个功能未实现监听分布式事件本文来讨论这个自定义注解如何开发。源码已更新到 github一共分为三步在 Bean 的初始化后生命周期阶段,找到所有标注的方法和类整理好所有需要的元数据信息(Bean Method topic 等等),用于动态代理+消费 kafka 消息动态代理,执行类的方法,即标注的方法用于存储 Bean Method topic 等等信息// 事件的目标类。

2025-03-27 15:45:27 1130

原创 夯实 kafka 系列|第五章:基于 kafka 分布式事件框架 eval-event

本文分享基于 kafka 的分布式事件框架,从 0 到 1 的实现过程从需求->设计->开发->测试一起来实现一个分布式事件框架;使用方式类似于 Spring Event,事件可以在微服务集群中传递。源码已上传 github。

2025-03-26 17:21:22 871

原创 夯实 kafka 系列|第四章:实战-亿级消息处理

亿级 kafka 消息该如何处理,需要注意的点有哪些,本文将和大家一起讨论。分为以下四部分进行讨论讲解kafka 服务端集群规模、参数调优与资源隔离生产者Topic 设计、压缩策略与流量控制消费者并行度控制、防积压策略与容错机制监控指标采集、可视化与告警联动组件核心功能关键特性指标采集与格式转换支持过滤、聚合,降低数据冗余Prometheus时序存储与告警触发动态服务发现、PromQL 灵活查询Grafana可视化与交互分析多数据源支持、模板化仪表盘。

2025-03-24 15:46:38 684

原创 夯实 kafka 系列|第三章:kafka 常用监控工具

本章主要是介绍一些工作中常用 kafka 的监控工具;原理上都是一样的,只是展现方式不同。

2025-03-21 17:21:07 1050

原创 夯实 kafka 系列|第二章:kafka 常用参数配置

本章我们来讨论下 kafka 中一些重要的参数配置;列举实际项目中 kafka borker 的参数配置,并解释每个参数的意义。官网中的每个参数都有这个属性read-only。被标记为 read-only 的参数和原来的参数行为一样,只有重启 Broker,才能令修改生效。per-broker。被标记为 per-broker 的参数属于动态参数,修改它之后,只会在对应的 Broker 上生效。

2025-03-20 16:22:39 859

原创 夯实 kafka 系列|第一章:初识 kafka

本文主要是介绍 kafka 的一些基本概念,以及实际项目中,我们应该如何选型;后面会持续整理相关的文章,实际项目中的用法基本用法亿级消息处理分布式消息框架以公司 kafka docker 镜像号说明镜像版本号:127.0.0.1:5000/kafka:2.11-2.0.0.181225kafka的版本是 2.0.02.11 指的是 scala 语言的版本因为 kafka 是 scala 语言编写的。

2025-03-19 18:48:01 827

原创 RocketMq Windows 部署测试

本文主要记录如何在 Windows 系统中部署 RocketMQ,并用 Java Spring 测试相关功能RocketMQ 版本 4.9.4ACL 权限设置。

2024-12-18 17:00:39 1042

原创 Elasticsearch 重建索引&数据迁移

ES 索引不支持直接修改某个字段类型,如果该索引中已经存在数据。如果要修改字段类型,只能通过重建索引+数据迁移的方式来实现该效果。Index Management 页面找到新建的临时索引,点击名称超链接,再点击右下角的【Manage】按钮,Delete index 可以删除索引。

2024-11-14 11:24:45 934

原创 Got permission denied while trying to connect to the Docker daemon socket at unix 问题解决方案

docker push 权限问题解决方案

2024-07-17 16:54:39 472 1

原创 Redis 多数据源自定义配置 Spring Boot 升级版

本文为大家提供一个 redis 配置多数据源的实现方案;为上一篇文章【Redis 多数据源 Spring Boot 实现】的升级版本支持自定义配置无需写任何其他配置 Java 类application.properties 配置完,直接就可以使用请注意 spring boot 的相关依赖版本。//...此处省略N行代码@Override// 获取 application.properties 对应的 java 类对象= null;

2024-07-05 17:13:24 1166

原创 Redis 多数据源 Spring Boot 实现

本文为大家提供一个 redis 配置多数据源的实现方案,在实际项目中遇到,分享给大家。后续如果有时间会写一个升级版本,升级方向在第5点。

2024-07-05 14:23:08 1856 2

原创 设置 kafka offset 消费者位移

Specified-Offset 策略直接指定 --to-offset。Duration 策略,我们直接指定 --by-duration。Shift-By-N 策略直接指定 --shift-by N。Earliest 策略直接指定 --to-earliest。DateTime 策略直接指定 --to-datetime。Current 策略直接指定 --to-current。Latest 策略直接指定 --to-latest。不同的版本,下面的路径可能不一样。= 9+1,即跳过一条记录。

2024-05-07 16:52:06 884 2

原创 SOFAJRaft 注册中心-心跳检测实现

在上篇文章基于 SOFAJRaft 实现注册中心_不懂的浪漫的博客-优快云博客学习之后,我们了解了如何基于 JRaft 来实现一个注册中心,了解了 JRaft 的编程模式。按照官网的步骤和示例,一步一步完善代码即可。本文主要是完善注册中心的心跳功能。ps:对之前的文章中的一些代码缺陷也进行了修正。

2023-10-12 17:54:48 405

原创 基于 SOFAJRaft 实现注册中心

通过本文的学习可以帮助大家了解 SOFAJRaft 的使用方式和集成步骤;参考本文的实现步骤,可以来完成自己工作中相关产品的一致性协议 raft 集成,从而实现应用的高可用。学习本文的前提需要了解 Raft 一致性协议对 SOFAJRaft 框架有一定的了解可以参考:SOFAJRaft 日志复制共识算法本文主要讨论的内容如下注册中心的实现如何集成 Raft 协议来实现注册中心高可用。

2023-10-11 18:04:35 798

原创 SOFAJRaft 日志复制共识算法

Raft 分组中的一个节点,连接封装底层的所有服务,用户看到的主要服务接口,特别是 apply(task) 用于向 raft group 组成的复制状态机集群提交新任务应用到业务状态机。StateMachine: 用户核心逻辑的实现,核心是 onApply(Iterator) 方法,应用通过 Node#apply(task) 提交的日志到业务状态机。FSMCaller: (Finite State Machine),封装对业务 StateMachine 的状态转换的调用以及日志的写入等,一个有限状态机的实

2023-10-11 17:59:59 731

原创 Spring @Scheduled单线程单实例的坑

在项目中经常会用@Scheduled来实现一些定时任务的场景,有必要了解一些它使用时的问题和内部实现机制。本文是偶然间发现的一个问题,刷新了我的认知,分享给大家。Spring @Scheduled 多线程配置。

2023-08-03 13:59:38 898

原创 实际项目集成分布式一致性协议 Raft

只要理解了共识算法,其实集成 raft 很简单,由于共识算法优秀文章已经很多了,本章就不做过多赘述了;这里我们重点是讨论如何在我们的实际工程中集成 raft 协议,来实现分布式一致性;前面我们只会简单的介绍分布式共识算法以及学习 Nacos 如何来集成分布式算法,重点在第4小节;看完本章,大家可以根据自己项目的实际情况来决定是否需要集成 raft 协议来实现分布式一致性。

2023-04-19 11:07:32 944

原创 Spring事务7种传播机制(代码示例)

Spring事务7种传播机制(代码示例)文章目录Spring事务7种传播机制(代码示例)前言1.项目环境2.相关资料2.1 Spring 源码2.2 官网地址3.示例代码3.1 无事务示例3.1.1 正常示例3.1.2 异常示例3.2 REQUIRED(默认)3.2.1 代码示例3.2.2 结果分析3.3 REQUIRES_NEW3.3.1 代码示例3.3.2 结果分析3.4 SUPPORTS3.4.1 代码示例3.4.2 结果分析3.5 MANDATORY3.5.1 代码示例3.5.2 结果分析3.6

2021-12-30 15:08:04 1313

原创 Spring 缓存 AOP 实现

Spring 缓存 AOP 实现文章目录Spring 缓存 AOP 实现前言1.项目环境2.Spring @Cacheable 示例3.实现猜想4.实现源码核心API5.Spring AOP API 示例6.源码分析6.1 @EnableCaching6.2 ProxyCachingConfiguration6.2.1 Advisor 实现6.2.2 Pointcut 实现6.2.3 Interceptor 实现6.2.4 CacheOperationSource 实现6.2.5 小结6.3 AutoPr

2021-07-19 16:36:49 951 1

原创 什么是 MongoDB 复制集

什么是 MongoDB 复制集文章目录什么是 MongoDB 复制集1.什么是复制集2.复制集的作用3.典型复制集结构4.数据如何复制的?5.故障恢复6.影响选举的因素7.常见选项8.复制集注意事项9.参考1.什么是复制集Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高

2021-03-10 18:27:30 532

原创 MongoDB Aggregation 聚合框架

MongoDB Aggregation 聚合框架文章目录MongoDB Aggregation 聚合框架前言1.MongoDB 聚合框架是什么2.管道(Pipeline)和步骤(Stage)3.聚合运算的基本格式4.步骤5.步骤中的运算符5.1 $match5.2 $project5.3 $group6.MQL & SQL 对比6.1 例16.2 例27.特殊步骤7.1 $unwind7.2 $bucket7.3 $facet8.MongoDB Compass(推荐工具)8.1 基本使用8.2 导

2021-03-09 10:42:13 1550

原创 MongoDB 基本操作

MongoDB 基本操作文章目录MongoDB 基本操作1.insert 插入2.remove 删除3.update 更新3.1 update 操作3.2 注意点4.find 查找4.1 关于 find4.2 find 示例4.3 查询条件对照表4.4 查询逻辑对照表4.5 查询逻辑运算符4.6 find 子文档搜索4.7 find 数组搜索4.8 find 数组中的多个字段4.9 控制 find 返回的字段5.drop 删除集合6.dropDatabase 删除数据库7.参考1.insert 插入操

2021-02-23 09:47:22 337

原创 Elasticsearch 基础操作(含批量操作)

Elasticsearch 基础操作文章目录Elasticsearch 基础操作1.文档的基本 CRUD1.1 Create1.2 Get1.3 Index1.4 Update1.5 Delete2.批量操作2.1 批量操作 bulk2.2 批量读取 mget2.3 批量查询 msearch3.常见错误返回4.参考1.文档的基本 CRUD操作示例IndexPUT my_index/_doc/1{“user”:“mike”,“comment”:“hello,world”}Cr

2021-02-08 16:53:38 282

原创 Spring @Scheduled 多线程配置

Spring @Scheduled 多线程配置环境SpringBoot 2.0.2.RELEASEJDK8两种方式实现1.@Scheduled+@Async测试代码:@SpringBootApplication@EnableScheduling@EnableAsyncpublic class ScheduleBootstrap { public static void main(String[] args) { SpringApplication.run(Schedul

2020-12-16 15:17:21 2874

原创 Java 8 函数式设计,更优雅的使用 Lambda

Java 8 函数式设计,更优雅的使用 Lambda文章目录Java 8 函数式设计,更优雅的使用 Lambda项目环境1.前言2.什么是函数式接口 @FunctionalInterface3.函数式接口类型4.举例说明4.1 Supplier4.1.1 Supplier 接口定义4.1.2 Supplier 接口源码4.1.3 示例4.1.4 设计4.1.6 Spring 5.0+4.2 Consumer4.2.1 Consumer 接口定义4.2.2 Consumer 接口源码4.2.3 Spring

2020-11-09 20:54:00 458

原创 夯实Spring系列|第二十四章:Spring Environment 抽象

夯实Spring系列|第二十四章:Spring Environment 抽象文章目录夯实Spring系列|第二十四章:Spring Environment 抽象前言1.项目环境2.理解 Spring Environment 抽象3.Spring Environment 接口使用场景4.Environment 占位符处理5.理解条件配置 Spring Profiles6.Spring 4 重构 @Profile7.依赖注入 Environment8.依赖查找 Environment8.1 示例8.2 源码分

2020-10-24 21:30:17 382 1

原创 夯实Spring系列|第二十一章:Spring 泛型处理(Generic Resolution)

夯实Spring系列|第二十一章:Spring 泛型处理(Generic Resolution)文章目录夯实Spring系列|第二十一章:Spring 泛型处理(Generic Resolution)本章说明1.项目环境2.Java 泛型基础2.1 举例说明2.2 代码示例3.Java 5 类型接口4.Spring 泛型类型辅助类5.Spring 泛型集合类型辅助类6.Spring 方法参数封装 - MethodParameter7.Spring 4.2 泛型优化实现 - ResolvableType8.

2020-09-29 23:41:42 782

原创 夯实Spring系列|第二十三章:Spring 注解(Annotations)

夯实Spring系列|第二十三章:Spring 注解(Annotations)文章目录夯实Spring系列|第二十三章:Spring 注解(Annotations)前言1.项目环境2.Spring 注解驱动编程发展历程3.Spring 核心注解场景分类4.Spring 注解编程模型4.1 Spring 元注解(Meta-Annotations)4.2 Spring 模式注解(Stereotype Annotations)4.2.1 @ComponentScan 如何进行扫描?4.2.2 派生性示例4.3

2020-09-25 00:11:31 302

原创 Git 简版教程(一文搞懂,建议收藏)

Git 简版教程(一文搞懂,建议收藏)文章目录Git 简版教程(一文搞懂,建议收藏)前言1.Git 简介2.Git 下载安装3.Git 初体验4.Git log 和版本切换5.工作区 暂存区 提交区6.分支管理 branch7.分支合并 merge8.冲突解决9.Git config & 配置别名9.1 配置基本操作9.2 配置别名10.打标签 tag11.忽略文件12.本地仓库&远程仓库13.操作远程和本地仓库13.1 创建远程仓库13.2 设置 SSH Keys13.3 push 推送

2020-09-21 23:28:05 435

原创 API 网关服务-Zuul 基础篇

API 网关服务-Zuul 基础篇文章目录API 网关服务-Zuul 基础篇前言项目环境1.什么是 Zuul?2.为什么需要 Zuul?3.应用场景3.1 动态路由3.2 请求监控3.3 认证鉴权3.4 压力测试3.5 灰度发布4.Zuul 路由5.Zuul & Eureka 使用6.Zuul 过滤器(Filter Types)7.请求生命周期(Zuul Request Lifecycle)8.自定义过滤器9.Zuul 容错与回退10.Zuul Debug11.Zuul 控制路由实例选择12.参考

2020-09-13 22:12:52 480 1

原创 服务容错保护-Hystrix 基础篇

服务容错保护-Hystrix 基础篇文章目录服务容错保护-Hystrix 基础篇前言项目环境1.什么是 Hystrix?2.什么是服务雪崩?3.如何解决服务雪崩?4.Hystrix 设计原则5.Hystrix 的工作机制6.Hystrix 使用6.1 在 RestTemplate 和 Ribbon 上使用熔断器6.2 Feign 中使用熔断器6.3 Zuul 中使用熔断器7.Hystrix 配置8.Hystrix 监控9.Hystrix 使用小经验10.参考前言本章主要介绍 Hystrix 的相关概念

2020-08-24 14:48:59 582

原创 声明式服务调用-Feign 源码分析

声明式服务调用-Feign 源码分析文章目录声明式服务调用-Feign 源码分析前言项目环境1.Feign 主要组件3.Feign 执行过程4.Feign & Hystrix 集成4.1 FeignClient 配置类 FeignClientsConfiguration4.2 自动装配 FeignAutoConfiguration5.Feign & Ribbon 集成6.@FeignClient 工作原理6.1 @FeignClient 处理过程6.2 代理类如何处理?7.Spring M

2020-08-24 11:38:38 326

原创 声明式服务调用-Feign 基础篇

声明式服务调用-Feign 基础篇文章目录声明式服务调用-Feign 基础篇前言项目环境1.什么是 Feign?2.原生 Feign API3.Spring Cloud OpenFeign4.Feign 整合 Hystrix5.Feign 的配置5.1 Feign 的配置-代码方式5.2 Feign 的配置-配置文件方式6.Feign 的使用技巧6.1 继承特性6.2 拦截器6.3 请求对象类型参数传递6.4 日志配置6.5 异常解码器7.参考前言本篇主要是介绍什么是 Feign, Feign 的基本

2020-08-24 11:05:24 597

原创 Hystrix DashBoard 监控配置方式以及 Hystrix.stream 404 问题

Hystrix DashBoard 监控配置方式以及 Hystrix.stream 404 问题文章目录Hystrix DashBoard 监控配置方式以及 Hystrix.stream 404 问题配置 Hystrix DashBoard解决方案配置 Hystrix DashBoardSpring Cloud 版本:Spring Cloud Finchley三个依赖:spring-cloud-starter-netflix-hystrixspring-boot-starter-actuato

2020-08-21 17:12:36 2233 3

原创 客户端负载均衡-Ribbon 源码分析

客户端负载均衡-Ribbon 源码分析文章目录客户端负载均衡-Ribbon 源码分析前言项目环境1.Ribbon 主要组件2.组件作用和联系3.静态配置 ServerList 示例4.@LoadBalanced 原理分析5.Serverlist 如何获取&更新5.1 获取 Serverlist5.2 更新 Serverlist5.1 ServerListFiter5.2 ServerListUpdater5.3 IPing6.负载均衡策略7.自定义负载均衡策略8.负载均衡算法的使用场景8.1 定制

2020-08-18 19:36:10 535

空空如也

空空如也

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

TA关注的人

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