Mensagens enviadas por: Dieval Guizelini
Índice dos Fóruns » Perfil de Dieval Guizelini » Mensagens enviadas por Dieval Guizelini
Autor Mensagem
Saiu agora a pouco:

Some significant changes have been introduced in beta3 which will require
some applications to be re-tested with 9.0. These include:

* Fixes for streaming replication and hot standby:
* close walwriter filehandles faster
* fsync on master before sending WAL
* improved handling of archive cleanup
(including archive_cleanup_command
and pg_archivecleanup contrib module)
* better handling of WAL record corruption
* change of standby delay settings and timing
* Fix for array handling in plpython
* Many dblink fixes
* TCP keepalive support in libpq
* Fix for checkSeek() behavior on old platforms
(was causing pg_dump to occasionally fail)


If you are able to help with beta testing, please see the Beta testing
page: http://wiki.postgresql.org/wiki/HowToBetaTest

Betas are not stable and should never be used in production; they are for
testing only. Additional beta releases, or a release candidate, will be
available for testing in a few weeks.

Source code, as well as binary installers for many platforms, is
available from the PostgreSQL Web Site:
* Source: http://www.postgresql.org/ftp/source/v9.0beta3
* One-Click Installer, including Win64 binaries:
http://www.enterprisedb.com/products/pgdownload.do
* Binaries for other platforms:
http://www.postgresql.org/ftp/binary/v9.0beta3
* Release Notes:
http://developer.postgresql.org/pgdocs/postgres/release-9-0.html
* Participating in Testing:
http://www.postgresql.org/developer/beta


att
Senhores,

apenas para registrar,

refiz o parser utilizando expressões regulares na maior parte do código e a coisa se inverteu, os tempos ficaram em:

OpenSDK 5.037s
Sun: 3.557s

Ou seja, a biblioteca de expressões regulares da Sun possui um desempenho melhor que a versão do OpenSDK.

fw
Opa valeu Vinicius (parabéns, hoje que vi que você se tornou moderador),

Entanglement, a aplicação que descrevi e que ficou quase 25% mais rápida, não utiliza xml. O programa utiliza muita substring, expressões regulares, comparações etc.

abs

Senhores,

desenvolvi um programa que realiza o parser em um arquivo texto que possui o tamanho de 51Mb e tem várias peculiaridades (não é XML).

Estava executando ele no Ubuntu 9.1 com a versão da Sun: Java SDK/JRE versão Sun 1.6.0_20-b02 e Java HotSpot 64 Bit Server VM (build 16.3-b01)
Resolvi fazer um teste com o OpenSDK: OpenJDK Runtime Enviroment (IcedTea6 1.6.1 ? 6b16-1.6.1-3ubuntu3) e OpenJDK 64 bit Server VM (build 14.0-b16)

A diferença de performance (medida com o comando time do linux) foi de:
Sun: real 23.248s user: 24.070s e sys: 1.910s
OpenJDK: real 18.617s user 22.340s e sys 1.570s

Os parâmetros para as VM foram as mesmas: -d64 -server -Xms1024m -Xmx1024m

Alguém sabe se o OpenSDK está confiável para por em produção? Alguém já está utilizando ele em ambiente web com o tomcat 6?

Valeu
Senhores,

apenas por curiosidade, alguém já leu alguma coisa sobre a Oracle querer mudar os nomes dos pacotes interno do java de sun.* para oracle.*?

Será que JCP (http://www.jcp.org/en/home/index) irá conseguir manter o prefixo sun.?

fw
Eu tomaria muito cuidado com os testes de garagem e algoritmos "alternativos"...

Existe uma razão para a API ser mais lenta na cópia do Array, entre elas:
- controle dos limites
- thread-safe
- gerenciamento de memória (rsrs)

E um exemplo de algo parecido na SUN:
http://java.sun.com/docs/books/performance/1st_edition/html/JPNativeCode.fm.html

fw
Uma outra forma de pensar...

Pegue a parte fracionária e multiplique pelo denominador....

Ex:

4 / 40 = 0,1
logo o resto é
0,1 * 40 = 4.

Se fosse 48 / 40 = 1,2, certo?
pegue a parte fracionário (que é o resto) e multiplique pelo denominador:
0,2 * 40 = 8

Bom na teoria é legal, mas se tentar trabalhar com número de ponto flutuante em Java, você deverá compreender melhor o conceito de mantissa e o padrão IEEE 754.

Especificação do Java: http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html

fw
Oi,

eu tenho usado esse código com o JFileChooser, talvez te ajude (veja que crio uma thread, e no main eu faço chamada do método init para quando eu precisar do JFileChooser ele já está criado):



E os métodos básicos:


Para saber mais:
Example Depot
http://www.exampledepot.com/egs/javax.swing.filechooser/CreateDlg.html
leepoint
http://leepoint.net/notes-java/GUI/containers/20dialogs/30filechooser.html
Sun tutoriais
http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html
API
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFileChooser.html

fw
Opa,

veja bem, só use banco em ISO-8859-1 em último caso...

Sobre codificação o melhor post sobre assunto é esse aqui:

http://www.guj.com.br/posts/list/12456.java

fw
Essa regra eu compreendo,

tanto que se tentar passar algo assim:



o erro ocorre nos métodos find também... mas o problema está na combinação do primeiro termo com os demais... veja que Key e Value não geram a mesma falha...

certo?
Senhores,

não compreendi a regra do uso de generics para esse caso, vejam a situação:


Código baseado no exemplo http://www.guj.com.br/posts/list/66036.java

E observe que se você declarar outros métodos sem o uso de generics, dessa forma:

o compilador aceita... somente quando se usa dois ou mais tipos passados por parâmetros...

A questão aqui é compreender a regra da aplicação do generics, alguém sabe?

vw
Se compreendi bem o seu problema,

você quer criar um wrapper que intercepta tudo que sua aplicação enviar para o Stream padrão de saída...
algo como:

Bom, isso o código abaixo faz, ou seja, você pode direcionar no programa todo o Stream de saída para um arquivo:
[url]PrintStream newps = new PrintStream(new FileOutputStream("saida.txt"));
System.setOut(newps);
[/url]

Se quer algo mais complexo, tem essa classe no código do tomcat:
Segue um link:
http://www.jexamples.com/vSrc/3088/org.apache.tomcat.util.log.SystemLogHandler?prodId=tomcat&lineNo=67&implExtId=165448&queryText=java.util.Stack.new&qType=clsMeth

Bom para usar o log4j, o seu wrapper pode fazer isso tb...

fw
Ou Rock.it,

o arquivo MANIFEST fica dentro do arquivo JAR da sua aplicação. Se quiser conferir, renomeia o arquivo teste.jar para teste.zip e abra com qualquer descompactador.
A configuração do classpath no MANIFEST evita ter que criar um arquivo bat ou (.sh shell script) com os parametros de classpath e referenciando as dependências.

A recomendação do uso do NETBEANS é que essas configurações são realizadas automaticamente... no Eclipse, você tem que configurar o projeto e o build....

Com relação aos drivers do postgresql ou de qualquer banco, normalmente deve-se copiar junto com a aplicação, você pode incluí-los no jar (existe uma configuração do ant para isso, mas não me lembro direito...).
De qualquer forma, existe boas razões para o jar do driver ficar na pasta lib da aplicação e não dentro do jar, entre elas, destaco:
1) tamanho do jar da sua aplicação
2) atualização dos drivers sem a necessidade de rebuild da aplicação

Por outro lado, como você está executando:


Devemos considerar que não está utilizando um jar, apenas o bytecode compilado (extensão .class). Quando o seu projeto crescer, certamente terá mais de uma classe e ai fica bastante chato copiar os arquivo .class para rodar a sua aplicação. Neste ponto você certamente irá utilizar o jar que encapsula todos os class dentro de um formato jar (zip). E para executá-lo (quando o MANIFEST estiver adequado), você irá utilizar:


Tutoriais para jar no eclipse:
http://www.fsl.cs.sunysb.edu/~dquigley/cse219/index.php?it=eclipse&tt=jar&pf=y

Nesse você pode ver o item 6.1
http://www.vogella.de/articles/Eclipse/article.html

fw
São várias perguntas...

vamos por parte:

um arquivo properties geralmente é utilizado para armazenar as configurações da aplicação, ele normalmente é um mapa de strings (chave = valor).

No java, você pode usar os arquivos properties para facilitar a internacionalização da aplicação, como exemplo, veja o programa SwingSet2 que deve estar na pasta demo/jfc (que vem junto com o jdk). Ou então, veja esses links:
http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/
http://java.sun.com/docs/books/tutorial/i18n/resbundle/propfile.html
ou em:
http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp

Com relação as actions e funcionamento dos botões, acho que você deve compreender primeiro o seguinte esquema.
Em uma linguagem por Eventos (Delphi, VB), quando o usuário clica em um botão, o SO envia para a aplicação um evento para ela tratar. Em linguagem OO não se espera esse tipo de operação diretamente. No java, ocorre o seguinte. Cria-se um "listener" (uma thread de baixa prioridade (ver mais em EventQueue - http://java.sun.com/j2se/1.4.2/docs/api/java/awt/EventQueue.html) que fica esperando o clique), quando essa thread detectar a ação ela irá executar um procedimento específico do seu código. O método a ser chamado deve implementar a interface ActionListener.

Bom o código do netbeans nesse caso não é muito bom, veja o que ele está fazendo:


No comando botao.addActionListerner ele adiciona um listener para executar a ação do botão, observe que pode existir mais de um listener para o mesmo botão. O listener nesse caso é uma instância da classe anônima criada no meio do código, dessa forma:


Observe que os comandos que você colocar dentro do método actionPerformed poderão acessar as propriedade e métodos da sua classe (mesmos os private), por ser parte da classe, na realidade por ser uma classe interna (inner class - http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html).

Acho que agora você compreende como funciona o fluxo de execução, em resumo:
1. O usuário clica em um botão, o SO gera uma notificação, a VM inclui essa notificação como um Event no EventQueue do Swing;
2. O Swing informa (invoca) todos os listener registrados.
3. A implementação do método actionPerformed é de sua responsabilidade e nele que você irá chamar ou executar a action especifica.

Com relação ao exemplo do @Action que é uma anotação incluída no Java 5, você irá compreender melhor aqui:
http://java.sun.com/developer/technicalArticles/javase/swingappfr/

Bom eu falei que o exemplo do NetBeans é ruim, veja duas possibilidade um pouco melhor:
Fazer com que a sua classe que especializa de um JFrame ou JDialog implement o ActionListener e ai você coloca assim a referência dos botões:


Segunda forma (melhor ainda):
Cria uma classe a parte que implementa a ActionListener e você cria uma instância dela dentro da sua classe Frane. E cada Action em classes separadas ao invés do código espaguete...
Tem um tutorial bom de um artigo do Fernando Lozano (http://www.lozano.eti.br/artigos.html)

att
Provavelmente deve ser um problema de classpath como indicado pelo Marcio,

você pode configurar no arquivo MANIFEST para fazer isso:

Exemplo:


Se você utilizar o netbeans, quando se inclui um jar no projeto ele faz a referência automática na construção do projeto e cria o jar da sua aplicação e copia os jars de dependência para a pasta lib dentro da pasta dist.

Para iniciantes, eu acho mais fácil que ficar configurando os pluggins do eclipse.

att
 
Índice dos Fóruns » Perfil de Dieval Guizelini » Mensagens enviadas por Dieval Guizelini
Ir para:   
Powered by JForum 2.1.8 © JForum Team