Maks Burkov: А вы уверены, что коллизия происходит в map'е, а не при выводе в строке
Iterator> iterator = instances.entrySet().iterator();
где вы получаете set значений (который-то как раз могут совпадать)?
Maks Burkov: Давайте уберем все лишнее из вашего кода:
class A { // ваш RegistrationService
private B b = new B();
}
class B extens A { // ваш RegistrationDataDistributor
}
// где-то в main:
B b = new B(); <-- stack overflow
Что при этом происходит?
Создается объект b. У него есть поле private B b = new B() (которое отнаследовано от класса A). Оно инициализируется.
То есть создается (инициализируется) поле b объекта b;
Что при этом проиходит? Правильно, создается еще один объект класса B. У которого снова есть private B b
То есть создается (инициализируется) поле b у поля b у объекта b = new B();
и так далее
zlojnaxa: Как раз пусть лучше "настоящий" пользователь узнает, что его сломать пытаются. И потом, как вы собираетесь разделять ситуации "это настоящий пользователь ввел пароль" и "это злоумышленник подобрал пароль сменив в 101-й раз компьютер"?
qqignatqq: Написать в полицию можете, но вам придется доказать, что это он прислал лжесумму и взломал вашу базу, а не ошибка у вас в скрипте дала такой результат
John Freeman: mac адрес вам ничего не даст. У меня например ноутбук + домашний компьютер + планшет + рабочий компьютер. Получается я - 4 разных пользователя? А может и наоборот быть - с одного компьютера(и браузера) в интернете сидит вся семья. Они - 1 пользователь?
weranda: Вы путаете количество замен и проходы. Если дать ему строку из трех пробелов и сказать менять 2 пробела на 1, то на первом проходе первый и второй пробелы будут заменены на один, после чего заменять больше нечего.
hudrogen: насколько я знаю, такое запланировано, но пока не реализовано (https://youtrack.jetbrains.com/issue/IDEABKL-475)
Максимум можно "повесить" автоформатирование на какую-то другую комбинацию клавиш, которая используется при написании кода