<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Bad_Sheep</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Bad_Sheep]]></copyright><item><title><![CDATA[BytePS源码解析(1)-理论]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/122284797</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/122284797</guid><author>Bad_Sheep</author><pubDate>Sat, 29 Jan 2022 17:38:33 +0800</pubDate><description><![CDATA[最近因为工作需要，研究了一下字节跳动开源的BytePS，虽然其名字上带有"PS"两字，但是研究后发现它其实并不是一个传统的PS架构，而是all-reduce和PS的一个融合，这个在后面会详细说。网络上有一些关于BytePS创新性的一些质疑，这个见仁见智，我个人感觉撇开创新性，BytePS的理论还是比较优雅的，另外根据初步的测试，效果也确实很不错，思路和代码都很有参考价值。因此尝试写个系列文章来记录一下，本篇是第一篇，先从BytePS的论文入手，了解它的一些理论要点。（作者水平有限，如有谬误敬...]]></description><category></category></item><item><title><![CDATA[TCP速率与窗口，带宽，RTT之间的关系]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/6158676</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/6158676</guid><author>Bad_Sheep</author><pubDate>Sat, 22 Jan 2011 16:50:00 +0800</pubDate><description><![CDATA[<br />以下部分内容是自己的理解，可能会有差错，如有发现，欢迎指正。<br /><br />窗口：<br />TCP是一个滑动窗口协议，即一个TCP连接的发送端在某个时刻能发多少数据是由滑动窗口控制的，而滑动窗口的大小实际上是由两个窗口共同决定的，一个是接收端的通告窗口，这个窗口值在TCP协议头部信息中有，会随着数据的ACK包发送给发送端，这个值表示的是在接收端的TCP协议缓存中还有多少剩余空间，发送端必须保证发送的数据不超过这个剩余空间以免造成缓冲区溢出，这个窗口是接收端用来进行流量限制的，在传输过程]]></description><category></category></item><item><title><![CDATA[Socket编程中的强制关闭与优雅关闭及相关socket选项]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/6157738</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/6157738</guid><author>Bad_Sheep</author><pubDate>Fri, 21 Jan 2011 21:38:00 +0800</pubDate><description><![CDATA[<br /><br />以下描述主要是针对windows平台下的TCP socket而言。<br />首先需要区分一下关闭socket和关闭TCP连接的区别，关闭TCP连接是指TCP协议层的东西，就是两个TCP端之间交换了一些协议包（FIN，RST等），具体的交换过程可以看TCP协议，这里不详细描述了。而关闭socket是指关闭用户应用程序中的socket句柄，释放相关资源。但是当用户关闭socket句柄时会隐含的触发TCP连接的关闭过程。<br />TCP连接的关闭过程有两种，一种是优雅关闭（gracef]]></description><category></category></item><item><title><![CDATA[差之毫厘谬以千里----精度丢失引起的问题]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5813295</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5813295</guid><author>Bad_Sheep</author><pubDate>Sun, 15 Aug 2010 10:52:00 +0800</pubDate><description><![CDATA[<br />      场景是这样的，开发中需要统计某个正整数A的平均值，数A是随时间变化的。这本来是一个很简单的问题，可以用一个值B来统计这个A的累积和，在用B除以统计次数就可以了。但是开始时不想另外搞一个值B。所以推了一个公式出来，设n为统计次数，f(n)为前n次的统计平均值，Xn为第n次统计时的A值，那么很容易就可以得到公式：f(n) = [(n-1)*f(n-1) + Xn]/n，这个看似没有任何问题吧，开始我也以为是，但是使用过程中发现算出的平均值随时间慢慢变的越来越小。时间长了之后发现这个不太对]]></description><category></category></item><item><title><![CDATA[Windows SEH中的局部展开与全局展开]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5803649</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5803649</guid><author>Bad_Sheep</author><pubDate>Wed, 11 Aug 2010 12:02:00 +0800</pubDate><description><![CDATA[<br />经过阅读windows核心编程一书，对SEH中的局部展开和全局展开终于有了一个比较清晰的概念。<br />先说说__finally块的语义，__finally块语义就是只要是指令流将要流出其对应的__try块时，则__finally块中的代码将得到执行。那么所谓展开就是保证__finally块中的代码得到执行。下面详细解释下局部展开和全局展开<br />。<br /> <br />局部展开就是指某个函数中的__try块中的代码因为执行了return,break,goto,continue等指令使]]></description><category></category></item><item><title><![CDATA[内存字节对齐详解[转载]]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5663086</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5663086</guid><author>Bad_Sheep</author><pubDate>Fri, 11 Jun 2010 09:13:00 +0800</pubDate><description><![CDATA[<br />一、什么是对齐，以及为什么要对齐：<br />1. 现代计算机中内存空间都是按照byte划分的，从理论上讲似乎对任何类型的变量的访问可以从任何地址开始，但实际情况是在访问特定变量的时候经常在特定的内存地址访问，这就需要各类型数据按照一定的规则在空间上排列，而不是顺序的一个接一个的排放，这就是对齐。<br />2. 对齐的作用和原因：各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况， 但是最常见的是如果不按照适合其平台的要]]></description><category></category></item><item><title><![CDATA[同步/异步，阻塞/非阻塞IO]]></title><link>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5648670</link><guid>https://blog.youkuaiyun.com/Bad_Sheep/article/details/5648670</guid><author>Bad_Sheep</author><pubDate>Fri, 04 Jun 2010 23:47:00 +0800</pubDate><description><![CDATA[<br />看来网上一篇说同步/异步io，阻塞/非阻塞io概念区别的文章，感觉写的不错，使用去银行办理事务的比喻很生动贴切（原文在这里http://www.cppblog.com/converse/archive/2009/05/13/82879.html），然而我对此两组概念的理解与作者还是有所出入。作者所言，同步/异步是消息通知机制的不同，阻塞/非阻塞时程序等待消息时的状态不同。比如如果一个人去排队等待办理业务就是同步，而拿着序号等待叫号办理就是异步。如果排队时或等待叫号时还做其他事情就是非阻塞，如果不]]></description><category></category></item></channel></rss>