reactive

reactive

响应式编程,是一种非阻塞的编程方式,在Spring5中,Spring WebFlux出现了,他就是使用的reactive,传统的servlet和filter是同步的,传统的getParameter和getPart是阻塞的。

同步servlet

servlet的doGet函数是阻塞的,你的doGet占用多久,servlet线程就要占用多久

异步servlet

在doGet中开启新的线程,在新的线程中执行doGet的业务请求,执行完了再通知servlet线程,这样就不会阻塞servlet,可以支持更高的并发。

Mono 和 Flux

Mono可以返回一个, Flux是多个

SSE(server-sent events)

HTTP协议是一问一答,为什么Flux可以表现出流的样子?注意到response有一个flush,当flush调用的时候,就发送了一个数据过去

WebFlux

SpringCloud5

Eureka

Netfilx在设计Eureka的时候遵守的就是AP原则,Eureka是一个Netfix的子模块, 也是核心模块之一,Eureka是一个基于REST的服务,用于实现云端中间层服务发现和故障转移,它的功能类似于dubbo的注册中心,比如Zookeeper

Eureka架构

1
2
3
4
5
6
7
graph BT
C[Eureka Server]
A[Service Consumer]
B[Service Provider]
A--远程调用-->B
A--获取服务-->C
B--注册/续约/离开-->C

SpringCloud4

架构

约定 > 配置 > 编码
先写pom,xml,yml,sql,
然后写dao,写Mapper,Service,Controller

起步

用上面的方法建立一个Restful风格的服务端生产者,然后我们准备建立消费者,这里的消费者就不应该有Service了,你只需要使用RestTemplate即可

RestTemplate

是spring提供的专门针对rest客户端的高度抽象模版,

1
2
3
4
5
6
7
@Configuration
public class ConfigBean{
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}

Kruskal重构树

克鲁斯卡尔重构树

有的时候,我们需要对最小生成树进行进一步的研究,比方说我们考虑最小生成树上任意两点路径的最小值,这个可以使用主席树、树剖等做法,
但是我们这样考虑,加入新的点,让边权变为点权,路径权的最小值就成了点权的最小值,如下图所示,最小生成树的点全部成为了克鲁斯卡尔重构树上的叶子,非叶节点充当了边权。

1
2
3
4
5
6
7
graph LR;
1((1))-- 5 ---2((2))
2((2))-- 4 ---3((3))
3((3))-- 3 ---4((4))
1((1))-- 8 ---4((4))
2((2))-- 7 ---5((5))
4((4))-- 2 ---6((6))

Read More

牛客算法周周练4A

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

现有一个传动系统,包含了N个组合齿轮和M个链条。每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x : y。
即如果只考虑这两个组合齿轮,编号为u的齿轮转动x圈,编号为v的齿轮会转动y圈。传动比为正表示若编号为u的齿轮顺时针转动,则编号为v的齿轮也顺时针转动。传动比为负表示若编号为u的齿轮顺时针转动,则编号为v 的齿轮会逆时针转动。若不同链条的传动比不相容,则有些齿轮无法转动。我们希望知道,系统中的这N个组合齿轮能否同时转动。

Read More

牛客算法周周练4B

时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

Rinne 最近学习了位运算相关的知识,她想运用自己学习的知识发明一个加密算法。
首先她有一个源数组 A,还有一个密钥数组 B,现在她想生成加密后的数组 C。
她发明的方法是:当计算$$C_i$$的时候,首先将 $$C_i$$赋值为$$C_{i-1}$$,然后加上$$ A_i$$ 分别与每一个满足 $$j \lt i$$ 的 $$B_j$$ 异或后的和,然后加上 $$B_i$$ 分别与每一个满足 $$j \lt i$$ 的 $$A_j$$ 异或后的和,最后加上 $$A_i$$ 与 $$B_i$$ 的异或和。
形式化的讲,关于 $$C_i$$ 的递推式为以下式子:

Read More