学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入门视频,

新手(没有任何语言基础)推荐视频,比较不容易劝退。

还有一本被誉为神书的《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