我发现,例如这一行的执行时间非常长:System.out.println("................................................".matches("(?i)(?:.*)?\\W?([a-z0-9-_\\.]+((?:*)\\.(?:*))+(?:DE))(?:[0-9]{1,5})?"));如果我减少字符串开头的点数,则执行时间会缩短(似乎呈指数增长)。这是挂起线程的堆栈跟踪:[Repeatingtext]...Pattern$GroupTail.match(Matcher,int,CharSequence)line:4717Pattern
更新:我因发布无效代码而受到合理的批评。我已经牢记这一点,并用一个完整的工作示例更新了这篇文章。我也相应地更新了描述:我有一个非常简单的javaswingGUI,其组件占用的垂直(Y)空间看起来与最大Y范围组件所用的空间数量相等,但完全没有必要。我曾尝试使用preferredSize提示缩小那些不需要那么多垂直空间的组件,但无济于事。基本布局很简单:有一个主窗口和三个垂直面板。布局是一个简单的GridLayout(我更愿意保持这种方式,除非有人告诉我我需要的东西不能用GridLayout完成)。所有三个面板似乎都占据了相同数量的垂直空间,即使在slider的情况下,这是巨大的空间浪费。
在大多数系统上,我的JLabel中的内容都能正常显示。它也以一种方式驻留,它应该总是足够大以显示其内容文本,因为我基本上是这样做的:label.setText(text);label.setFont(newFont(fontName,0,12));intwidth=label.getFontMetrics(label.getFont()).stringWidth(text);intheight=21;//thisshouldalwaysbeenoughlabel.setBounds(newRectangle(x,y,width,height));但是在某些系统上(不是我自己的,所以我真
在vJUG24,其中一个主题是JVMperformance.可以找到幻灯片here.他有一个例子:staticvoidlog(Object...args){for(Objectarg:args){System.out.println(arg);}}这是通过调用的(不能完全正确地阅读幻灯片,但它是相似的):voiddoSomething(){log("foo",4,newObject());}他说因为是静态方法,可以这样内联优化:voiddoSomething(){System.out.println("foo");System.out.println(newInteger(4).toS
我最近使用SmartGWT编写了一个HelloWorld应用程序,并注意到该应用程序的大小非常大。在我的例子中,仅该应用程序就超过600kb。我认为大小太过分了,所以我将罪魁祸首缩小到两个核心库,ISC_Core和ISC_Foundation,它们的总大小为649kb。有没有办法减少这些库的膨胀?如有任何帮助,我们将不胜感激。 最佳答案 SmartGWT不是为HelloWorld应用程序设计的,而是为处理大量实体和具有大量屏幕的复杂企业应用程序而设计的。在该用例中,SmartGWT应用程序的最终交付大小与您使用任何其他技术获得的大小
假设我有一个带有抽象方法的抽象类AnimalpublicabstractAnimalmateWith(Animalmate);问题是,如果我创建子类Snake和Armadillo,这样的调用将是合法的:mySnake.mateWith(myArmadillo);但我只希望蛇能够与蛇交配。我需要能够定义这样的东西:publicabstractAnimal_Of_My_ClassmateWith(Animal_Of_My_Classmate);这在Java中可行吗? 最佳答案 自界泛型来拯救:abstractclassAnimal>{a
所以我对JSP还很陌生。我已经尝试了几种方法。在PHP或自动化框架中有意义的方法……事实上我可能想得太多了……我有一个hibernate的一对多关联。也就是说x类有很多y类。在类x的view.jsp中。我想抓取所有y类,其中y的外键与x的主键匹配并显示它们。看来hibernate妥妥的把这些东西放到了set里了。现在,问题是我如何遍历这个集合然后输出它的内容...我在这里有点难过。我试着写了一个小脚本,似乎那种事情应该行得通?嗯嗯嗯 最佳答案 您最好将bean作为请求(或session)属性放置并使用JSTL对其进行迭代:${ite
我正在尝试编写一个程序,将字母表中的任何字母(大写或小写)转换为拼音字母表。例如,如果我输入“A”或“a”,我的程序将给我(将其更改为)“Alpha”。我对这个和switch语句做了很多研究,但我一直被卡住。我意识到我不能在扫描仪中使用“char”。但是,当我将“char”更改为“String”时,我的switch语句搞砸了(特别是代码中的toUpperCase带有下划线。我看不出我的错误。这就是我所做的远:importjava.util.Scanner;publicclassPhoneticTranslate{publicstaticvoidmain(String[]args){ch
我有一个用java编写的分布式程序。我希望我的节点访问同步的物理时钟。我知道NTP是一种物理时钟同步协议(protocol)。我知道我可以通过sudoapt-getntp在linux上安装它。我的问题是当我安装它时,如何在我的java程序中访问这个同步时钟?我的意思是当我在我的机器上安装ntp时会发生什么?我的系统时钟会同步吗?谢谢:) 最佳答案 如果想在Java中访问NTP信息,您可以创建符合NTP数据包格式(NTPRFC-1305)的UDP数据包,将模式字段设置为MODE_CLIENT(3)然后将数据包发送到端口123上的NTP
我怎样才能知道从特定日期过去了多少天?我需要使用哪个包以及如何使用? 最佳答案 只是为了协议(protocol)-我喜欢java.util.concurrent.TimeUnit的东西。Dated1=...Dated2=...longdif=d1.getTime()-d2.getTime();longdays=TimeUnit.MILLISECONDS.toDays(dif);所以基本上morja的答案是什么,但是使用TimeUnit来计算周围的时间。直接在代码中使用24、60等值违反了Java代码约定(代码中只允许直接使用-1、0