آموزش همزمانی در Go (Golang)

Concurrency in Go (Golang)

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: چرایی ها و چگونگی های همزمانی را در Go بیاموزید. نحوه چرخش گوروتین ها و برقراری ارتباط بین آنها. چگونه از شرایط مسابقه و بن بست جلوگیری کنیم. نحوه همگام سازی اجرای گوروتین ها. چگونه Go Scheduler کار می کند. نحوه ایجاد خطوط لوله جریان با گوروتین ها و کانال ها. نحوه انتشار داده در مرز API پیش نیازها: دانش اولیه زبان برنامه نویسی Go مانند حلقه ها، توابع، متدها. نصب کامپایلر Go و هر IDE روی لپ تاپ.

سؤالی که برای همه برنامه‌نویسان مطرح می‌شود این است که آیا آنها از منابع محاسباتی موجود به طور مؤثر استفاده می‌کنند؟

نمای کلی دوره

این دوره را می توان به پنج بخش تقسیم کرد.

  • Concurrency Primitives

  • غواصی عمیق در Concurrency Primitives

  • الگوهای همزمانی

  • بسته متن

  • بخش پاداش - رابط ها

در دوره ما سعی می کنیم به این سوالات پاسخ دهیم.

Concurrency Primitives

  • محدودیت‌های Threads چیست؟

  • مزایای گوروتین ها نسبت به رشته های سیستم عامل چیست؟

  • چگونه از شرایط مسابقه اجتناب کنیم؟

  • چگونه از کانال ها برای برقراری ارتباط داده ها استفاده می شود؟

  • چگونه ارتباط بدون انسداد و مهلت زمانی را اجرا کنیم؟

  • چه زمانی از mutex و کانال ها استفاده می کنیم؟

  • چگونه اجرای گوروتین ها را همگام سازی کنیم؟

  • چگونه وضعیت مسابقه را در Go تشخیص دهیم؟

Deep Dives into Concurrency Primitives

  • زمانبندی Go چگونه کار می کند؟

  • تغییر زمینه چگونه کار می کند؟

  • چگونه کانال ارسال و دریافت کار می کند؟

الگوهای همزمانی

  • چگونه خطوط لوله جریانی را با Goroutines و Channel ها بسازیم؟

  • چگونه مراحل محاسباتی فشرده Fan-out و Fan-in انجام شود؟

  • چگونه از نشت Goroutine اجتناب کنیم؟

بسته زمینه

  • چگونه می توانیم داده های محدوده درخواست و سیگنال لغو را در سراسر مرزهای API منتشر کنیم؟

تمرین های کدنویسی

  • هر مفهوم با یک تمرین کدگذاری دنبال می شود.

  • طرح اولیه تمرین ها در Github به اشتراک گذاشته شده است.

نمونه برنامه های کاربردی

ما خواهیم ساخت

  • طرح اولیه خزنده وب.

  • خط لوله پردازش تصویر.

  • وقت پایان سرور HTTP با بسته زمینه.

بخش پاداش - رابط ها

  • چگونه رفتار مشترک بین اشیاء مختلف را به عنوان نوع انتزاعی تعریف کنیم؟

  • چگونه Interface یک انتزاع برای توابع سطح بالاتر فراهم می کند؟


سرفصل ها و درس ها

معرفی Introduction

  • معرفی Introduction

  • بررسی اجمالی دوره Course Overview

  • فرآیندها و موضوعات Processes and Threads

  • چرا همزمانی سخت است Why Concurrency is hard

گوروتین ها Goroutines

  • گوروتین ها Goroutines

  • مخزن برنامه نویسی Clone Exercise Github Clone Coding Exercise Github Repository

  • ورزش - سلام Exercise-Hello

  • Exercise-ClientServer Exercise-ClientServer

  • گروه های انتظار WaitGroups

  • تمرین-گروه انتظار Exercise-WaitGroup

  • برنامه ها و بسته ها Goroutines & Closures

  • تمرین-بستن Exercise-Closure

  • تمرین-بستن 02 Exercise-Closure02

Deep Dive - Go Scheduler Deep Dive - Go Scheduler

  • Deep Dive - Go Scheduler Deep Dive - Go Scheduler

  • Deep Dive - Go Scheduler - تغییر متن به دلیل تماس سیستم همزمان Deep Dive - Go Scheduler - Context Switching due to synchronous system call

  • Deep Dive - Go Scheduler - تغییر متن به دلیل تماس سیستم ناهمزمان Deep Dive - Go Scheduler - Context Switching due to Asynchronous system call

  • Deep Dive - Go Scheduler - Work Stealing Deep Dive - Go Scheduler - Work Stealing

کانال ها Channels

  • کانال ها Channels

  • ورزش - کانال ها Exercise - Channels

  • محدوده، کانال های بافر Range, Buffered Channels

  • ورزش - محدوده Exercise - Range

  • تمرین - کانال بافر Exercise - Buffered Channel

  • جهت کانال Channel Direction

  • تمرین - جهت کانال Exercise - Channel Direction

  • مالکیت کانال Channel Ownership

  • تمرین - مالکیت کانال Exercise - Channel Ownership

شیرجه عمیق - کانال ها Deep Dive - Channels

  • شیرجه عمیق - کانال ها Deep Dive - Channels

  • Deep Dive - کانال ها - ارسال و دریافت Deep Dive - Channels - Send and Recieve

  • شیرجه عمیق - کانال ها - بافر پر است Deep Dive - Channels - Buffer full

  • شیرجه عمیق - کانال ها - بافر خالی است Deep Dive - Channels - Buffer empty

  • Deep Dive - Channels - Unbuffer channel Deep Dive - Channels - Unbuffer channel

  • غواصی عمیق - کانال ها - خلاصه Deep Dive - Channels - Summary

انتخاب کنید Select

  • انتخاب کنید Select

  • تمرین - انتخاب کنید Exercise - Select

  • ورزش - تایم اوت Exercise - Timeout

  • ورزش - ارتباط بدون انسداد Exercise - Non-blocking communication

بسته همگام سازی Sync Package

  • موتکس Mutex

  • ورزش - Mutex Exercise - Mutex

  • اتمی Atomic

  • ورزش - اتمی Exercise - Atomic

  • متغیر شرطی Conditional Variable

  • تمرین - متغیر شرطی - سیگنال Exercise - Conditional Variable - Signal

  • تمرین - متغیر شرطی - پخش Exercise - Conditional Variable - Broadcast

  • یکبار همگام سازی کنید Sync Once

  • تمرین - یک بار همگام سازی کنید Exercise - Sync Once

  • استخر همگام سازی Sync Pool

  • ورزش - استخر همگام سازی Exercise - Sync Pool

آشکارساز نژاد Race Detector

  • آشکارساز نژاد Race Detector

  • ورزش - مسابقه Exercise - Race

خزنده وب Web Crawler

  • خزنده وب - متوالی Web Crawler - Sequential

  • خزنده وب - همزمان Web Crawler - Concurrent

الگوهای همزمانی Concurrency Patterns

  • خطوط لوله Pipelines

  • تمرین - خطوط لوله Exercise - Pipelines

  • Fan Out & Fan-in Fan-out & Fan-in

  • ورزش - Fan out & Fan-in Exercise - Fan-out & Fan-in

  • لغو برنامه ها Cancelling Goroutines

  • ورزش - لغو گوروتین ها Exercise - Cancelling Goroutines

خط لوله پردازش تصویر Image Processing Pipeline

  • پردازش تصویر متوالی Image Processing Sequential

  • خط لوله پردازش تصویر Image Processing Pipeline

بسته زمینه Context Package

  • بسته زمینه Context Package

  • بسته زمینه برای لغو Context Package for Cancellation

  • بسته زمینه به عنوان کیسه داده Context Package as Data bag

  • ورزش - با لغو Exercise - WithCancel

  • ورزش - WithDeadline Exercise - WithDeadline

  • ورزش - WithTimeout Exercise - WithTimeout

  • تمرین - WithValue Exercise - WithValue

  • بسته زمینه - اصطلاحات برو Context Package - Go Idioms

مهلت زمانی سرور HTTP با بسته زمینه HTTP Server Timeouts with Context Package

  • مهلت زمانی سرور HTTP با بسته زمینه HTTP Server Timeouts with Context Package

بخش پاداش: رابط Bonus Section: Interface

  • رابط Interface

  • رابط - ضمنی Interface-implicit

  • رابط های کتابخانه استاندارد Interfaces from standard library

  • رابط کاربری io.Writer را تمرین کنید Exercise io.Writer interface

  • رابط Stringer را تمرین کنید Exercise Stringer interface

  • رضایت رابط Interface Satisfaction

  • تایپ Assertion Type Assertion

  • بیان نوع تمرین Exercise Type Assertion

  • رابط خالی Empty Interface

نمایش نظرات

آموزش همزمانی در Go (Golang)
جزییات دوره
5 hours
77
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
13,133
4.7 از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Deepak kumar Gunjetti Deepak kumar Gunjetti

مشاوره راه حل های معماری ، andcloud.io در Andcloud ، ما برای کمک به مشتریان در DevOps ، Data Analytics و Security ، روی Cloud Platform تمرکز کرده ایم. من به عنوان یک مربی سعی می کنم به دانش آموزان بیاموزم تا تأثیر مثبتی در شغلشان ایجاد کنند. من بیش از 15 سال تجربه در زمینه تولید نرم افزار دارم. من روی Routing و Switching Platforms برای شبکه های Enterprise و Data Center کار کرده ام. من در نرم افزار جاسازی شده برای دستگاه های مصرف کننده مانند سیستم های صوتی اتومبیل ، دستگاه های رسانه ای و سیستم های دوربین توسعه یافته ام.