java常见的基础组件

java常见的基础组件最近需要上线很多新的 JAVA 项目 然而很多 JAVA 的相关库都不太熟悉 项目实现起来遇到了不小阻力 熬了好几天夜 现在手头的工作基本完成了 因此打算好好来归纳下 java 的相关工具库 将来需要借助你们 好好的在 JAVA 的汪洋下 乘风破浪 希望成为电影中如小马一样程序员 J 长风破浪会有时 直挂云帆济苍海 李白 首先通过一张思维导图 来熟悉常用的 java 基础工具包

大家好,我是讯享网,很高兴认识大家。



最近需要上线很多新的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是线程安全的

Tip:

关于线程安全,常用的方法有:每次都加上new;加上synchronize;使用thread-local,在线程重用时,减少了new的次数;使用object-pool,共享多个对象。

  • Guava

功能

示例

复写常用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的一个痛点)

List<String> orderNumberList = Lists.transform(orderList, new Function<TrainOrderInfo, String> () { @Override  public  String apply(TrainOrderInfo input) {  return  input.getOrderNumber(); } }); 

  • Joda-time

  • 获取某一日期当月第一天的日期部分

    :DateTime curMonth1 = DateTime.now().dayOfMonth().withMinimumValue().withTimeAtStartOfDay();

    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="">

  • Spring系列(详情可见Spring系列学习)

  • 3扳斧

    ,Web提供用户入口,SOA服务提供核心服务,Job完成各类脏活累活,其他的主要起到辅助作用)

  • 前端框架选型:

  • 日志

  • SLF4J就是一个日志接口标准

    ,无论是log4j2,logback,提供的都是其实现,对开发透明,非常方便的进行插件式管理。这部分需要依赖4个组件,分别是:slf4j-api接口;log4j-api,log4j-core,log4j-slf4j-impl实现

  • 服务框架

  • CXF

    已经成为JAVA SOA服务的实际标准,其轻量化的特点深入人心,此外,其与Spring可以更好的结合。

  • job框架

  • 测试工具

  • HttpClient

  • 讯享网 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 }

    Github中javaDemo项目。

    小讯
    上一篇 2024-12-31 15:15
    下一篇 2024-12-28 16:08

    相关推荐

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
    如需转载请保留出处:https://51itzy.com/kjqy/8028.html