Presentación del curso
  • Presentación del curso
  • Nuevo repositorio de código en Github
  • ¿Qué necesitas para hacer este curso?
  • La manera correcta de aprender
Profundizando en conceptos básicos de Java
  • Arreglos a profundidad
  • Arreglos multidimensionales
  • Ejercicio arreglos multidimensionales parte 1
  • Ejercicio arreglos multidimensionales parte 2
  • Argumentos de longitud variable
  • Paso de argumentos a una aplicación Java
  • Repaso sobre arreglos
  • Ejercicios con arreglos
Excepciones a profundidad
  • Generalidades acerca de las excepciones
  • Rastreo de la pila de excepciones
  • La instrucción try y la cláusula throws
  • Lanzamiento y relanzamiento de excepciones
  • Limpieza de la pila y obtención de información de las excepciones
  • Ejemplos de depuración de excepciones
Manejo avanzado de cadenas de caracteres
  • Construcción dinámica de Strings con StringBuilder
  • Constructores de StringBuilder
  • operaciones de caracteres mediante StringBuilder
  • Adición dinámica de caracteres con StringBuilder
  • Inserción y eliminación dinámica de caracteres con StringBuilder
  • Análisis de chars con Character
  • División de Strings en tokens
Expresiones regulares en Java
  • Introducción a las expresiones regulares
  • Caracteres especiales y conjuntos.
  • Cuantificadores.
  • Validación de entradas con expresiones regulares
  • Reemplazar y dividir Strings
  • Las clases Pattern y Matcher
Colecciones de genéricos
  • Introducción a las colecciones de genéricos
  • Listas de genéricos. Parte1
  • Listas de genéricos. Parte2
  • Odenamiento personalizado Comparator
  • Ordenamiento aleatorio shuffle
  • Métodos reverse, min, max, fill y copy
  • Métodos addAll, frequency y disjoint
  • Manejo de pilas mediante Stack
  • Manejo de colas mediante PriorityQueue
  • Manejo de conjuntos HashSet
  • Manejo de conjuntos ordenados TreeSet
  • Interfaz Map
  • Uso de mapas
  • La clase properties
  • Colecciones sincronizadas y no modificables
Programación funcional
  • Introducción a la programación funcional
  • Interfaces funcionales
  • Expresiones lambda
  • Streams
  • Manejo de Streams de enteros IntStream
  • Operaciones de reducción de IntStream
  • Operaciones intermedias IntStream
  • Manejo de Objetos Stream
  • Manejo de Objetos Stream
  • La interfaz Predicate
  • Introducción a los métodos referenciados
  • Métodos referenciados estáticos
  • Métodos referenciados a objetos de un tipo particular
  • Manejo de objetos Stream parte 1
  • Manejo de objetos Stream parte 2
  • Manejo de objetos Stream parte 3
  • Manejo de objetos Stream parte 4
  • Manejo de objetos Stream parte 5
  • Creación de un Stream desde un archivo
  • Lambda event handler
  • Conclusión sobre programación funcional
Clases y métodos genéricos
  • Porqué utilizar métodos genéricos
  • Implementacion de métodos genéricos
  • El compilador y los métodos genéricos
  • Upper bound en métodos genéricos
  • Clases genéricas
  • Los wildcards en genéricos
Programación concurrente.
  • Introducción a la concurrencia
  • Estado y ciclo de vida de los threads
  • El estado runnable en los sistemas operativos
  • Prioridades y programación de threads
  • Implementación de la interfaz Runnable
  • Ejecución de tareas concurrentemente
  • Sincronización de threads
  • Modelo Productor/Consumidor
  • Métodos wait, notify y notifyAll
  • La clase ArrayBlockingQueue
  • Coleccion concurrentes
  • Ordenamiento paralelo y ordenamiento convencional
  • Streams secuenciales y streams paralelos
Fundamentos de bases de datos y JDBC
  • Introducción a las bases de datos
  • Instalación de postgres
  • Creación de una base de datos
  • Creación de tablas en una base de datos