javaer的目标,是星辰大海!
Posted 小姐姐味道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaer的目标,是星辰大海!相关的知识,希望对你有一定的参考价值。
有一天,我去爬山。突然脚一滑,掉下了悬崖。摔的眼冒金星,精神破碎,最终掉到一个山洞中。山洞中央有一个宝盒,打开以后是一本书,细看是一份JAVA开发者的秘籍。举目粗观,练此功不需自宫,按部就班就可修成绝世武功。我瞪大眼睛想要深入的时候,从山洞深处走出一位长者(elder)。
Elder: 小伙子,你拿的是JAVA秘籍!
我惊叫着跌倒在地,因为这位长者满脸胡须,但奇怪的是,他的头上没有头发。
Elder: 其实,写代码,做项目,是很容易的,但做好,上规模,高可靠运行,却是另外一个世界。JAVA属于计算机体系中的一环,所以仅就JAVA来说,它所占的比重其实并不是很高。这样问题就大了,因为你要学习数不清的知识,这对于一个对行业不太了解的同学,实在是太难了。但如果你想学,我可以传授给你。
Me: 可我没有时间,看这厚厚的一摞。
Elder: Don't worry!如果你的时间实在有限,被项目压的喘不过气来,也要抽空给自己充电,这是你破茧的机会。好了,不占用你的时间了,接下来是名词大放送。那些绝对需要的知识,我在前面打了星标。我们首先来看看基础。
一、基础知识
1. 数据结构
-
★ 队列 -
★ 栈 -
★ 数组 -
★ 字典 -
图 -
二叉树 -
平衡二叉树 -
★ 红黑树 -
★ B+树 -
LSM数
Me: father,如何学?
Elder: 你工作几年了?
Me: 四年有余。
Elder: 小伙子听我一句劝。工作四年了你还在学这东西不得不说是很失败。数据结构在中国是为应届生准备的,包括下面的算法。你工作中可能很少会有时间刷题,我建议你这部分放一放。还是先看看算法吧。
2. 常用算法
-
★ 排序算法 -
贪心算法 -
动态规划 -
回溯算法 -
剪枝算法 -
图算法 -
★ 冒泡排序 -
★ 快速排序 -
归并排序 -
插入排序 -
选择排序 -
★ 堆排序
书籍
-
《算法导论》 -
《编程之美》 -
《数学之美》
Me: father,如何学?
Elder: 你工作4年了,再学这些东西还是有必要的,但如果你下狠心去学,可能工作就照顾不过来。这样吧,如果你想跳槽进大厂,就适当刷些中等难度的题目。学这东西必须要大把连续的时间,要学会摸鱼才行。
Me: 多谢指教。
Elder: 那我们来看看数据库基础吧。
elder的手轻轻抚上了秘籍,一阵微风愕然吹过,书本已经翻过一片。我瞪大眼睛往上一看,上面写着:mysql。
3. 数据库基础
-
★ InnoDB && MyISAM -
★ 字符集差别 -
★ 索引优化 -
数据库范式 -
★ 事务隔离级别 -
脏读 & 幻读 -
MVCC -
★ 数据库锁
书籍
-
《MySQL技术内幕——InnoDB存储引擎》 -
《高性能MySQL》 -
《高可用MySQL》
Me: father,如何学?
Elder: 这个很重要,可能要伴随你的整个职业生涯。扔掉那些Oracle、DB2之类的吧,DBA们需要这份工作,而你永远无法超越他。搞好搞精MySQL,你后半辈子饭碗不用担心的。
Me: 可我喜欢Postgresql。
Elder: 胡说。再好有什么用!要生态。从鸿蒙开天辟地,到机器人横行的时代,要经历几千年。MySQL目前有如此的地位,不要舍近求远,本末倒置也。
4. 网络基础
-
★ 网络协议TCP/UDP,三次握手四次握手 -
★ HTTP/HTTPS区别 -
网络状态TIME_WAIT/CLOSE_WAIT -
长连接 & 短连接优劣 -
滑动窗口 -
网络参数配置 -
★ 通信模型 -
序列化工具 -
爬虫 -
Netty
书籍
-
《HTTP权威指南》 -
★《TCP/IP详解 卷一》
Me: father,如何学?
Elder: 两个核心TCP和HTTP,搞懂就能横着走了。如果你非要横着飞,可以把Netty给修炼了。
Me: 可以搞爬虫么?
Elder: 这就是我强调基础的重要性。只要搞定了TCP和HTTP,你会自己选择Python写爬虫。但我不建议你入这一样,不要问我为什么,那段岁月不堪回首。
Me: 我听说Shell脚本也很有用,我想快点看操作系统。
5. 操作系统Linux
-
★ CPU、内存、网络、I/O -
★ 进程与线程 -
调度算法 -
★ Shell编程 -
★ 正则表达式 -
★ 日常运维 -
★ Python脚本 -
★ 计算机组成与结构
书籍
-
《UNIX环境高级编程(第3版)》 -
《鸟哥的Linux私房菜》 -
《Linux内核设计与实现》 -
《Linux命令行大全》
Me: father,如何学?
Elder: 操作系统不是shell编程,它是你对冯诺依曼架构的深入理解。就像是扎马步一样,这是基础中的基础。宁可不搞算法,也要搞定它啊。
6. Java基础 (JDK)
-
★ 集合 -
文件操作 -
★ 多线程 -
NIO -
★ 反射 -
★ Lambda -
★ JDBC -
JNDI -
RMI -
JMX -
JMS
书籍
-
★《Effective Java 中文版》 -
《数据结构与算法分析:Java语言描述》
Me: father,这个我熟
Elder: 这就是Java,小小的Java。你所看不到的事情,全部隐藏在API之后。要苦练,没个几年时间这些API是不能完全掌握的。你只需要在IDEA中点一下方法的定义,就可以看到更加深入的内容。去看吧,面对黑漆漆的IDEA窗口,没人知道你在学习。
7. SSM
-
★ IOC -
★ AOP -
★ SpringBoot starter -
★ MyBatis -
★ Tomcat -
日志组件 -
★ GoF设计模式23种 -
UML -
DDD -
★ Restful
书籍
-
★《Head First 设计模式》 -
《Spring揭秘》 -
《SpringBoot揭秘》 -
《MyBatis技术内幕》 -
《深入剖析Tomcat》
Me: father,这就是Java的全部么?
Elder: too simple!navie!虽然这里集中着70~80%的程序员,做着传统的CRUD,但大部分是对toB企业和外包来说的。toC有更广阔的空间。我觉得你的志向应该是星辰大海,而不是SSM。
8. JVM
-
★ 内存模型 -
垃圾回收器G1 -
Class文件结构 -
★ JVM主要参数调优 -
字节码的构成 -
JVM锁的升级 -
★ JMM概念 -
★ 内存泄露排查的支持工具 -
JVM并发 -
JIT
书籍
-
★《深入理解Java虚拟机》
Me: father,学这玩意有啥用?
Elder: 写更高效的代码,进更高层的圈子。上能进行代码优化,下能进行故障排查。不学难以成闭环,学了活多干不完。
Me: 懂了,我以后要注意隐藏自己的锋芒。
9. 并发编程
-
★ 线程安全的概念 -
★ 线程池的配置参数 -
AQS底层原理 -
★ 锁的类型和用法 -
★ 悲观锁和乐观锁的区别 -
★ 公平锁和非公平锁的区别 -
★ Concurrent工具包用法 -
无锁队列的概念和用法 -
多线程的ABA问题 -
多线程的伪共享问题 -
★ 线程死锁原因和发生条件
书籍
-
《Java核心技术系列:Java多线程编程核心技术》 -
《Java性能权威指南》 -
《Java并发编程实战》
Me: father,这工作中几乎用不到!
Elder: 那是你在做初级程序员的活儿。多线程并发无处不在,经过Doug Lea
的发扬光大,Java在多线程方面的优势实在是太明显了。你用的那些框架、容器什么的,里面全部是多线程,有N多的参数需要调整。
Me: 那就是调参师对吧。
**Elder:**你要非这么说,大数据、人工智能、k8s,哪个不是呢?
10. 性能优化 & 故障排查
-
内核参数调优 -
★ JVM调优 -
★ 网络参数调优 -
★ 事务优化 -
★ 数据库优化 -
★ 池化处理 -
★ 内存溢出排查 -
堆外内存排查 -
★ 网络问题排查 -
★ I/O问题排查 -
★ 高负载问题排查 -
流量录制
书籍
-
《性能之巅:洞悉系统、企业与云计算》 -
《高性能Linux服务器构建实战》
Me: father,如何学?
Elder: 这里属于一些综合技能。在你掌握了基础的基础上,进行的经验性总结,其实就是你脑子里正确的ifelse。放手去搞吧,每个公司的救火队,人手都不够。积极的没有能力,有能力的不积极。如果你积极又有能力...
Me: 那就会累死。
Elder: 世风日下啊,年轻人要学会承担。
二、Java进阶
1. 缓存Redis
-
★ String -
★ Hash -
★ List -
★ Set -
★ Zset -
其他 -
★ 集群高可用方案 -
★ 千万级排行榜方案 -
★ 分布式锁方案 -
★ 限流方案 -
★ 缓存同步问题 -
★ Redis使用规范
书籍
-
《Redis实战 》 -
《Redis开发与运维》 -
《Redis设计与实现》
Me: father,如何学?
Elder: 缓存发展到现在,已经到了不得不学的时候了。Redis就那么几种常见的数据结构,你就是抠它的源码,也把它抠烂了。把常用的场景Hold住,就算通关了。
2. 消息队列
-
ActiveMQ -
RabbitMQ -
★ Kafka -
★ 消息可靠性的保证 -
★ 事务消息保证 -
监控
Me: father,如何学?
Elder: 在中国,学Kafka、学RocketMQ,不要学什么AMQ、Rabbit,那些东西很古老,使用范围也小,你会学起来很痛苦。找个吞吐量大的MQ,解决宕机的风险,你的生活会非常美妙。
3. 微服务
-
★ SpringCloud -
Dubbo -
★ 注册中心 -
★ 网关 -
★ Feign rpc -
★ 熔断&限流使用场景 -
★ 负载均衡 -
灰度测试 -
★ 日志收集ELKB -
监控报警 -
★ 调用链 -
★ 配置中心 -
★ Job系统
书籍
-
《可伸缩服务架构:框架与中间件》 -
《Spring Cloud与Docker微服务架构实战》 -
《架构修炼之道》
Me: father,如何学?
Elder: 微服务这么火,不学都不好意说自己搞过it,可惜的是很多人没有条件实践。微服务与其说是一项技术,不如说是一种思想,一种权衡的艺术。算了,我这么说你也不懂,事必躬亲才有痛的感悟。反正内容都给你列这了。
Me: 我以前看过一篇xjjdog的文章,可以技术入门。
Elder: 你牛!不过我要来点重量级的了。
4. 分布式系统
-
CAP/BASE -
★ Raft协议 -
Paxos协议 -
Gossip协议 -
Zookeeper和Zab协议 -
★ 两阶段提交 -
★ TCC -
分布式要素:分片和副本 -
Quorum/NWR -
★ 幂等处理 -
一致性Hash -
★ 分布式ID生成器 & 雪花算法
书籍
-
《NoSQL精粹》 -
《ZooKeeper:分布式过程协同技术详解》 -
《从Paxos到Zookeeper分布式一致性原理与实践》
Me: father,如何学?
Elder: 我列在这里,并不代表你就要学。说实话,这些东西也算是一些总结的方法论,有些协议代表着时代的前沿。但放眼全国,又有几个人搞这个呢?
Me: 那学了何用?
Elder: 分布式环境处理的问题比单机要复杂上千万倍。当你几百台机器以下当然觉得没用,但等到上万、几十万台,你就不会这么说了。
Me: 大厂的敲门砖,专业人才的筛选项吧。
Elder: 然!
三、系统支撑
1. 基本运维
-
★ Ansiable -
虚拟化 -
★ 容器Docker -
自动化脚本 -
★ CI/CD -
监控系统 -
★ Devops -
流程规范 -
成本管理 -
★ nginx -
★ K8s
书籍
-
《奔跑吧Ansible》 -
《Docker——容器与容器云》 -
《Kubernetes权威指南》 -
《Jenkins权威指南》 -
《深入理解Nginx》
Me: father,如何学?
Elder: 小公司看开发,大公司拼运维。这些都是运维工具,大规模场景下价值凸显。即使你是几百台机器的规模,也能受益良多。学吧,这代表着先进的生产力。
2. 安全
-
★ Spring Sercurity -
★ SSO -
SQL注入 -
XSS & CSRF -
DDoS -
加密解密 -
证书体系 -
网络隔离及工具 -
★ OAuth2
Me: father,如何学?
Elder: 安全是非常重要的,但一般人都是等到出问题再去补。企业总是要交一些这样的学费的,感谢世界的黑暗面,让安全工程师有饭吃。不管如何,基本的素养还是要有的,不知道哪一天,你就会别别人攻击!
秘籍终于合上了,我也长长的舒了一口气。
Me: 谢谢。我感觉浑身充满了正能量。
Me: 我保证,它会躺在我的电脑里,永远不会外泄。
Elder: 很好很好。你来到这里,也算是缘分。我姑且相信你一次...可以放心的去了...
长者在我的面前,突然就化成一道青烟,袅袅而去。
后话。中午午休,梦见了长者。
Elder: 就知道你是一个不能信任的泄密者。这里列出的,是一份时下最流行的知识点,并根据它的分类进行了整理。但其中每一个知识点,都可能耗费你几天的时间。这样吧,如果你想要交流其中的知识,欢迎添加我的微信xjjdog0
,一起探讨。
我咂了咂嘴。
是啊。计算机发展到现在,知识点已经如漫天繁星。我们需要做的,就是找到那些大浪淘沙之后的主流技术进行攻破,而不是把美好的青春花费在一些乱七八糟的技术和框架上。
如果你对JAVA项目还是不太了解,欢迎star下面的项目,我会带你啃掉它。
https://github.com/xjjdog/bcmall。它包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot
+JPA
+Mybatis-plus
+Antd
+Vue3
。
祝你在学习中能找出技术的本质,能够触类旁通。即使名词的规模再阔上10倍,我们也能瞬间看透它的本质。
推荐阅读:
3.
4.
5.
以上是关于javaer的目标,是星辰大海!的主要内容,如果未能解决你的问题,请参考以下文章