问题列表 - 第27612页

管理对象状态/设置的模式?

我有一些困境,并会欣赏一些意见.

我有这个类,让我们称之为"Car",其中每个实例都有一些单独的设置(通过属性),如"Color","HasGearShift"或诸如此类(我正在为一个简单的例子做这个).这些应该是用户可自定义的,但也应该有默认值.

因此,自然的解决方案是采用所有"设置"属性并将它们分解为可以序列化/反序列化的单独"设置"类.每个Car类还可以继承Settings类,其中一个类设置默认值,并且可以序列化为用户自定义的基础.到现在为止还挺好.

我觉得问题是我要么必须在整个代码中使用这种语法: someCar.Settings.HasGearShift甚至有一些像这样:someCar.Settings.GearBox.CurrentGear但至少没有冗余,所有内容都很好地封装在Settings类中.

另一个选项是将属性保留在Car类上,只需将它们从Settings类复制到类中即可.然后我可以someCar.HasGearShift再简单地写一下.使引用属性更简洁,但意味着如果我添加/删除某些内容,我必须更改两个类中的设置.

你会选择哪一种,或者我错过了第三种更好的方式?我倾向于第二个选项,否则代码中只会有太多"trainwrecks":)

c# oop design-patterns

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

提升Mersenne Twister:如何使用多个值种子?

我正在使用boost mt19937实现进行模拟.

模拟需要是可重复的,这意味着以后存储并可能重复使用RNG种子.我正在使用windows crypto api生成种子值,因为我需要种子的外部源,而不是因为任何特殊的随机性保证.任何模拟运行的输出都会有一个包含RNG种子的注释 - 因此种子需要相当短.另一方面,作为模拟分析的一部分,我将比较几次运行 - 但为了确保这些运行实际上是不同的,我需要使用不同的种子 - 所以种子需要足够长避免意外碰撞.

我已经确定64位播种应该足够了; 在大约2 ^ 32次运行后,碰撞的几率将达到50% - 这个概率足够低,以至于它造成的平均误差对我来说可以忽略不计.仅使用32位种子很棘手; 在2 ^ 16次运行后,碰撞的可能性已达到50%; 这对我的口味来说有点太可能了.

不幸的是,增强实现要么是带有完整状态向量的种子 - 这太长,太长 - 或者是一个32位无符号长 - 这并不理想.

如何为超过32位但小于满状态向量的发生器播种?我试着填充矢量或重复种子来填充状态向量,但即使粗略地看一下结果也会显示结果不佳.

c++ boost boost-random

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

CSS如何在同一个div中左对齐一个单词和另一个单词?

如何在同一个div中左右对齐一个单词和另一个单词?

css

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

用于windows的Pdflatex

有谁知道如何在Windows中将.tex文件转换为.pdf?我试过cygwin,但它说命令"pdflatex"无法识别

谢谢Philip

windows latex cygwin pdflatex

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

我如何git归档任意分支?

git checkout master
git archive stage | tar -czf archive.tar.gz htdocs
# archives master because it's checked out.
Run Code Online (Sandbox Code Playgroud)

无论当前我在哪里,我如何归档舞台分支?

git

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

Weblogic:如何列出所有登录的用户?

我想为我的 Weblogic 域列出当前登录的用户

如果失败,我想知道有多少用户登录。

理想情况下,使用管理控制台,或者必要时使用脚本。

administration weblogic weblogic9.x

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

PowerShell - 缩短命名空间名称,以便更容易访问类型

有没有缩短PowerShell命名空间引用的方法?

打字[RootNameSpace1.NameSpace2.Namepsace3+SomeEnum]::SomeValue很费力,而不是一个非常好的用户expierence.我意识到你可以引用System没有命名空间的级别对象,这样[Type]::GetType(...就可以了.是否有一些我可以创建的清单或命令我可以用来缩短冗长的命名空间?

powershell namespaces

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

C-macro:将位掩码定义的寄存器字段设置为给定值

我有 32 位寄存器,其字段定义为位掩码,例如

#define BM_TEST_FIELD 0x000F0000
Run Code Online (Sandbox Code Playgroud)

我需要一个宏,它允许我将寄存器(由其地址定义)的字段(由其位掩码定义)设置为给定值。这是我想出的:

#include <stdio.h>
#include <assert.h>

typedef unsigned int u32;

/* 
 * Set a given field defined by a bit-mask MASK of a 32-bit register at address
 * ADDR to a value VALUE.
 */
#define SET_REGISTER_FIELD(ADDR, MASK, VALUE)                                      \
{                                                                                  \
  u32 mask=(MASK); u32 value=(VALUE);                                              \
  u32 mem_reg = *(volatile u32*)(ADDR); /* Get current register value           */ \
  assert((MASK) != 0);                  /* Null masks are not supported         */ \
  while(0 == (mask & 0x01))             /* …
Run Code Online (Sandbox Code Playgroud)

c

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

如何从"非标准"事件中获取Rx中的IObservable <T>?

这就是我的意思.假设我正在使用暴露事件的API,但这些事件不遵循标准EventHandlerEventHandler<TEventArgs>签名.一个事件可能看起来像这样,例如:

Public Event Update(ByVal sender As BaseSubscription, ByVal e As BaseEvent)
Run Code Online (Sandbox Code Playgroud)

现在,通常情况下,如果我想IObservable<TEventArgs>从事件中获取,我可以这样做:

Dim updates = Observable.FromEvent(Of UpdateEventArgs)( _
    target:=updateSource, _
    eventName:="Update" _
)
Run Code Online (Sandbox Code Playgroud)

但是,这并不工作,因为该Update事件不是EventHandler<UpdateEventArgs>-事实上,也就是没有UpdateEventArgs-它基本上只是自己的事.

很显然,我可以定义我自己从类派生EventArgs(即UpdateEventArgs),写另一个类来包装对象提供的Update事件,给包装类它自己的 Update事件一个EventHandler<UpdateEventArgs>,并得到一个IObservable<UpdateEventArgs>那个.但这是令人讨厌的工作量.

有没有办法IObservable<[something]>从这样的"非标准"事件中创建一个或者我运气不好?


更新:从Jon Skeet的回答中,我在下面的重载方向上轻推Observable.FromEvent:

Function FromEvent(Of TDelegate, TEventArgs As EventArgs)( _
    conversion As Func(Of EventHandler(Of TEventArgs), TDelegate), _ …
Run Code Online (Sandbox Code Playgroud)

.net vb.net system.reactive

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

通过boost ptr_vector迭代

我有一个自己的对象的ptr_vector列表.像这样的东西:

boost::ptr_vector<SomeClass> *list;
list->push_back(new SomeClass()>;
...
BOOST_FOREACH(SomeClass *tempObj, list)   // [x]
{
   tempObj->...
}


>‘boost::ptr_vector<SomeClass>*’ is not a class, struct, or union type
Run Code Online (Sandbox Code Playgroud)

boost loops ptr-vector

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