Media is too big
VIEW IN TELEGRAM
Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🥱5💯3
🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой
Каждый день мы сталкиваемся с бесконечным потоком информации, которая не просто наполняет наш день, а управляет нашими мыслями. Социальные сети, алгоритмы и вечная гонка за вниманием приводят к тому, что мы забываем, как думать собственной головой.
Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.
Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас.
🔗 Подробнее в статье
🐸 Библиотека джависта
Каждый день мы сталкиваемся с бесконечным потоком информации, которая не просто наполняет наш день, а управляет нашими мыслями. Социальные сети, алгоритмы и вечная гонка за вниманием приводят к тому, что мы забываем, как думать собственной головой.
Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.
Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤1
Часто приходится конвертировать Entity -> DTO или DTO -> Model. Вот основные способы, как это сделать.
Простой, но не очень масштабируемый.
public class UserMapper {
public static UserDto toDto(User user) {
return new UserDto(user.getId(), user.getName());
}
public static User toEntity(UserDto dto) {
return new User(dto.getId(), dto.getName());
}
}
Генерирует код на этапе компиляции → быстрее, чем рефлексия.
@Mapper
public interface UserMapper {
UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
UserDto toDto(User user);
User toEntity(UserDto dto);
}
Просто, но медленнее из-за рефлексии.
ModelMapper modelMapper = new ModelMapper();
UserDto dto = modelMapper.map(user, UserDto.class);
Используем record вместо классов DTO для упрощения кода.
record UserDto(Long id, String name) {}
UserDto dto = new UserDto(user.getId(), user.getName());
Если нужно преобразовать список объектов.
List<UserDto> dtos = users.stream()
.map(UserMapper::toDto)
.collect(Collectors.toList());
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥9❤4😁4❤🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁48🔥9👍8😢2❤1
Обнаружили в профилировщике тормозящий код? Попробуйте этот промпт, чтобы AI помог вам оптимизировать его:
📝 Промпт:
Analyze the following Java code and suggest optimizations for better performance. Identify bottlenecks, improve memory usage, and recommend alternative approaches.
// Вставьте ваш код здесь
— Добавьте
Refactor it using Streams and functional programming
, если хотите более элегантный код.— Добавьте
Optimize it for multi-threading and concurrency
, если ваш код нагружен задачами.— Добавьте
Suggest a profiling strategy to measure performance issues
, если нужна диагностика.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3🎉1
В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.
❓Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.
— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас все-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Каждый разработчик хоть раз сталкивался с багом, который заставляет сердце уйти в пятки. Особенно, если это касается продакшена. Делимся реальными историями из жизни, когда всё пошло не по плану.
История подписчика:
Я работал в команде, которая разрабатывала сервис для обработки платежей. Вроде бы ничего сложного — получаем запрос, проверяем данные, отправляем в банк. Но однажды клиенты начали жаловаться: платежи зависают, интерфейс тормозит, а логи заполняются непонятными ошибками.
Первая мысль: проблемы с базой. Проверили — всё ок. Вторая гипотеза: сеть. Но серверы были в порядке. Тогда мы начали копать глубже… и нашли виновника. Это был бесконтрольный рост количества потоков.
Код создавал новый поток на каждый входящий запрос, но их никто не закрывал. В условиях небольшой нагрузки это не было заметно, но когда число пользователей выросло, сервер просто задохнулся. Потоки накапливались, память забивалась, а система начинала вести себя непредсказуемо.
В итоге срочно внедрили пул потоков, который ограничил их количество и позволил переиспользовать существующие. Это сразу же стабилизировало работу сервиса.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5❤🔥3
Знакомы с отдельными сочетаниями клавиш для рефакторинга, такими как
Shift + F6
или Ctrl + Alt + V
? Сочетание
Ctrl + Alt + Shift + T
открывает перед вами целый спектр возможностей рефакторинга в одном окне.🔹 Зачем это нужно
— Открывает меню, предоставляющее доступ к различным видам рефакторинга, таким как переименование, перемещение, изменение сигнатуры, извлечение метода, переменной, константы и другие.
— В зависимости от выделенного фрагмента, IntelliJ IDEA предложит только те варианты рефакторинга, которые применимы к текущему элементу кода.
🔹 Как использовать
1. Выделите часть кода, которую хотите рефакторить (например, переменную, метод или класс).
2. Нажмите
Ctrl + Alt + Shift + T
.3. Выберите необходимый тип рефакторинга из появившегося меню с помощью стрелок → Enter.
4. Следуйте дальнейшим инструкциям IDE для завершения процесса рефакторинга.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔7🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁30💯4👍2🔥1👾1
Проверьте свою внимательность и знание IT терминов. Пишите в комментариях сколько слов вам удалось найти и под спойлером указывайте сами слова.
Слова зашифрованы только по горизонтали. Не все слова связаны с Java, но все вам знакомы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🥱4🔥3🤔1
🔹 Актуальные технологии в 2025 году
Анализ предстоящих трендов в IT-индустрии на 2025 год, включая ожидания от релизов Java 25 и .NET, а также влияние искусственного интеллекта на инструменты разработки и продукты.
🔹 Переезд в США — личный опыт
Личный опыт Java-разработчика, переехавшего в США по грин-карте. Статья будет полезна тем, кто задумывается о переезде или готовится к эмиграции. Она охватывает этапы от получения визы до адаптации на новом месте.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1🎉1
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Thread может находиться в одном из следующих состояний (Thread.State):
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2🔥2
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом кода?
👍🏼 — One
🔥 — RuntimeException
👾 — Ошибка компиляции
⚡️ — null
🐸 Библиотека задач по Java
👍🏼 — One
🔥 — RuntimeException
👾 — Ошибка компиляции
⚡️ — null
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡153👍14👾13🔥4🎉1
🔥 Java 24 что нового?
18 марта Oracle официально выпустила Java 24 — не-LTS релиз, но с весьма занятными новшествами. Среди 24 JEPов есть парочка, ради которых можно обновиться:
🔹JEP 484 – Class-File API
Вводит стандартный API для парсинга, генерации и трансформации Java class-файлов.
🔹 JEP 485 – Stream Gatherers
Новый API для кастомных промежуточных операций в стримах.
🔹 JEP 489 – Vector API (9-я инкубация)
Продолжает развитие векторного API, предоставляя более эффективные вычисления с использованием векторных инструкций процессора
🔹 JEP 491 – Synchronize Virtual Threads without Pinning
Улучшает работу виртуальных потоков, позволяя синхронизировать их без привязки к конкретным потокам-носителям.
🔗 Полный список фич
🐸 Библиотека джависта #свежак
18 марта Oracle официально выпустила Java 24 — не-LTS релиз, но с весьма занятными новшествами. Среди 24 JEPов есть парочка, ради которых можно обновиться:
🔹JEP 484 – Class-File API
Вводит стандартный API для парсинга, генерации и трансформации Java class-файлов.
🔹 JEP 485 – Stream Gatherers
Новый API для кастомных промежуточных операций в стримах.
🔹 JEP 489 – Vector API (9-я инкубация)
Продолжает развитие векторного API, предоставляя более эффективные вычисления с использованием векторных инструкций процессора
🔹 JEP 491 – Synchronize Virtual Threads without Pinning
Улучшает работу виртуальных потоков, позволяя синхронизировать их без привязки к конкретным потокам-носителям.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥5🎉3
Механизм сборки мусора в JVM — это не просто “магия, которая чистит память”, а сложная система, работающая по поколениям, фазам и стратегиям.
Понимание его внутренней архитектуры важно, если вы хотите управлять производительностью, избегать утечек и эффективно настраивать параметры JVM.
🔹 Архитектура: как устроена куча (Heap)
Куча памяти делится на поколения:
Heap
├── Young Generation
│ ├── Eden Space
│ └── Survivor Spaces (S0, S1)
└── Old Generation (Tenured)
Eden — вновь созданные объекты.
Survivor — те, кто “выжил” после первой сборки.
Old Gen — объекты, пережившие несколько сборок, считаются “долгоживущими”.
Дополнительно есть Metaspace (с Java 8), где хранятся данные о классах.
🔹 Алгоритм работы GC: по фазам
1. Mark
GC начинает с “корневых” ссылок (стек, глобальные переменные) и помечает все достижимые объекты.
2. Sweep
Удаляются все немаркированные объекты — они считаются “мертвыми”.
3. Compact (в некоторых GC)
Уплотнение памяти: “живые” объекты перемещаются ближе друг к другу, чтобы избежать фрагментации.
🔹 Типы сборок
1. Minor GC
Запускается при заполнении Eden. Очищаются только молодые поколения. Быстро, но может происходить часто.
2. Major GC / Full GC
Включает Old Gen и Metaspace. Дорогая операция, может “заморозить” все потоки (stop-the-world pause).
🔹 Типы сборщиков и их принципы
— Serial GC: однопоточная сборка. Просто и медленно.
— Parallel GC: многопоточная сборка всех поколений. Высокая пропускная способность.
— G1 GC: делит кучу на регионы, параллельно собирает “Region Set”. Поддерживает предсказуемые паузы.
— ZGC: целиком конкурентный сборщик. Работает с огромными кучами (до терабайта), паузы <10 мс.
— Shenandoah: минимальные паузы за счёт почти полной конкуренции с пользовательскими потоками.
🔹 Как GC определяет, что объект мёртв?
GC не использует reference count. Он строит граф достижимости:
1. Начинает с “корней” (GC roots)
2. Если оттуда нельзя добраться до объекта — он считается мусором
3. Это позволяет избежать утечек при циклических ссылках
🔹 Советы по оптимизации
— Избегайте долгоживущих ссылок (static, ThreadLocal) без необходимости
— Используйте WeakReference, если хотите избежать удержания объекта GC
— Кэшируйте объекты осознанно — утечка через Map может быть незаметной
— Задавайте лимиты памяти (-Xms512m -Xmx1024m)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥3❤1
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
➡️ Читать статью
🐸 Библиотека шарписта
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2⚡1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
👨🏻💻 Исследование IT-аудитории Proglib 2025: зарплаты, технологии, профессии
Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.
➡️ Вся статистика и детали — здесь
Библиотека программиста #свежак
Кто такой современный разработчик в 2025 году? Актуальное исследование портрета IT-специалистов: зарплаты, технологии, специализации и демография разработчиков.
Библиотека программиста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7👍2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26💯4👍2❤1
🎧 Что послушать — #подкаст
🔹 JavaHut News #1
Дата выпуска: 25 февраля 2025
Ведущие: Роман Меерсон и Евгений Никифоров
Продолжительность: 1 час 12 минут
Первый выпуск новостного формата от подкаста JavaHut — на котором идет обсуждение ключевых тем из последнего Java-дайджеста. Ведущие обсуждают тренды, технологии и важные изменения в экосистеме Java и смежных областях. Формат ориентирован на разработчиков, которые хотят не просто быть в курсе новостей, но и понимать их глубинный контекст.
🔹 Ключевые темы выпуска
00:02:32 — Обзор статьи Cay Horstmann: Java как скриптовый язык, Jupyter Kernel
00:09:26 — Тренды в Java-экосистеме на 2024 год
00:24:40 — Jakarta EE: прощание с EJB, судьба библиотек от RedHat
00:43:40 — SecureRandom: зачем он нужен и где используется
00:55:01 — Разработка Java-агентов и применение в ML
01:00:29 — Обновления вокруг DockerHub и последствия
🔗 Слушать выпуск на Spotify
🐸 Библиотека джависта #буст
🔹 JavaHut News #1
Дата выпуска: 25 февраля 2025
Ведущие: Роман Меерсон и Евгений Никифоров
Продолжительность: 1 час 12 минут
Первый выпуск новостного формата от подкаста JavaHut — на котором идет обсуждение ключевых тем из последнего Java-дайджеста. Ведущие обсуждают тренды, технологии и важные изменения в экосистеме Java и смежных областях. Формат ориентирован на разработчиков, которые хотят не просто быть в курсе новостей, но и понимать их глубинный контекст.
🔹 Ключевые темы выпуска
00:02:32 — Обзор статьи Cay Horstmann: Java как скриптовый язык, Jupyter Kernel
00:09:26 — Тренды в Java-экосистеме на 2024 год
00:24:40 — Jakarta EE: прощание с EJB, судьба библиотек от RedHat
00:43:40 — SecureRandom: зачем он нужен и где используется
00:55:01 — Разработка Java-агентов и применение в ML
01:00:29 — Обновления вокруг DockerHub и последствия
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3⚡1🔥1