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

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...