敏捷这么久,你知道如何开敏捷发布火车吗?

640?wx_fmt=png
译者:单冰
从事项目管理十几年,先后管理传统型项目团队及敏捷创新型团队。负责京东AI事业部敏捷创新、团队工程效率改进及敏捷教练工作。曾经负责手机端京东App项目管理工作5年,带领千人团队实施敏捷转型工作,版本发布从2个月提升为2周版本。
大型互联网企业敏捷项目管理实战经验丰富,擅长团队创新、敏捷转型、系统化思维、Scrum方法、KANBAN方法等。敏捷之旅北京站组织者,参与敏捷大会分享活动,敏捷之旅讲师,2018Tid大会讲师,2018全球技术周讲师。参与翻译SAFe案例及《SAFe4.5参考指南》。
专业认证:CSP-SM、A-CSM、CSM、LeSS、SAFe4.5认证SA、管理3.0认证、PMP。

原文地址 https://www.scaledagileframework.com/agile-release-train

正 文

640?wx_fmt=png

The more alignment you have, the more autonomy you can grant. The one enables the other.

—Stephen Bungay, Author and Strategy Consultant

更多的一致性,能给予更多的主动权。二者相互使能。

——史蒂芬·邦吉,作家和战略顾问

 敏捷发布火车

640?wx_fmt=png

Agile Release Train

The Agile Release Train (ART) is a long-lived team of Agile teams, which, along with other stakeholders, incrementally develops, delivers, and where applicable operates, one or more solutions in a value stream.

敏捷发布火车(ART)是一个由敏捷团队组成的长期团队,它与其他干系人一起,增量开发、交付,并在适用的情况下运营,在价值流中实现一个或多个解决方案。

详情

640?wx_fmt=png

Details

Agile Release Trains align teams to a common business and technology mission. Each is a virtual organization (typically 50 – 125 people) that plans, commits, develops and deploys together. ARTs are organized around the enterprise’s significant Value Streams and exist solely to realize the promise of that value by building Solutions that deliver benefit to the end user.

敏捷发布火车将团队的共同业务任务与技术任务对齐起来。每个虚拟的组织(通常有50 - 125人),他们一起做计划、一起提交代码、一起开发和部署。敏捷发布火车是围绕企业的重要价值流组织起来的,它的存在是为了通过构建实现解决方案来实现对价值的承诺,从而为最终用户带来利益。

ARTs are cross-functional and have all the capabilities—software, hardware, firmware, and other—needed to define, implement, test, deploy, release, and where applicable, operate solutions. An ART delivers a continuous flow of value, as shown in Figure 1.

敏捷发布火车组成是跨职能的团队,具有定义、实现、测试、部署、发布和操作解决方案所需的所有能力(包括:软件、硬件、固件等其他能力)。敏捷发布火车交付的是一个持续的价值流,如图1所示。

640?wx_fmt=png

ARTs operate on a set of common principles:

  • The schedule is fixed – The train departs the station on a known, reliable schedule, as determined by the chosen PI cadence. If a Feature misses a timed departure, it can catch the next one.
  • A new system increment every two weeks – Each train delivers a new system increment every two weeks. The System Demo provides a mechanism for evaluating the working system, which is an integrated increment from all the teams.
  • The PI timebox is fixed – All teams on the train are synchronized to the same PI length (typically 8 – 12 weeks) and have common iteration start/end dates and duration.
  • The train has a known velocity – Each train can reliably estimate how much cargo (new features) can be delivered in a PI.
  • Agile Teams – Agile Teams embrace the ‘Agile Manifesto’ and the SAFe values and principles. They apply Scrum, Extreme Programming (XP), Kanban, and other Built-In Quality practices.
  • Dedicated people – Most people needed by the ART are dedicated full time to the train, regardless of their functional reporting structure.
  • Face-to-face PI Planning – The ART plans its work at periodic, largely face-to-face PI Planning events.
  • Innovation and Planning (IP) – IP iterations provide a guard band (buffer) for estimating and a dedicated time for PI planning, innovation, continuing education, and infrastructure work.
  • Inspect and Adapt (I&A) – An I&A event is held at the end of every PI. The current state of the solution is demonstrated and evaluated. Teams and management then identify improvement backlog items via a structured, problem-solving workshop.
  • Develop on Cadence. Release on Demand – ARTs apply cadence and synchronization to help manage the inherent variability of research and development. However, releasing is typically decoupled from the development cadence. ARTs can release a solution, or elements of a solution, at any time, subject to governance and release criteria.

敏捷发布火车是建立在一系列共同原则上的:

  • 时刻表是固定的——火车按照已知的、可靠的时刻表出站,由所选择的PI节奏决定。如果一个功能错过了当前固定的发布时间,它可以赶下一个发布时间发布。

  • 每两周产生一个系统增量——每两周每列火车交付一个系统增量。集成来自所有团队的增量并进行系统演示,这提供了工作系统的评估机制。

  • PI的时间盒是固定的——敏捷发布火车上的所有团队都同步相同的PI长度(通常是8 - 12周),并且有共同的迭代开始/结束日期和持续时间。

  • 车的交付速度是已知的——每列火车可以可靠地估算有多少货物(新功能)可以在PI中交付。

  • 敏捷团队——敏捷团队尊崇“敏捷宣言”和SAFe的价值观和原则。团队采用Scrum、极限编程(XP)、KANBAN和其他内建质量等方法的敏捷实践。

  • 固定的团队——敏捷发布火车,需要大多数人都是全职投入到发布火车上,不管他们的职能汇报关系如何。

  • 面对面的做PI计划会议——敏捷发布火车的计划会是定期做的工作,主要是面对面的做PI计划会议这件事。

  • 创新和规划(IP- Innovation and Planning)——迭代中的创新和规划为团队预估工作、开展定时的PI计划会、做创新、持续学习和基础架构建设提供了一个保护 (缓冲)的条件。

  • 检查和调整(I&A- Inspect and Adapt) ——I&A活动在每一个PI的结尾进行。对解决方案的当前状态进行演示和评估。团队和管理层通过一个结构化的并且解决问题的研讨会,来确定改进计划。

  • 按节奏开发,按需要发布——敏捷发布火车应用同步和节奏开发来帮助管理原本的易变的开发需求。然而,发布通常要与开发节奏解耦。通过规范发布标准,敏捷发布列车可以在任何时候发布解决方案或者方案中的某个元素。

Additionally, in larger value streams, multiple ARTs collaborate to build larger solutions via a Solution Train. Some ART stakeholders participate in Solution Train events, including the Solution Demo and Pre- and Post-PI Planning.

此外,在更大的价值流中,多个敏捷发布火车协作构建更大的解决方案火车。有一些ART的干系人参与解决方案火车的活动(会议),包括解决方案演示活动和PI计划会前后的计划活动。

组织

640?wx_fmt=png

Organization

ARTs are typically virtual organizations that have all the people needed to define, deliver, and operate the solution. This new organization breaks down the traditional functional silos that may exist, as shown in Figure 2.

敏捷发布火车是一个典型的虚拟组织,它拥有定义、交付和执行解决方案所需的所有人员。这个新的组织打破了之前可能会存在的传统职能筒仓现象,如图2所示。

640?wx_fmt=png

In such a functional organization, developers work with developers, and testers work with other testers, architects and systems engineers work with each other, and operations work by themselves. 

While there are reasons why organizations have evolved that way, the value doesn’t flow quickly, as it must cross all the silos. The daily involvement of managers and project managers is necessary to move the work across. As a result, progress is slow, and handoffs and delays rule.

在这样的全职能组织中,功能团队的开发人员与其他开发人员在一起工作,功能团队的测试人员与其他的测试人员一起工作,架构师和系统工程师也和他的团队在一起工作,而实际的工作由他们自己完成。
虽然有一些原因可以解释为什么组织会以这种方式发展,但是这种情况下业务的价值不会很快速地流动,因为它必须跨越所有的竖井。日常参与工作的职能经理和项目经理穿插于各种工作之间也是必须的。因此,工作进展的过程会是缓慢的,并且信息传递和延迟也是很正常的。

Instead, the ART applies systems thinking (SAFe Principle #2)and builds a cross-functional organization that is optimized to facilitate the flow of value from ideation through deployment and release, and into operations, as Figure 3 illustrates.

相反,敏捷发布火车应用了系统思考(SAFe原则#2),并构建了一个跨职能的组织,该组织经过优化来促进价值流动,从想法到部署、发布,再应用于实践操作。如图3所示。

640?wx_fmt=png

Together, this fully cross-functional organization—whether physical (direct organizational reporting) or virtual (line of reporting is unchanged)—has everyone and everything it needs to define, deliver, and operate solutions. It is self-organizing and self-managing. This creates a far leaner organization; one where traditional daily task and project management is no longer required. Value flows more quickly, with a minimum of overhead.

总之,这个完全跨职能的组织——无论是物理的(直接的组织汇报关系)还是虚拟的(汇报线不变)——他们是进行定义、交付和运营解决方案所需的人和事。他们是自组织和自管理的。这样就产生了一个更精简的组织;不再需要传统的日常任务分配和项目管理。让价值流动得更快,开销最小。

敏捷团队推动发布火车执行

640?wx_fmt=png

Agile Teams Power the Train

ARTs include the teams that define, build, and test features and components, as well as those that deploy, release, and operate the solution. Individual teams have a choice of Agile practices, based primarily on Scrum, XP, and Kanban. Software quality practices include architecture & design quality, code quality, systems quality, and release quality practices (see Built-In Quality). Hardware quality is supported by exploratory early iterations, frequent system-level integration, design verification, modeling, and Set-Based Design. Agile architecture supports software and hardware quality.

敏捷发布火车包括定义、构建和测试特性或组件的团队,以及部署、发布和实施解决方案的团队。各个团队可以选择不同的敏捷实践,主要基于Scrum、XP和KANBAN。软件质量的实践包括架构和设计的质量、代码质量、系统质量和发布质量实践(参见内建质量)。早期的探索性迭代开发、频繁的系统级集成、设计验证、建模和基于底层的设计来支持硬件质量。敏捷架构系统支持软件和硬件质量。

Each Agile team has five to eleven dedicated individual contributors, covering all the roles necessary to build a quality increment of value for an iteration. Teams can deliver software, hardware, and any combination. And of course, Agile teams within the ART are themselves cross-functional, as shown in Figure 4.

每个敏捷团队有5到11个专职人员全心投入,涵盖了所有构建迭代增值和内建质量所需要的所有角色。团队有能力交付软件、硬件和任意的组合。当然,敏捷团队在敏捷版本火车中本身就是跨职能的团队,如图4所示。

640?wx_fmt=png

Critical Team Roles(关键的团队角色)

Each Agile team has dedicated individual contributors, covering all the roles necessary to build a quality increment of value for an iteration. Most SAFe teams apply a ScrumXP and Kanban hybrid, with the three primary Scrum roles:

  • Scrum Master – The Scrum Master is the servant leader for the team, facilitating meetings, fostering Agile behavior, removing impediments, and maintaining the team’s focus.
  • Product Owner – The Product Owner owns the team backlog, acts as the Customer for developer questions, prioritizes the work, and collaborates with Product Management to plan and deliver solutions.
  • Development Team – The Development Team has three to nine dedicated individual contributors, covering all the roles necessary to build a quality increment of value for an iteration.

每个敏捷团队都有全职投入的员工,覆盖为每个迭代构建符合质量要求的价值增量所需的所有角色。大多数SAFe的团队采用Scrum XP和KANBAN的混合方法,三个Scrum角色:

  • Scrum Master——Scrum Master是团队的仆人式领导,引导会议,培养团队的敏捷行为习惯,为团队消除障碍,保持团队的专注,不受外界干扰。
  • 产品负责人——产品负责人掌握团队的待办事项列表,站在客户的角度处理开发人员提出的问题,负责确定工作优先级,并与产品管理层共同完成计划和交付的解决方案。
  • 开发团队——开发团队有3到9个专职人员投入,涵盖了迭代创造有质量保证的价值增量所需的所有角色。

Critical Program Roles(关键的项目角色)

In addition to the Agile teams, the following program-level roles help ensure successful execution of the ART:
  • Release Train Engineer (RTE) is a servant leader who facilitates program-level execution, impediment removal, risk and dependency management, and continuous improvement.
  • Product Management is responsible for ‘what gets built,’ as defined by the Vision, Roadmap, and new Features in the Program Backlog. They work with customers and Product Owners to understand and communicate their needs, and also participate in Solution validation.
  • System Architect/Engineer is an individual or team that defines the overall architecture of the system. They work at a level of abstraction above the teams and components and define Nonfunctional Requirements (NFRs), major system elements, subsystems, and interfaces.
  • Business Owners are key stakeholders of the ART and have ultimate responsibility for the business outcomes of the train.
  • Customers are the ultimate buyers of the solution.

除了敏捷团队之外,下面的项目群级角色有助于成功的执行敏捷发布火车:

  • 发布火车工程师(RTE)作为仆人式领导,负责引导项目群级的执行、负责移除障碍、控制风险和解决依赖关系管理,以及持续改进。
  • 产品管理者负责“构建什么样的产品”,这是通过定义版本计划、产品路线图、在需求列表中定义新的特性功能而得到的。他们需要与客户、产品负责人一起理解和沟通需求,并参与验证解决方案。
  • 系统架构师/工程师是定义整体系统架构的某个人或团队。它们在团队和组件级别之上,并定义非功能性需求(NFRs),包括主要的系统元素、子系统和系统接口。
  • 业务负责人是敏捷发布火车的关键干系人,对发布列车的业务结果负最终责任。
  • 客户是解决方案的最终的付款方。
In addition to these critical program roles, the following functions play an essential part in ART success:
  • A System Team typically assists in building and maintaining the development, continuous integration, and test environments.
  • Shared Services are specialists—for example, data security, information architects, database administrators (DBAs)—that are necessary for the success of an ART but cannot be dedicated to a specific train.

除了这些关键的角色之外,以下功能团队在成功敏捷发布火车的工作中扮演着重要的角色:

  • 系统团队通常协助构建和维护开发、持续集成和测试环境。
  • 共享服务作为专家角色——例如,数据安全、信息架构师、数据库管理员(DBAs)——这是保证敏捷发布火车成功所必需的角色,但不能专门用于特定的一个发布火车。

敏捷发布火车的定义

640?wx_fmt=png

Define the ART

The parameters and boundaries of the ART, as well as its stakeholders, and relations to the value streams can be captured and summarized in the ‘ART canvas’, as Figure 5 shows.

敏捷发布火车的参数和边界,以及它相关的干系人与价值流的关系可以在“敏捷发布火车画布”中获得并进行总结,如图5所示。

640?wx_fmt=png

 开发节奏

640?wx_fmt=png

Develop on Cadence

ARTs also address one of the most common problems with traditional Agile development: Teams working on the same solution operate independently and asynchronously. That makes it extremely difficult to integrate the full system routinely. In other words, ‘The teams are sprinting, but the system isn’t.’ This increases the risk of late discovery of issues and problems, as shown in Figure 6.

敏捷发布火车还解决了传统敏捷开发中最常见的一个问题:团队工作在同一个解决方案上时,通常是相互独立而且是异步的开发节奏,这样使常规的系统集成工作变得非常困难。换句话说,各团队都在做开发冲刺,但没有协调一致的系统。这样就会导致发现问题较晚,也增加了发现问题较晚带来的风险,如图6所示。

640?wx_fmt=png

Instead, the ART applies cadence and synchronization to assure that the system is sprinting as a whole, as shown in Figure 7.

相反,敏捷发布火车采用同步开发节奏来保证整个系统作为一个整体共同冲刺发布,如图7所示。

640?wx_fmt=png

Cadence and synchronization assure that the focus is constantly on the evolution and objective assessment of the full system, rather than its individual elements. The system demo, which occurs at the end of the iteration, provides the objective evidence that the system is sprinting.

节奏和同步确保整个系统的演进和客观的评估始终成为整体关注的焦点,而不仅仅关注某个独立元素。在迭代结束时进行系统演示,提供系统快速迭代的客观证据。

敏捷发布火车的执行、DevOps和持续交付

640?wx_fmt=png

ART Execution, DevOps, and Continuous Delivery

ARTs aim to continuously deliver value to their Customer. This is supported by a Continuous Delivery Pipeline, which contains the workflows, activities, and automation needed to provide the availability of new features release. Figure 8 illustrates how these processes run concurrently and continuously, supported by the ART’s DevOps capabilities.

敏捷发布火车的目标是不断地为客户交付价值。这是由一个连续交付流水线来支撑的,它包含了提供新功能发布所需的工作流、发布活动和自动化系统。图8说明了这些流程如何在敏捷发布火车的DevOps功能的支持下同步并发和连续地运行。

640?wx_fmt=png

Each ART builds and maintains (or shares) a pipeline with the assets and technologies needed to deliver solution value as independently as possible. The first three elements of the pipeline work together to support the deployment of very of small batches of new functionality, which are released as the market demands.

  • Continuous Exploration is the process of constantly exploring market and user needs, and defining a Vision, Roadmap, and set of hypotheses to address those needs.
  • Continuous Integration is the process of taking features from the program backlog and developing, testing, integrating, and validating them in a staging environment where they are ready for deployment and release.
  • Continuous Deployment is the process that takes validated features from continuous integration and deploys them into the production environment, where they’re tested and readied for release.
  • Release on Demand is the process of delivering the value to the end user, measuring the results of the hypotheses and learning from them, as well as operating the solutions.

每个敏捷发布火车会构建和维护(或共享)一个发布流水线系统,它包括尽可能独立地交付解决方案价值所需的资产和技术。流水线系统的前三个元素协同工作,完成根据市场需求发布的小批量的新功能的部署。

  • 持续探索是一个不断探索市场和用户需求的过程,并且定义一个版本、路线图和一些假设来完成。

  • 持续集成是这样的一个过程,它从产品待办列表进行计划安排,选取功能进行开发,并在准备部署和发布的环境中进行开发、测试、集成和验证。持续部署是从持续集成中获得完成验证的功能,并将其部署到生产环境中的过程,在生产环境中对这些新功能进行测试并准备发布。

  • 按需发布是将价值交付给最终用户的过程,衡量预计的结果并且从中不断学习,同时实施解决方案。

Development and management of the continuous delivery pipeline are supported by DevOps, a capability of every ART. SAFe’s approach to DevOps uses the acronym ‘CALMR’ to reflect the aspects of Culture, Automation, Lean flow, Measurement, and Recovery.

采用DevOps来支持持续交付管道的开发和管理,这是每一个敏捷发布火车具有的能力。SAFe的DevOps方法使用缩写“CALMR”来体现:企业文化、自动化、精益流程、度量、修复。

Flow through the system is visualized, managed, and measured by the Program Kanban.

系统中的流程通过开发KANBAN来实现可视化、管理和度量。

 敏捷发布火车负责交付全部或部分的价值流

640?wx_fmt=png

ARTs Deliver All or Part of a Value Stream

The organization of an ART determines who will plan and work together, as well as what products, services, features, or components the train will deliver. Organizing ARTs is part of the ‘art’ of SAFe. This is covered extensively in the Implementation Roadmap article series, particularly in ‘Identify Value Streams and ARTs‘ and ‘Create the Implementation Plan.’

敏捷发布火车的组织决定了谁和谁将一起计划和工作,以及火车将交付什么样的产品、服务、特性功能或组件。敏捷发布火车组织是SAFe的一种“艺术”。特别是在“确定价值流、敏捷发布火车”和“创建实施计划”方面,在实施路线图一系列的文章中对此进行了广泛的讨论。

One primary consideration is size. Effective ARTs typically consist of 50 – 125 people. The upper limit is based on Dunbar’s number, which suggests a limit on the number of people with whom one can form effective, stable social relationships. The lower limit is based mostly on empirical observation. However, trains with fewer than 50 people can still be very effective, and provide many advantages over legacy Agile practices for coordinating Agile teams.

首先需要考虑的是规模。高效的敏捷发布火车通常由50 - 125人组成。上限是基于Dunbar’s数字,这取决于一个人可以和多少人建立有效的、稳定的社会关系是有上限的。下限主要基于以往经验和观察得到的。然而,少于50人的发布火车是非常高效的,为了协调多个敏捷团队,提供了许多优于传统敏捷实践的方法。

Given the size constraints, there are two main patterns of ART design (Figure 9):

  • Smaller value streams can be implemented by a single ART
  • A larger value stream must be supported by multiple ARTs

640?wx_fmt=png

根据团队规模限制,敏捷发布火车的团队设计主要有两种模式(图9):

  • 较小的价值流可以通过单个敏捷发布火车实现

  • 更大规模的价值流则需要多个敏捷发布火车配合支持来实现  

In the latter case, enterprises apply the elements and practices of the Large Solution Level and create a Solution Train to help coordinate the contributions of ARTs and Suppliers to deliver some of the world’s largest systems.

在后面这种情况下,企业级应用大型解决方案实践的关键要素,创建一个解决方案的发布火车,来帮助协调敏捷发布火车和供应商,以支持一些世界级的大型系统的交付。

扩展学习

640?wx_fmt=png

Learn More

[1] Knaster, Richard and Dean Leffingwell. SAFe Distilled, Applying the Scaled Agile Framework for Lean Software and Systems Engineering. Addison-Wesley, 2017.

[1]理查德· 克纳斯特、迪恩· 莱芬韦尔《SAFe精髓,运用规模化敏捷框架实现精益软件与系统工程》。Addison-Wesley出版社, 2017年。

[2] Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley, 2011.

[2] 迪恩· 莱芬韦尔。《敏捷软件需求:团队、项目群与企业级的精益需求实践》。Addison-Wesley出版社, 2011年。

[3] Leffingwell, Dean. Scaling Software Agility: Best Practices for Large Enterprises. Addison-Wesley, 2007.

[3] 迪恩· 莱芬韦尔。《规模化敏捷软件开发:大型企业最佳实践》。Addison-Wesley出版社, 2007年。

640?wx_fmt=gif

640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Newton Method in Maching Learning

牛顿方法:转自http://blog.csdn.net/andrewseu/article/details/46771947 本讲大纲: 1.牛顿方法(Newton’s method) 2.指数族(Exponential family) 3.广义线性模型(Generalized linear models) 1.牛顿方法 假设有函数:,我们希…

一键分享博客或新闻到Teams好友或频道

在最近的开发者工具更新中,Teams提供了一个Share to Teams的能力,就是在你的网页上面,放置一个按钮,用户点击后,就可以很方便地将当前网页或者你指定的其他网页,分享到Teams好友或频道中。这个开发文档在这…

C#刷遍Leetcode面试题系列连载(3): No.728 - 自除数

点击蓝字“dotNET匠人”关注我哟加个“星标★”,每日 7:15,好文必达!前言前文传送门:上篇文章中我们分析了一个递归描述的字符串问题,今天我们来分析一个数学问题,一道除法相关的面试题。今天要给大家分析的…

【.NET Core 3.0】框架之十二 || 跨域 与 Proxy

本文有配套视频:https://www.bilibili.com/video/av58096866/?p8一、为什么会出现跨域的问题跨域问题由来已久,主要是来源于浏览器的”同源策略”。何为同源?只有当协议、端口、和域名都相同的页面,则两个页面具有相同的源。只要…

.NET 时间轴:从出生到巨人

点击上方蓝字关注“汪宇杰博客”“ 自1995年互联网战略日以来最雄心勃勃的事业—— 微软.NET战略, 2000年6月30日”2002-02-13.NET Framework 1.0CLR 1.0Visual Studio .NET关键词:跨语言、托管代码2003-04-24.NET Framework 1.1CLR 1.1Visual Studio 2003关键词&am…

Boltzmann Machine 入门(2)

发现RBM 中的能量函数概念需要从Hopfield网络的角度理解,于是找到 http://blog.csdn.net/roger__wong/article/details/43374343 和关于BM的最经典论文 http://www.cs.toronto.edu/~hinton/papers.html#1983-1976 一、限制玻尔兹曼机的感性认识 要回答这个问题大…

针对深度学习的GPU芯片选择

转自:http://timdettmers.com/2014/08/14/which-gpu-for-deep-learning/ It is again and again amazing to see how much speedup you get when you use GPUs for deep learning: Compared to CPUs 10x speedups are typical, but on larger problems one can achi…

C# 8 - Range 和 Index(范围和索引)

C# 7 的 Span C# 7 里面出现了Span这个数据类型,它可以表示另一个数据结构里连续相邻的一串数据,并且它是内存安全的。 例子: 这个图的输出是3,4,5,6。 C# 8 的Range类型 而C# 8里面我们可以从一个序列里面…

DCT变换学习

http://blog.csdn.net/timebomb/article/details/5960624 timebomb的博客 DCT变换的基本思路是将图像分解为88的子块或1616的子块,并对每一个子块进行单独的DCT变换,然后对变换结果进行量化、编码。随着子块尺寸的增加,算法的复杂度急剧上升…

敏捷回顾会议的套路与实践分享

01—关于敏捷回顾会议实践过敏捷的人都知道,在敏捷中会有很多的会议要开,比如计划会议(Planning)、站立会议(Daily Scrum)、评审会议(Review)以及回顾会议(Retrospective…

.Net Core AA.FrameWork应用框架介绍

开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我。AA.FrameWork 是基于.NET core流行的开源类库创建…

RBM/DBN训练中的explaining away概念

可以参照 Stanford大神DaphneKoller的概率图模型,里面贝叶斯网络一节讲到了explaining away。我看过之后试着谈谈自己的理解。 explainingaway指的是这样一种情况:对于一个多因一果的问题,假设各种“因”之间都是相互独立的,如果…

.NET Core使用gRPC打造服务间通信基础设施

一、什么是RPCrpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制。利用这种传输机制,不同进程(或服务)间像调用本地进程中…

DBN训练学习-A fast Learning algorithm for deep belief nets

转载自:http://blog.sciencenet.cn/blog-110554-889016.html DBN的学习一般都是从Hinton的论文A Fast Learning Algorithm for Deep Belief Nets开始。如果没有相关的背景知识,不知道问题的来由,这篇论文读起来是相当费劲的。 学习过程中主…

程序员家的大闸蟹:青壳、白底、肉多、爆黄,现在是吃大闸蟹的最佳时期

其实,我跟大家一样,也是dotNET跨平台和张队长的忠实粉丝,也是一名程序员。上上周,我在dotNET跨平台的优选商城买了队长推荐人生果,也是第一次吃这个人生果,味道鲜甜、汁水也特别多,但由于快递的…

环形链表II

1、题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则…

.NET Core Love gRPC

这篇内容主要来自Microsoft .NET团队程序经理Sourabh Shirhatti的博客文章:https://grpc.io/blog/grpc-on-dotnetcore/, .NET Core 3.0现已提供grpc的.NET 托管实现 grpc-dotnet, gRpc 取代WCF成为 .NET的一等公民。自2018年11月以来&#xf…

Magicodes.IE已支持通过模板导出票据

本次更新如下:【重构】重构HTML、PDF导出等逻辑,并修改IExporterByTemplate为:Task ExportListByTemplate(IList dataItems, string htmlTemplate null) where T : class;Task ExportByTemplate(T data, string htmlTemplate null) where T…

complementary prior

Complementary Prior 解决了多层网络中层间参数W无法计算的问题。 多层有向网络如下图,如果计算 W,我们需要知道第一个隐层的后验概率,那么会遇到几个问题:多层sigmoid网络1)后验概率几乎不可计算,因为所谓…

Memcached

本文来自 58沈剑:https://mp.weixin.qq.com/s/zh9fq_e2BgdIeR8RKtY6Sg memcache是互联网分层架构中,使用最多的的KV缓存。面试的过程中,memcache相关的问题几乎是必问的,关于memcache的面试提问,你能回答到哪一个层次…