JavaRush
Акція
Університет
Java FullStack
Python FullStack
AI Native Developer
new
Навчання
Курси
Задачі
Опитування
Ігри
Допомога
Графік стусанів
Стажування
Спільнота
Користувачі
Форум
Чат
Статті
Історії успіху
Дії
Відгуки
Передплати
Світла тема

Лекції

  • Відгуки
  • Про нас
  • CS50
Почати
Почати навчання
Почати навчання
  • Моє навчання
  • Курси
  • Університет
  • Карта квестів
  • Лекції
  • Проблеми продуктивності IO: вузькі місця

    JAVA 25 SELF
    41 рівень, 0 лекція
    Ця лекція про те, що таке «вузьке місце» у ввід‑виводі та як його виявляти й усувати. Розберемо, чому операції диска й мережі значно повільніші за RAM, які антипатерни часто трапляються (читання по одному байту через read(), синхронне логування тощо), як допомагають буфери ( BufferedInputStream, BufferedReader), профайлери ( VisualVM, JProfiler) і вимірювання часу через System. currentTimeMillis (). Проведемо практичний експеримент із читанням файлу "bigfile.txt", порівняємо швидкість із буфером і без, подивимося на вплив SSD/HDD і мережі та перелічимо типові помилки.
    Відкрита
  • Канали NIO та ByteBuffer

    JAVA 25 SELF
    41 рівень, 1 лекція
    Практичний вступ до неблокувального введення-виведення Java NIO: розбираємося, чим канали Channel і буфери ByteBuffer відрізняються від потоків InputStream/ OutputStream, як читати й записувати за допомогою FileChannel, позиціонуватися через position()/ truncate(), працювати з параметрами буфера ( capacity, limit, position, mark) і обирати між allocate() та allocateDirect(). Показано операції zero-copy transferTo()/ transferFrom() і типові помилки на кшталт забутого flip() та неправильного режиму буфера.
    Відкрита
  • Великі файли: патерни chunking

    JAVA 25 SELF
    41 рівень, 2 лекція
    Як ефективно обробляти файли розміром у десятки гігабайтів без OutOfMemoryError: розбиваємо на шматки (chunks), читаємо за позиціями через RandomAccessFile і FileChannel, розпаралелюємо завдання за допомогою ExecutorService/ ForkJoinPool, а для простого копіювання використовуємо zero-copy через transferTo/ transferFrom. Розбираємо вибір розміру шматка, межі рядків, синхронізацію результатів і типові помилки.
    Відкрита
  • Робота з великими файлами: chunking, memory mapping

    JAVA 25 SELF
    41 рівень, 3 лекція
    Як безпечно й швидко обробляти величезні файли в Java: читаємо частинами (chunking) через потоки та буфери, налаштовуємо розмір буфера для продуктивності, використовуємо відображення файлу в пам’ять через MappedByteBuffer і FileChannel для надшвидкого довільного доступу. Розберемо плюси й мінуси memory mapping, рекомендації щодо ресурсів і паралельності, а також типові помилки (наприклад, OutOfMemoryError, забуті дескриптори, перекриття чанків під час пошуку).
    Відкрита
  • Архіви/стиснення: java.util.zip

    JAVA 25 SELF
    41 рівень, 4 лекція
    Практична лекція з роботи з архівами та стисненням у Java: знайомимося з пакетом java.util.zip, потоками ZipInputStream/ ZipOutputStream і класом довільного доступу ZipFile, керуємо рівнями стиснення через Deflater ( 0– 9, DEFAULT_COMPRESSION), працюємо з GZIPInputStream/ GZIPOutputStream для одиночних файлів, пакуємо/розпаковуємо директорії за допомогою Files.walk і фільтрації за PathMatcher ( "glob:**/*.txt"). Обговоримо безпеку: захист від Zip Slip через нормалізацію шляху та контроль обсягу для Zip Bomb, а також зберемо міні-CLI «zip/unzip» з масками.
    Відкрита
  • Вступ до серіалізації об’єктів: навіщо вона потрібна

    JAVA 25 SELF
    42 рівень, 0 лекція
    Навіщо і як «запаковувати» об’єкти в Java: перетворюємо їх на потік байтів і назад за допомогою ObjectOutputStream/ ObjectInputStream, зберігаємо стан між запусками, передаємо мережею та кешуємо результати. Розбираємо роль інтерфейсу Serializable, нюанси з ключовим словом transient і рядками на кшталт "save.dat", обговорюємо ризики безпеки та сумісність версій. Практика: міні‑сейв гри, надсилання повідомлень клієнт↔сервер і кешування обчислень.
    Відкрита
  • Інтерфейс Serializable: базові принципи

    JAVA 25 SELF
    42 рівень, 1 лекція
    Розбираємо основи серіалізації в Java: маркерний інтерфейс java.io.Serializable, як позначити клас через implements Serializable, вимоги до полів ( static, transient), покрокові приклади запису та читання об’єктів за допомогою ObjectOutputStream/ ObjectInputStream, що відбувається «під капотом» під час викликів writeObject/ readObject, а також типові помилки (несеріалізовні поля, внутрішні класи, поведінка static-полів і версії класу через serialVersionUID).
    Відкрита
  • Стандартні формати серіалізації: бінарний, текстовий

    JAVA 25 SELF
    42 рівень, 2 лекція
    У лекції порівняємо бінарну серіалізацію Java за допомогою класів ObjectOutputStream і ObjectInputStream із текстовими форматами ( JSON, XML): принцип роботи, швидкість і компактність, сумісність версій і безпека. Розберемо переваги та обмеження, покажемо практику з Jackson (включно із залежністю для Maven) і надамо поради, коли що обирати, а також типові помилки.
    Відкрита
  • ObjectOutputStream, ObjectInputStream: робота з потоками

    JAVA 25 SELF
    42 рівень, 3 лекція
    У лекції розбираємо, як серіалізувати та десеріалізувати об’єкти в Java за допомогою парних потоків ObjectOutputStream і ObjectInputStream: що таке маркерний інтерфейс java.io.Serializable, як працюють методи writeObject() і readObject(), чому поля static і transient не потрапляють у потік, які винятки трапляються ( NotSerializableException, InvalidClassException), і на що впливає serialVersionUID. На практиці серіалізуємо один об’єкт і список об’єктів у файл та розбираємо типові помилки.
    Відкрита
  • Серіалізація колекцій: List, Map, Set

    JAVA 25 SELF
    42 рівень, 4 лекція
    Практичний посібник із серіалізації колекцій у Java: як зберігати та відновлювати List, Map, Set через ObjectOutputStream/ ObjectInputStream; чому більшість колекцій вже реалізують Serializable; вимоги до елементів; поведінка порядку в HashSet/ HashMap; робота з вкладеними й порожніми колекціями; підводні камені ( InvalidClassException, serialVersionUID, transient/ static). Завершимо повноцінним прикладом «віртуальної бібліотеки».
    Відкрита
  • Керування процесом серіалізації: writeObject, readObject

    JAVA 25 SELF
    43 рівень, 0 лекція
    Як перехопити стандартну серіалізацію і взяти процес під контроль: використовуємо приватні методи writeObject/ readObject із суворими сигнатурами ( private void writeObject( ObjectOutputStream out) throws IOException), викликаємо defaultWriteObject()/ defaultReadObject(), виключаємо з серіалізації поля за допомогою transient, додаємо контрольні суми та логи, не забуваємо про serialVersionUID і сумісність версій. Розглядаємо типові помилки, роботу з ObjectOutputStream/ ObjectInputStream і практичні приклади.
    Відкрита
  • transient-поля, serialVersionUID

    JAVA 25 SELF
    43 рівень, 1 лекція
    Практичний посібник із серіалізації в Java: коли й як використовувати transient для виключення полів із потоку, що відбувається під час десеріалізації (значення за замовчуванням), як відновити стан у методі readObject; що таке serialVersionUID, як його оголошувати ( private static final long serialVersionUID = 1L), коли змінювати і чому краще визначати його явно. Наведено робочі приклади, ризиковані сценарії та типові помилки.
    Відкрита
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 57
Навчання
  • Курси програмування
  • Реєстрація
  • Курс Java
  • Допомога із задачами
  • Ціни
Спільнота
  • Користувачі
  • Статті
  • Форум
  • Чат
  • Історії успіху
  • Дії
Компанія
  • Про нас
  • Контакти
  • Відгуки
  • FAQ
  • Підтримка
JavaRush JavaRush — це інтерактивний онлайн-курс вивчення Java-програмування з нуля. Він містить 1200 практичних задач із перевіркою розв'язання одним клацанням, необхідний мінімум знань із теоретичних основ Java, а ще мотивувальні «фішки», які допоможуть пройти курс до кінця: ігри, опитування, цікаві проєкти й статті про ефективне навчання та кар'єру Java‑девелопера.
Підписуйтесь
Мова інтерфейсу
Русский English
Українська
Програмістами не народжуються © 2026 JavaRush
MastercardVisa
Програмістами не народжуються © 2026 JavaRush