献给迷茫中的你
我相信很多人都有过自己迷茫期,在开始学习之前会迷茫,会不知道自己要学什么,学这些有什么用;学习之后,学的不扎实,得不到认可,觉得自己白学了;真正找到一份还凑合的工作后,面对重复性的工作,又会不知道自己该如何提升。下面我会根据大多数人的情况,梳理一下程序员的几个段位,以及我们该如何一步步打怪升级,走向人生巅峰。
第一阶段 小白
这个阶段大多是一些计算机相关专业的学生,或者对编程极其感兴趣的人,又或者是培训入坑,被高薪好就业吸引过来的。大家刚刚开始接触编程,有的人会觉得这个东西非常有意思,可以去解放我们人类的劳动,让计算机去帮助我们做一些事情,当屏幕出现“ Hello world!”的时候好像打开了一扇门,进入了一个新的世界;有的人会觉得这个东西很头疼,枯燥乏味,几行代码也只能实现一个“ Hello world!”。在编程的世界里“ Hello world!”的地位极其重要,它得出现意味着我们打开了一项新技术的大门,兴趣是最好的老师,它可以帮我们快速去入门,快速去学习新知识,在第一阶段也是兴趣逐步拉开我们的差距,有的人可能学完之后,依然不知道自己学了什么,有的人学完之后已经初步摸到了初级程序员的门槛,走入了程序员的职业生涯!
第二阶段 初级
薪资:0-15k (以一线城市工资标准参考 1-3年工作经验)
门槛:熟练掌握编程语言(Java、C#、C++、GO...),熟练使用开发框架(SSM、SpringBoot、前端技术、了解微服务架构、多线程、设计模式、数据结构、网络、服务器技术、NIO...)
第三阶段 中级 (编码)
薪资:15k-25k (以一线城市工资标准参考 3年左右工作经验)
门槛:掌握精通各种开发框架、微服务、rpc、熟练使用各种中间件技术、熟悉互联网业务、虚拟化技术、深入了解数据结构和算法、精通,熟练运用设计模式(让项目代码更规范健壮)...
第四阶段 高级 (设计、管理)
薪资:20k-35k (以一线城市工资标准参考 3-5年工作经验 管理)
门槛:产品后端架构设计,带团队、开发落地、新功能开发、参与需求分析,业务规划,详细设计、核心代码、帮团队成员解决技术问题、技术方向、技术选型、招聘(选拔人才)、技术分享、了解大数据、JVM内存管理、调优、精通分布式
第五阶段 架构
薪资:30-60k (以一线城市工资标准参考 5-10年工作经验 管理)
门槛:微服务架构和设计、发现和解决复杂问题、技术难点攻关、人手不足参与编码,优化、重构、高并发、大数据处理经验...
要求:主导过大型高可用,高并发,分布式、自动化(K8s)大型项目经验
第六阶段 CTO
专家级的技术,对产品有深入了解,熟悉行业,熟悉企业管理,能够为公司产品的发展选择方向,管理多条产品线
第七阶段 技术合伙人
让自己不断提高,让自己变得有价值,在机遇到来就可以抓住,最稳妥的一种创业
第八阶段 创业
无薪资,无门槛,无上限
有风险,需谨慎
建议:
在平常的开发中一定不能只注重功能实现,要有技术亮点,不能站在工人的角度去思考,要站在设计师的角度去考虑,要考虑程序的扩展性、可用性、... 要具备工匠精神,踏实做好每一件事,认真面对每一行代码,遵守开发规范,多思考如何优化代码,为什么别人一行代码搞定,而我们自己却搞了一堆代码,多去了解计算机基础知识,原理很重要,数据结构和算法,设计模式都很重要,还有就是编程思想。我们需要一步步提升自己的技术,让自己走向更高的平台,这样我们才能学习到更多知识,多去主动学习,一定避免在初级程序员(CRUD)停留过长时间,用技术水平去规避中年危机!
作为一个开发了十多年的老司机,做开发时间越久,越觉得程序员是一个需要终生学习的行业! 今天,我就用文字加图片的形式带领大家来看看,我们Java程序员,想要进阶架构师,刚刚开始需要掌握哪些技术?还有完整java学习路线、技术栈大纲
路线建议
1.并发编程进阶
虽然搞了这么久Java,可许多朋友一提到“并发”就头疼:
为什么我已经学习了很多相关技术,可还是搞不定并发编程?小公司根本遇不到并发问题,高并发经验该怎么积累?平时该怎么学习?昨天面试又卡在并发问题上了,并发编程难道已经成为大厂必备的敲门砖了吗?
有这些困惑很正常,因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,而这些知识点看上去非常的零散、独立,可实则关联性又比较强,更为考验一个程序员的内功。
并发编程学习资料:
2.JVM性能深度调优
对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。
JVM学习资料:
Netty
Netty 的一个特点就是入门相对比较容易,但是真正掌握并精通是非常困难的,原因有如下几个:
- 涉及的知识面比较广:Netty 作为一个高性能的 NIO 通信框架,涉及到的知识点包括网络通信、多线程编程、序列化和反序列化、异步和同步编程模型、SSL/TLS 安全、内存池、HTTP、MQTT 等各种协议栈,这些知识点在 Java 语言中本身就是难点和重点,如果对这些基础知识掌握不扎实,是很难真正掌握好 Netty 的。
- 调试比较困难:因为大量使用异步编程接口,以及消息处理过程中的各种线程切换,相比于传统同步代码,调试难度比较大。
- 类继承层次比较深,有些代码很晦涩(例如内存池、Reactor 线程模型等),对于初学者而言,通过阅读代码来掌握 Netty 难度还是比较大的。
- 代码规模庞大:目前,Netty 的代码规模已经非常庞大,特别是协议栈部分,提供了对 HTTP/2、MQTT、WebSocket、SMTP 等多种协议的支持,相关代码非常多。如果学习方式不当,抓不住重点,全量阅读 Netty 源码,既耗时又很难吃透,很容易半途而废。
- 资料比较零散,缺乏实践相关的案例:网上各种 Netty 的资料非常多,但是以理论讲解为主,Netty 在各行业中的应用、问题定位技巧以及案例实践方面的资料很少,缺乏系统性的实践总结,也是 Netty 学习的一大痛点。
Netty学习资料:
内容包含基础功能、高级应用、系统架构、源码分析和行业应用,深入阐述了Java I/O 的Netty NIO开发、Netty 编解码开发、Netty多协议开发等各方面的技术要点,包含了对源码的深刻解读,并且对Netty的应用现状和未来趋势进行分析,旨在帮助从业人员提升自我,更快更明确地发展职业道路。本书适合架构师、设计师、软件开发工程师、测试人员和其他对Java NIO框架、Java 通信感兴趣的相关人土阅读,相信通过学习本书,能够熟悉和掌握Netty这一优秀的异步通信框架,实现高可用分布式系统的构建。
深入Tomcat底层
Tomcat作为一款免费的开源应用服务器,凭借技术先进、性能稳定、体积小巧、扩展性好,深受开发人员和软件开发商的认可
想要深入Tomcat底层肯定不是几句话就能讲完的!
Tomcat底层资料分享:
本书试图为读者完整地、系统化地讲解Tomcat,甚至会在开篇简要讲解Tomcat的历史及现状。所有这一一切,都是基于希望读者“知其然,更要知其所以然”的目的出发的。当然,作为读者,你完全可以选择自己感兴趣的部分进行阅读。
Mysql深度优化
数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷
Mysql深度优化学习资料:
本书涵盖了许多复杂的主题。在这里,我们将解释一下是如何将这些主题有序地组织在一起的,以便于阅读和学习。了如何让操作系统和硬件工作得更好。另外也深入讨论了固态硬盘,为高可扩展性应用发挥更好的性能提供了硬件配置的建议。
上面两章都--定程度地涉及了MySQL的内部知识。这将会是-一个反复出现的主题,附录中也会有相关内容可以学习到MySQL的内部是如何实现的,理解了这些知识将帮助读者更好地理解某些现象背后的原理。
架构基础必备Linux
Java程序员也是半个运维了,在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作,这种情况下,想要进阶架构师,不掌握Linux你觉得合适吗?
Linux学习资料
这本书包含了其他任何Linux文档资料中都没有涉及到的主题,本书包括你应该理解的一切,还有怎样安装,怎样使用Linux操作系统。本书包含完整的安装指导教程,系统维护的完整信息、文档开发和编程工具、网络管理的指导原则。
如果说个人能够改变自己命运的话,对于程序员来说,唯有通过不断的学习和实践,努力提升自己的技能,才有可能找到更好的机会,充分发挥和体现自己的价值。我希望我收集到的资料,能为你的成功助一臂之力