# CommonUtil **Repository Path**: zhaozhiganggitee/CommonUtil ## Basic Information - **Project Name**: CommonUtil - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-11 - **Last Updated**: 2022-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 概述 开发常用工具类总结,如果对你有用欢迎star~ ### 导入项目 ``` io.github.ljwlgl common-util 2.0.1 ``` ### # FastJsonUtil(FastJson工具类) - **toJsonString(Object object)**, 序列化Json - **toJsonString(Object object, String... reAttrs)**,序列化Json转时删除不必要的属性 - **eval(String json, String path)**, 从Json中根据Path取出对象 - **eval(String json, String path, Class clz)**, 根据path从json中取出结果并反序列成JavaBean - **List evals(String json, String path, Class clz)**, 根据path从json中取出结果并反序列成JavaBean,该方法只支持array - **put(String json, String path, Object obj)**,根据path向json加入指定对象,只支持JSONObject - **parseObject(String json, Class clazz)**,反序列化Json - **List parseArray(String json, Class clazz)**,反序列化List - **String getJsonValue(String jsonStr, String key)**,获取Json字符串某节点的值 ### # DateUtil(时间转换工具类) 在日常开发过程中,我们进程会需要把Date转成String,或者把String转成Date,该工具类大致上能满足我们日志开发需要: - **getCurrentDate()**,获取当期日志,只包含日期 - **calcIntervalDays(Date date1, Date date2)**,计算两个日期间隔的天数 - **dayOfWeek(Date date)**,返回data对应的是星期几 - **getTodayMinutes()**,获取今天的分钟数,如今天18:05,则返回1805 - **getIntervalDate(Date time, int days)**,获取指定间隔天数的日期,比如昨天 getIntervalDate(new Date(), -1) - **dateToShortDateString(Date date)**,将date转成String,输出String只包含年月日 - **dateToString(Date date)**, 将date转成String,输出String包含年月日时分秒 - **stringToDate(String dateStr)**,将String转成Date,默认时区东八区,TimeZone.getTimeZone("Asia/Shanghai") - **dateToVoString(Date date)** ,后端经常会根据传入Date生成View层的String传给前端,该方法计算成相应中文,会例如: - 1分钟内:刚刚 - 超过1分钟并在1小时内:某分钟前 (1分钟前) - 超过1小时并在当日内:某小时前(1小时前) - 昨天:昨天 + 小时分钟(昨天 08:30) - 昨天之前并在当年内:某月某日 + 小时分钟(1月1日 08:30) - 隔年:某年某月某日 + 小时分钟(2017年1月1日 08:30) ### # RegexUtil(正则工具类) - **isMobileExact(CharSequence input)**,是否是手机号 - **isEmail(CharSequence input)**,是否是email - **isURL(CharSequence input)**,是否是URL - **isIP(CharSequence input**,是否是IP - **isMatch(String regex, CharSequence input)**,是否匹配正则表达式 - **getMatches(String regex, CharSequence input)**,获取正则表达式的部分 - ... ### # NetworkUtil(获取本地IP和主机名工具类) 拿到本机IP不是一件困难的事,但是拿到正确的就比较难了,本工具类,是参考了开源项目[CAT](https://github.com/dianping/cat)内部的实现,提供静态方法如下: - **getLocalHostAddress()**,返回本机IP - **getLocalHostName()**,返回主机名 - **getLocalInetAddress**,返回InetAddress ### # BigDecimalUtil(BigDecimal计算工具类) 在和钱打交道的服务里,经常会用到BigDecimal类,下面提供一些他的计算方法 - **subtract(double x, double y)** - **add(double x, double y)** - **multiply(double x, double y)** - **divide(double x, double y, int scale)** - **roundUp(double val)**,近似处理,向上取整 - **roundUp(double val, int scale)**, 近似处理,向上取整,scale保留点的位数 - **roundDown(double val)** - **roundDown(double val, int scale)** ### # HttpUtil(http请求工具类) 在服务里请求别的接口也是很常见的事 - **doGet(String url, Map queryParam)**,get请求,queryParam是参数 - **doPost(String url, Map params, String json)**,json 请求体内是json字符串 - ... doPost的重载方法 ### # EmailUtil(邮件发送工具类) 邮件工具类是通过JavaEmail实现,企业级项目一般都会专门的服务去发送邮件,但如果自己的小Demo,用工具类发送Email也未尝不可。示例Demo如下,有兴趣的可以fork代码自己研究一下,代码有详情的注释。 ``` public class EmailUtilTest { @Before public void before() throws GeneralSecurityException { // 发送邮箱配置,授权密码可以去邮件运营商获取 EmailUtil.config(EmailUtil.SMTP_QQ(false), "xxx@qq.com", "xxxxxx"); } @Test public void testSendText() throws MessagingException { System.out.println("test"); } } ``` ### # ProtobufUtil(提供Protobuf格式的序列化和反序列) ### # GZIPUtil(提供Gzip) - **compress(String str)**,字符串压缩为GZIP字节数组 - **compress(String str, String encoding)**,字符串压缩为GZIP字节数组 - **uncompress(byte[] bytes)**,GZIP解压缩