Resistive Switching and Non-volatile Memory