小编Sot*_*lis的帖子

在C++中进行事件处理的正确方法是什么?

我有一个应用程序需要以下列方式响应某些事件:

void someMethodWithinSomeClass() {
    while (true) {
        wait for event;
        if (event == SomeEvent) {
            doSomething();
            continue;
        }
        if (event == SomeOtherEvent) {
            doSomethingElse();
            continue;
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

这将是一些线程运行.在其他一些线程中,操作会创建并触发事件.

如何让这些事件达到上述方法/类?在C++中实现事件处理的正确策略或体系结构是什么?

c++ events multithreading event-handling

22
推荐指数
4
解决办法
5万
查看次数

StringBuilder - 重置或创建新的

我有一个条件,StringBuilder保持存储与大平面文件(100的MB)模式匹配的行.但是在达到条件后,我将StringBuilder varialble的内容写入文本文件.

现在我想知道是否应该通过重置对象来使用相同的变量 - >

stringBuilder.delete(0,stringBuilder.length())
Run Code Online (Sandbox Code Playgroud)

要么

stringBuilder=new StringBuilder();
Run Code Online (Sandbox Code Playgroud)

请提出一下,就性能和OOM问题而言,您认为哪种方式更好.

java stringbuilder

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

如何计算与Streams匹配谓词的元素数量?

在Java7中我有这个代码:

public int getPlayersOnline() {
    int count = 0;
    for (Player player : players) {
        if (player.isActive()) {
            count++;
        }
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试尽可能多地使用Java 8功能,如何使用lambdas改进这一功能?

java java-8

22
推荐指数
1
解决办法
2万
查看次数

使用自定义HandlerMethodArgumentResolver进行Spring MVC @Valid验证

我想注册一个HandlerMethodArgumentResolver可以处理以下@Controller处理程序方法定义的自定义

@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {
Run Code Online (Sandbox Code Playgroud)

我可以注册我的解析器,这只是创建了一个Domain通过重写通过请求参数对象,addArgumentResolver()WebMvcConfigurerAdapter.当Spring尝试解析Domain参数时,它会通过它的列表HandlerMethodArgumentResolver(有很多)并选择supports()它的第一个参数.

在上面的例子中,虽然我的解析器将被调用,我的Domain论点将得到初始化,@Valid注释将不会被处理,并为解析器BindingResult,一个ErrorsMethodArgumentResolver是因为它需要一个会失败@ModelAttribute,@RequestBody@RequestPart在处理方法的说法,这我不没有.

如果我尝试通过添加来修复它 @ModelAttribute

@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid @ModelAttribute Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {
Run Code Online (Sandbox Code Playgroud)

将首先检查一个HandlerMethodArgumentResolver实现,并在我的自定义解析器之前解析参数(带和).该不会失败,但我不会对我的自定义创建行为的实例.ModelAttributeMethodProcessorsupports()@ModelAttribute@ValidBindingResultDomain

我可以复制粘贴代码进行验证并添加到模型中ModelAttributeMethodProcessor,但我希望有一种更简单的方法来解析我的参数并执行验证而无需向模型添加对象.有这样的方式吗?

java spring

21
推荐指数
2
解决办法
4695
查看次数

EasyMock对void方法的期望

我正在使用EasyMock进行一些单元测试,我不明白它的用法EasyMock.expectLastCall().正如您在下面的代码中看到的,我有一个带有方法的对象,该方法返回在其他对象的方法中调用的void.我认为我必须让EasyMock期望该方法调用,但我尝试注释掉expectLastCall()调用它仍然有效.是因为我通过EasyMock.anyObject())它将它注册为预期的电话或是否还有其他事情发生?

MyObject obj = EasyMock.createMock(MyObject.class);
MySomething something = EasyMock.createMock(MySomething.class);
EasyMock.expect(obj.methodThatReturnsSomething()).andReturn(something);

obj.methodThatReturnsVoid(EasyMock.<String>anyObject());

// whether I comment this out or not, it works
EasyMock.expectLastCall();

EasyMock.replay(obj);

// This method calls the obj.methodThatReturnsVoid()
someOtherObject.method(obj);
Run Code Online (Sandbox Code Playgroud)

EasyMock的API文档说expectLastCall():

Returns the expectation setter for the last expected invocation in the current thread. This method is used for expected invocations on void methods.
Run Code Online (Sandbox Code Playgroud)

java unit-testing easymock

20
推荐指数
1
解决办法
6万
查看次数

Java"空白的最终字段可能尚未初始化"Anonymous Interface vs Lambda Expression

我最近遇到了错误消息"空白的最终字段obj可能尚未初始化".

通常情况下,如果您尝试引用可能尚未分配给值的字段.示例类:

public class Foo {
    private final Object obj;
    public Foo() {
        obj.toString(); // error           (1)
        obj = new Object();
        obj.toString(); // just fine       (2)
    }
}
Run Code Online (Sandbox Code Playgroud)

我用Eclipse.在行中(1)我得到错误,在行中(2)一切正常.到目前为止这是有道理的.

接下来,我尝试obj在构造函数内创建的匿名接口中访问.

public class Foo {
    private Object obj;
    public Foo() {
        Runnable run = new Runnable() {
            public void run() {
                obj.toString(); // works fine
            }
        };
        obj = new Object();
        obj.toString(); // works too
    }
}
Run Code Online (Sandbox Code Playgroud)

这也有效,因为我obj在创建界面时无法访问.我也可以将我的实例传递给其他地方,然后初始化对象obj然后运行我的界面.(但null在使用之前检查是否合适). …

java compiler-construction lambda constructor java-8

20
推荐指数
2
解决办法
9687
查看次数

TCP Socket SendAsync操作是否可以在不传输BufferList中的所有字节的情况下完成?

在Mono 3.12上,我正在使用Socket.SendAsync(SocketAsyncEventArgs)TCP Stream Socket来实现基于请求的流式传输协议.我正在使用SocketAsyncEventArgs.BufferList设置多个数据缓冲区.

在对文件SocketSocketAsyncEventArgs,我无法找到的是否提及任何SocketAsyncEventArgs.Completed可以在不被时发送的所有字节被提出BufferList时,留下我们必须验证对印象SocketAsyncEventArgs.BytesTransferred.

另一方面,Socket.BeginSend做出保证

当您的应用程序调用时BeginSend,系统将使用单独的线程来执行指定的回调方法,并将阻塞,EndSend 直到Socket发送所请求的字节数或引发异常.

规范对使用SendAsynca 时传输的字节数有什么保证SocketAsyncEventArgs.BufferList

假设事件已完成SocketError.Success.

c# sockets mono

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

Spring RestTemplate发布回复

我不熟悉Spring RestTemplate.

但对于这个项目,我必须使用Spring RestTemplate发送POST调用以使用rest api.

我正在使用此代码:

String restCall = restTemplate.postForObject(url+restParm, null, String.class);
Run Code Online (Sandbox Code Playgroud)

这工作正常.

我想要恢复HTTP状态代码(例如:200 OK.).我怎么能这样做?谢谢.

java spring resttemplate

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

为什么String连接比String.valueOf更快,以便将Integer转换为String?

我有一个基准:

@BenchmarkMode(Mode.Throughput)
@Fork(1)
@State(Scope.Thread)
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS, batchSize = 1000)
@Measurement(iterations = 40, time = 1, timeUnit = TimeUnit.SECONDS, batchSize = 1000)
public class StringConcatTest {

    private int aInt;

    @Setup
    public void prepare() {
        aInt = 100;
    }

    @Benchmark
    public String emptyStringInt() {
        return "" + aInt;
    }

    @Benchmark
    public String valueOfInt() {
        return String.valueOf(aInt);
    }

}
Run Code Online (Sandbox Code Playgroud)

这是结果:

Benchmark                                          Mode  Cnt      Score      Error  Units
StringConcatTest.emptyStringInt                   thrpt   40  66045.741 ± 1306.280  ops/s
StringConcatTest.valueOfInt                       thrpt   40 …
Run Code Online (Sandbox Code Playgroud)

java performance microbenchmark

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

为什么我们需要Java中的抽象类?

为什么我们需要Java中的抽象类?如果你永远不会把它变成一个物体,那为什么要把它放在一起呢?你如何使用它?为什么会这样?我用抽象方法想知道同样的事情.我发现这似乎是一个类似的概念,有一个没有子类的超级类可能无关紧要.

java abstract-class class abstract abstract-methods

17
推荐指数
3
解决办法
4万
查看次数