Java Advanced II: Java de alto rendimiento - curso 67.500 rublos. del IBS Training Center, formación 40 horas, Fecha 29 de enero de 2024.
Miscelánea / / December 04, 2023
Pavel trabaja en Luxoft desde 2005. Durante este tiempo, participó en varios proyectos para empresas líderes rusas y extranjeras, como Boeing, Russian Post, DHL, MVideo. Actualmente, desempeña el papel de ingeniero de software líder en un proyecto para respaldar la cadena minorista más grande de venta de productos electrónicos y electrodomésticos en Rusia. El principal interés de Pavel es desarrollar aplicaciones Java escalables y proporcionar soluciones técnicas para mejorar el rendimiento y la confiabilidad de las aplicaciones.
Tópicos cubiertos:
Módulo 1. Revisión de ajuste del rendimiento: 5 horas.
Prácticas Generales;
Estrategias de ajuste del rendimiento;
Métricas de rendimiento;
¿Cómo mejorar la productividad?
Herramientas de medición del desempeño;
JMetro;
Pruebas de carga usando JMeter;
¿Cómo mejorar la productividad usando la arquitectura?
Mejores prácticas para mejorar el rendimiento del código.
Tarea – 2 horas.
Módulo 2. Algoritmos de GC – 5 horas.
Uso de memoria de objetos Java;
Enfoques generales y algoritmos de recolectores de basura;
Recolector de basura GC en serie;
Recolector de basura GC paralelo;
Recolector de basura CMS;
Recolector de basura G1;
Recolector de basura de Shenandoah;
Tuning de recolectores de basura;
Herramientas para recopilar y analizar métricas de recolección de basura;
Elegir el recolector de basura óptimo.
Módulo 3. Compilador HotSpot JIT: 5 horas.
Compilación JIT;
código de bytes de Java;
Compilación multicapa;
Caché de código y su ajuste;
Optimización de código;
Desoptimización del código y cuándo ocurre;
Herramienta JITWatch para analizar resultados de compilación;
Tipos de optimizaciones;
Optimizaciones especulativas;
Configuración del compilador;
Compilación AOT.
Tarea – 2 horas.
Módulo 4. Banderas JVM: 3 horas.
Propósito y categorías de indicadores JVM;
Banderas generales;
Banderas asociadas con cadenas;
Banderas de gestión de memoria;
Puntos seguros y banderas asociadas a ellos;
TLAB y banderas asociadas a ellos;
Plan de ajuste de JVM.
Módulo 5. Prueba del rendimiento de algoritmos (benchmarking) utilizando JMH – 2 horas.
¿Qué es la evaluación comparativa?
Introducción a JMH;
API JMH;
Ejemplos no triviales;
Aplicación de JMH en la práctica.
Tarea – 2 horas.
Módulo 6. Uso de memoria fuera del montón (memoria fuera del montón): 3 horas.
¿Qué es sun.misc? Inseguro;
Métodos inseguros;
Rendimiento de la memoria nativa;
Crear estructuras de datos en la memoria nativa;
Evaluación del rendimiento de la memoria nativa y comparación con la memoria del montón;
Prometedora API de acceso a memoria externa.
Módulo 7. Serialización – 2 horas.
Serializadores JSON (GSON, Jackson);
Serializadores binarios (Protobuf, Jackson Smile, Kryo, FST, One NIO);
Comparación del rendimiento de diferentes serializadores.
Módulo 8. Perfilado de Java: 4 horas.
¿Cuándo y cómo hacer perfiles?
Perfiladores de muestreo e instrumentación;
Usando Java VisualVM para crear perfiles;
Creación de perfiles con Spring AOP;
Creación de perfiles con IDEA y perfilador asíncrono;
Grabador de vuelo Java;
Análisis de registros de Java Flight Recorder utilizando Mission Conrol;
Crear y registrar eventos JFR personalizados;
Usar agentes Java para incrustar código y registrar cualquier evento en Java Flight Recorder;
Programas de escritura para el análisis automático de registros JFR;
Recopilación y análisis de consultas SQL utilizando JFR;
Recopilación y análisis de solicitudes REST utilizando JFR.
Tarea – 2 horas.
Módulo 9. Monitoreo y análisis de datos del montón. Pérdidas de memoria: 2 horas.
Herramientas de análisis de datos en memoria;
Signos de pérdidas de memoria;
Las principales causas de las pérdidas de memoria;
Busque y detecte pérdidas de memoria.
Módulo 10. GraalVM – 3 horas
Ecosistema GraalVM;
Tiempo de ejecución de GraalVM;
API políglota;
Compilación e imagen nativa;
Puntos de referencia.
Módulo 11. Almacenamiento en caché en aplicaciones Java: 3 horas.
Patrones de almacenamiento en caché;
Comparación de API de caché;
Consultas de bases de datos en caché;
Almacenamiento en caché de solicitudes HTTP;
Métricas básicas y configuraciones de bibliotecas de almacenamiento en caché;
Comparación de bibliotecas de almacenamiento en caché populares;
Almacenamiento en caché de nivel de servicio;
Almacenamiento en caché de servicios Spring;
Aplicaciones que utilizan cachés de diferentes niveles.
Módulo 12. Revisión de otros enfoques para mejorar la productividad - 3 horas.
Programación paralela (grupos de subprocesos, subprocesos paralelos, estructura de unión en horquilla);
Programación asincrónica;
Programación reactiva (Reactor, VertX);
Optimización del trabajo con bases de datos;
Computación en la nube (microservicios, Spring Cloud);
Puntos de referencia y conclusiones.