platform_SpringOne Platform 2016回顾

platform

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

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

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

React设计

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

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

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

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

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

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

为了对React式编程进行更正式的介绍,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

platform

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

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

相关文章

不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_【网络安全宣传周】网络安全小黑板 | 如何正确设置浏览器...

李夏是一个公司的职员,一天晚上加班赶制文档,由于要向客户汇报产品情况,需要获取大量网上信息,然而在制作中却发现浏览器的网页打不开了。第二天原计划向客户展示的材料未能完整汇总,客户见面对接效果也打了折扣。在当…

【安卓开发 】Android初级开发(五)自定义View

1.自定义View的构造函数调用的场景 package com.sina.myapplication;import android.content.Context; import android.util.AttributeSet; import android.view.View;import androidx.annotation.Nullable;public class Textview extends View {//在new Textview类的时候调用…

kafka分布式_带有Kafka和ZeroMQ的分布式类星体演员

kafka分布式因此,您已经有了使用actor的精美设计,选择了JVM和Quasar在该主题上的强大而忠实的观点。 所有明智的决定,但是在集群上进行分配时您有什么选择呢? 星系 Galaxy是一个非常酷的选择:快速的内存中数据网格&am…

vs 不能自动 析构函数_深入理解C++虚函数的override、overload与hide以及虚析构函数...

今天主要讲的是虚函数的override与overload的区别。首先我们来看一段代码&#xff1a;示例代码#include <stdio.h>#include <string>#include <iostream>#include <complex>using namespace std;class Father{public: Father(); ~Father(); virtual vo…

【开源项目】C++BASE64图像编解码算法

ZBase64.h #pragma once #include <string> using namespace std; class ZBase64 { public:ZBase64(void);~ZBase64(void);/*编码DataByte[in]输入的数据长度,以字节为单位*/string Encode(const unsigned char* Data, int DataByte);/*解码DataByte[in]输入的数据长度,…

log4j2 xsd_Log4j 2.x XSD的描述不完整

log4j2 xsd在博客文章JAXB和Log4j XML配置文件中 &#xff0c;我讨论了“与使用JAXB通过Java类处理[Log4j 1.x和Log4j 2.x] XML配置文件相关的细微差别。” 在本文中&#xff0c;我将探讨与通过Log4j 2.x XML Schema文件Log4j-config.xsd生成的JAXB对象生成Log4j 2.x配置XML相关…

tampermonkey怎么不能用了_普洱茶发霉了怎么办?能不能用太阳晒

大家都知道普洱茶要储藏在通风干燥的地方&#xff0c;如果储存不恰当就可能变质发霉。而且普洱茶很容易吸味&#xff0c;需要存放到干净的环境并避免日晒。当发现茶叶发霉的现象比较严重时&#xff0c;需要直接扔掉。如果不严重&#xff0c;可以采用以下方法&#xff1a;千万不…

java开发常见异常_最常见的Java异常及其对Java开发人员的评价

java开发常见异常我知道我说过在完成视频之前我不会发帖&#xff0c;但这一直困扰着我。 至于视频的更新&#xff0c;我有些懒散&#xff0c;有些忙碌&#xff0c;但是我已经准备好记录第一集&#xff0c;这是我第一次有机会&#xff0c;而且我不需要太多的编辑。 无论如何&…

vue 动态变量名_【告别复制粘贴】动态模板生成小技巧

? 这是第 75篇不掺水的原创&#xff0c;想要了解更多&#xff0c;请戳上方蓝色字体&#xff1a;政采云前端团队关注我们吧&#xff5e;本文首发于政采云前端团队博客&#xff1a;告别复制粘贴&#xff1a;动态模板生成小技巧https://www.zoo.team/article/dynamic-template-ge…

【安卓开发 】Android初级开发(六)Activity生命周期

Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d("Activity生命周期","onCreate创建页面");}Overrideprotected void onStart() {super.onStart();Log.d(…

jboss项目导入idea_如何导入任何JBoss BRMS示例项目

jboss项目导入idea在过去几周内&#xff0c;JBoss BRMS演示的用户反复询问我以下内容时&#xff0c;会给您这些提示和技巧&#xff1a; “如何将与各种JBoss BRMS演示项目相关的项目导入到我自己的现有安装中&#xff1f;” 这意味着用户希望在个人安装产品时有一个示例项目&…

amos看拟合度在哪里看_哪里可以看亲爱的热爱的电视剧全集

由杨紫、李现、胡一天、张格出演的暖心甜宠剧《亲爱的&#xff0c;热爱的》正在热播中。该剧根据墨宝非宝小说《蜜汁炖鱿鱼》改编&#xff0c;讲述了一场高智商与高情商的甜萌梦幻爱情故事。剧中李现饰演的高冷G神和杨紫饰演的萌妹学霸&#xff0c;从开头的一见钟情到后面的相处…

【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】

package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util.Set;/*** <p>Can save multiple the value of the map.</p>* Created in 2021/2/20.** author 一笑奈何;*/ public interface HongDou_MultiValueMap<K…

jaxb xml配置_JAXB和Log4j XML配置文件

jaxb xml配置Log4j 1.x和Log4j 2.x均支持使用XML文件来指定日志记录配置 。 这篇文章探讨了与使用JAXB通过Java类处理这些XML配置文件相关的一些细微差别。 本文中的示例基于Apache Log4j 1.2.17 &#xff0c; Apache Log4j 2.6.2和Java 1.8.0_73&#xff08;带有JAXB xjc 2.2.…

multiprocessing.queue取数据要加锁么_干货 | 小程序多页面接口数据缓存

小程序里面多个页面&#xff0c;有时候会需要用到同一个接口的数据。而这些数据全局来说只需要拉取一遍&#xff0c;如果要存到缓存&#xff0c;要怎么保证其他页面取缓存的时候&#xff0c;数据已经拉取回来了呢&#xff1f;答案是多页面接口数据缓存实现。思路设计其实这种场…

【安卓开发 】Android初级开发(七)MD5加密

//MD5加密public String encrypt(String raw){String md5Str raw;try {MessageDigest md MessageDigest.getInstance("MD5");md.update(raw.getBytes());byte[]encryContext md.digest();int i ;StringBuffer buf new StringBuffer("");for (int offse…

apache.camel_Apache Camel 2.18 –即将推出的功能的亮点

apache.camel骆驼骑士正在忙于即将发布的Apache Camel 2.18版本。 当我们动态更新发行说明时 &#xff0c;这是一种快速查看即将发生的情况的方法。 我只是想在夏天在这里进行快速更新&#xff0c;到目前为止&#xff0c;我们已经完成了简短的重点介绍。 随着发行版的临近和文档…

【安卓开发 】Android初级开发(八)WebView网页

1.网页的基本组成 2.WebView的常用方法 WebView webView findViewById(R.id.webvv);//加载线上网页webView.loadUrl("https://www.baidu.com");//加载SD卡上的html文件,Environment.getDownloadCacheDirectory().getPath()为获取SD卡根目录路径webView.loadUrl(&quo…

python整数加法计算器_Python应用实例赏析2.1简单计算

在日常应用中&#xff0c;我们会经常使用计算器进行计算&#xff0c;有些时候普通计算器的功能不能满足需要&#xff0c;例如使用计算机系统自带的计算器&#xff0c;计算不能超过32位数&#xff0c;手机自带计算器不能超过15位等(我的电脑和手机)&#xff0c;也可能计算需要的…

functor_纯Java中的Functor和Monad示例

functor本文最初是我们使用RxJava进行React式编程的附录。 但是&#xff0c;尽管与React式编程非常相关&#xff0c;但对monad的介绍却不太适合。 因此&#xff0c;我决定将其取出并作为博客文章单独发布。 我知道&#xff0c;“ 我对单子的自己的&#xff0c;一半正确和一半的…