小编Col*_*oli的帖子

Postman 或 Chrome 可以显示 REST 流输出吗?

我有一个 REST 服务器,它应该将纯文本输出作为流发送,但是当我使用 Postman 或 Chrome 进行 REST 调用时,我会在过程结束时立即获得整个输出,而不是获得流。

这是我的 REST 服务器,灵感来自这篇文章

@GET
@Path("/stream-test")
@Produces(MediaType.TEXT_PLAIN)
public Response streamTest(){
    StreamingOutput stream = new StreamingOutput() {
        @Override
        public void write(OutputStream os) throws IOException, WebApplicationException {
            Writer writer = new BufferedWriter(new OutputStreamWriter(os));
            for (int i=1; i<=10; i++) {
                writer.write("output " + i + " \n");
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            writer.flush();
        }
    };
    return Response.ok(stream).build();
}
Run Code Online (Sandbox Code Playgroud)

输出行全部同时显示。我希望每 500 毫秒看到一个输出。

我的实现有问题吗?

或者 Postman 和 Chrome 无法显示流输出? …

rest stream postman

8
推荐指数
3
解决办法
1万
查看次数

如何在 Java Reactor 链中使用 void 方法?

考虑这个代码:

import reactor.core.publisher.Mono;

public class Main {

    public static void main(String[] args) {
        Mono.just(1)
            .map(Main::return_int) // is ok
//          .map(Main::return_void) // is not ok
            .subscribe();
    }

    private static void return_void(int input) {
        // do stuff with input
    }

    private static int return_int(int input) {
        return input;
    }
}
Run Code Online (Sandbox Code Playgroud)

显然禁止Mono#map与空参数一起使用,我得到error: method map in class Mono<T> cannot be applied to given types; (...)

现在我如何return_void()在链中调用这个方法?

我应该使用其他运算符#map吗?或者除了包装return_void()到一个返回的方法之外别无选择Mono< Void>

java java-8 project-reactor

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

如何使用Bootstrap和Angular ngFor和固定缩进创建手风琴表?

我的目标是复制此行为并将其包含在ngFor循环中。

我尝试了几种代码,每个代码都有不同的问题:

尝试1:

<table class="table">
    <tbody>
        <tr *ngFor="let game of games; let i = index" class="clickable-row" data-toggle="collapse" [attr.data-target]="'#gameDetails' + i">
            <td class="text-nowrap">{{game.date}}
                <div [attr.id]="'gameDetails' + i" class="collapse">
                    <p>Insert a large component in this place</p>
                </div>
            </td>
            <td class="text-nowrap">{{game.label}}</td>
            <td class="text-nowrap">{{game.score}}</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

尝试1个结果,但已崩溃:

尝试1个结果,崩溃了

尝试1个结果,已部署:

尝试1个结果,已部署

在尝试1中,问题在于折叠的组件适合左侧单元格,从而影响了右侧单元格。

尝试2:

<table class="table">
    <tbody>
        <div *ngFor="let game of games; let i = index">
            <tr class="clickable-row" data-toggle="collapse" [attr.data-target]="'#game2Details' + i">
                <td class="text-nowrap">{{game.date}}</td>
                <td class="text-nowrap">{{game.label}}</td>
                <td class="text-nowrap">{{game.score}}</td>
            </tr>
            <tr [attr.id]="'game2Details' + i" class="collapse">
                <td …
Run Code Online (Sandbox Code Playgroud)

html-table twitter-bootstrap twitter-bootstrap-3 angular

6
推荐指数
2
解决办法
5460
查看次数

是否有一个Spring注释替换ClassPathXmlApplicationContext.getBean?

我在jar中定义了一个类MyFrontService,以下是我想要使用它的方法:

import blabla.MyFrontService;

public class Main {
    public static void main(String[] args) {
        MyFrontService.doThis();
    }
}
Run Code Online (Sandbox Code Playgroud)

FrontService充当访问其他服务的入口点.以下是它当前的定义方式(并且有效).

MyFrontService.java:

public class MyFrontService {

    public static void doThis(){

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/springBeans.xml");
        MyService1 myService1 = (MyService1) context.getBean("myService1");
        myService1.doSomething();
        context.close();

    }
}
Run Code Online (Sandbox Code Playgroud)

MyService1.java:

package blabla.service;

@Service("myService1")
public class MyService1 {

    public void doSomething(){
        // some code
    }
}
Run Code Online (Sandbox Code Playgroud)

SRC /主/资源/ META-INF/springBeans.xml:

(...)
<context:annotation-config />
<context:component-scan base-package="blabla.service" />
(...)
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式替换MyFrontService.java的代码:

@MagicAnnotation("what_path?/springBeans.xml")
public class MyFrontService {

    @Autowired
    private static MyService1 myService1;

    public static void …
Run Code Online (Sandbox Code Playgroud)

java spring

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

Angular with Jasmine:beforeEach()中的异步和它()中的异步之间是否存在冲突?

我的目标是测试API调用,考虑延迟.我受到这篇文章的启发.

我设计了一个沙箱,其中模拟API需要1000毫秒来响应并更改全局变量的值result.测试在500毫秒后和1500毫秒后检查值.

这是最后一次测试失败的代码:

    let result: number;

    const mockAPICall = (delay: number): Observable<number> => {
        console.log('API called');
        return Observable.of(5).delay(delay);
    };

    beforeEach(() => {
        console.log('before each');
    });

    it('time test', async(() => {
        result = 0;
        const delay = 1000;
        console.log('start');

        mockAPICall(delay).subscribe((apiResult: number) => {
            console.log('obs done');
            result = apiResult;
        });

        console.log('first check');
        expect(result).toEqual(0);

        setTimeout(() => {
                console.log('second check');
                expect(result).toEqual(0);
            }, 500
        );

        setTimeout(() => {
                console.log('third check');
                expect(result).toEqual(0);
            }, 1500
        );
    }));
Run Code Online (Sandbox Code Playgroud)

最后一次测试确实按预期失败了,我在日志中得到了这个:

before each
API called
first …
Run Code Online (Sandbox Code Playgroud)

asynchronous jasmine angular

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

如何在 Gitlab 合并请求讨论中获取新评论的通知

当我开始与合并请求相关联的讨论时,我希望在有人向讨论添加评论时收到通知。

当然,我想避免在Watch上设置通知级别,因为它也会向我发送我不感兴趣的活动的垃圾邮件。

有可能还是缺少功能?

gitlab

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

量角器 browser.wait 不适用于 Angular 上的 element(by())

由于什么原因,此代码会失败(未找到元素)...

   element(by.id('loginButton')).click(); // triggers route change
   browser.wait(element(by.tagName('myComponent')).isPresent(), 10000, 'timeout');
   element(by.tagName('myComponent')).click();
Run Code Online (Sandbox Code Playgroud)

...虽然这段代码有效?

   element(by.id('loginButton')).click(); // triggers route change
   const eC = protractor.ExpectedConditions;
   browser.wait(eC.visibilityOf(element(by.tagName('myComponent'))), 10000, 'timeout');
   element(by.tagName('myComponent')).click();
Run Code Online (Sandbox Code Playgroud)

我正在使用 Angular 5.2.5、Protractor 5.3.0 和 Jasmine 2.8.0。

可能是相关的:我也可以问为什么我需要添加一段browser.wait()时间element(by())应该由量角器自动添加到 ControlFlow 中,但是已经有很多相关问题(这里这里那里那里,...),不幸的是没有明确的答案。

javascript webdriver protractor angular

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

如何在多个 Mono 运算符中重用变量?

考虑这段代码:

Mono.just(myVar)
    .flatMap(MyClass::heavyOperation)
    .flatMap(MyClass::anotherHeavyOperation)
    .flatMap(res -> doSomething(res, MyClass.heavyOperation(myVar)));
Run Code Online (Sandbox Code Playgroud)

MyClass.heavyOperation(myVar)为了性能,我不想使用相同的输入调用两次。

如何在第四次操作中重用第二次操作的结果?

我想做这样的事情,这是被禁止的:

Object myObj;
Mono.just(myVar)
    .flatMap(var -> {
               myObj = MyClass.heavyOperation(var);                  
               return myObj;
               })
    .flatMap(MyClass::anotherHeavyOperation)
    .flatMap(res -> doSomething(res, myObj));
Run Code Online (Sandbox Code Playgroud)

java reactive-programming project-reactor

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

如果没有合并,git fetch的常见用途是什么?

问题也可能是"为什么在git pull存在时使用git fetch?".

执行a的原因git fetch可能是您希望在运行之前查看fetch命令的日志以了解您将要合并的内容git merge.

git fetch那么git merge作为经典的工作流程,git fetch如果你以前没有运行过这个命令,你还有其他常见的东西吗?

git

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

您将如何设计包含 POST 模拟的 REST API?

例如。我需要设计一个具有两个功能的 API:付款验证和付款创建。我需要两者,因为最终用户应该在实际确认付款创建之前知道一切正常。为了创造,我有

POST .../payment
Run Code Online (Sandbox Code Playgroud)

带有输入体。如果出现问题,它会返回 HTTP 400。

验证(或模拟)执行与创建完全相同的过程,在保存数据之前停止该过程。对于这个验证,最好有类似的东西

解决方案1

GET .../is-payment-ok
Run Code Online (Sandbox Code Playgroud)

还有一个输入体。它返回 HTTP 200,包括一个布尔值答案和一些细节。

这里的资源不是付款,而是关于付款有效性的信息,这对我来说似乎是 REST 兼容的。缺点是 API 的用户可能会感到困惑,因为如果付款无效,那么模拟将返回 HTTP 200(主体中的布尔值设置为false),而创建将返回 HTTP 400。

, 或者

解决方案2

POST .../payment?simulation=true , or
POST .../payment-simulation
Run Code Online (Sandbox Code Playgroud)

这里的 HTTP 响应代码与支付创建完全相同。缺点是我们使用 POST,实际上没有“发布”任何资源。

你会怎么做?这种情况下是否有 REST 规则或惯例?

rest http-post

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

OpenJDK 11 支持 Java Flight Recorder 吗?

关注这篇文章之后:

\n
\n

openjdk 11 原生支持 jfr

\n
\n

OpenJDK 11 的功能列表也证实了这一点

\n
\n

328:飞行记录器

\n
\n

然而,从这篇 DZone 文章中,关于使用 JFR 链接选项-XX:+UnlockCommercialFeatures

\n
\n

OpenJDK 无法识别此选项\xe2\x80\x99

\n
\n

当我尝试找前任时。与摇篮:./gradlew clean -Dorg.gradle.jvmargs="-XX:+UnlockCommercialFeatures"我明白了

\n
\n

进程命令行:C:\\Program\nFiles\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot\\bin\\java.exe\n-XX:+UnlockCommercialFeatures (...)

\n

无法识别的 VM 选项“UnlockCommercialFeatures”

\n
\n

我在这里缺少什么?

\n

java jfr openjdk-11

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