2018,如何从技术小白升级到大牛程序员?
点击上方“CSDN”,选择“置顶公众号”
关键时刻,第一时间送达!
作者简介:互扯程序,某互联网公司 P8 级专家攻城狮,曾参与过央视全台网的研发工作。目前正在做车联网项目的云平台的架构设计与研发工作。平时喜欢打球游泳,偶尔发表一些技术文章,有个公众号叫「互扯程序」。
2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来。俗话说一年之计在于春,虽说距立春还有一个多月,我觉得我们如果想从小白升级到大牛,应该早做计划,规划一下今年要学哪些新的技能呢?我们来一一探讨一下。
SpringBoot
Spring Boot:是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
Spring Boot 特点:
创建独立的 Spring 应用程序;
嵌入的 Tomcat,无需部署 WAR 文件;
简化 Maven 配置;
自动配置 Spring;
提供生产就绪型功能,如指标,健康检查和外部配置;
绝对没有代码生成和对 XML 没有要求配置。
在此之前,我们用 SSM 进行整合的时候,大量的 XML 配置,一个配置不对,或者版本对应不上,就会有各种坑,恶心到想吐。然后当我们使用 SpringBoot 后,我们只需要简单的 Properies 或 YML 配置即可搞定。而且我们再也不用手动下载 Tomcat 了,SpringBoot 帮我们把它嵌入到了程序里,把程序打成 jar 包,只需简单用命令行运行 java -jar xxx.jar 即可完成一个 Web 项目的启动,so esay。
Spring Cloud
Spring Cloud:简单来说就是一个微服务框架,是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。
Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Docker
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 的特性:
速度飞快以及优雅的隔离框架;
物美价廉;
CPU/内存的低消耗;
快速开/关机;
跨云计算基础构架。
有了 Docker,妈妈再也不用担心服务迁移做大量的配置工作了。
关于深度学习
PaddlePaddle
PaddlePaddle:并行分布式深度学习开源平台,它的前身是百度于 2013 年自主研发的深度学习平台,且一直为百度内部工程师研发使用。
全球各大科技巨头开源的深度学习平台都极具各自技术特点,对于百度,由于其自身在搜索、图像识别、语音语义识别理解、情感分析、机器翻译、用户画像推荐等多领域的业务和技术方向,PaddlePaddle 则表现更加全面,是一个相对全功能的深度学习框架。
PaddlePaddle 为深度学习研究人员提供了丰富的 API,可以轻松地完成神经网络配置,模型训练等任务。
百度成为继 Google、Facebook、IBM 后另一个将人工智能技术开源的科技巨头,同时也是国内首个开源深度学习平台的科技公司。
“中国人要有自己的深度学习框架”,这句话好像是在参加百度 AI 大会的时候听到的,还是很给力的。
TensorFlow
TensorFlow 是谷歌发布的第二代机器学习系统。是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点(Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。
这种灵活的架构可以让使用者在多样化的将计算部署在台式机、服务器或者移动设备的一个或多个 CPU 上,而且无需重写代码;同时任一基于梯度的机器学习算法均可够借鉴 TensorFlow 的自动分化(Auto-differentiation);此外通过灵活的 Python 接口,要在 TensorFlow 中表达想法也变得更为简单。
Scikit-Learn
Scikit-Learn 是用于机器学习的 Python 模块,它建立在 SciPy 之上。该项目由 David Cournapeau 于 2007 年创立,当时项目名为 Google Summer of Code,自此之后,众多志愿者都为此做出了贡献。
Scikit-Learn 主要特点:
操作简单、高效的数据挖掘和数据分析;
无访问限制,在任何情况下可重新使用;
建立在 NumPy、SciPy 和 matplotlib 基础上。
Caffe
Caffe 是由神经网络中的表达式、速度、及模块化产生的深度学习框架。后来它通过伯克利视觉与学习中心(BVLC)和社区参与者的贡献,得以发展形成了以一个伯克利主导,然后加之 Github 和 Caffe-users 邮件所组成的一个比较松散和自由的社区。
Caffe 的特点:
易用性:Caffe 的模型与相应优化都是以文本形式而非代码形式给出,Caffe 给出了模型的定义、最优化设置以及预训练的权重,方便快速使用;
速度快:能够运行最棒的模型与海量的数据;
Caffe 可与 cuDNN 结合使用,可用于测试 AlexNet 模型,在 K40 上处理一张图片只需要 1.17ms;
模块化:便于扩展到新的任务和设置上;
使用者可通过 Caffe 提供的各层类型来定义自己的模型。
关于深度学习的开源框架还有很多,不在此一一介绍,能够学会并熟练运用其中一个或两个,那你就是大牛了。
区块链
比特币想必大家已经是如雷贯耳了,09 年刚诞生的时候单价也就几美分而已,17 年 12 月交易价格达已经到了 1 万七千美元还多。约合人民币 11.3 万/枚。
区块链正是比特币的底层技术和基础架构,它是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。
区块链本质上是一个去中心化的数据库,同时作为比特币的底层技术,区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一 种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
据说研究这项技术的人的年薪 100w - 300w 不等,也许更多。
关于语言
Java
Java 已然获得了编程语言界的霸主地位,这是没有哪个程序员会否认的,在当下的程序员总数量中,Java 程序员数量在 900 万左右,为世界编程语言程序员数量上第一,并且 JavaEE 程序员还是全世界需求量最大的程序员。
Scala
在资深程序猿眼中,能替代 Java、并且能做得比它更好的只有 Scala。不可否认的是 Scala 在业内的口碑不错,作为一个后起之秀,它解决了 Java 普遍存在的许多问题,Scala 的性能比 Java 更加强大。
Go
Go 语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。
前面提到的 Docker 就是 GO 语言开发的。
Python
Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
Python 已然成为机器学习领域的标配,据说即将纳入高考,虽未得到官方证实,但也是大势所趋。
Julia
Julia 语言(https://julialang.org/) 专门针对科学计算、机器学习、数据挖掘、大规模线性代数、分布式和并行计算,在 Julia 的使用者眼里,Python 不够快也不够方便。此消彼长,当它擅长某一项工作时,肯定会忽略其他部分。
结束语
如果上述的技术,你正在学习或者已经在运用当中,如果你还不是大牛,那你一定是在成为大牛的路上。
其实可以成为大牛的姿势还有很多种,这里就不在一一列举了,只要你一如既往的坚持你认为是对的路,终有一天你将不会在乎你是不是大牛。
最后祝大家 2018 年,新年快乐,心想事成。工资高高、Bug 少少、KPI 多多。欢迎在下方留言说说自己的 2018 年计划学习的新技术,给大家进行分享!
本文为作者投稿,欢迎更多朋友微信联系:donyintxy 投稿,一起为程序员传播更具价值的优质内容。