Параметризированные тесты в JUnit 5
https://www.arhohuttunen.com/junit-5-parameterized-tests/
#junit #tests
https://www.arhohuttunen.com/junit-5-parameterized-tests/
#junit #tests
Code With Arho
A More Practical Guide to JUnit 5 Parameterized Tests | Code With Arho
Learn how to write JUnit 5 parameterized tests. Learn answers to some of the most asked questions about parameterized tests.
Что выведет код ниже?
Anonymous Quiz
20%
null
44%
test
11%
С вероятностью 1/16 выведет test, с 15/16 - null
16%
Вылетит ConcurrentModificationException
8%
Зависит от конкретной JDK
Ответ: "test"
Способ вычисления хэша map, set, list - это часть контракта соответствующих интерфейсов. Каждая реализация должна использовать формулу, указанную в контракте. Поэтому поведение будет общим для всех JDK.
Посмотрим теперь, какой же контракт и конкретные формулы для подсчета хеша у мапы.
"The hash code of a map is defined to be the sum of the hash codes of each entry in the map's entrySet() view."
Посмотрим, как вычисляется хешкод у Map.Entry:
"The hash code of a map entry e is defined to be:
(e.getKey()==null ? 0 : e.getKey().hashCode()) ^
(e.getValue()==null ? 0 : e.getValue().hashCode())"
Зная это, мы можем посчитать хешкод нашей мапы: он будет равен 0. Почему? Так как у единственной Map.Entry совпадают значения ключа и значения, то их хешкоды будут совпадать, а значит хешкод Map.Entry будет равен 0 (XOR двух одинаковых чисел дает всегда 0).
После добавления второго Map.Entry хешкод останется равным 0, так как там тоже совпадают значения ключа и значения. Повезло, повезло.
В итоге при вызове метод get будет искать Map.Entry в нужном бакете и, встретив нужную ноду, вызовет equals, который вернет true, так как при вставке значение ключа не копируется, и он будет отображать все изменения, которые с ним происходили.
Естественно, изменять ключ после вставки в HashMap крайне не рекомендуется, иначе потом можно его не найти. Но в данном конкретном случае нам повезло, что хешкод не изменился.
Способ вычисления хэша map, set, list - это часть контракта соответствующих интерфейсов. Каждая реализация должна использовать формулу, указанную в контракте. Поэтому поведение будет общим для всех JDK.
Посмотрим теперь, какой же контракт и конкретные формулы для подсчета хеша у мапы.
"The hash code of a map is defined to be the sum of the hash codes of each entry in the map's entrySet() view."
Посмотрим, как вычисляется хешкод у Map.Entry:
"The hash code of a map entry e is defined to be:
(e.getKey()==null ? 0 : e.getKey().hashCode()) ^
(e.getValue()==null ? 0 : e.getValue().hashCode())"
Зная это, мы можем посчитать хешкод нашей мапы: он будет равен 0. Почему? Так как у единственной Map.Entry совпадают значения ключа и значения, то их хешкоды будут совпадать, а значит хешкод Map.Entry будет равен 0 (XOR двух одинаковых чисел дает всегда 0).
После добавления второго Map.Entry хешкод останется равным 0, так как там тоже совпадают значения ключа и значения. Повезло, повезло.
В итоге при вызове метод get будет искать Map.Entry в нужном бакете и, встретив нужную ноду, вызовет equals, который вернет true, так как при вставке значение ключа не копируется, и он будет отображать все изменения, которые с ним происходили.
Естественно, изменять ключ после вставки в HashMap крайне не рекомендуется, иначе потом можно его не найти. Но в данном конкретном случае нам повезло, что хешкод не изменился.
Наконец-то! Теперь в новой версии IntelliJ IDEA после открытия проекта не нужно ждать две недели пока он проиндексируется.
Ещё JetBrains улучшили новый интерфейс. Например, есть комппактный режим, который будет полезен для тех, кто прогает за маленькими экранами. Плюс добавили ускоренный импорт Maven-проектов, фоновые проверки коммитов и прочие приятности
Ещё JetBrains улучшили новый интерфейс. Например, есть комппактный режим, который будет полезен для тех, кто прогает за маленькими экранами. Плюс добавили ускоренный импорт Maven-проектов, фоновые проверки коммитов и прочие приятности
Forwarded from Mobile Developer (Алексей Гладков)
Пс, там на канале у Kotlin вышли все видео с KotlinConf!
https://www.youtube.com/@Kotlin/videos
Срочно бежим смотреть
https://www.youtube.com/@Kotlin/videos
Срочно бежим смотреть
Forwarded from Технологический Болт Генона
Рылся тут у себя, обнаружил футболку раритетную.
Периода приблизительно этого
https://web.archive.org/web/20070630041521/http://developers.sun.com/
Периода приблизительно этого
https://web.archive.org/web/20070630041521/http://developers.sun.com/
Forwarded from Продакты не нужны
30 до 30
Худшее, что медиа сделали для нашего поколения - рейтинг Форбса «30 under 30». И даже пофиг, что значитальная часть участников там - скам. Главное зло, которое он сотворил - убил самооценку куче людей. Теперь если ты после 30 не великий предприниматель, не изобрел лекарство от чего-нибудь и не сделал миллионы, то ты - лох.
Это несправедливо, потому что жизнь - величайший рандом. И то, что кому-то удалось раньше вытащить счастливый билет, не делает этого везунчика лучше остальных. У людей из списка Форбса нет каких-то сверх способностей, секретных знаний или природного таланта. Им просто повезло раньше. Я могу это с уверенностью утверждать как человек, который в 23 уже был директором по продукту в главном онлайн-кинотеатре страны.
Ну ок, кому-то повезло раньше. Давайте теперь еще уничтожим самооценку тем, кому и так нужно больше энтузиазма, чтобы достичь успеха. Подчеркнем, что это не просто люди, добившиеся успеха, а люди добившиеся успеха раньше, чем ты, лошара.
Поэтому дружище, если ты думаешь почему все вокруг такие умные и успешные, а ты - нет, то помни, что это рандом. Продолжай делать то, что делаешь, не оглядываясь на шум.
Вот попади я в этот рейтинг, было бы другое дело.
Худшее, что медиа сделали для нашего поколения - рейтинг Форбса «30 under 30». И даже пофиг, что значитальная часть участников там - скам. Главное зло, которое он сотворил - убил самооценку куче людей. Теперь если ты после 30 не великий предприниматель, не изобрел лекарство от чего-нибудь и не сделал миллионы, то ты - лох.
Это несправедливо, потому что жизнь - величайший рандом. И то, что кому-то удалось раньше вытащить счастливый билет, не делает этого везунчика лучше остальных. У людей из списка Форбса нет каких-то сверх способностей, секретных знаний или природного таланта. Им просто повезло раньше. Я могу это с уверенностью утверждать как человек, который в 23 уже был директором по продукту в главном онлайн-кинотеатре страны.
Ну ок, кому-то повезло раньше. Давайте теперь еще уничтожим самооценку тем, кому и так нужно больше энтузиазма, чтобы достичь успеха. Подчеркнем, что это не просто люди, добившиеся успеха, а люди добившиеся успеха раньше, чем ты, лошара.
Поэтому дружище, если ты думаешь почему все вокруг такие умные и успешные, а ты - нет, то помни, что это рандом. Продолжай делать то, что делаешь, не оглядываясь на шум.
Вот попади я в этот рейтинг, было бы другое дело.
у меня в юности был компьютерный стол, в котором клавиатура задвигалась под столешницу. и надоедало постоянно выдвигать её. делаешь домашку, кто-то написал, нужно выдвинуть клаву чтобы ответить, отвечаешь, задвигаешь, решаешь дальше свои уравнения, потом опять звук аськи, выдвигаешь… короч ещё в школьное время пришлось скачать stamin’у на комп, чтобы научиться печатать вслепую
Коллега рассказал ещё, что есть Клавиатура Двора — англоязычная раскладка, которая более эффективная за счёт того, самые популярные буквы расположены удобно и так, что руки чередуются как можно чаще
Wikipedia
Клавиатура Дворака
раскладка для набора английских символов, альтернатива QWERTY
В общем, кому хочется научиться печатать вслепую, рекомендую тренажер Stamina и «Соло на клавиатуре». Мне кажется, что это крутой навык. Успехов!
gitignore для java и maven проектов
простенький gitignore для мелких проектов, чтобы был всегда под рукой
#git
простенький gitignore для мелких проектов, чтобы был всегда под рукой
# Intellij
.idea/
*.iml
*.iws
# Maven
log/
target/
#git