小编Dan*_*Oak的帖子

如何记录Spring 5 WebClient调用

我正在尝试使用Spring 5 WebClient记录请求.你知道我怎么能实现这个目标吗?

(我使用的是Spring 5和Spring boot 2)

代码现在看起来像这样:

try {
    return webClient.get().uri(url, urlParams).exchange().flatMap(response -> response.bodyToMono(Test.class))
            .map(test -> xxx.set(test));
} catch (RestClientException e) {
    log.error("Cannot get counter from opus", e);
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

java logging spring-boot spring-webflux

25
推荐指数
11
解决办法
2万
查看次数

在Shell脚本中迭代JSON数组

我在data.json文件中有如下JSON数据

[
  {"original_name":"pdf_convert","changed_name":"pdf_convert_1"},
  {"original_name":"video_encode","changed_name":"video_encode_1"},
  {"original_name":"video_transcode","changed_name":"video_transcode_1"}
]
Run Code Online (Sandbox Code Playgroud)

我想迭代数组并提取循环中每个元素的值.我看到了jq.我发现很难用它来迭代.我怎样才能做到这一点?

bash json jq

16
推荐指数
5
解决办法
3万
查看次数

J:默顿方法的默契副词

我发现'addons/math/misc/brent.ijs'将布伦特的方法作为副词实现.我想建立一个牛顿方法作为副词,但它比构建默认动词要困难得多.

这是牛顿迭代的显式版本:

   newton_i =: 1 : '] - u % u d.1'
Run Code Online (Sandbox Code Playgroud)

有了这样的用法:

   2&o. newton_i^:_ (1) NB. (-: 1p1) must be found
1.5708
   2 o. 1.5708 NB. after substitution we get almost 0
_3.67321e_6
Run Code Online (Sandbox Code Playgroud)

当然,为方便起见:

    newton =: 1 : 'u newton_i^:_'
Run Code Online (Sandbox Code Playgroud)

什么是默认的等价物?

operators j newtons-method tacit-programming

7
推荐指数
1
解决办法
206
查看次数

导入 csv 文件数据以填充 Prolog 知识库

我有一个 csv 文件example.csv,其中包含带有标题 var1 和 var2 的两列。

在此处输入图片说明

我想import.pl用重复的事实填充最初为空的 Prolog 知识库文件,而每一行的example.csv处理方式相同:

fact(A1, A2).
fact(B1, B2).
fact(C1, C2).
Run Code Online (Sandbox Code Playgroud)

我如何在 SWI-Prolog 中对此进行编码?

编辑,基于@Shevliaskovic 的回答

:- use_module(library(csv)).
import:-
    csv_read_file('example.csv', Data, [functor(fact), separator(0';)]),
    maplist(assert, Data).
Run Code Online (Sandbox Code Playgroud)

import.在控制台中运行时,我们完全按照请求的方式更新知识库(除了知识库直接在内存中更新,而不是通过文件和后续咨询来更新)。

检查setof([X, Y], fact(X,Y), Z).

Z = [['A1', 'A2'], ['B1', 'B2'], ['C1', 'C2'], [var1, var2]].
Run Code Online (Sandbox Code Playgroud)

csv prolog swi-prolog

5
推荐指数
1
解决办法
4509
查看次数

J和L系统

我将创建一个可以从L系统语法生成字符串的程序.

Astrid Lindenmayer用于模拟藻类生长的原始L系统是:

variables : A B  
constants : none  
axiom     : A  
rules     : (A ? AB), (B ? A)

产生:

iteration | resulting model
        0 | A
        1 | AB
        2 | ABA
        3 | ABAAB
        4 | ABAABABA
        5 | ABAABABAABAAB

我自己在J中天真地实现了这样:

   algae =: 1&algae : (([: ; (('AB'"0)`('A'"0) @. ('AB' i. ]))&.>"0)^:[) "1 0 1
   (i.6) ([;algae)"1 0 1 'A'
?????????????????
?0?A            ?
?????????????????
?1?AB           ?
?????????????????
?2?ABA          ?
?????????????????
?3?ABAAB        ?
?????????????????
?4?ABAABABA …
Run Code Online (Sandbox Code Playgroud)

arrays list l-systems j

5
推荐指数
1
解决办法
222
查看次数

J:列表项之间的符号更改次数

物品a_11.

a =: 1 _1 _1 1 _1
Run Code Online (Sandbox Code Playgroud)

有3个符号变化a:

1, -1, -1, 1, -1
  ?       ?  ?
 here   and here
Run Code Online (Sandbox Code Playgroud)

我如何无限地计算它们?

arrays list j list-manipulation tacit-programming

4
推荐指数
1
解决办法
95
查看次数

ScheduleAtFixedRate未使用Future java 8提供输出

在下面的代码中scheduleAtFixedRate无休止地运行.

所以问题是: -

为什么java提供无限的线程执行场景

Runnable task1 = () -> System.out.println("Hello Zoo");
Future<?> result = service1.scheduleAtFixedRate(task1, 8, 2, TimeUnit.SECONDS);
System.out.println(result.get());
System.out.println(result.isDone());
Run Code Online (Sandbox Code Playgroud)

程序从不打印输出result.get()应为null或System.out.println(result.isDone());应为0.

所以我在调用scheduleAtFixedRate代码之后的观点应该是无法访问的.

java concurrency scheduled-tasks java.util.concurrent java-8

4
推荐指数
1
解决办法
215
查看次数

如何在 C++23 中迭代 2 个容器的“枚举 zip”?

如何在 C++23 中迭代 2 个容器的“枚举 zip”?
在Python中,我会写这样的东西:

A = [10, 20, 30]
B = [40, 50, 60]
for (i, (a, b)) in enumerate(zip(A, B)):
  print(i, a, b)
Run Code Online (Sandbox Code Playgroud)

它依次输出和中的索引i和相应元素。AB

在 C++23 中enumeratezip存在等效项 ( <ranges>),但我不知道如何正确组合它们。

  using namespace std;
  
  auto A = vector {10, 20, 30};
  auto B = vector {40, 50, 60};
  
  // zip
  for (auto [a, b]: views::zip(A, B))
    cout << a << " " << b << "\n";
  
  // enumerate
  for …
Run Code Online (Sandbox Code Playgroud)

c++ std-ranges c++23

4
推荐指数
1
解决办法
160
查看次数

获取计划任务的结果

我正在尝试学习java并发API,对于我的练习,我想安排一个作业每隔X秒定期运行一次.该作业将计算随机数.

我想在完成后立即获得计划任务的结果.我无法仅使用API​​完成此操作,因此我将其破解.

有没有办法更好地做到这一点,而不使用低级机制?我希望能够删除同步MyRandomGiverTask.getResult(),而是使用类似的东西ScheduledFuture.get().但在我的代码中,ScheduledFuture永远不会完成/完成.这是我目前的解决方案:

class A {
    public static void main() {
        MyRandomGiverTask task = new MyRandomGiverTask(200);
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        ScheduledFuture<Double> scheduledDouble =
            (ScheduledFuture<Double>) scheduler
                .scheduleAtFixedRate(task, 1, 4, TimeUnit.SECONDS);
        while (true) {
            System.out.println(" >> " + task.getResult());
        }
    }
    public class MyRandomGiverTask implements Runnable {
        MyRandomGiver giver = new MyRandomGiver();
        int param;
        double result;
        public MyRandomGiverTask(int param) { this.param = param; }
        @Override public void run() { result = giver.getRandom(param); }
        public double getResult() {
            try …
Run Code Online (Sandbox Code Playgroud)

java concurrency scheduling scheduled-tasks java.util.concurrent

1
推荐指数
1
解决办法
2206
查看次数