小编Ste*_*ell的帖子

Asp Net Web API 2.1获取客户端IP地址

您好我需要获取请求web api中的某些方法的客户端IP,我试图从这里使用此代码但它总是返回服务器本地IP,如何以正确的方式获取?

HttpContext.Current.Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud)

来自其他问题:

public static class HttpRequestMessageExtensions
    {
        private const string HttpContext = "MS_HttpContext";
        private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";

        public static string GetClientIpAddress(this HttpRequestMessage request)
        {
            if (request.Properties.ContainsKey(HttpContext))
            {
                dynamic ctx = request.Properties[HttpContext];
                if (ctx != null)
                {
                    return ctx.Request.UserHostAddress;
                }
            }

            if (request.Properties.ContainsKey(RemoteEndpointMessage))
            {
                dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];
                if (remoteEndpoint != null)
                {
                    return remoteEndpoint.Address;
                }
            }

            return null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-web-api

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

Mac OS X Java更新的源代码

用于Mac OS X 10.6 Update 3的Java已升级到java 1.6.0_22.但是,它们不包含源代码或JavaDoc.有谁知道Apple是否提供了来源,如果有的话,在哪里可以找到它?

我想将源附加到Eclipse.

java macos

68
推荐指数
4
解决办法
4万
查看次数

如果我的地图需要比快速更小,我应该使用哪种Map <K,V>实现?

我习惯性地HashMap在我的程序中使用,因为我知道它通常是最有效的(如果使用得当)并且可以轻松应对大型地图.我知道EnumMap哪个对于枚举键非常有用,但是我经常会生成一个永远不会很大的小地图,很快就会被丢弃,并且没有并发问题.

HashMap<K,V>这些小型,本地和临时用途是否过于复杂?在这些情况下,我可以使用另一个简单的实现吗?

我想我在寻找一个Map它类似于实施ArrayListList.它存在吗?


在回复之后添加:

这是一个缓慢但非常简单的实现可能更好的场景- 当我有很多很多这样Map的时候.例如,假设我有一百万左右的这些微小的小地图,每个地图都有少量(通常少于三个)条目.我的参考率很低 - 也许我实际上并没有在大部分时间丢弃之前引用它们.它仍然HashMap是最好的选择吗?

资源利用率不仅仅是速度 - 例如,我想要的东西不会破坏堆积很多并且使GC需要很长时间.

这可能HashMap是正确的答案,但这不是过早优化的情况(或者至少可能不是).


经过一番思考后添加了很多:

我决定手工编写自己的代码SmallMap.很容易制作一个AbstractMap.我还添加了几个构造函数,以便SmallMap可以从现有构造中构造Map.

在此过程中,我不得不决定如何表示Entrys并实现SmallSetentrySet方法.

我通过编码(并对其进行单元测试)学到了很多东西,并希望分享这个,以防其他人想要一个.它在github 这里.

java collections dictionary

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

如何在Go中分配一个非常量大小的数组

如何在Go中使用运行时大小分配数组?

以下代码是非法的:

 n := 1
 var a [n]int
Run Code Online (Sandbox Code Playgroud)

你得到消息prog.go:12: invalid array bound n(或类似的),而这工作正常:

 const n = 1
 var a [n]int
Run Code Online (Sandbox Code Playgroud)

麻烦的是,我可能不知道我想要的数组的大小,直到运行时.

(顺便说一句,我首先查看了如何在Go中实现可调整大小的数组以获得答案的问题,但这是一个不同的问题.)

arrays go

14
推荐指数
1
解决办法
7015
查看次数

为什么这在mvvm模式中是正确的,而messageBox不是?我没有看到差异(MVVM Light)

我找到了一个使用MVVM Light向用户显示消息的小例子.我猜测它是如何使用MVVM Light的,它尊重MVVM模式.

后面的视图代码:

namespace DialogosPruebas
{
    /// <summary>
    /// Lógica de interacción para MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Messenger.Default.Register<DialogMessage>(
                this,
                msg =>
                {
                    var result = MessageBox.Show(
                        msg.Content,
                        msg.Caption,
                        msg.Button);

                    // Send callback
                    msg.ProcessCallback(result);
                });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而且ViewModel是:

using System;
using System.Windows;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using GalaSoft.MvvmLight.Messaging;

namespace DialogosPruebas.ViewModel
{
    /// <summary>
    /// This class contains properties that the main View can data bind to.
    /// …
Run Code Online (Sandbox Code Playgroud)

wpf messagebox mvvm mvvm-light

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

如何基于键名反序列化为枚举变量?

我有两种形式的JSON:

"Example:" { "field": 42, "A": 76 }
"Example:" { "field": 42, "B": 110 }
Run Code Online (Sandbox Code Playgroud)

我想反序列化为这样的结构:

struct Example {
    field: i32,
    an_enum: AnEnum,
}
Run Code Online (Sandbox Code Playgroud)

哪里

enum AnEnum {
    A(i32),
    B(i32),
}
Run Code Online (Sandbox Code Playgroud)

不为编写自定义反序列化器,我不知道该怎么做Example

这有效:

"Example:" { "field": 42, "an_enum": {"A": 76} }
Run Code Online (Sandbox Code Playgroud)

或者,在YAML中:

Example:
    field: 42
    an_enum:
        A: 76
Run Code Online (Sandbox Code Playgroud)

an_enum是多余的并且令人讨厌。如何将第一种形式反序列化为struct?或者,或者,如何声明可以成功反序列化所需语法的结构?

enums struct rust deserialization serde

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