• Как внутри устроена HashMap, она использует singly linked list или BTS?

    @temp_temp
    Бакеты хранят внутри себя ноды в форме односвязного списка, но как только количество нод достигает 8 (константа TREEIFY_THRESHOLD = 8) и количество бакетов достигает 64 (константа MIN_TREEIFY_CAPACITY = 64), произойдет переход к древовидной структуре в этом бакете. Но возможен и обратный переход из древовидной структуры в односвязный список. Это происходит, когда количество нод в этом бакете сокращается до 6 (константа UNTREEIFY_THRESHOLD = 6), например при увеличении ёмкости хэш-таблицы (количеста бакетов). В этот момент происходит перехеширование всех элементов. Но есть ещё один интересный момент. Допустим вы переопределили хэшкод, чтобы тот возвращал одно и то же значение. И как не трудно догадаться все элементы будут попадать в один бакет. Изначально 16 бакетов, если добавить 9 нод и все они попадут в один бакет, то мапа расширится до 32, если не произойдет распределение, то при добавлении 10 ноды - расширится до 64. И вот если снова не произошло распределения и 11 ноду добавить в тот же бакет, то этот бакет перестроится в дерево.
    Ответ написан
    Комментировать
  • Почему Role и Privileges выдаются в UserDetailsService в одной коллекции, как равноценные понятия в данном примере?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Собственно говоря, в той же статье откуда вы взяли код (baeldung) ниже написана причина смешивания ролей и привилегий.
    The interesting thing to follow here is how the Privileges (and Roles) are mapped to GrantedAuthority entities.This mapping makes the entire security configuration highly flexible and powerful – you can mix and match roles and privileges as granular as necessary, and at the end, they'll be correctly mapped to authorities and returned back to the framework.


    Вот, еще полезная информация (прочитайте первый ответ) - https://stackoverflow.com/questions/6357579/spring...

    В Spring есть понятие Authority. Это могут быть как роли, так и привилегии (privilege, permission). Так как конечная цель заключается в том, чтобы проверить права пользователя и так как привилегия и роль по факту являются теми самыми "правами", но лишь на разных уровнях абстракции (роль содержит сет привилегий), то в примере кода, который вы указали все смешано в одну кучу.
    Отличие проявляется на другом уровне, когда есть метод для проверки роли hasRole(), к слову, к значению этого метода автоматически добавляется префикс ROLE_, а также метод hasAuthority(), когда проверяются все права (роли и привилегии) и в этом случае для проверки роли нужно указывать префикс ROLE_ самому или уже указать название привилегии (например, READ_PRIVILEGE).
    Ответ написан
    Комментировать
  • Можно ли использовать нижнее подчеркивание в методах для тестов?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Да, можно.
    Подробности тут:
    https://dzone.com/articles/7-popular-unit-test-naming

    А использование нижнего подчеркивания не в тестах не рекомендуется.
    Ответ написан
    3 комментария
  • Где должны находиться методы конвертации DTO -> Entity и наоборот?

    BorLaze
    @BorLaze
    Java developer
    Мне создать отдельный пакет mapper, а в нем классы? Допустим, класс EmployeeMapper и в нем два метода toEmployee, toEmployeeDTO? Правильно ли я мыслю?

    Да.

    Можно долго расписывать, почему именно так, но особо смысла не вижу.
    Ответ написан
    4 комментария