Apache Commons Lang3 和 Commons Net 详解
目录
1. Apache Commons Lang3
1.1 什么是 Apache Commons Lang3?
1.2 主要功能
1.3 示例代码
2. Commons Net
2.1 什么是 Commons Net?
2.2 主要功能
2.3 示例代码
3. 总结
3.1 Apache Commons Lang3
3.2 Commons Net
3.3 使用建议
4. 参考资料
前言
在 Java 开发中,Apache Commons 项目提供了许多实用的工具库,帮助开发者更高效地完成日常开发任务。本文将深入解析 Apache Commons Lang3 和 Commons Net 这两个库的作用、技术细节以及实际应用,并通过示例代码演示它们的使用方法。
1. Apache Commons Lang3
1.1 什么是 Apache Commons Lang3?
Apache Commons Lang3 是 Apache Commons 项目中的一个工具库,提供了许多与 Java 核心类库相关的扩展功能,例如字符串处理、日期操作、对象工具等。它是 Java 开发中常用的工具库之一。
1.2 主要功能
- 字符串处理:提供了丰富的字符串操作方法,如
StringUtils
。 - 对象工具:提供了对象操作的工具类,如
ObjectUtils
。 - 日期操作:提供了日期格式化和解析的工具类,如
DateUtils
。 - 随机数生成:提供了随机数生成工具类,如
RandomUtils
。 - 异常处理:提供了异常处理工具类,如
ExceptionUtils
。
1.3 示例代码
以下是一些常用的 StringUtils
和 DateUtils
示例:
字符串处理:
import org.apache.commons.lang3.StringUtils;public class StringUtilsExample {public static void main(String[] args) {// 判断字符串是否为空boolean isEmpty = StringUtils.isEmpty(""); // trueboolean isBlank = StringUtils.isBlank(" "); // true// 字符串截取String substring = StringUtils.substring("Hello World", 6); // "World"// 字符串拼接String join = StringUtils.join(new String[]{"Hello", "World"}, ", "); // "Hello, World"System.out.println("isEmpty: " + isEmpty);System.out.println("isBlank: " + isBlank);System.out.println("substring: " + substring);System.out.println("join: " + join);}
}
日期操作:
import org.apache.commons.lang3.time.DateUtils;import java.text.ParseException;
import java.util.Date;public class DateUtilsExample {public static void main(String[] args) throws ParseException {// 解析日期Date date = DateUtils.parseDate("2023-10-15", "yyyy-MM-dd");// 添加天数Date newDate = DateUtils.addDays(date, 10);// 判断是否为同一天boolean isSameDay = DateUtils.isSameDay(date, newDate); // falseSystem.out.println("date: " + date);System.out.println("newDate: " + newDate);System.out.println("isSameDay: " + isSameDay);}
}
NumberUtils
import org.apache.commons.lang3.math.NumberUtils;public class NumberUtilsExample {public static void main(String[] args) {// 判断字符串是否为数字System.out.println(NumberUtils.isCreatable("123")); // trueSystem.out.println(NumberUtils.isCreatable("12.3")); // trueSystem.out.println(NumberUtils.isCreatable("abc")); // false// 获取最大值int max = NumberUtils.max(1, 2, 3);System.out.println("Max: " + max); // 3// 转换字符串为数字int number = NumberUtils.toInt("123", 0);System.out.println("Number: " + number); // 123}
}
ObjectUtils
import org.apache.commons.lang3.ObjectUtils;public class ObjectUtilsExample {public static void main(String[] args) {// 获取非空对象String result = ObjectUtils.firstNonNull(null, "default", "fallback");System.out.println(result); // "default"// 比较对象int comparison = ObjectUtils.compare("a", "b");System.out.println(comparison); // -1// 克隆对象MyObject original = new MyObject("data");MyObject clone = ObjectUtils.clone(original);System.out.println(clone.getData()); // "data"}
}class MyObject implements Cloneable {private String data;public MyObject(String data) {this.data = data;}public String getData() {return data;}@Overrideprotected MyObject clone() {return new MyObject(this.data);}
}
2. Commons Net
2.1 什么是 Commons Net?
Commons Net 是 Apache Commons 项目中的一个网络工具库,提供了许多与网络协议相关的实现,例如 FTP、SMTP、POP3 等。它简化了网络编程的复杂性,帮助开发者快速实现网络功能。
2.2 主要功能
- FTP 客户端:提供了 FTP 客户端的实现,支持文件上传、下载等操作。
- SMTP 客户端:提供了 SMTP 客户端的实现,支持邮件发送。
- POP3 客户端:提供了 POP3 客户端的实现,支持邮件接收。
- Telnet 客户端:提供了 Telnet 客户端的实现,支持远程登录。
2.3 示例代码
以下是使用 FTPClient
进行文件上传和下载的示例:
FTP 文件上传:
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class FtpUploadExample {public static void main(String[] args) {FTPClient ftpClient = new FTPClient();try {// 连接 FTP 服务器ftpClient.connect("ftp.example.com", 21);ftpClient.login("username", "password");// 设置文件类型为二进制ftpClient.setFileType(FTP.BINARY_FILE_TYPE);// 上传文件File file = new File("local-file.txt");FileInputStream inputStream = new FileInputStream(file);boolean success = ftpClient.storeFile("remote-file.txt", inputStream);inputStream.close();if (success) {System.out.println("文件上传成功!");}} catch (IOException e) {e.printStackTrace();} finally {try {ftpClient.logout();ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}}
}
FTP 文件下载:
import org.apache.commons.net.ftp.FTPClient;import java.io.FileOutputStream;
import java.io.IOException;public class FtpDownloadExample {public static void main(String[] args) {FTPClient ftpClient = new FTPClient();try {// 连接 FTP 服务器ftpClient.connect("ftp.example.com", 21);ftpClient.login("username", "password");// 下载文件FileOutputStream outputStream = new FileOutputStream("local-file.txt");boolean success = ftpClient.retrieveFile("remote-file.txt", outputStream);outputStream.close();if (success) {System.out.println("文件下载成功!");}} catch (IOException e) {e.printStackTrace();} finally {try {ftpClient.logout();ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}}
}
3. 总结
3.1 Apache Commons Lang3
- 优点:提供了丰富的工具类,简化了 Java 开发中的常见操作。
- 适用场景:字符串处理、日期操作、对象工具等。
3.2 Commons Net
- 优点:提供了多种网络协议的实现,简化了网络编程的复杂性。
- 适用场景:FTP 文件传输、邮件发送与接收、远程登录等。
3.3 使用建议
- Apache Commons Lang3:适合在需要处理字符串、日期、对象等场景中使用。
- Commons Net:适合在需要实现网络功能(如 FTP、SMTP、POP3 等)的场景中使用。
4. 参考资料
- Apache Commons Lang3 官方文档
- Commons Net 官方文档
- Apache Commons 项目主页
相关文章:

Apache Commons Lang3 和 Commons Net 详解
目录 1. Apache Commons Lang3 1.1 什么是 Apache Commons Lang3? 1.2 主要功能 1.3 示例代码 2. Commons Net 2.1 什么是 Commons Net? 2.2 主要功能 2.3 示例代码 3. 总结 3.1 Apache Commons Lang3 3.2 Commons Net 3.3 使用建议 4. 参考…...
从0开始的操作系统手搓教程33:挂载我们的文件系统
目录 代码实现 添加到初始化上 上电看现象 挂载分区可能是一些朋友不理解的——实际上挂载就是将我们的文件系统封装好了的设备(硬盘啊,SD卡啊,U盘啊等等),挂到我们的默认分区路径下。这样我们就能访问到了ÿ…...

【Linux】36.简单的TCP网络程序
文章目录 1. TCP socket API 详解1.1 socket():打开一个网络通讯端口1.2 bind():绑定一个固定的网络地址和端口号1.3 listen():声明sockfd处于监听状态1.4 accept():接受连接1.5 connect():连接服务器 2. 实现一个TCP网络服务器2.1 Log.hpp - "多级日志系统"2.2 Daem…...

时序分析
1、基本概念介绍 1.1、 建立时间 T(su) 建立时间:setup time,它是指有效的边沿信号到来之前,输入端口数据保持稳定的时间。 1.1.1、 建立时间要求: 建立时间要求指的是 想要寄存器如期的工作,在有效时…...

doris:ClickHouse
Doris JDBC Catalog 支持通过标准 JDBC 接口连接 ClickHouse 数据库。本文档介绍如何配置 ClickHouse 数据库连接。 使用须知 要连接到 ClickHouse 数据库,您需要 ClickHouse 23.x 或更高版本 (低于此版本未经充分测试)。 ClickHouse 数据库的 JDBC 驱动程序&a…...

NLP常见任务专题介绍(1)-关系抽取(Relation Extraction, RE)任务训练模板
📌 关系抽取(Relation Extraction, RE)任务训练示例 本示例展示如何训练一个关系抽取模型,以识别两个实体之间的关系。 1️⃣ 任务描述 目标:从文本中提取两个实体之间的语义关系,例如 “人物 - 组织”、“药物 - 疾病”、“公司 - 创始人” 等。输入:句子 + 标注的实…...

大模型Transformer的MOE架构介绍及方案整理
前言:DeepSeek模型最近引起了NLP领域的极大关注,也让大家进一步对MOE(混合专家网络)架构提起了信心,借此机会整理下MOE的简单知识和对应的大模型。本文的思路是MOE的起源介绍、原理解释、再到现有MOE大模型的整理。 一…...

零基础掌握Linux SCP命令:5分钟实现高效文件传输,小白必看!
引言 “为什么我传个文件到服务器要折腾半小时?” 如果你也曾在Linux系统中为文件传输抓狂,今天这篇保姆级教程就是你的救星!SCP命令——一个基于SSH协议的高效传输工具,只需5分钟,彻底告别FTP客户端和繁琐操作&#…...
分类评价指标
基础概念解释 TP、TN、FP、FN 这里T是True,F是False,P为Positive,N为Negative TP:被模型正确地预测为正样本(原本为正样本,预测为正样本) TN:被模型正确地预测为负样本࿰…...

Python项目-基于Django的在线教育平台开发
1. 项目概述 在线教育平台已成为现代教育的重要组成部分,特别是在后疫情时代,远程学习的需求显著增加。本文将详细介绍如何使用Python的Django框架开发一个功能完善的在线教育平台,包括系统设计、核心功能实现以及部署上线等关键环节。 本项…...

子数组问题——动态规划
个人主页:敲上瘾-CSDN博客 动态规划 基础dp:基础dp——动态规划-CSDN博客多状态dp:多状态dp——动态规划-CSDN博客 目录 一、解题技巧 二、最大子数组和 三、乘积最大子数组 四、最长湍流子数组 五、单词拆分 一、解题技巧 区分子数组&…...

linux设置pem免密登录和密码登录
其实现在chatgpt 上面很多东西问题都可以找到比较好答案了,最近换了一个服务器,记录一下。 如果设置root用户,就直接切换到cd .ssh目录下生成ssh key即可,不需要创建用户创建用户的ssh文件夹了 比如说我要让danny这个用户可以用p…...

什么是Flask
Flask是Python中一个简单、灵活和易用的Web框架,适合初学者使用。它提供了丰富的功能和扩展性,可以帮助开发者快速构建功能完善的Web应用程序。 以下是Python Flask框架的一些特点和功能: Flask 是一个使用 Python 编写的轻量级 WSGI 微 Web…...

Spark(8)配置Hadoop集群环境-使用脚本命令实现集群文件同步
一.hadoop的运行模式 二.scp命令————基本使用 三.scp命令———拓展使用 四.rsync远程同步 五.xsync脚本集群之间的同步 一.hadoop的运行模式 hadoop一共有如下三种运行方式: 1. 本地运行。数据存储在linux本地,测试偶尔用一下。我们上一节课使用…...

【cocos creator】热更新
一、介绍 试了官方的热更新功能,总结一下 主要用于安卓包热更新 参考: Cocos Creator 2.2.2 热更新简易教程 基于cocos creator2.4.x的热更笔记 二、使用软件 1、cocos creator v2.4.10 2、creator热更新插件:热更新manifest生成工具&…...

黑金风格人像静物户外旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色教程 针对人像、静物以及户外旅拍照片,运用 Lightroom 软件进行风格化调色工作。旨在通过软件中的多种工具,如基本参数调整、HSL(色相、饱和度、明亮度)调整、曲线工具等改变照片原本的色彩、明度、对比度等属性,将…...

部署vue+django项目(初版)
1.准备 vscode 插件Remote SSH,连接远程,打开远程中home文件夹。 镜像和容器的一些常用命令 docker images docker ps 查看所有正在运行的容器 docker ps -a docker rmi -f tk-django-app 删除镜像 docker rm xxx 删除容器 docker start xxxx …...

Redis7系列:设置开机自启
前面的文章讲了Redis和Redis Stack的安装,随着服务器的重启,导致Redis 客户端无法连接。原来的是Redis没有配置开机自启。此文记录一下如何配置开机自启。 1、修改配置文件 前面的Redis和Redis Stack的安装的文章中已经讲了redis.config的配置…...

HarmonyOS学习第18天:多媒体功能全解析
一、开篇引入 在当今数字化时代,多媒体已经深度融入我们的日常生活。无论是在工作中通过视频会议进行沟通协作,还是在学习时借助在线课程的音频讲解加深理解,亦或是在休闲时光用手机播放音乐放松身心、观看视频打发时间,多媒体功…...

在rocklinux里面批量部署安装rocklinx9
部署三台Rockylinux9服务器 实验要求 1. 自动安装ubuntu server20以上版本 2. 自动部署三台Rockylinux9服务器,最小化安装,安装基础包,并设定国内源,设静态IP 实验步骤 安装软件 # yum源必须有epel源 # dnf install -y epel-re…...

Manus:成为AI Agent领域的标杆
一、引言 官网:Manus 随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独…...

【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法
读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 1、新建Java项目2、单击项目名,并连续按两次shift键3、在搜索栏搜索"添加框架支持"4、勾选Web应用程序5、最终界面6、添加Tomcat 1、新建Java项目 2、单击项目名,并连续按两次…...

WinForm模态与非模态窗体
1、模态窗体 1)定义: 模态窗体是指当窗体显示时,用户必须先关闭该窗体,才能继续与应用程序的其他部分进行交互。 2)特点: 窗体以模态方式显示时,会阻塞主窗体的操作。用户必须处理完模态窗体上…...

静态时序分析:SDC约束命令set_ideal_network详解
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 set_ideal_network命令可以将当前设计中的一组端口或引脚标记为理想网络源(设置端口或引脚对象的ideal_network_source属性为true)&#…...

【学习方法】技术开发者的提问智慧:如何高效获得解答?
技术开发者的提问智慧:如何高效获得解答? 在技术开发过程中,每个人都会遇到无法解决的问题。此时,我们通常会向团队、社区或论坛求助。然而,为什么有些人的问题能迅速得到解答,而有些人的问题却石沉大海&a…...

C++:入门详解(关于C与C++基本差别)
目录 一.C的第一个程序 二.命名空间(namespace) 1.命名空间的定义与使用: (1)命名空间里可以定义变量,函数,结构体等多种类型 (2)命名空间调用(…...

服务器上的nginx因漏洞扫描需要升级
前言 最近客户联系说nginx存在安全漏洞 F5 Nginx 安全漏洞(CVE-2024-7347) F5Nginx是美国F5公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。F5 Nginx存在安全漏洞,该漏洞源于可能允许攻击者使用特制的…...

1688商品列表商品详情API接口全面解析
1688作为中国领先的B2B电子商务平台,汇聚了海量的商品资源,为商家和采购商提供了丰富的交易机会。为了更方便地获取和利用这些商品信息,1688平台提供了商品列表API接口,允许第三方开发者通过编程方式获取平台上的商品列表数据。本…...

【爬虫】开篇词
一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术? 在这个信息爆炸的时代,如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究,还是人工智能训练,网络爬虫&…...

如何在SpringBoot中灵活使用异步事件?
在现代的应用开发中,事件驱动的架构越来越受到欢迎。当我们在使用SpringBoot时,了解如何实现异步事件变得尤为重要。通过事件机制,我们能够在系统中实现松耦合的组件,让不同模块之间能够有效沟通,而无需直接依赖。本文…...