精华内容
下载资源
问答
  • 做为一个运维工程师,你必须掌握最基本的技能方能胜任这份工作,否则,是没有公司愿意接纳你,并继续培养你。1. 独立安装系统与软件在安装系统时你更会去留心学习Linux的目录结构和作用,学会系统的安装方法和软件...

    做为一个运维工程师,你必须掌握最基本的技能方能胜任这份工作,否则,是没有公司愿意接纳你,并继续培养你。

    1.    独立安装系统与软件

    在安装系统时你更会去留心学习Linux的目录结构和作用,学会系统的安装方法和软件安装方式,对目录与文件的操作,呃,这些够基础吗?

    2. 选择一本适合自己的书籍

    学习Linux除了网上免费的视频教程之外,还是要多看书,多理解、思考,将你不会、不懂的做好笔记,好记性不如烂笔头。选择一本适合自己的书籍,有人说《Linux就该这么学》太扯、内容太简单,而我看着这本书却非常适合我自己,自己看其它书籍感觉看不懂,就扔那里不在愿意去看,适合自己的就是最好的书,只有入门了才能更好的往下面学习,合格的工程师更要学会自学。

    3. 管理用户

    Linux是一个多用户、多任务的操作系统,允许许多用户同时使用这个机器处理多个任务,必须管理好这些用户,即使初学Linux的小白也知道,可以通过网络让多人同时登录,而非使用机器上仅有的一个显示器、一个键盘和鼠标。比如 web服务器,是不是多用户?ftp服务器也是多用户。系统上可以开启远程登录ssh 或者telnet,这样几个人同时登录到该Linux系统上面。而需要管理好每个服务后面的帐号(用户),可以安全、合理使用Linux系统资源。

    4. 磁盘的合理管理

    做了运维才知道磁盘不是最值钱,而数据才是无价的。往往磁盘的空间是有大小的,根据业务需求合理分配磁盘变的非常重要,我单位的服务器swap为66G使用1G,而/var空间为36G总是磁盘满满,不得不频繁删除产生的日志,以空出空间,否则就会影响业务的正常使用。真是血的教训,有那么多空间却不能拿来使用,而业务必须24小时*365工作。经常查看磁盘利用率,查看目录大小和文件大小,为在用或者新扩容的磁盘做一个更好的规划。

    5. 查看系统健康状态

    经常有人问我的Linux系统怎么变的这么慢?重启也变慢了?重启慢可能是你加载的程序多,也可能磁盘有坏道,都需要你来检测,系统变慢,有可能运行的程序占满内存,或者CPU跑慢,网络利用率占满,工程师拿起你的命令top 、sar 、 netstat、ps等,查看是什么原因引起的。我们的RHEL 6.8服务器多次发现登录系统收、卡,有一个CPU使用率超100%,进程杀死就可以恢复,是一个木马,可是没过多久系统挂了,系统提示缴纳2个比特币,呃不多说了。

    6. 安全和备份

    对于生产环境的系统,真是安全太重要了。比特币冰毒出现后,最后的解决方法是重新安装系统,但备份还是1个半月之前的数据,无论怎么样还是有备份,惨!!!因此发现安全问题,应首先停止相应的服务,查看日志,执行备份。Linux系统虽然说安全,但也不是百分百,及时打补丁,每天进行日常备份还是极为必要、重要,备份同时存放在多个地方,U盘、网络上面其它的计算机上。你做到了吗?不然总有哭的一天,悲剧啊,真是不知道该如何向用户解释。只有最新的数据备份,即使系统出现问题,也可以将业务恢复到最新的状态,降低最小的损失。安全和备份,我不是一个适合的管理员。。。

    7. 网络服务

    数以百万台的Linux服务器承载着互联网的繁荣,上网看新闻、视频的Web服务,下载文件的ftp服务,邮件的Sendmail,DNS域名的Bind域名解析服务,Squid代理服务,MariaDB数据库业务……,各种服务的使用方法,你都得会,是不是好可怜啊。我们内部需要搭建一个Linux的流媒体服务(视频服务器)和VPN业务,正在搭建中,其实都很好玩、有意思。当你做完这些,一定会感觉到非常有成就感的。

    8. 系统管理和日志分析

    将用户管理、磁盘管理、网络服务合理使用和优化系统,将一些不需要的业务kill掉,Linux系统中通知运行着非常多的进程,但是CPU在统一时钟周期内只能运算一个指令,进程优先级决定了每个进程处理的先后顺序,优化进程的优先级,提升服务效率。系统定时任务crontab合理利用,提高工作效率。程序并不总是一直正常运行,出现的故障总会有一个log日志,查看日志分析故障原因,变的同样重要。比如遇到的各种恶意攻击行为,比较常见的便是HTTP flood,也称之为CC攻击。如何快速的定位到攻击,并迅速响应,成为运维人员必备的技能。查找、定位故障最快的方法就是登陆到相应的应用,查看相应的攻击来源、log日志及时进行处理。

    啊,说了这么多,欢迎小伙伴一起入坑!!!

    展开全文
  • 作者 | 张相於责编 | 何永灿成为合格的开发工程师不是件简单的事情,需要掌握从开发到调试到优化等系列能力,这些能力中的每项掌握起来都需要足够的努力和经验。而要成为合格的机器学习算法工程师...

    作者 | 张相於

    责编 | 何永灿


    成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试到优化等一系列能力,这些能力中的每一项掌握起来都需要足够的努力和经验。

    而要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难,因为在掌握工程师的通用技能以外,还需要掌握一张不算小的机器学习算法知识网络。

    下面我们就将成为一名合格的算法工程师所需的技能进行拆分,一起来看一下究竟需要掌握哪些技能才能算是一名合格的算法工程师。


    图1 机器学习算法工程师技能树


    基础开发能力


    所谓算法工程师,首先需要是一名工程师,那么就要掌握所有开发工程师都需要掌握的一些能力。有些同学对于这一点存在一些误解,认为所谓算法工程师就只需要思考和设计算法,不用在乎这些算法如何实现,而且会有人帮你来实现你想出来的算法方案。这种思想是错误的,在大多数企业的大多数职位中,算法工程师需要负责从算法设计到算法实现再到算法上线这一个全流程的工作。

    笔者曾经见过一些企业实行过算法设计与算法实现相分离的组织架构,但是在这种架构下,说不清楚谁该为算法效果负责,算法设计者和算法开发者都有一肚子的苦水,具体原因不在本文的讨论范畴中,但希望大家记住的是,基础的开发技能是所有算法工程师都需要掌握的。

    基础开发所涉及到的技能非常的多,在这里只挑选了两个比较重要的点来做阐述。

    单元测试

    在企业应用中,一个问题的完整解决方案通常包括很多的流程,这其中每个环节都需要反复迭代优化调试,如何能够将复杂任务进行模块划分,并且保证整体流程的正确性呢?最实用的方法就是单元测试。单元测试并不只是简单的一种测试技能,它首先是一种设计能力。并不是每份代码都可以做单元测试,能做单元测试的前提是代码首先是可以划分为多个单元——也就是模块的。在把项目拆解成可独立开发和测试的模块之后,再加上对每个模块的独立的、可重复的单元测试,就可以保证每个模块的正确性,如果每个模块的正确性都可以保证,那么整体流程的正确性就可以得到保证。

    对于算法开发这种流程变动频繁的开发活动来讲,做好模块设计和单元测试是不给自己和他人挖坑的重要保证。也是能让自己放心地对代码做各种改动优化的重要前提。

    逻辑抽象复用

    逻辑的抽象复用可以说是所有软件开发活动中最为重要的一条原则,衡量一个程序员代码水平的重要原则之一就是看他代码中重复代码和相似代码的比例。大量重复代码或相似代码背后反映的是工程师思维的懒惰,因为他觉得复制粘贴或者直接照着抄是最省事的做法。这样做不仅看上去非常的丑陋,而且也非常容易出错,更不用提维护起来的难度。

    算法开发的项目中经常会有很多类似逻辑的出现,例如对多个特征使用类似的处理方法,还有原始数据ETL中的很多类似处理方法。如果不对重复逻辑做好抽象,代码看上去全是一行行的重复代码,无论是阅读起来还是维护起来都会非常麻烦。


    概率和统计基础


    概率和统计可以说是机器学习领域的基石之一,从某个角度来看,机器学习可以看做是建立在概率思维之上的一种对不确定世界的系统性思考和认知方式。学会用概率的视角看待问题,用概率的语言描述问题,是深入理解和熟练运用机器学习技术的最重要基础之一。

    概率论内容很多,但都是以具体的一个个分布为具体表现载体体现出来的,所以学好常用的概率分布及其各种性质对于学好概率非常重要。对于离散数据,伯努利分布、二项分布、多项分布、Beta分布、狄里克莱分布以及泊松分布都是需要理解掌握的内容;对于离线数据,高斯分布和指数分布族是比较重要的分布。这些分布贯穿着机器学习的各种模型之中,也存在于互联网和真实世界的各种数据之中,理解了数据的分布,才能知道该对它们做什么样的处理。

    此外,假设检验的相关理论也需要掌握。在这个所谓的大数据时代,最能骗人的大概就是数据了,掌握了假设检验和置信区间等相关理论,才能具备分辨数据结论真伪的能力。例如两组数据是否真的存在差异,上线一个策略之后指标是否真的有提升等等。这种问题在实际工作中非常常见,不掌握相关能力的话相当于就是大数据时代的睁眼瞎。

    在统计方面,一些常用的参数估计方法也需要掌握,典型的如最大似然估计、最大后验估计、EM算法等。这些理论和最优化理论一样,都是可以应用于所有模型的理论,是基础中的基础。


    机器学习理论


    虽然现在开箱即用的开源工具包越来越多,但并不意味着算法工程师就可以忽略机器学习基础理论的学习和掌握。这样做主要有两方面的意义:

    • 掌握理论才能对各种工具、技巧灵活应用,而不是只会照搬套用。只有在这个基础上才能够真正具备搭建一套机器学习系统的能力,并对其进行持续优化。否则只能算是机器学习搬砖工人,算不得合格的工程师。出了问题也不会解决,更谈不上对系统做优化。

    • 学习机器学习的基础理论的目的不仅仅是学会如何构建机器学习系统,更重要的是,这些基础理论里面体现的是一套思想和思维模式,其内涵包括概率性思维、矩阵化思维、最优化思维等多个子领域,这一套思维模式对于在当今这个大数据时代做数据的处理、分析和建模是非常有帮助的。如果你脑子里没有这套思维,面对大数据环境还在用老一套非概率的、标量式的思维去思考问题,那么思考的效率和深度都会非常受限。

    机器学习的理论内涵和外延非常之广,绝非一篇文章可以穷尽,所以在这里我列举了一些比较核心,同时对于实际工作比较有帮助的内容进行介绍,大家可在掌握了这些基础内容之后,再不断探索学习。

    基础理论

    所谓基础理论,指的是不涉及任何具体模型,而只关注“学习”这件事本身的一些理论。以下是一些比较有用的基础概念:

    • VC维。VC维是一个很有趣的概念,它的主体是一类函数,描述的是这类函数能够把多少个样本的所有组合都划分开来。VC维的意义在哪里呢?它在于当你选定了一个模型以及它对应的特征之后,你是大概可以知道这组模型和特征的选择能够对多大的数据集进行分类的。此外,一类函数的VC维的大小,还可以反应出这类函数过拟合的可能性。

    • 信息论。从某种角度来讲,机器学习和信息论是同一个问题的两个侧面,机器学习模型的优化过程同时也可以看作是最小化数据集中信息量的过程。对信息论中基本概念的了解,对于机器学习理论的学习是大有裨益的。例如决策树中用来做分裂决策依据的信息增益,衡量数据信息量的信息熵等等,这些概念的理解对于机器学习问题神本的理解都很有帮助。这部分内容可参考《Elements of Information Theory》这本书。

    • 正则化和bias-variance tradeoff。如果说现阶段我国的主要矛盾是“人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾”,那么机器学习中的主要矛盾就是模型要尽量拟合数据和模型不能过度拟合数据之间的矛盾。而化解这一矛盾的核心技术之一就是正则化。正则化的具体方法不在此讨论,但需要理解的,是各种正则化方法背后透露出的思想:bias-variance tradoff。在不同利益点之间的平衡与取舍是各种算法之间的重要差异,理解这一点对于理解不同算法之间的核心差异有着非常重要的作用。

    • 最优化理论。绝大多数机器学习问题的解决,都可以划分为两个阶段:建模和优化。所谓建模就是后面我们会提到的各种用模型来描述问题的方法,而优化就是建模完成之后求得模型的最优参数的过程。机器学习中常用的模型有很多,但背后用到的优化方法却并没有那么多。换句话说,很多模型都是用的同一套优化方法,而同一个优化方法也可以用来优化很多不同模型。对各种常用优化方法的和思想有所有了解非常有必要,对于理解模型训练的过程,以及解释各种情况下模型训练的效果都很有帮助。这里面包括最大似然、最大后验、梯度下降、拟牛顿法、L-BFGS等。

    机器学习的基础理论还有很多,可以先从上面的概念学起,把它们当做学习的起点,在学习过程中还会遇到其他需要学习的内容,就像一张网络慢慢铺开一样,不断积累自己的知识。这方面基础理论的学习,除了Andrew Ng的著名课程以外,《Learning from Data》这门公开课也非常值得大家学习,这门课没有任何背景要求,讲授的内容是在所有模型之下的基础中的基础,非常地靠近机器学习的内核本质。这门课的中文版本叫做《机器学习基石》,也可以在网上找到,其讲授者是上面英文版本讲授者的学生。

    有监督学习

    在了解了机器学习的基本概念之后,就可以进入到一些具体模型的学习中了。在目前的工业实践中,有监督学习的应用面仍然是最广泛的,这是因为我们现实中遇到的很多问题都是希望对某个事物的某个属性做出预测,而这些问题通过合理的抽象和变换,都可以转化为有监督学习的问题。

    在学习复杂模型之前,我建议大家都先学习几个最简单的模型,典型的如朴素贝叶斯。朴素贝叶斯有很强的假设,这个假设很多问题都不满足,模型结构也很简单,所以其优化效果并不是最好的。但也正是由于其简单的形式,非常利于学习者深入理解整个模型在建模和优化过程中的每一步,这对于搞清楚机器学习是怎么一回事情是非常有用的。同时,朴素贝叶斯的模型形式通过一番巧妙的变换之后,可以得到和逻辑回归形式上非常统一的结果,这无疑提供了对逻辑回归另外一个角度的解释,对于更加深刻理解逻辑回归这一最常用模型有着非常重要的作用。

    在掌握了机器学习模型的基础流程之后,需要学习两种最基础的模型形式:线性模型和树形模型,分别对应着线性回归/逻辑回归和决策回归/分类树。现在常用的模型,无论是浅层模型还是深度学习的深层模型,都是基于这两种基础模型形式变幻而来。而学习这两种模型的时候需要仔细思考的问题是:这两种模型的本质差异是什么?为什么需要有这两种模型?他们在训练和预测的精度、效率、复杂度等方面有什么差异?了解清楚这些本质的差异之后,才可以做到根据问题和数据的具体情况对模型自如运用。

    在掌握了线性模型和树形模型这两种基础形式之后,下一步需要掌握的是这两种基础模型的复杂形式。其中线性模型的复杂形式就是多层线性模型,也就是神经网络。树模型的复杂形式包括以GDBT为代表的boosting组合,以及以随机森林为代表的bagging组合。这两种组合模型的意义不仅在于模型本身,boosting和bagging这两种组合思想本身也非常值得学习和理解,这代表了两种一般性的强化方法:boosting的思想是精益求精,不断在之前的基础上继续优化;而bagging的思想是“三个臭裨将顶一个诸葛亮”,是通过多个弱分类器的组合来得到一个强分类器。这两种组合方法各有优劣,但都是在日常工作中可以借鉴的思想。例如在推荐系统中所我们经常会使用多个维度的数据做召回源,从某个角度来看就是一种bagging的思想:每个单独召回源并不能给出最好表现,但是多个召回源组合之后,就可以得到比每个单独召回源都要好的结果。所以说思想比模型本身更重要。

    无监督学习

    有监督学习虽然目前占了机器学习应用的大多数场景,但是无监督学习无论从数据规模还是作用上来讲也都非常的重要。无监督学习的一大类内容是在做聚类,做聚类的意义通常可以分为两类:一类是将聚类结果本身当做最终的目标,另一类是将聚类的结果再作为特征用到有监督学习中。但这两种意义并不是和某种聚类方法具体绑定,而只是聚类之后结果的不同使用方式,这需要在工作中不断学习、积累和思考。而在入门学习阶段需要掌握的,是不同聚类算法的核心差异在哪里。例如最常用的聚类方法中,kmeans和DBSCAN分别适合处理什么样的问题?高斯混合模型有着什么样的假设?LDA中文档、主题和词之间是什么关系?这些模型最好能够放到一起来学习,从而掌握它们之间的联系和差异,而不是把他们当做一个个孤立的东西来看待。

    除了聚类以外,近年来兴起的嵌入表示(embedding representation)也是无监督学习的一种重要方法。这种方法和聚类的差异在于,聚类的方法是使用已有特征对数据进行划分,而嵌入表示则是创造新的特征,这种新的特征是对样本的一种全新的表示方式。这种新的表示方法提供了对数据全新的观察视角,这种视角提供了数据处理的全新的可能性。此外,这种做法虽然是从NLP领域中兴起,但却具有很强的普适性,可用来处理多种多样的数据,都可以得到不错的结果,所以现在已经成为一种必备的技能。

    机器学习理论方面的学习可以从《An Introduction to Statistical Learning with Application in R》开始,这本书对一些常用模型和理论基础提供了很好的讲解,同时也有适量的习题用来巩固所学知识。进阶学习可使用上面这本书的升级版《Elements of Statistical Learning》和著名的《Pattern Recognition and Machine Learning》。


    开发语言和开发工具


    掌握了足够的理论知识,还需要足够的工具来将这些理论落地,这部分我们介绍一些常用的语言和工具。

    开发语言

    近年来Python可以说是数据科学和算法领域最火的语言,主要原因是它使用门槛低,上手容易,同时具有着完备的工具生态圈,同时各种平台对其支持也比较好。所以Python方面我就不再赘述。但是在学习Python以外,我建议大家可以再学习一下R语言,主要原因有以下几点:

    • R语言具有最完备的统计学工具链。我们在上面介绍了概率和统计的重要性,R语言在这方面提供的支持是最全面的,日常的一些统计方面的需求,用R来做可能要比用Python来做还要更快。Python的统计科学工具虽然也在不断完善,但是R仍然是统计科学最大最活跃的社区。

    • 向量化、矩阵化和表格化思维的培养。R中的所有数据类型都是向量化的,一个整形的变量本质上是一个长度为一的一维向量。在此基础上R语言构建了高效的矩阵和(DataFrame)数据类型,并且在上面支持了非常复杂而又直观的操作方法。这套数据类型和思考方式也在被很多更现代化的语言和工具所采纳,例如Numpy中的ndarray,以及Spark最新版本中引入的DataFrame,可以说都是直接或间接从R语言得到的灵感,定义在上面的数据操作也和R中对DataFrame和向量的操作如出一辙。就像学编程都要从C语言学起一样,学数据科学和算法开发我建议大家都学一下R,学的既是它的语言本身,更是它的内涵思想,对大家掌握和理解现代化工具都大有裨益。

    除了R以外,Scala也是一门值得学习的语言。原因在于它是目前将面向对象和函数式两种编程范式结合得比较好的一种语言,因为它不强求你一定要用函数式去写代码,同时还能够在能够利用函数式的地方给予了足够的支持。这使得它的使用门槛并不高,但是随着经验和知识的不断积累,你可以用它写出越来越高级、优雅的代码。

    开发工具

    开发工具方面,Python系的工具无疑是实用性最高的,具体来说,Numpy、Scipy、sklearn、pandas、Matplotlib组成的套件可以满足单机上绝大多数的分析和训练工作。但是在模型训练方面,有一些更加专注的工具可以给出更好的训练精度和性能,典型的如LibSVM、Liblinear、XGBoost等。

    大数据工具方面,目前离线计算的主流工具仍然是Hadoop和Spark,实时计算方面Spark Streaming和Storm也是比较主流的选择。近年来兴起的新平台也比较多,例如Flink和Tensorflow都是值得关注的。值得一提的是,对于Hadoop和Spark的掌握,不仅要掌握其编码技术,同时还要对其运行原理有一定理解,例如,Map-Reduce的流程在Hadoop上是如何实现的,Spark上什么操作比较耗时,aggregateByKey和groupByKey在运行原理上有什么差异,等等。只有掌握了这些,才能对这些大数据平台运用自如,否则很容易出现程序耗时过长、跑不动、内存爆掉等等问题。


    架构设计


    最后我们花一些篇幅来谈一下机器学习系统的架构设计。所谓机器学习系统的架构,指的是一套能够支持机器学习训练、预测、服务稳定高效运行的整体系统以及他们之间的关系。

    在业务规模和复杂度发展到一定程度的时候,机器学习一定会走向系统化、平台化这个方向。这个时候就需要根据业务特点以及机器学习本身的特点来设计一套整体架构,这里面包括上游数据仓库和数据流的架构设计,以及模型训练的架构,还有线上服务的架构等等。这一套架构的学习就不像前面的内容那么简单了,没有太多现成教材可以学习,更多的是在大量实践的基础上进行抽象总结,对当前系统不断进行演化和改进。但这无疑是算法工程师职业道路上最值得为之奋斗的工作。在这里能给的建议就是多实践,多总结,多抽象,多迭代。


    机器学习算法工程师领域现状


    现在可以说是机器学习算法工程师最好的时代,各行各业对这类人才的需求都非常旺盛。典型的包括以下一些细分行业:

    • 推荐系统。推荐系统解决的是海量数据场景下信息高效匹配分发的问题,在这个过程中,无论是候选集召回,还是结果排序,以及用户画像等等方面,机器学习都起着重要的作用。

    • 广告系统。广告系统和推荐系统有很多类似的地方,但也有着很显著的差异,需要在考虑平台和用户之外同时考虑广告主的利益,两方变成了三方,使得一些问题变复杂了很多。它在对机器学习的利用方面也和推荐类似。

    • 搜索系统。搜索系统的很多基础建设和上层排序方面都大量使用了机器学习技术,而且在很多网站和App中,搜索都是非常重要的流量入口,机器学习对搜索系统的优化会直接影响到整个网站的效率。

    • 风控系统。风控,尤其是互联网金融风控是近年来兴起的机器学习的又一重要战场。不夸张地说,运用机器学习的能力可以很大程度上决定一家互联网金融企业的风控能力,而风控能力本身又是这些企业业务保障的核心竞争力,这其中的关系大家可以感受一下。

    但是所谓“工资越高,责任越大”,企业对于算法工程师的要求也在逐渐提高。整体来说,一名高级别的算法工程师应该能够处理“数据获取→数据分析→模型训练调优→模型上线”这一完整流程,并对流程中的各种环节做不断优化。一名工程师入门时可能会从上面流程中的某一个环节做起,不断扩大自己的能力范围。

    除了上面列出的领域以外,还有很多传统行业也在不断挖掘机器学习解决传统问题的能力,行业的未来可谓潜力巨大。


    IT派 - {技术青年圈}
    持续关注互联网、区块链、人工智能领域



    公众号回复“AI”

    邀你加入{ AI机器学习圈 }


    展开全文
  • 网上看到有人写了一篇文章,关于一个合格的运维工程师应该具体哪些素质,正好前段时间有位boss也问过我这个问题。 简单地写下自己的看法。。 1.良好的责任心 ops是直接面向生成环境的一线操作人员,任何一个不当的...

    网上看到有人写了一篇文章,关于一个合格的运维工程师应该具体哪些素质,正好前段时间有位boss也问过我这个问题。

    简单地写下自己的看法。。

    1.良好的责任心
    ops是直接面向生成环境的一线操作人员,任何一个不当的操作都有可能引起故障,要本着对用户负责的态度做好每一次变更。在出现故障时也要勇于承担责任而不是千方百计想着怎样掩盖自己的过失,犯错误不可怕,可怕的是犯了错误后不知反思,不去思考该如何避免。很多变更和故障处理都可能发生在凌晨或者节假日,这也要求ops能够快速地没有怨言地进行响应,微薄上看到一位ops同学正在“啪啪”,接了电话就提上裤子赶回公司处理故障去了。。

    2.快速的学习能力和比较广泛的知识面
    ops经常会接触各种样的新知识,也会在线上遇到一些诡异的事情,这就要求运维人员对各个领域的知识都有所了解。从服务器到网络设备,从网络到操作系统,到安全,到缓存,到应用程序,优秀的ops还会对各种开发语言有比较深入的了解(devops),对程序的开发,结构提一些重要意见。

    3.快速的troubleshooting能力
    这个是每个ops都应该具备的基本技能。。在遇到线上故障时,能够有清晰的排查思路和解决问题的思路是很重要的。。

    4.自动化的理念
    一个优秀的ops必定是一个“懒惰的”的ops,一件事情重复做3次以上就应该考虑自动化了,可以自己写工具,也可以使用开源的自动化管理工具。只有自动化的工作做好了,ops才能从枯燥繁琐的装机工作中解脱出来去做更有意义的事情上来,否则只会被别人看成一个只能装机的ops...

    5.良好的心里素质,顶得住压力
    由于ops提供的是一个基础架构的服务,是不会直接面向用户的,这就导致很多人其实是感受不到ops的存在,越是做得好的运维团队越是如此(服务很稳定,没有故障出现,ops不再担任救火员的角色)。做得好,没人会感觉得到,做得烂,后面一定一堆人在骂你,。。。筒子们,为了不被骂,还是尽量做好吧。。另外就是有了成绩,没你的事,出了问题,你来“背黑锅”,所以要时刻做好“背黑锅”的准备。。

    6.胆大细心
    不能因为一件特别有意义的工作有一定风险(比如说自动化)就不去推进,你要做的不是一层不变,而是在变更时做好checklist,做好回滚策略,尽最大可能减少变更带来的影响。
    如果把运维的工作想成“无过便是功”就永远不会有太大的进步。

    7.技术 geek
    ops需要接触比较多的技术,要让自己处在一个不断探索,学习的状态,才会让自己有更大的进步。

    8.良好的编码能力
    shell就不用说了,3p里面怎么也得学一门吧?最好可以自己能实现一些开发需求(没有人比自己更清楚想要什么)

    9.身体素质要好
    这个比较扯淡,哈哈,不过ops经常需要熬夜,有时候还需要去机房抗抗服务器,身体不好怎么能行?


    总得来说一句话,作为运维工程师,要抗得了服务器,调得了网络,装得了系统,排得了错,调得了性能,玩得了架构,写得了代码,背得了黑锅,耐得住寂寞。。

    暂时想到这么多,后面想到了再补充,欢迎大家拍砖。。哈哈。


    本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1331130,如需转载请自行联系原作者

    展开全文
  • 如何成为一个合格的安全工程师

    千次阅读 2017-06-29 17:29:38
    个人想要学习成为安全工程师,做了一个初步了解:需要技能、发展方向、学习规划 需要掌握的技能 常见的渗透测试方法流行的web攻防方法熟悉TCP/IP协议框架,并了解它们的安全问题常见的安全工具和攻击工具的...

    个人想要学习成为安全工程师,做了一个初步了解:需要技能、发展方向、学习规划

    需要掌握的技能

    • 常见的渗透测试方法
    • 流行的web攻防方法
    • 熟悉TCP/IP协议框架,并了解它们的安全问题
    • 常见的安全工具和攻击工具的使用
    • 常见操作系统的安全:windows安全、linux安全、Unix安全
    • 常见网络安全设备的配置
    • 常见中间件(IIS、tomcat、WebSphere等)的安全配置
    • 常见数据库(MSSQL、MYSQL、Oracle、DB2等)的安全配置
    • 常见网络设备(华为交换机、路由器等)、安全设备(防火墙、IPS、WAF等)的安全配置
    • 安全应急事件的处理:常见评估等服务项目经验
    • 常见安全标准(ISO 27001等等)的理解
    • 后期不断学习的方向和需要关注的领域

    职业发展方向

    安全服务工程师--->职业渗透师或安全顾问--->安全专家--->资深安全专家

    学习步骤

    1、学习windows、liunx操作系统的安全配置与管理

    2、学习TCP/IP协议框架

    3、通过安全工具或攻击工具学习渗透攻防的流程与方法

    4、学习Web攻防方法

    5、了解网络安全设备的安全配置与基本功能

    6、了解信息安全标准

    7、了解病毒木马威胁的深度分析

    ...............


    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 一个合格的前端工程师应该具备怎样的能力?下面和千锋广州小编一起来看看吧。 1、学习新技术的能力 无论你是一个入坑多年的老鸟还是刚刚入坑的菜鸟,心里都明白,前端技术的更新真的不是一般的快啊。如果想要做好...
  • 2. 负责系统网络的拓扑图的建立和完善,并做好系统路由的解析和资料的整理。 3. 负责机房线路的布置和协议的规范工作。 4. 负责计算机间的网络联接及网络共享,并负责网络间安全性的设置。 5. 负责对网络...
  • 一个合格数字IC设计工程师的知识结构

    千次阅读 多人点赞 2017-10-23 11:23:36
     作为一个真正合格的数字IC设计工程师,你永远都需要去不断学习更加先进的知识和技术。因此,这里列出来的技能永远都不会是完整的。我尽量每年都对这个列表进行一次更新。如果你觉得这个清单不全面,可以在本
  • 做为一个运维工程师,你必须掌握最基本的技能方能胜任这份工作,否则,是没有公司愿意接纳你,并继续培养你。1. 独立安装系统与软件在安装系统时你更会去留心学习Linux的目录结构和作用,学会系统的安装方法和软件...
  • 一个合格软件工程师基本的素质

    千次阅读 2011-03-29 22:37:00
    <br /> 作为一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。  1:团队精神和协作能力  把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该...
  • 我今年才18岁,我学了1年多的电脑维护我很想请我大家这样才能做好一个合格工程师。 
  • 论述合格的总监理工程师做好的关键工作.doc
  • 做为一个运维工程师,你必须掌握最基本的技能方能胜任这份工作,否则,是没有公司愿意接纳你,并继续培养你。1. 独立安装系统与软件在安装系统时你更会去留心学习Linux的目录结构和作用,学会系统的安装方法和软件...
  • 位好的Web前端开发工程师在知识体系上既要有广度,又要有深度,所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。现在说的重点不在于讲解技术,而是更侧重于对技巧的讲解。技术非黑即白,只有对和错,...
  • 问题描述:性能测试工程师究竟需要掌握哪些技能才称得上一个合格的性能测试工程师?精彩答案:会员 裸奔的蜗牛:1、能搭建一个稳定、可重复的测试环境,能够保证测试结果的正确;保证达到测试执行的技术需求;保证...
  • 经过了这次面试后使我真正认识到了作为一个系统网络工程师所要掌握的技术。无论这家公司是否录用我,我都认为今天得面试是最成功的,因为面试官使我看到了自己的一些不足,增加了我的面试经验与临场应变能力,最重要...
  • 成为合格的开发工程师不是件简单的事情,需要掌握从开发到调试到优化等系列能力,这些能力中的每项掌握起来都需要足够的努力和经验。而要成为合格的机器学习算法工程师(以下简称算法工程师)更是...
  • 如何成为一个合格的软件QA工程师? 具有与好的测试工程师相同的素质对于QA工程师也是必要的。另外,他们必须能够理解整个软件开发过程以及怎么能适合商业方法和公司的目标。沟通技巧和从多个角度分析问题是很重要...
  • 、首先本职工作一定要做好做精 本人之前在干兼职的时候,也忽视过本职工作,从而导致自己落后平均技术水平,虽然之后迎头赶上,但这不能不算是遗憾。前在接一些活的时候就感觉技术的重要性了,如果当年我技术再...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,477
精华内容 3,390
关键字:

如何做好一个合格的工程师