小编Max*_*val的帖子

即使没有结果也返回一个值

我有这种简单的查询,它返回给定id的非空整数字段:

SELECT field1 FROM table WHERE id = 123 LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

问题是如果找不到id,则结果集为空.我需要查询始终返回一个值,即使没有结果.

我有这个东西工作,但我不喜欢它,因为它运行2次相同的子查询:

SELECT IF(EXISTS(SELECT 1 FROM table WHERE id = 123) = 1, (SELECT field1 FROM table WHERE id = 123 LIMIT 1), 0);
Run Code Online (Sandbox Code Playgroud)

如果行存在,则返回field1,否则返回0.是否可以改进?

谢谢!

编辑以下一些注释和答案:是的,它必须在单个查询语句中,我不能使用计数技巧,因为我只需要返回1个值(仅供参考我使用Java/Spring方法运行查询SimpleJdbcTemplate.queryForLong() ).

mysql

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

如何将命令行选项传递给Android Studio中的模拟器?

我使用的是Android Studio 2.1.3.当我运行Android应用程序时,我选择了AVD,在哪里可以通过命令行选项,如-http-proxy?我甚至没有在运行配置中找到方法.

android android-studio

23
推荐指数
3
解决办法
6659
查看次数

Java DateFormat parse()不尊重时区

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
df.setTimeZone(TimeZone.getTimeZone("America/New_York"));

try {
    System.out.println(df.format(cal.getTime()));
    System.out.println(df.parse(df.format(cal.getTime())));
} catch (ParseException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

2011-09-24 14:10:51 -0400

9月24日星期六20:10:51 CEST 2011

为什么当我解析格式()得到的日期时,它不尊重时区?

java format parsing date

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

AWS Lambda函数检索S3文件的速度极慢

我有一个Lambda函数,每次执行时都需要从S3读取一个文件.
该文件非常小,大约200字节,S3桶位于美国标准区域,Lambda函数位于us-east-1区域(因此相同的区域).读取文件需要10到15秒,为什么这么慢?

谢谢.

编辑:一些代码

long start = System.nanoTime();
AmazonS3Client s3Client = new AmazonS3Client();
S3Object propertyFile = null;
try {
    propertyFile = s3Client.getObject(S3_BUCKET_NAME, S3_PROPERTY_FILE);
} catch (Exception e) {...}
try (InputStream in = propertyFile.getObjectContent()) {
    PROPERTIES.load(in);
} catch (Exception e) {...}
LOGGER.debug("S3 access " + (System.nanoTime() - start));
Run Code Online (Sandbox Code Playgroud)

编辑#2:布鲁克斯的建议之后我做了

AmazonS3Client s3Client = new AmazonS3Client(new InstanceProfileCredentialsProvider());
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

Unable to load credentials from Amazon EC2 metadata service
Run Code Online (Sandbox Code Playgroud)

编辑#3:
分配给Lambda函数的内存为256MB,当我分配1024MB时,需要3-4秒,这仍然太慢(从我的计算机本地测试时需要大约1-2秒).

amazon-s3 amazon-web-services aws-lambda

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

AWS Lambda和不准确的内存分配

我意识到我需要为AWS Lambda函数分配比所需内存更多的内存,否则我得到:

{
"errorMessage": "Metaspace",
"errorType": "java.lang.OutOfMemoryError"
}
Run Code Online (Sandbox Code Playgroud)

例如,我有一个分配了128MB的Lambda函数,它会随着该错误一直崩溃,而在控制台中它会显示"最大内存使用56 MB".
然后我分配256MB,它不再崩溃,但它总是给我一个75到85MB之间的"最大内存使用".

怎么会?谢谢.

amazon-web-services aws-lambda

13
推荐指数
1
解决办法
2418
查看次数

Spring应用程序中的可选环境变量

在我的Spring Boot应用程序中,application.properties我有这个定义:

someProp=${SOME_ENV_VARIABLE}
Run Code Online (Sandbox Code Playgroud)

但这是一个仅在某些环境中设置的可选值,我这样使用它

@Value("${someProp:#{null}}")
private String someProp;
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,当env时我得到了这个错误.var不存在
Could not resolve placeholder 'SOME_ENV_VARIABLE' in string value "${SOME_ENV_VARIABLE}"
我期待Spring只是设置一个空值,如果没有找到任何PropertySource.

如何使它可选?

spring environment-variables spring-boot

13
推荐指数
2
解决办法
8048
查看次数

MULTI DELETE中的未知表

这个查询在MySQL 5.1.57中给出了一个错误,但在5.1.53中工作:


    DELETE f
    FROM table1 AS f
    JOIN table2 AS dsy
    JOIN table3 AS ds
    JOIN table4 AS dp
    JOIN table5 AS dg
    WHERE
    dsy.f1 = f.f1
    AND ds.f2 = f.f2
    AND dp.f3 = f.f3
    AND dg.f4 = f.f4
    AND dsy.school_year = 2011
    AND ds.id = 29620
    AND dp.id = 14120
    AND dg.grade_level = 5;

Run Code Online (Sandbox Code Playgroud)

错误是:MULTI DELETE中的未知表'f'

谢谢!

编辑:实际上这个查询工作,事情是我使用模式名称来声明我的表像schema.table1(我删除它在这里发布一个更清晰的查询),其模式名称,它打破...

mysql

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

集成测试期间与 Weld 的依赖关系不满足

我能够部署一个与 Weld 配合良好的 RESTEasy 应用程序(这意味着我的 CDI 可以工作),但我在集成测试中遇到了一些问题。我收到此错误:

org.jboss.weld.exceptions.DeploymentException:
WELD-001408: Unsatisfied dependencies for type SomeService with qualifiers @Default
Run Code Online (Sandbox Code Playgroud)

测试时:

@RunWith(WeldJUnit4Runner.class)
public class SomeServiceIT {

    @Inject
    private SomeService service;

    @Test
    public void test() {
        System.out.println(service);
    }
}
Run Code Online (Sandbox Code Playgroud)

我日志中的最后一条消息是

DEBUG::WELD-000100: Weld initialized. Validating beans
Run Code Online (Sandbox Code Playgroud)

src/test/resources/META-INF/beans.xml 的内容:

<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
    version="1.1" bean-discovery-mode="all">
</beans>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我尝试了该cdi-unit库并且它可以工作,但我需要使用我自己的库WeldJUnit4Runner,目前是:

public class WeldJUnit4Runner extends BlockJUnit4ClassRunner {

    private final Weld weld;
    private final WeldContainer container;

    public WeldJUnit4Runner(Class<?> klass) throws InitializationError {
        super(klass);
        this.weld = new …
Run Code Online (Sandbox Code Playgroud)

testing integration-testing cdi jboss-weld weld

7
推荐指数
1
解决办法
1785
查看次数

MySQL:尝试在时间戳中插入值会引发错误

我有一个关于这一列的表:

last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

看起来我无法插入带有自定义时间戳的行,我收到此错误:

日期时间值不正确:第11行第'last_modified'列的'1145868501'

我试图用来自另一个表的数据填充此表,其他表只有一个创建时间字段,这是一个DATETIME所以我使用UNIX_TIMESTAMP(creation_time)来填充时间戳.

我认为带有"DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"的timestamp列阻止我插入自己的东西,对吗?如果是,官方文件在哪里,以及最佳解决方案是什么?首先创建一个简单的时间戳,然后在插入数据后更改表格?

谢谢!

编辑:因为人们建议我不要使用UNIX_TIMESTAMP,我不得不说我不想在开头使用它,但是我遇到了这样的错误:日期时间值不正确:'2010-03-28 02:15 :51'列'last_modified'所以我认为我必须插入一个"真正的"时间戳...

mysql timestamp

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

使用 Java 将数据附加到 gzip 文件

我有一个可能很大(> 4GB)的日志文件,所以我正在考虑“动态压缩它”,这意味着我想直接在 gzip 文件的末尾插入文本(我想创建自己的文件附加程序用于登录)。是否可以将内容附加到现有的 gzip 文件中?看起来唯一的方法是用 GZIPInputStream 打开现有的,读取它并用 GZIPOutputStream 将数据写入一个新文件中,然后在新文件的末尾附加新的东西,然后我想删除旧的 gzip 并重命名旧名称的新名称...

我错了吗?更好的想法?

谢谢!

java gzip append

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