我目前BufferedReader在同一文本文件上初始化了2 秒.当我用第一个文本文件读完文本文件时BufferedReader,我使用第二个文本文件从顶部再次传递文件.需要多次通过同一个文件.
我知道reset(),但它需要先调用,mark()并mark()需要知道文件的大小,我不认为我应该打扰.
想法?包?库?码?
谢谢TJ
我们有一个在openjdk8中运行的Java应用程序,其最大堆内存在运行时发生变化 - 可能是什么原因造成的?
我发现问题为什么堆在java中发生了变化,这指向解释max与committed内存之间差异的文章.在我们的例子中,似乎这两个通常是相同的,但并非总是如此 - 请参阅下面截图的11:53.
堆也可以更改为年轻代串行收集器(-XX:MaxHeapFreeRatio请参阅鼓励JVM到GC而不是增长堆?),但是我们使用并行收集器,所以情况并非如此.
我们运行应用程序的内存相关JVM参数:
-XX:MaxMetaspaceSize=200M -Xms2000m -Xmx2000m
不确定它是否相关,应用程序在11:55到11:58之间对老一代进行了并行标记扫描 - 此时有超过200MB的可用内存可用,我们看不出任何这种行为的原因.
我们有一个由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)但默认情况下它不处理列表/数组.我发现这篇文章解释了如何编写我们自己的工厂来绑定自定义对象,但它看起来很费劲,特别是对于应该已经支持的东西.
我想知道这些之间是否存在差异:
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)
如果没有任何差异哪一个更常见或更有效?
我知道这似乎有点多余,但我想要一个正则表达式匹配任何东西.
目前我们正在使用,^*$但无论文本是什么,它似乎都不匹配.
我手动检查没有文本,但我们使用的测试视图始终使用正则表达式进行验证.但是,有时我们需要它来使用正则表达式验证任何内容.即,文本字段中的内容无关紧要,它可以是任何内容.
我实际上并没有生成正则表达式,我是一个完全的初学者.
有一个字符串列表,我需要构建一个有效对的列表(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它实际上是它的状态.
有没有办法将顺序流的元素映射到它们在流中的位置?
我一直在尝试在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文件,我理解在构建过程中遇到的两个错误是至关重要的.我会感激任何可以帮助我解决问题的想法.
我们有一个在Docker中运行的Java应用程序.它有时会被oom-killer杀死,即使所有JVM统计数据看起来都不错.我们有许多其他应用程序没有这样的问题.
我们的设置:
JVM报告的各种内存统计信息(我们每隔10秒获取一次数据):
来自容器的日志(可能稍微不正常,因为我们使用相同的时间戳获取所有内容):
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) 我正在尝试估算在应用程序商店中使用 GAE 的每月成本,但我并不真正了解什么是实例以及我可以在一个实例中做什么。
我可以只有一个具有多个线程的实例来处理多个客户端吗?由于我每天为每个应用程序提供 28 小时的免费实例 ( http://cloud.google.com/pricing/ ),这是否意味着我不会为一直运行的服务器应用程序付费?
我为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