当前位置:网站首页 > Java基础 > 正文

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是线程安全的

/div>

p>

Tip:

/p>

p>

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

/p>

ul>

  • Guava
  • /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,

    new

    Function<TrainOrderInfo, String>

    () { @Override public String apply(TrainOrderInfo input) { return input.getOrderNumber(); } });

    /pre>

    /span>

    li>

    Joda-time

    /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>

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

    /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>

  • 上一篇: 二级 java 零基础
  • 下一篇: 背java基础面试
  • 版权声明


    相关文章:

  • 二级 java 零基础2024-11-12 20:26:05
  • 选修课编程基础java2024-11-12 20:26:05
  • java基础什么程度去学大数据2024-11-12 20:26:05
  • 零基础自学java后端2024-11-12 20:26:05
  • java毕设0基础2024-11-12 20:26:05
  • 背java基础面试2024-11-12 20:26:05
  • java基础之堆和栈2024-11-12 20:26:05
  • 类似java语言基础嘛2024-11-12 20:26:05
  • java基础数据的引用传递2024-11-12 20:26:05
  • java八股文基础2024-11-12 20:26:05