小编dla*_*lin的帖子

方法可以做成静态,但应该吗?

Resharper喜欢指出每个asp.net页面可以静态化的多个函数.如果我让它们静止,对我有帮助吗?我应该将它们设置为静态并将它们移动到实用程序类吗?

.net c# resharper refactoring static-methods

356
推荐指数
10
解决办法
6万
查看次数

349
推荐指数
5
解决办法
43万
查看次数

推荐用于标记或标记的SQL数据库设计

我听说过几种实现标记的方法; 使用TagID和ItemID之间的映射表(对我有意义,但它是否可以缩放?),向ItemID添加固定数量的可能TagID列(似乎是一个坏主意),将标记保留在逗号分隔的文本列中(声音疯了,但可以工作).我甚至听过有人推荐稀疏矩阵,但那么标签名称如何优雅地增长?

我错过了标签的最佳做法吗?

sql tags tagging database-design data-modeling

274
推荐指数
5
解决办法
8万
查看次数

初始化C#自动属性

我习惯写这样的课程:

public class foo {
  private string mBar = "bar";
  public string Bar {
    get { return mBar; }
    set { mBar = value; }
  }
  //... other methods, no constructor ...
}
Run Code Online (Sandbox Code Playgroud)

将Bar转换为自动属性看起来既方便又简洁,但是如何在不添加构造函数并将初始化放在那里的情况下保留初始化?

public class foo2theRevengeOfFoo {
  //private string mBar = "bar";
  public string Bar { get; set; }
  //... other methods, no constructor ...
  //behavior has changed.
}
Run Code Online (Sandbox Code Playgroud)

您可以看到添加构造函数并不符合我应该从自动属性中获得的省力.

这样的事情对我来说更有意义:

public string Bar { get; set; } = "bar";
Run Code Online (Sandbox Code Playgroud)

c# initialization automatic-properties

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

在使用之前如何检查我是否有Perl模块?

我有以下Perl代码,它依赖于Term::ReadKey获取终端宽度; 我的NetBSD版本缺少此模块,因此我希望在模块丢失时将终端的宽度默认为80.

我无法弄清楚如何有条件地使用模块,提前知道它是否可用.我当前的实现只是退出一条消息,说它无法找到Term::ReadKey它是否缺席.

#/usr/pkg/bin/perl -w
# Try loading Term::ReadKey
use Term::ReadKey;
my ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
my @p=(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97);
my $plen=$#p+1;
printf("num |".("%".int(($wchar-5)/$plen)."d") x $plen."\n",@p);
Run Code Online (Sandbox Code Playgroud)

我在NetBSD上使用Perl 5.8.7,在CygWin上使用5.8.8你能帮我更有效地将它实现到我的脚本中吗?

perl module

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

如何在iPhone 3.0操作系统中修复NSURLErrorDomain错误-999

我正在尝试更新我的iPhone应用程序以使用OS 3.0.我有一个显示页面正常的UIWebView.但是,当我单击一个链接时,它会调用我的委托给didFailLoadWithError,错误是操作无法完成.(NSURLErrorDomain错误-999.)我确认这仍然适用于OS 2.2.1,因此它在3.0中发生了变化.

有任何想法吗?

iphone iphone-sdk-3.0

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

JavaScript中的程序口音减少(又称文本规范化或不合理)

我需要将2个字符串比较为相等,如下所示:

吕贝克==吕贝克

在JavaScript中.

为什么?好吧,我有一个自动完成字段,使用Lucene进行Java服务,其中地名自然存储(如Lübeck),但也被索引为规范化文本,

import sun.text.Normalizer;
oDoc.setNameLC = Normalizer.normalize(oLocName, Normalizer.DECOMP, 0)
    .toLowerCase().replaceAll("[^\\p{ASCII}]","");
Run Code Online (Sandbox Code Playgroud)

这样一来,一个不知道输入"Mèxico"的人可以输入"墨西哥"并得到一个返回"Mèxico"的比赛(在很多其他可能的点击中,如"CaféMèxico,Dubai,UAE").

现在问题是我没有能力更改服务以在服务器端进行任何突出显示,因此我在客户端JavaScript方面突出显示如下内容:

return result.replace( input.replace(/[aeiou]/g,"."), "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)

这有点花哨,因为我在输入中转义了特殊的正则表达式字符.这对于点击开头的简单单词匹配很好,但是如果你突然希望支持像"london cafe"这样的多字匹配,它真的会崩溃:

input = input.strip().toLowerCase(); //fyi prototype's strip is like trim
re = new RegEx(input.replace(/[aeiou]/g,".").replace(/\s+/g,"|"),"gi");
return result.replace(re, "<b>$1</b>");
Run Code Online (Sandbox Code Playgroud)

这不适用于说"伦敦ca"(正在输入伦敦咖啡馆),因为它会将"Jack London Cabin,Dawson City,Canada"标记为:"Ja<b>ck</b> <b>London</b> <b>ca</b>bin, Dawson <b>Ci</b>ty, <b>Ca<b/>nada"[注意"ck"和"Ci"特别]

因此,我有点像寻找一些不那么疯狂的东西:

input = input.strip().toLowerCase();
input = input.replace(/a/g,"[ÀàÁáÂâÃãÄäÅ寿??????]");
input = input.replace(/e/g,"[ÈèÉéÊêËë??????????]");
// ditto for i, o, u, y, c, n, maybe also d, g, h, j, k, l, r, s, t, w, z 
re …
Run Code Online (Sandbox Code Playgroud)

javascript unicode normalization accent-insensitive text-normalization

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

什么是浮点加法与浮点加法的相对速度

十年或两年前,编写数字代码以避免使用乘法和除法并使用加法和减法是值得的.一个很好的例子是使用前向差异来评估多项式曲线,而不是直接计算多项式.

是否仍然如此,或者现代计算机架构已经发展到*,/不再比+慢很多倍, - ?

具体来说,我对在现代典型x86芯片上运行的编译C/C++代码感兴趣,这些代码具有广泛的板载浮点硬件,而不是一个小型微软试图在软件中进行FP.我意识到流水线和其他架构增强功能排除了特定的循环计数,但我仍然希望获得有用的直觉.

floating-point x86 mips numerical-computing flops

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

Sql Server:如何在WHERE子句中使用像MAX这样的聚合函数

我想获得此记录的最大值.请帮我:

SELECT rest.field1 
    FROM mastertable AS m
    INNER JOIN  (
        SELECT t1.field1 field1, 
               t2.field2
            FROM table1 AS T1 
            INNER JOIN table2 AS t2 ON t2.field = t1.field 
            WHERE t1.field3=MAX(t1.field3)
        --                  ^^^^^^^^^^^^^^  Help me here.
    ) AS rest ON rest.field1 = m.field
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server aggregate sql-server-2005

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

为什么String的格式(Object ... args)被定义为静态方法?

我想知道为什么Java 5及以上版本在String类中使用静态方法提供了printf样式的格式化程序,如下所示:

public static String format(String format, Object... args)
Run Code Online (Sandbox Code Playgroud)

代替

public String format(Object... args)
Run Code Online (Sandbox Code Playgroud)

这样我们就可以写出"%02d".format(5)05代替String.format("%02d", 5).

我想如果我可以修改String类,我可以添加:

public String format(Object... args) {
    return format(this, args)
}
Run Code Online (Sandbox Code Playgroud)

得到相同的结果.

我发现在C#中,还使用静态方法而不是实例方法.

我想知道为什么他们决定这样做,但我没有得到解释.实例方法trimsubstring返回一个新的string实例,所以他们应该做同样的事情format.

此外,该DateFormat课程还使用了这个:

public final String format(Date date)
Run Code Online (Sandbox Code Playgroud)

用于格式化日期.因此,如果我们将DateFormat的实例视为格式化程序,则String的实例也可以用作格式化程序.

有任何想法吗?

java string format printf

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