Dificultades encontradas en el trabajo y mi propia forma de aprender e iluminarme

Hola, amigos, hoy compartiré con ustedes las trampas que encontré en el trabajo y algunos de mis propios conocimientos y comprensión en el trabajo, con la esperanza de brindarles algunas ganancias e inspiraciones.


1. Bases de datos predeterminadas de Redis 16 y sus funciones:

        Lo primero a tener en cuenta es la comprensión de redis. En primer lugar, Redis es un servidor de almacenamiento estructurado por diccionario. De hecho, la instancia de Redis proporciona varios diccionarios para almacenar datos. El cliente puede especificar en qué diccionario almacenar la base de datos. Esto es similar a la creación de múltiples bases de datos en MySQL, y cada diccionario puede entenderse como una base de datos independiente. Esta base de datos solo se basa en una sola máquina. Si es un clúster, no existe el concepto de una base de datos.

        Cada base de datos tiene un nombre externo con un número creciente a partir de 0. Redis admite 16 bases de datos de forma predeterminada (se pueden admitir más a través del archivo de configuración, sin límite superior). Es decir, modifique el número detrás de la base de datos en el archivo de configuración para llegar a cada Los diccionarios se entienden como una base de datos separada. Después de que el cliente se conecta, la base de datos número 0 se selecciona de manera predeterminada y puede usar SELECCIONAR para elegir reemplazar la base de datos.

redis> SELECCIONAR 1 
OK 
redis [ 1] > OBTENER foo 
(nil)

        La diferencia entre la base de datos y la base de datos relacional es: 1. No admite el nombre de la base de datos personalizada, que lleva el nombre del número de serie. El usuario debe recordar qué base de datos almacena qué datos y Redis solo puede establecer una contraseña. Es decir, el cliente puede acceder a todos los datos oa ninguno. En general, estas bases de datos se parecen más a un espacio de nombres, que no es adecuado para almacenar datos de diferentes programas de aplicación. Porque el comando FLUSHALL puede borrar los datos en todas las bases de datos en una instancia de Redis. Por ejemplo, puede usar la base de datos 0 para almacenar los datos de un entorno de prueba de la aplicación y la base de datos 1 para almacenar datos en el entorno de producción. No es adecuado usar la base de datos 1 para almacenar datos para la aplicación A y la base de datos 2 para almacenar datos para aplicación B. Diferentes aplicaciones deben usar Redis diferente. La instancia de almacenamiento almacena datos y la instancia de Redis no ocupa demasiada memoria, por lo que puede crear varias instancias sin preocuparse de que varias instancias consuman mucha memoria.

La comprensión actual de la consulta de datos y la ejecución de varias instancias de redis es particionarlas para almacenar datos de diferentes aplicaciones, lo que probablemente no sea correcto, y espero que pueda corregirme cuando lo vea.

2. La diferencia entre CPU y GPU: la CPU (Unidad central de procesamiento) se usa principalmente para procesar varios tipos de bases de datos y, al mismo tiempo, el juicio lógico introducirá una gran cantidad de saltos de rama y procesamiento de interrupciones, de modo que la CPU no es La única GPU (Unidad de procesamiento de gráficos) utilizada se enfrenta a un tipo de datos a gran escala altamente unificado que es independiente entre sí y a un entorno informático puro que no necesita ser interrumpido.

3. Con respecto al entorno de producción real, la mayoría de ellos están en el entorno python2.Ubuntu viene con python2.7 y 3.5, pero todavía se usa python2.7.Con respecto a las trampas de crear proyectos django en el entorno python2.7, ¿por qué no hacerlo? python2.7 crear proyectos django? La razón puede ser que 1. La ruta aparece en chino, 2. La versión de django utilizada es demasiado alta. Debe ser inferior a 1.11 para crear con éxito. En general, estos dos problemas, y algunos de ellos están discapacitados y se hizo clic en algo incorrecto. .

4. La información de caracteres transmitida por python2.7 siempre usa solicitudes.post para ser unicode.Si desea convertirlo a utf8, simplemente agregue .encode("utf8") después.

Acerca de la solución de que la primera capa del valor de retorno de jsonresponse no puede admitir chino:

Solo limitado a python2.7, puede modificar la codificación predeterminada en el método correspondiente

importar sys 

recargar (sys) 

sys.setdefaultencoding( ' utf8 ' )

Dado que Unicode str y byte array se distinguen en python3 y la codificación predeterminada ya no es el código ascii, este problema no existirá.

El parámetro json_dumps_params={"ensure_ascii": False} en jsonresponse se usa para admitir la visualización de chino en el lado del usuario al devolver datos al usuario, pero si se usa la función eval para convertirlo en un dictado, el chino no se mostrará , pero si el valor se toma por separado, el chino seguirá mostrándose.

#Por lo tanto , los datos devueltos se pueden escribir de dos maneras 
# La primera es más segura y el chino se puede mostrar en cualquier lugar 
data = json.dumps(data,sure_ascii= False)
 return Response(data)
 #La segunda 
ret = update_s( request.data[ " nombre de usuario " ], request.data[ " pwd " ]) 
data = {
     " status " : " 100 " , " res " : ret, " message " : " Operación exitosa " }
 return JsonResponse(data,
    json_dumps_params={ "
    
    asegurar_ascii " : Falso})

 

Supongo que te gusta

Origin blog.csdn.net/bruce_van/article/details/103152797
Recomendado
Clasificación