terça-feira, 29 de setembro de 2009

DecimalFormat

Estive trabalhando com DecimalFormat e achei este exemplo do Handerson Ferreira Gomes na devmedia.com.br, facilitou muito o trabalho, então resolvi postar.

/**
* 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

Estava eu instalando o jCalendar no netbeans quando me deparei com um problema. Quando criei a biblioteca onde iria colocar o jCalendar fui colocar os docs e na janela que abriu somente teria a opção de selecionar e mostrar arquivos .jar e .zip. Como o jCalendar disponibilizava os docs em html (“como na maioria dos projetos”), os arquivos docs não podiam ser selecionados, então resolvi postar uma pergunta num fórum, pois provavelmente a IDE(Netbeans 6.7), deveria ter uma opção para adicionar os docs em formato html. Não demorou 5 minutos para obter a resposta, na janela onde somente podem ser selecionados arquivos jar ou zip, selecione o diretório, isso mesmo, somente o diretório onde estão os arquivos html. Abaixo uma imagem da tela do Netbeans onde gerenciamos as bibliotecas:



sexta-feira, 11 de setembro de 2009

Criar serviço do MYSQL no windows

Essa pequena classe cria um novo serviço no windows com o nome "mysqymeu" e starta o mesmo. Não irei explicar o código pois e de fácil entendimento. Criei um tópico no GUJ, com dúvidas de como executar um comando no cmd do Windows caso alguém queira dar uma olhada.

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 - size initial Java heap size

Xmx - set maximum Java heap size

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

https://visualvm.dev.java.net/

http://blogs.sun.com/watt/resource/jvm-options-list.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.