diff --git a/.gitignore b/.gitignore
index a537f796..5d711fd9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
/node_modules
/package-lock.json
-*.drawio
+# *.drawio
*.drawio.bkp
.DS_Store
# VS Code Config file
diff --git a/docs/database/mysql/images/ACID.drawio b/docs/database/mysql/images/ACID.drawio
new file mode 100644
index 00000000..e8805b8d
--- /dev/null
+++ b/docs/database/mysql/images/ACID.drawio
@@ -0,0 +1 @@
+7Zhdb5swFIZ/jS9b8R24BAJdp1Wamotply6Yj9VgZkyT7tfPBjvAIFK7LcqqNZHAfo99bJ/zxLIDzLA63FDYFHckRRgYWnoA5hYYhq4ZHn8J5XlQPM0chJyWqWw0CrvyB1I9pdqVKWpnDRkhmJXNXExIXaOEzTRIKdnPm2UEz0dtYI4Wwi6BeKl+KVNWDKprbEb9AyrzQo2sO3LBDzB5zCnpajkeMMzYiePYHcwVVL7kQtsCpmQ/kcwImCElhA2l6hAiLGKrwjb0i09Yj/OmqGYv6fD5/ttDl3wtnor7T9S9tRq/C6/swcsTxB1Sy+gny55VgPolIuFEB2awL0qGdg1MhHXPkeBawSoszVmJcUgwoX1f0wp9y9twvWWUPCJlqUmNhKgioonKI2JJISs5hm0ryxmp2cTl8JF6DKsSC/A+IhZQWNYtn/sdqYm070hH+5kWjHGeDNv0+YOHSDxEg/Y6JyTHCDZle52Qqjckbd80zgbvvDj1bxuBHGGZAZmUJ0QZOkwkmZEbRCrEKHepKasp6Xj+pb4fWTRtqRUTDg1LilDynx99jwzwgsTgFUjoK0g4mMmIzthwvndEGa7a/qfN46vpXnMYjbyUi7cPohgEIXBdENnAjYAXi4K/BZ4GIge4GvA3qo2nxgRDnpSTv0pnZovvKTpPcfdyat8+nZs5nYa2pFM3Vuh0zgWncSY4wwmcFghcQWPEnxsQWJeBM4XIzZI/3zrfPISm9a9BaJ4JwtsJhB7wfOBx9jbAd0AQjBCeYm+Q2wbWvz+DNcIHj+fYfrPMSN4JX9lmvUsTbp2J8O2EcM4zL+j9fusB177QGcBN0DuEa9vsxSF0FhD64e12kX2+PjZP8fpxbpJ3KUFc5jWvJjxqiOuBiFbJr4a+NFRlmophVpkaqVMMyMut8Z+dEo8EqDuMvSTHW7vCvB4cXh0vzL1t8q+EGf0E
\ No newline at end of file
diff --git a/docs/database/mysql/images/AID->C.drawio b/docs/database/mysql/images/AID->C.drawio
new file mode 100644
index 00000000..4ac724c8
--- /dev/null
+++ b/docs/database/mysql/images/AID->C.drawio
@@ -0,0 +1 @@
+5ZjZcpswFIafRpfJAGK9BBvStM1Fm+mS3skglkYgCvKWp68EwoCNM0k6HmdqZwZL/znazvmkIAM4yzc3FSrTOxphAjQl2gA4B5qmKprDv4SybRVHga2QVFkknXrhPnvCXUupLrMI1yNHRilhWTkWQ1oUOGQjDVUVXY/dYkrGo5YowQfCfYjIofoji1jaqrZm9foHnCVpN7JqygUvUPiYVHRZyPGABgMzCAK7Neeo60sutE5RRNcDCfoAzipKWVvKNzNMRGy7sLXtgiPW3bwrXLAXNSBfy+/et6cCXX26ib/o33+pqyvZS822XTxwxMMjq7RiKU1ogYjfq16zZix6VXit9/lMaclFlYu/MWNbmWu0ZJRLKcuJtOJNxn6K5teGrD0MLPON7LmpbLtKwartoJGoPgxtfbOm1rWrHzELU1mJacEClGdEWD9i5lUoK2q+/jtaUGm/p8sqFPNOGeMIagZ0+YNHVTyEQ32dUJoQjMqsvg5p3hjCunEN4rZ3Xhz2b2jecIQ2LqpYcM0q+rgDjzPhHaa1y1E3sWO51OTuQVWC2TN+eusnEj0YQEJzg2mOeQC5Q4UJYtlqvE+Q3G7Jzq9Hjhckda8gUM56hcgSdxtpD8keOBGydZoxfF+iJhZrfiiN4dpts4PsJwTVdUdCRsiMElo1I0B95uqOtcvHwGI2H5m5gd5+3gVTR4lZ4YrhzbM5llYNykNNHuKaIg+tdX8kQkNq6eA41HTlRFzACS5MwmRER4CYf5a0M1zVze7i8VVUp9z0Rl5KxLcL/AB4M2DbwDeA7QMnEAV3DhwF+CawFeBanY/TjQnaPHWd/Buie/DFhvh7E3wvhP2/QNTWx4hah4iq2gSi5qkI1U9E6GxAqA48WyDp86cFPP08hEYI23E4SWho40V8WSRCY0yioZ6bRONEJN4OSHSA4wKHA2gB1wSe15N4DMBWrktUvH0GU5i3PZ7iII5jLZzEPDIXpmFeGubjdwJonhtz80SYzweYc6h5QW1OXgfYxpleCewQT5O4sA3dUC6LRB2+t3/91gGJ7u38gAC+PLZ3ORmls6AF3su9lBDJkoJXQx40zHVPBCsLEXGlIc+iqLmMT3E1vqAPrpzahb0zQmsPHO0QHGfqVvN6bni1/ymnsQ1+L4P+Xw==
\ No newline at end of file
diff --git a/docs/database/mysql/images/concurrency-consistency-issues-dirty-reading.drawio b/docs/database/mysql/images/concurrency-consistency-issues-dirty-reading.drawio
new file mode 100644
index 00000000..6e4e61ba
--- /dev/null
+++ b/docs/database/mysql/images/concurrency-consistency-issues-dirty-reading.drawio
@@ -0,0 +1 @@
+7Vpbk6I4FP41eWxLQG6P4KV3e2d2ZrZramYfIwZINxIWYqv96zeBIGKi7Uwp2jOWVZqchJPL+c53TiLAGM5X9znM4o9khhKg92crYIyArpuuzr65YF0JbMOsBFGOZ5VIawSP+BUJYV9IF3iGilZHSkhCcdYWBiRNUUBbMpjnZNnuFpKkPWoGIyQJHgOYyNJveEbjSurodiP/A+EorkfWLLdqmcLgOcrJIhXjAd2YWJPJxKma57DWJRZaxHBGllsiYwyMYU4IrUrz1RAlfGvrbauem+xp3cw7Ryk95oE//x4YTj8YYPr11f7y9OmfuWPdibUUdF3vB5qx7RFVktOYRCSFybiR+uWaEdfaZ7WmzwdCMibUmPAJUboWtoYLSpgopvNEtLIJ5+vv4vmy8i+v9My6OlptN47WohaSlAqlminqEzjHCe/wgKifQ5wWbDkfSUrq/mSRB/yJmFKGKN00PPbFNol/8Q5FLyIkShDMcNELyLxsCIqy6ySstLPitn5T98UIsg2EWYp62H0bX0Md5hGiB/oNqn7cKlsDCAvfIzJHbIdYhxwlkOKXNqih8I1o06/BBysIiPwAXITeF5gsUI36XfwkCXNdjpNljCl6zGC5D0tGHm0UwCKr/DnEK44mP8RJMiQJyUtFRhgiKwiYvKA5eUZ1S0pS9L6w8IJyilYHrSdaN1whuFSzRH3ZMFMtirdIqZad3N7Gzd7ntLejXZm96/nc4kHX8WBwZDwwryseuBJBeHWQ2MHQBzhliWObERIcpawcsN1CzNd97jmYpWaeaJjj2ayCGCrwK5yW+rjlM4KZpbhy0wfmSIGFhA/nb1K0LZ4RSdp1wuWgV0rEssmKxda0MksV4dz1ezzKtEmnqh0NGKH8MzdBo9lU6awfJ2FYMFTvom0zv58H4EDGH/vRZRprSEp7O1RJkSnUf7PIZFg7kcmWI5OtiEyDE0SmEcqGeP0AA/8B+/lf3/wv0+fa0N0Gpl3TKrn35/jelPleuW69I3pXDm7K6d/YBK4P3DEYW8BnBe8SZH8kucumO5pB20bdj8iDTGu3SdE4CdFaKp3nJ1oZCpxoNfn+4Ea0P0S05u6Rr0OiVRraVvj8APgecHzu/I4HPE3O8Nhqadu0ahNu2VuIjucFFZbaFP9LIkQzdhFiSghRHRKNcyHEOQIh8j3BDSGdIUR3ukOIMjSqT4Dv5BbhhEle7QZvnuo1s6M07+A0b9d83Vzr6ooY3+01n/OeHfSKMfE2IyjOfeqOtpKHLkYRt/z/TPm/uxu7L5z/a4oDwC0YnO8/n4sHg80S2rc8LIf0hmViPwSuXUomwGeFSSnxHuALvOfvbgDdSnhmP81bILH+W/A3G0qj3BWlFZkl+pqZrcqNrNtZKSp/xzbwR8DVeMHzgetuhnpiQ5WvifSC9ErPFXtupA4AecsL/PJT6qSMy0kqlBbPiAYxaO4i3z349V22G8jg1xwF+rVzHVWMS2RCpzly7L8vPiK/MDrKJg5N8vavjexeihtqCQZ73cuyO7tMZNXm1bXqkrl5PdAY/w8=
\ No newline at end of file
diff --git a/docs/database/mysql/images/concurrency-consistency-issues-missing-modifications.drawio b/docs/database/mysql/images/concurrency-consistency-issues-missing-modifications.drawio
new file mode 100644
index 00000000..68c79b9d
--- /dev/null
+++ b/docs/database/mysql/images/concurrency-consistency-issues-missing-modifications.drawio
@@ -0,0 +1 @@
+7VrbcqM4EP0aPcZl7vjR+DI7U3PZ3dTW7j4qWIASgRiQYztfvxJIXAzOkKnx4JqlUuVILalB3UenW10AYxUf32UwjT7RHSJAn++OwFgDXbfnC/4rBKdS4BhaKQgzvCtFDcE9fkFSOJfSPd6hvDWRUUoYTttCnyYJ8llLBrOMHtrTAkraT01hiDqCex+SrvRvvGNRKXV1p5b/hnAYqSdrttzwA/SfwozuE/k8oBtbe7vduuVwDJUuudE8gjt6aIiMDTBWGaWsbMXHFSLCtMps5brthdHqvTOUsCEL3n82DXfum5j99eL88fjlz9i17+RecnZS9kA7bh7ZpRmLaEgTSDa11Cv2jITWOe/Vcz5SmnKhxoWPiLGT9DXcM8pFEYuJHOUvnJ3+keuLzr+iM7NUd31sDq5PshfQhEmlmiX7WxhjIiZ8QMzLIE5yvp1PNKFqPt1nvlgRMcYRpVvGkv9wI4kfMSGfhZSGBMEU5zOfxsWAnxdTt0GpnTeb+i3dk08orSdMdtEpUpSr97jkCYV9mIWIvTLPrKDDTySiMeIW4usyRCDDz+33gPJshNW8Gh+8ISHyBrhIvc+Q7JFC/Tl+COFHV+DkEGGG7lNYbPvAyaONApin5XkO8FGgyQswIStKaFYoMoIA2b7P5TnL6BNSIwlN0A1j4RllDB1fR0PXe3JBxRWSSzVb9g81MylR1CAlJfvh/jYmf1/T37Z7Y/5WQXmKB6PHA3NgPLBGjQeLDkEsVZA4w9BH+MATxzYjEBwmvO1z4yB+1j1xmDBPzZZyIMa7XQkxlOMX+FDoE55PKeaeEsotD1jrHiwQ8TivStEaPCOTtNuBSw+FyGRX7rjOIZtAeuUAXyScu/lMRJk26ZS9wYCRyn8XLqg1W3061XIaBDkH8Tnaqvf7fgCaXfzxf3qXxmqS0r4dqjqRKdD/Z5HJsM8ik9ONTE5PZDKvFpnsKTLdSGSyBkYmY8zIZPUSg9a9707E8CZisM6vKGMTg9O9omxM4C2B64GNBdwlWGrdjIQbgLVd2+/Chr+laHjS0oelNiP9kgjRjHOEWIMuNca1EOIOQAifYBOBiIeMt0JWmWLCzBiY0d2RMdNDGVO6MVJhVB+Yb2jjlkb1Ls1MtbLr1Ub1nsTj59bKjIkiboUihhbLtFGrZQrBU7XsVqplF66odbVMU4Wt7y2PXb8Epk01sOtEHFNZtkpKx66BuVPEuZWIM7QIpjmjJqVTGexKZTD3/MI6Njf01MGm68ePc7hzXqEY+/qhttAqa1nAtcByVdS3VmDhFJIt8HhjW0iWH+AzfCc+uWsWvBogsb/uxQdphVPu8sKL3BNzzUiPhSHVeFUl2zjAW4OFJhpLDywW1aMe+aOKr/tmftLB4m0U0y7kvT1ANmS/cQq84q/QyTiX00QqzZ8Q8yNFlb8C+PXFGfjNLvg1twf92tvRz7v1N5Fljlx/d2ps/gM=
\ No newline at end of file
diff --git a/docs/database/mysql/images/concurrency-consistency-issues-phantom-read.drawio b/docs/database/mysql/images/concurrency-consistency-issues-phantom-read.drawio
new file mode 100644
index 00000000..35047027
--- /dev/null
+++ b/docs/database/mysql/images/concurrency-consistency-issues-phantom-read.drawio
@@ -0,0 +1 @@
+7Vptb+I4EP41lvZOKsIJeftIgHRV7UordU/78uXkBudl68TZxBS4X3+2YxNCQkvvSqG7CAnsx/bYmXk8M3YA5iRbXZeoSD7SOSbAGM5XwJwCw4BwaPMfgaxrxDGtGojLdK46NcBt+g9W4FChi3SOq1ZHRilhadEGQ5rnOGQtDJUlXba7RZS0Zy1QjDvAbYhIF/2SzllSo67hNPh7nMaJnhnaXt1yh8L7uKSLXM0HDDOwgyBw6+YMaVnqQasEzelyCzJnwJyUlLK6lK0mmAjdarXV44I9rZt1lzhnhwy4uV0Ff/3tf86+uHH86frm+3v680pJeUBkofQBZjZwA+DxggVcC4wtgXgW8IeyaQrGM/VAbK2ViOdcp6pKS5bQmOaIzBrUl4rCYilDXmv6fKC04CDk4A/M2FoRBC0Y5VDCMqJa+VOW669qvKx8E5WBpavT1XbjdK1qBN1h4m9sNaGElnLR2lqmH9GcqXnhSNUDlKVEyLjBzC9Rmlf8iT/SnOr+dFGGYkTCGGeqYZlj/sWVL75Eh2oQUxoTjIq0GoQ0kw1hJbsGUS2dF7flW4avZqgVLLS619gKqvQ69lnYUHsKlTFmj/QzN5TkWx3TDHMl8nFqn18NB+bIVrJKTBBLH9prQ2ofxpuxG3GfaMpX3XShUVTxtWyRlRe2Zm0gSeFn0Nno0rlDVUK4axGUXCYpw7cFkupbcu/WJhyqitrfROlKENePUkK26BNF2A5DjlespPdYt+Q0xzucss6IUw+4ZHj1OKv2sgBaypcpXw9tVV82nlNDyZbT1FgfR1oUeK69zYu9j2lvxzwze496wtUI+GPg+jJcjcEYwg4FuAJY29b9Jtyyt4IQSeOcV0OuMMxxX6gz5cnDWDVk6XxO9pGrHfN+SYbYOwRxrIMIYh6LINYBBOn6iAtBXosghntigthvKXc9V0a8SGLqHpiYwj0EOzgL/V98cXoyDJsIb1EVKG8xyf65EGc5aYWrSpqNq34IR8VKak6381IsfkNOK/buzz+0QL6+Wmbd3EvUD+I0s5O3HOyCSsxXhe6kPEGvQuTlUmGWD6zp2z4s9XgpdWWgnnhzQG6xdb+TeOwsBA3Xbvu1cz8ZuZdM+TVPRoZz4kzZe2tx7hwo8CJxTR9Ang5s1ikDm75/vUS23ymyeU9GNgeOWp5MXxH/19CmF270Sj1+4IPdK+58kfHC5l6+4WHjAOHTUbAT9CLjNwt65m7Qc7tBz+kJeqNjBT1NskuW8zr3gSfPcmDPBbB6bTWRFz8T4DkSCYDPC4FExjfoAV2L9446QN2VB8U7c0+8AzMH+FPgQVEY+8DzNlP94FPJV5yDMO9w8TzunfaExh4im6q+tQt8+ZEyGY8PNFdCq3vMwkS7yl+B/ObuVdaoS37o9rAfHo39o1Mk+edizJdJ1q1Dk3XjpMl6915bJTHdtx2XJOZZ29rq3FAfLYnh1ebvHnV+2/ynxpz9Cw==
\ No newline at end of file
diff --git a/docs/database/mysql/images/concurrency-consistency-issues-unrepeatable-read.drawio b/docs/database/mysql/images/concurrency-consistency-issues-unrepeatable-read.drawio
new file mode 100644
index 00000000..212d68f7
--- /dev/null
+++ b/docs/database/mysql/images/concurrency-consistency-issues-unrepeatable-read.drawio
@@ -0,0 +1 @@
+7Vptc5s4EP41+hiPQYDxR/BLern27nq5m14/3cggQImMKMiOnV9fCYQBQxy3jR3SejyDpZVYIe2jfXYFAE6Wm+sUJdEH5mMK9KG/AXAKdH1kQHGVgq0SQLMQhCnxC5FWCW7JI1bCoZKuiI+zRkfOGOUkaQo9FsfY4w0ZSlP20OwWMNocNUEhbgluPUTb0k/E51EhtfVRJX+HSRiVI2vWuGhZIO8+TNkqVuMBHc6t+XxuF81LVOpSE80i5LOHmgjOAJykjPGitNxMMJVLWy5bcd/8idbdc6c45sfc8NsfBrSHnkH4v4+jj3d//r20rSs1l4xvy/XAvlgeVWUpj1jIYkRnldTN54yl1qGoVX3eM5YIoSaEd5jzrbI1WnEmRBFfUtUqHjjd/qfuzyufZWVgltXppt443apawGKulGqmqs/RklDZ4QZzN0UkzsR0PrCYlf3ZKvXkHRHnAlG6CR1xEYskL7JDNggZCylGCckGHlvmDV6Wd50HhXZRrOs3dVeN0LaBMktWDvvUwpdQR2mI+YF+RtFPWqU2gLLwNWZLLFZIdEgxRZysm6BGam+Eu34VPkRBQeQb4KL0rhFd4RL1+/ihVGxdiZOHiHB8m6B8HR6E82iiAGVJsZ8DspFocgNC6YRRluaKYBBgy/OEPOMpu8dlS8xi/LawsMYpx5uD1lOtO1+hfKlmqfpD5ZlKUVRzSqXsxe0NL/Y+pb1trWf2Lp/nwgfn5gPjSD4w+8UH45aDcEqS2MPQe7QQgWPTI1ASxqLsidXCYq+7cucQEZo5qmFJfL+AGM7II1rk+qTlE0aEpaRy0wXmtAMLVA7n7kK0mp9RQVo/4XJwV7Ycyy4qVkvTiCy7HM7VcCBZpul0itrRgFHK/5ImqDSbXTrL21kQZALV+2jbPd/3A9Bo40/86W03Vjkp7XmqajFToP9izAStPWYatZlp1MFMxgsw05c7///P0EE4SG+tNWf/DBm/0joij/4y05vwPnXgwh8iL/NI8oK9Ii+z03do7ZT44ju+yXeYr+g7Og09amcxMwO4DrBdMDOB7QBHawctYra8adpuE9bsrUTHxzVdWGo6rZ8SIRrcR4h5VN4DT4UQ+wiEtAnogpCzIUS3z4eQKU4mZHuDPPeGuOnvn9yPi/snkpqehh/7kPh+Zi9R/yy1az1LTPX2jr6cXJ3upFLv4PhTnVx15wfGW9qgv1h+oHUkCN1W7FeGoHWnCJfjhZc+XtDtV04RtI4c4cIXp3vTcU6+6DT4bgr1kF9E+iZwJnnsPwHjUS6ZA1cU5rnEuUFrdC2/WAC6RWXwv0gbILG+rOT7/NwoV1luRWGJoQaTTb6QZbsohfn/bATcKRhrsuC4YDzeDXUnhso/jhh4cU9TjydorAPIUNVru8DNf7lOLnw5i5XS7B5zLypd5c8Afn28B36jDX7N7kC/drJoybxES32Ilg4GQc/nXKPXipYOPvflQPWF/Ydlni1aEtXqi7TiJV311R+cfQU=
\ No newline at end of file
diff --git a/docs/database/mysql/images/事务示意图.drawio b/docs/database/mysql/images/事务示意图.drawio
new file mode 100644
index 00000000..4f649c95
--- /dev/null
+++ b/docs/database/mysql/images/事务示意图.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/database/mysql/images/数据库事务示意图.drawio b/docs/database/mysql/images/数据库事务示意图.drawio
new file mode 100644
index 00000000..6ab55e05
--- /dev/null
+++ b/docs/database/mysql/images/数据库事务示意图.drawio
@@ -0,0 +1 @@
+7Zpbc5s4GIZ/jS6TscCAuAQb0sm0s9tmOtvuTUcBGdPIyAtyYu+vX0kIc3TidJOYepLMJNKnE0iP3k8HgDlbba9yvF5+YjGhwJjEW2DOgWHAieGKf9KyKy3uxCwNSZ7GOlNtuEn/JVVJbd2kMSlaGTljlKfrtjFiWUYi3rLhPGcP7WwLRtutrnFCeoabCNO+9a805svSigyntn8gabKsWoa2fuFbHN0lOdtkuj1gmKEdhiEqk1e4qku/aLHEMXtomMwAmLOcMV6GVtsZobJvq24ry4UHUvfPnZOMH1OAJjfh359XhXPNrY9WEH0prr9cyAKymntMN6R6D/W0fFf1kHpHImuBwPQfliknN2scydQHwYSwLfmK6uQFy7geZGiJ+P6tJzJyR3i01JFFSumMUZarVsy5FaD5VGbiObsjVUrGMqKrDfEqpZKya8L9HKdZIZ7zE8tY1Szb5OqplpwLeAzL9MQf0R/yj8xQXCaMJZTgdVpcRmylEqJCZQ0XZe0i2KzfMnzdQr+79Qjck5yTbcOku/+KsBXhuahysq2mRllCzxRHRx8a2CFtWzaQM21txBr1ZF9zPdwioEf8GaNv98aaxGJy6CjL+ZIlLMM0qK1+TYMcxDrPR8bWmoGfhPOdhgBvOGsTIvov333T5VXku4xcWlV0vm0mzncVPAdJKompZq8xblyKqtlDg6Llk+M8IfyRfFaZT47Yo/DlhGKe3rfl7sVRMgd0xKZc93ULMvufDasSLgqFiej5CXTW2zpRhBL1P7CAPwNiXoiAmEBeCIIp8D2AVBLygAerlkA5bvuiPbgpFV6FHCFibWmKMUGL6JA0PaJw46XweNGCVlu19v6sIVvQGJAt57VUC55Eto53bOclRy8uM7ronyxVuqAxc6ZtzGDX6ZV6qEt1CNo/xv+AyjmJL9ym/Fsj3PCEIlY7Qhmp/OA7iK8LYkfvTPM4EL08x7tGtrXMUBxux+4Ab1hWe/n+RP7quep5UD7Bi84K66V3B23HulgsjOgXHGtCcVGck5PdQ9ZVv4aT3e+Ym04Wuq/mZWFvqEflZUc87k9KmXPkEh+Naonv9MTg5vNHENjANQGaq2X5HLizPjdiEvD2MA/v8RvioE2YpkkmopHoYiLsvpxSaYSppxNWaRzTQyv6No1ngdYzJKVz2gDRwHHDgKIYryYofd/xpqcN9QHDd9A8Xxg+bTgLWp4UInSkEFWuZyRKhI5Toj5w70o0AiUyzFMr0eQ4frJ3fsbIjwlPzU//sPNS/fwmvOSMC5Fmshb38ZP18+AHdfRn6OLlTfk54L8sgCzgIRC4AJkqYAPkAs8BAZLH3GimLEieg5dn3274myB35oh1D2fgyV2c20NM+beZBEr6N6SuVFTA87T367ImYBQZoLT4U+BZ76yNgrXuAaV1YtaM/nLqpe7+BJOhUjt15SdofL/7e0vUHLsjaye/+9u/w2vcM7s+cAMJnS8C3tuztkAR+ZXj8PNgzenI2uQNWfPx2vpw95XAmJtft1v7jx8/0osB1PQSbabYmAHXUZYQ+CIQKot3je/xlfymraLlNj+KSltQqXDsgemo3SiUAU+A6e6b+imaUp/PXUZj3apSfEuov/9SbuCrrspz2zremA+++m1vWFrwwxHB3yN9YD4chH8Kp22hHdjiwiGnDp8Pv4jWHx2WF4X1l51m8B8=
\ No newline at end of file
diff --git a/docs/database/redis/images/redis-aof-write-log-disc.drawio b/docs/database/redis/images/redis-aof-write-log-disc.drawio
new file mode 100644
index 00000000..e03fbce3
--- /dev/null
+++ b/docs/database/redis/images/redis-aof-write-log-disc.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/database/redis/images/redis-cache-avalanche.drawio b/docs/database/redis/images/redis-cache-avalanche.drawio
new file mode 100644
index 00000000..f92d5d3e
--- /dev/null
+++ b/docs/database/redis/images/redis-cache-avalanche.drawio
@@ -0,0 +1 @@
+7VzZctrKFv0aPZ5Ua8LwKBDYStEixHAS/HJLFrKQGOQCYZC+/q7d3QJkcOLkOLk5uUlVYqnHPaw9tdrRzM5yf70OHmc8m0YLzWDTvWa6mmHoOmvgB7UUsqXJTNkQr5OpGnRsuE3KSDUy1bpNptGmNjDPskWePNYbw2y1isK81has19muPuwhW9R3fQzi6KzhNgwW562fkmk+U1wYV8f2myiJZ9XOeqMle+6DcB6vs+1K7acZZq/R6/WasnsZVGspRjezYJrtTprMrmZ21lmWy6flvhMtSLaV2OS83gu9B7rX0Sp/zYSkt5z9p9Evp/fh+uaO3ayGy/FfapVNXlTyiKYQj3rN1vksi7NVsOgeW9tg5JF6lUayNdqEHCLaieHtOK+fZY9o1NGYRnleKP0H2zxD0yxfLlTvIriPFu2DSDvZgtZ1p9FDsF3ktGu+zubRS+2V6ky0PGSrvBcskwUh8n2Ut9dBstqAS56tMtWv6NBt9X6+brSaOgQvYnQRbDZJWE3NtuuQJs/yHBg1bNPBPxA7/UMDNu/iLIsXUfCYbN6F2VJ0hBsxtPcgCcPjKWm20VbESX2QEl5Uc6Wzio6XdGscQAbjjbJllK+xMVtHiyBPnurrB8qK4sO4w9QPWYKdDaYs3rBb78xG6/hHLqCs/+qK1RfMg3Uc5WqNIzrxcELUsUlg9hvwa8jdnoLFNqrM8Bmgj9AknO1mSR7dPgZCcju4tDoMT7BhEJIfksWiwgYM3Oo4VuvqDI2rbCUMYx7l4UzZwMHc6SUmBKnnV8HzJ2DsKVrn0f7LKDtHTzWhBRRc1VTfYEr1u6Mb1SvnNztxoU32MuZq+PhWMJhvDIYLrqUOh2kQNR/Cl+DwWyjaYNZzRevmBUXr+jvDPtf1lfHO/kHatr4jdP3jMAWprYvPNP+dXb1O1HLixd3X3orKG3xflPq3hBqVA0pn/4VxzbcISQjLQXEy4JGCy+YLEavBavg1zGeJ0reNx4Ok4E0DmX3mu3Sta2rwlU082Jpjac6V1m1pzSut2dO6Tc3pae129YCuhtbWtea5yyMF9ym7qiM5WCTxipIbKDuiFI7cRIK82FEdy2Q6lUYTbZIyuBfrEZaVvLG43dZs90JG9UIyd8yQfx34X3COKq9VHB8T+FPDeNkjvehJ/2LvdGYq/fzDJOyvZzOyh4dN9EMSrMbXY2pVDyRLUWodgCRA9yHbJHmSEaDuszyHjl6R6z+HYk7euR1sHmUB+JDsyYe3xYZO1cqqFloqyAPNdOSr0ds8xZrR3gP7RufDjW/cFW3r/tN+G5aP1v31YhuULAluPrLQzZ765tScFrbJC/spXIZPfDS3B7ctOa7w4uha39yveMtbztj0xmn0ixZmhNtpybf35vtVv/R23HWeQvNu5SXt7O7TYhXcDFteOrTwbgafPrLAZYnvxol3c7cIV/7jvWGhv7vlt148XS4WU/b+KcIY3nF2ntvd8XQY85FT+B0vnhj7WWjS/osU85IP6X5+9+muxM9yerPY3N22WfS5vfhw+57dfZ6xvuGXYeE9fUh3T3fXfy/D0mqG1z0WdNpzjPF56u37+OsnjuGnfOunM6M/CvV+OrECd2zxW8uYpqFx32H6wO1u/YTt+ikvojmzuOtt/TJmnuuBNqvkq0kxGM1pDU+tywa9ScHTjxt/FON9bAzAk5iftHPeYYaYN48xBvynXWNYdi2/sJjkeUL8G5DDfuDG24E7Yeod44dbXr43fJfbWM+YlE7My/EWcrVAj9lPh6DJkeuDN/CBNYaxL+dlPJ2Ajq4NmnW+jPPBqIv1P6b9UdfopzHmgc4Rx5ixjfl7sU45yXnpbP3RvPBcjr/YcxSC37kBusp+Ghbgj/YreccyBA9iryETa15zyNmyBqNJzDuHMTkfEU0OeKP9JqCb0RrYvws+JqCF7XlhmTyNsb8naYBsQV8RdJgN3iy/N0H/TPEFfVzzkuZAr5DhBLKHXDsM9FkW1oAcIO9RjDUmjPTxd6p0OOeWL2QfW0oOGD8Bz6GhZC/0DizI95ss6QNTfRN2VVrkEr7u3V/Ml3/9fNi0z/Jh+zwftg9572k2bP+4bPjq3E9T1tDVHINSg2ZT5AhXmtOmfOG5C4c88ku1z3MNnZQ/qun1acSlYquej9fq50unNL9owvAN6DHOyuZL1VTjQtVs/qiquflzj1C6rZZuv4iw/6MjFIPVywyz9b8+P2l9R0X9Qw6Dv7fK/nOI/OaVvV59k/laaa+/UP28utL5R9CtviadeDHjO+tntMAS2y7NorDJqKtlq4emS0EVXW1Ha5la19LaTa3p/ApV92sgew7RV9bq/7ZavPW1Wtxo2Y16IH7Tyrxa1PpZhXplqH8q9d+wUl8Gn/abD7de4l2DvjmqQdejahOVGqrDAtXtoXpFZeh6qOQnpueiEi/DHT2jksR4rvuuGF9Q5TkYoUIsOarJOebO6ZkqUEZVen80xs/JXozAeFSNDBU81g0xnqMqDZmYX6Aydoc0H3O4jcrdHoyGtD9VxqikPXsg9mSoHK0CVTwq4i5ohIwEXXPio5RjUBGjSueuqIj3J/RaVKH2R0OqhlFBs4InqGxRcUv6h1SpMi5kwQQ9mGcT7ZizQxW854Im0D4K6fTBGKASBq27gwxGqGhHlayGGDPf+4J37FVQxS7HYU9U6iSHCfHL6ORE0G5CVi5HleyIfcVpBHSBSlund2CDxuq8kv8tZDGiE5cwPl1Tyt+DPnmJyltHRV74qNZ5OgZ9w71cC3K5tXTFP/YRcikUFhjRATwwiYGuCbmXfhpjHzqpoKrdKwR2qJK/tXZiHujgKea5caHmMfSVvpLbQKzhSXpT8JUOdSlfDj1BxnLv0qe9SzpBEJhjkLEJuUo6yznonNtCpwn0VE6wztyS+9GJTWiKdsIa7AgYAR+OIdfydHW6wsDPXshRYJHkImU8TYRdgIexWPO+QydVnsIwPTuWT3o05YnFV2yLQT5M8CNto5yINYaVnG2iV+pTnM5UsoIc6XRmrLBEp1NxpXfo1NK5kMcwx3jSRyl16gHDQ13ZClqgq3JoV9jBPDo1yusydE5lCDyKkx9LnEDdWsCBJ3U3Ai6VToAdOgna0YmSxN1Y4STeEocK/29kZ8O9ks8FWwO/32RnXdNf1WyMvcbG4Lsv2Ze02eSL9gX/Fkt9/iT7EqeURI87VvI++kmimzAm+SD5Ek108lrzuXnN5yYOyd306dSSsKZsyXNJ7l1JF+nmlsZUvujU5jhsbm4Mbmi+A54ciU9jlws6CY8d8CdwNm14SROx+8NNeza9juO75WJzj8iISCrPmbGCOI90ESHTCZDkmALFhjhj3XOyXli+3J04FJZXeRJY0ZhxEXEYeQA2qMaldN7cVdY2LsWZM9A9OGqQIhZFs9KvrFVItlqbw2JglcK7EafjvUCRRKUuUOnGaKdo2i3k2Xi8V5a6x1ybVxYirF1GAGi/JA0NS27DigpYj0KTOCfeVV4EfQZ4kB4y5Sd7OyV4qDROCC1OZAa+J1uJLIEmsjYbFktz6IydIjxorCx3Di8xriI8yVvuv5hQ5N1yaXWvilrPLMqsWVTxTRZlqAzikkVVOHhuVQoDlyyLMq+TrCFhlDUYvMqQ/pFlhXXLKt7IsnrkVeB53VDwHoiIxQWP/s2jD40YFPVAC/iBB73eFRQZwJPyuhz9w1J5UJNL3cNLjsnTWPQtQ2YKAic57VVFJvr+4o88+i6BCEGRiDMVNfeC1pLvJE9j0Cq8i/T6t4RlL8ZPW+wrcE98e8yX9il0rbAJndB8sgFG32Aoqqr1QxX5TtZfZfH9LeybstlRrHhEVg2+fGE/dxtkAsDBXGWGGJtAdwLbyBhIr6M5O2YUcxFRxHegosIfdJZ6pIu98AujrlVlXAKL9J1FUEbfimLKoKsMRT9EfGALdm8S5gYkD/KEI8qiK+9OGKqyc/qWA90p7Pnk19J5lZXv0Aca5uLbl+cSxoYi8oJeXWZcdw3vmin8haRfHXsqGv0U+DpkPPJ7lEffr3ZSF8JmKz0972MDkW2T7/Eh57Ehsh4V5agP+MgvzTlpJ19LWcLuUB0c29XY9ymX2TbkPYkRNeibYZU1wF92dfq+Rv5s4A6tQ9vq/+y7Uv00wqrK95PTYKt5fhhctb39idr51cqP0TTZ/KLfjk4/D0yDzezwteLFj0qN3+ZDgv78Q8I5dHT2Mz8p6a+4ifnnLOpfehYlsnl/1EVWMizpNoE/ChHRfdR+lNUMC0Q6ZCJEg0fZM/o8GpPTjQ051rOnbtei7AiZA8YjMym9qs+aplTjoj5C3eyb3Z0nbnhU6zL9uCdHxKfMUfZNKXNJnZgirNpzT9mCuD1yshei/05WFHI/f0FZKjIawVNYHvambKCkWydjmlv+TZnZYZ27vaz5YropoR/WShwT0VBHJoI1Zowyk5P16IaF6ltQVN/9NjJMxLy8Pm9M5wWSX8pOD3xMUdPX6KOshg3ELZ/xVsonpmwImd5Y7nkzLETmpOiEXNih7zOyxpEDmrpHHlfdvbwNJGkRmVFNF+xEF9BTTYfsRIcLVCnhYd9wRLeM5i/w6JzySJkl3ZYh/ck96eYO5AbbPJVbwSE3VV0KvuU8VpuH7OqAQ1SgRz70iS5v8lT0TSxgCn9r2IhPsAHc1DAVn2DKiubYd4Tq7QbyO9lTyu8Z7avhGVaQzb8kD+MUZ6+X4+yCHHtjaavcOPJ4xyRO2QlO78awJ4zz7KM+5zW8o0+cFKh1P9H5FZ2hCXncdHfy/O5gj6d2k9fsxn2us4rGdnUu0mmV02WIp9/79wXO70c1Ltxw+bmprHWejnzhm+6fBPdXwxR73S8b/dwc9/zGPt2va3fEtQBbc1yt1VT3Axz30hWESwhsMa3ZEV1YqkF3Edo9Gk8tWPlNbu5phvnQDKMwfEOEPrv49fvc2DPtenFlMfsceFcXgGf/MOBduJL/1RsqCoESkzZhyREPdPelVQ22CMAtR2taFxb8A7yfDDyrDryGccHjtS4Az/phwLt0x1g4KEIOQNXWWt0XoNgS3szWmugVeGsCe/YFh/lWV09l9KuDr9cTv6/85+qpfmW9q/4bg+e/uF33a+8a5jnCGt+OMLwe/6cDeeXp+N9JmN3/Ag==
\ No newline at end of file
diff --git a/docs/database/redis/images/redis-cache-breakdown.drawio b/docs/database/redis/images/redis-cache-breakdown.drawio
new file mode 100644
index 00000000..638a0925
--- /dev/null
+++ b/docs/database/redis/images/redis-cache-breakdown.drawio
@@ -0,0 +1 @@
+7VzbctrIFv0aVZ3zMK7WDcOjQGArhxYhhsngN1nIQgIjFwiD9PVn7e4WIIMzduJkUpmkKrHU131Z+9ZqRzM7D7urVfA449k0WmgGm+4009UMQ2e6jh/UUsiWJjNlQ7xKpmrQoeEmKaNqpmrdJNNoXRuYZ9kiTx7rjWG2XEZhXmsLVqtsWx92ny3quz4GcXTScBMGi9PWz8k0nykujMtD+3WUxLNqZ73Rkj13QTiPV9lmqfbTDLPX6PV6Tdn9EFRrKUbXs2CabY+azK5mdlZZlsunh10nWpBsK7HJeb0Xevd0r6Jl/poJw5HVmNzdrrzFevv5f5eZd+lc/WHYiri8qAQSTSEf9Zqt8lkWZ8tg0T20tsHJI/UqlWQrtAlBRLQVw9thXj/LHtGoozGN8rxQAAg2eYamWf6wUL2L4C5atPcy7WQLWtedRvfBZpHTrvkqm0cvtVe6M9Fyny3zXvCQLAiSH6K8vQqS5Rpc8myZqX5Fh26r99N1o+XUIXwRo4tgvU7Camq2WYU0eZbnAKlhmw7+gdzpHxqwvoizLF5EwWOyvgizB9ERrsXQ3r0kDI/HpNlGWxF3qlal6XW17Uu61JXhkQKPZio0XEXZQ5SvsDNbRYsgT57qBhAoO4r34/ZTP2YJaDGYsnnDbl2Yjdbhj1xA2f/lJasvmAerOMrVGgd84uGIqEOTQO0bEFxx/RQsNlFlic8gfQAnIW07S/Lo5jEQwtzCq9WBeIQOg7B8nywWFTpg41bHsVqXJ3hcZkthGvMoD2fKCvYWTy8xYUg9vwqg/wzKnqJVHu2+CJ+qtwUYXNZ032BK99uDJ9Ur/zc78qJN9jLoagB5Kxoa7wyGM86lDodpEDXvw5fg8Eso2mDWc0Xr5hlF6/pFFU6OdX1pXNjfSdv610Svb45UkOSq+IvmX9jV60QtJ17cXe2tqNzB1wWqnzTaKEBI7/6Fca3vEpQQmYPiaMAjhZf1F2JWg9UAbJjPkqW3jceDpOB9Q9mp99K1rqnBWzbxYGuOpTmXWrelNS+1Zk/rNjWnp7Xb1QO6Glpb15qnTo/E36cMqw7lYJHES0pwoP6I0jjyCgmSY0d1PCTTqbSaaJ2UwZ1Yj8CsBI7F7bZmu2eyqhcSukOa/HPi/4uO5sRp7usSJZpabn/Omf7BLnRmKgV9YyL2x7MZ2f39OvouSdbl34fVqihIHkTBtUeSQN3HbJ3kSUaIusvyHEp6RcL/HIs5+ed2sH6UZeB9siMv3hYbOlUrq1poqSAPNNORr0Zv/RRrRnsH8Budj9e+cVu0rbvPu01YPlp3V4tNULIkuP7EQjd76ptTc1rYJi/sp/AhfOKjuT24aclxhRdHV/r6bslb3sOMTa+dRr9oYUa4mZZ8c2d+WPZLb8td5yk0b5de0s5uPy+WwfWw5aVDC+9m8PkTC1yW+G6ceNe3i3DpP94ZFvq7G37jxdOHxWLKPjxFGMM7ztZzu1ueDmM+cgq/48UTYzcLTdp/kWJe8jHdzW8/35b4WU6vF+vbmzaL/movPt58YLd/zVjf8Muw8J4+ptun26s/H8LSaoZXPRZ02nOM8Xnq7fr46yeO4ad846czoz8K9X46sQJ3bPEby5imoXHXYfrA7W78hG37KS+iObO46238Mmae64E2q+TLSTEYzWkNT63LBr1JwdNPa38U431sDMCTmJ+0c95hhpg3jzEG/KddY1h2Lb+wmOR5QvwbkMNu4MabgTth6h3jhxtefjB8l9tYz5iUTszL8QZytUCP2U+HoMmR64M38IE1hrEv52U8nYCOrg2adf4Q54NRF+t/SvujrtFPY8wDnSOOMWMb83dinXKS89LZ+KN54bkcf7HnKAS/cwN0lf00LMAf7VfyjmUIHsReQybWvOKQs2UNRpOYd/Zjcj4imhzwRvtNQDejNbB/F3xMQAvb8cIyeRpjf0/SANmCviLoMBu8WX5vgv6Z4gv6uOIlzYFeIcMJZA+5dhjosyysATlA3qMYa0wY6ePPVOlwzi1fyD62lBwwfgKeQ0PJXugdWJDv11nSB6b6JuyqtMgl/L17fzFl/vlTYtM+SYnt05TY3qe+xwmx/f0S4uapn6a0oas5BuUGzaZIEi41p00Jw3MXDubzc+XPcw0dVUCq6fV5xLl6q56R10roc0c1P1vG8Hb0GCeV87mCqnGmcDa/V+Hc+rGnKN1WS7dfRNi/6BTFYPVCw2z900co+wrwHz8S/tpC+/dR8jcfJbNXVve69d7l/bdh9/Qw2PjKChotMMW2S7MobjLqatnqoelSVEVX29Fapta1tHZTazo/Q939GsieQvSV1fpPUY2/6GW/pho3WnajHorftTavFrV+VKleme7vWv0XrNUfgs+79ccbL/GuQN8c9aDrUb2JWg31YYH6dl+/ojZ0PdTyE9NzUYuX4ZaeUUtiPNd9V4wvqPYcjFAjlhz15Bxz5/RMNSijOr0/GuPnZCdGYDzqRoYaHuuGGM9Rl4ZMzC9QG7tDmo853Ebtbg9GQ9qfamPU0p49EHsy1I5WgToeNXEXNEJGgq458VHKMaiJUadzV9TEuyN6LapR+6Mh1cOooVnBE9S2qLkl/UOqVRkXsmCCHsyziXbM2aIO3nFBE2gfhXT+YAxQC4PW7V4GI9S0o0pWQ4yZ73zBO/YqqGaX47AnanWSw4T4ZXR2Img3ISuXo052xL7iPAK6QK2t0zuwQWN1Xsn/BrIY0ZlLGB+vKeXvQZ+8RO2toyYvfNTrPB2DvuFOrgW53Fi64h/7CLkUCguM6AAemMRA14TcSz+NsQ+dVVDd7hUCO1TL31hbMQ908BTz3LhQ8xj6Sl/JbSDW8CS9KfhKh7qUL4eeIGO5d+nT3iWdIQjMMcjYhFwlneUcdM5todMEeionWGduyf3ozCY0RTthDXYEjIAPx5Brebo6X2HgZyfkKLBIcpEynibCLsDDWKx516GzKk9hmJ4dyyc9mvLM4m9si0E+TPAjbaOciDWGlZxtolfqU5zPVLKCHOl8ZqywROdTcaV36NTSuZDHMMd40kcpdeoBw0Nd2QpaoKtyaFfYwTw6N8rrMnSOZQg8irMfS5xB3VjAgSd1NwIulU6AHToL2tKZksTdWOEk3hCHCv/vZGfDnZLPGVsDv2+ys67pL2s2xl5jY/Dd5+xL2mzyRfuCf4ulPn+QfYlzSqLHHSt5H/wk0U0Yk3yQfIkmOnut+dy85nMTh+Ru+nRuSVhTtuS5JPeupIt0c0NjKl90bHMcNjc3Btc03wFPjsSnsc0FnYTHDvgTOJs2vKSJ2P3xuj2bXsXx7cNifYfIiEgqT5qxgjiRdBEh0wmQ5JgCxYY4Zd1xsl5YvtydOBSWV3kSWNGYcRFxGHkANqjGpXTi3FXWNi7FqTPQPThokCIWRbPSr6xVSLZam8NiYJXCuxGn451AkUSlLlDpxminaNot5Ol4vFOWusNcm1cWIqxdRgBovyQNDUtuw4oKWI9Ckzgp3lZeBH0GeJAeMuVHezsleKg0TggtjmQGvicbiSyBJrI2GxZLc+iUnSI8aKwsdw4vMa4iPMlb7r+YUOTdcGl1r4pazyzKrFlU8SaLMlQGcc6iKhw8tyqFgXOWRZnXUdaQMMoaDF5lSN9kWWHdsop3sqweeRV4XjcUvAciYnHBo3/96EMjBkU90AJ+4EGvtgVFBvCkvC5H/7BUHtTkUvfwkmPyNBZ9zZCZgsBJTntVkYm+wPgjj75MIEJQJOJMRc2doLXkW8nTGLQK7yK9/g1h2Yvx0xb7CtwT3x7zpX0KXStsQic0n2yA0VcYiqpq/VBFvqP1l1l8dwP7pmx2FCsekVWDL1/Yz+0amQBwMFeZIcYm0J3ANjIG0utozg4ZxVxEFPElqKjwB52lHuliJ/zCqGtVGZfAIn1pEZTR16KYMugqQ9H3ER/Ygt2bhLkByYM84Yiy6Mq7E4aq7Jy+5kB3Cns++bV0XmXlW/SBhrn4+uW5hLGhiLygV5cZ123Du2IKfyHpV8eeikY/Bb72GY/8IuXRF6yt1IWw2UpPz/vYQGTb5Ht8yHlsiKxHRTnqAz7yc3OO2snXUpaw3VcHh3Y19kPKZbYNeU9iRA36alhlDfCXXZ2+sJE/G7hDa9+2/Jd9WaqfRlhV+X50Hmw1T4+Dq7b3v2Oln5wnfIqmyfon/Xp0/IFgGqxn++8VL35WavwynxL0558STqGjsx/5UUk3fp9F/bJnUSKb90ddZCXDku4T+KMQEd1H7UdZzbBApEMmQjR4lD2jz6MxOd3ZkGM9e+p2LcqOkDlgPDKT0qv6rGlKNS7qI9TNvtndeuKOR7Uu0w97ckR8yhxl35Qyl9SJKcKqPXeULYj7I0d7IfpvZUUh9/MXlKUioxE8heV+b8oGSrp3Mqa55Z+Ume3Xud3Jmi+muxL6fq3EMRENdWQiWGPGKDM5Wo/uWKi+BUX17S8jw0TMy+vzxnReIPml7HTPxxQ1fY0+ymrYQNzzGW+kfGLKhpDpjeWe18NCZE6KTsiF7fv+QtY4ckBT98DjsruT94EkLSIzqumCHekCeqrpkB3pcIEqJdzvG47ontH8BR6dYx4ps6T7MqQ/uSfd3YHcYJvHcis45KaqS8G3nMdq85Bd7XGICvTAhz7R5V2eir6JBUzhbw0b8RE2gJsapuIjTFnRHPuOUL1dQ35He0r5PaN9OTzBCrL5l+RhHOPs9XKcnZFjbyxtlRsHHm+ZxCk7wuntGPaEcZ590Oe8hnf0iZMCte5nOr+iMzQhj+vuVp7f7e3x2G7ymt24z3VW0diuzkU6rXL6EOLp1/6lgdMbUo0zd1x+bCprnaYjX/io+zvB/dkwxV73G0c/Nsc9d+fuUmt3xL0AW3NcrdVUFwTwTPcLDM3RBfA6WrMlxvS0dqsCnkXTW47WtE7B+R9xG6FHE7pNrWmK+wkN2oBabLrA0Jbbt9X1hnaPrjrIzVo9QQeWbvz3PdCtGeZ9M4zC8B0h/uzu2K9z6c+069WZxexT5F6eQa793S56vc0dHiC8B7VNqHKab4Lwb+D9aOBZdeA1jDMus3UGeNZ3A96ZXyeRroqQA1C1tVb3BSi2tHZDOEH0Crw1gT37jMd9r9urMnzWwdfriV97/n17Vb+0Lqr/D+H573/X/dpFwzxFWOPtCMPr4b9MkHemDv8vhdn9Pw==
\ No newline at end of file
diff --git a/docs/database/redis/images/redis-cache-penetration.drawio b/docs/database/redis/images/redis-cache-penetration.drawio
new file mode 100644
index 00000000..331f9227
--- /dev/null
+++ b/docs/database/redis/images/redis-cache-penetration.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/database/redis/images/redis4.0-master-slave-replication-replid.drawio b/docs/database/redis/images/redis4.0-master-slave-replication-replid.drawio
new file mode 100644
index 00000000..04ed496f
--- /dev/null
+++ b/docs/database/redis/images/redis4.0-master-slave-replication-replid.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/database/redis/redis-questions-01.md b/docs/database/redis/redis-questions-01.md
index ae5b4c6e..c6a09ca1 100644
--- a/docs/database/redis/redis-questions-01.md
+++ b/docs/database/redis/redis-questions-01.md
@@ -209,7 +209,7 @@ SDS 相比于 C 语言中的字符串有如下提升:
3. **减少内存分配次数** : 为了避免修改(增加/减少)字符串时,每次都需要重新分配内存(C 语言的字符串是这样的),SDS 实现了空间预分配和惰性空间释放两种优化策略。当 SDS 需要增加字符串时,Redis 会为 SDS 分配好内存,并且根据特定的算法分配多余的内存,这样可以减少连续执行字符串增长操作所需的内存重分配次数。当 SDS 需要减少字符串时,这部分内存不会立即被回收,会被记录下来,等待后续使用(支持手动释放,有对应的 API)。
4. **二进制安全** :C 语言中的字符串以空字符 `\0` 作为字符串结束的标识,这存在一些问题,像一些二进制文件(比如图片、视频、音频)就可能包括空字符,C 字符串无法正确保存。SDS 使用 len 属性判断字符串是否结束,不存在这个问题。
-多提一嘴,很多文章里 SDS 的定义是下面这样的:
+🤐 多提一嘴,很多文章里 SDS 的定义是下面这样的:
```c
struct sdshdr {
diff --git a/docs/distributed-system/images/distributed-lock/distributed-lock-redisson-renew-expiration.drawio b/docs/distributed-system/images/distributed-lock/distributed-lock-redisson-renew-expiration.drawio
new file mode 100644
index 00000000..43a096b3
--- /dev/null
+++ b/docs/distributed-system/images/distributed-lock/distributed-lock-redisson-renew-expiration.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/distributed-system/images/distributed-lock/distributed-lock-setnx.drawio b/docs/distributed-system/images/distributed-lock/distributed-lock-setnx.drawio
new file mode 100644
index 00000000..c8c345c0
--- /dev/null
+++ b/docs/distributed-system/images/distributed-lock/distributed-lock-setnx.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/distributed-system/images/distributed-lock/distributed-lock-zookeeper.drawio b/docs/distributed-system/images/distributed-lock/distributed-lock-zookeeper.drawio
new file mode 100644
index 00000000..83f96de5
--- /dev/null
+++ b/docs/distributed-system/images/distributed-lock/distributed-lock-zookeeper.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/distributed-system/images/distributed-lock/distributed-lock.drawio b/docs/distributed-system/images/distributed-lock/distributed-lock.drawio
new file mode 100644
index 00000000..397d121d
--- /dev/null
+++ b/docs/distributed-system/images/distributed-lock/distributed-lock.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/distributed-system/images/distributed-lock/jvm-local-lock.drawio b/docs/distributed-system/images/distributed-lock/jvm-local-lock.drawio
new file mode 100644
index 00000000..35ec1766
--- /dev/null
+++ b/docs/distributed-system/images/distributed-lock/jvm-local-lock.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/distributed-system/images/distributed-lock/redis-master-slave-distributed-lock.drawio b/docs/distributed-system/images/distributed-lock/redis-master-slave-distributed-lock.drawio
new file mode 100644
index 00000000..ad79bccf
--- /dev/null
+++ b/docs/distributed-system/images/distributed-lock/redis-master-slave-distributed-lock.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/high-performance/images/message-queue/message-queue-pub-sub-model.drawio b/docs/high-performance/images/message-queue/message-queue-pub-sub-model.drawio
new file mode 100644
index 00000000..7a28c60d
--- /dev/null
+++ b/docs/high-performance/images/message-queue/message-queue-pub-sub-model.drawio
@@ -0,0 +1 @@
+7Zttc6M2EIB/DTN3H+IRCPHy0SSmnfZuejPpTNtPHQwy5oIRB3Li3K+vBBLmRY59iR27PpwZB62EAO2j3dUKa/B2tfmlCPLlZxLhVDNAtNHgnWYYOjBc9o9LnmuJC2AtiIskEo22gvvkO5ZnCuk6iXDZaUgJSWmSd4UhyTIc0o4sKAry1G22IGn3qnkQ44HgPgzSofSvJKLLWuoY9lb+K07ipbyybokHngfhQ1yQdSaupxnQt3zfd+rqVSD7Eg9aLoOIPLVEcKbB24IQWh+tNrc45WMrh60+z99R29x3gTN6yAnfpnfu796j+zA34Hcr/Pz17rt9o4vHfAzSNZbPUd0tfZYjVD0j5r3oGvSelgnF93kQ8tonxgSTLekqFdWLJE1vSUqK6lyI9Qhhm8lLWpAH3KpxLRsGFj+DZNQPVknKAfoNU68Ikqxkt/CZZETU35N1UV1wSSnjwkBwyr7Yo/Iv3qCcxITEKQ7ypJyEZFVVhGXV1F/UvbPDdv/I8MQVxBDgguLNzsHVG5WxqYDJCtOCdQnECQgYE1SfJOaBaQq9P22pMpAtWy3bTIFGHAia4+YKW42yA6HUH1GwQr9WSsW4dhRtfVsTWXFTVhOVjTLQUb7ZVrKjmP//UpBoHeJC9qbVepDVA4jYrbIZjfcDFJR5Pc0XyYZD1yfKvJ2arpIoK3TwfMFrHjAN+ZADXpDTDlwLa4YDuqRZQ9JkkzZmUnZ0xoz9NgRn0ZQba1YK06Ask7BnNvjA175BR6LcUi2zqgBwBeJNQv8W5/Djf7hiJ0iU7jZCz1XhWRKwE4caIWn2jQsCBEcDr9XDgw2vvI8X5/4QoxYmSIGJlBU4DWjy2L0NFTviCl9IUhkUQSm0u5QivYdfffvirLbf6nWEQK8j0OuIBkWM6aCjCuXmsV9PN9xPdwtkPrMTFl18CuY4/ULKhCYkY3VzQikjgdm3NIm5IGTqZOYTeilv6TXBRIv6RfVpdToV51KSK+kdmEQAHOAPsI+Ccln5c1GT88dYbWIe4E0SUtqThEVb5QRnjzglOf73wwqXJQuEPv7ATO3MukuZVm+yu9Dt2V1b4eEVE8o4ld0195MptRs+pwkL4or9/ndeR3uf5o2gQfOPNWW9YCEvCA0E3C4Y+ukF4n9KP119hujUn+v338jqcQSb2LFFElQFivBUYSIajdxo5GoYL8zIWSOZI5mV2UQ9Mt0zk3lA6mQk86cg07gwMh0FmXWapsyD7PVJn1um/PVqm/SZF9t8T5MGqi9x6jTQwglxGKrQnjvIRC+v+6+COre3LoZIFUa+ayLI3W8RW4mgjPC1xFuyQPL42FmgkgYFHearKrGfpPJ22bOI0mVAxcApnpvsGC+0BoYXtyNTleTQaMdLOQnLU6dkXminO2q23yc3Zbu9XL31ytyU3U8J9Ds6cW7KPIKlh8zScwZaG1o3YT3peH0Rzz8Y/DrsDgFzbeIAgY+12e+5CG1maZ6lOY42czTP1Dy3JWHfujb1D3YWjMgqXOq5hn6g1I+CVkkU8T68ArPnDOZVfxz0nOuh0gzyNHR3wKTdaafFdqToXGt8eXvS7LaRO436DZiYyHWOQrmcjILNm14HZLEo8Umo1BWbTjOkOb7m6trM1Zj/YRwosOjpn4057aq+6+yFA2lHBkJ0OCKqMGS74bk/jJDuCl6EBzhCWGH20+36MJi13jOY1RXbS0N2GFZs2rh+BRo7sP/XNMng517cvn4tdKF+eunAvcvT0XVAEn1cxf8Mq3inZ/hM48yreOgqIyJpE4Rx6poXUtAliUnGCCWcograr5jSZ6HUYE1J1wo2q4ZmYXDYquESN89f83rAEVc/+qHLH8NUo/jWdU0vRTrYKt+xrjnacsQaiT3j6x4H0wffSN/bPO5wzfonyZNwgM5b3jtcLLClTg9GtjsHV+O0LKeXyXAOi9bhCd84VGQBZ6bmOZrn8TB9amhygTtG5xdGk70jL3au6Fx2rM4kIA6VA3mmaTrjXNWLQDYl2LJwyoRVG3emOcPc0pC3loYNWe7E2gD4/rVouv8OKVTYDVtlN06madVrduOe1ZXvWZnImdhn3rQyVBmAkbwrJw9Z9rl3S02FcxtTT2PqiefcVXC+77vF49tNI5zqvOi53wg1Va+ZjJveF7LpvQcmBCYAmBA40NWhZXa3qE2XhYMmggjquuPw31CeCCGkcr0jQleAEI/rTLeF0A8TxIrbH2XXmfHtL9/h7D8=
\ No newline at end of file
diff --git a/docs/high-performance/images/message-queue/message-queue-queue-model.drawio b/docs/high-performance/images/message-queue/message-queue-queue-model.drawio
new file mode 100644
index 00000000..ea1c6cac
--- /dev/null
+++ b/docs/high-performance/images/message-queue/message-queue-queue-model.drawio
@@ -0,0 +1 @@
+7Zrbcts2EEC/hjPtQzS8iLdHSRGTdpLUidpp89SBSIjCGCRoELKkfH0XJCDxZstJ7Vp2Jc9YwAJcAtyDXWBFw5llu3ccFeuPLMHUsM1kZzhvDdu2TDuELynZ15LQdGpBykmiOh0FC/IN6yuVdEMSXLY6CsaoIEVbGLM8x7FoyRDnbNvutmK0fdcCpbgnWMSI9qV/kkSsa2lg+0f5e0zStb6z5akJL1F8nXK2ydX9DNuJvCiKgro5Q1qXmmi5RgnbNkTO3HBmnDFRl7LdDFP5bPVjq6+L7mg9jJvjXDzkgpvpl6Vd7vPZ+yj8vP32x++/5J/eKC23iG6wnoZHQd90xUAtjFrs1ZPybjZMN7wpKztOoIPlFrtjI5RS+X3FWbKJMdfaYFi1wrpZPZGDbhuGCgaHynS7JgIvChTLli0wB7K1yCjULCiisqgpWJEdTuRwCKUzRhmvFDnj2WQc+iAvBWfXuNHixQFermTLNRaxtI0pK9oqpppahDJCJcu/YjHliOQljPQjy5lqX7ANr8a2FgIQtV35FFx46vKf7FCOUsZSilFBylHMsqohLquu0arWDsWmfteeqjv0jaothLnAu4ZIGfkdZhkWHFSaqnWsgVML0nFUfdvAW4nWDbK1DKkFlR40H6GCguLqOxizBxjrmj9PJnItQy2mqCxJ3LZ69eBr12G5qt4wLSw605QGxDsi/lLXyPJXadiRq2pvd8rOVWWvCbgThxoh7RXs8wak1Lc9sdRx0vKHfYwamLgDmGgZxxQJctv2okPsqDtcMVI5FEWpa3Uo7eJXz0dd1XRrHUXeuKPI7ygSiKdY9BRVKB+m/eN0O6fpboAslzGB4PMBLTG9YiURhOXQtmRCAAng3yhJpSAG+4L7dKZU9pweYk2D+lX1aSidqGsFKwbp7blE0wzMqId9gsq1dK16QRRyGtkulfF/RFjpjwgE43KE81tMWYH//inDZQlx8ufvWKmtVXfGy+rhftd1OiCO+37XHlhQ9lP53fFpMrV14z0leVLxdiL+LiWEOPmwPAgOaP62EaAFKzlnAim4Q7Mfp1eu/BuM09Wnj079ef3x2zc7HJk2RLAuSY7bJ8nSwkdHyb04uYuTq5ycf2ZOzruQeSGz2geGHTK9ZybTv5B5IbMi0zszMoMBMus0TVmg/MeTPjMw/iY7Jn2W/JjvOaSB6ls8dRpoFcQ4jofQXgbu2L3/3P8qqAu7B+znTgOFp/1hIw2UM3mS+Dc5IF1+7BxQKRAX/WxVJY4I1cOFuajamSN1MnGk3EWdR7mnnzpvnkmCye/uB7p5oYcmmAL3eRNMeh1fNhL/941Ej8TnPnxZAz8fzV0jiIzQMuahAbEkgIJnTD0jCGQBqpOohy/MX7SdfRskFQyaMV6JejB3Sc1IktC7NhS8TmadDAJN5JzXQpPbTZwHfZq8/5SmgVR6nx3AKgyMMKpAg4L/omnSDmyhhm+9Frq8bqLogdvPp6NrIB3eZwkwmwTGxJKScG4E/SNKn66GPW1db4VA04yi13/g6P7ufNjINSzuD1jceQSLz/fO18+EF5vC/fTF5zdsnHiD7zZc9k0vc9/Uw3AA1rv3Tab/bPumQTLt+wJdYEzHxjS8bJteCExPt22C6vH1sPo4eXwHz5n/Aw==
\ No newline at end of file
diff --git a/docs/high-performance/images/read-and-write-separation-and-library-subtable/horizontal-slicing-database.drawio b/docs/high-performance/images/read-and-write-separation-and-library-subtable/horizontal-slicing-database.drawio
new file mode 100644
index 00000000..1bc964d3
--- /dev/null
+++ b/docs/high-performance/images/read-and-write-separation-and-library-subtable/horizontal-slicing-database.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/high-performance/images/read-and-write-separation-and-library-subtable/two-forms-of-sub-table.drawio b/docs/high-performance/images/read-and-write-separation-and-library-subtable/two-forms-of-sub-table.drawio
new file mode 100644
index 00000000..c4c81fbb
--- /dev/null
+++ b/docs/high-performance/images/read-and-write-separation-and-library-subtable/two-forms-of-sub-table.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/high-performance/images/read-and-write-separation-and-library-subtable/vertical-slicing-database.drawio b/docs/high-performance/images/read-and-write-separation-and-library-subtable/vertical-slicing-database.drawio
new file mode 100644
index 00000000..d56fe197
--- /dev/null
+++ b/docs/high-performance/images/read-and-write-separation-and-library-subtable/vertical-slicing-database.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio b/docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio
new file mode 100644
index 00000000..3a2c775a
--- /dev/null
+++ b/docs/java/concurrent/images/thread-pool/production-accident-threadpool-sharing-deadlock.drawio
@@ -0,0 +1 @@
+7Vpbj5s4GP01fkwFBgw8QkLaSl2p0qzU3acVA+ayJTglziTpr18bTLg5WaYThrQdaTRjf75gn/Md+7M9QFtuju8Lf5v8QUKcAaiER6CtAISqqiD2h1tOlcWyYWWIizQUlRrDQ/odC6MirPs0xLtORUpIRtNt1xiQPMcB7dj8oiCHbrWIZN2vbv0YDwwPgZ8NrV/SkCZiFtBs7B9wGif1l1VkVyUbv64sZrJL/JAcWibNA9qyIIRWqc1xiTMOXo1L1W59ofQ8sALndEyDKF4s0OLpz4do5cF/PirF8tNuoVW9PPnZXkxYDJaeagQKss9DzDtRgeYekpTih60f8NID45zZErrJRHGUZtmSZKQo22qhj60oYPYdLchX3CpBgYUfI1YynIaY2RMuKD62TGJa7zHZYFqcWBVRaguEhYsZInto+FJrEpIWV0jYfOEi8bnjBkWWEEA+A1R9WlCjCKNACmpo2o+KMgmoqj43qsaNUb09RlCbGyM0xMgzgGsClyXYbxdYa+BZwPK4kRWxrI24xWVpHXgIuA5g02KVbae06LwV++GVHeCoA9AZVrSLbNcvc5LjnhMLk5+lcc6yAWMAM7vLkU/Z2uuIgk0ahvwzUiobsrnHRySnYvdQ0W3YPe9Bgl5Twq4pYRdOxa45il0ELBs4JieVsWUteR3HKxNvpA5IVdHcrFoSVhGwl8Bx3qT6g6xKY4BXZdWW7FYo4+jvtn7eoQV92/MYsMRlsSuBcVgFBsmxKWSpuPzLhe4Ad80TDnMPt/QEFTiKzDfWwF0Cy+IWVsG1ygVjDSxN3o/NSpXSkVhXTl63t+uxMyiq4YvB9B2MAcMC80tu0A5pej7QjxsNbIW6LMSx4KOGbuQ1RtdpdDh0GmgZQ6dR7am8RhLT4JCdR0SWFDQhMcn9zGusPXU1dT4RshVw/4spPQm8/T0lXTIYgsXpL9G+zPzNM++MOrs6tgtXp+cKeUf2RYCvzFutj3Z+EWN6raKgg6NyleICZz5Nn7qnuNvzpb3xdZ0vdFd81ePubLYmXyBdNNw/hxvoxGfhCXZGo78zyuKdVz2jQP031QwcqxnrrjQDjTn4mgN3+65wr8f9ghBSRZdCyAsrHhwb6N3/pWB/4dNnvxaE6Ddd+LSRAqzZuBMB1nf8b3xdAki9K75U2WPGxAtm/usumGj2SFEd8ZCC89Dhz3zgfFUV+rvkDHQLVG7/7FOKi7y0QEU7Q1o/7cGukKBxDdr/dfsWcIYEt9o2Wh3iC59JykbS8Ibsd0aXuf6tViV50a4hZdiV2XUBQ+91VC0Jg45Kds8TfwHhsjeeSl+clVEK1pmCS+kORGwAZ1Veig3OeQu1JePqSxPIeMS7XXsR128ja1PpHQCV2WUteaV67jqty9fpKxRPE9pOQJCmzk6Q5EliaoJgR4OTbaWv83bep1SfX3Mvf4/4AUp/Gs0Zs2uu/thrEpT/yppD81MquWyentKfRnOm5LntVgSxbPOPdVV02vx7oub9Bw==
\ No newline at end of file
diff --git a/docs/java/jvm/class-loading-process.md b/docs/java/jvm/class-loading-process.md
index 8bb0b336..37dac11b 100644
--- a/docs/java/jvm/class-loading-process.md
+++ b/docs/java/jvm/class-loading-process.md
@@ -1,17 +1,15 @@
---
+title: 类加载过程详解
category: Java
tag:
- JVM
---
-
-# 类加载过程详解
-
## 类的生命周期
-一个类的完整生命周期如下:
+类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为7个阶段::加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)。
-
+
## 类加载过程
@@ -19,7 +17,7 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
系统加载 Class 类型的文件主要三步:**加载->连接->初始化**。连接过程又可分为三步:**验证->准备->解析**。
-
+
详见:[jvm规范5.4](https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.4) 。
@@ -35,9 +33,9 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
虚拟机规范上面这 3 点并不具体,因此是非常灵活的。比如:"通过全类名获取定义此类的二进制字节流" 并没有指明具体从哪里获取、怎样获取。比如:比较常见的就是从 `ZIP` 包中读取(日后出现的 `JAR`、`EAR`、`WAR` 格式的基础)、其他文件生成(典型应用就是 `JSP`)等等。
-**一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 `loadClass()` 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。**
+一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 `loadClass()` 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。
-类加载器、双亲委派模型也是非常重要的知识点,这部分内容会在后面的文章中单独介绍到。
+> 类加载器、双亲委派模型也是非常重要的知识点,这部分内容会在后面的文章中单独介绍到。
加载阶段和连接阶段的部分内容是交叉进行的,加载阶段尚未结束,连接阶段可能就已经开始了。
@@ -89,7 +87,7 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
就必须先使用 `findStaticVarHandle` 来初始化要调用的类。
6. **「补充,来自[issue745](https://github.com/Snailclimb/JavaGuide/issues/745)」** 当一个接口中定义了 JDK8 新加入的默认方法(被 default 关键字修饰的接口方法)时,如果有这个接口的实现类发生了初始化,那该接口要在其之前被初始化。
-## 卸载
+## 类卸载
> 卸载这部分内容来自 [issue#662](https://github.com/Snailclimb/JavaGuide/issues/662)由 **[guang19](https://github.com/guang19)** 补充完善。
diff --git a/docs/java/jvm/classloader.md b/docs/java/jvm/classloader.md
index 93cd907e..1785be62 100644
--- a/docs/java/jvm/classloader.md
+++ b/docs/java/jvm/classloader.md
@@ -1,123 +1,304 @@
---
+title: 类加载器详解(重点)
category: Java
tag:
- JVM
---
-# 类加载器详解
-
## 回顾一下类加载过程
-类加载过程:**加载->连接->初始化**。连接过程又可分为三步:**验证->准备->解析**。
+开始介绍类加载器和双亲委派模型之前,简单回顾一下类加载过程。
-
+- 类加载过程:**加载->连接->初始化**。
+- 连接过程又可分为三步:**验证->准备->解析**。
-一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去自定义类加载器去控制字节流的获取方式(重写一个类加载器的 `loadClass()` 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。
+
-所有的类都由类加载器加载,加载的作用就是将 `.class`文件加载到内存。
+加载是类加载过程的第一步,主要完成下面 3 件事情:
-## 类加载器总结
+1. 通过全类名获取定义此类的二进制字节流
+2. 将字节流所代表的静态存储结构转换为方法区的运行时数据结构
+3. 在内存中生成一个代表该类的 `Class` 对象,作为方法区这些数据的访问入口
-JVM 中内置了三个重要的 ClassLoader,除了 BootstrapClassLoader 其他类加载器均由 Java 实现且全部继承自`java.lang.ClassLoader`:
+## 类加载器
-1. **BootstrapClassLoader(启动类加载器)** :最顶层的加载类,由 C++实现,负责加载 `%JAVA_HOME%/lib`目录下的 jar 包和类或者被 `-Xbootclasspath`参数指定的路径中的所有类。
-2. **ExtensionClassLoader(扩展类加载器)** :主要负责加载 `%JRE_HOME%/lib/ext` 目录下的 jar 包和类,或被 `java.ext.dirs` 系统变量所指定的路径下的 jar 包。
-3. **AppClassLoader(应用程序类加载器)** :面向我们用户的加载器,负责加载当前应用 classpath 下的所有 jar 包和类。
+### 类加载器介绍
+
+类加载器从 JDK 1.0 就出现了,最初只是为了满足 Java Applet(已经被淘汰) 的需要。后来,慢慢成为 Java 程序中的一个重要组成部分,赋予了 Java 类可以被动态加载到 JVM 中并执行的能力。
+
+根据官方 API 文档的介绍:
+
+> A class loader is an object that is responsible for loading classes. The class ClassLoader is an abstract class. Given the binary name of a class, a class loader should attempt to locate or generate data that constitutes a definition for the class. A typical strategy is to transform the name into a file name and then read a "class file" of that name from a file system.
+>
+> Every Class object contains a reference to the ClassLoader that defined it.
+>
+> Class objects for array classes are not created by class loaders, but are created automatically as required by the Java runtime. The class loader for an array class, as returned by Class.getClassLoader() is the same as the class loader for its element type; if the element type is a primitive type, then the array class has no class loader.
+
+翻译过来大概的意思是:
+
+> 类加载器是一个负责加载类的对象。`ClassLoader` 是一个抽象类。给定类的二进制名称,类加载器应尝试定位或生成构成类定义的数据。典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的“类文件”。
+>
+> 每个 Java 类都有一个引用指向加载它的 `ClassLoader`。不过,数组类不是通过 `ClassLoader` 创建的,而是通过 JVM 在需要的时候自动创建的,数组类通过`getClassLoader()`方法获取 `ClassLoader` 的时候和该数组的元素类型的 `ClassLoader` 是一致的。
+
+从上面的介绍可以看出:
+
+- 类加载器是一个负责加载类的对象,用于实现类加载过程中的加载这一步。
+- 每个 Java 类都有一个引用指向加载它的 `ClassLoader`。
+- 数组类不是通过 `ClassLoader` 创建的(数组类没有对应的二进制字节流),是由 JVM 直接生成的。
+
+```java
+class Class {
+ ...
+ private final ClassLoader classLoader;
+ @CallerSensitive
+ public ClassLoader getClassLoader() {
+ //...
+ }
+ ...
+}
+```
+
+简单来说,**类加载器的主要作用就是加载 Java 类的字节码( `.class` 文件)到 JVM 中(在内存中生成一个代表该类的 `Class` 对象)。** 字节码可以是 Java 源程序(`.java`文件)经过 javac 编译得来,也可以是通过工具动态生成或者通过网络下载得来。
+
+其实除了加载类之外,类加载器还可以加载 Java 应用所需的资源如文本、图像、配置文件、视频等等文件资源。本文只讨论其核心功能:加载类。
+
+### 类加载器加载规则
+
+JVM 启动的时候,并不会一次性加载所有的类,而是根据需要去动态加载。也就是说,大部分类在具体用到的时候才会去加载,这样对内存更加友好。
+
+对于已经加载的类会被放在 `ClassLoader` 中。在类加载的时候,系统会首先判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载。也就是说,对于一个类加载器来说,相同二进制名称的类只会被加载一次。
+
+```java
+public abstract class ClassLoader {
+ ...
+ private final ClassLoader parent;
+ // 由这个类加载器加载的类。
+ private final Vector> classes = new Vector<>();
+ // 由VM调用,用此类加载器记录每个已加载类。
+ void addClass(Class> c) {
+ classes.addElement(c);
+ }
+ ...
+}
+```
+
+### 类加载器总结
+
+JVM 中内置了三个重要的 `ClassLoader`:
+
+1. **`BootstrapClassLoader`(启动类加载器)** :最顶层的加载类,由 C++实现,通常表示为 null,并且没有父级,主要用来加载 JDK 内部的核心类库( `%JAVA_HOME%/lib`目录下的 `rt.jar` 、`resources.jar` 、`charsets.jar`等 jar 包和类)以及被 `-Xbootclasspath`参数指定的路径下的所有类。
+2. **`ExtensionClassLoader`(扩展类加载器)** :主要负责加载 `%JRE_HOME%/lib/ext` 目录下的 jar 包和类以及被 `java.ext.dirs` 系统变量所指定的路径下的所有类。
+3. **`AppClassLoader`(应用程序类加载器)** :面向我们用户的加载器,负责加载当前应用 classpath 下的所有 jar 包和类。
+
+> 🌈 拓展一下:
+>
+> - **`rt.jar`** : rt 代表“RunTime”,``rt.jar`是Java基础类库,包含Java doc里面看到的所有的类的类文件。也就是说,我们常用内置库 java.xxx.* 都在里面,比如`java.util._`、`java.io._`、`java.nio._`、`java.lang._`、`java.sql._`、`java.math._`。
+> - Java 9 引入了模块系统,并且略微更改了上述的类加载器。扩展类加载器被改名为平台类加载器(platform class loader)。Java SE 中除了少数几个关键模块,比如说 `java.base` 是由启动类加载器加载之外,其他的模块均由平台类加载器所加载。
+
+除了这三种类加载器之外,用户还可以加入自定义的类加载器来进行拓展,以满足自己的特殊需求。就比如说,我们可以对 Java 类的字节码( `.class` 文件)进行加密,加载时再利用自定义的类加载器对其解密。
+
+
+
+除了 `BootstrapClassLoader` 是 JVM 自身的一部分之外,其他所有的类加载器都是在 JVM 外部实现的,并且全都继承自 `ClassLoader`抽象类。这样做的好处是用户可以自定义类加载器,以便让应用程序自己决定如何去获取所需的类。
+
+每个 `ClassLoader` 可以通过`getParent()`获取其父 `ClassLoader`,如果获取到 `ClassLoader` 为`null`的话,那么该类是通过 `BootstrapClassLoader` 加载的。
+
+```java
+public abstract class ClassLoader {
+ ...
+ // 父加载器
+ private final ClassLoader parent;
+ @CallerSensitive
+ public final ClassLoader getParent() {
+ //...
+ }
+ ...
+}
+```
+
+**为什么 获取到 `ClassLoader` 为`null`就是 `BootstrapClassLoader` 加载的呢?** 这是因为`BootstrapClassLoader` 由 C++ 实现,由于这个 C++ 实现的类加载器在 Java 中是没有与之对应的类的,所以拿到的结果是 null。
+
+下面我们来看一个获取 `ClassLoader` 的小案例:
+
+```java
+public class PrintClassLoaderTree {
+
+ public static void main(String[] args) {
+
+ ClassLoader classLoader = PrintClassLoaderTree.class.getClassLoader();
+
+ StringBuilder split = new StringBuilder("|--");
+ boolean needContinue = true;
+ while (needContinue){
+ System.out.println(split.toString() + classLoader);
+ if(classLoader == null){
+ needContinue = false;
+ }else{
+ classLoader = classLoader.getParent();
+ split.insert(0, "\t");
+ }
+ }
+ }
+
+}
+```
+
+输出结果(JDK 8 ):
+
+```
+|--sun.misc.Launcher$AppClassLoader@18b4aac2
+ |--sun.misc.Launcher$ExtClassLoader@53bd815b
+ |--null
+```
+
+从输出结果可以看出:
+
+- 我们编写的 Java 类 `PrintClassLoaderTree` 的 `ClassLoader` 是`AppClassLoader`;
+- `AppClassLoader`的父 `ClassLoader` 是`ExtClassLoader`;
+- `ExtClassLoader`的父`ClassLoader`是`Bootstrap ClassLoader`,因此输出结果为 null。
+
+### 自定义类加载器
+
+我们前面也说说了,除了 `BootstrapClassLoader` 其他类加载器均由 Java 实现且全部继承自`java.lang.ClassLoader`。如果我们要自定义自己的类加载器,很明显需要继承 `ClassLoader`抽象类。
+
+`ClassLoader` 类有两个关键的方法:
+
+- `protected Class loadClass(String name, boolean resolve)`:加载指定二进制名称的类,实现了双亲委派机制 。`name` 为类的二进制名称,`resove` 如果为 true,在加载时调用 `resolveClass(Class> c)` 方法解析该类。
+- `protected Class findClass(String name)`:根据类的二进制名称来查找类,默认实现是空方法。
+
+官方 API 文档中写到:
+
+> Subclasses of `ClassLoader` are encouraged to override `findClass(String name)`, rather than this method.
+>
+> 建议 `ClassLoader`的子类重写 `findClass(String name)`方法而不是`loadClass(String name, boolean resolve)` 方法。
+
+如果我们不想打破双亲委派模型,就重写 `ClassLoader` 类中的 `findClass()` 方法即可,无法被父类加载器加载的类最终会通过这个方法被加载。但是,如果想打破双亲委派模型则需要重写 `loadClass()` 方法。
## 双亲委派模型
### 双亲委派模型介绍
-每一个类都有一个对应它的类加载器。系统中的 ClassLoader 在协同工作的时候会默认使用 **双亲委派模型** 。即在类加载的时候,系统会首先判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载。加载的时候,首先会把该请求委派给父类加载器的 `loadClass()` 处理,因此所有的请求最终都应该传送到顶层的启动类加载器 `BootstrapClassLoader` 中。当父类加载器无法处理时,才由自己来处理。当父类加载器为 null 时,会使用启动类加载器 `BootstrapClassLoader` 作为父类加载器。
+根据官网介绍:
-
+> The ClassLoader class uses a delegation model to search for classes and resources. Each instance of ClassLoader has an associated parent class loader. When requested to find a class or resource, a ClassLoader instance will delegate the search for the class or resource to its parent class loader before attempting to find the class or resource itself. The virtual machine's built-in class loader, called the "bootstrap class loader", does not itself have a parent but may serve as the parent of a ClassLoader instance.
-每个类加载都有一个父类加载器,我们通过下面的程序来验证。
+翻译过来大概的意思是:
+
+> `ClassLoader` 类使用委托模型来搜索类和资源。每个 `ClassLoader` 实例都有一个相关的父类加载器。需要查找类或资源时,`ClassLoader` 实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。
+> 虚拟机中被称为 "bootstrap class loader"的内置类加载器本身没有父类加载器,但是可以作为 `ClassLoader` 实例的父类加载器。
+
+从上面的介绍可以看出:
+
+- `ClassLoader` 类使用委托模型来搜索类和资源。
+- 双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。
+- `ClassLoader` 实例会在试图亲自查找类或资源之前,将搜索类或资源的任务委托给其父类加载器。
+
+下图展示的各种类加载器之间的层次关系被称为类加载器的“**双亲委派模型(Parents Delegation Model)**”。
+
+
+
+其实这个双亲翻译的容易让别人误解,我们一般理解的双亲都是父母,这里的双亲更多地表达的是“父母这一辈”的人而已,并不是说真的有一个 `MotherClassLoader` 和一个`FatherClassLoader` 。个人觉得翻译成单亲委派模型更好一些,不过,国内既然翻译成了双亲委派模型并流传了,按照这个来也没问题,不要被误解了就好。
+
+另外,类加载器之间的父子关系一般不是以继承的关系来实现的,而是通常使用组合关系来复用父加载器的代码。
```java
-public class ClassLoaderDemo {
- public static void main(String[] args) {
- System.out.println("ClassLodarDemo's ClassLoader is " + ClassLoaderDemo.class.getClassLoader());
- System.out.println("The Parent of ClassLodarDemo's ClassLoader is " + ClassLoaderDemo.class.getClassLoader().getParent());
- System.out.println("The GrandParent of ClassLodarDemo's ClassLoader is " + ClassLoaderDemo.class.getClassLoader().getParent().getParent());
- }
+public abstract class ClassLoader {
+ ...
+ // 组合
+ private final ClassLoader parent;
+ protected ClassLoader(ClassLoader parent) {
+ this(checkCreateClassLoader(), parent);
+ }
+ ...
}
```
-Output
+在面向对象编程中,有一条非常经典的设计原则: **组合优于继承,多用组合少用继承。**
-```
-ClassLodarDemo's ClassLoader is sun.misc.Launcher$AppClassLoader@18b4aac2
-The Parent of ClassLodarDemo's ClassLoader is sun.misc.Launcher$ExtClassLoader@1b6d3586
-The GrandParent of ClassLodarDemo's ClassLoader is null
-```
-
-`AppClassLoader`的父类加载器为`ExtClassLoader`,
-`ExtClassLoader`的父类加载器为 null,**null 并不代表`ExtClassLoader`没有父类加载器,而是 `BootstrapClassLoader`** 。
-
-其实这个双亲翻译的容易让别人误解,我们一般理解的双亲都是父母,这里的双亲更多地表达的是“父母这一辈”的人而已,并不是说真的有一个 Mother ClassLoader 和一个 Father ClassLoader 。另外,类加载器之间的“父子”关系也不是通过继承来体现的,是由“优先级”来决定。官方 API 文档对这部分的描述如下:
-
-> The Java platform uses a delegation model for loading classes. **The basic idea is that every class loader has a "parent" class loader.** When loading a class, a class loader first "delegates" the search for the class to its parent class loader before attempting to find the class itself.
-
-### 双亲委派模型实现源码分析
+### 双亲委派模型的执行流程
双亲委派模型的实现代码非常简单,逻辑非常清晰,都集中在 `java.lang.ClassLoader` 的 `loadClass()` 中,相关代码如下所示。
```java
-private final ClassLoader parent;
protected Class> loadClass(String name, boolean resolve)
- throws ClassNotFoundException
- {
- synchronized (getClassLoadingLock(name)) {
- // 首先,检查请求的类是否已经被加载过
- Class> c = findLoadedClass(name);
+ throws ClassNotFoundException
+{
+ synchronized (getClassLoadingLock(name)) {
+ //首先,检查该类是否已经加载过
+ Class c = findLoadedClass(name);
+ if (c == null) {
+ //如果 c 为 null,则说明该类没有被加载过
+ long t0 = System.nanoTime();
+ try {
+ if (parent != null) {
+ //当父类的加载器不为空,则通过父类的loadClass来加载该类
+ c = parent.loadClass(name, false);
+ } else {
+ //当父类的加载器为空,则调用启动类加载器来加载该类
+ c = findBootstrapClassOrNull(name);
+ }
+ } catch (ClassNotFoundException e) {
+ //非空父类的类加载器无法找到相应的类,则抛出异常
+ }
+
if (c == null) {
- long t0 = System.nanoTime();
- try {
- if (parent != null) {//父加载器不为空,调用父加载器loadClass()方法处理
- c = parent.loadClass(name, false);
- } else {//父加载器为空,使用启动类加载器 BootstrapClassLoader 加载
- c = findBootstrapClassOrNull(name);
- }
- } catch (ClassNotFoundException e) {
- //抛出异常说明父类加载器无法完成加载请求
- }
+ //当父类加载器无法加载时,则调用findClass方法来加载该类
+ //用户可通过覆写该方法,来自定义类加载器
+ long t1 = System.nanoTime();
+ c = findClass(name);
- if (c == null) {
- long t1 = System.nanoTime();
- //自己尝试加载
- c = findClass(name);
-
- // this is the defining class loader; record the stats
- sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
- sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
- sun.misc.PerfCounter.getFindClasses().increment();
- }
+ //用于统计类加载器相关的信息
+ sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
+ sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
+ sun.misc.PerfCounter.getFindClasses().increment();
}
- if (resolve) {
- resolveClass(c);
- }
- return c;
}
+ if (resolve) {
+ //对类进行link操作
+ resolveClass(c);
+ }
+ return c;
}
+}
```
+每当一个类加载器接收到加载请求时,它会先将请求转发给父类加载器。在父类加载器没有找到所请求的类的情况下,该类加载器才会尝试去加载。
+
+结合上面的源码,简单总结一下双亲委派模型的执行流程:
+
+- 在类加载的时候,系统会首先判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载(每个父类加载器都会走一遍这个流程)。
+- 类加载器在进行类加载的时候,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成(调用父加载器 `loadClass()`方法来加载类)。这样的话,所有的请求最终都会传送到顶层的启动类加载器 `BootstrapClassLoader` 中。
+- 只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载(调用自己的 `findClass()` 方法来加载类)。
+
+🌈 拓展一下:
+
+**JVM 判定两个 Java 类是否相同的具体规则** :JVM 不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。即使两个类来源于同一个 `Class` 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相同。
+
### 双亲委派模型的好处
-双亲委派模型保证了 Java 程序的稳定运行,可以避免类的重复加载(JVM 区分不同类的方式不仅仅根据类名,相同的类文件被不同的类加载器加载产生的是两个不同的类),也保证了 Java 的核心 API 不被篡改。如果没有使用双亲委派模型,而是每个类加载器加载自己的话就会出现一些问题,比如我们编写一个称为 `java.lang.Object` 类的话,那么程序运行的时候,系统就会出现多个不同的 `Object` 类。
+双亲委派模型保证了 Java 程序的稳定运行,可以避免类的重复加载(JVM 区分不同类的方式不仅仅根据类名,相同的类文件被不同的类加载器加载产生的是两个不同的类),也保证了 Java 的核心 API 不被篡改。
-### 如果我们不想用双亲委派模型怎么办?
+如果没有使用双亲委派模型,而是每个类加载器加载自己的话就会出现一些问题,比如我们编写一个称为 `java.lang.Object` 类的话,那么程序运行的时候,系统就会出现两个不同的 `Object` 类。双亲委派模型可以保证加载的是 JRE 里的那个 `Object` 类,而不是你写的 `Object` 类。这是因为 `AppClassLoader` 在加载你的 `Object` 类时,会委托给 `ExtClassLoader` 去加载,而 `ExtClassLoader` 又会委托给 `BootstrapClassLoader`,`BootstrapClassLoader` 发现自己已经加载过了 `Object` 类,会直接返回,不会去加载你写的 `Object` 类。
+
+### 打破双亲委派模型方法
~~为了避免双亲委托机制,我们可以自己定义一个类加载器,然后重写 `loadClass()` 即可。~~
-**🐛 修正(参见:[issue871](https://github.com/Snailclimb/JavaGuide/issues/871) )** :自定义加载器的话,需要继承 `ClassLoader` 。如果我们不想打破双亲委派模型,就重写 `ClassLoader` 类中的 `findClass()` 方法即可,无法被父类加载器加载的类最终会通过这个方法被加载。但是,如果想打破双亲委派模型则需要重写 `loadClass()` 方法
+**🐛 修正(参见:[issue871](https://github.com/Snailclimb/JavaGuide/issues/871) )** :自定义加载器的话,需要继承 `ClassLoader` 。如果我们不想打破双亲委派模型,就重写 `ClassLoader` 类中的 `findClass()` 方法即可,无法被父类加载器加载的类最终会通过这个方法被加载。但是,如果想打破双亲委派模型则需要重写 `loadClass()` 方法。
-## 自定义类加载器
+我们比较熟悉的 Tomcat 服务器为了能够优先加载 Web 应用目录下的类,然后再加载其他目录下的类,就自定义了类加载器 `WebAppClassLoader` 来打破双亲委托机制。这也是 Tomcat 下 Web 应用之间的类实现隔离的具体原理。
-除了 `BootstrapClassLoader` 其他类加载器均由 Java 实现且全部继承自`java.lang.ClassLoader`。如果我们要自定义自己的类加载器,很明显需要继承 `ClassLoader`。
+Tomcat 的类加载器的层次结构如下:
+
+
+
+感兴趣的小伙伴可以自行研究一下 Tomcat 类加载器的层次结构,这有助于我们搞懂 Tomcat 隔离 Web 应用的原理,推荐资料是[《深入拆解 Tomcat & Jetty》](http://gk.link/a/10Egr)。
## 推荐阅读
--
--
--
+- 《深入拆解 Java 虚拟机》
+- 深入分析 Java ClassLoader 原理:https://blog.csdn.net/xyang81/article/details/7292380
+- Java 类加载器(ClassLoader):http://gityuan.com/2016/01/24/java-classloader/
+- Class Loaders in Java:https://www.baeldung.com/java-classloaders
+- Class ClassLoader - Oracle 官方文档:https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html
+- 老大难的 Java ClassLoader 再不理解就老了:https://zhuanlan.zhihu.com/p/51374915
diff --git a/docs/java/jvm/jvm-garbage-collection.md b/docs/java/jvm/jvm-garbage-collection.md
index 3c6ae07b..01f67ef6 100644
--- a/docs/java/jvm/jvm-garbage-collection.md
+++ b/docs/java/jvm/jvm-garbage-collection.md
@@ -1,5 +1,5 @@
---
-title: JVM 垃圾回收详解
+title: JVM 垃圾回收详解(重点)
category: Java
tag:
- JVM
diff --git a/docs/java/jvm/memory-area.md b/docs/java/jvm/memory-area.md
index fa1b9817..d76a87e4 100644
--- a/docs/java/jvm/memory-area.md
+++ b/docs/java/jvm/memory-area.md
@@ -1,5 +1,5 @@
---
-title: Java 内存区域详解
+title: Java 内存区域详解(重点)
category: Java
tag:
- JVM
diff --git a/docs/java/jvm/pictures/class-loader-parents-delegation-model.drawio b/docs/java/jvm/pictures/class-loader-parents-delegation-model.drawio
new file mode 100644
index 00000000..92ce5b88
--- /dev/null
+++ b/docs/java/jvm/pictures/class-loader-parents-delegation-model.drawio
@@ -0,0 +1 @@
+7Vxbc5s4FP41zLQPznAHP4Jjd9tpZ3bbh272TQHZpsHIC3Li9NfvEZKMATlxEl+IlyTjwNGVo3M+fTpC1qzRYv0pR8v5NxLjVDP1eK1Z15ppGobuwj8meeQSzx9ywSxPYpGpEvxIfmMh1IV0lcS4qGWkhKQ0WdaFEckyHNGaDOU5eahnm5K03uoSzXBL8CNCaVv6M4npnEt906vkf+BkNpctG654vlsU3c1ysspEe5ppTdzJZOLz5AWSdYkHLeYoJg9bImusWaOcEMqvFusRTplupdp4ucmO1E2/c5zRfQqsPxvJ9c/vN2mCb8hfluP/88UeiFruUbrC8jHKztJHqaDyETGrxNCs8GGeUPxjiSKW+gAmAbI5XaQieZqk6YikJC/LWhhN7akN8oLm5A7LlIxkUDxsP4HsDs4pXm+JxBN9wmSBaf4IWWSqK7QrrM8Rtw/VUNoyy3xrGD0pRMJ8ZpuqKxXChdDiCzRqHlijXHPSNK22jke27djOEXUMyrpyaloetrVsDK22lofekZRstZU8djToVjBhF36gBb429rTQ0MJQSnRt7GvhNftjmYcsT3NoQCVUpf+GVreHQIhQmswyuI1A0RjkIVNwAjgTiIRFEsesGeWAVyahs+pJRgVSGq64n6BFkjL9f8E0zFGSFdDzbyQjMj9Z5WWNc0oBOk3HCuADtMw+WIbiakbILMVomRRXEVmUCVFRZp1Mee1wuV2/Y4aihQOYkWU0zcgwFHZk2G07Mo/lrIYK/9yUinHPZjXrcP9dMbAOb8l6UCS/E0hmStZvSR7jfADiUlN6BGqig4jbB8uQz24/ODBtQCd1V/z3/I88N8mXcwTaLnPaXMbMcCAsiolTPKVbKdA4HqD416qgPB2tKB8l2UW4mon//GmWKHvNs1T16VGKiqJWdhEPlijJB0UtX7EExUdzHN3VMk9RWuDdHYyAWLxK2UsUx5tE/cp0crwor8qLMks1U28Pyj3KPwxYPbgQIyGqzlGcrIpNhbKaXT1nvqXsOUsoh4pXZTjLlk5jRNGA58ujWmHuxawgePAO/y29d+O7Nc/lfrvd1JTjTSVr4UjrCUPgJuAGaDliQ/+VINCOfGrRqaYyWKfKkWyJuQW2xcLNZELn8dgX91szsF7+HGqy9ZooaatmW6eNktaxUNLyWuOCYyDR4pbkdE5mJEPpuJI2NFjl+UrIUgzlL0zpo9CrQLCdxMfsxDTYnJh3Dnghu7Fz5hG0kKJ8hunzfJIp/En7yXGKaHJfX9UcfsI8Ob21R4ENPPKo9Lbmb6bS307Jbg0VvXU1WFgHQ0ZdgdWC//f0tmv0tm5G7tnJrX1+cltyG0lQWO7v5JYA0pe5CqC9gwLnybRnwgdgwi1dc4a7ABMvmDt+PDhhbjBc/WpYVfEiLj1eU5wVCcnUTLOnlG+klHVkUoZvTkoo3XMQStBg/vg3K3/lyNub7bTrtaic3z2Kuwsnos6eRFRSv64wUefUTFTXfcufnJCJWmePs0pO0wi0hoE2tBkBhU8eaIVPPxRJoKOem3aLm+pOI6hgq0Kv1knZqdez056dvgt2Gix3REB7XnpIXmqfP9Bpn4OXXji/9Pfll063+KV/an45nU7NKDoivzQ8v+ZwjlyHnY9fDhX8EqgkEMqAMcVgrA3hwtbCIQt/7kErjdYgdQ9XL4ZXmrrf4JWOozApyzwhr5QVn5NX9lv/J6GU/db/0bb+R2BfZNHv+9fJ8EHm4GEdMH3VHHxS0uucg/T2wVjl5CXfgH5nZHnjB5dDljfB186QZanTw5Hl9iB1D3cvhizbprEXWVa8rX48sqx406Qnyz1Z7slyT5Y7QJatodExsmyqdp1faN9uy77FuLKJGqbxUTmHjzQgEkwy0UK4mJSS4Au6R5/YiTnZ6m3+xjY9RghAz2wTN2S0QDb1C5oqD+ddRdlOg+6kJaboFqfhBsyajSvIxRaxDMvfsk4KzJlkcuFxh2k0lzfyLN+BtkJsvbHzr3p50FcwA+MAhj6KPlsPXyfUmH8f+hm6CX5mljxhdaZF4ebmprYI3HdJqFwbvXJF5u25IuNU6g0LsLJokOfocSvDkiQwo23V/CcTVIbjWo1VikDIyevywwXvQWU4m0d5A2gqtvrftnARwMhO+9ksZ+CwF6SHo7J4eRDQ5ygKrejigrXlaT5U5T75WkqFq4cDObZgddjvAZHOaGCZ08Yy/nMpCyjXa9iua7ZB0lGApGMfiQ1YZ0HJyw6BSYB6PgTmK2H+XCEwS7Xv9L5DYM394o0Dnu/ctyLO+LaZpO3B3eCwFxkCM3WrEQJzVa+42qfcL5ab030IrA+B9SGwPgTWsRBYc7/YM8/9kqR8S7MToQFw4hdHB84/lR6QLQ/3ZMtymusKW1a8+Pfc/KOKXr4xiuCxIr69V2Cgiiu4LEPo7QhC+KXkiY49G3tooWAfgOgEfW0GIDxdhcVHCkAoo7SqE95NbM7igH1NHhtwNj0nUd106sjcRssYFfPNcCsxRKHVtgq3VKQM0QjZy6KlrfCm0Qhvtr7mjQOqKPVEnLRZkdGcTjngtip6RchUObCKbaZtSGEH8ByBSGzvhkc6gxJ/JgKIAGrCcYk2gEh2mQTAdb0FjBuw4l+d5rImApNtA7UxqvOEy6y2YloevZeFigKN135Uh6VN1Ssah+BbSlNQHMF8wseFkl/r4FDTJGH9E5lRTtvoUYpFtveACq7d4NBNPN4XFZoVGWajoiOjwpP7KMAgDEFhaqjAj+WC5Lr074lAjiYHkajwv3F0t+npiuNnh/J0uK2+6JVbQ/Vtutb4Pw==
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/class-loading-procedure.drawio b/docs/java/jvm/pictures/class-loading-procedure.drawio
new file mode 100644
index 00000000..c8ce81db
--- /dev/null
+++ b/docs/java/jvm/pictures/class-loading-procedure.drawio
@@ -0,0 +1 @@
+7VrZbus2EP0aAvc+yNC+PEq2dYugQYOmwG0faYmWlMiiS9GJ068vN1mSJadJEy8IjAQ2OUNxmTk8w5EJrOlq+4PAdX6LU1QCU0+3wJoB0zQM3WVfXPIiJZ4fSEFGilQ1agX3xT9ICXUl3RQpqnsNKcYlLdZ9YYKrCiW0J4OE4Od+syUu+6OuYYYGgvsElkPpzyKluZT6ptfKf0FFljcjG65a3wImjxnBm0qNB0wrduM49qV6BZu+1ELrHKb4uSOy5sCaEoypLK22U1Ry2zZmk8/FB7S7eRNU0bc8cPOHldzePP12Vz4s4p9oujEf7jRTea+mL41BUMrso6qY0BxnuILlvJVGYtGId6uzWtvmV4zXTGgw4QOi9EU5G24oZqKcrkqlrSnBjztzM0tES1zRGK6KkqPoBtGIwKKq2cRucYWV/h5vSMI7zCll4DAdK2QfbL38gzeoJxnGWYnguqgnCV4JRVKLpvFS9s6K3f4dM+qOICds8mVJu3BjHLS3EtXNvA4aeedttosQXiFK2ER0gkpIi6d+/1DBOdu12z16hws2sqk3W89WvlMbzwn0fhcUkgxR9VQLDFboTKMVCbi8BzpytCdYblCzA/ag1AKFe/05Lyi6X0Nhq2fGJq+BwuIuKcpyiktMRG9WCpG/THYtG02FK3QRCFL2QISi7euYGWJBPeDpE8/pedVrePK5JSfDUbK8Q0yefhhAPde/18/W0M9zB/ghCHUw90E04//7nmcmoGPu3Xdax8NKBMsiq1g1YSZDTB5xgxaMr0OlWBVpKmhoDE99aursaSP4Khjx/QFGLGeIEcMeYsQ8Fkb8U3OBrjszL/rSXOCYwcS8NDIIxsnAB8GMF0IP+JGQTEEwPFpcWeF4aLG9AVrOTgvGSOw4Li/Y09AOvC/NC8MzgmOMOPqktNCg6rRpBDMYeflTPS8qf/HKxGmqs21XOXs5QACXmI68Pf2Qx/zXnOMeJf8wjUF8chxu/F4/Mjk6WhLSIL8XkAIQhjwCsdNpGAPfGGDzGodOeDp17JFDy2nDkHsNQ5/uaEsfbv/zxyHvGocuNw4FR4lDtnMJcWgkA+ZpEMuHXJEY2bx8jUOnoydzkA+dPxCNxJ2zvW2/RI9/ytt2I3gjH/kfpKOPRaqRNynXM8nnvzI7/5mkYZNeaPD5q7LQAnMXBHPQ/HJzDQ1nelV2AaHhs1+VDVw3REoK63zX3eUePj+YpvQcbY+8QXeDETow7aN52h7lgyjmTMD4wJ+D0OFDzAMQWCDqCi+dJEz96+DGmPQ5wnbOzhHeCEe4JVU27WHD/XuDG4VWC+8wC+uGu94KAzV6VsrEN89WWJ4yBXMbRFPATgpcEoOIFWIhCW/gE/zBr+s0oy7IB8f0+G/HgcELYQSCYDfUAxtK3AyaJFUzGpDI2D19mbuhhAtURru7QSPHrIaVXVXvnNEi8Sf6pOwQiivVaf2IaJI3leYikf45UB9JoG1vBOv+CE0aR8P62E/KEge5OYq6Bd5y0BVVJmG3wCRFRGNiYSZ9QRB81OBSeJg3gE+4SDV5P6xtwKiEI7xtIZWYrHPIWEbIbSnbx/nEJWglVSuWfBSVRnmKxnUms/C+coEpZcQm9PqkVa9xXUjfh710hOsSiZVQWIZ807QcwZQtWePg14T2u2q5IXXTVO0MViqLCmmNA+Wknc5iFLEKze+YTRADc8qtzZau1YgUS9lYjKZ2TSi8AYkaob0Wp3UmS7LFN9NxZG/dwvc9ZtCTEtZ1z7GrVEOst0WJk0duvbRZtKwscbKpR8hFoaVew+r/4OW/prQuWdSRM0BbNkZ6gN8MEEUjF2ZkxPc9QX0+/9W8ZTk55f4ymJjj/qKp7+LPk+N3/D5EnqZt7Z0TLGvInbtjaJc7rfdzJ6u2F0blu8v2Vq41/xc=
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/hotspot-heap-structure.drawio b/docs/java/jvm/pictures/hotspot-heap-structure.drawio
similarity index 100%
rename from docs/java/jvm/pictures/memory-area/hotspot-heap-structure.drawio
rename to docs/java/jvm/pictures/hotspot-heap-structure.drawio
diff --git a/docs/java/jvm/pictures/lifecycle-of-a-class.drawio b/docs/java/jvm/pictures/lifecycle-of-a-class.drawio
new file mode 100644
index 00000000..857731e4
--- /dev/null
+++ b/docs/java/jvm/pictures/lifecycle-of-a-class.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/tomcat-class-loader-parents-delegation-model.drawio b/docs/java/jvm/pictures/tomcat-class-loader-parents-delegation-model.drawio
new file mode 100644
index 00000000..4aa9e37b
--- /dev/null
+++ b/docs/java/jvm/pictures/tomcat-class-loader-parents-delegation-model.drawio
@@ -0,0 +1 @@
+7Zxbc5s4FIB/DTPtgz2AuD6CY3c3087sNg9p92VHBtkmwcgVcmL3168Ekm1AbpMWg9slydhwJHQ5Ojr6dCEamKx37wjcrD7gGKWaqcc7DdxopmkYusO+uGRfSlzPLwVLksQi0lFwl3xFQqgL6TaJUV6JSDFOabKpCiOcZSiiFRkkBD9Xoy1wWs11A5eoIbiLYNqU3icxXZVSz3SP8j9QslzJnA1H1G8Oo8clwdtM5KeZYObMZjOvDF5DmZaoaL6CMX4+EYGpBiYEY1perXcTlHLdSrWVz83OhB7KTVBGX/LA7k8jubn/+DlN0Gf8N7C9f26tkUjlCaZbJKtRFJbupYKKKiKeiKGB8HmVUHS3gREPfWYmwWQruk5F8CJJ0wlOMSmeBQgurIXF5Dkl+BHJkAxn7PGwWQNZHEQo2p2IRI3eIbxGlOxZFBnqCO0K67PF7fOxKS0ZZXXSjL4uhFCYz/KQ9FGF7EJo8RUaNVvWaKk5aZqgqeOJZdmWfUEdm64ztita9ptaNnyg0LJ7ISWDppKntsaKFcz4hRdogadNXS00tDCUEl2belp4w/94ZJ/HqTcNUwlV6b+m1dMmECKYJsuM3UZM0YjJQ67ghPmZQASskzjm2Sgb/GgSOk8eZ1R4SsMR9zO4TlKu/1tEQwKTLGcl/4AzLOPjLSlSXFHKXKdpg4B9MC3zDx4hHy8xXqYIbpJ8HOF1ERDlRdTZokydXZ6mb5uhyKEFMwJG3YwMQ2FHhtW0I/NSndVQ+T8npaLds2XFOpwvW+6swznejfLka8KCuZL1OSYxIiMmLjSlR0xNdBSV9sEjkOX8jc2GDVZI3RHfrve2jI3JZgWZtouYVinjZjgSFsXFKVrQkxCWORrB+GGb0zIcbmnZSrKI7GopvsvabGD2I3U5pqdHKczzyrPreLSBCRnllXj5hik+WqHosRJ5AdMcnS9gxMDih5S9gXF8CNTHpk3QurgqLooox5H6tFGeIHkz4umgXLSESJrAONnmhwRlMudKzvuWsuQ8oGiqMinD3jR0GkMKR2U8ElUeLnsxf5D14DP9t+i9h75b6bllvz3NalH6m6Os4UcaNQwZm7BuADcT3vTvMWTakbUWhaorgxeqaMmGuLTAplh0Mxlw9f7YE/cnI7Be/LQ12Lp1L2mpRlu76SXBpbwkcBvtgmIG0eIWE7rCS5zBdHqU1jR4jPMe441oygdE6V7oVXiws+BjXsUwWB+YzzZ4LotxduQRWEghWSL6fZ7kCv+m/RCUQpo8VWc17Q+YneOtNQksxpEXxdtKfzOV/a1LujVUeOtobGId+BxdGdWy/j/g7bXhbdWMnN7h1uofbgu2kYDCY3/Ec8w8fRErZ9g7yhFJFgMJt0DCDV2XhLtmJp7z7vi2dWCuEa4+9o9JvIqlpzuKsjzBmZo0B6T8SaSseibl8k2nQOn0AZRMg2T/iT8/tuXt59Owm51IvLzbi7vfHETtF4KoRL9rIVG7axLVdQ94sw5JFPS+ziqZprbQGgaab3EAZZ/lQiv79EIRxHQ0sOl1salu1xYVLNXSK+iUTt2BTgc6/SXoNNicWQEduLRNLrW6XOic3b6nfz1Hd+QB7T/cPOw/fcn+HTUHpV7WOZWc9YN05zXpTll1u1eW87pmucViYUbRBVnOcPzakOt4vdOc31DzBFLmPTI4ENt1EZvhGRXjcXWF8biKgy0X4zWZcJ+8Nmypd4Jqw5b6xbbUpb8ddtSrmNmGy3T12ojrgr6B0u8DKNtb52wRRA9ne68aRA9W9/uAKPCMqwNRqdXasqJXbG1PLb6IGIQDkl4XklryWMK3kBR0iqSKcxIDkg5IOiDpa5D0bsUMPh6AtHUgBZ7ZJ5CqXaZq1/SVFu40LFy0bDmEB5NiCJ9oDB+4ZKaF7GJWSIJb+ATf8Te+ZK5z8pN5upwHfKPYhAw5FcisHlhWxctl4yg7a9JXaYspnKM0PLizeuYKuDgByrD4LdKkjJhxJun+EdFoJW/ku2gtLeVblj82q7YOVOffPAUeGBc7ZQL6mH393qdFpGP6/mkRTzl57GtiB1Srl7/2xK65w+DJE5/9vZfXnD/fo7n6yMgwt7ueud0BQqQlAYUlWWaHczugWCIY5nbD3G6Y271mbsec79nDK8PcrtXNBs9RDb5dbjZIkO6bd5Xg913cPL8Z8BLa7GrX4FulvC62bNiyogVefBLZlif2uyBLpY5VB5F9jc0n/eCEKj3Nc7Ug4AwZTIsgSwt9/ubcAJxtA+fPGZhvj92qA7VthY3ZYKxwoW1Qp9LKruBM8gCdA3T+2tA5wev1uTf5/u/Q2e6o/NIX+Uzn1f6S3R7/NVkRdvL/38D0Pw==
\ No newline at end of file
diff --git a/docs/java/new-features/java9.md b/docs/java/new-features/java9.md
index 006f6665..bc6eb28d 100644
--- a/docs/java/new-features/java9.md
+++ b/docs/java/new-features/java9.md
@@ -72,7 +72,7 @@ module my.module {
- [《Project Jigsaw: Module System Quick-Start Guide》](https://openjdk.java.net/projects/jigsaw/quick-start)
- [《Java 9 Modules: part 1》](https://stacktraceguru.com/java9/module-introduction)
-- [[Java 9 揭秘(2. 模块化系统)](https://www.cnblogs.com/IcanFixIt/p/6947763.html)](http://www.cnblogs.com/IcanFixIt/p/6947763.html)
+- [Java 9 揭秘(2. 模块化系统)](http://www.cnblogs.com/IcanFixIt/p/6947763.html)
## G1 成为默认垃圾回收器
diff --git a/docs/system-design/basis/pictures/common-design-patterns.drawio b/docs/system-design/basis/pictures/common-design-patterns.drawio
new file mode 100644
index 00000000..31dfbb3e
--- /dev/null
+++ b/docs/system-design/basis/pictures/common-design-patterns.drawio
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/docs/system-design/basis/pictures/programming-principles .drawio b/docs/system-design/basis/pictures/programming-principles .drawio
new file mode 100644
index 00000000..50c31e07
--- /dev/null
+++ b/docs/system-design/basis/pictures/programming-principles .drawio
@@ -0,0 +1 @@
+7ZlRb5swEIB/jR9bYQwUHoGErt26SY20qnuZXHAAleCUOE3aX7+zMUmI2bQ9JK26KFJi3xmfOX++uwAi8Wx92dB5ccMzViHbytaIjJBtYwtj+JGSl1biW6QV5E2Z6UFbwaR8Zd2VWrosM7boDRScV6Kc94Upr2uWip6MNg1f9YdNedW3Oqc5MwSTlFam9K7MRKHvwr7Yyj+xMi86y9gLWs0DTR/zhi9rbQ/ZJPGSJPFb9Yx2c+kbXRQ046sdERkjEjeci7Y1W8eskr7t3NZel/xGu1l3w2rxNxfcfZ/+eLJe4ofX7/Gt81NE/Cc+07M802rJuttQixUvnYPULTI5CUYkWhWlYJM5TaV2BUiArBCzSqsXouGPG0dKybSsqphXvFGzEScOneBiM7LT1LxmUtj5yJKdRybSQnemvBYJnZWVxOyaiaihZb2Ald7wmmv9hC8bta5CCKDHdkkIX+AQ+SUHLM5zzvOK0Xm5OE/5TCnShRqaTNvZobk7v2tH2oLp7855rBFsvSPS/r9kfMZEA1Nam9OiWdBnxfZ0f7UlL+h4KXaoI74WUk17vpl7u+PQ0Jv+DwDY/rEJYDhz2X9LgBP0CCDEJID42CTAdg9GQGAQMPn25WpkYAC3KIb2em8Hd7dbi2hV5jV0U3AcA3kkHVZCDA61YlZmmTQzCNcWvw4DnUVs9+MDQyyvD8xQyBiIGPahcCGOGTDGLvJdFMZo7KAoRhDfpSRBETQSJQmv6TO9lKke2V4lMXpoenR5T0uZCNWmnC3U/sJOWNibr5UjOz20cvUrTY1QADZ9BNER7HemWjOwgoCg0H2nGFf0gVXRpoTYN76FHHu6vxNCI/VRcwoqSl4P4d87GB/iLDjOXvoMzLOA/YHDgA92GNzhwwBguopQxaYkFCNfoRo5KCQGk2AK6t3fkfPn7LoTDy0z206nzEvT/zXb+n1gHPx3wfNguZZ4g7xA2JKYBDJyhmbiPdFxoNT63ugYqMUBCv9CxY4WkwSNPRREKFINCDShWa+feDlM+sHOO+PFrNwVFGNZ9rQVGOQaGVZCFDhoDMHFQ1F04uU4vNhkL74E7tvy0pVPPV6gSBmjYKRqEyiZPQ2O30pGsqo/8XKcfOS9N17Mp4OfryYTg4c3ez5kPAv4cEx4uM/E0PMifDEARXAwKGwDivvw8uvViYq3o8IZ+iN8XCqIQcXo9v7ExPGY2LyxOkKkgO72vZXS7bwcJONf
\ No newline at end of file
diff --git a/docs/system-design/framework/spring/spring-transaction.md b/docs/system-design/framework/spring/spring-transaction.md
index 38a84a30..f6a59adc 100644
--- a/docs/system-design/framework/spring/spring-transaction.md
+++ b/docs/system-design/framework/spring/spring-transaction.md
@@ -613,7 +613,7 @@ public @interface Transactional {
我们知道,**`@Transactional` 的工作机制是基于 AOP 实现的,AOP 又是使用动态代理实现的。如果目标对象实现了接口,默认情况下会采用 JDK 的动态代理,如果目标对象没有实现了接口,会使用 CGLIB 动态代理。**
-多提一嘴:`createAopProxy()` 方法 决定了是使用 JDK 还是 Cglib 来做动态代理,源码如下:
+🤐 多提一嘴:`createAopProxy()` 方法 决定了是使用 JDK 还是 Cglib 来做动态代理,源码如下:
```java
public class DefaultAopProxyFactory implements AopProxyFactory, Serializable {