Skip to content

Repository files navigation

Билет №26

Инкапсуляция - это механизм сокрытия данных и объединения их с методами для работы с этими данными.

Наследование позволяет одному классу (подклассу) наследовать поля и методы другого класса (суперкласса). Множественного наследия нет. Пример:

class Animal {
    void makeSound() {
        System.out.println("Animal sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Bark");
    }
}

Полиморфизм — как обычно, свойство иметь один интерфейс и множество реализаций, необходимо отметить метод ключевым словом @Override. Вызов переопределенного метода во время выполнения, а не компиляции. При переопределении меняется логика метода, но никак не его аргументы или тип возвращаемого значения. Также к полиморфизму относится и перегрузка метода, позволяет обойтись одним названием для множества функций, из различий - аргументы или тип возвращаемого значения.

Ключевое слово final запрещает переопределение методов или наследование классов. 2. Redis — это нереляционная СУБД типа ключ-значение, работающее в памяти (in-memory). Применение:

  • Кэш
  • Очередь сообщений
  • Публикация/подписка (Pub/Sub)

Выполняет функцию хранилища и кеша для основной, центральной базы данных (Postgres или Mongo)

  • In-memory хранилище — все данные в оперативной памяти для максимальной скорости
  • Однопоточная модель — обрабатывает запросы последовательно (без race conditions)
  • Поддержка персистентности:
    • RDB (снимки состояния)
    • AOF (лог операций)
  • Сетевой протокол RESP — простой текстовый/бинарный формат запросов
  • Типы данных: строки, списки, хеши, множества, сортированные множества и др.
  • Модели развертывания:
    • Одиночный сервер
    • Master-Slave репликация
    • Cluster (шардирование)
  • Механизмы оптимизации:
    • Пайплайнинг команд
    • Мультиплексирование I/O (epoll/kqueue)
  • Доп. функции: Pub/Sub, транзакции, Lua-скрипты, TTL для ключей

MongoDB — это документоориентированная NoSQL база данных.

  • Хранит данные в формате BSON (бинарный JSON).
  • Аналог таблицы в SQL — это коллекция.
  • Аналог строки — это документ (обычно объект JSON).
  • Документы могут иметь разную структуру внутри одной коллекции. Пример документа:
{
  "_id": "123",
  "name": "Alice",
  "age": 30,
  "skills": ["Java", "MongoDB"]
}

MongoDB используется для хранения гибких, слабо структурированных данных, масштабируется горизонтально, имеет репликацию.

Запись в Redis

  • Клиент отправляет команду (например, SET key value) через TCP-соединение.
  • Redis записывает данные в память.
  • Возвращает клиенту подтверждение.

Чтение в Redis

  • Клиент отправляет команду (например, GET key).
  • Redis ищет ключ в памяти.
  • Возвращает значение клиенту.

Удаление в Redis

  • Команда DEL key удаляет ключ и его значение.
  • Также можно установить время жизни ключа с помощью EXPIRE key seconds или SET key value EX seconds.

Высокопроизводительность благодаря:

  • Хранение всех данных в оперативной памяти (RAM)
  • Однопоточная модель (без блокировок между потоками)
  • Оптимизированные структуры данных
  • Асинхронная персистенция

Огранизовать очередь сообщений в Redis можно через тип данных List:

// Producer
redisClient.rpush("taskQueue", "task1");
// Consumer
String task = redisClient.blpop(0, "taskQueue").get(1);

В Java с Redis, можно работать через библиотеку Jedis.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages