小编use*_*887的帖子

Java:内存高效的ByteArrayOutputStream

我在磁盘中有一个40MB的文件,我需要使用字节数组将其"映射"到内存中.

起初,我认为将文件写入ByteArrayOutputStream是最好的方法,但我发现在复制操作期间的某个时刻需要大约160MB的堆空间.

如果不使用RAM文件大小的三倍,有人知道更好的方法吗?

更新:感谢您的回答.我注意到我可以减少内存消耗,稍微告诉ByteArrayOutputStream的初始大小要比原始文件大小稍大一些(使用我的代码强制重新分配的确切大小,得到检查原因).

还有另一个高内存点:当我用ByteArrayOutputStream.toByteArray返回byte []时.看看它的源代码,我可以看到它正在克隆数组:

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}
Run Code Online (Sandbox Code Playgroud)

我想我可以扩展ByteArrayOutputStream并重写此方法,以便直接返回原始数组.这里有没有潜在的危险,因为流和字节数组不会被多次使用?

java bytearray memory-mapped-files bytearrayoutputstream

16
推荐指数
3
解决办法
4万
查看次数

Spring和Maven的模块化Web应用程序

我正在尝试用Java设计中型Web应用程序的体系结构,我想得到一些关于如何做的建议.

该项目包括基础网站和许多模块.例如,一个模块将提供用户注册,另一个模块将提供Web服务,等等......

每当我需要将应用程序交付给新客户时,最理想的方法是获取他想要的模块,做一些主题(css,图像,也许是jsp)并开发他可能需要的自定义模块(如果有的话).

我已经看过maven多模块项目,战争覆盖,但我发现很难对应用程序进行分区,特别是在模块的配置方面(例如,从模块中合并全局弹簧配置).有人能指出我这样一个系统的例子吗?提前致谢!

java web-applications spring-mvc modular maven

10
推荐指数
1
解决办法
4271
查看次数

HTML/Javascript:记住滚动独立于窗口大小

我有一个在线阅读书籍的网页.我想保存文档中的位置,这样当用户恢复阅读时,他就会从以前的位置开始.

我可以使用window.pageYOffset之类的东西来获取滚动,但这取决于浏览器窗口的大小.换句话说,如果您使窗口更窄,则相同的文本将在不同的滚动条上(有关示例,请参见图像).

所以我需要提出一种窗口大小的独立测量滚动方式.有任何想法吗?

注意:我只需要在基于Mozilla的浏览器上工作.

问题的例子

提前致谢

html javascript scroll mozilla

9
推荐指数
1
解决办法
457
查看次数

HashMap缓存中的同步

我有一个人们要求资源的网络应用程序.为了提高效率,使用同步哈希映射缓存此资源.这里的问题是当同时为同一个未缓存的资源发出两个不同的请求时:检索资源的操作会占用大量内存,所以我想避免为同一个资源多次调用它.

有人可以告诉我,以下代码段是否存在任何潜在问题?提前致谢.

private Map<String, Resource> resources = Collections.synchronizedMap(new HashMap<String, Resource>());

public void request(String name) {

  Resource resource = resources.get(name);

  if (resource == null) {
    synchronized(this) {
      if (resources.get(name) == null) {
        resource = veryCostlyOperation(name); // This should only be invoked once per resource...
        resources.put(resource);
      } else {
        resource = resources.get(name);
      }
    }
  }

  ...

}
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization caching double-checked-locking

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