从 DevOps 到平台工程:软件开发的新范式

DevOps 是一种将开发和运营结合起来的方法,在应用规划、开发、交付和运营方面将人员、流程和技术结合起来。DevOps 使以前孤立的角色(如开发、IT运营、质量工程和安全)之间进行协调和合作。一直以来,DevOps 的采用都是以帮助企业更快地向客户提供价值,更好地适应市场和竞争,并保持系统的稳定性和可靠性为目标。
 

然而,近两年关于“DevOps 已死”的讨论越来越多。该观点持有者认为 DevOps 模糊性,实施起来的复杂性及高成本等问题,未能达到帮助企业实现其加快交付、提高质量和降低成本的目标。
 

在这篇文章中,我们将理性分析一些反对 DevOps 的常见论点,并一同探讨在当下 DevOps 实施时所面临的挑战,以及 DevOps 未来演变与平台工程的关联。
 

反对 DevOps 的三大观点

DevOps 的定义过于模糊

关于 DevOps 的批评之一是它过于模糊,缺乏一个明确的定义。DevOps 对不同企业和团队来说意味着不同的东西,而且对 DevOps 的实际内容也没有达成共识。甚至有言论表示 DevOps 只是一个被供应商和行业顾问过度使用的流行词。
 

DevOps 实际上并不是一套僵硬的框架或规则,而更是一种文化和思维方式,能够适应不同的环境和目标。DevOps 并没有规定团队应该如何工作,而是提供了可以帮助团队更好地合作的原则和实践;也没有规定团队应该使用什么工具,而是鼓励团队使用最适合他们需要的工具。因此 DevOps 的模糊性我们可以视为它的灵活性。DevOps 允许团队根据他们的具体挑战和机会来定制他们的方法,还允许团队进行试验并从经验中学习。
 

DevOps 给企业造成成本负担

反对 DevOps 的另一主要观点就是,DevOps 的实施和维护成本过高。由于 DevOps 需要对企业的文化、组织架构和技术进行大幅度的改变,同时,还需要企业在时间、成本以及基础设施方面进行大量投资。因此有部分企业中的 IT 主管或领导并不愿意在此花费过多,因为他们无法保证 DevOps 实施后的实际效果。
 

不可否认,企业实施 DevOps 的确是个不小的工程。但客观来说,DevOps 并不一定是一个全有或全无的主张。企业可以逐步和有选择地采用 DevOps,根据自身需求和商业目标来选择合适的工具和实施方式,企业中现有的资源和基础设施也可以被利用起来。这样企业可以将采用 DevOps 的前期成本和风险降到最低。
 

关于实施效果,DevOps 并不是一套即时的解决方案,需要从长期利益来看。DevOps 可以帮助企业减少交付过程中的浪费、错误、延迟和失败,同时提高软件交付的质量、效率、团队间的协作以及客户满意度。从长远来看,这些成果可以转化为更低的成本、更高的收入和更好的竞争优势。
 

DevOps 过于复杂

第三个反对 DevOps 的声音来自于对其复杂程度的质疑,认为 DevOps 难以实施和管理。DevOps 通常涉及多项技术挑战和较高的复杂性,因此导致开发团队和运营团队难以上手。同时还涉及跨多个团队的大量协调和沟通,这在大型或分布式组织中可能是个极大的挑战。
 

实际上 DevOps 是为了简化和精简软件开发生命周期,而不是使其复杂化。DevOps 依赖自动化、标准化和集成,以减少人工任务、错误和依赖性。此外,DevOps 并不是一个适用于所有情况的万能解决方案。企业需要根据他们的具体环境和要求来定制 DevOps 方法,并利用各种工具和技术来促进 DevOps 的实施和管理。例如,使用版本控制来跟踪和记录变化;或使用告警管理来统一和优先处理紧急状况。
 

DevOps 实际存在的问题

DevOps 自 2007 年随着企业规模、行业以及现有的 IT 环境的变化,针对 DevOps 的反对声音也并非空穴来风,DevOps 在概念上、流程和技术等方的确面临着巨大的挑战。
 

首先许多企业对 DevOps 的概念存在误解,未能采用 DevOps 的基本原则和文化,导致实施时存在偏差,即仅仅雇佣一个“DevOps 工程师”或使用一些 DevOps 友好的工具。这就导致了混乱、孤岛和低效率等问题。因为 DevOps 并不是一个角色或一个工具,而是一种思维方式和一种实践,需要企业变革和确保一致性。
 

DevOps 的核心理念是“you build it, you run it”,这给开发人员增加了过多的压力和认知负担,开发人员不得不处理复杂且多样的基础设施、安全、合规和运维等问题,开发人员通常不擅长或缺乏处理这些任务的技能和工具,从而需要耗费大量时间和精力。而过多的精力花费在非开发任务上,导致开发人员无法将核心能力价值最大化利用。
 

此外,随着分布式系统的广泛应用,其复杂性越来越高,DevOps 变得更加难以实施和管理(当然问题的根本来自于现代软件开发的复杂性增加而非 DevOps 本身)。企业需要对其基础设施和环境有更多的控制和可见性,以及更多的敏捷性和速度来满足业务需求。DevOps 也难以应对云原生技术(如容器、Kubernetes、微服务和无服务器)的多样性和波动性。
 

平台工程的崛起

为了解决上述问题,一些企业正在尝试将 DevOps 演变到下一阶段,通过创建可重用、自助式平台的实践,使开发人员能够以最小的摩擦构建、部署和运行其应用程序,这就是平台工程逐渐崛起的契机。
 

平台工程相比 DevOps 有以下几个优势:
 

  • 赋能开发人员:平台工程为开发人员提供了一个“黄金路径”,为他们的应用程序提供最佳的工具、实践和安全措施。开发人员可以自助获取他们需要的资源,而不用担心底层的细节或依赖关系。平台工程还通过降低复杂性、提高生产力、增强质量和加速反馈循环,改善了开发人员的体验。

  • 启用平台工程团队:平台工程拥有专门的平台工程师团队,负责构建、维护和改进支持开发人员的平台,平台工程师充当促进者和协调者。同时,平台工程师可以利用云原生技术(如容器、Kubernetes、微服务和无服务器)创建可扩展、弹性、可移植和成本效益良好的平台。

  • 利用平台编排:平台工程使用平台编排工具,自动化跨不同环境的平台的配置、部署和管理。平台编排工具还提供对平台及其使用情况的可见性、监控和治理。平台编排工具帮助平台工程师为开发人员提供一致、可靠和安全的平台。

  • 改善业务成果:平台工程通过实现更快更好的软件交付,帮助组织实现其业务目标。平台工程能够培养开发人员和平台工程师之间的协作、创新和学习文化,并帮助组织以可靠、高成本效益和安全的方式进行扩展。
     

结论

DevOps 并没有死,而是在革新和进化,平台工程则是 DevOps 的下一个演变阶段,相较于 DevOps,其优势是以可持续的方式赋能和助力开发人员。平台工程能够帮助企业组织应对云原生环境的复杂性和增长,同时实现更快更好的软件交付。

本文转载于网络 如有侵权请联系删除

相关文章

  • hdu 1394

    大家好,又见面了,我是全栈君。1A…火车上写的,,。学到: 1、明白特征。分类讨论。能够防止计数反复求逆序数的时候,算出以每一个数为逆序数对的第二个数的情况之和即为序列的逆序数,这样能够防止反复2、假设没有思路。就先从若干情况入手,自己模拟试试。找规律这道题的规律就是,如果全部比x[i]小的数个数为c,那么当把第一个数移到序列最后,产生的新的逆序对个数为sum=sum-c+n-1-c;,降低了c,添加了n-1-c#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> usingnamespacestd; #definelson(i)l,mid,(i)*2 #definerson(i)mid+1,r,((i)*2+1) #definellrt*2 #definerr(rt*2+1) constintMAXN=5000+10; structNode{intl,r,tot;}nodes[MAXN*4]; intx[MAXN],n,d[MAXN],y[

  • Postman 如何调试加密接口?

    众所周知,Postman是一款非常流行且易用的API调试工具,在接口调试或测试时经常被使用针对普通API接口,我们可以直接在Postman中输入URL、QueryString、Header、Data来模拟发送一个HTTP请求但是,针对「 加密接口 」的调试及测试,我们怎么来做呢?CryptoJS及 Pre-requestScriptCryptoJS 是一个使用JavaScript实现的加密算法库它支持的算法包含:Base64MD5SHA-1和SHA-256AESRabbitMARC4HMAC、HMAC-MD5、HMAC-SHA1、HMAC-SHA256PBKDF2在Postman中有一个Tab 「 Pre-requestScript 」,它能在请求之前做一些预处理比如,可以使用 CryptoJS 先对变量进行加密,然后设置到变量中,最后在真实请求时使用这个变量实战一下假设现在有一个登录接口请求方式为 POST,请求体中包含用户名username、密码password,并且password是通过MD5加密后设置到请求体内

  • Linux系统下virtuoso数据库安装与使用详解

    最近在调研关联数据的一些东西,需要用到rdf数据库,所以接触了virtuoso数据库。安装的坑其实并不多,之前在windows10上安过一次。这次在ubuntu18.04上安装一下,其他的linux发行版安装的流程也差不多。virtuoso数据库的下载与使用开源版本的virtuoso数据库可以在sourceforge下载。我用的是7.25版本。建议下载已经编译好的generic版本(下载图中标红色的那个),需要编译的那个版本我遇到了openssl版本不支持的问题。下载完毕后将其解压到/usr/local下,添加一下环境变量,这可以让你直接在终端启动virtuoso数据库服务而无需cd到vituoso的bin目录下或加上路径之后再启动,比较方便。编辑/etc下的profile文件,在最后一行加上exportVIRTUOSO_HOME=/usr/local/virtuoso-opensource,然后在PATH中加入virtuoso的路径${VIRTUOSO_HOME}/bin,PATH中的各个路径用冒号分隔。我的环境变量设置如下:设置完环境变量后重启一下。将virtuoso-openli

  • EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码

    随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统、电信行业、工业监控、工地、城市交通、水利系统、社区安防等领域得到越来越广泛的应用。摄像头直播视频监控通过网络直接连接,可达到的世界任何角落,并能够通过控制云台、存储视频监控音视频,对现场远程运维,实现随时随地想看就看的安防需求。背景需求摄像机云台控制在摄像机当中很常见,摄像机能将当前状态下云台的水平角度、倾斜角度和摄像机镜头焦距等位置参数存储到设备中,需要时可以迅速调用这些参数并将云台和摄像头调整至该位置。摄像机只要支持Onvif协议进行和第三方软件或设备对接,大部分都能进行远程控制。EasyNVR支持Onvif协议的设备云台控制,能实现和设备的实时数据传输及控制。今天主要介绍通过EasyNVR接口二次开发,将云台控制及实时直播功能集成在自己的原有的web业务系统上。demo效果如下: demo是通过vue-cli脚手架搭建起来,简单说一下,目录结构 对easy-player不了解的这是播放器插件地址可以参看(https://www.npmjs.com/package/easy-player) 这里主要讲解一下App.vu

  • 黑科技小程序,无需前台登记直接刷脸秒住酒店!

    相信大家都有过出去住酒店略不爽的经历,就是在酒店前台办理入住或退房要等不少时间,人多的时候还要等更久。因为前台需要确认你的入住订单,没问题了再刷脸登记身份证信息,最后再看哪间房空出来了给你安排上,有时候还会向你推销办理个酒店会员。而现在,你可以不用再这么麻烦入住酒店了,通过微信新上线的一款刷脸小程序,快速轻松搞定。下面他二哥就跟各位来介绍下,打开微信搜索「美豪酒店」:整个预定流程和一般的app差不多,选择城市和入住日期就可以看到不同酒店的房价。经对比,价格比其他平台更优惠。预定好之后到酒店直接在机器上就可以自主办理入住,系统自动分配空房间的房卡。具体操作可以看下面这个视频:怎么样,是不是很方便?下次入住就可以尝试下。如果你对这款小程序背后的技术实现比较感兴趣,可以往下看。一个成熟且稳定的前台团队就足以扛起酒店用户体验的第一面大旗。但实际情况是,前台需要处理接待、联络中转、办理入住、退房、收银、处理顾客问询等多项工作,在高强度的工作要求下,前台服务人员成为了酒店流动率最高的群体。导致酒店管理成本增加、前台服务质量下降、效率及口碑下跌。为了解决这一痛点,微信团队在美豪部分门店试点上线微信刷

  • 关于小程序·云开发峰会,你想get的干货全在这了!

    10月19日,腾讯云与小程序团队联合举办的首届小程序·云开发技术峰会在北京举行,数位业界大咖带来了干货满满、精彩纷呈的分享,云开发的各项强大能力也悉数亮相,下面就来让我们一起完整回归下本次峰会有哪些干货发布吧! 愿景篇  云开发未来愿景:面向企业服务,构建开放的后端服务市场小程序云开发目前已拥有23万+小程序账号,服务50万+开发者快速开发小程序。为了助力开发者开发出更优秀的小程序,云开发为100万个小程序提供基础版套餐的免费扶持,为10万个小程序提供专业版套餐一年期免费扶持,为2万个云开发旗舰版套餐一年期免费扶持。未来,小程序云开发将进一步面向企业场景服务,成为更专业的生产工具。同时建设一个云开发的后端服务市场,形成一套接入标准,允许服务商、开发者在此输出能力,使其可以非常便捷地搜索并调用云开发的能力。 产品篇  更安全、更便捷1、系统一体化:从系统底层打通微信自研网络和云网络,以及开发者在腾讯云上已有的服务,构建一体化云端系统。2、高安全性:全链路票据系统保障整条链路系统安全,使用mmtls提供通信安全性,做到了防窃听,防篡改,防重放,防伪造,为项目顺利进展保驾护航。另外,使用小程

  • 前端性能优化之白屏时间

    定场诗 曲木为直终必弯,养狼当犬看家难; 墨染鸬鹚黑不久,粉刷乌鸦白不坚。 蜜饯黄莲终需苦,强摘瓜果不能甜; 好事总得善人做,哪有凡人做神仙。 复制前言该篇文章会为您分享在前端性能优化中非常重要的一环-白屏时间,将从白屏时间的概念、重要性以及白屏的过程一一进行阐述,同时提供性能优化的策略与实践。一、概念白屏时间:即用户点击一个链接或打开浏览器输入URL地址后,从屏幕空白到显示第一个画面的时间。白屏时间的长短将直接影响用户对该网站的第一印象。二、白屏时间的重要性当用户点开一个链接或者是直接在浏览器中输入URL开始进行访问时,就开始等待页面的展示。页面渲染的时间越短,用户等待的时间就越短,用户感知到页面的速度就越快。这样可以极大的提升用户的体验,减少用户的跳出,提升页面的留存率。打开一个页面就像你的女票召唤你一样,你出现的越迅速,女票肯定会愈加欣喜!反之,你千呼万唤始出来,那么你的女票很可能又要抛弃你了(为什么要对你说又呢?...)三、白屏是一个怎样的过程呢?让我们一起来揭秘:从打开一个页面,到页面的画面展示经历了怎样的过程!1.DNSLookupDNSLookup即浏览器从DNS服务器中

  • SAP 物料状态维护

    在SAP系统中,物料主数据基本视图及工厂视图提供跨工厂物料状态及特定工厂的物料状态字段,通过此字段可以对物料在采购及库存管理、生产计划控制、工厂、仓库、成本核算等方面进行管控。 具体控制逻辑如下: 1.系统后台配置2.每一种业务类型可进行无消息提示、警告消息提示、错误消息提示(一旦选择,则前台业务执行时报错) 说明:当参数都为B时, 采购信息:物料不允许创建采购订单BOM标题信息:物料不允许创建BOMBOM项目信息:物料不允许用于BOM中流程/配方信息:物料不允许创建工艺路线独立的需求信息:物料不允许创建无关需求预测信息:物料不能进行创建需求预测MRP信息:物料不能运行MRP长期计划信息:物料不能创建长期计划生产订单标题信息:物料不能创建生产订单PO/网络项目信息:物料不能挂到生产订单BOM中PRT信息:物料不能分配生产资源或工具工厂信息:在工厂维护中不能使用此物料库存管理信息:物料不能允许入库(已在库房的可以继续出库)转移需求信息:物料不能产生TR请求转移订单信息:物料不能产生TO订单物料成本核算过程:物料不能用于计算物料成本企业可根据实际业务需要,任意组合各项参数,形成物料的各种状

  • Flutter 你需要知道的那些事 01

    width属性对于设置控件宽度填充父控件这件事情,在Android里面,只需要设置MATCH_PARENT即可。但是在Flutter里面却不是这样,因为Flutter要具体的数值。所以我们可以这样考虑,假设我这个值非常大,比所有市面上的设备宽度还要大,那么是不是表现出来就是充满父控件了。 所以这边的做法是设置为无限,即double.infinite我们以一个常用场景来说明。比如设置图片填充屏幕宽度。刚开始没有设置的代码如下:import'package:flutter/material.dart'; voidmain()=>runApp(MyApp()); classMyAppextendsStatelessWidget{ @override Widgetbuild(BuildContextcontext){ returnMaterialApp( home:Scaffold( appBar:AppBar( title:Text('MyFlutter'), ), body:Center( child:Image.asset('a

  • 解决Android SDK Manager不能更新的问题

    今天打算更新到Android4.3,看看里面的新的API,DOC什么的,但是打开AndroidSDKManager后发现不能更新,fetching更新配置文件的时候,都不能获取最新的更新信息。以前还可以以呢,看来这个十一又屏蔽了google拉。针对这个情况,我第一反应就是使用代理,我本机做的有goagent,想直接用。点击AndroidSDKManager的Tools,选中Options,配置里面的代理ip和端口,然后重新启动打开,这时候可以正常fetch了,但是在下载的提示_SSLhostnameincertificatedidn’tmatch:!=OR_,看说明提示是ssl证书的hostname不匹配,不能用,这个情况不知道是怎么回事,应该是本机里的证书匹配不上,又没有dl-ssl.google.com的证书,所以不能使用https下载。不能使用https下载,我们还可以使用http下载。Androiddoc里也说了,如果使用https下载不了,可以选择使用http下载,只需要在Options里勾选ForeHttps…那一个选项即可。。然后重新下载,发现还是下载不了。提示downl

  • 【亲测有效】Nodepad++/Sublime Text3中Python脚本运行出现语法错误:IndentationError: unindent does not match any outer i

    我在开发游戏的时候,发现一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError:unindentdoesnotmatchanyouterindentationlevel【解决过程】 以下我将提供两种环境对错误进行更改:Nodepad++:1.对于此错误,最常见的原因是,的确没有对齐。但是我根据错误提示的行数,去代码中看了下,没啥问题啊。  都是用TAB键,对齐好了的,没有不对齐的行数啊。  2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释也删除了。  结果还是此语法错误。  3.后来折腾了半天,突然想到了,把当前python脚本的所有字符都显示出来看看有没有啥特殊的字符。当前用的文本编辑器Notepad++,好像有个设置,可以显示所有的字符的。  找到了,在:  视图->显示符号->显示空格与制表符然后就看出问题来了:  原来错误的行数是1580行:但是源码的1580行的对齐用的是点点点的空格,是和前面的几行的对齐所用的箭头表示的TAB键,是不匹配的,即代码的对

  • javaSE之如何将一个文档显示出来(,txt,.doc,.....)

    1packageDEMO; 2 3importjava.io.File; 4importjava.io.FileInputStream; 5importjava.io.IOException; 6importjava.io.InputStream; 7 8 9/*文件字节输入流 10*1.设定输入流的源 11*2.创建指定源的输入流 12*3.让输入流读取源中的数据 13*4.关闭输入流 14**/ 15 16publicclasstest 17{ 18publicstaticvoidmain(Stringargs[]) 19{ 20bytearray[]=newbyte[100]; 21Filemt=newFile("C:\\6140\\wakaka\\bin\\DEMO","test.class"); 22try 23{ 24intn=-1; 25InputStreamin=newFileInputStream(mt); 26while((n=in.read(array,0,100))!=-1) 27{ 28Stringss=newStrin

  • 是什么限制了区块链技术的应用?

    作者:Spruce2017年已经匆匆离去,回顾过去一整年,似乎区块链应用一直处于隐忍未发的状态,很多项目的落地已处于验证阶段,万众期待的爆点却一直没能出来。 有人说ICO不是很热吗?比特币不是涨了几十倍吗?撸猫游戏不是很火吗?的确,这些纯线上的虚拟资产场景是热了一把,但说到真正解决了实际生活中什么问题?什么痛点?好像还没有触及吧。我们不禁要问,究竟是什么限制了区块链技术的应用呢?原因可能有很多,不妨先从技术角度分析一下。区块链技术是一个对多种技术的组合创新,多种技术包括:1、 共识算法:POW/POS/DPOS/PBFT/BFT-Raft/Paxos/Kafka2、 P2P通讯:自举(bootstrapped)/连接/广播3、 签名验签:ECDSA/secp256k1/ED25519/MultiSig4、 Hash锁定:Merkle树/MPT树5、 UTXO记账:流水账6、 智能合约:P2PKH/P2SH/Oracle/状态机7、 隐私保护:零知识证明、同态加密、CoinJoin加密技术8、 私钥存储:HD协议(HierarchicalDeterministicKeyCreation)

  • Ajax笔记(1)

    真的找了很久的视频才找到,现在试着学一下...今天开启新的学习内容:Ajax首先,我们来了解一下全局刷新和局部刷新:全局刷新和局部刷新全局刷新:使用form,href等发起的请求是全局刷新.用户发起请求,视图改变了,跳转视图,使用新的数据添加到页面缺点: 1.传递的数据量比较大,占用网络的带宽2.浏览器需要重新的渲染整个页面 3.用户的体验不是那么好 局部刷新:在当前页面中.发起请求,获取数据,更新当前页面的DOM对象.对视图部分刷新. 特点: 数据量比较小,在网络中传输速度快更新页面内容,是部分更新页面,浏览器不用全部渲染视图在一个页面中,可以做多个局部刷新从服务器获取的是数据,拿到更新视图异步请求对象 在局部刷新中,使用异步请求对象,在浏览器内部发起请求,获取数据.在局部刷新,需要创建一个对象,代替浏览器发起请求的行为,这个对象存在内存中. 代替浏览器发起请求并接收响应数据,这个对象叫做异步请求对象全局刷新是同步行为,局部刷新是异步行为[浏览器数据没有全部更新]这个异步对象用于在后台与服务器交换数据.XMLHttpRequest就是我们异步对象的名字.异步对象XMLHttpRequ

  • 对话小冰:AIGC下一个里程碑事件会是什么?|量子位智库 · 对撞派

    量子位智库发自凹非寺 量子位|公众号QbitAI随着深度学习的出现与发展, AIGC技术近年已进入蓬勃发展阶段。AI内容生成技术,能够通过其高通量、低门槛、高自由度的生成能力广泛服务于各类内容生产及相关场景。随着创作门槛降低,创作者涌入,AI写诗、AI作曲、AI绘画、AI换脸等领域创作井喷,人们的创作能力得到极大解放。随着技术的逐渐成熟,AIGC企业也开始拓展应用场景和商业场景。目前,AIGC的模态主要集中于音频生成、文本生成、图像生成、视频生成及图像、视频、文本间的跨模态生成等,细分场景众多。在AIGC的下一步发展中,值得关注的细分赛道都包括哪些?AIGC核⼼的应⽤价值和商业价值是如何体现的?AIGC⾏业⽬前处于⼀个什么样的发展阶段?下⼀个⾥程碑事件会是什么?9月22日晚19:00,我们请到了国内AIGC的开拓者——小冰公司,将由小冰公司首席运营官、人工智能创造力实验室负责人徐元春与小冰公司首席技术官姚麒为我们分享~对AIGC感兴趣的小伙伴,可以扫码或点击下方预约按钮预约直播、接收微信开播提醒噢~关于小冰公司小冰是全球领先的人工智能科技公司,旗下小冰框架是全球承载交互量最大的完备人工

  • node.js 调试问题

    最近打算在项目过程中使用node.js辅助解决一些问题,需要用到node.js的调试技术。 通常而言,大家都会提到debugger或者node-inspector方法。 debugger方法谁用谁知道,一般应该没有人去使用, node-inspector呢,如果你运气好,可能在两步之内就可以使用chrome来调试了,但是如果运气不好可能就看到 "Remotedebugginghasbeenterminatedwithreason:websocket_closed"错误 如果出现这个错误,很可能是你的node.js版本比较高的原因,你可以尝试将版本除到6.3以下,或者,修改下面中的文件(Linux下自已去找相应的文件路径) 将下图中红框中的代码注释掉   如果不介意使用最新版本的node.js(当前最新是7.5),那么就可以使用另一种选择 见文档 即在启动node.js程序时使用如下命令 node--inspect=<ipaddress>:<port>--debug-brkindex.js复制 然后在chrome浏览器中使用 chrome-d

  • training_ Refactoring from Anemic Domain Model Towards a Rich One (Introducing an Anemic Domain Model)

    RefactoringfromAnemicDomainModelTowardsaRichOne|Pluralsight          vkhorikov/AnemicDomainModel:SourcecodefortheAnemicDomainModelPluralsightcourse(github.com)   map???         特征: class不含任何的methods;class由属性组成=》一堆数据,没有行为 缺点: 1.poordisconverable:无法知道这种类型数据,有哪些操作=》无法直接在(一个class的实例下+.)去查看可进行的所有操作 =》由于操作的可视性查,容易导致方法的冗余。尤其是领域模型随着项目大小、时间越来越大=》很难记住所有的细节 2. lackofencapsulation。缺少封装,无法阻止破环其完整性、有效性的行为 =>容易犯错,尤其是对不熟悉的人来说,到处是雷。 =》无法阻止violatingtheinv

  • HDU 6071 Lazy Running (同余最短路 dij)

    LazyRunning TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:524288/524288K(Java/Others)TotalSubmission(s):1384    AcceptedSubmission(s):597 ProblemDescription InHDU,youhavetorunalongthecampusfor24times,oryouwillfailinPE.Accordingtotherule,youmustkeepyourspeed,andyourrunningdistanceshouldnotbelessthan K meters.Thereare 4 checkpointsinthecampus,indexedas p1,p2,p3 and p4.Everytimeyoupassacheckpoint,youshouldswipeyourcard,t

  • TensorFlow中的variable_scope

    学了tf比较长一段时间了,一直没有搞懂tf中的variable_scope的用法。感觉有些知识点很零碎,这次看了一本书(质量比想象中的要好很多啊),整体的回顾一下tf。 1.tf变量管理 tf提供了通过变量名称来创建或者获取一个变量的机制。通过这个机制,在不同的函数中可以直接通过变量的名字来使用变量,而不需要将变量通过参数的形式到处传递(确实是一个痛点)。tf中通过变量名称获取变量的机制主要是通过tf.get_variable和tf.variable_scope函数实现的。 除了tf.Variable函数,tf还提供了tf.get_variable函数来创建或者获取变量。当tf.get_variable用于创建变量时,它和tf.Variable的功能是基本等价的: #下面这两个定义是等价的 v=tf.get_variable("v",shape=[1],initializer=tf.constant_initializer(1.0)) v=tf.Variable(tf.constant(1.0,shape=[1]),name="v") 复制 两者最大的区别在于指定变量名称的参数。对于

  • 【LINQ标准查询操作符总结】之聚合操符

    C# 中的LINQ提供了两种操作方式,查询表达式和查询操作符,所有的查询表达式都有对应的查操作符类替代,查询表达式有点“类”SQL,在代码中写SQL,总觉得不够“优雅”,使用查询操作符就显得“优雅”很多,本系列就来对所有的LINQ标准操作符进行一个全面的总结,这些操作符和我上篇文章总结的RxJS操作符有很多相似之处,甚至想通之处,有兴趣的可以点击链接查看。从整体来看C#的LINQ操作符分为13类,分别为聚合,转换,元素操作,相等操作,生成,分组,连接(join),分部,投影,数量,过滤,基于集的操作符,排序。熟练掌握LINQ对写代码的效率有很大的提高,可以说LINQ,lambda和泛型已经变成C#语言的基石。如果没有这三个特性下代码将会变得多么的无趣。 聚合操作符 聚合操作的所有返回值都只是一个值。 为了演示这里我们定义两个数组,一个表示字符串的数组textSource和一个表示int类型的numberSource数组: staticstring[]textSource={"zero","one","two","three","four","five","six","sev

  • ubuntu 快速安装和设置 mysql

    直接使用:apt-getinstallmysql-server(最好先update一下)安装 初始化密码为空则直接mysql-uroot-p登录(若有密码,则在安装日志中查询) 设置新的密码: usemysql;updatemysql.usersetauthentication_string=password('root')whereuser='root'andHost='localhost';updateusersetplugin="mysql_native_password";flushprivileges; 退出mysql并 servicemysqlrestart重启mysql后密码生效 ps设置登录权限: GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION;  

相关推荐

推荐阅读