小编Jar*_*lak的帖子

Java BufferedReader回到文本文件的顶部?

我目前BufferedReader在同一文本文件上初始化了2 秒.当我用第一个文本文件读完文本文件时BufferedReader,我使用第二个文本文件从顶部再次传递文件.需要多次通过同一个文件.

我知道reset(),但它需要先调用,mark()mark()需要知道文件的大小,我不认为我应该打扰.

想法?包?库?码?

谢谢TJ

java file-io file bufferedinputstream text-files

26
推荐指数
2
解决办法
7万
查看次数

为什么max heap在运行时会发生变化?

我们有一个在openjdk8中运行的Java应用程序,其最大堆内存在运行时发生变化 - 可能是什么原因造成的?

我发现问题为什么堆在java发生了变化,这指向解释maxcommitted内存之间差异的文章.在我们的例子中,似乎这两个通常是相同的,但并非总是如此 - 请参阅下面截图的11:53.

堆也可以更改为年轻代串行收集器(-XX:MaxHeapFreeRatio请参阅鼓励JVM到GC而不是增长堆?),但是我们使用并行收集器,所以情况并非如此.

我们运行应用程序的内存相关JVM参数:

-XX:MaxMetaspaceSize=200M -Xms2000m -Xmx2000m

不确定它是否相关,应用程序在11:55到11:58之间对老一代进行了并行标记扫描 - 此时有超过200MB的可用内存可用,我们看不出任何这种行为的原因.

堆内存 Mark Sweep Count

java memory jvm memory-management java-8

15
推荐指数
1
解决办法
428
查看次数

Jdbi - 如何在Java中绑定list参数?

我们有一个由Jdbi(org.skife.jdbi.v2)执行的SQL语句.对于绑定参数,我们使用Jdbi的bind方法:

Handle handle = ...
Query<Map<String, Object>> sqlQuery = handle.createQuery(query);
sqlQuery.bind(...)
Run Code Online (Sandbox Code Playgroud)

但是我们在列表中存在问题,目前我们正在使用String.format它.所以我们的查询看起来像这样:

SELECT DISTINCT
    tableOne.columnOne,
    tableTwo.columnTwo,
    tableTwo.columnThree
FROM tableOne
JOIN tableTwo
    ON tableOne.columnOne = tableTwo.columnOne
WHERE tableTwo.columnTwo = :parameterOne
    AND tableTwo.columnThree IN (%s)
Run Code Online (Sandbox Code Playgroud)

%s被替换为,String.format所以我们必须在java代码中生成一个合适的字符串.然后在%s更换之后我们使用jdbi的bind方法来替换所有其他参数(:parameterOne?).

有没有办法String.format用jdbi 取代?有一种方法bind(String, Object)但默认情况下它不处理列表/数组.我发现这篇文章解释了如何编写我们自己的工厂来绑定自定义对象,但它看起来很费劲,特别是对于应该已经支持的东西.

java sql jdbi

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

传统循环和for-each循环之间有什么区别?

我想知道这些之间是否存在差异:

ArrayList<Example> list = new ArrayList<Example>
Run Code Online (Sandbox Code Playgroud)

1-)

for(int i = 0; i < list.size(); i++) {
    list.get(i).doSomething();
}
Run Code Online (Sandbox Code Playgroud)

2-)

for(Example example : list) {
    example.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

如果没有任何差异哪一个更常见或更有效?

java

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

正则表达式匹配任何东西

我知道这似乎有点多余,但我想要一个正则表达式匹配任何东西.

目前我们正在使用,^*$但无论文本是什么,它似乎都不匹配.

我手动检查没有文本,但我们使用的测试视图始终使用正则表达式进行验证.但是,有时我们需要它来使用正则表达式验证任何内容.即,文本字段中的内容无关紧要,它可以是任何内容.

我实际上并没有生成正则表达式,我是一个完全的初学者.

regex

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

如何使用Java 8流将列表的元素映射到它们的索引?

有一个字符串列表,我需要构建一个有效对的列表(string, its position in the list).目前我有使用google集合的代码:

public Robots(List<String> names) {
    ImmutableList.Builder<Robot> builder = ImmutableList.builder();
    for (int i = 0; i < names.size(); i++) {
        builder.add(new Robot(i, names.get(i)));
    }
    this.list = builder.build();
}
Run Code Online (Sandbox Code Playgroud)

我想使用Java 8流做到这一点.如果没有索引,我可以这样做:

public Robots(List<String> names) {
    this.list = names.stream()
            .map(Robot::new) // no index here
            .collect(collectingAndThen(
                    Collectors.toList(),
                    Collections::unmodifiableList
            ));
}
Run Code Online (Sandbox Code Playgroud)

要获得索引,我必须做这样的事情:

public Robots(List<String> names) {
    AtomicInteger integer = new AtomicInteger(0);
    this.list = names.stream()
            .map(string -> new Robot(integer.getAndIncrement(), string))
            .collect(collectingAndThen(
                    Collectors.toList(),
                    Collections::unmodifiableList
            ));
}
Run Code Online (Sandbox Code Playgroud)

但是,文档说映射函数应该是无状态的,但AtomicInteger它实际上是它的状态.

有没有办法将顺序流的元素映射到它们在流中的位置?

java lambda java-8 java-stream

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

为Visual Studio安装openCV 2.4 for C/C++

我一直在尝试在Windows 7 for C/C++上为Visual Studio 2010安装OpenCV(版本2.4.1和2.4.2).

我一直在关注这个教程:http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html

我跳过安装第三方软件(除了python 2.7和zlib之外:http://gnuwin32.sourceforge.net/packages/zlib.htm).

我运行cmake,然后从openCV构建目录中打开openCV.sln,等待visual studio加载然后构建它.Visual Studio提供了200个错误,这些错误只是以下两次重复多次:

错误C1083:无法打开包含文件:'unistd.h':没有这样的文件或目录

错误LNK1104:无法打开文件'....\lib\Debug\opencv_core241d.lib'

"OpenCV构建目录"/ bin/Release不包含任何*.exe文件,只有大量*.pdb文件,其中我可以看到contours.pdb.教程说我应该在那里看到contours.exe.

由于没有*.exe文件,我理解在构建过程中遇到的两个错误是至关重要的.我会感激任何可以帮助我解决问题的想法.

c c++ opencv visual-studio-2010

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

oom-killer杀死了Docker中的java应用程序 - 报告的内存使用不匹配

我们有一个在Docker中运行的Java应用程序.它有时会被oom-killer杀死,即使所有JVM统计数据看起来都不错.我们有许多其他应用程序没有这样的问题.

我们的设置:

  • 容器大小限制:480MB
  • JVM堆限制:250MB
  • JVM元空间限制:100MB

JVM报告的各种内存统计信息(我们每隔10秒获取一次数据):

JVM统计信息

来自容器的日志(可能稍微不正常,因为我们使用相同的时间戳获取所有内容):

java invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=0
java cpuset=47cfa4d013add110d949e164c3714a148a0cd746bd53bb4bafab139bc59c1149 mems_allowed=0
CPU: 5 PID: 12963 Comm: java Tainted: G               ------------ T 3.10.0-514.2.2.el7.x86_64 #1
Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/14/2014
0000000000000000 0000000000000000 0000000000000046 ffffffff811842b6
ffff88010c1baf10 000000001764470e ffff88020c033cc0 ffffffff816861cc
ffff88020c033d50 ffffffff81681177 ffff880809654980 0000000000000001
Call Trace:
[<ffffffff816861cc>] dump_stack+0x19/0x1b
[<ffffffff81681177>] dump_header+0x8e/0x225
[<ffffffff8118476e>] oom_kill_process+0x24e/0x3c0
[<ffffffff810937ee>] ? has_capability_noaudit+0x1e/0x30
[<ffffffff811842b6>] ? find_lock_task_mm+0x56/0xc0
[<ffffffff811f3131>] mem_cgroup_oom_synchronize+0x551/0x580
[<ffffffff811f2580>] ? mem_cgroup_charge_common+0xc0/0xc0
[<ffffffff81184ff4>] pagefault_out_of_memory+0x14/0x90
[<ffffffff8167ef67>] mm_fault_error+0x68/0x12b
[<ffffffff81691ed5>] __do_page_fault+0x395/0x450
[<ffffffff81691fc5>] do_page_fault+0x35/0x90 …
Run Code Online (Sandbox Code Playgroud)

linux memory out-of-memory java-memory-model docker

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

什么是 Google App Engine 实例?

我正在尝试估算在应用程序商店中使用 GAE 的每月成本,但我并不真正了解什么是实例以及我可以在一个实例中做什么。

我可以只有一个具有多个线程的实例来处理多个客户端吗?由于我每天为每个应用程序提供 28 小时的免费实例 ( http://cloud.google.com/pricing/ ),这是否意味着我不会为一直运行的服务器应用程序付费?

google-app-engine

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

Google App Engine NO_MODIFICATION_ALLOWED_ERR Eclipse构建错误

我为Eclipse Indigo安装了Google App Engine插件.我用自动生成的示例代码创建了新的Web应用程序项目.在创建项目时,我取消选中"使用Google Web Toolkit".我的项目如下所述:Google App Engine HTTP Error 403

在构建项目时,我收到以下错误:

构建期间发生错误.

项目"测试"上运行构建器"Google App Engine项目更改通知程序"的错误

NO_MODIFICATION_ALLOWED_ERR:尝试修改不允许修改的对象.

我可以在localhost上运行servlet,没有任何问题,但是当我部署应用程序时,它不起作用.日志显示:

来自servlet的未捕获异常

java.lang.UnsupportedClassVersionError:test/Test:不支持的major.minor版本51.0

eclipse google-app-engine eclipse-plugin

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