一个执行器对象是否意味着在一个shutdown?之后重用?我的意思是,如果我调用shutdown或shutdownNow在执行程序终止后,我应该new创建一个新的线程池,还是可以以某种方式"重置"/重用以前终止的执行程序并重用它?
更新:
如果我需要创建新的线程池,我怎么能"理解"前一个已停止?
例如以下内容:
public void startPool(){
if(threadPool != null && !threadPool.isShutdown()){
return;
}
threadPool = Executors.newCachedThreadPool();
//other stuff
}
public void stopPool(){
if(threadPool != null){
threadPool.shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
不管用.如果我调用stop然后start由于条件将不会创建新的线程池.编码的正确方法是什么?
当ThreadLocal我使用时应该总是remove()在我完成时或当我这样做时set,旧的值被替换,因此remove是多余的?
我有一个HTML表,每行都有一个复选框.
我想循环遍历表,看看是否有任何复选框被选中.
以下不起作用:
$("#save").click( function() {
$('#mytable tr').each(function (i, row) {
var $actualrow = $(row);
checkbox = $actualrow.find('input:checked');
console.log($checkbox);
});
Run Code Online (Sandbox Code Playgroud)
这将在控制台中打印以下内容:
[prevObject: jQuery.fn.jQuery.init[1], context: tr, selector: "input:checked", constructor: function, init: function…]
每行,无论是否选中任何复选框.
更新
相同的问题:
$('#mytable tr').each(function (i, row) {
var $actualrow = $(row);
$checkbox = $actualrow.find(':checkbox:checked');
console.log($checkbox);
});
Run Code Online (Sandbox Code Playgroud) 我不清楚\G运营商的使用/需求.
我读了perldoc:
您使用\ G锚点在最后一个匹配关闭的同一个字符串上开始下一个匹配.
我真的不明白这个说法.当我们使用时,\g我们通常会在最后一场比赛后移动到角色.
如示例所示:
$_ = "1122a44";
my @pairs = m/(\d\d)/g; # qw( 11 22 44 )
Run Code Online (Sandbox Code Playgroud)
然后它说:
如果您使用\ G锚点,则强制22之后的匹配以a开头:
$_ = "1122a44";
my @pairs = m/\G(\d\d)/g;
Run Code Online (Sandbox Code Playgroud)
正则表达式无法匹配,因为它找不到数字,因此下一个匹配失败,匹配运算符返回已找到的对
我也不明白这一点."如果您使用\ G锚点,则在22之后强制匹配以开始." 但没有\ G,a无论如何都会尝试匹配吗?那句话的意思是什么?
我看到在这个例子中,打印的唯一对是11和22.所以44没有尝试过.
该示例还显示使用c选项使其在while 之后为索引44 .
说实话,从所有这些我无法理解这个运算符的用处以及何时应用它.
有人可以帮助我理解这一点,或许有一个有意义的例子吗?
更新
我想我不理解这个关键句子:
如果使用\ G锚点,则强制22之后的匹配以a开头.正则表达式无法匹配,因为它找不到数字,因此下一个匹配失败,匹配运算符返回它已找到的对.
这似乎意味着当匹配失败时,正则表达式不会进行进一步的尝试,并且与答案中的示例一致
也:
匹配在字母a处失败后,perl重置pos()并在同一个字符串上的下一个匹配从头开始.
我没有得到以下内容:
在以下内容中String:
String s = "1234;x;;y;";
如果我做:
String[] s2 = s.split(";");
我s2.length变成了4岁
s2[0] = "1234";
s2[1] = "x";
s2[2] = "";
s2[3] = "y";
Run Code Online (Sandbox Code Playgroud)
但在字符串中: String s = "1234;x;y;;";
我明白了:
s2.length 成为3和
s2[0] = "1234";
s2[1] = "x";
s2[2] = "y";
Run Code Online (Sandbox Code Playgroud)
?
有什么区别,在后一种情况下我也没有得到4?
更新:
使用-1不是我期待的行为.
我的意思是最后一个分号是结尾的String所以在后一个例子中我也期待4作为数组的长度
我在Tomcat 7中有一个Web应用程序.
当我关闭Tomcat时,我看到了这些警告(但并非总是如此)
SEVERE: The web application [/MyApplication] created a ThreadLocal
with key of type
[org.apache.xml.security.algorithms.MessageDigestAlgorithm$1] (value
[org.apache.xml.security.algorithms.MessageDigestAlgorithm$1@2e2c2e2c])
and a value of type [java.util.HashMap] (value
[{http://www.w3.org/2000/09/xmldsig#sha1=MESSAGE DIGEST SHA-1}]) but
failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Apr 3, 2012 1:56:19 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks SEVERE: The web application
[/MyApplication] created a ThreadLocal with key of type
[com.sun.xml.bind.v2.ClassFactory$1] (value
[com.sun.xml.bind.v2.ClassFactory$1@25442544]) and a value …Run Code Online (Sandbox Code Playgroud) 假设我有一个带id的元素,#msg并且在某个条件下我想添加一个类以便应用样式,例如使文本显示为红色.
我可以做$('#msg').addClass(theclass)
我的问题是浏览器是如何反应的?它是重新渲染所有页面还是重新渲染该特定元素?
来自Pro Git:
如果您愿意,可以设置其他跟踪分支 - 不跟踪原点分支并且不跟踪主分支的分支.简单的例子是你刚才看到的例子,运行git checkout -b [branch] [remotename]/[branch]
$ git checkout --track origin/serverfix分支serverfix设置为跟踪远程分支refs/remotes/origin/serverfix.切换到新分支"serverfix"
$ git checkout -b sf origin/serverfix Branch sf设置为跟踪远程分支refs/remotes/origin/serverfix.切换到新的分支"sf"
我的理解是,这提供了一种创建本地分支和上游分支的方法.
但当我这样做时:
git checkout -b iss53 origin/iss53 我明白了:
fatal: Cannot update paths and switch to branch 'iss53' at the same time.
当我这样做时:
git checkout --track origin/iss53 我得到:
致命:无法同时更新路径并切换到分支'iss53'.您是否打算签出无法解决为提交的'origin/iss53'?
为什么?
似乎使用一个字符类比一个例子中的交替更快,比如:
[abc]vs (a|b|c)
我听说它被推荐,并且使用Time::HiRes我验证的简单测试(慢10倍).在捕获括号产生差异的情况下
也使用(?:a|b|c)不会改变结果.
但我不明白为什么.我认为这是因为回溯,但我在每个位置看到它的方式有3个字符比较所以我不确定回溯是如何影响交替的.这是实施交替性质的结果吗?
我有以下结构:
public void someMethod(){
//DO SOME STUFF
try{
doSomeProcessing();
}
catch (Exception e){
loadSomeHeavyData();
doSomeProcessing();
}
}
Run Code Online (Sandbox Code Playgroud)
该方法someMethod 可以由许多线程同时调用.该doSomeProcessing 会抛出异常(它在后台,可能成为过时的使用一些数据).
如果抛出异常然后loadSomeHeavyData();做一些耗时的任务,让我们说"更新"所有当前数据,我可以调用doSomeProcessing();.
问题:如何确保loadSomeHeavyData();只调用一次?如果我在条目中放入一些原子标志,loadSomeHeavyData();那么我不能确定何时应该清除它.
我怎么解决这个问题?只是注意:我无法修改,doSomeProcessing();因为它是一个外部API,我使用装饰模式来使用它.
java ×5
regex ×3
concurrency ×2
javascript ×2
jquery ×2
performance ×2
perl ×2
browser ×1
git ×1
git-branch ×1
git-remote ×1
html ×1
java-ee ×1
jaxb ×1
oop ×1
split ×1
string ×1
thread-local ×1
tomcat ×1