Um resumo do manual de desenvolvimento JAVA de Ali

Um resumo do manual de desenvolvimento JAVA de Ali

Alguns pontos de conhecimento do manual de desenvolvimento java do Alibaba estão incompletos, mas são todos mais importantes

Estatuto OOP

1. Uma interface desatualizada deve ser anotada com @ Deprecated e declarar claramente qual nova interface ou novo serviço é usado

2. Comparação de valores entre todos os objetos do mesmo tipo de classe de embalagem, todos usando o método equals para comparação. Nota: Para a atribuição de Inteiro var =? No intervalo de -128 a 127, o objeto Inteiro é gerado em IntegerCache.cache e reutiliza o objeto existente.O valor Inteiro nesse intervalo pode ser julgado diretamente usando ==, mas esse intervalo Todos os dados que não sejam esses serão gerados no heap e não reutilizarão os objetos existentes.Este é um grande poço.Recomenda-se usar o método equals para julgar.

Processamento agregado

1. Não remova / adicione elementos no loop foreach. Use o método Iterator para o elemento remove.Se você operar simultaneamente, precisará bloquear o objeto Iterator.
Exemplo positivo:

Iterator<String> it = a.iterator();
while (it.hasNext()) {
    String temp = it.next();
    if (删除元素的条件) {
        it.remove();
    }
}

Contraexemplo:

List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
for (String temp : a) {
    if ("2".equals(temp)) {
        a.remove(temp);
    }
}

Explicação: O resultado da execução do código acima definitivamente estará além das expectativas de todos, portanto, tente substituir "1" por "2", será o mesmo resultado?
Os contra-exemplos reportarão um erro. A primeira vez que nenhum erro é relatado é porque após a remoção de "1", it.corsor = 1 size = 1. It. Próximo método retrun corsor! = Size retorna false. O fim do ciclo de
uma segunda vez para remover "2" após
it.corsor = 2 size = método .next 1-lo de retrun corsor! = Tamanho retornos verdadeiros. O próximo método seguinte descobre que a coleção foi modificada e lança uma exceção * java.util.ConcurrentModificationException

2. Ao inicializar a coleção, especifique o valor inicial da coleção. Nota: O HashMap é inicializado com HashMap (int initialCapacity), exemplo positivo: initialCapacity = (número de elementos a serem armazenados / fator de carga) + 1. Observe que o fator de carga (por exemplo, fator do carregador) é padronizado como 0,75 Se o valor inicial não puder ser determinado temporariamente, defina-o como 16. Exemplo de contador: o HashMap precisa colocar 1024 elementos. Como o tamanho inicial da capacidade não está definido, à medida que os elementos continuam a aumentar, a capacidade é forçada a expandir 7 vezes. O redimensionamento precisa reconstruir a tabela de hash, o que afeta seriamente o desempenho

3. Use entrySet para percorrer o conjunto de classes Map KV em vez de keySet. Explicação: O keySet é realmente percorrido 2 vezes, uma vez que é convertido no objeto Iterator, e o outro momento é extrair o valor correspondente à chave do hashMap. O entrySet percorre apenas uma vez e coloca a chave e o valor na entrada, o que é mais eficiente. Se for JDK8, use o método Map.foreach. Exemplo positivo: values ​​() retorna um conjunto de valores V, que é um objeto de coleção de listas; keySet () retorna um conjunto de valores K, que é um objeto de coleção Set; entrySet () retorna um conjunto combinado de valores KV

4. O HashMap pode ter uma cadeia morta devido à alta simultaneidade quando a capacidade não é suficiente para redimensionar, fazendo com que a CPU suba.Você pode usar outras estruturas de dados ou bloqueios para evitar esse risco durante o processo de desenvolvimento.

Banco de dados MySQL

Protocolo de índice

1. É proibida a participação de mais de três tabelas. Para os campos que precisam ser unidos, os tipos de dados devem ser absolutamente consistentes; quando consultas relacionadas a várias tabelas, verifique se os campos relacionados precisam ter índices. Nota: Mesmo com junções de tabela dupla, deve-se prestar atenção aos índices da tabela e ao desempenho do SQL.

2. A busca da página é estritamente proibida, à esquerda ou em desfoque total, se necessário, vá ao mecanismo de busca para resolver. Nota: O arquivo de índice possui o recurso de correspondência de prefixo mais à esquerda da Árvore B. Se o valor à esquerda não for determinado, esse índice não poderá ser usado.

3. Use o índice de cobertura para executar operações de consulta e evitar retornar à tabela. Explicação: Se um livro precisar saber qual é o título do Capítulo 11, a página correspondente ao Capítulo 11 será aberta? Basta procurar o diretório, este diretório é usado para cobrir o índice. Exemplo positivo: Os tipos de índices que podem ser estabelecidos: índice de chave primária, índice exclusivo, índice comum e índice de cobertura são efeitos de uma consulta.Com o resultado da explicação, a coluna extra aparecerá: using index

4. Impedir a conversão implícita causada por diferentes tipos de campos, levando à falha do índice

5. Use ISNULL () para determinar se é um valor NULL. Nota: A comparação direta de NULL com qualquer valor é NULL. Explicação: 1) O resultado do retorno de NULL <> NULL é NULL, não falso. 2) O resultado do retorno de NULL = NULL é NULL, não verdadeiro. 3) O resultado do retorno de NULL <> 1 é NULL, não verdadeiro.

6. É proibido o uso de procedimentos armazenados, difíceis de depurar e expandir, e ainda menos portáteis.

7. Se a operação de entrada puder ser evitada, evite-a.Se for inevitável, é necessário avaliar cuidadosamente o número de elementos definidos atrás e controlá-lo para dentro de 1.000

Publicado 17 artigos originais · ganhou 24 · visualizações 280,000 +

Acho que você gosta

Origin blog.csdn.net/qq_22956867/article/details/76628499
Recomendado
Clasificación