Java Developer
6.45K subscribers
235 photos
8 videos
12 files
279 links
MAKE JAVA GREAT AGAIN

Мемы: @java_memes
加入频道
Если отладка — это процесс устранения ошибок, то программирование — это процесс добавления этих ошибок

Эдсгер Вибе Дейкстра
Две части. В сумме 85 проектов, 156 компонентов.
4 часа годноты. не пугайтесь объема, оно того стоит. ну и благо есть таймкоды и ускорение видео

https://youtu.be/lq4TKfc-Ot4
Forwarded from 23derevo (18+)
JIRA —> ДЖЫРА

Так вышло, что в нашей лавке я крайний за JIRA. На мне все апдейты, автоматизация бизнес-процессов, тысячи строк кода на Groovy и все прочие удовольствия. Сейчас у нас лицензия действующая, но в апреле 2023 года она протухнет, и её наверняка нам не продлят. Поэтому я вчера пошёл у разных ребят выяснять, кто как эту проблему решает, кто на что переезжает.

Выяснилось, что в основном, проблему не решают никак. Хрен с вами, подумал я. Пойду поспрашиваю, что там у больших российских банков. Уж эти-то точно что-то придумали: написали своё, взяли оперсорс или перешли на что-то отечественное типа Яндекс.Трекера.

В общем, за сутки я пообщался с людьми из трёх крупных (Топ 10) российских банков. И знаете что?
1. Те, у кого серверная лицензия истекает в 2023 году (On Premise — JIRA Server или JIRA Data Center), — пока ничего не делают. Всё равно в феврале 2023 года у JIRA Server наступит End Of Life, там и будут думать. Мы, кстати, тоже из таких.
2. У кого лицензия на JIRA Server или JIRA Data Center уже закончилась или вот-вот закончится — просто нашли в интернете кряк, хакнули джиру, и теперь у них бессрочная лицензия.
3. У кого джира была в клауде — перенесли всё на свои сервера. Лицензию на эти сервера поставили крякнутую.

Такое вот нынче импортозамещение.
Какой таск менеджер используете?
Anonymous Poll
71%
Jira
5%
Trello
5%
Yandex Tracker
4%
Redmine
15%
Другой
рубрика "нерегулярные заметки"

Как удалить все локальные ветки #Git

git branch --merged | grep -v \* | xargs git branch -D
Forwarded from microJUG (Zheka Kozlov)
🤯 Данный код является валидным кодом на Java 19+ и компилируется.

Почему так:
1. Первый When – это имя класса.
2. Второй when – имя переменной (имеет тип When).
3. Третий when – это новое ключевое слово в Java 19, которое является контекстно-зависимым.
4. Четвёртый when – это имя переменной, которая была объявлена (см. пункт 2).
5. Пятый when() – метод класса When, возвращающий boolean.
6. Шестой when() – метод текущего класса.

#java19
Анонимная джава-перепись. Кто где?
Anonymous Poll
53%
В РФ
20%
В СНГ
15%
В Европе
12%
В других странах
https://www.youtube.com/watch?v=Au3z_kQd9QY
Предложения Брайана Гётца, которые упростят вход для начинающих джавистов.
1. Безымянные классы (весь файл кроме импортов по сути описание некого класса)
2. Упрощение сигнатуры метода main. модификаторы (public static), входные аргументы (String[] args) - опциональны
3. Автоматический импорт некоторых статических методов из jdk (println, readln).

Все это приведет к тому, что ребята, которые только учатся программировать, не офигеют от написания самой простой программы на Java, а постепенно смогут изучать концепты.
Ответ: "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 крайне не рекомендуется, иначе потом можно его не найти. Но в данном конкретном случае нам повезло, что хешкод не изменился.
Наконец-то! Теперь в новой версии IntelliJ IDEA после открытия проекта не нужно ждать две недели пока он проиндексируется.

Ещё JetBrains улучшили новый интерфейс. Например, есть комппактный режим, который будет полезен для тех, кто прогает за маленькими экранами. Плюс добавили ускоренный импорт Maven-проектов, фоновые проверки коммитов и прочие приятности
Лайфхак «как удвоить свою зарплату»

https://www.youtube.com/shorts/x71Rm0MWVHY
Похоже, что в JDK 21 появится интерполяция строк

https://openjdk.org/jeps/430