小编Pir*_*ooz的帖子

从perl子例程返回错误消息

这是从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),但使用$_返回错误消息是一个好方法?我没有找到任何关于$_此类用途的使用文档.

谢谢!

perl

14
推荐指数
2
解决办法
1万
查看次数

更新std :: map中键的值

假设我们有一个简单的结构,如下所示

struct T{
  int x;
  int y;
};
T t1, t2;
Run Code Online (Sandbox Code Playgroud)

还假设我有一个map<T, int> myMap和两个类型的结构仅T使用它们的x值进行比较.即t1 < t2iff t1.x < t2.x.我试图y通过myMap 更新键的一些值.这不应该影响地图看到键的方式.除了删除旧元素和插入新元素之外还有什么方法吗?

c++ stl map

12
推荐指数
2
解决办法
6538
查看次数

brk和sbrk代表什么?

虽然我知道Unix系统调用brk和函数的sbrk作用,但我不知道它们代表什么.任何人都可以开导我吗?

c unix sbrk brk

7
推荐指数
1
解决办法
3471
查看次数

malloc在不同的机器上表现不同

在运行一个试图在不同机器上超过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.以下是我在这些机器上看到的行为: …

c linux malloc paging virtual-memory

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

如何从无符号长到无效*?

我正在尝试pwrite使用给定文件描述符在文件的某个偏移量处的某些数据.我的数据存储在两个向量中.一个包含unsigned longs和另一个包含chars.

我想构建一个void *指向代表我的unsigned longs和chars 的位序列,并将其传递给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)

另外,如果您认为我的上述想法不好,我会很乐意阅读建议.

c++ file-io casting

4
推荐指数
1
解决办法
5978
查看次数

如何在redis中有效地联合非重叠集?

我有一个用例,我知道我在 redis 存储中实现的某些集合是不相交的。我的一些集合非常大,因此,它们sunionsunionstore需要相当长的时间。redis 是否提供处理此类联合的任何功能?

或者,如果有一种方法可以将元素添加到 Redis 中的集合中,而无需在每次插入之前检查唯一性,它就可以解决我的问题。

set redis

4
推荐指数
1
解决办法
843
查看次数

create ... select语句中的外键约束会发生什么?

只是想知道在使用CREATE...SELECTstatement 复制源表的外键约束时会发生什么.是否会复制或忽略引用约束?

这是一个例子:

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的答案.

mysql sql

3
推荐指数
1
解决办法
978
查看次数

C/C++中的常量

在C或C++中定义常量有多少种不同的方法?

我已经知道使用const关键字和#define指令.我听说有两种方法可以定义常量,但我从未见过任何其他方法.还有其他人吗?

c c++ constants

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

什么是正确的OO设计,以实现最大的重复使用和效率?

假设我有一个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方法实例化这个类的对象?您认为我应该如何设计我的系统以最大化软件重用,而不必解析每个树来构建对象 …

java oop inheritance

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

标签 统计

c ×3

c++ ×3

brk ×1

casting ×1

constants ×1

file-io ×1

inheritance ×1

java ×1

linux ×1

malloc ×1

map ×1

mysql ×1

oop ×1

paging ×1

perl ×1

redis ×1

sbrk ×1

set ×1

sql ×1

stl ×1

unix ×1

virtual-memory ×1