کتاب صوتی استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ
استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ آیا میخواهید قدرت واقعی زبا...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ
موضوع کلی: برنامهنویسی همزمان و موازی
موضوع میانی: اصول و الگوهای همزمانی در جاوا
📋 سرفصلهای دوره
- 1. مقدمهای بر همزمانی: چرا و چگونه؟
- 2. تفاوت همزمانی (Concurrency) و موازیکاری (Parallelism)
- 3. فرآیندها و نخها (Threads) در جاوا
- 4. ایجاد و مدیریت نخها: کلاس Thread و رابط Runnable
- 5. چرخه حیات یک نخ: New, Runnable, Blocked, Waiting, Timed_Waiting, Terminated
- 6. خطرات همزمانی: آشنایی با ایمنی نخ (Thread Safety)
- 7. مفهوم رقابت (Race Condition) و مثالهای عملی
- 8. اتمیسیته (Atomicity): عملیات تجزیهناپذیر
- 9. مشکلات رویتپذیری (Visibility) در حافظه مشترک
- 10. مشکلات ترتیبدهی مجدد (Reordering) توسط کامپایلر و CPU
- 11. قفلگذاری ذاتی (Intrinsic Locking): کلمه کلیدی synchronized
- 12. استفاده از synchronized روی متدها
- 13. استفاده از بلاکهای synchronized و انتخاب مانیتور قفل
- 14. مفهوم Reentrancy در قفلهای ذاتی جاوا
- 15. کلمه کلیدی volatile و تضمین رویتپذیری
- 16. رابطه happens-before و نقش volatile
- 17. ارتباط volatile با اتمیسیته: چه چیزی را تضمین نمیکند؟
- 18. استراتژیهای ایمنی نخ: محصورسازی، تغییرناپذیری و محبوسسازی
- 19. طراحی کلاسهای تغییرناپذیر (Immutable Objects)
- 20. نقش کلیدی کلمه final در ساخت آبجکتهای تغییرناپذیر
- 21. محبوسسازی نخ (Thread Confinement)
- 22. استفاده از Ad-hoc confinement و Stack confinement
- 23. کلاس ThreadLocal برای محبوسسازی نخ
- 24. انتشار و اشتراکگذاری ایمن آبجکتها
- 25. اشتراکگذاری آبجکتهای تغییرپذیر: راهکارهای ایمن
- 26. تفویض ایمنی نخ (Delegating Thread Safety)
- 27. ترکیب آبجکتهای ایمن از نظر نخ
- 28. مستندسازی سیاستهای همزمانی
- 29. کالکشنهای همزمان: Vector و Hashtable و مشکلات آنها
- 30. کالکشنهای همزمان: استفاده از های synchronized
- 31. معرفی پکیج java.util.concurrent
- 32. رابط ConcurrentMap و پیادهسازی ConcurrentHashMap
- 33. عملکرد و ساختار داخلی ConcurrentHashMap
- 34. کلاس CopyOnWriteArrayList و موارد استفاده آن
- 35. کلاس CopyOnWriteArraySet
- 36. صفهای مسدودکننده (Blocking Queues) و الگوی تولیدکننده-مصرفکننده
- 37. انواع BlockingQueue: ArrayBlockingQueue و LinkedBlockingQueue
- 38. صفهای اولویتدار و تاخیردار: PriorityBlockingQueue و DelayQueue
- 39. استفاده از Deque و BlockingDeque
- 40. چرا از نخها به صورت مستقیم استفاده نکنیم؟
- 41. معرفی چارچوب Executor
- 42. رابط Executor و ExecutorService
- 43. کارخانه Executors: ساخت انواع استخر نخ (Thread Pool)
- 44. چرخه حیات یک ExecutorService: Running, Shutting down, Terminated
- 45. الگوهای خاموش کردن ایمن استخر نخها
- 46. رابطهای Callable و Future: دریافت نتایج از وظایف
- 47. مدیریت استثناها در وظایف اجرا شده توسط Executor
- 48. مفهوم و کاربرد Future.get() و مدیریت Timeout
- 49. کلاس FutureTask
- 50. مفهوم CompletionService: مدیریت نتایج وظایف نامتقارن
- 51. پیکربندی ThreadPoolExecutor: corePoolSize, maximumPoolSize
- 52. پیکربندی ThreadPoolExecutor: keepAliveTime, workQueue
- 53. سیاستهای اشباع (Saturation Policies) در ThreadPoolExecutor
- 54. کلاس ScheduledExecutorService برای زمانبندی وظایف
- 55. همزمانی در برنامههای گرافیکی (Swing و JavaFX)
- 56. نخ توزیع رویداد (Event Dispatch Thread)
- 57. مفهوم بنبست (Deadlock)
- 58. شرایط لازم برای وقوع بنبست
- 59. شناسایی و جلوگیری از بنبست
- 60. بنبست قفل پویا (Dynamic lock order deadlock)
- 61. راهکارهایی برای اجتناب از بنبست
- 62. قفل گرسنه (Livelock) و گرسنگی (Starvation)
- 63. هماهنگی بین نخها: wait, notify, و notifyAll
- 64. مشکلات رایج در استفاده از wait/notify: Spurious Wakeups
- 65. ابزارهای هماهنگساز (Synchronizers): Latches
- 66. استفاده از CountDownLatch برای هماهنگی شروع و پایان
- 67. ابزارهای هماهنگساز (Synchronizers): Barriers
- 68. استفاده از CyclicBarrier برای همگامسازی گروهی از نخها
- 69. ابزارهای هماهنگساز (Synchronizers): Semaphores
- 70. کنترل دسترسی به منابع با Semaphore
- 71. ابزارهای هماهنگساز (Synchronizers): Exchanger
- 72. لغو و توقف وظایف
- 73. مدیریت وقفهها (Interruption) و InterruptedException
- 74. پیادهسازی وظایف قابل لغو
- 75. الگوهای خاموش کردن سرویسها و وظایف
- 76. مدل حافظه جاوا (Java Memory Model - JMM)
- 77. رابطه "قبل-رخدادن" (Happens-Before Relationship)
- 78. انتشار ایمن (Safe Publication) و الگوهای آن
- 79. الگوی Double-Checked Locking و مشکلات آن
- 80. قفلهای صریح: رابط Lock
- 81. کلاس ReentrantLock و قابلیتهای پیشرفته آن
- 82. قفلهای منصفانه و ناعادلانه (Fair vs. Unfair Locks)
- 83. استفاده از Condition برای هماهنگی پیشرفته
- 84. مقایسه Condition با wait/notify
- 85. قفلهای خواندن-نوشتن: ReadWriteLock و ReentrantReadWriteLock
- 86. کلاس StampedLock و قفلگذاری خوشبینانه
- 87. کلاسهای اتمیک: پکیج java.util.concurrent.atomic
- 88. عملیات مقایسه و تعویض (Compare-And-Swap - CAS)
- 89. الگوریتمهای غیرمسدودکننده (Non-blocking Algorithms)
- 90. پیادهسازی یک شمارنده غیرمسدودکننده
- 91. اندازهگیری و تنظیم عملکرد همزمانی
- 92. قانون آمدال (Amdahl's Law) و تاثیر آن بر مقیاسپذیری
- 93. کاهش رقابت بر سر قفل (Lock Contention)
- 94. تکنیکهای کاهش رقابت: Lock Splitting و Lock Striping
- 95. تست واحدهای همزمان
- 96. تست ایمنی (Safety) و زنده بودن (Liveness)
- 97. ابزارهای تست: استرس تست و تحلیل پروفایل
- 98. چارچوب Fork/Join
- 99. کلاسهای RecursiveTask و RecursiveAction
- 100. استریمهای موازی (Parallel Streams)
برای آموختن، همیشه لازم نیست بخوانید
گاهی بهترین فرصت یادگیری زمانی است که در مسیر رفتوآمد هستید، قدم میزنید، استراحت میکنید یا کارهای روزمرهتان را انجام میدهید. محتوای صوتی کمک میکند از این لحظهها برای شنیدن، اندیشیدن و آشنایی با موضوعات تازه بهره ببرید.
◷
یادگیری در دل روزمرگی
از زمان رفتوآمد، پیادهروی یا استراحت برای شنیدن محتوای مفید استفاده کنید؛ بدون آنکه همیشه به کتاب چاپی یا صفحه نمایش نیاز داشته باشید.
◎
تجربهای شنیداری و دلنشین
با روایت صوتی، توضیحات گفتاری و فضای شنیداری هر محتوا همراه شوید و متناسب با سلیقه خود، شیوه تازهای برای دریافت مطالب تجربه کنید.
✦
گسترش دانش و دیدگاه
با موضوعات متنوع آشنا شوید، ایدههای تازه کشف کنید و فرصت بیشتری برای یادگیری مستمر و پرورش کنجکاوی خود بسازید.
♫
همراه با سبک زندگی شما
محتوای صوتی را متناسب با برنامه روزانه خود انتخاب کنید و در زمان مناسب، شنیدن را به بخشی از عادتهای شخصیتان تبدیل کنید.
کتاب صوتی یا پادکست؟
کتاب صوتی
راهی برای همراه شدن با محتوای یک کتاب از طریق شنیدن. بسته به اثر، میتوانید داستانها، آموزشها، مفاهیم تخصصی یا مطالب کاربردی را در قالب روایت و بیان صوتی دنبال کنید.
مناسب برای شنیدن و مرور محتوای کتابها
پادکست آموزشی
فرصتی برای دنبال کردن موضوعات مشخص در قالب گفتوگو، روایت، توضیح آموزشی یا مجموعهای از قسمتهای صوتی؛ مناسب برای کشف ایدهها و آشنایی با دیدگاههای گوناگون.
مناسب برای یادگیری موضوعی و شنیدن دیدگاههای تازه
هر جا که هستید، شنیدن را آغاز کنید
با دستگاه مناسب خود، محتوای صوتی را به آسانی دنبال کنید.
▯
گوشی هوشمند
اندروید و آیفون
▣
تبلت
برای شنیدن و دنبال کردن محتوا
▤
رایانه و لپتاپ
با پخشکننده صوتی سازگار
♫
هدفون و بلندگو
برای شنیدن متناسب با محیط
چطور از تجربه شنیدن بیشتر بهره ببریم؟
✦ زمان مناسبی برای شنیدن انتخاب کنید؛ زمانی که بتوانید با آرامش به محتوا توجه داشته باشید.
✦ برای مطالب آموزشی، نکتههای مهم را یادداشت کنید یا پس از پایان شنیدن، آنها را مرور کنید.
✦ اگر محتوا طولانی است، آن را در چند نوبت دنبال کنید تا فرصت بیشتری برای درک و مرور داشته باشید.
✦ هنگام رانندگی یا انجام کارهای نیازمند تمرکز، ایمنی را در اولویت قرار دهید و از شیوه شنیدنی استفاده کنید که حواس شما را مختل نکند.
هر شنیدن، فرصتی برای کشف است
با کتابهای صوتی و پادکستهای آموزشی، دنیای تازهای از ایدهها، روایتها و آموختنیها را به لحظههای خود اضافه کنید.
express24.ir
امکانات پخش، ادامه شنیدن و دسترسی آفلاین به نوع فایل، دستگاه و نرمافزار مورد استفاده بستگی دارد.
تگها:
Concurrency
Java
Java concurrency in Practice
Multithreading
Parallel Computing
Programming
آموزش جاوا
اپلیکیشن
اصول
الگوها
ایمنی
برنامه نویسی همزمان
برنامهنویسی موازی
مقیاسپذیری
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.