- 博客(140)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注
原创 Elasticsearch 8.x 集成与 Java API 使用指南
随着 Elasticsearch 8.x 的发布,公司决定将现有的 Elasticsearch 7.x 版本升级到 8.x。然而,在升级过程中,我们发现许多 API 和功能发生了不兼容的变化,导致系统在迁移过程中遇到了大量问题。虽然官方文档提供了基本的操作指南,但实际应用中涉及的细节和调整却并未得到充分覆盖。为了帮助大家更顺利地过渡到 8.x,并有效应对这些变化, 本文将详细探讨 Elasticsearch 8.x 与 7.x 版本之间的主要差异,特别是在 Java 开发中的实际应用与迁移问题。
2024-12-19 14:43:21
4734
33
原创 (七)Spring Cloud Alibaba 2023.x:RocketMQ 消息队列配置与实现
在微服务架构中,异步消息通信是实现系统解耦、提高性能和增强系统可靠性的重要手段。在 Spring Cloud Alibaba 生态中,RocketMQ 与 Spring Boot 深度集成,提供了开箱即用的消息通信解决方案,极大地简化了开发流程,提升了系统的扩展性和可维护性。
2024-12-18 16:29:43
1568
7
原创 (六)Spring Cloud Alibaba 2023.x:Sentinel 流量控制与熔断限流实现
在微服务架构中,流量控制组件至关重要,它是保障系统稳定性与高可用性的核心手段之一。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。
2024-12-17 14:09:26
1277
4
原创 (五)Spring Cloud Alibaba 2023.x:Seata 分布式事务配置与实现
在微服务架构中,分布式事务是确保多个服务之间数据一致性和完整性的关键。随着微服务的拆分,传统的单体事务无法满足跨服务的事务管理需求,这时分布式事务变得尤为重要。Seata作为一款轻量级、高性能的分布式事务解决方案,通过提供全局事务管理自动回滚等功能,帮助开发者轻松处理分布式系统中的事务问题,避免了数据不一致和服务失败的风险。
2024-12-16 16:41:14
3482
27
原创 (四)Spring Cloud Alibaba 2023.x:高效构建 Gateway 网关服务
Spring cloud alibaba 体系中构建微服务,我们使用Spring Cloud Gateway 作为服务网关, Gateway是Spring 官方推出的一款基于 WebFlux 的高性能、轻量级网关框架,支持动态路由、限流熔断、过滤器链等功能,且与 Spring 生态深度集成,易于上手并具有广泛的社区支持。
2024-12-16 11:41:26
923
原创 (三)Spring Cloud Alibaba 2023.x:OpenFeign 实现高效远程调用
在现代微服务架构中,服务之间的通信至关重要。OpenFeign是一个声明式的 Web 服务客户端,它让我们可以通过简洁的注解方式实现 HTTP 请求的远程调用。
2024-12-16 11:34:24
1174
原创 (二)Spring Cloud Alibaba 2023.x:轻松集成 Nacos 注册与配置中心
本篇使用alibabanacos它可以作为微服务的注册中心和配置中心以及配置文件动态刷新,所以本篇就一起实现了。它对应了spring cloud中的注册中心 Spring Cloud NetflixEureka以及配置中心spring cloudconfig(动态刷新还要配合使用 Spring CloudBus组件)。nacos以一抵三,可以想象他的强大之处了。
2024-12-16 11:26:14
1492
1
原创 (一)Spring Cloud Alibaba 2023.x:快速构建微服务项目
在学习和使用的过程中,我发现市面上很少有适合新手的详细系列教程,特别是针对最新版本(2023.x)的完整集成与实战案例 , 这对于初学者来说,无疑增加了入门难度。这系列博客源于我的亲身实践和问题排查经验,将带你从零开始学习 Spring Cloud Alibaba,逐步掌握各组件的使用与集成,无论是服务注册与发现负载均衡分布式事务,还是限流降级消息队列配置中心等核心功能,都提供了详尽的解析和代码示例!
2024-12-16 11:11:24
1526
原创 深入理解Java 线程并发编排工具: 概述和应用场景
在 Java 的 java.util.concurrent (JUC) 包中,提供了四种核心并发工具类:CountDownLatch、CyclicBarrier、Semaphore 和 Condition。它们在多线程编程中用于协调线程的执行顺序和资源访问,确保在复杂的并发场景下各任务按照预期顺序和条件完成。通过合理使用这些工具,可以大幅提升程序的可靠性和执行效率。本文将逐一介绍这四种工具的特点和使用场景,帮助大家更好地掌握多线程编程中的关键协作机制。
2024-10-31 17:16:35
1384
5
原创 彻底搞懂 ThreadLocal:原理解析与实际应用
ThreadLcoal也是我们在面试中出现频率很高的技术点,大多时候的回答也只是表面的概念并没有深入其中为了应付面试,这里我们打破砂锅学到底,真正把他弄清楚。这里简单介绍下ThreadLcoal旨在解决多线程环境中的共享资源并发问题。它为每个线程提供一个独立的内存空间,以存储该线程的临界变量,这些变量也被称为线程的副本。由于每个线程都拥有自己的副本,因此线程之间互不干扰,从而消除了资源竞争和并发问题。
2024-10-25 22:54:16
1736
10
原创 深入解析 ThreadPoolExecutor:参数配置与源码分析
多线程是我们开发中永远绕不开的,但要合理的使用它就需要用到线程池,线程池是一种通过复用现有线程来管理和优化多线程任务的一种机制,在面试中也是必问的知识点,本篇深入理解线程池的各个属性和使用。前面学习了线程池的各个属性,在真实开发中我们该如何使用线程池呢,各个参数该怎么设置,或者直接使用JDK默认的4中创建方式?默认的方式一般都是用于特殊的场景,对于通用场景存在缺陷,所以一般需要根据项目实际情况自己设置相关参数。
2024-10-22 14:54:23
1501
10
原创 多线程优化API请求:CountDownLatch与PriorityBlockingQueue的应用
写这篇文章的缘由是因为之前在面试期间经常被提到的一个场景题,“前端向后端发起一个API请求,该API需要处理复杂的业务逻辑,涉及多个相互独立的业务模块。每个业务模块都需要执行特定的操作,且这些操作彼此之间没有依赖关系。然而,每个模块的处理都需要一定的时间,导致整体的接口响应时间较长,请给出优化接口的方案,而且结果必须通过当前接口返回”。或许大家立马想到的都是通过多线程或者通过队列异步来完成,结果延迟返回,问题的难点在于怎么能在当前接口返回最终的结果呢?在学习完RocketMq源码后我找到了最佳方案。
2024-07-27 20:59:42
2017
30
原创 深入理解 Java NIO:ByteBuffer和MappedByteBuffer的特性与使用
在深入学习 RocketMQ 这款高性能消息队列框架的源码时,发现ByteBuffer和在 RocketMQ 这样的高性能消息队列框架中扮演了关键角色,其核心部分广泛使用了这两种缓冲区,以实现高效的数据存储和异步刷盘操作。接下来就深入学习ByteBuffer 和 MappedByteBuffer 的工作原理、优势特点,以便能运用到实际业务中。
2024-07-25 17:40:47
1848
13
原创 深入解读 RocketMQ 源码(七):Broker 消费队列 ConsumeQueue 的持久化机制
说到RocketMq的持久化,我们可能第一时间想到的是Message的持久化,Message通过Broker最终持久化到磁盘的CommitLog文件,但是这仅仅只是将Message进行了存储,它最终是需要提供给Consumer消费的,通过前面的学习我们知道一个CommitLog文件可以存储1G的数据,在Message量大的情况下一个CommitLog文件是不够存储所有Message的,因此就会存在多个CommitLog文件。如果Consumer需要消费一条消息,在这庞大的数据中Broker怎样才能快速定位呢
2024-07-25 10:05:04
1196
12
原创 深入解读 RocketMQ 源码(六):延迟消息与事务消息的实现原理
在之前对Message在Producer发送Broker存储Consumer消费的源码逻辑进行了分析,了解了Message整个生命周期的动态去向。但在面试中常常会被问到一些特殊消息的实现原理,却不知道从何说起。本文不深入源码细节,仅对延迟消息事务消息消息重试等特性进行整理,以便于面试时更好地回答相关问题。
2024-07-22 16:54:44
1312
8
原创 深入解读 RocketMQ 源码(五):详解 Message 消费流程
上一篇我们对Consumer的启动流程就进行了解析,有了消费者那么消费的Message从何而来呢,这就是本篇学习的重点。本篇会讲到MessageQueue的分配、Message的拉取以及消费等,让我们一起来学习吧!
2024-07-18 22:16:23
1410
2
原创 深入解读 RocketMQ 源码(四):Consumer 启动流程全解析
前面我们讲到了生产者的启动以及发送消息到Broker中,然后再到Broker存储消息都进行了源码分析。有了Broekr这个中间“媒人”,那么光有生产者怎么能行呢,我们的消费者是不是也该出场了呢。接下来我们就对消费者的启动进行流程源码走读吧!
2024-07-13 15:18:17
1200
原创 深入解读 RocketMQ 源码(三):解析 Broker 存储 Message 流程
在面试中我们经常会听到这样的回答,生产者将message发送给broker服务,然后消费者从broker中获取消息并消费,为了保证message在broker服务中不丢失,mq会对消息数据进行持久化到磁盘中。那么message到达broker服务后是如何进行存储并持久化到磁盘中的呢?这就是本篇要学习的内容。本篇涉及到的知识面比较广,在broker存储message中出现了许多我们在日常开发中并不常见但功能强大的对象!
2024-07-10 22:42:55
791
1
原创 深入解读 RocketMQ 源码(二):详解 Message 发送流程
上一篇我们已经对RocketMq生产者启动源码进行了学习《从零开始读RocketMq源码(一)生产者启动》那么本篇我们将对生产者发送消息的源码进行学习本篇对生产者发送消息源码进行了跟踪学习,希望对大家都有所收获。
2024-07-08 16:40:47
989
原创 深入解读 RocketMQ 源码(一):Producer 启动、配置与使用详解
大概一年半前自己写了一篇《云原生》一文搞懂RocketMQ队列概述,这篇对rocketmq的相关概念和使用方法进行了整理概述,就像结尾说的都太局限于表面,简单使用还能将就,但一出现问题自己也很难排查,为了迈向技能的下一个阶段,还得是要读源码,学习大佬们的编码风格和技巧,对于使用mq以及排除问题也会更得心应手。因为最近一年自己的工作充满了波折,让自己没法静下心来学习整理,虽然现在也好不了多少,但可算能回归本心。本章篇幅比较长,将近万字,博主也是自己读源码一步一步跟踪的,所以尽量想描述得通俗易懂一些。
2024-07-06 17:40:16
1483
2
原创 【云原生】使用nginx反向代理后台多服务器
Nginx[engine x]是一个免费开源Web服务器,是一个HTTP和反向代理服务器,邮件代理服务器, 和一个通用的 TCP/UDP 代理服务器,最初由俄罗斯软件工程师Igor Sysoev撰写。nginx专注于高性能、高并发性和低内存使用率。能够在高并发下给网站提供稳定的服务。
2023-11-07 18:03:44
6346
6
原创 《温故知新》JVM虚拟机知识点聚合
1.大多数情况对象在新生代Eden分配,当Eden没有足够的空间时将发起一次Minor GC,当Edeng执行完Minor GC后还不足以为对象分配空间,则大对象直接进入老年代, 可以用参数设置大对象直接进入老年代,避免频繁的Minor GC.jdk1.8以前版本的 class和JAR包数据存储在 PermGen下面 ,PermGen 大小是固定的,而且项目之间无法共用,公有的 class,所以比较容易出现OOM异常。标记-整理算法(标记存活的对象,并向堆的一端移动,清除另一端的对象)
2023-04-24 11:32:40
221
原创 使用Canal实现mysql binlog增量订阅数据
是由公司业务改造搜索功能,使用ES搜索引擎中间件,那么我们需要将mysql中的数据同步至ES服务中,最总选择使用alibaba的canal增量订阅和解析工具。
2023-02-07 23:49:48
1690
原创 《云原生》一文搞懂RocketMQ队列概述
至此rocketMQ的基本概念大致清楚了,但是想要生产运用不仅仅止步于表面,自己更需要去深耕框架底层的逻辑实现,才能真正掌握并达到事半功倍的效果。行动起来。
2023-01-02 23:57:22
958
2
原创 《云原生》一文搞懂rabbitMQ消息队列概述
首先对rabbitMq的相关概念进行梳理,rocketMq将在另一篇文章中展现。至此rabbitMq消息队列的相关整理告一段落,在自己加深理解的同时也能帮助到小伙伴。同时对rocketMq消息队列感兴趣的,可移步到:一文搞懂rocketMQ消息队列概述(敬请期待...)
2022-12-31 14:49:16
1264
1
原创 温故知新《设计模式》创建型模式
根据博主自己学习理解的加以概述,或许看一次并不能真正运用在实际开发中,但如果知道每一种模式适用的场景和大致的实现结构,倘若有类似的业务场景岂不是一个好的方向,并更加以深入某一模式研究学习,或许那就是自己转变的一个关键点。工厂模式:该模式相对是比较常用,适用的业务场景也比较的多适用场景:现在许多系统都有积分机制,通过完成不同的任务获得不等的积分,那么用户累计获得的积分可可以用户获取不同的奖品(兑换实体商品、兑换优惠券、兑换腾讯视频月卡…),虽然都是兑换操作,但所操作的兑换东西类型完全不同。
2022-09-15 00:55:07
429
3
原创 【云原生-k8s】Linux服务器搭建单机版kubernetes服务
作为一个开发者,学无止境是我们的座右铭,前面学习了docker相关基础操作,现在来学习kubernetes的相关基础操作。测试同事说这是要抢运维的饭碗呀,其实不然,了解学习当前行业热门或者前沿的技术无可厚非,更何况我们后端开发人员,更多的技术储备在这内卷严重的行业更是必不可少的。可参考博主另一篇文章进行安装docker:安装docker环境Kubectl使用Kubernetes API与集群进行交互,相当于是k8s的命令行工具验证二进制文件 ,下载 kubectl 校验和文件:安装kubectl
2022-08-08 22:25:56
2444
6
原创 我的四周年创作纪念日
在这期间自己也收获了许多,各个领域的大佬也不吝啬他们的知识,同时也吸收了许许多多自己领域以外更甚至是认知以外的东西,包括不限于技术、他们的成长经历等等,一直在激励着自己。那时还在大学校园,记得自己是为了搞懂一个知识点,在网上查了许多的资料,才完整的把自己心中的疑惑解答清楚,为了方便以后回头查看,同时也想着帮助和自己有相同疑惑的小伙伴不必再像自己一样到处查资料,所以写下了自己的第一篇博文,渐渐的自己也加入了万千创作者中的一员。学习不是一遍又一遍的证明自己的杰出,在学习中找到自己的不足才正是我们需要的。...
2022-08-02 21:18:27
191
3
原创 【云原生】docker环境中安装mysql、redis服务
要想使用docker,最低成本只需要一台服务器,但还需要在服务器中安装docker环境,使用docker能快捷的搭建诸如mysql、redis的独立服务,服务之间相互独立,避免了多个服务需要多台服务器的弊端等。注MYSQL_ROOT_PASSWORD设置mysql登录密码默认账户名为root。注推荐使用8.0以下的版本,避免出现不可预料的错误导致连接失败。拉取mysql镜像,这里选择官方mysql5.7版本。查看mysql在docker中央仓库的各个版本。4.查看redis容器。.........
2022-07-21 00:17:20
900
原创 【云原生】springboot项目打包部署docker镜像
在java_docker中执行命令进行镜像构建(前提服务器已安装docker环境)使用工具上传jar和dockerfile到java_docker文件夹中。打包完成后,项目中会生成一个target文件夹,打开找到生成的jar包。进入远程服务器,创建一个文件夹java_docker用于存放上传的文件。如果进入服务器是/结尾,则需要切换到root用户模式~现在再来试试不依赖第三方框架,手动发布docker镜像。打开idea,找到右侧maven项,依次点击命令。sha不si我的,只会让我更强大......
2022-07-20 08:06:30
610
原创 【云原生】jenkins部署docker镜像到远程服务器
说到底其实腾讯的coding底层使用的也是jenkins进行集成部署的,只是coding进行了更多元化的实现,新增了许多其他功能。创建一个文件夹jenkins(文件位置自己任意,博主放在了/usr/local下),用于将jenkins安装文件映射到宿主机上,方便后续操作。这里使用docker安装jenkins,方便又快捷,首先服务器中已经安装docker环境。注博主已经安装了所有在已安装中,未安装的选择可选插件进行搜索安装,访问成功后,选择第一个推荐安装方式(安装时间较长,请耐心等待).........
2022-07-17 22:54:33
2849
8
原创 【云原生】coding部署docker镜像到远程服务器
题外话博主使用ssh工具是electerm,一款开源免费的工具,个人感觉比xshell好用,感兴趣的童鞋可以下载试试,下载地址https//electerm.html5beta.com/在点击构建前,特别注意docker构建命令的映射端口是否和自己项目的端口一致,如果并不一致需要手动修改jenkinsfile文件。介于时间和文章篇幅的原因,到此本博文就暂时结束了,其中存在不足和疑惑的地方,欢迎大家多多留言交流啦!docker制品库,第一次构建项目的童鞋是没有的,直接点击创建命名就可以了。.........
2022-07-14 23:16:32
2384
原创 CentOS Linux 8 使用yum安装报错:Status code: 404 for https://mirrors.ustc.edu.cn/centos/8/AppStrea
参考问题链接地址[root@d083463d1d75 /]# yum makecacheFailed to set locale, defaulting to C.UTF-8CentOS Linux 8 - AppStream 623 B/s | 150 B 00:00 Errors during downloading metadata for repository 'appstream': - Status co......
2022-06-11 23:36:49
1198
原创 springboot 整合 腾讯云RocketMq版消息队列服务
前言承接上一篇 Springboot 整合 阿里云消息队列RabbitMQ版服务,本篇实现对于 RocketMq版消息队列服务,至于为什么不继续使用阿里云服务,懂的都懂,rocketMq版消息队列在阿里云需要付费购买,而腾讯云 rocketMq版消息队列完全免费(看过上一篇自然明白),这次我想说腾讯云真香。准备工作首先的先注册腾讯云账户,并进入首页->搜索->并选择点击。2. 点击立即使用进入控制台3.注意选...
2022-05-01 19:59:34
1216
5
原创 Springboot 整合 阿里云消息队列RabbitMQ版服务
序因为公司的需要服务都是用的阿里云相关的产品,最近自己工作中也涉及到了消息队列这一块的业务,索性自己也来从零开始对接阿里云的消息队列服务。准备本着学习的前提,寻找是否免费的或者做活动的服务,能白嫖的就白嫖,果然被我找到了。进入阿里云官方首页,找到精选活动->阿里云使用中心 点击进入2.进入页面搜索消息队列3. 具体队列的相关配置步骤可参考官方文档:快速入门概述 - 消息队列RabbitMQ版 - 阿里云4. 本来Roc...
2022-04-24 22:52:00
4086
9
原创 springboot整合jwt实现登录用户认证
序在springboot项目中结合使用jwt框架对当前登录的用户进行认证,用户信息进行加密返回给前端tokenjwt相关博文了解:点击查看什么是jwt?session与jwt不同的实现方式具体实现创建一个springboot项目 引入jwt核心依赖和相关基本依 <dependency> <groupId>org.springframework.boot</groupId> &l
2021-07-15 16:14:11
604
原创 防踩坑日记(二)- 微服务项目多module模块打包找不到包问题详解
序在对微服务项目进行测试环境通过jenkins自动发布部署时,某个服务编译时出现找不到相关包问题。错误日志诱发原因因为项目中存在两个module模块服务相互依赖导致的,基础服务action依赖于引用了全局日志服务log所以在action服务的pom.xml文件中增加日志服务依赖 <dependency> <groupId>com.xf.log</groupId> <artifactId&g
2021-07-09 18:31:36
2602
6
alibaba sentinel 控制面板sentinel-dashboard-1.8.8.jar
2024-11-26
redis的Java客户端开发包Jedis
2018-09-24
docker 进入运行中容器内部的命令是什么啊?
2022-07-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人