我知道初始化块在首次加载类(静态初始化块)或创建实例(实例初始化块)时运行.
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) 好的,所以花了两天后,我无法解决它,现在我几乎没时间了.这可能是一个非常愚蠢的问题,所以请耐心等待.我的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) 我正在尝试从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)
有人可以告诉我应该运行什么确切的命令?
我正在尝试写一个shell/ perl命令,它会给我一个行号,它的字段数小于一定的数.例如,我有一个逗号分隔的文本文件.我试图找到那些少于15个字段的行.所以我想问题本质上归结为返回少于14个逗号的行.
任何人都可以帮助我吗?
谢谢!
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) 如何在以下代码中获取 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) 我的问题是我必须解析这些值
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)
为什么会发生?
只是为了好奇心我试过这个:
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 上出现某种错误,但没有.
class Test?我知道从设计的角度来看,这可能不会发生在现实世界的情况中,但正如我在开始时所提到的那样,它只是出现在我脑海中并且我尝试了它.
非常感谢任何澄清/参考.
抱歉,这是一个非常基本的问题 如何用一些字符串替换制表符分隔文件中的特定列,比如说"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)
我想避免.
谢谢.
我正在编写一个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).如果有人可以解释低级细节,那将是非常好的.
这是我以前做的事情:
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)