小编Ste*_*eod的帖子

我如何迭代NSArray?

我正在寻找标准习语来迭代NSArray.我的代码需要适合OS X 10.4+.

iteration cocoa enumeration objective-c nsarray

446
推荐指数
6
解决办法
33万
查看次数

如何从Java中打印XML?

我有一个包含XML的Java字符串,没有换行符或缩进.我想把它变成一个格式很好的XML的字符串.我该怎么做呢?

String unformattedXml = "<tag><nested>hello</nested></tag>";
String formattedXml = new [UnknownClass]().format(unformattedXml);
Run Code Online (Sandbox Code Playgroud)

注意:我的输入是一个字符串.我的输出是一个字符串.

(基本)模拟结果:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <tag>
    <nested>hello</nested>
  </tag>
</root>
Run Code Online (Sandbox Code Playgroud)

java xml pretty-print

432
推荐指数
20
解决办法
43万
查看次数

如何对GUI进行单元测试?

我的代码中的计算经过了充分测试,但由于GUI代码太多,我的整体代码覆盖率低于我的预期.有关单元测试GUI代码的指南吗?它甚至有意义吗?

例如,我的应用程序中有图表.我无法弄清楚如何自动化测试图形.需要人眼AFAIK来检查图表是否正确.

(我正在使用Java Swing)

unit-testing code-coverage

151
推荐指数
7
解决办法
6万
查看次数

如何在Java中安全地编码字符串以用作文件名?

我从外部进程收到一个字符串.我想使用该String来创建文件名,然后写入该文件.这是我的代码片段:

    String s = ... // comes from external source
    File currentFile = new File(System.getProperty("user.home"), s);
    PrintWriter currentWriter = new PrintWriter(currentFile);
Run Code Online (Sandbox Code Playgroud)

如果s包含无效字符,例如基于Unix的OS中的"/",则会(正确地)抛出java.io.FileNotFoundException.

如何安全地编码String以便它可以用作文件名?

编辑:我希望的是一个API调用,它为我做这个.

我可以做这个:

    String s = ... // comes from external source
    File currentFile = new File(System.getProperty("user.home"), URLEncoder.encode(s, "UTF-8"));
    PrintWriter currentWriter = new PrintWriter(currentFile);
Run Code Online (Sandbox Code Playgroud)

但我不确定URLEncoder是否可靠用于此目的.

java string encoding file

108
推荐指数
5
解决办法
7万
查看次数

如何检查Java中的两个数字相乘是否会导致溢出?

我想处理两个数字相乘导致溢出的特殊情况.代码看起来像这样:

int a = 20;
long b = 30;

// if a or b are big enough, this result will silently overflow
long c = a * b;
Run Code Online (Sandbox Code Playgroud)

这是一个简化版本.在真正的程序中,ab在运行时在其他地方采购.我想要实现的是这样的:

long c;
if (a * b will overflow) {
    c = Long.MAX_VALUE;
} else {
    c = a * b;
}
Run Code Online (Sandbox Code Playgroud)

您如何建议我最好编码?

更新:a而且b总是在我的场景下非负.

java math overflow long-integer

94
推荐指数
6
解决办法
3万
查看次数

如何合并两个MySQL表?

如何合并两个具有相同结构的MySQL表?

这两个表的主键会发生冲突,所以我考虑到了这一点.

mysql sql merge

91
推荐指数
5
解决办法
17万
查看次数

使用Joda Date&Time API来解析多种格式

我正在使用Joda解析包含日期/时间的第三方日志文件.日期/时间是两种不同格式之一,具体取决于我正在解析的日志文件的年龄.

目前我的代码如下:

try {
    return DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss").parseDateTime(datePart);
} catch (IllegalArgumentException e) {
    return DateTimeFormat.forPattern("E, MMM dd, yyyy HH:mm").parseDateTime(datePart);
}
Run Code Online (Sandbox Code Playgroud)

这有效但违反了Joshua Bloch关于Effective Java 2nd Edition的建议(第57项:仅在特殊条件下使用例外).它还使得很难确定是否由于日志文件中的日期/时间搞乱而发生IllegalArgumentException.

你能否提出一个不会滥用例外的更好的方法?

java parsing exception jodatime

74
推荐指数
3
解决办法
3万
查看次数

如何在一个表中查找在另一个表中没有对应行的行

我在两个表之间有1:1的关系.我想找到表A中表B中没有相应行的所有行.我使用此查询:

SELECT id 
  FROM tableA 
 WHERE id NOT IN (SELECT id 
                    FROM tableB) 
ORDER BY id desc
Run Code Online (Sandbox Code Playgroud)

id是两个表中的主键.除了主键索引,我还有一个tableA(id desc)的索引.

使用H2(Java嵌入式数据库),这会导致tableB的全表扫描.我想避免全表扫描.

如何重写此查询以快速运行?我应该用什么指数?

sql optimization h2

66
推荐指数
4
解决办法
9万
查看次数

如何以编程方式创建Cocoa窗口?

我的Cocoa应用程序需要一些动态生成的小窗口.如何在运行时以编程方式创建Cocoa窗口?

到目前为止,这是我的非工作尝试.我看不到任何结果.

NSRect frame = NSMakeRect(0, 0, 200, 200);
NSUInteger styleMask =    NSBorderlessWindowMask;
NSRect rect = [NSWindow contentRectForFrameRect:frame styleMask:styleMask];

NSWindow * window =  [[NSWindow alloc] initWithContentRect:rect styleMask:styleMask backing: NSBackingStoreRetained    defer:false];
[window setBackgroundColor:[NSColor blueColor]];
[window display];
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nswindow

62
推荐指数
4
解决办法
5万
查看次数

如何使用Joda Time解析包含时区的日期

这段代码始终将日期解析为当前时区,而不是解析为正在解析的字符串中的时区.

final DateTimeFormatter df = DateTimeFormat
        .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df
        .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)

它输出:

dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)

而我期望:

dateTime = 2009-08-24T04:36:46.000+10:00
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

java timezone datetime jodatime

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