文章目录
Hutool工具:使用Hutool工具进行Convert类型转换
建maven工程并在pom文件中导入依赖
痛点
在Java开发中我们要面对各种各样的类型转换问题,尤其是从命令行获取的用户参数,从HttpRequest获取的Parameter等等,这些参数类型多种多样,我们怎么去转换他们呢?常用的办法是先整成String,然后调用XXX.parseXXX方法,还要承受转换失败的风险,不得不加一层try catch,这个小小的过程混迹在业务代码中会显得非常难看和臃肿。
Convert类
Convert类可以说是一个工具方法类,里面封装了针对Java常见类型的转换。Convert类大部分方法为toXXX,参数为Object,可以实现将任意可能的类型转换为指定类型,同时支持第二个参数defaultValue用于在转换失败时返回一个默认值。
测试
hutool工具中的Convert工具类的源码
启发
以后写项目的时候一定要首先引入hutool工具包,为了方便单元测试还要引入junit依赖。
以后我们写项目的时候要提前引入hutool工具的依赖,这样我们在后续的类型转换的时候就可以直接使用hutool工具包里面的类型转换的工具了。并且几乎我们写代码牵涉到的所有的工具类,包括日期转换什么了的,包括发送Http请求了,都可以在hutool工具包里面找到,所以我们今后要做的就是练习找hutool工具包里面的工具,知道怎么使用就行了。因此以后写项目的时候一定要首先引入hutool工具包,为了方便单元测试还要引入junit依赖。
下载hutool源码到本地
下载到本地之后,hutool源码工程如下图:
使用糊涂工具利用雪花算法生成唯一性id
如下图:
直接使用糊涂工具中的IdUtil.getSnowflake().nextId()方法生成唯一性id,糊涂工具中对雪花算法进行了封装改变,使它生成唯一性id的时候可以支持高并发的场景;最初始的时候,我想要利用雪花算法生成一个唯一性id,但是我没有使用糊涂工具中的IdUtil工具类,而是在网上找了一个雪花算法生成唯一性id的例子,然后就直接在项目中使用了。但是后面就出现问题了,在描述出现的问题之前,先要明白为什么根据雪花算法生成的id可以永远不重复呢?因为雪花算法用到了当前时间的毫秒时间戳,因为每时每刻它的毫秒时间戳都是不一样的,因此生成的id也就不一样了。现在来说下遇到的问题,就是在并发不高的情况下,没有太多在同一毫秒执行的客户端,这个时候生成的id确实是不一样的,但是当并发量特别大的时候,在同一毫秒执行的客户端有非常多,那么生成的雪花id就重复了。因此为了解决这个问题,直接使用了糊涂工具中的雪花算法生成唯一性id就可以了,因为那里面别人已经对雪花算法封装处理好了。
题外话
以后想要用Hutool工具的东西的时候,可以直接去百度搜索Hutool,然后进入官网查询相关内容。