Курсы: Технопарк

Преподаватель: Виталий Чибриков

И так, вторая лекция. Делаем аутентификацию пользователя.

1. Задача

Сделать authentication
Упрощения:

  • Без записи в БД (все данные храняться в памяти)
  • Без интерфейсов (добавим интерфейсы, когда будем добавлять тестирование)
  • Потоками уравляет Jetty (система уже многопоточная)
  • “Потокоопасные” карты  (но потобезопасные контейнеры мы использовать не будем, т.к. вероятность коллизий крайне мала)

P.S. Для тех кто пришел сюда как и я с опытом интепретируемых языков (например PHP). Для меня было просто настоящим открытием, что данные можно хранить не в базе, а в памяти, т.к. я не привык работать с программой, которая работает дольше одного запроса от пользователя. Рекомендую почитать PHP создан, чтобы умирать

2. Generics (24:10)

Generic programming – тип перменной как параметр

  • Проверка типов при компиляциии
  • Меньше кода

Пример класса с параметром

Метод с параметром

Пример пользы Generics

Краткое пояснение:

  1. Мы создаем List Integer
  2. Добавляем туда 1 элемент (42)
  3. Используем статическую функцию getFirstValue
    1. getFirstValue, которая принимает просто List, без уточнений, и возвращает Object. Эта функция благополучно съедаем наш List
    2. Пытаемся скастить (преобразовать) Object (который на самом деле Integer) к String. И получаем Runtime error. Плохо то, что на этапе компиляции мы не знали про эту ошибку
  4. Используем функцию getFirstStringValue
    1. Сразу получаем ошибку компиляции, т.к. эта функция принимает только List из String

Нам php’шникам вообще не привыкать. Мы вообще не знаем, что такое компилятор. Это у джавистов тонкая душа )) Им некогда дебажить им надо кодить. Поэтому и кода на java больше.

[Не воспринимайте всерьез]

Еще пару примеро синтаксиса:

Generics существуют только ДО компиляции
В байткоде используется Object, я так понимаю, что потом кастится

Generics VS Inheritance

Inheritance (принцип “разновидность чего-то” (is a)
Generics (принцип “специализируется на” (of something)

Hack от Технопарка

3. Коллекции и карты (59:20)

Рассказ про то когда что использовать
Вообще не запоминается. Думаю здесь решает исключительно практика.
List
  • Список с очередностью
  • LinkedList – быстрое удаление и добавление элементов
  • ArrayList – быстрый доступ по индексу

Set

  • Без очередности
  • Без индекса
  • Быстрый поиск элемента

Queue

  • FIFO

4. HttpSession (01:15:50)

Ничего лишнего: