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的一个痛点) |
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)
Java开发—乘风破浪的更多相关文章
- 【搬砖】安卓入门(1)- Java开发入门
01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...
- 【java开发】ubuntu常用命令及环境搭建
学习第一天,今天内容相对简单,主要就是ubuntu一些常用命令及常规操作,后续涉及到环境的搭建,也会在本文再更. ubuntu环境搭建 第一种 也是最简单最方便的 通过vm虚拟机软件,下载iso镜像进 ...
- 如何在一台新电脑上配置JAVA开发环境
对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA开发有关的环境,应该如何进行配置呢? (安卓新手也需要JAVA开发环境) 第一步,下载.安装java JRE JRE (Java ...
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
一.java 开发环境的搭建 这里主要说的是在windows 环境下怎么配置环境. 1.首先安装JDK java的sdk简称JDK ,去其官方网站下载最近的JDK即可..http://www.orac ...
- Java开发的基础条件:
------------Java开发的基础条件:Java相关的基础+对编程的自己的理解+调试代码+自己的坚持 一定要谦逊,不人云亦云,不去妄言某一门语言或技术好或坏!不是哪门技术有问题,而是(不会用才 ...
- 如何自学 Java 开发
如何自学 Java 开发? 568赞同反对,不会显示你的姓名 李艾米IT路上学习 568 人赞同 Java Web前端技术 HTML 入门视频课程 1 HTML 简介 2 HTML基本结构[ 3 HT ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- Java开发面试总结
Java开发面试总结.. ----------------------- java 基础知识点这一块: 1.面向对象的三大特征.(继承,封装,多态) 1.1 在什么样的场合下面会使用到继承 1.2 什 ...
- 01 java开发前小知识
1.常见的dos命令 盘符: 进入指定的盘符下. dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 注意:rd不能删除非空的文件夹,而且只能用于删除文件夹. c ...
随机推荐
- python 库安装笔记
python 库安装笔记 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-2-22 友情提示 安装python库的过程中 ...
- git的安装和环境配置过程(学习笔记)
1.安装git 官网下载:https://github.com(目前官网好像找不到了,但是妙味的视频里面是在官网下载的)https://git-for-windows.github.io/ (廖雪峰老 ...
- java从入门到卖肠粉系列
java从入门到卖肠粉系列 注:本教程只是从JAVA基础开始,绝对不会跟公司有任何利益冲突,更不会出现一行公司项目的代码 QQ群:9547527 推荐用土豆,百度去上传太慢,百度云在线播放还要转码.. ...
- VS2012 百度云下载 开发工具
百度云下载地址:链接: http://pan.baidu.com/s/1qWDIDPi密码: 5nr0 ASP.NET MVC4.0+ WebAPI+EasyUI+KnockOutJS快速开发框架 通 ...
- 基础数据结构-串-KMP算法
KMP算法用于模式串字符匹配,因为没有提前预习,上课时听得云里雾里,后来回去看了一晚上,翻了一些网上的讲解才理解了.我简单讲一下,我们在一串字符串A里搜索匹配另一段字符串B时,思路最简单方法的就是从第 ...
- Python学习--23 第三方库
本文将介绍python里常用的模块.如未特殊说明,所有示例均以python3.4为例: $ python -V Python 3.4.3 网络请求 urllib urllib提供了一系列用于操作URL ...
- 关于Edittext默认弹出软键盘为数字键
如果说我们只是输入数字的话,我们可以直接在xml文件中: android:inputType="number" 如果是身份证类型的话,我们可以这样: android:inputTy ...
- poj 2229 DP
Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissions: 15326 Accepted: 6088 Descrip ...
- wemall app商城系统Android之支付宝接口RSA函数
wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享支付宝接口RSA函数,RSA签名.验签.解密等 ...
- 计算机程序的思维逻辑 (73) - 并发容器 - 写时拷贝的List和Set
本节以及接下来的几节,我们探讨Java并发包中的容器类.本节先介绍两个简单的类CopyOnWriteArrayList和CopyOnWriteArraySet,讨论它们的用法和实现原理.它们的用法比较 ...