在Java中Object,它Thread是独立的类.Java Object源代码没有提到有关monitor /的任何内容,Thread尽管我们有wait()/ notify()methods.
那么问题是该Object监视器如何知道获取它的线程的细节?这些信息存储在哪里?对象和线程如何链接?
我是Java编程的初学者,我只是编写一个简单的程序来返回二维数组的第i列中的元素总和.
但是我的一个测试用例给了我一个ArrayIndexOutOfBoundsException错误,如下所示:
发生问题的测试用例:
int[][] numbers3 = {{3}, {2, 4, 6}, {3, 6}, {3, 6, 9, 12}};
System.out.println(columnSum(3, numbers3));
Run Code Online (Sandbox Code Playgroud)
这是我从此测试用例中获得的错误消息:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Array.columnSum(Array.java:12)
at Array.start(Array.java:6)
at ArrayApp.main(ArrayApp.java:7)
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题...所以有人可以请指出我的错误吗?谢谢 !
这是我的代码:
public class Array {
public void start() {
int[][] numbers3 = {{3}, {2, 4, 6}, {3, 6}, {3, 6, 9, 12}};
System.out.println(columnSum(3, numbers3));
}
private int columnSum(int i, int[][] nums) {
int sum = 0;
for(int row = 0; row < nums.length; row++){
sum = sum …Run Code Online (Sandbox Code Playgroud) 我已经开始学习java了,我对下面的条件表达式很不满:
((1<2)?5:(3<4))
Run Code Online (Sandbox Code Playgroud)
在我发现这个例子的书中,它说这是一个语法错误,因为它无法将数值转换为布尔值.相同页面之后,有一个不同练习的测试,包括这一个.在eclipse中编写和编译后,它给出了输出5.为什么?我已经阅读了关于这个运算符的一些内容,它清楚地表明这两个表达式必须是布尔值或算术,所以这是eclipse的一个问题?
我有一个问题,为什么在main方法调用printPersonPrinting()方法时隐式调用toString()方法.
public class PersonPrinting {
private String name;
private int age;
public PersonPrinting(String aName, int anAge) {
name = aName;
age = anAge;
}
public String toString() {
return name + " " + age;
}
public void printPersonPrinting() {
System.out.println(this);
}
public static void main (String [] args) {
PersonPrinting p = new PersonPrinting("Dan",10);
//printPersonPrinting is called, but toString isn't.
//But the output is formatted by toString method.
p.printPersonPrinting();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出是 - > Dan 10
谢谢!!
我在删除表中的所有记录时遇到问题.
我可以使用Truncate表.但truncate会创建数据的快照,这可能是我方案中存储空间的浪费.
如果任何节点关闭,截断也会失败.
所以我想知道是否有任何方法可以删除表中的所有记录而不创建在节点关闭时有效的快照.
cassandra datastax-java-driver datastax cassandra-2.0 cassandra-2.1
我想打开一个 URL 并向其提交以下参数,但似乎只有在我的代码中添加 BufferedReader 时它才有效。这是为什么?
Send.php 是一个脚本,它将向我的数据库添加用户名和时间。
以下代码不起作用(它不会向我的数据库提交任何数据):
final String base = "http://awebsite.com//send.php?";
final String params = String.format("username=%s&time=%s", username, time);
final URL url = new URL(base + params);
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Agent");
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
Run Code Online (Sandbox Code Playgroud)
但这段代码确实有效:
final String base = "http://awebsite.com//send.php?";
final String params = String.format("username=%s&time=%s", username, time);
final URL url = new URL(base + params);
final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("User-Agent", "Agent");
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
final BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); …Run Code Online (Sandbox Code Playgroud) 如果我创建一个仅包含方法而没有变量的类,并且每个方法都具有自己的局部变量,那么该类是否是线程安全的?例如
public class Client {
public String xyz(final String inputXML) {
DataInputStream dis = null;
DataOutputStream dout = null;
Socket clientSocket = null;
//do some processing
}
public String abc(final String inputXML) {
DataInputStream dis = null;
DataOutputStream dout = null;
Socket clientSocket = null;
//do some processing
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我启动此Client的多个线程,那么该类将是线程安全的吗?
推荐的Cassandra 2.0版Java 是Java 7.但Cassandra 3(特别是3.5版)推荐或要求使用哪个版本?
一些信息表明需要Java 7或Java 8; 也就是说,Java 7仍然可以:
Cassandra需要最稳定的Java 7或8版本
正如了解JVM 内存分配和 Java 内存不足:堆空间 中所述,分配堆空间时,JVM 不区分物理内存和虚拟内存。当java对象的内存分配和计算开始发生时,JVM开始区分虚拟内存和物理内存。如果有足够的交换空间(在 Linux 机器上),为什么会发生内存不足错误?JVM 不应该简单地使用交换空间来完成计算吗?尽管速度很慢。
例如:RAM:14GB,交换空间:10GB
如果一个java应用程序需要20GB的空间,它不能利用交换空间(虚拟内存)来完成应用程序的运行吗?
对于 Java 应用程序来说,堆空间和虚拟内存之间的相互作用是什么?
所以我对SonarLint有一个问题,我不知道如何处理.
假设我有一个方法课
public class Class(RemoteContext context)
RemoteContext context = context;
public void String method(String data) {
if(data == null)
context.raiseException("data can't be null");
//do stuff with data like data.get();
}
Run Code Online (Sandbox Code Playgroud)
当我用sonarLint(3.2.)分析这个类时,我得到一个Null指针不应该被解引用问题.
所以我的问题是.如何解决这个问题?
context.RaiseException将停止方法执行,所以我认为这是一个误报.
该应用程序有很多案例(类/方法)有这个问题.所以我认为注释是一种矫枉过正(丑陋的代码)我也可以在每次raiseException()调用后键入return ,但我的印象不是"程序员方式".
我猜写自己的规则是最好的.
我正在查看这些主题并让我谷歌搜索,但没有找到任何有用的这种情况,当我有点必须做声纳实际做的"相反".不是提出问题,而是对方法"开绿灯"?
希望我对这个问题很清楚.