Please open Telegram to view this post
VIEW IN TELEGRAM
😁32❤5👍5🥱3🔥2
🧠 Как выжать максимум из резюме на HeadHunter
Хорошее резюме — это только начало. Даже если вы профи, в поиске работы многое решает видимость анкеты в выдаче. А вот тут начинается борьба за внимание рекрутера.
🚧 Проблема: сотни схожих резюме. Ваше может просто затеряться.
🎯 Что помогает реально продвинуть резюме вверх:
— Автоподнятие и ручные апдейты
— Правильное имя файла резюме
— Ключевые слова, которых ищут HR
— Механика «откликов + запросы»
— И даже… использование разных браузеров (да-да)
🔗 Все 9 приёмов с примерами — в статье.
🐸 Библиотека джависта #буст
Хорошее резюме — это только начало. Даже если вы профи, в поиске работы многое решает видимость анкеты в выдаче. А вот тут начинается борьба за внимание рекрутера.
🚧 Проблема: сотни схожих резюме. Ваше может просто затеряться.
🎯 Что помогает реально продвинуть резюме вверх:
— Автоподнятие и ручные апдейты
— Правильное имя файла резюме
— Ключевые слова, которых ищут HR
— Механика «откликов + запросы»
— И даже… использование разных браузеров (да-да)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3👏1🤔1
🔥 Знакомьтесь, преподаватель нашего нового курса по ML — Мария Жарова.
В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️
А если вы уже поняли, что тянуть нечего, начните свой путь в ML правильно: с реальной практикой, поддержкой ментора и видимым результатом.
👉 Записывайтесь на курс
В карточках рассказали, чем Мария занимается и какие советы даёт тем, кто хочет расти в IT и Data Science ☝️
А если вы уже поняли, что тянуть нечего, начните свой путь в ML правильно: с реальной практикой, поддержкой ментора и видимым результатом.
👉 Записывайтесь на курс
🔹Benchmarking and profiling Java with JMH
Статья объясняет, как JMH помогает измерять производительность кода, выявлять узкие места и оптимизировать приложения, предоставляя практические примеры и советы по его применению.
🔹Kotlin 2.2.0 Released
Вышел релиз Kotlin 2.2.0, содержащий исправления багов и значимые изменения. Подробнее в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2❤1
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом запуска приложения?
Anonymous Quiz
10%
TransactionRequiredException
10%
BeanCreationException
45%
Пользователь будет создан, но метод выполнится без транзакции
3%
Ошибка компиляции
32%
Пользователь будет создан, транзакция успешно откроется и закроется
👍4🔥2❤1👏1
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
Java-разработчик (Логистическая платформа) — 300 000 — 490 000 ₽ — гибрид (Санкт-Петербург, Москва)
Junior Java разработчик — до 100 000 ₽ — гибрид (Москва)
Java-разработчик — до 600 000₽ — удалёнка
Middle Java Developer — до 270 000 ₽ — удалёнка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
Принципе подстановки Лискова нередко трактуют слишком формально или упрощенно. Простой ответ: LSP требует, чтобы объекты подклассов могли заменять объекты базового класса без изменения поведения программы.
Однако, давайте разберем это более подробно.
🔹 Что на самом деле означает LSP?
В классическом виде (по Барбаре Лисков):
Объекты программы должны быть заменяемы экземплярами их подтипов без изменения правильности работы программы.
Это значит, что любой класс-наследник должен вести себя так же, как и его родитель, не нарушая логики работы программы. Программа должна продолжать работать корректно, если один объект заменяется другим, даже если их реализации отличаются.
🔹 Часто встречаемые ошибки трактования LSP
1. Подмена функционала
Проблемы могут возникнуть, если подкласс значительно меняет поведение метода родительского класса. Например, если метод в подклассе требует дополнительных условий или приводит к ошибкам, это нарушает принцип.
class Bird {
void fly() { ... }
}
class Chicken extends Bird {
@Override
void fly() {
throw new UnsupportedOperationException("Chicken can't fly");
}
}
Этот пример нарушает LSP, потому что подкласс не может выполнять все действия родителя.
2. Нарушение инвариантов
Если подкласс добавляет новые ограничения или меняет условия, которые предполагались в родительском классе, это может привести к неожиданным результатам. Например, если родительский класс предполагает, что его методы могут работать в определённых диапазонах значений, а в подклассе эти значения не допустимы, это также нарушает принцип.
class Rectangle {
int width, height;
void setWidth(int width) { this.width = width; }
void setHeight(int height) { this.height = height; }
}
class Square extends Rectangle {
@Override
void setWidth(int width) {
this.width = this.height = width;
}
@Override
void setHeight(int height) {
this.height = this.width = height;
}
}
В этом примере подкласс Square изменяет логику работы с размерами, нарушая ожидаемое поведение родительского класса.
🔹 Что на практике важно понимать о LSP
— Соблюдение контракта родительского класса
Подклассы должны соблюдать контракт родительского класса, а не изменять его. Это означает, что если родительский класс предполагает выполнение определённых операций, подкласс не должен их нарушать.
— Логика не должны быть нарушена, лишь расширена
Подклассы должны только дополнять, а не изменять поведение родительского класса. Это должно обеспечивать предсказуемость программы.
— Наследование — это не просто копирование, а расширение возможностей
Правильное наследование позволяет создавать более специфичные классы без нарушения логики родительского класса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24👍2🔥1😢1
Случайно удалили строки, или вдруг не можете вспомнить, что только что меняли? Здесь на помощь приходит Local History.
🔹 Что делает
— Хранит локальные изменения файлов даже без коммитов
— Сохраняет историю редактирования на уровне IDE
— Позволяет вернуться к любой версии файла за определенный период времени
🔹 Зачем это нужно
— Спасает, если случайно удалил важные строки или сделал нежелательное изменение
— Не требует настроек или использования системы контроля версий
— Мгновенно восстанавливает состояние файла без лишних усилий
🔹 Как использовать
— Щелкните правой кнопкой на файле, выберите Local History -> Show History
— Выберите нужную версию и восстановите изменения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍6🔥3
С 2025 года Redis вернулся к open-source, выпустив Redis 8 под лицензией AGPLv3. После введения SSPL в 2024 году и резкой критики со стороны сообщества, Redis вернулся к истокам, но стоит ли этому радоваться?
Сторонники новой лицензии считают, что это правильный шаг, который восстановит доверие сообщества и вернёт Redis в ряды самых популярных инструментов для работы с БД в реальном времени. Однако критики утверждают, что этот ход больше связан с маркетингом и попыткой вернуть пользователей, чем с настоящими улучшениями.
— AGPLv3 обещает более открытое использование Redis в корпоративных и стартап-проектах.
— Но SSPL оставляет много вопросов о том, как Redis будет восприниматься в экосистеме open-source в будущем.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤔3👍2❤🔥1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23🔥3👍2
🔍 Загадка для разработчиков
Что за термин загадан на картинке?
💬 Пишите в комменты ответ под спойлером.
🐸 Библиотека джависта #междусобойчик
Что за термин загадан на картинке?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
Олды здесь? 👋 Помните ту самую боль ручного управления потоками, когда каждый new Thread().start() был отдельным приключением, а wait()/notify() превращали код в минное поле, где один неверный notifyAll() мог обрушить всю логику? Помните вечную молитву богам планировщика, чтобы ваш synchronized блок не привёл к дедлоку? 💀
Пост Антона Черноусова — это тёплый флешбэк в 2004 год, когда JSR 166 и пакет java.util.concurrent стали для нас настоящим глотком свежего воздуха . Это был не просто набор утилит, а смена парадигмы. Мы получили инструменты, которые решали проблемы на концептуально новом уровне.
Вместо ручного менеджмента потоков пришёл ExecutorService, который позволил думать о задачах, а не о жизненном цикле Thread. Вместо медленного Hashtable или Collections.synchronizedMap мы получили молниеносный ConcurrentHashMap. А вместо хрупких конструкций на wait()/notify() — мощные и понятные синхронизаторы вроде CountDownLatch и CyclicBarrier.
Именно этому и посвящена книга «Java Concurrency на практике». Она стала тем самым мануалом, который не просто описывал API, а учил мыслить в новой парадигме. Для опытных это отличный повод поностальгировать и оценить пройденный путь, а для молодых — понять, почему эти «классические» инструменты до сих пор являются основой большинства многопоточных приложений на Java.
Пост Антона Черноусова — это тёплый флешбэк в 2004 год, когда JSR 166 и пакет java.util.concurrent стали для нас настоящим глотком свежего воздуха . Это был не просто набор утилит, а смена парадигмы. Мы получили инструменты, которые решали проблемы на концептуально новом уровне.
Вместо ручного менеджмента потоков пришёл ExecutorService, который позволил думать о задачах, а не о жизненном цикле Thread. Вместо медленного Hashtable или Collections.synchronizedMap мы получили молниеносный ConcurrentHashMap. А вместо хрупких конструкций на wait()/notify() — мощные и понятные синхронизаторы вроде CountDownLatch и CyclicBarrier.
Именно этому и посвящена книга «Java Concurrency на практике». Она стала тем самым мануалом, который не просто описывал API, а учил мыслить в новой парадигме. Для опытных это отличный повод поностальгировать и оценить пройденный путь, а для молодых — понять, почему эти «классические» инструменты до сих пор являются основой большинства многопоточных приложений на Java.
❤8