terça-feira, 29 de setembro de 2009
DecimalFormat
/**
* Exemplo de utilizacao da classe DecimalFormat para formatacao de
numeros.
*
* @author Handerson Ferreira Gomes
* @created June 11, 2002
*/
public class DecimalFormatExample {
/**
* Metodo de execucao da classe DecimalFormatExample
* @param args Um modelo de formatacao para ser utilizado pela
aplicacao
*/
public static void main(String[] args) {
Locale locale = Locale.getDefault();
System.out.println("Este Sistema Operacional usa atualmente as
seguintes Configuracoes (Default):");
System.out.println("Pais : " + locale.getDisplayCountry());
System.out.println("Lingua/Teclado : " +
locale.getDisplayLanguage() + " - " + locale.getDisplayName());
System.out.println("");
DecimalFormat formatador = new DecimalFormat();
double valor1 = 235040.30;
float valor2 = -235040.30f;
int valor3 = 235040;
String valor4 = "235040.30";
System.out.println("Numeros sem formatacao:");
System.out.println("Valor 1 : " + valor1);
System.out.println("Valor 2 : " + valor2);
System.out.println("Valor 3 : " + valor3);
System.out.println("Valor 4 : " + valor4);
System.out.println();
System.out.println("Numeros utilizando a formatacao Default:");
System.out.println("Valor 1 : " + formatador.format(valor1));
System.out.println("Valor 2 : " + formatador.format(valor2));
System.out.println("Valor 3 : " + formatador.format(valor3));
System.out.println("Valor 4 : " + formatador.format(new
java.math.BigDecimal(valor4)));
System.out.println();
System.out.println("Utilizando o Pattern: R$ 000,000.00;R$
(000,000.00)");
formatador.applyPattern("R$ 000,000.00;R$ (000,000.00)");
System.out.println("Valor 1 : " + formatador.format(valor1));
System.out.println("Valor 2 : " + formatador.format(valor2));
System.out.println("Valor 3 : " + formatador.format(valor3));
System.out.println("Valor 4 : " + formatador.format(new
java.math.BigDecimal(valor4)));
System.out.println();
if (args.length > 0) {
String pattern = "";
for (int i = 0; i < args.length; i++) {
pattern += args[i] + " ";
}
pattern = pattern.trim();
System.out.println("Utilizando o Pattern: " + pattern);
try {
formatador.applyPattern(pattern);
System.out.println("Valor 1 : " + formatador.format(valor1));
System.out.println("Valor 2 : " + formatador.format(valor2));
System.out.println("Valor 3 : " + formatador.format(valor3));
System.out.println("Valor 4 : " + formatador.format(new java.math.BigDecimal(valor4)));
} catch (IllegalArgumentException e) {
System.out.println("ERRO: Pattern invalido.");
System.out.println(e.getMessage()); }
} else {
System.out.println("Voce pode enviar um pattern como argumento para a aplicacao. Ex:"); System.out.println("java DecimalFormatExample U$ 000.00");
}
}
}
quinta-feira, 24 de setembro de 2009
Bibliotecas e docs no Netbeans
sexta-feira, 11 de setembro de 2009
Criar serviço do MYSQL no windows
Consumo de Memória
Estive observando um sistema que estou desenvolvendo através do sistema Visual VM.
Para quem não sabe VisualVM é uma ferramenta para observar aplicações Java, ele se encontra dentro da JDK\bin\, e disponibiliza várias informações, classes, objetos, memória, etc.
Bom, com ele eu me deparei com um suposto problema, no qual meu software estava cada vez mais aumentando o consumo de memória, e o GC não estava dando conta de liberar os recursos utilizados pelo sistema. Postei a dúvida em fóruns, procurei no código referências a objetos que não estava mais utilizando, etc etc etc. Como não obtive sucesso resolvi fazer mais alguns testes no Visual VM pois tinha notado que meu código não poderia estar errado. Para esse novo teste resolvi estipular a quantidade de memória que o meu sistema ira utilizar.
Para fazer isso utilizando o Netbeans fiz da seguinte forma:
1 – Clique invertido sobre o seu projeto;
2 – Clique em propriedades;
3 – Em categorias selecione “executar”;
4 – No campo Opções da VM coloque “-Xms64m –Xmx128m”;
Pronto!
Seu sistema estará alocando no mínimo 64 e no Maximo 128 megas de memória;
Xms
Xmx
Fazendo isso percebi que o GC trabalhava muito mais do que antes, mas não deu estouro de memória, isso porque o GC é mais esperto do que eu pensava, e na realidade ele vai limpando a memória de acordo com a necessidade.
Links.:
http://java.sun.com/javase/6/docs/technotes/guides/visualvm/index.html
terça-feira, 8 de setembro de 2009
LER e ESCREVER em .properties
Estava eu desenvolvendo um sistema onde cada usuário poderá customizar alguns detalhes isso significa que deveria salvar algumas informações para cada usuário, não querendo salvar esse tipo de informação no banco de dados resolvi utilizar os arquivos properties.
Quem nunca teve contato com um arquivo “propertie” de uma procurada no oráculo google e veja q são muito simples e muito utilizados. Trata-se de um arquivo texto que contem uma estrutura similar a isso:
Nome1 = Rodrigo
Idade1 = 99
Nome2 = Mabel
Idade2 = 99
Assim nós podemos localizar facilmente a Idade2 ou outras propriedades quaisquer que estejam salvos no arquivo.
Para isso criei um arquivo denominado “configuracao.properties” e coloquei direto na pasta raiz do meu sistema, junto com outros arquivos como os logs de erros que costumo colocar ali.
Crie um File para apontar para o arquivo:
private File file = new File("configuracao.properties");
Crie um método que escreva no arquivo as propriedades que você quer salvar:
public void UpdateDados(){
try {
Properties props = new Properties();
FileOutputStream fis = new FileOutputStream(file);
props.setProperty("Nome1",”Rodrigo”);
props.setProperty("Idade1",String.valueOf(99));
props.store(fis, null);
fis.close();
} catch (IOException ex) {
logger.error("Problemas ao salvar dados no arquivo", ex);
}
}
E agora vamos criar um método para ler o arquivo e recuperar as informações gravadas:
public Boolean LoadDados() {
try {
Properties props = new Properties();
System.out.println(file.getAbsolutePath());
FileInputStream fis = new FileInputStream(file);
props.load(fis);
System.out.println(props.getProperty("Nome1"));
System.out.println(props.getProperty("Idade1"));
fis.close();
return true;
} catch (IOException ex) {
logger.error("Problemas ao selecionar dados do arquivo.", ex);
return false;
}
}
Esta aí um exemplo bem simples mas funcional.