问题列表 - 第18017页

Java FileChannel 的内存版本

我正在对我正在使用的库进行一些更改。为了减少内存使用,库将其临时数据写入磁盘而不是将其保存在内存中。然而,对于我的使用场景来说,将其保留在内存中会更有效。它还存在一些并发问题,因为它的临时文件具有常量名称,因此不能在不同线程中同时运行(因为线程会损坏彼此的数据)。

因此,我需要更改库,以便将所有数据保留在内存中。我最初并没有编写该库,因此我不太愿意对代码进行大幅更改。因此,我希望通过尽可能少的重构来做到这一点。写入磁盘的代码非常简单。这是一个(稍微简化的)示例:

final FileChannel fileChannel = this.randomAccessFile.getChannel();
fileChannel.position(calculatePosition());
while (blockData.hasRemaining())
{
 fileChannel.write(blockData);
}
Run Code Online (Sandbox Code Playgroud)

块的读取非常相似(即它使用从 RandomAccessFile 获取的 FileChannel)。

感觉最简单的解决方案是如果我可以使用 FileChannel 的某种实现,它映射到内存中的某个位置而不是文件。我知道我可以使用 FileChannel 的映射方法将文件映射到内存中的某个位置。然而,事实恰恰相反。这给了我一个文件的“内存API”。我想要一个针对某些内存的 FileChannel 接口。有没有可用的实现?

java nio filechannel random-access memory-mapped-files

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

理解Java中的$格式字符串

 StringBuilder sb = new StringBuilder();
 // Send all output to the Appendable object sb
 Formatter formatter = new Formatter(sb, Locale.US);

 // Explicit argument indices may be used to re-order output.
 formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
 // -> " d  c  b  a"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,为什么2附加到$?

java formatter

76
推荐指数
2
解决办法
4万
查看次数

是否允许列表内的​​div?

我知道LI里面的DIV是不被允许的,但我最近在很多"大"网站上都看过它:Smashing Magazine,Web Designer Wall ......等我尝试验证网站,他们有错误,但没有关于李的div?!

所以我可以在LI里面使用它,我需要它才有效吗?

html validation xhtml html-lists

156
推荐指数
3
解决办法
15万
查看次数

我如何在PHP中获取此数字的格式?

正常数字是10000.我希望它是1,000.我怎么能这样做?

php

1
推荐指数
2
解决办法
131
查看次数

以编程方式确定Java会话超时

有没有办法让java servlet/jsp确定webserver的会话超时(以秒,分钟等为单位......)?我尝试查看HttpSession和System API,但没有看到任何用于确定Web服务器会话超时的属性.我知道这个值是在web.xml中设置的,但我正在设计一个需要通过代码来确定这个值的java库.

注意:我正在设计通用的Web服务器,不能依赖供应商特定的扩展.

java jsp servlets

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

具有13位ISBN的Amazon AWS ItemLookup

我曾经能够做13位数的ISBN查找,但现在我做不到.

这是对13位ISBN的查询:9780073380957.

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=&ItemId = 9780073380957&Operation = ItemLookup&ResponseGroup = Images%2CItemAttributes&Service = AWSECommerceService&Timestamp = 2009-12-16T14%3A30%3A02Z&Version = 2009-06-01&Signature =

返回:f6770ab1-9b3e-48d3-9492-750e8d773c1b0.0053760000000000TrueNewShipASINAmazon19780073380957ImagesItemAttributes1-SubmissionDateAllAWS.InvalidParameterValue9780073380957不是ItemId的有效值.请更改此值,然后重试您的请求.

但是,同一本书的10位数ISBN有效:

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=&ItemId = 0073380954&Operation = ItemLookup&ResponseGroup = Images%2CItemAttributes&Service = AWSECommerceService&Timestamp = 2009-12-16T14%3A44%3A10Z&Version = 2009-06-01&Signature =

我正在使用pyaws,如果这有任何区别.

amazon-web-services isbn amazon-product-api

4
推荐指数
1
解决办法
4922
查看次数

代码覆盖是否应该用作阻碍项目进展的"里程碑"?

我是一个项目的开发经理,单元测试代码覆盖率非常低,我们肯定会感受到系统遗留代码中"技术负债"的重要性.

我的问题是,是否有人使用代码覆盖率作为里程碑或开发阈值,阻止项目移动到下一个sprint,直到代码覆盖率达到特定级别?使用代码覆盖率指标的"最佳做法"是什么?

unit-testing

8
推荐指数
2
解决办法
273
查看次数

访问关联PHP数组中的对象时性能下降

我发现(命令行)PHP脚本的性能下降很大,这是由简单的赋值(运行时间从0.8~0.9秒增加到29.x秒)引起的.

该脚本首先从MySQL数据库中获取大量数据,并创建不同自定义类的对象.在获取之后(php现在使用大约500 MB的RAM)我循环一个大约3'500个Sample对象的数组,每个对象都有一个关联数组(大小约100个条目)作为其属性之一.该数组包含Value对象,这些对象是具有两个属性的小对象,键是小于6'000的整数.这是我偶然发现问题的地方,请看这段代码:

foreach ($samples as $id => $s) {    # $s is now a 'Sample' object
    $values = $s->values();          # $values is an array of 'Value' objects

    if (isset($values[$match_id])) {
        $num_tested++;
        # $val = $values[$match_id];     # contains a 'Value' object
        # $val = &$values[...]; -> the loop never ends (!)
    }
}
Run Code Online (Sandbox Code Playgroud)

注意注释行.如果我运行此处显示的代码,此块将运行大约0.8到0.9秒.如果我取消注释该单行,则该块运行将近30秒.我发现如果数组是非关联的(它只包含从0到大约100的连续键),运行时只会增加到1.8~1.9秒.
似乎这是因为我使用的非连续数组键,但是为什么性能还没有通过调用而下降isset($values[$match_id])呢?是否有针对此的解决方法或我必须忍受它?

运行PHP 5.3.0,Zend Engine v2.3.0,Mac OS X Server 10.6.2

php oop command-line

6
推荐指数
1
解决办法
626
查看次数

如何在JDBC中获取插入ID?

我希望INSERT在Java中使用JDBC中的数据库(在我的情况下是Microsoft SQL Server)中的记录.同时,我想获取插入ID.如何使用JDBC API实现此目的?

java sql insert-id jdbc

366
推荐指数
5
解决办法
26万
查看次数

在python中每n个项拆分一个生成器/ iterable(splitEvery)

我正在尝试用Python编写Haskel函数'splitEvery'.这是它的定义:

splitEvery :: Int -> [e] -> [[e]]
    @'splitEvery' n@ splits a list into length-n pieces.  The last
    piece will be shorter if @n@ does not evenly divide the length of
    the list.
Run Code Online (Sandbox Code Playgroud)

这个的基本版本工作正常,但我想要一个适用于生成器表达式,列表和迭代器的版本.并且,如果有一个发电机作为输入,它应该返回一个发电机作为输出!

测试

# should not enter infinite loop with generators or lists
splitEvery(itertools.count(), 10)
splitEvery(range(1000), 10)

# last piece must be shorter if n does not evenly divide
assert splitEvery(5, range(9)) == [[0, 1, 2, 3, 4], [5, 6, 7, 8]]

# should give same …
Run Code Online (Sandbox Code Playgroud)

python iterator split

31
推荐指数
5
解决办法
1万
查看次数