自写自用，部分代码请勿宣传(*゜ロ゜)ノ