开发常用工具类总结 Day20 2018-12-10

//www.greatytc.com/p/e02aaf59a0f1

概述

开发常用工具类总结

导入项目

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

该项目是日常业务开发的工具类,目前包含以下部分:

  1. 时间转换工具类
  2. 邮件发送工具类
  3. http请求工具类
  4. 序列化工具类
  5. 获取本地IP和主机名工具类
  6. BigDecimal计算类

时间转换工具类

在日常开发过程中,我们进程会需要把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)

序列化工具类

对于web服务,我们需要把Object序列化成Json,另外也要Json也需要被反序列化成Object,这几乎是后端开发每天都要做的事,JacksonUtil提供了静态方法方便对其操作,例如:

  • obj2json(Object obj),Object -> Json
  • obj2jsonSafe(Object obj),Object -> Json,内部处理了Exception
  • obj2jsonForSoaEntity(Object obj),Object -> Json,针对SOA服务
  • removeSchema(Object obj),把soa 契约类的schema字段删除
  • json2pojo(String jsonStr, Class<T> clazz),把jsonStr反序列化成Class
  • json2pojoSafe(String jsonStr, Class<T> clazz),把jsonStr反序列化成Class,内部处理了异常
  • json2list(String jsonArrayStr, Class<T> clazz),把jsonStr反序列化成Object List
  • json2map(String jsonStr),把jsonStr反序列化成map
  • json2map(String jsonStr, Class<T> clazz),把jsonStr反序列成包含JavaBean的Map

获取本地IP和主机名工具类

拿到本机IP不是一件困难的事,但是拿到正确的就比较难了,本工具类,是参考了开源项目CAT内部的实现,提供静态方法如下:

  • getLocalHostAddress(),返回本机IP
  • getLocalHostName(),返回主机名
  • getLocalInetAddress,返回InetAddress

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)

http请求工具类

在服务里请求别的接口也是很常见的事

  • doGet(String url, Map<String, String> queryParam),get请求,queryParam是参数
  • doPost(String url, Map<String, String> params, String json),json 请求体内是json字符串
  • ... doPost的重载方法

邮件发送工具类

邮件工具类是通过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");
    }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • 项目地址 https://github.com/LJWLgl/CommonUtil 概述 开发常用工具类总结,如果...
    _南轩阅读 3,925评论 0 63
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,657评论 18 139
  • 凌晨一点钟,打开简书,就是想简简单单的记录下几句文字,发现并没有什么好写。现在的写,还紧紧限于灵感突现,抓住机会写...
    天堂口的黑衣人阅读 150评论 2 1
  • 我又一次看到他时,心里想的是,终于来了。 那是夏天,毕业离校季,天特别热,宿舍楼的走廊开始出现好多旧衣服旧书...
    蓝鱼的海洋阅读 341评论 0 0
  • 不知道今天二月二十几号,只知道是农历的正月初八,小俊宝从初三晚上开始病到现在,心力交瘁的无奈让我备受煎熬,...
    我的大馨妹阅读 367评论 0 0