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
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
This media is not supported in your browser
VIEW IN TELEGRAM
Building RESTful Web Services
with Go.pdf
3.6 MB
☝🏻Building RESTful Web Services
with Go☝🏻
🔰 @gopher_academy
📍 ورزن جدید📍
💎go1.15.2 (released 2020/09/09)

🔺includes fixes to the
🔺compiler
🔺runtime
🔺documentation
🔺the go command
🔺net/mail
🔺os
🔺sync
🔺testing packages
👇👇اطلاعات و سایر جزییات این تغییرات👇👇
https://github.com/golang/go/issues?q=milestone%3AGo1.15.2+label%3ACherryPickApproved

🔰 @gopher_academy
📍A summary of the changes between Go releases. Notes for the major releases:📍🧐😁

🔺Go 1.15 (August 2020)
🔺Go 1.14 (February 2020)
🔺Go 1.13 (September 2019)
🔺Go 1.12 (February 2019)
🔺Go 1.11 (August 2018)
🔺Go 1.10 (February 2018)
🔺Go 1.9 (August 2017)
🔺Go 1.8 (February 2017)
🔺Go 1.7 (August 2016)
🔺Go 1.6 (February 2016)
🔺Go 1.5 (August 2015)
🔺Go 1.4 (December 2014)
🔺Go 1.3 (June 2014)
🔺Go 1.2 (December 2013)
🔺Go 1.1 (May 2013)
🔺Go 1 (March 2012)

🔰 @gopher_academy
🔸استخدام Go Developer در شرکت اندیشه فرتاک امیرکبیر #تهران
🔹حقوق تا ۴ میلیون تومان

🔗 https://quera.ir/r/tcYacr

🔺شرح شغل و وظایف

ارائه راه حل‌های مناسب برای ساختار سیستم، پایگاه‌های داده و ذخیره سازی اطلاعات
ارائه راه کارهای خلاقانه و بهینه برای تست
کد نویسی تمیز
بررسی و دیباگ سیستم برای یافتن مشکلات احتمالی
همکاری با توسعه دهنده FrontEnd برای استفاده از API‌ها

🔺مهارت‌های ضروری:

تسلط بر GoLang
آشنایی با MongoDB
آشنایی با PostgreSQL
آشنایی با REST API
آشنایی با Git
🔰 @gopher_academy
🎯در ورژن ۲ از Grpc-Gateway دقت کنید که برای استفاده از 👇

🔺protoc-gen-swagger

در ورژن جدید تغییر نام پیدا کرد به👇
🔺protoc-gen-openapiv2
.
#note
🔰 @gopher_academy