小编avg*_*tvs的帖子

在Java中使用带标签的休息是一种很好的做法吗?

我正盯着2001年的一些旧代码,并发现了这句话:

   else {
     do {
       int c = XMLDocumentFragmentScannerImpl.this.scanContent();
       if (c == 60) {
         XMLDocumentFragmentScannerImpl.this.fEntityScanner.scanChar();
         XMLDocumentFragmentScannerImpl.this.setScannerState(1);
         break label913;
       }
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这个,并在这里发现了带标签的断点:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

这基本上不起作用goto吗?使用它是否是好的做法?这让我感到不安.

java

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

平均正则表达式算法的时间复杂度是多少?

我不是新手使用正则表达式,我理解他们所基于的基本理论 - 有限状态机.

我不太擅长算法分析,也不理解正则表达式与基本线性搜索的比较.我问,因为从表面上看,它似乎是一个线性阵列搜索.(如果正则表达式很简单.)

我在哪里可以了解有关实现正则表达式引擎的更多信息?

regex algorithm complexity-theory

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

StringBuilder/StringBuffer与"+"运算符

我正在阅读" 更好,更快,更轻的Java "(由Bruce Tate和Justin Gehtland撰写)并且熟悉敏捷类型团队的可读性要求,例如Robert Martin在其清晰的编码书中所讨论的内容.在我现在的团队中,我被告知明确不使用+运算符,因为它在运行时创建了额外的(和不必要的)字符串对象.

但是这篇文章,写于04年,讨论了对象分配是关于10个机器指令的.(基本上免费)

它还讨论了GC如何帮助降低此环境中的成本.

什么是使用之间的实际性能的权衡+,StringBuilder还是StringBuffer?(就我而言,它StringBuffer仅限于Java 1.4.2.)

StringBuffer对我来说导致丑陋,不太可读的代码,正如Tate的书中的几个例子所示.而且StringBuffer是线程同步的,这似乎有它自己的成本是大于中使用了"危险" +操作.

思想/意见?

java performance readability

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

如何用Java实现枚举?

我现在才意识到他们使用Constants类的功能和实用性......但是我很想知道它们是如何实现的.它们似乎很像静态方法或静态常量,因为您只需导入"拥有"枚举的文件,您可以使用它来引用它们enumName.valueName.Javadocs在网上似乎暗示他们是一个class但似乎很奇怪,根据需要有一个"未命名"的课程.(至少在Java中......)

java enums

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

如何在Groovy中动态调用方法?

在运行时,我正在获取类的方法名列表,我想调用这些方法.我理解如何从这里完成第一部分:http: //docs.codehaus.org/display/GROOVY/JN3535-Reflection

GroovyObject.methods.each{ println it.name }
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到的信息是如何在我抓住它的名字后再调用一个方法.

我想要的是到达这里:

GroovyObject.methods.each{ GroovyObject.invokeMethod( it.name, argList) }
Run Code Online (Sandbox Code Playgroud)

我似乎找不到正确的语法.上面似乎假设我已经重载了GroovyObject类的默认invokeMethod,这不是我想要的方向.

groovy invoke dynamicmethod

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

在哪里可以找到列数据类型的Sql Server元数据?

我知道我可以通过以下方式访问列属性:

select * 
from sysobjects
Run Code Online (Sandbox Code Playgroud)

然而,我找不到的信息是关于从哪里获取列的类型和类型长度,即:in

FOO VARCHAR(80)
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到元数据表中类型声明的"VARCHAR(80)"部分?

我试着查看systypes表,但是它的xtype值与sysobjects表中的xtype值不匹配.

*我无权访问用于构建这些表的原始SQL,也没有任何管理员权限.

如果您熟悉DB2,我正在寻找等效的

select name,
       coltype,
       length,
  from sysibm.syscolumns
where tbname = 'FOO'
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server metadata sql-server-2005

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

C中的变量重用

我正在看的代码是这样的:

for (i = 0; i < linesToFree; ++i ){
    printf("Parsing line[%d]\n", i);

    memset( &line, 0x00, 65 );
    strcpy( line, lines[i] );

    //get Number of words:
    int numWords = 0;

    tok = strtok(line , " \t");
    while (tok != NULL) {
        ++numWords;
        printf("Number of words is:  %d\n", numWords);
        println(tok);

        tok = strtok(NULL, " \t");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题围绕着使用numWords.运行时系统是否重用此变量,或者int每次运行for循环时是否分配新变量?如果你想知道我为什么这么问,我是一个Java程序员,他想进入HPC,因此我想学习C.通常我知道你想避免像这样的代码,所以这个问题确实是探索性的.

我知道答案可能依赖于编译器......我正在寻找一个更深层次的解释.假设您选择的编译器.

c

8
推荐指数
2
解决办法
2853
查看次数

Java HttpSession对象的生命周期是什么?

显然,在某些时候,对象被创建并销毁/返回池.我对这些垃圾收集方式特别感兴趣.有没有办法控制这种行为?具体来说,是否会调用invalidate()标记这些对象进行收集?他们何时释放存储在其中的任何参考?

越详细越好.

java garbage-collection

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

字符串也是静态的:在方法中创建字符串

我知道在String创建a时的编译时,该String将是该特定签名的任何对象使用的字符串.

String s = "foo"; < - 任何其他相同的字符串将只是对此对象的引用.

这适用于在运行时方法期间创建的字符串吗?我有一些代码,其中一个对象包含一段字符串数据.原始代码就像

for(datum :data){
    String a = datum.getD();  //getD is not doing anything but returning a field

    StringBuffer toAppend = new StringBuffer(a).append(stuff).toString();

    someData = someObject.getMethod(a);
    //do stuff

}
Run Code Online (Sandbox Code Playgroud)

由于String已经创建了data,所以最好只调用datum.getD()而不是在循环的每次迭代中创建一个字符串.

除非有什么我想念的?

java string static

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

Grails迭代gsp与访问Map元素

完整上下文:我正在尝试使用grails应用程序处理多个文件.我将显示的代码来自后处理页面,它提供有关已处理文件的信息.

我最初的感觉是使用这样的代码:

    <table>
      <tr>
        <th>Parsed from Excel:</th>
        <th>Uploaded to DS:</th>
        <th>File Name:</th>
        <th>Size:</th>
      </tr>
      <tr>
      <g:each in="${fileContents}" var="item">
            <td>${item}</td>
      </g:each>
        <%-- 
        <td>${fileContents.ExcelRows?.encodeAsHTML()}</td>
        <td>${fileContents.policies?.encodeAsHTML()}</td>
        <td>${fileContents.originalFileName?.encodeAsHTML()}</td>
        <td>${fileContents.Size?.encodeAsHTML()}</td>
        --%>
      </tr>
    </table>
Run Code Online (Sandbox Code Playgroud)

现在,我不明白为什么<g:each循环中显示的内容总是报告,key=value例如ExcelRows=14我在一个输出案例中收到的内容.

当我切换注释(注意使用的<%--标签)时,它完全按预期工作.从我的" ExcelRows"栏目中,我得到的只是"14".我认为<g:each循环应该做同样的事情有什么问题?直观地说,它归结为For each item in fileContents display item.

我的控制器代码:

def processFile = {
        def uploadedFile = request.getFile('excelFile')
Run Code Online (Sandbox Code Playgroud)

//...snipped

        def fileContents = [
            ExcelRows:"${ods.numberOfRows}",
            policies:"${ods.numberOfPolicies}",
            originalFileName: "${ods.originalFilename}", 
            Size:"${ods.size}"
            ]

        [fileContents:fileContents]
    }
Run Code Online (Sandbox Code Playgroud)

grails gsp

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