小编Jor*_*oba的帖子

现实生活中的方法论和生命周期的例子

选择正确的生命周期和方法并不像以前没有那么多方法那么容易,现在每天都会出现一个新方法.

我发现大多数项目需要一定程度的演变,每个项目都与其他项目不同.这样,极限编程适用于具有15名员工的给定公司的项目,但不适用于100名员工公司或不适用于给定项目类型(例如实时应用程序,科学应用程序等) .

我想有一份经验清单,主要说明项目类型,项目规模(工作人数),项目时间(实际或计划),项目生命周期和方法以及项目是否成功.任何其他数据将不胜感激,我想如果有足够的数据我们可能会找到一些模式.当然,欢迎提出意见.

  • PS:非常大,PT:非常长,LC:增量CMMI,PR:成功
  • PS:非常大,PT:很长,LC:瀑布-CMMI,PR:成功

编辑:我将用所有答案的统计数据构建一个"摘要".

methodology

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

NTP客户端是否可以对抗SNTP服务器?

SNTP是完整NTP规范的简化.

我想对Windows XP中内置的SNTP服务器使用完整的NTP客户端.这是否有效或是NTP客户端工作所需的完整NTP服务器?

ntp

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

什么是推锁?

推锁在 Windows 内部用作其某些操作的同步原语,特别是作为内存管理器的一部分。

究竟什么是推锁?它与自旋锁有何不同?

architecture synchronization internals

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

在Delphi中优化类大小.有类似"打包课"的东西吗?

我正在尝试优化我的Delphi类的大小,以便它们占用尽可能少的内存,因为我正在创建大量的内存.

问题是,班级本身很小但他们没有占据我期待的空间.例如,如果我有

type MyClass = class
  private
    mMember1 : integer;
    mMember2 : boolean;
    mMember3 : byte;
end;
Run Code Online (Sandbox Code Playgroud)

我期望它使用6个字节,但是,由于对齐它最终使用12个字节,这是布尔值使用4个字节而不是1个字节......对于字节字段也是如此...

对于记录,您可以使用{$ A1}指令或将其声明为打包记录,以使其仅消耗所需的内存.

有什么方法可以用类做同样的事情吗?(也许有关如何正确覆盖NewInstance类方法的一些教程?)

编辑:好的,关于我正在做什么的一点解释......

首先,实际类大小类似于40个字节,包括VMT占用的空间和接口指针.

这些类都继承自一个大小为8字节的基本RefCounting类(一个整数FRefCount和一些允许引用计数的方法),它们必须支持接口(因此根本不使用打包记录).

这些对象被传递并被投射到几个东西,而不知道他们得到了什么.例如,我有一个接收TItems列表的类,并执行以下操作:

if Supports(List[i], IValuable, IValInstance) then
  Eval(IValInstance.Value);
Run Code Online (Sandbox Code Playgroud)

然后另一个处理程序可以检查其他接口

If Supports(List[i], IStringObject, IStringInstance) then
  Compose(IStringInstance.Value)
Run Code Online (Sandbox Code Playgroud)

这样每个处理程序对List的处理方式都不同......

关于如何获得类的总大小我正在使用修改后的内存管理器,以便我可以跟踪"真实"内存管理器用于该类的内存量.通过这种方式,我非常自信的实例没有被打包.

最后这是在Delphi 7中.我试图使用{$ A1}预编译器指令没有运气,字段以任何方式对齐,并且我可能有几百万个实例作为最坏的情况,因此节省6个字节可能导致几个MB被保存.

memory delphi optimization

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

避免在c#中为一段代码调试和调用堆栈

在Delphi中,编译器指令{$ d-}和{$ l-}允许您有效地避免为定义的代码段生成调试和局部变量信息.

在实际的问题中,它具有从调试视图中"隐藏"代码的效果,它不会出现在调用堆栈中,并且在调试时不会进入它.

有没有办法在使用VS 2008的c#中实现相同的结果?

注意:原因是我们有一个稳定的框架,不需要调试,但往往会搞乱调用堆栈和标准调试流程.

c# compiler-directives visual-studio-2008

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

由于递归的任何其他原因,堆栈溢出是否会发生?

我得到一个代码片段的堆栈溢出异常似乎无法产生stackoverflow ...它看起来像这样:

public String WriteToFile(XmlDocument pDoc, String pPath)
{
  string source = "";
  string seq = "";
  string sourcenet = "";

  XmlNodelist sourceNode = pDoc.GetElementsByTagName(XmlUtils.Nodes.Source);
  source = sourceNode.Item(0).InnerText;

  XmlNodelist sqList= pDoc.GetElementsByTagName(XmlUtils.Nodes.Seq);
  seq = sqList.Item(0).InnerText;

  XmlNodelist sourceNets = pDoc.GetElementsByTagName(XmlUtils.Nodes.SourceNets);
  sourcenet = sourceNets.Item(0).InnerText;

  string fileName = Folders.GetMyFileName(source, seq, sourcenet);
  string fullPath = Path.Combine(pPath, fileName);

  pDoc.Save(pFullPathFile);  <--- Stackoverflow is raised here

  return pFullPathFile; 
}
Run Code Online (Sandbox Code Playgroud)

没有递归调用,如果在转到"外部代码"之前检查调用堆栈的深度为2(我猜测它不是外部的,而是启动线程的框架的一部分,调试关闭).

¿无论如何,除了递归调用之外还有什么异常可以上升吗?它总是在pDoc.Save方法调用中失败...并且pDoc实际上并不那么大......更像是32KB的数据......

c# stack-overflow exception

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

Delphi中的递归类实例大小

有没有办法在Delphi中获取类实例的实际大小?

我知道TObject类的InstanceSize方法,但该方法不会以递归方式为对象成员调用自身.例如,假设我们有两个类:

type MyClass1 = class
  private
    myVar1 : integer;
    myVar2 : integer;
end;

type MyClass2 = class
  private
    myOtherVar1 : integer;
    myOtherVar2 : MyClass1;
end;
Run Code Online (Sandbox Code Playgroud)

对于这段代码,MyClass1将是12个字节长度(每个整数4个字节加上4个类的开销)和MyClass2将是24个字节lengh(类开销为4个字节,myOtherVar2为12个字节,myOtherVar1为4个字节)整数).由于myOtherVar2被解释为指针(4个字节)而不是类引用,因此使用InstanceSize将为每个字节生成12个字节.

有没有办法获得类的总大小,包括它对其他类实例的引用?

memory delphi size

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

是否可以知道.NET Framework是否是从.NET应用程序安装的?

这就是事情.当我尝试在没有安装.NET框架的机器中运行它时,我的.NET应用程序崩溃了一个非常丑陋的一般异常错误.

这是正常的吗?如果是......有没有办法检查.NET框架是否能够优雅地退出?

.net installation

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

ThreadAbortException与C#中的graceful事件句柄退出

当中止线程的执行时,我总是怀疑优雅退出与事件处理程序,如下所示:

int result = WaitHandle.WaitAny(handles);
if (result = WAIT_FINALIZE)
  FinalizeAndExit();
Run Code Online (Sandbox Code Playgroud)

并使用事件来通知线程它必须终止

或者只是处理ThreadAbortException来完成线程......

try
{
  // Main execution
}
catch(ThreadAbortException e)
{
  // FinalizeAndExit();
}
finally
{
}
Run Code Online (Sandbox Code Playgroud)

我通常倾向于使用ThreadAbortException方法,因为它可以被处理但是它会在catch块的末尾重新引发,并且它还避免了线程被"危险"方法保持活着,但我已经看到了两种方法.

你怎么看?是否有任何情况下最好使用一个而不是另一个,或者最好总是使用x?

c# multithreading exception-handling exception

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

Rule Engines的表现如何?

我一直在看WF规则引擎NxBRE,它看起来很有趣,但我不确定它在现实生活场景中的表现如何.

我所想到的就像一个事实基础,有一些有1亿到1亿个事实和规则,如:

Object.Field <5000 AND Object.Field> 1000 AND IsProperty(Object.Field2)

我正在使用C#和.NET.

编辑:我没有说清楚(完全是我的错):)我有自己的规则评估系统,它使用RETE算法本身...它非常快,它可以在大约10秒内评估1000万事实情景. ... comaparison中的商业解决方案有多快?

c# rule-engine workflow-foundation nxbre

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