I have a 3 year old and a 20 month old, so we've had our share of tantrums. I am sympathetic with you because it is NO fun, especially when it occurs in public!
My best advice is to stay very calm, take some deep breaths if necessary, speak in a low steady voice to tell them what you need to do (as in, Mama just needs to change your diaper now, so you need to lie down, or whatever) while firmly "helping" him to cooperate. If you can prepare him for it a little bit, telling him what you are going to do ahead of time, that might help too, as some kids just don't like to be taken by surprise. Then firmly follow through on what you are doing - don't back down or give in to the behavior! If it is something where he can have some control over the situation (like if he wants to pick out a toy to hold before a diaper change or pick out the cup he wants to have his milk in) then that might help as well. I know sometimes my daughter flips out because she wants to "choose" to do whatever the action is, so I try to balance between allowing some sense of that, while also not giving up my authority as the parent. During the resisted event (nailclipping has also been an issue, sometimes tooth brushing or diaper changes), I continue to speak calmly, saying good girl, when she is being calm and cooperating. My husband has very good results, when our daughter is crying or being overdramatic about something, just saying to her "that's enough crying now, you need to stop" in a firm voice. She actually listens and stops.
As a stage, it definitely won't last forever, as others have said, but I've seen parents who are dealing with it a LOT longer than others because they have given in to their child's fits and therefore reinforced the behavior (hey, if it works, keep doing it!). My 3 year old VERY rarely throws fits now. With him, when behavior stuff like this starts to become an issue again (and it pops up from time to time) I have to take the time to talk about the behavior before the anticipated event that will cause it (grocery store trip, or whatever). We talk about why the behavior (begging for stuff, throwing fits, running away, whatever it is) is not ok, what the consequence will be if he does it, and how much I hope he will listen and obey, because I don't want to have to discipline him when we get home. Then if he starts to act out, I get down at his level, look him in the eye and calmly remind him of our conversation and the consequence of disobeying. Then I give him hugs and praise afterwards, when he has been obedient, telling him how proud I am. This has worked very well for us.
My kids are not perfect, but I think their phases of pushing limits tend to be shortlived because I try to always stay calm, I talk to them firmly and without getting angry, and I follow through consistently with discipline or just enforcing whatever activity needs to happen, making sure they know I'm the one in charge.
Good luck, with consistency you can hopefully create a calmer home for all of you!