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》
《架构即未来》

浙公网安备 33010602011771号