网站架构师的工作内容(Java编程思想:如何在平凡的工作中关注代码质量 )
优采云 发布时间: 2022-01-07 01:18网站架构师的工作内容(Java编程思想:如何在平凡的工作中关注代码质量
)
农村出身,大二,怎么能靠自己的努力,毕业六年就达到100万的年薪?作为云云程序员的普通成员,他是如何一步步逆袭BAT拿到高薪的
因为对软件开发感兴趣,所以在找工作的时候一直在投资IT行业的职位。刚踏入这个行业的时候,我以为自己把面试材料拼凑起来,会有一个不错的收获。结果就是,别说大公司,就是很多我看不起的小公司的笔试都过不了。
焦虑阶段
后来去了当地的一家小公司做服务器端开发。虽然叫服务端开发,但其实是一个系统指标监控功能,从DB中读取一些指标数据,以图表的形式在浏览器中展示。使用的技术无非是Spring MVC的一套。这种CRUD的工作内容做久了,纯手工,没办法打开技术视野。
就算写了这么简单的函数式代码,也总是被领导批评,说我写的代码质量太差,配不上这几千块的薪水。人总是要面子的,为了改变这种状况,他们开始思考如何在平凡的工作中把事情做到极致,开始关注代码的质量,开始真正蚕食《Java编程思想》还有《有效的java》、《设计模式》这些书。
同时,在代码开发之前,我强迫自己多画架构图和数据流图。在写代码的时候,我也强迫自己对代码进行分层。经过半年的训练,我可以逐渐写出一些松耦合、高内聚的代码。改变了全屏if-else飞的*敏*感*词*钱)!
当时,我认为这是一个优秀程序员的核心能力,所以我鼓起勇气投了一些大公司的职位,但我没有收到面试邀请。后来投了几家小公司的面试,没收到offer,因为对面试的一些问题一窍不通,比如:
与关系型数据库相比,NoSQL 有哪些优势,你会在什么场景下使用它?所有账户登录信息都保存在分析日志中,每天100G左右,找一段时间内登录次数最多的账户,你的并发量有多大,如何避免雪崩现象?
这些问题让我意识到:语法和设计模式只是程序员的基本技能。要进一步发展,必须在数据结构、高并发、分布式技术等方面进行改进。一开始,学习起来非常困难。基础薄弱,工作中也没有使用这些技术的场景,只能在论坛、博客等看零碎的文章,进展缓慢。
要系统地学习,书籍和在线课程是更好的选择。买了《Java并发编程实践》、《大型分布式架构设计与时间》、《Spring Cloud与微服务构建》等书,来回看了几遍。然后我在网上看了一些视频,有些是免费的,有些是收费的。我也花了一年左右的时间系统地学习了一套课程,之后对Java相关的技能有了更系统的了解。同时,对于非专业背景或基础知识欠缺的工程师,也能有效地起到排查漏补和补缺的作用。
之后,我尝试在我的工作中使用这些技术。当时的状态是“拿着锤子,到处都是钉子”。在学习了一项新技术后,我想在任何项目中都强行使用它。领导有时说我疯了,但我觉得我没必要鄙视这种经历。任何事物都有一个认知过程,这也是一种积累。
1、性能调优
无论是应对前端面试还是提升产品体验,性能优化都是绕不开的话题。
优化的目的是让用户感觉“快”,那么如何让用户感觉快呢?
加载速度真的很快,用户打开输入的URL,按回车立即看到页面
加载速度没有变快,但是用户感觉你的网站快了
性能优化取决于多种因素,包括垃圾回收、虚拟机和底层操作系统 (OS) 设置。有很多工具可供开发人员在分析和优化时使用。您可以通过阅读 Java 源代码优化和分析工具来学习和使用它们。
必须明白,没有两个应用程序可以使用相同的优化方法,也没有优化java应用程序的完美参考路径。使用最佳实践并坚持适当的方法来处理性能优化。要实现真正的最高性能优化,作为Java开发人员,您需要对Java虚拟机(JVM)和底层操作系统有正确的认识。
以下五个知识体系是我在行业多年总结的经验,都是目前最主流的技术。想深入了解的可以点赞和补充获取学习资料,分享一些资深架构师录制的视频:Spring、MyBatis、Netty源码分析、高并发、高性能、分布式、微服务架构原理JVM性能优化,并发编程已经成为架构师必备的知识体系。
下图是我对性能优化应该学习和理解的知识体系的总结:
2、源码解读
源代码分析是一种批判性知识。掌握这些关键知识可以保持不变并应对变化。对于很多人来说,源代码分析是枯燥的,难以理解。
看了源码,我觉得有3个核心点:技术基础+求知欲强+耐心。
我认为它是阅读源代码的核心驱动力。我看到大部分程序员,他们对学习的态度基本上就是这几个层次(非常极端):
1.只关注项目本身,看不懂就百度。
2.除了做好项目,我还会看项目相关的技术书籍,看维基百科。
3.除了看项目相关的书籍,还会看IT行业的书籍。比如在学习Java的时候,我也会学习函数式语言,比如LISP。
4. 找一些开源项目,尝试很多第三方框架,写demo。
5.阅读基础框架、J2EE规范、调试服务器核心。
大部分节目都是第一类,到第五类不仅需要浓厚的兴趣,更需要勇气:能看吗?其实你可以理解。
耐心真的很重要。因为你很少看到教学文章或阅读源代码的书籍,也没有人要求或推荐你阅读。你经常在阅读的过程中卡住,卡主可能会被卡在迷宫里。这时候你需要做的可能就是暂时停下来,然后从外面看:比如API结构和框架的设计图。
下图是我目前最应该学习的源码知识点总结:
3、分布式
分布式系统是一个古老而广阔的话题,近年来,由于“大数据”概念的兴起,它展现出了新的青春和活力。此外,分布式系统也是一门既强调理论模型又强调工程技术的学科。与机器学习等研究方向相比,研究分布式系统的学生往往会觉得:“上手容易,深入难。” 事实上,学习分布式系统几乎不需要太多的数学知识。
分布式系统是一个复杂而广泛的研究领域。学习一两门在线课程或阅读一两本书可能无法完全涵盖其所有内容。
一般来说,分布式系统的任务是将多台机器有机地组合和连接起来,使它们可以共同完成一项任务,可以是计算任务,也可以是存储任务。如果一定要对近年来的分布式系统研究做一个分类,我个人认为可以包括三大部分:
1.分布式存储系统
2.分布式计算系统
3.分布式管理系统
下图是我对近年来最主流的分布式技术的总结:
4、微服务
目前微服务很火,大家都说用微服务架构,但微服务架构到底是什么?微服务架构是发展趋势吗?我们都对这些问题缺乏清晰的认识。
为了解决单体架构下的各种问题,微服务架构应运而生。与其建造一个难以驯服的臃肿怪物,不如尽快分服务。微服务的核心思想是对服务进行拆分解耦,以降低复杂度。微服务强调功能的合理拆解,尽可能保证每个服务的功能单一,按照单一职责原则明确角色。使每个服务变得轻量级,以便它可以灵活且可重用。也可以根据自身资源需求单独部署,横向扩展。
下图是我对微服务需要学习的知识点的总结:
5、工程
欲做好事,必先利其器。无论您是新手还是经验丰富的开发人员,都需要先选择一个好的工具。提高开发效率和团队协作效率。给自己更多时间思考。
如果你还是觉得有些茫然,不妨找一位有多年Java开发经验的高级工程师聊一聊。
目标理念
为什么我执迷于在BAT这样的大型互联网公司工作?除了诱人的薪水,也是因为有*敏*感*词*的分布式技术可以挑战。
回顾这些年的升级打怪之路,从最初从普通的二本学校毕业,到成为顶级互联网公司的高级Java开发工程师,不禁感慨万千。如果让我和你分享一些想法,那么以下3点应该是我这两年最大的感受:
跳出舒适区并找到目标是进步的起点。如果你在目前的工作中接触不到太多新技术,可以尝试去外部公司面试,这在一定程度上可以帮助你找到自己的学习目标;
你必须尽早戒烟,以免变成温水里的青蛙。想跳大公司的同学,一定要趁早。因为在同一个层次,大公司会更看重“潜力”——年龄越大,潜力越小;
永远保持你的学习欲望。对于工程师来说,学习永无止境。但努力学习是不够的。你必须注意自己的学习。除了手头的项目和身边“大牛”的指导,阅读和在线课程是最有效的方法。用少量的金钱换取宝贵的时间是非常值得的。
关于工作心态
我到处都在想公司。上班时,我不会马马虎虎地完成任务。我善于经常与领导沟通,给他们最好的解决方案。
鼓起勇气表达自己。领导们最先举手回答问题。他们不怕尴尬或犯错。有不足的地方他们都会补上,也不怕挫折。
今天躺在床上的舒适明天将不得不付出代价。任何事情都必须有一个长期的计划。谁敢说今天或今年之后,就没有了。如果你想在和平时期为危险做好准备,无论你的职位有多好,你都应该珍惜和感恩。
有句话说,现在是最好的。得不到的只能用“不一定好”三个字来形容。工作上,寂寞难耐,但繁荣也是可能的。
“背景不好,勤补。” 再说了,如果你现在不勇敢,没有人会为自己描绘更美好的明天!
一套个人学习框架视频资料免费分享给大家,希望对大家有所帮助!
收到时备注:建筑师信息