نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیویی برای نمایش وجود ندارد.
توضیحات دوره:
موازی بودن یک ویژگی شگفت انگیز است که توسط Stream API در جاوا 8 آورده شده است. در این دوره ، شما خواهید آموخت که چگونه جریان های موازی زیر هود کار می کنند ، چگونه از آنها برای بهبود عملکرد برنامه های خود استفاده کنید و چه زمانی از آنها جلوگیری کنید. همراه با اجرای الگوریتم کاهش نقشه/فیلتر ، API جریان یک ویژگی شگفت انگیز را به ارمغان می آورد: امکان انجام پردازش داده های شما به طور موازی. موازی رفتن به سادگی فراخوانی یک روش موازی () است ، کاری که بسیاری از توسعه دهندگان وسوسه می شوند آن را انجام دهند. در این دوره ، با استفاده از جریان های موازی اهرمی برای پردازش سریع داده ها در جاوا ، خواهید آموخت که در زیر هود چه اتفاقی می افتد ، و چگونه موازی کاری در API جریان پیاده سازی شده است. اول ، خواهید دید که موازی رفتن ممکن است عملکرد محاسبات شما را بسیار بهبود بخشد ، اما همچنین ممکن است برنامه شما را خراب کند. در مرحله بعدی ، شما خواهید فهمید که چگونه همه چیز در حال کار است ، و به شما کلیدهای لازم برای تصمیم گیری در مورد موازی بودن و دور ماندن از آن را می دهد. سرانجام ، شرایطی را تحلیل خواهید کرد که همه چیز مطابق انتظار رفتار نمی کنند. با پایان این دوره ، شما درک بهتری از موازی کاری را به دست می آورید: یک موضوع پیچیده که می توانید با ایده های ساده درک کنید ، بنابراین می توانید بلافاصله از آنچه یاد می گیرید استفاده کنید.
سرفصل ها و درس ها
بررسی اجمالی دوره
Course Overview
-
بررسی اجمالی دوره
Course Overview
معرفی موازی سازی در Java Stream API
Introducing Parallelism in the Java Stream API
-
معرفی دوره ها و جریان های موازی
Introducing the Course and Parallel Streams
-
چه چیزی می خواهید یاد بگیرید؟ چه چیزی را میخواهی بدانی؟
What Are You Going to Learn? What Do You Need to Know?
-
دستور کار دوره
Course Agenda
-
اندازه گیری عملکرد جریانهای موازی به طور قابل اعتماد
Measuring Parallel Streams Performance Reliably
-
ایجاد یک جریان منظم به صورت موازی
Making a Regular Stream a Parallel Stream
-
اندازه گیری عملکردها با استفاده از JMH
Measuring Performances Using JMH
-
استفاده از محاسبه اعداد اول برای تنظیم JMH
Using the Computation of Prime Numbers to Set up JMH
-
تنظیم محاسبه اعداد اول در یک جریان موازی
Setting up the Prime Numbers Computation in a Parallel Stream
-
راه اندازی یک کلاس که توسط JMH نیمکت نشین شود
Setting up a Class to Be Benched by JMH
-
نسخه ی نمایشی زنده: نوشتن کلاس JMH که اعداد اول را محاسبه می کند
Live Demo: Writing a JMH Class That Computes Prime Numbers
-
نسخه ی نمایشی زنده: اجرای یک معیار با JMH در IDE
Live Demo: Running a Benchmark with JMH in the IDE
-
Live Demo: استفاده از Maven برای اجرای معیار JMH
Live Demo: Using Maven to Run a JMH Benchmark
-
تجزیه و تحلیل نتایج محاسبه متوالی و موازی
Analyzing the Results of Sequential and Parallel Computation
-
بسته بندی ماژول
Module Wrap Up
دریافت بهترین عملکرد از جریانهای موازی
Getting the Best Performance Gains from Parallel Streams
-
معرفی ماژول و دستور کار آن
Introducing the Module and Its Agenda
-
ارزش های بوکس و جعبه گشایی در انواع بسته بندی
Boxing and Unboxing Values in Wrapping Types
-
نسخه ی نمایشی زنده: اندازه گیری هزینه مقادیر بوکس بصورت حلقه ای
Live Demo: Measuring the Cost of Boxing Values in a Loop
-
معرفی Pointer Chasing و حافظه نهان پردازنده
Introducing Pointer Chasing and the Caches of a CPU
-
تعقیب اشاره گرها برای انتقال شی از حافظه به پردازنده
Chasing Pointers to Transfer Object from the Memory to the CPU
-
مقایسه تکرار از طریق ArrayList و LinkedList
Comparing the Iterating over an ArrayList and a LinkedList
-
نسخه ی نمایشی زنده: اندازه گیری هزینه تعقیب نشانگر برای لیست ها
Live Demo: Measuring the Cost of Pointer Chasing for Lists
-
تجزیه و تحلیل هزینه حافظه نهان سازگار حافظه
Analyzing the Cost of Cache Unfriendly In-memory Structures
-
بسته بندی ماژول
Module Wrap Up
تجزیه و تحلیل چنگال/پیوستن به پیاده سازی جریانهای موازی
Analyzing the Fork / Join Implementation of Parallel Streams
-
معرفی ماژول و دستور کار آن
Introducing the Module and Its Agenda
-
انعقاد و پیوستن به محاسبات برای اجرای موازی سازی
Forking and Joining Computations to Implement Parallelism
-
تقسیم یک کار محاسبات سنگین تا زمانی که به اندازه کافی کوچک شود
Splitting a Heavy Computation Task until It Becomes Small Enough
-
برای محاسبه وظایف با استفاده از Fork مشترک به Thread Threads بپیوندید
Using the Common Fork Join Pool of Threads to Compute Tasks
-
با استفاده از سرقت کاری برای شلوغ نگه داشتن چنگال به استخر بپیوندید
Using Work Stealing to Keep the Fork Join Pool Busy
-
پیوستن به نتایج جزئی برای تولید نتیجه نهایی
Joining Partial Results to Produce a Final Result
-
پیچاندن چارچوب پیوستن به چنگال: سربار آن چیست؟
Wrapping up the Fork Join Framework: What Is Its Overhead?
-
نسخه ی نمایشی زنده: اندازه گیری سربار چارچوب عضویت Fork
Live Demo: Measuring the Overhead of the Fork Join Framework
-
شناسایی مشکلات عملکرد با چارچوب پیوستن به چنگال
Indentifying Performance Issues with the Fork Join Frameworks
-
یافتن عملیات ارتباطی بین رشته ای پنهان در جریان ها
Finding Hidden Inter-thread Communication Operations in Streams
-
شمارش عناصر جریان با حد موازی ()
Counting Stream Elements with Parallel limit()
-
Live Demo: Measering the Overhead of limit () و findFirst ()
Live Demo: Measuring the Overhead of limit() and findFirst()
-
تجزیه و تحلیل مقدار سربار موازی () و findFirst ()
Analyzing the Overhead of Parallel limit() and findFirst()
-
اجتناب از استفاده از روش کاهش () برای کاهش جریان
Avoiding the Use of the reduce() Method to Reduce a Stream
-
کاهش جریان با یک اپراتور دودویی غیر تداعی کننده
Reducing a Stream with a Non-associative Binary Operator
-
محاسبه مجموع مربعات با یک اپراتور غیر مشارکتی
Computing the Sum of the Squares with a Non-associative Operator
-
به دست آوردن نتایج مختلف اشتباه به ترتیب و موازی
Getting Different Faulty Results Sequentially and In Parallel
-
به دست آوردن نتایج معیوب تصادفی به طور موازی
Getting Random Faulty Results In Parallel
-
دور ماندن از اپراتورهای کاهش مشارکت غیرمجاز
Staying Away from Faulty Non-associative Reduction Operators
-
نسخه ی نمایشی زنده: نمایش موضوعاتی که جریان موازی شما را اجرا می کنند
Live Demo: Displaying the Threads Executing Your Parallel Stream
-
نسخه ی نمایشی زنده: اجرای یک جریان موازی در یک چنگال سفارشی به استخر بپیوندید
Live Demo: Executing a Parallel Stream in a Custom Fork Join Pool
-
نسخه ی نمایشی زنده: شمارش تعداد کارهایی که هر موضوع اجرا شده است
Live Demo: Counting the Number of Task Each Thread Executed
-
ماژول بسته بندی شود
Module Wrap up
انتخاب منابع صحیح داده برای کارآمد بودن موازی
Choosing the Right Sources of Data to Efficiently Go Parallel
-
معرفی ماژول و دستور کار آن
Introducing the Module and Its Agenda
-
Forking در مورد تقسیم هر منبع داده است
Forking Is About Splitting Any Source of Data
-
یافتن و رسیدن به موقعیت مرکزی یک منبع برای تقسیم آن
Finding and Reaching the Center Position of a Source to Split It
-
ذخیره عناصر در یک مجموعه اجرا شده با یک آرایه پشتیبان
Storing Elements in a Set Implemented with a Backing Array
-
تقسیم مجموعه ای که توسط یک آرایه ، خصوصیات SIZED و SUBSIZED پشتیبانی می شود
Splitting a Set Backed by an Array, SIZED and SUBSIZED Properties
-
نسخه ی نمایشی زنده: نمایش مشکل مجموعه ها برای جریانهای موازی
Live Demo: Showing the Problem of Sets for Parallel Streams
-
نسخه ی نمایشی زنده: مقایسه عملکرد لیست ها و مجموعه ها
Live Demo: Comparing Performances of Lists and Sets
-
تجزیه و تحلیل لیست و تعیین معیار
Analyzing the List and Set Benchmark
-
بسته بندی لیست و تنظیم معیار: لیست ها را به مجموعه ها ترجیح می دهید
Wrapping up the List and Set Benchmark: Prefer Lists over Sets
-
بسته بندی ماژول
Module Wrap Up
-
پایان دوره ، آخرین مشاوره ، پیوندها و تشکرها
Course Wrap up, One Last Advice, Links, and Thanks
نمایش نظرات