Java初级程序员除了增删改查还能做什么?

想要摆脱重复的增删改查,后端开发应该提升哪些能力呢?

我目前也是在阿里巴巴做Java开发,来分享一下我自己的一点工作经验。

首先我们来看大厂的常见研发流程是什么,也就是我们平常都会做些什么事情?

(1)项目研发

需求提出->需求PRD评审->交互设计评审->概要设计->详细设计->测试用例评审->项目开发->联调->代码CodeReview->提测->验收->发布上线->需求结束

在这整个过程中,技术同学基本每一个步骤都要参与,我们的工作绝不仅仅是写几行CRUD的代码那么简单。

需求评审阶段:我们需要和产品、业务方深入沟通,去理解需求逻辑,学会评估需求背后的业务价值和优先级,当面对资源不足需求井喷的情况下如何做取舍。

技术方案设计阶段:要分析上下游的关系,以及和兄弟团队之间的边界,技术方案要考虑扩展性、通用性,以及技术选型、实现成本。要写出bug少的代码,我们需要考虑全面、考虑各种边界条件包括功能性和非功能性。

代码CodeReview:同样一件事情,不同人来做可能实现都不同。那么我们在代码开发的时候,要尽可能实现简洁、逻辑清晰、易于扩展。而且面对流量洪峰,我们还需要考虑并发处理、异常处理、数据存储设计。

项目发布上线:我们需要考虑到灰度、不影响老功能、回滚、监控等事项,绝不仅仅是一把梭发布上线就完事了。

(2)性能优化&线上问题排查

我们的线上应用要提供给用户高可用的服务,必须保证可用性。这就需要我们在代码实现的时候考虑性能优化、并发处理以及各种降级开关等应急措施。

那么,如何提高上述能力呢?

1、分布式技术

推荐一本至今觉得最棒的讲分布式的书籍数据密集型应用设计

豆瓣评分中文版9.7分,影印版9.9分,堪称分布式领域圣经,本人非常后悔没有更早的阅读本书

作者功力深厚,这本书知识面非常广,涵盖了分布式系统设计的方方面面(至于读者说的分布式事务、sharding等那妥妥的是覆盖到了),将深奥的分布式知识深入浅出的讲解,给了大量图示,非常容易懂。

而且书后的附录给出了非常多的参考文献,值得细读。

英文较好的可以直接读影印版,难度不大。

2、数据库

如果是从事网络相关开发,如rpc框架、mq消息中间件,那么还需要掌握网络相关基础知识,以及业界有名的高性能网络组件Netty。

 

数据库推荐书籍:《高性能Mysql》

内容涵盖了mysql架构以及发展历史,性能剖析、以及性能优化、复制等高可用。从事开发的话建议精读前7章,后面几章偏运维。

3、JVM

 也推荐2本书:《深入理解java虚拟机》和《并发编程实践》

《深入理解java虚拟机》:本书详细讲解了类加载、java内存原理、垃圾回收机制等知识。只有掌握了JVM,才能在实际生产环境遇到线上问题如GC频率过高、内存溢出等应对自如、还有应用系统JVM参数合理配置。

  • 整理了一份关于java的系统化资料,从Javase- ssm-springcloud,包括了面试题,PDF电子书,网上商城项目,个人博客项目,分布式项目等都有想学习Java或者转行,大学生都非常实用,无任何套路免费提供,,在 679126598 下载,有什么问题都可以来问我
  • 最新Java精讲视频,PDF书籍教程,面试题,学习手册

(3)关注前沿信息,开阔视野

互联网变化非常快,新技术层出不穷。如果能提前进行技术学习、布局,那么就能够在风口到来的时候拥有先发优势。比如最近火热的云计算、智能硬件。

在没有足够的技术敏感性的时候,多关注前沿信息,开阔视野,了解最新技术解决了什么新问题,是否能够给自己的工作带来帮助。

Part 1:技术社区推荐

1、Github

网站地址:https://github.com/

作为程序员如何不知道这个网站的话,你可能需要回炉重造了。

我个人觉得是目前最牛逼的技术社区,Github上面有很多非常优秀的开源项目,包括阿里、腾讯、字节跳动、美团、Google、Micosoft等国内外大厂都有自己的Github开源库。

建议每个程序员没事可以到上面多逛逛,多看优秀开源项目的代码和文档尽量参与进去,不论是maillist、QQ/钉钉群组等等,可以尝试从编写文档、写测试用例开始入手,逐步切入核心功能。

2、Stack Overflow

网站地址:https://stackoverflow.com/

一个程序员问答网站,跟知乎一样,又跟知乎不一样。上面非常多的热心的大牛。

区别在哪里呢?Stack Overflow 不欢迎任何讨论性的,非Problem-Solving类的问题。什么意思呢?你可以提问1+1等于几,但是不要提问为什么要学c语言?

所以,如果你在开发过程中遇到了什么bug,只要你搜索能力优秀,99%在上面能找到答案。

在这里能够与很多有经验的开发者交流,如果你是有经验的开发者,还可以来这儿帮助别人解决问题,提升个人影响力。

Part 2:开源项目推荐

参与优秀的开源项目可以和业界优秀的程序员大神一起结对编程,开阔思路,掌握优秀的代码编写风格、设计模式和技巧。

在此推荐几个业界有名的优秀的开源项目:

1、Redis:Redis

Redis的性能极高且拥有丰富的数据类型,同时,Redis所有操作都是原子性的,也支持对几个操作合并后原子性的执行。另外,Redis有丰富的扩展特性,它支持publish/subscribe, 通知,key 过期等等特性。 Redis更为优秀的地方在于,它的代码风格极其精简,整个源码只有23000行,很有利于阅读和赏析。

2、RocketMQ:Apache RocketMQ

阿里巴巴开源的消息中间件,久经双11大促流量洪峰考验。

3、Flink:Stateful Computations over Data Streams

Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用JavaScala编写的分布式流数据流引擎。Flink以数据并行管道方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。

Flink提供高吞吐量、低延迟的流数据引擎以及对事件-时间处理和状态管理的支持。Flink应用程序在发生机器故障时具有容错能力,并且支持exactly-once语义。程序可以用Java、Scala、PythonSQL等语言编写,并自动编译和到在集群或云环境中运行的数据流程序。

4、Google guava:Google提供的java库函数,guava cache和guava限流的实现很有参考价值。

5、sharding-jdbc:数据库分库分表、读写分离的一个中间件。

6、RxJava:java平台的Reactive 扩展。

7、Spring:这就不解释了。

最后再推荐几个优秀的前沿信息来源

  • infoq
  • 美团技术博客
  • 公众号-阿里技术
  • 公众号-高可用技术
  • 业界有名的会议:archsummit 架构师大会、flink forward

刚入门的后端做CURD,资深的后端搭框架,老后端设计系统。

希望本文章能对你有所帮助~

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值