Java学习

1.JDK

1.1 windows下JDK安装

(1) 下载安装包并安装

(2) 配置环境变量

a. 设置JAVA_HOME:JAVA安装路径。

b. 设置CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;此时需要注意的是最前有.;,不能忘记。

c. 设置Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(3) 测试

在命令提示符中输入java -version, 查看版本信息。

1.2 Java API手册

JDK6, JDK7, JDK8

2.书籍:

《Effective Java》《Spring实战第三版》《Head First 设计模式》《Java并发编程实践》《Java虚拟机规范(Java SE 7版)》《Java虚拟机规范(Java SE 8版)》《深入理解Java虚拟机:JVM高级特性与最佳实践》《Maven实战》《JavaEE开发的颠覆者:Spring Boot实战》

未读: 《Java语言规范:基于Java SE 8》、《Java核心技术》, 《Java编程思想》、《java多线程编程核心技术》、《大型网站技术架构 核心原理与案例分析》、《大型网站系统与Java中间件实践》、《从Paxos到ZooKeeper 分布式一致性原理与实践》、《Spring源码深度解析》、《Spring Data实战》

3. 基础知识

相关书籍:《Effective Java》

3.1  Java术语/概念

PO/POJO/VO/BO/DAO/DTO
如何向妻子解释面向对象设计(OOD)

3.2  数据类型

Int,long,short,byte数组间的转换
字符串转boolean
遍历Map的几种方法

HashMap的实现原理

java对象与json相互转换

枚举的本质

3.3   抽象类与接口

抽象类与接口的联系与区别

3.4  特殊方法

Java编程下使用Class.forName()加载类
Java 中StringBuilder的用法

3.5 特殊类/接口

Comparator接口与Comparable接口的区别

3.6  I/O

FileInputStream/FileOutputStream的应用
Java回顾之I/O
java读取文件的几种方式

3.7  日期

Java中日期的常见操作

3.8  多线程

相关书籍:《Java并发编程实践》
Java多线程总结
java线程的创建,启动,执行

正确理解ThreadLocal

3.8.1 多线程定时调度

    Java任务调度框架Quartz教程实例

3.9  对象序列化
3.10  网络通信
3.11 异常

受检异常与非受检异常

3.12 反射

   (1) 基础反射技术

4. spring框架相关

相关书籍:《Spring实战第三版》

4.1 Spring基础:

Spring框架的设计理念与设计模式分析
Java回顾之Spring基础

spring四种依赖注入的方式
@ModelAttribute的使用

spring设置首页

 4.2 SpringMVC

4.2.1 基础

SpingMVC基本配置

Spring MVC Controller介绍

4.2.2 路由匹配规则

文章一 文章二

4.2.3 扩展

SpringMVC使用自定义注解实现登陆验证与判断

4.3  文件上传

Java实现文件上传 , Spring文件上传

添加Maven依赖

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
 <groupId>commons-fileupload</groupId>
 <artifactId>commons-fileupload</artifactId>
 <version>1.3.1</version>
</dependency>

添加Spring配置

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />;
4.4  定时任务
4.5 切面

 Spring面向切面的编程

4.6 Spring Data JPA

Spring Data JPA,  Sping Data Jpa简化开发Specification简介

4.6.1 Specification复杂查询

where:

Specification<UserModel> spec =new Specification<UserModel>(){
    public PredicatetoPredicate(Root<UserModel> root,
        CriteriaQuery<?> query,CriteriaBuilder cb){

        List<Predicate> list= new ArrayList <Predicate>();
        // like 查询
        String name = "test";
        list.add(cb.like(root.get("name").as(String.class),"%"+name+"%"));
        // 等于查询
        String uuid = "test";
        list.add(cb.equal(root.get("uuid").as(Integer.class),uuid));
        // in查询 
        List<Integer> user StatusInList = new ArrayList();
        userStatusInList.add(..);
        CriteriaBuilder.In<Integer> in = cb.in(root.get("userStatus").as(Integer.class));
        userStatusInList.forEach(status -> in.value(status)); // 遍历构造in查询
        list.add(in);

        Predicate[] p = new Predicate[list.size()]; 
        return cb.and(list.toArray(p)); 
      } 
}; 

            加入order by

Specification<TbTpiUserSyncHistory> spec = (root, query, cb) -> {

     List<Predicate> list = new ArrayList();
     // 对list设置where条件
     Predicate[] p = new Predicate[list.size()];
     query.where(cb.and(list.toArray(p)));
 
     // 设置order by
     query.orderBy(cb.desc(root.get("id").as(Long.class)));
     return query.getRestriction();
};
4.6.2 多数据源

方案一:  使用AbstractRoutingDataSource, 具体方案

4.7 Spring Dto
4.7.1 Dto中的Date类型字段格式化
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")

Json解析工具Jackson(使用注解)

4.8 Spring Boot

《JavaEE开发的颠覆者:Spring Boot实战》

4.9 其它

Servlet与Jsp之间的跳转
通过ApplicationContextAware获取bean
数据库连接池
DBCP连接池介绍

java工程中设置session超时的三种方式

5. 日志log4详解与实战

6. hibernate学习

7. 构建工具Maven

书籍:《Maven实战》

7.1 安装

7.1.1  maven安装

(1)将maven解压至某目录, 并设置环境变量M2_HOME为此目录

(2)设置环境变量Path, 追加值:%M2_HOME%\bin

(3)重启命令提示符, 键入命令mvn -version, 验证安装是否成功。

7.1.2 Eclipse插件m2eclipse安装。

法一:Install New Software中, 安装资源地址为:http://m2eclipse.sonatype.org/sites/m2e

法二:MarketPlace

法三:离线安装

7.1.3 仓库镜像

阿里云镜像

 
 <mirror>
 <id>nexus-aliyun</id>
 <mirrorOf>*</mirrorOf>
 <name>Nexus aliyun</name>
 <url>http://maven.aliyun.com/nexus/content/groups/public</url>
 </mirror>

7.2 eclipse建立MAVEN web项目
7.3 maven仓库–私服(Nexus的配置使用)Maven之settings私库配置
7.4 Java工程转换为Maven工程
7.5 Maven基础-默认中央仓库[settings.xml 配置详解 ]
7.6 maven中央库信息查询

7.7 自动更新子模块项目的版本号

8.RPC

8.1 thrift

Spring与Thrift整合(亲测可用)
Thrift学习指南
Thrift文件编写规则(官方文档)

thrift compiler官网下载链接     使用方式: 打开命令提示符,键入命令

 
thrift-0.6.1.exe -gen java thirft文件绝对路径

8.1 Dubbo

Dubbo架构设计详解

Dubbo原理解析系列

官方开发者指南

9. freemaker宏的用法, freemaker教程

9.1 freemaker判断list是否包含元素: list?index_of(“test”)!=-1, 判断字符串数组list中是否包含“test”元素。

10. 虚拟机

书籍:

《Java虚拟机规范(Java SE 7版)》《Java虚拟机规范(Java SE 8版)》

《深入理解Java虚拟机:JVM高级特性与最佳实践》

10.1 类加载器

深入理解Java类加载器(1):Java类加载原理解析

深入理解Java类加载器(2):线程上下文类加载器

10.2 性能调优

 Jvm性能调优, Jvm性能调优1

10.3 内存泄漏spr

java内存泄漏的定位与分析

10.1  Eclipse Memory Analyzer

安装包下载:官网下载源, 建议选择最快的镜像,下载zip包进行安装, 否则速度奇慢。

使用: 堆转储快照分析内存泄露

11. 软件设计理论

11.1 设计模式

相关书籍: 《Head First 设计模式》

12. 几种代码检查工具的比较

13. 读写文件

13.1 Excel

Java读写Excel