是否有任何功能差异:
if (photos.Any(it => it.Archived))
Run Code Online (Sandbox Code Playgroud)
和
if (photos.Where(it => it.Archived).Any())
Run Code Online (Sandbox Code Playgroud)
如果是这样,是否有更令人信服的理由使用一个而不是另一个?
我有一个数据绑定的组合框。在这个列表中,我需要一个分隔符。由于这是数据绑定,我做了一些与这篇文章非常相似的事情。我的数据库返回列表,包括一个 '-' 来标记分隔符需要去的地方,数据触发器使它成为一个分隔符。
<ComboBox Name="cbAction" Grid.Column="1" Grid.Row="0" Margin="5,2,5,2" DisplayMemberPath="Description" SelectedValuePath="Code" SelectionChanged="cbAction_SelectionChanged">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Code}" Value="-">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
除了我在这里遇到的问题和一个小设计问题(我将在另一个问题中提出)之外,这大部分工作正常。
使用鼠标时,用户无法选择分隔符,这是正确的。但是如果用户使用向上/向下箭头选择项目,他们可以选择分隔符。这不是默认行为,它会跳过分隔符。
如果您的 XAML 具有各种 ComboBoxItems 和一个 Separator 项(使用向上和向下键时跳过分隔符),我如何使此分隔符的行为类似于它的行为方式
我一直在努力为流行的纸牌游戏Dominion(http://www.boardgamegeek.com/boardgame/36218/dominion)制作AI播放器.
如果你不熟悉这个游戏,它基本上是一个非常简化的魔术表演:The Gathering,那里有一个大型卡片库,里面有不同的规则.在游戏过程中,玩家购买这些卡片并将它们整合到他们的套牌中.
从机器学习的角度来看,我对这款游戏感兴趣 - 我想让机器人互相攻击,让他们玩数百万游戏,并尝试数据分析,让他们玩得更好.
我不确定如何将游戏规则(每张卡上印刷的逐字指令)与核心AI决策逻辑分开.
我开始的明显路径是为每张卡创建一个类,并将规则和AI内容放在同一个地方.这有点粗糙 - 但它似乎是阻力最小的道路.但也许每张卡最好支持某种接口,然后让AI组件对这些接口进行编码?
是否有"正确"的OOP设计?或几个合理的可能性?
我正在编写一个全局钩子DLL,需要在窗口上使用GDI +进行一些绘制以响应事件.我的问题是正在绘制的窗口不断重新绘制自己,所以我绘制的内容会在我想要之前被删除.有什么办法可以阻止窗户在我需要的时候画任何东西吗?
我的钩子目前是一个WH_CALLWNDPROC钩子.使用GDI +完成绘图以响应消息WM_SIZING.我使用GDI +绘制到窗口DC(即GetWindowDC).我正在绘制的内容是正确绘制的,但随着窗口客户区重新绘制,它几乎立即被删除.创建我正在使用的窗口的程序是记事本.当光标闪烁时,我绘制的内容会被删除.
有谁知道我可以暂时挂画窗户的方式?
谢谢!
我做了一个关于框的意思是允许用户点击超链接电子邮件地址,这将把他们带到Microsoft Outlook,以便能够向电子邮件地址发送电子邮件,但我不知道如何将其链接到Outlook并允许用户单击链接以执行此操作
我想知道,这是在PHP中将数据从一个进程发送到另一个进程的最快方法吗?数据只是一个短字符串.Curretly我有一个开发了AF_UNIX套接字的解决方案,但基准测试显示将数据从一个进程传递到另一个进程需要0.100毫秒.我想知道,如果共享内存可以更快吗?但是,我不知道,如果有任何新的数据写入,如何让其他进程定期检查共享内存来检测?
当前解决方案
$server = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_bind($server, '/tmp/mysock');
socket_listen($server);
while(true) {
$r = $clients;
if(socket_select($r, $w, $e, 5) > 0) {
$client = socket_accept($server);
$d = trim(socket_read($client, 256, PHP_NORMAL_READ));
echo (microtime(true)-$d)."\n";
socket_close($client);
}
flush();
}
socket_close($server);
Run Code Online (Sandbox Code Playgroud)
和客户:
$d = microtime(true)."\n";
$socket = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_connect($socket, '/tmp/mysock');
socket_write($socket, $d, strlen($d));
socket_close($socket);
Run Code Online (Sandbox Code Playgroud)
这个解决方案完全正常,很好,但结果是这样的:
0.00019216537475586
9.5129013061523E-5
0.00011920928955078
0.00011801719665527
7.6055526733398E-5
Run Code Online (Sandbox Code Playgroud)
任何想法,如何使这个脚本更快或开发更快(可能是共享内存)的解决方案?
在此先感谢,乔纳斯
我使用logging.fileConfig()配置了日志记录.我有一个根记录器转到使用SysLogHandler的处理程序('/ dev/log',handlers.SysLogHandler.LOG_USER)
这一切都运行得很好,我在/var/log/user.log中看到了我的日志条目
问题是如何将syslog ident字符串设置为除python以外的其他内容?看来标准库中的syslog模块允许在打开日志时设置它,但是日志记录处理程序不提供此功能.
解决方案是子类SysLogHandler并使用其内部的方法的syslog库吗?这是一个仅支持unix的程序,因此直接使用syslog不会造成可移植性问题.
有几个存储过程通常由几个不同的系统调用,以便对我们数据库中的几个表进行维护.有些是自动化的,有些则不是.
其中一个表有一个列有时会关闭,我们不确定何时或为何发生这种情况.我想在表格上设置一个触发器,这样我就可以看到正在改变的内容以及何时更改,但知道哪个程序启动了修改也很有帮助.
是否可以从触发器获取存储过程的名称?如果没有,有没有其他方法来告诉什么导致修改?(我不是在谈论用户,在这种情况下用户的名字没有帮助).
android:layout_gravity="center"似乎没有像在a中RelativeLayout那样工作LinearLayout.
我希望a ImageButton和a TextView都集中在一个RelativeLayout- 是否有一个基本xml代码?
是否可以在拖放操作期间使用 QMimeData 将指针传递给 QObject?QMimeData 只有这个功能用于存储数据:
void QMimeData::setData(constQString &mimeType, const QByteArray &data)
Run Code Online (Sandbox Code Playgroud)
但我找不到将指针安全地编码为 QByteArray 的方法。
为了阐明我的目标:我需要在拖放操作期间将指向 QObject 的指针从模型传递到目标小部件。
编辑:据我所知,Mime 数据就是将独立于应用程序的数据从一个地方传递到另一个地方:url、颜色、html 代码。在我的情况下,我需要传递一个指向应用程序中的资源对象的指针。你通常如何处理这种拖放?
谢谢安东