这是从perl中的子例程返回错误消息的好方法吗?
sub some_subroutine{
# do something
$something = 14;
if(1 == 2){
$_ = "This should not be happening!";
return undef;
}
return $something;
}
my $ret=some_subroutine();
print "ERROR: $_" unless(defined $ret);
Run Code Online (Sandbox Code Playgroud)
代码运行正常(在并行世界中,在哪里1 == 2
),但使用$_
返回错误消息是一个好方法?我没有找到任何关于$_
此类用途的使用文档.
谢谢!
假设我们有一个简单的结构,如下所示
struct T{
int x;
int y;
};
T t1, t2;
Run Code Online (Sandbox Code Playgroud)
还假设我有一个map<T, int> myMap
和两个类型的结构仅T
使用它们的x
值进行比较.即t1 < t2
iff t1.x < t2.x
.我试图y
通过myMap 更新键的一些值.这不应该影响地图看到键的方式.除了删除旧元素和插入新元素之外还有什么方法吗?
虽然我知道Unix系统调用brk
和函数的sbrk
作用,但我不知道它们代表什么.任何人都可以开导我吗?
在运行一个试图在不同机器上超过RSS的程序时,我看到完全不同的行为.代码类似于:
...
char** s = (char**)malloc(10000*sizeof(char*));
for (i = 0; i < 10000; i++){
s[i] = (char*)malloc(1000*1000*sizeof(char));
if (s[i] == NULL) {
printf("cannot allocate memory for s[%d]",i);
exit(1);
}
}
int j = 0;
while(1){
for (i = 0; i < 10000; i++){
for (j = 0; j < 1000*1000; j++) {
s[i][j] = 1;
}
if ((i % 100) == 0) printf("i = %d\n", i);
}
}
for (i = 0; i < 10000; i++)
free(s[i]);
free(s);
...
Run Code Online (Sandbox Code Playgroud)
上面的代码尝试使用malloc分配大约10GB的内存.我试过这个代码的前两台机器在linux内核2.6上运行,最后一台运行linux内核2.4.以下是我在这些机器上看到的行为: …
我正在尝试pwrite
使用给定文件描述符在文件的某个偏移量处的某些数据.我的数据存储在两个向量中.一个包含unsigned long
s和另一个包含char
s.
我想构建一个void *
指向代表我的unsigned long
s和char
s 的位序列,并将其传递给pwrite
累积大小.但我怎么能投unsigned long
一个void*
?(我想我可以找出字符然后).这是我正在尝试做的事情:
void writeBlock(int fd, int blockSize, unsigned long offset){
void* buf = malloc(blockSize);
// here I should be trying to build buf out of vul and vc
// where vul and vc are my unsigned long and char vectors, respectively.
pwrite(fd, buf, blockSize, offset);
free(buf);
}
Run Code Online (Sandbox Code Playgroud)
另外,如果您认为我的上述想法不好,我会很乐意阅读建议.
我有一个用例,我知道我在 redis 存储中实现的某些集合是不相交的。我的一些集合非常大,因此,它们sunion
或sunionstore
需要相当长的时间。redis 是否提供处理此类联合的任何功能?
或者,如果有一种方法可以将元素添加到 Redis 中的集合中,而无需在每次插入之前检查唯一性,它就可以解决我的问题。
只是想知道在使用CREATE...SELECT
statement 复制源表的外键约束时会发生什么.是否会复制或忽略引用约束?
这是一个例子:
CREATE TABLE foo(a int, b int, PRIMARY KEY(a));
CREATE TABLE source(id int, a int, PRIMARY KEY(id), FOREIGN KEY(a) REFERENCES foo(a));
CREATE TABLE target SELECT * FROM source;
Run Code Online (Sandbox Code Playgroud)
那么,我的问题是a
目标上的属性是否也指向foo(a)
?如果答案是供应商特定的,我正在寻找MySQL的答案.
在C或C++中定义常量有多少种不同的方法?
我已经知道使用const
关键字和#define
指令.我听说有两种方法可以定义常量,但我从未见过任何其他方法.还有其他人吗?
假设我有一个Java包(.jar和源代码).以下是我想重用的一些类的定义.
abstract class Tree {
public abstract Tree[] children();
public void print();
}
class LabeledTree extends Tree implements Label {
Label label;
Tree[] daughterChildren;
public Tree[] children();
}
class Demo {
public static void main(String[] args) {
Parser p = new Parser();
String[] sent = { "This", "is", "an", "easy", "sentence", "." };
Tree parse = p.apply(sent);
parse.print();
}
}
Run Code Online (Sandbox Code Playgroud)
apply
上面的方法返回一个LabeledTree
.现在,我想创建我自己的树类型,例如MyTree
,它具有以下结构.
class MyTree {
int value;
Label label;
public void myPrint();
}
Run Code Online (Sandbox Code Playgroud)
你在哪里建议我应该把这个类放在继承树中,以便我可以直接从apply
方法实例化这个类的对象?您认为我应该如何设计我的系统以最大化软件重用,而不必解析每个树来构建对象 …