<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ajaxuser</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ajaxuser]]></copyright><item><title><![CDATA[java实现Thrift服务端和客户端]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/9084079</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/9084079</guid><author>ajaxuser</author><pubDate>Thu, 13 Jun 2013 12:31:45 +0800</pubDate><description><![CDATA[namespace java service.test

service Demo {
    string sayWord(1:string word)
}
DemoService.java
package service.test;

import org.apache.thrift.TException;
import service.test.Demo.Iface;

public c]]></description><category></category></item><item><title><![CDATA[Thrift安装与使用]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/9020651</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/9020651</guid><author>ajaxuser</author><pubDate>Tue, 04 Jun 2013 12:26:04 +0800</pubDate><description><![CDATA[centos   jdk6  php5.3以上  python2.6   thrift0.9.0
让thrift支持java php python，所以要安装java php python(linux系统默认自带python)
java: 安装JDK 和 ant (thrift安装时会检查 java javac ant等命令，ant命令要编译java的开发库)
安装thrift

yum]]></description><category></category></item><item><title><![CDATA["2>&1 > file"和 "> file 2>&1"区别？]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8850543</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8850543</guid><author>ajaxuser</author><pubDate>Thu, 25 Apr 2013 17:03:59 +0800</pubDate><description><![CDATA[什么是文件描述符？
文件描述符是一个简单的正整数，用以标明每一个被进程所打开的文件和socket。
最前面的三个文件描述符（0，1，2）分别与标准输入（stdin），标准输出（stdout）和标准错误（stderr）对应。

"2>&1 > file"和 "> file 2>&1"区别？
1.php test.php 2>&1 > file ：错误输出到终端，标准输出被重定向到文件fil]]></description><category></category></item><item><title><![CDATA[PHP foreach与引用赋值]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8845079</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8845079</guid><author>ajaxuser</author><pubDate>Wed, 24 Apr 2013 16:07:32 +0800</pubDate><description><![CDATA[<?php
$arr = array('a', 'b', 'c');
foreach($arr as &$v) {}
foreach($arr as $v) {}
var_dump($arr);
/*
结果为：
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  &string(1) "b"
}
*/

//第一]]></description><category></category></item><item><title><![CDATA[PHP对象的深复制与浅复制]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8844841</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8844841</guid><author>ajaxuser</author><pubDate>Wed, 24 Apr 2013 15:09:26 +0800</pubDate><description><![CDATA[<?php
class Test1 {
    public $num1 = 0;
    //包含的对象
    public $obj2;

    public function __construct() {
        $this->obj2 = new Test2;
    }
}

class Test2 {
    public $num2 = 0;
}

$obj1 = ne]]></description><category></category></item><item><title><![CDATA[PHP实现单例模式]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8843505</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8843505</guid><author>ajaxuser</author><pubDate>Wed, 24 Apr 2013 10:45:15 +0800</pubDate><description><![CDATA[<?php
class Test{
    //保存实例在此属性中,$_instance必须声明为静态的私有变量
    private static $_instance;

    //构造函数必须声明为private,防止外部new
    private function __construct() {
           
    }
    
    //将__clone方法设置为私]]></description><category></category></item><item><title><![CDATA[对 HTTP 304 的理解]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8643289</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8643289</guid><author>ajaxuser</author><pubDate>Wed, 06 Mar 2013 17:21:31 +0800</pubDate><description><![CDATA[304的标准解释是：Not Modified 客户端有缓冲的文档并发出了一个条件性的请求
（一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档）。
服务器告诉客户，原来缓冲的文档还可以继续使用。

如果客户端在请求一个文件的时候，发现自己缓存的文件有Last Modified，
那么在请求中会包含 If Modified Since，这个时间就是缓存文件的La]]></description><category></category></item><item><title><![CDATA[对301、302的理解]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8643184</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8643184</guid><author>ajaxuser</author><pubDate>Wed, 06 Mar 2013 17:03:52 +0800</pubDate><description><![CDATA[301与302区别？
301状态码指的是网页永久性的转移到另外一个位置
302状态码指的是网页暂时转移到另外一个位置

302重定向和网址劫持（URL hijacking）的关系？
从定义来说，从网址A做一个302重定向到网址B时，服务器的隐含意思是网址A随时有可能改主意，
重新显示本身的内容或转向其他的地方。大部分的搜索引擎在大部分情况下，当收到302重定向时，
一般只要去抓取目标]]></description><category></category></item><item><title><![CDATA[Redis主从复制]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8470952</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8470952</guid><author>ajaxuser</author><pubDate>Sat, 05 Jan 2013 22:04:01 +0800</pubDate><description><![CDATA[redis是一个key-value存储系统，和memcached类似，它支持存储的value类型更多，包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等类型。和memcached一样，为了保证效率，数据都是缓存在内存中。区别是redis会周期性的将数据同步到磁盘，并在此基础上实现了master-slave同步。
redis主从复制的特点：
1.master可以]]></description><category></category></item><item><title><![CDATA[Nginx实现负载均衡]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8458994</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8458994</guid><author>ajaxuser</author><pubDate>Wed, 02 Jan 2013 15:21:33 +0800</pubDate><description><![CDATA[Nginx主要有两大功能，一种是作为web server(作为apache的替代方案)，另外一种是作为反向代理服务器实现负载均衡。
Nginx基于HTTP反向代理方式实现了第七层负载均衡功能，能够很好的支持虚拟主机。
可以按轮询、IP哈希、URL哈希、权重等多种方式对后端服务器做负载均衡，
同时还支持后端服务器的健康检查。

一、实验环境
Nginx服务器ip：192.168.1.10]]></description><category></category></item><item><title><![CDATA[利用keepalived构建高可用的MySQL]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8453342</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8453342</guid><author>ajaxuser</author><pubDate>Sun, 30 Dec 2012 20:02:23 +0800</pubDate><description><![CDATA[一、概述
MySQL-HA目前有很多实现方案，今天就用MySQL双master+keepalived来实现MySQL-HA。
在MySQL-HA环境中，MySQL互为主从关系，这样就保证了两台MySQL数据的一致性。
然后用keepalived实现虚拟IP，通过keepalived来实现MySQL故障时自动切换。
实验环境如下：
Ubuntu12.04 MySQL5.5 keepaliv]]></description><category></category></item><item><title><![CDATA[MySQL主从复制详解]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8452840</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8452840</guid><author>ajaxuser</author><pubDate>Sun, 30 Dec 2012 15:17:51 +0800</pubDate><description><![CDATA[实验环境：
Master：version：MySQL5.5   ip：192.168.1.102
Slave： version：MySQL5.5   ip：192.168.1.103
一、复制解决的问题
1.数据分布
MySQL的复制通常不会对带宽造成很大压力，并且可以随意启动和停止。
因此对于在不同地方维护数据拷贝很有作用。
2.负载均衡
MySQL复制可以把读取分布在不同的服务]]></description><category></category></item><item><title><![CDATA[高可用的LVS负载均衡集群技术详解]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8449679</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8449679</guid><author>ajaxuser</author><pubDate>Sat, 29 Dec 2012 10:08:58 +0800</pubDate><description><![CDATA[最近在看《高性能Linux服务器构建实战》学习LVS相关的技术，将学习的知识做个笔记。
一、LVS集群的组成
利用LVS架设的服务器集群系统由3个部分组成：负载均衡层、服务器群组层、数据共享存储层。
1.负载均衡层
位于整个集群系统的最前端，有一台或者多台负载调度器（Director Server）组成.
LVS核心模块IPVS就安装在Director Server上，而Director]]></description><category></category></item><item><title><![CDATA[LIKE、ORDER BY、GROUP BY索引优化]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8444280</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8444280</guid><author>ajaxuser</author><pubDate>Thu, 27 Dec 2012 16:27:46 +0800</pubDate><description><![CDATA[1.LIKE




2.ORDER BY



3.GROUP BY]]></description><category></category></item><item><title><![CDATA[MySQL复制原理图解]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8442529</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8442529</guid><author>ajaxuser</author><pubDate>Thu, 27 Dec 2012 11:17:04 +0800</pubDate><description><![CDATA[复制如何工作
整体上来说，复制有3个步骤：   
1.master将变更记录到二进制日志(binary log)中（这些记录叫做二进制日志事件，binary log events）。
2.slave将master的binary log events拷贝到它的中继日志(relay log)；
3.slave回放中继日志中的事件，更新自己的数据。
下图描述了复制的过程：

如何让slav]]></description><category></category></item><item><title><![CDATA[MySQL索引优化]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8299337</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8299337</guid><author>ajaxuser</author><pubDate>Sat, 15 Dec 2012 16:52:16 +0800</pubDate><description><![CDATA[MySQL索引类型分为：普通索引、唯一索引、主键、全文索引。
普通索引允许重复的值出现。
唯一索引除了不能有重复的记录外，其它和普通索引一样。
主键是一种特殊的唯一索引。
全文索引只能对(char，varchar，text)进行索引，MyISAM引擎支持全文索引。

1.什么情况下需要建立索引？
通常情况下来讲，在WHERE、JOIN以及LIKE子句中出现的列需要建立索引。

2]]></description><category></category></item><item><title><![CDATA[MyISAM与InnoDB的区别]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8290222</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8290222</guid><author>ajaxuser</author><pubDate>Thu, 13 Dec 2012 12:54:17 +0800</pubDate><description><![CDATA[MyISAM 


InnoDB 




构成上区别 


每个MyISAM在磁盘上存储成三个文件。文件名为表名，扩展名为文件类型。
.frm 文件存储表定义；
.MYD(MYData) 数据文件的扩展名；
.MYI(MYIndex) 索引文件的扩展名。 


基于磁盘的资源是InnoDB表空间数据文件和它的日志文件，InnoDB 表的大小只受限于操作系统文件的]]></description><category></category></item><item><title><![CDATA[MySQL数据类型char、varchar、text的比较]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8286234</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8286234</guid><author>ajaxuser</author><pubDate>Wed, 12 Dec 2012 13:31:24 +0800</pubDate><description><![CDATA[char(n)定义的列的长度为固定的，长度为0～255之间。
当保存char值时，在它们的右边填充空格以达到指定的长度。
当检索到char值时，尾部的空格被删除掉。
注意：char最大长度是255字符，字符数和字符集没关系。

varchar(n)定义的列的长度为可变长的。
该类型在5.0以下的版本中的最大长度限制为255字节，
而在5.0及以上的版本中，varchar数据类型的长度]]></description><category></category></item><item><title><![CDATA[使用getopt模块处理命令行选项]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/8239950</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/8239950</guid><author>ajaxuser</author><pubDate>Thu, 29 Nov 2012 16:29:41 +0800</pubDate><description><![CDATA[#!/usr/bin/env python
#-*- coding:utf8 -*-
import sys
import getopt
#函数getopt(args, shortopts, longopts=[])
"""
参数args一般是sys.argv[1:]
shortopts  短格式 (-) 
longopts 长格式(--) 
命令行中输入：
python test.py -i 12]]></description><category></category></item><item><title><![CDATA[php实现常用排序算法和查找算法]]></title><link>https://blog.youkuaiyun.com/ajaxuser/article/details/7934741</link><guid>https://blog.youkuaiyun.com/ajaxuser/article/details/7934741</guid><author>ajaxuser</author><pubDate>Sun, 02 Sep 2012 15:34:42 +0800</pubDate><description><![CDATA[<?php
/**
 * 冒泡排序
 * 冒泡排序就是依次比较相邻的两个数，根据采用的排序规则决定是否交换两个数的位置。
 * 在此以升序为例来进行讲解。
 * 第一轮：首先比较第一个数和第二个数，将小数放前，大数放后，然后比较第二个数和第三个数，
 * 将小数放前，大数放后，如此继续，直至比较最后两个数，将小数放前，大数放后。到第一轮结束
 * 的时候，已经成功地将最大的数放到了最后。
 * 第]]></description><category></category></item></channel></rss>