سوال مصاحبه: مزایای استفاده از BFF را بیان کنید.
۱. Diverse Frontend Needs: یک اپلیکیشن موبایل، یک برنامه وب، و یک تلویزیون هوشمند نیازمندی های متفاوتی دارند.
۲. Performance Optimization: دستگاه های موبایل ممکن است در شبکه های کندتری باشند و قدرت پردازش کمتری داشته باشند. BFF به ما اجازه میدهد که داده را برای هر دستگاه بهینه کنیم و برنامه responsive باشد.
۳. Simplified Frontend Logic: با BFF فرانت اند ها نیاز ندارند که با مایکروسرویس های مختلف صحبت کنند بلکه یک بک اندی دارند که داده ها را برایشان aggregate و پردازش می کند.
۴. Enhanced User Experience: با در نظر گرفتن نیاز و توانایی های هر دستگاه BFF مطمئن میشود که هر کاربر بهترین تجربه را صرف نظر از دستگاهش دارد.
۵. Easier Maintenance and Upgrades: چون هر بک اند فرانت اند خاص خودش را دارد انجام تغییرات ساده تر میشود. می توانیم بک اند موبایل را آپدیت کنیم بدون اینکه بک اند وب را تغییر دهیم.
۶. Security: به ما امکان میدهد که برای هر کلاینت الزامات امنیتی خاص خودش را داشته باشیم. مثلا ممکن است authentication در اپ mobile با وب فرق کند.
۷. Agility: تیم ها می توانند به طور مستقل روی BFF خود کار کنند، و پروسه توسعه سریعتر شود.
۸. Scalability: چون هر فرانت اند، بک اند خودش را دارد، راحت تر میتوان قسمت هایی از سیستم را مستقل از بقیه قسمت ها Scale کرد.
۹. Consistency: می تواند به ارائه یک API سازگار کمک کند. وقتی مایکروسرویس های مختلف تغییر میکنند ما یک لایه stable در جلو آنها داریم که consistent است.
۱۰. Version Control: اپلیکیشن های فرانت قدیمی ممکن است به ورژن های قدیمی تر بک اند نیاز داشته باشند. BFF این امکان را به ما میدهد که هر فرانت اند ورژن مورد نیاز بک اند خود را دریافت کند.
۱۱. Cross Functional Teams: این الگو به ما کمک میکند تا تیم هایی داشته باشیم که قابلیت های end-to-end توسعه دهند. یعنی وقتی یک functionality نیاز است از فرانت تا بک اند آن را یک تیم خاص توسعه دهد که همکاری و سرعت تحویل بالا میرود.
۱۲. Facilitates A/B Testing: به AB تستینگ کمک می کند. چون میتوانیم یک فیچر جدید را در یک فرانت اند خاص تست کنیم بدون اینکه سایر بک اند ها را تغییر دهیم.
۱۳. Localization and Internationalization: ممکن است برای مناطق مختلف فرانت اند های مختلفی داشته باشیم در این صورت میتوانیم بک اند را خاص فیچر های آن منطقه سفارشی کنیم.
۱۴. Handling Legacy Systems: در حین گذر از مونولیت به مایکروسرویس BFF مانند پلی بین فرانت اند های جدید برای تعامل با سیستم های legacy عمل میکند.
۱۵. Reduces Bandwidth Usage: اگر فقط داده هایی که برای دستگاه موبایل نیاز است را به آن بفرستیم پهنای باند کمتری مصرف میشود.
۱۶. Error Handling and Resilience: وقتی خطایی وجود دارد ممکن است بخواهیم در Web app و موبایل به نحو متفاوتی آن را مدیریت کنیم.
17. Feature Flagging: می توانیم یه سری فیچر ها را فقط در یک سری از فرانت اند ها داشته باشیم.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
۱. Diverse Frontend Needs: یک اپلیکیشن موبایل، یک برنامه وب، و یک تلویزیون هوشمند نیازمندی های متفاوتی دارند.
۲. Performance Optimization: دستگاه های موبایل ممکن است در شبکه های کندتری باشند و قدرت پردازش کمتری داشته باشند. BFF به ما اجازه میدهد که داده را برای هر دستگاه بهینه کنیم و برنامه responsive باشد.
۳. Simplified Frontend Logic: با BFF فرانت اند ها نیاز ندارند که با مایکروسرویس های مختلف صحبت کنند بلکه یک بک اندی دارند که داده ها را برایشان aggregate و پردازش می کند.
۴. Enhanced User Experience: با در نظر گرفتن نیاز و توانایی های هر دستگاه BFF مطمئن میشود که هر کاربر بهترین تجربه را صرف نظر از دستگاهش دارد.
۵. Easier Maintenance and Upgrades: چون هر بک اند فرانت اند خاص خودش را دارد انجام تغییرات ساده تر میشود. می توانیم بک اند موبایل را آپدیت کنیم بدون اینکه بک اند وب را تغییر دهیم.
۶. Security: به ما امکان میدهد که برای هر کلاینت الزامات امنیتی خاص خودش را داشته باشیم. مثلا ممکن است authentication در اپ mobile با وب فرق کند.
۷. Agility: تیم ها می توانند به طور مستقل روی BFF خود کار کنند، و پروسه توسعه سریعتر شود.
۸. Scalability: چون هر فرانت اند، بک اند خودش را دارد، راحت تر میتوان قسمت هایی از سیستم را مستقل از بقیه قسمت ها Scale کرد.
۹. Consistency: می تواند به ارائه یک API سازگار کمک کند. وقتی مایکروسرویس های مختلف تغییر میکنند ما یک لایه stable در جلو آنها داریم که consistent است.
۱۰. Version Control: اپلیکیشن های فرانت قدیمی ممکن است به ورژن های قدیمی تر بک اند نیاز داشته باشند. BFF این امکان را به ما میدهد که هر فرانت اند ورژن مورد نیاز بک اند خود را دریافت کند.
۱۱. Cross Functional Teams: این الگو به ما کمک میکند تا تیم هایی داشته باشیم که قابلیت های end-to-end توسعه دهند. یعنی وقتی یک functionality نیاز است از فرانت تا بک اند آن را یک تیم خاص توسعه دهد که همکاری و سرعت تحویل بالا میرود.
۱۲. Facilitates A/B Testing: به AB تستینگ کمک می کند. چون میتوانیم یک فیچر جدید را در یک فرانت اند خاص تست کنیم بدون اینکه سایر بک اند ها را تغییر دهیم.
۱۳. Localization and Internationalization: ممکن است برای مناطق مختلف فرانت اند های مختلفی داشته باشیم در این صورت میتوانیم بک اند را خاص فیچر های آن منطقه سفارشی کنیم.
۱۴. Handling Legacy Systems: در حین گذر از مونولیت به مایکروسرویس BFF مانند پلی بین فرانت اند های جدید برای تعامل با سیستم های legacy عمل میکند.
۱۵. Reduces Bandwidth Usage: اگر فقط داده هایی که برای دستگاه موبایل نیاز است را به آن بفرستیم پهنای باند کمتری مصرف میشود.
۱۶. Error Handling and Resilience: وقتی خطایی وجود دارد ممکن است بخواهیم در Web app و موبایل به نحو متفاوتی آن را مدیریت کنیم.
17. Feature Flagging: می توانیم یه سری فیچر ها را فقط در یک سری از فرانت اند ها داشته باشیم.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How do We Design for High Availability_.pdf
2 MB
#bytebytego #tips #pro_guide
How do We Design for High Availability
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How do We Design for High Availability
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤2🎉1🍾1
How to avoid crawling duplicate URLs at Google scale.pdf
638.8 KB
#bytebytego #tips #pro_guide
How to avoid crawling duplicate URLs at Google scale
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How to avoid crawling duplicate URLs at Google scale
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾4
پاول دورف: اپل با حذف تلگرام از اپ استور، گل بهخودی زد
https://www.zoomit.ir/software-application/419979-telegram-ceo-remove-app-store-china-apple/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
https://www.zoomit.ir/software-application/419979-telegram-ceo-remove-app-store-china-apple/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾8
Forwarded from Gopher Academy (Bardia.go)
🐧 نشست ۱۵ ام جامعه لینوکسی شیراز
🟢 موضوع ارائه : معرفی زبان GO
🐦 ارائه دهنده : محسن بخشنده
🐧 رزومه ارائه دهنده : Golang Backend Develope, DevOps enginee, Cloud Computing
🗓تاریخ : چهارشنبه ۵ ام اردیبهشت ماه
⏰ساعت : ۱۶:۰۰ الی ۱۸:۰۰
📍مکان: بلوار مدرس، بلوار آزادگان، کارخانه نوآوری شیراز طبقه دوم انتهای سالن اتاق آموزشی
حامی برگزاری : کارخانه نوآوری شیراز 🍀
حضور برای عموم رایگان میباشد
⭕️ با توجه به محدودیت های ظرفیت برای شرکت کنندگان و مدل رایگان بودن این رویداد، جهت حفظ ارزش آفرینی عدم حضور شما بعد از ثبتنام به منزله اضافه شدن نام شما به لیست شرکت کنندگان بد قول جامعه های فعال ما خواهد شد و در صورت تکرار مجدد، از حضور در رویدادهای رایگان جامعه لینوکسی شیراز به صورت رایگان محدود خواهید شد.
جهت ثبت نام روی لینک زیر کلیک کنید👇🏻
https://shirazlinuxcommunity.ir/event-15
📍Location
OSM : OpenStreetMap
GoogleMap : GoogleMap
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🟢 موضوع ارائه : معرفی زبان GO
🐦 ارائه دهنده : محسن بخشنده
🐧 رزومه ارائه دهنده : Golang Backend Develope, DevOps enginee, Cloud Computing
🗓تاریخ : چهارشنبه ۵ ام اردیبهشت ماه
⏰ساعت : ۱۶:۰۰ الی ۱۸:۰۰
📍مکان: بلوار مدرس، بلوار آزادگان، کارخانه نوآوری شیراز طبقه دوم انتهای سالن اتاق آموزشی
حامی برگزاری : کارخانه نوآوری شیراز 🍀
حضور برای عموم رایگان میباشد
⭕️ با توجه به محدودیت های ظرفیت برای شرکت کنندگان و مدل رایگان بودن این رویداد، جهت حفظ ارزش آفرینی عدم حضور شما بعد از ثبتنام به منزله اضافه شدن نام شما به لیست شرکت کنندگان بد قول جامعه های فعال ما خواهد شد و در صورت تکرار مجدد، از حضور در رویدادهای رایگان جامعه لینوکسی شیراز به صورت رایگان محدود خواهید شد.
جهت ثبت نام روی لینک زیر کلیک کنید👇🏻
https://shirazlinuxcommunity.ir/event-15
📍Location
OSM : OpenStreetMap
GoogleMap : GoogleMap
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
OpenStreetMap
Way: 502915795
OpenStreetMap is a map of the world, created by people like you and free to use under an open license.
اگر برای محیط توسعه localhost نیاز به HTTPS داشتیدو برای TLS certificateو امضای آن استفاده از mkcert یا local-ssl-proxy یا ... حتی خود openssl براتون سخته
استفاده از anchor lcl یک راه کار ساده است
https://github.com/anchordotdev/cli
#DevTwitter
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
استفاده از anchor lcl یک راه کار ساده است
https://github.com/anchordotdev/cli
#DevTwitter
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
GitHub
GitHub - anchordotdev/cli
Contribute to anchordotdev/cli development by creating an account on GitHub.
در کرنل لینوکس NUMA چیست؟ به زبان ساده
فرض کنید کامپیوتر شما یه خونه آپارتمانیه. توی این خونه چندتا اتاق (گره) هست که هر کدوم تخت خواب (پردازنده) و کمد (حافظه) دارن.
تو معماری معمولی، همه تختها و کمدها توی یه اتاق بزرگ هستن. این میتونه برای کسایی که توی همون اتاق زندگی میکنن (برنامههایی که به حافظه و پردازش زیادی نیاز دارن) خوب باشه، ولی میتونه برای کسایی که توی اتاقهای دیگه زندگی میکنن (برنامههایی که به حافظه و پردازش کمتری نیاز دارن) مشکلساز باشه.
با توجه با این NUMA مثل اینه که یه سری از تختها و کمدها رو به اتاقهای دیگه ببریم. این کار به کسایی که توی همون اتاق زندگی میکنن کمک میکنه که سریعتر به تختها و کمدهاشون دسترسی داشته باشن، بدون اینکه منتظر بمونن بقیه که توی اتاقهای دیگه هستن ازشون استفاده کنن.
مثلا فرض کنید یه برنامه پایگاه داده دارین که به حافظه و پردازش زیادی نیاز داره. تو یه سیستم NUMA میتونین این برنامه رو طوری تنظیم کنین که توی یه گره اجرا بشه که حافظه و پردازندههای بیشتری داره. این کار به برنامه کمک میکنه که سریعتر به اطلاعات و قدرت پردازشی که نیاز داره دسترسی پیدا کنه، و میتونه عملکردش رو خیلی بهتر کنه.
در کل NUMA میتونه سرعت کار رو با کم کردن زمان دسترسی به حافظه، مخصوصاً برای برنامههایی که به حافظه زیاد نیاز دارن، بهتر کنه.
DevTwitter | <Linuxor/>
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
فرض کنید کامپیوتر شما یه خونه آپارتمانیه. توی این خونه چندتا اتاق (گره) هست که هر کدوم تخت خواب (پردازنده) و کمد (حافظه) دارن.
تو معماری معمولی، همه تختها و کمدها توی یه اتاق بزرگ هستن. این میتونه برای کسایی که توی همون اتاق زندگی میکنن (برنامههایی که به حافظه و پردازش زیادی نیاز دارن) خوب باشه، ولی میتونه برای کسایی که توی اتاقهای دیگه زندگی میکنن (برنامههایی که به حافظه و پردازش کمتری نیاز دارن) مشکلساز باشه.
با توجه با این NUMA مثل اینه که یه سری از تختها و کمدها رو به اتاقهای دیگه ببریم. این کار به کسایی که توی همون اتاق زندگی میکنن کمک میکنه که سریعتر به تختها و کمدهاشون دسترسی داشته باشن، بدون اینکه منتظر بمونن بقیه که توی اتاقهای دیگه هستن ازشون استفاده کنن.
مثلا فرض کنید یه برنامه پایگاه داده دارین که به حافظه و پردازش زیادی نیاز داره. تو یه سیستم NUMA میتونین این برنامه رو طوری تنظیم کنین که توی یه گره اجرا بشه که حافظه و پردازندههای بیشتری داره. این کار به برنامه کمک میکنه که سریعتر به اطلاعات و قدرت پردازشی که نیاز داره دسترسی پیدا کنه، و میتونه عملکردش رو خیلی بهتر کنه.
در کل NUMA میتونه سرعت کار رو با کم کردن زمان دسترسی به حافظه، مخصوصاً برای برنامههایی که به حافظه زیاد نیاز دارن، بهتر کنه.
DevTwitter | <Linuxor/>
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤6 4 3
How to Choose a Message Queue_ - ByteByteGo Newsletter.pdf
2.6 MB
#bytebytego #tips #pro_guide
How to Choose a Message Queue
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How to Choose a Message Queue
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
✍️Afshin HadigolAfshin Hadigol
هِلم یا Helm نجات دهنده شما در Kubernetes !
اگر یه app کوچیک داری و میخوای توی کوبرنتیز deploy کنی kubectl کارتو راه میندازه ولی اگر app یکم بزرگتر بشه دیگه kubectl کارتو راه نمیندازه که هیچ دردسرم میشه برات.🤯
امروز میخوام بگم چرا helm یه ابزاریه که اگر ازش استفاده نکنی علاوه بر این که هرسری که deploy انجام میدی چند ساعت از تایمت رو میریزی تو جوب، ممکنه خطای انسانیم زیاد رخ بده. ⏳
با این سوال شروع کنیم که helm چی هست کلا؟🤔
یه ابزار مدیریت پکیج برای Kubernetes هست که به شما کمک میکنه تا برنامههای Kubernetes رو به طور سادهتر نصب، مدیریت و ارتقا بدید.
حالا سوال بعدی Helm چیکار میکنه و چرا خوبه که از helm استفاده بشه؟
🟢 برنامه های Kubernetes رو به بسته هایی که امکان استفاده دوباره داره تبدیل میکنه و اسمش رو هم میذاره charts. این charts ها فرایند نصب، ارتقا، و مدیریت برنامه هارو ساده میکنن. (ممکنه که برات سوال شده باشه که helm chart چی هست حالا؟ helm chart یه بستهبندی از تمام فایلهای لازم برای نصب و راه اندازی برنامههای Kubernetes هست)
🟢 توی فرایندهای خودکارسازی CICD خیلی دستتو میگیره و سرعتتو بالا میبره.
همینطور که گفتم helm chart برای اینه که :
🔵بتونیم برنامه هارو بسته بندی کنیم و توی k8s راه اندازیش کنیم.
🔵 اجازه میده charts هایی که ایجاد کردی رو version بزنی و بین ورژن های مختلف جابه جا بشی.
🔵 میتونی charts هایی که نوشتی رو توی hub که helm درست کرده بذاری و با بقیه به اشتراک بذاریش، یا از charts هایی که قبلا نوشته شده و تو hub قرار داره استفاده کنی.
درواقع charts از یکسری فایل و directory تشکیل شده که هرکدوم برای چیز خاصی درنظر گرفته شدن:⬇️
🟡 ستون فقرات هلم چارت chart.yaml هست و دیتاهایی مثل نام، ورژن، یه سری توضیحات و dependency توی خودش ذخیره میکنه.
🟡 مقدارهای پیشفرضمون رو توی فایل values.yaml تعریف میکنیم و template هارو باهاش مقداردهی میکنیم.
🟡 یه دایرکتوری داریم به اسم template که از یه سری فایل template نگه داری میکنه مثل pods یا deployment که مقداردهی نشدن و با استفاده از متغییرهایی که تویvalues.yaml هستن مقداردهی میشن. ⚙️
✅ نکته : فایل ها و directoryهای دیگه اییم هستن که من ننوشتم، برای مطالعه ی بیشتر حتما به سایتش یه سر بزنین: https://lnkd.in/dhDdKC2x
شماهم اگر ابزاری بهتر از helm میشناسین حتما معرفی کنید، دمتون گرم 🔥
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
هِلم یا Helm نجات دهنده شما در Kubernetes !
اگر یه app کوچیک داری و میخوای توی کوبرنتیز deploy کنی kubectl کارتو راه میندازه ولی اگر app یکم بزرگتر بشه دیگه kubectl کارتو راه نمیندازه که هیچ دردسرم میشه برات.🤯
امروز میخوام بگم چرا helm یه ابزاریه که اگر ازش استفاده نکنی علاوه بر این که هرسری که deploy انجام میدی چند ساعت از تایمت رو میریزی تو جوب، ممکنه خطای انسانیم زیاد رخ بده. ⏳
با این سوال شروع کنیم که helm چی هست کلا؟🤔
یه ابزار مدیریت پکیج برای Kubernetes هست که به شما کمک میکنه تا برنامههای Kubernetes رو به طور سادهتر نصب، مدیریت و ارتقا بدید.
حالا سوال بعدی Helm چیکار میکنه و چرا خوبه که از helm استفاده بشه؟
🟢 برنامه های Kubernetes رو به بسته هایی که امکان استفاده دوباره داره تبدیل میکنه و اسمش رو هم میذاره charts. این charts ها فرایند نصب، ارتقا، و مدیریت برنامه هارو ساده میکنن. (ممکنه که برات سوال شده باشه که helm chart چی هست حالا؟ helm chart یه بستهبندی از تمام فایلهای لازم برای نصب و راه اندازی برنامههای Kubernetes هست)
🟢 توی فرایندهای خودکارسازی CICD خیلی دستتو میگیره و سرعتتو بالا میبره.
همینطور که گفتم helm chart برای اینه که :
🔵بتونیم برنامه هارو بسته بندی کنیم و توی k8s راه اندازیش کنیم.
🔵 اجازه میده charts هایی که ایجاد کردی رو version بزنی و بین ورژن های مختلف جابه جا بشی.
🔵 میتونی charts هایی که نوشتی رو توی hub که helm درست کرده بذاری و با بقیه به اشتراک بذاریش، یا از charts هایی که قبلا نوشته شده و تو hub قرار داره استفاده کنی.
درواقع charts از یکسری فایل و directory تشکیل شده که هرکدوم برای چیز خاصی درنظر گرفته شدن:⬇️
🟡 ستون فقرات هلم چارت chart.yaml هست و دیتاهایی مثل نام، ورژن، یه سری توضیحات و dependency توی خودش ذخیره میکنه.
🟡 مقدارهای پیشفرضمون رو توی فایل values.yaml تعریف میکنیم و template هارو باهاش مقداردهی میکنیم.
🟡 یه دایرکتوری داریم به اسم template که از یه سری فایل template نگه داری میکنه مثل pods یا deployment که مقداردهی نشدن و با استفاده از متغییرهایی که تویvalues.yaml هستن مقداردهی میشن. ⚙️
✅ نکته : فایل ها و directoryهای دیگه اییم هستن که من ننوشتم، برای مطالعه ی بیشتر حتما به سایتش یه سر بزنین: https://lnkd.in/dhDdKC2x
شماهم اگر ابزاری بهتر از helm میشناسین حتما معرفی کنید، دمتون گرم 🔥
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How to Choose a Replication Strategy.pdf
1.6 MB
#bytebytego #tips #pro_guide
How to Choose a Replication Strategy
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How to Choose a Replication Strategy
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍3 3
متاسفانه من الان خبر دار شدم Hashi Corp توسط IBM خریداری شده. و یعنی احتمالا محصولات اوپن سورسشون قرار هست کلوز سورس بشه.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍2🕊2🍾2
What Happens When a SQL is Executed_.pdf
963.4 KB
#bytebytego #tips #pro_guide
What Happens When a SQL is Executed?
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
What Happens When a SQL is Executed?
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾5👍1
Gopher Academy
Top 8 Cache Eviction Strategies. 👇👇👇👇👇 ➖➖➖➖➖➖➖➖ 🕊 @gopher_academy | @GolangEngineers
op 8 Cache Eviction Strategies.
.
.
🔹 LRU (Least Recently Used)
LRU eviction strategy removes the least recently accessed items first. This approach is based on the principle that items accessed recently are more likely to be accessed again in the near future.
🔹 MRU (Most Recently Used)
Contrary to LRU, the MRU algorithm removes the most recently used items first. This strategy can be useful in scenarios where the most recently accessed items are less likely to be accessed again soon.
🔹 SLRU (Segmented LRU)
SLRU divides the cache into two segments: a probationary segment and a protected segment. New items are initially placed into the probationary segment. If an item in the probationary segment is accessed again, it is promoted to the protected segment.
🔹 LFU (Least Frequently Used)
LFU algorithm evicts the items with the lowest access frequency.
🔹 FIFO (First In First Out)
FIFO is one of the simplest caching strategies, where the cache behaves in a queue-like manner, evicting the oldest items first, regardless of their access patterns or frequency.
🔹 TTL (Time-to-Live)
While not strictly an eviction algorithm, TTL is a strategy where each cache item is given a specific lifespan.
🔹 Two-Tiered Caching
In Two-Tiered Caching strategy, we use an in-memory cache for the first layer and a distributed cache for the second layer.
🔹 RR (Random Replacement)
Random Replacement algorithm randomly selects a cache item and evicts it to make space for new items. This method is also simple to implement and does not require tracking access patterns or frequencies.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
.
.
🔹 LRU (Least Recently Used)
LRU eviction strategy removes the least recently accessed items first. This approach is based on the principle that items accessed recently are more likely to be accessed again in the near future.
🔹 MRU (Most Recently Used)
Contrary to LRU, the MRU algorithm removes the most recently used items first. This strategy can be useful in scenarios where the most recently accessed items are less likely to be accessed again soon.
🔹 SLRU (Segmented LRU)
SLRU divides the cache into two segments: a probationary segment and a protected segment. New items are initially placed into the probationary segment. If an item in the probationary segment is accessed again, it is promoted to the protected segment.
🔹 LFU (Least Frequently Used)
LFU algorithm evicts the items with the lowest access frequency.
🔹 FIFO (First In First Out)
FIFO is one of the simplest caching strategies, where the cache behaves in a queue-like manner, evicting the oldest items first, regardless of their access patterns or frequency.
🔹 TTL (Time-to-Live)
While not strictly an eviction algorithm, TTL is a strategy where each cache item is given a specific lifespan.
🔹 Two-Tiered Caching
In Two-Tiered Caching strategy, we use an in-memory cache for the first layer and a distributed cache for the second layer.
🔹 RR (Random Replacement)
Random Replacement algorithm randomly selects a cache item and evicts it to make space for new items. This method is also simple to implement and does not require tracking access patterns or frequencies.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾5👍2
هکاتون The Open League
▪️بنیاد TON هکاتون The Open League را راهاندازی کرد: مسیری سریع برای ورود به Open League با بیش از 150 میلیون دلار پاداش و مشوقهای مختلف برای کاربران.
▪️هکاتون از آوریل تا ژوئن اجرا میشود و صندوق جایزهی آن 2 میلیون دلار است.
▪️شرکتکنندگان اپلیکیشن و موارد استفاده جدید را برای دنیای Web3 شامل GameFi و شبکههای اجتماعی Web3 و DeFi و تجارت الکترونیک در TON و Telegram میسازند.
چرا در این هکاتون شرکت کنیم؟
▪️صندوق جایزهی 2 میلیون دلاری.
▪️مسیری سریع برای شرکت در The Open League با حمایت 50،000 Toncoin جهت تقویت استخر نقدینگی توکن شما.
▪️بهترین پروژهها میتوانند از صندوق 500،000$ ارائه شده توسط TON Ventures کمک مالی دریافت کنند.
▪️فرصتی برای ملاقات با اعضای بنیاد TON و مدیران صندوقهای سرمایهگذاری خطرپذیر در TON در طول Gateway در شهر دبی.
پروژههای شرکتکننده در فصل آزمایشی Open League شاهد رشد سه رقمی در تعداد کاربران فعال، هولدرهای توکنها، ارزش بازار و حجم معاملات در صرافیهای غیرمتمرکز TON بودهاند. این در حالیست که تنها 1 میلیون Toncoin پاداش برای فصل آزمایشی در نظر گرفته شده بود. در فصل آینده، جوایز 30 برابر افزایش خواهند داشت: 30 میلیون Toncoin پاداش برای 3 ماه.
شما و تیمتان میتوانید در رقابت با دیگران برنده شوید؟ وقت سازندگی در TON فرا رسیده!
همین الان ثبت نام کنید!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
▪️بنیاد TON هکاتون The Open League را راهاندازی کرد: مسیری سریع برای ورود به Open League با بیش از 150 میلیون دلار پاداش و مشوقهای مختلف برای کاربران.
▪️هکاتون از آوریل تا ژوئن اجرا میشود و صندوق جایزهی آن 2 میلیون دلار است.
▪️شرکتکنندگان اپلیکیشن و موارد استفاده جدید را برای دنیای Web3 شامل GameFi و شبکههای اجتماعی Web3 و DeFi و تجارت الکترونیک در TON و Telegram میسازند.
چرا در این هکاتون شرکت کنیم؟
▪️صندوق جایزهی 2 میلیون دلاری.
▪️مسیری سریع برای شرکت در The Open League با حمایت 50،000 Toncoin جهت تقویت استخر نقدینگی توکن شما.
▪️بهترین پروژهها میتوانند از صندوق 500،000$ ارائه شده توسط TON Ventures کمک مالی دریافت کنند.
▪️فرصتی برای ملاقات با اعضای بنیاد TON و مدیران صندوقهای سرمایهگذاری خطرپذیر در TON در طول Gateway در شهر دبی.
پروژههای شرکتکننده در فصل آزمایشی Open League شاهد رشد سه رقمی در تعداد کاربران فعال، هولدرهای توکنها، ارزش بازار و حجم معاملات در صرافیهای غیرمتمرکز TON بودهاند. این در حالیست که تنها 1 میلیون Toncoin پاداش برای فصل آزمایشی در نظر گرفته شده بود. در فصل آینده، جوایز 30 برابر افزایش خواهند داشت: 30 میلیون Toncoin پاداش برای 3 ماه.
شما و تیمتان میتوانید در رقابت با دیگران برنده شوید؟ وقت سازندگی در TON فرا رسیده!
همین الان ثبت نام کنید!
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾3
https://github.com/microsoft/MS-DOS
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - microsoft/MS-DOS: The original sources of MS-DOS 1.25, 2.0, and 4.0 for reference purposes
The original sources of MS-DOS 1.25, 2.0, and 4.0 for reference purposes - microsoft/MS-DOS
👍9❤1