问题列表 - 第15314页

字符串连接vs String Builder.性能

我有一种情况,我需要连接几个字符串,以形成一个类的ID.基本上我只是循环一个列表来获取对象的ToString值,然后连接它们.

foreach (MyObject o in myList)
  result += o.ToString();
Run Code Online (Sandbox Code Playgroud)

该列表预计不会有超过5个元素(虽然它可以但这是一个非常非常边缘的情况)并且通常会有1到3个元素,通常只有一个或两个元素.

什么会更多的性能,保持连接或使用StringBuilder?

StringBuilder bld = new StringBuilder()
foreach (MyObject o in myList)
  bld.Append(o.ToString());
Run Code Online (Sandbox Code Playgroud)

我不确定在最常见的情况下,创建StringBuilder是否会花费比标准串联更多的时间.

这是懒惰的,列表中的项目一旦创建就不会改变,因此在调用时id会被懒惰地构造一次.

作为旁注...我应该使用固定数组而不是List吗?如果我这样做,我会获得任何性能或内存改进吗?(列表仅用作IEnumerable)

问题的一般观点可能是,有多少字符串足以阻止连接并开始构建?

我是否应该费心去测试这种情况呢?

if (myList.Count > 4) 
  ConcatWithStringBuilder(myList);
Run Code Online (Sandbox Code Playgroud)

c# string performance

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

如何在将内容粘贴到Excel文件时从字符串中删除回车符

将Java代码生成的内容(或文本)粘贴到excel时出现问题.问题是我的Java代码生成一个包含多行的String,即包含换行符(\n).当我尝试复制此内容并将其粘贴到Excel文件中时,我得到一个带方框符号的多行文本.我开始知道Windows用于\r\n换行而不仅仅是\n.我试图替换我\n\r\n并粘贴生成的文本,但我在Excel文件中得到相同的方框.这是我的示例代码:

      String   myString = "a1\nb1";
      String   tmpString =myString.replace("\n","\r\n");
      System.out.println( "Original = " +"\""+myString+"\"");
      System.out.println( "Result   = " +"\""+tmpString+"\"");
Run Code Online (Sandbox Code Playgroud)

我用""来包装文本.当我尝试在Excel中粘贴tmpstring时,我得到了方框.如何删除单元格中多行的框?

java excel carriage-return

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

dojox.gfx文本和组节点的边界框

dojo中getBoundingBox()的文档说:

返回形状的边界框.文本形状是基于点的对象,因此它不定义边界框.

我不明白.Web的矢量图形的任何理智的实现包括文本对象的边界框(raphaelJS和jQuery SVG)!在这里,"基于点的对象"是什么意思?

我没有找到Group对象的边界框的引用,但是在使用最新的Dojo版本时,也getBoundingbox返回null了Groups的组

我自己可以很容易地为矩形做边界框,但是我需要边界框的唯一真正有问题的形状是Group和Text.

我结束了hotpatching dojo,如:

dojox.gfx.Text.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
dojox.gfx.Group.prototype.getBoundingBox = function() { return this.rawNode.getBBox();});
Run Code Online (Sandbox Code Playgroud)

哪个当然只适用于SVG输出前端.

但我想知道,我错过了什么吗?有没有更好的方法呢?

dojo svg vector-graphics dojox.gfx

65
推荐指数
1
解决办法
2256
查看次数

我可以通过C#以编程方式使用T4吗?

我正在编写生成C#代码的软件.大多数情况下,我使用StringTemplate和StringBuilder.

有没有办法直接从我的代码中使用T4模板?

c# t4 template-engine

16
推荐指数
2
解决办法
8186
查看次数

从多模块pom构建单个模块

有可能吗?

环境:多模块pom由3个模块组成:mm1,mm2,mm3.模块mm2具有mm1作为依赖性.可以构建父pom而不会出现任何错误.

问题:是否可以构建单个模块mm2(即,从mm2基本目录运行maven)而无需将mm1安装到本地存储库中?

谢谢.

maven

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

C#中的双重问题#

我经常发现自己编写类似的代码,如下例所示:

if (object["Object Name"] != null) {
    if (object["Object Name"] == "Some Value") {
        // Do Statement A
    } else {
        // Do Statement B
    }
} else {
    // Do Statement B
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我检查一个对象是否为null然后我可以检查它的实际内容.

"语句B"始终相同,在我的情况下通常是SQL语句.

必须有更好的解决方法吗?

谢谢
Stephen

c# if-statement

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

C#:DateTime.Now如何只是一个属性?

我试图了解Now属性的实现是如何DateTime工作的.我的背景主要是Python和Haskell,所以我不能理解Now属性如何根据你何时使用它来"返回"不同的值.

我的直觉说Now应该真的是一个函数,它执行一些低级魔法,然后是一些高级魔法,然后返回一个具有正确时间的DateTime对象.

c# datetime

0
推荐指数
1
解决办法
329
查看次数

我可以使用可变数量的通用参数吗?

在我的项目中,我有以下三个接口,这些接口由管理合并具有不同结构的各种业务对象的类实现.

public interface IMerger<TSource, TDestination>
{
    TDestination Merge(TSource source, TDestination destination);
}

public interface ITwoWayMerger<TSource1, TSource2, TDestination>
{
    TDestination Merge(TSource1 source1, TSource2 source2, TDestination destination);
}

public interface IThreeWayMerger<TSource1, TSource2, TSource3, TDestination>
{
    TDestination Merge(TSource1 source1, TSource2 source2, TSource3 source3, TDestination destination);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但我宁愿有一个IMerger接口指定可变数量的TSource参数,如下所示(下面的例子使用params;我知道这不是有效的C#):

public interface IMerger<params TSources, TDestination>
{
    TDestination Merge(params TSource sources, TDestination destination);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这一点,或功能相同的东西?

.net c# generics parameters

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

Tomcat的CLASSPATH与Java不同,它不包含".".我该如何改变它?

我花了好几个小时试图弄清楚为什么我得到了这个java.lang.NoClassDefFoundError,并且我把原因缩小到了Tomcat的类路径.

我使用下面的代码来查看路径变量的含义:

out.println("Classpath: '" + System.getProperty( "java.class.path" ) + "'" );
out.println("Ext dirs: '" + System.getProperty( "java.ext.dirs" ) + "'" );
out.println("Library path: '" + System.getProperty( "java.library.path" ) + "'" );
out.println("Path separator: '" + System.getProperty( "path.separator" ) + "'" );
Run Code Online (Sandbox Code Playgroud)

输出是:

Classpath: ':/usr/local/tomcat/bin/bootstrap.jar'
Ext dirs: '/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/ext:/usr/java/packages/lib/ext'
Library path: '/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386/server:/usr/lib/jvm/java-6-sun-1.6.0.16/jre/lib/i386:/usr/lib/jvm/java-6-sun-1.6.0.16/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib'
Path separator: ':'

如您所见,Classpath不以"."开头.因为它应该,我相信这就是为什么我的程序找不到我从webapp中的子目录导入的类.

为了查看类路径的设置位置,我做了grep -R bootstrap.jar /usr/local/tomcat/,并且反过来:( CLASSPATH="$CLASSPATH":"$CATALINA_HOME"/bin/bootstrap.jar在文件中/usr/local/tomcat/bin/catalina.sh)

这让我相信由于某些原因,$ CLASSPATH在这里是空的.但是,echo $CLASSPATH成功返回.:/usr/lib/jvm/java-6-sun/bin:/usr/local/tomcat/lib/servlet-api.jar

任何人都可以帮助解决这个问题吗?


编辑:我所有的servlet文件都在WEB-INF/classes/controllers/,我试图加载的库是子目录中的类文件.例如,如果ClassName.class在WEB-INF/classes/controllers/packagename /目录中,我添加package …

java tomcat classpath noclassdeffounderror

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

从字节流中解析可变长度描述符并对其类型进行操作

我正在读取包含一系列可变长度描述符的字节流,我在代码中将其表示为各种结构/类.每个描述符都有一个与所有其他描述符相同的固定长度头,用于标识其类型.

是否有适当的模型或模式可以用来最好地解析和表示每个描述符,然后根据它的类型执行适当的操作?

streaming parsing structure header descriptor

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