问题列表 - 第22082页

IDisposable的Flyweight和Factory问题

我似乎在精神上陷入了Flyweight模式的困境.

首先,假设我有一次性用品DisposableFiddle和工厂FiddleFactory:

public interface DisposableFiddle : IDisposable
{
    // Implements IDisposable
}

public class FiddleFactory
{
    public DisposableFiddle CreateFiddle(SomethingThatDifferentiatesFiddles s)
    {
        // returns a newly created fiddle.
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在我看来,客户很清楚FiddleFactory工厂声称没有创建小提琴的所有权,并且客户有责任在完成它时处理小提琴.

但是,让我们说我想通过使用Flyweight模式在客户端之间共享小提琴:

public class FiddleFactory
{
    private Dictionary<SomethingThatDifferentiatesFiddles, DisposableFiddle> fiddles = new ...;        

    public DisposableFiddle CreateFiddle(SomethingThatDifferentiatesFiddles s)
    {
        // returns an existing fiddle if a corresponding s is found,
        // or a newly created fiddle, after adding it to the dictionary,
        // if no corresponding …
Run Code Online (Sandbox Code Playgroud)

c# idisposable factory-pattern flyweight-pattern

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

对于持久化对象,面向文档的数据库是否比关系数据库更合适?

在数据库使用方面,过去十年是ORM的时代,数百人争相在普通的老式RMDBS中坚持我们的对象图.现在,我们似乎正在目睹面向文档的数据库时代的到来.这些 数据库针对无架构文档进行了高度优化,但对于它们并行扩展和查询群集的能力也非常具有吸引力.

面向文档的数据库与RDBMS相比还具有一些优势,可以在面向对象的设计中保持数据模型的持久性.由于表是无模式的,因此可以将属于不同类的对象并排存储在继承层次结构中.此外,随着域模型的更改,只要代码可以处理从旧版本的域类中获取对象,就可以避免在每次更改时都迁移整个数据库.

另一方面,面向文档的数据库的性能优势主要出现在存储更深层文档时.在面向对象的术语中,由其他类组成的类,例如,博客文章及其注释.在大多数这样的例子中,我可以提出,例如博客,读取访问的收益似乎被每次新评论时必须写整个博客文章"文档"的惩罚所抵消.添加.

在我看来,面向文档的数据库可以为面向对象的系统带来显着的好处,如果一个人非常小心地组织深度图中的对象,这些图是针对数据读写方式而优化的,但这意味着了解用例面前.在现实世界中,我们经常不知道,直到我们实际上有一个实时实现,我们可以分析.

那么关系型和面向文档的数据库是一个波动和环形交叉口的情况吗?我对人们的意见和建议感兴趣,特别是如果有人在面向文档的数据库上构建了任何重要的应用程序.

database orm document-oriented-db

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

什么情况需要使用eval(),因为没有其他选择?

我知道eval,出于速度和安全原因,我应该避免使用JavaScript.但就PHP而言,很少提及安全性.更常见的是,由于偶然使用,程序运行速度比应该慢eval.

你应该在什么具体情况下使用,eval因为没有别的办法呢?

为清楚起见:

我们不是在谈论用户提供的数据.所以问题集中在纯粹和完全受控的服务器端有效使用eval.

php performance eval

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

scala泛型约束如何对可空类型起作用

我已经尝试了两种方法将泛型类型参数约束为可空类型,但两者似乎都有一些意想不到的问题.

第一次尝试(使用T <:AnyRef):

scala> def testAnyRefConstraint[T <: AnyRef](option:Option[T]):T = {
     | //without the cast, fails with compiler error:
     | //    "found: Null(null) required: T"
     | option getOrElse null.asInstanceOf[T]
     | }
testAnyRefConstraint: [T <: AnyRef](Option[T])T

scala> testAnyRefConstraint(Some(""))
res0: java.lang.String = 

scala> testAnyRefConstraint(Some(0))
<console>:16: error: inferred type arguments [Int] do not conform to method testAnyRefConstraint's type parameter bounds [T <: AnyRef]
       testAnyRefConstraint(Some(0))
Run Code Online (Sandbox Code Playgroud)

这似乎完全符合我的要求,但我不明白为什么需要将null转换为T.


第二次尝试(使用T>:Null):

scala> def testNullConstraint[T >: Null](option:Option[T]):T = {
     | option getOrElse null
     | }
testNullConstraint: [T >: Null](Option[T])T

scala> …
Run Code Online (Sandbox Code Playgroud)

generics scala nullable constraints

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

MPI实现:MPI_Recv可以从许多MPI_Send接收消息吗?

现在我尝试使用MPI_Send和MPI_Recv在多个进程中传递最佳找到的解决方案.每个流程中找到的最佳解决方案应该传递到控制流程,以便存储所有最佳解决方案并在需要时发送到其他流程.我的问题是如何实现它?例如,一旦进程1找到新的最佳,它就可以调用MPI_Send并将其发送到控制进程.有没有办法让控制过程检测到有消息要接收?每个MPI_Send都需要MPI_Recv吗?期待听取您的专家的意见.谢谢!

谢谢你的建议.我想要做的是让几个工作进程向一个控制进程发送消息.工作流程决定何时发送.控制过程必须检测何时接收.MPI_Proble可以这样做吗?

implementation mpi

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

const之间的区别.指针和参考?

常量指针和引用之间有什么区别?

顾名思义的常量指针不能再绑定.参考的情况也是如此.

我想知道在哪种情况下优先于另一种情况.他们的C++标准及其实现有何不同?

干杯

c++ pointers reference

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

Unix上的递归mkdir()系统调用

在阅读具有该名称的Unix系统调用的mkdir(2)手册页后,看来该调用不会在路径中创建中间目录,只会在路径中创建最后一个目录.是否有任何方法(或其他功能)来创建路径中的所有目录,而无需手动解析我的目录字符串并单独创建每个目录?

c unix posix mkdir

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

使用抽象类作为插件框架中的契约

抽象类可以用作"主机"和"插件"之间的契约对象吗?这个想法是插件继承了契约(我们称之为适配器).我们也理解框架中的所有参与者都必须继承MarshalByRefObject(MBRO).所以,这就是我们的想法 -

主持人:

class Host : MarshalByRefObject
{
}
Run Code Online (Sandbox Code Playgroud)

合同:

public abstract class PluginAdapter : MarshalByRefObject
{
}
Run Code Online (Sandbox Code Playgroud)

插件:

class myPlugin : PluginAdapter
{
}
Run Code Online (Sandbox Code Playgroud)

这三个都存在于不同的asm中.我们的主机将为每个插件创建一个新的AppDomain,并按如下方式创建PluginAdapter:

{
    ObjectHandle instHandle = Activator.CreateInstance(
    newDomain, data.Assembly.FullName, data.EntryPoint.FullName);

    PluginAdapter adapter = (PluginAdapter)instHandle.Unwrap();
}
Run Code Online (Sandbox Code Playgroud)

编辑:data具体类型在哪里myPlugin.

我们想知道该框架的实施是否有效.我们已经看到使用接口(IPlugin)进行插件派生的文章,以及作为契约的具体类.这些文章还会说可以使用抽象类,但没有给出该实现的示例.是否要求合同是具体的类?

编辑:在Richard Blewett的这个例子中 - C#Reflection - 他使用了一个更简单的实现:

合同:

public interface IPlugIn  
{  
    // do stuff  
}
Run Code Online (Sandbox Code Playgroud)

插件:

public class PlugIn : MarshalByRefObject, IPlugIn  
{  
}
Run Code Online (Sandbox Code Playgroud)

现在,如果使用抽象类作为契约,则插件不能继承合同和MBRO.那么,什么成为可扩展插件框架的最佳实现.我们是否应该继续实施远程操作,尽管最初我们正在开发单机操作?该项目预计将分布在整个网络中,也可能跨越互联网.我们还没有实现Tcp,因为我们正在努力让插件框架的基础知识得到充分理解和操作.

使用环回在单台机器上实现Tcp远程处理是否有意义?

c# plugins marshalbyrefobject .net-3.5

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

使用SSH时,仅在终止时显示python脚本的输出?

我正在运行一个脚本来管理远程(SSH)计算机上的进程.我们称之为five.py

#!/usr/bin/python
import time, subprocess

subprocess.call('echo 0',shell=True)
for i in range(1,5):
   time.sleep(1)
   print(i)
Run Code Online (Sandbox Code Playgroud)

如果我现在跑

ssh user@host five.py
Run Code Online (Sandbox Code Playgroud)

我想看看输出

0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

逐秒出现在我的标准输出上(就像在本地执行时那样)..会发生什么:我立即从"echo"获得0,其余只在整个程序结束后立即出现.(无法将'five.py'嵌套到bash脚本中;通过'python five.py'调用它;或者使用'print >> sys.stdout,i').

这必须与python写入stdout的方式有关,因为其他程序表现得很正常.一个功能解决方法是

import time, subprocess
import sys

subprocess.call('echo 0',shell=True)
for i in range(1,5):
  time.sleep(1)
  sys.stdout.write(str(i)+'\n')
  sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

但是必须有一个比改变我所有的打印陈述更好的解决方案!

python ssh stdout

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

同一层中的洋葱架构依赖关系:基础架构和Web通信

我正在使用Jeffrey Palermo描述的Onion架构设计ASP.NET MVC应用程序.

这是一个ASP.NET MVC 2.0项目中,我要求所有的视图中使用专用的视图模型是强类型的 - 我们不会通过域模型对我们的看法.我们使用AutoMapper进行翻译 - AutoMapper在基础架构中被隔离,Web不知道或不关心AutoMapper的使用.

目前,我正在Web项目中定义IViewModelMapping接口 - 只是因为控制器将使用此服务,并且它可以直接访问自己的View模型.这样,界面可以访问域模型(在Core中)和View模型(在Web中).

为了提供IViewModelMapping接口的实际实现,我在Infrastructure项目中创建了一个ObjectMapping命名空间,它将实际的映射实现与洋葱的Intrastructure隔离开来.在这样做时,这将要求Infrastructure依赖于BOTH Core AND Web.

我的问题是:由于这两个项目在技术上都位于洋葱的郊区(在同一层中) - 是否允许一个项目依赖于该层中的另一个项目?有没有人注意到这个设计有任何潜在的陷阱?

另一种设计是将IViewMapper接口移动到Core中 - 但这是不可能的,因为Core无法访问ViewModel类.我也可以将视图模型移动到Core中,但我觉得它们不属于那里,因为它们特定于UI层.

建议的体系结构如下 - 请注意,基础结构依赖于Core和Web.Web保持隔离状态,只能访问Core业务逻辑.

http://www.matthidinger.com/images/onion-arch.png

architecture asp.net-mvc n-tier-architecture onion-architecture

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