我正在用C#编写一个数据结构(一个使用斐波那契堆的优先级队列),我正在尝试将它作为TDD的学习经验,我很陌生.
我知道每个测试应该只测试一个类的一个部分,以便一个单元中的故障不会让我混淆多个测试失败,但是我不确定当数据结构的状态对于一个测试.
例如,
private PriorityQueue<int> queue;
[SetUp]
public void Initialize()
{
this.queue = new PriorityQueue<int>();
}
[Test]
public void PeekShouldReturnMinimumItem()
{
this.queue.Enqueue(2);
this.queue.Enqueue(1);
Assert.That(this.queue.Peek(), Is.EqualTo(1));
}
Run Code Online (Sandbox Code Playgroud)
如果其中一个Enqueue或Peek破坏,该测试将会中断.
我想我可以以某种方式让测试手动设置底层数据结构的堆,但我不知道如何在不将实现暴露给世界的情况下做到这一点.
有一个更好的方法吗?依赖其他部分好吗?
我有一个SetUp到位,只是为了简单而离开了它.
我一直在编写一个有趣的程序,可以在Linux上用C语言通过TCP传输文件.程序从套接字读取文件并将其写入文件(反之亦然).我最初使用读/写和程序正常工作,但后来我学习了拼接,并想尝试一下.
我用splice编写的代码在从stdin(重定向文件)读取并写入TCP套接字时非常有效,但在从套接字读取并写入stdout时,会立即将splice设置errno设置为EINVAL.手册页指出当两个描述符都不是管道(不是这种情况)时,EINVAL被设置,为无法搜索的流传递偏移量(没有传递偏移量),或文件系统不支持拼接,这导致我我的问题:这是否意味着TCP可以拼接的管道,而不是到?
我包括下面的代码(减去错误处理代码),希望我做错了.它主要基于维基百科的拼接示例.
static void splice_all(int from, int to, long long bytes)
{
long long bytes_remaining;
long result;
bytes_remaining = bytes;
while (bytes_remaining > 0) {
result = splice(
from, NULL,
to, NULL,
bytes_remaining,
SPLICE_F_MOVE | SPLICE_F_MORE
);
if (result == -1)
die("splice_all: splice");
bytes_remaining -= result;
}
}
static void transfer(int from, int to, long long bytes)
{
int result;
int pipes[2];
result = pipe(pipes);
if (result == -1)
die("transfer: pipe"); …Run Code Online (Sandbox Code Playgroud) 在我正在研究的一些C++代码中,我经常看到类似下面的代码:
typedef class SomeClass SomeClass;
Run Code Online (Sandbox Code Playgroud)
我对这实际上取得的成就感到困惑.看起来这不会改变任何事情.这样做typedef是什么意思?如果这样做有用,是否值得付出额外的努力?
我正在开发一个需要代表计算机及其用户的数据库.每台计算机可以有多个用户,每个用户可以与多台计算机相关联,因此这是一种典型的多对多关系.但是,还需要一个"主要"用户的概念.我必须能够加入主用户才能列出所有主要用户的计算机.我不确定数据库中最好的结构方式是什么:
1)正如我现在所做的那样:将表与布尔IsPrimary列链接起来.加入需要像ON一样(c.computer_id = l.computer_id AND l.is_primary = 1).它有效,但感觉不对,因为将数据限制为每台计算机只有一个主要用户并不容易.
2)计算机表上直接指向用户行的字段,用户表中的所有行表示非主要用户.这代表了每个计算机的一次主要约束,但却使计算机用户列表变得更难.
3)计算机表上的一个字段,链接到链接表中的一行.感觉很奇怪......
4)还有别的吗?
描述这种关系的"关系"方式是什么?
编辑:@Mark Brackett:第三个选项对我来说似乎不那么奇怪,因为你已经展示了它的外观.出于某种原因,我甚至没有想到使用复合外键,所以我想我必须在链接表上添加一个标识列才能使其正常工作.看起来很棒,谢谢!
@ j04t:很酷,我很高兴我们现在同意#3.
我有一个char类型的IP地址像char ip ="192.123.34.134"我想增加最后一个值(134).有人应该怎么做?我想,我应该将它转换为整数,然后再回来,但不幸的是我不知道怎么做?:(我正在使用C++.
请帮我!
谢谢,kampi
我有一个指针(*ascii),它指向一个char的指针,我希望它的值是一个int,以使它成为一个像if语句一样
if ( ascii == 32 || ((ascii > 96) && (ascii < 123)) {
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我将不胜感激