小编jkf*_*kff的帖子

分布式程序员缺少哪些工具?

我有一个改善分布式编程世界的梦想:)

特别是,我觉得缺乏必要的工具来调试,监控,理解和可视化分布式系统的行为(哎呀,我必须编写自己的记录器和可视化器来满足我的要求),而且我正在写一对这些工具在我的空闲时间.

社区,在这方面缺少什么工具?请描述每个答案,并大致了解该工具应该做什么.其他人可以指出这些工具的存在,或者有人可能会受到启发并编写它们.

language-agnostic distributed

49
推荐指数
4
解决办法
8238
查看次数

编程中的幺半群/半群的例子

众所周知,幺半群在编程中无处不在.它们无处不在,非常有用,作为一个"爱好项目",我正在开发一个完全基于其属性的系统(分布式数据聚合).为了使系统有用,我需要有用的monoids :)

我已经知道了这些:

  • 数字或矩阵和
  • 数字或矩阵产品
  • 具有顶部或底部元素的总订单下的最小值或最大值(更一般地,在有界点阵中加入或满足,或者更一般地,在类别中的产品或副产品)
  • 设置联盟
  • 使用monoid连接冲突值的映射联合
  • 有限集子集的交集(如果我们谈论半群,则只是设置交集)
  • 地图与有界关键域的交叉(在此处相同)
  • 合并序列的合并,可能在不同的幺半群/半群中加入键相等的值
  • 排序列表的有界合并(与上面相同,但我们取结果的前N个)
  • 两个幺半群或半群的笛卡尔积
  • 列出连接
  • Endomorphism组成.

现在,让我们将操作的准属性定义为保持等价关系的属性.例如,如果我们考虑相等长度或相同内容直到排列的列表是等效的,则列表串联是准可交换的.

这里有一些准幺半群和准交换幺半群和半群:

  • 任何(a + b = a或b,如果我们认为载体的所有元素都是等价的)
  • 任何令人满意的谓词(a + b = a和b中的一个非空并且满足某个谓词P,如果没有则为null;如果我们认为所有元素都满足P等价)
  • 随机样本的有界混合(xs + ys =来自xs和ys串联的大小为N的随机样本;如果我们考虑与整个数据集具有相同分布的任何两个样本相等)
  • 加权随机样本的有界混合
  • 我们称之为"拓扑合并":给出两个非循环和非矛盾的依赖图,一个包含两者中指定的所有依赖关系的图.例如,列出可以产生任何排列的"连接",其中每个列表的元素按顺序跟随(例如,123 + 456 = 142356).

其他哪些确实存在?

language-agnostic math computer-science monoids abstract-algebra

26
推荐指数
2
解决办法
3007
查看次数

是否可以注释"git diff"?

我试图总结代码库的"旧"和"新"状态之间的区别.

  • 我可以做"git log",但遗憾的是提交消息并不总是足够的.
  • 我可以做"git diff",但是我想看看我看到的差异的一些解释,或者至少提交哈希以便以后保存
  • 我可以为更改的文件执行"git diff --stat"然后"git annotate",但是我没有看到如何要求annotate仅显示自特定提交以来的更改.

理想情况下,我想获得"git diff"的输出,其中所有"+"和" - "行都将注释有关最后引入这些更改的提交的信息; 理想情况下,以git漂亮的格式(例如哈希,作者和日期).

怎么能实现这一目标?

git version-control

24
推荐指数
3
解决办法
6196
查看次数

不明白Scala分隔连续的输入(A @cpsParam [B,C])

我竭力要了解准确意思,当值的类型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表示其"最终"返回类型-因为移可以做进一步的处理,以返回值,并改变其类型.

我不明白"计算的输出","延续的返回类型"和"延续的最终返回类型"之间的区别.他们听起来像同义词.

continuations types functional-programming scala scala-2.8

22
推荐指数
1
解决办法
1351
查看次数

程序员的排队理论?

在看起来"显然足够快"但在负载下吸收性能的事情上被烧了好几次后,我开始认为在进行容量规划时我的"直觉"可能还不够,而且一些理论背景是必要的.

那么 - 社区,你能指出我在排队理论应用到编程方面的良好资源吗?

无论如何 - 文章,案例研究,书籍.

到目前为止,我发现了几本似乎相关的书; 如果你熟悉的话,我会很高兴听到你对他们的看法:

language-agnostic math scalability capacity-planning

18
推荐指数
2
解决办法
1307
查看次数

.NET中的套接字的Begin*和*Async之间是否有任何性能差异?

我的应用程序需要快速向大量客户端(1000-s)广播消息并收集结果.

我在考虑是否使用BeginSend/EndSend等系列函数,或者使用SendAsync系列 - 是否有任何性能差异?它们的区别是什么,除了*Async系列不需要分配IAsyncResult?

如果我理解正确,他们都使用IO完成端口和标准.net线程池...那么有什么区别?

.net sockets asynchronous

18
推荐指数
1
解决办法
3519
查看次数

如何检查app是cpu绑定还是内存绑定?

我有一个应用程序几乎没有计算CPU工作,但主要是内存访问(分配对象并移动它们,几乎没有数字或算术代码).

我如何衡量我在内存访问延迟(由于缓存未命中)和CPU闲置时花费的时间份额?

我应该注意到该应用程序正在Hyper-V来宾上运行; 我不确定它会带来什么困难,但它可能会.

memory performance caching

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

AnonymousPipeServerStream.Read()偶尔会在客户端出口挂起

我有一个主程序和一个从程序通过一对匿名管道进行交互.

交互看起来像这样:

  • Master创建了两个AnonymousPipeServerStream
  • Master启动客户端进程,给他们.GetClientHandleAsString()
  • 掌握.DisposeLocalCopyOfClientHandle的两个管道
  • Master将东西写入一个管道并从另一个管道中读取东西
  • 偶尔master会从另一个线程强制终止slave(Process.Kill()),并且还关闭两个管道对象.

在非常罕见的情况下,在从机终止时,从主机侧的管道读取无限期地阻塞 - 或者有时肯定地(例如几分钟).我无法在本地计算机上重现它,但它在大型群集上不时发生.

我抓住了这种情况的转储,这就是我所看到的:

被阻止的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对象,以及它的状态和句柄.

它有:

  • m_state = 4(即关闭)
  • m_clientHandle是一个封闭的句柄(根据SafeHandle._state和!handle的输出)
  • m_handle是一个打开的句柄,_state = 6(即NOT关闭,即使Pipe对象已关闭,根据反编译,它应该调用m_handle.Dispose()):

这是主侧手柄的!句柄输出.

0:000> !handle 1850 ff
Handle 0000000000001850
  Type          File
  Attributes    0
  GrantedAccess 0x120189: …
Run Code Online (Sandbox Code Playgroud)

.net c# windows debugging pipe

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

如何在RabbitMQ中收回邮件?

我在RabbitMQ上有一个类似于作业队列的东西,并且在请求取消作业时,我想撤回尚未开始处理的任务(他们的消息未被确认),这对应于撤回这些消息来自他们被路由到的队列.

我没有在AMQP或RabbitMQ API中找到此功能; 也许我的搜索不够好?或者我是否必须使用解决方法(这不难,但仍然)?

message-queue amqp rabbitmq cancellation

13
推荐指数
3
解决办法
8769
查看次数

随机访问gzip流

我希望能够随机访问gzip压缩文件.我可以负担得起对它进行一些预处理(比如构建某种索引),只要预处理的结果比文件本身小得多.

有什么建议?

我的想法是:

  • 破解现有的gzip实现并将每个(例如)1兆字节的压缩数据序列化其解压缩器状态.然后进行随机访问,反序列化解压缩器状态并从兆字节边界读取.这似乎很难,特别是因为我正在使用Java而我找不到纯java gzip实现:(
  • 以1Mb的块重新压缩文件并执行与上面相同的操作.这具有使所需磁盘空间加倍的缺点.
  • 编写一个gzip格式的简单解析器,它不进行任何解压缩,只检测和索引块边界(如果有任何块:我还没有读取gzip格式描述)

language-agnostic compression gzip random-access large-files

12
推荐指数
1
解决办法
3317
查看次数