Autor : Luo Hao
Nota : Desde o lançamento do projeto até a aquisição de 8w+ estrelas, recebemos feedback de que a parte básica (o conteúdo dos primeiros 15 dias) é difícil para iniciantes. Recomenda-se que haja vídeos de apoio para explicá-lo. Recentemente, a parte básica do conteúdo foi refeita em um projeto chamado "Python-Core-50-Courses". Esta parte do conteúdo foi reescrita de uma forma mais simples e popular e vem com explicações em vídeo. olhe para este novo armazém. Se os usuários domésticos demorarem para acessar o GitHub, eles podem seguir minha conta Zhihu Python-Jack . A coluna acima "Aprenda Python do zero" é mais adequada para iniciantes. Outras colunas, como "Pensamento de dados e pensamento estatístico", "Baseado em Python. ""Análise de dados" e assim por diante também estão sendo continuamente criados e atualizados. Todos são bem-vindos para prestar atenção, curtir e comentar.
Amigos que desejam obter vídeos de aprendizagem podem escanear o código QR abaixo para entrar no miniprograma WeChat e ver se há conteúdo adequado para você. O conteúdo de aprendizado de máquina que todos estão pensando pode ser encontrado no miniprograma, que foi gravado por meus colegas e por mim para todos.
Se você encontrar alguns problemas difíceis ou precisar de recursos de aprendizagem relevantes durante o processo de aprendizagem, você pode ingressar no seguinte grupo de comunicação QQ. Você pode ingressar em um dos três grupos. Publicidade e outros conteúdos pornográficos, vulgares ou sensíveis. Se você não tem autodisciplina e precisa pagar pelo aprendizado, pode adicionar meu chat privado WeChat (jackfrued) e anotar seu nome e necessidades. Fornecerei algumas orientações sobre planos de estudo e planejamento de carreira .
Os vídeos de apoio estão sendo continuamente atualizados em Douyin e Bilibili. Amigos interessados podem seguir minha conta Douyin ou Bilibili. Muito obrigado!
O "Aprendizado de Máquina e Aprendizado Profundo" que todos desejam atualizar está paralisado por motivos pessoais e empresariais. O conteúdo relacionado será atualizado em um futuro próximo.
Simplificando, Python é uma linguagem de programação “elegante”, “clara” e “simples”.
Baixa curva de aprendizado, mesmo não profissionais podem começar
Sistema de código aberto com um ecossistema forte
Linguagem interpretada, perfeita portabilidade de plataforma
Linguagem digitada dinamicamente que suporta programação funcional e orientada a objetos
O código é altamente padronizado e legível
Python é útil nos seguintes campos.
Desenvolvimento back-end - Python/Java/Go/PHP
DevOps - Python/Shell/Ruby
Aquisição de dados - Python/C++/Java
Negociação Quantitativa - Python/C++/R
Ciência de Dados - Python/R/Julia/Matlab
Aprendizado de máquina - Python/R/C++/Julia
Teste automatizado – Python/Shell
Como desenvolvedor Python, há muitos campos de trabalho para escolher com base em preferências pessoais e planos de carreira.
Engenheiro de desenvolvimento back-end Python (servidor, plataforma em nuvem, interface de dados)
Engenheiro de operação e manutenção Python (operação e manutenção automatizada, SRE, DevOps)
Analista de dados Python (análise de dados, business intelligence, operações digitais)
Engenheiro de mineração de dados Python (aprendizado de máquina, aprendizado profundo, especialista em algoritmos)
Engenheiro rastreador Python
Engenheiro de testes Python (testes automatizados, desenvolvimento de testes)
Nota : Atualmente, a análise de dados e a mineração de dados são direções muito populares , porque tanto a indústria da Internet quanto as indústrias tradicionais acumularam uma grande quantidade de dados, e todas as esferas da vida precisam de analistas de dados para descobrir mais insights de negócios a partir dos dados existentes, agregando assim valor. fornecer suporte de dados para a tomada de decisões corporativas, que é a chamada tomada de decisão baseada em dados.
Algumas sugestões para iniciantes:
Faça do inglês sua língua de trabalho.
A prática leva à perfeição.
Toda experiência vem de erros.
Não seja uma das sanguessugas.
Excelente ou fora (excelente ou fora)
Introdução ao Python - História do Python/Vantagens e Desvantagens do Python/Campos de Aplicação do Python
Construa um ambiente de programação - ambiente Windows/ambiente Linux/ambiente MacOS
Execute o programa Python a partir do terminal - Olá, mundo / função print
/ programa de execução
Usando IDLE - Ambiente Interativo (REPL) / Escrever múltiplas linhas de código / Executar programa / Sair do IDLE
Comentários - a função dos comentários/comentários de linha única/comentários de várias linhas
Programas e Base - Instruções e Programas/Máquina Von Neumann/Binário e Decimal/Octal e Hexadecimal
Variáveis e tipos - nomeação de variáveis/uso de variáveis/funções input
/verificação de tipos de variáveis/conversão de tipos
Números e strings - inteiros/números de ponto flutuante/números complexos/strings/operações básicas de strings/codificação de caracteres
Operadores - operadores matemáticos/operadores de atribuição/operadores de comparação/operadores lógicos/operadores de identidade/precedência de operadores
Caso de aplicação - Converter temperatura Fahrenheit em temperatura Celsius / Insira o raio do círculo para calcular a circunferência e a área / Insira o ano para determinar se é um ano bissexto
Cenários de aplicação de estrutura de ramificação - condições/indentação/blocos de código/fluxogramas
instrução if - simples if
/ if
- else
estrutura/ if
- elif
- else
estrutura/aninhado if
Casos de aplicação - Autenticação do usuário/Intercâmbio de unidades imperiais e unidades métricas/Rolar dados para decidir o que fazer/Converter pontuações percentuais em sistema de notas/Avaliar funções por partes/Inserir os comprimentos de três lados e calcular o perímetro e a área se um triângulo puder ser formado
Cenários de aplicação de estruturas de loop - condições/indentação/blocos de código/fluxogramas
while loop - estrutura básica/instrução break
/instrução continue
for loop - estrutura básica/tipo range
/estrutura de ramificação no loop/loop aninhado/encerrar o programa mais cedo
Casos de aplicação - Somar 1 ~ 100 / Determinar números primos / Jogos de adivinhação de números / Imprimir noventa e nove tabelas / Imprimir padrões de triângulos / Macaco comendo pêssegos / Centenas de moedas e centenas de galinhas
Casos clássicos: Número Narciso/Cem Dinheiro e Cem Galinhas/Jogo de Jogo de Dados
Questões práticas: Sequência de Fibonacci/Números Perfeitos/Números Primos
O papel das funções - o mau cheiro do código/encapsulamento de módulos funcionais com funções
Definir função - palavra-chave def
/nome da função/lista de parâmetros/instrução return
/chamar função personalizada
Chamando funções - funções integradas do Python/importação de módulos e funções
Parâmetros de função - parâmetros padrão/parâmetros variáveis/parâmetros de palavras-chave/parâmetros de palavras-chave nomeadas
Valor de retorno da função - sem valor de retorno / retorna valor único / retorna vários valores
Problemas de escopo - escopo local/escopo aninhado/escopo global/escopo integrado/palavras-chave relacionadas ao escopo
Usando funções de gerenciamento de módulos - o conceito de módulos/usando funções personalizadas de gerenciamento de módulos/o que acontece quando há um conflito de nomenclatura (o mesmo módulo e módulos diferentes)
Uso de strings - cálculo de comprimento/operação de subscrito/corte/métodos comuns
Uso básico de listas - definir listas/usar a tabela a seguir para acessar elementos/subscrito fora dos limites/adicionar elementos/excluir elementos/modificar elementos/fatia/loop traverse
Operações comuns em listas - conexão/cópia (copiar elementos e copiar matrizes)/comprimento/classificar/reverso/pesquisa
Gerar listas - use range
para criar listas de números/gerar expressões/geradores
Uso de tuplas - definir tuplas/usar valores em tuplas/modificar variáveis de tupla/conversões de tupla e lista
Uso básico de conjuntos - a diferença entre conjuntos e listas/criar um conjunto/adicionar elementos/excluir elementos/limpar
Operações comuns em conjuntos - interseção/união/diferença/diferença simétrica/subconjunto/superconjunto
Uso básico do dicionário - características do dicionário/criar dicionário/adicionar elemento/excluir elemento/obter valor/limpar
Operações comuns de dicionário - método keys
/método values
/método de items
/método setdefault
Exercícios básicos - Efeito letreiro/Encontrar o maior elemento em uma lista/A pontuação média dos resultados dos testes estatísticos/Sequência de Fibonacci/Triângulo Yang Hui
Caso abrangente - seleção de número de bola de cor dupla/jogo da velha
Classes e Objetos - O que é uma classe/O que é um objeto/Outros conceitos relacionados de orientação a objetos
Definir classe - estrutura básica/propriedades e métodos/construtor/destruidor/método __str__
Usando Objetos - Criar Objetos/Enviar Mensagens para Objetos
Os quatro pilares da orientação a objetos – abstração/encapsulamento/herança/polimorfismo
Exercícios básicos - definir classe de aluno/definir classe de relógio/definir classe de gráficos/definir classe de carro
Propriedades - propriedades de classe/propriedades de instância/acessadores de propriedade/modificadores de propriedade/excluidores de propriedade/uso __slots__
Métodos em classes - métodos de instância/métodos de classe/métodos estáticos
Sobrecarga do operador - __add__
/ __sub__
/ __or__
/ __getitem__
/ __setitem__
/ __len__
/ __gt__
/ __lt__
/ __le__
/ __ge__
/ __ge__ / __eq__
/ __ne__
__contains__
__repr__
Relacionamento entre classes (objetos) - associação/herança/dependência
Herança e polimorfismo - o que é herança/sintaxe de herança/chamada de método de classe pai/substituição de método/determinação de tipo/herança múltipla/herança de diamante (herança de diamante) e algoritmo C3
Sistema abrangente de liquidação salarial/sistema de desconto automático de livros/categoria de pontuação personalizada
Desenvolva programas GUI usando tkinter
Desenvolva aplicativos de jogos usando a biblioteca de terceiros pygame
Jogo "bola grande come bola pequena"
Ler arquivo - ler o arquivo inteiro/ler linha por linha/caminho do arquivo
Gravar arquivo - substituir/anexar/arquivo de texto/arquivo binário
Tratamento de exceções - a importância do mecanismo de exceção / try
- except
bloco de código / else
bloco de código / finally
bloco de código / tipo de exceção integrado / pilha de exceção / instrução raise
Persistência de dados - Visão geral do arquivo CSV/Aplicação do módulo csv
/Formato de dados JSON/Aplicação do módulo json
Operações avançadas em strings - Caracteres de escape/strings originais/strings multilinha/operadores in
e not in
/ métodos is_xxx
/ métodos join
e split
/ métodos relacionados strip
/módulo pyperclip
/strings imutáveis e strings variáveis/ Uso de StringIO
Introdução às expressões regulares - o papel das expressões regulares/metacaracteres/escapamento/quantificadores/agrupamento/afirmações de largura zero/correspondência gananciosa e correspondência preguiçosa/usar o módulo re
para implementar operações de expressão regular (correspondência, pesquisa, substituição, captura)
Usando expressões regulares - módulo re
/ função compile
/ método group
e groups
/ método match
/ método search
/ método findall
e finditer
/ método sub
e subn
/ método de split
Caso de aplicação – Use expressões regulares para validar strings de entrada
Conceitos de processos e threads - O que é um processo / O que é um thread / Cenários de aplicações multi-threading
Usando processos - função fork
/módulo multiprocessing
/pool de processos/comunicação entre processos
Usando threads - módulo threading
/classe Thread
/classe RLock
/classe Condition
/pool de threads
Noções básicas de redes de computadores - História do desenvolvimento de redes de computadores/Modelo "TCP-IP"/Endereço IP/Porta/Protocolo/Outros conceitos relacionados
Modo de aplicação de rede - modo "Cliente-Servidor" / modo "Navegador-Servidor"
Acessar recursos de rede com base no protocolo HTTP - Visão geral da API de rede/URL de acesso/ requests
biblioteca de terceiros/Analisar dados no formato JSON
Programação de rede Python - o conceito de soquetes/módulo socket
/função socket
/criar servidor TCP/criar cliente TCP/criar servidor UDP/criar cliente UDP
E-mail - SMTP/POP3/IMAP/ módulo smtplib
/ módulo poplib
/ módulo imaplib
Serviço SMS - Gateway de serviço SMS de chamada
Use o Pillow para processar imagens - leitura e escrita de imagens/síntese de imagens/transformação geométrica/conversão de cores/efeitos de filtro
Ler e escrever documentos Word - processamento de conteúdo de texto/parágrafos/cabeçalhos e rodapés/processamento de estilo
Ler e gravar arquivos Excel - xlrd
/ xlwt
/ openpyxl
Estruturas de dados comuns
Uso avançado de funções - "Cidadãos de primeira classe" / Funções de ordem superior / Funções Lambda / Escopo e fechamentos / Decoradores
Conhecimento avançado de orientação a objetos - "Três Pilares" / Relacionamento entre classes / Coleta de lixo / Propriedades e métodos mágicos / Mistura / Metaclasse / Princípios de design orientado a objetos / Padrão de design GoF
Iteradores e Geradores – Métodos Mágicos Relacionados/Duas Maneiras de Criar um Gerador/
Programação simultânea e assíncrona - multithreading/multiprocesso/IO assíncrona/ async
e awai
Use tags HTML para transportar o conteúdo da página
Renderize a página com CSS
Lidando com comportamento interativo com JavaScript
Começando com jQuery e melhorando-o
Primeiros passos com Vue.js
Uso do Elemento
Uso de Bootstrap
Histórico de desenvolvimento do sistema operacional e visão geral do Linux
Comandos básicos do Linux
Utilitários no Linux
Sistema de arquivos Linux
Aplicativo editor Vim
Variáveis de ambiente e programação shell
Instalação de software e configuração de serviço
Acesso e gerenciamento de rede
Outros conteúdos relacionados
Visão geral dos bancos de dados relacionais
Introdução ao MySQL
InstalarMySQL
Comandos básicos do MySQL
Construir banco de dados e tabela
Excluir e modificar tabelas
operação de inserção
operação de exclusão
operação de atualização
Projeções e aliases
Filtrar dados
Tratamento de valor nulo
Remover duplicatas
organizar
função agregada
Consultas aninhadas
Grupo
junção de mesa
Produto cartesiano
junção interna
conexão natural
junção externa
função de janela
Definir janela
função de classificação
função de acesso
Criar usuário
conceder permissões
Recuperar permissões
Tipo JSON
função de janela
expressão de tabela comum
visualizar
Cenários de uso
Criar visualização
Restrições de uso
função
funções integradas
Função definida pelo usuário (UDF)
processo
Processo de criação
Processo de chamada
plano de execução
O princípio da indexação
Criar índice
Índice comum
índice único
índice de prefixo
índice composto
Coisas a serem observadas
Instale bibliotecas de terceiros
Criar conexão
Obter cursor
Executar instrução SQL
Buscar dados via cursor
Confirmação e reversão de transação
Liberar conexão
Escreva scripts ETL
Ecossistema Hadoop
Visão geral da colmeia
Preparação
tipo de dados
Operações DDL
Operações DML
Consulta de dados
Mecanismo de funcionamento de aplicativos da Web
Solicitações e respostas HTTP
Visão geral da estrutura Django
Comece rapidamente em 5 minutos
Configuração de banco de dados relacional
Use ORM para concluir operações CRUD no modelo
Uso de experiência em gestão
Melhores práticas do modelo Django
Referência de definição de modelo
Carregar recursos estáticos
Visão geral do Ajax
Implementar função de votação usando Ajax
Implementar rastreamento de usuários
A relação entre cookies e sessões
Suporte do framework Django para sessões
Operações de leitura e gravação de cookies em funções de visualização
Modifique os cabeçalhos de resposta por meio de HttpResponse
Use StreamingHttpResponse
para lidar com arquivos grandes
Use xlwt
para gerar relatórios Excel
Use reportlab
para gerar relatórios em PDF
Use ECharts para gerar gráficos front-end
Registro de configuração
Configurar Django-Debug-Toolbar
Otimize o código ORM
O que é middleware
Middleware integrado da estrutura Django
Middleware customizado e seus cenários de aplicação
Retornar dados no formato JSON
Renderize a página com Vue.js
Visão geral do REST
Introdução à biblioteca DRF
Desenvolvimento separado de front-end e back-end
Aplicação de JWT
Usar CBV
Paginação de dados
Filtragem de dados
A primeira lei da otimização de sites
Usando Redis para fornecer serviços de cache em projetos Django
Ler e gravar cache na função de visualização
Usando decoradores para implementar cache de página
Fornece serviços de cache para interfaces de dados
Controle de formulário de upload de arquivo e visualização de arquivo de imagem
Como lidar com arquivos carregados no lado do servidor
A segunda lei da otimização de sites
Configurar o serviço de fila de mensagens
Use o Celery para implementar a assincronização de tarefas no projeto
Use o Celery para implementar tarefas agendadas no projeto
Teste de unidade em Python
Suporte do framework Django para testes unitários
Use um sistema de controle de versão
Configurando e usando uWSGI
Separação dinâmica e estática e configuração Nginx
Configurar HTTPS
Configurar resolução de nome de domínio
O conceito de web crawler e suas áreas de aplicação
Discussão sobre a legalidade dos rastreadores da web
Ferramentas relacionadas para desenvolver rastreadores da web
A composição de um programa rastreador
Use requests
de terceiros para implementar a captura de dados
Três maneiras de analisar páginas
Análise de expressão regular
Análise XPath
Análise do seletor CSS
multithreading
multiprocesso
E/S assíncrona
Instale o Selênio
Carregar página
Encontre elementos e simule o comportamento do usuário
Espera implícita e espera explícita
Executar código JavaScript
Crack anti-rastejamento de selênio
Configure um navegador sem cabeça
Componentes principais fragmentados
Fluxo de trabalho fragmentado
Instale o Scrapy e crie o projeto
Escreva um programa spider
Escreva programas de middleware e pipeline
Arquivo de configuração raspado
Responsabilidades do analista de dados
Pilha de habilidades de analista de dados
Bibliotecas relacionadas à análise de dados
Instale e use o anaconda
comandos relacionados ao conda
Instale e use o jupyter-lab
Instalar e iniciar
Use dicas
Criar objeto array
Propriedades do objeto array
Operações de índice em objetos array
Índice comum
índice sofisticado
índice booleano
índice de fatia
Caso: Usando arrays para processar imagens
Métodos relacionados de objetos array
Obtenha estatísticas descritivas
Outros métodos relacionados
Operações de matriz
Operações de array e escalares
Matrizes e operações de matrizes
Função unária universal
função binária geral
mecanismo de transmissão
Funções comuns numpy
vetor
Determinante
matriz
polinomial
Criar objeto Series
Operações em objetos Series
Propriedades e métodos de objetos Series
Criar objeto DataFrame
Propriedades e métodos do objeto DataFrame
Ler e gravar dados no DataFrame
Remodelação de dados
União de dados
Mesclagem de dados
Limpeza de dados
Valores ausentes
Valores duplicados
Valores discrepantes
pré-processamento
Dados dinâmicos
Obtenha estatísticas descritivas
Classificação e valores de cabeçalho
Agregação de grupo
Tabelas dinâmicas e tabelas cruzadas
Apresentação de dados
Calcular comparação ano a ano
cálculo de janela
Determinação de relevância
Uso de índice
índice de intervalo
Índice de categoria
índice multinível
índice de intervalo
índice de data e hora
Instalar e importar matplotlib
Criar tela
Crie um sistema de coordenadas
Desenhar gráficos
Gráfico de linhas
Gráfico de dispersão
gráfico de barras
gráfico de pizza
Histograma
boxplot
Mostrar e salvar gráficos
Gráficos avançados
gráfico de bolhas
gráfico de área
gráfico de radar
diagrama de rosa
Gráficos 3D
Nascido no mar
Gráficos
modelo de processo de software
Product Backlog (histórias de usuários, protótipos de produtos).
Reuniões de planejamento (avaliação e orçamento).
Desenvolvimento diário (reuniões stand-up, técnica Pomodoro, programação em pares, teste primeiro, refatoração de código...).
Corrigir bugs (descrição do problema, etapas de reprodução, testadores, responsáveis).
Versão de lançamento.
Reunião de revisão (Showcase, os usuários precisam participar).
Reunião retrospectiva (faça um resumo do ciclo de iteração atual).
Indivíduos e interações acima de processos e ferramentas
Software funcionando com documentação completa
A cooperação do cliente tem precedência sobre a negociação do contrato
Responder às mudanças é melhor do que seguir um plano
Análise de viabilidade (realizar pesquisa ou não) e gerar um “Relatório de Análise de Viabilidade”.
Análise de requisitos (pesquisa sobre o que fazer), saída “Especificação de Requisitos” e diagrama de protótipo de interface do produto.
Projeto de esboço e projeto detalhado, diagramas de modelo conceitual de saída (diagramas ER), diagramas de modelo físico, diagramas de classes, diagramas de sequência, etc.
Codificação/Teste.
Fique online/manutenção.
Modelo de processo clássico (modelo em cascata)
A maior desvantagem do modelo em cascata é que ele não consegue aceitar mudanças na demanda. O produto não pode ser visto até que todo o processo seja concluído, o que leva ao baixo moral da equipe.
Desenvolvimento ágil (Scrum) – product Owner, Scrum Master, desenvolvedores – Sprint
Suplemento: Manifesto para Desenvolvimento Ágil de Software
Função: Dono do produto (a pessoa que decide o que fazer e pode tomar decisões sobre os requisitos), líder da equipe (resolve vários problemas, concentra-se em como trabalhar melhor e protege a influência externa na equipe de desenvolvimento), equipe de desenvolvimento (executivo do projeto, Especificamente desenvolvedores e testadores).
Preparação: business case e financiamento, contratos, visão, requisitos iniciais do produto, plano de lançamento inicial, tomada de participação acionária, construção de uma equipe.
As equipes ágeis geralmente têm de 8 a 10 pessoas.
Estimativa de carga de trabalho: Quantifique as tarefas de desenvolvimento, incluindo protótipos, design de logotipo, design de UI, desenvolvimento front-end, etc., e tente decompor cada trabalho na quantidade mínima de tarefas. O padrão de quantidade mínima de tarefas é que o tempo de trabalho não pode exceder dois dias. e, em seguida, estimar o tempo total do projeto. Poste cada tarefa no quadro Kanban, que é dividido em três partes: to do (a ser concluído), em andamento (em andamento) e concluído (concluído).
Formação da equipe do projeto
Os comentários do código são poucos ou nenhum comentário
O código quebra as melhores práticas de linguagem
Programação antipadrão (código espaguete, programação copiar e colar, programação ego,…)
Composição e funções da equipe
Observação: Obrigado à Sra. Fu Xiangying por me ajudar a desenhar o seguinte lindo organograma da empresa.
Especificações de programação e revisão de código ( flake8
, pylint
)
Algumas "convenções" em Python (consulte "Convenções Python - Como escrever código Python")
Razões que afetam a legibilidade do código:
Introdução às ferramentas de desenvolvimento de equipe
Consulte "Problemas e soluções no desenvolvimento de projetos em equipe".
Controle de versão: Git, Mercury
Gerenciamento de defeitos: Gitlab, Redmine
Ferramentas ágeis de circuito fechado: ZenTao, JIRA
Integração contínua: Jenkins, Travis-CI
Configuração do escopo do tópico
CMS (cliente): site de agregação de notícias, comunidade de perguntas e respostas/compartilhamento, site de resenhas de filmes/resenhas de livros, etc.
MIS (lado do usuário + lado do gerenciamento): KMS, sistema de avaliação de KPI, HRS, sistema de CRM, sistema de cadeia de suprimentos, sistema de gerenciamento de armazém, etc.
Backend do aplicativo (terminal de gerenciamento + interface de dados): transações de segunda mão, jornais e revistas, comércio eletrônico de nicho, notícias e informações, viagens, redes sociais, leitura, etc.
Outros tipos: Possui experiência no setor e experiência de trabalho, o negócio é fácil de entender e controlar.
Compreensão de requisitos, divisão de módulos e alocação de tarefas
Entendimento de requisitos: brainstorming e análise competitiva de produtos.
Divisão do módulo: desenhe um mapa mental (XMind). Cada módulo é um nó de ramificação e cada função específica é um nó de folha (expresso com verbos. É necessário garantir que cada nó de folha não possa regenerar novos nós e determinar cada folha). Importância, prioridade e carga de trabalho dos nós.
Alocação de tarefas: O líder do projeto atribui tarefas a cada membro da equipe com base nos indicadores acima.
Desenvolver cronograma do projeto (atualizado diariamente)
módulo | Função | pessoal | estado | Terminar | horas de trabalho | O plano começa | Início real | O plano termina | fim real | Observação |
---|---|---|---|---|---|---|---|---|---|---|
Comentário | Adicionar comentário | Wang Dachui | em andamento | 50% | 4 | 07/08/2018 | 07/08/2018 | |||
Excluir comentário | Wang Dachui | espere | 0% | 2 | 07/08/2018 | 07/08/2018 | ||||
Ver comentários | Bai Yuanfang | em andamento | 20% | 4 | 07/08/2018 | 07/08/2018 | Revisão de código necessária | |||
Comentário voto | Bai Yuanfang | espere | 0% | 4 | 8/8/2018 | 8/8/2018 |
OOAD e design de banco de dados
Diagrama de classes para UML (Unified Modeling Language)
Crie uma tabela por meio do modelo (engenharia direta). Por exemplo, em um projeto Django, você pode criar uma tabela bidimensional por meio do seguinte comando.
aplicativo python manager.py makemigrations python manager.py migrar
Use o PowerDesigner para desenhar diagramas de modelos físicos.
Crie um modelo (engenharia reversa) através de uma tabela de dados. Por exemplo, em um projeto Django, você pode gerar um modelo através do seguinte comando.
python manager.py inspecionadb > app/models.py
Introdução ao Docker
Instale o Docker
Use Docker para criar contêineres (Nginx, MySQL, Redis, Gitlab, Jenkins)
Construir uma imagem Docker (escrita de Dockerfile e instruções relacionadas)
Orquestração de contêineres (Docker-compose)
Gerenciamento de cluster (Kubernetes)
princípios básicos
Mecanismo InnoDB
Uso e precauções do índice
partição de dados
Otimização de SQL
Otimização de configuração
Otimização de arquitetura
princípios de design
questões-chave
Outras perguntas
Escrita de documentos
Configuração de banco de dados (vários bancos de dados, replicação mestre-escravo, roteamento de banco de dados)
Configuração de cache (cache de partição, configurações de chave, configurações de tempo limite, replicação mestre-escravo, recuperação de falhas (Sentinel))
Configuração de registro
Criação de perfil e depuração (Django-Debug-ToolBar)
Módulos Python úteis (cálculo de data, processamento de imagem, criptografia de dados, API de terceiros)
Arquitetura RESTful
Entenda a arquitetura RESTful
Diretrizes de design de API RESTful
Práticas recomendadas de API RESTful
Escrevendo documentação da interface API
RAP2
YAPI
Aplicação do framework Django-REST
Use o cache para aliviar a pressão do banco de dados - Redis
Use filas de mensagens para dissociação e corte de pico - Celery + RabbitMQ
Tipo de teste
Escreva testes unitários ( unittest
, pytest
, nose2
, tox
, ddt
,...)
Cobertura de teste ( coverage
)
Preparação antes da implantação
Configurações de chave (SECRET_KEY/DEBUG/ALLOWED_HOSTS/cache/banco de dados)
HTTPS/CSRF_COOKIE_SECUR/SESSION_COOKIE_SECURE
Configuração relacionada ao log
Revisão de comandos comuns do Linux
Instalação e configuração de serviços Linux comuns
Uso de uWSGI/Gunicorn e Nginx
Para aplicações simples que não requerem muita personalização, o Gunicorn é uma boa escolha. A curva de aprendizado do uWSGI é muito mais acentuada que a do Gunicorn, e os parâmetros padrão do Gunicorn já podem ser adaptados à maioria das aplicações.
uWSGI suporta implantação heterogênea.
Como o próprio Nginx oferece suporte a uWSGI, Nginx e uWSGI geralmente são implantados juntos on-line, e uWSGI é um middleware WSGI totalmente funcional e altamente personalizado.
Em termos de desempenho, Gunicorn e uWSGI apresentam desempenho igualmente bom.
Comparação de Gunicorn e uWSGI
Implantar ambiente de teste e ambiente de produção usando tecnologia de virtualização (Docker)
Uso de AB
Uso de SQLslap
Uso do Sysbench
Testes automatizados usando Shell e Python
Testes automatizados usando Selenium
IDE Selênio
Selênio WebDriver
Controle Remoto Selênio
Introdução à ferramenta de teste Robot Framework
Modelo de negócios e pontos de requisitos
Projeto de modelo físico
Login de terceiros
Aquecimento de cache e cache de consulta
Implementação de carrinho de compras
Integração da função de pagamento
Vendas instantâneas e problemas de sobrevenda
Gerenciamento de recursos estáticos
Solução de pesquisa de texto completo
Ajuste de banco de dados MySQL
Otimização de desempenho do servidor web
Configuração de balanceamento de carga Nginx
Keepalived alcança alta disponibilidade
Ajuste de desempenho de código
multithreading
Assincronização
Otimização de acesso a recursos estáticos
armazenamento em nuvem
CDN
noções básicas de informática
Noções básicas de Python
Estrutura da Web relacionada
Problemas relacionados a répteis
análise de dados
Relacionado ao projeto