Les écueils rencontrés au travail et ma propre façon d'apprendre et de m'éclairer

Bonjour les amis, aujourd'hui je vais partager avec vous les pièges que j'ai rencontrés au travail et certaines de mes propres cognitions et compréhensions au travail, en espérant vous apporter quelques gains et inspirations.


1. Bases de données par défaut Redis 16 et leurs fonctions :

        La première chose à noter est la compréhension de redis. Tout d'abord, Redis est un serveur de stockage structuré par dictionnaire. En fait, l'instance Redis fournit plusieurs dictionnaires pour stocker les données. Le client peut spécifier dans quel dictionnaire stocker la base de données. Ceci est similaire à la création de plusieurs bases de données dans MySQL, et chaque dictionnaire peut être compris comme une base de données indépendante. Cette base de données ne repose que sur une seule machine, s'il s'agit d'un cluster, il n'y a pas de notion de base de données.

        Chaque base de données est nommée en externe avec un nombre croissant à partir de 0. Redis prend en charge 16 bases de données par défaut (d'autres peuvent être prises en charge via le fichier de configuration, pas de limite supérieure). Autrement dit, modifiez le numéro derrière la base de données dans le fichier de configuration pour atteindre chacune Les dictionnaires sont considérés comme une base de données distincte. Une fois le client connecté, le numéro de base de données 0 est sélectionné par défaut et vous pouvez utiliser SELECT pour choisir de remplacer la base de données

redis> SELECT 1 
OK 
redis [ 1] > GET foo 
(néant)

        La différence entre les bases de données établies avec des bases de données relationnelles est : 1. Il ne prend pas en charge les noms de base de données personnalisés, qui sont tous nommés d'après des numéros de série. Les utilisateurs doivent se rappeler quelle base de données stocke quelles données, et Redis ne peut définir qu'un mot de passe. C'est-à-dire que le client peut accéder à toutes les données ou à aucune d'entre elles. En général, ces bases de données ressemblent davantage à un espace de noms, qui ne convient pas au stockage des données de différents programmes d'application. Parce que la commande FLUSHALL peut effacer les données de toutes les bases de données d'une instance Redis. Par exemple, vous pouvez utiliser la base de données 0 pour stocker les données d'un environnement de test d'application et la base de données 1 pour stocker les données dans l'environnement de production. Il n'est pas approprié d'utiliser la base de données 1 pour stocker les données de l'application A et la base de données 2 pour stocker les données de application B. Différentes applications doivent utiliser différents Redis L'instance de stockage stocke les données et l'instance Redis ne prend pas trop de mémoire, vous pouvez donc créer plusieurs instances sans craindre que plusieurs instances prennent beaucoup de mémoire.

La compréhension actuelle de l'interrogation des données et de l'exécution de plusieurs instances Redis consiste à les partitionner pour stocker les données de différentes applications, ce qui n'est probablement pas correct, et j'espère que vous pourrez me corriger lorsque vous le verrez.

2. La différence entre le CPU et le GPU : le CPU (Central Processing Unit) est principalement utilisé pour traiter divers types de bases de données, et en même temps, le jugement logique introduira un grand nombre de sauts de branche et de traitement d'interruption, de sorte que le CPU n'est pas Seul le GPU (Graphics Processing Unit) utilisé est confronté à un type de données à grande échelle hautement unifié, indépendant les uns des autres et à un environnement informatique pur qui n'a pas besoin d'être interrompu.

3. En ce qui concerne l'environnement de production réel, la plupart d'entre eux sont dans l'environnement python2.Ubuntu est livré avec python2.7 et 3.5, mais python2.7 est toujours utilisé.En ce qui concerne les pièges de la création de projets django dans l'environnement python2.7, pourquoi ne pas python2.7 crée des projets django ? La raison peut être que 1. Le chemin apparaît en chinois, 2. La version de django utilisée est trop élevée. Il doit être inférieur à 1.11 pour créer avec succès. Généralement, ces deux problèmes, et certains d'entre eux sont handicapés et ont cliqué sur la mauvaise chose .

4. Les informations de caractères transmises par python2.7 utilisent toujours requests.post pour être unicode.Si vous souhaitez le convertir en utf8, ajoutez simplement .encode ("utf8") après.

À propos de la solution selon laquelle la première couche de la valeur de retour jsonresponse ne peut pas prendre en charge le chinois :

Uniquement limité à python2.7, vous pouvez modifier l'encodage par défaut dans la méthode correspondante

import sys 

recharge(sys) 

sys.setdefaultencoding( ' utf8 ' )

Étant donné que la chaîne unicode et le tableau d'octets sont distingués dans python3 et que l'encodage par défaut n'est plus le code ascii, ce problème n'existera pas

Le paramètre json_dumps_params={"ensure_ascii": False} dans jsonresponse est utilisé pour prendre en charge l'affichage du chinois du côté de l'utilisateur lors du retour des données à l'utilisateur, mais si la fonction eval est utilisée pour le convertir en dict, le chinois ne sera pas affiché , mais si la valeur est prise séparément, le chinois sera toujours affiché.

#Par conséquent , les données de retour peuvent être écrites de deux manières 
# La première est plus sûre et le chinois peut être affiché n'importe où 
data = json.dumps(data,assure_ascii= False)
 return Response(data)
 #La seconde 
ret = update_s( request.data[ " username " ], request.data[ " pwd " ]) 
data = {
     " status " : " 100 " , " res " : ret, " message " : " Operation réussie " }
 return JsonResponse(data,
    json_dumps_params={ "
    
    assurez_ascii " : Faux})

 

Je suppose que tu aimes

Origine blog.csdn.net/bruce_van/article/details/103152797
conseillé
Classement