Gopher Academy
3.34K subscribers
920 photos
40 videos
280 files
2.02K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🎯استفاده کنندگان زبان گو به تفکیک کشور 🎯
https://github.com/golang/go/wiki/GoUsers


🔰 @gopher_academy
🎯لیست کتاب ها در مورد Golang 🎯

https://github.com/dariubs/GoBooks


🔰 @gopher_academy
🎯مجموعه آموزش ویدیویی گولنگ🎯

https://git.ir/go


🔰 @gopher_academy
🎯توضیحات ورژن 1.14.6 گولنگ🎯
🔰شامل fixes شدن موارد زیر
1️⃣ go command
2️⃣ compiler the linker
3️⃣ vet
4️⃣ database/sql
5️⃣ encoding/json
6️⃣ net/http
7️⃣ reflect
8️⃣ testing pkgs


🔰 @gopher_academy
🎯توضیحات ورژن 1.14.7 گولنگ🎯
🔰شامل fixes امنیتی پکیج زیر

1️⃣ encoding/binary


🔰 @gopher_academy
ترجمه عبارات فرنگی:

Junior developer: زود یاد بگیر
Senior developer: خیلی بلد
Full-stack developer: همه چی بلد
Dev-ops: سیاه چاله کار
Product Owner: صاحاب بچه
CTO: گنده برنامه نویس شرکت
CEO: جناب خان
Co-founder: بابا بزرگ شرکت
HR: نیرو بگیر شرکت
Freelancer: نوکر و آقای خود
web developer: تار دوزک


به همین سادگی (کپی شده از هیچ جا)

🔰 @gopher_academy
🎯سری آموزش بلاکچین در گولنگ🎯

🔰part 1
https://t.me/gopher_academy/51

🔰part 2
https://t.me/gopher_academy/52

🔰part 3
https://t.me/gopher_academy/53

🔰part 4
https://t.me/gopher_academy/54

🔰part 5
https://t.me/gopher_academy/55

🔰part 6
https://t.me/gopher_academy/56

💙زبان آموزش فارسی💙

🔰 @gopher_academy
🎯مزایای Goroutine نسبت به thread ها🎯

🔰 1-ا Goroutine ها بسیار سریعتر از thread شروع به کار میکنند.

🔰2-ا Goroutine یه ویژگی built-in زبان go است که توسط channel ها با یکدیگر ارتباط برقرار می کنند.

🔰 3-ا Goroutine ها بسیار کم مصرف تر از thread ها هستند. تنها چند کیلوبایت در هر بسته اشغال می کنند که بسته به اپلیکیشن این مقدار افزایش پیدا می کند در مقابل thread ها که این فضای اشغالی مشخص و ثابت است.


🔰 @gopher_academy
🎯تجزیه و تحلیل قفل ها یا lock ها در mutex ها🎯
🔰 توی این قسمت می خواهیم به قول معروف دل و جیگر این رویکرد رو بریزیم ببینیم چجوری عمل می کند.
📍سرفصلش📍
1 Introduction
2. Mutex data structure
2.1 Mutex structure
2.2 Mutex method
3. Add and unlock process
3.1 Simple lock
3.2 Locking is blocked
3.3 Simple unlock
3.4 Unlock and wake up the coroutine
4. Spin process
4.1 What is spin
4.1 Spin conditions
4.2 Advantages of spin
4.3 The problem of spin
5. Mutex mode
4.1 normal mode
4.2 starvation mode
5. Woken status
6. Why do you need to panic for repeated unlocking
7. Programming Tips
7.1 Use defer to avoid deadlock
7.2 Locking and unlocking should app
این قسمت ها رو فردا براتون منتشر می کنم
#lock #mutex

🔰 @gopher_academy
Gopher Academy
🎯تجزیه و تحلیل قفل ها یا lock ها در mutex ها🎯 🔰 توی این قسمت می خواهیم به قول معروف دل و جیگر این رویکرد رو بریزیم ببینیم چجوری عمل می کند. 📍سرفصلش📍 1 Introduction 2. Mutex data structure 2.1 Mutex structure 2.2 Mutex method 3. Add and unlock process 3.1…
📍1 Introduction Mutex📍
در واقع Mutex روش اصلی برای کنترل دسترسی به منابع اشتراکی در برنامه های همزمان است.
زبان Go یک Mutex بسیار ساده و کاربردی را ارائه می دهد.
که این Mutex نوعی ساختار است که به ترتیب دو روش Lock () و Unlock () را در معرض دید شما قرار می دهد. برای قفل کردن و باز کردن قفل استفاده می شود.
درواقعه Mutex برای استفاده بسیار راحت است ، اما اجرای داخلی آن بسیار پیچیده تر است . که ما در ادامه خواهیم توضیح داد این اجزا و نحوه کارکردشون رو

🔰 @gopher_academy
Gopher Academy
🎯تجزیه و تحلیل قفل ها یا lock ها در mutex ها🎯 🔰 توی این قسمت می خواهیم به قول معروف دل و جیگر این رویکرد رو بریزیم ببینیم چجوری عمل می کند. 📍سرفصلش📍 1 Introduction 2. Mutex data structure 2.1 Mutex structure 2.2 Mutex method 3. Add and unlock process 3.1…
📍2. Mutex data structure📍
📍2.1 Mutex structure📍
نمونه کد struct زیر یک نمونه از نحوه قفل کردن روی منابع می باشد
type Mutex struct {
state int32
sema uint32
}
برای دسترسی به این قسمت از کد به مسیر زیر برید
src/sync/mutex.go
خوب بریم ببینیم این ساختار در واقع چه بلایی رو منابع ما میاره 😁

❇️گزینه اول state به معنی قفل بودن یا نبودن رو مشخص می کنه
❇️گزینه دوم نماینگر semaphore ها هستن این semaphore ها در واقع یک نوع داده متغیر یا انتزاعی است که برای کنترل دسترسی به یک منبع مشترک توسط چندین فرآیند در یک سیستم همزمان مانند یک سیستم عامل چند وظیفه ای استفاده می شود. که توسظ Coroutines ها مدیریت می شود این Coroutines ها در واقعه وظیفه اجرا یا از سرگیری مولفه های سیستم می باشند
در واقع Mutex.state یک بلوک ۳۲ بیت هست که شامل چهار قسمت هست در شکل زیر توضیح میدیم👇👇

🔰 @gopher_academy
📍این شکل چیدمان حافظه Mutex را نشان می دهد📍
👇توضیحات👇

🔰 @gopher_academy
📍توضیحات شکل بالا📍
❇️Locked
نشان دهنده ففل بودن رو نشون میده اگر صفر بود یعنی قفل نیست اگر یک بود بعنی قفل هست
❇️Woken
سازوکار coroutine هاست یعنی اگر صفر بود هیج coroutine از خواب بیدار نشده و اگر یک بود یعنی coroutine مدنظر از خواب بیدار شده و در مرحله قفل شده هست
❇️Starving
نشان می دهد که آیا Mutex حالت گرسنگی را پردازش می کند. اگر صفر بود در حالت گرسنگی نیست و اگر یک بود بعنی اون coroutine بیش از یک میلی ثانبه قفل شده هست
❇️Waiter
تعداد coroutine های مسدود شده رو نشون میده و هتگامی که این coroutine ها از حالت قفل بیرون بیان میشه از اون semaphore ها استفاده کرد

🔰 @gopher_academy
Gopher Academy
🎯تجزیه و تحلیل قفل ها یا lock ها در mutex ها🎯 🔰 توی این قسمت می خواهیم به قول معروف دل و جیگر این رویکرد رو بریزیم ببینیم چجوری عمل می کند. 📍سرفصلش📍 1 Introduction 2. Mutex data structure 2.1 Mutex structure 2.2 Mutex method 3. Add and unlock process 3.1…
📍2.2 Mutex method📍
🔰درواقع Mutext دو روش را ارائه می دهد:

❇️قفل locked (): روش قفل کردن
❇️باز کردنunlocked (): روش باز کردن

🧐بیایید روند قفل کردن و باز کردن قفل را تحلیل کنیم.

قفل کردن را می توان به دو حالت تقسیم کرد:
موفقیت و شکست. یا همون success and failure
در صورت موفقیت ، قفل مستقیماً به دست می آید. اما در شرابط پس از خرابی ، coroutine فعلی مسدود می شود.

🔰 @gopher_academy
Gopher Academy
📍3.1 Simple lock📍 👇توضیحات 👇 🔰 @gopher_academy
🔰 در شکل فوق با فرض اینکه در حال حاضر فقط یک کوروتین قفل شده است و هیچ دخالتی از سایر کورینتین ها وجود ندارد

فرآیند قفل تعیین می کند که آیا Locked 0 است اگر 0 باشد ، بیت Locked روی 1 تنظیم می شود ، به این معنی که قفل موفقیت آمیز است. از شکل بالا مشخص می شود که پس از قفل کردن فقط موقعیت Locked 1 است و سایر بیت های وضعیت تغییر نکرده اند.

🔰 @gopher_academy