记录

Java Streams vs. Reactive Streams

Which, When, How, and Why? 学习记录  2020年1月25日

Java: imperative + object-oriented

Michael Feather:

​ “In OPP we encapsulate the moving parts; in FP we eliminate the moving parts.”

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

//double of even numbers
List<Integer> doubled = new ArrayList<>();

for (int i = 0; i < numbers.size(); i++) {
	if (numbers.get(i) % 2 == 0) {
		doubled.add(numbers.get(i) * 2);
	}
}
System.out.println(doubled);

System.out.println(
	numbers.stream()	
		.filter( e -> e % 2 == 0)
		.map( e -> e * 2)
		.collect(toList()));
阅读更多📰

Java虚方法调用

Java virtual method invocation  2020年1月24日

先回顾基本概念 Overloading and Overriding

主要需要总结的是:

​ When multiple overloaded methods are present, Java looks for the closest match first. It tries to find the following:

  • Exact match by type
  • Matching a superclass type
  • Converting to larger primitive type
  • Converting to an autoboxed type
  • Varargs

For overriding, the overridden method has a few rules:

  • The access modifier must be the same or more accessible.
  • The return type must be the same or a more restrictive type, also known as covariant return types.
  • If any checked exceptions are thrown, only the same exceptions or subclasses of those exceptions are allowed to be thrown.

The method must not be static. (If they are, the method is hidden and not overridden.)

关于 instanceof 操作符,null 的情况,null 不是 Object.

instanceof 不能比较没有任何继承关系的类。 而接口可以,因为接口可以被实现。

然后入正题:

阅读更多📰

Java模块化

学习Java 11模块化特性  2020年1月22日

为了准备 1Z0-816,要学习一下 Java 11 的基础部分。

阅读更多📰

响应式Spring Boot系列教程10

用Spring Profiles切换客户端  2020年1月9日

原文由 Trisha Gee 在当地时间2019年12月16日发布在 INTELLIJ IDEA BLOG

在这一节,我们使用Spring Profiles让应用程序决定使用哪个客户端(使用服务端发送事件的 WebClient,或 RSocket)连接到Kotlin Spring Boot股票价格服务。

现在我们有了一个RSocket客户端,可以让我们连接到我们的RSocket服务器,我们想在我们的JavaFX应用程序中使用它。

阅读更多📰

响应式Spring Boot系列教程9

Java RSocket客户端  2020年1月9日

原文由 Trisha Gee 在2019年12月13日发布在 INTELLIJ IDEA BLOG

在这一节,我们添加一个RSocket客户端,用来连接上一节创建的RSocket服务器。

现在,我们有了一个使用Spring WebClient的端到端应用程序。在上一节中,我们介绍了一个新的RSocket服务器,在这节,我们将看到如何创建一个客户端来连接它

阅读更多📰

响应式Spring Boot系列教程8

Kotlin RSocket服务器  2020年1月9日

原文由 Trisha Gee 在当地时间2019年12月9日发布在 INTELLIJ IDEA BLOG

在这一节,我们将给Kotlin后端添加一个新的服务,这次是通过RSocket,一种为响应式数据流而生的协议,发送价格数据。

目前为止,我们以及成功地创建了一个端到端的应用程序,从Kotlin Spring Boot后端发送价格数据,并且将它们展示到一个JavaFX折线图上。那用的是HTTP的服务器发送事件。 但是,既然我们这个是响应式应用程序,我们可能想要选择一种更加适合流式数据的协议。

在这一步,我们要创建一个通过RSocket协议发送价格数据的服务

阅读更多📰

响应式Spring Boot系列教程7

订阅多个消费者  2020年1月9日

原文由 Trisha Gee 在当地时间2019年12月2日发布在 INTELLIJ IDEA BLOG

在这一节,我们更新实时更新图表显示多于一种股票价格,也就意味着订阅多于一个消费者到我们的响应式价格数据流。

在上一步,我们让JavaFX折线图订阅到来自响应式Spring Boot的服务,并实时显示它们。在这一步,我们要更新图表,让它能多次订阅并在同一个图表显示多组数据。

阅读更多📰

响应式Spring Boot系列教程6

显示响应式数据  2020年1月9日

原文由 Trisha Gee 在当地时间2019年11月29日发布在 INTELLIJ IDEA BLOG

在这一节,我们看一下如何连接JavaFX折线图到Kotlin Spring Boot服务以实时显示股票价格数据。

在第四步,我们创建了一个JavaFX Spring Boot应用程序显示一个空的折线图。在上一步(第五步),我们整合了WebClientStockClient去连接到股票价格服务。在这一步我们要让折线图实时显示来自Kotlin Spring Boot服务的股票价格数据。

阅读更多📰

响应式Spring Boot系列教程5

共享Bean的自动装配  2020年1月9日

原文由 Trisha Gee 在当地时间2019年11月25日发布在 INTELLIJ IDEA BLOG

这一节我们看一下如何在一个模块中使用另一个不同的模块中的Spring Beans,通过使用自动装配。

在上一节 ,我们创建了一个JavaFX Spring Boot应用程序显示一个空的折线图。在这篇文章,我们要看一下如何为 Spring Beans设置自动装配,以便我们可以在stock-ui模块里面使用在stock-client定义的Beans。

阅读更多📰

响应式Spring Boot系列教程4

JavaFX折线图  2020年1月9日

原文由 Trisha Gee 在当地时间2019年11月18日发布在 INTELLIJ IDEA BLOG

在这一步,我们会看一下如何创建个一JavaFX应用程序显示一个折线图。这个应用程序会用到Spring的特性,类如控制反转

阅读更多📰