<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tab_space的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tab_space</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tab_space]]></copyright><item><title><![CDATA[客户端websocket（c#）长连接及简易rpc框架设计（二）]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/70569939</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/70569939</guid><author>tab_space</author><pubDate>Mon, 24 Apr 2017 10:07:40 +0800</pubDate><description><![CDATA[0. 背景上一文客户端websocket（C#）长连接及简易RPC框架设计（一）讲述了客户端websocket(C#)的长连接，以及相关钩子函数的介绍。接下来文本介绍简易RPC框架，设计关系，最后通过一个echo服务来阐述整个由Client-->Server-->Client调用流程。]]></description><category></category></item><item><title><![CDATA[客户端websocket（C#）长连接及简易RPC框架设计（一）]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/57075491</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/57075491</guid><author>tab_space</author><pubDate>Sat, 25 Feb 2017 11:53:27 +0800</pubDate><description><![CDATA[0. 背景最近有个需求：与Web服务器保持长连接，接收服务端发来的消息，并通过某RPC协议invoke客户端某些回调函数。故有了本文的客户端websocket（C#）长连接及简易RPC框架设计内容，此内容分两次介绍，（一）介绍websocket如何与服务端保持长连接及异步消息处理；（二）介绍简易RPC的框架设计及流程调用。]]></description><category></category></item><item><title><![CDATA[MySQL索引背后的数据结构及算法原理]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/54862818</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/54862818</guid><author>tab_space</author><pubDate>Sat, 04 Feb 2017 15:59:26 +0800</pubDate><description><![CDATA[本文以MySQL数据库为研究对象，讨论与数据库索引相关的一些话题。文章主要内容分为三个部分。

第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。

第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。

第三部分根据上面的理论基础，讨论MySQL中高性能使用索引的策略。]]></description><category></category></item><item><title><![CDATA[C++STL内存配置的设计思想与关键源码分析]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/54580857</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/54580857</guid><author>tab_space</author><pubDate>Tue, 17 Jan 2017 12:48:03 +0800</pubDate><description><![CDATA[本文转载自 http://www.cnblogs.com/mengwang024/p/4461116.html0. 说明我认为要读懂STL中allocator的源码，并汲取它的思想，至少以下几点知识你要了解：operator new和operator delete、handler函数以及一点模板知识。]]></description><category></category></item><item><title><![CDATA[Unity5.x实现简易语音聊天(三)Client-Server通信]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/53894647</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/53894647</guid><author>tab_space</author><pubDate>Tue, 27 Dec 2016 13:08:09 +0800</pubDate><description><![CDATA[0. 背景文（一）讲述了本文讲述了如何使用既有材料和Unity，构建一个简单的语音聊天客户端，服务端程序。上文（二）讲述了语音录音和播放的几个重要的步骤，同时也给出了步骤的相关API。本文将会讲述如何使用Unity Network相关组件实现Client-Server通信。]]></description><category></category></item><item><title><![CDATA[Unity5.x实现简易语音聊天(二) 录音与播放]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/53541826</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/53541826</guid><author>tab_space</author><pubDate>Fri, 09 Dec 2016 18:09:13 +0800</pubDate><description><![CDATA[0. 背景上一文（一）使用步骤，以下称（一）讲述如何使用既有材料和Unity5.x，构建一个简单的语音聊天客户端，服务端程序。本文会详细讲述语音聊天的框架流程和客户端录音和播放相关组件的API。]]></description><category></category></item><item><title><![CDATA[Unity5.x实现简易语音聊天(一) 使用步骤]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/53259334</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/53259334</guid><author>tab_space</author><pubDate>Mon, 21 Nov 2016 14:46:23 +0800</pubDate><description><![CDATA[0. 背景语音聊天是游戏中重要的功能，它能便捷用户的聊天，增强用户的粘性。本文会讲述如何在Unity5.x中，使用素材[github地址]中的Unity5.x工程项目如何实现在windows中的简单语音聊天。1. 聊天服务本节实现的聊天服务非常简单，有服务端和客户端组成，功能要求如下：
客户端通过设备麦克风输入，服务端立即广播给其他所有客户端；
在网络状况良好的情况下，无论语音输入时间长短，接收端不]]></description><category></category></item><item><title><![CDATA[Client-ServerRSA加解密通信方案-Client端(C#)（二）]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/53160347</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/53160347</guid><author>tab_space</author><pubDate>Mon, 14 Nov 2016 16:28:56 +0800</pubDate><description><![CDATA[本文中将叙述Client端中RSA加解密，使用符合(一)中图1的中通信协议。]]></description><category></category></item><item><title><![CDATA[一起读 Gevent 源码]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/53084416</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/53084416</guid><author>tab_space</author><pubDate>Tue, 08 Nov 2016 17:10:25 +0800</pubDate><description><![CDATA[这一篇主要想跟大家分享一下 Gevent 实现的基础逻辑，也是有同学对这个很感兴趣，所以贴出来跟大家一起分享一下。1. Greenlet我们知道 Gevent是基于 Greenlet 实现的，greenlet 有的时候也被叫做微线程或者协程。其实 Greenlet 本身非常简单，其自身实现的功]]></description><category></category></item><item><title><![CDATA[Client-ServerRSA加解密通信方案-Server端(C++)（一）]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/53006403</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/53006403</guid><author>tab_space</author><pubDate>Wed, 02 Nov 2016 11:30:58 +0800</pubDate><description><![CDATA[0. 背景最近，需要新做一个游戏demo，类似《部落冲突·皇室战争》的推塔玩法。客户端使用Unity，编程语言为C#，服务端使用C++。由于从零开始，需要建立基础部件，其中网络模块是最重要的模块之一。网络模块协议遵从如下图步骤时序图进行通信。]]></description><category></category></item><item><title><![CDATA[使用Python的multiprocessing.connections实现远程方法调用（RPC）]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52858565</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52858565</guid><author>tab_space</author><pubDate>Wed, 19 Oct 2016 13:15:39 +0800</pubDate><description><![CDATA[0. 背景实现远程方法调用（RPC）的主要功能目标是让构建分布式计算（应用）更容易，在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标，RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。 下面我们将具体细化stub结构的实现。]]></description><category></category></item><item><title><![CDATA[TensorFlow深度学习，一篇文章就够了]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52795519</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52795519</guid><author>tab_space</author><pubDate>Wed, 12 Oct 2016 11:26:14 +0800</pubDate><description><![CDATA[TensorFlow深度学习框架Google不仅是大数据和云计算的领导者，在机器学习和深度学习上也有很好的实践和积累，在2015年年底开源了内部使用的深度学习框架TensorFlow。]]></description><category></category></item><item><title><![CDATA[Python的垃圾回收机制（四）之回收流程源码剖析]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52621674</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52621674</guid><author>tab_space</author><pubDate>Thu, 22 Sep 2016 12:31:00 +0800</pubDate><description><![CDATA[0. 背景之前介绍了Python垃圾回收的简介，内存模型和回收机制，这里会详细讲述上一文回收机制中回收流程的具体实现。]]></description><category></category></item><item><title><![CDATA[Python的垃圾回收机制（三）之回收机制]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52459690</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52459690</guid><author>tab_space</author><pubDate>Wed, 07 Sep 2016 14:59:15 +0800</pubDate><description><![CDATA[0. 背景之前介绍了Python垃圾回收的简介和内存模型，这里会对前几篇提到的回收机制进行代码剖析。注意这里用到的术语，如有疑问移步（一）简介查看。1. 标记清除中的GCPython使用引用计数来管理对象的生命周期。但是问题来了，如何解决循环引用的问题？循环引用计数也好办，使用标记清除（Mark-and-Sweep）就可以解决。标记清除方法遵循垃圾检测和垃圾回收两个阶段，其简要工程如下：1). 寻找]]></description><category></category></item><item><title><![CDATA[Python的垃圾回收机制（二）之内存模型]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52334556</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52334556</guid><author>tab_space</author><pubDate>Sat, 27 Aug 2016 12:16:56 +0800</pubDate><description><![CDATA[0. 背景之前介绍了Python垃圾回收的简介，它简要介绍了三种垃圾回收器：引用计数回收器，标记清除回收器和世代回收器，这里会给出Python中基础类型在C语言中的内存模型，以帮助我们理解下一节三种垃圾回收器结合使用流程。1. Python对象内存模型首先介绍一下Python对象的内存模型，如下图1所示： 
 
图1. PyObject对象内存模型上图可以看到，一个PyObject必须包含ob_re]]></description><category></category></item><item><title><![CDATA[Python实现Event回调机制]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52188991</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52188991</guid><author>tab_space</author><pubDate>Fri, 12 Aug 2016 09:57:23 +0800</pubDate><description><![CDATA[0.背景在游戏的UI中，往往会出现这样的情况：在某个战斗副本中获得了某个道具A，那么当进入主界面的时候，你会看到你的背包UI上有个小红点（意思是有新道具），点击进入背包后，发现新增了道具A，显示个数为1，并且在下个界面中有个使用的按钮由灰色不可使用变成橙色的可使用状态 
 
图1. 事件触发说明图其中这里是由道具获得这个事件，触发了上述的三个行为。如果使用显示调用行为，会使得代码难扩展，易出错，逻辑]]></description><category></category></item><item><title><![CDATA[select、poll、epoll之间的区别总结]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/52072045</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/52072045</guid><author>tab_space</author><pubDate>Sat, 30 Jul 2016 12:05:28 +0800</pubDate><description><![CDATA[0. 背景本文摘自 http://www.cnblogs.com/Anker/p/3265058.htmlselect，poll，epoll都是IO多路复用的机制。I/O多路复用就通过一种机制，可以监视多个描述符，一旦某个描述符就绪（一般是读就绪或者写就绪），能够通知程序进行相应的读写操作。但select，poll，epoll本质上都是同步I/O，因为他们都需要在读写事件就绪后自己负责进行读写，也就]]></description><category></category></item><item><title><![CDATA[Python的垃圾回收机制（一）之简介]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/51939855</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/51939855</guid><author>tab_space</author><pubDate>Mon, 18 Jul 2016 10:31:07 +0800</pubDate><description><![CDATA[0. 垃圾回收（GC）极简介本文介绍了在了解垃圾回收过程中遇到的几个名词定义，并且简要介绍了三种垃圾回收器：引用计数回收器，标记清除回收器和世代回收器。这篇给出个框架，有时间再去填（其实已经写过一遍，某种逗逼原因内容没了，有不情愿再复写一遍:( ）。]]></description><category></category></item><item><title><![CDATA[Python中协程(Coroutine)的使用和注意点]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/51883931</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/51883931</guid><author>tab_space</author><pubDate>Mon, 11 Jul 2016 22:36:20 +0800</pubDate><description><![CDATA[0. 协程的优势

在Lua中有协程，在Python里也有协程（Coroutine）。那为什么会需要协程，协程的好处有哪些？

1. 分片计算(sliced calculating)

我们可以把一个原本很复杂的计算分成若干断，每次算一小段，然后每次获得一小部分的结果。这样就会降低卡顿现象的出现概率。

2. 手动暂停和恢复

这个好处就是，有一些东西我可以做到一半，当需要其他函数支持的时候，可以]]></description><category></category></item><item><title><![CDATA[Unity圆环进度条制作]]></title><link>https://blog.youkuaiyun.com/tab_space/article/details/51775163</link><guid>https://blog.youkuaiyun.com/tab_space/article/details/51775163</guid><author>tab_space</author><pubDate>Tue, 28 Jun 2016 14:24:01 +0800</pubDate><description><![CDATA[0. 背景最近有个在Unity中制作圆环进度条的需求，并在圆中显示进度数值，类似于图1： 
 
图1. 圆环进度条平时制作直线的进度条比较多，突然要求做个圆环的有些不适应。不过，这个需求google一下其实大量的解答就出来，关键字"unity circle progress bar"，于是我采用了 Unity5 Radial Progress Bar Tutorial HD - YouTube 这个]]></description><category></category></item></channel></rss>