|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/practical-asynchronous-java/
课程评论:没有评论
课程名称: 实用异步Java编程 课程概述: 本课程是学习在Java中构建异步代码所需的最佳在线资源。通过学习Completable Futures API,构建非阻塞的REST API工作流,从数据库异步获取数据,以及学习如何监控线程池以确保在应用程序中的合理使用,您将深入理解异步编程的主要概念。这些概念不仅适用于Java,也可以在许多其他编程语言中复用。Java作为一种被众多大型企业和超过900万开发者广泛使用的语言,掌握这些技能将对您的职业发展大有裨益。 讲师介绍: 课程讲师拥有10年的编程经验,曾在高中时接触编程并对使用C#和Windows Forms开发有着浓厚的兴趣。讲师在计算机科学的学习中建立了扎实的基础,获得了并行和分布式系统的硕士学位,并在此过程中开发了一个针对Spark作业优化的Kubernetes Gang调度程序。现任高级软件工程师,专注于大型JVM开发,构建了被全球数百万人使用的代码。 课程目标: 本课程旨在帮助软件工程师掌握异步代码的经验,尤其是希望步入高级职位的工程师。讲师通过自身的职业经历,分享了他在理解和使用异步编程中所遇到的挑战与解决方案,帮助学员节省时间,避免常见的错误。 课程内容: 课程分为五个章节,每个章节从不同角度深入探讨如何在应用程序中应用异步代码: 第一章 - 异步编程的基本概念 本章将介绍异步编程的基础知识,澄清异步和并行之间的常见混淆,并讨论与传统编程的权衡。 第二章 - 使用Completable Future进行异步编程 本章将进行实践,学习Completable Future API的使用,包括异常处理和多个Future结合的方式,并通过构建一个异步交易机器人来应用所学知识。 第三章 - 使用Spring-Boot构建异步REST API 本章将探索Spring-Boot框架,强调如何使用@Async注解构建异步代码,并配置底层线程池,最终构建一个完全异步的REST API项目。 第四章 - 异步获取数据库数据 本章重点关注数据访问,学习如何使用非阻塞的MySQL和Redis数据库客户端,以确保数据访问工作流的异步性。学员将有机会探索MongoDB的异步数据访问过程。 第五章 - 监控异步应用程序中的线程池 最后一章将教您如何使用Prometheus和Grafana监控线程池,理解监控的重要性,并通过Docker构建和配置监控栈,同时在Spring-Boot应用中暴露Prometheus格式的指标。 课程要求: - 基础Java知识,包括面向对象编程 - 基本的Java多线程概念(可加分) - 选择一个IDE,推荐使用IntelliJ Idea社区版,但任何支持运行Java代码的IDE均可 - 学习意愿和开放的心态 感谢您阅读此描述,期待在第一节课中见到您!
IntroThis course is the best online resource you need to become proficient in building asynchronous code in Java, by learning to work with Completable Futures API, by building non-blocking workflows in REST APIs with Spring-Boot, by fetching data from databases asynchronously, and also by learning to monitor Thread-Pools to see if they're used properly in your applications.The goal of this course is to make you deeply understand the main asynchronous concepts (that can be re-used in many other languages), applied and exemplified in Java, the language used by many large companies and more than 9 million developers around the world.About myselfI wrote my first line of code 10 years ago when I was in highschool. I quickly got addicted by how easy you could build useful programs using C# and Windows Forms.I followed the Computer Science University track where I managed to set the ground knowledge for anything related to Software Engineering (Algorithms, Data Structures, Operating Systems, Multithreading, Distributed Computing, Networking, and many other topics), and I finalized this amazing 6-year learning path by getting a Master's Degree in Parallel and Distributed Systems where I built from the ground a custom Kubernetes Gang Scheduler optimised for running Spark Jobs.Currently, I'm a Senior Software Engineer focused on large-scale JVM-based development. I build code used by millions of people around the world.Why I built this course?Having experience with asynchronous code is a must for any Software Engineer who wants to step into a Senior role. I saw many people struggling to understand things like:Why is my application stuck? How can I debug it?How can I run this method on a different thread?How do I know if my async application is using the resources efficiently?It was really hard for me too to understand some of those things, even if I had enough university background in this area. But fortunately, after many years of working with threads, callbacks, thread-pools, many trial and errors, many profiling sessions and books & articles read, I managed to deeply understand those critical concepts and use them properly in my daily job.For those reasons, I thought that building a course where I expose my understanding on asynchronous workflows, would definitely help other people to save time and avoid going into the same pitfalls that I went through.What is the content course?This course is split into 5 chapters and each one will learn you a new angle of applying asynchronous code in your applications:Chapter 1 - General Concepts around Asynchronous ProgrammingIn this chapter we're going to learn the basics of asynchronous programming - what we refer to by "async" (with some really cool examples), we're going to clarify a common confusion - which is the main difference between parallel and asynchronous, and also we're going to learn about the tradeoffs of async programs compared to the traditional programming, because there are also some aspects we need to be aware of.Chapter 2 - Asynchronous Programming in Java with Completable FutureThis is the first chapter in where we're going to go hands-on by learning about the Completable Future API - how it differs from a classical Future, how can we deal with exceptions, and also how we combine multiple futures together to execute more complex scenarios. Finally, we're going to build an asynchronous trading bot, where we apply all the things we learned, in a very interesting project.Chapter 3 - Building an Asynchronous REST API with Spring-BootIn this chapter, we're going to shift gears and explore the Spring-Boot framework, with an emphasis on building Asynchronous code (with @Async annotation), and we're going to also configure the asynchronous mechanism by changing the underlying thread-pool where @Async annotated methods execute.In the end, we're going to build a very interesting project, which is a fully async REST API that downloads images from an external system, based on a keyword provided by the user.Chapter 4 - Fetching data from a database asynchronouslyData access is a very important aspect, mostly in asynchronous applications, where flows need to be async end-to-end. It doesn't make sense to handle a request asynchronously, but fetch data in a blocking fashion.For that reason, in this chapter we're going to explore non-blocking database clients for MySQL and Redis, that should be used in any async application, to properly build a data-access workflow.In the end, I left an exercise for you to explore the async data-access process for Mongo DB, which will be really interesting to follow.Chapter 5 - Monitoring ThreadPools in Asynchronous applicationsIn this last chapter I'm going to show you how to properly monitor a ThreadPool using Prometheus and Grafana (a well known Open Source monitoring stack).We do that by first understanding why monitoring thread-pools is important, by building and configuring the monitoring stack with Docker, and finally by instrumenting our Spring-Boot application to expose metrics in a Prometheus format.What are the requirements for this course?Basic Java Knowledge (including Object Orientated Programming)Basic Java Multithreading concepts are a plus, they'll help you to grasp the concepts of this course fasterAn IDE of your choice, ideally IntelliJ Idea Community Edition, but you can use any IDE where you can run plain Java codeWillingness to learn and an open-mindThank you for taking the time to look through this description and I'm looking forward to see you in the first lecture!