写点什么

深度解析 Java 程序员从入行到被裁全过程

  • 2023-06-09
    湖南
  • 本文字数:5077 字

    阅读完需:约 17 分钟

深度解析Java程序员从入行到被裁全过程

很多年以前,我拿着 2000 的月薪入职了一家电商创业公司,整个公司只有一个会画饼的老板和啥也不会的我。

一切都是从零开始。

入职第一天,老板说我们首先需要一个网页。

于是我现学现卖了 HTMLCSSJavaScript,做出来的界面大概是这样的 ⬇️

老板说你这个也太丑陋了,有没有现成的框架可以快速开发的?

于是我又学习了 JQueryBootstrap 美化了一下网页,老板很是满意。

第二天,老板说我们这个网页需要一些动态数据,不能写死在前端,太孬了,于是我又了解了前后端分离,学习了 SpringSpringBootMyBatisMySQLMavenTomcatAjaxJson 等。

老板看工作量有些大,于是招了一个新员工,他开发完了功能然后交给我进行整合,所以每天不是我在 copy 他的代码就是他在 copy 我的代码,老板说很显然我们需要一个项目管理工具了,于是我们用上了 Git

很好,解决了每天 copy 的问题,花了一两个月我俩沟通协作非常 nice,网站搭建得差不多了,

但很快新的问题又随之出现,就是每天代码上线打包的步骤实在太过繁琐并且占用时间,要是能有一套自动化的打包构建工具就好了,于是我又学习了 DockerJenkins

这样,一个完整的项目开发管理框架就被构建起来了,项目很快完成了上线。

老板又说,为了上线后能够保障网站正常运行,迅速捕捉到出问题的地方,我们需要给网站搭建一套监控和日志系统,于是我又去学了 Log4jLogbackPrometheusGrafanaElasticSearchKibana

随着网站用户的不断增加,通过监控系统我们发现有几个服务的压力正在不断增加,随时可能宕机,于是老板又买了几台服务器,让我们想一想怎么能够缓解服务器的压力,于是我们引入了 Nginx 做负载均衡MyCat 和 ShardingSphere 做分库分表Redis 缓存一些热门商品的信息。就这样,服务压力下去了,网站又开始稳定运行了。

一天,老板说能不能做一个订单状态的变更,将变更消息通知给用户,于是我又在 RabbitMQKafkaRocketMQ 等消息队列中做了选型并选择了一个最合适的技术栈。

又一天,老板竟然说要重构,现在流行分布式微服务,我们也来重构下吧???

于是苦逼的我们又 TM 学习了 SpringCloud 微服务框架,以及 DubboZookeeperNettyNacosSentinelFeignGateway 等一大堆分布式组件。

顶着巨大的压力将网站重构完成并实现了高性能运转,公司业绩也随之节节攀登,老板非常高兴,每天数钱数到手软,于是顺势招聘了很多的年轻人,我非常欣慰,并教给这些年轻人学习和架构的经验。

直到有一天,我发现业务似乎遇到了瓶颈,用户增长基本停滞,并且市面上出现了很多跟我们差不多的网站和 APP,除了 UI 有些许不同,功能几乎一模一样,并且价格还更低,开始疯狂内卷,打价格战掠夺用户,并且为了让农村劳动人民也用上他们的网站和 APP,将其取名为 ”下沉市场“,开始针对性地投放和开发,分蛋糕的人越来越多,大部分公司的效益都开始持续走低,于是顺理成章地广发裁员信了......

于是我又得重新开始面试了,却突然发现怎么现在面试 N 年前完全不一样了???怎么现在又是计算机网络又是操作系统,底层问题问了一大堆,全是原理性问题,我完全不会啊,还要出几根柱子接雨水这种我完全看不懂的问题让我写出代码,一面完了还有二面三面四面,我直接懵逼了,受不了了。

再回首程序员的生涯,我发现每天都在被技术和莫须有的业务牵着鼻子走,每天都在焦虑,每天都在被迫学习新的技术,每天都在处理着各种各样乱七八糟的 Bug,生涯末期我才发现这些似乎并没有产生太多的价值和意义

全剧终。

话说回来,玩笑归玩笑身为新时代农民工,程序员们除了完成自己的本分工作以外,一定要抽出时间去提升自己的技术。近日,阿里又迎来一里程碑,首推 Java 架构技术成长笔记,理论与实战兼备,被业内评级“钻石级”,可以说是程序员必备!

下文内容主要是写这份《Java 技术成长笔记》的主要提纲内容,提纲内容包括 Xmind 思维图+实战文档+面试礼包,需要下载完成版的朋友,可以点赞加收藏,关注我之后添加小助理 vx:MXW5308 即可获取免费下载方式


一、架构筑基必备技能


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 技术成长笔记在线领取密码:点赞加收藏,关注我之后添加小助理 vx:MXW5308 即可获取免费下载方式

用户头像

需要资料添加小助理vx:bjmsb1226 2021-10-15 加入

爱生活爱编程

评论

发布
暂无评论
深度解析Java程序员从入行到被裁全过程_程序人生_Java全栈架构师_InfoQ写作社区