Autor : Luo Hao
Nota : Desde el lanzamiento del proyecto hasta la adquisición de 8w+ estrellas, hemos recibido comentarios de que la parte básica (el contenido de los primeros 15 días) es difícil para los principiantes. Se recomienda que haya videos de apoyo para explicarlo. Recientemente, la parte básica del contenido se ha reescrito en un proyecto llamado "Python-Core-50-Courses". Esta parte del contenido se ha reescrito de una manera más simple y popular y viene con explicaciones en video. Mira este nuevo almacén. Si los usuarios domésticos tardan en acceder a GitHub, pueden seguir mi cuenta de Zhihu Python-Jack . La columna anterior "Aprende Python desde cero" es más adecuada para principiantes. Otras columnas como "Pensamiento de datos y pensamiento estadístico" y "Basado en Python". "El "Análisis de datos", etc., también se crea y actualiza continuamente. Todos pueden prestar atención, dar me gusta y comentar.
Los amigos que quieran obtener videos de aprendizaje pueden escanear el código QR a continuación para ingresar al mini programa WeChat y ver si hay contenido adecuado para usted. El contenido de aprendizaje automático en el que todos están pensando se puede encontrar en el mini programa, que mis colegas y yo grabamos para usted.
Si encuentra algunos problemas difíciles o necesita recursos de aprendizaje relevantes durante el proceso de aprendizaje, puede unirse al siguiente grupo de comunicación QQ. Puede unirse a uno de los tres grupos. No se una al grupo repetidamente ni publique en el grupo. Publicidad y otros contenidos pornográficos, vulgares o sensibles. Si carece de autodisciplina y necesita pagar por aprender, puede agregar mi chat privado de WeChat (jackfrued) y anotar su nombre y sus necesidades. Le brindaré orientación sobre planes de estudio y planificación profesional .
Los videos de apoyo se actualizan continuamente en Douyin y Bilibili. Los amigos interesados pueden seguir mi cuenta de Douyin o Bilibili. Acabo de abrir mi cuenta recientemente. Espero que puedan apoyarme.
El "Aprendizaje automático y aprendizaje profundo" que todos han instado a actualizar se ha estancado por motivos personales y de la empresa. El contenido relacionado se actualizará en un futuro próximo. Gracias por su continuo apoyo y comprensión.
En pocas palabras, Python es un lenguaje de programación "elegante", "claro" y "simple".
Curva de aprendizaje baja, incluso los no profesionales pueden empezar
Sistema de código abierto con un ecosistema sólido
Lenguaje interpretado, perfecta portabilidad de plataforma.
Lenguaje tipado dinámicamente que admite programación funcional y orientada a objetos.
El código está altamente estandarizado y legible.
Python es útil en los siguientes campos.
Desarrollo backend: Python/Java/Go/PHP
DevOps: Python/Shell/Ruby
Adquisición de datos: Python/C++/Java
Comercio cuantitativo - Python/C++/R
Ciencia de datos: Python/R/Julia/Matlab
Aprendizaje automático: Python/R/C++/Julia
Pruebas automatizadas: Python/Shell
Como desarrollador de Python, hay muchos campos laborales para elegir según las preferencias personales y los planes profesionales.
Ingeniero de desarrollo back-end de Python (servidor, plataforma en la nube, interfaz de datos)
Ingeniero de operación y mantenimiento de Python (operación y mantenimiento automatizado, SRE, DevOps)
Analista de datos Python (análisis de datos, inteligencia de negocios, operaciones digitales)
Ingeniero de minería de datos de Python (aprendizaje automático, aprendizaje profundo, experto en algoritmos)
Ingeniero de rastreo de Python
Ingeniero de pruebas de Python (pruebas automatizadas, desarrollo de pruebas)
Nota : Actualmente, el análisis de datos y la minería de datos son direcciones muy populares , porque tanto la industria de Internet como las industrias tradicionales han acumulado una gran cantidad de datos, y todos los ámbitos de la vida necesitan que los analistas de datos descubran más conocimientos comerciales a partir de los datos existentes y, por lo tanto, valor. proporcionando soporte de datos para la toma de decisiones corporativas, que es la llamada toma de decisiones basada en datos.
Algunas sugerencias para principiantes:
Haga del inglés su idioma de trabajo.
La práctica hace la perfección.
Toda experiencia proviene de errores.
No seas una de las sanguijuelas.
Ya sea pendiente o fuera (ya sea pendiente o fuera).
Introducción a Python: Historia de Python/Ventajas y desventajas de Python/Campos de aplicación de Python
Cree un entorno de programación: entorno Windows/entorno Linux/entorno MacOS
Ejecute el programa Python desde la terminal - Hola, mundo/función print
/ejecutar programa
Usando IDLE - Entorno Interactivo (REPL) / Escribir múltiples líneas de código / Ejecutar programa / Salir de IDLE
Comentarios: la función de los comentarios/comentarios de una sola línea/comentarios de varias líneas
Programas y Base - Instrucciones y Programas/Máquina Von Neumann/Binario y Decimal/Octal y Hexadecimal
Variables y tipos: denominación de variables/uso de variables/funciones input
/comprobación de tipos de variables/conversión de tipos
Números y cadenas: enteros/números de punto flotante/números complejos/cadenas/operaciones básicas de cadenas/codificación de caracteres
Operadores: operadores matemáticos/operadores de asignación/operadores de comparación/operadores lógicos/operadores de identidad/precedencia de operadores
Caso de aplicación: convertir temperatura Fahrenheit a temperatura Celsius / Ingresar el radio del círculo para calcular la circunferencia y el área / Ingresar el año para determinar si es un año bisiesto
Escenarios de aplicación de estructuras de ramas: condiciones/sangría/bloques de código/diagramas de flujo
declaración if - simple if
/ if
- else
estructura/ if
- elif
- else
estructura/ if
anidado
Casos de aplicación: Autenticación de usuario/Intercambio de unidades imperiales y unidades métricas/Lanzar dados para decidir qué hacer/Convertir puntuaciones percentiles al sistema de calificación/Evaluar funciones por partes/Ingresar las longitudes de tres lados y calcular el perímetro y el área si se puede formar un triángulo formado
Escenarios de aplicación de estructuras de bucle: condiciones/sangría/bloques de código/diagramas de flujo
bucle while: estructura básica/declaración break
/declaración continue
bucle for: estructura básica/tipo range
/estructura de rama en el bucle/bucle anidado/finalizar el programa antes
Casos de aplicación: Sumar 1~100 / Determinar números primos / Juegos de adivinar números / Imprimir noventa y nueve tablas / Imprimir patrones de triángulos / Mono comiendo melocotones / Cientos de monedas y cientos de pollos
Casos clásicos: El número de Narciso/Cien dinero y cien gallinas/Juego de dados
Preguntas de práctica: Secuencia de Fibonacci/Números perfectos/Números primos
El papel de las funciones: el mal olor del código/encapsular módulos funcionales con funciones
Definir función: palabra clave def
/nombre de función/lista de parámetros/declaración return
/llamar a función personalizada
Funciones de llamada: funciones integradas de Python/importación de módulos y funciones
Parámetros de función: parámetros predeterminados/parámetros variables/parámetros de palabras clave/parámetros de palabras clave con nombre
Valor de retorno de la función: sin valor de retorno/devuelve un valor único/devuelve múltiples valores
Problemas de alcance: alcance local/alcance anidado/alcance global/alcance integrado/palabras clave relacionadas con el alcance
Uso de funciones de administración de módulos: el concepto de módulos/uso de funciones de administración de módulos personalizadas/qué sucede cuando hay un conflicto de nombres (el mismo módulo y módulos diferentes)
Uso de cadenas: cálculo de longitud/operación de subíndice/corte/métodos comunes
Uso básico de listas: defina listas/use la siguiente tabla para acceder a elementos/subíndices fuera de límites/agregar elementos/eliminar elementos/modificar elementos/corte/recorrido en bucle
Operaciones comunes en listas: conexión/copiar (copiar elementos y copiar matrices)/longitud/ordenar/inversa/búsqueda
Generar listas: use range
para crear listas de números/generar expresiones/generadores
Uso de tuplas: definir tuplas/usar valores en tuplas/modificar variables de tupla/tuplas y enumerar conversiones
Uso básico de conjuntos: la diferencia entre conjuntos y listas/crear un conjunto/agregar elementos/eliminar elementos/borrar
Operaciones comunes en conjuntos: intersección/unión/diferencia/diferencia simétrica/subconjunto/superconjunto
Uso básico del diccionario: características del diccionario/crear diccionario/agregar elemento/eliminar elemento/obtener valor/borrar
Operaciones comunes del diccionario: método keys
/método values
/método de items
/método setdefault
Ejercicios básicos: efecto marquesina/Encontrar el elemento más grande en una lista/La puntuación promedio de las puntuaciones de las pruebas estadísticas/Secuencia de Fibonacci/Triángulo Yang Hui
Estuche completo: selección de números de bolas de doble color/Tic-Tac-Toe
Clases y Objetos - Qué es una clase/Qué es un objeto/Otros conceptos relacionados con la orientación a objetos
Definir clase - estructura básica/propiedades y métodos/constructor/destructor/ __str__
str__method
Uso de objetos: crear objetos/enviar mensajes a objetos
Los cuatro pilares de la orientación a objetos: abstracción/encapsulación/herencia/polimorfismo
Ejercicios básicos: definir clase de estudiante/definir clase de reloj/definir clase de gráficos/definir clase de automóvil
Propiedades: propiedades de clase/propiedades de instancia/accesores de propiedad/modificadores de propiedad/eliminadores de propiedad/uso __slots__
Métodos en clases: métodos de instancia/métodos de clase/métodos estáticos
Sobrecarga del operador: __add__
/ __sub__
/ __or__
/ __getitem__
/ __setitem__
/ __len__
/ __gt__
/ __lt__
/ __le__
/ __ge__
/ __ge__ / __eq__
/ __ne__
__contains__
__repr__
Relación entre clases (objetos) - asociación/herencia/dependencia
Herencia y polimorfismo: qué es herencia/sintaxis de herencia/llamada a métodos de clase principal/anulación de métodos/determinación de tipo/herencia múltiple/herencia de diamantes (herencia de diamantes) y algoritmo C3
Sistema integral de liquidación de salarios/sistema de descuento de libros automático/categoría de puntuación personalizada
Desarrollar programas GUI usando tkinter
Desarrolle aplicaciones de juegos utilizando la biblioteca de terceros pygame
Juego "La pelota grande se come a la pequeña"
Leer archivo: leer el archivo completo/leer línea por línea/ruta del archivo
Escribir archivo: sobrescribir/añadir/archivo de texto/archivo binario
Manejo de excepciones: la importancia del mecanismo de excepción/ try
: bloque de código except
/bloque de código else
/bloque de código finally
/tipo de excepción incorporado/pila de excepción/declaración raise
Persistencia de datos: descripción general del archivo CSV/Aplicación del módulo csv
/Formato de datos JSON/Aplicación del módulo json
Operaciones avanzadas en cadenas: caracteres de escape/cadenas sin formato/cadenas multilínea/operadores in
y not in
/métodos is_xxx
/métodos join
y split
/métodos relacionados con strip
/módulo pyperclip
/cadenas inmutables y cadenas variables/Uso de StringIO
Introducción a las expresiones regulares: el papel de las expresiones regulares/metacaracteres/escape/cuantificadores/agrupación/afirmaciones de ancho cero/coincidencia codiciosa y coincidencia diferida/use el módulo re
para implementar operaciones de expresión regular (coincidencia, búsqueda, reemplazo, captura)
Uso de expresiones regulares: re
módulo/función compile
/método group
y groups
/método de match
/método search
/método findall
y finditer
/método sub
y subn
/método split
Caso de aplicación: utilice expresiones regulares para validar cadenas de entrada
Conceptos de procesos y subprocesos: Qué es un proceso / Qué es un subproceso / Escenarios de aplicación de subprocesos múltiples
Uso de procesos: función fork
/módulo multiprocessing
/grupo de procesos/comunicación entre procesos
Uso de subprocesos: módulo threading
/clase Thread
/clase RLock
/clase Condition
/grupo de subprocesos
Conceptos básicos de redes informáticas: Historia del desarrollo de redes informáticas/Modelo "TCP-IP"/Dirección IP/Puerto/Protocolo/Otros conceptos relacionados
Modo de aplicación de red: modo "Cliente-Servidor" / modo "Navegador-Servidor"
Acceda a recursos de red basados en el protocolo HTTP: descripción general de la API de red/URL de acceso/ requests
de biblioteca de terceros/Analizar datos en formato JSON
Programación de red Python: el concepto de sockets/módulo socket
/función socket
/crear servidor TCP/crear cliente TCP/crear servidor UDP/crear cliente UDP
Correo electrónico: SMTP/POP3/IMAP/módulo smtplib
/módulo poplib
/módulo imaplib
Servicio de SMS - Llamar a la puerta de enlace del servicio de SMS
Utilice Pillow para procesar imágenes: lectura y escritura de imágenes/síntesis de imágenes/transformación geométrica/conversión de color/efectos de filtro
Lectura y escritura de documentos de Word: procesamiento de contenido de texto/párrafos/encabezados y pies de página/procesamiento de estilo
Leer y escribir archivos de Excel - xlrd
/ xlwt
/ openpyxl
Estructuras de datos comunes
Uso avanzado de funciones - "Ciudadanos de primera" / Funciones de orden superior / Funciones Lambda / Alcance y cierres / Decoradores
Conocimiento avanzado orientado a objetos - "Tres pilares" / Relación entre clases / Recolección de basura / Propiedades y métodos mágicos / Mezcla / Metaclase / Principios de diseño orientado a objetos / Patrón de diseño GoF
Iteradores y generadores: métodos mágicos relacionados/Dos formas de crear un generador/
Programación concurrente y asincrónica: subprocesos múltiples/multiproceso/IO asíncrono/ async
y awai
Utilice etiquetas HTML para transportar el contenido de la página
Renderizar la página con CSS
Manejo del comportamiento interactivo con JavaScript
Comenzando con jQuery y mejorándolo
Empezando con Vue.js
Uso del elemento
Uso de arranque
Historial de desarrollo del sistema operativo y descripción general de Linux
Comandos básicos de Linux
Utilidades en Linux
sistema de archivos linux
aplicación de edición vim
Variables de entorno y programación de shell
Instalación de software y configuración de servicios.
Acceso y gestión de red.
Otro contenido relacionado
Descripción general de las bases de datos relacionales
Introducción a MySQL
Instalar MySQL
Comandos básicos de MySQL
Construir base de datos y tabla
Eliminar y modificar tablas
operación de inserción
eliminar operación
operación de actualización
Proyecciones y alias
Filtrar datos
Manejo de valores nulos
Eliminar duplicados
clasificar
función agregada
consultas anidadas
Grupo
unirse a la mesa
producto cartesiano
unión interna
conexión natural
unión externa
función de ventana
Definir ventana
función de clasificación
función de acceso
Crear usuario
otorgar permisos
Permisos de recuperación
tipo JSON
función de ventana
expresión de tabla común
vista
Escenarios de uso
Crear vista
Restricciones de uso
función
funciones integradas
Función definida por el usuario (UDF)
proceso
Proceso de creación
proceso de llamada
plan de ejecución
El principio de indexación.
Crear índice
índice ordinario
índice único
índice de prefijo
índice compuesto
Cosas a tener en cuenta
Instalar bibliotecas de terceros
Crear conexión
Obtener cursor
Ejecutar sentencia SQL
Obtener datos mediante el cursor
Confirmación y reversión de transacciones
Liberar conexión
Escribir scripts ETL
Ecosistema Hadoop
Descripción general de la colmena
Preparación
tipo de datos
operaciones DDL
operaciones DML
consulta de datos
Mecanismo de trabajo de la aplicación web.
Solicitudes y respuestas HTTP
Descripción general del marco de Django
Comience rápidamente en 5 minutos
Configuración de base de datos relacional
Utilice ORM para completar operaciones CRUD en el modelo
Uso de experiencia en gestión.
Mejores prácticas del modelo Django
Referencia de definición de modelo
Cargar recursos estáticos
Descripción general de Ajax
Implementar la función de votación usando Ajax.
Implementar seguimiento de usuarios
La relación entre cookies y sesiones.
Soporte del framework Django para sesiones.
Operaciones de lectura y escritura de cookies en funciones de visualización
Modificar encabezados de respuesta a través de HttpResponse
Utilice StreamingHttpResponse
para manejar archivos grandes
Utilice xlwt
para generar informes de Excel
Utilice reportlab
para generar informes en PDF
Utilice ECharts para generar gráficos frontales
Registro de configuración
Configurar la barra de herramientas Django-Debug
Optimizar el código ORM
¿Qué es el middleware?
Middleware integrado en el marco Django
Middleware personalizado y sus escenarios de aplicación.
Devolver datos en formato JSON
Renderizar la página con Vue.js
Descripción general del descanso
Comenzando con la biblioteca DRF
Desarrollo separado de front-end y back-end
Aplicación de JWT
Usar CBV
paginación de datos
Filtrado de datos
La primera ley de la optimización de sitios web.
Uso de Redis para proporcionar servicios de almacenamiento en caché en proyectos Django
Leer y escribir caché en la función de vista
Usar decoradores para implementar el almacenamiento en caché de páginas
Proporcionar servicios de almacenamiento en caché para interfaces de datos.
Control de formulario de carga de archivos y vista previa de archivos de imagen
Cómo manejar archivos cargados en el lado del servidor
La segunda ley de la optimización de sitios web.
Configurar el servicio de cola de mensajes
Utilice Celery para implementar la asincronización de tareas en el proyecto
Utilice Apio para implementar tareas programadas en el proyecto
Pruebas unitarias en Python
Soporte del framework Django para pruebas unitarias
Utilice un sistema de control de versiones
Configuración y uso de uWSGI
Separación dinámica y estática y configuración de Nginx.
Configurar HTTPS
Configurar la resolución de nombres de dominio
El concepto de rastreador web y sus campos de aplicación.
Discusión sobre la legalidad de los rastreadores web
Herramientas relacionadas para desarrollar rastreadores web
La composición de un programa rastreador.
Utilice requests
para implementar la captura de datos.
Tres formas de analizar páginas
Análisis de expresiones regulares
análisis XPath
Análisis del selector CSS
subprocesos múltiples
multiproceso
E/S asincrónicas
Instalar selenio
Cargar página
Encuentra elementos y simula el comportamiento del usuario.
Espera implícita y espera explícita.
Ejecutar código JavaScript
Grieta anti-rastreo de selenio
Configurar un navegador sin cabeza
Componentes centrales raspables
Flujo de trabajo scrapy
Instala Scrapy y crea el proyecto.
Escribir un programa araña
Escribir programas de middleware y canalización.
Archivo de configuración de Scrapy
Responsabilidades del analista de datos
Pila de habilidades de analista de datos
Bibliotecas relacionadas con el análisis de datos.
Instalar y usar anaconda
comandos relacionados con conda
Instalar y usar jupyter-lab
Instalar y comenzar
Consejos de uso
Crear objeto de matriz
Propiedades del objeto de matriz
Operaciones de índice en objetos de matriz
índice ordinario
índice elegante
índice booleano
índice de corte
Caso: uso de matrices para procesar imágenes
Métodos relacionados de objetos de matriz.
Obtener estadísticas descriptivas
Otros métodos relacionados
Operaciones de matriz
Operaciones de matriz y escalares
Matrices y operaciones con matrices.
función unaria universal
función binaria general
mecanismo de transmisión
Numerosas funciones comunes
vector
Determinante
matriz
polinomio
Crear objeto Series
Operaciones sobre objetos Series
Propiedades y métodos de los objetos Series
.
Crear objeto DataFrame
Propiedades y métodos del objeto DataFrame
Leer y escribir datos en DataFrame
Remodelación de datos
empalme de datos
Fusión de datos
Limpieza de datos
Valores faltantes
Valores duplicados
Valores atípicos
preprocesamiento
Datos dinámicos
Obtener estadísticas descriptivas
Clasificación y valores de encabezado
Agregación de grupos
Tablas dinámicas y tablas cruzadas
presentación de datos
Calcular la comparación año tras año
cálculo de ventana
Determinación de relevancia
Uso del índice
índice de rango
índice de categoría
índice multinivel
índice de intervalo
índice de fecha y hora
Instalar e importar matplotlib
Crear lienzo
Crear un sistema de coordenadas
Dibujar gráficos
gráfico de líneas
diagrama de dispersión
gráfico de barras
gráfico circular
histograma
diagrama de caja
Mostrar y guardar gráficos
Gráficos avanzados
gráfico de burbujas
gráfico de área
carta de radar
diagrama de rosa
gráficos 3D
nacido en el mar
Pyecharts
modelo de proceso de software
Product Backlog (historias de usuario, prototipos de producto).
Reuniones de planificación (evaluación y presupuestación).
Desarrollo diario (reuniones stand-up, técnica Pomodoro, programación en parejas, test first, refactoring de código...).
Corregir errores (descripción del problema, pasos para reproducirlo, evaluadores, asignados).
Versión de lanzamiento.
Reunión de revisión (Showcase, los usuarios deben participar).
Reunión retrospectiva (hacer un resumen del ciclo de iteración actual).
Individuos e interacciones sobre procesos y herramientas.
Software funcional sobre documentación exhaustiva
La cooperación con el cliente tiene prioridad sobre la negociación del contrato
Responder al cambio es mejor que seguir un plan
Análisis de viabilidad (si realizar la investigación o no) y generar el "Informe de análisis de viabilidad".
Análisis de requisitos (investigación sobre qué hacer), salida "Especificación de requisitos" y diagrama de prototipo de interfaz del producto.
Diseño de esquemas y diseño detallado, diagramas de modelos conceptuales de salida (diagramas ER), diagramas de modelos físicos, diagramas de clases, diagramas de secuencia, etc.
Codificación/Pruebas.
Conéctese en línea/mantenimiento.
Modelo de proceso clásico (modelo en cascada)
La mayor desventaja del modelo en cascada es que no puede aceptar cambios en la demanda. El producto no se puede ver hasta que se completa todo el proceso, lo que lleva a una baja moral del equipo.
Desarrollo ágil (Scrum) - propietario de producto, Scrum Master, desarrolladores - Sprint
Suplemento: Manifiesto para el desarrollo ágil de software
Rol: propietario del producto (la persona que decide qué hacer y puede tomar decisiones sobre los requisitos), líder del equipo (resuelve varios problemas, se centra en cómo trabajar mejor y protege la influencia externa en el equipo de desarrollo), equipo de desarrollo (ejecutivo del proyecto, Específicamente desarrolladores y probadores).
Preparación: caso de negocio y financiación, contratos, visión, requisitos iniciales del producto, plan de lanzamiento inicial, adquisición de participaciones accionarias, formación de un equipo.
Los equipos ágiles suelen tener entre 8 y 10 personas.
Estimación de la carga de trabajo: cuantifique las tareas de desarrollo, incluidos prototipos, diseño de logotipos, diseño de interfaz de usuario, desarrollo front-end, etc., e intente descomponer cada trabajo en la cantidad mínima de tarea. El estándar de cantidad mínima de tarea es que el tiempo de trabajo no puede exceder los dos días. y luego estimar el tiempo total del proyecto. Publique cada tarea en el tablero Kanban, que se divide en tres partes: por hacer (por completar), en progreso (en progreso) y hecho (completado).
Formación del equipo del proyecto.
Los comentarios del código son muy pocos o ningún comentario.
El código rompe las mejores prácticas del lenguaje
Programación antipatrones (código espagueti, programación copiar y pegar, programación del ego,…)
Composición y roles del equipo.
Nota: Gracias a la Sra. Fu Xiangying por ayudarme a dibujar el siguiente hermoso organigrama de la empresa.
Especificaciones de programación y revisión de código ( flake8
, pylint
)
Algunas "convenciones" en Python (consulte "Convenciones de Python: cómo escribir código Pythonic")
Razones que afectan la legibilidad del código:
Introducción a las herramientas de desarrollo de equipos.
Consulte "Problemas y soluciones en el desarrollo de proyectos en equipo".
Control de versiones: Git, Mercurio
Gestión de defectos: Gitlab, Redmine
Herramientas ágiles de circuito cerrado: ZenTao, JIRA
Integración continua: Jenkins, Travis-CI
Configuración del alcance del tema
CMS (cliente): sitio web de agregación de noticias, comunidad de intercambio/preguntas, sitio web de reseñas de películas/reseñas de libros, etc.
MIS (lado del usuario + lado de la gestión): KMS, sistema de evaluación de KPI, HRS, sistema CRM, sistema de cadena de suministro, sistema de gestión de almacenes, etc.
Backend de la aplicación (terminal de gestión + interfaz de datos): transacciones de segunda mano, diarios y revistas, comercio electrónico de nicho, noticias e información, viajes, redes sociales, lectura, etc.
Otros tipos: experiencia laboral y experiencia propia en la industria, el negocio es fácil de entender y controlar.
Comprensión de requisitos, división de módulos y asignación de tareas.
Comprensión de requisitos: lluvia de ideas y análisis de productos competitivos.
División de módulos: dibuje un mapa mental (XMind). Cada módulo es un nodo de rama y cada función específica es un nodo de hoja (expresado con verbos). Es necesario asegurarse de que cada nodo de hoja no pueda regenerar nuevos nodos y determinar cada hoja. Importancia, prioridad y carga de trabajo de los nodos.
Asignación de tareas: el líder del proyecto asigna tareas a cada miembro del equipo en función de los indicadores anteriores.
Desarrollar el cronograma del proyecto (actualizado diariamente)
módulo | Función | personal | estado | Finalizar | horas de trabajo | Comienza el plan | inicio real | El plan termina | final real | Observación |
---|---|---|---|---|---|---|---|---|---|---|
Comentario | Añadir comentario | Wang Da Chui | en curso | 50% | 4 | 2018/8/7 | 2018/8/7 | |||
Eliminar comentario | Wang Da Chui | esperar | 0% | 2 | 2018/8/7 | 2018/8/7 | ||||
Ver comentarios | Bai Yuanfang | en curso | 20% | 4 | 2018/8/7 | 2018/8/7 | Se requiere revisión de código | |||
Voto de comentario | Bai Yuanfang | esperar | 0% | 4 | 2018/8/8 | 2018/8/8 |
OOAD y diseño de bases de datos.
Diagrama de clases para UML (Lenguaje de modelado unificado)
Cree una tabla a través del modelo (ingeniería directa). Por ejemplo, en un proyecto Django, puede crear una tabla bidimensional mediante el siguiente comando.
Aplicación Python Manage.py para realizar migraciones. python administrar.py migrar
Utilice PowerDesigner para dibujar diagramas de modelos físicos.
Cree un modelo (ingeniería inversa) a través de una tabla de datos. Por ejemplo, en un proyecto Django, puede generar un modelo mediante el siguiente comando.
python administrar.py inspeccionadb > aplicación/modelos.py
Introducción a Docker
Instalar ventana acoplable
Cree contenedores usando Docker (Nginx, MySQL, Redis, Gitlab, Jenkins)
Cree una imagen de Docker (escritura de Dockerfile e instrucciones relacionadas)
Orquestación de contenedores (Docker-compose)
Gestión de clústeres (Kubernetes)
principios básicos
motor innodb
Uso y precauciones del índice
partición de datos
optimización SQL
Optimización de la configuración
Optimización de la arquitectura
principios de diseño
preguntas clave
Otras preguntas
Redacción de documentos
Configuración de la base de datos (múltiples bases de datos, replicación maestro-esclavo, enrutamiento de bases de datos)
Configuración de caché (caché de partición, configuración de claves, configuración de tiempo de espera, replicación maestro-esclavo, recuperación de fallas (Sentinel))
Configuración de registro
Creación de perfiles y depuración (Django-Debug-ToolBar)
Módulos útiles de Python (cálculo de fechas, procesamiento de imágenes, cifrado de datos, API de terceros)
Arquitectura RESTful
Comprender la arquitectura RESTful
Pautas de diseño de API RESTful
Mejores prácticas de API RESTful
Escribir documentación de la interfaz API
RAP2
YAPI
Aplicación de django-REST-framework
Utilice el almacenamiento en caché para aliviar la presión de la base de datos - Redis
Utilice colas de mensajes para desacoplar y recortar picos - Celery + RabbitMQ
tipo de prueba
Escribir pruebas unitarias ( unittest
, pytest
, nose2
, tox
, ddt
,...)
Cobertura de prueba ( coverage
)
Preparación antes del despliegue
Configuración de claves (SECRET_KEY / DEBUG / ALLOWED_HOSTS / caché / base de datos)
HTTPS/CSRF_COOKIE_SECUR/SESSION_COOKIE_SECURE
Configuración relacionada con el registro
Revisión de comandos comunes de Linux
Instalación y configuración de servicios comunes de Linux.
Uso de uWSGI/Gunicorn y Nginx
Para aplicaciones simples que no requieren mucha personalización, Gunicorn es una buena opción. La curva de aprendizaje de uWSGI es mucho más pronunciada que la de Gunicorn y los parámetros predeterminados de Gunicorn ya se pueden adaptar a la mayoría de las aplicaciones.
uWSGI admite una implementación heterogénea.
Dado que Nginx es compatible con uWSGI, Nginx y uWSGI generalmente se implementan juntos en línea, y uWSGI es un middleware WSGI completamente funcional y altamente personalizado.
En términos de rendimiento, Gunicorn y uWSGI funcionan igualmente bien.
Comparación de Gunicorn y uWSGI
Implementar un entorno de prueba y un entorno de producción utilizando tecnología de virtualización (Docker)
Uso de AB
Uso de SQLslap
Uso del banco de sistemas
Pruebas automatizadas usando Shell y Python
Pruebas automatizadas con Selenium
IDE de selenio
Controlador web de selenio
Control remoto de selenio
Introducción a la herramienta de prueba Robot Framework
Modelo de negocio y puntos de requisitos.
Diseño de modelo físico.
Inicio de sesión de terceros
Calentamiento de caché y almacenamiento en caché de consultas
Implementación del carrito de compras
Integración de la función de pago
Ventas flash y problemas de sobreventa
Gestión de recursos estáticos
Solución de búsqueda de texto completo
Ajuste de la base de datos MySQL
Optimización del rendimiento del servidor web
Configuración de equilibrio de carga de Nginx
Keepalived logra alta disponibilidad
Ajuste del rendimiento del código
subprocesos múltiples
Asincronización
Optimización del acceso a recursos estáticos
almacenamiento en la nube
CDN
conceptos básicos de informática
Conceptos básicos de Python
Relacionado con el marco web
Problemas relacionados con los reptiles
análisis de datos
Relacionado con el proyecto