最近需要上线很多新的JAVA项目,然而很多JAVA的相关库都不太熟悉,项目实现起来遇到了不小阻力,熬了好几天夜。现在手头的工作基本完成了,因此打算好好来归纳下java的相关工具库,将来需要借助你们,好好的在JAVA的汪洋下,乘风破浪。(希望成为电影中如小马一样程序员J)
长风破浪会有时,直挂云帆济苍海—李白
首先通过一张思维导图,来熟悉常用的java基础工具包,掌握好工具是对一个优秀工程师的基本要求哦!J
图中标红星表示必须精通的内容,黄星为需要熟练掌握的内容,其他为补充内容,本文主要会介绍下基础库、框架库和log库的内容。
-
Apache Commons Lang
虽然现在推荐使用Guava替代Commons,但同时使用这两个深入人心的基础库也是棒棒哒,下面通过一个表格来熟悉最常用的使用。
功能
示例
字符串空判断
StringUtils.isEmpty(null), StringUtils.isBlank(" ")
字符串trim
StringUtils.trim(" abc "), StringUtils.strip(" abc", "xyz")
字符串分割
String[] r01 = StringUtils.split(" abc dd")
String[] r02 = StringUtils.split("abc,dd", ",")
StringUtils.splitPreserveAllTokens(str4, ",")
数组元素拼接
StringUtils.join(array, ",")
随机数
RandomStringUtils.randomAscii(10)
数组操作
ArrayUtils.clone(arr)
ArrayUtils.isEmpty(arr)
ArrayUtils.toObject(array10)
日期
DateUtils.parseDate("2010/01/01 11:22:33", new String[]{"yyyy-MM-dd HH:mm:ss"})
基本反射工具
BeanUtils.getProperty(bean, "name")
SampleBean newBean = (SampleBean) BeanUtils.cloneBean(bean);
BeanUtils.describe(bean); //获得注解
BeanUtils.populate(bean, map);//填充数据
String[] array = BeanUtils.getArrayProperty(bean, "array");//获取数组
String value = BeanUtils.getNestedProperty(bean, "nestedBean.nestedProperty")
BeanUtils.setProperty(bean8, "url", "http://www.google.com/");
DateConverter converter = new DateConverter();
converter.setPattern("yyyy/MM/dd HH:mm:ss");
ConvertUtils.register(converter, Date.class);
ConvertUtils.register(converter, String.class);
BeanUtils.setProperty(bean9, "date", "2010/12/19 23:40:00");
实现equals等方法
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj); }
InvokeMethod
Main main = new Main();
Child child = new Child();
MethodUtils.invokeMethod(main, "pass", child); // OK
MethodUtils.invokeExactMethod(child, "pass', child);
lang.time.*
FastDateFormat相对于SimpleDateFormat是线程安全的
/div>
p>
Tip:/p>
p>
关于线程安全,常用的方法有:每次都加上new;加上synchronize;使用thread-local,在线程重用时,减少了new的次数;使用object-pool,共享多个对象。/p>
ul>
/ul>
div>
功能
示例
复写常用Object方法
Objects.equal(null, null)
Objects.hashCode(person)
Objects.toStringHelper(Person.class)
ComparisonChain.start().compare(name, other.name).result();
Throwables
Throwable getRootCause(Throwable)
List<Throwable> getCausalChain(Throwable)
String getStackTraceAsString(Throwable)
Immutable不可变集合
很好的防御编程(defensive programming)的技术实践
常见集合Colletion,List,Set,SortedSet,Map,SortedMap都有其对应类型
其他
Strings. Range, EventBus, Caches, null值的管理(java的一个痛点)
/div>
/span>
pre>List<String> orderNumberList = Lists.transform(orderList,
newFunction<TrainOrderInfo, String>
() { @Override public String apply(TrainOrderInfo input) { return input.getOrderNumber(); } });/pre>
/span>
li>
/li>
获取某一日期当月第一天的日期部分
:DateTime curMonth1 = DateTime.now().dayOfMonth().withMinimumValue().withTimeAtStartOfDay();
/span>
/span>
br> System.out.println(result.withTimeAtStartOfDay());
br> System.out.println(result.plusDays(1).withTimeAtStartOfDay());
br> System.out.println(result.plusWeeks(1).dayOfWeek().withMinimumValue().withTimeAtStartOfDay());
br> System.out.println(temp);
br> System.out.println(result.plusMonths(1).dayOfMonth().withMinimumValue().withTimeAtStartOfDay());
br> System.out.println(new Date(temp.getMillis()));
img src="https://images2015.cnblogs.com/blog///--.png" alt="">
li>
/li>
3扳斧
,Web提供用户入口,SOA服务提供核心服务,Job完成各类脏活累活,其他的主要起到辅助作用)
/span>
/span>
/span>
/span>
/span>
li>
/li>
/span>
li>
/li>
SLF4J就是一个日志接口标准
,无论是log4j2,logback,提供的都是其实现,对开发透明,非常方便的进行插件式管理。这部分需要依赖4个组件,分别是:slf4j-api接口;log4j-api,log4j-core,log4j-slf4j-impl实现
/span>
li>服务框架
/li>
strong>CXF
/strong>已经成为JAVA SOA服务的实际标准,其轻量化的特点深入人心,此外,其与Spring可以更好的结合。
li> job框架
/li>
li>测试工具
/li>
li>HttpClient
/li>
1 @RequestMapping("/image/{url}") 2 public void getImage(@PathVariable String url, HttpServletResponse response) 3 throws ClientProtocolException, IOException { 4 String realurl = new String(Base64.decodeBase64(url)); 5 6 InputStream instream = FileWSManagerUtil.getImage(realurl); 7 OutputStream outputStream = null; 8 response.setContentType("image/jpeg"); 9 try { 10 outputStream = response.getOutputStream(); 11 byte[] buffer = new byte[8192]; 12 int count; 13 while ((count = instream.read(buffer)) > 0) { 14 outputStream.write(buffer, 0, count); 15 } 16 } finally { 17 FileIO.close(outputStream); 18 FileIO.close(instream); 19 } 20 } 21 22 private static InputStream get(String targetURL) { 23 HttpGet request = new HttpGet(targetURL); 24 request.setHeader("Authorization", "Basic " + authorization); 25 try { 26 HttpResponse response = HttpClients.createDefault().execute(request); 27 if (response.getStatusLine().getStatusCode() == 200) 28 return response.getEntity().getContent(); 29 } catch (Exception ex) { 30 logger.warn("图片获取失败", ex); 31 } 32 return null; 33 }
/div>
/span>
/span>
Github中javaDemo项目。
/span>
/span>
/span>
/span>
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18980.html