草庐IT

不可避免

全部标签

java - GridBagLayout:如何防止不可见组件折叠

当使由GridBagLayout管理的布局的各个组件不可见时,布局中其余组件的排列会不断变化。GridBagLayout似乎“折叠”了带有不可见组件的单元格,导致其他组件改变位置。这是一种非常烦人的行为,我一直在寻找一种方法来阻止它这样做。我尝试过的一种方法是在同一个单元格中添加一个间隔符,其固定大小等于可能隐藏的组件的首选大小,但如果首选大小发生变化,它将是保持垫片同步很麻烦。有没有更好的办法?实际上,如果GridBagLayout真的完全忽略具有不可见组件的单元格,它不会那么糟糕,但它仍然会考虑单元格的insets,所以如果你有输入字段的布局并使用insets来整齐地排列它们之间有

java - 我可以避免使用 Java EE 来创建轻量级网页吗?

我下载的所有内容似乎都坚持使用JavaEE。我需要构建一个页面来处理对它的请求,并根据参数进行一些处理。这是为了连接到另一个框架,该框架将定期调用此URL。我想要一种快速简便的方法来创建带有一些处理的页面。有没有一种简单的方法可以使用Java来做到这一点?我正在使用Java,因为我对Java很满意。我使用SE多年,并在EE中做了一些工作,但我不想要EE附带的所有东西。我是否应该完全避免使用Java而使用其他东西。这个需要部署在linux环境下。 最佳答案 IusedSEforyearsanddidsomeworkinEEbutIdo

java - 为什么在 Guava 中过滤/转换函数有时返回可修改的 View 而有些返回不可修改的 View ?

例如,所有Lists、Collections2、Sets都返回一个可修改的View-从View集合中删除将删除原始项目。这很好用:Listlist=Lists.newArrayList(1,2,3,4,5,6,-1,-2,-3,-4);Collectiontransform=Collections2.filter(list,newPredicate(){publicbooleanapply(Integerinput){returninput.intValue()>0;}});transform.clear();当我使用Iterables和Iterators方法过滤/转换时,我得到了不可

java - 在 Java 中实现观察者模式时避免暴露实现细节?

我从C#转到Java,在C#中事件是一等公民,事件处理程序可以是私有(private)方法。我现在正在开发一个Java项目,我当然需要使用观察者模式来实现事件。由于Observer需要将其监听器/处理程序回调方法公开给Observable类,这似乎是将Observer的细节实现公开给其他无关的类。我可以将对这些方法的访问设置为包级别,这将使这些实现细节对我的包的消费者隐藏,但它对我来说仍然有难闻的“气味”。这只是我需要咬紧牙关还是有更好的方法? 最佳答案 使用观察者模式,您正在观察的类不需要公开它们的实现。通知其他类的类通常会有自己

避免多次迭代的 Java Lambda 表达式

各位,考虑以下示例,给定一个Trade对象列表,我的代码需要返回一个包含24小时、7天、30天和所有时间的交易量的数组。使用普通的旧迭代器,这只需要对集合进行一次迭代。我正在尝试使用Java8流和Lambda表达式执行相同的操作。我想出了这段代码,它看起来很优雅,工作正常,但需要对列表进行4次迭代:publicstaticfinalintDAY=24*60*60;publicdouble[]getTradeVolumes(Listtrades,inttimeStamp){doublevolume=trades.stream().mapToDouble(Trade::getVolume)

java - 避免在 Java CMS GC 中升级失败

我有一个使用CMS垃圾收集的Java应用程序,它每天都会遭受几次“ParNew(提升失败)”完整GC(请参见下面的示例)。我知道当垃圾收集无法在老一代中找到足够的(连续的)空间来将新一代对象提升到其中时,就会发生提升失败。在这一点上,它被迫进行昂贵的stop-the-worldfullGC。我想避免此类事件。我已经阅读了几篇建议可能的解决方案的文章,但我想在这里澄清/巩固它们:-Xmx:增加堆大小,例如。从2G到4G——为老一代提供更多余量的简单解决方案——根据我的经验,似乎工作得相当好-XX:NewRatio:增加NewRatio,例如。从2到4,为了增加老一代/减少新一代——给老一

java - 如何避免 finally block 中的 throw 子句

我使用SonarQube来提高代码质量。我遇到了一个与异常处理相关的问题,它说从finallyblock中删除throw子句。}catch(Exceptione){thrownewMyException("requestfailed:",e);}finally{try{httpClient.close();}catch(IOExceptione){thrownewMyException("failedtocloseserverconn:",e);}}根据我的理解,上面的代码看起来不错。如果我在finally中删除throw子句并抑制异常,则此方法的调用者将无法知道服务器的状态。我不确定

java - 为什么 java.lang.Void 不可序列化?

默认情况下可以序列化原语'void',为什么对象'Void'不扩展Serializable?添加示例:RootImplementation将出现编译错误,提示“Void不在其范围内”,因为它没有扩展Serializable。尽管将“someMethod”声明为“void”,但没问题。publicinterfaceRootextendsSerializable{RsomeMethod();}publicclassRootImplementationimplementsRoot{publicVoidsomeMethod(){returnnull;}} 最佳答案

java - 如何避免从 URL.getFile() 获取 URL 编码路径?

我在尝试获取给定资源的路径时遇到以下问题:System.out.println("nf="+newFile(".").getAbsolutePath());System.out.println("od="+newFile(this.getClass().getResource(".").getFile());我得到的输出是:nf=C:\Users\currentuser\workspace\xyz\.od=C:\Users\current%20user\workspace\xyz\bin\something问题在于%20URL编码。如何避免?有没有一种直接的方法可以避免首先获得这种字符

java - 引用类型的 volatile - 它是否总是避免由于 JMM 而发布引用问题?

假设这个类:publicclassAmIThreadSafe{privateinta;privateintb;AmIThreadSafe(inta,intb){this.a=a;this.b=b;}}假设一旦this(reference)转义,某些线程就可以访问该实例对此类的引用(声明为volatile)(导致竞争条件):volatileAmIThreadSafeinstance=newAmIThreadSafe(1,2);在这里,我确定分配实例引用的事实发生在线程读取之前。但是AmIThreadSafe的字段呢?外部volatile关键字是否也暗示了与a和b字段相关的happens-