小编Mic*_*ray的帖子

这个C++功能的名称是什么?

我正在写一些C++代码,错误地省略了函数的名称WSASocket.但是,我的编译器没有引发错误并将我SOCKET与整数值1而不是有效的套接字相关联.

有问题的代码应该是这样的:

this->listener = WSASocket(address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED);
Run Code Online (Sandbox Code Playgroud)

但相反,它看起来像这样:

this->listener = (address->ai_family, address->ai_socktype, address->ai_protocol, NULL, NULL, WSA_FLAG_OVERLAPPED);
Run Code Online (Sandbox Code Playgroud)

来自其他语言,这看起来可能是某种匿名类型.该功能的名称是什么,如果它真的是一个功能?

它的目的是什么?

当你不知道从哪里开始时,很难搜索它.

c++

82
推荐指数
3
解决办法
6348
查看次数

C#4.0编译器崩溃

此代码示例无法编译.有什么工作吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    using church = Func<dynamic, dynamic, dynamic>;

    class Program
    {
        static void Main(string[] args)
        {
            church True = (a, b) => a;
            church False = (a, b) => b;

            Func<church, church, church> And = (x, y) => x(y(True, False), False);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误6内部编译器错误(地址5476A4CC处的0xc0000005):可能的罪魁祸首是'EMITIL'.编译器中发生内部错误.若要解决此问题,请尝试简化或更改下面列出的位置附近的程序.列表顶部的位置更接近发生内部错误的位置.可以使用/ errorreport选项向Microsoft报告此类错误.TestApplication

c# compiler-construction crash

50
推荐指数
4
解决办法
2670
查看次数

将System.Drawing.Bitmap缩放到给定大小,同时保持纵横比

我想将a缩放System.Drawing.Bitmap到至少小于某个固定的宽度和高度.这是为网站上的图库创建缩略图,所以我想保持纵横比相同.

我有一些解决方案,但似乎没有一个真正做我需要的; 它们围绕着基于保持宽度或高度相同但不改变两者的缩放而展开.

一个例子:

如果我有一个4272 x 2848图像,并且我想将其缩放到1024 x 768的大小,那么生成的图像应该是1024 x 683并填充(带黑色边框)到1024 x 768.

如何处理大于所需尺寸且小于要求尺寸的图像,以及填充图像,这些图像在缩放后不会达到我需要的确切尺寸?

c# graphics imaging

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

为什么System.Type.GetHashCode为所有实例和类型返回相同的值?

以下代码生成46104728的输出:

using System;

namespace TestApplication
{
    internal static class Program
    {
        private static void Main()
        {
            Type type = typeof(string);
            Console.WriteLine(type.GetHashCode());
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但这样做:

using System;

namespace TestApplication
{
    internal static class Program
    {
        private static void Main()
        {
            Type type = typeof(Program);
            Console.WriteLine(type.GetHashCode());
            Console.ReadLine();
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

然而,在http://ideone.com上,它会为每种类型产生不同的结果.此问题现已在多个系统上重现.我现在正在使用.NET 4.0.

.net c# reflection

42
推荐指数
2
解决办法
8353
查看次数

在不使用迭代的情况下反转数组

今天有人向我提出一个问题,我不相信这是可能的,但我可能是错的,或者我在想它.如何在不使用C中的迭代的情况下反转数组?

我的想法是,这是不可能的,因为数组可以是任何大小的事实,没有使用某种形式的迭代,没有C程序可以用这种支持表达.

c algorithm

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

这个最近邻算法中"来自不同顶点链"的含义是什么?

以下伪代码来自The Algorithm Design Manual的在线预览版本的第一章(本PDF第7页).

这个例子是一个有缺陷的算法,但我仍然想要理解它:

[...]一个不同的想法可能是重复连接最接近的一对端点,这些端点的连接不会产生问题,例如过早终止循环.每个顶点都以其自己的单个顶点链开始.在将所有内容合并在一起之后,我们将最终得到一个包含其中所有点的链.连接最后两个端点为我们提供了一个循环.在执行此最近对启发式过程中的任何步骤中,我们将有一组可用于合并的单顶点和顶点不相交链.在伪代码中:

ClosestPair(P)
    Let n be the number of points in set P.
    For i = 1  to n ? 1 do
        d = ?
        For each pair of endpoints (s, t) from distinct vertex chains
            if dist(s, t) ? d then sm = s, tm = t, and d = dist(s, t)
        Connect (sm, tm) by an edge
    Connect the two endpoints by an edge
Run Code Online (Sandbox Code Playgroud)

请注意,sm并且tm应该s …

algorithm graph-theory pseudocode nearest-neighbor

31
推荐指数
2
解决办法
3962
查看次数

为什么.NET中最低地址空间(非空)的内存访问报告为NullReferenceException?

这导致AccessViolationException抛出:

using System;

namespace TestApplication
{
    internal static class Program
    {
        private static unsafe void Main()
        {
            ulong* addr = (ulong*)Int64.MaxValue;
            ulong val = *addr;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会导致NullReferenceException抛出:

using System;

namespace TestApplication
{
    internal static class Program
    {
        private static unsafe void Main()
        {
            ulong* addr = (ulong*)0x000000000000FF;
            ulong val = *addr;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它们都是无效指针,都违反了内存访问规则.为什么NullReferenceException?

.net c# clr

30
推荐指数
2
解决办法
1373
查看次数

使用System.Net.Sockets.Socket.AcceptAsync模型时堆栈溢出

对于C#和.NET的System.Net.Sockets.Socket.AcceptAsync方法,需要处理返回值"false"以便处理SocketAsyncEventArgs来自同步处理的连接的立即可用状态.微软提供了一些例子(在System.Net.Sockets.SocketAsyncEventArgs类页面),如果存在大量挂起连接,则会导致堆栈溢出,这可以在任何实现其处理模型的系统上利用.

解决此问题的其他想法是创建一个调用处理程序方法的循环,其条件是值Socket.AcceptAsync返回等于false,并且如果值指示操作则中断循环(以允许延迟处理)正在异步完成(真实).但是,此解决方案还会导致堆栈溢出漏洞,因为与SocketAsyncEventArgs传递的关联的回调Socket.AcceptAsync在方法结束时有一个调用Socket.AcceptAsync,该调用还有一个用于立即可用,同步接受的连接的循环.

正如您所看到的,这是一个非常可靠的问题,我还没有找到一个不涉及System.Threading.ThreadPool并创建大量其他方法和调度处理的好解决方案.据我所知,与之相关的异步套接字模型Socket.AcceptAsync需要的内容要多于MSDN上的示例中所示的内容.

有没有人有一个干净有效的解决方案来处理从Socket.AcceptAsync同步接受的立即挂起的连接,而无需创建单独的线程来处理连接而不使用递归?

c# sockets asynchronous

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

在Entity Framework中使用唯一约束交换值

我对一个Navigations名为的表的列有一个唯一约束Index.我有两个Navigation实体,我想交换它们的Index值.

当我调用db.SaveChanges它时会抛出一个异常,表明违反了一个唯一约束.似乎EF正在更新一个值然后另一个值,从而违反了约束.

它不应该在事务中更新它们,然后在值被整理并且不违反约束时尝试提交吗?

有没有办法解决这个问题而不使用临时值?

c# entity-framework

10
推荐指数
3
解决办法
2428
查看次数

为什么NLog在记录大量消息时会遗漏一些消息?

我尝试使用以下设置测试NLog性能(最新版本):

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
    <variable name="basePath" value="c:\logs\" />
    <variable name="msgFormat" value="${message}" />
    <targets async="true">
        <target name="file"
                xsi:type="File"
                fileName="${basePath}/${logger}/${date:format=yyyy}/${date:format=MMMM}/log-${date:format=yyMMdd}-${level}.log"
                layout="${msgFormat}"
                concurrentWrites="true" />
    </targets>
    <rules>
        <logger name="*" minlevel="Debug" writeTo="file"/>
    </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

并运行此代码:

var msg = "this is example string for logging test. it's not very long, but not very short";
var count = 20000;
Parallel.For(0, count, x => nlog.Info(msg));
Run Code Online (Sandbox Code Playgroud)

NLog写入文件,但当文件大小达到1MB时,它将停止写入.我尝试使用简单的for循环,但它没有帮助我.我尝试使用内部日志记录,但没有错误,顺便说一下,我看到这个字符串:

2013-04-01 11:36:18.2458跟踪打开c:\ logs/NLogTest/2013/April/log-130401-Info.log with concurrentWrite = False

这很奇怪,因为concurrentWrites默认值是true,而且我在config中设置了这个值.

.net c# logging nlog

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