java从入门到超神

java学习的指南

一,基础篇

1.1 JVM
1.1.1 Java 内存模型, Java 内存管理, Java 堆栈, Java 垃圾回收
1.1.2
了解 JVM 各种参数及调优
1.1.3
学习使用 Java 工具, jps jstack jmap jconsole jinfo jhat javap
1.1.4
自己编写各种 OutOfMomory StackOverFlow 程序
HeapOutOfMemory

Young OutOfMomery
MethodArea OutOfMomery
ConstantPool OutOfMomery
DirectMemory OutOfMomery
Stack OutOfMomery
Stack OverFlow

1.1.5 ,使用工具尝试解决以下问题,并写下总结
当一个 Java 程序响应很慢时如何查找问题;
当一个 Java 程序频繁 FullGC 时如何解决问题;
如何查看垃圾回收日志;
当一个 Java 应用发生 OutOfMemory 时该如何解决;

1.2 Java
基础知识
1.2.1
阅读源代码
1.2.2
熟悉 Java 中的各种变量类型
1.2.3
熟悉 Java String 的使用,熟悉 String 的各种函数
1.2.4
熟悉 java 中各种关键字
1.2.5
学会使用 List Map Stack Queue Set
上述数据结构的遍历;
上述数据结构的使用场景
Java
实现对 Array/List 排序 java.util.Array.sort()
Java.util.Collection.sort()

Java 实现对 List 去重,并且要求保留数据原始的出现顺序
Java
实现最近最少使用 Cache ,用 LinkedHashMap

1.2.8 Java
序列化
java.io.Serializable

什么是序列化
为什么序列化
序列化和单例模式
google
序列化 protobuf

1.2.9
虚引用、弱引用、软引用
java.lang.ref.*
实现这些引用的回收

1.2.10
熟悉 Java 系统属性
java.util.Properties


1.2.11 熟悉 Annotation 用法
java.lang.annotation.*


1.2.12 JMS
javax.jms.*

1.2.13 JMX
java.lang.management.*
javax.management.*

1.2.14 泛型和继承,泛型和擦除
1.2.15
自动拆箱装箱与字节码
1.2.16
实现 Callback
1.2.17 java.lang.Void
类使用
1.2.18 Java Agent
premain 函数
java.lang.instrument


1.2.19 JUnit 单元测试

1.2.20 Java
实现正则表达式提取一段文本中的电子邮件,并将 @ 替换成 # 输出
java.lang.util.regex.*


1.2.21 学习使用常用的 Java 工具库 commons.lang commons.*

1.2.22
什么是 API SPI

1.3 Java
并发编程

1.3.1
阅读源代码,并学会使用
java.lang.Thread

java.lang.Runnable
java.util.concurrent.Callable
java.util.concurrent.locks.ReentrantLock
java.util.concurrent.locks.ReentrantReadWriteLock
java.util.concurrent.atomic.Atomic

1.3.2 学习使用线程池,自己设计线程池需要注意什么

1.3.3


什么是锁
锁的种类有哪些
每种锁都有什么特点,使用场景,
在并发编程中,锁的意义,是什么

1.3.4 synchronized
的作用是什么, synchronized lock

1.3.5 sleep
wait

1.3.6 wait
notify

1.3.7
写一个死锁的程序

1.3.8
什么是守护线程,守护线程和非守护线程的区别以及用法

1.3.9 volatile
关键字的理解

二,进阶篇

2.1 Java
底层知识

2.1.1
学习了解字节码、 class 文件格式

2.1.2
写一个程序,要求实现 javap 的功能(手工完成,不借助 ASM 等工具)

2.1.3 CPU
缓存 L1 L2 L3 伪共享

2.1.4
什么是尾递归

2.1.5
熟悉位运算 用位运算实现加减乘除取余

2.2
设计模式

2.2.1
实现 AOP 
CGLIB
InvocationHandler 的区别
动态代理模式, Javassist 实现 AOP
ASM
实现 AOP

2.2.2
使用模板方法设计模式和策略设计模式实现 IOC

2.2.3
不用 synchronizeed lock ,实现线程安全的单例模式

2.2.4 nio
reactor 设计模式

2.3
网络编程知识

2.3.1 Java RMI
Socket HttpClient

2.3.2
Java 写一个简单的静态文件的 HTTP 服务器

2.3.3
了解 nginx Apache 服务器的特性,并搭建一个对应的服务器

2.3.4
Java 实现 FTP SMTP 协议

2.3.5
什么是 CDN ,如何实现? DNS 起到什么作用

2.4
框架知识

Spring
SpringMVC ,阅读主要源代码,
ibatis
阅读主要源代码

2.5
应用服务器知识 tomcat

三,高级篇

3.1
编译原理知识
3.1.1
Java 实现以下表达式解析并返回结果
3.1.2
实现对一个 List 通过 DSL 筛选

QList> mapList =new QList>


mapList.add({"name":"hattertest"});

mapList.add({"id":-1,"name":"hattertest"});

mapList.add({"id":0,"name":"hattertest"});

mapList.add({"id":1,"name":"testtest"});

mapList.add({"id":2,"name":"hattertest"});

mapList.add({"id":3,"name":"testhatter"});

mapList.query("id is not null and id>0and name like '%hatter%'");

要求返回列表中匹配的对象,即最后 2 个对象。

3.2
操作系统知识

使用 linux ,熟悉 shell 脚本

3.3
数据存储知识  

3.3.1
关系数据库 MySQL 如何看执行计划,如何搭建; MySQL 主备 binlog 是什么
3.3.2 NoSQL

Redis HBase Bigtable

3.4
大数据知识

3.4.1 Zookeeper
,在 linux 上部署 ZK
3.4.2 Hadoop

3.4.3 分布式日志收集 flume kafka logstash
3.4.4
数据挖掘 mahout

你可能感兴趣的:(java,Linux,eclipse,maven,jvm,java,junit,程序员,设计模式)