Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.
📌 Чем полезен канал?
→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.
👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
👔❌ Слишком молодой, слишком опытный: 9 причин, почему вам могут отказать после собеседования
Собеседование прошло гладко: вы подготовились, уверенно ответили на все вопросы, проявили заинтересованность и даже получили положительный фидбек. Но вместо долгожданного оффера — отказ. Почему так произошло? На самом деле, отказ может быть вызван множеством причин: от излишнего опыта до неудачной коммуникации с рекрутером.
В этой статье разобрали 9 наиболее распространённых причин, по которым кандидаты не получают работу после интервью. Это не всегда связано с вашими навыками — иногда проблема в ожиданиях компании или внутренних процессах. Узнайте, как избежать подобных ситуаций и повысить свои шансы на успех!
📎 Разобраться в причинах
Собеседование прошло гладко: вы подготовились, уверенно ответили на все вопросы, проявили заинтересованность и даже получили положительный фидбек. Но вместо долгожданного оффера — отказ. Почему так произошло? На самом деле, отказ может быть вызван множеством причин: от излишнего опыта до неудачной коммуникации с рекрутером.
В этой статье разобрали 9 наиболее распространённых причин, по которым кандидаты не получают работу после интервью. Это не всегда связано с вашими навыками — иногда проблема в ожиданиях компании или внутренних процессах. Узнайте, как избежать подобных ситуаций и повысить свои шансы на успех!
Please open Telegram to view this post
VIEW IN TELEGRAM
JetBrains выпустили новую версию IntelliJ IDEA 2024.3, и она порадовала рядом полезных фич. Вот самые интересные моменты релиза:
Теперь окно со структурой проекта показывает не только физическое расположение файлов, но и логическую структуру. Например, если вы работаете с контроллером в Spring, то прямо в этом окне можно увидеть список эндпоинтов и их привязку.
Новый AI-помощник теперь обладает улучшенной контекстной осведомленностью и может помогать при работе с VCS и отладкой кода. Это ускоряет процесс написания и анализа кода благодаря интеллектуальным подсказкам и оптимизациям.
Отладка стала еще мощнее: улучшенная функция HotSwap позволяет быстрее обновлять код во время отладки.
Улучшена поддержка новых возможностей Kotlin, а также дебаггинг нативных изображений GraalVM, что упрощает работу с мультиплатформенными приложениями.
Это лишь краткий обзор интересных новинок. Ознакомиться со всеми подробностями релиза можно в официальном блоге JetBrains.
Please open Telegram to view this post
VIEW IN TELEGRAM
BeanPostProcessor — это интерфейс из Spring Framework, который позволяет вмешиваться в процесс создания и инициализации бинов в Spring контейнере. Он предоставляет два основных метода, которые вызываются на разных этапах жизненного цикла бина:
▪️ postProcessBeforeInitialization(Object bean, String beanName) - вызывается до того, как бин будет инициализирован (до вызова метода @PostConstruct или InitializingBean#afterPropertiesSet).
▪️ postProcessAfterInitialization(Object bean, String beanName) - вызывается после инициализации бина (после завершения всех инициализационных методов).
Зачем нужен BeanPostProcessor?
Он используется для дополнительной обработки и кастомизации бинов после их создания, но до передачи клиентскому коду. Примеры:
- Добавление проксирования бинов (например, для AOP или транзакций).
- Валидация или изменение свойств бинов.
- Логирование жизненного цикла.
- Добавление кастомных аннотаций.
- Обработка маркерных интерфейсов.
Как это работает?
@Component
public class CustomBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) {
System.out.println("Before Initialization: " + beanName);
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
System.out.println("After Initialization: " + beanName);
return bean;
}
}
Результат: Вывод сообщений о каждом бине до и после инициализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Java developer
Гибрид (Москва, Санкт-Петербург, Екатеринбург), beeline
Подробнее
▪️ Junior Java-разработчик
Офис (Москва), Gridnine
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Удалёнка, Comitas
Подробнее
▪️ Middle Java разработчик
Гибрид (Москва, Краснодар, Санкт-Петербург, Иннополис) / Удалёнка (РФ), Магнит
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java developer
Офис (Москва, Липецк), НЛМК ИТ
Подробнее
▪️ Senior Java разработчик
Удалёнка, МегаФон
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Java developer
Гибрид (Москва, Санкт-Петербург, Екатеринбург), beeline
Подробнее
▪️ Junior Java-разработчик
Офис (Москва), Gridnine
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Удалёнка, Comitas
Подробнее
▪️ Middle Java разработчик
Гибрид (Москва, Краснодар, Санкт-Петербург, Иннополис) / Удалёнка (РФ), Магнит
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java developer
Офис (Москва, Липецк), НЛМК ИТ
Подробнее
▪️ Senior Java разработчик
Удалёнка, МегаФон
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Habr
Вакансия «Java developer» в городах Москва, Санкт-Петербург и Екатеринбург, работа в компании «beeline» — Хабр Карьера
Вакансия «Java developer» в городах Москва, Санкт-Петербург и Екатеринбург, работа в компании «beeline». Полная занятость. Можно удаленно. Вакансия в архиве.
BeanFactoryPostProcessor — это интерфейс из Spring Framework, который позволяет вмешиваться в процесс создания бинов в BeanFactory до их инициализации, но после того, как Spring их создал. Он предоставляет один основной метод:
▪️ postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) — вызывается до инициализации бинов. В этом методе можно изменять конфигурацию бинов, например, добавлять или изменять их свойства, влиять на их типы или даже на порядок их создания.
Зачем нужен BeanFactoryPostProcessor?
Он используется для того, чтобы дать возможность кастомизировать настройки Spring контейнера, не вмешиваясь в сам процесс создания объектов. Примеры:
- Изменение параметров конфигурации бинов, которые уже были определены в контексте.
- Использование кастомных значений или свойств для бинов до их создания.
- Управление зависимостями на уровне контейнера.
- Добавление пользовательских конфигураций, таких как создание собственных PropertyEditors или манипуляции с BeanDefinition.
Как это работает?
Пример реализации:
@Component
public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
// Пример изменения beanDefinition
BeanDefinition beanDefinition = beanFactory.getBeanDefinition("someBean");
beanDefinition.getPropertyValues().add("someProperty", "newValue");
}
}
В этом примере изменяются настройки существующего бина до его создания, что позволяет управлять его поведением в контейнере.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Java | тесты, код, задания
Forwarded from Библиотека задач по Java | тесты, код, задания
Сколько объектов станут доступны для сборщика мусора после удаления ссылки на сет?
Anonymous Quiz
15%
0
18%
1
12%
2
17%
3
39%
4
🔥 Spring Data JPA
👍🏼 Hibernate
⚡️ JDBC
❤️ MyBatis
👾 JOOQ
Please open Telegram to view this post
VIEW IN TELEGRAM
ConcurrentSkipListMap — это потокобезопасная и отсортированная реализация интерфейса NavigableMap, которая работает на основе skip list (списка с пропусками). Skip list — это многослойная структура данных, состоящая из нескольких уровней связных списков: нижний уровень содержит все элементы в порядке сортировки, а верхние уровни — лишь часть элементов для ускорения поиска. При добавлении элемента случайно выбирается его "высота" (количество уровней, на которых он присутствует), что позволяет "перепрыгивать" через блоки данных на верхних уровнях и выполнять операции со сложностью O(log n).
Пример структуры:
lvl 3: 1 ------ 8
lvl 2: 1 --- 7 -- 8
lvl 1: 1 - 3 - 7 - 8 - 10
🔹 Skip List: Многослойный список с пропусками, где верхние уровни помогают быстро достигать нужного диапазона элементов, снижая количество переходов по связям.
🔹 Потокобезопасность обеспечивается за счёт использования CAS (Compare-And-Swap) операций и минимального блокирования. Модификации происходят безопасно без полной блокировки структуры.
🔹 Элементы всегда хранятся в отсортированном порядке по их ключам, что позволяет выполнять операции вроде поиска диапазонов или итераций по упорядоченным ключам очень эффективно.
🔹 Высокая доступность: чтение не блокируется, даже если выполняются параллельные операции вставки или удаления.
▪️ Операции чтения (например, get или containsKey) выполняются быстро и без блокировок благодаря структуре skip list.
▪️ Операции записи (например, put и remove) синхронизированы, но производительность сохраняется за счёт оптимизации с использованием CAS.
▪️ Поддерживает натуральный порядок ключей или порядок, определённый переданным компаратором.
▪️ Эффективен для сценариев, где важны отсортированные данные и параллельный доступ, но количество обновлений не слишком велико.
🚀 Когда использовать ConcurrentSkipListMap?
- Если нужен параллельный доступ к отсортированной мапе.
- Для обработки диапазонов данных или частых операций чтения в упорядоченном виде.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
Forwarded from Библиотека питониста | Python, Django, Flask
🌐 Как работает GraphQL и чем он лучше RESTful API
GraphQL не следует путать с SQL — он не используется для прямых запросов к таблицам базы данных. GraphQL — это, скорее, формат или структура, которая задаёт контракт между клиентом и сервером API. Его можно рассматривать как спецификацию или новый стандарт API, похожий на REST, но более эффективный и гибкий.
В новой статье делаем детальный разбор преимуществ и недостатков GraphQL с примерами кода. Помогаем понять, стоит ли переходить на эту технологию в вашем проекте.
👉 Читать по этой ссылке
В новой статье делаем детальный разбор преимуществ и недостатков GraphQL с примерами кода. Помогаем понять, стоит ли переходить на эту технологию в вашем проекте.
👉 Читать по этой ссылке
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Задумывались ли вы, как одна небольшая опечатка в коде может привести к неожиданным последствиям?
Представьте, что ваше приложение внезапно начинает показывать даты, сдвинутые на год вперёд. Причина? Всего лишь одна заглавная буква вместо строчной.
Подробнее о том, как избежать подводных камней при работе с датой в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Progbook.djvu | Книги для программистов
📚 Pragmatic Unit Testing in Java with JUnit (2024)
✍️ Автор: Jeff Langr
📃 Страниц: 512
В этом издании вы узнаете, как создавать лаконичные и удобные в обслуживании модульные тесты. Новые главы содержат примеры для тестирования общих концепций, а также рекомендации по использованию современных инструментов искусственного интеллекта в разработке и тестировании. Обновленные темы включают повышение качества тестов с помощью мнемоник разработки, увеличение рентабельности инвестиций за счет рефакторинга тестового и производственного кода, а также использование тестов для стимулирования разработки.
✍️ Автор: Jeff Langr
📃 Страниц: 512
В этом издании вы узнаете, как создавать лаконичные и удобные в обслуживании модульные тесты. Новые главы содержат примеры для тестирования общих концепций, а также рекомендации по использованию современных инструментов искусственного интеллекта в разработке и тестировании. Обновленные темы включают повышение качества тестов с помощью мнемоник разработки, увеличение рентабельности инвестиций за счет рефакторинга тестового и производственного кода, а также использование тестов для стимулирования разработки.
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
Flyweight — это структурный паттерн, который позволяет экономить память за счёт повторного использования уже имеющихся объектов, разделяя их состояние на внутреннее и внешнее. Внутреннее состояние хранится в самом объекте и не зависит от контекста, а внешнее передаётся извне.
Использование:
🔹 Когда в системе требуется большое количество однотипных объектов, и это негативно влияет на использование памяти.
🔹 Когда можно разделить состояние объекта на неизменяемую (внутреннюю) и изменяемую (внешнюю) части.
🔹 Для оптимизации ресурсов в системах с высокой степенью повторения данных.
Преимущества:
Недостатки:
📌 Flyweight отлично подходит для оптимизации ресурсов в играх (например, представление графических объектов) или при работе с большими наборами данных.
Please open Telegram to view this post
VIEW IN TELEGRAM