@web_dev: Надеюсь что да :) Все поля объекта можно получить с помощью getDeclaredFields. Сделать их доступными. Потом итерироваться по ним и в зависимости либо уйти в рекурсию (если мы напаролись на DTO), либо скормить в equals (Если у нас string, integer, double, etc).
@web_dev: Ручками? :) Поищите лучше либу для работы с reflection, например которая умеет бегать по дереве объектов и при расхождении выполнять какое-либо действие над элементом, уверен что такая существует :)
Т.е. ответ: использовать reflection, чтобы сравнивать каждое поле каждого объекта и поля вложенных объектов, при нахождении не equals полей (не объектов) копировать значения из одно объекта в другой. В таком случае получится общее решение для данной задачи.
Heroku - это облако в его первоначальном понимании, т.е. ресурсы можно легким движением руки увеличивать или уменьшать: на начальном этапе можно не платить вовсе, когда начнутся тысячи посещений можно будет уже платить.
В Heroku не нужно думать о настройке томката, нужно просто загружать своё приложение. Для джава это обычно делается пушем исходников в репозиторий heroku либо, отправкой war на их сервера. Для исходников можно использовать gradle/maven. Куча баз данных и других аддонов (https://addons.heroku.com/) доступны через клик или короткую команду в консоли.
@NightFantom ну и причем тут ваш C++? Я сам джавист, но например знаю, что затратные части поиска яндекса написаны на C++, они поддались накрутке? Не надо путать hype и моду :) Вот Spring - это модно, а реактивное программирование пока hype.
@Firear29 СКВ не защищает информацию, децентрализованность заключается в том, что каждый клиент хранит всю историю изменений, никто не запрещает также сделать в случае централизованной СКВ - выкачать всю историю на клиента.
Git использует дельты для хранения изменений, Svn хранит файлы целиком. Просто на клиенте в случае git хранится репозиторий целиком, а в случае svn только его часть, в том числе можно хранить только одну папку из проекта.
Сейчас смысл изучать svn нету, т.к. в ide научиться с ним работать дело пяти минут, а вот научиться работы в git - это достижение :)
Например клиент с помощью STUN сервера может определить свой внешний IP и сообщить его вашему веб-сервису (на самом деле при посылке запроса веб-сервису, веб-сервис будет знать внешний IP клиента). В чем проблема то? :)