小编Rad*_*094的帖子

避免在构造函数中使用虚方法

假设我有以下类层次结构:

class Base
{
   virtual int GetClassID(){ return 0;};
public:
   Base() { SomeSingleton.RegisterThisObject(this->GetClassID());
}

class Derived
{
   virtual int GetClassID(){ return 1;};
public:
   Derived():Base(){};
}
Run Code Online (Sandbox Code Playgroud)

嗯,这一切都从我的实际情况简化,但这是它的一般要点.

我想避免在每个派生类的构造函数中调用RegisterThisObject,所以我试图将调用移动到基类的构造函数.

是否有任何模式可用于在不使用构造函数中的虚方法的情况下完成此操作?

c++

5
推荐指数
2
解决办法
2002
查看次数

对最近X秒内收到的值的平均值进行采样

我有一个调度成功和失败事件的类,我需要维护一个关于该类最后X秒内的平均失败次数/事件总数的统计数据.

我正在考虑使用循环链表并为每个事件附加成功或失败节点.然后计算列表中的故障节点数与总节点数,但这有两个主要缺点:

  1. 我需要不断扩大/缩小列表大小以考虑"最后X秒"要求(每秒事件数可以更改)
  2. 我需要不断循环遍历列表并计算所有事件(可能很昂贵,因为我每秒可能会有100个这样的事件)

有没有人知道从最近X秒收到的样本列表中计算平均值的另一种方法?

algorithm statistics

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

寻求0x0B

从SQL列读取一些数据然后将其转换为XML时出现此错误:

"System.InvalidOperationException:XML文档中存在错误(182,16).---> System.Xml.XmlException:'',十六进制值0x0B,是无效字符."

很公平,也许数据格式不正确.除了,我怎么能找到罪魁祸首?

SELECT * from Mytable where Column like '%' + char(0x0B)+'%' 
Run Code Online (Sandbox Code Playgroud)

返回空.

(显然我尝试了所有%+ char,char,char +%组合,以防万一)

debugging sql-server-2005 xml-serialization

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

从IList <>中选择一个随机元素,而不是这个元素

我有这种模式,我需要从列表中选择任何随机元素,而不是当前的元素(作为参数传递).我想出了这个方法:

public Element GetAnyoneElseFromTheList(Element el)
{
  Element returnElement = el;
  Random rndElement = new Random();
  if (this.ElementList.Count>2) 
  {
  while (returnElement == el) 
  {
    returnElement = this.ElementList[rndElement.Next(0,this.ElementList.Count)];  
  }

  return returnElement;
  }
 else return null;
}
Run Code Online (Sandbox Code Playgroud)

但是,虽然循环一直困扰着我几天,但我需要睡一会儿.还有其他好办法吗?即.以固定数量的步骤返回的东西?

编辑:在我的情况下,列表保证包含要避免的"el"元素,并且列表不包含重复项,但是看到一些更一般的情况也很有趣.

c#

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

最好的Web应用程序浏览器

我处于可以为我的网络应用程序选择客户端浏览器的位置.该应用程序正在内部使用,我们正在"手动"安装每个客户端.我想为浏览器找到更好的解决方案,因此:

什么是一个好的浏览器,我可以用作Web应用程序的客户端?

我想要的一般功能:

  • 从快捷方式打开浏览器,直接打开应用程序的URL
  • 将导航限制为一组允许的URL的能力
  • 全屏模式,没有菜单,没有地址栏
  • JavaScript的
  • 良好的CSS支持
  • 能够取消后退按钮(或至少解决"网页已过期"的IE问题)

IE7和FireFox是很好的候选者,但每个人似乎都有自己的问题和问题.

browser web-applications

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

将long转换为System.Int64抛出错误?

我得到了一个让我感到困惑的奇怪错误:我有一个函数..uhm ...这样的事情:

void someFunctionTakingALong( long ID)
{
  var table = new DataTable();
  table .Columns.Add(new DataColumn("RID", Type.GetType("System.Int64")));
  table.Rows.Add(ID);       //<-- throws err
}
Run Code Online (Sandbox Code Playgroud)

抛出此错误:

System.ArgumentException: Input string was not in a correct format.Couldn't store  in RID Column.  Expected type is Int64. ---> System.FormatException: Input string was not in a correct format.
   at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.String.System.IConvertible.ToInt64(IFormatProvider provider)
   at System.Data.Common.Int64Storage.Set(Int32 record, Object value)
   at System.Data.DataColumn.set_Item(Int32 record, Object value) …
Run Code Online (Sandbox Code Playgroud)

c#

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