我一直在想这个,但从来没有真正深入了解它.
情况是这样的:我有一组相对较大的数据实例.每个实例都具有相同的集合或属性,例如:
# a child instance
name
age
height
weight
hair_color
favorite_color
list_of_hobbies
Run Code Online (Sandbox Code Playgroud)
通常我会将一个孩子表示为哈希,并将所有孩子放在哈希哈希值(或哈希数组)中.
这种方法总是困扰我的是我并没有真正使用所有孩子(内部哈希)具有相同结构的事实.如果数据真的很大,似乎可能浪费内存,所以如果每个内部哈希都是从头开始存储的,那么键名的名称似乎比数据本身要多得多......同时请注意当我构建这样的数据结构时,我经常将nstore它们用于磁盘.
我想知道在这个角度创建一个子对象是否更有意义,即使我不需要OO.它会更紧凑吗?查询会更快吗?
或者将每个孩子表示为阵列是否有意义?例如:
my ($name, $age, $height, $weight, $hair_color, $favorite_color, $list_of_hobbies) = 0..7;
my $children_h = {
James => ["James", 12, 1.62, 73, "dark brown", "blue", ["playing football", "eating ice-cream"]],
Norah => [...],
Billy => [...]
};
print "James height is $children_h->{James}[$height]\n";
Run Code Online (Sandbox Code Playgroud)
回想一下我的主要关注点是空间效率(存储时的RAM或磁盘),时间效率(即加载存储的数据集然后从实例y获取属性x的值)和......便利性(代码可读性等).
谢谢!
据我所知,在C中,我们可以使用关键字"register"向编译器建议变量应该存储在CPU寄存器中.CPU指令中涉及的所有变量最终都会存储在CPU寄存器中以供执行,这不是真的吗?
我见过很少的py脚本在脚本的顶部使用它.在什么情况下应该使用它?
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud) 我有一个树视图和一个按钮.
当树视图中没有选择任何项目时,我想禁用按钮(IsEnabled = false)(我想在选择项目时启用按钮...).
我怎样才能做到这一点????
这是我的Xaml.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
x:Class="WpfApplicationTreeViewTest.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480" WindowStartupLocation="CenterScreen" Margin="40" >
<StackPanel>
<TreeView x:Name="strategyTreeView" Margin="10 40 10 10">
<TreeViewItem Header="Test"></TreeViewItem>
<TreeViewItem Header="Test"></TreeViewItem>
<TreeViewItem Header="Test"></TreeViewItem>
<TreeViewItem Header="Test"></TreeViewItem>
</TreeView>
<Button Name="Panel" Content="Selected" Height="40" Width="100" Margin="10"/>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
Thanxs!
我总是想知道最简单的方法来确定一个点是否在一个三角形内,或者在这种情况下,一个矩形对角切成两半.
假设我有一个64x64像素的矩形.使用此矩形,如果传递的点位于矩形的左上角,我想返回TRUE值,如果不是,则返回FALSE.
-----
| /|
| / |
|<__|
Run Code Online (Sandbox Code Playgroud)
霍瑞为糟糕的ASCII艺术.
无论如何,这个返回TRUE的三角形的假设点将是(0,0)和(63,0)和(0,63).如果一个点落在一条线上(例如,50,0),它也将返回TRUE.
假设0,0位于左上角并向下增加......
我脑子里有一个可能的解决方案,但它似乎比它应该更复杂 - 获取传递的Y值,确定它在矩形中的位置,并手动计算出该线在该Y值处切割的位置.例如,传递的Y值为16将是矩形的四分之一高度.因此,根据您检查的哪一侧(左侧或右侧),线条将为16px或48px,具体取决于线的方向. 在上面的示例中,由于我们正在测试左上角,高度为16px,因此线宽为48px
一定有更好的方法.
编辑:矩形也可能看起来像这样
-----
|\ |
| \ |
|__>|
Run Code Online (Sandbox Code Playgroud)
但我在大多数情况下都认为目前已经提供的答案仍应该坚持......
我只是在视觉工作室中使用异常,并且使用上面的代码我期待,因为我的异常规范没有提到任何应该抛出bad_exception的内容.但实际发生的是异常被适当的处理程序捕获.为什么这样?我错过了IDE中的某些设置或其他内容吗?
虽然我被困在上面提到的,实际上我试图找到问题的答案,如果我有一个例外空白规范然后被称为什么?在意外()方法或*bad_exception*将如果双方以什么顺序来抛出?这是代码.
#include "stdafx.h"
#include <stdio.h>
#include <exception>
#include <iostream>
using namespace std;
class A
{
public:
int i;
};
void myunexpected ()
{
cerr << "unexpected called\n";
}
void doSomething(void) throw();
void doSomething(void) throw()
{
A obj;
obj.i= 100;
throw obj;
}
int _tmain(int argc, _TCHAR* argv[])
{
set_unexpected (myunexpected);
try
{
doSomething();
}
catch (bad_exception be)
{
puts("Caught something");
}
catch (A &obj)
{
puts("Caught Integer");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用以下winrar命令行来创建zip存档:
rar.exe a -df -ep -ag[yyyyMMddhhmmss] -ms[txt] C:\MyZipFile.zip C:\tmp\MyFiles*.txt
Run Code Online (Sandbox Code Playgroud)
创建的档案是RAR格式而不是ZIP格式.有没有办法创建常规ZIP而不是RAR档案?
有没有人知道javascript的一个好的正则表达式测试器(我认为php正则表达式和javascript之间存在差异?对吗?)
提前致谢!
彼得
这是我在我的应用程序中看到的一个非常奇怪的问题.我有一个NSTextField绑定到NSManagedObject的属性,但每当保存对象时,文本字段失去焦点.我不断更新绑定的值,所以这远非理想.
有没有人见过这样的事情,并且(希望)找到了解决方案?