강의

멘토링

커뮤니티

Programming

/

Back-end

Lớp học thành thạo Kotlin Coroutine thực chiến gần với chuẩn mực và trung thành với cơ bản

Khóa học này là một lớp master class, nơi bạn sẽ học một cách bài bản về 🌺 Coroutine của Kotlin, từ nền tảng lý thuyết đến ứng dụng thực tế. Khóa học sẽ đi sâu vào các tính năng chính thường dùng trong thực tế một cách tuần tự, bao gồm nguyên lý và cấu trúc cốt lõi của Coroutine, sự cần thiết của lập trình bất đồng bộ, Coroutine builders và scope, xử lý ngoại lệ, Channel, Flow, v.v. Mỗi khái niệm được giải thích kèm theo ví dụ thực hành, giúp cả người mới bắt đầu cũng có thể dễ dàng hiểu và áp dụng ngay vào thực tế. Đây là khóa học nhập môn và thực hành tốt nhất dành cho các lập trình viên muốn xây dựng kỹ năng Coroutine vững vàng trong thực tế.

(4.9) 11 đánh giá

91 học viên

Độ khó Nhập môn

Thời gian Không giới hạn

  • Hong
Android
Android
Kotlin
Kotlin
concurrent
concurrent
backend
backend
coroutine
coroutine
Android
Android
Kotlin
Kotlin
concurrent
concurrent
backend
backend
coroutine
coroutine

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

4.9

5.0

유쾌한 캥거루

62% đã tham gia

Đối với người mới bắt đầu thì nội dung có vẻ không dễ lắm. Tôi nghĩ về cơ bản thì nên xem khi đã có một mức độ hiểu biết nhất định. Tuy nhiên, như một khóa học giúp tiếp cận nhiều khía cạnh khác nhau thì có vẻ tốt.

5.0

부스타

62% đã tham gia

Tôi nghĩ đây là một khóa học tốt để học về xử lý bất đồng bộ, bắt đầu từ các ví dụ đơn giản và thực hành triển khai chức năng thực tế. Tuy nhiên, việc học khóa học này không có nghĩa là bạn sẽ biết hết mọi thứ, và tôi cảm thấy đương nhiên vẫn cần một mức độ tự học nhất định. Dù vậy, đây vẫn là một khóa học mà bạn có thể học được nhiều điều, và nếu phân tích kỹ các ví dụ thực hành, bạn sẽ học hỏi và hiểu biết sâu sắc hơn.

5.0

미래 1인 개발자

32% đã tham gia

Tôi là lập trình viên đang phát triển tại 토스, người đã cùng tham gia khóa học và giúp đỡ trong việc quay phim. Khi chuẩn bị khóa học này, tôi đã trăn trở khá nhiều điều. Vì dù sao chủ đề luồng nhẹ cũng là một chủ đề không dễ dàng, và tôi cũng đã suy nghĩ về cách nên trình bày nó. Tuy nhiên, theo ý kiến của người quay khóa học, tôi đã cố gắng cung cấp càng nhiều ví dụ đa dạng nhất có thể, và tiến hành với mục tiêu trở thành một khóa học thân thiện hơn là một khóa học có cấu trúc chặt chẽ. Tôi nghĩ đó là một cách làm vừa có nhược điểm vừa có ưu điểm. Khóa học này không thể giúp các bạn trở thành người sử dụng coroutine một cách hoàn hảo. Vì dù sao nó cũng chỉ là một khóa học. Dựa trên khóa học này, nếu các bạn thử áp dụng vào thực tế một cách đa dạng, tôi nghĩ các bạn có thể trở thành người sử dụng coroutine một cách hoàn hảo. Nếu khóa học này không làm hài lòng các bạn, tôi sẽ rất biết ơn nếu các bạn cho phản hồi, vì tôi có ý chí muốn học hỏi và cải thiện rất nhiều ở những điểm còn thiếu sót.

Bạn sẽ nhận được điều này sau khi học.

  • Những cú pháp cơ bản nhất của Kotlin

  • Ưu nhược điểm của multi-thread và cách dùng coroutine

  • Đồng thời có cấu trúc trong Coroutine và Mẫu thực tiễn

  • Từ xử lý ngoại lệ cơ bản đến các phương pháp xử lý ngoại lệ nâng cao trong coroutines

  • Quản lý tài nguyên dùng chung trong lập trình song song

  • Phương pháp stream dữ liệu sự kiện sử dụng Flow

  • Channel 활용하여 경량 쓰레드 간 공유 자원 관리

Coroutines được giới thiệu bởi các nhà phát triển của các công ty lớn dựa trên các tác phẩm kinh điển

Không còn cần đến những bài giảng chỉ dạy bạn cách hoạt động của coroutine nữa. Trong bài giảng này, bạn sẽ được trải nghiệm nhiều trường hợp mà các nhà phát triển thực tế tại các công ty lớn đã gặp phải và áp dụng trong thực tế, cũng như mã thực tế có thể áp dụng ngay vào thực tế.


Bài giảng này trình bày các khái niệm cơ bản về coroutine, cũng như các công cụ thực sự được sử dụng nhiều, chẳng hạn như Flow, Channel, Dispatcher và Scope, kèm theo các ví dụ. Bạn có thể học một cách tự nhiên thông qua các ví dụ triển khai thực tế các hàm, từ các lệnh gọi API đơn giản đến logic bất đồng bộ phức tạp, mối quan hệ cha-con, quản lý công việc và thậm chí là xử lý ngoại lệ.


Trong khi nhiều tài liệu vẫn còn mang tính lý thuyết, bài giảng này hướng đến mục đích cung cấp thông tin chính xác cho bạn về "lý do tại sao nên viết theo cách này" , "vấn đề phát sinh ở đâu""cách giải quyết chúng" trong môi trường phát triển thực tế.

Chúng tôi sẽ không chỉ kết thúc bằng lý thuyết mà còn dạy bạn các công nghệ có thể áp dụng vào các dịch vụ thực tế, các mô hình và bí quyết thực sự được các học viên sử dụng, cũng như các phương pháp viết giúp tránh lỗi.

Tại sao tôi nên học coroutine?

Việc học coroutine chỉ vì chúng là “xử lý không đồng bộ” hoặc vì chúng là “xu hướng” là vô nghĩa.

Lý do thực tế tại sao bạn cần biết về coroutine là "hiệu quả thực tế" và "khả năng cạnh tranh".


Khi làm việc, có nhiều tác vụ mất nhiều thời gian, chẳng hạn như lệnh gọi API, giao dịch DB và kết nối hệ thống bên ngoài.

Nếu chúng ta cố gắng xử lý tất cả những điều này bằng luồng, tài nguyên sẽ bị hạn chế và nếu chúng ta cấu hình chúng bằng lệnh gọi lại, sẽ rất khó để quản lý.

Coroutine được sử dụng theo nhiều cách khác nhau, không chỉ giới hạn ở Android và backend. RxJava, callback hell, các vấn đề đồng bộ hóa phức tạp... Những ai đã từng trải nghiệm sẽ cảm thấy tận mắt, "Đây chính là lý do tại sao cần có coroutine."

📚 Logic bất đồng bộ phức tạp có thể được thực hiện đơn giản như mã đồng bộ

Trước đây, để xử lý nhiều tác vụ không đồng bộ, bạn phải sử dụng nhiều kỹ thuật khác nhau như lệnh gọi lại, luồng và Future. Tuy nhiên, cách tiếp cận này làm phức tạp mã và bằng cách cho phép kết hợp các hoạt động đồng bộ và bất đồng bộ chỉ với một từ khóa 'suspend' , khả năng đọc và bảo trì được cải thiện đáng kể.

📚 Tối đa hóa hiệu quả tài nguyên máy chủ

Nếu bạn tạo nhiều luồng để xử lý đồng thời, tài nguyên máy chủ có thể nhanh chóng cạn kiệt và hiệu suất có thể giảm sút. Coroutine có thể xử lý hàng nghìn hoặc hàng chục nghìn tác vụ với số lượng luồng nhỏ, cho phép sử dụng hiệu quả tài nguyên máy chủ. Ví dụ, khi xử lý số lượng lớn yêu cầu mạng hoặc dữ liệu đầu vào/đầu ra đồng thời, nó có thể xử lý nhiều yêu cầu hơn so với dựa trên luồng.

📚 Quản lý an toàn với tính đồng thời có cấu trúc

Coroutine quản lý vòng đời của các tác vụ theo mối quan hệ cha-con. Khi coroutine cha kết thúc, coroutine con sẽ tự động được dọn dẹp, ngăn ngừa rò rỉ tài nguyên hoặc hành vi không mong muốn. Tính đồng thời có cấu trúc này cho phép hành vi có thể dự đoán được và máy chủ hoạt động ổn định ngay cả trong các dịch vụ quy mô lớn.

📚 Xử lý lỗi trực quan và hủy bỏ

Khi xảy ra ngoại lệ trong mã không đồng bộ, thường khó biết được lỗi đó ở đâu và cách xử lý. Coroutine cung cấp hỗ trợ nhất quán cho việc truyền bá ngoại lệ, xử lý lỗi và hủy tác vụ (mã thông báo hủy, v.v.). Nó cho phép bạn xử lý các tình huống lỗi thường gặp trong thực tế một cách đơn giản và an toàn hơn nhiều.

📚 Luồng dữ liệu thời gian thực và xử lý sự kiện

Bằng cách sử dụng Flow và Channel của coroutine, Xử lý các sự kiện phức tạp như luồng dữ liệu thời gian thực, trò chuyện, dữ liệu cảm biến và thông báo thời gian thực Có thể triển khai bằng mã ngắn gọn và dễ đọc. Thay vì đính kèm lệnh gọi lại mỗi khi sự kiện xảy ra, Flow cho phép bạn làm việc với dữ liệu theo cách khai báo và phản ứng.

Sau khi học bài giảng, bạn có thể tạo ra kết quả như thế này.

Mã xử lý không đồng bộ có thể áp dụng trực tiếp vào thực hành

Nó cho phép bạn viết các luồng bất đồng bộ hẹp một cách ngắn gọn như mã đồng bộ.

Tạo mã dựa trên coroutine đáng tin cậy và hiệu quả có thể được sử dụng ngay trong các dịch vụ thực tế, mà không cần lệnh gọi lại hay quản lý luồng phức tạp!

Thiết kế Kiến trúc Đồng thời Có cấu trúc

Bạn có thể kết hợp mô hình đồng thời có cấu trúc vào dự án của mình, mô hình này quản lý an toàn nhiều tác vụ không đồng bộ trong mối quan hệ cha-con, thay vì chỉ một tác vụ duy nhất.

Thông qua đó, bạn sẽ học cách xử lý khối lượng lớn lưu lượng truy cập hoặc luồng dữ liệu phức tạp một cách đáng tin cậy.

Hệ thống xử lý sự kiện và luồng dữ liệu thời gian thực

Tận dụng các công cụ độc đáo của Coroutine, chẳng hạn như Flow và Channel, để triển khai các tính năng thiết yếu có trong nhiều hệ thống dựa trên sự kiện khác nhau, chẳng hạn như trò chuyện, đường ống dữ liệu và trình phân tích nhật ký!

Xử lý ngoại lệ và hủy bỏ ổn định

Hãy cùng tìm hiểu cách xử lý an toàn các lỗi phổ biến, lan truyền ngoại lệ và các vấn đề hủy tác vụ mà chúng ta thường gặp trong thực tế bằng cách viết mã thực tế sử dụng coroutine!

Mã dễ bảo trì, dễ đọc

Chúng tôi cung cấp một phong cách mã rõ ràng và nhất quán giúp bạn dễ dàng hiểu được ngay cả logic đồng thời/bất đồng bộ phức tạp chỉ bằng cái nhìn thoáng qua. Với điều này, bạn có thể phát triển các kỹ năng cần thiết cho công việc thực tế, chẳng hạn như cộng tác với các thành viên trong nhóm, xem xét mã và mở rộng tính năng!

Học bằng cách sử dụng khoảng 30 mã ví dụ thực tế

Khóa học này không phải là bài giảng chỉ bao gồm lý thuyết hay từ ngữ mà được biên soạn theo dạng khóa học mà bạn sẽ học bằng cách thực hiện các chức năng đơn giản hoặc nâng cao.

Bốn giá trị mà người chia sẻ kiến ​​thức coi trọng

1. Bài giảng phải mang tính nhân văn.

Tôi không nghĩ một bài giảng dễ trình bày là một bài giảng, ngay cả khi nó có thể bị coi là thiếu chuyên nghiệp. Thời gian gỡ lỗi cũng là một phần của bài giảng.

2. Phải chuyên dụng cho công việc thực tế.

Phát triển không phải là điều bạn có thể nói suông. Bạn có thể cùng nhau trải qua quá trình triển khai và vận hành thực tế.

  • Các nhà quy hoạch ơi... hãy cứu tôi...


3. Nó phải có ích cho học sinh.

Tôi muốn kết hợp những khái niệm mà tôi đã áp dụng và thấy hiệu quả vào thực tế của mình. Thông qua quá trình này, bạn có thể gián tiếp trải nghiệm công việc thực tế hoặc nếu bạn là người thực hành, bạn có thể chứng minh hiệu suất tốt hơn trong môi trường làm việc thực tế.

4. Bài giảng chưa kết thúc.

Tôi hy vọng các bạn sẽ để lại nhiều câu hỏi và câu trả lời trong suốt bài giảng. Bài giảng này không được tạo ra dựa trên kiến ​​thức của riêng tôi. Ý kiến ​​từ các nhà phát triển tại nhiều công ty lớn cũng đã được thu thập.

  • Sau đây là một số tiểu sử tóm tắt của những người đã giúp hoàn thành bài giảng này:

private val supported_one = "Nhà phát triển nền tảng thanh toán Kakao" private val supported_two = "Nhà phát triển máy chủ API Toss Securities" private val supported_three = "Nhà phát triển khởi nghiệp kỳ lân yêu cầu giữ bí mật"

Cấu trúc bài giảng

📚 Phần 1

Cùng với phần giới thiệu bài giảng, tôi muốn so sánh và giải thích sự khác biệt giữa các luồng nhẹ mà bạn có thể dễ dàng sử dụng, chẳng hạn như coroutine, và các luồng được hệ điều hành quản lý và phân bổ tài nguyên.

in ( "⚠️ Những điểm quan trọng mà các nhà phát triển nền tảng Kakao Pay nghĩ đến!! ⚠️" ) Bạn có thể phát triển mà không cần biết sự khác biệt giữa luồng và luồng nhẹ. Tuy nhiên, nếu bạn đang chuẩn bị thay đổi nghề nghiệp hoặc tìm kiếm việc làm, đây là chủ đề tuyệt vời để chuẩn bị cho buổi phỏng vấn! Đây là nội dung đơn giản, nhưng bạn có thể học nội dung đơn giản đó ngay trong thời gian này!

📚 Phần 2

Bạn sẽ thấy một cách rất cơ bản để khai báo một coroutine và xem mã hoạt động. Chúng tôi cung cấp phần này như một phần khởi động cho bạn với một số nội dung rất cơ bản.

📚 Mục 3

Bạn sẽ học cách quản lý vòng đời của một coroutine. Hãy cùng quản lý các sự kiện liên quan đến việc hủy coroutine bằng cách tìm hiểu về nhiều ví dụ thực tế về việc hủy coroutine và Gracefully Shut Down!

📚 Mục 4

Khi sử dụng lập trình đồng thời, bạn triển khai các dạng mã rõ ràng để trả về và sử dụng các giá trị. Ngoài ra, chúng tôi đã chuẩn bị thời gian để bạn hiểu và tìm hiểu cấu trúc coroutine cơ bản được gọi là mối quan hệ cha-con!

📚 Mục 5

Đã đến lúc hiểu về mặt lý thuyết về Dispatcher và Context được sử dụng bên trong coroutine và tìm hiểu bằng cách áp dụng nhiều Dispatcher khác nhau. Không bắt buộc!! Tôi đã chuẩn bị thời gian này mà bạn nhất định phải biết để tối ưu hóa.

📚 Mục 6

Mối quan hệ cha-con trong coroutine có luôn nhất quán không? Chúng tôi đã chuẩn bị nhiều chủ đề khác nhau, từ quản lý vòng đời thông qua các mô hình thực tế cho đến cách phá vỡ tính nhất quán của mối quan hệ cha-con trong coroutine.

📚 Mục 7

Bạn sẽ bắt đầu tìm hiểu về Flow. Trong phần này, thay vì chỉ trình bày phần lý thuyết, hãy học bằng cách thực sự tạo mã, chức năng hoặc dịch vụ có thể sử dụng trong thực tế. Trong bài giảng này, chúng tôi sẽ trình bày về luồng không đồng bộ thông qua các ví dụ thực tế lớn nhất.

in ( "⚠️ Những điểm quan trọng mà các nhà phát triển khởi nghiệp Unicorn nghĩ đến!! ⚠️" ) Tôi nghĩ đây là chủ đề cần thiết khi làm việc trên luồng dữ liệu lớn cho DB hoặc xử lý dữ liệu nhật ký chung. Mặc dù có một số phần của mã ví dụ đột nhiên trở nên khó hiểu, chúng tôi đã chuẩn bị chúng để bạn có thể xử lý chúng theo cách thú vị hơn. Nếu bạn nghiền ngẫm kỹ, hiểu và nghiên cứu nó, nó sẽ giúp ích rất nhiều!

📚 Mục 8

Chúng ta giao tiếp giữa các coroutine như thế nào? Trong lập trình đồng thời, khi bạn cần truyền dữ liệu giữa các hệ thống hoạt động song song, hoặc khi bạn cần truyền và xử lý thêm dữ liệu dựa trên sự kiện, hoặc khi bạn cần tạo tài nguyên chia sẻ dữ liệu giữa các luồng nhẹ!! Bạn sẽ tìm hiểu về các Kênh có thể xử lý những trường hợp khác nhau này.

in ( "⚠️ Những điểm quan trọng từ một nhà phát triển máy chủ, người quay phim bài giảng và phát triển nền tảng tại Pangyo ⚠️" ) Thực hành đảm bảo truyền dữ liệu an toàn nguyên tử giữa các luồng nhẹ được sử dụng rất rộng rãi. Tôi hy vọng rằng đây sẽ là cơ hội để đi sâu hơn vào coroutine bằng cách triển khai các kênh trong Kotlin theo cùng cách như trong Golang và quản lý các tài nguyên dữ liệu được chia sẻ trong lập trình song song.

📚 Mục 9

Xử lý ngoại lệ trong Kotlin quan trọng như thế nào? Đây là vật dụng cần phải có để ngăn ngừa tình trạng OOM do rò rỉ tài nguyên. Trong phần này, chúng ta sẽ đi sâu hơn một chút vào cách xử lý ngoại lệ và chuẩn bị cho bạn cách xây dựng một hệ thống mạnh mẽ hơn!

📚 Mục 10

Một phần quan trọng của lập trình đồng thời là kiểm soát các tài nguyên được chia sẻ. Nếu bạn bỏ qua phần này, rất dễ xảy ra những tình huống thực sự nguy hiểm như Tình trạng đua và Bế tắc. Trong bài học này, bạn sẽ học các kỹ thuật tiêu biểu để giải quyết những vấn đề này.

in ( "⚠️ Những điểm quan trọng mà các nhà phát triển Toss nghĩ đến ⚠️" ) Khi triển khai chức năng cho tài khoản ngân hàng và dịch vụ rút tiền, việc kiểm soát quyền truy cập vào các tài nguyên dùng chung này trở thành một chủ đề rất quan trọng. Trong bài giảng này, cá nhân tôi nghĩ rằng đây là chủ đề quan trọng nhất và ngay cả khi nó không phải là một coroutine, chủ đề này vẫn phải được giới thiệu, xem xét và sử dụng trong lập trình nói chung. Vì đây là phần cuối nên tôi nghĩ đây là một chủ đề rất quan trọng, nên tôi hy vọng các bạn sẽ tập trung và học tốt.

Lớp học nâng cao về Kotlin thông qua Thực hành dự án Time Capsule

  • Đây là bài giảng nâng cao về Kotlin hướng dẫn xây dựng các dịch vụ web bằng Ktor, mã nguồn mở lớn nhất của JetBrains. Trong bài giảng này, bạn sẽ tìm hiểu ngữ pháp cơ bản của Kotlin và các phương pháp mã hóa thực tế.

Lớp học nâng cao về Kotlin: Học thông qua thực hành dự án Bank Server

  • Bạn có thể tìm hiểu mọi thứ về phương pháp xử lý dữ liệu, các cân nhắc về DB và cách sử dụng dữ liệu dựa trên sự kiện theo loại lưu lượng, sử dụng các chiến lược duy trì đa ngôn ngữ và Kafka, v.v.

Những điều cần lưu ý trước khi tham gia lớp học

Môi trường thực hành

  • Chụp bằng MacOS M3.


  • java --version : 17.0.12 2024-07-16 LTS

  • Tôi sử dụng IDE từ nhóm JetBrains.

  • Xây dựng bằng Gradle.

  • Không bao gồm cơ sở hạ tầng.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Người muốn học kỹ khái niệm Coroutine

  • Người muốn học Coroutine qua ví dụ thực tế

  • Những người muốn thiết kế và gỡ lỗi các cấu trúc coroutine phức tạp.

  • Những người quan tâm đến tối ưu hóa hiệu suất và xử lý song song

  • Nhà phát triển Backend và Mobile (Kotlin)

  • Lập trình viên backend/mobile muốn tích hợp Kotlin với Spring

Xin chào
Đây là

5,972

Học viên

391

Đánh giá

127

Trả lời

4.7

Xếp hạng

22

Các khóa học

Giới thiệu bản thân

Tôi bắt đầu học lập trình sau khi cảm thấy hứng thú với nó trong lúc đang rảnh rỗi ở nhà, và hiện tại tôi đang đảm nhận việc phát triển server nền tảng tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp tôi đã học cũng như những vấn đề và giải pháp đa dạng mà các bạn có thể gặp phải trong thực tế.

 

Bài giảng không chỉ được tạo nên từ kiến thức của riêng tôi. Mọi bài giảng đều có sự đồng hành của tất cả các bạn.

Kinh nghiệm của người chia sẻ kiến thức

[Cựu] Nhà phát triển Blockchain liên quan đến Sandbox IP

[Cựu] Nhà phát triển Backend Metaverse

[Hiện tại] Là một nhà phát triển server dày dạn kinh nghiệm tại Pangyo

Lịch sử phỏng vấn

Các thắc mắc khác

  • unduck2022@gmail.com

Chương trình giảng dạy

Tất cả

37 bài giảng ∙ (5giờ 9phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

11 đánh giá

4.9

11 đánh giá

  • tttos님의 프로필 이미지
    tttos

    Đánh giá 8

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    Tôi là lập trình viên đang phát triển tại 토스, người đã cùng tham gia khóa học và giúp đỡ trong việc quay phim. Khi chuẩn bị khóa học này, tôi đã trăn trở khá nhiều điều. Vì dù sao chủ đề luồng nhẹ cũng là một chủ đề không dễ dàng, và tôi cũng đã suy nghĩ về cách nên trình bày nó. Tuy nhiên, theo ý kiến của người quay khóa học, tôi đã cố gắng cung cấp càng nhiều ví dụ đa dạng nhất có thể, và tiến hành với mục tiêu trở thành một khóa học thân thiện hơn là một khóa học có cấu trúc chặt chẽ. Tôi nghĩ đó là một cách làm vừa có nhược điểm vừa có ưu điểm. Khóa học này không thể giúp các bạn trở thành người sử dụng coroutine một cách hoàn hảo. Vì dù sao nó cũng chỉ là một khóa học. Dựa trên khóa học này, nếu các bạn thử áp dụng vào thực tế một cách đa dạng, tôi nghĩ các bạn có thể trở thành người sử dụng coroutine một cách hoàn hảo. Nếu khóa học này không làm hài lòng các bạn, tôi sẽ rất biết ơn nếu các bạn cho phản hồi, vì tôi có ý chí muốn học hỏi và cải thiện rất nhiều ở những điểm còn thiếu sót.

    • jhl22953352님의 프로필 이미지
      jhl22953352

      Đánh giá 6

      Đánh giá trung bình 5.0

      5

      32% đã tham gia

      • hoos983485067님의 프로필 이미지
        hoos983485067

        Đánh giá 10

        Đánh giá trung bình 5.0

        5

        97% đã tham gia

        Bạn muốn học cả Kotlin và Coroutine?? Tôi nghĩ việc tham khảo cái này để học có lẽ sẽ là phương pháp học tập tốt nhất. Cảm ơn bạn.

        • jhong
          Giảng viên

          Xin chào Hoos, cảm ơn bạn đã để lại đánh giá tốt!! Tôi sẽ cố gắng mang đến những khóa học tốt hơn nữa!! Chúc bạn có một ngày tốt lành!!

      • ureview229499님의 프로필 이미지
        ureview229499

        Đánh giá 8

        Đánh giá trung bình 5.0

        5

        95% đã tham gia

        Tôi đã xem rất thú vị với nhiều chủ đề đa dạng. Điều này đã giúp ích rất nhiều cho tôi. Cảm ơn bạn.

        • jhong
          Giảng viên

          Xin chào bạn "muốn phát triển giỏi"! Cảm ơn bạn đã để lại đánh giá tốt!! Tôi sẽ cố gắng mang đến những khóa học tốt hơn nữa trong tương lai!! Chúc bạn có một ngày tốt lành!!

      • sionicdan님의 프로필 이미지
        sionicdan

        Đánh giá 4

        Đánh giá trung bình 5.0

        5

        62% đã tham gia

        • jhong
          Giảng viên

          Chào anh/chị 최병현, cảm ơn vì đã để lại nhận xét. Sắp tới, tôi sẽ mang đến những bài giảng chất lượng hơn! Chúc anh/chị một ngày tốt lành!

      1.440.111 ₫

      Khóa học khác của Hong

      Hãy khám phá các khóa học khác của giảng viên!

      Khóa học tương tự

      Khám phá các khóa học khác trong cùng lĩnh vực!