这篇文章我想从劝退的角度,来拢一波身为一个Javaer不管是从工作还是面试都需要掌握的一些要点。
从初学者到老油条的节奏来写,来看看会不会被劝退吧!随便推荐一些相关的资料。
学 Java 都要学些啥呢?
Java 基础学了没?
什么基本数据类型、操作符、控制语句等基本语法就不说了。
一些特性搞明白了嘛?
面向对象和面向过程
反射与代理
接口与继承
泛型
异常处理
注解
…
常用类库用的溜嘛?
文件I/O操作
时间日期操作
字符串操作
集合类熟不熟?
List、ArrayList、LinkedList
Set、HashSet、TreeSet、LinkedHashSet
Queue、PriorityQueue
Map、HashMap、HashTable、LinkedHashMap、TreeMap
并发相关熟不熟?
Java内存模型 线程的几个状态及转换 线程池原理
join、wait、notify、notifyAll
Thread、Runnable
Callable Executors
FutureTask、 ForkJoin
synchronized、ReentrantLock、
ReentrantReadWriteLock
ConcurrentHashMap、
ConcurrentSkipListMap
CopyOnWriteArrayList
ArrayBlockingQueue
LinkedBlockingDeque、
DelayQueue、PriorityBlockingQueue
LinkedTransferQueue
SynchronousQueue
CyclicBarrier、Semaphore
StampedLock、 CountDownLatch
Atomicxxxx、LongAdder、
LongAccumulator CompletableFuture
怎么这么多类?平常有些很少用到,就怕面试问到。之所以列了这么多,就是让你重视一下!
JVM 得了解一下吧?
内存的划分
几种引用类型的区别
几种垃圾收集算法
垃圾收集器:CMS、G1、ZGC等
GC如何调优
类加载机制
一些I/O模型相关
C10k问题
BIO、NIO、AIO
select、poll、epoll
Reactor、Proactor
常用框架总得学学吧?
Spring、SpringBoot
Mybatis、Hibernate
Netty
JavaWeb 相关
Servlet、JSP、模板
Html、CSS、JS 简单的也得懂点吧?
浏览器也得懂点吧?
Tomcat、Jetty
顺带学下 Nginx、CDN等
这个阶段好像感觉自己有点东西了,回头看看你的代码吧!
代码设计
单一、开闭、里氏替换、接口分离、依赖倒置、最小依赖、Kiss原则
23种设计模式
代码整洁之道
对了,数据库整明白了没?
Mysql
啥 groupby、having 之类的基本语法就不说了
几个范式
独立完成数据库设计
ACID事务、MVCC
整体架构
SQL 处理流程
几个引擎对比
索引结构和使用
看懂 explain、调优 SQL
读写分离、主从同步原理
binlog、redolog、undolog的作用
分区分表分库
在线数据迁移
非关系型数据库,别问为什么都列两个,对比选型呀
Redis、Memcached
MongoDB、CouchDB
HBase、Cassandra
InfoGrid, Neo4j
数据库中间件总得了解点吧
Mycat、ShardingSphere、cannal等
消息队列不可或缺
RocketMQ、Kafka、RabbitMQ
好像还不够,分布式相关了解一下啊
CAP、BASE
Dubbo、SpringCloud、gRpc
ZooKeeper、Eureka、Consul、Nacos
API网关:zuul、Openresty、Kong
Zipkin、Pinpoint、SkyWalking、CAT
分布式存储、分布式计算、流计算…
Paxos、Raft、ZAB、Gossip
TCC、2pc、3pc等分布式事务
这时候或者更早之前你就感觉你需要完整的巩固一遍基础,当然如果你大学是科班出身,而且认真上课了,应该不太需要
计算机组成原理
操作系统
计算机网络
数据结构与算法
编译原理
这些详细我的就不展开了,有点多。
还有容器相关 docker、k8s ,还有大数据(选修吧)
所以,还想学 Java 呢?
那就来看看到底要看哪些书和视频
这里的推荐基本上每份一样,我怕你有选择恐惧症,只给你一个选择。
Java 基础:
《Java 核心技术卷 I》
《Java 核心技术卷 II》
如果你想看点轻松点入门的
《Head First Java》
如果看不进书,那去看视频吧
B站的Java入门视频,https://www.bilibili.com/video/BV1Kb411W75N
新手(没有任何语言基础)推荐视频,比较不容易劝退。
还有一本被誉为神书的《Java编程思想》,内容容易劝退,不建议新手看。
还有《Effective Java》,学会了再看,好奇的话你可以先试试。
Java 并发相关:
《Java并发编程实战》图片
至于并发相关还想看看别的?你先把这本看完了,到时候自然就知道如何学了。
JVM :
《深入理解 Java 虚拟机》
同样,如果还想深入,先把这本看完,到时候再深入不迟。
如果对垃圾回收感兴趣:
《垃圾回收算法手册:自动内存管理的艺术》
《垃圾回收的算法与实现》
对了这本也可以看看,Java性能优化相关的:
《Java性能优化权威指南》
I/O模型相关:
- c10k问题,http://www.kegel.com/c10k.html Doug Lea 老爷子的 Scalable IO in
Java,http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf
再加一些杂七杂八的博客,自己用用,差不多了。 常用框架和中间件:
B站Spring视频,https://www.bilibili.com/video/BV1Vf4y127N5
Spring官网,https://spring.io/ 《Spring揭秘》
MyBatis官方文档,https://mybatis.org/mybatis-3/zh/index.html(中文的应该不会被劝退)
《Netty实战》 李号双的专栏《深入拆解Tomcat&Jetty》,然后书《深入剖析Tomcat》
一点点前端知识:
- w3cschool,https://www.w3cschool.cn 学学 html、js、css 设计模式与代码整洁: 《代码整洁之道》
《设计模式之美》
MySQL
- 如果有你 MySQL 基础,或者说你大学学过数据库的课程,那么《MySQL必知必会》这本书,别去看,虽说很薄,但是太太太基础了…
如果你基本的 SQL 语句都不会,那就去看《MySQL必知必会》 《MySQL技术内幕:InnoDB存储引擎》
丁奇《MySQL实战45讲》 《从根儿上理解mysql》 《高性能MySQL(第3版)》 《MySQL技术内幕 InnoDB存储引擎》
Redis
- redis官网,https://redis.io/ 《Redis设计与实现》 《Redis开发与运维》
还有一些配套网站和中文注解源码,我之前文章写过。 如何学习Redis
还有很多中间件相关的我就不详细列了
- 统一看看官网 书的话,关键字打在豆瓣上搜搜,评分高的就没错。有一些中间件书不多,所以即使评分不高也可以看看,学习学习。
配合一些收费实战专栏学习,几十块的那种。 如果上面的都学下来,那么你脑海里应该挺有东西了,所以大头书应该能啃下去了,所以直接啃经典吧。
《深入理解计算机系统》 《计算机程序的构造和解释》 《现代操作系统》 《计算机网络:自顶向下》 《算法》第四版
算法如果只是为了应付面试,其实看小争哥的专栏就够了《数据结构与算法之美》,然后再配合 LeetCode刷题。
V:gdhlw2021
q裙:931286725