节点检测源码
‘壹’ 给定单链表,检测是否有环.如果有环,则求出进入环的第一个节点
判断单向链表是否有环,可以采用快指针与慢指针的方式来解决。即定义一个快指针fast和一个慢指针slow,使得fast每次跳跃两
个节点,slow每次跳跃一个节点。如果链表没有环的话,则slow与fast永远不会相遇(这里链表至少有两个节点);如果有环,则fast与slow
将会在环中相遇。判断出链表有环以后,则需要算出进入环的第一个节点。在fast与slow第一次相遇后,设置一个节点pNode从链表的头部开始遍历,
每次只遍历一个节点。这样,当fast与slow再次相遇时,pNode所处的位置便是环的首部。以下该问题的实现源码(C语言描述):
LNode* GetLoopNode(LNode* head)
{
//前置条件的判断
if (!head)
{
return NULL;
}
//定义一个快指针和一个慢指针
LNode* fast = head;
LNode* slow = head;
while (fast && (fast->next))
{
fast = fast->next->next;
slow = slow->next;
if (fast == slow)
{
//如果有环,则返回环的第一个节点
slow = head;
while (1)
{
fast = fast->next;
slow = slow->next;
if (fast == slow)
{
break;
}
}
return slow;
}
}
return NULL;
}
‘贰’ Node.contains检测元素节点是不是另一个元素的子节点
网页开发中检测元素节点是不是另一个元素的子节点是一件很常用的事情,这样方便我们去判断方法事件,然而很多人不知道Element.classList API,例如classname管理需要特定的javascript工具包才可以完成,然而像检测元素节点是不是另一个元素的子节点这样的方法,认为只能通过工具或者是循环检测contains才能完成,其实下面的代码也可以:
代码如下
复制代码
function(parentNode, childNode) {
if('contains' in parentNode) {
return parentNode.contains(childNode);
}
else {
return parentNode.compareDocumentPosition(childNode) % 16;
}
}
你会注意到我们的检查contains在使用它之前,你可能会想到,用鲜为人知的compareDocumentPosition在这种情况下,contains不支持(Firefox < 9)。这种方法将是有益的 当创建一个拖放控件和确定的动作之间的列表。
补充:jquery如何判断当前元素是不是某节点的子元素
代码如下
复制代码
$(node).click(function(){
if($(this).parents('.aa').length > 0){
//是aa类下的子节点
}
});
‘叁’ 可以用什么命令(或者软件之类的工具)检测网络节点的位置并且可以根据节点的ip判断整个网络的拓扑结构
netstat 和 print route
‘肆’ 节点自动检测失败什么意思
节点自动检测失败指一台电脑或其他设备与一个有独立地址和具有传送或接收数据功能的网络相连。
节点可以是工作站、客户、网络用户或个人计算机,还可以是服务器、打印机和其他网络连接的设备。每一个工作站﹑服务器、终端设备、网络设备,即拥有自己唯一网络地址的设备都是网络节点。
整个网络就是由这许许多多的网络节点组成的,把许多的网络节点用通信线路连接起来,形成一定的几何关系,这就是计算机网络拓扑。
命名实体识别:
命名实体被定义为文本中包含人名、地名以及机构名的实体,例如在句子“[国际奥委会]主席[巴赫]访问[中国]”中,“国际奥委会”是机构名,“巴赫”是人名,“中国”是地名,通过这些命名实体就能获取到句子的主要内容。
随着搜索引擎、机器翻译、数据挖掘等技术的不断发展,对于命名实体也有了更加宽泛的定义。而在医学临床以及生物相关领域,许多专有名词也陆续被学者们定义为命名实体,例如蛋白质名、基因名、疾病名等。在当今的自然语言处理研究中,普遍将命名实体分为名词、数字和时间这三种类型。
‘伍’ 如何检测节点网络中是否存在闭环之java实现
java实现检测闭环的方法:
*
* 功能:判断网络中是否存在闭环
* 作者:pieryon
* @param nodeCollections
* @return
* @throws Exception
*/
public boolean isContainLoop(Map<String,Map<String,Object>> nodeCollections) throws Exception{
//用map的hash码计算,速度更快
Map<String,String> visitedList = new HashMap<String, String>();
/**
* 初始化"起点
*/
String startNode = getOrigin(nodeCollections);
boolean containLoop = false ;
/**
* 初始化"视野"
*/
Map<String,String> nodeName = new HashMap<String, String>() ;
nodeName.put("nextNode", startNode);
nodeName.put("curNode", startNode);
nodeName.put("beforeNode", startNode);
int count = 0 ;
/**
* 如果当前不含有闭环,并且没有遍历完起点节点的所有分支则进入循环
*/
while(!containLoop
&& !(nodeName.get("beforeNode").equals(nodeName.get("curNode"))
&& nodeName.get("nextNode") == null )){
nodeName = traverse(nodeCollections, nodeName, visitedList);
if(count > 1){
containLoop = containSameNode(visitedList,nodeName.get("nextNode"));
}
count ++ ;
}
return containLoop;
}
‘陆’ php 检测源代码是否被改动过和是否项目中有增加或删除的文件的实现思路
如果想自己做, hashtable是一定的
建一个hashtable, 储存当前内容, 同时该hashtable的id也同样可以用于作为文件功能等记录的id之用, 然后无论是windows还是linux都可以cron的,去做一个php文件去匹配吧, 文件修改时间无所谓的, md5(file)更有意义
如果单纯使用php, 遍历目录是必须的, 无论哪个os都提供文件动作的监控能力,但是这不在php的工作范围内,所以无法实现所谓的监控,你可以看看同步类软件,无论哪个操作系统都是直接去os的基层拿现成的东西来用,不用特地耗费资源去自己不断遍历目录监控的,
svn/cvs是主动提交改动的, 而所谓监控,那就是被动形式了,只有在改动时才有动作的叫监控,
你要php实现源码监控,一句话,不可能,只能做递归/迭代, 用hashtable处理并不断操作hashdb
ps:文件功能你们都不写进注释吗,注释本来就有这种功能, 比如phpdoc-_
‘柒’ java swing左边树图,当点击任意节点时,右边显示显示数据, 求一个简单的源码例子
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Dimension;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTree;
importjavax.swing.event.TreeSelectionEvent;
importjavax.swing.event.TreeSelectionListener;
importjavax.swing.tree.DefaultMutableTreeNode;
{
privateJPanelp;
publicTestSwingTree(Stringtitle){
super(title);
}
publicvoidinit(){
Containerc=this.getContentPane();
DefaultMutableTreeNoderoot=newDefaultMutableTreeNode("root");
DefaultMutableTreeNodechild1=newDefaultMutableTreeNode("child1");
DefaultMutableTreeNodechild11=newDefaultMutableTreeNode("child11");
DefaultMutableTreeNodechild12=newDefaultMutableTreeNode("child12");
DefaultMutableTreeNodechild2=newDefaultMutableTreeNode("child2");
DefaultMutableTreeNodechild3=newDefaultMutableTreeNode("child3");
DefaultMutableTreeNodechild31=newDefaultMutableTreeNode("child31");
root.add(child1);
root.add(child2);
root.add(child3);
child1.add(child11);
child1.add(child12);
child3.add(child31);
JTreetree=newJTree(root);
tree.setPreferredSize(newDimension(120,400));
tree.addTreeSelectionListener(newTreeSelectionListener(){
publicvoidvalueChanged(TreeSelectionEvente){
p.removeAll();
JLabell=newJLabel(e.getPath().toString());
l.setBounds(5,190,170,20);
p.add(l);
p.repaint();
}
});
c.add(tree,BorderLayout.WEST);
p=newJPanel();
p.setLayout(null);
p.setPreferredSize(newDimension(180,400));
c.add(p,BorderLayout.CENTER);
this.setLocation(400,300);
this.setSize(300,400);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
}
publicstaticvoidmain(String[]args){
newTestSwingTree("TestSwingJtree").init();
}
}
‘捌’ 如何检测所用节点是否可用
定义节点包含使用节点,要使用节点必须提前定义,但定义的可以不使用
定义节点应该包含了使用节点。定义了不一定使用,但使用是一定要定义的