我有一个像这样定义的泛型方法:
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#中寻找树或图形数据结构,但我想没有提供.对数据结构的广泛检查使用C#2.0解释了一些原因.是否有一个方便的库,通常用于提供此功能?也许通过策略模式来解决文章中提出的问题.
我觉得实现自己的树有点傻,就像我实现自己的ArrayList一样.
我只想要一个可以不平衡的通用树.想一下目录树.C5看起来很漂亮,但它们的树结构似乎被实现为更适合搜索的平衡红黑树而不是表示节点的层次结构.
为了完全理解如何解决Java的多重继承问题,我有一个经典的问题需要澄清.
可以说我有类Animal此有子类Bird和Horse我需要做一个类Pegasus,从扩展Bird和Horse自Pegasus既是一只鸟和一匹马.
我认为这是经典的钻石问题.从我能理解经典的方式来解决,这是使Animal,Bird和Horse类接口,并实现Pegasus从他们.
我想知道是否有另一种方法来解决我仍然可以为鸟类和马创造物体的问题.如果有一种方法可以创造动物,那将是伟大的但不是必要的.
java oop multiple-inheritance diamond-problem multiple-interface-implem
在这个问题中如何在C++ 11中有效地选择标准库容器?是一个在选择C++集合时使用的方便流程图.
我认为这对于那些不确定他们应该使用哪个集合的人来说是一个有用的资源,所以我试图找到类似Java的流程图而无法这样做.
什么资源和"备忘单"可以帮助人们选择在Java编程时使用的正确的集合?人们如何知道应该使用哪些List,Set和Map实现?
这是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)
假设盐是已知的.我想知道在密码是字典单词时以及它不是字典单词时暴力的时间.
我对此很好奇.
我想检查哪个函数更快,所以我创建了一个小代码,我执行了很多次.
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中发生了一些事情,以便第二个循环的结果变得更快.
我想根据某个条件动态隐藏我的一个视图中的按钮.
我尝试在视图控制器的-viewWillAppear方法中添加一些代码,在显示实际视图之前隐藏按钮,但我仍然不知道如何做到这一点.
我通过IBOutlet引用了按钮,但我不确定如何从这里向前推进.作为参考,这是一个UIBarButtonItem实例.
我想在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="Data Source=SomeServer;Initial Catalog=SomeCatalog;Persist Security Info=True;User ID=Entity;Password=SomePassword;MultipleActiveResultSets=True"" 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="Data Source=SOMESERVER;Initial Catalog=SOMECATALOG;Persist Security Info=True;User ID=Entity;Password=Entity;MultipleActiveResultSets=True"" 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="Data Source=SOMESERVER;Initial Catalog=SOMECATALOG;Persist Security Info=True;User ID=Entity;Password=SOMEPASSWORD;MultipleActiveResultSets=True"" 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) 我刚刚回答了这个问题,说如何解决编译问题:
但我不明白为什么错误发生在一开始.
以下是以枚举形式编写的示例:
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) 我一直在使用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网
我大部分都忽略了这个文件,有什么理由我不应该这样做吗?
问题
所以真正的问题是:
提前致谢,
蒂姆
java ×5
c# ×3
algorithm ×1
arraylist ×1
benchmarking ×1
brute-force ×1
cocoa-touch ×1
collections ×1
cryptography ×1
enums ×1
generics ×1
hash ×1
hashmap ×1
iphone ×1
oop ×1
performance ×1
salt ×1
sha ×1
spring ×1
spring-mvc ×1