Auteur : Luo Hao
Remarque : Depuis le lancement du projet jusqu'à l'acquisition des étoiles 8w+, nous avons reçu des retours selon lesquels la partie de base (le contenu des 15 premiers jours) est difficile pour les novices. Il est recommandé d'avoir des vidéos à l'appui pour l'expliquer. Récemment, la partie de base du contenu a été refaite dans un projet appelé "Python-Core-50-Courses". Cette partie du contenu a été réécrite d'une manière plus simple et plus populaire et est accompagnée d'explications vidéo. regardez ce nouvel entrepôt. Si les utilisateurs nationaux mettent du temps à accéder à GitHub, ils peuvent suivre mon compte Zhihu Python-Jack . La colonne ci-dessus "Apprendre Python à partir de zéro" est plus adaptée aux débutants. D'autres colonnes telles que "Pensée sur les données et pensée statistique", "Basé sur Python". " " L'analyse des données ", etc. sont également continuellement créées et mises à jour. Tout le monde est invité à y prêter attention, à aimer et à commenter.
Les amis qui souhaitent obtenir des vidéos d'apprentissage peuvent scanner le code QR ci-dessous pour accéder au mini-programme WeChat et voir s'il existe un contenu qui vous convient. Le contenu d'apprentissage automatique auquel tout le monde pense se trouve dans le mini-programme, qui a été enregistré pour vous par mes collègues et moi.
Si vous rencontrez des problèmes difficiles ou avez besoin de ressources d'apprentissage pertinentes pendant le processus d'apprentissage, vous pouvez rejoindre le groupe de communication QQ suivant. Vous pouvez rejoindre l'un des trois groupes. Veuillez ne pas rejoindre le groupe à plusieurs reprises et ne pas publier dans le groupe. Publicité et autres contenus pornographiques, vulgaires ou sensibles. Si vous manquez d'autodiscipline et devez payer pour apprendre, vous pouvez ajouter mon chat privé WeChat (jackfrued) et noter votre nom et vos besoins. Je vous fournirai des conseils sur les plans d'études et la planification de carrière .
Les vidéos de support sont continuellement mises à jour sur Douyin et Bilibili. Les amis intéressés peuvent suivre mon compte Douyin ou Bilibili. Je viens d'ouvrir mon compte récemment. J'espère que vous pourrez me soutenir beaucoup.
Le "Machine Learning et Deep Learning" que tout le monde a demandé de mettre à jour est au point mort pour des raisons personnelles et professionnelles. Le contenu associé sera mis à jour dans un avenir proche. Merci pour votre soutien et votre compréhension continus.
En termes simples, Python est un langage de programmation « élégant », « clair » et « simple ».
Faible courbe d'apprentissage, même les non-professionnels peuvent se lancer
Système open source avec un écosystème solide
Langage interprété, portabilité parfaite de la plateforme
Langage typé dynamiquement qui prend en charge la programmation orientée objet et fonctionnelle
Le code est hautement standardisé et lisible
Python est utile dans les domaines suivants.
Développement backend-Python/Java/Go/PHP
DevOps-Python/Shell/Ruby
Acquisition de données - Python/C++/Java
Trading quantitatif - Python/C++/R
Science des données - Python/R/Julia/Matlab
Apprentissage automatique - Python/R/C++/Julia
Tests automatisés - Python/Shell
En tant que développeur Python, vous avez le choix entre de nombreux domaines d'emploi en fonction de vos préférences personnelles et de vos projets de carrière.
Ingénieur développement back-end Python (serveur, plateforme cloud, interface de données)
Ingénieur exploitation et maintenance Python (exploitation et maintenance automatisées, SRE, DevOps)
Analyste de données Python (analyse de données, business intelligence, opérations numériques)
Ingénieur en data mining Python (machine learning, deep learning, expert en algorithmes)
Ingénieur robot d'exploration Python
Ingénieur de tests Python (tests automatisés, développement de tests)
Remarque : Actuellement, l'analyse et l'exploration de données sont des directions très populaires , car l'industrie Internet et les industries traditionnelles ont accumulé une grande quantité de données, et tous les horizons ont besoin d'analystes de données pour découvrir davantage d'informations commerciales à partir des données existantes, ce qui leur donne de la valeur. fournir un support de données pour la prise de décision d'entreprise, ce que l'on appelle la prise de décision basée sur les données.
Quelques suggestions pour les débutants :
Faites de l’anglais votre langue de travail.
La pratique rend parfait.
Toute expérience vient d'erreurs.
Ne faites pas partie des sangsues.
Soit exceptionnel, soit sorti (soit exceptionnel, soit sorti).
Introduction à Python - Histoire de Python/Avantages et inconvénients de Python/Champs d'application de Python
Construire un environnement de programmation - Environnement Windows/Environnement Linux/Environnement MacOS
Exécuter le programme Python depuis le terminal - Bonjour tout le monde / fonction print
/ exécuter le programme
Utilisation d'IDLE - Environnement interactif (REPL) / Écrire plusieurs lignes de code / Exécuter le programme / Quitter IDLE
Commentaires - le rôle des commentaires/commentaires sur une seule ligne/commentaires sur plusieurs lignes
Programmes et base - Instructions et programmes/Machine Von Neumann/Binaire et décimal/Octal et hexadécimal
Variables et types - dénomination des variables/utilisation des variables/fonctions input
/vérification des types de variables/conversion de type
Nombres et chaînes - entiers/nombres à virgule flottante/nombres complexes/chaînes/opérations de base sur les chaînes/codage de caractères
Opérateurs - opérateurs mathématiques/opérateurs d'affectation/opérateurs de comparaison/opérateurs logiques/opérateurs d'identité/précédence des opérateurs
Cas d'application - Convertir la température Fahrenheit en température Celsius / Entrez le rayon du cercle pour calculer la circonférence et la surface / Entrez l'année pour déterminer s'il s'agit d'une année bissextile
Scénarios d'application des structures de branches - conditions/indentation/blocs de code/organigrammes
instruction if - simple if
/ if
- structure else
/ if
- elif
- structure else
/ if
imbriqué
Cas d'application - Authentification de l'utilisateur/Échange d'unités impériales et d'unités métriques/Lancer des dés pour décider quoi faire/Conversion des scores centiles en système de notation/Évaluation des fonctions par morceaux/Saisie des longueurs de trois côtés et calcul du périmètre et de l'aire si un triangle peut être formé
Scénarios d'application des structures de boucles - conditions/indentation/blocs de code/organigrammes
boucle while - structure de base/instruction break
/instruction continue
boucle for - structure de base/type range
/structure de branche dans la boucle/boucle imbriquée/terminer le programme plus tôt
Cas d'application - Sommation 1 ~ 100 / Détermination des nombres premiers / Jeux de devinettes / Impression de quatre-vingt-dix-neuf tableaux / Impression de motifs triangulaires / Singe mangeant des pêches / Des centaines de pièces et des centaines de poulets
Cas classiques : Numéro de Narcisse/Cent argent et Cent poulets/Jeu de jeu de craps
Questions pratiques : Séquence de Fibonacci/Nombres parfaits/Nombres premiers
Le rôle des fonctions - la mauvaise odeur du code/encapsuler des modules fonctionnels avec des fonctions
Définir la fonction - mot-clé def
/nom de la fonction/liste de paramètres/instruction return
/appel d'une fonction personnalisée
Appel de fonctions - Fonctions intégrées Python/importation de modules et de fonctions
Paramètres de fonction - paramètres par défaut/paramètres de variable/paramètres de mot-clé/paramètres de mot-clé nommé
Valeur de retour de la fonction - aucune valeur de retour / renvoie une valeur unique / renvoie plusieurs valeurs
Problèmes de portée : portée locale/portée imbriquée/portée globale/portée intégrée/mots clés liés à la portée
Utilisation des fonctions de gestion de modules - le concept de modules/utilisation de fonctions de gestion de modules personnalisées/que se passe-t-il en cas de conflit de nom (le même module et des modules différents)
Utilisation de chaînes - calcul de longueur/opération d'indice/tranchage/méthodes courantes
Utilisation de base des listes - définir des listes/utiliser le tableau suivant pour accéder aux éléments/indice hors limites/ajouter des éléments/supprimer des éléments/modifier des éléments/tranche/traversée en boucle
Opérations courantes sur les listes - connexion/copie (copier des éléments et copier des tableaux)/longueur/tri/inverse/recherche
Générer des listes - utilisez range
pour créer des listes de nombres/générer des expressions/générateurs
Utilisation de tuples - définir des tuples/utiliser les valeurs dans les tuples/modifier les variables de tuple/conversions de tuple et de liste
Utilisation de base des ensembles - la différence entre les ensembles et les listes/créer un ensemble/ajouter des éléments/supprimer des éléments/effacer
Opérations courantes sur les ensembles - intersection/union/différence/différence symétrique/sous-ensemble/superensemble
Utilisation de base du dictionnaire - caractéristiques du dictionnaire/créer un dictionnaire/ajouter un élément/supprimer un élément/obtenir une valeur/effacer
Opérations courantes du dictionnaire - méthode keys
/méthode values
/méthode items
/méthode setdefault
Exercices de base - Effet chapiteau/Trouver le plus grand élément d'une liste/Le score moyen des résultats des tests statistiques/Séquence de Fibonacci/Triangle Yang Hui
Mallette complète - Sélection de numéro de boule double couleur/Tic-Tac-Toe
Classes et objets - Qu'est-ce qu'une classe/Qu'est-ce qu'un objet/Autres concepts connexes de l'orientation objet
Définir la classe - structure de base/propriétés et méthodes/constructeur/destructeur/ __str__
str__method
Utilisation d'objets - Créer des objets/Envoyer des messages aux objets
Les quatre piliers de l'orientation objet - abstraction/encapsulation/héritage/polymorphisme
Exercices de base - définir la classe d'étudiant/définir la classe d'horloge/définir la classe de graphisme/définir la classe de voiture
Propriétés - propriétés de classe/propriétés d'instance/accesseurs de propriété/modificateurs de propriété/supprimeurs de propriété/utilisation de __slots__
Méthodes dans les classes - méthodes d'instance/méthodes de classe/méthodes statiques
Surcharge de l'opérateur - __add__
/ __sub__
/ __or__
/ __getitem__
/ __setitem__
/ __len__
/ __gt__
/ __lt__
/ __le__
/ __ge__
/ __ge__ / __eq__
/ __ne__
__contains__
__repr__
Relation entre classes (objets) - association/héritage/dépendance
Héritage et polymorphisme - qu'est-ce que l'héritage/syntaxe d'héritage/appel de méthodes de classe parent/remplacement de méthode/détermination de type/héritage multiple/héritage de diamant (héritage de diamant) et algorithme C3
Système complet de règlement des salaires/système de remise automatique sur les livres/catégorie de score personnalisée
Développer des programmes GUI en utilisant tkinter
Développer des applications de jeu à l'aide de la bibliothèque tierce pygame
Jeu "La grosse balle mange la petite balle"
Lire le fichier - lire le fichier en entier / lire ligne par ligne / chemin du fichier
Écrire un fichier - écraser/ajouter/fichier texte/fichier binaire
Gestion des exceptions - l'importance du mécanisme d'exception/ try
- except
bloc de code/ else
bloc de code/ finally
bloc de code/type d'exception intégré/pile d'exception/instruction raise
Persistance des données - Présentation du fichier CSV/Application du module csv
/Format de données JSON/Application du module json
Opérations avancées sur les chaînes - Caractères d'échappement/chaînes brutes/chaînes multilignes/opérateurs in
et not in
/méthodes is_xxx
/méthodes join
et split
/méthodes liées strip
/module pyperclip
/chaînes immuables et chaînes variables/Utilisation de StringIO
Introduction aux expressions régulières - le rôle des expressions régulières/métacaractères/échappement/quantificateurs/groupement/assertions de largeur nulle/correspondance gourmande et correspondance paresseuse paresseuse/utiliser le module re
pour implémenter des opérations d'expression régulière (correspondance, recherche, remplacement, capture)
Utilisation d'expressions régulières - re
module/fonction compile
/méthode group
et groups
/méthode match
/méthode search
/méthode findall
et finditer
/méthode sub
et subn
/méthode split
Cas d'application - Utiliser des expressions régulières pour valider les chaînes d'entrée
Concepts de processus et de threads - Qu'est-ce qu'un processus / Qu'est-ce qu'un thread / Scénarios d'application multi-threading
Utilisation de processus - fonction fork
/module multiprocessing
/pool de processus/communication inter-processus
Utilisation de threads - module threading
/classe Thread
/classe RLock
/classe Condition
/pool de threads
Notions de base sur les réseaux informatiques – Historique du développement des réseaux informatiques/Modèle « TCP-IP »/Adresse IP/Port/Protocole/Autres concepts connexes
Mode application réseau - Mode "Client-Serveur" / Mode "Navigateur-Serveur"
Accéder aux ressources réseau basées sur le protocole HTTP - Présentation de l'API réseau/URL d'accès/ requests
à une bibliothèque tierce/Analyser les données au format JSON
Programmation réseau Python - le concept de sockets/module socket
/fonction socket
/créer un serveur TCP/créer un client TCP/créer un serveur UDP/créer un client UDP
E-mail - SMTP/POP3/IMAP/ module smtplib
/ module poplib
/ module imaplib
Service SMS - Appeler la passerelle du service SMS
Utilisez Pillow pour traiter des images - lecture et écriture d'images/synthèse d'images/transformation géométrique/conversion de couleurs/effets de filtre
Lecture et rédaction de documents Word - traitement du contenu du texte/paragraphes/en-têtes et pieds de page/traitement du style
Lire et écrire des fichiers Excel - xlrd
/ xlwt
/ openpyxl
Structures de données communes
Utilisation avancée des fonctions - "Citoyens de première classe" / Fonctions d'ordre supérieur / Fonctions Lambda / Portée et fermetures / Décorateurs
Connaissances avancées orientées objet - "Trois Piliers" / Relation entre classes / Garbage collection / Propriétés et méthodes magiques / Mélange / Métaclasse / Principes de conception orientés objet / Modèle de conception GoF
Itérateurs et générateurs - Méthodes magiques associées/Deux façons de créer un générateur/
Programmation simultanée et asynchrone - multi-threading/multi-processus/asynchrone IO/ async
et awai
Utiliser des balises HTML pour transporter le contenu de la page
Rendre la page avec CSS
Gestion du comportement interactif avec JavaScript
Démarrer avec jQuery et l'améliorer
Premiers pas avec Vue.js
Utilisation de l'élément
Utilisation de Bootstrap
Historique de développement du système d'exploitation et aperçu de Linux
Commandes de base Linux
Utilitaires sous Linux
Système de fichiers Linux
Application d'édition Vim
Variables d'environnement et programmation shell
Installation du logiciel et configuration des services
Accès et gestion du réseau
Autre contenu connexe
Présentation des bases de données relationnelles
Introduction à MySQL
InstallerMySQL
Commandes de base MySQL
Construire une base de données et une table
Supprimer et modifier des tableaux
opération d'insertion
opération de suppression
opération de mise à jour
Projections et pseudonymes
Filtrer les données
Gestion des valeurs nulles
Supprimer les doublons
trier
fonction d'agrégation
Requêtes imbriquées
Groupe
jointure de table
produit cartésien
jointure interne
connexion naturelle
jointure externe
fonction de fenêtre
Définir la fenêtre
fonction de classement
fonction d'accès
Créer un utilisateur
accorder des autorisations
Rappeler les autorisations
Type JSON
fonction de fenêtre
expression de table commune
voir
Scénarios d'utilisation
Créer une vue
Restrictions d'utilisation
fonction
fonctions intégrées
Fonction définie par l'utilisateur (UDF)
processus
Processus de création
Processus d'appel
plan d'exécution
Le principe de l'indexation
Créer un index
Indice ordinaire
indice unique
index de préfixe
indice composite
Choses à noter
Installer des bibliothèques tierces
Créer une connexion
Obtenir le curseur
Exécuter l'instruction SQL
Récupérer des données via le curseur
Validation et restauration des transactions
Libérer la connexion
Écrire des scripts ETL
Écosystème Hadoop
Aperçu de la ruche
Préparation
type de données
Opérations DDL
Opérations DML
Requête de données
Mécanisme de fonctionnement des applications Web
Requêtes et réponses HTTP
Présentation du framework Django
Démarrez rapidement en 5 minutes
Configuration de base de données relationnelle
Utilisez ORM pour effectuer les opérations CRUD sur le modèle
Utilisation de connaissances en gestion
Meilleures pratiques du modèle Django
Référence de définition du modèle
Charger des ressources statiques
Ajax en résumé
Implémenter la fonction de vote en utilisant Ajax
Mettre en œuvre le suivi des utilisateurs
La relation entre les cookies et les sessions
Prise en charge des sessions par le framework Django
Opérations de lecture et d'écriture des cookies dans les fonctions de visualisation
Modifier les en-têtes de réponse via HttpResponse
Utilisez StreamingHttpResponse
pour gérer des fichiers volumineux
Utilisez xlwt
pour générer des rapports Excel
Utilisez reportlab
pour générer des rapports PDF
Utilisez ECharts pour générer des graphiques front-end
Journal de configuration
Configurer Django-Debug-Toolbar
Optimiser le code ORM
Qu'est-ce qu'un middleware
Middleware intégré au framework Django
Middleware personnalisé et ses scénarios d'application
Renvoie les données au format JSON
Rendre la page avec Vue.js
Aperçu REST
Premiers pas avec la bibliothèque DRF
Développement séparé du front-end et du back-end
Application de JWT
Utiliser le CBV
Pagination des données
Filtrage des données
La première loi de l’optimisation des sites Web
Utiliser Redis pour fournir des services de mise en cache dans les projets Django
Lire et écrire le cache dans la fonction d'affichage
Utiliser des décorateurs pour implémenter la mise en cache des pages
Fournir des services de mise en cache pour les interfaces de données
Contrôle du formulaire de téléchargement de fichiers et aperçu du fichier image
Comment gérer les fichiers téléchargés côté serveur
La deuxième loi de l’optimisation des sites Web
Configurer le service de file d'attente de messages
Utilisez Celery pour implémenter l'asynchronisation des tâches dans le projet
Utilisez Celery pour implémenter les tâches planifiées dans le projet
Tests unitaires en Python
Prise en charge du framework Django pour les tests unitaires
Utiliser un système de contrôle de version
Configuration et utilisation de uWSGI
Séparation dynamique et statique et configuration Nginx
Configurer HTTPS
Configurer la résolution du nom de domaine
Le concept de web crawler et ses domaines d’application
Discussion sur la légalité des robots d'exploration du Web
Outils associés pour le développement de robots d'exploration Web
La composition d'un programme d'exploration
Utiliser requests
pour implémenter la capture de données
Trois façons d'analyser les pages
Analyse d'expressions régulières
Analyse XPath
Analyse du sélecteur CSS
multithreading
multi-processus
E/S asynchrones
Installer Sélénium
Charger la page
Rechercher des éléments et simuler le comportement des utilisateurs
Attente implicite et attente explicite
Exécuter le code JavaScript
Fissure anti-rampage au sélénium
Configurer un navigateur sans tête
Composants de base scrapy
Flux de travail décevant
Installez Scrapy et créez le projet
Écrire un programme araignée
Écrire des programmes middleware et pipeline
Fichier de configuration Scrapy
Responsabilités de l'analyste de données
Pile de compétences d’analyste de données
Bibliothèques liées à l'analyse des données
Installer et utiliser Anaconda
commandes liées à conda
Installer et utiliser jupyter-lab
Installer et démarrer
Conseils d'utilisation
Créer un objet tableau
Propriétés de l'objet tableau
Opérations d'indexation sur les objets tableau
Indice ordinaire
index fantaisie
index booléen
indice de tranche
Cas : Utilisation de tableaux pour traiter des images
Méthodes associées aux objets tableau
Obtenez des statistiques descriptives
Autres méthodes connexes
Opérations sur les tableaux
Opérations matricielles et scalaires
Tableaux et opérations sur les tableaux
Fonction unaire universelle
fonction binaire générale
mécanisme de diffusion
Fonctions communes de Numpy
vecteur
Déterminant
matrice
polynôme
Créer un objet Series
Opérations sur les objets Series
Propriétés et méthodes des objets Series
Créer un objet DataFrame
Propriétés et méthodes des objets DataFrame
Lire et écrire des données dans DataFrame
Remodelage des données
Épissage des données
Fusion de données
Nettoyage des données
Valeurs manquantes
Valeurs en double
Valeurs aberrantes
prétraitement
Données pivots
Obtenez des statistiques descriptives
Tri et valeurs d'en-tête
Agrégation de groupes
Tableaux croisés et tableaux croisés
Présentation des données
Calculer la comparaison d'une année sur l'autre
calcul de fenêtre
Détermination de la pertinence
Utilisation de l'index
indice de plage
Index des catégories
index multiniveau
indice d'intervalle
index date/heure
Installer et importer matplotlib
Créer une toile
Créer un système de coordonnées
Dessiner des graphiques
Graphique linéaire
Nuage de points
graphique à barres
diagramme circulaire
Histogramme
boîte à moustaches
Afficher et enregistrer des graphiques
Graphiques avancés
graphique à bulles
graphique en aires
carte radar
diagramme de roses
Graphiques 3D
Né de la mer
Graphiques pycharts
modèle de processus logiciel
Product Backlog (user stories, prototypes de produits).
Réunions de planification (évaluation et budgétisation).
Développement quotidien (stand-up meetings, technique Pomodoro, programmation en binôme, test first, refactoring de code...).
Correction des bugs (description du problème, étapes à reproduire, testeurs, responsables).
Version de sortie.
Réunion de révision (Showcase, les utilisateurs doivent participer).
Réunion rétrospective (faire une synthèse du cycle d'itération en cours).
Individus et interactions sur les processus et les outils
Logiciel fonctionnel sur une documentation complète
La coopération avec le client prime sur la négociation contractuelle
Mieux vaut réagir au changement que suivre un plan
Analyse de faisabilité (si la recherche doit être effectuée ou non) et production du « Rapport d'analyse de faisabilité ».
Analyse des exigences (recherche sur ce qu'il faut faire), sortie « Spécification des exigences » et diagramme de prototype d'interface produit.
Conception d'ensemble et conception détaillée, diagrammes de modèle conceptuel de sortie (diagrammes ER), diagrammes de modèle physique, diagrammes de classes, diagrammes de séquence, etc.
Codage/Test.
Allez en ligne/maintenance.
Modèle de processus classique (modèle en cascade)
Le plus gros inconvénient du modèle en cascade est qu’il ne peut pas prendre en compte les changements de la demande. Le produit n’est pas visible tant que l’ensemble du processus n’est pas terminé, ce qui entraîne une baisse du moral de l’équipe.
Développement Agile (Scrum) - Product Owner, Scrum Master, développeurs - Sprint
Supplément : Manifeste pour le développement de logiciels agiles
Rôle : propriétaire du produit (la personne qui décide quoi faire et peut prendre des décisions sur les exigences), chef d'équipe (résout divers problèmes, se concentre sur la façon de mieux travailler et protège l'influence externe sur l'équipe de développement), équipe de développement (directeur de projet, Plus précisément les développeurs et les testeurs).
Préparation : analyse de rentabilisation et financement, contrats, vision, exigences initiales du produit, plan de sortie initial, prise de participation, constitution d'une équipe.
Les équipes agiles comptent généralement 8 à 10 personnes.
Estimation de la charge de travail : quantifiez les tâches de développement, y compris les prototypes, la conception de logos, la conception d'interface utilisateur, le développement front-end, etc., et essayez de décomposer chaque travail en un montant minimum de tâches. La norme relative au montant minimum des tâches est que le temps de travail ne peut pas dépasser deux jours. , puis estimez la durée globale du projet . Affichez chaque tâche sur le tableau Kanban, qui est divisé en trois parties : à faire (à terminer), en cours (en cours) et terminé (terminé).
Constitution de l'équipe projet
Les commentaires du code sont trop peu nombreux ou inexistants
Le code brise les meilleures pratiques linguistiques
Programmation anti-modèle (code spaghetti, programmation copier-coller, programmation ego,…)
Composition et rôles de l'équipe
Remarque : Merci à Mme Fu Xiangying de m'avoir aidé à dessiner le magnifique organigramme de l'entreprise suivant.
Spécifications de programmation et révision du code ( flake8
, pylint
)
Quelques "conventions" en Python (veuillez vous référer à "Conventions Python - Comment écrire du code pythonique")
Raisons qui affectent la lisibilité du code :
Introduction aux outils de développement d'équipe
Veuillez vous référer à « Problèmes et solutions dans le développement de projets en équipe ».
Contrôle de version : Git, Mercury
Gestion des défauts : Gitlab, Redmine
Outils agiles en boucle fermée : ZenTao, JIRA
Intégration continue : Jenkins, Travis-CI
Paramètre de portée du sujet
CMS (client) : site d'agrégation d'actualités, communauté de questions/réponses/partage, site de critiques de films/critiques de livres, etc.
MIS (côté utilisateur + côté gestion) : KMS, système d'évaluation des KPI, HRS, système CRM, système de chaîne d'approvisionnement, système de gestion d'entrepôt, etc.
Backend d'application (terminal de gestion + interface de données) : transactions d'occasion, journaux et magazines, e-commerce de niche, actualités et informations, voyages, réseaux sociaux, lecture, etc.
Autres types : Posséder une expérience dans le secteur et une expérience professionnelle, les affaires sont faciles à comprendre et à contrôler.
Compréhension des besoins, division des modules et répartition des tâches
Compréhension des besoins : brainstorming et analyse des produits compétitifs.
Division des modules : dessinez une carte mentale (XMind). Chaque module est un nœud de branche, et chaque fonction spécifique est un nœud feuille (exprimé par des verbes). Il est nécessaire de s'assurer que chaque nœud feuille ne peut pas régénérer de nouveaux nœuds et déterminer chaque feuille. Importance, priorité et charge de travail des nœuds.
Répartition des tâches : le chef de projet attribue des tâches à chaque membre de l'équipe en fonction des indicateurs ci-dessus.
Élaborer le calendrier du projet (mis à jour quotidiennement)
module | Fonction | personnel | État | Finition | heures de travail | Le plan commence | Début réel | Fin du forfait | fin réelle | Remarque |
---|---|---|---|---|---|---|---|---|---|---|
Commentaire | Ajouter un commentaire | Wang Dahui | en cours | 50% | 4 | 2018/8/7 | 2018/8/7 | |||
Supprimer le commentaire | Wang Dahui | attendez | 0% | 2 | 2018/8/7 | 2018/8/7 | ||||
Afficher les commentaires | Bai Yuanfang | en cours | 20% | 4 | 2018/8/7 | 2018/8/7 | Révision du code requise | |||
Votez pour les commentaires | Bai Yuanfang | attendez | 0% | 4 | 2018/8/8 | 2018/8/8 |
OOAD et conception de bases de données
Diagramme de classes pour UML (Unified Modeling Language)
Créez une table via le modèle (ingénierie avancée). Par exemple, dans un projet Django, vous pouvez créer une table bidimensionnelle via la commande suivante.
application python manage.py makemigrations python manage.py migrer
Utilisez PowerDesigner pour dessiner des diagrammes de modèles physiques.
Créez un modèle (ingénierie inverse) via une table de données Par exemple, dans un projet Django, vous pouvez générer un modèle via la commande suivante.
python manage.py inspectdb > app/models.py
Introduction à Docker
Installer Docker
Créer des conteneurs à l'aide de Docker (Nginx, MySQL, Redis, Gitlab, Jenkins)
Créer une image Docker (écriture Dockerfile et instructions associées)
Orchestration de conteneurs (Docker-compose)
Gestion des clusters (Kubernetes)
principes de base
Moteur InnoDB
Utilisation de l'index et précautions
partition de données
Optimisation SQL
Optimisation des configurations
Optimisation de l'architecture
principes de conception
questions clés
Autres questions
Rédaction de documents
Configuration de la base de données (bases de données multiples, réplication maître-esclave, routage de la base de données)
Configuration du cache (cache de partition, paramètres de clé, paramètres de délai d'attente, réplication maître-esclave, reprise après incident (Sentinel))
Configuration du journal
Profilage et débogage (Django-Debug-ToolBar)
Modules Python utiles (calcul de date, traitement d'image, cryptage de données, API tierce)
Architecture REST
Comprendre l'architecture RESTful
Directives de conception d'API RESTful
Bonnes pratiques de l'API RESTful
Rédaction de la documentation de l'interface API
RAP2
YAPI
Application du framework Django-REST
Utiliser la mise en cache pour soulager la pression de la base de données - Redis
Utiliser les files d'attente de messages pour le découplage et l'écrêtage des pics - Celery + RabbitMQ
Type d'examen
Écrire des tests unitaires ( unittest
, pytest
, nose2
, tox
, ddt
,...)
Couverture des tests ( coverage
)
Préparation avant le déploiement
Paramètres clés (SECRET_KEY / DEBUG / ALLOWED_HOSTS / cache / base de données)
HTTPS/CSRF_COOKIE_SECUR/SESSION_COOKIE_SECURE
Configuration liée au journal
Examen des commandes Linux courantes
Installation et configuration des services Linux courants
Utilisation de uWSGI/Gunicorn et Nginx
Pour les applications simples qui ne nécessitent pas beaucoup de personnalisation, Gunicorn est un bon choix. La courbe d'apprentissage de uWSGI est beaucoup plus abrupte que celle de Gunicorn, et les paramètres par défaut de Gunicorn peuvent déjà être adaptés à la plupart des applications.
uWSGI prend en charge le déploiement hétérogène.
Étant donné que Nginx lui-même prend en charge uWSGI, Nginx et uWSGI sont généralement déployés ensemble en ligne, et uWSGI est un middleware WSGI entièrement fonctionnel et hautement personnalisé.
En termes de performances, Gunicorn et uWSGI fonctionnent tout aussi bien.
Comparaison de Gunicorn et uWSGI
Déployer un environnement de test et un environnement de production à l'aide de la technologie de virtualisation (Docker)
Utilisation de l'AB
Utilisation de SQLslap
Utilisation de Sysbench
Tests automatisés à l'aide de Shell et Python
Tests automatisés avec Selenium
IDE sélénium
Pilote Web Sélénium
Télécommande au sélénium
Introduction à l'outil de test Robot Framework
Modèle commercial et points d’exigences
Conception de modèles physiques
Connexion tierce
Préchauffage du cache et mise en cache des requêtes
Mise en place du panier d'achat
Intégration de la fonction de paiement
Ventes flash et problèmes de survente
Gestion des ressources statiques
Solution de recherche en texte intégral
Optimisation de la base de données MySQL
Optimisation des performances du serveur Web
Configuration de l'équilibrage de charge Nginx
Keepalived atteint la haute disponibilité
Optimisation des performances du code
multithreading
Asynchronisation
Optimisation de l'accès aux ressources statiques
stockage en nuage
CDN
bases de l'informatique
Les bases de Python
Lié au framework Web
Problèmes liés aux reptiles
analyse des données
Lié au projet