小编Bhu*_*han的帖子

使用初始化块有什么好处?

我知道初始化块在首次加载类(静态初始化块)或创建实例(实例初始化块)时运行.

class SmallInit {
   static int x;
   int y;
   static { x = 7 ; } // static init block
   { y = 8; } // instance init block
}
Run Code Online (Sandbox Code Playgroud)

但是,当我们这样做的时候,这有什么特别的好处:

class SmallInit {
   static int x = 7;
   int y = 8;
}
Run Code Online (Sandbox Code Playgroud)

java initialization

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

如何用awk处理3个文件?

好的,所以花了两天后,我无法解决它,现在我几乎没时间了.这可能是一个非常愚蠢的问题,所以请耐心等待.我的awk脚本做了这样的事情:

BEGIN{ n=50; i=n; }
FNR==NR {
            # Read file-1, which has just 1 column
            ids[$1]=int(i++/n);
            next
        }
        {
            # Read file-2 which has 4 columns
            # Do something
            next
        }
 END {...}
Run Code Online (Sandbox Code Playgroud)

它工作正常.但现在我想将它扩展为3个文件.比方说,我不需要硬编码"n"的值,而是需要读取属性文件并从中设置值"n".我发现了这个问题,尝试过这样的事情:

BEGIN{ n=0; i=0; }
FNR==NR {
            # Block A
            # Try to read file-0
            next
        }
        {
            # Block B
            # Read file-1, which has just 1 column
            next
        }
        {
            # Block C
            # Read file-2 which has 4 columns
            # Do something …
Run Code Online (Sandbox Code Playgroud)

awk gawk nawk

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

如何使用命令行从指定了类路径的jar运行类

我正在尝试从JAR运行一个类.这个类不是这个jar中唯一的主类.此外,它需要许多其他jar文件,我保存在与此Jar相同的目录中.我尝试过的命令如下:

(mydir是我所有的jar所在的目录,使用Windows平台)

mysql-connector-java-5.1.13-bin.jar需要myProjImport.jar运行,com.mycomp.myProj.importer.csv.TestImporter是我想要运行的类. "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties"并且"C:\temp\apollo_claims_test.txt"是类所需的命令行参数TestImporter 这是我尝试过的:

mydir>java -cp C:\temp\test_myProj\mysql-connector-java-5.1.13-bin.jar;. myProjImport.jar com.mycomp.myProj.importer.csv.TestImporter "C:\Documents and Settings\user\workspace\myProjImport\src\conf\datasource.properties" "C:\temp\apollo_claims_test.txt"
Run Code Online (Sandbox Code Playgroud)

这是错误:

Exception in thread "main" java.lang.NoClassDefFoundError: myProjImport/jar
Caused by: java.lang.ClassNotFoundException: myProjImport.jar
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: myProjImport.jar.  Program will exit.
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我应该运行什么确切的命令?

java jar classpath noclassdeffounderror executable-jar

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

如何查找某个char小于某个计数的行?

我正在尝试写一个shell/ perl命令,它会给我一个行号,它的字段数小于一定的数.例如,我有一个逗号分隔的文本文件.我试图找到那些少于15个字段的行.所以我想问题本质上归结为返回少于14个逗号的行.

任何人都可以帮助我吗?

谢谢!

bash shell perl

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

以下类别的线程安全是否会被打破; 我确信它不可能但只是想要倍加肯定,因为它不容易测试

public class ThreadSafe implements ITaskCompletionListener {

private final Set<String> taskIds = new HashSet<String>();
private final Set<String> successfulIds = new HashSet<String>();
private final Set<String> cancelledIds = new HashSet<String>();
private final Set<String> errorIds = new HashSet<String>();

public ThreadSafe() {

}

// invoked concurrently
@Override
public void onCancel(String pTaskId) {
    remove(pTaskId);
    cancelledIds.add(pTaskId);
}

// invoked concurrently
@Override
public void onError(String pTaskId) {
    remove(pTaskId);
    errorIds.add(pTaskId);
}

// invoked concurrently
@Override
public void onSuccess(String pTaskId) {
    remove(pTaskId);
    successfulIds.add(pTaskId);
}

private void remove(String pTaskId) {
    taskIds.remove(pTaskId); …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading hashset

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

如何获取ResultSet中的第一个元素

如何在以下代码中获取 ResultSet 中的第一个元素:

    public List getUserTest(String username, String password) {

    List userList = new ArrayList();


    Connection connection = null;
    String rstring = null;
    Statement stmt = null;///*******
    ResultSet resultSet = null;
    try {

        connection = dataSource.getConnection();
        stmt = connection.createStatement();///*******
        resultSet = stmt.executeQuery("SELECT * FROM users WHERE (username)='" + username + "'"
                + "AND (password)='" + password + "'");///*******

        while (resultSet.next()) {
            UsersTest user = new UsersTest();
            user.setId(resultSet.getString("id"));
            user.setUsername(resultSet.getString("username"));
            user.setPassword(resultSet.getString("password"));
            userList.add(user);
        }


    } catch (SQLException e) {
        System.err.println(e);
    } finally { …
Run Code Online (Sandbox Code Playgroud)

java resultset

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

在HashTable中排序问题

我的问题是我必须解析这些值

Cijfercode 
Crypto 
Doorlopr 
Kruizword 
Woordzoker
Zweeds
Run Code Online (Sandbox Code Playgroud)

来自xml文件.但是在xml中,它们按照与上面相同的字母顺序排列.但是当使用哈希表来检索值时(这些值不是此哈希表的键)它变为顺序

Cijfercode
Doorloper
Woordzoker
Zweeds
Kruizword
Crypto 
Run Code Online (Sandbox Code Playgroud)

为什么会发生?

java sorting hashtable

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

具有相同名称的继承方法,它是如何工作的?

只是为了好奇心我试过这个:

public interface test1 {
    public Object method1(String str);
}

public interface test2 {
    public Object method1(String str);
}

public class Test implements test1, test2 {    
    public static void main(String... args) {

    }

    public Object method1(String str) {
        return new Object();
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待public class Test implements test1, test2 {从Eclipse 上出现某种错误,但没有.

  1. 为什么没有编译时错误,因为方法名称有冲突?
  2. 继承了多少种方法class Test
  3. 如果上述问题的答案是2,那么我们究竟采用了哪种方法?
  4. 在运行时,为什么选择正确实现的方法?而不是另一个?
  5. 最后,有没有办法实现两者?(我几乎可以肯定答案是否定的)

我知道从设计的角度来看,这可能不会发生在现实世界的情况中,但正如我在开始时所提到的那样,它只是出现在我脑海中并且我尝试了它.

非常感谢任何澄清/参考.

java interface multiple-inheritance

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

如何用一些字符串替换CSV中的特定列?

抱歉,这是一个非常基本的问题 如何用一些字符串替换制表符分隔文件中的特定列,比如说"xyz"?

例如

输入:

abc\t  def\t   \t   xyz
pqr\t  ert\t   \t   yut 
Run Code Online (Sandbox Code Playgroud)

输出:

abc\t  def\t   new_str\t   xyz
pqr\t  ert\t   new_str\t   yut
Run Code Online (Sandbox Code Playgroud)

简而言之,我文件中的第3列是空的,我想用字符串替换它.

我绑了这样的东西:

awk '{$3="new_str"}1' test1.csv > test1_op.csv
Run Code Online (Sandbox Code Playgroud)

但看起来它没有维护标签.另请注意,该文件有400列,因此编写一个类似下面的awk命令:

awk -F, '{OFS=",";print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,...,$400}' in.csv > outfile.csv
Run Code Online (Sandbox Code Playgroud)

我想避免.

谢谢.

bash shell perl awk sed

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

为什么String []比char []占用更多的空间?

目的:

我正在编写一个Java应用程序来读取大型文本文件,其中数据以字符列的格式表示.例如:

A B R S Y E ...
R E W I W I ...
E Q B U O Y ...
W Q V G O R ...
Run Code Online (Sandbox Code Playgroud)

即由空格分隔的单个字母.每个这样的行都有数百万个这样的字符.每个文件都有几行.

建立:

我的工作是按列操作文件.所以我逐行读取文件,拆分' '并创建数组.从这样的数组中,我创建了一个二维数组.一切都很好,因为我在一个小文件上测试它,有10行.但是当我读取500行的文件时,它开始失败了.我的机器JVM有很多内存,所以我没想到这一点.因此,我进行了一些分析,发现阅读这些内容String[]比预期的内存要多得多.因此,我改变了String[]char[].内存使用量急剧下降,一切都很好.

题:

我的问题是为什么String[]需要比这更多的空间char[]?是因为它就像一个对象数组?(因为String也是一个Object).如果有人可以解释低级细节,那将是非常好的.

编辑1:

这是我以前做的事情:

String[] parts = line.split(" ");                // Creating a String[]
Run Code Online (Sandbox Code Playgroud)

这是我改为:

String rowNoSpaces = line.replaceAll(" ", "");   // Removing all the spaces
char[] columns= rowNoSpaces.toCharArray(); …
Run Code Online (Sandbox Code Playgroud)

java memory arrays string char

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