From ce783e6706439f1e5994019f67bc889a312419c2 Mon Sep 17 00:00:00 2001 From: yunpeng Date: Wed, 18 Dec 2024 20:27:43 +0800 Subject: [PATCH] first commit --- .github/dependabot.yml | 7 + .gitignore | 8 + LICENSE | 170 + README.md | 3 + _config.butterfly.yml | 919 ++++ _config.landscape.yml | 0 _config.yml | 107 + package-lock.json | 4809 +++++++++++++++++ package.json | 30 + scaffolds/draft.md | 4 + scaffolds/page.md | 4 + scaffolds/post.md | 5 + source/CNAME | 1 + source/_posts/Git版本控制工具的使用.md | 302 ++ source/_posts/JavaWeb环境搭建-Tomcat.md | 310 ++ source/_posts/Java多线程.md | 880 +++ source/_posts/Java异常处理.md | 375 ++ source/_posts/Java数组.md | 400 ++ source/_posts/Java方法.md | 151 + source/_posts/Java泛型.md | 126 + source/_posts/Java流程控制.md | 283 + source/_posts/Java语法基础.md | 498 ++ source/_posts/Java面向对象基础.md | 331 ++ source/_posts/Java面向对象进阶.md | 569 ++ source/_posts/Java面向对象高级.md | 671 +++ source/_posts/MVC模式和三层架构.md | 79 + source/_posts/MySQL数据库基础.md | 1247 +++++ source/_posts/MySQL数据库高级.md | 763 +++ source/_posts/XML和JSON的使用(java).md | 484 ++ source/_posts/smartupload简单实现文件上传.md | 89 + source/_posts/一文搞懂AJAX技术.md | 233 + source/_posts/一文搞懂jSP.md | 355 ++ source/_posts/一文搞懂java-Servlet.md | 329 ++ source/_posts/初识Java.md | 204 + source/_posts/枚举、注解和反射.md | 588 ++ source/_posts/移动端布局.md | 937 ++++ .../简单的Java加减乘除计算器-适合新手.md | 84 + source/_posts/计算机硬件核心基础知识.md | 361 ++ .../_posts/过滤器-Filter-和监听器-Listener.md | 145 + source/categories/index.md | 5 + source/img/alipay.png | Bin 0 -> 68272 bytes source/img/avatar.png | Bin 0 -> 366339 bytes source/img/favicon16x16.png | Bin 0 -> 599 bytes source/img/favicon32x32.png | Bin 0 -> 1146 bytes source/img/index_img.png | Bin 0 -> 865450 bytes source/img/wechatpay.png | Bin 0 -> 48800 bytes source/tags/index.md | 5 + themes/.gitkeep | 0 .../.github/ISSUE_TEMPLATE/bug_report.yml | 63 + .../.github/ISSUE_TEMPLATE/config.yml | 22 + .../ISSUE_TEMPLATE/feature_request.yml | 14 + themes/butterfly/.github/stale.yml | 20 + .../butterfly/.github/workflows/publish.yml | 19 + themes/butterfly/LICENSE | 202 + themes/butterfly/README.md | 113 + themes/butterfly/README_CN.md | 113 + themes/butterfly/_config.yml | 914 ++++ themes/butterfly/languages/default.yml | 121 + themes/butterfly/languages/en.yml | 121 + themes/butterfly/languages/zh-CN.yml | 122 + themes/butterfly/languages/zh-TW.yml | 122 + themes/butterfly/layout/archive.pug | 9 + themes/butterfly/layout/category.pug | 14 + themes/butterfly/layout/includes/404.pug | 12 + .../layout/includes/additional-js.pug | 72 + themes/butterfly/layout/includes/footer.pug | 17 + themes/butterfly/layout/includes/head.pug | 76 + .../layout/includes/head/Open_Graph.pug | 11 + .../layout/includes/head/analytics.pug | 31 + .../butterfly/layout/includes/head/config.pug | 124 + .../layout/includes/head/config_site.pug | 30 + .../layout/includes/head/google_adsense.pug | 9 + .../layout/includes/head/noscript.pug | 14 + .../layout/includes/head/preconnect.pug | 22 + themes/butterfly/layout/includes/head/pwa.pug | 11 + .../includes/head/site_verification.pug | 3 + .../layout/includes/header/index.pug | 50 + .../layout/includes/header/menu_item.pug | 27 + .../butterfly/layout/includes/header/nav.pug | 17 + .../layout/includes/header/post-info.pug | 138 + .../layout/includes/header/social.pug | 4 + themes/butterfly/layout/includes/layout.pug | 48 + .../layout/includes/loading/loading-js.pug | 13 + .../layout/includes/loading/loading.pug | 9 + .../layout/includes/mixins/article-sort.pug | 20 + .../layout/includes/mixins/post-ui.pug | 128 + .../layout/includes/page/categories.pug | 1 + .../layout/includes/page/default-page.pug | 2 + .../butterfly/layout/includes/page/flink.pug | 68 + .../butterfly/layout/includes/page/tags.pug | 2 + .../butterfly/layout/includes/pagination.pug | 37 + .../layout/includes/post/post-copyright.pug | 17 + .../butterfly/layout/includes/post/reward.pug | 13 + .../butterfly/layout/includes/rightside.pug | 60 + themes/butterfly/layout/includes/sidebar.pug | 18 + .../layout/includes/third-party/aplayer.pug | 3 + .../third-party/card-post-count/disqus.pug | 16 + .../third-party/card-post-count/fb.pug | 15 + .../third-party/card-post-count/index.pug | 14 + .../third-party/card-post-count/remark42.pug | 18 + .../third-party/card-post-count/twikoo.pug | 37 + .../third-party/card-post-count/valine.pug | 20 + .../third-party/card-post-count/waline.pug | 18 + .../includes/third-party/chat/chatra.pug | 33 + .../includes/third-party/chat/crisp.pug | 36 + .../includes/third-party/chat/daovoice.pug | 40 + .../includes/third-party/chat/gitter.pug | 43 + .../includes/third-party/chat/index.pug | 10 + .../includes/third-party/chat/tidio.pug | 41 + .../includes/third-party/comments/disqus.pug | 51 + .../third-party/comments/disqusjs.pug | 64 + .../comments/facebook_comments.pug | 26 + .../includes/third-party/comments/giscus.pug | 49 + .../includes/third-party/comments/gitalk.pug | 48 + .../includes/third-party/comments/index.pug | 44 + .../includes/third-party/comments/js.pug | 24 + .../includes/third-party/comments/livere.pug | 26 + .../third-party/comments/remark42.pug | 67 + .../includes/third-party/comments/twikoo.pug | 53 + .../third-party/comments/utterances.pug | 34 + .../includes/third-party/comments/valine.pug | 33 + .../includes/third-party/comments/waline.pug | 40 + .../layout/includes/third-party/effect.pug | 35 + .../includes/third-party/math/index.pug | 18 + .../includes/third-party/math/katex.pug | 9 + .../includes/third-party/math/mathjax.pug | 48 + .../includes/third-party/math/mermaid.pug | 26 + .../newest-comments/disqus-comment.pug | 82 + .../newest-comments/github-issues.pug | 109 + .../third-party/newest-comments/index.pug | 28 + .../third-party/newest-comments/remark42.pug | 80 + .../newest-comments/twikoo-comment.pug | 93 + .../third-party/newest-comments/valine.pug | 99 + .../third-party/newest-comments/waline.pug | 84 + .../layout/includes/third-party/pangu.pug | 20 + .../layout/includes/third-party/pjax.pug | 87 + .../layout/includes/third-party/prismjs.pug | 5 + .../includes/third-party/search/algolia.pug | 18 + .../includes/third-party/search/index.pug | 4 + .../third-party/search/local-search.pug | 20 + .../includes/third-party/share/add-this.pug | 2 + .../includes/third-party/share/addtoany.pug | 10 + .../includes/third-party/share/index.pug | 7 + .../includes/third-party/share/share-js.pug | 3 + .../layout/includes/third-party/subtitle.pug | 128 + .../layout/includes/widget/card_ad.pug | 3 + .../includes/widget/card_announcement.pug | 6 + .../layout/includes/widget/card_archives.pug | 7 + .../layout/includes/widget/card_author.pug | 27 + .../includes/widget/card_bottom_self.pug | 9 + .../includes/widget/card_categories.pug | 4 + .../includes/widget/card_newest_comment.pug | 7 + .../layout/includes/widget/card_post_toc.pug | 15 + .../includes/widget/card_recent_post.pug | 24 + .../layout/includes/widget/card_tags.pug | 12 + .../layout/includes/widget/card_top_self.pug | 8 + .../layout/includes/widget/card_webinfo.pug | 35 + .../layout/includes/widget/index.pug | 34 + themes/butterfly/layout/index.pug | 7 + themes/butterfly/layout/page.pug | 20 + themes/butterfly/layout/post.pug | 32 + themes/butterfly/layout/tag.pug | 14 + themes/butterfly/package.json | 32 + themes/butterfly/plugins.yml | 182 + themes/butterfly/scripts/events/404.js | 18 + themes/butterfly/scripts/events/cdn.js | 94 + themes/butterfly/scripts/events/comment.js | 14 + themes/butterfly/scripts/events/init.js | 21 + themes/butterfly/scripts/events/stylus.js | 15 + themes/butterfly/scripts/events/welcome.js | 17 + .../scripts/filters/post_lazyload.js | 29 + .../butterfly/scripts/filters/random_cover.js | 45 + .../scripts/helpers/aside_archives.js | 113 + .../scripts/helpers/aside_categories.js | 97 + .../scripts/helpers/findArchiveLength.js | 58 + .../scripts/helpers/inject_head_js.js | 148 + themes/butterfly/scripts/helpers/page.js | 97 + .../butterfly/scripts/helpers/related_post.js | 99 + themes/butterfly/scripts/tag/button.js | 28 + themes/butterfly/scripts/tag/flink.js | 39 + themes/butterfly/scripts/tag/gallery.js | 34 + themes/butterfly/scripts/tag/hide.js | 70 + themes/butterfly/scripts/tag/inlineImg.js | 17 + themes/butterfly/scripts/tag/label.js | 16 + themes/butterfly/scripts/tag/mermaid.js | 17 + themes/butterfly/scripts/tag/note.js | 27 + themes/butterfly/scripts/tag/tabs.js | 62 + themes/butterfly/scripts/tag/timeline.js | 41 + .../source/css/_global/function.styl | 253 + .../butterfly/source/css/_global/index.styl | 220 + .../source/css/_highlight/highlight.styl | 209 + .../source/css/_highlight/highlight/diff.styl | 79 + .../css/_highlight/highlight/index.styl | 39 + .../source/css/_highlight/prismjs/diff.styl | 302 ++ .../source/css/_highlight/prismjs/index.styl | 22 + .../css/_highlight/prismjs/line-number.styl | 41 + .../source/css/_highlight/theme.styl | 119 + .../butterfly/source/css/_layout/aside.styl | 410 ++ themes/butterfly/source/css/_layout/chat.styl | 8 + .../source/css/_layout/comments.styl | 64 + .../butterfly/source/css/_layout/footer.styl | 35 + themes/butterfly/source/css/_layout/head.styl | 372 ++ .../butterfly/source/css/_layout/loading.styl | 95 + .../source/css/_layout/pagination.styl | 83 + themes/butterfly/source/css/_layout/post.styl | 251 + .../source/css/_layout/relatedposts.styl | 43 + .../butterfly/source/css/_layout/reward.styl | 74 + .../source/css/_layout/rightside.styl | 49 + .../butterfly/source/css/_layout/sidebar.styl | 68 + .../source/css/_layout/third-party.styl | 115 + .../butterfly/source/css/_mode/darkmode.styl | 150 + .../butterfly/source/css/_mode/readmode.styl | 197 + themes/butterfly/source/css/_page/404.styl | 69 + .../butterfly/source/css/_page/archives.styl | 109 + .../source/css/_page/categories.styl | 37 + themes/butterfly/source/css/_page/common.styl | 60 + themes/butterfly/source/css/_page/flink.styl | 87 + .../butterfly/source/css/_page/homepage.styl | 113 + themes/butterfly/source/css/_page/tags.styl | 23 + .../butterfly/source/css/_search/algolia.styl | 91 + .../butterfly/source/css/_search/index.styl | 49 + .../source/css/_search/local-search.styl | 67 + themes/butterfly/source/css/_tags/button.styl | 55 + .../butterfly/source/css/_tags/gallery.styl | 102 + themes/butterfly/source/css/_tags/hexo.styl | 30 + themes/butterfly/source/css/_tags/hide.styl | 46 + .../butterfly/source/css/_tags/inlineImg.styl | 6 + themes/butterfly/source/css/_tags/label.styl | 11 + themes/butterfly/source/css/_tags/note.styl | 121 + themes/butterfly/source/css/_tags/tabs.styl | 74 + .../butterfly/source/css/_tags/timeline.styl | 68 + .../source/css/_third-party/normalize.min.css | 180 + themes/butterfly/source/css/index.styl | 21 + themes/butterfly/source/css/var.styl | 183 + themes/butterfly/source/img/404.jpg | Bin 0 -> 16393 bytes themes/butterfly/source/img/friend_404.gif | Bin 0 -> 65097 bytes themes/butterfly/source/js/main.js | 778 +++ themes/butterfly/source/js/search/algolia.js | 163 + .../source/js/search/local-search.js | 188 + themes/butterfly/source/js/tw_cn.js | 100 + themes/butterfly/source/js/utils.js | 278 + 241 files changed, 29983 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 _config.butterfly.yml create mode 100644 _config.landscape.yml create mode 100644 _config.yml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scaffolds/draft.md create mode 100644 scaffolds/page.md create mode 100644 scaffolds/post.md create mode 100644 source/CNAME create mode 100644 source/_posts/Git版本控制工具的使用.md create mode 100644 source/_posts/JavaWeb环境搭建-Tomcat.md create mode 100644 source/_posts/Java多线程.md create mode 100644 source/_posts/Java异常处理.md create mode 100644 source/_posts/Java数组.md create mode 100644 source/_posts/Java方法.md create mode 100644 source/_posts/Java泛型.md create mode 100644 source/_posts/Java流程控制.md create mode 100644 source/_posts/Java语法基础.md create mode 100644 source/_posts/Java面向对象基础.md create mode 100644 source/_posts/Java面向对象进阶.md create mode 100644 source/_posts/Java面向对象高级.md create mode 100644 source/_posts/MVC模式和三层架构.md create mode 100644 source/_posts/MySQL数据库基础.md create mode 100644 source/_posts/MySQL数据库高级.md create mode 100644 source/_posts/XML和JSON的使用(java).md create mode 100644 source/_posts/smartupload简单实现文件上传.md create mode 100644 source/_posts/一文搞懂AJAX技术.md create mode 100644 source/_posts/一文搞懂jSP.md create mode 100644 source/_posts/一文搞懂java-Servlet.md create mode 100644 source/_posts/初识Java.md create mode 100644 source/_posts/枚举、注解和反射.md create mode 100644 source/_posts/移动端布局.md create mode 100644 source/_posts/简单的Java加减乘除计算器-适合新手.md create mode 100644 source/_posts/计算机硬件核心基础知识.md create mode 100644 source/_posts/过滤器-Filter-和监听器-Listener.md create mode 100644 source/categories/index.md create mode 100644 source/img/alipay.png create mode 100644 source/img/avatar.png create mode 100644 source/img/favicon16x16.png create mode 100644 source/img/favicon32x32.png create mode 100644 source/img/index_img.png create mode 100644 source/img/wechatpay.png create mode 100644 source/tags/index.md create mode 100644 themes/.gitkeep create mode 100644 themes/butterfly/.github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 themes/butterfly/.github/ISSUE_TEMPLATE/config.yml create mode 100644 themes/butterfly/.github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 themes/butterfly/.github/stale.yml create mode 100644 themes/butterfly/.github/workflows/publish.yml create mode 100644 themes/butterfly/LICENSE create mode 100644 themes/butterfly/README.md create mode 100644 themes/butterfly/README_CN.md create mode 100644 themes/butterfly/_config.yml create mode 100644 themes/butterfly/languages/default.yml create mode 100644 themes/butterfly/languages/en.yml create mode 100644 themes/butterfly/languages/zh-CN.yml create mode 100644 themes/butterfly/languages/zh-TW.yml create mode 100644 themes/butterfly/layout/archive.pug create mode 100644 themes/butterfly/layout/category.pug create mode 100644 themes/butterfly/layout/includes/404.pug create mode 100644 themes/butterfly/layout/includes/additional-js.pug create mode 100644 themes/butterfly/layout/includes/footer.pug create mode 100644 themes/butterfly/layout/includes/head.pug create mode 100644 themes/butterfly/layout/includes/head/Open_Graph.pug create mode 100644 themes/butterfly/layout/includes/head/analytics.pug create mode 100644 themes/butterfly/layout/includes/head/config.pug create mode 100644 themes/butterfly/layout/includes/head/config_site.pug create mode 100644 themes/butterfly/layout/includes/head/google_adsense.pug create mode 100644 themes/butterfly/layout/includes/head/noscript.pug create mode 100644 themes/butterfly/layout/includes/head/preconnect.pug create mode 100644 themes/butterfly/layout/includes/head/pwa.pug create mode 100644 themes/butterfly/layout/includes/head/site_verification.pug create mode 100644 themes/butterfly/layout/includes/header/index.pug create mode 100644 themes/butterfly/layout/includes/header/menu_item.pug create mode 100644 themes/butterfly/layout/includes/header/nav.pug create mode 100644 themes/butterfly/layout/includes/header/post-info.pug create mode 100644 themes/butterfly/layout/includes/header/social.pug create mode 100644 themes/butterfly/layout/includes/layout.pug create mode 100644 themes/butterfly/layout/includes/loading/loading-js.pug create mode 100644 themes/butterfly/layout/includes/loading/loading.pug create mode 100644 themes/butterfly/layout/includes/mixins/article-sort.pug create mode 100644 themes/butterfly/layout/includes/mixins/post-ui.pug create mode 100644 themes/butterfly/layout/includes/page/categories.pug create mode 100644 themes/butterfly/layout/includes/page/default-page.pug create mode 100644 themes/butterfly/layout/includes/page/flink.pug create mode 100644 themes/butterfly/layout/includes/page/tags.pug create mode 100644 themes/butterfly/layout/includes/pagination.pug create mode 100644 themes/butterfly/layout/includes/post/post-copyright.pug create mode 100644 themes/butterfly/layout/includes/post/reward.pug create mode 100644 themes/butterfly/layout/includes/rightside.pug create mode 100644 themes/butterfly/layout/includes/sidebar.pug create mode 100644 themes/butterfly/layout/includes/third-party/aplayer.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/disqus.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/fb.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/remark42.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/twikoo.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/valine.pug create mode 100644 themes/butterfly/layout/includes/third-party/card-post-count/waline.pug create mode 100644 themes/butterfly/layout/includes/third-party/chat/chatra.pug create mode 100644 themes/butterfly/layout/includes/third-party/chat/crisp.pug create mode 100644 themes/butterfly/layout/includes/third-party/chat/daovoice.pug create mode 100644 themes/butterfly/layout/includes/third-party/chat/gitter.pug create mode 100644 themes/butterfly/layout/includes/third-party/chat/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/chat/tidio.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/disqus.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/disqusjs.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/facebook_comments.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/giscus.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/gitalk.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/js.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/livere.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/remark42.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/twikoo.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/utterances.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/valine.pug create mode 100644 themes/butterfly/layout/includes/third-party/comments/waline.pug create mode 100644 themes/butterfly/layout/includes/third-party/effect.pug create mode 100644 themes/butterfly/layout/includes/third-party/math/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/math/katex.pug create mode 100644 themes/butterfly/layout/includes/third-party/math/mathjax.pug create mode 100644 themes/butterfly/layout/includes/third-party/math/mermaid.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/disqus-comment.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/github-issues.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/remark42.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/twikoo-comment.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/valine.pug create mode 100644 themes/butterfly/layout/includes/third-party/newest-comments/waline.pug create mode 100644 themes/butterfly/layout/includes/third-party/pangu.pug create mode 100644 themes/butterfly/layout/includes/third-party/pjax.pug create mode 100644 themes/butterfly/layout/includes/third-party/prismjs.pug create mode 100644 themes/butterfly/layout/includes/third-party/search/algolia.pug create mode 100644 themes/butterfly/layout/includes/third-party/search/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/search/local-search.pug create mode 100644 themes/butterfly/layout/includes/third-party/share/add-this.pug create mode 100644 themes/butterfly/layout/includes/third-party/share/addtoany.pug create mode 100644 themes/butterfly/layout/includes/third-party/share/index.pug create mode 100644 themes/butterfly/layout/includes/third-party/share/share-js.pug create mode 100644 themes/butterfly/layout/includes/third-party/subtitle.pug create mode 100644 themes/butterfly/layout/includes/widget/card_ad.pug create mode 100644 themes/butterfly/layout/includes/widget/card_announcement.pug create mode 100644 themes/butterfly/layout/includes/widget/card_archives.pug create mode 100644 themes/butterfly/layout/includes/widget/card_author.pug create mode 100644 themes/butterfly/layout/includes/widget/card_bottom_self.pug create mode 100644 themes/butterfly/layout/includes/widget/card_categories.pug create mode 100644 themes/butterfly/layout/includes/widget/card_newest_comment.pug create mode 100644 themes/butterfly/layout/includes/widget/card_post_toc.pug create mode 100644 themes/butterfly/layout/includes/widget/card_recent_post.pug create mode 100644 themes/butterfly/layout/includes/widget/card_tags.pug create mode 100644 themes/butterfly/layout/includes/widget/card_top_self.pug create mode 100644 themes/butterfly/layout/includes/widget/card_webinfo.pug create mode 100644 themes/butterfly/layout/includes/widget/index.pug create mode 100644 themes/butterfly/layout/index.pug create mode 100644 themes/butterfly/layout/page.pug create mode 100644 themes/butterfly/layout/post.pug create mode 100644 themes/butterfly/layout/tag.pug create mode 100644 themes/butterfly/package.json create mode 100644 themes/butterfly/plugins.yml create mode 100644 themes/butterfly/scripts/events/404.js create mode 100644 themes/butterfly/scripts/events/cdn.js create mode 100644 themes/butterfly/scripts/events/comment.js create mode 100644 themes/butterfly/scripts/events/init.js create mode 100644 themes/butterfly/scripts/events/stylus.js create mode 100644 themes/butterfly/scripts/events/welcome.js create mode 100644 themes/butterfly/scripts/filters/post_lazyload.js create mode 100644 themes/butterfly/scripts/filters/random_cover.js create mode 100644 themes/butterfly/scripts/helpers/aside_archives.js create mode 100644 themes/butterfly/scripts/helpers/aside_categories.js create mode 100644 themes/butterfly/scripts/helpers/findArchiveLength.js create mode 100644 themes/butterfly/scripts/helpers/inject_head_js.js create mode 100644 themes/butterfly/scripts/helpers/page.js create mode 100644 themes/butterfly/scripts/helpers/related_post.js create mode 100644 themes/butterfly/scripts/tag/button.js create mode 100644 themes/butterfly/scripts/tag/flink.js create mode 100644 themes/butterfly/scripts/tag/gallery.js create mode 100644 themes/butterfly/scripts/tag/hide.js create mode 100644 themes/butterfly/scripts/tag/inlineImg.js create mode 100644 themes/butterfly/scripts/tag/label.js create mode 100644 themes/butterfly/scripts/tag/mermaid.js create mode 100644 themes/butterfly/scripts/tag/note.js create mode 100644 themes/butterfly/scripts/tag/tabs.js create mode 100644 themes/butterfly/scripts/tag/timeline.js create mode 100644 themes/butterfly/source/css/_global/function.styl create mode 100644 themes/butterfly/source/css/_global/index.styl create mode 100644 themes/butterfly/source/css/_highlight/highlight.styl create mode 100644 themes/butterfly/source/css/_highlight/highlight/diff.styl create mode 100644 themes/butterfly/source/css/_highlight/highlight/index.styl create mode 100644 themes/butterfly/source/css/_highlight/prismjs/diff.styl create mode 100644 themes/butterfly/source/css/_highlight/prismjs/index.styl create mode 100644 themes/butterfly/source/css/_highlight/prismjs/line-number.styl create mode 100644 themes/butterfly/source/css/_highlight/theme.styl create mode 100644 themes/butterfly/source/css/_layout/aside.styl create mode 100644 themes/butterfly/source/css/_layout/chat.styl create mode 100644 themes/butterfly/source/css/_layout/comments.styl create mode 100644 themes/butterfly/source/css/_layout/footer.styl create mode 100644 themes/butterfly/source/css/_layout/head.styl create mode 100644 themes/butterfly/source/css/_layout/loading.styl create mode 100644 themes/butterfly/source/css/_layout/pagination.styl create mode 100644 themes/butterfly/source/css/_layout/post.styl create mode 100644 themes/butterfly/source/css/_layout/relatedposts.styl create mode 100644 themes/butterfly/source/css/_layout/reward.styl create mode 100644 themes/butterfly/source/css/_layout/rightside.styl create mode 100644 themes/butterfly/source/css/_layout/sidebar.styl create mode 100644 themes/butterfly/source/css/_layout/third-party.styl create mode 100644 themes/butterfly/source/css/_mode/darkmode.styl create mode 100644 themes/butterfly/source/css/_mode/readmode.styl create mode 100644 themes/butterfly/source/css/_page/404.styl create mode 100644 themes/butterfly/source/css/_page/archives.styl create mode 100644 themes/butterfly/source/css/_page/categories.styl create mode 100644 themes/butterfly/source/css/_page/common.styl create mode 100644 themes/butterfly/source/css/_page/flink.styl create mode 100644 themes/butterfly/source/css/_page/homepage.styl create mode 100644 themes/butterfly/source/css/_page/tags.styl create mode 100644 themes/butterfly/source/css/_search/algolia.styl create mode 100644 themes/butterfly/source/css/_search/index.styl create mode 100644 themes/butterfly/source/css/_search/local-search.styl create mode 100644 themes/butterfly/source/css/_tags/button.styl create mode 100644 themes/butterfly/source/css/_tags/gallery.styl create mode 100644 themes/butterfly/source/css/_tags/hexo.styl create mode 100644 themes/butterfly/source/css/_tags/hide.styl create mode 100644 themes/butterfly/source/css/_tags/inlineImg.styl create mode 100644 themes/butterfly/source/css/_tags/label.styl create mode 100644 themes/butterfly/source/css/_tags/note.styl create mode 100644 themes/butterfly/source/css/_tags/tabs.styl create mode 100644 themes/butterfly/source/css/_tags/timeline.styl create mode 100644 themes/butterfly/source/css/_third-party/normalize.min.css create mode 100644 themes/butterfly/source/css/index.styl create mode 100644 themes/butterfly/source/css/var.styl create mode 100644 themes/butterfly/source/img/404.jpg create mode 100644 themes/butterfly/source/img/friend_404.gif create mode 100644 themes/butterfly/source/js/main.js create mode 100644 themes/butterfly/source/js/search/algolia.js create mode 100644 themes/butterfly/source/js/search/local-search.js create mode 100644 themes/butterfly/source/js/tw_cn.js create mode 100644 themes/butterfly/source/js/utils.js diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..93385d9 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 20 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..63f307b --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +Thumbs.db +db.json +*.log +node_modules/ +public/ +.deploy*/ +_multiconfig.yml \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..baee873 --- /dev/null +++ b/LICENSE @@ -0,0 +1,170 @@ +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International + + Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + k. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. + + l. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and + + B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. + + C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. + + 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c07d53d --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# My-Blog-Hexo + +hexo 博客 \ No newline at end of file diff --git a/_config.butterfly.yml b/_config.butterfly.yml new file mode 100644 index 0000000..f1e8ff7 --- /dev/null +++ b/_config.butterfly.yml @@ -0,0 +1,919 @@ +# Main menu navigation (導航目錄) +# see https://butterfly.js.org/posts/4aa8abbe/#導航菜單 +# -------------------------------------- + +menu: + 主页: / || fas fa-home + 文章: /archives/ || fas fa-archive + 标签: /tags/ || fas fa-tags + 分类: /categories/ || fas fa-folder-open + # List||fas fa-list: + # Music: /music/ || fas fa-music + # Movie: /movies/ || fas fa-video + # Link: /link/ || fas fa-link + # About: /about/ || fas fa-heart + +# Code Blocks (代碼相關) +# -------------------------------------- + +highlight_theme: mac # darker / pale night / light / ocean / mac / mac light / false +highlight_copy: true # copy button +highlight_lang: true # show the code language +highlight_shrink: false # true: shrink the code blocks / false: expand the code blocks | none: expand code blocks and hide the button +highlight_height_limit: false # unit: px +code_word_wrap: false + +# copy settings +# copyright: Add the copyright information after copied content (複製的內容後面加上版權信息) +copy: + enable: true + copyright: + enable: false + limit_count: 50 + +# social settings (社交圖標設置) +# formal: +# icon: link || the description +social: + fab fa-github: https://github.com/AnswerCoder || Github + fas fa-envelope: mailto:zhangyp1015@163.com || Email + +# search (搜索) +# see https://butterfly.js.org/posts/ceeb73f/#搜索系統 +# -------------------------------------- + +# Algolia search +algolia_search: + enable: false + hits: + per_page: 6 + +# Local search +local_search: + enable: false + preload: false + CDN: + +# Math (數學) +# -------------------------------------- +# About the per_page +# if you set it to true, it will load mathjax/katex script in each page (true 表示每一頁都加載js) +# if you set it to false, it will load mathjax/katex script according to your setting (add the 'mathjax: true' in page's front-matter) +# (false 需要時加載,須在使用的 Markdown Front-matter 加上 mathjax: true) + +# MathJax +mathjax: + enable: false + per_page: false + +# KaTeX +katex: + enable: false + per_page: false + hide_scrollbar: true + +# Image (圖片設置) +# -------------------------------------- + +# Favicon(網站圖標) +favicon: /img/favicon16x16.png + +# Avatar (頭像) +avatar: + img: /img/avatar.png + effect: false + +# Disable all banner image +disable_top_img: false + +# The banner image of home page +index_img: /img/index_img.png + +# If the banner of page not setting, it will show the top_img +default_top_img: https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png + +# The banner image of archive page +archive_img: + +# If the banner of tag page not setting, it will show the top_img +# note: tag page, not tags page (子標籤頁面的 top_img) +tag_img: + +# The banner image of tag page +# format: +# - tag name: xxxxx +tag_per_img: + +# If the banner of category page not setting, it will show the top_img +# note: category page, not categories page (子分類頁面的 top_img) +category_img: + +# The banner image of category page +# format: +# - category name: xxxxx +category_per_img: + +cover: + # display the cover or not (是否顯示文章封面) + index_enable: true + aside_enable: true + archives_enable: true + # the position of cover in home page (封面顯示的位置) + # left/right/both + position: both + # When cover is not set, the default cover is displayed (當沒有設置cover時,默認的封面顯示) + default_cover: + - https://s2.loli.net/2022/08/14/4bGjC1YzqQpIKBZ.jpg + - https://s2.loli.net/2022/08/14/7J9RvVH8husy5BE.png + - https://s2.loli.net/2022/08/14/OSlNBJfUAcWYIdF.png + - https://s2.loli.net/2022/08/14/FWfoLexXQO1HDtA.png + + +# Replace Broken Images (替換無法顯示的圖片) +error_img: + flink: /img/friend_404.gif + post_page: /img/404.jpg + +# A simple 404 page +error_404: + enable: true + subtitle: 'Page Not Found' + background: https://i.loli.net/2020/05/19/aKOcLiyPl2JQdFD.png + +post_meta: + page: # Home Page + date_type: both # created or updated or both 主頁文章日期是創建日或者更新日或都顯示 + date_format: date # date/relative 顯示日期還是相對日期 + categories: true # true or false 主頁是否顯示分類 + tags: true # true or false 主頁是否顯示標籤 + label: true # true or false 顯示描述性文字 + post: + date_type: both # created or updated or both 文章頁日期是創建日或者更新日或都顯示 + date_format: date # date/relative 顯示日期還是相對日期 + categories: true # true or false 文章頁是否顯示分類 + tags: true # true or false 文章頁是否顯示標籤 + label: true # true or false 顯示描述性文字 + + +# wordcount (字數統計) +# see https://butterfly.js.org/posts/ceeb73f/#字數統計 +wordcount: + enable: true + post_wordcount: true + min2read: true + total_wordcount: true + +# Display the article introduction on homepage +# 1: description +# 2: both (if the description exists, it will show description, or show the auto_excerpt) +# 3: auto_excerpt (default) +# false: do not show the article introduction +index_post_content: + method: 3 + length: 500 # if you set method to 2 or 3, the length need to config + +# anchor +# when you scroll in post, the URL will update according to header id. +anchor: false + +# Post +# -------------------------------------- + +# toc (目錄) +toc: + post: true + page: false + number: true + expand: false + style_simple: false # for post + +post_copyright: + enable: true + decode: false + author_href: + license: CC BY-NC-SA 4.0 + license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +# Sponsor/reward +reward: + enable: true + QR_code: + - img: /img/wechatpay.png + link: + text: 微信 + - img: /img/alipay.png + link: + text: 支付宝 + +# Post edit +# Easily browse and edit blog source code online. +post_edit: + enable: false + # url: https://github.com/user-name/repo-name/edit/branch-name/subdirectory-name/ + # For example: https://github.com/jerryc127/butterfly.js.org/edit/main/source/ + url: + +# Related Articles +related_post: + enable: true + limit: 6 # Number of posts displayed + date_type: created # or created or updated 文章日期顯示創建日或者更新日 + +# figcaption (圖片描述文字) +photofigcaption: false + +# post_pagination (分頁) +# value: 1 || 2 || false +# 1: The 'next post' will link to old post +# 2: The 'next post' will link to new post +# false: disable pagination +post_pagination: 1 + +# Displays outdated notice for a post (文章過期提醒) +noticeOutdate: + enable: false + style: flat # style: simple/flat + limit_day: 500 # When will it be shown + position: top # position: top/bottom + message_prev: It has been + message_next: days since the last update, the content of the article may be outdated. + +# Share System (分享功能) +# -------------------------------------- + +# AddThis +# https://www.addthis.com/ +addThis: + enable: false + pubid: + +# Share.js +# https://github.com/overtrue/share.js +sharejs: + enable: true + sites: facebook,twitter,wechat,weibo,qq + +# AddToAny +# https://www.addtoany.com/ +addtoany: + enable: false + item: facebook,twitter,wechat,sina_weibo,facebook_messenger,email,copy_link + +# Comments System +# -------------------------------------- + +comments: + # Up to two comments system, the first will be shown as default + # Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42 + use: # Valine,Disqus + text: true # Display the comment name next to the button + # lazyload: The comment system will be load when comment element enters the browser's viewport. + # If you set it to true, the comment count will be invalid + lazyload: false + count: false # Display comment count in post's top_img + card_post_count: false # Display comment count in Home Page + +# disqus +# https://disqus.com/ +disqus: + shortname: + apikey: # For newest comments widget + +# Alternative Disqus - Render comments with Disqus API +# DisqusJS 評論系統,可以實現在網路審查地區載入 Disqus 評論列表,兼容原版 +# https://github.com/SukkaW/DisqusJS +disqusjs: + shortname: + apikey: + option: + +# livere (來必力) +# https://www.livere.com/ +livere: + uid: + +# gitalk +# https://github.com/gitalk/gitalk +gitalk: + client_id: + client_secret: + repo: + owner: + admin: + option: + +# valine +# https://valine.js.org +valine: + appId: # leancloud application app id + appKey: # leancloud application app key + avatar: monsterid # gravatar style https://valine.js.org/#/avatar + serverURLs: # This configuration is suitable for domestic custom domain name users, overseas version will be automatically detected (no need to manually fill in) + bg: # valine background + visitor: false + option: + +# waline - A simple comment system with backend support fork from Valine +# https://waline.js.org/ +waline: + serverURL: # Waline server address url + bg: # waline background + pageview: false + option: + +# utterances +# https://utteranc.es/ +utterances: + repo: + # Issue Mapping: pathname/url/title/og:title + issue_term: pathname + # Theme: github-light/github-dark/github-dark-orange/icy-dark/dark-blue/photon-dark + light_theme: github-light + dark_theme: photon-dark + +# Facebook Comments Plugin +# https://developers.facebook.com/docs/plugins/comments/ +facebook_comments: + app_id: + user_id: # optional + pageSize: 10 # The number of comments to show + order_by: social # social/time/reverse_time + lang: en_US # Language en_US/zh_CN/zh_TW and so on + +# Twikoo +# https://github.com/imaegoo/twikoo +twikoo: + envId: + region: + visitor: false + option: + +# Giscus +# https://giscus.app/ +giscus: + repo: + repo_id: + category_id: + theme: + light: light + dark: dark + option: + +# Remark42 +# https://remark42.com/docs/configuration/frontend/ +remark42: + host: # Your Host URL + siteId: # Your Site ID + option: + +# Chat Services +# -------------------------------------- + +# Chat Button [recommend] +# It will create a button in the bottom right corner of website, and hide the origin button +chat_btn: false + +# The origin chat button is displayed when scrolling up, and the button is hidden when scrolling down +chat_hide_show: false + +# chatra +# https://chatra.io/ +chatra: + enable: false + id: + +# tidio +# https://www.tidio.com/ +tidio: + enable: false + public_key: + +# daovoice +# http://daovoice.io/ +daovoice: + enable: false + app_id: + +# gitter +# https://gitter.im/ +gitter: + enable: false + room: + +# crisp +# https://crisp.chat/en/ +crisp: + enable: false + website_id: + +# Footer Settings +# -------------------------------------- +footer: + owner: + enable: true + since: 2021 + custom_text: 豫ICP备2024100875号 + copyright: true # Copyright of theme and framework + +# Analysis +# -------------------------------------- + +# Baidu Analytics +# https://tongji.baidu.com/web/welcome/login +baidu_analytics: + +# Google Analytics +# https://analytics.google.com/analytics/web/ +google_analytics: + +# CNZZ Analytics +# https://www.umeng.com/ +cnzz_analytics: + +# Cloudflare Analytics +# https://www.cloudflare.com/zh-tw/web-analytics/ +cloudflare_analytics: + +# Microsoft Clarity +# https://clarity.microsoft.com/ +microsoft_clarity: + +# Advertisement +# -------------------------------------- + +# Google Adsense (谷歌廣告) +google_adsense: + enable: false + auto_ads: true + js: https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js + client: + enable_page_level_ads: true + +# Insert ads manually (手動插入廣告) +# ad: +# index: +# aside: +# post: + +# Verification (站長驗證) +# -------------------------------------- + +site_verification: + # - name: google-site-verification + # content: xxxxxx + # - name: baidu-site-verification + # content: xxxxxxx + +# Beautify/Effect (美化/效果) +# -------------------------------------- + +# Theme color for customize +# Notice: color value must in double quotes like "#000" or may cause error! + +# theme_color: +# enable: true +# main: "#49B1F5" +# paginator: "#00c4b6" +# button_hover: "#FF7242" +# text_selection: "#00c4b6" +# link_color: "#99a9bf" +# meta_color: "#858585" +# hr_color: "#A4D8FA" +# code_foreground: "#F47466" +# code_background: "rgba(27, 31, 35, .05)" +# toc_color: "#00c4b6" +# blockquote_padding_color: "#49b1f5" +# blockquote_background_color: "#49b1f5" +# scrollbar_color: "#49b1f5" +# meta_theme_color_light: "ffffff" +# meta_theme_color_dark: "#0d0d0d" + +# The top_img settings of home page +# default: top img - full screen, site info - middle (默認top_img全屏,site_info在中間) +# The position of site info, eg: 300px/300em/300rem/10% (主頁標題距離頂部距離) +index_site_info_top: +# The height of top_img, eg: 300px/300em/300rem (主頁top_img高度) +index_top_img_height: + +# The user interface setting of category and tag page (category和tag頁的UI設置) +# index - same as Homepage UI (index 值代表 UI將與首頁的UI一樣) +# default - same as archives UI 默認跟archives頁面UI一樣 +category_ui: # 留空或 index +tag_ui: # 留空或 index + +# Website Background (設置網站背景) +# can set it to color or image (可設置圖片 或者 顔色) +# The formal of image: url(http://xxxxxx.com/xxx.jpg) +background: + +# Footer Background +footer_bg: false + +# the position of bottom right button/default unit: px (右下角按鈕距離底部的距離/默認單位為px) +rightside-bottom: + +# Enter transitions (開啓網頁進入效果) +enter_transitions: true + +# Background effects (背景特效) +# -------------------------------------- + +# canvas_ribbon (靜止彩帶背景) +# See: https://github.com/hustcc/ribbon.js +canvas_ribbon: + enable: true + size: 150 + alpha: 0.6 + zIndex: -1 + click_to_change: false + mobile: false + +# Fluttering Ribbon (動態彩帶) +canvas_fluttering_ribbon: + enable: true + mobile: false + +# canvas_nest +# https://github.com/hustcc/canvas-nest.js +canvas_nest: + enable: false + color: '0,0,255' #color of lines, default: '0,0,0'; RGB values: (R,G,B).(note: use ',' to separate.) + opacity: 0.7 # the opacity of line (0~1), default: 0.5. + zIndex: -1 # z-index property of the background, default: -1. + count: 99 # the number of lines, default: 99. + mobile: false + +# Typewriter Effect (打字效果) +# https://github.com/disjukr/activate-power-mode +activate_power_mode: + enable: false + colorful: true # open particle animation (冒光特效) + shake: true # open shake (抖動特效) + mobile: false + +# Mouse click effects: fireworks (鼠標點擊效果: 煙火特效) +fireworks: + enable: false + zIndex: 9999 # -1 or 9999 + mobile: false + +# Mouse click effects: Heart symbol (鼠標點擊效果: 愛心) +click_heart: + enable: false + mobile: false + +# Mouse click effects: words (鼠標點擊效果: 文字) +ClickShowText: + enable: false + text: + # - I + # - LOVE + # - YOU + fontSize: 15px + random: false + mobile: false + +# Default display mode (網站默認的顯示模式) +# light (default) / dark +display_mode: light + +# Beautify (美化頁面顯示) +beautify: + enable: false + field: post # site/post + title-prefix-icon: # '\f0c1' + title-prefix-icon-color: # '#F47466' + +# Global font settings +# Don't modify the following settings unless you know how they work (非必要不要修改) +font: + global-font-size: + code-font-size: + font-family: + code-font-family: + +# Font settings for the site title and site subtitle +# 左上角網站名字 主頁居中網站名字 +blog_title_font: + font_link: + font-family: + +# The setting of divider icon (水平分隔線圖標設置) +hr_icon: + enable: true + icon: # the unicode value of Font Awesome icon, such as '\3423' + icon-top: + +# the subtitle on homepage (主頁subtitle) +subtitle: + enable: true + # Typewriter Effect (打字效果) + effect: true + # loop (循環打字) + loop: true + # source 調用第三方服務 + # source: false 關閉調用 + # source: 1 調用一言網的一句話(簡體) https://hitokoto.cn/ + # source: 2 調用一句網(簡體) http://yijuzhan.com/ + # source: 3 調用今日詩詞(簡體) https://www.jinrishici.com/ + # subtitle 會先顯示 source , 再顯示 sub 的內容 + source: 3 + # 如果關閉打字效果,subtitle 只會顯示 sub 的第一行文字 + sub: + +# Loading Animation (加載動畫) +preloader: false + +# aside (側邊欄) +# -------------------------------------- + +aside: + enable: true + hide: false + button: true + mobile: true # display on mobile + position: right # left or right + display: + archive: true + tag: true + category: true + card_author: + enable: true + description: + button: + enable: true + icon: fab fa-github + text: Follow Me + link: https://github.com/AnswerCoder + card_announcement: + enable: true + content: 外面的声音太嘈杂,听自己的心就好 + card_recent_post: + enable: true + limit: 5 # if set 0 will show all + sort: date # date or updated + sort_order: # Don't modify the setting unless you know how it works + card_categories: + enable: true + limit: 8 # if set 0 will show all + expand: none # none/true/false + sort_order: # Don't modify the setting unless you know how it works + card_tags: + enable: true + limit: 20 # if set 0 will show all + color: false + sort_order: # Don't modify the setting unless you know how it works + card_archives: + enable: true + type: monthly # yearly or monthly + format: MMMM YYYY # eg: YYYY年MM月 + order: -1 # Sort of order. 1, asc for ascending; -1, desc for descending + limit: 8 # if set 0 will show all + sort_order: # Don't modify the setting unless you know how it works + card_webinfo: + enable: true + post_count: true + last_push_date: true + sort_order: # Don't modify the setting unless you know how it works + +# busuanzi count for PV / UV in site +# 訪問人數 +busuanzi: + site_uv: true + site_pv: true + page_pv: true + +# Time difference between publish date and now (網頁運行時間) +# Formal: Month/Day/Year Time or Year/Month/Day Time +runtimeshow: + enable: true + publish_date: 2020/04/25 + +# Aside widget - Newest Comments +newest_comments: + enable: false + sort_order: # Don't modify the setting unless you know how it works + limit: 6 + storage: 10 # unit: mins, save data to localStorage + avatar: true + +# Bottom right button (右下角按鈕) +# -------------------------------------- + +# Conversion between Traditional and Simplified Chinese (簡繁轉換) +translate: + enable: true + # The text of a button + default: 简 + # the language of website (1 - Traditional Chinese/ 2 - Simplified Chinese) + defaultEncoding: 2 + # Time delay + translateDelay: 0 + # The text of the button when the language is Simplified Chinese + msgToTraditionalChinese: '繁' + # The text of the button when the language is Traditional Chinese + msgToSimplifiedChinese: '简' + +# Read Mode (閲讀模式) +readmode: true + +# dark mode +darkmode: + enable: true + # Toggle Button to switch dark/light mode + button: true + # Switch dark/light mode automatically (自動切換 dark mode和 light mode) + # autoChangeMode: 1 Following System Settings, if the system doesn't support dark mode, it will switch dark mode between 6 pm to 6 am + # autoChangeMode: 2 Switch dark mode between 6 pm to 6 am + # autoChangeMode: false + autoChangeMode: false + +# Don't modify the following settings unless you know how they work (非必要請不要修改 ) +# Choose: readmode,translate,darkmode,hideAside,toc,chat,comment +# Don't repeat 不要重複 +rightside_item_order: + enable: false + hide: # readmode,translate,darkmode,hideAside + show: # toc,chat,comment + +# Lightbox (圖片大圖查看模式) +# -------------------------------------- +# You can only choose one, or neither (只能選擇一個 或者 兩個都不選) + +# medium-zoom +# https://github.com/francoischalifour/medium-zoom +medium_zoom: false + +# fancybox +# http://fancyapps.com/fancybox/3/ +fancybox: true + +# Tag Plugins settings (標籤外掛) +# -------------------------------------- + +# mermaid +# see https://github.com/mermaid-js/mermaid +mermaid: + enable: false + # built-in themes: default/forest/dark/neutral + theme: + light: default + dark: dark + +# Note (Bootstrap Callout) +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: flat + icons: true + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# other +# -------------------------------------- + +# Pjax +# It may contain bugs and unstable, give feedback when you find the bugs. +# https://github.com/MoOx/pjax +pjax: + enable: false + exclude: + # - xxxx + # - xxxx + +# Inject the css and script (aplayer/meting) +aplayerInject: + enable: false + per_page: true + +# Snackbar (Toast Notification 彈窗) +# https://github.com/polonel/SnackBar +# position 彈窗位置 +# 可選 top-left / top-center / top-right / bottom-left / bottom-center / bottom-right +snackbar: + enable: false + position: bottom-left + bg_light: '#49b1f5' # The background color of Toast Notification in light mode + bg_dark: '#1f1f1f' # The background color of Toast Notification in dark mode + +# https://instant.page/ +# prefetch (預加載) +instantpage: false + +# https://github.com/vinta/pangu.js +# Insert a space between Chinese character and English character (中英文之間添加空格) +pangu: + enable: false + field: site # site/post + +# Lazyload (圖片懶加載) +# https://github.com/verlok/vanilla-lazyload +lazyload: + enable: false + field: site # site/post + placeholder: + blur: false + +# PWA +# See https://github.com/JLHwung/hexo-offline +# --------------- +# pwa: +# enable: false +# manifest: /pwa/manifest.json +# apple_touch_icon: /pwa/apple-touch-icon.png +# favicon_32_32: /pwa/32.png +# favicon_16_16: /pwa/16.png +# mask_icon: /pwa/safari-pinned-tab.svg + +# Open graph meta tags +# https://developers.facebook.com/docs/sharing/webmasters/ +Open_Graph_meta: true + +# Add the vendor prefixes to ensure compatibility +css_prefix: true + +# Inject +# Insert the code to head (before '' tag) and the bottom (before '' tag) +# 插入代码到头部 之前 和 底部 之前 +inject: + head: + # - + bottom: + # - + +# CDN +# Don't modify the following settings unless you know how they work +# 非必要請不要修改 +CDN: + # The CDN provider of internal scripts (主題內部 js 的 cdn 配置) + # option: local/jsdelivr/unpkg/cdnjs/custom + # Dev version can only choose. ( dev版的主題只能設置為 local ) + internal_provider: local + + # The CDN provider of third party scripts (第三方 js 的 cdn 配置) + # option: local/jsdelivr/unpkg/cdnjs/custom + # when set it to local, you need to install hexo-butterfly-extjs + third_party_provider: jsdelivr + + # Add version number to CDN, true or false + version: false + + # Custom format + # For example: https://cdn.staticfile.org/${cdnjs_name}/${version}/${min_cdnjs_file} + custom_format: + + option: + # main_css: + # main: + # utils: + # translate: + # local_search: + # algolia_js: + # algolia_search_v4: + # instantsearch_v4: + # pjax: + # gitalk: + # gitalk_css: + # blueimp_md5: + # valine: + # disqusjs: + # disqusjs_css: + # twikoo: + # waline_js: + # waline_css: + # sharejs: + # sharejs_css: + # mathjax: + # katex: + # katex_copytex: + # mermaid: + # canvas_ribbon: + # canvas_fluttering_ribbon: + # canvas_nest: + # lazyload: + # instantpage: + # typed: + # pangu: + # fancybox_css_v4: + # fancybox_v4: + # medium_zoom: + # snackbar_css: + # snackbar: + # activate_power_mode: + # fireworks: + # click_heart: + # ClickShowText: + # fontawesomeV6: + # flickr_justified_gallery_js: + # flickr_justified_gallery_css: + # aplayer_css: + # aplayer_js: + # meting_js: + # prismjs_js: + # prismjs_lineNumber_js: + # prismjs_autoloader: \ No newline at end of file diff --git a/_config.landscape.yml b/_config.landscape.yml new file mode 100644 index 0000000..e69de29 diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..e35a7f1 --- /dev/null +++ b/_config.yml @@ -0,0 +1,107 @@ +# Hexo Configuration +## Docs: https://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: YunPeng's技术博客 +subtitle: '随心而动' +description: '' +keywords: Java,感悟,生活 +author: yunpeng +language: zh-CN +timezone: 'Asia/Shanghai' + +# URL +## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project' +url: https://pengspace.top +permalink: :year/:month/:day/:title/ +permalink_defaults: +pretty_urls: + trailing_index: true # Set to false to remove trailing 'index.html' from permalinks + trailing_html: true # Set to false to remove trailing '.html' from permalinks + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +archive_dir: archives +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: + enable: true # Open external links in new tab + field: site # Apply to the whole site + exclude: '' +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: false +future: true +highlight: + enable: true + line_number: true + auto_detect: false + tab_replace: '' + wrap: true + hljs: false +prismjs: + enable: false + preprocess: true + line_number: true + tab_replace: '' + +# Home page setting +# path: Root path for your blogs index page. (default = '') +# per_page: Posts displayed per page. (0 = disable pagination) +# order_by: Posts order. (Order by date descending by default) +index_generator: + path: '' + per_page: 10 + order_by: -date + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Metadata elements +## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta +meta_generator: true + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss +## updated_option supports 'mtime', 'date', 'empty' +updated_option: 'mtime' + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 10 +pagination_dir: page + +# Include / Exclude file(s) +## include:/exclude: options only apply to the 'source/' folder +include: +exclude: +ignore: + +# Extensions +## Plugins: https://hexo.io/plugins/ +## Themes: https://hexo.io/themes/ +theme: butterfly + +# Deployment +## Docs: https://hexo.io/docs/one-command-deployment +deploy: + type: git + repository: git@github.com:AnswerCoder/AnswerCoder.github.io.git + branch: main diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..6658d69 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4809 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "hexo-site", + "version": "0.0.0", + "dependencies": { + "hexo": "^6.2.0", + "hexo-butterfly-tag-plugins-plus": "^1.0.17", + "hexo-deployer-git": "^3.0.0", + "hexo-generator-archive": "^1.0.0", + "hexo-generator-category": "^1.0.0", + "hexo-generator-index": "^2.0.0", + "hexo-generator-tag": "^1.0.0", + "hexo-renderer-ejs": "^2.0.0", + "hexo-renderer-marked": "^5.0.0", + "hexo-renderer-pug": "^3.0.0", + "hexo-renderer-stylus": "^2.1.0", + "hexo-server": "^3.0.0", + "hexo-theme-landscape": "^0.0.3", + "hexo-wordcount": "^6.0.1" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.11", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmmirror.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmmirror.com/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmmirror.com/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dependencies": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/dompurify": { + "version": "2.3.10", + "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-2.3.10.tgz", + "integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==" + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmmirror.com/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-equals": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/fast-equals/-/fast-equals-3.0.3.tgz", + "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexo": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/hexo/-/hexo-6.2.0.tgz", + "integrity": "sha512-HOpt3vUOz/T0rWTDb/CtWuBJwYARPwbpvGwsaz0RPu/l5I6AmKE+UA0lJZf14iPS3JIt/HiOcTZ3Qz22A+PE8w==", + "dependencies": { + "abbrev": "^1.1.1", + "archy": "^1.0.0", + "bluebird": "^3.7.2", + "hexo-cli": "^4.3.0", + "hexo-front-matter": "^3.0.0", + "hexo-fs": "^3.1.0", + "hexo-i18n": "^1.0.0", + "hexo-log": "^3.0.0", + "hexo-util": "^2.6.1", + "js-yaml": "^4.1.0", + "js-yaml-js-types": "^1.0.0", + "micromatch": "^4.0.4", + "moize": "^6.1.0", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "nunjucks": "^3.2.3", + "picocolors": "^1.0.0", + "pretty-hrtime": "^1.0.3", + "resolve": "^1.22.0", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "tildify": "^2.0.0", + "titlecase": "^1.1.3", + "warehouse": "^4.0.1" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/hexo-butterfly-tag-plugins-plus": { + "version": "1.0.17", + "resolved": "https://registry.npmmirror.com/hexo-butterfly-tag-plugins-plus/-/hexo-butterfly-tag-plugins-plus-1.0.17.tgz", + "integrity": "sha512-GpQS8YiEFv989kclBedKaRBhzA8yx+Boq/v04Nn04KCibnhv5EJj5E/OV3QXz1jw8mCwGlOyiL7xVSqA6KyRQQ==" + }, + "node_modules/hexo-cli": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/hexo-cli/-/hexo-cli-4.3.0.tgz", + "integrity": "sha512-lr46h1tK1RNQJAQZbzKYAWGsmqF5DLrW6xKEakqv/o9JqgdeempBjIm7HqjcZEUBpWij4EO65X6YJiDmT9LR7g==", + "dependencies": { + "abbrev": "^1.1.1", + "bluebird": "^3.5.5", + "chalk": "^4.0.0", + "command-exists": "^1.2.8", + "hexo-fs": "^3.0.1", + "hexo-log": "^2.0.0", + "hexo-util": "^2.0.0", + "minimist": "^1.2.5", + "resolve": "^1.11.0", + "tildify": "^2.0.0" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-cli/node_modules/hexo-log": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hexo-log/-/hexo-log-2.0.0.tgz", + "integrity": "sha512-U7zdDae74pXcyhQEyNmpJdq3UI6zWKxQ7/zLoMr/d3CBRdIfB5yO8DWqKUnewfibYv0gODyTWUIhxQDWuwloow==", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-deployer-git": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-deployer-git/-/hexo-deployer-git-3.0.0.tgz", + "integrity": "sha512-U2Xewjab+rvUDNTcuYYnOxitkDXL3f5VMUH32jKDHs3OC4YFVGRoEaTTDVHskqr3KRi78Wohjc6BSRHOoG3oxA==", + "dependencies": { + "bluebird": "^3.5.0", + "chalk": "^4.0.0", + "hexo-fs": "^3.0.1", + "hexo-util": "^2.1.0", + "moment": "^2.18.0", + "nunjucks": "^3.2.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-front-matter": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-front-matter/-/hexo-front-matter-3.0.0.tgz", + "integrity": "sha512-hSQTPUmB/BCe1BFYmXRkPyLk8rqbBqHCQq+rjwwOJuEfOADrFaVK2VPZb90tJzPyXE1xSxpgCxE/AZq0CyTVwg==", + "dependencies": { + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/hexo-fs": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hexo-fs/-/hexo-fs-3.1.0.tgz", + "integrity": "sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==", + "dependencies": { + "bluebird": "^3.5.1", + "chokidar": "^3.0.0", + "graceful-fs": "^4.1.11", + "hexo-util": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-generator-archive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-archive/-/hexo-generator-archive-1.0.0.tgz", + "integrity": "sha512-24TeanDGpMBUIq37DHpSESQbeN6ssZ06edsGSI76tN4Yit50TgsgzP5g5DSu0yJk0jUtHJntysWE8NYAlFXibA==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-generator-category": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-category/-/hexo-generator-category-1.0.0.tgz", + "integrity": "sha512-kmtwT1SHYL2ismbGnYQXNtqLFSeTdtHNbJIqno3LKROpCK8ybST5QVXF1bZI9LkFcXV/H8ilt8gfg4/dNNcQQQ==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-generator-index": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-index/-/hexo-generator-index-2.0.0.tgz", + "integrity": "sha512-q/29Vj9BZs0dwBcF+s9IT8ymS4aYZsDwBEYDnh96C8tsX+KPY5v6TzCdttz58BchifaJpP/l9mi6u9rZuYqA0g==", + "dependencies": { + "hexo-pagination": "1.0.0", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-generator-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-tag/-/hexo-generator-tag-1.0.0.tgz", + "integrity": "sha512-JDoB2T1EncRlyGSjuAhkGxRfKkN8tq0i8tFlk9I4q2L6iYxPaUnFenhji0oxufTADC16/IchuPjmMk//dt8Msg==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-i18n": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-i18n/-/hexo-i18n-1.0.0.tgz", + "integrity": "sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==", + "dependencies": { + "sprintf-js": "^1.0.3" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-log": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hexo-log/-/hexo-log-3.1.0.tgz", + "integrity": "sha512-19h2g1xItVx0voyoAU91+bvrRDCLfIvw12GyCug52cz0MeA31o/j3pO0DKcUXYTG7VrYGtP1xDnmFZWiDL5lnw==", + "dependencies": { + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo-pagination": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-pagination/-/hexo-pagination-1.0.0.tgz", + "integrity": "sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==", + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-renderer-ejs": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz", + "integrity": "sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==", + "dependencies": { + "ejs": "^3.1.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/hexo-renderer-marked": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-marked/-/hexo-renderer-marked-5.0.0.tgz", + "integrity": "sha512-lifWMCvefTq3IlH+urQDPFX4gXquFAqDwOQBdqpwcPyhaiVHu0ZweeZ24IeZtCLRYP+zEgsksCPYrGl9hDDJHg==", + "dependencies": { + "dompurify": "^2.3.0", + "hexo-util": "^2.5.0", + "jsdom": "^19.0.0", + "marked": "^4.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/hexo-renderer-pug": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-pug/-/hexo-renderer-pug-3.0.0.tgz", + "integrity": "sha512-PmbLx6VkNv+mPLOe97OC4F8iTzTuj665dSYN7bZKArd4M/q7gb2tNs29VGuAOC50i9tvWY2f+tPQimf0GZ9Hyw==", + "dependencies": { + "pug": "^3.0.2" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo-renderer-stylus": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-stylus/-/hexo-renderer-stylus-2.1.0.tgz", + "integrity": "sha512-Nef4YCr7JX8jaRaByhzXMSsWnDed+RgJj6aU/ARnYu3Bn5xz/qRz52VJG7KqD0Xuysxa9TIBdVUgNzBrSFn3DQ==", + "dependencies": { + "nib": "^1.2.0", + "stylus": "^0.57.0" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/hexo-server": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-server/-/hexo-server-3.0.0.tgz", + "integrity": "sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==", + "dependencies": { + "bluebird": "^3.5.5", + "compression": "^1.7.4", + "connect": "^3.7.0", + "mime": "^3.0.0", + "morgan": "^1.9.1", + "open": "^8.0.9", + "picocolors": "^1.0.0", + "serve-static": "^1.14.1" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/hexo-theme-landscape": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/hexo-theme-landscape/-/hexo-theme-landscape-0.0.3.tgz", + "integrity": "sha512-b0Di+TUVs4ESrNX4ULEh9uQmADpO6kr10rIJ2OGZM8suNQNFKdxn+vJUjnLfKkCPJAfVmS7/S83KCNYe4tpoNw==" + }, + "node_modules/hexo-util": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/hexo-util/-/hexo-util-2.7.0.tgz", + "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==", + "dependencies": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^11.0.1", + "htmlparser2": "^7.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo-wordcount": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/hexo-wordcount/-/hexo-wordcount-6.0.1.tgz", + "integrity": "sha512-tbo2P9xRWEKQmRf7+XuPjx9It1MnaE26nA+EEb2DN39gK1x+26W7Nm4Iyp4AugQjBWYYDx7OLn4gp1WFxQpQew==" + }, + "node_modules/highlight.js": { + "version": "11.6.0", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.6.0.tgz", + "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmmirror.com/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml-js-types": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/js-yaml-js-types/-/js-yaml-js-types-1.0.0.tgz", + "integrity": "sha512-UNjPwuoaj4mcHkJCJSF6l4MgkzoFjG+JJkBXMYNvjgO3yE9gTeRt+E6PN022vduz/daZZ7HmlEiSEE36NrGE4w==", + "dependencies": { + "esprima": "^4.0.1" + } + }, + "node_modules/jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/marked": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/marked/-/marked-4.0.18.tgz", + "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/micro-memoize": { + "version": "4.0.11", + "resolved": "https://registry.npmmirror.com/micro-memoize/-/micro-memoize-4.0.11.tgz", + "integrity": "sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==" + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/moize": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/moize/-/moize-6.1.1.tgz", + "integrity": "sha512-6bryLehIBVByDdAkXhoaPP1fknkoq1hNPmVCDYIb/w5zwfidT02zLSto1uGbmnv1GKu02ysgAEaJ5Ic7QQaGQA==", + "dependencies": { + "fast-equals": "^3.0.1", + "micro-memoize": "^4.0.9" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nib": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/nib/-/nib-1.2.0.tgz", + "integrity": "sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==", + "engines": { + "node": "*" + }, + "peerDependencies": { + "stylus": "*" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/prismjs": { + "version": "1.28.0", + "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pug": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "dependencies": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylus": { + "version": "0.57.0", + "resolved": "https://registry.npmmirror.com/stylus/-/stylus-0.57.0.tgz", + "integrity": "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==", + "dependencies": { + "css": "^3.0.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/stylus/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" + }, + "node_modules/titlecase": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/titlecase/-/titlecase-1.1.3.tgz", + "integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==", + "bin": { + "to-title-case": "bin.js" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/warehouse": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/warehouse/-/warehouse-4.0.2.tgz", + "integrity": "sha512-GixS7SolBGu81rnxYM6bScxdElLM97Jx/kr0a6B6PGBWFqvHeuWFj7QbgEX1YWZSxiJt/aR6dBVQKC/PvvihdQ==", + "dependencies": { + "bluebird": "^3.2.2", + "cuid": "^2.1.4", + "graceful-fs": "^4.1.3", + "hexo-log": "^3.0.0", + "is-plain-object": "^5.0.0", + "jsonparse": "^1.3.1", + "rfdc": "^1.1.4", + "through2": "^4.0.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + } + }, + "dependencies": { + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" + }, + "@babel/parser": { + "version": "7.18.11", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==" + }, + "@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "requires": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + }, + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "assert-never": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/assert-never/-/assert-never-1.2.1.tgz", + "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmmirror.com/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "requires": { + "@babel/types": "^7.9.6" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "requires": { + "is-regex": "^1.0.3" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmmirror.com/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmmirror.com/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "requires": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } + } + }, + "cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + } + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "dompurify": { + "version": "2.3.10", + "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-2.3.10.tgz", + "integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==" + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmmirror.com/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "fast-equals": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/fast-equals/-/fast-equals-3.0.3.tgz", + "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "hexo": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/hexo/-/hexo-6.2.0.tgz", + "integrity": "sha512-HOpt3vUOz/T0rWTDb/CtWuBJwYARPwbpvGwsaz0RPu/l5I6AmKE+UA0lJZf14iPS3JIt/HiOcTZ3Qz22A+PE8w==", + "requires": { + "abbrev": "^1.1.1", + "archy": "^1.0.0", + "bluebird": "^3.7.2", + "hexo-cli": "^4.3.0", + "hexo-front-matter": "^3.0.0", + "hexo-fs": "^3.1.0", + "hexo-i18n": "^1.0.0", + "hexo-log": "^3.0.0", + "hexo-util": "^2.6.1", + "js-yaml": "^4.1.0", + "js-yaml-js-types": "^1.0.0", + "micromatch": "^4.0.4", + "moize": "^6.1.0", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "nunjucks": "^3.2.3", + "picocolors": "^1.0.0", + "pretty-hrtime": "^1.0.3", + "resolve": "^1.22.0", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "tildify": "^2.0.0", + "titlecase": "^1.1.3", + "warehouse": "^4.0.1" + } + }, + "hexo-butterfly-tag-plugins-plus": { + "version": "1.0.17", + "resolved": "https://registry.npmmirror.com/hexo-butterfly-tag-plugins-plus/-/hexo-butterfly-tag-plugins-plus-1.0.17.tgz", + "integrity": "sha512-GpQS8YiEFv989kclBedKaRBhzA8yx+Boq/v04Nn04KCibnhv5EJj5E/OV3QXz1jw8mCwGlOyiL7xVSqA6KyRQQ==" + }, + "hexo-cli": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/hexo-cli/-/hexo-cli-4.3.0.tgz", + "integrity": "sha512-lr46h1tK1RNQJAQZbzKYAWGsmqF5DLrW6xKEakqv/o9JqgdeempBjIm7HqjcZEUBpWij4EO65X6YJiDmT9LR7g==", + "requires": { + "abbrev": "^1.1.1", + "bluebird": "^3.5.5", + "chalk": "^4.0.0", + "command-exists": "^1.2.8", + "hexo-fs": "^3.0.1", + "hexo-log": "^2.0.0", + "hexo-util": "^2.0.0", + "minimist": "^1.2.5", + "resolve": "^1.11.0", + "tildify": "^2.0.0" + }, + "dependencies": { + "hexo-log": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hexo-log/-/hexo-log-2.0.0.tgz", + "integrity": "sha512-U7zdDae74pXcyhQEyNmpJdq3UI6zWKxQ7/zLoMr/d3CBRdIfB5yO8DWqKUnewfibYv0gODyTWUIhxQDWuwloow==", + "requires": { + "chalk": "^4.0.0" + } + } + } + }, + "hexo-deployer-git": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-deployer-git/-/hexo-deployer-git-3.0.0.tgz", + "integrity": "sha512-U2Xewjab+rvUDNTcuYYnOxitkDXL3f5VMUH32jKDHs3OC4YFVGRoEaTTDVHskqr3KRi78Wohjc6BSRHOoG3oxA==", + "requires": { + "bluebird": "^3.5.0", + "chalk": "^4.0.0", + "hexo-fs": "^3.0.1", + "hexo-util": "^2.1.0", + "moment": "^2.18.0", + "nunjucks": "^3.2.1" + } + }, + "hexo-front-matter": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-front-matter/-/hexo-front-matter-3.0.0.tgz", + "integrity": "sha512-hSQTPUmB/BCe1BFYmXRkPyLk8rqbBqHCQq+rjwwOJuEfOADrFaVK2VPZb90tJzPyXE1xSxpgCxE/AZq0CyTVwg==", + "requires": { + "js-yaml": "^4.1.0" + } + }, + "hexo-fs": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hexo-fs/-/hexo-fs-3.1.0.tgz", + "integrity": "sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==", + "requires": { + "bluebird": "^3.5.1", + "chokidar": "^3.0.0", + "graceful-fs": "^4.1.11", + "hexo-util": "^2.0.0" + } + }, + "hexo-generator-archive": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-archive/-/hexo-generator-archive-1.0.0.tgz", + "integrity": "sha512-24TeanDGpMBUIq37DHpSESQbeN6ssZ06edsGSI76tN4Yit50TgsgzP5g5DSu0yJk0jUtHJntysWE8NYAlFXibA==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-generator-category": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-category/-/hexo-generator-category-1.0.0.tgz", + "integrity": "sha512-kmtwT1SHYL2ismbGnYQXNtqLFSeTdtHNbJIqno3LKROpCK8ybST5QVXF1bZI9LkFcXV/H8ilt8gfg4/dNNcQQQ==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-generator-index": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-index/-/hexo-generator-index-2.0.0.tgz", + "integrity": "sha512-q/29Vj9BZs0dwBcF+s9IT8ymS4aYZsDwBEYDnh96C8tsX+KPY5v6TzCdttz58BchifaJpP/l9mi6u9rZuYqA0g==", + "requires": { + "hexo-pagination": "1.0.0", + "timsort": "^0.3.0" + } + }, + "hexo-generator-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-generator-tag/-/hexo-generator-tag-1.0.0.tgz", + "integrity": "sha512-JDoB2T1EncRlyGSjuAhkGxRfKkN8tq0i8tFlk9I4q2L6iYxPaUnFenhji0oxufTADC16/IchuPjmMk//dt8Msg==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-i18n": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-i18n/-/hexo-i18n-1.0.0.tgz", + "integrity": "sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==", + "requires": { + "sprintf-js": "^1.0.3" + } + }, + "hexo-log": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hexo-log/-/hexo-log-3.1.0.tgz", + "integrity": "sha512-19h2g1xItVx0voyoAU91+bvrRDCLfIvw12GyCug52cz0MeA31o/j3pO0DKcUXYTG7VrYGtP1xDnmFZWiDL5lnw==", + "requires": { + "picocolors": "^1.0.0" + } + }, + "hexo-pagination": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/hexo-pagination/-/hexo-pagination-1.0.0.tgz", + "integrity": "sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==" + }, + "hexo-renderer-ejs": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz", + "integrity": "sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==", + "requires": { + "ejs": "^3.1.6" + } + }, + "hexo-renderer-marked": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-marked/-/hexo-renderer-marked-5.0.0.tgz", + "integrity": "sha512-lifWMCvefTq3IlH+urQDPFX4gXquFAqDwOQBdqpwcPyhaiVHu0ZweeZ24IeZtCLRYP+zEgsksCPYrGl9hDDJHg==", + "requires": { + "dompurify": "^2.3.0", + "hexo-util": "^2.5.0", + "jsdom": "^19.0.0", + "marked": "^4.0.1" + } + }, + "hexo-renderer-pug": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-pug/-/hexo-renderer-pug-3.0.0.tgz", + "integrity": "sha512-PmbLx6VkNv+mPLOe97OC4F8iTzTuj665dSYN7bZKArd4M/q7gb2tNs29VGuAOC50i9tvWY2f+tPQimf0GZ9Hyw==", + "requires": { + "pug": "^3.0.2" + } + }, + "hexo-renderer-stylus": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hexo-renderer-stylus/-/hexo-renderer-stylus-2.1.0.tgz", + "integrity": "sha512-Nef4YCr7JX8jaRaByhzXMSsWnDed+RgJj6aU/ARnYu3Bn5xz/qRz52VJG7KqD0Xuysxa9TIBdVUgNzBrSFn3DQ==", + "requires": { + "nib": "^1.2.0", + "stylus": "^0.57.0" + } + }, + "hexo-server": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/hexo-server/-/hexo-server-3.0.0.tgz", + "integrity": "sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==", + "requires": { + "bluebird": "^3.5.5", + "compression": "^1.7.4", + "connect": "^3.7.0", + "mime": "^3.0.0", + "morgan": "^1.9.1", + "open": "^8.0.9", + "picocolors": "^1.0.0", + "serve-static": "^1.14.1" + } + }, + "hexo-theme-landscape": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/hexo-theme-landscape/-/hexo-theme-landscape-0.0.3.tgz", + "integrity": "sha512-b0Di+TUVs4ESrNX4ULEh9uQmADpO6kr10rIJ2OGZM8suNQNFKdxn+vJUjnLfKkCPJAfVmS7/S83KCNYe4tpoNw==" + }, + "hexo-util": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/hexo-util/-/hexo-util-2.7.0.tgz", + "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==", + "requires": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^11.0.1", + "htmlparser2": "^7.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0" + } + }, + "hexo-wordcount": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/hexo-wordcount/-/hexo-wordcount-6.0.1.tgz", + "integrity": "sha512-tbo2P9xRWEKQmRf7+XuPjx9It1MnaE26nA+EEb2DN39gK1x+26W7Nm4Iyp4AugQjBWYYDx7OLn4gp1WFxQpQew==" + }, + "highlight.js": { + "version": "11.6.0", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.6.0.tgz", + "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==" + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + } + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "requires": { + "has": "^1.0.3" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "requires": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmmirror.com/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "js-yaml-js-types": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/js-yaml-js-types/-/js-yaml-js-types-1.0.0.tgz", + "integrity": "sha512-UNjPwuoaj4mcHkJCJSF6l4MgkzoFjG+JJkBXMYNvjgO3yE9gTeRt+E6PN022vduz/daZZ7HmlEiSEE36NrGE4w==", + "requires": { + "esprima": "^4.0.1" + } + }, + "jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "requires": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + }, + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "requires": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "marked": { + "version": "4.0.18", + "resolved": "https://registry.npmmirror.com/marked/-/marked-4.0.18.tgz", + "integrity": "sha512-wbLDJ7Zh0sqA0Vdg6aqlbT+yPxqLblpAZh1mK2+AO2twQkPywvvqQNfEPVwSSRjZ7dZcdeVBIAgiO7MMp3Dszw==" + }, + "micro-memoize": { + "version": "4.0.11", + "resolved": "https://registry.npmmirror.com/micro-memoize/-/micro-memoize-4.0.11.tgz", + "integrity": "sha512-CjxsaYe4j43df32DtzzNCwanPqZjZDwuQAZilsCYpa2ZVtSPDjHXbTlR4gsEZRyO9/twHs0b7HLjvy/sowl7sA==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "moize": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/moize/-/moize-6.1.1.tgz", + "integrity": "sha512-6bryLehIBVByDdAkXhoaPP1fknkoq1hNPmVCDYIb/w5zwfidT02zLSto1uGbmnv1GKu02ysgAEaJ5Ic7QQaGQA==", + "requires": { + "fast-equals": "^3.0.1", + "micro-memoize": "^4.0.9" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmmirror.com/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "nib": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/nib/-/nib-1.2.0.tgz", + "integrity": "sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==", + "requires": {} + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "nunjucks": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/nunjucks/-/nunjucks-3.2.3.tgz", + "integrity": "sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==", + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + } + }, + "nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmmirror.com/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + }, + "prismjs": { + "version": "1.28.0", + "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmmirror.com/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pug": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/pug/-/pug-3.0.2.tgz", + "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "requires": { + "pug-code-gen": "^3.0.2", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "requires": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "pug-code-gen": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/pug-code-gen/-/pug-code-gen-3.0.2.tgz", + "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "requires": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.0.0", + "pug-runtime": "^3.0.0", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "pug-error": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pug-error/-/pug-error-2.0.0.tgz", + "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + }, + "pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "requires": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "requires": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "requires": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "requires": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "requires": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" + }, + "pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "requires": { + "pug-error": "^2.0.0" + } + }, + "pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "stylus": { + "version": "0.57.0", + "resolved": "https://registry.npmmirror.com/stylus/-/stylus-0.57.0.tgz", + "integrity": "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==", + "requires": { + "css": "^3.0.0", + "debug": "^4.3.2", + "glob": "^7.1.6", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "requires": { + "readable-stream": "3" + } + }, + "tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" + }, + "titlecase": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/titlecase/-/titlecase-1.1.3.tgz", + "integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "warehouse": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/warehouse/-/warehouse-4.0.2.tgz", + "integrity": "sha512-GixS7SolBGu81rnxYM6bScxdElLM97Jx/kr0a6B6PGBWFqvHeuWFj7QbgEX1YWZSxiJt/aR6dBVQKC/PvvihdQ==", + "requires": { + "bluebird": "^3.2.2", + "cuid": "^2.1.4", + "graceful-fs": "^4.1.3", + "hexo-log": "^3.0.0", + "is-plain-object": "^5.0.0", + "jsonparse": "^1.3.1", + "rfdc": "^1.1.4", + "through2": "^4.0.2" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + }, + "whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "with": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "requires": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.8.1", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "requires": {} + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..75f99e9 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "hexo generate", + "clean": "hexo clean", + "deploy": "hexo deploy", + "server": "hexo server" + }, + "hexo": { + "version": "6.2.0" + }, + "dependencies": { + "hexo": "^6.2.0", + "hexo-butterfly-tag-plugins-plus": "^1.0.17", + "hexo-deployer-git": "^3.0.0", + "hexo-generator-archive": "^1.0.0", + "hexo-generator-category": "^1.0.0", + "hexo-generator-index": "^2.0.0", + "hexo-generator-tag": "^1.0.0", + "hexo-renderer-ejs": "^2.0.0", + "hexo-renderer-marked": "^5.0.0", + "hexo-renderer-pug": "^3.0.0", + "hexo-renderer-stylus": "^2.1.0", + "hexo-server": "^3.0.0", + "hexo-theme-landscape": "^0.0.3", + "hexo-wordcount": "^6.0.1" + } +} diff --git a/scaffolds/draft.md b/scaffolds/draft.md new file mode 100644 index 0000000..498e95b --- /dev/null +++ b/scaffolds/draft.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +tags: +--- diff --git a/scaffolds/page.md b/scaffolds/page.md new file mode 100644 index 0000000..f01ba3c --- /dev/null +++ b/scaffolds/page.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +date: {{ date }} +--- diff --git a/scaffolds/post.md b/scaffolds/post.md new file mode 100644 index 0000000..1f9b9a4 --- /dev/null +++ b/scaffolds/post.md @@ -0,0 +1,5 @@ +--- +title: {{ title }} +date: {{ date }} +tags: +--- diff --git a/source/CNAME b/source/CNAME new file mode 100644 index 0000000..8892027 --- /dev/null +++ b/source/CNAME @@ -0,0 +1 @@ +pengspace.top \ No newline at end of file diff --git a/source/_posts/Git版本控制工具的使用.md b/source/_posts/Git版本控制工具的使用.md new file mode 100644 index 0000000..c750ff6 --- /dev/null +++ b/source/_posts/Git版本控制工具的使用.md @@ -0,0 +1,302 @@ +--- +title: Git版本控制工具的使用 +date: 2020-12-12 14:03:13 +tags: +- Git +- 版本控制 +categories: +- 工具使用 +--- + +## 版本控制概述 + +版本控制是实现开发团队**并行开发、提高开发效率**的基础。其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。 + + + +版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。 + +## 常用版本控制工具 + +### Visual Source Safe(VSS) + +VSS是美国微软公司的产品,目前常用的版本为6.0版。VSS是配置管理的一种很好的入门级的工具。 + +易学易用是VSS的强项,VSS采用标准的windows操作界面,只要对微软的产品熟悉,就能很快上手。 + +VSS的配置管理的功能比较基本,提供文件的版本跟踪功能,对于build和基线的管理,VSS的打标签的功能可以提供支持。VSS提供share(共享)、branch(分支)和合并(merge)的功能,对于团队的开发进行支持。VSS不提供对流程的管理功能,如对变更的流程进行控制。 + +VSS不能提供对异地团队开发的支持。此外VSS只能在windows平台上运行,不能运行在其他操作系统上。 + +VSS的安全性不高,对于VSS的用户,可以在文件夹上设置不可读,可读,可读/写,可完全控制四级权限。但由于VSS的文件夹是要完全共享给用户后,用户才能进入,所以用户对VSS的文件夹都可以删除。这一点也是VSS的一个比较大的缺点。 + +**微软已不再对VSS提供技术支持。** + +### Concurrent Version System(CVS) + +CVS是开发源代码的配置管理工具,其源代码和安装文件都可以免费下载。 + +CVS是源于unix的版本控制工具,CVS的服务器管理需要进行各种命令行操作。目前,CVS的客户端有winCVS的图形化界面,服务器端也有CVSNT的版本,易用性正在提高。 + +CVS的功能除具备VSS的功能外,还具有: + +它的客户机/服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出(checkout)的模式避免了通常的 因为排它检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样,CVS不提供对变更流程的自动管理功能。 + +一般来说,CVS的权限设置单一,通常只能通过CVSROOT/passwd,CVSROOT/readers,CVSROOT/writers文件同时还要设置CVS REPOS的物理目录权限来完成权限设置,无法完成复杂的权限控制;但是CVS通过CVS ROOT目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。 + +CVS是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。 + +### SVN + +SVN全名Subversion,即版本控制系统。 + +SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。Subversion 是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。 + +### Git + +Git是一个开源的**分布式**版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。 + +Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 + +Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。 + +### Git和SVN的区别 + +* Git 是分布式的,SVN 不是: + + 这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。 + +* Git 把内容按元数据方式存储,而 SVN 是按文件: + + 所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.git 等的文件夹里。 + +* Git 分支和 SVN 的分支不同: + + 分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。**Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录**。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。 + + **Git 有本地分支,SVN 无本地分支**。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。 + +* Git 没有一个全局的版本号,而 SVN 有: + + 目前为止这是跟 SVN相比,Git 缺少的最大的一个特征。 + +* Git 的内容完整性要优于 SVN: + + Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网 + 络问题时降低对版本库的破坏。 + +![](https://i.loli.net/2020/11/27/7rwU4cupNyPqlbo.png) + +## Git的使用 + +### 安装 + +可以进入官网[https://git-scm.com/](https://git-scm.com/),选择适合自己电脑的版本下载并安装。 + +![](https://i.loli.net/2020/11/27/pRV15kXo3ydm8Wa.png) + +安装时一路next即可。需要注意的点有: + +![选择Bash和GUI](https://i.loli.net/2020/11/27/M3mkjfQh1l8KICc.png) + +仅供参考。 + +安装完成后在桌面或任意文件夹单击鼠标右键,出现*Git Bash Here*/ *Git GUI Here*则说明安装成功 + +![](https://i.loli.net/2020/11/27/LYXTGHfc9DWu2gd.png) + +或者在cmd终端输入:`git --version`,出现版本说明安装成功 + +![image-20201127135807275](https://i.loli.net/2020/11/27/8vGaIdZS5rLNeCT.png) + +### Git工作区域 + +git的工作区域分为3个区域:工作区、暂存区和仓库区。3个区的功能分别为: + +1. 工作区:用来对代码进行修改(也就是我们的工作文件夹内部的文件本身,或者说是我们本地的文件夹) +2. 暂存区:暂时存放准备放入仓库区的代码 +3. 仓库区:存放各个版本的代码 + +三个区之间的联系和文件操作如下图所示 + +![](https://i.loli.net/2020/11/27/sqL4HgNiS3FDbBz.png) + +### Git初始化仓库和常用指令 + +初始化仓库的步骤如下: + +1. 在我们想要进行版本控制的文件夹中,右键打开git bash +2. 在文件夹内初始化git(创建git仓库) + `git init` (会生成一个.git的隐藏文件) + +常用指令: + +* **add 添加文件** + + 格式:`git add 文件名` + + 作用:将工作区的文件提交(此时文件**提交至暂存区**) + + > 注:如果文件名参数为`*`,表示提交当前目录下的所有文件。目录路径可以用`/`分隔开。 + +* **rm 删除文件** + + 格式:`git rm 文件名` + + 作用:删除文件(工作区/库一起删除) + + > 注:如果想要删除文件夹,则添加参数`-r`: `git rm -r 文件夹` + > + > 当我们需要删除暂存区或分支上的文件, 但本地又需要使用,只是不希望这个文件被版本控制, 可以使用下面迷命令只删除暂存区和版本库中的文件,保留工作区文件: + > + > `git rm -r --cached 文件夹名称` + +* **status 查看当前状态** + + 格式:`git status` + + 作用:查看暂存区状态(有多少条指令待执行) + +* **commit 提交** + + 格式:`git commit -m "提交描述"` + + 作用:执行暂存区的指令。提交描述表示这次提交的描述信息。 + +## Git远程服务器 + +git常见的远程服务器有: + +* [GitHub](https://github.com/) + +* [GitLab](https://gitlab.com/users/sign_in) + +* [Gitee(码云)](https://gitee.com/) + +其中,GitHub和GitLab都是国外服务商,在国内访问速度可能会受到限制。Gitee是国内的代码托管与开发协作平台,在国内的访问速度相比GitHub和GitLab要快很多。 + +> **==GitHub==** +> +> 通过git管理github托管项目代码。 +> +> > GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。 +> > +> > GitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册 +> > 用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby,on Rails、jQuery、python等。 +> +> **==GitLab==** +> +> > GitHub 和 GitLab 都是基于 web 的 Git 仓库,使用起来二者差不多,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化云存储的场所。 +> > +> > GitHub 作为开源代码库,拥有超过 900万的开发者用户,目前仍然是最火的开源项目托管平台,GitHub 同时提供公共仓库和私有仓库,但如果使用私有仓库,是需要付费的。 +> > +> > GitLab 解决了这个问题,你可以在上面创建**私人的免费仓库**。 GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比较GitHub , 它有不少特色: +> > +> > (1) 允许免费设置仓库权限; +> > +> > (2) 允许用户选择分享一个 project 的部分代码; +> > +> > (3) 允许用户设置 project 的获取权限,进一步提升安全性; +> > +> > (4) 可以设置获取到团队整体的改进进度; +> > +> > (5) 通过innersourcing 让不在权限范围内的人访问不到该资源; +> > +> > 所以,从代码的私有性上来看,GitLab是一个更好的选择。但是对于开源项目而言,GitHub 依然是代码托管的首选。 +> +> **==Gitee(码云)==** +> +> > 码云(Gitee)是 OSCHINA 推出的代码托管协作开发平台,支持 Git 和 SVN,提供免费的私有仓库托 +> > 管。2016 年推出企业版,提供企业级代码托管服务,成为开发领域领先的 SaaS 服务提供商。 +> > +> > Gitee除了访问速度更快以外,Gitee 还提供了**免费的私有仓库**供个人开发者使用。同时,Gitee 也有着国内数一数二的开源生态,这里有非常多的优秀开源项目和开发者,你可以在这里和他们无障碍地沟通交流,不管是找开源项目还是分享自己的开源项目,Gitee 都是极佳的选择。 +> > +> > 作为国内代码托管平台的佼佼者,目前已经有超过 500 万名开发者在 Gitee 上托管了 1000 余万个代码仓库,而其提供了研发管理、代码托管、文档管理服务的企业版的服务客户也超过了 10 万家。 + +下面针对Gitee说一下,Git远程服务器的使用 + +### Gitee的使用 + +#### Gitee的一些基本概念 + +1. 仓库(**Repository**) + 仓库即你的项目,你想在github上开源一个项目,那就必须要新建一个repository,如果你开源的项目 + 多,那你拥有的仓库也就很多 +2. 收藏(**star**) + 仓库主页的star按钮,意思是收藏项目的人数。 +3. 复制克隆项目(**fork**) + 在原项目的基础上新增代码和结构,也可以理解成拿别人的代码进行二次加工。Fork后,会在自己账号下,生成自己的相同仓库 +4. 发起请求(**pull request**,简称**PR**) + 这个是基于fork的,当其他人改进完代码后,想将这个项目合并到原项目,则这个时候会给你发起一个pull request。如果接受了请求,这个时候就可以拥有改进的项目了。 +5. 关注(**watch**) + 即观察,可以随时看到被关注项目的更新 +6. 事务卡片(**Issue**) + 发现代码有bug,但是目前还没成型,需要讨论时使用。当别人发现你的问题时,会提个lssue。 +7. Gitee主页 + 账号创建完后,点击导航栏gitee图标即可进入主页。左侧显示功能列表,右侧显示仓库动态。 +8. 仓库主页 + 仓库主页主要显示项目的信息,如:代码,版本,收藏,关注,fork等 + +#### 创建仓库 + +注册登录后,就可以创建仓库了,一个本地git库对应一个远程开源项目。 + +![](https://i.loli.net/2020/11/27/PRDvlxUNTSz5oeK.png) + +![](https://i.loli.net/2020/11/27/9vxr7ZfkeudGJtS.png) + +#### 本地Git操作远程仓库 + +本地配置gitee的一些配置教程可以参考[https://gitee.com/help/articles/4107](https://gitee.com/help/articles/4107)。 + +设置登录的账户信息: 用户名和邮箱地址是本地git客户端的一个变量,每次commit都会用用户名和邮箱纪录。 +一些配置的方法如下: + +```bash +# 设置用户名: +git config --global user.name '用户名' +#设置邮箱: +git config --global user.email '邮箱' +``` + +> 查看git的配置: +> +> ```bash +> git config --list +> ``` + +git管理远程仓库的常用指令: + +* `git clone 仓库地址`:将远程仓库的项目复制到本地 +* `git push`:将本地仓库提交到远程(注意先提交到缓存区,再提交到仓库,最后提交远程,也就是在给commit 之后再 push) +* `git pull`:更新本地仓库至最新改动 + +#### IDEA配置Git+Gitee + +1. IDEA配置Git客户端: + + File - Settings - Version Control - Git + + 配置Path to Git Executable,就是git的所在路径 + ![image-20201127151002861](https://i.loli.net/2020/11/27/9y3dg8eNqY7moTj.png) + +2. 下载gitee插件(GitHub等同理) + + File - Settings - Plugins + + 搜索Gitee,然后点击Install。安装完毕后重启IDEA。 + ![](https://i.loli.net/2020/11/27/DnQpXw5NEAZL4M9.png) + +3. 添加信息 + + File - Setting - Version Control - Gitee![](https://i.loli.net/2020/11/27/OCtmyaiE2xg4Qs8.png) + + 填写login和password,login填写邮箱。 + +4. 上传和下载 + + 上传:VCS - Import Into Version Control - Share Project To Gitee + + 下载:新建项目时:Get from Version Control + + ![](https://i.loli.net/2020/11/27/M91ldHjWUvSN2nk.png) \ No newline at end of file diff --git a/source/_posts/JavaWeb环境搭建-Tomcat.md b/source/_posts/JavaWeb环境搭建-Tomcat.md new file mode 100644 index 0000000..6fd952e --- /dev/null +++ b/source/_posts/JavaWeb环境搭建-Tomcat.md @@ -0,0 +1,310 @@ +--- +title: JavaWeb环境搭建(Tomcat) +date: 2020-12-12 13:47:17 +tags: +- JavaWeb +- tomcat +categories: +- JavaWeb +--- + +## HTTP 协议 + +### 简介 + +超文本传输协议(`HyperText Transfer Protocol`,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。 + + + +HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协 +调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。 + +![五层协议](https://i.loli.net/2020/11/18/hfFxIbpreuc3siy.png) + +HTTP协议是基于TCP/IP协议之上的应用层协议。 + +HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。 + +### 请求/响应的步骤 + +1. **客户端连接到Web服务器** + + 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。 + +2. **发送HTTP请求** + + 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。 + +3. **服务器接受请求并返回HTTP响应** + + Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。 + +4. **释放TCP连接** + + 在HTTP/1.0中默认使用**短连接**。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。 + + 而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:`Connection:keep-alive` + + 在使用**长连接**的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。 + + > HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。 + +5. **客户端浏览器解析HTML内容** + + 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。 + +> 例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程: +> +> 1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; +> 2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接; +> 3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器; +> 4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器; +> 5. 浏览器将该 html 文本并显示内容; + +### HTTP请求方法 + +HTTP/1.1协议中共定义了八种方法(动作)来以不同方式操作指定的资源: + +* **GET** + 向指定的资源发出「显式」请求。使用GET方法应该只用在读取数据,而不应当被用于产生「副作用」的操作中,例如在Web Application中。其中一个原因是GET可能会被网络爬虫等随意访问。 +* **HEAD** + 与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中「关于该资源的信息」(元信息或称元数据)。 +* **POST** + 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。 +* **PUT** + 向指定资源位置上传其最新内容。 +* **DELETE** + 请求服务器删除Request-URI所标识的资源。 +* **TRACE** + 回显服务器收到的请求,主要用于测试或诊断。 +* **OPTIONS** + 这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用`*`来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。 + +### C/S与B/S + +`C/S`:又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,客户端需要安装专用的客户端软件。如QQ,微信等软件 + +`B/S`:是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser)。Browser/Server是建立在广域网的基础上的。 + +**C/S和B/S结构各自的优、缺点:** + +| | 优点 | 缺点 | +| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| C/S | 1. 交互性强,客户端有着一套完整的应用程序,相对B/S有着更加强大的功能,还可以实现子程序之间的切换;
2. 安全性强,只适用于局域网,相对来说其安全比较好;
3. 处理信息能力强,C/S的通信量相对B/S是少了很多的;
4. 速度较快,更加利于处理大量数据。 | 1. 只适用于局域网;
2. 客户端要安装专用的客户端软件;
3. 每当系统升级时,每一台客户机需要重新安装;
4. 操作系统可能会有限制。 | +| B/S | 1. 客户端零维护;
2. 系统扩展容易;
3. 在电脑可上网的前提下,可以在任何操作系统上使用并且不需要安装专门的软件 。 | 1. 相对C/S来说交互能力差,不能够在子程序间自由切换;
2. 安全性较差,B/S其安全性只能靠数据库服务器上管理密码的数据库来保证;
3. 逻辑结构比C/S多一层,处理速度较慢 | + +### Web服务器的分类 + +Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有 +Tomcat、Resin、JBoss、WebSphere 和 WebLogic 等。 + +* **Tomcat 服务器** + + 目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选。 + +* **Resin 服务器** + + Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建 + +* **JBoss服务器** + JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合 + +* **WebSphere 服务器** + + WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。 + +* **WebLogic 服务器** + WebLogic 是BEA公司的产品(现在已经被Oracle收购),可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择 + +### Tomcat + +> tomcat的使用是基于java的,所以要保证我们的电脑已经有了java环境。 + +#### 安装与配置 + +1. 去官网下载对应版本的Tomcat + + 官网地址:[https://tomcat.apache.org/](https://tomcat.apache.org/) + + ![](https://i.loli.net/2020/11/19/LFWV4eRbshPjHT2.png) + +2. 解压或安装到一个没有特殊符号的目录中(最好不要包含中文路径)我这里下载的是zip包,解压即可 + + ![](https://i.loli.net/2020/11/19/ZU4FcjzMwsgvBmI.png) + +3. 配置环境变量 + + 右键点击此电脑,打开属性,找到高级系统设置->环境变量->系统变量 + + (1) 新建一个变量CATALINA_HOME,值为tomcat安装的路径,结尾不要分号 + + ![](https://i.loli.net/2020/11/19/R48ChW7Ke62lBJX.png) + + (2) 配置Path变量,找到系统变量中的Path变量,点击编辑,新建一个,值为`%CATALINA_HOME%\bin` + + ![image-20201119154624242](https://i.loli.net/2020/11/19/NLkDgfbMwEXK37z.png) + + (3) 配置ClassPath变量,找到系统变量中的ClassPath变量(没有就新建一个),值为`%CATALINA_HOME%\servlet-api.jar` + + ![](https://i.loli.net/2020/11/19/Sr8WiypNugD5bhv.png) + +4. 将tomcat9安装到windows服务中**(可做可不做)** + + 打开cmd命令行输入`service install Tomcat9` + + ![](https://i.loli.net/2020/11/19/9lVhyzNZaGBHLgi.png) + + 如果报以下错误: + + ```bash + The file Tomcat9.exe was not found... + Either the CATALINA_HOME environment variable is not defined correctly or ....省略 + ``` + + 找到环境变量Path,编辑文本,去除`%CATALINA_HOME%\bin`后面的分号,安装成功后再加上分号。 + +> **注意:** 第四步将tomcat9安装到windows服务中,可做可不做,做这步的目的就是使解压后bin文件夹下的tomcat9.exe和tomcat9w.exe也可以运行,使得绿色解压版和exe安装版安装tomcat的功能一样完整。 + +至此,配置工作完成!打开bin文件夹,双击startup.bat(或tomcat9.exe)启动tomcat服务,因为配置了环境变量也可以直接在cmd中输入startup.bat(或tomcat9.exe),它会自动打开一个控制台界面。不要关闭控制台界面,打开浏览器,输入http://localhost:8080,出现Tomcat的网页,证明安装并配置成功!最后关闭控制台,关闭控制台即关闭Tomcat服务。 + +![](https://i.loli.net/2020/11/19/gJXnYDIEoVxWpU1.png) + +#### tomcat内目录的含义 + +![](https://i.loli.net/2020/11/19/6BX4YlwgFntjVka.png) + +1. **bin**:该目录下存放的是二进制可执行文件,有两个exe文件:tomcat9.exe、tomcat9w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;有有两个bat文件:startup.bat和shutdown.bat,startup.bat用来启动Tomcat,shutdown.bat用来停止Tomcat; + +2. **conf**:这是一个**非常非常重要**的目录,这个目录下有四个最为重要的文件: + + * server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等; + + * tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了; + + * web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了,但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。 + + MIME就是用来说明文档的内容是什么类型的! + + * context.xml:对所有应用的统一配置,通常我们不会去修改它。 + +3. **lib**:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下; + +4. **logs**:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。 + +5. **temp**:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除! + +6. **webapps**:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。 + + 如:http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字 + +7. **work**:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。 + +8. LICENSE:许可证。 + +9. NOTICE:说明文件。 + +> 通过url访问服务器: +> +> url:`http://服务器的ip地址:端口号/项目名/被访问的页面` +> +> 示例:http://localhost:8080/test +> +> 注: (1)启动tomcat后,tomcat会加载部署在服务器端的所有项目 +> +> (2) 浏览器访问的页面是服务器端的页面,基本上服务器的项目和工作空间的项目要保持一致 + +#### IntelliJ IDEA配置Tomcat + +1. 点击Run---Edit Configurations... + +![image-20201119140937936](https://i.loli.net/2020/11/19/1Cn2XGP9qJDSbps.png) + +2. 点击左侧`+`号,找到Tomcat Server---Local + +![image-20201119141510118](https://i.loli.net/2020/11/19/jNtDmAagkslSCHQ.png) + +3. 在Tomcat Server -> local-> Server -> Application server项目下,点击 Configuration ,找到本地 Tomcat 服务器,再点击 OK按钮。 + + ![](https://i.loli.net/2020/11/19/lzRZYnPJ7isoBuD.png) + +至此,IntelliJ IDEA配置Tomcat完成。 + +#### 创建JavaWeb项目 + +1. 点击左上角的File-->New-->Project,选择Java Enterprise,在Application Sever中找到自己的Tomcat,同时勾中Web Application 和 Create web.xml,点击next,输入项目名称和路径,点击finish即可。 + + ![](https://i.loli.net/2020/11/19/ObvQ3RBUK5f4ptT.png) + +2. 创建好之后文件结构如下: + + ![](https://i.loli.net/2020/11/19/phctYUqvHFOK87P.png) + +3. 在WEB-INF文件夹下创建classes和lib文件夹,名字不可改 + + * classes用来存放java文件编译后的字节码文件 + * lib用来存放项目所需的jar依赖包 + +4. 配置jar包和classes包 + + (1) 在File中找到Project Structure,点击Modules,选择Paths,选中Use module compile output path,把路径改成刚刚创建的classes文件夹,点击apply + + ![](https://i.loli.net/2020/11/19/2IEsGwbJ7cfHZWo.png) + + 如果classes文件夹没有变颜色,就右键点击classes文件夹,选择Mark Diectory as —>Exclued + + ![image-20201119152102261](https://i.loli.net/2020/11/19/qVIJ6zkiA8pamwF.png) + + (2) 选择Dependencies,点右边的`+`号 选择1 JARs or directories,选择刚创建的lib文件夹,点ok,选择Jar Directory,点击ok。 + + ![image-20201119150048728](https://i.loli.net/2020/11/19/oRJ6tG2417QYXyB.png) + +5. 部署项目:将本地项目安装到服务器中 + + (1) idea主界面顶部菜单栏点击Run ,选择Edit Configurations,可以配置一些信息 + + ![image-20201119151516787](https://i.loli.net/2020/11/19/YBGwXlTr8RtyEgC.png) + + (2) 运行 + + ![image-20201119151559538](https://i.loli.net/2020/11/19/yYjEz69HNfcUKVs.png) + + + + ![](https://i.loli.net/2020/11/19/lWfI9AZjS8RKsuB.png) + +运行成功 + +#### tomcat常用操作 + +##### 修改端口号 + +修改配置文件:/conf/server.xml 的port + +```xml + +``` + +如果将端口号改成80,则访问项目时的请求路径就可以省略端口号。 + +##### 管理项目 + +给tomcat增加管理员信息:配置conf/tomcat-users.xml + +在tomcat-users.xml文件中添加下面代码 + +```xml + + +``` + +![](https://i.loli.net/2020/11/19/T8Jt6WEqbKahwuR.png) + +点击Manager App会弹出下面这个框,我们输入tomcat-users.xml文件中添加的管理员账户密码就可以看到当前tomcat服务器中的所有web应用。 + +![](https://i.loli.net/2020/11/19/O9NwRqvClfs4kHu.png) + + + +![](https://i.loli.net/2020/11/19/amVHeL2jqshwYtA.png) + +注意:tomcat启动的时候会加载webapps下的所有项目 \ No newline at end of file diff --git a/source/_posts/Java多线程.md b/source/_posts/Java多线程.md new file mode 100644 index 0000000..6f64af5 --- /dev/null +++ b/source/_posts/Java多线程.md @@ -0,0 +1,880 @@ +--- +title: Java多线程 +date: 2020-10-24 16:23:00 +tags: +- Java +- 多线程 +categories: +- Java基础 +--- + +## 多线程概述 + +==多线程:栈空间独立,堆内存共享== + +多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。线程是比进程更小的执行单位,线程是在进程的基础上进行的进一步划分。所谓多线程是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,一个进程可能包含了多个同时执行的线程。 + + + +### 进程与线程 + +* **进程**: + * 正在运行的应用程序:是指一个内存中运行的应用程序,**每个进程都有一个独立的内存空间**,即每个进程都有着自己的堆、栈等且是互不共享的。 +* **线程**: + * 进程中的一个**执行路径**(一段程序从执行到结束的整个过程),共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程 + * 线程实际上是在进程的基础上进一步划分的,一个进程执行后,里面的若干执行路径又可以划分为若干个线程 + +### 线程调度 + +1. **分时调度** + +* 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。 + +2. **抢占式调度** + +* 优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),**Java使用的为抢占式调度**。 +* CPU使用抢占式调度模式在多个线程间进行着高速的切换。对于CPU的一个核心而言,某个时刻,只能执行一个线程,而 CPU的在多个线程间切换速度相对我们的感觉很快,看上去就是在同一时刻运行。 其实,多线程程序并不能提高程序的运行速度,但能够提高程序运行效率,让CPU的使用率更高。 + +### 同步与异步&并发与并行 + +> **同步**:排队执行,效率低但安全 +> +> **异步**:同时执行,效率高但数据不安全 + +> **并发**:指两个或多个事件在同一个时间段内发生。 +> +> **并行**:指两个或多个事件在同一时刻发生(同时发生)。 + +## 多线程的实现方式 + +### 继承Thread类 + +步骤: + +1. 创建一个自定义类并继承Thread类; + +2. 重写run()方法,创建新的执行任务(通过thread对象的start()方法启动任务,一般不直接调用run()方法) + +3. 创建自定义类对象实例,调用start(),让线程执行 + +代码如下: + +```java +//MyThread.java +public class MyThread extends Thread{ + @Override + public void run() { //run()方法就是线程要执行的任务的方法 + for (int i = 0; i < 10; i++) { + System.out.println("MyThread" + i); + } + } +} +//ThreadTest.java +public class ThreadTest { + public static void main(String[] args) { + MyThread mt = new MyThread(); + mt.start(); //启动线程任务 + for (int i = 0; i < 5; i++) { + System.out.println("MainThread" + i); + } + } +} +``` + +运行结果: + +可以看到顺序并不统一,两个线程在交替执行而且各自所占的时间不完全相同,这是线程在抢时间片,谁先抢到谁就执行。 + +![image-20201020195837780](https://i.loli.net/2020/10/20/t4hNj7XJWOHBuvr.png) + +> **时序图:** +> +> ![image-20201020202118525](https://i.loli.net/2020/10/20/ZeTkrMvRzSK8t3F.png) +> +> 运行过程中子线程任务中调用的方法都在子线程中运行 + +> 在上述代码中。如果Thread对象只需要调用1次,也可以通过使用匿名内部类的方式进行简化: +> +> ```java +> public class ThreadTest { +> public static void main(String[] args) { +> new Thread(){ +> public void run() { +> for (int i = 0; i < 5; i++) { +> System.out.println("MyRunnable" + i); +> } +> } +> }.start(); +> for (int i = 0; i < 5; i++) { +> System.out.println("MainThread" + i); +> } +> } +> } +> ``` + +### 实现Runnable接口 + +Runnable接口代码: + +```java +public interface Runnable { + public abstract void run(); +} +``` + +步骤: + +1. 创建一个自定义类实现Runnable接口,并实现其抽象方法run(),编写线程要执行的任务 +2. 创建自定义类对象实例 +3. 用Thread类创建一个对象实例,并将第二步中的自定义类对象实例作为参数传给其构造函数 +4. 调用Thread类实例的start()方法执行线程。 + +```java +//MyRunnable.java +public class MyRunnable implements Runnable { + @Override + public void run() { + for (int i = 0; i < 5; i++) { + System.out.println("MyRunnable" + i); + } + } +} +//RunnableTest.java +public class RunnableTest { + public static void main(String[] args) { + MyRunnable mr = new MyRunnable(); + Thread t = new Thread(mr); + t.start(); + for (int i = 0; i < 5; i++) { + System.out.println("MainRunnable" + i); + } + } +} +//运行效果应该跟上面继承Thread类实现多线程效果差不多。 +``` + +> 上述代码也可以通过使用匿名内部类的方式进行简化: +> +> ```java +> public class RunnableTest { +> public static void main(String[] args) { +> new Thread(new Runnable() { +> public void run() { +> for (int i = 0; i < 5; i++) { +> System.out.println("MyRunnable" + i); +> } +> } +> }).start(); +> for (int i = 0; i < 5; i++) { +> System.out.println("MainRunnable" + i); +> } +> } +> } +> ``` + +> **==上面两种方式的比较==** +> +> **继承Thread类**: +> +> * 优点:直接使用Thread类中的方法,代码简单 +> * 弊端:如果已有父类,不可用(Java不可多继承) +> +> **实现Runnable接口(更常用)**: +> +> 与继承Threadl类相比具有以下优势: +> +> * 通过创建任务,给线程分配任务实现多线程,更适合多个线程同时执行相同任务的情况 +> * 可以避免单继承带来的局限性(Java允许实现多个接口,但不能继承多个父类) +> * 任务和线程分离,提高程序健壮性 +> * 后续学到的线程池技术,它只接收Runnable类型任务,不接收Thread类型线程 + +> **==Thread类API==** +> +> 1. 常用构造方法 +> +> | 构造器 | 描述 | +> | -------------------------------------- | ----------------------- | +> | `Thread()` | 分配新的 `Thread`对象。 | +> | `Thread(Runnable target)` | 分配新的 `Thread`对象。 | +> | `Thread(Runnable target, String name)` | 分配新的 `Thread`对象。 | +> | `Thread(String name)` | 分配新的 `Thread`对象。 | +> +> 2. 常用其他方法 +> +> | 变量和类型 | 方法 | 描述 | +> | :-------------- | :------------------------------ | :----------------------------------------------------------- | +> | `long` | `getId()` | 返回此Thread的标识符。 | +> | `String` | `getName()` | 返回此线程的名称。 | +> | `int` | `getPriority()` | 返回此线程的优先级。 | +> | `void` | `setPriority(int newPriority)` | 更改此线程的优先级。 | +> | `Thread.State` | `getState()` | 返回此线程的状态。 | +> | `static Thread` | `currentThread()` | 返回对当前正在执行的线程对象的引用。 | +> | `void` | `start()` | 导致此线程开始执行; Java虚拟机调用此线程的`run`方法。 | +> | `static void` | `sleep(long millis)` | 导致当前正在执行的线程休眠(暂时停止执行)指定的毫秒数,具体取决于系统计时器和调度程序的精度和准确性。 | +> | `static void` | `sleep(long millis, int nanos)` | 导致当前正在执行的线程休眠(暂时停止执行)指定的毫秒数加上指定的纳秒数,具体取决于系统定时器和调度程序的精度和准确性。 | +> | `void` | `setDaemon(boolean on)` | 将此线程标记为 daemon线程或用户线程。 | +> +> 3. 特殊字段:控制线程抢到时间片的几率 +> +> | 变量和类型 | 字段 | 描述 | +> | ------------ | --------------- | -------------------------- | +> | `static int` | `MAX_PRIORITY` | 线程可以拥有的最大优先级。 | +> | `static int` | `MIN_PRIORITY` | 线程可以拥有的最低优先级。 | +> | `static int` | `NORM_PRIORITY` | 分配给线程的默认优先级。 | +> +> 其他的可以参考Java的API手册 + +### 实现Callable接口 + +Callable接口代码: + +```java +public interface Callable { + V call() throws Exception; +} +``` + +步骤: + +1. 创建一个自定义类实现Callable接口,并实现其抽象方法call(),编写线程要执行的任务 + + ```java + class XXX implements Callable { + @Override + public call() throws Exception { + return T; + } + } + ``` + +2. 创建FutureTask对象 , 并传入第一步编写的Callable类对象 + + ```java + FutureTask future = new FutureTask<>(callable); + ``` + +3. 通过Thread,启动线程 + + ```java + new Thread(future).start(); + ``` + +```java +//MyCallable.java +import java.util.concurrent.Callable; +public class MyCallable implements Callable { + @Override + public T call() throws Exception { + for (int i = 0; i < 5; i++) { + System.out.println("MyCallable:" + i); + } + return null; + } +} +//CallableTest.java +import java.util.concurrent.FutureTask; +public class CallableTest { + public static void main(String[] args) { + MyCallable mc = new MyCallable<> (); + FutureTask future = new FutureTask<> (mc); + new Thread(future).start(); + for (int i = 0; i < 5; i++) { + System.out.println("main" + i); + } + } +} +``` + +> 上述代码也可以通过使用匿名内部类的方式进行简化: +> +> ```java +> import java.util.concurrent.Callable; +> import java.util.concurrent.FutureTask; +> public class CallableTest { +> public static void main(String[] args) { +> new Thread(new FutureTask<>(new Callable() { +> @Override +> public String call() throws Exception { +> for (int i = 0; i < 5; i++) { +> System.out.println("MyCallable:" + i); +> } +> return null; +> } +> })).start(); +> for (int i = 0; i < 5; i++) { +> System.out.println("main" + i); +> } +> } +> } +> ``` +> +> + +> **Runnable 与 Callable比较** +> +> * 相同点: +> * 都是接口 +> * 都可以编写多线程程序 +> * 都采用Thread.start()启动线程 +> +> * 不同点 +> * Runnable没有返回值;Callable可以返回执行结果 +> * Callable接口的call()允许抛出异常;Runnable的run()不能抛出 +> +> Callalble接口支持返回执行结果,需要调用FutureTask.get()得到,此方法会阻塞主进程的继续往下执 +> 行,如果不调用不会阻塞。 + +## 多线程的应用实例 + +### 设置和获取线程名称 + +`currentThread()` 可以获取当前正在执行的线程对象 + +```java +//MyRunnable.java +public class MyRunnable implements Runnable{ + @Override + public void run() { + System.out.println(Thread.currentThread().getName());//获取当前线程对象的名称 + } +} +//GetThread.java +public class GetThread { + public static void main(String[] args) { + System.out.println(Thread.currentThread().getName());//获取当前线程对象的名称 + new Thread(new MyRunnable()).start(); + new Thread(new MyRunnable()).start(); + new Thread(new MyRunnable(),"answer").start(); //给线程指定一个名称 (方法一) + Thread t = new Thread(new MyRunnable()); + t.setName("anotherWay"); //给线程指定一个名称 (方法二) + t.start(); + } +} +``` + +执行结果: + +![image-20201020213805266](https://i.loli.net/2020/10/20/DFz1sN5h2wUqyBG.png) + +### 线程休眠sleep + +`sleep(long millis)`是Thread类的静态方法,类名直接调用即可,单位ms。 + +```java +public class Demo1 { + public static void main(String[] args) throws InterruptedException { + for (int i = 0; i < 10; i++) { + System.out.print(i + " "); + Thread.sleep(1000); + } + } +} +``` + +运行结果:每隔1秒打印一个数字。 + +![](https://i.loli.net/2020/10/20/pIqfd5TD2waWtXo.gif) + +> **线程阻塞**:所有较耗时的操作都能称为阻塞。也叫耗时操作。 + +### 线程的中断 + +一个线程是一个独立的执行路径,它是否应该结束,**由其自身决定**。 + +因为线程执行过程会有很多资源需要使用或释放,如果干涉它的结束,很可能导致资源没能来得及释放,一直占用,从而产生无法回收的内存垃圾。 + +Java以前提供stop()方法可以结束线程,现在已经过时(不再使用)。现在出了新的方法,**给线程打中断标记**(`interrupt`)来控制它的结束。 + +具体方法就是 调用`interrupt()`方法,子线程执行时捕获中断异常,并在catch块中,添加处理释放资源的代码。 + +如下代码所示:main线程执行完后不管子线程是否执行完都中断掉它 + +```java +//MyRunnable.java +public class MyRunnable implements Runnable{ + @Override + public void run() { + //线程任务:打印1-10 + for (int i = 1; i <= 10; i++) { + System.out.println(Thread.currentThread().getName() + ":" + i); + try { + Thread.sleep(1000); + } catch (InterruptedException e) {//发现中断标记,进入catch块中,进行释放资源处理 + System.out.println(Thread.currentThread().getName()+":发现中断标记,我自杀了"); + return; //为了演示,直接结束 + } + } + } +} +//InterruptTest.java +public class InterruptTest { + public static void main(String[] args) { + Thread t1 = new Thread(new MyRunnable()); + t1.setName("myThread"); + t1.start(); + //main线程 打印1-5 + for (int i = 1; i <= 5; i++) { + System.out.println(Thread.currentThread().getName() + ":" + i); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + t1.interrupt(); //给线程t1添加中断标记 + } +} +``` + +运行结果: + +![](https://i.loli.net/2020/10/20/7vUXIGJWRbj4tTH.png) + +### 守护线程 + +线程分为**守护线程**和**用户线程** + +- **用户线程**:当一个进程不包含任何存活的用户线程时,进行结束。 +- **守护线程**:守护用户线程,当最后一个用户线程结束时,所有守护线程自动死亡。 + +直接创建的都是用户线程, + +设置线程为守护线程:在启动之前设置 ,语法为:`线程对象.setDaemon(true);`。 + +```java +//MyRunnable.java +public class MyRunnable implements Runnable{ + @Override + public void run() { + //线程任务:打印1-10 + for (int i = 1; i <= 10; i++) { + System.out.println(Thread.currentThread().getName() + ":" + i); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + return; //为了演示,直接结束 + } + } + } +} +//InterruptTest.java +public class InterruptTest { + public static void main(String[] args) { + Thread t1 = new Thread(new MyRunnable()); + t1.setName("myThread"); + t1.setDaemon(true);//设置t1为守护线程 + t1.start(); + //main线程 打印1-5 + for (int i = 1; i <= 5; i++) { + System.out.println(Thread.currentThread().getName() + ":" + i); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } +} +``` + +运行结果 + +![](https://i.loli.net/2020/10/20/YDGyOnPhEL3eXNz.png) + +### 线程安全问题 + +#### 问题引入 + +我们先来看个例子:三个窗口(线程)同时卖5张票。 + +```java +public class Demo1 { + public static void main(String[] args) { + Runnable run = new Ticket(); + new Thread(run).start(); + new Thread(run).start(); + new Thread(run).start(); + } + static class Ticket implements Runnable{ + private int count = 5; //票数 + @Override + public void run() { + while (count > 0) { + //卖票 + System.out.println(Thread.currentThread().getName()+"正在卖票"); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + count--; + System.out.println(Thread.currentThread().getName()+"出票成功,余票:"+count); + } + } + } +} +``` + +运行结果部分截图: + +![](https://i.loli.net/2020/10/21/g31kZ6c4FnywoqQ.png) + +我们看到余票出现了负数,显然这是不合理的,这就是线程不安全导致的。出现这种情况的原因:线程争抢,导致线程不安全。 多线程在进行同一卖票任务时,没人干涉,各个窗口疯狂买票,最终导致卖的票超出总票数,余票出现负数。 + +**线程不安全的原因:** + +当多线程并发访问**临界资源**时,如果破坏**原子操作**,可能会造成数据不一致。 + +- 临界资源:共享资源(同一对象),一次仅允许一个线程使用,才可保证其正确性。 +- 原子操作:不可分割的多步操作,被视作一个整体,其顺序和步骤不可打乱或缺省。 + +多个线程争抢同一个数据,使得数据在判断和使用时出现不一致的情况。那如何解决呢? + +解决方法:保证一段数据同时只能被一个线程使用(排队使用),也就是线程同步,给线程加锁(synchronized) + +我们有以下三种方法解决线程不安全的问题:同步代码块、同步方法、显示锁 + +#### 同步代码块 + +使用synchronized关键字加上一个锁对象来定义一段代码, 这就叫同步代码块 + +多个同步代码块如果使用**相同的锁对象**, 那么他们就是同步的 + +语法格式:`synchronized(锁对象) {}` + +任何对象都可以作为**锁对象**存在。 + +还以上面卖票的代码为例,给卖票的线程加锁 + +![image-20201021174518339](https://i.loli.net/2020/10/21/fcxmMsCzRarQS8P.png) + +#### 同步方法 + +以方法为单位进行加锁。把synchronized关键字修饰在方法中。 + +还以上面卖票的代码为例,写一个synchronized修饰的方法sale()执行卖票任务, + +![](https://i.loli.net/2020/10/21/SoCgaNvHtdc6GwX.png) + +#### 显式锁 + +> 上面三种方法中,同步代码块和同步代码都是隐式锁 + +`Lock l = new ReentrantLock()`:自己创建一把锁 + +`lock()`:加锁 `unlock()`:解锁 + +还以上面卖票的代码为例 + +![](https://i.loli.net/2020/10/21/MdGWmJql95V1uEX.png) + +> **显式锁和隐式锁的区别:** +> +> | 区别 | synchronized | lock | +> | ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +> | 原始构成 | Java关键字,由JVM维护,是JVM层面的锁 | JDK1.5之后的类,使用lock是在调用API,是API层面的锁 | +> | 使用方式 | 隐式锁,不需要手动获取和释放锁,只需要写synchronized,不用进行其他操作 | 显式锁,需要手动获取和释放锁,如果没有释放锁,可能会出现死锁 | +> | 等待中断 | 不会中断,除非抛出异常或正常运行完成 | 可以中断,1:调用设置超时方法tryLock(long timeout ,timeUnit unit);2:调用lockInterruptibly()放到代码块中,然后调用interrupt()方法可以中断 | +> | 加锁公平 | **非公平锁** | 可以是**公平锁**也可以是**非公平锁**,默认是非公平锁。可以在其构造方法传入Boolean值,true公平锁,false非公平锁 | +> | 绑定多个条件 | 没有。不能精确唤醒线程,要么随机唤醒一个线程,要么唤醒所有等待线程 | 用来实现分组唤醒需要唤醒的线程,可以精确唤醒线程 | +> | 性能 | JDK1.5时性能较低,JDK1.6时性能优化,与lock相较无异 | JDK1.5时性能更高,JDK1.6时synchronized优化赶上lock | +> | 加锁方式 | 线程获取独占锁(CPU悲观锁机制),只能依靠阻塞等待线程释放锁。在CPU转换线程阻塞时会引起线程上下文切换,当竞争锁的线程过多时,会引起CPU频繁上下文切换导致效率低下 | 使用乐观锁机制(CAS操作 Computer and Swap),假设不会发生冲突,一旦发生冲突失败就重试,直到成功为止。 | +> +> **公平锁**:先来先得,排队执行 +> +> **非公平锁**:抢占式的,谁抢到是谁的 + +> 更多关于线程安全的问题可以看下面这篇文章 +> +> [如果你这样回答“什么是线程安全”,面试官都会对你刮目相看(建议珍藏)](https://mp.weixin.qq.com/s/WDeewsvWUEBIuabvVVhweA) + +### 线程死锁 + +#### 概述 + +当两个或两个以上的线程在执行过程中,因为争夺资源而造成的一种相互等待的状态,由于存在一种环路的锁依赖关系而永远地等待下去,如果没有外部干涉,他们将永远等待下去,此时的这个状态称之为死锁。 + +多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处于阻塞的假死状态,形成死锁。 + +举个例子,如下图所示,在线程A持有锁L并想获得锁M的同时,线程B持有锁M并尝试获得锁L,那么这两个线程将永远地等待下去,这种情况就是死锁形式。 + +![](https://i.loli.net/2020/10/21/oC9p8qRF7h1d4DS.png) + +**死锁产生的条件:** + +- **互斥条件**:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用完释放。 +- **请求和保持条件**:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。 +- **不剥夺条件**:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。 +- **环路等待条件**:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{A,B,C,···,Z} 中的A正在等待一个B占用的资源;B正在等待C占用的资源,……,Z正在等待已被A占用的资源。 + +#### 如何避免死锁 + +1. 按顺序加锁:如果每个线程都按同一个的加锁顺序这样就不会出现死锁。 + +2. 给锁加时限:每个线程获取锁的时候加上个时限,如果超过某个时间就放弃锁。 + +3. 死锁检测:按线程间获取锁的关系检测线程间是否发生死锁,如果发生死锁就执行一定的策略,如终断线程或回滚操作等。 + +> 更多关于线程死锁的问题可以看下面这篇文章,以上内容也是来自这篇文章: +> +> [多线程 死锁详解](https://mp.weixin.qq.com/s/kvvJ9_xKaOMobaX7PZ5VCQ) + +### 多线程通信 + +Object方法中提供了一些线程间相互通信的方法 + +| 变量和类型 | 方法 | 描述 | +| ---------- | -------------------------------------- | ------------------------------------------------------------ | +| `void` | `notify()` | 唤醒正在此对象监视器上等待的单个线程。 | +| `void` | `notifyAll()` | 唤醒等待此对象监视器的所有线程。 | +| `void` | `wait()` | 导致当前线程等待它被唤醒,通常是 通知或 中断 。 | +| `void` | `wait(long timeoutMillis)` | 导致当前线程等待它被唤醒,通常是 通知或 中断 ,或者直到经过一定量的实时。 | +| `void` | `wait(long timeoutMillis, int nanos)` | 导致当前线程等待它被唤醒,通常是 通知或 中断 ,或者直到经过一定量的实时。 | + +**什么时候需要通信** + +多个线程并发执行时, 在默认情况下CPU是随机切换线程的,如果我们希望他们有规律的执行, 就可以使用通信。 + +#### 生产者与消费者 + +> 看下面代码,有Cooker类,Waiter类,Food类 +> +> 厨师cooker为生产者线程,服务员waiter为消费者线程,食物food为生产与消费的物品; +> +> 假设目前只有一个厨师,一个服务员,一个盘子。理想状态是:厨师生产一份饭菜,服务员端走一份,且饭菜的属性未发生错乱; +> +> 厨师可以制作两种口味的饭菜,制作100次; +> +> 服务员可以端走饭菜100次; + +```java +public class Demo { + public static void main(String[] args) { + Food f = new Food(); + new Cooker(f).start(); + new Waiter(f).start(); + } + static class Cooker extends Thread{ //生产者线程 + private Food f; + public Cooker(Food f){ + this.f = f; + } + public void run() { + //生产100个菜 + for (int i = 0; i < 100; i++) { + if (i % 2 == 0){ + f.setNameAndTaste("菜1","味道1"); + } else { + f.setNameAndTaste("菜2","味道2"); + } + } + } + } + static class Waiter extends Thread { //消费者线程 + private Food f; + public Waiter(Food f){ + this.f = f; + } + public void run() { + for (int i = 0; i < 100; i++) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + f.get(); + } + } + } + static class Food { + private String name; + private String taste; + public void setNameAndTaste(String name,String taste){ //生产 + this.name = name; //先设定名称 + try { + Thread.sleep(100); //为使线效果明显,中间休眠一段时间 + } catch (InterruptedException e) { + e.printStackTrace(); + } + this.taste = taste; //休眠后设定味道 + } + public void get(){ //消费 + System.out.println("服务员端走的菜名称是:" + name + ",味道:" + taste); + } + } +} +``` + +运行结果 + +![](https://i.loli.net/2020/10/21/CAYzM4DNI36Pg7V.png) + +原因:我们在设定菜名和味道的`setNameAndTaste`方法中,先设定名称,然后休眠一段时间,再设定的味道,中间休眠的那段时间很可能发生时间片丢失,使得菜属性产生混乱。 + +**解决方式一**: + +为了防止在生产过程中setNameAndTaste出现时间片切换,可以用synchronized修饰此方法; + +```java +public synchronized void setNameAndTaste(String name,String taste){ + //... +} +public synchronized void get(){ // 消费 + //... +} +``` + +运行结果 + +![](https://i.loli.net/2020/10/21/HhAMOSIL9Ymn3lE.png) + +可以看出,依然不符合实际情况,这是因为synchronized只是确保了方法内部不会发生线程切换,但并不能保证生产一个消费一个的逻辑关系 + +**解决方式二**: + +在解决方案一的基础上,进行线程之间的通信 + +```java +private boolean flag = true; //默认为true,表示可以做饭 +``` + +厨师做完饭后喊醒服务员,自己睡着。服务员送完饭后喊醒厨师,自己睡着;将Food类左如下修改 + +![](https://i.loli.net/2020/10/21/flHwKZ9nbGrg8mT.png) + +运行结果,做一道菜,端走一道。 + +![image-20201021210352200](https://i.loli.net/2020/10/21/m7pIQqgSCZz59HG.png) + +## 线程的六种状态 + +Enum Thread.State描述了六种线程的状态,如下表所示 + +| Enum Constant | 描述 | +| --------------- | -------------------------------------------------- | +| `BLOCKED` | 线程的线程状态被阻塞等待监视器锁定。(阻塞) | +| `NEW` | 尚未启动的线程的线程状态。(创建) | +| `RUNNABLE` | 可运行线程的线程状态。(就绪和运行) | +| `TERMINATED` | 终止线程的线程状态。(消亡) | +| `TIMED_WAITING` | 具有指定等待时间的等待线程的线程状态。(有限期等待) | +| `WAITING` | 等待线程的线程状态。(无限期等待) | + +## 线程池Executors + +> 普通线程的执行流程: +> +> 创建线程 → 创建任务 → 执行任务 → 关闭线程 +> +> 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低 系统的效率,因为频繁创建线程和销毁线程需要时间。 线程池就是一个容纳多个线程的容器,池中的线程可以反复使用,省去了频繁创建和销毁线程对象的操作,节省了大量的时间和资源。 + +线程池的好处 + +* 降低资源消耗。 +* 提高响应速度。 +* 提高线程的可管理性。 + +Java中有四种线程池(ExecutorService):缓存线程池、定长线程池、单线程线程池、周期性任务定长线程池 + +### 缓存线程池 + +长度无限制 + +执行流程: + +1. 判断线程池是否存在空闲线程 + +2. 存在则使用 + +3. 不存在,则创建线程 并放入线程池, 然后使用 + +```java +ExecutorService service = Executors.newCachedThreadPool(); //获取缓存线程池对象 +//向线程池中 加入 新的任务 +service.execute(new Runnable() { + @Override + public void run() { + //线程任务代码 + } +}); +``` + +### 定长线程池 + +长度是指定的数值 + +步骤: + +1. 判断线程池是否存在空闲线程 +2. 存在则使用 +3. 不存在空闲线程,线程池未满的情况下,则创建线程 并放入线程池, 然后使用 +4. 不存在空闲线程,且线程池已满的情况下,则等待线程池存在空闲线程 + +```java +ExecutorService service = Executors.newFixedThreadPool(2); +service.execute(new Runnable() { + public void run() { + //线程任务代码 + } +}); +``` + +### 单线程线程池 + +步骤: + +1. 判断线程池的那个线程是否空闲 +2. 空闲则使用 +3. 不空闲则等待池中的单个线程空闲后使用 + +```java +ExecutorService service = Executors.newSingleThreadExecutor(); +service.execute(new Runnable() { + public void run() { + //线程任务代码 + } +}); +``` + +### 周期性任务定长线程池 + +步骤: + +1. 判断线程池是否存在空闲线程 +2. 存在则使用 +3. 不存在空闲线程,且线程池未满的情况下,则创建线程,并放入线程池后使用 +4. 不存在空闲线程,且线程池已满的情况下,则等待线程池存在空闲线程 + +周期性任务执行时:定时执行, 当某个时机触发时, 自动执行某任务 + +```java +ScheduledExecutorService service = Executors.newScheduledThreadPool(2); +/** +* 定时执行 +* 参数1. runnable类型的任务 +* 参数2. 时长数字 5 +* 参数3. 时长数字的单位 TimeUnit.SECONDS +*/ +service.schedule(new Runnable() { + public void run() { + //线程任务代码 + } +},5,TimeUnit.SECONDS); +/** +* 周期执行 +* 参数1. runnable类型的任务 +* 参数2. 时长数字(延迟执行的时长) 5 +* 参数3. 周期时长(每次执行的间隔时间) 2 +* 参数4. 时长数字的单位 TimeUnit.SECONDS +*/ +service.scheduleAtFixedRate(new Runnable() { + public void run() { + //线程任务代码 + } +},5,2,TimeUnit.SECONDS); +``` + + + + + diff --git a/source/_posts/Java异常处理.md b/source/_posts/Java异常处理.md new file mode 100644 index 0000000..32e176e --- /dev/null +++ b/source/_posts/Java异常处理.md @@ -0,0 +1,375 @@ +--- +title: Java异常处理 +date: 2020-10-11 14:24:00 +tags: +- Java +- 面向对象 +categories: +- Java基础 +--- + +## 什么是异常 + +异常是在程序中导致程序中断运行的一种指令流。 + +先来看如下代码 + +```java +public class ExceptionDemo{ + public static void main(String[] args){ + int i = 10 ; + int j = 0 ; + System.out.println("============= 计算开始 =============") ; + System.out.println(i + "/" + j + "=" + i / j); + System.out.println("============= 计算结束 =============") ; + } +}; +``` + + + +运行结果: + +```java +============= 计算开始 ============= +Exception in thread "main" java.lang.ArithmeticException: / by zero + at ExceptionDemo01.main(ExceptionDemo01.java:6) +``` + +以上的代码在`System.out.println(i + "/" + j + "=" + i / j);`位置处产生了异常`ArithmeticException(算术异常)`,一旦产生异常之后,异常之后的语句将不再执行了,所以现在的程序并没有正确的执行完毕之后就退出了。 + +那么,为了保证程序出现异常之后仍然可以正确的执行完毕,所以要采用异常的处理机制。 + +## 异常处理 + +如果要想对异常进行处理,则必须采用标准的处理格式,处理格式语法如下: + +```java +try{ + // 有可能发生异常的代码段 +}catch(异常类型1 对象名1){ + // 异常的处理操作 +}catch(异常类型2 对象名2){ + // 异常的处理操作 +} ... +finally{ + // 异常的统一出口 +} +``` + +将开头的代码用try-catch处理: + +```java +public class ExceptionDemo{ + public static void main(String[] args){ + int i = 10 ; + int j = 0 ; + System.out.println("============= 计算开始 =============") ; + try{ + System.out.println(i+ "/" + j + "=" + i /j); + }catch(ArithmeticException e){ + System.out.println("除数不能为0"); + } + System.out.println("============= 计算结束 =============") ; + } +}; +``` + +运行结果 + +```bash +============= 计算开始 ============= +除数不能为0 +============= 计算结束 ============= +``` + +### try+catch的处理流程 + +1、 一旦产生异常,则系统会自动产生一个异常类的实例化对象。 + +2、 那么,此时如果异常发生在try语句,则会自动找到匹配的catch语句执行,如果没有在try语句中,则会将异常抛出,抛给调用方法者 + +3、 所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理。 + +![](https://i.loli.net/2020/10/10/bVzw1mud4eif7ot.png) + +### finally + +在进行异常的处理之后,在异常的处理格式中还有一个finally语句,那么此语句将作为异常的统一出口,不管是否产生了异常,最终**必然都要**执行此段代码。 + +> finally例子1: +> +> ```java +> public class ExceptionDemo { +> public static void main(String[] args){ +> try { +> System.out.println(1); +> System.out.println(2); +> return; +> }catch (Exception e) { +> return; +> }finally { +> System.out.println("finally代码块中的内容"); +> } +> } +> }; +> ``` +> +> 运行测试结果:说明即使在try和catch中return,在准备返回值与跳出函数之间,仍然会执行finally中的语句 +> +> ![image-20201010164546702](https://i.loli.net/2020/10/10/x5eOw9uGgMRCEdZ.png) +> +> finally例子2: +> +> ```java +> public class ExceptionDemo { +> public static void main(String[] args){ +> Person p = testFinally(); +> System.out.println(p.age); //28 +> } +> public static Person testFinally(){ +> Person p = new Person(); +> try { +> p.age = 18; +> return p; +> }catch (Exception e) { +> return null; +> }finally { +> p.age = 28; +> } +> } +> static class Person{ +> int age; +> } +> }; +> ``` +> +> finally例子3: +> +> ```java +> public class ExceptionDemo { +> public static void main(String[] args){ +> int a = testFinally(); +> System.out.println(a); //10 +> +> } +> public static int testFinally(){ +> int a = 10; +> try { +> return a; +> }catch (Exception e) { +> return 0; +> }finally { +> a = 20; +> } +> } +> }; +> ``` +> +> 注意例子2和例子3,我们 testFinally() 方法一个返回的是引用数据类型,一个返回的是基本数据类型。例子3中返回非引用数据类型时return 备份的就是数据10,所以运行结果是10,不过此时栈中a的数据还是被改成20了。而在例子2中,我们return备份的是引用类型对象 p 在堆中的地址,存放在堆中那个地址的age被改为了28,当我们return 通过地址去找age时,就是会返回28。 + +### 异常处理真实场景举例 + +```java +import java.util.InputMismatchException; +import java.util.Scanner; + +public class ExceptionDemo2 { + public static void main(String[] args) { + int num = menu(); + System.out.println("您选择的序号是" + num); + + } + public static int menu(){ + System.out.println("请根据提示,选择功能序号:"); + System.out.println("0.退出\n1.增\n2.删\n3.改"); + Scanner input = new Scanner(System.in); + int num = -1; + try { + num = input.nextInt(); + if (num<0 || num>3){ + System.out.println("输入的序号必须是:0/1/2/3"); + return menu();//如果数字范围超过预期,递归重新调用此函数 + } + return num; + }catch (InputMismatchException e){ + System.out.println("输入必须是数字"); + return menu(); //如果输入非数字,递归重新调用此函数 + } + } +} +``` + +运行效果测试: + +![image-20201010161246734](https://i.loli.net/2020/10/10/lKxIRXjcQ4SzuGh.png) + +## 异常体系结构 + +异常指的是Exception , Exception类, 在Java中存在一个父类Throwable(可能的抛出) + +Throwable存在两个子类: + +1. Error:表示的是错误,是JVM发出的错误操作,只能尽量避免,无法用代码处理。 +2. Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。 + +![](https://i.loli.net/2020/10/10/5WiUkG6aMdAOwYo.png) + +> 多异常捕获的注意点: +> +> 1. 捕获更粗的异常不能放在捕获更细的异常之前。 +> 2. 如果为了方便,则可以将所有的异常都使用Exception进行捕获。 +> +> 特殊的多异常捕获写法: +> +> ```java +> catch(异常类型1 |异常类型2 对象名){ +> //表示此块用于处理异常类型1 和 异常类型2 的异常信息 +> } +> ``` +> +> ```java +> import java.util.Scanner; +> +> public class ExceptionDemo { +> public static void main(String[] args){ +> try { +> Scanner input = new Scanner(System.in); +> System.out.println("请输入一个数字:"); +> int x = input.nextInt(); +> System.out.println("请再输入一个数字:"); +> int y = input.nextInt(); +> System.out.println(x/y); +> }catch (InputMismatchException | ArithmeticException e) { //格式一 +> System.out.println("输入错误"); +> } +> /* +> catch(RuntimeException e(或Exception e)){ //扩大异常的形态范围来捕获 ,格式二 +> System.out.println("输入错误"); +> } +> */ +> System.out.println("程序执行完毕,正常结束"); +> } +> }; +> ``` + +## throws和throw关键字 + +###throws + +在程序中异常的基本处理已经掌握了,但是随异常一起的还有一个称为throws关键字,此关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。格式如下: + +```java +返回值 方法名称()throws Exception{ + +} +``` + +如果是因为传入的参数导致异常的发生,则可以通过throws抛出异常。通常是谁调用谁处理; + +如下代码,只有传入参数出错,程序才会出错。 + +![image-20201010184935241](https://i.loli.net/2020/10/10/XwxopzQTY85asmi.png) + +我们可以用谁调用谁处理的策略,使用throws关键字来处理异常 + +![image-20201010191247867](https://i.loli.net/2020/10/10/t2qHGzpw1Lgfr7s.png) + +###throw + +throw关键字表示在程序中人为的抛出一个异常,因为从异常处理机制来看,所有的异常一旦产生之后,实际上抛出的就是一个异常类的实例化对象,那么此对象也可以由throw直接抛出。(真正应用时,自己造异常还是比较麻烦的,之前加判断也可以出现相同的效果,所以用的较少) + +代码: `throw new Exception("抛着玩的。");` + +看下面的代码 + +```java +public class ExceptionDemo8 { + public static void main(String[] args){ + Person p = new Person(); + p.setAge(-1);//传入非法参数 + } +}; +class Person { + int age; + public void setAge(int age) { //处理异常时机:谁调用谁处理 + //之前在设计此函数时,当用户输入了不合理时,自动设为1, + //但用户在没有任何提示的情况下,输入和实际展示不一致,者本身就是异常 + if (age < 0 || age > 150){ + //this.age = 1; + //所以在发生异常时,需要告诉调用函数,发生了什么问题,而不是自己默默处理 + throw new RuntimeException("年龄不合理"); + }else{ + this.age = age; + } + } +} +``` + +运行结果: + +![image-20201010173420321](https://i.loli.net/2020/10/10/7ciUMJSWOrK5aE9.png) + +## RuntimeExcepion与Exception的区别 + +注意观察如下方法的源码: + +Integer类:` public static int parseInt(String text)throws NumberFormatException` + +此方法抛出了异常, 但是使用时却不需要进行try…catch捕获处理,原因: + +因为`NumberFormatException`并不是`Exception`的直接子类,而是`RuntimeException`的子类,只要是`RuntimeException`的子类,则表示程序在操作的时候可以不必使用try…catch进行处理,如果有异常发生,则由JVM进行处理。当然,也可以通过try…catch处理。 + +## 自定义异常类 + +> 编写一个类, 继承Exception,并重写一参构造方法 即可完成自定义**受检异常**类型。受检异常必须明确的处理或者抛出,否则编译不通过 +> +> 编写一个类, 继承RuntimeExcepion,并重写一参构造方法 即可完成自定义**运行时异常(非受检异常)**类型。 +> +> 例如: +> +> ```java +> class MyException extends Exception{ // 继承Exception,表示一个自定义异常类 +> public MyException(String msg){ +> super(msg) ; // 调用Exception中有一个参数的构造 +> } +> }; +> ``` +> +> 自定义异常可以做很多事情, 例如: +> +> ```java +> class MyException extends Exception{ +> public MyException(String msg){ +> super(msg) ; +> //在这里给维护人员发短信或邮件, 告知程序出现了BUG。 +> } +> }; +> ``` + +## 异常处理常见题目 + +1. **try-catch-finally 中哪个部分可以省略?** + + 答: catch和finally可以省略其中一个 , catch和finally不能同时省略 + 注意:格式上允许省略catch块, 但是发生异常时就不会捕获异常了,我们在开发中也不会这样去写代码. + +2. **try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?** + + 答:finally中的代码会执行 + + > 详解: + > + > ​ 执行流程: + > + > 1. 先计算返回值, 并将返回值存储起来, 等待返回 + > 2. 执行finally代码块 + > 3. 将之前存储的返回值, 返回出去; + > + > ​ 注意: + > + > 1. 返回值是在finally运算之前就确定了,并且缓存了,不管finally对该值做任何的改变,返回的值都不会改变 + > 2. finally代码中不建议包含return,因为程序会在上述的流程中提前退出,也就是说返回的值不是try或catch中的值 + > 3. 如果在try或catch中停止了JVM,则finally不会执行。例如停电,或通过如下代码退出 + > JVM:`System.exit(0);` + diff --git a/source/_posts/Java数组.md b/source/_posts/Java数组.md new file mode 100644 index 0000000..280fe68 --- /dev/null +++ b/source/_posts/Java数组.md @@ -0,0 +1,400 @@ +--- +title: Java数组 +date: 2020-05-24 18:59:37 +tags: +- Java +categories: +- Java基础 +--- + +## 数组概述 + +**`数组的定义:`** + +* 数组是相同类型数据的有序集合。 +* 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。 +* 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。 + + + +### 数组的声明创建 + +首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: + +```java +dataType[] arrayRefVar; //首选的方法 +或 +dataType arrayRefVar[]; //效果相同,但不是首选方法,不推荐使用 +``` + +Java语言使用`new` 操作符来创建数组,语法如下: + +```java +dataType[] arrayRefVar = new dataType[arraySize]; +``` + +数组的元素是通过索引访问的,数组索引从**0**开始。 + +获取数组长度:`arrays.length` + +声明时数组在内存中并不存在,只有在创建数组时,才会在内存中为数组分配指定的空间。 + +### Java内存分析 + +![java内存](https://i.loli.net/2020/05/23/pEowZelcCNFGzQ3.png) + +`数组在内存中的创建过程:` + +1. 在声明数组时会在栈中压入数组名 +2. 创建数组时会在堆中开辟指定的空间用来存放数组 +3. 给数组赋值,将值存放在堆中数组对应的空间里 + +![数组在内存中的创建过程](https://i.loli.net/2020/05/23/QGIF8zbnEcasDvg.png) + +### 数组的三种初始化 + +* **静态初始化** + + ```java + int[] a = {1,2,3}; + Man[] mans ={new Man(1,1),new Man(2,2)}; + ``` + +* **动态初始化** + + ```java + int[] a = new int[2]; //创建数组 默认初始化 + a[0] = 1; + a[1] = 2; + ``` + +* **数组的默认初始化** + + 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。 + +### 数组的四个基本特点 + +* 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 +* 其元素必须是相同类型,不允许出现混合类型。 +* 数组中的元素可以是任何数据类型,包括基本类型和引用类型。 +* 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。 + +### 数组边界 + +下标的合法区间:[0,length-1],如果越界就会报错; + +```java +public static void main(String[] args){ + int[] a = new int[2]; + System.out.println(a[2]); //报错 +} +``` + +ArraylndexOutOfBoundsException:数组下标越界异常! + +> **`小结`** +> +> * 数组是相同数据类型(数据类型可以为任意类型)的有序集合 +> * 数组也是对象。数组元素相当于对象的成员变量 +> * 数组长度的确定的,不可变的。如果越界,则报:ArraylndexOutofBounds + +## 数组的使用 + +数组一般可以配合循环来使用。 + +```java +public class ArrayDemo { + public static void main(String[] args) { + int[] arrays = {1,2,3,4,5}; + //打印全部的数组元素 + for (int i = 0; i < arrays.length; i++) { + System.out.println(arrays[i]); + } + //打印所有元素的和 + int sum = 0; + for (int i = 0; i < arrays.length; ++i) { + sum += arrays[i]; + } + System.out.println("sum="+sum); + //查找最大最小元素 + int max = array[0];//创建变量,存储遍历数组时发现的最大值, + //初始值赋为数组中第一个元素而不赋为0,是为了避免数组中没有比0大的值,这样就会输出错误的值 + int min = array[0] + for (int i = 1; i < arrays.length; i++) { + max = max > arrays[i] ? max : arrays[i]; + min = min < arrays[i] ? min : arrays[i] + } + System.out.println("max="+max+"\nmin="+"min"); + } +} +``` + +### for-each循环(增强型for循环) + +```java +public class ArrayDemo { + public static void main(String[] args) { + int[] arrays = {1,2,3,4,5}; + for(int array : arrays){ //这种方式没有下标,适合打印输出 + System.out.println(array); + } + } +} +``` + +### 数组作方法入参和作返回值 + +```java +public class ArrayDemo { + public static void main(String[] args) { + int[] arrays = {1,2,3,4,5}; + int[] arraysReverse = reverse(arrays); + printArray(arraysReverse); + } + //打印数组元素 + public static void printArray(int[] arrays){ //数组作为方法的传入参数 + for (int i = 0; i < arrays.length; i++){ + System.out.print(arrays[i]+" "); + } + } + //反转数组 + public static int[] reverse(int[] arrays){ + int[] result = new int[arrays.length]; + for (int i = 0; i < arrays.length; i++){ + result[result.length-i-1] = arrays[i]; + } + return result; //数组作为返回值 + } +} +``` + +### 数组的常用算法 + +####冒泡排序 + + + +![冒泡排序](https://i.loli.net/2020/05/24/QoRPrY2VfzcnhwE.gif) + +如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。 + +原理:比较两个相邻的元素,将值大的元素交换到右边 + +思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 + +算法分析: + +N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数 + +冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。 + +时间复杂度 + +1.如果我们的数据正序,只需要走一趟即可完成排序。所需的比较次数C和记录移动次数M均达到最小值,即:$C_{min}=n-1$;$M_{min}=0$;所以,冒泡排序最好的时间复杂度为O(n)。 + +2.如果很不幸我们的数据是反序的,则需要进行n-1趟排序。每趟排序要进行n-i次比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值: + +$$C_{max} =\cfrac{n(n-1)}{2} = O(n^2)$$ + +$M_{max} =\cfrac{3n(n-1)}{2} = O(n^2)$ + +综上所述:冒泡排序总的平均时间复杂度为:$O(n^2)$ ,时间复杂度和数据状况无关。 + +> Java代码实现 +> +> ```java +> //冒泡排序 +> public static int[] bubbleSort(int[] array){ +> int temp = 0; +> //外层循环控制比较的轮次 : length-1轮 +> for (int i = 0; i < array.length-1; i++){ +> //内层循环控制每轮比较的次数 +> //第i轮(i从0开始计算),比较次数为length-i-1 +> for (int j = 0; j < array.length-1-i; j++) { +> if (array[j+1] temp = array[j]; +> array[j] = array[j+1]; +> array[j+1] = temp; +> } +> } +> } +> return array; +> } +> ``` + +#### 二分查找(折半查找) + +**概述** + +二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求数组数据必须采用顺序存储结构有序排列。 + +**原理 ** + +首先,假设数组中元素是按升序排列,将数组中间位置的数据与查找数据比较,如果两者相等,则查找成功;否则利用中间位置记录将数组分成前、后两个子数组,如果中间位置数据大于查找数据,则进一步查找前子数组,否则进一步查 找后子数组。 + + 重复以上过程,直到找到满足条件的数据,则表示查找成功, 直到子数组不存在为止,表示查找不成功。 + +> Java代码实现 +> +> ```java +> public class Demo5 { +> +> /** +> * 二分查找(折半查找) +> */ +> public static void main(String[] args) { +> //定义一个有序数组 +> int[] nums = {10,20,30,40,50,60,70,80,90}; +> //要查找的数据 +> int num = 20; +> bubbleSort(nums,num); +> +> System.out.println("位置:"+centerIndex); +> +> } +> } +> public int binarySearch(int[] array,int num){ +> //1. 最小范围下标 +> int minIndex = 0; +> //2. 最大范围下标 +> int maxIndex = array.length-1; +> //3. 中间数据下标 +> int centerIndex = (minIndex+maxIndex)/2; +> while(true) { +> System.out.println("循环了一次"); +> if(array[centerIndex]>num) { +> //中间数据较大 +> maxIndex = centerIndex-1; +> }else if(array[centerIndex] //中间数据较小 +> minIndex = centerIndex+1; +> }else { +> //找到了数据 数据位置:centerIndex +> break; +> } +> +> if(minIndex > maxIndex) { +> centerIndex = -1; +> break; +> } +> //当边界发生变化, 需要更新中间下标 +> centerIndex = (minIndex+maxIndex)/2; +> } +> return centerIndex; +> } +> ``` + +#### + +## 多维数组 + +多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。 + +### 二维数组 + +```java +int[][] a = new int[2][5] //二维数组a可以看成一个两行5列的数组 +``` + +![](https://i.loli.net/2020/05/24/qOGaBP61eo5mVdU.png) + +```java +public class ArrayDemo { + public static void main(String[] args) { + int[][] arrays= {{1,2},{2,3},{3,4},{4,5}}; + //将数组遍历打印出来 + for (int i = 0; i < arrays.length; i++){ + for (int j = 0; j < arrays[i].length; j++){ + System.out.print(arrays[i][j]+" "); + } + } + } +``` + +## Java的Arrays类 + +数组的工具类`java.util.Arrays` + +由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。 + +Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”) + +Arrays类具有以下**常用**功能 + +* 给数组赋值:通过fill方法。 +* 对数组排序:通过 sort 方法,按升序。 +* 比较数组:通过equals 方法比较数组中元素值是否相等。 +* 查找数组元素:通过binarySearch 方法能对排序好的数组进行二分查找法操作。 + +具体使用可参考[JDK文档](https://www.matools.com/api/java8) + +## 稀疏数组 + +当一个数组中大部分元素为0,或者为同一值的数组时,可以使用**稀疏数组**来保存该数组。 + +稀疏数组的处理方式是: + +* 记录数组一共有几行几列,有多少个不同值 + +* 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 + +> 如下图:左边是原始数组,右边是稀疏数组 +> +> ![](https://i.loli.net/2020/05/24/4HsMGcvahmbUk72.png) +> +> | | 行 | 列 | 值 | 含义 | +> | :--: | :--: | :--: | :--: | :-------------------------------------: | +> | [0] | 6 | 7 | 8 | 表示这是一个6行7列的数组,有效值有 8 个 | +> | [1] | 0 | 3 | 22 | 第一个有效值位于第0行第3列,值为22 | +> | [2] | 0 | 6 | 15 | 第二个有效值位于第0行第6列,值为15 | +> | [3] | 1 | 1 | 11 | 第三个有效值位于第1行第1列,值为11 | +> | [4] | 1 | 5 | 17 | 第四个有效值位于第1行第5列,值为17 | +> | [5] | 2 | 3 | -6 | 第五个有效值位于第2行第3列,值为-6 | +> | [6] | 3 | 5 | 39 | 第六个有效值位于第3行第5列,值为39 | +> | [7] | 4 | 0 | 91 | 第七个有效值位于第4行第0列,值为91 | +> | [8] | 5 | 2 | 28 | 第八个有效值位于第5行第2列,值为28 | + +```java +/**** 转为稀疏数组 ****/ +public static int[][] toSparseArray(int[][] arr){ + //获取有效值的个数 + int sum = 0; + for (int i = 0; i < arr.length; i++) { + for (int j = 0; j < arr[i].length; j++) { + if (arr[i][j] != 0) { + sum++; + } + } + } + //新建一个稀疏数组 + int[][] arr2 = new int[sum+1][3]; + arr2[0][0] = arr.length; + arr2[0][1] = arr[0].length; + arr2[0][2] = sum; + //遍历arr,将非零的值的信息,存放入稀疏数组中 + int count = 0; + for (int i = 1; i < arr.length; i++) { + for (int j = 0; j < arr[i].length; j++) { + if(arr[i][j] != 0){ + count++; + arr2[count][0] = i; + arr2[count][1] = j; + arr2[count][2] = arr[i][j]; + } + } + } + return arr2; +} + +/**** 稀疏数组转为普通数组 ****/ +public static int[][] sparseToArray(int[][] arr){ + //读取稀疏数组,并新建一个数组 + int[][] arr2 = new int[arr[0][0]][arr[0][1]]; + //还原稀疏数组 + for (int i = 1; i < arr.length; i++) { + arr2[arr[i][0]][arr[i][1]] = arr[i][2]; + } + return arr2; +} +``` + diff --git a/source/_posts/Java方法.md b/source/_posts/Java方法.md new file mode 100644 index 0000000..dc85918 --- /dev/null +++ b/source/_posts/Java方法.md @@ -0,0 +1,151 @@ +--- +title: Java方法 +date: 2020-05-30 21:32:41 +tags: +- Java +categories: +- Java基础 +--- + +## 方法概述 + +Java方法是语句的集合,它们在一起执行一个功能。 + +* 方法是解决一类问题的步骤的有序组合 +* 方法包含于类或对象中 +* 方法在程序中被创建,在其他地方被引用 + + + +**设计方法的原则:** + +方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。 + +**方法的命名规范:** + +首字母小写和驼峰原则:run(),runRun()。 + +## 方法的定义及调用 + +### 方法定义 + +Java的方法类似于其它语言函数是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法: + +方法包含一个方法头和一个方法体。下面是一个方法的所有部分: + +* 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 +* 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。 +* 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。 +* 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。 + * 形式参数:在方法被调用时用于接收外界输入的数据。 + * 实参:调用方法时实际传给方法的数据。 +* 方法体:方法体包含具体的语句,定义该方法的功能。 +* 返回值:如果返回值类型不为void,那么需要在方法体的最后return返回值,遇到return即结束方法。 + +```java +修饰符 返回值类型 方法名(参数类型 参数名){ + ... + 方法体 + ... + return 返回值; +} +``` + +### 方法调用 + +调用方法:对象名.方法名(实参列表) + +Java 支持两种调用方法的方式,根据方法是否返回值来选择。 + +* 当方法返回一个值的时候,方法调用通常被当做一个值。例如: + + ```java + int larger = max(20,30); + ``` + +* 如果方法返回值是void,方法调用一定是一条语句。 + + ```java + System.out.println("Hello"); + ``` + + +## 方法重载 + +重载就是在一个类中,有相同的函数名称,但形参不同的函数。 + +**方法的重载的规则:** + +* 方法名称必须相同。 +* 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。 +* 方法的返回类型可以相同也可以不相同。·仅仅返回类型不同不足以成为方法的重载。 + +**实现理论:** + +方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。 + +## 命令行传参 + +有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。 + +```java +public class Demo03{ + public staticvoid) main(String args[]){ + for(int i = 0;i < args.length;i++){ + System.out.println("args["+ i +"]:"+args[i]); + } + } +} +``` + +![](https://i.loli.net/2020/05/30/ZSfx6b4NPU8Xdhe.png) + +## 可变参数 + +JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。 + +在方法声明中,在指定参数类型后加一个省略号(…)。 + +一个方法中只能指定**一个**可变参数,它必须是方法的**最后一个参数**。任何普通的参数必须在它之前声明。 + +```java +public static void printMax(double... numbers){ + if(numbers.length==0){ + System.out.println("No argument passed"); + return; + } + double result=numbers[0]; + //排序! + for(int i = 1;i < numbers.length;i++){ + if(numbers[i]>result){ + result=numbers[i]; + } + } + System.out.println("The max value is "+result); +} +``` + +## 递归 + +A方法调用B方法,我们很容易理解 + +**递归就是:**A方法调用A方法!就是自己调用自己 + +利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。 + +**递归结构包括两个部分:** + +* 边界(递归头):什么时候不调用自身方法。如果没有头,将陷入死循环。 +* 递归体:什么时候需要调用自身方法。 + +```java +public static int factorial(int n){ + if(n == 1){ //边界 + return 1; + }else{ + n = n*factorial(n-1); //递归 + return n; + } +} +``` + diff --git a/source/_posts/Java泛型.md b/source/_posts/Java泛型.md new file mode 100644 index 0000000..f122139 --- /dev/null +++ b/source/_posts/Java泛型.md @@ -0,0 +1,126 @@ +--- +title: Java泛型 +date: 2020-10-24 16:21:15 +tags: +- Java +- 面向对象 +categories: +- Java基础 +--- + +### 概述 + +泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 + + + +> **注意:** +> +> 在编译之后程序会采取去泛型化的措施。也就是说Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。 +> +> **作用:** +> +> 1. 提高代码复用率 +> 2. 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型) + +### 使用 + +#### 泛型类 + +```java +//定义一个泛型类: +public class ClassName{ + private T data; + public T getData() { + return data; + } + public void setData(T data) { + this.data = data; + } +} +//使用该类 +public class Main { + public static void main(String[] args) { + ClassName val1 = new ClassName<> (); //在使用时指定为具体的类型 + val1.setData(""); + ClassName val2 = new ClassName<> (); + val2.setData(1); + } +} +``` + +#### 泛型接口 + +```java +public interface IntercaceName{ + T getData(); +} +//实现接口时,可以选择指定泛型类型,也可以选择不指定, 如下: +//指定类型: +public class Interface1 implements IntercaceName { + private String text; + @Override + public String getData() { + return text; + } +} +//不指定类型: +public class Interface1 implements IntercaceName { + private T data; + @Override + public T getData() { + return data; + } +} +``` + +#### 泛型方法 + +```java +private static T 方法名(T a, T b) {} //T只在方法内有效 +``` + +```java +public class Demo { + public static void main(String[] args) { + print("haha"); + print(11212); + } + public static void print(T a){ //方法内的泛型只在方法内有效 + System.out.println(a); + } +} +``` + +### 限制泛型类型 + +在使用泛型时, 可以指定泛型的限定区域 , + +- 例如: 必须是某某类的子类或 某某接口的实现类,格式: + `` + +![image-20201013115930582](https://i.loli.net/2020/10/13/CjxYoEDT42qc8KR.png) + +### 泛型中的通配符 + +类型通配符是使用`?`代替方法具体的类型实参。 + +1. `` 指定了泛型类型的上届 +2. `` 指定了泛型类型的下届 +3. `` 指定了没有限制的泛型类型 + +![](https://i.loli.net/2020/10/13/J2DuWzcF4KIa5tl.png) + +> ### 补充 +> +> 如果需要 ,我们可以指定多个泛型,中间用 `,`隔开即可 +> +> ```java +> public class ClassName{ +> private T data1; +> private E data2; +> private A data3; +> private B data4; +> } +> ``` + diff --git a/source/_posts/Java流程控制.md b/source/_posts/Java流程控制.md new file mode 100644 index 0000000..86753a8 --- /dev/null +++ b/source/_posts/Java流程控制.md @@ -0,0 +1,283 @@ +--- +title: Java流程控制 +date: 2020-05-19 20:00:28 +tags: +- Java +categories: +- Java基础 +--- + +## 用户交互Scanner + +java.util.Scanner是Java5的新特征,我们可以通过Scanner 类来获取用户的输入。 + + + +```java +Scanner s = new Scanner(System.in); +if (s.hasNext){ + type name = s.next() +} +if (s.hasNextLine){ + type name = s.nextLine() +} +s.close() +``` + +通过 Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用 hasNext()与hasNextLine()判断是否还有输入的数据。 + +> 凡是属于IO流的类如果不关闭会一直占用资源,要习惯用完就关掉. + +下面来看一下`next()`方法和`nextLine()`方法的区别 + +`next()`: + +* 一定要读取到有效字符后才可以结束输入。 +* 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。 +* 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 +* next()不能得到带有空格的字符串。 + +`nextLine()`: + +* 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。 +* 可以获得空白。 + +```java +import java.util.Scanner; //导入Scanner工具类 + +public class Test { + public static void main(String[] args) { + //创建扫描器Scanner对象,用于接收键盘数据 + Scanner in1 = new Scanner(System.in); + Scanner in2 = new Scanner(System.in); + //in1和in2都输入“hello world” + + //判断用户有没有输入字符串 + if(in1.hasNext()){ + //使用next()方法接收 + String str1 = in1.next(); + System.out.println("用next()方法接收的输出:" + str1); + } + if(in2.hasNextLine()){ + //使用nextLine()方法接收 + String str2 = in2.nextLine(); + System.out.println("用nextLine()方法接收的输出:" + str2); + } + //凡是属于IO流的类如果不关闭会一直占用资源,要习惯用完就关掉 + in1.close(); + in2.close(); + } +} +``` + +上面代码运行结果如图所示: + + + +scanner工具中,还有hasNextInt()、hasNextFloat()等方法验证输入的类型,nextInt()、nextFloat()接收相关类型的输入。 + +> 拓展说明: +> +> `print()`和`println()`的区别: +> +> `println()`:输出完会换行 +> +> `print()`:输出完不会换行,内容都输出在一行 +> +> + +## 顺序结构 + +JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。 + +顺序结构是最简单的算法结构。 + + + +语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。 + +## 选择结构 + +### `if`选择结构 + +#### `if`单选择结构 + +我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用`if`语句来表示。 + + + +```java +if(布尔表达式){ + //如果布尔表达式为true将执行的语句 +} +``` + +#### `if`双选择结构 + +那现在有个需求,公司要收购一个软件,成功了,给人支付100万元,失败了,自己找人开发。这样的需求用一个`if`就搞不定了,我们需要有两个判断,需要一个双选择结构,所以就有了`if-else`结构。 + + + +```java +if(布尔表达式){ + //如果布尔表达式为true将执行的语句 +}else{ + //如果布尔表达式为false将执行的语句 +} +``` + +####`if`多选择结构 + +我们发现不管是单选择结构,还是双选择结构都不符合实际情况,真实的情况还可能存在ABCD,存在区间多级判断。比如90-100就是A,80-90就是B..等等,在生活中我们很多时候的选择也不仅仅只有两个,所以我们需要一个多选择结构来处理这类问题! + + + +```java +if(布尔表达式1){ + //如果布尔表达式1为true将执行的语句 +}else if(布尔表达式2){ + //如果布尔表达式2为true将执行的语句 +}else{ + //如果以上条件都不满足将执行的语句 +} +``` + + + +####嵌套的`if`结构 + +使用嵌套的`if...else` 语句是合法的。也就是说你可以在另一个`if `或者`else if `语句中使用`if`或者`else if` 语句。你可以像`if `语句一样嵌套 `else if...else`。 + +**嵌套 if 语句**,只有当外层 if 的条件成立时,才会判断内层 if 的条件。 + +```java +if(布尔表达式1){ + //如果布尔表达式1为true + if(布尔表达式2){ + //如果布尔表达式2为true将执行的语句 + }else{ + //如果布尔表达式2为false将执行的语句 + } +}else{ + //如果布尔表达式1为false 将执行的语句 +} +``` + +### `swich`多选择结构 + +多选择结构还有一个实现方式就是`switch case` 语句。 + +`switch case` 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。 + +```java +switch(expression){ + case value: + //语句 + break; + case value: + //语句 + break; + //可以有任意数量的case语句 + default: + //语句 +} +``` + +switch 语句中的变量类型可以是: + +* byte、short、int 或者char。 +* 从Java SE7开始,`switch` 支持字符串 String 类型了,同时 `case`标签必须为字符串常量或字面量。 + +## 循环结构 + +### `while`循环 + +```java +while(布尔表达式){ + //循环内容 +} +``` + +* 只要布尔表达式为true,循环就会一直执行下去。 +* 大多数情况是需要让循环停下来的,我们可以以让表达式失效的方式来结束循环。 +* 少部分情况需要循环一直执行,比如服务器的请求响应监听等。 +* 循环条件一直为true就会造成无限循环(死循环),我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死奔溃! + +### `do...while`循环 + +对于while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。 + +`do...while `循环和`while` 循环相似,不同的是,`do...while`循环至少会执行一次。 + +```java +do{ + //代码语句 +}while(布尔表达式); +``` + +While和do-While的区别: + +* `while`先判断后执行。`do…while`是先执行后判断! + +* `do...while`总是保证循环体会被至少执行一次!这是他们的主要差别。 + +### `for`循环 + +虽然所有循环结构都可以用 while或者do..while表示,但Java 提供了另一种语句-`for`循环,使一些循环结构变得更加简单。 + +for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。 + +for循环执行的次数是在执行前就确定的。语法格式如下: + +```java +for(初始化;布尔表达式;迭代){ + //代码语句 +} +``` + +> 关于for循环的几点说明: +> +> 1. 最先执行初始化步骤。可以声明一种类型,可初始化一个或多个循环控制变量,也可以是空语句。 +> +> 2. 然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。 +> +> 3. 执行一次循环后,更新循环控制变量(送代因子控制循环变量的增减)。 +> +> 4. 再次检测布尔表达式。循环执行上面的过程。 + +#### 增强型`for`循环 + +在java5中引入了一种主要用于数组或集合的增强型for循环。 + +```java +for(声明语句 : 表达式){ + //代码 +} +``` + +* **声明语句**:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。 + +* **表达式**:表达式是要访问的数组名,或者是返回值为数组的方法。 + +```java +public class ForDemo { + public static void main(String[] args) { + int[] ary = {10,20,30,40,50}; //定义一个数组 + //遍历数组中的元素 + for(int x : ary){ + System.out.println(x); + } + } +} +``` + +## 跳转语句 + +### break + +在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用) + +### continue + +continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。 + diff --git a/source/_posts/Java语法基础.md b/source/_posts/Java语法基础.md new file mode 100644 index 0000000..3af2442 --- /dev/null +++ b/source/_posts/Java语法基础.md @@ -0,0 +1,498 @@ +--- +title: Java语法基础 +date: 2020-05-16 19:39:06 +tags: +- Java +categories: +- Java基础 +--- + +## 注释、标识符,关键字 + +### 注释 + + + +平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。 + +注释并不会被执行,是给写代码的人看的。 + +写注释是一个很好的习惯 + +写代码要注意规范 + +Java的注释有三种:单行注释;多行注释;文档注释 + +```java +//单行注释 + +/* + 多行注释 + 多行注释 +*/ + +//JavaDoc:文档注释 /** */ +//javadoc命令是用来生成自己API文档的 +/** + * @author 作者名 + * @version 版本号 + * @since 指明需要最早使用的jdk版本 + * @param 参数名 + * @return 返回值情况 + * @throws 异常抛出情况 + */ +``` + +JavaDoc ,可通过终端命令生成Api文档 + +```bash +javadoc -encoding UTF-8 -charset UTF-8 *.java +``` + +也可以通过Intellij IDEA生成,在工具栏中找到 Tools------>Generate JavaDoc… + +![](https://i.loli.net/2020/05/15/5FeQRjBkPAirSKs.png) + +### 关键字 + +![Java关键字](https://i.loli.net/2020/05/11/EjmKrwpXdu632gI.png) + +### 标识符 + +Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 + +`标识符注意点:` + +* 所有的标识符都应该以字母(A-z或者a-z),美元符($)、或者下划线(_)开始 +* 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合。 +* 不能使用关键字作为变量名或方法名。 +* 标识符是大小写敏感的 +* 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low,不规范 + +```java +//合法标识符举例:age、$salary、value、_1_value +//非法标识符举例:123abc、-salary、#abc +//中文命名举例 +public static void main(string[]args){ + string 王者荣耀="最强王者"; + System.out.println(王者荣耀); +} +``` + + + +## 数据类型 + +Java是强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。 + +![](https://i.loli.net/2020/05/11/NucZLt9mwnkRMyA.png) + +```java +// 八大基本数据类型 +//整数 +int num1 = 10; +byte num2 = 20; +short num3 = 30; +long num3 = 30L; //long类型要在数字后加个 L +//小数:浮点数 +float num5 = 50.1F; //float类型要在数字后加个 F +double num6 = 3.1415926535; +//字符型 +char name1 = 'A'; //引号内只能有一个字符 +//布尔值:只有是(true)、非(false) 两个值 +boolean flag1 = true; +boolean flag2 = false; +``` + +> 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。 +> +> 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,1B(byte,字节)=8bit(位) +> +> 字符:是指计算机中使用的字母、数字、字和符号 +> +> 1bit表示1位,1Byte表示一个字节1B=8b。1024B=1KB,1024KB=1MB,1024MB=1GB… + +### 数据类型拓展 + +#### 整数拓展 + +进制问题: + +二进制 0b;十进制;八进制 0;十六进制 0x + +```java +int i = 0b10; //二进制 输出2 +int i1 = 10; //十进制 输出10 +int i2 = 010; //八进制 输出8 +int i3 = 0x10; //十六进制 输出16 +``` + +#### 浮点数拓展 + +float和double类型,表现的长度是有限的,同时它也是离散的,它存在`舍入误差`的问题,他的结果是一个大约数,接近但不等于。 + +尽量不要使用浮点数进行比较,尤其是在做涉及钱的业务时。 + +看下面的例子: + +```java +float f = 0.1f; //0.1 +double d = 1.0/10; //0.1 +System.out.println(f==d); //结果为false + +float d1 = 2132154645646f; +float d2 = d1 + 1; +System.out.println(d1==d2); //结果为true +``` + +我们可以看出,浮点数是存在误差的。 + +Java中,我们可以用`BigDecimal`这个数学工具类来执行上述的操作。 + +#### 字符拓展 + +所有字符本质还是数字 + +编码: Unicode码 u0000-uFFFF —>`UTF-8`,UTF-16,UTF-32 + +```java +//字符强制转换 +char c1 = 'a'; +char c2 = '中'; +System.out.println(c1); //输出 a +System.out.println((int)c1); //强制转换 输出 97 +System.out.println(c2); //输出 中 +System.out.println((int)c2); //输出 20013 + +char c3 = '\u0061'; //十六进制 +System.out.println(c3); //输出 a +``` + +转义字符 + +| 转义字符 | 作用 | +| :------: | :----------------------------------------------------------: | +| \n | 换行 | +| \t | 水平制表符 | +| \r | 回车,将当前位置移到本行开头 | +| \b | 退格,将当前位置移到前一列 | +| \f | 换页,将当前位置移到下页开头 | +| \\\ | 代表一个反斜线字符''\\' | +| \\' | 代表一个单引号(撇号)字符 | +| \\" | 代表一个双引号字符 | +| \0 | 空字符(NULL) | +| \ddd | 1到3位八进制数所代表的任意字符 \000 ~ \377 | +| \uxxxx | Unicode转义字符,\u + 四个十六进制数字所代表的字符 \u0000 ~ \uFFFF | + +#### 布尔值拓展 + +```java + boolean flag = true; +//下面的方式是同样的效果,都表示当flag为真时,做什么 +if (flag == true) {} +if (flag){} +``` + +Less is More,代码要精简易读 + +## 类型转换 + +由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。 + +```java +低--------------------------------------->高 +byte,short,char->int->long->float->double + //浮点数优先级一定大于整数 +``` + +运算中,不同类型的数据先转换为同一类型,然后进行运算。 + +```java + int i = 128; +//强制类型转换 (类型)变量名 高-->低 +byte b =(byte)i; //byte类型范围为-128-127,转换后内存溢出 +//自动类型转换 低-->高 +double d = i; +System.out.println(i); //输出 128 +System.out.println(b); //输出 -128 +System.out.println(d); //输出 128.0 + +System.out.println((int)23.7); //输出23 +System.out.println((int)-45.54f); //输出 -45 +``` + +注意: + +* 在类型转换时,要注意数据类型的取值范围,避免内存溢出。 +* 不能对布尔值进行转换 +* 不能把对象类型转换为不相干的类型 +* 转换时还可能存在精度问题,比如将浮点数转换为int类型,会舍去小数部分。 + +**操作比较大的数的时候,注意溢出问题** + +```java +//JDK7以后,数字之间可以用下划线分割,下划线并不会被打印出来 +int money = 10_0000_0000; +int year = 20; +int total = money * year; //输出total的值为-1474836480。因为结果超出了int的范围,溢出 +long total2 = money * year; +//输出total2的值为-1474836480。因为运算顺序是先计算等式右边的,再把结果转换为long类型赋值给total2,但转换之前的结果已经出问题了。 +long total3 = money*((long)year); +//这次total3的结果是正确的 先把一个数转换为long,这样等式右边计算时就是以long类型在计算,就不会发生溢出了 +``` + +## 变量、常量、作用域 + +### 变量 + +变量就是可以变化的量! + +Java是一种强类型语言,每个变量都必须声明其类型。 + +Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。 + +```java +type varNam [= value][{,varName[= value],...}]; +//数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量(不建议)。 +``` + +**注意:** + +* 每个变量都有类型,类型可以是基本类型,也可以是引用类型。 + +* 变量名必须是合法的标识符。 + +* 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。 + +#### 类变量、实例变量、局部变量 + +```java +public class Variable{ + static int allClicks = 0; //类变量 + String str = "hello world"; //实例变量 从属于对象 + public void method(){ + int i = 0; //局部变量,必须声明和初始化值,作用域仅限这个方法之内 + } +} +``` + +类变量:从属于类,作用域是在这个类内,随类一起出现,一起消失。 + +实例变量:从属于对象;如果不进行初始化,数值类型默认值为 0 | 0.0,char类型默认为一个空格,布尔类型默认值为false;除了基本类型,其余的默认都为 null。 + +局部变量,必须声明和初始化值,作用域仅限方法之内。 + +### 常量 + +常量(constant):初识化(initialize)后不能再改变值!不会变动的值。 + +所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。 + +常量名一般使用大写字符表示。 + +```java +final 常量名 = 值; +final double PI = 3.14; +``` + +> 说明:修饰符,不存在先后顺序, `final static double PI = 3.14`和`static final double PI = 3.14`是一样的。 + +### 变量的命名规范 + +* 所有变量、方法、类名:**见名知意** +* 类成员变量:首字母小写和驼峰原则:monthSalary +* 局部变量:首字母小写和驼峰原则 +* 常量:大写字母和下划线:MAX_VALUE +* 类名:首字母大写和驼峰原则:Man,GoodMan +* 方法名:首字母小写和驼峰原则:run(),runRun() + + + +## 运算符 + +Java语言支持如下运算符: + +```java +算术运算符: +,-,*,/,%,++,-- +赋值运算符: = +关系运算符: >,<,>=,<=,==,!=,instanceof +逻辑运算符: &&,||,! +位运算符: &,|,^,~,>>,<<,>>> +条件运算符: ? : +扩展赋值运算符:+=,-=,*=,/= +``` + +### 算数运算符 + +#### 基本运算符 + +```java ++(加),-(减),*(乘),/(除),%(模,取余) +``` + +```java +低--------------------------------------->高 +byte,short,char->int->long->float->double +``` + +不同类型相互运算时,结果的类型总是与要计算的数中优先级最高的那个数的类型保持一致,但最低为int,即当只有short、byte、char相互运算时,结果仍为int类型。 + +```java +public class Test { + public static void main(String[] args) { + double a = 123.123; + float b = 123.123F; + long c = 123123123123123L; + int d = 123; + short e = 10; + byte f =8; + char g = 'a'; + + System.out.println(getType(a+b+c+d+e+f+g)); //double类型 + System.out.println(getType(b+c+d+e+f+g)); //float类型 + System.out.println(getType(c+d+e+f+g)); //long类型 + System.out.println(getType(d+e+f+g)); //int + System.out.println(getType(e+f+g)); //int + System.out.println(getType(f+g)); //int + + //获取变量类型的方法 + private static String getType(Object o){ + return o.getClass().toString(); + } + +} +``` + +#### 自增自减运算符 + +```java +// ++ -- 自增,自减 一元运算符 +int a = 3; +int b = a++;//后置自增,执行这行代码时,先将a的值赋给b,a再自增 +System.out.println(a); // 4 +int c = ++a;//前置自增,执行这行代码时,先将a自增,再将自增后的结果赋给c +System.out.println(a); //5 +System.out.println(b); //3 +System.out.println(c); //5 +``` + +### 关系运算符 + +关系运算符计算后返回的结果是`布尔值`,常与`if`判断语句结合使用。 + +### 逻辑运算符 + +```java +// &&(与),||(或),!(非) +//逻辑与运算:两个变量都为真,结果才为true +//逻辑或运算:两个变量有一个为真,则结果才为true +//非:如果是真则变为假,如果是假则变为真 +boolean a = true; +boolean b = false; +System.out.println(a&&b); //false +System.out.println(a||b); //true +System.out.println(!(a&&b));//true + +//短路运算 +int c = 5; +boolean d = (c < 4)&&(c++ < 4); //如果&&前面的为false,则后面的不会被运算 +System.out.println(c); //5,说明c++没有被运算 +System.out.println(d); //false +``` + +### 位运算 + +``` +A和B都是二进制数 +A = 0011 1100 +B = 0000 1101 + +A&B = 0000 1100 按位与:都为1时为1,其他情况为0 +A|B = 0011 1101 按位或:都为0时为0,其他情况为1 +A^B = 0011 0001 按位异或:相同为0,不同为1 +~B = 1111 0010 按位取反 +_________________________________________________ + +<<:左移,每移一位相当于乘以2 +>>:右移,每移一位相当于除以2 +如 2<<3 = 16 +``` + +位运算由于是操作二进制数,所以效率极高。 + +### 扩展运算符 + +看下面例子 + +```java +a += b; //就相当于 a=a+b +a -= b; //就相当于 a=a-b +// 同样*=、/=也是这样的 +``` + +### 条件运算符 + +```tex +条件运算符是三元运算符 +x ? y : z +如果x为真,则结果为有,否则结果为z +``` + +### 运算符优先级 + +| 优先级 | 运算符 | 结合性 | +| ------ | -------------------------------------------------- | -------- | +| 1 | ()、[]、{} | 从左向右 | +| 2 | !、+、-、~、++、-- | 从右向左 | +| 3 | *、/、% | 从左向右 | +| 4 | +、- | 从左向右 | +| 5 | <<、>>、>>> | 从左向右 | +| 6 | <、<=、>、>=、instanceof | 从左向右 | +| 7 | ==、!= | 从左向右 | +| 8 | & | 从左向右 | +| 9 | ^ | 从左向右 | +| 10 | \| | 从左向右 | +| 11 | && | 从左向右 | +| 12 | \|\| | 从左向右 | +| 13 | ? : | 从右向左 | +| 14 | =、+=、-=、*=、/=、&=、\|=、^=、~=、<<=、>>=、>>>= | 从右向左 | + +### 拓展 + +1. 字符串连接符 + + + ```java + int a = 10; + int b = 20; + System.out.println("引号在前面"+a+b);// 输出 引号在前面1020 + System.out.println(a+b+"引号在后面");// 输出 30引号在后面 + ``` + +可见,如果字符串在前面,则它后面连接的内容不会进行运算,如果字符串在后面,则它前面连接的内容会进行运算。 + +2. 很多运算,我们需要一些工具类来操作!如下代码用`Math`类进行幂运算。 + + ```java + double power = Math.pow(2,3); //2的3次方,8.0 + ``` + +## 包机制 + +为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。 + +包语句的语法格式为: + +```java +package pkg1[. pkg2[. pkg3...]]; +``` + +一般利用公司域名倒置作为包名 + +为了能够使用某一个包的成员,我们需要在Java 程序中明确导入该包。使用`import`语句可完成此功能 + +```java +import package1[.package2...].(classname|*); +``` + + + diff --git a/source/_posts/Java面向对象基础.md b/source/_posts/Java面向对象基础.md new file mode 100644 index 0000000..2913656 --- /dev/null +++ b/source/_posts/Java面向对象基础.md @@ -0,0 +1,331 @@ +--- +title: Java面向对象基础 +date: 2020-09-30 12:17:29 +tags: +- Java +- 面向对象 +categories: +- Java基础 +--- + +## 初识面向对象 + +### 面向过程和面向对象 + +**面向过程思想:** + +* 是把模型分解成一步一步的过程。步骤清晰简单,第一步做什么,第二步做什么…… +* 面向过程适合处理一些较为简单的问题 + + + +**面向对象思想:** + +* 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 +* 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! + +对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路、来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。 + + + +### 什么是面向对象 + +面向对象编程(Object-Oriented Progrsmming,OOP)是一种通过对象的方式,把现实世界映射到计算机模型的一种编程方法。 + +**面向对象编程的本质就是:**以类的方式组织代码,以对象的形式封装数据。 + +**面向对象的核心思想:** + +* **三大思想:**面向对象思想从概念上讲分为以下三种OOA、OOD、OOP + * OOA:面向对象分析(Object Oriented Analysis) + * OOD:面向对象设计(Object Oriented Design) + * OOP:面向对象程序(Object Oriented Programming) + +* **抽象** +* **三大特性** + * 封装性:所有的内容对外部不可见 + * 继承性:将其他的功能继承下来继续发展 + * 多态性:方法的重载本身就是一个多态性的体现 + +从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。 + +从代码运行角度考虑是先有类后有对象。类是对象的模板。 + +## 方法 + +具体可参考 [java方法](http://pengspace.top/2020/05/30/Java方法/#more),此处只做一些补充说明 + +#### 方法的定义 + +##### 修饰符 + +##### 返回类型 + +##### break和return的区别 + +`break`:结束整个循环 + +`continue`:结束本次循环 + +`return`: 结束方法,返回一个结果 + +##### 方法名 + +注意规范,首字母小写和驼峰原则。见名知意 + +##### 参数列表 + +(参数类型,参数名)… + +##### 异常抛出 + +```java +修饰符 返回值类型 方法名(参数类型 参数名) throws 异常类型(如 IOException) { + ... + 方法体 + ... + return 返回值; +} +``` + +#### 方法的调用 + +##### 静态方法和非静态方法 + +非静态方法不能通过类名直接调用,若要调用非静态方法,必须先实例化该方法所在类的对象,通过对象来调用。 + +静态方法可以通过类名直接调用,也可以通过对象调用。 + +```java +//Demo.java +public class Demo { + public static void main(String[] args) { + Student.say1(); + //Student.say2(); 错误,非静态方法不能通过类名直接调用 + Student stu = new Student(); //实例化对象 + stu.say1(); + stu.say2(); + } +} +//Student.java +public class Student { + //静态方法 + public static void say1(){ + System.out.println("静态方法"); + } + //非静态方法 + public void say2(){ + System.out.println("非静态方法"); + } +} +``` + +静态方法是和类一起加载的,而非静态方法是在类实例化后才会起作用的,所以在类中,也不能在静态方法中去调用非静态方法 + +##### 形参与实参 + +> 形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。 +> +> 实际参数:在调用有参函数时,主调函数和被调函数有数据传递关系。在主调函数中调用一个函数时,函数后面括号中的参数称为“实际参数”。 + +```java +public class Demo { + public static void main(String[] args) { + Demo demo = new Demo(); + //实际参数和形式参数的类型要对应 + int add = demo.add(1,2); //1和2是实参 + } + public int add(int a,int b){ //a和b是形参 + return a+b; + } +} +``` + +实际参数是调用有参方法时真正传递的内容,而形式参数是用于接收实参内容的参数。 + +##### 值传递与引用传递 + +Java中都是值传递。 + +后续会专门写一篇来讲述Java为什么都是值传递。 + +## 类与对象 + +### 类与对象的关系 + +类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。比如Person类、Pet类、Car类等,这些类都是用来描述/定义某一类具体事物应该具备的特点和行为。 + +对象是抽象概念的具体实例。比如 你就是个人的具体实例,你家的旺财就是狗的一个具体实例。能够体现出特点、展现出功能的是具体的实例,而不是一个抽象的概念。 + +### 类的定义格式 + +```java +class 类名称{ + 成员属性 + 成员方法 +} + +属性定义格式: + 数据类型 属性名; +属性定义并赋值的格式: + 数据类型 属性名 = 初始化值; +方法定义格式: + 权限修饰符 返回值类型 方法名(形式参数列表){ + //方法体 + return 返回值; + } +``` + +### 对象的创建 + +使用`new`关键字创建对象。 + +使用`new`关键字创建对象的时候,除了为对象分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。 + +```java +一个类要想真正的进行操作,则必须依靠对象,对象的定义格式如下: + 类名称 对象名称 = new 类名称(); + +如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式: + 访问类中的属性: 对象.属性 ; + 调用类中的方法: 对象.方法(实际参数列表) ; +``` + +### 构造方法(构造器)详解 + +一个类中即使什么都不写,也可以实例化该类的对象,那是因为,类中默认存在一个方法,就是**构造器**。 + +类中的**构造器**也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点: + +* 必须和类的名字相同 +* 必须没有返回类型,也不能写void + +我们在使用`new`关键字实例化对象时,本质是在调用构造器,来初始化值。 + +构造器可以重载,但注意,一旦你定义了有参构造器,如果还想使用无参构造,无参构造器就必须也显式定义。 + +```java +//Person.java + +public class Person { + //一个类即使什么都不写,它也会存在一个方法 + //默认构造器 public Person(){} + String name; + //无参构造器 + public Person(){ + + } + //有参构造器:一旦定义了有参构造,无参构造器就必须显式定义 + public Person(String name){ + this.name = name; + } +} +//Application.java + +public class Application { + public static void main(String[] args) { + //new 实例化对象 + Person person = new Person(); + Person person1 = new Person("brian"); + System.out.println(person.name); //null + System.out.println(person1.name); //brian + } +} +``` + +### 匿名对象 + +```tex +没有对象名称的对象 就是匿名对象。 +匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被GC回收。 +只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到。 +``` + +```java +public class Application { + public static void main(String[] args) { + int num = new Math().sum(100,20); //匿名对象 + } +} +class Math { + int sum(int x,int y){ + return x+y; + } +} +``` + + + +## 创建对象内存分析 + +### 栈 + +> Java栈的区域很小 , 大概2m左右 , 特点是存取的速度特别快 +> +> 栈存储的特点是, 先进后出 +> +> 存储速度快的原因: +> +> 栈内存, 通过 '栈指针' 来创建空间与释放空间 ! +> +> 指针向下移动, 会创建新的内存, 向上移动, 会释放这些内存 ! +> +> 这种方式速度特别快 , 仅次于PC寄存器 ! +> +> 但是这种移动的方式, 必须要明确移动的大小与范围 , 明确大小与范围是为了方便指针的移动 , 这是一个对于数据存储的限制, 存储的数据大小是固定的 , 影响了程序 的灵活性 ~ +> +> 所以我们把更大部分的数据 存储到了堆内存中 +> +> +> +> 存储的是: +> +> ​ 基本数据类型的数据 以及 引用数据类型的引用! +> +> ​ 例如: +> +> ​ int a =10; +> +> ​ Person p = new Person(); +> +> ​ 10存储在栈内存中 , 第二句代码创建的对象的引用(p)存在栈内存中 + +### 堆 + +> 存放的是类的对象 . +> +> Java是一个纯面向对象语言, 限制了对象的创建方式: +> +> ​ 所有类的对象都是通过new关键字创建 +> +> new关键字, 是指告诉JVM , 需要明确的去创建一个新的对象 , 去开辟一块新的堆内存空间: +> +> 堆内存与栈内存不同, 优点在于我们创建对象时 , 不必关注堆内存中需要开辟多少存储空间 , 也不需要关注内存占用 时长 ! +> +> 堆内存中内存的释放是由GC(垃圾回收器)完成的 +> +> 垃圾回收器 回收堆内存的规则: +> +> ​ 当栈内存中不存在此对象的引用时,则视其为垃圾 , 等待垃圾回收器回收 ! + +### 方法区 + +> 存放的是 +> +> - 类信息 +> - 静态的变量 +> - 常量 +> - 成员方法 +> +> 方法区中包含了一个特殊的区域 ( 常量池 )(存储的是使用static修饰的成员) + +### PC寄存器 + +> PC寄存器保存的是 当前正在执行的 JVM指令的 地址 ! +> +> 在Java程序中, 每个线程启动时, 都会创建一个PC寄存器 ! + +### 本地方法栈 + +> 保存本地(native)方法的地址 ! + diff --git a/source/_posts/Java面向对象进阶.md b/source/_posts/Java面向对象进阶.md new file mode 100644 index 0000000..e8342f6 --- /dev/null +++ b/source/_posts/Java面向对象进阶.md @@ -0,0 +1,569 @@ +--- +title: Java面向对象进阶 +date: 2020-10-04 14:12:29 +tags: +- Java +- 面向对象 +categories: +- Java基础 +--- + +> **static关键字** +> +> static表示“静态”的意思,可以用来修饰成员变量和成员方法。 +> +> static的主要作用在于创建独立于具体对象的域变量或者方法 +> +> +> +> 简单理解: +> +> ​ 被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。 并且不会因为对象的多次创建而在内存中建立多份数据 +> +> **注意** +> +> 1. 静态成员在类加载时加载并初始化。 +> 2. 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份(可以理解为所有对象公用 ) +> 3. 在访问时:静态不能访问非静态 , 非静态可以访问静态 ! 静态资源的执行时机可能早于非静态资源,一定不会晚于非静态资源 + +> **final关键字** +> +> final表示“最终”的意思,可以用来修饰属性、变量、类和方法 +> +> final修饰的属性、变量就成为了常量,无法对其再次进行赋值。final 修饰的局部变量,只能赋值一次(可以先声明后赋值);final修饰的成员属性,必须在声明时赋值! +> +> 全局常量:`public static final 数据类型 变量名` +> +> final修饰的类不可以被继承 +> +> final修饰的方法不能被子类重写 + +> **代码块** +> +> ``` +> 普通代码块 +> 在执行的流程中出现的代码块,我们称其为普通代码块。 +> 构造代码块 +> 在类中的成员代码块,我们称其为构造代码块,在每次对象创建时执行,执行在构造方法之前。 +> 静态代码块 +> 在类中使用static修饰的成员代码块,我们称其为静态代码块,在类加载时执行。 每次程序启动到关闭,只会执行一次的代码块。 +> 同步代码块 +> 在后续多线程技术中学习。 +> +> 面试题: +> 构造方法与构造代码块以及静态代码块的执行顺序: +> 静态代码块 --> 构造代码块 --> 构造方法 +> ``` +> +> + +> **mian()方法详解** +> +> `public static void main(String args[])` +> +> 以上的各个参数的含义如下: +> +> ​ public:表示公共的内容,可以被所有操作所调用 +> +> ​ static:表示方法是静态的,可以由类名称直接调用。 +> +> ​ void:表示没有任何的返回值操作 +> +> ​ main:系统规定好的方法名称。如果main写错了或没有,会报错:NoSuchMethodError: main +> +> ​ String[] args:字符串数组,接收参数的 + +## 面向对象的三大特征(抽象) + +### 封装 + +该露的露,该藏的藏。我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉,低耦合就是仅暴漏少量的方法给外部使用。 + +封装(数据的隐藏)。通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称之为信息隐藏。 + +总之就是:**属性私有,get/set** + +```java +//Student.java +public class Student { + //属性:私有 private + private String name;//名字 + private int idNum;//学号 + private char sex;//性别 + + //提供一些可以操纵私有属性的方法 + + //set 设置值 + public void setName(String name){ + this.name = name; //this关键字:this指当前对象 + } + //get 获取值 + public String getName(){ + return this.name; + } + public void setIdNum(int id){ + this.idNum = id; + } + public int getIdNum(){ + return this.idNum; + } + + public void setSex(char sex){ + this.sex = sex; + } + public char getSex(){ + return this.sex; + } + public int getAge() { + return age; + } + public void setAge(int age) { + if(age>120 || age < 0){ + this.age = 3; + }else { + this.age = age; + } + } +} +//Application.java +public class Application { + public static void main(String[] args) { + Student stu1 = new Student(); + + stu1.setName("brian"); + System.out.println(stu1.getName()); + stu1.setAge(20); + System.out.println(stu1.getAge()); + } +} +``` + +> Idea快捷方式 Alt+Insert : 自动生成get/set方法 + +> 在Java基础中,this关键字是一个最重要的概念。使用this关键字可以完成以下的操作: +> +> * 调用类中的属性 +> * 调用类中的方法或构造方法 +> * 表示当前对象 + +> **权限修饰符** +> +> | 修饰符 | 类 | 包 | 子类 | 其他包 | +> | --------- | ---- | ---- | ---- | ------ | +> | public | √ | √ | √ | √ | +> | protected | √ | √ | √ | × | +> | default | √ | √ | × | × | +> | private | √ | × | × | × | +> +> 如上表所示,public修饰的资源可以被其所在类,所在包,所在类的子类和其他包访问,protecte修饰的资源不可以被其他包访问,default修饰的资源只能被其所在类,所在包访问,而private修饰的资源只能被其所在类访问 + +### 继承 + +继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。 + +Java中类只有单继承,多重继承,没有多继承! + +继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。 + +private 类型的属性和方法不可被继承,也就是说子类不能调用父类私有的属性和方法。 + +**object**类:在Java类,所有的类都默认直接或者间接继承Object类 + +**super**:类似this,this指示的是当前对象,super指示的是其父类对象。通过supe,可以访问父类的构造方法、父类的属性和父类的方法。使用super调用了父类构造方法时,必须要在子类构造器的第一行 + +在我们创建子类对象时,内存中会先创建父类对象,再创建子类对象,子类会通过super关键字拥有父类的地址,来调用父类中可使用的属性和方法。 + +```java +//Person.java +package top.oop.demo05; +//父类 +public class Person { + protected String name = "Brian"; + public Person() { + System.out.println("Person父类的无参构造执行了"); + } + + public void print(){ + System.out.println("Person"); + } +} +//Student.java +package top.oop.demo05; +//子类 +public class Student extends Person{ + public Student() { + //隐藏代码:调用了父类的无参构造。若要写,必须要在子类构造器的第一行。如果父类没有无参构造,则super(参数...)不可被省略。 + super(); + System.out.println("Student子类的无参构造执行了"); + //super(); 错误。 + } + + private String name = "ZhangSan"; + public void test(String name){ + System.out.println(name); + System.out.println(this.name);//ZhangSan + System.out.println(super.name);//Brian + } + public void print(){ + System.out.println("Student"); + } + public void test1(){ + print(); + this.print(); + super.print(); + } +} + +//Application.java +package top.oop; +import top.oop.demo05.Student; +public class Application { + public static void main(String[] args) { + Student stu = new Student(); + /* + *结果: + Person父类的无参构造执行了 + Student子类的无参构造执行了 + */ + stu.test("张三"); + /* + *结果: + 张三 + ZhangSan + Brian + */ + stu.test1(); + /* + *结果: + Student + Student + Person + */ + } +} +``` + +> 注意: +> +> 1. super调用父类的构造方法,必须在子类构造方法的第一个! +> 2. super必须只能出现在子类的方法或者构造方法中! +> 3. super和this不能同时调用构造方法! +> +> super VS this +> +> * 代表的对象不同: +> * this : 本身调用者这个对象 +> * super : 代表父类对象的应用 +> * 前提: +> * this 没有继承也可以使用 +> * super : 只能在继承条件下才能使用 +> * 构造方法: +> * this() : 本类的构造 +> * super() : 父类的构造 + +#### 方法重写: + +规则: + +- **参数列表必须完全与被重写方法的相同。** +- 一般情况下,**返回值类型必须完全与被重写方法的返回值类型相同**;当返回值为**类类型**时,重写的方法返回值可以不同,但**必须是父类方法返回值的子类**。 +- **访问权限不能比父类中被重写的方法的访问权限更低**。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。 +- 父类的成员方法只能被它的子类重写。 +- 声明为 final 的方法不能被重写。 +- 声明为 static 和 private 的方法不能被重写,但是能够被再次声明。 +- 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。 +- 子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。 +- 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常。 +- 构造方法不能被重写。 +- 如果不能继承一个方法,则不能重写这个方法。 + +```java +//B.java +package top.oop.demo05; +public class B { + public void test(){ + System.out.println("B->test()"); + } +} + +//A.java +package top.oop.demo05; + +public class A extends B{ + @Override //重写 + public void test() { + System.out.println("A->test()"); + } +} + +//Application.java +package top.oop; +import top.oop.demo05.A; +import top.oop.demo05.B; + +public class Application { + //静态方法:方法的调用只和左边定义的数据类型有关 + //非静态方法:重写 + public static void main(String[] args) { + + A a = new A(); + a.test(); //结果:A->test() + //父类的引用指向子类 + B b = new A(); + b.test(); //子类重写了父类的方法 结果:A->test() + } +} +``` + + + +> **为什么需要重写?** +> +> 1. 父类的功能,子类不一定需要,或者不一定满足。 + +> Idea快捷方式 Ctrl+H : 显示继承关系 + +> **重写(override)与重载(overload)的区别** +> +> 1. 重载发生在一个类中,重写发生在子父类中 +> 2. 重载参数列表必须不同,重写的参数列表必须相同 +> 3. 重载与返回值类型无关,重写的返回值类型必须一致或是父类的子类 +> 4. 重载与访问权限无关,重写中,子类的方法的访问权限不能小于父类中被重写方法的权限 +> 5. 重载与异常无关,重写的方法不能抛出新的异常,或者比被重写方法声明的更广泛的异常 + +### 多态 + +多态即同一方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多 + +多态存在的条件: + +* 有继承关系 +* 子类重写父类方法 +* 父类引用指向子类对象 `Father f1 = new Son();` + +> **注意:** +> +> 1. 多态是方法的多态,属性没有多态性 +> 2. 父类和子类,有联系,若无,则会报异常(类型转换异常:ClassCastException) + +> 有些方法无法重写: +> +> 1. static 方法 属于类,不属于实例对象 +> 2. final +> 3. private 方法 + +```java +//Person.java 父类 +package top.oop.demo06; +public class Person { + public void run() { + System.out.println("run"); + } +} +//Student.java 子类 +package top.oop.demo06; +public class Student extends Person{ + @Override + public void run() { + System.out.println("son"); + } + public void eat() { + System.out.println("eat"); + } +} +//Application.java 测试类 +package top.oop; +import top.oop.demo06.Person; +import top.oop.demo06.Student; +public class Application { + public static void main(String[] args) { + //一个对象的实际类型是确定的,可以指向的引用类型就不确定了 + + // Person 父类,可以指向子类,但不能调用子类独有的方法 + Person p1 = new Person(); //Person对象 + Person s2 = new Student(); //Student对象 父类的引用指向子类 + // Student 能调用的方法都是自己的或者继承父类的! + Student s1 = new Student(); //Student对象 + + + p1.run(); //run 执行Person类的方法 + s2.run(); //son 子类重写了父类的方法,执行子类Student类的方法 + s1.run(); //son + //s2.eat(); 错误:s2的引用类型为Person类型 它不能调用子类独有的方法 + s1.eat(); //eat 执行Student类的方法 + } +} +``` + + + +> **扩展: `instanceof`和类型转换** +> +> **`instanceof`** +> +> 关键字 `instanceof` : Java 的一个二元操作符,类似于 ==,>,< 等操作符。 +> +> 它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。 +> +> ```java +> boolean result = obj instanceof Class +> ``` +> +> 其中 obj 为一个对象,Class 表示一个类或者一个接口,当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。 +> +> 注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。 +> +> **1. obj必须为引用类型,不能是基本类型** +> +> ```java +> int i = 0; +> System.out.println(i instanceof Integer);//编译不通过 +> System.out.println(i instanceof Object);//编译不通过 +> ``` +> +> instanceof运算符只能用作对象的判断。 +> +> **2. obj 为 null** +> +> ```java +> System.out.println(null instanceof Object);//false +> ``` +> +> 关于 null 类型的描述在官方文档:https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.1 有一些介绍。一般我们知道Java分为两种数据类型,一种是基本数据类型,有八个分别是 byte short int long float double char boolean,一种是引用类型,包括类、接口、数组等等。而Java中还有一种特殊的 null 类型,该类型没有名字,所以不可能声明为 null 类型的变量或者转换为 null 类型,null 引用是 null 类型表达式唯一可能的值,null 引用也可以转换为任意引用类型。我们不需要对 null 类型有多深刻的了解,我们只需要知道 null 是可以成为任意引用类型的**特殊符号**。 +> +> 在 [JavaSE规范](https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.20.2) 中对 instanceof 运算符的规定就是:如果 obj 为 null,那么将返回 false。 +> +> **3. obj为class类的实例对象** +> +> ```java +> Integer integer = new Integer(1); +> System.out.println(integer instanceof Integer);//true +> ``` +> +> **4. obj为class接口的实现类** +> +> 集合中有个上层接口 List,其有个典型实现类 ArrayList +> +> ```java +> public class ArrayList extends AbstractList +> implements List,RandomAccess,Cloneable,java.io.Serializable +> ``` +> +> 所以我们可以用 instanceof 运算符判断 某个对象是否是 List 接口的实现类,如果是返回 true,否则返回 false +> +> ```java +> ArrayList arrayList = new ArrayList(); +> System.out.println(arrayList instanceof List);//true +> ``` +> +> 或者反过来也是返回 true +> +> ```java +> List list = new ArrayList(); +> System.out.println(list instanceof ArrayList);//true +> ``` +> +> **5. obj为class类的直接或间接子类** +> +> 新建一个父类 Person,然后在创建它的一个子类 Man +> +> ```java +> public class Person{ +> +> } +> ``` +> +> ```java +> public class Man extends Person{ +> +> } +> ``` +> +> 测试: +> +> ```java +> Person p1 = new Person(); +> Person p2 = new Man(); +> Man m1 = new Man(); +> System.out.println(p1 instanceof Man);//false +> System.out.println(p2 instanceof Man);//true +> System.out.println(m1 instanceof Man);//true +> ``` +> +> 注意第一种情况, `p1 instanceof Man` ,Man 是 Person 的子类,Person 不是 Man 的子类,所以返回结果为 false。 +> +> ###### 引用类型转换 +> +> java的引用类型转换分为两种: +> +> 1. 向上类型转换,是小类型到大类型的转换 ,子类转换为父类,可能会丢失自己本来的一些方法 +> +> 2. 向下类型转换,是大类型到小类型的转换 (强制转换) 父类转化为子类 +> +> **引用类型的强转条件** : 把父类类型(直接父类+间接父类) ---> 子类类型 +> +> A x = (A)B; 只要B是A的父类,此句代码编译通过 +> +> **强转的意义**:把父类类型强转为子类类型,在编译期可以调用子类的字段与方法(父类的字段与方法子类都能直接继承,但是子类有的父类有可能没有)==>强转之后,父类与子类的字段与方法都可以使用 +> +> 现存在一个Person类,Student子类和Teacher子类继承于Person父类; +> +> ```java +> public class Person { +> public void run() { +> System.out.println("father class:run"); +> } +> } +> public class Student extends Person { +> public void go() { +> System.out.println("son Student class:go"); +> } +> } +> public class Teacher extends Person { +> +> } +> ``` +> +> 实例化一个student对象,如下: +> +> ```java +> Student s = new Student(); //使用子类引用实例化子类对象 +> //Teacher t = (Teacher)s; //不能转,因为Student 与 Teacher没有继承关系 +> Person p = s; //此时为向上引用转换,小类型转换为大类型,自动转换,并没有风险 +> //p.go(); //错误,Person引用类型不能调用子类独有的方法 +> Person ps = new Person(); +> //Student s2 = (Student)ps; //引用类型的大转小,强制转换. +> ``` +> +> 向下引用转换应该先判断类型是否一致,利用java的instanceof关键字判断。instanceof运算符用法:判断是一个实例对象是否属于一个类,是返回true,否则返回false。 +> +> ```java +> Person p2 = new Student(); +> if(p2 instanceof Teacher) { //判断p2是否是Teacher类型的对象 +> Teacher tea = (Teacher)p2; +> }else if(p2 instanceof Student) { //判断p2是否是Student类型的对象 +> Student stu = (Student)p2; +> } +> /* +> 在实际项目中,p2的值可能是new Student()|new Teacher()|new Person(). 如果值是new Teacher()则把该对象p2强转为Teacher类型 +> 问题:如何判断p2的值到底是new的哪个类对象? +> 方案:使用instanceof. instanceof:判断指定变量是否是指定类型的对象。 +> 当前场景:判断 p2 是否是 Teacher类型 的对象。 +> 语法:指定变量 instanceof 指定类型。 返回false:不是指定类型的对象 , 反之则反 +> 在运行期有效。 +> */ +> ``` +> +> 但是当子类实例对象统一放进父类引用对象数组时,若要使用子类中的方法,必须先向下转换类型为子类引用,不然编译器会报错 +> +> ```java +> Person[] people = { +> new Student(), +> new Teacher() +> }; +> //people[0].go(); //报错 +> if(people[0] instanceof Student) { +> ((Student)people[0]).go(); //son Student class:go +> } +> ``` + diff --git a/source/_posts/Java面向对象高级.md b/source/_posts/Java面向对象高级.md new file mode 100644 index 0000000..491f9c8 --- /dev/null +++ b/source/_posts/Java面向对象高级.md @@ -0,0 +1,671 @@ +--- +title: Java面向对象高级 +date: 2020-10-06 14:51:51 +tags: +- Java +- 面向对象 +categories: +- Java基础 +--- + +## 抽象类 + +### 概念 + +有时候我们需要这样一个类,它不需要被实例化,也不需要实现完整的方法,它只是用来被继承的,用来限制子类的一个“规范”。这样的类我们就可以将它定义为**抽象类**,抽象类内的方法可以定义为**抽象方法**。 + + + +```java +抽象类必须使用abstract class声明 +一个抽象类中可以没有抽象方法。抽象方法必须写在抽象类或者接口中 +只声明而未实现的方法称为抽象方法(未实现是指:没有“{}“方法体),抽象方法必须使用abstract关键字声明。 + +格式: + abstract class 类名{ //抽象类 + public abstract 返回值类型 方法名(); //抽象方法,只声明而未实现 + } +``` + +> **注意:** +> +> 在抽象类的使用中有几个原则: +> +> * 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成。 +> * 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则**必须覆写(重写)**抽象类中的全部抽象方法。 +> +> 常见的问题: +> +> * 抽象类不能使用final声明,因为final修饰的类是不能有子类的 ,而抽象类必须有子类才有意义。 +> * 抽象类能有构造方法,而且子类对象实例化的时候的流程与普通类的继承是一样的,都是要先调用父类中的构造方法(默 认是无参的),之后再调用子类自己的构造方法。 + +### 抽象类与普通类的区别 + +1. 抽象类必须用public或protected修饰(如果为private修饰,那么子类则无法继承,也就无法实现其抽象方法)。默认缺省为 public +2. 抽象类不可以使用new关键字创建对象,但是在子类创建对象时,抽象父类也会被JVM实例化。 +3. 如果一个子类继承抽象类,那么必须实现其所有的抽象方法。如果有未实现的抽象方法,那么子类也必须定义为abstract类 + +```java +//Person.java 抽象类 +public abstract class Person { + public Person(){ //抽象类可以有构造方法 + System.out.println("抽象类的构造方法执行了"); + } + public abstract void run(); //抽象方法 +} +//Student.java 子类 +class Student extends Person { + @Override + public void run() { + System.out.println("Student.run"); + } +} +//Application.java 测试类 +public class Application { + public static void main(String[] args) { + //可以定义Person对象变量,但它只能引用非抽象子类的对象 + Person p = new Student(); //Student对象 父类的引用指向子类 + p.run(); + } +} +``` + +```tex +以上代码的运行结果为: + 抽象类的构造方法执行了 + Student.run +说明抽象类可以有构造方法,在new一个抽象类的非子类对象时,JVM会默认先执行抽象 +类的构造方法。虽然我们不能new抽象类对象,但我们可以通过子类来操作抽象类中的资源。 +``` + +## 接口 + +### 接口的概念及定义 + +如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接 口。 定义格式: + +```java +interface 接口名称{ + 全局常量 ; + 抽象方法 ; +} +``` + +> **面向接口编程思想** +> +> 接口是定义(规范,约束)与实现(名实分离的原则)的分离的思想。 +> +> 优点: +> +> 1. 降低程序的耦合性 +> 2. 易于程序的扩展 +> 3. 有利于程序的维护 + +```java +因为接口本身都是由全局常量和抽象方法组成,所以接口中的成员定义可以简写: + 1.全局常量编写时,可以省略 public static final 关键字,例如: + public static final String INFO = "内容" ; + 简写后: + String INFO = "内容" ; + 2.抽象方法编写时,可以省略 public abstract 关键字,例如: + public abstract void print() ; + 简写后: + void print() ; +``` + +### 接口的实现 implements + +接口可以多实现,格式: + +```java +class 子类 implements 父接口1,父接口2...{ + +} +``` + +以上的代码称为接口的实现。那么如果一个类即要实现接口,又要继承抽象类的话,则按照以下的格式编写 即可: + +```java +class 子类 extends 父类 implements 父接口1,父接口2...{ + +} +``` + +> 如果一个接口要想使用,必须依靠子类。 子类(如果不是抽象类的话)要实现接口中的所有抽象方法。 + +```java +//Person.java 接口 +public interface Person { + //int AGE = 10; //简写全局常量 + void say(); //简写抽象方法 + String getName(); +} +//Student.java +public class Student implements Person{ //实现接口 + private String name; + public Student(){} + public Student(String name){ + this.name = name; + } + @Override + public void say() { + System.out.println(getName() + "say"); + } + @Override + public String getName() { + return this.name; + } +} +//Application.java 测试类 +public class Application { + public static void main(String[] args) { + Person p = new Student(); //Student对象 父类的引用指向子类 + p.run(); + } +} +``` + +### 接口的继承 + +接口因为都是抽象部分, 不存在具体的实现, 所以允许多继承,例如: + +```java + interface C extends A,B{ + + } +``` + +继承相当于扩展了接口的方法 + +### default方法 + +JDK1.8之后规定,在接口中,可以定义default方法。例如,把Person中的say()方法改为default方法 + +```java +//Person.java 接口 +public interface Person { + + String getName(); //简写抽象方法 + default void say(){ + System.out.println(getName() + "say"); + } +} +//Student.java +public class Student implements Person{ //实现接口 + private String name; + public Student(){} + public Student(String name){ + this.name = name; + } + @Override + public String getName() { + return this.name; + } +} +//Application.java 测试类 +public class Application { + public static void main(String[] args) { + Person p = new Student("Li Ming"); //Student对象 父类的引用指向子类 + p.run(); + } +} +``` + +实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。 + +### 接口与抽象类的区别 + +1. 抽象类要被子类继承,接口要被类实现。 +2. 接口只能声明抽象方法,抽象类中可以声明抽象方法,也可以写非抽象方法。 +3. 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。 +4. 抽象类使用继承来使用, 无法多继承。 接口使用实现来使用, 可以多实现 +5. 抽象类中可以包含static方法 ,但是接口中不允许(静态方法不能被子类重写,因此接口中不能声明 静态方法) +6. 接口不能有构造方法,但是抽象类可以有 + +## Object 类 + +### 概念 + +Object类是所有类的父类(基类),如果一个类没有明确的继承某一个具体的类,则将默认继承Object类。例如我们定义一个类: + +```java +public class Person{ } +``` + +其实它被使用时 是这样的: + +```java +public class Person extends Object{ } +``` + +> **使用Object可以接收任意的引用数据类型** + +### Object类中常用的方法 + +#### toString + +建议重写Object中的toString方法。 此方法的作用:返回对象的字符串表示形式。 + +Object的toString方法, 返回对象的内存地址 + +类`Object`的`toString`方法返回一个字符串,该字符串由对象为实例的类的名称,字符“ `@` ”以及对象的哈希码的无符号十六进制表示形式组成。 换句话说,此方法返回一个等于值的字符串: + +```java +getClass().getName() + '@' + Integer.toHexString(hashCode()) +``` + +```java +//Person.java +package top.oop.demo09; +public class Person { + private String name; + private int age; + private int id; //唯一标识符 + public Person(String name, int age,int id) { + this.name = name; + this.age = age; + this.id = id; + } + public Person() {} + // getter和setter方法省略,若想放入ide中测试,请自行添加 +} +//Application.java 测试类 +package top.oop.demo09; + +public class Application { + public static void main(String[] args) { + Person p = new Person("Li Ming",18); + System.out.println(p.toString()); //top.oop.demo09.Person@27f674d + } +} +``` + +可以看出,如果不重写toString(),那打印的结果明显不能体现出我们所创建的对象的特征。所以建议在类中去重写toString()方法。 + +我们可以在Person中重写toString()方法。 + +```java +@Override +public String toString(){ + return ("这是一个人,他叫" + this.name + "," + this.age + "岁了"); +} +``` + +#### equals + +先来看一段代码 + +```java +//Person.java 看上面toString中的Person.java + +//Application.java 测试类 +package top.oop.demo09; + +public class Application { + public static void main(String[] args) { + Person p1 = new Person("Li Ming",18); + Person p2 = new Person("Li Ming",18); + System.out.println(p1 == p2); //false + } +} +``` + +我们可以看出p1和p2的内容信息是完全一样的,但我们用 `== `比较时,会返回false。其实这也很好理解,每当我们new一个对象时就会在内存中开辟一块空间,也就是说p1和p2指向的是不同的内存地址,程序当然会判定他们不等。 + +但我们总需要对对象的信息进行比较,这时我们可以重写Object中的equals()方法来解决。不能直接用,直接用相当于还是在用`==` 比较。可以看Object中equals方法的源码如下: + +```java +public boolean equals(Object obj) { + return (this == obj); +} +``` + +建议重写Object中的equals(Object obj)方法,此方法的作用:指示某个其他对象是否“等于”此对象。 + +Object的equals方法:实现了对象上最具区别的可能等价关系; 也就是说,对于任何**非空引用**值x和y,当且仅当 x和y引用同一对象( x == y具有值true )时,此方法返回true 。 + +> equals方法重写时的五个特性: +> +> * 自反性 :对于任何非空的参考值x , x.equals(x)应该返回true 。 +> * 对称性 :对于任何非空引用值x和y,x.equals(y)应该返回true当且仅当y.equals(x)回报true 。 +> * 传递性 :对于任何非空引用值x ,y和z ,如果x.equals(y)返回true且y.equals(z)返回true ,那么 x.equals(z)应该返回true 。 +> * 一致性 :对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,前提是未修改对象上的equals比较中使用的信息。 +> * 非空性 :对于任何非空的参考值x , x.equals(null)应该返回false 。 + +equals一般根据我们的业务进行重写,举个例子,我们可以在Person类中重写equals方法,当唯一标识符id相等时,我们就认为这两个对象相等 + +```java +@Override +public boolean equals(Object obj) { + if(this == obj) //如果传入的对象与当前对象内存地址一样,那一定是相同的 + return true; + } + if(obj == null){ //如果传入的对象为空,根据非空性,返回false + return false; + } + if(o instanceof Person){ //如果传入的对象与当前对像类型相同 + Person p2 = (Person)obj; //将obj对象强转为Person对象 + if(this.id == p2.id){ + return true; + }else{ + return false; + } + }else{ + return false; + } +} + +``` + +以上代码可以进行简化,如下: + +```java +@Override +public boolean equals(Object obj) { + //如果传入的对象与当前对象内存地址一样,那一定是相同的 + if(this == obj){ + return true; + } + //如果传入的对象为空或与当前对象类型不同,返回false + if(obj == null || !(obj instanceof Person){ + return false; + } + Person p = (Person)obj; //将obj对象强转为Person对象 + return (this.id == p.id); +} +``` + +> IDEA 快捷键 `Alt+Inster `可以自动重写equals方法和toString方法 + +## 内部类 + +在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。 + +广泛意义上的内部类一般来说包括这四种: + +1. 成员内部类 +2. 局部内部类 +3. 匿名内部类 +4. 静态内部类 + +###成员内部类 + +**定义:**成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: + +```java +class Outer { + private double x = 0; + public Outer(double x) { + this.x = x; + } + class Inner { //成员内部类 + public void say() { + private double x = 200; //与外部类同名的变量 + System.out.println("x="+ x); // x = 200.0 + System.out.println("x=" + Outer.this.x); //访问外部类的同名成员 + } + } +} +``` + +**特点:** + +成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问: + +```java +外部类.this.成员变量 +外部类.this.成员方法 +``` + +**成员内部类的使用:** + +以上面定义的Outer类为例,来看如何让使用它里面的内部类 + +```java +public class TestInner { + public static void main(String[] args) { + Outer outer = new Outer(100); + Outer.Inner inner = outer.new Inner(); + inner.say(); + /*结果: + * x = 200.0 + * x = 100.0 + */ + } +} +``` + +###局部内部类 + +局部内部类是**定义在一个方法或者一个作用域里面的类**,它和成员内部类的区别在于**局部内部类的访问仅限** +**于方法内或者该作用域内**。例如: + +```java +class Person{ + public Person() { } +} + +class Man{ + public Man(){ } + public People getPerson(){ + class Student extends People{ //局部内部类 定义在了getPerson方法内 + int age =0; + } + return new Student(); + } +} +``` + +> **注意:**局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及 +> static修饰符的。 + +下面我们使用系统的某个API,来演示局部内部类的使用。 + +```java +import java.awt.Frame; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; + +public class LocalInnerClass { + public static void main(String[] args) { + Frame f = new Frame("登录"); //新建一个窗体 + f.setVisible(true); //设置是否显示 + f.setSize(300,200); //设置大小 + class MyWindowListener implements WindowListener { //局部内部类 + @Override + public void windowOpened(WindowEvent e) { + } + @Override + public void windowClosing(WindowEvent e) { + System.out.println("关闭窗口"); + System.exit(0); //关闭窗口操作 + } + @Override + public void windowClosed(WindowEvent e) { + } + @Override + public void windowIconified(WindowEvent e) { + } + @Override + public void windowDeiconified(WindowEvent e) { + } + @Override + public void windowActivated(WindowEvent e) { + } + @Override + public void windowDeactivated(WindowEvent e) { + } + } + MyWindowListener l = new MyWindowListener(); + f.addWindowListener(l); //窗口监听器,需要传入一个实现WindowListener接口的类类型 + } +} + +``` + +### 匿名内部类 + +匿名内部类由于没有名字,只能使用一次。创建格式如下: + +```java +new 父类构造器(参数列表)|实现接口() +{ + //匿名内部类的类体部分 +} +``` + +在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的引用。这个引用是隐式的。 + +> 在使用匿名内部类的过程中,我们需要注意如下几点: +> +> 1. 使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能 +> 继承一个类或者实现一个接口。 +> 2. 匿名内部类中是不能定义构造函数的。 +> 3. 匿名内部类中不能存在任何的静态成员变量和静态方法。 +> 4. **匿名内部类为局部内部类**,所以局部内部类的所有限制同样对匿名内部类生效。 +> 5. 匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。 +> 6. 和局部内部类一样,只能访问final型的局部变量,因为内部类会被单独编译成一个字节码文件,为了保障这个单独的文件中用到的内部类外部的变量与内部类外部的变量的值绝对一致,系统从规则上限制这个值不可以被更改。 + +```java +//Person接口 +public interface Person { + void say(); +} +//匿名内部类演示 +public class NoNameInnerClass { + public static void main(String[] args) { + final int a = 10; //jdk1.8以后可以省略final + int b = 1; + b = 2; //明显b不是final型的 + Person p = new Person() { //匿名内部类 实现了Person接口 + @Override + public void say() { + System.out.println("匿名内部类中的say方法" + a); + //System.out.println(b); //报错,局部内部类和匿名内部类不能访问非final型的局部变量 + } + }; + ha(p); + } + public static void ha(Person p){ + + } +} +``` + + + +### 静态内部类 + +静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。 + +静态内部类是不需要依赖于外部类对象的,这点和类的静态成员属性有点类似,并且它**不能使用外部类的非** +**static成员变量或者方法.** + +```java +public class Test { + public static void main(String[] args) { + StaticInnerClass.y = 100; + Outter.Inner inner = new Outter.Inner(); + inner.say(); //100.0 + } +} +class Outter { + private double x = 0; + public static double y = 10; + public Outer(double x,double y) { + this.x = x; + } + class Inner { //成员内部类 + public void say() { + //System.out.println(x); //报错,静态内部类不能访问外部类的非静态成员和方法 + System.out.println(y); + } + } +} +``` + +## 包装类 + +在Java中有一个设计的原则“一切皆对象”,那么这样一来Java中的一些基本的数据类型,就完全不符合于这种设计思想,因为Java中的八种基本数据类型并不是引用数据类型,所以Java中为了解决这样的问题,引入了八种基本数据类型的包装类。 + +| 基本数据类型 | 包装类 | +| ------------ | --------- | +| int | Integer | +| char | Character | +| float | Float | +| double | Double | +| boolean | Boolean | +| byte | Byte | +| short | Short | +| long | Long | + +以上的八种包装类,可以将基本数据类型按照类的形式进行操作。 + +以上的八种包装类也分为两种大的类型: + +* Number:Integer、Short、Long、Double、Float、Byte都是Number的子类表示是一个 + 数字。 +* Object:Character、Boolean都是Object的直接子类。 + +### 装箱和拆箱操作 + +以下以`Integer`和`Float`为例进行操作 + +将一个**基本数据类型变为包装类,那么这样的操作称为装箱操作**。 + +将一个**包装类变为一个基本数据类型,这样的操作称为拆箱操作**, + +因为所有的数值型的包装类都是Number的子类,Number的类中定义了如下的操作方法,以下的全部方法都 +是进行拆箱的操作。 + +| 方法 | 描述 | +| ------------------------------------ | ------------------ | +| public byte byteValue() | 用于Byte->byte | +| public abstract double doubleValue() | 用于Double->double | +| public abstract float floatValue() | 用于Float->float | +| public abstract int intValue() | 用于Integer->int | +| public abstract long longValue() | 用于Long->long | +| public short shortValue() | 用于Short->short | + +**装箱操作:** + +在JDK1.4之前 ,如果要想装箱,直接使用各个包装类的构造方法即可,例如: + +```java +int temp = 10 ; // 基本数据类型 +Integer x = new Integer(temp) ; // 将基本数据类型变为包装类 +``` + +在JDK1.5,Java新增了自动装箱和自动拆箱,而且可以直接通过包装类进行四则运算和自增自减操作。例 +如: + +```java +Float f = 10.3f ; // 自动装箱 +float x = f ; // 自动拆箱 +System.out.println(f * f) ; // 直接利用包装类完成 +System.out.println(x * x) ; // 直接利用包装类完成 +``` + +### 字符串转换 + +使用包装类还有一个很优秀的地方在于:可以将一个字符串变为指定的基本数据类型,此点一般在接收输入 +数据上使用较多。 +在`Integer`类中提供了以下的操作方法: + `public static int parseInt(String s)` :将String变为int型数据 +在`Float`类中提供了以下的操作方法: + `public static float parseFloat(String s) `:将String变为Float +在`Boolean` 类中提供了以下操作方法: + `public static boolean parseBoolean(String s) `:将String变为boolean +…… + +```java +public class demo11 { + public static void main(String[] args) { + Scanner input = new Scanner(System.in); + String text = input.nextLine(); + int x = Integer.parseInt(text); //转为int类型,便于运算 + System.out.println(x+1); + } +} +``` + diff --git a/source/_posts/MVC模式和三层架构.md b/source/_posts/MVC模式和三层架构.md new file mode 100644 index 0000000..cd84bb0 --- /dev/null +++ b/source/_posts/MVC模式和三层架构.md @@ -0,0 +1,79 @@ +--- +title: MVC模式和三层架构 +date: 2020-12-12 13:56:15 +tags: +- JavaWeb +- MVC +- 三层架构 +categories: +- JavaWeb +--- + +为了便于管理繁杂的代码,以及降低代码的耦合性,于是衍生出了MVC模式,可以使开发者思路更加清晰,且代码更加利于维护。 + +## MVC 模式 + +Web MVC中的M(模型)-V(视图)-C(控制器)概念和标准MVC概念一样,Web MVC标准架构如下图所示: + +![image-20201126203504738](https://i.loli.net/2020/11/26/VAHzbtaiFC1yDc3.png) + + + +`M(Model) 模型` : 应用程序的核心功能,管理这个模块中用的数据和值,**包含Dao层和Bean层** + +`V(View )视图`: 视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观,**一般指JSP或HTML前端页面** + +`C(Controller)控制器`: 对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。**包含Servlet层和Service层** + +MVC用于将web(UI)层进行职责解耦 + +## 三层架构 + +通常意义上的三层架构就是将整个业务应用划分为:**表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)**。区分层次的目的即为了「高内聚,低耦合」的思想。 + +* 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 jsp/html +* 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 + servlet,service +* 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。dao + +> 表现层实现的代表作品是Struts,springmvc框架, +> +> 业务层实现的代表作品是Spring +> +> 持久层实现的代表作品是Hibernate,mybatis。 + +层就相当于一个黑盒子,我们不用知道它内部怎么实现,只需要知道如何去调用它就行了。每层只与上下相邻的两层打交道。当一层内部由于技术变迁发生变化时,只要接口不变,其他层不用做任何改变。分层之后灵活性提高,也便于团队分工开发。 + +## 三层架构和MVC的区别与联系 + +![](https://i.loli.net/2020/11/26/A95vVS3qPnzY82y.jpg) + +MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。 + +MVC可以是三层中的一个表现层框架,属于表现层。三层和mvc可以共存。 + +三层是基于业务逻辑来分的,而MVC是基于页面来分的。 + +MVC主要用于表现层,三层主要用于体系架构,三层一般是表现层、中间层、数据层,其中表现层又可以分成M、V、C,(Model View Controller)模型-视图-控制器 + +MVC是表现模式(Presentation Pattern),三层架构是典型的架构模式(Architecture Pattern) + +三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。 + +MVC和三层架构基本没有可比性,是应用于不同领域的技术。 + +> [https://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html](https://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html),这篇文章对MVC和三层的关系是这样说的: +> +> **三层是三层,MVC是MVC,它们毫无关系的。** +> +> **三层**是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。 +> +> 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。 +> +> 比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。 +> +> **MVC**是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。 +> +> MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。 +> +> 之所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。 \ No newline at end of file diff --git a/source/_posts/MySQL数据库基础.md b/source/_posts/MySQL数据库基础.md new file mode 100644 index 0000000..184a092 --- /dev/null +++ b/source/_posts/MySQL数据库基础.md @@ -0,0 +1,1247 @@ +--- +title: MySQL数据库基础 +date: 2020-11-16 19:36:21 +tags: +- 数据库 +- MySQL +categories: +- 数据库 +--- + +## 数据库介绍 + +* 什么是数据库 + + 数据库(Database)就是按照数据结构来组织,存储和管理数据的仓库。 + 专业的数据库是专门对数据进行创建,访问,管理,搜索等操作的软件,比起我们自己用文件读写的方式,用它对数据进行管理更加的方便,快速,安全。 + + + +* 数据库特点及作用 + + * 对数据进行持久化的保存 + * 方便数据的存储和查询,速度快,安全,方便 + * 可以处理并发访问 + * 更加安全的权限管理访问机制 + +* 常见的数据库 + + 数据库分两大类,一类是 [关系型数据库](https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/8999831?fr=aladdin)。另一类叫做 [非关系型数据库](https://baike.baidu.com/item/NoSQL/8828247?fromtitle=%E9%9D%9E%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93&fromid=6376860&fr=aladdin)。 + + * 关系型数据库: MySQL,Oracle,PostgreSQL,SQLserver… + * 非关系型数据库:Redis内存数据库,MongoDB文档数据库… + + ![](https://i.loli.net/2020/11/07/fdz4w9cKgm5eoqu.png) + + 关系型数据库与非关系型数据库对比可以看这篇文章: + + [https://my.oschina.net/u/3647687/blog/1534979](https://my.oschina.net/u/3647687/blog/1534979) + +> ‘ +> +> MySQL是最流行的关系型数据库管理系统 +> +> 关于数据库的一些概念 +> +> * 数据库 Database +> * 数据表 Tables +> * 数据字段 filed +> * 行 row :每一行就是一条数据 +> * 列 col +> +> ![](https://i.loli.net/2020/11/07/tqBQ3OWFiJYAVXM.png) +> +> ![](https://i.loli.net/2020/11/07/4JtSwzNr2am3qZb.png) + +## MySql基础操作 + +### 使用MySql的三种方式: + +> 方式一:通过在命令行敲命令来操作 +> +> 方式二:通过图型界面工具,如 Navicat 等 +> +> 方式三:通过编程语言(python,php,java,go...)执行mysql命令 + +### SQL ( Structure query language ) 结构化查询语言 + +> SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制) + +####SQL语句中的快捷指令 + +> `\G` 格式化输出(文本式,竖立显示) +> +> `\s` 查看服务器端信息 +> +> `\c` 结束命令输入操作 +> +> `\q `退出当前sql命令行模式 +> +> `\h` 查看帮助 + +### 数据库操作步骤(windows命令行) + +1. **开启数据库服务:** + +```bash +net start 你电脑中mysql服务的服务名 +``` + +> 你mysql服务的服务名一般安装时就指定好的,默认是mysql。如果不是可以从系统服务里找一下 +> +> windows中查看你的mysql服务名 +> +> 1. win+R键 打开运行,输入`services.msc`,确定 +> +> ![image-20201107184754395](https://i.loli.net/2020/11/07/dHBwemsUYk8Kr79.png) +> +> 2. 找到你mysql的服务名 +> +> ![image-20201107185331055](https://i.loli.net/2020/11/07/Wv9U7rtKES5ohRZ.png) + +![](https://i.loli.net/2020/11/07/9NtUVPWJTiYzwGZ.png) + +> 关闭数据库服务: +> +> ```bash +> net stop 你电脑中mysql服务的服务名 +> ``` + +2. **连接数据库:** + +```mysql +mysql -h 服务器地址 -u 用户名 -p (密码) -P 端口 +``` + +![image-20201107190657607](https://i.loli.net/2020/11/07/iCOfXvus3qG7A26.png) + +如果时本地操作可以省略 -h 和 -P,写成这样即可 + +```sql +mysql -u 用户名 -p (密码) +``` + +3. **操作(增删改)** + +后面会详细讲解 + +4. **退出MySql** + +```mysql +exit; +-- 或者 +quit; +``` + +也可以用快捷命令`\q` + +## MySql数据类型 + +> 数据类型是定义列中可以存储什么类型的数据以及该数据实际怎样存储的基本规则 +> +> 数据类型限制存储在数据列中的数据的类型。例如,数值数据类型列只能接受数值类型的的数据 +> +> 在设计表时,应该特别重视所用的数据类型。使用错误的数据类型可能会严重地影响应用程序的功能和性能。 +> +> 后续更改包含数据的列不是一件小事(而且这样做可能会导致数据丢失),定义之后一般不会再修改字段的数据类型 + +**基本常用的数据类型** + +> 数据类型:整型、浮点型、字符串、日期等 + +### 字符串数据类型 + +最常用的数据类型是串数据类型。它们存储串,如名字、地址、电 话号码、邮政编码等。 + +最常用的有三种基本的串类型,分别为**定长串`char`**、**变长串`varchar`**和**变成文本`text`** + +**定长串:`char`** + +* 接受长度固定的字符串,其长度是在创建表时指定的。不允许存储多于指定长度字符的数据。 + +* 指定长度后,就会分配固定的存储空间用于存放数据 + +> `char(7)` 不管实际插入多少字符,它都会占用7个字符位置 + +**变长串 :`varchar`** + +* 存储可变长度的字符串 + +> `varchar(7)` 如果实际插入4个字符,那么它只占4个字符位置,当然插入的数据长度不能超过7个字符。 + +> **注意:** +> +> 既然变长串数据类型这样灵活,为什么还要使用定长串数据类型? +> +> 回答:因为性能,MySQL处理定长列远比处理变长列快得多。 + +**变长文本:`text`** + +变长文本类型存储,最大长度为64K + +![串类型](https://i.loli.net/2020/11/07/YMBXG18lpdgKWVm.png) + +### 数值类型 + +数值数据类型存储数值。MySQL支持多种数值数据类型,每种存储的数值具有不同的取值范围。支持的取值范围越大,所需存储空间越多。 + +![数值类型](https://i.loli.net/2020/11/07/TrcszjHbp2lK7FR.png) + +举例: + +```sql +decimal(5, 2) --表示数值总共5位, 小数占2位 +tinyint --1字节(8位) 0-255/-128-127 +int --4字节。 -21亿-21亿/0-42亿 +-- MySQL中没有专门存储货币的数据类型,一般情况下使用DECIMAL(8, 2)或float +``` + +> **有符号或无符号** +> +> 所有数值数据类型(除BIT和BOOLEAN外)都可以有符号或无符号 +> +> 有符号数值列可以存储正或负的数值 +> +> 无符号数值列只能存储正数。 +> +> 默认情况为有符号,但如果你知道自己不需要存储负值,可以使用UNSIGNED关键字 + +### 日期和时间类型 + +MySQL使用专门的数据类型来存储日期和时间值 + +![](https://i.loli.net/2020/11/07/i9WorwyE14DXhZg.png) + +```sql +datetime -- 8字节 范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 +``` + +### 二进制数据类型 + +二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档等 + +> 通常情况下,不会使用二进制数据类型进行存储到数据库中 + +![二进制类型](https://i.loli.net/2020/11/07/xiOq49MkGC7mR2p.png) + +### 表的字段约束 + +* `unsigned` 无符号(给数值类型使用,表示为正数,不写可以表示正负数都可以) +* 字段类型后面加括号限制宽度 + * char(5)、varchar(7) 在字符类型后面加限制,表示字符串的长度 + * int(4) 没有意义,默认无符号的int为int(11),有符号的int(10),在数字类型后面只加(x)限制宽度没有意义。 + * `int(4) unsigned zerofill `只有当给int类型设置有前导零(zerofill)时,设置int的宽度才有意义(不够长度会在前面补 0)。 +* `not null` 不能为空,在操作数据库时如果输入该字段的数据为NULL ,就会报错 +* `default` 设置默认值 +* `primary key` 主键不能为空,且唯一。一般和自动递增一起配合使用。 +* `auto_increment` 定义列为自增属性,一般用于主键,数值会自动加1 +* `unique` 唯一索引(数据不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度 + +### MySQL的运算符 + +* 算术运算符: +、 -、 *、 /或DIV、 %或MOD + +* 比较运算符: =、 >、 <、 >=、 <=、!= + +* 数据库特有的比较: in、not in、is null、is not null、like、between、and + +* 逻辑运算符: and、or、not + +* like: 支持特殊符号 % 和 _ + + 其中 % 表示任意数量的任意字符, _ 表示任意一位字符 + + **详细内容可以看[菜鸟编程MySQL运算符](https://www.runoob.com/mysql/mysql-operator.html)** + +### 主键 + +> 表中每一行都应该有可以唯一标识自己的一列,用于记录两条记录不能重复,任意两行都不具有相同的主键值 +> +> 应该总是定义主键 虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便于以后的数据操作和管理。 + +**对于主键的要求** + +* 记录一旦插入到表中,主键最好不要再修改 +* 不允许NULL +* 不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并或更改其名字时,就得更改这个主键。) + +* 自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键 +* 可以使用多个列作为联合主键,但联合主键并不常用。使用多列作为主键时,所有列值的组合必须是唯一的 + +## MySql数据库表引擎与字符集 + +### 服务器处理客户端请求 + +其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:**客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)。** + +那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?客户端可以向服务器发送增删改查各类请求,我们这里以比较复杂的查询请求为例来画个图展示一下大致的过程: + +![](https://i.loli.net/2020/11/08/iW2HgJZTRpaGBby.png) + +> 虽然查询缓存有时可以提升系统性能,但也不得不因维护这块缓存而造成一些开销,比如每次都要去查询缓存中检索,查询请求处理完需要更新查询缓存,维护该查询缓存对应的内存区域。从MySQL 5.7.20开始,不推荐使用查询缓存,并在MySQL 8.0中删除。 + +### 存储引擎 + +`MySQL` 服务器把**数据的存储和提取操作**都封装到了一个叫**存储引擎**的模块里。我们知道表是由一行一行的记录组成的,但这只是一个逻辑上的概念,物理上如何表示记录,怎么从表中读取数据,怎么把数据写入具体的物理存储器上,这都是存储引擎负责的事情。为了实现不同的功能, `MySQL` 提供了各式各样的存储引擎,不同存储引 +擎管理的表具体的存储结构可能不同,采用的存取算法也可能不同。 + +> 存储引擎以前叫做**表处理器**,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。 + +为了管理方便,人们把**连接管理、查询缓存、语法解析、查询优化**这些并不涉及真实数据存储的功能划分为 +`MySQL server` 的功能,把真实存取数据的功能划分为存储引擎的功能。各种不同的存储引擎向上边的`MySQL server` 层提供统一的调用接口(也就是存储引擎API),包含了几十个底层函数,像"读取索引第一条内容"、"读取索引下一条内容"、"插入记录"等等。 + +所以在MySQL server 完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。 + +MySQL 支持非常多种存储引擎: + +| 存储引擎 | 描述 | +| ----------- | ------------------------------------ | +| `ARCHIVE` | 用于数据存档(行被插入后不能再修改) | +| `BLACKHOLE` | 丢弃写操作,读操作会返回空内容 | +| `CSV` | 在存储数据时,以逗号分隔各个数据项 | +| `FEDERATED` | 用来访问远程表 | +| `InnoDB` | 具备外键支持功能的事务存储引擎 | +| `MEMORY` | 置于内存的表 | +| `MERGE` | 用来管理多个MyISAM表构成的表集合 | +| `MyISAM` | 主要的非事务处理存储引擎 | +| `NDB` | MySQL集群专用存储引擎 | + +#### MyISAM和InnoDB表引擎的区别 + +1. **事务支持** + + MyISAM不支持事务,而InnoDB支持。 + + > 事物:访问并更新数据库中数据的执行单元。事物操作中,要么都执行要么都不执行 + +2. **存储结构** + + MyISAM:每个MyISAM在磁盘上存储成三个文件。 + + * .frm文件存储表结构。 + * .MYD文件存储数据。 + * .MYI文件存储索引。 + + InnoDB:主要分为两种文件进行存储。 + + * .frm 存储表结构 + * .ibd 存储数据和索引 (也可能是多个.ibd文件,或者是独立的表空间文件) + +3. **表锁差异** + + MyISAM:**只支持表级锁**,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。 + + InnoDB:**支持事务和行级锁,是innodb的最大特色。**行锁大幅度提高了多用户并发操作的性能。但是InnoDB的行锁,**InnoDB的行锁是基于索引建立的,如果索引失效或者没有索引,那么,行锁失效,由行锁升级为表锁。** + +4. **表主键** + + MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。 + + InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。InnoDB的主键范围更大,最大是MyISAM的2倍。 + +5. **表的具体行数** + + MyISAM:保存有表的总行数,如果`select count(*) from table;`会直接取出出该值。 + + InnoDB:没有保存表的总行数(只能遍历),如果使用`select count(*) from table;`就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。 + +6. **CURD操作** + + MyISAM:如果执行大量的`SELECT`,MyISAM是更好的选择。 + + InnoDB:如果你的数据执行大量的`INSERT`或`UPDATE`,出于性能方面的考虑,应该使用InnoDB表。`DELETE` 从性能上InnoDB更优,但`DELETE FROM table`时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用`truncate table`这个命令。 + +7. **外键** + + MyISAM:不支持 + + InnoDB:支持 + +8. **查询效率** + + MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。 + + 推荐考虑使用InnoDB来替代MyISAM引擎,原因是InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多。 + + 另外,任何一种表都不是万能的,只有恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。 + +9. **MyISAM和InnoDB两者的应用场景:** + + MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的`SELECT`查询,那么MyISAM是更好的选择。 + + InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的`INSERT`或`UPDATE`操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。现在默认最常使用InnoDB。 + +### 字符集和编码 + +> 我们知道在计算机中只能存储二进制数据,那该怎么存储字符串呢?当然是建立字符与二进制数据的映射关系了,建立这个关系最起码要搞清楚两件事儿: +> +> 1. 你要把哪些字符映射成二进制数据?也就是界定清楚字符范围。 +> +> 2. 怎么映射? +> +> 将一个字符映射成一个二进制数据的过程也叫做**编码**,将一个二进制数据映射到一个字符的过程叫做**解码**。 + +人们抽象出一个字符集的概念来描述某个字符范围的编码规则,以下是一些常用字符集: + +* `ASCII` 字符集 + + 共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式: + + ```tex + 'L' -> 01001100(十六进制:0x4C,十进制:76) + 'M' -> 01001101(十六进制:0x4D,十进制:77) + ``` + +* `ISO 8859-1` 字符集 + + 共收录256个字符,是在ASCII 字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以 + 使用1个字节来进行编码。这个字符集也有一个别名`latin1` 。 + +* `GB2312` 字符集 + + 收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容`ASCII` 字符集,所以在编码方式上显得有些奇怪: + + * 如果该字符在ASCII 字符集中,则采用1字节编码。否则采用2字节编码。 + + 这种表示一个字符需要的字节数可能不同的编码方式称为**变长编码方式**。比方说字符串'爱u' ,其中'爱' 需要用2个字节进行编码,编码后的十六进制表示为0xCED2 , 'u' 需要用1个字节进行编码,编码后的十六进制表示为0x75 ,所以拼合起来就是0xCED275 。 + +* `GBK` 字符集 + + `GBK` 字符集只是在收录字符范围上对`GB2312` 字符集作了扩充,编码方式上兼容`GB2312` 。 + +* `Unicode` 字符集 + + 也称为万国码,收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容`ASCII` 字符集,采用变长编码方式,编码一个字符需要使用1~4个字节,比如: + + ```tex + 'L' -> 01001100(十六进制:0x4C) + '啊' -> 111001011001010110001010(十六进制:0xE5958A) + ``` + + > 我们常用的`utf8`只是`Unicode`字符集的一种编码方案,`Unicode`字符集可以采用`utf8`、`utf16`、`utf32`这几种编码方案,`utf8`使用1~4个字节编码一个字符,`utf16`使用2个或4个字节编码一个字符,`utf32`使用4个字节编码一个字符 + +对于同一个字符,不同字符集也可能有不同的编码方式。比如对于汉字'我' 来说, `ASCII` 字符集中根本没有收录这个字符, utf8 和gb2312 字符集对汉字'我'的编码方式如下: + +```tex +utf8编码: 111001101000100010010001 (3个字节,十六进制表示是:0xE68891) +gb2312编码:1100111011010010 (2个字节,十六进制表示是:0xCED2) +``` + +> **更多关于字符集和编码的内容可以看下面这篇文章** +> +> **[http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html](http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)** + +#### MySQL中的utf8和utf8mb4 + +我们上边说`utf8` 字符集表示一个字符需要使用1~4个字节,但是我们常用的一些字符使用1~3个字节就可以表示了。而在MySQL 中字符集表示一个字符所用最大字节长度在某些方面会影响系统的存储和性能,所以MySQL的设计人员定义了两个概念: + +* `utf8mb3` :阉割过的utf8 字符集,只使用1~3个字节表示字符。 +* `utf8mb4` :正宗的utf8 字符集,使用1~4个字节表示字符。 + +**注意:**在MySQL 中,utf8指的是utf8mb3,所以之后在MySQL中提到utf8 就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,那请使用utf8mb4 。 + +> **字符集的查看** +> +> MySQL 支持多种字符集,查看当前MySQL 中支持的字符集可以用下边这个语句: +> +> ```mysql +> show charset; +> ``` + +## Mysql数据库与数据表操作 + +> **库和表的概念与关系** +> +> 库就像是文件夹,库中可以有很多个表,表就像是我们的excel表格文件一样,每一个表中都可以存储很多数据。 +> +> mysql中可以有很多不同的库,库中可以有很多不同的表,表中可以定义不同的列(字段),表中可以根据结构去存储很多的数据。 + +### 数据库的操作 + +#### 数据库创建 + +```mysql +# 链接mysql数据库后,进入mysql后可以操作数据 +# 创建库 +create database if not exists test default charset=utf8mb4; +-- 1. 数据库 test 如果不存在则创建数据库,存在则不创建 +-- 2. 创建 test 数据库,并设置字符集为utf8 +-- 3. 无特殊情况都要求字符集为utf8或者utf8mb4的字符编码 +``` + +#### 查看所有库 + +```mysql +# 查看所有库 +show databases; +``` + +#### 打开库/进入库/选择库 + +```mysql +# use 库名 +use test; +``` + +#### 删除库 + +> 删库有风险,动手需谨慎!!! + +```mysql +# 删除库,库中的所有数据都将在磁盘中删除。 +drop database 库名 +``` + +### 数据表的操作 + +#### 创建表 + +语法格式: + +```mysql +create table 表名(字段名,类型,[字段约束],…); +``` + +实例: + +```mysql +# 以下创建一个 users 的表 +create table if not exists users( + -- 创建ID字段,为正整数,不允许为空 主键,自动递增 + id int unsigned not null primary key auto_increment, + -- 创建存储 名字 的字段,为字符串类型,最大长度5个字符,不允许为空 + username varchar(5) not null, + -- 创建存储 密码 的字段,固定长度 32位字符, 不允许为空 + password char(32) not null, + -- 创建存储 年龄 的字段,不允许为空,默认值为 20 + age tinyint not null default 20 +)engine=innodb default charset=utf8mb4; +-- 表引擎innodb 字符集utf8mb4 + +# 查看表结构 +desc users; + +#查看建表语句 +show create table users; +``` + +![](https://i.loli.net/2020/11/07/ERAg51wJ43vdKNF.png) + +**创建表的基本原则:** + +* 表明和字段名 尽可能的符合命名规范,并且最好能够‘见名之意’ +* 表中数据必须有唯一标识,即主键定义。无特殊情况,主键都为数字并自增即可 +* 表中字段所对应的类型设置合理,并限制合理长度 +* 表引擎推荐使用innodb,并无特殊情况都要求为utf8或者utf8mb4的字符编码 + +#### 修改表结构 + +语法格式: + +```mysql +alter table 表名 action (更改的选项) +``` + +##### 添加字段 + +语法: + +```mysql +alter table 表名 add 添加的字段信息 +``` + +实例: + +```mysql +-- 在 users 表中 追加 一个 num 字段 int类型 不为空 默认加在最后面 +alter table users add num int not null; +-- 在指定字段后面追加字段 在 users 表中 age字段后面 添加一个 email 字段 +alter table users add email varchar(50) after age; +-- 在指定字段后面追加字段,在 users 表中 age字段后面 添加一个 phone +alter table users add phone char(11) not null after age; +-- 在表的最前面添加一个字段 +alter table users add aa int first; +``` + +##### 删除字段 + +```mysql +# 删除字段 alter table 表名 drop 被删除的字段名 +alter table users drop aa; +``` + +##### 修改字段 + +语法: + +```mysql +alter table 表名 change|modify 被修改的字段信息 +# change: 可以修改字段名, +# modify: 不能修改字段名。 +``` + +实例: + +```mysql +# 修改表中的 num 字段 类型,使用 modify 不修改字段名 +alter table users modify num tinyint not null default 12; +# 修改表中的 num 字段 为 int 并且 字段名改为 mm +alter table users change num mm int; +``` + +> **注意:一般情况下,无特殊要求,不要轻易修改表结构** + +#### 修改表名 + +```mysql +alter table 原表名 rename as 新表名; +``` + +#### 更改表中自增的值 + +```mysql +# 在常规情况下,auto_increment 默认从1开始继续递增 +# 更改自增值让其从1000开始 +alter table users auto_increment = 1000; +``` + +>  注意: +> +> 更改之后,只对后面再增加的数据有影响,对已存在的数据没有影响。 + +#### 修改表引擎 + +```mysql +# 推荐在定义表时,表引擎定义为 innodb。 +# 通过查看建表语句获取当前的表引擎 +mysql> show create table users\G; +*************************** 1. row *************************** + Table: users +Create Table: CREATE TABLE `users` ( + PRIMARY KEY (`id`) + .... +) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8 +1 row in set (0.00 sec) + +# 直接查看当前表状态信息 +mysql> show table status from test where name = 'users'\G; +*************************** 1. row *************************** + Name: users + Engine: InnoDB + .... + +# 修改表引擎语句 +alter table users engine = 'myisam'; +``` + +#### 删除表 + +```mysql +drop table 表名 +``` + +## MySQL 数据操作——DML + +> **数据的DML操作:添加数据,修改数据,删除数据** + +### 添加数据 + +格式: + +```mysql +insert into 表名[(字段列表)] values(值列表...); +``` + +```mysql +-- 标准添加(指定所有字段,给定所有的值) +insert into stu(id,name,age,sex,classid) values(1,'zhangsan',20,'m','lamp138'); + + +-- 指定部分字段添加值 +insert into stu(name,classid) value('lisi','lamp138'); + + +-- 不指定字段添加值 +insert into stu value(null,'wangwu',21,'w','lamp138'); + +-- 批量添加值 +insert into stu values +(null,'zhaoliu',25,'w','lamp94'), +(null,'uu01',26,'m','lamp94'), +(null,'uu02',28,'w','lamp92'), +(null,'qq02',24,'m','lamp92'), +(null,'uu03',32,'m','lamp138'), +(null,'qq03',23,'w','lamp94'), +(null,'aa',19,'m','lamp138'); +``` + +### 修改数据 + +格式: + +```mysql +update 表名 set 字段1=值1,字段2=值2,字段n=值n... where 条件; +``` + +```mysql +-- 将id为11的age改为35,sex改为m值 +update stu set age=35,sex='m' where id=11; + +-- 将id值为12和14的数据值sex改为m,classid改为lamp92 +update stu set sex='m',classid='lamp92' where id=12 or id=14 +update stu set sex='m',classid='lamp92' where id in(12,14); -- 等价于上面 +``` + +### 删除数据 + +格式: + +```mysql +delete from 表名 [where 条件]; +``` + +```mysql +-- 删除stu表中id值为100的数据 +delete from stu where id=100; + +-- 删除stu表中id值为20到30的数据 +delete from stu where id>=20 and id<=30; +delete from stu where id between 20 and 30; -- 等价于上面 + +-- 删除stu表中id值大于200的数据 +delete from stu where id>200; +``` + +## MySQL数据查询——DQL基本语法 + +语法格式: sql查询语句 一定要严格按照这样的顺序,否则会产生错误 + +```mysql +select 字段列表|* from 表名 +[where 搜索条件] +[group by 分组字段 [having 分组条件]] +[order by 排序字段 排序规则] +[limit 分页参数] +``` + +下面以一个数据表stu为例进行讲解 + +SQL示例: + +```mysql +-- 创建表 +CREATE TABLE `stu`( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(10) NOT NULL, + `email` char(50) NOT NULL, + `phone` char(11) NOT NULL, + `age` tinyint(4)NOT NULL, + `sex` char(1) DEFAULT NULL, + `class_id` int DEFAULT NULL, + PRIMARY KEY(id) +)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; + +-- 添加数据 +insert into stu values +(null,'张三','zhangsane@qq.com','13701184321',21,'男',1), +(null,'李四','lisi@qq.com','13701104322',22,'男',1), +(null,'王五','wangwu@qq.com','13701104323',20,'女',1), +(null,'赵六','zhaoliu@qq.com','13701104324',19,'男',1), +(null,'田七','tianqi@qq.com','13701104325',23,'女',1), +(null,'王五六','wangwuliu@qq.com','13701104326',23,'女',1), +(null,'熊大','xiongda@qq.com','13701184327',25,'男',2), +(null,'熊二','xionger@qq.com','13701104328',22,'男',2), +(null,'一一','yiyi@qq.com','13701184329',19,'女',2), +(null,'呀呀','yaya@qq.com','13701104320',22,'男',2); + + -- 查看表数据 +select * from stu; +``` + +### 检索数据`SELECT` + +**检索列** + +```mysql +# 检索单个列 +select name from stu; -- 查询 stu 表中 name (字段)列的所有数据 + +# 检索多个列 +select id, name, age, sex from stu; + +# 检索所有列 +select * from stu; +``` + +![](https://i.loli.net/2020/11/08/C1EtjLHgFfQ76SX.png) + +> 如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义。 +> +> 返回数据的顺序可能是数据被添加到表中的顺序,也可能不是。只要返回相同数目的行,就是正常的 +> +> **使用通配符 `*` 的说明:** +> +> 一般除非你确实需要表中的每个列,否则最好别使用 `*` 通配符。 +> +> 虽然使用通配符,不用明确列出所需列,会使你自己省事,但检索不需要的列通常会降低检索和应用程序的性能。使用通配符有一个优点: 由于不明确指定列名(因为 `*` 检索每个列),所以能检索出名字未知的列。 + +**检索不同的行(去重) DISTNCT** + +```mysql +# 检索不同的行(去重) DISTNCT +select distinct class_id from stu; +``` + +![](https://i.loli.net/2020/11/08/No9qvOmStG1z6be.png) + +> DISTINCT关键字指示MySQL只返回不同的值。 +> +> DISTINCT关键字应用于所有列,而不仅是前置它的列。 +> +> 如果给出`SELECT DISTINCT 字段1,字段2,.... FROM xxx;`除非指定的列都不同,否则所有行都将被检索出来 + +**使用完全限定的表名** + +```mysql +select name from stu; -- 无限制 +select stu.name from stu; -- 限制字段名 stu.name stu表的name字段 +select stu.name from test.stu; -- 限制表名 test.stu test库的stu表 +``` + +### WHERE 数据检索条件过滤 + +> 数据库表一般包含大量的数据,很少需要检索表中所有行。 +> +> 通常只会根据特定操作或报告的需要提取表数据的子集。 +> +> 只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filtercondition)。 +> +> 在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。 + +* 可以在where子句中指定任何条件 +* 可以使用 and 或者 or 指定一个或多个条件 +* where条件也可以运用在update和delete语句的后面 + +**WHERE 子句操作符** + +| 操作符 | 说明 | +| -------------- | ------------ | +| `=` | 等于 | +| `<>` `!=` | 不等于 | +| `<` | 小于 | +| `<=` | 小于等于 | +| `>` | 大于 | +| `>=` | 大于等于 | +| `BETWEEN…AND…` | 指定两值之间 | +| `IS NULL` | 空值 | + +```mysql +-- 查询 stu 表中 age > 22的数据 +select * from stu where age > 22; + +-- 查询 stu 表中 name=某个条件值 的数据 +select * from stu where name = '王五'; + +-- 查询 stu 表中 sex 为 null 的数据 +select * from stu where sex is null; +``` + +**组合WHERE子句** + +> MySQL允许给出多个WHERE子句。 +> +> 这些子句可以两种方式使用:以`AND`子句的方式或`OR`子句的方式使用。也称为逻辑操作符 +> +> * `AND ` 检索满足**所有**给定条件的行 +> * `OR` 检索满足**任一**给定条件的行 + +示例: + +```mysql +-- 查询 stu 表中 年龄在22到25之间的数据 +select * from stu where age >= 22 and age <= 25; +select * from stu where age between 22 and 25; + +-- 查询 stu 表中 年龄不在22到25之间的数据 +select * from stu where age < 22 or age > 25; +select * from stu where age not between 22 and 25; + +-- 查询 stu 表中 年龄在22到25之间的女生信息 +select * from stu where age >= 22 and age <= 25 and sex = '女'; +``` + +> **注意** +> +> `and` 和 `or` 在使用时要注意 sql语句优先级的问题,sql会优先处理`and`条件 +> +> 比如下面语句: +> +> ```mysql +> select * from stu where age=22 or age = 25 and sex = '女'; +> ``` +> +> 假如要求查询 users 表中 年龄为22或者25 的女生信息,上面语句查询的结果就不能符合我们的要求。 +> +> 上面语句查询的是 (年龄为22的所有人) 或者 (年龄为25的女生)信息: +> +> 要达到我们要求的查询,可以用小括号来提升优先级 +> +> ```mysql +> select * from stu where (age=22 or age = 25) and sex = '女'; +> ``` + +**`IN`与`NOT`** + +```mysql +-- 查询 stu 表中 id 是1或2或3的数据 +select * from stu where id in (1,2,3); +-- 查询 stu 表中 id 不是1 也不是2 也不是3的数据 +select * from stu where id not in (1,2,3); +``` + +> `IN` 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。功能与`OR`相当 +> +> `NOT` 用于否定后跟进的条件 +> +> 与`OR`,相比,使用`IN`的优点 +> +> * 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。 +> * 在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。 +> * IN操作符一般比OR操作符清单执行更快。 +> * IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。 + +**通配符的使用 `LIKE`** + +我们可以在where条件中使用 `=`,`<`,`>` 等符号进行条件的过滤,但是当想查询某个字段是否包含某个字符时如何过滤呢?例如: 查询 name字段中包含五的数据 + +可以使用`LIKE`语句进行某个字段的模糊搜索。 + +**常用通配符:** + +* 百分号(`%`) :表示任意字符出现任意次数 +* 下划线(`_`):用途与`%`类似,但下划线只匹配单个字符 + +```mysql +-- like 语句 like某个确定的值 和。where name = '王五' 是一样 +select * from stu where name like '王五'; + +-- 使用 % 模糊搜索。%代表任意个任意字符 + -- 查询name字段中包含五的 + select * from stu where name like '%五%'; + + -- 查询name字段中最后一个字符 为 五的 + select * from stu where name like '%五'; + + -- 查询name字段中第一个字符 为 王 的 + select * from stu where name like '王%'; + +-- 使用 _ 单个的下划线。表示一个任意字符,使用和%类似 + -- 查询表中 name 字段为两个字符的数据 + select * from stu where name like '__'; + + -- 查询 name 字段最后为 五 的两个字符的数据 + select * from stu where name like '_五'; +``` + +> **where子句中的like在使用`%`或者`_`进行模糊搜索时,所花时间更长,效率不高,使用时注意:** +> +> * 不要过度使用通配符。如果其他操作符能达到相同的目的,尽量使用其他操作符。 +> * 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。 +> * 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据 + +> MySql中也支持正则表达式,使用 `REGEXP` 关键字来匹配。 +> +> ```mysql +> -- 查询 id 为 3到8 的所有数据 +> select * from stu where id regexp '[3-8]'; +> ``` + +### 字段的计算 + +存储在数据库表中的数据一般不是应用程序所需要的格式。下面举几个例子: + +* 如果想在一个字段中既显示用户名,又显示班级号,但这两个信息一般包含在不同的表列中。 +* 同时姓名、手机号和地址存储在不同的列中(应该这样),但快递单打印程序却需要把它们作为一个恰当格式的字段检索出来。 +* 列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。 +* 物品订单表存储物品的价格和数量,但不需要存储每个物品的总价格(用价格乘以数量即可)。为打印发票需要物品的总价格。 +* 需要根据表数据进行总数、平均数计算或其他计算 + +**计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句内创建的** + +**拼接Concat** + +stu表包含用户名和手机号码信息。假如要生成一个学生报表,需要在学生的名字中按照name(phone)这样的 +格式列出 + +解决办法是把两个列拼接起来。在MySQL的SELECT语句中,可使用`concat()`函数来拼接两个列 + +```mysql +select concat(name ,'(', phone,')') from stu; +``` + +**使用别名AS** + +SELECT语句拼接字段可以完成。但此新计算列的名字是什么呢?实际上它没有名字,它只是一个值。 +如果仅在SQL查询工具中查看一下结果,这样没有什么不好。 + +但是,一个未命名的列不能用于客户机应用中,因为客户机没有办法引用它。 + +为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用`AS`关键字赋予 + +```mysql +select concat(name ,'(',phone,')') as name_phone from stu; +``` + +![](https://i.loli.net/2020/11/08/i8v9tsl1JkrISmE.png) + +### MySql查询常用函数 + +> 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。 +> +> 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。 + +**文本处理函数** + +[https://dev.mysql.com/doc/refman/5.7/en/string-functions.html](https://dev.mysql.com/doc/refman/5.7/en/string-functions.html) + +![image-20201108204526003](https://i.loli.net/2020/11/08/kfDA5FUwxgGN6jz.png) + +**日期和时间处理函数** + +[https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html) + +![](https://i.loli.net/2020/11/08/a8mH6gLkY5zOpbS.png) + +> ```sql +> -- 根据出生日期计算年龄 +> TIMESTAMPDIFF(YEAR, @birthday, CURDATE()) +> ``` + +**数值处理函数** + +[https://dev.mysql.com/doc/refman/5.7/en/numeric-functions.html](https://dev.mysql.com/doc/refman/5.7/en/numeric-functions.html) + +![](https://i.loli.net/2020/11/08/fkPm93ciztJb7uA.png) + +### Mysql中的统计函数(聚合函数) + +> 我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。 +> +> 使用这些函数,MySQL查询可用于检索数据,以便分析和报表生成 + +* `max()` 返回某列最大值 +* `min()` 返回某列最小值 +* `count()` 返回某列的行数 +* `sum()` 返回某列值和 +* `avg()` 返回某列的平均值 + +> 在使用count时,如果指定列名,则指定列的值为空的行被忽略,但如果COUNT函数中用的是星号(*),则不忽略。 + +例如: + +```mysql +# 计算 users 表中 最大年龄,最小年龄,年龄和及平均年龄 +select max(age),min(age),sum(age),avg(age) from stu; ++----------+----------+----------+----------+ +| max(age) | min(age) | sum(age) | avg(age) | ++----------+----------+----------+----------+ +| 25 | 19 | 216 | 21.6000 | ++----------+----------+----------+----------+ +-- 上面数据中的列都是在查询时使用的函数名,不方便阅读和后期的调用,可以通过别名方式 美化 +select max(age) as max_age, +min(age) as min_age, +sum(age) as sum_age, +avg(age) as avg_age from stu; ++---------+---------+---------+---------+ +| max_age | min_age | sum_age | avg_age | ++---------+---------+---------+---------+ +| 25 | 19 | 216 | 21.6000 | ++---------+---------+---------+---------+ +-- 统计 users 表中的数据量 +select count(*) from stu; ++----------+ +| count(*) | ++----------+ +| 10 | ++----------+ +select count(id) from stu; ++----------+ +| count(id)| ++----------+ +| 10 | ++----------+ + +-- 上面的两个统计,分别使用了 count(*) 和 count(id),结果目前都一样,有什么区别? +-- count(*) 是按照 users表中所有的列进行数据的统计,只要其中一列上有数据,就可以计算 +-- count(id) 是按照指定的 id 字段进行统计,也可以使用别的字段进行统计, +-- 但是注意,如果指定的列上出现了NULL值,那么为NULL的这个数据不会被统计 +-- 假设有下面这样的一张表需要统计 ++------+-----------+------+--------+-----------+------+------+ +| id | name | age | phone | email | sex | mm | ++------+-----------+------+--------+-----------+------+------+ +| 1000 | aa | 20 | 123 | NULL | 男 | NULL | +| 1001 | bb | 20 | 123456 | NULL | 男 | NULL | +| 1002 | cc | 25 | 123 | NULL | 女 | NULL | +| 1003 | dd | 20 | 456 | NULL | 女 | NULL | +| 1004 | ff | 28 | 789 | NULL | NULL | NULL | ++------+-----------+------+--------+-----------+------+------+ +5 rows in set (0.00 sec) +-- 如果按照sex这一列进行统计,结果就是4个而不是5个,因为sex这一列中有NULL值存在 +mysql> select count(sex) from stu; ++------------+ +| count(sex) | ++------------+ +| 4 | ++------------+ +``` + +聚合函数除了以上简单的使用以外,通常情况下都是配合着分组进行数据的统计和计算 + +### GROUP BY 分组 + +`group by` 语句根据一个或多个列对结果集进行分组 + +一般情况下,是用于数据的统计或计算,配合聚合函数使用 + +```mysql +-- 统计 users 表中 男女生人数, +-- 很明显按照上面的需要,可以写出两个语句进行分别统计 +select count(*) from stu where sex = '女'; +select count(*) from stu where sex = '男'; +-- 可以使用分组进行统计,更方便 +select sex,count(*) from stu group by sex; + +-- 统计1班和2班的人数 +select class_id,count(*) from stu group by class_id; + +-- 分别统计每个班级的男女生人数 +select class_id,sex,count(*) as num from stu group by class_id,sex; + +``` + +注意:在使用`group by`分组时,一般除了聚合函数,其它在`select`后面出现的字段列都需要出现在`grouop by` 后面。 + +**`HAVING`子句** + +`having` 在分组聚合计算后,对结果再一次进行过滤,类似于where,where过滤的是行数据,having过滤的是分组数据 + +```mysql +-- 要统计班级人数 +select class_id,count(*) from stu group by classid; +-- 统计班级人数,并且要人数达到5人及以上 +select class_id,count(*) as num from stu group by class_id having num >=5; +``` + +### ORDER BY 对检索数据进行排序 + +> 默认查询出的数据,并不是随机排序的,如果没有指定排序,数据一般将以它在底层表中出现的顺序显示,关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。 + +我们在mysql中使用`select`的语句查询的数据结果是根据数据在底层文件的结构来排序的,在需要排序时可以使用`order by`对返回的结果进行排序 + +`order by `asc 升序,默认 + +* desc 降序 + +```mysql +-- 按照年龄对结果进行排序, + -- 从大到小 + select * from users order by age desc; + -- 从小到大排序 asc 默认可以不写 + select * from users order by age; +-- 也可以按照多个字段进行排序 +select * from users order by age,id; # 先按照age进行排序,age相同情况下,按照id进行排序 升序 +select * from users order by age,id desc; -- 降序 +``` + +### 限制结果 LIMIT + +* `limit n` 提取n条数据, +* `limit m,n` 跳过m条数据,提取后面的n条数据 +* `limit n offset m` 跳过m条数据,提取后面的n条数据 ,等同于`limit m,n` + +```mysql +-- 查询stu 表中的数据,只要3条 +select * from stu limit 3; + +-- 跳过前3条数据,再取4条数据 +select * from stu limit 3,4; +select * from stu limit 4 offset 3; +-- limit一般应用在数据分页上面 +-- 例如每页显示10条数据 +第一页 limit 0,10 +第二页 limit 10,10 +第三页 limit 20,10 +第四页 limit 30,10 +... +-- 查询stu 表中年龄最大的两个人的信息 +select * from stu order by age desc limit 2; +``` + +![image-20201108191010335](https://i.loli.net/2020/11/08/WmOsZi8a5KjRMSN.png) + +### 总结 + +mysql中的查询语句比较灵活多样,并且在使用查询语句时,一定要注意sql的正确性和顺序。 + +![image-20201108162518097](https://i.loli.net/2020/11/08/qoVjDgp12uvzaYw.png) + +## Mysql数据库导入导出和授权 + +### 数据导出 + +* **数据库数据导出**:在命令行中然后输入以下命令 导出某个库中的数据 + +```bash +mysqldump -u root -p 库名 > 要保存的文件路径/xxx.sql +# 比如: +mysqldump -u root -p test > D://test.sql +``` + +导出一个库中所有数据,会形成一个建表和添加语句组成的sql文件 + +![](https://i.loli.net/2020/11/08/DY6nwXKyW9lefOI.png) + +* **将数据库中的表导出** :在命令行中然后输入以下命令 导出某个库中指定表的数据 + +```bash +mysqldump -u root -p 库名 表名 > 要保存的文件路径/xxx.sql +# 比如: +mysqldump -u root -p test users > D://test-users.sql +``` + +### 数据导入 + +把导出的sql文件数据导入到mysql数据库中 + +```mysql +# 在新的数据库中 导入备份的数据,导入导出的sql文件 +mysql -u root -p 新建的库名 < 路径/xxx.sql +# 把导出的表sql 导入数据库 +mysql -u root -p 新建的库名 < 路径/xxx.sql +``` + + ### 权限管理 + +> mysql中的root用户是数据库中权限最高的用户,千万不要用在项目中。 +> +> 可以给不同的用户,或者项目,创建不同的mysql用户,并适当的授权,完成数据库的相关操作,这样就在一定程度上保证了数据库的安全。 + +创建用户的语法格式: + +```mysql +grant 授权的操作 on 授权的库.授权的表 to 账户@登录地址 identified by '密码'; +``` + +示例: + +```mysql +# 在mysql中 创建一个 zhangsan 用户,授权可以对test这个库中的所有表 进行 添加和查询 的权限 +grant select,insert on test.* to zhangsan@'%' identified by '123456'; + +# 用户 lisi,密码 123456 可以对test库中的所有表有所有操作权限 +grant all on test.* to lisi@'%' identified by '123456'; + +# 删除用户 lisi +drop user 'lisi'@'%'; +``` + diff --git a/source/_posts/MySQL数据库高级.md b/source/_posts/MySQL数据库高级.md new file mode 100644 index 0000000..1f561b1 --- /dev/null +++ b/source/_posts/MySQL数据库高级.md @@ -0,0 +1,763 @@ +--- +title: MySQL数据库高级 +date: 2020-11-16 19:41:42 +tags: +- 数据库 +- MySQL +categories: +- 数据库 +--- + +## DQL数据查询进阶 + +这里所用到的表结构如下图所示: + +![](https://i.loli.net/2020/11/11/T2PUqaGgcXIZv18.png) + + + +### 子查询 + +子查询即嵌套在其他查询中的查询。可以利用嵌套关系完成一些复杂情况的查询。 + +> **例子 1:利用子查询进行过滤** +> +> 订单存储在两个表中。对于包含订单号、客户ID、订单日期的每个订单,orders表存储⼀行。 各订单的物品存储在相关的orderitems表中。orders表不存储客户信息。它只存储客户的ID。实际的客户信息存储在customers表中。现在,假如需要列出订购了物品TNT2的所有客户,可以用下面的方式查询 +> +> ```mysql +> -- 从oderitems表中查询所有包含物品TNT2中的订单编号order_num; +> -- 将上一步查询出的order_num作为在oders表中查询的条件,查询出符合条件的用户编号cust_id; +> -- 再将上一步查询出的cust_id作为在customers表中查询的条件,就可以查询出订购了物品TNT2的所有客户啦 +> SELECT cust_name,cust_contact +> FROM customers +> WHERE cust_id IN ( +> SELECT cust_id +> FROM orders +> WHERE order_num IN ( +> SELECT order_numFROM orderitems WHERE prod_id = 'TNT2' +> ) +> ); +> -- 查询结果: +> +----------------+--------------+ +> | cust_name | cust_contact | +> +----------------+--------------+ +> | Coyote Inc. | Y Lee | +> | Yosemite Place | Y Sam | +> +----------------+--------------+ +> ``` +> +> **例子 2:作为计算字段使用子查询** +> +> 假如需要显示customers表中每个客户的订单总数。订单与相应的客户ID存储在orders表中。 +> +> ```mysql +> -- 从customers表中检索客户列表。对于检索出的每个客户,统计其在orders表中的订单数目。 +> SELECT cust_id,cust_name, +> (SELECT COUNT(*) +> FROM orders +> WHERE orders.cust_id = customers.cust_id) as ordersNum +> FROM customers +> ORDER BY cust_name; +> +> -- 查询结果 +> +---------+----------------+-----------+ +> | cust_id | cust_name | ordersNum | +> +---------+----------------+-----------+ +> | 10001 | Coyote Inc. | 2 | +> | 10005 | E Fudd | 1 | +> | 10002 | Mouse House | 0 | +> | 10003 | Wascals | 1 | +> | 10004 | Yosemite Place | 1 | +> +---------+----------------+-----------+ +> ``` +> +> 这条SELECT 语句对customers 表中每个客户返回3 列:cust_name、cust_state和ordersNum。ordersNum是一个计算字段,它是由圆括号中的子查询`SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) as ordersNum)`建立的。该子查询对检索出的每个客户执行一次。在此例子中,该子查询执行了5次,因为检索出了5个客户。 +> +> > 子查询中的WHERE子句与前面使用的WHERE子句稍有不同,因为它使用了完全限定列名。这种方式叫做相关子查询,它是涉及外部查询的子查询。任何时候只要列名可能有多义性,就必须使用这种语法。因为有两个cust_id列,一个在customers中,另一个在orders中,需要⽐比较这两个列列以正确地把订单与它们相应的顾客匹配 +> > +> > ```mysql +> > WHERE orders.cust_id = customers.cust_id +> > ``` + +### 联表查询 + +SQL最强大的功能之⼀就是能在数据检索查询的执行中联结(join)表。在能够有效地使⽤用联结前,必须了了解关系表以及关系数据库设计的⼀些基础知识 + +#### 表关系 + +MySQL作为一个关系型数据,最大的特点便是通过表与表之间的关系,可以有效地存储和方便地处理数据 + +**关系表的设计就是要保证把信息分解成多个表,一类数据一个表。各表通过某些常用的值(即关系设计中的关系(relational))互相关联。** + +表与表之间的关系,通过外键进行关联。**外键存在于两个拥有相同字段的表中,其中一个表的主键在另一个表中作为外键**查找数据时,可以通过外键确定数据对应关系。 + +表关系又下面三种 + +* 一对一关系:就是在一个表A中的一条数据,对应着另外一张表B中的一条数据,反过来也是。 + +* 一对多(多对一)关系:在一个表A中的一条数据对应着另外一个表B中的多条数据,但反过来另一个表B中的一条数据也只能对应表A中的一条数据,比如,爸爸和儿女,一个爸爸可以有很多儿女,但一个儿女只能有一个爸爸。 + +* 多对多关系:在一个表A中的一条数据对应另一个表B中的多条数据,同时,表B中的一条数据也对应着表A中的多条数据 + + ![](https://i.loli.net/2020/11/11/ki3lRrb2MfgV7hX.png) + +> 有关**表关系**更详细的内容可以看这两篇文章 +> +> [https://cloud.tencent.com/developer/article/1585927](https://cloud.tencent.com/developer/article/1585927) +> +> [https://blog.csdn.net/weixin_40001125/article/details/88252494](https://blog.csdn.net/weixin_40001125/article/details/88252494) + +#### 表联结查询 + +如果数据存储在多个表中,怎样⽤用单条SELECT语句句检索出数据? + +答案是使⽤用联结。简单地说,联结是⼀种机制,用来在一条SELECT语句中关联表,因此称之为联 +结。 + +使⽤用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。 + +##### 内联结(等值连接)——INNER JOIN + +获取两个表中字段匹配关系的记录。 + +```mysql +SELECT 表名1.字段名1,表名2.字段名2... FROM 表名1 INNER JOIN 表名2 ON 表名1.字段名3 = 表名2.字段名3; +``` + +也可以省略 INNER ,只写一个 JOIN。 + +![](https://i.loli.net/2020/11/11/B9bHELYmCAZwiJ1.png) + +> 举例:我们需要查询出所有的商品及对应的供应商信息: +> +> ```mysql +> SELECT vend_name,prod_name,prod_price +> FROM vendors INNER JOIN products +> ON vendors.vend_id = products.vend_id +> -- 查询结果 +> +-------------+----------------+------------+ +> | vend_name | prod_name | prod_price | +> +-------------+----------------+------------+ +> | ACME | Bird seed | 10.00 | +> | ACME | Carrots | 2.50 | +> | ACME | Detonator | 13.00 | +> | ACME | Safe | 50.00 | +> | ACME | Sling | 4.49 | +> | ACME | TNT (1 stick) | 2.50 | +> | ACME | TNT (5 sticks) | 10.00 | +> | Anvils R Us | .5 ton anvil | 5.99 | +> | Anvils R Us | 1 ton anvil | 9.99 | +> | Anvils R Us | 2 ton anvil | 14.99 | +> | Jet Set | JetPack 1000 | 35.00 | +> | Jet Set | JetPack 2000 | 55.00 | +> | LT Supplies | Fuses | 3.42 | +> | LT Supplies | Oil can | 8.99 | +> +-------------+----------------+------------+ +> ``` +> +> 上面语句等价于: +> +> ```mysql +> SELECT vend_name,prod_name,prod_price +> FROM vendors,products +> WHERE vendors.vend_id = products.vend_id +> ``` + +多表联结:SQL对⼀一条SELECT语句句中可以联结的表的数目没有限制。 + +```mysql +SELECT 表名1.字段名1,表名2.字段名2... +FROM 表名1 +INNER JOIN 表名2 ON 表名1.字段名3 = 表名2.字段名3 +INNER JOIN 表名3 ON 表名2.字段名4 = 表名3.字段名4 +... +(WHERE 过滤条件); +-- ON 后面跟联结条件 +``` + +##### 自联结 + +自联结在查询一些特定数据时可以作为子嵌套查询的替代 + +这时候,就需要自己与自己进行联结,为了区分,需要用AS取一个别名 + +> 举例: +> +> 假如你发现某物品(其ID为DTNTR)存在问题,因此想知道生产该物品的供应商生产的其他物品是否也存在这些问题。此查询要求首先找到生产ID为DTNTR的物品的供应商,然后找出这个供应商生产的其他物品。 +> +> ```mysql +> -- 1.自联结 JOIN +> SELECT p1.prod_id,p1.prod_name +> FROM products AS p1 +> JOIN products AS p2 +> ON p1.vend_id = p2.vend_id +> WHERE p2.prod_id = 'DTNTR'; +> -- 2.自联结 WHERE +> SELECT p1.prod_id,p1.prod_name +> FROM products AS p1,products AS p2 +> WHERE p1.vend_id = p2.vend_id AND p2.prod_id = 'DTNTR'; +> -- 3.子查询 +> SELECT prod_id,prod_name +> FROM products +> WHERE vend_id = (SELECT vend_id FROM products WHERE prod_id = 'DTNTR'); +> -- 查询结果 +> +---------+----------------+ +> | prod_id | prod_name | +> +---------+----------------+ +> | DTNTR | Detonator | +> | FB | Bird seed | +> | FC | Carrots | +> | SAFE | Safe | +> | SLING | Sling | +> | TNT1 | TNT (1 stick) | +> | TNT2 | TNT (5 sticks) | +> +---------+----------------+ +> ``` +> +> + +自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候**处理联结远比处理子查询快得多**。 + +##### 外部联结 + +* 左联结 LEFT JOIN:以左侧表为基准,去关联右侧的表进行联结,如果有未关联的数据,那么结果为null + +* 右联结 RIGHT JOIN:以右侧表为基准,去关联左侧的表进行联结,如果有未关联的数据,那么结果为null + + ![](https://i.loli.net/2020/11/11/NszZBtwy3GSOMcU.png) + +> 例如:我们要对每个客户下了多少订单进行计数,**包括那些至今尚未下订单的客户**; +> +> ```mysql +> -- 1.内部联结。它检索所有客户及其订单: +> SELECT customers.cust_id,orders.order_num +> FROM customers INNER JOIN orders +> ONcustomers.cust_id = orders.cust_id; +> +---------+-----------+ +> | cust_id | order_num | +> +---------+-----------+ +> | 10001 | 20005 | +> | 10001 | 20009 | +> | 10003 | 20006 | +> | 10004 | 20007 | +> | 10005 | 20008 | +> +---------+-----------+ +> -- 明显这种方式不能达到我们的要求,它不包含至今尚未下订单的客户 10002 +> +> -- 2.外部联结。检索所有客户,包括那些没有订单的客户 +> SELECT customers.cust_id,orders.order_num +> FROM customers LEFT JOIN orders +> ON customers.cust_id = orders.cust_id; +> -- 也可以写成这样 +> SELECT customers.cust_id,orders.order_num +> FROM orders RIGHT JOIN customers +> ON customers.cust_id = orders.cust_id; +> -- 查询结果 +> +---------+-----------+ +> | cust_id | order_num | +> +---------+-----------+ +> | 10001 | 20005 | +> | 10001 | 20009 | +> | 10002 | NULL | +> | 10003 | 20006 | +> | 10004 | 20007 | +> | 10005 | 20008 | +> +---------+-----------+ +> +> -- 加入订单量计数 +> SELECT customers.cust_id,customers.cust_name,COUNT(orders.order_num) AS num_ord +> FROM customers LEFT JOIN orders +> ON customers.cust_id = orders.cust_id +> GROUP BY customers.cust_id; +> -- 查询结果 +> +---------+----------------+---------+ +> | cust_id | cust_name | num_ord | +> +---------+----------------+---------+ +> | 10001 | Coyote Inc. | 2 | +> | 10002 | Mouse House | 0 | +> | 10003 | Wascals | 1 | +> | 10004 | Yosemite Place | 1 | +> | 10005 | E Fudd | 1 | +> +---------+----------------+---------+ +> +> -- 列出所有产品以及订购数量量,包括没有⼈人订购的产品; +> select products.prod_id,products.prod_name,count(orderitems.order_num) AS num_ord +> from products left join orderitems +> on products.prod_id = orderitems.prod_id +> group by products.prod_id; +> ``` + +> **表联结注意事项** +> +> * 保证使⽤用正确的联结条件,否则将返回不不正确的数据。 +> * 应该总是提供联结条件,否则会得出笛卡⼉儿积。 +> * 在一个联结中可以包含多个表,甚至对于每个联结可以采⽤用不同的联结类型。虽然这样做是合法的,一般也很有用,但应该在一起测试它们前,分别测试每个联结。这将使故障排除更为简单 + +### 组合查询 + +MySQL也允许执行多个查询(多条SELECT语句句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。 + +**UNION规则** + +* UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句句,将要使用3个UNION关键字)。 +* UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出) +* 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。 + +> 举例:假如需要价格小于等于5的所有物品的一个列表,而且还想包括供应商1001和1002生产的所有物品。 +> +> ```mysql +> SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5 +> UNION +> SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id in(1001,1002); +> +> -- 查询结果 +> +---------+---------+------------+ +> | vend_id | prod_id | prod_price | +> +---------+---------+------------+ +> | 1003 | FC | 2.50 | +> | 1002 | FU1 | 3.42 | +> | 1003 | SLING | 4.49 | +> | 1003 | TNT1 | 2.50 | +> | 1001 | ANV01 | 5.99 | +> | 1001 | ANV02 | 9.99 | +> | 1001 | ANV03 | 14.99 | +> | 1002 | OL1 | 8.99 | +> +---------+---------+------------+ +> +> -- UNION会从查询结果集中自动去除了重复的行 这是UNION的默认行为,但是如果需要,可以改变它。 +> -- 如果想返回所有匹配的行,可使用UNION ALL +> SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5 +> UNION ALL +> SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id in(1001,1002); +> +> -- 结果 +> +---------+---------+------------+ +> | vend_id | prod_id | prod_price | +> +---------+---------+------------+ +> | 1003 | FC | 2.50 | +> | 1002 | FU1 | 3.42 | -- 重复数据 +> | 1003 | SLING | 4.49 | +> | 1003 | TNT1 | 2.50 | +> | 1001 | ANV01 | 5.99 | +> | 1001 | ANV02 | 9.99 | +> | 1001 | ANV03 | 14.99 | +> | 1002 | FU1 | 3.42 | -- 重复数据 +> | 1002 | OL1 | 8.99 | +> +---------+---------+------------+ +> ``` +> +> **对组合查询结果排序** +> +> SELECT语句的输出用ORDER BY子句排序。在⽤UNION组合查询时,只能使⽤一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。**ORDER BY子句是对整个结果集排序** +> +> ```mysql +> SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5 +> UNION +> SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id in(1001,1002) +> ORDER BY prod_price; +> +> -- 查询结果 +> +---------+---------+------------+ +> | vend_id | prod_id | prod_price | +> +---------+---------+------------+ +> | 1003 | FC | 2.50 | +> | 1003 | TNT1 | 2.50 | +> | 1002 | FU1 | 3.42 | +> | 1003 | SLING | 4.49 | +> | 1001 | ANV01 | 5.99 | +> | 1002 | OL1 | 8.99 | +> | 1001 | ANV02 | 9.99 | +> | 1001 | ANV03 | 14.99 | +> +---------+---------+------------+ +> ``` + +## MySQL事务 + +事务(Transaction)是由⼀系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。 + +![](https://i.loli.net/2020/11/13/mEoWeQDFin72Rhd.png) + +事务的基本语法: + +```mysql +start transaction;或者 begin; +-- 事务操作的语句 +commit; -- 使得当前的修改确认 +rollback; -- 使得当前的修改被放弃 +``` + +### 事务的ACID特性 + +1. **原子性(Atomicity)** + + 事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全部执行失败。 + + 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错, + 会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体。 + +2. **一致性(Consistency)** + + 事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,不能时数据发生错乱 + +3. **隔离性(Isolation)** + + 事务的隔离性是指在**并发环境**中,**并发的事务**是互相隔离的,各有各自的数据空间。 + +4. **持久性(Duration)** + + 事务的持久性是指事务一旦提交后,数据库中的数据必须被永久的保存下来。即使服务器系统崩溃或服务器宕机,只要数据库重新启动,那么一定能够将其恢复到事务成功结束后的状态。 + +### 事务并发常见问题 + +* 脏读(Dirty Read):读取到了没有提交的数据。 + + 例如:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据就是脏数据。 + +* 不可重复读(Unrepeatale Read):同⼀条命令返回不同的结果集 + + 例如:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。 + +* 幻读(Phantom Read):重复查询的过程中,数据就发生了量的变化。 + +### 事务的隔离级别 + +| 事务隔离级别 | 脏读 | 不可重复读 | 幻读 | +| -------------------------- | ---- | ---------- | ------ | +| 读未提交(READ_UNCOMMITTED) | 允许 | 允许 | 允许 | +| 读已提交(READ_COMMITTED) | 禁止 | 允许 | 允许 | +| 可重复读(REPEATABLE_READ) | 禁止 | 禁止 | 可能会 | +| 顺序读(SERIALIZABLE) | 禁止 | 禁止 | 禁止 | + +> 4种事务隔离级别从上往下,级别越高,并发性越差,安全性就越高。 一般数据默认级别是读已提交或可重复读。 + +> **查看和设置事务隔离级别的语句** +> +> ```mysql +> -- 查看当前会话中事务的隔离级别 +> select @@tx_isolation; +> -- 设置当前会话中的事务隔离级别 +> set session transaction isolation level read uncommitted | read committed | repeatable read | SERIALIZABLE +> ``` + +1. **读未提交(READ_UNCOMMITTED)** + + 该隔离级别允许脏读取,其隔离级别是最低的。一个事务正在处理某⼀数据,并对其进行了更新,但同时尚未完成事务,因此还没有提交事务,而与此同时,允许另一个事务也能够访问该数据。 + +2. **读已提交(READ_COMMITTED)** + + 不同的事务执行的时候只能获取到已经提交的数据。 这样就不会出现上面的脏读的情况了。但是在同一个事务中执行同一个读取,结果不一致,即不可重复读问题 + +3. **可重复读(REPEATABLE_READ)** + + 保证在事务处理过程中,多次读取同一个数据时,该数据的值和事务开始时刻是一致的。因此该事务级别限制了不可重复读和脏读,但是有可能出现幻读的数据。 + +4. **顺序读(SERIALIZABLE)** + + 最严格的事务隔离级别,不允许事务并发,必须依次排序执行。 + +**不同的隔离级别的锁的情况** + +1. 读未提交(RU): 有行级的锁,没有间隙锁。它与RC的区别是能够查询到未提交的数据。 +2. 读已提交(RC):有行级的锁,没有间隙锁,读不到没有提交的数据。 +3. 可重复读(RR):有行级的锁,也有间隙锁,每次读取的数据都是一样的,并且没有幻读的情况。 +4. 序列列化(S):有行级锁,也有间隙锁,读表的时候,就已经上锁了。 + +## MySQL存储过程 + +存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。 + +存储过程就像脚本语⾔言中函数定义⼀样,是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,在需要时直接调用。 + +**创建存储过程** :`create procedure 存储过程名()` + +> `\d //`:修改MySQL默认的语句结尾符`;`改为`//` 。 +> +> `create procedure 存储过程名()` 创建语句 +> +> `BEGIN`和`END`语句用来限定存储过程体 + +```mysql +-- 定义存储过程 向users表中循环插入80条数据 +\d // +create procedure p1() +begin +set @i=10; +while @i<90 do +insert into users values(null,concat('user:',@i),@i,0); -- +set @i=@i+1; +end while; +end; +// +``` + +**调用存储过程**: `call 存储过程名()` + +**查看存储过程**:`show create procedure 存储过程名\G` + +**删除存储过程**:`drop procedure 存储过程名` + +## MySQL触发器 + +触发器是指MySQL**响应**写操作(增、删、改)而**自动执行**的一条或一组定义在BEGIN和END之间的MySQL语句。 + +或可理理解为:提前定义好一个或一组操作,在指定的SQL操作前或后来触发指定的SQL自动执行,触发器就像是JavaScript中的事件一样。 + +**触发器语法**: + +```mysql +-- 创建触发器 +\d // +CREATE TRIGGER trigger_name trigger_time trigger_event +ON tbl_name FOR EACH ROW +BEGIN +trigger_stmt; +END; +// +\d ; -- 结束之后要把语句结束符改回来 +-- 说明: +# trigger_name:触发器名称 +# trigger_time:触发时间,可取值:BEFORE或AFTER +# trigger_event:触发事件,可取值:INSERT、UPDATE或DELETE。 +# tb1_name:指定在哪个表上 +# trigger_stmt:触发理SQL语句。 + +-- 查看所有的 触发器器 +show triggers\G; + +-- 删除触发器 +drop trigger trigger_name; +``` + +> 在使用触发器时,可以建立虚拟表来方便某些操作 +> +> * 在INSERT触发器代码内,可引用⼀个名为NEW的虚拟表,访问被 插入的行; +> * 在DELETE触发器代码内,可引用一个名为OLD的虚拟表,访问被删除的行; +> * OLD中的值全都是只读的,不能更新。 +> * 在AFTER DELETE的触发器中无法获取OLD虚拟表 +> * 在UPDATE触发器代码中 +> * 可以引用一个名为OLD的虚拟表访问更新以前的值 +> 可以引用一个名为NEW的虚拟表访问新更新的值; + +## MySQL的视图 + +**视图的定义及特性** + +视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询语句。 + +视图本身不不包含数据,它们返回的数据是从其他表中检索出来的。 + +**视图的作用** + +* 重用SQL语句,简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。 + +* 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。 + +* 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。 + +> **注意:视图不能索引,也不不能有关联的触发器或默认值**。 + +**视图的语法和使用** + +```mysql +-- 创建视图 +create view 视图名 as 要封装的select语句; +-- 例如: +create view v_users as select id,name,age from users where age >= 25 and age<= 35; + +-- 查看当前库中所有的视图 +show tables; -- 可以查看到所有的表和视图 +show table status where comment='view'\G; -- 只查看当前库中的所有视图 + +-- 删除视图v_t1: +drop view 视图名; +``` + +## MySQL索引与优化 + +### 索引概述 + +**定义** + +MySQL官方对索引的定义为:**索引(Index)是帮助MySQL高效获取数据的数据结构。** + +索引类似图书的目录,是一种有序结构,可以提高数据检索的效率,降低数据库的IO成本。 + +**分类** + +| 索引类型 | 说明 | +| -------- | ------------------------------------------------------------ | +| 主键索引 | 根据主键建立的索引。**不允许重复,不允许空值**。
如果表中没有定义主键,InnoDB 会选择一个唯⼀的非空索引代替;如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。 | +| 唯一索引 | 用来建立索引的列的值必须是**唯一的,允许空值** | +| 普通索引 | 用表中普通列构建的索引,没有任何限制 | +| 全文索引 | 用大文本对象的列构建的索引(5.6之前MyISAM支持,InnoDB不支持;8.0之前不支持中文。) | +| 组合索引 | 用多个列组合构建的索引,这多个列的值不允许空值,**需遵循“最左”原则** | + +```mysql +-- 创建索引和删除索引 +-- 1.主键索引 + -- 1.创建表时,直接创建主键索引 PRIMARY KEY + CREATE TABLE users( + id int NOT NULL AUTO_INCREMENT PRIMARY KEY + )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + -- 2.修改时添加主键和自增 + alter table users modify uid int primary key AUTO_INCREMENT; + -- 删除主键索引注意需要先取消自增,再删除主键 + -- 先取消自增,修改字段 + alter table users modify uid int; + -- 删除主键 + alter table users drop primary key; +-- 2.唯一索引 + -- 1.创建表时,直接创建唯一索引UNIQUE KEY + CREATE TABLE users( + name varchar(10) NOT NULL , + UNIQUE KEY name(name), -- name为索引名 + )ENGINE=InnoDB DEFAULT CHARSET-utf8mb4 + -- 2.添加唯一索引UNIQUE当前列要求唯一,但允许为空 + alter table users add untque u_name(name); -- u_name为索引名 + -- 删除唯一索引 + alter table users drop index u_name; +-- 3.普通索引 + -- 1.创建表时,直接创建普通索引 KEY + CREATE TABLE users( + email varchar ( 10 ) NOT NULL , + KEY index_email(email) -- index_email为索引名 + )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 + -- 2.添加索引 + alter table users add index in_email(email); + -- 删除普通索引 + drop index in_email on users; +-- 4.添加全文索引 + ALERT TABLE 表名 ADD FULLTEXT INDEX 索引名(要建立索引的字段); +-- 5.组合索引 + -- 添加索引 + alter table users add index in_x(email,phone,uname) + -- 删除索引 + alter table users drop index in_x; +``` + +### 索引原理-索引与B+Tree + +> **哈希索引** +> +> 只有memory(内存)存储引擎支持哈希索引,哈希索引用索引列的值计算该值的hashCode,然后在hashCode相应的位置存执该值所在行数据的物理位置,因为使用散列算法,因此访问速度非常快,但是一个值只能对应一个hashCode,而且是散列的分布方式,因此哈希索引不支持范围查找和排序的功能。 + +正常情况下,如果不指定索引的类型,那么一般是指B+Tree索引。 + +存储引擎以不同的方式使用B+Tree索引。性能也各有不同,InnoDB时按照原数格式进行存储的。 + +首先,要了解B+树之前,我们先了解一下B树,**B树是一种自平衡树状结构,一般多用于存储系统上**,比如数据库或文件系统。 + +> 一个n阶的B树,每个节点可以存储n-1个值 + +![](https://i.loli.net/2020/11/14/R9swUcgBDSIWZ5p.png) + +可以看到B树每个叶子节点都带有数据,在效率上还是存在一些弊端,可以进行优化,提高查询效率,便演变出了B+树,如下图所示 + +![image-20201114211729600](https://i.loli.net/2020/11/14/FeBMcODgiwTVfqA.png) + +使用B+树的优势 + +1. 磁盘读写代价更低 + + B树的数据和索引都在同一个节点上,那么每个块中包含的索引是少量的,如果想要取出比较深层的数据,意味着要读取更多的块,才能得到想要的索引和数据,那么就增加了IO次数; + + 而B+树中每个块能存储的索引是B树的很多倍,那么获取比较深层的数据,也只需要读取少量的块 + 就可以,那么就减少了磁盘的IO次数 + +2. 随机IO的次数更少 + + 随机I/O是指读写操作时间连续,但访问地址不连续,时长约为10ms。 + + 顺序I/O是指读取和写入操作基于逻辑块逐个连续访问来自相邻地址的数据,时长约为0.1ms + + 在相同情况下,B树要进行更多的随机IO,而B+树需要更多的顺序IO,因此B+树,效率也更快 + +3. 查询速度更稳定 + + 由于B+Tree非叶子节点不存储数据(data),因此所有的数据都要查询至叶子节点,而叶子节点的 + 高度都是相同的,因此所有数据的查询速度都是一样的。 + +### 聚簇索引和非聚簇索引 + +**聚簇索引:**索引即数据,找到索引便找到了数据 + +**非聚簇索引:**索引是一个文件,数据在另一个文件,根据索引文件找到数据的key值,然后到数据文件中根据key值找到数据 + +![](https://i.loli.net/2020/11/14/g98ev1TwkP5cAUS.png) + +> **MyISAM的索引方案** +> +> InnoDB中索引即数据,也就是聚簇索引的那棵B+树的叶子节点中已经把所有完整的用户记录都包含了了,而MyISAM的索引方案虽然也使用树形结构,但是却将索引和数据分开存储,也就是把索引信息单独存到一个文件中,这个文件称为索引文件。 +> +> MyISAM会单独为表的主键创建⼀个索引,只不过在索引的叶子节点中存储的不是完整的数据记录,而是主键值 + 行号的组合。也就是先通过索引找到对应的行号,再通过行号去找对应的记录!其它非主键索引也是一样的,这种情况我们称为“回行”。所以在MyISAM中所有的索引都是非聚簇索引,也叫二级索引。 +> +> ![](https://i.loli.net/2020/11/14/PbsI1ugyhd9UZGz.png) +> +> **MyISAM和InnoDB的区别** +> +> * 数据存储方式: +> * InnoDB由两种文件组成,表结构、数据和索引 +> * MyISAM由三种文件组成,表结构、数据、索引 +> +> * 索引的方式: +> * 索引的底层都是基于B+Tree的数据结构建立 +> * InnoDB中主键索引为聚簇索引,辅助索引是非聚簇索引 +> * MyISAM中数据和索引存在不同的文件中,因此都是非聚簇索引 +> * 事务的支持: +> * InnoDB支持事务 +> * MyISAM不支持事务 + +### 慢查询与SQL优化 + +#### 慢查询与Explain执行计划 + +MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。 + +默认情况下,MySQL数据库并不启动慢查询目思,需要手动来设置这个参数。如果不是调优需要的话,一般不建议启动该参数,开启慢查询日志会或多或少带来一定的性能影响。 + +![](https://i.loli.net/2020/11/14/dlLvRoOMuDXxQY8.png) + +**Explain执行计划** + +一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划。这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。MySQL为我们提供了EXPLAIN语句来帮助我们查看某个语句的具体执行计划。 + +![](https://i.loli.net/2020/11/14/V5hRgPtf2BxEYM1.png) + +| 参数 | 参数解释 | +| ------------- | -------------------------------------------------------- | +| id | 在一个大的查询语句中每个 SELECT关键字都对应一个唯一的 id | +| select_type | SELECT关键字对应的那个查询的类型 | +| table | 表名 | +| partitions | 匹配的分区信息 | +| type | 针对单表的访问方法 | +| possible_keys | 可能用到的索引 | +| key | 实际上使用的索引 | +| key_len | 实际使用到的索引长度 | +| ref | 当使用索引列等值查询时,与索引列进行等值匹配的对象信息 | +| rows | 预估的需要读取的记录条数 | +| filtered | 某个表经过搜索条件过滤后剩余记录条数的百分比 | +| Extra | 一些额外的信息 | + +### SQL优化 + +**索引优化** + +* 适当建立索引 + * 创建并使用自增数字来建立主键索引 + * 为经常作为where条件的字段建立索引 + * 添加索引的字段尽可能的保持唯一性 + * 可考虑使用组合索引并进行*索引覆盖*(多个字段组合成一个联合索引,在查询时,所要的字段和查询条件中的索引是一致的) + * 索引绝不是加的越多越好,每建立一个索引都会建立一棵B+树,并且需要维护,很费性能和存储空间。 + +* 合理使用索引,查询时避免索引失效 + * 不要在查询的索引列上使用函数 + * 不要在查询的索引列上进行运算 + * 避免查询条件左右类型不匹配发生隐式转换 + * 使用like模糊查询时避免通配符%放在第一位 + * 多个单列索引并不是最佳选择,可以使用组合索引 + * 使用组合查询时谨记最左前缀原则(从最左字段开始使用索引:查询条件中使用了组合索引的第一个字段,索引才会被使用。因此,在组合索引中索引列的顺序至关重要。如果不是按照索引的最左列开始查找,则无法使用索引。) + +**SQL语句的优化** + +* 避免嵌套语句(子查询) +* 避免多表查询(复杂查询简单化) \ No newline at end of file diff --git a/source/_posts/XML和JSON的使用(java).md b/source/_posts/XML和JSON的使用(java).md new file mode 100644 index 0000000..325c7d5 --- /dev/null +++ b/source/_posts/XML和JSON的使用(java).md @@ -0,0 +1,484 @@ +--- +title: XML和JSON的使用(java) +date: 2020-10-24 16:24:49 +tags: +- Java +- XML +- JSON +categories: +- Java基础 +--- + +## XML + +### 概述 + +[XML](https://baike.baidu.com/item/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80/2885849?fromtitle=xml&fromid=86251&fr=aladdin)全称可扩展标记语言(eXtensible Markup Language)。是一种用于标记电子文件使其具有结构性的标记语言。 + + + +> 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。 + +**特性:** + +1. xml具有平台无关性, 是一门独立的标记语言. +2. xml具有自我描述性 + +**用途** + +1. 网络数据传输 +2. 数据存储 +3. 配置文件 + +> .XML文件是保存XML数据的一种方式,XML数据也可以以其他的方式存在(如在内存中构建XML数据)。不要将XML语言狭隘的理解成XML文件。 + +###XML语法 + +#### 基本语法 + +在XML文档开头,要先写XML文档声明,格式如下: + +```xml + +``` + +XML文档正文都是由一个个的**标记**组成的,包含: + +* 开始标记(开放标记): <标记名称> +* 结束标记(闭合标记): +* 标记内容: 开始标记与结束标记之间 ,是标记的内容。 + +> 标记名称: 自定义名称,必须遵循以下命名规则: +> +> 1. 名称可以含字母、数字以及其他的字符 +> 2. 名称不能以数字或者标点符号开始 +> 3. 名称不能以字符 “xml”(或者 XML、Xml)开始 +> 4. 名称不能包含空格,不能包含冒号(:) +> 5. 名称区分大小写 + +例如 ,我们通过标记, 描述一个名字: + +```xml +答案 +``` + +**注意:** + +1. 一个XML文档中,必须有且且仅允许有一个根标记。 + +2. 标记可以嵌套, 但是不允许交。 + +3. 标记名称 允许重复 + +4. 标记的层级称呼 (子标记,父标记 ,兄弟标记,后代标记 ,祖先标记),例如下面代码: + + ```xml + + + 张三 + 180cm + + + 李四 + 200cm + + + ``` + + name是person的子标记,是person的后代标记,是persons的后代标记,是length的兄弟标记。person是name的父标记。persons是name的祖先标记。 + +5. 标记除了开始和结束 , 还可以包含属性。标记中的属性,在标记开始时描述,由属性名和属性值组成。 + 在开始标记中, 描述属性,可以包含0-n个属性,每一个属性是一个键值对! + 属性名不允许重复 ,键与值之间使用等号连接, 多个属性之间使用空格分割,属性值 必须被引号引住。例如: + + ```xml + + + 李四 + 18 + + + ``` + +6. 可以在XML文档中写注释,但是不能写在文档声明前,不能嵌套注释。 + 格式如下: + + ```xml + + ``` + +#### 语法进阶CDATA + +CDATA 是不会被 XML 解析器解析的文本数据。像 "<" 和 "&" 字符在 XML 元素中都是非法的。 + +> "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。 +> +> "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。 + +某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。CDATA 部分中的所有内容都会被解析器忽略。定义格式如下: + +```xml + +``` + +### Java解析XML + +在java中,XML可以通过下面四种方式解析 + +1. SAX解析 +2. DOM解析 +3. JDOM解析 +4. DOM4J解析 + +其实也可以说成SAX和DOM两种解析方式,因为后面两种也属于DOM解析,是由DOM解析的基础上扩展来的,只是用与Java。 + +#### SAX解析 + +解析方式是事件驱动机制 ! + +SAX解析器,**逐行读取**XML文件进行解析 ,每当解析到一个标签的**开始/结束/内容/属性**时,触发事件。我们可以编写程序在这些事件发生时,进行相应的处理。 + +> **优点:** +> +> 1. 分析能够立即开始,而不是等待所有的数据被处理 +> 2. 逐行加载,节省内存。有助于解析大于系统内存的文档 +> 3. 有时不必解析整个文档,它可以在某个条件得到满足时停止解析。 +> +> **缺点:** +> +> 1. 单向解析,无法定位文档层次,无法同时访问同一文档的不同部分数据(因为逐行解析,当解析第n行时,第n-1行已经被释放了,无法再进行操作了)。 +> 2. 无法得知事件发生时元素的层次,只能自己维护节点的父/子关系. +> 3. 只读解析方式,无法修改XML文档的内容。 + +#### DOM解析 + +是用与平台和语言无关的方式表示XML文档的官方W3C标准,分析该结构通常需要**加载整个文档**和内存中建立文档树模型。程序员可以通过操作文档树,来完成数据的获取、修改、删除等. + +> **优点:** +> +> 1. 文档在内存中加载,允许对数据和结构做出更改. +> 2. 访问是双向的,可以在任何时候在树中双向解析数据。 +> +> **缺点:** +> +> 1. 文档全部加载在内存中,消耗资源大. + +#### JDOM解析 + +目的是解析为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。由于是第一个Java特定模型,JDOM一直得到大力推广和促进。 + +> 优点: +> +> 1. 使用具体类而不使用接口,简化了DOM的API。 +> 2. 大量使用了Java集合类,方便了Java开发人员。 +> +> 缺点: +> +> 1. 没有较好的灵活性。 +> 2. 性能不是那么优异。 + +#### DOM4J解析 + +它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项。 + +DOM4J是一个非常优秀的Java XML API,具有性能优异、灵活性好、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML。 + +##### DOM4J解析XML + +**步骤:** + +1. 引入DOM4j的jar包 dom4j.jar + +2. 创建一个指向XML文件的输入流 + + ```java + FileInputStream fis = new FileInputStream("xml文件的地址"); + ``` + +3. 创建一个XML读取工具对象`SAXReader` + + ```java + SAXReader sr = new SAXReader(); + ``` + +4. 使用读取工具对象,读取XML文档的输入流, 并得到文档对象`Document` + + ```java + Document doc = sr.read(fis); + ``` + +5. 通过文档对象, 获取XML文档中的根元素对象 `Element root` + + ```java + Element root = doc.getRootElement(); + ``` + +**文档对象 `Document`** + +指的是加载到内存的 整个XML文档。常用方法: + +1. 通过文档对象, 获取XML文档中的根元素对象 + + ```java + Element root = doc.getRootElement(); + ``` + +2. 添加根节点 + + ```java + Element root = doc.addElement("根节点名称"); + ``` + +**元素对象 `Element`** + +指的是XML文档中的单个节点。常用方法: + +| 方法 | 描述 | +| -------------------------------------------- | -------------------------------------------- | +| `String getName()` | 获取当前节点的标记名称 | +| `String getText()` | 获取节点内容 | +| `void setText(String s)` | 设置节点内容 | +| `String attributeValue(String s)` | 获取节点的属性值,s表示属性名称 | +| `void addAttribute(String key,String value)` | 添加属性 (key属性名,value属性值) | +| `Element element(String name)` | 根据子节点名称获取匹配名称的第一个子节点对象 | +| `List elements()` | 获取所有的子节点对象 | +| `String elementText(String s)` | 返回子节点内容,s表示子标签名称 | +| `Element addElement(String name)` | 添加子节点 (name子节点名称) | + +**解析本地文件案例** + +![](https://i.loli.net/2020/10/24/DWNRyanEpfSKIt9.png) + +**解析网络文件案例** + +![](https://i.loli.net/2020/10/24/yR6wnKSqAjibEgI.png) + +##### DOM4J - XPATH解析XML + +XPATH就是通过路径快速的查找一个或一组元素 + +| 标记 | 解释 | +| ---- | ------------------------------------------------------------ | +| / | 从根节点开找 | +| // | 查找后代节点 | +| . | 查找当前节点 | +| … | 查找父节点 | +| @ | 选择属性,属性使用方式:
[@属性名=‘值’]
[@属性名>‘值’]
[@属性名<‘值’]
[@属性名!=‘值’] | + +例如:在我们解析本地文件案例中有一个books.xml文件,如果我们想找到 “三国演义”这个元素,XPATH 路径k可以这样写: + +```xml +//book[@id='1001']//name +``` + +通过Node类的两个方法, 来完成查找(Node是 Document 与 Element 的父接口) + +方法1,根据路径表达式, 查找匹配的单个节点,如果结果有多个,只取第一个 + +```java +Node e = selectSingleNode("路径表达式"); +``` + +方法2,根据路径表达式, 查找匹配的所有节点 + +```java +List es = selectNodes("路径表达式"); +``` + +例子: + +![](https://i.loli.net/2020/10/24/dptXgi5PVfseMKL.png) + +![image-20201024011319670](https://i.loli.net/2020/10/24/IXvg15HAyc8KQ4J.png) + +### Java生成XML + +**步骤:** + +1. 通过文档帮助器 (`DocumentHelper`) ,创建空的文档对象 + + ```java + Document doc = DocumentHelper.createDocument(); + ``` + +2. 通过文档对象,向其中添加根节点 + + ```java + Element root = doc.addElement("根节点名称"); + ``` + +3. 通过根节点对象root , 丰富我们的子节点 + + ```java + Element e = root.addElement("元素名称"); + ``` + +4. 创建一个文件输出流 ,用于存储XML文件 + + ```java + FileOutputStream fos = new FileOutputStream("要存储的位置"); + ``` + +5. 将文件输出流, 转换为XML文档输出流 + + ```java + XMLWriter xw = new XMLWriter(fos); + ``` + +6. 写出文档 + + ```java + xw.write(doc); + ``` + +7. 释放资源 + + ```java + xw.close(); + ``` + +**例子** + +![image-20201024014247166](https://i.loli.net/2020/10/24/wJnlYCycOIZ2jVk.png) + +####XStream的使用 + +快速的将Java中的对象, 转换为 XML字符串. + +使用步骤: + +1. 创建XStream 对象 + + ``` + XStream x = new XStream(); + ``` + +2. 修改类生成的节点名称 (默认节点名称为 包名.类名) + + ``` + x.alias("节点名称",类名.class); + ``` + +3. 传入对象 , 生成XML字符串 + + ``` + String xml字符串 = x.toXML(对象); + ``` + +例子: + +![image-20201024013927345](https://i.loli.net/2020/10/24/BMce4ZkQX85qbNi.png) + +## JSON + +### 概述 + +[JSON](https://baike.baidu.com/item/JSON/2462549?fr=aladdin)全称JavaScript Object Notation ,JS对象简谱 ,是一种轻量级的数据交换格式。 + +> 它基于 [ECMAScript](https://baike.baidu.com/item/ECMAScript) (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 +> +> JSON是[Douglas Crockford](https://baike.baidu.com/item/Douglas Crockford/5960317)在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。 + +### json语法 + +> 该部分内容参考自https://www.sojson.com/json/json_syntax.html +> +> 版权所属:SOJSON(原创文章) +> +> 原文地址:https://www.sojson.com/json/json_syntax.html + +**json 语法规则** + +- **数据在名称/值对中**,也就是我们常说的键值对,用逗号分隔 +- **花括号{}保存对象** +- **方括号[]保存数组** + +**JSON 数据**的书写格式是:`{Key:Value}`、`{Key:Array}`。前面是键,中间是英文的“:”(冒号),然后是值。但是注意的是如果是字符串,严格来说都是要用英文双引号引起来的。例如: + +```json +{"name":"answer"} +``` + +JSON数据的值可以是 **数字(整数或浮点数)、字符串(在双引号中)、逻辑值(`true` 或 `false`)、数组(在方括号中)、对象(在花括号中)、`null`**。 + +**JSON对象**在花括号中,对象可以包含多个名称/值对,如下代码所示: + +```json +{ + "name": "answer", + "age": 21, +} +``` + +**JSON数组**在方括号("[]")中书写,数组可包含多个对象,如下“student”描述 + +```json +{ + "student": [ + { + "name": "answer", + "age": "21" + }, + { + "name": "brian", + "age": "20" + }, + { + "name": "joe", + "age": "25" + } + ] +} +``` + +在上面的例子中,对象 "student" 是包含三个对象的数组。每个对象代表一条关于一个学生(姓名和年龄)的记录。 + +### Java解析转换JSON + +> 将Java中的对象快速的转换为JSON格式的字符串。 +> +> 将JSON格式的字符串, 转换为Java的对象。 + +Java官方未提供官方的json解析工具,json的解析借助第三方工具完成。常见的第三方工具有谷歌的**Gson**和阿里巴巴的**fastjson**。在使用前都要先导入jar包,可以从某hub上下载。 + +![](https://i.loli.net/2020/10/24/OxXGZVTL7avnmEk.png) + +#### Gson + +**将对象转换为JSON字符串**,在需要转换JSON字符串的位置编写如下代码即可: + +```java +String json = new Gson().toJSON(要转换的对象); +``` + +![](https://i.loli.net/2020/10/24/axH4XYOTv9MK8Nq.png) + +**将JSON字符串转换为对象**,在需要转换Java对象的位置,编写如下代码: + +```java +对象 = new Gson().fromJson(JSON字符串,对象类型.class); +``` + +![](https://i.loli.net/2020/10/24/CXxaiUnwAqPYEOD.png) + +#### FastJson + +**将对象转换为JSON字符串**,在需要转换JSON字符串的位置编写如下代码即可: + +```java +String json=JSON.toJSONString(要转换的对象); +``` + +![](https://i.loli.net/2020/10/24/lRdcx8KVgMz69yp.png) + +**将JSON字符串转换为对象**,在需要转换Java对象的位置, 编写如下代码: + +```java +类型 对象名=JSON.parseObject(JSON字符串, 类型.class); +//或者 +List<类型> list=JSON.parseArray(JSON字符串,类型.class); +``` + +![](https://i.loli.net/2020/10/24/VE1laqAPfMgYvcG.png) + +![](https://i.loli.net/2020/10/24/eDRPWEik5fpCO2s.png) \ No newline at end of file diff --git a/source/_posts/smartupload简单实现文件上传.md b/source/_posts/smartupload简单实现文件上传.md new file mode 100644 index 0000000..c143537 --- /dev/null +++ b/source/_posts/smartupload简单实现文件上传.md @@ -0,0 +1,89 @@ +--- +title: smartupload简单实现文件上传 +date: 2020-12-12 14:01:24 +tags: +- JavaWeb +- 文件上传 +- smartupload +categories: +- JavaWeb +--- + +文件上传实质上就是客户端发起请求,将一个大数据IO流上传到服务器 + + + +**步骤:** + +**1.将jar包添加到项目中:smartupload.jar** + +**2.创建smartupload对象并初始化** + +```java +//创建对象 +SmartUpload smartUpload = new SmartUpload(); +//获得jsp的pageContent对象并初始化 +PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024, true); +smartUpload.initialize(pageContext); +//编码 +smartUpload.setCharset("utf-8"); +``` + +> **getPageContext()方法** +> +> ![](https://i.loli.net/2020/11/26/bJ7gEMCIVv83SDa.png) +> +> 参数的含义 +> +> ![](https://i.loli.net/2020/11/26/hJzWE5XqgsLcpG3.png) + +**3.调用SmartUpload对象的upload()方法上传文件** + +```java +//文件上传 +try { + smartUpload.upload(); +} catch (SmartUploadException e) { + e.printStackTrace(); +} +``` + +截止目前,文件就被上传到了服务器,但服务器并没有保存 + +**4. 保存文件到指定位置** + +```java +/*保存文件*/ +//得到smartUpload对象中文件数组的第1个文件 +File file = smartUpload.getFiles().getFile(0); +//得到该文件的信息 +String fileName = file.getFileName(); +//指定存储路径 +String path = "uploadfile/"+fileName; +//存储 +try { + file.saveAs(path,SmartUpload.SAVE_VIRTUAL); +} catch (SmartUploadException e) { + e.printStackTrace(); +} +``` + +至此,数据文件已经被存放到了某个指定路径下。接下来就可以自己决定如何在前端显示。 + +> `public void saveAs(String path, int optionSaveAs)` +> +> 其中,path是另存的文件路径,optionSaveAs是另存的选项,该选项有三值: +> +> * SAVEAS_PHYSICAL表明以操作系统的根目录为文件根目录另存文件, +> * SAVEAS_VIRTUAL表明以Web应用程序的根目录为文件根目录另存文件, +> * SAVEAS_AUTO则表示让组件决定, +> +> 当Web应用程序的根目录存在另存文件的目录时,它默认会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL。 + +> smartupload常用方法 +> +> ![image-20201126225644272](https://i.loli.net/2020/11/26/3AyUuBT54MoI1sP.png) + +> smaryupload中文文档: +> +> [https://www.cnblogs.com/mycodelife/archive/2009/04/26/1444132.html](https://www.cnblogs.com/mycodelife/archive/2009/04/26/1444132.html) \ No newline at end of file diff --git a/source/_posts/一文搞懂AJAX技术.md b/source/_posts/一文搞懂AJAX技术.md new file mode 100644 index 0000000..7236860 --- /dev/null +++ b/source/_posts/一文搞懂AJAX技术.md @@ -0,0 +1,233 @@ +--- +title: 一文搞懂AJAX技术 +date: 2020-12-12 13:58:17 +tags: +- JavaWeb +- JQuery +- AJAX +categories: +- JavaWeb +--- + +## AJAX简介 + +AJAX(Asynchronous JavaScript and XML)即异步的 JavaScript 和 XML。AJAX 是与服务器交换数据,在不重新加载整个页面的情况下更新部分网页的技术。 + + + +ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成: + +> 1. 使用CSS和XHTML来表示。 +> +> 2. 使用DOM模型来交互和动态显示。 +> 3. 使用XMLHttpRequest来和服务器进行异步通信。 +> 4. 使用javascript来绑定和调用。 + +**AJAX 的核心是 XMLHttpRequest 对象。** + +> 不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。 +> +> IE 浏览器使用 ActiveXObject,而其他的浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象 + +**AJAX属于前端技术,通过JS代码来编写。** + +## AJAX工作原理 + +Ajax的工作原理相当于在用户和服务器之间加了一个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器。像一些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。 + +![](https://i.loli.net/2020/11/26/SCFUDwdnKA8Mq1b.png) + +浏览器的普通交互方式 + +![](https://i.loli.net/2020/11/26/vYZBjVX8T1kHieA.jpg) + +浏览器的AJAX交互方式 + +![a3](https://i.loli.net/2020/11/26/sweN5ixgVCjq3KZ.jpg) + +有了AJAX层,用户页面可以不必等待服务器返回响应才可以进行下一个请求,而是以异步的方式,不同的AJAX请求互相不需要等待,极大的提高了效率。 + +## XMLHttpRequest对象常用属性和方法 + +### 属性 + +**onreadystatechange 属性** + +onreadystatechange 属性存有处理服务器响应的函数。 下面的代码定义一个空的函数,可同时对 +onreadystatechange 属性进行设置: + +```javascript +xmlHttp.onreadystatechange = function() { + //code +} +``` + +**readyState属性** + +readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。 +readyState 属性可能的值: + +![image-20201126212659531](https://i.loli.net/2020/11/26/bQ8muwY2EXLc4PH.png) + +向上面的 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据): + +```javascript +xmlHttp.onreadystatechange = function() { + if (xmlHttp.readyState == 4) { + //从服务器的response获得数据 + } +} +``` + +**responseText 属性** + +可以通过 responseText 属性来取回由服务器返回的数据。 在下面的代码中,将时间文本框的值设置为等于responseText: + +```javascript +xmlHttp.onreadystatechange = function() { + if (xmlHttp.readyState == 4) { + document.myForm.time.value = xmlHttp.responseText; + } +} +``` + +其它属性如下: + +![](https://i.loli.net/2020/11/26/IYs3p7mf9ckCJXi.png) + +### 方法 + +**open() 方法** + +open() 有三个参数。第一个参数定义发送请求所使用的方法,第二个参数规定服务器端脚本的URL,第三个参数规定是否对请求进行异步地处理。 + +```javascript +xmlHttp.open("GET","test.jsp?key=xxx&key=xxx",true); +``` + +**send() 方法** + +send() 方法将请求送往服务器。 + +```javascript +xmlHttp.send(null); +``` + +> open和send方法中参数的使用 +> +> [https://blog.csdn.net/weixin_40292626/article/details/78708160](https://blog.csdn.net/weixin_40292626/article/details/78708160) + +其他方法如下: + +![](https://i.loli.net/2020/11/26/HQK42zNWruhafdR.png) + +## AJAX实现方法 + +### 原生JS方法 + +实现AJAX的步骤如下: + +1. 创建XMLHttpRequest对象。 +2. 设置请求方式。 +3. 调用回调函数。 +4. 发送请求。 + +**1. 创建XMLHttpRequest对象** + +一般我们手写AJAX的时候,首先要判断该浏览器是否支持XMLHttpRequest对象,如果支持则创建该对象,如果不支持则创建ActiveX对象。JS代码如下: + +```javascript +//第一步:创建XMLHttpRequest对象 +var xmlHttp; +if (window.XMLHttpRequest) { + //非IE + xmlHttp = new XMLHttpRequest(); +} else if (window.ActiveXObject) { + //IE + xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") +} +``` + +**2. 设置请求方式** + +```javascript +//第二步:设置和服务器端交互的相应参数,向路径http://localhost:8080/JsLearning3/getAjax准备发送数据 +var url = "http://localhost:8080/JsLearning3/getAjax"; +xmlHttp.open("POST", url, true); +``` + +**3. 调用回调函数** + +```javascript +//第三步:回调函数 +xmlHttp.onreadystatechange = function() { + if (xmlHttp.readyState == 4) { + if (xmlHttp.status == 200) { + var obj = document.getElementById(id); + obj.innerHTML = xmlHttp.responseText; + } else { + alert("AJAX服务器返回错误!"); + } + } +} +``` + +> `xmlHttp.status == 200`:200指服务器状态码:代表正确。 +> +> 更多状态码可以看我前面讲JSP的那篇文章: +> +> [https://blog.csdn.net/qq_40932102/article/details/110235296](https://blog.csdn.net/qq_40932102/article/details/110235296) + +**4. 发送请求** + +```javascript +//第四步:设置发送请求的内容和发送报送。然后发送请求 +var uname= document.getElementsByName("userName")[0].value; +var upass= document.getElementsByName("userPass")[0].value ; +// 增加time随机参数,防止读取缓存 +var params = "userName=" + uname+ "&userPass=" +upass+ "&time=" + Math.random(); +// 向请求添加HTTP头,POST如果有数据一定要加 +xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); +xmlHttp.send(params); +``` + +如果需要像 HTML 表单那样 POST 数据,要使用 setRequestHeader() 来添加HTTP头避免乱码。然后在 send() 方法中传入希望发送的数据。 + +### JQuery实现Ajax + +使用原生js的方式实现ajax,步骤繁琐,方法、属性、常用值较多不好记忆。 + +使用JQuery实现Ajax只需要调用JQuery封装好的ajax()方法即可,它可以通过发送 HTTP请求加载远程数据,是 jQuery 最底层的 Ajax 实现,具有较高灵活性。语法如下: + +```javascript +$.ajax({ + url:请求地址 + type:"get | post | put | delete " 默认是get, + data:请求参数 {"id":"123","pwd":"123456"}, + dataType:请求数据类型"html | text | json | xml | script | jsonp ", + success:function(data,dataTextStatus,jqxhr){ },//请求成功时 + error:function(jqxhr,textStatus,error)//请求失败时 +}) +``` + +JQuery中也有简单的get()和post()方法可以使用 + +```javascript +$.get(url,data,function(result) { //通过远程 HTTP GET 请求载入信息。 + //将服务器返回的数据显示到页面的代码 +}); + +$.post(url,data,function(result) { //通过远程 HTTP POST 请求载入信息。 + //将服务器返回的数据显示到页面的代码 +}); +//url:请求的路径 +//data:发送的数据 +//result:自动接收从servlet打印流打印的字符串,默认是String,不能接收JSON格式 +``` + +**返回的数据都被封装到了result变量里,get/post()中返回时text类型,ajax()中可以指定返回的数据类型** + +根据传回的数据格式选择不同的方法,如果是简单的字符串,建议使用get/post(),如果传回的是复杂数据,**以JSON格式传回,只能使用ajax()** + + + diff --git a/source/_posts/一文搞懂jSP.md b/source/_posts/一文搞懂jSP.md new file mode 100644 index 0000000..3ff3a4c --- /dev/null +++ b/source/_posts/一文搞懂jSP.md @@ -0,0 +1,355 @@ +--- +title: 一文搞懂jSP +date: 2020-12-12 13:51:56 +tags: +- JavaWeb +- jsp +- EL表达式 +- JSTL标签库 +categories: +- JavaWeb +--- + +## JSP简介 + +JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准,在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件。 + + + +JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。 + +**语法** + +```jsp +声明标签: <%!变量或者方法声明%> +表达式标签: <%= 表达式%> 在页面上显示的效果 +程序代码标签: <%java代码%> 页面上动态展示内容 + +<%-- jsp注释,查看页面源码时看不到 --%> +``` + +**原理** + +JSP本质上也是servlet + +将jsp文件翻译成java文件并编译成class文件,其中包含的HTML代码以流的方式被响应回浏览器显示 + +> **JSP中出现的状态码(服务器状态码)** +> +> 状态码是指由服务器根据HTTP协议所提交的信息,返回的HTTP头信息代码。 +> +> | 状态码 | 消息 | 描述 | +> | ------ | -------------------------- | ------------------------------------------------------------ | +> | 100 | Continue | 只有一部分请求被服务器接收,但只要没被服务器拒绝,客户端就会延续这个请求 | +> | 101 | Switching Protocols | 服务器交换机协议 | +> | 200 | OK | 请求被确认 | +> | 201 | Created | 请求时完整的,新的资源被创建 | +> | 202 | Accepted | 请求被接受,但未处理完 | +> | 300 | Multiple Choices | 一个超链接表,用户可以选择一个超链接并访问,最大支持5个超链接 | +> | 301 | Moved Permanently | 被请求的页面已经移动到了新的URL下 | +> | 302 | Found | 被请求的页面暂时性地移动到了新的URL下 | +> | 303 | See Other | 被请求的页面可以在一个不同的URL下找到 | +> | 400 | Bad Request | 服务器无法识别请求 | +> | 403 | Forbidden | 禁止访问所请求的页面 | +> | 404 | Not Found | 服务器无法找到所请求的页面 | +> | 405 | Method Not Allowed | 请求中所指定的方法不被允许 | +> | 500 | Internal Server Error | 请求不完整,服务器遇见了出乎意料的状况 | +> | 501 | Not Implemented | 请求不完整,服务器不提供所需要的功能 | +> | 502 | Bad Gateway | 请求不完整,服务器从上游服务器接受了一个无效的响应 | +> | 503 | Service Unavailable | 请求不完整,服务器暂时重启或关闭 | +> | 504 | Gateway Timeout | 网关超时 | +> | 505 | HTTP Version Not Supported | 服务器不支持所指定的HTTP版本 | + +## JSP的内置对象 + +JSP中一共预先定义了9个对象,分别为:request、response、session、application、out、 +pagecontext、config、page、exception + +1. **request对象** + + 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)**request对象的作用域为一次请求。**所属类型:HttpServletRequest。 + +2. **response对象** + + response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,**它只在JSP页面内有效**。所属类型:HttpServletResponse + +3. **session对象** + + session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为`"Key/value"`。 所属类型:HttpSession + +4. **application对象** + + application 对象可将信息保存在服务器中,直到服务器关闭,application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的「全局变量」。所属类型:ServletContext + +5. **out 对象** + + out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。例如: + + ```jsp + out.print(""); + ``` + +6. **pageContext 对象** + + pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用pageContext对象。 + +7. **config 对象** + + config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。 + +8. **page 对象** + + page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。 + +9. **exception 对象** + + exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。 + + ```jsp + <%--先在可能发生错误的页面中添加errorPage属性:--%> + <%@ page pageEncoding="utf-8" errorPage="error.jsp" contentType="text/html;charset=UTF-8" language="java" %> + + <%--在error.jsp页面中设置isErrorPage="true" 的属性--%> + <%@ page language="java" isErrorPage="true" import="java.util.*" pageEncoding="UTF-8"%> + ``` + + > **jsp对象的作用域:** + > + > pageContext < request < session < application + > + > pageContext :当前页面 + > + > request:单次请求 + > session:浏览器访问期间(会话期间) + > application:服务器启动期间,所存的数据可以跨浏览器 + +## JSP的指令 + +JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。 + +语法格式如下: + +```jsp +<%@ directive attribute="value" %> +directive:指令名称 attribute 属性名 value:属性值 +``` + +| 指令名称 | 描述 | +| -------- | ------------------------------------------------------- | +| page | 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等 | +| include | 包含其他文件 | +| taglib | 引入标签库的定义 | + +1. **page指令** + + Page指令为容器提供当前页面的使用说明,一个JSP页面可以包含多个page指令 + + ```jsp + <%@ page attribute="value" %> + ``` + + page指令的属性 + + | 常用属性 | 属性值 | 属性描述 | + | ------------ | ------------------------- | ------------------------------------------------------------ | + | language | java | 解释该JSP文件时采用的语言,一般为java语言,默认为java | + | extends | 任何类的全名 | 编译该JSP文件时继承哪个类,JSP为Servlet,因此当指明继承普通类时需要实现Servlet的init、destroy等方法 | + | import | 引入该JSP中用到的类、包等 | import是唯一可以声明多次的page指令属性,中间用英文逗号隔开<%@page import=包名.类名,包名.类名%> | + | session | true/false | 该JSP内是否内置Session对象,如果为true,则内置Session对象,可直接使用,否则反之,默认为true | + | autoFlush | true/false | 是否运行缓存,如果为true,则使用out.println()等方法输出的字符串并不是立刻到达客户端服务器的,而是暂时存到缓存里,缓存满了或者程序行完毕或者执行out.flush()操作时才到客户端,默认为true。 | + | buffer | none或者数字KB | 指定缓存大小,当autoFlush设为true时有效,例如<%@ page buffer=10kb%> | + | isThreadSafe | true/false | 是否线程安全,如果为true,则运行多个线程同时运行该jsp程序,否则只运行一个线程,其余线程等待,默认为false | + | isErrorPage | true/false | 指定该页面是否为错误显示页面,如果为true,则该JSP内置有一个Exception对象 exception,可直接使用,否则没有,默认为false | + | errorPage | 某个JSP页面的相对路径 | 指明一个错误页面,如果该JSP程序抛出一个未捕捉的异常,则转到 errorPage指定的页面,errorPage指定的页面通常isErrorPage属性为true,且内置的exception对象为未捕捉的异常 | + | contentType | 有效的文档类型 | 客户端浏览器根据该属性判断文档类型,例如 HTML格式为text/html、纯文本格式为text/plain、JPG图像为image/jpeg、GIF图像为image/gif、WORD文档为application/msword,该属性常跟着charset设置编码一起,作用是通知服务器和浏览器都使用同一个码表 | + | pageEncoding | 字符集编码如:UTF-8 | 设置页面字符集编码 | + +2. **Include指令** + + JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。 + + ```jsp + <%@ include file="文件相对 url 地址" %> + ``` + +3. **Taglib指令** + + JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。 + + Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。 + + ```jsp + <%@ taglib uri="uri" prefix="" %> + ``` + + uri属性确定标签库的位置,prefix属性指定标签库的前缀(可自定义)。 + +## EL表达式 + +EL(Expression Language):简化对象和变量访问的一种语法 + +```jsp +语法格式:${需要取出数据的键值} +``` + +当表达式没有指定变量或者对象的范围时,那么容器会依次从pageContext—>request—>session—>application中查找该变量或对象,我们可以通过隐含对象获得指定作用域的值 + +```jsp +${pageScope.key} 用于获取当前页面的属性值 +${requestScope.key} 用于获取请求范围的属性值 +${sessionScope.key} 用于获取会话范围的属性值 +${applicationScope.key} 用于获取程序范围的属性值 +``` + +EL表达式不可以直接取出变量,只能通过将变量放入作用域的方式 + +**EL中基础操作符** + +EL表达式支持大部分Java所提供的算术和逻辑操作符: + +| **操作符** | **描述** | +| :--------- | :------------------------------- | +| . | 访问一个Bean属性或者一个映射条目 | +| [] | 访问一个数组或者链表的元素 | +| ( ) | 组织一个子表达式以改变优先级 | +| + | 加 | +| - | 减或负 | +| * | 乘 | +| / or div | 除 | +| % or mod | 取模 | +| == or eq | 测试是否相等 | +| != or ne | 测试是否不等 | +| < or lt | 测试是否小于 | +| > or gt | 测试是否大于 | +| <= or le | 测试是否小于等于 | +| >= or ge | 测试是否大于等于 | +| && or and | 测试逻辑与 | +| \|\| or or | 测试逻辑或 | +| ! or not | 测试取反 | +| empty | 测试是否空值 | + +> **关于EL表达式更多内容可以参考:[https://www.runoob.com/jsp/jsp-expression-language.html](https://www.runoob.com/jsp/jsp-expression-language.html)** + +## JSTL + +JSTL(JSP标准标签库)是一个JSP标签集合,它封装了JSP应用的通用核心功能。 + +JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。 + +根据JSTL标签所提供的功能,可以将其分为5个类别。核心标签、格式化标签、sql标签、xml标签、jstl函数 + +> 要使用JSTL首先需要导入jar包 +> +> 下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文 +> 件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下,并配置。 + +**语法:** + +1. 在JSP页面中引入`<%@ taglib prefix=”页面使用的名称” uri=”功能范围的路径”%>` + + | 功能范围 | 说明 | Uri | 前缀prefix | + | --------- | ---------- | ------------------------------------- | ---------- | + | core | 核心标签 | http://java.sun.com/jsp/jstl/core | c | + | i18n | 格式化标签 | http://java.sun.com/jsp/jstl/fmt | fmt | + | sql | sql标签 | http://java.sun.com/jsp/jstl/sql | sql | + | xml | xml标签 | http://java.sun.com/jsp/jstl/xml | x | + | functions | jstl函数 | http://java.sun.com/jsp/jstl/function | fn | + +2. 通过标签库前缀和标记及属性进行操作`<前缀:标记 属性="值",属性="值">` + +**核心标签** + +核心标签有以下几种标记 + +* 表达式操作 out、set、remove、catch +* 流程控制 if、choose、when、otherwise +* 迭代操作 forEach、forTokens +* URL操作 import、param、url、redirect + +常用的标记及其属性: + +- <c:set> :主要用来将变量存储至JSP范围中 或是JavaBean的属性或Map对象中 + + | 名称 | 说明 | 是否必须写 | 默认值 | + | -------- | -------------------- | ---------- | ------ | + | value | 要被存储的值 | 否 | 无 | + | var | 存入的变量名称 | 否 | 无 | + | scope | var变量的JSP范围 | 否 | Page | + | target | JavaBean或Map对象 | 否 | 无 | + | property | 指定target对象的属性 | 否 | 无 | + +- <c:out>主要用来显示数据的内容 + + | 名称 | 说明 | 是否必须写 | 默认值 | + | --------- | -------------------------------------- | ---------- | ------ | + | value | 需要显示出来的值 | 是 | 无 | + | default | 如果value的值为null,则显示default的值 | 否 | 无 | + | escapeXml | 是否转换特殊字符,如:<转换成 & lt; | 否 | True | + +- <c:remove> 主要负责移除变量 + + | 名称 | 说明 | 是否必须写 | 默认值 | + | ----- | ---------------- | ---------- | ------ | + | var | 欲移除的变量名称 | 是 | 无 | + | Scope | var变量的jsp范围 | 否 | Page | + +- <c:if> 主要用于进行if判断,如果为true,则输出标签体中的内容 + + | 名称 | 说明 | 是否必须写 | 默认值 | + | ----- | --------------------------------------------- | ---------- | ------ | + | test | 表达式的结果为true,则执行体内容,false则相反 | 是 | 无 | + | var | 如果 用来存储test运算的结果(true或false) | 否 | 无 | + | scope | Var变量的JSP范围 | 否 | page | + +- <c:choose >,<c:when >,<c:otherwise > 作用相当于if-else + + | 名称 | 说明 | 是否必须写 | 默认值 | + | ---- | --------------------------------------------- | ---------- | ------ | + | test | 表达式的结果为true,则执行体内容,false则相反 | 是 | 无 | + +- <c:forEach> 循环控制,它可以将数组,集合(Collection)中的成员循序浏览一遍。 + + | 名称 | 说明 | 必须 | 默认值 | + | --------- | ------------------------------------ | ---- | ------------ | + | var | 用来存放现在指定的成员 | 是 | 无 | + | items | 被迭代的集合对象(需要使用EL表达式) | 否 | 无 | + | varStatus | 用来代指被迭代的集合对象 | 否 | 无 | + | begin | 开始的位置 | 否 | 0 | + | end | 结束的位置 | 否 | 最后一个成员 | + | step | 每次迭代的间隔数 | 否 | 1 | + +**格式化标签** + +常用的标记及其属性: + +* < fmt:formatDate > 将日期类型格式化为指定模式的字符串 + + | 名称 | 说明 | 默认值 | + | ------- | ------------------------------------------------------------ | ------ | + | value | 将要被格式化的数据 | | + | pattern | 格式化的模式,与SimpleDateFormat的参数设置一样,如yyyy-MM-dd | | + | var | 格式化后的字符串所要存放的变量,若不指定var,则会将格式化的结果直接显示在页面 | | + | scope | 变量存放的域属性空间 | page | + | type | 其取值为date、time、both,表示给出的value是日期、时间、还是两者都包含 | date | + +* < fmt:parseDate > 用于将指定字符串转化为日期类型 + + | 名称 | 说明 | + | ------- | ---------------- | + | value | 服务器获取的时间 | + | pattern | 转换的格式 | + | var | 页面显示的变量 | + +* < fmt:formatNumber > 按照指定格式对数字进行格式化 + + | 名称 | 说明 | + | ---------------- | ----------------------------------- | + | maxIntegerDigits | 整数部分最多的位数 | + | minIntegerDigits | 整数部分最少的位数 | + | maxFrctionDigits | 小数部分最多的位数 | + | minFrctionDigits | 小数部分最少的位数 | + | var | 存储格式化结果的变量 | + | scope | var属性的作用域 | + | integerOnly | 是否只解析整型数true或者浮点数false | + +> **关于JSTL更多内容可以参考:[https://www.runoob.com/jsp/jsp-jstl.html](https://www.runoob.com/jsp/jsp-jstl.html)** \ No newline at end of file diff --git a/source/_posts/一文搞懂java-Servlet.md b/source/_posts/一文搞懂java-Servlet.md new file mode 100644 index 0000000..058ab8d --- /dev/null +++ b/source/_posts/一文搞懂java-Servlet.md @@ -0,0 +1,329 @@ +--- +title: 一文搞懂java Servlet +date: 2020-12-12 13:49:39 +tags: +- JavaWeb +- servlet +- session +- cookie +categories: +- JavaWeb +--- + +## servlet简介 + +Servlet(Server Applet),全称Java Servlet,是用Java编写的,运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。 + + + +下图显示了 Servlet 在 Web 应用程序中的位置。 + +![](https://i.loli.net/2020/11/26/sl8OL1tcj4WDmfN.png) + +## Servlet工作模式: + +① 客户端发送请求至服务器 + +* 这些请求可以是显式的数据,包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单 +* 也可以是隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。 + +② 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器 + +③ 服务器将响应返回客户端,同第①个,这些响应也可以是显式的数据或隐式的数据 + +## Servlet工作原理: + +(1)Servlet接口定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。在一个应用程序中,每种Servlet类型只能有一个实例。 + +(2)用户请求使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。这些对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用。 + +* ServletRequest中封装了当前的Http请求,ServletResponse表示当前用户的Http响应 + +(3)对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet容器也都有一个封装Servlet配置的ServletConfig对象。 + +## Servlet的使用 + +Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。Servlet 可以使用 **javax.servlet** 和 **javax.servlet.http** 包创建,它是 Java 企业版的标准组成部分。它们之间的关系如下图所示: + +![](https://i.loli.net/2020/11/26/1CgmXzM8NBK4vcx.png) + +### 使用 + +创建一个类**实现Servlet接口**,重写其中的方法 + +```java +public class LoginServlet implements Servlet { + @Override + public void init(ServletConfig servletConfig) throws ServletException { + //初始化方法 + } + @Override + public ServletConfig getServletConfig() { + return null; + } + @Override + public void service(ServletRequest res, ServletResponse resp) throws ServletException, IOException { + //处理get/post请求的方法 + } + @Override + public String getServletInfo() { + return null; + } + @Override + public void destroy() { + //销毁的方法 + } +} +``` + +**继承HttpServlet类(常用)** + +```java +public class LoginServlet implements Servlet { + @Override + public void doGet(HttpServletRequest res, HttpServletResponse resp) throws ServletException, IOException { + //处理get请求的方法 + } + @Override + public void doPost(HttpServletRequest res, HttpServletResponse resp) throws ServletException, IOException { + //处理get请求的方法 + } + +} +``` + +### 部署配置 + +容器(Tomcat)在得到客户端的请求后,但不知道去交给哪一个servlet去处理,所以需要进行部署,有两种方式: + +**方式一:web.xml文件部署Servlet的映射关系** + +```xml + + 自定义名称 + 处理请求的类的完整路径 + + + 自定义名称 + 请求名 + +``` + +> 这个xml标签的执行顺序: +> +> 请求过来以后->web.xml->servlet-mapping标签中的url-pattern标签中的内容和请求名进行匹配->匹配成功后找对应的servlet-mapping标签中的servlet-name->去servlet标签中找和上一个servlet-name相同的name值->去找servlet标签中的servlet-class中处理类的完整路径。 + +**方式二:@WebServlet注解** + +**注解这个方式是Servlet3.0版本后才支持的**,它里面可以添加如下属性 + +| 属性名 | 类型 | 描述 | +| -------------------- | -------------- | ------------------------------------------------------------ | +| name | String | 指定Servlet 的 name 属性,默认为类的全限定名 | +| value或者urlPatterns | String | 指定Servlet处理的url。等价于web.xml中的``标签。 | +| asyncSupported | boolean | 指定Servlet是否支持异步操作模式 | +| displayName | String | 指定servlet的显示名 | +| initParams | webInitParam[] | 配置初始化参数 | +| loadOnStartup | int | 指定servlet的加载顺序,默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高; | + +例如: + +```java +@WebServlet(value = "/login") +public class LoginServlet implements Servlet { + //code +} +``` + +## Servlet的生命周期 + +当客户端首次发送第一次请求后,由容器(web服务器(tomcat))去解析请求,根据请求找到对应的servlet,判断该类的对象是否存在,不存在则创建servlet实例,调取init()方法进行初始化操作,初始化完成后调取service()方法,由service()判断客户端的请求方式,如果是get,则执行doGet(),如果是post则执行doPost()。处理方法完成后,作出响应结果给客户端。单次请求处理完毕。 + +当用户发送第二次以后的请求时,会判断对象是否存在,但是不再执行init(),而直接执行service方法,调取doGet()/doPost()方法。 + +当服务器关闭时调取destroy()方法进行销毁。 + +![](https://i.loli.net/2020/11/26/5sKVlqR1SDomOpF.png) + +## Servlet接收/响应请求 + +客户端发送数据给服务器端的请求方式: + +| 请求方式 | 请求类型 | 举例 | +| ------------------ | ------------ | ----------------------------------------------- | +| 通过form表单 | get/post提交 | < form action="请求" method="get/post">< /form> | +| 通过a标签发送数据 | get提交 | < a href = "请求">< /a> | +| 通过地址栏直接拼接 | get请求 | url/请求?key=value&key=value | +| js提交数据 | get请求 | location.href=“目标请求?key=value&key=value” | + +> **get/post请求的比较:** +> +> 1. 地址栏呈现 +> +> * GET请求:请求的数据会附加在URL之后,以`?`分割URL和传输数据,多个参数用`&`连接。 +> * POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。 +> +> 因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。 +> +> 2. 传输数据的大小 +> +> * 在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。 +> * 对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。 +> +> 3. 安全性 +> +> POST的安全性比GET的高。比如:在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击 + +HttpServletRequest和HttpServletResponse对象中分别封装了当前的Http请求和响应,它们中都有一些方法来处理请求和响应。 + +HttpServletRequest类常用方法: + +| 修饰 | 方法名 | 描述 | +| ----------------- | ------------------------------------ | ------------------------------------------------------------ | +| String | getParameter(String name) | 根据表单组件名称获取提交数据,返回值是String(服务器在接收数据时使用字符串统一接收) | +| String[] | getParameterValues(String name) | 获取表单组件对应多个值时的请求数据 | +| void | setCharacterEncoding(String charset) | 指定每个请求的编码(针对post请求才起作用) | +| RequestDispatcher | getRequestDispatcher(String path) | **转发**,返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求 | +| Session | getSession() | 取得当前会话的Session对象 | +| void | setAttribute(“key”,value) | 存值 | +| void | getAttribute(“key”) | 取值,需要向下转型 | + +HttpServletResponse类常用方法: + +| 修饰 | 方法名 | 描述 | +| ----------- | ------------------------- | ------------------------------------------------------------ | +| void | addCookie(Cookie var1) | 给这个响应添加一个cookie | +| void | sendRedirect(String var1) | **重定向**,发送一条响应码,将浏览器跳转到指定的位置 | +| PrintWriter | getWriter() | 获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端,可以返回html/js代码等 | +| void | setContentType() | 设置响应内容的类型 | + +> **重定向与转发的区别** +> +> 转发:`httpServletRequest.getRequestDispatcher("目标地址").forward(传递参数)` +> +> 重定向:`httpServletResponse.sendRedirect("目标地址")` +> +> 相同点:都用来跳转页面 +> +> 不同点: +> +> * 重定向时地址栏会改变,request中存储的数据会丢失。转发时地址栏显示的是请求页面的地址,request数据可以保存。 +> +> * 转发属于一次请求一次响应,重定向属于两次请求(地址栏修改了两次)两次响应。 +> +> ![](https://i.loli.net/2020/11/26/qinVUdSPcCf4uvb.png) + +## 会话(Session和Cookie) + +会话的概念:从打开浏览器到关闭浏览器,期间访问服务器就称为一次会话 + +会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。保持对用户会话期间的数据管理。常用的会话跟踪技术是Cookie与Session。 + +* Cookie通过在客户端记录信息确定用户身份 +* Session通过在服务器端记录信息确定用户身份。 + +### Session + +**session会话的数据可以在多个页面中共享,即使重定向页面,数据不会丢失** + +**Session常用方法:** + +| 修饰 | 方法名 | 描述 | +| ----------- | ------------------------------------- | ------------------------------------------------------------ | +| void | setAttribute(String key,Object value) | 以key/value的形式保存对象值,将数据存储在服务器端 | +| Object | getAttribute(String key) | 通过key获取对象值 | +| Enumeration | getAttributeNames() | 返回Session中存在的属性名(key) | +| long | getLastAccessedTime() | 返回Session的最后活跃时间。 | +| long | getCreationTime() | 返回Session的创建日期。返回类型为long,常被转化为Date类型,例如:Date createTime = new Date(session.get CreationTime()) | +| void | invalidate() | 设置session对象失效 | +| String | getId() | **获取sessionid,当第一次登录成功后,session会产生一个唯一的id**,浏览器之后访时如果发现id值还是之前id,那么说明 当前访问的属于同一个会话 | +| void | setMaxInactiveInterval(int interval) | 设定session的有效时间,单位为s秒,默认的有效时间:30分钟 | +| int | getMaxInactiveInterval() | 获取session的有效时间(以秒为单位) | +| boolean | isNew() | 返回该Session是否是新创建的 | +| void | removeAttribute(String key) | 从session中删除指定名称(key)所对应的对象 | + +**Session的生命周期** + +Session保存在服务器端。**为了获得更高的存取速度,服务器一般把Session放在内存**里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。 + +Session在用户第一次访问服务器的时候自动创建。需要注意**只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session**。如果尚未生成Session,也可以用`request.getSession(true)`强制生成Session。 + +Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。 + +由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是**Session的超时时间**。如果超过了超时时间没访问过服务器,Session就自动失效了。 + +Session的超时时间为`maxInactiveInterval`属性,可以通过对应的`getMaxInactiveInterval()`获取,通过`setMaxInactiveInterval(long interval)`修改。Session的超时时间也可以在web.xml中修改。另外,通过调用Session的`invalidate()`方法可以使Session失效。 + +```xml + + 30 //30分钟 + +``` + +### Cookie + +Cookie是客户端(一般指浏览器)请求服务器后,服务器发给客户端的一个辨认标识,保存在客户端,当客户端再次向服务器发送请求时,会携带着这个辨认标识,服务器就可以通过这个标识来识别客户端的身份或状态等。 + +**Cookie的设置和获取** + +通过HttpServletResponse.addCookie的方式设置Cookie + +```java +Cookie cookie = new Cookie("jieguo","true"); +response.addCookie(cookie); +``` + +服务端获取客户端携带的cookie:通过HttpServletRequest获取 + +```java +Cookie[] cookies = request.getCookies(); +if(cookies != null) + for(Cookie c : cookies){ + String name = c.getName();//获取Cookie名称 + if("jieguo".equals(name)){ + String value = c.getValue();//获取Cookie的值 + bool = Boolean.valueOf(value);//将值转为Boolean类型 + } + } +} +``` + +**删除Cookie** + +通过设置同名Cookie的最大存活时间为0,删除Cookie是指使浏览器不再保存Cookie,使Cookie立即失效 + +举例:使name为username的Cookie立即失效 + +```java +//1.创建一个name为username的Cookie +Cookie cookie = new Cookie("username", "aaa"); +//2.设置Cookie的有效时间为0 +cookie.setMaxAge(0);//删除cookie的关键 +//3.将cookie发送给浏览器,来替换同名Cookie +response.addCookie(cookie); +``` + +**Cookie的有效时间** + +Cookie发送给浏览器以后,浏览器并不会永久保存,也就是到了一定的时间以后浏览器会自动销毁Cookie。 +Cookie的默认有效时间为一次会话(一次打开关闭浏览器的过程),我们也可以手动指定Cookie的有效时间 + +```java +//setMaxAge用来设置Cookie的最大有效时间,需要int型的参数,代表有效的秒数 +cookie.setMaxAge(秒数); + //当参数大于0时,会设置为指定的秒数 + cookie.setMaxAge(30); + //当参数等于0时,浏览器不会保存Cookie,Cookie立即失效 + cookie.setMaxAge(0); + //当参数小于0时,和不设置是一样,当前会话有效 + cookie.setMaxAge(-100); +//设置一个永久有效的Cookie,并非永久,只是使Cookie的生命很长而已 +cookie.setMaxAge(60*60*24*365*10); +``` + +> **Session和Cookie的区别** +> +> * Cookie数据保存在客户端,Session数据保存在服务器端。 +> * Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。 +> * Cookies是属于Session对象的一种。但有不同,Cookies不会占服务器资源,是存在客服端内存或者一个Cookie的文本文件中;而Session则会占用服务器资源。所以,尽量不要使用Session,而使用Cookies。但是我们一般认为Cookie是不可靠的,Cookies是保存在本机上的,但是其信息的完全可见性且易于本地编辑性,往往可以引起很多的安全问题。 + diff --git a/source/_posts/初识Java.md b/source/_posts/初识Java.md new file mode 100644 index 0000000..d82ab14 --- /dev/null +++ b/source/_posts/初识Java.md @@ -0,0 +1,204 @@ +--- +title: 初识Java +date: 2020-05-16 19:28:35 +tags: +- Java +categories: +- Java基础 +--- + +## java帝国的建立 + +1972 年C语言诞生 ,C语言具有贴近硬件,运行速度极快,效率极高的优点,一经诞生,就广泛用于操作系统、编译器、数据库、网络系统等的开发。但由于C语言的指针问题和内存管理的问题,对新手有一些不太友好。 + + + +1982年C++诞生,C++兼容C语言,它增加了面向对象的特性,在图形领域和游戏方面取得了一些成就。但C++更加复杂。 + +1995年,java诞生,它语法有些像C,但没有C中的指针和内存管理问题;它实现了真正的可移植性,编写一次,到处运行;它也有面向对象的特性,有更安全的类型,有高质量的类库等优点。 + +### java的发展 + +1995年的网页简单而粗糙,缺乏互动性。java团队在浏览器中放入了java的运行环境,开发了一个图形界面程序(Applet),使得网页变得更美观,有互动性。java进入了广大程序员的视线。 + +1998年,java 发布java2版本,该版本包含三个方向: + +Java 2 标准版(J2SE) 针对桌面端开发 + +Java 2 移动版(J2ME) 针对移动端开发 + +Java 2 企业版(J2EE) 针对服务器端开发 + + 但是Java SE 和Java ME当时并没有得到很好的发展。反而Java EE得到了很多IT大公司的应用 ,他们基于Java开发了许多的平台、系统、工具: + +* 构建工具:Ant,Maven,Jekins +* 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic +* Web开发:Struts,Spring,Hibernate,myBatis +* 开发工具:Eclipse,Netbean,intellij idea,Jbuilder +* …… + +2006年,Hadoop的发布让Java进入大数据领域 + +2008年,Android的诞生,让Java重新进入了移动端领域,并在移动端开发中占据了举足轻重的地位。 + +之后,Java的发展就一发不可收拾,占据了服务器端开发的大部分市场,一个伟大的帝国诞生了!! + +```tex +拓展: +“三高”问题:高可用,高性能,高并发。 +``` + +## Java的特性和优势 + +* 简单性 +* 面向对象 +* 跨平台 可移植性 +* 高性能 +* 分布式 +* 动态性(反射机制) +* 多线程 +* 安全性 +* 健壮性 + +## Java 的三大版本 + +### JavaSE + +标准版(桌面程序,控制台开发…) + +### JavaME + +嵌入式开发(手机,小家电…) + +该版本几乎已经没有人用了 + +### JavaEE + +企业级开发(web端,服务器开发…) + +## JDK、JRE、JVM + +JDK:Java Development Kit,称为Java开发包或者Java开发者工具,是一个编写Java的Applet小程序和应用程序的开发环境。JDK是整个Java的核心,包括了`Java运行环境(JRE)`,一些`Java工具`和`Java的核心类库(Java API)`。 + +JRE:Java Runtime Environment。JRE是个运行环境,JDK是个开发环境。因此写Java程序时需要JDK,而运行Java程序时就需要JRE。而JDK中已经包含了JRE,因此只要安装了JDK就可以编辑Java程序,也可以正常运行Java程序。 + +JVM:Java Virtual Machine + +![](https://i.loli.net/2020/05/09/h5MHDELCjmzKvcY.png) + +## JDK的安装 + +https://www.oracle.com/java/technologies/javase-jdk8-downloads.html + +去上面网址下载对应的版本 + +下载后双击安装,记住安装的路径 + +**配置环境变量** + +右键点击此电脑,打开属性,找到高级系统设置->环境变量->系统变量 + +1. 新建一个变量JAVA_HOME,值为jdk安装的路径 + +![](https://i.loli.net/2020/05/09/dF2PvYc5eJ8H9nD.png) + +2. 配置Path变量,找到系统变量中的Path变量,点击编辑,新建两个,值分别为`%JAVA_HOME%\bin`,`%JAVA_HOME%\jre\bin` + +![](https://i.loli.net/2020/05/09/uaRCMe71En3XG9V.png) + +配置好环境变量之后,打开cmd(终端),输入 + +```bash +java -version +``` + +出现下图效果说明JDK安装配置成功 + +![](https://i.loli.net/2020/05/09/hTROlwQ7uWEyVaJ.png) + +## 第一个程序 + +**HelloWorld** + +步骤: + +1. 新建一个文件夹,存放代码 +2. 新建一个Java文件(Hello.java) +3. 编写代码 + +```java +public class Hello{ + public static void main(String[] args){ + System.out.print("Hello,World!"); + } +} +``` + +4. 编译 ,打开终端,输入命令 + + ```bash + javac -Hello.java + ``` + + 编译完成后生成一个Hello.class文件,再输入运行命令 + + ```bash + java Hello + ``` + + 就能看到终端中打印出了 `Hello,World!` + +![](https://i.loli.net/2020/05/09/oLXTjy8ECYeFV25.png) + +**可能遇到的问题** + +* 每个单词的大小写不能出现问题,**Java对大小写敏感** +* 文件名 和 类名必须保持一致,并且首字母大写 +* 符号要用英状态下的符号 + +## Java程序运行机制 + +### 编译型与解释型 + +我们知道,计算机是无法理解现在的高级语言程序的,计算机只能理解机器语言,也就是可以通过CPU进行分析和执行的指令集。而要想让计算机能够运行我们写的高级语言程序,就需要一个系统软件来实现,它就是**`语言处理程序`**,也称为**`编译程序`**,它可以将我们写的高级语言程序,翻译成计算机可执行的**`机器语言`**。而这个翻译的方式就分为**`编译型`**和**`解释性`**两种。 + +**`编译型:`**是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码(机器码),这个过程就被称为编译,而来编译的程序也就被称为编译器,也就是说我们写一个程序代码在源文件当中,通常经过编译以后生成一个可执行文件,这样我们就可以直接运行了。 + +**`解释型:`**在程序运行的前一刻,还只有源程序没有可执行程序,而当执行时每执行到源程序的某一条指令,则会有有一个称为解释程序的外壳程序将源代码转换成二进制代码以供执行,也就是说一边解释 一边执行 ,所以解释型程序是离不开解释程序的。 + +从上面我们可以看出,编译型和解释型的关键区别就在于这个翻译的时机不同。解释型语言在运行程序的时候才翻译,每执行一次,要翻译一次,效率较低。编译型就是直接编译成机器可以执行的格式,只翻译一次。 + +编译型和解释型各有优缺点 + +优点: + +解释型:可移植性好,只要有运行相应需要的解释环境,可以在不用的操作系统上运行,修改调试也非常方便 + +编译型:相比解释执行编译执行效率高,占用资源小,适合复杂程序 + +缺点: + +解释型:一句一句执行解释,浪费计算机资源,效率低 + +编译型:兼容性差,编译型程序虽然源代码也可以移植,但前提是必须针对不同的系统分别进行编译. + +### Java程序运行机制 + +**Java这个语言有些特殊,它既是编译型的,又是解释型的** + +说Java是编译型的,是因为所有的Java代码都是要编译的,.java不经过编译就什么用都没有。 + +说Java是解释型的,是因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释运行的,那也就算是解释型的了。 + +但是,现在的JVM为了效率,都有一些JIT优化。它又会把.class的二进制代码编译为本地的代码直接运行,所以,又是编译的。像C、C++ 他们经过一次编译之后直接可以编译成操作系统了解的类型,可以直接执行的 所以他们是编译型的语言。没有经过第二次的处理 而Java不一样,他首先由编译器编译成.class类型的文件,这个是Java自己类型的文件 ,然后再通过虚拟机(JVM)从.class文件中读一行解释执行一行,所以他是解释型的语言,而由于Java对于多种不同的操作系统有不同的JVM所以 Java实现了真正意义上的跨平台! + +观看下面两张图 了解一下Java的虚拟机机制: + +> 1.java语言的编译-->解释--->执行过程 +> +> ![java语言的编译-->解释--->执行过程](https://i.loli.net/2020/05/10/HtRmwf4LBIr1qPS.jpg) + +![java虚拟机JVM](https://i.loli.net/2020/05/10/ITZEnaNuweHiflQ.jpg) + +> 如果严格按照定义来说,Java应该是解释型语言,因为*.java程序在编译之后,被编译为\*.class文件,并不是机器码,依然不能被计算机直接运行。\*.class文件是在JVM中被解释运行的。 + diff --git a/source/_posts/枚举、注解和反射.md b/source/_posts/枚举、注解和反射.md new file mode 100644 index 0000000..29f1ab6 --- /dev/null +++ b/source/_posts/枚举、注解和反射.md @@ -0,0 +1,588 @@ +--- +title: 枚举、注解和反射 +date: 2020-11-16 19:24:54 +tags: +- Java +categories: +- Java基础 +--- + +## 枚举 + +### 简介 + +JDK1.5引入了新的类型——枚举。 + +在JDK1.5 之前,我们定义常量都是: public static fianl.... 。很难管理。 + +枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。用于定义有限数量的一组同类常量,例如: + + + +```tex +错误级别: + 低、中、高、急 +一年的四季: + 春、夏、秋、冬 +商品的类型: + 美妆、手机、电脑、男装、女装... +``` + +在枚举类型中定义的常量是该枚举类型的**实例**。 + +### 定义格式 + +```java +权限修饰符 enum 枚举名称 { + 实例1,实例2,实例3,...实例n; +} +``` + +```java +public enum Level { + LOW(1), MEDIUM(2), HIGH(3), URGENT(4); + private int levelValue; + private Level(int levelValue) { + this.levelValue = levelValue; + } + public int getLevelValue() { + return levelValue; + } +} +``` + +```java +public enum Level { //这样的方式更常用,通过字面意思就能理解枚举中常量的含义 + LOW, MEDIUM, HIGH, URGENT; +} +``` + +### 枚举类的主要方法 + +Enum抽象类常见方法 + +Enum是所有Java语言枚举类型的公共基本类,以下是它的常见方法: + +| 变量和类型 | 方法 | 描述 | +| :---------------------------: | :---------------------------------------: | :----------------------------------------------------------: | +| `protected Object` | `clone()` | 抛出CloneNotSupportedException。 | +| `int` | `compareTo(E o)` | 将此枚举与指定的对象进行比较。 | +| `boolean` | `equals(Object other)` | 如果指定的对象等于此枚举常量,则返回true。 | +| `Class` | `getDeclaringClass()` | 返回与此枚举常量的枚举类型对应的Class对象。 | +| `int` | `hashCode()` | 返回此枚举常量的哈希码。 | +| `String` | `name()` | 返回此枚举常量的名称,与其枚举声明中声明的完全相同。 | +| `int` | `ordinal()` | 返回此枚举常量的序数(它在枚举声明中的位置,其中初始常量的序数为零)。 | +| `String` | `toString()` | 返回声明中包含的此枚举常量的名称。 | +| `static> T` | `valueOf(Class enumType, String name)` | 返回具有指定名称的指定枚举类型的枚举常量。 | + +> 以上方法中,只有toString()方法可以被重写 + +### 实现接口的枚举类 + +所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。 +每个枚举对象,都可以实现自己的抽象方法 + +```java +public interface LShow{ + void show(); +} +public enum Level implements LShow{ + LOW{ + @Override + public void show(){ + //... + } + },MEDIUM{ + @Override + public void show(){ + //... + } + },HIGH{ + @Override + public void show(){ + //... + } + }; +} +``` + +### 注意事项 + +* 一旦定义了枚举,最好不要妄图修改里面的值,除非修改是必要的。 +* 枚举类默认继承的是java.lang.Enum类而不是Object类 +* 枚举类不能有子类,因为其枚举类默认被final修饰 +* 只能有private构造方法 +* switch中使用枚举时,直接使用常量名,不用携带类名 +* 不能定义name属性,因为自带name属性 +* 不要为枚举类中的属性提供set方法,不符合枚举最初设计初衷。 + +## 注解 + +### 简介 + +Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 + +Java 语言中的类、方法、变量、参数和包等都可以被标注。和注释不同,Java 标注可以通过反射获取标 +注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行 +时可以获取到标注内容 。 当然它也支持自定义 Java 标注。 + +主要用于:编译格式检查、反射中解析、生成帮助文档、跟踪代码依赖等 + +### 内置注解 + +* `@Override `: 重写 + + * 定义在java.lang.Override + +* `@Deprecated`:废弃 + + * 定义在java.lang.Deprecated + +* `@SafeVarargs` + + * Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。 + +* `@FunctionalInterface`: 函数式接口 + + * Java 8 开始支持,标识一个匿名函数或函数式接口。 + +* `@Repeatable`:标识某注解可以在同一个声明上使用多次 + +* Java 8 开始支持,标识某注解可以在同一个声明上使用多次。 + +* `SuppressWarnings()` 抑制编译时的警告信息。 + + * 定义在java.lang.SuppressWarnings + + * 三种使用方式 + + * `@SuppressWarnings("unchecked")` : 抑制单类型的警告 + * `@SuppressWarnings("unchecked","rawtypes")`:抑制多类型的警告 + * `@SuppressWarnings("all") `:抑制所有类型的警告 + + * 参数列表: + + * | 关键字 | 用途 | + | ------------------------ | -------------------------------------------------- | + | all | 抑制所有警告 | + | boxing | 抑制装箱、拆箱操作时候的警告 | + | cast | 抑制映射相关的警告 | + | dep-ann | 抑制启用注释的警告 | + | deprecation | 抑制过期方法警告 | + | fallthrough | 抑制确在switch中缺失breaks的警告 | + | finally | 抑制finally模块没有返回的警告 | + | hiding | 抑制相对于隐藏变量的局部变量的警告 | + | incomplete-switch | 忽略没有完整的switch语句 | + | nls | 忽略非nls格式的字符 | + | null | 忽略对null的操作 | + | rawtypes | 使用generics时忽略没有指定相应的类型 | + | restriction | 抑制禁止使用劝阻或禁止引用的警告 | + | serial | 忽略在serializable类中没有声明serialVersionUID变量 | + | static-access | 抑制不正确的静态访问方式警告 | + | synthetic-access | 抑制子类没有按最优方法访问内部类的警告 | + | unchecked | 抑制没有进行类型检查操作的警告 | + | unqualified-field-access | 抑制没有权限访问的域的警告 | + | unused | 抑制没被使用过的代码的警告 | + +### 元注解 + +元注解就是**作用在其他注解**的注解。有下面几种: + +* `@Retention`- 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。 + +* `@Documented` - 标记这些注解是否包含在用户文档中。 + +* `@Target` - 标记这个注解应该是哪种 Java 成员。 + +* `@Inherited` - 标记这个注解是自动继承的 + + * 子类会继承父类使用的注解中被`@Inherited`修饰的注解 + + 2. 接口继承关系中,子接口不会继承父接口中的任何注解,不管父接口中使用的注解有没有 + 被`@Inherited`修饰 + 3. 类实现接口时不会继承任何接口中定义的注解 + +### 自定义注解 + +#### 注解架构 + +![](https://i.loli.net/2020/10/26/e5pqFSIxH2NdlUn.png) + +* **`Annotation`与`RetentionPolicy` 、`ElementType` 。** + + 每 1 个 `Annotation` 对象,都会有**唯一的 `RetentionPolicy` 属性,有 1~n个`ElementType`属性**。 + +* **`ElementType`(注解的用途类型)** + + "每 1 个 `Annotation`" 都与 "1~n 个 `ElementType`" 关联。当 `Annotation` 与某个 `ElementType` 关联时,就意味着:`Annotation`有了某种用途。例如,若一个 `Annotation` 对象是 `METHOD` 类型,则该`Annotation` 只能用来修饰方法。 + + ```java + package java.lang.annotation; + public enum ElementType { + TYPE, // 类、接口(包括注释类型)或枚举声明 + FIELD, // 字段声明(包括枚举常量) + METHOD, // 方法声明 + PARAMETER, // 参数声明 + CONSTRUCTOR, // 构造方法声明 + LOCAL_VARIABLE, // 局部变量声明 + ANNOTATION_TYPE,// 注释类型声明 + PACKAGE // 包声明 + } + ``` + +* **`RetentionPolicy`(注解作用域策略)**。 + + "每 1 个 `Annotation`" 都与 "1 个 `RetentionPolicy`" 关联。 + + * 若 `Annotation` 的类型为 `SOURCE`,则意味着:`Annotation` 仅存在于编译器处理期间,编译器处理完之后,该`Annotation` 就没用了。 例如,"`@Override`" 标志就是一个 `Annotation`。当它修饰一个方法的时候,就意味着该方法覆盖父类的方法;并且在编译期间会进行语法检查!编译器处理完后,"`@Override`" 就没有任何作用了。 + * 若 `Annotation` 的类型为 `CLASS`,则意味着:编译器将 `Annotation` 存储于类对应的 `.class`文件中,它是 `Annotation` 的默认行为。 + * 若 `Annotation` 的类型为 `RUNTIME`,则意味着:编译器将 `Annotation` 存储于 `.class` 文件中,并且可由JVM读入。 + + ```java + package java.lang.annotation; + public enum RetentionPolicy { + SOURCE, //Annotation信息仅存在于编译器处理期间,编译器处理完之后就没有该Annotation信息了 + CLASS, //编译器将Annotation存储于类对应的.class文件中。默认行为 + RUNTIME //编译器将Annotation存储于class文件中,并且可由JVM读入 + } + ``` + +#### 定义格式 + +```java +@interface 自定义注解名{} +``` + +> 注意事项 +> +> 1. 定义的注解,自动继承了java.lang.annotation.Annotation接口 +> 2. **注解中的每一个方法,实际是声明的注解配置参数** +> * 方法的名称就是配置参数的名称 +> * 方法的返回值类型,就是配置参数的类型。只能是:基本类型/Class/String/enum +> 3. 可以通过default来声明参数的默认值 +> 4. 如果只有一个参数成员,一般参数名为value +> 5. 注解元素必须要有值,我们定义注解元素时,经常使用空字符串、 0 作为默认值。 + +**案例** + +```java +@Documented +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface MyAnnotation1 { + 参数类型 参数名() default 默认值; +} +``` + +上面代码的作用是定义一个 `Annotation`,我们可以在代码中通过 "`@MyAnnotation1`" 来使用它。 +`@Documented`, `@Target`,`@Retention`,`@interface` 都是来修饰 `MyAnnotation1` 的。含义: + +* `@interface` + + 使用 `@interface` 定义注解时,意味着它实现了 `java.lang.annotation.Annotation` 接口,即该注解就是`一个Annotation`。 + + > 定义`Annotation` 时,`@interface` 是必须的。 + > + > 注意:它和我们通常的 `implemented` 实现接口的方法不同。`Annotation` 接口的实现细节都由编译器完成。通过 `@interface` 定义注解后,该注解不能继承其他的注解或接口。 + +* `@Documented` + + 类和方法的 `Annotation` 在缺省情况下是不出现在 `javadoc` 中的。如果使用 `@Documented` 修饰该 + `Annotation`,则表示它可以出现在 `javadoc` 中。 + + > 定义 `Annotation` 时,**`@Documented `可有可无**;若没有定义,则 `Annotation` 不会出现在 `javadoc`中。 + +* `@Target(ElementType.TYPE)` + + `ElementType` 是 `Annotation` 的类型属性。而 `@Target` 的作用,就是来指定`Annotation` 的类型属性的。 + + `@Target(ElementType.TYPE)` 的意思就是指定该 `Annotation` 的类型是 `ElementType.TYPE`。这就意味着,`MyAnnotation1` 是来修饰"类、接口(包括注释类型)或枚举声明"的注解。 + + > 定义 `Annotation` 时,**`@Target` 可有可无**。若有 `@Target`,则该 `Annotation` 只能用于它所指定的地方;若没有 `@Target`,则该 `Annotation` 可以用于任何地方。 + +* `@Retention(RetentionPolicy.RUNTIME)` + + `RetentionPolicy` 是 `Annotation` 的策略属性,而 `@Retention` 的作用,就是指定`Annotation` 的策略属性。 + + `@Retention(RetentionPolicy.RUNTIME)` 的意思就是指定该 `Annotation` 的策略是 + `RetentionPolicy.RUNTIME`。这就意味着,编译器会将该 `Annotation` 信息保留在 `.class `文件中,并且能被JVM虚拟机读取。 + + > 定义 `Annotation` 时,`@Retention `可有可无。若没有 `@Retention`,则默认是 + > `RetentionPolicy.CLASS`。 + +## 反射 + +### 概述 + +[JAVA反射机制](https://baike.baidu.com/item/JAVA%E5%8F%8D%E5%B0%84%E6%9C%BA%E5%88%B6/6015990?fr=aladdin)是在运行状态中,获取任意一个类的结构 、 创建对象 、得到方法、执行方法 、属性,这种在运行状态动态获取信息以及动态调用对象方法的功能被称为java语言的反射机制。 + +### 类加载器 + +Java类加载器(Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。 + +java默认有三种类加载器:`BootstrapClassLoader`、`ExtensionClassLoader`、`App ClassLoader`。 + +* **BootstrapClassLoader(引导启动类加载器):** + 嵌在JVM内核中的加载器,该加载器是用C++语言(原生语言)写的,主要负载加载JAVA_HOME/lib下的类库,引导启动类加载器无法被应用程序直接使用。 + +* **ExtensionClassLoader(扩展类加载器)**: + ExtensionClassLoader是用JAVA编写,且它的父类加载器是Bootstrap。 + + 是由sun.misc.Launcher$ExtClassLoader实现的,主要加载JAVA_HOME/lib/ext目录中的类库。 + +* **App ClassLoader(应用类加载器)**: + App ClassLoader是应用程序类加载器,负责加载应用程序classpath目录下的所有jar和class文 + 件。它的父加载器为Ext ClassLoader + +![](https://i.loli.net/2020/10/26/TGtjSkCnMwp8qUO.png) + +> 类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。 +> +> **委派** +> +> 双亲委派模型:如果一个类加载器收到了一个类加载请求,它不会自己去尝试加载这个类,而是把这个请求转交给父类加载器去完成。每一个层次的类加载器都是如此。因此所有的类加载请求都应该传递到最顶层的启动类加载器中,只有到父类加载器反馈自己无法完成这个加载请求(在它的搜索范围没有找到这个类)时,子类加载器才会尝试自己去加载。委派的好处就是避免有些类被重复加载。 + +> **加载配置文件** +> +> 如果我们的项目下有source文件夹,类.class.getClassLoader().getResourceAsStream(文件名)加载的是source文件夹下的文件,前提是将文件夹定义为Resources Root +> +> ![image-20201026212548653](https://i.loli.net/2020/10/26/4THGmUu6PEno3qk.png) +> +> ![](https://i.loli.net/2020/10/26/JqeIEhX34APUScv.png) + +### 获取类对象 + +要想了解一个类,必须先要获取到该类的字节码文件对象。在Java中,每一个字节码文件,被加载到内存后,都存在一个对应的Class类型的对象 + +**得到Class的几种方式** + +1. 如果在编写代码时, 知道类的名称, 且类已经存在, 可以通过下面代码得到一个类的 类对象 + + ```java + 包名.类名.class + ``` + +2. 如果拥有类的对象, 可以通过下面代码得到一个类的类对象 + + ```java + Class 对象.getClass() + ``` + +3. 如果在编写代码时, 知道类的名称 , 可以通过下面代码得到一个类的类对象 + + ```java + Class.forName("包名.类名"); + ``` + +上述的三种方式, 在调用时, 如果类在内存中不存在, 则会加载到内存! 如果类已经在内存中存在, 不会重复加载, 而是重复利用! + +![](https://i.loli.net/2020/10/26/2X4A53NFvROnwGx.png) + +> (一个class文件 在内存中不会存在两个类对象 ) +> +> 特殊的类对象 +> +> * 基本数据类型的类对象: +> * 基本数据类型.class +> * 包装类.type +> * 基本数据类型包装类对象: +> * 包装类.class + +### 获取Constructor + +**通过class对象 获取一个类的构造方法** + +1. 通过指定的参数类型, 获取指定的单个构造方法 + + ```java + getConstructor(参数类型的class对象数组) + ``` + + 例如,构造方法如下: + + ```java + Person(String name,int age) + ``` + + 得到这个构造方法的代码如下: + + ```java + Constructor c = p.getClass().getConstructor(String.class,int.class); + ``` + +2. 获取构造方法数组 + + ```java + getConstructors(); + ``` + +3. 获取所有权限的单个构造方法 + + ```java + getDeclaredConstructor(参数类型的class对象数组) + ``` + +4. 获取所有权限的构造方法数组 + + ```java + getDeclaredConstructors(); + ``` + +**Constructor 创建对象** + +常用方法: + +* `newInstance(Object... para)` + + 调用这个构造方法, 把对应的对象创建出来 + 参数: 是一个Object类型可变参数, 传递的参数顺序 必须匹配构造方法中形式参数列表的顺序! + +* `setAccessible(boolean flag)` + 如果flag为true 则表示忽略访问权限检查 !(可以访问任何权限的方法) + +![](https://i.loli.net/2020/10/26/OUb4plBsyCr7gX2.png) + +### 获取Method + +**通过class对象获取一个类的方法** + +1. 根据参数列表的类型和方法名, 得到一个方法(public修饰的) + + ```java + getMethod(String methodName , class... clss) + ``` + +2. 得到一个类的所有方法 (public修饰的) + + ```java + getMethods() + ``` + +3. 根据参数列表的类型和方法名, 得到一个方法(除继承以外所有的:包含私有,公有, 保护, 默认) + + ```java + getDeclaredMethod(String methodName , class... clss) + ``` + +4. 得到一个类的所有方法 (除继承以外所有的:包含私有,公有, 保护, 默认) + + ```java + getDeclaredMethods() + ``` + +**Method 执行方法** + +* `invoke(Object o,Object... para)` + + 参数1. 要调用方法的对象 + 参数2. 要传递的参数列表 + +* `getName()` + 获取方法的方法名称 + +* `setAccessible(boolean flag)` + 如果flag为true 则{表示忽略访问权限检查 !(可以访问任何权限的方法) + +![](https://i.loli.net/2020/10/26/u3T6tlMyavn59Kf.png) + +### 获取Field + +**通过class对象 获取一个类的属性** + +1. 根据属性的名称, 获取一个属性对象 (所有属性) + + ```java + getDeclaredField(String filedName) + ``` + +2. 获取所有属性(所有权限) + + ```java + getDeclaredFields() + ``` + +3. 根据属性的名称, 获取一个属性对象 (public属性) + + ```java + getField(String filedName) + ``` + +4. 获取所有属性 (public) + + ```java + getFields() + ``` + +**Field 属性的对象类型** + +常用方法: + +* `get(Object o)` + + 参数: 要获取属性的对象,获取指定对象的此属性值 + +* `set(Object o , Object value)` + + 参数1.要设置属性值的对象,参数2. 要设置的值。设置指定对象的属性的值 + +* `getName()` + 获取属性的名称 + +* `setAccessible(boolean flag)` + + 如果flag为true 则表示忽略访问权限检查 !(可以访问任何权限的属性) + +![](https://i.loli.net/2020/10/26/JzatTMCxEkdjfZw.png) + +### 获取注解信息 + +**获取类/属性/方法的全部注解对象** + +```java +Annotation[] annotations = Class/Field/Method.getAnnotations(); +for (Annotation annotation : annotations) { + System.out.println(annotation); +} +``` + +**根据类型获取类/属性/方法的注解对象** + +``` +注解类型 对象名 = (注解类型) c.getAnnotation(注解类型.class); +``` + +![](https://i.loli.net/2020/10/26/ZuIB4gvK5yWfUxD.png) + +## 内省 + +### 简介 + +内省即基于反射 ,java所提供的一套应用到JavaBean的API。 + +> 一个定义在包中的类 ,拥有无参构造器,所有属性私有,所有属性提供get/set方法,实现了序列化接口。这种类, 我们称其为 bean类。 +> +> Java提供了一套java.beans包的api ,对反射的操作,进行了封装! + +### Introspector + +获取Bean类信息,方法: + +`BeanInfo getBeanInfo(Class cls)` :通过传入的类信息, 得到这个Bean类的封装对象. + +### BeanInfo + +常用的方法: + +`MethodDescriptor[] getPropertyDescriptors()`:获取bean类的 get/set方法 数组 + +### MethodDescriptor + +常用方法: + +`Method getReadMethod()`:获取一个get方法 + +`Method getWriteMethod()`:获取一个set方法 + +有可能返回null 注意加判断! + +![image-20201026234226051](https://i.loli.net/2020/10/26/8UqRoVuAdaIewJ6.png) \ No newline at end of file diff --git a/source/_posts/移动端布局.md b/source/_posts/移动端布局.md new file mode 100644 index 0000000..7e58860 --- /dev/null +++ b/source/_posts/移动端布局.md @@ -0,0 +1,937 @@ +--- +title: 移动端布局 +date: 2020-11-16 19:31:49 +tags: +- 前端 +- flex布局 +- 响应式布局 +categories: +- 前端 +--- + +## 移动端现状 + +* 内核 + * 当前国产主流手机浏览器,内核都是Webkit +* 分辨率:手机分辨率,碎片化太多 + * Android:480x800, 480x854, 540x960, 720x1280,1080x1920 等 + * iPhone:640x960, 640x1136, 750x1334, 1242x2208 等 + * 2K、4K等高分辨率 + + + +在开发过程中,Google chrome是主要模拟手机的手段之一,步骤: + +1. 鼠标右键 检查 或 F12 控制器界面方向; + +2. 选择 手机模式 +3. 选择 手机类型及尺寸;调节适当的显示比例; +4. 点右键 查看 页面元素; + +![](https://i.loli.net/2020/11/05/Gkg6KFxR7IHm3ZJ.png) + +## viewport(视口) + +**定义:** + +视口:浏览器(PC、移动端)显示页面内容的屏幕区域;不同的屏幕的大小,我们看到的区域也是不同的; + +PC端的页面直接放入手机屏显示,不友好,可以用viewport来解决 + +![image-20201105130620315](https://i.loli.net/2020/11/05/s1gtWMJ95GX42j3.png) + +![](https://i.loli.net/2020/11/05/Y7wazID9g2hUQGO.png) + +HTML宽度默认为980px,不是很合适; + +> 各手机型号尺寸: +> +> | 设备 | 尺寸(英寸) | 开发尺寸(px) | 物理像素比(dpr) | +> | -------------------- | ------------ | -------------- | ----------------- | +> | iphone3G | 3.5 | 320*480 | 1.0 | +> | iphone4/4s | 3.5 | 320*480 | 2.0 | +> | iphone5/5s/5c | 4.0 | 320*568 | 2.0 | +> | HTC One M8 | 4.5 | 360*640 | 3.0 | +> | iphone6 | 4.7 | 375*667 | 2.0 | +> | Nexus4 | 4.7 | 384*640 | 2.0 | +> | Nexus5x | 5.2 | 411*731 | 2.6 | +> | iphone6 Plus | 5.5 | 414*736 | 3.0 | +> | Samsung Galaxy Note4 | 5.7 | 480*853 | 3.0 | +> | Sony Xperia Z Ultra | 6.4 | 540*960 | 2.0 | +> | Nexus 7(‘12) | 7.0 | 600*960 | 1.3 | +> | iPad Mini | 7.9 | 768*1024 | 1.0 | +> +> + +那么设置HTML宽度多少为合适呢?设置为屏幕的窗口大小应该正好合适 + +**设置viewport** + +meta标签设置: + +```html + +``` + +`width=device-width`:改变HTML默认的980px 为 屏幕的宽度; + +`user-scalable`: 是否允许用户缩放屏幕 值:no(0不允许) yes(1允许); + +`initial-scale`:初始化缩放比例;1.0:不缩放; + +`maximum-scale`:用户对页面的最大缩放比例;值:比例 + +`minimum-scale`:用户对页面的最小缩放比例;值:比例 + +## 二倍图 + +**物理像素点** + +* 指计算机显示设备中的最小单位,即一个像素点的大小。每一个像素点可以理解为就是屏幕上的一个发光 + 点。每个点可以发一个颜色,就是我们看到的画面。 +* 早期的屏幕,物理像素点都比较大,随着技术的进步,物理像素点会被做的越来越小。 + +**屏幕分辨率** + +* 由物理像素点的个数来衡量,表示屏幕水平和垂直方向的物理像素点的个数。 + +> 例如:iPhone3和iPhone4是同一个屏幕尺寸下,比较分辨率: +> +> ![](https://i.loli.net/2020/11/05/tmYVi7JlQxLUeup.png) +> +> Retina(视网膜屏幕)是一种显示技术,可以将把更多的物理像素点压缩至一块屏幕里;从而达到更高的分辨率,并提高屏幕显示的细腻程度。 +> +> ![image-20201105133553373](https://i.loli.net/2020/11/05/NfyYevr6w3DQa1q.png) + +**图片分辨率** + +假设:有200*200分辨率的图片,展示在宽度分别是320(iphone3)、640(iphone4)分辨率的手机上,展示 +的效果如下: + +![image-20201105133722991](https://i.loli.net/2020/11/05/AKrpNHldgYZSI6F.png) + +可以看出,不同的屏幕下,显示的图片大小是不一样的;物理像素点的宽度大小为1:0.5,物理像素点的数量:320(1 x 200=200长度)、640(0.5 x 400=200长度;都设为是200长度,才能保证显示的大小一样,这时320的屏幕是200像素点,而640的屏幕是400个像素点。 + +在移动端,我们可以通过设置CSS样式宽高200px后,会自动保证每个屏幕显示元素大小一样,它会自动算出不同屏幕下,背后需要提供物理像素点需要多少个。 + +**二倍图** + +像针对640分辨率手机屏(iPhone4),要求设计给400*400图,对应我们CSS设置200px,有二倍的关系: + +命名: + +* xxxxx@2x.png:二倍图 +* xxxxx@3x.png:三倍图 + +## 移动端常见布局 + +了解常见布局不同,针对业务需求选择不同的方案;实际开发过程中,都是混合使用,没有哪一种是绝对的 +单独使用。 + +常见布局包括以下几种方式 + +* 单独制作移动端页面 + * 流式布局 (百分比布局) + * flex弹性布局 (强列推荐) + * less+rem+媒体查询布局 + * 混合布局 +* 响应式页面兼容移动端 + * 媒体查询 + * bootstrap + +比较: + +* 单独制作:流式、flex、rem布局、专门针对各种手机屏幕进行开发。例如:淘宝、京东、苏宁手机端都是单独制作的 +* 响应式:可兼容PC 移动端,一个页面多个端适配显示;制作起来要考虑到兼容性的样式。例如:三星电子官网www.samsung.com/cn/ 就是响应式布局 + +### 流式布局 + +看下面代码,左右两部分以百分比来定义宽度,这样无论屏幕如何变化都可以保证效果 + +```html + + + + + + Document + + + +
+
+
+
+ + +``` + +### flex布局 + +参考[Flex 布局教程:语法篇](https://ruanyifeng.com/blog/2015/07/flex-grammar.html) + +#### flex介绍 + +布局的传统解决方案,基于[盒状模型](https://developer.mozilla.org/en-US/docs/Web/CSS/box_model),依赖 [`display`](https://developer.mozilla.org/en-US/docs/Web/CSS/display) 属性 + [`position`](https://developer.mozilla.org/en-US/docs/Web/CSS/position)属性 + [`float`](https://developer.mozilla.org/en-US/docs/Web/CSS/float)属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 + +2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 + +Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 + +**传统布局与flex布局比较:** + +* 传统布局: + + * 兼容性好、布局繁琐、浮动(清除浮动) + * 有局限性不能在移动端很好的布局 + +* flex布局: + + * 操作方便,布局极其简单,移动端使用比较广泛 + * PC端浏览器支持情况比较差 + + > 如果是PC端页面布局,采用传统方式;如果是移动端或者是不考虑兼容的PC端则采用flex布局 + +**flex布局特点:** + +* 任何一个容器标签都可以指定使用 flex 布局。 +* 当为父标签设为 flex 布局以后,子元素的 `float`、`clear` 和 `vertical-align` 属性将失效。 +* 使用思想上和传统盒子完全不同,不要再想子元素是块级元素、行内元素, +* flex通过行和列的思路来控制布局; + +**基本概念:** + +采用 flex 布局的元素,称为 flex 容器(flex container),父级简称"**容器**"。它的所有子元素自动成为容器成员,称为 flex 项目(flex item),简称"**项目**"。 + +![](https://i.loli.net/2020/11/05/Oznr9KpjHYfoLe8.png) + +**语法使用:** + +任何一个容器都可以指定为 Flex 布局。 + +> ```css +> .box{ +> display: flex; +> } +> ``` + +行内元素也可以使用 Flex 布局。 + +> ```css +> .box{ +> display: inline-flex; +> } +> ``` + +Webkit 内核的浏览器,必须加上`-webkit`前缀。 + +> ```css +> .box{ +> display: -webkit-flex; /* Safari */ +> display: flex; +> } +> ``` + +#### 容器属性 + +容器属性有以下6个 + +- `flex-direction` +- `flex-wrap` +- `flex-flow` +- `justify-content` +- `align-items` +- `align-content` + +##### flex-direction属性 + + `flex-direction`属性决定主轴的方向(即项目的排列方向)。元素默认按照确认的主轴方向进行排布。 + +```css +flex-direction:row | row-reverse | column | column-reverse; +``` + +它有4个值: + +| 属性值 | 说明 | +| :--------------- | :------------------ | +| `row` (默认值) | 水平方向 ,从左到右 | +| `row-reverse` | 水平方向,从右到左 | +| `column` | 垂直方向,从上到下 | +| `column-reverse` | 垂直方向,从下到上 | + +##### flex-wrap属性 + +默认情况下,项目都排在一条线(又称"轴线")上。`flex-wrap`属性定义,如果一条轴线排不下,如何换行。 + +```css +flex-wrap:nowrap | warp | wrap-reverse; +``` + +它有3个值: + +| 属性值 | 说明 | +| :--------------- | :----------------------------------------------------------- | +| `nowarp`(默认值) | 不换行;子项目加起来的宽度超过父级的宽度时,子项宽度会被缩小,宽度只是不生效,必须设置 | +| `warp` | 换行,子项的总宽加起来超过父级宽度,就会换行,第一行在上方 | +| `warp-reverse` | 换行,子项的总宽加起来超过父级宽度,就会换行,第一行在下方 | + +##### flex-flow属性 + +`flex-flow`属性是`flex-direction`属性和`flex-wrap`属性的简写形式,默认值为`row nowrap`。 + +```css +flex-flow: || ; +``` + +##### justify-content属性 + +`justify-content`属性定义了项目在主轴上的对齐方式,类似word里的左对齐,右对齐,居中对齐,分散对齐; + +```css +justify-content: flex-start | flex-end | center | space-between | space-around; +``` + +它有5个值: + +| 属性值 | 说明 | +| :------------------- | :----------------------------------------------------------- | +| `flex-start`(默认值) | 从头部开始 排列,如果主轴是x轴,则从左到右(左对齐) | +| `flex-end` | 从尾部开始排列 | +| `center` | 在主轴居中对齐(如果主轴是x轴 水平居中) | +| `space-around` | 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。 | +| `space-between` | 两端对齐,项目之间的间隔都相等。 | + +![image-20201105165428118](https://i.loli.net/2020/11/05/TVsbDKdaExAP8f4.png) + +##### align-items属性 + +`align-items`属性是控制子项单行在侧轴(交叉轴,默认是y轴)上的对齐方式,在子项为单项(单行)的时候使用;整体一行元素看成整体,设置在侧轴上的对齐方式。 + +```css +align-items: flex-start | flex-end | center | baseline | stretch; +``` + +它有5个值: + +| 属性值 | 说明 | +| :---------------- | :--------------------------------------------------- | +| `flex-start` | 交叉轴的起点对齐(如果是y轴 ,从上到下) | +| `flex-end` | 交叉轴的终点对齐 | +| `center` | 交叉轴的中点对齐。 | +| `stretch`(默认值) | 如果项目未设置高度或设为auto,将占满整个容器的高度。 | +| `baseline` | 项目的第一行文字的基线对齐。 | + +![](https://i.loli.net/2020/11/05/Pb8shxufpnevYMS.png) + +##### align-content属性 + +`align-content`属性设置项目在侧轴的排列方式 ,只能用于子项出现换行或者多行的情况,如果项目只有一根轴线(一行),该属性不起作用。 + +```css +align-content: flex-start | flex-end | center | space-between | space-around | stretch; +``` + +它有6个值: + +| 属性值 | 说明 | +| :---------------- | :----------------------------------------------------------- | +| `flex-start` | 从侧轴头部开始排列 | +| `flex-end` | 从侧轴尾部开始排列 | +| `center` | 在侧轴中间显示 | +| `stretch`(默认值) | 项目高度平分容器高度 | +| `space-between` | 与侧轴两端对齐,轴线之间的间隔平均分布。 | +| `space-arond` | 每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 | + +![image-20201105171729060](https://i.loli.net/2020/11/05/NvrsDGHJ3mp6WM9.png) + +#### 项目属性 + +项目属性有以下6个: + +- `order` +- `flex-grow` +- `flex-shrink` +- `flex-basis` +- `flex` +- `align-self` + +##### order属性 + +![](https://i.loli.net/2020/11/05/EZfINrvdcjOiazR.png) + +##### flex-grow属性 + +![image-20201105172534642](https://i.loli.net/2020/11/05/dmEyo3HPGRc9WJK.png) + +##### flex-shrink属性 + +![](https://i.loli.net/2020/11/05/QTybV43Cfz62JLo.png) + +##### flex-basis属性 + +![](https://i.loli.net/2020/11/05/PIBMRicrzHqlyn2.png) + +##### flex属性 + +`flex`属性是`flex-grow`, `flex-shrink` 和 `flex-basis`的简写,默认值为`0 1 auto`。后两个属性可选。 + +```css +.item { + flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] +} +``` + +该属性有两个快捷值:`auto` (`1 1 auto`) 和 `none` (`0 0 auto`)。 + +建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。 + +##### align-self属性 + +`align-self`属性允许单个项目有与其他项目不一样的对齐方式,可覆盖`align-items`属性。默认值为`auto`,表示继承父元素的`align-items`属性,如果没有父元素,则等同于`stretch`。 + +```css +.item { + align-self: auto | flex-start | flex-end | center | baseline | stretch; +} +``` + +除了auto,其他5个属性值的含义与`align-items`属性完全一样。 + +### 移动端适配 + +#### 媒体查询 + +> 媒体查询可以感受到屏幕的变化;可以根据屏幕不同的宽,从而获得不同的样式,然后实现不同的样式显示。 +> +> 1. CSS3 新语法,是一个查询屏幕的过程,通过查询当前屏幕尺寸属于哪个范围,从而有哪个范围的样式生效; +> +> 2. 感受屏幕变化,屏幕变化就是宽度的变化,通过预设置,当屏幕到了我已经预设置的变化的范围,就会把我提前设置好的样式进行生效; + +**语法**:CSS样式如下 + +```css +/* +mediatype 查询类型: +----------------- +all 所有设备 +print 用于打印机和打印预览 +screen 用于电脑屏幕,平板电脑,智能手机等。 + +条件: +---- +and 并且 not 不满足 only 仅仅满足 + +media feature 查询条件: +---------------------- +width,min-with,max-width +*/ +@media mediatype and|not|only (media feature) { + CSS-Code; +} +``` + +**例子:**如果文档宽度小于 500 像素则修改背景颜色(background-color) + +```css +/* min-width/max-width:最小界值,最大界值;查询条件包含等于号;*/ +@media screen and (max-width:499px) { + body { + background-color: red; + } +} +``` + +#### rem + +> rem是一个相对单位,类似于em, +> +> 不同的是rem的基准是相对于html元素的字体大小,em是父元素字体大小。 + +rem让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。 + +rem单位,可以控制整个页面所有元素有关PX类(宽、高、padding、margin、top...)只要是你设置数值的地方都可以实现控制; + +根(root): 1 rem代表HTML的font-size大小; + +```css +/* 1.根html 为 10px */ +html { + font-size: 10px; +} +/* 2.此时 div 的宽就是 150px */ +div { + width: 15rem; +} +``` + +**rem应用:** + +使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化,元素尺寸也会发生变化,从而达到等比缩放的适配。 + +```css +@media screen and (min-width: 320px) { + html { + font-size: 20px; + } +} +@media screen and (min-width: 640px) { + html { + font-size: 40px; + } +} +/*在屏幕宽度为320px-639px的设备上,div的宽高就都是20px; +在屏幕宽度大与等于640px的设备上,div的宽高就都是40px;*/ +div { + width:1rem; + height:1rem; +} +``` + +#### less + +* less : 让你写更少的代码,实现相同的效果; +* less :是一门 CSS 扩展语言,它扩展了CSS的动态特性。 CSS 预处理语言。 +* 常见的CSS预处理器:Sass、Less、Stylus 。 +* Less中文网址:http://lesscss.cn/ + +**less安装:** + +sublime安装less和less2Css插件: + +https://blog.csdn.net/redase/article/details/83998172 + +vscode安装less插件: + +* 在扩展:商店中搜 Easy Less安装即可 + +测试:写一个.less文件,保存,就会在当前目录生成一个对应的.css文件 + +![image-20201105205211449](https://i.loli.net/2020/11/05/SCPpKOIl3Qy4soZ.png) + +**less变量** + +变量是指没有固定的值,可以改变的。我们CSS中的一些颜色和数值等经常使用,可以设置为变量;语法: + +```less +//@变量名:值; +@bg:#333; +.box_1 { + background-color: @bg; +} +.box_2 { + background-color: @bg; +} +``` + +变量命名规则: + +* 必须有@为前缀 +* 不能包含特殊字符~=+、不能以数字开头 +* 大小写敏感区分; + +**less嵌套** + +类似HTML一样写less结构;语法: + +```css +/* css 写法 */ +#header .logo { + width: 300px; +} +/* less 写法 */ +#header { + .logo { + width: 300px; + } +} +``` + +交集|伪类|伪元素选择器,语法: + +```css +/* css写法 */ +a:hover{ + color:red; +} +/* less写法 */ +a{ + &:hover{ + color:red; + } +} +``` + +**less运算** + +任何数字、颜色或者变量都可以参与运算,Less提供了加(+)、减(-)、乘(*)、除(/)算术运算。 + +```less +// 数字 +width: 200px - 50; +// 颜色 +background-color: #666 - #222; +// 注意:运算符中间左右有个空格隔开 +``` + +运算后的单位选择: + +* 如果两个值之间只有一个值有单位,则运算结果就取该单位 +* 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位 + +> 更多less的用法可以访问less的文档 +> +> 1. http://lesscss.cn/ +> +> 2. https://less.bootcss.com/ + +#### 两种移动端适配方案 + +##### 方案一 :rem+媒体查询+less + +上面已经说明过了 + +使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化,元素尺寸也会发生变化,从而达到等比缩放的适配。 + +大概步骤就是: + +1. 准备各个档位下的rem :提前准备好各个档位下的HTML 的font-size大小; +2. 拿到当前尺寸的1rem代表多少px; +3. 计算比例:把页面刚才所有的元素的PX值替换为rem,可通过less来计算。 +4. 达到目标:那么,屏尺寸变化时,1rem(基础块)也会变化,自然就是等比缩放。 + +##### 方案二:rem+ flexible.js+less + +和上个方案实现原理一样,都是通过改变1rem(基础块)大小实现页面整体元素改变; + +**filexible.js** + +* 手机淘宝团队出的 简洁高效 移动端适配库;和flex布局没有任何关系 + +* github地址:https://github.com/amfe/lib-flexible + +* 不是通过设置CSS媒体查询设置font-size,通过 JS 设置font-size,效果是屏幕变化一点,就有一个rem重新计算; + +```javascript +function setRem () { + // docEl.clientWidth JS获取当前屏幕的宽度 + // 除以10,得到基础块,(将屏幕划分为10块) + var rem = docEl.clientWidth / 10; + docEl.style.fontSize = rem + 'px' +} +``` + +举个例子: + +* 假如拿到屏幕宽度按430px设计的设计稿, + +* 拿到UI设计稿,原稿实现:页面上所有的元素,在设计稿上进行测量,代码实现;(流式、flex)只要是UI给图上有标注,就是写出来;先全部实现出来,一会儿统一替换; + * 在哪里写?less文件 + * 需要把生成的css文件进行引入index.html; +* 设计稿宽度/10 :1rem = 43px; +* 统一替换:100px=100/43 rem; + +> **两种方案的对比** +> +> * 相同: +> * 都是对font-size实现控制,1rem(基础块)变化,实现等比效果; +> * 不同: +> * rem+媒体查询+less:通过设置不同的档位下,设置不同的1rem值;效果为阶梯式变化; +> * flexible.js+rem:通过js设置不同的1rem值,效果为连续变化;这个看起来更为连贯,适配任何屏幕。 + +### 响应式布局 + +#### 介绍 + +响应式布局可以通过同一份代码快速、有效适配手机、平板、PC设备等所有的屏幕。 + +响应式布局涉及屏幕宽度变化(媒体查询)和布局知识[传统布局方案(百分比、浮动、清除浮动、定位)] + +#### 档位划分 + +媒体查询:档位划分;市场上默认的划分,三个节点、四个档位 + +* w<768 超小屏幕(xs)(手机) +* 768<= w <992 小屏设备(sm)(平板) +* 992<= w <1200 中等屏幕(md)(小显示屏的PC显示器) +* 1200<=w 大宽屏设备(lg)(大桌面显示器) + +![](https://i.loli.net/2020/11/05/tS6KdNzboRBkLiw.png) + +```css +/*把市场上所有屏幕包括在内:*/ +/* 1. 超小屏幕下 xs 小于 768 */ +@media screen and (min-width: 0px) { +} +/* 2. 小屏幕下 sm 大于等于768 */ +@media screen and (min-width: 768px) { +} +/* 3. 中等屏幕下 md 大于等于 992px */ +@media screen and (min-width: 992px) { +} +/* 4. 大屏幕下 lg 大于等于1200 */ +@media screen and (min-width: 1200px) { +} +``` + +#### 版心 + +不同的档位下,版心不同;所有的子元素都是归于版心下,不同的版心宽度,意味着子元素要以不同的布局排版满足用户浏览友好的需求; + +```css +/* 1. 超小屏幕下 xs 小于 768 布局容器的宽度为 100% */ +@media screen and (max-width: 767px) { + .container { + width: 100%; + } +} +/* 2. 小屏幕下 sm 大于等于768 布局容器改为 750px */ +@media screen and (min-width: 768px) { + .container { + width: 750px; + } +} +/* 3. 中等屏幕下 md 大于等于 992px 布局容器修改为 970px */ +@media screen and (min-width: 992px) { + .container { + width: 970px; + } +} +/* 4. 大屏幕下 lg 大于等于1200 布局容器修改为 1170 */ +@media screen and (min-width: 1200px) { + .container { + width: 1170px; + } +} +``` + +> 注意: +> +> * 媒体查询使用符号的相关:min-,max-包含等号,后面是数值单位为px; +> * 除超小屏以外:版心的宽度设置都是小于当前档位最小界值,比如 min-width: 768px,版心是750px;两边留空白,用户体验好。 +> * 以上是市场默认划分,可根据自己需求添加档位; + +#### [BootStrap](https://www.bootcss.com/) + +BootStrap框架可快速搭建出响应式页面; + +* BootStrap 出自 Twitter(推特),是目前最受欢迎的前端响应式框架。 + +* 网址: + * 中文网:http://www.bootcss.com/ +* 版本: + * 2.x.x:停止维护,代码不够简洁,功能不够完善。 + * 3.x.x:目前使用最多,稳定,不支持IE6-IE7。对 IE8 支持,界面效果不好,偏向用于开发响应式布局、移动设备优先的WEB 项目。 + * 4.x.x:最新版,目前还不是很流行 + +**使用** + +使用前需要先去官网下载https://v3.bootcss.com/getting-started/,如无特殊需求,建议下载用于生产环境的。 + +![](https://i.loli.net/2020/11/05/I8aFMTEqcypOxXZ.png) + +下载完成后,将其整个文件夹放入你的项目中。 + + 初始化html文件 + +```html + + + + + + + + + BootStrap Template + + + + + + + + + + +

你好,世界!

+ + +``` + +> 条件注释:满足条件,下面代码链接就会发出请求; +> +> ```css +> [if lt IE 9] +> +> +> [endif] +> ``` + +##### 布局容器 + +* 版心设置:BootStrap 需要为页面内容包裹一个 .container 或者.container-fluid 容器,它提供了两个作此用处的类。 +* `.container`:设置不同档位下的版心的宽度; + * 超小屏(xs : extra small):手机; 0px <=w ;版心宽度为100% + * 小屏(sm : small) :平板; 768px<=w ;版心宽度定为 750px + * 中屏(md: medium):桌面;992px<=w ;版心宽度定为 970px + * 大屏(lg: large):大桌面;1200px<=w ;版心宽度定为 1170px +* .container-fluid:百分百宽度; +* 特点: + * 所有元素为CSS3盒子模型; + * 布局盒子有左右15px padding值; + +##### Bootstrap预制类名 + +* 排版 + + ```html +

h1. Bootstrap heading

+

h2. Bootstrap heading

+ ... +
h6. Bootstrap heading
+

...

+ ``` + + 更多内容可以参考:https://v3.bootcss.com/css/#type + +* 按钮 + + ```html + Link + + + + ``` + + 更多内容可以参考:https://v3.bootcss.com/css/#buttons + +* 辅助类样式 + + ```html + +

...

+ + + ``` + + 更多内容可以参考:https://v3.bootcss.com/css/#helper-classes + +* 字体图标 + + ```html + + + ``` + + 更多内容可以参考:https://v3.bootcss.com/components/#glyphicons + +##### Bootstrap栅格系统 + +栅格系统可以设置子元素在不同档位下的布局; + +栅格系统,在各个档位下,控制子元素布局不同;将版心宽度均分为12份; + +各个档位下都有预制好的类前缀: + +![](https://i.loli.net/2020/11/05/v5pARWne17VXTZ9.png) + +栅格系统用于通过一系列的**行(row)与列(column)的组合**来创建页面布局,你的内容就可以放入这些创建好的布局中,控制不同的档位下,**列的子元素占有几份** + +**基本使用:** + +```html + +
+
+
.col-md-6
+
.col-md-6
+
+
+ +
+
+
1
+
2
+
+
+``` + +* 单一类前缀:各个档位下的类前缀,为包括当前且向上生效;例如:.col-md-6为中屏和以上占有6份; +* 多个类前缀:分别按照各个档位列划分生效; +* 每个子项:默认左右15px的padding; +* 行(.row) 可以去除父容器左右15px的padding值:.row的左右margin为-15px; + +**列嵌套** + +可以在已经分好的子元素中内部,继续进行列的划分(共12份),继续在分好的布局内继续划分; + +```html + +
+
小列
+
小列
+
+ + +
+ +
+
小列
+
小列
+
+
+``` + +**列偏移:** + +划分好的子项进行列的份数偏移,场景:左右布局,居中布局; + +```html + +
+ +
1
+
2
+
+ +
+ +
中间盒子
+
+``` + +栅格系统相关内容可以参考:https://v3.bootcss.com/css/#grid + +##### 响应式工具 + +![](https://i.loli.net/2020/11/05/HPAdJC73MOzXIbo.png) + +* 注意:和列类前缀的参数形成对比记忆, + * col-sm-* 是超小屏(包含)以上的屏幕都是这个份数的划分; + * 响应式工具 只是对当前档位下的类前缀类名生效; + +响应式工具相关内容可以参考:https://v3.bootcss.com/css/#responsive-utilities \ No newline at end of file diff --git a/source/_posts/简单的Java加减乘除计算器-适合新手.md b/source/_posts/简单的Java加减乘除计算器-适合新手.md new file mode 100644 index 0000000..773b651 --- /dev/null +++ b/source/_posts/简单的Java加减乘除计算器-适合新手.md @@ -0,0 +1,84 @@ +--- +title: 简单的Java加减乘除计算器(适合新手) +date: 2020-05-30 22:59:13 +tags: +- Java +- 代码 +categories: +- Java练习 +--- + +本人Java新手一枚,刚学完Java数据类型、流程控制、数组、方法等基础语法知识。 + +尝试写了一个简单的计算器,实现了加减乘除功能,并可以循环接收数据。 + +代码有待改进,希望各位大佬多多指点 :beers: + + + +```java +public class calculator { + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + while(true){ + System.out.println("请输入需要计算的第一个数字"); + double a = in.nextDouble(); + System.out.println("请输入需要计算的第二个数字"); + double b = in.nextDouble(); + while(true) { + System.out.println("请输入运算方式(+ - * /)"); + String operation = in.next(); + switch (operation) { + case "+": + System.out.println(add(a,b)); + break; + case "-": + System.out.println(subtraction(a, b)); + break; + case "*": + System.out.println(multiply(a, b)); + break; + case "/": + System.out.println(division(a, b)); + break; + default: + System.out.println("输入不正确,请重新输入"); + } + break; + } + while (true) { + System.out.println("是否继续使用? " + "YES/NO"); + String choose = in.next(); + if (choose.equals("YES")) { + break; + } else if (choose.equals("NO")) { + System.out.println("欢迎下次使用,再见"); + return; + } else { + System.out.println("输入不正确,请重新输入"); + } + } + } + } + //加 + private static double add(double a,double b){ + return a+b; + } + //减 + private static double subtraction(double a,double b){ + return a-b; + } + //乘 + private static double multiply(double a,double b){ + return a*b; + } + //除 + private static double division(double a,double b){ + if(b==0){ + System.out.println("被除数不能为0"); + return 0 ; + } + return a/b; + } +} +``` \ No newline at end of file diff --git a/source/_posts/计算机硬件核心基础知识.md b/source/_posts/计算机硬件核心基础知识.md new file mode 100644 index 0000000..2dbebad --- /dev/null +++ b/source/_posts/计算机硬件核心基础知识.md @@ -0,0 +1,361 @@ +--- +title: 计算机硬件核心基础 +date: 2020-05-07 10:43:18 +tags: +- 计算机组成 +- 计算机硬件 +- 操作系统 +categories: +- 计算机基础 +--- + +## 前言 + +先来了解一些基本概念: + +**`编程语言`**本质是一门语言,语言就是一种事物与另外一种事物沟通的表达方式/工具,那么编程语言就是**人**与**计算机**之间沟通的方式。 + + + +**`编程`**就是人类把自己想让计算机做的事,也就是自己的思维逻辑,用编程语言表达出来。 + +**`编程的目的`**就是让计算机按照人类的思维逻辑去工作,从而解放人力。 + +![1](https://i.loli.net/2020/05/07/hg3NOqwCmSMkfGj.jpg) + +## 计算机组成原理 + +> ![简单计算机组件](https://i.loli.net/2020/05/16/Hr8qJpKlM3tcuIi.jpg) + +### 计算机五大组成部分 + +#### **`控制器`** + +**控制器**是计算机的指挥系统。控制器通过地址访问存储器,从存储器中取出指令,经译码器分析后,根据指令分析结果产生相应的操作控制信号作用于其他部件,使得各部件在控制器控制下有条不紊地协调工作。 + + + +#### **`运算器`** + +**运算器**是实现算术运算和逻辑运算的部件。 + +**`控制器 + 运算器 = CPU`** + +#### **`存储器`** + +**存储器**是计算机用来存放所有数据和程序的记忆部件。它的基本功能是按指定的地址存(写)入或者取(读)出信息。 + +计算机中的存储器可分成两大类:一类是内存储器,简称**内存或主存**;另一类是外存储器(辅助存储器),简称**外存或辅存**。 存储器由若干个存储单元组成,每个存储单元都有一个地址,计算机通过地址对存储单元进行读写。一个存储器所包含的字节数称为**存储容量**,单位有B、KB、MB、GB、TB等。 + +* **内存:** 存取数据快;断电数据丢失,只能临时存取数据。 + +* **外存:**存取数据慢;断电数据不会丢失,用来永久保存数据 。 + + 内存的存取速度要远高于外存。 + +#### **`输入设备input`** + +**输入设备**是计算接收外界输入数据的工具,如键盘、鼠标。 + +#### **`输出设备output`** + +**输出设备**是计算机向外输出数据的工具,如显示器、打印机。 + +存储器如内存、磁盘等既是输入设备又是输出设备,统称为IO设备 + +> ![img](https://i.loli.net/2020/05/16/4aDRbLGvfy7wrAs.png) + +CPU存取的数据和指令都来自主存储器(内存) 。 + +内存称之为主存,主存储器内的数据则是从输入单元所传输进来!而CPU处理完毕的数据也必须先写回主存储器中,最后数据才从主存储器传输到输出单元。 + +### 程序运行与三大核心硬件(CPU 内存 硬盘)的关系 + +我们编写的程序一定是要运行于计算机硬件之上,而站在硬件的角度,与运行程序有关的三大核心硬件为CPU、内存、硬盘。 + +程序最先是存放于硬盘中的,程序的运行是先从硬盘把代码加载到内存中,然后CPU是从内存中读取指令运行。 + +## 操作系统 + +### 操作系统的由来 + +大前提:我们编程目的就是为了奴役计算机,让计算机硬件自发地运行起来,然而硬件毕竟是”死的“,**硬件的运行都是由软件支配**。 + +倘若我们要开发一个应用程序,在没有操作系统之前,开发者在编写业务逻辑之前,必须先编写一套完整的控制程序来控制所有的硬件基本运行(这要求开发者需要详细了解计算机硬件的各种控制细节,例如要熟悉CPU里面所有的指令集),如此,所有开发者在开发程序时都必须按以下两个步骤: + +```tex +1.编写一套完整的的控制程序,用来控制硬件的基本运行,以及把复杂的硬件的操作封装成简单的接口 +2.基于控制程序的接口开发包含一系列业务逻辑的程序,为了与控制程序区分,可以称为应用程序. +``` + +综上,对于不同的应用程序来说,应用程序的业务逻辑各不相同,但硬件的控制程序都大致相同,为了避免所有开发者做重复劳动,以及不用再耗费精力去了解所有硬件的运行细节,有公司专门跳出来承担起控制程序的开发任务,这里所说的控制程序指的就是操作系统。 + +**`操作系统`**是一个协调、管理、控制计算机硬件资源与应用软件资源的控制程序。它位于计算机硬件与应用软件之间,起承上启下的作用。 + +**操作系统的功能:** + +* 控制计算机硬件的基本运行 + +* 帮我们把复杂的硬件的控制封装成简单的接口,对于开发应用程序来说只需要调用操作系统提供给我们的接口即可 + + + +### 系统软件与应用软件 + +* 系统软件: + + 指控制和协调计算机及外部设备、支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度、监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。 + + 一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具),是支持计算机系统正常运行并实现用户操作的那部分软件。 + +* 应用软件: + + 应用软件(Application)是和系统软件相对应的,是用户可以使用的各种程序设计语言,以及用各种程序设计语言编制的应用程序的集合,分为应用软件包和用户程序。应用软件包是利用计算机解决某类问题而设计的程序的集合,多供用户使用。 + + 应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。 它可以拓宽计算机系统的应用领域,放大硬件的功能。 + +### 计算机系统三层结构 + +我们开发应用程序本质是在控制硬件,但是我们直接打交道的是操作系统,应用程序都是通过操作系统来间接地操作硬件的,所以一套完整的计算机系统分为三层,如下: + +> ![计算机系统三层结构](https://i.loli.net/2020/04/20/nrdy8V6NIoPLhiD.jpg) + +### 平台与跨平台的概念 + +应用程序都是运行于操作系统之上,而操作系统则是运行于硬件之上的,所以承载应用程序的是一台运行有操作系统的计算机,称之为应用程序的运行平台,即:**`硬件 + 操作系统 = 平台`**。 + +> ![平台](https://i.loli.net/2020/04/20/iBWhvPRqGZ14ry5.jpg) + +常见的平台有:windows系统+某款硬件、linux系统+某款硬件、ubuntu+某款硬件等,我们在开发应用程序时就需要考虑到应用程序的**跨平台**性,如果能开发出一款可以在任意平台运行的应用程序,那对于开发者来说真是极大的福音。 + +跨平台即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。而决定应用软件的跨平台性的关键因素往往是编程语言的选择,一般解释型语言(即不需编译的语言,比如:PHP、Python等)都可跨平台运行;有些编译型语言(如:Java等)由于其本身的特性(不同平台有不同的库、具有跨平台的扩展以及中间件),也可跨平台运行。 + +## 知识拓展 + +### CPU详解 + +#### CPU的分类与指令集 + +CPU内部是含有微指令集的,我们所使用的的软件都要经过CPU内部的微指令集来完成才行。这些指令集的设计主要又被分为两种设计理念,这就是目前世界上常见到的两种主要的CPU种类:分别是精简指令集(RISC)与复杂指令集(CISC)系统。下面我们就来谈谈这两种不同CPU种类的差异! + +1.**`精简指令集`** + +精简指令集(Reduced Instruction Set Computing,RISC):这种CPU的设计中,微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。常见的RISC指令集CPU主要例如Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、与ARM系列等。【注:Sun已经被Oracle收购】 + +SPARC架构的计算机常用于学术领域的大型工作站中,包括银行金融体系的主服务器也都有这类的计算机架构; + +PowerPC架构的应用,如Sony出产的Play Station 3(PS3)使用的就是该架构的Cell处理器。 + +ARM是世界上使用范围最广的CPU,常用的各厂商的手机、PDA、导航系统、网络设备等,几乎都用该架构的CPU。 + +2.**`复杂指令集`** + +复杂指令集(Complex Instruction Set Computer,CISC)与RISC不同,在CISC的微指令集中,每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因此指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。 + + +总结: + +CPU按照指令集可以分为精简指令集CPU和复杂指令集CPU两种,区别在于前者的指令集精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。后者的指令集每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因为指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。 + +#### x86-64 + +**``x86架构``** + +x86是针对cpu的型号或者说架构的一种统称,详细地讲,最早的那颗Intel发明出来的CPU代号称为8086,后来在8086的基础上又开发出了80285、80386....,因此这种架构的CPU就被统称为x86架构了。 + +由于AMD、Intel、VIA所开发出来的x86架构CPU被大量使用于个人计算机上面,因此,个人计算机常被称为x86架构的计算机! + +程序员开发出的软件最终都要翻译成cpu的指令集才能运行,因此软件的版本必须与cpu的架构契合,举个例子,我们在MySQL官网下载软件MySQL时名字为:``Windows(x86,32-bit),ZIP Archive (mysql-5.7.20-win32.zip)``我们发现名字中有x86,这其实就是告诉我们:该软件应该运行在x86架构的计算机上。 + +**``64位 ``** + +cpu的位数指的是cpu一次性能从内存中取出多少位二进制指令,64bit指的是一次性能从内存中取出64位二进制指令。 + +在2003年以前由Intel所开发的x86架构CPU由8位升级到16、32位,后来AMD依此架构修改新一代的CPU为64位,到现在,个人计算机CPU通常都是x86_64的架构。 + +cpu具有向下兼容性,指的是64位的cpu既可以运行64位的软件,也可以运行32位的软件,而32位的cpu只能运行32位的软件。这其实很好理解,如果把cpu的位数当成是车道的宽,而内存中软件的指令当做是待通行的车辆,宽64的车道每次肯定既可以通行64辆车,也可以通信32辆车,而宽32的车道每次却只能通行32辆车 + +#### 运算器与控制器 + +常将运算器和控制器合称为中央处理器(Central Processing Unit,CPU)。其中运算器用来主要负责程序运算与逻辑判断,控制器则主要协调各组件和各单元的工作,所以CPU的工作主要在于管理和运算。可以说计算机的大脑就是CPU。 + +**`1.运算器`** + +运算器是对信息进行处理和运算的部件。经常进行的运算是算术运算和逻辑运算,所以运算器又可称为算术逻辑运算部件(Arithmetic and Logical,ALU)。 + +运算器的核心是加法器。运算器中还有若干个通用寄存器或累加寄存器,用来暂存操作数并存放运算结果。寄存器的存取速度比存储器的存放速度快很多。 + +**`2.控制器`** + +控制器是整个计算机的指挥中心,它的主要功能是按照人们预先确定的操作步骤,控制整个计算机的各部件有条不紊的自动工作。 + +控制器从主存中逐条地读取出指令进行分析,根据指令的不同来安排操作顺序,向各部件发出相应的操作信号,控制它们执行指令所规定的任务。控制器中包括一些专用的寄存器。 + +#### 寄存器 + +寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 + +> ![img](https://i.loli.net/2020/05/16/l1qb8EsJoZPtx4m.jpg) + +#### 内核态与用户态 + +除了在嵌入式系统中的非常简单的CPU(如:单片机)之外,多数CPU都有两种模式,即**`内核态与用户态`**。 + +通常,计算机由[PSW](https://baike.baidu.com/item/PSW/1878339?fr=aladdin)(程序状态寄存器)控制这两种模式。 + +**`内核态:`**当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件) + +**`用户态:`**用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。 + +**`内核态与用户态切换:`** + 用户态下工作的软件不能操作硬件,但是我们的软件一定会有操作硬件的需求,比如从磁盘上读一个文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用[系统调用(system call)](https://baike.baidu.com/item/系统调用/861110),通过相应的指令把用户态切换成内核态。 + +把系统调用看成一个特别的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力。 + +#### 多线程与多核芯片 + +在一个CPU中增加多个处理逻辑,称为多线程或超线程,该概念是由Inter公司首次提出。 + +多核就是多个完整的CPU处理器。 + +比如,我们常说的四核八线程,就是指有四个CPU,每个CPU中有两个线程。 + +> 1 +> +> 2 + + + +### 存储器相关 + +> ![存储层次结构](https://i.loli.net/2020/05/16/Ko49glFa7BZUNXV.jpg) + +存储器系统采用如上图的分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高,其差别往往是十亿数量级的。 + +#### 寄存器即L1缓存 + +用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32\*32,在64位cpu中为64\*64,在两种情况下容量均小于1KB。 + +#### 高速缓存即L2缓存 + +主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0\~64字节为行0,64~127为行1… + +最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为**高速缓存命中**,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。**高速缓存未命中**,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容量大。 + +缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升。一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。 + +缓存是一个好方法,在现代cpu中设计了两个缓存,再看3.1.5中的两种cpu设计图。第一级缓存称为L1总是在CPU中,通常用来将已经解码的指令调入cpu的执行引擎,对那些频繁使用的数据字,多数芯片还会安装第二L1缓存 … 另外往往设计有二级缓存L2,用来存放近来经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。 + +#### 内存 + +再往下一层是主存,此乃存储器系统的主力,主存通常称为**随机访问存储(可读可写)`RAM`**,就是我们通常所说的内存,容量一直在不断攀升,所有不能再高速缓存中找到的,都会到主存中找,**主存是易失性存储,断电后数据全部消失**。 + +除了主存RAM之外,许多计算机已经在使用少量的**非易失性随机访问存储如`ROM`(Read Only Memory)**,在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块(BIOS)就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制。 + +**`EEPROM`(Electrically Erasable PROM,电可擦除可编程ROM)和`闪存`(flash memory)也是非易失性的**,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。 + + + +还有一类存储器就是**`CMOS`,它是易失性的**,许多计算机利用CMOS存储器来**保持当前时间和日期**。CMOS存储器和递增时间的电路由一小块**电池驱动**,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外**CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等**,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失 + +#### 硬盘(磁盘/机械硬盘) + +> ![3](https://i.loli.net/2020/05/03/17kJ8TzIfXl4rix.png) +> +> 4 + +磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节Bytes,1024Bytes=1kB,1024kB=1MB,1024MB=1GB,1024GB=1TB,1024TB = 1PB所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。 + +每个磁头可以读取一段换新区域,称为**`磁道`**。 + +把一个机械手臂位置上所有的磁道合起来,组成一个**`柱面`**。 + +每个磁道划成若干**`扇区`**,站在硬盘的角度,一次性读写数据的最小单位为扇区,一个扇区通常为512Bytes。 + +操作系统一次性读写的单位是一个Block块,默认是8个扇区,也就是4096Bytes + +#### 硬盘的IO延迟问题 + +**数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间** + +**平均寻道时间:** + +机械手臂从一个柱面随机移动到相邻的柱面的时间称为寻道时间,找到了磁道就意味着找到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置。受限于物理工艺水平。 + +**平均延迟时间:** + +机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间称为延迟时间。受限于硬盘的转速! + +IO延迟 = 平均寻道时间+平均延期时间。 + +> **`优化程序运行效率的一个核心法则:能从内存取数据,就不要从硬盘取数据`** + +#### 虚拟内存 + +许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中称为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit, MMU) + +> 从一个程序切换到另外一个程序,称为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换。 + +> PS:磁带: +> +> 在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中) + +### IO设备 + +**IO设备 = 设备的控制器+设备本身** + +cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。 + +见1.1的图,**I/O设备一般包括两个部分:设备控制器和设备本身**。 + +控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。 + +控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口 + +设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。 + +### 总线 + +在第1节的结构在小型计算机中沿用了多年,并也用在早期的IBM PC中。但是随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快。 + +北桥即PCI桥:连接高速设备 + +南桥即ISA桥:连接慢速设备 + +> ![](https://images2015.cnblogs.com/blog/1036857/201701/1036857-20170118183358656-1969770652.png) + +主板图解: + +![](https://images2018.cnblogs.com/blog/1036857/201803/1036857-20180314164300354-1096940375.jpg) + +### 操作系统启动流程 + +在计算机的主板上有一个基本的输入输出程序(Basic Input Output System) + +BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性存储ROM中。 + +**启动流程:** + +1.计算机加电 + +2.BIOS开始运行,检测硬件:cpu、内存、硬盘等 + +3.BIOS读取CMOS存储器中的参数,选择启动设备 + +4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位) + +5.根据分区信息读入bootloader启动装载模块,启动操作系统 + +6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户安装设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),传进需要的进程,并在每个终端上启动登录程序或GUI + +> 补充:**应用程序的启动流程** +> +> 1. 双击exe快捷方式,该快捷方式指向一个绝对路径 +> 2. 操作系统会根据路径找到exe程序在硬盘中的位置,控制其代码从硬盘加载到内存 +> 3. 然后CPU从内存中读取刚刚读入内存的程序代码执行,应用程序完成启动 + +## 参考: + +[1] https://www.cnblogs.com/linhaifeng/p/6523843.html#4462371 + +[2] https://zhuanlan.zhihu.com/p/108350791 \ No newline at end of file diff --git a/source/_posts/过滤器-Filter-和监听器-Listener.md b/source/_posts/过滤器-Filter-和监听器-Listener.md new file mode 100644 index 0000000..01bd1cf --- /dev/null +++ b/source/_posts/过滤器-Filter-和监听器-Listener.md @@ -0,0 +1,145 @@ +--- +title: 过滤器(Filter)和监听器(Listener) +date: 2020-12-12 13:54:10 +tags: +- JavaWeb +- filter +- listener +categories: +- JavaWeb +--- + +## 过滤器(Filter) + +### 过滤器定义 + +过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理. + +![](https://i.loli.net/2020/11/26/IPunhxFN9Vsjbqo.png) + +过滤器的特点:在servlet之前和之后都会被执行 + + + +### Filter使用 + +1. 创建一个类**实现Fiter接口**(javax.servlet.Filter)例如:以下代码是简单的字符编码过滤器 + + ```java + @WebFilter(filterName = "encodingFilter",urlPatterns = "/*") + public class EncodingFilter implements Filter { + @Override + public void init(FilterConfig filterConfig) throws ServletException { + //初始化过滤器 + } + + @Override + public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { + //具体的执行逻辑 + req.setCharacterEncoding("utf-8"); + resp.setCharacterEncoding("utf-8"); + resp.setContentType("text/html;charset = utf-8"); + //执行完过滤跳转到原请求目的地 + chain.doFilter(req,resp); + } + @Override + public void destroy() { + //关闭过滤器 + } + } + ``` + +2. **部署Filter过滤器** + + **方式一:在web.xml文件中部署** + + ```xml + + 过滤器名称 + 过滤器所在的路径 + + + 过滤器名称 + 需要过滤的资源或请求 + + ``` + + **方式二:通过@WebFilter注解部署** + + 如上面字符编码过滤器代码所示。 + + @WebFilter常用属性如下: + + | 属性名 | 类型 | 描述 | + | ------------ | -------- | ------------------------------------------------------------ | + | filterName | String | 指定过滤器的 name 属性,等价于 | + | value | String[] | 该属性等价于 urlPatterns 属性。但是两者不应该同时使用。 | + | urlPatterns | String[] | 指定一组过滤器的 URL 匹配模式。等价于标签。 | + | servletNames | String[] | 指定过滤器将应用于哪些 Servlet。取值是 @WebServlet 中的 name 属性的取值,或者是 web.xml 中 的取值。 | + +### Fiter使用场景 + +```tex +1.防止用户未登录就执行后续操作 + String name=(String)session.getAttribute("key"); + if(name==null){ + //跳转到登录页面 + } +2.设置编码方式--统一设置编码 +3.加密解密(密码的加密和解密) +4.非法文字筛选 +5.下载资源的限制 +...... +``` + +##监听器(Listener) + +### 监听器定义及分类 + +监听器就是监听某个域对象的的状态变化的组件。 + +> 监听器的相关概念: +> +> * 事件源:被监听的对象(三个域对象request、session、servletContext) +> * 监听器:监听事件源对象事件源对象的状态的变化都会触发监听器 +> * 注册监听器:将监听器与事件源进行绑定 +> * 响应行为:监听器监听到事件源的状态变化时所涉及的功能代码(程序员编写代码) + +**分类:** + +第一维度按照被监听的对象划分:ServletRequest域、HttpSession域、ServletContext域 + +第二维度按照监听的内容分:监听域对象的创建与销毁的、监听域对象的属性变化的 + +![](https://i.loli.net/2020/11/26/3Wpr5yiDcYEf2IN.png) + +### 监听器使用 + + 根据不同的监听域,实现不同的接口来创建Listener监听器。比如我们创建一个类来监听Session对象的创建与销毁: + +```java +@webListenet +public class MySessionListener implements HttpSessionListener{ + @Override + public void sessionCreated(HttpSessionEvent se) { + System.out.println("session创建"); + } + + @Override + public void sessionDestroyed(HttpSessionEvent se) { + System.out.println("session销毁"); + } +} +``` + +**监听器部署** + +在web.xml文件中添加以下代码 + +```xml + + 监听器所在的路径 + +``` + +或者使用@WebListener注解 \ No newline at end of file diff --git a/source/categories/index.md b/source/categories/index.md new file mode 100644 index 0000000..9ea001a --- /dev/null +++ b/source/categories/index.md @@ -0,0 +1,5 @@ +--- +title: Categories +date: 2020-04-30 15:29:14 +type: categories +--- diff --git a/source/img/alipay.png b/source/img/alipay.png new file mode 100644 index 0000000000000000000000000000000000000000..9d10a93a57a91eabffdd6ae943a344cf2e8533dc GIT binary patch literal 68272 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≤LHK=JCe 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%0AuxurWnairK}q=gOn$ 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

{?aiTrf&mc( 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∈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 E2j^#Pr2qf` literal 0 HcmV?d00001 diff --git a/source/img/favicon16x16.png b/source/img/favicon16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..384c6333c69661eb48b3b6e970b07096cd508a3e GIT binary patch literal 599 zcmV-d0;v6oP)8k0oVok`FSS_a#PK@xHz!t-?VxG1J~at4F7)pWN?dXX888)2gCH43lDa6_c(wJ zXlks#Uyzrq@a)+`tOo4gzL9~C={48@Q{QX`DJgk|36thNsH<;OL^0s`^G6H}|Nmnc zvJc4sGv90mNn8dzdUTuN=a26U|DlE`t7wDSOXp5z`19>G!~b937@R`V8I+W@u)E;f zr>7{kb93>6`AZisXORAPo#Fg5c80Y4JO(a4X>0~0De%6Wk2MUAU4F-KX3u4YA6$YA zW$AhhpT!dyCQO=#9tKGYJeQ|}4PX@G!Z7Ia-Omh4Qd|t&oXpq_D9nje;GEpZz^E(5 zz@R6IH-UZ=@@D9tvI60PhWgr@ndxzA+;5*U{F6~4n7V)b{KYVJ`obHHjm?^j@$vBs z6%^!y*jQP3n3$PBn*R|nf$8s`zYJf$e*gOH`SZ1m`T6;m%*@Pm@7=q{@a@|-uwH3t zX@=jwe>1SMvNF7X{~j(5Gnk8ui$O_AiQ&|#QgP0|4xf`)LF=#DxF=002ovPDHLkV1jlQDM0`L literal 0 HcmV?d00001 diff --git a/source/img/favicon32x32.png b/source/img/favicon32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..223fe317abfd2e53727794047a7230da88fbfc35 GIT binary patch literal 1146 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

;b|?8#CWr+Z)wqaxYXC-IiBSklx4s%jfRE&OmMi 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

2KS6+=w?1Y;gUSaTBen)ggz*N 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

ix_&7m)vyK+z{fI1uNeeE+}mi8?r&#yiv-RJ&BQ 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

_f{A4(vdT@~ug#)2nly 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 + +# hexo-theme-butterfly + +![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/master?color=%231ab1ad&label=master) +![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/dev?label=dev) +![https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff](https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff) +![hexo version](https://img.shields.io/badge/hexo-5.3.0+-0e83c) +![license](https://img.shields.io/github/license/jerryc127/hexo-theme-butterfly?color=FF5531) + +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/theme-butterfly-readme.png) + +Demo: 👍 [Butterfly](https://butterfly.js.org/) || 🤞 [CrazyWong](https://crazywong.com/) + +Docs: 📖 [Butterfly Docs](https://butterfly.js.org/posts/21cfbf15/) + +Based on [hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody) theme. + +## 💻 Installation + +### GIT + +> If you are in Mainland China, you can download in [Gitee](https://gitee.com/immyw/hexo-theme-butterfly.git) + +Stable branch [recommend]: + +``` +git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly +``` + +Dev branch: + +``` +git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly +``` + +### NPM + +> It supports Hexo 5.0.0 or later + +In Hexo site root directory + +```powershell +npm i hexo-theme-butterfly +``` + +## ⚙ Configuration + + Set theme in the hexo work folder's root config file `_config.yml`: + +> theme: butterfly + + If you don't have pug & stylus renderer, try this: + +> npm install hexo-renderer-pug hexo-renderer-stylus + +## 🎉 Features + +- [x] Card UI Design +- [X] Support sub-menu +- [x] Two Column designs +- [x] Responsive Web Design +- [x] Dark Mode +- [x] Pjax +- [x] Read Mode +- [x] Conversion between Traditional and Simplified Chinese +- [X] TOC catalog is available for both computers and mobile phones +- [X] Color themes (darker/pale night/light/ocean/mac/mac light), support custom colors +- [X] Code Blocks (Display code language/close or expand Code Blocks/Copy Button/word wrap) +- [X] Disable copy/Add a Copyright Notice to the Copied Text +- [X] Search (Algolia SearchZ/Local Search) +- [x] Mathjax and Katex +- [x] Built-in 404 page +- [x] WordCount +- [x] Related articles +- [x] Displays outdated notice for a post +- [x] Share (AddThis/Sharejs/Addtoany) +- [X] Comment (Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42) +- [x] Multiple Comment System Support +- [x] Online Chats (Chatra/Tidio/Daovoice/Gitter/Crisp) +- [x] Web analytics +- [x] Google AdSense +- [x] Webmaster Verification +- [x] Change website colour scheme +- [x] Typewriter Effect: activate_power_mode +- [x] Background effects (Canvas ribbon/canvas_ribbon_piao/canvas_nest) +- [x] Mouse click effects (Fireworks/Heart/Text) +- [x] Preloader/Loading Animation +- [x] Busuanzi visitor counter +- [x] Medium Zoom/Fancybox +- [x] Mermaid +- [x] Justified Gallery +- [x] Lazyload images +- [x] Instantpage/Pangu/Snackbar notification toast/PWA...... + +## ✨ Contributors + + + + + +## 📷 Screenshots + +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-1.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-2.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-3.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-4.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-1.png) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-2.png) \ No newline at end of file diff --git a/themes/butterfly/README_CN.md b/themes/butterfly/README_CN.md new file mode 100644 index 0000000..c98ef14 --- /dev/null +++ b/themes/butterfly/README_CN.md @@ -0,0 +1,113 @@ +
+ 語言: + 中文 + 英文 +
+ +# hexo-theme-butterfly + +![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/master?color=%231ab1ad&label=master) +![master version](https://img.shields.io/github/package-json/v/jerryc127/hexo-theme-butterfly/dev?label=dev) +![https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff](https://img.shields.io/npm/v/hexo-theme-butterfly?color=%09%23bf00ff) +![hexo version](https://img.shields.io/badge/hexo-5.3.0+-0e83c) +![license](https://img.shields.io/github/license/jerryc127/hexo-theme-butterfly?color=FF5531) + +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/theme-butterfly-readme.png) + +預覽: 👍 [Butterfly](https://butterfly.js.org/) || 🤞 [CrazyWong](https://crazywong.com/) + +文檔: 📖 [Butterfly Docs](https://butterfly.js.org/posts/21cfbf15/) + +一款基於[hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody)修改的主題 + +## 💻 安裝 + +### Git 安裝 + +> 本倉庫同時上傳到 [Gitee](https://gitee.com/immyw/hexo-theme-butterfly.git),如果你訪問 Github 緩慢,可從 Gitee 中下載。 + +在博客根目錄裡安裝穩定版【推薦】 + +```powershell +git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly +``` + +如果想要安裝比較新的dev分支,可以 + +```powershell +git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly +``` + +### npm 安裝 + +> 此方法只支持Hexo 5.0.0以上版本 + +在博客根目錄裡 + +```powershell +npm i hexo-theme-butterfly +``` + +## ⚙ 應用主題 + +修改hexo配置文件`_config.yml`,把主題改為`Butterfly` + +``` +theme: butterfly +``` + +>如果你沒有pug以及stylus的渲染器,請下載安裝: npm install hexo-renderer-pug hexo-renderer-stylus --save + +## 🎉 特色 + +- [x] 卡片化設計 +- [X] 支持二級目錄 +- [x] 雙欄設計 +- [x] 響應式主題 +- [x] 夜間模式 +- [x] Pjax +- [x] 文章閲讀模式 +- [x] 簡體和繁體轉換 +- [X] 電腦和手機都可查看TOC目錄 +- [X] 內置多種代碼配色(darker/pale night/light/ocean/mac/mac light),可自定義代碼配色 +- [X] 代碼塊顯示代碼語言/關閉或展開代碼塊/代碼複製/代碼自動換行 +- [X] 可關閉文字複製/可開啟內容複製增加版權信息) +- [X] 兩種搜索(Algolia搜索和本地搜索) +- [x] Mathjax 和 Katex +- [x] 內置404頁面 +- [x] 顯示字數統計 +- [x] 顯示相關文章 +- [x] 過期文章提醒 +- [x] 多種分享系統(AddThis/Sharejs/Addtoany) +- [X] 多種評論系統(Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42) +- [x] 支持雙評論部署 +- [x] 多種在線聊天(Chatra/Tidio/Daovoice/Gitter/Crisp) +- [x] 多種分析系統 +- [x] 谷歌廣告/手動廣告位置 +- [x] 各種站長驗證(Google/Bing/Baidu/360/Yandex) +- [x] 修改網站配色 +- [x] 打字特效 activate_power_mode +- [x] 多種背景特效(靜止彩帶/動態彩帶/Canvas Nest) +- [x] 多種鼠標點擊特效(煙花/文字/愛心) +- [x] 內置一種 Preloader 加載動畫 +- [x] 不蒜子訪問統計 +- [x] 兩種大圖模式(Medium Zoom/Fancybox) +- [x] Mermaid 圖表顯示 +- [x] 照片牆 +- [x] 圖片懶加載 +- [x] Instantpage/Pangu/Snackbar彈窗/PWA...... + +## ✨ 贡献者 + + + + + +## 📷 截圖 + +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-1.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-2.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-3.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN@m2/img/butterfly-readme-screenshots-4.jpg) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-1.png) +![](https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/theme-butterfly-readme-homepage-2.png) diff --git a/themes/butterfly/_config.yml b/themes/butterfly/_config.yml new file mode 100644 index 0000000..c960cc1 --- /dev/null +++ b/themes/butterfly/_config.yml @@ -0,0 +1,914 @@ +# Main menu navigation (導航目錄) +# see https://butterfly.js.org/posts/4aa8abbe/#導航菜單 +# -------------------------------------- + +menu: + # Home: / || fas fa-home + # Archives: /archives/ || fas fa-archive + # Tags: /tags/ || fas fa-tags + # Categories: /categories/ || fas fa-folder-open + # List||fas fa-list: + # Music: /music/ || fas fa-music + # Movie: /movies/ || fas fa-video + # Link: /link/ || fas fa-link + # About: /about/ || fas fa-heart + +# Code Blocks (代碼相關) +# -------------------------------------- + +highlight_theme: light # darker / pale night / light / ocean / mac / mac light / false +highlight_copy: true # copy button +highlight_lang: true # show the code language +highlight_shrink: false # true: shrink the code blocks / false: expand the code blocks | none: expand code blocks and hide the button +highlight_height_limit: false # unit: px +code_word_wrap: false + +# copy settings +# copyright: Add the copyright information after copied content (複製的內容後面加上版權信息) +copy: + enable: true + copyright: + enable: false + limit_count: 50 + +# social settings (社交圖標設置) +# formal: +# icon: link || the description +social: + # fab fa-github: https://github.com/xxxxx || Github + # fas fa-envelope: mailto:xxxxxx@gmail.com || Email + +# search (搜索) +# see https://butterfly.js.org/posts/ceeb73f/#搜索系統 +# -------------------------------------- + +# Algolia search +algolia_search: + enable: false + hits: + per_page: 6 + +# Local search +local_search: + enable: false + preload: false + CDN: + +# Math (數學) +# -------------------------------------- +# About the per_page +# if you set it to true, it will load mathjax/katex script in each page (true 表示每一頁都加載js) +# if you set it to false, it will load mathjax/katex script according to your setting (add the 'mathjax: true' in page's front-matter) +# (false 需要時加載,須在使用的 Markdown Front-matter 加上 mathjax: true) + +# MathJax +mathjax: + enable: false + per_page: false + +# KaTeX +katex: + enable: false + per_page: false + hide_scrollbar: true + +# Image (圖片設置) +# -------------------------------------- + +# Favicon(網站圖標) +favicon: /img/favicon.png + +# Avatar (頭像) +avatar: + img: https://i.loli.net/2021/02/24/5O1day2nriDzjSu.png + effect: false + +# Disable all banner image +disable_top_img: false + +# The banner image of home page +index_img: + +# If the banner of page not setting, it will show the top_img +default_top_img: + +# The banner image of archive page +archive_img: + +# If the banner of tag page not setting, it will show the top_img +# note: tag page, not tags page (子標籤頁面的 top_img) +tag_img: + +# The banner image of tag page +# format: +# - tag name: xxxxx +tag_per_img: + +# If the banner of category page not setting, it will show the top_img +# note: category page, not categories page (子分類頁面的 top_img) +category_img: + +# The banner image of category page +# format: +# - category name: xxxxx +category_per_img: + +cover: + # display the cover or not (是否顯示文章封面) + index_enable: true + aside_enable: true + archives_enable: true + # the position of cover in home page (封面顯示的位置) + # left/right/both + position: both + # When cover is not set, the default cover is displayed (當沒有設置cover時,默認的封面顯示) + default_cover: + # - https://i.loli.net/2020/05/01/gkihqEjXxJ5UZ1C.jpg + +# Replace Broken Images (替換無法顯示的圖片) +error_img: + flink: /img/friend_404.gif + post_page: /img/404.jpg + +# A simple 404 page +error_404: + enable: false + subtitle: 'Page Not Found' + background: https://i.loli.net/2020/05/19/aKOcLiyPl2JQdFD.png + +post_meta: + page: # Home Page + date_type: created # created or updated or both 主頁文章日期是創建日或者更新日或都顯示 + date_format: date # date/relative 顯示日期還是相對日期 + categories: true # true or false 主頁是否顯示分類 + tags: false # true or false 主頁是否顯示標籤 + label: true # true or false 顯示描述性文字 + post: + date_type: both # created or updated or both 文章頁日期是創建日或者更新日或都顯示 + date_format: date # date/relative 顯示日期還是相對日期 + categories: true # true or false 文章頁是否顯示分類 + tags: true # true or false 文章頁是否顯示標籤 + label: true # true or false 顯示描述性文字 + +# wordcount (字數統計) +# see https://butterfly.js.org/posts/ceeb73f/#字數統計 +wordcount: + enable: false + post_wordcount: true + min2read: true + total_wordcount: true + +# Display the article introduction on homepage +# 1: description +# 2: both (if the description exists, it will show description, or show the auto_excerpt) +# 3: auto_excerpt (default) +# false: do not show the article introduction +index_post_content: + method: 3 + length: 500 # if you set method to 2 or 3, the length need to config + +# anchor +# when you scroll in post, the URL will update according to header id. +anchor: false + +# Post +# -------------------------------------- + +# toc (目錄) +toc: + post: true + page: false + number: true + expand: false + style_simple: false # for post + +post_copyright: + enable: true + decode: false + author_href: + license: CC BY-NC-SA 4.0 + license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +# Sponsor/reward +reward: + enable: false + QR_code: + # - img: /img/wechat.jpg + # link: + # text: wechat + # - img: /img/alipay.jpg + # link: + # text: alipay + +# Post edit +# Easily browse and edit blog source code online. +post_edit: + enable: false + # url: https://github.com/user-name/repo-name/edit/branch-name/subdirectory-name/ + # For example: https://github.com/jerryc127/butterfly.js.org/edit/main/source/ + url: + +# Related Articles +related_post: + enable: true + limit: 6 # Number of posts displayed + date_type: created # or created or updated 文章日期顯示創建日或者更新日 + +# figcaption (圖片描述文字) +photofigcaption: false + +# post_pagination (分頁) +# value: 1 || 2 || false +# 1: The 'next post' will link to old post +# 2: The 'next post' will link to new post +# false: disable pagination +post_pagination: 1 + +# Displays outdated notice for a post (文章過期提醒) +noticeOutdate: + enable: false + style: flat # style: simple/flat + limit_day: 500 # When will it be shown + position: top # position: top/bottom + message_prev: It has been + message_next: days since the last update, the content of the article may be outdated. + +# Share System (分享功能) +# -------------------------------------- + +# AddThis +# https://www.addthis.com/ +addThis: + enable: false + pubid: + +# Share.js +# https://github.com/overtrue/share.js +sharejs: + enable: true + sites: facebook,twitter,wechat,weibo,qq + +# AddToAny +# https://www.addtoany.com/ +addtoany: + enable: false + item: facebook,twitter,wechat,sina_weibo,facebook_messenger,email,copy_link + +# Comments System +# -------------------------------------- + +comments: + # Up to two comments system, the first will be shown as default + # Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42 + use: # Valine,Disqus + text: true # Display the comment name next to the button + # lazyload: The comment system will be load when comment element enters the browser's viewport. + # If you set it to true, the comment count will be invalid + lazyload: false + count: false # Display comment count in post's top_img + card_post_count: false # Display comment count in Home Page + +# disqus +# https://disqus.com/ +disqus: + shortname: + apikey: # For newest comments widget + +# Alternative Disqus - Render comments with Disqus API +# DisqusJS 評論系統,可以實現在網路審查地區載入 Disqus 評論列表,兼容原版 +# https://github.com/SukkaW/DisqusJS +disqusjs: + shortname: + apikey: + option: + +# livere (來必力) +# https://www.livere.com/ +livere: + uid: + +# gitalk +# https://github.com/gitalk/gitalk +gitalk: + client_id: + client_secret: + repo: + owner: + admin: + option: + +# valine +# https://valine.js.org +valine: + appId: # leancloud application app id + appKey: # leancloud application app key + avatar: monsterid # gravatar style https://valine.js.org/#/avatar + serverURLs: # This configuration is suitable for domestic custom domain name users, overseas version will be automatically detected (no need to manually fill in) + bg: # valine background + visitor: false + option: + +# waline - A simple comment system with backend support fork from Valine +# https://waline.js.org/ +waline: + serverURL: # Waline server address url + bg: # waline background + pageview: false + option: + +# utterances +# https://utteranc.es/ +utterances: + repo: + # Issue Mapping: pathname/url/title/og:title + issue_term: pathname + # Theme: github-light/github-dark/github-dark-orange/icy-dark/dark-blue/photon-dark + light_theme: github-light + dark_theme: photon-dark + +# Facebook Comments Plugin +# https://developers.facebook.com/docs/plugins/comments/ +facebook_comments: + app_id: + user_id: # optional + pageSize: 10 # The number of comments to show + order_by: social # social/time/reverse_time + lang: en_US # Language en_US/zh_CN/zh_TW and so on + +# Twikoo +# https://github.com/imaegoo/twikoo +twikoo: + envId: + region: + visitor: false + option: + +# Giscus +# https://giscus.app/ +giscus: + repo: + repo_id: + category_id: + theme: + light: light + dark: dark + option: + +# Remark42 +# https://remark42.com/docs/configuration/frontend/ +remark42: + host: # Your Host URL + siteId: # Your Site ID + option: + +# Chat Services +# -------------------------------------- + +# Chat Button [recommend] +# It will create a button in the bottom right corner of website, and hide the origin button +chat_btn: false + +# The origin chat button is displayed when scrolling up, and the button is hidden when scrolling down +chat_hide_show: false + +# chatra +# https://chatra.io/ +chatra: + enable: false + id: + +# tidio +# https://www.tidio.com/ +tidio: + enable: false + public_key: + +# daovoice +# http://daovoice.io/ +daovoice: + enable: false + app_id: + +# gitter +# https://gitter.im/ +gitter: + enable: false + room: + +# crisp +# https://crisp.chat/en/ +crisp: + enable: false + website_id: + +# Footer Settings +# -------------------------------------- +footer: + owner: + enable: true + since: 2020 + custom_text: + copyright: true # Copyright of theme and framework + +# Analysis +# -------------------------------------- + +# Baidu Analytics +# https://tongji.baidu.com/web/welcome/login +baidu_analytics: + +# Google Analytics +# https://analytics.google.com/analytics/web/ +google_analytics: + +# CNZZ Analytics +# https://www.umeng.com/ +cnzz_analytics: + +# Cloudflare Analytics +# https://www.cloudflare.com/zh-tw/web-analytics/ +cloudflare_analytics: + +# Microsoft Clarity +# https://clarity.microsoft.com/ +microsoft_clarity: + +# Advertisement +# -------------------------------------- + +# Google Adsense (谷歌廣告) +google_adsense: + enable: false + auto_ads: true + js: https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js + client: + enable_page_level_ads: true + +# Insert ads manually (手動插入廣告) +# ad: +# index: +# aside: +# post: + +# Verification (站長驗證) +# -------------------------------------- + +site_verification: + # - name: google-site-verification + # content: xxxxxx + # - name: baidu-site-verification + # content: xxxxxxx + +# Beautify/Effect (美化/效果) +# -------------------------------------- + +# Theme color for customize +# Notice: color value must in double quotes like "#000" or may cause error! + +# theme_color: +# enable: true +# main: "#49B1F5" +# paginator: "#00c4b6" +# button_hover: "#FF7242" +# text_selection: "#00c4b6" +# link_color: "#99a9bf" +# meta_color: "#858585" +# hr_color: "#A4D8FA" +# code_foreground: "#F47466" +# code_background: "rgba(27, 31, 35, .05)" +# toc_color: "#00c4b6" +# blockquote_padding_color: "#49b1f5" +# blockquote_background_color: "#49b1f5" +# scrollbar_color: "#49b1f5" +# meta_theme_color_light: "ffffff" +# meta_theme_color_dark: "#0d0d0d" + +# The top_img settings of home page +# default: top img - full screen, site info - middle (默認top_img全屏,site_info在中間) +# The position of site info, eg: 300px/300em/300rem/10% (主頁標題距離頂部距離) +index_site_info_top: +# The height of top_img, eg: 300px/300em/300rem (主頁top_img高度) +index_top_img_height: + +# The user interface setting of category and tag page (category和tag頁的UI設置) +# index - same as Homepage UI (index 值代表 UI將與首頁的UI一樣) +# default - same as archives UI 默認跟archives頁面UI一樣 +category_ui: # 留空或 index +tag_ui: # 留空或 index + +# Website Background (設置網站背景) +# can set it to color or image (可設置圖片 或者 顔色) +# The formal of image: url(http://xxxxxx.com/xxx.jpg) +background: + +# Footer Background +footer_bg: false + +# the position of bottom right button/default unit: px (右下角按鈕距離底部的距離/默認單位為px) +rightside-bottom: + +# Enter transitions (開啓網頁進入效果) +enter_transitions: true + +# Background effects (背景特效) +# -------------------------------------- + +# canvas_ribbon (靜止彩帶背景) +# See: https://github.com/hustcc/ribbon.js +canvas_ribbon: + enable: false + size: 150 + alpha: 0.6 + zIndex: -1 + click_to_change: false + mobile: false + +# Fluttering Ribbon (動態彩帶) +canvas_fluttering_ribbon: + enable: false + mobile: false + +# canvas_nest +# https://github.com/hustcc/canvas-nest.js +canvas_nest: + enable: false + color: '0,0,255' #color of lines, default: '0,0,0'; RGB values: (R,G,B).(note: use ',' to separate.) + opacity: 0.7 # the opacity of line (0~1), default: 0.5. + zIndex: -1 # z-index property of the background, default: -1. + count: 99 # the number of lines, default: 99. + mobile: false + +# Typewriter Effect (打字效果) +# https://github.com/disjukr/activate-power-mode +activate_power_mode: + enable: false + colorful: true # open particle animation (冒光特效) + shake: true # open shake (抖動特效) + mobile: false + +# Mouse click effects: fireworks (鼠標點擊效果: 煙火特效) +fireworks: + enable: false + zIndex: 9999 # -1 or 9999 + mobile: false + +# Mouse click effects: Heart symbol (鼠標點擊效果: 愛心) +click_heart: + enable: false + mobile: false + +# Mouse click effects: words (鼠標點擊效果: 文字) +ClickShowText: + enable: false + text: + # - I + # - LOVE + # - YOU + fontSize: 15px + random: false + mobile: false + +# Default display mode (網站默認的顯示模式) +# light (default) / dark +display_mode: light + +# Beautify (美化頁面顯示) +beautify: + enable: false + field: post # site/post + title-prefix-icon: # '\f0c1' + title-prefix-icon-color: # '#F47466' + +# Global font settings +# Don't modify the following settings unless you know how they work (非必要不要修改) +font: + global-font-size: + code-font-size: + font-family: + code-font-family: + +# Font settings for the site title and site subtitle +# 左上角網站名字 主頁居中網站名字 +blog_title_font: + font_link: + font-family: + +# The setting of divider icon (水平分隔線圖標設置) +hr_icon: + enable: true + icon: # the unicode value of Font Awesome icon, such as '\3423' + icon-top: + +# the subtitle on homepage (主頁subtitle) +subtitle: + enable: false + # Typewriter Effect (打字效果) + effect: true + # loop (循環打字) + loop: true + # source 調用第三方服務 + # source: false 關閉調用 + # source: 1 調用一言網的一句話(簡體) https://hitokoto.cn/ + # source: 2 調用一句網(簡體) http://yijuzhan.com/ + # source: 3 調用今日詩詞(簡體) https://www.jinrishici.com/ + # subtitle 會先顯示 source , 再顯示 sub 的內容 + source: false + # 如果關閉打字效果,subtitle 只會顯示 sub 的第一行文字 + sub: + +# Loading Animation (加載動畫) +preloader: false + +# aside (側邊欄) +# -------------------------------------- + +aside: + enable: true + hide: false + button: true + mobile: true # display on mobile + position: right # left or right + display: + archive: true + tag: true + category: true + card_author: + enable: true + description: + button: + enable: true + icon: fab fa-github + text: Follow Me + link: https://github.com/xxxxxx + card_announcement: + enable: true + content: This is my Blog + card_recent_post: + enable: true + limit: 5 # if set 0 will show all + sort: date # date or updated + sort_order: # Don't modify the setting unless you know how it works + card_categories: + enable: true + limit: 8 # if set 0 will show all + expand: none # none/true/false + sort_order: # Don't modify the setting unless you know how it works + card_tags: + enable: true + limit: 40 # if set 0 will show all + color: false + sort_order: # Don't modify the setting unless you know how it works + card_archives: + enable: true + type: monthly # yearly or monthly + format: MMMM YYYY # eg: YYYY年MM月 + order: -1 # Sort of order. 1, asc for ascending; -1, desc for descending + limit: 8 # if set 0 will show all + sort_order: # Don't modify the setting unless you know how it works + card_webinfo: + enable: true + post_count: true + last_push_date: true + sort_order: # Don't modify the setting unless you know how it works + +# busuanzi count for PV / UV in site +# 訪問人數 +busuanzi: + site_uv: true + site_pv: true + page_pv: true + +# Time difference between publish date and now (網頁運行時間) +# Formal: Month/Day/Year Time or Year/Month/Day Time +runtimeshow: + enable: false + publish_date: + +# Aside widget - Newest Comments +newest_comments: + enable: false + sort_order: # Don't modify the setting unless you know how it works + limit: 6 + storage: 10 # unit: mins, save data to localStorage + avatar: true + +# Bottom right button (右下角按鈕) +# -------------------------------------- + +# Conversion between Traditional and Simplified Chinese (簡繁轉換) +translate: + enable: false + # The text of a button + default: 繁 + # the language of website (1 - Traditional Chinese/ 2 - Simplified Chinese) + defaultEncoding: 2 + # Time delay + translateDelay: 0 + # The text of the button when the language is Simplified Chinese + msgToTraditionalChinese: '繁' + # The text of the button when the language is Traditional Chinese + msgToSimplifiedChinese: '簡' + +# Read Mode (閲讀模式) +readmode: true + +# dark mode +darkmode: + enable: true + # Toggle Button to switch dark/light mode + button: true + # Switch dark/light mode automatically (自動切換 dark mode和 light mode) + # autoChangeMode: 1 Following System Settings, if the system doesn't support dark mode, it will switch dark mode between 6 pm to 6 am + # autoChangeMode: 2 Switch dark mode between 6 pm to 6 am + # autoChangeMode: false + autoChangeMode: false + +# Don't modify the following settings unless you know how they work (非必要請不要修改 ) +# Choose: readmode,translate,darkmode,hideAside,toc,chat,comment +# Don't repeat 不要重複 +rightside_item_order: + enable: false + hide: # readmode,translate,darkmode,hideAside + show: # toc,chat,comment + +# Lightbox (圖片大圖查看模式) +# -------------------------------------- +# You can only choose one, or neither (只能選擇一個 或者 兩個都不選) + +# medium-zoom +# https://github.com/francoischalifour/medium-zoom +medium_zoom: false + +# fancybox +# http://fancyapps.com/fancybox/3/ +fancybox: true + +# Tag Plugins settings (標籤外掛) +# -------------------------------------- + +# mermaid +# see https://github.com/mermaid-js/mermaid +mermaid: + enable: false + # built-in themes: default/forest/dark/neutral + theme: + light: default + dark: dark + +# Note (Bootstrap Callout) +note: + # Note tag style values: + # - simple bs-callout old alert style. Default. + # - modern bs-callout new (v2-v3) alert style. + # - flat flat callout style with background, like on Mozilla or StackOverflow. + # - disabled disable all CSS styles import of note tag. + style: flat + icons: true + border_radius: 3 + # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). + # Offset also applied to label tag variables. This option can work with disabled note tag. + light_bg_offset: 0 + +# other +# -------------------------------------- + +# Pjax +# It may contain bugs and unstable, give feedback when you find the bugs. +# https://github.com/MoOx/pjax +pjax: + enable: false + exclude: + # - xxxx + # - xxxx + +# Inject the css and script (aplayer/meting) +aplayerInject: + enable: false + per_page: true + +# Snackbar (Toast Notification 彈窗) +# https://github.com/polonel/SnackBar +# position 彈窗位置 +# 可選 top-left / top-center / top-right / bottom-left / bottom-center / bottom-right +snackbar: + enable: false + position: bottom-left + bg_light: '#49b1f5' # The background color of Toast Notification in light mode + bg_dark: '#1f1f1f' # The background color of Toast Notification in dark mode + +# https://instant.page/ +# prefetch (預加載) +instantpage: false + +# https://github.com/vinta/pangu.js +# Insert a space between Chinese character and English character (中英文之間添加空格) +pangu: + enable: false + field: site # site/post + +# Lazyload (圖片懶加載) +# https://github.com/verlok/vanilla-lazyload +lazyload: + enable: false + field: site # site/post + placeholder: + blur: false + +# PWA +# See https://github.com/JLHwung/hexo-offline +# --------------- +# pwa: +# enable: false +# manifest: /pwa/manifest.json +# apple_touch_icon: /pwa/apple-touch-icon.png +# favicon_32_32: /pwa/32.png +# favicon_16_16: /pwa/16.png +# mask_icon: /pwa/safari-pinned-tab.svg + +# Open graph meta tags +# https://developers.facebook.com/docs/sharing/webmasters/ +Open_Graph_meta: true + +# Add the vendor prefixes to ensure compatibility +css_prefix: true + +# Inject +# Insert the code to head (before '' tag) and the bottom (before '' tag) +# 插入代码到头部 之前 和 底部 之前 +inject: + head: + # - + bottom: + # - + +# CDN +# Don't modify the following settings unless you know how they work +# 非必要請不要修改 +CDN: + # The CDN provider of internal scripts (主題內部 js 的 cdn 配置) + # option: local/jsdelivr/unpkg/cdnjs/custom + # Dev version can only choose. ( dev版的主題只能設置為 local ) + internal_provider: local + + # The CDN provider of third party scripts (第三方 js 的 cdn 配置) + # option: local/jsdelivr/unpkg/cdnjs/custom + # when set it to local, you need to install hexo-butterfly-extjs + third_party_provider: jsdelivr + + # Add version number to CDN, true or false + version: false + + # Custom format + # For example: https://cdn.staticfile.org/${cdnjs_name}/${version}/${min_cdnjs_file} + custom_format: + + option: + # main_css: + # main: + # utils: + # translate: + # local_search: + # algolia_js: + # algolia_search_v4: + # instantsearch_v4: + # pjax: + # gitalk: + # gitalk_css: + # blueimp_md5: + # valine: + # disqusjs: + # disqusjs_css: + # twikoo: + # waline_js: + # waline_css: + # sharejs: + # sharejs_css: + # mathjax: + # katex: + # katex_copytex: + # mermaid: + # canvas_ribbon: + # canvas_fluttering_ribbon: + # canvas_nest: + # lazyload: + # instantpage: + # typed: + # pangu: + # fancybox_css_v4: + # fancybox_v4: + # medium_zoom: + # snackbar_css: + # snackbar: + # activate_power_mode: + # fireworks: + # click_heart: + # ClickShowText: + # fontawesomeV6: + # flickr_justified_gallery_js: + # flickr_justified_gallery_css: + # aplayer_css: + # aplayer_js: + # meting_js: + # prismjs_js: + # prismjs_lineNumber_js: + # prismjs_autoloader: \ No newline at end of file diff --git a/themes/butterfly/languages/default.yml b/themes/butterfly/languages/default.yml new file mode 100644 index 0000000..833fb6c --- /dev/null +++ b/themes/butterfly/languages/default.yml @@ -0,0 +1,121 @@ +footer: + framework: Framework + theme: Theme + +copy: + success: Copy successfully + error: Copy error + noSupport: The browser does not support + +page: + articles: Articles + tag: Tag + category: Category + archives: Archives + +card_post_count: comments + +sticky: Sticky +no_title: No title + +post: + created: Created + updated: Updated + wordcount: Word count + min2read: Reading time + min2read_unit: min + page_pv: Post View + comments: Comments + copyright: + author: Author + link: Link + copyright_notice: Copyright Notice + copyright_content: 'All articles in this blog are licensed under %s unless stating additionally.' + recommend: Related Articles + edit: Edited on + +search: + title: Search + load_data: Loading the Database + algolia_search: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}." + hits_stats: '${hits} results found in ${time} ms' + + local_search: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + +pagination: + prev: Previous Post + next: Next Post + +comment: Comment + +aside: + articles: Articles + tags: Tags + categories: Categories + card_announcement: Announcement + card_categories: Categories + card_tags: Tags + card_archives: Archives + card_recent_post: Recent Post + card_webinfo: + headline: Info + article_name: Article + runtime: + name: Run time + unit: days + last_push_date: + name: Last Push + site_wordcount: Total Count + site_uv_name: UV + site_pv_name: PV + more_button: More + card_newest_comments: + headline: Newest Comments + loading_text: loading... + error: Unable to get the data, please make sure the settings are correct. + zero: No Comment + image: image + link: link + code: code + card_toc: Catalog + +date_suffix: + just: Just + min: minutes ago + hour: hours ago + day: days ago + month: months ago + +donate: Donate +share: Share + +rightside: + readmode_title: Read Mode + translate_title: Toggle Between Traditional Chinese And Simplified Chinese + night_mode_title: Toggle Between Light And Dark Mode + back_to_top: Back To Top + toc: Table Of Contents + scroll_to_comment: Scroll To Comments + setting: Setting + aside: Toggle between single-column and double-column + chat: Chat + +copy_copyright: + author: Author + link: Link + source: Source + info: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source. + +Snackbar: + chs_to_cht: Traditional Chinese Activated Manually + cht_to_chs: Simplified Chinese Activated Manually + day_to_night: Dark Mode Activated Manually + night_to_day: Light Mode Activated Manually + +loading: Loading... + +error404: Page not found diff --git a/themes/butterfly/languages/en.yml b/themes/butterfly/languages/en.yml new file mode 100644 index 0000000..9d303e0 --- /dev/null +++ b/themes/butterfly/languages/en.yml @@ -0,0 +1,121 @@ +footer: + framework: Framework + theme: Theme + +copy: + success: Copy successfully + error: Copy error + noSupport: The browser does not support + +page: + articles: Articles + tag: Tag + category: Category + archives: Archives + +card_post_count: comments + +sticky: Sticky +no_title: No title + +post: + created: Created + updated: Updated + wordcount: Word count + min2read: Reading time + min2read_unit: min + page_pv: Post View + comments: Comments + copyright: + author: Author + link: Link + copyright_notice: Copyright Notice + copyright_content: 'All articles in this blog are licensed under %s unless stating additionally.' + recommend: Related Articles + edit: Edited on + +search: + title: Search + load_data: Loading the Database + algolia_search: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}." + hits_stats: '${hits} results found in ${time} ms' + + local_search: + input_placeholder: Search for Posts + hits_empty: "We didn't find any results for the search: ${query}" + +pagination: + prev: Previous Post + next: Next Post + +comment: Comment + +aside: + articles: Articles + tags: Tags + categories: Categories + card_announcement: Announcement + card_categories: Categories + card_tags: Tags + card_archives: Archives + card_recent_post: Recent Post + card_webinfo: + headline: Info + article_name: Article + runtime: + name: Run time + unit: days + last_push_date: + name: Last Push + site_wordcount: Total Count + site_uv_name: UV + site_pv_name: PV + more_button: More + card_newest_comments: + headline: Newest Comments + loading_text: loading... + error: Unable to get the data, please make sure the settings are correct. + zero: No Comment + image: image + link: link + code: code + card_toc: Catalog + +date_suffix: + just: Just + min: minutes ago + hour: hours ago + day: days ago + month: months ago + +donate: Donate +share: Share + +rightside: + readmode_title: Read Mode + translate_title: Switch Between Traditional Chinese And Simplified Chinese + night_mode_title: Switch Between Light And Dark Mode + back_to_top: Back To Top + toc: Table Of Contents + scroll_to_comment: Scroll To Comments + setting: Setting + aside: Toggle between single-column and double-column + chat: Chat + +copy_copyright: + author: Author + link: Link + source: Source + info: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source. + +Snackbar: + chs_to_cht: Traditional Chinese Activated Manually + cht_to_chs: Simplified Chinese Activated Manually + day_to_night: Dark Mode Activated Manually + night_to_day: Light Mode Activated Manually + +loading: Loading... + +error404: Page not found diff --git a/themes/butterfly/languages/zh-CN.yml b/themes/butterfly/languages/zh-CN.yml new file mode 100644 index 0000000..55900d2 --- /dev/null +++ b/themes/butterfly/languages/zh-CN.yml @@ -0,0 +1,122 @@ +footer: + framework: 框架 + theme: 主题 + +copy: + success: 复制成功 + error: 复制错误 + noSupport: 浏览器不支持 + +page: + articles: 文章总览 + tag: 标签 + category: 分类 + archives: 归档 + +card_post_count: 条评论 + +sticky: 置顶 +no_title: 无题 + +post: + created: 发表于 + updated: 更新于 + wordcount: 字数总计 + min2read: 阅读时长 + min2read_unit: 分钟 + page_pv: 阅读量 + comments: 评论数 + copyright: + author: 文章作者 + link: 文章链接 + copyright_notice: 版权声明 + copyright_content: '本博客所有文章除特别声明外,均采用 + %s 许可协议。转载请注明来自 %s!' + recommend: 相关推荐 + edit: 编辑 + +search: + title: 搜索 + load_data: 数据库加载中 + algolia_search: + input_placeholder: 搜索文章 + hits_empty: '找不到您查询的内容:${query}' + hits_stats: '找到 ${hits} 条结果,用时 ${time} 毫秒' + + local_search: + input_placeholder: 搜索文章 + hits_empty: '找不到您查询的内容:${query}' + +pagination: + prev: 上一篇 + next: 下一篇 + +comment: 评论 + +aside: + articles: 文章 + tags: 标签 + categories: 分类 + card_announcement: 公告 + card_categories: 分类 + card_tags: 标签 + card_archives: 归档 + card_recent_post: 最新文章 + card_webinfo: + headline: 网站资讯 + article_name: 文章数目 + runtime: + name: 已运行时间 + unit: 天 + last_push_date: + name: 最后更新时间 + site_wordcount: 本站总字数 + site_uv_name: 本站访客数 + site_pv_name: 本站总访问量 + more_button: 查看更多 + card_newest_comments: + headline: 最新评论 + loading_text: 正在加载中... + error: 无法获取评论,请确认相关配置是否正确 + zero: 没有评论 + image: 图片 + link: 链接 + code: 代码 + card_toc: 目录 + +date_suffix: + just: 刚刚 + min: 分钟前 + hour: 小时前 + day: 天前 + month: 个月前 + +donate: 打赏 +share: 分享 + +rightside: + readmode_title: 阅读模式 + translate_title: 简繁转换 + night_mode_title: 浅色和深色模式转换 + back_to_top: 回到顶部 + toc: 目录 + scroll_to_comment: 直达评论 + setting: 设置 + aside: 单栏和双栏切换 + chat: 聊天 + +copy_copyright: + author: 作者 + link: 链接 + source: 来源 + info: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 + +Snackbar: + chs_to_cht: 你已切换为繁体 + cht_to_chs: 你已切换为简体 + day_to_night: 你已切换为深色模式 + night_to_day: 你已切换为浅色模式 + +loading: 加载中... + +error404: 页面没有找到 diff --git a/themes/butterfly/languages/zh-TW.yml b/themes/butterfly/languages/zh-TW.yml new file mode 100644 index 0000000..61d667f --- /dev/null +++ b/themes/butterfly/languages/zh-TW.yml @@ -0,0 +1,122 @@ +footer: + framework: 框架 + theme: 主題 + +copy: + success: 複製成功 + error: 複製錯誤 + noSupport: 瀏覽器不支援 + +page: + articles: 文章總覽 + tag: 標籤 + category: 分類 + archives: 歸檔 + +card_post_count: 條評論 + +sticky: 置頂 +no_title: 無題 + +post: + created: 發表於 + updated: 更新於 + wordcount: 字數總計 + min2read: 閱讀時長 + min2read_unit: 分鐘 + page_pv: 閱讀量 + comments: 評論數 + copyright: + author: 文章作者 + link: 文章連結 + copyright_notice: 版權聲明 + copyright_content: '本部落格所有文章除特別聲明外,均採用 + %s 許可協議。轉載請註明來自 %s!' + recommend: 相關推薦 + edit: 編輯 + +search: + title: 搜尋 + load_data: 資料庫載入中 + algolia_search: + input_placeholder: 搜尋文章 + hits_empty: '找不到您查詢的內容:${query}' + hits_stats: '找到 ${hits} 條結果,用時 ${time} 毫秒' + + local_search: + input_placeholder: 搜尋文章 + hits_empty: '找不到您查詢的內容:${query}' + +pagination: + prev: 上一篇 + next: 下一篇 + +comment: 評論 + +aside: + articles: 文章 + tags: 標籤 + categories: 分類 + card_announcement: 公告 + card_categories: 分類 + card_tags: 標籤 + card_archives: 歸檔 + card_recent_post: 最新文章 + card_webinfo: + headline: 網站資訊 + article_name: 文章數目 + runtime: + name: 已執行時間 + unit: 天 + last_push_date: + name: 最後更新時間 + site_wordcount: 本站總字數 + site_uv_name: 本站訪客數 + site_pv_name: 本站總訪問量 + more_button: 檢視更多 + card_newest_comments: + headline: 最新評論 + loading_text: 正在載入中... + error: 無法獲取評論,請確認相關配置是否正確 + zero: 沒有評論 + image: 圖片 + link: 連結 + code: 程式碼 + card_toc: 目錄 + +date_suffix: + just: 剛剛 + min: 分鐘前 + hour: 小時前 + day: 天前 + month: 個月前 + +donate: 打賞 +share: 分享 + +rightside: + readmode_title: 閱讀模式 + translate_title: 簡繁轉換 + night_mode_title: 淺色和深色模式轉換 + back_to_top: 回到頂部 + toc: 目錄 + scroll_to_comment: 直達評論 + setting: 設定 + aside: 單欄和雙欄切換 + chat: 聊天 + +copy_copyright: + author: 作者 + link: 連結 + source: 來源 + info: 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 + +Snackbar: + chs_to_cht: 你已切換為繁體 + cht_to_chs: 你已切換為簡體 + day_to_night: 你已切換為深色模式 + night_to_day: 你已切換為淺色模式 + +loading: 載入中... + +error404: 頁面沒有找到 diff --git a/themes/butterfly/layout/archive.pug b/themes/butterfly/layout/archive.pug new file mode 100644 index 0000000..815cdd1 --- /dev/null +++ b/themes/butterfly/layout/archive.pug @@ -0,0 +1,9 @@ +extends includes/layout.pug + +block content + include ./includes/mixins/article-sort.pug + #archive + - const archiveLength = findArchiveLength(fragment_cache) + .article-sort-title= _p('page.articles') + ' - ' + archiveLength + +articleSort(page.posts) + include includes/pagination.pug \ No newline at end of file diff --git a/themes/butterfly/layout/category.pug b/themes/butterfly/layout/category.pug new file mode 100644 index 0000000..234a0af --- /dev/null +++ b/themes/butterfly/layout/category.pug @@ -0,0 +1,14 @@ +extends includes/layout.pug + +block content + if theme.category_ui == 'index' + include ./includes/mixins/post-ui.pug + #recent-posts.recent-posts.category_ui + +postUI + include includes/pagination.pug + else + include ./includes/mixins/article-sort.pug + #category + .article-sort-title= _p('page.category') + ' - ' + page.category + +articleSort(page.posts) + include includes/pagination.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/404.pug b/themes/butterfly/layout/includes/404.pug new file mode 100644 index 0000000..4a022c8 --- /dev/null +++ b/themes/butterfly/layout/includes/404.pug @@ -0,0 +1,12 @@ +- var top_img_404 = theme.error_404.background || theme.default_top_img + +#body-wrap.error404 + include ./header/index.pug + + #error-wrap + .error-content + .error-img + img(src=url_for(top_img_404) alt='Page not found') + .error-info + h1.error_title= '404' + .error_subtitle= theme.error_404.subtitle || _p('error404') diff --git a/themes/butterfly/layout/includes/additional-js.pug b/themes/butterfly/layout/includes/additional-js.pug new file mode 100644 index 0000000..7d1e93e --- /dev/null +++ b/themes/butterfly/layout/includes/additional-js.pug @@ -0,0 +1,72 @@ +div + script(src=url_for(theme.asset.utils)) + script(src=url_for(theme.asset.main)) + + if theme.translate.enable + script(src=url_for(theme.asset.translate)) + + if theme.medium_zoom + script(src=url_for(theme.asset.medium_zoom)) + else if theme.fancybox + script(src=url_for(theme.asset.fancybox_v4)) + + if theme.instantpage + script(src=url_for(theme.asset.instantpage), type='module') + + if theme.lazyload.enable + script(src=url_for(theme.asset.lazyload)) + + if theme.snackbar.enable + script(src=url_for(theme.asset.snackbar)) + + if theme.pangu.enable + != partial("includes/third-party/pangu.pug", {}, { cache: true }) + + //- search + if theme.algolia_search.enable + script(src=url_for(theme.asset.algolia_search_v4)) + script(src=url_for(theme.asset.instantsearch_v4)) + script(src=url_for(theme.asset.algolia_js)) + else if theme.local_search.enable + script(src=url_for(theme.asset.local_search)) + + if theme.preloader + != partial("includes/loading/loading-js", {}, { cache: true }) + + .js-pjax + if needLoadCountJs + != partial("includes/third-party/card-post-count/index", {}, { cache: true }) + + if loadSubJs + include ./third-party/subtitle.pug + + include ./third-party/math/index.pug + + if commentsJsLoad + include ./third-party/comments/js.pug + + != partial("includes/third-party/prismjs", {}, { cache: true }) + + if theme.aside.enable && theme.newest_comments.enable + if theme.pjax.enable + != partial("includes/third-party/newest-comments/index", {}, { cache: true }) + else if (!is_post() && page.aside !== false) + != partial("includes/third-party/newest-comments/index", {}, { cache: true }) + + != fragment_cache('injectBottom', function(){return injectHtml(theme.inject.bottom)}) + + != partial("includes/third-party/effect", {}, { cache: true }) + + != partial("includes/third-party/chat/index", {}, { cache: true }) + + if theme.aplayerInject && theme.aplayerInject.enable + if theme.pjax.enable || theme.aplayerInject.per_page + include ./third-party/aplayer.pug + else if page.aplayer + include ./third-party/aplayer.pug + + if theme.pjax.enable + != partial("includes/third-party/pjax", {}, { cache: true }) + + if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv + script(async data-pjax src='//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js') diff --git a/themes/butterfly/layout/includes/footer.pug b/themes/butterfly/layout/includes/footer.pug new file mode 100644 index 0000000..4d2ae79 --- /dev/null +++ b/themes/butterfly/layout/includes/footer.pug @@ -0,0 +1,17 @@ +#footer-wrap + if theme.footer.owner.enable + - var now = new Date() + - var nowYear = now.getFullYear() + if theme.footer.owner.since && theme.footer.owner.since != nowYear + .copyright!= `©${theme.footer.owner.since} - ${nowYear} By ${config.author}` + else + .copyright!= `©${nowYear} By ${config.author}` + if theme.footer.copyright + .framework-info + span= _p('footer.framework') + ' ' + a(href='https://hexo.io')= 'Hexo' + span.footer-separator | + span= _p('footer.theme') + ' ' + a(href='https://github.com/jerryc127/hexo-theme-butterfly')= 'Butterfly' + if theme.footer.custom_text + .footer_custom_text!=`${theme.footer.custom_text}` diff --git a/themes/butterfly/layout/includes/head.pug b/themes/butterfly/layout/includes/head.pug new file mode 100644 index 0000000..dcf3b74 --- /dev/null +++ b/themes/butterfly/layout/includes/head.pug @@ -0,0 +1,76 @@ +- var pageTitle +- is_archive() ? page.title = findArchivesTitle(page, theme.menu, date) : '' +- if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag +- else if (is_category()) pageTitle = _p('page.category') + ': ' + page.category +- else if (is_current('/404.html', [strict])) pageTitle = _p('error404') +- else pageTitle = page.title || config.title || '' + +- var isSubtitle = config.subtitle ? ' - ' + config.subtitle : '' +- var tabTitle = is_home() || !pageTitle ? config.title + isSubtitle : pageTitle + ' | ' + config.title + +- var pageKeywords +- if (page.keywords) pageKeywords = Array.isArray(page.keywords) ? (page.keywords).join(',') : ([]).join(',') || page.keywords +- else if (page.tags && page.tags.length) pageKeywords = page.tags.data.map(function(tag) {return tag.name;}).join(',') +- else pageKeywords = Array.isArray(config.keywords) ? (config.keywords).join(','): ([]).join(',') || config.keywords +- var pageAuthor = config.email ? config.author + ',' + config.email : config.author +- var pageCopyright = config.copyright || config.author +- var themeColorLight = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_light || '#ffffff' +- var themeColorDark = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_dark || '#0d0d0d' +- var themeColor = theme.display_mode === 'dark' ? themeColorDark : themeColorLight + +meta(charset='UTF-8') +meta(http-equiv="X-UA-Compatible" content="IE=edge") +meta(name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no") +title= tabTitle +if pageKeywords + meta(name="keywords" content=pageKeywords) +meta(name="author" content=pageAuthor) +meta(name="copyright" content=pageCopyright) +meta(name ="format-detection" content="telephone=no") +meta(name="theme-color" content=themeColor) + +//- Open_Graph +include ./head/Open_Graph.pug + +!=favicon_tag(theme.favicon || config.favicon) +link(rel="canonical" href=urlNoIndex()) + +//- 預解析 +!=partial('includes/head/preconnect', {}, {cache: true}) + +//- 網站驗證 +!=partial('includes/head/site_verification', {}, {cache: true}) + +//- PWA +if (theme.pwa && theme.pwa.enable) + !=partial('includes/head/pwa', {}, {cache: true}) + +//- main css +link(rel='stylesheet', href=url_for(theme.asset.main_css)) +link(rel='stylesheet', href=url_for(theme.asset.fontawesomeV6) media="print" onload="this.media='all'") + +if (theme.snackbar && theme.snackbar.enable) + link(rel='stylesheet', href=url_for(theme.asset.snackbar_css) media="print" onload="this.media='all'") + +if theme.fancybox + link(rel='stylesheet' href=url_for(theme.asset.fancybox_css_v4) media="print" onload="this.media='all'") + +//- google_adsense +!=partial('includes/head/google_adsense', {}, {cache: true}) + +//- analytics +!=partial('includes/head/analytics', {}, {cache: true}) + +//- font +if theme.blog_title_font && theme.blog_title_font.font_link + link(rel='stylesheet' href=url_for(theme.blog_title_font.font_link) media="print" onload="this.media='all'") + +//- global config +!=partial('includes/head/config', {}, {cache: true}) + +include ./head/config_site.pug +include ./head/noscript.pug + +!=fragment_cache('injectHeadJs', function(){return inject_head_js()}) + +!=fragment_cache('injectHead', function(){return injectHtml(theme.inject.head)}) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/head/Open_Graph.pug b/themes/butterfly/layout/includes/head/Open_Graph.pug new file mode 100644 index 0000000..1702985 --- /dev/null +++ b/themes/butterfly/layout/includes/head/Open_Graph.pug @@ -0,0 +1,11 @@ +if theme.Open_Graph_meta + - let contentType = is_post() ? 'article' : 'website' + - let metaImage = (page.cover || theme.avatar.img) ? full_url_for(page.cover || theme.avatar.img) : '' + - let fb_appId = theme.facebook_comments.app_id || '' + - let fb_admins = theme.facebook_comments.user_id || '' + + != open_graph({type: contentType, image: metaImage, fb_admins: fb_admins, fb_app_id: fb_appId}) + +else + meta(name="description" content=page_description()) + diff --git a/themes/butterfly/layout/includes/head/analytics.pug b/themes/butterfly/layout/includes/head/analytics.pug new file mode 100644 index 0000000..6452528 --- /dev/null +++ b/themes/butterfly/layout/includes/head/analytics.pug @@ -0,0 +1,31 @@ +if theme.baidu_analytics + script. + var _hmt = _hmt || []; + (function() { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?!{theme.baidu_analytics}"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); + +if theme.google_analytics + script(async src=`https://www.googletagmanager.com/gtag/js?id=${theme.google_analytics}`) + script. + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', '!{theme.google_analytics}'); + +if theme.cnzz_analytics + script(async data-pjax src=`https://s4.cnzz.com/z_stat.php?id=${theme.cnzz_analytics}&web_id=${theme.cnzz_analytics}`) + +if theme.cloudflare_analytics + script(defer data-pjax src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon=`{"token": "${theme.cloudflare_analytics}"}`) + +if theme.microsoft_clarity + script. + (function(c,l,a,r,i,t,y){ + c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; + t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; + y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); + })(window, document, "clarity", "script", "!{theme.microsoft_clarity}"); \ No newline at end of file diff --git a/themes/butterfly/layout/includes/head/config.pug b/themes/butterfly/layout/includes/head/config.pug new file mode 100644 index 0000000..61f62d0 --- /dev/null +++ b/themes/butterfly/layout/includes/head/config.pug @@ -0,0 +1,124 @@ +- + let algolia = 'undefined'; + let env = process.env; + if (theme.algolia_search.enable) { + algolia = JSON.stringify({ + appId: env.ALGOLIA_APP_ID || config.algolia.appId || config.algolia.applicationID, + apiKey: env.ALGOLIA_API_KEY || config.algolia.apiKey, + indexName: env.ALGOLIA_INDEX_NAME || config.algolia.indexName, + hits: theme.algolia_search.hits, + // search languages + languages: { + input_placeholder: _p("search.algolia_search.input_placeholder"), + hits_empty: _p("search.algolia_search.hits_empty"), + hits_stats: _p("search.algolia_search.hits_stats"), + } + }) + } + + let localSearch = 'undefined'; + if (theme.local_search && theme.local_search.enable) { + localSearch = JSON.stringify({ + path: theme.local_search.CDN ? theme.local_search.CDN : config.root + config.search.path, + preload: theme.local_search.preload, + languages: { + // search languages + hits_empty: _p("search.local_search.hits_empty"), + } + }) + } + + let translate = 'undefined'; + if (theme.translate && theme.translate.enable){ + translate = JSON.stringify({ + defaultEncoding: theme.translate.defaultEncoding, + translateDelay: theme.translate.translateDelay, + msgToTraditionalChinese: theme.translate.msgToTraditionalChinese, + msgToSimplifiedChinese: theme.translate.msgToSimplifiedChinese + }) + } + + let copyright = 'undefined'; + if (theme.copy.enable && theme.copy.copyright.enable){ + copyright = JSON.stringify({ + limitCount: theme.copy.copyright.limit_count, + languages: { + author: _p("copy_copyright.author") + ': ' + config.author, + link: _p("copy_copyright.link") + ': ', + source: _p("copy_copyright.source") + ': ' + config.title, + info: _p("copy_copyright.info") + } + }) + } + + let Snackbar = 'undefined'; + if (theme.snackbar && theme.snackbar.enable) { + Snackbar = JSON.stringify({ + chs_to_cht: _p("Snackbar.chs_to_cht"), + cht_to_chs: _p("Snackbar.cht_to_chs"), + day_to_night: _p("Snackbar.day_to_night"), + night_to_day: _p("Snackbar.night_to_day"), + bgLight: theme.snackbar.bg_light, + bgDark: theme.snackbar.bg_dark, + position: theme.snackbar.position, + }) + } + + let noticeOutdate = 'undefined'; + if (theme.noticeOutdate && theme.noticeOutdate.enable) { + noticeOutdate = JSON.stringify({ + limitDay: theme.noticeOutdate.limit_day, + position: theme.noticeOutdate.position, + messagePrev: theme.noticeOutdate.message_prev, + messageNext: theme.noticeOutdate.message_next, + }) + } + + let highlight = 'undefined'; + if ((config.highlight && config.highlight.enable) || (config.prismjs && config.prismjs.enable)) { + highlight = JSON.stringify({ + plugin: config.highlight.enable ? 'highlighjs' : 'prismjs', + highlightCopy: theme.highlight_copy, + highlightLang: theme.highlight_lang, + highlightHeightLimit: theme.highlight_height_limit + }) + } + +script. + const GLOBAL_CONFIG = { + root: '!{config.root}', + algolia: !{algolia}, + localSearch: !{localSearch}, + translate: !{translate}, + noticeOutdate: !{noticeOutdate}, + highlight: !{highlight}, + copy: { + success: '!{_p("copy.success")}', + error: '!{_p("copy.error")}', + noSupport: '!{_p("copy.noSupport")}' + }, + relativeDate: { + homepage: !{theme.post_meta.page.date_format === 'relative'}, + post: !{theme.post_meta.post.date_format === 'relative'} + }, + runtime: '!{theme.runtimeshow.enable ? _p("aside.card_webinfo.runtime.unit") : ""}', + date_suffix: { + just: '!{_p("date_suffix.just")}', + min: '!{_p("date_suffix.min")}', + hour: '!{_p("date_suffix.hour")}', + day: '!{_p("date_suffix.day")}', + month: '!{_p("date_suffix.month")}' + }, + copyright: !{copyright}, + lightbox: '!{ theme.medium_zoom ? "mediumZoom" : (theme.fancybox ? "fancybox" : "null" )}', + Snackbar: !{Snackbar}, + source: { + justifiedGallery: { + js: '!{url_for(theme.asset.flickr_justified_gallery_js)}', + css: '!{url_for(theme.asset.flickr_justified_gallery_css)}' + } + }, + isPhotoFigcaption: !{theme.photofigcaption}, + islazyload: !{theme.lazyload.enable}, + isAnchor: !{theme.anchor} + } diff --git a/themes/butterfly/layout/includes/head/config_site.pug b/themes/butterfly/layout/includes/head/config_site.pug new file mode 100644 index 0000000..94cbb51 --- /dev/null +++ b/themes/butterfly/layout/includes/head/config_site.pug @@ -0,0 +1,30 @@ +- + const titleVal = pageTitle.replace(/'/ig,"\\'") + + let isHighlightShrink + if (theme.highlight_shrink == 'none') isHighlightShrink = 'undefined' + else if (page.highlight_shrink === true || page.highlight_shrink === false) isHighlightShrink = page.highlight_shrink + else isHighlightShrink = theme.highlight_shrink + + var showToc = false + if (theme.aside.enable && page.aside !== false) { + let tocEnable = false + if (is_post()) { + if (theme.toc.post) tocEnable = true + } else if (is_page()) { + if (theme.toc.page) tocEnable = true + } + const pageToc = page.toc === true || page.toc === false ? page.toc : tocEnable + showToc = pageToc && (toc(page.content) !== '' || page.encrypt == true ) + } +- + +script#config-diff. + var GLOBAL_CONFIG_SITE = { + title: '!{titleVal}', + isPost: !{is_post()}, + isHome: !{is_home()}, + isHighlightShrink: !{isHighlightShrink}, + isToc: !{showToc}, + postUpdate: '!{full_date(page.updated)}' + } diff --git a/themes/butterfly/layout/includes/head/google_adsense.pug b/themes/butterfly/layout/includes/head/google_adsense.pug new file mode 100644 index 0000000..3ef1af9 --- /dev/null +++ b/themes/butterfly/layout/includes/head/google_adsense.pug @@ -0,0 +1,9 @@ +if (theme.google_adsense && theme.google_adsense.enable) + script(async src=theme.google_adsense.js) + + if theme.google_adsense.auto_ads + script. + (adsbygoogle = window.adsbygoogle || []).push({ + google_ad_client: '!{theme.google_adsense.client}', + enable_page_level_ads: '!{theme.google_adsense.enable_page_level_ads}' + }); \ No newline at end of file diff --git a/themes/butterfly/layout/includes/head/noscript.pug b/themes/butterfly/layout/includes/head/noscript.pug new file mode 100644 index 0000000..cc3befa --- /dev/null +++ b/themes/butterfly/layout/includes/head/noscript.pug @@ -0,0 +1,14 @@ +noscript. + \ No newline at end of file diff --git a/themes/butterfly/layout/includes/head/preconnect.pug b/themes/butterfly/layout/includes/head/preconnect.pug new file mode 100644 index 0000000..d010b05 --- /dev/null +++ b/themes/butterfly/layout/includes/head/preconnect.pug @@ -0,0 +1,22 @@ +link(rel="preconnect" href="//cdn.jsdelivr.net") + +if theme.google_analytics + link(rel="preconnect" href="//www.google-analytics.com" crossorigin='') + +if theme.baidu_analytics + link(rel="preconnect" href="//hm.baidu.com") + +if theme.cnzz_analytics + link(rel="preconnect" href="//s4.cnzz.com") + +if theme.cloudflare_analytics + link(rel="preconnect" href="//static.cloudflareinsights.com") + +if theme.microsoft_clarity + link(rel="preconnect" href="//www.clarity.ms") + +if theme.blog_title_font && theme.blog_title_font.font_link && theme.blog_title_font.font_link.indexOf('//fonts.googleapis.com') != -1 + link(rel="preconnect" href="//fonts.googleapis.com" crossorigin='') + +if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv + link(rel="preconnect" href="//busuanzi.ibruce.info") \ No newline at end of file diff --git a/themes/butterfly/layout/includes/head/pwa.pug b/themes/butterfly/layout/includes/head/pwa.pug new file mode 100644 index 0000000..e9152f2 --- /dev/null +++ b/themes/butterfly/layout/includes/head/pwa.pug @@ -0,0 +1,11 @@ +link(rel="manifest" href=url_for(theme.pwa.manifest)) +if(theme.pwa.theme_color) + meta(name="msapplication-TileColor" content=theme.pwa.theme_color) +if(theme.pwa.apple_touch_icon) + link(rel="apple-touch-icon" sizes="180x180" href=url_for(theme.pwa.apple_touch_icon)) +if(theme.pwa.favicon_32_32) + link(rel="icon" type="image/png" sizes="32x32" href=url_for(theme.pwa.favicon_32_32)) +if(theme.pwa.favicon_16_16) + link(rel="icon" type="image/png" sizes="16x16" href=url_for(theme.pwa.favicon_16_16)) +if(theme.pwa.mask_icon) + link(rel="mask-icon" href=url_for(theme.pwa.mask_icon) color="#5bbad5") diff --git a/themes/butterfly/layout/includes/head/site_verification.pug b/themes/butterfly/layout/includes/head/site_verification.pug new file mode 100644 index 0000000..8947644 --- /dev/null +++ b/themes/butterfly/layout/includes/head/site_verification.pug @@ -0,0 +1,3 @@ +if theme.site_verification + each item in theme.site_verification + meta(name=item.name content=item.content) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/header/index.pug b/themes/butterfly/layout/includes/header/index.pug new file mode 100644 index 0000000..d1aa7c0 --- /dev/null +++ b/themes/butterfly/layout/includes/header/index.pug @@ -0,0 +1,50 @@ +if !theme.disable_top_img && page.top_img !== false + if is_post() + - var top_img = page.top_img || page.cover || page.randomcover + else if is_page() + - var top_img = page.top_img || theme.default_top_img + else if is_tag() + - var top_img = theme.tag_per_img && theme.tag_per_img[page.tag] + - top_img = top_img ? top_img : (theme.tag_img !== false ? theme.tag_img || theme.default_top_img : false) + else if is_category() + - var top_img = theme.category_per_img && theme.category_per_img[page.category] + - top_img = top_img ? top_img : (theme.category_img !== false ? theme.category_img || theme.default_top_img : false) + else if is_home() + - var top_img = theme.index_img !== false ? theme.index_img || theme.default_top_img : false + else if is_archive() + - var top_img = theme.archive_img !== false ? theme.archive_img || theme.default_top_img : false + else + - var top_img = page.top_img || theme.default_top_img + + if top_img !== false + - var imgSource = top_img && top_img.indexOf('/') !== -1 ? `background-image: url('${url_for(top_img)}')` : `background: ${top_img}` + - var bg_img = top_img ? imgSource : '' + - var site_title = page.title || page.tag || page.category || config.title + - var isHomeClass = is_home() ? 'full_page' : 'not-home-page' + - is_post() ? isHomeClass = 'post-bg' : isHomeClass + else + - var isHomeClass = 'not-top-img' +else + - var top_img = false + - var isHomeClass = 'not-top-img' + +header#page-header(class=isHomeClass style=bg_img) + !=partial('includes/header/nav', {}, {cache: true}) + if top_img !== false + if is_post() + include ./post-info.pug + else if is_home() + #site-info + h1#site-title=site_title + if theme.subtitle.enable + - var loadSubJs = true + #site-subtitle + span#subtitle + if(theme.social) + #site_social_icons + !=fragment_cache('social', function(){return partial('includes/header/social')}) + #scroll-down + i.fas.fa-angle-down.scroll-down-effects + else + #page-site-info + h1#site-title=site_title \ No newline at end of file diff --git a/themes/butterfly/layout/includes/header/menu_item.pug b/themes/butterfly/layout/includes/header/menu_item.pug new file mode 100644 index 0000000..d172db7 --- /dev/null +++ b/themes/butterfly/layout/includes/header/menu_item.pug @@ -0,0 +1,27 @@ +if theme.menu + .menus_items + each value, label in theme.menu + if typeof value !== 'object' + .menus_item + - const valueArray = value.split('||') + a.site-page(href=url_for(trim(valueArray[0]))) + if valueArray[1] + i.fa-fw(class=trim(valueArray[1])) + span=' '+label + else + .menus_item + - const labelArray = label.split('||') + - const hideClass = labelArray[2] && trim(labelArray[2]) === 'hide' ? 'hide' : '' + a.site-page.group(class=`${hideClass}` href='javascript:void(0);') + if labelArray[1] + i.fa-fw(class=trim(labelArray[1])) + span=' '+ trim(labelArray[0]) + i.fas.fa-chevron-down + ul.menus_item_child + each val,lab in value + - const valArray = val.split('||') + li + a.site-page.child(href=url_for(trim(valArray[0]))) + if valArray[1] + i.fa-fw(class=trim(valArray[1])) + span=' '+ lab \ No newline at end of file diff --git a/themes/butterfly/layout/includes/header/nav.pug b/themes/butterfly/layout/includes/header/nav.pug new file mode 100644 index 0000000..7b516e9 --- /dev/null +++ b/themes/butterfly/layout/includes/header/nav.pug @@ -0,0 +1,17 @@ +nav#nav + span#blog_name + a#site-name(href=url_for('/')) #[=config.title] + + #menus + if (theme.algolia_search.enable || theme.local_search.enable) + #search-button + a.site-page.social-icon.search + i.fas.fa-search.fa-fw + span=' '+_p('search.title') + !=partial('includes/header/menu_item', {}, {cache: true}) + + #toggle-menu + a.site-page + i.fas.fa-bars.fa-fw + + diff --git a/themes/butterfly/layout/includes/header/post-info.pug b/themes/butterfly/layout/includes/header/post-info.pug new file mode 100644 index 0000000..40e6b13 --- /dev/null +++ b/themes/butterfly/layout/includes/header/post-info.pug @@ -0,0 +1,138 @@ +- let comments = theme.comments +#post-info + h1.post-title= page.title || _p('no_title') + if theme.post_edit.enable + a.post-edit-link(href=theme.post_edit.url + page.source title=_p('post.edit') target="_blank") + i.fas.fa-pencil-alt + + #post-meta + .meta-firstline + if (theme.post_meta.post.date_type) + span.post-meta-date + if (theme.post_meta.post.date_type === 'both') + i.far.fa-calendar-alt.fa-fw.post-meta-icon + span.post-meta-label= _p('post.created') + time.post-meta-date-created(datetime=date_xml(page.date) title=_p('post.created') + ' ' + full_date(page.date))=date(page.date, config.date_format) + span.post-meta-separator | + i.fas.fa-history.fa-fw.post-meta-icon + span.post-meta-label= _p('post.updated') + time.post-meta-date-updated(datetime=date_xml(page.updated) title=_p('post.updated') + ' ' + full_date(page.updated))=date(page.updated, config.date_format) + else + - let data_type_update = theme.post_meta.post.date_type === 'updated' + - let date_type = data_type_update ? 'updated' : 'date' + - let date_icon = data_type_update ? 'fas fa-history' :'far fa-calendar-alt' + - let date_title = data_type_update ? _p('post.updated') : _p('post.created') + i.fa-fw.post-meta-icon(class=date_icon) + span.post-meta-label= date_title + time(datetime=date_xml(page[date_type]) title=date_title + ' ' + full_date(page[date_type]))=date(page[date_type], config.date_format) + if (theme.post_meta.post.categories && page.categories.data.length > 0) + span.post-meta-categories + if (theme.post_meta.post.date_type) + span.post-meta-separator | + + each item, index in page.categories.data + i.fas.fa-inbox.fa-fw.post-meta-icon + a(href=url_for(item.path)).post-meta-categories #[=item.name] + if (index < page.categories.data.length - 1) + i.fas.fa-angle-right.post-meta-separator + + .meta-secondline + - let postWordcount = theme.wordcount.enable && (theme.wordcount.post_wordcount || theme.wordcount.min2read) + if (postWordcount) + span.post-meta-separator | + span.post-meta-wordcount + if theme.wordcount.post_wordcount + i.far.fa-file-word.fa-fw.post-meta-icon + span.post-meta-label= _p('post.wordcount') + ':' + span.word-count= wordcount(page.content) + if theme.wordcount.min2read + span.post-meta-separator | + if theme.wordcount.min2read + i.far.fa-clock.fa-fw.post-meta-icon + span.post-meta-label= _p('post.min2read') + ':' + span= min2read(page.content, {cn: 350, en: 160}) + _p('post.min2read_unit') + + //- for pv and count + mixin pvBlock(parent_id,parent_class,parent_title) + span.post-meta-separator | + span(class=parent_class id=parent_id data-flag-title=page.title) + i.far.fa-eye.fa-fw.post-meta-icon + span.post-meta-label=_p('post.page_pv') + ':' + if block + block + + - const commentUse = comments.use + if page.comments !== false && commentUse && !comments.lazyload + if commentUse[0] === 'Valine' && theme.valine.visitor + +pvBlock(url_for(page.path),'leancloud_visitors',page.title) + span.leancloud-visitors-count + i.fa-solid.fa-spinner.fa-spin + else if commentUse[0] === 'Waline' && theme.waline.pageview + +pvBlock('','','') + span.waline-pageview-count(data-path=url_for(page.path)) + i.fa-solid.fa-spinner.fa-spin + else if commentUse[0] === 'Twikoo' && theme.twikoo.visitor + +pvBlock('','','') + span#twikoo_visitors + i.fa-solid.fa-spinner.fa-spin + else if theme.busuanzi.page_pv + +pvBlock('','post-meta-pv-cv','') + span#busuanzi_value_page_pv + i.fa-solid.fa-spinner.fa-spin + else if theme.busuanzi.page_pv + +pvBlock('','post-meta-pv-cv','') + span#busuanzi_value_page_pv + i.fa-solid.fa-spinner.fa-spin + + if comments.count && !comments.lazyload && page.comments !== false && comments.use + - var whichCount = comments.use[0] + + mixin countBlock + span.post-meta-separator | + span.post-meta-commentcount + i.far.fa-comments.fa-fw.post-meta-icon + span.post-meta-label= _p('post.comments') + ':' + if block + block + + case whichCount + when 'Disqus' + +countBlock + span.disqus-comment-count + a(href=full_url_for(page.path) + '#disqus_thread') + i.fa-solid.fa-spinner.fa-spin + when 'Disqusjs' + +countBlock + a(href=full_url_for(page.path) + '#disqusjs') + span.disqus-comment-count(data-disqus-url=full_url_for(page.path)) + i.fa-solid.fa-spinner.fa-spin + when 'Valine' + +countBlock + a(href=url_for(page.path) + '#post-comment' itemprop="discussionUrl") + span.valine-comment-count(data-xid=url_for(page.path) itemprop="commentCount") + i.fa-solid.fa-spinner.fa-spin + when 'Waline' + +countBlock + a(href=url_for(page.path) + '#post-comment') + span.waline-comment-count(data-path=url_for(page.path)) + i.fa-solid.fa-spinner.fa-spin + when 'Gitalk' + +countBlock + a(href=url_for(page.path) + '#post-comment') + span.gitalk-comment-count + i.fa-solid.fa-spinner.fa-spin + when 'Twikoo' + +countBlock + a(href=url_for(page.path) + '#post-comment') + span#twikoo-count + i.fa-solid.fa-spinner.fa-spin + when 'Facebook Comments' + +countBlock + a(href=url_for(page.path) + '#post-comment') + span.fb-comments-count(data-href=urlNoIndex()) + i.fa-solid.fa-spinner.fa-spin + when 'Remark42' + +countBlock + a(href=url_for(page.path) + '#post-comment') + span.remark42__counter(data-url=urlNoIndex()) + i.fa-solid.fa-spinner.fa-spin \ No newline at end of file diff --git a/themes/butterfly/layout/includes/header/social.pug b/themes/butterfly/layout/includes/header/social.pug new file mode 100644 index 0000000..80adfe9 --- /dev/null +++ b/themes/butterfly/layout/includes/header/social.pug @@ -0,0 +1,4 @@ +each url, icon in theme.social + a.social-icon(href=url_for(trim(url.split('||')[0])) target="_blank" + title=url.split('||')[1] === undefined ? '' : trim(url.split('||')[1])) + i(class=icon) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/layout.pug b/themes/butterfly/layout/includes/layout.pug new file mode 100644 index 0000000..414b45d --- /dev/null +++ b/themes/butterfly/layout/includes/layout.pug @@ -0,0 +1,48 @@ +- var htmlClassHideAside = theme.aside.enable && theme.aside.hide ? 'hide-aside' : '' +- page.aside = is_archive() ? theme.aside.display.archive: is_category() ? theme.aside.display.category : is_tag() ? theme.aside.display.tag : page.aside +- var hideAside = !theme.aside.enable || page.aside === false ? 'hide-aside' : '' +- var pageType = is_post() ? 'post' : 'page' + +doctype html +html(lang=config.language data-theme=theme.display_mode class=htmlClassHideAside) + head + include ./head.pug + body + if theme.preloader + !=partial('includes/loading/loading', {}, {cache: true}) + + if theme.background + #web_bg + + !=partial('includes/sidebar', {}, {cache: true}) + + if page.type !== '404' + #body-wrap(class=pageType) + include ./header/index.pug + + main#content-inner.layout(class=hideAside) + if body + div!= body + else + block content + if theme.aside.enable && page.aside !== false + include widget/index.pug + + - var footerBg = theme.footer_bg + if (footerBg) + if (footerBg === true) + - var footer_bg = bg_img + else + - var footer_bg = theme.footer_bg.indexOf('/') !== -1 ? `background-image: url('${url_for(footerBg)}')` : `background: ${footerBg}` + else + - var footer_bg = '' + + footer#footer(style=footer_bg) + !=partial('includes/footer', {}, {cache: true}) + + else + include ./404.pug + + include ./rightside.pug + !=partial('includes/third-party/search/index', {}, {cache: true}) + include ./additional-js.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/loading/loading-js.pug b/themes/butterfly/layout/includes/loading/loading-js.pug new file mode 100644 index 0000000..7e5f0d4 --- /dev/null +++ b/themes/butterfly/layout/includes/loading/loading-js.pug @@ -0,0 +1,13 @@ +script. + var preloader = { + endLoading: () => { + document.body.style.overflow = 'auto'; + document.getElementById('loading-box').classList.add("loaded") + }, + initLoading: () => { + document.body.style.overflow = ''; + document.getElementById('loading-box').classList.remove("loaded") + + } + } + window.addEventListener('load',preloader.endLoading()) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/loading/loading.pug b/themes/butterfly/layout/includes/loading/loading.pug new file mode 100644 index 0000000..2e4b65f --- /dev/null +++ b/themes/butterfly/layout/includes/loading/loading.pug @@ -0,0 +1,9 @@ +#loading-box + .loading-left-bg + .loading-right-bg + .spinner-box + .configure-border-1 + .configure-core + .configure-border-2 + .configure-core + .loading-word= _p('loading') diff --git a/themes/butterfly/layout/includes/mixins/article-sort.pug b/themes/butterfly/layout/includes/mixins/article-sort.pug new file mode 100644 index 0000000..01e9ef2 --- /dev/null +++ b/themes/butterfly/layout/includes/mixins/article-sort.pug @@ -0,0 +1,20 @@ +mixin articleSort(posts) + .article-sort + - var year + - posts.each(function (article) { + - let tempYear = date(article.date, 'YYYY') + - let no_cover = article.cover === false || !theme.cover.archives_enable ? 'no-article-cover' : '' + - let title = article.title || _p('no_title') + if tempYear !== year + - year = tempYear + .article-sort-item.year= year + .article-sort-item(class=no_cover) + if article.cover && theme.cover.archives_enable + a.article-sort-item-img(href=url_for(article.path) title=title) + img(src=url_for(article.cover) alt=title onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'`) + .article-sort-item-info + .article-sort-item-time + i.far.fa-calendar-alt + time.post-meta-date-created(datetime=date_xml(article.date) title=_p('post.created') + ' ' + full_date(article.date))= date(article.date, config.date_format) + a.article-sort-item-title(href=url_for(article.path) title=title)= title + - }) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/mixins/post-ui.pug b/themes/butterfly/layout/includes/mixins/post-ui.pug new file mode 100644 index 0000000..3d8619b --- /dev/null +++ b/themes/butterfly/layout/includes/mixins/post-ui.pug @@ -0,0 +1,128 @@ +mixin postUI(posts) + each article , index in page.posts.data + .recent-post-item + - + let link = article.link || article.path + let title = article.title || _p('no_title') + const position = theme.cover.position + let leftOrRight = position === 'both' + ? index%2 == 0 ? 'left' : 'right' + : position === 'left' ? 'left' : 'right' + let post_cover = article.cover + let no_cover = article.cover === false || !theme.cover.index_enable ? 'no-cover' : '' + - + if post_cover && theme.cover.index_enable + .post_cover(class=leftOrRight) + a(href=url_for(link) title=title) + img.post_bg(src=url_for(post_cover) onerror=`this.onerror=null;this.src='`+ url_for(theme.error_img.post_page) + `'` alt=title) + .recent-post-info(class=no_cover) + a.article-title(href=url_for(link) title=title)= title + .article-meta-wrap + if (is_home() && (article.top || article.sticky > 0)) + span.article-meta + i.fas.fa-thumbtack.sticky + span.sticky= _p('sticky') + span.article-meta-separator | + if (theme.post_meta.page.date_type) + span.post-meta-date + if (theme.post_meta.page.date_type === 'both') + i.far.fa-calendar-alt + span.article-meta-label=_p('post.created') + time.post-meta-date-created(datetime=date_xml(article.date) title=_p('post.created') + ' ' + full_date(article.date))=date(article.date, config.date_format) + span.article-meta-separator | + i.fas.fa-history + span.article-meta-label=_p('post.updated') + time.post-meta-date-updated(datetime=date_xml(article.updated) title=_p('post.updated') + ' ' + full_date(article.updated))=date(article.updated, config.date_format) + else + - let data_type_updated = theme.post_meta.page.date_type === 'updated' + - let date_type = data_type_updated ? 'updated' : 'date' + - let date_icon = data_type_updated ? 'fas fa-history' :'far fa-calendar-alt' + - let date_title = data_type_updated ? _p('post.updated') : _p('post.created') + i(class=date_icon) + span.article-meta-label=date_title + time(datetime=date_xml(article[date_type]) title=date_title + ' ' + full_date(article[date_type]))=date(article[date_type], config.date_format) + if (theme.post_meta.page.categories && article.categories.data.length > 0) + span.article-meta + span.article-meta-separator | + i.fas.fa-inbox + each item, index in article.categories.data + a(href=url_for(item.path)).article-meta__categories #[=item.name] + if (index < article.categories.data.length - 1) + i.fas.fa-angle-right.article-meta-link + if (theme.post_meta.page.tags && article.tags.data.length > 0) + span.article-meta.tags + span.article-meta-separator | + i.fas.fa-tag + each item, index in article.tags.data + a(href=url_for(item.path)).article-meta__tags #[=item.name] + if (index < article.tags.data.length - 1) + span.article-meta-link #[='•'] + + mixin countBlockInIndex + - needLoadCountJs = true + span.article-meta + span.article-meta-separator | + i.fas.fa-comments + if block + block + span.article-meta-label= ' ' + _p('card_post_count') + + if theme.comments.card_post_count + case theme.comments.use[0] + when 'Disqus' + +countBlockInIndex + a(href=full_url_for(link) + '#disqus_thread') + i.fa-solid.fa-spinner.fa-spin + when 'Disqusjs' + +countBlockInIndex + a(href=full_url_for(link) + '#disqusjs') + span.disqus-comment-count(data-disqus-url=full_url_for(link)) + i.fa-solid.fa-spinner.fa-spin + when 'Valine' + +countBlockInIndex + a(href=url_for(link) + '#post-comment') + span.valine-comment-count(data-xid=url_for(link)) + i.fa-solid.fa-spinner.fa-spin + when 'Waline' + +countBlockInIndex + a(href=url_for(link) + '#post-comment') + span.waline-comment-count(id=url_for(link)) + i.fa-solid.fa-spinner.fa-spin + when 'Twikoo' + +countBlockInIndex + a.twikoo-count(href=url_for(link) + '#post-comment') + i.fa-solid.fa-spinner.fa-spin + when 'Facebook Comments' + +countBlockInIndex + a(href=url_for(link) + '#post-comment') + span.fb-comments-count(data-href=urlNoIndex(article.permalink)) + i.fa-solid.fa-spinner.fa-spin + when 'Remark42' + +countBlockInIndex + a(href=url_for(link) + '#post-comment') + span.remark42__counter(data-url=urlNoIndex(article.permalink)) + i.fa-solid.fa-spinner.fa-spin + + //- Display the article introduction on homepage + case theme.index_post_content.method + when false + - break + when 1 + .content!= article.description + when 2 + if article.description + .content!= article.description + else + - const content = strip_html(article.content) + - let expert = content.substring(0, theme.index_post_content.length) + - content.length > theme.index_post_content.length ? expert += ' ...' : '' + .content!= expert + default + - const content = strip_html(article.content) + - let expert = content.substring(0, theme.index_post_content.length) + - content.length > theme.index_post_content.length ? expert += ' ...' : '' + .content!= expert + + if theme.ad && theme.ad.index + if (index + 1) % 3 == 0 + .recent-post-item.ads-wrap!=theme.ad.index diff --git a/themes/butterfly/layout/includes/page/categories.pug b/themes/butterfly/layout/includes/page/categories.pug new file mode 100644 index 0000000..79153c8 --- /dev/null +++ b/themes/butterfly/layout/includes/page/categories.pug @@ -0,0 +1 @@ +.category-lists!= list_categories() \ No newline at end of file diff --git a/themes/butterfly/layout/includes/page/default-page.pug b/themes/butterfly/layout/includes/page/default-page.pug new file mode 100644 index 0000000..e7057f7 --- /dev/null +++ b/themes/butterfly/layout/includes/page/default-page.pug @@ -0,0 +1,2 @@ +#article-container + != page.content \ No newline at end of file diff --git a/themes/butterfly/layout/includes/page/flink.pug b/themes/butterfly/layout/includes/page/flink.pug new file mode 100644 index 0000000..e63eb68 --- /dev/null +++ b/themes/butterfly/layout/includes/page/flink.pug @@ -0,0 +1,68 @@ +#article-container + .flink + if page.flink_url + script. + (()=>{ + const replaceSymbol = (str) => { + return str.replace(/[\p{P}\p{S}]/gu, "-") + } + + let result = "" + fetch("!{url_for(page.flink_url)}") + .then(response => response.json()) + .then(str => { + for(let i = 0; i < str.length; i++){ + const replaceClassName = replaceSymbol(str[i].class_name) + const className = str[i].class_name ? `

${str[i].class_name}

` : "" + const classDesc = str[i].class_desc ? `` : "" + + let listResult = "" + const lists = str[i].link_list + for(let j = 0; j < lists.length; j++){ + listResult += ` + ` + } + + result += `${className}${classDesc} ` + } + + document.querySelector(".flink").insertAdjacentHTML("afterbegin", result) + }) + })() + + else + if site.data.link + - let result = "" + each i in site.data.link + - let className = i.class_name ? markdown(`## ${i.class_name}`) : "" + - let classDesc = i.class_desc ? `` : "" + + - let listResult = "" + + each j in i.link_list + - + listResult += ` + ` + - + + - result += `${className}${classDesc} ` + + - page.content = result + page.content + != page.content + diff --git a/themes/butterfly/layout/includes/page/tags.pug b/themes/butterfly/layout/includes/page/tags.pug new file mode 100644 index 0000000..8caac11 --- /dev/null +++ b/themes/butterfly/layout/includes/page/tags.pug @@ -0,0 +1,2 @@ +.tag-cloud-list.is-center + !=cloudTags({source: site.tags, minfontsize: 1.2, maxfontsize: 2.1, limit: 0, unit: 'em'}) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/pagination.pug b/themes/butterfly/layout/includes/pagination.pug new file mode 100644 index 0000000..c50b81a --- /dev/null +++ b/themes/butterfly/layout/includes/pagination.pug @@ -0,0 +1,37 @@ +- + var options = { + prev_text: '', + next_text: '', + mid_size: 1, + escape: false + } + +if is_post() + - let prev = theme.post_pagination === 1 ? page.prev : page.next + - let next = theme.post_pagination === 1 ? page.next : page.prev + nav#pagination.pagination-post + if(prev) + - var hasPageNext = next ? 'pull-left' : 'pull-full' + .prev-post(class=hasPageNext) + - var pagination_cover = prev.cover === false ? prev.randomcover : prev.cover + a(href=url_for(prev.path)) + img.prev-cover(src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of previous post') + .pagination-info + .label=_p('pagination.prev') + .prev_info=prev.title + + if(next) + - var hasPagePrev = prev ? 'pull-right' : 'pull-full' + - var pagination_cover = next.cover == false ? next.randomcover : next.cover + .next-post(class=hasPagePrev) + a(href=url_for(next.path)) + img.next-cover(src=url_for(pagination_cover) onerror=`onerror=null;src='${url_for(theme.error_img.post_page)}'` alt='cover of next post') + .pagination-info + .label=_p('pagination.next') + .next_info=next.title +else + nav#pagination + .pagination + if is_home() + - options.format = 'page/%d/#content-inner' + !=paginator(options) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/post/post-copyright.pug b/themes/butterfly/layout/includes/post/post-copyright.pug new file mode 100644 index 0000000..8c7ca03 --- /dev/null +++ b/themes/butterfly/layout/includes/post/post-copyright.pug @@ -0,0 +1,17 @@ +if theme.post_copyright.enable && page.copyright !== false + - let author = page.copyright_author || config.author + - let authorHref = page.copyright_author_href || theme.post_copyright.author_href || config.url + - let url = page.copyright_url || page.permalink + - let info = page.copyright_info || _p('post.copyright.copyright_content', theme.post_copyright.license_url, theme.post_copyright.license, config.url, config.title) + .post-copyright + .post-copyright__author + span.post-copyright-meta= _p('post.copyright.author') + ": " + span.post-copyright-info + a(href=authorHref)=author + .post-copyright__type + span.post-copyright-meta= _p('post.copyright.link') + ": " + span.post-copyright-info + a(href=url_for(url))= theme.post_copyright.decode ? decodeURI(url) : url + .post-copyright__notice + span.post-copyright-meta= _p('post.copyright.copyright_notice') + ": " + span.post-copyright-info!= info diff --git a/themes/butterfly/layout/includes/post/reward.pug b/themes/butterfly/layout/includes/post/reward.pug new file mode 100644 index 0000000..71daa98 --- /dev/null +++ b/themes/butterfly/layout/includes/post/reward.pug @@ -0,0 +1,13 @@ +.post-reward + .reward-button + i.fas.fa-qrcode + = ' ' + _p('donate') + .reward-main + ul.reward-all + each item in theme.reward.QR_code + - var clickTo = item.link ? item.link : item.img + li.reward-item + a(href=url_for(clickTo) target='_blank') + img.post-qr-code-img(src=url_for(item.img) alt=item.text) + .post-qr-code-desc=item.text + diff --git a/themes/butterfly/layout/includes/rightside.pug b/themes/butterfly/layout/includes/rightside.pug new file mode 100644 index 0000000..9696d0b --- /dev/null +++ b/themes/butterfly/layout/includes/rightside.pug @@ -0,0 +1,60 @@ +- const { readmode, translate, darkmode, aside, chat_btn } = theme +mixin rightsideItem(array) + each item in array + case item + when 'readmode' + if is_post() && readmode + button#readmode(type="button" title=_p('rightside.readmode_title')) + i.fas.fa-book-open + when 'translate' + if translate.enable + button#translateLink(type="button" title=_p('rightside.translate_title'))= translate.default + when 'darkmode' + if darkmode.enable && darkmode.button + button#darkmode(type="button" title=_p('rightside.night_mode_title')) + i.fas.fa-adjust + when 'hideAside' + if aside.enable && aside.button && page.aside !== false + button#hide-aside-btn(type="button" title=_p('rightside.aside')) + i.fas.fa-arrows-alt-h + when 'toc' + if showToc + button#mobile-toc-button.close(type="button" title=_p("rightside.toc")) + i.fas.fa-list-ul + when 'chat' + if chat_btn + button#chat_btn(type="button" title=_p("rightside.chat")) + i.fas.fa-sms + when 'comment' + if commentsJsLoad + a#to_comment(href="#post-comment" title=_p("rightside.scroll_to_comment")) + i.fas.fa-comments + +#rightside + - const { enable, hide, show } = theme.rightside_item_order + - const hideArray = enable ? hide && hide.split(',') : ['readmode','translate','darkmode','hideAside'] + - const showArray = enable ? show && show.split(',') : ['toc','chat','comment'] + + + #rightside-config-hide + if hideArray + +rightsideItem(hideArray) + #rightside-config-show + if enable + if hide + button#rightside_config(type="button" title=_p("rightside.setting")) + i.fas.fa-cog.fa-spin + else + if is_post() + if (readmode || translate.enable || (darkmode.enable && darkmode.button)) + button#rightside_config(type="button" title=_p("rightside.setting")) + i.fas.fa-cog.fa-spin + else if translate.enable || (darkmode.enable && darkmode.button) + button#rightside_config(type="button" title=_p("rightside.setting")) + i.fas.fa-cog.fa-spin + + if showArray + +rightsideItem(showArray) + + button#go-up(type="button" title=_p("rightside.back_to_top")) + i.fas.fa-arrow-up \ No newline at end of file diff --git a/themes/butterfly/layout/includes/sidebar.pug b/themes/butterfly/layout/includes/sidebar.pug new file mode 100644 index 0000000..11bddf8 --- /dev/null +++ b/themes/butterfly/layout/includes/sidebar.pug @@ -0,0 +1,18 @@ +#sidebar + #menu-mask + #sidebar-menus + .avatar-img.is-center + img(src=url_for(theme.avatar.img) onerror=`onerror=null;src='${theme.error_img.flink}'` alt="avatar") + .sidebar-site-data.site-data.is-center + a(href=url_for(config.archive_dir) + '/') + .headline= _p('aside.articles') + .length-num= site.posts.length + a(href=url_for(config.tag_dir) + '/' ) + .headline= _p('aside.tags') + .length-num= site.tags.length + a(href=url_for(config.category_dir) + '/') + .headline= _p('aside.categories') + .length-num= site.categories.length + + hr + !=partial('includes/header/menu_item', {}, {cache: true}) diff --git a/themes/butterfly/layout/includes/third-party/aplayer.pug b/themes/butterfly/layout/includes/third-party/aplayer.pug new file mode 100644 index 0000000..c439c4c --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/aplayer.pug @@ -0,0 +1,3 @@ +link(rel='stylesheet' href=url_for(theme.asset.aplayer_css) media="print" onload="this.media='all'") +script(src=url_for(theme.asset.aplayer_js)) +script(src=url_for(theme.asset.meting_js)) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/disqus.pug b/themes/butterfly/layout/includes/third-party/card-post-count/disqus.pug new file mode 100644 index 0000000..1dfe327 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/disqus.pug @@ -0,0 +1,16 @@ +script. + (() => { + const getCount = () => { + if (window.DISQUSWIDGETS === undefined) { + var d = document, s = d.createElement('script'); + s.src = 'https://!{theme.disqus.shortname}.disqus.com/count.js'; + s.id = 'dsq-count-scr'; + (d.head || d.body).appendChild(s); + } else { + DISQUSWIDGETS.getCount({reset: true}); + } + } + + window.pjax ? getCount() : window.addEventListener('load', getCount) + + })() diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/fb.pug b/themes/butterfly/layout/includes/third-party/card-post-count/fb.pug new file mode 100644 index 0000000..3323972 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/fb.pug @@ -0,0 +1,15 @@ +script. + (()=>{ + function loadFBComment () { + if (typeof FB === 'object') FB.XFBML.parse() + else { + let ele = document.createElement('script') + ele.setAttribute('src','https://connect.facebook.net/!{theme.facebook_comments.lang}/sdk.js#xfbml=1&version=v9.0') + ele.setAttribute('async', 'true') + ele.setAttribute('defer', 'true') + ele.setAttribute('crossorigin', 'anonymous') + document.body.appendChild(ele) + } + } + window.pjax ? loadFBComment() : window.addEventListener('load', loadFBComment) + })() diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/index.pug b/themes/butterfly/layout/includes/third-party/card-post-count/index.pug new file mode 100644 index 0000000..0abc970 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/index.pug @@ -0,0 +1,14 @@ +case theme.comments.use[0] + when 'Twikoo' + include ./twikoo.pug + when 'Disqus' + when 'Disqusjs' + include ./disqus.pug + when 'Valine' + include ./valine.pug + when 'Waline' + include ./waline.pug + when 'Facebook Comments' + include ./fb.pug + when 'Remark42' + include ./remark42.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/remark42.pug b/themes/butterfly/layout/includes/third-party/card-post-count/remark42.pug new file mode 100644 index 0000000..b67164f --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/remark42.pug @@ -0,0 +1,18 @@ +- const { host, siteId, option } = theme.remark42 + +script. + (()=>{ + window.remark_config = Object.assign({ + host: '!{host}', + site_id: '!{siteId}', + },!{JSON.stringify(option)}) + + function getCount () { + const s = document.createElement('script') + s.src = remark_config.host + '/web/counter.js' + s.defer = true + document.head.appendChild(s) + } + + window.pjax ? getCount() : window.addEventListener('load', getCount) + })() \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/twikoo.pug b/themes/butterfly/layout/includes/third-party/card-post-count/twikoo.pug new file mode 100644 index 0000000..314e4ac --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/twikoo.pug @@ -0,0 +1,37 @@ +script. + (() => { + const getCommentUrl = () => { + const eleGroup = document.querySelectorAll('#recent-posts .article-title') + let urlArray = [] + eleGroup.forEach(i=>{ + urlArray.push(i.getAttribute('href')) + }) + return urlArray + } + + const getCount = () => { + const runTwikoo = () => { + twikoo.getCommentsCount({ + envId: '!{theme.twikoo.envId}', + region: '!{theme.twikoo.region}', + urls: getCommentUrl(), + includeReply: false + }).then(function (res) { + document.querySelectorAll('#recent-posts .twikoo-count').forEach((item,index) => { + item.innerText = res[index].count + }) + }).catch(function (err) { + console.log(err) + }) + } + + if (typeof twikoo === 'object') { + runTwikoo() + } else { + getScript('!{url_for(theme.asset.twikoo)}').then(runTwikoo) + } + } + + window.pjax ? getCount() : window.addEventListener('load', getCount) + + })() \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/valine.pug b/themes/butterfly/layout/includes/third-party/card-post-count/valine.pug new file mode 100644 index 0000000..dfe9b6d --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/valine.pug @@ -0,0 +1,20 @@ +script. + (() => { + function loadValine () { + function initValine () { + let initData = { + el: '#vcomment', + appId: '#{theme.valine.appId}', + appKey: '#{theme.valine.appKey}', + serverURLs: '#{theme.valine.serverURLs}' + } + + const valine = new Valine(initData) + } + + if (typeof Valine === 'function') initValine() + else getScript('!{url_for(theme.asset.valine)}').then(initValine) + } + + window.pjax ? loadValine() : window.addEventListener('load', loadValine) + })() diff --git a/themes/butterfly/layout/includes/third-party/card-post-count/waline.pug b/themes/butterfly/layout/includes/third-party/card-post-count/waline.pug new file mode 100644 index 0000000..c43a18d --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/card-post-count/waline.pug @@ -0,0 +1,18 @@ +script. + (() => { + function loadWaline () { + function initWaline () { + let initData = { + el: null, + serverURL: '!{theme.waline.serverURL}', + comment: true + } + const waline = Waline.init(initData) + } + + if (typeof Waline === 'function') initWaline() + else getScript('!{url_for(theme.asset.waline_js)}').then(initWaline) + } + + window.pjax ? loadWaline() : window.addEventListener('load', loadWaline) + })() diff --git a/themes/butterfly/layout/includes/third-party/chat/chatra.pug b/themes/butterfly/layout/includes/third-party/chat/chatra.pug new file mode 100644 index 0000000..b6c1201 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/chat/chatra.pug @@ -0,0 +1,33 @@ +//- https://chatra.io/help/api/ +script. + (function(d, w, c) { + w.ChatraID = '#{theme.chatra.id}'; + var s = d.createElement('script'); + w[c] = w[c] || function() { + (w[c].q = w[c].q || []).push(arguments); + }; + s.async = true; + s.src = 'https://call.chatra.io/chatra.js'; + if (d.head) d.head.appendChild(s); + })(document, window, 'Chatra'); + + if (!{theme.chat_btn}) { + var chatBtnFn = () => { + var chatBtn = document.getElementById("chat_btn") + chatBtn.addEventListener("click", function(){ + Chatra('openChat') + }); + } + chatBtnFn() + } else { + if (!{theme.chat_hide_show}) { + function chatBtnHide () { + Chatra('hide') + } + function chatBtnShow () { + Chatra('show') + } + } + } + + diff --git a/themes/butterfly/layout/includes/third-party/chat/crisp.pug b/themes/butterfly/layout/includes/third-party/chat/crisp.pug new file mode 100644 index 0000000..cc57e8d --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/chat/crisp.pug @@ -0,0 +1,36 @@ +script. + window.$crisp = []; + window.CRISP_WEBSITE_ID = "!{theme.crisp.website_id}"; + (function () { + d = document; + s = d.createElement("script"); + s.src = "https://client.crisp.chat/l.js"; + s.async = 1; + d.getElementsByTagName("head")[0].appendChild(s); + })(); + $crisp.push(["safe", true]) + + if (!{theme.chat_btn}) { + $crisp.push(["do", "chat:hide"]) + $crisp.push(["on", "chat:closed", function() { + $crisp.push(["do", "chat:hide"]) + }]) + var chatBtnFn = () => { + var chatBtn = document.getElementById("chat_btn") + chatBtn.addEventListener("click", function(){ + $crisp.push(["do", "chat:show"]) + $crisp.push(["do", "chat:open"]) + + }); + } + chatBtnFn() + } else { + if (!{theme.chat_hide_show}) { + function chatBtnHide () { + $crisp.push(["do", "chat:hide"]) + } + function chatBtnShow () { + $crisp.push(["do", "chat:show"]) + } + } + } \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/chat/daovoice.pug b/themes/butterfly/layout/includes/third-party/chat/daovoice.pug new file mode 100644 index 0000000..3c6b064 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/chat/daovoice.pug @@ -0,0 +1,40 @@ +//- https://guide.daocloud.io/daovoice/javascript-api-5869833.html +script. + (function(i,s,o,g,r,a,m){i["DaoVoiceObject"]=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;a.charset="utf-8";m.parentNode.insertBefore(a,m)})(window,document,"script",('https:' == document.location.protocol ? 'https:' : 'http:') + "//widget.daovoice.io/widget/!{theme.daovoice.app_id}.js","daovoice") + +script. + var isChatBtn = !{theme.chat_btn} + daovoice('init', { + app_id: '!{theme.daovoice.app_id}',},{ + launcher: { + disableLauncherIcon: isChatBtn // 悬浮 ICON 是否显示 + }, + }); + daovoice('update'); + + if (isChatBtn) { + var chatBtnFn = () => { + var chatBtn = document.getElementById("chat_btn") + chatBtn.addEventListener("click", function(){ + daovoice('show') + }); + } + chatBtnFn() + } else { + if (!{theme.chat_hide_show}) { + function chatBtnHide () { + daovoice('update', {},{ + launcher: { + disableLauncherIcon: true // 悬浮 ICON 是否显示 + }, + }); + } + function chatBtnShow () { + daovoice('update', {},{ + launcher: { + disableLauncherIcon: false // 悬浮 ICON 是否显示 + }, + }); + } + } + } \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/chat/gitter.pug b/themes/butterfly/layout/includes/third-party/chat/gitter.pug new file mode 100644 index 0000000..46f979a --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/chat/gitter.pug @@ -0,0 +1,43 @@ +if theme.chat_btn + script. + ((window.gitter = {}).chat = {}).options = { + disableDefaultChat: true, + }; + document.addEventListener('gitter-sidecar-ready', (e) => { + const GitterChat = e.detail.Chat + let chat + + function initGitter () { + chat = new GitterChat({ + room: '#{theme.gitter.room}', + activationElement: '#chat_btn' + }); + } + + initGitter() + + if (!{theme.pjax.enable}) { + document.addEventListener('pjax:complete', () => { + chat.destroy() + initGitter() + }) + } + + }) +else + script. + ((window.gitter = {}).chat = {}).options = { + room: '#{theme.gitter.room}', + }; + + if (!{theme.chat_hide_show}) { + function chatBtnHide () { + document.getElementsByClassName('gitter-open-chat-button')[0].style.display= 'none' + } + + function chatBtnShow () { + document.getElementsByClassName('gitter-open-chat-button')[0].style.display= 'block' + } + } + +script(src="https://sidecar.gitter.im/dist/sidecar.v1.js" async defer) diff --git a/themes/butterfly/layout/includes/third-party/chat/index.pug b/themes/butterfly/layout/includes/third-party/chat/index.pug new file mode 100644 index 0000000..db78a34 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/chat/index.pug @@ -0,0 +1,10 @@ +if theme.chatra && theme.chatra.enable + include ./chatra.pug +else if theme.tidio && theme.tidio.enable + include ./tidio.pug +else if theme.daovoice && theme.daovoice.enable + include ./daovoice.pug +else if theme.gitter && theme.gitter.enable + include ./gitter.pug +else if theme.crisp && theme.crisp.enable + include ./crisp.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/chat/tidio.pug b/themes/butterfly/layout/includes/third-party/chat/tidio.pug new file mode 100644 index 0000000..6b0097f --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/chat/tidio.pug @@ -0,0 +1,41 @@ +script(src=`//code.tidio.co/${theme.tidio.public_key}.js` async) + +if theme.chat_btn + script. + function onTidioChatApiReady() { + window.tidioChatApi.hide(); + window.tidioChatApi.on("close", function() { + window.tidioChatApi.hide(); + }); + } + if (window.tidioChatApi) { + window.tidioChatApi.on("ready", onTidioChatApiReady); + } else { + document.addEventListener("tidioChat-ready", onTidioChatApiReady); + } + + var chatBtnFn = () => { + document.getElementById("chat_btn").addEventListener("click", function(){ + window.tidioChatApi.show(); + window.tidioChatApi.open(); + }); + } + chatBtnFn() + +else if theme.chat_hide_show + script. + function chatBtnHide () { + if (window.tidioChatApi) { + //- window.tidioChatApi.hide(); + document.getElementById('tidio-chat').style.display= 'none' + } + } + + function chatBtnShow () { + if (window.tidioChatApi) { + //- window.tidioChatApi.show(); + document.getElementById('tidio-chat').style.display= 'block' + } + } + + diff --git a/themes/butterfly/layout/includes/third-party/comments/disqus.pug b/themes/butterfly/layout/includes/third-party/comments/disqus.pug new file mode 100644 index 0000000..caa1222 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/disqus.pug @@ -0,0 +1,51 @@ +- let disqusPageTitle = page.title.replace(/'/ig,"\\'") + +script. + function loadDisqus () { + var disqus_config = function () { + this.page.url = '!{ page.permalink }' + this.page.identifier = '!{ url_for(page.path) }' + this.page.title = '!{ disqusPageTitle }' + }; + + window.disqusReset = () => { + DISQUS.reset({ + reload: true, + config: disqus_config + }) + } + + if (window.DISQUS) disqusReset() + else { + (function() { + var d = document, s = d.createElement('script'); + s.src = 'https://!{theme.disqus.shortname}.disqus.com/embed.js'; + s.setAttribute('data-timestamp', +new Date()); + (d.head || d.body).appendChild(s); + })(); + } + + document.getElementById('darkmode').addEventListener('click', () => { + setTimeout(() => window.disqusReset(), 200) + }) + } + + if ('!{theme.comments.use[0]}' === 'Disqus' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('disqus_thread'), loadDisqus) + else loadDisqus() + } else { + function loadOtherComment () { + loadDisqus() + } + } + +if is_post() && !theme.comments.lazyload && theme.comments.count && theme.comments.use[0] === 'Disqus' + script. + if (window.DISQUSWIDGETS === undefined) { + var d = document, s = d.createElement('script'); + s.src = 'https://!{theme.disqus.shortname}.disqus.com/count.js'; + s.id = 'dsq-count-scr'; + (d.head || d.body).appendChild(s); + } else { + DISQUSWIDGETS.getCount({reset: true}); + } diff --git a/themes/butterfly/layout/includes/third-party/comments/disqusjs.pug b/themes/butterfly/layout/includes/third-party/comments/disqusjs.pug new file mode 100644 index 0000000..1e66555 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/disqusjs.pug @@ -0,0 +1,64 @@ +- let disqusjsPageTitle = page.title.replace(/'/ig,"\\'") + +script. + function loadDisqusjs () { + function addDisqusjsCSS () { + const ele = document.createElement('link') + ele.rel = 'stylesheet' + ele.href= '!{url_for(theme.asset.disqusjs_css)}' + document.getElementsByTagName('head')[0].appendChild(ele) + } + + function initDisqusjs () { + window.disqusjs = null + disqusjs = new DisqusJS(Object.assign({ + shortname: '!{theme.disqusjs.shortname}', + identifier: '!{ url_for(page.path) }', + url: '!{ page.permalink }', + title: '!{ disqusjsPageTitle }', + apikey: '!{theme.disqusjs.apikey}', + },!{JSON.stringify(theme.disqusjs.option)})) + + disqusjs.render(document.getElementById('disqusjs')) + } + + const themeChange = () => { + const ele = document.getElementById('disqus_thread') + if(!ele) return + disqusjs.destroy() + initDisqusjs() + } + + + document.getElementById('darkmode').addEventListener('click', themeChange) + + if (window.disqusJsLoad) initDisqusjs() + else { + addDisqusjsCSS() + getScript('!{url_for(theme.asset.disqusjs)}').then(initDisqusjs) + window.disqusJsLoad = true + } + } + + if ('!{theme.comments.use[0]}' === 'Disqusjs' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('disqusjs'), loadDisqusjs) + else loadDisqusjs() + } + else { + function loadOtherComment () { + loadDisqusjs() + } + } + + +if is_post() && !theme.comments.lazyload && theme.comments.count && theme.comments.use[0] === 'Disqusjs' + script. + if (window.DISQUSWIDGETS === undefined) { + var d = document, s = d.createElement('script'); + s.src = 'https://!{theme.disqus.shortname}.disqus.com/count.js'; + s.id = 'dsq-count-scr'; + (d.head || d.body).appendChild(s); + } else { + DISQUSWIDGETS.getCount({reset: true}); + } + diff --git a/themes/butterfly/layout/includes/third-party/comments/facebook_comments.pug b/themes/butterfly/layout/includes/third-party/comments/facebook_comments.pug new file mode 100644 index 0000000..64879b0 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/facebook_comments.pug @@ -0,0 +1,26 @@ +#fb-root +script. + function loadFBComment () { + var themeNow = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light' + document.getElementsByClassName('fb-comments')[0].setAttribute('data-colorscheme',themeNow) + + if (typeof FB === 'object') FB.XFBML.parse() + else { + let ele = document.createElement('script') + ele.setAttribute('src','https://connect.facebook.net/!{theme.facebook_comments.lang}/sdk.js#xfbml=1&version=v13.0&appId=!{theme.facebook_comments.app_id}&autoLogAppEvents=1') + ele.setAttribute('async', 'true') + ele.setAttribute('defer', 'true') + ele.setAttribute('crossorigin', 'anonymous') + document.getElementById('fb-root').insertAdjacentElement('afterbegin',ele) + } + } + + if ('!{theme.comments.use[0]}' === 'Facebook Comments' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.querySelector('#post-comment .fb-comments'), loadFBComment) + else loadFBComment() + } else { + function loadOtherComment () { + loadFBComment() + } + } + diff --git a/themes/butterfly/layout/includes/third-party/comments/giscus.pug b/themes/butterfly/layout/includes/third-party/comments/giscus.pug new file mode 100644 index 0000000..df19568 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/giscus.pug @@ -0,0 +1,49 @@ +- const { repo, repo_id, category_id, option } = theme.giscus +- const themes = theme.giscus.theme +script. + function loadGiscus () { + let nowTheme = document.documentElement.getAttribute('data-theme') === 'dark' ? '!{themes.dark}' : '!{themes.light}' + + const config = Object.assign({ + src: 'https://giscus.app/client.js', + 'data-repo': '!{repo}', + 'data-repo-id': '!{repo_id}', + 'data-category-id': '!{category_id}', + 'data-mapping': 'pathname', + 'data-theme': nowTheme, + 'data-reactions-enabled': '1', + crossorigin: 'anonymous', + async: true + },!{JSON.stringify(option)}) + + let ele = document.createElement('script') + for (let key in config) { + ele.setAttribute(key, config[key]) + } + document.getElementById('giscus-wrap').insertAdjacentElement('afterbegin',ele) + } + + function changeGiscusTheme () { + const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? '!{themes.dark}' : '!{themes.light}' + + function sendMessage(message) { + const iframe = document.querySelector('iframe.giscus-frame'); + if (!iframe) return; + iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app'); + } + + sendMessage({ + setConfig: { + theme: theme + } + }); + } + + if ('!{theme.comments.use[0]}' === 'Giscus' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('giscus-wrap'), loadGiscus) + else loadGiscus() + } else { + function loadOtherComment () { + loadGiscus() + } + } diff --git a/themes/butterfly/layout/includes/third-party/comments/gitalk.pug b/themes/butterfly/layout/includes/third-party/comments/gitalk.pug new file mode 100644 index 0000000..fccb64d --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/gitalk.pug @@ -0,0 +1,48 @@ +script. + function addGitalkSource () { + const ele = document.createElement('link') + ele.rel = 'stylesheet' + ele.href= '!{url_for(theme.asset.gitalk_css)}' + document.getElementsByTagName('head')[0].appendChild(ele) + } + + function loadGitalk () { + function initGitalk () { + var gitalk = new Gitalk(Object.assign({ + clientID: '!{theme.gitalk.client_id}', + clientSecret: '!{theme.gitalk.client_secret}', + repo: '!{theme.gitalk.repo}', + owner: '!{theme.gitalk.owner}', + admin: ['!{theme.gitalk.admin}'], + id: '!{md5(page.path)}', + updateCountCallback: commentCount + },!{JSON.stringify(theme.gitalk.option)})) + + gitalk.render('gitalk-container') + } + + if (typeof Gitalk === 'function') initGitalk() + else { + addGitalkSource() + getScript('!{url_for(theme.asset.gitalk)}').then(initGitalk) + } + } + + function commentCount(n){ + let isCommentCount = document.querySelector('#post-meta .gitalk-comment-count') + if (isCommentCount) { + isCommentCount.innerHTML= n + } + } + + if ('!{theme.comments.use[0]}' === 'Gitalk' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('gitalk-container'), loadGitalk) + else loadGitalk() + } else { + function loadOtherComment () { + loadGitalk() + } + } + + + diff --git a/themes/butterfly/layout/includes/third-party/comments/index.pug b/themes/butterfly/layout/includes/third-party/comments/index.pug new file mode 100644 index 0000000..36c6978 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/index.pug @@ -0,0 +1,44 @@ +- let defaultComment = theme.comments.use[0] +hr +#post-comment + .comment-head + .comment-headline + i.fas.fa-comments.fa-fw + span= ' ' + _p('comment') + + if theme.comments.use.length > 1 + #comment-switch + span.first-comment=defaultComment + span.switch-btn + span.second-comment=theme.comments.use[1] + + + .comment-wrap + each name in theme.comments.use + div + case name + when 'Disqus' + #disqus_thread + when 'Valine' + #vcomment.vcomment + when 'Disqusjs' + #disqusjs + when 'Livere' + #lv-container(data-id="city" data-uid=theme.livere.uid) + when 'Gitalk' + #gitalk-container + when 'Utterances' + #utterances-wrap + when 'Twikoo' + #twikoo-wrap + when 'Waline' + #waline-wrap + when 'Giscus' + #giscus-wrap + when 'Facebook Comments' + .fb-comments(data-colorscheme = theme.display_mode === 'dark' ? 'dark' : 'light' + data-numposts= theme.facebook_comments.pageSize || 10 + data-order-by= theme.facebook_comments.order_by || 'social' + data-width="100%") + when 'Remark42' + #remark42 diff --git a/themes/butterfly/layout/includes/third-party/comments/js.pug b/themes/butterfly/layout/includes/third-party/comments/js.pug new file mode 100644 index 0000000..39e3871 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/js.pug @@ -0,0 +1,24 @@ +each name in theme.comments.use + case name + when 'Valine' + !=partial('includes/third-party/comments/valine', {}, {cache: true}) + when 'Disqus' + include ./disqus.pug + when 'Disqusjs' + include ./disqusjs.pug + when 'Livere' + !=partial('includes/third-party/comments/livere', {}, {cache: true}) + when 'Gitalk' + include ./gitalk.pug + when 'Utterances' + !=partial('includes/third-party/comments/utterances', {}, {cache: true}) + when 'Twikoo' + !=partial('includes/third-party/comments/twikoo', {}, {cache: true}) + when 'Waline' + !=partial('includes/third-party/comments/waline', {}, {cache: true}) + when 'Giscus' + !=partial('includes/third-party/comments/giscus', {}, {cache: true}) + when 'Facebook Comments' + !=partial('includes/third-party/comments/facebook_comments', {}, {cache: true}) + when 'Remark42' + !=partial('includes/third-party/comments/remark42', {}, {cache: true}) diff --git a/themes/butterfly/layout/includes/third-party/comments/livere.pug b/themes/butterfly/layout/includes/third-party/comments/livere.pug new file mode 100644 index 0000000..85b6d78 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/livere.pug @@ -0,0 +1,26 @@ +script. + function loadLivere () { + if (typeof LivereTower === 'object') { + window.LivereTower.init() + } + else { + (function(d, s) { + var j, e = d.getElementsByTagName(s)[0]; + if (typeof LivereTower === 'function') { return; } + j = d.createElement(s); + j.src = 'https://cdn-city.livere.com/js/embed.dist.js'; + j.async = true; + e.parentNode.insertBefore(j, e); + })(document, 'script'); + } + } + + if ('!{theme.comments.use[0]}' === 'Livere' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('lv-container'), loadLivere) + else loadLivere() + } + else { + function loadOtherComment () { + loadLivere() + } + } \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/comments/remark42.pug b/themes/butterfly/layout/includes/third-party/comments/remark42.pug new file mode 100644 index 0000000..d6d49a6 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/remark42.pug @@ -0,0 +1,67 @@ +- const { host, siteId, option } = theme.remark42 +script. + var remark_config = Object.assign({ + host: '!{host}', + site_id: '!{siteId}', + components: ['embed'], + theme: document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light' + },!{JSON.stringify(option)}) + + function addRemark42(){ + for (let i = 0; i < remark_config.components.length; i++) { + const s = document.createElement('script') + s.src = remark_config.host + '/web/' + remark_config.components[i] + '.js' + s.defer = true + document.head.appendChild(s) + } + } + + function initRemark42() { + if (window.REMARK42) { + if (this.remark42Instance) { + this.remark42Instance.destroy() + } + + this.remark42Instance = window.REMARK42.createInstance({ + ...remark_config + }) + } + } + + function getCount () { + const ele = document.querySelector('.remark42__counter') + if (ele) { + const s = document.createElement('script') + s.src = remark_config.host + '/web/counter.js' + s.defer = true + document.head.appendChild(s) + } + } + + function loadRemark42 () { + if (window.REMARK42) { + this.initRemark42() + getCount() + } else { + addRemark42() + window.addEventListener('REMARK42::ready', () => { + this.initRemark42() + getCount() + }) + } + } + + document.getElementById('darkmode').addEventListener('click',()=>{ + if (!window.REMARK42) return + let theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark' + window.REMARK42.changeTheme(theme) + }) + + if ('!{theme.comments.use[0]}' === 'Remark42' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('remark42'), loadRemark42) + else loadRemark42() + } else { + function loadOtherComment () { + loadRemark42() + } + } diff --git a/themes/butterfly/layout/includes/third-party/comments/twikoo.pug b/themes/butterfly/layout/includes/third-party/comments/twikoo.pug new file mode 100644 index 0000000..437a42f --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/twikoo.pug @@ -0,0 +1,53 @@ +- const { envId, region, option } = theme.twikoo +- const { use, lazyload, count } = theme.comments + +script. + (()=>{ + const init = () => { + twikoo.init(Object.assign({ + el: '#twikoo-wrap', + envId: '!{envId}', + region: '!{region}', + onCommentLoaded: function () { + btf.loadLightbox(document.querySelectorAll('#twikoo .tk-content img:not(.tk-owo-emotion)')) + } + }, !{JSON.stringify(option)})) + } + + const getCount = () => { + const countELement = document.getElementById('twikoo-count') + if(!countELement) return + twikoo.getCommentsCount({ + envId: '!{envId}', + region: '!{region}', + urls: [window.location.pathname], + includeReply: false + }).then(function (res) { + countELement.innerText = res[0].count + }).catch(function (err) { + console.error(err); + }); + } + + const runFn = () => { + init() + !{count ? 'GLOBAL_CONFIG_SITE.isPost && getCount()' : ''} + } + + const loadTwikoo = () => { + if (typeof twikoo === 'object') { + setTimeout(runFn,0) + return + } + getScript('!{url_for(theme.asset.twikoo)}').then(runFn) + } + + if ('!{use[0]}' === 'Twikoo' || !!{lazyload}) { + if (!{lazyload}) btf.loadComment(document.getElementById('twikoo-wrap'), loadTwikoo) + else loadTwikoo() + } else { + window.loadOtherComment = () => { + loadTwikoo() + } + } + })() \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/comments/utterances.pug b/themes/butterfly/layout/includes/third-party/comments/utterances.pug new file mode 100644 index 0000000..7f61831 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/utterances.pug @@ -0,0 +1,34 @@ +script. + function loadUtterances () { + let ele = document.createElement('script') + ele.setAttribute('id', 'utterances_comment') + ele.setAttribute('src', 'https://utteranc.es/client.js') + ele.setAttribute('repo', '!{theme.utterances.repo}') + ele.setAttribute('issue-term', '!{theme.utterances.issue_term}') + let nowTheme = document.documentElement.getAttribute('data-theme') === 'dark' ? '#{theme.utterances.dark_theme}' : '#{theme.utterances.light_theme}' + ele.setAttribute('theme', nowTheme) + ele.setAttribute('crossorigin', 'anonymous') + ele.setAttribute('async', 'true') + document.getElementById('utterances-wrap').insertAdjacentElement('afterbegin',ele) + } + + function utterancesTheme () { + const iframe = document.querySelector('.utterances-frame') + if (iframe) { + const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? '#{theme.utterances.dark_theme}' : '#{theme.utterances.light_theme}' + const message = { + type: 'set-theme', + theme: theme + }; + iframe.contentWindow.postMessage(message, 'https://utteranc.es'); + } + } + + if ('!{theme.comments.use[0]}' === 'Utterances' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('utterances-wrap'), loadUtterances) + else loadUtterances() + } else { + function loadOtherComment () { + loadUtterances() + } + } diff --git a/themes/butterfly/layout/includes/third-party/comments/valine.pug b/themes/butterfly/layout/includes/third-party/comments/valine.pug new file mode 100644 index 0000000..025849e --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/valine.pug @@ -0,0 +1,33 @@ +- let emojiMaps = '""' +if site.data.valine + - emojiMaps = JSON.stringify(site.data.valine) + +script. + function loadValine () { + function initValine () { + const valine = new Valine(Object.assign({ + el: '#vcomment', + appId: '#{theme.valine.appId}', + appKey: '#{theme.valine.appKey}', + avatar: '#{theme.valine.avatar}', + serverURLs: '#{theme.valine.serverURLs}', + emojiMaps: !{emojiMaps}, + path: window.location.pathname, + visitor: #{theme.valine.visitor} + }, !{JSON.stringify(theme.valine.option)})) + } + + if (typeof Valine === 'function') initValine() + else getScript('!{url_for(theme.asset.valine)}').then(initValine) + } + + if ('!{theme.comments.use[0]}' === 'Valine' || !!{theme.comments.lazyload}) { + if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('vcomment'),loadValine) + else setTimeout(loadValine, 0) + } else { + function loadOtherComment () { + loadValine() + } + } + + diff --git a/themes/butterfly/layout/includes/third-party/comments/waline.pug b/themes/butterfly/layout/includes/third-party/comments/waline.pug new file mode 100644 index 0000000..06e8078 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/comments/waline.pug @@ -0,0 +1,40 @@ +- const { serverURL, option, pageview } = theme.waline +- const { lazyload, count, use } = theme.comments + +script. + function loadWaline () { + function insertCSS () { + const link = document.createElement("link") + link.rel = "stylesheet" + link.href = "!{url_for(theme.asset.waline_css)}" + document.head.appendChild(link) + } + + function initWaline () { + const waline = Waline.init(Object.assign({ + el: '#waline-wrap', + serverURL: '!{serverURL}', + pageview: !{lazyload ? false : pageview}, + dark: 'html[data-theme="dark"]', + path: window.location.pathname, + comment: !{lazyload ? false : count}, + }, !{JSON.stringify(option)})) + } + + if (typeof Waline === 'function') initWaline() + else { + insertCSS() + getScript('!{url_for(theme.asset.waline_js)}').then(initWaline) + } + } + + if ('!{use[0]}' === 'Waline' || !!{lazyload}) { + if (!{lazyload}) btf.loadComment(document.getElementById('waline-wrap'),loadWaline) + else setTimeout(loadWaline, 0) + } else { + function loadOtherComment () { + loadWaline() + } + } + + diff --git a/themes/butterfly/layout/includes/third-party/effect.pug b/themes/butterfly/layout/includes/third-party/effect.pug new file mode 100644 index 0000000..275297c --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/effect.pug @@ -0,0 +1,35 @@ +if theme.fireworks && theme.fireworks.enable + canvas.fireworks(mobile=`${theme.fireworks.mobile}`) + script(src=url_for(theme.asset.fireworks)) + +if (theme.canvas_ribbon && theme.canvas_ribbon.enable) + script(defer id="ribbon" src=url_for(theme.asset.canvas_ribbon) size=theme.canvas_ribbon.size + alpha=theme.canvas_ribbon.alpha zIndex=theme.canvas_ribbon.zIndex mobile=`${theme.canvas_ribbon.mobile}` data-click=`${theme.canvas_ribbon.click_to_change}`) + +if (theme.canvas_fluttering_ribbon && theme.canvas_fluttering_ribbon.enable) + script(defer id="fluttering_ribbon" mobile=`${theme.canvas_fluttering_ribbon.mobile}` src=url_for(theme.asset.canvas_fluttering_ribbon)) + +if (theme.canvas_nest && theme.canvas_nest.enable) + script#canvas_nest(defer color=theme.canvas_nest.color opacity=theme.canvas_nest.opacity zIndex=theme.canvas_nest.zIndex count=theme.canvas_nest.count mobile=`${theme.canvas_nest.mobile}` src=url_for(theme.asset.canvas_nest)) + +if theme.activate_power_mode.enable + script(src=url_for(theme.asset.activate_power_mode)) + script. + POWERMODE.colorful = !{theme.activate_power_mode.colorful}; + POWERMODE.shake = !{theme.activate_power_mode.shake}; + POWERMODE.mobile = !{theme.activate_power_mode.mobile}; + document.body.addEventListener('input', POWERMODE); + +//- 鼠標特效 +if theme.click_heart && theme.click_heart.enable + script#click-heart(src=url_for(theme.asset.click_heart) async mobile=`${theme.click_heart.mobile}`) + +if theme.ClickShowText && theme.ClickShowText.enable + script#click-show-text( + src= url_for(theme.asset.ClickShowText) + data-mobile= `${theme.ClickShowText.mobile}` + data-text= theme.ClickShowText.text.join(",") + data-fontsize= theme.ClickShowText.fontSize + data-random= `${theme.ClickShowText.random}` + async + ) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/math/index.pug b/themes/butterfly/layout/includes/third-party/math/index.pug new file mode 100644 index 0000000..2b16302 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/math/index.pug @@ -0,0 +1,18 @@ +if theme.mathjax && theme.mathjax.enable + if theme.mathjax.per_page + if is_post() || is_page() + include ./mathjax.pug + else + if page.mathjax + include ./mathjax.pug + +if theme.katex && theme.katex.enable + if theme.katex.per_page + if is_post() || is_page() + include ./katex.pug + else + if page.katex + include ./katex.pug + +if theme.mermaid.enable + include ./mermaid.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/math/katex.pug b/themes/butterfly/layout/includes/third-party/math/katex.pug new file mode 100644 index 0000000..c1f0bd6 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/math/katex.pug @@ -0,0 +1,9 @@ +link(rel="stylesheet" type="text/css" href=url_for(theme.asset.katex)) +script(src=url_for(theme.asset.katex_copytex)) +script. + (() => { + document.querySelectorAll('#article-container span.katex-display').forEach(item => { + btf.wrap(item, 'div', { class: 'katex-wrap'}) + }) + })() + \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/math/mathjax.pug b/themes/butterfly/layout/includes/third-party/math/mathjax.pug new file mode 100644 index 0000000..688e6dc --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/math/mathjax.pug @@ -0,0 +1,48 @@ +//- Mathjax 3 +script. + if (!window.MathJax) { + window.MathJax = { + tex: { + inlineMath: [ ['$','$'], ["\\(","\\)"]], + tags: 'ams' + }, + chtml: { + scale: 1.2 + }, + options: { + renderActions: { + findScript: [10, doc => { + for (const node of document.querySelectorAll('script[type^="math/tex"]')) { + const display = !!node.type.match(/; *mode=display/) + const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display) + const text = document.createTextNode('') + node.parentNode.replaceChild(text, node) + math.start = {node: text, delim: '', n: 0} + math.end = {node: text, delim: '', n: 0} + doc.math.push(math) + } + }, ''], + insertScript: [200, () => { + document.querySelectorAll('mjx-container:not\([display]\)').forEach(node => { + const target = node.parentNode + if (target.nodeName.toLowerCase() === 'li') { + target.parentNode.classList.add('has-jax') + } else { + target.classList.add('has-jax') + } + }); + }, '', false] + } + } + } + + const script = document.createElement('script') + script.src = '!{url_for(theme.asset.mathjax)}' + script.id = 'MathJax-script' + script.async = true + document.head.appendChild(script) + } else { + MathJax.startup.document.state(0) + MathJax.texReset() + MathJax.typeset() + } \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/math/mermaid.pug b/themes/butterfly/layout/includes/third-party/math/mermaid.pug new file mode 100644 index 0000000..5b7b496 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/math/mermaid.pug @@ -0,0 +1,26 @@ +script. + (() => { + const $mermaidWrap = document.querySelectorAll('#article-container .mermaid-wrap') + if ($mermaidWrap.length) { + window.runMermaid = () => { + window.loadMermaid = true + const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? '!{theme.mermaid.theme.dark}' : '!{theme.mermaid.theme.light}' + + Array.from($mermaidWrap).forEach((item, index) => { + const mermaidSrc = item.firstElementChild + const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n' + const mermaidID = 'mermaid-' + index + const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent + mermaid.mermaidAPI.render(mermaidID, mermaidDefinition, (svgCode) => { + mermaidSrc.insertAdjacentHTML('afterend', svgCode) + }) + }) + } + + const loadMermaid = () => { + window.loadMermaid ? runMermaid() : getScript('!{url_for(theme.asset.mermaid)}').then(runMermaid) + } + + window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid) + } + })() \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/disqus-comment.pug b/themes/butterfly/layout/includes/third-party/newest-comments/disqus-comment.pug new file mode 100644 index 0000000..5b95e74 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/disqus-comment.pug @@ -0,0 +1,82 @@ +script. + window.addEventListener('load', () => { + const changeContent = (content) => { + if (content === '') return content + + content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link + content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url + content = content.replace(/.*?<\/code>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code + content = content.replace(/<[^>]+>/g,"") // remove html tag + + if (content.length > 150) { + content = content.substring(0,150) + '...' + } + return content + } + + const getComment = () => { + fetch('https://disqus.com/api/3.0/forums/listPosts.json?forum=!{forum}&related=thread&limit=!{theme.newest_comments.limit}&api_key=!{apiKey}') + .then(response => response.json()) + .then(data => { + const disqusArray = data.response.map(item => { + return { + 'avatar': item.author.avatar.cache, + 'content': changeContent(item.message), + 'nick': item.author.name, + 'url': item.url, + 'date': item.createdAt + } + }) + + saveToLocal.set('disqus-newest-comments', JSON.stringify(disqusArray), !{theme.newest_comments.storage}/(60*24)) + generateHtml(disqusArray) + }).catch(e => { + const $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}" + }) + } + + const generateHtml = array => { + let result = '' + + if (array.length) { + for (let i = 0; i < array.length; i++) { + result += '
' + + if (!{theme.newest_comments.avatar}) { + const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' + result += `${array[i].nick}` + } + + result += `
+ ${array[i].content} +
${array[i].nick}
+
` + } + } else { + result += '!{_p("aside.card_newest_comments.zero")}' + } + + let $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= result + window.lazyLoadInstance && window.lazyLoadInstance.update() + window.pjax && window.pjax.refresh($dom) + } + + const newestCommentInit = () => { + if (document.querySelector('#card-newest-comments .aside-list')) { + const data = saveToLocal.get('disqus-newest-comments') + if (data) { + generateHtml(JSON.parse(data)) + } else { + getComment() + } + } + } + + newestCommentInit() + document.addEventListener('pjax:complete', newestCommentInit) + }) + + + diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/github-issues.pug b/themes/butterfly/layout/includes/third-party/newest-comments/github-issues.pug new file mode 100644 index 0000000..2153b11 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/github-issues.pug @@ -0,0 +1,109 @@ +script. + window.addEventListener('load', () => { + const changeContent = (content) => { + if (content === '') return content + + content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link + content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url + content = content.replace(/
.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
+      content = content.replace(/<[^>]+>/g,"") // remove html tag
+
+      if (content.length > 150) {
+        content = content.substring(0,150) + '...'
+      }
+      return content
+    }
+
+    const findTrueUrl = (array) => {
+      Promise.all(array.map(item =>
+        fetch(item.url).then(resp => resp.json()).then(data => {
+          const urlArray = data.body.match(/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/ig)
+          if (data.user.login === 'utterances-bot') {
+            return urlArray.pop()
+          } else {
+            return urlArray.shift()
+          }
+        })
+      )).then(res => {
+          array = array.map((i,index)=> {
+            return {
+              ...i,
+              url: res[index]
+            }
+          })
+
+          saveToLocal.set('github-newest-comments', JSON.stringify(array), !{theme.newest_comments.storage}/(60*24))
+          generateHtml(array)
+      });
+    }
+
+    const getComment = () => {
+      fetch('https://api.github.com/repos/!{userRepo}/issues/comments?sort=updated&direction=desc&per_page=!{theme.newest_comments.limit}&page=1',{
+        "headers": {
+          Accept: 'application/vnd.github.v3.html+json'
+        }
+      })
+        .then(response => response.json())
+        .then(data => {
+          const githubArray = data.map(item => {
+            return {
+              'avatar': item.user.avatar_url,
+              'content': changeContent(item.body_html),
+              'nick': item.user.login,
+              'url': item.issue_url,
+              'date': item.updated_at,
+              'githubUrl': item.html_url
+            }
+          })
+          findTrueUrl(githubArray)
+        }).catch(e => {
+          const $dom = document.querySelector('#card-newest-comments .aside-list')
+          $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}"
+        })
+    }
+
+    const generateHtml = array => {
+      let result = ''
+
+      if (array.length) {
+        for (let i = 0; i < array.length; i++) {
+          result += '
' + + if (!{theme.newest_comments.avatar}) { + const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' + result += `${array[i].nick}` + } + + result += `
+ ${array[i].content} +
${array[i].nick} /
+
` + } + } else { + result += '!{_p("aside.card_newest_comments.zero")}' + } + + let $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= result + window.lazyLoadInstance && window.lazyLoadInstance.update() + window.pjax && window.pjax.refresh($dom) + } + + const newestCommentInit = () => { + if (document.querySelector('#card-newest-comments .aside-list')) { + const data = saveToLocal.get('github-newest-comments') + if (data) { + generateHtml(JSON.parse(data)) + } else { + getComment() + } + } + } + + newestCommentInit() + document.addEventListener('pjax:complete', newestCommentInit) + }) + + + + diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/index.pug b/themes/butterfly/layout/includes/third-party/newest-comments/index.pug new file mode 100644 index 0000000..826ccff --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/index.pug @@ -0,0 +1,28 @@ +- let { use } = theme.comments + +if use + - let forum,apiKey,userRepo + case use[0] + when 'Valine' + include ./valine.pug + when 'Waline' + include ./waline.pug + when 'Twikoo' + include ./twikoo-comment.pug + when 'Disqus' + - forum = theme.disqus.shortname + - apiKey = theme.disqus.apikey + include ./disqus-comment.pug + when 'Disqusjs' + - forum = theme.disqusjs.shortname + - apiKey = theme.disqusjs.apikey + include ./disqus-comment.pug + when 'Gitalk' + - let { repo,owner } = theme.gitalk + - userRepo = owner + '/' + repo + include ./github-issues.pug + when 'Utterances' + - userRepo = theme.utterances.repo + include ./github-issues.pug + when 'Remark42' + include ./remark42.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/remark42.pug b/themes/butterfly/layout/includes/third-party/newest-comments/remark42.pug new file mode 100644 index 0000000..8ead708 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/remark42.pug @@ -0,0 +1,80 @@ +- const { host, siteId } = theme.remark42 + +script. + window.addEventListener('load', () => { + const changeContent = (content) => { + if (content === '') return content + + content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link + content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url + content = content.replace(/
.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
+      content = content.replace(/<[^>]+>/g,"") // remove html tag
+
+      if (content.length > 150) {
+        content = content.substring(0,150) + '...'
+      }
+      return content
+    }
+
+    const generateHtml = array => {
+      let result = ''
+
+      if (array.length) {
+        for (let i = 0; i < array.length; i++) {
+          result += '
' + + if (!{theme.newest_comments.avatar}) { + const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' + result += `${array[i].nick}` + } + + result += `
+ ${array[i].content} +
${array[i].nick} /
+
` + } + } else { + result += '!{_p("aside.card_newest_comments.zero")}' + } + + let $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= result + window.lazyLoadInstance && window.lazyLoadInstance.update() + window.pjax && window.pjax.refresh($dom) + } + + const getComment = () => { + fetch('!{host}/api/v1/last/!{theme.newest_comments.limit}?site=!{siteId}') + .then(response => response.json()) + .then(data => { + const remark42 = data.map(function (e) { + return { + 'avatar': e.user.picture, + 'content': changeContent(e.text), + 'nick': e.user.name, + 'url': e.locator.url, + 'date': e.time, + } + }) + saveToLocal.set('remark42-newest-comments', JSON.stringify(remark42), !{theme.newest_comments.storage}/(60*24)) + generateHtml(remark42) + }).catch(e => { + const $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}" + }) + } + + const newestCommentInit = () => { + if (document.querySelector('#card-newest-comments .aside-list')) { + const data = saveToLocal.get('remark42-newest-comments') + if (data) { + generateHtml(JSON.parse(data)) + } else { + getComment() + } + } + } + + newestCommentInit() + document.addEventListener('pjax:complete', newestCommentInit) + }) diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/twikoo-comment.pug b/themes/butterfly/layout/includes/third-party/newest-comments/twikoo-comment.pug new file mode 100644 index 0000000..e362623 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/twikoo-comment.pug @@ -0,0 +1,93 @@ +script. + window.addEventListener('load', () => { + const changeContent = (content) => { + if (content === '') return content + + content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link + content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url + content = content.replace(/
.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
+      content = content.replace(/<[^>]+>/g,"") // remove html tag
+
+      if (content.length > 150) {
+        content = content.substring(0,150) + '...'
+      }
+      return content
+    }
+
+    const getComment = () => {
+      const runTwikoo = () => {
+        twikoo.getRecentComments({
+          envId: '!{theme.twikoo.envId}',
+          region: '!{theme.twikoo.region}',
+          pageSize: !{theme.newest_comments.limit},
+          includeReply: true
+        }).then(function (res) {
+          const twikooArray = res.map(e => {
+            return {
+              'content': changeContent(e.comment),
+              'avatar': e.avatar,
+              'nick': e.nick,
+              'url': e.url + '#' + e.id,
+              'date': new Date(e.created).toISOString()
+            }
+          })
+
+          saveToLocal.set('twikoo-newest-comments', JSON.stringify(twikooArray), !{theme.newest_comments.storage}/(60*24))
+          generateHtml(twikooArray)
+        }).catch(function (err) {
+          const $dom = document.querySelector('#card-newest-comments .aside-list')
+          $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}"
+        })
+      }
+
+      if (typeof twikoo === 'object') {
+        runTwikoo()
+      } else {
+        getScript('!{url_for(theme.asset.twikoo)}').then(runTwikoo)
+      }
+    }
+
+    const generateHtml = array => {
+      let result = ''
+
+      if (array.length) {
+        for (let i = 0; i < array.length; i++) {
+          result += '
' + + if (!{theme.newest_comments.avatar}) { + const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' + result += `${array[i].nick}` + } + + result += `
+ ${array[i].content} +
${array[i].nick} /
+
` + } + } else { + result += '!{_p("aside.card_newest_comments.zero")}' + } + + let $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= result + window.lazyLoadInstance && window.lazyLoadInstance.update() + window.pjax && window.pjax.refresh($dom) + } + + const newestCommentInit = () => { + if (document.querySelector('#card-newest-comments .aside-list')) { + const data = saveToLocal.get('twikoo-newest-comments') + if (data) { + generateHtml(JSON.parse(data)) + } else { + getComment() + } + } + } + + newestCommentInit() + document.addEventListener('pjax:complete', newestCommentInit) + }) + + + diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/valine.pug b/themes/butterfly/layout/includes/third-party/newest-comments/valine.pug new file mode 100644 index 0000000..ef0bb10 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/valine.pug @@ -0,0 +1,99 @@ +- let default_avatar = theme.valine.avatar + +script(src=url_for(theme.asset.blueimp_md5)) +script. + window.addEventListener('load', () => { + const changeContent = (content) => { + if (content === '') return content + + content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link + content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url + content = content.replace(/
.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
+      content = content.replace(/<[^>]+>/g,"") // remove html tag
+
+      if (content.length > 150) {
+        content = content.substring(0,150) + '...'
+      }
+      return content
+    }
+
+    const getIcon = (icon, mail) => {
+      if (icon) return icon
+      let defaultIcon = '!{ default_avatar ? `?d=${default_avatar}` : ''}'
+      let iconUrl = `https://gravatar.loli.net/avatar/${md5(mail.toLowerCase()) + defaultIcon}`
+      return iconUrl
+    }
+
+    const generateHtml = array => {
+      let result = ''
+
+      if (array.length) {
+        for (let i = 0; i < array.length; i++) {
+          result += '
' + + if (!{theme.newest_comments.avatar}) { + const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' + result += `${array[i].nick}` + } + + result += `
+ ${array[i].content} +
${array[i].nick} /
+
` + } + } else { + result += '!{_p("aside.card_newest_comments.zero")}' + } + + let $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= result + window.lazyLoadInstance && window.lazyLoadInstance.update() + window.pjax && window.pjax.refresh($dom) + } + + const getComment = () => { + const serverURL = '!{theme.valine.serverURLs || `https://${theme.valine.appId.substring(0,8)}.api.lncldglobal.com` }' + + var settings = { + "method": "GET", + "headers": { + "X-LC-Id": '!{theme.valine.appId}', + "X-LC-Key": '!{theme.valine.appKey}', + "Content-Type": "application/json" + }, + } + + fetch(`${serverURL}/1.1/classes/Comment?limit=!{theme.newest_comments.limit}&order=-createdAt`,settings) + .then(response => response.json()) + .then(data => { + const valineArray = data.results.map(function (e) { + return { + 'avatar': getIcon(e.QQAvatar, e.mail), + 'content': changeContent(e.comment), + 'nick': e.nick, + 'url': e.url + '#' + e.objectId, + 'date': e.updatedAt, + } + }) + saveToLocal.set('valine-newest-comments', JSON.stringify(valineArray), !{theme.newest_comments.storage}/(60*24)) + generateHtml(valineArray) + }).catch(e => { + const $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}" + }) + } + + const newestCommentInit = () => { + if (document.querySelector('#card-newest-comments .aside-list')) { + const data = saveToLocal.get('valine-newest-comments') + if (data) { + generateHtml(JSON.parse(data)) + } else { + getComment() + } + } + } + + newestCommentInit() + document.addEventListener('pjax:complete', newestCommentInit) + }) diff --git a/themes/butterfly/layout/includes/third-party/newest-comments/waline.pug b/themes/butterfly/layout/includes/third-party/newest-comments/waline.pug new file mode 100644 index 0000000..15ca44c --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/newest-comments/waline.pug @@ -0,0 +1,84 @@ +script. + window.addEventListener('load', () => { + const changeContent = (content) => { + if (content === '') return content + + content = content.replace(/]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link + content = content.replace(/]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url + content = content.replace(/
.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
+      content = content.replace(/<[^>]+>/g,"") // remove html tag
+
+      if (content.length > 150) {
+        content = content.substring(0,150) + '...'
+      }
+      return content
+    }
+
+    const generateHtml = array => {
+      let result = ''
+
+      if (array.length) {
+        for (let i = 0; i < array.length; i++) {
+          result += '
' + + if (!{theme.newest_comments.avatar}) { + const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}' + result += `${array[i].nick}` + } + + result += `
+ ${array[i].content} +
${array[i].nick} /
+
` + } + } else { + result += '!{_p("aside.card_newest_comments.zero")}' + } + + let $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= result + window.lazyLoadInstance && window.lazyLoadInstance.update() + window.pjax && window.pjax.refresh($dom) + } + + const getComment = () => { + const loadWaline = () => { + Waline.RecentComments({ + serverURL: '!{theme.waline.serverURL}', + count: !{theme.newest_comments.limit} + }).then(({comments}) => { + const walineArray = comments.map(e => { + return { + 'content': changeContent(e.comment), + 'avatar': e.avatar, + 'nick': e.nick, + 'url': e.url + '#' + e.objectId, + 'date': e.insertedAt, + } + }) + saveToLocal.set('waline-newest-comments', JSON.stringify(walineArray), !{theme.newest_comments.storage}/(60*24)) + generateHtml(walineArray) + }).catch(e => { + const $dom = document.querySelector('#card-newest-comments .aside-list') + $dom.innerHTML= "!{_p('aside.card_newest_comments.error')}" + }) + } + + if (typeof Waline === 'function') loadWaline() + else getScript('!{url_for(theme.asset.waline_js)}').then(loadWaline) + } + + const newestCommentInit = () => { + if (document.querySelector('#card-newest-comments .aside-list')) { + const data = saveToLocal.get('waline-newest-comments') + if (data) { + generateHtml(JSON.parse(data)) + } else { + getComment() + } + } + } + + newestCommentInit() + document.addEventListener('pjax:complete', newestCommentInit) + }) diff --git a/themes/butterfly/layout/includes/third-party/pangu.pug b/themes/butterfly/layout/includes/third-party/pangu.pug new file mode 100644 index 0000000..2027ca7 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/pangu.pug @@ -0,0 +1,20 @@ +script. + function panguFn () { + if (typeof pangu === 'object') pangu.autoSpacingPage() + else { + getScript('!{url_for(theme.asset.pangu)}') + .then(() => { + pangu.autoSpacingPage() + }) + } + } + + function panguInit () { + if (!{theme.pangu.field === 'post'}){ + GLOBAL_CONFIG_SITE.isPost && panguFn() + } else { + panguFn() + } + } + + document.addEventListener('DOMContentLoaded', panguInit) diff --git a/themes/butterfly/layout/includes/third-party/pjax.pug b/themes/butterfly/layout/includes/third-party/pjax.pug new file mode 100644 index 0000000..3700010 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/pjax.pug @@ -0,0 +1,87 @@ +- var pjaxExclude = 'a:not([target="_blank"])' +if theme.pjax.exclude + each val in theme.pjax.exclude + - pjaxExclude = pjaxExclude + `:not([href="${val}"])` + +- let pjaxSelectors = ['head > title','#config-diff','#body-wrap','#rightside-config-hide','#rightside-config-show','.js-pjax'] + +- let choose = theme.comments.use +if choose + if theme.Open_Graph_meta && (choose.includes('Livere') || choose.includes('Utterances') || choose.includes('Giscus')) + - pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]') + if choose.includes('Utterances') || choose.includes('Giscus') + - pjaxSelectors.unshift('link[rel="canonical"]') + +script(src=url_for(theme.asset.pjax)) +script. + let pjaxSelectors = !{JSON.stringify(pjaxSelectors)} + + var pjax = new Pjax({ + elements: '!{pjaxExclude}', + selectors: pjaxSelectors, + cacheBust: false, + analytics: !{theme.google_analytics ? true : false}, + scrollRestoration: false + }) + + document.addEventListener('pjax:send', function () { + + // removeEventListener scroll + window.tocScrollFn && window.removeEventListener('scroll', window.tocScrollFn) + window.scrollCollect && window.removeEventListener('scroll', scrollCollect) + + typeof preloader === 'object' && preloader.initLoading() + document.getElementById('rightside').style.cssText = "opacity: ''; transform: ''" + + if (window.aplayers) { + for (let i = 0; i < window.aplayers.length; i++) { + if (!window.aplayers[i].options.fixed) { + window.aplayers[i].destroy() + } + } + } + + typeof typed === 'object' && typed.destroy() + + //reset readmode + const $bodyClassList = document.body.classList + $bodyClassList.contains('read-mode') && $bodyClassList.remove('read-mode') + + typeof disqusjs === 'object' && disqusjs.destroy() + }) + + document.addEventListener('pjax:complete', function () { + window.refreshFn() + + document.querySelectorAll('script[data-pjax]').forEach(item => { + const newScript = document.createElement('script') + const content = item.text || item.textContent || item.innerHTML || "" + Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value)) + newScript.appendChild(document.createTextNode(content)) + item.parentNode.replaceChild(newScript, item) + }) + + GLOBAL_CONFIG.islazyload && window.lazyLoadInstance.update() + + typeof chatBtnFn === 'function' && chatBtnFn() + typeof panguInit === 'function' && panguInit() + + // google analytics + typeof gtag === 'function' && gtag('config', '!{theme.google_analytics}', {'page_path': window.location.pathname}); + + // baidu analytics + typeof _hmt === 'object' && _hmt.push(['_trackPageview',window.location.pathname]); + + typeof loadMeting === 'function' && document.getElementsByClassName('aplayer').length && loadMeting() + + // prismjs + typeof Prism === 'object' && Prism.highlightAll() + + typeof preloader === 'object' && preloader.endLoading() + }) + + document.addEventListener('pjax:error', (e) => { + if (e.request.status === 404) { + pjax.loadUrl('/404.html') + } + }) diff --git a/themes/butterfly/layout/includes/third-party/prismjs.pug b/themes/butterfly/layout/includes/third-party/prismjs.pug new file mode 100644 index 0000000..6af44dd --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/prismjs.pug @@ -0,0 +1,5 @@ +if config.prismjs && config.prismjs.enable && !config.prismjs.preprocess + script(src=url_for(theme.asset.prismjs_js)) + script(src=url_for(theme.asset.prismjs_autoloader)) + if config.prismjs.line_number + script(src=url_for(theme.asset.prismjs_lineNumber_js)) diff --git a/themes/butterfly/layout/includes/third-party/search/algolia.pug b/themes/butterfly/layout/includes/third-party/search/algolia.pug new file mode 100644 index 0000000..8a439e0 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/search/algolia.pug @@ -0,0 +1,18 @@ +#algolia-search + .search-dialog + nav.search-nav + span.search-dialog-title= _p('search.title') + button.search-close-button + i.fas.fa-times + + .search-wrap + #algolia-search-input + hr + #algolia-search-results + #algolia-hits + #algolia-pagination + #algolia-info + .algolia-stats + .algolia-poweredBy + + #search-mask diff --git a/themes/butterfly/layout/includes/third-party/search/index.pug b/themes/butterfly/layout/includes/third-party/search/index.pug new file mode 100644 index 0000000..c1bd03a --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/search/index.pug @@ -0,0 +1,4 @@ +if theme.algolia_search.enable + include ./algolia.pug +else if theme.local_search.enable + include ./local-search.pug \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/search/local-search.pug b/themes/butterfly/layout/includes/third-party/search/local-search.pug new file mode 100644 index 0000000..3d1508f --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/search/local-search.pug @@ -0,0 +1,20 @@ +#local-search + .search-dialog + nav.search-nav + span.search-dialog-title= _p('search.title') + span#loading-status + button.search-close-button + i.fas.fa-times + + #loading-database.is-center + i.fas.fa-spinner.fa-pulse + span= ' ' + _p("search.load_data") + + .search-wrap + #local-search-input + .local-search-box + input(placeholder=_p("search.local_search.input_placeholder") type="text").local-search-box--input + hr + #local-search-results + + #search-mask \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/share/add-this.pug b/themes/butterfly/layout/includes/third-party/share/add-this.pug new file mode 100644 index 0000000..ab44267 --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/share/add-this.pug @@ -0,0 +1,2 @@ +.addthis_inline_share_toolbox +script(src=`//s7.addthis.com/js/300/addthis_widget.js#pubid=${theme.addThis.pubid}` async) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/share/addtoany.pug b/themes/butterfly/layout/includes/third-party/share/addtoany.pug new file mode 100644 index 0000000..d42f3be --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/share/addtoany.pug @@ -0,0 +1,10 @@ +.addtoany + .a2a_kit.a2a_kit_size_32.a2a_default_style + - let addtoanyItem = theme.addtoany.item.split(',') + each name in addtoanyItem + a(class="a2a_button_" + name) + + a.a2a_dd(href="https://www.addtoany.com/share") +script(async src='https://static.addtoany.com/menu/page.js') + + diff --git a/themes/butterfly/layout/includes/third-party/share/index.pug b/themes/butterfly/layout/includes/third-party/share/index.pug new file mode 100644 index 0000000..f28ceab --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/share/index.pug @@ -0,0 +1,7 @@ +.post_share + if theme.addThis.enable + !=partial('includes/third-party/share/add-this', {}, {cache: true}) + else if theme.sharejs.enable + include ./share-js.pug + else if theme.addtoany.enable + !=partial('includes/third-party/share/addtoany', {}, {cache: true}) diff --git a/themes/butterfly/layout/includes/third-party/share/share-js.pug b/themes/butterfly/layout/includes/third-party/share/share-js.pug new file mode 100644 index 0000000..0a566fa --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/share/share-js.pug @@ -0,0 +1,3 @@ +.social-share(data-image=url_for(page.cover|| theme.avatar.img) data-sites= theme.sharejs.sites) +link(rel='stylesheet' href=url_for(theme.asset.sharejs_css) media="print" onload="this.media='all'") +script(src=url_for(theme.asset.sharejs) defer) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/third-party/subtitle.pug b/themes/butterfly/layout/includes/third-party/subtitle.pug new file mode 100644 index 0000000..63915ec --- /dev/null +++ b/themes/butterfly/layout/includes/third-party/subtitle.pug @@ -0,0 +1,128 @@ +- const { effect,loop,source,sub } = theme.subtitle +- let subContent = sub || new Array() + +case source + when 1 + script. + function subtitleType () { + fetch('https://v1.hitokoto.cn') + .then(response => response.json()) + .then(data => { + if (!{effect}) { + const from = '出自 ' + data.from + const sub = !{JSON.stringify(subContent)} + sub.unshift(data.hitokoto, from) + window.typed = new Typed('#subtitle', { + strings: sub, + startDelay: 300, + typeSpeed: 150, + loop: !{loop}, + backSpeed: 50, + }) + } else { + document.getElementById('subtitle').innerHTML = data.hitokoto + } + }) + } + + if (!{effect}) { + if (typeof Typed === 'function') { + subtitleType() + } else { + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) + } + } else { + subtitleType() + } + + when 2 + script. + function subtitleType () { + getScript('https://yijuzhan.com/api/word.php?m=js').then(() => { + const con = str[0] + if (!{effect}) { + const from = '出自 ' + str[1] + const sub = !{JSON.stringify(subContent)} + sub.unshift(con, from) + window.typed = new Typed('#subtitle', { + strings: sub, + startDelay: 300, + typeSpeed: 150, + loop: !{loop}, + backSpeed: 50, + }) + } else { + document.getElementById('subtitle').innerHTML = con + } + }) + } + + if (!{effect}) { + if (typeof Typed === 'function') { + subtitleType() + } else { + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) + } + } else { + subtitleType() + } + + when 3 + script. + function subtitleType () { + getScript('https://sdk.jinrishici.com/v2/browser/jinrishici.js').then(() => { + jinrishici.load(result =>{ + if (!{effect}) { + const sub = !{JSON.stringify(subContent)} + const content = result.data.content + sub.unshift(content) + window.typed = new Typed('#subtitle', { + strings: sub, + startDelay: 300, + typeSpeed: 150, + loop: !{loop}, + backSpeed: 50, + }) + } else { + document.getElementById('subtitle').innerHTML = result.data.content + } + }) + }) + } + + if (!{effect}) { + if (typeof Typed === 'function') { + subtitleType() + } else { + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) + } + } else { + subtitleType() + } + + default + - subContent = subContent.length ? subContent : new Array(config.subtitle) + script. + function subtitleType () { + if (!{effect}) { + window.typed = new Typed("#subtitle", { + strings: !{JSON.stringify(subContent)}, + startDelay: 300, + typeSpeed: 150, + loop: !{loop}, + backSpeed: 50 + }) + } else { + document.getElementById("subtitle").innerHTML = '!{subContent[0]}' + } + } + + if (!{effect}) { + if (typeof Typed === 'function') { + subtitleType() + } else { + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) + } + } else { + subtitleType() + } diff --git a/themes/butterfly/layout/includes/widget/card_ad.pug b/themes/butterfly/layout/includes/widget/card_ad.pug new file mode 100644 index 0000000..b8e00fd --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_ad.pug @@ -0,0 +1,3 @@ +if theme.ad && theme.ad.aside + .card-widget.ads-wrap + != theme.ad.aside diff --git a/themes/butterfly/layout/includes/widget/card_announcement.pug b/themes/butterfly/layout/includes/widget/card_announcement.pug new file mode 100644 index 0000000..9e63627 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_announcement.pug @@ -0,0 +1,6 @@ +if theme.aside.card_announcement.enable + .card-widget.card-announcement + .item-headline + i.fas.fa-bullhorn.fa-shake + span= _p('aside.card_announcement') + .announcement_content!= theme.aside.card_announcement.content \ No newline at end of file diff --git a/themes/butterfly/layout/includes/widget/card_archives.pug b/themes/butterfly/layout/includes/widget/card_archives.pug new file mode 100644 index 0000000..bb0e78e --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_archives.pug @@ -0,0 +1,7 @@ +if theme.aside.card_archives.enable + .card-widget.card-archives + - let type = theme.aside.card_archives.type || 'monthly' + - let format = theme.aside.card_archives.format || 'MMMM YYYY' + - let order = theme.aside.card_archives.order || -1 + - let limit = theme.aside.card_archives.limit === 0 ? 0 : theme.aside.card_archives.limit || 8 + != aside_archives({ type:type, format: format, order: order, limit: limit }) diff --git a/themes/butterfly/layout/includes/widget/card_author.pug b/themes/butterfly/layout/includes/widget/card_author.pug new file mode 100644 index 0000000..de71edb --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_author.pug @@ -0,0 +1,27 @@ +if theme.aside.card_author.enable + .card-widget.card-info + .is-center + .avatar-img + img(src=url_for(theme.avatar.img) onerror=`this.onerror=null;this.src='` + url_for(theme.error_img.flink) + `'` alt="avatar") + .author-info__name= config.author + .author-info__description!= theme.aside.card_author.description || config.description + + .card-info-data.site-data.is-center + a(href=url_for(config.archive_dir) + '/') + .headline= _p('aside.articles') + .length-num= site.posts.length + a(href=url_for(config.tag_dir) + '/') + .headline= _p('aside.tags') + .length-num= site.tags.length + a(href=url_for(config.category_dir) + '/') + .headline= _p('aside.categories') + .length-num= site.categories.length + + if theme.aside.card_author.button.enable + a#card-info-btn(href=theme.aside.card_author.button.link) + i(class=theme.aside.card_author.button.icon) + span=theme.aside.card_author.button.text + + if(theme.social) + .card-info-social-icons.is-center + !=fragment_cache('social', function(){return partial('includes/header/social')}) diff --git a/themes/butterfly/layout/includes/widget/card_bottom_self.pug b/themes/butterfly/layout/includes/widget/card_bottom_self.pug new file mode 100644 index 0000000..e32907d --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_bottom_self.pug @@ -0,0 +1,9 @@ +if site.data.widget && site.data.widget.bottom + each item in site.data.widget.bottom + .card-widget(class=item.class_name id=item.id_name style=item.order ? `order: ${item.order}` : '') + .item-headline + i(class=item.icon) + span=item.name + .item-content + !=item.html + diff --git a/themes/butterfly/layout/includes/widget/card_categories.pug b/themes/butterfly/layout/includes/widget/card_categories.pug new file mode 100644 index 0000000..529ea55 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_categories.pug @@ -0,0 +1,4 @@ +if theme.aside.card_categories.enable + if site.categories.length + .card-widget.card-categories + !=aside_categories({ limit: theme.aside.card_categories.limit === 0 ? 0 : theme.aside.card_categories.limit || 8 , expand: theme.aside.card_categories.expand }) diff --git a/themes/butterfly/layout/includes/widget/card_newest_comment.pug b/themes/butterfly/layout/includes/widget/card_newest_comment.pug new file mode 100644 index 0000000..7350ee7 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_newest_comment.pug @@ -0,0 +1,7 @@ +if theme.newest_comments.enable && !['Livere','Facebook Comments','Giscus'].includes(theme.comments.use[0]) + .card-widget#card-newest-comments + .item-headline + i.fas.fa-comment-dots + span= _p('aside.card_newest_comments.headline') + .aside-list + span= _p('aside.card_newest_comments.loading_text') diff --git a/themes/butterfly/layout/includes/widget/card_post_toc.pug b/themes/butterfly/layout/includes/widget/card_post_toc.pug new file mode 100644 index 0000000..4154221 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_post_toc.pug @@ -0,0 +1,15 @@ +- let tocNumber = page.toc_number !== undefined ? page.toc_number : theme.toc.number +- let tocExpand = page.toc_expand !== undefined ? page.toc_expand : theme.toc.expand +- let tocExpandClass = tocExpand ? 'is-expand' : '' + +#card-toc.card-widget + .item-headline + i.fas.fa-stream + span= _p('aside.card_toc') + span.toc-percentage + + if (page.encrypt == true) + .toc-content.toc-div-class(class=tocExpandClass style="display:none")!=toc(page.origin, {list_number: tocNumber}) + else + .toc-content(class=tocExpandClass)!=toc(page.content, {list_number: tocNumber}) + \ No newline at end of file diff --git a/themes/butterfly/layout/includes/widget/card_recent_post.pug b/themes/butterfly/layout/includes/widget/card_recent_post.pug new file mode 100644 index 0000000..60a0e07 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_recent_post.pug @@ -0,0 +1,24 @@ +if theme.aside.card_recent_post.enable + .card-widget.card-recent-post + .item-headline + i.fas.fa-history + span= _p('aside.card_recent_post') + .aside-list + - let postLimit = theme.aside.card_recent_post.limit === 0 ? site.posts.length : theme.aside.card_recent_post.limit || 5 + - let sort = theme.aside.card_recent_post.sort === 'updated' ? 'updated' : 'date' + - site.posts.sort(sort, -1).limit(postLimit).each(function(article){ + - let link = article.link || article.path + - let title = article.title || _p('no_title') + - let no_cover = article.cover === false || !theme.cover.aside_enable ? 'no-cover' : '' + - let post_cover = article.cover + .aside-list-item(class=no_cover) + if post_cover && theme.cover.aside_enable + a.thumbnail(href=url_for(link) title=title) + img(src=url_for(post_cover) onerror=`this.onerror=null;this.src='${url_for(theme.error_img.post_page)}'` alt=title) + .content + a.title(href=url_for(link) title=title)= title + if theme.aside.card_recent_post.sort === 'updated' + time(datetime=date_xml(article.updated) title=_p('post.updated') + ' ' + full_date(article.updated)) #[=date(article.updated, config.date_format)] + else + time(datetime=date_xml(article.date) title=_p('post.created') + ' ' + full_date(article.date)) #[=date(article.date, config.date_format)] + - }) \ No newline at end of file diff --git a/themes/butterfly/layout/includes/widget/card_tags.pug b/themes/butterfly/layout/includes/widget/card_tags.pug new file mode 100644 index 0000000..de40e90 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_tags.pug @@ -0,0 +1,12 @@ +if theme.aside.card_tags.enable + if site.tags.length + .card-widget.card-tags + .item-headline + i.fas.fa-tags + span= _p('aside.card_tags') + + - let tagLimit = theme.aside.card_tags.limit === 0 ? 0 : theme.aside.card_tags.limit || 40 + if theme.aside.card_tags.color + .card-tag-cloud!= cloudTags({source: site.tags, minfontsize: 1.15, maxfontsize: 1.45, limit: tagLimit, unit: 'em'}) + else + .card-tag-cloud!= tagcloud({min_font: 1.1, max_font: 1.5, amount: tagLimit , color: true, start_color: '#999', end_color: '#99a9bf', unit: 'em'}) diff --git a/themes/butterfly/layout/includes/widget/card_top_self.pug b/themes/butterfly/layout/includes/widget/card_top_self.pug new file mode 100644 index 0000000..6e81059 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_top_self.pug @@ -0,0 +1,8 @@ +if site.data.widget && site.data.widget.top + each item in site.data.widget.top + .card-widget(class=item.class_name id=item.id_name) + .item-headline + i(class=item.icon) + span=item.name + .item-content + !=item.html \ No newline at end of file diff --git a/themes/butterfly/layout/includes/widget/card_webinfo.pug b/themes/butterfly/layout/includes/widget/card_webinfo.pug new file mode 100644 index 0000000..9ff3de0 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/card_webinfo.pug @@ -0,0 +1,35 @@ +if theme.aside.card_webinfo.enable + .card-widget.card-webinfo + .item-headline + i.fas.fa-chart-line + span= _p('aside.card_webinfo.headline') + .webinfo + if theme.aside.card_webinfo.post_count + .webinfo-item + .item-name= _p('aside.card_webinfo.article_name') + " :" + .item-count= site.posts.length + if theme.runtimeshow.enable + .webinfo-item + .item-name= _p('aside.card_webinfo.runtime.name') + " :" + .item-count#runtimeshow(data-publishDate=date_xml(theme.runtimeshow.publish_date)) + i.fa-solid.fa-spinner.fa-spin + if theme.wordcount.enable && theme.wordcount.total_wordcount + .webinfo-item + .item-name=_p('aside.card_webinfo.site_wordcount') + " :" + .item-count=totalcount(site) + if theme.busuanzi.site_uv + .webinfo-item + .item-name= _p('aside.card_webinfo.site_uv_name') + " :" + .item-count#busuanzi_value_site_uv + i.fa-solid.fa-spinner.fa-spin + if theme.busuanzi.site_pv + .webinfo-item + .item-name= _p('aside.card_webinfo.site_pv_name') + " :" + .item-count#busuanzi_value_site_pv + i.fa-solid.fa-spinner.fa-spin + if theme.aside.card_webinfo.last_push_date + .webinfo-item + .item-name= _p('aside.card_webinfo.last_push_date.name') + " :" + .item-count#last-push-date(data-lastPushDate=date_xml(Date.now())) + i.fa-solid.fa-spinner.fa-spin + diff --git a/themes/butterfly/layout/includes/widget/index.pug b/themes/butterfly/layout/includes/widget/index.pug new file mode 100644 index 0000000..5f44ae9 --- /dev/null +++ b/themes/butterfly/layout/includes/widget/index.pug @@ -0,0 +1,34 @@ +#aside-content.aside-content + //- post + if is_post() + - const tocStyle = page.toc_style_simple + - const tocStyleVal = tocStyle === true || tocStyle === false ? tocStyle : theme.toc.style_simple + if showToc && tocStyleVal + .sticky_layout + include ./card_post_toc.pug + else + !=partial('includes/widget/card_author', {}, {cache: true}) + !=partial('includes/widget/card_announcement', {}, {cache: true}) + !=partial('includes/widget/card_top_self', {}, {cache: true}) + .sticky_layout + if showToc + include ./card_post_toc.pug + !=partial('includes/widget/card_recent_post', {}, {cache: true}) + !=partial('includes/widget/card_ad', {}, {cache: true}) + else + //- page + !=partial('includes/widget/card_author', {}, {cache: true}) + !=partial('includes/widget/card_announcement', {}, {cache: true}) + !=partial('includes/widget/card_top_self', {}, {cache: true}) + + .sticky_layout + if showToc + include ./card_post_toc.pug + !=partial('includes/widget/card_recent_post', {}, {cache: true}) + !=partial('includes/widget/card_ad', {}, {cache: true}) + !=partial('includes/widget/card_newest_comment', {}, {cache: true}) + !=partial('includes/widget/card_categories', {}, {cache: true}) + !=partial('includes/widget/card_tags', {}, {cache: true}) + !=partial('includes/widget/card_archives', {}, {cache: true}) + !=partial('includes/widget/card_webinfo', {}, {cache: true}) + !=partial('includes/widget/card_bottom_self', {}, {cache: true}) \ No newline at end of file diff --git a/themes/butterfly/layout/index.pug b/themes/butterfly/layout/index.pug new file mode 100644 index 0000000..2655cb4 --- /dev/null +++ b/themes/butterfly/layout/index.pug @@ -0,0 +1,7 @@ +extends includes/layout.pug + +block content + include ./includes/mixins/post-ui.pug + #recent-posts.recent-posts + +postUI + include includes/pagination.pug \ No newline at end of file diff --git a/themes/butterfly/layout/page.pug b/themes/butterfly/layout/page.pug new file mode 100644 index 0000000..6c810ef --- /dev/null +++ b/themes/butterfly/layout/page.pug @@ -0,0 +1,20 @@ +extends includes/layout.pug + +block content + #page + if top_img === false + h1.page-title= page.title + + case page.type + when 'tags' + include includes/page/tags.pug + when 'link' + include includes/page/flink.pug + when 'categories' + include includes/page/categories.pug + default + include includes/page/default-page.pug + + if page.comments !== false && theme.comments && theme.comments.use + - var commentsJsLoad = true + !=partial('includes/third-party/comments/index', {}, {cache: true}) \ No newline at end of file diff --git a/themes/butterfly/layout/post.pug b/themes/butterfly/layout/post.pug new file mode 100644 index 0000000..f54ab7a --- /dev/null +++ b/themes/butterfly/layout/post.pug @@ -0,0 +1,32 @@ +extends includes/layout.pug + +block content + #post + if top_img === false + include includes/header/post-info.pug + + article#article-container.post-content!=page.content + include includes/post/post-copyright.pug + .tag_share + if (theme.post_meta.post.tags) + .post-meta__tag-list + each item, index in page.tags.data + a(href=url_for(item.path)).post-meta__tags #[=item.name] + include includes/third-party/share/index.pug + + if theme.reward.enable && theme.reward.QR_code + !=partial('includes/post/reward', {}, {cache: true}) + + //- ad + if theme.ad && theme.ad.post + .ads-wrap!=theme.ad.post + + if theme.post_pagination + include includes/pagination.pug + if theme.related_post && theme.related_post.enable + != related_posts(page,site.posts) + + if page.comments !== false && theme.comments && theme.comments.use + - var commentsJsLoad = true + !=partial('includes/third-party/comments/index', {}, {cache: true}) + \ No newline at end of file diff --git a/themes/butterfly/layout/tag.pug b/themes/butterfly/layout/tag.pug new file mode 100644 index 0000000..9f99658 --- /dev/null +++ b/themes/butterfly/layout/tag.pug @@ -0,0 +1,14 @@ +extends includes/layout.pug + +block content + if theme.tag_ui == 'index' + include ./includes/mixins/post-ui.pug + #recent-posts.recent-posts + +postUI + include includes/pagination.pug + else + include ./includes/mixins/article-sort.pug + #tag + .article-sort-title= _p('page.tag') + ' - ' + page.tag + +articleSort(page.posts) + include includes/pagination.pug \ No newline at end of file diff --git a/themes/butterfly/package.json b/themes/butterfly/package.json new file mode 100644 index 0000000..d5a1144 --- /dev/null +++ b/themes/butterfly/package.json @@ -0,0 +1,32 @@ +{ + "name": "hexo-theme-butterfly", + "version": "4.3.1", + "description": "A Simple and Card UI Design theme for Hexo", + "main": "package.json", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "hexo", + "theme", + "butterfly", + "Card UI Design", + "Jerry", + "hexo-theme-butterfly" + ], + "repository": { + "type" : "git", + "url" : "https://github.com/jerryc127/hexo-theme-butterfly.git" + }, + "bugs": { + "url": "https://github.com/jerryc127/hexo-theme-butterfly/issues", + "email": "my@crazywong.com" + }, + "dependencies": { + "hexo-renderer-stylus": "^2.1.0", + "hexo-renderer-pug": "^3.0.0" + }, + "homepage": "https://butterfly.js.org/", + "author": "Jerry ", + "license": "Apache-2.0" +} diff --git a/themes/butterfly/plugins.yml b/themes/butterfly/plugins.yml new file mode 100644 index 0000000..c0d3eae --- /dev/null +++ b/themes/butterfly/plugins.yml @@ -0,0 +1,182 @@ +algolia_search_v4: + name: algoliasearch + file: dist/algoliasearch-lite.umd.js + version: 4.13.1 +instantsearch_v4: + name: instantsearch.js + file: dist/instantsearch.production.min.js + version: 4.42.0 +pjax: + name: pjax + file: pjax.min.js + version: 0.2.8 +gitalk: + name: gitalk + file: dist/gitalk.min.js + version: 1.7.2 +gitalk_css: + name: gitalk + file: dist/gitalk.css + version: 1.7.2 +blueimp_md5: + name: blueimp-md5 + file: js/md5.min.js + version: 2.19.0 +valine: + name: valine + file: dist/Valine.min.js + version: 1.4.18 +disqusjs: + name: disqusjs + file: dist/browser/disqusjs.es2015.umd.min.js + version: 3.0.1 +disqusjs_css: + name: disqusjs + file: dist/browser/styles/disqusjs.css + version: 3.0.1 +twikoo: + name: twikoo + file: dist/twikoo.all.min.js + version: 1.5.11 +waline_js: + name: '@waline/client' + file: dist/waline.js + other_name: waline + version: 2.6.1 +waline_css: + name: '@waline/client' + file: dist/waline.css + other_name: waline + version: 2.6.1 +sharejs: + name: butterfly-extsrc + file: sharejs/dist/js/social-share.min.js + version: 1.1.3 +sharejs_css: + name: butterfly-extsrc + file: sharejs/dist/css/share.min.css + version: 1.1.3 +mathjax: + name: mathjax + file: es5/tex-mml-chtml.js + version: 3.2.2 +katex: + name: katex + file: dist/katex.min.css + other_name: KaTeX + version: 0.16.0 +katex_copytex: + name: katex + file: dist/contrib/copy-tex.min.js + other_name: KaTeX + version: 0.16.0 +mermaid: + name: mermaid + file: dist/mermaid.min.js + version: 9.1.2 +canvas_ribbon: + name: butterfly-extsrc + file: dist/canvas-ribbon.min.js + version: 1.1.3 +canvas_fluttering_ribbon: + name: butterfly-extsrc + file: dist/canvas-fluttering-ribbon.min.js + version: 1.1.3 +canvas_nest: + name: butterfly-extsrc + file: dist/canvas-nest.min.js + version: 1.1.3 +activate_power_mode: + name: butterfly-extsrc + file: dist/activate-power-mode.min.js + version: 1.1.3 +fireworks: + name: butterfly-extsrc + file: dist/fireworks.min.js + version: 1.1.3 +click_heart: + name: butterfly-extsrc + file: dist/click-heart.min.js + version: 1.1.3 +ClickShowText: + name: butterfly-extsrc + file: dist/click-show-text.min.js + version: 1.1.3 +lazyload: + name: vanilla-lazyload + file: dist/lazyload.iife.min.js + version: 17.3.1 +instantpage: + name: instant.page + file: instantpage.js + version: 5.1.0 +typed: + name: typed.js + file: lib/typed.min.js + version: 2.0.12 +pangu: + name: pangu + file: dist/browser/pangu.min.js + version: 4.0.7 +fancybox_css_v4: + name: '@fancyapps/ui' + file: dist/fancybox.css + version: 4.0.27 + other_name: fancyapps-ui +fancybox_v4: + name: '@fancyapps/ui' + file: dist/fancybox.umd.js + version: 4.0.27 + other_name: fancyapps-ui +medium_zoom: + name: medium-zoom + file: dist/medium-zoom.min.js + version: 1.0.6 +snackbar_css: + name: node-snackbar + file: dist/snackbar.min.css + version: 0.1.16 +snackbar: + name: node-snackbar + file: dist/snackbar.min.js + version: 0.1.16 +fontawesomeV6: + name: '@fortawesome/fontawesome-free' + file: css/all.min.css + other_name: font-awesome + version: 6.1.1 +flickr_justified_gallery_js: + name: flickr-justified-gallery + file: dist/fjGallery.min.js + version: 2.1.2 +flickr_justified_gallery_css: + name: flickr-justified-gallery + file: dist/fjGallery.css + version: 2.1.2 +aplayer_css: + name: aplayer + file: dist/APlayer.min.css + version: 1.10.1 +aplayer_js: + name: aplayer + file: dist/APlayer.min.js + version: 1.10.1 +meting_js: + name: butterfly-extsrc + file: metingjs/dist/Meting.min.js + version: 1.1.3 +prismjs_js: + name: prismjs + file: prism.js + other_name: prism + version: 1.28.0 +prismjs_lineNumber_js: + name: prismjs + file: plugins/line-numbers/prism-line-numbers.min.js + other_name: prism + version: 1.28.0 +prismjs_autoloader: + name: prismjs + file: plugins/autoloader/prism-autoloader.min.js + other_name: prism + version: 1.28.0 \ No newline at end of file diff --git a/themes/butterfly/scripts/events/404.js b/themes/butterfly/scripts/events/404.js new file mode 100644 index 0000000..02491ce --- /dev/null +++ b/themes/butterfly/scripts/events/404.js @@ -0,0 +1,18 @@ +/** + * Butterfly + * 404 error page + */ + +'use strict' + +hexo.extend.generator.register('404', function (locals) { + if (!hexo.theme.config.error_404.enable) return + return { + path: '404.html', + layout: ['page'], + data: { + type: '404', + top_img: false + } + } +}) diff --git a/themes/butterfly/scripts/events/cdn.js b/themes/butterfly/scripts/events/cdn.js new file mode 100644 index 0000000..7d77e63 --- /dev/null +++ b/themes/butterfly/scripts/events/cdn.js @@ -0,0 +1,94 @@ +/** + * Butterfly + * Merge CDN + */ + +'use strict' + +const { version } = require('../../package.json') +const path = require('path') + +hexo.extend.filter.register('before_generate', () => { + const themeConfig = hexo.theme.config + const { CDN } = themeConfig + + const thirdPartySrc = hexo.render.renderSync({ path: path.join(hexo.theme_dir,'/plugins.yml'), engine: 'yaml'}) + const internalSrc = { + main: { + name: 'hexo-theme-butterfly', + file: 'js/main.js', + version + }, + utils: { + name: 'hexo-theme-butterfly', + file: 'js/utils.js', + version + }, + translate: { + name: 'hexo-theme-butterfly', + file: 'js/tw_cn.js', + version + }, + local_search: { + name: 'hexo-theme-butterfly', + file: 'js/search/local-search.js', + version + }, + algolia_js: { + name: 'hexo-theme-butterfly', + file: 'js/search/algolia.js', + version + } + } + + const minFile = (file) => { + return file.replace(/(? '.min' + ext) + } + + const createCDNLink = (data, type, cond = '') => { + Object.keys(data).map(key => { + let { name, version, file, other_name } = data[key] + + const min_file = minFile(file) + const cdnjs_name = other_name || name + const cdnjs_file = file.replace(/^[lib|dist]*\/|browser\//g, '') + const min_cdnjs_file = minFile(cdnjs_file) + if (cond === 'internal') file = `source/${file}` + const verType = CDN.version ? `@${version}` : '' + + const value = { + version, + name, + file, + cdnjs_file, + min_file, + min_cdnjs_file, + cdnjs_name + } + const cdnSource = { + local: cond === 'internal' ? cdnjs_file : `/pluginsSrc/${name}/${file}`, + jsdelivr: `https://cdn.jsdelivr.net/npm/${name}${verType}/${min_file}`, + unpkg: `https://unpkg.com/${name}${verType}/${file}`, + cdnjs: `https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${min_cdnjs_file}`, + custom: (CDN.custom_format || '').replace(/\$\{(.+?)\}/g, (match, $1) => value[$1]) + } + + data[key] = cdnSource[type] + }) + + if (cond === 'internal') data['main_css'] = 'css/index.css' + return data + } + + // delete null value + const deleteNullValue = obj => { + if (!obj) return + for (const i in obj) { + obj[i] === null && delete obj[i] + } + return obj + } + + themeConfig.asset = Object.assign(createCDNLink(internalSrc,CDN.internal_provider,'internal'), + createCDNLink(thirdPartySrc,CDN.third_party_provider), deleteNullValue(CDN.option)) +}) diff --git a/themes/butterfly/scripts/events/comment.js b/themes/butterfly/scripts/events/comment.js new file mode 100644 index 0000000..b1ef856 --- /dev/null +++ b/themes/butterfly/scripts/events/comment.js @@ -0,0 +1,14 @@ +/** + * Capitalize the first letter of comment name + */ + +hexo.extend.filter.register('before_generate', () => { + const themeConfig = hexo.theme.config + let { use } = themeConfig.comments + if (!use) return + if (typeof use === 'string') { + use = use.split(',') + } + const newArray = use.map(item => item.toLowerCase().replace(/\b[a-z]/g, s => s.toUpperCase())) + themeConfig.comments.use = newArray +}) \ No newline at end of file diff --git a/themes/butterfly/scripts/events/init.js b/themes/butterfly/scripts/events/init.js new file mode 100644 index 0000000..69c2807 --- /dev/null +++ b/themes/butterfly/scripts/events/init.js @@ -0,0 +1,21 @@ +const logger = require('hexo-log')() + +hexo.extend.filter.register('before_generate', () => { + // Get first two digits of the Hexo version number + const hexoVer = hexo.version.replace(/(^.*\..*)\..*/, '$1') + + if (hexoVer < 5.3) { + logger.error('Please update Hexo to V5.3.0 or higher!') + logger.error('請把 Hexo 升級到 V5.3.0 或更高的版本!') + process.exit(-1) + } + + if (hexo.locals.get) { + const data = hexo.locals.get('data') + if (data && data.butterfly) { + logger.error(" 'butterfly.yml' is deprecated. Please use '_config.butterfly.yml' ") + logger.error(" 'butterfly.yml' 已經棄用,請使用 '_config.butterfly.yml' ") + process.exit(-1) + } + } +}) diff --git a/themes/butterfly/scripts/events/stylus.js b/themes/butterfly/scripts/events/stylus.js new file mode 100644 index 0000000..4b95538 --- /dev/null +++ b/themes/butterfly/scripts/events/stylus.js @@ -0,0 +1,15 @@ +/** + * stylus + */ + +'use strict' + +hexo.extend.filter.register('stylus:renderer', function (style) { + const { highlight, prismjs } = hexo.config + style + .define('$highlight_enable', highlight && highlight.enable) + .define('$highlight_line_number', highlight && highlight.line_number) + .define('$prismjs_enable', prismjs && prismjs.enable) + .define('$prismjs_line_number', prismjs && prismjs.line_number) + // .import(this.source_dir.replace(/\\/g, '/') + '_data/css/*') +}) diff --git a/themes/butterfly/scripts/events/welcome.js b/themes/butterfly/scripts/events/welcome.js new file mode 100644 index 0000000..77eb662 --- /dev/null +++ b/themes/butterfly/scripts/events/welcome.js @@ -0,0 +1,17 @@ +const logger = require('hexo-log')() + +hexo.on('ready', () => { + const { version } = require('../../package.json') + logger.info(` + =================================================================== + + ##### # # ##### ##### ###### ##### ###### # # # + # # # # # # # # # # # # # + ##### # # # # ##### # # ##### # # + # # # # # # # ##### # # # + # # # # # # # # # # # # + ##### #### # # ###### # # # ###### # + + ${version} + ===================================================================`) +}) diff --git a/themes/butterfly/scripts/filters/post_lazyload.js b/themes/butterfly/scripts/filters/post_lazyload.js new file mode 100644 index 0000000..c4267d1 --- /dev/null +++ b/themes/butterfly/scripts/filters/post_lazyload.js @@ -0,0 +1,29 @@ +/** + * Butterfly + * lazyload + * replace src to data-lazy-src + */ + +'use strict' + +const urlFor = require('hexo-util').url_for.bind(hexo) + +function lazyload (htmlContent) { + const bg = hexo.theme.config.lazyload.placeholder ? urlFor(hexo.theme.config.lazyload.placeholder) : 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' + return htmlContent.replace(/( { + const config = hexo.theme.config.lazyload + if (!config.enable) return + if (config.field !== 'post') return + data.content = lazyload.call(this, data.content) + return data +}) diff --git a/themes/butterfly/scripts/filters/random_cover.js b/themes/butterfly/scripts/filters/random_cover.js new file mode 100644 index 0000000..47ed4fe --- /dev/null +++ b/themes/butterfly/scripts/filters/random_cover.js @@ -0,0 +1,45 @@ +/** + * Butterfly + * ramdom cover + */ + +'use strict' + +hexo.extend.filter.register('before_post_render', function (data) { + const { config } = this + if (config.post_asset_folder) { + const imgTestReg = /\.(png|jpe?g|gif|svg|webp)(\?.*)?$/ + const topImg = data.top_img + const cover = data.cover + if (topImg && topImg.indexOf('/') === -1 && imgTestReg.test(topImg)) data.top_img = data.path + topImg + if (cover && cover.indexOf('/') === -1) data.cover = data.path + cover + } + + if (data.cover === false) { + data.randomcover = randomCover() + return data + } + + data.cover = data.cover || randomCover() + return data +}) + +function randomCover () { + const theme = hexo.theme.config + let cover + let num + + if (theme.cover && theme.cover.default_cover) { + if (!Array.isArray(theme.cover.default_cover)) { + cover = theme.cover.default_cover + return cover + } else { + num = Math.floor(Math.random() * theme.cover.default_cover.length) + cover = theme.cover.default_cover[num] + return cover + } + } else { + cover = theme.default_top_img || 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' + return cover + } +} diff --git a/themes/butterfly/scripts/helpers/aside_archives.js b/themes/butterfly/scripts/helpers/aside_archives.js new file mode 100644 index 0000000..779c1d4 --- /dev/null +++ b/themes/butterfly/scripts/helpers/aside_archives.js @@ -0,0 +1,113 @@ +/** + * Butterfly + * for aside archives + */ + +'use strict' + +hexo.extend.helper.register('aside_archives', function (options = {}) { + const { config } = this + const archiveDir = config.archive_dir + const { timezone } = config + const lang = toMomentLocale(this.page.lang || this.page.language || config.language) + let { format } = options + const type = options.type || 'monthly' + const { transform } = options + const showCount = Object.prototype.hasOwnProperty.call(options, 'show_count') ? options.show_count : true + const order = options.order || -1 + const compareFunc = type === 'monthly' + ? (yearA, monthA, yearB, monthB) => yearA === yearB && monthA === monthB + : (yearA, monthA, yearB, monthB) => yearA === yearB + const limit = options.limit + let result = '' + + if (!format) { + format = type === 'monthly' ? 'MMMM YYYY' : 'YYYY' + } + + const posts = this.site.posts.sort('date', order) + if (!posts.length) return result + + const data = [] + let length = 0 + + posts.forEach(post => { + // Clone the date object to avoid pollution + let date = post.date.clone() + + if (timezone) date = date.tz(timezone) + + const year = date.year() + const month = date.month() + 1 + const lastData = data[length - 1] + + if (!lastData || !compareFunc(lastData.year, lastData.month, year, month)) { + if (lang) date = date.locale(lang) + const name = date.format(format) + length = data.push({ + name, + year, + month, + count: 1 + }) + } else { + lastData.count++ + } + }) + + const link = item => { + let url = `${archiveDir}/${item.year}/` + + if (type === 'monthly') { + if (item.month < 10) url += '0' + url += `${item.month}/` + } + + return this.url_for(url) + } + + const len = data.length + const Judge = limit === 0 ? len : Math.min(len, limit) + + result += `
${this._p('aside.card_archives')}` + + if (len > Judge) { + result += ` + ` + } + + result += '
' + return result +}) + +const toMomentLocale = function (lang) { + if (lang === undefined) { + return undefined + } + + // moment.locale('') equals moment.locale('en') + // moment.locale(null) equals moment.locale('en') + if (!lang || lang === 'en' || lang === 'default') { + return 'en' + } + return lang.toLowerCase().replace('_', '-') +} diff --git a/themes/butterfly/scripts/helpers/aside_categories.js b/themes/butterfly/scripts/helpers/aside_categories.js new file mode 100644 index 0000000..0e60b8e --- /dev/null +++ b/themes/butterfly/scripts/helpers/aside_categories.js @@ -0,0 +1,97 @@ +/** + * Butterfly + * for aside categories + */ + +'use strict' + +hexo.extend.helper.register('aside_categories', function (categories, options) { + if (!options && (!categories || !Object.prototype.hasOwnProperty.call(categories, 'length')) + ) { + options = categories + categories = this.site.categories + } + + if (!categories || !categories.length) return '' + options = options || {} + const { config } = this + const showCount = Object.prototype.hasOwnProperty.call(options, 'show_count') + ? options.show_count + : true + const depth = options.depth ? parseInt(options.depth, 10) : 0 + const orderby = options.orderby || 'name' + const order = options.order || 1 + const categoryDir = this.url_for(config.category_dir) + const limit = options.limit === 0 ? categories.length : options.limit + const isExpand = options.expand !== 'none' + const expandClass = isExpand && options.expand === true ? 'expand' : '' + const buttonLabel = this._p('aside.more_button') + const prepareQuery = (parent) => { + const query = {} + if (parent) { query.parent = parent } else { query.parent = { $exists: false } } + return categories.find(query).sort(orderby, order).filter((cat) => cat.length) + } + + const hierarchicalList = (t, level, parent, topparent = true) => { + let result = '' + const isTopParent = topparent + if (t > 0) { + prepareQuery(parent).forEach((cat, i) => { + if (t > 0) { + t = t - 1 + let child + if (!depth || level + 1 < depth) { + const childList = hierarchicalList(t, level + 1, cat._id, false) + child = childList[0] + t = childList[1] + } + + const parentClass = isExpand && isTopParent && child ? 'parent' : '' + + result += `
  • ` + + result += `` + + result += `${cat.name}` + + if (showCount) { + result += `${cat.length}` + } + + if (isExpand && isTopParent && child) { + result += `` + } + + result += '' + + if (child) { + result += `
      ${child}
    ` + } + + result += '
  • ' + } + }) + } + + return [result, t] + } + + const list = hierarchicalList(limit, 0) + + const moreButton = function () { + if (categories.length <= limit) return '' + const moreHtml = ` + ` + + return moreHtml + } + + return `
    + + ${this._p('aside.card_categories')} + ${moreButton()} +
    +
      + ${list[0]} +
    ` +}) diff --git a/themes/butterfly/scripts/helpers/findArchiveLength.js b/themes/butterfly/scripts/helpers/findArchiveLength.js new file mode 100644 index 0000000..e55dc0f --- /dev/null +++ b/themes/butterfly/scripts/helpers/findArchiveLength.js @@ -0,0 +1,58 @@ +hexo.extend.helper.register('findArchiveLength', function (func) { + const allPostsLength = this.site.posts.length; + if (hexo.config.archive_generator && hexo.config.archive_generator.enable === false ) return allPostsLength + const { yearly, monthly, daily } = hexo.config.archive_generator + const { year, month, day } = this.page + if (yearly === false || !year) return allPostsLength + + const posts = this.site.posts.sort('date') + + const compareFunc = (type,y1,m1,d1,y2,m2,d2) => { + if (type === 'year') { + return y1 === y2 + } else if (type === 'month') { + return y1 === y2 && m1 === m2 + } else if (type === 'day') { + return y1 === y2 && m1 === m2 && d1 === d2 + } + } + + const generateDateObj = (type) => { + let dateObj = [] + let length = 0 + + posts.forEach(post => { + let date = post.date.clone() + const year = date.year() + const month = date.month() + 1 + const day = date.date() + let lastData = dateObj[length - 1] + + if (!lastData || !compareFunc(type, lastData.year, lastData.month, lastData.day, year, month, day)) { + const name = type === 'year' ? year : type === 'month' ? `${year}-${month}` : `${year}-${month}-${day}` + length = dateObj.push({ + name, + year, + month, + day, + count: 1 + }) + } else { + lastData.count++ + } + }); + + return dateObj + } + + const data = func('createArchiveObj', ()=> { + const yearObj = yearly ? generateDateObj('year') : [] + const monthObj = monthly ? generateDateObj('month') : [] + const dayObj = daily ? generateDateObj('day') : [] + const fullObj = [...yearObj, ...monthObj, ...dayObj] + return fullObj + }) + + const name = month ? day ? `${year}-${month}-${day}` : `${year}-${month}` : year + return data.find(item => item.name === name).count +}) \ No newline at end of file diff --git a/themes/butterfly/scripts/helpers/inject_head_js.js b/themes/butterfly/scripts/helpers/inject_head_js.js new file mode 100644 index 0000000..9c845d4 --- /dev/null +++ b/themes/butterfly/scripts/helpers/inject_head_js.js @@ -0,0 +1,148 @@ +/** + * Butterfly + * inject js to head + */ + +'use strict' + +hexo.extend.helper.register('inject_head_js', function () { + const { darkmode, aside } = this.theme + + const { theme_color } = hexo.theme.config + const themeColorLight = theme_color && theme_color.enable && theme_color.meta_theme_color_light || '#ffffff' + const themeColorDark = theme_color && theme_color.enable && theme_color.meta_theme_color_dark || '#0d0d0d' + + const localStore = ` + win.saveToLocal = { + set: function setWithExpiry(key, value, ttl) { + if (ttl === 0) return + const now = new Date() + const expiryDay = ttl * 86400000 + const item = { + value: value, + expiry: now.getTime() + expiryDay, + } + localStorage.setItem(key, JSON.stringify(item)) + }, + + get: function getWithExpiry(key) { + const itemStr = localStorage.getItem(key) + + if (!itemStr) { + return undefined + } + const item = JSON.parse(itemStr) + const now = new Date() + + if (now.getTime() > item.expiry) { + localStorage.removeItem(key) + return undefined + } + return item.value + } + } + ` + + // https://stackoverflow.com/questions/16839698/jquery-getscript-alternative-in-native-javascript + const getScript = ` + win.getScript = url => new Promise((resolve, reject) => { + const script = document.createElement('script') + script.src = url + script.async = true + script.onerror = reject + script.onload = script.onreadystatechange = function() { + const loadState = this.readyState + if (loadState && loadState !== 'loaded' && loadState !== 'complete') return + script.onload = script.onreadystatechange = null + resolve() + } + document.head.appendChild(script) + }) + ` + + let darkmodeJs = '' + if (darkmode.enable) { + darkmodeJs = ` + win.activateDarkMode = function () { + document.documentElement.setAttribute('data-theme', 'dark') + if (document.querySelector('meta[name="theme-color"]') !== null) { + document.querySelector('meta[name="theme-color"]').setAttribute('content', '${themeColorDark}') + } + } + win.activateLightMode = function () { + document.documentElement.setAttribute('data-theme', 'light') + if (document.querySelector('meta[name="theme-color"]') !== null) { + document.querySelector('meta[name="theme-color"]').setAttribute('content', '${themeColorLight}') + } + } + const t = saveToLocal.get('theme') + ` + + const autoChangeMode = darkmode.autoChangeMode + + if (autoChangeMode === 1) { + darkmodeJs += ` + const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches + const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches + const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches + const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified + + if (t === undefined) { + if (isLightMode) activateLightMode() + else if (isDarkMode) activateDarkMode() + else if (isNotSpecified || hasNoSupport) { + const now = new Date() + const hour = now.getHours() + const isNight = hour <= 6 || hour >= 18 + isNight ? activateDarkMode() : activateLightMode() + } + window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) { + if (saveToLocal.get('theme') === undefined) { + e.matches ? activateDarkMode() : activateLightMode() + } + }) + } else if (t === 'light') activateLightMode() + else activateDarkMode() + ` + } else if (autoChangeMode === 2) { + darkmodeJs += ` + const now = new Date() + const hour = now.getHours() + const isNight = hour <= 6 || hour >= 18 + if (t === undefined) isNight ? activateDarkMode() : activateLightMode() + else if (t === 'light') activateLightMode() + else activateDarkMode() + ` + } else { + darkmodeJs += ` + if (t === 'dark') activateDarkMode() + else if (t === 'light') activateLightMode() + ` + } + } + + let asideStatus = '' + if (aside.enable && aside.button) { + asideStatus = ` + const asideStatus = saveToLocal.get('aside-status') + if (asideStatus !== undefined) { + if (asideStatus === 'hide') { + document.documentElement.classList.add('hide-aside') + } else { + document.documentElement.classList.remove('hide-aside') + } + } + ` + } + + const detectApple = ` + const detectApple = () => { + if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){ + document.documentElement.classList.add('apple') + } + } + detectApple() + ` + + return `` +}) diff --git a/themes/butterfly/scripts/helpers/page.js b/themes/butterfly/scripts/helpers/page.js new file mode 100644 index 0000000..aa2b74b --- /dev/null +++ b/themes/butterfly/scripts/helpers/page.js @@ -0,0 +1,97 @@ +/** + * Butterfly + * @example + * page_description() + * cloudTags(source, minfontsize, maxfontsize, limit) + */ + +'use strict' + +const { stripHTML, escapeHTML, prettyUrls } = require('hexo-util') +const crypto = require('crypto') + +hexo.extend.helper.register('page_description', function () { + const { config, page } = this + let description = page.description || page.content || page.title || config.description + + if (description) { + description = escapeHTML(stripHTML(description).substring(0, 150) + .trim() + ).replace(/\n/g, ' ') + return description + } +}) + +hexo.extend.helper.register('cloudTags', function (options = {}) { + const env = this + let source = options.source + const minfontsize = options.minfontsize + const maxfontsize = options.maxfontsize + const limit = options.limit + const unit = options.unit || 'px' + + let result = '' + if (limit > 0) { + source = source.limit(limit) + } + + const sizes = [] + source.sort('length').forEach(tag => { + const { length } = tag + if (sizes.includes(length)) return + sizes.push(length) + }) + + const length = sizes.length - 1 + source.forEach(tag => { + const ratio = length ? sizes.indexOf(tag.length) / length : 0 + const size = minfontsize + ((maxfontsize - minfontsize) * ratio) + let style = `font-size: ${parseFloat(size.toFixed(2))}${unit};` + const color = 'rgb(' + Math.floor(Math.random() * 201) + ', ' + Math.floor(Math.random() * 201) + ', ' + Math.floor(Math.random() * 201) + ')' // 0,0,0 -> 200,200,200 + style += ` color: ${color}` + result += `${tag.name}` + }) + return result +}) + +hexo.extend.helper.register('urlNoIndex', function (url = null) { + return prettyUrls(url || this.url, { trailing_index: false, trailing_html: false }) +}) + +hexo.extend.helper.register('md5', function (path) { + return crypto.createHash('md5').update(decodeURI(this.url_for(path))).digest('hex') +}) + +hexo.extend.helper.register('injectHtml', function (data) { + let result = '' + if (!data) return '' + for (let i = 0; i < data.length; i++) { + result += data[i] + } + return result +}) + +hexo.extend.helper.register('findArchivesTitle', function (page, menu, date) { + if (page.year) { + const dateStr = page.month ? `${page.year}-${page.month}` : `${page.year}` + const date_format = page.month ? hexo.theme.config.aside.card_archives.format : 'YYYY' + return date(dateStr, date_format) + } + + const defaultTitle = this._p('page.archives') + if (!menu) return defaultTitle + + const loop = (m) => { + for (const key in m) { + if (typeof m[key] === 'object') { + loop(m[key]) + } + + if (/\/archives\//.test(m[key])) { + return key + } + } + } + + return loop(menu) || defaultTitle +}) diff --git a/themes/butterfly/scripts/helpers/related_post.js b/themes/butterfly/scripts/helpers/related_post.js new file mode 100644 index 0000000..6809ac7 --- /dev/null +++ b/themes/butterfly/scripts/helpers/related_post.js @@ -0,0 +1,99 @@ +/** + * Butterfly + * Related Posts + * According the tag + */ + +'use strict' + +hexo.extend.helper.register('related_posts', function (currentPost, allPosts) { + let relatedPosts = [] + currentPost.tags.forEach(function (tag) { + allPosts.forEach(function (post) { + if (isTagRelated(tag.name, post.tags)) { + const relatedPost = { + title: post.title, + path: post.path, + cover: post.cover, + randomcover: post.randomcover, + weight: 1, + updated: post.updated, + created: post.date + } + const index = findItem(relatedPosts, 'path', post.path) + if (index !== -1) { + relatedPosts[index].weight += 1 + } else { + if (currentPost.path !== post.path) { + relatedPosts.push(relatedPost) + } + } + } + }) + }) + if (relatedPosts.length === 0) { + return '' + } + let result = '' + const hexoConfig = hexo.config + const config = hexo.theme.config + + const limitNum = config.related_post.limit || 6 + const dateType = config.related_post.date_type || 'created' + const headlineLang = this._p('post.recommend') + + relatedPosts = relatedPosts.sort(compare('weight')) + + if (relatedPosts.length > 0) { + result += '

    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 Nh1(xH27jd+ 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 literal 0 HcmV?d00001 diff --git a/source/img/wechatpay.png b/source/img/wechatpay.png new file mode 100644 index 0000000000000000000000000000000000000000..266827adfac8d92dc33598b7b633056ec5092d12 GIT binary patch literal 48800 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 + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false \ No newline at end of file diff --git a/themes/butterfly/.github/workflows/publish.yml b/themes/butterfly/.github/workflows/publish.yml new file mode 100644 index 0000000..d68365d --- /dev/null +++ b/themes/butterfly/.github/workflows/publish.yml @@ -0,0 +1,19 @@ +name: npm publish + +on: + release: + types: [created] +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + # Setup .npmrc file to publish to npm + - uses: actions/setup-node@v1 + with: + node-version: '12.x' + registry-url: 'https://registry.npmjs.org' + - run: npm install + - run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/themes/butterfly/LICENSE b/themes/butterfly/LICENSE new file mode 100644 index 0000000..7a4a3ea --- /dev/null +++ b/themes/butterfly/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/themes/butterfly/README.md b/themes/butterfly/README.md new file mode 100644 index 0000000..2c7c7b2 --- /dev/null +++ b/themes/butterfly/README.md @@ -0,0 +1,113 @@ +