لطفا جهت اطلاع از آخرین دوره ها و اخبار سایت در
کانال تلگرام
عضو شوید.
آموزش کار با Concurrency در Go (Golang)
Working with Concurrency in Go (Golang)
نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره:
مزایا و معایب برنامه نویسی همزمان با زبان برنامه نویسی Go را بیاموزید با روش های مختلفی که Go کار با برنامه نویسی همزمان را ساده می کند آشنا شوید نحوه کار همزمان و مزایا و مشکلات آن را بیاموزید. مشکلات علوم کامپیوتر و با ساختن یک مثال واقعی پیش نیازها: درک خوب زبان برنامه نویسی Go یک کامپیوتر ویندوز، مکینتاش یا لینوکس با اتصال به اینترنت
Go که اغلب به آن Golang نیز گفته می شود، به دلیل آسان کردن کار با همزمانی بسیار معروف است. به منظور اجرای همزمان یک تابع خاص، تنها کاری که باید انجام دهیم این است که کلمه "go" را به فراخوانی تابع اضافه کنیم، و در پس زمینه به صورت GoRoutine اجرا شود. برنامههای زمانبندی داخلی Go برای اطمینان از اینکه GoRoutine معین در زمانی که باید اجرا میشود و تا آنجا که میتواند کارآمد است.
اما، این بدان معنا نیست که کار با همزمانی در Go ساده است—برنامهنویسی ایمن Thread به برنامهریزی دقیق نیاز دارد، و مهمتر از همه لازم است که توسعهدهندگان درک کاملی از نحوه برخورد Go با همزمانی داشته باشند.
در کتابخانه استاندارد، Go راههای مختلفی را برای برخورد با بخشهای در حال اجرا همزمان برنامهمان، درست در کتابخانه استاندارد، به ما ارائه میدهد: sync.WaitGroup، که به ما اجازه میدهد تا پایان کارها منتظر بمانیم. همگام سازی. و در نهایت، کانالها، که به GoRoutines امکان ارسال و دریافت دادهها را به یکدیگر و از یکدیگر میدهند.
رویکرد Go نسبت به همزمانی نسبتاً ساده است و کم و بیش این عبارت را خلاصه میکند: با اشتراکگذاری حافظه ارتباط برقرار نکنید. در عوض، حافظه را با برقراری ارتباط به اشتراک بگذارید. کانالها ابزاری هستند که معمولاً از طریق برقراری ارتباط، حافظه را به اشتراک میگذاریم.
در این دوره، استفاده از WaitGroups، Mutexes و Channels را پوشش خواهیم داد و این کار را با جزئیات انجام خواهیم داد. ما همچنین برخی از مشکلات ذاتی همزمانی، از جمله خاتمه زودهنگام برنامه و شرایط مسابقه را پوشش خواهیم داد. در ابتدا، ما با حل برخی از مشکلات کلاسیک موجود در زمینه علوم کامپیوتر، از جمله Dining Philosophers، مشکل تولیدکننده/مصرف کننده، و Sleeping Barber، درک خوبی از نحوه کار این چیزها به دست خواهیم آورد. این مشکلات به یک دلیل کلاسیک هستند: آنها یک توسعه دهنده را مجبور می کنند تا بهترین رویکرد را برای کار با کدهایی که همزمان یا به صورت موازی اجرا می شوند، بیابد.
در نهایت، ما دوره را با یک مشکل "در دنیای واقعی" به پایان خواهیم رساند، جایی که باید مشتری را برای نوعی خدمات اشتراک ثبت نام کنیم و از صورتحساب، ثبت نام و همه موارد لازم مراقبت کنیم. یک مشتری جدید راه اندازی کنید. ما این کار را بهطور طبیعی، تا جایی که میتوانیم، با تقسیم وظایف ضروری به کارهای کوچکتر و اجرای همزمان آنها انجام خواهیم داد.
سرفصل ها و درس ها
معرفی
Introduction
معرفی
Introduction
کمی در مورد من
A bit about me
در حال نصب Go
Installing Go
در حال نصب Go
Installing Go
نصب کد ویژوال استودیو
Installing Visual Studio Code
در حال نصب Make
Installing Make
در حال نصب Make
Installing Make
درخواست کمک
Asking for help
درخواست کمک
Asking for help
اشتباهات: همه ما مرتکبشان می شویم.
Mistakes: we all make them.
اشتباهات: همه ما مرتکبشان می شویم.
Mistakes: we all make them.
معرفی
Introduction
معرفی
Introduction
کمی در مورد من
A bit about me
نصب کد ویژوال استودیو
Installing Visual Studio Code
Goroutines، کلمه کلیدی go، و WaitGroups
Goroutines, the go keyword, and WaitGroups
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
ایجاد GoRoutines
Creating GoRoutines
گروه های انتظار برای نجات
WaitGroups to the rescue
گروه های انتظار برای نجات
WaitGroups to the rescue
نوشتن تست با WaitGroups
Writing tests with WaitGroups
نوشتن تست با WaitGroups
Writing tests with WaitGroups
چالش: کار با WaitGroup
Challenge: working with WaitGroup
راه حل چالش
Solution to Challenge
Goroutines، کلمه کلیدی go، و WaitGroups
Goroutines, the go keyword, and WaitGroups
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
ایجاد GoRoutines
Creating GoRoutines
چالش: کار با WaitGroup
Challenge: working with WaitGroup
راه حل چالش
Solution to Challenge
شرایط مسابقه، Mutexes، و مقدمه ای بر کانال ها
Race Conditions, Mutexes, and an Introduction to Channels
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
شرایط مسابقه: یک مثال
Race Conditions: an example
افزودن sync.Mutex به کد ما
Adding sync.Mutex to our code
تست شرایط مسابقه
Testing for race conditions
مثال پیچیده تر
A more complex example
مثال پیچیده تر
A more complex example
نوشتن یک تست برای پروژه درآمد هفتگی ما
Writing a test for our weekly income project
نوشتن یک تست برای پروژه درآمد هفتگی ما
Writing a test for our weekly income project
تولید کننده/مصرف کننده - استفاده از کانال ها برای اولین بار
Producer/Consumer - Using Channels for the first time
شروع به کار با Producer - عملکرد پیتزا فروشی
Getting started with the Producer - the pizzeria function
شروع به کار با Producer - عملکرد پیتزا فروشی
Getting started with the Producer - the pizzeria function
ساخت پیتزا: عملکرد makePizza
Making a pizza: the makePizza function
ساخت پیتزا: عملکرد makePizza
Making a pizza: the makePizza function
در حال تکمیل کد سازنده
Finishing up the Producer code
ایجاد و اجرای مصرف کننده: سفارش پیتزا
Creating and running the consumer: ordering a pizza
در حال اتمام پروژه تولید کننده/مصرف کننده ما
Finishing up our Producer/Consumer project
در حال اتمام پروژه تولید کننده/مصرف کننده ما
Finishing up our Producer/Consumer project
شرایط مسابقه، Mutexes، و مقدمه ای بر کانال ها
Race Conditions, Mutexes, and an Introduction to Channels
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
شرایط مسابقه: یک مثال
Race Conditions: an example
افزودن sync.Mutex به کد ما
Adding sync.Mutex to our code
تست شرایط مسابقه
Testing for race conditions
تولید کننده/مصرف کننده - استفاده از کانال ها برای اولین بار
Producer/Consumer - Using Channels for the first time
در حال تکمیل کد سازنده
Finishing up the Producer code
ایجاد و اجرای مصرف کننده: سفارش پیتزا
Creating and running the consumer: ordering a pizza
یک مسئله کلاسیک: فیلسوفان غذاخوری
A Classic Problem: The Dining Philosophers
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
شروع با مشکل
Getting started with the problem
پیاده سازی منطق diningProblem
Implementing the diningProblem logic
چالش: چاپ کردن ترتیبی که غذا بر اساس آن تمام شده است
Challenge: Printing out the order in which the meal is finished
راه حل چالش
Solution to challenge
راه حل چالش
Solution to challenge
نوشتن یک تست برای برنامه ما
Writing a test for our program
نوشتن یک تست برای برنامه ما
Writing a test for our program
یک مسئله کلاسیک: فیلسوفان غذاخوری
A Classic Problem: The Dining Philosophers
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
شروع با مشکل
Getting started with the problem
پیاده سازی منطق diningProblem
Implementing the diningProblem logic
چالش: چاپ کردن ترتیبی که غذا بر اساس آن تمام شده است
Challenge: Printing out the order in which the meal is finished
کانال ها و کلاسیک دیگر: مشکل آرایشگر خفته
Channels, and another classic: The Sleeping Barber problem
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
معرفی کانال ها
Introduction to channels
معرفی کانال ها
Introduction to channels
عبارت select
The select statement
کانال های بافر شده
Buffered Channels
کانال های بافر شده
Buffered Channels
شروع پروژه Sleeping Barber
Getting started with the Sleeping Barber project
شروع پروژه Sleeping Barber
Getting started with the Sleeping Barber project
تعریف برخی از متغیرها، آرایشگاه و شروع به کار با کد
Defining some variables, the barber shop, and getting started with the code
اضافه کردن یک آرایشگر
Adding a Barber
راه اندازی آرایشگاه به عنوان GoRoutine
Starting the barbershop as a GoRoutine
راه اندازی آرایشگاه به عنوان GoRoutine
Starting the barbershop as a GoRoutine
ارسال مشتریان به فروشگاه
Sending clients to the shop
ارسال مشتریان به فروشگاه
Sending clients to the shop
امتحان کردن چیزها
Trying things out
امتحان کردن چیزها
Trying things out
کانال ها و کلاسیک دیگر: مشکل آرایشگر خفته
Channels, and another classic: The Sleeping Barber problem
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
عبارت select
The select statement
تعریف برخی از متغیرها، آرایشگاه و شروع به کار با کد
Defining some variables, the barber shop, and getting started with the code
اضافه کردن یک آرایشگر
Adding a Barber
پروژه نهایی - ساخت یک سرویس اشتراک
Final Project - Building a Subscription Service
آنچه در این بخش به آن خواهیم پرداخت
What we'll cover in this section
راه اندازی یک وب اپلیکیشن ساده
Setting up a simple web application
راه اندازی محیط توسعه Docker ما
Setting up our Docker development environment
اضافه کردن postgres
Adding postgres
اضافه کردن postgres
Adding postgres
راه اندازی Makefile
Setting up a Makefile
راه اندازی Makefile
Setting up a Makefile
افزودن جلسات و Redis
Adding sessions & Redis
تنظیم پیکربندی برنامه
Setting up the application config
تنظیم پیکربندی برنامه
Setting up the application config
تنظیم مسیر و کنترلر برای صفحه اصلی و راه اندازی وب سرور
Setting up a route & handler for the home page, and starting the web server
راه اندازی قالب ها و ساخت تابع رندر
Setting up templates and building a render function
راه اندازی قالب ها و ساخت تابع رندر
Setting up templates and building a render function
افزودن میان افزار جلسه
Adding session middleware
راهاندازی کنترلکنندهها و مسیرهای خرد اضافی
Setting up additional stub handlers and routes
نمایش نظرات