4个非常实用的Java项目,快用起来

大家好,老读者都知道了,开源项目我已经推荐过很多了,常规项目想必兄弟们都已经看腻了,今天给大伙推荐几个非常实用的项目,如果对你有帮助的话还请点赞转发支持一下

分别是:

  • Caffeine :性能超强的本地缓存解决方案。

  • JADX : 一款强大的反编译工具。

  • Debezium :一个用于追踪数据更改(change data capture ,CDC)的开源项目。你可以通过 Debezium 轻松实现数据同步,将一个数据源中的数据同步到其他数据源,比如将 MySQL 中的数据同步到 ES 中。

  • JNDI-Injection-Exploit :一个开箱即用的 JNDI 注入工具。

Caffeine:本地缓存之王

Caffeine 是一款强大的本地缓存解决方案,性能非常 。

有多牛呢?看下 Caffeine 和其他可以提供本地缓存的工具的性能对比吧!

Caffeine 和 Guava 一样,通过 API 的方式即可使用缓存。

 
LoadingCache<Key, Graph> graphs = Caffeine.newBuilder() .maximumSize(10_000) .expireAfterWrite(Duration.ofMinutes(5)) .refreshAfterWrite(Duration.ofMinutes(1)) .build(key -> createExpensiveGraph(key));

不过,相比于 Guava 提供的缓存功能来说 Caffeine 在各个方面都要更加优秀。像 Redisson、Cassandra、Hbase、Neo4j、Druid 等知名开源项目都用到了 Caffeine。

JADX:强大的反编译工具

jadx 是一款功能强大的反编译工具,使用起来简单方便,不光提供了命令行程序,还提供了 GUI 程序。一般情况下,我们直接使用 GUI 程序就可以了。

jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件

就比如说我们需要反编译一个 jar 包查看其源码的话,直接将 jar 包拖入到 jadx 中就可以了。效果如下:

再比如说我们想看看某个 apk 的源码,我们拿到 apk 之后直接拖入进 jadx 中就可以了。效果如下:

除此之外,这个工具具备下面这些特性:

  • 自带强大的搜索功能,支持多种匹配模式;

  • 支持查看类,变量或者方法使用情况;

  • 支持在源码中添加注释

  • 支持反混淆

  • ......

这个工具使用起来还挺简单的,立个 flag :下周出一篇 JADX 使用介绍的文章。

Debezium:追踪数据更改

Debezium 是一个用于追踪数据更改(change data capture ,CDC)的开源项目,基于 Java 语言,利用 Kafka 和 Kafka Connect 实现持久性、可靠性和容错性,工作原理类似大家比较熟悉的 Canal、Maxwell,通过数据库日志来获取变更。

CDC(Change Data Capture)是一种软件设计模式,用于确定和跟踪已变更的数据,以便可以对更改后的数据采取措施,

Debezium 已经支持 MySQL、PostgreSQL、Oracle、Cassandra、MongoDB、SQL Server 等数据库。

你可以使用 Debezium 来监控你的数据库,每一个提交的行级别(row-level)的更改都会被捕获。因此,你可以通过 Debezium 轻松实现数据同步,将一个数据源中的数据同步到其他数据源,比如将 MySQL 中的数据同步到 ES 中。

下图是基于 Debezium 追踪数据更改常见的一种架构:

相对于 ETL 数据同步方案来说,Debezium 这种方式更加灵活。

Debezium 的官方文档中还介绍了很多其他有价值的使用场景,感兴趣的小伙伴可以自己去看看。

​相关文章推荐:

  • 使用 Apache Hudi 和 Debezium 构建健壮的 CDC 管道

  • Debezium-Flink-Hudi:实时流式 CDC

JNDI-Injection-Exploit:JNDI 注入工具

JNDI-Injection-Exploit 这个项目是一个开箱即用的 JNDI 注入工具,用于生成 JNDI 链接并启动后端相关服务,可用于 Fastjson、Jackson 等相关漏洞的验证。

JNDI 是什么呢? 简单来说,JNDI (Java Naming and Directory Interface) 是一组应用程序接口,类似于一个索引中心,它允许客户端通过 jndiName 来定位用户、网络、机器、对象和服务等各种资源。

//指定需要查找name的名称 String jndiName= "jndiName"; //初始化默认环境 Context context = new InitialContext(); //查找该name对应的资源部 context.lookup(jndiName);

当 jndiName 变量可控时,如果获取到的资源是远程 class 文件的话,就可能会触发执行恶意代码,这也就是我们常说的 JNDI 注入。

JNDI 这家伙带来了很多重大的漏洞,就比如前段时间技术圈刷屏的 Log4j2 重大漏洞 就是这玩意引起的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值