Páginal inicial
Programação
Linguagens
- Java
- - IO (Arquivos, Socket, Pipeline, ler arquivos dentro do próprio Jar)
- - Swing (Criar GUI, usar Listeners, Documents, (sincronia entre a Event Dispatch Thread e alguma outra thread)
- - Web (Servlets, JSP, Tags(tag files, simple tags e classic tags), e os 8 listerns da API)
- - Thread (criar e sincronizar, mas somente com o que a linguagem oferece por padrão (fazer lock usando um objeto ou a palavra chave syncronized) ainda vou estudar a Concurrency API.
- - Polimorfismo, Herança e Inteface
- - Generics (além do uso do operador diamond)
- - Estruturas: árvores, lista e mapas
- C
- - IO com arquivos [binarios/texto](usando a API padrão do C ou no caso do Linux também fazendo chamadas ao sistema operacional)
- - Gerenciamento de memória (malloc, calloc e free)
- - Manipulação de strings
- - Ponteiros (ponteiros simples, ponteiros para ponteiros, além de ponteiros para funções)
- - Estruturas: structs, listas, árvores e árvores binárias (estáticas ou dinâmicas)
- - unions
- - typedef
- - Fazer algumas chamadas ao sistema operacional Linux
- - Thread (básico: mutex utilizando a biblioteca pthreads)
- Assembly
- Transferir dados de registrador para registrador, do registrador para a memória e vice-versa
- O uso e entendimento de alguns registradores (levando em consideração intel 8086): ax, bx, cx, dx, sp, bp, si, di, cs, ss e ip
- Criar funções e executá-las (funções simples, usando dados e memória pré-alocados)
- Fazer looping e desvios
- Chamadas simples para o OS (linux) para exibir a saída dos dados em um programa de terminal
- Como um programa é dividido (teoricamente) na memória: texto, dados estáticos, memória heap e stack (ignorando aqui: memória virtual, páginação e swap)
- SQL
- - Mas de uma forma genérica, coisas como: criar um simples banco de dados, criar/excluir tabelas, fazer pesquisas
(order by, group by, having, join, "top", union, "sub-queries", views, transaction, commit, rollback)
- HTML, CSS e JavaScript
- - O básico para criar um simples site.
Ferramentas
- IDE Eclipse JAVA EE
- - Para programar em Java
- Visual Studio
- - Para programar em C no Windows
- Notepad++/Sublime Text/Visual Studio Code
- - Para HTML, CSS e JavaScript, também utilizo o Visual Studio Code para C em ambientes Linux
- MySQL Workbench/PHPMyAdmin/SQL Server Management Studio
- - Para manipular os bancos de dados: MySql e SQL Server
- Git
- - Para fazer o controle de versão (básico: clone, commit, branchs, rebase, remote repositories, diff, checkout, log e etc...)
- Github
- - Básico
- Gcc
- - Básico (para fazer a compilação dos programas em C no linux)
- Maven
- - Básico (para gerenciar os programas feitos em Java)
Tecnologias e outros conhecimentos...
- Threads: o que são, para que servem, sincronia, algoritmos: consumidor e produtor
- Criptografia (o que é, para que serve, diferença entre criptografia assimétrica e simétrica)
- Modelagem de banco de dados
- Protocolos: http, ftp, rfb e ldap
- Cliente/Servidor, P2P
- Sistemas Operacionais