小编Som*_*ing的帖子

通过引用捕获异常危险吗?

请查看以下异常抛出和捕获:

void some_function() {
    throw std::exception("some error message");
}

int main(int argc, char **argv) {
    try {
        some_function();
    } catch (const std::exception& e) {
        std::cerr << e.what() << std::endl;
        exit(1);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

通过引用捕获抛出的异常是否安全?

我担心的是因为异常e实际上是放在堆栈上some_function().但some_function()刚刚回来,导致e被破坏.所以实际上现在e指向一个被破坏的对象.

我的担忧是否正确?

传递异常而不按值复制它的正确方法是什么?我应该抛出new std::exception()它放在动态内存中吗?

c++ exception

63
推荐指数
4
解决办法
4857
查看次数

杰克逊:将枚举值序列化和反序列化为整数

考虑以下枚举和类:

public enum State {
    ON,
    OFF,
    UNKNOWN
}

public class Machine {
    String name;
    int numCores;
    State state;

    public Machine(String name, int numCores, State state) {
        this.name = name;
        this.numCores = numCores;
        this.state = state;
    }
}
Run Code Online (Sandbox Code Playgroud)

并考虑以下主要功能:

public static void main(String args[]) {
    Machine m = new Machine("Machine 1", 8, OFF);
    ObjectMapper mapper = new ObjectMapper();
    String machineAsJsonString = mapper.writeValueAsString(m);
    System.out.println(machineAsJsonString);
}
Run Code Online (Sandbox Code Playgroud)

目前,这个主要的输出是:

{"name" : "Machine 1", "numCores" : 8, "state" : "OFF"}
Run Code Online (Sandbox Code Playgroud)

这种输出并不适合我,因为除了字符串"OFF"state,我想它是 …

java enums serialization json jackson

22
推荐指数
5
解决办法
2万
查看次数

C:连接字符串的最佳和最快方法是什么

我目前使用库中的strcat()函数连接c中的字符串string.h.

我想到了,我得出一个结论,它应该是非常昂贵的函数,因为它开始连接之前,它必须迭代char数组,直到它找到'\0'char.

例如,如果我"horses"使用1000 连接字符串strcat(),我将不得不付费 (1 + 2 + 3 + ... + 1000) * strlen("horses") = (1000*1001)/2 * 6 = 3003000

我想到了非标准的方法,维护一个字符串长度的整数,然后发送到strcat()指向字符串末尾的指针:

strcat(dest + dest_len, "string");
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只会付钱1000 * strlen("horses") = 1000 * 6 = 6000.

6000要低得多3003000,所以如果你做了很多这样的连接,它对于性能来说非常关键.

有没有更标准的方法来做到这一点,看起来比我的解决方案更好?

c string performance concatenation

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

液态机:它是如何工作的以及如何使用它?

我现在正在学习LSM(液态机),我试着了解它们是如何用于学习的.

我对通过网络阅读的内容感到非常困惑.

我会写出我理解的内容 - >这可能是不正确的,如果你能纠正我并解释真相,我会很高兴的:

  1. LSM根本没有接受过训练:它们刚刚用许多"时间神经元"(例如Leaky Integrate和Fire神经元)进行初始化,而它们的阈值是随机选择的,因此它们之间的连接(即不是每个神经元都必须具有共同边缘)与每个其他神经元).

  2. 如果你想在输入I后"学习" x个时间单位,发生Y,你需要用LIF"探测器" "等待" x个时间单位,看看在这个特定时刻发射了哪些神经元.然后,你可以训练一个分类(如前向网络),即放电神经元的这个特定子集是指发生ÿ发生.

  3. 您可以在"液体"中使用许多"时间神经元",因此您可能有许多可能不同的发射神经元子集,因此在您输入等待x等时间单位后,激发神经元的特定子集在此刻变得几乎是唯一的输入

我不知道我上面写的是真的,还是完全垃圾.

请告诉我这是否是LIF的正确用法和目标.

machine-learning neural-network

20
推荐指数
2
解决办法
6752
查看次数

Java Swing:需要一个高质量的JTree和复选框

我正在寻找一个包含复选框的JTree实现,其中包含:

  • 选择一个节点时,将自动选择树中的所有后续节点

  • 取消选择一个节点时,将自动取消选择树中的所有后续节点

  • 如果已选择父节点,并且已从其后续节点之一中删除选择,则将更改节点颜色,以使其直观,即虽然选择了此父节点,但并未选择其所有后续节点(如选择时一样)要在通用安装程序中安装的组件)

  • 点击节点即可(无需按住'Ctrl'键!):

    • 如果已选择该节点,则将取消选中该节点及其所有后继节点
    • 如果未选择该节点,则会选择该节点及其所有后继节点

我在网上寻找一些简单的东西,却找不到我想要的简单东西.

有谁知道这种树的良好实现?

java checkbox swing jtree jcheckbox

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

Python:使用HTML GUI创建桌面应用程序

这个问题更多的是关于方法论.

我想创建一个Python桌面应用程序,但我不希望它的GUI像tkinter或像PyQt.我更喜欢像Bootstrap一样拥有漂亮的现代客户端GUI .

是否有用于在Python中创建此类应用程序的现有API?

如果不是:使用某些Python服务器(如Django或类似web2py)听起来很健全,并且每次用户启动应用程序时启动一个新服务器,只是为了使应用程序核心能够在Python中使用客户端是HTML?有人这样工作吗?

python

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

C:如何将'x'空格附加/连接到字符串

我想在C中的字符串中添加一个可变数量的空格,并希望在我自己实现它之前知道是否有标准的方法.

到现在为止,我用了一些丑陋的方法来做到这一点:

  • 请假设在我调用以下任何函数之前,我注意为我想要连接的空间分配足够的内存

这是我使用的一种方式:

add_spaces(char *dest, int num_of_spaces) {
    int i;
    for (i = 0 ; i < num_of_spaces ; i++) {
        strcat(dest, " ");
    }
}
Run Code Online (Sandbox Code Playgroud)

这个性能更好,但看起来也不标准:

add_spaces(char *dest, int num_of_spaces) {
    int i;
    int len = strlen(dest);
    for (i = 0 ; i < num_of_spaces ; i++) {
        dest[len + i] = ' ';
    }
    dest[len + num_of_spaces] = '\0';
}
Run Code Online (Sandbox Code Playgroud)

那么,你有什么标准的解决方案,所以我不重新发明轮子?

c string spaces concatenation

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

如何在 Ubuntu 20.04 64 位的 VirtualBox 6.1.16 中启用 AVX / AVX2?

长话短说:

  • 当通过 Python 导入时,Tensorflow 1.15 在我的虚拟机上崩溃(错误消息是Illegal instruction (core dumped)),很可能是由于 AVX 和 AVX2 被禁用。
  • 我的主机(Windows 10 64 位)具有AVX 和 AVX2(使用 Cygwin 进行验证,请参阅下面的更多详细信息)[CPU 是 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz]
  • 在客户机上(使用 VirtualBox 6.1.16 的 Ubuntu 20.04 64 位,18.04 也会发生同样的情况),缺少 AVX 和 AVX2。
  • 根据现有线程的建议,我在主机上运行并重新启动了来宾机 - 没有任何变化(来宾机的名称是 Ubuntu20)VBoxManage setextradata "Ubuntu20" VBoxInternal/CPUM/IsaExts/AVX 1VBoxManage setextradata "Ubuntu20" VBoxInternal/CPUM/IsaExts/AVX2 1

有什么建议吗?

更多细节:

cat /proc/cpuinfo使用 Cygwin 在主机上的输出- 它在 avx2 中有 avx:

.....
processor       : 7
vendor_id       : GenuineIntel
cpu family      : …
Run Code Online (Sandbox Code Playgroud)

virtualbox virtual-machine avx avx2 tensorflow

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

Python缺少冻结字典类型的解决方法?

在Python中,当你想使用列表作为某些字典的键时,你可以把它们变成元组,这些元组是不可变的,因此是可以删除的.

>>> a = {}
>>> a[tuple(list_1)] = some_value
>>> a[tuple(list_2)] = some_other_value
Run Code Online (Sandbox Code Playgroud)

当您想要将set对象用作某些字典的键时,也会发生同样的情况- 您可以构建一个冷冻集,这也是不可变的,因此是可清除的.

>>> a = {}
>>> a[frozenset(set_1)] = some_value
>>> a[frozenset(set_2)] = some_other_value
Run Code Online (Sandbox Code Playgroud)

但似乎对于字典没有等价物.

我想到的第一个想法(最终发现它很糟糕)是str(some_dict)用作关键.但是,字典总是使用不同的散列函数,因此相同字典的字符串可能不同.

是否有任何解决方法称为良好实践,或者是否有人有其他想法如何使用类字典对象作为其他词典的键?

python dictionary immutability

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

C:以十六进制方式打印"unsigned long"的正确方法

我有一个函数,它获取一个无符号长变量作为参数,我想以十六进制打印它.

这样做的正确方法是什么?

目前,我使用printf"%lx"

void printAddress(unsigned long address) {
    printf("%lx\n", address);
}
Run Code Online (Sandbox Code Playgroud)

我应该为无符号长十六进制寻找printf模式吗?(而不仅仅是上面提到的"长十六进制")

或者printf仅使用位将数字转换为十六进制? - 所以我不应该关心这个标志呢?

c printf

9
推荐指数
2
解决办法
3万
查看次数