One of the main issues that memristors face, like other hardware components, is non-idealities (that can arise from long-term usage, low-quality hardware, etc.). In this chapter, we discuss some ways of mitigating the effects of such non-idealities. We consider both hardware-based solutions and universal solutions that do not depend on hardware or specific types of non-idealities, specifically in the context of memristive neural networks. We compare such solutions both theoretically and empirically using simulations. We also explore the different non-idealities in depth, such as device faults, endurance, retention, and finite conductance states, considering what causes them and how they can be avoided, and present ways of simulating these non-idealities in software.