很有用的工具类,希望 V 友们能给个 Star~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
17701762115
V2EX    问与答

很有用的工具类,希望 V 友们能给个 Star~

  •  
  •   17701762115 2019-04-15 21:44:23 +08:00 1836 次点击
    这是一个创建于 2422 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目链接:https://github.com/LJWLgl/CommonUtil

    概述

    开发常用工具类总结,如果对你有用欢迎 star~

    导入项目

    <dependency> <groupId>io.github.ljwlgl</groupId> <artifactId>common-util</artifactId> <version>2.0.1</version> </dependency> 

    # 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<t> clz)</t>, 根据 path 从 json 中取出结果并反序列成 JavaBean
    • List<t> evals(String json, String path, Class<t> clz)</t></t>, 根据 path 从 json 中取出结果并反序列成 JavaBean,该方法只支持 array
    • put(String json, String path, Object obj),根据 path 向 json 加入指定对象,只支持 JSONObject
    • parseObject(String json, Class<t> clazz)</t>,反序列化 Json
    • List<t> parseArray(String json, Class<t> clazz)</t></t>,反序列化 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内部的实现,提供静态方法如下:

    • 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<String, String> queryParam),get 请求,queryParam 是参数
    • doPost(String url, Map<String, String> 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), "[email protected]", "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 解压缩
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3307 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 11:45 PVG 19:45 LAX 03:45 JFK 06:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86