<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[geekops的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/geekops</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; geekops]]></copyright><item><title><![CDATA[Redis和Golang map比较]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/126336406</link><guid>https://blog.youkuaiyun.com/geekops/article/details/126336406</guid><author>geekops</author><pubDate>Sun, 14 Aug 2022 21:57:27 +0800</pubDate><description><![CDATA[Redis和Go map的比较]]></description><category></category></item><item><title><![CDATA[将博客搬至优快云]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843783</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843783</guid><author>geekops</author><pubDate>Tue, 29 Jan 2019 10:39:10 +0800</pubDate><description><![CDATA[&#13;
		将博客搬至优快云&#13;
	
  

]]></description><category></category></item><item><title><![CDATA[epoll那些事儿]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843781</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843781</guid><author>geekops</author><pubDate>Sat, 14 Jul 2018 11:17:48 +0800</pubDate><description><![CDATA[&#13;
		ET和LT:  LT一般用在单线程。 ET和EPOLLONESHOT配合用在多线程共享一个epoll环境下，EPOLLONESHOT标记触发过的事件从epoll中移除，下次必须重新注册，用来防止多线程同时取到同一个socket的事件产生冲突。epoll_wait 第三个参数 取事件数量： 单线程模型当然尽可能一次多取一些效率高，多线程为了防止一个线程...]]></description><category></category></item><item><title><![CDATA[tcp/udp，socket那些事儿]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843777</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843777</guid><author>geekops</author><pubDate>Fri, 13 Jul 2018 15:49:50 +0800</pubDate><description><![CDATA[&#13;
		概念 ：  tcp和udp，连接和无连接都是协议，是共享物理介质的传输数据的应用程序之间的约定。面向连接的协议维护了segment的状态和次序。故障 :默认无keep alive：拔网线或路由器崩溃：发送端超时（重传12次大约9分钟）后放弃，接收端读errorno ETIMEOUT，如果没有读则要等到下一次写失败sigpipe。如果中间路由器无法转...]]></description><category></category></item><item><title><![CDATA[初识cdn]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843772</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843772</guid><author>geekops</author><pubDate>Wed, 09 May 2018 23:57:32 +0800</pubDate><description><![CDATA[&#13;
		工作上虽然和cdn没关系但是技术方向还是很多相似之处的，例如：负载均衡，缓存，分布式，路由等。cdn简单的说就是个复杂的大缓存，由于目标用户（包括源和端）广泛直接导致了其复杂性，遍布广节点多则需要分流负载甚至自组织，应用繁杂则需要分流路由，提速则需要缓存，稳定则需要监控调度，为了透明则需要各种映射。 由于接入面广和网络的复杂性，不可能让客户端直接面对...]]></description><category></category></item><item><title><![CDATA[关于dpdk 的思考]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843771</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843771</guid><author>geekops</author><pubDate>Sun, 05 Feb 2017 14:08:17 +0800</pubDate><description><![CDATA[&#13;
		dpdk是通过许多不同的纬度来加速包处理的，其中主要包括：hugepage大页内存(进程使用的是虚拟地址，一般页表(4k)能映射的虚拟地址空间有限，使用大页能减少换页次数提高cache命中，通过mmap把大页映射到用户态的虚拟地址空间有用过mmap的都知道这是实现共享内存的手段，所以dpdk还支持多进程共享内存)cache预取 (每次预读当前数据相邻前后的数据)...]]></description><category></category></item><item><title><![CDATA[Redis解析]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843730</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843730</guid><author>geekops</author><pubDate>Tue, 24 Jan 2017 18:13:13 +0800</pubDate><description><![CDATA[&#13;
		Redis是工作中很常用的，这里将比较普遍使用的结构研究了下做个备忘。hash实现和dnspod的dataset半斤八两，本质上是个二维数组，通过将key哈希作为一维的下表，第二维的数组存相同哈希的元素，查找使用遍历的方式，所以这里redis做了优化，当满足条件的时候(数组数量太大)会进行rehash，动态扩大桶的数量来减少最后一维遍历的次数.函数名称作用复杂度d...]]></description><category></category></item><item><title><![CDATA[dnspod解析]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843727</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843727</guid><author>geekops</author><pubDate>Mon, 23 Jan 2017 15:14:36 +0800</pubDate><description><![CDATA[&#13;
		dns的递归解析过程还是挺繁琐的，要知道一个域名可能有cname、ns 而请求的cname、ns可能还有cname、ns，如果按照线性的处理每个请求那逻辑就变成毛线团了dnspod的处理还是挺巧妙的，通过一个公共的数据集dataset将所有域名对应的a、cname、ns等类型的数据作为单独的条目存入，当有需要某个域名的信息时先去dataset找，找不到在加入ql...]]></description><category></category></item><item><title><![CDATA[Network Stack Specialization for Performance]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843763</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843763</guid><author>geekops</author><pubDate>Sun, 22 Jan 2017 18:01:47 +0800</pubDate><description><![CDATA[&#13;
		最近在研究DPDK，这是sigcomm 2014的论文，纪录在此备忘Ps: 文中关键词的概念：segment : 对应于tcp的PDU(协议传输单元)，这里应该指tcp层的包，如果一个包太大tcp负责将它拆分成多个segment（这个概念对理解后文有帮助）根据unix网络编程卷1 第8页注解2：packet是IP层传递给链路层并且由链路层打包好封装在帧中的数据（不...]]></description><category></category></item><item><title><![CDATA[cegui 0.7 渲染改动]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843758</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843758</guid><author>geekops</author><pubDate>Tue, 27 Apr 2010 20:56:05 +0800</pubDate><description><![CDATA[&#13;
		一直想用cegui，但是没机会用，只是抽空看其代码&#13;
最近听朋友说0.7 debug下帧数提高100多，挺惊讶的，重新到久违了的官网上下了0.7.1&#13;
看了下渲染的实现(GL)&#13;
首先，添加了GeometryBuffer玩意，使得每个window保存了属于自己的顶点和纹理信息&#13;
然后在RenderingSurface中有Geometr...]]></description><category></category></item><item><title><![CDATA[[转]理解批次]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843731</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843731</guid><author>geekops</author><pubDate>Sun, 25 Oct 2009 17:15:19 +0800</pubDate><description><![CDATA[&#13;
		这个看代码里面batch相关的。[Direct3D] 实现批次渲染、硬件 T&amp;L 的渲染器和 D3DPipeline&#13;
在是否从 D3DRender 提供顶点缓存区操作给流水线时做了一些权衡，最后决定暂时使用 IDirect3DDevice9::DrawPrimitiveUP 来渲染，因为它更容易书写，而且开销是一次顶点拷贝，流水线也不用操心对缓存的...]]></description><category></category></item><item><title><![CDATA[wtl显示中文]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843752</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843752</guid><author>geekops</author><pubDate>Thu, 11 Dec 2008 17:53:27 +0800</pubDate><description><![CDATA[&#13;
		1）打开资源文件，把LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US修改为LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED2）关闭资源文件3）打开对话框，输入汉字，并保存4）右击资源文件属性，选择Resources-&gt;General-&gt;Culture，设置为：中文(中国)...]]></description><category></category></item><item><title><![CDATA[[转]c++的位运算]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843725</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843725</guid><author>geekops</author><pubDate>Tue, 11 Nov 2008 22:21:40 +0800</pubDate><description><![CDATA[&#13;
		前言   看到有些人对位运算还存在问题，于是决定写这篇文章作个简要说明。     什么是位(bit)？     很简单，位(bit)就是单个的0或1，位是我们在计算机上所作一切的基础。计算机上的所有数据都是用位来存储的。一个字节(BYTE)由八个位组成，一个字(WORD)是二个字节或十六位，一个双字(DWORD)是二个字(WORDS)或三十二位。...]]></description><category></category></item><item><title><![CDATA[WTL控件类完整列表]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843722</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843722</guid><author>geekops</author><pubDate>Tue, 11 Nov 2008 17:02:22 +0800</pubDate><description><![CDATA[&#13;
		CButtonT CButton CTrackBarCtrlT CTrackBarCtrl&#13;
CListBoxT  CListBox CUpDownCtrlT  CUpDownCtrl&#13;
CComboBoxT  CComboBox...]]></description><category></category></item><item><title><![CDATA[char转Tchar]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843747</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843747</guid><author>geekops</author><pubDate>Tue, 14 Oct 2008 15:00:50 +0800</pubDate><description><![CDATA[&#13;
		char file[MAX_PATH];TCHAR Tchartmp[MAX_PATH];sprintf_s(file, "fileName%d", 134);CString strUnicode = file;wcscpy(Tchartmp,strUnicode);&#13;
&#13;
	
  

]]></description><category></category></item><item><title><![CDATA[Tchar转char]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843720</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843720</guid><author>geekops</author><pubDate>Tue, 14 Oct 2008 14:26:43 +0800</pubDate><description><![CDATA[&#13;
		TCHAR tcScriptName[MAX_PATH];tcScriptName = "filename";size_t i;char tmp[MAX_PATH];mbstate_t mbstate;&#13;
// Reset to initial shift state::memset((void*)&amp;mbstate, 0,...]]></description><category></category></item><item><title><![CDATA[基础]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843740</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843740</guid><author>geekops</author><pubDate>Tue, 19 Aug 2008 09:14:32 +0800</pubDate><description><![CDATA[&#13;
		继承是类与类的关系。 重载是方法与方法之间的关系。 继承是一个类需要另一个类的属性和方法，所以用到继承，这是发生在两个类之间的事情。 重载是指一个方法与另一个方法的方法名相同而参数列表不相同，这样的情况叫重载，属于多态。这是发生在一个类中的事情。 一个子类继承另外一个类，可以对父类中的方法进行重写，说到这里应该可以看出，继承和重载没什么关系了。而重写却与继承有很大的...]]></description><category></category></item><item><title><![CDATA[第一次]]></title><link>https://blog.youkuaiyun.com/geekops/article/details/88843713</link><guid>https://blog.youkuaiyun.com/geekops/article/details/88843713</guid><author>geekops</author><pubDate>Mon, 18 Aug 2008 22:36:55 +0800</pubDate><description><![CDATA[&#13;
		第一篇文章不知道写什么，就当是对我入行几个月的一个save吧，第一个项目，2D的地图编辑器，3个人一起做的（主程有先搭个框架），我负责的是用OGRE在视图中显示地形和物件管理还有阻挡等，后来还做了机器人的寻路，资源暂时用的是魔兽（觉得美工做的地形的图没有魔兽的美 = = |||）。OGRE确实是好东西，不过可能是不够熟悉的原因吧，经常被小问题还有没有考...]]></description><category></category></item></channel></rss>