您好我需要获取请求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) 用于Mac OS X 10.6 Update 3的Java已升级到java 1.6.0_22.但是,它们不包含源代码或JavaDoc.有谁知道Apple是否提供了来源,如果有的话,在哪里可以找到它?
我想将源附加到Eclipse.
我习惯性地HashMap
在我的程序中使用,因为我知道它通常是最有效的(如果使用得当)并且可以轻松应对大型地图.我知道EnumMap
哪个对于枚举键非常有用,但是我经常会生成一个永远不会很大的小地图,很快就会被丢弃,并且没有并发问题.
HashMap<K,V>
这些小型,本地和临时用途是否过于复杂?在这些情况下,我可以使用另一个简单的实现吗?
我想我在寻找一个Map
它类似于实施ArrayList
的List
.它存在吗?
在回复之后添加:
这是一个缓慢但非常简单的实现可能更好的场景- 当我有很多很多这样Map
的时候.例如,假设我有一百万左右的这些微小的小地图,每个地图都有少量(通常少于三个)条目.我的参考率很低 - 也许我实际上并没有在大部分时间丢弃之前引用它们.它仍然HashMap
是最好的选择吗?
资源利用率不仅仅是速度 - 例如,我想要的东西不会破坏堆积很多并且使GC需要很长时间.
这可能HashMap
是正确的答案,但这不是过早优化的情况(或者至少可能不是).
经过一番思考后添加了很多:
我决定手工编写自己的代码SmallMap
.很容易制作一个AbstractMap
.我还添加了几个构造函数,以便SmallMap
可以从现有构造中构造Map
.
在此过程中,我不得不决定如何表示Entry
s并实现SmallSet
该entrySet
方法.
我通过编码(并对其进行单元测试)学到了很多东西,并希望分享这个,以防其他人想要一个.它在github 这里.
如何在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中实现可调整大小的数组以获得答案的问题,但这是一个不同的问题.)
我找到了一个使用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) 我有两种形式的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?或者,或者,如何声明可以成功反序列化所需语法的结构?
java ×2
arrays ×1
asp.net ×1
c# ×1
collections ×1
dictionary ×1
enums ×1
go ×1
macos ×1
messagebox ×1
mvvm ×1
mvvm-light ×1
rust ×1
serde ×1
struct ×1
wpf ×1