Os andaimes que há muito dominaram o campo Javaee liderou com as suportes da mola 2 mybatis/hibernate;
Primavera:
A primavera não é apenas para serviços Java. Como a implementação do Spring como padrão CGI, não é apenas uma estrutura no campo Java, mas a plataforma C# ainda pode se beneficiar; A Spring fornece vários métodos convenientes de configuração de anotação, como abstração ou soluções integradas de bootde, que simplifica muito a base do projeto de Javaee;
Durante o uso da primavera, os dois lados são diferenciados, alguns são anotações leves e outras tendem a ser anotações completas.
Primeiro de tudo, a premissa de anotação é que ela deve passar por proxy de procuração, dinâmica, estática e CGLIB. Para anotações leves, o ângulo é estático ou anotações únicas.
Por exemplo, anotações do controlador, essas anotações únicas ou anotações de tempo de compilação são inicializadas no contexto do projeto como uma varredura única implícita e anotações relacionadas, como o serviço, fornecendo instâncias de objetos leves singleton. Considerado a primeira escolha. Isso reduz o custo de proxy e reflexão durante o período de tempo de execução e também economiza melhores recursos para a pilha de tempo de execução.
Outro tipo, como a resposta, é uma anotação dinâmica ou anotação em tempo de execução. Cada vez que você solicitar, o reflexo da anotação será executado. É claro que a anotação do período de execução é de ocupar recursos.
Em geral, as anotações não necessárias podem ser completamente ignoradas. Com base no método de solicitação e resposta com base no básico do servlet, não há MVC, que não pode ser resolvido, tomando parâmetros, parâmetros de passagem, retornando etc., e não há necessidade de anotações durante o tempo de execução. As anotações durante o tempo de execução parecem reduzir a quantidade de código. Para compensar as várias deficiências nesse processo, uma anotação dinâmica de um círculo será executada para executar uma anotação que você usa dentro do método. Para anotações de parâmetros escritas no método, qual código está faltando em comparação com o uso da solicitação Get Yourself? É apenas que o processo original de uma etapa foi adicionado para adicionar uma camada de interceptação de código.
Como saber se uma anotação é uma anotação no período de tempo de execução ou tempo de compilação é muito simples. Clique em Ctrl+Mouse e você verá:
@Target ({elementType.type, elementType.method})
@Retention (retentionpolicy.runtime)
@Documented
Retenção Este tipo de enumeração ilustra completamente e claramente o período da anotação que você usa.
Todo mundo gosta de usar singletons com a primavera, o que é uma excelente maneira. Singleton não tem nada a ver com a própria simultaneidade, exceto que você precisa fazer com que ele competisse pela identificação de recursos.
Se você precisar ter muitos objetos de protótipo em seu projeto, isso significa que você abusou ou usou o objeto errado. O MVC basicamente possui parâmetros e retornos recebidos. Cada solicitação é um tópico. Uma resposta de solicitação separada tem o que eles entram e saem, que é completamente isolado. A partir disso, quando se trata de Mybatis, muitas pessoas usam vários resães na configuração Mybatis, e cada vez que vários feijões vão e volta. Após uma solicitação, o feijão como parâmetros e resultados devem ser uma vez. A superfície de Mybatis é clara para a manutenção do SQL, que custa bastante a eficiência do JDBC. Então ninguém se importa com isso. Para eles, o feijão não tem nada e não entende ou se importa com o GC. Se eles obtiverem problemas, adicione memória e adicione memória à parte superior. Tudo o que eles resolvem é o problema do tempo e usam espaço para trocar tempo. Com os mesmos parâmetros e mapeamento de resultados, se você usar o mapa do JDK, qual é melhor, é naturalmente o mapa do JDK.
Eu sempre acreditava teimosamente que o consumo do próprio objeto do novo JDK é muito menor que o de definir um feijão sozinho. Por que, desculpe, eu também não sei. Então, eu sempre venho mapear e mapear. Ao usar o mybatis, você deve detectar de perto se suas coisas estão proxys para a sua classe? O método é muito simples. No registro do projeto, abra a depuração para ver se o seu log é criado uma nova SQLSession sempre. Se for esse o caso, você deve observar que sua sessão Mybatis não é agrupada e não é procurada pelas coisas. Se houver SQL competitivo em um método, não há erro em desculpas, mas é descoberto que o banco de dados não executa seu SQL. Em breve, você descobrirá que o pool de conexões é usado muito rapidamente e criará frequentemente novas conexões. Obviamente, se você não pode usar o mybatis, não hesite, é certo não usá -lo.
Por que temos que tentar usar anotações estáticas? É muito simples. As aulas de primavera são basicamente singletons. Os projetos são grandes o suficiente e as instâncias de feijão são suficientes. O que esses singletons ocupam? A instância do objeto está no espaço da pilha e é referenciada na pilha. Então, quando o GC reciclará objetos desses singletons? o que você acha? Portanto, quando baseado na anotação, tente minimizar o uso de proxy dinâmico. Deixe mais recursos para uso quando necessário.
No passado, diríamos que não há heap, mas agora o pool constante de String de JDK1.7 já entrou na pilha.
Qual é melhor, tipo de compilação ou interpretabilidade? Obviamente, é analítico e o tipo de compilação é semelhante ao modelo de mediação. Portanto, é muito mais difícil construir uma excelente linguagem compilada do que uma linguagem interpretada.
A estrutura da web é muito clara. Primeiro, ainda está no contexto e depois uma série de componentes em sequência. A coisa mais importante que somos o componente do servlet, que é o padrão Javaee, e o restante dos componentes da Web são padrões de protocolo, que todos devem ter. Então você verá que o mapeamento de servlets em muitos projetos é /, que é uma maneira ruim. Por ser muito simples, JS ou CSS nunca precisam ser processados através de servlets. Portanto, o mapeamento considera principalmente a interação com os componentes do servidor de contêineres da Web e geralmente fornece dois tipos de identificação, como .Do e .Action .Do requer autenticação de permissão, etc., a ação é liberada diretamente. JS, etc. não precisam entrar no servlet e retornar diretamente do contexto da web de acordo com o URL, e não há como interceptar e liberar o MVC no MVC. É uma perda de tempo para criar problemas e resolver problemas, o que não é uma boa maneira. Dessa forma, independentemente de o NGINX estar envolvido ou não, seus recursos estáticos são estáticos para contêineres da Web e não têm nenhum relacionamento com os servlets. Servlets apenas se relacionam com o que você precisa lidar.
Onde é o melhor lugar para escrever JS?
Muitas pessoas estão acostumadas a escrever JS em JSP ou HTML, o que é ruim.
Quando construímos um projeto, devemos esperar que nossos JS e CSS sejam armazenados em cache pelo navegador.
Em seguida, o JS escrito na etiqueta do script da página é apenas uma tag, que não é diferente da div ou entrada e não será armazenada em cache. Eu verifiquei muitas informações e o cache que vi obviamente disse que a unidade de cache é um arquivo. Não o rótulo. Portanto, não tenho certeza de escrever seu CSS JS no arquivo e introduzir o arquivo para que o arquivo seja armazenado em cache, porque não há resposta afirmativa direta, é o meu palpite.
O JSP é na verdade um servlet, por isso é uma página dinâmica. Toda vez que você precisa carregar a classe para se traduzir dinamicamente e, em seguida, o método de gravação na classe grava a página para http no navegador e renderiza o navegador. Se for html, é estático. Dinâmico e flexível, não há dúvida de que, como é um servlet, é um objeto Java e várias tags e métodos Java são chamados de possibilidades. Páginas estáticas precisam ser tratadas por você mesmo. Se você usar um idioma macro semelhante às páginas estáticas, é melhor usar o JSP diretamente.
Quanto dados são carregados de cada vez na página?
Se o conteúdo exibido em sua página for baseado em categorias e listas, a quantidade de dados é muito pequena, com centenas de itens. O tipo agora é exibido no aplicativo Order de Takeaway, em seguida, todas as categorias e dados são fornecidos ao mesmo tempo. Portanto, o processamento é processado no lado do cliente, a troca e a visualização da categoria em todo o processo são processados na página, incluindo a pesquisa. O JS executado em nosso cliente, o telefone celular ou computador da A não competirá com o telefone ou computador celular da B. Se você alternar um tipo toda vez que mudar para um tipo, escovará um Ajax e é o mesmo grupo de contêineres da web, para que haja concorrência. Quanto mais frequente a operação, maior a concorrência. Isso está intimamente relacionado ao cenário real.
A quantidade de dados retornados por uma consulta não tem nada a ver com desempenho. Milhares de milhares de dados estão apenas no nível de dezenas de KB.
O número de consultas, ou seja, o número de interações com o servidor, é o motivo direto que afeta o desempenho geral.
A quantidade de dados em uma consulta é proporcional ao tamanho da tabela que está sendo consultada. Ele não acelerará a consulta retornando 10 consultas por vez e 10 consultas por vez, diminuindo a desaceleração da consulta. A operação do banco de dados é essencialmente um aplicativo de coleção e nada é criado.
A premissa de ajuste é que a quantidade dada é a mais apropriada, não mais você dá, mais apropriado é. A memória que JDK ou Tomcat pode consumir em diferentes dígitos do sistema operacional.
Use nginx;
Use cache quando necessário;
Selecione Message Middleware ou outro middleware de acordo com se você precisa;
A separação de bancos de dados ou escravos mestre, etc. deve ser que o banco de dados atual não possa suportar o volume de tráfego.
Singleton é uma boa maneira.
O multithreading é uma lâmina nítida e não distingue entre o idioma específico.
O gerenciamento do Maven é uma boa maneira, mas o corpo principal do seu projeto deve ser o WebMVC, criar um projeto da web, incorporar o Maven como um componente, em vez de criar um projeto MAVEN e convertê -lo em um projeto da Web, a menos que esteja ocioso.
Usando a primavera, atualmente é o melhor andaime.
Use o JDBC o máximo possível, se possível.
Não interaja com o servidor quando puder realizar coisas no cliente. Os recursos do cliente são vastos e os recursos do servidor são limitados.
Tente enviar menos solicitações. Os códigos que enviam menos solicitações são um bom código, a menos que você seja um aplicativo instantâneo.
As ferramentas em cada código são ferramentas e a API é o que você mais precisa entender. Não há resposta precisa para qual seja melhor e qual não é bom.
Tudo é um objeto, e é puro para Java. O proxy é um objeto, o reflexo é um objeto, o objeto é um objeto e o tipo de dados básico não é um objeto.
Coisas que não sejam tipos básicos são concluídos por meio de objetos. Não importa o quão complexo seja o processo, eles são concluídos através dos métodos de objeto correspondentes combinados com os parâmetros do método. Como serializar uma classe e dessertá -la, para colocá -la sem rodeios, é o IO e a transmissão do arquivo e, em seguida, carregue -o na JVM e construa -o em um objeto.
A razão pela qual o RPC não é chamado em um tópico. A coisa chamada é proxyed. O proxy converte suas necessidades em parâmetros e os envia como fluxos de dados. O servidor converte seu fluxo de solicitação em objetos e depois os transmite de volta. Você então constrói o objeto e o processa através do objeto.
Nio é uma boa maneira, a Netty é uma boa opção, existe algum soquete com vários threads que ultrapassa a rede?
O Zookeeper é uma excelente ferramenta para uma série de soluções como um bom registro distribuído.
Essas coisas são todos os princípios e objetos, então você precisa usá -los para lê -los com força.
O acima é um entendimento pessoal e você pode corrigi -lo.