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
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن 🟢Introduction to Memory management 🟡 https://t.me/gopher_academy/778 🟢What is it? 🟡 https://t.me/gopher_academy/779 🟢Stack 🟡 https://t.me/gopher_academy/780 🟢Stack & Heap visualized 🟡 https://t.me/gopher_academy/781…
🟢Why is it important?
چرا مهم است؟
🟡 برخلاف درایوهای هارد دیسک ، RAM بی نهایت نیست. اگر برنامه ای بدون اینکه حافظه را آزاد کند ، به مصرف حافظه ادامه دهد ، در نهایت حافظه آن تمام می شود . از این رو برنامه های نرم افزاری نمی توانند فقط حافظه RAM را همانطور که دوست دارند ادامه دهند زیرا باعث از بین رفتن حافظه دیگر برنامه ها و فرایندها می شود. بنابراین بیشتر از زبانهای برنامه نویسی به جای اینکه به توسعه دهنده نرم افزار این مسئله را بفهمند ، روشهایی برای مدیریت خودکار حافظه ارائه می دهند. و هنگامی که ما در مورد مدیریت حافظه صحبت می کنیم بیشتر در مورد مدیریت حافظه Heap صحبت می کنیم.

🔰 @gopher_academy
Gopher Academy
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن 🟢Introduction to Memory management 🟡 https://t.me/gopher_academy/778 🟢What is it? 🟡 https://t.me/gopher_academy/779 🟢Stack 🟡 https://t.me/gopher_academy/780 🟢Stack & Heap visualized 🟡 https://t.me/gopher_academy/781…
🟢Different approaches?
رویکردهای مختلف؟
🟡 از آنجا که زبانهای برنامه نویسی مدرن نمی خواهند فقظ یه روش را تحویل توسعه دهنده بدند یا همون دیکتاتوری ، توسعه دهنده ها برای مدیریت حافظه برنامه خود ، راهی برای مدیریت خودکار حافظه ابداع کرده اند. برخی از زبان های قدیمی هنوز به دستکاری حافظه دستی نیاز دارند اما بسیاری از آنها روش های شفافی را برای انجام این کار ارائه می دهند. بعضی از زبانها از چندین روش برای مدیریت حافظه استفاده می كنند و حتی بعضی از آنها به توسعه دهنده اجازه می دهند كه بهترین گزینه را برای خود انتخاب كند (C ++ مثال خوبی است). رویکردها را می توان به صورت زیر دسته بندی کرد
🔴Manual memory management
🔴Garbage collection(GC)
🔴Resource Acquisition is Initialization (RAII)
🔴Automatic Reference Counting(ARC)
🔴Ownership

🔰 @gopher_academy
Gopher Academy
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن 🟢Introduction to Memory management 🟡 https://t.me/gopher_academy/778 🟢What is it? 🟡 https://t.me/gopher_academy/779 🟢Stack 🟡 https://t.me/gopher_academy/780 🟢Stack & Heap visualized 🟡 https://t.me/gopher_academy/781…
🟢Manual memory management

🟡 این زبان به طور پیش فرض حافظه را برای شما مدیریت نمی کند ، این به شما بستگی دارد که برای اشیایی که ایجاد می کنید حافظه اختصاص داده و آن را آزاد کنید. به عنوان مثال C و C ++. آنها روش های malloc ، realloc ، calloc را برای مدیریت حافظه ارائه می دهند و این به خود توسعه دهنده بستگی دارد که حافظه heap را در برنامه اختصاص داده و از اشاره گرها برای مدیریت حافظه به طور کارآمد استفاده کند.

🔰 @gopher_academy
Gopher Academy
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن 🟢Introduction to Memory management 🟡 https://t.me/gopher_academy/778 🟢What is it? 🟡 https://t.me/gopher_academy/779 🟢Stack 🟡 https://t.me/gopher_academy/780 🟢Stack & Heap visualized 🟡 https://t.me/gopher_academy/781…
🟢Garbage collection(GC)

🟡 مدیریت خودکار حافظه heap با آزادسازی حافظه های تخصیص یافته استفاده نشده. درواقعه GC یکی از رایج ترین مدیریت حافظه در زبان های مدرن است و این فرآیند اغلب در فواصل معینی اجرا می شود و بنابراین باعث ایجاد سربار جزئی به نام pause times . می شود.
🟡 برخی از زبانهایی زیر به طور پیش فرض از Garbage collection برای مدیریت حافظه استفاده می کنند.👇🏻
🔻JVM(Java/Scala/Groovy/Kotlin)
🔻JavaScript
🔻C#
🔻Golang
🔻OCaml
🔻Ruby


🔰 @gopher_academy
https://t.me/gopher_academy/789
👆🏻👆🏻توضیحات عکس فوق👆🏻👆🏻
🟢Mark & Sweep GC:
🟡 به عنوان Tracing GC شناخته می شود. به طور کلی یک الگوریتم دو فاز است که ابتدا objects را که هنوز به عنوان "alive" ارجاع می شوند علامت گذاری می کند و در فاز بعدی حافظه objects را که زنده نیستند آزاد می کند. به عنوان مثال JVM ، C # ، Ruby ، JavaScript و Golang از این روش استفاده می کنند. در JVM الگوریتم های مختلف GC برای انتخاب وجود دارد در حالی که موتورهای جاوا اسکریپت مانند V8 از یک Mark & Sweep GC همراه با Reference counting GC برای تکمیل آن استفاده می کنند. این نوع GC به عنوان کتابخانه خارجی برای C & C ++ نیز موجود است.
🟢Reference counting GC:
🟡 هر شی object یک تعداد مرجع دریافت می کند که با تغییر ارجاع به آن افزایش یا کاهش می یابد و جمع آوری زباله زمانی انجام می شود که شمارش صفر شود. این خیلی ترجیح داده نمی شود زیرا نمی تواند منابع cyclic را اداره کند. به عنوان مثال PHP ، Perl و Python از این نوع GC با راه حل غلبه بر منابع چرخه ای استفاده می کنند. این نوع GC را می توان برای ++ C نیز فعال کرد.

🔰 @gopher_academy
Gopher Academy
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن 🟢Introduction to Memory management 🟡 https://t.me/gopher_academy/778 🟢What is it? 🟡 https://t.me/gopher_academy/779 🟢Stack 🟡 https://t.me/gopher_academy/780 🟢Stack & Heap visualized 🟡 https://t.me/gopher_academy/781…
🟢Resource Acquisition is Initialization (RAII)

🟡 در این نوع مدیریت حافظه ، تخصیص حافظه یک شی به طول عمر آن پیوند خورده است که از زمان ساخت تا نابودی است. این در C ++ معرفی شد و همچنین توسط Ada و Rust استفاده می شود.

🔰 @gopher_academy
Gopher Academy
🔴 مدیریت حافظه در زبان های برنامه نویسی مدرن 🟢Introduction to Memory management 🟡 https://t.me/gopher_academy/778 🟢What is it? 🟡 https://t.me/gopher_academy/779 🟢Stack 🟡 https://t.me/gopher_academy/780 🟢Stack & Heap visualized 🟡 https://t.me/gopher_academy/781…
🟢Automatic Reference Counting(ARC)

🟡 این روند شبیه Reference counting GC است اما به جای اجرای فرایند در یک بازه زمانی خاص ، دستورالعمل های نگهداری را در زمان کامپایل به کد کامپایل شده وارد می شوند و وقتی یک مرجع شی صفر می شود به عنوان بخشی از اجرا بدون مکث برنامه پاک می شود . همچنین نمی تواند از منابع دوره ای استفاده کند و برای استفاده از آن با استفاده از کلمات کلیدی خاص به توسعه دهنده متکی است.

🔰 @gopher_academy
مدیریت حافظه در زبان های برنامه نویسی مدرن
(اتمام این قسمت) برای دسترسی کامل و سریع به این آموزش به لینک زیر مراجبع کنید
👇🏻👇🏻👇🏻

🟡https://t.me/gopher_academy/777


🔰 @gopher_academy
🔴استخدام برنامه‌نویس GO (دورکاری)
🔴گروه نرم افزاری رازنامه | Raznameh Group
https://jobinja.ir/558878

🔰 @gopher_academy
🔴 درگاه پرداخت idpay با گولنگ و مانگو
🟡 https://github.com/mrbardia72/dark-idpay
🔴 درگاه پرداخت zarinpal با گولنگ و مانگو
🟡 https://github.com/mrbardia72/dark-zarinpal


🔵 این ریپو رو خودم دورس کردم - دوستان اگه پیشنهادی برای بهتر شدن یا آبشنی که بخواد اضافه بشه میتونن مشارکت کنن pull request بزنن


🔰 @gopher_academy
Gopher Academy pinned « مدیریت حافظه در زبان های برنامه نویسی مدرن (اتمام این قسمت) برای دسترسی کامل و سریع به این آموزش به لینک زیر مراجبع کنید 👇🏻👇🏻👇🏻 🟡https://t.me/gopher_academy/777 🔰 @gopher_academy»
🔴Cheat sheet - float

🔰 @gopher_academy
🔴Cheat sheet - character

🔰 @gopher_academy
🔴Cheat sheet - special values

🔰 @gopher_academy
🔴Cheat sheet - string or byte slice

🔰 @gopher_academy
🔴کار با کتابخانه string 🔴

🟢String literals (escape characters)
🟢Concatenate
🟢Equal and compare (ignore case)
🟢Length in bytes or runes
🟢Index, substring, iterate
🟢Search (contains, prefix/suffix, index)
🟢Replace (uppercase/lowercase, trim)
🟢Split by space or comma
🟢Join strings with separator
🟢Format and convert
👇🏻👇🏻توضیحات تا ساعاتی دیگر👇🏻👇🏻

🔰 @gopher_academy
🟢String literals (escape characters)

🔰 @gopher_academy
🟢Concatenate

🔰 @gopher_academy
🟢Equal and compare (ignore case)

🔰 @gopher_academy
🟢Length in bytes or runes

🔰 @gopher_academy