اپلیکیشن اندرویدی فلشکارت آموزشی بهینه سازی کد و عملکرد برنامه ها در کاتلین
📚 کتاب آموزشی جامع
📚 اطلاعات کتاب
عنوان کتاب: کتاب بهینه سازی کد و عملکرد برنامه ها در کاتلین
موضوع کلی: برنامه نویسی
موضوع میانی: کاتلین (Kotlin)
📋 سرفصلهای کتاب (100 موضوع)
- 1. مقدمه: چرا بهینه سازی عملکرد مهم است؟
- 2. اصول اندازه گیری عملکرد: معیارها و ابزارها
- 3. آشنایی با ماشین مجازی جاوا (JVM) برای توسعه دهندگان کاتلین
- 4. فرایند کامپایل کاتلین: از کد منبع تا بایتکد
- 5. راه اندازی محیط توسعه برای پروفایلینگ و بنچمارکینگ
- 6. شناسایی گلوگاه ها (Bottlenecks): اولین قدم در بهینه سازی
- 7. معرفی ابزارهای پروفایلینگ: VisualVM و Android Studio Profiler
- 8. اصول بنچمارکینگ: معرفی کتابخانه JMH
- 9. الگوهای ضد عملکرد (Anti-Patterns) رایج در کاتلین
- 10. تفکر الگوریتمیک: تاثیر انتخاب الگوریتم بر عملکرد
- 11. متغیرها و انواع داده: `val` در برابر `var`
- 12. بهینه سازی با انواع داده اولیه (Primitives) در برابر انواع پوششی (Boxed Types)
- 13. تاثیر استنتاج نوع (Type Inference) بر عملکرد
- 14. ساختارهای کنترلی: بهینه سازی `when` در برابر زنجیره `if-else`
- 15. بهینه سازی حلقه ها: `for`, `while` و `forEach`
- 16. توابع درون خطی (Inline Functions): کاهش سربار فراخوانی تابع
- 17. درک `noinline` و `crossinline`
- 18. بهینه سازی با بازگشت دمی (Tail Recursion) با کلمه کلیدی `tailrec`
- 19. هزینه آرگومان های پیش فرض و توابع با آرگومان متغیر (`vararg`)
- 20. بهینه سازی ایمنی در برابر نال: هزینه انواع نال پذیر (Nullable Types)
- 21. اپراتورهای ایمن (`?.`) و اپراتور (`!!`): تاثیر بر عملکرد
- 22. استفاده بهینه از توابع حوزه (Scope Functions): `let`, `run`, `apply`, `also`, `with`
- 23. کلاس ها در برابر کلاس های داده (Data Classes): سربار و مزایا
- 24. کلاس های مقدار (Value Classes): انتزاع بدون هزینه
- 25. بهینه سازی با اشیاء (Objects) و الگوهای Singleton
- 26. وراثت در برابر ترکیب (Composition): مبادلات عملکردی
- 27. کلاس های مهر و موم شده (Sealed Classes) برای مدیریت بهینه وضعیت
- 28. هزینه ایجاد اشیاء ناشناس (Anonymous Objects)
- 29. لامبداها و سربار حافظه: مشکل کپچر کردن متغیرها (Capturing)
- 30. ارجاع به توابع (Function References) در برابر لامبداها
- 31. هزینه سربارگذاری عملگرها (Operator Overloading)
- 32. مدیریت استثناها: هزینه `try-catch`
- 33. رشته ها: `String` در برابر `StringBuilder` برای الحاق کارآمد
- 34. درک استخر رشته ها (String Pool) و متد `intern()`
- 35. بهینه سازی کار با عبارات منظم (Regular Expressions)
- 36. مقدمه ای بر مجموعه ها (Collections): انتخاب ساختار داده مناسب
- 37. لیست ها، ست ها و نقشه ها: ویژگی های عملکردی هر کدام
- 38. مجموعه های خواندنی (Read-only) در برابر مجموعه های قابل تغییر (Mutable)
- 39. آرایه ها (`Array`) در برابر لیست ها (`List`): چه زمانی از کدام استفاده کنیم؟
- 40. بهینه سازی با آرایه های نوع اولیه (`IntArray`, `FloatArray`, ...)
- 41. دنباله ها (Sequences): پردازش تنبل برای مجموعه های بزرگ
- 42. تفاوت عملکردی `Iterable` و `Sequence`
- 43. بهینه سازی عملیات زنجیره ای روی مجموعه ها: `map`, `filter`, `reduce`
- 44. اجتناب از ایجاد مجموعه های موقتی و غیر ضروری
- 45. استفاده از `ArrayDeque` برای پیاده سازی کارآمد صف و پشته
- 46. مقایسه عملکرد Stream API جاوا با توابع مجموعه کاتلین
- 47. استراتژی های پیش تخصیص (Pre-allocation) برای مجموعه ها
- 48. درک پیچیدگی زمانی (Big O) عملیات رایج مجموعه ها
- 49. بهینه سازی تکرار روی نقشه ها (`Map`)
- 50. انتخاب پیاده سازی مناسب: `HashMap` در برابر `LinkedHashMap`
- 51. مقدمه ای بر همروندی: تفاوت Thread و Coroutine
- 52. راه اندازی اولین Coroutine: `launch`, `async`, `runBlocking`
- 53. Dispatcher ها: انتخاب نخ مناسب برای اجرای وظایف (`IO`, `Default`, `Main`)
- 54. همروندی ساختاریافته: `CoroutineScope` و مدیریت چرخه حیات
- 55. مدیریت خطا در همروندی ساختاریافته با `SupervisorJob`
- 56. توابع تعلیق شونده (Suspending Functions): عملکرد داخلی و ماشین حالت
- 57. بهینه سازی با `withContext` برای جابجایی بین Dispatcher ها
- 58. مقدمه ای بر Flow: جریان های داده سرد و ناهمزمان
- 59. عملیات میانی در Flow: `map`, `filter`, `onEach`
- 60. عملیات پایانی در Flow: `collect`, `first`, `toList`
- 61. `StateFlow` و `SharedFlow`: مدیریت وضعیت و رویدادها
- 62. مدیریت فشار معکوس (Backpressure) در Flow
- 63. کانال ها (Channels): ارتباط بین Coroutine ها
- 64. همگام سازی در Coroutine ها: `Mutex` و `Semaphore`
- 65. استفاده از انواع داده اتمیک (`Atomic`) برای همروندی بدون قفل
- 66. الگوهای رایج ضد عملکرد در Coroutine ها
- 67. شناسایی و جلوگیری از نشت حافظه (Leak) در Coroutine ها
- 68. پروفایلینگ و دیباگ کردن Coroutine ها
- 69. ایجاد Dispatcher های سفارشی و مدیریت Thread Pool
- 70. مقایسه عملکرد Coroutine ها با RxJava
- 71. مدل حافظه JVM: پشته (Stack) و هیپ (Heap)
- 72. آشنایی با زباله روب (Garbage Collector) و تاثیر آن بر عملکرد
- 73. کاهش تخصیص اشیاء برای به حداقل رساندن چرخه های GC
- 74. شناسایی و رفع نشت حافظه در برنامه های کاتلین و اندروید
- 75. استفاده از مراجع ضعیف (`WeakReference`) برای جلوگیری از نشت حافظه
- 76. مراجع نرم (`SoftReference`) و فانتوم (`PhantomReference`)
- 77. هزینه Boxing و Unboxing: تبدیل خودکار بین انواع اولیه و پوششی
- 78. تحلیل فرار (Escape Analysis) و بهینه سازی های JVM
- 79. خواندن و تحلیل بایتکد کاتلین با `javap`
- 80. کامپایل درجا (JIT) و تاثیر آن بر گرم شدن برنامه
- 81. تاثیر فیلدهای `const` و `JvmField` بر عملکرد
- 82. بهینه سازی بلوک های `init` و `companion object`
- 83. استراتژی های کش کردن (Caching) و یادآوری (Memoization)
- 84. فشرده سازی و بهینه سازی زمان بارگذاری کلاس ها
- 85. درک و بهینه سازی سربار شمارش مرجع در Kotlin/Native
- 86. بنچمارکینگ پیشرفته با JMH: حالت ها، فورک ها و گرم کردن
- 87. استفاده از پروفایلر حافظه برای تحلیل تخصیص ها
- 88. استفاده از پروفایلر CPU برای یافتن متدهای پرهزینه
- 89. کوچک سازی و بهینه سازی کد با R8 و ProGuard
- 90. هزینه بازتاب (Reflection) و یافتن جایگزین های بهینه
- 91. بررسی عملکردی پروپرتی های محول شده (Delegated Properties) مانند `lazy`
- 92. بهینه سازی زمان ساخت (Build Time): KAPT در برابر KSP
- 93. استفاده از کد نیتیو (JNI) برای وظایف محاسباتی سنگین
- 94. بهینه سازی های مخصوص اندروید: تورم لایه ها (Layout Inflation)
- 95. بهینه سازی عملکرد `RecyclerView`
- 96. مدیریت چرخه حیات و حافظه با `ViewModel` و `LiveData`
- 97. بهینه سازی پردازش تصویر و عملیات بیتی
- 98. مطالعه موردی: بهینه سازی یک برنامه واقعی از ابتدا تا انتها
- 99. ایجاد یک چک لیست بهینه سازی عملکرد برای پروژه های کاتلین
- 100. جمع بندی و نگاهی به آینده بهینه سازی در اکوسیستم کاتلین
این اپلیکیشن فارسی برای یادگیری و مرور محتوای آموزشی از طریق فلشکارت طراحی شده است. کارتها را یکییکی مرور کنید، پاسخ پرسشها را به یاد بیاورید و نتیجه هر پاسخ را ثبت کنید. محتوای دوره پس از نصب درون برنامه در دسترس است تا برای مطالعه روزمره معمولاً به اتصال مداوم اینترنت نیاز نداشته باشید.
محتوای آموزشی در قالبهای متنوع ارائه میشود تا هم برای یادگیری مفاهیم جدید و هم برای تثبیت آموختهها قابل استفاده باشد.
- رابط کاربری فارسی و راستچین با فونت وزیر.
- تم روشن و تیره مطابق تنظیمات سیستم.
- صفحهبندی ساده برای انتخاب دوره و شروع مرور.
- نمایش تعداد دفعات مرور هر فصل.
- انتخاب چند فصل برای مرور همزمان.
- امکان تمرکز بر فصلهایی که هنوز مرور نشدهاند.
این اپلیکیشن برای دانشآموزان، دانشجویان، داوطلبان آزمونها و علاقهمندان به یادگیری طراحی شده است؛ بهویژه کسانی که میخواهند مطالب آموزشی را در زمانهای کوتاه مرور کنند، دانستههای خود را بسنجند و مطالعه منظمتری داشته باشند.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.