├── docs ├── .nojekyll ├── msbWeb │ └── images │ │ ├── t1.jpg │ │ ├── t2.jpg │ │ ├── t3.jpg │ │ └── vip_files │ │ ├── t1.jpg │ │ ├── t2.jpg │ │ ├── t3.jpg │ │ └── css ├── architect1 │ └── base.md ├── lib │ └── docsify@4.11.2 │ │ └── lib │ │ ├── themes │ │ ├── sourcesanspro │ │ │ └── v13 │ │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 │ │ │ │ └── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 │ │ ├── googleCSS.css │ │ ├── GoogleRobotoMonoSource.css │ │ └── vue.css │ │ └── docsify.min.js ├── _navbar.md ├── index.html └── README.md └── README.md /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mashibingvip 2 | 马士兵VIP教程 3 | -------------------------------------------------------------------------------- /docs/msbWeb/images/t1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/msbWeb/images/t1.jpg -------------------------------------------------------------------------------- /docs/msbWeb/images/t2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/msbWeb/images/t2.jpg -------------------------------------------------------------------------------- /docs/msbWeb/images/t3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/msbWeb/images/t3.jpg -------------------------------------------------------------------------------- /docs/architect1/base.md: -------------------------------------------------------------------------------- 1 | * 介绍 2 | * [简介](README.md) 3 | 4 | * 第一期 5 | * [基础]](/architect1/base.md) 6 | 7 | * 第二期 -------------------------------------------------------------------------------- /docs/msbWeb/images/vip_files/t1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/msbWeb/images/vip_files/t1.jpg -------------------------------------------------------------------------------- /docs/msbWeb/images/vip_files/t2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/msbWeb/images/vip_files/t2.jpg -------------------------------------------------------------------------------- /docs/msbWeb/images/vip_files/t3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/msbWeb/images/vip_files/t3.jpg -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/themes/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/lib/docsify@4.11.2/lib/themes/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/themes/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/lib/docsify@4.11.2/lib/themes/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/themes/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/congying2/mashibingvip/HEAD/docs/lib/docsify@4.11.2/lib/themes/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2 -------------------------------------------------------------------------------- /docs/_navbar.md: -------------------------------------------------------------------------------- 1 | * 架构师课程 2 | * [架构一期](?id=架构一期课程每阶段对应目录章节持续更新中) 3 | * [架构二期](?id=架构二期课程每阶段对应目录章节持续更新中) 4 | * 其它资料汇总 5 | * [资料汇总](?id=马士兵大学学习资料汇总) 6 | * [课程包中的小课](?id=课程包中的小课) 7 | * [AQS](?id=AQS) 8 | 9 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 马士兵大学学习资料汇总VIP 6 | 7 | 8 | 9 | 10 | 19 | 20 | 21 |
加载中
22 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/msbWeb/images/vip_files/css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Open Sans'; 4 | font-style: italic; 5 | font-weight: 400; 6 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0Udc1UAw.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Open Sans'; 12 | font-style: italic; 13 | font-weight: 400; 14 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0ddc1UAw.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek-ext */ 18 | @font-face { 19 | font-family: 'Open Sans'; 20 | font-style: italic; 21 | font-weight: 400; 22 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0Vdc1UAw.woff2) format('woff2'); 23 | unicode-range: U+1F00-1FFF; 24 | } 25 | /* greek */ 26 | @font-face { 27 | font-family: 'Open Sans'; 28 | font-style: italic; 29 | font-weight: 400; 30 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0adc1UAw.woff2) format('woff2'); 31 | unicode-range: U+0370-03FF; 32 | } 33 | /* vietnamese */ 34 | @font-face { 35 | font-family: 'Open Sans'; 36 | font-style: italic; 37 | font-weight: 400; 38 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0Wdc1UAw.woff2) format('woff2'); 39 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 40 | } 41 | /* latin-ext */ 42 | @font-face { 43 | font-family: 'Open Sans'; 44 | font-style: italic; 45 | font-weight: 400; 46 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0Xdc1UAw.woff2) format('woff2'); 47 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 48 | } 49 | /* latin */ 50 | @font-face { 51 | font-family: 'Open Sans'; 52 | font-style: italic; 53 | font-weight: 400; 54 | src: local('Open Sans Italic'), local('OpenSans-Italic'), url(https://gstatic.loli.net/s/opensans/v17/mem6YaGs126MiZpBA-UFUK0Zdc0.woff2) format('woff2'); 55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 56 | } 57 | /* cyrillic-ext */ 58 | @font-face { 59 | font-family: 'Open Sans'; 60 | font-style: italic; 61 | font-weight: 700; 62 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhmIqOjjg.woff2) format('woff2'); 63 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 64 | } 65 | /* cyrillic */ 66 | @font-face { 67 | font-family: 'Open Sans'; 68 | font-style: italic; 69 | font-weight: 700; 70 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhvIqOjjg.woff2) format('woff2'); 71 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 72 | } 73 | /* greek-ext */ 74 | @font-face { 75 | font-family: 'Open Sans'; 76 | font-style: italic; 77 | font-weight: 700; 78 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhnIqOjjg.woff2) format('woff2'); 79 | unicode-range: U+1F00-1FFF; 80 | } 81 | /* greek */ 82 | @font-face { 83 | font-family: 'Open Sans'; 84 | font-style: italic; 85 | font-weight: 700; 86 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhoIqOjjg.woff2) format('woff2'); 87 | unicode-range: U+0370-03FF; 88 | } 89 | /* vietnamese */ 90 | @font-face { 91 | font-family: 'Open Sans'; 92 | font-style: italic; 93 | font-weight: 700; 94 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhkIqOjjg.woff2) format('woff2'); 95 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 96 | } 97 | /* latin-ext */ 98 | @font-face { 99 | font-family: 'Open Sans'; 100 | font-style: italic; 101 | font-weight: 700; 102 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhlIqOjjg.woff2) format('woff2'); 103 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 104 | } 105 | /* latin */ 106 | @font-face { 107 | font-family: 'Open Sans'; 108 | font-style: italic; 109 | font-weight: 700; 110 | src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), url(https://gstatic.loli.net/s/opensans/v17/memnYaGs126MiZpBA-UFUKWiUNhrIqM.woff2) format('woff2'); 111 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 112 | } 113 | /* cyrillic-ext */ 114 | @font-face { 115 | font-family: 'Open Sans'; 116 | font-style: normal; 117 | font-weight: 400; 118 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFWJ0bbck.woff2) format('woff2'); 119 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 120 | } 121 | /* cyrillic */ 122 | @font-face { 123 | font-family: 'Open Sans'; 124 | font-style: normal; 125 | font-weight: 400; 126 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFUZ0bbck.woff2) format('woff2'); 127 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 128 | } 129 | /* greek-ext */ 130 | @font-face { 131 | font-family: 'Open Sans'; 132 | font-style: normal; 133 | font-weight: 400; 134 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFWZ0bbck.woff2) format('woff2'); 135 | unicode-range: U+1F00-1FFF; 136 | } 137 | /* greek */ 138 | @font-face { 139 | font-family: 'Open Sans'; 140 | font-style: normal; 141 | font-weight: 400; 142 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFVp0bbck.woff2) format('woff2'); 143 | unicode-range: U+0370-03FF; 144 | } 145 | /* vietnamese */ 146 | @font-face { 147 | font-family: 'Open Sans'; 148 | font-style: normal; 149 | font-weight: 400; 150 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFWp0bbck.woff2) format('woff2'); 151 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 152 | } 153 | /* latin-ext */ 154 | @font-face { 155 | font-family: 'Open Sans'; 156 | font-style: normal; 157 | font-weight: 400; 158 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFW50bbck.woff2) format('woff2'); 159 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 160 | } 161 | /* latin */ 162 | @font-face { 163 | font-family: 'Open Sans'; 164 | font-style: normal; 165 | font-weight: 400; 166 | src: local('Open Sans Regular'), local('OpenSans-Regular'), url(https://gstatic.loli.net/s/opensans/v17/mem8YaGs126MiZpBA-UFVZ0b.woff2) format('woff2'); 167 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 168 | } 169 | /* cyrillic-ext */ 170 | @font-face { 171 | font-family: 'Open Sans'; 172 | font-style: normal; 173 | font-weight: 700; 174 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOX-hpOqc.woff2) format('woff2'); 175 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 176 | } 177 | /* cyrillic */ 178 | @font-face { 179 | font-family: 'Open Sans'; 180 | font-style: normal; 181 | font-weight: 700; 182 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOVuhpOqc.woff2) format('woff2'); 183 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 184 | } 185 | /* greek-ext */ 186 | @font-face { 187 | font-family: 'Open Sans'; 188 | font-style: normal; 189 | font-weight: 700; 190 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOXuhpOqc.woff2) format('woff2'); 191 | unicode-range: U+1F00-1FFF; 192 | } 193 | /* greek */ 194 | @font-face { 195 | font-family: 'Open Sans'; 196 | font-style: normal; 197 | font-weight: 700; 198 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOUehpOqc.woff2) format('woff2'); 199 | unicode-range: U+0370-03FF; 200 | } 201 | /* vietnamese */ 202 | @font-face { 203 | font-family: 'Open Sans'; 204 | font-style: normal; 205 | font-weight: 700; 206 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOXehpOqc.woff2) format('woff2'); 207 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 208 | } 209 | /* latin-ext */ 210 | @font-face { 211 | font-family: 'Open Sans'; 212 | font-style: normal; 213 | font-weight: 700; 214 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOXOhpOqc.woff2) format('woff2'); 215 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 216 | } 217 | /* latin */ 218 | @font-face { 219 | font-family: 'Open Sans'; 220 | font-style: normal; 221 | font-weight: 700; 222 | src: local('Open Sans Bold'), local('OpenSans-Bold'), url(https://gstatic.loli.net/s/opensans/v17/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2) format('woff2'); 223 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 224 | } 225 | -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/themes/googleCSS.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Roboto Mono'; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhGq3-OXg.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Roboto Mono'; 12 | font-style: normal; 13 | font-weight: 400; 14 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhPq3-OXg.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek-ext */ 18 | @font-face { 19 | font-family: 'Roboto Mono'; 20 | font-style: normal; 21 | font-weight: 400; 22 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhHq3-OXg.woff2) format('woff2'); 23 | unicode-range: U+1F00-1FFF; 24 | } 25 | /* greek */ 26 | @font-face { 27 | font-family: 'Roboto Mono'; 28 | font-style: normal; 29 | font-weight: 400; 30 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhIq3-OXg.woff2) format('woff2'); 31 | unicode-range: U+0370-03FF; 32 | } 33 | /* vietnamese */ 34 | @font-face { 35 | font-family: 'Roboto Mono'; 36 | font-style: normal; 37 | font-weight: 400; 38 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhEq3-OXg.woff2) format('woff2'); 39 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 40 | } 41 | /* latin-ext */ 42 | @font-face { 43 | font-family: 'Roboto Mono'; 44 | font-style: normal; 45 | font-weight: 400; 46 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhFq3-OXg.woff2) format('woff2'); 47 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 48 | } 49 | /* latin */ 50 | @font-face { 51 | font-family: 'Roboto Mono'; 52 | font-style: normal; 53 | font-weight: 400; 54 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2) format('woff2'); 55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 56 | } 57 | /* cyrillic-ext */ 58 | @font-face { 59 | font-family: 'Source Sans Pro'; 60 | font-style: normal; 61 | font-weight: 300; 62 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2'); 63 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 64 | } 65 | /* cyrillic */ 66 | @font-face { 67 | font-family: 'Source Sans Pro'; 68 | font-style: normal; 69 | font-weight: 300; 70 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2) format('woff2'); 71 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 72 | } 73 | /* greek-ext */ 74 | @font-face { 75 | font-family: 'Source Sans Pro'; 76 | font-style: normal; 77 | font-weight: 300; 78 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2) format('woff2'); 79 | unicode-range: U+1F00-1FFF; 80 | } 81 | /* greek */ 82 | @font-face { 83 | font-family: 'Source Sans Pro'; 84 | font-style: normal; 85 | font-weight: 300; 86 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2) format('woff2'); 87 | unicode-range: U+0370-03FF; 88 | } 89 | /* vietnamese */ 90 | @font-face { 91 | font-family: 'Source Sans Pro'; 92 | font-style: normal; 93 | font-weight: 300; 94 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2) format('woff2'); 95 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 96 | } 97 | /* latin-ext */ 98 | @font-face { 99 | font-family: 'Source Sans Pro'; 100 | font-style: normal; 101 | font-weight: 300; 102 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format('woff2'); 103 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 104 | } 105 | /* latin */ 106 | @font-face { 107 | font-family: 'Source Sans Pro'; 108 | font-style: normal; 109 | font-weight: 300; 110 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2'); 111 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 112 | } 113 | /* cyrillic-ext */ 114 | @font-face { 115 | font-family: 'Source Sans Pro'; 116 | font-style: normal; 117 | font-weight: 400; 118 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2) format('woff2'); 119 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 120 | } 121 | /* cyrillic */ 122 | @font-face { 123 | font-family: 'Source Sans Pro'; 124 | font-style: normal; 125 | font-weight: 400; 126 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2) format('woff2'); 127 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 128 | } 129 | /* greek-ext */ 130 | @font-face { 131 | font-family: 'Source Sans Pro'; 132 | font-style: normal; 133 | font-weight: 400; 134 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2) format('woff2'); 135 | unicode-range: U+1F00-1FFF; 136 | } 137 | /* greek */ 138 | @font-face { 139 | font-family: 'Source Sans Pro'; 140 | font-style: normal; 141 | font-weight: 400; 142 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2) format('woff2'); 143 | unicode-range: U+0370-03FF; 144 | } 145 | /* vietnamese */ 146 | @font-face { 147 | font-family: 'Source Sans Pro'; 148 | font-style: normal; 149 | font-weight: 400; 150 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2) format('woff2'); 151 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 152 | } 153 | /* latin-ext */ 154 | @font-face { 155 | font-family: 'Source Sans Pro'; 156 | font-style: normal; 157 | font-weight: 400; 158 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2) format('woff2'); 159 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 160 | } 161 | /* latin */ 162 | @font-face { 163 | font-family: 'Source Sans Pro'; 164 | font-style: normal; 165 | font-weight: 400; 166 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(./sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2'); 167 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 168 | } 169 | /* cyrillic-ext */ 170 | @font-face { 171 | font-family: 'Source Sans Pro'; 172 | font-style: normal; 173 | font-weight: 600; 174 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2) format('woff2'); 175 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 176 | } 177 | /* cyrillic */ 178 | @font-face { 179 | font-family: 'Source Sans Pro'; 180 | font-style: normal; 181 | font-weight: 600; 182 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2) format('woff2'); 183 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 184 | } 185 | /* greek-ext */ 186 | @font-face { 187 | font-family: 'Source Sans Pro'; 188 | font-style: normal; 189 | font-weight: 600; 190 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2) format('woff2'); 191 | unicode-range: U+1F00-1FFF; 192 | } 193 | /* greek */ 194 | @font-face { 195 | font-family: 'Source Sans Pro'; 196 | font-style: normal; 197 | font-weight: 600; 198 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2) format('woff2'); 199 | unicode-range: U+0370-03FF; 200 | } 201 | /* vietnamese */ 202 | @font-face { 203 | font-family: 'Source Sans Pro'; 204 | font-style: normal; 205 | font-weight: 600; 206 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2) format('woff2'); 207 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 208 | } 209 | /* latin-ext */ 210 | @font-face { 211 | font-family: 'Source Sans Pro'; 212 | font-style: normal; 213 | font-weight: 600; 214 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2) format('woff2'); 215 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 216 | } 217 | /* latin */ 218 | @font-face { 219 | font-family: 'Source Sans Pro'; 220 | font-style: normal; 221 | font-weight: 600; 222 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2) format('woff2'); 223 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 224 | } 225 | -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/themes/GoogleRobotoMonoSource.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Roboto Mono'; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhGq3-OXg.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Roboto Mono'; 12 | font-style: normal; 13 | font-weight: 400; 14 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhPq3-OXg.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek-ext */ 18 | @font-face { 19 | font-family: 'Roboto Mono'; 20 | font-style: normal; 21 | font-weight: 400; 22 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhHq3-OXg.woff2) format('woff2'); 23 | unicode-range: U+1F00-1FFF; 24 | } 25 | /* greek */ 26 | @font-face { 27 | font-family: 'Roboto Mono'; 28 | font-style: normal; 29 | font-weight: 400; 30 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhIq3-OXg.woff2) format('woff2'); 31 | unicode-range: U+0370-03FF; 32 | } 33 | /* vietnamese */ 34 | @font-face { 35 | font-family: 'Roboto Mono'; 36 | font-style: normal; 37 | font-weight: 400; 38 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhEq3-OXg.woff2) format('woff2'); 39 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 40 | } 41 | /* latin-ext */ 42 | @font-face { 43 | font-family: 'Roboto Mono'; 44 | font-style: normal; 45 | font-weight: 400; 46 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhFq3-OXg.woff2) format('woff2'); 47 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 48 | } 49 | /* latin */ 50 | @font-face { 51 | font-family: 'Roboto Mono'; 52 | font-style: normal; 53 | font-weight: 400; 54 | src: local('Roboto Mono'), local('RobotoMono-Regular'), url(https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIjhLq38.woff2) format('woff2'); 55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 56 | } 57 | /* cyrillic-ext */ 58 | @font-face { 59 | font-family: 'Source Sans Pro'; 60 | font-style: normal; 61 | font-weight: 300; 62 | /* src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2'); */ 63 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2) format('woff2'); 64 | 65 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 66 | } 67 | /* cyrillic */ 68 | @font-face { 69 | font-family: 'Source Sans Pro'; 70 | font-style: normal; 71 | font-weight: 300; 72 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2) format('woff2'); 73 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 74 | } 75 | /* greek-ext */ 76 | @font-face { 77 | font-family: 'Source Sans Pro'; 78 | font-style: normal; 79 | font-weight: 300; 80 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2) format('woff2'); 81 | unicode-range: U+1F00-1FFF; 82 | } 83 | /* greek */ 84 | @font-face { 85 | font-family: 'Source Sans Pro'; 86 | font-style: normal; 87 | font-weight: 300; 88 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2) format('woff2'); 89 | unicode-range: U+0370-03FF; 90 | } 91 | /* vietnamese */ 92 | @font-face { 93 | font-family: 'Source Sans Pro'; 94 | font-style: normal; 95 | font-weight: 300; 96 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2) format('woff2'); 97 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 98 | } 99 | /* latin-ext */ 100 | @font-face { 101 | font-family: 'Source Sans Pro'; 102 | font-style: normal; 103 | font-weight: 300; 104 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2) format('woff2'); 105 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 106 | } 107 | /* latin */ 108 | @font-face { 109 | font-family: 'Source Sans Pro'; 110 | font-style: normal; 111 | font-weight: 300; 112 | src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(./sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2) format('woff2'); 113 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 114 | } 115 | /* cyrillic-ext */ 116 | @font-face { 117 | font-family: 'Source Sans Pro'; 118 | font-style: normal; 119 | font-weight: 400; 120 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2) format('woff2'); 121 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 122 | } 123 | /* cyrillic */ 124 | @font-face { 125 | font-family: 'Source Sans Pro'; 126 | font-style: normal; 127 | font-weight: 400; 128 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2) format('woff2'); 129 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 130 | } 131 | /* greek-ext */ 132 | @font-face { 133 | font-family: 'Source Sans Pro'; 134 | font-style: normal; 135 | font-weight: 400; 136 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2) format('woff2'); 137 | unicode-range: U+1F00-1FFF; 138 | } 139 | /* greek */ 140 | @font-face { 141 | font-family: 'Source Sans Pro'; 142 | font-style: normal; 143 | font-weight: 400; 144 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2) format('woff2'); 145 | unicode-range: U+0370-03FF; 146 | } 147 | /* vietnamese */ 148 | @font-face { 149 | font-family: 'Source Sans Pro'; 150 | font-style: normal; 151 | font-weight: 400; 152 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2) format('woff2'); 153 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 154 | } 155 | /* latin-ext */ 156 | @font-face { 157 | font-family: 'Source Sans Pro'; 158 | font-style: normal; 159 | font-weight: 400; 160 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2) format('woff2'); 161 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 162 | } 163 | /* latin */ 164 | @font-face { 165 | font-family: 'Source Sans Pro'; 166 | font-style: normal; 167 | font-weight: 400; 168 | src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url(./sourcesanspro/v13/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2) format('woff2'); 169 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 170 | } 171 | /* cyrillic-ext */ 172 | @font-face { 173 | font-family: 'Source Sans Pro'; 174 | font-style: normal; 175 | font-weight: 600; 176 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2) format('woff2'); 177 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 178 | } 179 | /* cyrillic */ 180 | @font-face { 181 | font-family: 'Source Sans Pro'; 182 | font-style: normal; 183 | font-weight: 600; 184 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2) format('woff2'); 185 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 186 | } 187 | /* greek-ext */ 188 | @font-face { 189 | font-family: 'Source Sans Pro'; 190 | font-style: normal; 191 | font-weight: 600; 192 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2) format('woff2'); 193 | unicode-range: U+1F00-1FFF; 194 | } 195 | /* greek */ 196 | @font-face { 197 | font-family: 'Source Sans Pro'; 198 | font-style: normal; 199 | font-weight: 600; 200 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2) format('woff2'); 201 | unicode-range: U+0370-03FF; 202 | } 203 | /* vietnamese */ 204 | @font-face { 205 | font-family: 'Source Sans Pro'; 206 | font-style: normal; 207 | font-weight: 600; 208 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2) format('woff2'); 209 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 210 | } 211 | /* latin-ext */ 212 | @font-face { 213 | font-family: 'Source Sans Pro'; 214 | font-style: normal; 215 | font-weight: 600; 216 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(https://fonts.gstatic.com/s/sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2) format('woff2'); 217 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 218 | } 219 | /* latin */ 220 | @font-face { 221 | font-family: 'Source Sans Pro'; 222 | font-style: normal; 223 | font-weight: 600; 224 | src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url(./sourcesanspro/v13/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2) format('woff2'); 225 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 226 | } 227 | -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/themes/vue.css: -------------------------------------------------------------------------------- 1 | @import url("GoogleRobotoMonoSource.css");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}.emoji{height:1.2rem;vertical-align:middle}.progress{background-color:var(--theme-color,#42b983);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:var(--theme-color,#42b983)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#34495e;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:15px;letter-spacing:0;margin:0;overflow-x:hidden}img{max-width:100%}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px!important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:var(--theme-color,#42b983)}.app-nav a.active{border-bottom:2px solid var(--theme-color,#42b983)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:var(--theme-color,#42b983);height:80px;width:80px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:#34495e}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid rgba(0,0,0,.07);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:none;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;background-color:hsla(0,0%,100%,.8);border:0;outline:none;padding:10px;position:absolute;bottom:0;left:0;text-align:center;transition:opacity .3s;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4}.sidebar-toggle span{background-color:var(--theme-color,#42b983);display:block;margin-bottom:4px;width:16px;height:2px}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:80%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section hr{border:none;border-bottom:1px solid #eee;margin:2em 0}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:#f8f8f8}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:#efefef}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{background-color:hsla(0,0%,100%,.8);transition:background-color 1s;width:284px;padding:10px}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{-webkit-animation:none;animation:none}.github-corner .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}}@-webkit-keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;display:none}section.cover.show{display:flex}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;height:100%;width:100%}section.cover .cover-main{flex:1;margin:-20px 16px 0;text-align:center;z-index:1}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid var(--theme-color,#42b983);box-sizing:border-box;color:var(--theme-color,#42b983);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:var(--theme-color,#42b983);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid var(--theme-color,#42b983);transition:color .3s}section.cover blockquote>p>a:hover{color:var(--theme-color,#42b983)}.sidebar,body{background-color:#fff}.sidebar{color:#364149}.sidebar li{margin:6px 0}.sidebar ul li a{color:#505d6b;font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.sidebar ul li a:hover{text-decoration:underline}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:var(--theme-color,#42b983);font-weight:600}.app-sub-sidebar li:before{content:"-";padding-right:4px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:#2c3e50;font-weight:600}.markdown-section a{color:var(--theme-color,#42b983);font-weight:600}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid var(--theme-color,#42b983);color:#858585;margin:2em 0;padding-left:20px}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code{border-radius:2px;color:#e96900;font-size:.8rem;margin:0 2px;padding:3px 5px;white-space:pre-wrap}.markdown-section code,.markdown-section pre{background-color:#f8f8f8;font-family:Roboto Mono,Monaco,courier,monospace}.markdown-section pre{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;line-height:1.5rem;margin:1.2em 0;overflow:auto;padding:0 1.4rem;position:relative;word-wrap:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:var(--theme-color,#42b983)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:var(--theme-color,#42b983)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;background-color:#f8f8f8;border-radius:2px;color:#525252;display:block;font-family:Roboto Mono,Monaco,courier,monospace;font-size:.8rem;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;padding:2.2em 5px;white-space:inherit}.markdown-section code:after,.markdown-section code:before{letter-spacing:.05rem}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}pre:after{color:#ccc;content:attr(data-lang);font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0} -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # 马士兵大学学习资料汇总 2 | 3 | > 官网地址:https://www.mashibing.com/vip.html 4 | 5 | ## 入学流程 6 | ---- 7 | 1. 班主任小姐姐会帮您进入相应报名课程的QQ群,请关注群内未来【公告】。 8 | 2. 请认真填写【VIP服务信息表】,并及时【发回班主任】,我们会尽快安排入学【一对一电话服务】。 9 | 3. 架构师二期项目课程,腾讯会在1天左右开放权限,您登录腾讯课堂网页版,点击全部订单,有个【重学/赠送】查询,点击【接受】就可以啦,请优先看一期的知识点内容。 10 | 4. **重要!重要!重要!请认真阅读这个页面内容,对您有很大的帮助。** 11 | 5. **如有问题,请先查看页面最下方的AQS是否能解决您的问题。** 12 | 13 | ## 务必牢记 14 | ---- 15 | 1. www.mashibing.com/vip.html 请牢记这个页面,信息变更会自动同步在该页面! 16 | 2. www.github.com/bjmashibing 是我们唯一的github官方资料提供仓库 17 | 18 | 19 | ## 上课安排(特殊安排关注群公告) 20 | ---- 21 | 1.Java基础: 每周六日(15:00-17:00,20:00—22:00),每周日(15:00-17:00) 22 | 2.架构课程: 一期:每周一三五 上课时间 晚上8:00-10:00 23 | 3.架构课程: 二期:每周二四日 上课时间 晚上8:00—10:00 24 | 4.大数据课程: 每周二四日 上课时间 晚上8:00-10:00 25 | 5.AI课程: 每周六(15:00-17:00 , 20:00-22:00) 26 | ## 开始前 27 | ---- 28 | 新手预习资料 [统一访问该页面获取预习资料](http://www.mashibing.com/html/bird.html) 29 | 30 | 公开课录播视频 [统一访问该页面获取录播视频](https://pan.baidu.com/share/init?surl=K_7B7Oc6Yu6K9Qf527IBcw) 密码:f8lz 31 | 32 | 公开课录播备用地址 [备用地址](https://pan.baidu.com/share/init?surl=vBgwGxVzNqsKnxsuOyfw1A) 密码:dk2w 33 | 34 | docker和k8s资料 网盘资料[链接](https://pan.baidu.com/share/link?shareid=3718730690&uk=3204027181) 密码:zcmq 35 | 36 | 程序员的数学 网盘资料 [链接](https://pan.baidu.com/share/init?surl=u19vQyC2YmH04k2B35alOw) [备用链接](https://pan.baidu.com/s/1u19vQyC2YmH04k2B35alOw) 提取码:fmb6 37 | 38 | ## VIP学员大课资料 39 | ---- 40 | 1. JAVA后端工程师,[统一访问GitHub仓库中的java库](https://github.com/bjmashibing/java) 41 | 2. JAVA高级架构师,[统一访问GitHub仓库中的InternetArchitect库](https://github.com/bjmashibing/InternetArchitect) 42 | 3. 大数据开发工程师,[统一访问GitHub仓库中的BigDataArchitect库](https://github.com/bjmashibing/BigDataArchitect) 43 | 4. AI人工智能工程师,[统一访问GitHub仓库中的](https://www.mashibing.com/vip.html) 44 | 5. JVM资料,[统一访问GitHub仓库中的JVM库](https://github.com/bjmashibing/JVM) 45 | 6. 网约车,[统一访问GitHub](https://github.com/yueyi2019/online-taxi-file) 46 | 47 | ## 【JAVA后端、大数据、AI】无需跳跃,按顺序学习即可 48 | 49 | 50 | # 架构一期课程每阶段对应目录章节(持续更新中) 51 | --- 52 | ## 马老师面试课 53 | 138 硬技能之上的软技巧1 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067389864285229&type=1024&vid=5285890798795090719) 54 | 55 | 143 硬技能之上的软技巧2 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067411339121709&type=1024&vid=5285890799146701546) 56 | 57 | 148 硬技能之上的软技巧3 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067432813958189&type=1024&vid=5285890799408627429) 58 | 59 | ## 马老师说的6+2的大体内容: 60 | 61 | 1.设计模式 62 | 2.多线程高并发 63 | 3.网络到分布式 64 | 4.mysql调优 65 | 5.jvm 66 | 6.网约车项目 67 | 7.亿级流量项目 68 | 8.*游戏netty项目 69 | 70 | 71 | ## 抽丝剥茧设计模式 72 | [课程链接](https://ke.qq.com/course/413747?tuin=a75a5977),[资料地址](http://www.github.com/bjmashibing/DesignPatterns) 73 | 74 | 75 | 76 | ## 多线程与高并发编程 77 | [资料地址](http://www.github.com/bjmashibing/JUC) 78 | 79 | 41 多线程与高并发编程一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385529446306861&type=1024&vid=5285890793201449862) 80 | 81 | 46 多线程与高并发编程二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3826180205974573&type=1024&vid=5285890793489922415) 82 | 83 | 52 多线程与高并发编程三 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3852263542363181&type=1024&vid=5285890793810836226) 84 | 85 | 58 多线程与高并发编程四 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385576690947117&type=1024&vid=5285890794254224450) 86 | 87 | 62 多线程与高并发编程五 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385593870816301&type=1024&vid=5285890794418013695) 88 | 89 | 64 多线程与高并发编程六 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385602460750893&type=1024&vid=5285890794445687301) 90 | 91 | 69 多线程与高并发编程七 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385623935587373&type=1024&vid=5285890794816827703) 92 | 93 | 74 多线程与高并发编程八 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385645410423853&type=1024&vid=5285890794967826662) 94 | 95 | 76 多线程与高并发编程九 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385654000358445&type=1024&vid=5285890795040042548) 96 | 97 | 98 | 99 | ## 网络到分布式 100 | [资料地址](https://github.com/bjmashibing/InternetArchitect/tree/master/06%20%E9%AB%98%E5%B9%B6%E5%8F%91%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1) 101 | 102 | 24 高并发负载均衡:网络协议原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385473611732013&type=1024&vid=5285890793326178319) 103 | 104 | 25 高并发负载均衡:LVS的DR,TUN,NAT模型推导 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385477906699309&type=1024&vid=5285890791944493841) 105 | 106 | 26 高并发负载均衡:LVS的DR模型试验搭建 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385482201666605&type=1024&vid=5285890792025153609) 107 | 108 | 28 高并发负载均衡:基于keepalived的LVS高可用搭建 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385486496633901&type=1024&vid=5285890792148439218) 109 | 110 | [redis资料](https://github.com/bjmashibing/InternetArchitect/tree/master/09%20Redis) 111 | 112 | 43 redis 介绍及NIO原理介绍 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3799285120767021&type=1024&vid=5285890793309969846) 113 | 114 | 44 redis的string类型&bitmap [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385533741274157&type=1024&vid=5285890793395122444) 115 | 116 | 45 redis的list、set、hash、sorted_set、skiplist [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385538036241453&type=1024&vid=5285890793480669565) 117 | 118 | 48 redis的消息订阅、pipeline、事务、modules、布隆过滤器、缓存LRU [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385542331208749&type=1024&vid=5285890793608442753) 119 | 120 | 49 redis的持久化RDB、fork、copyonwrite、AOF、RDB&AOF混合使用 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385546626176045&type=1024&vid=5285890793680196340) 121 | 122 | 50 redis的集群:主从复制、CAP、PAXOS、cluster分片集群01 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385550921143341&type=1024&vid=5285890793758485066) 123 | 124 | 53 redis的集群:主从复制、CAP、PAXOS、cluster分片集群02 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385555216110637&type=1024&vid=5285890793884777413) 125 | 126 | 54 redis开发:spring.data.redis、连接、序列化、high/low api [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385559511077933&type=1024&vid=5285890793923075911) 127 | 128 | [zookeeper资料](https://github.com/bjmashibing/InternetArchitect/tree/master/10%20Zookeeper) 129 | 130 | 55 zookeeper介绍、安装、shell cli 使用,基本概念验证 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385563806045229&type=1024&vid=5285890794064663818) 131 | 132 | 56 zookeeper原理知识,paxos、zab、角色功能、API开发基础 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385568101012525&type=1024&vid=5285890794186378480) 133 | 134 | 57 zookeeper案例:分布式配置注册发现、分布式锁、ractive模式编程 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385572395979821&type=1024&vid=5285890794212987823) 135 | 136 | 137 | 138 | ## (二期)Spring cloud + 网约车项目 139 | 19 Spring Cloud微服务概述,注册中心搭建 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185729098191917&type=1024&vid=5285890797675722327) 140 | 141 | 20 Eureka 原理和源码 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185733393159213&type=1024&vid=5285890797908496068) 142 | 143 | 21 Eureka 配置和 服务间调用方式 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185737688126509&type=1024&vid=5285890798297399505) 144 | 145 | 22 Ribbon负载均衡 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185741983093805&type=1024&vid=5285890798557419555) 146 | 147 | 23 Feign声明式调用 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185746278061101&type=1024&vid=5285890798818937191) 148 | 149 | 24 Hystrix熔断降级 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185750573028397&type=1024&vid=5285890799168718551) 150 | 151 | 25 Hystrix熔断原理源码 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185754867995693&type=1024&vid=5285890799431751256) 152 | 153 | 26 网关Zuul的使用 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185759162962989&type=1024&vid=5285890799758210096) 154 | 155 | (持续更新中.........) 156 | 157 | 158 | 159 | ## 消息中间件 160 | [资料地址](https://github.com/bjmashibing/InternetArchitect/tree/master/16%20%E4%B8%80%E6%9C%9F%20%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6) 161 | 162 | 127 消息中间件-ActiveMQ 01 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067342619644973&type=1024&vid=5285890797618744036) 163 | 164 | 129 消息中间件-ActiveMQ 02 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067351209579565&type=1024&vid=5285890797648000488) 165 | 166 | 130 消息中间件-ActiveMQ 03 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067355504546861&type=1024&vid=5285890797801304966) 167 | 168 | 131 消息中间件-ActiveMQ 04 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067359799514157&type=1024&vid=5285890797855910122) 169 | 170 | 133 消息中间件-ActiveMQ 05 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067368389448749&type=1024&vid=5285890798408980736) 171 | 172 | 134 消息中间件-ActiveMQ 06 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067372684416045&type=1024&vid=5285890798483964676) 173 | 174 | 135 消息中间件-ActiveMQ 07 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067376979383341&type=1024&vid=5285890798593302228) 175 | 176 | 136 消息中间件-ActiveMQ 08 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067381274350637&type=1024&vid=5285890798667036503) 177 | 178 | 139 消息中间件-RocketMQ 01 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067394159252525&type=1024&vid=5285890798908368452) 179 | 180 | 140 消息中间件-RocketMQ 02 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067398454219821&type=1024&vid=5285890798979430668) 181 | 182 | 141 消息中间件-RocketMQ 03 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067402749187117&type=1024&vid=5285890799092482131) 183 | 184 | 144 消息中间件-RocketMQ 04 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067415634089005&type=1024&vid=5285890799206705257) 185 | 186 | 145 消息中间件-RocketMQ 05 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067419929056301&type=1024&vid=5285890799282850548) 187 | 188 | 146 消息中间件-RocketMQ 06 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067424224023597&type=1024&vid=5285890799362360301) 189 | 190 | (持续更新中.........) 191 | 192 | 193 | 194 | ## JVM 195 | [资料地址](https://github.com/bjmashibing/JVM) 196 | 197 | 80 JVM入门级class文件格式 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385671180227629&type=1024&vid=5285890795254417183) 198 | 199 | 86 详解Class加载过程 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385696950031405&type=1024&vid=5285890795495098927) 200 | 201 | 93 Java内存模型 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067196590756909&type=1024&vid=5285890795710259061) 202 | 203 | 97 内存屏障与JVM指令 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067213770626093&type=1024&vid=5285890795920195540) 204 | 205 | 102 Java运行时数据区和常用指令 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067235245462573&type=1024&vid=5285890796130155429) 206 | 207 | 110 JVM调优必备理论知识-GC Collector-三色标记 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067269605200941&type=1024&vid=5285890796558161975) 208 | 209 | 114 JVM调优实战 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067286785070125&type=1024&vid=5285890796770442292) 210 | 211 | 119 JVM实战调优 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067308259906605&type=1024&vid=5285890797005699401) 212 | 213 | 124 JVM实战调优 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067329734743085&type=1024&vid=5285890797384112958) 214 | 215 | 128 垃圾回收算法串讲 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067346914612269&type=1024&vid=5285890797630925075) 216 | 217 | 132 JVM常见参数总结 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067364094481453&type=1024&vid=5285890797958593897) 218 | 219 | 220 | 221 | ## 底层:操作系统 组成原理 222 | 150 java程序员需要了解的底层知识第一课 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067441403892781&type=1024&vid=5285890799733685067) 223 | 224 | 225 | 226 | ## MYSQL基础 227 | mysql视频:[链接](https://pan.baidu.com/share/init?surl=M5ztqdYJAoHaU__Z2oX_hA) 提取码:iw0k 228 | 229 | mysql有道云笔记的连接:文档:MySQL [链接](http://note.youdao.com/noteshare?id=764336de06a157bbdffe5fb89ad7b733) 230 | 231 | 232 | 233 | ## mysql调优 234 | [资料地址](https://github.com/bjmashibing/InternetArchitect/tree/master/13mysql%E8%B0%83%E4%BC%98) 235 | 236 | 107 精通mysql调优大师班一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067256720299053&type=1024&vid=5285890796450429140) 237 | 238 | 108 精通mysql调优大师班二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067261015266349&type=1024&vid=5285890796510158724) 239 | 240 | 111 精通mysql调优大师班三 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067273900168237&type=1024&vid=5285890796598967563) 241 | 242 | 112 精通mysql调优大师班四 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067278195135533&type=1024&vid=5285890796686398461) 243 | 244 | 113 精通mysql调优大师班五 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067282490102829&type=1024&vid=5285890796759143626) 245 | 246 | 115 精通mysql调优大师班六 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067291080037421&type=1024&vid=5285890796847119428) 247 | 248 | 116 精通mysql调优大师班七 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067295375004717&type=1024&vid=5285890796905611672) 249 | 250 | 117 精通mysql调优大师班八 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067299669972013&type=1024&vid=5285890796964066182) 251 | 252 | 253 | 254 | ## Spring源码分析 255 | 18 Spring源码-源码概览 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3665578493875245&type=1024&vid=5285890793322671596) 256 | 257 | 23 源码分析-Spring容器初始化过程 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3691837923922989&type=1024&vid=5285890793327641777) 258 | 259 | 27 源码分析-Spring Environment原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3712840314000429&type=1024&vid=5285890792035360585) 260 | 261 | 29 源码分析-spring监听器 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385490791601197&type=1024&vid=5285890792322244342) 262 | 263 | 34 源码分析-Spring IOC [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3747006778840109&type=1024&vid=5285890792641040588) 264 | 265 | 37 源码分析-Spring AOP原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385516561404973&type=1024&vid=5285890792923489265) 266 | 267 | 42 源码分析-Spring Boot Starter原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3799280825799725&type=1024&vid=5285890793241229133) 268 | 269 | 47 Spring高级运用 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3826218860680237&type=1024&vid=5285890793526236477) 270 | 271 | 51 Spring工作常用技巧 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3852259247395885&type=1024&vid=5285890793772422622) 272 | 273 | 71 Spring源码总结 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385632525521965&type=1024&vid=5285890794858754043) 274 | 275 | 276 | 277 | ## NIO & Netty 278 | 81 Java NIO 一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385675475194925&type=1024&vid=5285890795284954411) 279 | 280 | 84 Java NIO 二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385688360096813&type=1024&vid=5285890795463737756) 281 | 282 | 91 NIO之ByteBuffer [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067188000822317&type=1024&vid=5285890795677757727) 283 | 284 | 96 Netty 之NIO selector [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067209475658797&type=1024&vid=5285890795889357665) 285 | 286 | 101 Netty之内存管理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067230950495277&type=1024&vid=5285890796098401636) 287 | 288 | 109 Netty之内存管理二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067265310233645&type=1024&vid=5285890796550106193) 289 | 290 | 118 NETTY小结 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067303964939309&type=1024&vid=5285890796973596740) 291 | 292 | 137 Netty 内存管理 (netty源码) [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067385569317933&type=1024&vid=5285890798755934697) 293 | 294 | 142 Netty 内存管理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067407044154413&type=1024&vid=5285890799103302208) 295 | 296 | 147 Netty 内存管理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067428518990893&type=1024&vid=5285890799370162674) 297 | 298 | 149 Netty 启动原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067437108925485&type=1024&vid=5285890799692577235) 299 | 300 | 301 | 302 | ## 亿级流量多级缓存高并发系统架构实战 303 | 59 亿级流量多级缓存高并发系统架构实战一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385580985914413&type=1024&vid=5285890794297568090) 304 | 305 | 60 亿级流量多级缓存高并发系统架构实战二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385585280881709&type=1024&vid=5285890794352666497) 306 | 307 | 61 亿级流量多级缓存高并发系统架构实战三 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385589575849005&type=1024&vid=5285890794406875432) 308 | 309 | 65 亿级流量多级缓存高并发系统架构实战四 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385606755718189&type=1024&vid=5285890794487964582) 310 | 311 | 68 亿级流量多级缓存高并发系统架构实战五 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385619640620077&type=1024&vid=5285890794755056474) 312 | 313 | 70 亿级流量多级缓存高并发系统架构实战六 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385628230554669&type=1024&vid=5285890794846482328) 314 | 315 | 73 亿级流量多级缓存高并发系统架构实战七 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385641115456557&type=1024&vid=5285890794907098090) 316 | 317 | 75 亿级流量系统架构之限流 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385649705391149&type=1024&vid=5285890795027196090) 318 | 319 | 78 亿级流量系统架构之扩容 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385662590293037&type=1024&vid=5285890795118954092) 320 | 321 | 79 亿级流量系统架构之降级 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385666885260333&type=1024&vid=5285890795241583575) 322 | 323 | 82 亿级流量系统架构之分布式事务原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385679770162221&type=1024&vid=5285890795334000268) 324 | 325 | 83 亿级流量系统架构之实战流量分发层 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385684065129517&type=1024&vid=5285890795452423442) 326 | 327 | 87 亿级流量系统架构之实战域名与https [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067170820953133&type=1024&vid=5285890795502214371) 328 | 329 | 88 亿级流量系统架构之网关kong [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067175115920429&type=1024&vid=5285890795543304509) 330 | 331 | 89 电商系统详情页PLAN A [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067179410887725&type=1024&vid=5285890795603819984) 332 | 333 | 90 静态文件生成-rsync [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067183705855021&type=1024&vid=5285890795665408978) 334 | 335 | 94 静态化文件生成业务流程及技术选型解析 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067200885724205&type=1024&vid=5285890795819050143) 336 | 337 | 95 Arica开发实战CRUD [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067205180691501&type=1024&vid=5285890795877662149) 338 | 339 | 98 静态文件生成 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067218065593389&type=1024&vid=5285890795968574352) 340 | 341 | 99 html同步,生成首页,批量生成,健康检查 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067222360560685&type=1024&vid=5285890796027373496) 342 | 343 | 100 单机事务,并发锁,压力测试 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067226655527981&type=1024&vid=5285890796087063574) 344 | 345 | 103 html架构的应用场景,扩容,静态分页实现 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067239540429869&type=1024&vid=5285890796178868473) 346 | 347 | 104 分页逻辑2,动态加静态,lua访问mysql [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067243835397165&type=1024&vid=5285890796239514922) 348 | 349 | 105 resty_template,静态文件补偿机制实现 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067248130364461&type=1024&vid=5285890796299478231) 350 | 351 | 106 亿级流量高并发项目总结 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067252425331757&type=1024&vid=5285890796391731488) 352 | 353 | 354 | 355 | ## 区块链 356 | 120 区块链-比特币、挖矿、炒币原理(1) [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067312554873901&type=1024&vid=5285890797052447190) 357 | 358 | 121 区块链-比特币、挖矿、炒币原理(2) [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067316849841197&type=1024&vid=5285890797111429226) 359 | 360 | 122 区块链-以太坊原理 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067321144808493&type=1024&vid=5285890797169219172) 361 | 362 | 123 区块链-幽灵协议,pow,pos [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067325439775789&type=1024&vid=5285890797257969276) 363 | 364 | 125 区块链-DPOS共识协议,solidity智能合约开发 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067334029710381&type=1024&vid=5285890797401704704) 365 | 366 | 126 区块链-solidity手写加密货币 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=4067338324677677&type=1024&vid=5285890797502304978) 367 | 368 | 369 | 370 | ## 架构师前置知识 371 | 4 spring,ioc入门与详解 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385404892255277&type=1024&vid=5285890790625135834) 372 | 373 | 5 maven的简单构建,springaop [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385409187222573&type=1024&vid=5285890790630114912) 374 | 375 | 6 spring中的循环依赖、代理方式讲解 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385413482189869&type=1024&vid=5285890790589942447) 376 | 377 | 7 springboot mvc项目结构、开发、热部署 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385417777157165&type=1024&vid=5285890790511540996) 378 | 379 | 8 springboot web项目整合数据源、Thymeleaf [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385422072124461&type=1024&vid=5285890793325592794) 380 | 381 | 9 项目开发-thymeleaf、jpa、bootstrap [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385426367091757&type=1024&vid=5285890793329539892) 382 | 383 | 10 mybatis整合SpringBoot、mybatis-generator [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385430662059053&type=1024&vid=5285890793325623033) 384 | 385 | 11 企业项目开发中的角色、流程、任务分配 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385434957026349&type=1024&vid=5285890793326572044) 386 | 387 | 12 pageHelper、翻页、Example使用、异步表单 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385439251993645&type=1024&vid=5285890793322637365) 388 | 389 | 13 开发-RBAC、表设计、YAML、项目配置 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385443546960941&type=1024&vid=5285890793322532723) 390 | 391 | 14 开发-RBAC前后端、mybatis多表、thymeleaf [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385447841928237&type=1024&vid=5285890793322418005) 392 | 393 | 15 开发-Odata、Restful、SpringBoot文件上传 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385452136895533&type=1024&vid=5285890793326639752) 394 | 395 | 16 开发-权限认证、Icheck、Mybatis plus [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385456431862829&type=1024&vid=5285890793326245685) 396 | 397 | 17 Tengine原理、对比、部署、配置、虚拟主机 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3528762310661165&type=1024&vid=5285890793323424174) 398 | 399 | 19 Tengine 反向代理、负载均衡、 session共享 等 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3528766605628461&type=1024&vid=5285890793328967920) 400 | 401 | 20 Tengine 动静分离 https SSL 非对称加密 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385460726830125&type=1024&vid=5285890791583725588) 402 | 403 | 21 Nginx OpenSSL 自签名证书 xca FastDFS介绍 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385465021797421&type=1024&vid=5285890793323154714) 404 | 405 | 22 FastDFS 部署 原理 整合Nginx JavaAPI [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385469316764717&type=1024&vid=5285890793323413627) 406 | 407 | 30 FastDFS 集群原理 部署 缓存 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3737287267849261&type=1024&vid=5285890792435208507) 408 | 409 | 31 FastDFS keepalived 高可用 zookeeper [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385495086568493&type=1024&vid=5285890792474198556) 410 | 411 | 32 dubbo demo、角色、 RPC、原理 、RMI [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385499381535789&type=1024&vid=5285890792514876863) 412 | 413 | 33 项目微服务拆分 注册中心、dubbo admin [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385503676503085&type=1024&vid=5285890792633119995) 414 | 415 | 35 dubbo下的微信公众号项目 一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385507971470381&type=1024&vid=5285890792754277214) 416 | 417 | 36 dubbo下的微信公众号项目 二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385512266437677&type=1024&vid=5285890792834815388) 418 | 419 | 38 RestFul风格API、swagger API [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385512266437677&type=1024&vid=5285890792834815388) 420 | 421 | 39 dubbo核心配置 聚合项目构建 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100475149&taid=3385520856372269&type=1024&vid=5285890793032809072) 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | ## PMP大讲堂之:TDD在敏捷开发中的最佳实践 430 | [视频地址](https://pan.baidu.com/share/init?surl=ZAifDHBKYpnEsLoQ794SRg) 密码:y5fe 431 | 432 | 433 | 434 | # 架构二期课程每阶段对应目录章节(持续更新中) 435 | 436 | ## Java游戏开发 437 | 2 创建 Netty 服务器 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185656083747885&type=1024&vid=5285890796421259974) 438 | 439 | 3 Protobuf 消息应用 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185660378715181&type=1024&vid=5285890796480593357) 440 | 441 | 4 重构,设计模式实战 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185664673682477&type=1024&vid=5285890796569015277) 442 | 443 | 5 通过 Javassist 提升反射效率 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185668968649773&type=1024&vid=5285890796628391162) 444 | 445 | 6 重新设计移动消息 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185673263617069&type=1024&vid=5285890796730368428) 446 | 447 | 7 游戏服务器中的单线程设计 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185677558584365&type=1024&vid=5285890796819334080) 448 | 449 | 8 多线程读写数据库 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185681853551661&type=1024&vid=5285890796877116049) 450 | 451 | 9 利用RocketMQ 实现简单的排行榜 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185686148518957&type=1024&vid=5285890796936155669) 452 | 453 | 10 游戏服务器的部署 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185690443486253&type=1024&vid=5285890797024197969) 454 | 455 | 456 | 457 | ## springboot 458 | 11 架构体系讲解及springboot入门 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185694738453549&type=1024&vid=5285890797081447599) 459 | 460 | 12 springboot web开发 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185699033420845&type=1024&vid=5285890797218126105) 461 | 462 | 13 springboot-thymeleaf及数据源配置 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185703328388141&type=1024&vid=5285890797229364178) 463 | 464 | 14 springboot启动源码解析一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185707623355437&type=1024&vid=5285890797343966192) 465 | 466 | 15 springboot启动源码解析二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185711918322733&type=1024&vid=5285890797420877897) 467 | 468 | 16 springboot启动源码解析三 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185716213290029&type=1024&vid=5285890797431520693) 469 | 470 | 17 springboot自动装配源码解析 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185720508257325&type=1024&vid=5285890797531324996) 471 | 472 | 18 springboot与tomcat整合源码解析 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185724803224621&type=1024&vid=5285890797589178594) 473 | 474 | 475 | 476 | ## 网约车项目 477 | 19 网约车项目一 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185729098191917&type=1024&vid=5285890797675722327) 478 | 479 | 20 网约车项目二 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185733393159213&type=1024&vid=5285890797908496068) 480 | 481 | 21 网约车项目三 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185737688126509&type=1024&vid=5285890798297399505) 482 | 483 | 22 网约车项目四 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185741983093805&type=1024&vid=5285890798557419555) 484 | 485 | 23 网约车项目五 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185746278061101&type=1024&vid=5285890798818937191) 486 | 487 | 24 网约车项目六 [地址](https://ke.qq.com/webcourse/index.html#cid=398381&term_id=100558952&taid=4185750573028397&type=1024&vid=5285890799168718551) 488 | 489 | 490 | 491 | # 课程包中的小课 492 | 1. 多线程与高并发,[课程链接](https://ke.qq.com/course/446547?tuin=a75a5977),[资料地址](http://www.github.com/bjmashibing/JUC) 493 | 2. 数据结构与算法,[课程链接](https://ke.qq.com/course/429723?tuin=a75a5977),[资料地址](http://www.github.com/bjmashibing/Algorithm) 494 | 3. 抽丝剥茧设计模式,[课程链接](https://ke.qq.com/course/413747?tuin=a75a5977),[资料地址](http://www.github.com/bjmashibing/DesignPatterns) 495 | 4. 坦克大战一期,[课程链接](https://ke.qq.com/course/398245?tuin=a75a5977),[资料地址](http://www.github.com/bjmashibing/tank) 496 | 5. 坦克大战二期,[课程链接](https://ke.qq.com/course/398245?tuin=a75a5977#term_id=100494276),[资料地址](http://www.github.com/bjmashibing/Tank2019V2) 497 | 6. Java web【马士兵教育】,[课程链接](https://ke.qq.com/course/422068?tuin=a75a5977),[资料地址](https://github.com/bjmashibing/javaweb) 498 | 7. Java日志框架-SLF4J入门,[课程链接](https://ke.qq.com/course/452165?taid=3999606690473541&tuin=a75a5977) 499 | 8. 超级小白编程入门,[课程链接](https://ke.qq.com/course/444431?taid=3881267456559119&tuin=a75a5977) 500 | 9. 简明JDBC教程,[课程链接](https://ke.qq.com/course/430884?taid=3699732073845540&tuin=a75a5977) 501 | 10. Java响应式编程【马士兵教育】,[课程链接](https://ke.qq.com/course/429389?taid=3506376941145421&tuin=a75a5977) 502 | 11. 马士兵Java零基础入门【马士兵教育】,[课程链接](https://ke.qq.com/course/421576?taid=3640328381165256&tuin=a75a5977) 503 | 12. 架构师必备技能doker入门到专精,[课程链接](https://ke.qq.com/course/458623?tuin=a75a5977),[资料地址](https://www.mashibing.com/vip.html) 504 | 13. 架构师高级技能kubernetes入门到精通,[课程链接](https://www.mashibing.com/vip.html),[资料地址](https://www.mashibing.com/vip.html) 505 | 506 | 507 | # AQS: 508 | ## 一、腾讯课堂目录为什么没有按阶段划分,看起来比较乱? 509 | 答:因为咱们在讲知识点的过程中,有的阶段老师会根据大家的吸收程度,做一些延长,但是腾讯课堂的目录没办法按阶段这么划分增加。所以咱们会是一节一节的来,中间会穿插有补课,老师担心大家看目录会觉得乱,找不到课,就给大家整理了一个vip页面,按阶段划分开来了。你按照VIP界面的课程目录章节地址看课就可以呢。 510 | 511 | 512 | 513 | ## 二、腾讯课堂的目录标题和内容不对应 514 | 答:腾讯课堂前期的目录,因为会有一些知识点增加,会再添加一节到大标题下面,但是这个无法再更改啦,您以小标题内容为准哦,后面咱们的课程目录和标题就对应上啦,而且咱们的vip页面和腾讯课堂的目录一周会更改一次,您可以按照VIP页面的目录章节看课哒 515 | 516 | 517 | 518 | ## 三、架构一期和二期的区别? 519 | 答:架构一期讲的知识点,二期讲项目。我们本着讲最全的知识,所以一期从5个月扩充到近1年的知识量,同时开设了并行的二期班,主要讲项目。 520 | 521 | 522 | 523 | ## 四、一对一什么时间给我约呢? 524 | 答:在您提交【VIP服务信息表】给班主任之后,因为报名学员很多,班主任老师会在三天内为您预约讲师,给您进行电话一对一的学习计划。 525 | 526 | 527 | 528 | ## 五、为什么登录课堂看课只能看到架构一期的课程,看不到架构二期的? 529 | PC客户端: 530 | ![d](./msbWeb/images/t2.jpg) 531 | 532 | 手机客户端: 533 | ![d](./msbWeb/images/t3.jpg) 534 | ![d](./msbWeb/images/t1.jpg) 535 | 536 | 537 | 538 | 539 | ## 以下课程是在VIP大课截取,VIP学员不必观看 540 | 1. 自定义注解,[课程链接](https://ke.qq.com/course/458641?tuin=6e67ea5e) 541 | 2. JDK8新特性-stream api,[课程链接](https://ke.qq.com/course/458646?tuin=6e67ea5e) 542 | 3. JDK8新特性~lambda表达式,[课程链接](https://ke.qq.com/course/458630?tuin=6e67ea5e) 543 | 4. 高并发高可用lvs+keepalived分布式架构师前修课,[课程链接](https://ke.qq.com/course/458615?tuin=a75a5977) 544 | 5. 全网最新redis+zookeeper架构师必修课,[课程链接](https://ke.qq.com/course/458724?tuin=6e67ea5e) 545 | 6. Hadoop零基础从入门到精通,[课程链接](https://ke.qq.com/course/432890?tuin=a75a5977) 546 | 7. Java web【马士兵教育】,[课程链接](https://ke.qq.com/course/422068?tuin=a75a5977) 547 | 548 | 549 | 550 | 551 | 552 | -------------------------------------------------------------------------------- /docs/lib/docsify@4.11.2/lib/docsify.min.js: -------------------------------------------------------------------------------- 1 | !function(){function o(n){var r=Object.create(null);return function(e){var t=c(e)?e:JSON.stringify(e);return r[t]||(r[t]=n(e))}}var i=o(function(e){return e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})}),l=Object.prototype.hasOwnProperty,d=Object.assign||function(e){for(var t=arguments,n=1;n=a.length)i(r);else if("function"==typeof e)if(2===e.length)e(r,function(e){r=e,s(t+1)});else{var n=e(r);r=void 0===n?r:n,s(t+1)}else s(t+1)};s(0)}var O=p.title;function P(){var e=m("section.cover");if(e){var t=e.getBoundingClientRect().height;window.pageYOffset>=t||e.classList.contains("hidden")?A(v,"add","sticky"):A(v,"remove","sticky")}}function z(e,t,r,n){var i=[];null!=(t=m(t))&&(i=y(t,"a"));var a,s=decodeURI(e.toURL(e.getCurrentPath()));return i.sort(function(e,t){return t.href.length-e.href.length}).forEach(function(e){var t=e.getAttribute("href"),n=r?e.parentNode:e;0!==s.indexOf(t)||a?A(n,"remove","active"):(a=e,A(n,"add","active"))}),n&&(p.title=a?a.title||a.innerText+" - "+O:O),a}var j=decodeURIComponent,N=encodeURIComponent;function M(e){var n={};return(e=e.trim().replace(/^(\?|#|&)/,""))&&e.split("&").forEach(function(e){var t=e.replace(/\+/g," ").split("=");n[t[0]]=t[1]&&j(t[1])}),n}function q(e,t){void 0===t&&(t=[]);var n=[];for(var r in e)-1this.end&&e>=this.next}[this.direction]}},{key:"_defaultEase",value:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}}]),X);function X(){var e=0o){t=t||u;break}t=u}if(t){var h=Q[re(decodeURIComponent(e),t.getAttribute("data-id"))];if(h&&h!==a&&(a&&a.classList.remove("active"),h.classList.add("active"),a=h,!J&&v.classList.contains("sticky"))){var p=n.clientHeight,d=a.offsetTop+a.clientHeight+40,g=d-0=i.scrollTop&&d<=i.scrollTop+p?i.scrollTop:g?0:d-p;n.scrollTop=f}}}}function re(e,t){return e+"?id="+t}function ie(e,t){if(t){var n=s().topMargin,r=b("#"+t);r&&function(e,t){void 0===t&&(t=0),K&&K.stop(),ee=!1,K=new V({start:window.pageYOffset,end:e.getBoundingClientRect().top+window.pageYOffset-t,duration:500}).on("tick",function(e){return window.scrollTo(0,e)}).on("done",function(){ee=!0,K=null}).begin()}(r,n);var i=Q[re(e,t)],a=b(m(".sidebar"),"li.active");a&&a.classList.remove("active"),i&&i.classList.add("active")}}var ae=p.scrollingElement||p.documentElement;function se(e,t){if(void 0===t&&(t='
    {inner}
'),!e||!e.length)return"";var n="";return e.forEach(function(e){n+='
  • '+e.title+"
  • ",e.children&&(n+=se(e.children,t))}),t.replace("{inner}",n)}function oe(e,t){return'

    '+t.slice(5).trim()+"

    "}function le(e,r){var i=[],a={};return e.forEach(function(e){var t=e.level||1,n=t-1;r?@[\]^`{|}~]/g;function he(e){return e.toLowerCase()}function pe(e){if("string"!=typeof e)return"";var t=e.trim().replace(/[A-Z]+/g,he).replace(/<[^>\d]+>/g,"").replace(ue,"").replace(/\s/g,"-").replace(/-+/g,"-"),n=ce[t];return n=l.call(ce,t)?n+1:0,(ce[t]=n)&&(t=t+"-"+n),t}function de(e,t){return''+t+''}function ge(e){void 0===e&&(e="");var r={};return{str:e=e&&e.replace(/^'/,"").replace(/'$/,"").replace(/(?:^|\s):([\w-]+:?)=?([\w-]+)?/g,function(e,t,n){return-1===t.indexOf(":")?(r[t]=n&&n.replace(/"/g,"")||!0,""):e}).trim(),config:r}}pe.clear=function(){ce={}};var fe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function me(e,t){return e(t={exports:{}},t.exports),t.exports}var ve,be=me(function(e){var c=function(c){var u=/\blang(?:uage)?-([\w-]+)\b/i,t=0,T={manual:c.Prism&&c.Prism.manual,disableWorkerMessageHandler:c.Prism&&c.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof R?new R(e.type,T.util.encode(e.content),e.alias):Array.isArray(e)?e.map(T.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(y instanceof R)){if(d&&v!=t.length-1){if(u.lastIndex=b,!(A=u.exec(e)))break;for(var k=A.index+(p&&A[1]?A[1].length:0),w=A.index+A[0].length,x=v,_=b,S=t.length;x"+n.content+""},!c.document)return c.addEventListener&&(T.disableWorkerMessageHandler||c.addEventListener("message",function(e){var t=JSON.parse(e.data),n=t.language,r=t.code,i=t.immediateClose;c.postMessage(T.highlight(r,T.languages[n],n)),i&&c.close()},!1)),T;var e=T.util.currentScript();if(e&&(T.filename=e.src,e.hasAttribute("data-manual")&&(T.manual=!0)),!T.manual){function n(){T.manual||T.highlightAll()}var r=document.readyState;"loading"===r||"interactive"===r&&e&&e.defer?document.addEventListener("DOMContentLoaded",n):window.requestAnimationFrame?window.requestAnimationFrame(n):window.setTimeout(n,16)}return T}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=c),void 0!==fe&&(fe.Prism=c),c.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:(?!)*\]\s*)?>/i,greedy:!0},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.languages.markup.tag.inside["attr-value"].inside.entity=c.languages.markup.entity,c.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(c.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:c.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:c.languages[t]};var i={};i[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,e),"i"),lookbehind:!0,greedy:!0,inside:r},c.languages.insertBefore("markup","cdata",i)}}),c.languages.xml=c.languages.extend("markup",{}),c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(c),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{"class-name":[c.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?[.?]?|[~:]/}),c.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,c.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*[\s\S]*?\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:c.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:c.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:c.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:c.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),c.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.markup.tag.addInlined("script","javascript"),c.languages.js=c.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(e){e=e||document;var l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(e.querySelectorAll("pre[data-src]")).forEach(function(e){if(!e.hasAttribute("data-src-loaded")){for(var t,n=e.getAttribute("data-src"),r=e,i=/\blang(?:uage)?-([\w-]+)\b/i;r&&!i.test(r.className);)r=r.parentNode;if(r&&(t=(e.className.match(i)||[,""])[1]),!t){var a=(n.match(/\.(\w+)$/)||[,""])[1];t=l[a]||a}var s=document.createElement("code");s.className="language-"+t,e.textContent="",s.textContent="Loading…",e.appendChild(s);var o=new XMLHttpRequest;o.open("GET",n,!0),o.onreadystatechange=function(){4==o.readyState&&(o.status<400&&o.responseText?(s.textContent=o.responseText,c.highlightElement(s),e.setAttribute("data-src-loaded","")):400<=o.status?s.textContent="✖ Error "+o.status+" while fetching file: "+o.statusText:s.textContent="✖ Error: File does not exist or is empty")},o.send(null)}})},document.addEventListener("DOMContentLoaded",function(){self.Prism.fileHighlight()}))});function ye(e,t){return"___"+e.toUpperCase()+t+"___"}ve=Prism,Object.defineProperties(ve.languages["markup-templating"]={},{buildPlaceholders:{value:function(r,i,e,a){if(r.language===i){var s=r.tokenStack=[];r.code=r.code.replace(e,function(e){if("function"==typeof a&&!a(e))return e;for(var t,n=s.length;-1!==r.code.indexOf(t=ye(i,n));)++n;return s[n]=e,t}),r.grammar=ve.languages.markup}}},tokenizePlaceholders:{value:function(d,g){if(d.language===g&&d.tokenStack){d.grammar=ve.languages[g];var f=0,m=Object.keys(d.tokenStack);!function e(t){for(var n=0;n=m.length);n++){var r=t[n];if("string"==typeof r||r.content&&"string"==typeof r.content){var i=m[f],a=d.tokenStack[i],s="string"==typeof r?r:r.content,o=ye(g,i),l=s.indexOf(o);if(-1 ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:h,table:h,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/};function l(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||m.defaults,this.rules=y.normal,this.options.pedantic?this.rules=y.pedantic:this.options.gfm&&(this.rules=y.gfm)}y._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,y._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,y.def=e(y.def).replace("label",y._label).replace("title",y._title).getRegex(),y.bullet=/(?:[*+-]|\d{1,9}\.)/,y.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,y.item=e(y.item,"gm").replace(/bull/g,y.bullet).getRegex(),y.list=e(y.list).replace(/bull/g,y.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+y.def.source+")").getRegex(),y._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",y._comment=//,y.html=e(y.html,"i").replace("comment",y._comment).replace("tag",y._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),y.paragraph=e(y._paragraph).replace("hr",y.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",y._tag).getRegex(),y.blockquote=e(y.blockquote).replace("paragraph",y.paragraph).getRegex(),y.normal=d({},y),y.gfm=d({},y.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),y.pedantic=d({},y.normal,{html:e("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",y._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:h,paragraph:e(y.normal._paragraph).replace("hr",y.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",y.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),l.rules=y,l.lex=function(e,t){return new l(t).lex(e)},l.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},l.prototype.token=function(e,t){var n,r,i,a,s,o,l,c,u,h,p,d,g,f,m,v;for(e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),1 ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),l={type:"list_start",ordered:f=1<(a=i[2]).length,start:f?+a:"",loose:!1},this.tokens.push(l),n=!(c=[]),g=(i=i[0].match(this.rules.item)).length,p=0;p?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:h,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:h,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",n.em=e(n.em).replace(/punctuation/g,n._punctuation).getRegex(),n._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,n._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,n._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,n.autolink=e(n.autolink).replace("scheme",n._scheme).replace("email",n._email).getRegex(),n._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,n.tag=e(n.tag).replace("comment",y._comment).replace("attribute",n._attribute).getRegex(),n._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,n._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,n._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,n.link=e(n.link).replace("label",n._label).replace("href",n._href).replace("title",n._title).getRegex(),n.reflink=e(n.reflink).replace("label",n._label).getRegex(),n.normal=d({},n),n.pedantic=d({},n.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:e(/^!?\[(label)\]\((.*?)\)/).replace("label",n._label).getRegex(),reflink:e(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",n._label).getRegex()}),n.gfm=d({},n.normal,{escape:e(n.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),o+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):k(a[0]):a[0];else if(a=this.rules.link.exec(e)){var l=g(a[2],"()");if(-1$/,"$1"),o+=this.outputLink(a,{href:u.escapes(r),title:u.escapes(i)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){o+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,o+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),o+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),o+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),o+=this.renderer.codespan(k(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),o+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),o+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),r="@"===a[2]?"mailto:"+(n=k(this.mangle(a[1]))):n=k(a[1]),o+=this.renderer.link(r,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?o+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):k(a[0]):a[0]):o+=this.renderer.text(k(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])r="mailto:"+(n=k(a[0]));else{for(;s=a[0],a[0]=this.rules._backpedal.exec(a[0])[0],s!==a[0];);n=k(a[0]),r="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),o+=this.renderer.link(r,null,n)}return o},u.escapes=function(e){return e?e.replace(u.rules._escapes,"$1"):e},u.prototype.outputLink=function(e,t){var n=t.href,r=t.title?k(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,k(e[1]))},u.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},u.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i'+(n?e:k(e,!0))+"\n":"
    "+(n?e:k(e,!0))+"
    "},r.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},r.prototype.html=function(e){return e},r.prototype.heading=function(e,t,n,r){return this.options.headerIds?"'+e+"\n":""+e+"\n"},r.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},r.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},r.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},r.prototype.checkbox=function(e){return" "},r.prototype.paragraph=function(e){return"

    "+e+"

    \n"},r.prototype.table=function(e,t){return"\n\n"+e+"\n"+(t=t&&""+t+"")+"
    \n"},r.prototype.tablerow=function(e){return"\n"+e+"\n"},r.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},r.prototype.strong=function(e){return""+e+""},r.prototype.em=function(e){return""+e+""},r.prototype.codespan=function(e){return""+e+""},r.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},r.prototype.del=function(e){return""+e+""},r.prototype.link=function(e,t,n){if(null===(e=a(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"},r.prototype.image=function(e,t,n){if(null===(e=a(this.options.sanitize,this.options.baseUrl,e)))return n;var r=''+n+'":">"},r.prototype.text=function(e){return e},i.prototype.strong=i.prototype.em=i.prototype.codespan=i.prototype.del=i.prototype.text=function(e){return e},i.prototype.link=i.prototype.image=function(e,t,n){return""+n},i.prototype.br=function(){return""},c.parse=function(e,t){return new c(t).parse(e)},c.prototype.parse=function(e){this.inline=new u(e.links,this.options),this.inlineText=new u(e.links,d({},this.options,{renderer:new i})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},c.prototype.next=function(){return this.token=this.tokens.pop(),this.token},c.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},c.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},c.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,p(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",a="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t))for(var n=t;this.seen[n]++,t=n+"-"+this.seen[n],this.seen.hasOwnProperty(t););return this.seen[t]=0,t},k.escapeTest=/[&<>"']/,k.escapeReplace=/[&<>"']/g,k.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},k.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,k.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var s={},o=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function h(){}function d(e){for(var t,n,r=arguments,i=1;it)n.splice(t);else for(;n.lengthAn error occurred:

    "+k(e.message+"",!0)+"
    ";throw e}}h.exec=h,m.options=m.setOptions=function(e){return d(m.defaults,e),m},m.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new r,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},m.defaults=m.getDefaults(),m.Parser=c,m.parser=c.parse,m.Renderer=r,m.TextRenderer=i,m.Lexer=l,m.lexer=l.lex,m.InlineLexer=u,m.inlineLexer=u.output,m.Slugger=t,m.parse=m,v.exports=m}()}),we={},xe={markdown:function(e){return{url:e}},mermaid:function(e){return{url:e}},iframe:function(e,t){return{html:'"}},video:function(e,t){return{html:'"}},audio:function(e,t){return{html:'"}},code:function(e,t){var n=e.match(/\.(\w+)$/);return"md"===(n=t||n&&n[1])&&(n="markdown"),{url:e,lang:n}}},_e=function(i,e){var a=this;this.config=i,this.router=e,this.cacheTree={},this.toc=[],this.cacheTOC={},this.linkTarget=i.externalLinkTarget||"_blank",this.linkRel="_blank"===this.linkTarget?i.externalLinkRel||"noopener":"",this.contentBase=e.getBasePath();var s,t=this._initRenderer();this.heading=t.heading;var n=i.markdown||{};s=r(n)?n(ke,t):(ke.setOptions(d(n,{renderer:d(t,n.renderer)})),ke),this._marked=s,this.compile=function(n){var r=!0,e=o(function(e){r=!1;var t="";return n?(t=c(n)?s(n):s.parser(n),t=i.noEmoji?t:function(e){return e.replace(/<(pre|template|code)[^>]*?>[\s\S]+?<\/(pre|template|code)>/g,function(e){return e.replace(/:/g,"__colon__")}).replace(/:(\w+?):/gi,window.emojify||de).replace(/__colon__/g,":")}(t),pe.clear(),t):n})(n),t=a.router.parse().file;return r?a.toc=a.cacheTOC[t]:a.cacheTOC[t]=[].concat(a.toc),e}};_e.prototype.compileEmbed=function(e,t){var n,r=ge(t),i=r.str,a=r.config;if(t=i,a.include){var s;if(H(e)||(e=D(this.contentBase,I(this.router.getCurrentPath()),e)),a.type&&(s=xe[a.type]))(n=s.call(this,e,t)).type=a.type;else{var o="code";/\.(md|markdown)/.test(e)?o="markdown":/\.mmd/.test(e)?o="mermaid":/\.html?/.test(e)?o="iframe":/\.(mp4|ogg)/.test(e)?o="video":/\.mp3/.test(e)&&(o="audio"),(n=xe[o].call(this,e,t)).type=o}return n.fragment=a.fragment,n}},_e.prototype._matchNotCompileLink=function(e){for(var t=this.config.noCompileLinks||[],n=0;n
    '+r+""},r.code=function(e){return e.renderer.code=function(e,t){void 0===t&&(t="");var n=be.languages[t]||be.languages.markup;return'
    '+be.highlight(e.replace(/@DOCSIFY_QM@/g,"`"),n)+"
    "}}({renderer:e}),r.link=function(e){var t=e.renderer,o=e.router,l=e.linkTarget,c=e.compilerClass;return t.link=function(e,t,n){void 0===t&&(t="");var r=[],i=ge(t),a=i.str,s=i.config;return t=a,H(e)||c._matchNotCompileLink(e)||s.ignore?(!H(e)&&e.startsWith("./")&&(e=document.URL.replace(/\/(?!.*\/).*/,"/").replace("#/./","")+e),r.push(0===e.indexOf("mailto:")?"":'target="'+l+'"')):(e===c.config.homepage&&(e="README"),e=o.toURL(e,null,o.getCurrentPath())),s.target&&r.push('target="'+s.target+'"'),s.disabled&&(r.push("disabled"),e="javascript:void(0)"),s.class&&r.push('class="'+s.class+'"'),s.id&&r.push('id="'+s.id+'"'),t&&r.push('title="'+t+'"'),'"+n+""}}({renderer:e,router:l,linkTarget:t,compilerClass:c}),r.paragraph=function(e){return e.renderer.paragraph=function(e){return/^!>/.test(e)?oe("tip",e):/^\?>/.test(e)?oe("warn",e):"

    "+e+"

    "}}({renderer:e}),r.image=function(e){var t=e.renderer,h=e.contentBase,p=e.router;return t.image=function(e,t,n){var r=e,i=[],a=ge(t),s=a.str,o=a.config;if(t=s,o["no-zoom"]&&i.push("data-no-zoom"),t&&i.push('title="'+t+'"'),o.size){var l=o.size.split("x"),c=l[0],u=l[1];u?i.push('width="'+c+'" height="'+u+'"'):i.push('width="'+c+'" height="'+c+'"')}return o.class&&i.push('class="'+o.class+'"'),o.id&&i.push('id="'+o.id+'"'),H(e)||(r=D(h,I(p.getCurrentPath()),e)),0":''+n+'"}}({renderer:e,contentBase:n,router:l}),r.list=function(e){return e.renderer.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+" "+[/
  • /.test(e.split('class="task-list"')[0])?'class="task-list"':"",n&&1"+e+""}}({renderer:e}),r.listitem=function(e){return e.renderer.listitem=function(e){return/^(]*>)/.test(e)?'
  • ":"
  • "+e+"
  • "}}({renderer:e}),e.origin=r,e},_e.prototype.sidebar=function(e,t){var n=this.toc,r=this.router.getCurrentPath(),i="";if(e)i=this.compile(e);else{for(var a=0;a{inner}"),this.cacheTree[r]=l}return i},_e.prototype.subSidebar=function(e){if(e){var t=this.router.getCurrentPath(),n=this.cacheTree,r=this.toc;r[0]&&r[0].ignoreAllSubs&&r.splice(0),r[0]&&1===r[0].level&&r.shift();for(var i=0;i\n'+e+"\n"}]).links={}:(t=[{type:"html",text:e}]).links={};s({token:a,embedToken:t}),++c>=l&&s({})}}(t);t.embed.url?L(t.embed.url).then(r):r(t.embed.html)}}({compile:o,embedTokens:c,fetch:t},function(e){var t=e.embedToken,n=e.token;if(n){var r=n.index+p;d(h,t.links),l=l.slice(0,r).concat(t,l.slice(r+1)),p+=t.length-1}else Ae[a]=l.concat(),l.links=Ae[a].links=h,i(l)})}var Ee=/([^{]*?)\w(?=\})/g,Ce={YYYY:"getFullYear",YY:"getYear",MM:function(e){return e.getMonth()+1},DD:"getDate",HH:"getHours",mm:"getMinutes",ss:"getSeconds",fff:"getMilliseconds"};function Fe(){var e=y(".markdown-section>script").filter(function(e){return!/template/.test(e.type)})[0];if(!e)return!1;var t=e.innerText.trim();if(!t)return!1;setTimeout(function(e){window.__EXECUTE_RESULT__=new Function(t)()},0)}function Le(e,t,n){return t="function"==typeof n?n(t):"string"==typeof n?function(r,i){var a=[],s=0;return r.replace(Ee,function(t,e,n){a.push(r.substring(s,n-1)),s=n+=t.length+1,a.push(i&&i[t]||function(e){return("00"+("string"==typeof Ce[t]?e[Ce[t]]():Ce[t](e))).slice(-t.length)})}),s!==r.length&&a.push(r.substring(s)),function(e){for(var t="",n=0,r=e||new Date;n404 - Not found",this._renderTo(".markdown-section",e),this.config.loadSidebar||this._renderSidebar(),!1===this.config.executeScript||void 0===window.Vue||Fe()?this.config.executeScript&&Fe():setTimeout(function(e){var t=window.__EXECUTE_RESULT__;t&&t.$destroy&&t.$destroy(),window.__EXECUTE_RESULT__=(new window.Vue).$mount("#main")},0)}function Re(e){var t=e.config;e.compiler=new _e(t,e.router),window.__current_docsify_compiler__=e.compiler;var n=t.el||"#app",r=b("nav")||k("nav"),i=b(n),a="",s=v;if(i){if(t.repo&&(a+=function(e,t){return e?(/\/\//.test(e)||(e="https://github.com/"+e),''):""}(t.repo,t.cornerExternalLinkTarge)),t.coverpage&&(a+=function(){var e=", 100%, 85%";return'
    \x3c!--cover--\x3e
    '}()),t.logo){var o=/^data:image/.test(t.logo),l=/(?:http[s]?:)?\/\//.test(t.logo),c=/^\./.test(t.logo);o||l||c||(t.logo=D(e.router.getBasePath(),t.logo))}a+=function(e){var t=e.name?e.name:"",n='';return(g?n+"
    ":"
    "+n)+'
    \x3c!--main--\x3e
    '}(t),e._renderTo(i,a,!0)}else e.rendered=!0;t.mergeNavbar&&g?s=b(".sidebar"):(r.classList.add("app-nav"),t.repo||r.classList.add("no-badge")),t.loadNavbar&&x(s,r),t.themeColor&&(p.head.appendChild(k("div",function(e){return""}(t.themeColor)).firstElementChild),function(n){if(!(window.CSS&&window.CSS.supports&&window.CSS.supports("(--v:red)"))){var e=y("style:not(.inserted),link");[].forEach.call(e,function(e){if("STYLE"===e.nodeName)T(e,n);else if("LINK"===e.nodeName){var t=e.getAttribute("href");if(!/\.css$/.test(t))return;L(t).then(function(e){var t=k("style",e);f.appendChild(t),T(t,n)})}})}}(t.themeColor)),e._updateRender(),A(v,"ready")}var Oe={};function Pe(e){this.config=e}function ze(e){var t=location.href.indexOf("#");location.replace(location.href.slice(0,0<=t?t:0)+"#"+e)}Pe.prototype.getBasePath=function(){return this.config.basePath},Pe.prototype.getFile=function(e,t){void 0===e&&(e=this.getCurrentPath());var n=this.config,r=this.getBasePath(),i="string"==typeof n.ext?n.ext:".md";return e=(e=function(e,t){return new RegExp("\\.("+t.replace(/^\./,"")+"|html)$","g").test(e)?e:/\/$/g.test(e)?e+"README"+t:""+e+t}(e=n.alias?function e(t,n,r){var i=Object.keys(n).filter(function(e){return(Oe[e]||(Oe[e]=new RegExp("^"+e+"$"))).test(t)&&t!==r})[0];return i?e(t.replace(Oe[i],n[i]),n,t):t}(e,n.alias):e,i))==="/README"+i&&n.homepage||e,e=H(e)?e:D(r,e),t&&(e=e.replace(new RegExp("^"+r),"")),e},Pe.prototype.onchange=function(e){void 0===e&&(e=h),e()},Pe.prototype.getCurrentPath=function(){},Pe.prototype.normalize=function(){},Pe.prototype.parse=function(){},Pe.prototype.toURL=function(e,t,n){var r=n&&"#"===e[0],i=this.parse(U(e));if(i.query=d({},i.query,t),e=(e=i.path+q(i.query)).replace(/\.md(\?)|\.md$/,"$1"),r){var a=n.indexOf("?");e=(0([^<]*?)

    $');if(i){if("color"===i[2])n.style.background=i[1]+(i[3]||"");else{var a=i[1];A(n,"add","has-mask"),H(i[1])||(a=D(this.router.getBasePath(),i[1])),n.style.backgroundImage="url("+a+")",n.style.backgroundSize="cover",n.style.backgroundPosition="center center"}r=r.replace(i[0],"")}this._renderTo(".cover-main",r),P()}else A(n,"remove","show")},De._updateRender=function(){!function(e){var t=m(".app-name-link"),n=e.config.nameLink,r=e.route.path;if(t)if(c(e.config.nameLink))t.setAttribute("href",n);else if("object"==typeof n){var i=Object.keys(n).filter(function(e){return-1