当我浏览一些代码时,我注意到使用logger如下,
if(logger.isDebugEnabled())
logger.debug("Something..");
Run Code Online (Sandbox Code Playgroud)
但在某些代码中,我观察到了这样的情况.
logger.debug("Something..");
Run Code Online (Sandbox Code Playgroud)
当我查看log4j的源代码时,在debug()
Logger本身的方法中 if(logger.isDebugEnabled())
进行了检查.那为什么我们需要这种不必要的开销if(logger.isDebugEnabled())
?
我在MySQL中有一个表如下.
Id Designation Years Employee
1 Soft.Egr 2000-2005 A
2 Soft.Egr 2000-2005 B
3 Soft.Egr 2000-2005 C
4 Sr.Soft.Egr 2005-2010 A
5 Sr.Soft.Egr 2005-2010 B
6 Pro.Mgr 2010-2012 A
Run Code Online (Sandbox Code Playgroud)
我需要让那些担任Soft.Egr和Sr.Soft.Egr以及Pro.Mgr的员工.在查询中无法使用IN或多个AND.这该怎么做??
我正在上一堂课NameAndValue
.我复制了一个对象数组,当我更改复制数组中的NameAndValue
对象System.arrayCopy()
时NameAndValue
,它会反映在原始数组中.
public final class NameAndValue
{
public String name;
public String value;
public NameAndValue()
{
}
public NameAndValue(String name,String value)
{
this.name = name;
this.value = value;
}
}
public class Main
{
public static void main(String[] args)
{
NameAndValue[] nv = new NameAndValue[4];
nv[0] = new NameAndValue("A", "1");
nv[1] = new NameAndValue("B", "2");
nv[2] = new NameAndValue("C", "3");
nv[3] = new NameAndValue("D", "4");
NameAndValue[] nv2 = new NameAndValue[4];
System.arraycopy(nv, 0, nv2, …
Run Code Online (Sandbox Code Playgroud) 当我通过ArrayList实现时,我在toArray(T [])方法中发现了一段奇怪的代码.
public <T> T[] toArray(T[] a) {
if (a.length < size)
// Make a new array of a's runtime type, but my contents:
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
Run Code Online (Sandbox Code Playgroud)
这部分是,
if (a.length > size)
a[size] = null;
Run Code Online (Sandbox Code Playgroud)
为什么只有数组中此索引处的元素设置为null?一旦数组填充了列表的内容,其余索引处的元素应该设置为null,对吧?或者我在这里遗漏了什么?
在我们的应用程序中,我们有很多ThreadPoolExecutor
s.当应用程序空闲时,ThreadPoolExecutor
s也是空闲的,但应用程序中的空闲线程数非常多.
在线程转储中,我发现大多数线程属于ThreadPoolExecutor
等待任务的s.是否有任何副作用使这些工作线程保持活力?我应该使用setAllowCoreThreadTimeOut()
,ThreadPoolExecutor
以便工作线程在闲置一段时间后死亡吗?
我无法根据正则表达式拆分字符串.
String str = "1=(1-2,3-4),2=2,3=3,4=4";
Pattern commaPattern = Pattern.compile("\\([0-9-]+,[0-9-]+\\)|(,)") ;
String[] arr = commaPattern.split(str);
for (String s : arr)
{
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
预期产出,
1=(1-2,3-4)
2=2
3=3
4=4
Run Code Online (Sandbox Code Playgroud)
实际产量,
1=
2=2
3=3
4=4
Run Code Online (Sandbox Code Playgroud) 当我通过Javadoc for CountDownLatch时,我在await方法的文档中遇到了一行.
如果当前计数大于零,则当前线程因线程调度而被禁用并处于休眠状态
这是什么意思current thread becomes disabled for thread scheduling purposes
?
我有一个 java 进程在类路径中运行两个 jar 文件,即
- A.jar
- B.jar
在进程运行时,我用另一个 B.jar 替换了 B.jar,我用一些文件更新了它。现在在我的过程中,我看到 B.jar 中的类有一些 ClassNotFoundException 。我不明白这里发生了什么。我认为 jars 会在 java 进程启动时加载。如果是这样,为什么会发生这种情况?有人可以帮我解决这个问题吗??我知道如果我重新开始这个过程,一切都会好起来的。但我很想知道这背后的原因。
虽然我很开心Java Puzzlers的代码(我没有这本书),但我遇到了这段代码
public static void main(String args[]) {
System.out.println(2.00 - 1.10);
}
Run Code Online (Sandbox Code Playgroud)
输出是
0.8999999999999999
Run Code Online (Sandbox Code Playgroud)
当我尝试将代码更改为
2.00d - 1.10d
我仍然得到相同的输出 0.8999999999999999
对于,2.00d - 1.10f
输出为0.8999999761581421
For,2.00f - 1.10d
输出为0.8999999999999999
For,2.00f - 1.10f
Output为0.9
为什么我不能像0.9
第一个那样获得输出?我不能用这个做任何头或尾?有人可以清楚说明这一点吗?