<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[学海无涯]]></title><description><![CDATA[我们一直在努力，所以每天在进步]]></description><link>https://blog.youkuaiyun.com/andrew323</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; andrew323]]></copyright><item><title><![CDATA[Redis和Memcache的区别分析]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/50083715</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/50083715</guid><author>andrew323</author><pubDate>Sat, 28 Nov 2015 14:15:55 +0800</pubDate><description><![CDATA[Redis中，并不是所有的数据都一直存储在内存中的，这是和Memcached相比一个最大的区别。

Redis不仅仅支持简单的k/v类型的数据，同时还提供list，set，hash等数据结构的存储。

Redis支持数据的备份，即master-slave模式的数据备份。

Redis支持数据的持久化，可以将内存中的数据保持在磁盘中，重启的时候可以再次加载进行使用。

Redis在很]]></description><category></category></item><item><title><![CDATA[MySQL分片]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/50070423</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/50070423</guid><author>andrew323</author><pubDate>Fri, 27 Nov 2015 15:08:37 +0800</pubDate><description><![CDATA[本文作者Peter Zaitsev是知名数据库专家，2006年联合创立了Percona。负责维护网站“MySQL性能”。同时，他也是《高性能MySQL》一书的联合作者。以下是他对MySQL分片的建议：
在与客户讨论分片决策的时候，我经常会先给他们讲下面这个真实的故事。
几年前，有客户来找我，希望获得关于如何对系统分片的一些指导建议。他告诉我说，自从他知道很多应用MySQL的巨头(比如Faceb]]></description><category></category></item><item><title><![CDATA[数据库分片(Sharding)与分区(Partition)的区别]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/50070141</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/50070141</guid><author>andrew323</author><pubDate>Fri, 27 Nov 2015 14:45:24 +0800</pubDate><description><![CDATA[Sharding不是一个某个特定数据库软件附属的功能，而是在具体技术细节之上的抽象处理，是水平扩展(ScaleOut，亦或横向扩展、向外扩展)的解决方案，其主要目的是为突破单节点数据库服务器的 I/O能力限制，解决数据库扩展性问题。


Sharding 的应用场景
　　任何技术都是在合适的场合下能发挥应有的作用。Sharding 也一样。联机游戏、IM、BSP 都是比较适合 Shardi]]></description><category></category></item><item><title><![CDATA[mysql水平分表和垂直分表的优缺点]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/50056379</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/50056379</guid><author>andrew323</author><pubDate>Thu, 26 Nov 2015 15:24:27 +0800</pubDate><description><![CDATA[表分割有两种方式：　　
　　1. 水平分割：根据一列或多列数据的值把数据行放到两个独立的表中。
　　水平分割通常在下面的情况下使用。
　　• 表很大，分割后可以降低在查询时需要读的数据和索引的页数，同时也降低了索引的层数，提高查询速度。
　　• 表中的数据本来就有独立性，例如表中分别记录各个地区的数据或不同时期的数据，特别是有些数据常用，而另外一些数据不常用。
　　• 需要把数据存放到多]]></description><category></category></item><item><title><![CDATA[MySQL垂直和水平切分]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/50056159</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/50056159</guid><author>andrew323</author><pubDate>Thu, 26 Nov 2015 15:10:14 +0800</pubDate><description><![CDATA[replication的限制:一旦数据库过于庞大，尤其是当写入过于频繁，很难由一台主机支撑的时候，我们还是会面临到扩展瓶颈。数据切分(sharding):通过某种特定的条件，将我们存放在同一个数据库中的数据分散存放到多个数据库（主机）上面，以达到分散单台设备负载的效果。。数据的切分同时还可以提高系统的总体可用性，因为单台设备Crash之后，只有总体数据的某部分不可用，而不是所有的数据。

数据]]></description><category></category></item><item><title><![CDATA[深入Java集合学习系列：HashMap的实现原理]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/46317273</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/46317273</guid><author>andrew323</author><pubDate>Mon, 01 Jun 2015 22:02:10 +0800</pubDate><description><![CDATA[1. HashMap概述：
　　HashMap是基于哈希表的Map接口的非同步实现（Hashtable跟HashMap很像，唯一的区别是Hashtalbe中的方法是线程安全的，也就是同步的）。此实现提供所有可选的映射操作，并允许使用null值和null键。此类不保证映射的顺序，特别是它不保证该顺序恒久不变。
2. HashMap的数据结构：
　　在java编程语言中，最基本的结构就是两种，一]]></description><category></category></item><item><title><![CDATA[支付宝系统架构概况]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/44701055</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/44701055</guid><author>andrew323</author><pubDate>Sat, 28 Mar 2015 14:04:05 +0800</pubDate><description><![CDATA[支付宝系统架构概况



典型处理默认




资金处理平台



财务会计




支付清算




核算中心







交易







柔性事务























支付宝的开源分布式消息中间件--Metamorphosis(MetaQ]]></description><category></category></item><item><title><![CDATA[C 语言的谜题]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5948675</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5948675</guid><author>andrew323</author><pubDate>Mon, 18 Oct 2010 14:21:00 +0800</pubDate><description><![CDATA[<br />1、下面的程序并不见得会输出 hello-std-out，你知道为什么吗？<br />#include<br />
#include<br />
int main()<br />
{<br />
while(1)<br />
{<br />
fprintf(stdout,"hello-std-out");<br />
fprintf(stderr,"hello-std-err");<br />
sleep(1);<br />
}<br />
return 0;<br />
]]></description><category></category></item><item><title><![CDATA[纯虚函数能为private吗？]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5928286</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5928286</guid><author>andrew323</author><pubDate>Fri, 08 Oct 2010 21:51:00 +0800</pubDate><description><![CDATA[<br />纯虚函数能为private吗？<br />                                              －－
zhuweisky 2003.04.18<br /><br /> <br /> <br /> <br />我们把一个仅仅含有纯虚函数的类称为接口，我们也好像已经习惯了将这个接口中的所有纯虚函数全声明为public，而且按照这样的设计，一切都工作得不错。比如COM正是这样做的，它的接口中几乎不会存在private的纯虚函数。那么，让我们想一想，纯虚函数或者虚]]></description><category></category></item><item><title><![CDATA[Mapreuce]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5925706</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5925706</guid><author>andrew323</author><pubDate>Thu, 07 Oct 2010 20:16:00 +0800</pubDate><description><![CDATA[Map Reduce – the Free Lunch is not over?<br />微软著名的C++大师Herb Sutter
在2005年初的时候曾经写过一篇重量级的文章：”The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
“，预言OO之后软件开发将要面临的又一次重大变革-并行计算。<br />摩尔定律统制下的软件开发时代有一个非常有意思的现象：”Andy giveth, and Bill tak]]></description><category></category></item><item><title><![CDATA[lucene中的倒排索引]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5925698</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5925698</guid><author>andrew323</author><pubDate>Thu, 07 Oct 2010 20:10:00 +0800</pubDate><description><![CDATA[<br />Lucene是一个高性能的java全文检索工具包，它使用的是倒排文件索引结构。该结构及相应的生成算法如下： <br /><br />
0）设有两篇文章1和2 <br />
文章1的内容为：Tom lives in Guangzhou,I live in Guangzhou too. <br />
文章2的内容为：He once lived in Shanghai. <br /><br />
1)由于lucene是基于关键词索引和查询的，首先我们要取得这两篇文章的关键词，通常我们需要如下处]]></description><category></category></item><item><title><![CDATA[BTree,B-Tree,B+Tree,B*Tree都是什么]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5924211</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5924211</guid><author>andrew323</author><pubDate>Wed, 06 Oct 2010 20:41:00 +0800</pubDate><description><![CDATA[B树、B-树、B+树、B*树都是什么B树       即二叉搜索树：       
1.所有非叶子结点至多拥有两个儿子（Left和Right）；       
2.所有结点存储一个关键字；       
3.非叶子结点的左指针指向小于其关键字的子树，右指针指向大于其关键字的子树；       如：       B树的搜索，从根结点开始，如果查询的关键字与结点的关键字相等，那么就命中；否则，如果查询关键字比结点关键字小，就进入左儿子；如果比结点关键字大，就进入右儿子；如果左儿子或右儿子的指针为空，则报告]]></description><category></category></item><item><title><![CDATA[(int&)a和(int)a的区别 ]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5911683</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5911683</guid><author>andrew323</author><pubDate>Tue, 28 Sep 2010 12:47:00 +0800</pubDate><description><![CDATA[<br />#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
	float a = 1.0f;
	cout << (int)a << endl;
	cout << (int&)a << endl;
	cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么？
	float b = 0.0f;
	]]></description><category></category></item><item><title><![CDATA[ 什么是P问题、NP问题和NPC问题]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5910354</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5910354</guid><author>andrew323</author><pubDate>Mon, 27 Sep 2010 19:37:00 +0800</pubDate><description><![CDATA[什么是P问题、NP问题和NPC问题   这或许是众多OIer最大的误区之一。<br />
    你会经常看到网上出现“这怎么做，这不是NP问题吗”、“这个只有搜了，这已经被证明是NP问题了”之类的话。你要知道，大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题，NPC问题才是。好，行了，基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题，什么是NP问题，什么是NPC问题，你如果不是很感兴趣就可以不看了。接下来你可以看]]></description><category></category></item><item><title><![CDATA[C++ Traits]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5908981</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5908981</guid><author>andrew323</author><pubDate>Mon, 27 Sep 2010 09:59:00 +0800</pubDate><description><![CDATA[<br />今天看"modern c++ design"的时候发现自己竟然又把以前好不容易弄懂的Traits技术给忘记了，真是...又重新学习了一下，赶紧记下来。<br />
Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类，其中类型参数 T 为迭代器所指向的类型：<br /><br />
template
 <typename
 T><br />class
 myIterator<br />
{<br />
 ...<br />
};<br /><b]]></description><category></category></item><item><title><![CDATA[如何定位放置new]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5908871</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5908871</guid><author>andrew323</author><pubDate>Mon, 27 Sep 2010 09:26:00 +0800</pubDate><description><![CDATA[<br />标准首部<new>由一个特别的操作符new来定义，这个就是我们熟知的placement new。和其他普通的new不同的是，它在括号里多了另外一个参数。比如：<br />Widget * p = new Widget; //普通的new
 pi = new (ptr) int; //placement new<br />括
号里的参数是一个指针，它指向一个内存缓冲器，placement new将在这个缓冲器上分配一个对象。Placement
new的返回值是这个被构造对象的地址。在对时间要]]></description><category></category></item><item><title><![CDATA[TCP三次握手协议]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5903723</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5903723</guid><author>andrew323</author><pubDate>Fri, 24 Sep 2010 19:52:00 +0800</pubDate><description><![CDATA[<br />TCP握手协议<br />　　在TCP/IP协议中，TCP协议提供可靠的连接服务，采用三次握手建立一个连接。<br />　　第一次握手：建立连接时，客户端发送syn包(syn=j)到服务器，并进入SYN_SEND状态，等待服务器确认；<br />　　第二次握手：服务器收到syn包，必须确认客户的SYN（ack=j+1），同时自己也发送一个SYN包（syn=k），即SYN+ACK包，此时服务器进入SYN_RECV状态；<br />　　第三次握手：客户端收到服务器的SYN＋ACK包，向服务器发送确认]]></description><category></category></item><item><title><![CDATA[联合（union）和结构（struct）的区别]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5902245</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5902245</guid><author>andrew323</author><pubDate>Thu, 23 Sep 2010 19:07:00 +0800</pubDate><description><![CDATA[<br /> 1. 联合说明和联合变量定义 <br />
    联合也是一种新的数据类型, 它是一种特殊形式的变量。 <br />
    联合说明和联合变量定义与结构十分相似。其形式为: <br />
     union 联合名{ <br />
          数据类型 成员名; <br />
          数据类型 成员名; <br />
          ... <br />
     } 联合变量名; <br />    联合表示几个变量公用一个内存位置, 在不同的时间]]></description><category></category></item><item><title><![CDATA[网络字节序和主机字节序]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5902237</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5902237</guid><author>andrew323</author><pubDate>Thu, 23 Sep 2010 18:50:00 +0800</pubDate><description><![CDATA[什么是Big Endian和Little Endian？<br />来源：http://blog.ednchina.com/qinyonglyz/194674/message.aspx<br />1．故事的起源<br />“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开，由此曾发生过六次叛乱，其中一个皇帝送了命，另一个丢了王位。<br />我们一般将endian翻译成“字节序”，将big endian和l]]></description><category></category></item><item><title><![CDATA[二叉树的非递归遍历]]></title><link>https://blog.youkuaiyun.com/andrew323/article/details/5902210</link><guid>https://blog.youkuaiyun.com/andrew323/article/details/5902210</guid><author>andrew323</author><pubDate>Thu, 23 Sep 2010 18:15:00 +0800</pubDate><description><![CDATA[<br />#include <iostream>
#include <stack>
#include <queue>
//#include <aa.h>
using namespace std;
struct BiTreeNode
{
	int data;
	BiTreeNode *lchild;
	BiTreeNode *rchild;
	bool flag;
	BiTreeNode()
	{
		data = 0;
		lchild = NULL;
		rchild = ]]></description><category></category></item></channel></rss>