小编Rog*_*son的帖子

幕后的Erlang进程是什么?

我对Erlang的了解非常有限,但据我所知,它可以以非常低的成本产生"过程".

所以我想知道,幕后的那些"过程"是什么?

它们是纤维吗?主题?延续?

concurrency erlang multithreading fiber

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

平衡Kafka消费者

假设我在Kafka中为给定主题分配了10个分区.我可以选择在消费者之间自动对这10个分区进行负载均衡?

我已经阅读了这篇文章/sf/answers/2000625441/但我不确定它涵盖了我正在寻找的内容,或者我可能只是没有得到它.

如果我为每个分区启动一个具有一个使用者的工作者,那么该工作人员将使用所有工作.

但是,如果我在其他地方启动同一个工作人员的另一个实例会怎样?客户端库/ Kafka是否会以某种方式检测到这一点,并重新平衡两个worker之间的负载,以便worker1上的一些活动使用者现在处于空闲状态,而worker2上的相同使用者变为活动状态?

我希望能够按需添加和删除工作人员,并将负载分散到那些,这可能吗?

例如从这个: 在此输入图像描述

对此: 在此输入图像描述

apache-kafka kafka-consumer-api

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

Apache Kafka的活动采购

使用Kafka作为事件存储工作正常,它很容易将消息保留设置为无限制.

但我已经看到一些关于Kafka被用于事件采购的报道.这就是我对如何做到这一点感到困惑的地方.作为一个活动商店,我可以在那里推送我的消息.并根据需要消费或重播.

但对于事件采购,您很可能希望读取给定实体/聚合ID的事件.您当然可以使用分区,但这似乎滥用了这个概念,实际添加新实体很难,因为分区计数更多是在静态方面,即使您可以更改它.那里有没有明智的解决方案?Apache Kafka文档本身仅简要提及事件采购.

event-sourcing apache-kafka

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

Twitter bootstrap scrollspy - 在平滑滚动上禁用?

我们在侧边栏ul/il列表中使用twitter bootstrap scrollspy,这非常有用.但是,当单击侧栏中的链接时,我们也会使用平滑滚动.这会导致scrollspy突出显示进入视图的每个元素,正常情况下应如此.

但是当通过点击侧导航中的链接触发滚动时,用户很可能不希望菜单在滚动发生时进行动画处理.有没有办法在动画滚动运行时暂时禁用scrollspy,然后在滚动完成后重新启用它?

javascript html-lists twitter-bootstrap scrollspy twitter-bootstrap-3

8
推荐指数
1
解决办法
4309
查看次数

两个线程一个核心

我正在玩一个简单的控制台应用程序,它创建一个线程,我在主线程和工作线程之间进行一些线程间的通信.

我将主线程中的对象发布到并发队列,而工作线程将该队列出列并进行一些处理.

令我感到奇怪的是,当我描述这个应用程序时,即使我有两个核心.一个核心100%免费,另一个核心完成所有工作,我看到两个线程都在该核心中运行. 在此输入图像描述

为什么是这样?

是因为我在发布消息时使用等待句柄,在处理完成后释放吗?

这是我的示例代码,现在使用2个工作线程.它仍然表现相同,main,worker1和worker2在同一个核心中运行.想法?

[编辑] 它现在有点起作用,至少,与昨天相比,我获得了两倍的性能.诀窍是减慢消费者的速度,以避免使用AutoResetEvent发出信号.

public class SingleThreadDispatcher
{
    public long Count;
    private readonly ConcurrentQueue<Action> _queue = new ConcurrentQueue<Action>();
    private volatile bool _hasMoreTasks;
    private volatile bool _running = true;
    private int _status;
    private readonly AutoResetEvent _signal = new AutoResetEvent(false);
    public SingleThreadDispatcher()
    {
        var thread = new Thread(Run)
        {
            IsBackground = true,
            Name = "worker" + Guid.NewGuid(),           
        };

        thread.Start();
    }

    private void Run()
    {
        while (_running)
        {

            _signal.WaitOne();
            do
            {
                _hasMoreTasks = false;

                Action task;
                while (_queue.TryDequeue(out task) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading autoresetevent

8
推荐指数
1
解决办法
401
查看次数

Erlang消息循环

erlang中的消息循环如何工作,它们在处理消息时是否同步?

据我所知,循环将从"接收"消息开始,然后执行某些操作并点击循环的另一次迭代.

那必须同步吗?对?

如果多个客户端将消息发送到同一个消息循环,那么所有这些消息都会排队并一个接一个地执行,或者?

要在并行处理多个消息,您必须在不同的进程中生成多个消息循环,对吧?

还是我误解了所有这些?

parallel-processing erlang message-loop

7
推荐指数
1
解决办法
495
查看次数

错误的请求 - 无效的主机名ASP.NET MVC4

我有一个ASP.NET MVC 4应用程序,我可以在本地浏览

http://localhost:portnr/SomeController
Run Code Online (Sandbox Code Playgroud)

当我尝试从同一网络中的另一台计算机或仅通过本地IP浏览它时,我收到"错误请求 - 无效主机名"

http://192.168.0.x:portnr/SomeController
Run Code Online (Sandbox Code Playgroud)

如果我指定一个无效的portnr,我不会得到相同的错误,所以我猜错误消息来自asp.net本身.我正试图从我的iPhone浏览网站.

我应该怎么做才能使这项工作?

asp.net asp.net-mvc iis-7

7
推荐指数
1
解决办法
2005
查看次数

C#语言设计 - ducktyping

C#主要是强类型的,但是,有一些奇怪的行为:

例如,在滚动自己的枚举器类时,您不必实现IEnumerable,您只需实现一个名为GetEnuerator()的方法,您仍然可以foreach覆盖它.

一些Linq支持也是如此,你可以通过提供一些select where方法等来编写自己的Linq提供者.

那么为什么using(x){}声明需要IDisposable ?

我确实知道为什么linq提供者可以用这种方式编写,因为没有固定的完全合同,只有一种方法模式.

为什么C#编译器(或语言规范?)的设计方式使得某些内置语言结构需要接口,而其他人不需要接口?

c# language-design

7
推荐指数
0
解决办法
190
查看次数

使用Roslyn访问和修改解决方案中的所有文档

我想使用Roslyn遍历给定解决方案中每个项目的所有文档.

这是我现在的代码:

var msWorkspace = MSBuildWorkspace.Create();
var solution = await msWorkspace.OpenSolutionAsync(solutionPath);
foreach (var project in solution.Projects)
{
    foreach (var document in project.Documents)
    {
        if (document.SourceCodeKind != SourceCodeKind.Regular)
            continue;

        var doc = document;
        foreach (var rewriter in rewriters)
        {
            doc = await rewriter.Rewrite(doc);
        }

        if (doc != document)
        {
            Console.WriteLine("changed {0}",doc.Name);
            //save result

            //the solution is now changed and the next document to be processed will belong to the old solution
            msWorkspace.TryApplyChanges(doc.Project.Solution);
        }                    
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,罗斯林在很大程度上是不可改变的.在第一个"msWorkspace.TryApplyChanges"之后,解决方案和文档现在被替换为新版本.

所以下一次迭代仍将遍历旧版本.有没有办法以Roslyn惯用的方式做到这一点?或者我是否必须诉诸某种for(int projectIndex = 0;projectIndex …

c# roslyn

7
推荐指数
1
解决办法
986
查看次数

解析传入的Ascii字符TCP流,处理退格字符

我需要从套接字解析输入流.数据是从Telnet客户端发送的,因此我想通过查找'\r'流中的第一个字符来处理传入的字符串,然后在返回char之前选择字节并最终处理任何backspace '\b'字符.

'\b'在这里处理比特的惯用方法是什么?我目前正在使用一个可变堆栈并将chars推到它上面,如果有一个退格,我会弹出最后一个char.然后将结果转换为字符串.

但我认为使用模式匹配和尾递归可能有一些很好的方法.那么,如何以F#方式完成呢?

let receiveInput (inputBuffer:StringBuilder) (received:Tcp.Received)=
    let text = Encoding.ASCII.GetString(received.Data.ToArray());
    inputBuffer.Append(text) |> ignore

    let all = inputBuffer.ToString()
    match all.IndexOf('\r') with
    | enter when enter >= 0 ->
        let textToProcess = all.Substring(0,enter)
        inputBuffer.Remove(0,enter+2) |> ignore

        //this is the part I'm wondering about
        let stack = new Stack<char>()
        for c in textToProcess do
            if c = '\b' then stack.Pop() |> ignore
            else stack.Push c

        let input = new System.String(stack |> Seq.rev |> Seq.toArray)

        Some(input)
    | …
Run Code Online (Sandbox Code Playgroud)

f# ascii telnet

7
推荐指数
1
解决办法
608
查看次数