Telegram

Java библиотека

Взрослая ЦА
РКН
Прямой пост
t.me/javalib
Описание канала в Telegram

Книги, статьи, мемы и многое другое для Java программиста! По сотрудничеству и рекламе: ссылка скрыта Канал в перечне РКН: ссылка скрыта Мы на бирже: ссылка скрыта Сообщество VK ссылка скрыта

Аудитория
Смешанная аудитория
Подписчики
30 941
-17день
-51неделя
-104месяц
Охват поста
1 626
1 626за 24 часа
1 755в среднем
Вовлечённость
5,3%
5,3%за 24 часа
8,8%в среднем
Упоминания в других каналах

Канал упомянули 567 раз в 76 каналах

Чем больше упоминаний и каналов — тем заметнее канал в своей нише.

Информация о подписчиках
Вк, телеграм

Похожие каналы

26 714
Смешанная аудитория
ERR 14%

🔓 Популярные игры, приложения для android устройств, новости технологий и многое другое. 🤝 Сотрудничество: smm@mannager.ru ⚠️ Наш чат: 🔓 Популярные игры, приложения для android устройств, новости технологий и многое другое. 🔓 Популярные игры, приложения для android устройств, новости технологий Игры, приложения, модификации, моды, новости, android, сма

2 200
4 572
Мужская аудитория
ERR 23%

Здесь рассказывают о технологиях просто и с огоньком 🔥 Канал про гаджеты, ИИ, электронику и интересные технологии — просто, честно и интересно. По вопросам сотрудничества: 6max.ru/vladimir1 Статистика канала: https://maxframe.ru/channel-profile/72081107124477/

1 990
1 874
Смешанная аудитория
ERR 19%

ChatGPT (ЧатГпт) | NanoBanana 2 (НаноБанана) | DeepSeek | Claude (Клод) | Veo 3.1 | GPT Image 2 | Kling (Клинг) | Grok | GPT 2 AI Бот | ИИ Бот | ИИ Max | нейросети | написать текст | ответы на вопросы | перевод | генерация фото | генерация видео | улучшить фото | фотосессия Бот с нейросетями — @id711601738400_bot 🧑‍💻 Связь: https://clck.ru/3T8PD8 Сервис аналитики MAX - https://maxframe.ru

600
13 295
Смешанная аудитория
ERR 12%

Канал с вопросами и задачами с собеседований! По сотрудничеству и рекламе: @NadikaKir Канал в перечне РКН: https://vk.cc/cJrSQZ Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm

1 800
1 840
Смешанная аудитория
ERR 14%

Вся самая новая и полезная литература для Java разработчиков! По вопросам авторских прав, сотрудничества и рекламы: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial Мы на бирже: https://telega.in/channels/bookofgeek/card_max/?r=lcDuijdm Канал в перечне РКН: https://vk.cc/cJrTqo

900
1 305
Смешанная аудитория
ERR 22%

Книги, статьи, мемы и многое другое для Java программиста! По сотрудничеству и рекламе: https://t.me/NadikaKir или в ЛС сообщества ВК https://vk.com/javatutorial Канал в перечне РКН: https://vk.cc/cJrT4A Мы на бирже: https://telega.in/c/javalib/ Сообщество VK https://vk.com/javatutorial

700
Формат размещения
4 500

топ 1 час · сутки в ленте · цена напрямую от автора

💎Эффективность за эти деньги
2,8
CPV · за показ
2 768
CPM · за 1000
Пересчитывается от формата и охвата 1 626/24ч
Гарантия выхода поста и возврат средств
Надёжность сделки
Среднее время ответа админа
Среднее время ответа админа
Обычно отвечает быстро
Размещений через Помогач
Размещений через Помогач
Первое размещение — за вами
Посты в канале
Java библиотека
Telegram · канал
Что такое Spring Boot В этом видео мы немного погрузимся в изучение Spring Boot и узнаем, что представляет собой этот фреймворк, какие преимущества он предоставляет, и как начать использовать его для разработки приложений! 🌐🗣СМОТРЕТЬ VKVIDEO 📺🗣СМОТРЕТЬ RUTUBE 🎞🗣СМОТРЕТЬ YOUTUBE Подписывайся на наш канал в Max 🟪
223 просм.12 июля, 03:09
Бесплатный интенсив по вайбкодингу от Яндекс Практикума ⚡ Прокачивайте навык, который уже меняет IT-рынок, на бесплатном интенсиве по вайбкодингу от Яндекс Практикума. Всего за 8 дней освоите всю базу и научитесь создавать работающие IT-продукты без единой строчки кода. Что вас ждёт: ✅ 8 модулей теории, 8 практических заданий для закрепления — по одному на каждый день В конце интенсива создадите собственный проект — сайт, бот, CRM или другой инструмент под вашу рабочую задачу Будете учиться в удобном темпе без дедлайнов на платформе Практикума Перестанете ждать программистов — сможете сами собирать прототипы и тестировать гипотезы Сэкономите бюджет бизнеса — сами закроете часть задач, которые раньше отдавали на аутсорс Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе
482 просм.12 июля, 00:36
Фишка Lombok: @With Как вы обычно обновляете одно поле в неизменяемом объекте? Создаёте копию с нужным значением? Муторно. Lombok умеет делать это просто и элегантно. 🔹 Аннотация @With Генерирует методы withX(...), которые создают копию объекта с изменённым полем. Подходит для immutable-моделей и паттерна builder. Класс при этом должен быть final (например, через @Value или вручную). 🔹 Пример @Value @With public class User { String name; int age; } Теперь можно: User user1 = new User("Alice", 25); User user2 = user1.withAge(30); // создаётся новый объект с новым age Объекты остаются неизменяемыми, но при этом легко "обновляемыми". 🔹 Зачем это нужно — Удобно при работе с immutable-классами. — Простой способ "копировать с изменением". — Чистый, декларативный стиль без boilerplate. Подписывайся на наш канал в Max 🟪
1 486 просм.11 июля, 16:19
Честный пробный урок английского в «Инглекс» Онлайн-школа «Инглекс» приглашает на бесплатный пробный урок. Это не демо-версия, а полноценное занятие с преподавателем, который определит ваш реальный уровень и расскажет, как двигаться дальше. На уроке вы: — пройдете тестирование: грамматика, лексика, аудирование, говорение — обсудите с преподавателем ваши цели (работа, учеба, путешествия, саморазвитие) — протестируете интерактивную платформу Почему «Инглекс»? ✨15 лет на рынке, входит в ТОП-3 лидеров ✨средний стаж преподавателей — 10 лет ✨персонализированный подход: вас не заставят делать то, что не нужно для вашего уровня Никаких обещаний «заговорите за месяц». Только объективная диагностика и прозрачный план. Сделайте первый шаг, а после урока получите видеоурок по произношению в подарок. Узнать больше #реклама 16+ englex.ru О рекламодателе
1 586 просм.11 июля, 11:19
1 376 просм.10 июля, 21:12
Пластиковая карта Пэй — мгновенный кешбэк до 50% баллами ✨ Оформите пластиковую карту Пэй c мгновенным кешбэком. 0₽ — выпуск карты и её обслуживание. Закажите в приложении Яндекс Пэй ❤️ Узнать больше Финансовые услуги оказывает: АО "Яндекс Банк". #реклама 16+ pay.yandex.ru О рекламодателе
1 711 просм.10 июля, 20:12
👩‍💻 IntelliJ IDEA: Evaluate Expression Открывается через Run → Evaluate Expression или Alt + F8 (Option + F8 на macOS). 🟢Что это вообще такое Небольшое окно с полем ввода, в котором можно написать любое Java-выражение и мгновенно получить результат. Код выполняется в контексте текущего фрейма — видны все локальные переменные, this, поля класса. 🟢Примеры из реальной жизни 🔘Вызов метода на живом объекте userService.findById(42L) Не нужно писать тест — просто вызываете метод и смотрите, что он реально вернёт с текущими данными в БД. 🔘Проверка сложного условия order.getItems().stream() .anyMatch(i -> i.getPrice().compareTo(BigDecimal.ZERO) < 0) Подозреваете, что в заказе есть товары с отрицательной ценой? Проверяете прямо сейчас, не добавляя логов. 🔘Изменение переменной на лету user.setRole(Role.ADMIN) Хотите проверить, как поведёт себя код с другим значением — меняете стейт прямо в памяти и продолжаете выполнение. Приложение не перезапускается. 🔘Десериализация или парсинг objectMapper.writeValueAsString(response) Получаете красивый JSON из объекта прямо в дебаггере — удобно проверить, что именно уйдёт клиенту. 🟢Продвинутые трюки — В окне Evaluate есть переключатель с однострочного режима на Code Fragment — там можно писать многострочный код с переменными, условиями и циклами. — Результат вычисления отображается как обычная переменная в дереве дебаггера. Можно раскрыть, посмотреть вложенные поля, скопировать значение. ⚠️ Evaluate выполняет код реально — если вызовете метод с side-effect (запись в БД, отправка события), это произойдёт по-настоящему. Подписывайся на наш канал в Max 🟪
2 312 просм.10 июля, 16:34
👩‍💻 Spring AI: как превратить изображение документа в JSON в Java-приложении Приглашаем на открытый урок. 🗓 14 июля в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework». На занятии мы разберем: ✔️Что такое Spring AI и зачем он нужен Java-разработчику, который хочет добавлять AI-функции в свои приложения. ✔️Как AI-модель работает с изображениями и почему документ можно превратить в данные, пригодные для обработки в коде. ✔️Как настроить подключение к модели в Spring Boot и собрать базовый пайплайн обработки документа. ✔️Как с помощью промпта и OutputParser получить предсказуемый результат в формате JSON/POJO, а не «свободный» текст от нейросети. ✔️Какие ошибки и ограничения важно учитывать, если вы хотите использовать такой подход в реальном backend-сервисе. 🔗 Ссылка на регистрацию: https://vk.cc/cZsLQ0 Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1 894 просм.10 июля, 12:02
💡 SOLID: принцип подстановки Лисков (LSP) говорит: 🔁 объекты базового класса должны без проблем заменяться объектами его подклассов. Если подкласс меняет поведение так, что код начинает ломаться — дизайн неправильный. ❌ Плохой пример У нас есть Vehicle с методом startEngine(). Мы наследуем Bicycle, но… у велосипеда нет двигателя — и метод бросает исключение. Такая иерархия: class Vehicle { public void startEngine() { ... } } class Bicycle extends Vehicle { @Override public void startEngine() { throw new UnsupportedOperationException("Bicycles don't have engines!"); } } Теперь любой тест, ожидающий, что любой Vehicle умеет завести двигатель, падает. 👉 Подкласс ведёт себя не так, как базовый — LSP нарушен. ✅ Как исправить Разделяем ответственность на интерфейсы: interface Vehicle {} interface Motorized { void startEngine(); } class Car implements Vehicle, Motorized { public void startEngine() { ... } } class Bicycle implements Vehicle { // без двигателя — всё ок } Теперь только те объекты, которым по смыслу нужен двигатель, реализуют Motorized. 🧠 Вывод ✔️ Подклассы не должны ломать ожидания, заложенные в базовый класс. ✔️ Лучше разделить поведение, чем «затыкать» методы исключениями. ✔️ LSP делает код предсказуемым и безопасным для расширения. Подписывайся на наш канал в Max 🟪
1 863 просм.10 июля, 00:11
Создание безопасного API с использованием Spring Security, WebFlux и JWT В этом видео мы разработаем небольшое приложение, используя Spring Security и WebFlux, а также внедрим Redis и MongoDB для хранения токенов и пользовательских данных. В процессе создания приложения мы узнаем, как создавать, проверять и обновлять токены, а также настроим Spring Security для защиты нашего приложения. 🌐🗣СМОТРЕТЬ VKVIDEO 📺🗣СМОТРЕТЬ RUTUBE 🎞🗣СМОТРЕТЬ YOUTUBE Подписывайся на наш канал в Max 🟪
2 064 просм.9 июля, 15:31
Вопрос с собеседования Что такое Redis и зачем он используется? Ответ: Redis — это хранилище данных в оперативной памяти, предназначенное для быстрого доступа к информации. Он поддерживает разные структуры данных — строки, списки, множества, словари — и применяется там, где важна скорость: кэширование, хранение сессий, подсчёт событий, временные блокировки и очереди. Благодаря работе в памяти, Redis обеспечивает отклик за миллисекунды и часто используется в высоконагруженных системах и микросервисной архитектуре. Подписывайся на наш канал в Max 🟪
2 096 просм.9 июля, 10:18
👩‍💻 Java совет: List.reversed() В Java появился удобный метод List.reversed(), который возвращает обратное представление списка (view). Важно понимать: он не изменяет оригинальный список и не создаёт новую копию - это просто reversed-view поверх исходного списка. Пример: var list = List.of("A", "B", "C"); var reversed = list.reversed(); System.out.println(reversed); // [C, B, A] System.out.println(list); // [A, B, C] Что происходит: - reversed() показывает элементы в обратном порядке - исходный список остаётся без изменений - создаётся view, а не копия → это быстрее и экономит память Такая техника часто используется в Java Collections для эффективных представлений данных без лишнего аллоцирования памяти. Маленькая, но очень полезная фича современной Java. Подписывайся на наш канал в Max 🟪
2 907 просм.8 июля, 15:10
Совет по Java: можно избежать чрезмерного количества параметров метода, сгруппировав связанные значения в объекты. Подписывайся на наш канал в Max 🟪
2 233 просм.8 июля, 09:30
Spring Security: начало работы и первые шаги на практике В данной статье поигрались с базовыми возможностями Spring Secrity и узнали фундамент на котором строится вся остальная безопасность приложения Читать статью Наш канал в Макс 🟪
2 542 просм.7 июля, 18:12
2 187 просм.7 июля, 14:07
💡 SOLID: принцип подстановки Лисков (LSP) говорит: 🔁 объекты базового класса должны без проблем заменяться объектами его подклассов. Если подкласс меняет поведение так, что код начинает ломаться — дизайн неправильный. ❌ Плохой пример У нас есть Vehicle с методом startEngine(). Мы наследуем Bicycle, но… у велосипеда нет двигателя — и метод бросает исключение. Такая иерархия: class Vehicle { public void startEngine() { ... } } class Bicycle extends Vehicle { @Override public void startEngine() { throw new UnsupportedOperationException("Bicycles don't have engines!"); } } Теперь любой тест, ожидающий, что любой Vehicle умеет завести двигатель, падает. 👉 Подкласс ведёт себя не так, как базовый — LSP нарушен. ✅ Как исправить Разделяем ответственность на интерфейсы: interface Vehicle {} interface Motorized { void startEngine(); } class Car implements Vehicle, Motorized { public void startEngine() { ... } } class Bicycle implements Vehicle { // без двигателя — всё ок } Теперь только те объекты, которым по смыслу нужен двигатель, реализуют Motorized. 🧠 Вывод ✔️ Подклассы не должны ломать ожидания, заложенные в базовый класс. ✔️ Лучше разделить поведение, чем «затыкать» методы исключениями. ✔️ LSP делает код предсказуемым и безопасным для расширения. Подписывайся на наш канал в Max 🟪
3 003 просм.7 июля, 10:15
Спасаемся от Spring: есть ли альтернативы репозиторным фреймворкам? Часть вторая. Альтернативы В предыдущей статье мы обсудили недостатки решений Spring в части доступа к данным. В ходе анализа решений Spring стало очевидно, что оба фреймворка используют радикально разные подходы в работе с данными. Казалось бы, контроль над запросами очень важен для приложений, особенно высоконагруженных. Но Spring Data JPA такого контроля не даёт. Лёгкость и простота изменения кода является залогом его чистоты и работоспособности, однако с этим есть сложности уже у Spring JDBC. Всего-то нужен фреймворк, предоставляющий полный контроль над запросами со стороны разработчика и не создающий трудностей при развитии, изменении и рефакторинге кода. В этой статье мы разберём две альтернативы, которые, на мой взгляд, в меньшей степени подвержены проблемам Spring Data JPA и Spring JDBC. Это будут jOOQ и Exposed. Читать статью Наш канал в Макс 🟪
2 421 просм.6 июля, 22:23
1 893 просм.6 июля, 17:58
Знакомо чувство, когда код вроде работает, но любое изменение вызывает тревогу? Новая фича затрагивает десятки файлов. После рефакторинга начинают падать тесты. А когда бизнес меняет требования, приходится переписывать половину сервиса. Часто проблема не в коде. 🚫 Проблема в том, что в Use Case бизнес-логика идёт вперемешку с инфраструктурными вызовами, а архитектура больше не помогает контролировать сложность проекта. 🔥 15 июля стартует практический курс по Domain-Driven Design и Clean Architecture на Java. За 6 недель вы научитесь: ✔️ Выделять доменную модель и проектировать Aggregate, Entity и Value Object ✔️ Отделять бизнес-логику от HTTP, БД, Kafka и внешних сервисов ✔️ Писать тесты, которые проверяют логику, а не количество моков ✔️ Реализовывать Domain Events и Domain Service без сложных абстракций ✔️ Подключать HTTP, gRPC и Kafka через адаптеры, не затрагивая доменную модель ✔️ Строить сервисы, которые проще развивать при изменении требований 📦 На курсе вы соберёте полноценный сервис диспетчеризации заказов на Java и получите готовый шаблон архитектуры, который сможете использовать в рабочих проектах. Автор курса — Кирилл Ветчинкин, архитектор Авито, ex Staff Engineer в Купер, с 15-летним опытом разработки и 6+ годами практического применения DDD. 🎁 Первый модуль можно пройти бесплатно и понять, какие архитектурные решения помогают удерживать кодовую базу под контролем: https://microarch.ru/courses/ddd/languages/java?utm_source=posev&utm_medium=erid:2Vtzqv8mHrR&utm_campaign=7 Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2Vtzqv8mHrR
2 050 просм.6 июля, 12:34
StampedLock: когда ReentrantReadWriteLock уже не справляется Если знаком с ReentrantReadWriteLock, то знаешь идею: много читателей одновременно, но запись эксклюзивна. Звучит разумно, но у этой модели есть фундаментальная проблема: читатели блокируют писателей. Поток, который хочет писать, ждёт пока все читатели закончат. При высокой read-нагрузке писатель может ждать очень долго. StampedLock решает именно это. 🔵 Три режима, не два ReentrantReadWriteLock даёт два режима — read и write. StampedLock добавляет третий — optimistic read. StampedLock lock = new StampedLock(); // обычный read lock long stamp = lock.readLock(); try { // читаем } finally { lock.unlockRead(stamp); } // write lock long stamp = lock.writeLock(); try { // пишем } finally { lock.unlockWrite(stamp); } Это знакомо. Но вот где начинается интересное: long stamp = lock.tryOptimisticRead(); // читаем данные без блокировки вообще int value = this.value; if (!lock.validate(stamp)) { // кто-то писал пока мы читали — перечитываем под реальным локом stamp = lock.readLock(); try { value = this.value; } finally { lock.unlockRead(stamp); } } tryOptimisticRead() не захватывает никакого лока, а просто возвращает штамп. validate() проверяет — была ли запись с момента получения штампа. Если нет, то данные консистентны, идём дальше, если да, то фолбэк на обычный read lock. 🔵 Что такое stamp Это long, который кодирует состояние лока. Каждая успешная запись инвалидирует все оптимистичные штампы. Поэтому validate() — это просто битовая проверка, без CAS, без синхронизации, так что она очень дешёвая. 🔵 Где это реально даёт профит Сценарий: данные читаются в 95% случаев, пишутся редко. Классический пример — кеш, конфигурация, счётчики с инкрементом. С ReentrantReadWriteLock все читатели всё равно захватывают shared lock — это операция на AQS, есть накладные расходы. С StampedLock + optimistic read при отсутствии конкурентных записей блокировки нет вообще. 🔵 Подводные камни — StampedLock не реентерабельный. Если поток захватил write lock и попытается захватить его снова — дедлок. Это принципиальное отличие от ReentrantReadWriteLock. — Нет поддержки Condition. Если тебе нужен await/signal — StampedLock не подойдёт. — Нет поддержки прерывания в обычных методах readLock()/writeLock(). Есть отдельные readLockInterruptibly() — но это уже осознанный выбор. StampedLock — инструмент для конкретного профиля нагрузки: много чтений, редкие записи, нет реентерабельности. Не замена всем локам подряд. Но в правильном месте даёт ощутимый прирост без усложнения архитектуры. Подписывайся на наш канал в Max 🟪
1 868 просм.6 июля, 09:29
Вопрос с собеседования В чём разница между @Bean и @Component в Spring? Ответ: @Bean используется в конфигурационных классах Spring. Он используется для непосредственного создания бина. @Component используется со всеми классами, которыми должен управлять Spring. Когда Spring видит класс с @Component, Spring определяет этот класс как кандидата для создания bean. Подписывайся на наш канал в Max 🟪
3 177 просм.5 июля, 18:07
Hibernate Reactive: опыт миграции, архитектурные компромиссы и скрытая сложность Наш проект на Quarkus столкнулся с необходимостью более эффективного использования ресурсов под высокой нагрузкой. В поисках решения мы решили попробовать миграцию с классического Hibernate ORM на Hibernate Reactive (HR). В этой статье я поделюсь реальным опытом этого перехода: разберу ключевые архитектурные различия, расскажу о неочевидных «граблях», на которые мы наступили, и покажу на production-коде, какую цену пришлось заплатить за реактивность. Версии используемого ПО: Quarkus: 3.31.3, Quarkus Hibernate Reactive: 3.31.3 и Vertx-pg-client (реактивный клиент PostgreSQL): 4.5.24. Все описанные ниже вопросы и особенности актуальны именно для этих версий. Читать статью Наш канал в Макс 🟪
2 394 просм.5 июля, 10:29
❗️ Модели жизненного цикла разработки ПО Жизненный цикл разработки ПО — это структура, описывающая процесс создания программного обеспечения, позволяя планировать и управлять разработкой систематично. Вот основные и часто используемые модели: 🟡 Водопадная модель - Линейный и последовательный подход, где каждый этап строго следует за предыдущим. - Проект разбивается на отдельные фазы: Сбор требований, Дизайн, Реализация, Верификация, Поддержка. - Подходит для проектов с четкими, неизменяемыми требованиями. 🟡 Agile-модель - Разработка ведется небольшими, управляемыми итерациями, называемыми спринтами, что позволяет быстро реагировать на изменения. - Включает популярные методологии: Scrum (спринты с командными встречами), Kanban (визуализация задач) и Extreme Programming (XP, акцент на частых релизах). - Применяется для проектов с неопределенными или часто меняющимися требованиями, благодаря гибкости и акценту на обратную связь. 🟡 V-модель (Модель верификации и валидации) - Расширение водопадной модели, где для каждой фазы разработки предусмотрена фаза тестирования, формирующая визуальную «V»-структуру. - Подходит для проектов, где критична строгая проверка и верификация на каждом этапе. 🟡 Итеративная модель - Продукт создается поэтапно, каждая новая итерация улучшает предыдущие, пока не будет достигнут окончательный результат. - Хорошо подходит для крупных проектов, где сложно сразу определить все требования, но есть понимание общего направления. 🟡 Спиральная модель - Комбинирует итеративный подход с этапами водопадной модели, что позволяет постепенно создавать продукт с учетом анализа рисков. - Каждый цикл включает фазы: планирование, анализ рисков, разработка, оценка. - Идеальна для сложных и масштабных проектов, требующих многократного анализа и управления рисками. 🟡 Модель "Большой взрыв" - Минимальное планирование, основное внимание уделяется коду, и только в конце идет интеграция и тестирование. - Применяется для небольших проектов или для экспериментов, когда структура не важна и требуется быстрый результат. 🟡 RAD-модель (Быстрая разработка приложений) - Сосредоточена на быстром прототипировании и регулярной обратной связи от пользователя. - Цель — ускорить разработку и адаптацию, что полезно для проектов, где важна скорость релизов. 🟡 Инкрементальная модель - Продукт разрабатывается и тестируется по частям (инкрементам), каждый из которых добавляет новую функциональность. - Удобна для проектов с определенными частями функционала, которые можно разрабатывать независимо друг от друга. - Каждая модель имеет свои плюсы и минусы. Выбор подходящей модели зависит от сложности проекта, стабильности требований, нужной гибкости и степени важности тестирования. ❓ Какая модель используется на вашем текущем проекте? Подписывайся на наш канал в Max 🟪
2 077 просм.5 июля, 01:10
🖥 Smallville — фреймворк для создания генеративных агентов для видеоигр. Эти агенты — виртуальные персонажи, способные хранить воспоминания, наблюдать за окружением и реагировать на изменения в игровом мире. Они используют модели на основе больших языковых моделей (LLM), таких как ChatGPT, для создания более реалистичных и динамичных NPC, что снижает необходимость ручного программирования взаимодействий 🌟 Репозиторий включает клиентские библиотеки для Java и JavaScript, а также сервер для симуляций 🔐 Лицензия: MIT 🖥 Github Подписывайся на наш канал в Max 🟪
2 154 просм.4 июля, 20:21
🖥 LWJGL — это open-source Java-библиотека, обеспечивающая кроссплатформенный доступ к популярным нативным API, полезным при разработке графических (OpenGL, Vulkan, bgfx), аудио (OpenAL, Opus), параллельных (OpenCL, CUDA) и XR (OpenVR, LibOVR, OpenXR) приложений Доступ, предоставляемый библиотекой LWJGL, является высокопроизводительным, но в то же время обернут в безопасный для типов и удобный для пользователя слой, подходящий для экосистемы Java. 🖥 GitHub 🟡 Быстрый старт Подписывайся на наш канал в Max 🟪
2 234 просм.4 июля, 18:05
10 техник оптимизации Java, которые выведут вас на новый уровень Когда Java-приложение внезапно начинает «подвисать», причина почти всегда кроется в прозаичных деталях: неоптимизированных циклах, неудачном выборе коллекций, забытом кэше или агрессивном GC. В этой статье — 10 практических техник, которые помогут выжать максимум из JVM без преждевременной микрооптимизации и шаманства. Только доказавшие свою эффективность подходы, которые реально работают в проде — от финтеха до высоконагруженных API. Читать статью Наш канал в Макс 🟪
2 086 просм.4 июля, 13:20
👩‍💻 Полезный Java-трюк: ThreadLocal.withInitial() Если нужно, чтобы каждый поток имел собственное значение переменной, используйте ThreadLocal. Метод withInitial() позволяет задать значение по умолчанию, которое будет создаваться лениво — только при первом обращении потока. Пример: ThreadLocal counter = ThreadLocal.withInitial(() -> 0); counter.get(); // 0 counter.set(70); counter.get(); // 70 Что происходит: • каждый поток получает свою независимую копию переменной • значение создаётся только когда поток впервые вызывает get() • нет гонок данных и не нужна синхронизация Это особенно полезно для: • хранения контекста запроса • connection/session объектов • временных данных в параллельных задачах • оптимизации без synchronized Главное помнить: ThreadLocal хранит данные на уровне потока, а не объекта. Подписывайся на наш канал в Max 🟪
2 198 просм.4 июля, 10:32
📌 Как работает SSO SSO (Single Sign-On) или Единая система аутентификации — это схема аутентификации, которая позволяет пользователю войти в разные системы, используя одну учетную запись. На фото выше показан принцип работы SSO. Шаг 1: Пользователь заходит в Gmail или любой другой сервис электронной почты. Gmail обнаруживает, что пользователь не авторизован, и перенаправляет его на SSO сервер аутентификации, который также обнаруживает отсутствие входа. Пользователь попадает на страницу авторизации SSO и вводит свои учетные данные. Шаги 2-3: SSO сервер проверяет данные пользователя, создает глобальную сессию и выдает токен. Шаги 4-7: Gmail проверяет токен на SSO сервере. Система аутентификации регистрирует Gmail и возвращает статус «действительно». Gmail отправляет пользователю защищенный ресурс. Шаг 8: Из Gmail пользователь переходит на другой сайт Google, например, YouTube. Шаги 9-10: YouTube обнаруживает, что пользователь не авторизован, и запрашивает подтверждение. SSO сервер находит уже активную сессию пользователя и выдает токен. Шаги 11-14: YouTube проверяет токен на SSO сервере. Система аутентификации регистрирует YouTube и возвращает статус «действительно». YouTube отправляет пользователю защищенный ресурс. ✔️ Процесс завершен, и пользователь получает доступ к своим данным. Подписывайся на наш канал в Max 🟪
2 418 просм.3 июля, 16:29
1 996 просм.3 июля, 15:17
Запустите рекламу в телеграм-каналах через Яндекс Директ Перфоманс-реклама в мессенджере продолжает работать: • Таргетинг по тематикам и регионам • Умный подбор каналов • Гибкие модели оплаты (CPC и CPV) Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе
1 811 просм.3 июля, 14:16
REST Assured: почему зелёные тесты пропускают баги в API В статье разбираем практический маршрут на REST Assured 6.0.0 и JSON Schema: как закрыть структуру ответа одной проверкой, как сделать схему по-настоящему строгой и где в этой связке спрятан капкан, из-за которого схема с условной логикой выглядит рабочей, но не проверяет ничего. Читать статью Наш канал в Макс 🟪
2 157 просм.3 июля, 13:32
Java‑код скомпилировался — это ещё не значит, что он работает Есть целый класс Java‑багов, которые компилятор пропускает, а тесты на счастливом пути не ловят: код синтаксически корректен, но делает не то, что вы имели в виду. В статье разбираем пять таких самых частых ситуаций, которые встречаются у начинающих разработчиков. Читать статью Наш канал в Макс 🟪
2 187 просм.3 июля, 11:51
Paging vs. Segmentation Когда речь идет об управлении памятью, важно понимать различия между пагинацией и сегментацией. Эти два метода имеют разные подходы к разделению адресного пространства процесса и распределению физической памяти. 🟡 Пагинация: Пагинация разбивает виртуальную память на фиксированные блоки — страницы, а физическую память — на фреймы. Это позволяет системе избежать необходимости в непрерывном распределении памяти. Преимущества: - Устраняет внешнюю фрагментацию. - Облегчает работу с виртуальной памятью и перемещением страниц. - Управление памятью становится более простым и эффективным. 🟡Сегментация: Сегментация делит память на переменные по размеру сегменты, основываясь на логических частях программы (функции, объекты и массивы данных). Каждый сегмент может иметь свои ограничения и базовый адрес. Преимущества: - Обеспечивает логическое разделение кода и данных. - Упрощает защиту и обмен сегментами. - Поддерживает управление растущими структурами данных. Подписывайся на наш канал в Max 🟪
2 292 просм.3 июля, 01:16
Как работает CopyOnWriteArrayList под капотом? CopyOnWriteArrayList — это потокобезопасная реализация списка, оптимизированная для сценариев с частым чтением и редкими изменениями. Когда происходит изменение в CopyOnWriteArrayList, создаётся новая копия базового массива, в которую вносятся изменения. Таким образом, чтение и запись изолированы: до завершения модификации читающие потоки получают доступ к старому массиву, а запись завершает свою работу, не блокируя других потоков. 💡 Основные механизмы: 🟡 До завершения операции модификации все читающие потоки продолжают работать с текущей неизменяемой версией массива. 🟡 При вызове методов, изменяющих список (например, add, remove), создаётся новый массив на основе старого. Изменения применяются именно к новому массиву. 🟡 После завершения модификации ссылка на массив обновляется на новую версию. Теперь все новые операции чтения будут работать с обновлённой версией. ⚠️ Особенности: 🟢 Высокие накладные расходы на запись из-за создания копий. 🟢 Подходит для случаев, где чтение доминирует над изменением. 🟢 Не рекомендуется для сценариев с частыми обновлениями из-за увеличения потребления памяти. CopyOnWriteArrayList идеально подходит для кешей, обработчиков событий и других структур данных, где важна стабильность чтения при редких изменениях. Документация Подписывайся на наш канал в Max 🟪
2 226 просм.2 июля, 21:35
🔍 ТОП-5 ошибок на алгоритмической сессии Привет, на связи Таня Коровкина из ШОРТКАТ. Ментор по алгоритмам и backend-разработчик Каждый месяц тысячи разработчиков совершают одни и те же ошибки на алгоритмических интервью 🚩 И продолжают готовиться... не к тому. 6 июля(понедельник) в 19:00 (МСК) проведу вебинар и покажу, что на самом деле оценивает интервьюер и какие ошибки чаще всего приводят к отказу • дам практические советы, которые можно использовать уже на следующем собеседовании • расскажу про специфику российского BigTech 🤘 Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.
2 305 просм.2 июля, 17:34
Spring Boot: избегай FetchType.EAGER, если в этом нет реальной необходимости. ❌ Пометка связи как EAGER заставляет ORM загружать её при каждой загрузке сущности, независимо от того, вызываешь ли ты метод этой связи на самом деле. Подписывайся на наш канал в Max 🟪
2 308 просм.2 июля, 16:36

Посты загружаются автоматически из канала. Администрация сайта не несёт ответственности за их содержание и размещённые в них ссылки.