Sobre o projeto
O repositório 7days-golang, mantido por geektutu sob licença MIT, é uma série educacional intitulada "7 Dias para Implementar do Zero com Go". Através da implementação gradual de componentes básicos comuns em Go ao longo de 7 dias, ele ajuda os leitores a compreender os princípios internos dessas ferramentas. Cada subprojeto tem seus diretórios organizados por dia, acompanhados por artigos explicativos no site do autor.
O repositório contém quatro subprojetos principais:
1. **Gee Web Framework (gee-web)**: Um framework web inspirado no gin. O conteúdo de sete dias abrange: fundamentos da interface http.Handler, design do Context, roteamento baseado em árvore Trie, controle de grupos de rotas (Group), mecanismo de middleware, incorporação de templates HTML, e tratamento de Panic para robustez.
2. **GeeCache Distributed Cache (gee-cache)**: Um sistema de cache distribuído inspirado no groupcache. Os tópicos incluem: estratégia de eliminação LRU, cache concorrente local, servidor HTTP, hashing consistente, comunicação entre nós distribuídos, implementação de singleflight para evitar quebra de cache, e uso de Protobuf como formato de troca de dados.
3. **GeeORM Framework (gee-orm)**: Um framework ORM projetado com referência ao xorm e gorm. O autor explica que, como o gorm v2 ainda estava em desenvolvimento e o design do xorm é mais fácil de entender, a interface principal segue o xorm, enquanto alguns detalhes de implementação seguem o gorm. Os sete dias incluem: fundamentos de database/sql, mapeamento objeto-tabela, inserção e consulta de registros, operações encadeadas com atualização e exclusão, hooks, suporte a transações e migração de banco de dados (Migrate).
4. **GeeRPC Framework (gee-rpc)**: Um framework RPC baseado na biblioteca padrão net/rpc do Go, com aproximadamente 1.000 linhas de código. Além da base, adiciona troca de protocolos, descoberta e registro de serviços, balanceamento de carga, tratamento de timeout e suporte a depuração via protocolo HTTP. O conteúdo diário abrange: servidor e codificação de mensagens, cliente concorrente e assíncrono, registro de serviços, tratamento de timeout, suporte a HTTP, balanceamento de carga e descoberta de serviços com centro de registro.
Além disso, o repositório inclui quatro exemplos de WebAssembly em Go (demo-wasm), demonstrando Hello World, registro de funções, manipulação de DOM e callbacks. O artigo correspondente é "Guia Simples de Go WebAssembly".
O autor também recomenda materiais complementares, como "Guia Simples de Go", "Perguntas de Entrevista e Exames de Go" e "Programação de Alto Desempenho em Go". Sugere-se que os leitores dominem a sintaxe básica de Go, programação concorrente e gerenciamento de dependências antes de começar a prática. O repositório é ideal para estudantes de Go que desejam aprofundar seu entendimento de frameworks web, cache distribuído, ORM e mecanismos internos de RPC através da leitura e escrita de código-fonte.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.