学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模型相关
常用框架总得学学吧?
- 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的作用
- 分区分表分库
- 在线数据迁移
非关系型数据库,别问为什么都列两个,对比选型呀
数据库中间件总得了解点吧
- 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入门视频,
新手(没有任何语言基础)推荐视频,比较不容易劝退。
还有一本被誉为神书的《Java编程思想》,内容容易劝退,不建议新手看。
还有《Effective Java》,学会了再看,好奇的话你可以先试试。
Java 并发相关:
- 《Java并发编程实战》
至于并发相关还想看看别的?你先把这本看完了,到时候自然就知道如何学了。
JVM :
- 《深入理解 Java 虚拟机》
同样,如果还想深入,先把这本看完,到时候再深入不迟。
如果想看视频:
- B站宋红康,
如果对垃圾回收感兴趣:
- 《垃圾回收算法手册:自动内存管理的艺术》
- 《垃圾回收的算法与实现》
对了这本也可以看看,Java性能优化相关的:
- 《Java性能优化权威指南》
I/O模型相关:
- c10k问题,
- Doug Lea 老爷子的 Scalable IO in Java,
- 再加一些杂七杂八的博客,自己用用,差不多了。
常用框架和中间件:
- B站Spring视频,
- Spring官网,
- 《Spring揭秘》
- MyBatis官方文档,(中文的应该不会被劝退)
- 《Netty实战》
- 李号双的专栏《深入拆解Tomcat&Jetty》,然后书《深入剖析Tomcat》
一点点前端知识:
- w3cschool,
学学 html、js、css
设计模式与代码整洁:
- 《代码整洁之道》
- 《设计模式之美》
MySQL
如果有你 MySQL 基础,或者说你大学学过数据库的课程,那么《MySQL必知必会》这本书,别去看,虽说很薄,但是太太太基础了….
如果你基本的 SQL 语句都不会,那就去看《MySQL必知必会》
- 《MySQL技术内幕:InnoDB存储引擎》
- 丁奇《MySQL实战45讲》
- 《从根儿上理解mysql》
- 《高性能MySQL(第3版)》
- 《MySQL技术内幕 InnoDB存储引擎》
Redis
- redis官网,
- 《Redis设计与实现》
- 《Redis开发与运维》
- 还有一些配套网站和中文注解源码,我之前文章写过。如何学习Redis
还有很多中间件相关的我就不详细列了
- 统一看看官网
- 书的话,关键字打在豆瓣上搜搜,评分高的就没错。有一些中间件书不多,所以即使评分不高也可以看看,学习学习。
- 配合一些收费实战专栏学习,几十块的那种。
如果上面的都学下来,那么你脑海里应该挺有东西了,所以大头书应该能啃下去了,所以直接啃经典吧。
- 《深入理解计算机系统》
- 《计算机程序的构造和解释》
- 《现代操作系统》
- 《计算机网络:自顶向下》
- 《算法》第四版
算法如果只是为了应付面试,其实看小争哥的专栏就够了《数据结构与算法之美》,然后再配合 LeetCode刷题。
最后
差不多了,有些细节没有展开,只是列出了一些关键点,从这里可以看出,咱们后端要学的和懂得真的是太多了!
有时候懂一个不够,还得环比,这叫选型!
懂的表面不行,不懂原理遇到问题容易懵逼,并且面试很容易被问底层原理,想想咱们真的难!
完了,我自己要被自己劝退了!
学个P的Java!
这篇文章来自:yes的练级攻略公众号
原文链接:
这个博主是个卷王,欢迎去跟该博主卷起来
1.《关于raft攻略我想说学个P的Java》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《关于raft攻略我想说学个P的Java》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.cxvn.com/gl/djyxgl/148148.html