CodeGym
Promoção
Aprendizagem
Cursos
Tarefas
Pesquisas & Questionários
Jogos
Ajuda
Cronograma
Comunidade
Usuários
Fórum
Chat
Artigos
Histórias de sucesso
Atividade
Avaliações
Assinaturas
Tema claro

Aulas

  • Avaliações
  • Sobre nós
Iniciar
Comece a aprender
Comece a aprender agora
  • Meu progresso
  • Cursos
  • Mapa da Missão
  • Aulas
  • Problemas de desempenho de IO: gargalos

    JAVA 25 SELF
    Nível 41,Aula 0
    Esta aula é sobre o que é um “gargalo” em entrada e saída e como detectá-lo e eliminá-lo. Vamos analisar por que operações de disco e rede são significativamente mais lentas do que a RAM, quais antipadrões aparecem com frequência (leitura byte a byte via read(), logs síncronos etc.), como os buffers ajudam ( BufferedInputStream, BufferedReader), os profilers ( VisualVM, JProfiler) e medições de tempo via System. currentTimeMillis (). Faremos um experimento prático lendo o arquivo "bigfile.txt", compararemos a velocidade com e sem buffer, veremos o impacto de SSD/HDD e da rede e listaremos erros típicos.
    Disponível
  • NIO Channels e ByteBuffer

    JAVA 25 SELF
    Nível 41,Aula 1
    Introdução prática ao I/O não bloqueante do Java NIO: analisamos como os canais Channel e os buffers ByteBuffer diferem dos streams InputStream/ OutputStream, como ler e escrever com FileChannel, como se posicionar via position()/ truncate(), trabalhar com os parâmetros do buffer ( capacity, limit, position, mark) e escolher entre allocate() e allocateDirect(). São mostradas operações de zero-copy transferTo()/ transferFrom() e erros típicos como esquecer o flip() e usar o modo de buffer incorreto.
    Disponível
  • Arquivos grandes: padrões de chunking

    JAVA 25 SELF
    Nível 41,Aula 2
    Como processar arquivos de dezenas de gigabytes com eficiência sem OutOfMemoryError: dividimos em pedaços (chunks), lemos por posições com RandomAccessFile e FileChannel, paralelizamos as tarefas com ExecutorService/ ForkJoinPool, e para cópia simples usamos zero-copy via transferTo/ transferFrom. Analisamos a escolha do tamanho do chunk, os limites de linhas, a sincronização dos resultados e erros típicos.
    Disponível
  • Trabalhando com arquivos grandes: chunking, memory mapping

    JAVA 25 SELF
    Nível 41,Aula 3
    Como processar arquivos enormes em Java com segurança e rapidez: leitura em partes (chunking) via streams e buffers, ajuste do tamanho do buffer para desempenho, uso de mapeamento de arquivo em memória com MappedByteBuffer e FileChannel para acesso aleatório ultrarrápido. Vamos analisar os prós e contras do memory mapping, recomendações sobre recursos e paralelismo, bem como erros típicos (por exemplo, OutOfMemoryError, descritores esquecidos, sobreposição de chunks em buscas).
    Disponível
  • Arquivamento/compactação: java.util.zip

    JAVA 25 SELF
    Nível 41,Aula 4
    Aula prática sobre trabalho com arquivos compactados e compressão no Java: conheça o pacote java.util.zip, os streams ZipInputStream/ ZipOutputStream e a classe de acesso aleatório ZipFile, controle os níveis de compactação via Deflater ( 0… 9, DEFAULT_COMPRESSION), trabalhe com GZIPInputStream/ GZIPOutputStream para arquivos únicos, empacote/descompacte diretórios com Files.walk e filtragem por PathMatcher ( "glob:**/*.txt"). Vamos discutir segurança: proteção contra Zip Slip por normalização de caminho e controle de tamanho para zip bomb, além de montar um mini-CLI “zip/unzip” com máscaras.
    Disponível
  • Introdução à serialização de objetos: para que serve

    JAVA 25 SELF
    Nível 42,Aula 0
    Por que e como “empacotar” objetos em Java: transformá-los em um fluxo de bytes e voltar com ObjectOutputStream/ ObjectInputStream, salvar estado entre execuções, transmitir pela rede e colocar resultados em cache. Analisamos o papel da interface Serializable, nuances com a palavra‑chave transient e strings como "save.dat", discutimos riscos de segurança e compatibilidade de versões. Prática: mini save do jogo, envio de mensagens cliente↔servidor e cache de cálculos.
    Disponível
  • Interface Serializable: princípios básicos

    JAVA 25 SELF
    Nível 42,Aula 1
    Analisamos os fundamentos da serialização em Java: a interface marcadora java.io.Serializable, como marcar uma classe com implements Serializable, requisitos para os campos ( static, transient), exemplos passo a passo de gravação e leitura de objetos com ObjectOutputStream/ ObjectInputStream, o que acontece “por baixo do capô” ao chamar writeObject/ readObject, bem como erros típicos (campos não serializáveis, classes internas, comportamento de campos static e versionamento da classe via serialVersionUID).
    Disponível
  • Formatos padrão de serialização: binário e texto

    JAVA 25 SELF
    Nível 42,Aula 2
    Nesta aula, vamos comparar a serialização binária do Java por meio das classes ObjectOutputStream e ObjectInputStream com formatos de texto ( JSON, XML): princípio de funcionamento, velocidade e compacidade, compatibilidade de versões e segurança. Vamos analisar vantagens e limitações, mostrar prática com Jackson (incluindo a dependência Maven) e dar conselhos sobre quando escolher cada um, além de erros comuns.
    Disponível
  • ObjectOutputStream, ObjectInputStream: trabalhando com fluxos

    JAVA 25 SELF
    Nível 42,Aula 3
    Nesta aula, analisamos como serializar e desserializar objetos em Java com os fluxos pareados ObjectOutputStream e ObjectInputStream: o que é a interface marcadora java.io.Serializable, como funcionam os métodos writeObject() e readObject(), por que os campos static e transient não entram no fluxo, quais exceções ocorrem ( NotSerializableException, InvalidClassException) e qual é o impacto de serialVersionUID. Na prática, serializamos um objeto e uma lista de objetos para um arquivo e analisamos erros típicos.
    Disponível
  • Serialização de coleções: List, Map, Set

    JAVA 25 SELF
    Nível 42,Aula 4
    Guia prático de serialização de coleções em Java: como salvar e restaurar List, Map, Set via ObjectOutputStream/ ObjectInputStream; por que a maioria das coleções já implementa Serializable; requisitos para os elementos; comportamento de ordem em HashSet/ HashMap; trabalho com coleções aninhadas e vazias; armadilhas ( InvalidClassException, serialVersionUID, transient/ static). Concluímos com um exemplo completo de uma “biblioteca virtual”.
    Disponível
  • Controle do processo de serialização: writeObject, readObject

    JAVA 25 SELF
    Nível 43,Aula 0
    Como interceptar a serialização padrão e assumir o controle do processo: usamos métodos privados writeObject/ readObject com assinaturas estritas ( private void writeObject( ObjectOutputStream out) throws IOException), chamamos defaultWriteObject()/ defaultReadObject(), excluímos campos com transient, adicionamos checksums e logs, sem esquecer de serialVersionUID e da compatibilidade entre versões. Analisamos erros típicos, o uso de ObjectOutputStream/ ObjectInputStream e exemplos práticos.
    Disponível
  • campos transient, serialVersionUID

    JAVA 25 SELF
    Nível 43,Aula 1
    Guia prático de serialização em Java: quando e como usar transient para excluir campos do fluxo, o que acontece na desserialização (valores padrão), como restaurar o estado no método readObject; o que é serialVersionUID, como declará-lo ( private static final long serialVersionUID = 1L), quando alterá-lo e por que é melhor defini-lo explicitamente. Traz exemplos práticos, cenários arriscados e erros comuns.
    Disponível
  • 1
  • ...
  • 18
  • 19
  • 20
  • 21
  • 22
  • ...
  • 30
Aprender
  • Cadastro
  • Curso de Java
  • Ajuda com Tarefas
  • Preços
  • Sintaxe Java
Comunidade
  • Usuários
  • Artigos
  • Fórum
  • Chat
  • Histórias de sucesso
  • Atividade
  • Programa de afiliados
Empresa
  • Sobre nós
  • Contatos
  • Avaliações
  • Sala de imprensa
  • CodeGym for EDU
  • Perguntas frequentes
  • Suporte
CodeGymCodeGym é um curso online para aprender programação Java do zero. Este curso é uma maneira perfeita de dominar Java para iniciantes. Contém mais de 1.200 tarefas com verificação instantânea e um escopo essencial da teoria dos fundamentos de Java. Para ajudar você a ter sucesso nos estudos, implementamos um conjunto de recursos motivacionais: questionários, projetos de programação, conteúdo sobre aprendizagem eficiente e carreira de desenvolvedor Java.
Siga-nos
Idioma da interface
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
"Programadores se formam, não nascem" © 2026 CodeGym
MastercardVisa
"Programadores se formam, não nascem" © 2026 CodeGym