小编And*_*bel的帖子

C++中的无效指针

我写了这个qsort:

void qsort(void *a[],int low,int high, int (*compare)(void*,void*));
Run Code Online (Sandbox Code Playgroud)

当我打电话给你

char *strarr[5];
Run Code Online (Sandbox Code Playgroud)

它表示从char**到void**的无效转换.为什么这是错的?

这是代码:

#include<cstdlib>
#include<cstdio>
#include<iostream>

using namespace std;

inline void strswap(void *a,void *b) {
    char *t=*(char**)a;
    *(char**)a=*(char**)b;
    *(char**)b=t;
}

int strcompare(void *a, void *b) {
    return strcmp(*(char**)a,*(char**)b);
}

void qsort1(void *a[],int low,int high, int (*compare)(void*,void*), void (*swap)(void*,void*)) {
    if(low>=high)
        return;
    int q=low-1;
    for(int i=low;i<=high-1;i++)
        if((*compare)(&a[i],&a[high]) < 0)
            swap(&a[i],&a[++q]);
    swap(&a[high],&a[++q]);
    qsort1(a,low,q-1,compare,swap);
    qsort1(a,q+1,high,compare,swap);
}

int main() {
    const  int n=3;
    //int a[n]={4,6,8,12,10,9,8,0,24,3};
    char *strarr[5]={"abcd","zvb","cax"};
    qsort1(strarr,0,n-1,strcompare,strswap);
    for(int i=0;i<n;i++)
        cout << strarr[i] << …
Run Code Online (Sandbox Code Playgroud)

c++ void-pointers

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

新ASP.NET Web应用程序的体系结构

我正在维护一个应用程序,它目前只是一个Web服务(使用WCF构建)和数据库后端.Web服务是分层构建的,具有linq-to-sql数据访问部分,其中核心功能位于自己的程序集中,并且包含WCF代码的Web服务程序集.核心程序集还处理所有业务逻辑规则(实际上很少).

客户现在需要应用程序的Web界面,而不是仅通过使用Web服务的其他应用程序访问它.我对现代Web应用程序设计很遗憾,所以我想就Web应用程序使用的体系结构和框架提出一些建议.Web应用程序将使用具有业务规则的相同核心程序集,并将linq-to-sql数据访问层用作Web服务.

我想到的一些概念是:

  • ASP.NET MVC(或MVC-2)
  • Web表单
  • AJAX控件 - 可能允许AJAX控件通过JSON访问现有的Web服务.

还有更多的概念我应该研究一下吗?对于一个新项目哪一个最好?

开发工具是面向.NET 3.5的Visual Studio 2008 Team Edition for Developers.如果它提供任何好处,则可以升级到Visual Studio 2010 Premium(或者甚至是Ultimate).

c# architecture asp.net-mvc asp.net-ajax

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

在C#中向上转换并根据派生类型调用特定方法

我有几个类,都来自相同的基类型.

class basetype{}
class TypeA : basetype{}
class TypeB : basetype{}
...
Run Code Online (Sandbox Code Playgroud)

其中许多存储在列表中.

List<basetype> myObjects
Run Code Online (Sandbox Code Playgroud)

与往常一样,这些类型中的每一种都必须以不同方式处理.现在我有几种处理它们的方法,以及一种将basetype作为参数的方法.

HandleTypes(TypeA obj){}
HandleTypes(TypeB obj){}
HandleTypes(basetype obj)
Run Code Online (Sandbox Code Playgroud)

目前,我的HandleAllTypes看起来像这样:

string name = obj.GetType().Name
switch(name)
{
  case "TypeA":
    return HandleTypes(obj as TypeA);
  case "TypeB":
    return HandleTypes(obj as TypeB);
  ....
}
Run Code Online (Sandbox Code Playgroud)

现在这是废话.有没有像这样的方式

HandleTypes(obj ?"as derived type"?)
Run Code Online (Sandbox Code Playgroud)

通过MSDN和其他来源搜索,一无所获.

c# reflection casting upcasting

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

将EF Code First应用程序部署到生产数据库

我在VS2010上使用代码优先方法编写了一个简单的.net mvc 3应用程序来生成模式.当我将它部署到共享生产服务器时,我收到以下错误:[SqlException(0x80131904):在数据库'master'中拒绝CREATE DATABASE权限.

这是我的型号代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace Bonappetit.Models
{
public class MenuItem
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
}

public class MenuItemDBContext : DbContext
{
    public DbSet<MenuItem> MenuItems { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器代码:

 namespace Bonappetit.Controllers
{ 
public class MenuItemsController : Controller
{
    private MenuItemDBContext db = …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework ef-code-first

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

使用C#使用签名和加密的断言创建SAML 2.0响应

嗨,我是SAML和SSO技术的新手。我正在尝试使用签名和加密的断言创建有效的SAML响应。我创建了一个已签名的SAML响应,但是我无法加密断言并创建标签。我生成的SAML响应是,

<samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_88a4cf19-6f41-46ee-9dc3-98ac80168bd9" Version="2.0" IssueInstant="2015-03-26T11:43:13.4468624Z" Destination="Test1" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer>Test</saml:Issuer>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
            <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
            <Reference URI="#_49bc8835-7c9a-4ee2-8087-7cfcbe48375f">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                    <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
                <DigestValue>My4iQVO1Oy3i6jV+Jlp0czX0mpA=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>GWfdKMCHbiqq6OhyHQ0y2LoDQkmC95fs3SKWyPMzu6jSjbf6vrMRFCrlch+DU1k3+sfsj1tFkJNMPKpxZIx2XksjnEQv3Hdqy7oPSoGiODmrky7CTKEdYbCQqu6a8dwNBLNQTClYAgDz/m5yfbFlJNPy9TtsCl2l1R/qg6dzVkA=</SignatureValue>
        <KeyInfo>
            <X509Data>
                <X509Certificate>MIIBwTCCAS6gAwIBAgIQr71oSHfrBKpKpRUTWmBFCzAJBgUrDgMCHQUAMCMxITAfBgNVBAMeGABCAEYASQBcAGQAcwBwAGUAaQBnAGgAdDAeFw0xMDAyMTkxMzI4MzlaFw0xMTAyMTkxOTI4MzlaMCMxITAfBgNVBAMeGABCAEYASQBcAGQAcwBwAGUAaQBnAGgAdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxXmIj8FBaL+94B/fNsBcoNZZraicGsm5+8VtWQIaGdM65q6vgDSQAg4zOkTQCqKh2vlN2NHSZb2XjcrUTWm2Vb279dvkOZfZ1mdQeLjM2LbXvrY4e7qK1dhZy9gZ3Mhvuk3cKPwwPsLNFifOt6OsS8ZzK7/PC+uUKznZtRsCAwEAATAJBgUrDgMCHQUAA4GBADGP1MjZm28GdYy3mQGprHQNDn8fIyBQvhwVwl4SVPxYDTKG7OsUC/QDUzy8vGXm+9qd2Es5creZS1DTAweC60JsJLdmp631FnbG4xJOCRHbR0HWyruhGkN6wPJ0RyJbdUrAcEPG4cfcYwl3oBeL48MfUD56UC0jSfBezUvnOMBX</X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature>
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
    </samlp:Status>
    <saml:Assertion Version="2.0" ID="_49bc8835-7c9a-4ee2-8087-7cfcbe48375f" IssueInstant="2015-03-26T11:43:13.6835615Z">
        <saml:Issuer>Test</saml:Issuer>
        <saml:Subject>
            <saml:NameID NameQualifier="TestDomain">TestSubject</saml:NameID>
            <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
                <saml:SubjectConfirmationData NotOnOrAfter="2015-03-26T11:48:13.7304370Z" Recipient="Test1" />
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Conditions NotBefore="2015-03-26T11:43:13.6835615Z" NotOnOrAfter="2015-03-26T11:48:13.6835615Z">
            <saml:AudienceRestriction>
                <saml:Audience>TestDomain</saml:Audience>
            </saml:AudienceRestriction>
        </saml:Conditions>
        <saml:AuthnStatement AuthnInstant="2015-03-26T11:43:13.6835615Z">
            <saml:AuthnContext>
                <saml:AuthnContextClassRef>AuthnContextClassRef</saml:AuthnContextClassRef>
            </saml:AuthnContext>
        </saml:AuthnStatement>
        <saml:AttributeStatement>
            <saml:Attribute Name="UserId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
                <saml:AttributeValue …
Run Code Online (Sandbox Code Playgroud)

.net c# saml single-sign-on

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

我们可以将Workflow Service作为Windows服务托管吗?

我正在开发一个日志应用程序,它要求我有一个作为服务公开的工作流程(工作流程服务).我们希望将其作为Windows服务托管(不希望将工作流服务作为IIS中的.svc文件托管).将其作为Windows服务的另一个原因是能够通过命名管道与服务进行通信.

我们是否可以通过命名管道公开工作流服务而无需在IIS中托管它?

wcf workflow named-pipes

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

字符串末尾通配符匹配的索引

我有一个电话号码表,将电话号码存储为 varchar(20)。我需要实现对整个数字的搜索,但也只对数字的最后一部分进行搜索,因此典型的查询将是:

SELECT * FROM PhoneNumbers WHERE Number LIKE '%1234'
Run Code Online (Sandbox Code Playgroud)

如何在Number列上放置索引以使这些搜索高效?有没有办法创建一个索引来对反转字符串上的记录进行排序?另一种选择可能是在存储数字之前反转数字,这将给出如下查询:

SELECT * FROM PhoneNumbers WHERE ReverseNumber LIKE '4321%'
Run Code Online (Sandbox Code Playgroud)

但是,这将要求数据库的所有用户始终反转字符串。可以通过存储正常数字和反转数字并通过插入/更新时的触发器更新反转数字来解决此问题。但这种解决方案并不是很优雅。

还有其他建议吗?

sql-server indexing

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

运行regsvr32.exe时,带有线程句柄的WaitForSingleObject卡住了

我有线程A创建另一个线程B,而线程A正在等待使用WaitForSingleObject等待线程B死亡.

问题是即使线程B从线程的"thread_func"返回,线程A 也不会发出信号!.

我知道因为我在thread_func(线程B的主函数)的末尾添加了跟踪(OutputDebugString),我可以看到线程B完成了它的执行,但线程A永远不会从WaitForSingleObject中出来.

现在,我还必须补充一点,这个代码在一个COM对象中,当我调用regsvr32.exe(它被卡住了!)时,上面描述的场景正在发生,所以我相信线程A来自DLLMain.

任何想法为什么线程A没有得到信号?!?!

c++ winapi multithreading synchronization waitforsingleobject

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

检查App是否在网络PC上运行

我有一个C#app应用程序在某种程度上工作.我需要做的是,如果计算机(给定IP地址)正在运行应用程序(TEKBSS.exe),则继续执行.我怎样才能做到这一点?有人能帮我吗?

c#

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

如何在QListWidget中设置最初突出显示的项目?

我正在使用QT 5.2并且有一个QListWidget女巫显示一个字符串列表,我希望第一个项目(在0)初始设置为突出显示.我尝试了以下方法:

mUi->listWidget->setCurrentRow(0);
    mUi->listWidget->setCurrentItem(mUi->listWidget->item(0),QItemSelectionModel::Select);
    mUi->listWidget->currentItem()->setSelected(true);
    mUi->listWidget->selectionModel()->select(mUi->listWidget->model()->index(0,0, QModelIndex()),QItemSelectionModel::Select); 
Run Code Online (Sandbox Code Playgroud)

即使选择了项目,它也不会突出显示.如果我使用鼠标(单击)或键盘(Tab键)导航到该项目,它会突出显示但我希望它最初不使用鼠标或键盘突出显示.怎么做?提前致谢.

qt highlight qlistwidget

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