这是最好的方式吗?
var set2 = new HashSet<reference_type>();
Run Code Online (Sandbox Code Playgroud)
用这样的foreach遍历集合.
foreach (var n in set)
set2.Add(n);
Run Code Online (Sandbox Code Playgroud)
或者像这样使用像union这样的东西.
set2 = set.UnionWith(set); // all the elements
Run Code Online (Sandbox Code Playgroud) 我有一个表,包含行,包含细胞 - 其中一些包含img,如下所示:
<img id="FormView1_btnSave_row1%1%new" style="border-width: 0px; cursor: pointer;"
src="grafik/ok_16x16.gif" onclick="cleverStuff(this)"/>
Run Code Online (Sandbox Code Playgroud)
在函数cleverStuff中我想在单击按钮的行之后的行上操作 - 这个特殊按钮仅包含在最后一行可见行中,下面有一堆隐藏行我想做第一行隐藏线可见 - 但我没能到达下一行.我的理解是,所有组合parent()和next()可以用来从img到td,到tr,最后到下一个tr.所以我试着验证这个:
$(ctrl).attr('id') 正确返回img的id :)
$(ctrl).parent().attr('id') 返回NULL.
我在这里错过了什么?
有许多仿函数看起来像容器(列表,序列,映射等),还有许多仿函数没有(状态转换器IO,解析器等).我还没有看到任何看起来像容器的非平凡Foldable或Traversable实例(至少如果你斜视一下).有存在吗?如果没有,我很想更好地了解他们为什么不能这样做.
private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
{
//cant capture my TAB?
System.out.print(evt.getKeyChar());
}
Run Code Online (Sandbox Code Playgroud)
在没有使用焦点监听技术的情况下,java gui捕获tab键的最简单方法是什么?
我正在尝试定义一个谓词adjacent(X, Y, Zs),如果X和Y在列表中相邻,则该谓词为真.我的代码目前是这样的:
adjacent(_, _, []).
adjacent(X, Y, [X, Y|Tail]) :-
adjacent(X,Y, Tail).
Run Code Online (Sandbox Code Playgroud)
它适用于基本情况adjacent(c, d, [a, b, c, d, e]),但由于基本情况,每个其他情况也返回true,我坚持这一点.
另一个问题是,如果X不等于列表头部的第一部分,那么它会跳过X和Y并转到下一个'X'; 例如,如果c不等于a,则它跳过a和b两者并检查c是否等于c.例如,当列表是这时,这是有问题的
[a, c, d, e]
Run Code Online (Sandbox Code Playgroud)
因为它最终永远不会检查c(我相信).
我很遗憾如何协调这两个问题,并将我对逻辑的理解转化为代码需要发生的事情.
编辑:感谢Christian Hujer的回答,我的基本情况错误已得到纠正,所以现在我只是坚持第二个问题.
我只是在查看Java String类的实现,以下内容让我觉得奇怪:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) { // Here n is being decremented...
if (v1[i] != v2[i])
return false;
i++; // while i is being incremented
}
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这可以通过一个计数变量轻松实现,而n …
我想在类计数器之后找到第一个span元素,代码如下:
<div class="counter"></div>
<p></p>
<span></span>
Run Code Online (Sandbox Code Playgroud)
似乎next()函数只找到了下一个元素,所以像这样:
$(".counter").next("span")
Run Code Online (Sandbox Code Playgroud)
不行.我一直在使用的方式有点冗长,我想知道是否有更短的方式,它是这样的:
$(".counter").nextAll("span").eq(0)
Run Code Online (Sandbox Code Playgroud)
我认为closest()jQuery 3中的方法可以解决这个问题,但我使用的是1.2.6 - 是否有更好的方法(我只是使用了next()错误?)
我试图将我的数据分层设置为树遍历模型到<ul>,以便在我的网站上显示.
这是我的代码:
function getCats($) {
// retrieve all children of $parent
$query = "SELECT max(rght) as max from t_categories";
$row = C_DB::fetchSingleRow($query);
$max = $row["max"];
$result ="<ul>";
$query = "SELECT * from t_categories where lft >=0 and rght <= $max";
if($rs = C_DB::fetchRecordset($query)){
$p_right ="";
$p_left ="";
$p_diff="";
while($row = C_DB::fetchRow($rs)){
$diff = $row["rght"] -$row["lft"];
if($diff == $p_diff){
$result.= "<li>".$row['title']."</li>";
}elseif (($row["rght"] - $row["lft"] > 1) && ($row["rght"] > $p_right)){
$result. "<ul>";
$result.= "<li>".$row['title']."</li>";
}else{
$result.= "<li>".$row['title']."</li>";
}
$p_right = …Run Code Online (Sandbox Code Playgroud) 我正在尝试完成UDP打孔.我的理论基于这篇文章和WIKI页面,但我面临着C#编码的一些问题.这是我的问题:
使用此处发布的代码,我现在能够连接到远程计算机并在同一端口上侦听传入连接(将2个UDP客户端绑定到同一端口).
由于某种原因,对同一端口的两个绑定相互阻止接收任何数据.我有一个响应我的连接的UDP服务器,所以如果我在将任何其他客户端绑定到端口之前先连接到它,我会得到它的响应.
如果我将另一个客户端绑定到该端口,则不会在任一客户端上接收数据.
以下是显示我的问题的2个代码片段.第一个连接到远程服务器以在NAT设备上创建规则,然后在另一个线程上启动侦听器以捕获传入的数据包.然后代码将数据包发送到本地IP,以便侦听器获取它.第二个只发送数据包到本地IP,以确保这是有效的.我知道这不是真正的打孔,因为我在不使用NAT设备的情况下将数据包发送给自己.我现在面临一个问题,如果我在NAT设备旁边使用计算机进行连接,我认为这不会有任何不同.
[编辑] 2/4/2012我尝试在我的网络上使用另一台计算机和WireShark(数据包嗅探器)来测试监听器.我看到从其他计算机传入的数据包但是没有被侦听器UDP客户端(udpServer)或发送方UDP客户端(客户端)接收.
[编辑] 2/5/2010我现在添加了一个函数调用,在初始发送和接收数据包之后关闭第一个UDP客户端,只有第二个UDP客户端才能侦听端口.这有效,我可以从该端口上的网络内部接收数据包.我现在将尝试从网络外部发送和接收数据包.我一发现就会发布我的发现.
使用此代码,我在侦听客户端上获取数据:
static void Main(string[] args)
{
IPEndPoint localpt = new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0], 4545);
ThreadPool.QueueUserWorkItem(delegate
{
UdpClient udpServer = new UdpClient();
udpServer.ExclusiveAddressUse = false;
udpServer.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpServer.Client.Bind(localpt);
IPEndPoint inEndPoint = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("Listening on " + localpt + ".");
byte[] buffer = udpServer.Receive(ref inEndPoint); //this line will block forever
Console.WriteLine("Receive from " + inEndPoint + " " + Encoding.ASCII.GetString(buffer) + ".");
});
Thread.Sleep(1000);
UdpClient udpServer2 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种良好的光线八叉树交叉算法,它以迭代的方式为我提供了光线穿过的叶子.我打算在CPU上实现它,因为我还不想潜入CUDA :)
目前,我的Voxel raycaster只在XxYxZ体素的非分层阵列上执行3D DDA(Amanatides/Woo版本).你可以想象,当有很多空的空间时,这是非常昂贵的,如下图所示(更亮的红色=更多的工作:) :):

我已经发现这个任务有两种算法:自下而上,从叶子向上运行,自上而下,这是基本的深度优先搜索.
我已经从2000年发现了Revelles的算法,称为八元遍历的高效参数算法,看起来很有趣,但是很老了.这是一种自上而下的算法.
最流行的自下而上的方法似乎是K. Sung,用于光线跟踪的DDA八叉树遍历算法,Eurographics'91,North Holland-Elsevier,ISBN 0444 89096 3,p.73-85.问题是大多数DDA八叉树遍历算法都期望八叉树具有相同的深度,这是我不想要的 - 空子树应该只是一个空指针或类似的东西.
在最近关于Sparse Voxel Octrees的文献中,我已经设法通读了(最值得注意的是Laine在SVO上的工作,它们似乎都基于某种GPU实现的DDA版本(Amanatides/Woo风格).
现在,这是我的问题:有没有人有任何实现基本的,没有多余的Ray-octree交叉算法的经验?你会推荐什么?