- 博客(206)
- 收藏
- 关注
原创 Debezium介绍
Debezium是一个开源的分布式平台,用于捕获数据库的变更事件(CDC,Change Data Capture)。它能够实时捕获数据库中的行级更改,并将这些更改作为事件流发送到消息中间件(如 Apache Kafka)。Debezium 构建于 Apache Kafka Connect 之上,提供了一组 Kafka Connect 兼容的连接器,每个连接器都针对特定的数据库管理系统(DBMS)。高可用。
2025-03-22 10:40:42
1064
原创 Kafka集成Debezium监听postgresql变更
下载postgres的插件:https://debezium.io/documentation/reference/2.7/install.html。使用命令启动 Kafka Connect 服务(单机kafka)pgsql修改配置文件:postgresql.conf。进入kafka配置目录配置连接器(单机kafka)2.7版本支持postgresql12数据库。
2025-03-22 09:16:15
500
原创 centos7安装单机kafka
kafka-console-consumer.sh 使用 consumer 控制台订阅 topic。kafka-console-producer.sh 使用 producer 控制台发布 event。下载安装包并进行解压:kafka_2.12-2.2.1.tgz。验证kafka是否启动成功。
2025-03-22 09:08:21
433
原创 centos7搭建postgresql12主从
主从搭建192.168.159.101 node1 主库(读写)192.168.159.102 node2 备库(只读)
2025-03-22 09:02:31
254
原创 Springboot集成Debezium监听postgresql变更
2.application.properties配置。1.创建springboot项目引入pom。
2025-03-22 08:53:22
420
原创 docker搭建elk
2.ES配置elasticsearch.yml3.logstash配置logstash.ymllogstash.conf:4.kibana配置kibana.yml:
2025-03-12 19:57:48
502
原创 JDK9新特性
a ==> 1b ==> 2$7 ==> 3...> }| 已创建 方法 sum(int,int)$9 ==> 3...> int a;...> int b;...> }...> }...> }| 已创建 类 Calc$12 ==> 3。
2025-02-05 21:09:34
1109
原创 CompleteFuture详解
如上图所示,这里描绘的是一个业务接口的流程,其中包括CF1/CF2/CF3/CF4/CF5共5个步骤,并描绘了这些步骤之间的依赖关系,每个步骤可以是一次RPC调 用、一次数据库操作或者是一次本地方法调用等,在使用CompletableFuture进行 异步化编程时,图中的每个步骤都会产生一个CompletableFuture对象,最终结果 也会用一个CompletableFuture来进行表示。传递时使用指定线程池中的线程,当不传递时,会使用ForkJoinPool中的共用线程池 CommonPool。
2024-12-30 19:37:38
1147
1
原创 三种SPI机制的了解及使用
实现DBApi接口,并且在resources下创建META-INF/services/全限定接口名称文件,这里如上图所示,然后文件中写实现类的全限定类名。SPI的本质就是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类型。注意模块之间需要对应引用依赖,比如:db-api需要被其他三个模块引入,main-project要引入两个实现模块依赖。方式实现SPI机制,可以在不修改源码的前提下,提供Spring框架的扩展性。Spring SPI沿用了Java SPI的设计思想,采用。
2024-10-27 11:18:06
871
原创 SpringBoot自定义starter
resources -> META_INF -> spring -> org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件。resources -> META_INF -> spring.factories # SpringBoot 2.7以前写法,2.7版本废除,3版本后终止使用。访问结果:http://localhost:8081/test/starter。2.7~3.0之间,两种方式共存。
2024-10-26 11:11:47
387
1
原创 Jenkins的快速入门
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。
2024-03-22 00:06:42
1926
原创 mysql死锁排查
查看等待锁的事务:SELECT * FROM information_schema.INNODB_LOCK_WAITS。查看正在锁的事务:SELECT * FROM information_schema.INNODB_LOCKS。查看正在运行的事务:SELECT * FROM information_schema.INNODB_TRX。查看事务:SELECT * FROM information_schema.INNODB_TRX。查看线程列表:show processlist;表中数据:student。
2024-01-04 22:29:21
1573
原创 IO零拷贝
Linux 2.1 开始提供了 sendFile 函数,其基本原理是:数据根本不经过用户态,直接从 Kernel Buffer 进入到 Socket Buffer,并且由于和用户态完全无关,这就避免了一次上下文切换。因此零拷贝通常是站在操作系统的角度看,即整个过程中,内核缓冲区之间是没有重复数据的。由此可见,复制的操作太频繁,共有 2 次 DMA 拷贝、2 次 CPU 拷贝、4 次上下文切换。紧接着发生第二次数据拷贝,即从内核缓冲区拷贝到用户缓冲区,同时发生一次内核态到用户态的上下文切换。
2023-12-13 23:19:42
979
原创 Linux的五种IO模型
不管使用何种方式,好处都是应用进程不会阻塞,可以继续执行,只要等待信号通知数据准备好被处理了、数据准备好被读取了。操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buffer 中,再将 buffer 中的数据拷贝到用户进程的地址空间,用户进程获取到数据后返回给客户端。和信号驱动 I/O 模型的区别是前者内核告诉我们何时可以开始一个 I/O 操作,而后者内核会告诉我们一个 I/O 操作何时完成。众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。
2023-12-13 23:08:50
1462
1
原创 基于ReentrantLock详解AQS源码
7.上述流程可以说是公平锁的抢占方式,每次都是队列头节点的下一个节点抢到锁,严格排队枪锁,如果是非公平锁,则在唤醒head的下一个节点进行抢锁时,其他线程也可以在此期间抢锁,如果被其他线程抢到锁,则head的下一个节点还是会重新挂起,然后新的抢占锁的线程会重新关联head节点。6.线程三释放锁,把AQS中的state设置为0,清空持有锁线程,队列中的节点还是存在一个头节点,这个节点的内容都是空的,只要头节点创建出来了就一直存在,持有锁的线程会关联头节点。
2023-12-12 23:49:40
1451
原创 HashMap JDK1.8源码详解
首先将高16位无符号右移16位与低十六位做异或运算。如果不这样做,而是直接做&运算那么高十六位所代表的部分特征就可能被丢失 将高十六位无符号右移之后与低十六位做异或运算使得高十六位的特征与低十六位的特征进行了混合得到的新的数值中就高位与低位的信息都被保留了 ,而在这里采用异或运算而不采用& ,| 运算的原因是 异或运算能更好的保留各部分的特征,如果采用&运算计算出来的值会向1靠拢,采用|运算计算出来的值会向0靠拢。int类型的数值是4个字节的,右移16位异或可以同时保留高16位于低16位的特征。
2023-09-10 22:31:14
225
原创 ConcurrentHashMap jdk1.8源码详解
原理:cas + synchronized + 数组 + 链表 + 红黑树。用来标识旧hash表扩容后占位的临时节点,即当前桶扩容迁移成功的标识。
2023-09-07 20:38:38
686
原创 shiro快速入门
基本上涉及到用户参与的系统都需要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两部分,简称认证授权,对于需要访问控制的资源用户首先经过身份认证,认证过后用户具有该资源的访问权限即可访问。身份认证,就是判断一个用户是否为合法用户的处理过程,最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。
2023-08-02 23:19:11
271
原创 RabbitMQ快速入门
……导入依赖:发送消息模块:接收消息模块:发送消息:接收消息:Fanout类型的交换机:发送消息:接收消息:Topic类型的交换机:发送消息:接收消息:总结:Topic类型的交换机也是消息一对多的一种交换机类型,它和fanout都能实现一个消息同时发送给多个队列;fanout更适用于使用在一个功能不同的进程来获取数据,例如,手机App中的消息推送,一个App可能会还有很多个用户来进行安装,然后他们都会启动一个随机的队列来接收者自己的数据;Topic更适用于不同功能模块来接收同一个消息,
2023-08-02 23:10:49
2402
1
原创 Hibernate Validator
Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 null@AssertTrue 被注释的元素必须为 true@AssertFalse 被注释的元素必须为 false@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
2023-08-02 22:46:59
680
原创 docker快速入门
Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。image文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
2023-08-02 22:34:36
1006
原创 字符串匹配KMP
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一,它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到...
2023-04-22 16:01:00
190
1
原创 redis的分片的数据倾斜问题
https://blog.youkuaiyun.com/weixin_43909795/article/details/125482881
2022-12-18 19:27:17
203
原创 给定两个二叉树的节点node1和node2,找到他们的最低公共祖先节点
【代码】给定两个二叉树的节点node1和node2,找到他们的最低公共祖先节点。
2022-12-11 20:52:29
451
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人