小编Mar*_*ark的帖子

序列模式元素是否保证子元素的顺序?

给定这个xml架构(片段):

<xs:element name="GetIEnumerableResponse">
  <xs:complexType>
    <xs:sequence>
      <xs:element minOccurs="0" name="GetIEnumerableResult" nillable="true" xmlns:q4="http://schemas.microsoft.com/2003/10/Serialization/Arrays" type="q4:ArrayOfstring" />
    </xs:sequence>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

在这个xml片段中:

<ArrayOfstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  <string>string1</string>
  <string>string2</string>
  <string>string3</string>
</ArrayOfstring>
Run Code Online (Sandbox Code Playgroud)

<string> </ string>元素可以按任何顺序出现吗?因此,这两个XML片段在语义上是等价的:

<ArrayOfstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  <string>string1</string>
  <string>string2</string>
  <string>string3</string>
</ArrayOfstring>

<ArrayOfstring xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
  <string>string3</string>
  <string>string2</string>
  <string>string1</string>
</ArrayOfstring>
Run Code Online (Sandbox Code Playgroud)

或者模式中的sequence元素是否意味着<string> </ string>元素必须以相同的顺序出现才能在语义上等效?

架构中是否存在要求解析器/反序列化器按照它们在xml文本中存在的顺序来保留元素吗?如果我理解正确,通常(即没有架构)没有要求这样做(即使大多数解析器通常这样做).

xml schema xsd

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

为什么64位MSBuild加载32位扩展?

我正在尝试在64位计算机上使用MSBuild(v4.0)构建项目.出于某种原因,MSBuild正在尝试加载32位扩展,我无法弄清楚原因.为了证明这个问题,我已经将问题缩小到最小的集合.

使用以下MSBuild项目文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
    <Target Name="test">
        <Message Text="bin path: $(MSBuildBinPath)" />
        <Message Text="extensions path: $(MSBuildExtensionsPath)" />
        <Message Text="extensions path (x86): $(MSBuildExtensionsPath32)" />
        <Message Text="extensions path (x64): $(MSBuildExtensionsPath64)" />
    </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 8/27/2010 9:56:35 AM.
Project "D:\5\test.proj" on node 1 (default targets).
test:
  bin path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319
  extensions path: C:\Program Files (x86)\MSBuild
  extensions path (x86): C:\Program Files (x86)\MSBuild
  extensions path …
Run Code Online (Sandbox Code Playgroud)

msbuild 64-bit 32-bit 32bit-64bit

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

什么是适用于嵌入式系统的排序算法?

我正在为嵌入式系统开发软件,我需要实现一个排序例程,而我在选择最佳解决方案时遇到了麻烦.我的要求如下:

  1. 因为这是一个非常受内存限制的系统,所以空间复杂性是一个主要因素.
  2. 因为要排序的元素的数量通常很小,并且排序仅偶尔发生,所以时间复杂度不一定是主要因素.
  3. 稳定的算法是我的应用程序的要求.
  4. 因为这是一个嵌入式系统,所以代码大小是一个因素.
  5. 无法保证数据最初的排序几乎是按顺序排列的.

我考虑过以下算法:

  • 泡泡排序(是的,即使我很惭愧地说出来)
  • 侏儒排序
  • 插入排序
  • 就地合并排序(虽然在我看来,链接列表比数组更理想?)

虽然答案(对于我的确切情况)可能很好,"呃,呃,这并不重要,对我们所关心的所有人使用冒泡排序",这个答案并不是很有用.通常,哪种排序算法对嵌入式系统有用?

sorting embedded algorithm

9
推荐指数
2
解决办法
3520
查看次数

通过部分分区键查询Cassandra

在Cassandra中,我可以创建一个复合分区键,与我的聚类键分开:

CREATE TABLE footable (
    column1 text,
    column2 text,
    column3 text,
    column4 text,
    PRIMARY KEY ((column1, column2))
)
Run Code Online (Sandbox Code Playgroud)

据我了解,通过分区键查询是一种非常有效(最有效的?)方法,用于检索数据.然而,我不知道的是,仅通过复合分区键的一部分进行查询也是有效的.

在MSSQL中,只要从第一个开始包含组件(在此示例中为column1而不是column2),这将是高效的.卡桑德拉也是如此吗?在这里查询仅基于column1的行是否高效?

cql cassandra cassandra-2.0

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

为什么svcutil.exe的/ reference选项不起作用?

我正在尝试使用svcutil.exe从一组.wsdl文件生成-only-服务契约(接口).当我这样做时(来自一个http托管的wsdl),它会选择包含的模式并为它们生成所有代码.

大.

但是,我真正想要做的是使用xsd.exe工具使用已经从模式文件生成的一组类(原因并不重要,只需要说我需要输入类型一个程序集,服务在另一个程序集合).我成功地生成了包含所有类型的程序集.

当我尝试让svcutil.exe使用该程序集中的类型时,会出现此问题.我的命令行看起来像这样:

svcutil /target:code /noconfig /reference:my_types.dll http://path/to/wsdl
Run Code Online (Sandbox Code Playgroud)

这很好,但生成的代码包含my_types.dll文件中所有类型的重复项.我从svcutil.exe的文档中了解到,这是/ reference:参数要克服的确切问题.然而,在我的情况下,它不起作用.

为什么?

xsd wsdl svcutil.exe

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

WCF跟踪错误:找不到配置评估上下文

我已经设置了一个自托管服务方案,我以编程方式设置了多个服务主机.对于我打开的每个主机,我在跟踪日志中看到以下错误:

<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Warning">
    <TraceIdentifier>http://msdn.microsoft.com/en-US/library/System.ServiceModel.EvaluationContextNotFound.aspx</TraceIdentifier>
    <Description>Configuration evaluation context not found.</Description>
    <AppDomain>myprogram.exe</AppDomain>
</TraceRecord>
Run Code Online (Sandbox Code Playgroud)

我已经读过这是因为使用了未在配置文件中声明的扩展,我确实使用了自定义行为扩展,但是将它添加到.exe的配置文件中没有任何效果:

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name="myext" type="mytype, myassembly" />
        </behaviorExtensions>
    </extensions>
    ....
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

请注意,我没有在配置文件中的任何其他位置使用此扩展,我将以编程方式将其添加到服务主机.我甚至设置了一个虚拟行为,使用扩展只是为了看它是否能解决问题,但事实并非如此.

为什么我在日志中看到此错误?

.net wcf

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

为什么我的密钥标识符不匹配?

我正在尝试解密S/MIME电子邮件(最初通过Outlook发送),为此,我正在使用bouncycastle API.不过,我遇到了麻烦.

我在Windows证书存储区中拥有收件人的证书.我之前用它将签名和加密的电子邮件发送给另一方,然后他们用它向我发送加密回复.然后我将证书(带私钥)导出为.pfx文件,然后将此pfx文件加载到Java KeyStore中.但是,它不起作用,我怀疑这是因为主题密钥标识符不匹配.

这是我用来从KeyStore获取主题密钥id的代码:

KeyStore ks = KeyStore.getInstance("PKCS12");
char[]   pw = "password".toCharArray();

ks.load(new FileInputStream("d:\\cert_priv_key.pfx"), pw);

Enumeration en = ks.aliases();

while( en.hasMoreElements() )
{
    String alias = (String)en.nextElement();
    System.out.println(alias);

    if( ks.isKeyEntry(alias) )
    {
        Certificate[]   chain = ks.getCertificateChain(alias);
        X509Certificate cert  = (X509Certificate)chain[0];

        byte[] id = cert.getExtensionValue("2.5.29.14");

        System.out.println("  " + toHex(id));
    }
}
Run Code Online (Sandbox Code Playgroud)

这将打印出以下密钥标识符:

04 16 04 14 88 ed bb 7c 64 7b 41 63 48 0a 24 40 2b 3c d0 78 72 3c 30 b3
Run Code Online (Sandbox Code Playgroud)

但是,当我检查Windows证书存储区时,密钥标识符是不同的:

88 ed bb …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle certificate smime

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

.NET CLR是否具有循环依赖性?

可能重复:
Microsoft如何创建具有循环引用的程序集?

当我发现奇怪的东西时,我正在整理一个小的PowerShell cmdlet,它会给我一个.NET程序集的依赖树:

.NET 2.0 CLR似乎具有循环依赖性:System取决于System.ConfigurationSystem.Configuration依赖于System.这使得提供完整的依赖树变得非常困难.

我在这里吗?是否有一些我不知道的诡计?为什么会出现这种明显违反简单和几乎普遍接受的依赖最佳实践的方式(当然,这些方法如何引入)?

.net clr circular-dependency

7
推荐指数
0
解决办法
122
查看次数

如何配置Eclipse,GCC和OpenOCD以使用STM32F4Discovery板?

我拥有一块STM32F4Discovery板,它包含一个STM32F4微控制器和一个ST-LINKv2调试器接口.我想在这个设置上做一些简单的C编程,并希望使用免费的工具来完成它.

这就是我所知道的:

  • 可以使用各种工具链(例如YAGARTO或其他工具)将Eclipse配置为针对各种ARM目标进行交叉编译.
  • Eclipse可以使用GDB进行远程调试.
  • OpenOCD提供了一个GDB服务器.
  • OpenOCD(最新版本)特别支持ST-LINKv2和STM32F4Discovery板(包括该板的脚本).

这是我不知道的:如何将这些碎片组合成一个连贯的整体.我相信所有必要的活动部件都存在,但我对如何组装它们感到茫然.我找到了点点滴滴,通常以"安装Eclipse Indigo"之类的东西开头.是否有简单的教程,步骤列表或要检查的内容?

eclipse gcc openocd stm32f4discovery

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

为什么我在__libc_init_array中有_init的未定义引用?

我正在尝试使用Yagarto和Eclipse为ARM微控制器平台构建一个简单的项目.在我的启动代码中,我有这个(我认为这是相当标准和无趣的):

void Reset_Handler(void)
{
  /* Initialize data and bss */
  __Init_Data();

  /* Call CTORS of static objects */
  __libc_init_array();

  /* Call the application's entry point.*/
  main();

  while(1) { ; }
}
Run Code Online (Sandbox Code Playgroud)

除非我注释掉调用__libc_init_array(),否则我会从链接器中收到以下错误:

arm-none-eabi-g++ -nostartfiles -mthumb -mcpu=cortex-m4 -TC:/Users/mark/workspace/stm32_cpp_test/STM32F40x_1024k_192k_flash.ld -gc-sections -Wl,-Map=test_rom.map,--cref,--no-warn-mismatch -o stm32_cpp_test "system\\syscalls.o" "system\\startup_stm32f4xx.o" "system\\mini_cpp.o" "system\\cmsis\\system_stm32f4xx.o" main.o 
d:/utils/yagarto/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi/lib/thumb/v7m\libg.a(lib_a-init.o): In function `__libc_init_array':
C:\msys\1.0\home\yagarto\newlib-build\arm-none-eabi\thumb\v7m\newlib\libc\misc/../../../../../../../newlib-1.20.0/newlib/libc/misc/init.c:37: undefined reference to `_init'
collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

为什么我收到此"未定义引用"错误?我错过了什么?我假设有一些我错过的链接器标志,但我不能为我的生活找出什么.

linker gcc yagarto

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