小编Ulr*_*rdt的帖子

传播异常的异常注释

假设我有一个a抛出异常的函数$e.因此,根据phpdoc我应该有一个@throws关于定义的注释a.

当我有另一个函数b调用a

function b() {
   a();
}
Run Code Online (Sandbox Code Playgroud)

@throwb指示b可能抛出这种异常的定义上有一个注释是好的做法/坏习惯/正确/错误吗?

php exception phpdoc

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

函数参数和返回值的销毁顺序是什么?

在下面的代码中:

struct Foo {
    void Func();
    ~Foo();
};

Foo GetFoo(Foo foo);
Run Code Online (Sandbox Code Playgroud)

该函数按值GetFoo接受参数并返回一个对象。如果我们这样调用:fooFooGetFoo

Foo f;
GetFoo(f).Func();
Run Code Online (Sandbox Code Playgroud)

foo根据C++标准,参数或返回值对象会先销毁吗?


C++17 在expr.call#4中表示,实现可以选择是否在函数返回时或在封闭的完整表达式末尾时析构参数对象:

参数的生命周期是在定义参数的函数返回时结束还是在封闭的完整表达式结束时结束,是由实现定义的。

class.temporary#4中,它还表示临时对象(返回值对象)作为评估完整表达式的最后一步被销毁:

临时对象在评估(词法上)包含它们创建点的完整表达式的最后一步被销毁。

那么,如果实现选择在封闭的完整表达式末尾析构参数对象,根据 C++ 标准,哪个将首先析构?

c++ language-lawyer

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

将open()作为json.load()参数传递给文件句柄打开吗?

我编写了一个小型Web应用程序,每次请求都应该打开并读取JSON文件.我为此目的使用pickledb.我关心的是,库open()作为json.load()函数的参数传递.所以它让我思考..

当我写这样的代码时:

with open("filename.json", "rb") as json_data:
    my_data = json.load(json_data)
Run Code Online (Sandbox Code Playgroud)

要么

json_data = open("filename.json", "rb")
my_data = json.load(json_data)
json_data.close()
Run Code Online (Sandbox Code Playgroud)

我很确定文件句柄正在关闭.

但是当我以这种方式打开它时:

my_data = json.load(open("filename.json", "rb"))
Run Code Online (Sandbox Code Playgroud)

文档说,json.load()期待一个.read() -支撑含JSON文档类文件对象.

所以问题是,这个句柄是否会保持开放并且每次请求都会占用更多内存?在这种情况下谁负责关闭手柄?

python json

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

未初始化的值由堆栈分配创建

我使用Valgrind工具调试了我的代码.它在此功能中显示此错误.我在下面给出了错误和我的功能.我不知道这里有什么问题?我怎样才能纠正它?我的错误是.

未初始化的值是由0x80996D7处的堆栈分配创建的:cdtojd(std :: string const&)

我的代码是.

double cdtojd(const string &cdate);

double cdtojd(const string &cdate)
{
    int dd,mm,yy;
    int y,m;
    double jd=0;

    //mm = atoi(cdate.substr(0,2).c_str());
    //dd = atoi(cdate.substr(2,2).c_str());
    //yy = atoi(cdate.substr(4,4).c_str());

    sscanf(cdate.c_str(),"%2d%2d%4d",&mm,&dd,&yy);

    //cout<<mm<<"..."<<dd<<"...."<<yy<<endl;

    y = (yy - 1900) * 372;

    m = (mm-1) * 31;

    jd = dd + m + y;

    return jd;
}
Run Code Online (Sandbox Code Playgroud)

c++ valgrind

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

如何访问在 try 语句中初始化的对象

我是 C++ 新手,想知道您是否可以执行以下操作,或者您是否有更好的方法。

我的数据库处理程序有一个自定义异常类:我在主程序中使用它,如下所示:

int main(int argc, char const ** argv){
    try {
        DatabaseHandler DGeneDB = DatabaseHandler("string/to/path");
    }catch(DatabaseHandlerExceptions &msg) {
        std::cerr << "Couldn't open Database" << std::endl;
        std::cerr << msg.what();
        return 1;
    }
    DGeneDB.foo() //Can't access this object since it was initialized in try statement
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想用 DGeneDB 对象做十亿件事,但不想在 try 语句中全部完成。我只想捕获初始化期间引发的构造函数异常。我应该怎么做才能在 try 之外使用该对象?我的意思是,如果它抛出异常,它将返回 1 并在 main() 到达另一个对象之前停止它。

c++ scope exception

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

生成有序约束集

首先,我将粘贴场景,然后提出我的问题:

假设您有一个类别列表,例如:

Food,Meat,Dairy,Fruit,Vegetable,Grain,Wheat,Barley

现在,您有一个适合上面列出的一个或多个类别的项目列表.

以下是项目的示例列表: Pudding,Cheese,Milk,Chicken,Barley,Bread,Couscous,Fish,Apple,Tomato, Banana,Grape,Lamb,Roast,Honey,Potato,Rice,Beans,Legume,Barley Soup

正如您所看到的,每个项目都适合至少一个类别,它可以适应更多,或者可能只有最小值,但最小值始终为1.

例如CheeseFoodDairy.

每个项目都有两个属性:
1)价格标签
2)随机值

集合定义为将每个类别映射到项目.
换句话说,所有类别必须存在于集合中.

上述项目中的一组可以是:

[Pudding,Lamb,Milk,Apple,Tomato,Legume,Bread,Barley Soup]

如您所见,每个项目都映射到一个类别槽:

  • 布丁映射到食品类别
  • Lamb被映射到Meat Category
  • 牛奶被映射到乳制品类别
  • Apple映射到Fruit Category
  • 番茄被映射到蔬菜类别
  • 豆类被映射到谷物类别
  • 面包被映射到小麦类别
  • 大麦汤映射到大麦类别

我的问题是,从给定项目列表中生成上述类别的有序集合的最有效算法是什么.

最佳集合被定义为具有最高的随机值.

唯一的限制是任何生成的集合总共不能超过某个固定数量,换句话说,所有生成的集合都应该在此价格上限之内.

希望我很清楚,谢谢!

algorithm set abstract

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

如何创建一个bash脚本,创建40个同步的程序实例?

我是新来的bashLinux.我有一个我写的程序,我想创建多个同时的实例.

现在,我通过打开10个新终端,然后运行程序10次来执行此操作(我运行的命令是 php /home/calculatedata.php

使用bash脚本执行此操作的最简单方法是什么?此外,我需要知道如何杀死实例,因为它们正在运行无限循环.

谢谢!!

bash scripting loops

7
推荐指数
2
解决办法
5658
查看次数

减少字符串 - 编程竞赛.解决方案需要

我有一个问题要求我们按如下方式减少字符串.

输入是仅具有一个字符串A,BC.输出必须是缩减字符串的长度

可以通过以下规则减少字符串

如果任何2个不同的字母相邻,则这两个字母可以用第三个字母代替.

例如 ABA- > CA- > B.所以最终答案是1(减少字符串的长度)

例如 ABCCCCCCC

这不会变成CCCCCCCC,因为它可以减少

ABCCCCCCC- > AACCCCCC- > ABCCCCC- > AACCCC- > ABCCC- > AACC- > ABC- >AA

因为这里长度是2 <(长度CCCCCCCC)

你怎么解决这个问题?

非常感谢!

为了清楚起见:问题表明它想要减少字符串的最小长度.所以在上面的第二个例子中,有两个可能的解决方案,一个CCCCCCCC和另一个AA.所以2是答案,因为长度AA为2,小于CCCCCCCC= 8 的长度.

puzzle recursion dynamic-programming

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

如何查找被触发的命令的日期明智历史记录

除了命令行之外,如何使历史命令显示日期和时间信息?

bash history

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

当多个高优先级线程在多个核上运行时,Linux内核无响应

编写了一个示例C++多线程程序,该程序运行10个线程,每个线程设置为高优先级和亲和性.在dell机器上编译并运行此代码,该机器具有16个内核,运行centos 7(Linux内核 - 3.10.0-229),禁用超线程.在我运行此代码之后,几秒钟内,我们的Linux机器变得没有响应,从某种意义上说,如果我打开Eclipse编辑器,保存文件或在vi编辑器中保存文件,那些应用程序就会挂起.有趣的是,一旦我停止了这个程序/过程,那么所有其他应用程序将从他们停止的地方恢复.如果我从这10个线程中删除优先级,我也不会看到这个问题.

问题:

1)在16个内核中,6个内核仍留在机器上(cpu使用情况显示,cpu执行了62.9%的用户空间,并且闲置了37.1%.有趣的是内核空间中0%的cpu使用率),所以理想情况下应该使用内核那6个内核处理其他应用程序,可能是其他应用程序无法运行的原因?如何在不引入睡眠/更改优先级的情况下解决此问题?

2)想知道更好的方法,除了在线程中引入睡眠/等待事件(由于内核上下文切换引入最小延迟)以实现并行性?

跑顶命令(top -H):

%Cpu(s):  62.9 us,  0.0 sy,  0.0 ni, 37.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

1107 arun      rt   0   96748   1112    932 R 99.9  0.0   0:25.78 PthreadTest
1115 arun      rt   0   96748   1112    932 R 99.9  0.0   0:24.79 PthreadTest
1118 arun      rt   0   96748   1112    932 R 99.9  0.0   0:22.79 PthreadTest
1120 arun      rt   0   96748   1112    932 R 99.9  0.0   0:20.79 PthreadTest
1123 arun …
Run Code Online (Sandbox Code Playgroud)

c++ linux multithreading

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