小编Rob*_*iff的帖子

是否有针对log4net的低级TCP appender?

我一直在使用UDPAppender将日志发送到logstash.我希望能够通过DNS实现logstash服务器的故障转移.

隐式地,UDPAppender不检测远程UDP端口是否可用,但即使它确实如此,当我使用remoteAddress的DNS名称对其进行配置时,它在初始化期间被解析为IP地址并记录为IP地址.该RemoteAddresss财产.我知道RemotingAppender,但这似乎不像logstash,因为logstash TCP输入没有实现.NET远程协议,看起来它会遇到通过DNS解析远程IP地址的相同问题仅在初始化步骤.

我正在考虑实现我自己的appender,通过ping包装UDPAppender或通过DNS名称处理重新连接来复制RemotingAppender.这样的事情是否已经存在?

c# dns log4net tcp logstash

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

Array.Copy vs Skip and take in c#

我正在浏览这个问题和一些类似的问题:

从现有阵列获取子阵列

很多地方我都读到这样的答案:

从现有阵列获取子阵列

我想知道为什么Skip和Take不是数组的恒定时间操作?

反过来,如果它们是常量时间操作,那么Skip和Take方法(最后没有调用ToArray())是否具有相同的运行时间而没有执行Array.Copy的开销,而且空间效率更高?

c# arrays copy skip take

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

F#Seq.next - 什么是正确的模式?

作为使用策略模式的项目的一部分,我正在尝试编写一个函数,它创建一个函数,每次应用时返回无限序列的下一个值.目前我正在使用这个狡猾的GetNext函数:

let GetNext<'T> (enumerator:System.Collections.Generic.IEnumerator<'T>) =
    let n = enumerator.MoveNext()
    enumerator.Current

let FunctionFactory<'T> =
    let s = 0.0 |> Seq.unfold (fun i -> Some(i, if 0.0 = i then 1.0 else 0.0))
    let enumerator = s.GetEnumerator()
    (fun (ignoredParam:'T) -> GetNext enumerator )
Run Code Online (Sandbox Code Playgroud)

我希望FunctionFactory看起来像这样:

let FunctionFactory<'T> =
    let s = 0.0 |> Seq.unfold (fun i -> Some(i, if 0.0 = i then 1.0 else 0.0))
    (fun (ignoredParam:'T) -> Seq.next s )
Run Code Online (Sandbox Code Playgroud)

ignoredParam在穿过相同的策略模式和依赖于它提供上下文其他功能中使用.由于这看起来很糟糕,我真的有两个问题.为什么没有Seq.next?实现各种可以注入这样的策略框架的序列表达式的正确/优雅方法是什么? …

.net architecture f# design-patterns seq

3
推荐指数
1
解决办法
293
查看次数

标签 统计

c# ×2

.net ×1

architecture ×1

arrays ×1

copy ×1

design-patterns ×1

dns ×1

f# ×1

log4net ×1

logstash ×1

seq ×1

skip ×1

take ×1

tcp ×1