小编Chi*_*Lan的帖子

仅在内存中运行PostgreSQL

我想运行一个只在内存中运行的小型PostgreSQL数据库,用于我编写的每个单元测试.例如:

@Before
void setUp() {
    String port = runPostgresOnRandomPort();
    connectTo("postgres://localhost:"+port+"/in_memory_db");
    // ...
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我将在版本控件中检查一个postgres可执行文件,单元测试将使用该版本控件.

有点像HSQL,但对于postgres.我怎样才能做到这一点?

我可以获得这样的Postgres版本吗?如何指示不使用磁盘?

postgresql unit-testing postgresql-performance

88
推荐指数
8
解决办法
7万
查看次数

检查Unlimited Cryptography是否可用

如何在Java代码中检查当前JVM是否具有可用的无限强度加密?

java jce

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

为什么OS线程被认为是昂贵的?

有许多解决方案适用于实现"用户空间"线程.无论是golang.org goroutines,python的绿色线程,C#的异步,erlang的进程等.这个想法是允许并发编程,即使是单个或有限数量的线程.

我不明白的是,为什么操作系统线程如此昂贵?正如我所看到的,无论哪种方式,你必须保存任务的堆栈(操作系统线程或用户空间线程),这是几十千字节,你需要一个调度程序在两个任务之间移动.

操作系统免费提供这两种功能.OS线程为什么要比"绿色"线程更昂贵?由于每个"任务"都有专用的OS线程,导致性能下降的原因是什么?

multithreading threadpool

27
推荐指数
4
解决办法
3330
查看次数

C#async和Java ExecutorService之间的差异

C#有一个很酷的新功能

public Task<string> async f()
{
    string r = LongCompute();
    return r;
}
Run Code Online (Sandbox Code Playgroud)

但并不等同于

public Future<String> f() {
    return Globals.executorService.submit(new Callable<String>() {
        public String call() throws Exception {
            String r = longCompute();
            return r;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

在Java中,您可以更灵活地选择运行任务的线程池.

怎么样等待?这相当于只调用get

string s = await f();
Run Code Online (Sandbox Code Playgroud)

就像

String s = f().get();
Run Code Online (Sandbox Code Playgroud)

C#还有什么,或者它确实只是Java版本的语法糖?(我不是C#guru,所以我可能会遗漏一些东西).

c# java future async-await

14
推荐指数
3
解决办法
6922
查看次数

当我在子目录中时,如何在整个树中git grep?

通常,当我发出时git grep,它只会搜索当前目录及其下方

$ cat A
1
$ cd d
$ cat B
1
$ git grep 1
B:1
$ cd ..;git grep 1
A:1
B:1
Run Code Online (Sandbox Code Playgroud)

如何判断git grep"搜索整个树,无论我当前的工作目录是什么"?

git grep

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

servlet容器什么时候会中断我的线程?

我正在编写一个servlet,它在Java servlet容器中执行(例如,JBoss,Jetty,Tomcat,GlassFish).

servlet容器中断运行我的HTTP请求处理程序的线程的原因是什么?它只会在关闭时才这样做吗?当客户端没有响应时它会这样做吗?

它是标准化的,还是任何容器可以自由地做他想做的事情?

为了澄清,我不是在谈论中断我创建的新线程,只是在我的请求正在运行的servlet容器的线程上.(虽然如果你在答案中提到新线程会发生什么,那将会很有趣).

java servlets

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

模仿C中的静态对象的构造函数

我想要一个全局names变量,看起来像这样

char* names[NAMES_CAP];
int names_len = 0;
Run Code Online (Sandbox Code Playgroud)

我希望每个链接到此库的人都能够将项目添加到此列表中.

很容易做到这一点main.

int main(int argc,char**argv) {
    names[names_len++] = "new name";
    names[names_len++] = "new name 2";
}
Run Code Online (Sandbox Code Playgroud)

但是如果我想要堆叠两个库怎么办?(即,我的库,libnames保存全局变量.如果有人链接到libnameuser谁使用libnames,它将自动添加定义libnameusernames数组中的所有名称libnames.

有没有办法做到这一点?

在C++中,我可以将其插入names[names_len++] = "..."到全局对象的构造函数中,并且必须调用它.但我可以用普通的C做到这一点吗?

c c++ constructor

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