我在互联网上发现了以下问题,并想知道我将如何解决它:
你得到一个包含0和1的数组.找到O(n)时间和O(1)空间算法以找到具有相等数量的1和0的最大子序列.
例子:
10101010- 满足问题的最长子序列是输入本身1101000- 满足该问题的最长子序列是110100
我需要编写一个批处理文件,该文件接收到包含大量空子目录的目录并将其全部删除.
这样做的最快方法是什么?(快速我的意思是不喜欢Windows资源管理器在您尝试删除此类目录时所执行的操作...)
澄清:
我不是要删除只有空目录.事实上,我试图删除的这个目录大多是空的子目录.
我想确定VBA中特定日期不同国家/地区的GMT/UTC(包括夏令时)的时间偏差.有任何想法吗?
编辑(来自自我回答):
谢谢0xA3.我快速阅读链接页面.我假设您只能获得运行Windows的本地的GMT偏移量:
ConvertLocalToGMT
DaylightTime
GetLocalTimeFromGMT
LocalOffsetFromGMT
SystemTimeToVBTime
LocalOffsetFromGMT
Run Code Online (Sandbox Code Playgroud)
在Java中,您可以执行以下操作:
TimeZone bucharestTimeZone = TimeZone.getTimeZone("Europe/Bucharest");
bucharestTimeZone.getOffset(new Date().getTime());
Calendar nowInBucharest = Calendar.getInstance(TimeZone.getTimeZone("Europe/Bucharest"));
nowInBucharest.setTime(new Date());
System.out.println("Bucharest: " + nowInBucharest.get(Calendar.HOUR) + ":" + nowInBucharest.get(Calendar.MINUTE));
Run Code Online (Sandbox Code Playgroud)
这意味着我可以获得不同国家(时区)的偏移量,因此我也可以得到布加勒斯特的实际时间.我可以在VBA中这样做吗?
我收到此错误消息 - Procedure too large- 在VBA中.这个错误的原因和出路是什么?
我需要通过某个过滤器获取记录数量.
从理论上讲这条指令:
_dbContext.People.Count (w => w.Type == 1);
Run Code Online (Sandbox Code Playgroud)
它应该生成SQL,如:
Select count (*)
from People
Where Type = 1
Run Code Online (Sandbox Code Playgroud)
但是,生成的SQL是:
Select Id, Name, Type, DateCreated, DateLastUpdate, Address
from People
Where Type = 1
Run Code Online (Sandbox Code Playgroud)
生成的查询在具有许多记录的数据库中运行需要更长的时间.
我需要生成第一个查询.
如果我这样做:
_dbContext.People.Count ();
Run Code Online (Sandbox Code Playgroud)
实体框架生成以下查询:
Select count (*)
from People
Run Code Online (Sandbox Code Playgroud)
..运行得非常快.
如何生成第二个查询将搜索条件传递给计数?
我想声明安装后存在某个注册表值,所以我添加了以下组件:
<Component Id="RegistryEntryContextMenuOdt" Guid="4BA5BA24-4F65-4BDF-99EB-CB4B947F31A9" DiskId="1" KeyPath="yes">
<RegistryKey Id="RegKeyOdt" Root="HKCR" Action="create" Key=".odt">
<RegistryValue Type="string" Value="openDocument.WriterDocument.1" />
</RegistryKey>
</Component>
Run Code Online (Sandbox Code Playgroud)
在安装之前可能已经设置了键/值.但是,我希望将值设置为我的特定值,即它将被我的值覆盖.
我现在的问题是,卸载我的产品时总会删除此值.但是,如果我的安装程序添加了值,我只希望删除该值.如果我的安装程序刚刚修改了该值,则应恢复之前的值(或者,如果不可能,则我的值应保持不变).
请注意,卸载时不会删除密钥本身.这似乎工作正常,因为我Action="create"在RegistryKey元素上指定.
是否有类似的设置RegistryValue可以创建值,但不能在安装时删除它?
更新:HKCR下的两个注册表项都是机器范围的settinge,即它们来自注册表的HKLM\SOFTWARE\Classes分支.
有没有办法编写一个在所有模式下匹配的XSL 1.0模板?
或者我是否必须为每个现有模式编写单独的模板(包括将来添加的模式的其他模板)?
这是我有的:
<xsl:apply-templates mode="mode1" />
...
<xsl:apply-templates mode="mode2" />
...
<!-- Do not process text content of nodes no matter in what mode -->
<!-- Is there a way to have only one template here? -->
<xsl:template match="text()" mode="mode1" />
<xsl:template match="text()" mode="mode2" />
Run Code Online (Sandbox Code Playgroud) 在我的WPF应用程序中,我想将一个输入手势附加到命令,以便输入手势在主窗口中全局可用,无论哪个控件具有焦点.
在我的情况下,我想绑定Key.PageDown到一个命令,但是,只要某些控件接收焦点(例如TextBox或TreeView控件),这些控件就会接收键事件并且不再触发命令.这些控件没有特定CommandBindings或InputBindings定义.
这是我定义输入手势的方式:
XAML:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300" >
<StackPanel>
<TreeView>
<TreeViewItem Header="1">
<TreeViewItem Header="1.1"></TreeViewItem>
<TreeViewItem Header="1.2"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="2" ></TreeViewItem>
</TreeView>
<TextBox />
<Label Name="label1" />
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
码:
using System;
using System.Windows;
using System.Windows.Input;
public static class Commands
{
private static RoutedUICommand _myCommand;
static Commands()
{
_myCommand = new RoutedUICommand("My Command",
"My Command",
typeof(Commands),
new InputGestureCollection()
{
new KeyGesture(Key.PageDown, ModifierKeys.None)
});
}
public static ICommand MyCommand
{
get { …Run Code Online (Sandbox Code Playgroud) 我要用XSLT填充总共20个元素.在我的XML代码中,我有一个<select>带有值的,无论如何都要不写20个表单?
我的XML:
<output>
<select>
<id>1</id>
<name>One</name>
</select>
<select>
<id>2</id>
<name>Two</name>
</select>
<select>
<id>3</id>
<name>Three</name>
</select>
<!-- An more -->
</output>
Run Code Online (Sandbox Code Playgroud)
我的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<select name="values[]">
<option value="0"> </option>
<xsl:for-each select="output/select">
<option>
<xsl:attribute name="value"><xsl:value-of select="id"></xsl:attribute>
<xsl:value-of select="name" />
</option>
</xsl:for-each>
</select>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
期望的输出:
<html>
<body>
<select name="values[]">
<option value="0"> </option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<!-- But 20 times -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我想确定XML文档中的两个不同的子节点是否相等.如果两个节点具有相同的属性集和子注释,并且所有子注释也相等(即整个子树应该相等),则应认为它们是相等的.
输入文档可能非常大(最多60MB,超过100000个节点需要比较)并且性能是个问题.
检查两个节点是否相等的有效方法是什么?
例:
<w:p>
<w:pPr>
<w:spacing w:after="120"/>
</w:pPr>
<w:r>
<w:t>Hello</w:t>
</w:r>
</w:p>
<w:p>
<w:pPr>
<w:spacing w:after="240"/>
</w:pPr>
<w:r>
<w:t>World</w:t>
</w:r>
</w:p>
Run Code Online (Sandbox Code Playgroud)
此XML片段描述了OpenXML文档中的段落.该算法将用于确定文档是否包含具有与文档前面的另一段相同属性(w:pPr节点)的段落(w:p节点).
我的一个想法是将节点的外部XML存储在一个哈希集中(通常我必须首先得到规范的字符串表示,其中属性和子注释总是以相同的方式排序,但我可以期望我的节点已经到是这样一种形式).
另一个想法是为每个节点创建一个XmlNode对象,并编写一个比较所有属性和子节点的比较器.
我的环境是C#(.Net 2.0); 我们非常欢迎任何反馈和进一步的想法.也许有人甚至已经有了一个很好的解决方案?
编辑:微软的XmlDiff API实际上可以这样做,但我想知道是否会有一个更轻量级的方法.XmlDiff似乎总是产生一个diffgram,并且总是先生成一个规范的节点表示,这两件事我都不需要.
EDIT2:我最终根据这里提出的建议实现了我自己的XmlNodeEqualityComparer.非常感谢!!!!
谢谢,divo