我有一个选择的过程需要很长时间才能完成,大约需要5到10分钟.
我目前没有使用NOLOCK作为MS SQL数据库引擎的提示.
与此同时,我们有另一个进程在进行更新并插入到同一个数据库和相同的表中.
第一个过程已经开始,最近过早地结束了一条消息
SQLEXCEPTION:事务在锁资源上与另一个进程死锁,并被选为死锁牺牲品.
第一个进程在相同条件但在数据库较小的其他站点上运行,因此所讨论的select语句需要更短的时间(大约30秒左右).在这些其他站点中,我没有在这些其他站点中获得死锁消息.我也没有在最初遇到问题的网站上收到此消息,但是,我认为,随着数据库的增长,我相信我必须超过一些门槛.这是我的问题:
我理解单例类只能有一个实例,但我不明白为什么这个有用.为什么不只是创建一个包含静态变量和方法的类,并在需要时使用synchronize以确保没有两个线程同时在类中执行方法.我只是不明白为什么有人会经历创造这种类的麻烦.我知道我在这里遗漏了一些东西.
谢谢,
我有一大堆字符串,看起来像这样:String temp [] = new String [200000].
我有另一个字符串,让我们称它为bigtext.我需要做的是遍历temp的每个条目,检查是否在bigtext中找到该条目,然后根据它进行一些工作.所以,骨架代码看起来像这样:
for (int x = 0; x < temp.length; x++) {
if (bigtext.indexOf(temp[x]) > -1 {
//do some stuff
} else continue;
}
Run Code Online (Sandbox Code Playgroud)
因为temp中有很多条目,并且有很多bigtext实例,所以我想以最有效的方式做到这一点.我想知道如果有更好的方法可以做到这一点,我所概述的是最有效的方法来迭代搜索.
谢谢,
埃利奥特
我们有一个在JRE环境中运行的应用程序.该应用程序使用一些外部jar,我们已将它们放在JAVA_HOME/lib/ext文件夹中.这对我们来说已经有好几年了,但最近一位新的程序员加入了我们的团队,并且似乎强调这是一件多么糟糕的事情.在我进一步深入了解这个开发人员之前,我无法理解为什么并且我正在尝试做一些研究.这里有什么我想念的吗?
几周前我向Stackoverflow提出了一个问题,即创建一个有效的算法来搜索大块文本中的模式.现在我使用String函数indexOf进行搜索.一个建议是使用Rabin-Karp作为替代方案.我按如下方式编写了一个小测试程序来测试Rabin-Karp的实现,如下所示.
public static void main(String[] args) {
String test = "Mary had a little lamb whose fleece was white as snow";
String p = "was";
long start = Calendar.getInstance().getTimeInMillis();
for (int x = 0; x < 200000; x++)
test.indexOf(p);
long end = Calendar.getInstance().getTimeInMillis();
end = end -start;
System.out.println("Standard Java Time->"+end);
RabinKarp searcher = new RabinKarp("was");
start = Calendar.getInstance().getTimeInMillis();
for (int x = 0; x < 200000; x++)
searcher.search(test);
end = Calendar.getInstance().getTimeInMillis();
end = end -start;
System.out.println("Rabin Karp time->"+end);
}
Run Code Online (Sandbox Code Playgroud)
以下是我正在使用的Rabin-Karp的实现: …
我通过复制trunk目录在subversion中创建了一个分支.但是现在当我提交更改分支时,我收到此警告消息:"您的工作副本指向......似乎是一个标记!您应该在提交之前先切换到分支或主干."
如果我只是忽略错误消息并保存到目标目录,那么更改似乎会出现但警告消息是什么?
谢谢,
埃利奥特
我是Eclipse的长期用户,但对于JUnit来说,这是一个新手.我有很多java项目,我想开始围绕这些项目中的方法编写测试用例.我只是想知道为此目的设置Eclipse环境的最佳方法.假设我有一个典型的项目,在指定的包中有一个典型的src目录.如何将测试用例附加到该项目.一些问题:1.我不希望测试用例成为我在项目中创建的任何构建的一部分.我想参考测试套件中的分支.
我是否要在要测试的软件包下设置一个单独的测试目录?我有一个单独的测试包吗?做这个的最好方式是什么?
我有一个swing应用程序,我想在其中使用带有图标的JCheckbox.我构建了如下图标:
JCheckBox unsubmit = new JCheckBox("Unsubmit",applet.undo);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,标签和图标出现在我的GUI中,但框本身无处可寻.如果我构建没有图标的JCheckBox,则框会回来.我已经尝试调整按钮的首选大小,但它没有任何效果.
谁知道这里发生了什么?
谢谢,
埃利奥特
我一直在努力解决这个问题.
我试图在JTabbedPane中出现一个淡蓝色背景.我已经尝试了一切,似乎没有任何工作.
以下是我的代码.如果您运行它,它将显示选项卡,当选择浅蓝色背景和顶部的东西蓝色边框.我想控制这种颜色.但是怎么样?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.plaf.ColorUIResource;
public class Main extends JFrame {
JTabbedPane tab=new JTabbedPane();
public Main() {
setSize(300,300);
setTitle("Test Tab pane");
tab.add("First",new myPanel("First"));
tab.add("Second",new myPanel("Second"));
tab.add("Third",new myPanel("Third"));
tab.add("Fourth",new myPanel("Fourth"));
tab.addChangeListener(new ChangeTab());
getContentPane().add(tab,BorderLayout.CENTER);
setVisible(true);
for(int i=0;i<tab.getTabCount();i++){
if(i != tab.getSelectedIndex())
tab.setBackgroundAt(i,Color.orange);
tab.setForeground(Color.BLACK);
}
tab.setOpaque(true);
UIManager.put("TabbedPane.contentAreaColor ",ColorUIResource.GREEN);
UIManager.put("TabbedPane.selected",ColorUIResource.GREEN);
UIManager.put("TabbedPane.background",ColorUIResource.GREEN);
UIManager.put("TabbedPane.shadow",ColorUIResource.GREEN);
}
public static void main(String[] args) {
Main main = new Main();
}
class ChangeTab implements ChangeListener{
public void stateChanged(ChangeEvent e){
tab.validate();
System.out.println(tab.getSelectedIndex());
for(int i=0;i<tab.getTabCount();i++){ …Run Code Online (Sandbox Code Playgroud) 我想计算一个日期时间差,但我得到一些奇怪的结果:这是源:
import java.util.Calendar;
import java.util.Collections;
import java.util.Vector;
public class Main {
static Calendar dcal = Calendar.getInstance();
static Calendar ccal = Calendar.getInstance();
public static void main(String[] args) {
dcal.set(2011, 1, 27);
ccal.set(2011,2,1);
long dtime = dcal.getTimeInMillis();
long ctime = ccal.getTimeInMillis();
long diff = ctime - dtime;
int hours = (int) (diff / (1000 * 60 * 60));
System.out.println("hours->"+hours);
}
}
Run Code Online (Sandbox Code Playgroud)
当我将ccal设置为2011年1月31日时,日期差异为96小时,但当我将其设置为2011年2月1日时,日期差异为48小时.怎么会这样?什么是补救措施?
谢谢,
埃利奥特
java ×8
algorithm ×2
swing ×2
arrays ×1
deadlock ×1
eclipse ×1
jar ×1
jcheckbox ×1
jtabbedpane ×1
junit ×1
performance ×1
rabin-karp ×1
search ×1
singleton ×1
sql-server ×1
string ×1
svn ×1
time ×1