| Autor |
Mensagem |
|
|
Seguem alguns links que encontrei e que comentam algo de performance
http://blog.andreloker.de/post/2008/06/Post-Redirect-Get.aspx
http://www.strong-point.com/Blogs/tabid/87/EntryID/8/Default.aspx
http://blogs.msdn.com/b/aspnetue/archive/2010/09/17/second_2d00_post.aspx
http://www.coderanch.com/t/366155/Servlets/java/stop-data-insertion-page-refresh#1601181
|
 |
|
|
No meu trabalho começaram umas discuções sobre o uso do padrão POST/redirect/GET (PRG) impactar na performance de um site, mais especificamente na UX.
Particularmente sou defensor desse padrão, acho mais profissional e elegante sistemas desenvolvidos assim, penso que se um site tem problemas de performance, não é eliminando o PRG que ele vai ficar ok, da mesma forma o inverso, a inserção desse padrão não abalaria a UX de um usuário (talves um cara com 56k? 3g zoada?).
Encontrei blog's falando que em teoria sim, causa uma perda de performance (afinal tem um request a mais), porém na prática não tem "provas" (a perda é insignificante e se um site tem problema de performance, vai ter com ou sem PRG).
Enfim, gostaria de saber a opinião de mais pessoas, e principalmente se alguém já chegou a estudar isso mais a fundo.
abs.
|
 |
|
|
kyubinarutosan wrote:Valeu pela dica iubs mas esse metodo que você me passou é pra pegar o ip no applet o que eu preciso é que o servidor me mostre o ip do cliente que esta acessando.
vai o codigo do servidor
package rede;
Acho que isso pode te ajudar:
http://www.cse.ohio-state.edu/~gurari/course/cis888w04/cis888w04su25.html
Não testei, mas basicamente vc deve pegar e usar os métodos de "s" (retorno de accept)
|
 |
|
|
avsouza wrote:usando o metodo da classe
HttpServletRequest
Se entendi certo ele está usando um applet, dessa forma você disse para ele como obter o IP caso ele esteja dentro de um servlet...
kyubinarutosan, nunca precisei trabalhar com applet, mas buscando na internet achei o seguinte:
http://www.mkyong.com/applet/how-to-get-client-ip-address-in-applet/
Teste ai para ver se funciona....
Porem, dessa forma vc estara a partir do applet (que roda no browser do cliente), obtendo o IP dele, se seu servidor quiser saber esse IP (deve ser isso) você vai ter que mandar essa informação para lá.
E ai vem a duvida, que servidor é esse? como é a comunicação? se a comunicação é via http e for um servidor rodando servlet's em java, então você pode usar os métodos que o avsouza falou sem precisar obter via applet, se for algo próprio de vocês, mande essa informação junto com as outras que você já deve estar mandando.
|
 |
|
|
É tudo uma questão de vc saber o que e quais sql's estão executando
Primeiro, antes de você fazer uma alteração, leia sobre isso:
http://en.wikipedia.org/wiki/SQL_injection
Seu sistema esta cheio, tudo errado.
Agora verifique esse código:
Perceba que ira imprimir: aaaa 'null', logo seu código:
Caso tf_tombo.getText() esteja retornando nulo, ele está criando o SQL: Select * From cad_estoque Where Tombo = 'null', ou seja, procurando por um tombo com a string "null" e não necessariamente com valor nulo.
Isso vai acontecer também lá no seu insert, você não esta inserindo nulo no valor de tombo e sim a string "null", como o campo deve ser unicle, só pode haver um registro com tombo "null", por isso no próximo da erro.
Reveja todo seu código, se você entender o primeiro código do meu post (do aaaa somando com null) vai entender fácil que problema esta ocorrendo no seu sistema.
Meu conselho, leia sobre sql inject, elimine eles usando PreparedStatement, tanto no insert quanto nos select's, valide que no seu banco esta incluindo nulo mesmo, que então todos seus problemas se resolvem.... tá fácil, basta vc entender qual está sendo o problema
|
 |
|
|
|
Posta como vc mapeou esse relacionamento (o atributo ou metodo mapeado com @ManyToOne).
|
 |
|
|
Ix cara, para qualquer framework vc vai precisar entender um pouco de inglês, até tem material em português, mas vc com certeza vai chegar em um ponto que precisa conhecer e pesquisar em docs em inglês.
Segue alguns frameworks de ioc que você pode usar
Spring - http://static.springsource.org/spring/docs/2.5.x/reference/
Pico - Container http://www.picocontainer.org/introduction.html
Guice - http://code.google.com/p/google-guice/
A e isso é independente se você esta fazendo um sistema desktop ou web
|
 |
|
|
Sim, assim vc tem mais cotrole e seu DAO não tanta responsabilidade
Agora para ficar melhor ainda, só falta colocar algum framework de ioc (tipo spring) ai, que ele gerencia a criação de objetos para vc... usando spring vc tera ajuda ateh para controlar a transação.
|
 |
|
|
Então, seu DAO esta com muita responsabilidade, ele não deveria ser o responsável por abrir e fechar a conexão, e sim receber ela no construtor por exemplo (injeção de dependencia).
Dessa forma, vc pode controlar melhor sua conexão, mantendo ela aberta por mais tempo.
|
 |
|
|
Então, faz desde 2007 que não mexo com isso, e agora estou trabalhando não posso testar.
Mas ele não lança nenhuma exceção caso o tamanho ultrapasse?! verifique se ai não tem nada como:
|
 |
|
|
Vc não pode incluir nada em listas com WildCards do tipo: ? extends Class
Por que?
Porque isso é valido:
Uma lista de algo que extends Number pode ser uma lista de integer, float, double etc.
Vc tem certeza de que o que está ali dentro é no minimo um Number, por isso o get retorna Number, mas não tem certeza exatamente do tipo que seu objeto (ArrayList) é, qual subtipo de Number ArrayList é, então não pode adicionar um Integer pois se o ArrayList for de Float, vai dar pau.
É mais ou menos isso hehe tanto que os wildcards vc só pode usar para as referencias e não para criar objetos: new ArrayList<? extends Number>() não funciona, pois o objeto tem que ser de apenas um tipo
Exemplos praticos disso seria algo como:
Ou seja, crio métodos que recebem uma lista de algo que eu sei, mas essas listas podem ser de subtipos (e como não sei qual é o subtipo exatamente, eu não posso incluir nada ali dentro)
Ah, e não necessariamente se usa wildcards apenas com collection, por exemplo, quero criar um método que só receba classes que são do tipo Number:
Espero ter ajudado
|
 |
|
|
http://commons.apache.org/fileupload/using.html
Procura por
|
 |
|
|
Falta de pai vc quer dizer que dada a entrada:
1
1.1
1.2.1
2.1.2
Esta faltando os pais 1.2, 2 e 2.1?
Se sim, eu estava pensando em algo desse tipo, veja se te ajuda (o que esta em list simula algo vindo do seu xls), foda que tah recursivo, ideal que não seja... mas para 8000 objetos nao deve fazer tanta diferença:
|
 |
|
|
Primeira forma eh vc criar um app-ctx no seu projeto web (que tem no classpath os dois jar's dos dao's), e criar os dao's normal nele, afinal, o projeto web usa os jar's, então ele vai usar as classes (DAO) que os jar's tem, ou seja, nao muda nada do que existe hj (essa eu considero a maneira mais correta, vc cria a dependencia no projeto que tah usando e nao no que esta sendo usado - afinal nem todos projetos que usam o seu jar podem querer criar as classes da mesma forma que o app-ctx do jar define)
Segunda forma eh cada jar já ter seu app-ctx, e ai vc vai importar esses app-ctx no app-ctx do seu projeto web:
ex:
app-ctx-web.xml
Essa forma eu acho mais pratica.
A terceira forma eh vc no context listener do spring no web.xml vc colocar os varios app-ctx que vc tem separados por virgula.
|
 |
|
|
Se o arquivo sempre tiver mais ou menos esse tamanho (8000 registros), eu faria tudo em memoria primeiro e depois gravaria no banco, entao ao inves de buscar e gravar no banco para cada linha, eu iria usar alguma estrutura baseada em hash.
Outra coisa eh mais logica, vamos supor que vc tem 200 filhos de 1.1, pq buscar 200x o 1.1 quando vc soh precisa buscar uma vez?! E dependendo de como o xls estiver organizado, vc insere o pai e todos os filhos vaum vir logo a seguir ateh que vc mude de nivel (quando 1.1 passar a ser 1.2, vc nao precisa mais da referencia para 1.1 pois tem certeza que ja processou todos seus filhos)
|
 |
|
|
|
|