小编Tim*_*m B的帖子

C#中泛型参数的空或默认比较

我有一个像这样定义的泛型方法:

public void MyMethod<T>(T myArgument)
Run Code Online (Sandbox Code Playgroud)

我想要做的第一件事是检查myArgument的值是否是该类型的默认值,如下所示:

if (myArgument == default(T))
Run Code Online (Sandbox Code Playgroud)

但是这不能编译,因为我没有保证T将实现==运算符.所以我把代码改为:

if (myArgument.Equals(default(T)))
Run Code Online (Sandbox Code Playgroud)

现在这个编译,但是如果myArgument为null则会失败,这是我正在测试的一部分.我可以像这样添加一个显式的空检查:

if (myArgument == null || myArgument.Equals(default(T)))
Run Code Online (Sandbox Code Playgroud)

现在这让我感到多余.ReSharper甚至建议我将myArgument == null部分更改为myArgument == default(T),这是我开始的地方.有没有更好的方法来解决这个问题?

我需要支持两种引用类型和值类型.

c# generics

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

C#中的树数据结构

我在C#中寻找树或图形数据结构,但我想没有提供.对数据结构的广泛检查使用C#2.0解释了一些原因.是否有一个方便的库,通常用于提供此功能?也许通过策略模式来解决文章中提出的问题.

我觉得实现自己的树有点傻,就像我实现自己的ArrayList一样.

我只想要一个可以不平衡的通用树.想一下目录树.C5看起来很漂亮,但它们的树结构似乎被实现为更适合搜索的平衡红黑树而不是表示节点的层次结构.

c# data-structures

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

Java多重继承

为了完全理解如何解决Java的多重继承问题,我有一个经典的问题需要澄清.

可以说我有类Animal此有子类BirdHorse我需要做一个类Pegasus,从扩展BirdHorsePegasus既是一只鸟和一匹马.

我认为这是经典的钻石问题.从我能理解经典的方式来解决,这是使Animal,BirdHorse类接口,并实现Pegasus从他们.

我想知道是否有另一种方法来解决我仍然可以为鸟类和马创造物体的问题.如果有一种方法可以创造动物,那将是伟大的但不是必要的.

java oop multiple-inheritance diamond-problem multiple-interface-implem

165
推荐指数
9
解决办法
14万
查看次数

我应该使用哪个Java Collection?

在这个问题中如何在C++ 11中有效地选择标准库容器?是一个在选择C++集合时使用的方便流程图.

我认为这对于那些不确定他们应该使用哪个集合的人来说是一个有用的资源,所以我试图找到类似Java的流程图而无法这样做.

什么资源和"备忘单"可以帮助人们选择在Java编程时使用的正确的集合?人们如何知道应该使用哪些List,Set和Map实现?

java algorithm collections arraylist hashmap

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

用盐腌SHA-512哈希暴力多长时间?(提供盐)

这是Java中的算法:

public String getHash(String password, String salt) throws Exception {
    String input = password + salt;
    MessageDigest md = MessageDigest.getInstance(SHA-512);
    byte[] out = md.digest(input.getBytes());
    return HexEncoder.toHex(out);
}
Run Code Online (Sandbox Code Playgroud)

假设盐是已知的.我想知道在密码是字典单词时以及它不是字典单词时暴力的时间.

hash cryptography salt sha brute-force

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

Java基准测试 - 为什么第二个循环更快?

我对此很好奇.

我想检查哪个函数更快,所以我创建了一个小代码,我执行了很多次.

public static void main(String[] args) {

        long ts;
        String c = "sgfrt34tdfg34";

        ts = System.currentTimeMillis();
        for (int k = 0; k < 10000000; k++) {
            c.getBytes();
        }
        System.out.println("t1->" + (System.currentTimeMillis() - ts));

        ts = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            Bytes.toBytes(c);
        }
        System.out.println("t2->" + (System.currentTimeMillis() - ts));

    }
Run Code Online (Sandbox Code Playgroud)

"第二个"循环更快,因此,我认为hadoop中的Bytes类比String类中的函数更快.然后,我改变了循环的顺序,然后c.getBytes()变得更快.我执行了很多次,我的结论是,我不知道为什么,但是在第一个代码执行后我的VM中发生了一些事情,以便第二个循环的结果变得更快.

java performance benchmarking

49
推荐指数
5
解决办法
6260
查看次数

如何动态隐藏视图中的按钮?

我想根据某个条件动态隐藏我的一个视图中的按钮.

我尝试在视图控制器的-viewWillAppear方法中添加一些代码,在显示实际视图之前隐藏按钮,但我仍然不知道如何做到这一点.

我通过IBOutlet引用了按钮,但我不确定如何从这里向前推进.作为参考,这是一个UIBarButtonItem实例.

iphone cocoa-touch

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

实体框架的连接字符串

我想在Silverlight中的多个实体之间共享相同的数据库信息..但我希望连接字符串被命名为xyz并让每个人都从machine.config访问该连接字符串...

实体的元数据部分将是不同的,因为我没有将实体命名为相同的..

我可以在该元数据部分放置多个实体吗?

这是一个例子..我想使用这个连接字符串,但请注意我在元数据部分放了多个实体.

基本上我想要这个连接字符串

<add name="XYZ" connectionString="metadata=res://*/ModEntity.csdl|res://*/ModEntity.ssdl|res://*/ModEntity.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SomeServer;Initial Catalog=SomeCatalog;Persist Security Info=True;User ID=Entity;Password=SomePassword;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

而这个连接字符串

 <add name="XYZ" connectionString="metadata=res://*/Entity.csdl|res://*/Entity.ssdl|res://*/Entity.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SOMESERVER;Initial Catalog=SOMECATALOG;Persist Security Info=True;User ID=Entity;Password=Entity;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

制作此连接字符串

<add name="XYZ" connectionString="metadata=res://*/Entity.csdl|res://*/Entity.ssdl|res://*/Entity.msl|res://*/ModEntity.csdl|res://*/ModEntity.ssdl|res://*/ModEntity.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SOMESERVER;Initial Catalog=SOMECATALOG;Persist Security Info=True;User ID=Entity;Password=SOMEPASSWORD;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

但它根本行不通.这两个项目都无法连接到它.

string encConnection = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
Type contextType = typeof(test_Entities);
object objContext = Activator.CreateInstance(contextType, encConnection);
return objContext as test_Entities; 
Run Code Online (Sandbox Code Playgroud)

c# entity-framework machine.config

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

为什么枚举实现不能访问枚举类中的私有字段

我刚刚回答了这个问题,说如何解决编译问题:

如何通过重写方法在java枚举中使用字段?

但我不明白为什么错误发生在一开始.

以下是以枚举形式编写的示例:

public enum MyEnum {


    FIRST {
        @Override
        public String doIt() {
            return "1: " + someField; //error
        }
    },
    SECOND {
        @Override
        public String doIt() {
            return "2: " + super.someField; //no error
        }
    };

    private String someField;


    public abstract String doIt();

} 
Run Code Online (Sandbox Code Playgroud)

这与抽象类完全相同

abstract class MyClass {
    class FIRST extends MyClass {
        @Override
        public String doIt() {
            return "1: " + someField; //no error
        }
    };
    class SECOND extends MyClass {
        @Override
        public String doIt() …
Run Code Online (Sandbox Code Playgroud)

java enums

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

web.xml,beans.xml,applicationContext.xml等之间的区别

我一直在使用Spring MVC一段时间,现在在Glassfish服务器上运行的Netbeans中创建我的项目.虽然一切正常但我觉得我对每个XML文件中的内容都缺乏了解 - 在某些情况下,这导致我只是在每个文件中一个接一个地尝试一大块XML直到它工作.

我在谷歌上找不到任何明确的描述,我已经尝试了几次.

我将详细说明我目前的理解,然后如果有人可以跟进更详细的解释或让我知道我错在哪里会非常感激.

web.xml中

这似乎是通过告诉它用于处理查询的类来配置servlet容器.混淆似乎是虽然在这里配置Spring不起作用 - 你需要在这里安装一些配置来安装Spring ie

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

您可以在web.xml中添加它以使Spring Security正常工作 - 但是您实际上在另一个文件中配置了Spring Security.

调度员的servlet

这似乎与web.xml类似,因为它是关于配置servlet容器以启用Spring - 但在我的项目中它大多是空的并且只包含一个viewResolver.这里应该介绍什么,它与web.xml有什么不同?

beans.xml中

目前,除了xml根标签<beans>和我所有项目中的一些命名空间/模式定义之外,此文件是空的.它真的需要什么吗?

bean-discovery-mode="annotated">在根标签是空的原因是什么?

的applicationContext

这似乎是所有实际Spring配置的所在,例如<mvc:annotation-driven />,<context:component-scan />等等.

您还可以将此配置拆分为多个文件,并用于<import />将这些文件链接到应用程序上下文中.

与GlassFish网

我大部分都忽略了这个文件,有什么理由我不应该这样做吗?

问题

所以真正的问题是:

  • 我从上面错过了什么?
  • 为什么有一个单独的beans.xml似乎什么都不做?它是在引入注释之前的遗产吗?
  • 为什么有dispatcher-servlet.xmlweb.xml,它们之间有什么区别?
  • 如何与GlassFish web.xml中来自这两个有什么不同?
  • 如何判断xml的片段是否应该进入哪些文件而不在它们中进行尝试直到它起作用?(到目前为止我开发的粗略经验是" applicationContext.xml中的 spring配置,在web.xml中安装spring组件,忽略其他文件"!)

提前致谢,

蒂姆

java spring spring-mvc

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