工作2年还是只会增删改查,Java程序员如何进阶?
做JAVA开发的三年一个坎,你应该庆幸你还有一年的时间可以用来提升,让自己不要后悔!
不过话说回来,在平时的工作中其实90%的工作量都是增删改查,或者是对增删改查的改进,那些所谓的高并发,多线程,高可用系统,分布式系统,负载均衡,缓存,数据库读写分离,分库分表等等全部都是围绕增删改查来做改进的!
比如说缓存是因为数据库的读写压力大的时候,为增加读写效率而引进的,使用缓存的内存读写代替了数据库的硬盘读写!
比如说数据库的读写分离或者分库分表都是在单点数据库的压力过大,性能低的时候引入的无论架构怎么设计都是为了得到更好的读写效率!
再比如说,高可用,分布式都为了避免单点服务出现异常,导致读写服务不可用,从而引入的集群部署或者分布式部署!
由此可见,增删改查是我们最核心的功能,只不过我们引入了其他的架构,完善我们的功能,让我们的增删改查更加的快速!
在实际的开发过程中,要多思考系统的瓶颈在哪?增删改查的压力在哪?怎么改进?不要网上搜一堆乱七八糟的,觉得很屌的东西,学完之后发现他根本不知道是做什么的,一切的开发围绕我们的业务来展开,然后才是增强体验性,搭建快速稳定的架构!
那我们应该怎么来进阶呢?
1,大局观:不要只是盯着自己开发的功能,要知道整个系统的整个架构是什么?使用什么技术?服务之间怎么通信?整个服务的性能怎么优化?全面的来考虑,不然晋升的肯定不会是你!
2,不要一心扑在公司的工作上,要有自己的时间去学习最新的技术,去拓宽自己的知识,明白别的公司用的是什么?主流开发技术开发是什么?
3,一定要多总结,不管是平时的工作中或者学习中都能学到很多有用的东西,要把它转化成demo记录在自己的技术文档里面,方便以后自己查阅和使用!不是做过就算了,一定要记录下来!
我晚上加班的时候,除非有急事,不然都学习自己的!然后才能感觉自己有很大的提升!我自己记录了很多做过的,学过的JAVA相关技术,以后会一直分享,需要的话请关注!
对一个已经两三年的Java程序员来说,如果主要工作还是增删改查,这是相当痛苦的一件事情。互联网行业是一个发展快、变化快的行业,身处这个变化莫测的行业,总让人感觉既兴奋又不安。
在Java程序员的职业生涯中,如何才能不断提升自己的核心竞争力,实现自身技术能力进阶,也一直是一个大家都比较关心的话题。下面简单罗列了Java程序员学习进阶的几个方向,供大家参考。
编程基本功:数据结构和算法
1.数据结构相关的哈希表、链表、二叉树等等
2.常见的算法有哪些?至少下图的算法我认为应该要掌握。
比如:HashMap如何扩容,重点就是考底层数据结构。
编程基本功:Java编程
这些都算是编程基本功底:多线程、JVM、并发容器、并发类、NIO等。
Web开发
其实web开发这个领域,如果你要掌握好了,发展也非常不错的。
比如:现在的H5、小程序等,对于掌握前端技术的开发人员,竞争力也是杠杠的。
当然作为后端开发人员,多掌握点前端的技术,那也是必须的。
数据库
重点就看图了,这里涉及的技术还是蛮多的,mysql、oracle、nosql相关的mongodb,以及如今大家都熟知的分库分表、读写分离等技术。
这些都是大家熟知的,我补充点设计相关的:数据库设计范式、索引、事务、数据库相关的慢查询、长事务。
这些也算是数据库技术的编程功底。
研发相关的框架工具
Java程序员对于下图应该都是比较熟悉的,这些框架与工具都是经常使用。
架构设计
谈到设计,就不得不提到项目中的概要设计和详细设计,这就会涉及到UML。
除此之外,整个项目的设计,这个时候考验你的架构设计能力。
这里的架构设计,包含的系列非常多,特别是Redis、应用程序拆分、拆分后涉及到的RPC微服务等技术,以及后端数据库的拆分技术,以及拆分后的分布式集群部署。
分布式会涉及到:分布式锁、全局唯一ID的生成、分布式Session…这里还有蛮多的,其实大部分我在【BAT架构技术专题合集】中都分享过了,回复【架构】,即可领取。
结束语
要知道,再成功的大佬也是从第一行代码开始的,增删改查是修炼成神必经之路,该走的阶段还是要走,但在走的过程中多看、多学、多思考、多实践,在自己不同的发展时期,找到属于你的立足点,只有站稳了这个立足点,你才可以更好的开始延伸自己别的领域。
程序工作,大多始于增删改查,重复的小事做漂亮,同时扩展自己的技术边际;
职业生涯中的转机,源于坚持不懈找方法、寻求改变,主动出击争取机会;
欲速则不达,循序渐进成长,不同时期,有不同的成长阶段。
俗话说:师傅领进门,修行靠个人,想要技术进阶,需要自己持之以恒,付出100%的努力。提前做好准备,机会总是青睐有准备的人,程序人生,学无止境,共勉~
看到这个问题,我快速回想了自己这十多年的程序员经历,感觉我所有工作的实质好像都是在做增删查改;但哪些是在提升工作能力,哪些是在做重复性的工作,以及怎样应对,我谈谈自己的看法。
增删查改,也要分场景看
举个例子,开发一个商城页面,展示销售量最高的十件商品。
当页面一分钟访问量只有100次的时候,我们可以执行100次select top 10;但是当一分钟访问量有100万次的时候,这还会是一个简单的查询么?
我在上一家单位的时候,所做系统的业务很简单,就是把一批数据,按照模板,加工成待发送的短信、电邮,基本上没有特别难的地方。
但是数据量很大,基本上每天都会处理生成几千万条数据,那时候公司还都是IOE的架构,只有单台Oracle支撑;也就是在这段时间,我练就了一身数据库优化的本领;但是想象一下,如果数据量再增加10倍呢?如果数据量再增加100倍呢?
毫无难度的增删查改,建议赶紧跳出安逸状态
如果每天做的都是毫无难度的增删查改(没有复杂业务,系统也没有多大的压力),建议还是早些跳出这个安逸的状态,就算你对现在的工作环境很满意;因为说不定到什么时候,你就会摸到职业发展的天花板,甚至会面临失业的危机。
还是上一家公司的这个项目,我在这个项目工作第三年的时候,基本上把能做的都做完了,优化基本上也到极限了,最后半年的工作状态是:需求来了,做一下设计,然后让其他同事开发;我朝九晚五,上班有大把的空间时间;还好我利用这些时间去学习,看流行的技术框架,后来跳槽,工资上升了一大截。
如果你正处于这种工作状态,我建议:
一定要清楚地认识到:作为程序员,只做简单的增删查改,是很危险的;
考虑一下能否把项目做得更好,是否可以负责更多的工作;
多学习一些流行的技术,并考虑能否应用到工作中(眼界很重要);
跳槽,寻求更大的平台,很多时候,程序员的成长都是被逼出来的。
不要享受安逸!
最后,敬大家一碗鸡汤:你现在的生活水平,是你三年前的工作状态决定的;而你现在的努力程度,会决定你三年后的生活;软件开发是个逆水行舟,不进则退的行业,既然选择了这个行业,那么就要努力地“敲”下去。
希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
java中如何将一个数据的十位数和个位数分开来?
int num = 72;//定义一个变量num用来存放数字int a = 72%10;//num对10取余,可得到个位数int b = 72/10;//num除10得到十位数,由于b为整形,小数位会自动省略
进过BAT,去过独角兽,Java程序员如何拿到50w的年薪?
与这相似的问题,已经有很多码农有问过我,作为一个工作十余年的架构师我只想说:“如果你不能拼爹,或者不想拼爹,最好的方法是拼实力。”
合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。
所以,你必须要从基层做起。当然,所谓的基层,并不是端茶倒水,但多一些体验,总是无害的。
前两年的时间,应当主要打好基础的累积,认清职业现状和社会经济发展趋势,适应工作后的生活,对心灵浮躁的洗涤。
这一阶段最大的敌人是自身的态度,切忌不可眼高手低,牢记一句话——“心比天高,命比纸薄。”脚踏实地,一步一个脚印,为未来做好铺垫。
跳槽
工作的前两年,最好不要轻易跳槽。在这个阶段的跳槽,主要有两方面的弊端:
- 对于个人成长 跳槽的目的无非两点,更好的发展空间,或更高的待遇。跳槽到适应的周期太长,而年轻则应该是全速向前的阶段。到了新的岗位,一切又得重头再来,熟悉新的业务,新的技术,融入团队。
- 薪资待遇 很少有在前两年跳槽的时候就能有很大涨幅的(50%+)。所以这时候在跳槽上花心思是一件很费脑又收益不大的事情。
无论在职业的哪一个阶段,如果跳槽没有较大的薪资涨幅,跳槽都是需要谨慎考虑的。除非联合创始人身份加入,降薪跳槽的事情千万不要有,毕竟拿多少钱做多少事,没有利益不太可能会有源源不断的动力输出。
三到五年
这个阶段,已有一技之长,又有广泛涉猎,应当寻求突破了。
这里我总结了一个java架构师必备的技术,整理了一些相应的视频资料,需要清晰大图的可私信【资料】领取!(掌握百分之80,年薪50万!)
1,架构师内功心法(设计模式)
- Proxy代理模式
- Factory工厂模式
- Singleton单例模式
- Delegate委派模式
- Strategy策略模式
- Prototype原型模式
- Template模板模式
- Decorator装饰器模式
- Observer观察者模式
2,架构师审美观(品味经典,分析源码)
- AOP源码解析
- IOC源码解析
- Mybatis源码
- Spring
- Spring5 Framework体系结构
- Spring5环境搭建
- Spring5概述
- 分布式主键生成方案
- Session跨域共享实战
- 分布式事务解决方案实战
- 分布式锁解决方案实战
- 分布式单点登录 SSO实战
- 分布式调度任务实战
- 分布式配置中心
4,次世代架构技术(微服务架构)
- 基于分布式思想下的RPC解决方案
- Dubbo应用及源码解读
- SpringBoot
- SpringCloud应用及源码解读
- Docker虚拟化技术
5,架构师筑基专题(这里主要列举并发编程进阶、JVM性能调优知识点)
- JVM性能调优
- Java程序性能优化
- Tomcat
由于图片太大上传会不清晰,需要完整架构体系大纲的可以私信【资料】,领取我已经打包好的架构体系导图,免费分享给大家哦!
虽然有的人基础好,起步高,但这些并不是一成不变的。接下来的这几年的努力,最足以拉开人生的差距。
王健林说:
定个小目标,先挣一个亿。
这样的目标可能还是过于宏大了,但每一年,薪资以1.5倍速增长,并非遥不可及。
假设你从应届生毕业时月薪为8k,两年工作下来14k。从第三年起,到第五年,每年翻一番,就是:
- 21k
- 32k
- 48k (年薪58万) 似乎也没有多少,对于大多数人来说这样的小目标不算太难实现的。
假设这三年如果只有30%的平均涨幅,那么就是:
- 18k
- 24k
- 30k (年薪36万) 14k 相同的起薪,20%的差距,就有22万之多。所以这一阶段的发展需要多付出些精力,不可荒废。
差不多,五年的光景,足以让你略有小成。
最后
文章中涉及到的技术点,需要清晰大纲图的可以关注我,私信【资料】获取免费领取方式!希望我这些分享可以帮助在这个行业发展的朋友和童鞋们,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈或者写博客码友,在这份资料中一定都有你需要的内容。