小编Ror*_*ick的帖子

ResultSet:按索引检索列值与按标签检索

使用JDBC时,我经常遇到类似的结构

ResultSet rs = ps.executeQuery();
while (rs.next()) {
    int id = rs.getInt(1);
    // Some other actions
}
Run Code Online (Sandbox Code Playgroud)

我问自己(以及代码的作者)为什么不使用标签来检索列值:

int id = rs.getInt("CUSTOMER_ID");
Run Code Online (Sandbox Code Playgroud)

我听过的最好的解释是关于表现的.但实际上,它是否会使处理速度极快?我不相信,尽管我从未进行过测量.即使按标签检索会慢一点,但在我看来,它提供了更好的可读性和灵活性.
那么有人可以给我很好的解释,避免通过列索引而不是列标签来检索列值吗?这两种方法的优点和缺点是什么(可能是关于某些DBMS)?

java optimization maintenance jdbc resultset

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

任何Haskell在线竞赛或问题集?

您是否知道在Haskell中接受解决方案的任何在线问题集或竞赛?我只知道El Judge,但遗憾的是它与ghc有一些问题,因此任何Haskell问题都会因"内存限制"分辨率而被拒绝.

haskell

24
推荐指数
5
解决办法
4151
查看次数

有谁知道IntelliJ Idea的一些很酷的PL/SQL插件?

我已经从官方IntelliJ存储库中评估了一些插件,但它们似乎都没有提供更多基本语法高亮显示.甚至突出显示也是有限的.例如,Database Navigator不突出显示IF.有适当的突出显示会很棒.如果它具有自动完成功能并提供文件结构视图,我会非常高兴.当我需要向数据库发布一些小东西或从中查询内容时,我使用SQL Query Plugin.当我需要制作更复杂的东西时,或者当我需要修改PL/SQL时,我使用PL/SQL Developer.但是大多数时候我需要浏览Java,JavaScript和PL/SQL代码.不幸的是,SQL Query Plugin对PL/SQL Developer没有帮助.

plugins plsql intellij-idea

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

ActionScript 3中无类型变量的基本原理是什么?

我开始学习Flex和ActionScript并遇到了有趣的声明:无类型变量.那是:

var x:*;
Run Code Online (Sandbox Code Playgroud)

要不就

var x;
Run Code Online (Sandbox Code Playgroud)

我发现他们可以持有undefined价值观.Object类型的变量不能.但我不明白他们的目的.我不认为有人经常需要区分undefinednull重视 - 这些变量的可能性.虽然在ActionScript 2中似乎同样可能没有无类型变量.变量x被视为Object语句var x;,Object变量可以带来undefined价值.

那么这些"真正无类型"变量的基本原理是什么?为什么他们被引入语言?

variables actionscript-3

5
推荐指数
0
解决办法
945
查看次数

如何改进我们的构建和部署过程?

我们的构建/部署过程非常繁琐,手动充足且容易出错.你能提出改进建议吗?

让我来描述一下我们的部署策略和构建过程.我们正在开发名为Application Server(简称AS)的系统.它本质上是托管在JBoss Web服务器上的基于servlet的Web应用程序.AS可以安装在两个"环境"中.每个环境都是一个包含webapp代码的目录.此目录位于网络存储上.存储安装到安装了JBoss实例的多个生产服务器.目录链接到JBoss的webapps目录.因此,所有JBoss实例都使用相同的环境代码.JBoss的配置与环境分开,并且基于每个实例进行更新.

所以我们有两种类型的补丁:webapp补丁(针对不同的环境)和配置补丁(针对每个实例配置)

补丁是一个可执行文件.实际上它是带有嵌入式二进制rpm包的bash脚本.安装非常简单:您只需执行文件并可选择回答一些问题.重要的一点是补丁不是一个整体系统 - 它只包含一些带有修改和/或修改配置文件的脚本的类.将类复制到WEB-INF/classes中(AS部署为展开的目录).

我们构建这些方案的方式是:

  1. 我们采用一些以前的补丁文件并复制它们.
  2. 我们修改补丁的内容.其中最重要的部分是RPM规范.我们更改补丁名称,更改其先决条件rpm包并记下用于备份,复制和修改文件的实际bash命令.这是最讨厌的部分之一,因为我们并不总能获得实际的变更集.对于跨多个变更请求和提交的新复杂功能尤其如此.此外,为变更集编写这些命令很繁琐且容易出错.
  3. 对于webapp补丁,我们还修改了其他环境的规范.除了rpm包名外,它们通常是相同的.
  4. 我们将所有与rpm相关的文件放到VCS中
  5. 我们通过添加几个用于构建新补丁的目标来修改build.xml.修改通过复制和编辑完成.
  6. 我们通过复制项目和更改其中的ant目标来修改CruiseControl的配置
  7. 最后,我们建立了一个系统

此外,我对有关补丁准备和部署实践的任何参考感兴趣,最好是对Java应用程序.我没有成功用Google搜索.

java deployment patch build

5
推荐指数
1
解决办法
2174
查看次数

光标在突出显示的文本中丢失 - Vim

当文本在vim中突出显示时,例如在编写HTML文档时使用'em'标记,我发现在某些颜色方案中,光标变得不可见,从而难以正确放置结束标记.有没有办法让光标在突出显示的文本上改变颜色?

vi macos vim

5
推荐指数
1
解决办法
1614
查看次数

日志语句阻止重构:如何帮助解决这个问题?

我有一些相对较大的遗留方法,我想重构.它符合Michael Feathers的"有效使用遗留代码"中指定的"项目符号方法"类型,因此可以以相当直接的方式分成几个顺序方法.但是它的每个连续步骤都输出一些日志消息,并且形成该消息需要比步骤本身更多的数据.因此,当我尝试提取方法时,我最终得到了具有6个参数的方法.如果我删除了那些日志语句,我将只有一个参数的方法.所以我实际上无法重构任何东西.而且我不允许删除日志语句.

方法的一部分看起来像这样:

// much of code before
Device device = getDevice(deviceID);
boolean isFirstRegistration = false;

if (device == null) {
    /*logger.trace(
            "DeviceId", deviceID,
            "ADM", adminCode,
            "Phone", clientData.getPhone()
    );
    logger.info("First registration of the device. Device ID - " + deviceID);*/
    isFirstRegistration = true;
} else {
    /*logger.trace(
            "DeviceId", deviceID,
            "ADM", adminCode,
            "Phone", clientData.getPhone()
    );
    logger.info("Device ID - " + deviceID
            + " has been previously registered by adminCode: "
            + device.getAdminCode());*/
}
// much of code after
Run Code Online (Sandbox Code Playgroud)

如您所见,注释掉了日志记录语句.在这种情况下,我可以提取方法boolean isFirstRegistration(String …

legacy logging refactoring

3
推荐指数
1
解决办法
245
查看次数

C - EOF中的EndOfFile

你用什么来结束程序,-1,不起作用:

#include <stdio.h>
//copy input to output
main() {
    char c;
    c = getchar();
    while(c != EOF) {
        putchar(c);
        c = getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

c

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