CodeGym
Promocja
Nauka
Kursy
Zadania
Ankiety & quizy
Gry
Pomoc
Harmonogram
Społeczność
Użytkownicy
Forum
Czat
Artykuły
Historie sukcesu
Aktywność
Opinie
Subskrypcje
Jasny motyw

Lekcje

  • Opinie
  • O nas
Start
Rozpocznij naukę
Rozpocznij naukę teraz
  • Mój postęp
  • Kursy
  • Mapa Questów
  • Lekcje
  • Problemy wydajności IO: wąskie gardła

    JAVA 25 SELF
    Poziom 41,Lekcja 0
    Ten wykład dotyczy tego, czym jest „wąskie gardło” w wejściu/wyjściu oraz jak je wykrywać i usuwać. Wyjaśnimy, dlaczego operacje dysku i sieci są znacznie wolniejsze niż RAM, jakie antywzorce występują najczęściej (czytanie bajt po bajcie przez read(), synchroniczne logi itp.), jak pomagają bufory ( BufferedInputStream, BufferedReader), profilery ( VisualVM, JProfiler) oraz pomiary czasu przez System. currentTimeMillis (). Przeprowadzimy praktyczny eksperyment z odczytem pliku "bigfile.txt", porównamy szybkość z buforem i bez, spojrzymy na wpływ SSD/HDD i sieci oraz wymienimy typowe błędy.
    Dostępne
  • Kanały NIO i ByteBuffer

    JAVA 25 SELF
    Poziom 41,Lekcja 1
    Praktyczne wprowadzenie do nieblokującego I/O Java NIO: omawiamy, czym kanały Channel i bufory ByteBuffer różnią się od strumieni InputStream/ OutputStream, jak czytać i pisać przy użyciu FileChannel, pozycjonować się poprzez position()/ truncate(), pracować z parametrami bufora ( capacity, limit, position, mark) oraz wybierać między allocate() i allocateDirect(). Pokazano operacje zero-copy transferTo()/ transferFrom() i typowe błędy, takie jak zapomniane flip() i niewłaściwy tryb bufora.
    Dostępne
  • Duże pliki: wzorce chunkingu

    JAVA 25 SELF
    Poziom 41,Lekcja 2
    Jak efektywnie przetwarzać pliki liczące dziesiątki gigabajtów bez OutOfMemoryError: dzielimy je na kawałki (chunks), czytamy według pozycji za pomocą RandomAccessFile i FileChannel, równoleglimy zadania z ExecutorService/ ForkJoinPool, a do prostego kopiowania używamy zero-copy przez transferTo/ transferFrom. Omawiamy dobór rozmiaru kawałka, granice wierszy, synchronizację wyników i typowe błędy.
    Dostępne
  • Praca z dużymi plikami: chunking, memory mapping

    JAVA 25 SELF
    Poziom 41,Lekcja 3
    Jak bezpiecznie i szybko przetwarzać ogromne pliki w Javie: czytamy partiami (chunking) przez strumienie i bufory, dostrajamy rozmiar bufora dla wydajności, używamy odwzorowania pliku w pamięci przez MappedByteBuffer i FileChannel dla ultraszybkiego dostępu losowego. Omówimy plusy i minusy memory mappingu, rekomendacje dotyczące zasobów i równoległości, a także typowe błędy (na przykład OutOfMemoryError, zapomniane deskryptory, nakładanie się chunków przy wyszukiwaniu).
    Dostępne
  • Archiwa/kompresja: java.util.zip

    JAVA 25 SELF
    Poziom 41,Lekcja 4
    Praktyczny wykład o pracy z archiwami i kompresją w Javie: poznajemy pakiet java.util.zip, strumienie ZipInputStream/ ZipOutputStream oraz klasę do dostępu swobodnego ZipFile, zarządzamy poziomami kompresji przez Deflater ( 0… 9, DEFAULT_COMPRESSION), pracujemy z GZIPInputStream/ GZIPOutputStream dla pojedynczych plików, pakujemy/rozpakowujemy katalogi za pomocą Files.walk i filtrowania przez PathMatcher ( "glob:**/*.txt"). Omówimy bezpieczeństwo: ochrona przed Zip Slip poprzez normalizację ścieżek i kontrolę wolumenu dla zip bomb, a także zbudujemy mini‑CLI „zip/unzip” z maskami.
    Dostępne
  • Wprowadzenie do serializacji obiektów: po co jest potrzebna

    JAVA 25 SELF
    Poziom 42,Lekcja 0
    Po co i jak „pakować” obiekty w Javie: zamieniamy je na strumień bajtów i z powrotem za pomocą ObjectOutputStream/ ObjectInputStream, zapisujemy stan między uruchomieniami, przesyłamy przez sieć i keszujemy wyniki. Omawiamy rolę interfejsu Serializable, niuanse związane ze słowem kluczowym transient i napisami w rodzaju "save.dat", dyskutujemy ryzyka bezpieczeństwa i zgodność wersji. Praktyka: mini‑zapis gry, wysyłanie wiadomości klient↔serwer i keszowanie obliczeń.
    Dostępne
  • Interfejs Serializable: podstawowe zasady

    JAVA 25 SELF
    Poziom 42,Lekcja 1
    Omawiamy podstawy serializacji w Javie: interfejs znacznikowy java.io.Serializable, jak oznaczyć klasę poprzez implements Serializable, wymagania dotyczące pól ( static, transient), krok po kroku przykłady zapisu i odczytu obiektów z ObjectOutputStream/ ObjectInputStream, co dzieje się „pod maską” przy wywołaniach writeObject/ readObject, a także typowe błędy (nieserializowalne pola, klasy wewnętrzne, zachowanie pól static oraz wersjonowanie klasy za pomocą serialVersionUID).
    Dostępne
  • Standardowe formaty serializacji: binarny, tekstowy

    JAVA 25 SELF
    Poziom 42,Lekcja 2
    W wykładzie porównamy binarną serializację Java za pomocą klas ObjectOutputStream i ObjectInputStream z formatami tekstowymi ( JSON, XML): zasada działania, szybkość i zwartość, zgodność wersji oraz bezpieczeństwo. Omówimy zalety i ograniczenia, pokażemy praktykę z Jackson (w tym zależność Maven) i podamy wskazówki, kiedy co wybrać, a także typowe błędy.
    Dostępne
  • ObjectOutputStream, ObjectInputStream: praca ze strumieniami

    JAVA 25 SELF
    Poziom 42,Lekcja 3
    W wykładzie omawiamy, jak serializować i deserializować obiekty w Javie za pomocą pary strumieni ObjectOutputStream i ObjectInputStream: czym jest interfejs znacznikowy java.io.Serializable, jak działają metody writeObject() i readObject(), dlaczego pola static i transient nie trafiają do strumienia, jakie wyjątki mogą wystąpić ( NotSerializableException, InvalidClassException) oraz na co wpływa serialVersionUID. W praktyce serializujemy jeden obiekt i listę obiektów do pliku oraz omawiamy typowe błędy.
    Dostępne
  • Serializacja kolekcji: List, Map, Set

    JAVA 25 SELF
    Poziom 42,Lekcja 4
    Praktyczny przewodnik po serializacji kolekcji w Javie: jak zapisywać i odtwarzać List, Map, Set przez ObjectOutputStream/ ObjectInputStream; dlaczego większość kolekcji już implementuje Serializable; wymagania wobec elementów; zachowanie kolejności w HashSet/ HashMap; praca z kolekcjami zagnieżdżonymi i pustymi; pułapki ( InvalidClassException, serialVersionUID, transient/ static). Kończymy pełnym przykładem „wirtualnej biblioteki”.
    Dostępne
  • Kontrola nad procesem serializacji: writeObject, readObject

    JAVA 25 SELF
    Poziom 43,Lekcja 0
    Jak przechwycić standardową serializację i wziąć proces pod kontrolę: używamy prywatnych metod writeObject/ readObject o ścisłych sygnaturach ( private void writeObject( ObjectOutputStream out) throws IOException), wywołujemy defaultWriteObject()/ defaultReadObject(), wyłączamy pola za pomocą transient, dodajemy sumy kontrolne i logi, nie zapominamy o serialVersionUID i zgodności wersji. Omawiamy typowe błędy, pracę z ObjectOutputStream/ ObjectInputStream oraz praktyczne przykłady.
    Dostępne
  • pola transient, serialVersionUID

    JAVA 25 SELF
    Poziom 43,Lekcja 1
    Praktyczny przewodnik po serializacji w Javie: kiedy i jak używać transient, aby wykluczyć pola ze strumienia; co dzieje się przy deserializacji (wartości domyślne); jak odtworzyć stan w metodzie readObject; czym jest serialVersionUID, jak go deklarować ( private static final long serialVersionUID = 1L), kiedy go zmieniać i dlaczego lepiej ustawiać go jawnie. Pokazano działające przykłady, ryzykowne scenariusze i typowe błędy.
    Dostępne
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 30
Nauka
  • Rejestracja
  • Kurs Java
  • Pomoc w zadaniach
  • Cennik
  • Składnia Javy
Społeczność
  • Użytkownicy
  • Artykuły
  • Forum
  • Czat
  • Historie sukcesu
  • Aktywność
  • Program partnerski
Firma
  • O nas
  • Kontakt
  • Opinie
  • Dla mediów
  • CodeGym dla EDU
  • FAQ
  • Wsparcie
CodeGymCodeGym to kurs online do nauki programowania w Javie od podstaw. Kurs idealny do opanowania Javy dla początkujących. Zawiera 1200+ zadań z natychmiastową weryfikacją oraz niezbędny zakres teorii podstaw Javy. Aby pomóc Ci w nauce, wprowadziliśmy zestaw funkcji motywacyjnych: quizy, projekty programistyczne, materiały o efektywnej nauce i poradnik kariery dla programisty Java.
Obserwuj nas
Język interfejsu
English Deutsch Español हिन्दी Français Português
Polski
বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"Programiści są tworzeni, nie rodzą się" © 2026 CodeGym
MastercardVisa
"Programiści są tworzeni, nie rodzą się" © 2026 CodeGym