MAKE JAVA GREAT AGAIN Мемы: @java_memes
Что посмотреть на выходных — 20
Наткнулся в Ютубе на классное шоу. Такой мини-формат Своей игры только между джавистами бигтеха. Команды: X5, Сбер, Тинькофф, Самокат, Мир Пей, RuStore, Тинькофф. Пару шуток-перебивок из шоу:
Сколько волка не корми — всё равно опыт крутит
На концерте классической музыки весь зал на сцене видит дирижёра. И только devops-инженер видит там оркестратора
JPoint 2025
Вчера сходил на JPoint — Java-конференцию для опытных разработчиков. Билет мне оплатила компания (правда, с условием отработать ещё полгода или вернуть деньги при увольнении). Последний раз был на крупной конференции в 2018 в Питере на Joker. Если сравнивать, то участников и спонсоров сейчас стало поменьше и мерч поскромнее, зато стенды теперь более яркие и современные. Доклады по-прежнему на высоком уровне, особенно ажиотаж вызвал доклад про микробенчмарки. Организация тоже порадовала — кайфовый сайт с лк, чёткий тайминг, удобные дискуссионные зоны, обед в два потока — без очередей и суеты. В целом кайф!
Kafka
Какие есть гарантии доставки сообщений
Ответ:Читать полностью…
1. At most once (не более одного раза):
Сообщение может быть потеряно, но никогда не будет доставлено повторно.
2. At least once (как минимум один раз):
Сообщение доставляется минимум один раз, но возможно повторное получение.
3. Exactly once (ровно один раз):
Сообщение доставляется и обрабатывается строго один раз. Это наиболее надёжная гарантия, достигается с помощью механизма идемпотентности продюсера и транзакций.
Примечание:
Гарантия зависит от настроек продюсера, консюмера и брокера Kafka.
Spring
При каких условиях транзакция Spring будет откатана (rollback)?
Ответ:Читать полностью…
1. Если выброшеноunchecked
исключение (наследник RuntimeException или Error).
2. Если выброшеноchecked
исключение, указанное в аннотации@Transactional
с параметром rollbackFor.@Transactional(rollbackFor = { IOException.class })
Примечание: Checked исключения (например, IOException) по умолчанию не вызывают роллбэк, поэтому их нужно явно указывать через параметр rollbackFor.
Spring
Для чего используется аннотация @Qualifier
Ответ:
Когда есть несколько бинов одного типа, то используя @Qualifier мы говорим Spring'у, какой именно бин внедрить. При этом также существует аннотация @Primary. Если мы укажем бин @Primary, то Spring его выберет по умолчанию. Когда нужен конкретный другой бин, то @Qualifier переопределит выбор @Primary.
Ответ
Для таких сообщений нужно использовать одинаковый ключ (идентификатор процесса). Продюсер, используя этот ключ, отправит все связанные сообщения в одну и ту же партицию. Так как сообщения внутри партиции обрабатываются строго по порядку, один консьюмер получит их последовательно.
Ответ:Читать полностью…
COUNT(*) считает общее количество строк, независимо от того, содержат ли они NULL в каком-либо поле.
COUNT(address) же считает количество ненулевых значений в столбце address. Если столбец address содержит NULL в некоторых строках, такие строки в подсчёт не включаются.
Я за март прошел больше 10 собесов. Накопил портянку вопросов, которые часто спрашивали. Есть желание выкладывать сюда эти вопросы с возможными ответами и обсуждать в комментариях. Как идейка?
Читать полностью…Отзыв оффера
Недавно ходил по собеседованиям (рынок РФ). Понравилась вакансия - крупная компания пилит свой новый продукт, прошёл тех собес - не супер гладко, но приятные впечатления остались, отправил свою анкету для сб, всё норм, на следующий день прислали оффер, по деньгам как просил. Договорились, что беру неделю на раздумья. И в этот же день вечером эйчар пишет: «могу набрать? срочно». Говорит пришли новые руководители и решили поменять стек, поэтому найм заморожен. Сорян, так бывает. Можем предложить другую команду, но собес надо пройти заново.
Новый собес я конечно же не проходил. Себя успокоил тем, что видать в компании не гладко с процессами и в целом мне повезло. Но всё равно неприятно.
Были у кого-то похожие приколы?
Я чего раньше-то так редко писал. Это потому что у меня выгорание было и ощущение, что ничего нового и полезного не расскажу вам. Многие и так умнее меня, так ещё и успевали развиваться, пока я на одном месте сидел. Ещё и голос в голове говорил - зачем писать то, что все и так знают или могут загуглить?
Но сейчас пришёл к мысли, что читать будут те, кому интересно. А кому неинтересно - отпишутся.
Я когда-то задрал планку, сейчас наоборот хочу её опустить. В канале не будет инсайдов, обучений, марафонов, историй успеха. Скорее это будут заметки для себя же самого.
p.s.: добавил лайки. дизлайков и комментариев не будет, я слишком чувствителен к критике.
Как гениально и просто
https://vas3k.blog/notes/pets_vs_cattle/
Коллега рассказал ещё, что есть Клавиатура Двора — англоязычная раскладка, которая более эффективная за счёт того, самые популярные буквы расположены удобно и так, что руки чередуются как можно чаще
Читать полностью…30 до 30
Худшее, что медиа сделали для нашего поколения - рейтинг Форбса «30 under 30». И даже пофиг, что значитальная часть участников там - скам. Главное зло, которое он сотворил - убил самооценку куче людей. Теперь если ты после 30 не великий предприниматель, не изобрел лекарство от чего-нибудь и не сделал миллионы, то ты - лох.
Это несправедливо, потому что жизнь - величайший рандом. И то, что кому-то удалось раньше вытащить счастливый билет, не делает этого везунчика лучше остальных. У людей из списка Форбса нет каких-то сверх способностей, секретных знаний или природного таланта. Им просто повезло раньше. Я могу это с уверенностью утверждать как человек, который в 23 уже был директором по продукту в главном онлайн-кинотеатре страны.
Ну ок, кому-то повезло раньше. Давайте теперь еще уничтожим самооценку тем, кому и так нужно больше энтузиазма, чтобы достичь успеха. Подчеркнем, что это не просто люди, добившиеся успеха, а люди добившиеся успеха раньше, чем ты, лошара.
Поэтому дружище, если ты думаешь почему все вокруг такие умные и успешные, а ты - нет, то помни, что это рандом. Продолжай делать то, что делаешь, не оглядываясь на шум.
Вот попади я в этот рейтинг, было бы другое дело.
Рылся тут у себя, обнаружил футболку раритетную.
Периода приблизительно этого
https://web.archive.org/web/20070630041521/http://developers.sun.com/
Основы Kafka. Отличное видео для подготовки к собесам
#kafka #собес
https://youtu.be/-AZOi3kP9Js
Впечатления от JPoint 2025 моего коллеги
Впечатления позитивные: большинство докладов понравились, интересные темы, классные спикеры. Особенно зашёл доклад «Путеводитель по профилированию приложенийЧитать полностью…
на JVM» — захотелось применить.
Понравился и формат ответов на вопросы после докладов — очень живая атмосфера и возможность пообщаться лично со спикерами.
Отдельно удивило, что были доклады на английском.
Из минусов — попадались молодые спикеры, которые пока слабо владеют темой и не готовы отвечать на вопросы. Немного контрастирует с уровнем профессиональных докладчиков.
В целом такие конференции полезны, помогают увидеть, что ты еще многое не знаешь и мотивируют дальше развиваться)
Java Core
Чем отличается abstract class от interface?
Ответ:Читать полностью…
1. Наследование
• abstract class может extends только один класс (single inheritance), но может реализовывать несколько интерфейсов.
• interface может extends несколько других интерфейсов (множественное «наследование» интерфейсов).
2. Методы
• abstract class может содержать как абстрактные, так и реализованные методы. Поддерживает любые модификаторы доступа.
• interface
◦ до Java 8 содержал только абстрактные методы (по умолчанию public abstract)
◦ с Java 8 появились default и static методы с реализацией
◦ с Java 9 можно объявлять private методы внутри интерфейса, чтобы переиспользовать логику в default-методах. При этом приватные методы могут существовать только внутри интерфейса, и не видны реализующим классам.
3. Конструкторы
• abstract class может иметь конструкторы для инициализации общих полей у наследников, но нельзя создать объект абстрактного класса напрямую (только через конкретные подклассы).
• interface не может иметь конструкторов — объект интерфейса напрямую создать нельзя.
4. Поля
• abstract class может содержать поля любых типов с любыми модификаторами.
• interface может содержать только public static final поля (константы).
Когда использовать:
• abstract class - когда требуется общее состояние (поля) и общие методы (реализация), которые наследники могут переопределять или дополнять. Абстрактный класс может хранить поля и совместно использовать часть логики во всех наследниках.
• interface - когда нужно определить «контракт» (набор методов) для различных классов, не связанных между собой по иерархии. Несмотря на появление default-методов с реализацией, в интерфейсе по-прежнему нельзя хранить состояние экземпляра. default-методы позволяют расширять интерфейс без нарушения совместимости, но не заменяют полноценного «скелета» с полями и логикой, который даёт абстрактный класс.
Java Stream API
Разница между методами map и flatMap
• Метод map
принимает функцию, которая вызывается для каждого элемента стрима и преобразует его в другое значение. В результате получается стрим с преобразованными элементами, структура стрима при этом не меняется.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<String> strings = numbers.stream()
.map(number -> String.valueOf(number))
.collect(Collectors.toList());
flatMap
принимает функцию, которая преобразует каждый элемент стрима в новый стрим. Затем flatMap
объединяет (склеивает) полученные стримы в один общий.Читать полностью…
List<Item> items = orders.stream()
.flatMap(order -> order.getItems().stream())
.collect(Collectors.toList());
Сегодня опробовал прогу Lens, которая позволяет управлять кластером Kubernetes через графический интерфейс. Красота! Понравилось.
Это как с git - можно всё делать в терминале, а можно и в IDE пушить, черепикать и тд.
https://habr.com/ru/companies/first/articles/677420/
Спасибо за вчерашние комментарии, обратную связь, идеи, искренний интерес. Рад видеть среди читателей адекватных людей, заинтересованных, зачастую вежливых и дружелюбных!
Очень рад отпискам от канала. В общем-то, последние посты были на это и нацелены.
Для меня важно делиться мыслями именно с приятными людьми, лояльными читателями, которые не ждут ежедневного вау-контента и «пользы»
сообщение для англоговорящих подписчиков (индусов) 👇
Читать полностью…gitignore для java и maven проектов
простенький gitignore для мелких проектов, чтобы был всегда под рукой
# Intellij
.idea/
*.iml
*.iws
# Maven
log/
target/
В общем, кому хочется научиться печатать вслепую, рекомендую тренажер Stamina и «Соло на клавиатуре». Мне кажется, что это крутой навык. Успехов!
Читать полностью…у меня в юности был компьютерный стол, в котором клавиатура задвигалась под столешницу. и надоедало постоянно выдвигать её. делаешь домашку, кто-то написал, нужно выдвинуть клаву чтобы ответить, отвечаешь, задвигаешь, решаешь дальше свои уравнения, потом опять звук аськи, выдвигаешь… короч ещё в школьное время пришлось скачать stamin’у на комп, чтобы научиться печатать вслепую
Читать полностью…Спрингу 20 лет 🎉
https://springone.io/history-of-spring
конспект лекции по основам #Kafka
(спасибо @AnastasiiaZentsova)
Пс, там на канале у Kotlin вышли все видео с KotlinConf!
Kotlin/videos" rel="nofollow">https://www.youtube.com/@Kotlin/videos
Срочно бежим смотреть