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)的技术实践

ImmutableList<String> imlist=ImmutableList.copyOf(list);

常见集合Colletion,List,Set,SortedSet,Map,SortedMap都有其对应类型


其他


Strings. Range, EventBus, Caches, null值的管理(java的一个痛点)

Guava官方教程的中文翻译:http://ifeve.com/google-guava/

  • Joda-time

这部分是后来补上的,在.NET中时间日期使用非常简单方便,但java中居然是个痛点!!!一些基础的时间日期操作常常被Date,TimeStamp,Calendar等类型搞的相对复杂。可以这么说,掌握了guava,joda-time,最好还有jdk8(生产暂时未普及),基本上代码效率基本上可以回到写c#的水平上。最基础的一个例子,获取某一日期当月第一天的日期部分:DateTime curMonth1 = DateTime.now().dayOfMonth().withMinimumValue().withTimeAtStartOfDay();

官网文档:http://www.joda.org/joda-time/userguide.html

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

其是2003年兴起的一个轻量级java开发框架项目,经过多年发展,已经成为java项目的(事实上)标准化组件,包括很多子项目和相关项目,可以说是非常的棒,大幅简化程序员工作,且稳定高效。(朴实来说,它非常适合现在互联网场景,不需要大而全的超级应用,而是需要不断的迭代快速上线应景的项目,后台通过SOA提供有效的服务。对于个人来说,现在项目除开H5等前端内容,核心就是3扳斧,Web提供用户入口,SOA服务提供核心服务,Job完成各类脏活累活,其他的主要起到辅助作用)

核心功能:Spring-Core,核心就是完成Bean的创建(DI)和管理,比我们自己管理的更加系统合理,且编码美观,思路清晰。

辅助功能:Spring-Aop切面功能,Tx事务功能,RMI远程服务功能,JmsTemplate消息功能等,JDBC数据库连接等功能(整合MyBatis)。

Web支持:SpringMvc,市场份额第一,不解释。

最近两年火热无比的:Spring boot,以rapid applicaition development为宗旨,简化项目开发,但背后和过去的java开发无本质区别。

  • 前端框架选型:

angular+bootstrap+jQuery,后台java,基本适用大部分中小项目。针对大型项目,可以参见博主叶小钗大神的浅谈Hybrid技术系列文章

  • 日志

Java非常重视接口与实现的分离,利用接口定义标准,如果说.NET(只有微软一家的实现,曾经的辉煌,也造成了现在业务的萎缩)这是可选项的话,java就是就是必选项。比如spring的aop就只支持使用在接口上,而SLF4J就是一个日志接口标准,无论是log4j2,logback,提供的都是其实现,对开发透明,非常方便的进行插件式管理。

本文所有demo内容请详见:Github中javaDemo项目。

最后,推荐一个知乎问题和一篇赞赞的博文(中文翻译)

目前流行的前端框架有哪些?(完成java学习后,就开始全面的前端学习,基本达到一个互联网工程师的水平再考虑下一步的plan)

2017 年你应该学习的编程语言、框架和工具

时间: 2024-10-10 06:34:55

Java开发—乘风破浪的相关文章

底层战详解使用Java开发Spark程序(DT大数据梦工厂)

Scala开发Spark很多,为什么还要用Java开发原因:1.一般Spark作为数据处理引擎,一般会跟IT其它系统配合,现在业界里面处于霸主地位的是Java,有利于团队的组建,易于移交:2.Scala学习角度讲,比Java难.找Scala的高手比Java难,项目的维护和二次开发比较困难:3.很多人员有Java的基础,确保对Scala不是很熟悉的人可以编写课程中的案例预测:2016年Spark取代Map Reduce,拯救HadoopHadoop+Spark = A winning combat

Java开发搜索引擎爬虫

1 package com.peidon.html; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 import java.net.HttpURLConnectio

Lombok: Java开发的利器

Lombok是一个旨在减少代码开发工作的Java库.本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals(),hashCode()和toString()方法.在Java中,一个很简单的类却往往写得特别复杂.如果你没听说过Lombok的话,那它肯定会让你满意的. Lombok可以帮助Java开发人员完成以下这些事情: 1. 不用再写setter/getter方法了 public class Animal { @Getter @Setter private Stri

java开发中的那些事(5)--------一点经历,败给2分钟的2个小时

特意记下这个经历,这个让我感慨万千又斗志昂扬的一次经历,这是经验,也是生活. 故事的始末是这样的,先给大家上几句代码,现在身在家中,只能凭记忆敲打几行,大致意思倒不会错: {field:'code',align:'center'} {field:'btfid',align:'center',hidden:'true', formatter:function(value,row,rowIndex){ return "<a href="javascript:void(0)"

Java开发环境的配置

为了能够在计算机上开发Java程序和运行Java程序,就需要在Windows操作系统上配置Java开发环境. 首先,安装JDK: 1.在Oracle官网上下载JavaSE: 2.在Download下载页面中,选择Windows平台下的JDK6: 3.下载完成后进行安装,默认安装在c:\Program Files\Java下: 4.安装完成后,在DOS命令行状态下测试JDK6是否安装成功: 5.运行cmd,输入java -version命令,可以查看版本信息,若显示出版本信息,则安装成功. 然后进

所有做java开发的都是些垃圾

所有做java开发的都是些垃圾,再垃圾的框架,只要有人用,对java程序员来说那就是高性能,高可用,解耦的,非常优秀的一款框架.属于吃屎都吃的津津有味.java里的框架都是垃圾,连一个不错的都没有.比如struts这个垃圾,返回一个SUCCESS,呵呵!而且不配置的话,一个动作类只能有一个方法.哪个坐井观天的脑残写的.现在最流行的mybatis框架,把所有sql配置到xml.把xml也算是玩到极致了.你无法想象世上竟然有这种垃圾.做java开发的为什么都这么垃圾.还有java接口现在可以有方法的

java开发系统内核:让内核从严重错误中恢复

更详细的讲解和代码调试演示过程,请参看视频 用java开发C语言编译器 更详细的讲解和代码调试演示过程,请参看视频 如何进入google,算法面试技能全面提升指南 如果你对机器学习感兴趣,请参看一下链接: 机器学习:神经网络导论 更详细的讲解和代码调试演示过程,请参看视频 Linux kernel Hacker, 从零构建自己的内核 微软早期的DOS系统,存在一个严重的问题是,如果应用程序运行出现问题,它会导致整个系统完全奔溃掉,我们当前的系统内核也存在这一的问题,例如打开api_call.as

java开发工具——Eclipse的常见使用说明

Java开发常见工具介绍: A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) Eclipse的基本使用Eclipse的基本使用: 选择工作空间 工作空间 其实就是我们写的源代码所在的目录 用Eclipse来完成一个HelloWorld案例 代码以项目为基本单位 创建项目 创建包 创建类 编写代码 eclipse的汉化及检查: 使用dropins安装插件 从Eclipse3.5开始,安装目录下就多了

java开发中使用的工厂设计模式

package gongchangdemo; /* * 在java开发中使用较多的一种设计模式:工厂模式:就是一个过渡端 * 通过过度端来取得接口的实例化对象,这个过渡端就称为工厂factory * 这个模式主要是为了解决修改子类,必须要修改main方法,而main方法主要是客户端,客户端 * 经常变来变去不太好,就引进:工厂模式 */ public class gongchangdemo { public static void main(String args[]) { //getinsta