Skip to content
StackPractices

Etiqueta: java

Explora 111 recursos prácticos de ingeniería de software etiquetados con "java". Descubre recetas de código, patrones de diseño, plantillas de documentación y guías detalladas para ayudarte a construir, desplegar y mantener soluciones listas para producción con java.

Crear documentación de API con OpenAPI

Genera documentación de API interactiva a partir de specs OpenAPI usando Swagger UI, Redoc y herramientas nativas en Python, JavaScript y Java.

Implementar logging y audit trails de API

Configura logging completo de petición/respuesta y audit trails para APIs con salida estructurada, correlation IDs y consideraciones de compliance.

Implementar una API GraphQL

Construye una API GraphQL lista para producción con schemas tipados, resolvers y optimización de queries en Python, JavaScript y Java.

Manejar Errores en APIs

Patrones para un manejo de errores de API consistente y predecible en varios lenguajes y frameworks.

Validación de Input

Cómo validar input de usuarios de forma segura usando schemas, type checking y sanitización en Python, JavaScript y Java.

Logging

Cómo implementar logging estructurado basado en niveles en Python, JavaScript y Java con lo que funciona para observabilidad en producción.

Construir notificaciones en tiempo real con WebSockets

Implementa un sistema de notificaciones en tiempo real usando WebSockets y Redis pub/sub para difundir mensajes entre clientes.

Enviar Emails con SMTP

Cómo enviar emails transaccionales y masivos de forma segura usando SMTP con soporte de plantillas.

Servidor WebSocket

Cómo construir un servidor WebSocket para comunicación en tiempo real bidireccional, con gestión de conexiones, broadcasting de mensajes y heartbeat keepalive.

Inyección de Dependencias

Implementa inyección de dependencias para escribir código testeable, desacoplado y mantenible en múltiples lenguajes y frameworks.

Configurar Caffeine Cache en Java con Politicas de Eviction

Configura Caffeine cache en una aplicacion Java con politicas de eviction por tamano, tiempo y peso para caching local de alto rendimiento.

Usar Anotaciones de Cache de Spring con Backend Redis

Aplica las anotaciones @Cacheable, @CachePut y @CacheEvict de Spring con un cache manager Redis para caching declarativo en aplicaciones Java.

Componer Pipelines Asincronos con Java CompletableFuture

Construir pipelines async no bloqueantes en Java usando CompletableFuture con thenCompose, thenCombine, allOf, anyOf, manejo de excepciones, timeouts y thread pools personalizados.

Escalar Aplicaciones Concurrentes con Java Virtual Threads

Escalar aplicaciones Java con virtual threads de Project Loom. Usar Thread.ofVirtual, Executors.newVirtualThreadPerTaskExecutor, concurrencia estructurada y scoped values.

Caching y Memoización

Cómo cachear computaciones costosas y respuestas de API usando caches en memoria, LRU y distribuidos en Python, JavaScript y Java.

Convertir CSV a JSON

Cómo convertir datos CSV a formato JSON en Python, Java y JavaScript.

Convertir JSON a CSV

Cómo convertir datos JSON a formato CSV en Python, Java y JavaScript.

Comparar Objetos JSON

Cómo comparar dos objetos JSON y encontrar diferencias en Python, Java y JavaScript.

Aplanar y Reconstruir Objetos Anidados

Cómo convertir objetos anidados en pares clave-valor planos y reconstruirlos, con soporte de notación por puntos, corchetes y separadores custom.

Formatear Números de Teléfono

Cómo formatear y validar números de teléfono en Python, Java y JavaScript.

Generar Slugs URL

Cómo generar slugs limpios y amigables para URLs desde strings en múltiples lenguajes.

Fusionar Archivos JSON

Cómo fusionar múltiples archivos JSON en un solo objeto o array en Python, Java y JavaScript.

Analizar Argumentos de Línea de Comandos

Cómo analizar argumentos de línea de comandos en aplicaciones CLI de Python, Java y Node.js.

Analizar Archivos CSV

Cómo analizar archivos CSV en Python, Java y JavaScript con ejemplos de código prácticos.

Analizar Archivos Excel

Cómo leer y escribir archivos Excel (.xlsx) en Python, Java y JavaScript.

Parsear JSON

Cómo parsear cadenas JSON a estructuras de datos nativas en varios lenguajes de programación.

Analizar Archivos de Log

Cómo analizar archivos de log de servidores usando Python, Java y JavaScript.

Analizar Archivos Markdown

Cómo analizar Markdown a HTML y extraer datos estructurados en Python, Java y JavaScript.

Analizar Archivos PDF

Cómo extraer texto y metadata de archivos PDF en Python, Java y JavaScript.

Analizar Archivos TOML

Cómo analizar archivos de configuración TOML en Python, Java y JavaScript.

Analizar Archivos XML

Cómo analizar documentos XML en Python, Java y JavaScript con ejemplos de código prácticos.

Analizar Archivos YAML

Cómo analizar archivos de configuración YAML en Python, Java y JavaScript.

Expresiones Regulares

Cómo usar expresiones regulares para matching de patrones, validación y extracción de texto en Python, JavaScript y Java.

Serializar y Deserializar Datos

Cómo serializar y deserializar datos en JSON, XML y YAML en Python, Java y JavaScript.

Ordenar un Array

Cómo ordenar arrays y listas en orden ascendente, descendente y personalizado en varios lenguajes.

Truncar Texto

Cómo truncar texto con ellipsis y límites de palabras en Python, Java y JavaScript.

URL Encoding

Cómo codificar y decodificar URLs, parámetros de query y segmentos de path de forma segura en Python, JavaScript y Java.

Validar JSON Schema

Cómo validar datos JSON contra schemas en Python, Java y JavaScript.

Conectar a MySQL

Cómo conectar a bases de datos MySQL en Python, JavaScript y Java.

Conectar a PostgreSQL

Cómo conectar a bases de datos PostgreSQL en Python, JavaScript y Java.

Conectar a Redis

Cómo conectarse a Redis y realizar operaciones básicas en Python, JavaScript y Java.

Ejecutar SQL Crudo

Cómo ejecutar consultas SQL crudas de forma segura con sentencias parametrizadas.

[ES] Use ORM for CRUD

[ES] How to perform CRUD operations using ORMs in Python, JavaScript, and Java.

Endpoint de Health Check

Cómo implementar un endpoint de health check listo para producción para monitoreo y load balancers.

Analizar y Validar Configuración YAML/JSON

Cómo analizar y validar archivos de configuración de aplicaciones usando esquemas YAML y JSON.

Comprimir y Descomprimir Archivos

Cómo manejar archivos ZIP, GZIP y TAR programáticamente.

Copiar y Mover Archivos

Cómo copiar y mover archivos de forma segura y eficiente entre plataformas.

Validación de Subida de Archivos

Cómo manejar subidas de archivos de forma segura con validación de tamaño, tipo y contenido.

Generar PDFs

Cómo generar documentos PDF programáticamente desde HTML, plantillas o datos crudos.

Generar Archivos Temporales

Cómo crear archivos y directorios temporales de forma segura con limpieza automática en Python, Node.js, Java y Bash.

Leer Archivos Grandes

Cómo leer archivos grandes de forma eficiente sin agotar la memoria.

Rotar Archivos de Log

Cómo implementar rotación de logs por tamaño, fecha y cantidad para prevenir la exaustión de disco en Python, Node.js, Java y Linux.

Observar Cambios en Archivos

Cómo monitorear cambios en el sistema de archivos en tiempo real.

Escribir Archivos Grandes

Cómo escribir archivos grandes de forma eficiente usando salida bufferizada y streaming.

Consumir Topicos de Kafka con Spring Boot Stream Listeners

Construir consumers de Kafka en Spring Boot usando anotaciones @KafkaListener, consumers concurrentes, error handlers, patrones DLQ y batch listeners con acknowledgment manual.

Health Checks Personalizados con Spring Boot Actuator

Cómo implementar health indicators personalizados con Spring Boot Actuator, incluyendo checks de base de datos, Redis, APIs externas y Kubernetes readiness probes.

Exponer Métricas con Micrometer y Prometheus

Cómo exponer métricas personalizadas de aplicación usando Micrometer y Prometheus en Spring Boot, incluyendo counters, gauges, timers e histograms.

Escapar Entidades HTML

Cómo escapar entidades HTML para prevenir ataques XSS en Python, Java y JavaScript.

Detectar Bugs en Java con SpotBugs Static Analysis

Cómo configurar SpotBugs para Maven y Gradle, interpretar bug patterns, suprimir false positives e integrar con pipelines CI/CD.

Sanitizar Input de Usuario

Cómo sanitizar y validar input de usuario en Python, Java y JavaScript para prevenir ataques de inyección.

Prevenir Ataques de Inyección SQL

Cómo escribir queries parametrizadas y usar ORMs para eliminar vulnerabilidades de inyección SQL en Python, JavaScript y Java.

Generar Datos de Test

Cómo generar datos de test realistas y deterministas con Faker, factory-boy y generadores type-aware para suites de test confiables en Python, JavaScript y Java.

JUnit5 Soft Assertions con AssertJ

Cómo usar AssertJ soft assertions en JUnit5 para recolectar múltiples fallos de aserción en un solo test en lugar de detenerse en el primer fallo.

Testcontainers para Tests de Integración en Java

Cómo usar Testcontainers en JUnit5 para levantar contenedores reales de Postgres, Redis y Kafka para tests de integración confiables y reproducibles.

Stubear Servicios HTTP Externos con WireMock

Cómo usar WireMock en tests de Java para stubear servicios HTTP externos, incluyendo templating de respuestas, simulación de delays y comportamiento stateful.

Patrón Multi-Tenant Data Isolation

Aisla datos de tenants en infraestructura compartida usando row-level security, schema-per-tenant o database-per-tenant. Un patrón para aplicaciones SaaS.

Patrón Pipes and Filters

Encadena pasos de procesamiento con filtros independientes conectados por pipes. Un patrón para pipelines de transformación de datos donde cada paso es reutilizable y componible.

Patrón Federated Identity

Delega la autenticación a proveedores de identidad externos. Un patrón para integrar OAuth2, OIDC, SAML y SSO entre múltiples servicios y organizaciones.

Patrón Voucher

Valida claims y delega acceso usando vouchers firmados sin exponer datos sensibles. Un patrón de seguridad para autorización basada en tokens entre servicios.

Patrón Abstract Factory

Crea familias de objetos relacionados sin especificar sus clases concretas. Patrón de diseño creacional para familias de objetos consistentes.

Patrón Adapter

Convierte la interfaz de una clase en otra interfaz que los clientes esperan. Patrón de diseño estructural para compatibilidad de interfaces.

Patrón Bridge

Desacopla una abstracción de su implementación para que ambas puedan variar independientemente. Un patrón estructural para independencia de plataforma.

Patrón Builder

Construye objetos complejos paso a paso. Patrón de diseño creacional para construcción de objetos legible y configurable.

Patrón Cache-Aside

Carga datos en el caché bajo demanda desde el almacenamiento principal. Un patrón de caché que da a la aplicación control total sobre qué y cuándo cachear.

Patrón Chain of Responsibility

Pasa solicitudes a lo largo de una cadena de manejadores hasta que uno la procese. Un patrón de comportamiento para desacoplar emisores y receptores.

Patrón Circuit Breaker

Previene fallos en cascada deteniendo solicitudes a servicios que están fallando. Un patrón arquitectural para sistemas distribuidos resilientes.

Patrón Command

Encapsula una petición como un objeto, permitiendo parametrizar clientes con colas, logs y operaciones deshacibles. Patrón de diseño conductual.

Patrón Composite

Compone objetos en estructuras de árbol para representar jerarquías parte-todo. Un patrón estructural para tratar objetos individuales y composiciones uniformemente.

Patrón CQRS

Separa las operaciones de lectura y escritura en modelos diferentes, optimizando cada uno para su carga de trabajo específica. Un patrón de datos para sistemas escalables.

Patrón Decorator

Añade nueva funcionalidad a objetos dinámicamente envolviéndolos. Patrón de diseño estructural para extensión flexible de comportamiento.

Patrón Dependency Injection

Suministra dependencias desde fuera en lugar de crearlas internamente. Un patrón arquitectural para código desacoplado y testeable.

Patrón Event Sourcing

Almacena el estado de una aplicación como una secuencia de eventos en lugar de almacenar solo el estado actual. Un patrón arquitectónico para sistemas auditables.

Factory Pattern

Crea objetos sin especificar la clase exacta a instanciar. Un patrón de diseño creacional para la creación flexible de objetos.

Patrón Flyweight

Comparte objetos para soportar eficientemente grandes cantidades de objetos de grano fino. Un patrón estructural para optimización de memoria.

Patrón Interpreter

Define una representación para la gramática de un lenguaje junto con un intérprete que usa la representación para interpretar oraciones. Un patrón de diseño de comportamiento para mini-lenguajes.

Patrón Iterator

Proporciona una forma de acceder a los elementos de una colección secuencialmente sin exponer su representación subyacente. Un patrón de comportamiento para recorrido.

Patrón Marker Interface

Usa interfaces vacías como tags de metadata para señalar propiedades o capacidades en tiempo de compilación y runtime, habilitando verificaciones type-safe sin modificar comportamiento de clase.

Patrón Mediator

Define un objeto que encapsula cómo interactúa un conjunto de objetos. Un patrón de comportamiento para reducir dependencias caóticas.

Patrón Memento

Captura y restaura el estado interno de un objeto sin violar el encapsulamiento. Un patrón de comportamiento para deshacer/rehacer.

Patrón MVC

Separa la aplicación en componentes Modelo, Vista y Controlador. Patrón de diseño arquitectural para código organizado y mantenible.

Patrón Observer

Define un mecanismo de suscripción para notificar a múltiples objetos sobre eventos. Patrón de diseño conductual para comunicación basada en eventos.

Patrón Prototype

Crea nuevos objetos copiando los existentes. Un patrón de diseño creacional para clonación y duplicación de objetos.

Patrón Proxy

Proporciona un sustituto o marcador de posición para otro objeto para controlar el acceso a él. Un patrón estructural para control de acceso, carga perezosa y logging.

Patron Read-Through Cache

Una capa de cache transparente que intercepta peticiones de lectura, obtiene del origen de datos en caso de miss y puebla el cache automaticamente.

Patron Refresh-Ahead Cache

Refresca proactivamente entradas de cache antes de que expiren para eliminar cache misses en hot keys y mantener latencia de lectura consistente.

Patrón Repository

Abstrae la lógica de acceso a datos detrás de una interfaz limpia. Patrón de diseño arquitectural para capas de datos testeables y mantenibles.

Patrón Retry

Reintenta una operación que ha fallado con errores transitorios, usando estrategias configurables como delay fijo, backoff exponencial o integración con circuit breaker.

Patrón Saga

Gestiona transacciones distribuidas a través de múltiples servicios encadenando transacciones locales con acciones compensatorias para rollbacks. Un patrón de microservicios.

Patrón Singleton

Garantiza que una clase tenga una única instancia y proporciona un acceso global a ella. Patrón de diseño creacional para controlar la creación de objetos.

Patrón State

Permite que un objeto altere su comportamiento cuando cambia su estado interno. Un patrón de comportamiento para máquinas de estados finitos.

Patrón Strategy

Define una familia de algoritmos, encapsula cada uno y los hace intercambiables. Patrón de diseño conductual para selección flexible de comportamiento.

Patrón Template Method

Define el esqueleto de un algoritmo en una clase base, permitiendo que las subclases sobreescriban pasos específicos sin cambiar la estructura del algoritmo. Un patrón de diseño de comportamiento.

Patrón Timeout

Previene que las operaciones se cuelguen indefinidamente imponiendo un tiempo máximo de ejecución. Un patrón de resiliencia para tiempos de respuesta predecibles.

Patron Two-Level Cache

Combina un cache L1 en memoria con un cache L2 distribuido para reducir latencia de hot keys manteniendo consistencia entre instancias.

Patrón Visitor

Representa una operación a realizar sobre los elementos de una estructura de objetos sin cambiar las clases de los elementos. Un patrón de diseño de comportamiento.

Patron Write-Behind Cache

Escribe en cache sincronamente y persiste a la base de datos asincronamente para workloads de escritura de alto throughput con consistencia eventual.

Patron Write-Through Cache

Escribe sincronamente en cache y backing store para que el cache siempre tenga los datos mas recientes sin invalidacion basada en TTL.

Plantilla de Sizing de Thread Pools

Plantilla para documentar thread pool configuration per service: pool type selection, sizing formulas, CPU vs I/O bound tuning, queue strategies, rejection policies, monitoring metrics y tuning examples para Java, Python, Go y Node.js.

Referencia Detallada de Concurrencia en Java

Concurrencia en Java en produccion. Cubre threads, locks, CompletableFuture, virtual threads, executors, concurrent collections, memory model y patrones para aplicaciones paralelas de alto throughput.

JUnit 5: Extensions, Tests Parametrizados, Dynamic Tests

Dominá JUnit 5 para testing moderno en Java: modelo de extensions, tests parametrizados, dynamic tests, test interfaces, lifecycle, conditional execution y JUnit Platform.

Testcontainers: Dependencias Reales en Integration Tests

Dominá Testcontainers para integration testing con databases reales, message brokers y APIs. Cubre Java, Python y Node.js con test fixtures basados en Docker.