我正在尝试编写一个多线程的Web爬虫.
我的主要入门类有以下代码:
ExecutorService exec = Executors.newFixedThreadPool(numberOfCrawlers);
while(true){
URL url = frontier.get();
if(url == null)
return;
exec.execute(new URLCrawler(this, url));
}
Run Code Online (Sandbox Code Playgroud)
URLCrawler获取指定的URL,解析HTML从中提取链接,并将看不见的链接安排回边界.
边界是未抓取的URL队列.问题是如何编写get()方法.如果队列为空,则应等待任何URLCrawlers完成,然后再次尝试.仅当队列为空且当前没有活动的URLCrawler时,它才应返回null.
我的第一个想法是使用AtomicInteger来计算当前工作URLCrawler的数量以及notifyAll()/ wait()调用的辅助对象.开始时每个爬虫都会增加当前工作URLCrawler的数量,并在退出时递减它,并通知对象它已完成.
但我读到notify()/ notifyAll()和wait()是一些不赞成做线程通信的方法.
我应该在这个工作模式中使用什么?它类似于M生产者和N个消费者,问题是如何处理生产者的匮乏.
我想使用mstest.exe在构建服务器上运行我的单元测试,但我不想在构建服务器上安装Visual Studio.我可以在没有Visual Studio的情况下安装MSTest吗?
我正在使用FormsAuthenticationTicket并放置数据并将数据传递到所有页面.如果我们不更改任何数据,它将起作用.
所以,现在如果我想更改数据并将其传递给cookie并加密,那么如何以编程方式更改数据.
请给我一个以HttpCookie编程方式更改数据的解决方案.
我想学习如何构建一个多线程应用程序,但我甚至不知道从哪里开始.
大多数人如何实现多线程?他们使用升级库吗?还有其他方法吗?(使用标准C/C++)
我理解这个概念,但完全不知道从哪里开始真正学会如何去做.谁能推荐任何东西?
http://msdn.microsoft.com/en-us/library/7t9ha0zh%28v=VS.80%29.aspx <---这些是标准的C++,还是一些仅限Microsoft的实现?
我是否认为多线程库包含在Windows API中?我在MSDN上找到了一个例子( http://msdn.microsoft.com/en-us/library/esszf9hw%28v=VS.80%29.aspx),它使用的函数(ReleaseMutex等)似乎在windows中.H.这是大多数人在进行Windows编程时使用的吗?
我正在使用JSF 2.0,我正在寻找一个在性能方面负载最小的copmponent库.如果我在RichFaces和PrimeFaces之间做出选择,哪一个更好用?两者的优点和缺点是什么?
我在动态创建的按钮上附加了onclick事件,但事件未触发.
var ind = location.href.indexOf('http://www.example.com/');
function init(){
alert('h');
}
if(ind != -1){
var elem = document.createElement("input");
elem.id ='btnGumb';
elem.value = 'Select Check box';
elem.type = 'button';
elem.style.position = 'fixed';
elem.style.left = '0px';
elem.style.top = '0px';
//this is not working
elem.setAttribute('onclick', 'init();');
//but alert is working: elem.setAttribute('onclick', 'alert("h");');
document.body.appendChild(elem);
}
Run Code Online (Sandbox Code Playgroud) Perl中是否有任何函数可用于检查引用类型:
my $ref=\@array;
Run Code Online (Sandbox Code Playgroud)
我需要array通过函数获取引用类型.
class C1
unless method_defined? :hello # Certainly, it's not correct. I am asking to find something to do this work.
def_method(:hello) do
puts 'Hi Everyone'
end
end
end
Run Code Online (Sandbox Code Playgroud)
那么,如何判断方法是否定义?
我正在使用MVVM模式编写WPF应用程序.我不需要为我的用户控件提供代码隐藏文件.优雅地删除这些文件的最佳方法是什么?
我可以创建一个用户控件类,然后我可以将这个类用于我的所有视图.(更多信息:http://sondreb.com/blog/post/No-Code-Behind-for-MVVM.aspx)
还有其他方法吗?
谢谢.
如果我们有一个方法:
public void doSomething(){
synchronized(this){
//some code processing here
}
String temp = "init"; //instead of i++
synchronized(this){
//some other code processing here
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法相当于public synchronized void doSomething()?
是否有任何理由不假设某些执行中的线程调度程序不会导致与同步整个函数有效的流程相同?那是:
i++并移动到第二个同步块,而Thread2保持阻塞状态.我需要知道的是:
public synchronized void doSomething()?java ×2
build-server ×1
c ×1
c++ ×1
code-behind ×1
concurrency ×1
defined ×1
greasemonkey ×1
javascript ×1
jsf ×1
methods ×1
mstest ×1
mvvm ×1
perl ×1
primefaces ×1
richfaces ×1
ruby ×1
wpf ×1