随笔分类 -  SpringBoot

摘要:之前我一直使用阿里的 EasyExcel 实现 Excel 文件的导入和导出,但是它现在处于维护模式了,不会再有新特性加入了。 FastExcel 是 EasyExcel 的延续,后来由 Apache 进行孵化,名字更改为 Apache Fesod。 项目名称 fesod 是 “fast easy 阅读全文
posted @ 2026-04-15 22:56 乔京飞
摘要:我们使用上一篇博客搭建的 EMQX 开源版服务,编写一个 SpringBoot 示例程序通过代码演示消息的发送和接收操作。 EMQX 收发消息编写代码非常简单,不需要提前创建主题,直接编码向主题发送消息或订阅接收消息即可。在本篇博客最后会提供源代码的下载。 客户端 SDK 官网地址:https:// 阅读全文
posted @ 2026-02-16 19:59 乔京飞
摘要:Neo4j 图数据库主要用于节点关系的存储和查询,比传统关系型数据库的查询效率高,能够快速找到节点之间的最短路径,灵活强很强。 Neo4j 分为企业版和社区版,一般来说社区版免费,已经足够用了。有些功能只有企业版才支持,比如集群搭建。 市面上相似的图数据库产品,还有 Nebula Graph 等,功 阅读全文
posted @ 2025-10-18 23:32 乔京飞
摘要:Netty 是一个广泛使用的 Java 网络编程框架,它提供了一个易于使用的 API 客户端和服务器,具有并发高、传输快、封装好等优点。 Netty的传输快其实也是依赖了 NIO 的零拷贝特性,当他需要接收数据的时候,他会在堆内存之外开辟一块内存,数据就直接从 IO 读到了那块内存中去,在 nett 阅读全文
posted @ 2025-04-14 22:21 乔京飞
摘要:以前很多网站为了实现服务器与浏览器的实时交互,一般采用前端 Ajax 定期轮询或者长连接技术请求后端接口,这种传统的模式带来很明显的缺点,浏览器与服务器之间采用 http 通信效率不高,前后端交互实时性不好,其实本质上还是前端对服务端的单向请求交互,服务端无法主动给前端发送消息。 WebSocket 阅读全文
posted @ 2025-04-13 10:30 乔京飞
摘要:Kafka 由 Scala 和 Java 编写,最初由 LinkedIn 开发,后来成为 Apache 顶级项目,是一种高吞吐量的分布式发布/订阅消息系统。 Kafka 不仅仅是一个消息队列,还支持实时数据处理,其高吞吐、可扩展和持久化特性使其在大数据领域广泛应用。 本篇博客不详细介绍 Kafka, 阅读全文
posted @ 2025-01-30 13:18 乔京飞
摘要:目前很多项目都采用国产数据库,虽然国产数据库很多,但是我接触过的项目中使用较多的主要是达梦数据库。 本篇博客简单介绍达梦8数据库单机版部署以及 SpringBoot 对其进行增删改查操作,方便后续项目需要时快速搞定。 我的 CentOS7 虚拟机 ip 地址是 192.168.136.128,已经安 阅读全文
posted @ 2024-12-15 23:22 乔京飞
摘要:随着以 minio 为代表的分布式系统的广泛应用,使用 FTP 的场景就越来越少了,目前仍然在一些简单的应用场景中使用。 本篇博客使用 fauria/vsftpd 的 docker 镜像,介绍 FTP 服务器搭建的两种方式:匿名访问方式 和 使用账号密码访问方式。然后使用 SpringBoot 程序 阅读全文
posted @ 2024-11-27 00:06 乔京飞
摘要:我们使用 Java 开发项目时偶尔会需要使用到 Xml 文件的解析, 一般情况下都会使用 DOM4j、SAX、JDOM 等方案,但这些方案比较代码编写较为繁琐。我们经常使用的 Json 进行数据传输或存储,如果能够将 Xml 快速转换为 Json,将会大大减轻我们后续开发和维护的工作量。 本篇博客简 阅读全文
posted @ 2024-10-23 21:41 乔京飞
摘要:ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP 为联机分析处理,专注于统计查询;OLTP 为联机事务处理,专注于增删改。 ClickHous 阅读全文
posted @ 2024-09-22 20:27 乔京飞
摘要:使用 CompletableFuture 可以大大简化处理多线程之间的异步调用关系,如串行依赖、并行、聚合等等。 CompletableFuture 是对 Future 接口的扩展和增强,进行了丰富的接口方法扩展,完美的弥补了 Future 的不足。 本篇博客通过代码的方式,展示 Completab 阅读全文
posted @ 2024-08-18 19:22 乔京飞
摘要:NC 文件全称是 Network Common Data Format,也叫做 NetCDF 文件,即网络通用数据格式,这种文件格式一开始是专门用于气象学数据的存储,现在已经发展演变为很多数据采集软件的文件生成格式了。 由于最近项目中解析 NC 文件比较频繁,所以就进行一下简单的总结。本篇博客介绍如 阅读全文
posted @ 2024-07-30 11:08 乔京飞
摘要:之前的博客介绍过 zookeeper 的分布式锁,只不过是基于 Spring 的实现(技术太老了),现在肯定使用 SpringBoot 进行实现,因此有必要再写一篇博客。 有关 zookeeper 的部署,以及分布式锁细节,这里不再赘述,可以访问我之前编写的博客。 zookeeper 的单机和集群部 阅读全文
posted @ 2024-06-10 21:25 乔京飞
摘要:分布式锁可以采用数据库、zookeeper、redis 三种方式实现。 采用数据库实现方式,主要采用表字段的唯一索引特性。数据库是非常昂贵的资源,非常不推荐,最致命就是性能,不要去增加不必要的负担。 采用 zookeeper 的实现方式,主要使用其为客户端创建临时有序节点的特性,在我之前的博客有介绍 阅读全文
posted @ 2024-05-11 19:39 乔京飞
摘要:规则引擎技术的主要思想是将应用程序中的业务规则分离出来,业务规则不再以程序代码的形式驻留在系统中,而是存储在独立的文件或者数据库中,完全独立于程序。业务人员可以像管理数据一样对业务规则进行管理。业务规则在程序运行时被加载到规则引擎中供应用系统调用。 drools 是当前比较流行的规则引擎技术,由 J 阅读全文
posted @ 2024-04-09 23:10 乔京飞
摘要:J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。 第一级缓存使用内存,同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine(推荐)。 第二级缓存使用 Redis(推荐)/Memcached 。 由于大量的缓存读取会导致 L2 的网络 阅读全文
posted @ 2024-03-23 22:08 乔京飞
摘要:在项目开发中,对于一些访问量较大的页面,可以提前基于数据生成静态页面,当数据有变化时再重新生成并更新静态页面,这样可以减轻数据库压力,提高网站的并发访问效率。常用的技术就是使用 FreeMarker 模板引擎,它是一款高性能的,基于模板和数据, 生成输出文本的通用工具。本篇博客基于 FreeMark 阅读全文
posted @ 2024-01-22 22:18 乔京飞
摘要:目前绝大多数项目还是采用 mysql 作为数据存储,对于用户访问量较高的网站来说,mysql 读写性能有限,我们通常会把 mysql 中的数据实时同步到 Redis、mongodb、elastic search 等中间件中,应对高并发访问场景,减轻 mysql 压力,防止数据库宕机。在项目开发中,为 阅读全文
posted @ 2024-01-20 22:59 乔京飞
摘要:使用 JVM 进程缓存的优点就是没有网络开销,性能速度最快;缺点就是容量有限,无法共享;比较适合性能要求高,缓存数据量小的场景。如果我们自己实现 JVM 进程缓存的话,会使用到 Map 数据类型,相关的过期移除策略以及容量控制都得自己实现,比较麻烦。Caffeine 是一个基于 Java8 开发的提 阅读全文
posted @ 2023-12-31 15:23 乔京飞
摘要:实际工作中生成二维码,通过手机进行扫码查看的需求比较多。Hutool 工具包中有很多实用的工具类,其中就包含二维码生成和识别的 QrCodeUtil 工具类,默认生成白底黑色的二维码,也可以自定义二维码的样式,比如设置背景色、前景色、设置边距以及在二维码中心显示自定义的 logo 等等,使用起来非常 阅读全文
posted @ 2023-11-16 21:27 乔京飞