开源的论坛网站源码分享java 开源论坛源码哪个好

大家好,关于开源的论坛网站源码分享java很多朋友都还不太明白,今天小编就来为大家分享关于开源论坛源码哪个好的知识,希望对各位有所帮助!

作者:古时的风筝

风筝我作为一个野路子开发者,直到遇见下面的这几个工具库,才知道之前重复造了不少轮子,而且轮子还不一定有人家的圆。相信跟我一样,没事儿造轮子的人还不在少数,有些人就是对造轮子感兴趣,这个咱也无话可说,但是,比如我,我是造轮子之前不知道这世上已经有好用的轮子了,害,无知限制了我的想象力。

比如我们在拿到一个List集合之后,要对这个集合进行判空操作,以前我一直是这样写的:

List<String>list=getList();\nif(list!=null&&list.size()>0){\n//dosomething\n}

虽然这样也没什么问题,但是,我懒啊,每次敲这么多代码,也挺累啊。有同学说,那你包装成一个方法不就行了,每次调用个方法就OK啦。这不,同学,你就在造轮子了,已经有人帮你写好了这样类似的一系列方法了。

来让我们认识认识这些轮子吧。

Java8Stream

Stream不算是工具库,但是通过stream提供的一系列方法,可以实现集合的过滤、分组、集合转换等诸多操作。

例如下面的方法,实现列表元素根据某个字段去重的功能。

List<User>userList=newArrayList();\n//添加元素\nuserList=userList.stream().filter(distinctByKey(user->user.getUserId())).collect(Collectors.toList());\n\nprivatestatic<T>Predicate<T>distinctByKey(Function<?superT,?>keyExtractor){\nMap<Object,Boolean>seen=newConcurrentHashMap<>();\nreturnt->seen.putIfAbsent(keyExtractor.apply(t),Boolean.TRUE)==null;\n}

apachecommons

官方地址:http://commons.apache.org/

这不是一个库,而是一系列的工具库。

由于包含的库过多,我就不一一列举了,可以到官网一探。有集合处理的、数学计算的、IO操作的等等,其中最常用的莫过于ApacheCommonsLang和ApacheCommonsCollections这两个。

ApacheCommonsLang包括一系列工具类,有字符串相关的、时间处理的、反射的、并发包的等等,ApacheCommonsCollections专门用作集合处理。

下面举几个例子说明一下,更详细的内容可以到官网查看文档。

字符串判空操作

Strings=&34;;\nBooleanisEmpty=StringUtils.isEmpty(s);

获取类的全名称

ClassUtils.getName(ClassUtils.class);

判断集合是否为空

BooleanisNotEmpty=CollectionUtils.isNotEmpty(list);

反射获取某个类的所有Field

Field[]fields=FieldUtils.getAllFields(User.class);

GoogleGuava

官方地址:https://github.com/google/guava

和ApacheCommons有点儿类似,它也是包含了一系列的比如字符串、集合、反射、数学计算等的操作封装,还可以用作JVM缓存。

举几个例子说明:

New各种对象

List<String>list=Lists.newArrayList();\nSet<String>set=Sets.newHashSet();\nMap<String,Object>map=Maps.newConcurrentMap();\n\n//不可变集合\nImmutableList<String>immutableList=ImmutableList.of(&34;,&34;,&34;);

列表转符号分隔的字符串

List<String>list=newArrayList<String>();\nlist.add(&34;);\nlist.add(&34;);\nlist.add(&34;);\nStringresult=Joiner.on(&34;).join(list);\n\n>1-2-3

求交集、并集、差集等

例如下面代码求set1和set2的交集

Set<Integer>set1=Sets.newHashSet(1,2,3,4,5,6);\nSet<Integer>set2=Sets.newHashSet(1,2,3,4);\n\nSets.SetView<Integer>intersection=Sets.intersection(set1,set2);

JodaTime

官方地址:https://www.joda.org/joda-time/

一个日期、时间处理的工具库。如果你不是经常做日期处理,那差不多每次需要的时候都需要查询相关的API,而有了工具类就不一样了,只要一个“.”,你想要的方法就出现了,而JodaTime就是一款好用的工具库。

比如下面这个方法,计算到新年还有多少天。

publicDaysdaysToNewYear(LocalDatefromDate){\nLocalDatenewYear=fromDate.plusYears(1).withDayOfYear(1);\nreturnDays.daysBetween(fromDate,newYear);\n}

OkHttp3

官方地址:https://square.github.io/okhttp/

一个HTTP客户端,使用简单,性能良好,是时候放弃HttpClient了。

一个get请求:

OkHttpClientclient=newOkHttpClient();\n\nStringrun(Stringurl)throwsIOException{\nRequestrequest=newRequest.Builder()\n.url(url)\n.build();\n\ntry(Responseresponse=client.newCall(request).execute()){\nreturnresponse.body().string();\n}\n}

一个post请求:

publicstaticfinalMediaTypeJSON\n=MediaType.get(&34;);\n\nOkHttpClientclient=newOkHttpClient();\n\nStringpost(Stringurl,Stringjson)throwsIOException{\nRequestBodybody=RequestBody.create(json,JSON);\nRequestrequest=newRequest.Builder()\n.url(url)\n.post(body)\n.build();\ntry(Responseresponse=client.newCall(request).execute()){\nreturnresponse.body().string();\n}\n}

Json系列

Jackson

Spring默认的Json序列化工具,其实已经足够用了。

Gson

Google出品,功能齐全。

FastJson

阿里出品,算法良好,性能最优。

EasyExcel

官方地址:https://www.yuque.com/easyexcel/doc/easyexcel

阿里开源的Excel操作工具库,可以看做是ApachePOI的增强封装版、优化版。

如果你的数据量很大,那用EasyExcel可以节省内存,提升效率,并且没有并发风险。

如果你的Excel足够复杂,那用EasyExcel会比你直接用POI少些很多代码。

比如我实现了下面这个Excel动态导出,包括动态表头、动态合并单元格的功能,只用了很少的代码,如果是使用POI的话,那可能代码量增加不止一倍啊。

excel

TinyPinyin

官方地址:https://github.com/promeG/TinyPinyin

中文转拼音,把你输入的中文转换成拼音。比如搜索功能要实现这样的功能,输入“fengzheng”搜索,会匹配到“风筝”这个词语,这就需要中文转拼音了。

有的同学说了,这不是拼音转英文吗?当然不是在输入“fengzheng”的时候转换了,而是在包含“风筝”的这条记录中有一个拼音的额外字段,这样搜索的时候直接匹配拼音那个字段。

反射工具库-jOOR

官方地址:https://github.com/jOOQ/jOOR

它是JDK反射包的友好封装,通过一系列简单友好的链式操作实现反射调用。比如下面这个例子

publicinterfaceStringProxy{\nStringsubstring(intbeginIndex);\n}\n\nStringsubstring=on(&34;)\n.create(&34;)\n.as(StringProxy.class)\n.substring(6);

简单的代码实现JDK动态代理,节省了不少代码。

MyBatis-Plus

官方地址:https://mp.baomidou.com/

只要你的项目中有数据库访问,那你肯定用过或者至少听说过MyBatis,但是如果你只用MyBatis需要针对每个DAO方法写对应的SQLStatement(也就是mapper.xml中的代码块),当然有一些自动生成的工具,MyBatis就有它提供的MyBatisGenerator,比如我也稍做加工,做过一个web版的MyBatisGenerator,开发效率是提高了,但是每个mapper.xml文件的代码量很大,于是MyBatis-Plus就要出场了。

官网上对他的定义如下:

只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。只需简单配置,即可快速进行CRUD操作,从而节省大量时间。热加载、代码生成、分页、性能分析等功能一应俱全。

最后,再配上MybatisXIDEA插件,也是可以了。

vjtools

官方地址:https://github.com/vipshop/vjtools

这是唯品会的开源工具包,这里主要介绍其中的vjkit模块,是关于文本,集合,并发等基础功能的核心类库。这个库是我很早之前搜索日期操作的时候偶然发现的,我发现里面日期处理的API相当全面而且很实用,还在我的项目中用过一段时间。

最后

好用的工具库可以提高我们的开发效率,而且也是我们学习源码的好去处,和其他的开源框架(比如Spring、Dubbo)一样,看看优秀的代码是如何实现的。

如果你还知道什么好用、强大的开源工具包,欢迎在留言区分享,好东西不能独享,让更多的人受益。

来源:掘金链接:https://juejin.im/post/5edd9a33e51d45784635b1a8

开源的论坛网站源码分享java和开源论坛源码哪个好的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平