原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

有一天,我去爬山。突然脚一滑,掉下了悬崖。摔的眼冒金星,精神破碎,最终掉到一个山洞中。山洞中央有一个宝盒,打开以后是一本书,细看是一份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的文章,可以技术入门。《这次要是讲不明白Spring Cloud核心组件,那我就白编这故事了》

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: 谢谢。我感觉浑身充满了正能量。

Elder: 看起来你非常的爱学,学完之后每个大厂都会抢着要。但我怕你把所有的内容都公布到xjjdog公众号上。为了避免过度内卷,所以我只留给你个索引,但也不要到处传播。

Me: 我保证,它会躺在我的电脑里,永远不会外泄。

Elder: 很好很好。你来到这里,也算是缘分。我姑且相信你一次...可以放心的去了...

长者在我的面前,突然就化成一道青烟,袅袅而去。

后话。中午午休,梦见了长者。

Elder: 就知道你是一个不能信任的泄密者。这里列出的,是一份时下最流行的知识点,并根据它的分类进行了整理。但其中每一个知识点,都可能耗费你几天的时间。这样吧,如果你想要交流其中的知识,欢迎添加我的微信xjjdog0,一起探讨。

我咂了咂嘴。

是啊。计算机发展到现在,知识点已经如漫天繁星。我们需要做的,就是找到那些大浪淘沙之后的主流技术进行攻破,而不是把美好的青春花费在一些乱七八糟的技术和框架上。

如果你对JAVA项目还是不太了解,欢迎star下面的项目,我会带你啃掉它。

https://github.com/xjjdog/bcmall。它包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3

祝你在学习中能找出技术的本质,能够触类旁通。即使名词的规模再阔上10倍,我们也能瞬间看透它的本质。

作者简介:小姐姐味道  (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:

1. 玩转Linux
2. 什么味道专辑

3. 蓝牙如梦
4. 杀机!
5. 架构师BUG,非比寻常

javaer的目标,是星辰大海!相关推荐

  1. 鸿蒙之光一星辰是什么意思,如果说安卓的目标是太阳,那么鸿蒙的目标就是星辰大海...

    华为开发者大会上,面对安卓断掉华为的问题时,华为消费者业务总裁王成录自信的表示:作为鸿蒙来讲,绝对是利大于弊. 去年的时候,华为推出了第一代鸿蒙系统.当时的鸿蒙1.0是用在鸿蒙智慧屏上面.而在 今年推 ...

  2. 我们的目标是星辰大海

    一:个人介绍 我是一名大二学生,专业也和计算机相关.我希望借助csdn这个平台,记录我成长的点点滴滴. 二:我的编程目标 首先是把C语言和C++学好,其次就是再巩固一下数据结构,数据库.在业余时间再学 ...

  3. 深空探测简介:我们的目标是星辰大海!

    文章目录 导读 深空探测的定义 遇到的问题 国内外研究现状 大行星到小行星 怎么让卫星带有智能 柔性任务 柔性任务的应用 导读 深空探测,听起来遥不可及.不过呢,嫦娥五号的发射,给我们带了点月球上的土 ...

  4. 视频号,张小龙的星辰大海

    阅读本文大概需要 4.1分钟. 前段时间,微信开通了视频号.本想第一时间写一篇文章,分析下视频号.发现理解还不深入,于是这段时间一直在思考视频号对微信的战略意义和它的前景. 思考了接近1个月,想明白了 ...

  5. 【MM32F5270开发板试用】六、如何用 星辰内核 + 国产RTOS 通过I2S播放 “星辰大海”

    本篇文章来自极术社区与灵动组织的MM32F5270开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:Magicoe是攻城狮 这个demo和想法是参考了大神的文章 https://aijish ...

  6. ai中画板脱离绘图区域_AI让您脱离舒适区

    ai中画板脱离绘图区域 So much in our lives is driven by things we cannot explain, why should AI be any differe ...

  7. 如何让一种币更有生命力——一种BCH开发资金募集方案大讨论

    第0章 引言 作者:闪电HSL 最近几天BCH社区异常激励地讨论着在5月19日的一次在香港开的关于募集BCH开发资金主题会议的事,本文主要想写明白这个主题会议上到底发生了什么,尤其是后面几天社区的各种 ...

  8. 为了在全球“买买买”,阿里工程师自研了一套海外HR系统

    "到2036年时,阿里希望服务于20亿用户,实际上成为全球第五大经济体,销售额仅低于美国.中国.日本以及欧洲的国内生产总值(GDP)".去年,马云在阿里巴巴投资者大会上定下了这样一 ...

  9. 大规模微服务利器:eBPF + Kubernetes

    hi, 大家好,微服务,云原生近来大热,在企业积极进行数字化转型,全面提升效率的今天,几乎无人否认云原生代表着云计算的"下一个时代",IT大厂们都不约而同的将其视为未来云应用的发展 ...

最新文章

  1. 计算机科学与技术及应用,计算机科学与技术的应用及发展趋向
  2. 德不配位,势必遭殃!人事斗争,劝你不要参与!
  3. OpenCV--常见图片格式转换与深浅拷贝
  4. c语言switch自动贩卖机,JAVA程式-自动贩卖机SWITCHampCASE.doc
  5. java 顶点着色_Shader笔记_002简单顶点/片元着色器扩展
  6. 在线sitemap链接提取工具
  7. Linux安装Redis3.2.8
  8. CodeForces 617 E. XOR and Favorite Number
  9. python3内存分析_调试和分析 - tracemalloc —- 跟踪内存分配 - 《Python 3.7 标准库》 - 书栈网 · BookStack...
  10. iOS - Analyze 静态分析
  11. C++中的explicit关键字 - 抑制隐式转换(转)
  12. FIND_IN_SET使用场景
  13. Jmeter测试——java测试脚本编写
  14. 2018百度之星程序设计大赛初赛B——1004p1m2
  15. Pytorch训练SSD网络时遇到的问题
  16. android 9指纹认证_Android指纹认证教程
  17. 内网liunx环境升级nginx版本(因为nginx 0.6.x < 1.20.1 1-Byte Memory Overwrite RCE 系统漏洞而升级)
  18. 树莓派(Raspberry Pi)——为树莓派安装系统及常用工具下载地址
  19. NewTek LightWave 3D 2018 破解版
  20. 一款很好用的调试JS的Eclipse插件

热门文章

  1. Linux 禁用笔记本触摸板
  2. 厉害|百度28位离职技术大牛和他们创建的AI公司!
  3. 用微信开发者工具--打开微信小程序weui组件示例
  4. 重启随机游走(RWR)算法
  5. css过长文字自动换行
  6. 单片机中的浮点数转换成串口可打印格式
  7. Android 中在Android studio2.3中 NASA 的World Wind地图应用
  8. ATLAS/ICESAT-2 NASA 数据产品详细介绍及相关说明文档
  9. 行业研究报告-全球与中国电脑机箱风扇市场现状及未来发展趋势
  10. 自制表情包——python合成gif