数据同步神器!一款搞定多种数据源同步的开源中间件!
大家好,我是 Java陈序员。
在企业开发中,跨系统、跨数据库的数据同步早已成为企业日常运营的刚需。
但面对 MySQL、Oracle、Elasticsearch 等不同数据源,同步配置复杂、性能不可控、自定义转换难等问题,往往让开发者头疼不已。
今天,给大家推荐一款开源数据同步神器,一站式解决多场景数据同步难题!
关注微信公众号: ...
数据结构-堆
什么是堆
堆是一种满足以下条件的树:
堆中的每一个节点值都大于等于(或小于等于)子树中所有节点的值。或者说,任意一个节点的值都大于等于(或小于等于)所有子节点的值。
大家可以把堆(最大堆)理解为一个公司,这个公司很公平,谁能力强谁就当老大,不存在弱的人当老大,老大手底下的人一定不会比他强。这样有助于理解 ...
剑指offer-58、对称二叉树
题⽬描述
请实现⼀个函数,⽤来判断⼀棵⼆叉树是不是对称的。注意,如果⼀个⼆叉树同此⼆叉树的镜像是同样
的,定义其为对称的。
例如:下⾯这棵⼆叉树是对称的
下⾯这个就不是对称的:
示例1
输⼊:{8,6,6,5,7,7,5}
返回值:true
示例2:
输⼊:{8,6,9,5,7,7,5}
返回值:false
思路及解答
递归
递归,先判断根节点是否为 ...
springboot~传统WEB应用开启CSRF
CSRF 是什么?
CSRF(Cross-Site Request Forgery,跨站请求伪造) 是一种常见的Web安全漏洞。攻击者利用受害者已经登录的合法会话,诱使受害者执行非本意的操作。
简单比喻:
想象你在咖啡店会员卡里有钱,你每次消费只需要说“用会员卡支付”。攻击者伪装成服务员,在你面前说“用会员卡转账100元到XXX账户”。因为你已 ...
剑指offer-57、二叉树的下一个节点
题⽬描述
给定⼀个⼆叉树和其中的⼀个结点,请找出中序遍历顺序的下⼀个结点并且返回。注意,树中的结点不仅包含左右⼦结点,同时包含指向⽗结点的指针。
复杂的节点结构如下:
public class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode ...
【开源工具分享】一款开源的高效PDF合并与图片转换工具:mergePDF,一款轻量级桌面可视化工具,支持将多个PDF文件合并为单一PDF,也可将PDF转换为图片格式,并提供“单张图片”与“长图片”两种
mergePDF介绍
mergePDF是一款开源、免费、高效的PDF合并与图片转换工具
工具简介
mergePDF 是一款轻量级桌面可视化工具,支持将多个PDF文件合并为单一PDF,也可将PDF转换为图片格式,并提供“单张图片”与“长图片”两种输出模式,便于文档整理、票据归档与打印优化。
别名:发票合并可视化工具
项目维护地址:https://gite ...
jvm~分析gc老年代内存过高的原因
gc的老年代内存高居不下,导致最后full gc的发生,我们需要通过分析gc dump文件来解决biggest objects过多的问题
生成dump文件
在keycloak容器中安装轻量级工具
microdnf install -y wget
microdnf install -y procps-ng #包含ps命令
ps -aux # 找到keycloak的pid,默认是712
wget https://github.com/apangin/jattach/re ...
剑指offer-56、删除链表中重复的节点
题⽬描述
在⼀个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5
示例1
输⼊:{1,2,3,3,4,4,5}
返回值:{1,2,5}
思路及解答
hash统计
第一次遍历统计频率,第二次遍历删除重复节点
import java.util.HashMap;
public class ...
Java 哪些情况会导致内存泄漏
今天我们来一起聊一聊有哪些情况会导致内存泄漏。
什么是 内存泄漏 呢?
内存泄漏 是指对象 已经不再被程序使用,但因为某些原因 无法被垃圾回收器回收,长期占用内存,最终可能引发 OOM(OutOfMemoryError)。
接下来我们看一下常见的几类内存泄漏场景。
1、生命周期长的集合
将对象放入 静态 或 生命周期很长 ...
Spring AOP + Guava RateLimiter:我是如何用注解实现优雅限流的?
写在前面
提起 AOP(面向切面编程),大家的第一反应往往是:“哦,那个用来打印日志、管理事务、或者做权限校验的。”
其实,AOP 的能力远不止于此。在面对高并发场景下的接口自我保护时,它同样能发挥奇效。
最近在项目中遇到了一个真实场景:这是一个基于 MQ 触发的定时跑批任务。平日里风平浪静,可是一旦大促或者数 ...
回溯算法总结
概述
其实回溯算法和我们常说的 DFS 算法非常类似,本质上就是一种暴力穷举算法。回溯算法和 DFS 算法的细微差别是:回溯算法是在遍历「树枝」,DFS 算法是在遍历「节点」
抽象地说,解决一个回溯问题,实际上就是遍历一棵决策树的过程,树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍,把叶子节点上的答案都收集 ...
Java 操作 Markdown(1)--commonmark-java 使用
commonmark-java 是一个用于解析和渲染 Markdown 文本的 Java 库;本文主要介绍其基本使用,文中所使用到的软件版本:Java 17.0.5、commonmark-java 0.25.1。
1、简介
commonmark-java 可以用来解析抽象语法树(AST),访问和操作其节点,以及生成 HTML 或 Markdown。它最初是 commonmark.js 的移植版,但后来发 ...
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
背景
对于分库分表应用来说,使用org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource是一个不错的解决方案,你可以通过配置文件编写分库分表规则,从而在编码时透明地使用分表(当然,路由规则的相关字段还是要传的,之前也有文章分析过这些字段的处理过程:深入理解Mybatis分库分表执行原理 ...
使用Java Stream,将集合转换为一对一Map
在日常的开发工作中,我们经常使用到Java Stream,特别是Stream API中提供的Collectors.toList()收集器,
但有些场景下,我们需要将集合转换为Map,这时候就需要使用到Stream API中提供的另一个收集器:
Collectors.toMap,它可以将流中的元素映射为键值对,并收集到一个Map中。
1. 三种主要的重载方法
Collectors.toMap有3 ...
jvm~jvm配置与系统配置的关系
一 生产环境问题描述
keycloak是运行在jboss上面,并且部署到了容器里,在k8s上面进行编排,现在遇到gc在某个时刻垃圾回收速度变慢,CPU接近100%,容器导致存活探针失败,容器最后重启
二 问题分析与解决方案
这是一个典型的 JVM GC 问题导致的容器重启场景。让我分析一下你的配置和可能的原因:
2.1 问题分析
根据你的 de ...
动态规划
什么是动态规划
动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。
所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的,
例如:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight ...
剑指offer-55、链表中环的⼊⼝节点
题⽬描述
给⼀个链表,若其中包含环,请找出该链表的环的⼊⼝结点,否则,输出null 。
例如,输⼊{1,2},{3,4,5} 时,对应的环形链表如下图所示:
可以看到环的⼊⼝结点的结点值为3,所以返回结点值为3的结点。
给定的链表节点的结构:
public class ListNode {
int val;
ListNode next = null;
ListNode(int v ...
国产化PDF处理控件Spire.PDF教程:在Java快速解析PDF文本、表格、图像和元数据
在 Java 应用中,PDF 解析(PDF parsing in Java)通常用于从 PDF 文件中提取可用信息,而不仅仅是将其渲染出来进行展示。常见的应用场景包括文档索引、自动化报表处理、发票分析以及数据采集与导入流程等。
与 JSON、XML 等结构化数据格式不同,PDF 的设计目标是保证视觉呈现效果的一致性。文本、表格、图像等内容在 PDF ...
MyBatis踩坑实录:那些不报错但让你debug到深夜的Bug
早上刚到公司,打开电脑,写着需求听着歌。突然钉钉一响,测试发来消息:"你那个接口报错了"。打开日志一看,MyBatis又炸了。
说实话,MyBatis这玩意儿平时挺好用的,但有时候报的错真让人摸不着头脑。尤其是那种本地跑得好好的,一上线就炸的Bug,简直让人怀疑人生。今天就记录两个让我debug到深夜的坑,它们都有个共同 ...
剑指offer-54、字符流中第一个不重复的字符
题⽬描述
请实现⼀个函数⽤来找出字符流中第⼀个只出现⼀次的字符。例如,当从字符流中只读出前两个字符" go "时,第⼀个只出现⼀次的字符是" g "。当从该字符流中读出前六个字符“ google "时,第⼀个只出现⼀次的字符是" l "。
返回值描述:如果当前字符流没有存在出现⼀次的字符,返回 # 字符。
思路及解答
有序哈希表
...