Java程序员的互联网转型之路
08年毕业跑到上海,在经济危机最热闹的一年找到份勉强活下去的java研发工作,从此开始了漫长的通信行业软件开发。几年间身边的同事跳槽到互联网行业,也有新鲜血液补充进来,总体来说人员质量是在不断下降的。直到自己也决定转型,中间也受过鄙视遇过挫折走过弯路,这里将自己的感受跟大家分享下,希望能对有相同想法的从业人员有所帮助。
在开始讲干货之前,先了解下互联网。互联网的生命线是客户体验,短时的砸钱可以迅速扩展用户量,但是如何保持客户黏度才是真正的重点。互联网的精神就一个字“快”!快包含两层意义:第一层对于系统来说(性能快、终端响应快、扩展快),第二层对于开发人员(轻量级、上手快、开源)。只有够快才可以提高客户体验,没人愿意盯着手机屏幕等5秒钟以上。至于如何为客户提供更舒服的服务方向那属于策划部门考虑的问题,不属于咱们程序员能左右的。
下面开始具体技术点,一切都是围绕着“快”。
第一, 熟练使用Linux系统。
Why is Linux?开源+安全+便捷。开源意味着成本的降低,今年风靡一时的勒索软件又给Linux打了一次安全广告,docker的兴起又巩固了Ubuntu、centos等linux内核的霸主地位。可以说不会命令行(桌面会占用硬件资源,失去了linux的部分优势)操作Linux系统以后将会寸步难行。
第二, 关系型数据库选择MySql而不是Oracle
虽然NoSql的盛行使关系型数据库市场越来越小,但是80%产品的核心数据还是需要关系型数据库来维护的。这里推荐大家加强MySql的学习,Oracle可以选择性放弃,虽然两者在使用上没有太大的区别,但是Oracle实在是太贵了!我们曾经7位数采购过一个Oracle一体机,硬件条件确实牛逼到飞起,但是互联网中讲究的是开源和扩展,讲究的是叼丝抱团PK高富帅。
第三, 掌握NoSql技术。
需要大家了解NoSql的使用场景,解决的是非结构化数据的存储和查询问题,这个是关系型数据库做不到的。推荐学习HBase,倒不是因为HBase比起其它NoSql产品多优秀,而是在学习HBase的过程中可以pick up很多其他有用的知识。例如HBase存储是依赖Hadoop的HDFS,可以了解下大数据是如何存储的;协同服务使用的zookeeper,可以了解下zookeeper的4种文件特性以及自主选拔机制。
重点需要学习HBase中数据是如何存储的,为什么rowkey查询效率如此之快。
第四, 掌握一种缓存技术
JVM缓存无法解决的两大难题:1缓存不够大,2跨JVM无法共享。应运而生了各种缓存技术,这里推荐Redis,因为Redis已经成为了主流,要用我们就用最流行的。Redis在大的方面有Nosql存储和共享缓存两种用法,其中共享缓存又分为系统缓存、登录用户缓存、ORMapping二级缓存等流行用法。
第五, 熟练掌握一种MQ
缓存技术只是解决了IO上的“快”,但是对逻辑运算、业务处理等响应速度没有任何提高,何以解忧唯有MQ。MQ用于去瓶颈、非事务、最终一致性、Event Sourcing、收集器等场景。这里推荐kafka,原因跟redis一样,流行,功能上基本能涵盖所有MQ应用场景。
第六, 精通一种微服务框架。
讲到这里才有了点Java的影子,传统软件开发讲究的是MVC、SSH、SSi这些古董,但是互联网里讲的是微服务。微服务架构主流的有2种:Dubbo和Spring Cloud,我们产品经历过Dubbo这条弯路以后最终还是走向了Spring Cloud的怀抱。RestFul的调用机制速率从协议上来开虽然不如RPC,但是应用场景广泛、标准化、可读性强等优点完全掩盖协议上的性能差距,再加之Spring Cloud不断地有大牛添砖加瓦(我在初学Spring Cloud用的是Brixton,学完后已经出来Dalston版本了),Spring Cloud变得越来越强大,再加上java程序员对Spring有一种特殊的情结,所以Spring已经成为了主旋律。
第七, 分布式事务机制
分布式事务到目前为止还是个世界通用难题,没有一颗银弹能完美的解决这个问题,而面试官却偏偏每次面试都要问。解决的中心思想就俩字“取舍”,根据自己的业务场景决定放弃一些东西。方案有:二阶段提交、串行调用、MQ+消费、业务补救等,阿里等大公司也有自己的解决方案,但也都是贴合自己业务来设计的。
第八, 了解ELK原理。
越是前端的技术国内用的人越少,绿坝里面的资料也就越少,所以为了学习或者解决问题经常需要参阅国外网站的资料,混迹国外的技术论坛进行交流,所以英语水平有时间还是要提高下,否则很影响新知识的吸收速度。
本文写给跟我一样正在转型路上的java程序员们,基本涵盖了各个方面,也给了我个人推荐的具体技术点,希望大家少走弯路,把精力用到刀刃上。
Java程序员的互联网转型之路相关推荐
- 一个java程序员看待互联网行业与物联网行业的区别
版权声明:本文为博主原创文章,未经博主允许不得转载 互联网(Internet):又称网际网络,或音译因特网(Internet).英特网,互联网始于1969年美国的阿帕网.是网络与网络之间所串连成的庞大 ...
- java程序员的大数据之路(13):Pig入门
Pig简介 Pig为大型数据集的处理提供了更高层次的抽象. Pig包括两部分: 用于描述数据流的语言,称为Pig Latin. 用于运行Pig Latin程序的执行环境.当前有两个环境:单JVM中的本 ...
- java程序员的大数据之路(3):用maven构建Hadoop项目
背景 由于Hadoop项目多数是比较大的项目,因此我们选择使用构建工具来构建Hadoop项目,这里我们使用的是maven.当然也可以使用Gradle等比较流行的构建工具 构建过程 这里总结一下我使用I ...
- 一名大专程序员的前端转型之路
作者 | 张旭乾 责编 | 梦依丹 出品 | CSDN(id:csdnnews) 前端和后端开发,哪一个更容易上手?我们时常会在各大技术论坛看到类似的提问.话说兴趣是最好的老师,不实践,你可能很难知 ...
- Java程序员必经的实践之路:docker离线导入镜像
1.1. 操作系统简介 我通过以下四点介绍什么是操作系统: 操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石. 操作系统本质上是一个运行在计算机 ...
- 春雨初霁,我站在巨人的肩膀上:一个Java程序员的逆袭之路。
职场上的机会与选择总是如此多变而又无常.但是,也有看起来平凡无奇的从业者,因为自己的努力和坚持,在职业生涯中慢慢地升起. 这个曾经只是Java外包程序员的同学,如今已经成为高级管理人员,令我们心中钦佩 ...
- Java程序员必经的实践之路:Java中高级核心知识全面解析(11)
ThreadPoolTaskExecutor定义一些策略: ThreadPoolExecutor.AbortPolicy:抛出RejectedExecutionException来拒绝新任务的处理. ...
- java程序员的大数据之路(2):创建第一个Hadoop程序
环境 Ubuntu 16.04 + Hadoop 2.7.4 + Intellij idea 2017.2 + jdk 1.8 创建过程 新建工程 新建一个工程 输入工程名 可以随便给工程起一个名字, ...
- Java程序员必经的实践之路:微服务与SOA架构
而另一方面,微服务推崇执行的标准(例如HTTP)却是人们广泛了解并共同使用的.我们可以通过选择合适的语言或工具来构建某个组件微服务.SOA与微服务还有一个更大的区别:领域模型.在基于微服务的软件中,每 ...
最新文章
- 【OpenCV 4开发详解】图像直方图绘制
- C# EF 基础操作
- Nacos 原理:推+拉打造客户端配置信息的实时更新
- python----python使用mysql
- mysql fpmmm_zabbix配fpmmm(mpm)数据传送不了问题解决
- 社交系统ThinkSNS可以运营什么?可以应用于什么场景?
- Linux初级阶段学习笔记-本地源YUM配置
- 181226每日一句
- jQuery 集合 搜索操作(父辈元素搜索、同辈元素搜索、子元素搜索)
- python处理access数据库教程_Python操作Access数据库基本操作步骤分析
- component组件基础
- iso 系统降级的处理方法
- 纵列式双旋翼直升机飞行控制律建模
- 北京高级项目经理市场需求
- python --爬虫 --下载小说
- 三国管理智慧之刘备的管理之道
- 在线预览pdf(不可下载)
- andriod studio实现界面切换
- Android6.0权限
- 在非登录页面提示用户还未登录