自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 开发小运维-手把手搭建Hive

本章内容主要讲解如何去安装hive,其中包括了下载jdk环境、安装hadoop环境和配置相关信息以及安装hive环境和配置相关信息,最终能够启动hive并进行数据的插入和查询。

2025-03-19 15:38:30 604

原创 开发小运维-搭建rocketmq集群

本章内容主要介绍部署一个双主双从的rocketmq集群。关键配置说明NameServer:负责服务发现和路由管理。Broker: - Master Broker 负责消息的写入和读取。 - Slave Broker 负责从 Master 同步数据,提供高可用性。RocketMQ Console:提供 Web 管理界面,方便监控和管理集群。数据持久化:通过挂载卷(volumes)将 Broker 的日志和数据存储到宿主机,确保数据持久化。

2025-03-14 10:10:14 415

原创 SpringBoot日常:集成shareingsphere-jdbc

本章内容我们来聊聊如何将shareingsphere-jdbc集成到我们自己的springboot项目中,本章采用的shareingsphere-jdbc版本是5.1.2,springboot项目是2.6.13,下面是具体的集成步骤。日志片段中可以看出,根据对应id执行分片算法,然后找到具体的数据表,然后执行插入操作。日志片段中可以看出,根据对应id执行分片算法,然后找到具体的数据表,然后执行查询。service 具体的一个逻辑,分别是获取数据和插入数据的两个方法。

2025-03-11 12:11:19 984

原创 kafka常用目录文件解析

本章内容主要介绍kafka内的一些重要目录和文件,并解释其中的存储的内容和作用。1、消息日志文件(.log)2、消费者偏移量文件(__consumer_offsets)3、偏移量索引文件(.index)4、时间索引文件( .timeindex)5、检查点引文件( .checkpoint)6、事务日志文件(.transaction.log)7、配置文件(server.properties)

2025-01-23 14:26:20 1277

原创 SpringBoot日常:集成Kafka

原本项目用 Spring Boot 的版本为2.6.X,所以这里用spring-cloud-starter-stream-kafka的版本用的是2.2.1.RELEASE,也可以用其他版本,但是注意兼容性,不然会编译运行报错。本章内容主要介绍如何在springboot项目对kafka进行整合,最终能达到的效果就是能够在项目中通过配置相关的kafka配置,就能进行消息的生产和消费。创建一个消费者监听消息类,里面对主题消息监听,这里的测试主题为testone。这里简单用postman调用接口发送一条消息。

2025-01-08 15:50:11 1578

原创 简单上手-docker搭建kafka环境(单例和集群)

本章内容介绍如何用docker的方式搭建kafka环境。由于kafka采用的注册中心为zookeeper,所以我们需要先部署zookeeper,再部署kafka。

2025-01-08 15:49:09 527

原创 SpringBoot日常:封装redission starter组件

本章内容主要介绍如何通过封装相关的redission连接配置和工具类,最终完成一个通用的redission starter。并且本文还会进行对封装的starter进行引入测试,最终实现想要的效果。

2024-10-15 14:16:28 1435 1

原创 SpringBoot日常:redission的接入使用和源码解析

Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格客户端(In-Memory Data Grid)。它不仅提供了一系列的 redis 常用数据结构命令服务,还提供了许多分布式服务,例如分布式锁、分布式对象、分布式集合、分布式远程服务、分布式调度任务服务等等。本文会介绍如何将redission集成到springboot和如何使用 Redisson 操作 Redis 中的字符串、哈希、列表、集合、有序集合,以及布隆过滤器和分布式锁等功能,并解析源码中其最大亮点的看门狗机制。

2024-10-08 18:14:29 1769

原创 算法日记-链表翻转

重温力扣常规算法,记录算法的演变,今天介绍的是链表翻转,其中包括了两个解决方案,第一个是用迭代的方式进行解决,另一种是用递归的方式,具体见文章内容

2024-10-03 14:42:25 614

原创 SpringBoot日常:链路追踪skyworking的接入

开发中遇到这样的一个常见,服务之间调用需要链路追踪,并且日志报错时能够及时预警,最重要的一点是不要写太多的侵入式代码,那么我们来捋捋常用的链路追踪组件,有Google的Dapper,阿里的鹰眼,大众点评的CAT,Twitter的Zipkin,LINE的pinpoint,国产的skywalking。从这些组件分析得出,skyworking是最符合我们的需求。本文也是介绍如何在自己的springboot项目中引入skyworking。

2024-09-29 16:33:57 1502

原创 Spring扩展点系列-MergedBeanDefinitionPostProcessor

spring容器中Bean的生命周期内所有可扩展的点的调用顺序扩展接口实现接口initializerefreshegetobjectrundestroy扩展点的作用是对合并后的BeanDefintion进行后置处理。准确的调用时机应该是在创建完 bean 实例之后,接下来会对该接口源码和举例进行说明该扩展点的使用。

2024-09-20 10:53:15 1221

原创 Spring扩展点系列-SmartInstantiationAwareBeanPostProcessor

提到SmartInstantiationAwareBeanPostProcessor,这里就要说到三级缓存的话题,spring引入一个三级缓存来解决循环依赖和AOP的问题。三级缓存的key还是为beanName,但是value是一个函数(ObjectFactory#getBean方法),在该函数中执行获取早期对象的逻辑:getEarlyBeanReference方法。 在getEarlyBeanReference方法中,Spring会调用所有SmartInstantiationAwareBeanPostPr

2024-09-14 18:27:12 1289

原创 Spring扩展点系列-BeanFactoryAware

BeanFactoryAware用于注入BeanFactory对象。我们可以访问创建该对象的BeanFactory。借助 setBeanFactory()方法,我们将IoC 容器中的BeanFactory引用分配给beanFactory 属性,之后,我们可以创建函数直接使用它。BeanNameAware的常用场景一般是用于日志记录。

2024-09-14 11:06:51 1549

原创 Spring扩展点系列-ApplicationContextAwareProcessor

今天要介绍的是ApplicationContextAwareProcessor ,ApplicationContextAwareProcessor 本身是没有扩展点的,但其内部却有7个扩展点可供实现 ,分别为这些内部扩展点触发的时机在bean实例化之后,初始化之前。

2024-09-12 11:44:05 1316

原创 Spring扩展点系列-BeanNameAware

spring容器中Bean的生命周期内所有可扩展的点的调用顺序扩展接口实现接口initializerefreshegetobjectrundestroyBeanNameAware是 Spring 框架的一个核心接口,主要的用途就是可以获取bean的名称,其触发点在Bean后处理器的BeforeInitialization方法之前,实现BeanNameAware接口的对象会在Spring容器中被自动注入Bean的名称。/*** 由希望知道其在 bean 工厂中名称的 beans 实现的接口。

2024-09-02 17:58:27 1349

原创 Spring扩展点系列-InstantiationAwareBeanPostProcessor

spring容器中Bean的生命周期内所有可扩展的点的调用顺序扩展接口实现接口initializerefreshegetobjectrundestroy从源码中我们可以获知InstantiationAwareBeanPostProcessor接口除了具有父接口中的两个方法以外还自己额外定义了三个方法。所以该接口一共定义了5个方法,这5个方法的作用分别是

2024-09-02 14:41:10 1083

原创 Spring扩展点系列-SmartInitializingSingleton

SmartInitializingSingleton是spring的扩展点之一,主要用于在Spring容器启动完成时进行扩展操作,其只有一个方法afterSingletonsInstantiated()。触发的关键点是在单例预实例化阶段结束时调用,保证所有常规单例 bean 都已创建。接口的bean的作用域必须是单例才会触发。spring容器中Bean的生命周期内所有可扩展的点的调用顺序扩展接口实现接口initializerefreshegetobjectrundestroy。

2024-08-30 14:49:39 996

原创 Spring扩展点系列-@PostConstruct

spring的Bean在创建的时候会进行初始化,而初始化过程会解析出@PostConstruct注解的方法,并反射调用该方法。@PostConstruct 的使用和特点只有一个非静态方法能使用此注解;被注解的方法不得有任何参数;被注解的方法返回值必须为void;被注解的方法不得抛出已检查异常;被注解的方法只会被执行一次;

2024-08-29 18:12:10 599

原创 Spring扩展点系列-InitializingBean

这篇文章主要介绍了Spring中InitializingBean的使用详细解析,InitializingBean是Spring提供的拓展性接口,提供了属性初始化后的处理方法,它只有一个afterPropertiesSet方法,凡是继承该接口的类,在bean的属性初始化后都会执行该方法。

2024-08-29 15:05:00 598

原创 SpringBoot日常:扩展接口之CommandLineRunner和ApplicationRunner

日常开发中我们可能经常会遇到这样的场景,像启动容器完成后需要去执行一些业务逻辑,SpringBoot给我们提供了两个接口来帮助我们实现这种需求,两个启动加载接口分别是CommandLineRunner和ApplicationRunner。本文简单介绍如何使用该扩展点实现业务。

2024-08-28 16:29:48 677

原创 SpringBoot日常:MySQL数据库与达梦适配

现有一个已经以mysql作为数据源的项目,由于需要适配一套信创环境,这里将达梦数据库选作关系型数据库,本文主要介绍如何从mysql适配到达梦。达梦官网地址。

2024-08-28 14:12:18 3079 1

原创 SpringBoot日常:集成代码覆盖率测试工具JaCoCo

Jacoco是面向Java的开源代码覆盖率工具,Jacoco以java代理模式运行,它负责在运行测试时检测字节码。Jacoco会深入研究每个指令,并显示每个测试过程中要执行的行,为了收集覆盖率数据,Jacoco使用ASM即时进行代码检测,并在此过程中从JVM Tool Interface 接收事件,最终生成代码覆盖率报告。

2024-08-27 18:09:10 3205

原创 SpringBoot日常:基于DeferredResult的异步处理

本章内容主要讲讲基于DeferredResult的异步处理,在 Servlet 容器中启用了异步请求处理功能,控制器方法就可以用 包装任何支持的控制器方法返回值DeferredResult,控制器可以从不同的线程异步产生返回值 — — 例如,响应外部事件(JMS 消息)、计划任务或其他事件。简单的讲述整个异步逻辑,就是一个请求过来,以往tomcat会从自身容器取出一个线程去执行逻辑,这个容器线程在逻辑没处理完之前,一直处于阻塞状态,其他请求进来也无

2024-08-26 18:18:10 1219

原创 开发小运维-jar包服务shell启动脚本

现在大多数企业都基本会构建docker镜像去部署java应用服务,但是有些特殊场景可能需要我们手动去启动某个java服务包,本章主要介绍如何编写一个脚本去启动java服务

2024-08-21 11:28:24 398

原创 开发小运维-常用Linux资源监控命令

日常开发中,我们的应用都是在linux环境上运行,环境在运行中可能会出现各种状况,比如日志没有定时清理导致磁盘爆满线程池嵌套使用导致线程等待无限制的数据计算导致cpu飙高数据加载过多进入内存导致内存爆满当出现上述各种情况等,我们需要通过linux监控命令对环境状态进行问题排查,本文主要总结几个日常使用频繁的监控命令。

2024-08-20 11:21:39 917 1

原创 RabbitMQ小笔记:控制台rabbitmqctl命令

日常我们在操作rabbitmq,经常都会使用其自带的图形管理界面。但是有时候可能会出现一些比较尴尬的情况,比如交付给运维的部署清单描述、又或者是有些特殊的环境不允许开放指定的端口等等,这个时候我们就不得不使用命令行的操作命令查看相关的信息。因此,一些基础的操作命令我们还是需要掌握,下列主要罗列一些日常用到的rabbitmqctl命令,rabbitmq-diagnostics本文暂不写录

2024-07-22 15:15:12 554 1

原创 SpringBoot日常:常用数据类型比较

在Java中,我们一般分为基本类型的比较和引用类型的比较,下面按照这两个大分类梳理一下日常用到的类型比较。

2024-07-17 15:21:48 749

原创 SpringBoot日常:编码规范之import *

日常开发中,我们在编码过程中会经常忽略import 包的问题,我们会使用import语句中的通配符*来引入整个包中的所有类。尽管这样做能够简化代码编写和阅读,但是过度使用import *也会带来一些坏处,本文将探讨这些问题并给出相应的解决方案。

2024-07-10 19:51:42 558

原创 SpringBoot日常:@Scheduled实现服务启动时执行一次

说到定时任务,我们应该会想起@Scheduled,Quartz以及XXL-JOB,但是有的单体服务或者小项目,为了方便快捷,可能会直接使用@Scheduled去实现异步任务。因此,从而延伸出本文的主题需求。注:启动类记得自己加上@EnableScheduling,定时任务 才会执行,当然这个不影响本文的逻辑测试。当项目中使用@Scheduled,如何在项目启动的时候让指定的异步任务提前执行一次?该类主要在启动时手动调用指定的任务方法。服务启动后,查看打印信息。

2024-07-08 09:58:50 3349

原创 SpringBoot日常:封装rabbitmq starter组件

本章内容主要介绍编写一个rabbitmq starter,能够通过配置文件进行配置交换机、队列以及绑定关系等等。项目引用该组件后能够自动初始化交换机和队列,并进行简单通信。如若有其他需求,可自行扩展,例如消息消费的确认等

2024-07-08 09:23:09 1357

原创 SpringBoot日常:整合属于自己的代码生成器

代码生成器,顾名思义就是生成代码,我们经常做开发的公司一般都有属于自己的代码生成器,在开发需求的时候可以帮助我们快速生成代码,比如service文件、controller文件、mapper文件等等,甚至前端的也可以生成,但本章内容主要举例后端java内容。

2024-07-02 17:16:06 1006

原创 SpringBoot日常:@Scheduled开关控制

日常比较小的项目常常使用springboot中的@scheduled注解来完成定时任务。本地和线上dev环境用的是同一套数据源,我们希望所有的定时任务都由线上的去执行,本地不执行,避免数据混乱。那r如何通过配置文件的方式来决定这个定时器的开关状态?我们可以添加一个SchedulingConfig配置文件,利用注解@ConditionalOnProperty来实现根据配置文件参数是否开启定时任务,当配置为true为开启,false则为关闭。

2024-05-22 09:41:01 1362

原创 Rabbitmq报unauthorized异常

处理rabbitmq的unauthorized 异常。Caused by: java.lang.SecurityException: Attempt to deserialize unauthorized class java.util.HashMap;

2024-05-14 19:00:25 2170

原创 雪花算法时钟回拨解决方案

网络中的计算机或其他设备保持准确的时间非常重要,时间的准确影响到计算机系统的大部分基于时间判定的逻辑的正确运行,比如:TLS证书的有效性校验,个人密码的过期,crontab任务的执行等等,分布式系统和一些分布式协议也必须基于准确的时间。计算机的时间可从硬件时钟获取,硬件时钟是存储在 CMOS 里的时钟,关机后该时钟依然运行,主板的电池为它供电。硬件时钟依照主板石英晶体振荡器频率工作,在启动系统后,系统从该时钟读取时间信息,之后独立运行。

2024-02-01 11:09:36 1984

原创 灰度概念说明

灰度发布(又名金丝雀发布),是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。

2024-02-01 10:24:55 1994

原创 SpringBoot日常:校验使用之@Validated和@Valid

Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。其中对于字段的特定验证注解比如@NotNull等。在检验Controller的入参是否符合规范时,使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同。

2023-11-27 00:48:43 1165

原创 SpringBoot日常:@Accessors的应用

今天来介绍一下lombok中的一个注解@Accessors的使用,它是面向getter和setter的更流畅的API,能够在编码上提升我们的编写速度。核心以来自然是lombok。这里再顺便提一下编译时解析的两种机制Annotation Processing Tool : 注解处理器;(过时) Pluggable AnnotationProcessing API : JSR269 插入式注解处理器;

2023-11-26 22:44:30 634

原创 SpringBoot日常:模板方法模式应用

对于很多程序员,平时写代码为了方便,可能一股脑就按面向过程那样一下把业务逻辑编写下来,少有会去额外思考设计模式或者算法。这种情况其实不利于我们的编码维护,在本文,将介绍设计模式中的观察者模式,通过本文的介绍将帮助你快速理解和应用。模板模式是一种行为设计模式,模板模式的核心思想是将共同的算法流程封装在一个抽象类中,具体实现则在子类中实现。通俗点说,就是完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;

2023-11-24 18:40:34 770

原创 SpringBoot日常:适配器模式应用

对于很多程序员,平时写代码为了方便,可能一股脑就按面向过程那样一下把业务逻辑编写下来,少有会去额外思考设计模式或者算法。这种情况其实不利于我们的编码维护,在本文,将介绍设计模式中的观察者模式,通过本文的介绍将帮助你快速理解和应用。适配器是一种结构型设计模式,它将一个类的接口转换成另一个客户端所期望的接口.适配器模式让那些不兼容的类可以一起工作,它通过不兼容接口转换成可兼容接口来实现这一点.

2023-11-23 18:50:04 671

原创 SpringBoot日常:装饰器模式应用

对于很多程序员,平时写代码为了方便,可能一股脑就按面向过程那样一下把业务逻辑编写下来,少有会去额外思考设计模式或者算法。这种情况其实不利于我们的编码维护,在本文,将介绍设计模式中的观察者模式,通过本文的介绍将帮助你快速理解和应用。观察者模式是一种结构型设计模式,是在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。

2023-11-23 17:04:07 562

Hudi-Presto 在 News Break 数据平台的尝试-关立胜

202303架构师峰会PPT,Hudi_Presto 在 News Break 数据平台的尝试--关立胜.pdf

2023-08-01

大数据技术之flink(java)

Flink 是 Apache 基金会旗下的一个开源大数据处理框架。目前,Flink 已经成为各大公司 大数据实时处理的发力重点,特别是国内以阿里为代表的一众互联网大厂都在全力投入,为 Flink 社区贡献了大量源码。如今 Flink 已被很多人认为是大数据实时处理的方向和未来,许多 公司也都在招聘和储备掌握 Flink 技术的人才。 那 Flink 到底是什么,又有什么样的优点,能够让大家对它如此青睐呢? 本章我们就来做一个详细的了解。首先讲述 Flink 的源起和设计理念,接着介绍 Flink 如 今的应用领域;进而通过梳理数据处理架构的发展演变,解答为什么要用 Flink 的疑问。进而 梳理 Flink 的特点,并同另一个流行的大数据处理框架 Spark 进行比较,从而更深刻地理解 Flink 的底层架构和优势所在。

2023-07-21

空空如也

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

TA关注的人

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