我对try-catch构造有一个小的理论问题.
我昨天参加了一个关于Java的实践考试,我不明白以下例子:
try {
try {
System.out.print("A");
throw new Exception("1");
} catch (Exception e) {
System.out.print("B");
throw new Exception("2");
} finally {
System.out.print("C");
throw new Exception("3");
}
} catch (Exception e) {
System.out.print(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
问题是"输出会是什么样子?"
我很确定它会是AB2C3,但令人惊讶的是,这不是真的.
正确的答案是ABC3(经过测试,确实就是这样).
我的问题是,例外("2")去了哪里?
我想问你如何(或IF)可以减少Spring框架的RAM占用空间.
我创建了一个简单的helloworld应用程序来演示这个问题.只有两个类和context.xml文件:
Main - 使用main方法的类Test - 用于模拟某些"工作"的类(无限循环中的printig Hello)context.xml 只包含这个:
<context:component-scan base-package="mypackage" />
Run Code Online (Sandbox Code Playgroud)
测试类只包含调用的metod init,在构造后调用:
@Component
public class Test{
@PostConstruct
public void init() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
System.out.println("Hello " + Thread.currentThread().getName());
Thread.sleep(500);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
});
t.start();
}
}
Run Code Online (Sandbox Code Playgroud)
我准备了两个场景,在这两个场景中,main方法只包含一行.
在第一个场景中,main方法执行此操作:(new Test()).init();
App在没有Spring的情况下工作,仅消耗aprox.8MB的RAM.
在第二个场景中,main方法包含以下内容:new ClassPathXmlApplicationContext(new String[]{"spring/context.xml"});
因此,应用程序通过Spring容器初始化并消耗aprox.45MB内存!
有没有办法如何减少(在最好的情况下完全摆脱)这个额外的内存?到目前为止,我无法找到任何合适的解决方案.
我不介意启动时是否有额外的内存消耗 - 这很好,但在那之后,我需要我们的应用程序来减少它.
(这个问题背后的故事有点复杂,但这对我来说现在是核心问题.)
谢谢
我有一个简单的表,其中单列PRIMARY KEY称为id,type serial.那里有100,000,000行.表占用48GB,PK指数约为2,1GB.运行的机器仅为Postgres"专用",它类似于Core i5,500GB HDD,8GB RAM.Pg config由pgtune实用程序创建(共享缓冲区大约2GB,有效缓存大小为7GB).操作系统是Ubuntu服务器14.04,Postgres 9.3.6.
为什么都SELECT count(id)和SELECT count(*)在这个简单的例子(CCA11分钟)这么慢?
为什么PostgreSQL规划器选择全表扫描而不是索引扫描应该至少快25倍(在必须从HDD读取整个索引的情况下).或者我错在哪里?
顺便多次连续运行查询并没有改变任何东西.仍然cca 11分钟.
执行计划在这里:
Aggregate (cost=7500001.00..7500001.01 rows=1 width=0) (actual time=698316.978..698316.979 rows=1 loops=1)
Buffers: shared hit=192 read=6249809
-> Seq Scan on transaction (cost=0.00..7250001.00 rows=100000000 width=0) (actual time=0.009..680594.049 rows=100000001 loops=1)
Buffers: shared hit=192 read=6249809
Total runtime: 698317.044 ms
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查提供的路径是否存在以及它是否是文件.
所以我写了这段代码:
#include <QFile>
#include <QFileInfo>
bool Tool::checkPath(const QString &path){
QFileInfo fileInfo(QFile(path));
return (fileInfo.exists() && fileInfo.isFile());
}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误:
Error: request for member 'exists' in 'fileInfo', which is of non-class type 'QFileInfo(QFile)'
Error: request for member 'isFile' in 'fileInfo', which is of non-class type 'QFileInfo(QFile)'
为什么?我一遍又一遍地阅读文档,但我无法理解.BTW Qt Creator建议我使用这些方法并完成它们.但编译器不喜欢它.
Apache CSV实现中是否有内置功能在读取csv时忽略标题大小写?
前段时间我们已经实现了将CSV导出文件转换为SQL的实用程序.为此,我们选择了Apache CSV.到目前为止,一切都很好,但现在我们已经有了变更请求.
我们处理的所有CSV文件都必须包含标题,现在我们应该以不区分大小写的方式读取这些标题,因此我们的用户不必花费精力在其中,并观察他们创建的CSV是否遵循我们的标题案例要求.
代码示例:
for (CSVRecord record : subsidiaryRows) {
String name = record.get(Data.NAME));
Run Code Online (Sandbox Code Playgroud)
Data.NAME的位置
public static final String NAME = "Name";
Run Code Online (Sandbox Code Playgroud)
当用户在其CSV中使用"name"作为列标题而不是使用大写"N"的"Name"时,问题显然会引发.
我已经跟踪了API和源代码,但找不到任何东西.有没有办法如何强制CSVRecord使用CaseInsensitiveMap进行映射或类似的东西?
在https://developer.atlassian.com/bamboodev/bamboo-tasks-api/executing-external-processes-using-processservice之后,我想使用 ProcessService bean 调用一些命令。链接中描述的注入不起作用。我在 Bitbucket 检查了其他几个插件的来源,但每个插件都使用链接中描述的概念。
我的课:
import com.atlassian.bamboo.process.ProcessService;
public class CheckTask implements TaskType {
private final ProcessService processService;
public CheckTask(@NotNull final ProcessService processService) {
this.processService = processService;
}
Run Code Online (Sandbox Code Playgroud)
但是 Bamboo 没有找到 ProcessService bean 并失败并显示以下内容:
(org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“bamboo.tasks.CheckTask”的bean时出错:通过构造函数参数表达的不满意的依赖关系,类型为[com.atlassian.bamboo.process.ProcessService]的索引0::没有限定为依赖找到了 [com.atlassian.bamboo.process.ProcessService] 类型的 bean:预计至少有 1 个 bean 有资格作为此依赖的自动装配候选者。依赖注释:{};嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException : 没有为依赖找到 [com.atlassian.bamboo.process.ProcessService] 类型的合格 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选。依赖项注释:{})
我错过了什么吗?竹版:5.13.0 AMPS 版:6.2.6
java spring dependency-injection bamboo atlassian-plugin-sdk
遵循https://docs.gradle.org/current/userguide/java_testing.html#sec:configuring_java_integration_tests和https://www.michael-bull.com/blog/2016/06/04/separating-integration-and-unit -tests-with-gradle,我们尝试将集成测试与普通单元测试分开。
我们internal遇到的问题是,此类测试无法访问Kotlin的成员。根据Kotlin doco,测试源集存在可见性例外。
内部可见性修饰符意味着该成员在同一模块中可见。更具体地说,模块是一起编译的一组Kotlin文件:
- IntelliJ IDEA模块;
- 一个Maven项目;
- Gradle源集(测试源集可以访问main的内部声明除外);
- 通过调用Ant任务编译的一组文件。
除了不尝试访问它们之外,还有其他解决方法吗?这将需要对数百个测试进行重大重构,并有可能对整个代码库进行重构。
是否可以在不通过网络传输数据的情况下确定 SELECT 执行时间?
我正在尝试优化远程服务器上的查询,该服务器实际上距离我大约 1000 英里,即使获取少量数据也需要几分钟才能到达这里。
SQL Developer 告诉我执行时间,其中包括网络传输时间。与“ ”情况相同set timing on。
我真的很困惑 的结果SELECT * FROM v$sql(area)。即使更改执行的查询,此结果仍然相同。Oracle 文档提到 ELAPSED_TIME 列,它包括解析/执行/获取时间,并且这些结果以某种方式累积。
那么问题来了:有没有什么简单的方法可以获取服务器上查询的实际执行时间?没有网络传输时间,无论查询是否被缓存。没有平均值,没有估计。只是具体一次执行查询的时间。
提前谢谢