From 72eeb167c5dcb03164672bc228d4b078f18a9b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sun, 6 Apr 2025 21:22:32 +0300 Subject: [PATCH] docs: add diagrams for lazy loading, leader election, leader followers, lockable object --- lazy-loading/README.md | 4 ++++ .../etc/lazy-loading-sequence-diagram.png | Bin 0 -> 57270 bytes leader-election/README.md | 8 ++++---- .../etc/leader-election-sequence-diagram.png | Bin 0 -> 59073 bytes leader-followers/README.md | 4 ++++ .../etc/leader-followers-sequence-diagram.png | Bin 0 -> 70655 bytes lockable-object/README.md | 8 ++++---- .../etc/lockable-object-sequence-diagram.png | Bin 0 -> 39904 bytes 8 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 lazy-loading/etc/lazy-loading-sequence-diagram.png create mode 100644 leader-election/etc/leader-election-sequence-diagram.png create mode 100644 leader-followers/etc/leader-followers-sequence-diagram.png create mode 100644 lockable-object/etc/lockable-object-sequence-diagram.png diff --git a/lazy-loading/README.md b/lazy-loading/README.md index ea761250c..2d448da2f 100644 --- a/lazy-loading/README.md +++ b/lazy-loading/README.md @@ -35,6 +35,10 @@ Wikipedia says > Lazy loading (also known as asynchronous loading) is a technique used in computer programming, especially web design and web development, to defer initialization of an object until it is needed. It can contribute to efficiency in the program's operation if properly and appropriately used. This makes it ideal in use cases where network content is accessed and initialization times are to be kept at a minimum, such as in the case of web pages. For example, deferring loading of images on a web page until they are needed for viewing can make the initial display of the web page faster. The opposite of lazy loading is eager loading. +Sequence diagram + +![Lazy Loading Sequence Diagram](./etc/lazy-loading-sequence-diagram.png) + ## Programmatic Example of Lazy Loading Pattern in Java The Lazy Loading design pattern is a performance optimization technique that delays the initialization of an object or a costly computation until it's absolutely necessary. This pattern can significantly improve the performance of your application by avoiding unnecessary computation and reducing memory usage. diff --git a/lazy-loading/etc/lazy-loading-sequence-diagram.png b/lazy-loading/etc/lazy-loading-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..30dde481c69197961019e9ae5fc45cb98711f2a1 GIT binary patch literal 57270 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 literal 0 HcmV?d00001 diff --git a/leader-election/README.md b/leader-election/README.md index 282ea9bac..12c898e3c 100644 --- a/leader-election/README.md +++ b/leader-election/README.md @@ -35,6 +35,10 @@ Wikipedia says > In distributed computing, leader election is the process of designating a single process as the organizer of some task distributed among several computers (nodes). Before the task has begun, all network nodes are either unaware which node will serve as the "leader" (or coordinator) of the task, or unable to communicate with the current coordinator. After a leader election algorithm has been run, however, each node throughout the network recognizes a particular, unique node as the task leader. +Sequence diagram + +![Leader Election Sequence Diagram](./etc/leader-election-sequence-diagram.png) + ## Programmatic Example of Leader Election Pattern in Java The Leader Election pattern is a design approach that enables a distributed system to select one node as the coordinator or leader to manage tasks and maintain order, while other nodes operate as followers. This pattern is particularly useful in distributed systems where one node needs to act as a central coordinator for a specific function or decision-making process. @@ -137,10 +141,6 @@ The `RingApp` class implements the Ring algorithm for leader election. In this a These examples demonstrate how the Leader Election pattern can be implemented in different ways to suit the specific requirements of a distributed system. -## Detailed Explanation of Leader Election Pattern with Real-World Examples - -![Leader Election](./etc/leader-election.urm.png "Leader Election pattern class diagram") - ## When to Use the Leader Election Pattern in Java Use the Leader Election pattern in Java applications where: diff --git a/leader-election/etc/leader-election-sequence-diagram.png b/leader-election/etc/leader-election-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5243ee206a909bdae1f9e5236d48e5e0f7efc5 GIT binary patch literal 59073 zcmeFZby(CvyDkMpC7_L2?nK5v04jLwebL z*XNw`Jm-C%^UwF^cU@tc4|zGv>aXXdWi2yIPe0z7Iw000P7Ri5eq00aX7z#2GM z=#m(ya~b*{#8&Q^8~{|s+(TGkqQ5g(s^~le0ADr$fQ16U4Y~-n4FI0}0I&-M0P$1+ zpm51(dM=5s(6%;GwR!do;6mqd05FIYK!XQB=szIb4uJe44*+OL=nqB?=wG!t;Qy+H zVB}!@S01eKx8V%DZxjvWg`J*}htV?)aZ6`MUJEPdSJu4VjxK*20FvI~=&Yl)hXsST zql1&XxVIG3KU#>R^M8x^m>B-i#KT^S$>^CjgMzc0HN#_GeqMeiX*>o721z$78*!bd zO8?m%{Y{GLwTFj`I3J&vmlv;>5U;bFEuX-XCr|kJ1^EO8dC)C*+w^Urq&CVK)`7eBF0m*-~{J+Zn6OSa{U*!L7F#j>rf0Ux9Dvc+}_fN7( z<58KdU;}_Gp!!r!&l|MgY8z`Zm9*tEYU^|K{8+XF0|KHZ&V6mop_6E*s@LG#WLsZg zTi@U%VI%FJ@#mM)U|?!QR8(fvOjKrS+F{gVA)OLq9reU<7S@ls+qAMk=w%z;Mu7g! zpcLwM*V=}>80JVG{LaEUyWIBIo2{Jzx`)}z2_!2}{@__ySO4{ES{)BiCZ zz>WR4LXQpO&A=Z^w5f~X0R98hrbwl0!lG&B+Q zeq^=nS_5|4emvQijN0FLztzR8!q5Q0Q$(KiQ^u0`s$UNy9*AIB(O|pHHA+h0a)$zm zK_=}=w3R7k5}_mfv5aYPuKht_cqw?9FxE9Ll&)ZfmQY!|^~2uMM}J=OwjvTyc|ul% z*UGR{nfAw38$p|*(e+b9eC≻A@2(?R6QxNKk!_ZII;*GRkJi>{qspjjGD>A;f`M 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

h@+|H1T%5m8kbg8?Nj21 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 literal 0 HcmV?d00001 diff --git a/leader-followers/README.md b/leader-followers/README.md index 0479ae232..c8c3d0d2a 100644 --- a/leader-followers/README.md +++ b/leader-followers/README.md @@ -29,6 +29,10 @@ In plain words > Select one server in the cluster as a leader. The leader is responsible for taking decisions on behalf of the entire cluster and propagating the decisions to all the other servers. +Sequence diagram + +![Leader-Followers Sequence Diagram](./etc/leader-followers-sequence-diagram.png) + ## Programmatic Example of Leader-Followers Pattern in Java The Leader-Followers pattern is a concurrency design pattern where one thread (the leader) waits for work to arrive, de-multiplexes, dispatches, and processes the work, thereby enhancing CPU cache affinity and reducing event dispatching latency. Once the leader finishes processing the work, it promotes one of the follower threads to be the new leader. This pattern is useful for enhancing CPU cache affinity, minimizing locking overhead, and reducing event dispatching latency. diff --git a/leader-followers/etc/leader-followers-sequence-diagram.png b/leader-followers/etc/leader-followers-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1c32d5c1f24f8e2228b28f2efe30573b158faa34 GIT binary patch literal 70655 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 literal 0 HcmV?d00001 diff --git a/lockable-object/README.md b/lockable-object/README.md index 9ae3caf52..108d27c5e 100644 --- a/lockable-object/README.md +++ b/lockable-object/README.md @@ -35,6 +35,10 @@ Wikipedia says > In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive that prevents state from being modified or accessed by multiple threads of execution at once. Locks enforce mutual exclusion concurrency control policies, and with a variety of possible methods there exist multiple unique implementations for different applications. +Sequence diagram + +![Lockable Object Sequence Diagram](./etc/lockable-object-sequence-diagram.png) + ## Programmatic Example of Lockable Object Pattern in Java The Lockable Object pattern is a concurrency control design pattern in Java that allows only one thread to access a shared resource at a time, ensuring mutual exclusion and preventing data corruption. Instead of using the `synchronized` keyword on the methods to be synchronized, the object which implements the Lockable interface handles the request. @@ -127,10 +131,6 @@ public class App implements Runnable { This example demonstrates the Lockable Object pattern by showing how multiple threads can attempt to acquire a lock on a shared resource, with only one thread being able to acquire the lock at a time. -## Detailed Explanation of Lockable Object Pattern with Real-World Examples - -![Lockable Object](./etc/lockable-object.urm.png "Lockable Object class diagram") - ## When to Use the Lockable Object Pattern in Java * Use the Lockable Object pattern in Java when you need to prevent data corruption by multiple threads accessing a shared resource concurrently, ensuring thread safety and robust shared resource management. diff --git a/lockable-object/etc/lockable-object-sequence-diagram.png b/lockable-object/etc/lockable-object-sequence-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..10b08a5f15f1c74f2e4dcf7accf8690e4ce95963 GIT binary patch literal 39904 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 Vj3o}o-Q{8c0#8>zmvv4FO#mMRQv3h_ literal 0 HcmV?d00001