objdump命令的常见用法

objdump命令的常见用法

  • 1 objdump简介
    • 1.1 简介
    • 1.2 主要功能
  • 2 objdump命令
  • 3 objdump测试程序
    • 3.1 C语言测试程序
    • 3.2 编译方法
  • 4 objdump命令解释和演示
    • 4.1 objdump -d
    • 4.2 objdump -a
    • 4.3 objdump -f
    • 4.4 objdump -p
    • 4.5 objdump -D
    • 4.6 objdump -S
    • 4.7 objdump -s
    • 4.8 objdump -t
    • 4.9 objdump -g
    • 4.10 objdump -h
    • 4.11 objdump -r
    • 4.12 objdump -s -j .text

1 objdump简介

1.1 简介

objdump 是一个在类Unix系统中广泛使用的命令行工具,它是GNU Binutils套件的一部分,主要用于显示编译后的对象文件、可执行文件、共享库等二进制文件的详细信息。objdump 是一个极其灵活和多功能的工具,对软件开发者、安全研究人员以及任何想要深入了解二进制文件内部结构的人来说都非常有用。

1.2 主要功能

  • 反汇编:

将机器码转换回汇编语言。使用 -d 或 -D 选项可以实现这一功能,有时会结合 -S 选项来混合显示源代码和对应的汇编代码。

  • 文件头信息

使用 -f 选项可以显示文件的格式、体系结构、入口点等基本信息。

  • 节头部信息

通过 -h 或 -x 选项可以查看文件中各节(section)的布局和属性,如代码段(.text)、数据段(.data)、BSS段等。
符号表: 使用 -t 选项来列出目标文件中的符号信息,包括全局变量、函数名及其地址。

  • 重定位信息

-r 选项展示了文件中的重定位条目,这对于理解链接过程非常有帮助。

  • 动态信息

对于动态链接的可执行文件或库,-p, -R, -T, 和 -D 等选项可以分别显示其程序头表、需要的动态库、动态符号表及动态反汇编信息。

  • 调试信息

-g 选项可以展示调试信息,如果编译时包含了调试信息的话。

  • 不同格式和架构支持

objdump 支持多种二进制格式(如 ELF, COFF, Mach-O)和处理器架构,并且可以通过选项指定不同的反汇编风格或架构。

2 objdump命令

rlk@rlk:~$ objdump --help
Usage: objdump <option(s)> <file(s)>Display information from object <file(s)>.At least one of the following switches must be given:-a, --archive-headers    Display archive header information-f, --file-headers       Display the contents of the overall file header-p, --private-headers    Display object format specific file header contents-P, --private=OPT,OPT... Display object format specific contents-h, --[section-]headers  Display the contents of the section headers-x, --all-headers        Display the contents of all headers-d, --disassemble        Display assembler contents of executable sections-D, --disassemble-all    Display assembler contents of all sections--disassemble=<sym>  Display assembler contents from <sym>-S, --source             Intermix source code with disassembly--source-comment[=<txt>] Prefix lines of source code with <txt>-s, --full-contents      Display the full contents of all sections requested-g, --debugging          Display debug information in object file-e, --debugging-tags     Display debug information using ctags style-G, --stabs              Display (in raw form) any STABS info in the file-W[lLiaprmfFsoRtUuTgAckK] or--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,=addr,=cu_index,=links,=follow-links]Display DWARF info in the file--ctf=SECTION            Display CTF info from SECTION-t, --syms               Display the contents of the symbol table(s)-T, --dynamic-syms       Display the contents of the dynamic symbol table-r, --reloc              Display the relocation entries in the file-R, --dynamic-reloc      Display the dynamic relocation entries in the file@<file>                  Read options from <file>-v, --version            Display this program's version number-i, --info               List object formats and architectures supported-H, --help               Display this informationThe following switches are optional:-b, --target=BFDNAME           Specify the target object format as BFDNAME-m, --architecture=MACHINE     Specify the target architecture as MACHINE-j, --section=NAME             Only display information for section NAME-M, --disassembler-options=OPT Pass text OPT on to the disassembler-EB --endian=big               Assume big endian format when disassembling-EL --endian=little            Assume little endian format when disassembling--file-start-context       Include context from start of file (with -S)-I, --include=DIR              Add DIR to search list for source files-l, --line-numbers             Include line numbers and filenames in output-F, --file-offsets             Include file offsets when displaying information-C, --demangle[=STYLE]         Decode mangled/processed symbol namesThe STYLE, if specified, can be `auto', `gnu',`lucid', `arm', `hp', `edg', `gnu-v3', `java'or `gnat'--recurse-limit            Enable a limit on recursion whilst demangling.  [Default]--no-recurse-limit         Disable a limit on recursion whilst demangling-w, --wide                     Format output for more than 80 columns-z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling--start-address=ADDR       Only process data whose address is >= ADDR--stop-address=ADDR        Only process data whose address is < ADDR--prefix-addresses         Print complete address alongside disassembly--[no-]show-raw-insn       Display hex alongside symbolic disassembly--insn-width=WIDTH         Display WIDTH bytes on a single line for -d--adjust-vma=OFFSET        Add OFFSET to all displayed section addresses--special-syms             Include special symbols in symbol dumps--inlines                  Print all inlines for source line (with -l)--prefix=PREFIX            Add PREFIX to absolute paths for -S--prefix-strip=LEVEL       Strip initial directory names for -S--dwarf-depth=N        Do not display DIEs at depth N or greater--dwarf-start=N        Display DIEs starting with N, at the same depthor deeper--dwarf-check          Make additional dwarf internal consistency checks.--ctf-parent=SECTION       Use SECTION as the CTF parent--visualize-jumps          Visualize jumps by drawing ASCII art lines--visualize-jumps=color    Use colors in the ASCII art--visualize-jumps=extended-color   Use extended 8-bit color codes--visualize-jumps=off      Disable jump visualizationobjdump: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 srec symbolsrec verilog tekhex binary ihex plugin
objdump: supported architectures: i386 i386:x86-64 i386:x64-32 i8086 i386:intel i386:x86-64:intel i386:x64-32:intel i386:nacl i386:x86-64:nacl i386:x64-32:nacl iamcu iamcu:intel l1om l1om:intel k1om k1om:intelThe following i386/x86-64 specific disassembler options are supported for use
with the -M switch (multiple options should be separated by commas):x86-64      Disassemble in 64bit modei386        Disassemble in 32bit modei8086       Disassemble in 16bit modeatt         Display instruction in AT&T syntaxintel       Display instruction in Intel syntaxatt-mnemonicDisplay instruction in AT&T mnemonicintel-mnemonicDisplay instruction in Intel mnemonicaddr64      Assume 64bit address sizeaddr32      Assume 32bit address sizeaddr16      Assume 16bit address sizedata32      Assume 32bit data sizedata16      Assume 16bit data sizesuffix      Always display instruction suffix in AT&T syntaxamd64       Display instruction in AMD64 ISAintel64     Display instruction in Intel64 ISA
Report bugs to <http://www.sourceware.org/bugzilla/>.
rlk@rlk:~$

3 objdump测试程序

3.1 C语言测试程序

// objdump_test.c
#include <stdio.h>void greet() {printf("Hello, World!\n");
}int main() {greet();return 0;
}

3.2 编译方法

此编译命令在显示调试信息时更全面
gcc -o objdump_test objdump_test.cor该命令在编译完通过objdump反汇编之后只关注当前测试程序包含的内容
gcc -c objdump_test.c -o objdump_test

4 objdump命令解释和演示

4.1 objdump -d

反汇编可执行部分

rlk@rlk:test$ objdump -d objdump_testobjdump_test:     file format elf64-x86-64Disassembly of section .text:0000000000000000 <greet>:0:   55                      push   %rbp1:   48 89 e5                mov    %rsp,%rbp4:   48 8d 3d 00 00 00 00    lea    0x0(%rip),%rdi        # b <greet+0xb>b:   e8 00 00 00 00          callq  10 <greet+0x10>10:   90                      nop11:   5d                      pop    %rbp12:   c3                      retq0000000000000013 <main>:13:   55                      push   %rbp14:   48 89 e5                mov    %rsp,%rbp17:   b8 00 00 00 00          mov    $0x0,%eax1c:   e8 00 00 00 00          callq  21 <main+0xe>21:   b8 00 00 00 00          mov    $0x0,%eax26:   5d                      pop    %rbp27:   c3                      retq
rlk@rlk:test$

4.2 objdump -a

显示档案头信息

rlk@rlk:test$ objdump -a objdump_testobjdump_test:     file format elf64-x86-64
objdump_testrlk@rlk:test$

4.3 objdump -f

显示文件头信息

rlk@rlk:test$ objdump -f objdump_testobjdump_test:     file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000rlk@rlk:test$

4.4 objdump -p

显示私有头信息

rlk@rlk:test$ objdump -p objdump_testobjdump_test:     file format elf64-x86-64rlk@rlk:test$

4.5 objdump -D

反汇编所有节区

rlk@rlk:test$ objdump -D objdump_testobjdump_test:     file format elf64-x86-64Disassembly of section .text:0000000000000000 <greet>:0:   55                      push   %rbp1:   48 89 e5                mov    %rsp,%rbp4:   48 8d 3d 00 00 00 00    lea    0x0(%rip),%rdi        # b <greet+0xb>b:   e8 00 00 00 00          callq  10 <greet+0x10>10:   90                      nop11:   5d                      pop    %rbp12:   c3                      retq0000000000000013 <main>:13:   55                      push   %rbp14:   48 89 e5                mov    %rsp,%rbp17:   b8 00 00 00 00          mov    $0x0,%eax1c:   e8 00 00 00 00          callq  21 <main+0xe>21:   b8 00 00 00 00          mov    $0x0,%eax26:   5d                      pop    %rbp27:   c3                      retqDisassembly of section .rodata:0000000000000000 <.rodata>:0:   48                      rex.W1:   65 6c                   gs insb (%dx),%es:(%rdi)3:   6c                      insb   (%dx),%es:(%rdi)4:   6f                      outsl  %ds:(%rsi),(%dx)5:   2c 20                   sub    $0x20,%al7:   57                      push   %rdi8:   6f                      outsl  %ds:(%rsi),(%dx)9:   72 6c                   jb     77 <main+0x64>b:   64 21 00                and    %eax,%fs:(%rax)Disassembly of section .comment:0000000000000000 <.comment>:0:   00 47 43                add    %al,0x43(%rdi)3:   43 3a 20                rex.XB cmp (%r8),%spl6:   28 55 62                sub    %dl,0x62(%rbp)9:   75 6e                   jne    79 <main+0x66>b:   74 75                   je     82 <main+0x6f>d:   20 37                   and    %dh,(%rdi)f:   2e 35 2e 30 2d 36       cs xor $0x362d302e,%eax15:   75 62                   jne    79 <main+0x66>17:   75 6e                   jne    87 <main+0x74>19:   74 75                   je     90 <main+0x7d>1b:   32 29                   xor    (%rcx),%ch1d:   20 37                   and    %dh,(%rdi)1f:   2e                      cs20:   35                      .byte 0x3521:   2e 30 00                xor    %al,%cs:(%rax)Disassembly of section .eh_frame:0000000000000000 <.eh_frame>:0:   14 00                   adc    $0x0,%al2:   00 00                   add    %al,(%rax)4:   00 00                   add    %al,(%rax)6:   00 00                   add    %al,(%rax)8:   01 7a 52                add    %edi,0x52(%rdx)b:   00 01                   add    %al,(%rcx)d:   78 10                   js     1f <.eh_frame+0x1f>f:   01 1b                   add    %ebx,(%rbx)11:   0c 07                   or     $0x7,%al13:   08 90 01 00 00 1c       or     %dl,0x1c000001(%rax)19:   00 00                   add    %al,(%rax)1b:   00 1c 00                add    %bl,(%rax,%rax,1)1e:   00 00                   add    %al,(%rax)20:   00 00                   add    %al,(%rax)22:   00 00                   add    %al,(%rax)24:   13 00                   adc    (%rax),%eax26:   00 00                   add    %al,(%rax)28:   00 41 0e                add    %al,0xe(%rcx)2b:   10 86 02 43 0d 06       adc    %al,0x60d4302(%rsi)31:   4e 0c 07                rex.WRX or $0x7,%al34:   08 00                   or     %al,(%rax)36:   00 00                   add    %al,(%rax)38:   1c 00                   sbb    $0x0,%al3a:   00 00                   add    %al,(%rax)3c:   3c 00                   cmp    $0x0,%al3e:   00 00                   add    %al,(%rax)40:   00 00                   add    %al,(%rax)42:   00 00                   add    %al,(%rax)44:   15 00 00 00 00          adc    $0x0,%eax49:   41 0e                   rex.B (bad)4b:   10 86 02 43 0d 06       adc    %al,0x60d4302(%rsi)51:   50                      push   %rax52:   0c 07                   or     $0x7,%al54:   08 00                   or     %al,(%rax)...
rlk@rlk:test$

4.6 objdump -S

混合源代码与反汇编

rlk@rlk:test$ objdump -S objdump_testobjdump_test:     file format elf64-x86-64Disassembly of section .text:0000000000000000 <greet>:0:   55                      push   %rbp1:   48 89 e5                mov    %rsp,%rbp4:   48 8d 3d 00 00 00 00    lea    0x0(%rip),%rdi        # b <greet+0xb>b:   e8 00 00 00 00          callq  10 <greet+0x10>10:   90                      nop11:   5d                      pop    %rbp12:   c3                      retq0000000000000013 <main>:13:   55                      push   %rbp14:   48 89 e5                mov    %rsp,%rbp17:   b8 00 00 00 00          mov    $0x0,%eax1c:   e8 00 00 00 00          callq  21 <main+0xe>21:   b8 00 00 00 00          mov    $0x0,%eax26:   5d                      pop    %rbp27:   c3                      retq
rlk@rlk:test$

4.7 objdump -s

显示section内容

rlk@rlk:test$ objdump -s objdump_testobjdump_test:     file format elf64-x86-64Contents of section .text:0000 554889e5 488d3d00 000000e8 00000000  UH..H.=.........0010 905dc355 4889e5b8 00000000 e8000000  .].UH...........0020 00b80000 00005dc3                    ......].
Contents of section .rodata:0000 48656c6c 6f2c2057 6f726c64 2100      Hello, World!.
Contents of section .comment:0000 00474343 3a202855 62756e74 7520372e  .GCC: (Ubuntu 7.0010 352e302d 36756275 6e747532 2920372e  5.0-6ubuntu2) 7.0020 352e3000                             5.0.
Contents of section .eh_frame:0000 14000000 00000000 017a5200 01781001  .........zR..x..0010 1b0c0708 90010000 1c000000 1c000000  ................0020 00000000 13000000 00410e10 8602430d  .........A....C.0030 064e0c07 08000000 1c000000 3c000000  .N..........<...0040 00000000 15000000 00410e10 8602430d  .........A....C.0050 06500c07 08000000                    .P......
rlk@rlk:test$

4.8 objdump -t

显示符号表内容

rlk@rlk:test$ objdump -t objdump_testobjdump_test:     file format elf64-x86-64SYMBOL TABLE:
0000000000000000 l    df *ABS*  0000000000000000 objdump_test.c
0000000000000000 l    d  .text  0000000000000000 .text
0000000000000000 l    d  .data  0000000000000000 .data
0000000000000000 l    d  .bss   0000000000000000 .bss
0000000000000000 l    d  .rodata        0000000000000000 .rodata
0000000000000000 l    d  .note.GNU-stack        0000000000000000 .note.GNU-stack
0000000000000000 l    d  .eh_frame      0000000000000000 .eh_frame
0000000000000000 l    d  .comment       0000000000000000 .comment
0000000000000000 g     F .text  0000000000000013 greet
0000000000000000         *UND*  0000000000000000 _GLOBAL_OFFSET_TABLE_
0000000000000000         *UND*  0000000000000000 puts
0000000000000013 g     F .text  0000000000000015 mainrlk@rlk:test$

4.9 objdump -g

显示调试信息

rlk@rlk:test$ objdump -g objdump_testobjdump_test:     file format elf64-x86-64Contents of the .eh_frame section (loaded from objdump_test):00000000 0000000000000014 00000000 CIEVersion:               1Augmentation:          "zR"Code alignment factor: 1Data alignment factor: -8Return address column: 16Augmentation data:     1bDW_CFA_def_cfa: r7 (rsp) ofs 8DW_CFA_offset: r16 (rip) at cfa-8DW_CFA_nopDW_CFA_nop00000018 000000000000001c 0000001c FDE cie=00000000 pc=0000000000000000..0000000000000013DW_CFA_advance_loc: 1 to 0000000000000001DW_CFA_def_cfa_offset: 16DW_CFA_offset: r6 (rbp) at cfa-16DW_CFA_advance_loc: 3 to 0000000000000004DW_CFA_def_cfa_register: r6 (rbp)DW_CFA_advance_loc: 14 to 0000000000000012DW_CFA_def_cfa: r7 (rsp) ofs 8DW_CFA_nopDW_CFA_nopDW_CFA_nop00000038 000000000000001c 0000003c FDE cie=00000000 pc=0000000000000013..0000000000000028DW_CFA_advance_loc: 1 to 0000000000000014DW_CFA_def_cfa_offset: 16DW_CFA_offset: r6 (rbp) at cfa-16DW_CFA_advance_loc: 3 to 0000000000000017DW_CFA_def_cfa_register: r6 (rbp)DW_CFA_advance_loc: 16 to 0000000000000027DW_CFA_def_cfa: r7 (rsp) ofs 8DW_CFA_nopDW_CFA_nopDW_CFA_noprlk@rlk:test$

4.10 objdump -h

显示各个section的头信息

rlk@rlk:test$ objdump -h objdump_testobjdump_test:     file format elf64-x86-64Sections:
Idx Name          Size      VMA               LMA               File off  Algn0 .text         00000028  0000000000000000  0000000000000000  00000040  2**0CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE1 .data         00000000  0000000000000000  0000000000000000  00000068  2**0CONTENTS, ALLOC, LOAD, DATA2 .bss          00000000  0000000000000000  0000000000000000  00000068  2**0ALLOC3 .rodata       0000000e  0000000000000000  0000000000000000  00000068  2**0CONTENTS, ALLOC, LOAD, READONLY, DATA4 .comment      00000024  0000000000000000  0000000000000000  00000076  2**0CONTENTS, READONLY5 .note.GNU-stack 00000000  0000000000000000  0000000000000000  0000009a  2**0CONTENTS, READONLY6 .eh_frame     00000058  0000000000000000  0000000000000000  000000a0  2**3CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
rlk@rlk:test$

4.11 objdump -r

显示重定位条目

rlk@rlk:test$ objdump -r objdump_testobjdump_test:     file format elf64-x86-64RELOCATION RECORDS FOR [.text]:
OFFSET           TYPE              VALUE
0000000000000007 R_X86_64_PC32     .rodata-0x0000000000000004
000000000000000c R_X86_64_PLT32    puts-0x0000000000000004
000000000000001d R_X86_64_PLT32    greet-0x0000000000000004RELOCATION RECORDS FOR [.eh_frame]:
OFFSET           TYPE              VALUE
0000000000000020 R_X86_64_PC32     .text
0000000000000040 R_X86_64_PC32     .text+0x0000000000000013rlk@rlk:test$

4.12 objdump -s -j .text

查看特定section的信息

rlk@rlk:test$ objdump -s -j .text objdump_testobjdump_test:     file format elf64-x86-64Contents of section .text:0000 554889e5 488d3d00 000000e8 00000000  UH..H.=.........0010 905dc355 4889e5b8 00000000 e8000000  .].UH...........0020 00b80000 00005dc3                    ......].
rlk@rlk:test$ objdump -s -j .rodata        objdump_testobjdump_test:     file format elf64-x86-64Contents of section .rodata:0000 48656c6c 6f2c2057 6f726c64 2100      Hello, World!.
rlk@rlk:test$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT写一个mainWindow

切换风格的写法&#xff1a; 先看看样式效果&#xff1a; mian_window.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void Ini…

对比预测编码表示学习

对比预测编码表示学习 引言 文章主要提出如下几点&#xff1a;首先将高维数据压缩到更加紧凑的潜在嵌入&#xff08;latent embdding&#xff09;空间&#xff0c;在这个空间中条件预测更容易被建模。第二&#xff0c;在这个潜在空间中使用自回归模型&#xff0c;以对未来的多…

Sphinx 安装相关指令解释

安装指令 pip3 install sphinx-autobuildpip3 install sphinx_rtd_themepip3 install sphinx_markdown_tablepip3 install sphinx_markdown_tables pip3 install sphinx-autobuild 功能&#xff1a;安装 sphinx-autobuild 包。作用&#xff1a;sphinx-autobuild 是一个工具&am…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

探索XEX数字资产交易的优势与操作指南

随着数字资产市场的快速发展&#xff0c;越来越多的投资者开始关注并参与其中。XEX交易所作为一个新兴的数字资产交易平台&#xff0c;以其用户友好的界面和高效的交易服务&#xff0c;迅速吸引了大量用户。本文将介绍XEX数字资产交易的主要特点和优势&#xff0c;帮助新手更好…

物联网在电力行业的应用

作者主页: 知孤云出岫 这里写目录标题 作者主页:物联网在电力行业的应用简介主要应用领域代码案例分析1. 智能电表数据采集和分析2. 设备监控和预测性维护3. 能耗管理和优化4. 电力负载预测5. 分布式能源管理6. 电动汽车充电管理7. 电网安全与故障检测 物联网在电力行业的应用…

python+onlyoffice+vue3项目实战20240722笔记,环境搭建和前后端基础代码

开发后端 先创建data目录,然后在data目录下创建一个test.docx测试文档。 后端代码: import json import req import api from api import middleware, PlainTextResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback ==…

“微软蓝屏”事件暴露了的网络安全问题

近日&#xff0c;一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件&#xff0c;不仅成为科技领域的热点新闻&#xff0c;更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件&#xff0c;源于美国电脑安全技术公司“众击”提供的一个带有“缺陷”的软件更新&…

数据结构——堆(C语言版)

树 树的概念&#xff1a; 树&#xff08;Tree&#xff09;是一种抽象数据结构&#xff0c;它由节点&#xff08;node&#xff09;的集合组成&#xff0c;这些节点通过边相连&#xff0c;把 节点集合按照逻辑顺序抽象成图像&#xff0c;看起来就像一个倒挂着的树&#xff0c;也…

equals()和hashCode()

HashMap是Java集合框架中的一个非常重要的组成部分&#xff0c;它提供了基于键值对的快速查找功能。在Java中&#xff0c;HashMap的底层实现是基于数组和链表或红黑树的结合体&#xff0c;具体取决于元素的数量和散列冲突的情况。以下是HashMap的一些关键概念和底层原理&#x…

使用C#手搓Word插件

WordTools主要功能介绍 编码语言&#xff1a;C#【VSTO】 1、选择 1.1、表格 作用&#xff1a;全选文档中的表格&#xff1b; 1.2、表头 作用&#xff1a;全选文档所有表格的表头【第一行】&#xff1b; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…

java面向对象进阶篇--《多态》

目录 一、前言 二、认识多态 方法重写&#xff08;Override&#xff09;&#xff1a; 方法重载&#xff08;Overload&#xff09;&#xff1a; 示例&#xff1a; Person类&#xff08;父类&#xff09; Administrator&#xff08;子类&#xff09; Student&#xff08;子…

docker搭建ES 8.14 集群

参考&#xff1a;【docker搭建es8集群kibana】_docker 安装生产级 es 8.14 集群-CSDN博客 1、之前已搭建一台单机版的dockerES集群 参见 Elasticsearch docker 安装_docker 安装es8.14.3-CSDN博客 2、现在需要重新搭建为docker ES集群 准备新搭建3个点 一、准备工作 提前开…

Android SurfaceFlinger——创建EGLContext(二十六)

前面文章我们获取了 EGL 的最优配置,创建了 EGLSurface 并与 Surface 进行了关联,然后还需要获取 OpenGL ES 的上下文 Context,这也是 EGL 控制接口的三要素(Displays、Contexts 和 Surfaces)之一。 1)getInternalDisplayToken:获取显示屏的 SurfaceControl 令牌(Token…

构建网络安全之盾:应对“微软蓝屏”教训的全面策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

深度学习模型Transformer结构

Transformer结构是一种基于自注意力&#xff08;Self-Attention&#xff09;机制的深度学习模型&#xff0c;最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出&#xff0c;用于解决自然语言处理&#xff08;NLP&#xff09;领域的任务&#xff0c;如机器翻…

MySQL --- 库的操作

一、创建数据库 create database [ if not exists ] 数据库名; // []中的为可选项 在创建库时&#xff0c;也可以指定数据库采用的字符集(character set)和数据库字符集的校验规则(collate) (当我们创建数据库没有指定字符集和校验规则时&#xff0c;系统使用默认字符集&#x…

【复习】软件工程

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 典型表现&#xff1a; 开发成本和进度的估计常常很不准确 用户对已完成的软件系统不满意&#xff0c;闭门造车 软件质量&#xff08;quality&#xff09;不可靠 软件常常是不可维护的 软件产品供不应…

css技巧混合模式

看上面这个神奇的效果&#xff0c;文字在黑色背景里面显示为白色&#xff0c;而在白色的背景里面显示为黑色&#xff0c;这就是文字智能适配背景。 看到这样的需求&#xff0c;大多数人第一时间想到的是&#xff0c;文字元素有两个&#xff0c;是完全重叠的两层&#xff0c;一…

Facebook在内容创作中的新策略与机会

随着社交媒体的不断发展&#xff0c;内容创作已经成为了平台吸引和留住用户的核心竞争力。Facebook作为全球最大的社交平台之一&#xff0c;不断调整和优化其内容创作策略&#xff0c;以适应用户需求的变化和技术的进步。本文将深入探讨Facebook在内容创作中的新策略与机会&…