我正在尝试学习MVVM模式.我遇到的主要问题是学习我应该在哪里声明,创建和绑定命令对象.
2个例子:
我有一个主要形式,就像一个开关板或主菜单.显示选择按钮1和视图1,选择按钮2,显示视图2.大.现在我想回到主窗体,所以我需要一个名为"主菜单"的视图1(和视图2)上的按钮.我应该在哪里定义命令和命令处理程序,以便我可以绑定到"ShowMainMenu"命令?我可以在View2ViewModel中创建它们但是我没有权限显示主视图?或者,我可以在MainView模型中创建thim但是然后如何在子视图模型中绑定它们(我根据mvvm建议使用RelayCommand obejct并且它们不会冒泡到父模型.)
我在一个主窗口视图中可以看到两个用户控件,我们称之为MainView,UC1和UC2.每个都有ViewModel MainViewModel,UC1ViewModel,UC2View Model.我在UC1上有一个名为"AddItem"的按钮.它应该在UC2的列表中添加一个项目.设置"AddItemCommand"并绑定到它的当前方法是什么.Command应该在MainViewModel,Uc1ViewModel还是UC2ViewModel?我怎么会和它结合起来.
谢谢你的帮助.
嘿,我对PHP很有经验,但我不知道关键字摘要在面向对象编程时会做什么.任何人都可以用简单的英语解释它可以用于什么?
我会在什么情况下使用abstract关键字?它如何改变类/接口?
我有以下的HTML标记:
<DIV class="bubble bubble_white">
<DIV class=bubble_large></DIV>
</DIV>
<DIV class="bubble bubble_black">
<DIV class=bubble_large></DIV>
</DIV>
Run Code Online (Sandbox Code Playgroud)
我想选择课程bubble bubble_white和bubble bubble_black.我正在考虑下面的代码,但它不起作用:
$(".bubble.[class^=bubble_]")
关于如何做的任何想法?
我现在玩的是比特,正在查看io状态的微软代码并发现了这样的事情:
enum _Iostate
{ // constants for stream states
_Statmask = 0x17};//What is this mask for???
static const _Iostate goodbit = (_Iostate)0x0;
static const _Iostate eofbit = (_Iostate)0x1;
static const _Iostate failbit = (_Iostate)0x2;
static const _Iostate badbit = (_Iostate)0x4;
static const _Iostate _Hardfail = (_Iostate)0x10;
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么这个掩码因为代码在没有这个掩码的情况下工作,并且值与whitout这个掩码保持一致.谢谢.
我是新的GUI和编程整体,到目前为止我对c有一个大致的了解并且花了很多时间编写控制台应用程序.
我正在尝试学习GUI但到目前为止还没有成功.我试过学习wxwidgets(通过官方文档),gtk(通过官方文档)和win32(forger win32教程),但仍然没有完全到达那里.
我仍然真的想但似乎找不到任何好的材料.你会推荐什么作为初学者的开始?
如何快速为delphi应用程序生成唯一的计算机ID?我以前用c#很容易做到这一点,但有时失败了.我确实希望ID是"静态的",但我不在乎是因为硬件更改或操作系统重新安装而导致id更改,我打算将其存储在注册表中并在应用启动时检查它,如果它已更改更新注册表.(我知道如何编写注册表部分,我只需要帮助唯一的ID).
谢谢.
标题听起来好像前面有很多问题.这是我的具体案例:
这是一个旅游门票销售系统.每条路线的门票数量都是有限的,因此两个人无法访问购买给定路线的最后一张门票(标准方案).但是,有"返回票证"选项..所以,我使用唯一的路径ID(数据库提供)来执行以下操作:
synchronized(bothRoutesUniqueString.intern()) {
synchronized (routeId.intern()) {
if (returnRouteId != null) {
synchronized (returnRouteId.intern()) {
return doPurchase(selectedRoute, selectedReturnRoute);
}
}
return doPurchase(selectedRoute, selectedReturnRoute);
}
}
Run Code Online (Sandbox Code Playgroud)
两个内部synchronized块是为了使线程在那里停止,只有当两个人同时购买这个特定路线的票时,而不是同时购买两个不同路线的票.第二次同步是因为有人可能试图同时购买转发路线作为出站路线.
最外面的synchronized区块是考虑场景,当两个人购买相同的门票组合时,逆转.例如,一个订购伦敦 - 曼彻斯特,另一个订购曼彻斯特 - 伦敦.如果没有外部同步块,这种情况可能会导致死锁.
(如果没有可用的票证,该doPurchase()方法返回一个Ticket对象,或者抛出一个异常)
现在,我完全清楚这是一个非常尴尬的解决方案,但是,如果它按预期工作,它会给出:
我也知道这些场景是由悲观或乐观的数据库锁处理的,因为我使用的是Hibernate,所以这些也不难实现.
我认为使用VM群集可以使用上面的代码实现水平扩展.根据Teracotta文档,它允许将单节点多线程应用程序转换为多节点,并且:
Terracotta跟踪String.intern()调用并保证这些显式实例化字符串的引用相等性.由于对interned String对象的所有引用都指向规范值,因此即使对于分布式应用程序,引用相等性检查也将按预期工作.
那么,现在问题本身:
java.util.concurrent在这种情况下,API 是否有适用的类来帮助?更新:由于大多数答案都是关注的OutOfMemoryError,我创建了一个基准测试intern(),并且内存没有被消耗掉.也许字符串表正在被清除,但这在我的情况下并不重要,因为我需要在竞争条件中对象相等,并且清除最近的字符串不应该发生在这一点:
System.out.println(Runtime.getRuntime().freeMemory());
for (int i = 0; i < 10000000; i ++) {
String.valueOf(i).intern();
}
System.out.println(Runtime.getRuntime().freeMemory());
Run Code Online (Sandbox Code Playgroud)
PS环境是JRE 1.6
为什么我们要专门研究二叉树?正如在一般的m-way搜索树中,不像DataStructure教科书中的二叉树那样重要.
使用二叉树是否超过m-way树?
如何在Visual Studio中隐藏IntelliSense的用户控件属性?
在我看来,Google的例外替代方案是
C++:断言(表达式)
GO:延迟/恐慌/恢复是在询问此问题后添加的语言功能
多值回报是否足以作为替代方案?为什么"断言"被视为替代品?如果发生错误而未正确处理错误,Google是否认为该程序可以正常运行?
Go不同寻常的功能之一是函数和方法可以返回多个值.这可以用来改进C程序中的几个笨拙的习语:带内错误返回(例如-1表示EOF)和修改参数.
在C中,写入错误由负计数发信号,错误代码在易失性位置分泌.在Go中,Write可以返回一个计数和一个错误:"是的,你写了一些字节但不是全部,因为你填充了设备".包os中*File.Write的签名是:
func (file *File) Write(b []byte) (n int, err Error)并且正如文档所述,当n!= len(b)时,它返回写入的字节数和非零错误.这是一种常见的风格; 有关更多示例,请参阅有关错误处理的部分.
Go函数的返回或结果"参数"可以给出名称并用作常规变量,就像传入参数一样.命名时,它们在函数开始时被初始化为其类型的零值; 如果函数执行不带参数的return语句,则结果参数的当前值将用作返回值.
名称不是强制性的,但它们可以使代码更短更清晰:它们是文档.如果我们命名nextInt的结果,很明显哪个返回int是哪个.
func nextInt(b []byte, pos int) (value, nextPos int) {由于命名结果已初始化并与简单的返回相关联,因此它们可以简化并澄清.这是一个使用它们的io.ReadFull版本:
func ReadFull(r Reader, buf []byte) (n int, err os.Error) {
for len(buf) > 0 && err == nil {
var nr int;
nr, err = r.Read(buf);
n += nr;
buf = buf[nr:len(buf)];
}
return;
}
Run Code Online (Sandbox Code Playgroud)
例外是一个类似的故事.已经提出了许多异常设计,但每种设计都增加了语言和运行时的复杂性.就其本质而言,例外跨越功能,甚至可能是goroutines; 它们具有广泛的影响.人们还担心它们会对图书馆产生什么影响.根据定义,它们与支持它们的其他语言相比具有特殊的经验,表明它们对库和接口规范有深远的影响.很高兴找到一种设计,使它们真正卓越,而不会鼓励常见错误转变为需要每个程序员进行补偿的特殊控制流程.
与泛型一样,例外仍然是一个悬而未决的问题.
决定:
从表面上看,使用例外的好处超过了成本,特别是在新项目中.但是,对于现有代码,异常的引入会影响所有依赖代码.如果异常可以传播到新项目之外,那么将新项目集成到现有的无异常代码中也会出现问题.由于Google的大多数现有C++代码都没有准备好处理异常,因此采用生成异常的新代码相对比较困难. …