问题列表 - 第6488页

用于实施UNDO和REDO选项的数据结构

我想实现UNDO和REDO选项(正如我们在MS word等中看到的那样).你能为我建议一个数据结构,我该如何实现呢?

design-patterns undo-redo data-structures

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

C#(.Net 2.0)微优化第2部分:在网格中查找连续组

我有一个非常简单的函数,它接受匹配的位域,网格和正方形.它过去常常使用委托,但我做了大量的重新编码,最后进行了一个位域&操作,以避免委托,同时仍能在合理范围内执行匹配.基本上,挑战是match从特定的"前导"方块开始,在网格中找到与位域匹配的所有连续元素.Square有点小(但不是很小).关于如何推动这个更快的任何提示?请注意,网格本身非常小(此测试中有500个元素).

编辑:值得注意的是,此函数每秒调用超过200,000次.事实上,从长远来看,我的目标是不经常调用它,但这真的很难,因为我的最终目标是使用脚本处理分组系统而不是硬编码.也就是说,这个函数总是被称为比任何其他函数更多.

编辑:为了澄清,该功能不会检查是否leader匹配位域,按设计.目的是领导者不需要匹配位域(尽管在某些情况下它会).

事情尝试失败:

  • 使用容量初始化字典和堆栈.
  • 将int转换为枚举以避免强制转换.
  • 将字典和堆栈移到函数外部,并在每次需要时清除它们.这让事情变得更慢!

事情尝试成功:

  • 编写哈希码函数而不是使用默认值:哈希码是预先计算的并且等于x + y * parent.Width.感谢提醒,Jim Mischel.
  • mquander的技术:见GetGroupMquander下文.
  • 进一步优化:一旦我切换到HashSets,我摆脱了Contains测试并用测试替换它Add.双方ContainsAdd被迫寻求一个关键,所以只是检查,如果附加成功,是不是增加,如果更高效的Contains故障检查失败.那是,if (RetVal.Add(s)) curStack.Push(s);

    public static List<Square> GetGroup(int match, Model grid, Square leader)
    {
        Stack<Square> curStack = new Stack<Square>();
        Dictionary<Square, bool> Retval = new Dictionary<Square, bool>();
        curStack.Push(leader);
        while (curStack.Count != 0)
        {
            Square curItem = curStack.Pop();
            if (Retval.ContainsKey(curItem)) continue;
            Retval.Add(curItem, true);
            foreach (Square …
    Run Code Online (Sandbox Code Playgroud)

c# optimization .net-2.0

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

您能否举例说明为什么用正则表达式解析XML和HTML很困难?

一个错误我看到人们做,并再次试图解析XML或HTML用正则表达式.以下是解析XML和HTML很难的几个原因:

人们希望将文件视为一系列行,但这是有效的:

<tag
attr="5"
/>
Run Code Online (Sandbox Code Playgroud)

人们希望将<或<tag视为标记的开头,但是这样的东西存在于野外:

<img src="imgtag.gif" alt="<img>" />
Run Code Online (Sandbox Code Playgroud)

人们通常希望将起始标记与结束标记匹配,但XML和HTML允许标记包含自身(传统的正则表达式根本无法处理):

<span id="outer"><span id="inner">foo</span></span> 
Run Code Online (Sandbox Code Playgroud)

人们通常希望匹配文档的内容(例如着名的"查找给定页面上的所有电话号码"问题),但数据可能会被标记(即使在查看时看起来是正常的):

<span class="phonenum">(<span class="area code">703</span>)
<span class="prefix">348</span>-<span class="linenum">3020</span></span>
Run Code Online (Sandbox Code Playgroud)

评论可能包含格式不正确或不完整的标记:

<a href="foo">foo</a>
<!-- FIXME:
    <a href="
-->
<a href="bar">bar</a>
Run Code Online (Sandbox Code Playgroud)

你还知道其他什么问题?

html regex xml

397
推荐指数
10
解决办法
4万
查看次数

我想调试(设置一个断点)System.Web.Mvc.DefaultControllerFactory,这可能吗?

我有一个项目引用GAC中的System.Web.Mvc程序集.我也有Codeplex的ASP.NET MVC源代码.我希望通过逐步完成其方法来更好地理解DefaultControllerFactory.我怎么能这样设置?

谢谢!

debugging asp.net-mvc debug-symbols

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

Windows系统中是否存在未缓冲的I/O?

我想找到低级C/C++ API,相当于linux系统中的"write",没有缓冲区.有吗?

缓存的I/O如fread,fwrite不是我想要的.

c c++ file-io winapi low-level

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

有没有什么策略可以避免满足?

令人满意的(“满足”和“就足够”的混成词)是一个决策策略,尝试为充足满足的标准,而不是识别的最佳解决方案。如果在结果计算中考虑了决策过程本身的成本,例如获取完整信息的成本,则令人满意的策略通常可能是(接近)最优的。(来源)

软件工程中的大多数决策都很容易做出,无需在这个主题上思考数小时。想到的第一个解决方案通常足够好,因此我们可以快速使用它并继续进行下一个决定。

但是,也有一些罕见的情况,您必须解决更困难和/或关键的问题。如果以次优方式解决这些问题,您可能会花费大量金钱或时间。

在这些情况下,我通常会尝试提出几种完全不同的解决方案/方法来解决问题。然后我选择一个并改进它,直到我对我的解决方案完全满意。

通常这是有效的,但有时我只能想出一个足够但不是很好的解决方案。我知道我的解决方案不是很好,而且问题很严重,需要付出更多努力。然而,我已经找到的解决方案的知识阻碍了我的创造力,所以我找不到第二个(至少不是马上)。我坚持我的平庸想法,除非我可以问其他人,否则我必须实施它才能继续前进。

有没有技术可以克服这个问题?我能想到的两件事是与其他人进行头脑风暴或散步。

在这些情况下你会怎么做?

language-agnostic

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

ExternalInterface.call()没有获得返回值

我有一个Javascript函数,它返回div的innerHTML.我试图从Actionscript调用此函数并存储返回值.我知道正在调用Javascript函数,因为有一个显示返回数据的警报,但返回到Actionscript的数据为null.我不确定是什么原因造成的.这是我尝试做的代码示例:

Javascript:
function JSFunc () {
     var x = document.getElementById("myDiv");
     alert(x.innerHTML);
     return x.innerHTML;
}

Actionscript:
import flash.external.*;
if (ExternalInterface.available) {
     var retData:Object = ExternalInterface.call("JSFunc");
     if(retData != null) {
          textField.text = retData.toString();
     } else {
          textField.text = "Returned Null";
     }
} else {
     textField.text = "External Interface not available";
}
Run Code Online (Sandbox Code Playgroud)

就像我之前说的那样,警报显示div的内容,但文本字段中的文本始终为"Returned Null",这意味着ExternalInterface可用.我应该补充一点,我只能在IE7和IE8中测试它.任何有关做什么的建议都将不胜感激.

javascript apache-flex flash actionscript-3

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

开发人员是否应在其PC上拥有管理员权限

开发人员是否应该在他们的PC上拥有管理员权限,或者是否为他们提

一些评论:

  • 如果他们想要尝试一些需要安装的新应用程序,那么他们可以在虚拟机上试用它,然后让网络管理员为它们安装它.你觉得那会有用吗?
  • 开发人员需要在他们的PC上做什么需要管理员权限?

我们是由5名开发人员组成的团队,并构建Web应用

development-environment

131
推荐指数
12
解决办法
4万
查看次数

获取Java 1.4中Thread的唯一标识符

在Java 1.4中,获取Thread的ID是否有比使用更好的方法Thread.getName()

我的意思是,getName()在单元测试中返回类似的东西"Thread-1",但在WebLogic 10中我得到了"[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'.xml".

java multithreading uniqueidentifier

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

.NET - 将通用集合转换为DataTable

我试图将通用集合(List)转换为DataTable.我找到了以下代码来帮助我这样做:

// Sorry about indentation
public class CollectionHelper
{
private CollectionHelper()
{
}

// this is the method I have been using
public static DataTable ConvertTo<T>(IList<T> list)
{
    DataTable table = CreateTable<T>();
    Type entityType = typeof(T);
    PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);

    foreach (T item in list)
    {
        DataRow row = table.NewRow();

        foreach (PropertyDescriptor prop in properties)
        {
            row[prop.Name] = prop.GetValue(item);
        }

        table.Rows.Add(row);
    }

    return table;
}    

public static DataTable CreateTable<T>()
{
    Type entityType = typeof(T);
    DataTable table = new DataTable(entityType.Name);
    PropertyDescriptorCollection …
Run Code Online (Sandbox Code Playgroud)

c# generics collections datatable nullable

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