我有一个改善分布式编程世界的梦想:)
特别是,我觉得缺乏必要的工具来调试,监控,理解和可视化分布式系统的行为(哎呀,我必须编写自己的记录器和可视化器来满足我的要求),而且我正在写一对这些工具在我的空闲时间.
社区,你在这方面缺少什么工具?请描述每个答案,并大致了解该工具应该做什么.其他人可以指出这些工具的存在,或者有人可能会受到启发并编写它们.
众所周知,幺半群在编程中无处不在.它们无处不在,非常有用,作为一个"爱好项目",我正在开发一个完全基于其属性的系统(分布式数据聚合).为了使系统有用,我需要有用的monoids :)
我已经知道了这些:
现在,让我们将操作的准属性定义为保持等价关系的属性.例如,如果我们考虑相等长度或相同内容直到排列的列表是等效的,则列表串联是准可交换的.
这里有一些准幺半群和准交换幺半群和半群:
其他哪些确实存在?
language-agnostic math computer-science monoids abstract-algebra
我试图总结代码库的"旧"和"新"状态之间的区别.
理想情况下,我想获得"git diff"的输出,其中所有"+"和" - "行都将注释有关最后引入这些更改的提交的信息; 理想情况下,以git漂亮的格式(例如哈希,作者和日期).
怎么能实现这一目标?
我竭力要了解准确意思,当值的类型A @cpsParam[B,C]和使用分隔延续设施时,我应该分配给我的价值观是什么类型的这种形式.
我看过一些消息来源:
http://lamp.epfl.ch/~rompf/continuations-icfp09.pdf
http://www.scala-lang.org/node/2096
http://dcsobral.blogspot.com/2009/07/delimited-continuations-explained-in.html
http://blog.richdougherty.com/2009/02/delimited-continuations-in-scala_24.html
但他们没有给我很多直觉.在最后一个链接中,作者试图给出明确的解释,但无论如何还不够明确.
这里的A代表计算的输出,它也是其继续的输入.在B表示延续的返回类型,而C表示其"最终"返回类型-因为移可以做进一步的处理,以返回值,并改变其类型.
我不明白"计算的输出","延续的返回类型"和"延续的最终返回类型"之间的区别.他们听起来像同义词.
在看起来"显然足够快"但在负载下吸收性能的事情上被烧了好几次后,我开始认为在进行容量规划时我的"直觉"可能还不够,而且一些理论背景是必要的.
那么 - 社区,你能指出我在排队理论应用到编程方面的良好资源吗?
无论如何 - 文章,案例研究,书籍.
到目前为止,我发现了几本似乎相关的书; 如果你熟悉的话,我会很高兴听到你对他们的看法:
我的应用程序需要快速向大量客户端(1000-s)广播消息并收集结果.
我在考虑是否使用BeginSend/EndSend等系列函数,或者使用SendAsync系列 - 是否有任何性能差异?它们的区别是什么,除了*Async系列不需要分配IAsyncResult?
如果我理解正确,他们都使用IO完成端口和标准.net线程池...那么有什么区别?
我有一个应用程序几乎没有计算CPU工作,但主要是内存访问(分配对象并移动它们,几乎没有数字或算术代码).
我如何衡量我在内存访问延迟(由于缓存未命中)和CPU闲置时花费的时间份额?
我应该注意到该应用程序正在Hyper-V来宾上运行; 我不确定它会带来什么困难,但它可能会.
我有一个主程序和一个从程序通过一对匿名管道进行交互.
交互看起来像这样:
在非常罕见的情况下,在从机终止时,从主机侧的管道读取无限期地阻塞 - 或者有时肯定地(例如几分钟).我无法在本地计算机上重现它,但它在大型群集上不时发生.
我抓住了这种情况的转储,这就是我所看到的:
被阻止的master的Stacktrace(我100%确定此时客户端进程已经终止):
000000000c83e488 000000007700fdba [NDirectMethodFrameStandalone: 000000000c83e488] Microsoft.Win32.UnsafeNativeMethods.ReadFile(Microsoft.Win32.SafeHandles.SafePipeHandle, Byte*, Int32, Int32 ByRef, IntPtr)
000000000c83e430 000007feeab32820 DomainBoundILStubClass.IL_STUB_PInvoke(Microsoft.Win32.SafeHandles.SafePipeHandle, Byte*, Int32, Int32 ByRef, IntPtr)*** WARNING: Unable to verify checksum for System.Core.ni.dll
000000000c83e540 000007feeac14574 System.IO.Pipes.PipeStream.ReadFileNative(Microsoft.Win32.SafeHandles.SafePipeHandle, Byte[], Int32, Int32, System.Threading.NativeOverlapped*, Int32 ByRef)
000000000c83e5a0 000007feeac14a23 System.IO.Pipes.PipeStream.ReadCore(Byte[], Int32, Int32)
000000000c83e610 000007fef0169d8f System.IO.BinaryReader.FillBuffer(Int32)
000000000c83e650 000007fef0169c8a System.IO.BinaryReader.ReadInt32()
Run Code Online (Sandbox Code Playgroud)
我还查看了阻塞的AnonymousPipeServerStream对象,以及它的状态和句柄.
它有:
这是主侧手柄的!句柄输出.
0:000> !handle 1850 ff
Handle 0000000000001850
Type File
Attributes 0
GrantedAccess 0x120189: …Run Code Online (Sandbox Code Playgroud) 我在RabbitMQ上有一个类似于作业队列的东西,并且在请求取消作业时,我想撤回尚未开始处理的任务(他们的消息未被确认),这对应于撤回这些消息来自他们被路由到的队列.
我没有在AMQP或RabbitMQ API中找到此功能; 也许我的搜索不够好?或者我是否必须使用解决方法(这不难,但仍然)?
我希望能够随机访问gzip压缩文件.我可以负担得起对它进行一些预处理(比如构建某种索引),只要预处理的结果比文件本身小得多.
有什么建议?
我的想法是:
language-agnostic compression gzip random-access large-files
.net ×2
math ×2
amqp ×1
asynchronous ×1
c# ×1
caching ×1
cancellation ×1
compression ×1
debugging ×1
distributed ×1
git ×1
gzip ×1
large-files ×1
memory ×1
monoids ×1
performance ×1
pipe ×1
rabbitmq ×1
scala ×1
scala-2.8 ×1
scalability ×1
sockets ×1
types ×1
windows ×1