Martin

【译】工程师如何打怪升级

元气小坏坏 提交于 2021-01-22 04:02:21
初级、中级和高级工程师并不是通过你从事编码工作的年限来判断的。初级工程师有时可能比高级工程师工作时间还要长。能否成为更高等级的工程师完全取决于你对专业技能的掌握程度,这也不是说高级工程师必须在每一方面都是专家,但是可以肯定的是,高级工程师一定比初级和中级工程师更加专业。<!-- more --> 不仅仅是编程能力更加专业,高级工程师和初中级工程师相比还有其他区别。这区别到底是什么呢? 知识 很明显,高级工程师需要掌握更多的知识。学习设计模式、架构、自动化测试、性能、安全等知识是初级工程师迈向中高级工程师的必经之路。 知道软件开发过程中需要做什么是一件非常重要的事情。但是当你掌握了上面所说的全部知识时,你并不是已经成为高级工程师了,这些知识只是不同等级工程师之间的区别之一。 编码 很多人认为编码是人和计算机之间的一种交流,实际上是人和人的交流然后用于指导计算机。代码最终还需要编译成二进制码。 你的代码需要保证可读性,这样以后其他开发者才能在这基础上做其他工作。最好能做到让一个从来没有看过你的代码的团队一打开就能立即进行新功能开发或者修复bug。这也是初级和高级工程师的区别之一。 这里我们忽略了中级工程师,因为中级工程师在编程能力的比较中处于灰色地带。因为中级工程师介于初级与高级之间,并且更倾向于高级。编码能力更更加依赖于经验,而中级工程师通常至少参与过一次完整的软件开发流程

那什么拯救你!IBM存储应收大幅下滑8%

家住魔仙堡 提交于 2021-01-18 18:59:11
蓝色巨人存储营收下滑何时休? IBM最新季度报表和全年财政结果显示,在2014年度存储硬件业务营收衰减之势并没有停止。2014年第四季度营收下滑8个百分点,8.64亿美元。 虽然现在看起来数量还是相当之巨大,但是这一数字在2011年同期为12亿美元。我们在图表中的数据列出了这些数据,IBM存储硬件销售态势不容乐观。 只要观察图表中四季度销售峰值,不难发现销售额整体呈明显下降趋势。 从年度存储硬件销售额的图表中不难发现看出季度性销售额下降的趋势。 四年来存储硬件营收经历了从10年的36.8亿美元到11年34亿美元,再到12年的30亿美元,最后到了2014财年26.9亿美元。 利润还会继续下降的趋势么?IBM并没有给出任何解释。 IBM CFO Martin Schroeter说,“IBM存储营收连续下降了5个百分点。然而在我们在FlashSystems和Storwize领域的销售增长劲头十足。但这部分增长被遗留的OEM业务和高端硬盘存储疲软的销售业绩抵消了。” z13大型机很可能拉动高端硬盘(DS8000)的销售。Schroeder说分“析业务在较大的基数上上升了7个百分点”也可带动存储的销售额上涨,但除此之外很难找到其他能拉动存储销售的其他途径。 IBM的存储业务不是战略重点,不像云业务、移动业务和分析业务一样能实现两位数字的增长。但它还是高利润行业(毛利润率超过40%)

NTT将在全球颇具影响力的技术盛会CES 2021上在线展出

流过昼夜 提交于 2021-01-12 09:02:47
该项目在希尔顿旗下配备融合会议活动设施的酒店推广实施 美国弗吉尼亚州麦克莱恩市--(美国商业资讯)--随着我们告别充满不确定性的2020年,我们可以清晰地看到:“线上+线下”结合的融合会议活动短期内将变得至关重要。为顺应人们在筹备会议和庆祝活动方式上的巨大转变, Hilton EventReady Hybrid Solutions 应运而生。这项全新推出的服务将持续优化,鼓励会议策划者前往配有“希尔顿安心会-融合会议活动”的希尔顿旗下酒店,同时还为其提供策划资源,包括扩充版“希尔顿清洁无忧·安心会”执行手册和灵活的客户服务。 每场会议和活动都将由专门的团队成员提供服务。作为Hilton EventReady Hybrid Solutions的一部分,参与该项目的酒店将获得全面的团队培训资源,从而建立和加强团队在融合会议活动方面的知识。 希尔顿执行副总裁兼首席品牌官Martin Rinck表示:“一百多年来,希尔顿始终保持在会议活动领域的领导地位,因为希尔顿能用心倾听不断变化的客户需求,并以此为基础迅速进行创新。Hilton EventReady Hybrid Solutions的诞生源自我们对卓越品质的孜孜追求——从评估我们的全球产品组合的能力,到推出一整套丰富的会议策划资源,再到团队成员培训,这一切都确保我们能够提供最佳的会议活动整体体验。” Hilton EventReady

内部开源系列之二 —— 经典案例

回眸只為那壹抹淺笑 提交于 2021-01-01 07:40:04
引子 InnerSource 的介绍,我似乎陷入了一种不知该从何讲起的尴尬局面,也就是所谓的破局,理论?历史?案例?实践?文化?曾几何时,脑子灵光一闪,希望通过某个假想中的案例来阐述。从管理、文化、开发、协作、产品、生态、人才等多个角度来逐步细致将一个InnerSource贯彻到底。但是想法总归是想法,需要时间来慢慢的完善。难道是我的每周一篇文章时间定错了?还是应该将InnerSource单独拿出来,独立成系列?我陷入了思考和停滞状态。 于是有了此文,尝试将现有的InnerSource案例整理出来。 InnerSource 案例 在一个普遍推崇模仿、山寨的文化中,谈案例是最受欢迎的,我也顺着这个思路来写一篇试试水,以实际行动来验证下。 InnerSource 正如我在上一篇文章中所提到的,不是什么新的概念和实践,而是有很多学界和厂商都在研究、运行,下面笔者就列出一些业界公开的案例。 PayPal PayPal 是在2013年施行的InnerSource,主要是内部的开发效率遇到了严重的问题,由于PayPal是一家跨国公司,各个国家的清算情况又不尽相同,于是牵扯到沟通、协调、覆盖代码等问题,在施行InnerSource之前,PayPal施行过两种办法:自顶向下的强制和驻场。最终证明这都不可行。 PayPal从开放源代码软件中汲取了灵感,尤其是来自Apache软件基金会的实践

JAVA设计模式详解

∥☆過路亽.° 提交于 2020-12-24 07:44:16
设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。 创建型模式: 用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。 GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式: 用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 行为型模式: 用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。 GoF 中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。 根据作用范围来分 根据模式是主要用于类上还是主要用于对象上来分,这种方式可分为类模式和对象模式两种。 类模式: 用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。 GoF中的工厂方法、(类)适配器、模板方法、解释器属于该模式。 对象模式: 用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。 GoF 中除了以上 4 种,其他的都是对象模式。 GoF的23种设计模式的功能 前面说明了 GoF 的 23

由Spring应用的瑕疵谈谈DDD的概念与应用(二)

。_饼干妹妹 提交于 2020-12-21 22:16:57
在 上一篇 文章中,通过Spring Web应用的瑕疵引出改善的措施,我们讲解了领域驱动开发的相关概念和设计策略。本文主要讲解领域模型的几种类型和DDD的简单实践案例。 架构风格 在《实现领域驱动设计》一书中提到了几种架构风格:六边形架构、REST架构、CQRS 和事件驱动等。在实际使用中,落地的架构并非是纯粹其中的一种,而很有可能户将上述几种架构风格结合起来实现。 分层架构 分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。在严格分层架构中,某层只能与位于其直接下方的层发生耦合,而在松散分层架构中,则允许某层与它的任意下方层发生耦合。DDD分层架构中比较经典的三种模式:四层架构、五层架构和六边形架构。 四层架构 Eric Evans在《领域驱动设计-软件核心复杂性应对之道》这本书中提出了传统的四层架构模式: User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人。 Application为应用层,定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是与其它系统的应用层进行交互的必要渠道。应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调任务,分配工作

谈谈DDD本质

99封情书 提交于 2020-12-21 20:33:29
这是Bella酱的第 89 期分享 作者 | SnoWalker 来源 | 分布式朝闻道 学习DDD的时候,作为开发,我们更关心它在技术层面的东西,尤其体现在DDD的分包方式、编码技巧等方面。 自然的,我们不禁发问,用了DDD的分包,就是实践落地了DDD了么? 不卖关子,直接说答案,并不是。 用了DDD的分包,只能说满足了DDD的"形",并没有抓住DDD的"神"。DDD的神是什么,归根到底还是 面向对象,领域建模 。所谓的各种分包方式本质上还是为了满足DDD面向对象的本质,方便开发者进行代码编写而提供的一种"战术设计" 工具 。 要深入讨论这个问题,我们需要花一点时间来学习讨论一下DDD中常见的几种分包。 DDD分包概述 基于DDD的分包主要有两大流派:分层架构以及六边形架构。 分层架构以四层架构为主,基于四层架构又诞生出衍生的五层架构、六层架构等等(限于篇幅以及讨论重点,本文中我们只讨论四层架构)。 六边形架构出自 Robert C Martin(没错,就是传说中的鲍勃大叔)提出的整洁架构,后来者不断探索,又衍生出了洋葱架构。 这个过程可谓是百家争鸣。实际开发中,最为我们熟知的当属四层架构与六边形架构了,其余的各种架构都是基于这两种架构方式的变体。 四层分层架构 四层架构的分层如下图: 从上往下依次为: |- userinterface 用户界面层/表示层 |-

持续交付体系在高德的实践历程

可紊 提交于 2020-12-19 04:02:22
1. 前序 对于工程团队来说,构建一套具有可持续性的、多方面质量保证的交付体系建设,能够为业务价值的快速交付搭建起高速公路,也能为交付过程中的质量起到保驾护航的作用。本文为大家介绍持续交付体系在高德的演进与落地。 2. 持续交付 正如前序中所总结的,我们需要构建一套持续交付体系,从而保证在质量不下降的前提下,在业务价值交付上有更进一步的突破。那么我们先了解一下什么是持续交付以及集团在持续交付的建设上有哪些指引。 2.1 持续交付概念 引用Martin Fowler大师在2013年时发表的文章,对于持续交付的概念有如下的解释:Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time. 在上述文中,可以提取几个关键词: 软件开发的标准化准则 可以做到随时随地的发布 什么情况下就可以算是团队达到了持续发布的状态呢?Martin Fowler大师也给出了标准的答案: Your software is deployable throughout its lifecycle Your team prioritizes keeping the

清晰讲解SQL语句中的内连接,通用于Mysql和Oracle,全是干货哦

泪湿孤枕 提交于 2020-12-18 07:52:23
本文章目的:力求清晰明了讲解SQL语句的内连接的各种应用,没有深奥的理解! 前奏:这篇文章和下篇文章会将 内连接 和 外连接 讲解清楚 SQL语句的多表查询常用的有以下几种: 两表联合查询 (1)内连接 (2)外连接(分左外连接、右外连接) (3)全外连接 (4)自连接 三表查询 (1)三表查询 本片讲解两表联合查询的 内连接 : 第一步:准备表,员工表emp,部门表dept 关联关系:员工表的“deptno”字段关联部门表的“deptno” 建表语句如下: create table DEPT ( DEPTNO int ( 2 ) not null , DNAME VARCHAR ( 14 ), LOC VARCHAR ( 13 ) ); alter table DEPT add constraint PK_DEPT primary key (DEPTNO); create table EMP ( EMPNO int ( 4 ) primary key , ENAME VARCHAR ( 10 ), JOB VARCHAR ( 9 ), MGR int ( 4 ), HIREDATE DATE, SAL double ( 7 , 2 ), COMM double ( 7 , 2 ), DEPTNO int ( 2 ) ); alter table EMP add

DDD之1微服务设计为什么选择DDD

人走茶凉 提交于 2020-12-08 14:45:37
背景 名词解释 如果你的团队目前正是构建微服务架构风格的软件系统,问自己两个问题? 软件架构演进 软件架构大致经历了从单机架构,集中式架构,分布式微服架构,程序的层次图如下所示。 单机架构 特点如下: 1, 面向过程的设计方法; 2, 结构为CS; 3,程序的层次分两层,即UI层和数据库层; 4, 设计的核心在数据库和字段。 集中式架构 特点如下: 1, 面向对象的设计方法; 2,程序层次为经典的3层架构,即业务接入层, 业务逻辑层,数据库层; 3,部分企业也采用SOA架构风格; 4,集中式的架构缺点:扩展性,伸缩性差,系统容易变得臃肿; 分布式微服务架构 特点: 1, 基于微服务的理念:分而治之,模块高内聚(独立团队,独立部署,独立存储,技术异构),模块之间通过RPC或者HTTP通信,松耦合; 2,模块之间松耦合,解决了扩展性和伸缩性的问题; 架构对比 单体架构和集中式架构,系统分析, 系统设计,系统开发这3个阶段是割裂的,即分属3个不同的人或者小组或者岗位的人负责,这样的后果是: 1, 系统分析,设计,开发三个阶段的信息不一致,导致上线之后功能跟需求偏差非常大; 2, 系统的开发无法快速响应需求和业务的变化,错失发展的良机。 微服务的困局 微服务解决的问题 微服务解决了单体架构和集中式架构的问题:扩展性,弹性伸缩,敏捷开发快速响应业务变化; 但是微服务并非毫无缺陷。