我想运行一个只在内存中运行的小型PostgreSQL数据库,用于我编写的每个单元测试.例如:
@Before
void setUp() {
String port = runPostgresOnRandomPort();
connectTo("postgres://localhost:"+port+"/in_memory_db");
// ...
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我将在版本控件中检查一个postgres可执行文件,单元测试将使用该版本控件.
有点像HSQL
,但对于postgres.我怎样才能做到这一点?
我可以获得这样的Postgres版本吗?如何指示不使用磁盘?
有许多解决方案适用于实现"用户空间"线程.无论是golang.org goroutines,python的绿色线程,C#的异步,erlang的进程等.这个想法是允许并发编程,即使是单个或有限数量的线程.
我不明白的是,为什么操作系统线程如此昂贵?正如我所看到的,无论哪种方式,你必须保存任务的堆栈(操作系统线程或用户空间线程),这是几十千字节,你需要一个调度程序在两个任务之间移动.
操作系统免费提供这两种功能.OS线程为什么要比"绿色"线程更昂贵?由于每个"任务"都有专用的OS线程,导致性能下降的原因是什么?
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,所以我可能会遗漏一些东西).
通常,当我发出时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
"搜索整个树,无论我当前的工作目录是什么"?
我正在编写一个servlet,它在Java servlet容器中执行(例如,JBoss,Jetty,Tomcat,GlassFish).
servlet容器中断运行我的HTTP请求处理程序的线程的原因是什么?它只会在关闭时才这样做吗?当客户端没有响应时它会这样做吗?
它是标准化的,还是任何容器可以自由地做他想做的事情?
为了澄清,我不是在谈论中断我创建的新线程,只是在我的请求正在运行的servlet容器的线程上.(虽然如果你在答案中提到新线程会发生什么,那将会很有趣).
我想要一个全局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
,它将自动添加定义libnameuser
到names
数组中的所有名称libnames
.
有没有办法做到这一点?
在C++中,我可以将其插入names[names_len++] = "..."
到全局对象的构造函数中,并且必须调用它.但我可以用普通的C做到这一点吗?
java ×3
async-await ×1
c ×1
c# ×1
c++ ×1
constructor ×1
future ×1
git ×1
grep ×1
jce ×1
postgresql ×1
servlets ×1
threadpool ×1
unit-testing ×1