完善了这个例子，没有细测，可能存在一些bug