给定项目Reactor的通量或Mono,有没有办法让通量或Mono打印出操作链的样子。例如,下面给出了代码。
Fulx flux = Flux.just("a","b","c")
.map( v -> v.toUpperCase())
.log();
有没有办法让flux打印出处理管道中链接的所有操作员的列表?一些漂亮的ascii格式文本或大理石图?
printTheFlux(通量)应该制作一个很好的打印输出,显示上面示例中所有运算符的结构。我不期望在lambda中生成代码只是一种查看哪些运算符链接在一起的方式。
很好的建议!
然而,等待它,我们可以有这样的东西:
Disposable flux = Flux.just("a", "b", "c")
.map(String::toUpperCase)
.doOnNext(FluxUtil::print)
.subscribe();
其中FLuxUtil::print
只是一个静态方法,您可以用不同的方式编写。
以下是我的完整代码:
public class FluxUtil {
private static String s = "";
public static void main(String[] args) {
Disposable flux = Flux.just("a", "b", "c")
.map(String::toUpperCase)
.doOnNext(FluxUtil::print)
.subscribe();
}
private static Object print(Object o) {
s = !s.isEmpty() ? s.concat("->") : s;
s = s.concat(o.toString());
System.out.println(s);
return o;
}
}
使用Scannable
接口执行此操作有部分构建块:
public String textRepresentation(Flux<?> flux) {
Scannable sc = Scannable.from(flux);
//scan the last operator in the chain and ask if it knows its parents
List<String> names = sc.parents().map(Scannable::operatorName)
.collect(Collectors.toList());
//as it traverses the chain from bottom to top, we need to reverse the order
Collections.reverse(names);
//need to also add the last operator
names.add(sc.operatorName());
return names.toString();
}
@Test
public void textRepresentationTest() {
Flux flux = Flux.just("a","b","c")
.map( v -> v.toUpperCase())
.log();
System.out.println(textRepresentation(flux));
}
印刷品
[map, log]
但并非所有操作符都完全支持它(例如,您可以看到,源代码并不完全支持)。
我在循环后连接了一个DB查询的结果列表,得到了预期的输出,但值之间没有任何分隔符: 有没有办法在值中添加一个换行分隔符以获得漂亮的打印效果?比如: 或 或
问题内容: 假设我有以下代码: 这段代码的问题在于,协程内部的循环永远不会完成第一次迭代,而大小会不断增加。 为什么会这样发生,我该怎么解决? 我无法摆脱单独的线程,因为在我的真实代码中,我使用了单独的线程与串行设备进行通信,而且我还没有找到使用的方法。 问题答案: 不是线程安全的,因此您不能直接在多个线程中直接使用它。相反,您可以使用,它是提供线程感知队列的第三方库: 还有(全披露:我写了它),
作为一个学校项目,我正在开发一个坦克游戏,我正在努力使它尽可能的用户友好(比如可定制的按键绑定、显示设置)。然而,我不希望游戏窗口失去它的比例,所以我想我会在游戏窗口的两侧添加边框,以支持宽屏幕。 我附上了一张图片来说明我在寻找什么: 因此,为了让它工作,我需要一种制作“屏幕层”的方法。基本层是整个屏幕,在屏幕两侧添加了一些图形和显示分数的字体。然后,第二层将呈现在屏幕的中间,这将是游戏窗口,其宽
问题内容: 我有一个使用AngularJS的html页面,我想从中打印一个div。有Angular的方法吗?..或它只是下面的经典javascript方法: 如果AngularJS周围没有任何东西,您能建议不使用JavaScript函数的方式吗(例如:doc.getElementById())..一种类似于AngularJS方式的方法吗? 谢谢, 问题答案: 我创建了一个简单的指令,用于使用ifr
我知道一个测试可以通过运行来运行,在sbt中, 有没有办法告诉sbt/scalatest在没有标签的情况下运行单个测试?例如: 这意味着“在类中运行第二个测试。不管它是什么”。我们有一堆测试,没有人费心去标记它们,那么有没有办法在没有标签的情况下运行单个测试?
我正在使用Kafka 0.9新的消费者API。 我让Kafka为消费者负责补偿。我让消费者在多台机器上阅读相同的主题。 我试图找出以下内容: 在消费者组中注册的消费者 每个消费者的偏移量 我以为消费者-群体-消费者关系会存储在ZooKeeper中。我在ZooKeeper中看到了消费者节点,它没有孩子。 通过查看代码,我可以知道的偏移量被写入了kafka,但我不知道它们被写入了哪个主题?