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

news2024/11/27 7:27:54

很多年以前,我拿着 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技术成长笔记在线获取:点击下方小卡片即可~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从古至今数据安全的守护者:哈希算法和加密方法的数据安全进化之旅

1、哈希算法进化史 在当今的数字化世界中,数据的安全性和完整性是至关重要的。哈希算法作为一种核心的密码学工具,用于生成数据的唯一标识和验证数据的完整性。然而,随着技术的进步和安全威胁的不断演化,早期的哈希算法逐渐暴露出…

【计算机组成与体系结构Ⅰ】章节测试(4)

指令系统采用不同寻址方式的目的是( ) A.实现存贮程序和程序控制 B.缩短指令长度,扩大寻址空间,提高编程灵活性 C.可直接访问外存 D.提供扩展操作码的可能并降低指令译码的难度 下列寻址方式中&#xf…

【C51】10-基础51单片机的小车项目(51完结)

10.1小车的安装 10.2电机模块的开发(L9110S) 接通 VCC , GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试 IA1 输入高电平, IA1 输入低电平,【 OA1 OB1 】电…

IIC电平转换电路原理分析

一,简介 本文主要介绍IIC电平转换电路的原理,记录总结。 二,准备知识(芯片介绍AW39114BQNR) 登录官网,搜索该芯片的名称,查看对应的芯片手册。 芯片介绍: 典型应用电路&#xf…

【RISCV】RISCV e-906实现Tickless

Tickless 最初设计的思想是,能被任务唤醒,也能被中断唤醒 参考文章: freeRTOS 低功耗模式 和 空闲任务 FreeRTOS源码分析与应用开发09:低功耗Tickless模式 FreeRTOS学习十(低功耗) 【STM32】NVIC与中断控制 之 sysTick定时器 M3,M4实现tickleess的做法: M3,M4的机制:…

AIGC时代,基于云原生 MLOps 构建属于你的大模型(上)

为了满足企业在数字化转型过程中对更新迭代生产力工具的需求,灵雀云近日推出了云原生 MLOps 解决方案,帮助企业快速落地AI技术、实现智能化应用和服务。 为什么要打造云原生MLOps解决方案? 随着信息化技术的不断发展,企业在数字化…

什么是真正的骨传导耳机,几款不错的骨传导蓝牙耳机分享

骨传导耳机是通过耳朵传声方式,提高了听神经的使用频率,对听觉系统所产生刺激会随之下降。目前骨传导耳机主要应用于运动和娱乐两大领域,尤其是在运动场景中骨传导耳机能够避免传统耳机因佩戴入耳式耳机造成的听力下降问题,更能增…

vue播放rtsp流方案(支持h265)

前提 如果你的rtsp流不是h265的,可以使用webRtc-stream进行播放,我测试延迟1.5秒左右 参考链接: link 这个操作也挺方便的,也就是下载,启动 如果是h265,可以使用ffmpeg node rest2web jsmpeg方案。这个优点是特别快…

如何用Java代码操作数据库(JDBC编程)

目录 JDBC编程的由来 JDBC编程的准备工作 1. 下载数据库驱动包 2. 将jar包作为标准库​编辑 3. 编写JDBC代码(需要通过下面几个步骤完成开发) (1)JDBC编程(在数据库中插入一条记录) 运行结果:…

ZEPPELIN部署接入华为云MRS

ZEPPELIN部署接入华为云MRS 安装zeppelin配置Spark连接常见问题连接pg报错 Py4JJavaError: An error occurred while calling o779.load. : org.postgresql.util.PSQLException: The authentication type 5 is not supported. Check that you have configured the pg_hba.conf …

OpenMMLab-AI实战营第二期——3-1.深度学习预训练与MMPretrain

文章目录 1. MMPreTrain算法库介绍1.1 算法库与任务组成1.2 框架概览 2. 经典主干网络2.1 ResNet2.2 Vision Transformer 3. 自监督学习3.1 SimCLR3.2 MAE3.3 iBOT 4. 多模态算法4.1 CLIP4.2 BLIP 视频链接:b站-深度学习预训练与MMPretrain 1. MMPreTrain算法库介绍…

高并发下如何保证接口幂等性?

文章目录 前言: 一、insert前先select 二、加悲观锁 三、加乐观锁 四、加唯一索引 五、建防重表 六、根据状态机 七、加分布式锁 八、获取token 前言: 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分…

粮油食品行业MES系统源码

MES系统可以提供全面的生产过程监控和数据分析,帮助企业实现智能化、数字化生产。同时,MES系统可以优化生产计划和物料配送,降低废品率和能耗,提高生产效率和质量,降低生产成本,增加利润。 一、粮油MES系统…

C#,彩票数学——彩票预测是玄学还是数学?什么是彩票分析?怎么实现彩票号码的预测?

彩票原理系列文章 彩票与数学——彩票预测是玄学还是数学?https://mp.csdn.net/mp_blog/creation/editor/122517043彩票与数学——常用彩票术语的统计学解释https://mp.csdn.net/mp_blog/creation/editor/122474853彩票与数学——彩票缩水的数学概念与原理https://…

小狐狸ChatGPT创作系统如何添加AI文本创作自定义模型,自定义模型方法

后台根据自己的定位选建好类别管理 具体模型文档参照如下对应修改或新增,格式 :模型标题+描述+模型内容+提示文字 模型标题描述模型内容提示文字写一篇文章用你喜欢的语言写一篇关于任何主题的文章用[TARGETLANGGE]写一篇关于[PROMPT]的文章输入文章的主题,然后按发送键按…

【微信小程序插件】下拉刷新、下拉加载

概述 今天在优化小程序的列表时候,想要把原生的 scroll-view 组件替换成一个下拉刷新的组件,然后就找了一下,果然有大神已经封装好。coolui-scroller 就是这样满足需求的一款插件,但是微信官网给出的描述以及安装引入的方式&…

Python读取CSV文件的几种方法

话不多说,开干!!! 目录 1. 使用 csv 模块 2.使用 numpy 库 3.使用pandas库 4.使用标准库中的 csv 模块 5.注意事项 1. 使用 csv 模块 (1)项目目录如下图所示: (2)…

皕杰报表中的图表钻取

皕杰报表中图表的钻取是通过超链接实现的,其实质就是通过超链接打开了一张的新表,而把原表中的条件通过参数传递给新表,从而得到我们所需的明细数据。 超链接的地址在单元格的超链接地址属性里添加属性值,如果超链接字符串不需要动…

企业级微服务架构实战项目--xx优选1

一 项目概述 1.1 项目概述 xx优选项目:是依托社区和团长社交关系实现生鲜商品流通的新零售模式。 1.2 技术栈 1.3 功能架构图 第2部分 1.4 技术架构* 1.5 工程结构 ssyx-parent:父工程,根目录,管理子模块: ​ comm…

如何自动化的对PCAP数据包进行suricata/snort/zeek分析

在前一篇文章中,这里介绍了dalton的安装,以及使用dalton中的多种探针手动分析pcap数据包。在和其他程序联动的时候,手动分析无法满足要求,本篇文章将介绍如何通过使用dalton提供的API进行数据包的自动化分析。 在手动提交数据包分…