一位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原理。
e-elasticsearch,是基于lucene的搜索引擎,它的出现是为了解决索引问题的,但是后来增加了logstash和kibana这俩左膀右臂,又组成了elk这个日志收集分析套件,这货正好解决了分布式系统任务跟踪和问题定位难的问题,配合spring cloud的sleuth又成了性能预警的神器为服务治理提供了基础数据。
第九, 云计算
产品的云化只是个概念,之所以了解云计算是为了能让我们有个完整的知识体系。iaas、paas层在国内已经基本成熟,saas我在国内还没有看到有成型的产品。有兴趣的同学可以注册学习下美帝的salesforce,了解下世界上最先进的crm云产品是何等的牛x。国内的电信、金融行业正在砸钱搭建自己的私有云,bat等有能力的大公司在办自己的公有云,私有云+公有云也有很广阔的市场前景,我接触过的很多企业都在做混合云的设计方案。
第十, 提高英语水平
越是前端的技术国内用的人越少,绿坝里面的资料也就越少,所以为了学习或者解决问题经常需要参阅国外网站的资料,混迹国外的技术论坛进行交流,所以英语水平有时间还是要提高下,否则很影响新知识的吸收速度。
互联网中用到的所有的技术基本都是默认可用,满足“上手快”的要求。大部分组件也都是水平扩展的,为了满足“性能快”的要求。例如spring cloud中启动参数基本都有默认值,zookeeper、elasticsearch、logstash、kafka等组件目录结构都是bin里是启动程序,conf里是配置程序,解压即可用,都有默认值,通过配置做水平扩展。
本文写给跟我一样正在转型路上的java程序员们,基本涵盖了各个方面,也给了我个人推荐的具体技术点,希望大家少走弯路,把精力用到刀刃上。

外壳的构造和配置如何影响功率MOSFET器件内部的工作温度
什么是白炽灯_白炽灯优缺点及尺寸介绍_白炽灯发光原理
土壤墒情监测系统的应用广泛,它有哪些优势
恩智浦“跨界之王”i.MX RT如何赋能物联网边缘应用?
爱德万测试收购美国W2BI公司
一位Java程序员转型互联网的经历
浩鲸科技5G消息聚合平台助力浙江移动推出5G消息业务
二氧化碳检测仪的检测原理以及使用效果的介绍
仪表放大器公式推导+工作原理
5G时代手机仅是众多智能终端之一,毫米波产业将会更迎来多机会
可穿戴电化学传感器件的研制及其应用
光传送网OTN技术在5G承载中的价值
TDK-EPC新推出爱普科斯(EPCOS)转发机线圈(B82450H2364A000)
分享几款网络分析仪、频谱分析仪的参数特性
南京物联传感技术小物环境监测摄像机简介
Mighty Mouse微型圆柱形连接器和电缆
用LS7535组成的调光电路图
DIC 2020 国产液晶面板制造商京东方和天马微电子组团亮相
南卡新品runner pro骨传导耳机与韶音as800多角度测评大对比
IoE概念的4个主要要素分享