小编pbh*_*101的帖子

何时在C#中使用静态类

以下是MSDN在何时使用静态类时要说的内容:

static class CompanyInfo
{
    public static string GetCompanyName() { return "CompanyName"; }
    public static string GetCompanyAddress() { return "CompanyAddress"; }
    //...
}
Run Code Online (Sandbox Code Playgroud)

使用静态类作为与特定对象无关的方法的组织单位.此外,静态类可以使您的实现更简单,更快,因为您不必创建对象来调用其方法.以有意义的方式组织类中的方法很有用,例如System命名空间中Math类的方法.

对我来说,这个例子似乎并没有涵盖静态类的很多可能的使用场景.在过去,我已经将静态类用于相关函数的无状态套件,但这就是它.那么,在什么情况下应该(而且不应该)将一个类声明为静态?

c# static class

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

引导仍然需要外部支持

我听说过引导一种语言的想法,就是为这种语言编写一个编译器/解释器.我想知道如何实现这一点,并且看了一下,看到有人说它只能通过其中任何一个来完成

  • 用不同的语言编写初始编译器.
  • 在Assembly中手动编写初始编译器,这似乎是第一个特例

对我来说,这些似乎都不是真正引导语言,因为它们都需要外部支持.有没有办法用自己的语言编写编译器?

compiler-construction bootstrapping

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

使用Bash在Linux中设置环境变量

tcsh,我有以下脚本工作:

#!/bin/tcsh
setenv X_ROOT /some/specified/path

setenv XDB    ${X_ROOT}/db
setenv PATH   ${X_ROOT}/bin:${PATH}

xrun -d xdb1 -i $1 > $2
Run Code Online (Sandbox Code Playgroud)

什么是tcsh setenvBash中的功能?

有直接模拟吗?环境变量用于查找可执行文件.

unix linux bash shell

70
推荐指数
5
解决办法
18万
查看次数

Enum.hashCode()背后的原因是什么?

类Enum中的方法hashCode()是final,定义为super.hashCode(),这意味着它根据实例的地址返回一个数字,该数字是来自程序员POV的随机数.

将其定义为例如ordinal() ^ getClass().getName().hashCode()跨不同JVM的确定性.它甚至可以更好地工作,因为最低有效位会"尽可能地改变",例如,对于包含多达16个元素的枚举和大小为16的HashMap,肯定没有碰撞(当然,使用EnumMap更好,但有时不可能,例如没有ConcurrentEnumMap).根据目前的定义,你没有这样的保证,对吗?

答案摘要

使用Object.hashCode()比较如上所述的更好的hashCode,如下所示:

  • PROS
    • 简单
  • CONTRAS
    • 速度
    • 更多冲突(对于任何大小的HashMap)
    • 非确定性,传播到其他对象,使其无法使用
      • 确定性模拟
      • ETag计算
      • 根据例如HashSet迭代顺序搜寻错误

我个人更喜欢更好的hashCode,但恕我直言,没有理由权重,可能除了速度.

UPDATE

我对速度感到好奇并写了一个令人惊讶的结果基准.对于每个类的单个字段的价格,您可以使用确定性哈希码,其速度快四倍.将哈希码存储在每个字段中会更快,尽管可以忽略不计.

标准哈希码不快得多的原因是它不能成为对象的地址,因为对象被GC移动了.

更新2

一般来说,表演会有一些奇怪的事情发生hashCode.当我理解它们时,仍然存在未解决的问题,为什么System.identityHashCode(从对象标题读取)比访问普通对象字段慢.

java hash enums

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

单元测试数据库

去年夏天,我开发了一个基本的ASP.NET/SQL Server CRUD应用程序,单元测试是其中一个要求.当我尝试对数据库进行测试时遇到了一些麻烦.根据我的理解,单元测试应该是:

  • 无国籍
  • 相互独立
  • 可重复的,具有相同的结果,即没有持久的变化

在开发数据库时,这些要求似乎彼此不一致.例如,我无法在不确定要插入的行的情况下测试Insert(),因此我需要先调用Delete().但是,如果他们还没有呢?然后我需要先调用Exists()函数.

我最终的解决方案涉及非常大的设置功能(yuck!)和一个空的测试用例,它将首先运行并指示设置运行没有问题.这是牺牲测试的独立性,同时保持他们的无国籍状态.

我找到的另一个解决方案是将函数调用包装在一个可以轻松回滚的事务中,比如Roy Osherove的XtUnit.这项工作,但它涉及另一个库,另一个依赖,并且对于手头的问题似乎有点太沉重的解决方案.

那么,在面对这种情况时,SO社区做了什么?


tgmdbm说:

您通常使用自己喜欢的自动单元测试框架来执行集成测试,这就是为什么有些人会感到困惑,但他们不遵循相同的规则.您可以参与许多课程的具体实施(因为它们已经过单元测试).您正在测试具体类如何与彼此以及与数据库交互.

因此,如果我正确地阅读此内容,则无法有效地对数据访问层进行单元测试.或者,数据访问层的"单元测试"是否涉及测试,例如,由类生成的SQL /命令,而不依赖于与数据库的实际交互?

database unit-testing xtunit transactions

32
推荐指数
3
解决办法
7952
查看次数

什么是选择器引擎?

我已经看到John Resig的快速新选择器引擎Sizzle出现在很多地方的消息,但我不知道选择器引擎是什么,也没有任何文章解释它是什么.我知道Resig是jQuery的创建者,而Sizzle是Javascript中的东西,但除此之外我不知道它是什么.那么,什么是选择器引擎?

谢谢!

javascript jquery glossary resig

29
推荐指数
4
解决办法
9156
查看次数

在PHP中生成唯一ID

我正在尝试在php中生成一个唯一的ID,以便将用户上传的内容存储在FS上而不会发生冲突.我正在使用php,目前这个小片段负责生成UID:

$id = tempnam (".", "");
unlink($id);
$id = substr($id, 2);
Run Code Online (Sandbox Code Playgroud)

这段代码很可怕:它在FS上创建一个临时文件并删除它,只保留生成的字符串的相关唯一部分.

有没有更好的方法来做到这一点,最好没有任何外部依赖?

非常感谢!

php uuid guid unique identifier

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

gdb无法运行"文件格式无法识别"的ELF 64位程序

我正在尝试使用GDB进行调试(以找到恼人的段错误).当我跑:

gdb ./filename
Run Code Online (Sandbox Code Playgroud)

从命令行,我收到以下错误:

This GDB was configured as "i686-pc-linux-
gnu"..."/path/exec": not in executable 
format: File format not recognized
Run Code Online (Sandbox Code Playgroud)

当我执行:

file /path/executable/
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

 ELF 64-bit LSB executable, AMD x86-64,
 version 1 (SYSV), for GNU/Linux 2.4.0, 
 dynamically linked (uses shared libs), not stripped
Run Code Online (Sandbox Code Playgroud)

我正在使用GDB 6.1,可执行文件是使用gcc版本3.4.6编译的.

在使用gdb方面,我有点失水,但据我所知,它应该在这个实例中工作.有什么想法会出错吗?

c debugging gcc gdb

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

替换for ... if数组迭代

我喜欢Python中的列表推导,因为它们简洁地表示了列表的转换.

但是,在其他语言中,我经常发现自己写的内容如下:

foreach (int x in intArray)
  if (x > 3) //generic condition on x
    x++ 
    //do other processing
Run Code Online (Sandbox Code Playgroud)

这个例子在C#中,我的印象是LINQ可以帮助解决这个问题,但是有一些常见的编程结构可以取代这个稍微不那么优雅的解决方案吗?也许我不考虑数据结构?

.net python arrays iteration loops

8
推荐指数
1
解决办法
556
查看次数

开始使用Picasa插件

有没有人知道如何开始为Google的Picasa编写插件?我喜欢它用于照片管理,但我对它如何变得更好有一些想法.

  • Riya-esque面部搜索:给出足够大的面孔和图片(人们往往会在个人的专辑(家人,朋友)中经常重复),我认为可以做一些半可行的版本.并且有13+演出/ 7年的照片,这将是非常好的搜索.
  • 上传到Facebook编辑: 有人已经做了一个非常好的版本
  • 实际上,上传到任何非Google财产.

我知道有一些API和一个Picasa2Flickr插件,我想知道是否有人看过这个主题的任何资源或有任何经验

api plugins picasa photo-management

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

解决最小值的不等式

我正在研究一个编程问题,它归结为一组方程和不等式:

x[0]*a[0] + x[1]*a[1] + ... x[n]*a[n] >= D
x[0]*b[0] + x[1]*b[1] + ... x[n]*b[n] =  C
Run Code Online (Sandbox Code Playgroud)

我想解决的价值X,这将使的绝对最低C,考虑到输入D和列表,并AB包括a[0 - n]b[0 - n ].

我目前在Python中正在解决这个问题,但问题一般是与语言无关.

澄清更新:系数x[0 - n]仅限于非负整数集.

python language-agnostic inequality equation linear-programming

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

如何在MySQL中声明多列PK

我试图创建一个表有两列,包括在MySQL中的主键,但我不能找出语法.我理解单列PK,但创建具有两列的主键的语法不同.

mysql sql database ddl

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

跨地图的通用键控:Map <K,V> Map <T,K>和Map <T,V>

我有一个函数,它返回两个输入映射之间的单侧交叉值:

Map<Key, Value> mergeMaps(Map aKeys<CompositeKey, Key>, 
         Map <CompositeKey, Value> aValues) {

    Map<Key, Value> myResult = Maps.newHashMap();
    for (CompositeKey myKey : aKeys.keySet()) {
        if (aValues.containsKey(myKey)) {
            myResult.put( aKeys.get(myKey), aValues.get(myKey));
        }
    }
    return myResult;
}
Run Code Online (Sandbox Code Playgroud)

不是传递映射组合,即

T->K, K->V ===> T->V
Run Code Online (Sandbox Code Playgroud)

而是转变

T->(K,V) ===> K->V
Run Code Online (Sandbox Code Playgroud)

在Java中是否有一种方法可以使这个函数具有通用性,使其签名如下?

Map<K, V> mergeMaps(Map aKeys<T, K>, Map <T, V> aValues)
Run Code Online (Sandbox Code Playgroud)

java generics collections maps

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