查看原文
其他

学个 P 的Java

是Yes呀 yes的练级攻略 2022-09-04

你好,我是yes。

这篇文章我想从劝退的角度,来拢一波身为一个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 虚拟机》

同样,如果还想深入,先把这本看完,到时候再深入不迟。

如果想看视频:

  • B站宋红康,https://www.bilibili.com/video/BV1PJ411n7xZ

如果对垃圾回收感兴趣

  • 《垃圾回收算法手册:自动内存管理的艺术》
  • 《垃圾回收的算法与实现》

对了这本也可以看看,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刷题。

最后

差不多了,有些细节没有展开,只是列出了一些关键点,从这里可以看出,咱们后端要学的和懂得真的是太多了!

有时候懂一个不够,还得环比,这叫选型!

懂的表面不行,不懂原理遇到问题容易懵逼,并且面试很容易被问底层原理,想想咱们真的难!

完了,我自己要被自己劝退了!

学个P的Java!


我是yes,从一点点到亿点点,我们下篇见。


推荐阅读:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存