JavaRush
Акція
Університет
Java FullStack
Python FullStack
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
Українська
Програмістами не народжуються © 2025 JavaRush
MastercardVisa
Програмістами не народжуються © 2025 JavaRush