source code from my articles in csdn bolg