SpringOne Platform 2016回顾

我最近结束了在拉斯维加斯参加SpringOne Platform会议的总结。 这是我第一次参加SpringOne。 这是聆听演讲并与软件开发领域的一些顶级专家进行对话的一种体验。

如果您没有参加SpringOne,那么您肯定会想要阅读这篇文章。 我们将介绍这四个主题,以及如何在将来的工作中潜在地应用它们。

  • 反应设计
  • 使用Spring Boot 1.4简化测试
  • 缩短开发反馈循环
  • 为开源社区做贡献

反应设计

将Spring Reactive包含到核心Spring框架中是Spring 5发行版的路线图 。 结果,SpringOne的许多会议都专门讨论了什么是反应式设计以及如何使用它。

Node.js开发人员应该已经熟悉该模式,这确实是Node.js的存在理由。 响应式设计基于事件驱动的非阻塞I / O原理。 如果这一切听起来令人困惑,那就更好地知道您不是唯一对此概念感到不适的人–我也仍在努力吸收它。

用简单的术语表示什么:以“标准”(命令式)的方式编写程序时,对外部源(无论是数据库还是服务)的调用将使调用线程在继续执行之前等待响应。 响应式设计通过创建一个承诺(即一个事件)并在以后读取返回结果(非阻塞)来改变这种情况。

由于大大减少了执行相同工作量所需的线程数量(每个线程占用内存,数据库和服务只能同时服务于有限数量的连接),因此可以大大减少系统资源的使用。

会谈中经常提到的反应式设计的另一个关键概念是背压 。 背压会在订户和生产者之间产生反转。 生产者通常会规定返回给订阅者的金额,通常是整个结果集的大小,而背压则允许订阅者定义它希望在时间以及何时接收多少(即订阅者只会处理完先前的退货后,向生产者请求更多)。 这有助于防止订户被大型数据集淹没,并通过仅发送订户准备就绪的工作以及随时间分配负载来减少对生产者的需求。

这些背压功能共同帮助创建了更可靠的服务。 我认为,这是整个行业从反应设计中获得真正好处的地方。

为了对反应式编程进行更正式的介绍,Spring的David Syer撰写了一个由三部分组成的出色的系列文章,内容涉及使用Spring React进行编程: 第1 部分 / 第2 部分 / 第3部分 。

使用Spring Boot 1.4简化测试

Pivotal最近发布了Spring Boot 1.4 ,它具有许多有趣的新功能( 例如,从类路径中的图片自动生成ascii横幅! ),并引入了Spring Core 4.3 ,使开发人员的工作更加轻松。

在添加的所有功能中,我最兴奋的是所有新的测试支持。 对像Spring这样的IoC / DI容器的普遍批评是,由于开发人员必须编写所有上下文设置以测试其代码,这会使代码的测试更加困难(尽管也可以通过更好地缓解这些问题来缓解这些问题)代码设计)。 幸运的是Pivotal和社区已经做出了回应,并添加了一套新功能,以减轻编写单元测试的负担。 有关所有新测试功能的全文,请参见此处 。

使代码易于测试是缩短反馈循环的最重要的使能功能之一,我将在稍后介绍更多内容。 有关Spring Boot 1.4的完整发行说明,请查看此链接 。

缩短开发反馈循环

我参加过的以前的会议和演讲通常都集中在新工具,新模式或新技术上。 尽管收益可能显而易见,但将收益引入组织的过程通常很困难。 但是,我很高兴看到Pivotal将两个主题演讲的大部分内容用于我最近阅读的一个领域; 持续交付 。

连续交付的主要原则是,每次提交都应启动一系列自动化过程(测试,部署),最后将代码交付给至少一个类似于生产的环境(如果不是生产本身)。

为了实现这一目标,连续交付在很大程度上取决于自动化。 单元测试,以验证代码是否满足质量阈值;集成测试,以确保应用程序在环境中能够正常运行;部署脚本,以防止在部署至环境时出现配置问题。

在这些过程中,具有增强开发周期的功能,例如允许开发人员更快地验证更改的单元测试,完全审核更改/部署的能力以及使回滚部署的过程变得非常容易的功能。 所有这些过程从本质上帮助降低了风险,但是与生产的频繁部署一起通过缩小部署之间的增量来降低风险。

尽管开发环境中没有灵丹妙药,但连续交付,快速而自信地部署到生产环境(有时一天数百次)的能力可能是将优秀软件公司与劣质软件公司区分开的标志性特征。 而且,任何编写一行代码的组织都是一家软件公司。

为开源社区做贡献

紧接着以缩短反馈循环为主题,这是开源项目从我们的操作系统(Linux),框架(Spring)和平台(Cloud Foundry)等众多领域接管软件世界的一个核心原因,这是因为开源提供了封闭项目无法提供的反馈循环:工具的用户可以为此做出贡献!

这就是使Spring从成为IoC / DI容器发展到几乎包罗万象的生态系统( https://spring.io/projects )的原因。 参与开源项目是建立知识库,学习新思想以及在组织或直接地理区域之外建立联系的绝佳方法。 对开源项目的贡献范围从修复问题到添加新功能 。

所以,如果你有兴趣的贡献, 也 有 很多的更多 机会 ,以 做 如此。

最后的想法

参加SpringOne平台是一次很棒的经历。 看到Spring社区在过去几年中在将新项目添加到平台并扩展他们已经拥有的项目的功能方面所取得的进步,真是令人惊讶。

有关Spring的继续更新,请访问以下博客: https : //spring.io/blog 。 另外,请通过订阅右侧边栏中的内容确保在Keyhole上关注我们的博客!

Spring 5的新功能以及与Pivotal员工的对话使我对Spring和Java的未来感到非常兴奋!

翻译自: https://www.javacodegeeks.com/2016/08/springone-platform-2016-retrospective.html

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

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

相关文章

欧姆龙cp1hum读保护解密步骤_欧姆龙PLC的NJ系列NJ产品功能介绍

欧姆龙PLC的NJ 系列NJ运动、逻辑和视觉集于一体欧姆龙PLC的NJ 系列NJ特点One Machine Control运动、逻辑和视觉集于一体将组成机械所需的各种控制设备汇集于一体,使用一个软件即可进行控制。 这就是Sysmac自动化平台的努力目标。 我们的新型机器自动化控制器NJ系列通…

关于CUDA和CuDNN配置的小问题

为了方便组员操作,简单写一下CUDA的配置啦。 首先你需要一台电脑,有NVDIA显卡的那种(就那个煤气灶,你懂我意思吧),然后就继续往下走吧,如果没有的话可以找一下右上角的红叉了,这篇文…

PyMongo--非关系型数据库mongodb入门(一步一步 版)

PyMongo--非关系型数据库mongodb入门(一步一步 版) 本文主要内容: 1.简要介绍mongodb 2.Pymongo 3.mongo shell 4.我的mongodb入门之旅 1.简要介绍mongodb MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的…

python画图颜色种类_Python可视化|matplotlib07-python colormap(颜色映射)(三)

本篇详细介绍matplotlib内置的颜色条Colormap使用。 本文将学到什么? 1、colormap名称 2、colormap可视化 3、colormap使用方法 4、参考资料 更好的阅读体验请戳: 1、colormap名称 colormap颜色通过matplotlib的cm模块调用,print(dir(cm))即可…

element table 组件内容换行方案

element table 组件内容换行方案 white-space的值&#xff1a; normal 默认。空白会被浏览器忽略。pre 空白会被浏览器保留。其行为方式类似 HTML 中的<pre> 标签。nowrap 文本不会换行&#xff0c;文本会在在同一行上继续&#xff0c;直到遇到 <br>标签为止。pre-…

UDP Socket编程 C/C++实现 (Windows Platform SDK)

挺无聊一小程序&#xff0c;俩SB一人说一句&#xff0c;据说聊天程序最好用UDP写。 Server&#xff1a; [csharp] view plaincopy #pragma comment (lib,"ws2_32.lib") #include <Winsock2.h> #include <stdio.h> void main() {…

关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!

MongoDB的内部构造《MongoDB The Definitive Guide》 MongoDB的官方文档基本是how to do的介绍&#xff0c;而关于how it worked却少之又少&#xff0c;本人也刚买了《MongoDB TheDefinitive Guide》的影印版&#xff0c;还没来得及看&#xff0c;本文原作者将其书中一些关于M…

Spring Kafka生产者/消费者样本

我的目的是演示Spring Kafka如何为原始Kafka Producer和Consumer API提供一种易于使用且对具有Spring背景的人熟悉的抽象。 示例场景 示例场景是一个简单的场景&#xff0c;我有一个系统&#xff0c;该系统生成一条消息&#xff0c;另一个系统对其进行处理 使用Raw Kafka Pr…

homelede软路由设置方法_斐讯无线路由器怎么设置 斐讯无线路由器设置方法【详解】...

无线路由器的品类在不断增加&#xff0c;人们的生活也逐渐无法离开WIFI&#xff0c;各类无线路由器的设置方法大同小异&#xff0c;为了方便不为人知的小白更方便的设置无线路由器&#xff0c;这里详细介绍一下斐讯(phicomm)无线路由器怎么设置。配置前准备&#xff1a;A、请保…

Angular 个人深究(四)【生命周期钩子】

Angular 个人深究&#xff08;四&#xff09;【生命周期钩子】 定义&#xff1a; 每个组件都有一个被 Angular 管理的生命周期。 Angular 创建它&#xff0c;渲染它&#xff0c;创建并渲染它的子组件&#xff0c;在它被绑定的属性发生变化时检查它&#xff0c;并在它从 DOM 中被…

BITMAPINFO结构

BITMAPINFO结构定义了Windows设备无关位图&#xff08;DIB&#xff09;的度量和颜色信息。 一、BITMAPINFO结构形式&#xff1a; typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; } BITMAPINFO; 二、BITMAPINFO成员 bmi…

多媒体技术基础第四版林福宗pdf_意大利留学|没有绘画基础,还能考研艺术类专业吗?...

想学艺术专业&#xff0c;却没有绘画基础还能学艺术类专业么&#xff1f;意大利研究生的入学会简单一点 是典型的“宽进严出”想学艺术相关的专业&#xff0c;有2种看你是偏理论&#xff0c;还是偏实践。一起看一下&#xff01;偏实践方面纯艺类&#xff1a;油画、版画、雕塑、…

Spring Boot 1:Introduction

Spring Spring 在不断发展的过程中&#xff0c;边界不断扩张&#xff0c;需要的配置文件也越来越多&#xff0c;使用起来也越复杂&#xff0c;项目中也经常因为配置文件配置错误产生很多问题。即&#xff1a;Spring 逐渐变成了一个大而全的框架&#xff0c;背离它简洁开发的理念…

Pinely Round 3 (Div. 1 + Div. 2)

Pinely Round 3 (Div. 1 Div. 2) Pinely Round 3 (Div. 1 Div. 2) A. Distinct Buttons 题意&#xff1a;当前处于(0, 0)原点&#xff0c;给出若干个平面坐标轴上的点&#xff0c;是否可以仅选择三个方向便可以到达所有给出的点。 思路&#xff1a;到达单一坐标点最多需要…

在MFC,Win32程序中向控制台(Console)窗口输出调试信息

在MFC程序中输出调试信息的方法有两种&#xff0c;一种是使用TRACE宏&#xff0c;可以向Output窗口输出调试信息&#xff1b;另一种是用MessageBox&#xff0c;弹出消息框来输出调试信息&#xff0c;但会影响程序的运行。其实有一种方法可以更为方便的输出调试信息&#xff0c;…

C++程序内存泄漏都与哪些方面有关,该如何处理和避免

动态内存分配有几种: 一个是用了malloc/free, new/delete 第二个使用了第三方的库&#xff0c;库里面的API使用了第一种方法&#xff0c;他们需要你来释放空间&#xff0c;这个会在库的说明文档里有说明。 第三是程序递归&#xff0c;大量的程序递归和互相调用而不推出导致栈空…

unity vr是加一个摄像机就行吗_梦工厂和皮克斯员工创办的Baobab谈互动叙事:传统动画与VR动画的探索...

ACGN洞察访问三文娱网站3wyu.com查看产业必读文章Baobab工程师谈VR动画&#xff0c;以获得艾美奖和安妮奖的作品为例&#xff0c;介绍在跨媒体平台提升动画的质量、交互性和故事性。上个周末&#xff0c;Unite Shanghai 2019 在上海国际会议中心举行&#xff0c;来自世界各地的…

hbase regions_使用Regions ADF 11g进行Master Detail CRUD操作

hbase regions此示例演示了如何使用Regions在表之间创建Master Detail关系。 区域的主要目的是可重用性的概念。 使用区域和有限的任务流&#xff0c;我们可以将页面重用到许多其他页面中&#xff0c;以保持相同的功能并采用更简洁的方法 下载示例应用程序。 对于此示例&#…

(兔子繁殖问题)有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到三个月后每个月又生一对兔子,假如兔子都不死,问32个月过后的兔子总数为多少?...

网上关于这个问题有很多人说这个符合斐波那契数列&#xff0c;但是我个人在推算的时候发现并不是这样的&#xff0c;所以想自己解决这个问题 建立一个兔子类 属性有ID&#xff0c;age public class rabbit{ public  $id; public age; } 第1个月&#xff1a;(id1,age1)-------…

IF-ERRORLEVEL使用方法

我们都知道if是命令行下的一个条件判断语句&#xff0c;ERRORLEVEL是它的一个参数&#xff0c;翻译过来就是“错误返回码”的意思&#xff0c;它的作用是判断前一条命令的错误返回值&#xff0c;然后和定义的字符值进行比较&#xff0c;再决定进行什么动作今天远程一个客户&…