Este artigo descreve o método de implementação de Java para obter informações como CPU, memória, disco rígido, rede etc. Compartilhe -o para sua referência, como segue:
1. Faça o download e instale o Sigar-1.6.4.zip
Usando o pacote do próprio Java para obter dados do sistema, é fácil não encontrar o pacote, especialmente as informações de memória não são precisas o suficiente; portanto, escolha usar o SIGAR para obter informações do sistema.
Endereço para download: http://sourceforge.net/projects/sigar/files/latest/download?source=files
Ou clique aqui para baixar este site .
Descompacte o pacote comprimido, importe o Sigar.jar sob libe no ClassPath of Eclipse e, em seguida, salve Sigar-x86-winnt.dll no diretório da bin de java.
Como mostrado na figura abaixo:
2. Exemplo de código
importar java.net.inetAddress; importar java.net.unknownhosception; importar java.util.map; importar java.util.properties; importar org.hyperic.sigar.cpuinfo; importic.hiperic.sigar.cpuperC; Org.hyperic.sigar.filesystemusage; importar org.hyperic.sigar.mem; importar org.hyperic.sigar.netflags; importação org.hyperic.sigar.netinterfaceconfig; importação org.hyperic.sigar.netinterfracy; org.hyperic.sigar.sigar; importar org.hyperic.sigar.sigarexception; importar org.hyperic.sigar.swap; importar org.hyperic.sigar.wM; System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.getProperties (); map.get ("UserDomain"); // Obter nome do domínio do computador.Int.println ("Nome de usuário:" Nome de usuário); addr.gethostName ()); System.out.println (Java Runtime Version: " + Props.getProperty (" java.version ")); Props.getProperty (Java.Vendor.url ")); fornecedor de especificação de máquina virtual: " + props.getProperty (" java.vm.specification.vendor ")); system.out.println (" java machine especificada por especificação: " + props.getProperty (" java.vm.specification.name ")); system.out.Println (" Props.getProperty ("java.vm.specification.name")); System.out.println ("Java Virtual Machine Nome:" + Props.getProperty ("java.vm.name")); props.getProperty ("java.specification.version")); System.out.println ("Java Class Format Número da versão:" + Props.getProperty ("java.class.version")); Props.getProperty ("Java.library.Path")); system name: " + props.getProperty("os.name")); System.out.println("Operational system architecture: " + props.getProperty("os.arch")); System.out.println("Operation system version: " + props.getProperty("os.version")); System.out.println("File separator: " + Props.getProperty ("File.separator")); System.Println (Diretório doméstico do usuário: " + Props.getProperty (" User.home ")); Memory System.out.println ("Memória Total:" Mem.gettotal () / 1024L + "KV"); grátis "); troca de troca = sigar.getswap (); // swap total de área de troca System.out.println (" Área de troca total: " + swap.gettotal () / 1024L +" k av "); // swap untage swap system.out.println (" atualização da área de atualização: "swap.Ed.Get.EngET.Enget.Enget.Enget (swap) (swap swap usage swap System.out.println (" atualização da área da troca: "swap.Ed.Ust.Enget.Enget.Estra. System.Println (Swap Atualmente, Swap.getFree () / 1024L + "K grátis"); = SIGAR.GETCPUPERCLIST (); " + info.getMhz ()); // Total CPU MHZ System.out.println (" Fabricante da CPU: " + info.getVendor ()); // vendedor que obtém CPU, como: Intel System.out.println (" categoria de cpu: " + info.getModel (); System.out.println ("Número do cache da CPU:" + info.getcachesize ()); // Número de impressão de memória buffer PrintCPUPERC (cpulist [i]); Cpuperc.format (cpu.getUser ())); // usuário de usuário System.out.println ("Uso do sistema da CPU:" + cpuperc.format (cpu.getsys ()); // taxa de uso do sistema System.out.println ("CPU de corrente de corrente:" " + cpUper System.out.println ("Taxa de erro de corrente da CPU:" + cpuperc.format (cpu.getnice ())); // system.out.println ("CPU Current Idle Taxa:" + cpuperc.format (cpu.getIdle ()); // ATRUENT CATLE System.out.Int.Intln System.Intln (CPU.getIdle); Cpuperc.format (cpu.getCombined ())); // Uso total} estático privado OS () {Operatingsystem OS = Operatingsystem.getInstance (); System.out.println ("Sistema Operacional Cpuendian ():" + OS.GetCPuendian ()); System.out.println (OS.GetName (): "OS.GetName ()); Sistema vendedor: " + os.getVendor ()); // Nome do vendedor System.out.println (" Vendedor de sistemas operacionais: " + os.getVendorCodename ()); // Nome do sistema operacional System.out.println (" Nome do OS: " + os.getVendorname (); // Sistema operacional Selster System OS.getVendorversion (); I <Who.Length; System.out.println ("gettime ():" + _who.gettime ()); sigar.getfilesystemlist (); System.out.println ("Caminho do disco:" Fregleddirname (); etc. System.out.println ("Nome do tipo de disco:" FETTYPENSE (); TIPO_UNKNOWN: Break de desconhecido; usege.getfree () + "kb"); System.It.println (fets. Break de rede; use.getDisks (); sigar.getNetInterfaceconfig (nome); (ifconfig.getflags () e 1l) <= 0l) {System.out.println ("! iff_up ... pulando getNetInterfacestat"); ifstat.getRxpackets ()); // Número total de pacotes recebidos System.out.println (nome + "Número total de pacotes enviados:" + ifstat.gettxpackets ()); // número total de pacotes enviados System.out.println (Nome + "Número total de bytes recebidos:" + se estat.getRxTes (Nome "Número total de recebidos:" + se estathes. System.out.println (nome + "Número total de bytes enviados:" + ifstat.gettxbytes ()); // Número total de bytes enviados System.out.println (nome + "Número de pacotes de erro recebidos:" + ifStat.getRxerrors (); número de pacote de erro recebido sistemas.out.out.out.out.out.Printlnnnnnnnnnnnnnnnnn (Nome); ifstat.gettxerrors ()); // Número de erros ao enviar pacotes System.out.println (nome + "Número de pacotes descartados durante a recepção:" + ifstat.getRxdropped ()); número de pacotes descartados durante a recepção System.out.Intln (Nome + "de Pacotes de Pacotes Número de pacotes descartados durante a transmissão}}} private estático vazio Ethernet () lança sigarexception {sigar sigar = null; sigar.getNetinterfaceconfig (ifaces [i]); System.out.println (cfg.getName () + "Endereço IP:" + cfg.getAddress ()); // Sistema de endereço IP.out.println (cfg.getName () + "Gateway Broadcast Endereço" eBratLnnnnnnnnnnn (gateway). cfg.gethwaddr ()); // nnetcard mac endereço de endereço System.out.println (cfg.getName () + "máscara de sub -rede:" + cfg.getNetMask ()); // Subnet Mask System.out.println (CFG.getName ()); System.out.println (cfg.getName () + "NetCard Type" + cfg.gettype ()); //}}}Os resultados da execução da máquina:
Nome de usuário: Administrador
Nome do computador: SNJCKV1VQGB6NP9
Nome de domínio do computador: SNJCKV1VQGB6NP9
Endereço IP local: 192.168.3.37
Nome do host local: SNJCKV1VQGB6NP9
Memória total que a JVM pode usar: 16252928
Memória restante que a JVM pode usar: 15346992
O número de processadores que a JVM pode usar: 2
Versão do ambiente de corrida de Java: 1.8.0_121
O fornecedor de ambiente operacional de Java: Oracle Corporation
O URL do fornecedor Java: http://java.oracle.com/
Caminho de instalação Java: C:/Arquivos de programas/java/jdk1.8.0/jre
Java Virtual Machine Especificação Versão: 1.8
Fornecedor de especificação de máquina virtual de Java: Oracle Corporation
Especificação da máquina virtual Java Nome: Java Virtual Machine Especificação
Java Virtual Machine Implementation Versão: 25.121-B13
Java Virtual Machine Implementation Fornecedor: Oracle Corporation
Java Virtual Machine Implementation Nome: Java Hotspot (TM) Cliente VM
Java Runtime Environment Specification Versão: 1.8
Java Runtime Environment Specification Fornecedor: NULL
Java Runtime Environment Specification Nome: Java Platform API Specification
Java Formato de classe Número da versão: 52.0
Java ClassPath: C:/jsProot/Demo/Bin; C: /jsproot/demo/sigar.jar
Lista de caminhos pesquisados ao carregar a biblioteca: c:/arquivos de programas/java/jdk1.8.0/bin; c:/windows/sun/java/bin; c:/windows/system32; c:/windows; c:/programas Arquivos/java/jre1.8.0_162/bin/cliente; c:/programa Arquivos/java/jre1.8.0_162/bin; c:/arquivos de programas/java/jre1.8.0_162/lib/i386; c:/python36/scripts/; c:/python36/; c:/program arquivos/imagemagick-6.2.7-Q16; c:/programdata/oracle/java/javapath; d:/railsinstaller/git/cmd; d: /railsinstaller/ruby2.1. 0/bin; c:/windows/system32; c:/windows; c:/windows/system32/wbem; c: /windows/system32/windowspowershell/v1.0/; c:/program Arquivos/java/jdk1.8.0/bin; d:/go/bin; c:/arquivos de programa/java/jdk1.8.0/bin; c:/python27/;; d:/arquivos de programa/lua/5.1; d:/program Arquivos/lua/5.1/clibs; c: /wamp/bin/php/php5.2.17; c:/python27/scripts; c:/python27/lib/sites packages/django/bin; c:/python27/scripts; e:/eclipse;.
Caminho de arquivo temporário padrão: C:/Usuários/Admini ~ 1/AppData/Local/Temp/
Caminho para um ou mais diretórios de extensão: c:/arquivos de programas/java/jdk1.8.0/jre/lib/ext; c:/windows/sun/java/lib/ext
Nome do sistema operacional: Windows 7
Arquitetura do sistema operacional: x86
Versão do sistema operacional: 6.1
Delimitador de arquivo: /
Separador de caminho :;
Delimitador de linha:Nome da conta do usuário: Administrador
Diretório da casa do usuário: c:/usuários/administrador
O diretório de trabalho atual do usuário: C:/JSProot/Demo
--------------------------------------------------------------------------------------------------------------------------------------------------
A primeira informação da CPU
Total CPU MHZ: 2593
Fabricante da CPU: Intel
Categoria CPU: Pentium (R) CPU E5300 @ 2.60GHz
Número de caches da CPU: -1
Taxa de uso do usuário da CPU: 0,0%
Taxa de uso do sistema da CPU: 6,2%
Taxa de espera de corrente da CPU: 0,0%
Taxa de erro de corrente da CPU: 0,0%
Taxa de Idle de CPU atual: 93,7%
Uso total da CPU: 6,2%
A segunda informação da CPU
Total CPU MHZ: 2593
Fabricante da CPU: Intel
Categoria CPU: Pentium (R) CPU E5300 @ 2.60GHz
Número de caches da CPU: -1
Taxa de uso do usuário da CPU: 0,0%
Taxa de uso do sistema da CPU: 6,2%
Taxa de espera de corrente da CPU: 0,0%
Taxa de erro de corrente da CPU: 0,0%
Taxa de Idle de CPU atual: 93,7%
Uso total da CPU: 6,2%
--------------------------------------------------------------------------------------------------------------------------------------------------
Memória total: 3634424K AV
Uso da memória atual: 3264044k usado
Memória atual restante: 370380k grátis
Número total de áreas de troca: 7791448K AV
Uso da área de comutação atual: 5324308k usado
Quantidade restante atual da área de troca: 2467140k grátis
--------------------------------------------------------------------------------------------------------------------------------------------------
Sistema operacional: x86
Sistema operacional cpuendian (): pouco
Sistema operacional datamodel (): 32
Descrição do sistema operacional: Microsoft Windows 2008
Vendedor de sistemas operacionais: Microsoft
O nome do vendedor do sistema operacional: servidor Longhorn
Nome do sistema operacional: Windows 2008
Tipo de vendedor de sistemas operacionais: 2008
Sistema operacional Número da versão: 6.1
--------------------------------------------------------------------------------------------------------------------------------------------------
Console do usuário: console
Host de usuário: NT Autoridade
Nome de usuário na tabela atual de processo do sistema: serviço local
Console do usuário: console
Host de usuário: NT Autoridade
Nome de usuário na tabela de processos do sistema atual: serviço de rede
Console do usuário: console
Host de usuário: SNJCKV1VQGB6NP9
Nome de usuário na tabela de processos do sistema atual: Administrador
Console do usuário: console
Host de usuário: NT Autoridade
Nome de usuário na tabela de processos do sistema atual: sistema
--------------------------------------------------------------------------------------------------------------------------------------------------
O nome da letra de unidade da partição 0
Nome da letra da unidade: c:/
Caminho da letra da unidade: C:/
Drive Letter Logo: 0
Tipo de letra de unidade: NTFS
Nome do tipo de letra da unidade: Local
Tipo de sistema de arquivo de letra de unidade: 2
C:/Tamanho total: 31463268kb
C:/Tamanho restante: 8582992KB
C:/Tamanho disponível: 8582992kb
C:/Usado Valor: 22880276kb
C:/Utilização de recursos Taxa: 73,0%
C:/Reading: 177479
C:/escrito: 144902
Nome da letra da unidade de partição 1
Nome da letra da unidade: D:/
Caminho da letra da unidade: d:/
Drive Letter Logo: 0
Tipo de letra de unidade: NTFS
Nome do tipo de letra da unidade: Local
Tipo de sistema de arquivo de letra de unidade: 2
D:/Tamanho total: 153107448kb
D:/Tamanho restante: 13722816kb
D:/Tamanho disponível: 13722816kb
D:/Usado Valor: 139384632kb
D:/Utilização de recursos Taxa: 92,0%
D:/Reading: 87425
D:/escrito: 25166
Nome da letra da unidade de partição 2
Nome da letra da unidade: e:/
Caminho da letra da unidade: e:/
Drive Letter Logo: 0
Tipo de letra de unidade: NTFS
Nome do tipo de letra da unidade: Local
Tipo de sistema de arquivo de letra de unidade: 2
E:/Tamanho total: 152055192kb
E:/Tamanho restante: 20065708kb
E:/Tamanho disponível: 20065708kb
E:/Usado: 131989484kb
E:/Utilização de recursos: 87,0%
E:/Reading: 58883
E:/escrito: 1232
Nome da letra da unidade de partição 3
Nome da letra da unidade: f:/
Caminho da letra da unidade: f:/
Drive Letter Logo: 0
Tipo de letra de unidade: NTFS
Nome do tipo de letra da unidade: Local
Tipo de sistema de arquivo de letra de unidade: 2
F:/Tamanho total: 151757988kb
F:/Tamanho restante: 14189172kb
F:/Tamanho disponível: 14189172kb
F:/Usado: 137568816kb
F:/Utilização de recursos Taxa: 91,0%
F:/leia: 20639
F:/escrito: 14
--------------------------------------------------------------------------------------------------------------------------------------------------
Nome do dispositivo de rede: eth0
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth0: 0
Número total de pacotes enviados por eth0: 0
Número total de bytes recebidos por eth0: 0
Número total de bytes enviados por eth0: 0
Número de pacotes de erro recebidos por eth0: 0
Número de erros ao enviar pacotes eth0: 0
Número de pacotes descartados quando o ETH0 é recebido: 0
Número de pacotes descartados quando o eth0 é enviado: 0
Nome do dispositivo de rede: Eth1
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth1: 0
Número total de pacotes enviados por eth1: 0
Número total de bytes recebidos por eth1: 0
Número total de bytes enviados por eth1: 0
Número de pacotes de erro recebidos por eth1: 0
Número de erros quando o eth1 envia pacotes: 0
Número de pacotes descartados quando o eth1 recebe: 0
Número de pacotes descartados quando Eth1 é enviado: 0
Nome do dispositivo de rede: eth2
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth2: 387028
Número total de pacotes enviados por eth2: 205197
Número total de bytes recebidos por eth2: 228616339
Número total de bytes enviados por eth2: 35841128
Número de pacotes de erro recebidos por eth2: 0
Número de erros quando o eth2 envia pacotes: 0
Número de pacotes descartados quando o eth2 recebe: 0
Número de pacotes descartados quando o eth2 é enviado: 0
Nome do dispositivo de rede: eth3
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth3: 387028
Número total de pacotes enviados por eth3: 205197
Número total de bytes recebidos por eth3: 228616339
Número total de bytes enviados por eth3: 35841128
Número de pacotes de erro recebidos por eth3: 0
Número de erros quando o eth3 envia pacotes: 0
Número de pacotes descartados quando o eth3 recebe: 0
Número de pacotes descartados quando o eth3 é enviado: 0
Nome do dispositivo de rede: eth4
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth4: 0
Número total de pacotes enviados por eth4: 0
Número total de bytes recebidos por eth4: 0
Número total de bytes enviados por eth4: 0
Número de pacotes de erro recebidos por eth4: 0
Número de erros quando o eth4 envia pacotes: 0
Número de pacotes descartados quando o eth4 recebe: 0
Número de pacotes descartados quando o eth4 é enviado: 0
Nome do dispositivo de rede: eth5
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth5: 0
Número total de pacotes enviados por eth5: 0
Número total de bytes recebidos por eth5: 0
Número total de bytes enviados por eth5: 0
Número de pacotes de erro recebidos por eth5: 0
Número de erros quando o eth5 envia pacotes: 0
Número de pacotes descartados quando o eth5 recebe: 0
Número de pacotes descartados quando o eth5 é enviado: 0
Nome do dispositivo de rede: eth6
Endereço IP: 192.168.3.37
Máscara de sub -rede: 255.255.255.0
Número total de pacotes recebidos por eth6: 387028
Número total de pacotes enviados por eth6: 205197
Número total de bytes recebidos por eth6: 228616339
Número total de bytes enviados por eth6: 35841128
Número de pacotes de erro recebidos por eth6: 0
Número de erros quando o eth6 envia pacotes: 0
Número de pacotes descartados quando o eth6 recebe: 0
Número de pacotes descartados quando o eth6 envia: 0
Nome do dispositivo de rede: Eth7
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth7: 0
Número total de pacotes enviados por eth7: 0
Número total de bytes recebidos por eth7: 0
Número total de bytes enviados por eth7: 0
Número de pacotes de erro recebidos por eth7: 0
Número de erros ao enviar pacotes em eth7: 0
Número de pacotes descartados quando o eth7 recebe: 0
Número de pacotes descartados quando o eth7 envia: 0
Nome do dispositivo de rede: eth8
Endereço IP: 0.0.0.0
Máscara de sub -rede: 0.0.0.0
Número total de pacotes recebidos por eth8: 0
Número total de pacotes enviados por eth8: 0
Número total de bytes recebidos por eth8: 0
Número total de bytes enviados por eth8: 0
Número de pacotes de erro recebidos por eth8: 0
Número de erros quando o eth8 envia pacotes: 0
Número de pacotes descartados quando o eth8 recebe: 0
Número de pacotes descartados quando o eth8 envia: 0
Nome do dispositivo de rede: lo0
Endereço IP: 127.0.0.1
Máscara de sub -rede: 255.0.0.0
LO0 Número total de pacotes recebidos: 0
Número total de pacotes enviados por lo0: 0
LO0 Número total de bytes recebidos: 0
Número total de bytes enviados por lo0: 0
LO0 Número de pacotes de erro recebidos: 0
LO0 Número de erros ao enviar pacotes: 0
LO0 Número de pacotes descartados ao receber: 0
LO0 Número de pacotes descartados ao enviar: 0
--------------------------------------------------------------------------------------------------------------------------------------------------
ETH0IP ENDEREÇO: 0.0.0.0
ETH0 Gateway Broadcast Endereço: 0.0.0.0
ETH0 CARTA DE REDE ENDEREÇO MAC: DA: 90: 20: 52: 41: 53
ETH0 Máscara de sub -rede: 0.0.0.0
ETH0 CARTA DE REDE DESCRIÇÃO DE DESCRIÇÃO DO
ethernet do tipo de rede de rede eth0
ETH1IP ENDEREÇO: 0.0.0.0
Eth1 Gateway Broadcast Endereço: 0.0.0.0
ETH1 CARTA DE REDE ENDEREÇO MAC: DA: 90: 20: 52: 41: 53
ETH1 Máscara de sub -rede: 0.0.0.0
Eth1 Rede Card Descrição Informações: Wan Miniport (monitor de rede)
Eth1 Rede Tipo de cartão Ethernet
ETH2IP Endereço: 0.0.0.0
Eth2 Gateway Broadcast Endereço: 0.0.0.0
ETH2 CARTA DE REDE ENDEREÇO MAC: E0: CB: 4E: 07: 75: 85
ETH2 Máscara de sub -rede: 0.0.0.0
Eth2 Rede Card Descrição Informações: Realtek PCIE GBE Family Controller-Qos Packet Scheduler-0000
ethernet do tipo de rede eth2
ETH3IP ENDEREÇO: 0.0.0.0
Eth3 Gateway Broadcast Endereço: 0.0.0.0
ETH3 CARTA DE REDE ENDEREÇO MAC: E0: CB: 4E: 07: 75: 85
ETH3 Máscara de sub -rede: 0.0.0.0
Eth3 Rede Card Descrição Informações: Realtek PCIE GBE Controlador de família-WFP Filtro leve-0000
Eth3 Tipo de cartão de rede Ethernet
ETH4IP ENDEREÇO: 0.0.0.0
Eth4 Gateway Broadcast Endereço: 0.0.0.0
ETH4 Rede de cartão MAC Endereço: DA: 90: 20: 52: 41: 53
ETH4 Máscara de sub -rede: 0.0.0.0
ETH4 Rede Card Descrição Informações: Wan Miniport (IP)
Eth4 Tipo de cartão de rede Ethernet
ETH5IP ENDEREÇO: 0.0.0.0
Eth5 Gateway Broadcast Endereço: 0.0.0.0
ETH5 Rede de cartão MAC Endereço: DA: 90: 20: 52: 41: 53
ETH5 Máscara de sub -rede: 0.0.0.0
ETH5 Rede Card Descrição Informações: Wan Miniport (Rede Monitor) -Qos Packet Scheduler-0000
Eth5 Tipo de cartão de rede Ethernet
ETH6IP Endereço: 192.168.3.37
Eth6 Gateway Broadcast Endereço: 192.168.3.255
ETH6 CARTA DE REDE ENDEREÇO MAC: E0: CB: 4E: 07: 75: 85
ETH6 Máscara de sub -rede: 255.255.255.0
ETH6 Rede Card Descrição Informações: Realtek PCIE GBE Controlador de família
EtH6 do tipo de cartão de rede Ethernet
ETH7IP ENDEREÇO: 0.0.0.0
Eth7 Gateway Broadcast Endereço: 0.0.0.0
Eth7 Rede Card Mac Endereço: DA: 90: 20: 52: 41: 53
ETH7 Máscara de sub -rede: 0.0.0.0
Eth7 Rede Card Descrição Informações: WAN MINIPORT (IP) -QOS Scheduler-Scheduler-0000
ethernet ethernet do tipo de rede Eth7
ETH8IP ENDEREÇO: 0.0.0.0
Eth8 Gateway Broadcast Endereço: 0.0.0.0
Eth8 Rede de cartão MAC Endereço: DA: 90: 20: 52: 41: 53
ETH8 Máscara de sub -rede: 0.0.0.0
Eth8 Rede Card Descrição Informações: WAN MINIORT (IPv6) -QOS Scheduler-Scheduler-0000
ethernet do tipo de rede eth8
--------------------------------------------------------------------------------------------------------------------------------------------------
For more information about Java related content, please check out the topics of this site: "Summary of Java Network Programming Skills", "Summary of Java Socket Programming Skills", "Summary of Java File and Directory Operation Skills", "Tutorial on Java Data Structure and Algorithm", "Summary of Java Operation DOM Node Skills" and "Summary of Java Cache Operation Skills"
Espero que este artigo seja útil para a programação Java de todos.