Клон Redis на Java с нуля | Полный проект
Добро пожаловать в полный гайд по созданию Redis с нуля на Java!
В этом видео ты узнаешь, как работают базовые команды Redis, реализуешь репликацию, персистентность, стримы и транзакции — всё своими руками, без фреймворков и тяжёлых библиотек.
Погружаемся в систему, которую используют миллионы — на чистом Java-коде!
🌐 🗣 СМОТРЕТЬ VKVIDEO
Подписывайся на наш канал в Max🟪
Добро пожаловать в полный гайд по созданию Redis с нуля на Java!
В этом видео ты узнаешь, как работают базовые команды Redis, реализуешь репликацию, персистентность, стримы и транзакции — всё своими руками, без фреймворков и тяжёлых библиотек.
Погружаемся в систему, которую используют миллионы — на чистом Java-коде!
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍7❤4
Интерфейс Supplier
Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.
Метод Supplier:
T get();
Где T — это тип возвращаемого значения.
Supplier может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.
Подписывайся на наш канал в Max🟪
Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.
Метод Supplier:
T get();
Где T — это тип возвращаемого значения.
Supplier может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥5
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4❤3
🧩 Борьба с блокировками в PostgreSQL: как достичь высокой параллельности при большой нагрузке 🚀
🔥 2 декабря в 20:00 мск — открытый урок в OTUS.
📌 На вебинаре рассмотрим:
— Почему возникают блокировки и как они влияют на скорость работы базы данных
— Типы блокировок в PostgreSQL и их особенности на уровне транзакций и строк
— Как находить узкие места, анализировать ожидания и устранять deadlock-и
— Методы оптимизации запросов и транзакций для повышения параллельности
— Архитектурные приёмы и практики проектирования систем с высокой конкурентностью
🎓 После урока вы:
— Поймёте, как устроен механизм блокировок и научитесь управлять ими осознанно
— Научитесь диагностировать и устранять конфликты между транзакциями
— Получите набор практических решений по оптимизации PostgreSQL под нагрузкой
— Сможете спроектировать архитектуру, обеспечивающую высокую стабильность и масштабируемость
👉 Регистрация https://vk.cc/cRLjY4
Бесплатное занятие приурочено к старту курса Highload Architect, на котором вы освоите подходы к построению производительных архитектур, готовых к тысячам запросов в секунду.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔥 2 декабря в 20:00 мск — открытый урок в OTUS.
📌 На вебинаре рассмотрим:
— Почему возникают блокировки и как они влияют на скорость работы базы данных
— Типы блокировок в PostgreSQL и их особенности на уровне транзакций и строк
— Как находить узкие места, анализировать ожидания и устранять deadlock-и
— Методы оптимизации запросов и транзакций для повышения параллельности
— Архитектурные приёмы и практики проектирования систем с высокой конкурентностью
🎓 После урока вы:
— Поймёте, как устроен механизм блокировок и научитесь управлять ими осознанно
— Научитесь диагностировать и устранять конфликты между транзакциями
— Получите набор практических решений по оптимизации PostgreSQL под нагрузкой
— Сможете спроектировать архитектуру, обеспечивающую высокую стабильность и масштабируемость
👉 Регистрация https://vk.cc/cRLjY4
Бесплатное занятие приурочено к старту курса Highload Architect, на котором вы освоите подходы к построению производительных архитектур, готовых к тысячам запросов в секунду.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❤3👍3🔥3
В JUnit 5 можно смело использовать package-private классы и методы в тестах.
Это помогает держать тестовую логику ближе к коду, который вы проверяете, и не засорять публичный API.
Меньше public — больше порядка в проекте.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤🔥3🔥3😁1🍾1
Когда IDE открыта часами, вкладок — десятки, а вы пытаетесь вспомнить, "где же я правил этот метод", эта комбинация спасает от паники.
— Мгновенно возвращает курсор к последнему месту, где вы редактировали код
— Работает даже после навигации по проекту, переходов в другие файлы или классы
— Поддерживает “историю изменений” — можно нажимать несколько раз, чтобы двигаться назад по правкам
— Экономит время при переключениях между файлами
— Полезно при дебаге или анализе кода, когда IDE уводит вас по ссылкам вглубь проекта
— Убирает хаос при работе с большим количеством вкладок
— Нажмите Ctrl+Shift+Backspace (Windows/Linux) или ⌘+Shift+Backspace (macOS)
— IDEA вернёт вас туда, где вы последний раз редактировали код
— Повторите комбинацию несколько раз — и вы пройдёте “назад по следам” своих правок
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤10🔥10
Блиц-опрос Scala-разработчиков — самые полезные и бесполезные вещи в работе
Смотрите подкаст «Криптонит говорит» о Scala! В нём айтишники обсуждают:
🔹Scala, Java и их перспективы;
🔹как успешно пройти собеседование в айти;
🔹что нужно делать, чтобы стать хорошим программистом;
🔹и когда нейросети смогут делать code review на уровне старшего разработчика и многое другое.
📺 VK Видео
📺 YouTube
📺 Rutube
💬 Подкаст в телеграме
🎵 Яндекс.Музыка
Смотрите и подписывайтесь на подкаст «Криптонит говорит» — обсуждаем айти, искусственный интеллект, языки программирования и криптографию.
Реклама АО НПК «Криптонит» ИНН 9701115253 Erid: 2VtzqvPXR6h
Смотрите подкаст «Криптонит говорит» о Scala! В нём айтишники обсуждают:
🔹Scala, Java и их перспективы;
🔹как успешно пройти собеседование в айти;
🔹что нужно делать, чтобы стать хорошим программистом;
🔹и когда нейросети смогут делать code review на уровне старшего разработчика и многое другое.
📺 VK Видео
📺 YouTube
📺 Rutube
💬 Подкаст в телеграме
🎵 Яндекс.Музыка
Смотрите и подписывайтесь на подкаст «Криптонит говорит» — обсуждаем айти, искусственный интеллект, языки программирования и криптографию.
Реклама АО НПК «Криптонит» ИНН 9701115253 Erid: 2VtzqvPXR6h
❤3👍2🔥2
Если нужно замерить время выполнения кода с наносекундной точностью — используйте связку Instant + Duration из java.time.
✔️ Instant — фиксированная точка времени в UTC.
✔️ Duration — разница между двумя Instant (секунды, миллисекунды, наносекунды).
Пример:
Instant start = Instant.now();
// ваш код
Instant end = Instant.now();
Duration elapsed = Duration.between(start, end);
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤8🔥7
Когда-то интернет был другим. Возможно, более медленным и нестабильным, но куда более камерным и очаровательным. А его недостатки старались исправить разработчики-энтузиасты, которым было не всё равно.
Этим постом мы запускаем спецпроект «Наши любимые петы». В следующие недели мы продолжим рассказывать про личные проекты яндексоидов. Оставайтесь на связи!
Подписывайтесь:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2
Когда проект живёт дольше полугода — ручное обновление схемы БД превращается в хаос.
Flyway решает эту проблему: управляет версионированием схемы и миграциями через SQL-скрипты прямо из вашего приложения.
Для настройки:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
ИЛИ
implementation("org.flywaydb:flyway-core")
Также добавляет драйвер для вашей БД.
По умолчанию Flyway ищет скрипты в:
src/main/resources/db/migration/
Пример:
db/migration/
├─ V1__init_schema.sql
├─ V2__add_users_table.sql
└─ V3__add_index_email.sql
Имена файлов важны — Flyway сортирует их по версии (V1, V2, ...).
— V1__init_schema.sql
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
— V2__add_users_table.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT now()
);
spring:
datasource:
url: jdbc:postgresql://localhost:5432/app
username: app
password: secret
flyway:
enabled: true
baseline-on-migrate: true
locations: classpath:db/migration
Flyway выполнит все миграции, которых ещё нет в таблице flyway_schema_history.
./mvnw flyway:migrate
или просто запустите Spring Boot — миграции применятся автоматически.
— Используйте flyway:validate перед деплоем.
— Добавляйте новые SQL-файлы при изменении схемы.
— Не редактируйте старые версии (они уже зафиксированы).
— Используйте R__-скрипты (repeatable migrations) для справочников, триггеров, процедур.
— Версионируйте миграции в Git вместе с кодом.
— Проверяйте миграции на чистой базе перед мержем.
— Совмещайте с Testcontainers для автоматической проверки миграций в CI.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥4☃1
🏗 Объектная модель без боли: как превратить хаос требований в стройную архитектуру
📅 11 декабря | 20:00 мск | бесплатно
🎓 На вебинаре разберём:
– Как анализировать бизнес-требования и выделять ключевые сущности
– Как находить связи между объектами и формировать целостную модель системы
– Как использовать UML-диаграммы для визуализации архитектуры
– Типичные ошибки при анализе предметной области и как их избежать
– Практический кейс: создаём объектную модель с нуля
💡 Кому будет полезно:
– Backend и FullStack разработчикам, желающим понимать архитектуру на уровне сущностей и связей
– Системным аналитикам, формализующим требования и сценарии взаимодействия
– Архитекторам, строящим масштабируемые и устойчивые модели систем
– Начинающим инженерам, осваивающим объектно-ориентированный анализ
✅ После вебинара вы сможете:
– Анализировать предметную область и выделять главные сущности
– Строить понятные и расширяемые объектные модели
– Использовать UML-диаграммы для визуализации архитектуры
– Превращать сложные требования в структурированные проектные решения
💥 Регистрируйтесь и научитесь мыслить как архитектор: https://vk.cc/cRTBCg
Занятие приурочено к старту курса «Архитектура и шаблоны проектирования», где вы освоите DDD, CQRS, Event Storming и научитесь превращать требования в надёжную архитектуру, готовую к росту продукта и команды. 🚀
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📅 11 декабря | 20:00 мск | бесплатно
🎓 На вебинаре разберём:
– Как анализировать бизнес-требования и выделять ключевые сущности
– Как находить связи между объектами и формировать целостную модель системы
– Как использовать UML-диаграммы для визуализации архитектуры
– Типичные ошибки при анализе предметной области и как их избежать
– Практический кейс: создаём объектную модель с нуля
💡 Кому будет полезно:
– Backend и FullStack разработчикам, желающим понимать архитектуру на уровне сущностей и связей
– Системным аналитикам, формализующим требования и сценарии взаимодействия
– Архитекторам, строящим масштабируемые и устойчивые модели систем
– Начинающим инженерам, осваивающим объектно-ориентированный анализ
✅ После вебинара вы сможете:
– Анализировать предметную область и выделять главные сущности
– Строить понятные и расширяемые объектные модели
– Использовать UML-диаграммы для визуализации архитектуры
– Превращать сложные требования в структурированные проектные решения
💥 Регистрируйтесь и научитесь мыслить как архитектор: https://vk.cc/cRTBCg
Занятие приурочено к старту курса «Архитектура и шаблоны проектирования», где вы освоите DDD, CQRS, Event Storming и научитесь превращать требования в надёжную архитектуру, готовую к росту продукта и команды. 🚀
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍3🔥3❤2
Хитрый совет по Java: используй скрытую возможность
ClassLoader для безопасной подгрузки конфигураций и плагинов.Вместо чтения файлов напрямую через
File, загружай ресурсы из classpath — так ты избежишь проблем с путями, правами и разными окружениями.
import java.io.*;
import java.nio.charset.*;
public class ConfigLoader {
public static String load(String name) throws Exception {
try (InputStream in =
ConfigLoader.class.getClassLoader().getResourceAsStream(name)) {
if (in == null) return null;
return new String(in.readAllBytes(), StandardCharsets.UTF_8);
}
}
public static void main(String[] args) throws Exception {
System.out.println(load("config/app.conf"));
}
}
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🔥4
3 декабря(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🔥3
В 2025 году Java продолжает развиваться, и вот на что стоит обратить внимание в учёбе. Роадмапа на картинке, ниже ключевые моменты.
Фокус на record классы (Java 16+), абстракция и полиформизм.
Основной тренд — использование Streams API (Java 8+) и неизменяемых коллекций (Java 9+).
Project Loom и виртуальные потоки (Java 21) упростят многозадачность и повысит производительность.
Расширение использования лямбда-выражений и функциональных интерфейсов.
Активное использование Spring Boot, Spring Cloud, Swagger/OpenAPI для документации.
JUnit 5, Mockito, Testcontainers и инструменты сборки Maven и Gradle для автоматизации.
Знания JDBC, Hibernate, JPA для создания надежных и масштабируемых систем.
Подписывайся на наш канал в Max
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍10🔥5
UI и API тестирование с java и playwright - тема бесплатного вебинара от OTUS.
Регистрация: https://vk.cc/cRW5WM
Фреймворк playwright изо дня в день набирает популярность на рынке и многие команды начинают задумываться о его внедрении для написания UI и API автотестов. На занятии поговорим о самом фреймворке и почему он набирает популярность и напишем пару UI и API автотестов.
После занятия ты:
- поймёшь, как работает Playwright и чем он удобен для тестировщика;
- сможешь написать и запустить простые UI и API автотесты;
- получишь представление, как внедрять Playwright в реальный проект.
Регистрация и подробности о курсе: https://vk.cc/cRW5WM
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Регистрация: https://vk.cc/cRW5WM
Фреймворк playwright изо дня в день набирает популярность на рынке и многие команды начинают задумываться о его внедрении для написания UI и API автотестов. На занятии поговорим о самом фреймворке и почему он набирает популярность и напишем пару UI и API автотестов.
После занятия ты:
- поймёшь, как работает Playwright и чем он удобен для тестировщика;
- сможешь написать и запустить простые UI и API автотесты;
- получишь представление, как внедрять Playwright в реальный проект.
Регистрация и подробности о курсе: https://vk.cc/cRW5WM
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❤3🔥3👍2