I am 20 years old, 5'9'' at 150lbs, and have never been able to gain weight. I want to put on some mass while keeping the six pack I've just always had. I just started lifting heavy with low reps 3 times a week and mainly stick to compound lifts. I also do cardio 2-3 times a week on the days I don't lift. I've been reading lots of different information about how important diet is when trying to gain muscle, and want to make sure I'm getting enough of what I need to grow. Here's an example of what eat on the days I lift. Any tips, things I should add or get rid of, substitutions, or anything would be really helpful, thanks!

Wake up at 3 AM (pre-workout): 1/2 cup of oats, 1 banana, 12oz of milk.
*Back to sleep until 4:30 AM)

5 AM to 6 AM workout
Post-workout/breakfast shake: 1 scoop of whey protein, 12oz of milk, 1/2 cup of oats, 1/4 cup of raisins, 1 single serving cup of peanut butter.

9 AM: 1/2 cup of brown rice, 4oz can of tuna, 1/4 cup of raw almonds.

12 PM: Small salad w/ fat free dressing, 3oz chicken breast, 1 banana, 2 pieces of wheat bread.

3 PM: 1/2 cup of brown rice, 4oz can of tuna, 1/4 cup of raw almonds

6 PM: Small salad w/ fat free dressing, 3oz chicken breast, 12oz of milk.

9 PM (before bed): 1 scoop of whey protein, 12oz of milk.

Equals out to around 3400-3500 calories with 47% carbs (412g), 27% protein (239g), and 26% fats (102g). Thanks for the help!!!!