想进BAT,程序员需要具备这些技术

权威统计机构统计,在所有软件开发类人才的需求中,JAVA工程师的需求量达到了60%~70%。

全球有25亿Java器件运行着Java,450多万Java开发者活跃在地球每个角落,数以万计的web用户都亲历Java的威力。

今天,Java运行在7.08亿手机,10亿智能卡、7亿PC机上,为28款可兼容的应用服务器提供了功能强大的平台。越来越多的企业因为使用了Java而提高了生产效率。

想进BAT,程序员需要具备这些技术

Java软件工程师的月薪一般在6000-10000+,远远超过了应届毕业生的平均水平。还有34k~ 42k之间,我们可以看看,能达到这个月薪的Java大公司也就那么几家,比如阿里、百度、腾讯、华为等……

想进BAT,程序员需要具备这些技术

想进BAT,程序员需要具备这些技术

要达到这样的薪资程序员需要什么技术呢?

1、并发处理技术

具体到Java上通常是涉及java.util.concurrent、并发锁机制、NIO等方面,当然最近比较火爆的Netty框架也可以作为高并发处理的备选方案之一,这需要对Java的线程调度机制有着比较深的理解。

不过这些可能会涉及并发控制的对象(比如reentrantlock等)只能存在于一个JVM里的问题,一旦系统规模大到需要部署多个JVM来处理并发的情况,则需要采用共享session的技术(比如spring-session),或者尽可能将系统后台设计为无状态的服务,这需要对RESTful有着较深的理解

2、高可用、负载均衡技术

互联网产品、企业级应用通常要求一年里的Downtime控制在很小的范围内,这需要足够的高可用和负载均衡架构来支撑。

一般和Java技术本身没太大关系,但却是一名初级程序员向高级程序员甚至是架构师CIO进阶的必备技术,因此可以适当了解一下Nginx、HAProxy等对这方面的支持。

另外现在最“时髦”的做法是将应用docker化,配合ETCD、kubernetes等工具在容器的层面上实现高可用和负载均衡,当然这需要看实际的需求,最时髦的不见得是最适用的,要考虑构建成本。

3、缓存技术

缓存应该是大型系统中或高并发条件下提高响应速度的亘古不变的真理(虽然也看到过淘宝搜索商品功能采用的大数据处理技术实现的零缓存的文章,但能达到淘宝的体量和技术水平一般不太可能)。

这方面的工具太多了ehcache、memcached、redis……从Java的角度来讲,需要了解的一是Java对这些工具的连接器,二是缓存技术背后的JSR-107标准,可以参考spring-cache的实现,阅读一下源码加深理解。

4、异步处理技术

这通常也是抵消高并发的处理手段之一,从Java的角度看最简单的异步处理就是新启动一个异步线程,这同样也需要对Java的线程调度有所了解,当然也可使用Spring中的@Async之类的也可以简单实现异步线程的处理。

如果是非常消耗资源的业务处理,简单的异步线程是满足不了需求的,这就需要一些消息中间件来做这些异步处理了。

消息中间件有很多,activemq、rabbitmq、kafka……需要了解的是Java对这些中间件的连接器。不过异步处理中最关键的是事务保证的问题,这可能需要对事务的两步提交有所了解。


分享到:


相關文章: