问题列表 - 第20897页

图结构的深层复制

我在C中有一个图形结构,并希望对其进行深度复制(包括节点和边缘).

结构如下所示:

struct li_list {
    struct li_node n;
};

struct li_node {
    struct li_node *next, *prev;
};

struct gr_graph {
    struct li_list nodes;
    int nodecount;
};

struct gr_node {
    struct li_node node;
    struct gr_graph *graph;
    int pred_count, succ_count;
    struct li_list pred, succ;
};

struct gr_edge {
    struct li_node succ, pred;
    struct gr_node *from, *to;
    unsigned long marks;
};
Run Code Online (Sandbox Code Playgroud)

这些结构本身并不存在,而是在另一个结构中"继承",如下所示:

struct ex_node {
    struct gr_node _; // "Superclass"
    int id;
    struct ex_node *union_find_parent;
    ...
}
Run Code Online (Sandbox Code Playgroud)

是否有一个优雅的解决方案来创建这样的结构的深层副本,包括更新对副本的引用?

注意:嵌套结构的成员不指向它包含的根结构,而是指向它们相关的嵌套结构(例如,ex_node._.pred.n.next指向a ex_edge._.pred).当必须更新这些时,这意味着繁琐的指针算法. …

c

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

Google地图信息窗口中的点击事件未被捕获

使用Google Map v2,我希望能够在单击GMarker的InfoWindow中的文本时触发功能.

$(".foo").click(myFunction);

...

marker.openInfoWindowHtml("<span class=\"foo\">myText</span>");
Run Code Online (Sandbox Code Playgroud)

不起作用.为什么事件没有被InfoWindow捕获?

javascript google-maps mouseclick-event infowindow

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

IE中的jQuery日志记录:如何获取对象?

通过Firefox + Firebug,可以向控制台写出一个jQuery对象,控制台将非常详细地向您展示该特定对象在DOM中引用的内容.

console.log($(mySelector))
Run Code Online (Sandbox Code Playgroud)

在IE8中,使用IE8开发人员工具,我还可以访问控制台日志,该日志将如上所述.但是,就像做一个警报($ myObject)一样,我得到的只是一个通用对象:

LOG: [object Object]
Run Code Online (Sandbox Code Playgroud)

有没有办法让IE向我展示除"这是一个对象"之外的更多细节?

console jquery internet-explorer

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

Haskell缓存函数的结果

我有一个函数,它接受一个参数并产生一个结果.不幸的是,函数产生结果需要很长时间.使用相同的输入经常调用该函数,这就是为什么我可以方便地缓存结果.就像是

let cachedFunction = createCache slowFunction
in (cachedFunction 3.1) + (cachedFunction 4.2) + (cachedFunction 3.1)
Run Code Online (Sandbox Code Playgroud)

我正在研究Data.Array,虽然数组是懒惰的,但我需要用一对对象(使用listArray)初始化它 - 这是不切实际的.如果'key'是例如'Double'类型,我根本无法初始化它,即使理论上我可以为每个可能的输入分配一个Integer,我有几万个可能的输入,我实际上只使用了少数几个.我需要使用函数而不是列表初始化数组(或者,最好是哈希表,因为只使用少量的resutls).

更新:我正在阅读备忘录文章,据我所知,MemoTrie可以按我想要的方式工作.也许.有人可以尝试生成'cachedFunction'吗?对于一个需要2个Double参数的慢函数?或者,或者,在〜[0..1亿]的域中采用一个不会占用所有内存的Int参数?

caching haskell memoization

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

多次启动Adobe AIR应用程序

Adobe air运行时可以防止同时启动多个air应用程序实例.通过随意更改发布者ID来规避此限制是否安全?有谁知道Adobe是否计划在Air 2.0中允许多个并发实例?

air flash

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

从"mysql_query"的结果中计算行数

如果我有这个:

$results = mysql_query("SELECT * FROM table_name WHERE id=$id");
Run Code Online (Sandbox Code Playgroud)

那么有没有办法检查有多少行的字段值为"私有"或"公司"?

我需要向用户显示找到的"私人"和"公司"记录的数量,而不进行其他查询.(有一个名为'ad_type'的列,其中包含"私有"或"公司")

我已经知道mysql_num_rows用于计算所有行!

编辑:有500万条记录!所以也许结果的迭代很慢,你怎么看?

谢谢你的帮助:)

php mysql sql

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

C:模糊整数

如果我的代码中的几个地方都有这样的整数...

int my_secret = 42;
Run Code Online (Sandbox Code Playgroud)

...是否有可能使编译程序中的整数更难找到?我已经看到这用字符串完成,例如通过将每个字母移动x个字符,然后在运行时取消它们,但我怀疑这种技术是否适用于数字.

c obfuscation integer

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

php - 将数组提取到全局变量中

关于“提取”的手册显示您可以提取数组,如下所示:

extract(array('one'=>1,'two'=>2));
Run Code Online (Sandbox Code Playgroud)

变成$一,$二...

但 extract 函数不返回变量。有没有办法“全球化”这些变量?也许不使用 extract,而是使用 foreach 循环?

编辑:(关于我想要实现的目标的解释)我有一个包含数百条输出消息的数组,我希望将其作为变量有效地访问。我的意思是,每当我想输出一条消息时,请说:

$englishMessages = array('helloWorld'=>'Hello World');
$spanishMessages = array('helloWorld'=>'Hola Mundo');
'<span id="some">'. $helloWorld .'</span>';
Run Code Online (Sandbox Code Playgroud)

该消息将会出现。我这样做的原因是为了让用户可以更改他们查看网站所用的语言,例如:“”。$helloWorld .''; 会产生:

Hola Mundo!
Run Code Online (Sandbox Code Playgroud)

php arrays variables global extract

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

MVVM标准化

Silverlight中有人发布 MVVM目前缺乏标准化,所以每个人都有自己的风味.

这就是为什么我和WPF门徒的一些人正在积极讨论每个人都同意的MVVM的哪些元素.我完全理解我们已经以不同的方式实现了模式,我们根据项目的需要混合了几种模式或创建了自己的模式,或者让开发人员的生活变得更轻松......但是忘记了这些困难或项目的特殊需求.让我们讨论一下每个人都同意的MVVM模式的标准规则.我也在这里发表了一些想法.

为何选择MVVM?

  • 可测试性(ViewModel比代码隐藏或事件驱动代码更容易进行单元测试)
  • 在UX设计人员和开发人员之间明确分离
  • 增加视图的"可混合性"
  • 永远不需要更改模型以支持对视图的更改
  • 很少需要更改ViewModel以支持对视图的更改
  • 没有重复的代码来更新视图

做和不看

  • 不应该包含任何你想要测试的逻辑:正如Glenn所说MVVM不是代码计算练习,我们可以在代码隐藏中编写代码.但是你永远不应该写任何你想要测试的逻辑.例如:如果用户选择国家/地区,则您希望在视图中显示州或城市列表.这是业务需求,因此您应该使用单元测试来测试此逻辑.所以,你不应该在代码隐藏中写它.
  • 可以是控件或数据模板
  • 保持视图尽可能简单.:我们仍然可以谨慎使用XAML中的数据触发器或值转换器或Visual State或Blend Behivor.
  • 如果某些东西不可绑定,请使用附加属性:

在ViewModel中做和不做

  • View和Model之间的连接器
  • 保持视图状态,值转换(您可以创建要在ViewModel中显示的数据结构,而不是使用ValueConverter.例如:您需要显示名称而不是名字和姓氏.您的模型可以具有名字和最后名称名称但您可以在ViewModel中创建Name属性.)
  • 没有强大或弱(通过接口)参考View
  • 使VM尽可能可测试(例如,不调用Singleton类)
  • VM中没有与控制相关的内容(因为如果要更改视图,则还必须更改VM.)

模型

  • 可以是数据模型,DTO,POCO,域类的自动生成代理和UI模型,基于您希望如何在域服务和表示层之间分离
  • 没有对ViewModel的引用

你有什么建议或评论吗?

我们小组中有一个分歧.有人说在ViewModel中有View的界面是可以的.但是有人说如果View Model有View接口,那么它将是MVP模式.

我们的一位MVVM专家谈到MVVM Vs MVP

View => ViewModel

  • MVVM视图直接绑定到ViewModel并通过数据绑定与VM通信
  • 在MVP中,视图绑定到悬挂在SupervisingController上的模型或者根本不绑定(被动视图).

ViewModel =>查看

MVVM

  1. INPC /属性绑定
  2. 活动
  3. 消息(Event Aggregator/Messenger/RX框架)
  4. 通过中介如服务
  5. 通过界面
  6. 通过委托(View将代理传递给VM,它可以用来调用它.例如,VM可能会公开一个SetActions方法,View调用它传递它委托的方法.

MVP

在MVP案例中,标准是Presenter通过接口,数据绑定或在被动视图的情况下通过属性与视图对话.使用被动视图时,属性不使用数据绑定,而是使用视图属性getter和setter来直接设置控件值.

你怎么看待这个想法?

你认为ViewModel有View的界面吗?

如果您想添加更多,欢迎您添加... :)

关于这篇文章的全部想法是对社区中的MVVM模式有相同的理解.

mvvm

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

jQuery - 创建复杂HTML片段的最佳实践

在jQuery中创建一些复杂的HTML元素是否有一般的最佳实践?我尝试了几种不同的方法.

首先,我尝试使用createElement并将其与AppendTo等链接在一起:

var badge = $(document.createElement("div")).attr("class", "wrapper1").appendTo("body");
$(document.createElement("div")).attr("class", "wrapper2").appendTo(".wrapper1");
$(document.createElement("table")).attr("class", "badgeBody").appendTo(".wrapper2");
$(document.createElement("tr")).attr("class", "row1").appendTo(".badgeBody");
$(document.createElement("td")).appendTo(".row1");
$(document.createElement("span")).attr("class", "badgeUnlocked").text("UNLOCKED! ").appendTo("td");
$(document.createElement("td")).attr("class", "badgeTitleText").appendTo(".row1");
$(document.createElement("span")).attr("class", "badgeTitle").text(name).appendTo(".badgeTitleText");
$(document.createElement("tr")).attr("class", "row2").appendTo(".badgeBody");
$(document.createElement("td")).appendTo(".row2");
$(document.createElement("img")).attr("src", imgUrl).appendTo(".row2 td");
$(document.createElement("td")).attr("class", "badgeText").appendTo(".row2");
$(document.createElement("span")).attr("class", "badgeDescription").text(description).appendTo(".badgeText");
Run Code Online (Sandbox Code Playgroud)

这可能很粗糙,因为appendTo想要添加到每个匹配元素,所以一切都需要自己的名字,否则它最终会在整个地方重复添加.

然后我尝试创建一个数组并将它们连接在一起:

var badgeFragment = [
'<div><div id="'+ closeId+'" class="closeTab">X</div>',
'<div id="'+ badgeId+'" class="wrapper1">',
'<div class="wrapper2">',
'<div class="badgeBody">',
'<div class="badgeImage">',
'<img src="'+ imgUrl +'">',
'</div>',
'<div class="badgeContents">',
'<div class="badgeUnlocked">ACHIEVEMENT UNLOCKED: </div>',
'<div class="badgeTitle">'+ name +'</div>',
'<div id="'+ textId+'" class="badgeDescription">'+ description +'</div>',
'</div>',
'<div style="clear:both"></div>',
'</div></div></div></div></div>',
]

badgeFragment = $(badgeFragment.join('')); …
Run Code Online (Sandbox Code Playgroud)

html jquery

56
推荐指数
6
解决办法
4万
查看次数