小编Osc*_*ros的帖子

"责任链"和"战略"模式之间有什么区别?

我提出这个问题是因为几天前我在这里提出的另一个问题.
我必须解决一个特定的问题,在得到两个回复后,我意识到两个模式可以帮助解决这个问题(以及任何其他类似问题).

  1. 责任链
  2. 战略

我的问题是:

这些模式之间究竟有什么区别?

design-patterns strategy-pattern chain-of-responsibility

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

正则表达式是否通用?

我想知道正则表达式是否适用于PHP,Javascript等所有语言的通用表达式?

javascript php regex

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

Python将类属性导入方法本地命名空间

如果有更简单的方法将类属性分配给方法本地命名空间,我一直想知道.例如,在dosomething方法中,我明确地引用self.aself.b:

class test:
    def __init__(self):
        self.a = 10
        self.b = 20

    def dosomething(self):
        a = self.a
        b = self.b
        return(a + b)
Run Code Online (Sandbox Code Playgroud)

但有时我有很多变量(超过10个)并且输入和查看会变得混乱 - 我会var = self.var在方法的开头有一堆语句.

有没有办法以更紧凑的方式做到这一点?(我知道更新local()不是一个好主意)

编辑:理想情况下,我想要的是:

def dosomething(self):
    populate_local_namespace('a', 'b')
    return(a + b)
Run Code Online (Sandbox Code Playgroud)

python namespaces class

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

从WPF中的ViewModel类(MVVM模式)更新UI

我在我的第一个WPF应用程序中使用MVVM模式,并且遇到了我认为非常基本的问题.

当用户点击我视图上的"保存"按钮时,会执行一个命令,该命令在我的ViewModel中调用私有void Save().

问题是"Save()"中的代码需要一些时间来执行,所以我想在执行大块代码之前隐藏UI视图中的"保存"按钮.

问题是视图不会更新,直到所有代码都在viewmodel中执行.在执行Save()代码之前,如何强制视图重绘并处理PropertyChanged事件?

另外,我想要一种可重复使用的方式,这样我也可以轻松地在其他页面中做同样的事情.其他人已经做过这样的事了吗?一个"正在加载......"的消息?

wpf mvvm

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

如何将数组值转换为变量?

我有两个数组.喜欢:

Bear, prince, dog, Portugal, Bear, Clown, prince, ...

第二个:

45, 67, 34, 89, ...

我想将第一个数组中的字符串键转换为变量,并将它们设置为等于第二个数组中的数字.

可能吗?

php arrays string variables key

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

如何将多个枚举传递给只接收一个枚举的方法?

我想知道以下是否可行:

该方法Regex.Match可以接收枚举,所以我可以指定:

RegexOptions.IgnoreCase
RegexOptions.IgnorePatternWhiteSpace
RegexOptions.Multiline
Run Code Online (Sandbox Code Playgroud)

如果我需要指定的不仅仅是一个,该怎么办?(例如,我想要我的正则表达式Multiline,我希望它忽略模式空白).

我可以|在C/C++中使用运算符吗?

c# parameters enums parameter-passing

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

lVals = [1,08,2011]有什么理由抛出异常吗?

我发现有一件事让我发疯.如果我指定以下列表:

lVals = [1, 01, 2011]
Run Code Online (Sandbox Code Playgroud)

然后不会显示任何错误,如果我使用会发生相同的情况02,03,04,05,06,07,但是如果我使用0809作为列表中的第二项,我会得到以下异常:

>>> a = [26, 08, 2011]
  File "<stdin>", line 1
    a = [26, 08, 2011]
              ^
SyntaxError: invalid token
Run Code Online (Sandbox Code Playgroud)

当我将这些数字(08,09)放在列表​​中的任何位置(例如[08,10,2011])时,也会出现相同的行为,即使我尝试分配08给单个int变量,我也会得到相同的异常.

这有什么原因吗?

python

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

Django - 用于识别一个对象的URL设计和最佳实践

我实际上在django项目中工作,我不确定访问一个特定对象页面的URL的最佳格式.

我在想这些替代方案:

1) Using the autoincremental ID => .com/object/15
Run Code Online (Sandbox Code Playgroud)

这是最简单和众所周知的方法."id_object"是数据库引擎在保存对象时生成的自动增量ID.我以这种方式找到的问题是URL是简单的可迭代的.因此,我们可以通过增加URL中的ID来创建一个简单的脚本并访问所有页面.也许是一个安全问题.

2) Using a <hash_id> => .com/object/c30204225d8311e185c3002219f52617
Run Code Online (Sandbox Code Playgroud)

"hash_id"应该是一些字母数字字符串值,例如使用uuid函数生成.这是一个好主意,因为它不可迭代.但生成"随机"唯一ID可能会导致一些问题.

3) Using a Slug => .com/object/some-slug-generated-with-the-object
Run Code Online (Sandbox Code Playgroud)

Django为模型提供了一个"slug"字段,它可用于识别URL中的对象.我在这种情况下发现的问题是slug可能会在时间上发生变化,从而产生损坏的URL.如果某些搜索引擎(如Google)已将此网址编入索引,则可能会将用户引导至"未找到"网页,我们的网页排名可能会降低.冻结弹头可以解决问题.我的意思是,仅在"添加"操作中保存slug,而不是在"Update"操作中保存.但是slu the现在可以代表旧的或不正确的东西.

所有选项都有优点和缺点.可能会使用它们的某些组合可以解决一些问题.你觉得怎么样?

django url identifier

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

在我的编译器中编写单元测试(生成IL)

我正在编写一个Tiger编译器C#,我将把Tiger代码翻译成IL.

在实现AST中每个节点的语义检查时,我为此创建了许多单元测试.这很简单,因为我的CheckSemantic方法看起来像这样:

public override void CheckSemantics(Scope scope, IList<Error> errors) {
...
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我想为某个节点的语义检查编写一些单元测试,我所要做的就是构建一个AST,然后调用该方法.然后我可以这样做:

Assert.That(errors.Count == 0);
Run Code Online (Sandbox Code Playgroud)

要么

Assert.That(errors.Count == 1);
Assert.That(errors[0] is UnexpectedTypeError);
Assert.That(scope.ExistsType("some_declared_type"));
Run Code Online (Sandbox Code Playgroud)

但是我现在正在开始代码生成,而且我不知道在为该阶段编写单元测试时可能是一个好的做法.

我正在ILGenerator上课.我考虑过以下几点:

  • 生成我想测试的示例程序的代码
  • 保存该可执行文件
  • 执行该文件,并将输出存储在文件中
  • 断言该文件

但我想知道是否有更好的方法呢?

c# compiler-construction unit-testing compilation tiger

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

MySqlException:超时已过期 - 增加连接超时没有效果

随着数据库大小的增加,我的查询执行时间更长.查询已经过优化和必要,但我的C#控制台应用程序最近给了我这个错误:

Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Timeout expired.
Run Code Online (Sandbox Code Playgroud)

增加连接字符串中的连接超时没有帮助; 我增加了它

连接超时= 28800

连接超时= 128800

但尽管有这种变化,我仍然会得到错误.

如果我从MySQL工作台运行查询它只需要大约10秒,所以我不知道如何防止这种未处理的异常.

除了"查询所花费的时间"之外还有其他什么可以产生这种异常吗?

c# mysql connection-timeout

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