当前位置: 首页 > 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…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘&#xf…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...