很多年以前,我拿着 2000 的月薪入职了一家电商创业公司,整个公司只有一个会画饼的老板和啥也不会的我。
一切都是从零开始。
入职第一天,老板说我们首先需要一个网页。
于是我现学现卖了 HTML、CSS、JavaScript,做出来的界面大概是这样的 ⬇️
老板说你这个也太丑陋了,有没有现成的框架可以快速开发的?
于是我又学习了 JQuery、Bootstrap 美化了一下网页,老板很是满意。
第二天,老板说我们这个网页需要一些动态数据,不能写死在前端,太孬了,于是我又了解了前后端分离,学习了 Spring、SpringBoot、MyBatis、MySQL、Maven、Tomcat、Ajax、Json 等。
老板看工作量有些大,于是招了一个新员工,他开发完了功能然后交给我进行整合,所以每天不是我在 copy 他的代码就是他在 copy 我的代码,老板说很显然我们需要一个项目管理工具了,于是我们用上了 Git。
很好,解决了每天 copy 的问题,花了一两个月我俩沟通协作非常 nice,网站搭建得差不多了,
但很快新的问题又随之出现,就是每天代码上线打包的步骤实在太过繁琐并且占用时间,要是能有一套自动化的打包构建工具就好了,于是我又学习了 Docker、Jenkins。
这样,一个完整的项目开发管理框架就被构建起来了,项目很快完成了上线。
老板又说,为了上线后能够保障网站正常运行,迅速捕捉到出问题的地方,我们需要给网站搭建一套监控和日志系统,于是我又去学了 Log4j、Logback、Prometheus、Grafana、ElasticSearch、Kibana。
随着网站用户的不断增加,通过监控系统我们发现有几个服务的压力正在不断增加,随时可能宕机,于是老板又买了几台服务器,让我们想一想怎么能够缓解服务器的压力,于是我们引入了 Nginx 做负载均衡,MyCat 和 ShardingSphere 做分库分表,Redis 缓存一些热门商品的信息。就这样,服务压力下去了,网站又开始稳定运行了。
一天,老板说能不能做一个订单状态的变更,将变更消息通知给用户,于是我又在 RabbitMQ、Kafka、RocketMQ 等消息队列中做了选型并选择了一个最合适的技术栈。
又一天,老板竟然说要重构,现在流行分布式微服务,我们也来重构下吧???
于是苦逼的我们又 TM 学习了 SpringCloud 微服务框架,以及 Dubbo、Zookeeper、Netty、Nacos、Sentinel、Feign、Gateway 等一大堆分布式组件。
顶着巨大的压力将网站重构完成并实现了高性能运转,公司业绩也随之节节攀登,老板非常高兴,每天数钱数到手软,于是顺势招聘了很多的年轻人,我非常欣慰,并教给这些年轻人学习和架构的经验。
直到有一天,我发现业务似乎遇到了瓶颈,用户增长基本停滞,并且市面上出现了很多跟我们差不多的网站和 APP,除了 UI 有些许不同,功能几乎一模一样,并且价格还更低,开始疯狂内卷,打价格战掠夺用户,并且为了让农村劳动人民也用上他们的网站和 APP,将其取名为 ”下沉市场“,开始针对性地投放和开发,分蛋糕的人越来越多,大部分公司的效益都开始持续走低,于是顺理成章地广发裁员信了......
于是我又得重新开始面试了,却突然发现怎么现在面试 N 年前完全不一样了???怎么现在又是计算机网络又是操作系统,底层问题问了一大堆,全是原理性问题,我完全不会啊,还要出几根柱子接雨水这种我完全看不懂的问题让我写出代码,一面完了还有二面三面四面,我直接懵逼了,受不了了。
再回首程序员的生涯,我发现每天都在被技术和莫须有的业务牵着鼻子走,每天都在焦虑,每天都在被迫学习新的技术,每天都在处理着各种各样乱七八糟的 Bug,生涯末期我才发现这些似乎并没有产生太多的价值和意义。
全剧终。
话说回来,玩笑归玩笑身为新时代农民工,程序员们除了完成自己的本分工作以外,一定要抽出时间去提升自己的技术。近日,阿里又迎来一里程碑,首推Java架构技术成长笔记,理论与实战兼备,被业内评级“钻石级”,可以说是程序员必备!
下文内容主要是写这份《Java技术成长笔记》的主要提纲内容,提纲内容包括Xmind思维图+实战文档+面试礼包,需要下载完成版的朋友,文末有获取方式
一、架构筑基必备技能
1.并发编程进阶:线程共享和协作+并发工具类实战+站在巨人肩上操作CAS+阿里面试常问的显式锁和AQS+并发容器源码解析及应用实战+仅会用线程池是不够的+架构师应该知道的并发安全解决方案+性能优化实战+并发编程面试题目汇集
2.JVM性能深度调优:15种方式编写高效优雅Java程序实战+Java内存区域深入剖析+垃圾回收器和内存分配策略+你必须知道的JVM执行子系统+JVM的类加载机制及执行引擎原理+JVM性能优化实战+JVM面试锦囊妙计
3.网络编程与高效IO:http/tcp/udp网络协议原理透析+原生JDK网络编程+Netty应用快速入门+Netty粘包/半包问题解决实战+Netty进阶和实战+Netty源码深入分析+Netty常被问到的那些面试题汇集
4.深入Tomcat底层:10分钟熟悉Tomcat体系架构+Tomcat容器及运用机制+Tomcat核心组件源码解读+Tomcat高级进阶+Tomcat面试题整理
5.MySQL深度优化:Mysql存储引擎选型及注意事项+解读Mysql的共享锁及排它锁+Mysql事务及隔离性级别+30分钟深入掌握执行计划+解读BTree与B+Tree索引+Sql慢查询配置及分析+Sql优化策略及实战+Mysql面试题汇总
6.架构筑基必备Linux:Linux安装指南+Linux基础命令+用户与用户组系列操作+文件与权限系列操作+架构师应该掌握的shell脚本基础
二、设计思想解读开源框架
1.六大原则:单一职责原+开闭原则+里氏替换原则+依赖倒置原则+接口隔离原则+迪米特法则
2.结构型模式:桥接模式+适配器模式+装饰器模式+代理模式+组合模式
3.创建型模式:建造者模式+单例模式+抽象工厂模式+工厂方法模式+静态工厂模式
4.行为型模式:模板方法模式+策略模式+观察者模式+责任链模式+命令模式+访问者模式
5.Spring5源码解读:5分钟快速理解Spring核心流程+熟练掌握Spring工作常用注解及陷阱+后置处理源码解读+IOC容器源码解读+AOP源码解读+声明式事务源码解读+Spring源码面试题汇总
6.SpringMVC框架源码解读:Servlet3.0+性能实战+手写SpringMVC实战
7.MyBatis框架源码解读:5分钟掌握MyBatis的配置使用+动态SQL、缓存及关联查询深入讲解+10分钟掌握Mybatis与Spring的集成实战+Mybatis插件开发及源码分析实战+多级关联实战+手写MyBatis框架实战+Mybatis常见面试题汇集
三、高效存储让项目性能起飞
1.Redis:5分钟搞定Linux下Redis安装+String、List、Hash、Set、Zset类型使用场景+时间轴、队列应用场景设计实战+购物车开发与设计实战+Redis与Lua模拟抢红包实战+网站投票设计与开发实战+Lua+Redis联合开发指南+Redis慢操作优化+Redis哨兵机制及底层机制分析+10分钟搭建Redis高可用集群实战+动态扩容、缩减集群节点实战+Redis常见面试题汇总
2.缓存解决方案实战:15分钟掌握项目中SpringCache的用法+缓存的一致性策略(更新及失效处理机制)+缓存雪崩解决方案+缓存穿透方案
3.mongoDB:Mongodb使用场景分析+20分钟玩转增删改查+MongoDB开发时你应该注意的事项+安全设置及存储引擎分析指南+性能调优与索引实战+复制架构解析实战+MongoDB分区实战
4.MySQL高可用:Mysql主从复制、读写分离高可用方案实战+Mysql、Keepalived实现双主高可用方案实战+Mysql实现分库分表高性能解决方案实战
5.Mycat:Mycat简介及用途+基于Mycat实现Mysql读写分离实战+基于Mycat实现数据库切分实战+全局表、ER表、分片机制分析
6.Sharding-Sphere:Sharding-JDBC+Sharding-Proxy
7.Fastdfs:文件存储实战+文件同步实战+文件查询实战+分布式部署实战
四、分布式拓展到微服务架构
1.从RPC开始:服务注册与发布+动态代理+序列化与反射+手写RPC框架实战
2.DUBBO:10分钟学会Dubbo使用+项目之间的依赖划分实战+传统项目拆解分布式实战+Dubbo spi 扩展实战+Dubbo源码深度解读+Dubbo面试题指南
3.Spring Boot:SpringBoot快速入门+核心组件分析+性能优化+jta+atomikos分布式事务+SpringBoot核心源码解读+手写SpringBoot实战+SpringBoot面试汇总
4.Spirng Cloud Netflix:Zuul路由网关详解及源码探析+Ribbon客户端负载均衡原理与算法详解+Feign声明式服务调用方式实现+Hystrix服务熔断及服务降级实战+Eureka注册中心构件分析+Config配置服务中心与svn、git快速集成+BUS消息总线技术+Sleuth调用链路跟踪+Stream消息驱动的微服务+SpringCloud面试题目汇总
5.Spring Cloud Alibaba:Nacos+SkyWalking+Sentinel限流+Seata分布式事务
6.Docker:5分搞懂定Docker安装与使用+Docker的基础操作+Docker File快速进阶+Docker网络与存储那些事+DockerCompose高阶用法+微服务与Docker集成实现动态扩容实战
7.K8S(Kubernetes):Kubernetes简介及安装配置+Kubernetes核心原理+Kubernetes集群管理方案实战
8.Service Mesh:10分钟快速入门与介绍+核心组件解析+如何用Helm部署Istio+快速解析Istio的常用功能+Mixer适配器的应用+http流量管理实战+Istio的安全加固实战
五、性能直线提升
1.分布式架构思维:大型互联网架构演进过程+架构师应具备的分布式知识+主流分布式架构设计详解
2.ZooKeeper:5分钟搞定Zookeeper安装及指令解析+原生客户端、zkclient、curotor快速开发实战+Zookeeper应用实战+Zookeeper底层协议解读+Zookeeper面试资料整理
3.Nginx:5分钟将你的项目实现Nginx分流+Nginx安装及基本使用+Nginx进程模型及配置详解+location规则及rewrite解析+动静分离实战+反向代理实战+跨域配置实战+缓存配置及Gzip配置实战+https安全认证实战+LVS高可用实战+Nginx那些面试题汇总
4.消息中间件概述:消息中间件和RPC的区别+消息中间件使用场景介绍+ActiveMQ、RabbitMQ、RocketMQ、Kafka对比+消息中间件的编年史
5.ActiveMQ:3分钟快速安装ActiveMQ+JMS规范解读+原生ActiveMQ的API编程+ActiveMQ高级特性和用法+限时订单实战+用户注册的异步处理实战+企业级高可用集群部署实战
6.RabbitMQ:Linux下安装与配置+消息发布与消费权衡+消息的拒绝怎么解决+控制队列与消息属性+与Spring集成完成应用解耦实战+集群化与镜像队列实战+RabbitMQ常见面试题汇总
7.RocketMQ:RocketMQ快速安装与配置+消息发送与消费流程解读+RocketMQ消息存储、消息过滤及事务消息+RocketMQ高可用实战+整体Spring完成用户注册的异步处理实战+整合Spring完成限时订单实战+RocketMQ面试题汇集
8.Kafka:Kafka快速安装部署+开启Kafka的集群模式+Kafka的生产者和消费者+Kafka高级特性解读+Kafka处理请求的内部机制剖析+整合Spring完成削峰填谷实战+Kafka面试题汇集
9.elastic:ElasticSearch+Logstash+Kibana+ELK常见面试题汇总
六、分布式方案团队协作工具
1.分布式事务解决方案:事务与锁+标准分布式事务+两阶段提交+BASE理论与柔性事务+TCC方案+补偿性方案+异步确保型与最大努力型
2.单点登陆方案:单点登陆的问题背景+页面跨域问题+Session跨域共享方案+session的扩展
3.分布式任务调度方案:Quartz调度的用法+Elastic-Job示例+分布式调度的疑难点+Quartz集群定制化分布式调度
4.maven:安装和配置+使用入门+坐标和依赖+聚合与继承+生命周期与插件+仓库及版本管理+私服-Nexus+手写Maven插件实战
5.Jenkins:Jenkins远程测试+Jenkins持续部署+Jenkins自动部署+Jenkins分布式构建+Jenkins管理+Jekins安装
6.Git:与SVN对比+基本运作流程+Git常用操作及问题处理
七、架构师应该具备的职场软技能
作为一名架构师,扎实的技术能力是根本,但只懂技术是完全不够的,还应该具备一定的职场软技能,这包括两个方面:
1.自我修养
作为一名架构师,首先要对自己有一个清晰的认知,所谓的自我修养,是要清晰自己的职业发展情况,要了解自己现状以及未来的定位,要清楚自己已经不单单只是一名程序员了,要懂得传播价值了。
2.项目管理
架构师,在一个项目当中,除了要具备开发能力以外,还要对项目进行一定的管理,要提升自己在管理方面的能力,懂得在项目中操盘全局,共同努力。
八、Alibaba面试通关秘籍
1.Alibaba面试通关手册:
-
面试经验技巧篇:面试官箴言+面试心得交流+企业面试攻略
-
面试技术攻克篇:Java基础知识+Java Web+数据库原理+设计模式+数据结构与算法+海量数据处理+源码解读等
总结
每个程序员心中都有一个大厂梦,无论是阿里还是腾讯,对于程序员的技术要求都是比较高的,抛开学历不谈,你的技术水平是否达到了阿里的标准和要求?如果你与其他同行存在着较大的技术差距,而且还没有改变现状的想法,那么被市场所淘汰,只是时间问题。
所以,不管你是否想要进入大厂,或是想要拥有一份满意的薪资,都需要认真对待自己。以上这份Java技术成长笔记,我可以免费提供给你,希望在我帮助你的同时,你自己也主动帮助自己。
Java技术成长笔记在线获取:点击下方小卡片即可~