小编pra*_*nth的帖子

在使用logger.debug()之前是否需要Log4j isDebugEnabled()?

当我浏览一些代码时,我注意到使用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())

java log4j

26
推荐指数
3
解决办法
2万
查看次数

用于匹配同一列中的多个值的SQL查询

我在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.这该怎么做??

mysql

15
推荐指数
2
解决办法
7万
查看次数

System.arrayCopy()复制对象或对象的引用?

我正在上一堂课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)

java arrays arraycopy

9
推荐指数
1
解决办法
7515
查看次数

ArrayList中的toArray(T [])方法

当我通过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,对吧?或者我在这里遗漏了什么?

java arraylist

6
推荐指数
1
解决办法
210
查看次数

在ThreadPoolExecutor中设置allowCoreThreadTimeOut()是一个好习惯吗?

在我们的应用程序中,我们有很多ThreadPoolExecutors.当应用程序空闲时,ThreadPoolExecutors也是空闲的,但应用程序中的空闲线程数非常多.

在线程转储中,我发现大多数线程属于ThreadPoolExecutor等待任务的s.是否有任何副作用使这些工作线程保持活力?我应该使用setAllowCoreThreadTimeOut(),ThreadPoolExecutor以便工作线程在闲置一段时间后死亡吗?

java multithreading

5
推荐指数
1
解决办法
823
查看次数

如何使用正则表达式基于模式拆分字符串

我无法根据正则表达式拆分字符串.

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)

java regex

3
推荐指数
1
解决办法
2万
查看次数

线程被禁用以进行线程调度.那是什么意思?

当我通过Javadoc for CountDownLatch时,我在await方法的文档中遇到了一行.

如果当前计数大于零,则当前线程因线程调度而被禁用并处于休眠状态

这是什么意思current thread becomes disabled for thread scheduling purposes

java multithreading

3
推荐指数
1
解决办法
172
查看次数

替换类路径中的 jar 后出现 ClassNotFoundException

我有一个 java 进程在类路径中运行两个 jar 文件,即
- A.jar
- B.jar
在进程运行时,我用另一个 B.jar 替换了 B.jar,我用一些文件更新了它。现在在我的过程中,我看到 B.jar 中的类有一些 ClassNotFoundException 。我不明白这里发生了什么。我认为 jars 会在 java 进程启动时加载。如果是这样,为什么会发生这种情况?有人可以帮我解决这个问题吗??我知道如果我重新开始这个过程,一切都会好起来的。但我很想知道这背后的原因。

java jar

2
推荐指数
1
解决办法
995
查看次数

减去两个十进制数字,给出奇怪的输出

虽然我很开心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.10fOutput为0.9

为什么我不能像0.9第一个那样获得输出?我不能用这个做任何头或尾?有人可以清楚说明这一点吗?

java floating-point

-3
推荐指数
2
解决办法
1281
查看次数