Contenido del curso
Concurrencia
- 2

Condiciones de Carrera en Programación Concurrente con Go
04:51 min - 3

Evitar Condiciones de Carrera en Go con Mutex y WaitGroup
11:26 min - 4

Lectura y Escritura Concurrente en Go con RWMutex
06:15 min - 5

Creación de un Sistema de Caché Concurrente en Go
14:29 min - 6

Manejo de Condiciones de Carrera en Go: Implementación de Mutex
08:52 min - 7

Cache concurrente en Go para cálculos intensivos de Fibonacci
16:31 min
Patrones de diseño
- 8

Patrones de Diseño en Programación Orientada a Objetos con Go
04:53 min - 9

Patrón de Diseño Factory en Go: Creación y Uso Práctico
15:17 min - 10

Implementación de Singleton en Go para Conexiones de Base de Datos
08:48 min - 11

Patrón de Diseño Adapter en Go: Implementación Práctica
09:50 min - 12

Patrón de Diseño Observer en Go: Implementación Práctica
11:59 min - 13

Implementación del Patrón de Diseño Strategy en Go
08:53 min
Net
- 14

Escaneo de Puertos TCP con Go: Introducción Básica
07:45 min - 15

Concurrencia en Go: Escáner de Puertos Eficiente y Personalizable
09:16 min - 16

Implementación de NetCAD como Cliente TCP en Go
10:14 min - 17

Construcción de Back End para Servidor de Chat en Go
16:08 min - 18

Implementación de un Servidor de Chat en Go con TCP
13:54 min
Conclusión
Concurrencia y Patrones de Diseño en Go
Resumen
Dominar Go a nivel avanzado implica enfrentar problemas reales como la concurrencia con valores compartidos, la reutilización de computación costosa y la aplicación de patrones de diseño que elevan la calidad del código. Estos temas, junto con proyectos prácticos como un escaneador de puertos y un chat en tiempo real, conforman el núcleo de un aprendizaje sólido para cualquier ingeniero de software que quiera destacar.
¿Cómo manejar la concurrencia y evitar la condición de carrera en Go?
Uno de los mayores retos al trabajar con Go es la concurrencia de valores compartidos [0:08]. Cuando múltiples goroutines acceden y modifican datos al mismo tiempo sin coordinación, aparece la temida condición de carrera (race condition), que puede convertirse en una gran pesadilla para cualquier proyecto.
Go ofrece técnicas específicas para mitigar este problema, como el uso de mutexes y canales, que permiten sincronizar el acceso a recursos compartidos de forma segura y eficiente.
¿Qué es un sistema de caché y por qué es importante?
Algunas operaciones son extremadamente costosas en términos de computación y consumen grandes cantidades de recursos [0:30]. Para evitar repetir esos cálculos una y otra vez, se construye un sistema de caché que almacena resultados previos y los reutiliza cuando se necesitan de nuevo.
- Reduce el consumo de CPU y memoria.
- Acelera la respuesta del sistema.
- Evita procesamiento redundante.
¿Por qué los patrones de diseño te convierten en mejor ingeniero de software?
Los patrones de diseño son soluciones probadas a problemas recurrentes en el desarrollo de software [0:47]. Conocerlos y saber identificarlos marca una diferencia importante en la calidad del código que produces.
Existen tres categorías principales:
- Creacionales: se enfocan en cómo se crean los objetos.
- Estructurales: definen cómo se componen las estructuras.
- De comportamiento: gestionan la comunicación entre objetos.
Implementar al menos cinco de estos patrones permite reconocer cuándo y dónde aplicarlos en proyectos reales, lo que lleva la ingeniería de software a un nivel superior.
¿Qué proyectos prácticos refuerzan el aprendizaje en Go?
El conocimiento teórico cobra sentido cuando se aplica. Dos proyectos destacan por su valor práctico:
- Escaneador de puertos concurrente: utiliza el paquete
netde Go para verificar puertos abiertos de manera simultánea, aprovechando al máximo las goroutines [1:08]. - Chat en tiempo real: un proyecto final que integra concurrencia, manejo de conexiones de red y todo lo que Go provee como lenguaje [1:15].
¿Cuál es el siguiente paso después de completar Go avanzado?
Con estos conocimientos dominados, el paso natural es validar lo aprendido. Aprobar la evaluación y obtener el diploma certifica que se cuenta con un nivel avanzado en Go [1:28]. Compartir ese logro refuerza el perfil profesional y abre puertas en el mundo del desarrollo de software.
¿Cuál de estos temas te resultó más desafiante? Comparte tu experiencia en los comentarios.