我试图弄清楚如何在树节点中实现一个函数,该节点返回其所有后代叶子(无论是直接还是间接).但是,我不想传递一个容器,其中叶子节点将递归放置(树可能很大),而是我想使用生成器迭代树.我尝试了一些方法,但到目前为止还没有一个方法.这是我最接近可能的解决方案:
public interface ITreeNode
{
IEnumerable<ITreeNode> EnumerateLeaves();
}
class Leaf : ITreeNode
{
public IEnumerable<ITreeNode> EnumerateLeaves()
{
throw new NotImplementedException();
}
}
class Branch : ITreeNode
{
private List<ITreeNode> m_treeNodes = new List<ITreeNode>();
public IEnumerable<ITreeNode> EnumerateLeaves()
{
foreach( var node in m_treeNodes )
{
if( node is Leaf )
yield return node;
else
node.EnumerateLeaves();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.我究竟做错了什么?如果在同一个函数中有一个yield语句,似乎递归地调用.EnumerateLeaves将不起作用.
任何帮助将非常感谢.提前致谢.
编辑:我忘了提到一个分支可以有叶子或分支作为子,因此递归.
我决定更改一个我正在使用的工具来使用标签页.当我尝试将各种控件从表单拖到表单顶部的标签页时,它会创建控件的副本,为其指定不同的名称.只需在选项卡顶部重新创建表单或者只是编辑设计器中的源代码就可以将所有内容添加到选项卡中(这就是我所做的,哪个有效),但似乎可能有可能通过gui做一个更好的方法.
我对Web应用程序的跨colo故障转移策略很感兴趣,这样如果主站点失败,用户将无缝地降落到另一个colo的故障转移站点.
事物的应用程序方面看起来主要是通过colos和服务之间的主从数据库设置来设计,以便恢复并能够在中流中获取.我正在试图找出将流量从主站点转移到故障转移站点的策略.即使TTL较低,DNS故障转移似乎也会带来相当大的延迟.
假设主colo上的服务器无法访问,您会建议在colos之间快速移动流量的策略是什么?
如果你有其他有趣的经验/关于跨colo故障转移的智慧的话,我也很乐意听到这些.
我试图找出当前JavaScript在运行脚本标签的位置.什么是怎么回事的是,我需要确定里面一个src'd,动态插入的JavaScript文件所在的DOM.这些是动态生成的标签; 代码段:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>where am i?</title>
<script type="text/javascript" charset="utf-8">
function byId(id) {
return document.getElementById(id);
}
function create_script(el, code) {
var script = document.createElement("script");
script.type = "text/javascript";
script.text = code;
el.appendChild(script);
}
</script>
</head>
<body>
<div id="find_me_please"></div>
<script>
create_script(byId("find_me_please"), "alert('where is this code located?');");
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) Java对象是否应该重复使用,因为它可以重复使用?或者我们应该只在它们是"重量级"时重用它,即是否有与之相关的OS资源?
互联网上的所有旧文章都尽可能地谈论对象重用和对象池,但我已经阅读了最近的文章,这些文章说new Object()现在已经高度优化(10条指令),并且对象重用并不像以前那么大.
目前的最佳做法是什么?你们这样做的人是怎样的?
编辑:非常感谢所有的答案.以下是目前应用优化后的结果:
非常好的部分是这不需要在iphone代码中进行任何更改
我有一个iphone应用程序,其中包含一个以sqlite格式保存的大型字典(只读).我正在寻找减少DB文件大小的想法,目前这个文件非常大.
以下是sqlite DB的条目数和结果大小:
franks-macbook:DictionaryMaker frank$ ls -lh dictionary.db
-rw-r--r-- 1 frank staff 59M 8 Oct 23:08 dictionary.db
franks-macbook:DictionaryMaker frank$ wc -l dictionary.txt
453154 dictionary.txt
Run Code Online (Sandbox Code Playgroud)
...每个条目平均大约135个字节.
这是我的数据库架构:
create table words (word text primary key, sowpods boolean, twl boolean, signature text)
create index sowpods_idx on words(sowpods)
create index twl_idx on words(twl)
create index signature_idx on words(signature)
Run Code Online (Sandbox Code Playgroud)
以下是一些示例数据:
photoengrave|1|1|10002011000001210101010000
photoengraved|1|1|10012011000001210101010000
photoengraver|1|1|10002011000001210201010000
photoengravers|1|1|10002011000001210211010000
photoengraves|1|1|10002011000001210111010000
photoengraving|1|1|10001021100002210101010000
Run Code Online (Sandbox Code Playgroud)
最后一个字段表示字谜检索的字母频率(每个位置在0..9范围内).两个布尔代表子词典.
我需要做以下的查询:
select signature from words where word = 'foo'
select …Run Code Online (Sandbox Code Playgroud) 所以我有一个第三方应用程序,我必须与之接口,这个应用程序需要来自我的users表的userID.问题是我将我的userID存储为GUID,第三方应用程序只接受整数.所以我想,如果有一种方法可以将GUID转换为整数然后能够将其转换回来(因为我从他们的服务器获得有关userID的通信),那么我不必重新编码太多.有任何想法吗?
我正在使用代码库,其中列表需要经常搜索单个元素.
使用Predicate和Find()比在List上手动执行枚举更快吗?
例如:
string needle = "example";
FooObj result = _list.Find(delegate(FooObj foo) {
return foo.Name == needle;
});
Run Code Online (Sandbox Code Playgroud)
与
string needle = "example";
foreach (FooObj foo in _list)
{
if (foo.Name == needle)
return foo;
}
Run Code Online (Sandbox Code Playgroud)
虽然它们在功能上是等同的,但它们在性能方面是否相同?
我有测试数据库和生产数据库.当开发我当然是针对该测试数据库工作时,那么在部署时我必须半手动更新生产数据库(通过运行batch-sql-script).这通常可以正常工作,但是有可能在部署的数据库与测试数据库不同的情况下出错.
对于表:有没有什么方法可以自动测试我使用linq2sql映射到生产数据库的所有实体,以便所有属性等存在?
.net ×3
c# ×3
asp.net ×1
compression ×1
distributed ×1
dns ×1
failover ×1
generator ×1
iphone ×1
iterator ×1
java ×1
javascript ×1
linq-to-sql ×1
list ×1
openvg ×1
performance ×1
recursion ×1
redundancy ×1
ruby ×1
search ×1
sqlite ×1
unit-testing ×1
winforms ×1
yield ×1