Un resumen del manual de desarrollo JAVA de Ali

Un resumen del manual de desarrollo JAVA de Ali

Algunos puntos de conocimiento del manual de desarrollo de Alibaba java están incompletos, pero todos son más importantes

Estatuto de OOP

1. Una interfaz desactualizada debe ser anotada con @Deprecated e indicar claramente qué nueva interfaz o nuevo servicio se utiliza

2. Comparación de valores entre todos los objetos del mismo tipo de clase de empaque, todos utilizando el método igual para la comparación. Nota: Para la asignación de Integer var =? En el rango de -128 a 127, el objeto Integer se genera en IntegerCache.cache y reutilizará el objeto existente. El valor Entero en este rango se puede juzgar directamente usando ==, pero este rango Todos los datos distintos de esos se generarán en el montón y no reutilizarán los objetos existentes. Este es un gran problema. Se recomienda utilizar el método de igualdad para juzgar.

Procesamiento agregado

1. No elimine / agregue elementos en el bucle foreach. Utilice el método Iterator para el elemento remove. Si opera simultáneamente, debe bloquear el objeto Iterator.
Ejemplo positivo:

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

Contraejemplo:

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

Explicación: El resultado de la ejecución del código anterior definitivamente superará las expectativas de todos, así que intente reemplazar "1" por "2", ¿será el mismo resultado?
Los contraejemplos informarán un error. La primera vez que no se informa ningún error es porque después de que se elimina "1", it.corsor = 1 size = 1. it. Siguiente método retrun corsor! = Size devuelve false. El final del ciclo
una segunda vez para eliminar el "2" después
it.corsor = 2 = tamaño método .Next 1 es de retrun Corsor! = Tamaño de los rendimientos reales. Ejecutado. El siguiente método siguiente encuentra que la colección ha sido modificada y produce una excepción * java.util.ConcurrentModificationException

2. Al inicializar la colección, especifique el valor inicial de la colección. Nota: HashMap se inicializa con HashMap (int initialCapacity), ejemplo positivo: initialCapacity = (número de elementos a almacenar / factor de carga) + 1. Tenga en cuenta que el factor de carga (es decir, el factor del cargador) tiene como valor predeterminado 0.75. Si el valor inicial no se puede determinar temporalmente, ajústelo a 16. Ejemplo de contador: HashMap necesita colocar 1024 elementos. Dado que el tamaño inicial de la capacidad no está configurado, ya que los elementos continúan aumentando, la capacidad se ve obligada a expandirse 7 veces. El cambio de tamaño necesita reconstruir la tabla hash, lo que afecta seriamente el rendimiento

3. Use entrySet para atravesar el conjunto de clases Map KV en lugar de keySet. Explicación: KeySet se recorre 2 veces, una vez que se convierte en objeto Iterator, y la otra vez es extraer el valor correspondiente a la clave del hashMap. El entrySet solo atraviesa una vez y pone la clave y el valor en la entrada, que es más eficiente. Si es JDK8, use el método Map.foreach. Ejemplo positivo: values ​​() devuelve un conjunto de valores V, que es un objeto de colección de listas; keySet () devuelve un conjunto de valores K, que es un objeto de colección Set; entrySet () devuelve un conjunto combinado de valores KV

4. HashMap puede tener una cadena muerta debido a la alta concurrencia cuando la capacidad no es suficiente para cambiar el tamaño, lo que hace que la CPU se dispare. Puede usar otras estructuras de datos o bloqueos para evitar este riesgo durante el proceso de desarrollo.

Base de datos MySQL

Protocolo de índice

1. Se prohíbe unirse a más de tres mesas. Para los campos que deben unirse, los tipos de datos deben ser absolutamente consistentes; cuando las consultas relacionadas con varias tablas, asegúrese de que los campos relacionados deben tener índices. Nota: Incluso con combinaciones de tablas duales, se debe prestar atención a los índices de tabla y al rendimiento de SQL.

2. La búsqueda de páginas está estrictamente prohibida. Desenfoque izquierdo o desenfoque completo. Si es necesario, vaya al motor de búsqueda para resolver. Nota: El archivo de índice tiene la característica de coincidencia de prefijo más a la izquierda de B-Tree. Si no se determina el valor a la izquierda, este índice no se puede usar.

3. Utilice el índice de cobertura para realizar operaciones de consulta y evitar volver a la tabla. Explicación: Si un libro necesita saber cuál es el título del Capítulo 11, ¿se abrirá la página correspondiente al Capítulo 11? Simplemente explore el directorio, este directorio se utiliza para cubrir el índice. Ejemplo positivo: los tipos de índices que se pueden establecer: índice de clave primaria, índice único, índice ordinario e índice de cobertura es el efecto de una consulta. Con el resultado de la explicación, aparecerá la columna adicional: uso del índice

4. Evite la conversión implícita causada por diferentes tipos de campo, lo que lleva a la falla del índice

5. Use ISNULL () para determinar si es un valor NULL. Nota: La comparación directa de NULL con cualquier valor es NULL. Explicación: 1) El resultado de retorno de NULL <> NULL es NULL, no falso. 2) El resultado de retorno de NULL = NULL es NULL, no es cierto. 3) El resultado de retorno de NULL <> 1 es NULL, no es cierto.

6. Está prohibido usar procedimientos almacenados, que son difíciles de depurar y expandir, y aún menos portátiles.

7. Si se puede evitar el funcionamiento, evítelo: si es inevitable, debe evaluar cuidadosamente el número de elementos establecidos y controlarlo dentro de 1,000

17 artículos originales publicados · ganó 24 · vistas 280,000 +

Supongo que te gusta

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