Post Sobre armazenamento de objetos em um Cache
o que é um cache?
Nos dias atuais cada vez mais acessamos sites, usamos banco de dados, e nossos proprios
computadores tem grande capacidade de armazenamento de processamento.Com a finalidade
de agilizar essas consultas e processamentos que existe a memoria cache, sendo uma
memoria de acesso muito rapido, que guarda pequenas quantidades de informações, as mais
acessadas por nós, seja em sites, no nosso HD ou ate mesmo um banco de dados.
Tipos mais típicos de cache
Como falado anteriormente, alguns tipos mais tipicos de caches sao:
1-Cache de sites: são caches guardados pelo navegador que usamos, guardam informaçoes
de uma pagina que visitamos na web, para que ao acessa-las novamente nao precisamos
carregar a pagina completamente, e sim informaçoes que foram atualizadas nela, assim
agilzando o processo de carregamento.
2-Cache no processador: uma memoria de alto desenpenho que fica embutida dentro do
processador, é utilizada para que o processador acesse dados mais rapidos, evitando a
busca na memoria ram que é mais lenta.Normalmente utilizada em 3 niveis no processador.
Nivel L1, L2 e alguns processadores chegam a ter o nivel L3.
3- Cache do disco : fica localizada junto ao disco rigido do nosso computador, ela
armazena as ultimas trilhas feita pelo HD assim evitando que a cabeça de leitura e
gravação passe varias vezes pelo mesmo lugar.
Características de um cache:
E uma memoria de velocidade de leitura e escrita muito mais rapido, por isso é
utilizado para armazenar dados que são lidos ou gravados varias vezes.
Possui um tempo de vida, assim nada fica sempre armazenado no cache para sempre.
Sobre meu projeto:
Bom, tendo explicado um pouco sobre memoria cache, vou mostrar um pouco do meu projeto
de cache, mostrando os codigos em java, o projeto tem como finalidade criar um toolkit
que atraves de anotaçoes feitas por quem desenvolve uma classe seja colocado na memoria
ram utilizada pela maquina virtual do java, assim evitando por exemplo o acesso a um
banco de dados utilizado por um sistema.
Alguns Métodos da minha classe cache :
Essa classe manipula o cache, ela possui um objeto cache estatico que só pode ser
instancia dentro dela mesmo, e todos os metodos necessario para adicionar, remover,ou
até mesmo limpar todo o cache.
verifica se uma chave existe :
public boolean hasKey(String chave){ boolean chaveExisteNoCache = true; if(chaveEhValida(chave)&&temEssaChaveNaListaDeObjetos(chave)) return chaveExisteNoCache; return chaveExisteNoCache=false; }
retorna um objeto do cache :
public Object get(String chave){ if(chaveEhValida(chave)==false){ System.out.println("chave invalida"); return chave; } if(temEssaChaveNaListaDeObjetos(chave)==false){ System.out.println("objeto inexistente na lista"); return chave; } Object objeto = listaObjetosNoCache.get(chave); return objeto; }
metodo que adiciona um objeto no cache :
/** public void add(String chave,Object objeto,int tempo){ if(chaveEhValida(chave) && validaObjeto(objeto)){ addChaveObjetoNoCache(chave,objeto); addChaveParaMonitorar(chave,tempo); } }
metodo altera o tempo de um objeto no cache :
public void alteraTempoDoObjeto(String chave,int tempoEmMinutos){ if(chaveEhValida(chave)&&(temEssaChaveNaListaDeObjetos(chave))){ long novoTempo = calculaTempoDeDuracaoNoCache(tempoEmMinutos); atualizaTempoDaChave(chave, novoTempo); System.out.println("tempo alterado da chave para : "+tempoEmMinutos +" minutos"); } else System.out.println("chave invalida ou objeto inexistente no cache "); }
Devido ao tamanho da classe deixo os outros métodos para outra hora : )
Abaixo sobre a classe da anotação:
Anotação que inclui um objeto no cache feita em cima de um metodo, por meio de uma
interface, é uma anotaçao que deve ser inserida em um metodo de uma interface, que sera
reconhecida pelo metodo proxy utilizado na classe cache.
package cache; /** *Classe utilitaria para anotar metodos que serao inseridos no cache da JVM *@author Andrei Garcia (andrei_garcia2@hotmail.com) *@since JDK.7 */ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** *Anotação para ser utilizada sobre uma interface ,sendo anotada * em cima de um método,metodo o qual sera inserido no cache da JVM seu objeto de retorno * *@author Andrei Garcia *@category anotação * */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface ColocarNoCache { int tempo() default 60; }
Bom era isso, espero que tenham curtido o posto : )
Referencias
http://www.tecmundo.com.br/tira-duvidas/21555
http://pt.wikipedia.org/wiki/Cache
Nenhum comentário:
Postar um comentário