我有一个快速的Ada问题.如果我有一个程序,我可以写出一个变量,或者我可能不管它,它应该是一个Out参数还是一个In Out参数?我想这归结为这个问题:
如果调用者调用带参数的过程,但调用Out程序没有触及参数,则调用者会看到什么.它看到相同的价值吗?未定义的行为?
编译器没有抱怨,因为它看到了对Out变量的赋值......它恰好处于条件中,可能无法到达,并且编译器不会费心去检查所有路径.
我怀疑安全的赌注是将参数标记为In Out,但我想知道这是否有必要或只是风格上更可取.
谢谢!
-prelic
我无法理解部分键/弱实体和外键之间的区别.我觉得自己不能理解这些东西是个白痴.
据我了解:
Weak Entity: An entity that is dependent on another entity.
Partial Key: Specifies a key that that is only partially unique. Used for weak entities.
vs
Foreign Key: A key that is used to establish and enforce a relation between data in different tables.
Run Code Online (Sandbox Code Playgroud)
这些似乎不是一样的东西,但是我无法区分它们的用途.
以[非常]简单的例子为例:
We have employees specified by an empid. We also have children specified by name. A
child is uniquely specified by name when the parent (employee) is known.
Run Code Online (Sandbox Code Playgroud)
子实体是否是一个弱的身份,其中部分密钥是名称(部分唯一)?或者我应该使用外键,因为我正在努力建立和加强员工与孩子之间的关系?我觉得我可以为两者辩护,但我也觉得我在这里缺少一些东西.任何见解都值得赞赏,我为这些愚蠢的问题道歉.
我试过用谷歌搜索这个问题,但没有取得多大成功……我确定这个问题或类似问题有一个技术名称,但我似乎找不到答案。
给定一个L严格递增然后严格递减的整数列表,找出该列表的最大值和最小值。
因此,例如,L可能是{1 2 3 4 5 4 3 2}或{2 4 5 7 3}。
为了找到最小值,我说最小的整数必须是左端点或右端点,所以只需比较端点,然后返回最小的一个,给出恒定时间。
为了找到最大值,我基本上建议使用递归二分搜索来找到L[x]满足L[x] > L[x-1]和的点L[x] > L[x+1],给出摊销的 lg(n) 时间。他似乎并不喜欢这个答案,而且对我来说这似乎很天真,所以我想知道我是否遗漏了什么。
谢谢您的帮助!
编辑:
我在python中的解决方案:
def Max(L):
n = len(L)-1
if n == 0:
return L[0]
if L[n/2] > L[n/2 - 1] and L[n/2] > L[n/2 + 1]:
return L[n/2]
elif L[n/2] < L[n/2 + 1]:
return Max(L[n/2:])
else:
return Max(L[:n/2])
Run Code Online (Sandbox Code Playgroud) 我有点困惑.
我正在编写一个非常简单的文件系统,它基本上是: -
从一个文件中
读取一个数据块 - 从该块中
获取一个哈希
- 搜索该哈希的链接列表- 如果找不到,请附加
- 如果找到,则不执行任何操作
问题:
当我不使用free时,程序要慢得多(可能是泄漏?).
当我使用free时,程序运行得更快,块大小为128和256,但是当我尝试512(插入时崩溃)时崩溃.我在视觉工作室工作,它只是崩溃了.我得到"VS停止工作......"的消息,没有提供任何见解.
最重要的是,当我使用free而不使用它时,我会得到很多不同的结果.
任何帮助将非常感谢.
好吧,一些代码(缩写):
struct list_el
{
char* hash;
struct list_el* next;
struct list_el* prev;
};
typedef struct list_el item;
item* head, *tail;
void ins(item* ins)
{
item* iterator = (item*)malloc(sizeof(item));
if(iterator == NULL)
{
printf("out of memory\n");
exit(1);
}
else if(head != NULL)
{
iterator = head;
while(iterator != NULL)
{
if(strcmp(iterator->hash, ins->hash) == 0)
{
//free(iterator); (problem line)
matches++;
return;
}
else if(iterator->next …Run Code Online (Sandbox Code Playgroud) 我刚买了一台新机器(osx-lion),我正在尝试重新安装所有工具.我正在尝试安装NumPy和SciPy.我知道Apple发布的版本并不是让NumPy和SciPy感到满意的原因,所以我去了Python.org并安装了推荐的版本(2.7.3),这很顺利.现在当我which python,它指向新的2.7版本,这是与机器附带的版本不同.我的PATH变量还包含2.7(python.org)版本的路径.
然后我下载了NumPy并收到了消息:
numpy 1.6.1 cannot be installed on this disk. numpy requires python.org Python 2.6 to install.
那么我尝试了SciPy,得到了同样的信息:
scipy 0.10.1 can't be installed on this disk. scipy requires python.org Python 2.6 to install.
经过一些谷歌搜索,我发现所需的2.6只是2.6或更高,我确实安装了Python.org版本(2.7),但我必须遗漏一些东西.
编辑 - 尝试重新启动计算机,以防有些更改需要重新启动才能生效,但这没有用.
任何帮助将不胜感激.谢谢大家.
我有一些与某些 C 函数接口的 ada 代码,但我无法在由 C 代码生成/引发的 ada 代码中捕获内存异常/SIGSEGV 信号。我正在使用运行 C 函数的 ada 任务,但我知道 C 代码中存在问题的唯一方法是,当我尝试安排更多任务时,ada 代码会引发TASKING_ERROR. 这没关系,但无法确切地找出问题的来源,因为问题的唯一迹象是TASKING_ERROR我的 ada 任务调度程序中的“一路向上”。我可能会采用什么策略来查明任务错误的实际原因?
任何帮助或想法将不胜感激。