CodeGym
Promozione
Learning
Corsi
Tasks
Surveys & Quizzes
Games
Help
Schedule
Community
Users
Forum
Chat
Articles
Success stories
Activity
Reviews
Subscriptions
Tema chiaro

Lezioni

  • Recensioni
  • Chi siamo
Inizia
Inizia a imparare
Start learning now
  • I miei progressi
  • Corsi
  • Mappa Quest
  • Lezioni
  • Problemi di prestazioni di IO: colli di bottiglia

    JAVA 25 SELF
    Livello 41,Lezione 0
    Questa lezione spiega che cos’è un «collo di bottiglia» nell’input/output e come individuarlo ed eliminarlo. Vedremo perché le operazioni su disco e rete sono significativamente più lente della RAM, quali anti‑pattern si incontrano spesso (lettura di un byte alla volta tramite read(), log sincroni ecc.), come aiutano i buffer ( BufferedInputStream, BufferedReader), i profiler ( VisualVM, JProfiler) e le misurazioni del tempo tramite System. currentTimeMillis (). Faremo un esperimento pratico con la lettura del file "bigfile.txt", confronteremo la velocità con e senza buffer, vedremo l’impatto di SSD/HDD e della rete ed elencheremo gli errori tipici.
    Disponibile
  • NIO Channels e ByteBuffer

    JAVA 25 SELF
    Livello 41,Lezione 1
    Introduzione pratica all’I/O non bloccante di Java NIO: vediamo in cosa i canali Channel e i buffer ByteBuffer differiscono dagli stream InputStream/ OutputStream, come leggere e scrivere con FileChannel, come posizionarsi tramite position()/ truncate(), come lavorare con i parametri del buffer ( capacity, limit, position, mark) e come scegliere tra allocate() e allocateDirect(). Sono presentate le operazioni zero-copy transferTo()/ transferFrom() e gli errori tipici come dimenticare flip() o impostare una modalità del buffer errata.
    Disponibile
  • File grandi: pattern di chunking

    JAVA 25 SELF
    Livello 41,Lezione 2
    Come elaborare in modo efficiente file di decine di gigabyte senza OutOfMemoryError: suddividiamo in pezzi (chunk), leggiamo per posizioni tramite RandomAccessFile e FileChannel, parallelizziamo i task con ExecutorService/ ForkJoinPool, e per la semplice copia usiamo lo zero‑copy tramite transferTo/ transferFrom. Analizziamo la scelta della dimensione del chunk, i confini delle righe, la sincronizzazione dei risultati e gli errori tipici.
    Disponibile
  • Lavorare con file di grandi dimensioni: chunking, memory mapping

    JAVA 25 SELF
    Livello 41,Lezione 3
    Come elaborare in modo sicuro e veloce file enormi in Java: leggere a porzioni (chunking) tramite stream e buffer, impostare la dimensione del buffer per le prestazioni, usare la mappatura del file in memoria tramite MappedByteBuffer e FileChannel per un accesso casuale ultra-rapido. Vedremo pro e contro del memory mapping, raccomandazioni su risorse e parallelismo, nonché gli errori tipici (ad esempio, OutOfMemoryError, descrittori lasciati aperti, sovrapposizione dei chunk durante la ricerca).
    Disponibile
  • Archivi/compressione: java.util.zip

    JAVA 25 SELF
    Livello 41,Lezione 4
    Lezione pratica sul lavoro con archivi e compressione in Java: conosciamo il pacchetto java.util.zip, gli stream ZipInputStream/ ZipOutputStream e la classe di accesso casuale ZipFile, gestiamo i livelli di compressione tramite Deflater ( 0… 9, DEFAULT_COMPRESSION), lavoriamo con GZIPInputStream/ GZIPOutputStream per file singoli, impacchettiamo/estraiamo directory con Files.walk e filtriamo con PathMatcher ( "glob:**/*.txt"). Discuteremo la sicurezza: protezione da Zip Slip tramite normalizzazione del percorso e controllo del volume per zip bomb, e costruiremo anche una mini-CLI «zip/unzip» con maschere.
    Disponibile
  • Introduzione alla serializzazione degli oggetti: a cosa serve

    JAVA 25 SELF
    Livello 42,Lezione 0
    Perché e come «impacchettare» gli oggetti in Java: li trasformiamo in un flusso di byte e viceversa con ObjectOutputStream/ ObjectInputStream, salviamo lo stato tra le esecuzioni, li inviamo in rete e mettiamo in cache i risultati. Analizziamo il ruolo dell’interfaccia Serializable, le particolarità della parola chiave transient e stringhe come "save.dat", discutiamo i rischi per la sicurezza e la compatibilità tra versioni. Pratica: mini‑salvataggio di un gioco, invio di messaggi client↔server e caching dei calcoli.
    Disponibile
  • Interfaccia Serializable: principi di base

    JAVA 25 SELF
    Livello 42,Lezione 1
    Analizziamo le basi della serializzazione in Java: l'interfaccia marker java.io.Serializable, come contrassegnare una classe tramite implements Serializable, i requisiti per i campi ( static, transient), esempi passo passo di scrittura e lettura degli oggetti con ObjectOutputStream/ ObjectInputStream, cosa succede «sotto il cofano» quando si invocano writeObject/ readObject, nonché gli errori tipici (campi non serializzabili, classi interne, comportamento dei static campi e la versione della classe tramite serialVersionUID).
    Disponibile
  • Formati standard di serializzazione: binario, testuale

    JAVA 25 SELF
    Livello 42,Lezione 2
    In questa lezione confronteremo la serializzazione binaria di Java tramite le classi ObjectOutputStream e ObjectInputStream con i formati testuali ( JSON, XML): principio di funzionamento, velocità e compattezza, compatibilità tra versioni e sicurezza. Analizzeremo vantaggi e limiti, mostreremo la pratica con Jackson (inclusa la dipendenza Maven) e daremo consigli su quando scegliere l’uno o l’altro, oltre agli errori tipici.
    Disponibile
  • ObjectOutputStream, ObjectInputStream: lavorare con i flussi

    JAVA 25 SELF
    Livello 42,Lezione 3
    In questa lezione analizziamo come serializzare e deserializzare oggetti in Java con la coppia di flussi ObjectOutputStream e ObjectInputStream: che cos'è l'interfaccia marker java.io.Serializable, come funzionano i metodi writeObject() e readObject(), perché i campi static e transient non finiscono nel flusso, quali eccezioni si incontrano ( NotSerializableException, InvalidClassException) e su cosa influisce serialVersionUID. In pratica serializziamo un oggetto e un elenco di oggetti in un file e analizziamo gli errori tipici.
    Disponibile
  • Serializzazione delle collezioni: List, Map, Set

    JAVA 25 SELF
    Livello 42,Lezione 4
    Guida pratica alla serializzazione delle collezioni in Java: come salvare e ripristinare List, Map, Set tramite ObjectOutputStream/ ObjectInputStream; perché la maggior parte delle collezioni implementa già Serializable; requisiti per gli elementi; comportamento dell’ordine in HashSet/ HashMap; lavoro con collezioni annidate e vuote; insidie ( InvalidClassException, serialVersionUID, transient/ static). Concludiamo con un esempio completo di «biblioteca virtuale».
    Disponibile
  • Controllo del processo di serializzazione: writeObject, readObject

    JAVA 25 SELF
    Livello 43,Lezione 0
    Come intercettare la serializzazione standard e prendere il controllo del processo: usiamo i metodi privati writeObject/ readObject con firme rigorose ( private void writeObject( ObjectOutputStream out) throws IOException), chiamiamo defaultWriteObject()/ defaultReadObject(), escludiamo i campi tramite transient, aggiungiamo checksum e log, senza dimenticare serialVersionUID e la compatibilità tra versioni. Analizziamo errori tipici, l'uso di ObjectOutputStream/ ObjectInputStream ed esempi pratici.
    Disponibile
  • campi transient, serialVersionUID

    JAVA 25 SELF
    Livello 43,Lezione 1
    Guida pratica alla serializzazione in Java: quando e come usare transient per escludere campi dallo stream, cosa accade durante la deserializzazione (valori predefiniti), come ripristinare lo stato nel metodo readObject; cosa è serialVersionUID, come dichiararlo ( private static final long serialVersionUID = 1L), quando cambiarlo e perché è meglio impostarlo esplicitamente. Sono mostrati esempi funzionanti, scenari rischiosi ed errori tipici.
    Disponibile
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 30
Learn
  • Registration
  • Java Course
  • Help with Tasks
  • Pricing
  • Java Syntax
Community
  • Users
  • Articles
  • Forum
  • Chat
  • Success Stories
  • Activity
  • Affiliate Program
Company
  • About us
  • Contacts
  • Reviews
  • Press Room
  • CodeGym for EDU
  • FAQ
  • Support
CodeGymCodeGym is an online course for learning Java programming from scratch. This course is a perfect way to master Java for beginners. It contains 1200+ tasks with instant verification and an essential scope of Java fundamentals theory. To help you succeed in education, we’ve implemented a set of motivational features: quizzes, coding projects, content about efficient learning, and a Java developer’s career.
Follow us
Lingua dell'interfaccia
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
"Programmers Are Made, Not Born" © 2026 CodeGym
MastercardVisa
"Programmers Are Made, Not Born" © 2026 CodeGym