假设我们有一个班级:
class Class1
{
int i = 1;
}
Run Code Online (Sandbox Code Playgroud)
我们有一个变量:
Class1 ob1 = new Class1();
Run Code Online (Sandbox Code Playgroud)
ob1存储了它引用的对象的信息Class1? Class1存储堆的哪一部分是否存储了Class1类型的信息? 如果您可以推荐这些信息的来源,我将非常感谢提供它,我在参考书中找不到它.
谁能解释为什么第一个示例有效而第二个示例不起作用?
test {
jvmArgs '-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000'
}
test {
jvmArgs.add('-Xdebug')
jvmArgs.add('-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000')
}
Run Code Online (Sandbox Code Playgroud) 当我试图编写一个简单的一个类控制台应用程序时 - 没有问题.我可以在调试时更改方法中的代码.
问题出在我在Jetty上的网络应用程序.它不起作用,也不仅仅是在通常的调试模式下(在eclipse中按下调试按钮),也不在此处描述的远程调试模式中.我可以调试,但不能改变,即使通常不是静态方法,例如添加sysout,我的意思是我可以更改它但保存后它没有更新,它的工作原理与以前相同.
此外,我与我的同事交谈,它适用于他们,但他们使用的是Spring Tool Suite版本的eclipse,我尝试并得出结论,它在最新版本的STS中可以在通常的调试模式下开箱即用,并且它无法在最新版本的Eclipse.
可能是什么原因?
我有这个简单的代码.如果我在MyClass中将int更改为byte,那么由于某种原因它会慢1.5.有什么想法,为什么?
public class Test {
public static void main(String[] args) {
double start = System.currentTimeMillis();
MyClass[] arr = new MyClass[10_000_000];
for (int i = 0; i < arr.length; i++) {
arr[i] = new MyClass();
}
double end = System.currentTimeMillis();
System.out.println(end-start);
}
}
class MyClass {
final public int pole = 50;
int eshePole;
}
Run Code Online (Sandbox Code Playgroud) 我试图了解Cassandra的读取路径,但无法理解为什么我们需要压缩偏移量映射。
https://docs.datastax.com/zh-CN/cassandra/3.0/cassandra/dml/dmlAboutReads.html
分区索引位于磁盘上,并存储所有映射到其偏移量的分区键的索引。
压缩偏移量映射将指针存储到磁盘上可以找到所需分区数据的确切位置。
为什么我们都需要它们?为什么分区索引不能将指针存储到磁盘上的确切位置?
很抱歉,我有一个愚蠢的标题,但这就是stackoverflow要求我的,我不能使用“如果有分区索引,为什么我们需要压缩偏移量映射?”
我以一种方式分区数据,我只想在另一种方式中分区.所以它基本上会是这样的:
sqlContext.read().parquet("...").write().partitionBy("...").parquet("...")
Run Code Online (Sandbox Code Playgroud)
我想知道这是否会触发随机播放或所有数据都将在本地重新分区,因为在此上下文中,分区仅表示HDFS中的目录,来自同一分区的数据不必在同一节点上写入HDFS中的相同目录.
我不明白.例如,我们在代码中有一个OutputStream类型的变量,当我们停止使用它时,我们应该在它上面调用close(),以及为什么它没有以这种方式实现:GC在它清理时调用close()本身这个变量?
更新: 确定到目前为止我已经得出结论:释放非托管资源不仅仅是释放内存更重要的是我们现在没有内部行为,它可能存在对此资源数量的限制(连接数/处理程序)这就是为什么我们需要尽快释放它们.我对吗?因为如果它完全是关于内存的,那么我不知道为什么GC不能像管理资源那样完成工作.
我有个try-catch街区; 在里面try,我N从控制台读取变量并初始化一个Array[N].我需要Array稍后使用.如果我在try块外使用它,我会收到错误
java variable may not have been initialized.
我明白了,但是我应该怎么做,把整个程序写在try块内,真的吗?这种程序的可读性更差,我使用try的代码exceptions是不可能的.有解决方法吗?我尝试了一个boolean变量,它检查是否存在异常并在稍后的if语句中使用它- 没有结果.
java ×5
apache-spark ×1
cassandra ×1
eclipse ×1
gradle ×1
hadoop ×1
hdfs ×1
heap ×1
hotswap ×1
memory ×1
partitioning ×1
performance ×1
stack ×1
try-catch ×1
unmanaged ×1