一、Java基础一
- 基本集合相关 java.util.*
List : ArrayList LinkedList(盏、队列) Vector Stack
Set : HashSet TreeSet LinkedHashSet(LRU)
Map :HashMap(hash冲突) TreeMap HashTable Properties
LinkedHashMap(LRU)
- 异常体系 java.lang
Throwable Error(严重的异常、错误) Exception(check型) RuntimeException (非check型)
- 泛型(Java语言语法糖)—— 类C++模板,但有本质区别 伪泛型类型擦除 给编译器看
本质是参数化类型的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参 数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。
- 注解 java.lang.annotation
几种元注解 、注解保留时间(source 、class 、runtime) 运行时通过反射获取注解信息
- IO/NIO java.lang java.nio
基本io:InputStream 、outputStream 、Reader 、Writer (应用装饰者模式、适配器模式)
高级io:Chanel 、 Buffer (虚拟机直接内存)、Selector (单线程处理多个 Channel ,Linux select 、poll 的Java API封装) 高性能java服务器基础
- 反射(?使java语言具有动态性) 动态语言or 静态语言
作用: 反编译:.class-->.java
运行时通过反射机制访问java对象的属性,方法,构造方法等;
反射机制中的类:
java.lang.Class
java.lang.reflect.Constructor
java.lang.reflect.Field
java.lang.reflect.Method
java.lang.reflect.Modifier
# 反射、注解 很多框架实现的基础(如SSH ) 程序员面临很多(文本)配置
- 线程 Thread
线程的生命周期、五(六)种基本状态
状态转化条件:涉及的方法 start() 、run() 、wait() 、notify() 、sleep() 、join() LockSupport.park()、LockSupport.unpark()、synchronized关键字等
安全的终止线程:中断 Thread.interupt() 、Thread.isInterupt() ;设置布尔变量
8 网络编程 java.net.*
网络通信底层协议TCP/UDP/IP ;类InetAdress 、Uri 、Url 、针对Http协议的UrlConnection (GET 、POST等) 、类 Socket 和 ServerSocket 类
补充:Java字符串String :字符串常量池
Java正则表达式:
Java装箱和拆箱 :基本数据类型对象区别、什么时候自动装箱和拆箱、对象池equal() 和== 判等
Java对象序列化:Serializable接口、transient关键字、单例对象序列化 serialVersionUID静态常量版本兼容等
java 强引用与软引用: StrongReference (对象具有强引用,那垃圾回收器绝不会回收它)、SoftReference(如果内存不足、就会回收) SoftReference与ReferenceQueue搭配使用实现敏感对象高速缓存
java RMI :
java动态代理:
java ThreadLocal:
二、java基础二
1、Java并发编程 java.util.concurrent.*
Java内存模型:(共享内存并发编程核心问题原子性、可见性、有序性),重排序、Happens-Before规则(记住四条主要的)、volatial语义(对象可见性、语句有序性、变量读写操作原子性)、synchronized锁语义(具有最强的内存同步保证)、final语义 、Volatial读、写语义 和java CAS(compareAndSet)操作是java并发包实现的基础
Java并发集合包:List :CopyOnWriteArrayList (写时复制、无锁并发读)
Set:CopyOnWriteArraySet
Map : ConcurrentHashMap ( 使用锁分段技术提升并发访问率)
阻塞队列:ArrayBlockingQueue 、LinkedBlockingDeque 、PriorityBlockingQueue 等(可用于实现生产者、消费者模型的简单方法)
Java锁 :java.util.concurrent.locks
Lock接口(面向锁使用者)、AbstractQueuedSynchronizer 模板类(面向锁实现者)
两种常用锁ReentrantLock 、ReentrantReadWriteLock 使用以及实现
方便的并发工具类:CountDownLatch、CyclicBarrier 、Semaphore
Java线程池: ThreadPoolExecutor类(参数意义、阻塞队列选择、饱和策略)、Executors几个静态静态工厂方法;向线程池提交任务的实现原理、过程说明;线程池的关闭;合理配置线程池
2、java虚拟机JVM
Java内存区域划分、对象创建与内存布局(new关键字创建后一系列动作)、垃圾收集器(对象判活算法、java堆内存划分、各种垃圾收集器作用区域、参数配置)Java内存泄露内存分析工具Jporfiler jconsole MAT (Eclipse 插件) 虚拟机类加载过程(各阶段功能)、类加载器(双亲委派)双亲委派的打破 与Tomcat中类加载器异同
3、javaee设计模式
设计模式基本原则(结合模式理解)、画常用设计模式类图、常见设计模式的使用条件、解决的问题。结合java jdk 理解常用的设计模式
单例模式常问,java静态内部类单例模式( java.lang.Runtime类)、工厂模式、原型模式(Cloneable接口)、代理模式(java动态代理)、装饰模式( javaio类) 、模板方法模式(AQS 等),等等…………………………..
三、Java web相关一
1、了解些前端东西
基本的BOM 、DOM 、JQuery 、Ajax ,了解浏览器工作原理(后端也得稍微知道些前端的东西,合作联调什么的。。。);还有很多前端框架学学看看用的时候边用边学吧。。。。。。
2、JSP \Servlet、JDBC
Http协议重点理解
数据编码乱码跨域访问问题、Jsp和Servlet区别(实质)、共同点各自适用范围、Servlet 生命周期、单实例?无状态?线程安全问题?转发与重定向区别工作原理、Cookie 以及Session应用范围工作原理 Filter生命周期、Filter链(职责链模式)各种Listener
Servlet 和Filter 重点理解,他们分别是Spring MVC 和 Struts2 框架的入口
JDBC java访问数据库的基石,其他框架如Hibernate等ORM只是更好的封装了Jdbc 、Jdbc如何实现Java程序和JDBC驱动松耦合、如何创建一个JDBC连接、JDBC的DriverManager是用来做什么的、jdbc三种statement各自区别功能 、jdbc中批处理、好处 jdbc事务控制提交回滚隔离级别
3、数据库
一般是Mysql 数据库ACID 、存储引擎MyIsam 和InnoDB区别、存储引擎选择、遵守范式与反范式、InnoDB支持的四种事务隔离级别、索引设计原则、掌握一些Sql优化方式 、Mysql复制(主从备份)原理工作流程binlog格式以及区别、 Innodb聚簇索引 Myisam非聚簇索引原理存储管理数据方式区别(b+树)、Mysql锁问题(在存储引擎、隔离级别、sql语句索引确定情况下,执行sql时数据库加锁情况、死锁分析)、mysql高可用
四、Java web相关二
1、SSH (Spring+Struts+Hibernate)框架-> SSM(Spring+SpringMVC+Mybatis)框架
Struts2 :个人不咋喜欢,太重、太繁琐还有很多问题,SpringMvc更轻,好用完全可以替代
Spring /SpringMVC :什么是IOC 和AOP 带来的好处、IOC容器(屌丝容器-BeanFactory ,牛逼容器-ApplicationContext)实现原理启动流程、Spring中Bean的生命周期、SpringAop几种配置方式实现原理(动态代理、CGLIB)、
SpringMVC应用上下文(Web ApplicationContext容器)在web中的启动与销毁、SpringMVC DispatcherServlet启动与销毁、SpringMVC请求处理流程涉及的mvc框架组件 应用的设计模式
Spring 编程式事务和声明式事务(xml配置事务、注解事务)、事务五边形(隔离级别、传播行为、超时、只读属性、回滚规则)
Hibernate 和Mybatis 这两个数据持久化层的orm框架了解区别 能对其进行spring配置整合 任意学习、了解一个吧。。。
2、web服务器
Tomcat 和Jetty实现Servlet规范的web容器 知道其基本工作原理里面用到些设计模式,了解其服务线程模型能更好的理解servlet运行原理
Jetty 轻量的应用程序级Servlet引擎,有时间看看源码。。
博客文章Tomcat 系统架构与设计模式:
http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/
http://www.ibm.com/developerworks/cn/java/j-lo-tomcat2/
五、Java后台服务化 WEB架构
中间件:
面向对象中间件:java的RMI 、实验室用的ICE
面向消息中间件:java规范JMS 的 ActiveMQ 、RabbitMQ
缓冲:
分布式缓冲:Memcached (一致性Hash算法)、Redis
分布式数据库:
NoSql :Hbase 、MongDB等
负载均衡:
四层: LVS
七层:Nginx(web反向代理、负载均衡)
补充:推介的书籍
《Java核心技术卷1》
《Java数据结构和算法(第二版)》
《Head First设计模式》
《深入理解Java虚拟机:JVM高级特性与最佳实践》
《HotSpot实战》
《JAVA网络编程第4版》
《Java并发编程实战》
《java并发编程的艺术》
《Servlet & JSP学习笔记》
《深入分析Java Web技术内幕》
《MySQL5.6从零开始学》
《高性能MySql》
《Spring实战》
《Spring源码深度解析》
《Spring技术内幕》
《Spring源码深度解析》
《Effective Java中文版》
《深入剖析Tomcat》
《大型网站技术架构核心原理与案例分析》
《大型网站系统与Java中间件实践》