当前位置: 首页 > news >正文

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 Lang3Commons 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 示例代码

以下是一些常用的 StringUtilsDateUtils 示例:

字符串处理:

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盘啊等等),挂到我们的默认分区路径下。这样我们就能访问到了&#xff…...

【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:被模型正确地预测为负样本&#xff0…...

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的配置&#xf…...

HarmonyOS学习第18天:多媒体功能全解析

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

在rocklinux里面批量部署安装rocklinx9

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

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...