自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何开发一个高质量的公共组件

优秀公共组件是软件开发过程中的重要资产,它们能够提高开发效率、保证软件质量和降低维护成本。为了实现这些目标,开发者应关注组件的可复用性、可扩展性、可维护性、性能优化和兼容性等关键特性,并在实践中遵循设计原则、编写文档、测试覆盖、版本管理和社区支持等最佳实践。通过不断地完善和优化公共组件,我们可以为软件开发项目提供稳定、高效和可持续的基础支持。、编写文档、测试覆盖、版本管理和社区支持等最佳实践。通过不断地完善和优化公共组件,我们可以为软件开发项目提供稳定、高效和可持续的基础支持。

2024-03-03 14:58:41 1323

原创 分布式事务理论及Seata实践

事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。事务的四个特征(ACID)原子性(Atomicity): 指一组操作要么全部执行,要么全部不执行。在事务执行过程中,如果出错则会滚到事务开始前的状态,所有操作像一个原子,不可拆分。一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏。

2024-01-07 16:51:31 901

原创 RocketMQMessageListener使用错误问题分析与排查

The consumer group[XXX] has been created before, specify another name please.问题分析与解决方案

2023-09-10 09:46:53 2263

原创 Flink CDC数据同步

许多应用更新数据库,然后在数据库中的更改被提交后,做一些额外的工作:更新搜索索引,更新缓存,发送通知,运行业务逻辑,等等。如果缓存在一个独立的进程中运行(例如Redis,Memcache),那么简单的缓存失效逻辑可以放在独立的进程或服务中,从而简化主应用的逻辑。总的来说,FlinkCDC 的原理就是通过解析 MySQL 中的 binlog,抓取到最新的增量数据,并将其转换为 Flink 支持的数据格式,然后将增量数据同步到 Flink 或者其他的计算引擎中进行处理。

2023-08-27 11:07:30 1272

原创 云原生网关Apache APISIX

Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均 衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功 能。可以使用 Apache APISIX 处理传统的南北向流量,也可以处理服务间的东 西向流量。同时,它也支持作为 K8s Ingress Controller 来使用。

2023-06-06 16:05:09 3425

原创 skywalking agent使用kafka数据传输

Skywalking agent高并发场景下信息上传

2023-05-15 17:21:51 2496 1

原创 Kubernetes知识扫盲

Kubernetes知识点扫盲

2023-01-03 16:04:45 921

原创 从ASM看jacoco运行原理

jacoco代码覆盖度运行原理解析与源码分析

2022-12-04 15:54:22 1436 7

原创 开发效率提升(arthas)

开发效率提升,arthas在各种环境下的使用方式。

2022-10-17 14:27:50 1264

原创 热部署在项目中的应用

开发效率提升

2022-10-12 16:27:48 1723

原创 Spring Data Common 之 Repository

Spring Data Common 顶层设计之 Repository

2022-07-26 22:11:33 378

原创 Spring Data JPA语法详解

Spring Data JPA使用语法详解

2022-07-26 22:10:42 2314

原创 初识Spring Data JPA

认识Spring Data JPA

2022-07-26 22:09:46 301

原创 RocketMQ源码之Consumer消息拉取

RocketMQ消费源码解析

2022-07-14 20:34:24 806

原创 RocketMQ事务消息机制

RocketMQ事务消息源码解读

2022-06-27 12:43:26 1311

原创 某电商商品搜索系统架构设计

基于ElasticSearch+Redis搭建高可用电商搜索系统

2022-06-24 20:43:02 1793

原创 RocketMQ之MappedFileQueue详解

RocketMQ之MappedFileQueue文件详解

2022-06-23 22:24:06 607

原创 RocketMQ源码之Producer启动

RocketMQ 生产者启动

2022-06-15 19:26:29 316

原创 RocketMQ自动创建topic原理-TBW102

RocketMQ自动创建Topic源码解析

2022-06-09 21:07:52 2746

原创 RocketMQ源码之消息存储ReputMessageService

RocketMQ消息再投递

2022-06-06 23:00:30 675

原创 RocketMQ之NameServer启动流程

RocketMQ nameServer源码分析

2022-05-31 22:29:18 1046

原创 IDEA安装plugin之后打开闪退

一、背景今天在IDEA 中安装了一个插件,重启之后IDEA打开之后就闪退,因为IDEA无法打开,也没法卸载插件。二、解决方案查看启动日志,注意这里的路径是Local。从日志可以看到这两款插件冲突导致IDEA启动失败。卸载插件,只需要在改目录下删除对应的插件即可。老版本:C:\Users\用户名\.IntelliJIdea20xx.X\config\plugins2020以上的版本:C:\Users\Administrator\AppData\Roaming\JetBrains\

2022-05-07 22:28:29 1246

原创 好用的内网穿透工具ngrok

什么是内网穿透工具内网穿透,即NAT(Network Address Translator)穿透,是 指计算机在内网(局域网)内使用私有IP地址,在连接外网(互联网)时使用全局IP地址的技术 。. 该技术被普遍使用在有多台主机但只通过一个公有IP地址访问的私有网络中。. 举个例子:比如我在实验室配置了一个服务器 Server A,当我在实验室的时候,就可以通过自己的笔记本使用SSH连接【 因为我和服务器处于一个局域网 】,当我回宿舍以后,就没有办法直接使用SSH连接了【 因为我和服务器不在一个局域网 】,

2022-04-30 22:19:29 358

原创 Zookeeper源码启动

下载源码导入Idea我们看一下zookeeper的工程结构,bin目录放的是启动脚本,conf下面放的是配置文件。拷贝zoo_sample.cfg文件并命名为zoo.cfg,这里存放的是启动的一些参数。Zookeeper源码启动设置配置参数有两种方式:一种是在VM参数中指定zoo.cfg文件的位置,另一种是直接在VM参数中指定需要的参数。在后面的源码分析中可以看到。这里我们修改一个参数dataDir,这是Zookeeper运行的数据目录,方便我们后期观察。zkServer.shzkServer.s

2022-03-24 09:58:31 2935

原创 spring-boot-devtools热部署插件源码解读

阅读SpringBoot代码先看spring.factoeies。RestartScopeInitializer@Overridepublic void initialize(ConfigurableApplicationContext applicationContext) {applicationContext.getBeanFactory().registerScope(“restart”, new RestartScope());}/** * {@link Scope} that st

2022-01-07 22:53:33 707

原创 AOP代理对象创建及执行流程

代理对象创建流程在使用Spring事务是需要使用@EnableAspectJAutoProxy注解开启。我们可以看到EnableAspectJAutoProxy上有一个Import,并且指向AspectJAutoProxyRegistrar,那么我们就以此作为切入点。public void registerBeanDefinitions( AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {

2021-12-07 15:55:57 740

原创 Spring源码构建:Received status code 401 from server: Unauthorized

最近在看Spring源码的时候突然发现有些jar拉不下来,报了Received status code 401 from server: Unauthorized的错,401代表没有权限。Could not HEAD 'https://repo.spring.io/libs-release/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.2.71/kotlin-compiler-embeddable-1.2.71.pom'. Received stat

2021-11-30 21:22:49 12062

原创 四种限流算法概述

什么是限流在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。限流可以认为服务降级的一种,限流通过限制请求的流量以达到保护系统的目的。固定窗口限流算法内部维护一个计数器,将单位时间段当做一个窗口,计数器记录这个窗口接收请求的次数。如果单位时间请求没有到达阈值,则计数器加1,正常请求;如果到达阈值,则访问拒绝;在开启下一个单位时间窗口时,计数器清0。固定窗口限流实现较为简单,但是也存在一个问题,就是它无法解决临界问题。假设我们的限流时10次/秒,在0.8s-1s之前请求5次,在1s-1.2s

2021-11-29 11:16:49 311

原创 缓存一致性方案比较

在高并发的系统中,使用缓存来提升查询性能是十分必要的。在关系型数据库中(如MySQL)对于高并发处理能力并不是很强,而缓存由于在内存中处理,并不需要磁盘IO,所以非常适合高并发处理。缓存虽然能显著提升查询效率,但是更新缓存和更新数据库不可能在一个事务中进行,所以就很难保证缓存的一致性。定时刷新使用定时刷新策略,写入数据库和写入缓存是独立进行的,写入数据库后,需要使用定时任务去刷新缓存。这种方式会导致在较长的一段时间内,缓存与数据库数据不一致,而且不换数据是否更新,都会定时去刷新缓存,效率低下。此方案

2021-08-22 08:36:50 381 2

原创 InnoDB线程模型

一、IO Thread在InnoDB中使用了大量的AIO(Async IO)来做读写处理,这样可以极大提高数据库的性能。在InnoDB1.0版本之前有4个IO Thread,分别是write、read、insert buffer和log thread,后来版本将read thread和write thread分别增大到了4个,一共10 个了。read thread:负责读取操作,将数据从磁盘加载到缓存page页。4个write thread:负责写操作,将缓存脏页刷到新磁盘。4个log thre.

2021-08-07 15:05:16 172

原创 MySQL存储引擎

存储引擎在MySQL的体系架构中位于第三层,负责MySQL中的数据存储和提取,是与文件打交道的子系统,它是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫做存储引擎。使用 show engines命令,就可以查看当前数据库支持的引擎信息。在5.5版本之前默认采取MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。InnoDB:支持事务,具有提交、回滚和崩溃恢复能力事务安全。MyISAM:不支持事务和外键,访问速度快。Memory:利用内存创建表,访问速度非常快,

2021-07-14 07:54:36 291

原创 MySQL体系架构图

MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。一、网络连接器客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。二、服务层(MySQL Server)服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。连接池.

2021-07-12 08:41:26 3653 3

原创 Docker四种网络模式

实现原理Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容

2021-07-04 10:34:09 339 2

原创 自定义Maven插件及Debug

自定义Maven插件maven本质上就是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。用户可以通过两种方式运行mav

2021-04-22 11:47:18 1716 1

原创 Dubbo负载均衡策略

Dubbo负载均衡概述​ Dubbo负载均衡是具有SPI实现的,默认为随机负载均衡,还有一致性Hash、最少使用、轮询。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IYv1Bfil-1615789627718)(/Users/ssk/Library/Application%20Support/typora-user-images/image-20201217221957258.png)]​ 抽象父类AbstractLoadBalance有两个权

2021-03-15 14:27:38 232

原创 MyBatis反射工具

ObjectFactoryObjectFactory是MyBatis创建对象的基类,主要通过create创建对象,可以通过有参或者无参构造方法创建对象,此时的对象属性并没有初始化。/** * 通过无参构造方法创建对象 */ <T> T create(Class<T> type); /** * 通过有参构造创建对象 */ <T> T create(Class<T> type, List<Class<?>

2021-03-11 19:07:02 288

原创 Redis数据结构底层设计

简单动态字符串Redis没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单的动态字符串(simple dynamic string,SDS)的抽象类型。SDS定义(sds.h/sdshd):struct sdshdr{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串

2021-03-07 21:00:55 993 7

原创 SpringBatch批量处理框架

Spring Batch简介spring batch是spring提供的一个数据处理框架。企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作。 这些业务运营包括:无需用户交互即可最有效地处理大量信息的自动化,复杂处理。 这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整)。集成从内部和外部系统接收的信息,这些信息通常需要以事务方式格式化,验证和处理到记录系统中。 批处理用于每天为企业处理数十亿的

2021-03-03 20:45:45 1067

原创 Dubbo异步转同步

Dubbo是一款开源RPC框架,底层使用Netty作为默认的数据传输方式,那么请求处理理论上是异步的,但是我们在使用Dubbo时,是同步拿到结果的,这是因为Dubbo框架帮我们做了异步转同步的操作。​ 构造一个DefaultFuture,并将DefaultFuture放在Map中,key为请求是生成的唯一id。private static final Map<Long, Channel> CHANNELS = new ConcurrentHashMap<>();..

2021-02-01 18:54:54 1365 1

原创 RocketMQ源码运行

源码下载导入IDEA启动namesrv创建配置文件夹/Users/***/Documents/tool/rocketMq/namesrv/conf将配置文件拷贝到创建的文件夹下面在启动namesrv的时候添加环境变量启动NamesrvStartup,看到控制台输入下面内容则启动成功。启动生产者启动消费者...

2020-12-16 14:20:43 477

空空如也

空空如也

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

TA关注的人

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