在下面的简化示例中,我需要在这样的方式的抽象集合类PrintFruitsAndEaters(oranges, orangeEaters);或PrintFruitsAndEaters(apples, appleEaters);
成为可能:
abstract class Fruit
abstract class FruitEater
class Apple : Fruit
class AppleEater : FruitEater
class Orange : Fruit
class OrangeEater : FruitEater
class AppleCollection : List<Apple>
class OrangeCollection : List<Orange>
class AppleEaterCollection : List<AppleEater>
class OrangeEaterCollection : List<OrangeEater>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过模板化方法和集合类,但我需要访问特定于Fruit和FruitEater类的方法:
class FruitCollection<T> : List<T>
class FruitEaterCollection<T> : List<T>
void PrintFruitsAndEaters<T, S>(FruitCollection<T> fruits, FruitEaterCollection<S> eaters)
Run Code Online (Sandbox Code Playgroud) 我们的系统上有用户和人员。每个用户有很多人。但是当用户登录时,我们需要查找他的主要人员记录以填写他的姓名、地址、电话等。
public class Person
{
/// <summary>Every Person belongs to a user.</summary>
public virtual User User { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Address { get; set; }
public virtual string Phone { get; set; }
// More methods & Properties
}
public class User : Entity
{
public virtual string Username { get; set; }
public virtual string Password …Run Code Online (Sandbox Code Playgroud) 嗨我想在Visual Studio上运行C#GUI应用程序时打印一些消息.这就像调试一样.所以我尝试了,但没有奏效.console.writeline()没有工作或它可能工作,但我看不到消息.谁知道这件事?如果你知道,给我一个解决方案.谢谢.
当我使用Facebook的Android SDK单点登录时,我得到一个完全无用的页面.
"你已经授权了happyapp.按"好的"继续.
此页面会破坏用户体验.我怎么能摆脱它.很多人都看到了这个,但没有发布任何解决方案.
甚至Facebook承认这是一个问题,请参阅:http://forum.developers.facebook.net/viewtopic.php?id = 84548
有谁知道任何解决方法吗?
我有一个程序,随着时间的推移逐渐使用越来越多的内存.我正在使用jmap和jhat来尝试和诊断它,但我仍然不是那里.
该程序是一个长期运行的服务器,由hbase数据存储区支持,为许多其他东西提供thrift服务.但是,运行几天之后,它最终将达到分配的堆限制,并且几乎所有时间都在垃圾收集中来回晃动.似乎引用会被保存到某个地方的大量数据中
在摆弄jstat和jconsole之后,我最终得到了运行进程的jmap的heapdumps,并通过jhat运行它,并且数字简单不会累加到内存利用率附近的任何地方
jmap -F -dump:live,format=b,file=heap.dump 12765
jmap -F -dump:format=b,file=heap.all 12765
直方图顶部的一些东西
Class Instance Count Total Size
class [B 7493 228042570
class java.util.HashMap$Entry 2833152 79328256
class [Ljava.util.HashMap$Entry; 541 33647856
class [Ljava.lang.Object; 303698 29106440
class java.lang.Long 2851889 22815112
class org.apache.hadoop.hbase.KeyValue 303593 13358092
class org.apache.hadoop.hbase.client.Result 303592 9714944
class [I 14074 9146580
class java.util.LinkedList$Entry 303841 7292184
class [Lorg.apache.hadoop.hbase.KeyValue; 303592 7286208
class org.apache.hadoop.hbase.io.ImmutableBytesWritable 305097 4881552
class java.util.ArrayList 302633 4842128
class [Lorg.apache.hadoop.hbase.client.Result; 297 2433488
class [C 5391 320190
Run Code Online (Sandbox Code Playgroud)
虽然这里的总数并没有加起来,但是在进行堆转储时,进程使用了超过1GB的内存.
直接明显的罪魁祸首似乎是我在整个地方留下了HBase Result和KeyValue条目.试图追踪引用,我最终命中了
Object …Run Code Online (Sandbox Code Playgroud) 我知道当sb已经处于容量状态时,当你使用sb.Append(..)时,StringBuilder对象会分配更多的内存.但是这个容量增加了多少?
StringBuilder sb = new StringBuilder(5);
sb.Append("0123456789");
Run Code Online (Sandbox Code Playgroud)
现在,某人的能力是什么?为什么?乘数是多少?
为了清楚起见.我问的是容量而不是长度.
谢谢!
numpy vectorize函数很有用,但是当函数参数是列表而不是标量时,它表现不佳.举个例子:
import numpy as np
def f(x, A):
print "type(A)=%s, A=%s"%(type(A),A)
return sum(A)/x
X = np.linspace(1,2,10)
P = [1,2,3]
f2 = np.vectorize(f)
f(X,P)
f2(X,P)
Run Code Online (Sandbox Code Playgroud)
得到:
type(A)=<type 'list'>, A=[1, 2, 3]
type(A)=<type 'numpy.int64'>, A=1
Traceback (most recent call last):
File "vectorize.py", line 14, in <module>
f2(X,P)
File "/usr/local/lib/python2.6/dist-packages/numpy/lib/function_base.py", line 1824, in __call__
theout = self.thefunc(*newargs)
File "vectorize.py", line 5, in f
return sum(A)/x
TypeError: 'numpy.int64' object is not iterable
Run Code Online (Sandbox Code Playgroud)
我知道函数f 在没有vectorize它的情况下工作正常,但是我想知道如何(通常)向量化一个函数,该函数的参数采用列表而不是标量.
我有一个接口IServiceInfo和一个抽象类ServiceInfo.有几个继承自ServiceInfo的类,如CoreServiceInfo,ModuleServiceInfo等.有一个名为RootService的服务契约,它返回IServiceInfo.
public IServiceInfo GetServiceInfo()
{
return (IServiceInfo)new CoreServiceInfo();
}
Run Code Online (Sandbox Code Playgroud)
我有序列化问题.我可以使用ServiceKnownType来标识基类,使用KnownType来标识子类.
问题是我不知道所有的ServiceInfo子节点,因为应用程序可以有从ServiceInfo继承的不同子节点的插件,所以我无法告诉序列化器将序列化XML中的所有子节点.
我可以忽略抽象类,但它包含某些常见的实现,所以我需要保留它.作为一种解决方法,我可以让另一个类说"sampleServiceInfo"并将所有info类转换为sampleServiceInfo并从Service方法返回它,并将KnownType定义为ServiceInfo类.
[KnownType(typeof(sampleServiceInfo))]
public class ServiceInfo : IServiceInfo
Run Code Online (Sandbox Code Playgroud)
但这听起来并不是很好的方式.请建议.我需要编写自定义序列化程序吗?是否有任何方法只能序列化基数并忽略孩子,当两者都有相同的成员?
我有一个可观察的集合...... SelectableDataContext<T>在泛型类SelectableDataContext<T>中......有两个私有成员变量
当IsSelected属性发生更改时...我的集合的已更改属性未触发.
我认为它应该解雇...因为它Reset在INotifyCollectionChangedAction.
我写了以下函数.在运行时,浏览器抱怨未捕获的TypeError ...没有方法'init'.我的代码出了什么问题?
function build_results_grid (response) {
// build grid
grid_ui.init();
} // build the results grid
var grid_ui = function () {
return {
init: function () {
//build_grid();
}
}; // return
}
Run Code Online (Sandbox Code Playgroud)