我正在寻找一种在Java中存储密集可变长度比特阵的非常紧凑的方法.现在,我正在使用BitSet,但它似乎平均使用1.5*n位存储空间用于大小为n的位向量.通常,这不是问题,但在这种情况下,存储的比特阵列是应用程序的内存占用量非常重要的部分.因此,让它们变得更小一点真的很有帮助.
BitSet所需的空间似乎是由于用于支持数据结构的long数组在每次扩展以容纳更多位时往往会加倍:
// BitSet's resizing code
private void ensureCapacity(int wordsRequired) {
if (words.length < wordsRequired) {
// Allocate larger of doubled size or required size
int request = Math.max(2 * words.length, wordsRequired);
words = Arrays.copyOf(words, request);
sizeIsSticky = false;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以编写自己的BitSet替代实现,更加保守地扩展后端数据结构.但是,如果我不需要,我真的很讨厌复制标准类库中已有的功能.
我刚刚开始使用Ruby,并在RubyMine建议我更改此代码时发现语句修饰符:
if !VALID_DIRECTIONS.include?(direction)
raise ArgumentError, "Invalid direction"
end
Run Code Online (Sandbox Code Playgroud)
对此:
raise ArgumentError, "Invalid direction" if !VALID_DIRECTIONS.include?(direction)
Run Code Online (Sandbox Code Playgroud)
我喜欢它如何使代码更简洁.但是,我可以看到它乍一看可能具有误导性并强加可读性问题,因为它将效果置于条件之前.然后,也许那只是因为我已经习惯了C风格的语言.
有没有人因使用语句修饰符而遇到麻烦,或者你觉得他们已经改进了你的代码?此外,是否有人有使用修饰符的一般指导原则(即,对某些操作特别有效,或对其他操作无效)?
你能告诉我获取用户所有朋友列表的代码吗?
然后,我如何发送邀请来使用我的应用程序,或发送评论给其中一个朋友?
请不要告诉我查看API,我想了解应该如何使用C#SKD v5.任何人都可以为此提供一些代码示例吗?谢谢
我正在尝试禁用Searchable插件默认搜索页面(http:// localhost/searchable /),但还没有找到办法.任何人都知道如何做到这一点,最好是以合法的方式,但必要时采取欺骗手段?
我正在研究在Websphere 7.0上运行的Java EE 5应用程序,并且我正在尝试找到一种线程安全且高性能的方法来多线程化数据库审计日志记录的持久性. 是否有任何已知的方法可以在Java EE应用程序中安全有效地执行多线程审计日志记录?
如果您需要一些背景信息:该应用程序是一个Web服务,它收到的每个请求消息都会导致创建100或200个审核日志消息,这些消息必须持久保存到数据库中.最初审计日志记录是使用扩展java.util.logging.Handler的自定义审计处理程序类完成的,而publish方法将打开数据库连接,从LogRecord填充预准备语句,然后执行插入.由于此自定义处理程序在EJB的线程内运行,因此审计日志记录可能会为每个请求消息的响应时间增加几秒钟,并导致错过SLA.
因此,审计处理程序被一个包装处理程序替换,该处理程序添加会创建一个单独的线程(是的,使用新的Thread(),而不是Java EE的规则).包装器处理程序使用Vector对审计记录进行排队,并使用审计处理程序在单独的线程中尽可能快地将它们保留.
虽然它破坏了Java EE线程的规则,但是这个包装器运行得很好...... 直到我们允许在MDB上进行并发调用. 当允许多个EJB调用时,包装器可能会搞砸,并且可能会将每个日志记录多次保存到数据库中.这似乎表明包装器或线程创建逻辑有一个bug.
我本来打算找出并解决这个问题,但我想我会先问问是否有更好的方法.
我已经定义了具有多种方法的A类.然后我有另一个类,即JSF的托管bean.在bean中我创建了一个A类实例,但后来我无法调用A类中的任何方法.所有字段都是公共的,方法范围也是公共的.
我认为这可能是因为bean的性质(虽然它不应该)所以我创建了另一个类Tester.java并创建了实例,并且没问题.但是当我尝试调用这些方法时,Netbeans中的建议列表中没有显示任何内容.到底是怎么回事?谢谢,
编辑:代码:
public class Reservation {
.... //setters & getters
public List<DateTime> getDateRange(DateTime start, DateTime end) {
......//body of method
}
public TreeMap<DateTime, Integer> getDatesTreeMap(){
//body of method
}
public boolean checkRange() {
... body of method
}
}//end of class - no errors
Run Code Online (Sandbox Code Playgroud)
然后这就是类实例化的方式:
Reservation booking = new Reservation();
booking. ????? this is where the suggestions don't come up
Run Code Online (Sandbox Code Playgroud)
谢谢
在Grails 1.3.1应用程序中,我希望404错误导致渲染"list"控制器的主索引操作.此控制器使用布局目录(views/layouts/list.gsp)中的常规布局文件,然后使用包含的片段进行该操作(views/list/index.gsp).
正常访问此操作(http:// localhost/list/index)时,将应用布局文件和代码段,并且它看起来是正确的.但是,当通过UrlMapping类中的404规则访问 - "404"(控制器:"list",action:"index")时 - 不使用布局文件,只显示片段.
有谁知道为什么会发生这种情况,并且有没有办法让传统的布局显示为404(或其他)错误映射?
我正在和一个在从事了几年 IT 支持工作后希望重新回到编程领域的人一起工作。他们了解所有迭代编程基础知识并经常使用它们,但他们唯一的面向对象编程经验是在大学里。目标是提出一个规模合适的项目,有利于阐释和实践 OO 概念。有没有人曾经使用过或想到过一个好的问题域来介绍 OO?我正在寻找一个领域,其中继承、抽象和多态性等概念确实有意义,并且在使用类进行建模时提供了优势。
当然,我做了一些谷歌搜索,找到了流行的ATM 和地址簿 OO 示例。它们都很好,但 ATM 比我想要的要复杂一点。地址簿可能还不错,但我认为它可能不够复杂,或者对于建模对象来说不够清晰的领域。该项目的目标是需要付出相当大的努力才能完成,而不是一两个下午就能完全完成的事情。
至于实现细节,该项目将作为一个具有最小 UI 的 Java 控制台应用程序来实现。学习 OO 概念以及如何在 Java 中实现它们是此应用程序的主要目的。