小编Gee*_*eek的帖子

使用OQL进行字符串搜索

我正在使用VisualVM来分析核心转储.我怀疑一些XML对象会导致泄漏,但是有太多的String对象要逐一进行.

我可以使用OQL搜索以'GH'开头的字符串吗?

谢谢你的帮助.

visualvm oql jvisualvm

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

为什么Final字段在Java中不能挥发?

我想了解为什么声明为final的Reference不能声明为Volatile.在SO上有一个类似的问题[ 为什么Object成员变量在Java中不是最终的和易变的?

[1]:为什么Object成员变量在Java中不能是final和volatile?但我不确定在答案中是否理解了FINAL.

现在,最终变量的状态在初始化后肯定可以更改.只能将引用初始化为另一个对象.

例如,考虑以下成员变量

final StringBuilder sb = new StringBuilder("CAT");
Run Code Online (Sandbox Code Playgroud)

现在另一个线程改变sb为:

sb.append("S");
Run Code Online (Sandbox Code Playgroud)

如果此变量是非易失性的,那么根据Java内存模型,此更改是否可用于不同的线程?

编辑:我把StringBuffer改为StringBuilder让一些人明白我的观点.

java volatile

15
推荐指数
4
解决办法
3434
查看次数

wait()如何在Java中获取Lock

这是一个倡导的范例,应该在synchronized块内的while循环内调用wait().

我的问题是waiting()线程如何获得锁定?

// Thread 1
    synchronized (mon) {
     while (!condition) 
          mon.wait();

    // Do something
    }

//Thread 2
    synchronized (mon) {//set condition appropriately
            mon.notify();
    }
Run Code Online (Sandbox Code Playgroud)

考虑线程1首先运行并开始等待条件.它释放锁并且线程2获得锁设置条件并通知线程1.现在线程1获取锁,检查条件并开始执行"做某事".

我的问题是当线程1被通知它从while条件开始执行时,具有Synchronized(mon)的代码行永远不再执行,那么线程1如何获得锁定?将锁定回到线程1的内部动态是什么?

java multithreading synchronization locking wait

14
推荐指数
2
解决办法
2290
查看次数

线程抛出异常时会发生什么?

如果我run()在一个Thread上调用该方法并且该run()方法抛出一个未被捕获的异常会产生什么结果呢?

谁抓住了这个例外?是否异常,甚至被逮住?

java multithreading

11
推荐指数
1
解决办法
5679
查看次数

按顺序运行Java线程

你将如何顺序执行三个线程?例如.Thread1,Thread2,Thread3.无法将一个Thread的引用传递给另一个Thread并从run()方法调用.

所以代码应该是这样的:

 Thread1.start();
 Thread2.start();
 Thread3.start();
Run Code Online (Sandbox Code Playgroud)

应该是

 Printing Thread1
 Printing Thread2
 Printing Thread3
Run Code Online (Sandbox Code Playgroud)

这可以通过使用ThreadPoolExecutor并使用阻塞队列来实现,但即使这样也不是可接受的答案.

java concurrency multithreading java.util.concurrent

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

如何理解Java热点错误

当JVM崩溃时,他会写一个错误日志hs_err_pid.log.我想找出导致JVM崩溃的原因?如何理解这些日志,是否记录了日志的排列方式.我试图在网上搜索但无济于事:-(

指出相关的URL将不胜感激.谢谢.

java crash jvm jvm-hotspot

8
推荐指数
1
解决办法
7946
查看次数

在二维数组中查找字符串

这是一个需要针对时间进行优化的面试问题.

假设您有一个二维数组,并且您在数组中有一个字符串说"亚马逊",这样各个字符可以从左到右,从右到左,从上到下,从下到上.

我将用例子解释:

char[][] a = {
            {B,B,A,B,B,N},
            {B,B,M,B,B,O},
            {B,B,A,B,B,Z},
            {N,O,Z,B,B,A},
            {B,B,B,B,B,M},
            {B,B,B,B,B,A}
    };
Run Code Online (Sandbox Code Playgroud)

上面的Array有两个Amazon Strings.您需要返回存在的此类字符串的数量.

algorithm time-complexity

8
推荐指数
1
解决办法
1855
查看次数

什么是JDBC中的连接?

JDBC中的连接对象是什么?如何保持此连接(我的意思是它是网络连接)?它们是TCP/IP连接吗?为什么每次创建连接都是一项代价高昂的操作?为什么这些连接在一段时间后变得陈旧,我需要刷新池?为什么我不能使用一个连接来执行多个查询?

java connection networking tcp jdbc

7
推荐指数
1
解决办法
9829
查看次数

准备好的语句和JDBC驱动程序

我对Java中的Prepared Statements有以下问题.

  1. 当SQL Query没有任何Where子句时,使用Prepared Statements是否有益?假设一个简单的查询Select*from tablename;

  2. 据说Prepared Statement被编译一次,只有值被第二次替换.因此,它可以更快,因为可以跳过查询验证和编译步骤.编译表格存储在哪里?这个编译表格的生命周期是多少?

java jdbc prepared-statement

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

在二叉搜索树中找到两个加起来为第三个数字的数字

您将获得一个数字BST.您必须在其中找到两个数字(a,b),以便a + b = S在O(n)时间和O(1)空间中.

什么算法?

一种可能的方法是将两个BST转换为双向链接列表,然后从前端和尾端开始:

if front + end > S then end--
Run Code Online (Sandbox Code Playgroud)

要么:

if front + end < S then front++
Run Code Online (Sandbox Code Playgroud)

algorithm big-o

5
推荐指数
0
解决办法
3852
查看次数