JAVA开发太难了呀!30K程序员到底要会哪些技术?
现在很多开发的人员只关注他们短期的工作前景,做的越久,发现自己越来越跟不上技术,所以,把时间和精力花在学习最能带来回报的新技术上是件非常重要的事情。这里是我们列举一些你需要马上开始学习的技术,让你不会落伍。
1.消息中间件
消息中间件可利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式环境下扩展进程间的通信。通过消息中间件,应用程序或组件之间可以进行可靠的异步通讯,从而降低系统之间的耦合度,提高系统的可扩展性和可用性。
2.JVM调优
JVM是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java虚拟机后,Java在不同平台上运行时不需要重新编译。Java使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java能够“一次编译,到处运行”的原因。所以JVM的优化至关重要
3.源码理解
如果我们需要将一个开源项目用到自己的项目中,那么就必须了解这项项目的优缺点,并深知原理,对部分细节进行深入研究。如果是成熟的开源项目,遇到问题也许能百度到很多答案;但如果是一个处于快速发展中的开源项目,多了解其架构、核心原理,也能帮助快速定位问题。
4.微服务
微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力
通俗点讲,就是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。
5.redis
局限点来说,Redis以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入redis缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。
6.Netty
Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以建立高性能的Http服务器。支持HTTP、 WebSocket 、Protobuf、 Binary TCP |和UDP,Netty已经被很多高性能项目作为其Socket底层基础。
7.分布式事务解决方案
在分布式系统中一次操作由多个系统协同完成,这种一次事务操作涉及多个系统通过网络协同完成的过程称为分布式事务。多个系统访问了不同的数据库,多个系统访问的是同一个数据库也是分布式事务
8.分布式锁
为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁
9.锁的升级
Java SE 1.6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”,在Java SE 1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。这种锁升级却不能降级的策略,目的是为了提高获得锁和释放锁的效率
10.redis红锁
redis官方提出的红锁(Redlock)的概念。
假设有5个redis节点,这些节点之间既没有主从,也没有集群关系。客户端用相同的key和随机值在5个节点上请求锁,请求锁的超时时间应小于锁自动释放时间。当在3个(超过半数)redis上请求到锁的时候,才算是真正获取到了锁。如果没有获取到锁,则把部分已锁的redis释放掉。