请查看以下异常抛出和捕获:
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()
它放在动态内存中吗?
考虑以下枚举和类:
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
,我想它是 …
我目前使用库中的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
,所以如果你做了很多这样的连接,它对于性能来说非常关键.
有没有更标准的方法来做到这一点,看起来比我的解决方案更好?
我现在正在学习LSM(液态机),我试着了解它们是如何用于学习的.
我对通过网络阅读的内容感到非常困惑.
我会写出我理解的内容 - >这可能是不正确的,如果你能纠正我并解释真相,我会很高兴的:
LSM根本没有接受过训练:它们刚刚用许多"时间神经元"(例如Leaky Integrate和Fire神经元)进行初始化,而它们的阈值是随机选择的,因此它们之间的连接(即不是每个神经元都必须具有共同边缘)与每个其他神经元).
如果你想在输入I后"学习" x个时间单位,发生Y,你需要用LIF"探测器" "等待" x个时间单位,看看在这个特定时刻发射了哪些神经元.然后,你可以训练一个分类(如前向网络),即放电神经元的这个特定子集是指发生ÿ发生.
您可以在"液体"中使用许多"时间神经元",因此您可能有许多可能不同的发射神经元子集,因此在您输入等待x等时间单位后,激发神经元的特定子集在此刻变得几乎是唯一的输入我
我不知道我上面写的是真的,还是完全垃圾.
请告诉我这是否是LIF的正确用法和目标.
我正在寻找一个包含复选框的JTree实现,其中包含:
选择一个节点时,将自动选择树中的所有后续节点
取消选择一个节点时,将自动取消选择树中的所有后续节点
如果已选择父节点,并且已从其后续节点之一中删除选择,则将更改节点颜色,以使其直观,即虽然选择了此父节点,但并未选择其所有后续节点(如选择时一样)要在通用安装程序中安装的组件)
点击节点即可(无需按住'Ctrl'键!):
我在网上寻找一些简单的东西,却找不到我想要的简单东西.
有谁知道这种树的良好实现?
这个问题更多的是关于方法论.
我想创建一个Python桌面应用程序,但我不希望它的GUI像tkinter或像PyQt.我更喜欢像Bootstrap一样拥有漂亮的现代客户端GUI .
是否有用于在Python中创建此类应用程序的现有API?
如果不是:使用某些Python服务器(如Django或类似web2py)听起来很健全,并且每次用户启动应用程序时启动一个新服务器,只是为了使应用程序核心能够在Python中使用客户端是HTML?有人这样工作吗?
我想在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)
那么,你有什么标准的解决方案,所以我不重新发明轮子?
Illegal instruction (core dumped)
),很可能是由于 AVX 和 AVX2 被禁用。VBoxManage setextradata "Ubuntu20" VBoxInternal/CPUM/IsaExts/AVX 1
。VBoxManage 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) 在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)
用作关键.但是,字典总是使用不同的散列函数,因此相同字典的字符串可能不同.
是否有任何解决方法称为良好实践,或者是否有人有其他想法如何使用类字典对象作为其他词典的键?
我有一个函数,它获取一个无符号长变量作为参数,我想以十六进制打印它.
这样做的正确方法是什么?
目前,我使用printf与"%lx"
void printAddress(unsigned long address) {
printf("%lx\n", address);
}
Run Code Online (Sandbox Code Playgroud)
我应该为无符号长十六进制寻找printf模式吗?(而不仅仅是上面提到的"长十六进制")
或者printf仅使用位将数字转换为十六进制? - 所以我不应该关心这个标志呢?
c ×3
java ×2
python ×2
string ×2
avx ×1
avx2 ×1
c++ ×1
checkbox ×1
dictionary ×1
enums ×1
exception ×1
immutability ×1
jackson ×1
jcheckbox ×1
json ×1
jtree ×1
performance ×1
printf ×1
spaces ×1
swing ×1
tensorflow ×1
virtualbox ×1