15K水平的Java程序员技术栈

目录

技术栈

学习目的

1.原始系统——数据库 + 前端 + 后端

2.系统优化——本地缓存(Caffine Cache)

3.系统升级——分布式微服务(Dubbo + Nacos + Redis)

4.系统通信——消息队列(RabbitMQ)

其他

总结


技术栈

数据库:MySQL(索引、分库分表)

后端:Spring、SpringMVC、Mybatis、多线程编程、网络编程、设计模式、算法设计、JVM

前端:JavaScript、CSS、HTML、Vue(起码要懂一些前端甚至熟悉)

分布式微服务RPC框架:Dubbo或spring cloud(或其他)

注册中心:Nacos或Zookeeper(或其他)

缓存中间件:Redis(或其他)

消息中间件:RabbitMQ(或其他)

本地缓存:Caffine Cache或Guava Cache(或其他)

其他:linux、操作系统、JVM调优

学习目的

为什么要如此设计学习内容?分析学习这些技术的目的,需要从系统出发。

1.原始系统——数据库 + 前端 + 后端

2.系统优化——本地缓存(Caffine Cache)

系统运行的所有操作基本都是围绕着增删查改,需要频繁访问数据库,就是要频繁IO。IO是操作系统发送读写指令到磁盘操作数据的过程,首先需要进行磁盘寻道,磁盘在当前扇区开始扫描数据,经过不断切换磁道和盘面,找到数据所在位置,然后将磁盘的磁性材料的磁极信息转换为电信号,返回给操作系统转化为机器语言0/1这个过程非常耗时,假设我们一个查询操作是一秒钟,这部分耗时可能要消耗0.9秒,即IO操作占了90%的时间。

缓存技术就是使用内存c减少IO操作,极大提高系统性能(起码快100倍以上)

DDR4内存读写速度大概50G每秒(50000M)

固态硬盘速度是300M每秒,是内存的1/200

机械硬盘的速度是100M每秒,是内存的1/500

Ps:使用缓存要注意数据入库处理,例如用一条线程设计定时入库策略

3.系统升级——分布式微服务(Dubbo + Nacos + Redis)

解决互联网三高(高并发、高可用、高性能)有效途径

当我们的系统过于复杂和庞大的时候,想要进行部分功能升级改造的时候,就比较麻烦了。牵一发而动全身,出一点问题都会是比较大的损失。这个时候就需要用到微服务把系统拆分成多个小系统,独立开发升级优化,升级的时候也只需要关闭某些部分服务的系统,而不需要整个系统关闭。

与单体应用程序相比,微服务组织更好、更小、更松耦合,并且是独立开发、测试和部署的。由于微服务可以独立发布,因此修复错误或添加新功能所需的时间要短得多,并且可以更有效地将更改部署到生产中。此外,由于微服务很小且无状态,因此更容易扩展。

微服务系统一定是分布式系统;分布式系统不一定是微服务系统。

那么除了微服务还有什么其余的系统也是分布式的呢?举个比较简单的例子——集群。例如我们系统不大,但是用户量非常庞大,单体机器CPU、内存等硬件资源不足怎么办?一是提升硬件条件,但硬件有上限,不是长久之计,那么就要用到集群了。集群就是系统复制粘贴到多个机器上面单独运行,在客户端访问的时候进行分流,理论上可以无限拓展。集群可以访问同一个数据库,也可以每个系统单独运行数据库保存数据然后用RPC通信联系。

4.系统通信——消息队列(RabbitMQ)

主要作用表现为解耦、异步、削峰。

由于分布式微服务已经实现了系统间的高内聚低耦合、并且Dubbo也可以实现异步通信,所以这里侧重说明一下削峰。

削峰就是客户端大量请求进行排队操作。例如秒杀活动,假如系统极限只能同时承担1000 QPS(每秒查询率),那么在一秒内进入10W个请求,如果没有消息队列进行排队削峰处理,则有可能造成网络错误,甚至宕机。

其他

linux部署项目、操作系统是如何运行系统的(线程、进场、用户态、内核态、内存、硬盘、IO)

总结

使用前端+后端+数据库写一个商城系统

使用Caffine Cache在内存操作数据

使用Dubbo + Nacos +Redis把每个功能点进行微服务拆分分别维护开发

使用RabbitMQ + Redis开发商品秒杀活动

一个固若金汤的系统就完成了!

学习路径是根据一整个系统的架构来安排的。掌握以上全部技术,基本可以保证你一个人完成从开发、优化、升级、部署到上线一个健壮系统的整个流程了。有完整搭建一个健壮系统的能力,每一部分的部署、优化和升级都掌握,就是一个及格的高级程序员了(我猜。还有个Netty,有空再学了😤😤)。

路漫漫而修远兮,吾将上下而求索。学无止境!(卷死你们😄😄😄)

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要找到15kJava工作,你可以按照以下步骤入行: 1. 学习Java基础知识:从Java编程语言的基础开始学习,掌握面向对象的编程概念、语法、数据类型、流程控制等。 2. 掌握Java的核心技术:学习Java的核心技术,包括多线程编程、集合框架、IO流、网络编程等。 3. 深入学习框架和工具:学习流行的Java框架和开发工具,如Spring、Hibernate、MyBatis、Maven、Git等,这些都是企业开发中常用的技术。 4. 完善自己的项目经验:参与实际的项目开发,可以通过校园项目、实习、自己的个人项目等方式来积累项目经验。 5. 提升自己的编码能力:针对Java工程师的岗位需求,不断提升编码能力,编写高质量的代码,掌握良好的编码规范。 6. 学习软技能:除了技术能力,还要注重提升自己的软技能,如沟通能力、团队合作能力和问题解决能力等。 7. 深入了解招聘市场:通过招聘网站、社交媒体等渠道了解招聘市场的情况,了解企业对Java工程师的需求和薪资待遇。 8. 准备面试:精心准备面试,包括复习Java知识、解答常见面试题、练习编程题和准备一份技术简历。 9. 与人交流与发展人脉:参加行业相关的技术交流会议、社群或线下活动,与其他从业者交流,扩大自己的人脉。 10. 持续学习和提升:考虑注册一些相关的认证考试,如Oracle的Java认证,来增加你的专业认可度。 记住,入行并找到一份15kJava工作需要时间和努力,不断学习和提升自己的能力是关键。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值