V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
17701762115
V2EX  ›  问与答

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

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

    项目链接: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   ·   实用小工具   ·   1049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:10 · PVG 06:10 · LAX 14:10 · JFK 17:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.