<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Keep Walking... - Kevin125</title>
	<atom:link href="http://www.kevin125.com/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kevin125.com/wordpress</link>
	<description>They say nothing lasts forever...</description>
	<lastBuildDate>Thu, 10 May 2012 06:30:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Linux C Time 时间函数(多线程编程)</title>
		<link>http://www.kevin125.com/wordpress/2012/05/linux-c-time/</link>
		<comments>http://www.kevin125.com/wordpress/2012/05/linux-c-time/#comments</comments>
		<pubDate>Thu, 10 May 2012 06:06:05 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[Linux C]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[pthread]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=267</guid>
		<description><![CDATA[#include &#38;lt;stdio.h&#38;gt; #include &#38;lt;time.h&#38;gt; #include &#38;lt;sys/time.h&#38;gt; #include &#38;lt;pthread.h&#38;gt; pthread_key_t g_thread_key;//数据键 typedef struct tagThreadTime { pthread_t tid; pthread_mutex_t mutex; pthread_cond_t read; pthread_cond_t write; long i; clock_t t_start;//sleep will not count clock_t t_end; struct timeval ts;//more accurate struct timeval te; struct timeval tc; double t_used; struct timespec tts;//not used }ThreadTime; int Thread_SetTid() { ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key); [...]]]></description>
			<content:encoded><![CDATA[<p><span id="more-267"></span></p>
<pre class="brush: c; gutter: true">#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;time.h&amp;gt;
#include &amp;lt;sys/time.h&amp;gt;
#include &amp;lt;pthread.h&amp;gt;

pthread_key_t g_thread_key;//数据键

typedef struct tagThreadTime
{
	pthread_t tid;
	pthread_mutex_t mutex;
	pthread_cond_t read;
	pthread_cond_t write;
	long i;
	clock_t t_start;//sleep will not count
	clock_t t_end;
	struct timeval ts;//more accurate
	struct timeval te;
	struct timeval tc;
	double t_used;
	struct timespec tts;//not used
}ThreadTime;

int Thread_SetTid()
{
	ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key);
	//lock
	pStruct-&amp;gt;tid = pthread_self();
	//unlock
}

int Thread_SetStartTime()
{
	ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key);
	//lock
	pStruct-&amp;gt;t_start = clock();
	gettimeofday(&amp;amp;pStruct-&amp;gt;ts,NULL);
	//unlock
}

int Thread_Delay()
{
	ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key);
	pStruct-&amp;gt;i = 10000000L;
	while(pStruct-&amp;gt;i--);
	sleep(1);
}

int Thread_SetEndTime()
{
	ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key);
	//lock
	pStruct-&amp;gt;t_end = clock();
	gettimeofday(&amp;amp;pStruct-&amp;gt;te,NULL);
	//unlock
}

int Thread_CalcUsedTime()
{
	ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key);
	//lock
	pStruct-&amp;gt;t_used = (double)(pStruct-&amp;gt;t_end - pStruct-&amp;gt;t_start)/CLOCKS_PER_SEC;
	pStruct-&amp;gt;t_used *= 1000;
	pStruct-&amp;gt;tc.tv_sec = pStruct-&amp;gt;te.tv_sec - pStruct-&amp;gt;ts.tv_sec;
	pStruct-&amp;gt;tc.tv_usec = pStruct-&amp;gt;te.tv_usec - pStruct-&amp;gt;ts.tv_usec;
	//unlock
}

int Thread_PrintUsedTime()
{
	ThreadTime *pStruct = (ThreadTime*)pthread_getspecific(g_thread_key);
	//lock
	printf(&amp;quot;tid %lu used %.1f (ms) [%.2f ms] ts %lu te %lu gs %lu ge %lu [%lu %lu]\n&amp;quot;,
		pStruct-&amp;gt;tid,pStruct-&amp;gt;t_used,pStruct-&amp;gt;tc.tv_usec/1000.0,
		pStruct-&amp;gt;t_start,pStruct-&amp;gt;t_end,
		pStruct-&amp;gt;ts.tv_usec,pStruct-&amp;gt;te.tv_usec,
		pStruct-&amp;gt;ts.tv_sec,pStruct-&amp;gt;te.tv_sec);
	//unlock
}

void *Thread_Main(void *arg)
{
	ThreadTime m_ThreadTime;
	pthread_setspecific(g_thread_key,(void *)&amp;amp;m_ThreadTime);
	Thread_SetTid();
	Thread_SetStartTime();
	Thread_Delay();
	Thread_SetEndTime();
	Thread_CalcUsedTime();
	Thread_PrintUsedTime();
}

int main()
{
	int i;
	pthread_t tid[25];
	printf(&amp;quot;Main Clock %lu\n&amp;quot;,clock());
	pthread_key_create(&amp;amp;g_thread_key,NULL);

	for (i = 0; i &amp;lt; 25; i++)
		pthread_create (&amp;amp;tid[i], NULL, Thread_Main, NULL); //创建多线程

	for (i = 0; i &amp;lt; 25; i++)
		pthread_join (tid[i], NULL);  //等待各个线程结束

	printf(&amp;quot;Main Clock %lu\n&amp;quot;,clock());

	struct timespec ts;  

	clock_gettime(CLOCK_REALTIME, &amp;amp;ts);
	printf(&amp;quot;CLOCK_REALTIME: %ld, %ld\n&amp;quot;, ts.tv_sec, ts.tv_nsec);  

	clock_gettime(CLOCK_MONOTONIC, &amp;amp;ts);//打印出来的时间跟 cat /proc/uptime 第一个参数一样
	printf(&amp;quot;CLOCK_MONOTONIC: %ld, %ld\n&amp;quot;, ts.tv_sec, ts.tv_nsec);  

	clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &amp;amp;ts);
	printf(&amp;quot;CLOCK_PROCESS_CPUTIME_ID: %ld, %ld\n&amp;quot;, ts.tv_sec, ts.tv_nsec);  

	clock_gettime(CLOCK_THREAD_CPUTIME_ID, &amp;amp;ts);
	printf(&amp;quot;CLOCK_THREAD_CPUTIME_ID: %ld, %ld\n&amp;quot;, ts.tv_sec, ts.tv_nsec);  

	return 0;
}
</pre>
<p>需要链接 pthread 和 rt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2012/05/linux-c-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux C Single List for Common Use</title>
		<link>http://www.kevin125.com/wordpress/2012/04/linux-c-single-list-for-common-use/</link>
		<comments>http://www.kevin125.com/wordpress/2012/04/linux-c-single-list-for-common-use/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 09:38:38 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[Linux C]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[List]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=262</guid>
		<description><![CDATA[Linux C 通用单链表实现 ################################################################################ #std_list.h ################################################################################ /******************************************************************************* * 模块名: 通用单链表头文件 * 文件名: std_list.h * 功能说明: 通用单链表库,不允许添加相同数据(可在实现中修改) * 作者: 唐文凯 * 版本: V0.1 -------------------------------------------------------------------------------- * 修改记录: * 日期 版本 修改人 修改内容 * 20120425 0.1 唐文凯 创建 *******************************************************************************/ #ifndef __STDLIST_H__ #define __STDLIST_H__ #ifdef __cplusplus extern &#34;C&#34; { #endif #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;string.h&#62; #include &#60;pthread.h&#62; //回调函数模型定义,不用修改,需要保证传参个数和原函数一致 [...]]]></description>
			<content:encoded><![CDATA[<p>Linux C 通用单链表实现<br />
################################################################################<br />
#std_list.h<br />
################################################################################<br />
<span id="more-262"></span></p>
<pre class="brush: actionscript3; gutter: true">/*******************************************************************************
*	模块名: 通用单链表头文件
*	文件名: std_list.h
*	功能说明: 通用单链表库,不允许添加相同数据(可在实现中修改)
*	作者: 唐文凯
*	版本: V0.1
--------------------------------------------------------------------------------
*	修改记录:
*	日期			版本		修改人		修改内容
*	20120425	0.1		  唐文凯		创建
*******************************************************************************/
#ifndef __STDLIST_H__
#define __STDLIST_H__

#ifdef __cplusplus
extern &quot;C&quot; {
#endif

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;pthread.h&gt;

//回调函数模型定义,不用修改,需要保证传参个数和原函数一致
typedef int (*func)();

//数据结构定义,自行修改
typedef struct tagDataType
{
	int data;
}TDataType;

//结点结构定义
typedef struct tagListNode
{
	TDataType m_tData;
	struct tagListNode *pnext;
}TListNode;

//单链表
typedef struct tagList
{
	//数据结点
	TListNode *m_ptNode;
	//添加结点回调函数,原型 m_pfNodeNew(TCList *pList,TDataType *pData)
	func m_pfNodeNew;
	//删除结点回调函数,原型 m_pfNodeDel(TCList *pList,TListNode *pNode)
	func m_pfNodeDel;
	//打印结点回调函数,原型 m_pfPrint(TCList *pList)
	func m_pfPrint;
	//清空结点回调函数,退出时不调用会产生内存泄露,原型 m_pfQuit(TCList *pList)
	func m_pfQuit;
	//自定义回调函数,用于扩展
	//func m_pfSort;
	//互斥锁
	pthread_mutex_t m_tMutex;
}TCList;

//初始化单链表,	已定义回调函数可以在调用ListInit后重载
int ListInit(TCList *pList);

#ifdef __cplusplus
}
#endif

#endif //__STDLIST_H__</pre>
<p>################################################################################<br />
#std_list.c<br />
################################################################################</p>
<pre class="brush: actionscript3; gutter: true">/*******************************************************************************
*	模块名: 通用单链表头文件
*	文件名: std_list.c
*	功能说明: 通用单链表库
*	作者: 唐文凯
*	版本: V0.1
--------------------------------------------------------------------------------
*	修改记录:
*	日期			版本		修改人		修改内容
*	20120425	0.1		  唐文凯		创建
*******************************************************************************/
#include &quot;std_list.h&quot;

#define SAFE_FREE(p) \
do{\
	if((p) != NULL)\
	{\
		free(p);\
		(p) = NULL;\
	}\
} while(0);

//增加结点
int CreateNode(TCList *pList,TDataType *pData);
//删除结点
int DeleteNode(TCList *pList,TListNode *pNode);
//打印结点
int ListPrint(TCList *pList);
//释放结点
int ListDestroy(TCList *pList);

//初始化单链表,创建互斥锁,注册回调函数
int ListInit(TCList *pList)
{
	int nRet;

	nRet = pthread_mutex_init( &amp;pList-&gt;m_tMutex, NULL );

	pList-&gt;m_pfNodeNew = CreateNode;
	pList-&gt;m_pfNodeDel = DeleteNode;
	pList-&gt;m_pfPrint = ListPrint;
	pList-&gt;m_pfQuit = ListDestroy;

	return nRet;
}

//申请结点
TListNode *MallocNode()
{
	TListNode *pNode = (TListNode*)malloc(sizeof(TListNode));
	if(pNode)
	{
		memset(pNode,0,sizeof(TListNode));
		pNode-&gt;pnext = NULL;
	}

	return pNode;
}

//添加结点
int CreateNode(TCList *pList,TDataType *pData)
{
	pthread_mutex_lock( &amp;pList-&gt;m_tMutex );

	TListNode *pTemp = pList-&gt;m_ptNode;
	TListNode *pNew = MallocNode();

	if(pNew&amp;&amp;pData)
	{
		//数据拷贝!
		//pNew-&gt;m_tData.data = pData-&gt;data;
		memcpy(&amp;pNew-&gt;m_tData,pData,sizeof(TDataType));
	}

	if(pTemp)
	{
		while(pTemp)
		{
			//是否允许添加相同数据!
			if(CompareNode(pTemp,pNew))
			{
				SAFE_FREE(pNew);
				break;
			}
			if(pTemp-&gt;pnext)
			{
				pTemp=pTemp-&gt;pnext;
			}
			else
			{
				pTemp-&gt;pnext = pNew;
				break;
			}
		}
	}
	else
	{
		pList-&gt;m_ptNode = pNew;
	}

	pthread_mutex_unlock( &amp;pList-&gt;m_tMutex );

	return 0;
}

//比较结点
int CompareNode(TListNode *pNode1,TListNode *pNode2)
{
	if(pNode1&amp;&amp;pNode2)
	{
		//比较数据!
		//if(pNode1-&gt;m_tData.data==pNode2-&gt;m_tData.data)
		if(0 == memcmp(&amp;pNode1-&gt;m_tData,&amp;pNode2-&gt;m_tData,sizeof(TDataType)))
		{
			return 1;
		}
	}

	return 0;
}

//删除结点
int DeleteNode(TCList *pList,TListNode *pNode)
{
	pthread_mutex_lock( &amp;pList-&gt;m_tMutex );

	TListNode *pTemp = pList-&gt;m_ptNode;
	TListNode *pDel = NULL;

	if(CompareNode(pTemp,pNode))
	{
		pList-&gt;m_ptNode = pList-&gt;m_ptNode-&gt;pnext;
		SAFE_FREE(pTemp);
	}
	else
	{
		while(pTemp&amp;&amp;pTemp-&gt;pnext)
		{
			if(CompareNode(pTemp-&gt;pnext,pNode))
			{
				pDel = pTemp-&gt;pnext;
				pTemp-&gt;pnext = pTemp-&gt;pnext-&gt;pnext;
				SAFE_FREE(pDel);
			}
			else
			{
				pTemp=pTemp-&gt;pnext;
			}
		}
	}

	pthread_mutex_unlock( &amp;pList-&gt;m_tMutex );

	return 0;
}

//打印结点
int ListPrint(TCList *pList)
{
	pthread_mutex_lock( &amp;pList-&gt;m_tMutex );

	TListNode *pTemp = pList-&gt;m_ptNode;
	while(pTemp)
	{
		//打印数据!
		printf(&quot;Node 0x%x Data %d\n&quot;,pTemp,pTemp-&gt;m_tData.data);
		pTemp=pTemp-&gt;pnext;
	}

	pthread_mutex_unlock( &amp;pList-&gt;m_tMutex );

	return 0;
}

//销毁结点
int ListDestroy(TCList *pList)
{
	while(pList-&gt;m_ptNode)
	{
		pList-&gt;m_pfNodeDel(pList,pList-&gt;m_ptNode);
	}

	return 0;
}

#ifdef LIST_TEST
void *printlist(void *arg)
{
	TCList *pList = (TCList *)arg;

	printf(&quot;thread print\n&quot;);

	pList-&gt;m_pfPrint(pList);
}

int main(int argc,char *argv[])
{
	pthread_t tid;

	TCList m_tList;
	TListNode m_tNode;
	TDataType m_tData;

	memset(&amp;m_tList,0,sizeof(TCList));
	memset(&amp;m_tNode,0,sizeof(TListNode));
	memset(&amp;m_tData,0,sizeof(TDataType));

	//初始化List
	ListInit(&amp;m_tList);

	//添加数据
	m_tData.data = 1;
	m_tList.m_pfNodeNew(&amp;m_tList,&amp;m_tData);
	m_tData.data = 2;
	m_tList.m_pfNodeNew(&amp;m_tList,&amp;m_tData);
	m_tData.data = 3;
	m_tList.m_pfNodeNew(&amp;m_tList,&amp;m_tData);
	m_tData.data = 4;
	m_tList.m_pfNodeNew(&amp;m_tList,&amp;m_tData);
	m_tData.data = 5;
	m_tList.m_pfNodeNew(&amp;m_tList,&amp;m_tData);

	//打印
	pthread_create(&amp;tid,NULL,printlist,(void *)&amp;m_tList);
	pthread_join(tid,NULL);

	printf(&quot;test print\n&quot;);
	m_tList.m_pfPrint(&amp;m_tList);

	//删除
	printf(&quot;test del\n&quot;);
	m_tNode.m_tData.data=3;
	m_tList.m_pfNodeDel(&amp;m_tList,&amp;m_tNode);
	m_tList.m_pfPrint(&amp;m_tList);

	//测试添加相同元素
	printf(&quot;test add same\n&quot;);
	m_tData.data = 5;
	m_tList.m_pfNodeNew(&amp;m_tList,&amp;m_tData);
	m_tList.m_pfPrint(&amp;m_tList);

	printf(&quot;test quit\n&quot;);
	m_tList.m_pfQuit(&amp;m_tList);//释放内存
	m_tList.m_pfPrint(&amp;m_tList);

	return 0;
}
#endif //LIST_TEST</pre>
<p><code></code><br />
################################################################################<br />
#gcc -g -o list_test -DLIST_TEST -I. -lpthread<br />
################################################################################</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2012/04/linux-c-single-list-for-common-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux C multi-thread pthread Circle Buffer</title>
		<link>http://www.kevin125.com/wordpress/2012/04/linux-c-multi-thread-pthread-circle-buffer/</link>
		<comments>http://www.kevin125.com/wordpress/2012/04/linux-c-multi-thread-pthread-circle-buffer/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 02:25:00 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[Linux C]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Circle Buffer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[multi-thread]]></category>
		<category><![CDATA[pthread]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=254</guid>
		<description><![CDATA[#include "stdio.h" #include "stdlib.h" #include "string.h" #include "pthread.h" #define SAFE_FREE(p) \ do{\ if((p) != NULL)\ {\ free(p);\ (p) = NULL;\ }\ } while(0); typedef struct { int len; void *data; }TDataType; typedef struct { int q_size; int q_front; int q_rear; int q_count; int q_run; TDataType *q_data; pthread_mutex_t q_mutex; pthread_cond_t q_write; pthread_cond_t q_read; }TCircleQueue; int CircleQueueInit( [...]]]></description>
			<content:encoded><![CDATA[<p><code><br />
#include "stdio.h"<br />
#include "stdlib.h"<br />
#include "string.h"<br />
#include "pthread.h"</p>
<p><span id="more-254"></span></p>
<p>#define SAFE_FREE(p) \<br />
do{\<br />
	if((p) != NULL)\<br />
	{\<br />
		free(p);\<br />
		(p) = NULL;\<br />
	}\<br />
} while(0);</p>
<p>typedef struct<br />
{<br />
	int len;<br />
	void *data;<br />
}TDataType;</p>
<p>typedef struct<br />
{<br />
	int q_size;<br />
	int q_front;<br />
	int q_rear;<br />
	int q_count;<br />
	int q_run;<br />
	TDataType *q_data;<br />
	pthread_mutex_t q_mutex;<br />
	pthread_cond_t q_write;<br />
	pthread_cond_t q_read;<br />
}TCircleQueue;</p>
<p>int CircleQueueInit( TCircleQueue *Q, int dwQueueSize );<br />
int CircleQueueQuit( TCircleQueue *Q );<br />
int CircleQueueReset( TCircleQueue *Q );<br />
int CircleQueueGetUsage( TCircleQueue *Q );<br />
int CircleQueueIsEmpty( TCircleQueue *Q );<br />
int CircleQueueIsFull( TCircleQueue *Q );<br />
int CircleQueuePut( TCircleQueue *Q, void *buf, int len );<br />
int CircleQueueGet( TCircleQueue *Q, void **buf, int *len );</p>
<p>/*****************************************************************************/<br />
//Function Implement<br />
/*****************************************************************************/<br />
//CircleQueueInit<br />
int CircleQueueInit( TCircleQueue *Q, int dwQueueSize )<br />
{<br />
	int nRet = 0;</p>
<p>	if( Q == NULL||dwQueueSize == 0 )<br />
	{<br />
		printf( "CircleQueueInit Param Error!\n" );<br />
		return -1;<br />
	}</p>
<p>	printf("CircleQueueInit!\n");</p>
<p>	Q->q_size = dwQueueSize;<br />
	Q->q_data = malloc( sizeof( TDataType ) * dwQueueSize );<br />
	if( NULL == Q->q_data )<br />
	{<br />
		printf( "CircleQueueInit Malloc Error!\n" );<br />
		return -2;<br />
	}</p>
<p>	memset( Q->q_data, 0, sizeof( TDataType ) * dwQueueSize );</p>
<p>	Q->q_front = Q->q_rear = 0;<br />
	Q->q_count = 0;<br />
	Q->q_run = 1;</p>
<p>	nRet = pthread_mutex_init( &#038;Q->q_mutex, NULL );<br />
	nRet |= pthread_cond_init( &#038;Q->q_read, NULL );<br />
	nRet |= pthread_cond_init( &#038;Q->q_write, NULL );<br />
	if( nRet != 0 )<br />
	{<br />
		free( Q->q_data );<br />
		printf( "CircleQueueInit Create Mutex Error![%d]\n", nRet );<br />
		return nRet;<br />
	}</p>
<p>	return 0;<br />
}</p>
<p>int CircleQueueQuit( TCircleQueue * Q )<br />
{<br />
	int i = 0;</p>
<p>	pthread_mutex_lock( &#038;Q->q_mutex );</p>
<p>	printf("CircleQueueQuit!\n");</p>
<p>	if( Q->q_data )<br />
	{<br />
		for( i=0; i<Q->q_size; i++ )<br />
		{<br />
			SAFE_FREE( Q->q_data[i].data );<br />
		}<br />
		SAFE_FREE( Q->q_data );<br />
	}</p>
<p>	Q->q_size = 0;<br />
	Q->q_front = Q->q_rear = 0;<br />
	Q->q_count = 0;<br />
	Q->q_run = 0;</p>
<p>	pthread_mutex_destroy( &#038;Q->q_mutex );<br />
	pthread_cond_destroy( &#038;Q->q_read );<br />
	pthread_cond_destroy( &#038;Q->q_write );</p>
<p>	return 0;<br />
}</p>
<p>int CircleQueueReset( TCircleQueue *Q )<br />
{<br />
	int i;</p>
<p>	//Lock<br />
	pthread_mutex_lock( &#038;Q->q_mutex );</p>
<p>	if( Q->q_data )<br />
	{<br />
		for( i=0; i<Q->q_size; i++ )<br />
		{<br />
			SAFE_FREE( Q->q_data[i].data );<br />
		}<br />
		memset( Q->q_data, 0, sizeof( TDataType ) * Q->q_size );<br />
	}</p>
<p>	Q->q_front = Q->q_rear = 0;<br />
	Q->q_count = 0;</p>
<p>	//Unlock<br />
	pthread_mutex_unlock( &#038;Q->q_mutex );</p>
<p>	return 0;<br />
}</p>
<p>int CircleQueueGetUsage( TCircleQueue *Q )<br />
{<br />
	return Q->q_count * 100/Q->q_size;<br />
}</p>
<p>int CircleQueueIsEmpty( TCircleQueue *Q )<br />
{<br />
	return Q->q_count == 0;<br />
}</p>
<p>int CircleQueueIsFull( TCircleQueue *Q )<br />
{<br />
	return Q->q_count == Q->q_size;<br />
}</p>
<p>int CircleQueuePut( TCircleQueue *Q, void *buf, int len )<br />
{<br />
	//Lock<br />
	pthread_mutex_lock( &#038;Q->q_mutex );<br />
	if( CircleQueueIsFull( Q ) )<br />
	{<br />
		//printf("<");<br />
		pthread_cond_wait( &#038;Q->q_write, &#038;Q->q_mutex );<br />
    //printf(">\n");<br />
	}</p>
<p>	//remalloc and copy or mmap<br />
	if( len > Q->q_data[Q->q_rear].len )<br />
	{<br />
		SAFE_FREE( Q->q_data[Q->q_rear].data );<br />
    //printf("malloc\n");<br />
		Q->q_data[Q->q_rear].data = malloc( len );<br />
		if( !Q->q_data[Q->q_rear].data )<br />
		{<br />
			printf("malloc data failed!\n");<br />
			pthread_mutex_unlock( &#038;Q->q_mutex );<br />
			return -1;<br />
		}<br />
	}</p>
<p>	Q->q_count++;<br />
	Q->q_data[Q->q_rear].len = len;<br />
	memcpy( Q->q_data[Q->q_rear].data,buf,len );</p>
<p>	Q->q_rear = ( Q->q_rear+1 ) % Q->q_size;</p>
<p>	//Unlock<br />
	pthread_cond_signal( &#038;Q->q_read );<br />
	pthread_mutex_unlock( &#038;Q->q_mutex );</p>
<p>	return 0;<br />
}</p>
<p>int CircleQueueGet( TCircleQueue *Q, void **buf, int *len )<br />
{<br />
	//Lock<br />
	pthread_mutex_lock( &#038;Q->q_mutex );</p>
<p>	if( CircleQueueIsEmpty( Q ) )<br />
	{<br />
		//printf(">");<br />
		pthread_cond_wait( &#038;Q->q_read,&#038;Q->q_mutex );<br />
    //printf("<\n");<br />
	}</p>
<p>	*len = Q->q_data[Q->q_front].len;<br />
	*buf = Q->q_data[Q->q_front].data;<br />
	//printf("data 0x%x %s len %d\n",*buf,(char *)*buf,*len);</p>
<p>	Q->q_count--;<br />
	Q->q_front = ( Q->q_front+1 ) % Q->q_size;</p>
<p>	//Unlock<br />
	pthread_cond_signal( &#038;Q->q_write );<br />
	pthread_mutex_unlock( &#038;Q->q_mutex );</p>
<p>	return 0;<br />
}</p>
<p>void *Thread_ST(void *arg)<br />
{<br />
	TCircleQueue *ptCQ = (TCircleQueue *)arg;<br />
	while(ptCQ->q_run)<br />
	{<br />
		//printf("1\n");<br />
		pthread_mutex_lock(&#038;ptCQ->q_mutex);<br />
		printf("\ncurrent usage %d size %d front %d rear %d count %d\n",<br />
    	CircleQueueGetUsage(ptCQ),<br />
      ptCQ->q_size,<br />
      ptCQ->q_front,<br />
      ptCQ->q_rear,<br />
      ptCQ->q_count);<br />
		pthread_mutex_unlock(&#038;ptCQ->q_mutex);<br />
		sleep(1);<br />
	}<br />
}</p>
<p>void *Thread_P(void *arg)<br />
{<br />
	TCircleQueue *ptCQ = (TCircleQueue *)arg;<br />
	while(ptCQ->q_run)<br />
	{<br />
		CircleQueuePut(ptCQ,"TEST1",strlen("TEST1"));<br />
    /*<br />
    pthread_mutex_lock(&#038;ptCQ->q_mutex);<br />
    if( CircleQueueIsFull( ptCQ ) )<br />
    {<br />
    	usleep(40*1000);<br />
    }<br />
    pthread_mutex_unlock(&#038;ptCQ->q_mutex);<br />
    */<br />
    usleep(40*1000);<br />
	}<br />
}</p>
<p>void *Thread_C(void *arg)<br />
{<br />
	TCircleQueue *ptCQ = (TCircleQueue *)arg;</p>
<p>	void *buf;<br />
	int len;</p>
<p>	while(ptCQ->q_run)<br />
	{<br />
		CircleQueueGet(ptCQ,&#038;buf,&#038;len);<br />
		printf("0x%x %s %d\n",buf,(char *)buf,len);<br />
    usleep(40*1000);<br />
	}<br />
}</p>
<p>int main(int argc,char *argv[])<br />
{<br />
	int nRet;<br />
	TCircleQueue m_tCQ;<br />
	pthread_t tid_p,tid_c,tid_st;</p>
<p>	nRet = CircleQueueInit(&#038;m_tCQ,100);</p>
<p>	nRet |= pthread_create(&#038;tid_st,NULL,Thread_ST,(void *)&#038;m_tCQ);<br />
	nRet |= pthread_create(&#038;tid_p,NULL,Thread_P,(void *)&#038;m_tCQ);<br />
	nRet |= pthread_create(&#038;tid_c,NULL,Thread_C,(void *)&#038;m_tCQ);<br />
	if(nRet != 0)<br />
	{<br />
		printf("pthread_create error %d\n",nRet);<br />
	}</p>
<p>	sleep(10);</p>
<p>	nRet = CircleQueueQuit(&#038;m_tCQ);<br />
	nRet |= pthread_join(tid_p,NULL);<br />
	nRet |= pthread_join(tid_c,NULL);<br />
	nRet |= pthread_join(tid_st,NULL);</p>
<p>	sleep(1);</p>
<p>	return nRet;<br />
}</p>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2012/04/linux-c-multi-thread-pthread-circle-buffer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>上海牌照&#124;上海拍牌&#124;上海牌照高价的背后</title>
		<link>http://www.kevin125.com/wordpress/2012/03/58300/</link>
		<comments>http://www.kevin125.com/wordpress/2012/03/58300/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 16:24:20 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[个人日记]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=245</guid>
		<description><![CDATA[甲车时速70公里,乙车时速80公里,若甲车先行两天后乙车出发追赶,请问:上海车牌下个月多少万? 目前最低可成交价 58300 出价范围 58000~58600 如果是一场公开的拍卖,为什么出价范围可以比最低成交价低? 最低价58300,均价58600,为何离散程度如此之低? 今天拍牌再次失败!! 上次总结了一下上海牌照高价的成分,今天看来还是不够充分. 现在看来一切皆是浮云&#8230; 目前最低可成交价 58300 出价范围 58000~58600 以上价格只是打个比方,如果是一场公开的拍卖,为什么出价范围可以比最低成交价低? 今天看了KDS,一句话惊醒了我,这个低价是给黄先生留的后路啊&#8230; 只能说我愚钝,拍了2次才看透. 上海牌照的价格只是在一部分力量的推动下稳步上升,还按照了经济发展的规律有条件的稳步上升&#8230; 本以为这次软件更新可以造成一定的影响,谁知道还能登陆老客户端?这算向下兼容? 换个角度说吧,最低价58300,发放8000张牌照,按照拍卖的规律就是有8000个价格是在58300以上,但是均价为何能稳定在58600呢? 个人觉得按照离散数学的分析,这种情况发生的概率在μ=0.05的情况下为0.05%,真相只有一个,黄先生只是哄抬了最低价格,然后通过低于最低可成交价的价格撤离了&#8230; 所以结果就是吾等平民眼睁睁看着上海牌照的价格稳步上升&#8230; 悲哀啊&#8230;]]></description>
			<content:encoded><![CDATA[<h4><span style="color: #ff0000;">甲车时速70公里,乙车时速80公里,若甲车先行两天后乙车出发追赶,请问:上海车牌下个月多少万?</span></h4>
<h3><span style="color: #ff0000;">目前最低可成交价 58300 出价范围 58000~58600</span></h3>
<h3><span style="color: #ff0000;"><span style="color: #ff0000;">如果是一场公开的拍卖,为什么出价范围可以比最低成交价低?</span></span></h3>
<h3><span style="color: #ff0000;"><span style="color: #ff0000;">最低价58300,均价58600,为何离散程度如此之低?</span></span></h3>
<p><span id="more-245"></span></p>
<p>今天拍牌再次失败!!</p>
<p>上次总结了一下上海牌照高价的成分,今天看来还是不够充分.</p>
<p>现在看来一切皆是浮云&#8230;</p>
<h3><span style="color: #ff0000;">目前最低可成交价 58300 出价范围 <span style="color: #000000;">58000</span>~58600</span></h3>
<h3><span style="color: #ff0000;">以上价格只是打个比方,如果是一场公开的拍卖,为什么出价范围可以比最低成交价低?</span></h3>
<h3><span style="color: #ff0000;">今天看了KDS,一句话惊醒了我,<span style="color: #000000;">这个低价是给黄先生留的后路啊</span>&#8230;</span></h3>
<h3><span style="color: #ff0000;">只能说我愚钝,拍了2次才看透.</span></h3>
<h3><span style="color: #ff0000;">上海牌照的价格只是在一部分力量的推动下稳步上升,还按照了经济发展的规律有条件的稳步上升&#8230;</span></h3>
<h3><span style="color: #ff0000;">本以为这次软件更新可以造成一定的影响,谁知道还能登陆老客户端?这算向下兼容?</span></h3>
<h3><span style="color: #ff0000;">换个角度说吧,最低价58300,发放8000张牌照,按照拍卖的规律就是有8000个价格是在58300以上,但是均价为何能稳定在58600呢?</span></h3>
<h3><span style="color: #ff0000;">个人觉得按照离散数学的分析,这种情况发生的概率在μ=0.05的情况下为0.05%,真相只有一个,黄先生只是哄抬了最低价格,然后通过低于最低可成交价的价格撤离了&#8230;</span></h3>
<h3><span style="color: #ff0000;">所以结果就是吾等平民眼睁睁看着上海牌照的价格稳步上升&#8230;</span></h3>
<h3><span style="color: #ff0000;">悲哀啊&#8230;</span></h3>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2012/03/58300/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[招募]上海牌照真心贵!招募有志之士共同拍牌!</title>
		<link>http://www.kevin125.com/wordpress/2012/02/20120218/</link>
		<comments>http://www.kevin125.com/wordpress/2012/02/20120218/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 01:15:47 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[个人日记]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=238</guid>
		<description><![CDATA[上海牌照真心贵啊! &#160; 首先百元联盟的思想是准确无误的,首轮出价100元(加价幅度亦为100元),只要出价就能进入第二轮,不但没有任何损失而且可以平抑最低价. 这么分析吧,想要拍牌照的大致分为四类人: &#160; 1A.富贾&#8211;他们可以不管市场价格,只要砸钱就可以拍到上海牌照. 2B.黄先生&#8211;他们为谋求高额利润,不惜代价把价格抬高. 3C.平民&#8211;像我们这样的广大人民,买车已经累的半死,牌照还让我们吐血. 4D.神秘人&#8211;我不确定是否存在黑手的操纵,但是价格依旧很高. &#160; 假设本次投放8000张牌照,参与投标人数为25000人 去除2500个1A,2500个2B,还剩3000个名额有3C和4D掌控 如果去除3000个1A,3000个2B,还剩2000个名额 我真不想说真有这么多富贾?有钱的早就买好车啊牌啊的了吧 难道还会有这么多黄先生?估计有,但还是有3C和4D的名额 &#160; 结论:只要有1000个3C,最低价就由我们说了算! 在3C中,可能还存在着一些思想上有误区的人,只要把百元联盟的思想普及,我就不信拍不到低价,毕竟3C是底层,占着绝大部分的名额. &#160; 观察: 第一次拍牌,看着飞涨的价格心有不甘! 百元联盟的100元坚持了将近45分钟,后续就是黄先生的哄抬物价,和小部分3C的漫无目的的乱出价&#8230;涨幅基本就是千、万级的&#8230;何必呢?第一轮出多少根本没有任何意思,它只产生一个最低价!! &#160; 操作: 首轮出价:当前人数除以2000乘以100,所以组织2千人100元,2千人200元,2千人300元&#8230;当有大于总人数减去投放量的时候&#8230; (论证:当有足够多人出价100元时,加价幅度依然会陡升) 时间:10:00:00~10:59:59 3C们,三思吧,象征性的出个一两百元就够了 &#160; 第二轮出价: 看3C们的RP了&#8230; &#160; 上海牌照真心贵啊!大家帮转吧,不管是已经拍到的还是即将要拍牌的!]]></description>
			<content:encoded><![CDATA[<div>
<p>上海牌照真心贵啊!</p>
<p>&nbsp;</p>
<p>首先百元联盟的思想是准确无误的,首轮出价100元(加价幅度亦为100元),只要出价就能进入第二轮,不但没有任何损失而且可以平抑最低价.</p>
<p><span id="more-238"></span></p>
<p>这么分析吧,想要拍牌照的大致分为四类人:</p>
<p>&nbsp;</p>
<p>1A.富贾&#8211;他们可以不管市场价格,只要砸钱就可以拍到上海牌照.</p>
<p>2B.黄先生&#8211;他们为谋求高额利润,不惜代价把价格抬高.</p>
<p>3C.平民&#8211;像我们这样的广大人民,买车已经累的半死,牌照还让我们吐血.</p>
<p>4D.神秘人&#8211;我不确定是否存在黑手的操纵,但是价格依旧很高.</p>
<p>&nbsp;</p>
<p>假设本次投放8000张牌照,参与投标人数为25000人</p>
<p>去除2500个1A,2500个2B,还剩3000个名额有3C和4D掌控</p>
<p>如果去除3000个1A,3000个2B,还剩2000个名额</p>
<p>我真不想说真有这么多富贾?有钱的早就买好车啊牌啊的了吧</p>
<p>难道还会有这么多黄先生?估计有,但还是有3C和4D的名额</p>
<p>&nbsp;</p>
<p>结论:只要有1000个3C,最低价就由我们说了算!</p>
<p>在3C中,可能还存在着一些思想上有误区的人,只要把百元联盟的思想普及,我就不信拍不到低价,毕竟3C是底层,占着绝大部分的名额.</p>
<p>&nbsp;</p>
<p>观察:</p>
<p>第一次拍牌,看着飞涨的价格心有不甘!</p>
<p>百元联盟的100元坚持了将近45分钟,后续就是黄先生的哄抬物价,和小部分3C的漫无目的的乱出价&#8230;涨幅基本就是千、万级的&#8230;何必呢?第一轮出多少根本没有任何意思,它只产生一个最低价!!</p>
<p>&nbsp;</p>
<p>操作:</p>
<p>首轮出价:当前人数除以2000乘以100,所以组织2千人100元,2千人200元,2千人300元&#8230;当有大于总人数减去投放量的时候&#8230;</p>
<p>(论证:当有足够多人出价100元时,加价幅度依然会陡升)</p>
<p>时间:10:00:00~10:59:59</p>
<p>3C们,三思吧,象征性的出个一两百元就够了</p>
<p>&nbsp;</p>
<p>第二轮出价:</p>
<p>看3C们的RP了&#8230;</p>
<p>&nbsp;</p>
<p>上海牌照真心贵啊!大家帮转吧,不管是已经拍到的还是即将要拍牌的!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2012/02/20120218/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>十年</title>
		<link>http://www.kevin125.com/wordpress/2011/08/decade/</link>
		<comments>http://www.kevin125.com/wordpress/2011/08/decade/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 01:09:49 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[人生哲理]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=183</guid>
		<description><![CDATA[十年前，十年后 引导语：不知道十年的时间究竟有多长。 十年前，在我们的脑海中； 十年后，却在深深的心底。 时光煮雨，我们在时间上行走。 我们是拥有情感的人类，我们在亲情、爱情、生活、信念、友情的岁月冲洗下， 十年前，十年后，我们的情感有了什么变化…… 父母 十年前我们是父母的孩子，十年后我们是孩子的父母； 十年前我不知道家的温馨，十年后我才体会家的温暖； 十年前我渴望离家去远方，十年后我渴望从远方回家； 十年前我对父母大吵大嚷，十年后我希望父母再骂我一次。 爱情 十年前你是我的同桌，十年后你成了别人的妻子； 十年前我唱着同桌的你，十年后我想着同桌的你； 十年前我们面对的唯一问题是考试，十年后我们除了考试所有的问题都要面对； 十年前我在你家楼下记住了你嫣然的回眸一笑，十年后我在你家楼下看到你训斥孩子的严厉面孔； 十年前我渴望马上结婚，十年后我渴望再谈一次恋爱； 十年前我们谈及爱情，总是羞涩，十年后我们谈及爱情，却是生涩； 十年前我渴望爱情，但不知道什么是爱情，十年后我知道了什么是爱情，却不再拥有爱情。 生活 十年前我骑着自行车，吹着欢快的口哨，走在回家的路上， 十年后我开着私家车，接着不断的电话，走在应酬的路上； 十年前我渴望住进五星饭店，十年后我住进五星饭店，却想回家； 十年前我渴望坐一次飞机，十年后我最害怕的就是坐飞机； 十年前我踢完球，走过咖啡屋的窗前，希望女生对面的男生是我， 十年后我望见咖啡屋外走过的刚刚踢过球的孩子，希望我是其中一个； 十年前我们被父母和老师逼到课桌前，认真听讲， 十年后我想再次听讲，却找不到课桌； 十年前我鄙视饭店门前的酒鬼，发誓一辈子也不喝酒， 十年后我就是饭店门前的那个酒鬼； 十年前我渴望有朝一日坐上自己的私家车，不再走路， 十年后我渴望走路，不再开私家车； 十年前我希望显露出的是成熟，十年后我去美容，希望青春永驻； 十年前我顿顿想着吃肉，十年后我顿顿想着吃青菜。 校园 十年前看到班主任的大眼镜便倍感恐惧又心生忌恨， 十年后梦到班主任的音容笑貌倍感亲切又黯然神伤。 十年前一边表扬把外语老师气哭的同学，一边说“这老师不行”， 十年后一边安慰被学生气哭的女同事，一边说“现在的学生真差”。 十年前还有几分“卫朗清瘦”的我，讥笑老九太胖， 十年后只剩一片“宋玉情怀”的我，被老九讥笑‘后来者居上’。 十年前在寒冷的冬夜翻过一丈高的围墙，去打摇杆游戏兴致盎然， 十年后在温暖的家里堆座床上喝着热咖啡，打网络游戏倍感无聊。 十年前在篮球场上我可以一口气得三十分， 十年后我负责防守的家伙可以得三十分！ 十年前向往军校的我，和同学们表达我的从军理想， 十年后转业一年的我，和战友们回顾军营的酸甜苦辣。 十年前有做不完的复习资料需要完成， 十年后有理不清的人际关系需要打理。 十年前只有考试是唯一的负担， 十年后除了考试有太多的负担。 十年前总爱翻看高考简章，想着自己如何上个名牌学校； 十年后总爱关注招聘启事，想着自己怎么找到一份兼职。 十年前对班里的桃色新闻倍加关注， [...]]]></description>
			<content:encoded><![CDATA[<p>十年前，十年后</p>
<p>引导语：不知道十年的时间究竟有多长。</p>
<p>十年前，在我们的脑海中；</p>
<p>十年后，却在深深的心底。</p>
<p>时光煮雨，我们在时间上行走。</p>
<p>我们是拥有情感的人类，我们在亲情、爱情、生活、信念、友情的岁月冲洗下，</p>
<p>十年前，十年后，我们的情感有了什么变化……</p>
<p><span id="more-183"></span><br />
父母<br />
十年前我们是父母的孩子，十年后我们是孩子的父母；<br />
十年前我不知道家的温馨，十年后我才体会家的温暖；<br />
十年前我渴望离家去远方，十年后我渴望从远方回家；<br />
十年前我对父母大吵大嚷，十年后我希望父母再骂我一次。</p>
<p>爱情<br />
十年前你是我的同桌，十年后你成了别人的妻子；<br />
十年前我唱着同桌的你，十年后我想着同桌的你；<br />
十年前我们面对的唯一问题是考试，十年后我们除了考试所有的问题都要面对；<br />
十年前我在你家楼下记住了你嫣然的回眸一笑，十年后我在你家楼下看到你训斥孩子的严厉面孔；<br />
十年前我渴望马上结婚，十年后我渴望再谈一次恋爱；<br />
十年前我们谈及爱情，总是羞涩，十年后我们谈及爱情，却是生涩；<br />
十年前我渴望爱情，但不知道什么是爱情，十年后我知道了什么是爱情，却不再拥有爱情。</p>
<p>生活<br />
十年前我骑着自行车，吹着欢快的口哨，走在回家的路上，<br />
十年后我开着私家车，接着不断的电话，走在应酬的路上；<br />
十年前我渴望住进五星饭店，十年后我住进五星饭店，却想回家；<br />
十年前我渴望坐一次飞机，十年后我最害怕的就是坐飞机；<br />
十年前我踢完球，走过咖啡屋的窗前，希望女生对面的男生是我，<br />
十年后我望见咖啡屋外走过的刚刚踢过球的孩子，希望我是其中一个；<br />
十年前我们被父母和老师逼到课桌前，认真听讲，<br />
十年后我想再次听讲，却找不到课桌；<br />
十年前我鄙视饭店门前的酒鬼，发誓一辈子也不喝酒，<br />
十年后我就是饭店门前的那个酒鬼；<br />
十年前我渴望有朝一日坐上自己的私家车，不再走路，<br />
十年后我渴望走路，不再开私家车；<br />
十年前我希望显露出的是成熟，十年后我去美容，希望青春永驻；<br />
十年前我顿顿想着吃肉，十年后我顿顿想着吃青菜。</p>
<p>校园<br />
十年前看到班主任的大眼镜便倍感恐惧又心生忌恨，<br />
十年后梦到班主任的音容笑貌倍感亲切又黯然神伤。<br />
十年前一边表扬把外语老师气哭的同学，一边说“这老师不行”，<br />
十年后一边安慰被学生气哭的女同事，一边说“现在的学生真差”。<br />
十年前还有几分“卫朗清瘦”的我，讥笑老九太胖，<br />
十年后只剩一片“宋玉情怀”的我，被老九讥笑‘后来者居上’。<br />
十年前在寒冷的冬夜翻过一丈高的围墙，去打摇杆游戏兴致盎然，<br />
十年后在温暖的家里堆座床上喝着热咖啡，打网络游戏倍感无聊。<br />
十年前在篮球场上我可以一口气得三十分，<br />
十年后我负责防守的家伙可以得三十分！<br />
十年前向往军校的我，和同学们表达我的从军理想，<br />
十年后转业一年的我，和战友们回顾军营的酸甜苦辣。<br />
十年前有做不完的复习资料需要完成，<br />
十年后有理不清的人际关系需要打理。<br />
十年前只有考试是唯一的负担，<br />
十年后除了考试有太多的负担。<br />
十年前总爱翻看高考简章，想着自己如何上个名牌学校；<br />
十年后总爱关注招聘启事，想着自己怎么找到一份兼职。<br />
十年前对班里的桃色新闻倍加关注，<br />
十年后漠然接过请帖去参加同学婚礼，管他新娘是谁。<br />
十年前向家里人保证“王八蛋才谈爱情”，<br />
十年后倍受伤害的我对着朋友大喊“爱情是王八蛋”！<br />
十年前见小混子欺负人，我能“路见不平一声吼，不畏头破血又流”，<br />
十年后见路边行乞的老人却舍不得兜里的两块硬币！<br />
十年前我“为赋新词强说愁”，<br />
十年后我“为说愁强赋新词”！</p>
<p>工作<br />
十年前我们为打一个电话四处寻找公用电话，十年后我们有了手机，依然四处奔波；<br />
十年前我月薪的目标是1000，十年后我月薪6000元，依然无法快乐；<br />
十年前我最怕的就是批评，十年后我最难得的却是批评；<br />
十年前200元钱我可以花一个月，十年后2000元钱我才可以吃一顿饭；<br />
十年前我们穿着统一的校服，朴素中透出的是阳光般的灿烂，<br />
十年后我们穿着名牌的服装，华贵中流露出的是淡淡的忧郁；<br />
十年前我们可以蓬头垢面，满脸汗渍的去上课，<br />
十年后我们必须衣冠楚楚，面带微笑的去上班；<br />
十年前我痛恨F·B（腐败），十年后我F·B了。</p>
<p>信念<br />
十年前我以为自己是一棵大树，十年后我才明白自己只不过是一棵小草；<br />
十年前我唯一可以浪费的就是时间，十年后我除了时间什么我都可以浪费；<br />
十年前我们可以说青春无悔，十年后我们只能说青春不在；<br />
十年前我们可以游戏人生，十年后我们却处在人生的游戏中。</p>
<p>编后语：十年前总是计划着十年后，十年后总是怀念着十年前。</p>
<p>我们细数心底的那些，温暖而又美好的事情，我们憧憬未来，拥有现在，我们的情感总是那么丰富，记得要乐观，记得好好爱自己，爱父母，爱他人。</p>
<p>十年会过得很快，一转眼就过去了……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2011/08/decade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2011上海国际嘉年华</title>
		<link>http://www.kevin125.com/wordpress/2011/08/2011-08-20/</link>
		<comments>http://www.kevin125.com/wordpress/2011/08/2011-08-20/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 13:33:15 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[个人日记]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=177</guid>
		<description><![CDATA[时间：2011年7月28日-10月30日 地点：上海世博园区 白莲泾路（世博大道与浦东南路间，原世博园4号入口） 2011上海国际嘉年华游乐项目价格表 弹射椅 70元 惊呼狂叫 60元 狂热火车 20元 超级跳楼机 30元 急速大风车 30元 天外飞仙 20元 蝙蝠战机 20元 倒转地球 20元 乾坤日月转 20元 大苹果 20元 幸福摩天轮 25元 音乐速递 20元 超新星 20元 老鼠也疯狂 25元 诡异迷城 35元 滚木迷阵 25元 青蛙跳 20元 异兽奇程 30元 电动碰碰车 25元 灵异小火车 20元 动感电影20元 疯狂洗衣机 20元 缤纷滑梯 10元 摇摇乐 10元 旋转木马 10元 见习小骑士 15元 [...]]]></description>
			<content:encoded><![CDATA[<p>时间：2011年7月28日-10月30日</p>
<p>地点：上海世博园区 白莲泾路（世博大道与浦东南路间，原世博园4号入口）</p>
<p>2011上海国际嘉年华游乐项目价格表<span id="more-177"></span></p>
<div>弹射椅 70元</div>
<div>惊呼狂叫 60元</div>
<div>狂热火车 20元</div>
<div>超级跳楼机 30元</div>
<div>急速大风车 30元</div>
<div>天外飞仙 20元</div>
<div>蝙蝠战机 20元</div>
<div>倒转地球 20元</div>
<div>乾坤日月转 20元</div>
<div>大苹果 20元</div>
<div>幸福摩天轮 25元</div>
<div>音乐速递 20元</div>
<div>超新星 20元</div>
<div>老鼠也疯狂 25元</div>
<div>诡异迷城 35元</div>
<div>滚木迷阵 25元</div>
<div>青蛙跳 20元</div>
<div>异兽奇程 30元</div>
<div>电动碰碰车 25元</div>
<div>灵异小火车 20元</div>
<div>动感电影20元</div>
<div>疯狂洗衣机 20元</div>
<div>缤纷滑梯 10元</div>
<div>摇摇乐 10元</div>
<div>旋转木马 10元</div>
<div>见习小骑士 15元</div>
<div>莲花椅 10元</div>
<div>阿拉丁神灯 10元</div>
<div>碰碰火车 15元</div>
<div>冒险之河 15元</div>
<div>蛇仔滑梯 10元</div>
<div>迷彩降落伞 10元</div>
<div>牛仔小子 10元</div>
<div>儿童乐园 15元</div>
<div>一飞冲天 10元</div>
<div>小火车 10元</div>
<div>安乐椅 10元</div>
<div>欢乐磨坊 10元</div>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2011/08/2011-08-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>小白兔 &amp; 小狐狸</title>
		<link>http://www.kevin125.com/wordpress/2011/05/520/</link>
		<comments>http://www.kevin125.com/wordpress/2011/05/520/#comments</comments>
		<pubDate>Fri, 20 May 2011 11:59:15 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[人生哲理]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=168</guid>
		<description><![CDATA[1 小狐狸总是忍不住偷偷看小兔子，它尤其喜欢看小兔子那双温柔的红眼睛。但小狐狸的偷看实在太明显了，有时本来只是想悄无声息地看一眼的，可不自觉就着了迷变成了紧紧地注视。“干嘛总是盯着我看？”小兔子有天假装生气地问。“我哪有？”小狐狸不肯承认。但在说完这句话的第二天，小狐狸就得了红眼病。 2 小狐狸偷偷喜欢上了一只小兔子，它每天傍晚都要跑到一个无人的山谷大喊一声‘小兔子，我喜欢你！’然后山谷里就会传来‘我喜欢你’的回音。小狐狸就那么喊了九十九天，等到一百天时它已经决定要放弃了。它最后一次来到山谷大声地几乎是绝望地喊道‘我喜欢你’。‘我也喜欢你’，山谷的某处传来了回应。 3 入冬了，怕冷的小狐狸去小兔子开的森林杂货铺买了一件温暖牌的毛衣，一条温暖牌的围巾，还有一个温暖牌的水杯。小狐狸呆在家里穿着毛衣戴着围巾喝着杯子里的热水，可还是觉得有点冷，‘到底还缺些什么呢？’小狐狸想了想那家森林杂货铺还有铺子里那只可爱的小兔子，‘大概我还缺一个温暖牌的拥抱。’ 4 森林小学这个星期的作文题目是《我最喜欢的XXX》，小老虎写了我最喜欢的森林得了最高分九十九分，小浣熊写了我最喜欢的老师得了八十五分，小狐狸写的我最喜欢的小兔子却因为涉及早恋老师只给了十分。‘对不起，’放学后小狐狸对小兔子说，‘我对你的喜欢才得了十分。’‘那是因为你十分喜欢我啊。’小兔子微笑着说。 5 ‘请你驯服我吧。’小狐狸对小兔子说。‘什么是驯服？’小兔子不解地问。‘这是我们狐狸家族的一个传统….’小狐狸对小兔子解释起驯服的涵义来。‘那么你愿意驯服我吗？’小狐狸问。小兔子轻轻点了点头。但有件事是小狐狸没有告诉小兔子的，那就是当你用心驯服了一样事物时，往往你也已经被它驯服了。 6 最近胡萝卜大丰收。小兔子吃了好多好多胡萝卜结果把自己吃成了一个小胖子。这天傍晚它和小狐狸一起在森林里散步时，突然像它从前常常做的那样一下子跳到了小狐狸的背上想要小狐狸背着它走。可小狐狸却一下被压倒在了地上，‘我是不是该减肥了？’小兔子哭着对小狐狸说，似乎第一次意识到现在的自己究竟有多重，‘不是的，’小狐狸趴在地上说，‘是我该锻炼身体了。’ 7 “小狐狸，如果我和你妈妈同时掉进水里面了，你会先救谁呢？”小兔子问小狐狸。“当然是先救你啊。”小狐狸想都没想就回答。小兔子心里很开心，但表面还是假装生气地问道：“为什么要先救我呢？那你妈妈该怎么办啊？”“我妈妈才不会和我计较这种傻问题呢。”小狐狸在心里想道。 8 被小兔子问了那个‘你会先救谁’的问题之后，小狐狸当时虽然不在意，可后来还是去了游泳学校一边学习游泳一边在心里思索着这个问题。在被水呛到了好几次之后小狐狸慢慢学会了游泳，可那个问题依旧没有答案。于是有天小狐狸就不再去学游泳了，‘还是不会游泳的好，’小狐狸心想，‘这样如果我妈妈和小兔子都掉河里了，我也跳下去陪它们好了。’ 9 小狐狸最喜欢做的事就是吹泡泡糖了。而且最厉害的是它能把泡泡糖吹成不同的形状。‘你能吹出一个胡萝卜来吗？’小兔子有天对小狐狸说。‘当然！’小狐狸脑海中想象着胡萝卜的样子然后就把泡泡吹了出来。果然是一根胡萝卜的形状。‘小狐狸，你简直是个魔法师！’小兔子尖叫道，‘那你能吹出一个和我长得一模一样的泡泡来吗？”小兔子问。“这有什么难的？’小狐狸一边看着小兔子一边吹起了泡泡糖。可它吹出来的泡泡却是一颗心的模样。 10 ‘我能亲亲你吗？’小狐狸问身边正在吃爆米花的小兔子。‘嗯…’小兔子歪着脑袋想了想，‘我们一人吃一口爆米花吧，如果这袋爆米花最后一个是你吃到的我就让你亲我。’小兔子说。结果是小兔子吃到了最后一个。小狐狸沮丧地低下了头，小兔子却迅速亲了一下它的脸庞。‘如果是我吃到，就换我来亲你。’小兔子补充道。 11 ‘爱我、不爱我、爱我、不爱我…’小狐狸用玫瑰的花瓣占卜着自己的爱情。‘爱我！’揪掉最后一片花瓣时小狐狸兴奋地大叫道。它满怀信心地去找小兔子告白了。小狐狸刚刚走后，一只蝴蝶飞了过来。经过一天一夜地反复挣扎蝴蝶终于决定向它最爱的那朵玫瑰示爱了。可它看到的却是玫瑰凋零满地的尸身。 12 天空突然下起了大雨，小兔子被困在了一株大蘑菇底下。过了一会来了一只可爱的小松鼠，它看到在大蘑菇下面避雨的小兔子于是就问她：“我送你回家好吗？”“谢谢你小松鼠，不过我正在等人呢。”小兔子说。“那我把我的这把伞给你好了。”小松鼠说。“不用了，我想我不需要雨伞。”小兔子说。于是小松鼠有些失望地走了。过了好大一会小狐狸从大雨中冲了过来，“大笨蛋，你的伞呢？”小兔子看着浑身湿透的小狐狸心疼地问道，“我不是来给你送伞的，”小狐狸对小兔子说，‘我是来陪你一起淋雨的。]]></description>
			<content:encoded><![CDATA[<p>1 小狐狸总是忍不住偷偷看小兔子，它尤其喜欢看小兔子那双温柔的红眼睛。但小狐狸的偷看实在太明显了，有时本来只是想悄无声息地看一眼的，可不自觉就着了迷变成了紧紧地注视。“干嘛总是盯着我看？”小兔子有天假装生气地问。“我哪有？”小狐狸不肯承认。但在说完这句话的第二天，小狐狸就得了红眼病。 <span id="more-168"></span></p>
<p>2 小狐狸偷偷喜欢上了一只小兔子，它每天傍晚都要跑到一个无人的山谷大喊一声‘小兔子，我喜欢你！’然后山谷里就会传来‘我喜欢你’的回音。小狐狸就那么喊了九十九天，等到一百天时它已经决定要放弃了。它最后一次来到山谷大声地几乎是绝望地喊道‘我喜欢你’。‘我也喜欢你’，山谷的某处传来了回应。</p>
<p>3 入冬了，怕冷的小狐狸去小兔子开的森林杂货铺买了一件温暖牌的毛衣，一条温暖牌的围巾，还有一个温暖牌的水杯。小狐狸呆在家里穿着毛衣戴着围巾喝着杯子里的热水，可还是觉得有点冷，‘到底还缺些什么呢？’小狐狸想了想那家森林杂货铺还有铺子里那只可爱的小兔子，‘大概我还缺一个温暖牌的拥抱。’</p>
<p>4 森林小学这个星期的作文题目是《我最喜欢的XXX》，小老虎写了我最喜欢的森林得了最高分九十九分，小浣熊写了我最喜欢的老师得了八十五分，小狐狸写的我最喜欢的小兔子却因为涉及早恋老师只给了十分。‘对不起，’放学后小狐狸对小兔子说，‘我对你的喜欢才得了十分。’‘那是因为你十分喜欢我啊。’小兔子微笑着说。</p>
<p>5 ‘请你驯服我吧。’小狐狸对小兔子说。‘什么是驯服？’小兔子不解地问。‘这是我们狐狸家族的一个传统….’小狐狸对小兔子解释起驯服的涵义来。‘那么你愿意驯服我吗？’小狐狸问。小兔子轻轻点了点头。但有件事是小狐狸没有告诉小兔子的，那就是当你用心驯服了一样事物时，往往你也已经被它驯服了。</p>
<p>6 最近胡萝卜大丰收。小兔子吃了好多好多胡萝卜结果把自己吃成了一个小胖子。这天傍晚它和小狐狸一起在森林里散步时，突然像它从前常常做的那样一下子跳到了小狐狸的背上想要小狐狸背着它走。可小狐狸却一下被压倒在了地上，‘我是不是该减肥了？’小兔子哭着对小狐狸说，似乎第一次意识到现在的自己究竟有多重，‘不是的，’小狐狸趴在地上说，‘是我该锻炼身体了。’</p>
<p>7 “小狐狸，如果我和你妈妈同时掉进水里面了，你会先救谁呢？”小兔子问小狐狸。“当然是先救你啊。”小狐狸想都没想就回答。小兔子心里很开心，但表面还是假装生气地问道：“为什么要先救我呢？那你妈妈该怎么办啊？”“我妈妈才不会和我计较这种傻问题呢。”小狐狸在心里想道。</p>
<p>8 被小兔子问了那个‘你会先救谁’的问题之后，小狐狸当时虽然不在意，可后来还是去了游泳学校一边学习游泳一边在心里思索着这个问题。在被水呛到了好几次之后小狐狸慢慢学会了游泳，可那个问题依旧没有答案。于是有天小狐狸就不再去学游泳了，‘还是不会游泳的好，’小狐狸心想，‘这样如果我妈妈和小兔子都掉河里了，我也跳下去陪它们好了。’</p>
<p>9 小狐狸最喜欢做的事就是吹泡泡糖了。而且最厉害的是它能把泡泡糖吹成不同的形状。‘你能吹出一个胡萝卜来吗？’小兔子有天对小狐狸说。‘当然！’小狐狸脑海中想象着胡萝卜的样子然后就把泡泡吹了出来。果然是一根胡萝卜的形状。‘小狐狸，你简直是个魔法师！’小兔子尖叫道，‘那你能吹出一个和我长得一模一样的泡泡来吗？”小兔子问。“这有什么难的？’小狐狸一边看着小兔子一边吹起了泡泡糖。可它吹出来的泡泡却是一颗心的模样。</p>
<p>10 ‘我能亲亲你吗？’小狐狸问身边正在吃爆米花的小兔子。‘嗯…’小兔子歪着脑袋想了想，‘我们一人吃一口爆米花吧，如果这袋爆米花最后一个是你吃到的我就让你亲我。’小兔子说。结果是小兔子吃到了最后一个。小狐狸沮丧地低下了头，小兔子却迅速亲了一下它的脸庞。‘如果是我吃到，就换我来亲你。’小兔子补充道。</p>
<p>11 ‘爱我、不爱我、爱我、不爱我…’小狐狸用玫瑰的花瓣占卜着自己的爱情。‘爱我！’揪掉最后一片花瓣时小狐狸兴奋地大叫道。它满怀信心地去找小兔子告白了。小狐狸刚刚走后，一只蝴蝶飞了过来。经过一天一夜地反复挣扎蝴蝶终于决定向它最爱的那朵玫瑰示爱了。可它看到的却是玫瑰凋零满地的尸身。</p>
<p>12 天空突然下起了大雨，小兔子被困在了一株大蘑菇底下。过了一会来了一只可爱的小松鼠，它看到在大蘑菇下面避雨的小兔子于是就问她：“我送你回家好吗？”“谢谢你小松鼠，不过我正在等人呢。”小兔子说。“那我把我的这把伞给你好了。”小松鼠说。“不用了，我想我不需要雨伞。”小兔子说。于是小松鼠有些失望地走了。过了好大一会小狐狸从大雨中冲了过来，“大笨蛋，你的伞呢？”小兔子看着浑身湿透的小狐狸心疼地问道，“我不是来给你送伞的，”小狐狸对小兔子说，‘我是来陪你一起淋雨的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2011/05/520/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2011-05-05 Move to New Server</title>
		<link>http://www.kevin125.com/wordpress/2011/05/2011-05-05-move-to-new-server/</link>
		<comments>http://www.kevin125.com/wordpress/2011/05/2011-05-05-move-to-new-server/#comments</comments>
		<pubDate>Fri, 06 May 2011 17:18:00 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[个人日记]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=164</guid>
		<description><![CDATA[Backup: mysqldump -uUser -pPass DBName &#62; Path/Name.sql Restore: mysql -uUser -pPass use DBName source Path/Name.sql]]></description>
			<content:encoded><![CDATA[<p>Backup: mysqldump -uUser -pPass DBName &gt; Path/Name.sql</p>
<p>Restore: mysql -uUser -pPass</p>
<p>use DBName</p>
<p>source Path/Name.sql</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2011/05/2011-05-05-move-to-new-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>姑娘，需要台灯么？</title>
		<link>http://www.kevin125.com/wordpress/2011/01/lamp/</link>
		<comments>http://www.kevin125.com/wordpress/2011/01/lamp/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 15:08:51 +0000</pubDate>
		<dc:creator>Kevin125</dc:creator>
				<category><![CDATA[生活品味]]></category>

		<guid isPermaLink="false">http://www.kevin125.com/wordpress/?p=151</guid>
		<description><![CDATA[1 　　 当当当，他敲响了房门。 门开了，从里面探出一个人来。 “兄弟，需要台灯么？”他是个推销员。 　　 “你大爷！” 　　 他愣了一下，又说：“兄弟，新产品，你可以看看。” 　　 “你大爷！！” 　　 没有说错话啊，他想。“兄弟，不买台灯你也别骂人啊。” “你大爷！你看看，我是兄弟么？” 　　 他仔细一看，哦，竟然是个姑娘。 　　 就这样，他们就算认识了。 　　 2 　　 周一。“姑娘，需要台灯么？” “不需要。” 　　 周二。“姑娘，需要台灯么？” “不需要！” 　　 周三。“姑娘，需要台……” “不！需！要！” 　　 周四。“姑娘，需要什么？” “除了台灯！！” 　　 周五。“姑娘，需要男朋友么？” “……” 　　 就这样，他们就在一起了。 　　 3 　　 有人觉得他不靠谱，怎么那么快就喜欢上一个人。 有人觉得她草率，怎么那么快就答应了他。 　　 他说，这叫一见钟情。 她说，这叫意志不坚定。 　　 4 　　 那天，他带她去看电影。 　　 他想，到哪个感人的情节时，牵她的手；或者，到哪个感人的情节时，搂着她的肩膀。 　　 可是，电影结束了，他也没有得逞。 　　 他胆小？不是。他睡着了？也不是。 [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">1 　　</p>
<p style="text-align: center;">当当当，他敲响了房门。</p>
<p style="text-align: center;">门开了，从里面探出一个人来。</p>
<p style="text-align: center;">“兄弟，需要台灯么？”他是个推销员。 　　</p>
<p style="text-align: center;">“你大爷！” 　　<span id="more-151"></span></p>
<p style="text-align: center;">他愣了一下，又说：“兄弟，新产品，你可以看看。” 　　</p>
<p style="text-align: center;">“你大爷！！” 　　</p>
<p style="text-align: center;">没有说错话啊，他想。“兄弟，不买台灯你也别骂人啊。”</p>
<p style="text-align: center;">“你大爷！你看看，我是兄弟么？” 　　</p>
<p style="text-align: center;">他仔细一看，哦，竟然是个姑娘。 　　</p>
<p style="text-align: center;">就这样，他们就算认识了。 　　</p>
<p style="text-align: center;">2 　　</p>
<p style="text-align: center;">周一。“姑娘，需要台灯么？”</p>
<p style="text-align: center;">“不需要。” 　　</p>
<p style="text-align: center;">周二。“姑娘，需要台灯么？”</p>
<p style="text-align: center;">“不需要！” 　　</p>
<p style="text-align: center;">周三。“姑娘，需要台……”</p>
<p style="text-align: center;">“不！需！要！” 　　</p>
<p style="text-align: center;">周四。“姑娘，需要什么？”</p>
<p style="text-align: center;">“除了台灯！！” 　　</p>
<p style="text-align: center;">周五。“姑娘，需要男朋友么？”</p>
<p style="text-align: center;">“……” 　　</p>
<p style="text-align: center;">就这样，他们就在一起了。 　　</p>
<p style="text-align: center;">3 　　</p>
<p style="text-align: center;">有人觉得他不靠谱，怎么那么快就喜欢上一个人。</p>
<p style="text-align: center;">有人觉得她草率，怎么那么快就答应了他。 　　</p>
<p style="text-align: center;">他说，这叫一见钟情。</p>
<p style="text-align: center;">她说，这叫意志不坚定。 　　</p>
<p style="text-align: center;">4 　　</p>
<p style="text-align: center;">那天，他带她去看电影。 　　</p>
<p style="text-align: center;">他想，到哪个感人的情节时，牵她的手；或者，到哪个感人的情节时，搂着她的肩膀。 　　</p>
<p style="text-align: center;">可是，电影结束了，他也没有得逞。 　　</p>
<p style="text-align: center;">他胆小？不是。他睡着了？也不是。 　　</p>
<p style="text-align: center;">原来，他们那天看的是——《孔子》。 　　</p>
<p style="text-align: center;">5 　　</p>
<p style="text-align: center;">电影结束了，他送她回家。 　　</p>
<p style="text-align: center;">她一边搓着双手，一边说：“我手冷。”</p>
<p style="text-align: center;">他听了之后，像个男人一样，把自己的手套给了她。 　　</p>
<p style="text-align: center;">这次，变成他手冷了。 　　</p>
<p style="text-align: center;">他说：“我手冷。”</p>
<p style="text-align: center;">她说：“放自己口袋里。” 　　</p>
<p style="text-align: center;">他窃笑，“我裤子口袋满了！” 　　</p>
<p style="text-align: center;">她也笑，“放在羽绒服口袋里。” 　　</p>
<p style="text-align: center;">他一边挡着口袋，一边说：“我羽绒服没有口袋！”</p>
<p style="text-align: center;">“那怎么办？”</p>
<p style="text-align: center;">“这样就不冷了。”说着，便拉过了她的手。</p>
<p style="text-align: center;">仅仅过了3秒，他就放开了。为啥？ 　　</p>
<p style="text-align: center;">她到家了。 　　</p>
<p style="text-align: center;">她上楼，他坐车回家。</p>
<p style="text-align: center;">一路上，高兴得不得了。</p>
<p style="text-align: center;">下了车，还疯了似的，不停地跑。 　　</p>
<p style="text-align: center;">后来，有人问他：“这么高兴啊？” 　　</p>
<p style="text-align: center;">“屁，”他说，“哥的手机丢车上了！” 　　</p>
<p style="text-align: center;">6 　　</p>
<p style="text-align: center;">一天，她给他打电话。“真的喜欢我啊？”</p>
<p style="text-align: center;">“嗯！”他坚定地说。 　　</p>
<p style="text-align: center;">“我不是个好姑娘。”</p>
<p style="text-align: center;">“没事，我不在乎。” 他坚定地说。 　　</p>
<p style="text-align: center;">“我之前搞过好几个对象。”</p>
<p style="text-align: center;">“没事，我不在乎。”他坚定地说。 　　</p>
<p style="text-align: center;">“其实，我不是姑娘，我是个男人。” 　　</p>
<p style="text-align: center;">“没事，我不在乎。”他坚定地说。 　　</p>
<p style="text-align: center;">过了三秒钟，他说：“等会儿，你刚刚说啥？” 　　</p>
<p style="text-align: center;">他知道，她爱恶作剧。 　　</p>
<p style="text-align: center;">她喜欢用别人的手机，给他打电话。“你猜我是谁？”</p>
<p style="text-align: center;">“你是我女朋友。”</p>
<p style="text-align: center;">“再猜。”</p>
<p style="text-align: center;">“你是我媳妇儿。” 　　</p>
<p style="text-align: center;">“乖。” 　　</p>
<p style="text-align: center;">时间长了，就形成习惯了。 　　</p>
<p style="text-align: center;">每当看到陌生的电话打来，他一接电话，就说：“你是我媳妇儿。” 　　</p>
<p style="text-align: center;">这天中午，又是个陌生电话。</p>
<p style="text-align: center;">他接了就说：“你是我媳妇儿！”</p>
<p style="text-align: center;">电话那头，传来个熟悉的声音。 　　</p>
<p style="text-align: center;">“我是你妈，儿子，妈妈的手机丢了。” 　　</p>
<p style="text-align: center;">“……阿姨你好，我是你儿子的同学，他出去了不在。” 　　</p>
<p style="text-align: center;">7 　　</p>
<p style="text-align: center;">每次出去玩，她总是问他去哪。</p>
<p style="text-align: center;">他说：“去看电影吧。”</p>
<p style="text-align: center;">她说：“不去，没好看的。” 　　</p>
<p style="text-align: center;">他说：“去打台球吧。”</p>
<p style="text-align: center;">她说：“不去，你打不过我。”</p>
<p style="text-align: center;">他说：“那你还问我？”</p>
<p style="text-align: center;">她说：“你可以帮我排除错误答案。” 　　</p>
<p style="text-align: center;">他说：“……” 　　</p>
<p style="text-align: center;">她说：“去逛街吧。”</p>
<p style="text-align: center;">他说：“走！” 　　</p>
<p style="text-align: center;">她喜欢他的民主，他喜欢她的专政。 　　</p>
<p style="text-align: center;">他们都乐此不疲。 　　</p>
<p style="text-align: center;">8 　　</p>
<p style="text-align: center;">他是个学生，她也是个学生，他们的大学离得很远，相距一个半小时的车程。 　　</p>
<p style="text-align: center;">电话和短信，成了他们联系的主要方式。 　　</p>
<p style="text-align: center;">一天晚上，他收到了一条短信：“亲爱的，快来。”</p>
<p style="text-align: center;">他疯了似地跑了出去，生怕她有什么危险。 　　</p>
<p style="text-align: center;">刚到她宿舍的楼下，又是一条短信：“快来你宿舍楼下，我找你来了。”</p>
<p style="text-align: center;">短信发送时间是一个半小时之前。</p>
<p style="text-align: center;">他的电话响了，他按下接听，还没来得及说话，就听：“我在你宿舍楼下，快下来！” 　　</p>
<p style="text-align: center;">他无辜地说了句：“……我也在你宿舍楼下。” 　　</p>
<p style="text-align: center;">“你大爷的中国移动！”两个人同时说。 　　</p>
<p style="text-align: center;">结果那天，两个人谁也没回宿舍，他们去了家快捷酒店。</p>
<p style="text-align: center;">他坚持睡沙发，并一再坚持“禁止婚前OOXX行为”原则。 　　</p>
<p style="text-align: center;">她说：“……我怕你感冒。” 　　</p>
<p style="text-align: center;">他说：“你早说，冻死我了。” 　　</p>
<p style="text-align: center;">9 　　</p>
<p style="text-align: center;">他是个有稀奇古怪点子的人。 　　</p>
<p style="text-align: center;">这天，他用磁带录了一段自己写的浪漫的诗，给她送去了。 　　</p>
<p style="text-align: center;">第二天，她说，歌曲挺好听的。</p>
<p style="text-align: center;">他认为，她不喜欢诗而喜欢歌曲。 　　</p>
<p style="text-align: center;">于是，他又用磁带录了一段自己唱的歌曲，给她送去了。 　　</p>
<p style="text-align: center;">第二天，她说，故事挺好的。 　　</p>
<p style="text-align: center;">他问她，你为什么没有听磁带？ 　　</p>
<p style="text-align: center;">她无奈地说：“我找了全宿舍楼也没有找到能放磁带的录音机！” 　　</p>
<p style="text-align: center;">“那你怎么敢说磁带里的内容的？” 　　</p>
<p style="text-align: center;">“我猜的。” 　　</p>
<p style="text-align: center;">“你怎么猜的？”</p>
<p style="text-align: center;">“你自己看！” 　　</p>
<p style="text-align: center;">录着他写的诗的磁带，是迈克尔·杰克逊的专辑；录着他唱的歌的磁带，是孙振爷爷讲鬼故事。 　　</p>
<p style="text-align: center;">10 　　</p>
<p style="text-align: center;">传说，在摩天轮最高的地方，亲吻你爱的人，你们就能天长地久。 　　</p>
<p style="text-align: center;">他问她，你知道摩天轮的传说么？她摇头。</p>
<p style="text-align: center;">他说，我带你去，你就知道了。 　　</p>
<p style="text-align: center;">到了摩天轮的最高点，他才知道，她有恐高症。</p>
<p style="text-align: center;">悲剧，悲剧，悲剧，他一边心里默念，一边扶着她，到附近的麦当劳休息。 　　</p>
<p style="text-align: center;">“对了，你还没告诉我摩天轮的传说。” 　　</p>
<p style="text-align: center;">“传说在摩天轮最高的地方，亲吻你爱的人，就能天长地久。” 　　</p>
<p style="text-align: center;">她沉默了几秒，问：“你听说过麦当劳的传说么？”</p>
<p style="text-align: center;">“没有，那是什……” 　　</p>
<p style="text-align: center;">他还没有说完，她就轻轻吻了上去。 　　</p>
<p style="text-align: center;">她问：“知道什么是麦当劳的传说了么？” 　　</p>
<p style="text-align: center;">他连连点头。 　　</p>
<p style="text-align: center;">11 　　</p>
<p style="text-align: center;">一天夜里，她哭着给他打电话，“我梦到你不要我了！” 　　</p>
<p style="text-align: center;">他想了想，说：“我梦到中国足球拿世界杯冠军了。” 　　</p>
<p style="text-align: center;">“不可能！！你的梦太假了。” 　　</p>
<p style="text-align: center;">“嗯，我觉得你的梦也是。” 　　</p>
<p style="text-align: center;">12 　　</p>
<p style="text-align: center;">他们闹别扭了。 　　</p>
<p style="text-align: center;">也没啥，就是她和别人玩QQ斗地主，一天没理他。</p>
<p style="text-align: center;">一天不是问题，只是，那个别人是她前对象。 　　</p>
<p style="text-align: center;">她是个不伤人的人，分手了，也能做朋友，他知道。 　　</p>
<p style="text-align: center;">但是他就是别扭。 　　</p>
<p style="text-align: center;">“下次别和‘别人’玩了，成不？”</p>
<p style="text-align: center;">“你吃醋了啊？”</p>
<p style="text-align: center;">“嗯。” 　　</p>
<p style="text-align: center;">“哈，活该，谁让你忘了昨天是什么日子！” 　　</p>
<p style="text-align: center;">他愣了一下，忽然想起来。昨天是他爸爸生日。 　　</p>
<p style="text-align: center;">他没有说什么，抱了她一下。 　　</p>
<p style="text-align: center;">拨了个电话，“喂，老爸，生日快乐。” 　　</p>
<p style="text-align: center;">挂电话之前，他说：“爸，我给你找了个孝顺的儿媳妇。” 　　</p>
<p style="text-align: center;">13 　　</p>
<p style="text-align: center;">“给，送你的。”</p>
<p style="text-align: center;">说着，他递给她一个精美的盒子。 　　</p>
<p style="text-align: center;">“今天什么日子哟？”“我们在一起一年半了。” 　　</p>
<p style="text-align: center;">“一年半还庆祝啊？”</p>
<p style="text-align: center;">“半年一小庆，一年一大庆。紧跟国家脚步！” 　　</p>
<p style="text-align: center;">“哈哈———” 　　</p>
<p style="text-align: center;">她打开包装，是一个台灯。 　　</p>
<p style="text-align: center;">“姑娘，需要台灯么？”</p>
<p style="text-align: center;">“不需要。” 　　</p>
<p style="text-align: center;">“姑娘，需要什么？”</p>
<p style="text-align: center;">“除了台灯！” 　　</p>
<p style="text-align: center;">“姑娘，需要男朋友么？”</p>
<p style="text-align: center;">“不需要！” 　　</p>
<p style="text-align: center;">“啊？” 　　</p>
<p style="text-align: center;">“需要个老公！” 　　</p>
<p style="text-align: center;">那个台灯很别致，是他手工做的。 　　</p>
<p style="text-align: center;">在按钮那，是按照她做的公仔；而灯泡，则是按照他做的公仔。 　　</p>
<p style="text-align: center;">她笑着问：“你愿意做灯泡啊？” 　　</p>
<p style="text-align: center;">他笑着答：“是啊，你就是开关。”</p>
<p style="text-align: center;">他顿了顿，“只要你动一动，我就为你发光。” 　　</p>
<p style="text-align: center;">“那我要是不动呢？”她要难为难为他。 　　</p>
<p style="text-align: center;">“嗯？……”他想了想：“我就来修理修理！” 　　</p>
<p style="text-align: center;">说着，使劲捏了捏她的小脸。 　　</p>
<p style="text-align: center;">14 　　</p>
<p style="text-align: center;">毕业了，他去了外地，而她，却留在了本地。 　　</p>
<p style="text-align: center;">“等我回来。”</p>
<p style="text-align: center;">“嗯！” 　　</p>
<p style="text-align: center;">“我每个月都能回来！” 　　</p>
<p style="text-align: center;">“嗯！” 　　</p>
<p style="text-align: center;">异地，折磨爱情；现实，摧残爱情。 　　</p>
<p style="text-align: center;">起初，她每天计算他回来的日子；而他，也在倒数。 　　</p>
<p style="text-align: center;">后来，短信渐渐少了，电话渐渐少了。他觉得。　　</p>
<p style="text-align: center;">每次他回来，她都像例行公事似的，很少开心，很少欢乐，很多沉默。 　　</p>
<p style="text-align: center;">15 　　</p>
<p style="text-align: center;">终于有天，她还是对他说了：“我们，分手吧。” 　　</p>
<p style="text-align: center;">那一刻，他愣住了：“为什么？” 　　</p>
<p style="text-align: center;">“我累了。” 　　</p>
<p style="text-align: center;">“休息之后呢？”</p>
<p style="text-align: center;">“我习惯了一个人的生活。” 　　</p>
<p style="text-align: center;">他直接冲到火车站。</p>
<p style="text-align: center;">票没了，他找票贩子，被骗了700多。 　　</p>
<p style="text-align: center;">最后，他花了身上仅剩的180元，买了张站票，站了23个小时。 　　</p>
<p style="text-align: center;">“你走吧，我不会见你。”这是她发给他的最后一条短信。 　　</p>
<p style="text-align: center;">他就这样，在她楼下等了一夜。 　　</p>
<p style="text-align: center;">那一刻，他才知道，如果一个人不爱了，就真的是不爱了。 　　</p>
<p style="text-align: center;">16 　　</p>
<p style="text-align: center;">两年后，他出国了，一个人去了希腊工作和生活。</p>
<p style="text-align: center;">而她，也找到了自己爱的人，结婚生子。 　　</p>
<p style="text-align: center;">每年，他和她在一起的那一天，她总是能收到他寄来的希腊的美丽风景照片。 　　</p>
<p style="text-align: center;">他记得，某年的某天，她曾经告诉他，她想去希腊。在他心里，他欠她一个希腊。 　　</p>
<p style="text-align: center;">她的丈夫总是问，这些东西是谁寄的？ 　　</p>
<p style="text-align: center;">她说，一个朋友，老朋友。 　　</p>
<p style="text-align: center;">17 　　</p>
<p style="text-align: center;">2011年10月23日，她看了看日历，又到了那天。</p>
<p style="text-align: center;">她习惯性地去邮箱，打开，却发现空空的，什么都没有。 　　</p>
<p style="text-align: center;">大概，是邮递员还没有送到吧？她想。 　　</p>
<p style="text-align: center;">那天晚上，她做了个梦，又回到那天，他们在一起的那一天。 　　</p>
<p style="text-align: center;">那一年，他20岁，她19岁。 　　</p>
<p style="text-align: center;">“兄弟，需要台灯么？”</p>
<p style="text-align: center;">“你大爷！” 　　</p>
<p style="text-align: center;">“姑娘，需要台灯么？”</p>
<p style="text-align: center;">“不需要！” 　　</p>
<p style="text-align: center;">“姑娘，需要男朋友么？” 　　</p>
<p style="text-align: center;">“……” 　　</p>
<p style="text-align: center;">忽然，她醒了，分不清刚刚是梦境，还是现实。</p>
<p style="text-align: center;">她好像听到门外有人说话，仔细一听，却又没有声音。 　　</p>
<p style="text-align: center;">看了看表，凌晨2点24分。 　　</p>
<p style="text-align: center;">大概，是太累了。她又睡了过去。 　　</p>
<p style="text-align: center;">（后记） 　　</p>
<p style="text-align: center;">第二天，她打开收音机，传来一条新闻。 　　</p>
<p style="text-align: center;">“本台报道，北京时间今日凌晨2点22分，在希腊北部发生强烈地震，目前已造成832名居民死亡，2万多居民受伤，这一数字还在增加。” 　　</p>
<p style="text-align: center;">此后，再也没有人，给她寄来照片。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevin125.com/wordpress/2011/01/lamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

