我正在尝试 Tika 解析数以百万计的办公文档。Pdfs、docs、excels、xmls 等。种类繁多。
吞吐量非常重要。我需要能够在合理的时间内解析这些文件,但与此同时,准确性也非常重要。我希望解析失败的文档少于 10%。(失败我的意思是由于 tika 稳定性而失败,比如解析时超时。我不是说由于文档本身而失败)。
我的问题 - 如何在容器化环境中配置 Tika Server 以最大化吞吐量?
我的环境:
在每个 pod 上,我运行一个 java 程序,其中有 8 个解析线程。
每个线程:
-s -spawnChild -maxChildStartupMillis 120000 -pingPulseMillis 500 -pingTimeoutMillis 30000 -taskPulseMillis 500 -taskTimeoutMillis 120000 -JXmx512m -enableUnsecureFeatures -enableFileUrl这些文件中的每一个都存储在 Pod 本地的缓冲区中,因此使用本地文件优化: …
我有聚合,我使用<modules>元素链接父Pom ,然后我<parent>在每个子pom中指定.
有没有办法可以从父pom中构建子模块的子集...即
cd parent-dir
mvn install subproj1 subproj2
Run Code Online (Sandbox Code Playgroud) 我有一个复杂的应用程序与几个不同的JVM.
JVM 1执行大约5分钟的工作,然后触发另一个JVM2来完成一些额外的工作.
我想调试JVM2.所以我在JVM2的启动脚本上打开一个远程套接字调试器:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
我设置了这样的Eclipse远程调试会话:
连接类型:标准(套接字连接),主机:localhost,端口:8000
如果我等待JVM2启动,然后启动调试器,它工作正常.
然而,经过5分钟的等待后,点击调试器真的很难得到足够的重视.
如果我在JVM2打开之前启动远程调试器......我明白了
Failed to connect to remote VM. Connection refused.
Connection refused: connect
Run Code Online (Sandbox Code Playgroud)
有没有让远程调试器连续尝试连接?
我尝试使用Eclipse远程调试连接类型:Socket Listen但这会阻止端口,JVM2在启动时会出现此错误:
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=JVMTI_ERROR_INTERNAL(113)
ERROR: transport error 202: bind failed: Address already in use ["transport.c",L41]
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) ["debugInit.c",L500]
JDWP exit error JVMTI_ERROR_INTERNAL(113): No transports initialized
Run Code Online (Sandbox Code Playgroud)
如何让远程调试器一遍又一遍地尝试?
我有一个在Jetty上运行的REST Web服务.我想编写一个Java客户端,它使用相同的Web连接将大量文档分块到该休息服务.
我能够在这里建立一个基于Iterator的流媒体方法:
除非您设置clientConfig.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.CHUNKED);因为Content-length未知,否则这不起作用.
虽然有些工作,但分块转移似乎丢失了一些文件.例如:
num_docs 500000
numFound 499249
Run Code Online (Sandbox Code Playgroud)
也许它发送的块像:
{some:doc}, {some:doc}, {some:doc}, {some:doc}, {some:doc}, {some:doc}, {some:do
所以我每次都在输掉一些?更新:我错了.
我该怎么做呢?还有什么想法可能会发生什么?
ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, (int)TimeUnit.SECONDS.toMillis(60));
clientConfig.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.CHUNKED);
clientConfig.property(ClientProperties.ASYNC_THREADPOOL_SIZE, 100);
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, HttpClientFactory.createConnectionManager(name,
metricRegistry, configuration));
ApacheConnectorProvider connector = new ApacheConnectorProvider();
clientConfig.connectorProvider(connector);
clientConfig.register(new ClientRequestFilter() {
@Override
public void filter(ClientRequestContext requestContext) throws IOException {
List<Object> orig = requestContext.getHeaders().remove(HttpHeaders.CONTENT_LENGTH);
if (orig != null && !orig.isEmpty()) {
requestContext.getHeaders().addAll("Length", orig);
}
}
});
clientConfig.register(new ClientRequestFilter() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我对cygport包中的源代码结构有疑问.
以下是Cygports源文件的内容:
我正在尝试从cygports存储库构建gedit-3.4.2.
.cygport文件如何帮助我在./configure中运行正确的选项?
例如,在gedit中,如果我没有指定--disable-spell,它将不会因错误而继续.如何在构建cygport时获取用于构建项目的./configure选项列表?
有什么方法我们可以使用cygport可执行文件来构建cygport并更改前缀吗?
这是以下内容gedit-3.4.2-1.cygport:
inherit python gnome2
DESCRIPTION="GNOME text editor"
PATCH_URI="3.4.2-cygwin.patch"
DEPEND="gnome-common gtk-doc
girepository(Gtk-3.0)
pkgconfig(enchant)
pkgconfig(gtksourceview-3.0)
pkgconfig(libpeas-gtk-1.0)"
PKG_NAMES="${PN} ${PN}-devel"
PKG_HINTS="setup devel"
gedit_CONTENTS="--exclude=gtk-doc --exclude=libgedit* etc/ usr/bin/ usr/lib/gedit/ ${PYTHON_SITELIB#/} usr/share/"
gedit_devel_CONTENTS="usr/include/ usr/lib/gedit/libgedit* usr/lib/pkgconfig/ usr/share/gtk-doc/"
DIFF_EXCLUDES="*.desktop.in *.schemas.in *-marshal.h"
CYGCONF_ARGS="--libexecdir=/usr/lib --enable-python"
KEEP_LA_FILES="none"
Run Code Online (Sandbox Code Playgroud)
编辑来自Cygwin Ports邮件列表的人说:
"配置选项是
--libexecdir=/usr/lib --enable-python
Run Code Online (Sandbox Code Playgroud)
哪个来自CYGCONF_ARGS."
Eclipse的XML格式化程序做了一件令人讨厌的事情.
它变成了这样:
<timestamp>2009-10-20 00:00:00.000</timestamp>
Run Code Online (Sandbox Code Playgroud)
成
<timestamp>2009-10-20 00:00:00.000
</timestamp>
Run Code Online (Sandbox Code Playgroud)
通常是非常无害的,例如,Apache CXF现在会尝试解析时间戳中的空白并抛出解析异常!
我怎么能让它停止这样做?关于Eclipse的XML格式化程序的其他所有工作都很棒.
注意:这个问题不是Eclipse XML格式化程序的重复插入不需要的换行符这个问题引用了我没有使用的android XML编辑器.
我已经使用Selenium构建了Chrome扩展程序.
现在我想从源代码构建我自己的Chromium,以便我的扩展程序预先捆绑到构建的分布式软件包中,这样我就不必担心需要Selenium为我的用例安装CRX文件.
我找到了几个人们建议他们尝试这个的论坛,但是没有一个论坛看起来像是成功了.
我找到了一些提示,说明系统管理员如何为其网络中的用户强制安装扩展程序:https://support.google.com/chrome/a/answer/6306504?hl = zh-CN 但这可能适用于chrome enterprise,不会对我有用.
这是另一篇文章,讨论如何离线安装chrome扩展.我或许可以使用其中的一些来实现我想要的东西.
有没有人成功实际成为铬 CRX,以便CRX自动安装?
快速更新:
我只想注意:我正在使用InnoSetup安装程序安装我的自定义版Chrome.所以我确实有机会在安装我的铬分叉后,在安装后执行一些自定义执行步骤.我的扩展程序托管在Chrome网上商店并获得批准.
因此,如果有一些方法可以从Web商店以编程方式将Chrome扩展安装到Chromium安装中,我可以轻松地使用它.
*保存eclipse工作区而无需重启*
也许你已经发生了这种情况:
您可以自定义您的eclipse工作区并使其正确...然后OS更新发生并且系统重新启动...在重新启动期间eclipse意外地被强制关闭并且不保存工作空间.
当你回来时,你的所有工作区自定义设置都消失了,你的eclipse工作区也是空的!
有没有办法保存工作区而不重启eclipse?如果看到变化,也许可以让它每30分钟自动保存一次?
我正在使用以下代码使用iText将PDF合并在一起:
public static void concatenatePdfs(List<File> listOfPdfFiles, File outputFile) throws DocumentException, IOException {
Document document = new Document();
FileOutputStream outputStream = new FileOutputStream(outputFile);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();
for (File inFile : listOfPdfFiles) {
PdfReader reader = new PdfReader(inFile.getAbsolutePath());
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
document.newPage();
PdfImportedPage page = writer.getImportedPage(reader, i);
cb.addTemplate(page, 0, 0);
}
}
outputStream.flush();
document.close();
outputStream.close();
}
Run Code Online (Sandbox Code Playgroud)
这通常很棒!但有一段时间,它会将部分页面旋转90度?有人发生过这种事吗?
我正在研究PDF本身,看看正在被翻转的内容有什么特别之处.
我需要一些帮助来开始制作特定的 IntelliJ 插件。
我想制作一个 IntelliJ 插件,这样您就可以从 CLI(或者从 Web 服务,如果更容易的话)启动 IntelliJ 操作。
例如,我已经用 gradle 脚本构建了我的项目......但我也想在 intelliJ 中准备好它。现在我必须通过点击手动完成此操作。
相反,我希望能够从外部触发一些 IntelliJ 命令。在我的示例中,我想从我的 gradle 脚本中触发这些请求:
run-intellij-command {project-path} --action refresh-gradle run-intellij-command {project-path} --action build-project run-intellij-command {project-path} --action start-debugging --configurationName={configuration-name}有人有一个例子说明我如何开始使用这个吗?
真的希望有一个 intellij 插件项目已经做了类似的事情,比如对 cli 命令做出反应或托管一个可以调用的 Web 服务?
谢谢!
还创建了这个https://youtrack.jetbrains.com/issue/IDEA-184885 希望有一天看到这个功能成为现实
java ×4
eclipse ×3
aggregation ×1
apache-tika ×1
c++ ×1
chromium ×1
cygwin ×1
debugging ×1
gedit ×1
http ×1
itext ×1
jersey ×1
kubernetes ×1
maven ×1
pdf ×1
ports ×1
streaming ×1
tika-server ×1
workspace ×1
xml-editor ×1