[docs update]设计模式和设计原则配图重新绘制

This commit is contained in:
Guide 2023-12-30 21:44:04 +08:00
parent da62711a12
commit fd23fda9ae
9 changed files with 5274 additions and 7 deletions

1
.gitignore vendored
View File

@ -16,4 +16,3 @@ traversal-folder-replace-string.py
format-markdown.py
package-lock.json
lintmd-config.json
pnpm-lock.yaml

View File

@ -4,7 +4,7 @@ import theme from "./theme.js";
export default defineUserConfig({
dest: "./dist",
title: "JavaGuide(Java面试 + 学习指南)",
title: "JavaGuide(Java面试+学习指南)",
description:
"「Java学习指北 + Java面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,复习 Java 知识点,首选 JavaGuide ",
lang: "zh-CN",

View File

@ -59,7 +59,7 @@ Memcached 是分布式缓存最开始兴起的那会,比较常用的。后来
- [Dragonfly](https://github.com/dragonflydb/dragonfly):一种针对现代应用程序负荷需求而构建的内存数据库,完全兼容 Redis 和 Memcached 的 API迁移时无需修改任何代码号称全世界最快的内存数据库。
- [KeyDB](https://github.com/Snapchat/KeyDB) Redis 的一个高性能分支,专注于多线程、内存效率和高吞吐量。
不过,个人还是建议分布式缓存首选 Redis ,毕竟经过这么多年的生产考研,生态也这么优秀,资料也很全面。
不过,个人还是建议分布式缓存首选 Redis ,毕竟经过这么多年的生考验,生态也这么优秀,资料也很全面。
### 说一下 Redis 和 Memcached 的区别和共同点

View File

@ -1 +1,106 @@
<mxfile host="Electron" modified="2022-11-22T08:44:59.220Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="4C_dbpzNcqC1PTau7fjo" version="20.3.0" type="device"><diagram id="5TbergEmUlRJiKQ31r4Q" name="Page-1">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</diagram></mxfile>
<mxfile host="Electron" modified="2023-12-28T06:29:51.429Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.2 Chrome/114.0.5735.289 Electron/25.9.4 Safari/537.36" etag="YB3RqJiO1qUQqNEB_P1B" version="22.1.2" type="device">
<diagram id="5TbergEmUlRJiKQ31r4Q" name="Page-1">
<mxGraphModel dx="1980" dy="664" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="#F6FFF8" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="-E_oDqw7yWDpvZF3vQNq-1" value="" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;shadow=0;sketch=0;fillColor=#F6FFF8;fontFamily=JetBrains Mono;strokeColor=default;dashed=1;fontSize=16;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="-110" y="280" width="950" height="510" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-37" value="" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#dae8fc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSize=16;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="320" y="340" width="420" height="190" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-35" value="" style="group;strokeWidth=1;rounded=0;glass=0;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSize=16;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1" connectable="0">
<mxGeometry x="320" y="335" width="381" height="200" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-36" value="" style="group;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSize=16;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-35" vertex="1" connectable="0">
<mxGeometry width="381" height="200" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-38" value="&lt;font style=&quot;font-size: 16px;&quot;&gt;结构型&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="170" y="15" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-39" value="代理" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="20" y="60" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-40" value="桥接" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="120" y="60" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-41" value="适配器" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="20" y="130" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-42" value="装饰器" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="120" y="130" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-43" value="门面" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="220" y="60" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-44" value="组合" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="-E_oDqw7yWDpvZF3vQNq-36" vertex="1">
<mxGeometry x="220" y="130" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-64" value="享元" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="640" y="420" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-98" value="" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#f8cecc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSize=16;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="-50" y="340" width="320" height="190" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-99" value="创建型" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="65" y="360" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-100" value="单例" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="-14" y="395" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-101" value="工厂" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="120" y="395" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-102" value="建造者" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="-14" y="465" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-103" value="原型" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="120" y="465" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="mj_SiyJ7ypP92xip4_Ex-2" value="&lt;strong style=&quot;box-sizing: border-box; caret-color: rgb(59, 69, 78); color: rgb(59, 69, 78); font-size: 22px; orphans: 4; text-align: start;&quot;&gt;常见的设计模式&lt;/strong&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=22;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="262" y="290" width="206" height="30" as="geometry" />
</mxCell>
<mxCell id="5TUbFG3hkI_PGsOjX6wt-1" value="公众号JavaGuide&lt;br style=&quot;font-size: 16px;&quot;&gt;网站javaguide.cn" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;labelBackgroundColor=none;fontSize=16;fontColor=#B3B3B3;rotation=0;sketch=1;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="670" y="590" width="185" height="70" as="geometry" />
</mxCell>
<mxCell id="cIwtx1gA6A6vilb051IR-2" value="" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#d5e8d4;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSize=16;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" vertex="1" parent="1">
<mxGeometry x="-50" y="560" width="730" height="180" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-73" value="模板" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="-10.002535211267599" y="590" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-74" value="观察者" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="107.46225352112674" y="590" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-75" value="责任链" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="215.13830985915496" y="590" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-76" value="策略" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="331.71232394366206" y="590" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-77" value="命令" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#fff2cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="437.34253521126766" y="590" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-97" value="中介者" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="547.9552112676056" y="620" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-78" value="迭代器" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="-10.002535211267599" y="660" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-79" value="访问者" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="107.46225352112674" y="660" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-80" value="备忘录" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="215.13830985915496" y="660" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-93" value="解释器" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="332.6030985915493" y="660" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
<mxCell id="-E_oDqw7yWDpvZF3vQNq-94" value="状态" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;shadow=0;sketch=0;fontFamily=JetBrains Mono;strokeColor=none;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="437.34253521126766" y="660" width="88.09859154929578" height="50" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -1 +0,0 @@
<mxfile host="Electron" modified="2022-11-22T08:46:21.889Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="b8yyT2y-JSPwxdBWXCCU" version="20.3.0" type="device"><diagram id="sWMFM4V07WVYII8mS4d8" name="Page-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</diagram></mxfile>

View File

@ -0,0 +1,49 @@
<mxfile host="Electron" modified="2023-12-28T06:26:13.675Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.2 Chrome/114.0.5735.289 Electron/25.9.4 Safari/537.36" etag="w4ErlF-yWlGjaIo9deZF" version="22.1.2" type="device">
<diagram id="sWMFM4V07WVYII8mS4d8" name="Page-1">
<mxGraphModel dx="1153" dy="664" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="#F6FFF8" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="WVfZq0yCbzVCR4_tBo_1-1" value="" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;shadow=0;sketch=0;fontFamily=JetBrains Mono;fillColor=#F6FFF8;dashed=1;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="95" y="240" width="870" height="380" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-28" value="" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#e1d5e7;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="149" y="330" width="381" height="250" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-29" value="SOLID" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="306" y="360" width="90" height="20" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-34" value="公众号JavaGuide&lt;br style=&quot;font-size: 16px;&quot;&gt;作者Guide哥" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;labelBackgroundColor=none;fontSize=16;fontColor=#B3B3B3;rotation=0;sketch=0;shadow=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="700" y="560" width="180" height="10" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-35" value="单一职责" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#ffe6cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="180" y="410" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-36" value="开闭" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#ffe6cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="300" y="410" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-38" value="里式替换" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#ffe6cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="414" y="410" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-39" value="接口隔离" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#ffe6cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="230" y="495" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-40" value="依赖反转" style="ellipse;whiteSpace=wrap;html=1;strokeWidth=1;fontSize=16;fillColor=#ffe6cc;strokeColor=none;shadow=0;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="360" y="495" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-41" value="KISS" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#e1d5e7;strokeColor=none;shadow=0;fontSize=18;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="570" y="440" width="140" height="70" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-42" value="YAGNI" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#e1d5e7;strokeColor=none;shadow=0;fontSize=18;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="570" y="340" width="140" height="70" as="geometry" />
</mxCell>
<mxCell id="WVfZq0yCbzVCR4_tBo_1-43" value="DRY" style="rounded=1;whiteSpace=wrap;html=1;strokeWidth=1;fillColor=#e1d5e7;strokeColor=none;shadow=0;fontSize=18;sketch=0;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" parent="1" vertex="1">
<mxGeometry x="740" y="340" width="140" height="70" as="geometry" />
</mxCell>
<mxCell id="9OUafKlKKgUiKlvtTepq-1" value="&lt;strong style=&quot;box-sizing: border-box; caret-color: rgb(59, 69, 78); color: rgb(59, 69, 78); font-size: 22px; orphans: 4; text-align: start;&quot;&gt;常见的软件设计原则&lt;/strong&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=22;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;" vertex="1" parent="1">
<mxGeometry x="427" y="270" width="206" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -28,7 +28,7 @@ category: 代码质量
**常见的软件设计原则如下**
![常见的软件设计原则](https://oss.javaguide.cn/github/javaguide/system-design/basis/programming-principles%20.png)
![常见的软件设计原则](https://oss.javaguide.cn/github/javaguide/system-design/basis/programming-principles.png)
更全面的设计原则总结,可以看 **[java-design-patterns](https://github.com/iluwatar/java-design-patterns)** 和 **[hacker-laws-zh](https://github.com/nusr/hacker-laws-zh)** 这两个开源项目。

View File

@ -35,7 +35,7 @@ tag:
**什么是 RBAC 呢?** RBAC 即基于角色的权限访问控制Role-Based Access Control。这是一种通过角色关联权限角色同时又关联用户的授权的方式。
简单地说:一个用户可以拥有若干角色,每一个角色又可以被分配若干权限,这样就构造成“用户-角色-权限” 的授权模型。在这种模型中,用户与角色、角色与权限之间构成了多对多的关系,如下图
简单地说:一个用户可以拥有若干角色,每一个角色又可以被分配若干权限,这样就构造成“用户-角色-权限” 的授权模型。在这种模型中,用户与角色、角色与权限之间构成了多对多的关系
![RBAC 权限模型示意图](https://oss.javaguide.cn/github/javaguide/system-design/security/design-of-authority-system/rbac.png)

5115
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff