小编Tim*_*ons的帖子

使用Mockito模拟具有泛型参数的类

是否有一种使用泛型参数模拟类的干净方法?假设我必须模拟一个Foo<T>我需要传递给期望a的方法的类Foo<Bar>.我可以很容易地做到以下几点:

Foo mockFoo = mock(Foo.class);
when(mockFoo.getValue).thenReturn(new Bar());
Run Code Online (Sandbox Code Playgroud)

假设getValue()返回泛型类型T.但是当我稍后将它传递给期望的方法时,那将会有小猫Foo<Bar>.铸造是这样做的唯一方法吗?

java generics mockito

261
推荐指数
8
解决办法
15万
查看次数

如何在Clojure中将惰性序列转换为非惰性序列

我在Clojure中尝试了以下内容,期望返回一个非惰性序列的类:

(.getClass (doall (take 3 (repeatedly rand))))
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会回归clojure.lang.LazySeq.我的猜测是doall评估整个序列,但返回原始序列,因为它仍然可用于记忆.

那么从懒惰中创建一个非懒惰序列的惯用手段是什么?

clojure lazy-evaluation

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

如何定制Maven独特版本字符串?

我想知道在<uniqueVersion>true</uniqueVersion>设置时自定义Maven工件部署中使用的时间戳字符串有哪些选项 .理想情况下,我们希望从源代码控制中包含更改列表编号而不是时间戳,因为它是确定给定版本中哪些功能和错误修复的更可靠的方法.

continuous-integration maven-2

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

XSelectInput 不适用于 ButtonPressEvents,怎么办?

我正在用 C 语言编写一个简单的程序,我想捕获正在发生的所有鼠标和键盘事件。我尝试使用“XGrabPointer”,但它会导致锁定屏幕,并且我无法转到其他应用程序。我尝试使用“XSelectInput()”,现在我成功接收键盘事件,但没有收到任何鼠标单击事件。

知道我该怎么做吗?

代码片段如下:

#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>

int main(int argc, char **argv)
{
   Display *dpy;
   Window root;
  unsigned long event_mask;
    event_mask = FocusChangeMask | KeyPressMask | KeyReleaseMask | ButtonPressMask  | ButtonReleaseMask;
    if((dpy = XOpenDisplay(NULL)) == NULL) {
        perror(argv[0]);
        exit(1);
    }
dpy = XOpenDisplay(NULL);
root = XDefaultRootWindow(dpy);

int state;
XWindowAttributes attributes;

XGetInputFocus(dpy,&root,&state);
printf("window id = %d\n"); 
XSelectInput(dpy,root,event_mask);


XEvent ev;
   while(1) {


      XNextEvent(dpy, &ev);
    if(ev.type==ButtonRelease){
    printf("button release\n");
    }

      if (ev.type== KeyPress) {
    printf("keypress event\n"); …
Run Code Online (Sandbox Code Playgroud)

xlib

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

更新 nix 包中的依赖项

目前在 Mac OS X 上使用 nix 频道提供的 Elixir 版本。该包是用 Erlang 18 构建的:

$ iex --version
Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

IEx 1.4.2
Run Code Online (Sandbox Code Playgroud)

我想更新包以使用 Erlang 19。在具有更新依赖项的 nix 中重建包的最直接方法是什么?

erlang elixir nix

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

Asynchronous processing of streaming HTTP with boost::beast

I'm implementing a client which accesses a REST endpoint and then begins processing an SSE stream and monitoring events as they occur. To this end, I'm using Boost::Beast version 124 with Boost 1.63 and attempting to use async_read_some to incrementally read the body of the response.

Here's my code thus far:

namespace http = boost::beast::http;

http::response_parser<http::string_body> sse_client::m_parser;
http::response<http::string_body> sse_client::m_response;
boost::beast::flat_buffer m_buffer;

void sse_client::monitor_sse()
{
    http::request<http::empty_body> req{http::verb::get, m_target, 11};
    req.set(http::field::host, m_host);
    req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
    req.set(http::field::accept, "text/event-stream");
    http::async_write(m_socket, req,
            std::bind(
                &sse_client::process_sse,
                shared_from_this(),
                std::placeholders::_1, …
Run Code Online (Sandbox Code Playgroud)

c++ boost http boost-beast

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

为什么Lisp允许在let中替换数学运算符?

我知道在Scheme中我可以这样写:

(let ((+ *)) (+ 2 3)) => 6
Run Code Online (Sandbox Code Playgroud)

除此之外,在Clojure中:

(let [+ *] (+ 2 3)) => 6
Run Code Online (Sandbox Code Playgroud)

我知道这可以解决问题,但是感觉很奇怪。我认为在任何语言中,数学运算符都是预定义的。C ++和Scala可以执行运算符重载,但是事实并非如此。

这不会引起混乱吗?为什么Lisp允许这样做?

lisp scheme clojure

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