[Enciclopedia de explicación de comandos de Linux] 054.readelf: una herramienta para mostrar información de archivos en formato ELF

lectura

Se utiliza para mostrar información sobre archivos en formato elf.

Nota complementaria

readelfEl comando se utiliza para mostrar la información de uno o más archivos de destino en formato elf, y la información mostrada se puede controlar a través de sus opciones. Los que están aquí elf-file(s)representan los archivos que se verifican. Puede admitir archivos en formato elf de 32 y 64 bits, y también admite documentos que contienen archivos elf (aquí generalmente se refiere a archivos de "biblioteca estática", como archivos de "biblioteca estática" argenerados después de que algunos archivos elf se empaquetan mediante comandos ).lib*.a

Este programa objdumpes similar a la función proporcionada, pero la información que muestra es más específica y no depende de la biblioteca BFD (la biblioteca BFD es un proyecto GNU y su objetivo es procesar diferentes archivos objeto a través de una interfaz unificada) Por lo tanto, incluso si hay algún error en la biblioteca BFD, no afectará readelfel programa.

En tiempo de ejecución readelf, se debe especificar una de las otras opciones excepto -vy .-H

Tipo de archivo ELF

Tipos de archivos ELF:

  • Archivos reubicables: los usuarios crean ejecutables u objetos compartidos, como lib*.aarchivos, junto con otros objetos.
  • Archivo ejecutable: se utiliza para generar una imagen de proceso y cargarla en la memoria para su ejecución, como un archivo ejecutable compilado a.out.
  • Archivo de objetos compartidos: se utiliza para generar archivos de objetos elfos junto con otros archivos de objetos compartidos o archivos reubicables o crear imágenes de proceso con archivos ejecutables, como lib*.soarchivos.

Función de archivo ELF

Los archivos ELF participan en la conexión del programa (creación de un programa) y la ejecución del programa (ejecución de un programa), por lo que los archivos en formato elf se pueden ver desde diferentes perspectivas:

  • Si se usa para compilar y vincular (archivos reubicables), el compilador y el vinculador verán el archivo elf como una colección de secciones descritas por la tabla de encabezados de sección; la tabla de encabezados del programa es opcional.
  • Si se utiliza para la ejecución de carga (archivo ejecutable), el cargador considerará el archivo elf como una colección de segmentos descritos por la tabla de encabezado del programa. Un segmento puede contener varias secciones y la tabla de encabezado de sección es opcional.
  • Si es un archivo compartido, contiene ambos.

La composición general del archivo ELF.

El encabezado del archivo elf describe la información general del archivo elf. Incluyendo: relacionado con el sistema, relacionado con el tipo, relacionado con la carga, relacionado con el enlace.

  • Representación relacionada con el sistema: el número mágico identificado por el archivo elf, así como la información relacionada, como el hardware y las plataformas, aumentan la portabilidad del archivo elf y hacen posible la compilación cruzada.
  • La correlación de tipos es el tipo mencionado anteriormente.
  • Carga relacionada: incluye información relacionada de la tabla de encabezado del programa.
  • Enlace relacionado: información relacionada con la tabla del encabezado de la sección.

opciones

  • -ao --all: Mostrar toda la información, equivalente a -h -l -S -s -r -d -V -A -I.
  • -hO --file-header: muestra la información del encabezado del archivo al principio del archivo elf.
  • -lo --program-headerso --segments: muestra la información del encabezado del programa (encabezado de sección) (si corresponde).
  • -So --section-headerso --sections: muestra la información del encabezado de la sección (si corresponde).
  • -gO bien --section-groups: muestra información del grupo de secciones (si corresponde).
  • -to --section-details: Mostrar detalles de la sección (-S).
  • -so --symso --symbols: Muestra las entradas en la sección de la tabla de símbolos, si las hay.
  • -eO --headers: muestra toda la información del encabezado, equivalente a: -h -l -S.
  • -nO --notes: muestra la información del segmento de nota (comentario del núcleo).
  • -rO --relocs: muestra información sobre segmentos reubicables.
  • -uO --unwind: muestra información del segmento de desenrollado. Actualmente solo se admite la información del segmento de desenredado de IA64 ELF.
  • -dO bien --dynamic: muestra información dinámica del segmento.
  • -VO bien --version-info: muestra información para el segmento de versión.
  • -AO --arch-specific: muestra información de la arquitectura de la CPU.
  • -DO bien --use-dynamic: use la tabla de símbolos en la sección dinámica para mostrar símbolos en lugar de usar la sección de símbolos.
  • -x <number or name>O --hex-dump=<number or name>: muestra el contenido en el segmento especificado en hexadecimal. Un número especifica el índice del segmento en la tabla de segmentos, o una cadena especifica el nombre del segmento en el archivo.
  • -w[liaprmfFsoR]o --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges]: muestra lo que se especifica en la sección de depuración.
  • -IO --histogram: al mostrar símbolos, muestre el histograma de la longitud de la lista de deseos.
  • -vO --version: muestra la información de la versión de readelf.
  • -HO --help: muestra las opciones de línea de comando admitidas por readelf.
  • -WO --wide: salida de línea ancha.
  • @file: Las opciones se pueden concentrar en un archivo y luego cargar usando esta opción @file.

ejemplo

Primero dé el siguiente ejemplo:

  1. Para archivos en formato elf en formato ejecutable:
  1. Vea el código fuente del programa ejecutable de la siguiente manera:
root@localhost [test]$ cat main.cpp 
#include <iostream> 
using std::cout; 
using std::endl; 
void my_print(); 

int main(int argc, char *argv[]) 
{ 
    my_print(); 
    cout<<"hello!"<<endl; 
    return 0; 
} 

void  my_print() 
{ 
    cout<<"print!"<<endl; 
}
  1. Compile de la siguiente manera:
[root@localhost test]$ g++ main.cpp -o main 
[root@localhost test]$ g++ -g main.cpp -o main.debug
  1. Después de compilar, vea los archivos generados:
[root@localhost test]$ ls -l 
总计 64 
-rwxr-xr-x 1 quietheart quietheart  6700 07-07 18:04 main 
-rw-r--r-- 1 quietheart quietheart   201 07-07 18:02 main.cpp 
-rwxr-xr-x 1 quietheart quietheart 38932 07-07 18:04 main.debug

Aquí main.debughay un archivo ejecutable con información de depuración mainy es un archivo ejecutable general.

  1. Para archivos en formato elf en forma de archivos de biblioteca:
  1. Vea el código fuente de la biblioteca de la siguiente manera:
// myfile.h 
#ifndef __MYFILE_H 
#define __MYFILE_H 
void printInfo(); 
#endif 

// myfile.cpp 
#include "myfile.h" 
#include <iostream> 
using std::cout; 
using std::endl; 
void printInfo() 
{
    
     
    cout<<"hello"<<endl; 
}
  1. Compile de la siguiente manera:
[root@localhost test]$ g++ -c myfile.cpp 
[root@localhost test]$ g++ -shared -fPCI -o libmy.so myfile.o 
[root@localhost test]$ ar -r libmy.a myfile.o 
ar: creating libmy.a
  1. Después de compilar, vea los archivos generados:
[root@localhost test]$ ls -l

总计 44

-rw-r--r-- 1 quietheart quietheart 2154 07-08 16:14 libmy.a 
-rwxr-xr-x 1 quietheart quietheart 5707 07-08 16:08 libmy.so 
-rwxr-xr-x 1 quietheart quietheart  117 07-08 16:06 myfile.cpp 
-rwxr-xr-x 1 quietheart quietheart   63 07-08 16:08 myfile.h 
-rw-r--r-- 1 quietheart quietheart 2004 07-08 16:08 myfile.o 
libmy.a  libmy.so  myfile.cpp  myfile.h  myfile.o

Aquí se generan respectivamente archivos de objetos myfile.o, archivos de biblioteca compartida libmy.soy archivos de biblioteca estática libmy.a.

Según las bibliotecas y los archivos ejecutables anteriores, aquí se proporcionan algunos comandos de uso común.

Lea la información del encabezado del archivo elf en forma de archivo ejecutable:

[root@localhost test]$ readelf -h main
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  type:                              exec (Executable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x8048580
  Start of program headers:          52 (bytes into file)
  Start of section headers:          3232 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         8
  Size of section headers:           40 (bytes)
  Number of section headers:         29
  Section header string table index: 26

Aquí está visible el archivo elf del archivo ejecutable, cuyo tipo es EXEC (archivo ejecutable). Además, excepto cierta información sobre el tamaño, el contenido del archivo con información de depuración main.debugy del archivo sin información de depuración maines el mismo. Y se puede observar que la arquitectura del archivo es Intel 80386.

Lea la información del encabezado del archivo elf en forma de archivo objeto:

[root@localhost test]$ readelf -h myfile.o
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          516 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           40 (bytes)
  Number of section headers:         15
  Section header string table index: 12

Aquí, el archivo elf del archivo objeto visible es de tipo REL (archivo reubicable).

Lea la información del encabezado del archivo elf en forma de archivo de biblioteca estática:

[root@localhost test]$ readelf -h libmy.a
File: libmy.a(myfile.o)
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          516 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           40 (bytes)
  Number of section headers:         15
  Section header string table index: 12

Aquí se puede ver el archivo elf del archivo de la biblioteca estática y su tipo es REL (archivo reubicable).

Lea la información del encabezado del archivo elf en forma de un archivo de biblioteca dinámica:

[root@localhost test]$ readelf -h libmy.so
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x550
  Start of program headers:          52 (bytes into file)
  Start of section headers:          2768 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         5
  Size of section headers:           40 (bytes)
  Number of section headers:         27
  Section header string table index: 24

Aquí se puede ver el archivo elf del archivo de la biblioteca dinámica y su tipo es DYN (archivo de objeto compartido).

Vea la información de la tabla de encabezado del programa del archivo elf ejecutable:

[root@localhost test]$ readelf -l main
Elf file type is EXEC (Executable file)
Entry point 0x8048580
There are 8 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x08048034 0x08048034 0x00100 0x00100 R E 0x4
  INTERP         0x000134 0x08048134 0x08048134 0x00013 0x00013 R   0x1
      Requesting program interpreter: /lib/[ld-linux.so.2]
  LOAD           0x000000 0x08048000 0x08048000 0x00970 0x00970 R E 0x1000
  LOAD           0x000970 0x08049970 0x08049970 0x00130 0x001c8 RW  0x1000
  DYNAMIC        0x000988 0x08049988 0x08049988 0x000e0 0x000e0 RW  0x4
  NOTE           0x000148 0x08048148 0x08048148 0x00020 0x00020 R   0x4
  GNU_EH_FRAME   0x000820 0x08048820 0x08048820 0x00044 0x00044 R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4

Section to Segment mapping:
  Segment Sections...
   00
   01     .interp
   02     .interp .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
   03     .ctors .dtors .jcr .dynamic .got .got.plt .data .bss
   04     .dynamic
   05     .note.ABI-tag
   06     .eh_frame_hdr
   07

Aquí, el contenido con información de depuración main.debugy sin información de depuración maines el mismo.

Vea la información de la tabla de encabezado del programa del archivo elf del archivo de destino:

[root@localhost test]$ readelf -l myfile.o
There are no program headers in this file.

Se puede ver aquí que el archivo objeto reubicable no tiene una tabla de encabezado de programa.

Vea la información de la tabla de encabezado del programa del archivo elf del archivo de la biblioteca estática:

[root@localhost test]$ readelf -l libmy.a
File: libmy.a(myfile.o)
There are no program headers in this file.

Se puede ver aquí que el archivo de biblioteca estática reubicable no tiene una tabla de encabezado de programa.

Vea la información de la tabla de encabezado del programa del archivo elf del archivo de biblioteca dinámica:

[root@localhost test]$ readelf -l libmy.so 

Elf file type is DYN (Shared object file) 
Entry point 0x550 
There are 5 program headers, starting at offset 52 

Program Headers: 
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align 
  LOAD           0x000000 0x00000000 0x00000000 0x007f4 0x007f4 R E 0x1000 
  LOAD           0x0007f4 0x000017f4 0x000017f4 0x0011c 0x00128 RW  0x1000 
  DYNAMIC        0x000810 0x00001810 0x00001810 0x000e0 0x000e0 RW  0x4 
  GNU_EH_FRAME   0x000738 0x00000738 0x00000738 0x0002c 0x0002c R   0x4 
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4 

Section to Segment mapping: 
  Segment Sections... 
   00     .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 
   01     .ctors .dtors .jcr .data.rel.ro .dynamic .got .got.plt .bss 
   02     .dynamic 
   03     .eh_frame_hdr 
   04     

Se puede ver aquí que, como biblioteca dinámica de archivos de objetos compartidos, tiene una tabla de encabezado de programa.

Ver la información de la sección de un archivo elf ejecutable:

[root@localhost test]$ readelf -S main 

There are 29 section headers, starting at offset 0xca0:
Section Headers: 
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al 
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0 
  [ 1] .interp           PROGBITS        08048134 000134 000013 00   A  0   0  1 
  [ 2] .note.ABI-tag     NOTE            08048148 000148 000020 00   A  0   0  4 
  [ 3] .gnu.hash         GNU_HASH        08048168 000168 000030 04   A  4   0  4 
  [ 4] .dynsym           DYNSYM          08048198 000198 0000d0 10   A  5   1  4 
  [ 5] .dynstr           STRTAB          08048268 000268 000183 00   A  0   0  1 
  [ 6] .gnu.version      VERSYM          080483ec 0003ec 00001a 02   A  4   0  2 
  [ 7] .gnu.version_r    VERNEED         08048408 000408 000060 00   A  5   2  4 
  [ 8] .rel.dyn          REL             08048468 000468 000010 08   A  4   0  4 
  [ 9] .rel.plt          REL             08048478 000478 000048 08  
# 查看一个目标文件的elf文件的节信息:

[root@localhost test]$ readelf -S myfile.o 
There are 15 section headers, starting at offset 0x204: 

Section Headers: 
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al 
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0 
  [ 1] .text             PROGBITS        00000000 000034 00009e 00  AX  0   0  4 
  [ 2] .rel.text         REL             00000000 000744 000060 08     13   1  4 
  [ 3] .data             PROGBITS        00000000 0000d4 000000 00  WA  0   0  4 
  [ 4] .bss              NOBITS          00000000 0000d4 000001 00  WA  0   0  4 
  [ 5] .ctors            PROGBITS        00000000 0000d4 000004 00  WA  0   0  4 
  [ 6] .rel.ctors        REL             00000000 0007a4 000008 08     13   5  4 
  [ 7] .rodata           PROGBITS        00000000 0000d8 000006 00   A  0   0  1 
  [ 8] .eh_frame         PROGBITS        00000000 0000e0 00008c 00   A  0   0  4 
  [ 9] .rel.eh_frame     REL             00000000 0007ac 000028 08     13   8  4 
  [10] .comment          PROGBITS        00000000 00016c 00002e 00      0   0  1 
  [11] .note.GNU-stack   PROGBITS        00000000 00019a 000000 00      0   0  1 
  [12] .shstrtab         STRTAB          00000000 00019a 00006a 00      0   0  1 
  [13] .symtab           SYMTAB          00000000 00045c 000180 10     14  14  4 
  [14] .strtab           STRTAB          00000000 0005dc 000166 00      0   0  1 
Key to Flags: 
  W (write), A (alloc), X (execute), M (merge), S (strings) 
  I (info), L (link order), G (group), x (unknown) 
  O (extra OS processing required) o (OS specific), p (processor specific) 

Vea la información de la sección del archivo elf de un archivo de biblioteca estática:

[root@localhost test]$ readelf -S libmy.a 
File: libmy.a(myfile.o) 
There are 15 section headers, starting at offset 0x204: 

Section Headers: 
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al 
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0 
  [ 1] .text             PROGBITS        00000000 000034 00009e 00  AX  0   0  4 
  [ 2] .rel.text         REL             00000000 000744 000060 08     13   1  4 
  [ 3] .data             PROGBITS        00000000 0000d4 000000 00  WA  0   0  4 
  [ 4] .bss              NOBITS          00000000 0000d4 000001 00  WA  0   0  4 
  [ 5] .ctors            PROGBITS        00000000 0000d4 000004 00  WA  0   0  4 
  [ 6] .rel.ctors        REL             00000000 0007a4 000008 08     13   5  4 
  [ 7] .rodata           PROGBITS        00000000 0000d8 000006 00   A  0   0  1 
  [ 8] .eh_frame         PROGBITS        00000000 0000e0 00008c 00   A  0   0  4 
  [ 9] .rel.eh_frame     REL             00000000 0007ac 000028 08     13   8  4 
  [10] .comment          PROGBITS        00000000 00016c 00002e 00      0   0  1 
  [11] .note.GNU-stack   PROGBITS        00000000 00019a 000000 00      0   0  1 
  [12] .shstrtab         STRTAB          00000000 00019a 00006a 00      0   0  1 
  [13] .symtab           SYMTAB          00000000 00045c 000180 10     14  14  4 
  [14] .strtab           STRTAB          00000000 0005dc 000166 00      0   0  1 
Key to Flags: 
  W (write), A (alloc), X (execute), M (merge), S (strings) 
  I (info), L (link order), G (group), x (unknown) 
  O (extra OS processing required) o (OS specific), p (processor specific) 

Vea la información de la sección del archivo elf de un archivo de biblioteca dinámica:

[root@localhost test]$ readelf -S libmy.so 
There are 27 section headers, starting at offset 0xad0: 

Section Headers: 
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al 
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0 
  [ 1] .gnu.hash         GNU_HASH        000000d4 0000d4 00003c 04   A  2   0  4 
  [ 2] .dynsym           DYNSYM          00000110 000110 000120 10   A  3   1  4 
  [ 3] .dynstr           STRTAB          00000230 000230 000199 00   A  0   0  1 
  [ 4] .gnu.version      VERSYM          000003ca 0003ca 000024 02   A  2   0  2 
  [ 5] .gnu.version_r    VERNEED         000003f0 0003f0 000050 00   A  3   2  4 
  [ 6] .rel.dyn          REL             00000440 000440 0000b0 08   A  2   0  4 
  [ 7] .rel.plt          REL             000004f0 0004f0 000010 08   A  2   9  4 
  [ 8] .init             PROGBITS        00000500 000500 000017 00  AX  0   0  4 
  [ 9] .plt              PROGBITS        00000518 000518 000030 04  AX  0   0  4 
  [10] .text             PROGBITS        00000550 000550 0001c4 00  AX  0   0 16 
  [11] .fini             PROGBITS        00000714 000714 00001c 00  AX  0   0  4 
  [12] .rodata           PROGBITS        00000730 000730 000006 00   A  0   0  1 
  [13] .eh_frame_hdr     PROGBITS        00000738 000738 00002c 00   A  0   0  4 
  [14] .eh_frame         PROGBITS        00000764 000764 000090 00   A  0   0  4 
  [15] .ctors            PROGBITS        000017f4 0007f4 00000c 00  WA  0   0  4 
  [16] .dtors            PROGBITS        00001800 000800 000008 00  WA  0   0  4 
  [17] .jcr              PROGBITS        00001808 000808 000004 00  WA  0   0  4 
  [18] .data.rel.ro      PROGBITS        0000180c 00080c 000004 00  WA  0   0  4 
  [19] .dynamic          DYNAMIC         00001810 000810 0000e0 08  WA  3   0  4 
  [20] .got              PROGBITS        000018f0 0008f0 00000c 04  WA  0   0  4 
  [21] .got.plt          PROGBITS        000018fc 0008fc 000014 04  WA  0   0  4 
  [22] .bss              NOBITS          00001910 000910 00000c 00  WA  0   0  4 
  [23] .comment          PROGBITS        00000000 000910 0000e6 00      0   0  1 
  [24] .shstrtab         STRTAB          00000000 0009f6 0000da 00      0   0  1 
  [25] .symtab           SYMTAB          00000000 000f08 000410 10     26  48  4 
  [26] .strtab           STRTAB          00000000 001318 000333 00      0   0  1 
Key to Flags: 
  W (write), A (alloc), X (execute), M (merge), S (strings) 
  I (info), L (link order), G (group), x (unknown) 
  O (extra OS processing required) o (OS specific), p (processor specific) 

Aprende desde ceropython

[Aprenda Python desde cero] 92. Utilice la biblioteca de solicitudes de Python para enviar solicitudes HTTP y procesar respuestas
[Aprenda Python desde cero] 91. Utilice decoradores y diccionarios para administrar aplicaciones web simples para rutas de solicitud
[Aprenda Python desde cero] 93. Utilice la gestión de diccionarios Ruta de solicitud
[Aprender Python desde cero] 89. Utilice WSGI para crear un servidor web simple y eficiente
[Aprenda Python desde cero] 88. Explicación detallada de la interfaz WSGI: realice un desarrollo web simple y eficiente
[Aprenda Python desde cero] 87. Construya manualmente Servidor HTTP Implementación de Python y procesamiento concurrente de subprocesos múltiples
[aprender Python desde cero] 86. Comprensión profunda del protocolo HTTP y su papel en la comunicación del navegador y el servidor
[aprender Python desde cero] 85. Aplicación de tecnología de computación paralela del grupo de procesos Python
[ aprender Python desde cero] 84. Comprensión profunda de subprocesos y procesos
[aprender Python desde cero] 83. Programación multiproceso de Python y el uso de grupos de procesos
[aprender Python desde cero] 82. Realización de programas de chat basados ​​en multi- threading
[aprender python desde cero] 81. Python y más Aplicación de comunicación y cola de subprocesos
[aprender python desde cero] 80. Acceso de subprocesos a variables globales y problemas de seguridad de subprocesos
[aprender python desde cero] 79. Acceso de subprocesos a variables globales y subprocesos problemas de seguridad
[aprender Python desde cero] 78. Casos de descarga de archivos
[Aprender Python desde cero] 77. Programación y precauciones del servidor TCP
[aprender Python desde cero] 76. Servidor y cliente: componentes clave de la comunicación de red
[aprender Python desde cero] 75 .Protocolo TCP: protocolo de comunicación de capa de transmisión confiable orientado a la conexión
[Aprenda Python desde cero] 74. Programa de red UDP: explicación detallada de los problemas del puerto e información vinculante
[Aprenda Python desde cero] 73. Programa de red UDP: envíe datos
[Aprenda Python desde cero] 72. Comprensión profunda de la comunicación de Socket y creación de sockets El método de
[aprender Python desde cero] 71. Puertos de red y sus funciones
[aprender Python desde cero] 70. Métodos de comunicación de red y sus aplicaciones: desde la comunicación directa hasta enrutadores para conectar múltiples redes
[aprender Python desde cero] 69. Comunicación de red y análisis de clasificación de direcciones IP
[aprender Python desde cero] 68. Modos codiciosos y no codiciosos en expresiones regulares de Python
[aprender Python desde cero] 67. re módulo en Python: reemplazo regular y tecnología de coincidencia avanzada
[aprender Python desde cero] 66. Comprensión profunda de las expresiones regulares: una herramienta poderosa para la coincidencia de patrones y el procesamiento de texto
[Aprenda Python desde cero] 65. Explicación detallada de los modificadores de expresiones regulares de Python y sus aplicaciones
[Aprenda Python desde cero] 64. El método re.compile en expresiones regulares de Python Explicación detallada
[aprender python desde cero] 63. Introducción a la clase re.Match en expresiones regulares y sus atributos y métodos
[aprender python desde cero] 62. Expresiones regulares de Python: una poderosa herramienta de coincidencia de cadenas
[aprender python desde cero] 61. Explicación detallada y ejemplos de aplicación de atributos de propiedad en Python
[aprender Python desde cero] 60. Generador de exploración: una herramienta flexible para la iteración
[aprender Python desde cero] 59. Iterador: una herramienta eficiente para optimizar el recorrido de datos
[aprender Python desde cero] 58. Excepciones personalizadas en Python y métodos para generar excepciones
[Aprende python desde cero] 57. Utiliza la palabra clave with en Python para cerrar recursos correctamente
[Aprende python desde cero] 56. La importancia y aplicación del manejo de excepciones en la programación
[Aprende python desde cero] 55. Serialización y procesamiento en Python Deserialización, aplicación de módulos JSON y pickle
[Aprender Python desde cero] 54. Escribir datos en la memoria
[Aprender Python desde cero] 53. Archivo CSV y módulo CSV de Python
[Aprender Python desde cero] 52. Leer y escribir archivos: guía de operación de archivos Python
[ aprender Python desde cero] 51. Apertura y cierre de archivos y su aplicación en Python
[aprender Python desde cero] 49. Funciones integradas relacionadas con objetos en Python y su uso
[aprender Python desde cero] 48. Explicación detallada de la herencia y herencia múltiple en Python
[aprender python desde cero] 47. El concepto y uso básico de la herencia en programación orientada a objetos
[aprender python desde cero] 46. Análisis de métodos __new__ y __init__ y singleton en patrones de diseño de Python
[aprender python desde cero] 45 Métodos de clase y métodos estáticos en Python
[aprender python desde cero] 44. Atributos y métodos privados en programación orientada a objetos
[aprender python desde cero] 43. Ejemplos en programación orientada a objetos en Python Atributos y atributos de clase
[Aprender python desde cero] 42. Atributos y métodos integrados en Python
[Aprende Python desde cero] 41. Método mágico de Python (2)
[Aprende Python desde cero] 40. Método mágico de Python (1)
[Aprende Python desde cero] 39. Gramática básica orientada a objetos y ejemplos de aplicaciones
[Aprende Python desde cero] 38. Uso e importación de paquetes de Python
[Aprende Python desde cero] 37. Uso y precauciones de los módulos personalizados de Python
[Desde cero Aprende Python ] 36. Métodos y técnicas para usar pip en Python para la administración de paquetes de terceros
[aprender Python desde cero] 35. Módulos comunes del sistema Python y su uso
[aprender Python desde cero] 34. Explicación detallada de la importación y el uso de módulos de Python
[Aprende Python desde cero] 33. El papel de los decoradores (2)
[Aprende Python desde cero] 32. El papel de los decoradores (1)
[Aprende Python desde cero] 31. Comprensión profunda de las funciones de orden superior y cierres en Python
[de Zero learning python] 30. Comprensión profunda de funciones recursivas y funciones anónimas
[aprendiendo python desde cero] 29. "Explicación detallada de los parámetros de función": comprenda los diferentes usos de los parámetros de función de Python
[aprendiendo python desde cero] 28 Variables locales y globales en Python Variables
[Aprende python desde cero] 27. Uso y llamadas anidadas de funciones de Python
[Aprende python desde cero] 25. Funciones: una herramienta para mejorar la eficiencia de la escritura de código
[Aprende python desde cero] 24. Operaciones con cadenas y métodos transversales en Python
[Aprende python desde cero] 23. Cómo usar y operaciones comunes de conjuntos (set) en Python
[Aprende python desde cero] 22. Adición, eliminación, modificación y consulta de diccionarios en Python y variables de diccionarios
[ Aprenda Python desde cero] 21. En Python, tuplas y diccionarios para
[Aprende Python desde cero] 20. Habilidades y ejemplos de operación de listas de Python
[Aprende Python desde cero] 19. Aplicación de bucles a través de listas y anidamiento de listas
[Aprende Python desde cero] 18. Explicación detallada de las operaciones básicas de las listas de Python (1)
[ Desde cero aprendiendo Python] 17. Método de formato de cadena de Python (2)
[Aprende Python desde cero] 16. Método de formato de cadena de Python (1)
[Aprende Python desde cero] 15. Comprensión profunda de la codificación de cadenas y conjuntos de caracteres
[ from Zero learning python] 14. Operaciones comunes de cadenas de Python (2)
[Aprender python desde cero] 13. Operaciones comunes de cadenas de Python (1)
[Aprender python desde cero] 12. Operaciones y aplicaciones de cadenas de Python
[Aprender python desde cero] 11. Declaración de bucle de Python y flujo de control
[aprende Python desde cero] 10. Explicación detallada de la declaración condicional de Python y si anida
[aprende Python desde cero] 09. Declaración de juicio condicional en Python
[aprende Python desde cero] 08. Python comprende las operaciones de bits Operadores, prioridad de operador
[aprender python desde cero] 07. Explicación detallada de los operadores de Python: asignación, comparación y operadores lógicos
[aprender python desde cero] 06. Usar operadores aritméticos en Python para cálculo y concatenación de cadenas
[aprender desde cero python] 05. Salida y entrada en Python
[aprende python desde cero] 04. Conceptos básicos de la programación en Python: variables, tipos de datos e identificadores
[aprende python desde cero] 03. Programación interactiva en Python y anotaciones detalladas
[Aprende Python desde cero] 02. Introducción a las herramientas de desarrollo
[Aprende Python desde cero] 01. Instalar y configurar Python

おすすめ

転載: blog.csdn.net/qq_33681891/article/details/132662300