周佳是个资深宅男,平时有时间主要是宅。比较喜欢研究心理学方面的书籍,平时喜欢看书,给大家安利一本书《超越自卑》,个体心理学大师级著作。兴致来了能玩一天游戏,经常看电影。在工作方面一直专注于服务器后端开发,目前在一家服务公司做云计算基础服务。

挨踢部落故事汇(15):不断拓新成为科技大潮中的弄潮儿_开发者

周佳·Java服务端工程师

Python语言现在十分火热,而且很多云计算底层服务都是使用Python做的,分享下周佳是如何从Java程序员学习Python和云计算的心得。

从Java到Python,眼界大开

周佳在第一份工作满2年的时候,对于公司内部的技术体系都摸透了,觉得没有什么提升了,就想学点新东西。那时候14年左右,大数据刚刚火起来,都在谈大数据。他也看了一阵大数据的内容,无非就是Hadoop那套东西,安装部署之外,好像感觉不能深入做一些东西。后来公司开始全面引进云服务,移植一些本地的服务到云服务平台,于是周佳开始接触到一些云服务平台,公司有意向作一些云资源给用户,这就要用到云服务的公共API,而这些API接口是Python写的。做为一个Java程序员,刚开始对Python代码有一部分是不能理解的。于是周佳开始进军学习python语言了。

要系统的学习一门语言不能仅靠只在网络上查找教程,虽然有些帖子某个知识点写的非常精华,但买一本书是必要的。现在周佳还记忆犹新,当时买的书是《Python基础教程(第2版 修订版)》,书的内容不错,而且配套有很多练习项目,只可惜他并没有全部看完。大约一周的时间,他把书上的知识点全部过一遍,就开始着手项目了。

相比Java而言,Python语言是一门更高级的语言,抽象度更高。14年Java8发布,当时周佳并没有函数式编程的概念,学习了Python,给他打开了一扇新的大门。函数式编程抽象程度高于面向对象,而且在代码的写法上更简洁,偏向于数学化。但是相对的,其可读性不如面向对象那样易于理解。Python的抽象程度高于Java,许多Java需要长篇大论的代码,Python代码只要区区几行就能搞定。这让周佳对Python也是爱不释手。比如:创建一个1到100的队列,在Java中只能循环循环赋值,而在python中range(100)就可以了。只会一门编程语言的程序员不是好程序员,当你多会几门语言的时候,你的眼界会大大的开阔,可能不止发现了一扇门,而是发现了很多窗,解决问题的思路也就多了。

周佳后来入职的下一家公司,需要做个后端管理平台,于是他选型Python的Django框架作为开发平台。有空的时候跟同事聊天,被问道当初他学习Python是怎么入门的,花了多长时间,他说一周!其实语言之间虽然语法千差万别,但是理念都是相通的。当初学习Java的时候,他大三学了一年都是懵逼状态,学习第二门语言的时候,真的只用了一周时间。李连杰的电影里有句话:学习乾坤大挪移普通人要30年,打通任督二脉者只需1个时辰,想必周佳是打通任督二脉了吧。

Python到云计算,继续拓新

2016年周佳入职到一家做云计算的公司,在面试的时候,他提到有Java和Python双重开发技能,很容易就通过了面试。到了新公司,又是一个全新的领域,云计算是他以前是没有接触过的。公司云计算平台的底层是用Python做的,上层业务平台使用Java写的。当然,具体的业务平台架构是十分复杂的,上层使用的Springcloud的微服务框架,部署于Docker容器内。使用Jenkins做持续集成开发部署。底层基于Docker和虚拟机做云服务。刚入职的时候,他好些东西不会,硬着头皮学,抱着大腿就不放,特别是Docker部分,之前他所在的都是一些规模小的公司,可能没有使用Docker的必要。周佳看着教程,对着命令一遍一遍的练习,拉去镜像,创建容器,配置网络,挂载数据卷,反复练习。经过不长时间,他终于从对云计算一窍不通的门外汉变成团队的中坚力量,不仅做上层业务平台,还做底层基础服务。坚持不懈的学习使他在全新技术领域有了立足之地。

然而程序猿的世界总是充斥着各种突发事件,前不久云服务好些个容器挂载的存储设备突然全部变成只读设备,无法进行任何操作,在物理服务器上也无法执行相应的Docker命令,无法查询Docker的容器信息,执行任何Docker命令都进程卡死,周佳判断肯定是Docker的daemon进程被某些容器卡死了。如果重启daemon能解决问题,但是这样做,这个物理服务器上的所有Docker容器会全部死掉,恢复工作是灾难性的,肯定是下下策。关键是找到到底是哪几个容器把进程卡死的,于是他找到运维最近创建的几个容器,进入容器目录,查询容器的Config.json配置文件,查询容器进程的pid,将刚刚创建的容器进程全部杀掉。试了一下docker ps,果然好了,随后他重建了这几个Docker容器。事后周佳跟运维沟通了下,原来是由于最近运维给存储服务更换过硬盘,更换的硬盘上的存储设备对应的正是这个物理机上的这几个容器,导致容器存储设备无法挂载。

随着IT技术的深入发展,越来越多的公司都在构建自己的云服务,这有两方面的意义,一个是构建自己的基础信息平台,提高开发运维的自动化程度,提高工作效率;第二个是可以整合物理资源,出售部分剩余的物理资源为公司获取一定收入,当然做大了,还能成为公司的主营业务。

一入猿门深似海,学海无涯苦作舟。当踏上IT这条道路,就注定走上了终身学习的道路。计算机技术飞速发展,也推动着开发者不得不拼命的学习新技术。只有不断的更新自己的知识技能,才能成为科技大潮中的弄潮儿。

如果你也愿意分享你的故事,请加51CTO开发者QQ交流群 312724475联系群主小官,期待你的精彩故事!