我有一个大的.xlsx文件(141 MB,包含293413行,每行62列)我需要在其中执行一些操作.
我在加载此文件(OutOfMemoryError)时遇到问题,因为POI在XSSF(xlsx)工作簿上占用大量内存.
这个问题类似,提出的解决方案是增加VM的分配/最大内存.
它似乎适用于那种文件大小(9MB),但对我来说,即使分配所有可用的系统内存,它也只是不起作用.(嗯,考虑到文件大于15倍,这并不奇怪)
我想知道是否有任何方法以不占用所有内存的方式加载工作簿,但是,没有基于(进入)XSSF的底层XML进行处理.(换句话说,维护清教徒POI解决方案)
如果没有强硬的话,欢迎你说("没有."),并指出了解决"XML"问题的方法.
使用Apache POI时,我(以编程方式)从MS Word文件获取的字符串与我用MS Word打开文件时可以看到的文本不同.
使用以下代码时:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
HWPFDocument wordDoc = new HWPFDocument(inputStrm);
System.out.println(wordDoc.getText());
Run Code Online (Sandbox Code Playgroud)
输出是一行,有许多"无效"字符(是的,"盒子"),还有许多不需要的字符串,如" FORMTEXT"," HYPERLINK \l "_Toc##########""("#"是数字数字)," PAGEREF _Toc########## \h 4"等.
以下代码"修复"了单行问题,但保留了所有无效字符和不需要的文本:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
WordExtractor wordExtractor = new WordExtractor(inputStrm);
for(String paragraph:wordExtractor.getParagraphText()){
System.out.println(paragraph);
}
Run Code Online (Sandbox Code Playgroud)
我不知道我是否使用了错误的方法来提取文本,但这就是我在查看POI的快速指南时所提出的.如果我是,那么正确的方法是什么?
如果输出正确,是否有一种标准的方法来摆脱不需要的文本,或者我是否必须编写自己的过滤器?
由于 Unity ECS,我最近阅读了很多有关 ECS 的文章。
ECS架构有很多明显的优势:
ECS 是面向数据的:数据倾向于线性存储,这是系统访问它的最佳方式。在体面的 ECS 实现中,数据是按顺序存储和处理的,对于任何给定的系统处理它的组件集几乎没有中断。
ECS 非常分割:它自然地将数据与行为分开,强制执行“组合而非继承”(google it)等。
ECS 对并行处理和多线程非常友好:由于事物的结构方式,许多实体和组件可以避免冲突并与其他系统并行处理。
然而,ECS 的缺点(与 OOP 或实体组件 [没有系统] 相比,直到最近在包括 Unity 在内的游戏引擎中很常见)很少被谈论,如果有的话。它们存在吗?如果他们这样做了,他们是什么?
architecture oop unity-game-engine data-oriented-design entity-component-system
使用 Java,是否可以在不使用 GUI 元素的情况下检测用户操作,例如按键、鼠标按钮和/或鼠标的屏幕位置?
如果是,我该如何实施?
否则,有什么选择?
我在这个问题上找到的唯一 StackOverflow 来源是这个问题,没有答案。
我在 StackOverflow 之外找到的关于这个问题的唯一来源指向“隐形 GUI”解决方案,希望是我真正想要避免的事情。
我试图在SO方面的问题中尽可能具体和有帮助,但对于这一问题,那几乎没有任何意义,因为我绝对没有暗示为什么会这样的最微妙线索。
它发生在任何/每个测试(甚至是“空白”测试)上。而且我已经尝试过(卸载和)更新统一性。-没工作。
无论如何,这是异常的堆栈跟踪:
2017.11.16 14:54:24.308 ERROR System.Reflection.TargetInvocationException: Uma exceção foi acionada pelo destino de uma chamada.
System.Reflection.TargetInvocationException: Uma exceção foi acionada pelo destino de uma chamada. ---> System.InvalidCastException: Não é possível converter um objeto do tipo 'NUnit.Engine.CallbackHandler' no tipo 'System.Web.UI.ICallbackEventHandler'.
em NUnit.Framework.Api.FrameworkController.LoadTestsAction..ctor(FrameworkController controller, Object handler)
--- Fim do rastreamento de pilha de exceções internas ---
em System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
em System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
em System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, …Run Code Online (Sandbox Code Playgroud) 假设我有一艘宇宙飞船(source); 小行星(target)就在附近.
我知道,在3D空间(XYZ向量):
sourcePos)和速度(sourceVel).targetPos)和速度(targetVel).(例如sourcePos= [30,20,10]; sourceVel= [30,20,10]; targetPos= [600,400,200]; targetVel= [300,200,100]`)
我也知道:
projSpd)是恒定的.(例如projSpd= 2000.00)
如何计算我需要射击的拦截坐标以击中小行星?
笔记:
这个问题是基于这个Yahoo - Answers页面.
我也在谷歌搜索类似的问题,在这里搜索SO,但大多数答案都是针对2D空间的,而对于3D的少数答案,解释和伪代码都没有解释什么是做什么和/或为什么,所以我不能真正理解将它们成功应用于我的代码.以下是我访问过的一些页面:
我想知道在NTLM身份验证期间使用的6个参数可以自动化,这些参数是:
"用户名" - 用于登录当前正在使用的操作系统配置文件的用户名.- 已经自动化,使用System.getProperty("user.name")
"密码" - 与上述相同.- 可能不能自动化,但我一直都不确定,直到我试着问...
"ProxyAddress" - 代理的地址,身份验证被"握手"以便通过.- 我已经伪自动化,但它的固定代码,因此很糟糕.
"ProxyPort" - 代理上的侦听端口,先前已解释过.- 我已经伪自动化,但它的固定代码,因此很糟糕.
"工作站" - 我的PC在本地网络中的ID或其他东西......我目前正在使用我的机器的属性ID及其工作,但我不知道它是否是正确的值,或者是否需要值首先.- 不知道如何自动化,但我知道这是可能的.需要帮忙
"域名" - 不知道它指的是哪个域,因此不知道它应该具有什么价值...留空似乎正在工作...... - 不知道如何自动化,但我知道它是可能的.需要帮忙
额外信息:我正在使用HtmlClient库进行处理,包括身份验证.
DefaultCredentialsProvider credentialProvider = (DefaultCredentialsProvider) webClient.getCredentialsProvider();
credentialProvider.addNTLMCredentials(username, password, proxyAddress, proxyPort, workstation, domain);
webClient.setUseInsecureSSL(true);
Run Code Online (Sandbox Code Playgroud) 如何在显示(类扩展)后立即自动执行任务(使用工作线程)JFrame,同时如果可能的话,在类扩展中维护该任务的起始代码JFrame?
我找到的所有示例,以及到目前为止我自己如何使用它,仅显示 GUI 类扩展,其中的代码在启动和显示 GUI 后对输入做出反应,任何自动的进一步操作都在启动和显示的代码之外完成。显示图形用户界面;换句话说,我(看到/没有)看到的是下面示例代码中的注释:
public static void main(String args[]) {
//Set the Look and Feel
//...
//Create and display the form
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new MyFrame().setVisible(true); //<--- I never see automatic stuff happening
//...within here (class). I realize it can be done overriding setVisible(), but
//...that would be cheating in regards to the intent of this question.
}
});
//In the examples I found, and …Run Code Online (Sandbox Code Playgroud) java ×5
apache-poi ×2
.net ×1
3d ×1
architecture ×1
automation ×1
coordinates ×1
exception ×1
extraction ×1
keyboard ×1
keylistener ×1
math ×1
memory ×1
mouseevent ×1
ms-word ×1
netbeans ×1
ntlm ×1
nunit ×1
oop ×1
position ×1
prediction ×1
regex ×1
swing ×1
task ×1
text ×1
unit-testing ×1
xssf ×1