Java从屌丝到高富帅

基础篇
JVM
JVM内存结构:堆、栈、方法区、直接内存,堆栈区别

可参考资料:https://www.cnblogs.com/ityouknow/p/5610232.html
Java内存模型:内存可见性、重排性、顺序一致性、volatile、锁、final
垃圾回收:内存分配策略、垃圾回收器(GC)、GC算法、GC参数、对象存活的判定
JVM参数调优
Java类加载器:classLoader、类加载过程
JVM性能监控与故障处理工具:jstack、jconsloe

Java基础知识
Java各变量类型及其方法的使用
Java关键字:transient/instanceof/volatile/synchronized/final/static/const原理及用法
Java集合类和枚举
JavaIO&JavaNIO:bio/nio/aio区别、三种IO的原理和用法、netty
Java反射与Javassist:反射与反射工厂、java.lang.reflect.*
Java序列化:序列化与反序列化、为什么要序列化?序列化底层原理、序列化与单例模式、为什么说不序列化不安全?
注解:元注解、自定义注解、常用注解使用、注解和反射结合
JMS:Java消息服务、JMS消息传送模式
JMX:java.lang.management.*、javax.management.*
泛型:泛型与继承、类型擦除、KTVE、Object含义及泛型各种用法
单元测试:junit、mock
常用Java工具库:commons.lang.*、commons.*、guava-libraries、netty
API&SPI
异常处理
时间处理:时区、时令
编码方式:乱码问题
语法糖:Java中的语法糖(泛型、自动装箱、自动拆箱、foreach、变长参数、内部类、枚举类、断言)原理、解语法糖

Java并发编程
进程、线程
Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、ConcurrentHashMap、Executors

线程池:自己设计线程池、submit()和execute()

线程安全:死锁、死锁排查、Java线程调度、线程安全和内存模型的关系

锁:CAS、乐观锁、悲观锁、数据库锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor、锁优化、锁清除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁

死锁:volatile、happens-before、编译指令重排、CPU指令重排

synchronized:synchronized如何实现的?synchronized和lock之间的关系?不适用synchronized如何实现一个线程安全的实例?

sleep和wait

wait和notify

notify和notifyAll

ThreadLocal

写一个死锁程序

写代码解决生产者和消费者的问题

守护线程:守护线程和非守护线程的区别及用法

 

进阶篇

Java底层知识:字节码、class文件格式、CPU缓存、L1、L2、L3和伪共享、尾递归、位运算

用位运算实现加、减、乘、除、取余

设计模式:了解23种设计模式、会使用常用的设计模式、单例、策略、工厂、适配器、责任链

实现AOP

实现IOC

不用synchronized和lock实现线程安全的单例模式

nio和reaction设计模式

网络编程:TCP、UDP、HTTP、HTTPS等常用协议、三次握手与四次关闭、流量控制和拥塞控制、OSI七层模型、TCP粘包与拆包、http1.0、http1.1、http1.2之间的区别、JAVA RMI、Socket、HttpClient、cookie与session、cookie被禁用如何实现session?

用JAVA写一个简单的静态文件的HTTP服务器:实现客户端缓存功能、支持返回304、实现可并发下载一个文件、使用线程池处理客户端请求、使用nio处理客户端请求、支持简单的rewrite规则、满足开闭原则

了解nginx和apache服务器的特性并搭建一个对应的服务器

用JAVA实现FTP、SMTP协议

进程间通信的方式

什么是SDN?如何实现?

什么是DNS?

反向代理

框架知识

 servlet线程安全问题、servlet中的filter和listener、Hibernate的缓存机制、Hibernate的懒加载、Spring Bean初始化、Spring的AOP原理、自己实现Spring的IOC、SpringMVC、Spring Boot2.0、Spring Boot的starter原理、自己实现一个starter、Spring Security

应用服务器

JBoss、tomcat、jetty、Weblogic

工具

git/SVN、maven/gradle

 

高级篇

新技术

  • Java8:lambda表达式、Stream API
  • Java9:Jigsaw、Jshell、Reactive Streams
  • Java10:局部变量类型推断、G1的并行Full GC、ThreadLocal握手机制
  • Spring5:响应式编程
  • Spring Boot2.0

性能优化

使用单例、使用Future模式、使用线程池、选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存

线上问题分析

  • dump获取:线程dump、内存dump、GC情况
  • dump分析:分析死锁、数据压缩、结果缓存

编写outofmemory、stackoverflow程序

HeapOutMemory、Young OutofMemory、Method OutOfMemory、ConstantPool OutOfMemory、DirectMemory OutOfMemory、StackOutOfMemory、Stack OverFlow

常见问题解决思路

内存溢出、线程死锁、类加载冲突

使用工具解决以下问题,并写出总结

  • 当一个Java程序响应很慢时如何查找问题
  • 当一个Java程序频繁FullGC时如何解决问题
  • 如何查看垃圾回收日志
  • 当一个Java应用发生OutOfMemory时如何解决
  • 如何判断是否死锁
  • 如何判断是否内存泄漏

编译原理知识

  • 编译与反编译
  • Java代码的编译与反编译
  • Java的反编译工具
  • 词法分析、语法分析(LL算法、递归下降算法、LR算法)、语义分析、运行时环境、中间代码、代码生成、代码优先

操作系统知识

  • Linux常用命令
  • 进程同步
  • 缓冲区溢出
  • 分段和分页
  • 虚拟内存与主存

数据库知识

  • MySQL执行引擎
  • MySQL执行计划:如何查看执行计划?如何根据执行计划
  • SQL优化
  • 事物:事物的隔离级别、事物能不能实现锁的功能
  • 数据库锁:行锁、表锁、使用数据库锁实现乐观锁、悲观锁
  • 数据库主备搭建
  • binlog
  • 内存数据库:h2
  • 常用的nosql数据库:redis、memcached
  • 分别使用数据库锁、nosql实现分布式锁
  • 性能优化

数据结构与算法知识

  • 简单的数据结构:栈、队列、链表、数组、哈希表 
  • 树:二叉树、字典树、平衡树、排序树、B树、B+树、R树、多路树、红黑树
  • 排序算法:各种排序算法和时间复杂度、深度优先和广度优先、全排列、贪心算法、KMP算法、Hash算法、海量数据处理

大数据知识

  • Zookeeper:基本概念、常见用法
  • Solr、Lucene、ElasticSerach:在Linux上部署storm、用zookeeper做协调、运行storm hello world,local和remote模式运行调试storm topology
  • Hadoop,离线计算:HDFS、MapReduce
  • 分布式日志收集flume、kafka、logstash
  • 数据挖掘,mahout

网络安全知识

  • 什么是XSS?XSS防御
  • 什么是CSRF?
  • 什么是注入攻击:SQL注入、XML注入、CRLF注入
  • 什么是文件上传漏洞?
  • 加解密:MD5、SHA1、DES、AES、RSA、DSA
  • 什么是DoS攻击和DDoS攻击:memcached为什么可以导致DDoS攻击?什么是反射型DDoS?
  • SSL、TLS、HTTPS
  • 如何通过Hash碰撞进行DoS攻击?
  • 用openssl签一个证书部署到apache或者nginx

 

架构篇

分布式

  •  数据一致性、服务治理、服务降级
  • 分布式事物:2PC、3PC、CAP、BASE、可靠消息最终一致性、最大努力通知、TCC
  • Dubbo:服务注册、服务发现、服务治理
  • 分布式数据库:如何打造一个分布式数据库?什么时候需要分布式数据库?mycat、otter、HBase
  • 分布式文件系统:mfs、fastdfs
  • 分布式缓存:缓存一致性、缓存命中率、缓存冗余

微服务

  • SOA、康威定律
  • ServiceMesh
  • Docker & Kubernets
  • SpringBoot
  • Spring Cloud

高并发

  • 分库分表
  • CDN技术
  • 消息队列:ActiveMQ

监控

  • 监控什么:CPU、内存、磁盘I/O、网络I/O
  • 监控手段:进程监控、语义监控、机器资源监控、数据波动
  • 监控数据采集:日志、埋点
  • Dapper
  • 负载均衡:tomcat负载均衡、nginx负载均衡
  • DNS:DNS原理、DNS设计
  • CDN:数据一致性

 

扩展篇

云计算:IaaS、PaaS、SaaS、虚拟化技术、openstack、Serverlsess

搜索引擎:Solr、Lucene、Nutch、ElasticSearch

权限管理:Shiro

区块链:哈希算法、Merkle树、公钥密码算法、共识算法、Raft协议、Paxos算法与Raft算法、拜占庭问题与算法、消息认证码与数字签名

比特币:挖矿、共识机制、闪电网络、侧链、热点问题、分叉

以太坊

超级账本

人工智能:数学基础、机器学习、人工神经网络、深度学习、应用场景

其他框架:TensorFlow、DeepLearning4J

其他语言:Groovy、Python、Go、NodeJS、Swift、Rust

 

书籍推荐

《深入理解JAVA虚拟机》

《Effective Java》

《深入分析Java Web技术内幕》

《大型网络技术架构》

《代码整洁之道》

《Head First设计模式》

《maven实战》

《区块链原理、设计与应用》

《Java并发编程实战》

《鸟哥的Linux私房菜》

《从Paxos到Zookeeper》

《架构即未来》

 

posted @ 2018-04-24 16:48  小筝  阅读(95)  评论(0)    收藏  举报