强大无比的zhazhapan

3 篇文章 0 订阅
2 篇文章 0 订阅

API文档

使用Maven

<dependency>
    <groupId>com.zhazhapan</groupId>
    <artifactId>util</artifactId>
    <version>1.1.2</version>
</dependency>

或手动导入: 点我下载

GitHub地址 Gitee地址

功能

1. JSON快速解析,基于fastjson

使用

// 1. 导包
import com.zhazhapan.config.JsonParser;

String json = "{key1:test,key2:{child1:node1,child2:node2},key3:[{fast:json1},{fast:json2}],key4:[arr1,arr2]}";

// 2. 新建一个解析对象

// 2.1 使用json字符串
JsonParser jsonParser = new JsonParser(json, false);
// 2.2 或使用文件路径(可能抛出IO异常)
JsonParser jsonParser = new JsonParser("/Users/pantao/Desktop/test.json");
// 2.3 或使用URL对象
JsonParser jsonParser = new JsonParser(new URL("http://somehost.com/sometext.json"));

// 3. 愉快的使用
String str = jsonParser.getString("key3[1].fast");
String str1 = jsonParser.getString("key4[1]");
JSONObject jsonObject = jsonParser.getObject("key3[0]");
JSONArray jsonArray = jsonParser.getArray("key4");
// 或使用JSONPath路径语法
Object object = jsonParser.eval("$.key2.child1");

// 4. 修改指定路径值
jsonParser.set("key1", "test_set_value");

// 5. 删除指定路径值
jsonParser.remove("key1");

// 6. 指定路径是否包含某个值
boolean b = jsonParser.containsValue("key1", "test");

// 7. 返回并格式化JSON
jsonParser.toString();

备注:fastjson jsonpath路径语法

2. 简单计算器

使用

// 1. 导包
import com.zhazhapan.util.Calculator;

// 2. 设置(如果没有设置将使用默认的精度)计算精度(即保存多少位小数)
Calculator.setPrecision(5);

// 3. 计算(有可能抛出计算式不合法的异常)
String formula = "(23-9*7)/22+2(35-45+56/(12-9+4*(22/10-2)))";
BigDecimal bd = Calculator.calculate(formula);
double res = db.doubleValue();

3. 网络文件下载

使用

// 1. 导包
import com.zhazhapan.util.Downloader;

// 2. 下载
String storagePath = "/Users/pantao/Desktop";
Downloader.download(storagePath, "http://oq3iwfipo.bkt.clouddn.com/tools/zhazhapan/util.jar");

4. 简单的读写文件

使用

// 1. 导包
import com.zhazhapan.util.FileExecutor;

// 2. 写文件(可能抛出IO异常)
String write = "write something";
FileExecutor.saveFile("/Users/pantao/Desktop/test.txt", write, false);

// 3. 读文件(可能抛出IO异常)
String read = FileExecutor.readFile("/Users/pantao/Desktop/test.txt");

// 4. 批量复制文件夹
FileExecutor.copyDirectories(new String[] { "/Users/pantao/Desktop/test" }, "/Users/pantao/Desktop/new");

// 5. 批量复制文件
FileExecutor.copyFiles(new String[] { "/Users/pantao/Desktop/qiniu.jar" }, "/Users/pantao/Desktop/test");

// 6. 批量重命名文件
String[] files = new String[] { "/Users/pantao/Desktop/test/Dump20171220_3.sql", "/Users/pantao/Desktop/test/Dump20171220_4.sql" };
FileExecutor.renameFiles(files, new String[] { "test_rename_1", "test_rename_2.txt" });

// 7. 拆分文件,通过拆分点拆分
FileExecutor.splitFile("/Users/pantao/Desktop/test/Dump20171220.sql", new long[] { 1000, 2000, 3000 });

// 8. 合并文件
String[] files = new String[] { "/Users/pantao/Desktop/test/Dump20171220_1.sql", "/Users/pantao/Desktop/test/Dump20171220_2.sql" };
FileExecutor.mergeFiles(files, "/Users/pantao/Desktop/test/test_merge.sql", "");

// 9. 创建文件(如果存在则删除)
FileExecutor.createNewFile("test.txt");

// 10. 删除文件或文件夹(递归删除)
FileExecutor.deleteFile("/Users/pantao/Desktop/test/test_merge.sql");

// 11. 扫描文件夹下面所有的文件(返回一个文件列表)
FileExecutor.scanFolder("/Users/Pantao/Desktop");

// 12. 创建文件,如果文件不存在的话
FileExecutor.createFile("test.txt");

5. 简单的线程池

使用

// 1. 导包
import com.zhazhapan.util.ThreadPool;

// 2. 初始化线程池
// 2.1 方式一
ThreadPool.setCorePoolSize(1);
ThreadPool.setMaximumPoolSize(5);
ThreadPool.setKeepAliveTime(100);
ThreadPool.setTimeUnit(TimeUnit.MILLISECONDS);
ThreadPool.init();
// 2.2 方式二
ThreadPool.init(1, 5, 100, TimeUnit.MILLISECONDS);

// 3. 使用线程池
ThreadPool.executor.submit(() -> {
	//do somthing here
});

// 4. 或者新建线程池
ThreadPool threadPool = new ThreadPool(1, 5, 100, TimeUnit.MILLISECONDS);

// 4.1 使用新建的线程池
threadPool.newExecutor.submit(() -> {
	//do somthing here
});

6. 简单的加密与解密

// 提供一些Java常用的加密(包括md5,base64,sha等加密)
import com.zhazhapan.util.decryption.JavaEncrypt;

// 如何使用
String code = JavaEncrypt.md5("this is a md5 encrypt method");

String sha256 = JavaEncrypt.sha256("123456");

// 主要是base64解密
import com.zhazhapan.util.decryption.JavaDecrypt;

// 异或加密和ascii加密
import com.zhazhapan.util.decryption.SimpleEncryt;

// 如何使用
String code = SimpleEncryt.ascii("simple encrypt", "key");

// 异或解密和ascii解密
import com.zhazhapan.util.decryption.SimpleDecrypt;

7. 弹窗(使用JavaFX,JDK最低要求1.8)

使用

// 1. 导入
import com.zhazhapan.util.dialog.Alerts;

// 2. 弹窗并接收返回的信息
Optional<ButtonType> result = Alerts.showConfirmation("title", "some information");
if (result.get() == ButtonType.OK) {
	// do something here
} else {
	// do something here
}

// 3. 其他类型的弹窗基本上跟上面的操作一样

// 4. 弹出输入框
// 4.1 导包
import com.zhazhapan.util.dialog.Dialogs;
// 4.2 弹出并接收返回的内容(如果用户点击取消将返回null)
String msg = Dialogs.showInputDialog("title", "header", "content", "default value");

8. com.zhazhapan.util.Checker

所有参数均不用考虑为null的情况,Checker会处理

方法名简要说明
isSorted检查数组是否是升序或降序
isDate是否是日期格式
replace替换字符串
isEmail是否是邮箱格式
isDecimal是否是数字(包括小数)格式
isNumber是否是整数
isNull对象是否为null
isNotNull对象是否不为null
isNullOrEmpty字符串是否为null或空
isNotEmpty是否不为null且不为空
checkNull检测字符串是否为null,如果是,返回空字符串,否则返回原字符串
isEmpty列表或集合是否为空
isHyperLink是否是超链接(URL)
checkDate检测日期是否为null,如果是,返回当前日期,否则返回原日期
isWindows判断当前系统是否是Windows
isMacOS判断当前系统是否是Mac
isLinux判断当前系统是否是Linux
isLimited判断字符串的长度是否在某个范围
isImage判断文件是否是图片

9. com.zhazhapan.util.Formatter

方法名简要说明
stringToInt将字符串转换为Integer
formatSize格式化文件大小为KB、MB、GB、TB格式
sizeToLong将格式化后的文件大小转换为单位为B(字节)的long型
stringToDouble字符串转换为Double
stringToLong字符串转换为Long
customFormatDecimal将Double转换为自定义格式的字符串
formatDecimal将Double转换为默认格式(#0.00)的字符串
timeStampToString将时间戳转换为“yyyy-MM-dd HH:mm:ss”格式的字符串
formatJson将json文本转换为标准格式的json
dateToString将日期转换为“yyyy-MM-dd”格式的字符串
datetimeToString将日期转换为“yyyy-MM-dd HH:mm:ss”格式的字符串
getFileName从路径(包括网络路径)中获取文件名
stringToFloat将字符串转换为Float
stringToInteger同stringToInt
stringToDate将字符串转换为“yyyy-MM-dd”格式的日期
stringToLongTime将字符串转换为“HH:mm:ss”格式的日期
stringToShortTime将字符串转换为“HH:mm”格式的日期
stringToCustomDateTime将字符串转换为自定义格式的日期
stringToDatetime将字符串转换为“yyyy-MM-dd HH:mm:ss”格式的日期
toLocalDate将日期转换为“yyyy年MM月dd日”格式的字符串
longTimeToString将日期转换为“HH:mm:ss”格式的字符串
shortTimeToString将日期转换为“HH:mm”格式的字符串
datetimeToCustomString将日期转换为自定义格式的字符串
numberFormat将数字格式化为指定长度的字符串(不足用0补齐)
localDateToDate将java.time.LocalDate转换为java.util.Date
dateToLocalDate将java.util.Date转换为java.time.LocalDate
listToJson将List转换为JSON
mapToJson将Map转换为JSON
getFileSuffix获取文件后缀名

10. com.zhazhapan.util.Utils

方法名简要说明
extractDouble从字符串中提取数字并转换为Double
extractFloat从字符串中提取数字并转换为Float
extractShort从字符串中提取数字并转换为Short
extractLong从字符串中提取数字并转换为Long
extractInt从字符串中提取数字并转换为Integer
extractDigit从字符串中提取出数字,包括最后一个“.”号
maxLengthString返回多个字符串中长度最长的字符串
copyToClipboard复制字符串至系统剪贴板
openLink使用系统默认的浏览器打开超链接
openFile使用系统默认的方式打开文件
getMaxValue从多个数字中获取最大值
getCurrentOS()获取当前系统名称

11. com.zhazhapan.util.ArrayUtils

方法名简要说明
heapSort堆排序
mergeSort归并排序
shellSort希尔排序
selectSort选择排序
quickSort快速排序
insertSort插入排序
bubbleSort冒泡排序
unique数组去重
concatArrays合并多个数组
mergeSortedArrays将两个已经排好序(同序)的数组合并一个有序数组

12. com.zhazhapan.util.DateUtils

方法名简要说明
getWeekAsChinese获取某个日期的星期,返回一个中文字符串
getWeek获取某个日期的星期,返回一个整型
addHour某个日期后推多少个小时
addMinute某个日期后推多少个分钟
addSecond某个日期后推多少个秒
addYear某个日期后推多少个年
addMonth某个日期后推多少个月
addDay某个日期后推多少个天
getCurrentMonth()获取当前月份
getDay获取日期
getMonth获取月份
getYear获取年份

13. 发送邮件

// 导包
import com.zhazhapan.util.MailSender;

// 如何使用,下面的key指的是开启了POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,生成的授权码
MailSender.config("smtp.qq.com", "zhazhapan", "735817834@qq.com", "key");
MailSender.sendMail("tao@zhazhapan.com", "title", "this is a test email");

14. com.zhazhapan.util.RandomUtils

方法名简要说明
getRandomDouble获取一个随机的双精度类型
getRandomInteger获取一个随机的整型
getRandomIntegerIgnoreRange获取一个可以忽略某个区间的随机整型
getRandomColor获取一个随机的颜色
getRandomEmail获取一个随机邮箱
getRandomString获取一个随机字符串
getRandomStringWithoutSymbol获取一个只有数字和字母的随机字符串
getRandomStringOnlyLetter获取一个只有字母的随机字符串
getRandomStringOnlyLowerCase获取一个只有小写字母的随机字符串
getRandomStringOnlyUpperCase获取一个只有大写字母的随机字符串
getRandomTextIgnoreRange获取一个可以忽略某个范围字符的随机字符串
getRandomText获取一个字符串

15. JSON与Bean互相转换

Bean转JSON

// 一个Bean类
// 也可以不用注解
@ToJsonString(type = JsonType.PRETTY, modifier = FieldModifier.PRIVATE, method = JsonMethod.HANDLE)
public class User {
    public int id;
    private String name;
    private Date birth;

    public User() {}

    public User(int id, String name, Date birth) {
        this.id = id;
        this.name = name;
        this.birth = birth;
    }

    @Override
    public String toString() {
        try {
            // 1. 不使用注解
            return BeanUtils.toJsonString(this);
            // 2. 使用注解
            return BeanUtils.toJsonStringByAnnotation(this);
        } catch (IllegalAccessException e) {
            return e.getMessage();
        }
    }
}

// 外部类调用
User user = new User(1, "test", new Date());
System.out.println(user.toString());

// 不使用注解的输出
{"name":"test","birth":1516429105846,"id":1}

// 使用注解的输出
{
  "name": "test",
  "birth": "Sat Jan 20 14:18:25 CST 2018"
}

JSON转Bean

BeanUtils.jsonPutIn(jsonObject, bean);

16. com.zhazhapan.util.NetUtils

方法名简要说明
getDataOfUrl获取URL对应的网页内容
getInputStreamOfUrl获取URL对应的InputStream对象
getInputStreamOfConnection获取HttpURLConnection对应的InputStream对象
evaluateXPath解析HTML内容
getHtmlFromUrl获取网页内容
getDocumentFromUrl获取HTML文档
getComputerName获取计算机名
getSystemName获取系统名称
getSystemArch获取系统架构
getSystemVersion获取系统版本
getMacAddress获取Mac地址
getPublicIpAndLocation获取公网IP和归属地
getLocalIp获取本地ip地址
getLocationByIp获取ip归属地

17. com.zhazhapan.util.ReflectUtils

方法名简要说明
scanPackage扫描包下面所有的类
invokeMethod通过反射调用方法
getTypes获取对象集的所有类型
getBasicTypes获取所有对象的基本类型
invokeMethodUseBasicType使用基本类型调用方法

18. com.zhazhapan.util.HttpUtils

方法名简要说明
getCookie通过名称获取Cookie

转载于:https://github.com/code4everything/util

 

推荐

欢迎朋友们来我的博客逛逛!

http://www.mhtclub.com

一位朋友的人工智能教程。零基础,通俗易懂!

package com.zhazhapan.efo.dao.sqlprovider; import com.zhazhapan.efo.EfoApplication; import com.zhazhapan.efo.modules.constant.ConfigConsts; import com.zhazhapan.util.Checker; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.jdbc.SQL; /** * @author admin */ public class AuthSqlProvider { public String updateAuthById() { return CommonSqlProvider.updateAuthById("auth"); } public String batchDelete(@Param("ids") String ids) { return "delete from auth where id in " + (ids.startsWith("(") ? "" : "(") + ids + (ids.endsWith(")") ? "" : ")"); } public String getAuthBy(@Param("id") long id, @Param("userId") int userId, @Param("fileId") long fileId, @Param ("fileName") String fileName, @Param("offset") int offset) { String sql = new SQL() {{ SELECT("a.id,a.user_id,a.file_id,u.username,f.name file_name,f.local_url,a.is_downloadable,a" + "" + "" + ".is_uploadable,a.is_deletable,a.is_updatable,a.is_visible,a.create_time"); FROM("auth a"); JOIN("user u on u.id=a.user_id"); JOIN("file f on f.id=a.file_id"); if (id > 0) { WHERE("a.id=#{id}"); } if (userId > 0) { WHERE("u.id=#{userId}"); } if (fileId > 0) { WHERE("f.id=#{fileId}"); } else if (Checker.isNotEmpty(fileName)) { WHERE("f.local_url like '%" + fileName + "%'"); } ORDER_BY("a." + EfoApplication.settings.getStringUseEval(ConfigConsts.AUTH_ORDER_BY_OF_SETTINGS)); }}.toString(); int size = EfoApplication.settings.getIntegerUseEval(ConfigConsts.AUTH_PAGE_SIZE_OF_SETTINGS); return sql + " limit " + (offset * size) + "," + size; } } 请用你的专业知识帮我详细解释以上代码: 1.具体实现了什么功能 2、具体用到什么知识点
04-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值