From 8534eaffcdf24e4401e66716d3ae2e122cbb67c7 Mon Sep 17 00:00:00 2001 From: <> Date: Mon, 11 Dec 2023 07:32:05 +0000 Subject: [PATCH] Deployed f6157ac with MkDocs version: 1.5.3 --- .../index.html" | 5 +++-- search/search_index.json | 2 +- sitemap.xml.gz | Bin 1176 -> 1176 bytes 3 files changed, 4 insertions(+), 3 deletions(-) diff --git "a/blog/\346\223\215\344\275\234\347\263\273\347\273\237---lab5-demand-paging/index.html" "b/blog/\346\223\215\344\275\234\347\263\273\347\273\237---lab5-demand-paging/index.html" index f183d62c..05911abf 100644 --- "a/blog/\346\223\215\344\275\234\347\263\273\347\273\237---lab5-demand-paging/index.html" +++ "b/blog/\346\223\215\344\275\234\347\263\273\347\273\237---lab5-demand-paging/index.html" @@ -1283,9 +1283,10 @@

PAGE FAULTvmas

-

在kernel终,我们分配了一整页,其中的低地址放了个task_struct,高地址就是栈顶(如下图,来自实验文档)。所以我们要稍微限制一下vmas的大小,不能把分配的一页全给了,还要留点给栈用。

+

在kernel终,我们分配了一整页,其中的低地址放了个task_struct,高地址就是栈顶(如下图,来自实验文档)。所以我们要稍微限制一下vmas的大小,不能把分配的一页全给用了,还要留点给栈用。

 1
  2
  3
@@ -1354,7 +1355,7 @@ 

vmas - December 10, 2023 + December 11, 2023 diff --git a/search/search_index.json b/search/search_index.json index 3265917b..1cb9678e 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Index","text":""},{"location":"#hi","title":"\uff08 \u0e51> \u0602 < \uff09 Hi!","text":"

\u200b\u6b22\u8fce\u200b\u6765\u5230\u200b\u6211\u200b\u7684\u200b\u4e3b\u9875\u200b\uff01\u200b\u968f\u4fbf\u200b\u901b\u901b\u200b\u5427\u200b

\u200b\u66f4\u65b0\u200b\u65e5\u5fd7\u200b | \u200b\u6837\u5f0f\u200b\u4e00\u89c8\u200b | \u200b\u5efa\u200b\u7ad9\u200b\u6307\u5357\u200b

"},{"location":"Build_this_website/","title":"\u5982\u4f55\u200b\u6784\u5efa\u200b\u4e00\u4e2a\u200b\u50cf\u200b\u8fd9\u6837\u200b\u7684\u200b\u7f51\u7ad9\u200b\uff01","text":"

\u200b\u7ea6\u200b 905 \u200b\u4e2a\u200b\u5b57\u200b 316 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 7 \u200b\u5206\u949f\u200b

\u200b\u7f51\u7ad9\u200b\u642d\u5efa\u200b\u6559\u7a0b\u200b

\u200b\u672c\u200b\u7ad9\u70b9\u200b\u4f7f\u7528\u200b mkdocs \u200b\u642d\u5efa\u200b\uff0c\u200b\u90e8\u7f72\u200b\u4e8e\u200b Github Pages\uff0c\u200b\u4f7f\u7528\u200b\u4e86\u200bmaterial\u200b\u4e3b\u9898\u200b

"},{"location":"Build_this_website/#1","title":"1.\u200b\u73af\u5883\u200b\u51c6\u5907","text":"

\u200b\u5b89\u88c5\u200b python

sudo apt install python3 python3-pip\n

pip \u200b\u6362\u6e90\u200b

pip install pip -U\npip config set global.index-url https://mirrors.zju.edu.cn/pypi/web/simple\n

\u200b\u542f\u7528\u200b\u865a\u62df\u73af\u5883\u200b\uff1a

sudo apt install python3.8-venv\npip install virtualenv\npython -m venv webenv\nsource webenv/bin/activate\n

\u200b\u5b89\u88c5\u200b mkdocs

pip install mkdocs-material\n

\u200b\u51fa\u73b0\u200b\u62a5\u9519\u200b\uff1a

ERROR: mkdocs 1.4.3 has requirement markdown<3.4\uff0c>=3.2.1\uff0c but you'll have markdown 3.4.3 which is incompatible.\n

\u200b\u4fee\u6539\u200b markdown \u200b\u7248\u672c\u200b\uff0c\u200b\u7136\u540e\u200b\u91cd\u65b0\u5b89\u88c5\u200b mkdocs\uff1a

pip install markdown==3.2.1\npip install mkdocs-material\n

\u200b\u56fe\u7247\u200b\u5904\u7406\u200b\u7684\u200b\u4f9d\u8d56\u200b\u5e93\u200b\uff1a

pip install pillow cairosvg\n

\u200b\u53ef\u200b\u9009\u200b\u4f18\u5316\u200b\uff1ayaml \u200b\u8865\u5168\u200b
  1. \u200b\u5b89\u88c5\u200b VSCode-yaml
  2. \u200b\u628a\u200b\u4e0b\u9762\u200b\u8bbe\u7f6e\u200b\u5199\u5165\u200b settings.json:
    {\n\"yaml.schemas\": {\n    \"https://squidfunk.github.io/mkdocs-material/schema.json\": \"mkdocs.yml\"\n}\uff0c\n\"yaml.customTags\": [\n    \"!ENV scalar\"\uff0c\n    \"!ENV sequence\"\uff0c\n    \"tag:yaml.org\uff0c2002:python/name:materialx.emoji.to_svg\"\uff0c\n    \"tag:yaml.org\uff0c2002:python/name:materialx.emoji.twemoji\"\uff0c\n    \"tag:yaml.org\uff0c2002:python/name:pymdownx.superfences.fence_code_format\"\n]\n}\n
"},{"location":"Build_this_website/#2-github-pages","title":"2.\u200b\u90e8\u7f72\u200b\u5230\u200b Github Pages","text":"

\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u7a7a\u200b\u7684\u200b\u516c\u5f00\u200b\u4ed3\u5e93\u200b\uff0c\u200b\u5e76\u4e14\u200b\u514b\u9686\u200b\u5230\u200b\u672c\u5730\u200b\uff0c\u200b\u5728\u200b\u5176\u4e2d\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b mkdocs site\uff1a

git clone repo\ncd repo\nmkdocs new .\n

\u200b\u5728\u200b mkdocs.yml \u200b\u4e2d\u200b\u542f\u7528\u200b\u4e3b\u9898\u200b\uff1a

theme:\n  name: material\n

\u200b\u5982\u679c\u200b\u4f60\u200b\u5e0c\u671b\u200b\u5c06\u200b markdown \u200b\u6e90\u6587\u4ef6\u200b\u4e5f\u200b\u4fdd\u5b58\u200b\u5728\u200b\u540c\u4e00\u4e2a\u200b\u4ed3\u5e93\u200b\u91cc\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5148\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u5ffd\u7565\u200bsite/\u200b\u7684\u200b.gitignore\u200b\u6587\u4ef6\u200b\uff0c\u200b\u7136\u540e\u200b\u63d0\u4ea4\u200b\uff0c\u200b\u63a8\u9001\u200b\uff1a

echo \"site/\" > .gitignore\ngit add .\ngit commit -m \"init\"\ngit push -u origin master\n

\u200b\u7136\u540e\u200b\u7528\u200bgh-deploy\u200b\u547d\u4ee4\u200b\u4e00\u952e\u200b\u90e8\u7f72\u200b\u5230\u200b Github Pages:

mkdocs gh-deploy\n
\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u7684\u200b\u4ed3\u5e93\u200b\u6709\u200b\u4e24\u4e2a\u200b\u5206\u652f\u200b\u4e86\u200b\uff0cmaster \u200b\u5206\u652f\u200b\u50a8\u5b58\u200b markdown \u200b\u6e90\u6587\u4ef6\u200b\uff0cgh-pages \u200b\u5206\u652f\u200b\u50a8\u5b58\u200b\u7f16\u8bd1\u200b\u540e\u200b\u7684\u200b\u7f51\u7ad9\u200b

\u200b\u5728\u200b settings-pages \u200b\u4e2d\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u7f51\u7ad9\u200b\u7684\u200b\u7f51\u5740\u200b\u4e86\u200b\uff0c\u200b\u4e00\u822c\u200b\u4e3a\u200busername.github.io/repo\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u521b\u5efa\u200b\u7684\u200b\u4ed3\u5e93\u200b\u662f\u200b\u7279\u6b8a\u200b\u7684\u200b\uff0c\u200b\u540d\u4e3a\u200busername.github.io\uff0c\u200b\u90a3\u4e48\u200b\u7f51\u5740\u200b\u5c31\u662f\u200busername.github.io\u200b\u4e86\u200b \u200b\u5f53\u524d\u200b\u7684\u200b\u7f51\u7ad9\u200b\u4e3a\u200b\u9ed8\u8ba4\u200b\u6837\u5f0f\u200b\uff1a

\u200b\u53ef\u200b\u9009\u200b\u4f18\u5316\u200b\uff1a\u200b\u81ea\u52a8\u200b\u7f16\u8bd1\u200b\u90e8\u7f72\u200b

\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b GitHub action \u200b\u6765\u200b\u5e2e\u52a9\u200b\u6211\u4eec\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b master \u200b\u5206\u652f\u200b\u540e\u200b\u81ea\u52a8\u200b\u7f16\u8bd1\u200b\u7f51\u7ad9\u200b\u5e76\u200b\u63a8\u9001\u200b\u5230\u200b gh-pages \u200b\u5206\u652f\u200b\uff0c\u200b\u8fd9\u6837\u200b\u6211\u4eec\u200b\u5c31\u200b\u4e0d\u7528\u200b\u6bcf\u6b21\u200b\u90fd\u200b\u624b\u52a8\u200b\u6267\u884c\u200bmkdocs gh-deploy\u200b\u4e86\u200b. 1. \u200b\u5728\u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b.github/workflows/auto-deploy.yml\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a

name: ci\non:\npush:\n    branches:\n    - master\n    - main\npermissions:\ncontents: write\njobs:\ndeploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n        with:\n        fetch-depth: '0'\n    - uses: actions/setup-python@v4\n        with:\n        python-version: 3.x\n    - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV\n    - uses: actions/cache@v3\n        with:\n        key: mkdocs-material-${{ env.cache_id }}\n        path: .cache\n        restore-keys: |\n            mkdocs-material-\n    - run: pip install  mkdocs-material mkdocs-changelog-plugin mkdocs-glightbox jieba pillow cairosvg mkdocs-tooltips mkdocs-statistics-plugin mkdocs-table-reader-plugin mkdocs-git-revision-date-localized-plugin\n    - run: mkdocs gh-deploy --force\n
\u200b\u6ce8\u610f\u200b\uff0c\u200b\u63a8\u9001\u200b\u5230\u200b Github \u200b\u7684\u8bdd\u200b\u9700\u8981\u200b\u4f60\u200b\u7684\u200b token \u200b\u6709\u200b workflow \u200b\u6743\u9650\u200b \u200b\u5982\u679c\u200b\u4f60\u200b\u4f9d\u8d56\u200b\u4e86\u200b\u989d\u5916\u200b\u7684\u200b\u5e93\u200b\uff0c\u200b\u9700\u8981\u200b\u4fee\u6539\u200b action

"},{"location":"Build_this_website/#3","title":"3.\u200b\u6dfb\u52a0\u200b\u7279\u6027","text":""},{"location":"Build_this_website/#31-css","title":"3.1 \u200b\u4fee\u6539\u200b\u7f51\u7ad9\u200b\u7684\u200b css \u200b\u6837\u5f0f","text":"

\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u65b0\u589e\u200b\u7684\u200b\u6837\u5f0f\u200b\u541b\u200b\u653e\u7f6e\u200b\u4e8e\u200bdocs/css/\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u6bcf\u4e2a\u200b css \u200b\u6587\u4ef6\u200b\u90fd\u200b\u8981\u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

extra_css:\n  - css/extra.css\n
\u200b\u6211\u200b\u4f7f\u7528\u200b\u7684\u200b\u7684\u200b\u6837\u5f0f\u200b
[data-md-color-primary=indigo] {\n    --md-primary-fg-color:  #FFACA6;\n}\n[data-md-color-accent=indigo] {\n--md-accent-fg-color: #FFACA6;\n}\n[data-md-color-scheme=default] {\n    --md-typeset-a-color: #000000;\n    --my-changlog-color: #EFEFEF;\n}\n[data-md-color-scheme=slate] {\n    --md-typeset-a-color: #FFFFFF;\n    --my-changlog-color: #161616;\n}\n.md-grid {\nmax-width: 1400px;\n}/* make the page wider */\n/* changelog config*/\n.timeline-card{\nbackground-color: var(--my-changlog-color);\n}\n.timeline-content::before{\nbackground-color: var(--my-changlog-color);\n}\n.changelog-type{\nbackground-color: #CC8A85;\n}\n.changelog-type-newpage{\nbackground-color: #FF9C80;\n}\n.changelog-type-refactor::before {\ncontent: \"\u200b\u6587\u6863\u200b\u66f4\u65b0\u200b\";\n}\n\n/*\u200b\u56fe\u7247\u683c\u5f0f\u200b\u8bbe\u7f6e\u200b*/\n/*\u200b\u9ed8\u8ba4\u200b\u6837\u5f0f\u200b*/\nimg[src*=\"pic\"] {\nbox-shadow: 2px 2px 10px #666;\nborder-radius: 4px;\n}\n
\u200b\u81ea\u5df1\u200b\u5b9a\u4e49\u200b\u6837\u5f0f\u200b

\u200b\u6211\u4eec\u200b\u53ef\u80fd\u200b\u4e0d\u200b\u719f\u6089\u200b css\uff0c\u200b\u6ca1\u4e8b\u200b\uff0c\u200b\u6211\u200b\u4e5f\u200b\u5b8c\u5168\u200b\u4e0d\u200b\u61c2\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u4e00\u4e9b\u200b\u7b80\u5355\u200b\u7684\u200b\u4fee\u6539\u200b\u989c\u8272\u200b\u4fee\u6539\u200b\u5b57\u200b\uff0c\u200b\u76f4\u63a5\u200b\u7528\u200b F12 \u200b\u67e5\u770b\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6837\u5f0f\u200b\u6539\u6210\u200b\u81ea\u5df1\u200b\u559c\u6b22\u200b\u7684\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b\uff0c\u200b\u6d4f\u89c8\u5668\u200b\u4e00\u822c\u200b\u90fd\u200b\u652f\u6301\u200b\u76f4\u63a5\u200b\u6539\u200b\u5e76\u4e14\u200b\u663e\u793a\u200b\u4fee\u6539\u200b\u540e\u200b\u7684\u200b\u6548\u679c\u200b\u7684\u200b \u200b\u53e6\u200b\u4e00\u4e2a\u200b\u597d\u7528\u200b\u7684\u200b\u8bbe\u7f6e\u200b\u5c31\u662f\u200b\u4fee\u6539\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u56fe\u7247\u200b\u6837\u5f0f\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u50cf\u200b\u8fd9\u6837\u200b\u5f15\u7528\u200b\u56fe\u7247\u200b

![](images/Build_this_website/2023-07-02-02-35-34.png#pic)\n
\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5728\u200b\u7ed3\u5c3e\u200b\u52a0\u4e0a\u200b#pic\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5bf9\u200b\u56fe\u7247\u200b\u5e94\u7528\u200b\u9ed8\u8ba4\u200b\u6837\u5f0f\u200b\u4e86\u200b\uff0c\u200b\u6211\u7528\u200b\u7684\u200b\u662f\u200b\u5706\u89d2\u200b+\u200b\u9634\u5f71\u200b.\u200b\u8fd9\u4e00\u200b\u6dfb\u52a0\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u53ef\u4ee5\u200b\u7528\u200b VSCode \u200b\u63d2\u4ef6\u200b Paste Image \u200b\u81ea\u52a8\u200b\u5b9e\u73b0\u200b\uff0c\u200b\u6211\u200b\u5728\u200b\u8fd9\u91cc\u200b\u6709\u200b\u4ecb\u7ecd\u200b

"},{"location":"Build_this_website/#32-javascript","title":"3.2 \u200b\u6dfb\u52a0\u200b\u989d\u5916\u200b\u7684\u200b javascript","text":"

\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u65b0\u589e\u200b\u7684\u200b js \u200b\u6587\u4ef6\u200b\u653e\u7f6e\u200b\u4e8e\u200bdocs/js/\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u6bcf\u4e2a\u200b js \u200b\u6587\u4ef6\u200b\u90fd\u200b\u8981\u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

extra_javascript:\n  - js/extra.js\n
\u200b\u8fd9\u91cc\u200b\u7684\u200b url \u200b\u53ef\u4ee5\u200b\u6307\u5411\u200b\u7f51\u7edc\u200b\u4e0a\u200b\u7684\u200b js \u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u662f\u200b\u672c\u5730\u200b\u7684\u200b

\u200b\u6211\u200b\u4f7f\u7528\u200b\u7684\u200b\u7684\u200b js extra.jsmathjax.js
document.querySelectorAll('.zoom').forEach(item => {\n    item.addEventListener('click'\uff0c function () {\n        this.classList.toggle('image-zoom-large');\n    })\n});\n
window.MathJax = {\n    tex: {\n    inlineMath: [[\"\\\\(\"\uff0c \"\\\\)\"]]\uff0c\n    displayMath: [[\"\\\\[\"\uff0c \"\\\\]\"]]\uff0c\n    processEscapes: true\uff0c\n    processEnvironments: true\n    }\uff0c\n    options: {\n    ignoreHtmlClass: \".*|\"\uff0c\n    processHtmlClass: \"arithmatex\"\n    }\n};\n\ndocument$.subscribe(() => {\n    MathJax.typesetPromise()\n})\n

=== tablesort.js

document$.subscribe(function() {\n    var tables = document.querySelectorAll(\"article table:not([class])\")\n    tables.forEach(function(table) {\n    new Tablesort(table)\n    })\n})\n

"},{"location":"Build_this_website/#33","title":"3.3 \u200b\u6dfb\u52a0\u200b\u5168\u5c40\u200b\u811a\u6ce8","text":"

\u200b\u6240\u6709\u200b\u811a\u6ce8\u200b\u90fd\u200b\u653e\u5728\u200bincludes/abbreviatioins.md\uff08\u200b\u5728\u200b docs \u200b\u4e4b\u5916\u200b\uff09\uff0c\u200b\u683c\u5f0f\u200b\u4e3a\u200b\uff1a

*[HTML]: Hyper Text Markup Language\n*[W3C]: World Wide Web Consortium\n

\u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

markdown_extensions:\n    - abbr\n    - attr_list\n    - pymdownx.snippets\n    - pymdownx.snippets:\n        auto_append:\n            - includes/abbreviations.md\n

\u200b\u6548\u679c\u56fe"},{"location":"Build_this_website/#34","title":"3.4 \u200b\u542f\u7528\u200b\u7f51\u7ad9\u200b\u6570\u636e\u5206\u6790","text":"

\u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

extra:\n  analytics:\n    provider: google\n    property: G-XXXXXXXXXX\n

\u200b\u968f\u540e\u200b\u524d\u5f80\u200b Google Analytics \u200b\u6ce8\u518c\u200b\u4f7f\u7528\u200b\u5373\u53ef\u200b.

\u200b\u542f\u7528\u200b\u8fd9\u9879\u200b\u529f\u80fd\u200b\u9700\u8981\u200b\u5411\u200b\u6bcf\u4e2a\u200b\u7f51\u9875\u200b\u6ce8\u5165\u200b google code

"},{"location":"Build_this_website/#35","title":"3.5 \u200b\u542f\u7528\u200b\u6700\u65b0\u66f4\u65b0\u200b\u65f6\u95f4","text":"

\u200b\u5b89\u88c5\u200b\u5e93\u200b\uff1a

pip install mkdocs-git-revision-date-localized-plugin\n
\u200b\u6dfb\u52a0\u200b\u8bbe\u7f6e\u200b\u5230\u200bmkdocs.yml\uff1a
plugins:\n  - git-revision-date-localized:\n      enable_creation_date: true\n

"},{"location":"Build_this_website/#36","title":"3.6 \u200b\u542f\u7528\u200b\u8bc4\u8bba\u200b\u533a","text":"

\u200b\u539f\u200b\u6587\u6863\u200b\u4ecb\u7ecd\u200b\u7684\u200b\u5f88\u200b\u6e05\u695a\u200b\u4e86\u200b

"},{"location":"Build_this_website/#37","title":"3.7 \u200b\u4ece\u6587\u4ef6\u200b\u8bfb\u53d6\u200b\u8868\u683c","text":"

\u200b\u53c2\u8003\u200b\u539f\u200b\u6587\u6863\u200b

"},{"location":"Build_this_website/#38-emojis-icons","title":"3.8 \u200b\u4f7f\u7528\u200b emojis \u200b\u548c\u200b icons","text":"

\u200b\u8fd9\u4e2a\u200b\u94fe\u63a5\u200b\u53ef\u4ee5\u200b\u641c\u7d22\u200b emoji

"},{"location":"Build_this_website/#39","title":"3.9 \u200b\u56fe\u7247\u200b\u653e\u5927","text":"

\u200b\u5148\u200b\u5b89\u88c5\u200b\u63d2\u4ef6\u200b\uff1a

pip install mkdocs-glightbox\n

\u200b\u7136\u540e\u200b\u52a0\u5165\u200b\u914d\u7f6e\u200b\uff1a

plugins:\n  - glightbox\n

"},{"location":"Build_this_website/#310-blog","title":"3.10 \u200b\u542f\u7528\u200b blog","text":"

\u200b\u5b98\u65b9\u200b\u7684\u200b\u8d77\u6b65\u200b\u6307\u5bfc\u200b\u5f88\u200b\u8be6\u7ec6\u200b\u4e86\u200b\uff0c\u200b\u7167\u7740\u200b\u8d70\u200b\u5c31\u200b\u597d\u200b\uff01

"},{"location":"Build_this_website/#311","title":"3.11 \u200b\u6211\u200b\u7684\u200b\u6240\u6709\u200b\u914d\u7f6e","text":"

\u200b\u4ee5\u4e0b\u200b\u9644\u4e0a\u200b\u6211\u200b\u7684\u200bmkdocs.yml\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5df2\u7ecf\u200b\u5220\u53bb\u200b\u4e86\u200b\u5bfc\u822a\u200b\u90e8\u5206\u200b\uff0c\u200b\u6240\u4ee5\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u590d\u5236\u200b\u4f7f\u7528\u200b\uff1a

mkdocs.yml
# Project information\nsite_name: Stormckey's Page\nsite_url: https://stormckey.github.io/\nsite_author: Stormckey\n# Repository\nrepo_name: stormckey\nrepo_url: https://github.com/stormckey/stormckey.github.io\n\n# The path to edit the content\nedit_uri: edit/main/docs/\n\n# Copyright\ncopyright: Copyright &copy; stormckey\n\ntheme:\nname: material\ncustom_dir: overrides\nfavicon: cat.svg # put in /docs/cat.svg\nfont:\n    text: Roboto Mono\n    code: Roboto Mono\nfeatures:\n    - content.action.edit # enable the button to edit the source code of the page\n    - content.action.view # enable the button to view the source code of the page\n    - content.code.copy # enable the button to copy the code block\n    - navigation.tabs  # enable the row of tabs under the title\n    # - navigation.sections # unfold the secondary titles to the left\n    # - navigation.footer # enable the next and previous button\n    - navigation.indexes # the index page will be incoperate into the tab\n    - search.suggest # auto suggestion\n    - search.highlight # highlight when search\n    - search.share # enable share when search\n    - navigation.instant # optimize loading\n    - navigation.tracking # URL will change as we scroll down\n    - toc.follow # the sidebar will scroll automatically following the user\n    - navigation.top # button to back to the top\npalette: # my customized schema\n    - media: \"(prefers-color-scheme: light)\"\n    scheme: default\n    primary: indigo\n    accent: indigo\n    toggle:\n        icon: material/brightness-7\n        name: Switch to dark mode\n    - media: \"(prefers-color-scheme: dark)\"\n    scheme: slate\n    toggle:\n        icon: material/brightness-4\n        name: Switch to light mode\nicon:\n    repo: fontawesome/brands/github-alt # the github cat icon in the topright\n    logo: material/cat # the cat icon in the topleft\n\nplugins:\n- search\n# - social: #social card\n#     enabled: !ENV [CI\uff0c false]\n#     cards: !ENV [CI\uff0c false]\n#     cards_font: Noto Sans SC\n- git-revision-date-localized:\n    enabled: !ENV [CI\uff0c false]\n    enable_creation_date: true\n- offline: # enable searching offline\n    enabled: !ENV [OFFLINE\uff0c false]\n- table-reader\n- changelog #see https://github.com/TonyCrane/mkdocs-changelog-plugin\n- tooltips\n- statistics\n- glightbox\n\n\n\nmarkdown_extensions:\n#enable admonition\n- admonition\n- pymdownx.details # enable ??? admonition\n- pymdownx.betterem # better emphasize\n- pymdownx.superfences: # allow nest codes\n    custom_fences:\n        - name: mermaid\n        class: mermaid\n        format: !!python/name:pymdownx.superfences.fence_code_format\n#enable code config\n- pymdownx.inlinehilite #inline code highlight\n- pymdownx.snippets: #enable to embed arbitrary files\n    auto_append:\n        - includes/abbreviations.md\n- pymdownx.highlight:\n        linenums: true # enable line display\n        line_spans: __span\n        pygments_lang_class: true # detect language automatically\n        anchor_linenums: true # offer line anchor\n- pymdownx.keys # render key symbols\n- pymdownx.smartsymbols\n#enable button\n- attr_list\n#enable content tabs\n- pymdownx.tabbed:\n    alternate_style: true\n- tables\n#daigrams are not enabled\n- footnotes\n#enable emoji\n- pymdownx.emoji:\n    emoji_index: !!python/name:materialx.emoji.twemoji\n    emoji_generator: !!python/name:materialx.emoji.to_svg\n    options:\n        custom_icons:\n        - \"overrides/.icons\"\n#image alignment\n- md_in_html\n#better list\n- def_list\n- pymdownx.tasklist:\n    custom_checkbox: true\n#abbr\n- abbr\n#enable math syntax\n- pymdownx.arithmatex:\n    generic: true\n#enable table of content\n- toc:\n    permalink: true\n    permalink_title: Anchor link to this section for reference\n- pymdownx.caret\n- pymdownx.mark\n- pymdownx.tilde\n- pymdownx.critic\n\nextra_javascript:\n- javascripts/extra.js\n- javascripts/mathjax.js\n- https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js # enable table sort\n- javascripts/tablesort.js # enable table sort\n- https://polyfill.io/v3/polyfill.min.js?features=es6\n- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\n\nextra:\nsocial:\n    - icon: fontawesome/brands/github # icons to the right bottom of the page\n    link: https://github.com/stormckey\n    - icon: fontawesome/solid/paper-plane # icons to the right bottom of the page\n    link: mailto:sortygraph@gmail.com\nalternate: # change the language\uff0c the link should point to different directories\n    - name: English\n    link: /\n    lang: en\n    - name: \u200b\u4e2d\u6587\u200b\n    link: /\n    lang: zh\nconsent:\n    title: Cookie consent\n    description: >-\n    We use cookies to recognize your repeated visits and preferences\uff0c as well\n    as to measure the effectiveness of our documentation and whether users\n    find what they're searching for. With your consent\uff0c you're helping us to\n    make our documentation better.\nanalytics:\n    provider: google\n    property: G-XXXXXXXXXX\n\nextra_css:\n- css/hint.min.css\n- css/extra.css\n
"},{"location":"Build_this_website/#3x","title":"3.x \u200b\u66f4\u200b\u591a\u200b\u7279\u6027\u200b\uff08\u200b\u6211\u200b\u8fd8\u200b\u4e0d\u4f1a\u200b\u7528\u200b\u4f46\u200b\u8003\u8651\u200b\u542f\u7528\u200b\u7684\u200b\uff09","text":"
  1. \u200b\u81ea\u5b9a\u4e49\u200b html \u200b\u6837\u5f0f\u200b
"},{"location":"Format/","title":"\u6837\u5f0f\u200b\u4e00\u89c8","text":"

\u200b\u7ea6\u200b 308 \u200b\u4e2a\u200b\u5b57\u200b 25 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

Abstraction

\u200b\u6b64\u200b\u9875\u9762\u200b\u5c06\u4f1a\u200b\u5217\u51fa\u200b\u672c\u200b\u7ad9\u70b9\u200b\u76ee\u524d\u200b\u652f\u6301\u200b\u7684\u200b\u6240\u6709\u200b\u663e\u793a\u200b\u6837\u5f0f\u200b \u200b\u8bb8\u591a\u200b\u90fd\u200b\u6765\u81ea\u200b Material for Mkdocs

int main(){\n    printf(\"Hello World\");\n    printf(\"!/n\");\n}\n
#include <iostream>\nusing namespace std;\n

The range() function is used to generate a sequence of numbers.

inlcude a file: .gitignore
site/\n.DS_Store\n*.docx\n*.pdf\nsrc/*\n*pycache*\n
col1 col2 col3 r1c1 r1c2 r1c3 r2c1 r2c2 r2c3 r3c1 r3c2 r3c3
graph LR\n  A[What to eat?] --> B{Hesitate};\n  B -->|KFC| C[Hmm...];\n  C --> D[Bad!];\n  D --> B;\n  B ---->|Mcdonald's| E[Yay!];

\u200b\u6587\u6863\u200b\u4ecb\u7ecd\u200b\u4e86\u200b\u6240\u6709\u200b\u652f\u6301\u200b\u7684\u200b\u56fe\u200b

my title

something

no title

my title

something

no inline

Now it suppports Note\uff0cAbstract\uff0cInfo\uff0cTip\uff0cSuccess\uff0cQuestion\uff0cWarining\uff0cFailure\uff0cDanger\uff0cBug\uff0cExample\uff0cQuote

inline

somthing

Subscribe to our newsletter

Subscribe to our newsletter

CC++
#include <stdio.h>\n\nint main(void) {\n  printf(\"Hello world!\\n\");\n  return 0;\n}\n
#include <iostream>\n\nint main(void) {\n  std::cout << \"Hello world!\" << std::endl;\n  return 0;\n}\n

Note

Search for emojis here

Definition

Define sth

Text can be deleted and replacement text added. This can also be combined into onea single operation. Highlighting is also possible and comments can be added inline.

Formatting can also be applied to blocks by putting the opening and closing tags on separate lines and adding new lines between the tags and the content.

  • This was marked
  • This was inserted
  • This was deleted

  • H2O

  • ATA

Ctrl+Alt+Del

Image caption

  • Lorem ipsum dolor sit amet\uff0c consectetur adipiscing elit
  • Vestibulum convallis sit amet nisi a tincidunt
    • In hac habitasse platea dictumst
    • In scelerisque nibh non dolor mollis congue sed et metus
    • Praesent sed risus massa
  • Aenean pretium efficitur erat\uff0c donec pharetra\uff0c ligula non scelerisque
\\[ \\operatorname{ker} f=\\{g\\in G:f(g)=e_{H}\\}{\\mbox{.}} \\]

\u3010\u200b\u9f20\u6807\u60ac\u505c\u200b\uff01\u3011{\ud83d\ude0b}

Hover me

The HTML specification is maintained by the W3C.

Lorem ipsum dolor sit amet

Sed sagittis eleifend rutrum. Donec vitae suscipit est. Nullam tempus tellus non sem sollicitudin\uff0c quis rutrum leo facilisis.

Cras arcu libero

Aliquam metus eros\uff0c pretium sed nulla venenatis\uff0c faucibus auctor ex. Proin ut eros sed sapien ullamcorper consequat. Nunc ligula ante.

Duis mollis est eget nibh volutpat\uff0c fermentum aliquet dui mollis. Nam vulputate tincidunt fringilla. Nullam dignissim ultrices urna non auctor.

Method Description GET Fetch resource PUT Update resource DELETE Delete resource"},{"location":"changelog/","title":"\u66f4\u65b0\u200b\u8bb0\u5f55","text":""},{"location":"changelog/#2023","title":"2023","text":"2023-11-28\u00b6

\u200b\u4f7f\u7528\u200b\u4e86\u200bmeta-manager\u200b\u63d2\u4ef6\u200b,\u200b\u7b80\u5316\u200b\u4e86\u200bmetadata\u200b\u7684\u200b\u4f7f\u7528\u200b

Blog > PL > Y-combinator

\u200b\u65b0\u589e\u200b\u4e86\u200bReference\u200b\u6837\u5f0f\u200b

2023-11-26\u00b6

\u200b\u65b0\u589e\u200b\u4e86\u200bDefinition\u200b\u6837\u5f0f\u200b

\u200b\u542f\u7528\u200bblog\u200b\u63d2\u4ef6\u200b

\u200b\u4f7f\u7528\u200bPangu.vim\u200b\u63d2\u4ef6\u200b\u8fdb\u884c\u200b\u6587\u6863\u200b\u683c\u5f0f\u5316\u200b

Blog > Cool > \u200b\u7528\u200bVim\u200b\u6279\u91cf\u200b\u683c\u5f0f\u5316\u200b

2023-11-25\u00b6

\u200b\u91cd\u6784\u200b\u4e86\u200bBlog\u200b\u7684\u200b\u5c42\u7ea7\u200b,\u200b\u52a0\u5165\u200b\u4e86\u200bLab\u200b\u90e8\u5206\u200b

\u200b\u52a0\u5165\u200b\u4e86\u200b\u8ba1\u7f51\u200b\u5b9e\u9a8c\u200b\u6307\u5357\u200b

2023-11-20\u00b6

\u200b\u65b0\u589e\u200b\u4e86\u200b\u6570\u636e\u200b\u5efa\u6a21\u200b\u4e0e\u200b\u5206\u6790\u200b\u7684\u200b\u7b14\u8bb0\u200b

2023-11-07\u00b6

\u200b\u597d\u200b\u670b\u53cb\u200bPeiPei\u200b\u6765\u200b\u5bc4\u5c45\u200b\u4e86\u200b!

2023-07-08\u00b6

\u200b\u66f4\u6362\u200b\u4e86\u200b\u66f4\u65b0\u200b\u65e5\u5fd7\u200b\u7684\u200b\u8272\u5f69\u200b

\u200b\u79fb\u9664\u200bDS\u200b\u7b14\u8bb0\u200b

2023-07-04\u00b6

\u200b\u6da6\u8272\u200b\u4e86\u200b\u535a\u5ba2\u200b\u548c\u200b\u7b14\u8bb0\u200b\u7684\u200b\u5185\u5bb9\u200b

Home > Build_this_page

\u200b\u91cd\u6784\u200b\u4e86\u200b\u7f51\u7ad9\u200b\u7684\u200b\u7ed3\u6784\u200b\uff0c\u200b\u542f\u7528\u200b\u4e86\u200b\u65b0\u200b\u7684\u200bmaterial\u200b\u529f\u80fd\u200b

Blog > docker_minisql

2023-04-06\u00b6

Blog > \u200b\u5728\u200bMac\u200b\u4e0a\u200b\u4f7f\u7528\u200bVSCode\u200b\u8fdb\u884c\u200bC/C++\u200b\u8c03\u8bd5\u200b

2023-04-01\u00b6

Blog > \u200b\u6211\u200b\u7684\u200bCLI\u200b\u5de5\u5177\u200b

2023-03-30\u00b6

Note > \u200b\u8ba1\u7ec4\u200b\u62fe\u9057\u200b

2023-03-29\u00b6

Blog > \u200b\u542f\u7528\u200bchatGPT-academic

2023-03-27\u00b6

Note > Missiing Semester > Commandline Environment

2023-03-23\u00b6

\u200b\u91cd\u6784\u200b\u4e86\u200b\u5168\u7ad9\u200b\u7684\u200b\u56fe\u7247\u200b\u6837\u5f0f\u200b\uff0c\u200b\u73b0\u5728\u200b\u662f\u200b\u9ed8\u8ba4\u200b\u5706\u89d2\u200b\u77e9\u5f62\u200b\u52a0\u200b\u9634\u5f71\u200b

Blog > \u200b\u5728\u200bVSCode\u200b\u4e0b\u200b\u7f16\u5199\u200bMarkdown

Blog > \u200b\u914d\u7f6e\u200bGithub\u200b\u4e2a\u4eba\u200bProfile

2023-03-22\u00b6

Blog > \u200b\u7528\u200bssh\u200b\u8fde\u63a5\u200b\u540c\u4e00\u200b\u5c40\u57df\u7f51\u200b\u4e0b\u200b\u7684\u200bwsl

Blog > wsl\u200b\u7ec8\u7aef\u200b\u914d\u7f6e\u200b

2023-03-21\u00b6

Blog > wsl\u200b\u4e0a\u200b\u542f\u7528\u200bcuda

Blog > VSCode\u200b\u7ec8\u7aef\u200b\u4e0a\u200b\u65e0\u6cd5\u200b\u542f\u7528\u200bconda\u200b\u865a\u62df\u73af\u5883\u200b

2023-03-20\u00b6

Blog > zsh\u200b\u4e2d\u200b\u7684\u200b\u53c2\u6570\u4f20\u9012\u200b

2023-03-18\u00b6

Home > \u200b\u6700\u8fd1\u200b\u66f4\u65b0\u200b

\u200b\u4fee\u6539\u200b\u4e86\u200b\u7f51\u7ad9\u200b\u7684\u200b\u8272\u5f69\u200b,\u200b\u4f7f\u7528\u200b\u4e86\u200b\u66f4\u200b\u591a\u6837\u200b\u7684\u200b\u56fe\u6807\u200b

Research > Diffusion > DDPM

Research > Diffusion > DDIM

"},{"location":"Note/","title":"\u7b14\u8bb0\u672c\u200b\uff01","text":"

\u200b\u5927\u5b66\u200b\u671f\u95f4\u200b\u7684\u200b\u7b14\u8bb0\u200b\u5408\u96c6\u200b

\u200b\u5176\u5b9e\u200b\u6211\u200b\u4e00\u76f4\u200b\u4ee5\u6765\u200b\u90fd\u200b\u4e0d\u600e\u4e48\u200b\u8bb0\u7b14\u8bb0\u200b\uff0c\u200b\u4f46\u200b\u4e4b\u524d\u200b\u51e0\u6b21\u200b\u6570\u5b66\u8bfe\u200b\u4e0d\u200b\u8bb0\u7b14\u8bb0\u200b\u5dee\u70b9\u200b\u66b4\u6bd9\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u504f\u200b\u6570\u5b66\u200b\u7684\u200b\u8bfe\u200b\u8fd8\u662f\u200b\u4fdd\u7559\u200b\u4e86\u200b\u8bb0\u7b14\u8bb0\u200b\u7684\u200b\u4e60\u60ef\u200b\u7684\u200b.

\u200b\u53e6\u5916\u200b\u8fd8\u6709\u200b\u4e00\u4e9b\u200b\u671f\u672b\u200b\u590d\u4e60\u200b\u4ea7\u751f\u200b\u7684\u200b\u7b14\u8bb0\u200b\uff0c\u200b\u8fd8\u6709\u200b\u4e00\u4e9b\u200b\u6613\u200b\u5fd8\u200b\u77e5\u8bc6\u200b\u7684\u200b\u6574\u7406\u200b

"},{"location":"Note/CO_review/","title":"\u8ba1\u7b97\u673a\u200b\u7ec4\u6210","text":"

\u200b\u7ea6\u200b 431 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

\u200b\u6781\u5176\u200b\u7b80\u7565\u200b\uff0c\u200b\u53ea\u6709\u200b\u90e8\u5206\u200b\u6613\u200b\u5fd8\u200b\u3001\u200b\u6216\u200b\u4e0d\u200b\u90a3\u4e48\u200b\u663e\u7136\u200b\u7684\u200b\u77e5\u8bc6\u70b9\u200b\uff08\u200b\u62ff\u6765\u200b\u67e5\u8868\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u796d\u7956\u200b\u53ea\u7528\u200b\u4e86\u200b\u4e00\u9875\u200b

\u200b\u8bb8\u591a\u200b\u5185\u5bb9\u200b\u6458\u81ea\u200b\u54b8\u9c7c\u200b\u6684\u200b\u7684\u200b\u4ee3\u7801\u200b\u7a7a\u95f4\u200b

\u200b\u8fd9\u91cc\u200b\u662f\u200b\u8bfe\u672c\u200b\u4f5c\u4e1a\u200b\u7b54\u6848\u200b

"},{"location":"Note/CO_review/#ch2-instructions","title":"Ch2 Instructions","text":"
  • PC relative addressing: PC + offset \u200b\u800c\u200b\u975e\u200b PC + 4 + offset
  • I \u200b\u7c7b\u578b\u200b\u7684\u200b\u7acb\u5373\u200b\u6570\u5747\u200b\u4e3a\u200b\u7b26\u53f7\u200b\u6269\u5c55\u200b\uff0c\u200b\u4f46\u200b\u8981\u200b\u6ce8\u610f\u200b\u79fb\u4f4d\u6307\u4ee4\u200b\u53ea\u200b\u622a\u53d6\u200b\u4f4e\u4f4d\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u8fc7\u200b\u591a\u4f4d\u6570\u200b\u7684\u200b\u4f4d\u79fb\u200b\u65e0\u200b\u610f\u4e49\u200b
  • SB \u200b\u548c\u200b UJ \u200b\u7c7b\u578b\u200b\u90fd\u200b\u4e0d\u5b58\u200b\u6700\u4f4e\u200b\u4f4d\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u4ed6\u4eec\u200b\u7684\u200b\u76ee\u7684\u5730\u200b\u662f\u200b\u6307\u4ee4\u200b\uff08word alignment\uff09\uff0c\u200b\u4e00\u822c\u200b\u6700\u540e\u200b\u4e24\u4f4d\u200b\u90fd\u200b\u662f\u200b 0\uff08\u200b\u56e0\u4e3a\u200b\u5b58\u5728\u200b 16 \u200b\u4f4d\u200b\u7684\u200b\u6307\u4ee4\u200b\u6240\u4ee5\u200b\u53ea\u6709\u200b\u6700\u540e\u200b\u4e00\u4f4d\u200b\u5fc5\u7136\u200b\u662f\u200b 0\uff09
  • \u200b\u5408\u7406\u200b\u5229\u7528\u200bbgeu\u200b\u6765\u200b\u68c0\u6d4b\u200b\u8d8a\u754c\u200b\uff08\u200b\u5c0f\u4e8e\u200b\u96f6\u200b\u6216\u8005\u200b\u5927\u4e8e\u200b\u67d0\u4e2a\u200b\u6570\u200b\uff09
  • lui\u200b\u52a0\u8f7d\u200b\u4e86\u200b\u7acb\u5373\u200b\u6570\u200b\u7684\u200b\u9ad8\u200b 20 \u200b\u4f4d\u540e\u200b\uff0c\u200b\u7528\u200baadi\u200b\u52a0\u8f7d\u200b\u4f4e\u200b 12 \u200b\u4f4d\u200b\uff0c\u200b\u82e5\u56e0\u200b\u7b26\u53f7\u200b\u6269\u5c55\u200b\u5bfc\u81f4\u200b\u8fdb\u4f4d\u200b\uff0c\u200b\u53ea\u8981\u200b\u591a\u52a0\u200b 1000 \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u62b5\u6d88\u200b FFFFF000 \u200b\u7684\u200b\u5f71\u54cd\u200b
  • \u200b\u8bb0\u200b\u6e05\u695a\u200b ld \u200b\u7684\u200b d \u200b\u662f\u200b doubleword\uff0c\u200b\u8001\u662f\u200b\u8bb0\u6210\u200b load \u200b\u7684\u200b d

\u200b\u8fd8\u6709\u200b\u51e0\u5f20\u200b\u5e38\u7528\u200b\u8868\u200b\uff1a

\uff08\u200b\u4e0b\u56fe\u200b\u91cc\u200b\u7684\u200b j imm \u200b\u8981\u200b\u6539\u6210\u200b PC+imm\uff09

"},{"location":"Note/CO_review/#ch3-arithmetic","title":"Ch3 Arithmetic","text":"
  • \u200b\u68c0\u6d4b\u200b\u52a0\u51cf\u6cd5\u200b\u6ea2\u51fa\u200b\uff1a\u200b\u6700\u9ad8\u200b\u4f4d\u200b\u5168\u52a0\u5668\u200b\u7684\u200b Cin Cout \u200b\u8fdb\u884c\u200b\u5f02\u6216\u200b\u5373\u53ef\u200b\uff0c\u200b\u8fd9\u200b\u4fe9\u200b\u4fe1\u53f7\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff0c\u200b\u5c31\u200b\u610f\u5473\u7740\u200b\u6ea2\u51fa\u200b\u4e86\u200b
  • \u200b\u6700\u9ad8\u200b\u4f4d\u200b\u7275\u51fa\u200b\u4e00\u6839\u200b\u7ebf\u200b set \u200b\u5230\u200b\u6700\u4f4e\u200b\u4f4d\u200b\u7684\u200b less\uff0c\u200b\u5176\u4ed6\u200b\u6240\u6709\u200b\u4f4d\u200b less \u200b\u90fd\u200b\u7f6e\u200b 0 \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7ec4\u6210\u200b slt \u200b\u7684\u200b\u8f93\u51fa\u200b\u4fe1\u53f7\u200b\u4e86\u200b
  • IEEE 754 \u200b\u6ce8\u610f\u200b\u4e24\u70b9\u200b \u200b\u4e00\u662f\u200b 1+8+23 = 32 \uff5c1 + 11 + 52 = 64\uff1b\u200b\u4e8c\u662f\u200b\u4e0b\u6ea2\u200b\u7684\u200b\u975e\u200b\u89c4\u683c\u200b\u6570\u200b\u7684\u200b exponent \u200b\u8ddf\u200b\u89c4\u683c\u200b\u6570\u200b\u7684\u200b\u6700\u5c0f\u200b exponent \u200b\u662f\u200b\u4e00\u6837\u200b\u7684\u200b\uff0c\u200b\u8fd9\u6837\u200b\u8bbe\u8ba1\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8ba9\u200b 0.1111111...\uff08\u200b\u4e0b\u6ea2\u200b\u6700\u5927\u200b\uff09 -> 1.0000000\uff08\u200b\u89c4\u683c\u200b\u6700\u5c0f\u200b\uff09...\u200b\u8fde\u7eed\u200b\u53ef\u4ee5\u200b\u7b49\u200b\u5dee\u200b\u7684\u200b\u5f80\u200b\u4e0a\u200b\u589e\u52a0\u200b
  • \u200b\u6d6e\u70b9\u200b\u52a0\u6cd5\u200b\uff1a\u200b\u6ce8\u610f\u200b\u5bf9\u9f50\u200b\u6539\u53d8\u200b\u7684\u200b\u662f\u200b\u5c0f\u200b\u7684\u200b\u6307\u6570\u200b\u90a3\u4e2a\u200b
  • \u200b\u6d6e\u70b9\u200b\u4e58\u6cd5\u200b\uff0c\u200b\u6ce8\u610f\u200b\u51cf\u53bb\u200b bias
"},{"location":"Note/ADS/B-Tree_B%2BTree/","title":"B Tree B+Tree","text":"

\u200b\u7ea6\u200b 424 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

1.

B \u200b\u6811\u200b\u5229\u7528\u200b\u4e86\u200b\u5c40\u90e8\u6027\u200b\u6765\u200b\u52a0\u901f\u200b\u8bbf\u95ee\u200b\n\nB \u200b\u6811\u200b\u7684\u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\u662f\u200b\u6307\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u7a7a\u200b\u5b69\u5b50\u200b\n\n![](image/B-Tree_B+Tree/media/image1.png)\n

2.

\u200b\u5bf9\u200b B \u200b\u6811\u200b\u7684\u200b\u8282\u70b9\u200b\u5173\u952e\u7801\u200b\u6570\u200b\u7ea6\u5b9a\u200b\uff0c\u200b\u6ce8\u610f\u200b\u4e0b\u9650\u200b\u662f\u200b\u4e0a\u200b\u53d6\u6574\u200b\uff0c\u200b\u53ef\u7528\u200b\u4e0a\u200b\u4e0b\u9650\u200b\u547d\u540d\u200b\n\u200b\u5982\u200b\uff083\uff0c5\uff09\u200b\u6811\u200b/5 \u200b\u9636\u200b B \u200b\u6811\u200b\uff0c5 \u200b\u9636\u200b B \u200b\u6570\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u6700\u200b\u591a\u200b 4 \u200b\u4e2a\u200b\u5173\u952e\u7801\u200b\n\n![](image/B-Tree_B+Tree/media/image2.png)\n

3.

B \u200b\u6811\u200b\u5728\u200b\u5185\u5b58\u200b\u4e2d\u200b\u5b9e\u9645\u200b\u7684\u200b\u5b58\u50a8\u200b\u5f62\u5f0f\u200b\u4e3a\u200b\n\n![](image/B-Tree_B+Tree/media/image3.png)\n

4.

\u200b\u6ce8\u610f\u200b \u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\u6570\u200b=\u200b\u5185\u90e8\u200b\u8282\u70b9\u200b\u6570\u200b+1\n\n![](image/B-Tree_B+Tree/media/image4.png)\n\n\n\u200b\u4e5f\u200b\u53ef\u200b\u7406\u89e3\u200b\u4e3a\u200b\u5185\u90e8\u200b\u8282\u70b9\u200b\u5bf9\u5e94\u200b N \u200b\u79cd\u200b\u6210\u529f\u200b\uff0c\u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\u5c31\u662f\u200b\u5bf9\u5e94\u200b\u7684\u200b N+1 \u200b\u79cd\u200b\u5931\u8d25\u200b\u7684\u200b\u60c5\u51b5\u200b\n

5.

B \u200b\u6811\u200b\u7684\u200b\u9ad8\u5ea6\u200b\u5c31\u200b\u5728\u200b\u3001\\thetalogmn\n\n![](image/B-Tree_B+Tree/media/image5.png)\n

6.

B \u200b\u6570\u200b\u7684\u200b\u63d2\u5165\u200b\uff0c\u200b\u5982\u679c\u200b\u5bfc\u81f4\u200b\u8282\u70b9\u200b key \u200b\u8fc7\u591a\u200b\uff0c\u200b\u5219\u200b\u9700\u8981\u200b\u5206\u88c2\u200b\uff0c\u200b\u5e76\u200b\u628a\u200b\u4e2d\u70b9\u200b\u4e0a\u79fb\u200b\n\n![](image/B-Tree_B+Tree/media/image6.png)\n\n\n\u200b\u5982\u679c\u200b\u5206\u88c2\u200b\u5230\u200b\u6839\u200b \u200b\u90a3\u4e48\u200b\u9ad8\u5ea6\u200b\u52a0\u200b 1\n

7.

B \u200b\u6811\u200b\u7684\u200b\u5220\u9664\u200b\uff0c\u200b\u5982\u679c\u200b\u5bfc\u81f4\u200b\u4e0b\u200b\u8d8a\u754c\u200b\uff0c\u200b\u4f46\u51e1\u200b\u5de6\u53f3\u200b\u6709\u200b\u4e00\u4e2a\u200b\u5144\u5f1f\u200b\u6709\u200b\u591a\u200b\u7684\u200b\uff08\u200b\u501f\u51fa\u200b\u540e\u200b\u4e0d\u4e0b\u200b\u6ea2\u51fa\u200b\uff09\uff0c\u200b\u65cb\u8f6c\u200b\n\n![](image/B-Tree_B+Tree/media/image7.png)\n\n\n\u200b\u5982\u679c\u200b\u6ca1\u6709\u200b\uff0c \u200b\u4ece\u200b\u4e0a\u9762\u200b\u62fd\u200b\u4e00\u4e2a\u200b\u4e0b\u6765\u200b\uff0c\u200b\u4e09\u200b\u90e8\u5206\u200b\u4e00\u8d77\u200b\u5408\u5e76\u200b\n\n![](image/B-Tree_B+Tree/media/image8.png)\n\n\n\u200b\u5408\u5e76\u200b\u5230\u200b\u6839\u200b\uff0c\u200b\u5c31\u200b\u628a\u200b\u7a7a\u6839\u200b\u5220\u9664\u200b\uff0c\u200b\u81f3\u6b64\u200b\u9ad8\u5ea6\u200b\u51cf\u4e00\u200b\n

8.

B \u200b\u6811\u200b\u628a\u200b\u6570\u636e\u200b\u5b58\u5728\u200b\u8282\u70b9\u200b\u4e2d\u200b\uff0c\u200b\u6bd4\u8d77\u200b B+\u200b\u6811\u200b\u5b58\u5728\u200b\u6839\u4e2d\u200b\uff0cB \u200b\u9664\u4e86\u200b key \u200b\u591a\u200b\u4e86\u200b\u4e2a\u200b\u6307\u9488\u200b\u7684\u200b\u5927\u5c0f\u200b.\u200b\u9664\u53bb\u200b\u6307\u9488\u200b\u7d22\u5f15\u200b\u53ef\u4ee5\u200b\u5bb9\u7eb3\u200b\u5bbd\u200b\u6241\u200b\u7684\u200b\u6811\u200b.\n\n\u200b\u53e6\u5916\u200b\u52a0\u5165\u200b\u8981\u200b\u67e5\u627e\u200b\u67d0\u4e00\u200b\u533a\u95f4\u200b\u7684\u200b\u70b9\u200b\u6bd4\u5982\u200b 20-60\uff0c\u200b\u9700\u8981\u200b\u4f9d\u6b21\u200b\u641c\u7d22\u200b\uff0c\u200b\u5f88\u200b\u9ebb\u70e6\u200b\n\n\u200b\u5f15\u5165\u200b B+\u200b\u6811\u200b\uff1a\n\n![](image/B-Tree_B+Tree/media/image9.png)\n\n\n\u200b\u7d22\u5f15\u200b\u503c\u200b\uff08\u200b\u5185\u90e8\u200b\u70b9\u200b\uff09\u200b\u4e0d\u200b\u91cd\u590d\u200b\uff1b\n\n\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b B \u200b\u6811\u200b\u7684\u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\uff1b\n\n\u200b\u53f6\u5b50\u200b\u5757\u200b\u5355\u5411\u200b\u94fe\u8868\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u67e5\u627e\u200b\u67d0\u4e2a\u200b\u8303\u56f4\u200b\u5185\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u4e0d\u5fc5\u200b\u591a\u904d\u200b\u4ece\u6839\u200b\u51fa\u53d1\u200b.\n\n\u200b\u7d22\u5f15\u200b\u503c\u200b\uff08\u200b\u5185\u90e8\u200b\u70b9\u200b\u7684\u200b key\uff09\u200b\u5b58\u200b\u7684\u200b\u662f\u200b\u53f3\u5b50\u200b\u6811\u200b\u7684\u200b\u6700\u5c0f\u200b\u53f6\u5b50\u200b\u8282\u70b9\u200b\u7684\u200b\u503c\u200b.\n\n\u200b\u5982\u679c\u200b\u6709\u200b\u78c1\u76d8\u200b\u6307\u9488\u200b\uff0c\u200b\u4e5f\u200b\u90fd\u200b\u5b58\u5728\u200b\u6709\u200b\u8282\u70b9\u200b.\n\n\u200b\u63d2\u5165\u200b\u5220\u9664\u200b\u4e0e\u200b B \u200b\u6811\u200b\u76f8\u4eff\u200b.\u200b\u4f46\u200b\u90fd\u200b\u8981\u200b\u6df1\u5165\u200b\u5230\u200b\u53f6\u200b\u8282\u70b9\u200b.\n
"},{"location":"Note/ADS/BST_AVL_Splay/","title":"BST AVL Splay","text":"

\u200b\u7ea6\u200b 287 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

  1. \u200b\u6211\u4eec\u200b\u5728\u200b\u8c03\u7528\u200b search \u200b\u65f6\u4f1a\u200b\u591a\u200b\u4f20\u9012\u200b\u4e00\u4e2a\u200b\u5f15\u7528\u200b\u7684\u200b\u53c2\u6570\u200b hot \u200b\u5176\u200b\u610f\u4e49\u200b\u5982\u4e0b\u200b\uff1a

    \u200b\u8fd9\u200b\u6709\u5229\u4e8e\u200b\u6211\u4eec\u200b\u5b9e\u73b0\u200b insert delete

2.

BST \u200b\u7684\u200b\u5e73\u5747\u200b\u9ad8\u5ea6\u200b\uff0c\u200b\u6709\u200b\u4e24\u79cd\u200b\u8ba1\u7b97\u200b\u65b9\u5f0f\u200b\n\n  1.  \u200b\u968f\u673a\u200b\u7ec4\u6210\u200b\uff1a\u200b\u8ba1\u7b97\u200b\u4e00\u5171\u200b\u6709\u200b\u591a\u5c11\u200b\u79cd\u200b\u53ef\u80fd\u200b\u7684\u200b\u62d3\u6251\u200b\u7ed3\u6784\u200b \u200b\u6839\u53f7\u200b n Catalan\uff08N\uff09\u200b\u79cd\u200b\u7ed3\u6784\u200b\n\n  2.  \u200b\u968f\u673a\u200b\u751f\u6210\u200b\uff1a\u200b\u8ba1\u7b97\u200b\u4e00\u5171\u200b\u6709\u200b\u591a\u5c11\u200b\u79cd\u200b\u53ef\u80fd\u200b\u7684\u200b\u8f93\u5165\u200b\u5e8f\u5217\u200b ln N N\uff01\u200b\u79cd\u200b\u5e8f\u5217\u200b\n\n![](image/BST_AVL_Splay/media/image2.png)\n\n\n\u200b\u968f\u673a\u200b\u7ec4\u6210\u200b\u66f4\u52a0\u200b\u53ef\u4fe1\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u968f\u673a\u200b\u751f\u6210\u200b\u4f1a\u200b\u989d\u5916\u200b\u589e\u5927\u200b 213 \u200b\u548c\u200b 231 \u200b\u8fd9\u4e00\u8f83\u200b\u4f4e\u6811\u200b\u7684\u200b\u6743\u91cd\u200b\uff0c\u200b\u91cd\u590d\u200b\u4e86\u200b\n

3.\u200b\u7b49\u4ef7\u200b BST

\u200b\u4e0a\u4e0b\u200b\u5177\u6709\u200b\u4e00\u5b9a\u200b\u7684\u200b\u7075\u6d3b\u200b\u5ea6\u200b\n\n![](image/BST_AVL_Splay/media/image3.png)\n\n\n![](image/BST_AVL_Splay/media/image4.png)\n

4.

![](image/BST_AVL_Splay/media/image5.png)\n\n\n\u200b\u5de6\u200b\u5206\u53c9\u200b\u662f\u200b zig \u200b\u53f3\u200b\u5206\u53c9\u200b\u662f\u200b zag\uff0c\u200b\u65cb\u8f6c\u200b\u53ef\u4ee5\u200b\u4fdd\u6301\u200b BST \u200b\u7684\u200b\u7b49\u4ef7\u200b\n

5.

AVL \u200b\u7684\u200b\u63d2\u5165\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u4e00\u7cfb\u5217\u200b\u7956\u5148\u200b\u7684\u200b\u5931\u8861\u200b\uff0c\u200b\u4f46\u662f\u200b\u5220\u9664\u200b\u53ea\u200b\u53ef\u80fd\u200b\u5bfc\u81f4\u200b\u67d0\u200b\u4e00\u4e2a\u200b\u7956\u5148\u200b\u7684\u200b\u5931\u8861\u200b\n

6.

![](image/BST_AVL_Splay/media/image6.png)\n\n\n\u200b\u6ce8\u610f\u200b\u5230\u200b\u6211\u4eec\u200b\u627e\u5230\u200b\u7b2c\u4e00\u4e2a\u200b\u5931\u8861\u200b\u70b9\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5faa\u73af\u200b\u8d70\u200b\u554a\u200b\u8def\u5f84\u200b\u53ea\u8981\u200b\u5f80\u4e0b\u200b\u627e\u200b\u4e24\u6b21\u200b\u9ad8\u5ea6\u200b\u6700\u9ad8\u200b\u7684\u200b\u5b69\u5b50\u200b\u5c31\u200b\u597d\u200b\n

7.

\u200b\u4f38\u5c55\u200b\u6811\u200b\u7684\u200b\u5220\u9664\u200b\u548c\u200b\u63d2\u5165\u200b\uff0c\u200b\u7531\u4e8e\u200b 1 \u200b\u90fd\u200b\u9700\u8981\u200b\u7528\u200b search \u200b\u64cd\u4f5c\u200b\uff0csearch \u200b\u5b8c\u540e\u200b self/hot \u200b\u4f1a\u200b\u6210\u4e3a\u200b\u65b0\u200b\u7684\u200b\u6839\u200b\u8282\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u63d2\u5165\u200b\u5220\u9664\u200b\u53ea\u8981\u200b\u5728\u200b\u641c\u7d22\u200b\u5b8c\u540e\u200b\u5bf9\u200b\u6839\u200b\u64cd\u4f5c\u200b\u5373\u53ef\u200b.\n\n![](image/BST_AVL_Splay/media/image7.png)\n
"},{"location":"Note/ADS/Heap/","title":"\u4f18\u5148\u7ea7\u200b\u961f\u5217\u200b/\u200b\u5806\u200b\u62fe\u9057","text":"

\u200b\u7ea6\u200b 100 \u200b\u4e2a\u200b\u5b57\u200b

"},{"location":"Note/ADS/Heap/#npl","title":"NPL \u200b\u7684\u200b\u53e6\u200b\u4e00\u79cd\u200b\u7406\u89e3","text":"

\u200b\u53ef\u4ee5\u200b\u53c2\u770b\u200b\u56fe\u7247\u200b\u7406\u89e3\u200b\uff0c\u200b\u8282\u70b9\u200b NPL \u200b\u4e5f\u200b\u662f\u200b\u8be5\u5b50\u200b\u6811\u200b\u7684\u200b\u6700\u5927\u200b\u5b8c\u5168\u200b\u4e8c\u53c9\u6811\u200b\u6df1\u5ea6\u200b

"},{"location":"Note/ADS/Heap/#_2","title":"\u6700\u5c0f\u200b\u8282\u70b9\u200b\u6570\u200b\u7684\u200b\u8bc1\u660e","text":"

\u200b\u5728\u200b\u6b64\u57fa\u7840\u200b\u4e0a\u200b\u5f88\u200b\u597d\u200b\u8bc1\u660e\u200b\u53f3\u4fa7\u200b\u94fe\u200b\u7684\u200b\u957f\u5ea6\u200b\u4e0a\u9650\u200b

"},{"location":"Note/ADS/Heap/#_3","title":"\u9526\u6807\u8d5b\u200b\u6811\u200b\uff0c\u200b\u4e86\u89e3\u200b\u5373\u53ef","text":""},{"location":"Note/ADS/Heap/#_4","title":"\u591a\u53c9\u5806\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u590d\u6742\u5ea6\u200b\u6539\u53d8","text":"

\u200b\u8fd9\u200b\u5c06\u200b\u5bfc\u81f4\u200b\u5e94\u7528\u200b\u5728\u200b\u56fe\u200b\u7b97\u6cd5\u200b\u4e0a\u200b\u81ea\u200b\u9002\u5e94\u200b\u6700\u4f18\u200b

"},{"location":"Note/ADS/RBTree/","title":"RBTree","text":"

\u200b\u7ea6\u200b 70 \u200b\u4e2a\u200b\u5b57\u200b

1.

\u200b\u56db\u4e2a\u200b\u7ea6\u675f\u6761\u4ef6\u200b\uff1a\n\n![](image/RBTree/media/image1.png)\n

2.

\u200b\u7ea2\u9ed1\u6811\u200b\u5c31\u662f\u200b B-\u200b\u6811\u200b\n\n![](image/RBTree/media/image2.png)\n

3.

\u200b\u5229\u7528\u200b B-\u200b\u6811\u200b\u8bc1\u660e\u200b\u7ea2\u9ed1\u6811\u200b\u7684\u200b\u9ad8\u5ea6\u200b\n\n![](image/RBTree/media/image3.png)\n

4.

\u200b\u5229\u7528\u200b B-Tree \u200b\u8ba4\u8bc6\u200b\u95ee\u9898\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u53ea\u200b\u9700\u200b\u4f7f\u7528\u200b 3\uff0c4 \u200b\u91cd\u6784\u200b\u5373\u53ef\u200b\uff0c\u200b\u91cd\u65b0\u200b\u5f52\u4e8e\u200b RBR\n\n![](image/RBTree/media/image4.png)\n

5.

\u200b\u7ea2\u9ed1\u6811\u200b\u63d2\u5165\u200b\u7684\u200b\u590d\u6742\u5ea6\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u91cd\u6784\u200b\uff08\u200b\u65cb\u8f6c\u200b\uff09\u200b\u81f3\u591a\u200b\u5e38\u6570\u200b\u6b21\u200b\n\n![](image/RBTree/media/image5.png)\n
"},{"location":"Note/Data%20Modeling/","title":"\u6570\u636e\u200b\u5efa\u6a21\u200b\u4e0e\u200b\u5206\u6790","text":"

\u200b\u7ea6\u200b 138 \u200b\u4e2a\u200b\u5b57\u200b

\u200b\u8bfe\u7a0b\u200b\u4fe1\u606f\u200b

\u200b\u6388\u8bfe\u200b\u6559\u5e08\u200b\uff1a\u200b\u90ed\u6b63\u521d\u200b

\u200b\u5f00\u200b\u79d1\u5b66\u9662\u200b\uff1a\u200b\u6570\u5b66\u200b\u79d1\u5b66\u200b\u5b66\u9662\u200b

\u200b\u5f00\u8bfe\u200b\u5b66\u671f\u200b\uff1a2023 \u200b\u5e74\u6625\u590f\u200b

\u200b\u9884\u4fee\u200b\u8981\u6c42\u200b\uff1a\u200b\u5fae\u79ef\u5206\u200b\uff0c\u200b\u7ebf\u6027\u4ee3\u6570\u200b\uff0c\u200b\u6982\u7387\u8bba\u200b

\u200b\u6559\u6750\u200b\uff1a \u200b\u7edf\u8ba1\u200b\u5b66\u4e60\u200b\u65b9\u6cd5\u200b \u200b\u674e\u822a\u200b \u200b\u7b2c\u4e8c\u200b\u7248\u200b

\u200b\u672c\u95e8\u200b\u8bfe\u7a0b\u200b\u4e3b\u8981\u200b\u805a\u7126\u200b\u4e8e\u200b\u673a\u5668\u200b\u5b66\u4e60\u200b\u7684\u200b\u7b97\u6cd5\u200b\u8bb2\u89e3\u200b\u4e0e\u200b\u5206\u6790\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5927\u90e8\u5206\u200b\u673a\u5668\u200b\u5b66\u4e60\u200b\u7684\u200b\u65b9\u6cd5\u200b\u4ecd\u200b\u5c5e\u4e8e\u200b\u7edf\u8ba1\u200b\u5b66\u4e60\u200b\u800c\u200b\u975e\u200b\u6df1\u5ea6\u200b\u5b66\u4e60\u200b\u7684\u200b\u8303\u7574\u200b\uff0c\u200b\u6bd4\u8f83\u200b\u4f20\u7edf\u200b. \u200b\u672c\u95e8\u200b\u8bfe\u7a0b\u200b\u4e3a\u200b\u6570\u5b66\u200b\u79d1\u5b66\u200b\u5b66\u9662\u200b\u5f00\u8bbe\u200b\uff0c\u200b\u6570\u5b66\u200b\u6c14\u606f\u200b\u6bd4\u8f83\u200b\u6d53\u539a\u200b.

"},{"location":"Note/Data%20Modeling/Boosting/","title":"\u63d0\u5347\u200b\u65b9\u6cd5","text":"

\u200b\u7ea6\u200b 453 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

"},{"location":"Note/Data%20Modeling/Boosting/#adaboost","title":"AdaBoost","text":"

\u200b\u8f93\u5165\u200b\uff1a\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u4e00\u79cd\u200b\u5f31\u200b\u5b66\u4e60\u200b\u7b97\u6cd5\u200b \u200b\u8f93\u51fa\u200b\uff1a\u200b\u6700\u7ec8\u200b\u5206\u7c7b\u5668\u200b G(x)

  • \u200b\u521d\u59cb\u5316\u200b\u8bad\u7ec3\u200b\u6570\u636e\u200b\u7684\u200b\u6743\u503c\u200b\u5206\u5e03\u200b

    \\[ D_1 = (w_{11}\uff0c\\cdots\uff0cw_{1i}\uff0c\\cdots\uff0cw_{1N})\uff0cw_{1i} = \\frac{1}{N}\uff0ci=1\uff0c2\uff0c\\cdots\uff0cN \\]
  • \u200b\u8fd0\u884c\u200b\u5f31\u200b\u5b66\u4e60\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u5f97\u5230\u200b\u5f31\u200b\u5206\u7c7b\u5668\u200b\\(G_m(x)\\)

    \u200b\u8ba1\u7b97\u8bef\u5dee\u200b\u7387\u200b : \\(e_m = \\sum_{i=1}^{N} P(G_m(x_i) \\neq y_i) = \\sum_{i=1}^{N} w_{mi}I(G_m(x_i) \\neq y_i)\\)

    \u200b\u8be5\u200b\u5206\u7c7b\u5668\u200b\u7684\u200b\u6743\u91cd\u200b\u4e3a\u200b\uff1a\\(\\alpha_m = \\frac{1}{2} \\log \\frac{1-e_m}{e_m}\\)

    \u200b\u66f4\u65b0\u200b\u65b0\u4e00\u8f6e\u200b\u7684\u200b\u6743\u91cd\u200b\uff0c\u200b\u5176\u4e2d\u200b\u6bcf\u4e2a\u200b\u6837\u672c\u200b\u7684\u200b\u6743\u91cd\u200b\u4e3a\u200b\uff1a\\(w_{m+1\uff0ci} = \\frac{w_{mi}}{Z_m} \\exp(-\\alpha_m y_i G_m(x_i))\\) \uff08\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5982\u679c\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6743\u91cd\u200b\u4f1a\u200b\u51cf\u5c0f\u200b\uff0c\u200b\u5982\u679c\u200b\u5206\u7c7b\u200b\u9519\u8bef\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6743\u91cd\u200b\u4f1a\u200b\u589e\u5927\u200b\uff09

  • \u200b\u91cd\u590d\u200b\u7b2c\u4e8c\u6b65\u200b\uff0c\u200b\u76f4\u5230\u200b\u5f3a\u200b\u5206\u7c7b\u5668\u200b\\(G(x) = \\sum_{m=1}^{M} \\alpha_m G_m(x)\\)\u200b\u5df2\u7ecf\u200b\u6ee1\u8db3\u200b\u5206\u7c7b\u200b\u8981\u6c42\u200b

"},{"location":"Note/Data%20Modeling/Boosting/#_2","title":"\u63d0\u5347\u200b\u6811","text":"

\u200b\u63d0\u5347\u200b\u6811\u662f\u200b\u4ee5\u200b\u51b3\u7b56\u6811\u200b/\u200b\u56de\u5f52\u200b\u6811\u4e3a\u200b\u57fa\u200b\u5206\u7c7b\u5668\u200b\u7684\u200b\u5047\u53d1\u200b\u6a21\u578b\u200b.

\u200b\u6211\u4eec\u200b\u5b9a\u4e49\u200b\u4e00\u4e2a\u200b\u524d\u884c\u200b\u5206\u6b65\u200b\u4e3a\u200b\uff1a

\\[ f_m(x) = f_{m-1}(x) + T(x;\\Theta_m) \\]

\u200b\u5176\u4e2d\u200b\u65b0\u6811\u200b\u7684\u200b\u53c2\u6570\u200b\u901a\u8fc7\u200b\u7ecf\u9a8c\u200b\u98ce\u9669\u200b\u6781\u5c0f\u200b\u5316\u200b\u8fdb\u884c\u200b\u66f4\u65b0\u200b\uff1a

\\[ \\Theta_m = \\underset{\\Theta}{\\operatorname{argmin}} \\sum_{i=1}^{N} L(y_i\uff0cf_{m-1}(x_i) + T(x_i;\\Theta)) \\]

\u200b\u5bf9\u4e8e\u200b\u56de\u5f52\u200b\u6811\u200b\uff0c\u200b\u6211\u4eec\u200b\u5199\u51fa\u200b\u5e73\u65b9\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff1a

\\[ L = (y - f(x))^2 = (y - f_{m-1}(x) - T(x;\\Theta))^2 = [r - T(x;\\Theta)]^2 \\]

\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u65b0\u200b\u8bad\u7ec3\u200b\u4e00\u4e2a\u200b\u6811\u200b T \u200b\u6765\u200b\u62df\u5408\u200b\u9910\u53c9\u200b\\(r = y - f_{m-1}(x)\\)\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e86\u200b.

"},{"location":"Note/Data%20Modeling/Boosting/#_3","title":"\u68af\u5ea6\u200b\u63d0\u5347","text":"

\u200b\u5bf9\u4e8e\u200b\u4e00\u822c\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff08\u200b\u975e\u200b\u5e73\u65b9\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff09\uff0c\u200b\u4e0d\u662f\u200b\u90a3\u4e48\u200b\u5bb9\u6613\u200b\u627e\u5230\u200b\u6b8b\u5dee\u200b

\u200b\u901a\u5e38\u200b\u6211\u4eec\u200b\u4f1a\u200b\u7528\u200b\\(\\frac{\\partial L(y_i\uff0cf(x_i))}{\\partial f(x_i)}\\)\u200b\u6765\u200b\u4ee3\u66ff\u200b\u6b8b\u5dee\u200b\uff0c\u200b\u8bad\u7ec3\u200b\u4e00\u68f5\u200b\u65b0\u200b\u7684\u200b\u6811\u6765\u200b\u62df\u5408\u200b\u6b8b\u5dee\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u65b0\u6811\u200b\u7684\u200b\u6bcf\u4e2a\u200b\u5206\u652f\u200b\uff0c\u200b\u7528\u200b\u7ecf\u9a8c\u200b\u98ce\u9669\u200b\u6700\u5c0f\u5316\u200b\u6765\u200b\u786e\u5b9a\u200b\u4ee3\u8868\u200b\u503c\u200b

"},{"location":"Note/Data%20Modeling/Centering/","title":"\u805a\u7c7b\u200b\u65b9\u6cd5","text":"

\u200b\u7ea6\u200b 1018 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

Warning

\u200b\u8fd9\u7ae0\u200b\u6211\u200b\u770b\u200b\u7684\u200b\u660f\u660f\u200b\u7684\u200b\uff0c\u200b\u53ea\u7b97\u9884\u200b\u53d1\u5e03\u200b

"},{"location":"Note/Data%20Modeling/Centering/#_2","title":"\u4e00\u4e9b\u200b\u5b9a\u4e49","text":"

\u200b\u6837\u672c\u200b\u95f4\u8ddd\u200b

\u200b\u95f5\u53ef\u200b\u592b\u65af\u57fa\u200b\u8ddd\u79bb\u200b\u9a6c\u6c0f\u200b\u8ddd\u79bb\u200b\u76f8\u5173\u7cfb\u6570\u200b\u5939\u89d2\u200b\u4f59\u5f26\u200b \\[ d_{ij} = \\left( \\sum_{k=1}^p \\left| x_{ik} - x_{jk} \\right|^r \\right)^{\\frac{1}{r}} \\]

\u200b\u9996\u5148\u200b\u8ba1\u7b97\u200b\u534f\u65b9\u5dee\u200b\u77e9\u9635\u200b S

\\[ S = \\frac{1}{n-1} \\sum_{i=1}^n (x_i - \\bar{x})(x_i - \\bar{x})^T \\]

\u200b\u9996\u5148\u200b\u8ba1\u7b97\u200b\u534f\u65b9\u5dee\u200b\u77e9\u9635\u200b S

\\[ r_{ij} = \\frac{S_{ij}}{\\sqrt{S_{ii}S_{jj}}} \\] \\[ \\cos \\theta_{ij} = \\frac{x_i^T x_j}{\\sqrt{x_i^T x_i x_j^T x_j}} \\]

\u200b\u4e00\u4e9b\u200b\u77e9\u9635\u200b

\u200b\u6837\u672c\u200b\u6563\u5e03\u200b\u77e9\u9635\u200b\u534f\u65b9\u5dee\u200b\u77e9\u9635\u200b \\[ S = \\sum_{i=1}^n (x_i - \\bar{x})(x_i - \\bar{x})^T \\] \\[ S = \\frac{1}{n-1} \\sum_{i=1}^n (x_i - \\bar{x})(x_i - \\bar{x})^T \\]

\u200b\u7c7b\u200b\u76f8\u5173\u200b\u5b9a\u4e49\u200b

\u200b\u7c7b\u7c7b\u200b\u76f4\u5f84\u200b\u7c7b\u200b\u4e2d\u5fc3\u200b\u7c7b\u95f4\u200b\u8ddd\u79bb\u200b

\u200b\u4e00\u4e2a\u200b\u7c7b\u200b\u5c31\u662f\u200b\u6570\u636e\u200b\u96c6\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5b50\u96c6\u200b

\u200b\u7c7b\u5185\u200b\u6700\u8fdc\u200b\u95f4\u8ddd\u200b

\\[ D_G = \\underset{x_i\uff0cx_j \\in G}{\\operatorname{max}} d_{ij} \\]

\u200b\u4e5f\u200b\u5c31\u662f\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u7684\u200b\u5e73\u5747\u503c\u200b

\\[ \\bar{x} = \\frac{1}{n} \\sum_{x_i \\in G} x_i \\]

\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4e24\u7c7b\u200b\u4e2d\u6837\u200b\u7684\u200b\u6700\u200b\u77ed\u8ddd\u79bb\u200b\uff0c\u200b\u6700\u200b\u957f\u8ddd\u79bb\u200b\uff0c\u200b\u4e2d\u5fc3\u200b\u8ddd\u79bb\u200b\u6216\u8005\u200b\u5e73\u5747\u200b\u8ddd\u79bb\u200b

"},{"location":"Note/Data%20Modeling/Centering/#_3","title":"\u805a\u5408\u200b\u805a\u7c7b","text":"

\u200b\u805a\u5408\u200b\u805a\u7c7b\u200b\u4e09\u8981\u7d20\u200b\u4e3a\u200b\uff1a

  • \u200b\u6837\u672c\u200b\u95f4\u8ddd\u200b
  • \u200b\u5408\u5e76\u200b\u89c4\u5219\u200b
  • \u200b\u505c\u6b62\u200b\u6761\u4ef6\u200b

\u200b\u7ed9\u5b9a\u200b\u4ee5\u4e0a\u200b\u4e09\u8981\u7d20\u200b\uff0c\u200b\u4e00\u822c\u200b\u7684\u200b\u805a\u5408\u200b\u805a\u7c7b\u200b\u7684\u200b\u7b97\u6cd5\u200b\u4e3a\u200b\uff1a

  • \u200b\u5f00\u59cb\u200b\uff1a\u200b\u6bcf\u4e2a\u200b\u6837\u672c\u200b\u4e3a\u200b\u4e00\u4e2a\u200b\u7c7b\u200b
  • \u200b\u91cd\u590d\u200b\uff1a\u200b\u4e00\u53e5\u200b\u5408\u5e76\u200b\u89c4\u5219\u200b\uff08\u200b\u4e00\u822c\u200b\u4e3a\u200b\u627e\u5230\u200b\u6700\u5c0f\u200b\u7c7b\u95f4\u200b\u95f4\u8ddd\u200b\uff09\uff0c\u200b\u5408\u5e76\u200b\u4e24\u7c7b\u200b
  • \u200b\u505c\u6b62\u200b\uff1a\u200b\u8fbe\u5230\u200b\u505c\u6b62\u200b\u6761\u4ef6\u200b\u5373\u200b\u8fd4\u56de\u200b\uff0c\u200b\u6bd4\u5982\u200b\u7c7b\u200b\u7684\u200b\u4e2a\u6570\u200b\u8fbe\u5230\u200b\u8981\u6c42\u200b

\u200b\u8be5\u200b\u7b97\u6cd5\u200b\u7684\u200b\u590d\u6742\u5ea6\u200b\u4e3a\u200b\\(O(n^3m)\\)\uff0c\u200b\u5176\u4e2d\u200b m \u200b\u4e3a\u200b\u7ef4\u5ea6\u200b\u6570\u200b\uff0cn \u200b\u4e3a\u200b\u6837\u672c\u200b\u4e2a\u6570\u200b

\u200b\u805a\u5408\u200b\u805a\u7c7b\u200b\u5c5e\u4e8e\u200b\u5c42\u6b21\u200b\u805a\u7c7b\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u4ece\u200b n \u200b\u7c7b\u200b-1 \u200b\u7c7b\u200b\u8fd9\u200b\u4e00\u7cfb\u5217\u200b\u7684\u200b\u5206\u7c7b\u200b\u7ed3\u679c\u200b

\u200b\u6ce8\u610f\u200b\u5728\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\\([d_{ij}]\\)\u200b\u77e9\u9635\u200b\u6765\u200b\u52a0\u901f\u200b\u8fd0\u7b97\u200b

"},{"location":"Note/Data%20Modeling/Centering/#k-means","title":"K-means","text":"

\u200b\u65f6\u95f4\u200b\u590d\u6742\u5ea6\u200b\u4e3a\u200b\\(O(mnk)\\)

k \u200b\u7684\u200b\u9009\u53d6\u200b\u5e94\u8be5\u200b\u5927\u5230\u200b\u7c7b\u200b\u76f4\u5f84\u200b\u4e0d\u518d\u200b\u51cf\u5c0f\u200b\u4e3a\u6b62\u200b

"},{"location":"Note/Data%20Modeling/Centering/#_4","title":"\u8c31\u200b\u805a\u7c7b","text":"

\u200b\u6570\u5b66\u200b\u4e0a\u200b\uff0c\u200b\u8c31\u200b\u5b57\u200b\u4e00\u822c\u200b\u8ddf\u200b\u7279\u5f81\u503c\u200b\u5206\u89e3\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6709\u5173\u200b

\u200b\u6211\u4eec\u200b\u628a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i)\\}\\)\u200b\u4e2d\u200b\u7684\u200b\u6bcf\u200b\u4e00\u4e2a\u70b9\u200b\u90fd\u200b\u5bf9\u5e94\u200b\u5230\u200b\u4e00\u4e2a\u200b\u65e0\u5411\u200b\u5b8c\u5168\u200b\u56fe\u4e0a\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u4e24\u70b9\u200b\u4e4b\u95f4\u200b\u8fde\u8fb9\u200b\u7684\u200b\u6743\u91cd\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b\u5b83\u4eec\u200b\u7684\u200b\u76f8\u4f3c\u200b\u5ea6\u200b.

\u200b\u76f8\u4f3c\u200b\u5ea6\u200b

\\[ w_{ij} = e^{-\\frac{||x_i - x_j||^2}{2\\sigma^2}} \\]

\u200b\u663e\u7136\u200b\uff0c\u200b\u8ddd\u79bb\u200b\u8d8a\u8fd1\u200b\uff0c\u200b\u76f8\u4f3c\u200b\u5ea6\u8d8a\u200b\u5927\u200b.

\u200b\u5bf9\u4e8e\u200b\u90a3\u4e9b\u200b\u8db3\u591f\u200b\u9065\u8fdc\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4e0d\u518d\u200b\u76f8\u8fde\u200b\uff0c\u200b\u76f4\u63a5\u200b\u628a\u200b\u76f8\u4f3c\u200b\u5ea6\u7f6e\u200b 0.\u200b\u5982\u4f55\u200b\u786e\u5b9a\u200b\u8fd9\u4e9b\u200b\u8db3\u591f\u200b\u9065\u8fdc\u200b\u7684\u200b\u70b9\u200b\u5462\u200b - \u200b\u7528\u200b k \u200b\u8fd1\u90bb\u200b\u786e\u5b9a\u200b\u51e0\u4e2a\u200b\u90bb\u8fd1\u200b\u7684\u200b\u70b9\u200b - \u200b\u7528\u200b\u4e00\u4e2a\u200b\\(\\epsilon\\)\u200b\u534a\u5f84\u200b\u6765\u200b\u533a\u5206\u200b\u8fdc\u8fd1\u200b

\u200b\u5b9a\u4e49\u200b\u4e00\u4e2a\u70b9\u200b\u7684\u200b\u5ea6\u200b\u4e3a\u200b\u5176\u200b\u6240\u6709\u200b\u8fb9\u200b\u7684\u200b\u6743\u91cd\u200b\u548c\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u4e0b\u9762\u200b\u4e09\u4e2a\u200b\u77e9\u9635\u200b

\u200b\u77e9\u9635\u200b\u5b9a\u4e49\u200b

\u200b\u5ea6\u200b\u77e9\u9635\u200b D\u200b\u6743\u91cd\u200b\u77e9\u9635\u200b W\u200b\u62c9\u666e\u62c9\u65af\u200b\u77e9\u9635\u200b L \\[ D_{ii} = \\sum_{j=1}^n w_{ij} \\] \\[ W = [w_{ij}] \\] \\[ L = D - W \\]

\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u53d1\u73b0\u200b\u5982\u4e0b\u200b\u6027\u8d28\u200b\uff1a

  • L \u200b\u7684\u200b\u884c\u200b\u548c\u200b\u4e3a\u200b 0
  • L \u200b\u6709\u200b\u4e00\u4e2a\u200b\u7279\u5f81\u5411\u91cf\u200b\u4e3a\u200b 0\uff0c\u200b\u8be5\u200b\u7279\u5f81\u503c\u200b\u6709\u200b\u4e00\u4e2a\u200b\u7279\u5f81\u5411\u91cf\u200b\u4e3a\u200b\u5168\u200b 1 (1)
  • L \u200b\u6709\u200b n \u200b\u4e2a\u200b\u975e\u8d1f\u200b\u7279\u5f81\u503c\u200b\uff0cn \u200b\u662f\u200b\u9876\u70b9\u200b\u6570\u200b
  • L \u200b\u529e\u200b\u6b63\u5b9a\u200b\uff0c\u200b\u4e14\u200b\\(f^TLf = \\frac{1}{2}\\sum_{i\uff0cj=1}^n w_{ij}(f_i - f_j)^2\\)
  • L \u200b\u96f6\u200b\u7279\u5f81\u503c\u200b\u7684\u200b\u91cd\u6570\u200b\u7b49\u4e8e\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u7684\u200b\u4e2a\u6570\u200b
  1. \u200b\u8fd9\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u884c\u548c\u4e3a\u200b 0 \u200b\u7684\u200b\u76f4\u63a5\u200b\u63a8\u8bba\u200b\uff0c\u200b\u6211\u4eec\u200b\u62ff\u5168\u200b 1 \u200b\u5411\u91cf\u200b\u5de6\u4e58\u200b L \u200b\u5c31\u200b\u5f97\u5230\u200b 0 \u200b\u5411\u91cf\u200b\u4e86\u200b

\u200b\u6240\u4ee5\u200b\u5f53\u200b L \u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u96f6\u200b\u7279\u5f81\u503c\u200b\u53ea\u6709\u200b 1 \u200b\u91cd\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5168\u200b 1 \u200b\u5411\u91cf\u200b

\u200b\u5f53\u200b L \u200b\u7684\u200b\u8fde\u901a\u200b\u56fe\u200b\u591a\u4e8e\u200b\u4e00\u4e2a\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u52a0\u5165\u200b L \u200b\u53ef\u4ee5\u200b\u5199\u6210\u200b\uff1a

\\[ L = \\begin{bmatrix} L_1 & 0 & 0 \\\\ 0 & L_2 & 0 \\\\ 0 & 0 & \\dots \\\\ \\end{bmatrix} \\]

\u200b\u90a3\u4e48\u200b\u5176\u200b\u5bf9\u5e94\u200b\u7684\u200b\u96f6\u200b\u7279\u5f81\u5411\u91cf\u200b\u4e3a\u200b\uff1a

\\[ \\begin{bmatrix} 1 \\\\ 1 \\\\ \\vdots \\\\ 0 \\\\ 0 \\\\ \\vdots \\\\ 0 \\\\ 0 \\end{bmatrix} \\begin{bmatrix} 0 \\\\ 0 \\\\ \\vdots \\\\ 1 \\\\ 1 \\\\ \\vdots \\\\ 0 \\\\ 0 \\end{bmatrix}\\dots \\begin{bmatrix} 0 \\\\ 0 \\\\ \\vdots \\\\ 0 \\\\ 0 \\\\ \\vdots \\\\ 1 \\\\ 1 \\end{bmatrix} \\]

\u200b\u57fa\u672c\u4e0a\u200b\u53ef\u4ee5\u200b\u8ba4\u4e3a\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u81ea\u5df1\u200b\u6784\u6210\u200b\u4e00\u4e2a\u200b\u5206\u5757\u200b\\(L_i\\)\uff0c\u200b\u8fd9\u4e2a\u200b\\(L_i\\)\u200b\u4e5f\u200b\u6709\u200b\u4e00\u4e2a\u200b\u81ea\u5df1\u200b\u5bf9\u5e94\u200b\u7684\u200b\u7279\u5f81\u200b\u96f6\u200b\u5411\u91cf\u200b

\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u5c06\u200b\u8fd9\u4e9b\u200b\u7279\u5f81\u5411\u91cf\u200b\u62fc\u63a5\u200b\u6210\u200b\u4e00\u4e2a\u200b\u77e9\u9635\u200b

\\[ F = [f_1\uff0cf_2\uff0c\\dots\uff0cf_n] \\]

\u200b\u7136\u540e\u200b\u6309\u7167\u200b\u884c\u5bf9\u200b\u5176\u200b\u8fdb\u884c\u200b\u805a\u7c7b\u200b\u5c31\u200b\u53ef\u4ee5\u200b\uff08\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6bcf\u4e2a\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u88ab\u200b\u805a\u6210\u200b\u4e00\u7c7b\u200b\uff09

"},{"location":"Note/Data%20Modeling/Decision_Tree/","title":"\u51b3\u7b56\u6811","text":"

\u200b\u7ea6\u200b 2599 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 9 \u200b\u5206\u949f\u200b

\u200b\u4e0b\u56fe\u200b\u662f\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5b9e\u4f8b\u200b\uff0c\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u5185\u90e8\u200b\u8282\u70b9\u200b\u662f\u200b\u7279\u5f81\u200b\uff0c\u200b\u800c\u53f6\u200b\u8282\u70b9\u200b\u662f\u200b\u7c7b\u522b\u200b

\u200b\u51b3\u7b56\u6811\u200b\u5b9e\u4f8b\u200b

\u200b\u51b3\u7b56\u6811\u200b\u7b49\u4ef7\u200b\u4e8e\u200b\u4e00\u7cfb\u5217\u200b\u7684\u200b if-then \u200b\u89c4\u5219\u200b\uff0c\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u5177\u4f53\u200b\u7684\u200b\u4f8b\u5b50\u200b\u90fd\u200b\u88ab\u200b\u4e14\u200b\u4ec5\u200b\u88ab\u200b\u4e00\u6761\u200b\u8def\u5f84\u200b\u8986\u76d6\u200b.

\u200b\u51b3\u7b56\u6811\u200b\u8fd8\u200b\u7b49\u4ef7\u200b\u4e8e\u200b\u4e00\u79cd\u200b\u6761\u4ef6\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u4e0d\u8fc7\u200b\u8fd9\u79cd\u200b\u6761\u4ef6\u200b\u6982\u7387\u5206\u5e03\u200b\u88ab\u200b\u5f3a\u5316\u200b\u6210\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7a7a\u95f4\u200b\u7684\u200b\u5212\u5206\u200b.

\u200b\u51b3\u7b56\u6811\u200b\u7b97\u6cd5\u200b\u4e3b\u8981\u200b\u6709\u200b\u4ee5\u4e0b\u200b\u4e09\u4e2a\u200b\u8fc7\u7a0b\u200b\uff1a

  • \u200b\u7279\u5f81\u9009\u62e9\u200b
  • \u200b\u51b3\u7b56\u6811\u200b\u751f\u6210\u200b
  • \u200b\u51b3\u7b56\u6811\u200b\u526a\u679d\u200b
"},{"location":"Note/Data%20Modeling/Decision_Tree/#_2","title":"\u7279\u5f81\u9009\u62e9","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#_3","title":"\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6cd5","text":"

\u200b\u9996\u5148\u200b\u6211\u4eec\u200b\u5148\u200b\u5b9a\u4e49\u200b\u71b5\u200b\u548c\u200b\u6761\u4ef6\u200b\u71b5\u200b

\u200b\u71b5\u200b

\u200b\u7ed9\u5b9a\u200b\u4e00\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b X\uff1a

\\[ P(X = x_i) = P_i \\]

\u200b\u90a3\u4e48\u200b\u8be5\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u4e3a\u200b\uff1a

\\[ H(X) = -\\sum_{i=1}^{n}P_i\\log P_i \\quad\\quad \\in [0\uff0c\\log n] \\]

\u200b\u6ce8\u610f\u200b\uff0c\u200b\u5728\u200b\u8ba8\u8bba\u200b\u71b5\u200b\u662f\u200b\u9ed8\u8ba4\u200b\u5bf9\u6570\u200b\u7684\u200b\u5e95\u200b\u4e3a\u200b 2\uff0c\u200b\u6b64\u65f6\u200b\u71b5\u200b\u7684\u200b\u5355\u4f4d\u200b\u4e3a\u200b bit.

\u200b\u5bf9\u200b\u71b5\u200b\u7684\u200b\u7406\u89e3\u200b

\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u6709\u200b\u4e00\u4e2a\u200b\u968f\u673a\u200b\u4e3a\u200b 0-7 \u200b\u7684\u200b\u7b49\u200b\u6982\u7387\u200b\u7684\u200b\u968f\u673a\u53d8\u91cf\u200b\uff0c\u200b\u4ece\u200b\u4e0a\u5f0f\u200b\u53ef\u4ee5\u200b\u5f88\u200b\u5bb9\u6613\u200b\u8ba1\u7b97\u200b\u51fa\u200b\u4ed6\u200b\u7684\u200b\u71b5\u200b\u662f\u200b 3bit\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u9700\u8981\u200b 3bit \u200b\u7684\u200b\u4fe1\u606f\u200b\u624d\u80fd\u200b\u786e\u5b9a\u200b\u8fd9\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u53d6\u503c\u200b. \u200b\u8fd9\u200b\u8ddf\u200b\u76f4\u89c2\u200b\u4e0a\u200b\u4e5f\u200b\u662f\u200b\u543b\u5408\u200b\u7684\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u81f3\u5c11\u200b 3bit \u200b\u7684\u200b\u7f16\u7801\u200b\u6765\u200b\u5206\u522b\u200b\u8fd9\u200b\u516b\u4e2a\u200b\u4fe1\u53f7\u200b\uff08000-111\uff09.

\u200b\u4e0a\u5f0f\u200b\u4e2d\u200b\u7684\u200b log \u200b\u7684\u200b\u884c\u4e3a\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\uff0c\u200b\u5982\u679c\u200b\u4e00\u4e2a\u200b\u4fe1\u53f7\u200b\u6709\u200b \u215b \u200b\u7684\u200b\u6982\u7387\u200b\u51fa\u73b0\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u4e2a\u200b\u4fe1\u53f7\u200b\u9700\u8981\u200b\\(-\\log_2 1/8 = 3\\)bit \u200b\u7684\u200b\u7f16\u7801\u200b\u6765\u200b\u8868\u793a\u200b.\u200b\u5982\u679c\u200b\u4e00\u4e2a\u200b\u4fe1\u53f7\u200b\u6709\u200b \u00bc \u200b\u7684\u200b\u6982\u7387\u200b\u51fa\u73b0\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u4e2a\u200b\u4fe1\u53f7\u200b\u9700\u8981\u200b\\(-\\log_2 1/4 = 2\\)bit \u200b\u7684\u200b\u7f16\u7801\u200b\u6765\u200b\u8868\u793a\u200b.\u200b\u6700\u540e\u200b\u6211\u4eec\u200b\u5bf9\u200b\u8fd9\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u7684\u200b\u8ba1\u7b97\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u5bf9\u200b\u8fd9\u4e2a\u200b\u7f16\u7801\u200b\u957f\u5ea6\u200b\u6c42\u200b\u671f\u671b\u200b.

\u200b\u800c\u200b\u71b5\u200b\u7684\u200b\u503c\u200b\u8d8a\u200b\u5927\u200b\uff0c\u200b\u6211\u4eec\u200b\u76ee\u524d\u200b\u7684\u200b\u4fe1\u606f\u200b\u5c31\u200b\u8d8a\u5c11\u200b.

\u200b\u5047\u5982\u200b\u6211\u4eec\u200b\u8981\u200b\u9884\u6d4b\u200b\u7684\u200b\u4eba\u200b\u7684\u200b\u8fdb\u653b\u200b\u65b9\u5411\u200b\uff0c\u200b\u82e5\u200b\u654c\u4eba\u200b\u8fdb\u653b\u200b\u65b9\u5411\u200b\u8fd9\u4e00\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u4e3a\u200b 3bits\uff0c\u200b\u7b49\u6548\u200b\u654c\u4eba\u200b\u4ece\u200b\u516b\u4e2a\u200b\u65b9\u5411\u200b\u7b49\u200b\u53ef\u80fd\u200b\u8fdb\u653b\u200b.\u200b\u4f46\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u83b7\u53d6\u200b\u4e86\u200b\u67d0\u4e2a\u200b\u4fe1\u606f\u200b\u540e\u6b64\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u53ea\u200b\u5269\u4e0b\u200b 1bit\uff0c\u200b\u7b49\u6548\u200b\u654c\u4eba\u200b\u4ece\u200b\u4e24\u4e2a\u200b\u65b9\u5411\u200b\u7b49\u200b\u53ef\u80fd\u200b\u8fdb\u653b\u200b\uff0c\u200b\u4fe1\u606f\u200b\u5c31\u200b\u5145\u8db3\u200b\u7684\u200b\u591a\u200b\u4e86\u200b.

\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6709\u200b\u4e00\u4e2a\u200b\u76f4\u89c2\u200b\u7684\u200b\u7406\u89e3\u200b\uff0c\u200b\u67d0\u4e2a\u200b\u4fe1\u606f\u200b\u6765\u200b\u4e4b\u540e\u200b\u6211\u200b\u7684\u200b\u71b5\u200b\u51cf\u5c11\u200b\u7684\u200b\u8d8a\u200b\u591a\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u4fe1\u606f\u200b\u7684\u200b\u4fe1\u606f\u91cf\u200b\u8d8a\u5927\u200b\uff0c\u200b\u8d8a\u200b\u6709\u7528\u200b.

\u200b\u6761\u4ef6\u200b\u71b5\u200b

\u200b\u7ed9\u5b9a\u200b\u4e00\u4e2a\u200b\u8054\u5408\u200b\u5206\u5e03\u200b\uff1a

\\[ P(X = x_i\uff0cY = y_j) = P_{ij} \\]

\u200b\u90a3\u4e48\u200b\u6761\u4ef6\u200b\u71b5\u200b

\\[ H(Y|X) = -\\sum_{i=1}^{n} P_i H(Y|X = x_i) = -\\sum_{i=1}^{n} P_i \\sum_{j=1}^{m} P_{j|i} \\log P_{j|i} \\]

\u200b\u4ece\u200b\u7b2c\u4e00\u4e2a\u200b\u7b49\u200b\u53f7\u200b\u53ef\u4ee5\u200b\u770b\u5f97\u51fa\u6765\u200b\u6761\u4ef6\u200b\u71b5\u200b\u5176\u5b9e\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5bf9\u4e8e\u200b\u4e0d\u540c\u200b\u7684\u200b X \u200b\u7684\u200b\u53d6\u503c\u200b\u6c42\u200b\u671f\u671b\u200b

\u200b\u4e8e\u662f\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b9a\u4e49\u200b\u7279\u5f81\u200b A \u200b\u5bf9\u4e8e\u200b\u6570\u636e\u200b D \u200b\u7684\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\uff1a

\\[ g(D\uff0cA) = H(D) - H(D|A) \\]

\u200b\u8fd9\u200b\u4e5f\u200b\u88ab\u200b\u79f0\u4e3a\u200b\u7c7b\u200b\u4e0e\u200b\u7279\u5f81\u200b\u7684\u200b\u4e92\u4fe1\u606f\u200b\uff0c\u200b\u5b83\u200b\u8868\u793a\u200b\u5f97\u77e5\u200b\u7279\u5f81\u200b A \u200b\u7684\u200b\u4fe1\u606f\u200b\u800c\u200b\u4f7f\u5f97\u200b\u7c7b\u200b Y \u200b\u7684\u200b\u4fe1\u606f\u200b\u7684\u200b\u4e0d\u786e\u5b9a\u6027\u200b\u51cf\u5c11\u200b\u7684\u200b\u7a0b\u5ea6\u200b.

"},{"location":"Note/Data%20Modeling/Decision_Tree/#_4","title":"\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6bd4","text":"

\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u5b58\u5728\u200b\u4e00\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u5c31\u662f\u200b\u5b83\u200b\u504f\u5411\u200b\u4e8e\u200b\u53ef\u200b\u53d6\u503c\u200b\u8f83\u200b\u591a\u200b\u7684\u200b\u7279\u5f81\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u53d6\u503c\u200b\u8f83\u200b\u591a\u200b\u7684\u200b\u7279\u5f81\u200b\u7684\u200b\u6761\u4ef6\u200b\u71b5\u200b\u8f83\u200b\u5c0f\u200b.\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u7b97\u6cd5\u200b\u540c\u6837\u200b\u8003\u8651\u200b\u90a3\u4e9b\u200b\u503c\u200b\u6bd4\u8f83\u200b\u5c11\u200b\u4f46\u662f\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u540c\u6837\u200b\u5f88\u200b\u4e0d\u9519\u200b\u7684\u200b\u7279\u5f81\u200b\u7684\u8bdd\u200b.

\\[ g_R(D\uff0cA) = \\frac{g(D\uff0cA)}{H_A(D)} \\]

\u200b\u5176\u4e2d\u200b\\(H_A(D) = -\\sum_{i=1}^{n} \\frac{|D_i|}{|D|} \\log \\frac{|D_i|}{|D|}\\)\u200b\u662f\u200b\u5173\u4e8e\u200b\u7279\u5f81\u200b A \u200b\u5bf9\u200b\u6570\u636e\u200b\u96c6\u200b D \u200b\u7684\u200b\u7ecf\u9a8c\u200b\u71b5\u200b\uff0c\\(|D_i|\\)\u200b\u662f\u200b\\(D\\)\u200b\u4e2d\u200b\u5728\u200b\u7279\u5f81\u200b A \u200b\u4e0a\u200b\u53d6\u503c\u200b\u4e3a\u200b\\(a_i\\)\u200b\u7684\u200b\u6837\u672c\u200b\u5b50\u96c6\u200b.A \u200b\u7684\u200b\u53ef\u200b\u53d6\u503c\u200b\u8d8a\u200b\u591a\u200b\uff0c\\(H_A(D)\\)\u200b\u7684\u200b\u503c\u200b\u8d8a\u200b\u5927\u200b.

"},{"location":"Note/Data%20Modeling/Decision_Tree/#_5","title":"\u57fa\u5c3c\u200b\u6307\u6570","text":"

\u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b\u662f\u200b\u53e6\u200b\u4e00\u79cd\u200b\u7279\u5f81\u9009\u62e9\u200b\u7684\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u5b83\u200b\u7684\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\uff1a

\u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b

\\[\\begin{aligned} &Gini(P) = 1 - \\sum_{k=1}^{K} P_k^2 \\\\ &Gini(D) = 1 - \\sum_{k=1}^{K} \\frac{|D_i|}{|D|}^2 \\\\ &Gini(D\uff0cA) = \\sum_{i=1}^{n} \\frac{|D_i|}{|D|} Gini(D_i) \\end{aligned}\\]

"},{"location":"Note/Data%20Modeling/Decision_Tree/#_6","title":"\u51b3\u7b56\u6811\u200b\u751f\u6210","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#id3","title":"ID3 \u200b\u7b97\u6cd5","text":"

ID3 \u200b\u7b97\u6cd5\u200b\u7684\u200b\u6838\u5fc3\u200b\u662f\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u5404\u4e2a\u200b\u8282\u70b9\u200b\u4e0a\u200b\u5e94\u7528\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u51c6\u5219\u200b\u9009\u62e9\u200b\u7279\u5f81\u200b\uff0c\u200b\u9012\u5f52\u200b\u7684\u200b\u6784\u5efa\u200b\u51b3\u7b56\u6811\u200b.

  • \u200b\u8f93\u5165\u200b\uff1a\u200b\u8bad\u7ec3\u200b\u96c6\u200b\\(D\\)\uff0c\u200b\u7279\u5f81\u200b\u96c6\u200b\\(A\\)\uff0c\u200b\u9608\u503c\u200b\\(\\epsilon\\)
  • \u200b\u8f93\u51fa\u200b\uff1a\u200b\u51b3\u7b56\u6811\u200b\\(T\\)
  • base case\uff1a\u200b\u82e5\u200b\\(D\\)\u200b\u4e2d\u200b\u6240\u6709\u200b\u5b9e\u4f8b\u200b\u5c5e\u4e8e\u200b\u540c\u200b\u4e00\u7c7b\u200b\\(C_k\\)\uff0c\u200b\u5219\u200b\\(T\\)\u200b\u4e3a\u5355\u200b\u8282\u70b9\u200b\u6811\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\u7c7b\u200b\\(C_k\\)\u200b\u4f5c\u4e3a\u200b\u8be5\u200b\u8282\u70b9\u200b\u7684\u200b\u7c7b\u200b\u6807\u8bb0\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\)\uff1b
  • base case: \u200b\u82e5\u200b\\(A = \\emptyset\\)\uff0c\u200b\u5219\u200b\\(T\\)\u200b\u4e3a\u5355\u200b\u8282\u70b9\u200b\u6811\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\\(D\\)\u200b\u4e2d\u200b\u5b9e\u4f8b\u200b\u6570\u200b\u6700\u5927\u200b\u7684\u200b\u7c7b\u200b\\(C_k\\)\u200b\u4f5c\u4e3a\u200b\u8be5\u200b\u8282\u70b9\u200b\u7684\u200b\u7c7b\u200b\u6807\u8bb0\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\).
  • base case: \u200b\u82e5\u200b\\(\\max g(D\uff0cA) < \\epsilon\\)\uff0c\u200b\u5219\u200b\\(T\\)\u200b\u4e3a\u5355\u200b\u8282\u70b9\u200b\u6811\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\\(D\\)\u200b\u4e2d\u200b\u5b9e\u4f8b\u200b\u6570\u200b\u6700\u5927\u200b\u7684\u200b\u7c7b\u200b\\(C_k\\)\u200b\u4f5c\u4e3a\u200b\u8be5\u200b\u8282\u70b9\u200b\u7684\u200b\u7c7b\u200b\u6807\u8bb0\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\).
  • \u200b\u5426\u5219\u200b\uff0c\u200b\u8ba1\u7b97\u200b\\(A\\)\u200b\u4e2d\u200b\u5404\u4e2a\u200b\u7279\u5f81\u200b\u5bf9\u200b\\(D\\)\u200b\u7684\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\uff0c\u200b\u9009\u62e9\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6700\u5927\u200b\u7684\u200b\u7279\u5f81\u200b\\(A_g\\)\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u200b\u5206\u7c7b\u200b\uff0c\u200b\u7136\u540e\u200b\u5bf9\u200b\u5404\u4e2a\u200b\u5b50\u7c7b\u200b\u8c03\u7528\u200b\u672c\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u9012\u5f52\u200b\u7684\u200b\u6784\u5efa\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\).
"},{"location":"Note/Data%20Modeling/Decision_Tree/#c45","title":"C4.5 \u200b\u7b97\u6cd5","text":"

C4.5 \u200b\u7b97\u6cd5\u200b\u6839\u200b ID3 \u200b\u7b97\u6cd5\u200b\u5b8c\u5168\u200b\u4e00\u6837\u200b\uff0c\u200b\u53ea\u662f\u200b\u7528\u200b\u7684\u200b\u4e0d\u662f\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\uff0c\u200b\u800c\u662f\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6bd4\u200b.

"},{"location":"Note/Data%20Modeling/Decision_Tree/#_7","title":"\u51b3\u7b56\u6811\u200b\u526a\u679d","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#_8","title":"\u5229\u7528\u200b\u6b63\u5219\u200b\u5316\u200b\u51fd\u6570","text":"

\u200b\u5bf9\u200b\u6574\u68f5\u6811\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6784\u9020\u200b\u4e00\u4e2a\u200b\u6b63\u5219\u200b\u5316\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff1a $$ C_{\\alpha}(T) = \\sum_{t \\in T} N_t H_t(T) + \\alpha |T| $$ \u200b\u5176\u4e2d\u200b T \u200b\u4e3a\u200b\u6240\u6709\u200b\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u96c6\u5408\u200b\uff0ct \u200b\u4e3a\u200b\u67d0\u4e2a\u200b\u53f6\u200b\u8282\u70b9\u200b\uff0c\\(N_t\\)\u200b\u4e3a\u53f6\u200b\u8282\u70b9\u200b t \u200b\u7684\u200b\u6837\u672c\u200b\u4e2a\u6570\u200b\uff0c\\(H_t(T)\\)\u200b\u4e3a\u53f6\u200b\u8282\u70b9\u200b t \u200b\u7684\u200b\u7ecf\u9a8c\u200b\u71b5\u200b\uff0c\\(|T|\\)\u200b\u4e3a\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u4e2a\u6570\u200b\uff0c\\(\\alpha\\)\u200b\u4e3a\u200b\u6b63\u5219\u200b\u5316\u200b\u53c2\u6570\u200b.

\u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u5047\u8bbe\u200b t \u200b\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u6240\u6709\u200b\\(N_t\\)\u200b\u4e2a\u200b\u6837\u672c\u200b\u4e2d\u200b\uff0ck \u200b\u7c7b\u200b\u7684\u200b\u6837\u672c\u200b\u6709\u200b\\(N_{tk}\\)\u200b\u4e2a\u200b\uff0c\u200b\u90a3\u4e48\u200b\\(H_t(T) = -\\sum_{k=1}^{K} \\frac{N_{tk}}{N_t} \\log \\frac{N_{tk}}{N_t}\\).

\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5bf9\u200b\u8fd9\u4e2a\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u8fdb\u884c\u200b\u6700\u5c0f\u5316\u200b\uff0c\u200b\u5bb9\u6613\u200b\u770b\u51fa\u200b\uff0c\u200b\u5982\u679c\u200b\u53f6\u200b\u8282\u70b9\u200b\u5168\u90e8\u90fd\u662f\u200b\u5355\u200b\u4e00\u7c7b\u200b\uff0c\u200b\u90a3\u4e48\u200b\u7b2c\u4e00\u9879\u200b\u7684\u200b\u503c\u200b\u4e3a\u200b 0.\u200b\u8fd9\u65f6\u5019\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u5206\u7c7b\u200b\u6548\u679c\u200b\u597d\u200b\uff0c\u200b\u4f46\u662f\u200b\u53f6\u5b50\u200b\u8282\u70b9\u200b\u5bb9\u6613\u200b\u8fc7\u591a\u200b\uff0c\u200b\u7b2c\u4e8c\u9879\u200b\u5f88\u5927\u200b.\u200b\u4f46\u200b\u5982\u679c\u200b\u7b2c\u4e8c\u9879\u200b\u6781\u7aef\u200b\u7684\u200b\u4f18\u5316\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u53f6\u200b\u8282\u70b9\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6811\u662f\u200b\u5c0f\u200b\u4e86\u200b\uff0c\u200b\u4f46\u662f\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u90fd\u200b\u5728\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u5185\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8bf4\u200b\u662f\u200b\u6beb\u65e0\u200b\u5206\u7c7b\u200b\u6548\u679c\u200b.\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u6700\u5c0f\u5316\u200b\u8fd9\u4e2a\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c31\u662f\u200b\u8981\u200b\u5728\u200b\u4e8c\u8005\u4e4b\u95f4\u200b\u627e\u5230\u200b\u4e00\u4e2a\u200b\u5e73\u8861\u200b\uff0c\u200b\u6811\u200b\u65e2\u200b\u4e0d\u4f1a\u200b\u8fc7\u6df1\u200b\uff0c\u200b\u5206\u7c7b\u200b\u6548\u679c\u200b\u4e5f\u200b\u6709\u200b\u4fdd\u969c\u200b.

\u200b\u7b97\u6cd5\u200b

  • \u200b\u8ba1\u7b97\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u7ecf\u9a8c\u200b\u71b5\u200b
  • \u200b\u4ece\u53f6\u200b\u8282\u70b9\u200b\u5f80\u200b\u4e0a\u200b\uff0c\u200b\u8bd5\u56fe\u200b\u628a\u200b\u67d0\u4e2a\u200b\u4e24\u4e2a\u200b\u53f6\u200b\u8282\u70b9\u200b\u56de\u7f29\u200b\u5230\u200b\u516c\u5171\u200b\u7236\u200b\u8282\u70b9\u200b\u4e0a\u200b\uff0c\u200b\u68c0\u9a8c\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u662f\u5426\u200b\u51cf\u5c0f\u200b.
  • \u200b\u76f4\u5230\u200b\u6ca1\u6709\u200b\u8282\u70b9\u200b\u53ef\u8bd5\u200b
"},{"location":"Note/Data%20Modeling/Decision_Tree/#_9","title":"\u5b9e\u4f8b","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#cart","title":"CART \u200b\u56de\u5f52\u200b\u6811\u200b\u7b97\u6cd5","text":"

\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u6709\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c \u200b\u5176\u4e2d\u200b\\(x \\in \\mathbb{R}^n\\)\uff0c\\(y_i \\in \\mathbb{R}\\)\uff0c\u200b\u73b0\u5728\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u70b9\u200b\\(x\\)\uff0c\u200b\u6c42\u51fa\u200b\u5b83\u200b\u7684\u200b\u5bf9\u5e94\u200b y.

CART \u200b\u56de\u5f52\u200b\u6811\u200b\u7b97\u6cd5\u200b\u4f1a\u200b\u628a\u200b\u7a7a\u95f4\u200b\u5212\u5206\u200b\u6210\u200b m \u200b\u5757\u200b\\(R_1\uff0cR_2...R_m\\)\uff0c\u200b\u6bcf\u4e2a\u200b\u5355\u5143\u200b\u4e0a\u200b\u51fd\u6570\u200b\u7684\u200b\u8f93\u51fa\u200b\u503c\u200b\u90fd\u200b\u662f\u200b\u56fa\u5b9a\u200b\u7684\u200b\uff1a

\\[ f(x) = \\sum_{m=1}^{M} c_m I(x \\in R_m) \\]

\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u9009\u7528\u200b\u5e73\u65b9\u200b\u8bef\u5dee\u200b\uff0c\u200b\u5bb9\u6613\u200b\u8bc1\u660e\u200b\uff0c\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u533a\u57df\u200b\u4e0a\u200b\u6700\u4f73\u200b\u7684\u200b\u8f93\u51fa\u200b\u503c\u200b\u5c31\u662f\u200b\u8be5\u200b\u533a\u57df\u200b\u5185\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u7684\u200b\u5747\u503c\u200b.

\\[ c_m = \\frac{1}{N_m} \\sum_{x_i \\in R_m} y_i \\]

\u200b\u7b97\u6cd5\u200b\uff1a

  • \u200b\u8f93\u5165\u200b\uff1a\u200b\u8bad\u7ec3\u200b\u96c6\u200b\\(D\\)\uff0c\u200b\u9608\u503c\u200b\\(\\epsilon\\)
  • \u200b\u8f93\u51fa\u200b\uff1a\u200b\u56de\u5f52\u200b\u6811\u200b\\(f(x)\\)
  • \u200b\u5f00\u59cb\u200b\uff1a\u200b\u904d\u5386\u200b\u7ef4\u5ea6\u200b j \u200b\u4ee5\u53ca\u200b\u8be5\u200b\u7ef4\u5ea6\u200b\u4e0a\u200b\u53d8\u91cf\u200b\u5212\u5206\u200b\u70b9\u200b S\uff0c\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u5728\u200b\u8be5\u200b\u7ef4\u5ea6\u200b\u4e0a\u200b\u6309\u7167\u200b\u5212\u5206\u200b\u70b9\u200b\u5212\u5206\u200b\u6210\u200b\u4e24\u200b\u90e8\u5206\u200b\\(R_1(j\uff0cs)\uff0cR_2(j\uff0cs)\\)\uff0c\u200b\u8ba1\u7b97\u200b\u5bf9\u5e94\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u503c\u200b\\(min_{s} \\sum_{x_i \\in R_1(j\uff0cs)} (y_i - c_1)^2 + \\sum_{x_i \\in R_2(j\uff0cs)} (y_i - c_2)^2\\)
  • \u200b\u627e\u5230\u200b\u6700\u4f73\u200b\u7ef4\u5ea6\u200b\u548c\u200b\u6700\u4f73\u200b\u5212\u5206\u200b\u4e4b\u540e\u200b\uff0c\u200b\u628a\u200b\u6570\u636e\u200b\u96c6\u200b\u5212\u5206\u200b\u4e3a\u200b\\(R_1\uff0cR_2\\)\uff0c\u200b\u7136\u540e\u200b\u5bf9\u200b\\(R_1\uff0cR_2\\)\u200b\u5206\u522b\u200b\u9012\u5f52\u200b\u7684\u200b\u8c03\u7528\u200b\u672c\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u76f4\u5230\u200b\u6ee1\u8db3\u200b\u505c\u6b62\u200b\u6761\u4ef6\u200b\uff08\u200b\u533a\u57df\u200b\u5185\u90e8\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c0f\u4e8e\u200b\u9608\u503c\u200b\uff09
"},{"location":"Note/Data%20Modeling/Decision_Tree/#cart_1","title":"CART \u200b\u5206\u7c7b\u200b\u6811\u200b\u7b97\u6cd5","text":"

\u200b\u9996\u5148\u200b\u6211\u4eec\u200b\u5148\u200b\u7528\u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b\u751f\u6210\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u7136\u540e\u200b\u5bf9\u200b\u51b3\u7b56\u6811\u200b\u8fdb\u884c\u200b\u526a\u679d\u200b.\u200b\u6211\u4eec\u200b\u7740\u91cd\u200b\u4ecb\u7ecd\u200b\u8fd9\u91cc\u200b\u4f7f\u7528\u200b\u7684\u200b\u526a\u679d\u200b\u7b97\u6cd5\u200b

\u200b\u6211\u4eec\u200b\u5148\u200b\u6784\u9020\u200b\u4e00\u4e2a\u200b\u4ee5\u200b\\(\\alpha\\)\u200b\u4e3a\u200b\u53c2\u6570\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff1a

\\[ C_{\\alpha}(T) = C(T)+ \\alpha |T| \\quad\\quad \\alpha \\in [0\uff0c\\infty) \\]

\u200b\u5176\u4e2d\u200b\\(C(T)\\)\u200b\u4e3a\u200b\u7528\u200b\u8be5\u200b\u51b3\u7b56\u6811\u200b\u5bf9\u200b\u8bad\u7ec3\u200b\u96c6\u200b\u8fdb\u884c\u200b\u9884\u6d4b\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff08\u200b\u7528\u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b\uff09. \u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u627e\u5230\u200b\\(\\alpha\\)\u200b\u4ece\u200b 0 \u200b\u5230\u200b\u6b63\u200b\u65e0\u7a77\u7684\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u533a\u95f4\u200b\u5185\u200b\u7684\u200b\u526a\u679d\u200b\u540e\u200b\u7684\u200b\u6700\u4f18\u200b\u6811\u200b.

\u200b\u5728\u200b\u6b64\u200b\u8bed\u5883\u200b\u4e0b\u200b\uff0c\u200b\u5bf9\u200b\u67d0\u4e2a\u200b\u8282\u70b9\u200b\u8fdb\u884c\u200b\u526a\u679d\u200b\u5c31\u662f\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\u7528\u200b\u4e00\u4e2a\u200b\u5355\u4e00\u200b\u8282\u70b9\u200b\u4ee3\u66ff\u200b\u4ee5\u200b\u5f53\u524d\u200b\u8282\u70b9\u200b\u4e3a\u6839\u200b\u7684\u200b\u5b50\u6811\u200b\uff0c\u200b\u8be5\u200b\u5355\u4e00\u200b\u8282\u70b9\u200b\u542b\u6709\u200b\u5b50\u6811\u4e2d\u200b\u6240\u6709\u200b\u7684\u200b\u6837\u672c\u200b.

\u200b\u6211\u4eec\u200b\u5148\u200b\u6765\u770b\u200b\u6bd4\u8f83\u200b\u6781\u7aef\u200b\u7684\u200b\\(\\alpha\\)\uff0c\u200b\u770b\u200b\u4ed6\u200b\u5bf9\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u5f71\u54cd\u200b\uff0c\u200b\u5f53\u200b\\(\\alpha\\)\u200b\u4e3a\u200b 0 \u200b\u65f6\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c31\u662f\u200b\\(C(T)\\)\uff0c\u200b\u6b64\u65f6\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u5c31\u662f\u200b\u6700\u5c0f\u5316\u200b\\(C(T)\\)\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b\u6700\u4f18\u200b\u7684\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u5c31\u7b97\u200b\u6211\u4eec\u200b\u5206\u51fa\u200b\u4e86\u200b\u975e\u5e38\u200b\u591a\u200b\u7684\u200b\u8282\u70b9\u200b\u4e5f\u200b\u65e0\u6240\u8c13\u200b.\u200b\u5f53\u200b\\(\\alpha\\)\u200b\u4e3a\u200b\u6b63\u200b\u65e0\u7a77\u200b\u65f6\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c31\u662f\u200b\\(|T|\\)\uff0c\u200b\u6b64\u65f6\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u5c31\u662f\u200b\u6700\u5c0f\u5316\u200b\\(|T|\\)\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u6700\u5c11\u200b\u7684\u200b\u6811\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6beb\u65e0\u7591\u95ee\u200b\u6240\u6709\u200b\u7684\u200b\u6837\u672c\u200b\u90fd\u200b\u653e\u5728\u200b\u6839\u200b\u8282\u70b9\u200b\u5185\u200b\u5c31\u662f\u200b\u6700\u4f18\u200b\u89e3\u200b.\u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c \\(\\alpha\\)\u200b\u8d8a\u5927\u200b\uff0c\u200b\u51b3\u7b56\u6811\u200b\u4f1a\u200b\u88ab\u200b\u526a\u200b\u7684\u200b\u8d8a\u200b\u5e72\u51c0\u200b.

\u200b\u5728\u200b\u4ee5\u4e0a\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0c\u200b\u6211\u4eec\u200b\u53d1\u73b0\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5355\u72ec\u200b\u8ba8\u8bba\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u662f\u5426\u200b\u8981\u200b\u88ab\u200b\u526a\u679d\u200b\uff08\u200b\u56de\u5fc6\u200b\u4e00\u4e0b\u200b\u4ec0\u4e48\u200b\u53eb\u505a\u200b\u5bf9\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u8fdb\u884c\u200b\u526a\u679d\u200b\uff09\uff0c\u200b\u5047\u8bbe\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u6240\u200b\u4ee3\u8868\u200b\u7684\u200b\u5b50\u6811\u4e3a\u200b\\(T_t\\)\uff0c\u200b\u628a\u5b50\u200b\u6811\u5185\u200b\u7684\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u90fd\u200b\u6536\u5230\u200b\u8282\u70b9\u200b\u5185\u6240\u200b\u6784\u6210\u200b\u7684\u200b\u8282\u70b9\u200b\u4e3a\u200b t\uff0c\u200b\u90a3\u4e48\u200b\u8be5\u200b\u8282\u70b9\u200b\u4ece\u4e0d\u200b\u526a\u679d\u200b\u8f6c\u5411\u200b\u526a\u679d\u200b\u7684\u200b\u5173\u952e\u200b\u8282\u70b9\u200b\u5c31\u662f\u200b\u5f53\u4e0b\u200b\u5f0f\u200b\u6210\u7acb\u200b\u65f6\u200b\uff1a

\\[ C(t) + \\alpha * 1 = C(T_t) + \\alpha * |T_t| \\]

\u200b\u7b2c\u4e00\u9879\u200b\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\u653e\u7f6e\u200b\u5355\u4e00\u200b\u8282\u70b9\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u526a\u679d\u200b\u540e\u200b\u7684\u200b\u8282\u70b9\u200b\uff09\u200b\u5e26\u6765\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff0c\u200b\u7b2c\u4e8c\u9879\u200b\u5f0f\u200b\u6211\u4eec\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\u653e\u7f6e\u200b\u5b50\u6811\u200b\u5e26\u6765\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b.\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u8ba1\u7b97\u200b\u51fa\u200b\u8fd9\u4e2a\u200b\u4e34\u754c\u200b\u7684\u200b\\(\\alpha_{t}\\)\uff0c\u200b\u90a3\u4e48\u200b\u5982\u679c\u200b\\(\\alpha \\in (0\uff0c\\alpha_{t})\\)\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u4e0d\u200b\u526a\u679d\u200b\uff0c\u200b\u5982\u679c\u200b\\(\\alpha \\in [\\alpha_{t}\uff0c\\infty)\\)\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u526a\u679d\u200b.

\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5bf9\u200b\u51b3\u7b56\u6811\u200b\u5185\u200b\u7684\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u90fd\u200b\u8ba1\u7b97\u200b\u4e34\u754c\u200b\\(\\alpha\\)\uff0c\u200b\u6211\u4eec\u200b\u4ece\u200b\\(\\alpha = 0\\)\u200b\u5f00\u59cb\u200b\u9010\u6e10\u200b\u589e\u5927\u200b\uff0c\u200b\u6bcf\u6b21\u200b\u8fbe\u5230\u200b\u4e34\u754c\u70b9\u200b\u6211\u4eec\u200b\u5c31\u200b\u526a\u679d\u200b\uff0c\u200b\u76f4\u5230\u200b\u6240\u6709\u200b\u679d\u200b\u90fd\u200b\u88ab\u200b\u526a\u6389\u200b\uff0c\u200b\u76f4\u5230\u200b\u6574\u68f5\u6811\u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b.

\u200b\u5728\u200b\u4e0a\u8ff0\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u6211\u4eec\u200b\u5c31\u200b\u5f97\u5230\u200b\u4e86\u200b\u4e00\u7cfb\u5217\u200b\u7684\u200b\u4e0d\u540c\u200b\\(\\alpha\\)\u200b\u533a\u95f4\u200b\u4e0b\u200b\u7684\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b\u4ea4\u53c9\u200b\u9a8c\u8bc1\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6765\u200b\u9009\u62e9\u200b\u6700\u4f18\u200b\u7684\u200b\\(\\alpha\\).

"},{"location":"Note/Data%20Modeling/KNN/","title":"K \u200b\u8fd1\u90bb","text":"

\u200b\u7ea6\u200b 732 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

"},{"location":"Note/Data%20Modeling/KNN/#_1","title":"\u95ee\u9898\u200b\u53ca\u200b\u7b97\u6cd5\u200b\u63cf\u8ff0","text":"

\u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c \u200b\u5176\u4e2d\u200b\\(x \\in \\mathbb{R}^n\\)\uff0c\\(y_i \\in \\{ c_1\uff0cc_2\uff0c....c_k\\}\\)\uff0c \u200b\u4e00\u5171\u200b\u6709\u200b K \u200b\u79cd\u7c7b\u200b\u522b\u200b\uff0c\u200b\u73b0\u5728\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u70b9\u200b\\(x\\)\uff0c\u200b\u6c42\u51fa\u200b\u5b83\u200b\u7684\u200b\u7c7b\u522b\u200b\\(y\\). \u200b\u7b97\u6cd5\u200b\u601d\u60f3\u200b\uff1a

  • \u200b\u627e\u51fa\u200b\u79bb\u200b x \u200b\u6700\u8fd1\u200b\u7684\u200b K \u200b\u4e2a\u200b\u90bb\u5c45\u200b\\(N_{k}(x)\\)
  • \u200b\u7531\u200b\u7740\u200b K \u200b\u4e2a\u200b\u90bb\u5c45\u200b\u8fdb\u884c\u200b\u591a\u6570\u200b\u8868\u51b3\u200b\uff1a
\\[ y =\\underset{c_j}{\\operatorname{arg max}} \\sum_{N_{k}(x)} I(y = c_j) \\]

\u200b\u5176\u4e2d\u200b\u7684\u200b\\(I(y = c_j)\\)\u200b\u662f\u200b\u6307\u793a\u200b\u51fd\u6570\u200b\uff0c\u200b\u5f53\u200b\\(y = c_j\\)\u200b\u65f6\u200b\uff0c\\(I(y = c_j) = 1\\)\uff0c\u200b\u5426\u5219\u200b\\(I(y = c_j) = 0\\).

"},{"location":"Note/Data%20Modeling/KNN/#k_1","title":"K \u200b\u8fd1\u90bb\u200b\u7684\u200b\u4e09\u8981\u7d20","text":"

\u200b\u6709\u200b\u4e86\u200b\u4e0a\u8ff0\u200b\u7684\u200b\u7b97\u6cd5\u200b\u6846\u67b6\u200b\u540e\u200b\uff0cK \u200b\u8fd1\u90bb\u200b\u7b97\u6cd5\u200b\u7531\u200b\u4e09\u4e2a\u200b\u8981\u7d20\u200b\u51b3\u5b9a\u200b\uff1a

\u200b\u8ddd\u79bb\u200b\u5ea6\u91cf\u200bK \u200b\u503c\u200b\u9009\u62e9\u200b\u5206\u7c7b\u200b\u51b3\u7b56\u200b\u89c4\u5219\u200b

\u200b\u4e00\u822c\u6765\u8bf4\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\\(L_p\\)\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u5373\u200b\uff1a

\\[ L_p(x_i\uff0cx_j) = (\\sum_{l=1}^{n}|x_i^{(l)} - x_j^{(l)}|^p)^{\\frac{1}{p}} \\]

\u200b\u5f53\u200b p \u200b\u7684\u200b\u53d6\u503c\u200b\u4e3a\u200b 2 \u200b\u65f6\u200b\uff0c\u200b\u5c31\u662f\u200b\u6b27\u6c0f\u200b\u8ddd\u79bb\u200b

\u200b\u5f53\u200b K \u200b\u6bd4\u8f83\u200b\u5c0f\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u6a21\u578b\u200b\u6bd4\u8f83\u590d\u6742\u200b\uff0c\u200b\u5bb9\u6613\u200b\u8fc7\u200b\u62df\u5408\u200b\uff1b \u200b\u5f53\u200b K \u200b\u6bd4\u8f83\u200b\u5927\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u6a21\u578b\u200b\u6bd4\u8f83\u7b80\u5355\u200b\uff0c\u200b\u5bb9\u6613\u200b\u6b20\u200b\u62df\u5408\u200b. \u200b\u4e00\u822c\u6765\u8bf4\u200b K \u200b\u503c\u200b\u90fd\u200b\u4e0d\u4f1a\u200b\u9009\u200b\u7684\u200b\u592a\u5927\u200b.

\u200b\u4e00\u822c\u200b\u4f7f\u7528\u200b\u591a\u6570\u200b\u8868\u51b3\u200b\u89c4\u5219\u200b\uff0c\u200b\u5728\u200b\u6b64\u200b\u60c5\u666f\u200b\u4e0b\u200b\u591a\u6570\u200b\u8868\u51b3\u200b\u89c4\u5219\u200b\u7b49\u6548\u4e8e\u200b\u7ecf\u9a8c\u200b\u98ce\u9669\u200b\u6700\u5c0f\u5316\u200b.

"},{"location":"Note/Data%20Modeling/KNN/#kd-k","title":"\u7528\u200b kd \u200b\u6811\u200b\u5207\u5206\u200b\u7a7a\u95f4\u200b\u6c42\u89e3\u200b K \u200b\u8fd1\u90bb","text":""},{"location":"Note/Data%20Modeling/KNN/#kd","title":"kd \u200b\u6811\u200b\u7684\u200b\u6784\u9020","text":"
  • \u200b\u8f93\u5165\u200b\uff1a \\(\\{(x_i\uff0cy_i)\\}\\)
  • \u200b\u5f00\u59cb\u200b\uff1a \u200b\u53d6\u200b\u53d8\u91cf\u200b\\(x\\)\u200b\u7684\u200b\u7b2c\u4e00\u4e2a\u200b\u7ef4\u5ea6\u200b\\(x_i^(1)\\)\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u7eac\u5ea6\u200b\u7684\u200b\u4e2d\u4f4d\u6570\u200b\\(x_j^(1)\\)\uff0c\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u200b\u5206\u4e3a\u200b\u4e24\u200b\u90e8\u5206\u200b\uff0c\u200b\u5de6\u5b50\u200b\u6811\u200b\u548c\u200b\u53f3\u5b50\u200b\u6811\u200b\uff0c\u200b\u800c\u200b\\(x_j^(1)\\)\u200b\u5c31\u662f\u200b\u6839\u200b\u8282\u70b9\u200b\uff0c\u200b\u5de6\u53f3\u200b\u5b50\u200b\u8282\u70b9\u200b\u7684\u200b\u6df1\u5ea6\u200b\u4e3a\u200b 1
  • \u200b\u91cd\u590d\u200b\uff1a \u200b\u5bf9\u200b\u5de6\u53f3\u200b\u5b50\u6811\u200b\u7ee7\u7eed\u200b\u8fdb\u884c\u200b\u5206\u5272\u200b\uff0c\u200b\u5bf9\u4e8e\u200b j \u200b\u6df1\u5ea6\u200b\u7684\u200b\u5b50\u6811\u200b\uff0c\u200b\u53d6\u200b\\(x\\)\u200b\u7684\u200b\u7b2c\u200b\\(j+1\\)\u200b\u7ef4\u5ea6\u200b\\(x_i^(j+1)\\)\u200b\u8fdb\u884c\u200b\u5206\u5272\u200b
  • \u200b\u7ed3\u675f\u200b\uff1a \u200b\u76f4\u5230\u200b\u5de6\u53f3\u200b\u7a7a\u95f4\u200b\u90fd\u200b\u4e0d\u518d\u200b\u6709\u5b50\u200b\u8282\u70b9\u200b
\u200b\u8bfe\u4ef6\u200b\u4e0a\u200b\u7684\u200b\u4f8b\u5b50"},{"location":"Note/Data%20Modeling/KNN/#kd-k_1","title":"\u641c\u7d22\u200b kd \u200b\u6811\u200b\u5bfb\u627e\u200b K \u200b\u8fd1\u90bb","text":"
  • \u200b\u8f93\u5165\u200b\uff1a kd \u200b\u6811\u200b\uff0c\u200b\u76ee\u6807\u200b\u70b9\u200b\\(x\\)\uff08\u200b\u6ce8\u610f\u200b\u6b64\u5904\u200b\u7684\u200b x \u200b\u4e00\u822c\u800c\u8a00\u200b\u4e0d\u662f\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u7684\u200b\u70b9\u200b\uff09
  • \u200b\u5f00\u59cb\u200b\uff1a \u200b\u4ece\u6839\u200b\u8282\u70b9\u200b\u5f00\u59cb\u200b\uff0c\u200b\u9012\u5f52\u200b\u7684\u200b\u5411\u4e0b\u200b\u8bbf\u95ee\u200b kd \u200b\u6811\u200b\uff0c\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u8282\u70b9\u200b\u628a\u200b\u5bf9\u5e94\u200b\u7ef4\u5ea6\u200b\u8ddf\u200b\u8be5\u200b\u8282\u70b9\u200b\u6bd4\u8f83\u200b\u51b3\u5b9a\u200b\u5411\u200b\u5de6\u200b\u8fd8\u662f\u200b\u5411\u200b\u53f3\u200b\uff0c\u200b\u76f4\u5230\u200b\u53f6\u5b50\u200b\u8282\u70b9\u200b
  • \u200b\u91cd\u590d\u200b\uff1a \u200b\u7ef4\u62a4\u200b\u4e00\u4e2a\u200b\u5f53\u524d\u200b\u7684\u200b\u6700\u8fd1\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u5f53\u524d\u200b\u6700\u8fd1\u200b\u8ddd\u79bb\u200b\u7684\u200b\u521d\u59cb\u503c\u200b\u5c31\u662f\u200b\u8ddf\u200b\u5230\u8fbe\u200b\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u4ec5\u200b\u6709\u200b\u67d0\u4e2a\u200b\u5b50\u6811\u200b\u53ef\u80fd\u200b\u542b\u6709\u200b\u8ddd\u79bb\u200b\u5c0f\u4e8e\u200b\u6b64\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b\u7684\u200b\u7684\u200b\u8282\u70b9\u200b\u65f6\u200b\u6211\u4eec\u200b\u624d\u200b\u8bbf\u95ee\u200b\u4e4b\u200b
    • \u200b\u5411\u4e0a\u200b\u56de\u6eaf\u200b\uff0c\u200b\u9996\u5148\u200b\u5c1d\u8bd5\u200b\u7528\u7236\u200b\u8282\u70b9\u200b\u66f4\u65b0\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u7136\u540e\u200b\u8ba1\u7b97\u200b\u4e00\u4e0b\u200b\u5144\u5f1f\u200b\u7a7a\u95f4\u200b\u662f\u5426\u200b\u8ddf\u200b\u4ee5\u200b x \u200b\u4e3a\u200b\u4e2d\u5fc3\u200b\uff0c\u200b\u4ee5\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b\u4e3a\u200b\u534a\u5f84\u200b\u7684\u200b\u8d85\u7403\u200b\u76f8\u4ea4\u200b\uff0c\u200b\u5982\u679c\u200b\u76f8\u4ea4\u200b\uff0c\u200b\u5bf9\u200b\u5144\u5f1f\u200b\u5b50\u6811\u200b\u8fdb\u884c\u200b kd \u200b\u6811\u200b\u641c\u7d22\u200b
  • \u200b\u7ed3\u675f\u200b\uff1a \u200b\u56de\u6eaf\u5230\u200b\u6839\u200b\u7684\u200b\u65f6\u5019\u200b\u7ed3\u675f\u200b\uff0c\u200b\u5f53\u524d\u200b\u7ef4\u62a4\u200b\u7684\u200b\u6700\u8fd1\u200b\u70b9\u200b\u5c31\u662f\u200b\u5168\u5c40\u200b\u6700\u8fd1\u200b\u70b9\u200b

\u200b\u4e00\u6b21\u200b\u641c\u7d22\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u6700\u8fd1\u200b\u90bb\u70b9\u200b\uff0c\u200b\u65f6\u95f4\u200b\u590d\u6742\u5ea6\u200b\u7528\u200b\u4e3a\u200b\\(O(logn)\\)\uff0c\u200b\u5982\u679c\u200b\u8981\u200b\u627e\u51fa\u200b K \u200b\u4e2a\u200b\u6700\u8fd1\u200b\u90bb\u70b9\u200b\uff0c\u200b\u65f6\u95f4\u200b\u590d\u6742\u5ea6\u200b\u4e3a\u200b\\(O(klogn)\\)

PPT \u200b\u4e0a\u200b\u7684\u200b\u4f8b\u5b50\u200b

"},{"location":"Note/Data%20Modeling/Logistic_Regression/","title":"\u903b\u8f91\u200b\u65af\u8c1b\u200b\u56de\u5f52","text":"

\u200b\u7ea6\u200b 842 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

"},{"location":"Note/Data%20Modeling/Logistic_Regression/#_2","title":"\u903b\u8f91\u200b\u65af\u8c1b\u200b\u5206\u5e03","text":"

\u200b\u9996\u5148\u200b\u76f4\u63a5\u200b\u7ed9\u51fa\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u5206\u5e03\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b\\(X\\)\u200b\u6ee1\u8db3\u200b\\(Logistic(\\mu\uff0c\\gamma)\\)\u200b\u5206\u5e03\u200b\u7684\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\uff1a

\\[ F(x)=\\frac{1}{1+e^{-(x-\\mu)/\\gamma}} \\]

\u200b\u5176\u4e2d\u200b\\(\\mu\\)\u200b\u4e3a\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\uff0c\\(\\gamma\\)\u200b\u4e3a\u200b\u5f62\u72b6\u200b\u53c2\u6570\u200b.\u200b\u8be5\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\u7684\u200b\u56fe\u50cf\u200b\u4e3a\u200b S \u200b\u578b\u200b\u66f2\u7ebf\u200b\uff0c\\(\\mu\\)\u200b\u4e3a\u200b\u51fd\u6570\u200b\u7684\u200b\u5bf9\u79f0\u4e2d\u5fc3\u200b\uff0c\\(\\gamma\\)\u200b\u63a7\u5236\u200b\u51fd\u6570\u200b\u7684\u200b\u9661\u5ced\u200b\u7a0b\u5ea6\u200b\uff0c\u200b\u503c\u8d8a\u200b\u5927\u200b\uff0c\u200b\u51fd\u6570\u200b\u8d8a\u200b\u9661\u5ced\u200b.

"},{"location":"Note/Data%20Modeling/Logistic_Regression/#_3","title":"\u4e8c\u9879\u200b\u903b\u8f91\u200b\u65af\u8c1b\u200b\u56de\u5f52\u200b\u6a21\u578b","text":"

\u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(D=\\{(x_1\uff0cy_1)\uff0c(x_2\uff0cy_2)\uff0c...\uff0c(x_m\uff0cy_m)\\}\\)\uff0c\u200b\u5176\u4e2d\u200b\\(x_i \\in \\mathbb{R}\\)\uff0c\\(y_i \\in \\{0\uff0c1\\}\\)\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u5b66\u4e60\u200b\u5230\u200b\u4e00\u4e2a\u200b\u7ebf\u6027\u200b\u6a21\u578b\u200b\u6765\u200b\u8fdb\u884c\u200b\u5206\u7c7b\u200b\uff0c\u200b\u5728\u200b\u611f\u77e5\u673a\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u7528\u200b\u4e00\u4e2a\u200b\u6307\u793a\u200b\u51fd\u6570\u200b\u6765\u200b\u5c06\u200b\u51fd\u6570\u200b\u503c\u200b\u7684\u200b\u7b26\u53f7\u200b\u6620\u5c04\u200b\u5230\u200b\u4e0d\u540c\u200b\u7684\u200b\u5206\u7c7b\u200b.

\u200b\u5bf9\u4e8e\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u56de\u5f52\u200b\u6765\u8bf4\u200b\uff0c\u200b\u6211\u4eec\u200b\u60f3\u8981\u200b\u5f97\u5230\u200b\u7684\u200b\u662f\u200b\u67d0\u4e2a\u200b x \u200b\u4e0b\u200b\u5c5e\u4e8e\u200b 0\uff0c\u200b\u6216\u8005\u200b 1 \u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\u4e5f\u200b\u662f\u200b\u8fde\u7eed\u200b\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u8bd5\u56fe\u7528\u200b\u7ebf\u6027\u200b\u7684\u200b\u6a21\u578b\u200b\u53bb\u200b\u62df\u5408\u200b\uff0c\u200b\u6211\u4eec\u200b\u5148\u4f5c\u200b\u5982\u4e0b\u200b\u7684\u200b\u8f6c\u5316\u200b\uff1a

  • \u200b\u6982\u7387\u200b\u7684\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u662f\u200b\\(P \\in [0\uff0c1]\\)
  • \u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u51e0\u7387\u200b\\(\\frac{p}{1-p}\\)\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u7684\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u5c31\u662f\u200b\\((0\uff0c\\infty)\\)
  • \u200b\u518d\u200b\u52a0\u200b\u4e00\u4e2a\u200b\u5bf9\u6570\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u5f97\u5230\u200b\u5bf9\u6570\u200b\u51e0\u7387\u200b\\(logit(p)=ln\\frac{p}{1-p}\\)\uff0c\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u662f\u200b\\((-\\infty\uff0c\\infty)\\)

\u200b\u8fd9\u6837\u200b\u5bf9\u6570\u200b\u51e0\u7387\u200b\u7684\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u5c31\u200b\u548c\u200b\u7ebf\u6027\u200b\u51fd\u6570\u200b\u7684\u200b\u4e00\u6837\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8bd5\u7740\u200b\u7528\u200b\u7ebf\u6027\u200b\u51fd\u6570\u200b\u53bb\u200b\u8fdb\u884c\u200b\u62df\u5408\u200b\uff08\u200b\u5982\u679c\u200b\u67d0\u4e2a\u200b\u5206\u5e03\u200b\u7684\u200b\u5bf9\u6570\u51fd\u6570\u200b\u76f8\u5173\u7cfb\u6570\u200b\u5f88\u200b\u9ad8\u200b\uff0c\u200b\u81ea\u7136\u200b\u53ef\u4ee5\u200b\u62df\u5408\u200b\u5230\u200b\u6bd4\u8f83\u200b\u597d\u200b\u7684\u200b\u6548\u679c\u200b\uff0c\u200b\u4f46\u200b\u5982\u679c\u200b\u4e00\u4e2a\u200b\u5206\u5e03\u200b\u7684\u200b\u5bf9\u6570\u200b\u51e0\u7387\u200b\u51e0\u4e4e\u200b\u4e0d\u6210\u200b\u7ebf\u6027\u200b\uff0c\u200b\u90a3\u4e48\u200b\u7ebf\u6027\u200b\u51fd\u6570\u200b\u7684\u200b\u62df\u5408\u200b\u6548\u679c\u200b\u5c31\u200b\u4f1a\u200b\u6bd4\u8f83\u200b\u5dee\u200b.\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u7528\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u56de\u5f52\u200b\u62df\u5408\u200b\u7684\u200b\u5206\u5e03\u200b\u6700\u597d\u200b\u6709\u200b\u7c7b\u4f3c\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u5206\u5e03\u200b\u7684\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\uff09.

\u200b\u6211\u4eec\u200b\u4ee4\u200b

\\[ \\ln(\\frac{P(Y=1|x)}{1-P(Y=1|x)}) = w\\cdot x + b \\]

\u200b\u90a3\u4e48\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\uff1a

\\[ P(Y=1|x)=\\frac{exp(w\\cdot x+b)}{1+exp(w\\cdot x+b)} \\] \\[ P(Y=0|x)=\\frac{1}{1+exp(w\\cdot x+b)} \\]

\u200b\u8fd9\u200b\u5c31\u662f\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u56de\u5f52\u200b\uff0c\u200b\u73b0\u5728\u200b\u95ee\u9898\u200b\u662f\u200b\u6211\u4eec\u200b\u6709\u7684\u662f\u200b\u4e00\u5bf9\u200b\u6570\u636e\u200b\u70b9\u200b\u800c\u200b\u4e0d\u662f\u200b x \u200b\u548c\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u6211\u4eec\u200b\u8be5\u200b\u5982\u4f55\u200b\u8fdb\u884c\u200b\u62df\u5408\u200b\uff1f

"},{"location":"Note/Data%20Modeling/Logistic_Regression/#_4","title":"\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1","text":"

\u200b\u6211\u4eec\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\u7684\u200b\u4f3c\u7136\u200b\u51fd\u6570\u200b

\\[ L(w\uff0cb)=\\prod_{i=1}^{m}P(Y=y_i|x_i)=\\prod_{i=1}^{m}(\\frac{exp(w\\cdot x_i+b)}{1+exp(w\\cdot x_i+b)})^{y_i}(\\frac{1}{1+exp(w\\cdot x_i+b)})^{1-y_i} \\]

\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\u6c42\u89e3\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6781\u5927\u200b\u5316\u200b\u5bf9\u6570\u200b\u4f3c\u7136\u200b\u51fd\u6570\u200b\uff0c\u200b\u8fd9\u200b\u4e5f\u200b\u7b49\u6548\u4e8e\u200b\u6781\u5927\u200b\u5316\u4f3c\u7136\u200b\u51fd\u6570\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5bf9\u6570\u51fd\u6570\u200b\u662f\u200b\u5355\u8c03\u200b\u9012\u589e\u200b\u7684\u200b.

\\[\\begin{aligned} &\\ln L(w\uff0cb) = \\sum_{i=1}^{m}y_i(w\\cdot x_i+b)-\\ln(1+exp(w\\cdot x_i+b)) \\\\ \\end{aligned}\\]

\u200b\u90a3\u4e48\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u5c31\u200b\u8981\u6c42\u200b\u6211\u4eec\u200b\u627e\u5230\u200b\u4f7f\u200b\u5bf9\u6570\u200b\u4f3c\u7136\u200b\u51fd\u6570\u200b\u6700\u5927\u200b\u7684\u200b\u53c2\u6570\u200b

\\[ \\underset{w\uff0cb}{\\operatorname{arg max}} \\ln L(w\uff0cb) \\]

\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u5177\u4f53\u200b\u7684\u200b\u6c42\u89e3\u200b\u8fc7\u7a0b\u200b\u9700\u8981\u200b\u7528\u200b\u68af\u5ea6\u200b\u4e0b\u964d\u200b\u6cd5\u200b\u6216\u8005\u200b\u725b\u987f\u200b\u6cd5\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u56e0\u4e3a\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u51fd\u6570\u200b\u662f\u200b\u51f8\u51fd\u6570\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4fdd\u8bc1\u200b\u6c42\u89e3\u200b\u7684\u200b\u7ed3\u679c\u200b\u662f\u200b\u5168\u5c40\u200b\u6700\u4f18\u200b\u89e3\u200b.

"},{"location":"Note/Data%20Modeling/Logistic_Regression/#_5","title":"\u591a\u9879\u200b\u903b\u8f91\u200b\u65af\u8c1b\u200b\u56de\u5f52\u200b\u6a21\u578b","text":"

\u200b\u7c7b\u4f3c\u200b\u7684\u200b\uff0c\u200b\u591a\u9879\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u5206\u5e03\u200b\u7684\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\u5982\u4e0b\u200b\uff1a

\\[\\begin{aligned} &P(Y=1|x)=\\frac{exp(w_1\\cdot x+b_1)}{1+\\sum_{i=1}^{k-1} e^{w_i \\cdot x + b_i}} \\\\ &P(Y=2|x)=\\frac{exp(w_2\\cdot x+b_2)}{1+\\sum_{i=1}^{k-1} e^{w_i \\cdot x + b_i}} \\\\ &... \\\\ &P(Y=k|x)=\\frac{1}{1+\\sum_{i=1}^{k-1} e^{w_i \\cdot x + b_i}} \\\\ \\end{aligned}\\]"},{"location":"Note/Data%20Modeling/Max_Entropy/","title":"\u6700\u5927\u200b\u71b5\u200b\u6a21\u578b","text":"

\u200b\u7ea6\u200b 717 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

\u200b\u601d\u60f3\u200b

\u200b\u6709\u65f6\u5019\u200b\u6211\u4eec\u200b\u5df2\u6709\u200b\u7684\u200b\u6570\u636e\u200b\u5e76\u200b\u4e0d\u8db3\u4ee5\u200b\u6211\u4eec\u200b\u552f\u4e00\u200b\u786e\u5b9a\u200b\u4e00\u4e2a\u200b\u5206\u5e03\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u65f6\u5019\u200b\u5bf9\u4e8e\u200b\u6240\u6709\u200b\u5019\u9009\u200b\u7684\u200b\u5206\u5e03\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u8ba4\u4e3a\u200b\u71b5\u200b\u6700\u5927\u200b\u7684\u200b\u90a3\u4e2a\u200b\u5206\u5e03\u200b\u662f\u200b\u6700\u597d\u200b\u7684\u200b.\u200b\u6362\u8a00\u4e4b\u200b\uff0c\u200b\u5728\u200b\u6ee1\u8db3\u200b\u7ea6\u675f\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c3d\u53ef\u80fd\u200b\u91c7\u53d6\u200b\u7b49\u200b\u53ef\u80fd\u200b\u5206\u5e03\u200b.

"},{"location":"Note/Data%20Modeling/Max_Entropy/#_2","title":"\u6a21\u578b\u200b\u63cf\u8ff0","text":"

\u200b\u5bf9\u4e8e\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u7edf\u8ba1\u200b\u7ecf\u9a8c\u200b\u5206\u5e03\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u9891\u7387\u200b\uff09

\\[\\begin{aligned} &\\tilde{P}(X=x\uff0cY=y) = \\frac{v(X = x\uff0c Y = y)}{N} \\\\ &\\tilde{P}(X=x) = \\frac{v(X = x)}{N} \\\\ \\end{aligned}\\]

\u200b\u6211\u4eec\u200b\u5f15\u5165\u200b\u7279\u5f81\u51fd\u6570\u200b\\(f(x\uff0cy) \\ in {0\uff0c1}\\)\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7f6e\u9876\u200b\u67d0\u79cd\u200b\u6761\u4ef6\u200b\uff0c\u200b\u6ee1\u8db3\u6761\u4ef6\u200b\u7684\u200b\\((x\uff0cy)\\)\u200b\u5bf9\u5e94\u200b\u7684\u200b\u7279\u5f81\u51fd\u6570\u200b\u503c\u4e3a\u200b 1\uff0c\u200b\u5426\u5219\u200b\u4e3a\u200b 0.\u200b\u6bd4\u5982\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5b9a\u4e49\u200b\\(f(x\uff0cy) = 1\\)\u200b\u5f53\u4e14\u200b\u4ec5\u200b\u5f53\u200b\\(x\\)\u200b\u548c\u200b\\(y\\)\u200b\u76f8\u7b49\u200b\uff0c\u200b\u5426\u5219\u200b\u4e3a\u200b 0.\u200b\u5b9a\u4e49\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7279\u5f81\u51fd\u6570\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b9a\u4e49\u200b\u5728\u200b\u7279\u5f81\u51fd\u6570\u200b\u4e0a\u200b\u7684\u200b\u671f\u671b\u200b\uff1a

\\[ E_{\\tilde{P}}(f) = \\sum_{x\uff0cy}\\tilde{P}(x\uff0cy)f(x\uff0cy) \\]

\u200b\u7b80\u5355\u200b\u6765\u8bf4\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u662f\u200b\u5bf9\u200b\u67d0\u4e9b\u200b\\((x\uff0cy)\\)\u200b\u4e0a\u200b\u7684\u200b\u9891\u6570\u200b\u6c42\u548c\u200b\uff0c\u200b\u5728\u200b\u4e0a\u4f8b\u200b\u4e2d\u200b\uff0c\u200b\u5c31\u662f\u200b\u5bf9\u200b xy \u200b\u76f8\u7b49\u200b\u7684\u200b\u90a3\u4e9b\u200b\u9879\u200b\u7684\u200b\u9891\u6570\u200b\u6c42\u548c\u200b

\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u5b66\u4e60\u200b\u5230\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u6761\u4ef6\u200b\u5206\u5e03\u200b\\(P(Y|X)\\)\uff0c\u200b\u90a3\u4e48\u200b\u7528\u200b\u6211\u4eec\u200b\u5b66\u5230\u200b\u7684\u200b\u6761\u4ef6\u200b\u5206\u5e03\u200b\u4e0e\u200b X \u200b\u7684\u200b\u7ecf\u9a8c\u200b\u5206\u5e03\u200b\u7b97\u200b\u51fa\u6765\u200b\u7684\u200b\u671f\u671b\u200b\u662f\u200b\uff1a

\\[ E_{P}(f) = \\sum_{x\uff0cy}P(y|x)\\tilde{P}(x)f(x\uff0cy) \\]

\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u6211\u4eec\u200b\u5b66\u5230\u200b\u7684\u200b\u6761\u4ef6\u200b\u5462\u200b\u5206\u5e03\u200b\u5c3d\u53ef\u80fd\u200b\u7b26\u5408\u5b9e\u9645\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\\(P(y|x)\\tilde{P}(x)\\)\u200b\u5728\u200b\u7279\u5f81\u51fd\u6570\u200b\u7684\u200b\u610f\u4e49\u200b\u4e0a\u200b\u5c3d\u53ef\u80fd\u200b\u8d34\u8fd1\u200b\\(\\tilde{P}(x\uff0cy)\\)\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b

\\[ E_{P}(f) = E_{\\tilde{P}}(f) \\]

\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u7528\u200b\u4e0a\u9762\u200b\u4f8b\u5b50\u200b\u4e2d\u200b\u7684\u200b\u7279\u5f81\u51fd\u6570\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u7684\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u6211\u4eec\u200b\u5b66\u4e60\u200b\u5230\u200b\u7684\u200b\u5206\u5e03\u200b\u4e2d\u200b\uff0cxy \u200b\u76f8\u7b49\u200b\u7684\u200b\u9891\u6570\u200b\u7b49\u4e8e\u200b\u5b9e\u9645\u200b\u89c2\u6d4b\u200b\u5230\u200b\u7684\u200b xy \u200b\u76f8\u7b49\u200b\u7684\u200b\u9891\u6570\u200b.

\u200b\u8fd9\u91cc\u200b\u5c31\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u601d\u60f3\u200b\u4e2d\u200b\u63d0\u5230\u200b\u7684\u200b\u7ea6\u675f\u200b\uff0c\u200b\u6ee1\u8db3\u200b\u8fd9\u6837\u200b\u7ea6\u675f\u200b\u7684\u200b\u6a21\u578b\u200b\u5e76\u200b\u4e0d\u200b\u552f\u4e00\u200b\uff0c\u200b\u6211\u4eec\u200b\u8ba1\u7b97\u200b\u5404\u4e2a\u200b\u6a21\u578b\u200b\u7684\u200b\u6761\u4ef6\u200b\u71b5\u200b\uff1a

\\[ H(P) = -\\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)\\log P(y|x) \\]

\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u6761\u4ef6\u200b\u71b5\u200b\u6700\u5927\u200b\uff0c\u200b\u6761\u4ef6\u200b\u71b5\u200b\u8d8a\u200b\u5927\u200b\u7684\u200b\u5206\u5e03\u200b\u8d8a\u200b\u597d\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u4f18\u5316\u200b\u95ee\u9898\u200b.

"},{"location":"Note/Data%20Modeling/Max_Entropy/#_3","title":"\u6a21\u578b\u200b\u6c42\u89e3","text":"

\u200b\u5199\u51fa\u200b\u5f62\u5f0f\u5316\u200b\u8868\u8fbe\u5f0f\u200b\uff1a

\\[\\begin{aligned} \\underset{P \\in C}{\\operatorname{min}} &-H(P) = \\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)\\log P(y|x) \\\\ s.t. &\\sum_{y}P(y|x) = 1 \\\\ & E_{P}(f_i) = E_{\\tilde{P}}(f_i) \\\\ \\end{aligned}\\]

\u200b\u6ce8\u610f\u200b\u5230\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b\u591a\u4e2a\u200b\u7279\u5f81\u51fd\u6570\u200b\u6765\u200b\u8fdb\u884c\u200b\u7ea6\u675f\u200b

\u200b\u4e3a\u200b\u4e86\u89e3\u200b\u89c9\u200b\u4f18\u5316\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u7528\u200b\u4ee5\u4e0b\u200b\u4e09\u6b65\u200b

  • \u200b\u5199\u51fa\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\uff0c\u200b\u62c9\u683c\u6717\u200b\u65e5\u200b\u51fd\u6570\u200b\\(L(P\uff0cw)\\)\u200b\u4e3a\u200b\uff1a $$ \\undreset{P \\in C}{\\operatorname{min}} \\underset{w}{\\operatorname{max}} L(P\uff0cw) = \\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)\\log P(y|x) + \\sum_{i=1}^{n}w_i(\\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)f_i(x\uff0cy) - E_{\\tilde{P}}(f_i)) $$
  • \u200b\u6781\u5c0f\u200b\u5316\u200b\uff1a\u200b\u5728\u200b\\(L(P\uff0cw)\\)\u200b\u4e2d\u200b\u5bf9\u200b P \u200b\u6c42\u200b\u504f\u5bfc\u4ee5\u200b\u8fdb\u884c\u200b\u6700\u5c0f\u5316\u200b
  • \u200b\u6781\u5927\u200b\u5316\u200b\uff1a\u200b\u540c\u6837\u200b\u6c42\u5bfc\u200b\u6216\u8005\u200b\u4f7f\u7528\u200b\u5176\u4ed6\u200b\u6700\u4f18\u5316\u200b\u7b97\u6cd5\u200b\uff08\u200b\u68af\u5ea6\u200b\u4e0b\u964d\u200b\u6cd5\u200b\uff0c\u200b\u725b\u987f\u200b\u6cd5\u200b\uff0c\u200b\u62df\u200b\u725b\u987f\u200b\u6cd5\u200b\uff09
"},{"location":"Note/Data%20Modeling/Naive_Bayesian/","title":"\u6734\u7d20\u200b\u8d1d\u53f6\u65af\u200b\u7b97\u6cd5","text":"

\u200b\u7ea6\u200b 919 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

"},{"location":"Note/Data%20Modeling/Naive_Bayesian/#_2","title":"\u95ee\u9898\u200b\u53ca\u200b\u7b97\u6cd5\u200b\u63cf\u8ff0","text":"

\u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c \u200b\u5176\u4e2d\u200b \\(x \\in \\mathbb{R}^n\\)\uff0c\\(y_i \\in \\{ c_1\uff0cc_2\uff0c....c_k\\}\\)\uff0c \u200b\u4e00\u5171\u200b\u6709\u200b K \u200b\u79cd\u7c7b\u200b\u522b\u200b\uff0c\u200b\u73b0\u5728\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u70b9\u200b\\(x\\)\uff0c\u200b\u6c42\u51fa\u200b\u5b83\u200b\u7684\u200b\u7c7b\u522b\u200b\\(y\\).

\u200b\u7b97\u6cd5\u200b\u5e0c\u671b\u200b\u5b66\u4e60\u200b\u4e00\u4e2a\u200b\u8054\u5408\u200b\u6982\u7387\u5206\u5e03\u200b\\(P(X\uff0cY)\\)\uff0c\u200b\u800c\u200b\u6211\u4eec\u200b\u73b0\u5728\u200b\u5df2\u7ecf\u200b\u6709\u7684\u662f\u200b\u5148\u9a8c\u200b\u5206\u5e03\u200b\\(P(Y)\\)\u200b\u548c\u200b\u6761\u4ef6\u200b\u6982\u7387\u5206\u5e03\u200b\\(P(X|Y)\\).

\u200b\u4f46\u662f\u200b\u540e\u8005\u200b\u7684\u200b\u7a7a\u95f4\u200b\u592a\u200b\u5927\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6211\u4eec\u200b\u5f15\u5165\u200b\u72ec\u7acb\u6027\u200b\u5047\u8bbe\u200b\uff0c\u200b\u5047\u8bbe\u200b x \u200b\u7684\u200b\u6bcf\u4e2a\u200b\u7ef4\u5ea6\u200b\u90fd\u200b\u662f\u200b\u72ec\u7acb\u200b\u7684\u200b\uff08\u200b\u4e8b\u5b9e\u4e0a\u200b\u5927\u200b\u6982\u7387\u200b\u5e76\u200b\u4e0d\u662f\u200b\uff0c\u200b\u8fd9\u662f\u200b\u6781\u5927\u200b\u7b80\u5316\u200b\u8ba1\u7b97\u200b\u91cf\u200b\u7684\u200b\u4e00\u6b65\u200b\uff0c\u200b\u4e5f\u200b\u662f\u200b\u5f15\u5165\u200b\u8bef\u5dee\u200b\u7684\u200b\u4e00\u6b65\u200b\uff0c\u200b\u4e5f\u200b\u662f\u200b\u8be5\u200b\u7b97\u6cd5\u200b\u7684\u200b\u201c\u200b\u6734\u7d20\u200b\u201d\u200b\u4e4b\u200b\u5904\u200b\uff09:

\\[ P(X = x| Y = c_k) = P(X^{(1)} = x^{(1)}\uff0c X^{(2)} = x^{(2)} ... X^{(n)} = x^{(n)} | Y = c_k)= \\prod_{i=1}^{n}P(X^{(i)} = x^{(i)}| Y = c_k) \\]

\u200b\u4e0a\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u662f\u200b\u5728\u200b\u7c7b\u522b\u200b\u662f\u200b\\(c_k\\)\u200b\u7684\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0cX \u200b\u8fd9\u4e00\u200b n \u200b\u7ef4\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u53d6\u503c\u200b\u4e3a\u200b x \u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u5c31\u662f\u200b\\(c_k\\)\u200b\u8fd9\u200b\u4e00\u7c7b\u200b\u4e2d\u200b\u6bcf\u4e2a\u200b\u7ef4\u5ea6\u200b\u7684\u200b\u53d6\u503c\u200b\u4e3a\u200b\\(x^{(i)}\\)\u200b\u7684\u200b\u6982\u7387\u200b\u7684\u200b\u4e58\u79ef\u200b.

\u200b\u5b66\u4e60\u200b\u5230\u200b\u4e86\u200b\u8054\u5408\u200b\u6982\u7387\u5206\u5e03\u200b\u4e4b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b\u5206\u7c7b\u200b\u7684\u200b\u65f6\u5019\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\u6700\u5927\u200b\u540e\u9a8c\u200b\u6982\u7387\u200b\uff1a

\\[ y = \\underset{c_k}{\\operatorname{arg max}} P(Y = c_k) \\prod_{i=1}^{n}P(X^{(i)} = x^{(i)}| Y = c_k) \\]

\u200b\u4e0a\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u5047\u8bbe\u200b x \u200b\u7684\u200b\u7c7b\u522b\u200b\u662f\u200b\\(c_k\\)\uff0c\u200b\u8ba1\u7b97\u200b\u6bcf\u4e2a\u200b\\(c_k\\)\u200b\u8fd9\u200b\u4e00\u7c7b\u200b\u4e2d\u200b\u51fa\u73b0\u200b x \u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u627e\u51fa\u200b\u6982\u7387\u200b\u6700\u5927\u200b\u7684\u200b\u90a3\u200b\u4e00\u7c7b\u200b\u4f5c\u4e3a\u200b x \u200b\u7684\u200b\u5206\u7c7b\u200b.

PPT \u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5206\u7c7b\u200b\u5b9e\u4f8b\u200b

"},{"location":"Note/Data%20Modeling/Naive_Bayesian/#_3","title":"\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1","text":"

\u200b\u5229\u7528\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u4e0b\u9762\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u6982\u7387\u200b\u7684\u200b\u4f30\u8ba1\u200b\u516c\u5f0f\u200b\uff1a

\\[\\begin{aligned} &P(Y = c_k) = \\frac{\\sum_{i=1}^{N}I(y_i = c_k)}{N} \\\\ &P(X^{(i)} = a_{jl}| Y = c_k) = \\frac{\\sum_{i=1}^{N}I(x_i^{(i)} = a_{jl}\uff0cy_i = c_k)}{\\sum_{i=1}^{N}I(y_i = c_k)} \\end{aligned}\\]

\u200b\u6307\u793a\u200b\u51fd\u6570\u200b\u7684\u200b\u5b9a\u4e49\u200b\u5728\u200b\u524d\u9762\u200b\u5df2\u7ecf\u200b\u6709\u200b\u4ecb\u7ecd\u200b\uff0c\u200b\u540e\u7eed\u200b\u90fd\u200b\u9ed8\u8ba4\u200b\u4f7f\u7528\u200b\u8fd9\u4e00\u200b\u5b9a\u4e49\u200b.

\u200b\u7b2c\u4e00\u200b\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u662f\u200b\u4e0d\u540c\u200b\u7c7b\u522b\u200b\u7684\u200b\u51fa\u73b0\u200b\u6982\u7387\u200b\u7684\u200b\u5148\u9a8c\u6982\u7387\u200b\u76f4\u63a5\u200b\u4e3a\u200b\u6837\u672c\u200b\u4e2d\u8be5\u200b\u7c7b\u522b\u200b\u51fa\u73b0\u200b\u7684\u200b\u9891\u7387\u200b.

\u200b\u7b2c\u4e8c\u200b\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u662f\u200b\u5728\u200b\u7c7b\u522b\u200b\u4e3a\u200b\\(c_k\\)\u200b\u7684\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0c\u200b\u7b2c\u200b i \u200b\u7ef4\u200b\u53d6\u503c\u200b\u4e3a\u200b\\(a_{jl}\\)\u200b\u7684\u200b\u6982\u7387\u200b\u4e3a\u200b\u6837\u672c\u200b\u4e2d\u200b\\(c_k\\)\u200b\u7c7b\u4e2d\u200b\u8be5\u200b\u5206\u91cf\u200b\u4e3a\u200b\\(a_{jl}\\)\u200b\u7684\u200b\u6837\u672c\u200b\u5360\u200b\\(c_k\\)\u200b\u7c7b\u200b\u6837\u672c\u200b\u603b\u6570\u200b\u7684\u200b\u6bd4\u91cd\u200b.

\u200b\u601d\u60f3\u200b

\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u5728\u200b\u6b64\u5904\u200b\u7684\u200b\u7ed3\u679c\u200b\u57fa\u672c\u4e0a\u200b\u53ef\u4ee5\u200b\u7b80\u5355\u200b\u5f52\u7ed3\u4e3a\u200b\uff1a\u200b\u7528\u200b\u9891\u7387\u200b\u4f30\u8ba1\u200b\u6982\u7387\u200b

"},{"location":"Note/Data%20Modeling/Naive_Bayesian/#_4","title":"\u8d1d\u53f6\u65af\u200b\u4f30\u8ba1","text":"

\u200b\u4e0a\u8ff0\u200b\u7684\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u5728\u200b\u4e00\u4e2a\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u53ef\u80fd\u200b\u9047\u5230\u200b\u95ee\u9898\u200b\uff0c\u200b\u5982\u679c\u200b\u67d0\u4e2a\u200b\u6837\u672c\u200b\u6ca1\u6709\u200b\u51fa\u73b0\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5bf9\u200b\u90a3\u4e2a\u200b\u7c7b\u522b\u200b\u4f30\u8ba1\u200b\u7684\u200b\u4fe1\u606f\u200b\u5b8c\u5168\u200b\u4e22\u5931\u200b.

\u200b\u4e3a\u200b\u89e3\u51b3\u200b\u8fd9\u4e00\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u624b\u52a8\u200b\u4e3a\u200b\u6bcf\u200b\u4e00\u200b\u7c7b\u522b\u200b\u6dfb\u52a0\u200b\u9ed8\u8ba4\u200b n \u200b\u6b21\u200b\u7684\u200b\u51fa\u73b0\u200b\u9891\u6570\u200b\uff1a

\\[\\begin{aligned} &P(Y = c_k) = \\frac{\\sum_{i=1}^{N}I(y_i = c_k) + \\lambda}{N + K\\lambda} \\\\ &P(X^{(i)} = a_{jl}| Y = c_k) = \\frac{\\sum_{i=1}^{N}I(x_i^{(i)} = a_{jl}\uff0cy_i = c_k) + \\lambda}{\\sum_{i=1}^{N}I(y_i = c_k) + S_i\\lambda} \\end{aligned}\\]

\u200b\u5176\u4e2d\u200b\\(S_i\\)\u200b\u662f\u200b\u7b2c\u200b i \u200b\u7ef4\u200b\u7684\u200b\u53d6\u503c\u200b\u4e2a\u6570\u200b\uff0c\\(\\lambda\\)\u200b\u662f\u200b\u4e00\u4e2a\u200b\u8d85\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e00\u822c\u200b\u53d6\u200b 1.

\u200b\u5728\u200b\u7b2c\u4e00\u200b\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7c7b\u522b\u200b\u90fd\u200b\u52a0\u5165\u200b\u4e86\u200b\\(\\lambda\\)\u200b\u7684\u200b\u9891\u7387\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5206\u5b50\u200b\u5355\u72ec\u200b\u67d0\u7c7b\u200b\u7684\u200b\u9891\u6570\u200b\u52a0\u4e0a\u200b\u4e86\u200b\\(\\lambda\\)\uff0c\u200b\u5206\u6bcd\u200b\u52a0\u4e0a\u200b\u4e86\u200b\u603b\u200b\u7c7b\u522b\u200b\u6570\u200b K \u200b\u4e58\u200b\u4e0a\u200b\\(\\lambda\\).

\u200b\u5728\u200b\u7b2c\u4e8c\u200b\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7c7b\u522b\u200b\u7684\u200b\u6bcf\u4e2a\u200b\u7ef4\u5ea6\u200b\u90fd\u200b\u52a0\u5165\u200b\u4e86\u200b\\(\\lambda\\)\u200b\u7684\u200b\u9891\u7387\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5206\u5b50\u200b\u5355\u72ec\u200b\u67d0\u7c7b\u200b\u7684\u200b\u9891\u6570\u200b\u52a0\u4e0a\u200b\u4e86\u200b\\(\\lambda\\)\uff0c\u200b\u5206\u6bcd\u200b\u52a0\u4e0a\u200b\u4e86\u200b\u8be5\u200b\u7ef4\u5ea6\u200b\u53ef\u80fd\u200b\u7684\u200b\u53d6\u503c\u200b\u4e2a\u200b\u6570\u6570\u200b\u4e58\u200b\u4e0a\u200b\\(\\lambda\\)\uff08\u200b\u56e0\u4e3a\u200b\u6709\u200b\u591a\u5c11\u200b\u4e2a\u200b\u53d6\u503c\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u4eba\u4e3a\u200b\u7684\u200b\u52a0\u4e0a\u200b\u4e86\u200b\u591a\u5c11\u200b\u4e2a\u200b\\(\\lambda\\)\uff09.

\u200b\u53ef\u4ee5\u200b\u8ba4\u4e3a\u200b\u8d1d\u53f6\u65af\u200b\u4f30\u8ba1\u200b\u662f\u200b\u5bf9\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u8fdb\u884c\u200b\u4e86\u200b\u5e73\u6ed1\u200b.

"},{"location":"Note/Data%20Modeling/Perceptron/","title":"\u611f\u77e5\u673a","text":"

\u200b\u7ea6\u200b 846 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

"},{"location":"Note/Data%20Modeling/Perceptron/#_2","title":"\u539f\u59cb\u200b\u5f62\u5f0f","text":"

\u200b\u611f\u77e5\u673a\u200b\u7684\u200b\u7ed3\u6784\u200b\u5982\u4e0b\u200b\u56fe\u200b\u6240\u793a\u200b\uff0c\u200b\u88ab\u200b\u89c6\u4e3a\u200b\u662f\u200b\u6700\u200b\u7b80\u5355\u200b\u7684\u200b\u524d\u9988\u200b\u795e\u7ecf\u7f51\u7edc\u200b\uff0c\u200b\u662f\u200b\u4e00\u79cd\u200b\u4e8c\u5143\u200b\u7ebf\u6027\u200b\u5206\u7c7b\u5668\u200b.

\u200b\u4e0b\u9762\u200b\u7ed9\u51fa\u200b\u5f62\u5f0f\u5316\u200b\u8868\u8ff0\u200b\uff1a

\u200b\u611f\u77e5\u673a\u200b

\u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u5176\u4e2d\u200b\\(y_i \\in \\{1\uff0c-1\\}\\)\u200b\u662f\u200b\u6570\u636e\u200b\u6807\u7b7e\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u627e\u5230\u200b\u4e00\u7ec4\u200b\\((w\uff0cb)\\)\u200b\u4f7f\u5f97\u200b\u51fd\u6570\u200b\\(f(x) = sign(w \\cdot x + b)\\)\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u6700\u5c0f\u200b\uff1a

\\[ \\min L(w\uff0cb) = - \\sum_{i=1}^{n} y_i(w \\cdot x_i + b) \\]

\u200b\u6ce8\u610f\u200b\u4e0a\u200b\u6587\u4e2d\u200b\u7684\u200b\\(sign\\)\u200b\u51fd\u6570\u200b\uff0c\u200b\u5b83\u200b\u7684\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\uff1a

\\[ sign(x) = \\left\\{ \\begin{aligned} 1\uff0c & x \\geq 0 \\\\ -1\uff0c & x < 0 \\end{aligned} \\right. \\]

\u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c\u200b\u5982\u679c\u200b\\(y_i\\)\u200b\u548c\u200b\\(f(x)\\)\u200b\u82e5\u200b\u662f\u200b\u7b26\u53f7\u200b\u76f8\u540c\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\uff09\uff0c\u200b\u90a3\u4e48\u200b\\(y_i(w \\cdot x_i + b)\\)\u200b\u7684\u200b\u503c\u200b\u5c31\u662f\u200b 1\uff0c\u200b\u53cd\u4e4b\u200b\u5219\u200b\u662f\u200b-1.\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u5c31\u662f\u200b\u5c3d\u53ef\u80fd\u200b\u6700\u5927\u5316\u200b\u6240\u6709\u200b\\(y_i(w \\cdot x_i + b)\\)\u200b\u6c42\u548c\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u8fd9\u200b\u4e5f\u200b\u7b49\u6548\u4e8e\u200b\u6700\u5c0f\u5316\u200b\u5176\u200b\u8d1f\u6570\u200b.\uff08\u200b\u8be5\u200b\u9886\u57df\u200b\u7ea6\u5b9a\u4fd7\u6210\u200b\u5c31\u662f\u200b\u5199\u6210\u200b\u6700\u5c0f\u5316\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b\uff0c\u200b\u6700\u5c0f\u5316\u200b\u548c\u200b\u6700\u5927\u5316\u200b\u4e4b\u95f4\u200b\u53ea\u8981\u200b\u52a0\u200b\u4e00\u4e2a\u200b\u8d1f\u53f7\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e92\u76f8\u8f6c\u5316\u200b\uff09

\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b SGD\uff08Stochastic Gradient Descent\uff09\u200b\u6765\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u95ee\u9898\u200b\uff0c\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u7684\u200b\u68af\u5ea6\u200b\u4e3a\u200b\uff1a

\\[\\begin{aligned} &\\nabla_w L(w\uff0cb) = - \\sum_{i=1}^{n} y_i x_i \\\\ &\\nabla_b L(w\uff0cb) = - \\sum_{i=1}^{n} y_i \\end{aligned}\\]

\u200b\u4ece\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u968f\u673a\u200b\u9009\u53d6\u200b\u4e00\u4e2a\u200b\u6837\u672c\u200b\\((x_i\uff0cy_i)\\)\uff0c\u200b\u66f4\u65b0\u200b\u53c2\u6570\u200b\uff1a

\\[\\begin{aligned} & w = w + \\eta y_i x_i\\\\ & b = b + \\eta y_i \\\\ \\end{aligned}\\]

\u200b\u76f4\u5230\u200b\u6ca1\u6709\u200b\u8bef\u200b\u5206\u7c7b\u200b\u70b9\u200b.\u200b\u5176\u4e2d\u200b\\(\\eta \\in (0\uff0c1]\\)\u200b\u662f\u200b\u5b66\u4e60\u200b\u7387\u200b.

"},{"location":"Note/Data%20Modeling/Perceptron/#_3","title":"\u6536\u655b\u6027","text":"

\u200b\u53ef\u4ee5\u200b\u8bc1\u660e\u200b\uff0c\u200b\u611f\u77e5\u673a\u200b\u7684\u200b\u8bef\u200b\u5206\u7c7b\u200b\u6b21\u6570\u200b K \u200b\u5b58\u5728\u200b\u4e00\u4e2a\u200b\u4e0a\u200b\u754c\u200b\uff0c\u200b\u5373\u200b\uff1b

\\[\\begin{aligned} & K \\leq (\\frac{R}{\\gamma})^2 \\\\ & R = \\max_{1 \\leq i \\leq n} ||x_i|| \\\\ & \\gamma = \\min_{1 \\leq i \\leq n} y_i(w^* \\cdot x_i + b^*) \\end{aligned}\\]

\u200b\u5176\u4e2d\u200b\\(w^*\uff0cb^*\\)\u200b\u662f\u200b\u6700\u4f18\u200b\u89e3\u200b\uff0c\\(R\\)\u200b\u662f\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u6837\u672c\u200b\u70b9\u200b\u7684\u200b\u6700\u5927\u200b\u8303\u6570\u200b\uff0c\\(\\gamma\\)\u200b\u662f\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b. \u200b\u5bf9\u200b\u8bc1\u660e\u200b\u8fc7\u7a0b\u200b\u611f\u5174\u8da3\u200b\u7684\u200b\u53ef\u4ee5\u200b\u770b\u4e66\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u4e0d\u200b\u5c55\u5f00\u200b.

"},{"location":"Note/Data%20Modeling/Perceptron/#_4","title":"\u5bf9\u5076\u200b\u5f62\u5f0f","text":"

\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u53c2\u6570\u200b\u4e3a\u200b\\(w_0 = 0\uff0cb_0 = 0\\)\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\uff1a

\\[\\begin{aligned} & w = \\sum \\eta y_i x_i \\\\ & b = \\sum \\eta y_i \\end{aligned}\\]

\u200b\u5176\u4e2d\u200b\\(\\eta\\)\u200b\u662f\u200b\u5b66\u4e60\u200b\u7387\u200b.\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u662f\u4ece\u200b 0 \u200b\u5f00\u59cb\u200b\u6bcf\u6b21\u200b\u90fd\u200b\u5f80\u200b\u53c2\u6570\u200b\u4e0a\u52a0\u200b\u4e00\u5b9a\u200b\u7684\u200b\u66f4\u65b0\u200b\u503c\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e0a\u200b\u5f0f\u200b\u81ea\u7136\u200b\u6210\u7acb\u200b.

\u200b\u5047\u8bbe\u200b\u5176\u4e2d\u200b\u7b2c\u200b i \u200b\u4e2a\u200b\u6570\u636e\u200b\u70b9\u200b\u5728\u200b SGD \u200b\u4e2d\u200b\u88ab\u200b\u968f\u673a\u200b\u9009\u4e2d\u200b\u4e86\u200b\\(n_i\\)\u200b\u6b21\u200b\uff0c\u200b\u90a3\u4e48\u200b\u5b83\u200b\u56e0\u6b64\u200b\u5bfc\u81f4\u200b\u4e86\u200b\\(n_i\\)\u200b\u6b21\u200b\u53c2\u6570\u200b\u7684\u200b\u66f4\u65b0\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b\u4e0a\u5f0f\u200b\u5199\u6210\u200b\uff1a

\\[\\begin{aligned} & w = \\sum_{i=1}^{n} \\eta n_i y_i x_i \\\\ & b = \\sum_{i=1}^{n} \\eta n_i y_i \\end{aligned}\\]

\u200b\u4ee4\u200b\\(\\alpha_i = \\eta n_i\\)\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\uff1a

\\[\\begin{aligned} & w = \\sum_{i=1}^{n}\\alpha_i y_i x_i \\\\ & b = \\sum_{i=1}^{n}\\alpha_i y_i \\end{aligned}\\]

\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u7c7b\u200b\u51fd\u6570\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5199\u6210\u200b\uff1a

\\[ f(x) = sign(\\sum_{i=1}^{n}\\alpha_i y_i\uff08 x_i \\cdot x \uff09 + \\sum_{i=1}^{n}\\alpha_i y_i) \\]

\u200b\u6bcf\u6b65\u200b SGD \u200b\u4e2d\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u66f4\u65b0\u200b\\(\\alpha_i\\):

\\[ \\alpha_i = \\alpha_i + \\eta \\]

\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u7c7b\u200b\u51fd\u6570\u200b\u4e2d\u200b\u53ea\u6709\u200b\\(\\alpha_i\\)\u200b\u9700\u8981\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b\uff0c\u200b\u9664\u6b64\u4e4b\u5916\u200b\u8fd8\u6709\u200b\u5927\u91cf\u200b\u7684\u200b x \u200b\u7684\u200b\u5185\u79ef\u200b\u8fd0\u7b97\u200b\uff0c\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b x \u200b\u7684\u200b\u5185\u79ef\u200b\u9884\u5148\u200b\u8ba1\u7b97\u51fa\u6765\u200b\uff0c\u200b\u8fd9\u200b\u88ab\u79f0\u4f5c\u200b Gram \u200b\u77e9\u9635\u200b\uff1a

Gram \u200b\u77e9\u9635\u200b

\u200b\u7ed9\u5b9a\u200b n \u200b\u4e2a\u200b\u5411\u91cf\u200b\\(x_1\uff0cx_2\uff0c...\uff0cx_n\\)\uff0c\u200b\u90a3\u4e48\u200b Gram \u200b\u77e9\u9635\u200b\\(G\\)\u200b\u662f\u200b\u7531\u200b\u8fd9\u4e9b\u200b\u5411\u91cf\u200b\u6240\u6709\u200b\u53ef\u80fd\u200b\u7684\u200b\u5185\u79ef\u200b\u7ec4\u6210\u200b\u7684\u200b\u77e9\u9635\u200b\uff0c\u200b\u5373\u200b\uff1a

\\[ g_{ij} = x_i \\cdot x_j \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/","title":"\u652f\u6301\u200b\u5411\u91cf\u200b\u673a","text":"

\u200b\u7ea6\u200b 2059 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 7 \u200b\u5206\u949f\u200b

Warning

\u200b\u5f88\u591a\u200b\u4eba\u200b\u90fd\u200b\u5410\u200b\u69fd\u200b\uff0c\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u673a\u200b\u8fd9\u4e2a\u200b\u540d\u5b57\u200b\u8d77\u200b\u7684\u200b\u4f9d\u6258\u200b

"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_2","title":"\u6a21\u578b\u200b\u63cf\u8ff0","text":"

\u200b\u5bf9\u4e8e\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u5176\u4e2d\u200b\\(x_i \\in \\mathbb{R}^n\uff0c y \\in \\{1\uff0c-1\\}\\)\uff0c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u627e\u5230\u200b\u4e00\u4e2a\u200b\u8d85\u5e73\u9762\u200b\\(w\\cdot x + b = 0\\)\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u200b\u5206\u5f00\u200b.

\u200b\u5b9e\u4f8b\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b

\\[ \\gamma_i = \\frac{y_i(w\\cdot x_i + b)}{\\|w\\|} \\]

\u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c\u200b\u5176\u200b\u7edd\u5bf9\u503c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u70b9\u5230\u200b\u76f4\u7ebf\u200b\u8ddd\u79bb\u200b

\u200b\u5b9e\u4f8b\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b

\\[ \\hat{\\gamma_i} = y_i(w\\cdot x_i + b) \\]

\u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c\u200b\u5176\u200b\u7edd\u5bf9\u503c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u9664\u53bb\u200b\u4e86\u200b\\(||w||\\)\u200b\u8fd9\u4e2a\u200b\u56e0\u7d20\u200b

\u200b\u4e0a\u8ff0\u200b\u7684\u200b\u53d8\u91cf\u200b\u7684\u200b\u7edd\u5bf9\u503c\u200b\u542b\u4e49\u200b\u90fd\u200b\u8868\u793a\u200b\u67d0\u79cd\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u800c\u200b\u7b26\u53f7\u200b\u8868\u793a\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\u4e0e\u5426\u200b\uff0c\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\u65f6\u95f4\u200b\u9694\u4e3a\u200b\u6b63\u200b\uff0c\u200b\u5206\u7c7b\u200b\u9519\u8bef\u200b\u65f6\u95f4\u200b\u9694\u4e3a\u200b\u8d1f\u200b

\u200b\u7ed9\u5b9a\u200b\u4e00\u7ec4\u200b\u6570\u636e\u200b\u70b9\u200b\u548c\u200b\u4e00\u4e2a\u200b\u8d85\u5e73\u9762\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u8ba1\u7b97\u200b\u51fa\u200b\u5404\u4e2a\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u548c\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b.\u200b\u4f46\u662f\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u6210\u200b\u6bd4\u4f8b\u200b\u7684\u200b\u540c\u65f6\u200b\u653e\u7f29\u200b w \u200b\u548c\u200b b\uff0c\u200b\u90a3\u4e48\u200b\u8d85\u5e73\u9762\u200b\u548c\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b\u90fd\u200b\u5b8c\u5168\u200b\u4e0d\u53d8\u200b\uff0c\u200b\u4f46\u662f\u200b\u6240\u6709\u200b\u70b9\u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u90fd\u200b\u4f1a\u200b\u968f\u7740\u200b w \u200b\u7684\u200b\u53d8\u5316\u200b\u800c\u200b\u53d8\u5316\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b\uff08\u200b\u4e0d\u53d8\u200b\uff09\u200b\u4e58\u200b\u4e0a\u200b w \u200b\u7684\u200b\u6a21\u200b\uff08\u200b\u6b63\u5728\u200b\u88ab\u6210\u200b\u6bd4\u4f8b\u200b\u653e\u7f29\u200b\uff09

\u200b\u4e3a\u4e86\u200b\u63d0\u9ad8\u200b\u5206\u7c7b\u200b\u7684\u786e\u200b\u4fe1\u5ea6\u200b\u548c\u200b\u6cdb\u5316\u200b\u80fd\u529b\u200b\uff0c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u6700\u5927\u5316\u200b\u6700\u5c0f\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5c3d\u91cf\u200b\u63d0\u9ad8\u200b\u6240\u6709\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u8ddd\u79bb\u200b\u7684\u200b\u4e0b\u754c\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u8ba9\u200b\u6240\u6709\u200b\u70b9\u200b\u90fd\u200b\u5c3d\u53ef\u80fd\u200b\u79bb\u200b\u8d85\u5e73\u9762\u200b\u8fdc\u200b\u4e00\u70b9\u200b\uff08\u200b\u79bb\u200b\u8d85\u5e73\u9762\u200b\u5f88\u8fd1\u200b\u7684\u8bdd\u200b\uff0c\u200b\u7a0d\u5fae\u200b\u6709\u200b\u4e00\u70b9\u200b\u6270\u52a8\u200b\u5c31\u200b\u5bb9\u6613\u200b\u88ab\u200b\u5206\u6210\u200b\u53e6\u4e00\u7c7b\u200b\uff09

\u200b\u4e8e\u662f\u200b\u6211\u4eec\u200b\u5199\u51fa\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b

\\[\\begin{aligned} \\underset {w\uff0cb}{\\operatorname{max}} & \\quad \\gamma \\\\ s.t. & \\quad y_i(w\\cdot x_i + b) \\geq \\gamma\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

\u200b\u5176\u4e2d\u200b\u7684\u200b\\(\\gamma = \\underset {i}{\\operatorname{min}} \\gamma_i\\)\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u6700\u5c0f\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b

\u200b\u89c2\u5bdf\u200b\u5230\u200b\\(\\gamma\\|w\\| = \\hat{\\gamma}\\)\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u4e0a\u8ff0\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b\u8f6c\u5316\u200b\u4e3a\u200b

\\[\\begin{aligned} \\underset {w\uff0cb}{\\operatorname{max}} & \\quad \\frac{\\hat{\\gamma}}{\\|w\\|} \\\\ s.t. & \\quad y_i(w\\cdot x_i + b) \\geq \\hat{\\gamma}\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u6210\u200b\u6bd4\u4f8b\u200b\u7684\u200b\u653e\u7f29\u200b w \u200b\u548c\u200b b \u200b\u6765\u200b\u8c03\u8282\u200b\\(\\hat{\\gamma}\\)\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u653e\u7f29\u200b\\(w\\)\u200b\u4f7f\u5f97\u200b\\(\\hat{\\gamma} = 1\\)\uff0c\u200b\u4e0a\u8ff0\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b\u8f6c\u5316\u200b\u4e3a\u200b

\\[\\begin{aligned} \\underset {w\uff0cb}{\\operatorname{max}} & \\quad \\frac{1}{\\|w\\|} \\\\ s.t. & \\quad y_i(w\\cdot x_i + b) \\geq 1\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u4f18\u5316\u200b\u95ee\u9898\u200b\u53ef\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u89e3\u200b\\(w^*\uff0cb^*\\)\uff0c\u200b\u6784\u6210\u200b\u6700\u4f18\u200b\u5206\u79bb\u200b\u8d85\u5e73\u9762\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8bc1\u660e\u200b\uff0c\u200b\u8be5\u200b\u8d85\u5e73\u9762\u200b\u5b58\u5728\u200b\u4e14\u200b\u552f\u4e00\u200b\uff0c\u200b\u90a3\u4e9b\u200b\u79bb\u200b\u8d85\u5e73\u9762\u200b\u6700\u8fd1\u200b\u7684\u200b\u70b9\u200b\u5c31\u200b\u88ab\u200b\u79f0\u4e3a\u200b\u652f\u6301\u200b\u5411\u91cf\u200b

"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_3","title":"\u6a21\u578b\u200b\u6c42\u89e3","text":""},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_4","title":"\u5bf9\u5076\u200b\u95ee\u9898","text":""},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_5","title":"\u5199\u51fa\u200b\u5bf9\u5076\u200b\u95ee\u9898","text":"

\u200b\u62c9\u683c\u6717\u200b\u65e5\u200b\u51fd\u6570\u200b\u4e3a\u200b\uff1a

\\[ L(w\uff0cb\uff0c\\alpha) = \\frac{1}{2}||w||^2 - \\sum_{i=1}^{N}\\alpha_iy_i(w\\cdot x_i + b) + \\sum_{i=1}^{N}\\alpha_i \\]

\u200b\u6211\u4eec\u200b\u5c06\u200b\u6700\u5c0f\u200b\u6700\u5927\u200b\u95ee\u9898\u200b\u8f6c\u5316\u200b\u4e3a\u200b\u6700\u5927\u200b\u6700\u5c0f\u200b\u95ee\u9898\u200b\uff0c\u200b\u5199\u51fa\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\uff1a

\\[ \\underset {\\alpha}{\\operatorname{min}} \\underset {w\uff0cb}{\\operatorname{max}} L(w\uff0cb\uff0c\\alpha) \\rightarrow \\underset {\\alpha}{\\operatorname{min}} \\underset {w\uff0cb}{\\operatorname{max}} L(w\uff0cb\uff0c\\alpha) \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_6","title":"\u6781\u5c0f\u200b\u5316","text":"

\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u8ba9\u200b\\(\\nabla_w L(w\uff0cb\uff0c\\alpha) = 0\\)\u200b\u548c\u200b\\(\\nabla_b L(w\uff0cb\uff0c\\alpha) = 0\\)\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b

\\[\\begin{aligned} & w = \\sum_{i=1}^{N}\\alpha_i y_i x_i \\\\ & 0 = \\sum_{i=1}^{N}\\alpha_i y_i \\\\ \\end{aligned}\\]

\u200b\u5e26\u56de\u200b\u539f\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u5f97\u5230\u200b\uff1a

\\[ L(w\uff0cb\uff0c\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_j(x_i\\cdot x_j) \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_7","title":"\u6781\u5927\u200b\u5316","text":"

\u200b\u5728\u200b\u6781\u5c0f\u200b\u5316\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5269\u4e0b\u200b\u7684\u200b\u95ee\u9898\u200b\u5c31\u662f\u200b

\\[\\begin{aligned} \\underset {\\alpha}{\\operatorname{max}} & \\quad L(\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_j(x_i\\cdot x_j) \\\\ s.t. & \\quad \\sum_{i=1}^{N}\\alpha_i y_i = 0 \\\\ & \\quad \\alpha_i \\geq 0\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

\u200b\u901a\u8fc7\u200b\u67d0\u79cd\u200b\u65b9\u5f0f\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u89e3\u200b\\(\\alpha^*\\)

"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_8","title":"\u539f\u59cb\u200b\u95ee\u9898","text":""},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#kkt","title":"\u5e94\u7528\u200b KKT \u200b\u6761\u4ef6","text":"

\u200b\u6709\u200b\u4e86\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u7684\u200b\u6700\u4f18\u200b\u89e3\u200b\\(\\alpha^* = (\\alpha_1^*\uff0c\\alpha_2^*\uff0c...\uff0c\\alpha_N^*)\\)\uff0c\u200b\u5e94\u7528\u200b KKT \u200b\u6761\u4ef6\u200b\uff1a

\\[\\begin{align} & \\alpha_i^* \\geq 0 \\tag{1}\\\\ & y_i(w^*\\cdot x_i + b^*) - 1 \\geq 0 \\tag{2}\\\\ & \\alpha_i^*(y_i(w^*\\cdot x_i + b^*) - 1) = 0 \\tag{3}\\\\ & \\nabla_w L(w^*\uff0cb^*\uff0c\\alpha^*) = w^* - \\sum_{i=1}^{N}\\alpha_i^* y_i x_i = 0 \\tag{4}\\\\ & \\nabla_b L(w^*\uff0cb^*\uff0c\\alpha^*) = \\sum_{i=1}^{N}\\alpha_i^* y_i = 0 \\tag{5}\\\\ \\end{align}\\]

\u200b\u82e5\u200b\\(\\alpha^* = 0\\)\uff0c\u200b\u7531\u200b(4)\u200b\u53ef\u4ee5\u200b\u63a8\u51fa\u200b\\(w^* = 0\\)\uff0c\u200b\u663e\u7136\u200b\u4e0d\u200b\u5bf9\u200b\uff0c\u200b\u6240\u4ee5\u200b\\(\\alpha^*\\)\u200b\u4e0d\u5168\u200b\u4e3a\u200b\u96f6\u200b

\u200b\u82e5\u200b\\(\\alpha_i^* > 0\\)\uff0c\u200b\u7531\u200b(3)\u200b\u53ef\u4ee5\u200b\u63a8\u51fa\u200b\\(y_i(w^*\\cdot x_i + b^*) = 1\\)\uff0c\u200b\u56de\u5fc6\u200b\u524d\u200b\u6587\u200b\u6211\u4eec\u200b\u5df2\u7ecf\u200b\u4ee4\u200b\\(\\hat{\\gamma} = 1\\)\uff0c\u200b\u6240\u4ee5\u200b j \u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u8ddf\u200b\u6700\u5c0f\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u76f8\u7b49\u200b\uff0c\u200b\u6bcf\u4e2a\u200b j \u200b\u90fd\u200b\u56e0\u6b64\u200b\u6210\u4e3a\u200b\u4e00\u4e2a\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\uff0c\u200b\u5176\u4e2d\u200b\u65e2\u6709\u200b\u6b63\u4f8b\u200b\u4e5f\u200b\u6709\u200b\u53cd\u4f8b\u200b

"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#wb","title":"\u6c42\u200b\u6700\u4f18\u200b w\uff0cb","text":"

\u200b\u5229\u7528\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b

\\[\\begin{align} & w^* = \\sum_{i=1}^{N}\\alpha_i^* y_i x_i \\\\ & b^* = y_j - \\sum_{i=1}^{N}\\alpha_i^* y_i (x_i\\cdot x_j) \\\\ \\end{align}\\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_9","title":"\u5f97\u5230\u200b\u5206\u79bb\u200b\u51fd\u6570","text":"

\u200b\u5229\u7528\u200b\u6700\u4f18\u200b\u89e3\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u5206\u79bb\u200b\u51fd\u6570\u200b

\\[ f(x) = sign(\\sum_{i=1}^{N}\\alpha_i^* y_i (x_i\\cdot x) + b^*) \\]

\u200b\u4ee5\u4e0a\u200b\u4fbf\u662f\u200b\u6c42\u89e3\u200b\u4e8c\u6b21\u200b\u89c4\u5212\u200b\u95ee\u9898\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u95f4\u9694\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u5176\u4e2d\u200b\u53ea\u6709\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u4e2d\u200b\u7684\u200b\u6c42\u200b\u7684\u200b\u6700\u4f18\u200b\\(\\alpha^*\\)\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6ca1\u6709\u200b\u9610\u660e\u200b\uff0c\u200b\u540e\u9762\u200b\u4f1a\u200b\u7ed9\u51fa\u200b

"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_10","title":"\u8f6f\u200b\u95f4\u9694","text":"

\u200b\u4e00\u822c\u800c\u8a00\u200b\uff0c\u200b\u7531\u4e8e\u200b\u566a\u58f0\u200b\u7684\u200b\u5e72\u6270\u200b\uff0c\u200b\u6211\u4eec\u200b\u5f88\u96be\u200b\u76f4\u63a5\u200b\u62ff\u5230\u200b\u4e00\u4e2a\u200b\u7ebf\u6027\u200b\u53ef\u5206\u200b\u7684\u200b\u6570\u636e\u200b\u96c6\u200b\uff0c\u200b\u800c\u662f\u200b\u4e00\u4e2a\u200b\u8fd1\u4f3c\u200b\u7ebf\u6027\u200b\u53ef\u5206\u200b\u7684\u200b\u6570\u636e\u200b\u96c6\u200b\uff0c\u200b\u6211\u4eec\u200b\u53bb\u6389\u200b\u5927\u90e8\u5206\u200b\u7684\u200b\u566a\u70b9\u200b\u540e\u200b\u53ef\u4ee5\u200b\u505a\u5230\u200b\u7ebf\u6027\u200b\u53ef\u200b\u5206\u200b\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u4e9b\u200b\u566a\u70b9\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u8dd1\u200b\u5230\u200b\u4e86\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4ee5\u5185\u200b\u751a\u81f3\u200b\u8d85\u5e73\u9762\u200b\u5bf9\u9762\u200b\u7684\u200b\uff0c\u200b\u8fd9\u200b\u610f\u5473\u7740\u200b

\\[ y_i(w\\cdot x_i + b) \\geq 1 - \\xi_i \\quad i = 1\uff0c2\uff0c...\uff0cN (\\xi_i \\geq 0 ) \\]

\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\uff0c\u200b\u5e76\u975e\u200b\u6240\u6709\u200b\u70b9\u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u90fd\u200b\u5927\u4e8e\u200b 1 \u200b\u4e86\u200b\uff08\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u4e3a\u200b 1 \u200b\u7684\u200b\u662f\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\uff0c\u200b\u4e0d\u200b\u5927\u4e8e\u200b\u4e00\u200b\u5c31\u200b\u4f4d\u4e8e\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4ee5\u5185\u200b\u4e86\u200b\uff09\uff0c

\u200b\u5f53\u7136\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e0d\u80fd\u5141\u8bb8\u200b\u65e0\u200b\u9650\u5236\u200b\u7684\u200b\u677e\u5f1b\u200b\uff0c\u200b\u4e0d\u7136\u200b\u6240\u8c13\u200b\u7684\u200b\u5176\u4ed6\u200b\u5411\u91cf\u200b\u90fd\u200b\u53ef\u4ee5\u200b\u968f\u610f\u200b\u8dd1\u200b\u5230\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4ee5\u5185\u200b\u7684\u8bdd\u200b\uff0c\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4e5f\u200b\u5c31\u200b\u6ca1\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fdb\u5f62\u200b\u6b63\u5219\u200b\u5316\u200b

\\[ \\underset {w\uff0cb\uff0c\\xi}{\\operatorname{min}} \\quad \\frac{1}{2}||w||^2 + C\\sum_{i=1}^{N}\\xi_i \\\\ \\]

\u200b\u5176\u4e2d\u200b\u7684\u200b C \u200b\u662f\u200b\u4e00\u4e2a\u200b\u6211\u4eec\u200b\u624b\u52a8\u200b\u8bbe\u7f6e\u200b\u7684\u200b\u60e9\u7f5a\u200b\u53c2\u6570\u200b

\u200b\u6211\u4eec\u200b\u7684\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u968f\u4e4b\u200b\u53d8\u6210\u200b\uff1a

\\[\\begin{aligned} \\underset {\\alpha}{\\operatorname{max}} & \\quad L(\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_j(x_i\\cdot x_j) \\\\ s.t. & \\quad \\sum_{i=1}^{N}\\alpha_i y_i = 0 \\\\ & \\quad 0 \\leq \\alpha_i \\leq C\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

\u200b\u5176\u4e2d\u200b\u7531\u4e8e\u200b\u677e\u5f1b\u200b\u6761\u4ef6\u200b\uff0c\u200b\u6211\u4eec\u200b\u6781\u5c0f\u200b\u5316\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u65b0\u589e\u200b\u4e86\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u7ea6\u675f\u200b\uff1a

\\[\\begin{aligned} \\nabla_{\\xi_i} L(w\uff0cb\uff0c\\alpha\uff0c\\xi) = C - \\alpha_i - \\mu_i = 0 \\quad i = 1\uff0c2\uff0c...\uff0cN \\\\ \\mu_i \\geq 0 \\quad i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

\u200b\u8fd9\u200b\u4e5f\u200b\u662f\u200b\u4e0a\u8ff0\u200b\u6761\u4ef6\u200b\u4e2d\u200b\u51fa\u73b0\u200b\\(\\alpha_i \\leq C\\)\u200b\u7684\u200b\u539f\u56e0\u200b

\u200b\u540c\u6837\u200b\u6c42\u89e3\u200b\u6700\u4f18\u200b\u89e3\u200b\\(\\alpha^*\\)\uff0c\u200b\u7136\u540e\u200b\u5e26\u56de\u200b\u539f\u200b\u5f0f\u200b\uff0c\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u89e3\u200b\\(w^*\uff0cb^*\uff0c\\xi^*\\)\uff0c\u200b\u6784\u6210\u200b\u6700\u4f18\u200b\u5206\u79bb\u200b\u8d85\u5e73\u9762\u200b

\u200b\u90a3\u4e9b\u200b\u88ab\u200b\u677e\u5f1b\u200b\u7684\u200b\u70b9\u200b\u7684\u200b\u4f4d\u7f6e\u200b\u548c\u200b\\(\\xi\\)\u200b\u7684\u200b\u7684\u200b\u5173\u7cfb\u200b\u4e3a\u200b\uff1a

"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_11","title":"\u6838\u200b\u51fd\u6570","text":"

\u200b\u6211\u4eec\u200b\u60f3\u8981\u200b\u628a\u200b\u70b9\u200b\\(x\uff0c z \\in \\mathbb{R}^n\\)\u200b\u6620\u5c04\u200b\u5230\u200b\u4e00\u4e2a\u200b\u66f4\u200b\u9ad8\u7ef4\u200b\u7684\u200b\u7a7a\u95f4\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b(\\(\\phi(x)\\)\u200b\u88ab\u200b\u6620\u5c04\u200b\u5230\u200b\u66f4\u200b\u9ad8\u7ef4\u200b\uff09\uff0c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u6620\u5c04\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u4fdd\u8bc1\u200b\u9ad8\u200b\u7ef4\u7a7a\u95f4\u200b\u4e2d\u200b\u4e8c\u8005\u200b\u7684\u200b\u70b9\u79ef\u200b\u662f\u200b\u539f\u200b\u7a7a\u95f4\u200b\u4e2d\u70b9\u79ef\u200b\u7684\u200b\u51fd\u6570\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b

\\[ K(x\uff0cz) = \\phi(x)\\cdot \\phi(z) \\]

\u200b\u4e00\u822c\u800c\u8a00\u200b\uff0c\u200b\u7ed9\u5b9a\u200b\u8fd9\u4e2a\u200b\u628a\u200b\u539f\u200b\u5185\u79ef\u200b\u6620\u5c04\u200b\u5230\u200b\u9ad8\u7ef4\u200b\u5185\u79ef\u200b\u7684\u200b K \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e86\u200b\uff0c\u200b\u4e0d\u7528\u200b\u5177\u4f53\u200b\u7ed9\u51fa\u200b\u628a\u200b\u5411\u91cf\u200b\u6620\u5c04\u200b\u5230\u200b\u9ad8\u4f4d\u200b\u5411\u91cf\u200b\u7684\u200b\\(\\phi()\\)

\u200b\u5728\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u6ce8\u610f\u200b\u5230\u200b\\(x_i\\)\u200b\u4e4b\u95f4\u200b\u53ea\u6709\u200b\u5185\u79ef\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u5c31\u200b\u76f4\u63a5\u200b\u7528\u200b\u6620\u5c04\u200b\u540e\u200b\u7684\u200b\u9ad8\u4f4d\u200b\u5185\u79ef\u200b\u8fdb\u884c\u200b\u66ff\u6362\u200b

\\[ \\underset {\\alpha}{\\operatorname{max}} \\quad L(\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_jK(x_i\uff0cx_j) \\\\ \\]

\u200b\u5e38\u7528\u200b\u6838\u200b\u51fd\u6570\u200b

\u200b\u591a\u9879\u5f0f\u200b\u6838\u200b\u51fd\u6570\u200b

\\[ K(x\uff0cz) = (x\\cdot z + 1)^p \\]

\u200b\u9ad8\u65af\u200b\u6838\u200b\u51fd\u6570\u200b(KBF)

\\[ K(x\uff0cz) = \\exp(-\\frac{||x-z||^2}{2\\sigma^2}) \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#smo","title":"SMO \u200b\u7b97\u6cd5","text":"

\u200b\u6700\u540e\u200b\u6211\u4eec\u200b\u7ed9\u51fa\u200b SMO \u200b\u7b97\u6cd5\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u79cd\u200b\u5177\u4f53\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u7684\u200b\\(\\alpha^*\\)\u200b\u7684\u200b\u6570\u503c\u200b\u65b9\u6cd5\u200b.

\u200b\u8f93\u5165\u200b\uff1a\u200b\u6570\u636e\u200b\u96c6\u200b\\(D = \\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u6838\u200b\u51fd\u6570\u200b\\(K(x\uff0cz)\\)\uff0c\u200b\u5bb9\u5fcd\u5ea6\u200b\\(\\epsilon\\)

  • \u200b\u521d\u59cb\u5316\u200b\\(\\alpha = 0\\)\uff0ck = 0
  • \u200b\u53d6\u200b\u4f18\u5316\u200b\u53d8\u91cf\u200b\\(\\alpha_1\uff0c\\alpha_2\\)\uff0c\u200b\u89e3\u6790\u200b\u6c42\u89e3\u200b\u6700\u4f18\u5316\u200b\u95ee\u9898\u200b\uff0c\u200b\u66f4\u65b0\u200b\\(\\alpha_1\uff0c\\alpha_2\\)
  • \u200b\u82e5\u200b\u5728\u200b\u5bb9\u5fcd\u5ea6\u200b\\(\\epsilon\\)\u200b\u5185\u200b\u6ee1\u8db3\u200b\uff1a

    \\[\\begin{aligned} & \\sum_{i=1}^{N}\\alpha_i y_i = 0 \\\\ & 0 \\leq \\alpha_i \\leq C\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ & y_i(g(x_i)) = \\left\\{ \\begin{aligned} & \\geq 1\uff0c \\alpha_i = 0 \\\\ & = 1\uff0c 0 < \\alpha_i < C \\\\ & \\leq 1\uff0c \\alpha_i = C \\\\ \\end{aligned} \\right. \\end{aligned}\\]

    \u200b\u5219\u200b\u4ee4\u200b\\(\\alpha = (\\alpha_1\uff0c\\alpha_2\uff0c...\uff0c\\alpha_N)\\)\uff0c\u200b\u9000\u51fa\u200b\u5faa\u73af\u200b

"},{"location":"Note/Missing%20Semester/","title":"Missing Smester","text":"

\u200b\u7ea6\u200b 127 \u200b\u4e2a\u200b\u5b57\u200b

Abstract

Missing Semester \u200b\u662f\u200b\u6765\u81ea\u200b MIT \u200b\u7684\u200b\u4e00\u95e8\u200b\u8ba1\u7b97\u673a\u200b\u5165\u200b\u4e48\u200b\u8bfe\u7a0b\u200b\uff0c\u200b\u8fd9\u95e8\u200b\u8bfe\u7a0b\u200b\u4e0d\u200b\u4ecb\u7ecd\u200b\u5177\u4f53\u200b\u7684\u200b\u8bed\u8a00\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u800c\u662f\u200b\u4ecb\u7ecd\u200b\u4e00\u4e9b\u200b\u53ef\u4ee5\u200b\u63d0\u9ad8\u6548\u7387\u200b\u7684\u200b\u5de5\u5177\u200b\u7684\u200b\u4f7f\u7528\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u666e\u53ca\u200b\u8ba1\u7b97\u673a\u200b\u5e38\u8bc6\u200b

Warning

\u200b\u539f\u200b\u8bfe\u7a0b\u200b\u5f88\u200b\u4f18\u79c0\u200b\uff0c\u200b\u5982\u679c\u200b\u60a8\u200b\u6709\u7a7a\u200b\u7684\u8bdd\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u524d\u5f80\u200b\u3010\u200b\u8bfe\u7a0b\u200b\u7f51\u7ad9\u200b\u3011()\u200b\u8fdb\u884c\u200b\u5b66\u4e60\u200b.\u200b\u8fd9\u91cc\u200b\u5b58\u200b\u7684\u200b\u662f\u200b\u6211\u200b\u7684\u200b\u7b14\u8bb0\u200b\uff0c\u200b\u5b83\u4eec\u200b\u662f\u200b\u4e3a\u4e86\u200b\u5728\u200b\u9700\u8981\u200b\u7684\u200b\u65f6\u5019\u200b\u80fd\u591f\u200b\u65b9\u4fbf\u200b\u7684\u200b\u88ab\u200b\u67e5\u627e\u200b\u800c\u200b\u64b0\u5199\u200b\u7684\u200b\uff0c\u200b\u8bf7\u52ff\u200b\u76f4\u63a5\u200b\u5b66\u4e60\u200b

"},{"location":"Note/Missing%20Semester/Data/","title":"Data wrangling","text":"

\u200b\u7ea6\u200b 911 \u200b\u4e2a\u200b\u5b57\u200b 2 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

\u200b\u672c\u200b\u8282\u200b\u5217\u4e3e\u200b\u4e00\u4e9b\u200b\u547d\u4ee4\u884c\u200b\u5e38\u7528\u200b\u7684\u200b\u6570\u636e\u5904\u7406\u200b\u5de5\u5177\u200b

"},{"location":"Note/Missing%20Semester/Data/#sed","title":"Sed","text":"

Sed \u200b\u662f\u200b Stream editor \u200b\u6d41\u200b\u7f16\u8f91\u5668\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u63a5\u53d7\u200b\u7ba1\u9053\u200b\u8f93\u5165\u200b\uff0c\u200b\u5bf9\u200b\u6bcf\u200b\u4e00\u884c\u200b\u8fdb\u884c\u200b\u5904\u7406\u200b\uff0c\u200b\u7136\u540e\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b.

sed [OPTION] 'edit-command' [input-file]`\n

\u200b\u9009\u9879\u200b\u662f\u200b\u4e00\u4e9b\u200b\u7528\u4e8e\u200b\u63a7\u5236\u200b sed \u200b\u547d\u4ee4\u200b\u884c\u4e3a\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u5e38\u89c1\u200b\u7684\u200b\u6709\u200b\uff1a

  • -n \u200b\u4e0d\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b
  • -e \u200b\u4ee5\u540e\u200b\u7684\u200b\u53c2\u6570\u200b\u4f5c\u4e3a\u200b\u811a\u672c\u200b
  • -f \u200b\u4ee5\u540e\u200b\u7684\u200b\u53c2\u6570\u200b\u4f5c\u4e3a\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b
  • -i \u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b\u6587\u4ef6\u200b
  • -r \u200b\u4f7f\u7528\u200b\u6269\u5c55\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b
  • -E \u200b\u540c\u200b\u4e0a\u200b
  • -r \u200b\u4f7f\u7528\u200b\u57fa\u7840\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b
  • -h \u200b\u4e0d\u200b\u6253\u5370\u6587\u4ef6\u200b\u540d\u200b

sed\u200b\u7684\u200b\u7f16\u8f91\u200b\u547d\u4ee4\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u6765\u200b\u6307\u5b9a\u200b\u5339\u914d\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u5e76\u200b\u901a\u8fc7\u200b\u66ff\u6362\u200b\u3001\u200b\u5220\u9664\u200b\u3001\u200b\u63d2\u5165\u200b\u7b49\u200b\u547d\u4ee4\u200b\u6765\u200b\u4fee\u6539\u200b\u6587\u672c\u200b.\u200b\u4e00\u4e9b\u200b\u5e38\u89c1\u200b\u7684\u200b sed \u200b\u7f16\u8f91\u200b\u547d\u4ee4\u200b\u5305\u62ec\u200b\uff1a

  • s/pattern/replacement/\uff1a\u200b\u66ff\u6362\u200b\u6307\u5b9a\u200b\u6a21\u5f0f\u200b\u7684\u200b\u6587\u672c\u200b.
  • d\uff1a\u200b\u5220\u9664\u200b\u5339\u914d\u200b\u5230\u200b\u7684\u200b\u884c\u200b.
  • p\uff1a\u200b\u6253\u5370\u200b\uff08\u200b\u8f93\u51fa\u200b\uff09\u200b\u5339\u914d\u200b\u5230\u200b\u7684\u200b\u884c\u200b.
  • i\uff1a\u200b\u5728\u200b\u6307\u5b9a\u200b\u884c\u524d\u200b\u63d2\u5165\u200b\u6587\u672c\u200b.
  • a\uff1a\u200b\u5728\u200b\u6307\u5b9a\u200b\u884c\u540e\u200b\u8ffd\u52a0\u200b\u6587\u672c\u200b.
\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b
  • \u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u53ef\u4ee5\u200b\u5b9e\u73b0\u200b\u5b57\u7b26\u4e32\u200b\u5339\u914d\u200b\uff0c\u200b\u5927\u90e8\u5206\u200b\u5b57\u7b26\u200b\u90fd\u200b\u4fdd\u6301\u200b\u613f\u610f\u200b\u9664\u4e86\u200b\u4e00\u4e9b\u200b\u7279\u6b8a\u200b\u7684\u200b
  • . \u200b\u4ee3\u8868\u200b\u9664\u4e86\u200b\u6362\u884c\u200b\u4efb\u4f55\u200b\u7684\u200b\u5355\u200b\u5b57\u7b26\u200b
  • * \u200b\u524d\u200b\u4e00\u4e2a\u200b\u91cd\u590d\u200b 0-\u200b\u65e0\u9650\u200b\u6b21\u200b
  • + \u200b\u524d\u200b\u4e00\u4e2a\u200b\u91cd\u590d\u200b 1-\u200b\u65e0\u9650\u200b\u6b21\u200b
  • [abc] abc \u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b
  • (RX1|RX2) \u200b\u8868\u8fbe\u5f0f\u200b\u4e00\u200b\u6216\u8005\u200b\u4e8c\u200b
  • ^ \u200b\u884c\u9996\u200b
  • $ \u200b\u884c\u5c3e\u200b
  • () \u200b\u6355\u83b7\u200b\uff0c\u200b\u4f4d\u4e8e\u200b\u8865\u8d27\u200b\u5185\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b\u53ef\u200b\u5728\u200b\u88ab\u200b\u66ff\u4ee3\u200b\u90e8\u5206\u200b\u7528\u200b\u30011 \\2 \\3 \u200b\u5f15\u7528\u200b
"},{"location":"Note/Missing%20Semester/Data/#awk","title":"Awk","text":"

awk \u200b\u662f\u200b\u4e00\u79cd\u200b\u5f3a\u5927\u200b\u7684\u200b\u6587\u672c\u5904\u7406\u200b\u5de5\u5177\u200b\uff0c\u200b\u7528\u4e8e\u200b\u4ece\u200b\u7ed3\u6784\u5316\u200b\u6587\u672c\u200b\u6570\u636e\u200b\u4e2d\u200b\u63d0\u53d6\u200b\u548c\u200b\u64cd\u4f5c\u200b\u4fe1\u606f\u200b.\u200b\u5b83\u200b\u53ef\u4ee5\u200b\u9010\u884c\u200b\u8bfb\u53d6\u200b\u8f93\u5165\u200b\u6587\u4ef6\u200b\u6216\u200b\u6807\u51c6\u200b\u8f93\u5165\u200b\u7684\u200b\u6587\u672c\u200b\uff0c\u200b\u6839\u636e\u200b\u6307\u5b9a\u200b\u7684\u200b\u6a21\u5f0f\u200b\u548c\u200b\u52a8\u4f5c\u200b\u8fdb\u884c\u200b\u5339\u914d\u200b\u3001\u200b\u5904\u7406\u200b\u548c\u200b\u8f93\u51fa\u200b.

awk \u200b\u7684\u200b\u57fa\u672c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

awk 'pattern { action }' file\n

\u200b\u5176\u4e2d\u200b\uff0cpattern \u200b\u662f\u200b\u7528\u4e8e\u200b\u5339\u914d\u200b\u6587\u672c\u200b\u7684\u200b\u6a21\u5f0f\u200b\uff0caction \u200b\u662f\u200b\u5728\u200b\u5339\u914d\u200b\u5230\u200b\u7684\u200b\u6587\u672c\u200b\u4e0a\u200b\u6267\u884c\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0cfile \u200b\u662f\u200b\u5f85\u5904\u7406\u200b\u7684\u200b\u8f93\u5165\u200b\u6587\u4ef6\u200b.

awk \u200b\u7684\u200b\u5de5\u4f5c\u200b\u539f\u7406\u200b\u662f\u200b\u9010\u884c\u200b\u8bfb\u53d6\u200b\u8f93\u5165\u200b\u6587\u672c\u200b\uff0c\u200b\u5e76\u200b\u6839\u636e\u200b\u6307\u5b9a\u200b\u7684\u200b\u6a21\u5f0f\u200b\u8fdb\u884c\u200b\u5339\u914d\u200b.\u200b\u5f53\u200b\u67d0\u884c\u200b\u5339\u914d\u200b\u5230\u200b\u6307\u5b9a\u200b\u6a21\u5f0f\u200b\u65f6\u200b\uff0c\u200b\u6267\u884c\u200b\u76f8\u5e94\u200b\u7684\u200b\u52a8\u4f5c\u200b.\u200b\u52a8\u4f5c\u200b\u53ef\u4ee5\u200b\u662f\u200b\u6253\u5370\u200b\u884c\u200b\u3001\u200b\u8ba1\u7b97\u200b\u3001\u200b\u8d4b\u503c\u200b\u53d8\u91cf\u200b\u3001\u200b\u8fdb\u884c\u200b\u6761\u4ef6\u200b\u5224\u65ad\u200b\u7b49\u200b.

awk \u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e30\u5bcc\u200b\u7684\u200b\u5185\u7f6e\u200b\u529f\u80fd\u200b\u548c\u200b\u53d8\u91cf\u200b\uff0c\u200b\u4f7f\u200b\u5176\u200b\u80fd\u591f\u200b\u5bf9\u200b\u6587\u672c\u200b\u8fdb\u884c\u200b\u7075\u6d3b\u5904\u7406\u200b.\u200b\u4e00\u4e9b\u200b\u5e38\u7528\u200b\u7684\u200b awk \u200b\u529f\u80fd\u200b\u5305\u62ec\u200b\uff1a

  • \u200b\u5b57\u200b\u6bb5\u200b\u5206\u5272\u200b\uff1aawk \u200b\u9ed8\u8ba4\u200b\u5c06\u200b\u6bcf\u200b\u4e00\u884c\u200b\u4ee5\u200b\u7a7a\u683c\u200b\u6216\u200b\u5236\u8868\u7b26\u200b\u4e3a\u200b\u5206\u9694\u7b26\u200b\u5212\u5206\u200b\u4e3a\u200b\u591a\u4e2a\u200b\u5b57\u200b\u6bb5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b $n \u200b\u7684\u200b\u5f62\u5f0f\u200b\u5f15\u7528\u200b\u5b57\u200b\u6bb5\u200b\uff08\u200b\u4f8b\u5982\u200b $1\u3001$2\uff09.
  • \u200b\u6a21\u5f0f\u5339\u914d\u200b\uff1a\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u8fdb\u884c\u200b\u6a21\u5f0f\u5339\u914d\u200b\uff0c\u200b\u6307\u5b9a\u200b\u5339\u914d\u200b\u7684\u200b\u6587\u672c\u200b\u6a21\u5f0f\u200b.
  • \u200b\u5185\u7f6e\u200b\u53d8\u91cf\u200b\uff1aawk \u200b\u63d0\u4f9b\u200b\u4e86\u200b\u8bb8\u591a\u200b\u5185\u7f6e\u200b\u53d8\u91cf\u200b\uff0c\u200b\u5982\u200b NR\uff08\u200b\u5f53\u524d\u200b\u884c\u200b\u6570\u200b\uff09\u3001NF\uff08\u200b\u5f53\u524d\u200b\u884c\u200b\u7684\u200b\u5b57\u200b\u6bb5\u6570\u200b\uff09\u200b\u548c\u200b $0\uff08\u200b\u6574\u884c\u200b\u6587\u672c\u200b\uff09\u200b\u7b49\u200b.
  • \u200b\u5185\u7f6e\u200b\u51fd\u6570\u200b\uff1aawk \u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e30\u5bcc\u200b\u7684\u200b\u5185\u7f6e\u200b\u51fd\u6570\u200b\uff0c\u200b\u5982\u200b\u5b57\u7b26\u4e32\u200b\u5904\u7406\u51fd\u6570\u200b\u3001\u200b\u6570\u5b66\u200b\u51fd\u6570\u200b\u3001\u200b\u65e5\u671f\u200b\u51fd\u6570\u200b\u7b49\u200b.

\u200b\u4ee5\u4e0b\u200b\u662f\u200b\u4e00\u4e2a\u200b\u7b80\u5355\u200b\u7684\u200b\u793a\u4f8b\u200b\uff0c\u200b\u5c55\u793a\u200b\u4e86\u200b\u5982\u4f55\u200b\u4f7f\u7528\u200b awk \u200b\u63d0\u53d6\u200b\u6587\u4ef6\u200b\u4e2d\u4ee5\u200b\u5192\u53f7\u200b\u5206\u9694\u200b\u7684\u200b\u7b2c\u4e00\u5217\u200b\u548c\u200b\u7b2c\u4e8c\u5217\u200b\uff0c\u200b\u5e76\u200b\u8f93\u51fa\u200b\u5b83\u4eec\u200b\uff1a

awk -F':' '{ print $1\uff0c $2 }' file.txt\n

awk \u200b\u662f\u200b\u4e00\u79cd\u200b\u975e\u5e38\u200b\u5b9e\u7528\u200b\u7684\u200b\u6587\u672c\u5904\u7406\u200b\u5de5\u5177\u200b\uff0c\u200b\u9002\u7528\u200b\u4e8e\u200b\u5904\u7406\u200b\u7ed3\u6784\u5316\u200b\u7684\u200b\u6587\u672c\u200b\u6570\u636e\u200b\uff0c\u200b\u5982\u200b\u65e5\u5fd7\u200b\u6587\u4ef6\u200b\u3001CSV \u200b\u6587\u4ef6\u200b\u3001\u200b\u62a5\u544a\u200b\u7b49\u200b.\u200b\u5b83\u200b\u5177\u6709\u200b\u5f3a\u5927\u200b\u7684\u200b\u529f\u80fd\u200b\u548c\u200b\u7075\u6d3b\u6027\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5927\u5927\u7b80\u5316\u200b\u6587\u672c\u5904\u7406\u200b\u4efb\u52a1\u200b\uff0c\u200b\u63d0\u9ad8\u200b\u6570\u636e\u5206\u6790\u200b\u548c\u200b\u8f6c\u6362\u200b\u7684\u200b\u6548\u7387\u200b.

"},{"location":"Note/Missing%20Semester/Data/#aided-command-line-tools","title":"Aided Command line Tools","text":"

\u200b\u8f85\u52a9\u200b\u4f7f\u7528\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u5de5\u5177\u200b

  • grep: \u200b\u7b5b\u9009\u200b\u51fa\u200b\u542b\u6709\u200b\u5236\u5b9a\u200b\u5185\u5bb9\u200b\u7684\u200b\u884c\u200b
  • sort: \u200b\u6392\u5e8f\u200b
  • uniq: \u200b\u53bb\u200b\u91cd\u200b
  • tail: \u200b\u622a\u56fe\u200b\u5934\u90e8\u200b\u51e0\u6761\u200b
  • head: \u200b\u622a\u53d6\u200b\u5c3e\u90e8\u200b\u51e0\u6761\u200b
  • paste: \u200b\u901a\u8fc7\u200b\u6307\u5b9a\u200b\u7684\u200b\u95f4\u9694\u200b\u5b57\u7b26\u200b\u94fe\u200b\u8fde\u63a5\u200b\u4e24\u884c\u200b
  • bc: \u200b\u8ba1\u7b97\u5668\u200b
  • xargs: \u200b\u628a\u200b stdin \u200b\u8f6c\u6362\u200b\u4e3a\u200b\u53c2\u6570\u200b\u8c03\u7528\u200b\u540e\u7eed\u200b\u7a0b\u5e8f\u200b
"},{"location":"Note/Missing%20Semester/Git/","title":"Notes for Git","text":"

\u200b\u7ea6\u200b 897 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

\u200b\u4e00\u4e2a\u200b\u81ea\u200b\u5e95\u5411\u4e0a\u200b\u7684\u200b\u5b66\u4e60\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u6700\u540e\u200b\u9644\u4e0a\u200b\u4e86\u200b\u5e38\u7528\u200b\u6307\u4ee4\u200b\uff0c\u200b\u6682\u65e0\u200b\u64cd\u4f5c\u200b\u6f14\u793a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b\u539f\u200b\u8bfe\u7a0b\u200b\u7f51\u7ad9\u200b

"},{"location":"Note/Missing%20Semester/Git/#terminology","title":"Terminology","text":"

\u200b\u5b9a\u4e49\u200b

blob \u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u200b\u88ab\u79f0\u4f5c\u200bblob. tree \u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u5939\u200b\u88ab\u79f0\u4f5c\u200btree. commit \u200b\u6574\u4e2a\u200b\u4ed3\u5e93\u200b\u7684\u200b\u5feb\u7167\u200b\u88ab\u79f0\u4f5c\u200bcommit. history commit \u200b\u7684\u200b\u6709\u200b\u5411\u200b\u65e0\u200b\u73af\u56fe\u200b\u6784\u6210\u200bhistory. object \u200b\u4e00\u4e2a\u200bobject\u200b\u662f\u200b blob\u3001tree \u200b\u6216\u8005\u200b commit\uff0c\u200b\u6bcf\u4e2a\u200b\u5bf9\u8c61\u200b\u90fd\u200b\u6709\u200b\u81ea\u5df1\u200b\u5bf9\u5e94\u200b\u7684\u200b hash. reference \u200b\u4e00\u4e2a\u200breference\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5bf9\u8c61\u200b\u7684\u200b\u522b\u540d\u200b\uff0c\u200b\u9664\u4e86\u200b\u522b\u540d\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b hash \u200b\u6765\u200b\u5f15\u7528\u200b\u4e00\u4e2a\u200b\u5bf9\u8c61\u200b. main/master main/master \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b\u7684\u200b reference \u200b\u603b\u662f\u200b\u6307\u5411\u200b\u5f00\u53d1\u200b\u4e2d\u200b\u7684\u200b\u6700\u65b0\u200b\u7a33\u5b9a\u200b\u7248\u672c\u200b. HEAD HEAD \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b\u5f15\u7528\u200b\u6307\u5411\u200b\u6211\u4eec\u200b\u76ee\u524d\u200b\u5728\u200b\u5386\u53f2\u200b\u4e2d\u200b\u7684\u200b\u4f4d\u7f6e\u200b. Git repository \u200b\u4e00\u4e2a\u200b Git repository* \u200b\u662f\u200b object \u200b\u548c\u200b reference \u200b\u7684\u200b\u96c6\u5408\u200b. Staging area Staging area \u200b\u662f\u200b\u4e00\u79cd\u200b\u673a\u5236\u200b\u6765\u200b\u8ba9\u200b\u6211\u4eec\u200b\u6307\u5b9a\u200b\u54ea\u4e9b\u200b\u5bf9\u8c61\u200b\u8981\u200b\u88ab\u200b commit\uff0c \u200b\u800c\u200b\u975e\u200b\u6574\u4e2a\u200b\u4ed3\u5e93\u200b."},{"location":"Note/Missing%20Semester/Git/#git-data-model","title":"Git Data Model","text":"

\u200b\u9996\u5148\u200b\u5b9a\u4e49\u6570\u636e\u200b\u5bf9\u8c61\u200b

// a file is a bunch of bytes\ntype blob = array<byte>\n\n// a directory contains named files and directories\ntype tree = map<string\uff0c tree | blob>\n\n// a commit has parents\uff0c metadata\uff0c and the top-level tree\ntype commit = struct {\n    parents: array<commit>\n    author: string\n    message: string\n    snapshot: tree\n}\n\n//An object is a blob\uff0ctree\uff0cor commit\ntype object = blob | tree | commit\n

\u200b\u5728\u200b Git \u200b\u5b58\u50a8\u200b\u7ed3\u6784\u200b\u4e2d\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u5bf9\u8c61\u200b\u5bf9\u5e94\u200b\u4e00\u4e2a\u200b hash

objects = map<string\uff0c object>\n\ndef store(object):\n    id = sha1(object)\n    objects[id] = object\n\ndef load(id):\n    return objects[id]\n

"},{"location":"Note/Missing%20Semester/Git/#commands","title":"Commands","text":"

Basic

  • git help <command> : get help for a git command
  • git init : creates a new git repo\uff0c with data stored in the .git directory
  • git status : tells you what\u2019s going on
  • git add <filename> : adds files to staging area
  • git commit : creates a new commit
  • git log : shows a flattened log of history
  • git log --all --graph --decorate : visualizes history as a DAG
  • git diff <filename> : show the differences between current file and HEAD version file
  • git diff <revision> <filename> : shows differences between current file and specified snapshot
  • git diff <reversin> <reversion> <filename> shows the differences between two specified version of file
  • git checkout <revision> : updates HEAD and current branch
  • git checkout <filename> : erase all the changes we made after the HEAD version for this file
  • git cat-file -p <hash> : The instruction to catch a tree or blob

Branching and Merging

  • git branch: shows branches
  • git branch <name>: creates a branch
  • git checkout -b <name>: creates a branch and switches to it
  • same as git branch <name>; git checkout <name>
  • git merge <revision> : merges into current branch;wait for latter adjustments when conflictions occur(But the file has been changed already)
  • git merge --abort : erase the changes git try to make when an merge conflict occurs
  • git merge --continue : continue to merge after you fix the merge confliction
  • git mergetool: use a fancy tool to help resolve merge conflicts
  • git rebase: rebase set of patches onto a new base

More on rebase

Commonly used to \"move\" an entire branch to another base\uff0c creating copies of the commits in the new location.

  • Rebase the current branch on top of another specified branch: git rebase new_base_branch

  • Start an interactive rebase\uff0c which allows the commits to be reordered\uff0c omitted\uff0c combined or modified: git rebase -i target_base_branch_or_commit_hash

  • Continue a rebase that was interrupted by a merge failure\uff0c after editing conflicting files: git rebase --continue

  • Continue a rebase that was paused due to merge conflicts\uff0c by skipping the conflicted commit: git rebase --skip

  • Abort a rebase in progress (e.g. if it is interrupted by a merge conflict): git rebase --abort

  • Move part of the current branch onto a new base\uff0c providing the old base to start from: git rebase --onto new_base old_base

  • Reapply the last 5 commits in-place\uff0c stopping to allow them to be reordered\uff0c omitted\uff0c combined or modified: git rebase -i HEAD~5

  • Auto-resolve any conflicts by favoring the working branch version (theirs keyword has reversed meaning in this case): git rebase -X theirs branch_name

Remotes

  • git remote: list remotes
  • git remote add <name> <url>: add a remote ;name is origin by convention if we have only one remote; url can be a web address or a local directory
  • git push <remote> <local branch>:<remote branch>: send objects to remote\uff0c and update remote reference
  • git branch --set-upstream-to=<remote>/<remote branch>: set up correspondence between local and remote branch
  • git fetch: retrieve objects/references from a remote; be aware of the changes pushed here from the remote
  • git pull: same as git fetch; git merge
  • git clone: download repository from remote

Undo

  • git commit --amend: edit a commit\u2019s contents/message
  • git reset HEAD <file>: unstage a file
  • git checkout <file>: discard changes

Advanced Git

  • git config: Git is highly customizable
  • git clone --depth=1: shallow clone\uff0c without entire version history
  • git add -p: interactive staging
  • git rebase -i: interactive rebasing
  • git blame: show who last edited which line
  • git stash: temporarily remove modifications to working directory
  • git bisect: binary search history (e.g. for regressions)
  • .gitignore: specify intentionally untracked files to ignore
"},{"location":"Note/Missing%20Semester/Shell/","title":"Shell Notes (revisited)","text":"

\u200b\u7ea6\u200b 2838 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 9 \u200b\u5206\u949f\u200b

\u200b\u4e00\u4e2a\u200b\u79bb\u6563\u200b\u7684\u200b\u77e5\u8bc6\u200b\u5217\u8868\u200b

"},{"location":"Note/Missing%20Semester/Shell/#_1","title":"\u57fa\u7840\u77e5\u8bc6","text":""},{"location":"Note/Missing%20Semester/Shell/#_2","title":"\u5185\u7f6e\u200b\u53d8\u91cf\u200b/\u200b\u7279\u6b8a\u200b\u53d8\u91cf","text":"$0$1\uff0c $2\uff0c $3\uff0c ...$@$#$?$$$USER$HOME$PWD$HOSTNAME$RANDOM$IFS$PATH

\u200b\u5f53\u524d\u200b\u811a\u672c\u200b\u7684\u200b\u540d\u79f0\u200b.\u200b\u5bf9\u4e8e\u200b\u88ab\u200b\u6267\u884c\u200b\u7684\u200b\u811a\u672c\u200b\uff0c\u200b\u5b83\u200b\u662f\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b\u7684\u200b\u8def\u5f84\u200b\u548c\u200b\u540d\u79f0\u200b.

\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u53d8\u91cf\u200b\uff0c\u200b\u8868\u793a\u200b\u811a\u672c\u200b\u6216\u200b\u51fd\u6570\u200b\u7684\u200b\u53c2\u6570\u200b.\\(1 \u200b\u8868\u793a\u200b\u7b2c\u4e00\u4e2a\u200b\u53c2\u6570\u200b\uff0c\\)2 \u200b\u8868\u793a\u200b\u7b2c\u4e8c\u4e2a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4f9d\u6b64\u7c7b\u63a8\u200b.

\u200b\u8868\u793a\u200b\u6240\u6709\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u7684\u200b\u5217\u8868\u200b.\u200b\u5728\u200b\u811a\u672c\u200b\u4e2d\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\"$@\"\u200b\u5c06\u200b\u6240\u6709\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u53c2\u6570\u4f20\u9012\u200b\u7ed9\u200b\u5176\u4ed6\u200b\u547d\u4ee4\u200b\u6216\u200b\u51fd\u6570\u200b.

\u200b\u8868\u793a\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u7684\u200b\u6570\u91cf\u200b.

\u200b\u4e0a\u200b\u4e00\u4e2a\u200b\u547d\u4ee4\u200b\u7684\u200b\u9000\u51fa\u200b\u72b6\u6001\u200b.\u200b\u5982\u679c\u200b\u547d\u4ee4\u200b\u6210\u529f\u200b\u6267\u884c\u200b\uff0c\u200b\u5219\u200b\u5176\u503c\u200b\u4e3a\u200b 0\uff0c\u200b\u5426\u5219\u200b\u4e3a\u200b\u975e\u96f6\u503c\u200b.

\u200b\u5f53\u524d\u200b\u811a\u672c\u200b\u7684\u200b\u8fdb\u7a0b\u200b ID\uff08PID\uff09.

\u200b\u5f53\u524d\u200b\u7528\u6237\u200b\u7684\u200b\u7528\u6237\u540d\u200b.

\u200b\u5f53\u524d\u200b\u7528\u6237\u200b\u7684\u200b\u4e3b\u76ee\u5f55\u200b\u8def\u5f84\u200b.

\u200b\u5f53\u524d\u5de5\u4f5c\u200b\u76ee\u5f55\u200b\u7684\u200b\u8def\u5f84\u200b.

\u200b\u5f53\u524d\u200b\u4e3b\u673a\u200b\u7684\u200b\u4e3b\u673a\u540d\u200b.

\u200b\u4e00\u4e2a\u200b\u968f\u673a\u200b\u6574\u6570\u200b.

\u200b\u5185\u90e8\u200b\u5b57\u200b\u6bb5\u200b\u5206\u9694\u7b26\u200b\uff0c\u200b\u7528\u4e8e\u200b\u6307\u5b9a\u200b\u7531\u200b\u54ea\u4e2a\u200b\u5b57\u7b26\u200b\u5206\u5272\u200b\u8f93\u5165\u200b\u6570\u636e\u200b\u7684\u200b\u5b57\u200b\u6bb5\u200b.\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0c\u200b\u5b83\u200b\u5305\u542b\u200b\u7a7a\u683c\u200b\u3001\u200b\u5236\u8868\u7b26\u200b\u548c\u200b\u6362\u884c\u7b26\u200b.

\u200b\u4e00\u4e2a\u200b\u7531\u200b\u5192\u53f7\u200b\u5206\u9694\u200b\u7684\u200b\u76ee\u5f55\u200b\u5217\u8868\u200b\uff08\u200b\u73af\u5883\u53d8\u91cf\u200b\uff09\uff0cshell \u200b\u5728\u200b\u5176\u4e2d\u200b\u67e5\u627e\u200b\u547d\u4ee4\u200b.

"},{"location":"Note/Missing%20Semester/Shell/#_3","title":"\u91cd\u5b9a\u5411","text":">>><2>2>>&>\u200b\u6216\u200b&>>

\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u91cd\u5b9a\u5411\u200b\u5230\u200b\u6587\u4ef6\u200b.\u200b\u5982\u679c\u200b\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff0c\u200b\u5219\u200b\u4f1a\u200b\u521b\u5efa\u200b\u8be5\u200b\u6587\u4ef6\u200b\uff1b\u200b\u5982\u679c\u200b\u6587\u4ef6\u200b\u5df2\u200b\u5b58\u5728\u200b\uff0c\u200b\u5219\u200b\u4f1a\u200b\u8986\u76d6\u6587\u4ef6\u200b\u5185\u5bb9\u200b.

\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u8ffd\u52a0\u200b\u5230\u200b\u6587\u4ef6\u200b\u7684\u200b\u672b\u5c3e\u200b.\u200b\u5982\u679c\u200b\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff0c\u200b\u5219\u200b\u4f1a\u200b\u521b\u5efa\u200b\u8be5\u200b\u6587\u4ef6\u200b.

\u200b\u5c06\u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\u4f5c\u4e3a\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u5165\u200b.

\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u9519\u8bef\u200b\u8f93\u51fa\u200b\u91cd\u5b9a\u5411\u200b\u5230\u200b\u6587\u4ef6\u200b.

\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u9519\u8bef\u200b\u8f93\u51fa\u200b\u8ffd\u52a0\u200b\u5230\u200b\u6587\u4ef6\u200b\u7684\u200b\u672b\u5c3e\u200b.

\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u548c\u200b\u6807\u51c6\u200b\u9519\u8bef\u200b\u8f93\u51fa\u200b\u5408\u5e76\u200b\u91cd\u5b9a\u5411\u200b\u5230\u200b\u6587\u4ef6\u200b.

"},{"location":"Note/Missing%20Semester/Shell/#_4","title":"\u6587\u4ef6\u200b\u6743\u9650","text":"\u6587\u4ef6\u7c7b\u578b\u200b\u6743\u9650\u200b\u6743\u9650\u200b\u5b57\u7b26\u4e32\u200b\u6743\u9650\u200b\u6570\u5b57\u200b\u6743\u9650\u200b\u4fee\u6539\u200b

-\uff1a\u200b\u666e\u901a\u200b\u6587\u4ef6\u200b d\uff1a\u200b\u76ee\u5f55\u200b l\uff1a\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b\uff08\u200b\u8f6f\u200b\u94fe\u63a5\u200b\uff09 c\uff1a\u200b\u5b57\u7b26\u200b\u8bbe\u5907\u200b\u6587\u4ef6\u200b b\uff1a\u200b\u5757\u200b\u8bbe\u5907\u200b\u6587\u4ef6\u200b s\uff1a\u200b\u5957\u200b\u63a5\u5b57\u200b\uff08socket\uff09\u200b\u6587\u4ef6\u200b p\uff1a\u200b\u547d\u540d\u200b\u7ba1\u9053\u200b\uff08FIFO\uff09\u200b\u6587\u4ef6\u200b

r\uff1a\u200b\u8bfb\u53d6\u200b\u6743\u9650\u200b w\uff1a\u200b\u5199\u5165\u200b\u6743\u9650\u200b x\uff1a\u200b\u6267\u884c\u200b\u6743\u9650\u200b

\u200b\u7531\u200b 10 \u200b\u4e2a\u5b57\u7b26\u200b\u7ec4\u6210\u200b\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u6587\u4ef6\u7c7b\u578b\u200b\uff0c\u200b\u540e\u9762\u200b\u4e09\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u6587\u4ef6\u200b\u6240\u6709\u8005\u200b\u7684\u200b\u6743\u9650\u200b\uff0c\u200b\u518d\u200b\u540e\u9762\u200b\u4e09\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u6587\u4ef6\u200b\u6240\u5c5e\u200b\u7ec4\u200b\u7684\u200b\u6743\u9650\u200b\uff0c\u200b\u6700\u540e\u200b\u4e09\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u5176\u4ed6\u200b\u7528\u6237\u200b\u7684\u200b\u6743\u9650\u200b. \u200b\u4f8b\u5982\u200b\uff0c-rw-r--r--\u200b\u8868\u793a\u200b\u666e\u901a\u200b\u6587\u4ef6\u200b\uff0c\u200b\u6587\u4ef6\u200b\u6240\u6709\u8005\u200b\u5177\u6709\u200b\u8bfb\u53d6\u200b\u548c\u200b\u5199\u5165\u200b\u6743\u9650\u200b\uff0c\u200b\u6587\u4ef6\u200b\u6240\u5c5e\u200b\u7ec4\u548c\u200b\u5176\u4ed6\u200b\u7528\u6237\u200b\u5177\u6709\u200b\u8bfb\u53d6\u200b\u6743\u9650\u200b.

\u200b\u7531\u200b\u4e09\u4e2a\u200b\u516b\u8fdb\u5236\u200b\u6570\u5b57\u200b\u7ec4\u6210\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u6570\u5b57\u200b\u8868\u793a\u200b\u6587\u4ef6\u200b\u6240\u6709\u8005\u200b\u3001\u200b\u6587\u4ef6\u200b\u6240\u5c5e\u200b\u7ec4\u548c\u200b\u5176\u4ed6\u200b\u7528\u6237\u200b\u7684\u200b\u6743\u9650\u200b. \u200b\u6bcf\u4e2a\u200b\u6570\u5b57\u200b\u7684\u200b\u8ba1\u7b97\u65b9\u6cd5\u200b\u662f\u200b\u5c06\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4e09\u4e2a\u200b\u6743\u9650\u200b\u8f6c\u6362\u200b\u4e3a\u200b\u516b\u8fdb\u5236\u200b\u6570\u200b\u62fc\u63a5\u200b\u8d77\u6765\u200b. \u200b\u4f8b\u5982\u200b\uff0c-rw-r--r--\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6743\u9650\u200b\u6570\u5b57\u200b\u4e3a\u200b 644\uff0c-rwxr-xr-x \u200b\u5bf9\u5e94\u200b\u7684\u200b\u6743\u9650\u200b\u6570\u5b57\u200b\u4e3a\u200b 755.

chmod\uff1a\u200b\u7528\u4e8e\u200b\u66f4\u6539\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u7684\u200b\u6743\u9650\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u6570\u5b57\u200b\u8868\u793a\u6cd5\u200b\uff08\u200b\u5982\u200b chmod 755 file.txt\uff09\u200b\u6216\u200b\u7b26\u53f7\u200b\u8868\u793a\u6cd5\u200b\uff08\u200b\u5982\u200b chmod u+x file.txt\uff09\u200b\u6765\u200b\u4fee\u6539\u200b\u6743\u9650\u200b. chown\uff1a\u200b\u7528\u4e8e\u200b\u66f4\u6539\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u7684\u200b\u6240\u6709\u8005\u200b. chgrp\uff1a\u200b\u7528\u4e8e\u200b\u66f4\u6539\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u7684\u200b\u6240\u5c5e\u200b\u7ec4\u200b. umask\uff1a\u200b\u8bbe\u7f6e\u200b\u65b0\u521b\u5efa\u200b\u6587\u4ef6\u200b\u548c\u200b\u76ee\u5f55\u200b\u7684\u200b\u9ed8\u8ba4\u200b\u6743\u9650\u200b\u63a9\u7801\u200b.

"},{"location":"Note/Missing%20Semester/Shell/#_5","title":"\u6587\u4ef6\u200b\u64cd\u4f5c","text":"teetouchcatcpmvrmlnmkdirrmdirfindgrepalias

command | tee [OPTION]... [FILE]...\n
tee\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5e38\u7528\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u5de5\u5177\u200b\uff0c\u200b\u7528\u4e8e\u200b\u4ece\u200b\u6807\u51c6\u200b\u8f93\u5165\u200b\u8bfb\u53d6\u6570\u636e\u200b\u5e76\u200b\u5c06\u200b\u5176\u200b\u540c\u65f6\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u548c\u200b\u6307\u5b9a\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e2d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -a\uff1a\u200b\u4ee5\u200b\u8ffd\u52a0\u200b\u6a21\u5f0f\u200b\u5c06\u200b\u8f93\u51fa\u200b\u9644\u52a0\u200b\u5230\u200b\u6587\u4ef6\u200b\u4e2d\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u8986\u76d6\u6587\u4ef6\u200b\u5185\u5bb9\u200b. -i\uff1a\u200b\u5ffd\u7565\u200b\u4e2d\u65ad\u200b\u4fe1\u53f7\u200b\uff08SIGINT\uff09\uff0c\u200b\u5373\u4f7f\u200b\u6536\u5230\u200b\u4e2d\u65ad\u200b\u4fe1\u53f7\u200b\u4e5f\u200b\u7ee7\u7eed\u200b\u8fd0\u884c\u200b. -p\uff1a\u200b\u4f7f\u7528\u200b\u539f\u59cb\u6570\u636e\u200b\u5757\u200b\u5927\u5c0f\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u6309\u884c\u200b\u7f13\u51b2\u200b\u8f93\u51fa\u200b. -u\uff1a\u200b\u7981\u7528\u200b\u8f93\u51fa\u200b\u7f13\u51b2\u533a\u200b\uff0c\u200b\u7acb\u5373\u200b\u5c06\u200b\u6570\u636e\u200b\u5199\u5165\u200b\u6587\u4ef6\u200b.

touch [OPTION]... FILE...\n
\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u7a7a\u200b\u6587\u4ef6\u200b\uff0c\u200b\u6216\u8005\u200b\u66f4\u65b0\u200b\u5df2\u200b\u5b58\u5728\u200b\u6587\u4ef6\u200b\u7684\u200b\u6700\u540e\u200b\u66f4\u6539\u200b\u65f6\u95f4\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -a\uff1a\u200b\u4ec5\u200b\u66f4\u6539\u200b\u8bbf\u95ee\u200b\u65f6\u95f4\u200b. -c\uff1a\u200b\u4ec5\u200b\u5728\u200b\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\u65f6\u624d\u200b\u521b\u5efa\u200b\u6587\u4ef6\u200b. -d\uff1a\u200b\u4f7f\u7528\u200b\u6307\u5b9a\u200b\u7684\u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5f53\u524d\u200b\u65f6\u95f4\u200b. -m\uff1a\u200b\u4ec5\u200b\u66f4\u6539\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b. -r\uff1a\u200b\u4f7f\u7528\u200b\u6307\u5b9a\u200b\u6587\u4ef6\u200b\u7684\u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5f53\u524d\u200b\u65f6\u95f4\u200b. -t\uff1a\u200b\u4f7f\u7528\u200b\u6307\u5b9a\u200b\u7684\u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5f53\u524d\u200b\u65f6\u95f4\u200b.

cat [OPTION]... [FILE]...\n
\u200b\u5c06\u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -n\uff1a\u200b\u8f93\u51fa\u200b\u884c\u53f7\u200b. -b\uff1a\u200b\u8f93\u51fa\u200b\u884c\u53f7\u200b\uff0c\u200b\u4f46\u200b\u4e0d\u200b\u5bf9\u200b\u7a7a\u884c\u200b\u7f16\u53f7\u200b. -s\uff1a\u200b\u5c06\u200b\u8fde\u7eed\u200b\u7684\u200b\u7a7a\u884c\u200b\u538b\u7f29\u6210\u200b\u4e00\u4e2a\u200b\u7a7a\u884c\u200b.

cp [OPTION]... SOURCE... DIRECTORY\ncp [OPTION]... SOURCE... DEST\ncp [OPTION]... -t DIRECTORY SOURCE...\n
\u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u590d\u5236\u5230\u200b\u6307\u5b9a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e2d\u200b\uff0c\u200b\u6216\u8005\u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u590d\u5236\u5230\u200b\u6307\u5b9a\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e2d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -a\uff1a\u200b\u4fdd\u7559\u200b\u6587\u4ef6\u200b\u7684\u200b\u6240\u6709\u200b\u5c5e\u6027\u200b\uff0c\u200b\u9012\u5f52\u200b\u590d\u5236\u200b\u76ee\u5f55\u200b. -i\uff1a\u200b\u5728\u200b\u8986\u76d6\u6587\u4ef6\u200b\u4e4b\u524d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -r\uff1a\u200b\u9012\u5f52\u200b\u590d\u5236\u200b\u76ee\u5f55\u200b. -u\uff1a\u200b\u4ec5\u200b\u5728\u200b\u6e90\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u6bd4\u200b\u76ee\u6807\u200b\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u8f83\u65b0\u65f6\u200b\u624d\u200b\u590d\u5236\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u590d\u5236\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

mv [OPTION]... SOURCE... DIRECTORY\nmv [OPTION]... SOURCE... DEST\n
\u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u79fb\u52a8\u200b\u5230\u200b\u6307\u5b9a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e2d\u200b\uff0c\u200b\u6216\u8005\u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u91cd\u547d\u540d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -i\uff1a\u200b\u5728\u200b\u8986\u76d6\u6587\u4ef6\u200b\u4e4b\u524d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -u\uff1a\u200b\u4ec5\u200b\u5728\u200b\u6e90\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u6bd4\u200b\u76ee\u6807\u200b\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u8f83\u65b0\u65f6\u200b\u624d\u200b\u79fb\u52a8\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u79fb\u52a8\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

rm [OPTION]... FILE...\n
\u200b\u5220\u9664\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -f\uff1a\u200b\u5f3a\u5236\u200b\u5220\u9664\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -i\uff1a\u200b\u5728\u200b\u5220\u9664\u200b\u6587\u4ef6\u200b\u4e4b\u524d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -r\uff1a\u200b\u9012\u5f52\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u5220\u9664\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

ln [OPTION]... [-T] TARGET LINK_NAME\nln [OPTION]... TARGET\nln [OPTION]... TARGET... DIRECTORY\nln [OPTION]... -t DIRECTORY TARGET...\n
\u200b\u521b\u5efa\u200b\u786c\u200b\u94fe\u63a5\u200b\u6216\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -s\uff1a\u200b\u521b\u5efa\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u521b\u5efa\u200b\u94fe\u63a5\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

mkdir [OPTION]... DIRECTORY...\n
\u200b\u521b\u5efa\u200b\u76ee\u5f55\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -m\uff1a\u200b\u8bbe\u7f6e\u200b\u76ee\u5f55\u200b\u7684\u200b\u6743\u9650\u200b. -p\uff1a\u200b\u9012\u5f52\u200b\u521b\u5efa\u200b\u76ee\u5f55\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u521b\u5efa\u200b\u76ee\u5f55\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

rmdir [OPTION]... DIRECTORY...\n
\u200b\u5220\u9664\u200b\u7a7a\u76ee\u5f55\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -p\uff1a\u200b\u9012\u5f52\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

find [OPTION]... [PATH...] [EXPRESSION]\n
\u200b\u5728\u200b\u6307\u5b9a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e2d\u200b\u67e5\u627e\u6587\u4ef6\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -name\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u540d\u200b\u67e5\u627e\u200b. -type\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u7c7b\u578b\u200b\u67e5\u627e\u200b. -size\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u5927\u5c0f\u200b\u67e5\u627e\u200b. -perm\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u200b\u6743\u9650\u200b\u67e5\u627e\u200b. -exec\uff1a\u200b\u5bf9\u200b\u67e5\u627e\u200b\u5230\u200b\u7684\u200b\u6587\u4ef6\u200b\u6267\u884c\u200b\u6307\u5b9a\u200b\u7684\u200b\u547d\u4ee4\u200b.

grep [OPTION]... PATTERN [FILE]...\n
\u200b\u5728\u200b\u6587\u4ef6\u200b\u4e2d\u200b\u67e5\u627e\u200b\u5339\u914d\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -i\uff1a\u200b\u5ffd\u7565\u200b\u5927\u5c0f\u5199\u200b. -v\uff1a\u200b\u53cd\u5411\u200b\u5339\u914d\u200b. -n\uff1a\u200b\u8f93\u51fa\u200b\u884c\u53f7\u200b. -c\uff1a\u200b\u8f93\u51fa\u200b\u5339\u914d\u200b\u7684\u200b\u884c\u6570\u200b. -r\uff1a\u200b\u9012\u5f52\u200b\u67e5\u627e\u200b.

alias [OPTION]... [NAME[=VALUE]]...\n
\u200b\u521b\u5efa\u200b\u547d\u4ee4\u200b\u522b\u540d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -p\uff1a\u200b\u663e\u793a\u200b\u6240\u6709\u200b\u522b\u540d\u200b. -r\uff1a\u200b\u5220\u9664\u200b\u6307\u5b9a\u200b\u7684\u200b\u522b\u540d\u200b.

"},{"location":"Note/Missing%20Semester/Shell/#_6","title":"\u811a\u672c\u200b\u8bed\u6cd5","text":""},{"location":"Note/Missing%20Semester/Shell/#shebang","title":"SheBang","text":"

Bash \u200b\u811a\u672c\u200b\u901a\u5e38\u200b\u4ee5\u200b shebang \u200b\u4f5c\u4e3a\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b\u7684\u200b\u7b2c\u4e00\u884c\u200b\uff0c\u200b\u6307\u5b9a\u200b\u8981\u200b\u7528\u4e8e\u200b\u89e3\u91ca\u200b\u811a\u672c\u200b\u7684\u200b\u89e3\u91ca\u5668\u200b.\u200b\u5e38\u89c1\u200b\u7684\u200b shebang \u200b\u4e3a\u200b#!/bin/bash\uff0c\u200b\u8868\u793a\u200b\u4f7f\u7528\u200b Bash \u200b\u89e3\u91ca\u5668\u200b\u89e3\u91ca\u200b\u811a\u672c\u200b.

\u200b\u73af\u5883\u53d8\u91cf\u200b\u8def\u5f84\u200b

\u200b\u5982\u679c\u200b\u8981\u200b\u5728\u200b\u811a\u672c\u200b\u4e2d\u200b\u4f7f\u7528\u200b shebang\uff0c\u200b\u6700\u597d\u200b\u4f7f\u7528\u200b#!/usr/bin/env bash\uff0c\u200b\u8fd9\u6837\u200b\u53ef\u4ee5\u200b\u907f\u514d\u200b\u4f7f\u7528\u200b\u7edd\u5bf9\u8def\u5f84\u200b\uff0c\u200b\u800c\u662f\u200b\u4f7f\u7528\u200b\u73af\u5883\u53d8\u91cf\u200b\u4e2d\u200b\u7684\u200b\u8def\u5f84\u200b.

"},{"location":"Note/Missing%20Semester/Shell/#_7","title":"\u53d8\u91cf","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u53d8\u91cf\u200b\u4e0d\u200b\u9700\u8981\u200b\u58f0\u660e\u200b\uff0c\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\u5373\u53ef\u200b.\u200b\u53d8\u91cf\u540d\u200b\u548c\u200b\u7b49\u200b\u53f7\u200b\u4e4b\u95f4\u200b\u4e0d\u80fd\u200b\u6709\u200b\u7a7a\u683c\u200b\uff0c\u200b\u7b49\u200b\u53f7\u200b\u540e\u9762\u200b\u7684\u200b\u503c\u200b\u4e0d\u80fd\u200b\u4f7f\u7528\u200b\u7a7a\u683c\u200b\u5305\u56f4\u200b.\u200b\u53d8\u91cf\u540d\u200b\u4e00\u822c\u200b\u4f7f\u7528\u200b\u5927\u5199\u5b57\u6bcd\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e0d\u662f\u200b\u5fc5\u987b\u200b\u7684\u200b.

"},{"location":"Note/Missing%20Semester/Shell/#_8","title":"\u547d\u4ee4\u200b\u66ff\u6362","text":"

\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u7528\u4e8e\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b.\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u7684\u200b\u8bed\u6cd5\u200b\u6709\u200b\u4e24\u79cd\u200b\uff1a

  • `command`
  • $(command)
"},{"location":"Note/Missing%20Semester/Shell/#_9","title":"\u8fdb\u7a0b\u200b\u66ff\u6362","text":"

\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u7528\u4e8e\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u4f5c\u4e3a\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u547d\u4ee4\u200b\u7684\u200b\u53c2\u6570\u200b.\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u7684\u200b\u8bed\u6cd5\u200b\u4e3a\u200b<(command). \u200b\u53ef\u4ee5\u200b\u5c06\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u770b\u4f5c\u200b\u662f\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u7684\u200b\u7279\u6b8a\u200b\u5f62\u5f0f\u200b\uff0c\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b\uff0c\u200b\u800c\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u4f5c\u4e3a\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u547d\u4ee4\u200b\u7684\u200b\u53c2\u6570\u200b.

\u200b\u4f8b\u5982\u200b\uff1afiles=$(ls)

"},{"location":"Note/Missing%20Semester/Shell/#_10","title":"\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55","text":"

\u200b\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55\u200b\u7528\u4e8e\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b\u5b57\u7b26\u4e32\u200b\u5217\u8868\u200b.\u200b\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55\u200b\u7684\u200b\u8bed\u6cd5\u200b\u4e3a\u200b{string1\uff0cstring2\uff0c...}.

\u200b\u4f8b\u5982\u200b\uff1aecho {1..10}

\u200b\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b\u7b1b\u5361\u5c14\u200b\u79ef\u200b\u8fd0\u7b97\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u4e3a\u200b{string1\uff0cstring2\uff0c...}{string1\uff0cstring2\uff0c...}.

"},{"location":"Note/Missing%20Semester/Shell/#_11","title":"\u901a\u914d\u7b26","text":"

\u200b\u901a\u914d\u7b26\u200b\u7528\u4e8e\u200b\u5339\u914d\u200b\u6587\u4ef6\u540d\u200b.\u200b\u5e38\u89c1\u200b\u7684\u200b\u901a\u914d\u7b26\u200b\u5305\u62ec\u200b\uff1a

  • *\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u6570\u91cf\u200b\u7684\u200b\u4efb\u610f\u200b\u5b57\u7b26\u200b.
  • ?\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u7b26\u200b.
  • [characters]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c5e\u4e8e\u200b\u5b57\u7b26\u96c6\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
  • [!characters]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u5c5e\u4e8e\u200b\u5b57\u7b26\u96c6\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
  • [[:class:]]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u5b57\u7b26\u200b\u7c7b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
  • [^class]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u5b57\u7b26\u200b\u7c7b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
  • [x-y]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u8303\u56f4\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
  • [^x-y]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u8303\u56f4\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
  • [:alnum:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u6bcd\u200b\u6216\u200b\u6570\u5b57\u200b.
  • [:alpha:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u6bcd\u200b.
  • [:blank:]\uff1a\u200b\u5339\u914d\u200b\u7a7a\u683c\u200b\u6216\u200b\u5236\u8868\u7b26\u200b.
  • [:digit:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u6570\u5b57\u200b.
  • [:lower:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c0f\u5199\u5b57\u6bcd\u200b.
  • [:upper:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5927\u5199\u5b57\u6bcd\u200b.
  • [:space:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u7a7a\u767d\u200b\u5b57\u7b26\u200b.
  • [:punct:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u6807\u70b9\u7b26\u53f7\u200b.
  • [:word:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u6bcd\u200b\u3001\u200b\u6570\u5b57\u200b\u6216\u200b\u4e0b\u5212\u7ebf\u200b.
  • [:xdigit:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5341\u516d\u8fdb\u5236\u200b\u6570\u5b57\u200b.
  • [:graph:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u56fe\u5f62\u200b\u5b57\u7b26\u200b.
  • [:print:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u53ef\u200b\u6253\u5370\u200b\u5b57\u7b26\u200b.
  • [:cntrl:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u63a7\u5236\u5b57\u7b26\u200b.
  • [:ascii:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b ASCII \u200b\u5b57\u7b26\u200b.
"},{"location":"Note/Missing%20Semester/Shell/#_12","title":"\u7b97\u672f\u200b\u8fd0\u7b97","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u7b97\u672f\u200b\u8fd0\u7b97\u200b\u4f7f\u7528\u200b$((expression))\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho $((1+1))

"},{"location":"Note/Missing%20Semester/Shell/#_13","title":"\u903b\u8f91\u8fd0\u7b97","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u903b\u8f91\u8fd0\u7b97\u200b\u4f7f\u7528\u200b&&\u3001||\u200b\u548c\u200b!\uff0c\u200b\u4f8b\u5982\u200b\uff1a[ -d /tmp ] && echo \"Directory exists\"

"},{"location":"Note/Missing%20Semester/Shell/#_14","title":"\u6761\u4ef6\u200b\u5224\u65ad","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u6761\u4ef6\u200b\u5224\u65ad\u200b\u4f7f\u7528\u200bif\u200b\u8bed\u53e5\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

if [[ condition ]]; then\n    #statements\nelif [[ condition ]]; then\n    #statements\nelse\n    #statements\nfi\n
"},{"location":"Note/Missing%20Semester/Shell/#_15","title":"\u5faa\u73af","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u5faa\u73af\u200b\u4f7f\u7528\u200bfor\u200b\u548c\u200bwhile\u200b\u8bed\u53e5\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

for (( i = 0; i < 10; i++ )); do\n    #statements\ndone\n\nfor i in {1..10}; do\n    #statements\ndone\n\nfor i in $(ls); do\n    #statements\ndone\n\nwhile [[ condition ]]; do\n    #statements\ndone\n
"},{"location":"Note/Missing%20Semester/Shell/#_16","title":"\u51fd\u6570","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u51fd\u6570\u200b\u4f7f\u7528\u200bfunction\u200b\u8bed\u53e5\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

function name {\n    #statements\n}\n
"},{"location":"Note/Missing%20Semester/Shell/#_17","title":"\u6570\u7ec4","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u6570\u7ec4\u200b\u4f7f\u7528\u200barray=(element1 element2 element3)\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aarray=(1 2 3) \u200b\u6570\u7ec4\u200b\u5143\u7d20\u200b\u4f7f\u7528\u200barray[index]\u200b\u8bed\u6cd5\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${array[1]} \u200b\u6570\u7ec4\u200b\u957f\u5ea6\u200b\u4f7f\u7528\u200b${#array[@]}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${#array[@]} \u200b\u6570\u7ec4\u200b\u5143\u7d20\u200b\u4f7f\u7528\u200b${array[@]:index:length}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${array[@]:1:2}\uff0c\u200b\u8fd9\u4f1a\u200b\u83b7\u53d6\u200b\u6570\u7ec4\u200b\u4e2d\u200b\u4ece\u200b\u7b2c\u4e8c\u4e2a\u200b\u5143\u7d20\u200b\u5f00\u59cb\u200b\u7684\u200b\u4e24\u4e2a\u200b\u5143\u7d20\u200b \u200b\u6570\u7ec4\u200b\u5143\u7d20\u200b\u4f7f\u7528\u200b${array[@]/pattern/string}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${array[@]/2/4}\uff0c\u200b\u8fd9\u4f1a\u200b\u5c06\u200b\u6570\u7ec4\u200b\u4e2d\u200b\u7684\u200b\u6240\u6709\u200b 2 \u200b\u66ff\u6362\u200b\u4e3a\u200b 4

"},{"location":"Note/Missing%20Semester/Shell/#_18","title":"\u5b57\u7b26\u4e32","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b'string'\u200b\u6216\u8005\u200b\"string\"\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho 'Hello World!' \u200b\u5b57\u7b26\u4e32\u200b\u957f\u5ea6\u200b\u4f7f\u7528\u200b${#string}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${#string} \u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b${string:position:length}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${string:1:2} \u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b${string/substring/replacement}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${string/Hello/Hi}\uff0c\u200b\u8fd9\u4f1a\u200b\u5c06\u200b\u5b57\u7b26\u4e32\u200b\u4e2d\u200b\u7684\u200b\u7b2c\u4e00\u4e2a\u200b Hello \u200b\u66ff\u6362\u200b\u4e3a\u200b Hi

"},{"location":"Note/Missing%20Semester/Shell/#here","title":"Here \u200b\u6587\u6863","text":"

Here \u200b\u6587\u6863\u200b\u7528\u4e8e\u200b\u5c06\u200b\u591a\u884c\u200b\u6587\u672c\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b.

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b Here \u200b\u6587\u6863\u200b\u4f7f\u7528\u200b<<\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a

read -d '' string <<EOF\nHello\nWorld!\nEOF\necho \"$string\"\n
\u200b\u8fd9\u4f1a\u200b\u5c06\u200b Hello World!\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b string

"},{"location":"Note/Missing%20Semester/Shell/#here_1","title":"Here \u200b\u5b57\u7b26\u4e32","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b Here \u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b<<<\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1acat <<<\"Hello World!\"

"},{"location":"Note/Missing%20Semester/Shell/#here_2","title":"Here \u200b\u811a\u672c","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b Here \u200b\u811a\u672c\u200b\u4f7f\u7528\u200b<<-\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a

cat <<-EOF\n    Hello\n    World!\nEOF\n

"},{"location":"Note/Missing%20Semester/Shell/#_19","title":"\u8f93\u5165","text":"

Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u8f93\u5165\u200b\u4f7f\u7528\u200bread\u200b\u8bed\u53e5\u200b \u200b\u5176\u200b\u53c2\u6570\u200b\u5305\u62ec\u200b\uff1a - -p\uff1a\u200b\u63d0\u793a\u7b26\u200b - -n\uff1a\u200b\u8bfb\u53d6\u200b\u7684\u200b\u5b57\u7b26\u200b\u6570\u200b - -t\uff1a\u200b\u8d85\u65f6\u200b\u65f6\u95f4\u200b - -s\uff1a\u200b\u4e0d\u200b\u56de\u663e\u200b\u8f93\u5165\u200b\u7684\u200b\u5b57\u7b26\u200b - -a\uff1a\u200b\u5c06\u200b\u8f93\u5165\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u6570\u7ec4\u200b - -d\uff1a\u200b\u5206\u9694\u7b26\u200b - -r\uff1a\u200b\u4e0d\u200b\u5bf9\u200b\u53cd\u200b\u659c\u6760\u200b\u8fdb\u884c\u200b\u8f6c\u4e49\u200b - -e\uff1a\u200b\u4f7f\u7528\u200b Readline \u200b\u5e93\u200b - -i\uff1a\u200b\u9ed8\u8ba4\u503c\u200b - -u\uff1a\u200b\u8f93\u5165\u200b\u7684\u200b\u6587\u4ef6\u200b\u63cf\u8ff0\u7b26\u200b

\u200b\u4f8b\u5982\u200b\uff1a

read -p \"Enter your name: \" name\necho \"Hello $name\"\n

"},{"location":"Note/Missing%20Semester/Vim/","title":"Vim \uff08Revisited\uff09","text":"

\u200b\u7ea6\u200b 758 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

\u200b\u91cd\u5199\u200b\u8fd9\u7bc7\u200b\u7b14\u8bb0\u200b\u7684\u200b\u65f6\u5019\u200b\u6211\u200b\u5df2\u7ecf\u200b\u7528\u200b\u4e86\u200b\u4e00\u6bb5\u65f6\u95f4\u200b vim\uff0c\u200b\u7b14\u8bb0\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u8fc7\u4e8e\u200b\u7b80\u7565\u200b\uff0c\u200b\u8be6\u7ec6\u200b\u53ef\u200b\u53c2\u8003\u200b\u8bfe\u7a0b\u200b\u7f51\u7ad9\u200b

"},{"location":"Note/Missing%20Semester/Vim/#_1","title":"\u57fa\u7840","text":""},{"location":"Note/Missing%20Semester/Vim/#_2","title":"\u6a21\u5f0f","text":"

\u200b\u6211\u4eec\u200b\u5199\u200b\u4ee3\u7801\u200b\u4e8b\u200b\u5e76\u200b\u4e0d\u200b\u4e00\u76f4\u200b\u90fd\u200b\u662f\u200b\u8fde\u7eed\u200b\u7684\u200b\u8f93\u5165\u200b\uff0c\u200b\u6709\u65f6\u200b\u662f\u200b\u8df3\u8f6c\u200b\u5230\u200b\u67d0\u4e2a\u200b\u5730\u65b9\u200b\uff0c\u200b\u6709\u65f6\u200b\u662f\u200b\u505a\u200b\u4e9b\u5c0f\u200b\u4fee\u6539\u200b\u66ff\u6362\u200b\uff0c\u200b\u6709\u65f6\u200b\u662f\u200b\u9605\u8bfb\u200b\u4ee3\u7801\u200b\uff0c\u200b\u6216\u8005\u200b\u662f\u200b\u8fde\u7eed\u200b\u8f93\u5165\u200b. \u200b\u4e3a\u6b64\u200b\uff0cvim \u200b\u4f7f\u7528\u200b\u4e0d\u540c\u200b\u6a21\u5f0f\u200b\u6765\u200b\u4fbf\u5229\u200b\u5404\u4e2a\u200b\u4e0d\u540c\u200b\u76ee\u7684\u200b\u7684\u200b\u64cd\u4f5c\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u76f8\u540c\u200b\u7684\u200b\u952e\u200b\u5728\u200b\u4e0d\u540c\u200b\u6a21\u5f0f\u200b\u4e0b\u200b\u610f\u4e49\u200b\u4e0d\u540c\u200b.

vim \u200b\u4e2d\u200b\u6700\u200b\u5e38\u7528\u200b\u7684\u200b\u6a21\u5f0f\u200b\u6709\u200b

normalinsertreplacevisualcommand-line

\u200b\u9ed8\u8ba4\u200b\u521d\u59cb\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u4efb\u4f55\u200b\u6a21\u5f0f\u200b\u90fd\u200b\u53ef\u4ee5\u200b\u6309\u200b\u56de\u5230\u200b normal.\u200b\u9605\u8bfb\u200b\u6a21\u5f0f\u200b

i\u200b\u8fdb\u5165\u200b\uff0c\u200b\u8fdb\u884c\u200b\u8fde\u7eed\u200b\u7684\u200b\u8f93\u5165\u200b\uff0c\u200b\u53ea\u7528\u200b i \u200b\u53ef\u4ee5\u200b\u65e0\u7f1d\u200b\u9000\u5316\u200b\u56de\u200b\u539f\u5148\u200b\u4ec0\u4e48\u200b\u529f\u80fd\u200b\u90fd\u200b\u6ca1\u6709\u200b\u7684\u200b\u7f16\u8f91\u5668\u200b.\u200b\u8f93\u5165\u200b\u6a21\u5f0f\u200b

R\u200b\u8fdb\u5165\u200b\uff0c\u200b\u8fdb\u884c\u200b\u8fde\u7eed\u200b\u7684\u200b\u66ff\u6362\u200b.\u200b\u66ff\u6362\u200b\u6a21\u5f0f\u200b

v\u200b\u8fdb\u5165\u200b\uff0c\u200b\u8fdb\u884c\u200b\u9009\u62e9\u200b\uff0cV \u200b\u8fdb\u5165\u200b\u884c\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u6309\u884c\u200b\u9009\u62e9\u200b\uff0c C-v \u200b\u8fdb\u5165\u200b\u5757\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u6309\u200b\u4efb\u610f\u200b\u8fb9\u957f\u200b\u9009\u62e9\u200b\u957f\u65b9\u5f62\u200b.\u200b\u9009\u62e9\u200b\u6a21\u5f0f\u200b

:\u200b\u8fdb\u5165\u200b\uff0c\u200b\u5904\u7406\u200b\u547d\u4ee4\u884c\u200b\u64cd\u4f5c\u200b\uff08\u200b\u6700\u200b\u57fa\u672c\u200b\u7684\u200b\u6709\u200b :w \u200b\u4fdd\u5b58\u200b :q \u200b\u9000\u51fa\u200b :wq \u200b\u4fdd\u5b58\u200b\u9000\u51fa\u200b :q!\u200b\u5f3a\u5236\u200b\u9000\u51fa\u200b\uff09.\u200b\u547d\u4ee4\u884c\u200b\u6a21\u5f0f\u200b

"},{"location":"Note/Missing%20Semester/Vim/#_3","title":"\u7ed3\u6784","text":"

\u200b\u4e00\u4e2a\u200b Vim \u200b\u8fdb\u7a0b\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b\u6807\u7b7e\u200b\u9875\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u6807\u7b7e\u200b\u9875\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b\u7a97\u53e3\u200b\uff0c\u200b\u800c\u200b\u4e00\u4e2a\u200b\u7a97\u53e3\u200b\u50cf\u200b\u53ea\u200b\u773c\u775b\u200b\u770b\u200b\u5411\u200b\u4e00\u4e2a\u200b\u7279\u5b9a\u200b\u7684\u200b\u6587\u4ef6\u200b(Buffer)

"},{"location":"Note/Missing%20Semester/Vim/#_4","title":"\u64cd\u4f5c","text":"

Normal move

  • \u200b\u4e0a\u4e0b\u5de6\u53f3\u200b\uff1ahjkl
  • \u200b\u4ee5\u200b\u5355\u8bcd\u200b\u4e3a\u754c\u200b\uff1aw \uff08\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u5355\u8bcd\u200b\uff09\uff0c b \uff08\u200b\u5355\u8bcd\u200b\u5f00\u5934\u200b\uff09\uff0c e \uff08\u200b\u5355\u8bcd\u200b\u7ed3\u5c3e\u200b\uff09
  • \u200b\u4ee5\u200b\u884c\u4e3a\u200b\u754c\u200b\uff1a0 \uff08\u200b\u884c\u200b\u5f00\u5934\u200b\uff09\uff0c ^ \uff08\u200b\u884c\u200b\u9996\u4e2a\u200b\u975e\u200b\u7a7a\u5b57\u7b26\u200b\uff09\uff0c $ \uff08\u200b\u884c\u5c3e\u200b\uff09
  • \u200b\u4ee5\u5c4f\u200b\u4e3a\u754c\u200b\uff1aH \uff08\u200b\u5c4f\u5e55\u200b\u5f00\u5934\u200b\uff09\uff0c M \uff08\u200b\u5c4f\u5e55\u200b\u4e2d\u95f4\u200b\uff09\uff0c L \uff08\u200b\u5c4f\u5e55\u200b\u5e95\u90e8\u200b\uff09
  • \u200b\u6eda\u52a8\u200b\uff1aCtrl-u \uff08\u200b\u4e0a\u200b\uff09\uff0c Ctrl-d \uff08\u200b\u4e0b\u200b\uff09
  • \u200b\u4ee5\u200b\u6587\u4ef6\u200b\u4e3a\u754c\u200b\uff1agg \uff08\u200b\u6587\u4ef6\u200b\u5f00\u5934\u200b\uff09\uff0c G \uff08\u200b\u6587\u4ef6\u200b\u5c3e\u200b\uff09\uff0c G\uff08\u200b\u5bf9\u5e94\u200b\u884c\u200b\uff09
  • \u200b\u4ee5\u200b\u5de6\u53f3\u200b\u4e3a\u754c\u200b\uff1a% \uff08\u200b\u5bf9\u5e94\u200b\u7684\u200b\u53e6\u4e00\u534a\u200b\u62ec\u53f7\u200b\u6216\u8005\u200b\u7c7b\u4f3c\u200b\u7684\u200b\uff09
  • \u200b\u884c\u5185\u200b\u5bfb\u627e\u200b\uff1af{character}\uff0c t{character}\uff0c F{cracter}\uff0c T{character} \u200b\u5c0f\u5199\u200b\u5f80\u540e\u200b\u5927\u5199\u200b\u5f80\u524d\u200b
  • \u200b\u641c\u7d22\u200b\uff1a/{regex}\uff0c?{regex} \u200b\u5f80\u540e\u200b\u5f80\u524d\u200b\u641c\u7d22\u200b \uff0c\u200b\u6309\u200b n \u200b\u7ee7\u7eed\u200b\u641c\u4e0b\u200b\u4e00\u4e2a\u200b\uff0c\u200b\u6309\u200b N \u200b\u53cd\u5411\u200b\u7ee7\u7eed\u200b
  • Normal edit

    • o / O \uff1a\u200b\u5728\u200b\u4e0b\u200b/\u200b\u4e0a\u200b\u65b0\u5efa\u200b\u4e00\u884c\u200b\u5e76\u200b\u8fdb\u5165\u200b\u63d2\u5165\u200b\u6a21\u5f0f\u200b
    • d{motion} \uff1a\u200b\u6309\u7167\u200b motion \u200b\u5220\u9664\u200b\uff0cmotion \u200b\u89c1\u200b move \u200b\u90e8\u5206\u200b
    • c{motion} \uff1a\u200b\u6bd4\u200b d{motion}\u200b\u591a\u200b\u4e00\u6b65\u200b\u8fdb\u5165\u200b\u63d2\u5165\u200b\u6a21\u5f0f\u200b
    • x \uff1a \u200b\u5220\u9664\u200b\u5f53\u524d\u200b\u5149\u6807\u200b\u5b57\u7b26\u200b
    • s \uff1a \u200b\u4ee5\u200b\u4ee3\u66ff\u200b\u5f53\u200b\u5149\u6807\u200b\u5b57\u7b26\u200b
    • Visual mode + manipulation \uff1a \u200b\u8fd9\u4e9b\u200b\u64cd\u4f5c\u200b\u4e5f\u200b\u9002\u7528\u200b\u4e8e\u200b\u9009\u62e9\u200b\u6a21\u5f0f\u200b\u9009\u4e2d\u200b\u540e\u200b
    • u \u200b\u64a4\u56de\u200b\uff0c \u200b\u53d6\u6d88\u200b\u64a4\u56de\u200b
    • y \u200b\u590d\u5236\u200b
    • p \u200b\u7c98\u8d34\u200b
    • manipulation \uff1a \u200b\u91cd\u590d\u200b\u6b21\u200b\u64cd\u4f5c\u200b
    • i/a \uff1a inside/around \uff0c\u200b\u5728\u200b\u4ec0\u4e48\u200b\u4e4b\u5185\u200b/\u200b\u5468\u56f4\u200b\u64cd\u4f5c\u200b.\u200b\u4f8b\u5982\u200b\uff1adi( \u200b\u5728\u200b\uff08\uff09\u200b\u4e4b\u5185\u200b\u5220\u9664\u200b\uff1bda( \u200b\u5305\u62ec\u200b\uff08\uff09\u200b\u5220\u9664\u200b
    • Commandline mode

      • :w \u200b\u4fdd\u5b58\u200b
      • :q \u200b\u9000\u51fa\u200b
      • :wq \u200b\u4fdd\u5b58\u200b\u9000\u51fa\u200b
      • :q! \u200b\u5f3a\u5236\u200b\u9000\u51fa\u200b
      • :e \u200b\u6253\u5f00\u200b\u6587\u4ef6\u200b
      • :s// \u200b\u4e00\u884c\u200b\u7b2c\u4e00\u4e2a\u200b\u66ff\u6362\u200b
      • :s///g \u200b\u5168\u884c\u200b\u66ff\u6362\u200b
      • :s///gc \u200b\u5168\u884c\u200b\u66ff\u6362\u200b\u5e76\u200b\u8be2\u95ee\u200b
      • :%s///g \u200b\u5168\u200b\u6587\u4ef6\u200b\u66ff\u6362\u200b
      • :\uff0c s///g \u200b\u4ece\u200b\u7b2c\u884c\u200b\u5230\u200b\u7b2c\u884c\u200b\u66ff\u6362"},{"location":"Note/Missing%20Semester/Vim/#advanced-vim","title":"Advanced Vim","text":"
        • Vim \u200b\u662f\u200b\u9ad8\u5ea6\u200b\u53ef\u200b\u5b9a\u5236\u200b\u5316\u200b\u7684\u200b.\u200b\u53ea\u8981\u200b\u8981\u200b\u6539\u53d8\u200b\u7528\u6237\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5373\u53ef\u200b(~/.vimrc).\u200b\u4e5f\u200b\u53ef\u200b\u53c2\u8003\u200b\u6211\u200b\u975e\u5e38\u7b80\u5355\u200b\u7684\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b
        • Vim \u200b\u4e5f\u200b\u6709\u200b\u8bb8\u591a\u200b\u4f18\u8d28\u200b\u7684\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u6211\u200b\u51e0\u4e4e\u200b\u6ca1\u6709\u200b\u6dfb\u52a0\u200b\u4efb\u4f55\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u800c\u662f\u200b\u628a\u200b Vim \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u63d2\u4ef6\u200b\u5728\u200b VSCode \u200b\u4e0a\u200b\u4f7f\u7528\u200b
        "},{"location":"Note/Missing%20Semester/commandline_env/","title":"Commandline Enviroment","text":"

        \u200b\u7ea6\u200b 1800 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 6 \u200b\u5206\u949f\u200b

        \u200b\u8bb0\u5f55\u200b missing semester\u200b\u6b64\u5802\u200b\u8bfe\u200b\u7684\u200b\u4e00\u4e9b\u200b\u7b14\u8bb0\u200b

        "},{"location":"Note/Missing%20Semester/commandline_env/#job-control","title":"Job Control","text":"

        \u200b\u7ec8\u7aef\u200b\u7684\u200b\u4f5c\u4e1a\u63a7\u5236\u200b\uff08Job Control\uff09\u200b\u662f\u200b\u4e00\u79cd\u200b\u5728\u200b\u547d\u4ee4\u884c\u200b\u73af\u5883\u200b\u4e0b\u200b\u7ba1\u7406\u200b\u548c\u200b\u63a7\u5236\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u4f5c\u4e1a\u200b\uff08Job\uff09\u200b\u7684\u200b\u673a\u5236\u200b.\u200b\u5b83\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u547d\u4ee4\u200b\u548c\u200b\u6280\u672f\u200b\uff0c\u200b\u4f7f\u200b\u7528\u6237\u200b\u80fd\u591f\u200b\u5728\u200b\u7ec8\u7aef\u200b\u540c\u65f6\u200b\u8fd0\u884c\u200b\u591a\u4e2a\u200b\u547d\u4ee4\u200b\uff0c\u200b\u5e76\u200b\u5728\u200b\u9700\u8981\u200b\u65f6\u200b\u5bf9\u200b\u5176\u200b\u8fdb\u884c\u200b\u7ba1\u7406\u200b.

        \u200b\u4f5c\u4e1a\u200b

        \u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\uff08Foreground Job\uff09\u200b\u540e\u53f0\u4f5c\u4e1a\u200b\uff08Background Job\uff09\u200b\u4f5c\u4e1a\u72b6\u6001\u200b\u548c\u200b\u4fe1\u53f7\u200b

        \u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\u662f\u200b\u5f53\u524d\u200b\u6d3b\u52a8\u200b\u7684\u200b\u4f5c\u4e1a\u200b\uff0c\u200b\u5b83\u4f1a\u200b\u5728\u200b\u7ec8\u7aef\u200b\u663e\u793a\u200b\u5176\u200b\u8f93\u51fa\u200b\uff0c\u200b\u5e76\u200b\u5360\u7528\u200b\u7ec8\u7aef\u200b\u7684\u200b\u8f93\u5165\u200b.\u200b\u53ea\u6709\u200b\u5f53\u524d\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\u6216\u200b\u88ab\u200b\u6682\u505c\u200b\u65f6\u200b\uff0c\u200b\u624d\u80fd\u200b\u6267\u884c\u200b\u5176\u4ed6\u200b\u547d\u4ee4\u200b.

        \u200b\u540e\u53f0\u4f5c\u4e1a\u200b\u662f\u200b\u5728\u200b\u540e\u53f0\u200b\u8fd0\u884c\u200b\u7684\u200b\u4f5c\u4e1a\u200b\uff0c\u200b\u5b83\u200b\u4e0d\u4f1a\u200b\u5360\u7528\u200b\u7ec8\u7aef\u200b\u7684\u200b\u8f93\u5165\u200b\u548c\u200b\u8f93\u51fa\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u7279\u6b8a\u5b57\u7b26\u200b & \u200b\u5c06\u200b\u547d\u4ee4\u200b\u653e\u7f6e\u200b\u5728\u200b\u540e\u53f0\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4ece\u800c\u200b\u5141\u8bb8\u200b\u540c\u65f6\u200b\u8fd0\u884c\u200b\u591a\u4e2a\u200b\u547d\u4ee4\u200b.

        \u200b\u6bcf\u4e2a\u200b\u4f5c\u4e1a\u200b\u90fd\u200b\u5177\u6709\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u200b\uff0c\u200b\u5982\u200b\u8fd0\u884c\u200b\u4e2d\u200b\u3001\u200b\u505c\u6b62\u200b\u6216\u200b\u5b8c\u6210\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4fe1\u53f7\u200b\u6765\u200b\u63a7\u5236\u200b\u4f5c\u4e1a\u200b\u7684\u200b\u884c\u4e3a\u200b\uff0c\u200b\u5982\u200b Ctrl-C\uff08\u200b\u4e2d\u65ad\u200b\u4f5c\u4e1a\u200b\uff09\u200b\u548c\u200b Ctrl-D\uff08\u200b\u7ed3\u675f\u200b\u4f5c\u4e1a\u200b\u8f93\u5165\u200b\uff09.

        \u200b\u4f5c\u4e1a\u63a7\u5236\u200b\u547d\u4ee4\u200b

        jobsfgbgkillman signalCtrl-CCtrl-Z

        jobs \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5217\u51fa\u200b\u5f53\u524d\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u4f5c\u4e1a\u200b.\u200b\u6bcf\u4e2a\u200b\u4f5c\u4e1a\u200b\u90fd\u200b\u6709\u200b\u4e00\u4e2a\u200b\u552f\u4e00\u200b\u7684\u200b ID\uff0c\u200b\u524d\u9762\u200b\u5e26\u6709\u200b\u4e00\u4e2a\u200b + \u200b\u53f7\u200b\u7684\u200b\u4f5c\u4e1a\u200b\u662f\u200b\u5f53\u524d\u200b\u7684\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\uff0c\u200b\u524d\u9762\u200b\u5e26\u6709\u200b\u4e00\u4e2a\u200b - \u200b\u53f7\u200b\u7684\u200b\u4f5c\u4e1a\u200b\u662f\u200b\u5f53\u524d\u200b\u7684\u200b\u540e\u53f0\u4f5c\u4e1a\u200b.

        fg \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5c06\u200b\u540e\u53f0\u4f5c\u4e1a\u200b\u5207\u6362\u200b\u5230\u200b\u524d\u53f0\u200b\u8fd0\u884c\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4f5c\u4e1a\u200b ID \u200b\u6216\u200b\u4f5c\u4e1a\u200b PID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b % \u200b\u7b26\u53f7\u200b\u52a0\u4e0a\u200b\u4f5c\u4e1a\u200b ID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b.

        bg \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5c06\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\u5207\u6362\u200b\u5230\u200b\u540e\u53f0\u200b\u8fd0\u884c\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4f5c\u4e1a\u200b ID \u200b\u6216\u200b\u4f5c\u4e1a\u200b PID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b % \u200b\u7b26\u53f7\u200b\u52a0\u4e0a\u200b\u4f5c\u4e1a\u200b ID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b.

        kill \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5411\u200b\u4f5c\u4e1a\u200b\u53d1\u9001\u200b\u4fe1\u53f7\u200b.\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0ckill \u200b\u547d\u4ee4\u200b\u4f1a\u200b\u53d1\u9001\u200b SIGTERM \u200b\u4fe1\u53f7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b -SIGNAL \u200b\u9009\u9879\u200b\u6765\u200b\u6307\u5b9a\u200b\u4fe1\u53f7\u200b\u7c7b\u578b\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4f5c\u4e1a\u200b ID \u200b\u6216\u200b\u4f5c\u4e1a\u200b PID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b % \u200b\u7b26\u53f7\u200b\u52a0\u4e0a\u200b\u4f5c\u4e1a\u200b ID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b.

        man signal \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u67e5\u770b\u200b\u6240\u6709\u200b\u53ef\u4ee5\u200b\u53d1\u9001\u7ed9\u200b\u8fdb\u7a0b\u200b\u7684\u200b\u4fe1\u53f7\u200b.

        Ctrl-C \u200b\u5feb\u6377\u952e\u200b\u7528\u4e8e\u200b\u5411\u524d\u200b\u53f0\u200b\u4f5c\u4e1a\u200b\u53d1\u9001\u200b SIGINT \u200b\u4fe1\u53f7\u200b\uff0c\u200b\u901a\u5e38\u200b\u7528\u4e8e\u200b\u7ec8\u6b62\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b.

        Ctrl-Z \u200b\u5feb\u6377\u952e\u200b\u7528\u4e8e\u200b\u5411\u524d\u200b\u53f0\u200b\u4f5c\u4e1a\u200b\u53d1\u9001\u200b SIGTSTP \u200b\u4fe1\u53f7\u200b\uff0c\u200b\u901a\u5e38\u200b\u7528\u4e8e\u200b\u6682\u505c\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b.

        "},{"location":"Note/Missing%20Semester/commandline_env/#terminal-multiplexer","title":"Terminal Multiplexer","text":"

        \u200b\u9996\u5148\u200b\u7406\u89e3\u200b tmux \u200b\u7684\u200b\u81ea\u4e0a\u200b\u5411\u4e0b\u200b\u4e09\u4e2a\u200b\u4e0d\u540c\u200b\u5c42\u7ea7\u200b\uff1asession\uff0cwindow\uff0cpane

        sessionwindowpane

        session \u200b\u662f\u200b tmux \u200b\u7684\u200b\u6700\u9ad8\u200b\u5c42\u7ea7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u4e00\u4e2a\u200b tmux \u200b\u7684\u200b\u5b9e\u4f8b\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b session\uff0c\u200b\u6bcf\u4e2a\u200b session \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b window\uff0c\u200b\u6bcf\u4e2a\u200b window \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b pane\uff0c\u200b\u6bcf\u4e2a\u200b pane \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b tty

        window \u200b\u662f\u200b session \u200b\u7684\u200b\u7b2c\u4e8c\u5c42\u200b\u7ea7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u4e00\u4e2a\u200b\u7ec8\u7aef\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b window\uff0c\u200b\u6bcf\u4e2a\u200b window \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b pane\uff0c\u200b\u6bcf\u4e2a\u200b pane \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b tty

        pane \u200b\u662f\u200b window \u200b\u7684\u200b\u7b2c\u4e09\u5c42\u200b\u7ea7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u4e00\u4e2a\u200b\u5206\u5c4f\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b pane\uff0c\u200b\u6bcf\u4e2a\u200b pane \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b tty

        "},{"location":"Note/Missing%20Semester/commandline_env/#session","title":"\u65b0\u5efa\u200b\u4e00\u4e2a\u200b session","text":"tmuxtmux new -t NAMEtmux a NAMEtmux lsCtrl-b d

        \u200b\u76f4\u63a5\u200b\u8fdb\u5165\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b session

        \u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u540d\u4e3a\u200b NAME \u200b\u7684\u200b session

        \u200b\u91cd\u65b0\u200b\u8fde\u63a5\u200b\u5230\u200b\u540d\u4e3a\u200b NAME \u200b\u7684\u200b session

        \u200b\u5217\u51fa\u200b\u6240\u6709\u200b session

        detach \u200b\u5f53\u524d\u200b session

        "},{"location":"Note/Missing%20Semester/commandline_env/#session_1","title":"session \u200b\u4ee5\u5185\u200b\u7684\u200b\u64cd\u4f5c","text":"C-b cC-b n/p/NUMBERC-b \uff0cC-b &

        \u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b window

        \u200b\u5207\u6362\u200b\u5230\u200b\u4e0b\u200b\u4e00\u4e2a\u200b/\u200b\u4e0a\u200b\u4e00\u4e2a\u200b/\u200b\u7b2c\u200b x \u200b\u4e2a\u200b window

        \u200b\u91cd\u547d\u540d\u200b\u5f53\u524d\u200b window

        \u200b\u5173\u95ed\u200b\u5f53\u524d\u200b window

        "},{"location":"Note/Missing%20Semester/commandline_env/#window","title":"window \u200b\u4ee5\u5185\u200b\u7684\u200b\u64cd\u4f5c","text":"C-b \\\"C-b %C-b oC-b xC-b zC-b ARROWC-b SPACE

        \u200b\u4e0a\u4e0b\u200b\u5206\u88c2\u200b pane\uff0c\u200b\u8fd9\u4f1a\u200b\u662f\u200b\u65b0\u200b\u7684\u200b\u8fdb\u7a0b\u200b\u548c\u200b\u65b0\u200b\u7684\u200b tty

        \u200b\u5de6\u53f3\u200b\u5206\u88c2\u200b pane

        \u200b\u5207\u6362\u200b\u5230\u200b\u4e0b\u200b\u4e00\u4e2a\u200b pane

        \u200b\u5173\u95ed\u200b\u5f53\u524d\u200b pane

        \u200b\u653e\u5927\u200b\u7f29\u5c0f\u200b\u5f53\u524d\u200b pane

        \u200b\u5728\u200b pane \u200b\u4e4b\u95f4\u200b\u79fb\u52a8\u200b

        \u200b\u4e00\u952e\u200b\u5207\u6362\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u5e03\u5c40\u200b\u6a21\u5f0f\u200b

        "},{"location":"Note/Missing%20Semester/commandline_env/#dotfiles","title":"Dotfiles","text":"

        Dotfile \u200b\u662f\u200b\u4ee5\u70b9\u200b\uff08.\uff09\u200b\u5f00\u5934\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u5728\u200b Unix-like \u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u88ab\u200b\u5e7f\u6cdb\u200b\u4f7f\u7528\u200b.\u200b\u5b83\u4eec\u200b\u901a\u5e38\u200b\u4f4d\u4e8e\u200b\u7528\u6237\u200b\u7684\u200b\u4e3b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b58\u50a8\u200b\u4e2a\u4eba\u5316\u200b\u548c\u200b\u81ea\u5b9a\u4e49\u200b\u7684\u200b\u914d\u7f6e\u200b\u9009\u9879\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5176\u4ed6\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u548c\u200b\u5de5\u5177\u200b\u7684\u200b\u8bbe\u7f6e\u200b.

        Dotfile \u200b\u7684\u200b\u540d\u79f0\u200b\u4ee5\u200b\u4e00\u4e2a\u200b\u6216\u200b\u591a\u4e2a\u200b\u70b9\u200b\u5f00\u5934\u200b\uff0c\u200b\u4f8b\u5982\u200b .bashrc\u3001.vimrc\u3001.gitconfig \u200b\u7b49\u200b.\u200b\u7531\u4e8e\u200b\u5728\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0cUnix-like \u200b\u7cfb\u7edf\u200b\u4f1a\u200b\u5c06\u200b\u4ee5\u70b9\u200b\u5f00\u5934\u200b\u7684\u200b\u6587\u4ef6\u200b\u89c6\u4e3a\u200b\u9690\u85cf\u200b\u6587\u4ef6\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8fd9\u4e9b\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b\u6587\u4ef6\u200b\u7ba1\u7406\u5668\u200b\u4e2d\u200b\u9ed8\u8ba4\u200b\u662f\u200b\u4e0d\u200b\u53ef\u89c1\u200b\u7684\u200b.\u200b\u4f46\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u7279\u5b9a\u200b\u7684\u200b\u9009\u9879\u200b\u6216\u200b\u547d\u4ee4\u200b\u67e5\u770b\u200b\u548c\u200b\u7f16\u8f91\u200b\u5b83\u4eec\u200b.

        Dotfile \u200b\u7684\u200b\u7528\u9014\u200b\u56e0\u200b\u6587\u4ef6\u540d\u200b\u548c\u200b\u6240\u200b\u9488\u5bf9\u200b\u7684\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u800c\u5f02\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u662f\u200b\u4e00\u4e9b\u200b\u5e38\u89c1\u200b\u7684\u200b\u4f8b\u5b50\u200b\uff1a

        • .bashrc\uff1aBash Shell \u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b9a\u4e49\u200b Shell \u200b\u7684\u200b\u884c\u4e3a\u200b\u548c\u200b\u73af\u5883\u53d8\u91cf\u200b.
        • .vimrc\uff1aVim \u200b\u6587\u672c\u7f16\u8f91\u200b\u5668\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b9a\u4e49\u200b Vim \u200b\u7684\u200b\u7f16\u8f91\u5668\u200b\u8bbe\u7f6e\u200b\u548c\u200b\u63d2\u4ef6\u200b.
        • .gitconfig\uff1aGit \u200b\u7248\u672c\u200b\u63a7\u5236\u7cfb\u7edf\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u8bbe\u7f6e\u200b Git \u200b\u7684\u200b\u7528\u6237\u200b\u4fe1\u606f\u200b\u3001\u200b\u522b\u540d\u200b\u548c\u200b\u5176\u4ed6\u200b\u9009\u9879\u200b.
        • .ssh/config\uff1aSSH \u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u914d\u7f6e\u200b SSH \u200b\u8fde\u63a5\u200b\u7684\u200b\u4e3b\u673a\u200b\u548c\u200b\u9009\u9879\u200b.
        • .tmux.conf\uff1atmux \u200b\u7ec8\u7aef\u200b\u590d\u7528\u200b\u5de5\u5177\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b9a\u4e49\u200b tmux \u200b\u7684\u200b\u4f1a\u200b\u8bdd\u200b\u548c\u200b\u7a97\u683c\u200b\u8bbe\u7f6e\u200b.

        \u200b\u901a\u8fc7\u200b\u7f16\u8f91\u200b\u548c\u200b\u5b9a\u5236\u200b Dotfile\uff0c\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u6309\u7167\u200b\u4e2a\u4eba\u200b\u504f\u597d\u200b\u548c\u200b\u9700\u6c42\u200b\u6765\u200b\u914d\u7f6e\u200b\u5404\u79cd\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u548c\u200b\u5de5\u5177\u200b.\u200b\u5b83\u4eec\u200b\u5141\u8bb8\u200b\u7528\u6237\u200b\u4fee\u6539\u200b\u9ed8\u8ba4\u8bbe\u7f6e\u200b\u3001\u200b\u6dfb\u52a0\u200b\u5feb\u6377\u952e\u200b\u3001\u200b\u5b9a\u4e49\u200b\u522b\u540d\u200b\u3001\u200b\u8bbe\u7f6e\u200b\u73af\u5883\u53d8\u91cf\u200b\u7b49\u200b\uff0c\u200b\u4ee5\u200b\u63d0\u5347\u200b\u5de5\u4f5c\u6548\u7387\u200b\u548c\u200b\u4e2a\u4eba\u5316\u200b\u4f53\u9a8c\u200b.

        ~/.zshrc \u200b\u662f\u200b zsh \u200b\u7684\u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b zsh\uff0c\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b\u5176\u4e2d\u200b\u7684\u200b\u8bed\u53e5\u200b.\u200b\u6bd4\u5982\u200b\u4f60\u200b\u5728\u200b\u91cc\u9762\u200b\u5199\u200b\u4e0a\u200b\u4e00\u53e5\u200becho Hello\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b zsh \u200b\u7684\u200b\u65f6\u5019\u200b\u81ea\u52a8\u200b\u95ee\u5019\u200b\u4f60\u200b\u4e00\u53e5\u200b

        \u200b\u5728\u200b github \u200b\u4e0a\u200b\u53ef\u4ee5\u200b\u627e\u5230\u200b\u8bb8\u591a\u200b\u4eba\u200b\u5206\u4eab\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u4e5f\u200b\u8d34\u200b\u4e0a\u200b\u6211\u200b\u81ea\u5df1\u200b\u7684\u200b

        "},{"location":"Note/Missing%20Semester/commandline_env/#_1","title":"\u7b26\u53f7\u200b\u8fde\u63a5","text":"

        \u200b\u5f88\u591a\u200b\u65f6\u5019\u200b\u628a\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u653e\u5728\u200b\uff5e\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u5e76\u200b\u4e0d\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u4e5f\u200b\u4e0d\u597d\u200b\u6df7\u4e71\u200b\uff0c\u200b\u4e5f\u200b\u4e0d\u597d\u200b\u5efa\u7acb\u200b GitHub \u200b\u4ed3\u5e93\u200b\u8fdb\u884c\u200b\u7ba1\u7406\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u7684\u200b\u8bfb\u53d6\u200b\u4f4d\u7f6e\u200b\u5f80\u5f80\u200b\u662f\u200b\u5b9a\u200b\u6b7b\u200b\u7684\u200b\uff0c\u200b\u79fb\u52a8\u200b\u5230\u200b\u522b\u5904\u200b\u5c31\u200b\u5931\u6548\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5229\u200b\u7b26\u53f7\u200b\u8fde\u63a5\u200b\u6765\u200b\u6574\u7406\u200b\u4ed6\u4eec\u200b.

        ln -s TRUE_PATH VIRTUAL_PATH: \u200b\u8f6f\u200b\u8fde\u63a5\u200b\uff0cVIRTUAL_PATH \u200b\u4e0a\u200b\u5b9e\u9645\u4e0a\u200b\u4ec0\u4e48\u200b\u6587\u4ef6\u200b\u90fd\u200b\u6ca1\u6709\u200b\uff0c\u200b\u4f46\u200b\u6211\u4eec\u200b\u8bd5\u56fe\u200b\u8bfb\u5199\u200b\u8fd9\u4e2a\u200b\u6587\u4ef6\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u4f1a\u200b\u88ab\u200b\u5bfc\u5411\u200b TRUE_PATH \u200b\u4e0a\u200b\u90a3\u4e2a\u200b\u771f\u5b9e\u200b\u5b58\u5728\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5229\u7528\u200b\u8fd9\u4e2a\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7edf\u4e00\u200b\u8f6c\u79fb\u200b\u6211\u4eec\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e86\u200b.

        \u200b\u6ce8\u610f\u200b\u521b\u5efa\u200b\u7b26\u53f7\u200b\u8fde\u63a5\u200b\u65f6\u200b VIRTUAL_PATH \u200b\u4e0d\u80fd\u200b\u5b58\u5728\u200b

        \u200b\u82e5\u200b\u5220\u53bb\u200b TRUE_PATH\uff0c\u200b\u7b26\u53f7\u200b\u8fde\u63a5\u200b\u4ecd\u7136\u200b\u5b58\u5728\u200b\uff0c\u200b\u4f46\u200b\u5df2\u200b\u4e0d\u53ef\u200b\u8bbf\u95ee\u200b\uff08\u200b\u663e\u793a\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff09

        "},{"location":"Note/Missing%20Semester/commandline_env/#remote-machine","title":"Remote Machine","text":"

        \u200b\u8be6\u60c5\u200b\u53ef\u4ee5\u200b\u770b\u200b\u8fd9\u200b\u4e00\u7bc7\u200b\uff0c\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5177\u4f53\u200b\u7684\u200b ssh \u200b\u8fde\u63a5\u200b\u5b9e\u8df5\u200b.\u200b\u5728\u200b:ocitons-link-16:\u200b\u8fd9\u200b\u4e00\u7bc7\u200b\u4e2d\u6709\u200b\u5173\u4e8e\u200b docker \u200b\u7684\u200b\u8fdc\u7a0b\u200b\u8fde\u63a5\u200b\u7684\u200b\u5b9e\u8df5\u200b\uff0c\u200b\u66f4\u52a0\u200b\u8be6\u7ec6\u200b.

        \u200b\u5e38\u7528\u200b\u6307\u4ee4\u200b

        ssh USERNAME@IP_ADDRESSssh-keygenssh-copy-id USERNAME@IP_ADDRESSscp -p xxxx LOCAL_PATH USERNAME@IP_ADDRESS:REMOTE_PATHscp -p xxxx USERNAME:IP_ADDRESS LOCAL_PATH

        \u200b\u8fde\u63a5\u200b remote machine

        \u200b\u81ea\u52a8\u200b\u751f\u6210\u200b\u8ff7\u836f\u200b\uff0c\u200b\u6ce8\u610f\u200b keyphrase \u200b\u5e94\u8be5\u200b\u4e3a\u7a7a\u200b\uff08\u200b\u76f4\u63a5\u200b\u56de\u8f66\u200b\uff09

        \u200b\u590d\u5236\u200b\u516c\u94a5\u200b\u5230\u200b remote machine \u200b\u7684\u200b\u6307\u5b9a\u200b\u6587\u4ef6\u200b\u4e2d\u200b

        \u200b\u5c06\u200b\u672c\u5730\u200b\u6587\u4ef6\u200b\u590d\u5236\u5230\u200b remote machine

        \u200b\u5c06\u200b remote machine \u200b\u6587\u4ef6\u200b\u590d\u5236\u5230\u200b\u672c\u5730\u200b

        \uff5e/.ssh/config \u200b\u91cc\u9762\u200b\u53ef\u4ee5\u200b\u8bbe\u7f6e\u200b remote machine \u200b\u522b\u540d\u200b \u200b\u9ed8\u8ba4\u200b\u7aef\u53e3\u200b \u200b\u9ed8\u8ba4\u200b ip \u200b\u5730\u5740\u200b\u7b49\u200b\u5c5e\u6027\u200b

        Tip

        \u200b\u5728\u200b remote machine \u200b\u4f7f\u7528\u200b tmux\uff0c\u200b\u53ef\u4ee5\u200b\u5728\u200b\u8fde\u63a5\u200b\u5173\u95ed\u200b\u540e\u200b\uff0c\u200b\u8fde\u63a5\u200b\u56de\u6765\u200b\uff0c\u200b\u518d\u200b\u91cd\u65b0\u200b attach\uff0c\u200b\u4e4b\u524d\u200b\u8fd0\u884c\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u90fd\u200b\u4f1a\u200b\u4ecd\u7136\u200b\u5b58\u5728\u200b. \u200b\u5728\u200b\u8fdc\u7a0b\u200b\u7684\u200b tmux \u200b\u7684\u200b\u5feb\u6377\u952e\u200b\u9700\u8981\u200b\u6309\u200b\u4e24\u6b21\u200b C-a

        Tip

        VSCode \u200b\u7684\u200b Remote ssh \u200b\u76f8\u5f53\u200b\u597d\u7528\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8ba9\u200b\u4f60\u200b\u7528\u200b VSCode \u200b\u5bf9\u200b\u8fdc\u7a0b\u200b\u673a\u5668\u200b\u4e0a\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u5305\u62ec\u200b debug \u200b\u5565\u200b\u7684\u200b

        "},{"location":"PeiPei/","title":"PeiPei!","text":"

        \u200b\u6b22\u8fce\u200b\u6765\u5230\u200b PeiPei \u200b\u5bc4\u5c45\u200b\u5728\u200b\u5927\u795e\u200b Stormckey \u200b\u7684\u200b\u535a\u5ba2\u200b\u4e0a\u200b\uff01

        \u200b\u8fd9\u91cc\u200b\u4f1a\u653e\u200b\u4e00\u4e9b\u200b\u6015\u200b\u81ea\u5df1\u200b\u5fd8\u8bb0\u200b\u7684\u200b\u5c0f\u200b Tips\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e9b\u200b\u6709\u8da3\u200b\u7684\u200b\u4e1c\u897f\u200b\uff01

        "},{"location":"PeiPei/markdown/","title":"Markdown All in One","text":"

        \u200b\u7ea6\u200b 318 \u200b\u4e2a\u200b\u5b57\u200b 5 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

        "},{"location":"PeiPei/markdown/#vscode-like-highlighting","title":"VSCode like highlighting","text":"

        \u200b\u5373\u200b\u4f7f\u7528\u200b\u4e86\u200b VSCode \u200b\u7684\u200b MPE \u200b\u7684\u200b\u63d2\u4ef6\u200b\uff0cMarkdown \u200b\u91cc\u200b\u7684\u200b\u4ee3\u7801\u200b\u5757\u200b\u8fd8\u662f\u200b\u5341\u5206\u200b\u7684\u200b\u4e11\u964b\u200b.\u200b\u8fd9\u91cc\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e00\u79cd\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8ba9\u200b Markdown \u200b\u91cc\u200b\u7684\u200b\u4ee3\u7801\u200b\u5757\u200b\u7684\u200b\u9ad8\u4eae\u200b\u6548\u679c\u200b\u548c\u200b VSCode \u200b\u91cc\u200b\u7684\u200b\u4e00\u6837\u200b.

        \u200b\u9996\u5148\u200b\uff0c\u200b\u5982\u679c\u200b\u5bfc\u51fa\u200b\u7684\u200b\u662f\u200b\u767d\u8272\u200b\u5e95\u200b\uff0c\u200b\u5c31\u200b\u628a\u200b VSCode \u200b\u7684\u200b\u4e3b\u9898\u200b\u6539\u6210\u200b\u767d\u8272\u200b\u5e95\u200b\u7684\u200b\uff0c\u200b\u5982\u679c\u200b\u662f\u200b\u9ed1\u8272\u200b\u5e95\u200b\uff0c\u200b\u5c31\u200b\u6539\u6210\u200b\u9ed1\u8272\u200b\u5e95\u200b\u7684\u200b.\u200b\u4e0b\u9762\u200b\u7684\u200b\u914d\u7f6e\u200b\u662f\u200b\u767d\u8272\u200b\u5e95\u200b\u7684\u200b.

        \u200b\u5b89\u88c5\u200b Paste Special \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u76f4\u63a5\u200b\u5728\u200b VSCode \u200b\u91cc\u200b\u590d\u5236\u200b\u5199\u200b\u597d\u200b\u7684\u200b\u4ee3\u7801\u200b\uff0c\u200b\u5728\u200b Markdown \u200b\u6587\u4ef6\u200b\u91cc\u200b\u7c98\u8d34\u200b\u65f6\u200b\u53f3\u952e\u200b\u9009\u62e9\u200b Paste Special\uff0c\u200b\u7c98\u8d34\u200b\u4e3a\u200b HTML \u200b\u683c\u5f0f\u200b.\u200b\u4e3a\u4e86\u200b\u548c\u200b MPE \u200b\u7684\u200b\u9ed8\u8ba4\u200b\u683c\u5f0f\u200b\u5339\u914d\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5bf9\u200b css \u200b\u8fdb\u884c\u200b\u4e00\u4e9b\u200b\u5fae\u8c03\u200b.

        \u200b\u4f8b\u5982\u200b\u5982\u679c\u200b\u7c98\u8d34\u200b\u5b8c\u200b\u7684\u200b\u5982\u4e0b\u200b\uff1a

        <div style=\"color: #3b3b3b;background-color: #1f1f1f;font-family: Fira Code Retina\uff0c \u200b\u601d\u6e90\u200b\u9ed1\u4f53\u200b HW\uff0c Consolas\uff0c 'Courier New'\uff0c monospace\uff0c Consolas\uff0c 'Courier New'\uff0c monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;\">...</div>\n

        \u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u628a\u200b\u5b83\u200b\u6539\u6210\u200b\uff1a

        <div style=\"color: #3b3b3b;background-color: #f5f5f5;font-family: Consolas\uff0c 'Courier New'\uff0c monospace\uff0c Consolas\uff0c 'Courier New'\uff0c monospace;font-weight: normal;font-size: 14px;line-height: 1.4;white-space: pre;border-radius: 3px;padding: .8em;margin-top: 0;margin-bottom: 16px;overflow: auto;\">...</div>\n

        \u200b\u4e3b\u8981\u200b\u662f\u200b\u52a0\u200b\u4e86\u200b\u5706\u89d2\u200b\u3001padding \u200b\u548c\u200b margin.\u200b\u5b57\u4f53\u200b\u548c\u200b\u884c\u9ad8\u200b\u53ef\u6539\u200b\u53ef\u4e0d\u200b\u6539\u200b\uff0c\u200b\u770b\u200b\u4e2a\u4eba\u200b\u559c\u597d\u200b.\u200b\u53e6\u5916\u200b\uff0c\u200b\u4e3a\u4e86\u200b\u6253\u5370\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u66f4\u6539\u200b white-space \u200b\u4e3a\u200b pre-wrap\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u81ea\u52a8\u200b\u6362\u884c\u200b\u4e86\u200b\uff0c\u200b\u540c\u65f6\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u53bb\u6389\u200b overflow: auto;\uff1a

        <div style=\"color: #3b3b3b;background-color: #f5f5f5;font-family: Consolas\uff0c 'Courier New'\uff0c monospace\uff0c Consolas\uff0c 'Courier New'\uff0c monospace;font-weight: normal;font-size: 14px;line-height: 1.4;white-space: pre-wrap;border-radius: 3px;padding: .8em;margin-top: 0;margin-bottom: 16px;\">...</div>\n
        "},{"location":"PeiPei/markdown/#-img-src","title":"![]() -> <img src=\"\" />","text":"

        \u200b\u5728\u200b Markdown \u200b\u91cc\u200b\u63d2\u5165\u200b\u56fe\u7247\u200b\u65f6\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e00\u822c\u200b\u4f7f\u7528\u200b ![]() \u200b\u7684\u200b\u65b9\u5f0f\u200b\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u6837\u200b\u5bfc\u51fa\u200b\u7684\u200b PDF \u200b\u91cc\u200b\u7684\u200b\u56fe\u7247\u200b\u662f\u200b\u4e0d\u4f1a\u200b\u5c45\u4e2d\u200b\u7684\u200b\uff0c\u200b\u800c\u4e14\u200b\u4e5f\u200b\u6ca1\u6709\u200b\u529e\u6cd5\u200b\u8bbe\u7f6e\u200b\u56fe\u7247\u200b\u7684\u200b\u5bbd\u200b\u9ad8\u200b.\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u628a\u200b ![]() \u200b\u6539\u6210\u200b <img src=\"\" />.\u200b\u4f7f\u7528\u200b\u4ee5\u4e0b\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u66ff\u6362\u200b\uff1a

        !\\[(.*?)\\]\\((.*?)\\)\n

        \u200b\u66ff\u6362\u200b\u4e3a\u200b\uff1a

        <img src=\"$2\" alt=\"$1\" style=\"max-width: 100%\" />\n
        "},{"location":"Research/","title":"Research","text":"

        \u200b\u867d\u7136\u200b\u662f\u200b\u79d1\u7814\u200b\u83dc\u200b\ud83d\udc36\u200b\u4f46\u200b\u8fd8\u662f\u200b\u628a\u200b\u4e00\u4e9b\u200b\u7b14\u8bb0\u200b\u653e\u5728\u200b\u8fd9\u91cc\u200b\u597d\u200b\u4e86\u200b QaQ

        Research list

        • diffusion
        • Unet
        • batch nomarlization
        • basic pytorch
        • Stochastic Gradient Descent with momentum
        • KL \u200b\u6563\u5ea6\u200b
        • \u200b\u91cd\u200b\u53c2\u6570\u200b
        • VAE \u200b\u8fd8\u6709\u200b\u4e00\u4e2a\u200b\u5f88\u200b\u4f18\u79c0\u200b\u7684\u200b\u89e3\u7b54\u200b

        Useful pages:

        • Reverse-mode automatic differentiation from scratch\uff0c in Python
        • Example implementation of reverse-mode autodiff
        "},{"location":"Research/Diffusion%20Model/DDIM/","title":"DDIM","text":"

        \u200b\u7ea6\u200b 734 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        Abstract

        \u200b\u5bf9\u4e8e\u200b DDIM\uff0c\u200b\u9996\u5148\u200b\u8fd8\u662f\u200b\u63a8\u8350\u200b\u9605\u8bfb\u200b\u82cf\u5251\u6797\u200b\u7684\u200b\u535a\u5ba2\u200b.\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b\u53ef\u4ee5\u200b\u8ddf\u8bfb\u200b\uff0c\u200b\u6587\u7ae0\u200b\u4e2d\u6709\u200b\u6211\u200b\u5374\u200b\u6ca1\u6709\u200b\u63d0\u200b\u7684\u200b\u90e8\u5206\u200b\u5c31\u662f\u200b\u6211\u200b\u8ba4\u4e3a\u200b\u6ca1\u4ec0\u4e48\u200b\u597d\u200b\u8865\u5145\u200b\u7684\u200b\u4e86\u200b.

        "},{"location":"Research/Diffusion%20Model/DDIM/#_1","title":"\u6e05\u6d17","text":"

        \u200b\u4ece\u200b DDPM \u200b\u90a3\u7bc7\u200b\u535a\u5ba2\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u5df2\u7ecf\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\\(p(x_t|x_{t-1})\\)\u200b\u8fd9\u4e00\u200b\u524d\u540e\u200b\u8fde\u7eed\u200b\u65f6\u95f4\u200b\u7684\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u5df2\u7ecf\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b\u5230\u200b\u4e86\u200b\uff0c\u200b\u5c3d\u7ba1\u200b\u6211\u4eec\u200b\u5f53\u65f6\u200b\u7ed9\u5b9a\u200b\u4e86\u200b\u8fd9\u200b\u4e00\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u7684\u200b\u8868\u8fbe\u5f0f\u200b\uff0c\u200b\u5e76\u200b\u4ee5\u6b64\u200b\u63a8\u51fa\u200b\u4e86\u200b\\(p(x_t|x_0)\\).\u200b\u4f46\u662f\u200b\u65e2\u7136\u200b\u6ca1\u6709\u200b\u7528\u5230\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5b8c\u6210\u200b\u540e\u7eed\u200b\u63a8\u5bfc\u200b\u63a8\u5bfc\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b\u4fdd\u7559\u200b\u540e\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u7684\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0c\u200b\u4e0d\u518d\u200b\u5b9a\u200b\u6b7b\u200b\u524d\u9762\u200b\u7684\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u51fd\u6570\u200b\u4e86\u200b\uff0c\u200b\u5148\u200b\u5c06\u200b\u5176\u200b\u5f53\u4f5c\u200b\u5f85\u5b9a\u200b\uff0c\u200b\u770b\u770b\u200b\u8fd9\u200b\u4e00\u65b0\u200b\u7684\u200b\u81ea\u7531\u5ea6\u200b\u4f1a\u200b\u5e26\u6765\u200b\u4ec0\u4e48\u200b.

        \u200b\u4e8e\u662f\u200b\u5728\u200b\u8d1d\u53f6\u65af\u200b\u516c\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c06\u200b\u8fd9\u200b\u4e00\u9879\u200b\u79ef\u6389\u200b\uff0c\u200b\u968f\u540e\u200b\u4fdd\u6301\u200b\u6211\u4eec\u200b\u8d70\u51fa\u200b\u7684\u200b\u6bcf\u200b\u4e00\u6b65\u200b\u90fd\u200b\u662f\u200b\u6b63\u6001\u5206\u5e03\u200b\u7684\u200b\u5047\u8bbe\u200b\uff0c\u200b\u7528\u200b\u5f85\u5b9a\u200b\u7cfb\u6570\u200b\u6cd5\u200b\u6c42\u89e3\u200b.

        \u200b\u7136\u540e\u200b\u6211\u4eec\u200b\u5c31\u200b\u770b\u89c1\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u65b9\u7a0b\u200b\u4e66\u5c11\u200b\u4e86\u200b\u53e6\u200b\u4e00\u4e2a\u200b\uff0c\u200b\u8fd9\u200b\u4e8b\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u4e0d\u518d\u200b\u9650\u5236\u200b\\(p(x_t|x_{t-1})\\)\u200b\u81ea\u7136\u200b\u5c31\u200b\u591a\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u5173\u4e8e\u200b\u8fd9\u4e2a\u200b\u51fd\u6570\u200b\u53ef\u4ee5\u200b\u662f\u200b\u4ec0\u4e48\u200b\u7684\u200b\u81ea\u7531\u5ea6\u200b\uff08\u200b\u5f53\u7136\u200b\u8fd9\u4e2a\u200b\u51fd\u6570\u200b\u4e0d\u200b\u4e00\u5b9a\u200b\u8fd8\u662f\u200b DDPM \u200b\u7684\u200b\u5f62\u5f0f\u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u4ed6\u200b\u8fd8\u662f\u200b\u8981\u200b\u6ee1\u8db3\u200b\u5176\u4ed6\u200b\u7ed9\u5b9a\u200b\u7684\u200b\u6027\u8d28\u200b\uff0c\u200b\u6bd4\u5982\u200b\u4fdd\u8bc1\u200b\\(p(x_t|x_0)\\)\u200b\u5f62\u5f0f\u200b\u5982\u200b\u524d\u200b\uff09\uff0c\u200b\u6211\u4eec\u200b\u8c03\u8282\u200b\u8fd9\u4e2a\u200b\u65b0\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u5c31\u662f\u200b\u6362\u200b\u4e0d\u540c\u200b\u7684\u200b\u6ee1\u8db3\u6761\u4ef6\u200b\u7684\u200b\\(p(x_t|x_{t-1})\\)\u200b\u89e3\u200b\uff0c\u200b\u4f7f\u200b\u5176\u200b\u8868\u73b0\u200b\u51fa\u200b\u4e0d\u540c\u200b\u7684\u200b\u7279\u6027\u200b.

        \u200b\u968f\u540e\u200b\u7684\u200b\u81ea\u7136\u200b\u5c31\u662f\u200b\u51e0\u4e2a\u200b\u4e0d\u540c\u200b\u7684\u200b\u4f8b\u5b50\u200b\u4e86\u200b.\u200b\u9996\u5148\u200b\uff0c\u200b\u4e00\u5b9a\u200b\u5b58\u5728\u200b\u67d0\u4e2a\u200b\\(\\sigma_t\\)\u200b\u4f7f\u5f97\u200b\\(p(x_t|x_{t-1})\\)\u200b\u8fd8\u662f\u200b\u8ddf\u200b DDPM \u200b\u4e00\u6837\u200b\u7684\u200b\u53d6\u503c\u200b\uff0c\u200b\u6211\u4eec\u200b\u628a\u200b DDPM \u200b\u4e2d\u200b\u7684\u200b\u65b9\u5dee\u200b\u5e26\u5165\u200b\uff0c\u200b\u5c31\u200b\u5f97\u5230\u200b\u4e86\u200b\u8ddf\u200b DDPM \u200b\u4e2d\u200b\u4e00\u6837\u200b\u7684\u200b\u7ed3\u679c\u200b.\u200b\u4ee5\u53ca\u200b\u6587\u7ae0\u200b\u4e2d\u200b\u5efa\u8bae\u200b\u7684\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u65b9\u5dee\u200b\uff0c\u200b\u90fd\u200b\u80fd\u200b\u5f97\u5230\u200b\u4e0d\u9519\u200b\u7684\u200b\u7ed3\u679c\u200b.\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u53d6\u200b\u4e00\u4e9b\u200b\u7279\u6b8a\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u6bd4\u5982\u200b\u5b8c\u5168\u200b\u53bb\u6389\u200b\u65b9\u5dee\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u5f80\u56de\u200b\u8d70\u200b\u7684\u200b\u6bcf\u200b\u4e00\u6b65\u200b\u90fd\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5411\u91cf\u200b\u800c\u200b\u4e0d\u518d\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5206\u5e03\u200b\uff0c\u200b\u8fd9\u6837\u200b\u8d70\u200b\u7684\u200b\u6548\u679c\u200b\u5f88\u200b\u597d\u200b.

        "},{"location":"Research/Diffusion%20Model/DDIM/#_2","title":"\u52a0\u901f","text":"

        \u200b\u8fd9\u90e8\u5206\u200b\u539f\u200b\u8bba\u6587\u200b\u7684\u200b\u601d\u60f3\u200b\u5b9e\u5728\u200b\u662f\u200b\u7cbe\u5999\u200b\uff0c\u200b\u7528\u200b\u7c7b\u6bd4\u200b\u800c\u8a00\u200b\uff0c\u200b\u6211\u4eec\u200b\u4ece\u200b\u8d77\u70b9\u200b\u51fa\u53d1\u200b\u8d70\u200b\u4e86\u200b 1000 \u200b\u6b65\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u6bcf\u200b 5 \u200b\u6b65\u8bb0\u200b\u4e00\u6b65\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u770b\u4f5c\u200b\u662f\u200b 200 \u200b\u6b65\u200b\u8d70\u200b\u5230\u200b\u4e86\u200b\u540c\u4e00\u4e2a\u200b\u5730\u65b9\u200b\uff0c\u200b\u53ea\u8981\u200b\u6211\u4eec\u200b\u7684\u200b\u6a21\u578b\u200b\u9884\u6d4b\u200b\u7684\u200b\u8db3\u591f\u200b\u597d\u200b\uff0c\u200b\u5b8c\u5168\u200b\u7406\u89e3\u200b\u6211\u4eec\u200b\u662f\u200b\u6cbf\u7740\u200b\u90a3\u6761\u200b\u8def\u5f80\u200b\u5916\u200b\u8d70\u200b\u7684\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u200b 200 \u200b\u6b65\u200b\u4e5f\u200b\u8db3\u4ee5\u200b\u8ba9\u200b\u6211\u4eec\u200b\u8d70\u200b\u56de\u6765\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u52a0\u901f\u200b.\u200b\u8fd9\u4e00\u200b\u8fc7\u7a0b\u200b\u662f\u200b\u6709\u70b9\u50cf\u200b C++\u200b\u91cc\u200b\u7684\u200b upcasat\uff0c\u200b\u6211\u200b\u539f\u5148\u200b\u5f53\u200b\u4f60\u200b\u662f\u200b\u4e2a\u200b Shape \u200b\u7c7b\u200b\uff0c\u200b\u4f46\u200b\u6211\u200b\u77e5\u9053\u200b\u4f60\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u4e2a\u200b Circle\uff0c\u200b\u90a3\u200b\u6211\u4eec\u200b\u5c31\u200b\u628a\u200b\u6307\u9488\u200b\u6539\u6210\u200b Circle*\u200b\u6765\u200b\u628a\u200b\u4f60\u200b\u5f53\u505a\u200b\u4e00\u4e2a\u200b circle \u200b\u5bf9\u5f85\u200b\uff0c\u200b\u5bf9\u8c61\u200b\u5e76\u200b\u6ca1\u6709\u200b\u53d8\u200b\uff0c\u200b\u53ea\u662f\u200b\u6211\u4eec\u200b\u5904\u7406\u200b\u4ed6\u200b\u7684\u200b\u65b9\u5f0f\u200b\u53d8\u200b\u4e86\u200b\uff0c\u200b\u90a3\u200b\u6211\u4eec\u200b\u5c31\u200b\u4fee\u6539\u200b\u597d\u200b\u9002\u5408\u200b\u4e8e\u200b 200 \u200b\u6b65\u200b\u7684\u200b\\(\\alpha\uff0c\\beta\\)\u200b\u6765\u200b\u53cd\u5411\u200b\u91c7\u6837\u200b.

        \u200b\u6700\u540e\u200b\u4e00\u6bb5\u200b\u628a\u200b DDPM \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u9636\u200b\u5fae\u5206\u65b9\u7a0b\u200b\u7684\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u503c\u5f97\u4e00\u770b\u200b.

        "},{"location":"Research/Diffusion%20Model/DDPM/","title":"DDPM","text":"

        \u200b\u7ea6\u200b 2473 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 8 \u200b\u5206\u949f\u200b

        \u200b\u5173\u4e8e\u200b DDPM \u200b\u7684\u200b\u4e09\u79cd\u200b\u7406\u89e3\u200b\u65b9\u5f0f\u200b\u548c\u200b\u4e00\u4e9b\u200b\u76f4\u89c2\u200b\u7684\u200b\u89e3\u91ca\u200b

        "},{"location":"Research/Diffusion%20Model/DDPM/#ddpm_1","title":"\u8ba4\u8bc6\u200b DDPM","text":"

        \u200b\u9996\u5148\u200b\uff0c\u200b\u8ba4\u8bc6\u200b DDPM \u200b\u6700\u597d\u200b\u7684\u200b\u65b9\u5f0f\u200b\u5c31\u662f\u200b\u5148\u200b\u53bb\u200b\u8bfb\u4e00\u8bfb\u200b\u5927\u4f6c\u200b\u5bf9\u4e8e\u200b\u76f4\u89c2\u200b\u7406\u89e3\u200b DDPM \u200b\u7684\u200b\u8bb2\u89e3\u200b\u535a\u5ba2\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u5f15\u7528\u200b\u3010\u200b\u82cf\u5251\u6797\u200b](https://kexue.fm/archives/9119) \u200b\u5927\u4f6c\u200b\u7684\u200b\u535a\u5ba2\u200b\uff0c\u200b\u5efa\u8bae\u200b\u5927\u5bb6\u200b\u5148\u200b\u8bfb\u5b8c\u200b\u7b2c\u4e00\u7bc7\u200b\u6269\u6563\u200b\u6a21\u578b\u200b\u6f2b\u8c08\u200b\uff0c\u200b\u660e\u767d\u200b DDPM \u200b\u662f\u200b\u505a\u200b\u4ec0\u4e48\u200b\u7684\u200b\uff0c\u200b\u518d\u200b\u56de\u5230\u200b\u672c\u6587\u200b.

        "},{"location":"Research/Diffusion%20Model/DDPM/#_1","title":"\u5728\u200b\u9ad8\u200b\u7ef4\u7a7a\u95f4\u200b\u4e2d\u6e38\u200b\u8d70","text":"

        DDPM\uff0c\u200b\u6309\u7167\u200b\u539f\u6587\u200b\u7684\u200b\u4ecb\u7ecd\u200b\uff0c\u200b\u4e0d\u200b\u53ea\u200b\u53ef\u4ee5\u200b\u7528\u4e8e\u200b\u5904\u7406\u200b\u56fe\u50cf\u200b\u4fe1\u606f\u200b\uff0c\u200b\u4f46\u662f\u200b\u539f\u6587\u200b\u7684\u200b\u5206\u6790\u200b\u4e3b\u8981\u200b\u662f\u4ece\u200b\u56fe\u50cf\u200b\u6765\u8bb2\u200b\u7684\u200b\uff08\u200b\u662f\u200b\u5427\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u6211\u200b\u4e5f\u200b\u4ece\u200b\u56fe\u50cf\u200b\u5206\u6790\u200b\u7684\u200b\u89d2\u5ea6\u200b\u6765\u8bf4\u200b\u4e00\u4e0b\u200b\u5427\u200b.

        \u200b\u4ec0\u4e48\u200b\u662f\u200b\u56fe\u50cf\u200b\uff1f\u200b\u6309\u7167\u200b\u6700\u200b\u7b80\u5355\u200b\u7684\u200b\u89d2\u5ea6\u200b\u7406\u89e3\u200b\uff0c\u200b\u56fe\u50cf\u200b\u5c31\u662f\u200b\u50cf\u7d20\u200b\u503c\u200b\u77e9\u9635\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u628a\u200b\u4e00\u5e45\u200b\u56fe\u200b\u4ece\u200b\u5de6\u4e0a\u89d2\u200b\u5230\u200b\u53f3\u4e0b\u89d2\u200b\u7684\u200b\u6240\u6709\u200b\u50cf\u7d20\u200b\u503c\u200b\uff08\u200b\u53ef\u80fd\u200b\u5206\u200b RGB \u200b\u4e09\u4e2a\u200b\u77e9\u9635\u200b\uff09\u200b\u90fd\u200b\u5b58\u50a8\u200b\u8d77\u6765\u200b\uff0c\u200b\u5c31\u200b\u8bb0\u5f55\u200b\u4e86\u200b\u8fd9\u4e2a\u200b\u4e2a\u200b\u56fe\u50cf\u200b\u7684\u200b\u6240\u6709\u200b\u4fe1\u606f\u200b.

        \u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u518d\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u56fe\u50cf\u200b\u4ece\u200b\u77e9\u9635\u200b\u62fc\u63a5\u200b\u6210\u200b\u4e00\u4e2a\u200b\u5411\u91cf\u200b\uff0c\u200b\u56fe\u50cf\u200b\u5c31\u200b\u6210\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u5f88\u200b\u9ad8\u200b\u7ef4\u5ea6\u200b\u7684\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u70b9\u200b\uff08\u200b\u6bd4\u5982\u200b 1024*1024 \u200b\u7ef4\u200b\uff09\uff0c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\uff0c\u200b\u6709\u4e9b\u200b\u70b9\u200b\u662f\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u56fe\u50cf\u200b\uff08\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u603b\u80fd\u200b\u62ff\u6765\u200b\u4e00\u4e2a\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u56fe\u50cf\u200b\uff0c\u200b\u628a\u200b\u56fe\u50cf\u200b\u6620\u5c04\u200b\u5230\u200b\u70b9\u200b\u4e0a\u200b\uff09\uff0c\u200b\u5927\u90e8\u5206\u200b\u5374\u662f\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u566a\u58f0\u200b\u56fe\u200b\uff08\u200b\u60f3\u8c61\u200b\u4e00\u4e0b\u200b\u7535\u89c6\u200b\u82b1\u5c4f\u200b\uff0c\u200b\u6211\u4eec\u200b\u968f\u673a\u200b\u5728\u200b\u7a7a\u95f4\u200b\u91cc\u53d6\u200b\u4e00\u4e2a\u70b9\u200b\u5927\u6982\u200b\u5c31\u662f\u200b\u8fd9\u6837\u200b\u7684\u200b\uff09\uff0cDDPM \u200b\u5c31\u662f\u200b\u8bd5\u56fe\u200b\u4ece\u200b\u8fd9\u4e2a\u200b\u7a7a\u95f4\u200b\u7684\u200b\u968f\u673a\u200b\u4e00\u4e2a\u70b9\u200b\u51fa\u53d1\u200b\uff0c\u200b\u5e0c\u671b\u200b\u627e\u5230\u200b\u4e00\u4e2a\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5728\u200b\u9ad8\u200b\u7ef4\u7a7a\u95f4\u200b\u4e2d\u6e38\u200b\u8d70\u200b.

        "},{"location":"Research/Diffusion%20Model/DDPM/#_2","title":"\u56fe\u50cf\u200b\u7684\u200b\u6982\u7387\u5206\u5e03","text":"

        \u200b\u6211\u4eec\u200b\u5f88\u200b\u597d\u200b\u7406\u89e3\u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u70b9\u200b\u7684\u200b\u56fe\u50cf\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u70b9\u200b\u5750\u6807\u200b\u62ff\u200b\u51fa\u6765\u200b\uff0c\u200b\u8fd8\u539f\u6210\u200b\u77e9\u9635\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8fd8\u539f\u200b\u5230\u200b\u56fe\u50cf\u200b\u4e86\u200b\uff0c\u200b\u90a3\u4e48\u200b\u4ec0\u4e48\u200b\u662f\u200b\u56fe\u50cf\u200b\u7684\u200b\u6982\u7387\u5206\u5e03\u200b\uff1f

        \u200b\u60f3\u8c61\u200b\u4e00\u4e2a\u200b\u5750\u6807\u200b\u4e3a\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u548c\u200b\u4e00\u4e2a\u200b\u5747\u503c\u200b\u4e3a\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u4e8c\u7ef4\u200b\u6b63\u6001\u5206\u5e03\u200b\uff0c\u200b\u8fd9\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u4e8c\u8005\u200b\u7684\u200b\u533a\u522b\u200b\uff0c\u200b\u4e00\u4e2a\u70b9\u200b\u53ef\u4ee5\u200b\u51c6\u786e\u200b\u8fd8\u539f\u200b\u5230\u200b\u4e00\u5e45\u200b\u56fe\u50cf\u200b\uff0c\u200b\u4f46\u200b\u6982\u7387\u5206\u5e03\u200b\u5e76\u200b\u4e0d\u200b\u51c6\u786e\u200b\uff0c\u200b\u4ed6\u200b\u53ea\u662f\u200b\u544a\u8bc9\u200b\u6211\u4eec\u200b\u8fd9\u5e45\u200b\u56fe\u200b\u662f\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u6700\u9ad8\u200b\uff0c\u200b\u5b83\u200b\u4e5f\u200b\u53ef\u80fd\u200b\u662f\u200b\u5176\u4ed6\u200b\u56fe\u50cf\u200b\uff0c\u200b\u5b83\u200b\u662f\u200b\u5176\u4ed6\u200b\u56fe\u50cf\u200b\u7684\u200b\u6982\u7387\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u6982\u7387\u5206\u5e03\u200b\u7b97\u200b\u51fa\u200b\uff0c\u200b\u6bd4\u5982\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u786e\u5b9a\u200b\u4ed6\u200b\u662f\u200b\uff081\uff0c3\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u662f\u200b\u591a\u5c11\u200b.

        \u200b\u90a3\u4e48\u200b\uff0c\u200b\u7ed9\u5b9a\u200b\u4e00\u4e2a\u200b\u56fe\u50cf\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u6211\u4eec\u200b\u5982\u4f55\u200b\u83b7\u53d6\u200b\u56fe\u50cf\u200b\u5462\u200b\uff1f\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u53d6\u200b\u5747\u503c\u200b\u7684\u200b\u5230\u200b\u56fe\u50cf\u200b\uff0c\u200b\u90a3\u200b\u5c31\u662f\u200b\uff081\uff0c2\uff09\uff0c\u200b\u8fd9\u4e48\u200b\u505a\u200b\u7684\u200b\u9053\u7406\u200b\u662f\u200b\uff1a\u200b\u5b83\u200b\u662f\u200b\u8fd9\u5e45\u200b\u56fe\u200b\u7684\u200b\u6982\u7387\u200b\u6700\u9ad8\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u6309\u7167\u200b\u6982\u7387\u200b\u53bb\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u53ef\u80fd\u200b\u662f\u200b\uff081\uff0c2\uff09\uff0c\u200b\u4e5f\u200b\u53ef\u80fd\u200b\u662f\u200b\uff082\uff0c4\uff09\uff0c\u200b\u4f46\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u6700\u9ad8\u200b\uff0c\u200b\u4e00\u4e9b\u200b\u5f88\u200b\u79bb\u8c31\u200b\u7684\u200b\u70b9\u200b\uff08\u200b\u504f\u79bb\u200b\u5747\u503c\u200b\u5f88\u200b\u8fdc\u200b\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u5c31\u200b\u5f88\u200b\u4f4e\u200b.

        \u200b\u56de\u5230\u200b DDPM \u200b\u7684\u200b\u5411\u524d\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u8d77\u70b9\u200b\u662f\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b\uff081\uff0c2\uff09\uff0c\u200b\u6211\u4eec\u200b\u8d70\u200b\u4e86\u200b\u4e00\u6b65\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5c31\u200b\u4e0d\u518d\u200b\u5f97\u5230\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u800c\u662f\u200b\u5f97\u5230\u200b\u4e00\u4e2a\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b\u53ef\u4ee5\u200b\u8fd1\u4f3c\u200b\u770b\u6210\u200b\u5747\u503c\u200b\u4e3a\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u60f3\u50cf\u200b\u6211\u4eec\u200b\u4ece\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u70b9\u200b\u51fa\u53d1\u200b\uff0c\u200b\u8d70\u200b\u4e86\u200b\u4e00\u6b65\u200b\u540e\u200b\uff0c\u200b\u53ef\u80fd\u200b\u5728\u200b\u4ee5\u200b\u5176\u200b\u4e3a\u200b\u5706\u5fc3\u200b\u7684\u200b\u4efb\u4f55\u200b\u4e00\u4e2a\u200b\u5730\u65b9\u200b\u4e0a\u200b\uff0c\u200b\u4e0d\u540c\u200b\u7684\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u6982\u7387\u200b\u90fd\u200b\u4e0d\u540c\u200b\uff08\u200b\u53ef\u4ee5\u200b\u7c7b\u6bd4\u200b\u7535\u5b50\u4e91\u200b\uff09.\u200b\u6211\u4eec\u200b\u518d\u200b\u8d70\u200b\u7b2c\u4e8c\u6b65\u200b\uff0c\u200b\u8ddd\u79bb\u200b\u5c31\u200b\u4f1a\u200b\u66f4\u200b\u8fdc\u200b\u4e00\u4e9b\u200b\uff0c\u200b\u6982\u7387\u5206\u5e03\u200b\u66f4\u200b\u5206\u6563\u200b\u4e00\u4e9b\u200b.

        \u200b\u6309\u7167\u200b\u539f\u6587\u200b\u8d70\u51fa\u200b\u4e00\u5343\u6b65\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u56fe\u50cf\u200b\u5c31\u200b\u4f1a\u200b\u53d8\u6210\u200b\u4e00\u4e2a\u200b\u4ee5\u200b\u539f\u56fe\u200b\u4e3a\u200b\u5706\u5fc3\u200b\u7684\u200b\u5f25\u6563\u200b\u7684\u200b\u5e7f\u9614\u200b\u7684\u200b\u7c7b\u4f3c\u200b\u7403\u200b\u7684\u200b\u6982\u7387\u5206\u5e03\u200b\u5185\u200b\u4e86\u200b.\u200b\u56e0\u200b\u5176\u200b\u5e7f\u9614\u200b\uff0c\u200b\u6211\u4eec\u200b\u5927\u6982\u200b\u6700\u7ec8\u200b\u4f1a\u200b\u505c\u200b\u5728\u200b\u67d0\u200b\u4e00\u4e2a\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\u4e0a\u200b.\u200b\u6ce8\u610f\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6211\u200b\u8bf4\u200b\u7684\u200b\u505c\u200b\u5728\u200b\u4e00\u4e2a\u200b\u566a\u70b9\u200b\u4e0a\u200b\uff0c\u200b\u662f\u200b\u6307\u200b\u4ece\u200b\u6700\u7ec8\u200b\u7684\u200b\u5206\u5e03\u200b\u4e2d\u53d6\u200b\u5747\u503c\u200b\u6216\u8005\u200b\u968f\u673a\u200b\u91c7\u6837\u200b\u5f97\u5230\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u4ee5\u200b\u4ece\u200b\u5206\u5e03\u200b\u8dcc\u56de\u200b\u786e\u5b9a\u200b\u503c\u200b.

        \u200b\u539f\u6587\u4e2d\u200b\u7ed9\u51fa\u200b\u4e86\u200b\u6bcf\u6b65\u200b\u600e\u4e48\u200b\u8d70\u200b\u7684\u200b\u516c\u5f0f\u200b\uff0c\u200b\u5176\u200b\u5177\u6709\u200b\u7684\u200b\u826f\u597d\u200b\u6027\u8d28\u200b\u5c31\u662f\u200b\uff1a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4ece\u200b\u7ed9\u200b\u8ba2\u200b\u7684\u200b\u8d77\u70b9\u200b\uff0c\\(\\alpha\\)\uff0c\\(\\beta\\)\u200b\u4e2d\u200b\u76f4\u63a5\u200b\u63a8\u51fa\u200b\u7b2c\u200b N \u200b\u6b65\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u5e03\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\uff0c1k \u200b\u6b65\u540e\u200b\\(\\bar \\alpha\\)\u200b\u63a5\u8fd1\u200b\u4e8e\u6797\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u5e03\u200b\u53d6\u200b\u5747\u503c\u200b\u4e5f\u200b\u662f\u200b\u53d6\u200b\u4e0d\u5230\u200b\u539f\u56fe\u200b\u7684\u200b\u4e86\u200b\uff0c\u200b\u5747\u503c\u200b\u5df2\u7ecf\u200b\u5728\u200b 0 \u200b\u9644\u8fd1\u200b.\u200b\u603b\u4f53\u200b\u5206\u5e03\u200b\u63a5\u8fd1\u200b\u9ad8\u65af\u5206\u5e03\u200b.

        "},{"location":"Research/Diffusion%20Model/DDPM/#_3","title":"\u56de\u5230\u200b\u8d77\u70b9","text":"

        \u200b\u4ece\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\u8d70\u51fa\u200b 1000 \u200b\u6b65\u200b\uff0c\u200b\u5230\u8fbe\u200b\u7684\u200b\u7ec8\u70b9\u200b\uff0c\u200b\u8fd1\u4e4e\u200b\u670d\u4ece\u200b\u9ad8\u65af\u5206\u5e03\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u76f4\u63a5\u200b\u4ece\u200b\u9ad8\u65af\u5206\u5e03\u200b\u91c7\u6837\u200b\uff0c\u200b\u5c31\u200b\u80fd\u200b\u5f97\u5230\u200b\u8fd1\u4f3c\u200b\u4ece\u200b\u67d0\u4e2a\u200b/\u200b\u4efb\u4f55\u200b\u4e00\u4e2a\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\u51fa\u8d70\u200b\u6240\u200b\u8fbe\u5230\u200b\u7684\u200b\u7ec8\u70b9\u200b\u4e86\u200b\uff0c\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u60f3\u200b\u56de\u53bb\u200b\uff0c\u200b\u600e\u4e48\u200b\u56de\u200b\uff1f

        \u200b\u5230\u200b\u8fd9\u91cc\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u89e3\u7b54\u200b\u539f\u200b\u6a21\u578b\u200b\u4e2d\u200b\u4e00\u4e2a\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u4ee4\u4eba\u56f0\u60d1\u200b\u7684\u200b\u70b9\u200b\u4e86\u200b\uff0c\u200b\u5047\u5982\u200b\u6211\u4eec\u200b\u8d70\u200b\u4e86\u200b 500 \u200b\u6b65\u200b\uff0c\u200b\u5230\u200b\u4e86\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u8d70\u200b\u4e0b\u200b\u4e00\u6b65\u200b\uff0c\u200b\u5c31\u662f\u200b\u8d70\u200b\u5230\u200b 500 \u200b\u4e3a\u200b\u5706\u5fc3\u200b\u7684\u200b\u4e00\u4e2a\u200b\u6982\u7387\u5206\u5e03\u200b\u4e0a\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u8bad\u7ec3\u200b\u4e00\u4e2a\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u6765\u200b\u62df\u5408\u200b\u7684\u8bdd\u200b\uff0c\u200b\u4e0d\u200b\u5c31\u662f\u200b\u5728\u200b\u62df\u5408\u200b\u9ad8\u65af\u200b\u5417\u200b\uff0c\u200b\u9ad8\u65af\u200b\u53c8\u200b\u4f55\u987b\u200b\u62df\u5408\u200b\u5462\u200b\uff1f

        \u200b\u95ee\u9898\u200b\u5c31\u200b\u5728\u200b\u8fd9\u91cc\u200b\u4e86\u200b\uff0c\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u968f\u673a\u200b\u91c7\u4e86\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u8bf4\u200b\u662f\u200b\u7ec8\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u8d70\u200b\u56de\u53bb\u200b\uff0c\u200b\u5f53\u7136\u200b\u4e0d\u80fd\u200b\u4ee5\u200b\u6bcf\u200b\u4e00\u6b65\u200b\u90fd\u200b\u662f\u200b\u9ad8\u65af\u200b\u8d70\u200b\uff0c\u200b\u90a3\u200b\u6700\u7ec8\u200b\u8d70\u5230\u200b\u7684\u200b\u8fd8\u662f\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u77e5\u9053\u200b\uff0c\u200b\u6211\u200b\u73b0\u5728\u200b\u5728\u200b\u8fd9\u91cc\u200b\uff0c\u200b\u90a3\u200b\u6211\u200b\u4e0a\u200b\u4e00\u6b65\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u662f\u4ece\u200b\u54ea\u91cc\u200b\u6765\u200b\u7684\u200b\uff1f\u200b\u6211\u8981\u200b\u56de\u5230\u200b\u90a3\u4e2a\u200b\u5730\u65b9\u200b\u53bb\u200b.

        \u200b\u60f3\u8c61\u200b\u4e00\u4e0b\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u91c7\u6837\u200b\u7684\u200b\u70b9\u200b\u5728\u200b\u8d77\u70b9\u200b\u90a3\u4e2a\u200b\u5706\u200b\u7684\u200b\u4e0a\u65b9\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u7684\u200b\u56de\u7b54\u200b\u662f\u200b\uff1a\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u4ece\u200b\u4e0b\u9762\u200b\u6765\u200b\uff0c\u200b\u8981\u200b\u56de\u53bb\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5f80\u4e0b\u8d70\u200b.\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u5728\u200b\u4e0b\u9762\u200b\uff0c\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u4ece\u200b\u4e0a\u9762\u200b\u6765\u200b\uff0c\u200b\u5f80\u4e0a\u8d70\u200b.\u200b\u6240\u4ee5\u200b\uff0c\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u4ece\u200b\u54ea\u91cc\u200b\u6765\u4f1a\u200b\u968f\u7740\u200b\u6211\u200b\u73b0\u5728\u200b\u5728\u200b\u54ea\u91cc\u200b\u800c\u200b\u53d8\u5316\u200b\uff0c\u200b\u6240\u4ee5\u200b\uff0c\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u9884\u6d4b\u200b\u7684\u200b\u65f6\u5019\u200b\u9700\u8981\u200b\u6211\u4eec\u200b\u73b0\u5728\u200b\u7684\u200b\u4f4d\u7f6e\u200b\uff08\\(x_t\\)\uff09\u200b\u548c\u200b\u65f6\u95f4\u200b\uff0c\u200b\u6765\u200b\u62df\u5408\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u6765\u200b\u7684\u200b\u4f4d\u7f6e\u200b.

        \u200b\u4e8e\u662f\u200b\u6211\u4eec\u200b\u5f00\u59cb\u200b\u8bad\u7ec3\u200b\uff0c\u200b\u7b2c\u4e00\u6b21\u200b\u8bad\u7ec3\u200b\u53ef\u80fd\u200b\u7f51\u7edc\u200b\u4e00\u6b65\u6b65\u200b\u5f80\u4e0a\u8d70\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u6a21\u578b\u200b\u503e\u5411\u200b\u4e8e\u200b\u5728\u200b\u8fd9\u4e9b\u200b\u8def\u5f84\u200b\u70b9\u4e0a\u200b\u8f93\u51fa\u200b\uff1a\u200b\u563f\u200b\uff0c\u200b\u6211\u200b\u662f\u4ece\u200b\u4e0b\u9762\u200b\u6765\u200b\u7684\u200b\uff0c\u200b\u5f80\u4e0b\u8d70\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u56de\u53bb\u200b.\u200b\u7b2c\u4e8c\u6b21\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u80fd\u200b\u5f80\u200b\u5de6\u200b\u8d70\u200b\uff0c\u200b\u540c\u6837\u200b\u8ba9\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u5728\u200b\u8fd9\u6761\u200b\u8def\u5f84\u200b\u4e0a\u200b\u61c2\u5f97\u200b\u5982\u4f55\u200b\u56de\u5f52\u200b.\u200b\u6700\u7ec8\u200b\uff0c\u200b\u8bad\u7ec3\u200b\u5b8c\u6bd5\u200b\u540e\u200b\uff0c\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u5c31\u200b\u61c2\u5f97\u200b\u5982\u4f55\u200b\u4ece\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u70b9\u200b\u8d70\u200b\u56de\u53bb\u200b\u4e86\u200b.

        \u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8981\u200b\u8bbe\u8ba1\u200b\u5408\u9002\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u8ba9\u200b\u8bad\u7ec3\u200b\u8fc7\u7a0b\u200b\u53ef\u4ee5\u200b\u66f4\u597d\u200b\u7684\u200b\u9886\u8def\u200b\u56de\u53bb\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u662f\u200b\u6587\u7ae0\u200b\u4e2d\u200b\u6570\u5b66\u200b\u90e8\u5206\u200b\u5206\u6790\u200b\u7684\u200b\u5de5\u4f5c\u200b\u4e86\u200b.

        "},{"location":"Research/Diffusion%20Model/DDPM/#_4","title":"\u795e\u5947\u200b\u7684\u200b\u8bed\u610f\u200b\u878d\u5408","text":"

        \u200b\u6211\u200b\u4e5f\u200b\u4e0d\u200b\u77e5\u9053\u200b\u5728\u200b\u8fd9\u91cc\u200b\u9002\u7528\u200b\u4e8e\u200b\u4ee5\u200b\u878d\u5408\u200b\u5bf9\u200b\u4e0d\u200b\u5bf9\u200b\uff0c\u200b\u4f46\u200b\u4e8b\u5b9e\u200b\u5c31\u662f\u200b\uff0c\u200b\u8f93\u5165\u200b\u7684\u200b\u8d77\u70b9\u200b\u4e0d\u200b\u552f\u4e00\u200b\uff0c\u200b\u6211\u4eec\u200b\u6700\u540e\u200b\u8d70\u200b\u56de\u6765\u200b\u7684\u8bdd\u200b\uff0c\u200b\u4e0d\u4ec5\u200b\u53ef\u4ee5\u200b\u8d70\u200b\u56de\u200b\u8d77\u70b9\u200b\uff0c\u200b\u800c\u4e14\u200b\u53ef\u4ee5\u200b\u8d70\u200b\u56de\u200b\u8d77\u70b9\u200b\u4e4b\u95f4\u200b\u7684\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u6bd4\u5982\u200b\u8f93\u5165\u200b\u6ee1\u6708\u200b\u548c\u200b\u534a\u6708\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u751f\u6210\u200b \u00be \u200b\u6708\u200b\uff0c\u200b\u8fd9\u200b\u4e24\u5e45\u200b\u56fe\u200b\u5728\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e0d\u540c\u70b9\u200b\u4e0a\u200b\uff0c\u200b\u76f8\u805a\u200b\u6709\u200b\u4e00\u6bb5\u8ddd\u79bb\u200b\uff0c\u200b\u4ed6\u4eec\u200b\u4e2d\u95f4\u200b\u7684\u200b\u70b9\u200b\u5927\u90e8\u5206\u200b\u90fd\u200b\u662f\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u566a\u70b9\u200b\uff0c\u200b\u4f46\u662f\u200b\u5374\u200b\u80fd\u200b\u88ab\u200b\u6210\u529f\u200b\u8d70\u200b\u5230\u200b\uff0c\u200b\u5b9e\u5728\u200b\u662f\u200b\u795e\u5947\u200b.

        "},{"location":"Research/Diffusion%20Model/DDPM/#_5","title":"\u8fdb\u4e00\u6b65\u200b\u7684\u200b\u5b66\u4e60","text":"

        \u200b\u4ee5\u4e0a\u200b\u662f\u200b\u5bf9\u200b DDPM \u200b\u7684\u200b\u4e00\u4e2a\u200b\u7406\u89e3\u200b\u7684\u200b\u89d2\u5ea6\u200b\uff0c\u200b\u5927\u4f6c\u200b\u7684\u200b\u535a\u5ba2\u200b\u8fd8\u200b\u7ed9\u51fa\u200b\u4e86\u200b\u5bf9\u4e8e\u200b DDPM \u200b\u7684\u200b\u4e24\u79cd\u200b\u4e0d\u540c\u200b\u7684\u200b\u7406\u89e3\u200b\u7684\u200b\u89c6\u89d2\u200b

        \u200b\u6211\u4eec\u200b\u5148\u8bfb\u200b\u7b2c\u4e00\u7bc7\u200b\uff0c\u200b\u8fd9\u7bc7\u200b\u53ef\u4ee5\u200b\u8ddf\u8bfb\u200b.\u200b\u9996\u5148\u200b\u6587\u7ae0\u200b\u8bf4\u660e\u200b\u4e86\u200b\u628a\u200b\u95ee\u9898\u200b\u5206\u89e3\u6210\u200b\u591a\u200b\u6b65\u200b\u53ef\u4ee5\u200b\u5927\u5e45\u5ea6\u63d0\u9ad8\u200b\u62df\u5408\u200b\u80fd\u529b\u200b\uff0c\u200b\u8fd9\u200b\u662f\u200b\u5f88\u200b\u6709\u200b\u6559\u4e49\u200b\u7684\u200b\u89c2\u5bdf\u200b.

        \u200b\u8054\u5408\u200b\u6563\u5ea6\u200b\u7684\u200b\u6700\u200b\u6d88\u5316\u200b\u76ee\u6807\u200b\u4e5f\u200b\u5f88\u200b\u597d\u200b\u7406\u89e3\u200b\uff0c\u200b\u9996\u5148\u200b\u8981\u200b\u77e5\u9053\u200b KL \u200b\u6563\u5ea6\u200b\u662f\u200b\u8861\u91cf\u200b\u4e24\u4e2a\u200b\u5206\u5e03\u200b\u4e4b\u95f4\u200b\u76f8\u8fd1\u200b\u7a0b\u5ea6\u200b\u7684\u200b\u975e\u8d1f\u200b\u51fd\u6570\u200b\uff0cKL \u200b\u6563\u5ea6\u200b\u4e3a\u200b\u96f6\u5f53\u4e14\u200b\u4ec5\u200b\u5f53\u200b\u4e24\u4e2a\u200b\u5206\u5e03\u200b\u5b8c\u5168\u76f8\u540c\u200b.\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u8d70\u200b\u51fa\u6765\u200b\u7684\u200b\u8def\u200b\u8ddf\u200b\u8d70\u200b\u56de\u53bb\u200b\u7684\u200b\u8def\u200b\u662f\u200b\u5c3d\u53ef\u80fd\u200b\u76f8\u8fd1\u200b\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u8981\u200b\u6700\u5c0f\u5316\u200b KL \u200b\u6563\u5ea6\u200b.

        \u200b\u968f\u540e\u200b\u5c31\u662f\u200b\u6570\u5b66\u200b\u5904\u7406\u200b\uff0c\u200b\u53bb\u6389\u200b\u6700\u5c0f\u5316\u200b\u76ee\u6807\u200b\u4e2d\u200b\u7684\u200b\u65e0\u5173\u200b\u5e38\u6570\u200b\u9879\u200b.\u200b\u5e76\u200b\u5316\u7b80\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u4f7f\u200b\u4e4b\u200b\u53ef\u7528\u200b.

        \u200b\u8d85\u53c2\u200b\u8bbe\u7f6e\u200b\u4e2d\u200b\uff0c\u200b\u8981\u6c42\u200b\u8fb9\u7f18\u200b\u5206\u5e03\u200b\u76f8\u7b49\u200b\uff0c\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u8981\u6c42\u200b\u7ec8\u70b9\u200b\u7684\u200b\u5206\u5e03\u200b\u8981\u200b\u8fd1\u4f3c\u4e8e\u200b\u9ad8\u65af\u200b\uff0c\u200b\u90a3\u200b\u5c31\u662f\u200b\\(\\bar \\alpha\\)\u200b\u8fd1\u4e4e\u200b 0 \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e86\u200b.

        \u200b\u6709\u200b\u4e86\u200b\u4e0a\u8ff0\u200b\u7684\u200b\u94fa\u57ab\u200b\uff0c\u200b\u6211\u200b\u8ba4\u4e3a\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b\u7684\u200b\u8109\u7edc\u200b\u662f\u200b\u76f8\u5f53\u200b\u6e05\u6670\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fdb\u5165\u200b\u4e0b\u200b\u4e00\u7bc7\u200b.

        \u200b\u7b2c\u4e09\u7bc7\u200b\u7684\u200b\u524d\u9762\u200b\u4e00\u5927\u90e8\u5206\u200b\u90fd\u200b\u8ddf\u200b\u7b2c\u4e00\u7bc7\u200b\u5b8c\u5168\u200b\u4e00\u6837\u200b\uff0c\u200b\u4f46\u200b\u5230\u200b\u4e86\u200b\u8d1d\u53f6\u65af\u200b\u7684\u200b\u90e8\u5206\u200b\uff0c\u200b\u5f00\u59cb\u200b\u6709\u200b\u4e86\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u77e5\u9053\u200b\uff0c\u200b\u5728\u200b DDPM \u200b\u4e2d\u200b\uff0c\\(p(x_{t-1}|x_t) = p(x_{t-1}|x_t\uff0cx_0)\\)\uff0c\u200b\u56e0\u4e3a\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u9a6c\u5c14\u53ef\u592b\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u200b\u4ec5\u200b\u4e0e\u200b\u524d\u200b\u4e00\u200b\u72b6\u6001\u200b\u6709\u5173\u200b\uff0c\u200b\u800c\u200b\u4e0e\u200b\u66f4\u200b\u524d\u200b\u7684\u200b\u72b6\u6001\u200b\u65e0\u5173\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u6210\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u77e5\u9053\u200b 500 \u200b\u6b65\u5230\u200b\u54ea\u91cc\u200b\u4e86\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u7ed9\u5b9a\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u80fd\u200b\u6709\u200b 501 \u200b\u6b65\u200b\u7684\u200b\u5206\u5e03\u200b\uff0c\u200b\u7b2c\u200b 0-499 \u200b\u6b65\u200b\uff0c\u200b\u7ed9\u200b\u4e0d\u200b\u7ed9\u200b\u90fd\u200b\u65e0\u6240\u8c13\u200b\uff0c\u200b\u4e0d\u200b\u6539\u53d8\u200b\u5206\u5e03\u200b\uff0c\u200b\u4f46\u662f\u200b\u5f15\u5165\u200b\u4e86\u200b\u8d77\u70b9\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u662f\u200b\u53ef\u4ee5\u200b\u4ece\u200b\u8d77\u70b9\u200b\u76f4\u63a5\u200b\u63a8\u200b\\(x_t\uff0cx_{t-1}\\)\u200b\u7684\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u8ba9\u200b\u6211\u4eec\u200b\u7684\u200b\u8d1d\u53f6\u65af\u200b\u516c\u5f0f\u200b\u4e2d\u200b\u8bb8\u591a\u200b\u9879\u200b\u6210\u4e3a\u200b\u5df2\u77e5\u200b.

        \u200b\u968f\u540e\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e00\u8def\u200b\u63a8\u5bfc\u200b\u51fa\u200b\u635f\u5931\u200b\u51fd\u6570\u200b.\u200b\u6ce8\u610f\u200b\uff0c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u63a8\u5bfc\u200b\u6d41\u7a0b\u200b\u4e0b\u200b\\(x_0\\)\u200b\u7ed9\u5b9a\u200b\uff0c\u200b\u6211\u4eec\u200b\u80fd\u200b\u76f4\u63a5\u200b\u5f97\u5230\u200b\u5f80\u56de\u200b\u8d70\u200b\u7684\u200b\u65b9\u5411\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u552f\u4e00\u200b\u9700\u8981\u200b\u8bad\u7ec3\u200b\u7684\u200b\u662f\u200b\u6a21\u578b\u200b\u731c\u200b\u539f\u70b9\u200b\u7684\u200b\u80fd\u529b\u200b\uff0c\u200b\u800c\u200b\u8fd9\u200b\u4e00\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff0c\u200b\u6b63\u5982\u200b\u63a8\u5bfc\u200b\u51fa\u6765\u200b\u7684\u200b\u90a3\u6837\u200b\uff0c\u200b\u662f\u200b\u8ddf\u200b\u524d\u9762\u200b\u51e0\u4e2a\u200b\u89c6\u89d2\u200b\u4e00\u6837\u200b\u7684\u200b.

        \u200b\u5230\u200b\u4e86\u200b\u9884\u4f30\u200b\u4fee\u6b63\u200b\u4e00\u8282\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u884c\u4e3a\u200b\u6709\u200b\u53ef\u4ee5\u200b\u88ab\u200b\u89e3\u91ca\u200b\u4e3a\u200b\uff0c\u200b\u5148\u731c\u200b\u51fa\u200b\u4e00\u4e2a\u200b\u8d77\u70b9\u200b\uff0c\u200b\u5f80\u56de\u200b\u8d70\u200b\uff0c\u200b\u5e76\u200b\u901a\u8fc7\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u4fee\u6b63\u200b\u8d77\u70b9\u200b\uff0c\u200b\u7136\u540e\u200b\u8d70\u200b\u4e0b\u200b\u4e00\u6b21\u200b\uff0c\u200b\u8fd9\u6837\u200b\u6211\u4eec\u200b\u8d77\u70b9\u200b\u731c\u200b\u7684\u200b\u8d8a\u6765\u8d8a\u200b\u51c6\u200b\uff0c\u200b\u56de\u5230\u200b\u8d77\u70b9\u200b\u7684\u200b\u80fd\u529b\u200b\u4e5f\u200b\u8d8a\u6765\u8d8a\u200b\u5f3a\u200b\u4e86\u200b.

        \u200b\u6b64\u5904\u200b\u7684\u200b\u7b2c\u4e09\u79cd\u200b\u7406\u89e3\u200b\u662f\u200b\u4e0e\u200b\u540e\u6765\u200b\u7684\u200b DDIM \u200b\u6709\u200b\u5f88\u200b\u5f3a\u200b\u7684\u200b\u5173\u8054\u6027\u200b\u7684\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b\u6211\u4eec\u200b\u5229\u7528\u200b\u4e86\u200b\u8d1d\u53f6\u65af\u200b\u516c\u5f0f\u200b\u4e4b\u540e\u200b\u5176\u5b9e\u200b\u53ea\u200b\u9700\u8981\u200b\u5404\u4e2a\u200b\u65f6\u95f4\u200b\u70b9\u200b\u5bf9\u4e8e\u200b\\(x_0\\)\u200b\u7684\u200b\u5206\u5e03\u200b\u800c\u200b\u4e0d\u200b\u9700\u8981\u200b\u5176\u200b\u5bf9\u4e8e\u200b\u524d\u200b\u4e00\u4e2a\u200b\u65f6\u95f4\u200b\u70b9\u200b\u7684\u200b\u5206\u5e03\u200b\u4e86\u200b\uff0c\u200b\u4f46\u662f\u200b\u8981\u200b\u6ce8\u610f\u200b\uff0c\u200b\u6211\u4eec\u200b\u4ece\u540e\u200b\u5f80\u524d\u200b\u63a8\u200b\u4ecd\u7136\u200b\u9700\u8981\u200b\u4e00\u6b65\u200b\u4e00\u6b65\u200b\u8d70\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u4e00\u6b65\u200b\u8d70\u200b\u5b8c\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u9000\u5316\u200b\u56de\u200b VAE \u200b\u4e86\u200b.

        "},{"location":"blog/","title":"Blog","text":""},{"location":"blog/Minisql/","title":"Minisql","text":"

        \u200b\u7ea6\u200b 544 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        Abstract

        Minisql \u200b\u662f\u200b\u8ba1\u7b97\u673a\u79d1\u5b66\u200b\u4e0e\u200b\u6280\u672f\u200b\u4e13\u4e1a\u200b\u5927\u4e8c\u200b\u6625\u590f\u200b\u7684\u200b\u5fc5\u4fee\u8bfe\u200b\u6570\u636e\u5e93\u7cfb\u7edf\u200b\u590f\u200b\u5b66\u671f\u200b\u7684\u200b\u5927\u7a0b\u200b.\u200b\u672c\u200b\u535a\u5ba2\u200b\u8bb0\u5f55\u200b\u4e86\u200b\u672c\u4eba\u200b\u5b9e\u73b0\u200b\u8fd9\u4e00\u200b\u6846\u67b6\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u9047\u5230\u200b\u7684\u200b\u95ee\u9898\u200b\u548c\u200b\u611f\u60f3\u200b.

        "},{"location":"blog/Minisql/#_1","title":"\u7b80\u4ecb","text":"

        \u200b\u5f88\u200b\u65e9\u5c31\u200b\u542c\u8bf4\u200b\u4e86\u200b Minisql \u200b\u7684\u200b\u5927\u540d\u200b\u4e86\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u8fd9\u4e2a\u200b\u5927\u4e8c\u200b\u6625\u590f\u200b\u5230\u6765\u200b\u7684\u200b\u636e\u8bf4\u200b\u975e\u5e38\u200b\u5e9e\u5927\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5de5\u7a0b\u200b\uff0c\u200b\u6211\u200b\u5fc3\u91cc\u200b\u5176\u5b9e\u200b\u662f\u200b\u65e2\u200b\u975e\u5e38\u200b\u5bb3\u6015\u200b\u53c8\u200b\u975e\u5e38\u200b\u671f\u5f85\u200b\u7684\u200b\uff0c\u200b\u4e4b\u524d\u200b\u505a\u200b\u7684\u200b\u5927\u7a0b\u200b\u603b\u200b\u611f\u89c9\u200b\u7f3a\u200b\u90a3\u4e48\u200b\u70b9\u200b\u610f\u601d\u200b\uff0c\u200b\u4f46\u200b\u5230\u200b\u8fd9\u91cc\u200b\u5c31\u200b\u611f\u89c9\u200b\u5473\u200b\u5bf9\u200b\u4e86\u200b\uff08\u200b\u7b11\u200b\u54ed\u200b\uff09.

        \u200b\u8fd9\u200b\u7ed9\u200b\u9879\u76ee\u200b\u662f\u200b\u53ef\u4ee5\u200b\u7ec4\u961f\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5355\u5237\u200b\u7684\u200b\uff0c\u200b\u6211\u200b\u9009\u62e9\u200b\u4e86\u200b\u5355\u5237\u200b\u5b8c\u6210\u200b\uff0c\u200b\u4e2a\u4eba\u200b\u8ba4\u4e3a\u200b\u5de5\u4f5c\u91cf\u200b\u662f\u200b\u5355\u4eba\u200b\u53ef\u4ee5\u200b\u627f\u62c5\u200b\u7684\u200b\uff0c\u200b\u4e5f\u200b\u6bd4\u8f83\u200b\u63a8\u8350\u200b\u5355\u4eba\u200b\u5b8c\u6210\u200b.\u200b\u4e00\u662f\u200b\u5f88\u591a\u200b\u6a21\u5757\u200b\u53ea\u6709\u200b\u81ea\u5df1\u200b\u4e0a\u200b\u624b\u5199\u200b\u8fc7\u200b\u4e86\u200b\uff0cdebug \u200b\u8fc7\u200b\u4e86\u200b\u624d\u200b\u6709\u200b\u771f\u5207\u200b\u7684\u200b\u611f\u53d7\u200b\uff1b\u200b\u4e8c\u662f\u200b\u6211\u200b\u89c9\u5f97\u200b\u5f88\u9177\u200b\uff01\ud83d\ude0e

        "},{"location":"blog/Minisql/#_2","title":"\u6536\u83b7","text":"
        1. \u200b\u7ec3\u4e60\u200b\u5de9\u56fa\u200b\u4e86\u200b oop \u200b\u548c\u200b db\uff0c\u200b\u524d\u8005\u200b\u662f\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u9879\u76ee\u200b\u90fd\u200b\u662f\u200b\u7528\u200b C++\u200b\u5b9e\u73b0\u200b\u7684\u200b.\u200b\u540e\u8005\u200b\u662f\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u9879\u76ee\u200b\u5f88\u591a\u200b\u90e8\u5206\u200b\u90fd\u200b\u662f\u200b\u628a\u200b\u6570\u636e\u5e93\u200b\u7406\u8bba\u200b\u5e94\u5f53\u200b\u7528\u5230\u200b\u5b9e\u8df5\u200b\u4e2d\u200b.
        2. \u200b\u719f\u6089\u200b\u4e86\u200b\u5927\u200b\u9879\u76ee\u200b\u7684\u200b\u6846\u67b6\u200b\uff0c\u200b\u4ee5\u53ca\u200b git\uff0ccmake \u200b\u7b49\u200b\u5de5\u5177\u200b\uff0c\u200b\u90fd\u200b\u662f\u200b\u5f88\u200b\u5b9e\u7528\u200b\u7684\u200b\u5de5\u5177\u200b\uff08\u200b\u5f53\u7136\u200b\u5728\u200b\u9879\u76ee\u200b\u4e2d\u200b\u6211\u4eec\u200b\u53ea\u200b\u4fdd\u6301\u200b\u6700\u4f4e\u200b\u9650\u5ea6\u200b\u7684\u200b\u4f7f\u7528\u200b\u4e5f\u200b\u662f\u200b\u53ef\u4ee5\u200b\u7684\u200b\uff0c\u200b\u4f46\u662f\u200b\u611f\u5174\u8da3\u200b\u7684\u8bdd\u200b\u5b8c\u5168\u200b\u53ef\u4ee5\u200b\u8d81\u200b\u8fd9\u4e2a\u200b\u673a\u4f1a\u200b\u719f\u6089\u8d77\u6765\u200b\uff09
        3. \u200b\u719f\u6089\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u8c03\u8bd5\u200b\u7684\u200b\u6280\u5de7\u200b\u548c\u200b\u597d\u200b\u7528\u200b\u7684\u200b\u6027\u80fd\u200b\u5206\u6790\u200b\u5de5\u5177\u200b
        4. \u200b\u53c8\u200b\u88ab\u200b\u642d\u200b\u73af\u5883\u200b\u6298\u78e8\u200b\u4e86\u200b\u4e00\u904d\u200b\uff0c\u200b\u6297\u9006\u6027\u200b\u63d0\u9ad8\u200b\u4e86\u200b\uff01\ud83d\ude05
        "},{"location":"blog/Minisql/#_3","title":"\u603b\u7eb2","text":"

        \u200b\u8fd9\u90e8\u5206\u200b\u535a\u5ba2\u200b\u7684\u200b\u7ec4\u7ec7\u200b\u5f62\u5f0f\u200b\u5927\u4f53\u200b\u8fd8\u662f\u200b\u6309\u7167\u200b\u9879\u76ee\u200b\u4e3b\u9875\u200b\u4e0a\u200b\u533a\u5206\u200b\u7684\u200b\u6a21\u5757\u200b\u987a\u5e8f\u200b\u6765\u200b\u7684\u200b\uff0c\u200b\u5728\u200b\u6700\u200b\u5f00\u5934\u200b\u8fd8\u6709\u200b\u4e00\u4e2a\u200b\u642d\u5efa\u200b\u73af\u5883\u200b\u7684\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b.

        \u200b\u5728\u200b\u5177\u4f53\u200b\u5b9e\u73b0\u200b\u7684\u200b\u5404\u200b\u90e8\u5206\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u200b\u4e3b\u8981\u200b\u662f\u200b\u4f1a\u200b\u4ecb\u7ecd\u200b\u8fd9\u4e9b\u200b\u6a21\u5757\u200b\u91cc\u9762\u200b\u5404\u4e2a\u200b\u7ed3\u6784\u200b\u3001\u200b\u51fd\u6570\u200b\u5728\u200b\u4ec0\u4e48\u200b\u60c5\u5883\u200b\u4e0b\u200b\u5e94\u8be5\u200b\u88ab\u200b\u8c03\u7528\u200b\uff0c\u200b\u88ab\u200b\u8c03\u7528\u200b\u6765\u200b\u505a\u200b\u4ec0\u4e48\u200b\u4e8b\u200b\uff0c\u200b\u6574\u4e2a\u200b\u5927\u200b\u7684\u200b\u6a21\u5757\u200b\u5728\u200b\u505a\u200b\u4ec0\u4e48\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5982\u4f55\u200b\u4f18\u5316\u200b.

        \u200b\u53ef\u4ee5\u200b\u8bf4\u200b\u548c\u200b\u9879\u76ee\u200b\u4e3b\u9875\u200b\u4e0a\u200b\u7684\u200b\u5185\u5bb9\u200b\u5728\u200b\u503e\u5411\u6027\u200b\u4e0a\u200b\u6709\u200b\u4e00\u4e9b\u200b\u91cd\u53e0\u200b\uff0c\u200b\u4f46\u200b\u4eba\u5bb6\u200b\u8bf4\u200b\u8fc7\u200b\u4e86\u200b\u6211\u200b\u5c31\u200b\u5c3d\u91cf\u200b\u4e0d\u518d\u200b\u91cd\u590d\u200b\u4e86\u200b\uff0c\u200b\u4e3b\u8981\u200b\u662f\u4ece\u200b\u4e00\u4e2a\u200b\u5b9e\u73b0\u200b\u8005\u200b\u7684\u200b\u89d2\u5ea6\u200b\u6765\u8bb2\u200b\u56f0\u60d1\u200b\u548c\u200b\u7406\u89e3\u200b\u7684\u200b.

        "},{"location":"blog/Minisql/minisql_part0/","title":"Minisql Environment Configurations","text":"

        \u200b\u7ea6\u200b 602 \u200b\u4e2a\u200b\u5b57\u200b 24 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        Abstract

        \u200b\u867d\u7136\u200b\u5df2\u7ecf\u200b\u642d\u51fa\u200b\u80fd\u200b\u7528\u200b\u7684\u200b\u73af\u5883\u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u8fd8\u662f\u200b\u5f88\u96be\u200b\u4e0d\u200b\u5728\u200b\u5f00\u5934\u200b\u653e\u200b\u4e0a\u200b\u4e09\u4e2a\u200b\u6d41\u6c57\u200b\u9ec4\u8c46\u200b\u6765\u200b\u8868\u8fbe\u200b\u6211\u200b\u5bf9\u200b\u642d\u200b\u73af\u5883\u200b\u8fd9\u4ef6\u200b\u4e8b\u200b\u7684\u200b\u65e0\u8bed\u200b\ud83d\ude05\ud83d\ude05\ud83d\ude05

        "},{"location":"blog/Minisql/minisql_part0/#_1","title":"\u521d\u8bd5\u200b\uff1a\u200b\u672c\u5730\u200b\u8fd0\u884c","text":"

        \u200b\u672c\u4eba\u200b\u76ee\u524d\u200b\u4f7f\u7528\u200b\u7684\u200b\u7684\u200b MacBookPro\uff0cMacOS Ventura13.3.1. \u200b\u76f4\u8bf4\u200b\u7684\u8bdd\u200b\uff0c\u200b\u672c\u5730\u200b\u8fd0\u884c\u200b\u7684\u200b\u5c1d\u8bd5\u200b\u5931\u8d25\u200b\u4e86\u200b\ud83d\ude05

        "},{"location":"blog/Minisql/minisql_part0/#cmake","title":"Cmake","text":"

        \u200b\u7b2c\u4e00\u4e2a\u200b\u5751\u200b\u662f\u200b cmake \u200b\u9636\u6bb5\u200b \u200b\u6709\u200b\u5982\u4e0b\u200b\u7684\u200b\u7ecf\u5178\u200b\u62a5\u9519\u200b\uff08\u200b\u7ecf\u5178\u200b\u662f\u56e0\u4e3a\u200b\u6211\u89c1\u200b\u8fc7\u200b\u4ed6\u200b\u65e0\u6570\u6b21\u200b\u4e86\u200b\uff09\uff1a

        cmake ..                                                                                                                                                                                       \u2500\u256f\nCMake Error at /Users/xxx/opt/anaconda3/lib/cmake/GTest/GTestTargets.cmake:37 (message):\n  Some (but not all) targets in this export set were already defined.\n\n  Targets Defined: GTest::gtest;GTest::gtest_main\n\n  Targets not yet defined: GTest::gmock;GTest::gmock_main\n\nCall Stack (most recent call first):\n  /Users/xxx/opt/anaconda3/lib/cmake/GTest/GTestConfig.cmake:32 (include)\n  thirdparty/glog/CMakeLists.txt:71 (find_package)\n

        \u200b\u6211\u200b\u4e0d\u200b\u61c2\u200b cmake\uff0c\u200b\u4e5f\u200b\u641c\u200b\u4e0d\u5230\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u611f\u89c9\u200b\u53ef\u80fd\u200b\u8ddf\u200b\u7248\u672c\u200b\u517c\u5bb9\u200b\u5565\u200b\u7684\u200b\u6709\u5173\u200b\uff08\u200b\u6709\u200b\u77e5\u9053\u200b\u7684\u200b\u5927\u4f6c\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5728\u200b\u8bc4\u8bba\u200b\u533a\u91cc\u200b\u8bf4\u200b\u8bf4\u200b\uff0c\u200b\u611f\u8c22\u200b\uff01\uff09\u200b\u4e0d\u8fc7\u200b\u6211\u200b\u770b\u5230\u200b\u4e86\u200b\u62a5\u9519\u200b\u8def\u5f84\u200b\u4e0a\u200b\u4e86\u200b anaconda3\uff0c\u200b\u60f3\u200b\u8d77\u6765\u200b\u6211\u200b\u7ec8\u7aef\u200b\u7684\u200b\u73af\u5883\u200b\u8fd8\u662f\u200b conda base\uff0c\u200b\u6240\u4ee5\u200b\u6211\u200b\u4e00\u4e2a\u200bconda deactivae\u200b\u540e\u200b\uff0c\u200b\u91cd\u5efa\u200b build \u200b\u76ee\u5f55\u200b\uff0c\u200b\u518d\u200b cmake \u200b\u5c31\u200b\u6ca1\u6709\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u4e86\u200b.

        \u200b\u4f46\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u53ea\u662f\u200b\u88ab\u200b\u6682\u65f6\u200b\u4fee\u590d\u200b\u4e86\u200b\u7b97\u662f\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u200b\u8c03\u7528\u200b VSCode \u200b\u7684\u200b cmake \u200b\u63d2\u4ef6\u200b\u5565\u200b\u7684\u200b\u8fd8\u662f\u200b\u4f1a\u200b\u8fd9\u6837\u200b\uff0c\u200b\u6211\u200b\u4e5f\u200b\u6ca1\u200b\u627e\u200b\u51fa\u6765\u200b\u8fd9\u91cc\u200b\u7684\u200b\u8981\u200b\u600e\u4e48\u200b\u89e3\u51b3\u200b.

        "},{"location":"blog/Minisql/minisql_part0/#make","title":"Make","text":"

        Cmake \u200b\u901a\u200b\u4e86\u200b Make \u200b\u53c8\u200b\u4e0d\u901a\u200b\ud83d\ude05 \u200b\u62a5\u9519\u200b\u5982\u4e0b\u200b\uff1a

        In file included from /Users/xxx/Desktop/minisql/src/executor/execute_engine.cpp:1:\nIn file included from /Users/xxx/Desktop/minisql/src/include/executor/execute_engine.h:5:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/string:551:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/string_view:222:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/algorithm:1851:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__algorithm/ranges_sample.h:13:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__algorithm/sample.h:18:\n/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__random/uniform_int_distribution.h:162:5: error: static_assert failed due to requirement '__libcpp_random_is_valid_inttype<char>::value' \"IntType must be a supported integer type\"\n    static_assert(__libcpp_random_is_valid_inttype<_IntType>::value\uff0c \"IntType must be a supported integer type\");\n    ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/Users/xxx/Desktop/minisql/test/include/utils/utils.h:24:41: note: in instantiation of template class 'std::uniform_int_distribution<char>' requested here\n    std::uniform_int_distribution<char> uniform_dist(33\uff0c 122);\n
        \u200b\u770b\u8d77\u6765\u200b\u662f\u200b\u6846\u67b6\u200b\u91cc\u200b\u5b9e\u4f8b\u200b\u5316\u200b\u6a21\u677f\u200b\u7684\u200b\u65f6\u5019\u200b\u7528\u200b\u7684\u200b\u7684\u200b char \u200b\u7c7b\u578b\u200b\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u91cc\u200b\u4e0d\u8ba9\u200b\u7528\u200b char \u200b\u7c7b\u578b\u200b\uff0c\u200b\u90a3\u200b\u600e\u4e48\u529e\u200b\uff0c\u200b\u8981\u200b\u6211\u200b\u53bb\u200b\u6539\u200b\u6846\u67b6\u200b\u5417\u200b\uff0c\u200b\u8fd9\u200b\u73a9\u610f\u200b\u4e07\u4e00\u200b\u8026\u5408\u200b\u7684\u200b\u5f88\u200b\u7d27\u200b\u6211\u200b\u7684\u200b\u7406\u89e3\u200b\u6210\u672c\u200b\u52a0\u200b\u4fee\u6539\u200b\u6210\u672c\u200b\u4f30\u8ba1\u200b\u90fd\u200b\u591f\u200b\u6211\u200b\u53d7\u200b\u7684\u200b\u4e86\u200b.\u200b\u8fd9\u91cc\u200b\u7684\u200b\u4e24\u4e2a\u200b\u9009\u62e9\u200b\u4e00\u4e2a\u200b\u662f\u200b\u6362\u4e2a\u200b SDK \u200b\u7248\u672c\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u4e0d\u200b\u77e5\u9053\u200b\u80fd\u200b\u4e0d\u80fd\u200b\u8d77\u6548\u200b\uff0c\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u5c31\u662f\u200b\u8dd1\u200b\u8def\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u200b\u8fd8\u6709\u200b\u4e00\u53f0\u200b Windows \u200b\u6e38\u620f\u200b\u672c\u200b\uff0c\u200b\u6240\u4ee5\u200b\u679c\u65ad\u200b\u6da6\u200b\u4e86\u200b.

        "},{"location":"blog/Minisql/minisql_part0/#wsl2","title":"\u4e8c\u8bd5\u200b\uff1aWSL2","text":"

        \u200b\u6211\u200b\u7684\u200b Win \u200b\u672c\u200b\u65e9\u5c31\u200b\u88c5\u200b\u8fc7\u200b WSL2 \u200b\u4e86\u200b\uff0c\u200b\u4e4b\u524d\u200b\u8dd1\u200b\u4e00\u4e9b\u200b\u6a21\u578b\u200b\u7684\u200b\u65f6\u5019\u200b\u628a\u200b ssh \u200b\u5565\u200b\u7684\u200b\u4e5f\u200b\u914d\u597d\u200b\u4e86\u200b\uff08\u200b\u4e0d\u8fc7\u200b\u7389\u6e56\u200b\u53ea\u80fd\u200b\u7528\u200b\u52a8\u6001\u200b IP \u200b\u6211\u200b\u4e09\u5929\u4e24\u5934\u200b\u5c31\u200b\u5f97\u200b\u6362\u200b\u4e00\u4e0b\u200b\ud83d\ude05\uff09\uff0c\u200b\u6240\u4ee5\u200b\u6210\u672c\u200b\u5176\u5b9e\u200b\u4e0d\u200b\u5927\u200b. \u200b\u8fd9\u91cc\u200b\u9047\u5230\u200b\u4e24\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u4e00\u662f\u200b cmake \u200b\u9636\u6bb5\u200b\u8ddf\u200b\u4e0a\u9762\u200b\u4e00\u6837\u200b\u7684\u200b\u95ee\u9898\u200b\uff0c\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u8fd8\u662f\u200bconda deactivate\uff0c\u200b\u4e8c\u662f\u200b\u63d0\u793a\u200b\u6ca1\u6709\u200b gflag \u200b\u6a21\u5757\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u6700\u200b\u7b80\u5355\u200b\uff0c\u200b\u76f4\u63a5\u200b\u5b89\u88c5\u200b\u4e00\u4e0b\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b

        sudo apt-get install gflags\n

        \u200b\u7136\u540e\u200b\u5c31\u200b\u80fd\u200b\u8dd1\u200b\u4e86\u200b\uff0c\u200b\u867d\u7136\u200b\u5728\u200b\u8fd9\u91cc\u200b\u7528\u200b\u5404\u79cd\u200b Cmake \u200b\u63d2\u4ef6\u200b\u4e00\u7c7b\u200b\u7684\u200b\u8fd8\u662f\u200b\u6ca1\u200b\u4e00\u4e2a\u200b\u80fd\u200b\u8dd1\u200b\u7684\u200b\uff08\u200b\u62a5\u200b Cmake \u200b\u9636\u6bb5\u200b\u7684\u200b\u90a3\u4e2a\u200b\u9519\u200b\uff09\uff0c\u200b\u6211\u200b\u8bd5\u56fe\u7528\u200b Clion \u200b\u8fdc\u7a0b\u200b\u5f00\u53d1\u200b\u7ed3\u679c\u200b\u540e\u7aef\u200b\u4e5f\u200b\u5d29\u574f\u200b\u4e86\u200b\u5f00\u200b\u4e0d\u200b\u8d77\u6765\u200b\uff0c\u200b\u5404\u79cd\u200b\u4e8b\u60c5\u200b\u641e\u200b\u5f97\u200b\u6211\u200b\u5f88\u70e6\u200b\uff0c\u200b\u4f46\u200b\u603b\u7b97\u200b\u6709\u4e2a\u200b\u80fd\u200b\u7528\u200b\u7684\u200b VSCode + ssh + WSL2 \u200b\u7684\u200b\u65b9\u6848\u200b\u80fd\u200b\u8dd1\u200b\u4e86\u200b\uff0c\u200b\u4ed6\u200b\u7684\u200b\u4f18\u70b9\u200b\u662f\u200b\u80fd\u200b\u8dd1\u200b\uff0c\u200b\u7f3a\u70b9\u200b\u662f\u200b\u80fd\u200b\u8dd1\u200b\u7684\u200b\u8865\u96c6\u200b\uff0c\u200b\u4f46\u200b\u6211\u200b\u5b9e\u5728\u200b\u6298\u817e\u200b\u4e0d\u52a8\u200b\u4e86\u200b\u5c31\u200b\u5148\u200b\u8fd9\u6837\u200b\u4e86\u200b.

        "},{"location":"blog/Minisql/minisql_part1/","title":"Minisql#1 Disk and BufferPoolManager","text":"

        \u200b\u7ea6\u200b 475 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        Abstract

        \u200b\u8fd9\u200b\u4e00\u90e8\u5206\u200b\u4e3b\u8981\u200b\u8d1f\u8d23\u200b\u4e0e\u200b\u5185\u5b58\u200b\u78c1\u76d8\u7a7a\u95f4\u200b\u7533\u8bf7\u200b\u91ca\u653e\u200b\u7b49\u200b\u6253\u4ea4\u9053\u200b\uff0c\u200b\u5728\u200b\u9879\u76ee\u200b\u4e2d\u200b\u7684\u200b\u5730\u4f4d\u200b\u5927\u6982\u200b\u76f8\u5f53\u4e8e\u200bnew delete\uff0c\u200b\u6240\u4ee5\u200b\u8fd9\u200b\u4e00\u90e8\u5206\u200b\u5728\u200b\u540e\u7eed\u200b\u4f1a\u200b\u88ab\u200b\u9891\u7e41\u200b\u8c03\u7528\u200b\uff0c\u200b\u4e5f\u200b\u662f\u200b\u76f4\u63a5\u200b\u4e0e\u200b\u78c1\u76d8\u200b IO \u200b\u6253\u4ea4\u9053\u200b\u7684\u200b\uff0c\u200b\u5b9e\u73b0\u200b\u65e2\u200b\u8981\u6c42\u200b\u6b63\u786e\u200b\u53c8\u200b\u8981\u6c42\u200b\u6548\u7387\u200b

        "},{"location":"blog/Minisql/minisql_part1/#_1","title":"\u52a8\u673a","text":"

        \u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u624b\u5934\u4e0a\u200b\u73b0\u5728\u200b\u6709\u200b 65536\uff084096*16\uff09\u200b\u9875\u200b\uff08\u200b\u4e00\u9875\u200b\u4e3a\u200b 4096Bytes\uff09\u200b\u7684\u200b\u6570\u636e\u200b\u9700\u8981\u200b\u5b58\u5728\u200b\u78c1\u76d8\u200b\u4e0a\u200b\uff0c\u200b\u6700\u200b\u81ea\u7136\u200b\u7684\u200b\u60f3\u6cd5\u200b\u5c31\u662f\u200b\u6570\u7ec4\u200b\uff0c\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u53d8\u957f\u200b\u6570\u7ec4\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b\u6587\u4ef6\u200b\u5c3e\u200b\u7ee7\u7eed\u200b\u5199\u5165\u200b\u65b0\u200b\u7684\u200b\u9875\u200b.

        \u200b\u4f46\u662f\u200b\uff0c\u200b\u6570\u636e\u5e93\u200b\u4f1a\u200b\u5bf9\u200b\u6570\u636e\u200b\u8fdb\u884c\u200b\u5220\u9664\u200b.\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u5206\u914d\u200b\u51fa\u53bb\u200b\u7b2c\u200b 0-9 \u200b\u9875\u200b\u7528\u4e8e\u200b\u8bb0\u5f55\u200b\u67d0\u4e2a\u200b\u8868\u200b\uff0c\u200b\u7136\u540e\u200b\u5220\u9664\u200b\u4e86\u200b\u5176\u4e2d\u200b\u7b2c\u200b 2\uff0c4\uff0c6 \u200b\u9875\u200b\u7684\u200b\u6570\u636e\u200b\uff0c\u200b\u90a3\u4e48\u200b\u4e0b\u6b21\u200b\u518d\u200b\u8bf7\u6c42\u200b\u9875\u9762\u200b\u6765\u200b\u5b58\u50a8\u200b\u4fe1\u606f\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7528\u200b\u8fd9\u200b\u7a7a\u95f2\u200b\u7684\u200b\u4e09\u9875\u200b\u6765\u200b\u5b58\u50a8\u200b.\u200b\u4e0d\u200b\u8fd9\u6837\u200b\u505a\u200b\uff0c\u200b\u90a3\u4e48\u200b\u9762\u5bf9\u200b\u7533\u8bf7\u200b 100 \u200b\u9875\u200b\uff0c\u200b\u5220\u200b 100 \u200b\u9875\u200b\uff0c\u200b\u7533\u8bf7\u200b 100 \u200b\u9875\u200b\uff0c\u200b\u5220\u200b 100 \u200b\u9875\u200b\u8fd9\u6837\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u672c\u6765\u200b\u53ea\u8981\u200b 100 \u200b\u9875\u200b\u7684\u200b\u7a7a\u95f4\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b9e\u73b0\u200b\uff0c\u200b\u5b9e\u9645\u4e0a\u200b\u5374\u4f1a\u82b1\u200b\u7684\u200b\u591a\u5f97\u591a\u200b.

        \u200b\u8fd9\u200b\u5c31\u200b\u5f15\u51fa\u200b\u4e86\u200b BitMap\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u62ff\u51fa\u200b\u4e00\u9875\u200b\u6765\u200b\uff0c\u200b\u628a\u200b\u8fd9\u200b\u4e00\u9875\u200b 4096 \u200b\u4e2a\u200b Byte\uff0c\u200b\u5373\u200b 32768 \u200b\u4e2a\u200b bit\uff0c\u200b\u6bcf\u4e2a\u200b bit \u200b\u7684\u200b 0 \u200b\u6307\u793a\u200b\u8be5\u9875\u200b\u672a\u200b\u88ab\u200b\u4f7f\u7528\u200b\uff0c1 \u200b\u6307\u793a\u200b\u5df2\u7ecf\u200b\u88ab\u200b\u4f7f\u7528\u200b\uff0c\u200b\u8fd9\u6837\u200b\u8fd9\u200b\u4e00\u9875\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7ba1\u7406\u200b\u5176\u540e\u200b\u7684\u200b 32768 \u200b\u9875\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u6bcf\u6b21\u200b\u90fd\u200b\u73b0\u5728\u200b\u5176\u4e2d\u200b\u627e\u200b 0\uff0c\u200b\u6ca1\u6709\u200b 0 \u200b\u4e86\u200b\uff0c\u200b\u624d\u200b\u53bb\u200b\u65b0\u5f00\u200b\u4e00\u9875\u200b.

        \u200b\u5f53\u7136\u200b\u5b9e\u9645\u4e0a\u200b\u8fd9\u200b\u4e00\u9875\u200b\u7684\u200b 4096B \u200b\u6211\u4eec\u200b\u4e0d\u4f1a\u200b\u90fd\u200b\u62ff\u200b\u53bb\u200b\u7528\u6765\u200b\u8bb0\u5f55\u200b\u4f7f\u7528\u200b\u60c5\u51b5\u200b\uff0c\u200b\u8fd8\u6709\u200b\u4e00\u4e9b\u200b\u5143\u200b\u6570\u636e\u200b\u6bd4\u5982\u200b\u8bb0\u5f55\u200b\u76ee\u524d\u200b\u4ee5\u200b\u5360\u7528\u200b\u7684\u200b\u6709\u200b 10 \u200b\u9875\u200b\u7b49\u7b49\u200b.

        \u200b\u4f46\u200b\u6ce8\u610f\u200b\u7b2c\u4e00\u6bb5\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u6709\u200b 65536 \u200b\u9875\u200b\u8981\u200b\u5b58\u200b\uff0c\u200b\u4e00\u9875\u200b BitMap \u200b\u4e0d\u591f\u200b\uff0c\u200b\u90a3\u200b\u5c31\u200b\u591a\u6765\u200b\u51e0\u4e2a\u200b.\u200b\u6211\u4eec\u200b\u628a\u200b 1 \u200b\u9875\u200b BitMap \u200b\u548c\u200b\u540e\u9762\u200b\u7684\u200b\uff08\u200b\u5927\u6982\u200b\uff0932767 \u200b\u9875\u200b\u79f0\u4e3a\u200b\u4e00\u6bb5\u200b(extent)\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u4e24\u6bb5\u200b\u6765\u200b\u5b58\u50a8\u200b 65536 \u200b\u9875\u200b\uff0c\u200b\u5728\u200b\u6700\u200b\u524d\u9762\u200b\u6765\u4e2a\u200b Disk Meta Page \u200b\u6765\u200b\u7ba1\u7406\u200b\u6240\u6709\u200b\u9875\u200b.

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/","title":"\u8ba1\u7b97\u673a\u200b\u4f53\u7cfb\u7ed3\u6784\u200b - lab4 Cache","text":"

        Abstract

        \u200b\u4ecb\u7ecd\u200b\u4e00\u4e0b\u200b\u5b9e\u9a8c\u200b\u4e2d\u200b Cache \u200b\u8bbe\u8ba1\u200b\u7684\u200b\u601d\u60f3\u200b\uff0c\u200b\u4ece\u200b\u6a21\u5757\u200b\u62bd\u8c61\u200b\u7684\u200b\u5c42\u9762\u200b\u8bb2\u8bb2\u200b\u5404\u200b\u6a21\u5757\u200b\u7684\u200b\u529f\u80fd\u200b\u548c\u200b\u4ea4\u4e92\u200b\u7684\u200b\u903b\u8f91\u200b.

        \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

        \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

        \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

        \u200b\u672c\u6b21\u200b\u5b9e\u9a8c\u200b\u662f\u200b\u8981\u200b\u5b9e\u73b0\u200b\u4e00\u4e2a\u200b Cache\uff0c\u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u4f1a\u200b\u5b9e\u73b0\u200b\u4e00\u4e2a\u200b CMU(Cache Management Unit)\u200b\u6765\u200b\u5b8c\u6210\u200b CPU\uff0c Memory\uff0c Cache \u200b\u4e4b\u95f4\u200b\u7684\u200b\u4ea4\u4e92\u200b\u548c\u200b\u63a7\u5236\u200b\uff0c\u200b\u7ed3\u6784\u200b\u5982\u4e0b\u200b\uff1a

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#memory","title":"Memory","text":"

        \u200b\u5728\u200b\u672c\u200b\u5b9e\u9a8c\u200b\u4e2d\u200b Memory \u200b\u53ea\u200b\u4e0e\u200b CMU \u200b\u4ea4\u4e92\u200b.

        Memory \u200b\u4e0e\u200b CMU \u200b\u7684\u200b\u4ea4\u4e92\u200b\u53ea\u6709\u200b\u4e00\u79cd\u200b\uff1a

        • CMU \u200b\u628a\u200b\u8bfb\u5199\u200b\u9700\u8981\u200b\u7684\u200b\u5730\u5740\u200b\u548c\u200b\u6570\u636e\u200b\u7ed9\u200b Memory\uff0c Memory \u200b\u8fdb\u884c\u200b\u8bfb\u5199\u64cd\u4f5c\u200b\u7136\u540e\u200b\u8fd4\u56de\u200b\u6570\u636e\u200b\u7ed9\u200b CMU
        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#cache","title":"Cache","text":"

        Cache \u200b\u5185\u90e8\u200b\u7ef4\u62a4\u200b\u7740\u200b\u6240\u6709\u200b Cache line \u200b\u548c\u200b\u6807\u8bb0\u200b\u4f4d\u200b\uff0c\u200b\u5e76\u4e14\u200b\u4e0e\u200b CMU \u200b\u8fdb\u884c\u200b\u4ea4\u4e92\u200b\uff0c\u200b\u4e3b\u8981\u200b\u6709\u200b\u4e24\u79cd\u200b\uff1a

        • \u200b\u8fd4\u56de\u200b\u90e8\u5206\u200b\u63a7\u5236\u200b\u4fe1\u606f\u200b\u7ed9\u200b CMU\uff0c\u200b\u5305\u62ec\u200b
          • \u200b\u662f\u5426\u200b\u547d\u4e2d\u200b
          • \u200b\u88ab\u200b\u66ff\u6362\u200b\u7684\u200b Cache line \u200b\u662f\u5426\u200b\u6709\u6548\u200b\u4e14\u810f\u200b
          • \u200b\u88ab\u200b\u5199\u200b\u56de\u200b\u7684\u200b Cache line \u200b\u7684\u200b tag\uff08\u200b\u8fd9\u6837\u200b CMU \u200b\u624d\u80fd\u200b\u83b7\u5f97\u200b\u6b63\u786e\u200b\u7684\u200b\u5730\u5740\u200b\uff0c\u200b\u7136\u540e\u200b\u628a\u200b\u6570\u636e\u200b\u5199\u56de\u200b Memory\uff09
        • \u200b\u6267\u884c\u200b CMU \u200b\u8981\u6c42\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u5305\u62ec\u200b
          • load: \u200b\u4e5f\u200b\u5c31\u200b\u662f\u4ece\u200b\u547d\u4e2d\u200b\u7684\u200b(1)Cache line \u200b\u4e2d\u8bfb\u200b\u4fe1\u606f\u200b\u548c\u200b\u6807\u8bb0\u200b(LRU)\uff0c\u200b\u8fd4\u56de\u200b
          • edit: \u200b\u4e5f\u200b\u5c31\u662f\u200b\u5bf9\u200b\u547d\u4e2d\u200b\u7684\u200b Cache line \u200b\u8fdb\u884c\u200b\u4fee\u6539\u200b\u548c\u200b\u6807\u8bb0\u200b(LRU\uff0c dirty)\uff0c\u200b\u8fd4\u56de\u200b
          • store: \u200b\u5c06\u200b CMU \u200b\u7684\u200b\u7ed9\u200b\u7684\u200b\u6570\u636e\u200b\u66ff\u6362\u200b\u8fdb\u200b Cache line\uff0c\u200b\u5e76\u4e14\u200b\u6807\u8bb0\u200b(valid\uff0c dirty\uff0c tag)\uff0c \u200b\u8fd4\u56de\u200b
          • invalid: \u200b\u6e05\u7a7a\u200b Cache
        1. \u200b\u547d\u4e2d\u200b\u4e86\u200b\u54ea\u4e2a\u200b Cache line \u200b\u6216\u8005\u200b\u54ea\u4e2a\u200b\u90fd\u200b\u6ca1\u200b\u547d\u4e2d\u200b\u7531\u200b Cache \u200b\u5185\u90e8\u200b\u903b\u8f91\u200b\u5206\u8fa8\u200b.\u200b\u5982\u679c\u200b\u90fd\u200b\u6ca1\u200b\u547d\u4e2d\u200b Cache \u200b\u6b64\u200b\u5468\u671f\u200b\u5c31\u200b\u5565\u200b\u90fd\u200b\u4e0d\u200b\u5e72\u200b\uff0c\u200b\u53ea\u200b\u8fd4\u56de\u200b\u63a7\u5236\u200b\u4fe1\u53f7\u200b\uff0c\u200b\u7b49\u5f85\u200b CMU \u200b\u540e\u7eed\u200b\u63a7\u5236\u200b

        \u200b\u4e3a\u4e86\u200b\u505a\u597d\u200b\u8fd9\u4e9b\u200b\u4e8b\u200b\uff0cCache \u200b\u5185\u90e8\u200b\u4f1a\u200b\u8fdb\u884c\u200b\u5b9e\u73b0\u200b\u5408\u9002\u200b\u7684\u200b\u7ec4\u5408\u200b\u903b\u8f91\u200b\u6765\u200b\u8fdb\u884c\u200b\u7d22\u5f15\u200b\uff0c\u200b\u6bd4\u8f83\u200b\u7b49\u7b49\u200b

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#cpu","title":"CPU","text":"

        CPU \u200b\u4e0e\u200b CMU \u200b\u7684\u200b\u4ea4\u4e92\u200b\u6709\u200b\u4e24\u79cd\u200b\uff1a

        • CPU \u200b\u9700\u8981\u200b\u8bbf\u5b58\u200b\uff0c\u200b\u5c06\u200b\u8bfb\u5199\u200b\u5730\u5740\u200b\u548c\u200b\u6570\u636e\u200b\u7ed9\u200b CMU
        • CPU \u200b\u8fd8\u4f1a\u200b\u63a5\u53d7\u200b CMU \u200b\u7684\u200b\u7b49\u5f85\u200b\u4fe1\u53f7\u200b\uff0c\u200b\u963b\u585e\u200b\u6d41\u6c34\u7ebf\u200b\u7b49\u5f85\u200b\u6570\u636e\u200b\u5c31\u4f4d\u200b
        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#cmu","title":"CMU","text":"

        CMU \u200b\u5185\u90e8\u200b\u7ef4\u62a4\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u673a\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u72b6\u6001\u200b\u673a\u4f1a\u200b\u6839\u636e\u4e0a\u8ff0\u200b\u4e09\u4e2a\u200b\u7ec4\u4ef6\u200b\u7684\u200b\u63a7\u5236\u200b\u4fe1\u53f7\u200b\u8fdb\u884c\u200b\u8df3\u8f6c\u200b\uff1a

        • CPU \u200b\u662f\u5426\u200b\u6709\u200b\u8bfb\u5199\u200b\u8bf7\u6c42\u200b
        • Memory \u200b\u5bf9\u200b\u8bfb\u5199\u200b\u8bf7\u6c42\u200b\u7684\u200b\u5904\u7406\u200b
        • Cache \u200b\u7684\u200b\u63a7\u5236\u200b\u4fe1\u53f7\u200b\u53cd\u6620\u200b Cache \u200b\u662f\u200b\u547d\u4e2d\u200b\u4e86\u200b\uff0c\u200b\u9700\u8981\u200b\u8bbf\u5b58\u200b\u8fd8\u662f\u200b\u9700\u8981\u200b\u5199\u56de\u200b

        \u200b\u540c\u65f6\u200b CMU \u200b\u4e5f\u200b\u4f1a\u200b\u6839\u636e\u200b\u81ea\u5df1\u200b\u7684\u200b\u72b6\u6001\u200b\uff0c\u200b\u5bf9\u200b\u4e0a\u8ff0\u200b\u4e09\u4e2a\u200b\u7ec4\u4ef6\u200b\u8fdb\u884c\u200b\u63a7\u5236\u200b\uff1a

        • CPU \u200b\u662f\u5426\u200b\u5e94\u8be5\u200b stall(1)
        • Cache \u200b\u8981\u200b\u6267\u884c\u200b\u54ea\u4e2a\u200b\u64cd\u4f5c\u200b(2)
        • Memory \u200b\u8981\u200b\u6267\u884c\u200b\u54ea\u4e2a\u200b\u64cd\u4f5c\u200b(3)
        1. \u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u4e0b\u4e2a\u200b state \u200b\u4e0d\u662f\u200b IDLE \u200b\u5c31\u200b\u8be5\u200b stall \u200b\u4e86\u200b
          • load
          • edit
          • store
          • invalid
        2. \u200b\u8bfb\u5199\u64cd\u4f5c\u200b
        "},{"location":"blog/%E6%88%91%E7%9A%84-cli-%E5%B7%A5%E5%85%B7/","title":"\u6211\u200b\u7684\u200b CLI \u200b\u5de5\u5177","text":"

        Abstract

        \u200b\u8fd9\u91cc\u200b\u5217\u51fa\u200b\u4e86\u200b\u5f88\u591a\u200b\u597d\u7528\u200b\u7684\u200b CLI(commandline interface)\u200b\u5de5\u5177\u200b

        \u200b\u5982\u679c\u200b\u4ed4\u7ec6\u200b\u770b\u770b\u200b\u7684\u200b\u5316\u4f1a\u200b\u53d1\u73b0\u200b\u5927\u591a\u6570\u200b\u90fd\u200b\u662f\u200b\u62ff\u200b Rust \u200b\u91cd\u5199\u200b\u7684\u200b(Rewrite it in Rust!)

        • dust
        • duf
        • procs
        • fd
        • btm
        • exa
        • autojump
        • ripgrep
        • bat
        • httpie
        • hyperfine
        • fzf
        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/","title":"\u8ba1\u7b97\u673a\u7f51\u7edc\u200b - lab2 \u200b\u4f7f\u7528\u200b\u4e8c\u200b\u5c42\u4ea4\u6362\u673a\u200b\u7ec4\u7f51","text":"

        Abstract

        \u200b\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u5b9e\u9a8c\u200b\u505a\u200b\u7684\u200b\u65f6\u5019\u200b\u51e0\u4e4e\u200b\u6ca1\u4ec0\u4e48\u200b\u6307\u5bfc\u200b\uff0c\u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u795e\u79d8\u200b\u7684\u200b\u6587\u6863\u200b\uff0c\u200b\u4e00\u200b\u6574\u4e2a\u200b\u5b9e\u9a8c\u5ba4\u200b\u7684\u200b\u7ebf\u200b\u548c\u200b\u4e00\u200b\u7bb1\u5b50\u200b\u7684\u200b\u795e\u79d8\u200b\u673a\u5668\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5c31\u200b\u6fc0\u60c5\u200b\u5199\u4e2a\u200b\u7ecf\u9a8c\u200b

        \u200b\u4e3b\u8981\u200b\u662f\u200b\u8bb2\u200b\u4e86\u200b\u8bb2\u200b\u600e\u4e48\u200b\u8ba9\u200b\u5b9e\u9a8c\u200b\u8dd1\u200b\u8d77\u6765\u200b\uff0c\u200b\u8fd8\u6709\u200b\u5404\u79cd\u200b\u610f\u5916\u200b\u95ee\u9898\u200b\u7684\u200b\u5904\u7406\u200b\u4e4b\u7c7b\u200b\u7684\u200b

        \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

        \u200b\u5b9e\u9a8c\u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u5e74\u79cb\u51ac\u200b

        \u200b\u5b9e\u9a8c\u62a5\u544a\u200b\u6a21\u677f\u200b\uff1a

        \u200b\u5f80\u671f\u200b\u53c2\u8003\u200b\uff1a \uff08\u200b\u6765\u81ea\u200b\u6d59\u6c5f\u5927\u5b66\u200b\u8bfe\u7a0b\u200b\u5171\u4eab\u200b\u8ba1\u5212\u200b\uff09

        \u200b\u6307\u5bfc\u8001\u5e08\u200b\uff1a\u200b\u9ec4\u6b63\u8c26\u200b

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_1","title":"\u8ba4\u8bc6\u200b\u5b9e\u9a8c\u5ba4\u200b\u7684\u200b\u4eea\u5668","text":"

        \u200b\u679c\u200b\u54a9\u200b\u90a3\u200b\u585e\u200b\u8fd9\u91cc\u200b\u6ca1\u6709\u200b\u7167\u7247\u200b\uff0c\u200b\u4f46\u662f\u200b\u6bd4\u8f83\u200b\u5173\u952e\u200b\u7684\u200b\u51e0\u4e2a\u200b\u8bbe\u5907\u200b\u7684\u200b\u5916\u89c2\u200b\u90fd\u200b\u4f1a\u200b\u5927\u6982\u200b\u63cf\u8ff0\u200b\u4e00\u4e0b\u200b\uff1a

        \u200b\u4ea4\u6362\u673a\u200b\u8def\u7531\u5668\u200b\u7f51\u7ebf\u200bPC\u200b\u663e\u793a\u5c4f\u200b\u548c\u200b\u952e\u76d8\u200b

        \u200b\u6b63\u9762\u200b\u6709\u200b\u5f88\u591a\u200b\u7aef\u53e3\u200b\uff0c\u200b\u6ca1\u6709\u200b\u5f00\u200b\u5173\u952e\u200b\uff0c\u200b\u6b63\u9762\u200b\u6709\u200b mode \u200b\u952e\u200b

        \u200b\u6682\u65f6\u200b\u7528\u200b\u4e0d\u5230\u200b\uff0c\u200b\u6bd4\u8d77\u200b\u4ea4\u6362\u673a\u200b\u7aef\u53e3\u200b\u6ca1\u200b\u90a3\u4e48\u200b\u591a\u200b\uff0c\u200b\u6709\u5f00\u200b\u5173\u952e\u200b

        \u200b\u5b9e\u9a8c\u5ba4\u200b\u91cc\u200b\u770b\u8d77\u6765\u200b\u662f\u200b\u7f51\u7ebf\u200b\u7684\u200b\u57fa\u672c\u200b\u5c31\u662f\u200b\u7f51\u7ebf\u200b\uff08\u200b\u5e9f\u8bdd\u200b\uff09\uff0c

        \u200b\u6bd4\u8f83\u200b\u7279\u6b8a\u200b\u7684\u200b\u4e8b\u200b\u5982\u679c\u200b\u4e24\u7aef\u200b\u900f\u660e\u200b\u5934\u200b\u5185\u90e8\u200b\u7684\u200b\u7ebf\u200b\u7684\u200b\u989c\u8272\u200b\u987a\u5e8f\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff0c\u200b\u90a3\u200b\u5c31\u662f\u200b\u4ea4\u53c9\u200b\u7f51\u7ebf\u200b.

        \u200b\u5982\u679c\u200b\u4e00\u6839\u200b\u6241\u6241\u7684\u200b\u6de1\u84dd\u8272\u200b\u7684\u200b\uff0c\u200b\u53e6\u4e00\u7aef\u200b\u662f\u200b\u4e32\u53e3\u200b\u7684\u200b\u7ebf\u200b\uff0c\u200b\u90a3\u4e2a\u200b\u662f\u200b\u62ff\u6765\u200b\u8fde\u200b console \u200b\u548c\u200b PC \u200b\u7684\u200b.

        \u200b\u673a\u7bb1\u200b\u91cc\u200b\u4e0a\u65b9\u200b\u8fde\u200b\u7740\u200b\u6446\u200b\u4e86\u200b\u56db\u53f0\u200b PC\uff0c\u200b\u4e00\u822c\u200b\u4ece\u200b\u4e0a\u200b\u5f80\u200b\u4e0b\u200b\u6807\u53f7\u200b 1-4

        \u200b\u5f00\u673a\u200b\u65b9\u5f0f\u200b\u5f88\u8ff7\u200b\uff0c\u200b\u6211\u200b\u662f\u200b\u6309\u200b F1 \u200b\u7136\u540e\u200b\u9000\u51fa\u200b\uff0c\u200b\u611f\u89c9\u200b\u80af\u5b9a\u200b\u4e0d\u662f\u200b\u6b63\u5e38\u200b\u9014\u5f84\u200b

        \u200b\u6700\u200b\u4e0b\u9762\u200b\u6446\u7740\u200b\u7684\u200b\u663e\u793a\u5c4f\u200b\u548c\u200b\u952e\u76d8\u200b\uff0c\u200b\u901a\u8fc7\u200b\u6309\u952e\u200b\u9009\u62e9\u200b\u53ef\u4ee5\u200b\u8fde\u63a5\u200b\u5230\u200b\u4e0d\u540c\u200b\u7684\u200b PC\uff0c\u200b\u987a\u7740\u200b\u663e\u793a\u5c4f\u200b\u7684\u200b\u7ebf\u200b\u5f80\u540e\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u56db\u53f0\u200b PC \u200b\u5728\u200b\u540e\u9762\u200b\u662f\u200b\u63d2\u200b\u5230\u200b\u4e86\u200b 1-4 \u200b\u53e3\u4e0a\u200b\u7684\u200b\uff08\u200b\u6211\u200b\u5f53\u65f6\u200b\u662f\u200b\u6ca1\u6709\u200b PC4\uff0c\u200b\u6709\u200b PC5 \u200b\u63d2\u200b\u5728\u200b 5 \u200b\u4e0a\u9762\u200b\uff0c\u200b\u6211\u200b\u7ed9\u200b\u6539\u200b\u63d2\u200b\u5230\u200b 4 \u200b\u4e86\u200b\uff09

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_2","title":"\u8d77\u6b65","text":"

        \u200b\u5176\u5b9e\u200b\u4e5f\u200b\u5c31\u200b\u8d77\u6b65\u200b\u662f\u200b\u6700\u96be\u200b\u7684\u200b\uff0c\u200b\u540e\u9762\u200b\u57fa\u672c\u200b\u5c31\u200b\u6309\u7167\u200b\u6587\u6863\u200b\u6765\u200b\u505a\u200b\u5c31\u662f\u200b.

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_3","title":"\u8fde\u4e0d\u4e0a\u200b\u4ea4\u6362\u673a","text":"

        \u200b\u8fde\u63a5\u200b\u4ea4\u6362\u673a\u200b\u8981\u200b\u505a\u200b\u7684\u200b\u6709\u200b\uff1a

        • \u200b\u7528\u200b\u524d\u6587\u200b\u63d0\u5230\u200b\u7684\u200b\u4e32\u53e3\u200b-\u200b\u7f51\u53e3\u200b\u7ebf\u6765\u200b\u8fde\u63a5\u200b\u67d0\u200b PC \u200b\u548c\u200b\u4ea4\u6362\u673a\u200b\u7684\u200b console\u3001
        • \u200b\u5207\u6362\u200b\u5230\u200b\u90a3\u53f0\u200b PC\uff0c \u200b\u6253\u5f00\u200b\u684c\u9762\u4e0a\u200b\u7684\u200b putty\uff0c \u200b\u9009\u62e9\u200b serial\uff0c\u200b\u9ed8\u8ba4\u200b\u901f\u7387\u200b 9600 \u200b\u5373\u53ef\u200b\uff0c\u200b\u542f\u52a8\u200b
        • \u200b\u72c2\u200b\u6309\u200b\u56de\u8f66\u200b\uff0c\u200b\u51fa\u73b0\u200b\u547d\u4ee4\u884c\u200b\u63d0\u793a\u7b26\u200b\u5c31\u200b\u6210\u529f\u200b\u4e86\u200b\uff0c\u200b\u6ca1\u200b\u53cd\u5e94\u200b\u7528\u200b\u624b\u6276\u200b\u4e00\u4e0b\u200b console \u200b\u770b\u200b\u4e00\u4e0b\u200b\u63d2\u7d27\u200b\u4e86\u200b\u6ca1\u6709\u200b

        \u200b\u5c31\u200b\u6211\u200b\u800c\u8a00\u200b\uff0c\u200b\u673a\u7bb1\u200b\u91cc\u200b\u7684\u200b\u4e0b\u9762\u200b\u7684\u200b\u4e00\u53f0\u200b\u4ea4\u6362\u673a\u200b\u662f\u200b\u6b7b\u6d3b\u200b\u8fde\u4e0d\u4e0a\u200b\uff0c\u200b\u6700\u540e\u200b\u8bd5\u200b\u4e86\u200b\u534a\u5929\u200b\u662f\u200b\u4e0a\u9762\u200b\u7684\u200b\u53e6\u4e00\u53f0\u200b\u4ea4\u6362\u673a\u200b\u7528\u200b\u624b\u6276\u200b\u7a33\u200b\u4e86\u200b\u53ef\u4ee5\u200b\u4e0a\u200b.

        \u200b\u5982\u679c\u200b\u4f60\u8bd5\u200b\u4e86\u200b\u5f88\u591a\u200b\u90fd\u200b\u4e0d\u884c\u200b\u7684\u8bdd\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5728\u200b\u5b9e\u9a8c\u5ba4\u200b\u91cc\u200b\u6e9c\u8fbe\u200b\u4e00\u5708\u200b\u591a\u200b\u6478\u200b\u51e0\u4e2a\u200b\u4ea4\u6362\u673a\u200b\u56de\u6765\u200b.\u200b\u6211\u4eec\u200b\u7b2c\u4e8c\u6b21\u200b\u6478\u200b\u4e86\u200b\u4e24\u53f0\u200b\u767d\u8272\u200b\u7684\u200b\u5c0f\u5c0f\u7684\u200b\u4ea4\u6362\u673a\u200b\u6765\u200b\u7528\u200b.

        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_4","title":"\u4ea4\u6362\u673a\u200b\u5bc6\u7801","text":"

        \u200b\u6211\u4eec\u200b\u6478\u6765\u200b\u7684\u200b\u4e24\u53f0\u200b\u4ea4\u6362\u673a\u200b\u90fd\u200b\u8981\u6c42\u200b enable \u200b\u5bc6\u7801\u200b\uff0c\u200b\u91cd\u7f6e\u200b\u5bc6\u7801\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6478\u200b\u7684\u200b\u6bd4\u8f83\u200b\u719f\u200b\u4e86\u200b\uff0c\u200b\u6ce8\u610f\u200b\u9002\u7528\u200b\u7684\u200b\u662f\u200b\u5c0f\u578b\u200b\u767d\u8272\u200b\u4ea4\u6362\u673a\u200b\uff0c\u200b\u6b63\u9762\u200b\u578b\u53f7\u200b\u5199\u200b\u7740\u200b C3560 \u200b\u6b65\u9aa4\u200b\uff1a

        • \u200b\u8fde\u63a5\u200b console \u200b\u548c\u200b PC\uff0c\u200b\u6253\u5f00\u200b putty\uff0c\u200b\u65ad\u7535\u200b
        • \u200b\u957f\u200b\u6309\u200b mode \u200b\u952e\u200b\uff0c\u200b\u4e0a\u7535\u200b
        • \u200b\u7ee7\u7eed\u200b\u6309\u200b mode\uff0c\u200b\u7b49\u5f85\u200b\uff0cputty \u200b\u4e0a\u200b\u5e94\u8be5\u200b\u9646\u7eed\u200b\u6709\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u8f93\u51fa\u200b\u4e86\u200b\uff0c\u200b\u773c\u5c16\u200b\u7684\u200b\u8fd8\u200b\u80fd\u200b\u770b\u5230\u200b password recovery mechanism is enabled\uff0c\u200b\u770b\u5230\u200b\u8fd9\u53e5\u200b\u8bdd\u200b\u7ee7\u7eed\u200b\u6309\u200b
        • \u200b\u7ee7\u7eed\u200b\u6309\u200b mode \u200b\u76f4\u5230\u200b\u5c4f\u5e55\u200b\u4e0a\u200b\u51fa\u73b0\u200b switch: \u200b\u63d0\u793a\u7b26\u200b\u548c\u200b\u4e24\u4e2a\u200b\u9009\u9879\u200b(flash_init\uff0c boot)
        • \u200b\u5148\u200bflash_init\uff0c\u200b\u7136\u540e\u200bren flash:config.text flash:config.old\uff0c\u200b\u7136\u540e\u200bboot
        • \u200b\u7b49\u5f85\u200b\u91cd\u542f\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u5dee\u4e0d\u591a\u200b\u5b8c\u200b\u4e86\u200b\u4f1a\u200b\u8ba9\u200b\u6309\u200b\u56de\u8f66\u200b\u786e\u8ba4\u200b\uff0c\u200b\u6309\u200b\u5b8c\u6709\u200b\u4e2a\u200b\u662f\u5426\u200b\u8fdb\u5165\u200b\u521d\u59cb\u5316\u200b\u914d\u7f6e\u200b\uff0c\u200b\u8f93\u5165\u200b no
        • \u200b\u91cd\u7f6e\u200b\u6210\u529f\u200b
        "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#pc-ip","title":"\u8bbe\u5b9a\u200b PC \u200b\u7684\u200b IP","text":"

        \u200b\u5b9e\u9a8c\u200b\u5f00\u59cb\u200b\u524d\u200b\u6211\u4eec\u200b\u8981\u200b\u67e5\u770b\u200b\u5404\u200b PC \u200b\u7684\u200b IP\uff0cwin + R\uff0c\u200b\u8f93\u5165\u200b cmd \u200b\u6253\u5f00\u200b\u547d\u4ee4\u884c\u200b\uff0c\u200b\u8f93\u5165\u200bipconfig\u200b\u5c31\u200b\u80fd\u200b\u770b\u5230\u200b ip \u200b\u4e86\u200b\uff0c\u200b\u6ca1\u6709\u200b\u7684\u8bdd\u200b\u68c0\u67e5\u200b\u8fde\u63a5\u200b\uff0c\u200b\u770b\u770b\u200b\u4fe1\u53f7\u706f\u200b\u53d8\u7eff\u200b\u4e86\u200b\u6ca1\u6709\u200b.

        \u200b\u4e00\u822c\u800c\u8a00\u200b PC \u200b\u7684\u200b IP \u200b\u90fd\u200b\u633a\u200b\u6b63\u5e38\u200b\u7684\u200b\uff0c\u200b\u4e92\u76f8\u200b\u4e4b\u95f4\u200b\u90fd\u200b\u901a\u200b\uff08\u200b\u6bd4\u8f83\u200b\u6b63\u5e38\u200b\u7684\u200b IP 10.0.0.13 10.0.1.13 10.0.2.13 10.0.3.13 \u200b\u4ed6\u4eec\u200b\u663e\u7136\u200b\u90fd\u200b\u901a\u200b\uff09

        \u200b\u7136\u800c\u200b\u6211\u200b\u5f53\u65f6\u200b\u4e24\u4e2a\u200b PC \u200b\u662f\u200b 10 \u200b\u5f00\u5934\u200b\u4e24\u4e2a\u200b\u662f\u200b 192 \u200b\u5f00\u5934\u200b\uff0c\u200b\u4e0d\u901a\u200b\uff0c\u200b\u9700\u8981\u200b\u624b\u52a8\u200b\u8bbe\u5b9a\u200b

        \u200b\u8fd9\u65f6\u5019\u200b\u5343\u4e07\u522b\u200b\u53bb\u200b putty \u200b\u91cc\u9762\u200b\u6572\u200b\u547d\u4ee4\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u6211\u200b\u8fd9\u4e48\u200b\u641e\u200b\u56db\u53f0\u200b PC \u200b\u5168\u65ad\u200b\u8054\u200b\u4e86\u200b\uff0c\u200b\u8981\u200b\u5728\u200b windows \u200b\u7684\u200b\u63a7\u5236\u9762\u677f\u200b\u91cc\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5177\u4f53\u6b65\u9aa4\u200b\u7f51\u4e0a\u200b\u90fd\u200b\u6709\u200b\uff0c\u200b\u8981\u200b\u628a\u200b\u56db\u53f0\u200b\u653e\u5230\u200b\u540c\u4e00\u200b\u7f51\u6bb5\u200b.

        \u200b\u606d\u559c\u200b

        \u200b\u63a5\u4e0b\u6765\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8ddf\u7740\u200b\u6587\u6863\u200b\u4e00\u6b65\u6b65\u200b\u8d70\u200b\u5b8c\u200b\u5b9e\u9a8c\u200b\u4e86\u200b.

        "},{"location":"blog/enable-chatgpt_academic/","title":"Enable ChatGPT_academic","text":"

        Abstract

        \u200b\u901b\u200b\u5927\u8857\u200b\u7684\u200b\u65f6\u5019\u200b\u5076\u7136\u200b\u770b\u5230\u200b\u7684\u200b\u5de5\u5177\u200b\uff0c\u200b\u8dd1\u200b\u8d77\u6765\u200b\u7528\u7528\u200b\u770b\u200b\uff01

        \u200b\u51c6\u5907\u200b\u5de5\u4f5c\u200b

        \u200b\u8bf7\u200b\u5728\u200b\u9605\u8bfb\u200b\u6b64\u6587\u200b\u524d\u200b\u51c6\u5907\u200b\u597d\u200b ChatGPT \u200b\u7684\u200b API Key \u200b\u548c\u200b\u597d\u200b\u7528\u200b\u7684\u200b\u4ee3\u7406\u200b.\uff08\u200b\u524d\u8005\u200b\u4e3b\u8981\u200b\u662f\u200b\u6ce8\u518c\u200b\u597d\u200b\u8d26\u53f7\u200b\u5c31\u884c\u200b\uff0c\u200b\u5408\u7406\u200b\u5229\u7528\u200b https://sms-activate.org/\uff09

        \u200b\u4e3b\u8981\u200b\u7684\u200b\u6d41\u7a0b\u200b\u5c31\u200b\u5728\u200b\u9879\u76ee\u200b\u7684\u200b\u6e90\u5730\u5740\u200b\u8bb2\u200b\u7684\u200b\u5f88\u200b\u8be6\u7ec6\u200b\u4e86\u200b\uff0c\u200b\u7167\u200b\u505a\u200b\u5373\u53ef\u200b.

        \u200b\u7b14\u8005\u200b\u6ca1\u6709\u200b\u7528\u200b docker \u200b\u90e8\u7f72\u200b\uff0c\u200b\u90e8\u7f72\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u53ea\u200b\u9047\u5230\u200b\u4e00\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u6362\u200b\u8fc7\u6e90\u200b\u540e\u200b pip \u200b\u627e\u200b\u4e0d\u5230\u200b\u9ad8\u200b\u7248\u672c\u200b\u7684\u200b gradio

        \u200b\u89e3\u51b3\u65b9\u6848\u200b\u662f\u200b\uff1a

        pip install --upgrade gradio -i https://pypi.org/simple\n

        -i \u200b\u662f\u200b --index-url \u200b\u7684\u200b\u7f29\u5199\u200b\uff0c\u200b\u610f\u601d\u200b\u662f\u4ece\u200b\u6307\u5b9a\u200b\u6e90\u200b\u4e0b\u8f7d\u200b

        "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/","title":"\u7528\u200b Mac \u200b\u7684\u200b VSCode \u200b\u8c03\u8bd5\u200b C/C++\u200b\u7a0b\u5e8f","text":"

        Abstract

        \u200b\u5728\u200b Mac \u200b\u7684\u200b\u73af\u5883\u200b\u4e0a\u7528\u200b VSCode \u200b\u6765\u200b debug \u200b\u634f\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u4e5f\u200b\u78b0\u5230\u200b\u4e9b\u200b\u95ee\u9898\u200b\u7684\u8bdd\u200b\u4e0d\u59a8\u200b\u6765\u200b\u770b\u770b\u200b\ud83d\udc40

        \u200b\u73af\u5883\u200b

        MacOS: Ventura 13.2.1 VSCode: 1.76.2 x64 C/C++: 1.14.5 CodeLLDB: 1.8.0 Code Runner: 0.12.0

        "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/#cc","title":"C/C++","text":"

        \u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b VSCode \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u542f\u7528\u200b\u540e\u200b\uff0c\u200b\u4f1a\u200b\u5728\u200b VSCode \u200b\u4e2d\u200b\u6dfb\u52a0\u200b C/C++\u200b\u7684\u200b\u8bed\u6cd5\u200b\u9ad8\u4eae\u200b\u3001\u200b\u4ee3\u7801\u200b\u63d0\u793a\u200b\u3001\u200b\u4ee3\u7801\u200b\u8df3\u8f6c\u200b\u7b49\u200b\u529f\u80fd\u200b. \u200b\u540c\u65f6\u200b\u53f3\u4e0a\u89d2\u200b\u51fa\u73b0\u200b\u5982\u4e0b\u200b\u56fe\u6807\u200b\uff1a

        \u200b\u9009\u62e9\u200b run \u200b\u7684\u8bdd\u200b\uff0c\u200b\u63d2\u4ef6\u200b\u5c31\u200b\u4f1a\u200b\u63a5\u7740\u200b\u8ba9\u200b\u6211\u4eec\u200b\u9009\u62e9\u200b\u4f7f\u7528\u200b\u7684\u200b\u7f16\u8bd1\u5668\u200b

        \u200b\u6bd4\u5982\u200b\u6211\u200b\u9009\u62e9\u200b clang++\uff0c\u200b\u90a3\u4e48\u200b\u63d2\u4ef6\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u5f53\u524d\u5de5\u4f5c\u200b\u533a\u4e0b\u200b\u81ea\u52a8\u200b\u751f\u6210\u200b\u76f8\u5e94\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u5e76\u200b\u5f00\u59cb\u8fd0\u884c\u200b.

        \u200b\u5bf9\u4e8e\u200b\u8c03\u8bd5\u200b\uff0c\u200b\u5f88\u200b\u9057\u61be\u200b\u7684\u200b\u662f\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u662f\u200b\u8fd0\u884c\u200b\u5728\u200b Debug Console \u200b\u4e2d\u200b\u7684\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u7ec8\u7aef\u200b\u4e2d\u200b\uff0c\u200b\u8fd0\u884c\u200b\u5728\u200b debug console \u200b\u4e2d\u200b\u7684\u200b\u95ee\u9898\u200b\u662f\u200b\u6ca1\u6709\u200b stdin \u200b\u8ba9\u200b\u6211\u4eec\u200b\u8f93\u5165\u200b.

        \u200b\u7ecf\u8fc7\u200b\u67e5\u8be2\u200b\uff0c\u200b\u53d1\u73b0\u200b Mac \u200b\u4e0a\u200b C/C++\u200b\u63d2\u4ef6\u200b\u4e0d\u200b\u652f\u6301\u200b debugger \u200b\u8fd0\u884c\u200b\u5728\u200b\u5185\u7f6e\u200b\u7ec8\u7aef\u200b\u4e2d\u200b\uff0csetting \u200b\u91cc\u200b\u4e5f\u200b\u6ca1\u6709\u200b\u4fee\u6539\u200b\u9009\u9879\u200b\uff0c\u200b\u53ea\u80fd\u200b\u8fd0\u884c\u200b\u5728\u200b debug console \u200b\u6216\u8005\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b.\u200b\u8be6\u89c1\u200b\u5b98\u7f51\u200b

        \u200b\u5982\u679c\u200b\u5e0c\u671b\u200b\u5728\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b\u8fd0\u884c\u200b\u8fdb\u884c\u200b\u8f93\u5165\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u5728\u200b launch.json \u200b\u4e2d\u200b\u914d\u7f6e\u200b.\u200b\u6ce8\u610f\u200b\uff0c\u200b\u5f53\u524d\u200b\u7248\u672c\u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u53ea\u4f1a\u200b\u751f\u6210\u200b task.json\uff0c\u200b\u6ca1\u6709\u200b launch.json\uff1a

        \u200b\u90a3\u200b\u6211\u4eec\u200b\u5c31\u200b\u5148\u200b\u4ecb\u7ecd\u200b\u4e00\u4e0b\u200b task.json.\u200b\u8fd9\u91cc\u200b\u7684\u200b\u4e00\u4e9b\u200b\u53c2\u6570\u200b\u662f\u200b\u53ef\u4ee5\u200b\u4fee\u6539\u200b\u7684\u200b\uff0c\u200b\u6bd4\u5982\u200b args\uff0c\u200b\u5c31\u662f\u200b\u7f16\u8bd1\u200b\u65f6\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u5176\u4e2d\u200b-g\u200b\u53c2\u6570\u200b\uff0c\u200b\u4f1a\u200b\u8ba9\u200b\u7f16\u8bd1\u5668\u200b\u751f\u6210\u200b\u8c03\u8bd5\u4fe1\u606f\u200b\uff0c\u200b\u8fd9\u6837\u200b\u624d\u80fd\u200b\u8fdb\u884c\u200b debug.\u200b\u8fd8\u6709\u200b cwd \u200b\u53c2\u6570\u200b\uff0c\u200b\u8fd0\u884c\u200b\u7a0b\u5e8f\u200b\u7684\u200b\u6587\u4ef6\u5939\u200b\u4f4d\u7f6e\u200b\uff0c\u200b\u5982\u679c\u200b\u4e0d\u5199\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u9ed8\u8ba4\u200b\u5728\u200b\u5f53\u524d\u5de5\u4f5c\u200b\u533a\u200b\u7684\u200b\u6839\u76ee\u5f55\u200b\u4e0b\u200b\u8fd0\u884c\u200b\uff0c\u200b\u800c\u200b\u975e\u200b\u7a0b\u5e8f\u200b\u6240\u5728\u200b\u76ee\u5f55\u200b\uff0c\u200b\u8fd9\u200b\u5728\u200b\u4e00\u4e9b\u200b\u6253\u5f00\u200b\u6587\u4ef6\u200b\u7684\u200b\u64cd\u4f5c\u200b\u4e0a\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u95ee\u9898\u200b.\u200b\u6700\u540e\u200b\u6ce8\u610f\u200b\u4e00\u4e0b\u200b label\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b\u522b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e2d\u200b\u901a\u8fc7\u200b\u8fd9\u4e2a\u200b label \u200b\u6765\u200b\u8c03\u7528\u200b\u8fd9\u4e2a\u200b task.

        \u200b\u6211\u4eec\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u914d\u7f6e\u6587\u4ef6\u200b launch.json\uff1a\u200b\u9009\u62e9\u200b\u4fa7\u680f\u200b\u7684\u200b debug \u200b\u56fe\u6807\u200b\uff0c\u200b\u70b9\u51fb\u200bcreate a launch.json file:

        \u200b\u521a\u200b\u5f00\u59cb\u200b\u662f\u200b\u7a7a\u200b\u7684\u200b\uff0c\u200b\u4ec0\u4e48\u200b\u90fd\u200b\u6ca1\u6709\u200b.\u200b\u70b9\u51fb\u200b\u53f3\u4e0b\u89d2\u200b\u7684\u200bAdd Configuration\uff0c\u200b\u5c31\u200b\u6709\u200b\u4e00\u4e9b\u200b\u9009\u9879\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6709\u200b\u63d2\u4ef6\u200b\u4e3a\u200b\u6211\u4eec\u200b\u51c6\u5907\u200b\u7684\u200b\u9ed8\u8ba4\u200b\u6a21\u7248\u200b\uff0c\u200b\u6211\u4eec\u200b\u9009\u62e9\u200bC/C++ lldb\uff08\u200b\u542f\u52a8\u200b\uff09\uff0c\u200b\u610f\u601d\u200b\u662f\u200b C/C++\u200b\u63d2\u4ef6\u200b\u63d0\u4f9b\u200b\u7684\u200b\uff0c\u200b\u542f\u52a8\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u5e76\u200b\u5bf9\u200b\u5176\u200b debug \u200b\u7684\u200b\u914d\u7f6e\u200b\uff0c\u200b\u9009\u62e9\u200b\u9644\u52a0\u200b\u7684\u8bdd\u200b\u662f\u200b\u9644\u52a0\u200b\u5230\u200b\u4e00\u4e2a\u200b\u5df2\u7ecf\u200b\u5728\u200b\u6267\u884c\u200b\u7684\u200b\u8fdb\u7a0b\u200b\u4e0a\u200b\u7684\u200b\uff1a

        \u200b\u9ed8\u8ba4\u200b\u7684\u200b\u6a21\u677f\u200b\u957f\u200b\u8fd9\u4e2a\u200b\u6837\u5b50\u200b\uff1a

        \u200b\u8fd9\u200b\u5e76\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\uff0c\u200b\u9996\u5148\u200b\u4fee\u6539\u200b program \u200b\u4e3a\u200b

        \"program\": \"${workspaceFolder}/${fileBasenameNoExtension}\"\uff0c\n
        \uff0c\u200b\u8fd9\u6837\u200b\u4ed6\u200b\u8fd0\u884c\u200b\u7684\u200b\u5c31\u200b\u4f1a\u200b\u662f\u200b\u5f53\u524d\u76ee\u5f55\u200b\u4e0b\u200b\u7684\u200b\u5f53\u524d\u200b\u6587\u4ef6\u200b\uff08\u200b\u4e00\u822c\u200b\u5c31\u662f\u200b\u5149\u6807\u200b\u60ac\u505c\u200b\u7684\u200b\u90a3\u4e2a\u200b\u6587\u4ef6\u200b\uff09\u200b\u540c\u540d\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\uff08\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u6ca1\u200b\u540e\u7f00\u200b\uff09\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u7f16\u8bd1\u200b\u51fa\u6765\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u53eb\u505a\u200ba.out\uff0c\u200b\u8fd9\u4e2a\u200b\u914d\u7f6e\u200b\u5c31\u200b\u4e0d\u200b\u9002\u7528\u200b\uff08\u200b\u4f1a\u200b\u8c03\u7528\u200ba\uff09\uff0c\u200b\u8bf7\u200b\u5728\u200b\u914d\u7f6e\u200b\u4e2d\u200b\u4fee\u6539\u200b\u4e3a\u200b/a.out\u200b\u6216\u8005\u200b\u8ba9\u200b\u7f16\u8bd1\u200b\u51fa\u6765\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u540d\u4e3a\u200ba.

        \u200b\u65b0\u52a0\u200b\u4e00\u5217\u200bpreLaunchTask\uff0c\u200b\u503c\u200b\u5c31\u662f\u200b\u4e4b\u524d\u200b task.json \u200b\u4e0a\u200b\u7684\u200b label\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u8fd0\u884c\u200b\u524d\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u524d\u5148\u200b\u8fd0\u884c\u200b task \u200b\u7f16\u8bd1\u200b\u5f53\u524d\u200b\u6587\u4ef6\u200b\uff08\u200b\u8fd9\u6837\u200b\u6bd4\u8f83\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u81ea\u52a8\u200b\u628a\u200b\u6700\u65b0\u200b\u7684\u200b\u6e90\u4ee3\u7801\u200b\u7f16\u8bd1\u200b\uff0c\u200b\u8981\u200b\u591a\u200b\u6587\u4ef6\u200b\u7f16\u8bd1\u200b\u7684\u8bdd\u200b\u4e5f\u200b\u5728\u200b task \u200b\u8bbe\u7f6e\u200b.\u200b\u5982\u679c\u200b\u4e0d\u200b\u4f7f\u7528\u200b task \u200b\u624b\u52a8\u200b\u7f16\u8bd1\u200b\u7684\u8bdd\u200b\uff0c\u200b\u8bb0\u5f97\u200b\u52a0\u4e0a\u200b-g\uff09.\u200b\u6700\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u628a\u200b\"externalConsole\": false\uff0c\u200b\u6539\u4e3a\u200b\"externalConsole\": true\uff0c\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b\u4e2d\u200b\u8fd0\u884c\u200b\u4e86\u200b.

        \u200b\u7b14\u8005\u200b\u5230\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5728\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b debug \u200b\u5566\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5728\u200b watch \u200b\u7a97\u53e3\u200b\u6267\u884c\u547d\u4ee4\u200b\u6765\u200b\u76d1\u89c6\u200b\u53d8\u91cf\u200b\uff0c\u200b\u5982\u200b\u5168\u5c40\u53d8\u91cf\u200b\u4e00\u7c7b\u200b\u7684\u200b\uff0c\u200b\u4f46\u662f\u200b C/C++\u200b\u5bf9\u200b\u4e00\u4e9b\u200b\u7c7b\u578b\u200b\u7684\u200b\u53d8\u91cf\u200b\u7684\u200b\u76d1\u89c6\u200b\u652f\u6301\u200b\u4e0d\u662f\u200b\u5f88\u200b\u597d\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b string\uff1a \u200b\u76d1\u89c6\u200b\u4fe1\u606f\u200b\u5c31\u662f\u200b\u4e00\u5768\u200b.

        "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/#code-runner","title":"Code Runner","text":"

        \u200b\u53e6\u200b\u4e00\u4e2a\u200b VSCode \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u542f\u7528\u200b\u540e\u200b\u53f3\u4e0a\u89d2\u200b\u53c8\u200b\u4f1a\u200b\u591a\u200b\u4e00\u4e2a\u200b\u6807\u200b\uff1a

        \u200b\u8fd9\u4e2a\u200b\u662f\u200b\u53ef\u4ee5\u200b\u8dd1\u200b\u5728\u200b\u5185\u7f6e\u200b\u7ec8\u7aef\u200b\u91cc\u200b\u7684\u200b\uff1a

        "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/#codelldb","title":"CodeLLDB \ud83d\udc4d","text":"

        \u200b\u8fd9\u4e2a\u200b\u63d2\u4ef6\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b debug\uff0c\u200b\u6211\u200b\u611f\u89c9\u200b\u6bd4\u200b C/C++\u200b\u597d\u7528\u200b\u591a\u200b\u4e86\u200b.

        \u200b\u542f\u7528\u200b\u63d2\u4ef6\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b launch.json \u200b\u4e2d\u53ef\u9009\u200b\u914d\u7f6e\u200b\u5c31\u200b\u591a\u200b\u4e86\u200b\u51e0\u4e2a\u200b\uff0c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200bCodeLLDB (launch)\u200b\u6a21\u677f\u200b\uff1a

        \u200b\u540c\u6837\u200b\u7a0d\u5fae\u200b\u4fee\u6539\u200b\uff1a

        \u200b\u56de\u5230\u200b\u4fa7\u8fb9\u200b\u680f\u200b debug \u200b\u6a21\u5757\u200b\uff0c\u200b\u9009\u62e9\u200b\u65b0\u200b\u7684\u200b\u542f\u52a8\u200b\u914d\u7f6e\u200b\uff08\u200b\u8fd9\u91cc\u200b\u9009\u200b\u7684\u200b\u662f\u200b launch.json \u200b\u91cc\u200b\u5199\u200b\u597d\u200b\u7684\u200b\u51e0\u4e2a\u200b\u914d\u7f6e\u200b\uff09\uff1a

        \u200b\u8fd9\u4f1a\u200b\u5728\u200b\u6211\u4eec\u200b\u542f\u7528\u200b debug \u200b\u7684\u200b\u65f6\u5019\u200b\u53bb\u200b launch.json \u200b\u91cc\u9762\u200b\u627e\u200b\u6211\u4eec\u200b\u6307\u5b9a\u200b\u7684\u200b\u914d\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u8fdb\u884c\u200b debug.

        \u200b\u6709\u65f6\u5019\u200b debug \u200b\u5f39\u200b\u51fa\u200b\u5947\u602a\u200b\u7684\u200b\u62a5\u9519\u200b\uff0c\u200b\u662f\u56e0\u4e3a\u200b\u5f53\u524d\u200b\u6253\u5f00\u200b\u7684\u200b\u662f\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u8bd5\u56fe\u200b\u5bf9\u200b launch.json \u200b\u8fdb\u884c\u200b debug\uff0c\u200b\u6240\u4ee5\u200b\u62a5\u9519\u200b\u4e86\u200b.\u200b\u6211\u4eec\u200b\u6253\u5f00\u200b\u8981\u200b debug \u200b\u7684\u200b\u6e90\u4ee3\u7801\u200b\u6587\u4ef6\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b.

        CodeLLDB \u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u5185\u7f6e\u200b\u7ec8\u7aef\u200b\uff1a

        \u200b\u53ef\u4ee5\u200b\u5728\u200b\u76d1\u89c6\u200b\u91cc\u200b\u76f4\u63a5\u200b\u7528\u200b\u53d8\u91cf\u540d\u200b\u76d1\u89c6\u200b\u53d8\u91cf\u200b\uff1a

        \u200b\u53ef\u4ee5\u200b\u5728\u200b debug console \u200b\u4e2d\u200b\u8f93\u5165\u200b\u547d\u4ee4\u200b\uff1a

        \u200b\u53d8\u91cf\u200b\u91cc\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b\u652f\u6301\u200b\u4e5f\u597d\u200b\u4e00\u4e9b\u200b\uff1a

        \u200b\u8fd9\u91cc\u200b\u8fd8\u6709\u200b\u5b98\u65b9\u200b\u6587\u6863\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u770b\u200b.

        \u200b\u624b\u52a8\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b task.json

        \u200b\u5728\u200b\u83dc\u5355\u200b terminal > Configure Tasks \u200b\u9009\u62e9\u200b C/C++\u200b\u6765\u200b\u751f\u6210\u200b\u6a21\u677f\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab1-%E6%97%B6%E9%92%9F%E4%B8%AD%E6%96%AD/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab1 \u200b\u65f6\u949f\u200b\u4e2d\u65ad","text":"

        Abstract

        \u200b\u4e00\u4e2a\u200b kernel \u200b\u7684\u200b\u8fd0\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

        \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

        \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

        \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab1-%E6%97%B6%E9%92%9F%E4%B8%AD%E6%96%AD/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
        - `opensbi`\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\n- `start_kernel`: \u200b\u8fdb\u884c\u200b\u4e00\u4e9b\u200b\u8f93\u51fa\u200b\uff0c\u200b\u8fdb\u5165\u200b test()\u200b\u6b7b\u5faa\u73af\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u4fdd\u5b58\u200b\u597d\u200b\u4e0a\u4e0b\u6587\u200b\u540e\u200b\u8c03\u7528\u200b\u4e2d\u65ad\u200b\u5904\u7406\u7a0b\u5e8f\u200b trap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u540e\u200b\u8c03\u7528\u200b clock_set_next\n- `clock_set_next`: \u200b\u5229\u7528\u200b sbi_ecall \u200b\u8bbe\u7f6e\u200b\u4e0b\u200b\u4e00\u6b21\u200b\u4e2d\u65ad\u200b\u65f6\u95f4\u200b\n- `_traps`: \u200b\u8fd4\u56de\u200b_traps \u200b\u540e\u200b\u6062\u590d\u200b\u4e0a\u4e0b\u6587\u200b sret \u200b\u8fd4\u56de\u200b\u6b7b\u5faa\u73af\u200b\n- `test`: \u200b\u6b7b\u5faa\u73af\u200b\u76f4\u5230\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u91cd\u590d\u200b\u4e0a\u8ff0\u200b\u6d41\u7a0b\u200b\n
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab2-%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab2 \u200b\u7ebf\u7a0b\u200b\u8c03\u5ea6","text":"

        Abstract

        \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u7684\u200b\u8fd0\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

        \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

        \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

        \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab2-%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
        - `opensbi`\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `task_init`: \u200b\u5b8c\u6210\u200b\u5bf9\u200b\u6240\u6709\u200b\u7ebf\u7a0b\u200b\u7684\u200b PCB \u200b\u7684\u200b\u521d\u59cb\u5316\u200b(1)\uff0c\u200b\u5305\u62ec\u200b\u5f53\u524d\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b idle \u200b\u7ebf\u7a0b\u200b\n        - `test_init`: \u200b\u8be5\u200b\u51fd\u6570\u8c03\u7528\u200b\u4f1a\u586b\u200b\u597d\u200b task_test_counter \u200b\u548c\u200b 1task_test_priority \u200b\u4e24\u4e2a\u200b\u6570\u7ec4\u200b\u7528\u4e8e\u200b\u7ed9\u200b\u6211\u4eec\u200b\u540e\u7eed\u200b\u521d\u59cb\u5316\u200b\u4f7f\u7528\u200b\n        - \u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\u4f5c\u4e3a\u200b idle \u200b\u7684\u200b PCB\uff0c\u200b\u586b\u5199\u200b\u5e76\u4e14\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b current\n        - \u200b\u8fed\u4ee3\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7ebf\u7a0b\u200b\u5206\u914d\u200b\u5e76\u200b\u586b\u5199\u200b PCB\uff0c\u200b\u6ce8\u610f\u200b\u5176\u4e2d\u200b ra \u200b\u548c\u200b sp \u200b\u7684\u200b\u8bbe\u7f6e\u200b\n            - ra: ra \u200b\u56fa\u5b9a\u200b\u4e3a\u200b__dummy\uff0c\u200b\u8fd9\u662f\u200b\u6211\u4eec\u200b\u4e3a\u200b\u7ebf\u7a0b\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u540e\u200b\u8bbe\u7f6e\u200b\u7684\u200b\u8fd4\u56de\u200b\u5730\u5740\u200b\n            - sp: \u200b\u76f4\u63a5\u200b\u7528\u200b\u5206\u914d\u200b\u7ed9\u200b PCB \u200b\u7684\u200b\u8fd9\u200b\u4e00\u9875\u200b\u505a\u6808\u200b\uff0c\u200b\u6808\u9876\u200b\u81ea\u7136\u200b\u5c31\u662f\u200b PCB \u200b\u5730\u5740\u200b+4K\n- `start_kernel`: \u200b\u8fdb\u5165\u200b test()\u200b\u6b7b\u5faa\u73af\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u4fdd\u5b58\u200b\u597d\u200b\u4e0a\u4e0b\u6587\u200b\u540e\u200b\u8c03\u7528\u200b\u4e2d\u65ad\u200b\u5904\u7406\u7a0b\u5e8f\u200b trap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u540e\u200b\uff0c\u200b\u8bbe\u7f6e\u200b\u4e0b\u6b21\u200b\u4e2d\u65ad\u200b\u65f6\u95f4\u200b\uff0c\u200b\u8fdb\u5165\u200b do_timer()\u200b\u68c0\u67e5\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u5269\u4f59\u65f6\u95f4\u200b\n- `do_timer`: \u200b\u5982\u679c\u200b\u662f\u200b idle \u200b\u6216\u8005\u200b\u65f6\u95f4\u200b\u7528\u5c3d\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule()\u200b\u8c03\u5ea6\u200b\u8d70\u200b\uff0c\u200b\u5426\u5219\u200b\u65f6\u95f4\u200b\u51cf\u4e00\u200b\n- `schedule`: \u200b\u6839\u636e\u200b policy \u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b\uff0c\u200b\u8c03\u7528\u200b switch_to()\u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b(2)\uff0c\u200b\u5982\u679c\u200b\u6240\u6709\u200b\u7ebf\u7a0b\u200b\u65f6\u95f4\u200b\u90fd\u200b\u7528\u200b\u5b8c\u200b\u4e86\u200b\u5c31\u200b\u5148\u200b\u521d\u59cb\u5316\u200b\u65f6\u95f4\u200b\u518d\u200b\u9009\u62e9\u200b\n- `switch_to`: \u200b\u524d\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200b PCB\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u7ebf\u7a0b\u200b\u7684\u200b PCB(3)\n- `__dummy`: \u200b\u4ece\u200b__switch_to \u200b\u8fd4\u56de\u200b\uff0c\u200b\u8fd4\u56de\u200b\u5730\u5740\u200b\u5c31\u662f\u200b PCB \u200b\u4e2d\u200b\u6062\u590d\u200b\u7684\u200b__dummy.\u200b\u6211\u4eec\u200b\u5728\u200b dummy \u200b\u4e2d\u200b\u7ed3\u675f\u200b\u6b64\u6b21\u200b\u4e2d\u65ad\u200b\u7528\u200b sret \u200b\u56de\u5230\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u6267\u884c\u200b\u7684\u200b\u51fd\u6570\u200b dummy\n- `dummy`: \u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u4e3b\u200b\u51fd\u6570\u200b\uff0c\u200b\u5207\u6362\u200b\u56de\u6765\u200b\u540e\u200b\u8fdb\u884c\u200b\u4e00\u6b21\u200b\u8f93\u51fa\u200b\u7136\u540e\u200b\u5faa\u73af\u200b\u7b49\u5f85\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u4e00\u822c\u200b\u662f\u200b\u5269\u4f59\u65f6\u95f4\u200b\u51cf\u4e00\u200b\u7136\u540e\u200b\u7ee7\u7eed\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u95f4\u200b\u7528\u200b\u5b8c\u200b\uff0c\u200b\u518d\u6b21\u200b\u8fdb\u5165\u200b schedule \u200b\u5faa\u73af\u200b\n
        1. \u200b\u4e5f\u200b\u5c31\u662f\u200b\u5e2e\u200b\u6bcf\u4e2a\u200b\u7ebf\u7a0b\u200b\u586b\u597d\u200b task_struct
        2. \u200b\u5bf9\u4e8e\u200b\u8fd9\u4e2a\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u8d70\u200b\u7684\u200b\u7ebf\u7a0b\u200b\u6765\u8bf4\u200b\uff0c\u200b\u4ed6\u200b\u53ea\u662f\u200b\u8c03\u7528\u200b\u4e86\u200b switch_to \u200b\u51fd\u6570\u200b\uff0c\u200b\u7136\u540e\u200b\u7b49\u200b\u7740\u200b\u518d\u200b\u8fd4\u56de\u200b\u7f62\u4e86\u200b.\u200b\u867d\u7136\u200b\u5b9e\u9645\u4e0a\u200b CPU \u200b\u628a\u200b\u6b64\u200b\u7ebf\u7a0b\u200b\u8e22\u200b\u5f00\u53bb\u200b\u5e72\u200b\u522b\u7684\u200b\u6d3b\u200b\u4e86\u200b\uff0c\u200b\u4f46\u672c\u200b\u7ebf\u7a0b\u200b\u5e76\u4e0d\u77e5\u9053\u200b.\u200b\u6240\u4ee5\u200b CPU \u200b\u518d\u6b21\u200b\u8c03\u5ea6\u200b\u56de\u6b64\u200b\u7ebf\u7a0b\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5c31\u200b\u8be5\u200b\u4ece\u200b switch_to \u200b\u51fd\u6570\u200b\u8fd4\u56de\u200b\uff0c\u200b\u4ece\u800c\u200b\u8ba9\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u65e0\u611f\u200b\u8854\u63a5\u200b.
        3. \u200b\u52a0\u8f7d\u200b\u540e\u200b\u6211\u4eec\u200b\u7684\u200b sp \u200b\u4f1a\u8bbe\u200b\u4e3a\u200b\u4e4b\u524d\u200b\u5206\u914d\u200b\u9875\u200b\u7684\u200b\u9876\u7aef\u200b\uff0cra \u200b\u4f1a\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b__dummy\uff0c\u200b\u8fd9\u200b\u90fd\u200b\u662f\u200b\u521d\u59cb\u5316\u200b\u65f6\u200b\u8bbe\u8ba1\u200b\u7684\u200b
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab2-%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6/#_1","title":"\u6ce8\u610f\u4e8b\u9879","text":"

        \u200b\u6ce8\u610f\u200b\u5230\u200b\u6211\u4eec\u200b\u5bf9\u4e8e\u200b\u975e\u200b idle \u200b\u7ebf\u7a0b\u200b\u7b2c\u4e00\u6b21\u200b\u4ece\u200b __switch_to \u200b\u8fd4\u56de\u200b\u7684\u200b\u90fd\u200b\u662f\u200b __dummy\uff0c \u200b\u8fd9\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b PCB \u200b\u88ab\u200b\u6062\u590d\u200b\u51fa\u6765\u200b\u7684\u200b ra \u200b\u51b3\u5b9a\u200b\u7684\u200b

        \u200b\u4f46\u662f\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u7b2c\u4e8c\u6b21\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5b83\u200b\u6062\u590d\u200b\u7684\u200b PCB \u200b\u5c31\u662f\u200b\u5b83\u200b\u4e4b\u524d\u200b\u81ea\u5df1\u200b\u5b58\u200b\u4e0b\u6765\u200b\u7684\u200b\u800c\u200b\u4e0d\u518d\u200b\u662f\u200b\u521d\u59cb\u5316\u200b\u7684\u200b.\u200b\u8fd9\u4e2a\u200b\u5b58\u200b\u4e0b\u6765\u200b\u7684\u200b ra \u200b\u5c31\u662f\u200b switch_to\uff0c__switch_to \u200b\u51fd\u6570\u200b\u8fd0\u884c\u200b\u65f6\u200b\u7684\u200b ra \u200b\u5f53\u7136\u200b\u662f\u200b__switch_to \u200b\u7684\u200b\u8c03\u7528\u8005\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab3 \u200b\u865a\u62df\u5185\u5b58","text":"

        Abstract

        \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

        \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

        \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

        \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
        - `opensbi`\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b(1)\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b(2)\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u81f3\u6b64\u200b\u865a\u62df\u5185\u5b58\u200b\u5df2\u7ecf\u200b\u542f\u52a8\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5229\u7528\u200b mm \u200b\u4e2d\u200b\u7684\u200b\u51fd\u6570\u200b\u5206\u914d\u200b\u65b0\u200b\u7684\u200b\u9875\u200b\u6765\u200b\u8bbe\u7f6e\u200b\u591a\u7ea7\u200b\u5206\u6bb5\u200b\u9875\u8868\u200b\uff0c\u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b(3)\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n- `start_kernel`: \u200b\u8fdb\u5165\u200b test \u200b\u6b7b\u5faa\u73af\u200b\uff0c\u200b\u7b49\u5f85\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u8d70\u200b\n
        1. \u200b\u6ce8\u610f\u200b\u8981\u200b\u4f7f\u7528\u200b\u6808\u200b\u7684\u200b\u7269\u7406\u5730\u5740\u200b\uff0c\u200b\u6b64\u65f6\u200b\u7b26\u53f7\u8868\u200b\u91cc\u200b\u7684\u200b\u90fd\u200b\u662f\u200b\u865a\u62df\u5730\u5740\u200b
        2. \u200b\u6ce8\u610f\u200b\u8fd9\u91cc\u200b\u8df3\u200b\u586b\u8868\u200b\u8981\u200b\u586b\u200b\u76f4\u63a5\u200b\u6620\u5c04\u200b\u548c\u200b\u7b49\u503c\u200b\u6620\u5c04\u200b\u4e24\u6bb5\u200b
        3. \u200b\u786e\u5b9a\u200b\u597d\u200b\u4e0d\u540c\u200b\u6bb5\u200b\u7684\u200b\u7269\u7406\u200b\u865a\u62df\u5730\u5740\u200b\u548c\u200b\u6743\u9650\u200b\u7b49\u200b\uff0c\u200b\u8c03\u7528\u200b creat_mapping \u200b\u51fd\u6570\u200b\u5206\u914d\u200b\u5e76\u200b\u586b\u5199\u200b\u9875\u8868\u200b\uff0c\u200b\u6ce8\u610f\u200b\u9875\u8868\u200b\u9879\u5747\u200b\u4f7f\u7528\u200b\u7269\u7406\u5730\u5740\u200b
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#_1","title":"\u6ce8\u610f\u4e8b\u9879","text":""},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#satp","title":"\u5199\u200b satp","text":"

        \u200b\u6211\u4eec\u200b\u542f\u7528\u200b\u865a\u62df\u5185\u5b58\u200b\u7684\u200b\u90a3\u200b\u4e00\u6b65\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5199\u200b satp \u200b\u7684\u200b\u90a3\u200b\u4e00\u6b65\u200b\u53ea\u662f\u200b\u4e00\u53e5\u200bcsrw\uff0c\u200b\u6307\u4ee4\u200b\u5199\u200b\u5b8c\u200b\u5bc4\u5b58\u5668\u200b\u4e5f\u200b\u4e0d\u4f1a\u200b\u5e72\u4ec0\u4e48\u200b\u989d\u5916\u200b\u7684\u200b\u4e8b\u60c5\u200b\uff0cCP \u200b\u8fd8\u662f\u200b\u8981\u200b\u7ee7\u7eed\u200b\u53bb\u200b PC+4 \u200b\u6267\u884c\u200b\u4e0b\u200b\u4e00\u6761\u200b\u6307\u4ee4\u200b.

        \u200b\u6240\u4ee5\u200b PC+4 \u200b\u8fd9\u4e2a\u200b\u5730\u5740\u200b\u5728\u200b\u865a\u62df\u5185\u5b58\u200b\u4e0b\u8be5\u200b\u600e\u4e48\u200b\u53d6\u6307\u200b(1)\uff0c\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u5c31\u662f\u200b\u601d\u8003\u9898\u200b\u6240\u200b\u5173\u5fc3\u200b\u7684\u200b.

        1. \u200b\u6709\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6620\u5c04\u200b\u5417\u200b\uff0c\u200b\u6216\u8005\u200b\u662f\u200b\u7528\u200b\u4e2d\u65ad\u200b\u5904\u7406\u200b\uff1f
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#_2","title":"\u4e3a\u4ec0\u4e48\u200b\u7b2c\u4e00\u6b21\u200b\u6211\u4eec\u200b\u542f\u7528\u200b\u7684\u200b\u9875\u8868\u200b\u662f\u200b\u4e00\u7ea7\u200b\u7684","text":"

        \u200b\u6587\u6863\u200b\u4e2d\u200b\u5176\u5b9e\u200b\u5df2\u7ecf\u200b\u6709\u200b\u94fe\u63a5\u200b\u6307\u5411\u200b\u4e86\u200b\u89e3\u91ca\u200b\u8fd9\u200b\u4e00\u70b9\u200b\u7684\u200b\u6587\u6863\u200b\uff0c\u200b\u5177\u4f53\u200b\u800c\u8a00\u200b\uff0c\u200b\u5728\u200b\u8fd9\u6bb5\u200b\u63cf\u8ff0\u200b\u8f6c\u5316\u200b\u865a\u62df\u5185\u5b58\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u7684\u200b\u624b\u518c\u200b\u4e2d\u200b

        \u200b\u4ed4\u7ec6\u9605\u8bfb\u200b\uff0c\u200b\u5176\u4e2d\u200b\u7b2c\u56db\u70b9\u200b\u63d0\u5230\u200b\u82e5\u200b\u5f53\u524d\u9875\u200b\u8868\u9879\u200b\u7684\u200b\u6743\u9650\u200b\u8868\u660e\u200b\u4e86\u200b\u53ef\u8bfb\u200b\u6216\u8005\u200b\u53ef\u200b\u6267\u884c\u200b\uff0c\u200b\u90a3\u4e48\u200b\u5c31\u200b\u4f1a\u200b\u5f53\u4f5c\u200b\u662f\u200b\u6700\u540e\u200b\u4e00\u7ea7\u200b\u9875\u8868\u200b\uff0c\u200b\u5426\u5219\u200b\u624d\u200b\u4f1a\u200b\u628a\u200b\u5b83\u200b\u5f53\u4f5c\u200b\u67d0\u200b\u4e00\u7ea7\u200b\u7684\u200b\u9875\u8868\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#debug","title":"debug \u200b\u6ce8\u610f","text":"
        • \u200b\u5f53\u200b\u6211\u4eec\u200b\u6309\u7167\u200b\u6587\u6863\u200b\u4fee\u6539\u200b\u4e86\u200b\u94fe\u63a5\u200b\u6587\u4ef6\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b gdb \u200b\u4e2d\u200b\u76f4\u63a5\u200b\u7528\u200b\u7b26\u53f7\u200b\u6765\u200b\u6253\u65ad\u200b\u70b9\u200b\u4e4b\u7c7b\u200b\u7684\u200b\u64cd\u4f5c\u200b\u5c31\u200b\u90fd\u200b\u662f\u200b\u6309\u7167\u200b\u4fee\u6539\u200b\u4e86\u200b\u94fe\u63a5\u200b\u6587\u4ef6\u200b\u4e4b\u540e\u200b\u7684\u200b\u865a\u62df\u5730\u5740\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u542f\u7528\u200b\u865a\u62df\u5185\u5b58\u200b\u4e4b\u524d\u200b\u4e3a\u4e86\u200b\u5728\u200b\u6b63\u786e\u200b\u7684\u200b\u7269\u7406\u5730\u5740\u200b\u6253\u65ad\u200b\u70b9\u200b\uff0c\u200b\u9700\u8981\u200b\u624b\u52a8\u200b\u8f93\u5165\u200b\u5730\u5740\u200b.
        • \u200b\u5982\u679c\u200b\u4f60\u200b\u8ddf\u200b\u6211\u200b\u4e00\u6837\u200b\u6539\u5b8c\u200b\u9875\u8868\u200b\u6ca1\u4e8b\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e00\u200b\u5237\u65b0\u200b tlb \u200b\u5c31\u200b\u5bc4\u200b\u4e86\u200b.\u200b\u4e8e\u200b\u6211\u200b\u7684\u200b\u7ecf\u9a8c\u200b\u800c\u8a00\u200b\uff0c\u200b\u662f\u200b\u9875\u8868\u200b\u5199\u200b\u7684\u200b\u6709\u200b\u95ee\u9898\u200b.
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab4 \u200b\u7528\u6237\u200b\u6001","text":"

        Abstract

        \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b

        \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

        \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

        \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
        - `opensbi` \u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus(1) \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u542f\u52a8\u200b\u865a\u62df\u5185\u5b58\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n        - \u200b\u5bf9\u4e8e\u200b idle \u200b\u4ee5\u5916\u200b\u7684\u200b\u7ebf\u7a0b\u200b\uff0c\u200b\u9700\u8981\u200b\u5728\u200b task_struct \u200b\u4e2d\u200b\u989d\u5916\u200b\u7ed9\u5b9a\u200b\u4ee5\u4e0b\u200b\u4fe1\u606f\u200b\uff1a\n            - `sepc`: \u200b\u6b64\u200b\u7ebf\u7a0b\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u540e\u200b\u4ece\u200b S Mode \u200b\u56de\u200b U Mode \u200b\u7684\u200b\u5730\u5740\u200b\uff0c\u200b\u663e\u7136\u200b\u5c31\u662f\u200b\u7528\u6237\u7a0b\u5e8f\u200b\u8d77\u59cb\u200b\u5730\u5740\u200b USER_START\n            - `sscratch`: \u200b\u7528\u6237\u200b\u6808\u9876\u200b\uff0c\u200b\u7ea6\u5b9a\u200b\u4e3a\u200b USER_END\n            - `sstatus`: \u200b\u8fdb\u884c\u200b\u8bbe\u7f6e\u200b\u4f7f\u5f97\u200b sret \u200b\u540e\u200b\u6211\u4eec\u200b\u56de\u5230\u200b U Mode \u200b\u800c\u200b\u975e\u200b S Mode\n            - `satp`: \u200b\u6bcf\u4e2a\u200b\u8fdb\u7a0b\u200b\u90fd\u200b\u6709\u200b\u81ea\u5df1\u200b\u7684\u200b\u7269\u7406\u5730\u5740\u200b\u7a7a\u95f4\u200b\u548c\u200b\u865a\u62df\u5730\u5740\u200b\u7a7a\u95f4\u200b\uff0c\u200b\u5f7c\u6b64\u200b\u9694\u79bb\u200b\n                - \u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u5404\u200b\u8fdb\u7a0b\u200b\u95f4\u200b\u9694\u79bb\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u200b\u9700\u8981\u200b\u6bcf\u4e2a\u200b\u8fdb\u7a0b\u200b\u5404\u81ea\u200b\u6709\u200b\u4e00\u4efd\u200b\u4e8c\u8fdb\u5236\u200b\u7684\u200b\u6587\u4ef6\u200b\u7684\u200b\u62f7\u8d1d\u200b(2)\n                - \u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\u62f7\u8d1d\u200b\u4e8c\u8fdb\u5236\u200b\u6587\u4ef6\u200b\u540e\u200b\uff0c\u200b\u65b0\u5efa\u200b\u9875\u8868\u200b,\u200b\u628a\u200b\u8fd9\u4e9b\u200b\u9875\u200b\u7684\u200b\u7269\u7406\u200b\u5730\u5740\u6620\u5c04\u200b\u5230\u200b USER_START \u200b\u5f00\u5934\u200b\u7684\u200b\u865a\u62df\u5730\u5740\u200b\n                - \u200b\u5206\u914d\u200b\u65b0\u7684\u4e00\u9875\u200b\u4f5c\u6808\u200b\uff0c\u200b\u628a\u200b\u8fd9\u200b\u4e00\u9875\u200b\u7684\u200b\u7269\u7406\u200b\u5730\u5740\u6620\u5c04\u200b\u5230\u200b USER_END-4K\n                - \u200b\u6839\u636e\u200b\u65b0\u200b\u9875\u8868\u200b\u5730\u5740\u200b\u8ba1\u7b97\u200bsatp\n- `start_kernel`: \u200b\u4e0d\u200b\u8fdb\u5165\u200b test \u200b\u7b49\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b(3)\uff0c\u200b\u800c\u662f\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule \u200b\u8c03\u5ea6\u200b\u8d70\u200b\n- `schedule`: \u200b\u6839\u636e\u200bpolicy\u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b,\u200b\u8c03\u7528\u200b switch_to \u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b\n- `switch_to`: \u200b\u83b7\u53d6\u200b\u5148\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200bPCB\u200b\u5730\u5740\u200b\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u5f53\u524d\u200b\u4e0a\u4e0b\u6587\u200b\u5b58\u5165\u200b PCB\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\u7684\u200b PCB(6)\n- `__dummy`: \u200b\u5207\u200b\u7528\u6237\u200b\u6808\u200b\uff0csret \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b(4)\uff0c\u200b\u800c\u200b sepc \u200b\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6307\u5b9a\u200b\u7684\u200b\u7684\u200b USER_START(5)\n- `USER_START`: \u200b\u5f00\u59cb\u200b\u6267\u884c\u200b\u7528\u6237\u200b\u6001\u200b\u4ee3\u7801\u200b\uff0c\u200b\u5305\u62ec\u200b\u5404\u79cd\u200b\u7cfb\u7edf\u200b\u8c03\u7528\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u95f4\u200b\u7247\u7528\u200b\u5b8c\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u5207\u200b\u7cfb\u7edf\u200b\u6808\u200b\uff0c\u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\uff0c\u200b\u8c03\u5ea6\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\n- `__switch_to`: \u200b\u540c\u200b\u4e0a\u200b\uff0c\u200b\u6b64\u540e\u200b\u8f6e\u6d41\u200b\u8c03\u5ea6\u200b\n
        1. \u200b\u6ce8\u610f\u200b\u5bf9\u200b sstatus \u200b\u7684\u200b\u8bbe\u7f6e\u200b\u7981\u6b62\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u8fd9\u200b\u610f\u5473\u7740\u200b\u6211\u4eec\u200b\u7684\u200b idle \u200b\u8fdb\u7a0b\u200b\u4e0d\u4f1a\u200b\u88ab\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u8c03\u5ea6\u200b\u8d70\u200b
        2. \u200b\u4e8c\u8fdb\u5236\u200b\u6587\u4ef6\u200b\u91cc\u200b\u6709\u200b\u4ee3\u7801\u200b\u548c\u200b\u6570\u636e\u200b\u7b49\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u90a3\u4e9b\u200b\u5168\u5c40\u53d8\u91cf\u200b\u6211\u4eec\u200b\u5f53\u7136\u200b\u5e0c\u671b\u200b\u5404\u200b\u8fdb\u7a0b\u200b\u9694\u79bb\u200b.\u200b\u65b9\u4fbf\u200b\u8d77\u200b\u89c1\u200b\u6211\u4eec\u200b\u5168\u90fd\u200b\u62f7\u8d1d\u200b
        3. \u200b\u56e0\u4e3a\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u4e4b\u524d\u200b\u5df2\u7ecf\u200b ban \u200b\u6389\u200b\u4e86\u200b
        4. \u200b\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b\u540e\u200b\u4e2d\u65ad\u200b\u624d\u200b\u91cd\u65b0\u200b\u4f7f\u80fd\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u76f4\u63a5\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u4e86\u200b sstatus \u200b\u7684\u200b SPIE
        5. sepc \u200b\u5728\u200b__switch_to \u200b\u4e2d\u200b\u5c31\u200b\u5df2\u7ecf\u200b load \u200b\u597d\u200b\u4e86\u200b
        6. \u200b\u8fd9\u91cc\u200b\u52a0\u8f7d\u200b\u7684\u200b PCB \u200b\u5c31\u662f\u200b\u6211\u4eec\u200b task_init \u200b\u7684\u200b\u65f6\u5019\u200b\u5199\u200b\u597d\u200b\u7684\u200b\uff0c\u200b\u6ce8\u610f\u200b\u8fd9\u91cc\u200b\u52a0\u8f7d\u200b\u7684\u200b ra \u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u65f6\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b__dummy
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_1","title":"\u6ce8\u610f\u4e8b\u9879","text":""},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#uapp","title":"uapp \u200b\u7684\u200b\u52a0\u8f7d","text":"

        \u200b\u5728\u200b vmlinux.lds \u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u6307\u5b9a\u200b\u7684\u200b uapp.S \u200b\u6587\u4ef6\u200b\u4f1a\u200b\u88ab\u200b\u52a0\u8f7d\u200b\u5230\u200b _sramdisk\uff0c_eramdisk \u200b\u4e4b\u95f4\u200b

        • \u200b\u5982\u679c\u200b uapp.S \u200b\u4e2d\u200b\u6211\u4eec\u200b\u7528\u200b\u7684\u200b\u662f\u200b\u7eaf\u200b\u4e8c\u8fdb\u5236\u200b\u6587\u4ef6\u200b\uff0c\u200b\u90a3\u4e48\u200b_sramdisk \u200b\u7b2c\u4e00\u884c\u200b\u5c31\u662f\u200b\u7a0b\u5e8f\u200b\u7b2c\u4e00\u884c\u200b
        • \u200b\u5982\u679c\u200b uapp.S \u200b\u4e2d\u200b\u6211\u4eec\u200b\u7528\u200b\u7684\u200b\u662f\u200b elf \u200b\u6587\u4ef6\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u89e3\u7801\u200b elf \u200b\u5934\u6765\u200b\u5b9a\u4f4d\u200b\u5177\u4f53\u200b\u7684\u200b\u4e8c\u8fdb\u5236\u200b\u4f4d\u7f6e\u200b\uff0c \u200b\u540c\u65f6\u200belf\u200b\u4e2d\u200b\u4e5f\u200b\u5236\u5b9a\u200b\u4e86\u200b\u7a0b\u5e8f\u200b\u5165\u53e3\u200b\u4e00\u7c7b\u200b\u7684\u200b\u4fe1\u606f\u200b
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#phdr-p_flags","title":"phdr->p_flags","text":"

        \u200b\u6ce8\u610f\u200b\u8fd9\u200b\u4e00\u9879\u200b\u867d\u7136\u200b\u662f\u200b\u58f0\u660e\u200b\u6743\u9650\u200b\u7684\u200b\u7684\u200b\u4f46\u200b\u5b9a\u4e49\u200b\u4e0d\u200b\u7b49\u540c\u4e8e\u200b\u9875\u8868\u200b\u9879\u200b\u7684\u200b perm\uff0c\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\uff1a

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_2","title":"\u6267\u884c\u200b\u6743\u9650","text":"

        \u200b\u6ce8\u610f\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u9875\u8868\u200b\u548c\u200b sstatus \u200b\u4fdd\u8bc1\u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u6001\u200b\u4ee3\u7801\u200b\u65f6\u200b\u6743\u9650\u200b\u68c0\u67e5\u200b\u80fd\u591f\u200b\u901a\u8fc7\u200b\uff0c\u200b\u5426\u5219\u200b\u4f1a\u200b\u5bfc\u81f4\u200b scause = 0xc \u200b\u7684\u200b inst page fault \u200b\u6b64\u65f6\u200b\u4e5f\u8bb8\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b gdb \u200b\u4e2d\u8bfb\u200b\u4fe1\u606f\u200b\u4f46\u662f\u200b\u4e00\u200b\u6267\u884c\u200b\u5c31\u200b\u51fa\u9519\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_3","title":"\u62f7\u8d1d\u200b\u95ee\u9898","text":"

        \u200b\u865a\u62df\u5185\u5b58\u200b\u6620\u5c04\u200b\u662f\u200b\u4ee5\u9875\u200b\u4e3a\u200b\u5355\u4f4d\u200b\u7684\u200b\uff0c\u200b\u6bd4\u5982\u200b 0x00010000 \u200b\u8d77\u200b\u7684\u200b\u865a\u62df\u200b\u9875\u200b\u6620\u5c04\u200b\u5230\u200b 0x80000000 \u200b\u8d77\u200b\u7684\u200b\u7269\u7406\u200b\u9875\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u5165\u53e3\u200b\u5728\u200b 0x100e8\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u5e94\u8be5\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u5165\u53e3\u200b\u62f7\u8d1d\u200b\u81f3\u200b 0x800000e8 \u200b\u800c\u200b\u4e0d\u662f\u200b 0x80000000

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_4","title":"\u6808\u200b\u5207\u6362","text":"

        \u200b\u5728\u200b_traps \u200b\u4e2d\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u4e00\u4e9b\u200b\u5185\u6838\u200b\u7ebf\u7a0b\u200b\u53d1\u8d77\u200b\u7684\u200b\u5f02\u5e38\u200b\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u5207\u6362\u200b\u6808\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u901a\u8fc7\u200b\u68c0\u67e5\u200b sscratch \u200b\u4e3a\u200b 0 \u200b\u6765\u200b\u786e\u8ba4\u200b\u8fd9\u200b\u4e00\u70b9\u200b

        \u200b\u8fd9\u4e00\u200b\u68c0\u67e5\u200b\u9700\u8981\u200b\u7528\u5230\u200b\u989d\u5916\u200b\u7684\u200b\u5bc4\u5b58\u5668\u200b\uff08\u200b\u5982\u200b t0\uff09\uff0c\u200b\u4f46\u662f\u200b\u6211\u4eec\u200b\u662f\u200b\u8981\u200b\u4fdd\u8bc1\u200b t0 \u200b\u7684\u200b\u503c\u200b\u5728\u200b\u4e2d\u65ad\u200b\u524d\u540e\u200b\u503c\u200b\u4e0d\u53d8\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u7528\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u538b\u6808\u200b\uff0c\u200b\u8fd4\u56de\u200b\u4e4b\u524d\u200b\u8bb0\u5f97\u200b\u6062\u590d\u200b

        Bug

        \u200b\u8fd9\u91cc\u200b\u63d0\u5230\u200b\u7684\u200b\u538b\u6808\u200b\u7684\u200b\u529e\u6cd5\u200b\u5728\u200b\u6b64\u5904\u200b\u4ecd\u7136\u200b\u53ef\u884c\u200b\uff0c\u200b\u4f46\u200b\u5728\u200bLab5\u200b\u4e2d\u200b\u4f1a\u200b\u9047\u5230\u200b\u95ee\u9898\u200b\uff0c\u200b\u73b0\u5728\u200b\u6709\u200b\u4e00\u4e2a\u200b\u66f4\u597d\u200b\u7528\u200b\u4e5f\u200b\u66f4\u200b\u7b80\u6d01\u200b\u7684\u200b\u65b9\u6cd5\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab5 Demand Paging","text":"

        Abstract

        \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
        - `opensbi` \u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u542f\u52a8\u200b\u865a\u62df\u5185\u5b58\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n        - \u200b\u5bf9\u4e8e\u200b idle \u200b\u4ee5\u5916\u200b\u7684\u200b\u7ebf\u7a0b\u200b\uff0c\u200b\u5728\u200btask_struct\u200b\u4e2d\u200b\u6dfb\u52a0\u200bstack\u200b\u548c\u200bsegment-01(1)\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4e24\u6bb5\u200bvma\n- `start_kernel`: \u200b\u4e0d\u200b\u8fdb\u5165\u200b test \u200b\u7b49\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u800c\u662f\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule \u200b\u8c03\u5ea6\u200b\u8d70\u200b\n- `schedule`: \u200b\u6839\u636e\u200bpolicy\u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b,\u200b\u8c03\u7528\u200b switch_to \u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b\n- `switch_to`: \u200b\u83b7\u53d6\u200b\u5148\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200bPCB\u200b\u5730\u5740\u200b\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u5f53\u524d\u200b\u4e0a\u4e0b\u6587\u200b\u5b58\u5165\u200b PCB\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\u7684\u200b PCB\n- `__dummy`: \u200b\u5207\u200b\u7528\u6237\u200b\u6808\u200b\uff0csret \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b\uff0c\u200b\u800c\u200b sepc \u200b\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6307\u5b9a\u200b\u7684\u200b\u7684\u200b USER_START\n- `ENTRY`: PC\u200b\u8df3\u8f6c\u200b\u81f3\u200bENTRY\uff0c\u200b\u4f46\u662f\u200b\u6b64\u65f6\u200b\u8be5\u9875\u200b\u7684\u200b\u6620\u5c04\u200b\u5e76\u672a\u200b\u5b8c\u6210\u200b\uff0cPAGE FAULT\n- `_traps`: PAGE FAULT\uff0c\u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\u8fdb\u5165\u200btrap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200bPAGE FAULT\u200b\u540e\u200b\uff0c\u200b\u8c03\u7528\u200bdo_page_fault\n- `do_page_fault`: \u200b\u6839\u636e\u200bcurrent\u200b\u7684\u200bvma\u200b\u786e\u8ba4\u200b\u662f\u200b\u6bb5\u200b\u9519\u8bef\u200b\u3001\u200b\u6587\u4ef6\u200b\u9875\u200b\u7f3a\u9875\u200b\u8fd8\u662f\u200b\u533f\u540d\u200b\u9875\u200b\u7f3a\u9875\u200b\uff0c\u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\uff0c\u200b\u586b\u5199\u5185\u5bb9\u200b(2)\uff0c\u200b\u586b\u5199\u200b\u9875\u8868\u200b\uff0c\u200b\u8fd4\u56de\u200b\n- `_traps`: \u200b\u6062\u590d\u200b\u4e0a\u4e0b\u6587\u200b\u8fd4\u56de\u200b\uff0c\u200b\u6b64\u540e\u200b\u5bf9\u5e94\u200b\u9875\u200b\u5df2\u6709\u200b\u6620\u5c04\u200b\n- `ENTRY`: \u200b\u6062\u590d\u200b\u6267\u884c\u200b\uff0c\u200b\u6b64\u540e\u200b\u8c03\u5ea6\u200b\u6216\u8005\u200b\u9047\u5230\u200b\u65b0\u200b\u7684\u200b\u7f3a\u9875\u200b\u5747\u200b\u540c\u4e0a\u200b\u5904\u7406\u200b\n
        1. \u200b\u4e5f\u200b\u5373\u200breadelf\u200b\u65f6\u200b\u5f97\u5230\u200b\u7684\u200bsegment-01\uff0c\u200b\u5305\u62ec\u200b.text .rodata .bss
        2. \u200b\u6e05\u96f6\u200b\u6216\u8005\u200b\u62f7\u8d1d\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#_1","title":"\u6808\u200b\u5207\u6362\u200b\u95ee\u9898","text":"

        \u200b\u6587\u6863\u200b\u4e2d\u200b\u6307\u51fa\u200b\uff0c\u200b\u7531\u200b\u7528\u6237\u200b\u53d1\u8d77\u200b\u7684\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5728\u200b_traps\u200b\u5f00\u5934\u200b\u5207\u6362\u200b\u5230\u200b\u5185\u6838\u200b\u6808\u200b\uff0c\u200b\u4f46\u662f\u200b\u5bf9\u4e8e\u200b\u5185\u6838\u200b\u53d1\u8d77\u200b\u7684\u200b\u4e2d\u65ad\u200b\u5c31\u200b\u4e0d\u200b\u9700\u8981\u200b\u3002\u200b\u800c\u200b\u8981\u200b\u5224\u65ad\u200b\u4e2d\u65ad\u200b\u662f\u5426\u200b\u7531\u200b\u5185\u6838\u200b\u53d1\u8d77\u200b\u5c31\u8981\u200b\u5224\u65ad\u200bsscratch\u200b\u662f\u5426\u200b\u4e3a\u200b0\uff0c\u200b\u5728\u200blab4\u200b\u4e2d\u200b\u6211\u200b\u628a\u200bt0\u200b\u538b\u6808\u200b\u540e\u200b\u7528\u200bt0\u200b\u6765\u200b\u68c0\u9a8c\u200b\u3002

        \u200b\u4f46\u662f\u200b\u5728\u200blab5\u200b\u4e2d\u200b\u8fd9\u200b\u4e00\u200b\u65b9\u6cd5\u200b\u884c\u4e0d\u901a\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5f53\u200b\u6211\u4eec\u200b\u8bd5\u56fe\u200b\u628a\u200bt0\u200b\u538b\u6808\u200b\u7684\u200b\u65f6\u5019\u200b\u6211\u4eec\u200b\u7684\u200b\u6808\u200b\u53ef\u80fd\u200b\u6839\u672c\u5c31\u662f\u200b\u6ca1\u200b\u5206\u914d\u200b\u7684\u200b\u7528\u6237\u200b\u6808\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u4e2a\u200b\u538b\u6808\u200b\u7684\u200b\u884c\u4e3a\u200b\u53ea\u4f1a\u200b\u5f15\u53d1\u200b\u65b0\u200b\u7684\u200bPAGE FAULT\uff0c\u200b\u5982\u6b64\u200b\u6c38\u8fdc\u200b\u5faa\u73af\u200b\u3002

        \u200b\u4e3a\u4e86\u200b\u5bfb\u627e\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u53ef\u4ee5\u200b\u5148\u200b\u8bd5\u56fe\u200b\u53bb\u200b\u67e5\u770b\u200blinux\u200b\u65f6\u200b\u5982\u4f55\u200b\u89e3\u51b3\u200b\u8fd9\u4e00\u200b\u95ee\u9898\u200b\u7684\u200b\uff0c\u200b\u8fd9\u662f\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4ee3\u7801\u200b

        \u200b\u53ef\u4ee5\u200b\u770b\u5230\u200blinux\u200b\u4f7f\u7528\u200b\u4e86\u200btp\uff08thread pointer\uff09\u200b\u4ee5\u53ca\u200b\u6307\u4ee4\u200bcsrwr,\u200b\u524d\u8005\u200b\u5012\u200b\u4e0d\u662f\u200b\u5fc5\u8981\u200b\u7684\u200b\u4f7f\u7528\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e3b\u8981\u200b\u5173\u6ce8\u200b\u5230\u200bcsrwr\u200b\u6307\u4ee4\u200b\u53ef\u4ee5\u200b\u5b9e\u73b0\u200bcsr\u200b\u4e0e\u200b\u5176\u4ed6\u200b\u5bc4\u5b58\u5668\u200b\u7684\u200b\u4ea4\u6362\u200b\uff0c\u200b\u4ece\u800c\u200b\u6211\u4eec\u200bsp\u200b\u4e0e\u200bsscratch\u200b\u7684\u200b\u5207\u6362\u200b\u5c31\u200b\u4e0d\u200b\u9700\u8981\u200b\u5176\u4ed6\u200b\u5bc4\u5b58\u5668\u200b\u4e86\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u662f\u200b\u6b63\u786e\u200b\u7684\u200b\u89e3\u51b3\u200b\u65b9\u5f0f\u200b\u3002

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#page-fault","title":"PAGE FAULT","text":"

        \u200b\u5904\u7406\u200b\u7f3a\u9875\u200b\u5f02\u5e38\u200b\u65f6\u8981\u200b\u4ed4\u7ec6\u200b\u5904\u7406\u200b\u6587\u4ef6\u200b\u9875\u200b\u7684\u200b\u590d\u5236\u200b\u95ee\u9898\u200b\uff0c\u200b\u5982\u679c\u200b\u8981\u200b\u590d\u5236\u200b\u7684\u200b\u4e00\u9875\u200b\u4e2d\u200b\u65e2\u6709\u200bfile_content\uff0c\u200b\u4e5f\u200b\u6709\u200b\u4e00\u4e9b\u200b\u4e0d\u200b\u5728\u200bfile\u200b\u4e4b\u4e2d\u200b\u7684\u200b\uff08\u200b\u5982\u200bbss\u200b\u6bb5\u200b\uff09\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u9700\u8981\u200b\u5206\u522b\u200b\u5904\u7406\u200b\u8fd9\u200b\u4e24\u6bb5\u200b\uff0c\u200b\u524d\u8005\u200b\u590d\u5236\u200b\uff0c\u200b\u540e\u8005\u200b\u6e05\u96f6\u200b\u3002

        \u200b\u4ee5\u4e0b\u200b\u662f\u200b\u4e00\u79cd\u200b\u5904\u7406\u200b\u601d\u8def\u200b\uff1a

        • \u200b\u65e0\u8bba\u5982\u4f55\u200b\uff0c\u200b\u6e05\u96f6\u200b\u65b0\u200b\u9875\u200b
        • \u200b\u627e\u5230\u200bbad_addr\u200b\u6240\u5728\u200b\u9875\u200b\u7684\u200b\u5f00\u5934\u200b\u548c\u200b\u7ed3\u5c3e\u200b\u4e3a\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u62f7\u8d1d\u200b\u8d77\u200b\u5730\u5740\u200b\u548c\u200b\u7ec8\u200b\u5730\u5740\u200b
        • \u200b\u8d77\u200b\u5730\u5740\u200b\u4e0d\u200b\u5e94\u200b\u5c0f\u4e8e\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u5f00\u5934\u200b\u5730\u5740\u200bvm_start
        • \u200b\u8d77\u200b\u5730\u5740\u200b\u4e0d\u200b\u5e94\u200b\u5927\u4e8e\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u7ed3\u5c3e\u200b\u5730\u5740\u200bvm_start + vm_content_size_in_file
        • \u200b\u7ec8\u200b\u5730\u5740\u200b\u4e0d\u200b\u5e94\u200b\u5927\u4e8e\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u7ed3\u5c3e\u200b\u5730\u5740\u200bvm_start + vm_content_size_in_file
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#vmas","title":"vmas","text":"

        \u200b\u5728\u200bkernel\u200b\u7ec8\u200b\uff0c\u200b\u6211\u4eec\u200b\u5206\u914d\u200b\u4e86\u200b\u4e00\u200b\u6574\u9875\u200b\uff0c\u200b\u5176\u4e2d\u200b\u7684\u200b\u4f4e\u200b\u5730\u5740\u200b\u653e\u200b\u4e86\u200b\u4e2a\u200btask_struct\uff0c\u200b\u9ad8\u200b\u5730\u5740\u200b\u5c31\u662f\u200b\u6808\u9876\u200b\uff08\u200b\u5982\u4e0b\u200b\u56fe\u200b\uff0c\u200b\u6765\u81ea\u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff09\u3002\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8981\u200b\u7a0d\u5fae\u200b\u9650\u5236\u200b\u4e00\u4e0b\u200bvmas\u200b\u7684\u200b\u5927\u5c0f\u200b\uff0c\u200b\u4e0d\u80fd\u200b\u628a\u200b\u5206\u914d\u200b\u7684\u200b\u4e00\u9875\u200b\u5168\u7ed9\u200b\u4e86\u200b\uff0c\u200b\u8fd8\u8981\u200b\u7559\u70b9\u200b\u7ed9\u200b\u6808\u7528\u200b\u3002

                            \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u25c4\u2500\u2500\u2500 High Address\n                    \u2502             \u2502\n                    \u2502    stack    \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n              sp \u2500\u2500\u25ba\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n                    \u2502      \u2502      \u2502\n                    \u2502      \u25bc      \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n    4KB Page        \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502 task_struct \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u25c4\u2500\u2500\u2500 Low Address\n
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab6-fork/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab6 fork","text":"

        Abstract

        \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab6-fork/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
        - `opensbi` \u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u542f\u52a8\u200b\u865a\u62df\u5185\u5b58\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n- `start_kernel`: \u200b\u4e0d\u200b\u8fdb\u5165\u200b test \u200b\u7b49\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u800c\u662f\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule \u200b\u8c03\u5ea6\u200b\u8d70\u200b\n- `schedule`: \u200b\u6839\u636e\u200bpolicy\u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b,\u200b\u8c03\u7528\u200b switch_to \u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b\n- `switch_to`: \u200b\u83b7\u53d6\u200b\u5148\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200bPCB\u200b\u5730\u5740\u200b\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u5f53\u524d\u200b\u4e0a\u4e0b\u6587\u200b\u5b58\u5165\u200b PCB\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\u7684\u200b PCB\n- `__dummy`: \u200b\u5207\u200b\u7528\u6237\u200b\u6808\u200b\uff0csret \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b\uff0c\u200b\u800c\u200b sepc \u200b\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6307\u5b9a\u200b\u7684\u200b\u7684\u200b USER_START\n- `ENTRY`: PC\u200b\u8df3\u8f6c\u200b\u81f3\u200bENTRY\uff0c\u200b\u4f46\u662f\u200b\u6b64\u65f6\u200b\u8be5\u9875\u200b\u7684\u200b\u6620\u5c04\u200b\u5e76\u672a\u200b\u5b8c\u6210\u200b\uff0cPAGE FAULT\n- `_traps`: PAGE FAULT\uff0c\u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\u8fdb\u5165\u200btrap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200bPAGE FAULT\u200b\u540e\u200b\uff0c\u200b\u8c03\u7528\u200bdo_page_fault\n- `do_page_fault`: \u200b\u6839\u636e\u200bcurrent\u200b\u7684\u200bvma\u200b\u786e\u8ba4\u200b\u662f\u200b\u6bb5\u200b\u9519\u8bef\u200b\u3001\u200b\u6587\u4ef6\u200b\u9875\u200b\u7f3a\u9875\u200b\u8fd8\u662f\u200b\u533f\u540d\u200b\u9875\u200b\u7f3a\u9875\u200b\uff0c\u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\uff0c\u200b\u586b\u5199\u5185\u5bb9\u200b\uff0c\u200b\u586b\u5199\u200b\u9875\u8868\u200b\uff0c\u200b\u8fd4\u56de\u200b\n- `_traps`: \u200b\u6062\u590d\u200b\u4e0a\u4e0b\u6587\u200b\u8fd4\u56de\u200b\uff0c\u200b\u6b64\u540e\u200b\u5bf9\u5e94\u200b\u9875\u200b\u5df2\u6709\u200b\u6620\u5c04\u200b\n- `ENTRY`: \u200b\u6062\u590d\u200b\u6267\u884c\u200b\uff0c\u200b\u76f4\u5230\u200b\u8c03\u7528\u200bfork\n- `_traps`: \u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\uff0c\u200b\u8fdb\u5165\u200btrap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200bfork\u200b\u540e\u200b\uff0c\u200b\u8c03\u7528\u200bsys_clone\n- `sys_clone`: \u200b\u8fdb\u884c\u200b\u4e00\u5b9a\u200b\u7684\u200b\u62f7\u8d1d\u200b\u4ee5\u200b\u521d\u59cb\u5316\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u521d\u59cb\u5316\u200b\u5b8c\u6210\u200b\u540e\u200b\u52a0\u5165\u200b\u8c03\u5ea6\u200b\u961f\u5217\u200b\n    -  \u200b\u5c06\u7236\u200b\u8fdb\u7a0b\u200bkernel stack \u200b\u6240\u5728\u200b\u9875\u200b\u62f7\u8d1d\u200b\u4e00\u4efd\u200b\u7ed9\u5b50\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u5176\u4e2d\u200b\u5305\u62ec\u200b\n          - task_struct: \u200b\u4f4d\u4e8e\u200b\u8be5\u9875\u200b\u4f4e\u200b\u5730\u5740\u200b\uff0c\u200b\u5176\u4e2d\u200b\u5185\u5bb9\u200b\u5728\u200b__switch_to\u200b\u5230\u200b\u81f3\u5b50\u200b\u8fdb\u7a0b\u200b\u7684\u200b\u65f6\u5019\u200b\u4f1a\u200b\u88ab\u200b\u52a0\u8f7d\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u9879\u200b\u9700\u8981\u200b\u6539\u52a8\u200b\n              - pid: \u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u7684\u200b\u65b0\u200bpid\n              - thread.sp: \u200b\u6362\u5230\u5b50\u200b\u8fdb\u7a0b\u200b\u540e\u200b\u7cfb\u7edf\u200b\u6808\u200b\u7684\u200b\u8d77\u59cb\u200b\u5730\u5740\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5207\u6362\u200b\u8fc7\u6765\u200b\u65f6\u6808\u200b\u5185\u200b\u5df2\u6709\u200b\u6570\u636e\u200b\n              - thread.ra: __switch_to\u200b\u5230\u5b50\u200b\u8fdb\u7a0b\u200b\u540e\u200b\u7684\u200b\u8fd4\u56de\u200b\u5730\u5740\u200b\n              - thread.sscratch: \u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u5728\u200b\u5185\u6838\u200b\u6001\u200b\u7684\u200bsscratch\uff0c\u200b\u5728\u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u200b\u65f6\u4f1a\u200b\u4e0e\u200bsp\u200b\u4ea4\u6362\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5b9e\u8d28\u200b\u662f\u5b50\u200b\u8fdb\u7a0b\u200b\u7528\u6237\u200b\u6001\u200b\u7684\u200bsp (1)\n              - satp: \u200b\u6839\u636e\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u9875\u8868\u200b\u4fee\u6539\u200b\n              - pgd: \u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u9875\u8868\u200b\n          - pt_regs: \u200b\u4f4d\u4e8e\u200b\u8be5\u9875\u200b\u9ad8\u200b\u5730\u5740\u200b\uff0c\u200b\u5176\u4e2d\u200b\u5185\u5bb9\u200b\u5728\u5b50\u200b\u8fdb\u7a0b\u200b\u4ece\u200b\u5185\u6838\u200b\u6001\u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u65f6\u200b\u5c06\u200b\u4f1a\u200b\u88ab\u200b\u52a0\u8f7d\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u9879\u200b\u9700\u8981\u200b\u6539\u52a8\u200b  \n              - a0: \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u540e\u200b\u643a\u5e26\u200b\u7684\u200b\u8c03\u7528\u200b\u8fd4\u56de\u503c\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u5f97\u5230\u200b\u7684\u200bfork\u200b\u8fd4\u56de\u503c\u200b\uff0c0\n              - sepc: fork\u200b\u5bf9\u5e94\u200becall\u200b\u7684\u200b\u4e0b\u200b\u4e00\u6761\u200b\u6307\u4ee4\u200b\n- `_traps`: \u200b\u7236\u200b\u8fdb\u7a0b\u200bfork\u200b\u5b8c\u6bd5\u200b\uff0c\u200b\u643a\u5e26\u200b\u5b50\u200b\u8fdb\u7a0b\u200bpid\u200b\u6062\u590d\u200b\u7528\u6237\u200b\u6001\u200b\u4e0a\u4e0b\u6587\u200b\u8fd4\u56de\u200b\n- `fork`: \u200b\u56de\u5230\u200b\u7528\u6237\u200b\u6001\u200b\uff0c\u200b\u7ee7\u7eed\u6267\u884c\u200b\u76f4\u5230\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u8d70\u200b,\u200b\u968f\u540e\u200b\u8c03\u5ea6\u200b\u7b97\u6cd5\u200b\u9009\u62e9\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\n
        1. \u200b\u6b63\u5e38\u200b\u6765\u8bf4\u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u200b\u7684\u200bsp\u200b\u5e94\u8be5\u200b\u4ece\u200bpt_regs\u200b\u4e2d\u200b\u6062\u590d\u200b\uff08\u200b\u6587\u6863\u200b\u4e2d\u200b\u4e5f\u200b\u662f\u200b\u8fd9\u4e48\u200b\u8bf4\u200b\u7684\u200b\uff09\uff0c\u200b\u4f46\u200b\u6211\u200b\u5b9e\u8df5\u200b\u4e0a\u200b\u662f\u4ece\u200bsscratch\u200b\u6062\u590d\u200b\u7684\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u5e94\u8be5\u200b\u6839\u636e\u200b\u5177\u4f53\u200b\u5b9e\u73b0\u200b\u4fee\u6539\u200b\u3002
        "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab6-fork/#_1","title":"\u8c03\u5ea6\u200b\u7b97\u6cd5","text":"

        \u200b\u6211\u4eec\u200b\u7684\u200btask\u200b\u6570\u7ec4\u200b\u5927\u5c0f\u200b\u662f\u200bNR_TASKS,\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8981\u200b\u505a\u5230\u200b

        • \u200b\u53ea\u200b\u521d\u59cb\u5316\u200b\u6307\u5b9a\u200b\u6570\u91cf\u200b\u7684\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u586b\u6ee1\u200b\u6574\u4e2a\u200b\u6570\u7ec4\u200b
        • \u200b\u8c03\u5ea6\u200b\u7684\u200b\u65f6\u5019\u200b\u8981\u200b\u904d\u5386\u200b\u6570\u7ec4\u200b\uff0c\u200b\u4f46\u662f\u200b\u53ea\u4f1a\u200b\u8c03\u5ea6\u200b\u90a3\u4e9b\u200b\u6709\u6548\u200b\u7684\u200btask
        "},{"location":"blog/y-combinator-%E4%B8%8E%E9%80%92%E5%BD%92/","title":"Y-combinator \u200b\u4e0e\u200b\u9012\u5f52","text":"

        Abstract

        \u200b\u4ecb\u7ecd\u200b\u4e86\u200b lambda \u200b\u6f14\u7b97\u200b\u4e2d\u200b\u7684\u200b Y-combinator\uff0c\u200b\u4e3b\u8981\u200b\u662f\u200b\u5e0c\u671b\u200b\u7528\u200b\u62bd\u8c61\u200b\u7684\u200b\u601d\u60f3\u200b\u6765\u200b\u5e2e\u52a9\u200b\u7406\u89e3\u200b

        \u200b\u9996\u5148\u200b\u8bf7\u200b\u770b\u200b xg\u200b\u7684\u200b\u7b14\u8bb0\u200b\u8fd9\u91cc\u200b\uff0c\u200b\u63a8\u5bfc\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u8bb2\u200b\u7684\u200b\u5f88\u200b\u6e05\u695a\u200b\u4e86\u200b

        \u200b\u8fd9\u91cc\u200b\u4e3b\u8981\u200b\u8ba8\u8bba\u200b\u53e6\u5916\u200b\u51e0\u4e2a\u200b\u95ee\u9898\u200b

        "},{"location":"blog/y-combinator-%E4%B8%8E%E9%80%92%E5%BD%92/#y-combinator_1","title":"\u4e0d\u7528\u200b Y-combinator \u200b\u53ef\u4ee5\u200b\u5417","text":"

        \u200b\u5f53\u7136\u200b\u53ef\u4ee5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u6587\u4e2d\u200b\u7684\u200bproto proto\u200b\u672c\u6765\u200b\u5c31\u662f\u200b\u7b49\u4ef7\u200b\u4e8e\u200bY u\u200b\u7684\u200b\uff0c\u200b\u8981\u200b\u7528\u200b\u8fd9\u79cd\u200b\u65b9\u5f0f\u200b\u5b9e\u73b0\u200b\u9012\u5f52\u200b\u4e3b\u8981\u200b\u8d70\u200b\u4ee5\u4e0b\u200b\u56db\u6b65\u200b

        1. \u200b\u5199\u51fa\u200b\u8c03\u7528\u200b\u81ea\u5df1\u200b\u7684\u200b\u90a3\u200b\u4e00\u7248\u200b\u7684\u200b lambda: \\(fact_1 = \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (fact_1\\ (pred\\ n)))\\)
        2. \u200b\u628a\u200b\u5bf9\u200b\u81ea\u5df1\u200b\u7684\u200b\u8c03\u7528\u200b\u6539\u6210\u200b\u5bf9\u200b\u53c2\u6570\u200b f \u200b\u7684\u200b\u8c03\u7528\u200b\uff1a\\(fact_2 = \\lambda f. \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (f\\ (pred\\ n)))\\)
        3. \u200b\u628a\u200b f \u200b\u6539\u5199\u200b\u6210\u200b f f: \\(fact_3 = \\lambda f. \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (f\\ f\\ (pred\\ n)))\\)
        4. \u200b\u5bf9\u200b\u5f97\u5230\u200b\u7684\u200b\u65b0\u200b\u7684\u200b lambda \u200b\u8868\u8fbe\u5f0f\u200b\u5e94\u7528\u200b\u81ea\u5df1\u200b\uff1a\\(fact = fact_3\\ fact_3\\)

        \u200b\u76f4\u63a5\u200b\u770b\u200b\u8fd9\u200b\u73a9\u610f\u200b\u8fd8\u662f\u200b\u6709\u70b9\u200b\u62bd\u8c61\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b\u62bd\u8c61\u200b\u7684\u200b\u601d\u60f3\u200b\u6765\u200b\u770b\u770b\u200b\u8fd9\u4e2a\u200b\u4e1c\u897f\u200b\u6709\u200b\u54ea\u4e9b\u200b\u6027\u8d28\u200b\uff0c\u200b\u800c\u200b\u820d\u53bb\u200b\u4e2d\u95f4\u200b\u5316\u7b80\u200b\u7684\u200b\u7ec6\u8282\u200b

        \\(fact_3\\ fact_3\\ 0 \\rightarrow 1\\)\\(fact_3\\ fact_3\\ 2 \\rightarrow *\\ 2\\ (fact_3\\ fact_3\\ 1)\\) \\[\\begin{align} &fact_3\\ fact_3\\ 0 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (f\\ f\\ (pred\\ n))))\\ fact_3\\ 0 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (fact_3\\ fact_3\\ (pred\\ n))))\\ 0 \\\\ =& is0\\ 0\\ 1\\ ( *\\ 0\\ (fact_3\\ fact_3\\ (pred\\ 0))) \\\\ =& 1 \\end{align}\\] \\[\\begin{align} &fact_3\\ fact_3 2 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (f\\ f\\ (pred\\ n))))\\ fact_3\\ 2 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (fact_3\\ fact_3\\ (pred\\ n))))\\ 2 \\\\ =& is0\\ 2\\ 1\\ ( *\\ 2\\ (fact_3\\ fact_3\\ (pred\\ 2))) \\\\ =& *\\ 2\\ (fact_3\\ fact_3\\ 1) \\\\ \\end{align}\\]

        \u200b\u4ee5\u4e0a\u200b\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u6027\u8d28\u200b\u662f\u200b base case\uff0c\u200b\u7b2c\u4e8c\u4e2a\u200b\u6027\u8d28\u200b\u662f\u200b indection case\uff0c\u200b\u53ef\u4ee5\u200b\u663e\u7136\u200b\u770b\u51fa\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u9012\u5f52\u200b

        "},{"location":"blog/y-combinator-%E4%B8%8E%E9%80%92%E5%BD%92/#y-combinator_2","title":"Y-combinator \u200b\u7684\u200b\u5b9e\u4f8b","text":"

        \u200b\u4e0a\u9762\u200b\u90a3\u6837\u200b\u5df2\u7ecf\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u9012\u5f52\u200b\uff0c\u200b\u4e3a\u4ec0\u4e48\u200b\u8fd8\u200b\u9700\u8981\u200b Y-combinator? \u200b\u56e0\u4e3a\u200b\u4e0a\u9762\u200b\u7684\u200b\u5b9e\u73b0\u200b\u65b9\u6cd5\u200b\u4e2d\u200b\u9012\u5f52\u200b\u7684\u200b\u903b\u8f91\u200b\u548c\u200b\u51fd\u6570\u200b\u7684\u200b\u903b\u8f91\u200b\u6df7\u5728\u200b\u4e86\u200b\u4e00\u8d77\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b\u9012\u5f52\u200b\u7684\u200b\u903b\u8f91\u200b\u62bd\u8c61\u200b\u6210\u200b Y\uff0c\u200b\u628a\u200b\u51fd\u6570\u200b\u7684\u200b\u903b\u8f91\u200b\u62bd\u8c61\u200b\u6210\u200b u\uff0c\u200b\u5bf9\u200b Y \u200b\u5e94\u7528\u200b u \u200b\u5c31\u200b\u5f97\u5230\u200b\u4e86\u200b\u9012\u5f52\u200b\u7684\u200b u.\u200b\u5177\u4f53\u6765\u8bf4\u200b\u53ef\u4ee5\u200b\u5206\u6210\u200b\u4ee5\u4e0b\u200b\u4e09\u6b65\u200b

        1. \u200b\u5199\u51fa\u200b\u8c03\u7528\u200b\u81ea\u5df1\u200b\u7684\u200b\u90a3\u200b\u4e00\u7248\u200b\u7684\u200b lambda: \\(fact_1 = \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (fact_1\\ (pred\\ n)))\\)
        2. \u200b\u628a\u200b\u5bf9\u200b\u81ea\u5df1\u200b\u7684\u200b\u8c03\u7528\u200b\u6539\u6210\u200b\u5bf9\u200b\u53c2\u6570\u200b f \u200b\u7684\u200b\u8c03\u7528\u200b\uff1a\\(fact_2 = \\lambda f. \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (f\\ (pred\\ n)))\\)
        3. \u200b\u5e94\u7528\u200b\u4e8e\u200b Y-combinator: \\(fact = Y\\ fact_2\\)

        \u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u7b80\u6d01\u200b\u4e86\u200b\u8bb8\u591a\u200b\uff0c\u200b\u4e0b\u9762\u200b\u518d\u200b\u6765\u200b\u4ecb\u7ecd\u200b\u4e00\u4e0b\u200b Y-combinator \u200b\u672c\u8eab\u200b\uff0c\u200b\u76f4\u63a5\u200b\u770b\u200b\u4ed6\u200b\u7684\u200b\u5185\u5bb9\u200b\u7684\u8bdd\u200b\u4e5f\u200b\u662f\u200b\u4e00\u200b\u5768\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5229\u7528\u200b\u62bd\u8c61\u200b\u7684\u200b\u601d\u60f3\u200b\uff0c\u200b\u4e0d\u7ba1\u200b\u4ed6\u200b\u7684\u200b\u5185\u5bb9\u200b\uff0c\u200b\u4e5f\u200b\u4e0d\u5728\u4e4e\u200b\u5316\u7b80\u200b\u7684\u200b\u7ec6\u8282\u200b\uff0c\u200b\u53ea\u200b\u770b\u200b\u51e0\u4e2a\u200b\u6027\u8d28\u200b\uff1a

        \\(Y\\ fact_2 \\rightarrow fact_2\\ (Y\\ fact_2)\\)\\(Y\\ fact_2\\ 0 \\rightarrow 1\\)\\(Y\\ fact_2\\ 2 \\rightarrow *\\ 2\\ (Y\\ fact_2\\ 1)\\) \\[\\begin{aligned} &Y\\ fact_2 \\\\ =& (\\lambda f. fact_2\\ (f\\ f)) (\\lambda f. fact_2\\ (f\\ f)) \\\\ =& fact_2\\ ((\\lambda f. fact_2\\ (f\\ f)) (\\lambda f. fact_2\\ (f\\ f))) \\\\ =& fact_2\\ (Y\\ fact_2) \\\\ \\end{aligned}\\] \\[\\begin{aligned} &Y\\ fact_2\\ 0 \\\\ =& fact_2\\ (Y\\ fact_2)\\ 0 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (f\\ (pred\\ n))))\\ (Y\\ fact_2)\\ 0 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ ((Y\\ fact_2)\\ (pred\\ n))))\\ 0 \\\\ =& is0\\ 0\\ 1\\ ( *\\ 0\\ ((Y\\ fact_2)\\ (pred\\ 0))) \\\\ =& 1 \\end{aligned}\\] \\[\\begin{aligned} &Y\\ fact_2\\ 2 \\\\ =& fact_2\\ (Y\\ fact_2)\\ 2 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1 ( *\\ n\\ (f\\ (pred\\ n)))) (Y\\ fact_2)\\ 2 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ ((Y\\ fact_2)\\ (pred\\ n))))\\ 2 \\\\ =& is0\\ 2\\ 1\\ ( *\\ 2\\ ((Y\\ fact_2)\\ (pred\\ 2))) \\\\ =& *\\ 2\\ (Y\\ fact_2\\ 1) \\end{aligned}\\]

        \u200b\u4ee5\u4e0a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5176\u200b\u6027\u8d28\u200b\u6709\u200b

        1. \u200b\u5728\u200b\u524d\u9762\u200b\u51ed\u7a7a\u200b\u591a\u200b\u5e94\u7528\u200b\u4e00\u6b21\u200b fact_2
        2. base case
        3. induction case

        \u200b\u4ee5\u4e0a\u200b\u63a8\u5bfc\u200b\u7684\u200b\u6bd4\u8f83\u200b\u540a\u200b\u8be1\u200b\u7684\u200b\u5730\u65b9\u200b\u662f\u200b\u9700\u8981\u200b\u4ee5\u200b\u8fd9\u79cd\u200b\u8fd0\u7b97\u200b\u987a\u5e8f\u200b\u624d\u200b\u597d\u200b\u51fa\u200b\u7ed3\u679c\u200b\uff0c\u200b\u867d\u7136\u200b\u6211\u4eec\u200b\u8fd9\u91cc\u200b\u5bf9\u200b\u6709\u200b\u597d\u51e0\u4e2a\u200b\u5b50\u9879\u200b\u7684\u200b\u65f6\u5019\u200b\u5148\u200b\u6f14\u7b97\u200b\u4ec0\u4e48\u200b\u5e76\u200b\u6ca1\u6709\u200b\u89c4\u5b9a\u200b

        \u200b\u6709\u200b\u4ee5\u4e0a\u200b\u6027\u8d28\u200b\uff0c\u200b\u6beb\u65e0\u7591\u95ee\u200b\\(Y fact_2\\)\u200b\u4e5f\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u9012\u5f52\u200b

        Reference

        • Lambda \u200b\u6f14\u7b97\u200b
        • Recursive Lambda Functions the Y-Combinator
        "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%8A%E5%86%99-markdown/","title":"\u5728\u200b VSCode \u200b\u4e0a\u200b\u5199\u200b Markdown","text":"

        Abstract

        markdown \u200b\u771f\u200b\u65b9\u4fbf\u200b\u554a\u200b\u771f\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u672c\u6587\u200b\u8bb2\u200b\u4e86\u200b\u600e\u4e48\u200b\u5728\u200b VSCode \u200b\u4e0a\u200b\u914d\u7f6e\u200b\u4e00\u4e2a\u200b\u597d\u7528\u200b\u7684\u200b\u5199\u200b markdown \u200b\u7684\u200b\u73af\u5883\u200b

        "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%8A%E5%86%99-markdown/#_1","title":"\u8d77\u6b65","text":"

        \u200b\u9996\u5148\u200b\u542f\u7528\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u4e24\u4e2a\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5f00\u59cb\u200b\u5199\u200b markdown\uff0c\u200b\u5e76\u200b\u5728\u200b\u53f3\u4fa7\u200b\u9884\u89c8\u200b\u4e86\u200b

        \u200b\u6548\u679c\u56fe\u200b

        \u200b\u6ce8\u610f\u200b\u9884\u89c8\u200b\u9700\u8981\u200b\u5728\u200b\u7f16\u8f91\u5668\u200b\u53f3\u4e0a\u89d2\u200b\u70b9\u51fb\u200b\u9884\u89c8\u200b\u6309\u94ae\u200b\u5f00\u542f\u200b\u6216\u8005\u200b\u4f7f\u7528\u200b\u5feb\u6377\u952e\u200b

        \u200b\u5982\u679c\u200b\u9700\u8981\u200b\u4fdd\u5b58\u200b\u6210\u200b PDF \u200b\u6216\u8005\u200b\u522b\u7684\u200b\u683c\u5f0f\u200b\uff0c\u200b\u5728\u200b\u9884\u89c8\u200b\u754c\u9762\u200b\u53f3\u952e\u200b\u5c31\u200b\u597d\u200b\uff0cChrome \u200b\u4e00\u680f\u200b\u7684\u200b\u4e09\u4e2a\u200b\u9009\u9879\u200b\u90fd\u200b\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u989d\u5916\u200b\u5b89\u88c5\u200b\u7684\u200b\uff1a

        \u200b\u6570\u5b66\u516c\u5f0f\u200b\u6e32\u67d3\u200b\u95ee\u9898\u200b

        \u200b\u6709\u65f6\u5019\u200b\u4fdd\u5b58\u200b\u6210\u200b PDF \u200b\u65f6\u4f1a\u200b\u53d1\u73b0\u200b\u6570\u5b66\u516c\u5f0f\u200b\u6e32\u67d3\u200b\u5931\u8d25\u200b\u4e86\u200b\uff0c\u200b\u8c03\u67e5\u200b\u4e86\u200b\u4e00\u4e0b\u200b\u53d1\u73b0\u200b\u662f\u200b\u751f\u6210\u200b\u7684\u200b\u901f\u5ea6\u200b\u592a\u5feb\u200b\u4e86\u200b\u6570\u5b66\u516c\u5f0f\u200b\u6765\u4e0d\u53ca\u200b\u6e32\u67d3\u200b\uff0c\u200b\u8c03\u8282\u200b\u4ee5\u4e0b\u200b\u53c2\u6570\u200b\u53ef\u4ee5\u200b\u89e3\u51b3\u95ee\u9898\u200b\uff1a

        "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%8A%E5%86%99-markdown/#_2","title":"\u5feb\u6377\u200b\u5730\u200b\u63d2\u5165\u200b\u56fe\u7247","text":"

        \u200b\u5c31\u200b\u6700\u200b\u539f\u6559\u65e8\u4e3b\u4e49\u200b\u7684\u200b\u63d2\u5165\u65b9\u5f0f\u200b\u800c\u8a00\u200b\uff0c\u200b\u9700\u8981\u200b\u628a\u200b\u56fe\u7247\u200b\u4fdd\u5b58\u200b\u5230\u200b\u6307\u5b9a\u200b\u6587\u4ef6\u5939\u200b\uff0c\u200b\u8d77\u597d\u200b\u540d\u5b57\u200b\uff0c\u200b\u518d\u200b\u5229\u7528\u200b![](url)\u200b\u683c\u5f0f\u200b\u63d2\u5165\u200b\uff0c\u200b\u6b65\u9aa4\u200b\u76f8\u5f53\u200b\u7e41\u7410\u200b\uff0c\u200b\u8ddf\u200b Word \u200b\u7684\u200b\u56fe\u7247\u200b\u63d2\u5165\u200b\u5b8c\u5168\u200b\u662f\u200b\u4e24\u4e2a\u200b\u91cf\u7ea7\u200b\u7684\u200b\u5de5\u4f5c\u91cf\u200b.

        \u200b\u63a8\u8350\u200b\u4f7f\u7528\u200bPaste Image\u200b\u63d2\u4ef6\u200b\uff1a

        \u200b\u4fee\u6539\u200b\u5982\u4e0b\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff1a \u200b\u8fd9\u4f1a\u200b\u5c06\u200b\u56fe\u7247\u200b\u63d2\u5165\u200b\u5230\u200b\u5f53\u524d\u200b md \u200b\u6587\u4ef6\u200b\u4e0b\u200b\u7684\u200b images/mdfilename/time.png \u200b\u4f4d\u7f6e\u200b.

        \u200b\u7528\u200b\u7cfb\u7edf\u200b\u81ea\u5e26\u200b\u7684\u200b\u622a\u5c4f\u200b\u5de5\u5177\u200b\u622a\u5c4f\u200b\u5230\u200b\u7c98\u8d34\u677f\u200b\u540e\u200b Command+Option+v \u200b\u5373\u53ef\u200b\u5b58\u5165\u200b\u6587\u4ef6\u5939\u200b\u5e76\u200b\u81ea\u52a8\u200b\u5f15\u7528\u200b\u6b63\u786e\u200b\u7684\u200b\u8def\u5f84\u200b.

        \u200b\u8bbe\u7f6e\u200b\u9ed8\u8ba4\u200b\u56fe\u7247\u200b\u6837\u5f0f\u200b

        \u200b\u672c\u4eba\u200b\u4f7f\u7528\u200b mkdocs for material \u200b\u642d\u5efa\u200b\u6b64\u200b\u7f51\u9875\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7ed9\u200b\u6b64\u200b\u63d2\u4ef6\u200b\u6dfb\u52a0\u200b\u7684\u200b\u56fe\u7247\u200b\u6dfb\u52a0\u200b\u7edf\u4e00\u200b\u6837\u5f0f\u200b\uff1a

        • \u200b\u8bbe\u7f6e\u200b css\uff1a\u200b\u6bd4\u5982\u200b\u9634\u5f71\u200b\u52a0\u200b\u5706\u89d2\u200b
          img[src*=\"pic\"] {\nbox-shadow: 4px 4px 15px #666;\nborder-radius: 10px;\n}\n
        • \u200b\u5728\u200b mkdocs.yml \u200b\u6dfb\u52a0\u200b css \u200b\u4f5c\u4e3a\u200b\u989d\u5916\u200b css\uff1a
          extra_css:\n- css/extra.css\n
        • \u200b\u8bbe\u7f6e\u200b Paste Imgae \u200b\u81ea\u52a8\u200b\u6dfb\u52a0\u200b\u540e\u7f00\u200b\uff1a
          \"pasteImage.suffix\": \"#pic\"\n
        • \u200b\u53ef\u4ee5\u200b\u6dfb\u52a0\u200b\u591a\u4e2a\u200b\u6837\u5f0f\u200b\uff0c\u200b\u5e76\u200b\u6539\u53d8\u200b#\u200b\u540e\u200b\u7684\u200b\u540d\u79f0\u200b\u6765\u200b\u5207\u6362\u200b
        "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%AD%E4%BD%BF%E7%94%A8-conda-%E7%9A%84%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E9%97%AE%E9%A2%98/","title":"\u5728\u200b VSCode \u200b\u4e2d\u200b\u4f7f\u7528\u200b conda \u200b\u7684\u200b\u865a\u62df\u73af\u5883\u200b\u95ee\u9898","text":"

        Abstract

        \u200b\u7528\u200b conda \u200b\u7684\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u9047\u5230\u200b\u7684\u200b\u4e00\u4e2a\u200b\u795e\u79d8\u200b\u95ee\u9898\u200b\ud83e\udd14

        \u200b\u6700\u8fd1\u200b\u5f00\u59cb\u200b\u4f7f\u7528\u200b conda\uff0c\u200b\u8bd5\u56fe\u200b\u5728\u200b VSCode \u200b\u7ec8\u7aef\u200b\u91cc\u200b\u5207\u6362\u200b\u865a\u62df\u73af\u5883\u200b\uff0c\u200b\u547d\u4ee4\u884c\u200b\u63d0\u793a\u200b\u5df2\u7ecf\u200b\u5207\u6362\u200b\uff0c\u200b\u4f46\u662f\u200b python \u200b\u73af\u5883\u200b\u5b9e\u9645\u4e0a\u200b\u6ca1\u6709\u200b\u53d8\u200b. \u200b\u89e3\u51b3\u65b9\u6848\u200b\u5982\u4e0b\u200b\uff1a

        1. \u200b\u5feb\u6377\u952e\u200bcommand shift p\uff0c\u200b\u641c\u7d22\u200b settings\uff0c\u200b\u6253\u5f00\u200b user settings json
        2. \u200b\u52a0\u5165\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
              \"terminal.integrated.env.osx\": {\n      \"PATH\": \"\"\n  }\uff0c\n
        3. \u200b\u91cd\u542f\u200b VSCode \u200b\u5373\u53ef\u200b
        "},{"location":"blog/%E7%94%A8-vim-%E6%89%B9%E9%87%8F%E6%A0%BC%E5%BC%8F%E5%8C%96/","title":"\u7528\u200b Vim \u200b\u6279\u91cf\u200b\u683c\u5f0f\u5316","text":"

        Abstract

        \u200b\u4f17\u6240\u5468\u77e5\u200b\u4e2d\u82f1\u6587\u200b\u6df7\u6742\u200b\u7684\u200b\u6392\u7248\u200b\u5176\u5b9e\u200b\u662f\u200b\u6709\u200b\u8bb2\u7a76\u200b\u7684\u200b\uff0c\u200b\u4f46\u662f\u200b\u5b9e\u9645\u64cd\u4f5c\u200b\u8d77\u6765\u200b\u8f93\u5165\u6cd5\u200b\u5207\u6765\u5207\u200b\u53bb\u200b\u9ebb\u70e6\u200b\u5f97\u200b\u5f88\u200b\uff0c\u200b\u672c\u6587\u200b\u8bb2\u200b\u7684\u200b\u662f\u200b\u7528\u200b vim \u200b\u7684\u200b Pangu \u200b\u63d2\u4ef6\u200b\u6765\u200b\u6279\u91cf\u200b\u81ea\u52a8\u200b\u683c\u5f0f\u5316\u200b\u7684\u200b\u65b9\u6cd5\u200b

        "},{"location":"blog/%E7%94%A8-vim-%E6%89%B9%E9%87%8F%E6%A0%BC%E5%BC%8F%E5%8C%96/#vim-pangu","title":"\u5b89\u88c5\u200b Vim \u200b\u5de5\u5177\u200b Pangu","text":"

        \u200b\u9996\u5148\u200b\u5b89\u88c5\u200b vim-plug\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u53ef\u4ee5\u200b\u5e2e\u52a9\u200b\u6211\u4eec\u200b\u65b9\u4fbf\u200b\u7684\u200b\u5b89\u88c5\u200b vim \u200b\u63d2\u4ef6\u200b\u7684\u200b\u63d2\u4ef6\u200b

        \u200b\u968f\u540e\u200b\u5b89\u88c5\u200b Pangu \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u5728\u200b ~/.vimrc \u200b\u4e2d\u200b\u6dfb\u52a0\u200b

        Plug 'hotoo/pangu.vim'\uff0c { 'for': ['markdown'\uff0c 'vimwiki'\uff0c 'text'] }\nlet g:pangu_rule_date = 1\n

        \u200b\u968f\u540e\u200b\u5728\u200b vim \u200b\u4e2d\u200b\u6267\u884c\u200b:PlugInstall\u200b\u5373\u53ef\u200b\u5b89\u88c5\u200b

        Pangu \u200b\u7684\u200b \u200b\u5b98\u65b9\u200b\u9996\u9875\u200b\u4e0a\u200b\u5df2\u7ecf\u200b\u6709\u200b\u6bd4\u8f83\u200b\u8be6\u7ec6\u200b\u7684\u200b\u8bf4\u660e\u200b\u4e86\u200b\uff0c\u200b\u60f3\u8981\u200b\u542f\u7528\u200b\u5176\u4e2d\u200b\u7684\u200b\u529f\u80fd\u200b\u7167\u7740\u200b\u505a\u200b\u5c31\u662f\u200b\u4e86\u200b

        "},{"location":"blog/%E7%94%A8-vim-%E6%89%B9%E9%87%8F%E6%A0%BC%E5%BC%8F%E5%8C%96/#pangu","title":"\u6279\u91cf\u200b\u4f7f\u7528\u200b Pangu \u200b\u683c\u5f0f\u5316","text":"

        \u200b\u9996\u5148\u200b\u7528\u200b vim \u200b\u6279\u91cf\u200b\u6253\u5f00\u200b\u60f3\u8981\u200b\u683c\u5f0f\u5316\u200b\u7684\u200b\u6587\u4ef6\u200b

        vim *.md\n

        \u200b\u90a3\u4e48\u200b\u6240\u6709\u200b\u7b26\u5408\u200b\u683c\u5f0f\u200b\u7684\u200b\u6587\u4ef6\u200b\u90fd\u200b\u88ab\u200b\u6253\u5f00\u200b\u5728\u200b\u7f13\u5b58\u200b(buffer)\u200b\u4e2d\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b:ls\u200b\u6765\u200b\u67e5\u770b\u200b\uff0c\u200b\u7528\u200b:n\u200b\u6765\u200b\u5207\u6362\u200b

        \u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b vim \u200b\u7684\u200b\u7f13\u5b58\u200b\u548c\u200b\u6587\u4ef6\u200b\u7684\u200b\u5173\u7cfb\u200b\u7406\u89e3\u200b\u6210\u200b\u5185\u5b58\u200b\u548c\u200b\u78c1\u76d8\u200b\u7684\u200b\u5173\u7cfb\u200b\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b\u7f13\u5b58\u200b\u4e2d\u200b\u53ef\u4ee5\u200b\u4fee\u6539\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4f46\u200b\u76f4\u5230\u200bw\u200b\u4e4b\u524d\u200b\u90fd\u200b\u4e0d\u4f1a\u200b\u5199\u5165\u200b\u78c1\u76d8\u200b

        \u200b\u8981\u200b\u6279\u91cf\u200b\u5904\u7406\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b

        :bufdo PanguAll | update\n:bufdo w\n:q\n

        \u200b\u5176\u4e2d\u200b\u7684\u200b bufdo \u200b\u7684\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u5bf9\u200b\u6240\u6709\u200b\u7f13\u5b58\u200b\u4e2d\u200b\u7684\u200b\u6587\u4ef6\u200b\u6267\u884c\u547d\u4ee4\u200b

        \u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u628a\u200b\u547d\u4ee4\u200b\u5199\u5165\u200b.vim\u200b\u540e\u7f00\u200b\u7684\u200b\u811a\u672c\u200b\uff0c\u200b\u7136\u540e\u200b\u76f4\u63a5\u200b\u5728\u200b vim \u200b\u4e2d\u200b\u7528\u200b:source\u200b\u6267\u884c\u200b\u811a\u672c\u200b\u5c31\u200b\u597d\u200b

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/","title":"\u7528\u200b Docker \u200b\u642d\u5efa\u200b minisql \u200b\u73af\u5883","text":"

        Abstract

        \u200b\u4e00\u4e2a\u200b\u7b80\u6613\u200b\u7684\u200b\u6559\u7a0b\u200b\u6765\u200b\u4ecb\u7ecd\u200b\u5982\u4f55\u200b\u5728\u200b MacOS \u200b\u4e0a\u7528\u200b docker \u200b\u642d\u5efa\u200b minisql \u200b\u73af\u5883\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6709\u4eba\u200b\u8981\u200b\u95ee\u200b\u4e86\u200b\uff0c\u200b\u4e3a\u4ec0\u4e48\u200b\u4e0d\u200b\u76f4\u63a5\u200b\u672c\u5730\u200b\u90e8\u7f72\u200b\u5462\u200b. \u200b\u6211\u200b\u4e5f\u200b\u60f3\u200b\u672c\u5730\u200b\u90e8\u7f72\u200b\u554a\u200b\uff0c\u200b\u4f46\u662f\u200b\u7f16\u8bd1\u200b\u8d77\u6765\u200b\u7834\u4e8b\u200b\u592a\u591a\u200b\u4e86\u200b\ud83d\ude05\uff0c\u200b\u7d22\u6027\u200b\u8bd5\u200b\u4e00\u79cd\u200b\u8de8\u5e73\u53f0\u200b\u7684\u200b\u65b9\u6848\u200b.

        \u200b\u73af\u5883\u200b

        MacOS: Ventura 13.4.1 Docker: 4.16.2 Ubuntu: 20.04

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#1","title":"1.\u200b\u542f\u52a8\u200b\u5bb9\u5668","text":""},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#11-docker","title":"1.1 \u200b\u4e0b\u8f7d\u200b Docker","text":"

        \u200b\u9996\u5148\u200b\u4f60\u200b\u8981\u200b\u6709\u200b docker \u200b\u8f6f\u4ef6\u200b\uff0c\u200b\u5148\u53bb\u200b\u5b98\u7f51\u200b\u4e0b\u200b\u4e00\u4e2a\u200b.

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#12","title":"1.2 \u200b\u62c9\u53d6\u200b\u955c\u50cf","text":"

        \u200b\u542f\u52a8\u200b docker \u200b\u8f6f\u4ef6\u200b.\u200b\u6765\u5230\u200b\u547d\u4ee4\u884c\u200b\u4e2d\u200b\u8f93\u5165\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b\u6765\u62c9\u53d6\u200b ubuntu:20.04 \u200b\u955c\u50cf\u200b\uff08minisql \u200b\u5f53\u524d\u200b\u63a8\u8350\u200b\u90e8\u7f72\u200b\u5728\u200b ubuntu:20.04\uff09\uff1a

        docker pull ubuntu:20.04\n

        \u200b\u955c\u50cf\u200b

        \u200b\u955c\u50cf\u200b\uff08Image\uff09\u200b\u662f\u200b\u4e00\u4e2a\u200b\u9759\u6001\u200b\u7684\u200b\u3001\u200b\u53ea\u8bfb\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5b83\u200b\u5305\u542b\u200b\u4e86\u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\u3001\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u548c\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u7684\u200b\u6240\u6709\u200b\u6587\u4ef6\u200b\u548c\u200b\u8bbe\u7f6e\u200b.\u200b\u955c\u50cf\u200b\u662f\u200b\u6784\u5efa\u200b\u5bb9\u5668\u200b\u7684\u200b\u57fa\u7840\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u4f5c\u200b\u662f\u200b\u4e00\u4e2a\u200b\u6a21\u677f\u200b\u6216\u8005\u200b\u84dd\u56fe\u200b.\u200b\u955c\u50cf\u200b\u662f\u200b\u901a\u8fc7\u200b Dockerfile \u200b\u6587\u4ef6\u200b\u5b9a\u4e49\u200b\u548c\u200b\u6784\u5efa\u200b\u7684\u200b\uff0cDockerfile \u200b\u4e2d\u200b\u5305\u542b\u200b\u4e86\u200b\u4e00\u7cfb\u5217\u200b\u6307\u4ee4\u200b\u548c\u200b\u914d\u7f6e\u200b\uff0c\u200b\u7528\u4e8e\u200b\u521b\u5efa\u200b\u955c\u50cf\u200b.\u200b\u955c\u50cf\u200b\u53ef\u4ee5\u200b\u5b58\u50a8\u200b\u5728\u200b Docker Registry \u200b\u4e2d\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u955c\u50cf\u200b\u540d\u79f0\u200b\u548c\u200b\u6807\u7b7e\u200b\u6765\u200b\u552f\u4e00\u200b\u6807\u8bc6\u200b.\u200b\u955c\u50cf\u200b\u662f\u200b\u4e0d\u53ef\u200b\u4fee\u6539\u200b\u7684\u200b\uff0c\u200b\u5982\u679c\u200b\u9700\u8981\u200b\u5bf9\u200b\u955c\u50cf\u200b\u8fdb\u884c\u200b\u66f4\u6539\u200b\uff0c\u200b\u9700\u8981\u200b\u91cd\u65b0\u200b\u6784\u5efa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u955c\u50cf\u200b.

        docker imagesdocker pulldocker rmi

        \u200b\u4f7f\u7528\u200bdocker images\u200b\u547d\u4ee4\u200b\u67e5\u770b\u200b\u5f53\u524d\u200b\u5df2\u6709\u200b\u7684\u200b\u955c\u50cf\u200b\u5217\u8868\u200b.\u200b\u8fd9\u200b\u5c06\u200b\u663e\u793a\u200b\u6240\u6709\u200b\u5df2\u200b\u4e0b\u8f7d\u200b\u548c\u200b\u6784\u5efa\u200b\u7684\u200b\u955c\u50cf\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5b83\u4eec\u200b\u7684\u200b\u76f8\u5173\u200b\u4fe1\u606f\u200b\uff0c\u200b\u5982\u200b\u955c\u50cf\u200b ID\u3001\u200b\u540d\u79f0\u200b\u3001\u200b\u6807\u7b7e\u200b\u3001\u200b\u5927\u5c0f\u200b\u7b49\u200b.

        \u200b\u4f7f\u7528\u200bdocker pull\u200b\u547d\u4ee4\u200b\u4ece\u200b Docker Registry \u200b\u4e2d\u62c9\u53d6\u200b\u955c\u50cf\u200b.\u200b\u5982\u679c\u200b\u4e0d\u200b\u6307\u5b9a\u200b\u6807\u7b7e\u200b\uff0c\u200b\u9ed8\u8ba4\u200b\u62c9\u53d6\u200b latest \u200b\u6807\u7b7e\u200b\u7684\u200b\u955c\u50cf\u200b.\u200b\u4f8b\u5982\u200b\uff0cdocker pull ubuntu:20.04\u200b\u5c06\u62c9\u53d6\u200b Ubuntu 20.04 \u200b\u955c\u50cf\u200b.

        \u200b\u4f7f\u7528\u200bdocker rmi\u200b\u547d\u4ee4\u200b\u5220\u9664\u200b\u955c\u50cf\u200b.\u200b\u4f8b\u5982\u200b\uff0cdocker rmi ubuntu:20.04\u200b\u5c06\u200b\u5220\u9664\u200b Ubuntu 20.04 \u200b\u955c\u50cf\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b ID \u200b\u6307\u5b9a\u200b\u8981\u200b\u5220\u9664\u200b\u7684\u200b\u955c\u50cf\u200b.

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#13","title":"1.3 \u200b\u542f\u52a8\u200b\u5bb9\u5668","text":"

        \u200b\u7528\u200bdocker run\u200b\u542f\u52a8\u200b\u4e00\u4e2a\u200b\u5bb9\u5668\u200b\uff0c\u200b\u53c2\u6570\u200b-it\u200b\u8868\u793a\u200b\u542f\u52a8\u200b\u5b8c\u540e\u200b\u76f4\u63a5\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\u7684\u200b\u7ec8\u7aef\u200b\u4ee5\u4f9b\u200b\u64cd\u4f5c\u200b\uff0c-p\u200b\u8868\u793a\u200b\u7aef\u53e3\u6620\u5c04\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u628a\u200b loclahost:2333 \u200b\u6620\u5c04\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u53f7\u200b\u7aef\u53e3\u200b\uff0c--name\u200b\u540e\u63a5\u200b\u5bb9\u5668\u200b\u540d\u5b57\u200b\uff0cubuntu:20.04\u200b\u8868\u793a\u200b\u4f7f\u7528\u200b\u7684\u200b\u955c\u50cf\u200b.

        docker run -it  -p 2333:22 --name minisql ubuntu:20.04\n
        \u200b\u6267\u884c\u200b\u5b8c\u200b\u547d\u4ee4\u200b\u5e94\u200b\u770b\u5230\u200b\u6211\u4eec\u200b\u4ee5\u200b root \u200b\u7528\u6237\u200b\u8fdb\u5165\u200b\u4e86\u200b\u5bb9\u5668\u200b\u7684\u200b\u7ec8\u7aef\u200b\uff1a

        \u200b\u7aef\u53e3\u6620\u5c04\u200b

        \u200b\u7aef\u53e3\u6620\u5c04\u200b\u662f\u200b\u4e00\u79cd\u200b\u5c06\u200b\u4e3b\u673a\u200b\uff08\u200b\u5bbf\u4e3b\u673a\u200b\uff09\u200b\u7aef\u53e3\u200b\u4e0e\u200b\u5bb9\u5668\u200b\u5185\u90e8\u200b\u7aef\u53e3\u200b\u8fdb\u884c\u200b\u7ed1\u5b9a\u200b\u7684\u200b\u6280\u672f\u200b.\u200b\u5b83\u200b\u5141\u8bb8\u200b\u4ece\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u7279\u5b9a\u200b\u7aef\u53e3\u200b\u8bbf\u95ee\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fd0\u884c\u200b\u7684\u200b\u670d\u52a1\u200b\u6216\u200b\u5e94\u7528\u7a0b\u5e8f\u200b.

        \u200b\u5728\u200b Docker \u200b\u4e2d\u200b\uff0c\u200b\u901a\u8fc7\u200b\u4f7f\u7528\u200b-p\u200b\u6216\u200b--publish\u200b\u53c2\u6570\u200b\u6765\u200b\u8fdb\u884c\u200b\u7aef\u53e3\u6620\u5c04\u200b.\u200b\u53c2\u6570\u200b\u7684\u200b\u683c\u5f0f\u200b\u4e3a\u200b\u4e3b\u673a\u200b\u7aef\u53e3\u200b\uff1a\u200b\u5bb9\u5668\u200b\u7aef\u53e3\u200b\uff0c\u200b\u5176\u4e2d\u200b\u4e3b\u673a\u200b\u7aef\u53e3\u200b\u662f\u200b\u60a8\u200b\u5e0c\u671b\u200b\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u66b4\u9732\u200b\u7684\u200b\u7aef\u53e3\u53f7\u200b\uff0c\u200b\u5bb9\u5668\u200b\u7aef\u53e3\u200b\u662f\u200b\u5bb9\u5668\u200b\u5185\u90e8\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u670d\u52a1\u200b\u6240\u200b\u76d1\u542c\u200b\u7684\u200b\u7aef\u53e3\u53f7\u200b.

        docker run -it -p 2333:22 --name minisql ubuntu:20.04\u200b\u547d\u4ee4\u200b\u5c06\u200b\u4e3b\u673a\u200b\u7684\u200b 2333 \u200b\u7aef\u53e3\u6620\u5c04\u200b\u5230\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u53f7\u200b\u7aef\u53e3\u200b.\u200b\u8fd9\u200b\u610f\u5473\u7740\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u4efb\u4f55\u200b\u8bf7\u6c42\u200b\u53d1\u9001\u5230\u200b 2333 \u200b\u7aef\u53e3\u200b\u65f6\u200b\uff0c\u200b\u5c06\u200b\u88ab\u200b\u8f6c\u53d1\u200b\u5230\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u53f7\u200b\u7aef\u53e3\u200b\uff0c22 \u200b\u53f7\u200b\u7aef\u53e3\u200b\u662f\u200b SSH \u200b\u4f7f\u7528\u200b\u7684\u200b\u9ed8\u8ba4\u200b\u7aef\u53e3\u200b.\u200b\u56e0\u6b64\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u8bbf\u95ee\u200b\u4e3b\u673a\u200b\u7684\u200b 2333 \u200b\u7aef\u53e3\u200b\u6765\u200b\u8bbf\u95ee\u200b\u5bb9\u5668\u200b\u5185\u90e8\u200b\u8fd0\u884c\u200b\u7684\u200b SSH \u200b\u670d\u52a1\u200b\uff0c\u200b\u4ee5\u4fbf\u200b\u8fdb\u884c\u200b\u8fdc\u7a0b\u200b\u8fde\u63a5\u200b\u548c\u200b\u64cd\u4f5c\u200b.

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#2","title":"2.\u200b\u73af\u5883\u200b\u521d\u6b65\u200b\u8bbe\u7f6e","text":""},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#21","title":"2.1\uff08\u200b\u53ef\u200b\u9009\u200b\uff09\u200b\u6362\u6e90","text":"\u53ef\u80fd\u200b\u5b58\u5728\u200b\u7684\u200b\u95ee\u9898\u200b

        \u200b\u6709\u65f6\u5019\u200b\u76f4\u63a5\u200b\u6362\u6e90\u4f1a\u200b\u9047\u5230\u200b\u62a5\u9519\u200b\uff1a \u200b\u8fd9\u200b\u9700\u8981\u200b\u6211\u4eec\u200b\u5148\u200b\u4f7f\u7528\u200b http\uff0c\u200b\u8fd0\u884c\u200b\u5982\u4e0b\u200b\u547d\u4ee4\u200b\u6362\u200b http \u200b\u6e90\u200b\uff1a

        echo \"\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal main restricted universe multiverse\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal-updates main restricted universe multiverse\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal-backports main restricted universe multiverse\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal-security main restricted universe multiverse\n\" > /etc/apt/sources.list\n
        \u200b\u8fd9\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b\u4e0b\u200b\u4e00\u6b65\u200b\u4e86\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u5e0c\u671b\u200b\u5728\u200b\u4e4b\u540e\u200b\u6362\u56de\u200b https \u200b\u6e90\u200b\uff0c\u200b\u90a3\u4e48\u200b\u5728\u200b\u6267\u884c\u200b\u5b8c\u200b 2.2 \u200b\u540e\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b

        \u200b\u66f4\u65b0\u200b\u8bc1\u4e66\u200b\uff1a

        apt install --reinstall ca-certificates\n
        \u200b\u6362\u56de\u200b https \u200b\u6e90\u200b\uff1a
        echo \"\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal main restricted universe multiverse\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal-updates main restricted universe multiverse\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal-backports main restricted universe multiverse\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal-security main restricted universe multiverse\n\" > /etc/apt/sources.list\n
        \u200b\u518d\u6b21\u200b\u66f4\u65b0\u200b apt\uff1a
        apt update\napt upgrade\n
        \u200b\u5373\u53ef\u200b\uff08\u200b\u8be5\u200b\u65b9\u6cd5\u200b\u6765\u81ea\u200b\u6b64\u200b\u535a\u5ba2\u200b)

        \u200b\u76f4\u63a5\u200b\u6267\u884c\u547d\u4ee4\u200b\u5373\u53ef\u200b

        cp /etc/apt/sources.list /etc/apt/sources.list.bak\necho \"\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal main restricted universe multiverse\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal-updates main restricted universe multiverse\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal-backports main restricted universe multiverse\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal-security main restricted universe multiverse\n    \" > /etc/apt/sources.list\n

        \u200b\u6362\u6e90\u200b

        \u200b\u6362\u6e90\u200b\u662f\u200b\u6307\u200b\u5c06\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b\uff08\u200b\u955c\u50cf\u200b\uff09\u200b\u66ff\u6362\u200b\u4e3a\u200b\u7279\u5b9a\u200b\u5730\u533a\u200b\u6216\u200b\u7f51\u7edc\u200b\u73af\u5883\u200b\u4e0b\u200b\u66f4\u200b\u5feb\u901f\u200b\u3001\u200b\u53ef\u9760\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b.\u200b\u8fd9\u662f\u200b\u4e3a\u4e86\u200b\u63d0\u9ad8\u200b\u8f6f\u4ef6\u5305\u200b\u7684\u200b\u4e0b\u8f7d\u901f\u5ea6\u200b\u3001\u200b\u89e3\u51b3\u200b\u7f51\u7edc\u200b\u8bbf\u95ee\u200b\u9650\u5236\u200b\u6216\u200b\u8bbf\u95ee\u200b\u7279\u5b9a\u200b\u5730\u533a\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u800c\u200b\u91c7\u53d6\u200b\u7684\u200b\u63aa\u65bd\u200b.

        \u200b\u66f4\u6362\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b\u7684\u200b\u5177\u4f53\u65b9\u6cd5\u200b\u4f1a\u56e0\u200b\u4e0d\u540c\u200b\u7684\u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\u548c\u200b\u8f6f\u4ef6\u5305\u200b\u7ba1\u7406\u5de5\u5177\u200b\u800c\u200b\u6709\u6240\u200b\u5dee\u5f02\u200b.\u200b\u5728\u200b\u57fa\u4e8e\u200b Ubuntu \u200b\u7684\u200b Docker \u200b\u5bb9\u5668\u200b\u4e2d\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7f16\u8f91\u200b /etc/apt/sources.list \u200b\u6587\u4ef6\u200b\uff0c\u200b\u5c06\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b\u66ff\u6362\u200b\u4e3a\u200b\u56fd\u5185\u200b\u7684\u200b\u955c\u50cf\u200b\u6e90\u200b\uff0c\u200b\u5982\u200b\u6d59\u6c5f\u5927\u5b66\u200b\u3001\u200b\u6e05\u534e\u5927\u5b66\u200b\u7b49\u200b.\u200b\u8fd9\u6837\u4e00\u6765\u200b\uff0c\u200b\u901a\u8fc7\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b apt-get \u200b\u6216\u200b apt \u200b\u547d\u4ee4\u200b\u5b89\u88c5\u200b\u8f6f\u4ef6\u200b\u65f6\u200b\uff0c\u200b\u5c06\u200b\u4ece\u200b\u56fd\u5185\u200b\u955c\u50cf\u200b\u6e90\u200b\u4e0b\u8f7d\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u63d0\u9ad8\u200b\u901f\u5ea6\u200b\u548c\u200b\u7a33\u5b9a\u6027\u200b.

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#22","title":"2.2 \u200b\u5b89\u88c5\u200b\u5fc5\u8981\u200b\u5de5\u5177","text":"

        \u200b\u9996\u5148\u200b\u66f4\u65b0\u200b apt

        apt update\napt upgrade\n

        \u200b\u5b89\u88c5\u200b\u4e00\u4e9b\u200b\u5fc5\u8981\u200b\u7684\u200b\u5de5\u5177\u200b\uff1a

        apt install openssh-server vim git cmake gcc g++ gdb sudo\n

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#3-ssh-vscode","title":"3.\u200b\u914d\u7f6e\u200b SSH\uff0c\u200b\u4f7f\u7528\u200b VSCode \u200b\u5f00\u53d1","text":""},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#31","title":"3.1\uff08\u200b\u53ef\u200b\u9009\u200b\uff09\u200b\u521b\u5efa\u200b\u7528\u6237","text":"

        \u200b\u5982\u679c\u200b\u5e0c\u671b\u200b\u7528\u975e\u200b root \u200b\u7528\u6237\u200b\u767b\u9646\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5148\u200b\u521b\u5efa\u200b\u5e76\u200b\u8bbe\u7f6e\u200b\u4e00\u4e2a\u200b\u7528\u6237\u200b\uff1a

        useradd -m stormckey\npasswd stormckey\n
        \u200b\u8fd9\u91cc\u200b\u7684\u200b stormckey \u200b\u6362\u6210\u200b\u4f60\u200b\u81ea\u5df1\u200b\u8d77\u200b\u7684\u200b\u7528\u6237\u540d\u200b

        \u200b\u7ed9\u200b\u7528\u6237\u200b\u6dfb\u52a0\u200b sudo \u200b\u6743\u9650\u200b\uff0c\u200b\u9700\u8981\u200b\u5728\u200b/etc/sudoers\u200b\u6587\u4ef6\u200b\u4e2d\u200b# User privilege specification\u200b\u6dfb\u52a0\u200b\uff1a

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#32","title":"3.2 \u200b\u914d\u7f6e\u200b\u514d\u5bc6\u200b\u767b\u9646","text":"

        \u200b\u6765\u5230\u200b\u8fdc\u7a0b\u200b\u8fde\u63a5\u200b\u7684\u200b\u53d1\u8d77\u8005\u200b\u7aef\u200b\uff08\u200b\u8fd9\u91cc\u200b\u5c31\u662f\u200b\u5bbf\u4e3b\u673a\u200b\uff09\uff0c\u200b\u6267\u884c\u200b\u4e0b\u9762\u200b\u547d\u4ee4\u200b\u751f\u6210\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u8f93\u5165\u200b paseephrase \u200b\u65f6\u200b\u76f4\u63a5\u200b\u56de\u8f66\u200b\uff08\u200b\u4e3a\u7a7a\u200b\uff09

        ssh-keygen\n
        \u200b\u6765\u5230\u200b\u63d0\u793a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u590d\u5236\u200b id_rsa.pub \u200b\u7684\u200b\u5185\u5bb9\u200b\uff0c\u200b\u5c06\u200b\u5b83\u200b\u5199\u5165\u200b\u88ab\u200b\u8fde\u63a5\u7aef\u200b\uff08\u200b\u8fd9\u91cc\u200b\u662f\u200b\u5bb9\u5668\u200b\uff09\u200b\u7684\u200b/home/stormckey/.ssh/authorized_keys\u200b\u6587\u4ef6\u200b\u4e2d\u200b

        \u200b\u53e6\u200b\u4e00\u79cd\u200b\u66f4\u200b\u65b9\u4fbf\u200b\u7684\u200b\u65b9\u6848\u200b

        \u200b\u5728\u200b\u53ef\u4ee5\u200b\u7528\u200b\u5bc6\u7801\u200b\u767b\u5f55\u200b\u4e86\u200b\u4e4b\u540e\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200bssh-copy-id\u200b\u547d\u4ee4\u200b\u4e00\u952e\u200b\u628a\u200b\u5bc6\u94a5\u200b\u653e\u7f6e\u200b\u5230\u200b\u670d\u52a1\u5668\u200b\u5e76\u200b\u505a\u597d\u200b\u76f8\u5e94\u200b\u7684\u200b\u8bbe\u7f6e\u200b

        ssh-copy-id -i ~/.ssh/id_rsa.pub stormckey@localhost -p 2333\n

        \u200b\u63a5\u7740\u200b\u914d\u7f6e\u200b\u5bb9\u5668\u200b\u7684\u200b sshd: vim /etc/ssh/sshd_config

        \u200b\u53bb\u6389\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u6ce8\u91ca\u200b\uff1a \u200b\u6ce8\u610f\u200b\u7b2c\u4e8c\u5f20\u200b\u56fe\u4e2d\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e00\u5b9a\u200b\u662f\u200b\u4f60\u200b\u4e4b\u524d\u200b\u653e\u516c\u94a5\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u8def\u5f84\u200b\u4ece\u200b\u7528\u6237\u200b\u6839\u76ee\u5f55\u200b\u5f00\u59cb\u200b

        \u200b\u66f4\u6539\u200b\u5b8c\u200b\u914d\u7f6e\u200b\u540e\u200b\u542f\u52a8\u200b/\u200b\u91cd\u542f\u200b sshd

        service ssh start\n
        \u200b\u6211\u4eec\u200b\u6700\u597d\u200b\u628a\u200b\u81ea\u52a8\u200b\u542f\u52a8\u200b ssh \u200b\u670d\u52a1\u200b\u52a0\u5165\u200b bashrc\uff0c\u200b\u8fd9\u6837\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u542f\u52a8\u200b ssh \u200b\u670d\u52a1\u200b\u4e86\u200b
        echo \"service ssh start\" >> /root/.bashrc\n

        \u200b\u6b64\u65f6\u200b\u4f60\u200b\u5728\u200b\u5bbf\u4e3b\u673a\u200b\u4e0a\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200bssh stormckey@localhost -p 2333\u200b\u767b\u9646\u200b\u5bb9\u5668\u200b\u4e86\u200b\uff1a

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#33-vscode","title":"3.3 \u200b\u914d\u7f6e\u200b VSCode","text":"

        \u200b\u4e0b\u8f7d\u200b\u63d2\u4ef6\u200b Remote-SSH \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u70b9\u51fb\u200b\u53f3\u8fb9\u200b\u51fa\u73b0\u200b\u7684\u200b\u63d2\u4ef6\u200b\u56fe\u6807\u200b\uff0c\u200b\u5728\u200b\u4fa7\u680f\u200b\u4e2d\u200b\u9009\u62e9\u200b\u8bbe\u7f6e\u200b SSH\uff1a

        \u200b\u5199\u5165\u200b\u5982\u4e0b\u200b\u7684\u200b\u914d\u7f6e\u200b\u4fe1\u606f\u200b\uff1a

        \u200b\u8fde\u63a5\u200b\uff01

        \u200b\u6b64\u540e\u200b\u5c31\u200b\u6ca1\u6709\u200b\u4ec0\u4e48\u200b\u7279\u522b\u200b\u7684\u200b\u4e86\u200b\uff0c\u200b\u6253\u5f00\u200b\u7ec8\u7aef\u200b\u76f4\u63a5\u200b\u6309\u7167\u200b\u52a9\u6559\u200b\u7684\u200b\u6587\u6863\u200b\u914d\u7f6e\u200b minisql \u200b\u5373\u53ef\u200b.

        "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#4","title":"4.\u200b\u66f4\u200b\u591a\u200b\u8bbe\u7f6e","text":"

        \u200b\u73b0\u5728\u200b\u4f60\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7528\u200b\u8fd9\u4e2a\u200b\u7b80\u964b\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u5f00\u59cb\u200b\u5de5\u4f5c\u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u5982\u679c\u200b\u4f60\u200b\u559c\u6b22\u200b\u7684\u8bdd\u200b\u53ef\u4ee5\u200b\u52a0\u5165\u200b\u66f4\u200b\u591a\u200b\u8bbe\u7f6e\u200b\uff01

        \u200b\u7ec8\u7aef\u200b\u7f8e\u5316\u200b

        \u200b\u89c1\u6b64\u200b\u535a\u5ba2\u200b

        "},{"location":"blog/%E9%85%8D%E7%BD%AE-github-profile/","title":"\u914d\u7f6e\u200b Github Profile","text":"

        Abstract

        \u200b\u6211\u200b\u914d\u7f6e\u200b Github \u200b\u4e3b\u9875\u200b Profile \u200b\u7684\u200b\u65b9\u6848\u200b\uff0c\u200b\u7075\u611f\u200b\u6765\u81ea\u200bTonycrane \u200b\u7684\u200b GitHub \u200b\u4e3b\u9875\u200b

        "},{"location":"blog/%E9%85%8D%E7%BD%AE-github-profile/#github-profile_1","title":"\u542f\u7528\u200b Github \u200b\u4e3b\u9875\u200b Profile","text":"

        \u200b\u6211\u4eec\u200b\u5148\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u8ddf\u200b\u81ea\u5df1\u200b\u8d26\u53f7\u200b\u540c\u540d\u200b\u7684\u200b\u516c\u5f00\u200b\u4ed3\u5e93\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b\u7684\u200b\u7528\u4f5c\u200b\u4e3b\u9875\u200b\u4ed3\u5e93\u200b Github \u200b\u4f1a\u200b\u5728\u200b\u4e3b\u9875\u200b\u4e0a\u200b\u663e\u793a\u200b\u8fd9\u4e00\u200b\u4ed3\u5e93\u200b\u7684\u200b README \u200b\u6587\u6863\u200b\u4f5c\u4e3a\u200b Profile\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u7f16\u5199\u200b\u8fd9\u4e2a\u200b README \u200b\u6587\u6863\u200b\u5373\u53ef\u200b

        \u200b\u672c\u4eba\u200b\u4e3b\u9875\u200b\u9884\u89c8\u200b

        "},{"location":"blog/%E9%85%8D%E7%BD%AE-github-profile/#metrics-profile","title":"\u542f\u7528\u200b Metrics \u200b\u751f\u6210\u200b Profile \u200b\u56fe\u7247","text":"

        \u200b\u63a8\u8350\u200b\u4f7f\u7528\u200bMetrics\u200b\u6765\u200b\u751f\u6210\u200b\u597d\u770b\u200b\u7684\u200b Profile

        Metrics \u200b\u4f7f\u7528\u200b GitHub Action \u200b\u81ea\u52a8\u66f4\u65b0\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u7167\u7740\u200b\u94fe\u63a5\u200b\u91cc\u200b\u7684\u200b\u4ecb\u7ecd\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b8c\u6210\u200b\u90e8\u7f72\u200b.Metrics \u200b\u8fd8\u200b\u652f\u6301\u200b\u8bb8\u591a\u200b\u4e0d\u540c\u200b\u7684\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u5927\u5bb6\u200b\u53ef\u4ee5\u200b\u968f\u610f\u200b\u9009\u62e9\u200b\u81ea\u5df1\u200b\u559c\u6b22\u200b\u7684\u200b\uff0c\u200b\u6700\u540e\u200b\u8d34\u200b\u4e0a\u200b\u7b14\u8005\u200b\u6ce8\u91ca\u200b\u7684\u200b\u7684\u200b Action \u200b\u914d\u7f6e\u200b\u548c\u200b README \u200b\u6e90\u4ee3\u7801\u200b\uff0c\u200b\u6b22\u8fce\u200b\u501f\u9274\u200b\u4f7f\u7528\u200b\uff01

        \u200b\u53c2\u8003\u200b\u914d\u7f6e\u200b Metrics.ymlREADME.md
        name: Metrics\non:\n# Schedule updates per hour\nschedule: [{cron: \"0 * * * *\"}]\n# (optional) Run workflow manually\nworkflow_dispatch:\n# (optional) Run workflow when pushing on master/main\npush: {branches: [\"master\"\uff0c \"main\"]}\njobs:\n#generate the left picture\ngithub-left-metrics:\n    runs-on: ubuntu-latest\n    permissions:\n    contents: write\n    steps:\n    - name: left\n        # use the official generator\n        uses: lowlighter/metrics@latest\n        with:\n        token: ${{ secrets.METRICS_TOKEN }}\n\n        # the file this action generates\n        filename: matrics-left.svg\n        config_timezone: Asia/Shanghai\n\n\n        # enable plugins\n        plugin_followup: yes\n\n\n        plugin_languages: yes\n        # repositories that wont be accounted\n        plugin_languages_skipped: stormckey/dotfiles\n        plugin_languages_ignored: html\uff0c css\uff0c ruby\uff0c perl\uff0c javascript\n        # show the size of source code and percentage of each language\n        plugin_languages_details: bytes-size\uff0c percentage\n\n\n        plugin_starlists: yes\n        plugin_starlists_languages: yes\n\n\n        config_order: followup\uff0c languages\uff0c starlists\n\ngithub-right-metrics:\n    runs-on: ubuntu-latest\n    permissions:\n    contents: write\n    steps:\n    - name: right\n        uses: lowlighter/metrics@latest\n        with:\n        #disable the basic metrics\n        base: \"\"\n        token: ${{ secrets.METRICS_TOKEN }}\n        filename: matrics-right.svg\n        config_timezone: Asia/Shanghai\n\n        plugin_topics: yes\n        plugin_topics_mode: icons\n\n\n        plugin_isocalendar: yes\n\n\n        plugin_anilist: yes\n        plugin_anilist_user: stormckey\n        plugin_anilist_sections: favorites\uff0c characters\n\n\n        config_order: topics\uff0c isocalendar\uff0c anilist\n
        <h3 align=\"center\"> Stormckey </h3>\n\n<p align=\"center\">\n<samp>\n    <a href=\"https://stormckey.github.io/\">home page</a> \u2219\n</samp>\n</p>\n\n<p align=\"center\">\n<a href=\"https://github.com/stormckey\">\n    <img width=\"400\" align=\"top\" src=\"https://github.com/stormckey/stormckey/blob/main/matrics-left.svg\" />\n</a>\n&emsp;\n<a href=\"https://github.com/stormckey\">\n    <img width=\"400\" align=\"top\" src=\"https://github.com/stormckey/stormckey/blob/main/matrics-right.svg\" />\n</a>\n</p>\n
        "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/","title":"Linux \u200b\u7ec8\u7aef\u200b\u914d\u7f6e","text":"

        Abstract

        \u200b\u4e00\u4e9b\u200b\u6781\u5927\u200b\u5730\u200b\u589e\u5f3a\u200b linux \u200b\u7ec8\u7aef\u200b\u6613\u7528\u6027\u200b\u7684\u200b\u5de5\u5177\u200b

        \u200b\u5bf9\u200b\u6211\u200b\u6765\u8bf4\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u8981\u200b\u65b0\u5f00\u200b\u4e00\u4e2a\u200b\u7528\u200b\u4e00\u6bb5\u65f6\u95f4\u200b\u7684\u200b\u73af\u5883\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u628a\u200b\u8fd9\u4e9b\u200b\u914d\u7f6e\u200b\u5148\u8dd1\u200b\u4e00\u904d\u200b

        "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/#zsh","title":"\u542f\u7528\u200b zsh","text":"

        sudo apt install zsh\nchsh -s /bin/zsh\n
        \u200b\u91cd\u542f\u200b\u7ec8\u7aef\u200b\uff08docker \u200b\u4e2d\u8bf7\u200b\u91cd\u542f\u200b\u5bb9\u5668\u200b\uff09

        "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/#zsh_1","title":"\u5b89\u88c5\u200b zsh \u200b\u63d2\u4ef6","text":"

        \u200b\u5b89\u88c5\u200b p10k

        git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ~/.zsh/powerlevel10k\necho 'source ~/.zsh/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc\n
        \u200b\u91cd\u542f\u200b shell

        \u200b\u5b89\u88c5\u200b autosuggestion

        git clone https://gitee.com/renkx/zsh-autosuggestions.git ~/.zsh/plugins/zsh-autosuggestions\necho '#Enable autosuggestion' >> ~/.zshrc\necho 'source ~/.zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh' >> ~/.zshrc\n

        \u200b\u5b89\u88c5\u200b syntaxhighlight

        git clone https://gitee.com/renkx/zsh-syntax-highlighting.git ~/.zsh/plugins/zsh-syntax-highlighting\necho '#Enable syntax highlight' >> ~/.zshrc\necho 'source ~/.zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh' >> ~/.zshrc\n

        \u200b\u5b89\u88c5\u200b autojump

        sudo apt install autojump\necho '#Enable autojump' >> ~/.zshrc\necho 'source  /usr/share/autojump/autojump.sh'>>~/.zshrc\n

        "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/#vi","title":"\u5728\u200b\u547d\u4ee4\u884c\u200b\u4e2d\u200b\u542f\u7528\u200b vi","text":"
        git clone https://github.com/soheilpro/zsh-vi-search.git ~/.zsh/plugins/zsh-vi-search\necho \"#Enable vi mode\" >> ~/.zshrc\necho \"bindkey -v\" >> ~/.zshrc\necho \"source ~/.zsh/plugins/zsh-vi-search/src/zsh-vi-search.zsh\" >> ~/.zshrc\n
        "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/","title":"\u7528\u200b ssh \u200b\u8fde\u63a5\u200b\u540c\u4e00\u200b\u5c40\u57df\u7f51\u200b\u4e0b\u200b\u7684\u200b Wsl2","text":"

        Abstract

        \u200b\u4e3a\u4ec0\u4e48\u200b\u4f1a\u200b\u6709\u200b\u8fd9\u4e2a\u200b\u9700\u6c42\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u200b\u5927\u5b66\u200b\u5165\u5b66\u200b\u5e26\u200b\u7684\u200b\u7535\u8111\u5ba4\u200b\u662f\u200b\u4e00\u4e2a\u200b\u7eed\u822a\u200b\u7a00\u788e\u200b\u7684\u200b\u5de8\u91cd\u200b\u7684\u200b\u6e38\u620f\u200b\u672c\u200b\uff0c\u200b\u540e\u6765\u200b\u6709\u200b\u4e86\u200b mac \u200b\u4e4b\u540e\u200b\u6e38\u620f\u200b\u672c\u200b\u57fa\u672c\u200b\u6210\u200b\u53f0\u5f0f\u200b\u4e86\u200b\uff08\u200b\u4e0d\u662f\u200b\uff09\uff0c\u200b\u7528\u200b ssh \u200b\u8fde\u4e0a\u53bb\u200b\u4e3b\u8981\u200b\u662f\u200b\u7528\u200b\u4e00\u4e0b\u200b\u663e\u5361\u200b\u5565\u200b\u7684\u200b

        Abstract

        \u200b\u57fa\u7840\u200b\u7684\u200b\u6d41\u7a0b\u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b\u535a\u5ba2\u200b\u5c31\u200b\u597d\u200b\uff0c\u200b\u672c\u6587\u200b\u8bb0\u5f55\u200b\u4e00\u4e0b\u200b\u8e29\u200b\u7684\u200b\u96f7\u200b\u548c\u200b\u66f4\u200b\u8fdb\u9636\u200b\u7684\u200b\u8bbe\u7f6e\u200b

        "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/#_1","title":"\u68c0\u67e5\u200b\u901a\u8def","text":"

        \u200b\u8fd9\u200b\u4e00\u6b65\u200b\u6211\u4eec\u200b\u8981\u200b\u68c0\u67e5\u200b\u6211\u4eec\u200b\u5230\u200b\u8981\u200b\u8fde\u63a5\u200b\u7684\u200b\u7cfb\u7edf\u200b\u7684\u200b\u7f51\u7edc\u200b\u901a\u8def\u200b\u662f\u200b\u6b63\u5e38\u200b\u7684\u200b

        Windows \u200b\u4f1a\u200b\u7ed9\u200b Wsl2 \u200b\u5206\u914d\u200b\u4e00\u4e2a\u200b\u865a\u62df\u200b\u7684\u200b\u672c\u5730\u200b\u7684\u200b\u5730\u5740\u200b\uff0c\u200b\u5728\u200b Windows \u200b\u8f93\u5165\u200bipconfig\u200b\u4ee5\u200b\u67e5\u770b\u200b\u8be5\u200b\u5730\u5740\u200b. \u200b\u6211\u4eec\u200b\u5728\u200b Wsl \u200b\u4e2d\u200b\u542f\u7528\u200b ssh \u200b\u670d\u52a1\u200b\u540e\u200b\uff0c\u200b\u60f3\u8981\u200b\u9a8c\u8bc1\u200b Wsl \u200b\u662f\u5426\u200b\u53ef\u200b\u88ab\u200b\u8fde\u63a5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5148\u200b\u5728\u200b Windows \u200b\u4e2d\u8bd5\u200b\u7740\u200b\u7528\u200b ssh \u200b\u8fde\u63a5\u200b ifconfig \u200b\u4e2d\u200b\u770b\u5230\u200b\u7684\u200b\u5730\u5740\u200b

        \u200b\u968f\u540e\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u4ece\u200b\u5c40\u57df\u7f51\u200b\u8fde\u63a5\u200b Windows \u200b\u4e5f\u200b\u662f\u200b\u901a\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u7528\u200bipconfig\u200b\u5f97\u5230\u200b\u670d\u52a1\u5668\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u8fd9\u53f0\u200b\u673a\u5668\u200b\uff09ip\uff0c\u200b\u5728\u200b\u53e6\u4e00\u53f0\u200b\u673a\u5668\u200b\u4e0a\u200b\uff08\u200b\u5ba2\u6237\u200b\uff09\u200b\u5c1d\u8bd5\u200bping <ip>\u200b\u6765\u8bd5\u200b\u7740\u200b\u8fde\u63a5\u200b\uff0c\u200b\u6216\u8005\u200b\u76f4\u63a5\u200b\u7528\u200b ssh \u200b\u8fde\u63a5\u200b Windows\uff0c\u200b\u4fdd\u8bc1\u200b\u5c40\u57df\u7f51\u200b\u5230\u200b Windows \u200b\u8fd9\u6761\u200b\u8def\u200b\u90fd\u200b\u662f\u200b\u901a\u200b\u7684\u200b.

        Warning

        \u200b\u4e00\u4e9b\u200b\u6807\u660e\u200b\u4e3a\u200b\u201cSecure\u201d\u200b\u7684\u200b\u5c40\u57df\u7f51\u200b\u53ef\u80fd\u200b\u4e0d\u200b\u5141\u8bb8\u200b\u5c40\u57df\u7f51\u200b\u5185\u200b\u8fde\u63a5\u200b\uff0c\u200b\u5728\u200b\u8fd9\u4e9b\u200b\u5c40\u57df\u7f51\u200b\u4e0b\u200b\u662f\u200b\u4e92\u76f8\u200b ping \u200b\u4e0d\u901a\u200b\u7684\u200b\uff0c\u200b\u5c1d\u8bd5\u200b\u6362\u4e2a\u200b\u5c40\u57df\u7f51\u200b\uff01\u200b\u8fd9\u70b9\u200b\u5751\u200b\u4e86\u200b\u6211\u200b\u5f88\u200b\u4e45\u200b.

        \u200b\u6700\u540e\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u786e\u4fdd\u200b\u628a\u200b\u5c40\u57df\u7f51\u200b\uff0cWindows\uff0cwsl \u200b\u90fd\u200b\u8fde\u63a5\u8d77\u6765\u200b\uff0c\u200b\u9700\u8981\u200b Windows \u200b\u628a\u200b\u6211\u4eec\u200b\u4ece\u200b ssh \u200b\u53d1\u6765\u200b\u7684\u200b\u8fde\u63a5\u200b\u8bf7\u6c42\u200b\u8f6c\u200b\u5230\u200b\u5185\u90e8\u200b\u7684\u200b wsl \u200b\u7684\u200b\u7aef\u53e3\u200b\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u901a\u200b\u4e86\u200b.\uff08\u200b\u5bf9\u5e94\u200b\u7684\u200b\u64cd\u4f5c\u200b\u5728\u4e0a\u6587\u200b\u7684\u200b\u535a\u5ba2\u200b\u4e2d\u200b\u5df2\u7ecf\u200b\u63d0\u53ca\u200b\uff0c\u200b\u5982\u679c\u200b\u8fd8\u6709\u200b\u95ee\u9898\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5c1d\u8bd5\u200b\u8fd9\u7bc7\u200b\u770b\u770b\u200b\u662f\u4e0d\u662f\u200b\u5c40\u57df\u7f51\u200b\u5230\u200b Windows \u200b\u7684\u200b\u95ee\u9898\u200b\uff09

        "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/#_2","title":"\u8bbe\u7f6e\u200b\u514d\u5bc6\u200b\u767b\u9646","text":"

        \u200b\u514d\u5bc6\u200b\u767b\u9646\u200b\u4e5f\u200b\u53ef\u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b

        \u200b\u6765\u5230\u200b\u5ba2\u6237\u7aef\u200b\uff0c\u200b\u6267\u884c\u200b\u4e0b\u9762\u200b\u547d\u4ee4\u200b\u751f\u6210\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u8f93\u5165\u200b passephrase \u200b\u65f6\u200b\u76f4\u63a5\u200b\u56de\u8f66\u200b\uff08\u200b\u4e3a\u7a7a\u200b\uff09

        ssh-keygen\n

        \u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u63d0\u793a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u751f\u6210\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u9009\u62e9\u200b\u5176\u516c\u94a5\u200b\uff08.pub \u200b\u540e\u7f00\u200b\uff09\uff0c\u200b\u628a\u200b\u5b83\u200b\u5199\u5165\u200b\u670d\u52a1\u5668\u200b\u767b\u9646\u200b\u7528\u6237\u200b\u7684\u200b ssh \u200b\u914d\u7f6e\u200b\u6587\u4ef6\u5939\u200b\u4e0b\u200b\u7684\u200b\u201cauthorized_keys\"\u200b\u6587\u4ef6\u200b\uff08\u200b\u4e00\u822c\u200b\u4e3a\u200b~/.ssh/authorized_keys\uff09\uff0c\u200b\u6ce8\u610f\u200b\u4fee\u6539\u200b\"authorized_keys\"\u200b\u7684\u200b\u6743\u9650\u200b\u6539\u4e3a\u200b 600\uff0c\u200b\u6240\u5728\u200b\u6587\u4ef6\u5939\u200b\u6743\u9650\u200b\u6539\u4e3a\u200b 700.

        \u200b\u5982\u679c\u200b\u4e0a\u8ff0\u200b\u90fd\u200b\u505a\u200b\u4e86\u200b\u4e4b\u540e\u200b\u4ecd\u7136\u200b\u65e0\u6cd5\u200b\u514d\u5bc6\u200b\u767b\u9646\u200b\uff0c\u200b\u6bd4\u5982\u200bssh -v user@ip -p port\u200b\u540e\u200b\u770b\u5230\u200b\u8fde\u63a5\u200b\u65f6\u200b\u8bd5\u56fe\u200b\u4f7f\u7528\u200b\u516c\u94a5\u200b\u9a8c\u8bc1\u200b\u4f46\u662f\u200b\u5931\u8d25\u200b\u4e86\u200b\uff0c\u200b\u90a3\u4e48\u200b\u9700\u8981\u200b\u518d\u200b\u5b9a\u4f4d\u95ee\u9898\u200b.\u200b\u5728\u200b\u670d\u52a1\u5668\u7aef\u200b\u4f7f\u7528\u200b\u4e0b\u5217\u200b\u8bed\u53e5\u200b\u542f\u7528\u200b sshd \u200b\u76d1\u542c\u200b\u8fde\u63a5\u200b\u67d0\u4e2a\u200b\u7aef\u53e3\u200b

        sudo /usr/sbin/sshd -d  -p 4444\n
        \u200b\u6ce8\u610f\u200b\u4e0d\u80fd\u200b\u4f7f\u7528\u200b\u5df2\u7ecf\u200b\u88ab\u200b\u5360\u7528\u200b\u7684\u200b\u7aef\u53e3\u200b \u200b\u542f\u7528\u200b\u540e\u200b\u53bb\u200b powershell \u200b\u8fdb\u884c\u200b\u7aef\u53e3\u200b\u8f6c\u53d1\u200b\uff0c\u200b\u4fbf\u200b\u53ef\u4ee5\u200b\u5728\u200b\u7ec8\u7aef\u200b\u91cc\u200b\u770b\u5230\u200b\u670d\u52a1\u5668\u7aef\u200b\u8ba4\u8bc1\u200b\u7684\u200b\u5168\u8fc7\u7a0b\u200b\u4e86\u200b

        "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/#wsl2-ip","title":"\u8bbe\u7f6e\u200b Wsl2 \u200b\u9759\u6001\u200b ip","text":"

        \u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b

        \u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u987a\u5e26\u200b\u8bbe\u7f6e\u200b\u4e00\u4e0b\u200b Wsl2 \u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\u548c\u200b\u81ea\u52a8\u200b\u5f00\u59cb\u200b ssh \u200b\u670d\u52a1\u200b

        "},{"location":"blog/%E5%9C%A8-wsl2-%E4%B8%8A%E5%90%AF%E7%94%A8-cuda/","title":"\u5728\u200b WSL2 \u200b\u4e0a\u200b\u542f\u7528\u200b CUDA","text":"

        Abstract

        \u200b\u522b\u8bf4\u200b\u4e86\u200b\uff0c\u200b\u5f00\u70bc\u200b\uff01

        \u200b\u4e3b\u8981\u200b\u662f\u200b\u53c2\u8003\u200b\u4e86\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b

        "},{"location":"blog/%E5%9C%A8-wsl2-%E4%B8%8A%E5%90%AF%E7%94%A8-cuda/#1-windows","title":"1.\u200b\u5728\u200b Windows \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u663e\u5361\u200b\u9a71\u52a8","text":"

        \u200b\u8fd9\u6b65\u200b\u5f88\u200b\u7b80\u5355\u200b\uff0c\u200b\u5728\u200b\u5b98\u200b\u7f51\u4e0a\u200b\u627e\u5230\u200b\u9002\u5408\u200b\u81ea\u5df1\u200b\u663e\u5361\u200b\u7684\u200b\u7248\u672c\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b. Download Type \u200b\u9009\u9879\u200b\u9009\u200b Game Ready Driver \u200b\u5c31\u200b\u597d\u200b. \u200b\u60f3\u8981\u200b\u67e5\u770b\u200b\u81ea\u5df1\u200b\u7535\u8111\u200b\u663e\u5361\u200b\u578b\u53f7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5148\u200b win+R\uff0c\u200b\u8f93\u5165\u200b dxdiag\uff0c\u200b\u9009\u62e9\u200b dispaly \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u4e86\u200b.

        "},{"location":"blog/%E5%9C%A8-wsl2-%E4%B8%8A%E5%90%AF%E7%94%A8-cuda/#2-wsl","title":"2.\u200b\u5728\u200b wsl \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u9a71\u52a8","text":"

        \u200b\u4e0a\u200b\u4e00\u6b65\u200b\u7ed3\u675f\u200b\u4e4b\u540e\u200btorch.cuda.is_available()\u200b\u5c31\u200b\u5df2\u7ecf\u200b True \u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u76f4\u63a5\u200b\u6267\u884c\u200b\u8fd8\u662f\u200b\u4f1a\u200b\u62a5\u9519\u200b. \u200b\u542f\u52a8\u200b wsl\uff0c\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b

        wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin\nsudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600\nwget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb\nsudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb\nsudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub\napt-get update\nsudo apt-get -y install cuda\n
        \u200b\u6709\u4e9b\u200b\u5b89\u88c5\u200b\u6bd4\u8f83\u6162\u200b\uff0c\u200b\u6ca1\u6709\u200b\u6362\u200b\u8fc7\u6e90\u200b\u7684\u200b\u53ef\u4ee5\u200b\u6362\u4e0b\u200b\u56fd\u5185\u200b\u955c\u50cf\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200b\u6d59\u5927\u200b\u6e90\u200b

        \u200b\u7b14\u8005\u200b\u5728\u200b\u4e0a\u9762\u200b\u7684\u200b\u547d\u4ee4\u200b\u6267\u884c\u200b\u4e2d\u200b\u8fd8\u200b\u9047\u5230\u200b\u4e00\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u6700\u540e\u200b\u4e00\u6b65\u200b\u62a5\u9519\u200b liburcu6 \u200b\u6ca1\u6709\u200b\u5b89\u88c5\u200b. \u200b\u53ef\u4ee5\u200b\u5728\u200b\u5b98\u65b9\u200b\u8f6f\u4ef6\u200b\u6e90\u4e0a\u200b\u53ef\u4ee5\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u6d4f\u89c8\u5668\u200b\u53ef\u80fd\u200b\u63d0\u793a\u200b\u4e0b\u8f7d\u200b\u4e0d\u200b\u5b89\u5168\u200b.\u200b\u5982\u679c\u200b\u53ef\u4ee5\u200b\u7684\u8bdd\u200b\uff0c\u200b\u9009\u62e9\u200b\u5408\u9002\u200b\u7684\u200b\u7248\u672c\u200b\u4e0b\u8f7d\u200b.\u200b\u7528\u200bcat /proc/version \u200b\u67e5\u770b\u200b\u6211\u4eec\u200b\u7cfb\u7edf\u200b\u7684\u200b\u7248\u672c\u200b\uff0cx86_64 \u200b\u7528\u200b amd64 \u200b\u5373\u53ef\u200b. \u200b\u5982\u679c\u200b\u65e0\u6cd5\u200b\u89e3\u51b3\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200b\u8fd9\u91cc\u200b\u7684\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u4f7f\u7528\u200b\u547d\u4ee4\u200b\uff1a

        sudo add-apt-repository ppa:cloudhan/liburcu6\nsudo apt update\nsudo apt install liburcu6\n
        \u200b\u7b2c\u4e00\u6761\u200b\u547d\u4ee4\u200b\u4f3c\u4e4e\u200b\u9700\u8981\u200b\u79d1\u5b66\u200b\u4e0a\u7f51\u200b\uff0c\u200b\u6211\u200b\u6ca1\u5f00\u200b\u7684\u200b\u65f6\u5019\u200b\u8fde\u63a5\u200b\u8d85\u65f6\u200b\u4e86\u200b. \u200b\u968f\u540e\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7ee7\u7eed\u200b\u4e0a\u200b\u4e00\u6b65\u200b\u7684\u200b\u5b89\u88c5\u200b cuda \u200b\u4e86\u200b.\u200b\u5b89\u88c5\u200b\u5b8c\u6bd5\u200b\u540e\u200b\u7528\u200b nvidia-smi \u200b\u547d\u4ee4\u200b\u67e5\u770b\u200b\u662f\u5426\u200b\u6210\u529f\u200b.

        \u200b\u6b64\u65f6\u200b\u4ecd\u7136\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b cuda\uff0c\u200b\u9700\u8981\u200b\u518d\u200b\u5b89\u88c5\u200b nvcc\uff0c\u200b\u76f4\u63a5\u200b\u4e0b\u8f7d\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b.

        \u200b\u81f3\u6b64\u200b\u5b89\u88c5\u200b\u7ed3\u675f\u200b.

        "},{"location":"blog/zsh-%E7%9A%84%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92/","title":"ZSH \u200b\u7684\u200b\u53c2\u6570\u4f20\u9012","text":"

        Abstract

        zsh \u200b\u4e2d\u200b\u4e00\u4e2a\u200b\u53c2\u6570\u4f20\u9012\u200b\u7684\u200b\u65f6\u5019\u200b\u9047\u5230\u200b\u7684\u200b\u795e\u79d8\u200b\u95ee\u9898\u200b\ud83e\udd14

        \u200b\u4eca\u5929\u200b\u5728\u200b\u8c03\u7528\u200b DDPM \u200b\u6a21\u578b\u200b\u7684\u200b\u65f6\u5019\u200b\u4f7f\u7528\u200b\u5b98\u65b9\u200b\u4ee3\u7801\u200b\uff0c\u200b\u7adf\u7136\u200b\u62a5\u9519\u200b\u8bf4\u200b\u53c2\u6570\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff1a \u200b\u547d\u4ee4\u200b\u662f\u200b

        MODEL_FLAGS=\"--attention_resolutions 32\uff0c16\uff0c8 --class_cond True --diffusion_steps 1000 --dropout 0.1 --image_size 64 --learn_sigma True --noise_schedule cosine --num_channels 192 --num_head_channels 64 --num_res_blocks 3 --resblock_updown True --use_new_attention_order True --use_fp16 True --use_scale_shift_norm True\"\npython classifier_sample.py $MODEL_FLAGS --classifier_scale 1.0 --classifier_path models/64x64_classifier.pt --classifier_depth 4 --model_path models/64x64_diffusion.pt $SAMPLE_FLAGS\n
        \u200b\u62a5\u9519\u200b\u4e3a\u200b\uff1a
        python classifier_sample.py $MODEL_FLAGS --classifier_scale 1.0 --classifier_path models/64x64_classifier.pt --classifier_depth 4 --model_path models/64x64_diffusion.pt $SAMPLE_FLAGS\nusage: classifier_sample.py [-h] [--clip_denoised CLIP_DENOISED] [--num_samples NUM_SAMPLES] [--batch_size BATCH_SIZE]\n                            [--use_ddim USE_DDIM] [--model_path MODEL_PATH] [--classifier_path CLASSIFIER_PATH]\n                            [--classifier_scale CLASSIFIER_SCALE] [--image_size IMAGE_SIZE]\n                            [--num_channels NUM_CHANNELS] [--num_res_blocks NUM_RES_BLOCKS] [--num_heads NUM_HEADS]\n                            [--num_heads_upsample NUM_HEADS_UPSAMPLE] [--num_head_channels NUM_HEAD_CHANNELS]\n                            [--attention_resolutions ATTENTION_RESOLUTIONS] [--channel_mult CHANNEL_MULT]\n                            [--dropout DROPOUT] [--class_cond CLASS_COND] [--use_checkpoint USE_CHECKPOINT]\n                            [--use_scale_shift_norm USE_SCALE_SHIFT_NORM] [--resblock_updown RESBLOCK_UPDOWN]\n                            [--use_fp16 USE_FP16] [--use_new_attention_order USE_NEW_ATTENTION_ORDER]\n                            [--learn_sigma LEARN_SIGMA] [--diffusion_steps DIFFUSION_STEPS]\n                            [--noise_schedule NOISE_SCHEDULE] [--timestep_respacing TIMESTEP_RESPACING]\n                            [--use_kl USE_KL] [--predict_xstart PREDICT_XSTART]\n                            [--rescale_timesteps RESCALE_TIMESTEPS] [--rescale_learned_sigmas RESCALE_LEARNED_SIGMAS]\n                            [--classifier_use_fp16 CLASSIFIER_USE_FP16] [--classifier_width CLASSIFIER_WIDTH]\n                            [--classifier_depth CLASSIFIER_DEPTH]\n                            [--classifier_attention_resolutions CLASSIFIER_ATTENTION_RESOLUTIONS]\n                            [--classifier_use_scale_shift_norm CLASSIFIER_USE_SCALE_SHIFT_NORM]\n                            [--classifier_resblock_updown CLASSIFIER_RESBLOCK_UPDOWN]\n                            [--classifier_pool CLASSIFIER_POOL]\nclassifier_sample.py: error: unrecognized arguments: --attention_resolutions 32\uff0c16\uff0c8 --class_cond True --diffusion_steps 1000 --dropout 0.1 --image_size 64 --learn_sigma True --noise_schedule cosine --num_channels 192 --num_head_channels 64 --num_res_blocks 3 --resblock_updown True --use_new_attention_order True --use_fp16 True --use_scale_shift_norm True\n
        \u200b\u8c8c\u4f3c\u200b\u662f\u56e0\u4e3a\u200b\u7528\u200b\u8fd9\u79cd\u200b\u65b9\u5f0f\u200b\u4f20\u9012\u200b\u7684\u200b\u53c2\u6570\u200b\u4e0d\u4f1a\u200b\u88ab\u200b\u6309\u200b\u7a7a\u683c\u200b\u5206\u5f00\u200b\uff0c\u200b\u6240\u4ee5\u200b\u65e0\u6cd5\u200b\u8bc6\u522b\u200b \u200b\u6211\u200b\u8fd8\u200b\u8bd5\u8fc7\u200b\u6362\u7528\u200b bash\uff0c\u200b\u6216\u8005\u200b\u662f\u200b\u4f7f\u7528\u200b\"$FLAG\"\uff0c\u200b\u90fd\u200b\u6ca1\u7528\u200b\ud83d\ude21

        \u200b\u89e3\u51b3\u200b\u7684\u200b\u529e\u6cd5\u200b\u662f\u200b\u4f7f\u7528\u200b$=FLAG \uff08\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b\u89e3\u7b54\u200b\uff09

        "},{"location":"blog/archive/2023/","title":"2023","text":"

        \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/os/","title":"OS","text":"

        \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/lab/","title":"Lab","text":"

        \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/","title":"\u8ba1\u7b97\u673a\u200b\u4f53\u7cfb\u7ed3\u6784","text":"

        \u200b\u7ea6\u200b 7 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/pl/","title":"PL","text":"

        \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/cool/","title":"Cool","text":"

        \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/%E9%85%8D%E7%8E%AF%E5%A2%83/","title":"\u914d\u200b\u73af\u5883","text":"

        \u200b\u7ea6\u200b 3 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/category/%E7%A5%9E%E7%A7%98-bug/","title":"\u795e\u79d8\u200b bug","text":"

        \u200b\u7ea6\u200b 3 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"blog/page/2/","title":"Blog","text":""},{"location":"blog/page/3/","title":"Blog","text":""},{"location":"blog/archive/2023/page/2/","title":"2023","text":""},{"location":"blog/archive/2023/page/3/","title":"2023","text":""}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Index","text":""},{"location":"#hi","title":"\uff08 \u0e51> \u0602 < \uff09 Hi!","text":"

        \u200b\u6b22\u8fce\u200b\u6765\u5230\u200b\u6211\u200b\u7684\u200b\u4e3b\u9875\u200b\uff01\u200b\u968f\u4fbf\u200b\u901b\u901b\u200b\u5427\u200b

        \u200b\u66f4\u65b0\u200b\u65e5\u5fd7\u200b | \u200b\u6837\u5f0f\u200b\u4e00\u89c8\u200b | \u200b\u5efa\u200b\u7ad9\u200b\u6307\u5357\u200b

        "},{"location":"Build_this_website/","title":"\u5982\u4f55\u200b\u6784\u5efa\u200b\u4e00\u4e2a\u200b\u50cf\u200b\u8fd9\u6837\u200b\u7684\u200b\u7f51\u7ad9\u200b\uff01","text":"

        \u200b\u7ea6\u200b 905 \u200b\u4e2a\u200b\u5b57\u200b 316 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 7 \u200b\u5206\u949f\u200b

        \u200b\u7f51\u7ad9\u200b\u642d\u5efa\u200b\u6559\u7a0b\u200b

        \u200b\u672c\u200b\u7ad9\u70b9\u200b\u4f7f\u7528\u200b mkdocs \u200b\u642d\u5efa\u200b\uff0c\u200b\u90e8\u7f72\u200b\u4e8e\u200b Github Pages\uff0c\u200b\u4f7f\u7528\u200b\u4e86\u200bmaterial\u200b\u4e3b\u9898\u200b

        "},{"location":"Build_this_website/#1","title":"1.\u200b\u73af\u5883\u200b\u51c6\u5907","text":"

        \u200b\u5b89\u88c5\u200b python

        sudo apt install python3 python3-pip\n

        pip \u200b\u6362\u6e90\u200b

        pip install pip -U\npip config set global.index-url https://mirrors.zju.edu.cn/pypi/web/simple\n

        \u200b\u542f\u7528\u200b\u865a\u62df\u73af\u5883\u200b\uff1a

        sudo apt install python3.8-venv\npip install virtualenv\npython -m venv webenv\nsource webenv/bin/activate\n

        \u200b\u5b89\u88c5\u200b mkdocs

        pip install mkdocs-material\n

        \u200b\u51fa\u73b0\u200b\u62a5\u9519\u200b\uff1a

        ERROR: mkdocs 1.4.3 has requirement markdown<3.4\uff0c>=3.2.1\uff0c but you'll have markdown 3.4.3 which is incompatible.\n

        \u200b\u4fee\u6539\u200b markdown \u200b\u7248\u672c\u200b\uff0c\u200b\u7136\u540e\u200b\u91cd\u65b0\u5b89\u88c5\u200b mkdocs\uff1a

        pip install markdown==3.2.1\npip install mkdocs-material\n

        \u200b\u56fe\u7247\u200b\u5904\u7406\u200b\u7684\u200b\u4f9d\u8d56\u200b\u5e93\u200b\uff1a

        pip install pillow cairosvg\n

        \u200b\u53ef\u200b\u9009\u200b\u4f18\u5316\u200b\uff1ayaml \u200b\u8865\u5168\u200b
        1. \u200b\u5b89\u88c5\u200b VSCode-yaml
        2. \u200b\u628a\u200b\u4e0b\u9762\u200b\u8bbe\u7f6e\u200b\u5199\u5165\u200b settings.json:
          {\n\"yaml.schemas\": {\n    \"https://squidfunk.github.io/mkdocs-material/schema.json\": \"mkdocs.yml\"\n}\uff0c\n\"yaml.customTags\": [\n    \"!ENV scalar\"\uff0c\n    \"!ENV sequence\"\uff0c\n    \"tag:yaml.org\uff0c2002:python/name:materialx.emoji.to_svg\"\uff0c\n    \"tag:yaml.org\uff0c2002:python/name:materialx.emoji.twemoji\"\uff0c\n    \"tag:yaml.org\uff0c2002:python/name:pymdownx.superfences.fence_code_format\"\n]\n}\n
        "},{"location":"Build_this_website/#2-github-pages","title":"2.\u200b\u90e8\u7f72\u200b\u5230\u200b Github Pages","text":"

        \u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u7a7a\u200b\u7684\u200b\u516c\u5f00\u200b\u4ed3\u5e93\u200b\uff0c\u200b\u5e76\u4e14\u200b\u514b\u9686\u200b\u5230\u200b\u672c\u5730\u200b\uff0c\u200b\u5728\u200b\u5176\u4e2d\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b mkdocs site\uff1a

        git clone repo\ncd repo\nmkdocs new .\n

        \u200b\u5728\u200b mkdocs.yml \u200b\u4e2d\u200b\u542f\u7528\u200b\u4e3b\u9898\u200b\uff1a

        theme:\n  name: material\n

        \u200b\u5982\u679c\u200b\u4f60\u200b\u5e0c\u671b\u200b\u5c06\u200b markdown \u200b\u6e90\u6587\u4ef6\u200b\u4e5f\u200b\u4fdd\u5b58\u200b\u5728\u200b\u540c\u4e00\u4e2a\u200b\u4ed3\u5e93\u200b\u91cc\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5148\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u5ffd\u7565\u200bsite/\u200b\u7684\u200b.gitignore\u200b\u6587\u4ef6\u200b\uff0c\u200b\u7136\u540e\u200b\u63d0\u4ea4\u200b\uff0c\u200b\u63a8\u9001\u200b\uff1a

        echo \"site/\" > .gitignore\ngit add .\ngit commit -m \"init\"\ngit push -u origin master\n

        \u200b\u7136\u540e\u200b\u7528\u200bgh-deploy\u200b\u547d\u4ee4\u200b\u4e00\u952e\u200b\u90e8\u7f72\u200b\u5230\u200b Github Pages:

        mkdocs gh-deploy\n
        \u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u7684\u200b\u4ed3\u5e93\u200b\u6709\u200b\u4e24\u4e2a\u200b\u5206\u652f\u200b\u4e86\u200b\uff0cmaster \u200b\u5206\u652f\u200b\u50a8\u5b58\u200b markdown \u200b\u6e90\u6587\u4ef6\u200b\uff0cgh-pages \u200b\u5206\u652f\u200b\u50a8\u5b58\u200b\u7f16\u8bd1\u200b\u540e\u200b\u7684\u200b\u7f51\u7ad9\u200b

        \u200b\u5728\u200b settings-pages \u200b\u4e2d\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u7f51\u7ad9\u200b\u7684\u200b\u7f51\u5740\u200b\u4e86\u200b\uff0c\u200b\u4e00\u822c\u200b\u4e3a\u200busername.github.io/repo\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u521b\u5efa\u200b\u7684\u200b\u4ed3\u5e93\u200b\u662f\u200b\u7279\u6b8a\u200b\u7684\u200b\uff0c\u200b\u540d\u4e3a\u200busername.github.io\uff0c\u200b\u90a3\u4e48\u200b\u7f51\u5740\u200b\u5c31\u662f\u200busername.github.io\u200b\u4e86\u200b \u200b\u5f53\u524d\u200b\u7684\u200b\u7f51\u7ad9\u200b\u4e3a\u200b\u9ed8\u8ba4\u200b\u6837\u5f0f\u200b\uff1a

        \u200b\u53ef\u200b\u9009\u200b\u4f18\u5316\u200b\uff1a\u200b\u81ea\u52a8\u200b\u7f16\u8bd1\u200b\u90e8\u7f72\u200b

        \u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b GitHub action \u200b\u6765\u200b\u5e2e\u52a9\u200b\u6211\u4eec\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b master \u200b\u5206\u652f\u200b\u540e\u200b\u81ea\u52a8\u200b\u7f16\u8bd1\u200b\u7f51\u7ad9\u200b\u5e76\u200b\u63a8\u9001\u200b\u5230\u200b gh-pages \u200b\u5206\u652f\u200b\uff0c\u200b\u8fd9\u6837\u200b\u6211\u4eec\u200b\u5c31\u200b\u4e0d\u7528\u200b\u6bcf\u6b21\u200b\u90fd\u200b\u624b\u52a8\u200b\u6267\u884c\u200bmkdocs gh-deploy\u200b\u4e86\u200b. 1. \u200b\u5728\u200b\u4ed3\u5e93\u200b\u4e2d\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b.github/workflows/auto-deploy.yml\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5185\u5bb9\u200b\u5982\u4e0b\u200b\uff1a

        name: ci\non:\npush:\n    branches:\n    - master\n    - main\npermissions:\ncontents: write\njobs:\ndeploy:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v3\n        with:\n        fetch-depth: '0'\n    - uses: actions/setup-python@v4\n        with:\n        python-version: 3.x\n    - run: echo \"cache_id=$(date --utc '+%V')\" >> $GITHUB_ENV\n    - uses: actions/cache@v3\n        with:\n        key: mkdocs-material-${{ env.cache_id }}\n        path: .cache\n        restore-keys: |\n            mkdocs-material-\n    - run: pip install  mkdocs-material mkdocs-changelog-plugin mkdocs-glightbox jieba pillow cairosvg mkdocs-tooltips mkdocs-statistics-plugin mkdocs-table-reader-plugin mkdocs-git-revision-date-localized-plugin\n    - run: mkdocs gh-deploy --force\n
        \u200b\u6ce8\u610f\u200b\uff0c\u200b\u63a8\u9001\u200b\u5230\u200b Github \u200b\u7684\u8bdd\u200b\u9700\u8981\u200b\u4f60\u200b\u7684\u200b token \u200b\u6709\u200b workflow \u200b\u6743\u9650\u200b \u200b\u5982\u679c\u200b\u4f60\u200b\u4f9d\u8d56\u200b\u4e86\u200b\u989d\u5916\u200b\u7684\u200b\u5e93\u200b\uff0c\u200b\u9700\u8981\u200b\u4fee\u6539\u200b action

        "},{"location":"Build_this_website/#3","title":"3.\u200b\u6dfb\u52a0\u200b\u7279\u6027","text":""},{"location":"Build_this_website/#31-css","title":"3.1 \u200b\u4fee\u6539\u200b\u7f51\u7ad9\u200b\u7684\u200b css \u200b\u6837\u5f0f","text":"

        \u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u65b0\u589e\u200b\u7684\u200b\u6837\u5f0f\u200b\u541b\u200b\u653e\u7f6e\u200b\u4e8e\u200bdocs/css/\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u6bcf\u4e2a\u200b css \u200b\u6587\u4ef6\u200b\u90fd\u200b\u8981\u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

        extra_css:\n  - css/extra.css\n
        \u200b\u6211\u200b\u4f7f\u7528\u200b\u7684\u200b\u7684\u200b\u6837\u5f0f\u200b
        [data-md-color-primary=indigo] {\n    --md-primary-fg-color:  #FFACA6;\n}\n[data-md-color-accent=indigo] {\n--md-accent-fg-color: #FFACA6;\n}\n[data-md-color-scheme=default] {\n    --md-typeset-a-color: #000000;\n    --my-changlog-color: #EFEFEF;\n}\n[data-md-color-scheme=slate] {\n    --md-typeset-a-color: #FFFFFF;\n    --my-changlog-color: #161616;\n}\n.md-grid {\nmax-width: 1400px;\n}/* make the page wider */\n/* changelog config*/\n.timeline-card{\nbackground-color: var(--my-changlog-color);\n}\n.timeline-content::before{\nbackground-color: var(--my-changlog-color);\n}\n.changelog-type{\nbackground-color: #CC8A85;\n}\n.changelog-type-newpage{\nbackground-color: #FF9C80;\n}\n.changelog-type-refactor::before {\ncontent: \"\u200b\u6587\u6863\u200b\u66f4\u65b0\u200b\";\n}\n\n/*\u200b\u56fe\u7247\u683c\u5f0f\u200b\u8bbe\u7f6e\u200b*/\n/*\u200b\u9ed8\u8ba4\u200b\u6837\u5f0f\u200b*/\nimg[src*=\"pic\"] {\nbox-shadow: 2px 2px 10px #666;\nborder-radius: 4px;\n}\n
        \u200b\u81ea\u5df1\u200b\u5b9a\u4e49\u200b\u6837\u5f0f\u200b

        \u200b\u6211\u4eec\u200b\u53ef\u80fd\u200b\u4e0d\u200b\u719f\u6089\u200b css\uff0c\u200b\u6ca1\u4e8b\u200b\uff0c\u200b\u6211\u200b\u4e5f\u200b\u5b8c\u5168\u200b\u4e0d\u200b\u61c2\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u4e00\u4e9b\u200b\u7b80\u5355\u200b\u7684\u200b\u4fee\u6539\u200b\u989c\u8272\u200b\u4fee\u6539\u200b\u5b57\u200b\uff0c\u200b\u76f4\u63a5\u200b\u7528\u200b F12 \u200b\u67e5\u770b\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6837\u5f0f\u200b\u6539\u6210\u200b\u81ea\u5df1\u200b\u559c\u6b22\u200b\u7684\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b\uff0c\u200b\u6d4f\u89c8\u5668\u200b\u4e00\u822c\u200b\u90fd\u200b\u652f\u6301\u200b\u76f4\u63a5\u200b\u6539\u200b\u5e76\u4e14\u200b\u663e\u793a\u200b\u4fee\u6539\u200b\u540e\u200b\u7684\u200b\u6548\u679c\u200b\u7684\u200b \u200b\u53e6\u200b\u4e00\u4e2a\u200b\u597d\u7528\u200b\u7684\u200b\u8bbe\u7f6e\u200b\u5c31\u662f\u200b\u4fee\u6539\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u56fe\u7247\u200b\u6837\u5f0f\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u50cf\u200b\u8fd9\u6837\u200b\u5f15\u7528\u200b\u56fe\u7247\u200b

        ![](images/Build_this_website/2023-07-02-02-35-34.png#pic)\n
        \u200b\u4e5f\u200b\u5c31\u662f\u200b\u5728\u200b\u7ed3\u5c3e\u200b\u52a0\u4e0a\u200b#pic\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5bf9\u200b\u56fe\u7247\u200b\u5e94\u7528\u200b\u9ed8\u8ba4\u200b\u6837\u5f0f\u200b\u4e86\u200b\uff0c\u200b\u6211\u7528\u200b\u7684\u200b\u662f\u200b\u5706\u89d2\u200b+\u200b\u9634\u5f71\u200b.\u200b\u8fd9\u4e00\u200b\u6dfb\u52a0\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u53ef\u4ee5\u200b\u7528\u200b VSCode \u200b\u63d2\u4ef6\u200b Paste Image \u200b\u81ea\u52a8\u200b\u5b9e\u73b0\u200b\uff0c\u200b\u6211\u200b\u5728\u200b\u8fd9\u91cc\u200b\u6709\u200b\u4ecb\u7ecd\u200b

        "},{"location":"Build_this_website/#32-javascript","title":"3.2 \u200b\u6dfb\u52a0\u200b\u989d\u5916\u200b\u7684\u200b javascript","text":"

        \u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u65b0\u589e\u200b\u7684\u200b js \u200b\u6587\u4ef6\u200b\u653e\u7f6e\u200b\u4e8e\u200bdocs/js/\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u6bcf\u4e2a\u200b js \u200b\u6587\u4ef6\u200b\u90fd\u200b\u8981\u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

        extra_javascript:\n  - js/extra.js\n
        \u200b\u8fd9\u91cc\u200b\u7684\u200b url \u200b\u53ef\u4ee5\u200b\u6307\u5411\u200b\u7f51\u7edc\u200b\u4e0a\u200b\u7684\u200b js \u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u662f\u200b\u672c\u5730\u200b\u7684\u200b

        \u200b\u6211\u200b\u4f7f\u7528\u200b\u7684\u200b\u7684\u200b js extra.jsmathjax.js
        document.querySelectorAll('.zoom').forEach(item => {\n    item.addEventListener('click'\uff0c function () {\n        this.classList.toggle('image-zoom-large');\n    })\n});\n
        window.MathJax = {\n    tex: {\n    inlineMath: [[\"\\\\(\"\uff0c \"\\\\)\"]]\uff0c\n    displayMath: [[\"\\\\[\"\uff0c \"\\\\]\"]]\uff0c\n    processEscapes: true\uff0c\n    processEnvironments: true\n    }\uff0c\n    options: {\n    ignoreHtmlClass: \".*|\"\uff0c\n    processHtmlClass: \"arithmatex\"\n    }\n};\n\ndocument$.subscribe(() => {\n    MathJax.typesetPromise()\n})\n

        === tablesort.js

        document$.subscribe(function() {\n    var tables = document.querySelectorAll(\"article table:not([class])\")\n    tables.forEach(function(table) {\n    new Tablesort(table)\n    })\n})\n

        "},{"location":"Build_this_website/#33","title":"3.3 \u200b\u6dfb\u52a0\u200b\u5168\u5c40\u200b\u811a\u6ce8","text":"

        \u200b\u6240\u6709\u200b\u811a\u6ce8\u200b\u90fd\u200b\u653e\u5728\u200bincludes/abbreviatioins.md\uff08\u200b\u5728\u200b docs \u200b\u4e4b\u5916\u200b\uff09\uff0c\u200b\u683c\u5f0f\u200b\u4e3a\u200b\uff1a

        *[HTML]: Hyper Text Markup Language\n*[W3C]: World Wide Web Consortium\n

        \u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

        markdown_extensions:\n    - abbr\n    - attr_list\n    - pymdownx.snippets\n    - pymdownx.snippets:\n        auto_append:\n            - includes/abbreviations.md\n

        \u200b\u6548\u679c\u56fe"},{"location":"Build_this_website/#34","title":"3.4 \u200b\u542f\u7528\u200b\u7f51\u7ad9\u200b\u6570\u636e\u5206\u6790","text":"

        \u200b\u5728\u200bmkdocs.yml\u200b\u4e2d\u200b\u6dfb\u52a0\u200b\uff1a

        extra:\n  analytics:\n    provider: google\n    property: G-XXXXXXXXXX\n

        \u200b\u968f\u540e\u200b\u524d\u5f80\u200b Google Analytics \u200b\u6ce8\u518c\u200b\u4f7f\u7528\u200b\u5373\u53ef\u200b.

        \u200b\u542f\u7528\u200b\u8fd9\u9879\u200b\u529f\u80fd\u200b\u9700\u8981\u200b\u5411\u200b\u6bcf\u4e2a\u200b\u7f51\u9875\u200b\u6ce8\u5165\u200b google code

        "},{"location":"Build_this_website/#35","title":"3.5 \u200b\u542f\u7528\u200b\u6700\u65b0\u66f4\u65b0\u200b\u65f6\u95f4","text":"

        \u200b\u5b89\u88c5\u200b\u5e93\u200b\uff1a

        pip install mkdocs-git-revision-date-localized-plugin\n
        \u200b\u6dfb\u52a0\u200b\u8bbe\u7f6e\u200b\u5230\u200bmkdocs.yml\uff1a
        plugins:\n  - git-revision-date-localized:\n      enable_creation_date: true\n

        "},{"location":"Build_this_website/#36","title":"3.6 \u200b\u542f\u7528\u200b\u8bc4\u8bba\u200b\u533a","text":"

        \u200b\u539f\u200b\u6587\u6863\u200b\u4ecb\u7ecd\u200b\u7684\u200b\u5f88\u200b\u6e05\u695a\u200b\u4e86\u200b

        "},{"location":"Build_this_website/#37","title":"3.7 \u200b\u4ece\u6587\u4ef6\u200b\u8bfb\u53d6\u200b\u8868\u683c","text":"

        \u200b\u53c2\u8003\u200b\u539f\u200b\u6587\u6863\u200b

        "},{"location":"Build_this_website/#38-emojis-icons","title":"3.8 \u200b\u4f7f\u7528\u200b emojis \u200b\u548c\u200b icons","text":"

        \u200b\u8fd9\u4e2a\u200b\u94fe\u63a5\u200b\u53ef\u4ee5\u200b\u641c\u7d22\u200b emoji

        "},{"location":"Build_this_website/#39","title":"3.9 \u200b\u56fe\u7247\u200b\u653e\u5927","text":"

        \u200b\u5148\u200b\u5b89\u88c5\u200b\u63d2\u4ef6\u200b\uff1a

        pip install mkdocs-glightbox\n

        \u200b\u7136\u540e\u200b\u52a0\u5165\u200b\u914d\u7f6e\u200b\uff1a

        plugins:\n  - glightbox\n

        "},{"location":"Build_this_website/#310-blog","title":"3.10 \u200b\u542f\u7528\u200b blog","text":"

        \u200b\u5b98\u65b9\u200b\u7684\u200b\u8d77\u6b65\u200b\u6307\u5bfc\u200b\u5f88\u200b\u8be6\u7ec6\u200b\u4e86\u200b\uff0c\u200b\u7167\u7740\u200b\u8d70\u200b\u5c31\u200b\u597d\u200b\uff01

        "},{"location":"Build_this_website/#311","title":"3.11 \u200b\u6211\u200b\u7684\u200b\u6240\u6709\u200b\u914d\u7f6e","text":"

        \u200b\u4ee5\u4e0b\u200b\u9644\u4e0a\u200b\u6211\u200b\u7684\u200bmkdocs.yml\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5df2\u7ecf\u200b\u5220\u53bb\u200b\u4e86\u200b\u5bfc\u822a\u200b\u90e8\u5206\u200b\uff0c\u200b\u6240\u4ee5\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u590d\u5236\u200b\u4f7f\u7528\u200b\uff1a

        mkdocs.yml
        # Project information\nsite_name: Stormckey's Page\nsite_url: https://stormckey.github.io/\nsite_author: Stormckey\n# Repository\nrepo_name: stormckey\nrepo_url: https://github.com/stormckey/stormckey.github.io\n\n# The path to edit the content\nedit_uri: edit/main/docs/\n\n# Copyright\ncopyright: Copyright &copy; stormckey\n\ntheme:\nname: material\ncustom_dir: overrides\nfavicon: cat.svg # put in /docs/cat.svg\nfont:\n    text: Roboto Mono\n    code: Roboto Mono\nfeatures:\n    - content.action.edit # enable the button to edit the source code of the page\n    - content.action.view # enable the button to view the source code of the page\n    - content.code.copy # enable the button to copy the code block\n    - navigation.tabs  # enable the row of tabs under the title\n    # - navigation.sections # unfold the secondary titles to the left\n    # - navigation.footer # enable the next and previous button\n    - navigation.indexes # the index page will be incoperate into the tab\n    - search.suggest # auto suggestion\n    - search.highlight # highlight when search\n    - search.share # enable share when search\n    - navigation.instant # optimize loading\n    - navigation.tracking # URL will change as we scroll down\n    - toc.follow # the sidebar will scroll automatically following the user\n    - navigation.top # button to back to the top\npalette: # my customized schema\n    - media: \"(prefers-color-scheme: light)\"\n    scheme: default\n    primary: indigo\n    accent: indigo\n    toggle:\n        icon: material/brightness-7\n        name: Switch to dark mode\n    - media: \"(prefers-color-scheme: dark)\"\n    scheme: slate\n    toggle:\n        icon: material/brightness-4\n        name: Switch to light mode\nicon:\n    repo: fontawesome/brands/github-alt # the github cat icon in the topright\n    logo: material/cat # the cat icon in the topleft\n\nplugins:\n- search\n# - social: #social card\n#     enabled: !ENV [CI\uff0c false]\n#     cards: !ENV [CI\uff0c false]\n#     cards_font: Noto Sans SC\n- git-revision-date-localized:\n    enabled: !ENV [CI\uff0c false]\n    enable_creation_date: true\n- offline: # enable searching offline\n    enabled: !ENV [OFFLINE\uff0c false]\n- table-reader\n- changelog #see https://github.com/TonyCrane/mkdocs-changelog-plugin\n- tooltips\n- statistics\n- glightbox\n\n\n\nmarkdown_extensions:\n#enable admonition\n- admonition\n- pymdownx.details # enable ??? admonition\n- pymdownx.betterem # better emphasize\n- pymdownx.superfences: # allow nest codes\n    custom_fences:\n        - name: mermaid\n        class: mermaid\n        format: !!python/name:pymdownx.superfences.fence_code_format\n#enable code config\n- pymdownx.inlinehilite #inline code highlight\n- pymdownx.snippets: #enable to embed arbitrary files\n    auto_append:\n        - includes/abbreviations.md\n- pymdownx.highlight:\n        linenums: true # enable line display\n        line_spans: __span\n        pygments_lang_class: true # detect language automatically\n        anchor_linenums: true # offer line anchor\n- pymdownx.keys # render key symbols\n- pymdownx.smartsymbols\n#enable button\n- attr_list\n#enable content tabs\n- pymdownx.tabbed:\n    alternate_style: true\n- tables\n#daigrams are not enabled\n- footnotes\n#enable emoji\n- pymdownx.emoji:\n    emoji_index: !!python/name:materialx.emoji.twemoji\n    emoji_generator: !!python/name:materialx.emoji.to_svg\n    options:\n        custom_icons:\n        - \"overrides/.icons\"\n#image alignment\n- md_in_html\n#better list\n- def_list\n- pymdownx.tasklist:\n    custom_checkbox: true\n#abbr\n- abbr\n#enable math syntax\n- pymdownx.arithmatex:\n    generic: true\n#enable table of content\n- toc:\n    permalink: true\n    permalink_title: Anchor link to this section for reference\n- pymdownx.caret\n- pymdownx.mark\n- pymdownx.tilde\n- pymdownx.critic\n\nextra_javascript:\n- javascripts/extra.js\n- javascripts/mathjax.js\n- https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js # enable table sort\n- javascripts/tablesort.js # enable table sort\n- https://polyfill.io/v3/polyfill.min.js?features=es6\n- https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\n\nextra:\nsocial:\n    - icon: fontawesome/brands/github # icons to the right bottom of the page\n    link: https://github.com/stormckey\n    - icon: fontawesome/solid/paper-plane # icons to the right bottom of the page\n    link: mailto:sortygraph@gmail.com\nalternate: # change the language\uff0c the link should point to different directories\n    - name: English\n    link: /\n    lang: en\n    - name: \u200b\u4e2d\u6587\u200b\n    link: /\n    lang: zh\nconsent:\n    title: Cookie consent\n    description: >-\n    We use cookies to recognize your repeated visits and preferences\uff0c as well\n    as to measure the effectiveness of our documentation and whether users\n    find what they're searching for. With your consent\uff0c you're helping us to\n    make our documentation better.\nanalytics:\n    provider: google\n    property: G-XXXXXXXXXX\n\nextra_css:\n- css/hint.min.css\n- css/extra.css\n
        "},{"location":"Build_this_website/#3x","title":"3.x \u200b\u66f4\u200b\u591a\u200b\u7279\u6027\u200b\uff08\u200b\u6211\u200b\u8fd8\u200b\u4e0d\u4f1a\u200b\u7528\u200b\u4f46\u200b\u8003\u8651\u200b\u542f\u7528\u200b\u7684\u200b\uff09","text":"
        1. \u200b\u81ea\u5b9a\u4e49\u200b html \u200b\u6837\u5f0f\u200b
        "},{"location":"Format/","title":"\u6837\u5f0f\u200b\u4e00\u89c8","text":"

        \u200b\u7ea6\u200b 308 \u200b\u4e2a\u200b\u5b57\u200b 25 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

        Abstraction

        \u200b\u6b64\u200b\u9875\u9762\u200b\u5c06\u4f1a\u200b\u5217\u51fa\u200b\u672c\u200b\u7ad9\u70b9\u200b\u76ee\u524d\u200b\u652f\u6301\u200b\u7684\u200b\u6240\u6709\u200b\u663e\u793a\u200b\u6837\u5f0f\u200b \u200b\u8bb8\u591a\u200b\u90fd\u200b\u6765\u81ea\u200b Material for Mkdocs

        int main(){\n    printf(\"Hello World\");\n    printf(\"!/n\");\n}\n
        #include <iostream>\nusing namespace std;\n

        The range() function is used to generate a sequence of numbers.

        inlcude a file: .gitignore
        site/\n.DS_Store\n*.docx\n*.pdf\nsrc/*\n*pycache*\n
        col1 col2 col3 r1c1 r1c2 r1c3 r2c1 r2c2 r2c3 r3c1 r3c2 r3c3
        graph LR\n  A[What to eat?] --> B{Hesitate};\n  B -->|KFC| C[Hmm...];\n  C --> D[Bad!];\n  D --> B;\n  B ---->|Mcdonald's| E[Yay!];

        \u200b\u6587\u6863\u200b\u4ecb\u7ecd\u200b\u4e86\u200b\u6240\u6709\u200b\u652f\u6301\u200b\u7684\u200b\u56fe\u200b

        my title

        something

        no title

        my title

        something

        no inline

        Now it suppports Note\uff0cAbstract\uff0cInfo\uff0cTip\uff0cSuccess\uff0cQuestion\uff0cWarining\uff0cFailure\uff0cDanger\uff0cBug\uff0cExample\uff0cQuote

        inline

        somthing

        Subscribe to our newsletter

        Subscribe to our newsletter

        CC++
        #include <stdio.h>\n\nint main(void) {\n  printf(\"Hello world!\\n\");\n  return 0;\n}\n
        #include <iostream>\n\nint main(void) {\n  std::cout << \"Hello world!\" << std::endl;\n  return 0;\n}\n

        Note

        Search for emojis here

        Definition

        Define sth

        Text can be deleted and replacement text added. This can also be combined into onea single operation. Highlighting is also possible and comments can be added inline.

        Formatting can also be applied to blocks by putting the opening and closing tags on separate lines and adding new lines between the tags and the content.

        • This was marked
        • This was inserted
        • This was deleted

        • H2O

        • ATA

        Ctrl+Alt+Del

        Image caption

        • Lorem ipsum dolor sit amet\uff0c consectetur adipiscing elit
        • Vestibulum convallis sit amet nisi a tincidunt
          • In hac habitasse platea dictumst
          • In scelerisque nibh non dolor mollis congue sed et metus
          • Praesent sed risus massa
        • Aenean pretium efficitur erat\uff0c donec pharetra\uff0c ligula non scelerisque
        \\[ \\operatorname{ker} f=\\{g\\in G:f(g)=e_{H}\\}{\\mbox{.}} \\]

        \u3010\u200b\u9f20\u6807\u60ac\u505c\u200b\uff01\u3011{\ud83d\ude0b}

        Hover me

        The HTML specification is maintained by the W3C.

        Lorem ipsum dolor sit amet

        Sed sagittis eleifend rutrum. Donec vitae suscipit est. Nullam tempus tellus non sem sollicitudin\uff0c quis rutrum leo facilisis.

        Cras arcu libero

        Aliquam metus eros\uff0c pretium sed nulla venenatis\uff0c faucibus auctor ex. Proin ut eros sed sapien ullamcorper consequat. Nunc ligula ante.

        Duis mollis est eget nibh volutpat\uff0c fermentum aliquet dui mollis. Nam vulputate tincidunt fringilla. Nullam dignissim ultrices urna non auctor.

        Method Description GET Fetch resource PUT Update resource DELETE Delete resource"},{"location":"changelog/","title":"\u66f4\u65b0\u200b\u8bb0\u5f55","text":""},{"location":"changelog/#2023","title":"2023","text":"2023-11-28\u00b6

        \u200b\u4f7f\u7528\u200b\u4e86\u200bmeta-manager\u200b\u63d2\u4ef6\u200b,\u200b\u7b80\u5316\u200b\u4e86\u200bmetadata\u200b\u7684\u200b\u4f7f\u7528\u200b

        Blog > PL > Y-combinator

        \u200b\u65b0\u589e\u200b\u4e86\u200bReference\u200b\u6837\u5f0f\u200b

        2023-11-26\u00b6

        \u200b\u65b0\u589e\u200b\u4e86\u200bDefinition\u200b\u6837\u5f0f\u200b

        \u200b\u542f\u7528\u200bblog\u200b\u63d2\u4ef6\u200b

        \u200b\u4f7f\u7528\u200bPangu.vim\u200b\u63d2\u4ef6\u200b\u8fdb\u884c\u200b\u6587\u6863\u200b\u683c\u5f0f\u5316\u200b

        Blog > Cool > \u200b\u7528\u200bVim\u200b\u6279\u91cf\u200b\u683c\u5f0f\u5316\u200b

        2023-11-25\u00b6

        \u200b\u91cd\u6784\u200b\u4e86\u200bBlog\u200b\u7684\u200b\u5c42\u7ea7\u200b,\u200b\u52a0\u5165\u200b\u4e86\u200bLab\u200b\u90e8\u5206\u200b

        \u200b\u52a0\u5165\u200b\u4e86\u200b\u8ba1\u7f51\u200b\u5b9e\u9a8c\u200b\u6307\u5357\u200b

        2023-11-20\u00b6

        \u200b\u65b0\u589e\u200b\u4e86\u200b\u6570\u636e\u200b\u5efa\u6a21\u200b\u4e0e\u200b\u5206\u6790\u200b\u7684\u200b\u7b14\u8bb0\u200b

        2023-11-07\u00b6

        \u200b\u597d\u200b\u670b\u53cb\u200bPeiPei\u200b\u6765\u200b\u5bc4\u5c45\u200b\u4e86\u200b!

        2023-07-08\u00b6

        \u200b\u66f4\u6362\u200b\u4e86\u200b\u66f4\u65b0\u200b\u65e5\u5fd7\u200b\u7684\u200b\u8272\u5f69\u200b

        \u200b\u79fb\u9664\u200bDS\u200b\u7b14\u8bb0\u200b

        2023-07-04\u00b6

        \u200b\u6da6\u8272\u200b\u4e86\u200b\u535a\u5ba2\u200b\u548c\u200b\u7b14\u8bb0\u200b\u7684\u200b\u5185\u5bb9\u200b

        Home > Build_this_page

        \u200b\u91cd\u6784\u200b\u4e86\u200b\u7f51\u7ad9\u200b\u7684\u200b\u7ed3\u6784\u200b\uff0c\u200b\u542f\u7528\u200b\u4e86\u200b\u65b0\u200b\u7684\u200bmaterial\u200b\u529f\u80fd\u200b

        Blog > docker_minisql

        2023-04-06\u00b6

        Blog > \u200b\u5728\u200bMac\u200b\u4e0a\u200b\u4f7f\u7528\u200bVSCode\u200b\u8fdb\u884c\u200bC/C++\u200b\u8c03\u8bd5\u200b

        2023-04-01\u00b6

        Blog > \u200b\u6211\u200b\u7684\u200bCLI\u200b\u5de5\u5177\u200b

        2023-03-30\u00b6

        Note > \u200b\u8ba1\u7ec4\u200b\u62fe\u9057\u200b

        2023-03-29\u00b6

        Blog > \u200b\u542f\u7528\u200bchatGPT-academic

        2023-03-27\u00b6

        Note > Missiing Semester > Commandline Environment

        2023-03-23\u00b6

        \u200b\u91cd\u6784\u200b\u4e86\u200b\u5168\u7ad9\u200b\u7684\u200b\u56fe\u7247\u200b\u6837\u5f0f\u200b\uff0c\u200b\u73b0\u5728\u200b\u662f\u200b\u9ed8\u8ba4\u200b\u5706\u89d2\u200b\u77e9\u5f62\u200b\u52a0\u200b\u9634\u5f71\u200b

        Blog > \u200b\u5728\u200bVSCode\u200b\u4e0b\u200b\u7f16\u5199\u200bMarkdown

        Blog > \u200b\u914d\u7f6e\u200bGithub\u200b\u4e2a\u4eba\u200bProfile

        2023-03-22\u00b6

        Blog > \u200b\u7528\u200bssh\u200b\u8fde\u63a5\u200b\u540c\u4e00\u200b\u5c40\u57df\u7f51\u200b\u4e0b\u200b\u7684\u200bwsl

        Blog > wsl\u200b\u7ec8\u7aef\u200b\u914d\u7f6e\u200b

        2023-03-21\u00b6

        Blog > wsl\u200b\u4e0a\u200b\u542f\u7528\u200bcuda

        Blog > VSCode\u200b\u7ec8\u7aef\u200b\u4e0a\u200b\u65e0\u6cd5\u200b\u542f\u7528\u200bconda\u200b\u865a\u62df\u73af\u5883\u200b

        2023-03-20\u00b6

        Blog > zsh\u200b\u4e2d\u200b\u7684\u200b\u53c2\u6570\u4f20\u9012\u200b

        2023-03-18\u00b6

        Home > \u200b\u6700\u8fd1\u200b\u66f4\u65b0\u200b

        \u200b\u4fee\u6539\u200b\u4e86\u200b\u7f51\u7ad9\u200b\u7684\u200b\u8272\u5f69\u200b,\u200b\u4f7f\u7528\u200b\u4e86\u200b\u66f4\u200b\u591a\u6837\u200b\u7684\u200b\u56fe\u6807\u200b

        Research > Diffusion > DDPM

        Research > Diffusion > DDIM

        "},{"location":"Note/","title":"\u7b14\u8bb0\u672c\u200b\uff01","text":"

        \u200b\u5927\u5b66\u200b\u671f\u95f4\u200b\u7684\u200b\u7b14\u8bb0\u200b\u5408\u96c6\u200b

        \u200b\u5176\u5b9e\u200b\u6211\u200b\u4e00\u76f4\u200b\u4ee5\u6765\u200b\u90fd\u200b\u4e0d\u600e\u4e48\u200b\u8bb0\u7b14\u8bb0\u200b\uff0c\u200b\u4f46\u200b\u4e4b\u524d\u200b\u51e0\u6b21\u200b\u6570\u5b66\u8bfe\u200b\u4e0d\u200b\u8bb0\u7b14\u8bb0\u200b\u5dee\u70b9\u200b\u66b4\u6bd9\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u504f\u200b\u6570\u5b66\u200b\u7684\u200b\u8bfe\u200b\u8fd8\u662f\u200b\u4fdd\u7559\u200b\u4e86\u200b\u8bb0\u7b14\u8bb0\u200b\u7684\u200b\u4e60\u60ef\u200b\u7684\u200b.

        \u200b\u53e6\u5916\u200b\u8fd8\u6709\u200b\u4e00\u4e9b\u200b\u671f\u672b\u200b\u590d\u4e60\u200b\u4ea7\u751f\u200b\u7684\u200b\u7b14\u8bb0\u200b\uff0c\u200b\u8fd8\u6709\u200b\u4e00\u4e9b\u200b\u6613\u200b\u5fd8\u200b\u77e5\u8bc6\u200b\u7684\u200b\u6574\u7406\u200b

        "},{"location":"Note/CO_review/","title":"\u8ba1\u7b97\u673a\u200b\u7ec4\u6210","text":"

        \u200b\u7ea6\u200b 431 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

        \u200b\u6781\u5176\u200b\u7b80\u7565\u200b\uff0c\u200b\u53ea\u6709\u200b\u90e8\u5206\u200b\u6613\u200b\u5fd8\u200b\u3001\u200b\u6216\u200b\u4e0d\u200b\u90a3\u4e48\u200b\u663e\u7136\u200b\u7684\u200b\u77e5\u8bc6\u70b9\u200b\uff08\u200b\u62ff\u6765\u200b\u67e5\u8868\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u796d\u7956\u200b\u53ea\u7528\u200b\u4e86\u200b\u4e00\u9875\u200b

        \u200b\u8bb8\u591a\u200b\u5185\u5bb9\u200b\u6458\u81ea\u200b\u54b8\u9c7c\u200b\u6684\u200b\u7684\u200b\u4ee3\u7801\u200b\u7a7a\u95f4\u200b

        \u200b\u8fd9\u91cc\u200b\u662f\u200b\u8bfe\u672c\u200b\u4f5c\u4e1a\u200b\u7b54\u6848\u200b

        "},{"location":"Note/CO_review/#ch2-instructions","title":"Ch2 Instructions","text":"
        • PC relative addressing: PC + offset \u200b\u800c\u200b\u975e\u200b PC + 4 + offset
        • I \u200b\u7c7b\u578b\u200b\u7684\u200b\u7acb\u5373\u200b\u6570\u5747\u200b\u4e3a\u200b\u7b26\u53f7\u200b\u6269\u5c55\u200b\uff0c\u200b\u4f46\u200b\u8981\u200b\u6ce8\u610f\u200b\u79fb\u4f4d\u6307\u4ee4\u200b\u53ea\u200b\u622a\u53d6\u200b\u4f4e\u4f4d\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u8fc7\u200b\u591a\u4f4d\u6570\u200b\u7684\u200b\u4f4d\u79fb\u200b\u65e0\u200b\u610f\u4e49\u200b
        • SB \u200b\u548c\u200b UJ \u200b\u7c7b\u578b\u200b\u90fd\u200b\u4e0d\u5b58\u200b\u6700\u4f4e\u200b\u4f4d\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u4ed6\u4eec\u200b\u7684\u200b\u76ee\u7684\u5730\u200b\u662f\u200b\u6307\u4ee4\u200b\uff08word alignment\uff09\uff0c\u200b\u4e00\u822c\u200b\u6700\u540e\u200b\u4e24\u4f4d\u200b\u90fd\u200b\u662f\u200b 0\uff08\u200b\u56e0\u4e3a\u200b\u5b58\u5728\u200b 16 \u200b\u4f4d\u200b\u7684\u200b\u6307\u4ee4\u200b\u6240\u4ee5\u200b\u53ea\u6709\u200b\u6700\u540e\u200b\u4e00\u4f4d\u200b\u5fc5\u7136\u200b\u662f\u200b 0\uff09
        • \u200b\u5408\u7406\u200b\u5229\u7528\u200bbgeu\u200b\u6765\u200b\u68c0\u6d4b\u200b\u8d8a\u754c\u200b\uff08\u200b\u5c0f\u4e8e\u200b\u96f6\u200b\u6216\u8005\u200b\u5927\u4e8e\u200b\u67d0\u4e2a\u200b\u6570\u200b\uff09
        • lui\u200b\u52a0\u8f7d\u200b\u4e86\u200b\u7acb\u5373\u200b\u6570\u200b\u7684\u200b\u9ad8\u200b 20 \u200b\u4f4d\u540e\u200b\uff0c\u200b\u7528\u200baadi\u200b\u52a0\u8f7d\u200b\u4f4e\u200b 12 \u200b\u4f4d\u200b\uff0c\u200b\u82e5\u56e0\u200b\u7b26\u53f7\u200b\u6269\u5c55\u200b\u5bfc\u81f4\u200b\u8fdb\u4f4d\u200b\uff0c\u200b\u53ea\u8981\u200b\u591a\u52a0\u200b 1000 \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u62b5\u6d88\u200b FFFFF000 \u200b\u7684\u200b\u5f71\u54cd\u200b
        • \u200b\u8bb0\u200b\u6e05\u695a\u200b ld \u200b\u7684\u200b d \u200b\u662f\u200b doubleword\uff0c\u200b\u8001\u662f\u200b\u8bb0\u6210\u200b load \u200b\u7684\u200b d

        \u200b\u8fd8\u6709\u200b\u51e0\u5f20\u200b\u5e38\u7528\u200b\u8868\u200b\uff1a

        \uff08\u200b\u4e0b\u56fe\u200b\u91cc\u200b\u7684\u200b j imm \u200b\u8981\u200b\u6539\u6210\u200b PC+imm\uff09

        "},{"location":"Note/CO_review/#ch3-arithmetic","title":"Ch3 Arithmetic","text":"
        • \u200b\u68c0\u6d4b\u200b\u52a0\u51cf\u6cd5\u200b\u6ea2\u51fa\u200b\uff1a\u200b\u6700\u9ad8\u200b\u4f4d\u200b\u5168\u52a0\u5668\u200b\u7684\u200b Cin Cout \u200b\u8fdb\u884c\u200b\u5f02\u6216\u200b\u5373\u53ef\u200b\uff0c\u200b\u8fd9\u200b\u4fe9\u200b\u4fe1\u53f7\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff0c\u200b\u5c31\u200b\u610f\u5473\u7740\u200b\u6ea2\u51fa\u200b\u4e86\u200b
        • \u200b\u6700\u9ad8\u200b\u4f4d\u200b\u7275\u51fa\u200b\u4e00\u6839\u200b\u7ebf\u200b set \u200b\u5230\u200b\u6700\u4f4e\u200b\u4f4d\u200b\u7684\u200b less\uff0c\u200b\u5176\u4ed6\u200b\u6240\u6709\u200b\u4f4d\u200b less \u200b\u90fd\u200b\u7f6e\u200b 0 \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7ec4\u6210\u200b slt \u200b\u7684\u200b\u8f93\u51fa\u200b\u4fe1\u53f7\u200b\u4e86\u200b
        • IEEE 754 \u200b\u6ce8\u610f\u200b\u4e24\u70b9\u200b \u200b\u4e00\u662f\u200b 1+8+23 = 32 \uff5c1 + 11 + 52 = 64\uff1b\u200b\u4e8c\u662f\u200b\u4e0b\u6ea2\u200b\u7684\u200b\u975e\u200b\u89c4\u683c\u200b\u6570\u200b\u7684\u200b exponent \u200b\u8ddf\u200b\u89c4\u683c\u200b\u6570\u200b\u7684\u200b\u6700\u5c0f\u200b exponent \u200b\u662f\u200b\u4e00\u6837\u200b\u7684\u200b\uff0c\u200b\u8fd9\u6837\u200b\u8bbe\u8ba1\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8ba9\u200b 0.1111111...\uff08\u200b\u4e0b\u6ea2\u200b\u6700\u5927\u200b\uff09 -> 1.0000000\uff08\u200b\u89c4\u683c\u200b\u6700\u5c0f\u200b\uff09...\u200b\u8fde\u7eed\u200b\u53ef\u4ee5\u200b\u7b49\u200b\u5dee\u200b\u7684\u200b\u5f80\u200b\u4e0a\u200b\u589e\u52a0\u200b
        • \u200b\u6d6e\u70b9\u200b\u52a0\u6cd5\u200b\uff1a\u200b\u6ce8\u610f\u200b\u5bf9\u9f50\u200b\u6539\u53d8\u200b\u7684\u200b\u662f\u200b\u5c0f\u200b\u7684\u200b\u6307\u6570\u200b\u90a3\u4e2a\u200b
        • \u200b\u6d6e\u70b9\u200b\u4e58\u6cd5\u200b\uff0c\u200b\u6ce8\u610f\u200b\u51cf\u53bb\u200b bias
        "},{"location":"Note/ADS/B-Tree_B%2BTree/","title":"B Tree B+Tree","text":"

        \u200b\u7ea6\u200b 424 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

        1.

        B \u200b\u6811\u200b\u5229\u7528\u200b\u4e86\u200b\u5c40\u90e8\u6027\u200b\u6765\u200b\u52a0\u901f\u200b\u8bbf\u95ee\u200b\n\nB \u200b\u6811\u200b\u7684\u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\u662f\u200b\u6307\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u7a7a\u200b\u5b69\u5b50\u200b\n\n![](image/B-Tree_B+Tree/media/image1.png)\n

        2.

        \u200b\u5bf9\u200b B \u200b\u6811\u200b\u7684\u200b\u8282\u70b9\u200b\u5173\u952e\u7801\u200b\u6570\u200b\u7ea6\u5b9a\u200b\uff0c\u200b\u6ce8\u610f\u200b\u4e0b\u9650\u200b\u662f\u200b\u4e0a\u200b\u53d6\u6574\u200b\uff0c\u200b\u53ef\u7528\u200b\u4e0a\u200b\u4e0b\u9650\u200b\u547d\u540d\u200b\n\u200b\u5982\u200b\uff083\uff0c5\uff09\u200b\u6811\u200b/5 \u200b\u9636\u200b B \u200b\u6811\u200b\uff0c5 \u200b\u9636\u200b B \u200b\u6570\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u6700\u200b\u591a\u200b 4 \u200b\u4e2a\u200b\u5173\u952e\u7801\u200b\n\n![](image/B-Tree_B+Tree/media/image2.png)\n

        3.

        B \u200b\u6811\u200b\u5728\u200b\u5185\u5b58\u200b\u4e2d\u200b\u5b9e\u9645\u200b\u7684\u200b\u5b58\u50a8\u200b\u5f62\u5f0f\u200b\u4e3a\u200b\n\n![](image/B-Tree_B+Tree/media/image3.png)\n

        4.

        \u200b\u6ce8\u610f\u200b \u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\u6570\u200b=\u200b\u5185\u90e8\u200b\u8282\u70b9\u200b\u6570\u200b+1\n\n![](image/B-Tree_B+Tree/media/image4.png)\n\n\n\u200b\u4e5f\u200b\u53ef\u200b\u7406\u89e3\u200b\u4e3a\u200b\u5185\u90e8\u200b\u8282\u70b9\u200b\u5bf9\u5e94\u200b N \u200b\u79cd\u200b\u6210\u529f\u200b\uff0c\u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\u5c31\u662f\u200b\u5bf9\u5e94\u200b\u7684\u200b N+1 \u200b\u79cd\u200b\u5931\u8d25\u200b\u7684\u200b\u60c5\u51b5\u200b\n

        5.

        B \u200b\u6811\u200b\u7684\u200b\u9ad8\u5ea6\u200b\u5c31\u200b\u5728\u200b\u3001\\thetalogmn\n\n![](image/B-Tree_B+Tree/media/image5.png)\n

        6.

        B \u200b\u6570\u200b\u7684\u200b\u63d2\u5165\u200b\uff0c\u200b\u5982\u679c\u200b\u5bfc\u81f4\u200b\u8282\u70b9\u200b key \u200b\u8fc7\u591a\u200b\uff0c\u200b\u5219\u200b\u9700\u8981\u200b\u5206\u88c2\u200b\uff0c\u200b\u5e76\u200b\u628a\u200b\u4e2d\u70b9\u200b\u4e0a\u79fb\u200b\n\n![](image/B-Tree_B+Tree/media/image6.png)\n\n\n\u200b\u5982\u679c\u200b\u5206\u88c2\u200b\u5230\u200b\u6839\u200b \u200b\u90a3\u4e48\u200b\u9ad8\u5ea6\u200b\u52a0\u200b 1\n

        7.

        B \u200b\u6811\u200b\u7684\u200b\u5220\u9664\u200b\uff0c\u200b\u5982\u679c\u200b\u5bfc\u81f4\u200b\u4e0b\u200b\u8d8a\u754c\u200b\uff0c\u200b\u4f46\u51e1\u200b\u5de6\u53f3\u200b\u6709\u200b\u4e00\u4e2a\u200b\u5144\u5f1f\u200b\u6709\u200b\u591a\u200b\u7684\u200b\uff08\u200b\u501f\u51fa\u200b\u540e\u200b\u4e0d\u4e0b\u200b\u6ea2\u51fa\u200b\uff09\uff0c\u200b\u65cb\u8f6c\u200b\n\n![](image/B-Tree_B+Tree/media/image7.png)\n\n\n\u200b\u5982\u679c\u200b\u6ca1\u6709\u200b\uff0c \u200b\u4ece\u200b\u4e0a\u9762\u200b\u62fd\u200b\u4e00\u4e2a\u200b\u4e0b\u6765\u200b\uff0c\u200b\u4e09\u200b\u90e8\u5206\u200b\u4e00\u8d77\u200b\u5408\u5e76\u200b\n\n![](image/B-Tree_B+Tree/media/image8.png)\n\n\n\u200b\u5408\u5e76\u200b\u5230\u200b\u6839\u200b\uff0c\u200b\u5c31\u200b\u628a\u200b\u7a7a\u6839\u200b\u5220\u9664\u200b\uff0c\u200b\u81f3\u6b64\u200b\u9ad8\u5ea6\u200b\u51cf\u4e00\u200b\n

        8.

        B \u200b\u6811\u200b\u628a\u200b\u6570\u636e\u200b\u5b58\u5728\u200b\u8282\u70b9\u200b\u4e2d\u200b\uff0c\u200b\u6bd4\u8d77\u200b B+\u200b\u6811\u200b\u5b58\u5728\u200b\u6839\u4e2d\u200b\uff0cB \u200b\u9664\u4e86\u200b key \u200b\u591a\u200b\u4e86\u200b\u4e2a\u200b\u6307\u9488\u200b\u7684\u200b\u5927\u5c0f\u200b.\u200b\u9664\u53bb\u200b\u6307\u9488\u200b\u7d22\u5f15\u200b\u53ef\u4ee5\u200b\u5bb9\u7eb3\u200b\u5bbd\u200b\u6241\u200b\u7684\u200b\u6811\u200b.\n\n\u200b\u53e6\u5916\u200b\u52a0\u5165\u200b\u8981\u200b\u67e5\u627e\u200b\u67d0\u4e00\u200b\u533a\u95f4\u200b\u7684\u200b\u70b9\u200b\u6bd4\u5982\u200b 20-60\uff0c\u200b\u9700\u8981\u200b\u4f9d\u6b21\u200b\u641c\u7d22\u200b\uff0c\u200b\u5f88\u200b\u9ebb\u70e6\u200b\n\n\u200b\u5f15\u5165\u200b B+\u200b\u6811\u200b\uff1a\n\n![](image/B-Tree_B+Tree/media/image9.png)\n\n\n\u200b\u7d22\u5f15\u200b\u503c\u200b\uff08\u200b\u5185\u90e8\u200b\u70b9\u200b\uff09\u200b\u4e0d\u200b\u91cd\u590d\u200b\uff1b\n\n\u200b\u4e0d\u518d\u200b\u9700\u8981\u200b B \u200b\u6811\u200b\u7684\u200b\u5916\u90e8\u200b\u8282\u70b9\u200b\uff1b\n\n\u200b\u53f6\u5b50\u200b\u5757\u200b\u5355\u5411\u200b\u94fe\u8868\u200b\uff0c\u200b\u65b9\u4fbf\u200b\u67e5\u627e\u200b\u67d0\u4e2a\u200b\u8303\u56f4\u200b\u5185\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u4e0d\u5fc5\u200b\u591a\u904d\u200b\u4ece\u6839\u200b\u51fa\u53d1\u200b.\n\n\u200b\u7d22\u5f15\u200b\u503c\u200b\uff08\u200b\u5185\u90e8\u200b\u70b9\u200b\u7684\u200b key\uff09\u200b\u5b58\u200b\u7684\u200b\u662f\u200b\u53f3\u5b50\u200b\u6811\u200b\u7684\u200b\u6700\u5c0f\u200b\u53f6\u5b50\u200b\u8282\u70b9\u200b\u7684\u200b\u503c\u200b.\n\n\u200b\u5982\u679c\u200b\u6709\u200b\u78c1\u76d8\u200b\u6307\u9488\u200b\uff0c\u200b\u4e5f\u200b\u90fd\u200b\u5b58\u5728\u200b\u6709\u200b\u8282\u70b9\u200b.\n\n\u200b\u63d2\u5165\u200b\u5220\u9664\u200b\u4e0e\u200b B \u200b\u6811\u200b\u76f8\u4eff\u200b.\u200b\u4f46\u200b\u90fd\u200b\u8981\u200b\u6df1\u5165\u200b\u5230\u200b\u53f6\u200b\u8282\u70b9\u200b.\n
        "},{"location":"Note/ADS/BST_AVL_Splay/","title":"BST AVL Splay","text":"

        \u200b\u7ea6\u200b 287 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

        1. \u200b\u6211\u4eec\u200b\u5728\u200b\u8c03\u7528\u200b search \u200b\u65f6\u4f1a\u200b\u591a\u200b\u4f20\u9012\u200b\u4e00\u4e2a\u200b\u5f15\u7528\u200b\u7684\u200b\u53c2\u6570\u200b hot \u200b\u5176\u200b\u610f\u4e49\u200b\u5982\u4e0b\u200b\uff1a

          \u200b\u8fd9\u200b\u6709\u5229\u4e8e\u200b\u6211\u4eec\u200b\u5b9e\u73b0\u200b insert delete

        2.

        BST \u200b\u7684\u200b\u5e73\u5747\u200b\u9ad8\u5ea6\u200b\uff0c\u200b\u6709\u200b\u4e24\u79cd\u200b\u8ba1\u7b97\u200b\u65b9\u5f0f\u200b\n\n  1.  \u200b\u968f\u673a\u200b\u7ec4\u6210\u200b\uff1a\u200b\u8ba1\u7b97\u200b\u4e00\u5171\u200b\u6709\u200b\u591a\u5c11\u200b\u79cd\u200b\u53ef\u80fd\u200b\u7684\u200b\u62d3\u6251\u200b\u7ed3\u6784\u200b \u200b\u6839\u53f7\u200b n Catalan\uff08N\uff09\u200b\u79cd\u200b\u7ed3\u6784\u200b\n\n  2.  \u200b\u968f\u673a\u200b\u751f\u6210\u200b\uff1a\u200b\u8ba1\u7b97\u200b\u4e00\u5171\u200b\u6709\u200b\u591a\u5c11\u200b\u79cd\u200b\u53ef\u80fd\u200b\u7684\u200b\u8f93\u5165\u200b\u5e8f\u5217\u200b ln N N\uff01\u200b\u79cd\u200b\u5e8f\u5217\u200b\n\n![](image/BST_AVL_Splay/media/image2.png)\n\n\n\u200b\u968f\u673a\u200b\u7ec4\u6210\u200b\u66f4\u52a0\u200b\u53ef\u4fe1\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u968f\u673a\u200b\u751f\u6210\u200b\u4f1a\u200b\u989d\u5916\u200b\u589e\u5927\u200b 213 \u200b\u548c\u200b 231 \u200b\u8fd9\u4e00\u8f83\u200b\u4f4e\u6811\u200b\u7684\u200b\u6743\u91cd\u200b\uff0c\u200b\u91cd\u590d\u200b\u4e86\u200b\n

        3.\u200b\u7b49\u4ef7\u200b BST

        \u200b\u4e0a\u4e0b\u200b\u5177\u6709\u200b\u4e00\u5b9a\u200b\u7684\u200b\u7075\u6d3b\u200b\u5ea6\u200b\n\n![](image/BST_AVL_Splay/media/image3.png)\n\n\n![](image/BST_AVL_Splay/media/image4.png)\n

        4.

        ![](image/BST_AVL_Splay/media/image5.png)\n\n\n\u200b\u5de6\u200b\u5206\u53c9\u200b\u662f\u200b zig \u200b\u53f3\u200b\u5206\u53c9\u200b\u662f\u200b zag\uff0c\u200b\u65cb\u8f6c\u200b\u53ef\u4ee5\u200b\u4fdd\u6301\u200b BST \u200b\u7684\u200b\u7b49\u4ef7\u200b\n

        5.

        AVL \u200b\u7684\u200b\u63d2\u5165\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u4e00\u7cfb\u5217\u200b\u7956\u5148\u200b\u7684\u200b\u5931\u8861\u200b\uff0c\u200b\u4f46\u662f\u200b\u5220\u9664\u200b\u53ea\u200b\u53ef\u80fd\u200b\u5bfc\u81f4\u200b\u67d0\u200b\u4e00\u4e2a\u200b\u7956\u5148\u200b\u7684\u200b\u5931\u8861\u200b\n

        6.

        ![](image/BST_AVL_Splay/media/image6.png)\n\n\n\u200b\u6ce8\u610f\u200b\u5230\u200b\u6211\u4eec\u200b\u627e\u5230\u200b\u7b2c\u4e00\u4e2a\u200b\u5931\u8861\u200b\u70b9\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5faa\u73af\u200b\u8d70\u200b\u554a\u200b\u8def\u5f84\u200b\u53ea\u8981\u200b\u5f80\u4e0b\u200b\u627e\u200b\u4e24\u6b21\u200b\u9ad8\u5ea6\u200b\u6700\u9ad8\u200b\u7684\u200b\u5b69\u5b50\u200b\u5c31\u200b\u597d\u200b\n

        7.

        \u200b\u4f38\u5c55\u200b\u6811\u200b\u7684\u200b\u5220\u9664\u200b\u548c\u200b\u63d2\u5165\u200b\uff0c\u200b\u7531\u4e8e\u200b 1 \u200b\u90fd\u200b\u9700\u8981\u200b\u7528\u200b search \u200b\u64cd\u4f5c\u200b\uff0csearch \u200b\u5b8c\u540e\u200b self/hot \u200b\u4f1a\u200b\u6210\u4e3a\u200b\u65b0\u200b\u7684\u200b\u6839\u200b\u8282\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u63d2\u5165\u200b\u5220\u9664\u200b\u53ea\u8981\u200b\u5728\u200b\u641c\u7d22\u200b\u5b8c\u540e\u200b\u5bf9\u200b\u6839\u200b\u64cd\u4f5c\u200b\u5373\u53ef\u200b.\n\n![](image/BST_AVL_Splay/media/image7.png)\n
        "},{"location":"Note/ADS/Heap/","title":"\u4f18\u5148\u7ea7\u200b\u961f\u5217\u200b/\u200b\u5806\u200b\u62fe\u9057","text":"

        \u200b\u7ea6\u200b 100 \u200b\u4e2a\u200b\u5b57\u200b

        "},{"location":"Note/ADS/Heap/#npl","title":"NPL \u200b\u7684\u200b\u53e6\u200b\u4e00\u79cd\u200b\u7406\u89e3","text":"

        \u200b\u53ef\u4ee5\u200b\u53c2\u770b\u200b\u56fe\u7247\u200b\u7406\u89e3\u200b\uff0c\u200b\u8282\u70b9\u200b NPL \u200b\u4e5f\u200b\u662f\u200b\u8be5\u5b50\u200b\u6811\u200b\u7684\u200b\u6700\u5927\u200b\u5b8c\u5168\u200b\u4e8c\u53c9\u6811\u200b\u6df1\u5ea6\u200b

        "},{"location":"Note/ADS/Heap/#_2","title":"\u6700\u5c0f\u200b\u8282\u70b9\u200b\u6570\u200b\u7684\u200b\u8bc1\u660e","text":"

        \u200b\u5728\u200b\u6b64\u57fa\u7840\u200b\u4e0a\u200b\u5f88\u200b\u597d\u200b\u8bc1\u660e\u200b\u53f3\u4fa7\u200b\u94fe\u200b\u7684\u200b\u957f\u5ea6\u200b\u4e0a\u9650\u200b

        "},{"location":"Note/ADS/Heap/#_3","title":"\u9526\u6807\u8d5b\u200b\u6811\u200b\uff0c\u200b\u4e86\u89e3\u200b\u5373\u53ef","text":""},{"location":"Note/ADS/Heap/#_4","title":"\u591a\u53c9\u5806\u200b\uff0c\u200b\u64cd\u4f5c\u200b\u590d\u6742\u5ea6\u200b\u6539\u53d8","text":"

        \u200b\u8fd9\u200b\u5c06\u200b\u5bfc\u81f4\u200b\u5e94\u7528\u200b\u5728\u200b\u56fe\u200b\u7b97\u6cd5\u200b\u4e0a\u200b\u81ea\u200b\u9002\u5e94\u200b\u6700\u4f18\u200b

        "},{"location":"Note/ADS/RBTree/","title":"RBTree","text":"

        \u200b\u7ea6\u200b 70 \u200b\u4e2a\u200b\u5b57\u200b

        1.

        \u200b\u56db\u4e2a\u200b\u7ea6\u675f\u6761\u4ef6\u200b\uff1a\n\n![](image/RBTree/media/image1.png)\n

        2.

        \u200b\u7ea2\u9ed1\u6811\u200b\u5c31\u662f\u200b B-\u200b\u6811\u200b\n\n![](image/RBTree/media/image2.png)\n

        3.

        \u200b\u5229\u7528\u200b B-\u200b\u6811\u200b\u8bc1\u660e\u200b\u7ea2\u9ed1\u6811\u200b\u7684\u200b\u9ad8\u5ea6\u200b\n\n![](image/RBTree/media/image3.png)\n

        4.

        \u200b\u5229\u7528\u200b B-Tree \u200b\u8ba4\u8bc6\u200b\u95ee\u9898\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u53ea\u200b\u9700\u200b\u4f7f\u7528\u200b 3\uff0c4 \u200b\u91cd\u6784\u200b\u5373\u53ef\u200b\uff0c\u200b\u91cd\u65b0\u200b\u5f52\u4e8e\u200b RBR\n\n![](image/RBTree/media/image4.png)\n

        5.

        \u200b\u7ea2\u9ed1\u6811\u200b\u63d2\u5165\u200b\u7684\u200b\u590d\u6742\u5ea6\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u91cd\u6784\u200b\uff08\u200b\u65cb\u8f6c\u200b\uff09\u200b\u81f3\u591a\u200b\u5e38\u6570\u200b\u6b21\u200b\n\n![](image/RBTree/media/image5.png)\n
        "},{"location":"Note/Data%20Modeling/","title":"\u6570\u636e\u200b\u5efa\u6a21\u200b\u4e0e\u200b\u5206\u6790","text":"

        \u200b\u7ea6\u200b 138 \u200b\u4e2a\u200b\u5b57\u200b

        \u200b\u8bfe\u7a0b\u200b\u4fe1\u606f\u200b

        \u200b\u6388\u8bfe\u200b\u6559\u5e08\u200b\uff1a\u200b\u90ed\u6b63\u521d\u200b

        \u200b\u5f00\u200b\u79d1\u5b66\u9662\u200b\uff1a\u200b\u6570\u5b66\u200b\u79d1\u5b66\u200b\u5b66\u9662\u200b

        \u200b\u5f00\u8bfe\u200b\u5b66\u671f\u200b\uff1a2023 \u200b\u5e74\u6625\u590f\u200b

        \u200b\u9884\u4fee\u200b\u8981\u6c42\u200b\uff1a\u200b\u5fae\u79ef\u5206\u200b\uff0c\u200b\u7ebf\u6027\u4ee3\u6570\u200b\uff0c\u200b\u6982\u7387\u8bba\u200b

        \u200b\u6559\u6750\u200b\uff1a \u200b\u7edf\u8ba1\u200b\u5b66\u4e60\u200b\u65b9\u6cd5\u200b \u200b\u674e\u822a\u200b \u200b\u7b2c\u4e8c\u200b\u7248\u200b

        \u200b\u672c\u95e8\u200b\u8bfe\u7a0b\u200b\u4e3b\u8981\u200b\u805a\u7126\u200b\u4e8e\u200b\u673a\u5668\u200b\u5b66\u4e60\u200b\u7684\u200b\u7b97\u6cd5\u200b\u8bb2\u89e3\u200b\u4e0e\u200b\u5206\u6790\u200b\uff0c\u200b\u5e76\u4e14\u200b\u5927\u90e8\u5206\u200b\u673a\u5668\u200b\u5b66\u4e60\u200b\u7684\u200b\u65b9\u6cd5\u200b\u4ecd\u200b\u5c5e\u4e8e\u200b\u7edf\u8ba1\u200b\u5b66\u4e60\u200b\u800c\u200b\u975e\u200b\u6df1\u5ea6\u200b\u5b66\u4e60\u200b\u7684\u200b\u8303\u7574\u200b\uff0c\u200b\u6bd4\u8f83\u200b\u4f20\u7edf\u200b. \u200b\u672c\u95e8\u200b\u8bfe\u7a0b\u200b\u4e3a\u200b\u6570\u5b66\u200b\u79d1\u5b66\u200b\u5b66\u9662\u200b\u5f00\u8bbe\u200b\uff0c\u200b\u6570\u5b66\u200b\u6c14\u606f\u200b\u6bd4\u8f83\u200b\u6d53\u539a\u200b.

        "},{"location":"Note/Data%20Modeling/Boosting/","title":"\u63d0\u5347\u200b\u65b9\u6cd5","text":"

        \u200b\u7ea6\u200b 453 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        "},{"location":"Note/Data%20Modeling/Boosting/#adaboost","title":"AdaBoost","text":"

        \u200b\u8f93\u5165\u200b\uff1a\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u4e00\u79cd\u200b\u5f31\u200b\u5b66\u4e60\u200b\u7b97\u6cd5\u200b \u200b\u8f93\u51fa\u200b\uff1a\u200b\u6700\u7ec8\u200b\u5206\u7c7b\u5668\u200b G(x)

        • \u200b\u521d\u59cb\u5316\u200b\u8bad\u7ec3\u200b\u6570\u636e\u200b\u7684\u200b\u6743\u503c\u200b\u5206\u5e03\u200b

          \\[ D_1 = (w_{11}\uff0c\\cdots\uff0cw_{1i}\uff0c\\cdots\uff0cw_{1N})\uff0cw_{1i} = \\frac{1}{N}\uff0ci=1\uff0c2\uff0c\\cdots\uff0cN \\]
        • \u200b\u8fd0\u884c\u200b\u5f31\u200b\u5b66\u4e60\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u5f97\u5230\u200b\u5f31\u200b\u5206\u7c7b\u5668\u200b\\(G_m(x)\\)

          \u200b\u8ba1\u7b97\u8bef\u5dee\u200b\u7387\u200b : \\(e_m = \\sum_{i=1}^{N} P(G_m(x_i) \\neq y_i) = \\sum_{i=1}^{N} w_{mi}I(G_m(x_i) \\neq y_i)\\)

          \u200b\u8be5\u200b\u5206\u7c7b\u5668\u200b\u7684\u200b\u6743\u91cd\u200b\u4e3a\u200b\uff1a\\(\\alpha_m = \\frac{1}{2} \\log \\frac{1-e_m}{e_m}\\)

          \u200b\u66f4\u65b0\u200b\u65b0\u4e00\u8f6e\u200b\u7684\u200b\u6743\u91cd\u200b\uff0c\u200b\u5176\u4e2d\u200b\u6bcf\u4e2a\u200b\u6837\u672c\u200b\u7684\u200b\u6743\u91cd\u200b\u4e3a\u200b\uff1a\\(w_{m+1\uff0ci} = \\frac{w_{mi}}{Z_m} \\exp(-\\alpha_m y_i G_m(x_i))\\) \uff08\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5982\u679c\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6743\u91cd\u200b\u4f1a\u200b\u51cf\u5c0f\u200b\uff0c\u200b\u5982\u679c\u200b\u5206\u7c7b\u200b\u9519\u8bef\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6743\u91cd\u200b\u4f1a\u200b\u589e\u5927\u200b\uff09

        • \u200b\u91cd\u590d\u200b\u7b2c\u4e8c\u6b65\u200b\uff0c\u200b\u76f4\u5230\u200b\u5f3a\u200b\u5206\u7c7b\u5668\u200b\\(G(x) = \\sum_{m=1}^{M} \\alpha_m G_m(x)\\)\u200b\u5df2\u7ecf\u200b\u6ee1\u8db3\u200b\u5206\u7c7b\u200b\u8981\u6c42\u200b

        "},{"location":"Note/Data%20Modeling/Boosting/#_2","title":"\u63d0\u5347\u200b\u6811","text":"

        \u200b\u63d0\u5347\u200b\u6811\u662f\u200b\u4ee5\u200b\u51b3\u7b56\u6811\u200b/\u200b\u56de\u5f52\u200b\u6811\u4e3a\u200b\u57fa\u200b\u5206\u7c7b\u5668\u200b\u7684\u200b\u5047\u53d1\u200b\u6a21\u578b\u200b.

        \u200b\u6211\u4eec\u200b\u5b9a\u4e49\u200b\u4e00\u4e2a\u200b\u524d\u884c\u200b\u5206\u6b65\u200b\u4e3a\u200b\uff1a

        \\[ f_m(x) = f_{m-1}(x) + T(x;\\Theta_m) \\]

        \u200b\u5176\u4e2d\u200b\u65b0\u6811\u200b\u7684\u200b\u53c2\u6570\u200b\u901a\u8fc7\u200b\u7ecf\u9a8c\u200b\u98ce\u9669\u200b\u6781\u5c0f\u200b\u5316\u200b\u8fdb\u884c\u200b\u66f4\u65b0\u200b\uff1a

        \\[ \\Theta_m = \\underset{\\Theta}{\\operatorname{argmin}} \\sum_{i=1}^{N} L(y_i\uff0cf_{m-1}(x_i) + T(x_i;\\Theta)) \\]

        \u200b\u5bf9\u4e8e\u200b\u56de\u5f52\u200b\u6811\u200b\uff0c\u200b\u6211\u4eec\u200b\u5199\u51fa\u200b\u5e73\u65b9\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff1a

        \\[ L = (y - f(x))^2 = (y - f_{m-1}(x) - T(x;\\Theta))^2 = [r - T(x;\\Theta)]^2 \\]

        \u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u65b0\u200b\u8bad\u7ec3\u200b\u4e00\u4e2a\u200b\u6811\u200b T \u200b\u6765\u200b\u62df\u5408\u200b\u9910\u53c9\u200b\\(r = y - f_{m-1}(x)\\)\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e86\u200b.

        "},{"location":"Note/Data%20Modeling/Boosting/#_3","title":"\u68af\u5ea6\u200b\u63d0\u5347","text":"

        \u200b\u5bf9\u4e8e\u200b\u4e00\u822c\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff08\u200b\u975e\u200b\u5e73\u65b9\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff09\uff0c\u200b\u4e0d\u662f\u200b\u90a3\u4e48\u200b\u5bb9\u6613\u200b\u627e\u5230\u200b\u6b8b\u5dee\u200b

        \u200b\u901a\u5e38\u200b\u6211\u4eec\u200b\u4f1a\u200b\u7528\u200b\\(\\frac{\\partial L(y_i\uff0cf(x_i))}{\\partial f(x_i)}\\)\u200b\u6765\u200b\u4ee3\u66ff\u200b\u6b8b\u5dee\u200b\uff0c\u200b\u8bad\u7ec3\u200b\u4e00\u68f5\u200b\u65b0\u200b\u7684\u200b\u6811\u6765\u200b\u62df\u5408\u200b\u6b8b\u5dee\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u65b0\u6811\u200b\u7684\u200b\u6bcf\u4e2a\u200b\u5206\u652f\u200b\uff0c\u200b\u7528\u200b\u7ecf\u9a8c\u200b\u98ce\u9669\u200b\u6700\u5c0f\u5316\u200b\u6765\u200b\u786e\u5b9a\u200b\u4ee3\u8868\u200b\u503c\u200b

        "},{"location":"Note/Data%20Modeling/Centering/","title":"\u805a\u7c7b\u200b\u65b9\u6cd5","text":"

        \u200b\u7ea6\u200b 1018 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        Warning

        \u200b\u8fd9\u7ae0\u200b\u6211\u200b\u770b\u200b\u7684\u200b\u660f\u660f\u200b\u7684\u200b\uff0c\u200b\u53ea\u7b97\u9884\u200b\u53d1\u5e03\u200b

        "},{"location":"Note/Data%20Modeling/Centering/#_2","title":"\u4e00\u4e9b\u200b\u5b9a\u4e49","text":"

        \u200b\u6837\u672c\u200b\u95f4\u8ddd\u200b

        \u200b\u95f5\u53ef\u200b\u592b\u65af\u57fa\u200b\u8ddd\u79bb\u200b\u9a6c\u6c0f\u200b\u8ddd\u79bb\u200b\u76f8\u5173\u7cfb\u6570\u200b\u5939\u89d2\u200b\u4f59\u5f26\u200b \\[ d_{ij} = \\left( \\sum_{k=1}^p \\left| x_{ik} - x_{jk} \\right|^r \\right)^{\\frac{1}{r}} \\]

        \u200b\u9996\u5148\u200b\u8ba1\u7b97\u200b\u534f\u65b9\u5dee\u200b\u77e9\u9635\u200b S

        \\[ S = \\frac{1}{n-1} \\sum_{i=1}^n (x_i - \\bar{x})(x_i - \\bar{x})^T \\]

        \u200b\u9996\u5148\u200b\u8ba1\u7b97\u200b\u534f\u65b9\u5dee\u200b\u77e9\u9635\u200b S

        \\[ r_{ij} = \\frac{S_{ij}}{\\sqrt{S_{ii}S_{jj}}} \\] \\[ \\cos \\theta_{ij} = \\frac{x_i^T x_j}{\\sqrt{x_i^T x_i x_j^T x_j}} \\]

        \u200b\u4e00\u4e9b\u200b\u77e9\u9635\u200b

        \u200b\u6837\u672c\u200b\u6563\u5e03\u200b\u77e9\u9635\u200b\u534f\u65b9\u5dee\u200b\u77e9\u9635\u200b \\[ S = \\sum_{i=1}^n (x_i - \\bar{x})(x_i - \\bar{x})^T \\] \\[ S = \\frac{1}{n-1} \\sum_{i=1}^n (x_i - \\bar{x})(x_i - \\bar{x})^T \\]

        \u200b\u7c7b\u200b\u76f8\u5173\u200b\u5b9a\u4e49\u200b

        \u200b\u7c7b\u7c7b\u200b\u76f4\u5f84\u200b\u7c7b\u200b\u4e2d\u5fc3\u200b\u7c7b\u95f4\u200b\u8ddd\u79bb\u200b

        \u200b\u4e00\u4e2a\u200b\u7c7b\u200b\u5c31\u662f\u200b\u6570\u636e\u200b\u96c6\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5b50\u96c6\u200b

        \u200b\u7c7b\u5185\u200b\u6700\u8fdc\u200b\u95f4\u8ddd\u200b

        \\[ D_G = \\underset{x_i\uff0cx_j \\in G}{\\operatorname{max}} d_{ij} \\]

        \u200b\u4e5f\u200b\u5c31\u662f\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u7684\u200b\u5e73\u5747\u503c\u200b

        \\[ \\bar{x} = \\frac{1}{n} \\sum_{x_i \\in G} x_i \\]

        \u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4e24\u7c7b\u200b\u4e2d\u6837\u200b\u7684\u200b\u6700\u200b\u77ed\u8ddd\u79bb\u200b\uff0c\u200b\u6700\u200b\u957f\u8ddd\u79bb\u200b\uff0c\u200b\u4e2d\u5fc3\u200b\u8ddd\u79bb\u200b\u6216\u8005\u200b\u5e73\u5747\u200b\u8ddd\u79bb\u200b

        "},{"location":"Note/Data%20Modeling/Centering/#_3","title":"\u805a\u5408\u200b\u805a\u7c7b","text":"

        \u200b\u805a\u5408\u200b\u805a\u7c7b\u200b\u4e09\u8981\u7d20\u200b\u4e3a\u200b\uff1a

        • \u200b\u6837\u672c\u200b\u95f4\u8ddd\u200b
        • \u200b\u5408\u5e76\u200b\u89c4\u5219\u200b
        • \u200b\u505c\u6b62\u200b\u6761\u4ef6\u200b

        \u200b\u7ed9\u5b9a\u200b\u4ee5\u4e0a\u200b\u4e09\u8981\u7d20\u200b\uff0c\u200b\u4e00\u822c\u200b\u7684\u200b\u805a\u5408\u200b\u805a\u7c7b\u200b\u7684\u200b\u7b97\u6cd5\u200b\u4e3a\u200b\uff1a

        • \u200b\u5f00\u59cb\u200b\uff1a\u200b\u6bcf\u4e2a\u200b\u6837\u672c\u200b\u4e3a\u200b\u4e00\u4e2a\u200b\u7c7b\u200b
        • \u200b\u91cd\u590d\u200b\uff1a\u200b\u4e00\u53e5\u200b\u5408\u5e76\u200b\u89c4\u5219\u200b\uff08\u200b\u4e00\u822c\u200b\u4e3a\u200b\u627e\u5230\u200b\u6700\u5c0f\u200b\u7c7b\u95f4\u200b\u95f4\u8ddd\u200b\uff09\uff0c\u200b\u5408\u5e76\u200b\u4e24\u7c7b\u200b
        • \u200b\u505c\u6b62\u200b\uff1a\u200b\u8fbe\u5230\u200b\u505c\u6b62\u200b\u6761\u4ef6\u200b\u5373\u200b\u8fd4\u56de\u200b\uff0c\u200b\u6bd4\u5982\u200b\u7c7b\u200b\u7684\u200b\u4e2a\u6570\u200b\u8fbe\u5230\u200b\u8981\u6c42\u200b

        \u200b\u8be5\u200b\u7b97\u6cd5\u200b\u7684\u200b\u590d\u6742\u5ea6\u200b\u4e3a\u200b\\(O(n^3m)\\)\uff0c\u200b\u5176\u4e2d\u200b m \u200b\u4e3a\u200b\u7ef4\u5ea6\u200b\u6570\u200b\uff0cn \u200b\u4e3a\u200b\u6837\u672c\u200b\u4e2a\u6570\u200b

        \u200b\u805a\u5408\u200b\u805a\u7c7b\u200b\u5c5e\u4e8e\u200b\u5c42\u6b21\u200b\u805a\u7c7b\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u4ece\u200b n \u200b\u7c7b\u200b-1 \u200b\u7c7b\u200b\u8fd9\u200b\u4e00\u7cfb\u5217\u200b\u7684\u200b\u5206\u7c7b\u200b\u7ed3\u679c\u200b

        \u200b\u6ce8\u610f\u200b\u5728\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\\([d_{ij}]\\)\u200b\u77e9\u9635\u200b\u6765\u200b\u52a0\u901f\u200b\u8fd0\u7b97\u200b

        "},{"location":"Note/Data%20Modeling/Centering/#k-means","title":"K-means","text":"

        \u200b\u65f6\u95f4\u200b\u590d\u6742\u5ea6\u200b\u4e3a\u200b\\(O(mnk)\\)

        k \u200b\u7684\u200b\u9009\u53d6\u200b\u5e94\u8be5\u200b\u5927\u5230\u200b\u7c7b\u200b\u76f4\u5f84\u200b\u4e0d\u518d\u200b\u51cf\u5c0f\u200b\u4e3a\u6b62\u200b

        "},{"location":"Note/Data%20Modeling/Centering/#_4","title":"\u8c31\u200b\u805a\u7c7b","text":"

        \u200b\u6570\u5b66\u200b\u4e0a\u200b\uff0c\u200b\u8c31\u200b\u5b57\u200b\u4e00\u822c\u200b\u8ddf\u200b\u7279\u5f81\u503c\u200b\u5206\u89e3\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6709\u5173\u200b

        \u200b\u6211\u4eec\u200b\u628a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i)\\}\\)\u200b\u4e2d\u200b\u7684\u200b\u6bcf\u200b\u4e00\u4e2a\u70b9\u200b\u90fd\u200b\u5bf9\u5e94\u200b\u5230\u200b\u4e00\u4e2a\u200b\u65e0\u5411\u200b\u5b8c\u5168\u200b\u56fe\u4e0a\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u4e24\u70b9\u200b\u4e4b\u95f4\u200b\u8fde\u8fb9\u200b\u7684\u200b\u6743\u91cd\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b\u5b83\u4eec\u200b\u7684\u200b\u76f8\u4f3c\u200b\u5ea6\u200b.

        \u200b\u76f8\u4f3c\u200b\u5ea6\u200b

        \\[ w_{ij} = e^{-\\frac{||x_i - x_j||^2}{2\\sigma^2}} \\]

        \u200b\u663e\u7136\u200b\uff0c\u200b\u8ddd\u79bb\u200b\u8d8a\u8fd1\u200b\uff0c\u200b\u76f8\u4f3c\u200b\u5ea6\u8d8a\u200b\u5927\u200b.

        \u200b\u5bf9\u4e8e\u200b\u90a3\u4e9b\u200b\u8db3\u591f\u200b\u9065\u8fdc\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4e0d\u518d\u200b\u76f8\u8fde\u200b\uff0c\u200b\u76f4\u63a5\u200b\u628a\u200b\u76f8\u4f3c\u200b\u5ea6\u7f6e\u200b 0.\u200b\u5982\u4f55\u200b\u786e\u5b9a\u200b\u8fd9\u4e9b\u200b\u8db3\u591f\u200b\u9065\u8fdc\u200b\u7684\u200b\u70b9\u200b\u5462\u200b - \u200b\u7528\u200b k \u200b\u8fd1\u90bb\u200b\u786e\u5b9a\u200b\u51e0\u4e2a\u200b\u90bb\u8fd1\u200b\u7684\u200b\u70b9\u200b - \u200b\u7528\u200b\u4e00\u4e2a\u200b\\(\\epsilon\\)\u200b\u534a\u5f84\u200b\u6765\u200b\u533a\u5206\u200b\u8fdc\u8fd1\u200b

        \u200b\u5b9a\u4e49\u200b\u4e00\u4e2a\u70b9\u200b\u7684\u200b\u5ea6\u200b\u4e3a\u200b\u5176\u200b\u6240\u6709\u200b\u8fb9\u200b\u7684\u200b\u6743\u91cd\u200b\u548c\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u4e0b\u9762\u200b\u4e09\u4e2a\u200b\u77e9\u9635\u200b

        \u200b\u77e9\u9635\u200b\u5b9a\u4e49\u200b

        \u200b\u5ea6\u200b\u77e9\u9635\u200b D\u200b\u6743\u91cd\u200b\u77e9\u9635\u200b W\u200b\u62c9\u666e\u62c9\u65af\u200b\u77e9\u9635\u200b L \\[ D_{ii} = \\sum_{j=1}^n w_{ij} \\] \\[ W = [w_{ij}] \\] \\[ L = D - W \\]

        \u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u53d1\u73b0\u200b\u5982\u4e0b\u200b\u6027\u8d28\u200b\uff1a

        • L \u200b\u7684\u200b\u884c\u200b\u548c\u200b\u4e3a\u200b 0
        • L \u200b\u6709\u200b\u4e00\u4e2a\u200b\u7279\u5f81\u5411\u91cf\u200b\u4e3a\u200b 0\uff0c\u200b\u8be5\u200b\u7279\u5f81\u503c\u200b\u6709\u200b\u4e00\u4e2a\u200b\u7279\u5f81\u5411\u91cf\u200b\u4e3a\u200b\u5168\u200b 1 (1)
        • L \u200b\u6709\u200b n \u200b\u4e2a\u200b\u975e\u8d1f\u200b\u7279\u5f81\u503c\u200b\uff0cn \u200b\u662f\u200b\u9876\u70b9\u200b\u6570\u200b
        • L \u200b\u529e\u200b\u6b63\u5b9a\u200b\uff0c\u200b\u4e14\u200b\\(f^TLf = \\frac{1}{2}\\sum_{i\uff0cj=1}^n w_{ij}(f_i - f_j)^2\\)
        • L \u200b\u96f6\u200b\u7279\u5f81\u503c\u200b\u7684\u200b\u91cd\u6570\u200b\u7b49\u4e8e\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u7684\u200b\u4e2a\u6570\u200b
        1. \u200b\u8fd9\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u884c\u548c\u4e3a\u200b 0 \u200b\u7684\u200b\u76f4\u63a5\u200b\u63a8\u8bba\u200b\uff0c\u200b\u6211\u4eec\u200b\u62ff\u5168\u200b 1 \u200b\u5411\u91cf\u200b\u5de6\u4e58\u200b L \u200b\u5c31\u200b\u5f97\u5230\u200b 0 \u200b\u5411\u91cf\u200b\u4e86\u200b

        \u200b\u6240\u4ee5\u200b\u5f53\u200b L \u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u96f6\u200b\u7279\u5f81\u503c\u200b\u53ea\u6709\u200b 1 \u200b\u91cd\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5168\u200b 1 \u200b\u5411\u91cf\u200b

        \u200b\u5f53\u200b L \u200b\u7684\u200b\u8fde\u901a\u200b\u56fe\u200b\u591a\u4e8e\u200b\u4e00\u4e2a\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u52a0\u5165\u200b L \u200b\u53ef\u4ee5\u200b\u5199\u6210\u200b\uff1a

        \\[ L = \\begin{bmatrix} L_1 & 0 & 0 \\\\ 0 & L_2 & 0 \\\\ 0 & 0 & \\dots \\\\ \\end{bmatrix} \\]

        \u200b\u90a3\u4e48\u200b\u5176\u200b\u5bf9\u5e94\u200b\u7684\u200b\u96f6\u200b\u7279\u5f81\u5411\u91cf\u200b\u4e3a\u200b\uff1a

        \\[ \\begin{bmatrix} 1 \\\\ 1 \\\\ \\vdots \\\\ 0 \\\\ 0 \\\\ \\vdots \\\\ 0 \\\\ 0 \\end{bmatrix} \\begin{bmatrix} 0 \\\\ 0 \\\\ \\vdots \\\\ 1 \\\\ 1 \\\\ \\vdots \\\\ 0 \\\\ 0 \\end{bmatrix}\\dots \\begin{bmatrix} 0 \\\\ 0 \\\\ \\vdots \\\\ 0 \\\\ 0 \\\\ \\vdots \\\\ 1 \\\\ 1 \\end{bmatrix} \\]

        \u200b\u57fa\u672c\u4e0a\u200b\u53ef\u4ee5\u200b\u8ba4\u4e3a\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u81ea\u5df1\u200b\u6784\u6210\u200b\u4e00\u4e2a\u200b\u5206\u5757\u200b\\(L_i\\)\uff0c\u200b\u8fd9\u4e2a\u200b\\(L_i\\)\u200b\u4e5f\u200b\u6709\u200b\u4e00\u4e2a\u200b\u81ea\u5df1\u200b\u5bf9\u5e94\u200b\u7684\u200b\u7279\u5f81\u200b\u96f6\u200b\u5411\u91cf\u200b

        \u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u5c06\u200b\u8fd9\u4e9b\u200b\u7279\u5f81\u5411\u91cf\u200b\u62fc\u63a5\u200b\u6210\u200b\u4e00\u4e2a\u200b\u77e9\u9635\u200b

        \\[ F = [f_1\uff0cf_2\uff0c\\dots\uff0cf_n] \\]

        \u200b\u7136\u540e\u200b\u6309\u7167\u200b\u884c\u5bf9\u200b\u5176\u200b\u8fdb\u884c\u200b\u805a\u7c7b\u200b\u5c31\u200b\u53ef\u4ee5\u200b\uff08\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6bcf\u4e2a\u200b\u8fde\u901a\u200b\u5b50\u56fe\u200b\u88ab\u200b\u805a\u6210\u200b\u4e00\u7c7b\u200b\uff09

        "},{"location":"Note/Data%20Modeling/Decision_Tree/","title":"\u51b3\u7b56\u6811","text":"

        \u200b\u7ea6\u200b 2599 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 9 \u200b\u5206\u949f\u200b

        \u200b\u4e0b\u56fe\u200b\u662f\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5b9e\u4f8b\u200b\uff0c\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u5185\u90e8\u200b\u8282\u70b9\u200b\u662f\u200b\u7279\u5f81\u200b\uff0c\u200b\u800c\u53f6\u200b\u8282\u70b9\u200b\u662f\u200b\u7c7b\u522b\u200b

        \u200b\u51b3\u7b56\u6811\u200b\u5b9e\u4f8b\u200b

        \u200b\u51b3\u7b56\u6811\u200b\u7b49\u4ef7\u200b\u4e8e\u200b\u4e00\u7cfb\u5217\u200b\u7684\u200b if-then \u200b\u89c4\u5219\u200b\uff0c\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u5177\u4f53\u200b\u7684\u200b\u4f8b\u5b50\u200b\u90fd\u200b\u88ab\u200b\u4e14\u200b\u4ec5\u200b\u88ab\u200b\u4e00\u6761\u200b\u8def\u5f84\u200b\u8986\u76d6\u200b.

        \u200b\u51b3\u7b56\u6811\u200b\u8fd8\u200b\u7b49\u4ef7\u200b\u4e8e\u200b\u4e00\u79cd\u200b\u6761\u4ef6\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u4e0d\u8fc7\u200b\u8fd9\u79cd\u200b\u6761\u4ef6\u200b\u6982\u7387\u5206\u5e03\u200b\u88ab\u200b\u5f3a\u5316\u200b\u6210\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7a7a\u95f4\u200b\u7684\u200b\u5212\u5206\u200b.

        \u200b\u51b3\u7b56\u6811\u200b\u7b97\u6cd5\u200b\u4e3b\u8981\u200b\u6709\u200b\u4ee5\u4e0b\u200b\u4e09\u4e2a\u200b\u8fc7\u7a0b\u200b\uff1a

        • \u200b\u7279\u5f81\u9009\u62e9\u200b
        • \u200b\u51b3\u7b56\u6811\u200b\u751f\u6210\u200b
        • \u200b\u51b3\u7b56\u6811\u200b\u526a\u679d\u200b
        "},{"location":"Note/Data%20Modeling/Decision_Tree/#_2","title":"\u7279\u5f81\u9009\u62e9","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#_3","title":"\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6cd5","text":"

        \u200b\u9996\u5148\u200b\u6211\u4eec\u200b\u5148\u200b\u5b9a\u4e49\u200b\u71b5\u200b\u548c\u200b\u6761\u4ef6\u200b\u71b5\u200b

        \u200b\u71b5\u200b

        \u200b\u7ed9\u5b9a\u200b\u4e00\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b X\uff1a

        \\[ P(X = x_i) = P_i \\]

        \u200b\u90a3\u4e48\u200b\u8be5\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u4e3a\u200b\uff1a

        \\[ H(X) = -\\sum_{i=1}^{n}P_i\\log P_i \\quad\\quad \\in [0\uff0c\\log n] \\]

        \u200b\u6ce8\u610f\u200b\uff0c\u200b\u5728\u200b\u8ba8\u8bba\u200b\u71b5\u200b\u662f\u200b\u9ed8\u8ba4\u200b\u5bf9\u6570\u200b\u7684\u200b\u5e95\u200b\u4e3a\u200b 2\uff0c\u200b\u6b64\u65f6\u200b\u71b5\u200b\u7684\u200b\u5355\u4f4d\u200b\u4e3a\u200b bit.

        \u200b\u5bf9\u200b\u71b5\u200b\u7684\u200b\u7406\u89e3\u200b

        \u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u6709\u200b\u4e00\u4e2a\u200b\u968f\u673a\u200b\u4e3a\u200b 0-7 \u200b\u7684\u200b\u7b49\u200b\u6982\u7387\u200b\u7684\u200b\u968f\u673a\u53d8\u91cf\u200b\uff0c\u200b\u4ece\u200b\u4e0a\u5f0f\u200b\u53ef\u4ee5\u200b\u5f88\u200b\u5bb9\u6613\u200b\u8ba1\u7b97\u200b\u51fa\u200b\u4ed6\u200b\u7684\u200b\u71b5\u200b\u662f\u200b 3bit\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u9700\u8981\u200b 3bit \u200b\u7684\u200b\u4fe1\u606f\u200b\u624d\u80fd\u200b\u786e\u5b9a\u200b\u8fd9\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u53d6\u503c\u200b. \u200b\u8fd9\u200b\u8ddf\u200b\u76f4\u89c2\u200b\u4e0a\u200b\u4e5f\u200b\u662f\u200b\u543b\u5408\u200b\u7684\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u81f3\u5c11\u200b 3bit \u200b\u7684\u200b\u7f16\u7801\u200b\u6765\u200b\u5206\u522b\u200b\u8fd9\u200b\u516b\u4e2a\u200b\u4fe1\u53f7\u200b\uff08000-111\uff09.

        \u200b\u4e0a\u5f0f\u200b\u4e2d\u200b\u7684\u200b log \u200b\u7684\u200b\u884c\u4e3a\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\uff0c\u200b\u5982\u679c\u200b\u4e00\u4e2a\u200b\u4fe1\u53f7\u200b\u6709\u200b \u215b \u200b\u7684\u200b\u6982\u7387\u200b\u51fa\u73b0\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u4e2a\u200b\u4fe1\u53f7\u200b\u9700\u8981\u200b\\(-\\log_2 1/8 = 3\\)bit \u200b\u7684\u200b\u7f16\u7801\u200b\u6765\u200b\u8868\u793a\u200b.\u200b\u5982\u679c\u200b\u4e00\u4e2a\u200b\u4fe1\u53f7\u200b\u6709\u200b \u00bc \u200b\u7684\u200b\u6982\u7387\u200b\u51fa\u73b0\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u4e2a\u200b\u4fe1\u53f7\u200b\u9700\u8981\u200b\\(-\\log_2 1/4 = 2\\)bit \u200b\u7684\u200b\u7f16\u7801\u200b\u6765\u200b\u8868\u793a\u200b.\u200b\u6700\u540e\u200b\u6211\u4eec\u200b\u5bf9\u200b\u8fd9\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u7684\u200b\u8ba1\u7b97\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u5bf9\u200b\u8fd9\u4e2a\u200b\u7f16\u7801\u200b\u957f\u5ea6\u200b\u6c42\u200b\u671f\u671b\u200b.

        \u200b\u800c\u200b\u71b5\u200b\u7684\u200b\u503c\u200b\u8d8a\u200b\u5927\u200b\uff0c\u200b\u6211\u4eec\u200b\u76ee\u524d\u200b\u7684\u200b\u4fe1\u606f\u200b\u5c31\u200b\u8d8a\u5c11\u200b.

        \u200b\u5047\u5982\u200b\u6211\u4eec\u200b\u8981\u200b\u9884\u6d4b\u200b\u7684\u200b\u4eba\u200b\u7684\u200b\u8fdb\u653b\u200b\u65b9\u5411\u200b\uff0c\u200b\u82e5\u200b\u654c\u4eba\u200b\u8fdb\u653b\u200b\u65b9\u5411\u200b\u8fd9\u4e00\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u4e3a\u200b 3bits\uff0c\u200b\u7b49\u6548\u200b\u654c\u4eba\u200b\u4ece\u200b\u516b\u4e2a\u200b\u65b9\u5411\u200b\u7b49\u200b\u53ef\u80fd\u200b\u8fdb\u653b\u200b.\u200b\u4f46\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u83b7\u53d6\u200b\u4e86\u200b\u67d0\u4e2a\u200b\u4fe1\u606f\u200b\u540e\u6b64\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u71b5\u200b\u53ea\u200b\u5269\u4e0b\u200b 1bit\uff0c\u200b\u7b49\u6548\u200b\u654c\u4eba\u200b\u4ece\u200b\u4e24\u4e2a\u200b\u65b9\u5411\u200b\u7b49\u200b\u53ef\u80fd\u200b\u8fdb\u653b\u200b\uff0c\u200b\u4fe1\u606f\u200b\u5c31\u200b\u5145\u8db3\u200b\u7684\u200b\u591a\u200b\u4e86\u200b.

        \u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6709\u200b\u4e00\u4e2a\u200b\u76f4\u89c2\u200b\u7684\u200b\u7406\u89e3\u200b\uff0c\u200b\u67d0\u4e2a\u200b\u4fe1\u606f\u200b\u6765\u200b\u4e4b\u540e\u200b\u6211\u200b\u7684\u200b\u71b5\u200b\u51cf\u5c11\u200b\u7684\u200b\u8d8a\u200b\u591a\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u4fe1\u606f\u200b\u7684\u200b\u4fe1\u606f\u91cf\u200b\u8d8a\u5927\u200b\uff0c\u200b\u8d8a\u200b\u6709\u7528\u200b.

        \u200b\u6761\u4ef6\u200b\u71b5\u200b

        \u200b\u7ed9\u5b9a\u200b\u4e00\u4e2a\u200b\u8054\u5408\u200b\u5206\u5e03\u200b\uff1a

        \\[ P(X = x_i\uff0cY = y_j) = P_{ij} \\]

        \u200b\u90a3\u4e48\u200b\u6761\u4ef6\u200b\u71b5\u200b

        \\[ H(Y|X) = -\\sum_{i=1}^{n} P_i H(Y|X = x_i) = -\\sum_{i=1}^{n} P_i \\sum_{j=1}^{m} P_{j|i} \\log P_{j|i} \\]

        \u200b\u4ece\u200b\u7b2c\u4e00\u4e2a\u200b\u7b49\u200b\u53f7\u200b\u53ef\u4ee5\u200b\u770b\u5f97\u51fa\u6765\u200b\u6761\u4ef6\u200b\u71b5\u200b\u5176\u5b9e\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5bf9\u4e8e\u200b\u4e0d\u540c\u200b\u7684\u200b X \u200b\u7684\u200b\u53d6\u503c\u200b\u6c42\u200b\u671f\u671b\u200b

        \u200b\u4e8e\u662f\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b9a\u4e49\u200b\u7279\u5f81\u200b A \u200b\u5bf9\u4e8e\u200b\u6570\u636e\u200b D \u200b\u7684\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\uff1a

        \\[ g(D\uff0cA) = H(D) - H(D|A) \\]

        \u200b\u8fd9\u200b\u4e5f\u200b\u88ab\u200b\u79f0\u4e3a\u200b\u7c7b\u200b\u4e0e\u200b\u7279\u5f81\u200b\u7684\u200b\u4e92\u4fe1\u606f\u200b\uff0c\u200b\u5b83\u200b\u8868\u793a\u200b\u5f97\u77e5\u200b\u7279\u5f81\u200b A \u200b\u7684\u200b\u4fe1\u606f\u200b\u800c\u200b\u4f7f\u5f97\u200b\u7c7b\u200b Y \u200b\u7684\u200b\u4fe1\u606f\u200b\u7684\u200b\u4e0d\u786e\u5b9a\u6027\u200b\u51cf\u5c11\u200b\u7684\u200b\u7a0b\u5ea6\u200b.

        "},{"location":"Note/Data%20Modeling/Decision_Tree/#_4","title":"\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6bd4","text":"

        \u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u5b58\u5728\u200b\u4e00\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u5c31\u662f\u200b\u5b83\u200b\u504f\u5411\u200b\u4e8e\u200b\u53ef\u200b\u53d6\u503c\u200b\u8f83\u200b\u591a\u200b\u7684\u200b\u7279\u5f81\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u53d6\u503c\u200b\u8f83\u200b\u591a\u200b\u7684\u200b\u7279\u5f81\u200b\u7684\u200b\u6761\u4ef6\u200b\u71b5\u200b\u8f83\u200b\u5c0f\u200b.\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u7b97\u6cd5\u200b\u540c\u6837\u200b\u8003\u8651\u200b\u90a3\u4e9b\u200b\u503c\u200b\u6bd4\u8f83\u200b\u5c11\u200b\u4f46\u662f\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u540c\u6837\u200b\u5f88\u200b\u4e0d\u9519\u200b\u7684\u200b\u7279\u5f81\u200b\u7684\u8bdd\u200b.

        \\[ g_R(D\uff0cA) = \\frac{g(D\uff0cA)}{H_A(D)} \\]

        \u200b\u5176\u4e2d\u200b\\(H_A(D) = -\\sum_{i=1}^{n} \\frac{|D_i|}{|D|} \\log \\frac{|D_i|}{|D|}\\)\u200b\u662f\u200b\u5173\u4e8e\u200b\u7279\u5f81\u200b A \u200b\u5bf9\u200b\u6570\u636e\u200b\u96c6\u200b D \u200b\u7684\u200b\u7ecf\u9a8c\u200b\u71b5\u200b\uff0c\\(|D_i|\\)\u200b\u662f\u200b\\(D\\)\u200b\u4e2d\u200b\u5728\u200b\u7279\u5f81\u200b A \u200b\u4e0a\u200b\u53d6\u503c\u200b\u4e3a\u200b\\(a_i\\)\u200b\u7684\u200b\u6837\u672c\u200b\u5b50\u96c6\u200b.A \u200b\u7684\u200b\u53ef\u200b\u53d6\u503c\u200b\u8d8a\u200b\u591a\u200b\uff0c\\(H_A(D)\\)\u200b\u7684\u200b\u503c\u200b\u8d8a\u200b\u5927\u200b.

        "},{"location":"Note/Data%20Modeling/Decision_Tree/#_5","title":"\u57fa\u5c3c\u200b\u6307\u6570","text":"

        \u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b\u662f\u200b\u53e6\u200b\u4e00\u79cd\u200b\u7279\u5f81\u9009\u62e9\u200b\u7684\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u5b83\u200b\u7684\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\uff1a

        \u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b

        \\[\\begin{aligned} &Gini(P) = 1 - \\sum_{k=1}^{K} P_k^2 \\\\ &Gini(D) = 1 - \\sum_{k=1}^{K} \\frac{|D_i|}{|D|}^2 \\\\ &Gini(D\uff0cA) = \\sum_{i=1}^{n} \\frac{|D_i|}{|D|} Gini(D_i) \\end{aligned}\\]

        "},{"location":"Note/Data%20Modeling/Decision_Tree/#_6","title":"\u51b3\u7b56\u6811\u200b\u751f\u6210","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#id3","title":"ID3 \u200b\u7b97\u6cd5","text":"

        ID3 \u200b\u7b97\u6cd5\u200b\u7684\u200b\u6838\u5fc3\u200b\u662f\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u5404\u4e2a\u200b\u8282\u70b9\u200b\u4e0a\u200b\u5e94\u7528\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u51c6\u5219\u200b\u9009\u62e9\u200b\u7279\u5f81\u200b\uff0c\u200b\u9012\u5f52\u200b\u7684\u200b\u6784\u5efa\u200b\u51b3\u7b56\u6811\u200b.

        • \u200b\u8f93\u5165\u200b\uff1a\u200b\u8bad\u7ec3\u200b\u96c6\u200b\\(D\\)\uff0c\u200b\u7279\u5f81\u200b\u96c6\u200b\\(A\\)\uff0c\u200b\u9608\u503c\u200b\\(\\epsilon\\)
        • \u200b\u8f93\u51fa\u200b\uff1a\u200b\u51b3\u7b56\u6811\u200b\\(T\\)
        • base case\uff1a\u200b\u82e5\u200b\\(D\\)\u200b\u4e2d\u200b\u6240\u6709\u200b\u5b9e\u4f8b\u200b\u5c5e\u4e8e\u200b\u540c\u200b\u4e00\u7c7b\u200b\\(C_k\\)\uff0c\u200b\u5219\u200b\\(T\\)\u200b\u4e3a\u5355\u200b\u8282\u70b9\u200b\u6811\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\u7c7b\u200b\\(C_k\\)\u200b\u4f5c\u4e3a\u200b\u8be5\u200b\u8282\u70b9\u200b\u7684\u200b\u7c7b\u200b\u6807\u8bb0\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\)\uff1b
        • base case: \u200b\u82e5\u200b\\(A = \\emptyset\\)\uff0c\u200b\u5219\u200b\\(T\\)\u200b\u4e3a\u5355\u200b\u8282\u70b9\u200b\u6811\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\\(D\\)\u200b\u4e2d\u200b\u5b9e\u4f8b\u200b\u6570\u200b\u6700\u5927\u200b\u7684\u200b\u7c7b\u200b\\(C_k\\)\u200b\u4f5c\u4e3a\u200b\u8be5\u200b\u8282\u70b9\u200b\u7684\u200b\u7c7b\u200b\u6807\u8bb0\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\).
        • base case: \u200b\u82e5\u200b\\(\\max g(D\uff0cA) < \\epsilon\\)\uff0c\u200b\u5219\u200b\\(T\\)\u200b\u4e3a\u5355\u200b\u8282\u70b9\u200b\u6811\u200b\uff0c\u200b\u5e76\u200b\u5c06\u200b\\(D\\)\u200b\u4e2d\u200b\u5b9e\u4f8b\u200b\u6570\u200b\u6700\u5927\u200b\u7684\u200b\u7c7b\u200b\\(C_k\\)\u200b\u4f5c\u4e3a\u200b\u8be5\u200b\u8282\u70b9\u200b\u7684\u200b\u7c7b\u200b\u6807\u8bb0\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\).
        • \u200b\u5426\u5219\u200b\uff0c\u200b\u8ba1\u7b97\u200b\\(A\\)\u200b\u4e2d\u200b\u5404\u4e2a\u200b\u7279\u5f81\u200b\u5bf9\u200b\\(D\\)\u200b\u7684\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\uff0c\u200b\u9009\u62e9\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6700\u5927\u200b\u7684\u200b\u7279\u5f81\u200b\\(A_g\\)\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u200b\u5206\u7c7b\u200b\uff0c\u200b\u7136\u540e\u200b\u5bf9\u200b\u5404\u4e2a\u200b\u5b50\u7c7b\u200b\u8c03\u7528\u200b\u672c\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u9012\u5f52\u200b\u7684\u200b\u6784\u5efa\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u8fd4\u56de\u200b\\(T\\).
        "},{"location":"Note/Data%20Modeling/Decision_Tree/#c45","title":"C4.5 \u200b\u7b97\u6cd5","text":"

        C4.5 \u200b\u7b97\u6cd5\u200b\u6839\u200b ID3 \u200b\u7b97\u6cd5\u200b\u5b8c\u5168\u200b\u4e00\u6837\u200b\uff0c\u200b\u53ea\u662f\u200b\u7528\u200b\u7684\u200b\u4e0d\u662f\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\uff0c\u200b\u800c\u662f\u200b\u4fe1\u606f\u200b\u589e\u76ca\u200b\u6bd4\u200b.

        "},{"location":"Note/Data%20Modeling/Decision_Tree/#_7","title":"\u51b3\u7b56\u6811\u200b\u526a\u679d","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#_8","title":"\u5229\u7528\u200b\u6b63\u5219\u200b\u5316\u200b\u51fd\u6570","text":"

        \u200b\u5bf9\u200b\u6574\u68f5\u6811\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6784\u9020\u200b\u4e00\u4e2a\u200b\u6b63\u5219\u200b\u5316\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff1a $$ C_{\\alpha}(T) = \\sum_{t \\in T} N_t H_t(T) + \\alpha |T| $$ \u200b\u5176\u4e2d\u200b T \u200b\u4e3a\u200b\u6240\u6709\u200b\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u96c6\u5408\u200b\uff0ct \u200b\u4e3a\u200b\u67d0\u4e2a\u200b\u53f6\u200b\u8282\u70b9\u200b\uff0c\\(N_t\\)\u200b\u4e3a\u53f6\u200b\u8282\u70b9\u200b t \u200b\u7684\u200b\u6837\u672c\u200b\u4e2a\u6570\u200b\uff0c\\(H_t(T)\\)\u200b\u4e3a\u53f6\u200b\u8282\u70b9\u200b t \u200b\u7684\u200b\u7ecf\u9a8c\u200b\u71b5\u200b\uff0c\\(|T|\\)\u200b\u4e3a\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u4e2a\u6570\u200b\uff0c\\(\\alpha\\)\u200b\u4e3a\u200b\u6b63\u5219\u200b\u5316\u200b\u53c2\u6570\u200b.

        \u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u5047\u8bbe\u200b t \u200b\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u6240\u6709\u200b\\(N_t\\)\u200b\u4e2a\u200b\u6837\u672c\u200b\u4e2d\u200b\uff0ck \u200b\u7c7b\u200b\u7684\u200b\u6837\u672c\u200b\u6709\u200b\\(N_{tk}\\)\u200b\u4e2a\u200b\uff0c\u200b\u90a3\u4e48\u200b\\(H_t(T) = -\\sum_{k=1}^{K} \\frac{N_{tk}}{N_t} \\log \\frac{N_{tk}}{N_t}\\).

        \u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5bf9\u200b\u8fd9\u4e2a\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u8fdb\u884c\u200b\u6700\u5c0f\u5316\u200b\uff0c\u200b\u5bb9\u6613\u200b\u770b\u51fa\u200b\uff0c\u200b\u5982\u679c\u200b\u53f6\u200b\u8282\u70b9\u200b\u5168\u90e8\u90fd\u662f\u200b\u5355\u200b\u4e00\u7c7b\u200b\uff0c\u200b\u90a3\u4e48\u200b\u7b2c\u4e00\u9879\u200b\u7684\u200b\u503c\u200b\u4e3a\u200b 0.\u200b\u8fd9\u65f6\u5019\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u5206\u7c7b\u200b\u6548\u679c\u200b\u597d\u200b\uff0c\u200b\u4f46\u662f\u200b\u53f6\u5b50\u200b\u8282\u70b9\u200b\u5bb9\u6613\u200b\u8fc7\u591a\u200b\uff0c\u200b\u7b2c\u4e8c\u9879\u200b\u5f88\u5927\u200b.\u200b\u4f46\u200b\u5982\u679c\u200b\u7b2c\u4e8c\u9879\u200b\u6781\u7aef\u200b\u7684\u200b\u4f18\u5316\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u53f6\u200b\u8282\u70b9\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6811\u662f\u200b\u5c0f\u200b\u4e86\u200b\uff0c\u200b\u4f46\u662f\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u90fd\u200b\u5728\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u5185\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8bf4\u200b\u662f\u200b\u6beb\u65e0\u200b\u5206\u7c7b\u200b\u6548\u679c\u200b.\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u6700\u5c0f\u5316\u200b\u8fd9\u4e2a\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c31\u662f\u200b\u8981\u200b\u5728\u200b\u4e8c\u8005\u4e4b\u95f4\u200b\u627e\u5230\u200b\u4e00\u4e2a\u200b\u5e73\u8861\u200b\uff0c\u200b\u6811\u200b\u65e2\u200b\u4e0d\u4f1a\u200b\u8fc7\u6df1\u200b\uff0c\u200b\u5206\u7c7b\u200b\u6548\u679c\u200b\u4e5f\u200b\u6709\u200b\u4fdd\u969c\u200b.

        \u200b\u7b97\u6cd5\u200b

        • \u200b\u8ba1\u7b97\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u7ecf\u9a8c\u200b\u71b5\u200b
        • \u200b\u4ece\u53f6\u200b\u8282\u70b9\u200b\u5f80\u200b\u4e0a\u200b\uff0c\u200b\u8bd5\u56fe\u200b\u628a\u200b\u67d0\u4e2a\u200b\u4e24\u4e2a\u200b\u53f6\u200b\u8282\u70b9\u200b\u56de\u7f29\u200b\u5230\u200b\u516c\u5171\u200b\u7236\u200b\u8282\u70b9\u200b\u4e0a\u200b\uff0c\u200b\u68c0\u9a8c\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u662f\u5426\u200b\u51cf\u5c0f\u200b.
        • \u200b\u76f4\u5230\u200b\u6ca1\u6709\u200b\u8282\u70b9\u200b\u53ef\u8bd5\u200b
        "},{"location":"Note/Data%20Modeling/Decision_Tree/#_9","title":"\u5b9e\u4f8b","text":""},{"location":"Note/Data%20Modeling/Decision_Tree/#cart","title":"CART \u200b\u56de\u5f52\u200b\u6811\u200b\u7b97\u6cd5","text":"

        \u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u6709\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c \u200b\u5176\u4e2d\u200b\\(x \\in \\mathbb{R}^n\\)\uff0c\\(y_i \\in \\mathbb{R}\\)\uff0c\u200b\u73b0\u5728\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u70b9\u200b\\(x\\)\uff0c\u200b\u6c42\u51fa\u200b\u5b83\u200b\u7684\u200b\u5bf9\u5e94\u200b y.

        CART \u200b\u56de\u5f52\u200b\u6811\u200b\u7b97\u6cd5\u200b\u4f1a\u200b\u628a\u200b\u7a7a\u95f4\u200b\u5212\u5206\u200b\u6210\u200b m \u200b\u5757\u200b\\(R_1\uff0cR_2...R_m\\)\uff0c\u200b\u6bcf\u4e2a\u200b\u5355\u5143\u200b\u4e0a\u200b\u51fd\u6570\u200b\u7684\u200b\u8f93\u51fa\u200b\u503c\u200b\u90fd\u200b\u662f\u200b\u56fa\u5b9a\u200b\u7684\u200b\uff1a

        \\[ f(x) = \\sum_{m=1}^{M} c_m I(x \\in R_m) \\]

        \u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u9009\u7528\u200b\u5e73\u65b9\u200b\u8bef\u5dee\u200b\uff0c\u200b\u5bb9\u6613\u200b\u8bc1\u660e\u200b\uff0c\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u533a\u57df\u200b\u4e0a\u200b\u6700\u4f73\u200b\u7684\u200b\u8f93\u51fa\u200b\u503c\u200b\u5c31\u662f\u200b\u8be5\u200b\u533a\u57df\u200b\u5185\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u7684\u200b\u5747\u503c\u200b.

        \\[ c_m = \\frac{1}{N_m} \\sum_{x_i \\in R_m} y_i \\]

        \u200b\u7b97\u6cd5\u200b\uff1a

        • \u200b\u8f93\u5165\u200b\uff1a\u200b\u8bad\u7ec3\u200b\u96c6\u200b\\(D\\)\uff0c\u200b\u9608\u503c\u200b\\(\\epsilon\\)
        • \u200b\u8f93\u51fa\u200b\uff1a\u200b\u56de\u5f52\u200b\u6811\u200b\\(f(x)\\)
        • \u200b\u5f00\u59cb\u200b\uff1a\u200b\u904d\u5386\u200b\u7ef4\u5ea6\u200b j \u200b\u4ee5\u53ca\u200b\u8be5\u200b\u7ef4\u5ea6\u200b\u4e0a\u200b\u53d8\u91cf\u200b\u5212\u5206\u200b\u70b9\u200b S\uff0c\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u5728\u200b\u8be5\u200b\u7ef4\u5ea6\u200b\u4e0a\u200b\u6309\u7167\u200b\u5212\u5206\u200b\u70b9\u200b\u5212\u5206\u200b\u6210\u200b\u4e24\u200b\u90e8\u5206\u200b\\(R_1(j\uff0cs)\uff0cR_2(j\uff0cs)\\)\uff0c\u200b\u8ba1\u7b97\u200b\u5bf9\u5e94\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u503c\u200b\\(min_{s} \\sum_{x_i \\in R_1(j\uff0cs)} (y_i - c_1)^2 + \\sum_{x_i \\in R_2(j\uff0cs)} (y_i - c_2)^2\\)
        • \u200b\u627e\u5230\u200b\u6700\u4f73\u200b\u7ef4\u5ea6\u200b\u548c\u200b\u6700\u4f73\u200b\u5212\u5206\u200b\u4e4b\u540e\u200b\uff0c\u200b\u628a\u200b\u6570\u636e\u200b\u96c6\u200b\u5212\u5206\u200b\u4e3a\u200b\\(R_1\uff0cR_2\\)\uff0c\u200b\u7136\u540e\u200b\u5bf9\u200b\\(R_1\uff0cR_2\\)\u200b\u5206\u522b\u200b\u9012\u5f52\u200b\u7684\u200b\u8c03\u7528\u200b\u672c\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u76f4\u5230\u200b\u6ee1\u8db3\u200b\u505c\u6b62\u200b\u6761\u4ef6\u200b\uff08\u200b\u533a\u57df\u200b\u5185\u90e8\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c0f\u4e8e\u200b\u9608\u503c\u200b\uff09
        "},{"location":"Note/Data%20Modeling/Decision_Tree/#cart_1","title":"CART \u200b\u5206\u7c7b\u200b\u6811\u200b\u7b97\u6cd5","text":"

        \u200b\u9996\u5148\u200b\u6211\u4eec\u200b\u5148\u200b\u7528\u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b\u751f\u6210\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u7136\u540e\u200b\u5bf9\u200b\u51b3\u7b56\u6811\u200b\u8fdb\u884c\u200b\u526a\u679d\u200b.\u200b\u6211\u4eec\u200b\u7740\u91cd\u200b\u4ecb\u7ecd\u200b\u8fd9\u91cc\u200b\u4f7f\u7528\u200b\u7684\u200b\u526a\u679d\u200b\u7b97\u6cd5\u200b

        \u200b\u6211\u4eec\u200b\u5148\u200b\u6784\u9020\u200b\u4e00\u4e2a\u200b\u4ee5\u200b\\(\\alpha\\)\u200b\u4e3a\u200b\u53c2\u6570\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff1a

        \\[ C_{\\alpha}(T) = C(T)+ \\alpha |T| \\quad\\quad \\alpha \\in [0\uff0c\\infty) \\]

        \u200b\u5176\u4e2d\u200b\\(C(T)\\)\u200b\u4e3a\u200b\u7528\u200b\u8be5\u200b\u51b3\u7b56\u6811\u200b\u5bf9\u200b\u8bad\u7ec3\u200b\u96c6\u200b\u8fdb\u884c\u200b\u9884\u6d4b\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff08\u200b\u7528\u200b\u57fa\u5c3c\u200b\u6307\u6570\u200b\uff09. \u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u627e\u5230\u200b\\(\\alpha\\)\u200b\u4ece\u200b 0 \u200b\u5230\u200b\u6b63\u200b\u65e0\u7a77\u7684\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u533a\u95f4\u200b\u5185\u200b\u7684\u200b\u526a\u679d\u200b\u540e\u200b\u7684\u200b\u6700\u4f18\u200b\u6811\u200b.

        \u200b\u5728\u200b\u6b64\u200b\u8bed\u5883\u200b\u4e0b\u200b\uff0c\u200b\u5bf9\u200b\u67d0\u4e2a\u200b\u8282\u70b9\u200b\u8fdb\u884c\u200b\u526a\u679d\u200b\u5c31\u662f\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\u7528\u200b\u4e00\u4e2a\u200b\u5355\u4e00\u200b\u8282\u70b9\u200b\u4ee3\u66ff\u200b\u4ee5\u200b\u5f53\u524d\u200b\u8282\u70b9\u200b\u4e3a\u6839\u200b\u7684\u200b\u5b50\u6811\u200b\uff0c\u200b\u8be5\u200b\u5355\u4e00\u200b\u8282\u70b9\u200b\u542b\u6709\u200b\u5b50\u6811\u4e2d\u200b\u6240\u6709\u200b\u7684\u200b\u6837\u672c\u200b.

        \u200b\u6211\u4eec\u200b\u5148\u200b\u6765\u770b\u200b\u6bd4\u8f83\u200b\u6781\u7aef\u200b\u7684\u200b\\(\\alpha\\)\uff0c\u200b\u770b\u200b\u4ed6\u200b\u5bf9\u200b\u51b3\u7b56\u6811\u200b\u7684\u200b\u5f71\u54cd\u200b\uff0c\u200b\u5f53\u200b\\(\\alpha\\)\u200b\u4e3a\u200b 0 \u200b\u65f6\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c31\u662f\u200b\\(C(T)\\)\uff0c\u200b\u6b64\u65f6\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u5c31\u662f\u200b\u6700\u5c0f\u5316\u200b\\(C(T)\\)\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b\u6700\u4f18\u200b\u7684\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u5c31\u7b97\u200b\u6211\u4eec\u200b\u5206\u51fa\u200b\u4e86\u200b\u975e\u5e38\u200b\u591a\u200b\u7684\u200b\u8282\u70b9\u200b\u4e5f\u200b\u65e0\u6240\u8c13\u200b.\u200b\u5f53\u200b\\(\\alpha\\)\u200b\u4e3a\u200b\u6b63\u200b\u65e0\u7a77\u200b\u65f6\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u5c31\u662f\u200b\\(|T|\\)\uff0c\u200b\u6b64\u65f6\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u5c31\u662f\u200b\u6700\u5c0f\u5316\u200b\\(|T|\\)\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u6700\u5c11\u200b\u7684\u200b\u6811\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6beb\u65e0\u7591\u95ee\u200b\u6240\u6709\u200b\u7684\u200b\u6837\u672c\u200b\u90fd\u200b\u653e\u5728\u200b\u6839\u200b\u8282\u70b9\u200b\u5185\u200b\u5c31\u662f\u200b\u6700\u4f18\u200b\u89e3\u200b.\u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c \\(\\alpha\\)\u200b\u8d8a\u5927\u200b\uff0c\u200b\u51b3\u7b56\u6811\u200b\u4f1a\u200b\u88ab\u200b\u526a\u200b\u7684\u200b\u8d8a\u200b\u5e72\u51c0\u200b.

        \u200b\u5728\u200b\u4ee5\u4e0a\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0c\u200b\u6211\u4eec\u200b\u53d1\u73b0\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5355\u72ec\u200b\u8ba8\u8bba\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u662f\u5426\u200b\u8981\u200b\u88ab\u200b\u526a\u679d\u200b\uff08\u200b\u56de\u5fc6\u200b\u4e00\u4e0b\u200b\u4ec0\u4e48\u200b\u53eb\u505a\u200b\u5bf9\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u8fdb\u884c\u200b\u526a\u679d\u200b\uff09\uff0c\u200b\u5047\u8bbe\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b\u6240\u200b\u4ee3\u8868\u200b\u7684\u200b\u5b50\u6811\u4e3a\u200b\\(T_t\\)\uff0c\u200b\u628a\u5b50\u200b\u6811\u5185\u200b\u7684\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u90fd\u200b\u6536\u5230\u200b\u8282\u70b9\u200b\u5185\u6240\u200b\u6784\u6210\u200b\u7684\u200b\u8282\u70b9\u200b\u4e3a\u200b t\uff0c\u200b\u90a3\u4e48\u200b\u8be5\u200b\u8282\u70b9\u200b\u4ece\u4e0d\u200b\u526a\u679d\u200b\u8f6c\u5411\u200b\u526a\u679d\u200b\u7684\u200b\u5173\u952e\u200b\u8282\u70b9\u200b\u5c31\u662f\u200b\u5f53\u4e0b\u200b\u5f0f\u200b\u6210\u7acb\u200b\u65f6\u200b\uff1a

        \\[ C(t) + \\alpha * 1 = C(T_t) + \\alpha * |T_t| \\]

        \u200b\u7b2c\u4e00\u9879\u200b\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\u653e\u7f6e\u200b\u5355\u4e00\u200b\u8282\u70b9\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u526a\u679d\u200b\u540e\u200b\u7684\u200b\u8282\u70b9\u200b\uff09\u200b\u5e26\u6765\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff0c\u200b\u7b2c\u4e8c\u9879\u200b\u5f0f\u200b\u6211\u4eec\u200b\u5728\u200b\u51b3\u7b56\u6811\u200b\u4e2d\u200b\u653e\u7f6e\u200b\u5b50\u6811\u200b\u5e26\u6765\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b.\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u8ba1\u7b97\u200b\u51fa\u200b\u8fd9\u4e2a\u200b\u4e34\u754c\u200b\u7684\u200b\\(\\alpha_{t}\\)\uff0c\u200b\u90a3\u4e48\u200b\u5982\u679c\u200b\\(\\alpha \\in (0\uff0c\\alpha_{t})\\)\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u4e0d\u200b\u526a\u679d\u200b\uff0c\u200b\u5982\u679c\u200b\\(\\alpha \\in [\\alpha_{t}\uff0c\\infty)\\)\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u526a\u679d\u200b.

        \u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5bf9\u200b\u51b3\u7b56\u6811\u200b\u5185\u200b\u7684\u200b\u6240\u6709\u200b\u8282\u70b9\u200b\u90fd\u200b\u8ba1\u7b97\u200b\u4e34\u754c\u200b\\(\\alpha\\)\uff0c\u200b\u6211\u4eec\u200b\u4ece\u200b\\(\\alpha = 0\\)\u200b\u5f00\u59cb\u200b\u9010\u6e10\u200b\u589e\u5927\u200b\uff0c\u200b\u6bcf\u6b21\u200b\u8fbe\u5230\u200b\u4e34\u754c\u70b9\u200b\u6211\u4eec\u200b\u5c31\u200b\u526a\u679d\u200b\uff0c\u200b\u76f4\u5230\u200b\u6240\u6709\u200b\u679d\u200b\u90fd\u200b\u88ab\u200b\u526a\u6389\u200b\uff0c\u200b\u76f4\u5230\u200b\u6574\u68f5\u6811\u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u8282\u70b9\u200b.

        \u200b\u5728\u200b\u4e0a\u8ff0\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u6211\u4eec\u200b\u5c31\u200b\u5f97\u5230\u200b\u4e86\u200b\u4e00\u7cfb\u5217\u200b\u7684\u200b\u4e0d\u540c\u200b\\(\\alpha\\)\u200b\u533a\u95f4\u200b\u4e0b\u200b\u7684\u200b\u51b3\u7b56\u6811\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b\u4ea4\u53c9\u200b\u9a8c\u8bc1\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6765\u200b\u9009\u62e9\u200b\u6700\u4f18\u200b\u7684\u200b\\(\\alpha\\).

        "},{"location":"Note/Data%20Modeling/KNN/","title":"K \u200b\u8fd1\u90bb","text":"

        \u200b\u7ea6\u200b 732 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        "},{"location":"Note/Data%20Modeling/KNN/#_1","title":"\u95ee\u9898\u200b\u53ca\u200b\u7b97\u6cd5\u200b\u63cf\u8ff0","text":"

        \u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c \u200b\u5176\u4e2d\u200b\\(x \\in \\mathbb{R}^n\\)\uff0c\\(y_i \\in \\{ c_1\uff0cc_2\uff0c....c_k\\}\\)\uff0c \u200b\u4e00\u5171\u200b\u6709\u200b K \u200b\u79cd\u7c7b\u200b\u522b\u200b\uff0c\u200b\u73b0\u5728\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u70b9\u200b\\(x\\)\uff0c\u200b\u6c42\u51fa\u200b\u5b83\u200b\u7684\u200b\u7c7b\u522b\u200b\\(y\\). \u200b\u7b97\u6cd5\u200b\u601d\u60f3\u200b\uff1a

        • \u200b\u627e\u51fa\u200b\u79bb\u200b x \u200b\u6700\u8fd1\u200b\u7684\u200b K \u200b\u4e2a\u200b\u90bb\u5c45\u200b\\(N_{k}(x)\\)
        • \u200b\u7531\u200b\u7740\u200b K \u200b\u4e2a\u200b\u90bb\u5c45\u200b\u8fdb\u884c\u200b\u591a\u6570\u200b\u8868\u51b3\u200b\uff1a
        \\[ y =\\underset{c_j}{\\operatorname{arg max}} \\sum_{N_{k}(x)} I(y = c_j) \\]

        \u200b\u5176\u4e2d\u200b\u7684\u200b\\(I(y = c_j)\\)\u200b\u662f\u200b\u6307\u793a\u200b\u51fd\u6570\u200b\uff0c\u200b\u5f53\u200b\\(y = c_j\\)\u200b\u65f6\u200b\uff0c\\(I(y = c_j) = 1\\)\uff0c\u200b\u5426\u5219\u200b\\(I(y = c_j) = 0\\).

        "},{"location":"Note/Data%20Modeling/KNN/#k_1","title":"K \u200b\u8fd1\u90bb\u200b\u7684\u200b\u4e09\u8981\u7d20","text":"

        \u200b\u6709\u200b\u4e86\u200b\u4e0a\u8ff0\u200b\u7684\u200b\u7b97\u6cd5\u200b\u6846\u67b6\u200b\u540e\u200b\uff0cK \u200b\u8fd1\u90bb\u200b\u7b97\u6cd5\u200b\u7531\u200b\u4e09\u4e2a\u200b\u8981\u7d20\u200b\u51b3\u5b9a\u200b\uff1a

        \u200b\u8ddd\u79bb\u200b\u5ea6\u91cf\u200bK \u200b\u503c\u200b\u9009\u62e9\u200b\u5206\u7c7b\u200b\u51b3\u7b56\u200b\u89c4\u5219\u200b

        \u200b\u4e00\u822c\u6765\u8bf4\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\\(L_p\\)\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u5373\u200b\uff1a

        \\[ L_p(x_i\uff0cx_j) = (\\sum_{l=1}^{n}|x_i^{(l)} - x_j^{(l)}|^p)^{\\frac{1}{p}} \\]

        \u200b\u5f53\u200b p \u200b\u7684\u200b\u53d6\u503c\u200b\u4e3a\u200b 2 \u200b\u65f6\u200b\uff0c\u200b\u5c31\u662f\u200b\u6b27\u6c0f\u200b\u8ddd\u79bb\u200b

        \u200b\u5f53\u200b K \u200b\u6bd4\u8f83\u200b\u5c0f\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u6a21\u578b\u200b\u6bd4\u8f83\u590d\u6742\u200b\uff0c\u200b\u5bb9\u6613\u200b\u8fc7\u200b\u62df\u5408\u200b\uff1b \u200b\u5f53\u200b K \u200b\u6bd4\u8f83\u200b\u5927\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u6a21\u578b\u200b\u6bd4\u8f83\u7b80\u5355\u200b\uff0c\u200b\u5bb9\u6613\u200b\u6b20\u200b\u62df\u5408\u200b. \u200b\u4e00\u822c\u6765\u8bf4\u200b K \u200b\u503c\u200b\u90fd\u200b\u4e0d\u4f1a\u200b\u9009\u200b\u7684\u200b\u592a\u5927\u200b.

        \u200b\u4e00\u822c\u200b\u4f7f\u7528\u200b\u591a\u6570\u200b\u8868\u51b3\u200b\u89c4\u5219\u200b\uff0c\u200b\u5728\u200b\u6b64\u200b\u60c5\u666f\u200b\u4e0b\u200b\u591a\u6570\u200b\u8868\u51b3\u200b\u89c4\u5219\u200b\u7b49\u6548\u4e8e\u200b\u7ecf\u9a8c\u200b\u98ce\u9669\u200b\u6700\u5c0f\u5316\u200b.

        "},{"location":"Note/Data%20Modeling/KNN/#kd-k","title":"\u7528\u200b kd \u200b\u6811\u200b\u5207\u5206\u200b\u7a7a\u95f4\u200b\u6c42\u89e3\u200b K \u200b\u8fd1\u90bb","text":""},{"location":"Note/Data%20Modeling/KNN/#kd","title":"kd \u200b\u6811\u200b\u7684\u200b\u6784\u9020","text":"
        • \u200b\u8f93\u5165\u200b\uff1a \\(\\{(x_i\uff0cy_i)\\}\\)
        • \u200b\u5f00\u59cb\u200b\uff1a \u200b\u53d6\u200b\u53d8\u91cf\u200b\\(x\\)\u200b\u7684\u200b\u7b2c\u4e00\u4e2a\u200b\u7ef4\u5ea6\u200b\\(x_i^(1)\\)\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u7eac\u5ea6\u200b\u7684\u200b\u4e2d\u4f4d\u6570\u200b\\(x_j^(1)\\)\uff0c\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u200b\u5206\u4e3a\u200b\u4e24\u200b\u90e8\u5206\u200b\uff0c\u200b\u5de6\u5b50\u200b\u6811\u200b\u548c\u200b\u53f3\u5b50\u200b\u6811\u200b\uff0c\u200b\u800c\u200b\\(x_j^(1)\\)\u200b\u5c31\u662f\u200b\u6839\u200b\u8282\u70b9\u200b\uff0c\u200b\u5de6\u53f3\u200b\u5b50\u200b\u8282\u70b9\u200b\u7684\u200b\u6df1\u5ea6\u200b\u4e3a\u200b 1
        • \u200b\u91cd\u590d\u200b\uff1a \u200b\u5bf9\u200b\u5de6\u53f3\u200b\u5b50\u6811\u200b\u7ee7\u7eed\u200b\u8fdb\u884c\u200b\u5206\u5272\u200b\uff0c\u200b\u5bf9\u4e8e\u200b j \u200b\u6df1\u5ea6\u200b\u7684\u200b\u5b50\u6811\u200b\uff0c\u200b\u53d6\u200b\\(x\\)\u200b\u7684\u200b\u7b2c\u200b\\(j+1\\)\u200b\u7ef4\u5ea6\u200b\\(x_i^(j+1)\\)\u200b\u8fdb\u884c\u200b\u5206\u5272\u200b
        • \u200b\u7ed3\u675f\u200b\uff1a \u200b\u76f4\u5230\u200b\u5de6\u53f3\u200b\u7a7a\u95f4\u200b\u90fd\u200b\u4e0d\u518d\u200b\u6709\u5b50\u200b\u8282\u70b9\u200b
        \u200b\u8bfe\u4ef6\u200b\u4e0a\u200b\u7684\u200b\u4f8b\u5b50"},{"location":"Note/Data%20Modeling/KNN/#kd-k_1","title":"\u641c\u7d22\u200b kd \u200b\u6811\u200b\u5bfb\u627e\u200b K \u200b\u8fd1\u90bb","text":"
        • \u200b\u8f93\u5165\u200b\uff1a kd \u200b\u6811\u200b\uff0c\u200b\u76ee\u6807\u200b\u70b9\u200b\\(x\\)\uff08\u200b\u6ce8\u610f\u200b\u6b64\u5904\u200b\u7684\u200b x \u200b\u4e00\u822c\u800c\u8a00\u200b\u4e0d\u662f\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u7684\u200b\u70b9\u200b\uff09
        • \u200b\u5f00\u59cb\u200b\uff1a \u200b\u4ece\u6839\u200b\u8282\u70b9\u200b\u5f00\u59cb\u200b\uff0c\u200b\u9012\u5f52\u200b\u7684\u200b\u5411\u4e0b\u200b\u8bbf\u95ee\u200b kd \u200b\u6811\u200b\uff0c\u200b\u5728\u200b\u6bcf\u4e2a\u200b\u8282\u70b9\u200b\u628a\u200b\u5bf9\u5e94\u200b\u7ef4\u5ea6\u200b\u8ddf\u200b\u8be5\u200b\u8282\u70b9\u200b\u6bd4\u8f83\u200b\u51b3\u5b9a\u200b\u5411\u200b\u5de6\u200b\u8fd8\u662f\u200b\u5411\u200b\u53f3\u200b\uff0c\u200b\u76f4\u5230\u200b\u53f6\u5b50\u200b\u8282\u70b9\u200b
        • \u200b\u91cd\u590d\u200b\uff1a \u200b\u7ef4\u62a4\u200b\u4e00\u4e2a\u200b\u5f53\u524d\u200b\u7684\u200b\u6700\u8fd1\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u5f53\u524d\u200b\u6700\u8fd1\u200b\u8ddd\u79bb\u200b\u7684\u200b\u521d\u59cb\u503c\u200b\u5c31\u662f\u200b\u8ddf\u200b\u5230\u8fbe\u200b\u53f6\u200b\u8282\u70b9\u200b\u7684\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u4ec5\u200b\u6709\u200b\u67d0\u4e2a\u200b\u5b50\u6811\u200b\u53ef\u80fd\u200b\u542b\u6709\u200b\u8ddd\u79bb\u200b\u5c0f\u4e8e\u200b\u6b64\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b\u7684\u200b\u7684\u200b\u8282\u70b9\u200b\u65f6\u200b\u6211\u4eec\u200b\u624d\u200b\u8bbf\u95ee\u200b\u4e4b\u200b
          • \u200b\u5411\u4e0a\u200b\u56de\u6eaf\u200b\uff0c\u200b\u9996\u5148\u200b\u5c1d\u8bd5\u200b\u7528\u7236\u200b\u8282\u70b9\u200b\u66f4\u65b0\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u7136\u540e\u200b\u8ba1\u7b97\u200b\u4e00\u4e0b\u200b\u5144\u5f1f\u200b\u7a7a\u95f4\u200b\u662f\u5426\u200b\u8ddf\u200b\u4ee5\u200b x \u200b\u4e3a\u200b\u4e2d\u5fc3\u200b\uff0c\u200b\u4ee5\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b\u4e3a\u200b\u534a\u5f84\u200b\u7684\u200b\u8d85\u7403\u200b\u76f8\u4ea4\u200b\uff0c\u200b\u5982\u679c\u200b\u76f8\u4ea4\u200b\uff0c\u200b\u5bf9\u200b\u5144\u5f1f\u200b\u5b50\u6811\u200b\u8fdb\u884c\u200b kd \u200b\u6811\u200b\u641c\u7d22\u200b
        • \u200b\u7ed3\u675f\u200b\uff1a \u200b\u56de\u6eaf\u5230\u200b\u6839\u200b\u7684\u200b\u65f6\u5019\u200b\u7ed3\u675f\u200b\uff0c\u200b\u5f53\u524d\u200b\u7ef4\u62a4\u200b\u7684\u200b\u6700\u8fd1\u200b\u70b9\u200b\u5c31\u662f\u200b\u5168\u5c40\u200b\u6700\u8fd1\u200b\u70b9\u200b

        \u200b\u4e00\u6b21\u200b\u641c\u7d22\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u6700\u8fd1\u200b\u90bb\u70b9\u200b\uff0c\u200b\u65f6\u95f4\u200b\u590d\u6742\u5ea6\u200b\u7528\u200b\u4e3a\u200b\\(O(logn)\\)\uff0c\u200b\u5982\u679c\u200b\u8981\u200b\u627e\u51fa\u200b K \u200b\u4e2a\u200b\u6700\u8fd1\u200b\u90bb\u70b9\u200b\uff0c\u200b\u65f6\u95f4\u200b\u590d\u6742\u5ea6\u200b\u4e3a\u200b\\(O(klogn)\\)

        PPT \u200b\u4e0a\u200b\u7684\u200b\u4f8b\u5b50\u200b

        "},{"location":"Note/Data%20Modeling/Logistic_Regression/","title":"\u903b\u8f91\u200b\u65af\u8c1b\u200b\u56de\u5f52","text":"

        \u200b\u7ea6\u200b 842 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        "},{"location":"Note/Data%20Modeling/Logistic_Regression/#_2","title":"\u903b\u8f91\u200b\u65af\u8c1b\u200b\u5206\u5e03","text":"

        \u200b\u9996\u5148\u200b\u76f4\u63a5\u200b\u7ed9\u51fa\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u5206\u5e03\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u968f\u673a\u53d8\u91cf\u200b\\(X\\)\u200b\u6ee1\u8db3\u200b\\(Logistic(\\mu\uff0c\\gamma)\\)\u200b\u5206\u5e03\u200b\u7684\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\uff1a

        \\[ F(x)=\\frac{1}{1+e^{-(x-\\mu)/\\gamma}} \\]

        \u200b\u5176\u4e2d\u200b\\(\\mu\\)\u200b\u4e3a\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\uff0c\\(\\gamma\\)\u200b\u4e3a\u200b\u5f62\u72b6\u200b\u53c2\u6570\u200b.\u200b\u8be5\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\u7684\u200b\u56fe\u50cf\u200b\u4e3a\u200b S \u200b\u578b\u200b\u66f2\u7ebf\u200b\uff0c\\(\\mu\\)\u200b\u4e3a\u200b\u51fd\u6570\u200b\u7684\u200b\u5bf9\u79f0\u4e2d\u5fc3\u200b\uff0c\\(\\gamma\\)\u200b\u63a7\u5236\u200b\u51fd\u6570\u200b\u7684\u200b\u9661\u5ced\u200b\u7a0b\u5ea6\u200b\uff0c\u200b\u503c\u8d8a\u200b\u5927\u200b\uff0c\u200b\u51fd\u6570\u200b\u8d8a\u200b\u9661\u5ced\u200b.

        "},{"location":"Note/Data%20Modeling/Logistic_Regression/#_3","title":"\u4e8c\u9879\u200b\u903b\u8f91\u200b\u65af\u8c1b\u200b\u56de\u5f52\u200b\u6a21\u578b","text":"

        \u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(D=\\{(x_1\uff0cy_1)\uff0c(x_2\uff0cy_2)\uff0c...\uff0c(x_m\uff0cy_m)\\}\\)\uff0c\u200b\u5176\u4e2d\u200b\\(x_i \\in \\mathbb{R}\\)\uff0c\\(y_i \\in \\{0\uff0c1\\}\\)\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u662f\u200b\u5b66\u4e60\u200b\u5230\u200b\u4e00\u4e2a\u200b\u7ebf\u6027\u200b\u6a21\u578b\u200b\u6765\u200b\u8fdb\u884c\u200b\u5206\u7c7b\u200b\uff0c\u200b\u5728\u200b\u611f\u77e5\u673a\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u7528\u200b\u4e00\u4e2a\u200b\u6307\u793a\u200b\u51fd\u6570\u200b\u6765\u200b\u5c06\u200b\u51fd\u6570\u200b\u503c\u200b\u7684\u200b\u7b26\u53f7\u200b\u6620\u5c04\u200b\u5230\u200b\u4e0d\u540c\u200b\u7684\u200b\u5206\u7c7b\u200b.

        \u200b\u5bf9\u4e8e\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u56de\u5f52\u200b\u6765\u8bf4\u200b\uff0c\u200b\u6211\u4eec\u200b\u60f3\u8981\u200b\u5f97\u5230\u200b\u7684\u200b\u662f\u200b\u67d0\u4e2a\u200b x \u200b\u4e0b\u200b\u5c5e\u4e8e\u200b 0\uff0c\u200b\u6216\u8005\u200b 1 \u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\u4e5f\u200b\u662f\u200b\u8fde\u7eed\u200b\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u8bd5\u56fe\u7528\u200b\u7ebf\u6027\u200b\u7684\u200b\u6a21\u578b\u200b\u53bb\u200b\u62df\u5408\u200b\uff0c\u200b\u6211\u4eec\u200b\u5148\u4f5c\u200b\u5982\u4e0b\u200b\u7684\u200b\u8f6c\u5316\u200b\uff1a

        • \u200b\u6982\u7387\u200b\u7684\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u662f\u200b\\(P \\in [0\uff0c1]\\)
        • \u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200b\u51e0\u7387\u200b\\(\\frac{p}{1-p}\\)\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u7684\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u5c31\u662f\u200b\\((0\uff0c\\infty)\\)
        • \u200b\u518d\u200b\u52a0\u200b\u4e00\u4e2a\u200b\u5bf9\u6570\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u5f97\u5230\u200b\u5bf9\u6570\u200b\u51e0\u7387\u200b\\(logit(p)=ln\\frac{p}{1-p}\\)\uff0c\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u662f\u200b\\((-\\infty\uff0c\\infty)\\)

        \u200b\u8fd9\u6837\u200b\u5bf9\u6570\u200b\u51e0\u7387\u200b\u7684\u200b\u53d6\u503c\u200b\u8303\u56f4\u200b\u5c31\u200b\u548c\u200b\u7ebf\u6027\u200b\u51fd\u6570\u200b\u7684\u200b\u4e00\u6837\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8bd5\u7740\u200b\u7528\u200b\u7ebf\u6027\u200b\u51fd\u6570\u200b\u53bb\u200b\u8fdb\u884c\u200b\u62df\u5408\u200b\uff08\u200b\u5982\u679c\u200b\u67d0\u4e2a\u200b\u5206\u5e03\u200b\u7684\u200b\u5bf9\u6570\u51fd\u6570\u200b\u76f8\u5173\u7cfb\u6570\u200b\u5f88\u200b\u9ad8\u200b\uff0c\u200b\u81ea\u7136\u200b\u53ef\u4ee5\u200b\u62df\u5408\u200b\u5230\u200b\u6bd4\u8f83\u200b\u597d\u200b\u7684\u200b\u6548\u679c\u200b\uff0c\u200b\u4f46\u200b\u5982\u679c\u200b\u4e00\u4e2a\u200b\u5206\u5e03\u200b\u7684\u200b\u5bf9\u6570\u200b\u51e0\u7387\u200b\u51e0\u4e4e\u200b\u4e0d\u6210\u200b\u7ebf\u6027\u200b\uff0c\u200b\u90a3\u4e48\u200b\u7ebf\u6027\u200b\u51fd\u6570\u200b\u7684\u200b\u62df\u5408\u200b\u6548\u679c\u200b\u5c31\u200b\u4f1a\u200b\u6bd4\u8f83\u200b\u5dee\u200b.\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u7528\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u56de\u5f52\u200b\u62df\u5408\u200b\u7684\u200b\u5206\u5e03\u200b\u6700\u597d\u200b\u6709\u200b\u7c7b\u4f3c\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u5206\u5e03\u200b\u7684\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\uff09.

        \u200b\u6211\u4eec\u200b\u4ee4\u200b

        \\[ \\ln(\\frac{P(Y=1|x)}{1-P(Y=1|x)}) = w\\cdot x + b \\]

        \u200b\u90a3\u4e48\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\uff1a

        \\[ P(Y=1|x)=\\frac{exp(w\\cdot x+b)}{1+exp(w\\cdot x+b)} \\] \\[ P(Y=0|x)=\\frac{1}{1+exp(w\\cdot x+b)} \\]

        \u200b\u8fd9\u200b\u5c31\u662f\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u56de\u5f52\u200b\uff0c\u200b\u73b0\u5728\u200b\u95ee\u9898\u200b\u662f\u200b\u6211\u4eec\u200b\u6709\u7684\u662f\u200b\u4e00\u5bf9\u200b\u6570\u636e\u200b\u70b9\u200b\u800c\u200b\u4e0d\u662f\u200b x \u200b\u548c\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u6211\u4eec\u200b\u8be5\u200b\u5982\u4f55\u200b\u8fdb\u884c\u200b\u62df\u5408\u200b\uff1f

        "},{"location":"Note/Data%20Modeling/Logistic_Regression/#_4","title":"\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1","text":"

        \u200b\u6211\u4eec\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\u7684\u200b\u4f3c\u7136\u200b\u51fd\u6570\u200b

        \\[ L(w\uff0cb)=\\prod_{i=1}^{m}P(Y=y_i|x_i)=\\prod_{i=1}^{m}(\\frac{exp(w\\cdot x_i+b)}{1+exp(w\\cdot x_i+b)})^{y_i}(\\frac{1}{1+exp(w\\cdot x_i+b)})^{1-y_i} \\]

        \u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\u6c42\u89e3\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u6781\u5927\u200b\u5316\u200b\u5bf9\u6570\u200b\u4f3c\u7136\u200b\u51fd\u6570\u200b\uff0c\u200b\u8fd9\u200b\u4e5f\u200b\u7b49\u6548\u4e8e\u200b\u6781\u5927\u200b\u5316\u4f3c\u7136\u200b\u51fd\u6570\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5bf9\u6570\u51fd\u6570\u200b\u662f\u200b\u5355\u8c03\u200b\u9012\u589e\u200b\u7684\u200b.

        \\[\\begin{aligned} &\\ln L(w\uff0cb) = \\sum_{i=1}^{m}y_i(w\\cdot x_i+b)-\\ln(1+exp(w\\cdot x_i+b)) \\\\ \\end{aligned}\\]

        \u200b\u90a3\u4e48\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u5c31\u200b\u8981\u6c42\u200b\u6211\u4eec\u200b\u627e\u5230\u200b\u4f7f\u200b\u5bf9\u6570\u200b\u4f3c\u7136\u200b\u51fd\u6570\u200b\u6700\u5927\u200b\u7684\u200b\u53c2\u6570\u200b

        \\[ \\underset{w\uff0cb}{\\operatorname{arg max}} \\ln L(w\uff0cb) \\]

        \u200b\u5728\u200b\u8fd9\u4e2a\u200b\u5177\u4f53\u200b\u7684\u200b\u6c42\u89e3\u200b\u8fc7\u7a0b\u200b\u9700\u8981\u200b\u7528\u200b\u68af\u5ea6\u200b\u4e0b\u964d\u200b\u6cd5\u200b\u6216\u8005\u200b\u725b\u987f\u200b\u6cd5\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u56e0\u4e3a\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u51fd\u6570\u200b\u662f\u200b\u51f8\u51fd\u6570\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u4fdd\u8bc1\u200b\u6c42\u89e3\u200b\u7684\u200b\u7ed3\u679c\u200b\u662f\u200b\u5168\u5c40\u200b\u6700\u4f18\u200b\u89e3\u200b.

        "},{"location":"Note/Data%20Modeling/Logistic_Regression/#_5","title":"\u591a\u9879\u200b\u903b\u8f91\u200b\u65af\u8c1b\u200b\u56de\u5f52\u200b\u6a21\u578b","text":"

        \u200b\u7c7b\u4f3c\u200b\u7684\u200b\uff0c\u200b\u591a\u9879\u200b\u903b\u8f91\u200b\u65af\u8482\u200b\u5206\u5e03\u200b\u7684\u200b\u5206\u5e03\u200b\u51fd\u6570\u200b\u5982\u4e0b\u200b\uff1a

        \\[\\begin{aligned} &P(Y=1|x)=\\frac{exp(w_1\\cdot x+b_1)}{1+\\sum_{i=1}^{k-1} e^{w_i \\cdot x + b_i}} \\\\ &P(Y=2|x)=\\frac{exp(w_2\\cdot x+b_2)}{1+\\sum_{i=1}^{k-1} e^{w_i \\cdot x + b_i}} \\\\ &... \\\\ &P(Y=k|x)=\\frac{1}{1+\\sum_{i=1}^{k-1} e^{w_i \\cdot x + b_i}} \\\\ \\end{aligned}\\]"},{"location":"Note/Data%20Modeling/Max_Entropy/","title":"\u6700\u5927\u200b\u71b5\u200b\u6a21\u578b","text":"

        \u200b\u7ea6\u200b 717 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

        \u200b\u601d\u60f3\u200b

        \u200b\u6709\u65f6\u5019\u200b\u6211\u4eec\u200b\u5df2\u6709\u200b\u7684\u200b\u6570\u636e\u200b\u5e76\u200b\u4e0d\u8db3\u4ee5\u200b\u6211\u4eec\u200b\u552f\u4e00\u200b\u786e\u5b9a\u200b\u4e00\u4e2a\u200b\u5206\u5e03\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u65f6\u5019\u200b\u5bf9\u4e8e\u200b\u6240\u6709\u200b\u5019\u9009\u200b\u7684\u200b\u5206\u5e03\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u8ba4\u4e3a\u200b\u71b5\u200b\u6700\u5927\u200b\u7684\u200b\u90a3\u4e2a\u200b\u5206\u5e03\u200b\u662f\u200b\u6700\u597d\u200b\u7684\u200b.\u200b\u6362\u8a00\u4e4b\u200b\uff0c\u200b\u5728\u200b\u6ee1\u8db3\u200b\u7ea6\u675f\u200b\u7684\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c3d\u53ef\u80fd\u200b\u91c7\u53d6\u200b\u7b49\u200b\u53ef\u80fd\u200b\u5206\u5e03\u200b.

        "},{"location":"Note/Data%20Modeling/Max_Entropy/#_2","title":"\u6a21\u578b\u200b\u63cf\u8ff0","text":"

        \u200b\u5bf9\u4e8e\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u7edf\u8ba1\u200b\u7ecf\u9a8c\u200b\u5206\u5e03\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u9891\u7387\u200b\uff09

        \\[\\begin{aligned} &\\tilde{P}(X=x\uff0cY=y) = \\frac{v(X = x\uff0c Y = y)}{N} \\\\ &\\tilde{P}(X=x) = \\frac{v(X = x)}{N} \\\\ \\end{aligned}\\]

        \u200b\u6211\u4eec\u200b\u5f15\u5165\u200b\u7279\u5f81\u51fd\u6570\u200b\\(f(x\uff0cy) \\ in {0\uff0c1}\\)\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7f6e\u9876\u200b\u67d0\u79cd\u200b\u6761\u4ef6\u200b\uff0c\u200b\u6ee1\u8db3\u6761\u4ef6\u200b\u7684\u200b\\((x\uff0cy)\\)\u200b\u5bf9\u5e94\u200b\u7684\u200b\u7279\u5f81\u51fd\u6570\u200b\u503c\u4e3a\u200b 1\uff0c\u200b\u5426\u5219\u200b\u4e3a\u200b 0.\u200b\u6bd4\u5982\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5b9a\u4e49\u200b\\(f(x\uff0cy) = 1\\)\u200b\u5f53\u4e14\u200b\u4ec5\u200b\u5f53\u200b\\(x\\)\u200b\u548c\u200b\\(y\\)\u200b\u76f8\u7b49\u200b\uff0c\u200b\u5426\u5219\u200b\u4e3a\u200b 0.\u200b\u5b9a\u4e49\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u7279\u5f81\u51fd\u6570\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b9a\u4e49\u200b\u5728\u200b\u7279\u5f81\u51fd\u6570\u200b\u4e0a\u200b\u7684\u200b\u671f\u671b\u200b\uff1a

        \\[ E_{\\tilde{P}}(f) = \\sum_{x\uff0cy}\\tilde{P}(x\uff0cy)f(x\uff0cy) \\]

        \u200b\u7b80\u5355\u200b\u6765\u8bf4\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u662f\u200b\u5bf9\u200b\u67d0\u4e9b\u200b\\((x\uff0cy)\\)\u200b\u4e0a\u200b\u7684\u200b\u9891\u6570\u200b\u6c42\u548c\u200b\uff0c\u200b\u5728\u200b\u4e0a\u4f8b\u200b\u4e2d\u200b\uff0c\u200b\u5c31\u662f\u200b\u5bf9\u200b xy \u200b\u76f8\u7b49\u200b\u7684\u200b\u90a3\u4e9b\u200b\u9879\u200b\u7684\u200b\u9891\u6570\u200b\u6c42\u548c\u200b

        \u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u5b66\u4e60\u200b\u5230\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u6761\u4ef6\u200b\u5206\u5e03\u200b\\(P(Y|X)\\)\uff0c\u200b\u90a3\u4e48\u200b\u7528\u200b\u6211\u4eec\u200b\u5b66\u5230\u200b\u7684\u200b\u6761\u4ef6\u200b\u5206\u5e03\u200b\u4e0e\u200b X \u200b\u7684\u200b\u7ecf\u9a8c\u200b\u5206\u5e03\u200b\u7b97\u200b\u51fa\u6765\u200b\u7684\u200b\u671f\u671b\u200b\u662f\u200b\uff1a

        \\[ E_{P}(f) = \\sum_{x\uff0cy}P(y|x)\\tilde{P}(x)f(x\uff0cy) \\]

        \u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u6211\u4eec\u200b\u5b66\u5230\u200b\u7684\u200b\u6761\u4ef6\u200b\u5462\u200b\u5206\u5e03\u200b\u5c3d\u53ef\u80fd\u200b\u7b26\u5408\u5b9e\u9645\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\\(P(y|x)\\tilde{P}(x)\\)\u200b\u5728\u200b\u7279\u5f81\u51fd\u6570\u200b\u7684\u200b\u610f\u4e49\u200b\u4e0a\u200b\u5c3d\u53ef\u80fd\u200b\u8d34\u8fd1\u200b\\(\\tilde{P}(x\uff0cy)\\)\uff0c\u200b\u4e5f\u5c31\u662f\u8bf4\u200b

        \\[ E_{P}(f) = E_{\\tilde{P}}(f) \\]

        \u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u7528\u200b\u4e0a\u9762\u200b\u4f8b\u5b50\u200b\u4e2d\u200b\u7684\u200b\u7279\u5f81\u51fd\u6570\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u7684\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u6211\u4eec\u200b\u5b66\u4e60\u200b\u5230\u200b\u7684\u200b\u5206\u5e03\u200b\u4e2d\u200b\uff0cxy \u200b\u76f8\u7b49\u200b\u7684\u200b\u9891\u6570\u200b\u7b49\u4e8e\u200b\u5b9e\u9645\u200b\u89c2\u6d4b\u200b\u5230\u200b\u7684\u200b xy \u200b\u76f8\u7b49\u200b\u7684\u200b\u9891\u6570\u200b.

        \u200b\u8fd9\u91cc\u200b\u5c31\u662f\u200b\u6211\u4eec\u200b\u5728\u200b\u601d\u60f3\u200b\u4e2d\u200b\u63d0\u5230\u200b\u7684\u200b\u7ea6\u675f\u200b\uff0c\u200b\u6ee1\u8db3\u200b\u8fd9\u6837\u200b\u7ea6\u675f\u200b\u7684\u200b\u6a21\u578b\u200b\u5e76\u200b\u4e0d\u200b\u552f\u4e00\u200b\uff0c\u200b\u6211\u4eec\u200b\u8ba1\u7b97\u200b\u5404\u4e2a\u200b\u6a21\u578b\u200b\u7684\u200b\u6761\u4ef6\u200b\u71b5\u200b\uff1a

        \\[ H(P) = -\\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)\\log P(y|x) \\]

        \u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u6761\u4ef6\u200b\u71b5\u200b\u6700\u5927\u200b\uff0c\u200b\u6761\u4ef6\u200b\u71b5\u200b\u8d8a\u200b\u5927\u200b\u7684\u200b\u5206\u5e03\u200b\u8d8a\u200b\u597d\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u4f18\u5316\u200b\u95ee\u9898\u200b.

        "},{"location":"Note/Data%20Modeling/Max_Entropy/#_3","title":"\u6a21\u578b\u200b\u6c42\u89e3","text":"

        \u200b\u5199\u51fa\u200b\u5f62\u5f0f\u5316\u200b\u8868\u8fbe\u5f0f\u200b\uff1a

        \\[\\begin{aligned} \\underset{P \\in C}{\\operatorname{min}} &-H(P) = \\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)\\log P(y|x) \\\\ s.t. &\\sum_{y}P(y|x) = 1 \\\\ & E_{P}(f_i) = E_{\\tilde{P}}(f_i) \\\\ \\end{aligned}\\]

        \u200b\u6ce8\u610f\u200b\u5230\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b\u591a\u4e2a\u200b\u7279\u5f81\u51fd\u6570\u200b\u6765\u200b\u8fdb\u884c\u200b\u7ea6\u675f\u200b

        \u200b\u4e3a\u200b\u4e86\u89e3\u200b\u89c9\u200b\u4f18\u5316\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u7528\u200b\u4ee5\u4e0b\u200b\u4e09\u6b65\u200b

        • \u200b\u5199\u51fa\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\uff0c\u200b\u62c9\u683c\u6717\u200b\u65e5\u200b\u51fd\u6570\u200b\\(L(P\uff0cw)\\)\u200b\u4e3a\u200b\uff1a $$ \\undreset{P \\in C}{\\operatorname{min}} \\underset{w}{\\operatorname{max}} L(P\uff0cw) = \\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)\\log P(y|x) + \\sum_{i=1}^{n}w_i(\\sum_{x\uff0cy}\\tilde{P}(x)P(y|x)f_i(x\uff0cy) - E_{\\tilde{P}}(f_i)) $$
        • \u200b\u6781\u5c0f\u200b\u5316\u200b\uff1a\u200b\u5728\u200b\\(L(P\uff0cw)\\)\u200b\u4e2d\u200b\u5bf9\u200b P \u200b\u6c42\u200b\u504f\u5bfc\u4ee5\u200b\u8fdb\u884c\u200b\u6700\u5c0f\u5316\u200b
        • \u200b\u6781\u5927\u200b\u5316\u200b\uff1a\u200b\u540c\u6837\u200b\u6c42\u5bfc\u200b\u6216\u8005\u200b\u4f7f\u7528\u200b\u5176\u4ed6\u200b\u6700\u4f18\u5316\u200b\u7b97\u6cd5\u200b\uff08\u200b\u68af\u5ea6\u200b\u4e0b\u964d\u200b\u6cd5\u200b\uff0c\u200b\u725b\u987f\u200b\u6cd5\u200b\uff0c\u200b\u62df\u200b\u725b\u987f\u200b\u6cd5\u200b\uff09
        "},{"location":"Note/Data%20Modeling/Naive_Bayesian/","title":"\u6734\u7d20\u200b\u8d1d\u53f6\u65af\u200b\u7b97\u6cd5","text":"

        \u200b\u7ea6\u200b 919 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        "},{"location":"Note/Data%20Modeling/Naive_Bayesian/#_2","title":"\u95ee\u9898\u200b\u53ca\u200b\u7b97\u6cd5\u200b\u63cf\u8ff0","text":"

        \u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c \u200b\u5176\u4e2d\u200b \\(x \\in \\mathbb{R}^n\\)\uff0c\\(y_i \\in \\{ c_1\uff0cc_2\uff0c....c_k\\}\\)\uff0c \u200b\u4e00\u5171\u200b\u6709\u200b K \u200b\u79cd\u7c7b\u200b\u522b\u200b\uff0c\u200b\u73b0\u5728\u200b\u7ed9\u51fa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u6570\u636e\u200b\u70b9\u200b\\(x\\)\uff0c\u200b\u6c42\u51fa\u200b\u5b83\u200b\u7684\u200b\u7c7b\u522b\u200b\\(y\\).

        \u200b\u7b97\u6cd5\u200b\u5e0c\u671b\u200b\u5b66\u4e60\u200b\u4e00\u4e2a\u200b\u8054\u5408\u200b\u6982\u7387\u5206\u5e03\u200b\\(P(X\uff0cY)\\)\uff0c\u200b\u800c\u200b\u6211\u4eec\u200b\u73b0\u5728\u200b\u5df2\u7ecf\u200b\u6709\u7684\u662f\u200b\u5148\u9a8c\u200b\u5206\u5e03\u200b\\(P(Y)\\)\u200b\u548c\u200b\u6761\u4ef6\u200b\u6982\u7387\u5206\u5e03\u200b\\(P(X|Y)\\).

        \u200b\u4f46\u662f\u200b\u540e\u8005\u200b\u7684\u200b\u7a7a\u95f4\u200b\u592a\u200b\u5927\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6211\u4eec\u200b\u5f15\u5165\u200b\u72ec\u7acb\u6027\u200b\u5047\u8bbe\u200b\uff0c\u200b\u5047\u8bbe\u200b x \u200b\u7684\u200b\u6bcf\u4e2a\u200b\u7ef4\u5ea6\u200b\u90fd\u200b\u662f\u200b\u72ec\u7acb\u200b\u7684\u200b\uff08\u200b\u4e8b\u5b9e\u4e0a\u200b\u5927\u200b\u6982\u7387\u200b\u5e76\u200b\u4e0d\u662f\u200b\uff0c\u200b\u8fd9\u662f\u200b\u6781\u5927\u200b\u7b80\u5316\u200b\u8ba1\u7b97\u200b\u91cf\u200b\u7684\u200b\u4e00\u6b65\u200b\uff0c\u200b\u4e5f\u200b\u662f\u200b\u5f15\u5165\u200b\u8bef\u5dee\u200b\u7684\u200b\u4e00\u6b65\u200b\uff0c\u200b\u4e5f\u200b\u662f\u200b\u8be5\u200b\u7b97\u6cd5\u200b\u7684\u200b\u201c\u200b\u6734\u7d20\u200b\u201d\u200b\u4e4b\u200b\u5904\u200b\uff09:

        \\[ P(X = x| Y = c_k) = P(X^{(1)} = x^{(1)}\uff0c X^{(2)} = x^{(2)} ... X^{(n)} = x^{(n)} | Y = c_k)= \\prod_{i=1}^{n}P(X^{(i)} = x^{(i)}| Y = c_k) \\]

        \u200b\u4e0a\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u662f\u200b\u5728\u200b\u7c7b\u522b\u200b\u662f\u200b\\(c_k\\)\u200b\u7684\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0cX \u200b\u8fd9\u4e00\u200b n \u200b\u7ef4\u200b\u968f\u673a\u53d8\u91cf\u200b\u7684\u200b\u53d6\u503c\u200b\u4e3a\u200b x \u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u5c31\u662f\u200b\\(c_k\\)\u200b\u8fd9\u200b\u4e00\u7c7b\u200b\u4e2d\u200b\u6bcf\u4e2a\u200b\u7ef4\u5ea6\u200b\u7684\u200b\u53d6\u503c\u200b\u4e3a\u200b\\(x^{(i)}\\)\u200b\u7684\u200b\u6982\u7387\u200b\u7684\u200b\u4e58\u79ef\u200b.

        \u200b\u5b66\u4e60\u200b\u5230\u200b\u4e86\u200b\u8054\u5408\u200b\u6982\u7387\u5206\u5e03\u200b\u4e4b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b\u5206\u7c7b\u200b\u7684\u200b\u65f6\u5019\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\u6700\u5927\u200b\u540e\u9a8c\u200b\u6982\u7387\u200b\uff1a

        \\[ y = \\underset{c_k}{\\operatorname{arg max}} P(Y = c_k) \\prod_{i=1}^{n}P(X^{(i)} = x^{(i)}| Y = c_k) \\]

        \u200b\u4e0a\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u5047\u8bbe\u200b x \u200b\u7684\u200b\u7c7b\u522b\u200b\u662f\u200b\\(c_k\\)\uff0c\u200b\u8ba1\u7b97\u200b\u6bcf\u4e2a\u200b\\(c_k\\)\u200b\u8fd9\u200b\u4e00\u7c7b\u200b\u4e2d\u200b\u51fa\u73b0\u200b x \u200b\u7684\u200b\u6982\u7387\u200b\uff0c\u200b\u627e\u51fa\u200b\u6982\u7387\u200b\u6700\u5927\u200b\u7684\u200b\u90a3\u200b\u4e00\u7c7b\u200b\u4f5c\u4e3a\u200b x \u200b\u7684\u200b\u5206\u7c7b\u200b.

        PPT \u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5206\u7c7b\u200b\u5b9e\u4f8b\u200b

        "},{"location":"Note/Data%20Modeling/Naive_Bayesian/#_3","title":"\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1","text":"

        \u200b\u5229\u7528\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u4e0b\u9762\u200b\u8fd9\u200b\u4e24\u4e2a\u200b\u6982\u7387\u200b\u7684\u200b\u4f30\u8ba1\u200b\u516c\u5f0f\u200b\uff1a

        \\[\\begin{aligned} &P(Y = c_k) = \\frac{\\sum_{i=1}^{N}I(y_i = c_k)}{N} \\\\ &P(X^{(i)} = a_{jl}| Y = c_k) = \\frac{\\sum_{i=1}^{N}I(x_i^{(i)} = a_{jl}\uff0cy_i = c_k)}{\\sum_{i=1}^{N}I(y_i = c_k)} \\end{aligned}\\]

        \u200b\u6307\u793a\u200b\u51fd\u6570\u200b\u7684\u200b\u5b9a\u4e49\u200b\u5728\u200b\u524d\u9762\u200b\u5df2\u7ecf\u200b\u6709\u200b\u4ecb\u7ecd\u200b\uff0c\u200b\u540e\u7eed\u200b\u90fd\u200b\u9ed8\u8ba4\u200b\u4f7f\u7528\u200b\u8fd9\u4e00\u200b\u5b9a\u4e49\u200b.

        \u200b\u7b2c\u4e00\u200b\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u662f\u200b\u4e0d\u540c\u200b\u7c7b\u522b\u200b\u7684\u200b\u51fa\u73b0\u200b\u6982\u7387\u200b\u7684\u200b\u5148\u9a8c\u6982\u7387\u200b\u76f4\u63a5\u200b\u4e3a\u200b\u6837\u672c\u200b\u4e2d\u8be5\u200b\u7c7b\u522b\u200b\u51fa\u73b0\u200b\u7684\u200b\u9891\u7387\u200b.

        \u200b\u7b2c\u4e8c\u200b\u5f0f\u200b\u7684\u200b\u610f\u601d\u200b\u662f\u200b\u5728\u200b\u7c7b\u522b\u200b\u4e3a\u200b\\(c_k\\)\u200b\u7684\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0c\u200b\u7b2c\u200b i \u200b\u7ef4\u200b\u53d6\u503c\u200b\u4e3a\u200b\\(a_{jl}\\)\u200b\u7684\u200b\u6982\u7387\u200b\u4e3a\u200b\u6837\u672c\u200b\u4e2d\u200b\\(c_k\\)\u200b\u7c7b\u4e2d\u200b\u8be5\u200b\u5206\u91cf\u200b\u4e3a\u200b\\(a_{jl}\\)\u200b\u7684\u200b\u6837\u672c\u200b\u5360\u200b\\(c_k\\)\u200b\u7c7b\u200b\u6837\u672c\u200b\u603b\u6570\u200b\u7684\u200b\u6bd4\u91cd\u200b.

        \u200b\u601d\u60f3\u200b

        \u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u5728\u200b\u6b64\u5904\u200b\u7684\u200b\u7ed3\u679c\u200b\u57fa\u672c\u4e0a\u200b\u53ef\u4ee5\u200b\u7b80\u5355\u200b\u5f52\u7ed3\u4e3a\u200b\uff1a\u200b\u7528\u200b\u9891\u7387\u200b\u4f30\u8ba1\u200b\u6982\u7387\u200b

        "},{"location":"Note/Data%20Modeling/Naive_Bayesian/#_4","title":"\u8d1d\u53f6\u65af\u200b\u4f30\u8ba1","text":"

        \u200b\u4e0a\u8ff0\u200b\u7684\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u5728\u200b\u4e00\u4e2a\u200b\u60c5\u51b5\u200b\u4e0b\u200b\u53ef\u80fd\u200b\u9047\u5230\u200b\u95ee\u9898\u200b\uff0c\u200b\u5982\u679c\u200b\u67d0\u4e2a\u200b\u6837\u672c\u200b\u6ca1\u6709\u200b\u51fa\u73b0\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5bf9\u200b\u90a3\u4e2a\u200b\u7c7b\u522b\u200b\u4f30\u8ba1\u200b\u7684\u200b\u4fe1\u606f\u200b\u5b8c\u5168\u200b\u4e22\u5931\u200b.

        \u200b\u4e3a\u200b\u89e3\u51b3\u200b\u8fd9\u4e00\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u624b\u52a8\u200b\u4e3a\u200b\u6bcf\u200b\u4e00\u200b\u7c7b\u522b\u200b\u6dfb\u52a0\u200b\u9ed8\u8ba4\u200b n \u200b\u6b21\u200b\u7684\u200b\u51fa\u73b0\u200b\u9891\u6570\u200b\uff1a

        \\[\\begin{aligned} &P(Y = c_k) = \\frac{\\sum_{i=1}^{N}I(y_i = c_k) + \\lambda}{N + K\\lambda} \\\\ &P(X^{(i)} = a_{jl}| Y = c_k) = \\frac{\\sum_{i=1}^{N}I(x_i^{(i)} = a_{jl}\uff0cy_i = c_k) + \\lambda}{\\sum_{i=1}^{N}I(y_i = c_k) + S_i\\lambda} \\end{aligned}\\]

        \u200b\u5176\u4e2d\u200b\\(S_i\\)\u200b\u662f\u200b\u7b2c\u200b i \u200b\u7ef4\u200b\u7684\u200b\u53d6\u503c\u200b\u4e2a\u6570\u200b\uff0c\\(\\lambda\\)\u200b\u662f\u200b\u4e00\u4e2a\u200b\u8d85\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e00\u822c\u200b\u53d6\u200b 1.

        \u200b\u5728\u200b\u7b2c\u4e00\u200b\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7c7b\u522b\u200b\u90fd\u200b\u52a0\u5165\u200b\u4e86\u200b\\(\\lambda\\)\u200b\u7684\u200b\u9891\u7387\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5206\u5b50\u200b\u5355\u72ec\u200b\u67d0\u7c7b\u200b\u7684\u200b\u9891\u6570\u200b\u52a0\u4e0a\u200b\u4e86\u200b\\(\\lambda\\)\uff0c\u200b\u5206\u6bcd\u200b\u52a0\u4e0a\u200b\u4e86\u200b\u603b\u200b\u7c7b\u522b\u200b\u6570\u200b K \u200b\u4e58\u200b\u4e0a\u200b\\(\\lambda\\).

        \u200b\u5728\u200b\u7b2c\u4e8c\u200b\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7c7b\u522b\u200b\u7684\u200b\u6bcf\u4e2a\u200b\u7ef4\u5ea6\u200b\u90fd\u200b\u52a0\u5165\u200b\u4e86\u200b\\(\\lambda\\)\u200b\u7684\u200b\u9891\u7387\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5206\u5b50\u200b\u5355\u72ec\u200b\u67d0\u7c7b\u200b\u7684\u200b\u9891\u6570\u200b\u52a0\u4e0a\u200b\u4e86\u200b\\(\\lambda\\)\uff0c\u200b\u5206\u6bcd\u200b\u52a0\u4e0a\u200b\u4e86\u200b\u8be5\u200b\u7ef4\u5ea6\u200b\u53ef\u80fd\u200b\u7684\u200b\u53d6\u503c\u200b\u4e2a\u200b\u6570\u6570\u200b\u4e58\u200b\u4e0a\u200b\\(\\lambda\\)\uff08\u200b\u56e0\u4e3a\u200b\u6709\u200b\u591a\u5c11\u200b\u4e2a\u200b\u53d6\u503c\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u4eba\u4e3a\u200b\u7684\u200b\u52a0\u4e0a\u200b\u4e86\u200b\u591a\u5c11\u200b\u4e2a\u200b\\(\\lambda\\)\uff09.

        \u200b\u53ef\u4ee5\u200b\u8ba4\u4e3a\u200b\u8d1d\u53f6\u65af\u200b\u4f30\u8ba1\u200b\u662f\u200b\u5bf9\u200b\u6781\u5927\u200b\u4f3c\u7136\u200b\u4f30\u8ba1\u200b\u8fdb\u884c\u200b\u4e86\u200b\u5e73\u6ed1\u200b.

        "},{"location":"Note/Data%20Modeling/Perceptron/","title":"\u611f\u77e5\u673a","text":"

        \u200b\u7ea6\u200b 846 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        "},{"location":"Note/Data%20Modeling/Perceptron/#_2","title":"\u539f\u59cb\u200b\u5f62\u5f0f","text":"

        \u200b\u611f\u77e5\u673a\u200b\u7684\u200b\u7ed3\u6784\u200b\u5982\u4e0b\u200b\u56fe\u200b\u6240\u793a\u200b\uff0c\u200b\u88ab\u200b\u89c6\u4e3a\u200b\u662f\u200b\u6700\u200b\u7b80\u5355\u200b\u7684\u200b\u524d\u9988\u200b\u795e\u7ecf\u7f51\u7edc\u200b\uff0c\u200b\u662f\u200b\u4e00\u79cd\u200b\u4e8c\u5143\u200b\u7ebf\u6027\u200b\u5206\u7c7b\u5668\u200b.

        \u200b\u4e0b\u9762\u200b\u7ed9\u51fa\u200b\u5f62\u5f0f\u5316\u200b\u8868\u8ff0\u200b\uff1a

        \u200b\u611f\u77e5\u673a\u200b

        \u200b\u7ed9\u5b9a\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u5176\u4e2d\u200b\\(y_i \\in \\{1\uff0c-1\\}\\)\u200b\u662f\u200b\u6570\u636e\u200b\u6807\u7b7e\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u627e\u5230\u200b\u4e00\u7ec4\u200b\\((w\uff0cb)\\)\u200b\u4f7f\u5f97\u200b\u51fd\u6570\u200b\\(f(x) = sign(w \\cdot x + b)\\)\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u6700\u5c0f\u200b\uff1a

        \\[ \\min L(w\uff0cb) = - \\sum_{i=1}^{n} y_i(w \\cdot x_i + b) \\]

        \u200b\u6ce8\u610f\u200b\u4e0a\u200b\u6587\u4e2d\u200b\u7684\u200b\\(sign\\)\u200b\u51fd\u6570\u200b\uff0c\u200b\u5b83\u200b\u7684\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\uff1a

        \\[ sign(x) = \\left\\{ \\begin{aligned} 1\uff0c & x \\geq 0 \\\\ -1\uff0c & x < 0 \\end{aligned} \\right. \\]

        \u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c\u200b\u5982\u679c\u200b\\(y_i\\)\u200b\u548c\u200b\\(f(x)\\)\u200b\u82e5\u200b\u662f\u200b\u7b26\u53f7\u200b\u76f8\u540c\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\uff09\uff0c\u200b\u90a3\u4e48\u200b\\(y_i(w \\cdot x_i + b)\\)\u200b\u7684\u200b\u503c\u200b\u5c31\u662f\u200b 1\uff0c\u200b\u53cd\u4e4b\u200b\u5219\u200b\u662f\u200b-1.\u200b\u56e0\u6b64\u200b\u6211\u4eec\u200b\u7684\u200b\u76ee\u6807\u200b\u5c31\u662f\u200b\u5c3d\u53ef\u80fd\u200b\u6700\u5927\u5316\u200b\u6240\u6709\u200b\\(y_i(w \\cdot x_i + b)\\)\u200b\u6c42\u548c\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u8fd9\u200b\u4e5f\u200b\u7b49\u6548\u4e8e\u200b\u6700\u5c0f\u5316\u200b\u5176\u200b\u8d1f\u6570\u200b.\uff08\u200b\u8be5\u200b\u9886\u57df\u200b\u7ea6\u5b9a\u4fd7\u6210\u200b\u5c31\u662f\u200b\u5199\u6210\u200b\u6700\u5c0f\u5316\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b\uff0c\u200b\u6700\u5c0f\u5316\u200b\u548c\u200b\u6700\u5927\u5316\u200b\u4e4b\u95f4\u200b\u53ea\u8981\u200b\u52a0\u200b\u4e00\u4e2a\u200b\u8d1f\u53f7\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e92\u76f8\u8f6c\u5316\u200b\uff09

        \u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b SGD\uff08Stochastic Gradient Descent\uff09\u200b\u6765\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u95ee\u9898\u200b\uff0c\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u7684\u200b\u68af\u5ea6\u200b\u4e3a\u200b\uff1a

        \\[\\begin{aligned} &\\nabla_w L(w\uff0cb) = - \\sum_{i=1}^{n} y_i x_i \\\\ &\\nabla_b L(w\uff0cb) = - \\sum_{i=1}^{n} y_i \\end{aligned}\\]

        \u200b\u4ece\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u968f\u673a\u200b\u9009\u53d6\u200b\u4e00\u4e2a\u200b\u6837\u672c\u200b\\((x_i\uff0cy_i)\\)\uff0c\u200b\u66f4\u65b0\u200b\u53c2\u6570\u200b\uff1a

        \\[\\begin{aligned} & w = w + \\eta y_i x_i\\\\ & b = b + \\eta y_i \\\\ \\end{aligned}\\]

        \u200b\u76f4\u5230\u200b\u6ca1\u6709\u200b\u8bef\u200b\u5206\u7c7b\u200b\u70b9\u200b.\u200b\u5176\u4e2d\u200b\\(\\eta \\in (0\uff0c1]\\)\u200b\u662f\u200b\u5b66\u4e60\u200b\u7387\u200b.

        "},{"location":"Note/Data%20Modeling/Perceptron/#_3","title":"\u6536\u655b\u6027","text":"

        \u200b\u53ef\u4ee5\u200b\u8bc1\u660e\u200b\uff0c\u200b\u611f\u77e5\u673a\u200b\u7684\u200b\u8bef\u200b\u5206\u7c7b\u200b\u6b21\u6570\u200b K \u200b\u5b58\u5728\u200b\u4e00\u4e2a\u200b\u4e0a\u200b\u754c\u200b\uff0c\u200b\u5373\u200b\uff1b

        \\[\\begin{aligned} & K \\leq (\\frac{R}{\\gamma})^2 \\\\ & R = \\max_{1 \\leq i \\leq n} ||x_i|| \\\\ & \\gamma = \\min_{1 \\leq i \\leq n} y_i(w^* \\cdot x_i + b^*) \\end{aligned}\\]

        \u200b\u5176\u4e2d\u200b\\(w^*\uff0cb^*\\)\u200b\u662f\u200b\u6700\u4f18\u200b\u89e3\u200b\uff0c\\(R\\)\u200b\u662f\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u6837\u672c\u200b\u70b9\u200b\u7684\u200b\u6700\u5927\u200b\u8303\u6570\u200b\uff0c\\(\\gamma\\)\u200b\u662f\u200b\u6570\u636e\u200b\u96c6\u4e2d\u200b\u6240\u6709\u200b\u6837\u672c\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u6700\u5c0f\u200b\u8ddd\u79bb\u200b. \u200b\u5bf9\u200b\u8bc1\u660e\u200b\u8fc7\u7a0b\u200b\u611f\u5174\u8da3\u200b\u7684\u200b\u53ef\u4ee5\u200b\u770b\u4e66\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u4e0d\u200b\u5c55\u5f00\u200b.

        "},{"location":"Note/Data%20Modeling/Perceptron/#_4","title":"\u5bf9\u5076\u200b\u5f62\u5f0f","text":"

        \u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u53c2\u6570\u200b\u4e3a\u200b\\(w_0 = 0\uff0cb_0 = 0\\)\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\uff1a

        \\[\\begin{aligned} & w = \\sum \\eta y_i x_i \\\\ & b = \\sum \\eta y_i \\end{aligned}\\]

        \u200b\u5176\u4e2d\u200b\\(\\eta\\)\u200b\u662f\u200b\u5b66\u4e60\u200b\u7387\u200b.\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u662f\u4ece\u200b 0 \u200b\u5f00\u59cb\u200b\u6bcf\u6b21\u200b\u90fd\u200b\u5f80\u200b\u53c2\u6570\u200b\u4e0a\u52a0\u200b\u4e00\u5b9a\u200b\u7684\u200b\u66f4\u65b0\u200b\u503c\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e0a\u200b\u5f0f\u200b\u81ea\u7136\u200b\u6210\u7acb\u200b.

        \u200b\u5047\u8bbe\u200b\u5176\u4e2d\u200b\u7b2c\u200b i \u200b\u4e2a\u200b\u6570\u636e\u200b\u70b9\u200b\u5728\u200b SGD \u200b\u4e2d\u200b\u88ab\u200b\u968f\u673a\u200b\u9009\u4e2d\u200b\u4e86\u200b\\(n_i\\)\u200b\u6b21\u200b\uff0c\u200b\u90a3\u4e48\u200b\u5b83\u200b\u56e0\u6b64\u200b\u5bfc\u81f4\u200b\u4e86\u200b\\(n_i\\)\u200b\u6b21\u200b\u53c2\u6570\u200b\u7684\u200b\u66f4\u65b0\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b\u4e0a\u5f0f\u200b\u5199\u6210\u200b\uff1a

        \\[\\begin{aligned} & w = \\sum_{i=1}^{n} \\eta n_i y_i x_i \\\\ & b = \\sum_{i=1}^{n} \\eta n_i y_i \\end{aligned}\\]

        \u200b\u4ee4\u200b\\(\\alpha_i = \\eta n_i\\)\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\uff1a

        \\[\\begin{aligned} & w = \\sum_{i=1}^{n}\\alpha_i y_i x_i \\\\ & b = \\sum_{i=1}^{n}\\alpha_i y_i \\end{aligned}\\]

        \u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u7c7b\u200b\u51fd\u6570\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5199\u6210\u200b\uff1a

        \\[ f(x) = sign(\\sum_{i=1}^{n}\\alpha_i y_i\uff08 x_i \\cdot x \uff09 + \\sum_{i=1}^{n}\\alpha_i y_i) \\]

        \u200b\u6bcf\u6b65\u200b SGD \u200b\u4e2d\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u66f4\u65b0\u200b\\(\\alpha_i\\):

        \\[ \\alpha_i = \\alpha_i + \\eta \\]

        \u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u7c7b\u200b\u51fd\u6570\u200b\u4e2d\u200b\u53ea\u6709\u200b\\(\\alpha_i\\)\u200b\u9700\u8981\u200b\u6bcf\u6b21\u200b\u66f4\u65b0\u200b\uff0c\u200b\u9664\u6b64\u4e4b\u5916\u200b\u8fd8\u6709\u200b\u5927\u91cf\u200b\u7684\u200b x \u200b\u7684\u200b\u5185\u79ef\u200b\u8fd0\u7b97\u200b\uff0c\u200b\u4e3a\u4e86\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b x \u200b\u7684\u200b\u5185\u79ef\u200b\u9884\u5148\u200b\u8ba1\u7b97\u51fa\u6765\u200b\uff0c\u200b\u8fd9\u200b\u88ab\u79f0\u4f5c\u200b Gram \u200b\u77e9\u9635\u200b\uff1a

        Gram \u200b\u77e9\u9635\u200b

        \u200b\u7ed9\u5b9a\u200b n \u200b\u4e2a\u200b\u5411\u91cf\u200b\\(x_1\uff0cx_2\uff0c...\uff0cx_n\\)\uff0c\u200b\u90a3\u4e48\u200b Gram \u200b\u77e9\u9635\u200b\\(G\\)\u200b\u662f\u200b\u7531\u200b\u8fd9\u4e9b\u200b\u5411\u91cf\u200b\u6240\u6709\u200b\u53ef\u80fd\u200b\u7684\u200b\u5185\u79ef\u200b\u7ec4\u6210\u200b\u7684\u200b\u77e9\u9635\u200b\uff0c\u200b\u5373\u200b\uff1a

        \\[ g_{ij} = x_i \\cdot x_j \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/","title":"\u652f\u6301\u200b\u5411\u91cf\u200b\u673a","text":"

        \u200b\u7ea6\u200b 2059 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 7 \u200b\u5206\u949f\u200b

        Warning

        \u200b\u5f88\u591a\u200b\u4eba\u200b\u90fd\u200b\u5410\u200b\u69fd\u200b\uff0c\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u673a\u200b\u8fd9\u4e2a\u200b\u540d\u5b57\u200b\u8d77\u200b\u7684\u200b\u4f9d\u6258\u200b

        "},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_2","title":"\u6a21\u578b\u200b\u63cf\u8ff0","text":"

        \u200b\u5bf9\u4e8e\u200b\u6570\u636e\u200b\u96c6\u200b\\(\\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u5176\u4e2d\u200b\\(x_i \\in \\mathbb{R}^n\uff0c y \\in \\{1\uff0c-1\\}\\)\uff0c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u627e\u5230\u200b\u4e00\u4e2a\u200b\u8d85\u5e73\u9762\u200b\\(w\\cdot x + b = 0\\)\u200b\u5c06\u200b\u6570\u636e\u200b\u96c6\u200b\u5206\u5f00\u200b.

        \u200b\u5b9e\u4f8b\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b

        \\[ \\gamma_i = \\frac{y_i(w\\cdot x_i + b)}{\\|w\\|} \\]

        \u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c\u200b\u5176\u200b\u7edd\u5bf9\u503c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u70b9\u5230\u200b\u76f4\u7ebf\u200b\u8ddd\u79bb\u200b

        \u200b\u5b9e\u4f8b\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b

        \\[ \\hat{\\gamma_i} = y_i(w\\cdot x_i + b) \\]

        \u200b\u53ef\u4ee5\u200b\u770b\u51fa\u200b\uff0c\u200b\u5176\u200b\u7edd\u5bf9\u503c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u9664\u53bb\u200b\u4e86\u200b\\(||w||\\)\u200b\u8fd9\u4e2a\u200b\u56e0\u7d20\u200b

        \u200b\u4e0a\u8ff0\u200b\u7684\u200b\u53d8\u91cf\u200b\u7684\u200b\u7edd\u5bf9\u503c\u200b\u542b\u4e49\u200b\u90fd\u200b\u8868\u793a\u200b\u67d0\u79cd\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u800c\u200b\u7b26\u53f7\u200b\u8868\u793a\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\u4e0e\u5426\u200b\uff0c\u200b\u5206\u7c7b\u200b\u6b63\u786e\u200b\u65f6\u95f4\u200b\u9694\u4e3a\u200b\u6b63\u200b\uff0c\u200b\u5206\u7c7b\u200b\u9519\u8bef\u200b\u65f6\u95f4\u200b\u9694\u4e3a\u200b\u8d1f\u200b

        \u200b\u7ed9\u5b9a\u200b\u4e00\u7ec4\u200b\u6570\u636e\u200b\u70b9\u200b\u548c\u200b\u4e00\u4e2a\u200b\u8d85\u5e73\u9762\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u8ba1\u7b97\u200b\u51fa\u200b\u5404\u4e2a\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u548c\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b.\u200b\u4f46\u662f\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u6210\u200b\u6bd4\u4f8b\u200b\u7684\u200b\u540c\u65f6\u200b\u653e\u7f29\u200b w \u200b\u548c\u200b b\uff0c\u200b\u90a3\u4e48\u200b\u8d85\u5e73\u9762\u200b\u548c\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b\u90fd\u200b\u5b8c\u5168\u200b\u4e0d\u53d8\u200b\uff0c\u200b\u4f46\u662f\u200b\u6240\u6709\u200b\u70b9\u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u90fd\u200b\u4f1a\u200b\u968f\u7740\u200b w \u200b\u7684\u200b\u53d8\u5316\u200b\u800c\u200b\u53d8\u5316\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b\uff08\u200b\u4e0d\u53d8\u200b\uff09\u200b\u4e58\u200b\u4e0a\u200b w \u200b\u7684\u200b\u6a21\u200b\uff08\u200b\u6b63\u5728\u200b\u88ab\u6210\u200b\u6bd4\u4f8b\u200b\u653e\u7f29\u200b\uff09

        \u200b\u4e3a\u4e86\u200b\u63d0\u9ad8\u200b\u5206\u7c7b\u200b\u7684\u786e\u200b\u4fe1\u5ea6\u200b\u548c\u200b\u6cdb\u5316\u200b\u80fd\u529b\u200b\uff0c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u6700\u5927\u5316\u200b\u6700\u5c0f\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5c3d\u91cf\u200b\u63d0\u9ad8\u200b\u6240\u6709\u200b\u70b9\u5230\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u8ddd\u79bb\u200b\u7684\u200b\u4e0b\u754c\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u8ba9\u200b\u6240\u6709\u200b\u70b9\u200b\u90fd\u200b\u5c3d\u53ef\u80fd\u200b\u79bb\u200b\u8d85\u5e73\u9762\u200b\u8fdc\u200b\u4e00\u70b9\u200b\uff08\u200b\u79bb\u200b\u8d85\u5e73\u9762\u200b\u5f88\u8fd1\u200b\u7684\u8bdd\u200b\uff0c\u200b\u7a0d\u5fae\u200b\u6709\u200b\u4e00\u70b9\u200b\u6270\u52a8\u200b\u5c31\u200b\u5bb9\u6613\u200b\u88ab\u200b\u5206\u6210\u200b\u53e6\u4e00\u7c7b\u200b\uff09

        \u200b\u4e8e\u662f\u200b\u6211\u4eec\u200b\u5199\u51fa\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b

        \\[\\begin{aligned} \\underset {w\uff0cb}{\\operatorname{max}} & \\quad \\gamma \\\\ s.t. & \\quad y_i(w\\cdot x_i + b) \\geq \\gamma\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

        \u200b\u5176\u4e2d\u200b\u7684\u200b\\(\\gamma = \\underset {i}{\\operatorname{min}} \\gamma_i\\)\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u6700\u5c0f\u200b\u51e0\u4f55\u200b\u95f4\u9694\u200b

        \u200b\u89c2\u5bdf\u200b\u5230\u200b\\(\\gamma\\|w\\| = \\hat{\\gamma}\\)\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5c06\u200b\u4e0a\u8ff0\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b\u8f6c\u5316\u200b\u4e3a\u200b

        \\[\\begin{aligned} \\underset {w\uff0cb}{\\operatorname{max}} & \\quad \\frac{\\hat{\\gamma}}{\\|w\\|} \\\\ s.t. & \\quad y_i(w\\cdot x_i + b) \\geq \\hat{\\gamma}\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

        \u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u6210\u200b\u6bd4\u4f8b\u200b\u7684\u200b\u653e\u7f29\u200b w \u200b\u548c\u200b b \u200b\u6765\u200b\u8c03\u8282\u200b\\(\\hat{\\gamma}\\)\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u653e\u7f29\u200b\\(w\\)\u200b\u4f7f\u5f97\u200b\\(\\hat{\\gamma} = 1\\)\uff0c\u200b\u4e0a\u8ff0\u200b\u4f18\u5316\u200b\u76ee\u6807\u200b\u8f6c\u5316\u200b\u4e3a\u200b

        \\[\\begin{aligned} \\underset {w\uff0cb}{\\operatorname{max}} & \\quad \\frac{1}{\\|w\\|} \\\\ s.t. & \\quad y_i(w\\cdot x_i + b) \\geq 1\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

        \u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u4f18\u5316\u200b\u95ee\u9898\u200b\u53ef\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u89e3\u200b\\(w^*\uff0cb^*\\)\uff0c\u200b\u6784\u6210\u200b\u6700\u4f18\u200b\u5206\u79bb\u200b\u8d85\u5e73\u9762\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8bc1\u660e\u200b\uff0c\u200b\u8be5\u200b\u8d85\u5e73\u9762\u200b\u5b58\u5728\u200b\u4e14\u200b\u552f\u4e00\u200b\uff0c\u200b\u90a3\u4e9b\u200b\u79bb\u200b\u8d85\u5e73\u9762\u200b\u6700\u8fd1\u200b\u7684\u200b\u70b9\u200b\u5c31\u200b\u88ab\u200b\u79f0\u4e3a\u200b\u652f\u6301\u200b\u5411\u91cf\u200b

        "},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_3","title":"\u6a21\u578b\u200b\u6c42\u89e3","text":""},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_4","title":"\u5bf9\u5076\u200b\u95ee\u9898","text":""},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_5","title":"\u5199\u51fa\u200b\u5bf9\u5076\u200b\u95ee\u9898","text":"

        \u200b\u62c9\u683c\u6717\u200b\u65e5\u200b\u51fd\u6570\u200b\u4e3a\u200b\uff1a

        \\[ L(w\uff0cb\uff0c\\alpha) = \\frac{1}{2}||w||^2 - \\sum_{i=1}^{N}\\alpha_iy_i(w\\cdot x_i + b) + \\sum_{i=1}^{N}\\alpha_i \\]

        \u200b\u6211\u4eec\u200b\u5c06\u200b\u6700\u5c0f\u200b\u6700\u5927\u200b\u95ee\u9898\u200b\u8f6c\u5316\u200b\u4e3a\u200b\u6700\u5927\u200b\u6700\u5c0f\u200b\u95ee\u9898\u200b\uff0c\u200b\u5199\u51fa\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\uff1a

        \\[ \\underset {\\alpha}{\\operatorname{min}} \\underset {w\uff0cb}{\\operatorname{max}} L(w\uff0cb\uff0c\\alpha) \\rightarrow \\underset {\\alpha}{\\operatorname{min}} \\underset {w\uff0cb}{\\operatorname{max}} L(w\uff0cb\uff0c\\alpha) \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_6","title":"\u6781\u5c0f\u200b\u5316","text":"

        \u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u8ba9\u200b\\(\\nabla_w L(w\uff0cb\uff0c\\alpha) = 0\\)\u200b\u548c\u200b\\(\\nabla_b L(w\uff0cb\uff0c\\alpha) = 0\\)\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b

        \\[\\begin{aligned} & w = \\sum_{i=1}^{N}\\alpha_i y_i x_i \\\\ & 0 = \\sum_{i=1}^{N}\\alpha_i y_i \\\\ \\end{aligned}\\]

        \u200b\u5e26\u56de\u200b\u539f\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u5f97\u5230\u200b\uff1a

        \\[ L(w\uff0cb\uff0c\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_j(x_i\\cdot x_j) \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_7","title":"\u6781\u5927\u200b\u5316","text":"

        \u200b\u5728\u200b\u6781\u5c0f\u200b\u5316\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5269\u4e0b\u200b\u7684\u200b\u95ee\u9898\u200b\u5c31\u662f\u200b

        \\[\\begin{aligned} \\underset {\\alpha}{\\operatorname{max}} & \\quad L(\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_j(x_i\\cdot x_j) \\\\ s.t. & \\quad \\sum_{i=1}^{N}\\alpha_i y_i = 0 \\\\ & \\quad \\alpha_i \\geq 0\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

        \u200b\u901a\u8fc7\u200b\u67d0\u79cd\u200b\u65b9\u5f0f\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u95ee\u9898\u200b\uff0c\u200b\u6211\u4eec\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u89e3\u200b\\(\\alpha^*\\)

        "},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_8","title":"\u539f\u59cb\u200b\u95ee\u9898","text":""},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#kkt","title":"\u5e94\u7528\u200b KKT \u200b\u6761\u4ef6","text":"

        \u200b\u6709\u200b\u4e86\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u7684\u200b\u6700\u4f18\u200b\u89e3\u200b\\(\\alpha^* = (\\alpha_1^*\uff0c\\alpha_2^*\uff0c...\uff0c\\alpha_N^*)\\)\uff0c\u200b\u5e94\u7528\u200b KKT \u200b\u6761\u4ef6\u200b\uff1a

        \\[\\begin{align} & \\alpha_i^* \\geq 0 \\tag{1}\\\\ & y_i(w^*\\cdot x_i + b^*) - 1 \\geq 0 \\tag{2}\\\\ & \\alpha_i^*(y_i(w^*\\cdot x_i + b^*) - 1) = 0 \\tag{3}\\\\ & \\nabla_w L(w^*\uff0cb^*\uff0c\\alpha^*) = w^* - \\sum_{i=1}^{N}\\alpha_i^* y_i x_i = 0 \\tag{4}\\\\ & \\nabla_b L(w^*\uff0cb^*\uff0c\\alpha^*) = \\sum_{i=1}^{N}\\alpha_i^* y_i = 0 \\tag{5}\\\\ \\end{align}\\]

        \u200b\u82e5\u200b\\(\\alpha^* = 0\\)\uff0c\u200b\u7531\u200b(4)\u200b\u53ef\u4ee5\u200b\u63a8\u51fa\u200b\\(w^* = 0\\)\uff0c\u200b\u663e\u7136\u200b\u4e0d\u200b\u5bf9\u200b\uff0c\u200b\u6240\u4ee5\u200b\\(\\alpha^*\\)\u200b\u4e0d\u5168\u200b\u4e3a\u200b\u96f6\u200b

        \u200b\u82e5\u200b\\(\\alpha_i^* > 0\\)\uff0c\u200b\u7531\u200b(3)\u200b\u53ef\u4ee5\u200b\u63a8\u51fa\u200b\\(y_i(w^*\\cdot x_i + b^*) = 1\\)\uff0c\u200b\u56de\u5fc6\u200b\u524d\u200b\u6587\u200b\u6211\u4eec\u200b\u5df2\u7ecf\u200b\u4ee4\u200b\\(\\hat{\\gamma} = 1\\)\uff0c\u200b\u6240\u4ee5\u200b j \u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u8ddf\u200b\u6700\u5c0f\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u76f8\u7b49\u200b\uff0c\u200b\u6bcf\u4e2a\u200b j \u200b\u90fd\u200b\u56e0\u6b64\u200b\u6210\u4e3a\u200b\u4e00\u4e2a\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\uff0c\u200b\u5176\u4e2d\u200b\u65e2\u6709\u200b\u6b63\u4f8b\u200b\u4e5f\u200b\u6709\u200b\u53cd\u4f8b\u200b

        "},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#wb","title":"\u6c42\u200b\u6700\u4f18\u200b w\uff0cb","text":"

        \u200b\u5229\u7528\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b

        \\[\\begin{align} & w^* = \\sum_{i=1}^{N}\\alpha_i^* y_i x_i \\\\ & b^* = y_j - \\sum_{i=1}^{N}\\alpha_i^* y_i (x_i\\cdot x_j) \\\\ \\end{align}\\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_9","title":"\u5f97\u5230\u200b\u5206\u79bb\u200b\u51fd\u6570","text":"

        \u200b\u5229\u7528\u200b\u6700\u4f18\u200b\u89e3\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5f97\u5230\u200b\u5206\u79bb\u200b\u51fd\u6570\u200b

        \\[ f(x) = sign(\\sum_{i=1}^{N}\\alpha_i^* y_i (x_i\\cdot x) + b^*) \\]

        \u200b\u4ee5\u4e0a\u200b\u4fbf\u662f\u200b\u6c42\u89e3\u200b\u4e8c\u6b21\u200b\u89c4\u5212\u200b\u95ee\u9898\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u95f4\u9694\u200b\u8d85\u5e73\u9762\u200b\u7684\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u5176\u4e2d\u200b\u53ea\u6709\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u4e2d\u200b\u7684\u200b\u6c42\u200b\u7684\u200b\u6700\u4f18\u200b\\(\\alpha^*\\)\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6ca1\u6709\u200b\u9610\u660e\u200b\uff0c\u200b\u540e\u9762\u200b\u4f1a\u200b\u7ed9\u51fa\u200b

        "},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_10","title":"\u8f6f\u200b\u95f4\u9694","text":"

        \u200b\u4e00\u822c\u800c\u8a00\u200b\uff0c\u200b\u7531\u4e8e\u200b\u566a\u58f0\u200b\u7684\u200b\u5e72\u6270\u200b\uff0c\u200b\u6211\u4eec\u200b\u5f88\u96be\u200b\u76f4\u63a5\u200b\u62ff\u5230\u200b\u4e00\u4e2a\u200b\u7ebf\u6027\u200b\u53ef\u5206\u200b\u7684\u200b\u6570\u636e\u200b\u96c6\u200b\uff0c\u200b\u800c\u662f\u200b\u4e00\u4e2a\u200b\u8fd1\u4f3c\u200b\u7ebf\u6027\u200b\u53ef\u5206\u200b\u7684\u200b\u6570\u636e\u200b\u96c6\u200b\uff0c\u200b\u6211\u4eec\u200b\u53bb\u6389\u200b\u5927\u90e8\u5206\u200b\u7684\u200b\u566a\u70b9\u200b\u540e\u200b\u53ef\u4ee5\u200b\u505a\u5230\u200b\u7ebf\u6027\u200b\u53ef\u200b\u5206\u200b\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u4e9b\u200b\u566a\u70b9\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u8dd1\u200b\u5230\u200b\u4e86\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4ee5\u5185\u200b\u751a\u81f3\u200b\u8d85\u5e73\u9762\u200b\u5bf9\u9762\u200b\u7684\u200b\uff0c\u200b\u8fd9\u200b\u610f\u5473\u7740\u200b

        \\[ y_i(w\\cdot x_i + b) \\geq 1 - \\xi_i \\quad i = 1\uff0c2\uff0c...\uff0cN (\\xi_i \\geq 0 ) \\]

        \u200b\u4e5f\u5c31\u662f\u8bf4\u200b\uff0c\u200b\u5e76\u975e\u200b\u6240\u6709\u200b\u70b9\u200b\u7684\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u90fd\u200b\u5927\u4e8e\u200b 1 \u200b\u4e86\u200b\uff08\u200b\u51fd\u6570\u200b\u95f4\u9694\u200b\u4e3a\u200b 1 \u200b\u7684\u200b\u662f\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\uff0c\u200b\u4e0d\u200b\u5927\u4e8e\u200b\u4e00\u200b\u5c31\u200b\u4f4d\u4e8e\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4ee5\u5185\u200b\u4e86\u200b\uff09\uff0c

        \u200b\u5f53\u7136\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e0d\u80fd\u5141\u8bb8\u200b\u65e0\u200b\u9650\u5236\u200b\u7684\u200b\u677e\u5f1b\u200b\uff0c\u200b\u4e0d\u7136\u200b\u6240\u8c13\u200b\u7684\u200b\u5176\u4ed6\u200b\u5411\u91cf\u200b\u90fd\u200b\u53ef\u4ee5\u200b\u968f\u610f\u200b\u8dd1\u200b\u5230\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4ee5\u5185\u200b\u7684\u8bdd\u200b\uff0c\u200b\u652f\u6301\u200b\u5411\u91cf\u200b\u4e5f\u200b\u5c31\u200b\u6ca1\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fdb\u5f62\u200b\u6b63\u5219\u200b\u5316\u200b

        \\[ \\underset {w\uff0cb\uff0c\\xi}{\\operatorname{min}} \\quad \\frac{1}{2}||w||^2 + C\\sum_{i=1}^{N}\\xi_i \\\\ \\]

        \u200b\u5176\u4e2d\u200b\u7684\u200b C \u200b\u662f\u200b\u4e00\u4e2a\u200b\u6211\u4eec\u200b\u624b\u52a8\u200b\u8bbe\u7f6e\u200b\u7684\u200b\u60e9\u7f5a\u200b\u53c2\u6570\u200b

        \u200b\u6211\u4eec\u200b\u7684\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u968f\u4e4b\u200b\u53d8\u6210\u200b\uff1a

        \\[\\begin{aligned} \\underset {\\alpha}{\\operatorname{max}} & \\quad L(\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_j(x_i\\cdot x_j) \\\\ s.t. & \\quad \\sum_{i=1}^{N}\\alpha_i y_i = 0 \\\\ & \\quad 0 \\leq \\alpha_i \\leq C\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

        \u200b\u5176\u4e2d\u200b\u7531\u4e8e\u200b\u677e\u5f1b\u200b\u6761\u4ef6\u200b\uff0c\u200b\u6211\u4eec\u200b\u6781\u5c0f\u200b\u5316\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u65b0\u589e\u200b\u4e86\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u7ea6\u675f\u200b\uff1a

        \\[\\begin{aligned} \\nabla_{\\xi_i} L(w\uff0cb\uff0c\\alpha\uff0c\\xi) = C - \\alpha_i - \\mu_i = 0 \\quad i = 1\uff0c2\uff0c...\uff0cN \\\\ \\mu_i \\geq 0 \\quad i = 1\uff0c2\uff0c...\uff0cN \\\\ \\end{aligned}\\]

        \u200b\u8fd9\u200b\u4e5f\u200b\u662f\u200b\u4e0a\u8ff0\u200b\u6761\u4ef6\u200b\u4e2d\u200b\u51fa\u73b0\u200b\\(\\alpha_i \\leq C\\)\u200b\u7684\u200b\u539f\u56e0\u200b

        \u200b\u540c\u6837\u200b\u6c42\u89e3\u200b\u6700\u4f18\u200b\u89e3\u200b\\(\\alpha^*\\)\uff0c\u200b\u7136\u540e\u200b\u5e26\u56de\u200b\u539f\u200b\u5f0f\u200b\uff0c\u200b\u5f97\u5230\u200b\u6700\u4f18\u200b\u89e3\u200b\\(w^*\uff0cb^*\uff0c\\xi^*\\)\uff0c\u200b\u6784\u6210\u200b\u6700\u4f18\u200b\u5206\u79bb\u200b\u8d85\u5e73\u9762\u200b

        \u200b\u90a3\u4e9b\u200b\u88ab\u200b\u677e\u5f1b\u200b\u7684\u200b\u70b9\u200b\u7684\u200b\u4f4d\u7f6e\u200b\u548c\u200b\\(\\xi\\)\u200b\u7684\u200b\u7684\u200b\u5173\u7cfb\u200b\u4e3a\u200b\uff1a

        "},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#_11","title":"\u6838\u200b\u51fd\u6570","text":"

        \u200b\u6211\u4eec\u200b\u60f3\u8981\u200b\u628a\u200b\u70b9\u200b\\(x\uff0c z \\in \\mathbb{R}^n\\)\u200b\u6620\u5c04\u200b\u5230\u200b\u4e00\u4e2a\u200b\u66f4\u200b\u9ad8\u7ef4\u200b\u7684\u200b\u7a7a\u95f4\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b(\\(\\phi(x)\\)\u200b\u88ab\u200b\u6620\u5c04\u200b\u5230\u200b\u66f4\u200b\u9ad8\u7ef4\u200b\uff09\uff0c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u6620\u5c04\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u4fdd\u8bc1\u200b\u9ad8\u200b\u7ef4\u7a7a\u95f4\u200b\u4e2d\u200b\u4e8c\u8005\u200b\u7684\u200b\u70b9\u79ef\u200b\u662f\u200b\u539f\u200b\u7a7a\u95f4\u200b\u4e2d\u70b9\u79ef\u200b\u7684\u200b\u51fd\u6570\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b

        \\[ K(x\uff0cz) = \\phi(x)\\cdot \\phi(z) \\]

        \u200b\u4e00\u822c\u800c\u8a00\u200b\uff0c\u200b\u7ed9\u5b9a\u200b\u8fd9\u4e2a\u200b\u628a\u200b\u539f\u200b\u5185\u79ef\u200b\u6620\u5c04\u200b\u5230\u200b\u9ad8\u7ef4\u200b\u5185\u79ef\u200b\u7684\u200b K \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e86\u200b\uff0c\u200b\u4e0d\u7528\u200b\u5177\u4f53\u200b\u7ed9\u51fa\u200b\u628a\u200b\u5411\u91cf\u200b\u6620\u5c04\u200b\u5230\u200b\u9ad8\u4f4d\u200b\u5411\u91cf\u200b\u7684\u200b\\(\\phi()\\)

        \u200b\u5728\u200b\u5bf9\u5076\u200b\u95ee\u9898\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u6ce8\u610f\u200b\u5230\u200b\\(x_i\\)\u200b\u4e4b\u95f4\u200b\u53ea\u6709\u200b\u5185\u79ef\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u5c31\u200b\u76f4\u63a5\u200b\u7528\u200b\u6620\u5c04\u200b\u540e\u200b\u7684\u200b\u9ad8\u4f4d\u200b\u5185\u79ef\u200b\u8fdb\u884c\u200b\u66ff\u6362\u200b

        \\[ \\underset {\\alpha}{\\operatorname{max}} \\quad L(\\alpha) = \\sum_{i=1}^{N}\\alpha_i - \\frac{1}{2}\\sum_{i=1}^{N}\\sum_{j=1}^{N}\\alpha_i\\alpha_jy_iy_jK(x_i\uff0cx_j) \\\\ \\]

        \u200b\u5e38\u7528\u200b\u6838\u200b\u51fd\u6570\u200b

        \u200b\u591a\u9879\u5f0f\u200b\u6838\u200b\u51fd\u6570\u200b

        \\[ K(x\uff0cz) = (x\\cdot z + 1)^p \\]

        \u200b\u9ad8\u65af\u200b\u6838\u200b\u51fd\u6570\u200b(KBF)

        \\[ K(x\uff0cz) = \\exp(-\\frac{||x-z||^2}{2\\sigma^2}) \\]"},{"location":"Note/Data%20Modeling/Support_Vector_Machine/#smo","title":"SMO \u200b\u7b97\u6cd5","text":"

        \u200b\u6700\u540e\u200b\u6211\u4eec\u200b\u7ed9\u51fa\u200b SMO \u200b\u7b97\u6cd5\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u79cd\u200b\u5177\u4f53\u200b\u6c42\u89e3\u200b\u4e0a\u8ff0\u200b\u7684\u200b\\(\\alpha^*\\)\u200b\u7684\u200b\u6570\u503c\u200b\u65b9\u6cd5\u200b.

        \u200b\u8f93\u5165\u200b\uff1a\u200b\u6570\u636e\u200b\u96c6\u200b\\(D = \\{(x_i\uff0cy_i)\\}\\)\uff0c\u200b\u6838\u200b\u51fd\u6570\u200b\\(K(x\uff0cz)\\)\uff0c\u200b\u5bb9\u5fcd\u5ea6\u200b\\(\\epsilon\\)

        • \u200b\u521d\u59cb\u5316\u200b\\(\\alpha = 0\\)\uff0ck = 0
        • \u200b\u53d6\u200b\u4f18\u5316\u200b\u53d8\u91cf\u200b\\(\\alpha_1\uff0c\\alpha_2\\)\uff0c\u200b\u89e3\u6790\u200b\u6c42\u89e3\u200b\u6700\u4f18\u5316\u200b\u95ee\u9898\u200b\uff0c\u200b\u66f4\u65b0\u200b\\(\\alpha_1\uff0c\\alpha_2\\)
        • \u200b\u82e5\u200b\u5728\u200b\u5bb9\u5fcd\u5ea6\u200b\\(\\epsilon\\)\u200b\u5185\u200b\u6ee1\u8db3\u200b\uff1a

          \\[\\begin{aligned} & \\sum_{i=1}^{N}\\alpha_i y_i = 0 \\\\ & 0 \\leq \\alpha_i \\leq C\uff0c i = 1\uff0c2\uff0c...\uff0cN \\\\ & y_i(g(x_i)) = \\left\\{ \\begin{aligned} & \\geq 1\uff0c \\alpha_i = 0 \\\\ & = 1\uff0c 0 < \\alpha_i < C \\\\ & \\leq 1\uff0c \\alpha_i = C \\\\ \\end{aligned} \\right. \\end{aligned}\\]

          \u200b\u5219\u200b\u4ee4\u200b\\(\\alpha = (\\alpha_1\uff0c\\alpha_2\uff0c...\uff0c\\alpha_N)\\)\uff0c\u200b\u9000\u51fa\u200b\u5faa\u73af\u200b

        "},{"location":"Note/Missing%20Semester/","title":"Missing Smester","text":"

        \u200b\u7ea6\u200b 127 \u200b\u4e2a\u200b\u5b57\u200b

        Abstract

        Missing Semester \u200b\u662f\u200b\u6765\u81ea\u200b MIT \u200b\u7684\u200b\u4e00\u95e8\u200b\u8ba1\u7b97\u673a\u200b\u5165\u200b\u4e48\u200b\u8bfe\u7a0b\u200b\uff0c\u200b\u8fd9\u95e8\u200b\u8bfe\u7a0b\u200b\u4e0d\u200b\u4ecb\u7ecd\u200b\u5177\u4f53\u200b\u7684\u200b\u8bed\u8a00\u200b\u7b97\u6cd5\u200b\uff0c\u200b\u800c\u662f\u200b\u4ecb\u7ecd\u200b\u4e00\u4e9b\u200b\u53ef\u4ee5\u200b\u63d0\u9ad8\u6548\u7387\u200b\u7684\u200b\u5de5\u5177\u200b\u7684\u200b\u4f7f\u7528\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u666e\u53ca\u200b\u8ba1\u7b97\u673a\u200b\u5e38\u8bc6\u200b

        Warning

        \u200b\u539f\u200b\u8bfe\u7a0b\u200b\u5f88\u200b\u4f18\u79c0\u200b\uff0c\u200b\u5982\u679c\u200b\u60a8\u200b\u6709\u7a7a\u200b\u7684\u8bdd\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u524d\u5f80\u200b\u3010\u200b\u8bfe\u7a0b\u200b\u7f51\u7ad9\u200b\u3011()\u200b\u8fdb\u884c\u200b\u5b66\u4e60\u200b.\u200b\u8fd9\u91cc\u200b\u5b58\u200b\u7684\u200b\u662f\u200b\u6211\u200b\u7684\u200b\u7b14\u8bb0\u200b\uff0c\u200b\u5b83\u4eec\u200b\u662f\u200b\u4e3a\u4e86\u200b\u5728\u200b\u9700\u8981\u200b\u7684\u200b\u65f6\u5019\u200b\u80fd\u591f\u200b\u65b9\u4fbf\u200b\u7684\u200b\u88ab\u200b\u67e5\u627e\u200b\u800c\u200b\u64b0\u5199\u200b\u7684\u200b\uff0c\u200b\u8bf7\u52ff\u200b\u76f4\u63a5\u200b\u5b66\u4e60\u200b

        "},{"location":"Note/Missing%20Semester/Data/","title":"Data wrangling","text":"

        \u200b\u7ea6\u200b 911 \u200b\u4e2a\u200b\u5b57\u200b 2 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        \u200b\u672c\u200b\u8282\u200b\u5217\u4e3e\u200b\u4e00\u4e9b\u200b\u547d\u4ee4\u884c\u200b\u5e38\u7528\u200b\u7684\u200b\u6570\u636e\u5904\u7406\u200b\u5de5\u5177\u200b

        "},{"location":"Note/Missing%20Semester/Data/#sed","title":"Sed","text":"

        Sed \u200b\u662f\u200b Stream editor \u200b\u6d41\u200b\u7f16\u8f91\u5668\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u63a5\u53d7\u200b\u7ba1\u9053\u200b\u8f93\u5165\u200b\uff0c\u200b\u5bf9\u200b\u6bcf\u200b\u4e00\u884c\u200b\u8fdb\u884c\u200b\u5904\u7406\u200b\uff0c\u200b\u7136\u540e\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b.

        sed [OPTION] 'edit-command' [input-file]`\n

        \u200b\u9009\u9879\u200b\u662f\u200b\u4e00\u4e9b\u200b\u7528\u4e8e\u200b\u63a7\u5236\u200b sed \u200b\u547d\u4ee4\u200b\u884c\u4e3a\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u5e38\u89c1\u200b\u7684\u200b\u6709\u200b\uff1a

        • -n \u200b\u4e0d\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b
        • -e \u200b\u4ee5\u540e\u200b\u7684\u200b\u53c2\u6570\u200b\u4f5c\u4e3a\u200b\u811a\u672c\u200b
        • -f \u200b\u4ee5\u540e\u200b\u7684\u200b\u53c2\u6570\u200b\u4f5c\u4e3a\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b
        • -i \u200b\u76f4\u63a5\u200b\u4fee\u6539\u200b\u6587\u4ef6\u200b
        • -r \u200b\u4f7f\u7528\u200b\u6269\u5c55\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b
        • -E \u200b\u540c\u200b\u4e0a\u200b
        • -r \u200b\u4f7f\u7528\u200b\u57fa\u7840\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b
        • -h \u200b\u4e0d\u200b\u6253\u5370\u6587\u4ef6\u200b\u540d\u200b

        sed\u200b\u7684\u200b\u7f16\u8f91\u200b\u547d\u4ee4\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u6765\u200b\u6307\u5b9a\u200b\u5339\u914d\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u5e76\u200b\u901a\u8fc7\u200b\u66ff\u6362\u200b\u3001\u200b\u5220\u9664\u200b\u3001\u200b\u63d2\u5165\u200b\u7b49\u200b\u547d\u4ee4\u200b\u6765\u200b\u4fee\u6539\u200b\u6587\u672c\u200b.\u200b\u4e00\u4e9b\u200b\u5e38\u89c1\u200b\u7684\u200b sed \u200b\u7f16\u8f91\u200b\u547d\u4ee4\u200b\u5305\u62ec\u200b\uff1a

        • s/pattern/replacement/\uff1a\u200b\u66ff\u6362\u200b\u6307\u5b9a\u200b\u6a21\u5f0f\u200b\u7684\u200b\u6587\u672c\u200b.
        • d\uff1a\u200b\u5220\u9664\u200b\u5339\u914d\u200b\u5230\u200b\u7684\u200b\u884c\u200b.
        • p\uff1a\u200b\u6253\u5370\u200b\uff08\u200b\u8f93\u51fa\u200b\uff09\u200b\u5339\u914d\u200b\u5230\u200b\u7684\u200b\u884c\u200b.
        • i\uff1a\u200b\u5728\u200b\u6307\u5b9a\u200b\u884c\u524d\u200b\u63d2\u5165\u200b\u6587\u672c\u200b.
        • a\uff1a\u200b\u5728\u200b\u6307\u5b9a\u200b\u884c\u540e\u200b\u8ffd\u52a0\u200b\u6587\u672c\u200b.
        \u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b
        • \u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u53ef\u4ee5\u200b\u5b9e\u73b0\u200b\u5b57\u7b26\u4e32\u200b\u5339\u914d\u200b\uff0c\u200b\u5927\u90e8\u5206\u200b\u5b57\u7b26\u200b\u90fd\u200b\u4fdd\u6301\u200b\u613f\u610f\u200b\u9664\u4e86\u200b\u4e00\u4e9b\u200b\u7279\u6b8a\u200b\u7684\u200b
        • . \u200b\u4ee3\u8868\u200b\u9664\u4e86\u200b\u6362\u884c\u200b\u4efb\u4f55\u200b\u7684\u200b\u5355\u200b\u5b57\u7b26\u200b
        • * \u200b\u524d\u200b\u4e00\u4e2a\u200b\u91cd\u590d\u200b 0-\u200b\u65e0\u9650\u200b\u6b21\u200b
        • + \u200b\u524d\u200b\u4e00\u4e2a\u200b\u91cd\u590d\u200b 1-\u200b\u65e0\u9650\u200b\u6b21\u200b
        • [abc] abc \u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b
        • (RX1|RX2) \u200b\u8868\u8fbe\u5f0f\u200b\u4e00\u200b\u6216\u8005\u200b\u4e8c\u200b
        • ^ \u200b\u884c\u9996\u200b
        • $ \u200b\u884c\u5c3e\u200b
        • () \u200b\u6355\u83b7\u200b\uff0c\u200b\u4f4d\u4e8e\u200b\u8865\u8d27\u200b\u5185\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b\u53ef\u200b\u5728\u200b\u88ab\u200b\u66ff\u4ee3\u200b\u90e8\u5206\u200b\u7528\u200b\u30011 \\2 \\3 \u200b\u5f15\u7528\u200b
        "},{"location":"Note/Missing%20Semester/Data/#awk","title":"Awk","text":"

        awk \u200b\u662f\u200b\u4e00\u79cd\u200b\u5f3a\u5927\u200b\u7684\u200b\u6587\u672c\u5904\u7406\u200b\u5de5\u5177\u200b\uff0c\u200b\u7528\u4e8e\u200b\u4ece\u200b\u7ed3\u6784\u5316\u200b\u6587\u672c\u200b\u6570\u636e\u200b\u4e2d\u200b\u63d0\u53d6\u200b\u548c\u200b\u64cd\u4f5c\u200b\u4fe1\u606f\u200b.\u200b\u5b83\u200b\u53ef\u4ee5\u200b\u9010\u884c\u200b\u8bfb\u53d6\u200b\u8f93\u5165\u200b\u6587\u4ef6\u200b\u6216\u200b\u6807\u51c6\u200b\u8f93\u5165\u200b\u7684\u200b\u6587\u672c\u200b\uff0c\u200b\u6839\u636e\u200b\u6307\u5b9a\u200b\u7684\u200b\u6a21\u5f0f\u200b\u548c\u200b\u52a8\u4f5c\u200b\u8fdb\u884c\u200b\u5339\u914d\u200b\u3001\u200b\u5904\u7406\u200b\u548c\u200b\u8f93\u51fa\u200b.

        awk \u200b\u7684\u200b\u57fa\u672c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

        awk 'pattern { action }' file\n

        \u200b\u5176\u4e2d\u200b\uff0cpattern \u200b\u662f\u200b\u7528\u4e8e\u200b\u5339\u914d\u200b\u6587\u672c\u200b\u7684\u200b\u6a21\u5f0f\u200b\uff0caction \u200b\u662f\u200b\u5728\u200b\u5339\u914d\u200b\u5230\u200b\u7684\u200b\u6587\u672c\u200b\u4e0a\u200b\u6267\u884c\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0cfile \u200b\u662f\u200b\u5f85\u5904\u7406\u200b\u7684\u200b\u8f93\u5165\u200b\u6587\u4ef6\u200b.

        awk \u200b\u7684\u200b\u5de5\u4f5c\u200b\u539f\u7406\u200b\u662f\u200b\u9010\u884c\u200b\u8bfb\u53d6\u200b\u8f93\u5165\u200b\u6587\u672c\u200b\uff0c\u200b\u5e76\u200b\u6839\u636e\u200b\u6307\u5b9a\u200b\u7684\u200b\u6a21\u5f0f\u200b\u8fdb\u884c\u200b\u5339\u914d\u200b.\u200b\u5f53\u200b\u67d0\u884c\u200b\u5339\u914d\u200b\u5230\u200b\u6307\u5b9a\u200b\u6a21\u5f0f\u200b\u65f6\u200b\uff0c\u200b\u6267\u884c\u200b\u76f8\u5e94\u200b\u7684\u200b\u52a8\u4f5c\u200b.\u200b\u52a8\u4f5c\u200b\u53ef\u4ee5\u200b\u662f\u200b\u6253\u5370\u200b\u884c\u200b\u3001\u200b\u8ba1\u7b97\u200b\u3001\u200b\u8d4b\u503c\u200b\u53d8\u91cf\u200b\u3001\u200b\u8fdb\u884c\u200b\u6761\u4ef6\u200b\u5224\u65ad\u200b\u7b49\u200b.

        awk \u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e30\u5bcc\u200b\u7684\u200b\u5185\u7f6e\u200b\u529f\u80fd\u200b\u548c\u200b\u53d8\u91cf\u200b\uff0c\u200b\u4f7f\u200b\u5176\u200b\u80fd\u591f\u200b\u5bf9\u200b\u6587\u672c\u200b\u8fdb\u884c\u200b\u7075\u6d3b\u5904\u7406\u200b.\u200b\u4e00\u4e9b\u200b\u5e38\u7528\u200b\u7684\u200b awk \u200b\u529f\u80fd\u200b\u5305\u62ec\u200b\uff1a

        • \u200b\u5b57\u200b\u6bb5\u200b\u5206\u5272\u200b\uff1aawk \u200b\u9ed8\u8ba4\u200b\u5c06\u200b\u6bcf\u200b\u4e00\u884c\u200b\u4ee5\u200b\u7a7a\u683c\u200b\u6216\u200b\u5236\u8868\u7b26\u200b\u4e3a\u200b\u5206\u9694\u7b26\u200b\u5212\u5206\u200b\u4e3a\u200b\u591a\u4e2a\u200b\u5b57\u200b\u6bb5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b $n \u200b\u7684\u200b\u5f62\u5f0f\u200b\u5f15\u7528\u200b\u5b57\u200b\u6bb5\u200b\uff08\u200b\u4f8b\u5982\u200b $1\u3001$2\uff09.
        • \u200b\u6a21\u5f0f\u5339\u914d\u200b\uff1a\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u8fdb\u884c\u200b\u6a21\u5f0f\u5339\u914d\u200b\uff0c\u200b\u6307\u5b9a\u200b\u5339\u914d\u200b\u7684\u200b\u6587\u672c\u200b\u6a21\u5f0f\u200b.
        • \u200b\u5185\u7f6e\u200b\u53d8\u91cf\u200b\uff1aawk \u200b\u63d0\u4f9b\u200b\u4e86\u200b\u8bb8\u591a\u200b\u5185\u7f6e\u200b\u53d8\u91cf\u200b\uff0c\u200b\u5982\u200b NR\uff08\u200b\u5f53\u524d\u200b\u884c\u200b\u6570\u200b\uff09\u3001NF\uff08\u200b\u5f53\u524d\u200b\u884c\u200b\u7684\u200b\u5b57\u200b\u6bb5\u6570\u200b\uff09\u200b\u548c\u200b $0\uff08\u200b\u6574\u884c\u200b\u6587\u672c\u200b\uff09\u200b\u7b49\u200b.
        • \u200b\u5185\u7f6e\u200b\u51fd\u6570\u200b\uff1aawk \u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e30\u5bcc\u200b\u7684\u200b\u5185\u7f6e\u200b\u51fd\u6570\u200b\uff0c\u200b\u5982\u200b\u5b57\u7b26\u4e32\u200b\u5904\u7406\u51fd\u6570\u200b\u3001\u200b\u6570\u5b66\u200b\u51fd\u6570\u200b\u3001\u200b\u65e5\u671f\u200b\u51fd\u6570\u200b\u7b49\u200b.

        \u200b\u4ee5\u4e0b\u200b\u662f\u200b\u4e00\u4e2a\u200b\u7b80\u5355\u200b\u7684\u200b\u793a\u4f8b\u200b\uff0c\u200b\u5c55\u793a\u200b\u4e86\u200b\u5982\u4f55\u200b\u4f7f\u7528\u200b awk \u200b\u63d0\u53d6\u200b\u6587\u4ef6\u200b\u4e2d\u4ee5\u200b\u5192\u53f7\u200b\u5206\u9694\u200b\u7684\u200b\u7b2c\u4e00\u5217\u200b\u548c\u200b\u7b2c\u4e8c\u5217\u200b\uff0c\u200b\u5e76\u200b\u8f93\u51fa\u200b\u5b83\u4eec\u200b\uff1a

        awk -F':' '{ print $1\uff0c $2 }' file.txt\n

        awk \u200b\u662f\u200b\u4e00\u79cd\u200b\u975e\u5e38\u200b\u5b9e\u7528\u200b\u7684\u200b\u6587\u672c\u5904\u7406\u200b\u5de5\u5177\u200b\uff0c\u200b\u9002\u7528\u200b\u4e8e\u200b\u5904\u7406\u200b\u7ed3\u6784\u5316\u200b\u7684\u200b\u6587\u672c\u200b\u6570\u636e\u200b\uff0c\u200b\u5982\u200b\u65e5\u5fd7\u200b\u6587\u4ef6\u200b\u3001CSV \u200b\u6587\u4ef6\u200b\u3001\u200b\u62a5\u544a\u200b\u7b49\u200b.\u200b\u5b83\u200b\u5177\u6709\u200b\u5f3a\u5927\u200b\u7684\u200b\u529f\u80fd\u200b\u548c\u200b\u7075\u6d3b\u6027\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5927\u5927\u7b80\u5316\u200b\u6587\u672c\u5904\u7406\u200b\u4efb\u52a1\u200b\uff0c\u200b\u63d0\u9ad8\u200b\u6570\u636e\u5206\u6790\u200b\u548c\u200b\u8f6c\u6362\u200b\u7684\u200b\u6548\u7387\u200b.

        "},{"location":"Note/Missing%20Semester/Data/#aided-command-line-tools","title":"Aided Command line Tools","text":"

        \u200b\u8f85\u52a9\u200b\u4f7f\u7528\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u5de5\u5177\u200b

        • grep: \u200b\u7b5b\u9009\u200b\u51fa\u200b\u542b\u6709\u200b\u5236\u5b9a\u200b\u5185\u5bb9\u200b\u7684\u200b\u884c\u200b
        • sort: \u200b\u6392\u5e8f\u200b
        • uniq: \u200b\u53bb\u200b\u91cd\u200b
        • tail: \u200b\u622a\u56fe\u200b\u5934\u90e8\u200b\u51e0\u6761\u200b
        • head: \u200b\u622a\u53d6\u200b\u5c3e\u90e8\u200b\u51e0\u6761\u200b
        • paste: \u200b\u901a\u8fc7\u200b\u6307\u5b9a\u200b\u7684\u200b\u95f4\u9694\u200b\u5b57\u7b26\u200b\u94fe\u200b\u8fde\u63a5\u200b\u4e24\u884c\u200b
        • bc: \u200b\u8ba1\u7b97\u5668\u200b
        • xargs: \u200b\u628a\u200b stdin \u200b\u8f6c\u6362\u200b\u4e3a\u200b\u53c2\u6570\u200b\u8c03\u7528\u200b\u540e\u7eed\u200b\u7a0b\u5e8f\u200b
        "},{"location":"Note/Missing%20Semester/Git/","title":"Notes for Git","text":"

        \u200b\u7ea6\u200b 897 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        \u200b\u4e00\u4e2a\u200b\u81ea\u200b\u5e95\u5411\u4e0a\u200b\u7684\u200b\u5b66\u4e60\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u6700\u540e\u200b\u9644\u4e0a\u200b\u4e86\u200b\u5e38\u7528\u200b\u6307\u4ee4\u200b\uff0c\u200b\u6682\u65e0\u200b\u64cd\u4f5c\u200b\u6f14\u793a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b\u539f\u200b\u8bfe\u7a0b\u200b\u7f51\u7ad9\u200b

        "},{"location":"Note/Missing%20Semester/Git/#terminology","title":"Terminology","text":"

        \u200b\u5b9a\u4e49\u200b

        blob \u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u200b\u88ab\u79f0\u4f5c\u200bblob. tree \u200b\u4e00\u4e2a\u200b\u6587\u4ef6\u5939\u200b\u88ab\u79f0\u4f5c\u200btree. commit \u200b\u6574\u4e2a\u200b\u4ed3\u5e93\u200b\u7684\u200b\u5feb\u7167\u200b\u88ab\u79f0\u4f5c\u200bcommit. history commit \u200b\u7684\u200b\u6709\u200b\u5411\u200b\u65e0\u200b\u73af\u56fe\u200b\u6784\u6210\u200bhistory. object \u200b\u4e00\u4e2a\u200bobject\u200b\u662f\u200b blob\u3001tree \u200b\u6216\u8005\u200b commit\uff0c\u200b\u6bcf\u4e2a\u200b\u5bf9\u8c61\u200b\u90fd\u200b\u6709\u200b\u81ea\u5df1\u200b\u5bf9\u5e94\u200b\u7684\u200b hash. reference \u200b\u4e00\u4e2a\u200breference\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5bf9\u8c61\u200b\u7684\u200b\u522b\u540d\u200b\uff0c\u200b\u9664\u4e86\u200b\u522b\u540d\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b hash \u200b\u6765\u200b\u5f15\u7528\u200b\u4e00\u4e2a\u200b\u5bf9\u8c61\u200b. main/master main/master \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b\u7684\u200b reference \u200b\u603b\u662f\u200b\u6307\u5411\u200b\u5f00\u53d1\u200b\u4e2d\u200b\u7684\u200b\u6700\u65b0\u200b\u7a33\u5b9a\u200b\u7248\u672c\u200b. HEAD HEAD \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b\u5f15\u7528\u200b\u6307\u5411\u200b\u6211\u4eec\u200b\u76ee\u524d\u200b\u5728\u200b\u5386\u53f2\u200b\u4e2d\u200b\u7684\u200b\u4f4d\u7f6e\u200b. Git repository \u200b\u4e00\u4e2a\u200b Git repository* \u200b\u662f\u200b object \u200b\u548c\u200b reference \u200b\u7684\u200b\u96c6\u5408\u200b. Staging area Staging area \u200b\u662f\u200b\u4e00\u79cd\u200b\u673a\u5236\u200b\u6765\u200b\u8ba9\u200b\u6211\u4eec\u200b\u6307\u5b9a\u200b\u54ea\u4e9b\u200b\u5bf9\u8c61\u200b\u8981\u200b\u88ab\u200b commit\uff0c \u200b\u800c\u200b\u975e\u200b\u6574\u4e2a\u200b\u4ed3\u5e93\u200b."},{"location":"Note/Missing%20Semester/Git/#git-data-model","title":"Git Data Model","text":"

        \u200b\u9996\u5148\u200b\u5b9a\u4e49\u6570\u636e\u200b\u5bf9\u8c61\u200b

        // a file is a bunch of bytes\ntype blob = array<byte>\n\n// a directory contains named files and directories\ntype tree = map<string\uff0c tree | blob>\n\n// a commit has parents\uff0c metadata\uff0c and the top-level tree\ntype commit = struct {\n    parents: array<commit>\n    author: string\n    message: string\n    snapshot: tree\n}\n\n//An object is a blob\uff0ctree\uff0cor commit\ntype object = blob | tree | commit\n

        \u200b\u5728\u200b Git \u200b\u5b58\u50a8\u200b\u7ed3\u6784\u200b\u4e2d\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u5bf9\u8c61\u200b\u5bf9\u5e94\u200b\u4e00\u4e2a\u200b hash

        objects = map<string\uff0c object>\n\ndef store(object):\n    id = sha1(object)\n    objects[id] = object\n\ndef load(id):\n    return objects[id]\n

        "},{"location":"Note/Missing%20Semester/Git/#commands","title":"Commands","text":"

        Basic

        • git help <command> : get help for a git command
        • git init : creates a new git repo\uff0c with data stored in the .git directory
        • git status : tells you what\u2019s going on
        • git add <filename> : adds files to staging area
        • git commit : creates a new commit
        • git log : shows a flattened log of history
        • git log --all --graph --decorate : visualizes history as a DAG
        • git diff <filename> : show the differences between current file and HEAD version file
        • git diff <revision> <filename> : shows differences between current file and specified snapshot
        • git diff <reversin> <reversion> <filename> shows the differences between two specified version of file
        • git checkout <revision> : updates HEAD and current branch
        • git checkout <filename> : erase all the changes we made after the HEAD version for this file
        • git cat-file -p <hash> : The instruction to catch a tree or blob

        Branching and Merging

        • git branch: shows branches
        • git branch <name>: creates a branch
        • git checkout -b <name>: creates a branch and switches to it
        • same as git branch <name>; git checkout <name>
        • git merge <revision> : merges into current branch;wait for latter adjustments when conflictions occur(But the file has been changed already)
        • git merge --abort : erase the changes git try to make when an merge conflict occurs
        • git merge --continue : continue to merge after you fix the merge confliction
        • git mergetool: use a fancy tool to help resolve merge conflicts
        • git rebase: rebase set of patches onto a new base

        More on rebase

        Commonly used to \"move\" an entire branch to another base\uff0c creating copies of the commits in the new location.

        • Rebase the current branch on top of another specified branch: git rebase new_base_branch

        • Start an interactive rebase\uff0c which allows the commits to be reordered\uff0c omitted\uff0c combined or modified: git rebase -i target_base_branch_or_commit_hash

        • Continue a rebase that was interrupted by a merge failure\uff0c after editing conflicting files: git rebase --continue

        • Continue a rebase that was paused due to merge conflicts\uff0c by skipping the conflicted commit: git rebase --skip

        • Abort a rebase in progress (e.g. if it is interrupted by a merge conflict): git rebase --abort

        • Move part of the current branch onto a new base\uff0c providing the old base to start from: git rebase --onto new_base old_base

        • Reapply the last 5 commits in-place\uff0c stopping to allow them to be reordered\uff0c omitted\uff0c combined or modified: git rebase -i HEAD~5

        • Auto-resolve any conflicts by favoring the working branch version (theirs keyword has reversed meaning in this case): git rebase -X theirs branch_name

        Remotes

        • git remote: list remotes
        • git remote add <name> <url>: add a remote ;name is origin by convention if we have only one remote; url can be a web address or a local directory
        • git push <remote> <local branch>:<remote branch>: send objects to remote\uff0c and update remote reference
        • git branch --set-upstream-to=<remote>/<remote branch>: set up correspondence between local and remote branch
        • git fetch: retrieve objects/references from a remote; be aware of the changes pushed here from the remote
        • git pull: same as git fetch; git merge
        • git clone: download repository from remote

        Undo

        • git commit --amend: edit a commit\u2019s contents/message
        • git reset HEAD <file>: unstage a file
        • git checkout <file>: discard changes

        Advanced Git

        • git config: Git is highly customizable
        • git clone --depth=1: shallow clone\uff0c without entire version history
        • git add -p: interactive staging
        • git rebase -i: interactive rebasing
        • git blame: show who last edited which line
        • git stash: temporarily remove modifications to working directory
        • git bisect: binary search history (e.g. for regressions)
        • .gitignore: specify intentionally untracked files to ignore
        "},{"location":"Note/Missing%20Semester/Shell/","title":"Shell Notes (revisited)","text":"

        \u200b\u7ea6\u200b 2838 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 9 \u200b\u5206\u949f\u200b

        \u200b\u4e00\u4e2a\u200b\u79bb\u6563\u200b\u7684\u200b\u77e5\u8bc6\u200b\u5217\u8868\u200b

        "},{"location":"Note/Missing%20Semester/Shell/#_1","title":"\u57fa\u7840\u77e5\u8bc6","text":""},{"location":"Note/Missing%20Semester/Shell/#_2","title":"\u5185\u7f6e\u200b\u53d8\u91cf\u200b/\u200b\u7279\u6b8a\u200b\u53d8\u91cf","text":"$0$1\uff0c $2\uff0c $3\uff0c ...$@$#$?$$$USER$HOME$PWD$HOSTNAME$RANDOM$IFS$PATH

        \u200b\u5f53\u524d\u200b\u811a\u672c\u200b\u7684\u200b\u540d\u79f0\u200b.\u200b\u5bf9\u4e8e\u200b\u88ab\u200b\u6267\u884c\u200b\u7684\u200b\u811a\u672c\u200b\uff0c\u200b\u5b83\u200b\u662f\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b\u7684\u200b\u8def\u5f84\u200b\u548c\u200b\u540d\u79f0\u200b.

        \u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u53d8\u91cf\u200b\uff0c\u200b\u8868\u793a\u200b\u811a\u672c\u200b\u6216\u200b\u51fd\u6570\u200b\u7684\u200b\u53c2\u6570\u200b.\\(1 \u200b\u8868\u793a\u200b\u7b2c\u4e00\u4e2a\u200b\u53c2\u6570\u200b\uff0c\\)2 \u200b\u8868\u793a\u200b\u7b2c\u4e8c\u4e2a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4f9d\u6b64\u7c7b\u63a8\u200b.

        \u200b\u8868\u793a\u200b\u6240\u6709\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u7684\u200b\u5217\u8868\u200b.\u200b\u5728\u200b\u811a\u672c\u200b\u4e2d\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\"$@\"\u200b\u5c06\u200b\u6240\u6709\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u53c2\u6570\u4f20\u9012\u200b\u7ed9\u200b\u5176\u4ed6\u200b\u547d\u4ee4\u200b\u6216\u200b\u51fd\u6570\u200b.

        \u200b\u8868\u793a\u200b\u4f4d\u7f6e\u200b\u53c2\u6570\u200b\u7684\u200b\u6570\u91cf\u200b.

        \u200b\u4e0a\u200b\u4e00\u4e2a\u200b\u547d\u4ee4\u200b\u7684\u200b\u9000\u51fa\u200b\u72b6\u6001\u200b.\u200b\u5982\u679c\u200b\u547d\u4ee4\u200b\u6210\u529f\u200b\u6267\u884c\u200b\uff0c\u200b\u5219\u200b\u5176\u503c\u200b\u4e3a\u200b 0\uff0c\u200b\u5426\u5219\u200b\u4e3a\u200b\u975e\u96f6\u503c\u200b.

        \u200b\u5f53\u524d\u200b\u811a\u672c\u200b\u7684\u200b\u8fdb\u7a0b\u200b ID\uff08PID\uff09.

        \u200b\u5f53\u524d\u200b\u7528\u6237\u200b\u7684\u200b\u7528\u6237\u540d\u200b.

        \u200b\u5f53\u524d\u200b\u7528\u6237\u200b\u7684\u200b\u4e3b\u76ee\u5f55\u200b\u8def\u5f84\u200b.

        \u200b\u5f53\u524d\u5de5\u4f5c\u200b\u76ee\u5f55\u200b\u7684\u200b\u8def\u5f84\u200b.

        \u200b\u5f53\u524d\u200b\u4e3b\u673a\u200b\u7684\u200b\u4e3b\u673a\u540d\u200b.

        \u200b\u4e00\u4e2a\u200b\u968f\u673a\u200b\u6574\u6570\u200b.

        \u200b\u5185\u90e8\u200b\u5b57\u200b\u6bb5\u200b\u5206\u9694\u7b26\u200b\uff0c\u200b\u7528\u4e8e\u200b\u6307\u5b9a\u200b\u7531\u200b\u54ea\u4e2a\u200b\u5b57\u7b26\u200b\u5206\u5272\u200b\u8f93\u5165\u200b\u6570\u636e\u200b\u7684\u200b\u5b57\u200b\u6bb5\u200b.\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0c\u200b\u5b83\u200b\u5305\u542b\u200b\u7a7a\u683c\u200b\u3001\u200b\u5236\u8868\u7b26\u200b\u548c\u200b\u6362\u884c\u7b26\u200b.

        \u200b\u4e00\u4e2a\u200b\u7531\u200b\u5192\u53f7\u200b\u5206\u9694\u200b\u7684\u200b\u76ee\u5f55\u200b\u5217\u8868\u200b\uff08\u200b\u73af\u5883\u53d8\u91cf\u200b\uff09\uff0cshell \u200b\u5728\u200b\u5176\u4e2d\u200b\u67e5\u627e\u200b\u547d\u4ee4\u200b.

        "},{"location":"Note/Missing%20Semester/Shell/#_3","title":"\u91cd\u5b9a\u5411","text":">>><2>2>>&>\u200b\u6216\u200b&>>

        \u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u91cd\u5b9a\u5411\u200b\u5230\u200b\u6587\u4ef6\u200b.\u200b\u5982\u679c\u200b\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff0c\u200b\u5219\u200b\u4f1a\u200b\u521b\u5efa\u200b\u8be5\u200b\u6587\u4ef6\u200b\uff1b\u200b\u5982\u679c\u200b\u6587\u4ef6\u200b\u5df2\u200b\u5b58\u5728\u200b\uff0c\u200b\u5219\u200b\u4f1a\u200b\u8986\u76d6\u6587\u4ef6\u200b\u5185\u5bb9\u200b.

        \u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u8ffd\u52a0\u200b\u5230\u200b\u6587\u4ef6\u200b\u7684\u200b\u672b\u5c3e\u200b.\u200b\u5982\u679c\u200b\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff0c\u200b\u5219\u200b\u4f1a\u200b\u521b\u5efa\u200b\u8be5\u200b\u6587\u4ef6\u200b.

        \u200b\u5c06\u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\u4f5c\u4e3a\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u5165\u200b.

        \u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u9519\u8bef\u200b\u8f93\u51fa\u200b\u91cd\u5b9a\u5411\u200b\u5230\u200b\u6587\u4ef6\u200b.

        \u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u9519\u8bef\u200b\u8f93\u51fa\u200b\u8ffd\u52a0\u200b\u5230\u200b\u6587\u4ef6\u200b\u7684\u200b\u672b\u5c3e\u200b.

        \u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u548c\u200b\u6807\u51c6\u200b\u9519\u8bef\u200b\u8f93\u51fa\u200b\u5408\u5e76\u200b\u91cd\u5b9a\u5411\u200b\u5230\u200b\u6587\u4ef6\u200b.

        "},{"location":"Note/Missing%20Semester/Shell/#_4","title":"\u6587\u4ef6\u200b\u6743\u9650","text":"\u6587\u4ef6\u7c7b\u578b\u200b\u6743\u9650\u200b\u6743\u9650\u200b\u5b57\u7b26\u4e32\u200b\u6743\u9650\u200b\u6570\u5b57\u200b\u6743\u9650\u200b\u4fee\u6539\u200b

        -\uff1a\u200b\u666e\u901a\u200b\u6587\u4ef6\u200b d\uff1a\u200b\u76ee\u5f55\u200b l\uff1a\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b\uff08\u200b\u8f6f\u200b\u94fe\u63a5\u200b\uff09 c\uff1a\u200b\u5b57\u7b26\u200b\u8bbe\u5907\u200b\u6587\u4ef6\u200b b\uff1a\u200b\u5757\u200b\u8bbe\u5907\u200b\u6587\u4ef6\u200b s\uff1a\u200b\u5957\u200b\u63a5\u5b57\u200b\uff08socket\uff09\u200b\u6587\u4ef6\u200b p\uff1a\u200b\u547d\u540d\u200b\u7ba1\u9053\u200b\uff08FIFO\uff09\u200b\u6587\u4ef6\u200b

        r\uff1a\u200b\u8bfb\u53d6\u200b\u6743\u9650\u200b w\uff1a\u200b\u5199\u5165\u200b\u6743\u9650\u200b x\uff1a\u200b\u6267\u884c\u200b\u6743\u9650\u200b

        \u200b\u7531\u200b 10 \u200b\u4e2a\u5b57\u7b26\u200b\u7ec4\u6210\u200b\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u6587\u4ef6\u7c7b\u578b\u200b\uff0c\u200b\u540e\u9762\u200b\u4e09\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u6587\u4ef6\u200b\u6240\u6709\u8005\u200b\u7684\u200b\u6743\u9650\u200b\uff0c\u200b\u518d\u200b\u540e\u9762\u200b\u4e09\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u6587\u4ef6\u200b\u6240\u5c5e\u200b\u7ec4\u200b\u7684\u200b\u6743\u9650\u200b\uff0c\u200b\u6700\u540e\u200b\u4e09\u4e2a\u200b\u5b57\u7b26\u200b\u8868\u793a\u200b\u5176\u4ed6\u200b\u7528\u6237\u200b\u7684\u200b\u6743\u9650\u200b. \u200b\u4f8b\u5982\u200b\uff0c-rw-r--r--\u200b\u8868\u793a\u200b\u666e\u901a\u200b\u6587\u4ef6\u200b\uff0c\u200b\u6587\u4ef6\u200b\u6240\u6709\u8005\u200b\u5177\u6709\u200b\u8bfb\u53d6\u200b\u548c\u200b\u5199\u5165\u200b\u6743\u9650\u200b\uff0c\u200b\u6587\u4ef6\u200b\u6240\u5c5e\u200b\u7ec4\u548c\u200b\u5176\u4ed6\u200b\u7528\u6237\u200b\u5177\u6709\u200b\u8bfb\u53d6\u200b\u6743\u9650\u200b.

        \u200b\u7531\u200b\u4e09\u4e2a\u200b\u516b\u8fdb\u5236\u200b\u6570\u5b57\u200b\u7ec4\u6210\u200b\uff0c\u200b\u6bcf\u4e2a\u200b\u6570\u5b57\u200b\u8868\u793a\u200b\u6587\u4ef6\u200b\u6240\u6709\u8005\u200b\u3001\u200b\u6587\u4ef6\u200b\u6240\u5c5e\u200b\u7ec4\u548c\u200b\u5176\u4ed6\u200b\u7528\u6237\u200b\u7684\u200b\u6743\u9650\u200b. \u200b\u6bcf\u4e2a\u200b\u6570\u5b57\u200b\u7684\u200b\u8ba1\u7b97\u65b9\u6cd5\u200b\u662f\u200b\u5c06\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4e09\u4e2a\u200b\u6743\u9650\u200b\u8f6c\u6362\u200b\u4e3a\u200b\u516b\u8fdb\u5236\u200b\u6570\u200b\u62fc\u63a5\u200b\u8d77\u6765\u200b. \u200b\u4f8b\u5982\u200b\uff0c-rw-r--r--\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6743\u9650\u200b\u6570\u5b57\u200b\u4e3a\u200b 644\uff0c-rwxr-xr-x \u200b\u5bf9\u5e94\u200b\u7684\u200b\u6743\u9650\u200b\u6570\u5b57\u200b\u4e3a\u200b 755.

        chmod\uff1a\u200b\u7528\u4e8e\u200b\u66f4\u6539\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u7684\u200b\u6743\u9650\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u6570\u5b57\u200b\u8868\u793a\u6cd5\u200b\uff08\u200b\u5982\u200b chmod 755 file.txt\uff09\u200b\u6216\u200b\u7b26\u53f7\u200b\u8868\u793a\u6cd5\u200b\uff08\u200b\u5982\u200b chmod u+x file.txt\uff09\u200b\u6765\u200b\u4fee\u6539\u200b\u6743\u9650\u200b. chown\uff1a\u200b\u7528\u4e8e\u200b\u66f4\u6539\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u7684\u200b\u6240\u6709\u8005\u200b. chgrp\uff1a\u200b\u7528\u4e8e\u200b\u66f4\u6539\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u7684\u200b\u6240\u5c5e\u200b\u7ec4\u200b. umask\uff1a\u200b\u8bbe\u7f6e\u200b\u65b0\u521b\u5efa\u200b\u6587\u4ef6\u200b\u548c\u200b\u76ee\u5f55\u200b\u7684\u200b\u9ed8\u8ba4\u200b\u6743\u9650\u200b\u63a9\u7801\u200b.

        "},{"location":"Note/Missing%20Semester/Shell/#_5","title":"\u6587\u4ef6\u200b\u64cd\u4f5c","text":"teetouchcatcpmvrmlnmkdirrmdirfindgrepalias

        command | tee [OPTION]... [FILE]...\n
        tee\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5e38\u7528\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u5de5\u5177\u200b\uff0c\u200b\u7528\u4e8e\u200b\u4ece\u200b\u6807\u51c6\u200b\u8f93\u5165\u200b\u8bfb\u53d6\u6570\u636e\u200b\u5e76\u200b\u5c06\u200b\u5176\u200b\u540c\u65f6\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b\u548c\u200b\u6307\u5b9a\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e2d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -a\uff1a\u200b\u4ee5\u200b\u8ffd\u52a0\u200b\u6a21\u5f0f\u200b\u5c06\u200b\u8f93\u51fa\u200b\u9644\u52a0\u200b\u5230\u200b\u6587\u4ef6\u200b\u4e2d\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u8986\u76d6\u6587\u4ef6\u200b\u5185\u5bb9\u200b. -i\uff1a\u200b\u5ffd\u7565\u200b\u4e2d\u65ad\u200b\u4fe1\u53f7\u200b\uff08SIGINT\uff09\uff0c\u200b\u5373\u4f7f\u200b\u6536\u5230\u200b\u4e2d\u65ad\u200b\u4fe1\u53f7\u200b\u4e5f\u200b\u7ee7\u7eed\u200b\u8fd0\u884c\u200b. -p\uff1a\u200b\u4f7f\u7528\u200b\u539f\u59cb\u6570\u636e\u200b\u5757\u200b\u5927\u5c0f\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u6309\u884c\u200b\u7f13\u51b2\u200b\u8f93\u51fa\u200b. -u\uff1a\u200b\u7981\u7528\u200b\u8f93\u51fa\u200b\u7f13\u51b2\u533a\u200b\uff0c\u200b\u7acb\u5373\u200b\u5c06\u200b\u6570\u636e\u200b\u5199\u5165\u200b\u6587\u4ef6\u200b.

        touch [OPTION]... FILE...\n
        \u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u7a7a\u200b\u6587\u4ef6\u200b\uff0c\u200b\u6216\u8005\u200b\u66f4\u65b0\u200b\u5df2\u200b\u5b58\u5728\u200b\u6587\u4ef6\u200b\u7684\u200b\u6700\u540e\u200b\u66f4\u6539\u200b\u65f6\u95f4\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -a\uff1a\u200b\u4ec5\u200b\u66f4\u6539\u200b\u8bbf\u95ee\u200b\u65f6\u95f4\u200b. -c\uff1a\u200b\u4ec5\u200b\u5728\u200b\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\u65f6\u624d\u200b\u521b\u5efa\u200b\u6587\u4ef6\u200b. -d\uff1a\u200b\u4f7f\u7528\u200b\u6307\u5b9a\u200b\u7684\u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5f53\u524d\u200b\u65f6\u95f4\u200b. -m\uff1a\u200b\u4ec5\u200b\u66f4\u6539\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b. -r\uff1a\u200b\u4f7f\u7528\u200b\u6307\u5b9a\u200b\u6587\u4ef6\u200b\u7684\u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5f53\u524d\u200b\u65f6\u95f4\u200b. -t\uff1a\u200b\u4f7f\u7528\u200b\u6307\u5b9a\u200b\u7684\u200b\u65e5\u671f\u200b\u65f6\u95f4\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u5f53\u524d\u200b\u65f6\u95f4\u200b.

        cat [OPTION]... [FILE]...\n
        \u200b\u5c06\u200b\u6587\u4ef6\u200b\u7684\u200b\u5185\u5bb9\u200b\u8f93\u51fa\u200b\u5230\u200b\u6807\u51c6\u200b\u8f93\u51fa\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -n\uff1a\u200b\u8f93\u51fa\u200b\u884c\u53f7\u200b. -b\uff1a\u200b\u8f93\u51fa\u200b\u884c\u53f7\u200b\uff0c\u200b\u4f46\u200b\u4e0d\u200b\u5bf9\u200b\u7a7a\u884c\u200b\u7f16\u53f7\u200b. -s\uff1a\u200b\u5c06\u200b\u8fde\u7eed\u200b\u7684\u200b\u7a7a\u884c\u200b\u538b\u7f29\u6210\u200b\u4e00\u4e2a\u200b\u7a7a\u884c\u200b.

        cp [OPTION]... SOURCE... DIRECTORY\ncp [OPTION]... SOURCE... DEST\ncp [OPTION]... -t DIRECTORY SOURCE...\n
        \u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u590d\u5236\u5230\u200b\u6307\u5b9a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e2d\u200b\uff0c\u200b\u6216\u8005\u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u590d\u5236\u5230\u200b\u6307\u5b9a\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e2d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -a\uff1a\u200b\u4fdd\u7559\u200b\u6587\u4ef6\u200b\u7684\u200b\u6240\u6709\u200b\u5c5e\u6027\u200b\uff0c\u200b\u9012\u5f52\u200b\u590d\u5236\u200b\u76ee\u5f55\u200b. -i\uff1a\u200b\u5728\u200b\u8986\u76d6\u6587\u4ef6\u200b\u4e4b\u524d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -r\uff1a\u200b\u9012\u5f52\u200b\u590d\u5236\u200b\u76ee\u5f55\u200b. -u\uff1a\u200b\u4ec5\u200b\u5728\u200b\u6e90\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u6bd4\u200b\u76ee\u6807\u200b\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u8f83\u65b0\u65f6\u200b\u624d\u200b\u590d\u5236\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u590d\u5236\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

        mv [OPTION]... SOURCE... DIRECTORY\nmv [OPTION]... SOURCE... DEST\n
        \u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u79fb\u52a8\u200b\u5230\u200b\u6307\u5b9a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e2d\u200b\uff0c\u200b\u6216\u8005\u200b\u5c06\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b\u91cd\u547d\u540d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -i\uff1a\u200b\u5728\u200b\u8986\u76d6\u6587\u4ef6\u200b\u4e4b\u524d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -u\uff1a\u200b\u4ec5\u200b\u5728\u200b\u6e90\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u6bd4\u200b\u76ee\u6807\u200b\u6587\u4ef6\u200b\u7684\u200b\u4fee\u6539\u200b\u65f6\u95f4\u200b\u8f83\u65b0\u65f6\u200b\u624d\u200b\u79fb\u52a8\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u79fb\u52a8\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

        rm [OPTION]... FILE...\n
        \u200b\u5220\u9664\u200b\u6587\u4ef6\u200b\u6216\u200b\u76ee\u5f55\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -f\uff1a\u200b\u5f3a\u5236\u200b\u5220\u9664\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4e0d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -i\uff1a\u200b\u5728\u200b\u5220\u9664\u200b\u6587\u4ef6\u200b\u4e4b\u524d\u200b\u63d0\u793a\u200b\u7528\u6237\u200b\u786e\u8ba4\u200b. -r\uff1a\u200b\u9012\u5f52\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u5220\u9664\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

        ln [OPTION]... [-T] TARGET LINK_NAME\nln [OPTION]... TARGET\nln [OPTION]... TARGET... DIRECTORY\nln [OPTION]... -t DIRECTORY TARGET...\n
        \u200b\u521b\u5efa\u200b\u786c\u200b\u94fe\u63a5\u200b\u6216\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -s\uff1a\u200b\u521b\u5efa\u200b\u7b26\u53f7\u200b\u94fe\u63a5\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u521b\u5efa\u200b\u94fe\u63a5\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

        mkdir [OPTION]... DIRECTORY...\n
        \u200b\u521b\u5efa\u200b\u76ee\u5f55\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -m\uff1a\u200b\u8bbe\u7f6e\u200b\u76ee\u5f55\u200b\u7684\u200b\u6743\u9650\u200b. -p\uff1a\u200b\u9012\u5f52\u200b\u521b\u5efa\u200b\u76ee\u5f55\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u521b\u5efa\u200b\u76ee\u5f55\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

        rmdir [OPTION]... DIRECTORY...\n
        \u200b\u5220\u9664\u200b\u7a7a\u76ee\u5f55\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -p\uff1a\u200b\u9012\u5f52\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b. -v\uff1a\u200b\u663e\u793a\u200b\u5220\u9664\u200b\u76ee\u5f55\u200b\u7684\u200b\u8fdb\u5ea6\u200b.

        find [OPTION]... [PATH...] [EXPRESSION]\n
        \u200b\u5728\u200b\u6307\u5b9a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e2d\u200b\u67e5\u627e\u6587\u4ef6\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -name\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u540d\u200b\u67e5\u627e\u200b. -type\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u7c7b\u578b\u200b\u67e5\u627e\u200b. -size\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u5927\u5c0f\u200b\u67e5\u627e\u200b. -perm\uff1a\u200b\u6309\u7167\u200b\u6587\u4ef6\u200b\u6743\u9650\u200b\u67e5\u627e\u200b. -exec\uff1a\u200b\u5bf9\u200b\u67e5\u627e\u200b\u5230\u200b\u7684\u200b\u6587\u4ef6\u200b\u6267\u884c\u200b\u6307\u5b9a\u200b\u7684\u200b\u547d\u4ee4\u200b.

        grep [OPTION]... PATTERN [FILE]...\n
        \u200b\u5728\u200b\u6587\u4ef6\u200b\u4e2d\u200b\u67e5\u627e\u200b\u5339\u914d\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -i\uff1a\u200b\u5ffd\u7565\u200b\u5927\u5c0f\u5199\u200b. -v\uff1a\u200b\u53cd\u5411\u200b\u5339\u914d\u200b. -n\uff1a\u200b\u8f93\u51fa\u200b\u884c\u53f7\u200b. -c\uff1a\u200b\u8f93\u51fa\u200b\u5339\u914d\u200b\u7684\u200b\u884c\u6570\u200b. -r\uff1a\u200b\u9012\u5f52\u200b\u67e5\u627e\u200b.

        alias [OPTION]... [NAME[=VALUE]]...\n
        \u200b\u521b\u5efa\u200b\u547d\u4ee4\u200b\u522b\u540d\u200b. \u200b\u5e38\u7528\u200b\u9009\u9879\u200b\u5305\u62ec\u200b\uff1a -p\uff1a\u200b\u663e\u793a\u200b\u6240\u6709\u200b\u522b\u540d\u200b. -r\uff1a\u200b\u5220\u9664\u200b\u6307\u5b9a\u200b\u7684\u200b\u522b\u540d\u200b.

        "},{"location":"Note/Missing%20Semester/Shell/#_6","title":"\u811a\u672c\u200b\u8bed\u6cd5","text":""},{"location":"Note/Missing%20Semester/Shell/#shebang","title":"SheBang","text":"

        Bash \u200b\u811a\u672c\u200b\u901a\u5e38\u200b\u4ee5\u200b shebang \u200b\u4f5c\u4e3a\u200b\u811a\u672c\u200b\u6587\u4ef6\u200b\u7684\u200b\u7b2c\u4e00\u884c\u200b\uff0c\u200b\u6307\u5b9a\u200b\u8981\u200b\u7528\u4e8e\u200b\u89e3\u91ca\u200b\u811a\u672c\u200b\u7684\u200b\u89e3\u91ca\u5668\u200b.\u200b\u5e38\u89c1\u200b\u7684\u200b shebang \u200b\u4e3a\u200b#!/bin/bash\uff0c\u200b\u8868\u793a\u200b\u4f7f\u7528\u200b Bash \u200b\u89e3\u91ca\u5668\u200b\u89e3\u91ca\u200b\u811a\u672c\u200b.

        \u200b\u73af\u5883\u53d8\u91cf\u200b\u8def\u5f84\u200b

        \u200b\u5982\u679c\u200b\u8981\u200b\u5728\u200b\u811a\u672c\u200b\u4e2d\u200b\u4f7f\u7528\u200b shebang\uff0c\u200b\u6700\u597d\u200b\u4f7f\u7528\u200b#!/usr/bin/env bash\uff0c\u200b\u8fd9\u6837\u200b\u53ef\u4ee5\u200b\u907f\u514d\u200b\u4f7f\u7528\u200b\u7edd\u5bf9\u8def\u5f84\u200b\uff0c\u200b\u800c\u662f\u200b\u4f7f\u7528\u200b\u73af\u5883\u53d8\u91cf\u200b\u4e2d\u200b\u7684\u200b\u8def\u5f84\u200b.

        "},{"location":"Note/Missing%20Semester/Shell/#_7","title":"\u53d8\u91cf","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u53d8\u91cf\u200b\u4e0d\u200b\u9700\u8981\u200b\u58f0\u660e\u200b\uff0c\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\u5373\u53ef\u200b.\u200b\u53d8\u91cf\u540d\u200b\u548c\u200b\u7b49\u200b\u53f7\u200b\u4e4b\u95f4\u200b\u4e0d\u80fd\u200b\u6709\u200b\u7a7a\u683c\u200b\uff0c\u200b\u7b49\u200b\u53f7\u200b\u540e\u9762\u200b\u7684\u200b\u503c\u200b\u4e0d\u80fd\u200b\u4f7f\u7528\u200b\u7a7a\u683c\u200b\u5305\u56f4\u200b.\u200b\u53d8\u91cf\u540d\u200b\u4e00\u822c\u200b\u4f7f\u7528\u200b\u5927\u5199\u5b57\u6bcd\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e0d\u662f\u200b\u5fc5\u987b\u200b\u7684\u200b.

        "},{"location":"Note/Missing%20Semester/Shell/#_8","title":"\u547d\u4ee4\u200b\u66ff\u6362","text":"

        \u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u7528\u4e8e\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b.\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u7684\u200b\u8bed\u6cd5\u200b\u6709\u200b\u4e24\u79cd\u200b\uff1a

        • `command`
        • $(command)
        "},{"location":"Note/Missing%20Semester/Shell/#_9","title":"\u8fdb\u7a0b\u200b\u66ff\u6362","text":"

        \u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u7528\u4e8e\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u4f5c\u4e3a\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u547d\u4ee4\u200b\u7684\u200b\u53c2\u6570\u200b.\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u7684\u200b\u8bed\u6cd5\u200b\u4e3a\u200b<(command). \u200b\u53ef\u4ee5\u200b\u5c06\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u770b\u4f5c\u200b\u662f\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u7684\u200b\u7279\u6b8a\u200b\u5f62\u5f0f\u200b\uff0c\u200b\u547d\u4ee4\u200b\u66ff\u6362\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b\uff0c\u200b\u800c\u200b\u8fdb\u7a0b\u200b\u66ff\u6362\u200b\u5c06\u200b\u547d\u4ee4\u200b\u7684\u200b\u8f93\u51fa\u200b\u7ed3\u679c\u200b\u4f5c\u4e3a\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u547d\u4ee4\u200b\u7684\u200b\u53c2\u6570\u200b.

        \u200b\u4f8b\u5982\u200b\uff1afiles=$(ls)

        "},{"location":"Note/Missing%20Semester/Shell/#_10","title":"\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55","text":"

        \u200b\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55\u200b\u7528\u4e8e\u200b\u751f\u6210\u200b\u4e00\u4e2a\u200b\u5b57\u7b26\u4e32\u200b\u5217\u8868\u200b.\u200b\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55\u200b\u7684\u200b\u8bed\u6cd5\u200b\u4e3a\u200b{string1\uff0cstring2\uff0c...}.

        \u200b\u4f8b\u5982\u200b\uff1aecho {1..10}

        \u200b\u82b1\u200b\u62ec\u53f7\u200b\u6269\u5c55\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b\u7b1b\u5361\u5c14\u200b\u79ef\u200b\u8fd0\u7b97\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u4e3a\u200b{string1\uff0cstring2\uff0c...}{string1\uff0cstring2\uff0c...}.

        "},{"location":"Note/Missing%20Semester/Shell/#_11","title":"\u901a\u914d\u7b26","text":"

        \u200b\u901a\u914d\u7b26\u200b\u7528\u4e8e\u200b\u5339\u914d\u200b\u6587\u4ef6\u540d\u200b.\u200b\u5e38\u89c1\u200b\u7684\u200b\u901a\u914d\u7b26\u200b\u5305\u62ec\u200b\uff1a

        • *\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u6570\u91cf\u200b\u7684\u200b\u4efb\u610f\u200b\u5b57\u7b26\u200b.
        • ?\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u7b26\u200b.
        • [characters]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c5e\u4e8e\u200b\u5b57\u7b26\u96c6\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
        • [!characters]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u5c5e\u4e8e\u200b\u5b57\u7b26\u96c6\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
        • [[:class:]]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u5b57\u7b26\u200b\u7c7b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
        • [^class]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u5b57\u7b26\u200b\u7c7b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
        • [x-y]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u8303\u56f4\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
        • [^x-y]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u4e0d\u200b\u5c5e\u4e8e\u200b\u6307\u5b9a\u200b\u8303\u56f4\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u200b.
        • [:alnum:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u6bcd\u200b\u6216\u200b\u6570\u5b57\u200b.
        • [:alpha:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u6bcd\u200b.
        • [:blank:]\uff1a\u200b\u5339\u914d\u200b\u7a7a\u683c\u200b\u6216\u200b\u5236\u8868\u7b26\u200b.
        • [:digit:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u6570\u5b57\u200b.
        • [:lower:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5c0f\u5199\u5b57\u6bcd\u200b.
        • [:upper:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5927\u5199\u5b57\u6bcd\u200b.
        • [:space:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u7a7a\u767d\u200b\u5b57\u7b26\u200b.
        • [:punct:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u6807\u70b9\u7b26\u53f7\u200b.
        • [:word:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5b57\u6bcd\u200b\u3001\u200b\u6570\u5b57\u200b\u6216\u200b\u4e0b\u5212\u7ebf\u200b.
        • [:xdigit:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u5341\u516d\u8fdb\u5236\u200b\u6570\u5b57\u200b.
        • [:graph:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u56fe\u5f62\u200b\u5b57\u7b26\u200b.
        • [:print:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u53ef\u200b\u6253\u5370\u200b\u5b57\u7b26\u200b.
        • [:cntrl:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b\u63a7\u5236\u5b57\u7b26\u200b.
        • [:ascii:]\uff1a\u200b\u5339\u914d\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u200b ASCII \u200b\u5b57\u7b26\u200b.
        "},{"location":"Note/Missing%20Semester/Shell/#_12","title":"\u7b97\u672f\u200b\u8fd0\u7b97","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u7b97\u672f\u200b\u8fd0\u7b97\u200b\u4f7f\u7528\u200b$((expression))\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho $((1+1))

        "},{"location":"Note/Missing%20Semester/Shell/#_13","title":"\u903b\u8f91\u8fd0\u7b97","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u903b\u8f91\u8fd0\u7b97\u200b\u4f7f\u7528\u200b&&\u3001||\u200b\u548c\u200b!\uff0c\u200b\u4f8b\u5982\u200b\uff1a[ -d /tmp ] && echo \"Directory exists\"

        "},{"location":"Note/Missing%20Semester/Shell/#_14","title":"\u6761\u4ef6\u200b\u5224\u65ad","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u6761\u4ef6\u200b\u5224\u65ad\u200b\u4f7f\u7528\u200bif\u200b\u8bed\u53e5\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

        if [[ condition ]]; then\n    #statements\nelif [[ condition ]]; then\n    #statements\nelse\n    #statements\nfi\n
        "},{"location":"Note/Missing%20Semester/Shell/#_15","title":"\u5faa\u73af","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u5faa\u73af\u200b\u4f7f\u7528\u200bfor\u200b\u548c\u200bwhile\u200b\u8bed\u53e5\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

        for (( i = 0; i < 10; i++ )); do\n    #statements\ndone\n\nfor i in {1..10}; do\n    #statements\ndone\n\nfor i in $(ls); do\n    #statements\ndone\n\nwhile [[ condition ]]; do\n    #statements\ndone\n
        "},{"location":"Note/Missing%20Semester/Shell/#_16","title":"\u51fd\u6570","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u51fd\u6570\u200b\u4f7f\u7528\u200bfunction\u200b\u8bed\u53e5\u200b\uff0c\u200b\u8bed\u6cd5\u200b\u5982\u4e0b\u200b\uff1a

        function name {\n    #statements\n}\n
        "},{"location":"Note/Missing%20Semester/Shell/#_17","title":"\u6570\u7ec4","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u6570\u7ec4\u200b\u4f7f\u7528\u200barray=(element1 element2 element3)\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aarray=(1 2 3) \u200b\u6570\u7ec4\u200b\u5143\u7d20\u200b\u4f7f\u7528\u200barray[index]\u200b\u8bed\u6cd5\u200b\u8bbf\u95ee\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${array[1]} \u200b\u6570\u7ec4\u200b\u957f\u5ea6\u200b\u4f7f\u7528\u200b${#array[@]}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${#array[@]} \u200b\u6570\u7ec4\u200b\u5143\u7d20\u200b\u4f7f\u7528\u200b${array[@]:index:length}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${array[@]:1:2}\uff0c\u200b\u8fd9\u4f1a\u200b\u83b7\u53d6\u200b\u6570\u7ec4\u200b\u4e2d\u200b\u4ece\u200b\u7b2c\u4e8c\u4e2a\u200b\u5143\u7d20\u200b\u5f00\u59cb\u200b\u7684\u200b\u4e24\u4e2a\u200b\u5143\u7d20\u200b \u200b\u6570\u7ec4\u200b\u5143\u7d20\u200b\u4f7f\u7528\u200b${array[@]/pattern/string}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${array[@]/2/4}\uff0c\u200b\u8fd9\u4f1a\u200b\u5c06\u200b\u6570\u7ec4\u200b\u4e2d\u200b\u7684\u200b\u6240\u6709\u200b 2 \u200b\u66ff\u6362\u200b\u4e3a\u200b 4

        "},{"location":"Note/Missing%20Semester/Shell/#_18","title":"\u5b57\u7b26\u4e32","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b'string'\u200b\u6216\u8005\u200b\"string\"\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho 'Hello World!' \u200b\u5b57\u7b26\u4e32\u200b\u957f\u5ea6\u200b\u4f7f\u7528\u200b${#string}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${#string} \u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b${string:position:length}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${string:1:2} \u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b${string/substring/replacement}\u200b\u8bed\u6cd5\u200b\u83b7\u53d6\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1aecho ${string/Hello/Hi}\uff0c\u200b\u8fd9\u4f1a\u200b\u5c06\u200b\u5b57\u7b26\u4e32\u200b\u4e2d\u200b\u7684\u200b\u7b2c\u4e00\u4e2a\u200b Hello \u200b\u66ff\u6362\u200b\u4e3a\u200b Hi

        "},{"location":"Note/Missing%20Semester/Shell/#here","title":"Here \u200b\u6587\u6863","text":"

        Here \u200b\u6587\u6863\u200b\u7528\u4e8e\u200b\u5c06\u200b\u591a\u884c\u200b\u6587\u672c\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b.

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b Here \u200b\u6587\u6863\u200b\u4f7f\u7528\u200b<<\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a

        read -d '' string <<EOF\nHello\nWorld!\nEOF\necho \"$string\"\n
        \u200b\u8fd9\u4f1a\u200b\u5c06\u200b Hello World!\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u53d8\u91cf\u200b string

        "},{"location":"Note/Missing%20Semester/Shell/#here_1","title":"Here \u200b\u5b57\u7b26\u4e32","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b Here \u200b\u5b57\u7b26\u4e32\u200b\u4f7f\u7528\u200b<<<\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1acat <<<\"Hello World!\"

        "},{"location":"Note/Missing%20Semester/Shell/#here_2","title":"Here \u200b\u811a\u672c","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b Here \u200b\u811a\u672c\u200b\u4f7f\u7528\u200b<<-\u200b\u8bed\u6cd5\u200b\uff0c\u200b\u4f8b\u5982\u200b\uff1a

        cat <<-EOF\n    Hello\n    World!\nEOF\n

        "},{"location":"Note/Missing%20Semester/Shell/#_19","title":"\u8f93\u5165","text":"

        Bash \u200b\u811a\u672c\u200b\u4e2d\u200b\u7684\u200b\u8f93\u5165\u200b\u4f7f\u7528\u200bread\u200b\u8bed\u53e5\u200b \u200b\u5176\u200b\u53c2\u6570\u200b\u5305\u62ec\u200b\uff1a - -p\uff1a\u200b\u63d0\u793a\u7b26\u200b - -n\uff1a\u200b\u8bfb\u53d6\u200b\u7684\u200b\u5b57\u7b26\u200b\u6570\u200b - -t\uff1a\u200b\u8d85\u65f6\u200b\u65f6\u95f4\u200b - -s\uff1a\u200b\u4e0d\u200b\u56de\u663e\u200b\u8f93\u5165\u200b\u7684\u200b\u5b57\u7b26\u200b - -a\uff1a\u200b\u5c06\u200b\u8f93\u5165\u200b\u8d4b\u503c\u200b\u7ed9\u200b\u6570\u7ec4\u200b - -d\uff1a\u200b\u5206\u9694\u7b26\u200b - -r\uff1a\u200b\u4e0d\u200b\u5bf9\u200b\u53cd\u200b\u659c\u6760\u200b\u8fdb\u884c\u200b\u8f6c\u4e49\u200b - -e\uff1a\u200b\u4f7f\u7528\u200b Readline \u200b\u5e93\u200b - -i\uff1a\u200b\u9ed8\u8ba4\u503c\u200b - -u\uff1a\u200b\u8f93\u5165\u200b\u7684\u200b\u6587\u4ef6\u200b\u63cf\u8ff0\u7b26\u200b

        \u200b\u4f8b\u5982\u200b\uff1a

        read -p \"Enter your name: \" name\necho \"Hello $name\"\n

        "},{"location":"Note/Missing%20Semester/Vim/","title":"Vim \uff08Revisited\uff09","text":"

        \u200b\u7ea6\u200b 758 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 3 \u200b\u5206\u949f\u200b

        \u200b\u91cd\u5199\u200b\u8fd9\u7bc7\u200b\u7b14\u8bb0\u200b\u7684\u200b\u65f6\u5019\u200b\u6211\u200b\u5df2\u7ecf\u200b\u7528\u200b\u4e86\u200b\u4e00\u6bb5\u65f6\u95f4\u200b vim\uff0c\u200b\u7b14\u8bb0\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u8fc7\u4e8e\u200b\u7b80\u7565\u200b\uff0c\u200b\u8be6\u7ec6\u200b\u53ef\u200b\u53c2\u8003\u200b\u8bfe\u7a0b\u200b\u7f51\u7ad9\u200b

        "},{"location":"Note/Missing%20Semester/Vim/#_1","title":"\u57fa\u7840","text":""},{"location":"Note/Missing%20Semester/Vim/#_2","title":"\u6a21\u5f0f","text":"

        \u200b\u6211\u4eec\u200b\u5199\u200b\u4ee3\u7801\u200b\u4e8b\u200b\u5e76\u200b\u4e0d\u200b\u4e00\u76f4\u200b\u90fd\u200b\u662f\u200b\u8fde\u7eed\u200b\u7684\u200b\u8f93\u5165\u200b\uff0c\u200b\u6709\u65f6\u200b\u662f\u200b\u8df3\u8f6c\u200b\u5230\u200b\u67d0\u4e2a\u200b\u5730\u65b9\u200b\uff0c\u200b\u6709\u65f6\u200b\u662f\u200b\u505a\u200b\u4e9b\u5c0f\u200b\u4fee\u6539\u200b\u66ff\u6362\u200b\uff0c\u200b\u6709\u65f6\u200b\u662f\u200b\u9605\u8bfb\u200b\u4ee3\u7801\u200b\uff0c\u200b\u6216\u8005\u200b\u662f\u200b\u8fde\u7eed\u200b\u8f93\u5165\u200b. \u200b\u4e3a\u6b64\u200b\uff0cvim \u200b\u4f7f\u7528\u200b\u4e0d\u540c\u200b\u6a21\u5f0f\u200b\u6765\u200b\u4fbf\u5229\u200b\u5404\u4e2a\u200b\u4e0d\u540c\u200b\u76ee\u7684\u200b\u7684\u200b\u64cd\u4f5c\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u76f8\u540c\u200b\u7684\u200b\u952e\u200b\u5728\u200b\u4e0d\u540c\u200b\u6a21\u5f0f\u200b\u4e0b\u200b\u610f\u4e49\u200b\u4e0d\u540c\u200b.

        vim \u200b\u4e2d\u200b\u6700\u200b\u5e38\u7528\u200b\u7684\u200b\u6a21\u5f0f\u200b\u6709\u200b

        normalinsertreplacevisualcommand-line

        \u200b\u9ed8\u8ba4\u200b\u521d\u59cb\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u4efb\u4f55\u200b\u6a21\u5f0f\u200b\u90fd\u200b\u53ef\u4ee5\u200b\u6309\u200b\u56de\u5230\u200b normal.\u200b\u9605\u8bfb\u200b\u6a21\u5f0f\u200b

        i\u200b\u8fdb\u5165\u200b\uff0c\u200b\u8fdb\u884c\u200b\u8fde\u7eed\u200b\u7684\u200b\u8f93\u5165\u200b\uff0c\u200b\u53ea\u7528\u200b i \u200b\u53ef\u4ee5\u200b\u65e0\u7f1d\u200b\u9000\u5316\u200b\u56de\u200b\u539f\u5148\u200b\u4ec0\u4e48\u200b\u529f\u80fd\u200b\u90fd\u200b\u6ca1\u6709\u200b\u7684\u200b\u7f16\u8f91\u5668\u200b.\u200b\u8f93\u5165\u200b\u6a21\u5f0f\u200b

        R\u200b\u8fdb\u5165\u200b\uff0c\u200b\u8fdb\u884c\u200b\u8fde\u7eed\u200b\u7684\u200b\u66ff\u6362\u200b.\u200b\u66ff\u6362\u200b\u6a21\u5f0f\u200b

        v\u200b\u8fdb\u5165\u200b\uff0c\u200b\u8fdb\u884c\u200b\u9009\u62e9\u200b\uff0cV \u200b\u8fdb\u5165\u200b\u884c\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u6309\u884c\u200b\u9009\u62e9\u200b\uff0c C-v \u200b\u8fdb\u5165\u200b\u5757\u200b\u6a21\u5f0f\u200b\uff0c\u200b\u6309\u200b\u4efb\u610f\u200b\u8fb9\u957f\u200b\u9009\u62e9\u200b\u957f\u65b9\u5f62\u200b.\u200b\u9009\u62e9\u200b\u6a21\u5f0f\u200b

        :\u200b\u8fdb\u5165\u200b\uff0c\u200b\u5904\u7406\u200b\u547d\u4ee4\u884c\u200b\u64cd\u4f5c\u200b\uff08\u200b\u6700\u200b\u57fa\u672c\u200b\u7684\u200b\u6709\u200b :w \u200b\u4fdd\u5b58\u200b :q \u200b\u9000\u51fa\u200b :wq \u200b\u4fdd\u5b58\u200b\u9000\u51fa\u200b :q!\u200b\u5f3a\u5236\u200b\u9000\u51fa\u200b\uff09.\u200b\u547d\u4ee4\u884c\u200b\u6a21\u5f0f\u200b

        "},{"location":"Note/Missing%20Semester/Vim/#_3","title":"\u7ed3\u6784","text":"

        \u200b\u4e00\u4e2a\u200b Vim \u200b\u8fdb\u7a0b\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b\u6807\u7b7e\u200b\u9875\u200b\uff0c\u200b\u4e00\u4e2a\u200b\u6807\u7b7e\u200b\u9875\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b\u7a97\u53e3\u200b\uff0c\u200b\u800c\u200b\u4e00\u4e2a\u200b\u7a97\u53e3\u200b\u50cf\u200b\u53ea\u200b\u773c\u775b\u200b\u770b\u200b\u5411\u200b\u4e00\u4e2a\u200b\u7279\u5b9a\u200b\u7684\u200b\u6587\u4ef6\u200b(Buffer)

        "},{"location":"Note/Missing%20Semester/Vim/#_4","title":"\u64cd\u4f5c","text":"

        Normal move

        • \u200b\u4e0a\u4e0b\u5de6\u53f3\u200b\uff1ahjkl
        • \u200b\u4ee5\u200b\u5355\u8bcd\u200b\u4e3a\u754c\u200b\uff1aw \uff08\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u5355\u8bcd\u200b\uff09\uff0c b \uff08\u200b\u5355\u8bcd\u200b\u5f00\u5934\u200b\uff09\uff0c e \uff08\u200b\u5355\u8bcd\u200b\u7ed3\u5c3e\u200b\uff09
        • \u200b\u4ee5\u200b\u884c\u4e3a\u200b\u754c\u200b\uff1a0 \uff08\u200b\u884c\u200b\u5f00\u5934\u200b\uff09\uff0c ^ \uff08\u200b\u884c\u200b\u9996\u4e2a\u200b\u975e\u200b\u7a7a\u5b57\u7b26\u200b\uff09\uff0c $ \uff08\u200b\u884c\u5c3e\u200b\uff09
        • \u200b\u4ee5\u5c4f\u200b\u4e3a\u754c\u200b\uff1aH \uff08\u200b\u5c4f\u5e55\u200b\u5f00\u5934\u200b\uff09\uff0c M \uff08\u200b\u5c4f\u5e55\u200b\u4e2d\u95f4\u200b\uff09\uff0c L \uff08\u200b\u5c4f\u5e55\u200b\u5e95\u90e8\u200b\uff09
        • \u200b\u6eda\u52a8\u200b\uff1aCtrl-u \uff08\u200b\u4e0a\u200b\uff09\uff0c Ctrl-d \uff08\u200b\u4e0b\u200b\uff09
        • \u200b\u4ee5\u200b\u6587\u4ef6\u200b\u4e3a\u754c\u200b\uff1agg \uff08\u200b\u6587\u4ef6\u200b\u5f00\u5934\u200b\uff09\uff0c G \uff08\u200b\u6587\u4ef6\u200b\u5c3e\u200b\uff09\uff0c G\uff08\u200b\u5bf9\u5e94\u200b\u884c\u200b\uff09
        • \u200b\u4ee5\u200b\u5de6\u53f3\u200b\u4e3a\u754c\u200b\uff1a% \uff08\u200b\u5bf9\u5e94\u200b\u7684\u200b\u53e6\u4e00\u534a\u200b\u62ec\u53f7\u200b\u6216\u8005\u200b\u7c7b\u4f3c\u200b\u7684\u200b\uff09
        • \u200b\u884c\u5185\u200b\u5bfb\u627e\u200b\uff1af{character}\uff0c t{character}\uff0c F{cracter}\uff0c T{character} \u200b\u5c0f\u5199\u200b\u5f80\u540e\u200b\u5927\u5199\u200b\u5f80\u524d\u200b
        • \u200b\u641c\u7d22\u200b\uff1a/{regex}\uff0c?{regex} \u200b\u5f80\u540e\u200b\u5f80\u524d\u200b\u641c\u7d22\u200b \uff0c\u200b\u6309\u200b n \u200b\u7ee7\u7eed\u200b\u641c\u4e0b\u200b\u4e00\u4e2a\u200b\uff0c\u200b\u6309\u200b N \u200b\u53cd\u5411\u200b\u7ee7\u7eed\u200b
        • Normal edit

          • o / O \uff1a\u200b\u5728\u200b\u4e0b\u200b/\u200b\u4e0a\u200b\u65b0\u5efa\u200b\u4e00\u884c\u200b\u5e76\u200b\u8fdb\u5165\u200b\u63d2\u5165\u200b\u6a21\u5f0f\u200b
          • d{motion} \uff1a\u200b\u6309\u7167\u200b motion \u200b\u5220\u9664\u200b\uff0cmotion \u200b\u89c1\u200b move \u200b\u90e8\u5206\u200b
          • c{motion} \uff1a\u200b\u6bd4\u200b d{motion}\u200b\u591a\u200b\u4e00\u6b65\u200b\u8fdb\u5165\u200b\u63d2\u5165\u200b\u6a21\u5f0f\u200b
          • x \uff1a \u200b\u5220\u9664\u200b\u5f53\u524d\u200b\u5149\u6807\u200b\u5b57\u7b26\u200b
          • s \uff1a \u200b\u4ee5\u200b\u4ee3\u66ff\u200b\u5f53\u200b\u5149\u6807\u200b\u5b57\u7b26\u200b
          • Visual mode + manipulation \uff1a \u200b\u8fd9\u4e9b\u200b\u64cd\u4f5c\u200b\u4e5f\u200b\u9002\u7528\u200b\u4e8e\u200b\u9009\u62e9\u200b\u6a21\u5f0f\u200b\u9009\u4e2d\u200b\u540e\u200b
          • u \u200b\u64a4\u56de\u200b\uff0c \u200b\u53d6\u6d88\u200b\u64a4\u56de\u200b
          • y \u200b\u590d\u5236\u200b
          • p \u200b\u7c98\u8d34\u200b
          • manipulation \uff1a \u200b\u91cd\u590d\u200b\u6b21\u200b\u64cd\u4f5c\u200b
          • i/a \uff1a inside/around \uff0c\u200b\u5728\u200b\u4ec0\u4e48\u200b\u4e4b\u5185\u200b/\u200b\u5468\u56f4\u200b\u64cd\u4f5c\u200b.\u200b\u4f8b\u5982\u200b\uff1adi( \u200b\u5728\u200b\uff08\uff09\u200b\u4e4b\u5185\u200b\u5220\u9664\u200b\uff1bda( \u200b\u5305\u62ec\u200b\uff08\uff09\u200b\u5220\u9664\u200b
          • Commandline mode

            • :w \u200b\u4fdd\u5b58\u200b
            • :q \u200b\u9000\u51fa\u200b
            • :wq \u200b\u4fdd\u5b58\u200b\u9000\u51fa\u200b
            • :q! \u200b\u5f3a\u5236\u200b\u9000\u51fa\u200b
            • :e \u200b\u6253\u5f00\u200b\u6587\u4ef6\u200b
            • :s// \u200b\u4e00\u884c\u200b\u7b2c\u4e00\u4e2a\u200b\u66ff\u6362\u200b
            • :s///g \u200b\u5168\u884c\u200b\u66ff\u6362\u200b
            • :s///gc \u200b\u5168\u884c\u200b\u66ff\u6362\u200b\u5e76\u200b\u8be2\u95ee\u200b
            • :%s///g \u200b\u5168\u200b\u6587\u4ef6\u200b\u66ff\u6362\u200b
            • :\uff0c s///g \u200b\u4ece\u200b\u7b2c\u884c\u200b\u5230\u200b\u7b2c\u884c\u200b\u66ff\u6362"},{"location":"Note/Missing%20Semester/Vim/#advanced-vim","title":"Advanced Vim","text":"
              • Vim \u200b\u662f\u200b\u9ad8\u5ea6\u200b\u53ef\u200b\u5b9a\u5236\u200b\u5316\u200b\u7684\u200b.\u200b\u53ea\u8981\u200b\u8981\u200b\u6539\u53d8\u200b\u7528\u6237\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5373\u53ef\u200b(~/.vimrc).\u200b\u4e5f\u200b\u53ef\u200b\u53c2\u8003\u200b\u6211\u200b\u975e\u5e38\u7b80\u5355\u200b\u7684\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b
              • Vim \u200b\u4e5f\u200b\u6709\u200b\u8bb8\u591a\u200b\u4f18\u8d28\u200b\u7684\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u6211\u200b\u51e0\u4e4e\u200b\u6ca1\u6709\u200b\u6dfb\u52a0\u200b\u4efb\u4f55\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u800c\u662f\u200b\u628a\u200b Vim \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u63d2\u4ef6\u200b\u5728\u200b VSCode \u200b\u4e0a\u200b\u4f7f\u7528\u200b
              "},{"location":"Note/Missing%20Semester/commandline_env/","title":"Commandline Enviroment","text":"

              \u200b\u7ea6\u200b 1800 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 6 \u200b\u5206\u949f\u200b

              \u200b\u8bb0\u5f55\u200b missing semester\u200b\u6b64\u5802\u200b\u8bfe\u200b\u7684\u200b\u4e00\u4e9b\u200b\u7b14\u8bb0\u200b

              "},{"location":"Note/Missing%20Semester/commandline_env/#job-control","title":"Job Control","text":"

              \u200b\u7ec8\u7aef\u200b\u7684\u200b\u4f5c\u4e1a\u63a7\u5236\u200b\uff08Job Control\uff09\u200b\u662f\u200b\u4e00\u79cd\u200b\u5728\u200b\u547d\u4ee4\u884c\u200b\u73af\u5883\u200b\u4e0b\u200b\u7ba1\u7406\u200b\u548c\u200b\u63a7\u5236\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u4f5c\u4e1a\u200b\uff08Job\uff09\u200b\u7684\u200b\u673a\u5236\u200b.\u200b\u5b83\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u547d\u4ee4\u200b\u548c\u200b\u6280\u672f\u200b\uff0c\u200b\u4f7f\u200b\u7528\u6237\u200b\u80fd\u591f\u200b\u5728\u200b\u7ec8\u7aef\u200b\u540c\u65f6\u200b\u8fd0\u884c\u200b\u591a\u4e2a\u200b\u547d\u4ee4\u200b\uff0c\u200b\u5e76\u200b\u5728\u200b\u9700\u8981\u200b\u65f6\u200b\u5bf9\u200b\u5176\u200b\u8fdb\u884c\u200b\u7ba1\u7406\u200b.

              \u200b\u4f5c\u4e1a\u200b

              \u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\uff08Foreground Job\uff09\u200b\u540e\u53f0\u4f5c\u4e1a\u200b\uff08Background Job\uff09\u200b\u4f5c\u4e1a\u72b6\u6001\u200b\u548c\u200b\u4fe1\u53f7\u200b

              \u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\u662f\u200b\u5f53\u524d\u200b\u6d3b\u52a8\u200b\u7684\u200b\u4f5c\u4e1a\u200b\uff0c\u200b\u5b83\u4f1a\u200b\u5728\u200b\u7ec8\u7aef\u200b\u663e\u793a\u200b\u5176\u200b\u8f93\u51fa\u200b\uff0c\u200b\u5e76\u200b\u5360\u7528\u200b\u7ec8\u7aef\u200b\u7684\u200b\u8f93\u5165\u200b.\u200b\u53ea\u6709\u200b\u5f53\u524d\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\u6216\u200b\u88ab\u200b\u6682\u505c\u200b\u65f6\u200b\uff0c\u200b\u624d\u80fd\u200b\u6267\u884c\u200b\u5176\u4ed6\u200b\u547d\u4ee4\u200b.

              \u200b\u540e\u53f0\u4f5c\u4e1a\u200b\u662f\u200b\u5728\u200b\u540e\u53f0\u200b\u8fd0\u884c\u200b\u7684\u200b\u4f5c\u4e1a\u200b\uff0c\u200b\u5b83\u200b\u4e0d\u4f1a\u200b\u5360\u7528\u200b\u7ec8\u7aef\u200b\u7684\u200b\u8f93\u5165\u200b\u548c\u200b\u8f93\u51fa\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u7279\u6b8a\u5b57\u7b26\u200b & \u200b\u5c06\u200b\u547d\u4ee4\u200b\u653e\u7f6e\u200b\u5728\u200b\u540e\u53f0\u200b\u8fd0\u884c\u200b\uff0c\u200b\u4ece\u800c\u200b\u5141\u8bb8\u200b\u540c\u65f6\u200b\u8fd0\u884c\u200b\u591a\u4e2a\u200b\u547d\u4ee4\u200b.

              \u200b\u6bcf\u4e2a\u200b\u4f5c\u4e1a\u200b\u90fd\u200b\u5177\u6709\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u200b\uff0c\u200b\u5982\u200b\u8fd0\u884c\u200b\u4e2d\u200b\u3001\u200b\u505c\u6b62\u200b\u6216\u200b\u5b8c\u6210\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4fe1\u53f7\u200b\u6765\u200b\u63a7\u5236\u200b\u4f5c\u4e1a\u200b\u7684\u200b\u884c\u4e3a\u200b\uff0c\u200b\u5982\u200b Ctrl-C\uff08\u200b\u4e2d\u65ad\u200b\u4f5c\u4e1a\u200b\uff09\u200b\u548c\u200b Ctrl-D\uff08\u200b\u7ed3\u675f\u200b\u4f5c\u4e1a\u200b\u8f93\u5165\u200b\uff09.

              \u200b\u4f5c\u4e1a\u63a7\u5236\u200b\u547d\u4ee4\u200b

              jobsfgbgkillman signalCtrl-CCtrl-Z

              jobs \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5217\u51fa\u200b\u5f53\u524d\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u4f5c\u4e1a\u200b.\u200b\u6bcf\u4e2a\u200b\u4f5c\u4e1a\u200b\u90fd\u200b\u6709\u200b\u4e00\u4e2a\u200b\u552f\u4e00\u200b\u7684\u200b ID\uff0c\u200b\u524d\u9762\u200b\u5e26\u6709\u200b\u4e00\u4e2a\u200b + \u200b\u53f7\u200b\u7684\u200b\u4f5c\u4e1a\u200b\u662f\u200b\u5f53\u524d\u200b\u7684\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\uff0c\u200b\u524d\u9762\u200b\u5e26\u6709\u200b\u4e00\u4e2a\u200b - \u200b\u53f7\u200b\u7684\u200b\u4f5c\u4e1a\u200b\u662f\u200b\u5f53\u524d\u200b\u7684\u200b\u540e\u53f0\u4f5c\u4e1a\u200b.

              fg \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5c06\u200b\u540e\u53f0\u4f5c\u4e1a\u200b\u5207\u6362\u200b\u5230\u200b\u524d\u53f0\u200b\u8fd0\u884c\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4f5c\u4e1a\u200b ID \u200b\u6216\u200b\u4f5c\u4e1a\u200b PID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b % \u200b\u7b26\u53f7\u200b\u52a0\u4e0a\u200b\u4f5c\u4e1a\u200b ID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b.

              bg \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5c06\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b\u5207\u6362\u200b\u5230\u200b\u540e\u53f0\u200b\u8fd0\u884c\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4f5c\u4e1a\u200b ID \u200b\u6216\u200b\u4f5c\u4e1a\u200b PID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b % \u200b\u7b26\u53f7\u200b\u52a0\u4e0a\u200b\u4f5c\u4e1a\u200b ID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b.

              kill \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u5411\u200b\u4f5c\u4e1a\u200b\u53d1\u9001\u200b\u4fe1\u53f7\u200b.\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0ckill \u200b\u547d\u4ee4\u200b\u4f1a\u200b\u53d1\u9001\u200b SIGTERM \u200b\u4fe1\u53f7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b -SIGNAL \u200b\u9009\u9879\u200b\u6765\u200b\u6307\u5b9a\u200b\u4fe1\u53f7\u200b\u7c7b\u578b\u200b.\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u4f5c\u4e1a\u200b ID \u200b\u6216\u200b\u4f5c\u4e1a\u200b PID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b % \u200b\u7b26\u53f7\u200b\u52a0\u4e0a\u200b\u4f5c\u4e1a\u200b ID \u200b\u4f5c\u4e3a\u200b\u53c2\u6570\u200b.

              man signal \u200b\u547d\u4ee4\u200b\u7528\u4e8e\u200b\u67e5\u770b\u200b\u6240\u6709\u200b\u53ef\u4ee5\u200b\u53d1\u9001\u7ed9\u200b\u8fdb\u7a0b\u200b\u7684\u200b\u4fe1\u53f7\u200b.

              Ctrl-C \u200b\u5feb\u6377\u952e\u200b\u7528\u4e8e\u200b\u5411\u524d\u200b\u53f0\u200b\u4f5c\u4e1a\u200b\u53d1\u9001\u200b SIGINT \u200b\u4fe1\u53f7\u200b\uff0c\u200b\u901a\u5e38\u200b\u7528\u4e8e\u200b\u7ec8\u6b62\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b.

              Ctrl-Z \u200b\u5feb\u6377\u952e\u200b\u7528\u4e8e\u200b\u5411\u524d\u200b\u53f0\u200b\u4f5c\u4e1a\u200b\u53d1\u9001\u200b SIGTSTP \u200b\u4fe1\u53f7\u200b\uff0c\u200b\u901a\u5e38\u200b\u7528\u4e8e\u200b\u6682\u505c\u200b\u524d\u53f0\u200b\u4f5c\u4e1a\u200b.

              "},{"location":"Note/Missing%20Semester/commandline_env/#terminal-multiplexer","title":"Terminal Multiplexer","text":"

              \u200b\u9996\u5148\u200b\u7406\u89e3\u200b tmux \u200b\u7684\u200b\u81ea\u4e0a\u200b\u5411\u4e0b\u200b\u4e09\u4e2a\u200b\u4e0d\u540c\u200b\u5c42\u7ea7\u200b\uff1asession\uff0cwindow\uff0cpane

              sessionwindowpane

              session \u200b\u662f\u200b tmux \u200b\u7684\u200b\u6700\u9ad8\u200b\u5c42\u7ea7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u4e00\u4e2a\u200b tmux \u200b\u7684\u200b\u5b9e\u4f8b\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b session\uff0c\u200b\u6bcf\u4e2a\u200b session \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b window\uff0c\u200b\u6bcf\u4e2a\u200b window \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b pane\uff0c\u200b\u6bcf\u4e2a\u200b pane \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b tty

              window \u200b\u662f\u200b session \u200b\u7684\u200b\u7b2c\u4e8c\u5c42\u200b\u7ea7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u4e00\u4e2a\u200b\u7ec8\u7aef\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b window\uff0c\u200b\u6bcf\u4e2a\u200b window \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b pane\uff0c\u200b\u6bcf\u4e2a\u200b pane \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b tty

              pane \u200b\u662f\u200b window \u200b\u7684\u200b\u7b2c\u4e09\u5c42\u200b\u7ea7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u4e00\u4e2a\u200b\u5206\u5c4f\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b pane\uff0c\u200b\u6bcf\u4e2a\u200b pane \u200b\u53ef\u4ee5\u200b\u6709\u200b\u591a\u4e2a\u200b tty

              "},{"location":"Note/Missing%20Semester/commandline_env/#session","title":"\u65b0\u5efa\u200b\u4e00\u4e2a\u200b session","text":"tmuxtmux new -t NAMEtmux a NAMEtmux lsCtrl-b d

              \u200b\u76f4\u63a5\u200b\u8fdb\u5165\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b session

              \u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u540d\u4e3a\u200b NAME \u200b\u7684\u200b session

              \u200b\u91cd\u65b0\u200b\u8fde\u63a5\u200b\u5230\u200b\u540d\u4e3a\u200b NAME \u200b\u7684\u200b session

              \u200b\u5217\u51fa\u200b\u6240\u6709\u200b session

              detach \u200b\u5f53\u524d\u200b session

              "},{"location":"Note/Missing%20Semester/commandline_env/#session_1","title":"session \u200b\u4ee5\u5185\u200b\u7684\u200b\u64cd\u4f5c","text":"C-b cC-b n/p/NUMBERC-b \uff0cC-b &

              \u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b window

              \u200b\u5207\u6362\u200b\u5230\u200b\u4e0b\u200b\u4e00\u4e2a\u200b/\u200b\u4e0a\u200b\u4e00\u4e2a\u200b/\u200b\u7b2c\u200b x \u200b\u4e2a\u200b window

              \u200b\u91cd\u547d\u540d\u200b\u5f53\u524d\u200b window

              \u200b\u5173\u95ed\u200b\u5f53\u524d\u200b window

              "},{"location":"Note/Missing%20Semester/commandline_env/#window","title":"window \u200b\u4ee5\u5185\u200b\u7684\u200b\u64cd\u4f5c","text":"C-b \\\"C-b %C-b oC-b xC-b zC-b ARROWC-b SPACE

              \u200b\u4e0a\u4e0b\u200b\u5206\u88c2\u200b pane\uff0c\u200b\u8fd9\u4f1a\u200b\u662f\u200b\u65b0\u200b\u7684\u200b\u8fdb\u7a0b\u200b\u548c\u200b\u65b0\u200b\u7684\u200b tty

              \u200b\u5de6\u53f3\u200b\u5206\u88c2\u200b pane

              \u200b\u5207\u6362\u200b\u5230\u200b\u4e0b\u200b\u4e00\u4e2a\u200b pane

              \u200b\u5173\u95ed\u200b\u5f53\u524d\u200b pane

              \u200b\u653e\u5927\u200b\u7f29\u5c0f\u200b\u5f53\u524d\u200b pane

              \u200b\u5728\u200b pane \u200b\u4e4b\u95f4\u200b\u79fb\u52a8\u200b

              \u200b\u4e00\u952e\u200b\u5207\u6362\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u5e03\u5c40\u200b\u6a21\u5f0f\u200b

              "},{"location":"Note/Missing%20Semester/commandline_env/#dotfiles","title":"Dotfiles","text":"

              Dotfile \u200b\u662f\u200b\u4ee5\u70b9\u200b\uff08.\uff09\u200b\u5f00\u5934\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u5728\u200b Unix-like \u200b\u7cfb\u7edf\u200b\u4e2d\u200b\u88ab\u200b\u5e7f\u6cdb\u200b\u4f7f\u7528\u200b.\u200b\u5b83\u4eec\u200b\u901a\u5e38\u200b\u4f4d\u4e8e\u200b\u7528\u6237\u200b\u7684\u200b\u4e3b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b58\u50a8\u200b\u4e2a\u4eba\u5316\u200b\u548c\u200b\u81ea\u5b9a\u4e49\u200b\u7684\u200b\u914d\u7f6e\u200b\u9009\u9879\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5176\u4ed6\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u548c\u200b\u5de5\u5177\u200b\u7684\u200b\u8bbe\u7f6e\u200b.

              Dotfile \u200b\u7684\u200b\u540d\u79f0\u200b\u4ee5\u200b\u4e00\u4e2a\u200b\u6216\u200b\u591a\u4e2a\u200b\u70b9\u200b\u5f00\u5934\u200b\uff0c\u200b\u4f8b\u5982\u200b .bashrc\u3001.vimrc\u3001.gitconfig \u200b\u7b49\u200b.\u200b\u7531\u4e8e\u200b\u5728\u200b\u9ed8\u8ba4\u200b\u60c5\u51b5\u200b\u4e0b\u200b\uff0cUnix-like \u200b\u7cfb\u7edf\u200b\u4f1a\u200b\u5c06\u200b\u4ee5\u70b9\u200b\u5f00\u5934\u200b\u7684\u200b\u6587\u4ef6\u200b\u89c6\u4e3a\u200b\u9690\u85cf\u200b\u6587\u4ef6\u200b\uff0c\u200b\u56e0\u6b64\u200b\u8fd9\u4e9b\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u5728\u200b\u6587\u4ef6\u200b\u7ba1\u7406\u5668\u200b\u4e2d\u200b\u9ed8\u8ba4\u200b\u662f\u200b\u4e0d\u200b\u53ef\u89c1\u200b\u7684\u200b.\u200b\u4f46\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u7279\u5b9a\u200b\u7684\u200b\u9009\u9879\u200b\u6216\u200b\u547d\u4ee4\u200b\u67e5\u770b\u200b\u548c\u200b\u7f16\u8f91\u200b\u5b83\u4eec\u200b.

              Dotfile \u200b\u7684\u200b\u7528\u9014\u200b\u56e0\u200b\u6587\u4ef6\u540d\u200b\u548c\u200b\u6240\u200b\u9488\u5bf9\u200b\u7684\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u800c\u5f02\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u662f\u200b\u4e00\u4e9b\u200b\u5e38\u89c1\u200b\u7684\u200b\u4f8b\u5b50\u200b\uff1a

              • .bashrc\uff1aBash Shell \u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b9a\u4e49\u200b Shell \u200b\u7684\u200b\u884c\u4e3a\u200b\u548c\u200b\u73af\u5883\u53d8\u91cf\u200b.
              • .vimrc\uff1aVim \u200b\u6587\u672c\u7f16\u8f91\u200b\u5668\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b9a\u4e49\u200b Vim \u200b\u7684\u200b\u7f16\u8f91\u5668\u200b\u8bbe\u7f6e\u200b\u548c\u200b\u63d2\u4ef6\u200b.
              • .gitconfig\uff1aGit \u200b\u7248\u672c\u200b\u63a7\u5236\u7cfb\u7edf\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u8bbe\u7f6e\u200b Git \u200b\u7684\u200b\u7528\u6237\u200b\u4fe1\u606f\u200b\u3001\u200b\u522b\u540d\u200b\u548c\u200b\u5176\u4ed6\u200b\u9009\u9879\u200b.
              • .ssh/config\uff1aSSH \u200b\u5ba2\u6237\u7aef\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u914d\u7f6e\u200b SSH \u200b\u8fde\u63a5\u200b\u7684\u200b\u4e3b\u673a\u200b\u548c\u200b\u9009\u9879\u200b.
              • .tmux.conf\uff1atmux \u200b\u7ec8\u7aef\u200b\u590d\u7528\u200b\u5de5\u5177\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u7528\u4e8e\u200b\u5b9a\u4e49\u200b tmux \u200b\u7684\u200b\u4f1a\u200b\u8bdd\u200b\u548c\u200b\u7a97\u683c\u200b\u8bbe\u7f6e\u200b.

              \u200b\u901a\u8fc7\u200b\u7f16\u8f91\u200b\u548c\u200b\u5b9a\u5236\u200b Dotfile\uff0c\u200b\u7528\u6237\u200b\u53ef\u4ee5\u200b\u6309\u7167\u200b\u4e2a\u4eba\u200b\u504f\u597d\u200b\u548c\u200b\u9700\u6c42\u200b\u6765\u200b\u914d\u7f6e\u200b\u5404\u79cd\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u548c\u200b\u5de5\u5177\u200b.\u200b\u5b83\u4eec\u200b\u5141\u8bb8\u200b\u7528\u6237\u200b\u4fee\u6539\u200b\u9ed8\u8ba4\u8bbe\u7f6e\u200b\u3001\u200b\u6dfb\u52a0\u200b\u5feb\u6377\u952e\u200b\u3001\u200b\u5b9a\u4e49\u200b\u522b\u540d\u200b\u3001\u200b\u8bbe\u7f6e\u200b\u73af\u5883\u53d8\u91cf\u200b\u7b49\u200b\uff0c\u200b\u4ee5\u200b\u63d0\u5347\u200b\u5de5\u4f5c\u6548\u7387\u200b\u548c\u200b\u4e2a\u4eba\u5316\u200b\u4f53\u9a8c\u200b.

              ~/.zshrc \u200b\u662f\u200b zsh \u200b\u7684\u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u4e3a\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b zsh\uff0c\u200b\u90fd\u200b\u4f1a\u200b\u6267\u884c\u200b\u5176\u4e2d\u200b\u7684\u200b\u8bed\u53e5\u200b.\u200b\u6bd4\u5982\u200b\u4f60\u200b\u5728\u200b\u91cc\u9762\u200b\u5199\u200b\u4e0a\u200b\u4e00\u53e5\u200becho Hello\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u6bcf\u6b21\u200b\u542f\u52a8\u200b zsh \u200b\u7684\u200b\u65f6\u5019\u200b\u81ea\u52a8\u200b\u95ee\u5019\u200b\u4f60\u200b\u4e00\u53e5\u200b

              \u200b\u5728\u200b github \u200b\u4e0a\u200b\u53ef\u4ee5\u200b\u627e\u5230\u200b\u8bb8\u591a\u200b\u4eba\u200b\u5206\u4eab\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u4e5f\u200b\u8d34\u200b\u4e0a\u200b\u6211\u200b\u81ea\u5df1\u200b\u7684\u200b

              "},{"location":"Note/Missing%20Semester/commandline_env/#_1","title":"\u7b26\u53f7\u200b\u8fde\u63a5","text":"

              \u200b\u5f88\u591a\u200b\u65f6\u5019\u200b\u628a\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u653e\u5728\u200b\uff5e\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u5e76\u200b\u4e0d\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u4e5f\u200b\u4e0d\u597d\u200b\u6df7\u4e71\u200b\uff0c\u200b\u4e5f\u200b\u4e0d\u597d\u200b\u5efa\u7acb\u200b GitHub \u200b\u4ed3\u5e93\u200b\u8fdb\u884c\u200b\u7ba1\u7406\u200b\uff0c\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u7684\u200b\u8bfb\u53d6\u200b\u4f4d\u7f6e\u200b\u5f80\u5f80\u200b\u662f\u200b\u5b9a\u200b\u6b7b\u200b\u7684\u200b\uff0c\u200b\u79fb\u52a8\u200b\u5230\u200b\u522b\u5904\u200b\u5c31\u200b\u5931\u6548\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5229\u200b\u7b26\u53f7\u200b\u8fde\u63a5\u200b\u6765\u200b\u6574\u7406\u200b\u4ed6\u4eec\u200b.

              ln -s TRUE_PATH VIRTUAL_PATH: \u200b\u8f6f\u200b\u8fde\u63a5\u200b\uff0cVIRTUAL_PATH \u200b\u4e0a\u200b\u5b9e\u9645\u4e0a\u200b\u4ec0\u4e48\u200b\u6587\u4ef6\u200b\u90fd\u200b\u6ca1\u6709\u200b\uff0c\u200b\u4f46\u200b\u6211\u4eec\u200b\u8bd5\u56fe\u200b\u8bfb\u5199\u200b\u8fd9\u4e2a\u200b\u6587\u4ef6\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u4f1a\u200b\u88ab\u200b\u5bfc\u5411\u200b TRUE_PATH \u200b\u4e0a\u200b\u90a3\u4e2a\u200b\u771f\u5b9e\u200b\u5b58\u5728\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5229\u7528\u200b\u8fd9\u4e2a\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7edf\u4e00\u200b\u8f6c\u79fb\u200b\u6211\u4eec\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e86\u200b.

              \u200b\u6ce8\u610f\u200b\u521b\u5efa\u200b\u7b26\u53f7\u200b\u8fde\u63a5\u200b\u65f6\u200b VIRTUAL_PATH \u200b\u4e0d\u80fd\u200b\u5b58\u5728\u200b

              \u200b\u82e5\u200b\u5220\u53bb\u200b TRUE_PATH\uff0c\u200b\u7b26\u53f7\u200b\u8fde\u63a5\u200b\u4ecd\u7136\u200b\u5b58\u5728\u200b\uff0c\u200b\u4f46\u200b\u5df2\u200b\u4e0d\u53ef\u200b\u8bbf\u95ee\u200b\uff08\u200b\u663e\u793a\u6587\u4ef6\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff09

              "},{"location":"Note/Missing%20Semester/commandline_env/#remote-machine","title":"Remote Machine","text":"

              \u200b\u8be6\u60c5\u200b\u53ef\u4ee5\u200b\u770b\u200b\u8fd9\u200b\u4e00\u7bc7\u200b\uff0c\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5177\u4f53\u200b\u7684\u200b ssh \u200b\u8fde\u63a5\u200b\u5b9e\u8df5\u200b.\u200b\u5728\u200b:ocitons-link-16:\u200b\u8fd9\u200b\u4e00\u7bc7\u200b\u4e2d\u6709\u200b\u5173\u4e8e\u200b docker \u200b\u7684\u200b\u8fdc\u7a0b\u200b\u8fde\u63a5\u200b\u7684\u200b\u5b9e\u8df5\u200b\uff0c\u200b\u66f4\u52a0\u200b\u8be6\u7ec6\u200b.

              \u200b\u5e38\u7528\u200b\u6307\u4ee4\u200b

              ssh USERNAME@IP_ADDRESSssh-keygenssh-copy-id USERNAME@IP_ADDRESSscp -p xxxx LOCAL_PATH USERNAME@IP_ADDRESS:REMOTE_PATHscp -p xxxx USERNAME:IP_ADDRESS LOCAL_PATH

              \u200b\u8fde\u63a5\u200b remote machine

              \u200b\u81ea\u52a8\u200b\u751f\u6210\u200b\u8ff7\u836f\u200b\uff0c\u200b\u6ce8\u610f\u200b keyphrase \u200b\u5e94\u8be5\u200b\u4e3a\u7a7a\u200b\uff08\u200b\u76f4\u63a5\u200b\u56de\u8f66\u200b\uff09

              \u200b\u590d\u5236\u200b\u516c\u94a5\u200b\u5230\u200b remote machine \u200b\u7684\u200b\u6307\u5b9a\u200b\u6587\u4ef6\u200b\u4e2d\u200b

              \u200b\u5c06\u200b\u672c\u5730\u200b\u6587\u4ef6\u200b\u590d\u5236\u5230\u200b remote machine

              \u200b\u5c06\u200b remote machine \u200b\u6587\u4ef6\u200b\u590d\u5236\u5230\u200b\u672c\u5730\u200b

              \uff5e/.ssh/config \u200b\u91cc\u9762\u200b\u53ef\u4ee5\u200b\u8bbe\u7f6e\u200b remote machine \u200b\u522b\u540d\u200b \u200b\u9ed8\u8ba4\u200b\u7aef\u53e3\u200b \u200b\u9ed8\u8ba4\u200b ip \u200b\u5730\u5740\u200b\u7b49\u200b\u5c5e\u6027\u200b

              Tip

              \u200b\u5728\u200b remote machine \u200b\u4f7f\u7528\u200b tmux\uff0c\u200b\u53ef\u4ee5\u200b\u5728\u200b\u8fde\u63a5\u200b\u5173\u95ed\u200b\u540e\u200b\uff0c\u200b\u8fde\u63a5\u200b\u56de\u6765\u200b\uff0c\u200b\u518d\u200b\u91cd\u65b0\u200b attach\uff0c\u200b\u4e4b\u524d\u200b\u8fd0\u884c\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u90fd\u200b\u4f1a\u200b\u4ecd\u7136\u200b\u5b58\u5728\u200b. \u200b\u5728\u200b\u8fdc\u7a0b\u200b\u7684\u200b tmux \u200b\u7684\u200b\u5feb\u6377\u952e\u200b\u9700\u8981\u200b\u6309\u200b\u4e24\u6b21\u200b C-a

              Tip

              VSCode \u200b\u7684\u200b Remote ssh \u200b\u76f8\u5f53\u200b\u597d\u7528\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8ba9\u200b\u4f60\u200b\u7528\u200b VSCode \u200b\u5bf9\u200b\u8fdc\u7a0b\u200b\u673a\u5668\u200b\u4e0a\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u5305\u62ec\u200b debug \u200b\u5565\u200b\u7684\u200b

              "},{"location":"PeiPei/","title":"PeiPei!","text":"

              \u200b\u6b22\u8fce\u200b\u6765\u5230\u200b PeiPei \u200b\u5bc4\u5c45\u200b\u5728\u200b\u5927\u795e\u200b Stormckey \u200b\u7684\u200b\u535a\u5ba2\u200b\u4e0a\u200b\uff01

              \u200b\u8fd9\u91cc\u200b\u4f1a\u653e\u200b\u4e00\u4e9b\u200b\u6015\u200b\u81ea\u5df1\u200b\u5fd8\u8bb0\u200b\u7684\u200b\u5c0f\u200b Tips\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e9b\u200b\u6709\u8da3\u200b\u7684\u200b\u4e1c\u897f\u200b\uff01

              "},{"location":"PeiPei/markdown/","title":"Markdown All in One","text":"

              \u200b\u7ea6\u200b 318 \u200b\u4e2a\u200b\u5b57\u200b 5 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 1 \u200b\u5206\u949f\u200b

              "},{"location":"PeiPei/markdown/#vscode-like-highlighting","title":"VSCode like highlighting","text":"

              \u200b\u5373\u200b\u4f7f\u7528\u200b\u4e86\u200b VSCode \u200b\u7684\u200b MPE \u200b\u7684\u200b\u63d2\u4ef6\u200b\uff0cMarkdown \u200b\u91cc\u200b\u7684\u200b\u4ee3\u7801\u200b\u5757\u200b\u8fd8\u662f\u200b\u5341\u5206\u200b\u7684\u200b\u4e11\u964b\u200b.\u200b\u8fd9\u91cc\u200b\u63d0\u4f9b\u200b\u4e86\u200b\u4e00\u79cd\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u8ba9\u200b Markdown \u200b\u91cc\u200b\u7684\u200b\u4ee3\u7801\u200b\u5757\u200b\u7684\u200b\u9ad8\u4eae\u200b\u6548\u679c\u200b\u548c\u200b VSCode \u200b\u91cc\u200b\u7684\u200b\u4e00\u6837\u200b.

              \u200b\u9996\u5148\u200b\uff0c\u200b\u5982\u679c\u200b\u5bfc\u51fa\u200b\u7684\u200b\u662f\u200b\u767d\u8272\u200b\u5e95\u200b\uff0c\u200b\u5c31\u200b\u628a\u200b VSCode \u200b\u7684\u200b\u4e3b\u9898\u200b\u6539\u6210\u200b\u767d\u8272\u200b\u5e95\u200b\u7684\u200b\uff0c\u200b\u5982\u679c\u200b\u662f\u200b\u9ed1\u8272\u200b\u5e95\u200b\uff0c\u200b\u5c31\u200b\u6539\u6210\u200b\u9ed1\u8272\u200b\u5e95\u200b\u7684\u200b.\u200b\u4e0b\u9762\u200b\u7684\u200b\u914d\u7f6e\u200b\u662f\u200b\u767d\u8272\u200b\u5e95\u200b\u7684\u200b.

              \u200b\u5b89\u88c5\u200b Paste Special \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u76f4\u63a5\u200b\u5728\u200b VSCode \u200b\u91cc\u200b\u590d\u5236\u200b\u5199\u200b\u597d\u200b\u7684\u200b\u4ee3\u7801\u200b\uff0c\u200b\u5728\u200b Markdown \u200b\u6587\u4ef6\u200b\u91cc\u200b\u7c98\u8d34\u200b\u65f6\u200b\u53f3\u952e\u200b\u9009\u62e9\u200b Paste Special\uff0c\u200b\u7c98\u8d34\u200b\u4e3a\u200b HTML \u200b\u683c\u5f0f\u200b.\u200b\u4e3a\u4e86\u200b\u548c\u200b MPE \u200b\u7684\u200b\u9ed8\u8ba4\u200b\u683c\u5f0f\u200b\u5339\u914d\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5bf9\u200b css \u200b\u8fdb\u884c\u200b\u4e00\u4e9b\u200b\u5fae\u8c03\u200b.

              \u200b\u4f8b\u5982\u200b\u5982\u679c\u200b\u7c98\u8d34\u200b\u5b8c\u200b\u7684\u200b\u5982\u4e0b\u200b\uff1a

              <div style=\"color: #3b3b3b;background-color: #1f1f1f;font-family: Fira Code Retina\uff0c \u200b\u601d\u6e90\u200b\u9ed1\u4f53\u200b HW\uff0c Consolas\uff0c 'Courier New'\uff0c monospace\uff0c Consolas\uff0c 'Courier New'\uff0c monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;\">...</div>\n

              \u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u628a\u200b\u5b83\u200b\u6539\u6210\u200b\uff1a

              <div style=\"color: #3b3b3b;background-color: #f5f5f5;font-family: Consolas\uff0c 'Courier New'\uff0c monospace\uff0c Consolas\uff0c 'Courier New'\uff0c monospace;font-weight: normal;font-size: 14px;line-height: 1.4;white-space: pre;border-radius: 3px;padding: .8em;margin-top: 0;margin-bottom: 16px;overflow: auto;\">...</div>\n

              \u200b\u4e3b\u8981\u200b\u662f\u200b\u52a0\u200b\u4e86\u200b\u5706\u89d2\u200b\u3001padding \u200b\u548c\u200b margin.\u200b\u5b57\u4f53\u200b\u548c\u200b\u884c\u9ad8\u200b\u53ef\u6539\u200b\u53ef\u4e0d\u200b\u6539\u200b\uff0c\u200b\u770b\u200b\u4e2a\u4eba\u200b\u559c\u597d\u200b.\u200b\u53e6\u5916\u200b\uff0c\u200b\u4e3a\u4e86\u200b\u6253\u5370\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u66f4\u6539\u200b white-space \u200b\u4e3a\u200b pre-wrap\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u81ea\u52a8\u200b\u6362\u884c\u200b\u4e86\u200b\uff0c\u200b\u540c\u65f6\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u53bb\u6389\u200b overflow: auto;\uff1a

              <div style=\"color: #3b3b3b;background-color: #f5f5f5;font-family: Consolas\uff0c 'Courier New'\uff0c monospace\uff0c Consolas\uff0c 'Courier New'\uff0c monospace;font-weight: normal;font-size: 14px;line-height: 1.4;white-space: pre-wrap;border-radius: 3px;padding: .8em;margin-top: 0;margin-bottom: 16px;\">...</div>\n
              "},{"location":"PeiPei/markdown/#-img-src","title":"![]() -> <img src=\"\" />","text":"

              \u200b\u5728\u200b Markdown \u200b\u91cc\u200b\u63d2\u5165\u200b\u56fe\u7247\u200b\u65f6\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e00\u822c\u200b\u4f7f\u7528\u200b ![]() \u200b\u7684\u200b\u65b9\u5f0f\u200b\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u6837\u200b\u5bfc\u51fa\u200b\u7684\u200b PDF \u200b\u91cc\u200b\u7684\u200b\u56fe\u7247\u200b\u662f\u200b\u4e0d\u4f1a\u200b\u5c45\u4e2d\u200b\u7684\u200b\uff0c\u200b\u800c\u4e14\u200b\u4e5f\u200b\u6ca1\u6709\u200b\u529e\u6cd5\u200b\u8bbe\u7f6e\u200b\u56fe\u7247\u200b\u7684\u200b\u5bbd\u200b\u9ad8\u200b.\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u628a\u200b ![]() \u200b\u6539\u6210\u200b <img src=\"\" />.\u200b\u4f7f\u7528\u200b\u4ee5\u4e0b\u200b\u6b63\u5219\u8868\u8fbe\u5f0f\u200b\u66ff\u6362\u200b\uff1a

              !\\[(.*?)\\]\\((.*?)\\)\n

              \u200b\u66ff\u6362\u200b\u4e3a\u200b\uff1a

              <img src=\"$2\" alt=\"$1\" style=\"max-width: 100%\" />\n
              "},{"location":"Research/","title":"Research","text":"

              \u200b\u867d\u7136\u200b\u662f\u200b\u79d1\u7814\u200b\u83dc\u200b\ud83d\udc36\u200b\u4f46\u200b\u8fd8\u662f\u200b\u628a\u200b\u4e00\u4e9b\u200b\u7b14\u8bb0\u200b\u653e\u5728\u200b\u8fd9\u91cc\u200b\u597d\u200b\u4e86\u200b QaQ

              Research list

              • diffusion
              • Unet
              • batch nomarlization
              • basic pytorch
              • Stochastic Gradient Descent with momentum
              • KL \u200b\u6563\u5ea6\u200b
              • \u200b\u91cd\u200b\u53c2\u6570\u200b
              • VAE \u200b\u8fd8\u6709\u200b\u4e00\u4e2a\u200b\u5f88\u200b\u4f18\u79c0\u200b\u7684\u200b\u89e3\u7b54\u200b

              Useful pages:

              • Reverse-mode automatic differentiation from scratch\uff0c in Python
              • Example implementation of reverse-mode autodiff
              "},{"location":"Research/Diffusion%20Model/DDIM/","title":"DDIM","text":"

              \u200b\u7ea6\u200b 734 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

              Abstract

              \u200b\u5bf9\u4e8e\u200b DDIM\uff0c\u200b\u9996\u5148\u200b\u8fd8\u662f\u200b\u63a8\u8350\u200b\u9605\u8bfb\u200b\u82cf\u5251\u6797\u200b\u7684\u200b\u535a\u5ba2\u200b.\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b\u53ef\u4ee5\u200b\u8ddf\u8bfb\u200b\uff0c\u200b\u6587\u7ae0\u200b\u4e2d\u6709\u200b\u6211\u200b\u5374\u200b\u6ca1\u6709\u200b\u63d0\u200b\u7684\u200b\u90e8\u5206\u200b\u5c31\u662f\u200b\u6211\u200b\u8ba4\u4e3a\u200b\u6ca1\u4ec0\u4e48\u200b\u597d\u200b\u8865\u5145\u200b\u7684\u200b\u4e86\u200b.

              "},{"location":"Research/Diffusion%20Model/DDIM/#_1","title":"\u6e05\u6d17","text":"

              \u200b\u4ece\u200b DDPM \u200b\u90a3\u7bc7\u200b\u535a\u5ba2\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u5df2\u7ecf\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\\(p(x_t|x_{t-1})\\)\u200b\u8fd9\u4e00\u200b\u524d\u540e\u200b\u8fde\u7eed\u200b\u65f6\u95f4\u200b\u7684\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u5df2\u7ecf\u200b\u6ca1\u6709\u200b\u4f7f\u7528\u200b\u5230\u200b\u4e86\u200b\uff0c\u200b\u5c3d\u7ba1\u200b\u6211\u4eec\u200b\u5f53\u65f6\u200b\u7ed9\u5b9a\u200b\u4e86\u200b\u8fd9\u200b\u4e00\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u7684\u200b\u8868\u8fbe\u5f0f\u200b\uff0c\u200b\u5e76\u200b\u4ee5\u6b64\u200b\u63a8\u51fa\u200b\u4e86\u200b\\(p(x_t|x_0)\\).\u200b\u4f46\u662f\u200b\u65e2\u7136\u200b\u6ca1\u6709\u200b\u7528\u5230\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5b8c\u6210\u200b\u540e\u7eed\u200b\u63a8\u5bfc\u200b\u63a8\u5bfc\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b\u4fdd\u7559\u200b\u540e\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u7684\u200b\u524d\u63d0\u200b\u4e0b\u200b\uff0c\u200b\u4e0d\u518d\u200b\u5b9a\u200b\u6b7b\u200b\u524d\u9762\u200b\u7684\u200b\u72b6\u6001\u200b\u8f6c\u79fb\u200b\u51fd\u6570\u200b\u4e86\u200b\uff0c\u200b\u5148\u200b\u5c06\u200b\u5176\u200b\u5f53\u4f5c\u200b\u5f85\u5b9a\u200b\uff0c\u200b\u770b\u770b\u200b\u8fd9\u200b\u4e00\u65b0\u200b\u7684\u200b\u81ea\u7531\u5ea6\u200b\u4f1a\u200b\u5e26\u6765\u200b\u4ec0\u4e48\u200b.

              \u200b\u4e8e\u662f\u200b\u5728\u200b\u8d1d\u53f6\u65af\u200b\u516c\u5f0f\u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c06\u200b\u8fd9\u200b\u4e00\u9879\u200b\u79ef\u6389\u200b\uff0c\u200b\u968f\u540e\u200b\u4fdd\u6301\u200b\u6211\u4eec\u200b\u8d70\u51fa\u200b\u7684\u200b\u6bcf\u200b\u4e00\u6b65\u200b\u90fd\u200b\u662f\u200b\u6b63\u6001\u5206\u5e03\u200b\u7684\u200b\u5047\u8bbe\u200b\uff0c\u200b\u7528\u200b\u5f85\u5b9a\u200b\u7cfb\u6570\u200b\u6cd5\u200b\u6c42\u89e3\u200b.

              \u200b\u7136\u540e\u200b\u6211\u4eec\u200b\u5c31\u200b\u770b\u89c1\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u65b9\u7a0b\u200b\u4e66\u5c11\u200b\u4e86\u200b\u53e6\u200b\u4e00\u4e2a\u200b\uff0c\u200b\u8fd9\u200b\u4e8b\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u4e0d\u518d\u200b\u9650\u5236\u200b\\(p(x_t|x_{t-1})\\)\u200b\u81ea\u7136\u200b\u5c31\u200b\u591a\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u5173\u4e8e\u200b\u8fd9\u4e2a\u200b\u51fd\u6570\u200b\u53ef\u4ee5\u200b\u662f\u200b\u4ec0\u4e48\u200b\u7684\u200b\u81ea\u7531\u5ea6\u200b\uff08\u200b\u5f53\u7136\u200b\u8fd9\u4e2a\u200b\u51fd\u6570\u200b\u4e0d\u200b\u4e00\u5b9a\u200b\u8fd8\u662f\u200b DDPM \u200b\u7684\u200b\u5f62\u5f0f\u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u4ed6\u200b\u8fd8\u662f\u200b\u8981\u200b\u6ee1\u8db3\u200b\u5176\u4ed6\u200b\u7ed9\u5b9a\u200b\u7684\u200b\u6027\u8d28\u200b\uff0c\u200b\u6bd4\u5982\u200b\u4fdd\u8bc1\u200b\\(p(x_t|x_0)\\)\u200b\u5f62\u5f0f\u200b\u5982\u200b\u524d\u200b\uff09\uff0c\u200b\u6211\u4eec\u200b\u8c03\u8282\u200b\u8fd9\u4e2a\u200b\u65b0\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u5c31\u662f\u200b\u6362\u200b\u4e0d\u540c\u200b\u7684\u200b\u6ee1\u8db3\u6761\u4ef6\u200b\u7684\u200b\\(p(x_t|x_{t-1})\\)\u200b\u89e3\u200b\uff0c\u200b\u4f7f\u200b\u5176\u200b\u8868\u73b0\u200b\u51fa\u200b\u4e0d\u540c\u200b\u7684\u200b\u7279\u6027\u200b.

              \u200b\u968f\u540e\u200b\u7684\u200b\u81ea\u7136\u200b\u5c31\u662f\u200b\u51e0\u4e2a\u200b\u4e0d\u540c\u200b\u7684\u200b\u4f8b\u5b50\u200b\u4e86\u200b.\u200b\u9996\u5148\u200b\uff0c\u200b\u4e00\u5b9a\u200b\u5b58\u5728\u200b\u67d0\u4e2a\u200b\\(\\sigma_t\\)\u200b\u4f7f\u5f97\u200b\\(p(x_t|x_{t-1})\\)\u200b\u8fd8\u662f\u200b\u8ddf\u200b DDPM \u200b\u4e00\u6837\u200b\u7684\u200b\u53d6\u503c\u200b\uff0c\u200b\u6211\u4eec\u200b\u628a\u200b DDPM \u200b\u4e2d\u200b\u7684\u200b\u65b9\u5dee\u200b\u5e26\u5165\u200b\uff0c\u200b\u5c31\u200b\u5f97\u5230\u200b\u4e86\u200b\u8ddf\u200b DDPM \u200b\u4e2d\u200b\u4e00\u6837\u200b\u7684\u200b\u7ed3\u679c\u200b.\u200b\u4ee5\u53ca\u200b\u6587\u7ae0\u200b\u4e2d\u200b\u5efa\u8bae\u200b\u7684\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u65b9\u5dee\u200b\uff0c\u200b\u90fd\u200b\u80fd\u200b\u5f97\u5230\u200b\u4e0d\u9519\u200b\u7684\u200b\u7ed3\u679c\u200b.\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u53d6\u200b\u4e00\u4e9b\u200b\u7279\u6b8a\u200b\u7684\u200b\u503c\u200b\uff0c\u200b\u6bd4\u5982\u200b\u5b8c\u5168\u200b\u53bb\u6389\u200b\u65b9\u5dee\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u5f80\u56de\u200b\u8d70\u200b\u7684\u200b\u6bcf\u200b\u4e00\u6b65\u200b\u90fd\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5411\u91cf\u200b\u800c\u200b\u4e0d\u518d\u200b\u662f\u200b\u4e00\u4e2a\u200b\u5206\u5e03\u200b\uff0c\u200b\u8fd9\u6837\u200b\u8d70\u200b\u7684\u200b\u6548\u679c\u200b\u5f88\u200b\u597d\u200b.

              "},{"location":"Research/Diffusion%20Model/DDIM/#_2","title":"\u52a0\u901f","text":"

              \u200b\u8fd9\u90e8\u5206\u200b\u539f\u200b\u8bba\u6587\u200b\u7684\u200b\u601d\u60f3\u200b\u5b9e\u5728\u200b\u662f\u200b\u7cbe\u5999\u200b\uff0c\u200b\u7528\u200b\u7c7b\u6bd4\u200b\u800c\u8a00\u200b\uff0c\u200b\u6211\u4eec\u200b\u4ece\u200b\u8d77\u70b9\u200b\u51fa\u53d1\u200b\u8d70\u200b\u4e86\u200b 1000 \u200b\u6b65\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u6bcf\u200b 5 \u200b\u6b65\u8bb0\u200b\u4e00\u6b65\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u770b\u4f5c\u200b\u662f\u200b 200 \u200b\u6b65\u200b\u8d70\u200b\u5230\u200b\u4e86\u200b\u540c\u4e00\u4e2a\u200b\u5730\u65b9\u200b\uff0c\u200b\u53ea\u8981\u200b\u6211\u4eec\u200b\u7684\u200b\u6a21\u578b\u200b\u9884\u6d4b\u200b\u7684\u200b\u8db3\u591f\u200b\u597d\u200b\uff0c\u200b\u5b8c\u5168\u200b\u7406\u89e3\u200b\u6211\u4eec\u200b\u662f\u200b\u6cbf\u7740\u200b\u90a3\u6761\u200b\u8def\u5f80\u200b\u5916\u200b\u8d70\u200b\u7684\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u200b 200 \u200b\u6b65\u200b\u4e5f\u200b\u8db3\u4ee5\u200b\u8ba9\u200b\u6211\u4eec\u200b\u8d70\u200b\u56de\u6765\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u52a0\u901f\u200b.\u200b\u8fd9\u4e00\u200b\u8fc7\u7a0b\u200b\u662f\u200b\u6709\u70b9\u50cf\u200b C++\u200b\u91cc\u200b\u7684\u200b upcasat\uff0c\u200b\u6211\u200b\u539f\u5148\u200b\u5f53\u200b\u4f60\u200b\u662f\u200b\u4e2a\u200b Shape \u200b\u7c7b\u200b\uff0c\u200b\u4f46\u200b\u6211\u200b\u77e5\u9053\u200b\u4f60\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u4e2a\u200b Circle\uff0c\u200b\u90a3\u200b\u6211\u4eec\u200b\u5c31\u200b\u628a\u200b\u6307\u9488\u200b\u6539\u6210\u200b Circle*\u200b\u6765\u200b\u628a\u200b\u4f60\u200b\u5f53\u505a\u200b\u4e00\u4e2a\u200b circle \u200b\u5bf9\u5f85\u200b\uff0c\u200b\u5bf9\u8c61\u200b\u5e76\u200b\u6ca1\u6709\u200b\u53d8\u200b\uff0c\u200b\u53ea\u662f\u200b\u6211\u4eec\u200b\u5904\u7406\u200b\u4ed6\u200b\u7684\u200b\u65b9\u5f0f\u200b\u53d8\u200b\u4e86\u200b\uff0c\u200b\u90a3\u200b\u6211\u4eec\u200b\u5c31\u200b\u4fee\u6539\u200b\u597d\u200b\u9002\u5408\u200b\u4e8e\u200b 200 \u200b\u6b65\u200b\u7684\u200b\\(\\alpha\uff0c\\beta\\)\u200b\u6765\u200b\u53cd\u5411\u200b\u91c7\u6837\u200b.

              \u200b\u6700\u540e\u200b\u4e00\u6bb5\u200b\u628a\u200b DDPM \u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u200b\u9636\u200b\u5fae\u5206\u65b9\u7a0b\u200b\u7684\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u503c\u5f97\u4e00\u770b\u200b.

              "},{"location":"Research/Diffusion%20Model/DDPM/","title":"DDPM","text":"

              \u200b\u7ea6\u200b 2473 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 8 \u200b\u5206\u949f\u200b

              \u200b\u5173\u4e8e\u200b DDPM \u200b\u7684\u200b\u4e09\u79cd\u200b\u7406\u89e3\u200b\u65b9\u5f0f\u200b\u548c\u200b\u4e00\u4e9b\u200b\u76f4\u89c2\u200b\u7684\u200b\u89e3\u91ca\u200b

              "},{"location":"Research/Diffusion%20Model/DDPM/#ddpm_1","title":"\u8ba4\u8bc6\u200b DDPM","text":"

              \u200b\u9996\u5148\u200b\uff0c\u200b\u8ba4\u8bc6\u200b DDPM \u200b\u6700\u597d\u200b\u7684\u200b\u65b9\u5f0f\u200b\u5c31\u662f\u200b\u5148\u200b\u53bb\u200b\u8bfb\u4e00\u8bfb\u200b\u5927\u4f6c\u200b\u5bf9\u4e8e\u200b\u76f4\u89c2\u200b\u7406\u89e3\u200b DDPM \u200b\u7684\u200b\u8bb2\u89e3\u200b\u535a\u5ba2\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u5f15\u7528\u200b\u3010\u200b\u82cf\u5251\u6797\u200b](https://kexue.fm/archives/9119) \u200b\u5927\u4f6c\u200b\u7684\u200b\u535a\u5ba2\u200b\uff0c\u200b\u5efa\u8bae\u200b\u5927\u5bb6\u200b\u5148\u200b\u8bfb\u5b8c\u200b\u7b2c\u4e00\u7bc7\u200b\u6269\u6563\u200b\u6a21\u578b\u200b\u6f2b\u8c08\u200b\uff0c\u200b\u660e\u767d\u200b DDPM \u200b\u662f\u200b\u505a\u200b\u4ec0\u4e48\u200b\u7684\u200b\uff0c\u200b\u518d\u200b\u56de\u5230\u200b\u672c\u6587\u200b.

              "},{"location":"Research/Diffusion%20Model/DDPM/#_1","title":"\u5728\u200b\u9ad8\u200b\u7ef4\u7a7a\u95f4\u200b\u4e2d\u6e38\u200b\u8d70","text":"

              DDPM\uff0c\u200b\u6309\u7167\u200b\u539f\u6587\u200b\u7684\u200b\u4ecb\u7ecd\u200b\uff0c\u200b\u4e0d\u200b\u53ea\u200b\u53ef\u4ee5\u200b\u7528\u4e8e\u200b\u5904\u7406\u200b\u56fe\u50cf\u200b\u4fe1\u606f\u200b\uff0c\u200b\u4f46\u662f\u200b\u539f\u6587\u200b\u7684\u200b\u5206\u6790\u200b\u4e3b\u8981\u200b\u662f\u4ece\u200b\u56fe\u50cf\u200b\u6765\u8bb2\u200b\u7684\u200b\uff08\u200b\u662f\u200b\u5427\u200b\uff09\uff0c\u200b\u6240\u4ee5\u200b\u6211\u200b\u4e5f\u200b\u4ece\u200b\u56fe\u50cf\u200b\u5206\u6790\u200b\u7684\u200b\u89d2\u5ea6\u200b\u6765\u8bf4\u200b\u4e00\u4e0b\u200b\u5427\u200b.

              \u200b\u4ec0\u4e48\u200b\u662f\u200b\u56fe\u50cf\u200b\uff1f\u200b\u6309\u7167\u200b\u6700\u200b\u7b80\u5355\u200b\u7684\u200b\u89d2\u5ea6\u200b\u7406\u89e3\u200b\uff0c\u200b\u56fe\u50cf\u200b\u5c31\u662f\u200b\u50cf\u7d20\u200b\u503c\u200b\u77e9\u9635\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u628a\u200b\u4e00\u5e45\u200b\u56fe\u200b\u4ece\u200b\u5de6\u4e0a\u89d2\u200b\u5230\u200b\u53f3\u4e0b\u89d2\u200b\u7684\u200b\u6240\u6709\u200b\u50cf\u7d20\u200b\u503c\u200b\uff08\u200b\u53ef\u80fd\u200b\u5206\u200b RGB \u200b\u4e09\u4e2a\u200b\u77e9\u9635\u200b\uff09\u200b\u90fd\u200b\u5b58\u50a8\u200b\u8d77\u6765\u200b\uff0c\u200b\u5c31\u200b\u8bb0\u5f55\u200b\u4e86\u200b\u8fd9\u4e2a\u200b\u4e2a\u200b\u56fe\u50cf\u200b\u7684\u200b\u6240\u6709\u200b\u4fe1\u606f\u200b.

              \u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u518d\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u56fe\u50cf\u200b\u4ece\u200b\u77e9\u9635\u200b\u62fc\u63a5\u200b\u6210\u200b\u4e00\u4e2a\u200b\u5411\u91cf\u200b\uff0c\u200b\u56fe\u50cf\u200b\u5c31\u200b\u6210\u200b\u4e86\u200b\u4e00\u4e2a\u200b\u5f88\u200b\u9ad8\u200b\u7ef4\u5ea6\u200b\u7684\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u70b9\u200b\uff08\u200b\u6bd4\u5982\u200b 1024*1024 \u200b\u7ef4\u200b\uff09\uff0c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\uff0c\u200b\u6709\u4e9b\u200b\u70b9\u200b\u662f\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u56fe\u50cf\u200b\uff08\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u603b\u80fd\u200b\u62ff\u6765\u200b\u4e00\u4e2a\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u56fe\u50cf\u200b\uff0c\u200b\u628a\u200b\u56fe\u50cf\u200b\u6620\u5c04\u200b\u5230\u200b\u70b9\u200b\u4e0a\u200b\uff09\uff0c\u200b\u5927\u90e8\u5206\u200b\u5374\u662f\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u566a\u58f0\u200b\u56fe\u200b\uff08\u200b\u60f3\u8c61\u200b\u4e00\u4e0b\u200b\u7535\u89c6\u200b\u82b1\u5c4f\u200b\uff0c\u200b\u6211\u4eec\u200b\u968f\u673a\u200b\u5728\u200b\u7a7a\u95f4\u200b\u91cc\u53d6\u200b\u4e00\u4e2a\u70b9\u200b\u5927\u6982\u200b\u5c31\u662f\u200b\u8fd9\u6837\u200b\u7684\u200b\uff09\uff0cDDPM \u200b\u5c31\u662f\u200b\u8bd5\u56fe\u200b\u4ece\u200b\u8fd9\u4e2a\u200b\u7a7a\u95f4\u200b\u7684\u200b\u968f\u673a\u200b\u4e00\u4e2a\u70b9\u200b\u51fa\u53d1\u200b\uff0c\u200b\u5e0c\u671b\u200b\u627e\u5230\u200b\u4e00\u4e2a\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5728\u200b\u9ad8\u200b\u7ef4\u7a7a\u95f4\u200b\u4e2d\u6e38\u200b\u8d70\u200b.

              "},{"location":"Research/Diffusion%20Model/DDPM/#_2","title":"\u56fe\u50cf\u200b\u7684\u200b\u6982\u7387\u5206\u5e03","text":"

              \u200b\u6211\u4eec\u200b\u5f88\u200b\u597d\u200b\u7406\u89e3\u200b\u4f5c\u4e3a\u200b\u4e00\u4e2a\u70b9\u200b\u7684\u200b\u56fe\u50cf\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u70b9\u200b\u5750\u6807\u200b\u62ff\u200b\u51fa\u6765\u200b\uff0c\u200b\u8fd8\u539f\u6210\u200b\u77e9\u9635\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8fd8\u539f\u200b\u5230\u200b\u56fe\u50cf\u200b\u4e86\u200b\uff0c\u200b\u90a3\u4e48\u200b\u4ec0\u4e48\u200b\u662f\u200b\u56fe\u50cf\u200b\u7684\u200b\u6982\u7387\u5206\u5e03\u200b\uff1f

              \u200b\u60f3\u8c61\u200b\u4e00\u4e2a\u200b\u5750\u6807\u200b\u4e3a\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u548c\u200b\u4e00\u4e2a\u200b\u5747\u503c\u200b\u4e3a\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u4e8c\u7ef4\u200b\u6b63\u6001\u5206\u5e03\u200b\uff0c\u200b\u8fd9\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u4e8c\u8005\u200b\u7684\u200b\u533a\u522b\u200b\uff0c\u200b\u4e00\u4e2a\u70b9\u200b\u53ef\u4ee5\u200b\u51c6\u786e\u200b\u8fd8\u539f\u200b\u5230\u200b\u4e00\u5e45\u200b\u56fe\u50cf\u200b\uff0c\u200b\u4f46\u200b\u6982\u7387\u5206\u5e03\u200b\u5e76\u200b\u4e0d\u200b\u51c6\u786e\u200b\uff0c\u200b\u4ed6\u200b\u53ea\u662f\u200b\u544a\u8bc9\u200b\u6211\u4eec\u200b\u8fd9\u5e45\u200b\u56fe\u200b\u662f\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u6700\u9ad8\u200b\uff0c\u200b\u5b83\u200b\u4e5f\u200b\u53ef\u80fd\u200b\u662f\u200b\u5176\u4ed6\u200b\u56fe\u50cf\u200b\uff0c\u200b\u5b83\u200b\u662f\u200b\u5176\u4ed6\u200b\u56fe\u50cf\u200b\u7684\u200b\u6982\u7387\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u6982\u7387\u5206\u5e03\u200b\u7b97\u200b\u51fa\u200b\uff0c\u200b\u6bd4\u5982\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u786e\u5b9a\u200b\u4ed6\u200b\u662f\u200b\uff081\uff0c3\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u662f\u200b\u591a\u5c11\u200b.

              \u200b\u90a3\u4e48\u200b\uff0c\u200b\u7ed9\u5b9a\u200b\u4e00\u4e2a\u200b\u56fe\u50cf\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u6211\u4eec\u200b\u5982\u4f55\u200b\u83b7\u53d6\u200b\u56fe\u50cf\u200b\u5462\u200b\uff1f\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u53d6\u200b\u5747\u503c\u200b\u7684\u200b\u5230\u200b\u56fe\u50cf\u200b\uff0c\u200b\u90a3\u200b\u5c31\u662f\u200b\uff081\uff0c2\uff09\uff0c\u200b\u8fd9\u4e48\u200b\u505a\u200b\u7684\u200b\u9053\u7406\u200b\u662f\u200b\uff1a\u200b\u5b83\u200b\u662f\u200b\u8fd9\u5e45\u200b\u56fe\u200b\u7684\u200b\u6982\u7387\u200b\u6700\u9ad8\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u6309\u7167\u200b\u6982\u7387\u200b\u53bb\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u53ef\u80fd\u200b\u662f\u200b\uff081\uff0c2\uff09\uff0c\u200b\u4e5f\u200b\u53ef\u80fd\u200b\u662f\u200b\uff082\uff0c4\uff09\uff0c\u200b\u4f46\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u6700\u9ad8\u200b\uff0c\u200b\u4e00\u4e9b\u200b\u5f88\u200b\u79bb\u8c31\u200b\u7684\u200b\u70b9\u200b\uff08\u200b\u504f\u79bb\u200b\u5747\u503c\u200b\u5f88\u200b\u8fdc\u200b\uff09\u200b\u7684\u200b\u6982\u7387\u200b\u5c31\u200b\u5f88\u200b\u4f4e\u200b.

              \u200b\u56de\u5230\u200b DDPM \u200b\u7684\u200b\u5411\u524d\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u8d77\u70b9\u200b\u662f\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b\uff081\uff0c2\uff09\uff0c\u200b\u6211\u4eec\u200b\u8d70\u200b\u4e86\u200b\u4e00\u6b65\u200b\u4e4b\u540e\u200b\uff0c\u200b\u5c31\u200b\u4e0d\u518d\u200b\u5f97\u5230\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u800c\u662f\u200b\u5f97\u5230\u200b\u4e00\u4e2a\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b\u53ef\u4ee5\u200b\u8fd1\u4f3c\u200b\u770b\u6210\u200b\u5747\u503c\u200b\u4e3a\u200b\uff081\uff0c2\uff09\u200b\u7684\u200b\u6982\u7387\u5206\u5e03\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u60f3\u50cf\u200b\u6211\u4eec\u200b\u4ece\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e00\u4e2a\u70b9\u200b\u51fa\u53d1\u200b\uff0c\u200b\u8d70\u200b\u4e86\u200b\u4e00\u6b65\u200b\u540e\u200b\uff0c\u200b\u53ef\u80fd\u200b\u5728\u200b\u4ee5\u200b\u5176\u200b\u4e3a\u200b\u5706\u5fc3\u200b\u7684\u200b\u4efb\u4f55\u200b\u4e00\u4e2a\u200b\u5730\u65b9\u200b\u4e0a\u200b\uff0c\u200b\u4e0d\u540c\u200b\u7684\u200b\u8ddd\u79bb\u200b\uff0c\u200b\u6982\u7387\u200b\u90fd\u200b\u4e0d\u540c\u200b\uff08\u200b\u53ef\u4ee5\u200b\u7c7b\u6bd4\u200b\u7535\u5b50\u4e91\u200b\uff09.\u200b\u6211\u4eec\u200b\u518d\u200b\u8d70\u200b\u7b2c\u4e8c\u6b65\u200b\uff0c\u200b\u8ddd\u79bb\u200b\u5c31\u200b\u4f1a\u200b\u66f4\u200b\u8fdc\u200b\u4e00\u4e9b\u200b\uff0c\u200b\u6982\u7387\u5206\u5e03\u200b\u66f4\u200b\u5206\u6563\u200b\u4e00\u4e9b\u200b.

              \u200b\u6309\u7167\u200b\u539f\u6587\u200b\u8d70\u51fa\u200b\u4e00\u5343\u6b65\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u56fe\u50cf\u200b\u5c31\u200b\u4f1a\u200b\u53d8\u6210\u200b\u4e00\u4e2a\u200b\u4ee5\u200b\u539f\u56fe\u200b\u4e3a\u200b\u5706\u5fc3\u200b\u7684\u200b\u5f25\u6563\u200b\u7684\u200b\u5e7f\u9614\u200b\u7684\u200b\u7c7b\u4f3c\u200b\u7403\u200b\u7684\u200b\u6982\u7387\u5206\u5e03\u200b\u5185\u200b\u4e86\u200b.\u200b\u56e0\u200b\u5176\u200b\u5e7f\u9614\u200b\uff0c\u200b\u6211\u4eec\u200b\u5927\u6982\u200b\u6700\u7ec8\u200b\u4f1a\u200b\u505c\u200b\u5728\u200b\u67d0\u200b\u4e00\u4e2a\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\u4e0a\u200b.\u200b\u6ce8\u610f\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6211\u200b\u8bf4\u200b\u7684\u200b\u505c\u200b\u5728\u200b\u4e00\u4e2a\u200b\u566a\u70b9\u200b\u4e0a\u200b\uff0c\u200b\u662f\u200b\u6307\u200b\u4ece\u200b\u6700\u7ec8\u200b\u7684\u200b\u5206\u5e03\u200b\u4e2d\u53d6\u200b\u5747\u503c\u200b\u6216\u8005\u200b\u968f\u673a\u200b\u91c7\u6837\u200b\u5f97\u5230\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u4ee5\u200b\u4ece\u200b\u5206\u5e03\u200b\u8dcc\u56de\u200b\u786e\u5b9a\u200b\u503c\u200b.

              \u200b\u539f\u6587\u4e2d\u200b\u7ed9\u51fa\u200b\u4e86\u200b\u6bcf\u6b65\u200b\u600e\u4e48\u200b\u8d70\u200b\u7684\u200b\u516c\u5f0f\u200b\uff0c\u200b\u5176\u200b\u5177\u6709\u200b\u7684\u200b\u826f\u597d\u200b\u6027\u8d28\u200b\u5c31\u662f\u200b\uff1a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u4ece\u200b\u7ed9\u200b\u8ba2\u200b\u7684\u200b\u8d77\u70b9\u200b\uff0c\\(\\alpha\\)\uff0c\\(\\beta\\)\u200b\u4e2d\u200b\u76f4\u63a5\u200b\u63a8\u51fa\u200b\u7b2c\u200b N \u200b\u6b65\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u5e03\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\uff0c1k \u200b\u6b65\u540e\u200b\\(\\bar \\alpha\\)\u200b\u63a5\u8fd1\u200b\u4e8e\u6797\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u5206\u5e03\u200b\u53d6\u200b\u5747\u503c\u200b\u4e5f\u200b\u662f\u200b\u53d6\u200b\u4e0d\u5230\u200b\u539f\u56fe\u200b\u7684\u200b\u4e86\u200b\uff0c\u200b\u5747\u503c\u200b\u5df2\u7ecf\u200b\u5728\u200b 0 \u200b\u9644\u8fd1\u200b.\u200b\u603b\u4f53\u200b\u5206\u5e03\u200b\u63a5\u8fd1\u200b\u9ad8\u65af\u5206\u5e03\u200b.

              "},{"location":"Research/Diffusion%20Model/DDPM/#_3","title":"\u56de\u5230\u200b\u8d77\u70b9","text":"

              \u200b\u4ece\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\u8d70\u51fa\u200b 1000 \u200b\u6b65\u200b\uff0c\u200b\u5230\u8fbe\u200b\u7684\u200b\u7ec8\u70b9\u200b\uff0c\u200b\u8fd1\u4e4e\u200b\u670d\u4ece\u200b\u9ad8\u65af\u5206\u5e03\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u76f4\u63a5\u200b\u4ece\u200b\u9ad8\u65af\u5206\u5e03\u200b\u91c7\u6837\u200b\uff0c\u200b\u5c31\u200b\u80fd\u200b\u5f97\u5230\u200b\u8fd1\u4f3c\u200b\u4ece\u200b\u67d0\u4e2a\u200b/\u200b\u4efb\u4f55\u200b\u4e00\u4e2a\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\u51fa\u8d70\u200b\u6240\u200b\u8fbe\u5230\u200b\u7684\u200b\u7ec8\u70b9\u200b\u4e86\u200b\uff0c\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u60f3\u200b\u56de\u53bb\u200b\uff0c\u200b\u600e\u4e48\u200b\u56de\u200b\uff1f

              \u200b\u5230\u200b\u8fd9\u91cc\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u89e3\u7b54\u200b\u539f\u200b\u6a21\u578b\u200b\u4e2d\u200b\u4e00\u4e2a\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u4ee4\u4eba\u56f0\u60d1\u200b\u7684\u200b\u70b9\u200b\u4e86\u200b\uff0c\u200b\u5047\u5982\u200b\u6211\u4eec\u200b\u8d70\u200b\u4e86\u200b 500 \u200b\u6b65\u200b\uff0c\u200b\u5230\u200b\u4e86\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u8d70\u200b\u4e0b\u200b\u4e00\u6b65\u200b\uff0c\u200b\u5c31\u662f\u200b\u8d70\u200b\u5230\u200b 500 \u200b\u4e3a\u200b\u5706\u5fc3\u200b\u7684\u200b\u4e00\u4e2a\u200b\u6982\u7387\u5206\u5e03\u200b\u4e0a\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u8bad\u7ec3\u200b\u4e00\u4e2a\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u6765\u200b\u62df\u5408\u200b\u7684\u8bdd\u200b\uff0c\u200b\u4e0d\u200b\u5c31\u662f\u200b\u5728\u200b\u62df\u5408\u200b\u9ad8\u65af\u200b\u5417\u200b\uff0c\u200b\u9ad8\u65af\u200b\u53c8\u200b\u4f55\u987b\u200b\u62df\u5408\u200b\u5462\u200b\uff1f

              \u200b\u95ee\u9898\u200b\u5c31\u200b\u5728\u200b\u8fd9\u91cc\u200b\u4e86\u200b\uff0c\u200b\u73b0\u5728\u200b\u6211\u4eec\u200b\u968f\u673a\u200b\u91c7\u4e86\u200b\u4e00\u4e2a\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u8bf4\u200b\u662f\u200b\u7ec8\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u8d70\u200b\u56de\u53bb\u200b\uff0c\u200b\u5f53\u7136\u200b\u4e0d\u80fd\u200b\u4ee5\u200b\u6bcf\u200b\u4e00\u6b65\u200b\u90fd\u200b\u662f\u200b\u9ad8\u65af\u200b\u8d70\u200b\uff0c\u200b\u90a3\u200b\u6700\u7ec8\u200b\u8d70\u5230\u200b\u7684\u200b\u8fd8\u662f\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u77e5\u9053\u200b\uff0c\u200b\u6211\u200b\u73b0\u5728\u200b\u5728\u200b\u8fd9\u91cc\u200b\uff0c\u200b\u90a3\u200b\u6211\u200b\u4e0a\u200b\u4e00\u6b65\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u662f\u4ece\u200b\u54ea\u91cc\u200b\u6765\u200b\u7684\u200b\uff1f\u200b\u6211\u8981\u200b\u56de\u5230\u200b\u90a3\u4e2a\u200b\u5730\u65b9\u200b\u53bb\u200b.

              \u200b\u60f3\u8c61\u200b\u4e00\u4e0b\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u91c7\u6837\u200b\u7684\u200b\u70b9\u200b\u5728\u200b\u8d77\u70b9\u200b\u90a3\u4e2a\u200b\u5706\u200b\u7684\u200b\u4e0a\u65b9\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u7684\u200b\u56de\u7b54\u200b\u662f\u200b\uff1a\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u4ece\u200b\u4e0b\u9762\u200b\u6765\u200b\uff0c\u200b\u8981\u200b\u56de\u53bb\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5f80\u4e0b\u8d70\u200b.\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u5728\u200b\u4e0b\u9762\u200b\uff0c\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u4ece\u200b\u4e0a\u9762\u200b\u6765\u200b\uff0c\u200b\u5f80\u4e0a\u8d70\u200b.\u200b\u6240\u4ee5\u200b\uff0c\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u4ece\u200b\u54ea\u91cc\u200b\u6765\u4f1a\u200b\u968f\u7740\u200b\u6211\u200b\u73b0\u5728\u200b\u5728\u200b\u54ea\u91cc\u200b\u800c\u200b\u53d8\u5316\u200b\uff0c\u200b\u6240\u4ee5\u200b\uff0c\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u9884\u6d4b\u200b\u7684\u200b\u65f6\u5019\u200b\u9700\u8981\u200b\u6211\u4eec\u200b\u73b0\u5728\u200b\u7684\u200b\u4f4d\u7f6e\u200b\uff08\\(x_t\\)\uff09\u200b\u548c\u200b\u65f6\u95f4\u200b\uff0c\u200b\u6765\u200b\u62df\u5408\u200b\u6211\u4eec\u200b\u6700\u6709\u200b\u53ef\u80fd\u200b\u6765\u200b\u7684\u200b\u4f4d\u7f6e\u200b.

              \u200b\u4e8e\u662f\u200b\u6211\u4eec\u200b\u5f00\u59cb\u200b\u8bad\u7ec3\u200b\uff0c\u200b\u7b2c\u4e00\u6b21\u200b\u8bad\u7ec3\u200b\u53ef\u80fd\u200b\u7f51\u7edc\u200b\u4e00\u6b65\u6b65\u200b\u5f80\u4e0a\u8d70\u200b\uff0c\u200b\u4f7f\u5f97\u200b\u6a21\u578b\u200b\u503e\u5411\u200b\u4e8e\u200b\u5728\u200b\u8fd9\u4e9b\u200b\u8def\u5f84\u200b\u70b9\u4e0a\u200b\u8f93\u51fa\u200b\uff1a\u200b\u563f\u200b\uff0c\u200b\u6211\u200b\u662f\u4ece\u200b\u4e0b\u9762\u200b\u6765\u200b\u7684\u200b\uff0c\u200b\u5f80\u4e0b\u8d70\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u56de\u53bb\u200b.\u200b\u7b2c\u4e8c\u6b21\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u80fd\u200b\u5f80\u200b\u5de6\u200b\u8d70\u200b\uff0c\u200b\u540c\u6837\u200b\u8ba9\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u5728\u200b\u8fd9\u6761\u200b\u8def\u5f84\u200b\u4e0a\u200b\u61c2\u5f97\u200b\u5982\u4f55\u200b\u56de\u5f52\u200b.\u200b\u6700\u7ec8\u200b\uff0c\u200b\u8bad\u7ec3\u200b\u5b8c\u6bd5\u200b\u540e\u200b\uff0c\u200b\u795e\u7ecf\u7f51\u7edc\u200b\u5c31\u200b\u61c2\u5f97\u200b\u5982\u4f55\u200b\u4ece\u200b\u4efb\u610f\u200b\u4e00\u4e2a\u70b9\u200b\u8d70\u200b\u56de\u53bb\u200b\u4e86\u200b.

              \u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8981\u200b\u8bbe\u8ba1\u200b\u5408\u9002\u200b\u7684\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u8ba9\u200b\u8bad\u7ec3\u200b\u8fc7\u7a0b\u200b\u53ef\u4ee5\u200b\u66f4\u597d\u200b\u7684\u200b\u9886\u8def\u200b\u56de\u53bb\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u662f\u200b\u6587\u7ae0\u200b\u4e2d\u200b\u6570\u5b66\u200b\u90e8\u5206\u200b\u5206\u6790\u200b\u7684\u200b\u5de5\u4f5c\u200b\u4e86\u200b.

              "},{"location":"Research/Diffusion%20Model/DDPM/#_4","title":"\u795e\u5947\u200b\u7684\u200b\u8bed\u610f\u200b\u878d\u5408","text":"

              \u200b\u6211\u200b\u4e5f\u200b\u4e0d\u200b\u77e5\u9053\u200b\u5728\u200b\u8fd9\u91cc\u200b\u9002\u7528\u200b\u4e8e\u200b\u4ee5\u200b\u878d\u5408\u200b\u5bf9\u200b\u4e0d\u200b\u5bf9\u200b\uff0c\u200b\u4f46\u200b\u4e8b\u5b9e\u200b\u5c31\u662f\u200b\uff0c\u200b\u8f93\u5165\u200b\u7684\u200b\u8d77\u70b9\u200b\u4e0d\u200b\u552f\u4e00\u200b\uff0c\u200b\u6211\u4eec\u200b\u6700\u540e\u200b\u8d70\u200b\u56de\u6765\u200b\u7684\u8bdd\u200b\uff0c\u200b\u4e0d\u4ec5\u200b\u53ef\u4ee5\u200b\u8d70\u200b\u56de\u200b\u8d77\u70b9\u200b\uff0c\u200b\u800c\u4e14\u200b\u53ef\u4ee5\u200b\u8d70\u200b\u56de\u200b\u8d77\u70b9\u200b\u4e4b\u95f4\u200b\u7684\u200b\u6709\u200b\u610f\u4e49\u200b\u7684\u200b\u70b9\u200b\uff0c\u200b\u6bd4\u5982\u200b\u8f93\u5165\u200b\u6ee1\u6708\u200b\u548c\u200b\u534a\u6708\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u751f\u6210\u200b \u00be \u200b\u6708\u200b\uff0c\u200b\u8fd9\u200b\u4e24\u5e45\u200b\u56fe\u200b\u5728\u200b\u7a7a\u95f4\u200b\u4e2d\u200b\u7684\u200b\u4e0d\u540c\u70b9\u200b\u4e0a\u200b\uff0c\u200b\u76f8\u805a\u200b\u6709\u200b\u4e00\u6bb5\u8ddd\u79bb\u200b\uff0c\u200b\u4ed6\u4eec\u200b\u4e2d\u95f4\u200b\u7684\u200b\u70b9\u200b\u5927\u90e8\u5206\u200b\u90fd\u200b\u662f\u200b\u65e0\u200b\u610f\u4e49\u200b\u7684\u200b\u566a\u70b9\u200b\uff0c\u200b\u4f46\u662f\u200b\u5374\u200b\u80fd\u200b\u88ab\u200b\u6210\u529f\u200b\u8d70\u200b\u5230\u200b\uff0c\u200b\u5b9e\u5728\u200b\u662f\u200b\u795e\u5947\u200b.

              "},{"location":"Research/Diffusion%20Model/DDPM/#_5","title":"\u8fdb\u4e00\u6b65\u200b\u7684\u200b\u5b66\u4e60","text":"

              \u200b\u4ee5\u4e0a\u200b\u662f\u200b\u5bf9\u200b DDPM \u200b\u7684\u200b\u4e00\u4e2a\u200b\u7406\u89e3\u200b\u7684\u200b\u89d2\u5ea6\u200b\uff0c\u200b\u5927\u4f6c\u200b\u7684\u200b\u535a\u5ba2\u200b\u8fd8\u200b\u7ed9\u51fa\u200b\u4e86\u200b\u5bf9\u4e8e\u200b DDPM \u200b\u7684\u200b\u4e24\u79cd\u200b\u4e0d\u540c\u200b\u7684\u200b\u7406\u89e3\u200b\u7684\u200b\u89c6\u89d2\u200b

              \u200b\u6211\u4eec\u200b\u5148\u8bfb\u200b\u7b2c\u4e00\u7bc7\u200b\uff0c\u200b\u8fd9\u7bc7\u200b\u53ef\u4ee5\u200b\u8ddf\u8bfb\u200b.\u200b\u9996\u5148\u200b\u6587\u7ae0\u200b\u8bf4\u660e\u200b\u4e86\u200b\u628a\u200b\u95ee\u9898\u200b\u5206\u89e3\u6210\u200b\u591a\u200b\u6b65\u200b\u53ef\u4ee5\u200b\u5927\u5e45\u5ea6\u63d0\u9ad8\u200b\u62df\u5408\u200b\u80fd\u529b\u200b\uff0c\u200b\u8fd9\u200b\u662f\u200b\u5f88\u200b\u6709\u200b\u6559\u4e49\u200b\u7684\u200b\u89c2\u5bdf\u200b.

              \u200b\u8054\u5408\u200b\u6563\u5ea6\u200b\u7684\u200b\u6700\u200b\u6d88\u5316\u200b\u76ee\u6807\u200b\u4e5f\u200b\u5f88\u200b\u597d\u200b\u7406\u89e3\u200b\uff0c\u200b\u9996\u5148\u200b\u8981\u200b\u77e5\u9053\u200b KL \u200b\u6563\u5ea6\u200b\u662f\u200b\u8861\u91cf\u200b\u4e24\u4e2a\u200b\u5206\u5e03\u200b\u4e4b\u95f4\u200b\u76f8\u8fd1\u200b\u7a0b\u5ea6\u200b\u7684\u200b\u975e\u8d1f\u200b\u51fd\u6570\u200b\uff0cKL \u200b\u6563\u5ea6\u200b\u4e3a\u200b\u96f6\u5f53\u4e14\u200b\u4ec5\u200b\u5f53\u200b\u4e24\u4e2a\u200b\u5206\u5e03\u200b\u5b8c\u5168\u76f8\u540c\u200b.\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u8d70\u200b\u51fa\u6765\u200b\u7684\u200b\u8def\u200b\u8ddf\u200b\u8d70\u200b\u56de\u53bb\u200b\u7684\u200b\u8def\u200b\u662f\u200b\u5c3d\u53ef\u80fd\u200b\u76f8\u8fd1\u200b\u7684\u200b\uff0c\u200b\u6240\u4ee5\u200b\u8981\u200b\u6700\u5c0f\u5316\u200b KL \u200b\u6563\u5ea6\u200b.

              \u200b\u968f\u540e\u200b\u5c31\u662f\u200b\u6570\u5b66\u200b\u5904\u7406\u200b\uff0c\u200b\u53bb\u6389\u200b\u6700\u5c0f\u5316\u200b\u76ee\u6807\u200b\u4e2d\u200b\u7684\u200b\u65e0\u5173\u200b\u5e38\u6570\u200b\u9879\u200b.\u200b\u5e76\u200b\u5316\u7b80\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u4f7f\u200b\u4e4b\u200b\u53ef\u7528\u200b.

              \u200b\u8d85\u53c2\u200b\u8bbe\u7f6e\u200b\u4e2d\u200b\uff0c\u200b\u8981\u6c42\u200b\u8fb9\u7f18\u200b\u5206\u5e03\u200b\u76f8\u7b49\u200b\uff0c\u200b\u5176\u5b9e\u200b\u5c31\u662f\u200b\u8981\u6c42\u200b\u7ec8\u70b9\u200b\u7684\u200b\u5206\u5e03\u200b\u8981\u200b\u8fd1\u4f3c\u4e8e\u200b\u9ad8\u65af\u200b\uff0c\u200b\u90a3\u200b\u5c31\u662f\u200b\\(\\bar \\alpha\\)\u200b\u8fd1\u4e4e\u200b 0 \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e86\u200b.

              \u200b\u6709\u200b\u4e86\u200b\u4e0a\u8ff0\u200b\u7684\u200b\u94fa\u57ab\u200b\uff0c\u200b\u6211\u200b\u8ba4\u4e3a\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b\u7684\u200b\u8109\u7edc\u200b\u662f\u200b\u76f8\u5f53\u200b\u6e05\u6670\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u8fdb\u5165\u200b\u4e0b\u200b\u4e00\u7bc7\u200b.

              \u200b\u7b2c\u4e09\u7bc7\u200b\u7684\u200b\u524d\u9762\u200b\u4e00\u5927\u90e8\u5206\u200b\u90fd\u200b\u8ddf\u200b\u7b2c\u4e00\u7bc7\u200b\u5b8c\u5168\u200b\u4e00\u6837\u200b\uff0c\u200b\u4f46\u200b\u5230\u200b\u4e86\u200b\u8d1d\u53f6\u65af\u200b\u7684\u200b\u90e8\u5206\u200b\uff0c\u200b\u5f00\u59cb\u200b\u6709\u200b\u4e86\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u77e5\u9053\u200b\uff0c\u200b\u5728\u200b DDPM \u200b\u4e2d\u200b\uff0c\\(p(x_{t-1}|x_t) = p(x_{t-1}|x_t\uff0cx_0)\\)\uff0c\u200b\u56e0\u4e3a\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u9a6c\u5c14\u53ef\u592b\u200b\u8fc7\u7a0b\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u6bcf\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u200b\u4ec5\u200b\u4e0e\u200b\u524d\u200b\u4e00\u200b\u72b6\u6001\u200b\u6709\u5173\u200b\uff0c\u200b\u800c\u200b\u4e0e\u200b\u66f4\u200b\u524d\u200b\u7684\u200b\u72b6\u6001\u200b\u65e0\u5173\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u7406\u89e3\u200b\u6210\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u200b\u9700\u8981\u200b\u77e5\u9053\u200b 500 \u200b\u6b65\u5230\u200b\u54ea\u91cc\u200b\u4e86\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u7ed9\u5b9a\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u80fd\u200b\u6709\u200b 501 \u200b\u6b65\u200b\u7684\u200b\u5206\u5e03\u200b\uff0c\u200b\u7b2c\u200b 0-499 \u200b\u6b65\u200b\uff0c\u200b\u7ed9\u200b\u4e0d\u200b\u7ed9\u200b\u90fd\u200b\u65e0\u6240\u8c13\u200b\uff0c\u200b\u4e0d\u200b\u6539\u53d8\u200b\u5206\u5e03\u200b\uff0c\u200b\u4f46\u662f\u200b\u5f15\u5165\u200b\u4e86\u200b\u8d77\u70b9\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u662f\u200b\u53ef\u4ee5\u200b\u4ece\u200b\u8d77\u70b9\u200b\u76f4\u63a5\u200b\u63a8\u200b\\(x_t\uff0cx_{t-1}\\)\u200b\u7684\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u8ba9\u200b\u6211\u4eec\u200b\u7684\u200b\u8d1d\u53f6\u65af\u200b\u516c\u5f0f\u200b\u4e2d\u200b\u8bb8\u591a\u200b\u9879\u200b\u6210\u4e3a\u200b\u5df2\u77e5\u200b.

              \u200b\u968f\u540e\u200b\u6211\u4eec\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u4e00\u8def\u200b\u63a8\u5bfc\u200b\u51fa\u200b\u635f\u5931\u200b\u51fd\u6570\u200b.\u200b\u6ce8\u610f\u200b\uff0c\u200b\u5728\u200b\u8fd9\u4e2a\u200b\u63a8\u5bfc\u200b\u6d41\u7a0b\u200b\u4e0b\u200b\\(x_0\\)\u200b\u7ed9\u5b9a\u200b\uff0c\u200b\u6211\u4eec\u200b\u80fd\u200b\u76f4\u63a5\u200b\u5f97\u5230\u200b\u5f80\u56de\u200b\u8d70\u200b\u7684\u200b\u65b9\u5411\u200b\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u552f\u4e00\u200b\u9700\u8981\u200b\u8bad\u7ec3\u200b\u7684\u200b\u662f\u200b\u6a21\u578b\u200b\u731c\u200b\u539f\u70b9\u200b\u7684\u200b\u80fd\u529b\u200b\uff0c\u200b\u800c\u200b\u8fd9\u200b\u4e00\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\uff0c\u200b\u6b63\u5982\u200b\u63a8\u5bfc\u200b\u51fa\u6765\u200b\u7684\u200b\u90a3\u6837\u200b\uff0c\u200b\u662f\u200b\u8ddf\u200b\u524d\u9762\u200b\u51e0\u4e2a\u200b\u89c6\u89d2\u200b\u4e00\u6837\u200b\u7684\u200b.

              \u200b\u5230\u200b\u4e86\u200b\u9884\u4f30\u200b\u4fee\u6b63\u200b\u4e00\u8282\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u884c\u4e3a\u200b\u6709\u200b\u53ef\u4ee5\u200b\u88ab\u200b\u89e3\u91ca\u200b\u4e3a\u200b\uff0c\u200b\u5148\u731c\u200b\u51fa\u200b\u4e00\u4e2a\u200b\u8d77\u70b9\u200b\uff0c\u200b\u5f80\u56de\u200b\u8d70\u200b\uff0c\u200b\u5e76\u200b\u901a\u8fc7\u200b\u635f\u5931\u200b\u51fd\u6570\u200b\u4fee\u6b63\u200b\u8d77\u70b9\u200b\uff0c\u200b\u7136\u540e\u200b\u8d70\u200b\u4e0b\u200b\u4e00\u6b21\u200b\uff0c\u200b\u8fd9\u6837\u200b\u6211\u4eec\u200b\u8d77\u70b9\u200b\u731c\u200b\u7684\u200b\u8d8a\u6765\u8d8a\u200b\u51c6\u200b\uff0c\u200b\u56de\u5230\u200b\u8d77\u70b9\u200b\u7684\u200b\u80fd\u529b\u200b\u4e5f\u200b\u8d8a\u6765\u8d8a\u200b\u5f3a\u200b\u4e86\u200b.

              \u200b\u6b64\u5904\u200b\u7684\u200b\u7b2c\u4e09\u79cd\u200b\u7406\u89e3\u200b\u662f\u200b\u4e0e\u200b\u540e\u6765\u200b\u7684\u200b DDIM \u200b\u6709\u200b\u5f88\u200b\u5f3a\u200b\u7684\u200b\u5173\u8054\u6027\u200b\u7684\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b\u6211\u4eec\u200b\u5229\u7528\u200b\u4e86\u200b\u8d1d\u53f6\u65af\u200b\u516c\u5f0f\u200b\u4e4b\u540e\u200b\u5176\u5b9e\u200b\u53ea\u200b\u9700\u8981\u200b\u5404\u4e2a\u200b\u65f6\u95f4\u200b\u70b9\u200b\u5bf9\u4e8e\u200b\\(x_0\\)\u200b\u7684\u200b\u5206\u5e03\u200b\u800c\u200b\u4e0d\u200b\u9700\u8981\u200b\u5176\u200b\u5bf9\u4e8e\u200b\u524d\u200b\u4e00\u4e2a\u200b\u65f6\u95f4\u200b\u70b9\u200b\u7684\u200b\u5206\u5e03\u200b\u4e86\u200b\uff0c\u200b\u4f46\u662f\u200b\u8981\u200b\u6ce8\u610f\u200b\uff0c\u200b\u6211\u4eec\u200b\u4ece\u540e\u200b\u5f80\u524d\u200b\u63a8\u200b\u4ecd\u7136\u200b\u9700\u8981\u200b\u4e00\u6b65\u200b\u4e00\u6b65\u200b\u8d70\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u4e00\u6b65\u200b\u8d70\u200b\u5b8c\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u9000\u5316\u200b\u56de\u200b VAE \u200b\u4e86\u200b.

              "},{"location":"blog/","title":"Blog","text":""},{"location":"blog/Minisql/","title":"Minisql","text":"

              \u200b\u7ea6\u200b 544 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

              Abstract

              Minisql \u200b\u662f\u200b\u8ba1\u7b97\u673a\u79d1\u5b66\u200b\u4e0e\u200b\u6280\u672f\u200b\u4e13\u4e1a\u200b\u5927\u4e8c\u200b\u6625\u590f\u200b\u7684\u200b\u5fc5\u4fee\u8bfe\u200b\u6570\u636e\u5e93\u7cfb\u7edf\u200b\u590f\u200b\u5b66\u671f\u200b\u7684\u200b\u5927\u7a0b\u200b.\u200b\u672c\u200b\u535a\u5ba2\u200b\u8bb0\u5f55\u200b\u4e86\u200b\u672c\u4eba\u200b\u5b9e\u73b0\u200b\u8fd9\u4e00\u200b\u6846\u67b6\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u9047\u5230\u200b\u7684\u200b\u95ee\u9898\u200b\u548c\u200b\u611f\u60f3\u200b.

              "},{"location":"blog/Minisql/#_1","title":"\u7b80\u4ecb","text":"

              \u200b\u5f88\u200b\u65e9\u5c31\u200b\u542c\u8bf4\u200b\u4e86\u200b Minisql \u200b\u7684\u200b\u5927\u540d\u200b\u4e86\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u8fd9\u4e2a\u200b\u5927\u4e8c\u200b\u6625\u590f\u200b\u5230\u6765\u200b\u7684\u200b\u636e\u8bf4\u200b\u975e\u5e38\u200b\u5e9e\u5927\u200b\u7684\u200b\u4e00\u4e2a\u200b\u5de5\u7a0b\u200b\uff0c\u200b\u6211\u200b\u5fc3\u91cc\u200b\u5176\u5b9e\u200b\u662f\u200b\u65e2\u200b\u975e\u5e38\u200b\u5bb3\u6015\u200b\u53c8\u200b\u975e\u5e38\u200b\u671f\u5f85\u200b\u7684\u200b\uff0c\u200b\u4e4b\u524d\u200b\u505a\u200b\u7684\u200b\u5927\u7a0b\u200b\u603b\u200b\u611f\u89c9\u200b\u7f3a\u200b\u90a3\u4e48\u200b\u70b9\u200b\u610f\u601d\u200b\uff0c\u200b\u4f46\u200b\u5230\u200b\u8fd9\u91cc\u200b\u5c31\u200b\u611f\u89c9\u200b\u5473\u200b\u5bf9\u200b\u4e86\u200b\uff08\u200b\u7b11\u200b\u54ed\u200b\uff09.

              \u200b\u8fd9\u200b\u7ed9\u200b\u9879\u76ee\u200b\u662f\u200b\u53ef\u4ee5\u200b\u7ec4\u961f\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5355\u5237\u200b\u7684\u200b\uff0c\u200b\u6211\u200b\u9009\u62e9\u200b\u4e86\u200b\u5355\u5237\u200b\u5b8c\u6210\u200b\uff0c\u200b\u4e2a\u4eba\u200b\u8ba4\u4e3a\u200b\u5de5\u4f5c\u91cf\u200b\u662f\u200b\u5355\u4eba\u200b\u53ef\u4ee5\u200b\u627f\u62c5\u200b\u7684\u200b\uff0c\u200b\u4e5f\u200b\u6bd4\u8f83\u200b\u63a8\u8350\u200b\u5355\u4eba\u200b\u5b8c\u6210\u200b.\u200b\u4e00\u662f\u200b\u5f88\u591a\u200b\u6a21\u5757\u200b\u53ea\u6709\u200b\u81ea\u5df1\u200b\u4e0a\u200b\u624b\u5199\u200b\u8fc7\u200b\u4e86\u200b\uff0cdebug \u200b\u8fc7\u200b\u4e86\u200b\u624d\u200b\u6709\u200b\u771f\u5207\u200b\u7684\u200b\u611f\u53d7\u200b\uff1b\u200b\u4e8c\u662f\u200b\u6211\u200b\u89c9\u5f97\u200b\u5f88\u9177\u200b\uff01\ud83d\ude0e

              "},{"location":"blog/Minisql/#_2","title":"\u6536\u83b7","text":"
              1. \u200b\u7ec3\u4e60\u200b\u5de9\u56fa\u200b\u4e86\u200b oop \u200b\u548c\u200b db\uff0c\u200b\u524d\u8005\u200b\u662f\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u9879\u76ee\u200b\u90fd\u200b\u662f\u200b\u7528\u200b C++\u200b\u5b9e\u73b0\u200b\u7684\u200b.\u200b\u540e\u8005\u200b\u662f\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u9879\u76ee\u200b\u5f88\u591a\u200b\u90e8\u5206\u200b\u90fd\u200b\u662f\u200b\u628a\u200b\u6570\u636e\u5e93\u200b\u7406\u8bba\u200b\u5e94\u5f53\u200b\u7528\u5230\u200b\u5b9e\u8df5\u200b\u4e2d\u200b.
              2. \u200b\u719f\u6089\u200b\u4e86\u200b\u5927\u200b\u9879\u76ee\u200b\u7684\u200b\u6846\u67b6\u200b\uff0c\u200b\u4ee5\u53ca\u200b git\uff0ccmake \u200b\u7b49\u200b\u5de5\u5177\u200b\uff0c\u200b\u90fd\u200b\u662f\u200b\u5f88\u200b\u5b9e\u7528\u200b\u7684\u200b\u5de5\u5177\u200b\uff08\u200b\u5f53\u7136\u200b\u5728\u200b\u9879\u76ee\u200b\u4e2d\u200b\u6211\u4eec\u200b\u53ea\u200b\u4fdd\u6301\u200b\u6700\u4f4e\u200b\u9650\u5ea6\u200b\u7684\u200b\u4f7f\u7528\u200b\u4e5f\u200b\u662f\u200b\u53ef\u4ee5\u200b\u7684\u200b\uff0c\u200b\u4f46\u662f\u200b\u611f\u5174\u8da3\u200b\u7684\u8bdd\u200b\u5b8c\u5168\u200b\u53ef\u4ee5\u200b\u8d81\u200b\u8fd9\u4e2a\u200b\u673a\u4f1a\u200b\u719f\u6089\u8d77\u6765\u200b\uff09
              3. \u200b\u719f\u6089\u200b\u4e86\u200b\u4e00\u4e9b\u200b\u8c03\u8bd5\u200b\u7684\u200b\u6280\u5de7\u200b\u548c\u200b\u597d\u200b\u7528\u200b\u7684\u200b\u6027\u80fd\u200b\u5206\u6790\u200b\u5de5\u5177\u200b
              4. \u200b\u53c8\u200b\u88ab\u200b\u642d\u200b\u73af\u5883\u200b\u6298\u78e8\u200b\u4e86\u200b\u4e00\u904d\u200b\uff0c\u200b\u6297\u9006\u6027\u200b\u63d0\u9ad8\u200b\u4e86\u200b\uff01\ud83d\ude05
              "},{"location":"blog/Minisql/#_3","title":"\u603b\u7eb2","text":"

              \u200b\u8fd9\u90e8\u5206\u200b\u535a\u5ba2\u200b\u7684\u200b\u7ec4\u7ec7\u200b\u5f62\u5f0f\u200b\u5927\u4f53\u200b\u8fd8\u662f\u200b\u6309\u7167\u200b\u9879\u76ee\u200b\u4e3b\u9875\u200b\u4e0a\u200b\u533a\u5206\u200b\u7684\u200b\u6a21\u5757\u200b\u987a\u5e8f\u200b\u6765\u200b\u7684\u200b\uff0c\u200b\u5728\u200b\u6700\u200b\u5f00\u5934\u200b\u8fd8\u6709\u200b\u4e00\u4e2a\u200b\u642d\u5efa\u200b\u73af\u5883\u200b\u7684\u200b\u8e29\u200b\u5751\u200b\u8bb0\u5f55\u200b.

              \u200b\u5728\u200b\u5177\u4f53\u200b\u5b9e\u73b0\u200b\u7684\u200b\u5404\u200b\u90e8\u5206\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u200b\u4e3b\u8981\u200b\u662f\u200b\u4f1a\u200b\u4ecb\u7ecd\u200b\u8fd9\u4e9b\u200b\u6a21\u5757\u200b\u91cc\u9762\u200b\u5404\u4e2a\u200b\u7ed3\u6784\u200b\u3001\u200b\u51fd\u6570\u200b\u5728\u200b\u4ec0\u4e48\u200b\u60c5\u5883\u200b\u4e0b\u200b\u5e94\u8be5\u200b\u88ab\u200b\u8c03\u7528\u200b\uff0c\u200b\u88ab\u200b\u8c03\u7528\u200b\u6765\u200b\u505a\u200b\u4ec0\u4e48\u200b\u4e8b\u200b\uff0c\u200b\u6574\u4e2a\u200b\u5927\u200b\u7684\u200b\u6a21\u5757\u200b\u5728\u200b\u505a\u200b\u4ec0\u4e48\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5982\u4f55\u200b\u4f18\u5316\u200b.

              \u200b\u53ef\u4ee5\u200b\u8bf4\u200b\u548c\u200b\u9879\u76ee\u200b\u4e3b\u9875\u200b\u4e0a\u200b\u7684\u200b\u5185\u5bb9\u200b\u5728\u200b\u503e\u5411\u6027\u200b\u4e0a\u200b\u6709\u200b\u4e00\u4e9b\u200b\u91cd\u53e0\u200b\uff0c\u200b\u4f46\u200b\u4eba\u5bb6\u200b\u8bf4\u200b\u8fc7\u200b\u4e86\u200b\u6211\u200b\u5c31\u200b\u5c3d\u91cf\u200b\u4e0d\u518d\u200b\u91cd\u590d\u200b\u4e86\u200b\uff0c\u200b\u4e3b\u8981\u200b\u662f\u4ece\u200b\u4e00\u4e2a\u200b\u5b9e\u73b0\u200b\u8005\u200b\u7684\u200b\u89d2\u5ea6\u200b\u6765\u8bb2\u200b\u56f0\u60d1\u200b\u548c\u200b\u7406\u89e3\u200b\u7684\u200b.

              "},{"location":"blog/Minisql/minisql_part0/","title":"Minisql Environment Configurations","text":"

              \u200b\u7ea6\u200b 602 \u200b\u4e2a\u200b\u5b57\u200b 24 \u200b\u884c\u200b\u4ee3\u7801\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

              Abstract

              \u200b\u867d\u7136\u200b\u5df2\u7ecf\u200b\u642d\u51fa\u200b\u80fd\u200b\u7528\u200b\u7684\u200b\u73af\u5883\u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u8fd8\u662f\u200b\u5f88\u96be\u200b\u4e0d\u200b\u5728\u200b\u5f00\u5934\u200b\u653e\u200b\u4e0a\u200b\u4e09\u4e2a\u200b\u6d41\u6c57\u200b\u9ec4\u8c46\u200b\u6765\u200b\u8868\u8fbe\u200b\u6211\u200b\u5bf9\u200b\u642d\u200b\u73af\u5883\u200b\u8fd9\u4ef6\u200b\u4e8b\u200b\u7684\u200b\u65e0\u8bed\u200b\ud83d\ude05\ud83d\ude05\ud83d\ude05

              "},{"location":"blog/Minisql/minisql_part0/#_1","title":"\u521d\u8bd5\u200b\uff1a\u200b\u672c\u5730\u200b\u8fd0\u884c","text":"

              \u200b\u672c\u4eba\u200b\u76ee\u524d\u200b\u4f7f\u7528\u200b\u7684\u200b\u7684\u200b MacBookPro\uff0cMacOS Ventura13.3.1. \u200b\u76f4\u8bf4\u200b\u7684\u8bdd\u200b\uff0c\u200b\u672c\u5730\u200b\u8fd0\u884c\u200b\u7684\u200b\u5c1d\u8bd5\u200b\u5931\u8d25\u200b\u4e86\u200b\ud83d\ude05

              "},{"location":"blog/Minisql/minisql_part0/#cmake","title":"Cmake","text":"

              \u200b\u7b2c\u4e00\u4e2a\u200b\u5751\u200b\u662f\u200b cmake \u200b\u9636\u6bb5\u200b \u200b\u6709\u200b\u5982\u4e0b\u200b\u7684\u200b\u7ecf\u5178\u200b\u62a5\u9519\u200b\uff08\u200b\u7ecf\u5178\u200b\u662f\u56e0\u4e3a\u200b\u6211\u89c1\u200b\u8fc7\u200b\u4ed6\u200b\u65e0\u6570\u6b21\u200b\u4e86\u200b\uff09\uff1a

              cmake ..                                                                                                                                                                                       \u2500\u256f\nCMake Error at /Users/xxx/opt/anaconda3/lib/cmake/GTest/GTestTargets.cmake:37 (message):\n  Some (but not all) targets in this export set were already defined.\n\n  Targets Defined: GTest::gtest;GTest::gtest_main\n\n  Targets not yet defined: GTest::gmock;GTest::gmock_main\n\nCall Stack (most recent call first):\n  /Users/xxx/opt/anaconda3/lib/cmake/GTest/GTestConfig.cmake:32 (include)\n  thirdparty/glog/CMakeLists.txt:71 (find_package)\n

              \u200b\u6211\u200b\u4e0d\u200b\u61c2\u200b cmake\uff0c\u200b\u4e5f\u200b\u641c\u200b\u4e0d\u5230\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u611f\u89c9\u200b\u53ef\u80fd\u200b\u8ddf\u200b\u7248\u672c\u200b\u517c\u5bb9\u200b\u5565\u200b\u7684\u200b\u6709\u5173\u200b\uff08\u200b\u6709\u200b\u77e5\u9053\u200b\u7684\u200b\u5927\u4f6c\u200b\u53ef\u4ee5\u200b\u76f4\u63a5\u200b\u5728\u200b\u8bc4\u8bba\u200b\u533a\u91cc\u200b\u8bf4\u200b\u8bf4\u200b\uff0c\u200b\u611f\u8c22\u200b\uff01\uff09\u200b\u4e0d\u8fc7\u200b\u6211\u200b\u770b\u5230\u200b\u4e86\u200b\u62a5\u9519\u200b\u8def\u5f84\u200b\u4e0a\u200b\u4e86\u200b anaconda3\uff0c\u200b\u60f3\u200b\u8d77\u6765\u200b\u6211\u200b\u7ec8\u7aef\u200b\u7684\u200b\u73af\u5883\u200b\u8fd8\u662f\u200b conda base\uff0c\u200b\u6240\u4ee5\u200b\u6211\u200b\u4e00\u4e2a\u200bconda deactivae\u200b\u540e\u200b\uff0c\u200b\u91cd\u5efa\u200b build \u200b\u76ee\u5f55\u200b\uff0c\u200b\u518d\u200b cmake \u200b\u5c31\u200b\u6ca1\u6709\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u4e86\u200b.

              \u200b\u4f46\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u53ea\u662f\u200b\u88ab\u200b\u6682\u65f6\u200b\u4fee\u590d\u200b\u4e86\u200b\u7b97\u662f\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u200b\u8c03\u7528\u200b VSCode \u200b\u7684\u200b cmake \u200b\u63d2\u4ef6\u200b\u5565\u200b\u7684\u200b\u8fd8\u662f\u200b\u4f1a\u200b\u8fd9\u6837\u200b\uff0c\u200b\u6211\u200b\u4e5f\u200b\u6ca1\u200b\u627e\u200b\u51fa\u6765\u200b\u8fd9\u91cc\u200b\u7684\u200b\u8981\u200b\u600e\u4e48\u200b\u89e3\u51b3\u200b.

              "},{"location":"blog/Minisql/minisql_part0/#make","title":"Make","text":"

              Cmake \u200b\u901a\u200b\u4e86\u200b Make \u200b\u53c8\u200b\u4e0d\u901a\u200b\ud83d\ude05 \u200b\u62a5\u9519\u200b\u5982\u4e0b\u200b\uff1a

              In file included from /Users/xxx/Desktop/minisql/src/executor/execute_engine.cpp:1:\nIn file included from /Users/xxx/Desktop/minisql/src/include/executor/execute_engine.h:5:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/string:551:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/string_view:222:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/algorithm:1851:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__algorithm/ranges_sample.h:13:\nIn file included from /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__algorithm/sample.h:18:\n/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/c++/v1/__random/uniform_int_distribution.h:162:5: error: static_assert failed due to requirement '__libcpp_random_is_valid_inttype<char>::value' \"IntType must be a supported integer type\"\n    static_assert(__libcpp_random_is_valid_inttype<_IntType>::value\uff0c \"IntType must be a supported integer type\");\n    ^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/Users/xxx/Desktop/minisql/test/include/utils/utils.h:24:41: note: in instantiation of template class 'std::uniform_int_distribution<char>' requested here\n    std::uniform_int_distribution<char> uniform_dist(33\uff0c 122);\n
              \u200b\u770b\u8d77\u6765\u200b\u662f\u200b\u6846\u67b6\u200b\u91cc\u200b\u5b9e\u4f8b\u200b\u5316\u200b\u6a21\u677f\u200b\u7684\u200b\u65f6\u5019\u200b\u7528\u200b\u7684\u200b\u7684\u200b char \u200b\u7c7b\u578b\u200b\uff0c\u200b\u4f46\u662f\u200b\u8fd9\u91cc\u200b\u4e0d\u8ba9\u200b\u7528\u200b char \u200b\u7c7b\u578b\u200b\uff0c\u200b\u90a3\u200b\u600e\u4e48\u529e\u200b\uff0c\u200b\u8981\u200b\u6211\u200b\u53bb\u200b\u6539\u200b\u6846\u67b6\u200b\u5417\u200b\uff0c\u200b\u8fd9\u200b\u73a9\u610f\u200b\u4e07\u4e00\u200b\u8026\u5408\u200b\u7684\u200b\u5f88\u200b\u7d27\u200b\u6211\u200b\u7684\u200b\u7406\u89e3\u200b\u6210\u672c\u200b\u52a0\u200b\u4fee\u6539\u200b\u6210\u672c\u200b\u4f30\u8ba1\u200b\u90fd\u200b\u591f\u200b\u6211\u200b\u53d7\u200b\u7684\u200b\u4e86\u200b.\u200b\u8fd9\u91cc\u200b\u7684\u200b\u4e24\u4e2a\u200b\u9009\u62e9\u200b\u4e00\u4e2a\u200b\u662f\u200b\u6362\u4e2a\u200b SDK \u200b\u7248\u672c\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u4e0d\u200b\u77e5\u9053\u200b\u80fd\u200b\u4e0d\u80fd\u200b\u8d77\u6548\u200b\uff0c\u200b\u53e6\u200b\u4e00\u4e2a\u200b\u5c31\u662f\u200b\u8dd1\u200b\u8def\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u200b\u8fd8\u6709\u200b\u4e00\u53f0\u200b Windows \u200b\u6e38\u620f\u200b\u672c\u200b\uff0c\u200b\u6240\u4ee5\u200b\u679c\u65ad\u200b\u6da6\u200b\u4e86\u200b.

              "},{"location":"blog/Minisql/minisql_part0/#wsl2","title":"\u4e8c\u8bd5\u200b\uff1aWSL2","text":"

              \u200b\u6211\u200b\u7684\u200b Win \u200b\u672c\u200b\u65e9\u5c31\u200b\u88c5\u200b\u8fc7\u200b WSL2 \u200b\u4e86\u200b\uff0c\u200b\u4e4b\u524d\u200b\u8dd1\u200b\u4e00\u4e9b\u200b\u6a21\u578b\u200b\u7684\u200b\u65f6\u5019\u200b\u628a\u200b ssh \u200b\u5565\u200b\u7684\u200b\u4e5f\u200b\u914d\u597d\u200b\u4e86\u200b\uff08\u200b\u4e0d\u8fc7\u200b\u7389\u6e56\u200b\u53ea\u80fd\u200b\u7528\u200b\u52a8\u6001\u200b IP \u200b\u6211\u200b\u4e09\u5929\u4e24\u5934\u200b\u5c31\u200b\u5f97\u200b\u6362\u200b\u4e00\u4e0b\u200b\ud83d\ude05\uff09\uff0c\u200b\u6240\u4ee5\u200b\u6210\u672c\u200b\u5176\u5b9e\u200b\u4e0d\u200b\u5927\u200b. \u200b\u8fd9\u91cc\u200b\u9047\u5230\u200b\u4e24\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u4e00\u662f\u200b cmake \u200b\u9636\u6bb5\u200b\u8ddf\u200b\u4e0a\u9762\u200b\u4e00\u6837\u200b\u7684\u200b\u95ee\u9898\u200b\uff0c\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u8fd8\u662f\u200bconda deactivate\uff0c\u200b\u4e8c\u662f\u200b\u63d0\u793a\u200b\u6ca1\u6709\u200b gflag \u200b\u6a21\u5757\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u6700\u200b\u7b80\u5355\u200b\uff0c\u200b\u76f4\u63a5\u200b\u5b89\u88c5\u200b\u4e00\u4e0b\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b

              sudo apt-get install gflags\n

              \u200b\u7136\u540e\u200b\u5c31\u200b\u80fd\u200b\u8dd1\u200b\u4e86\u200b\uff0c\u200b\u867d\u7136\u200b\u5728\u200b\u8fd9\u91cc\u200b\u7528\u200b\u5404\u79cd\u200b Cmake \u200b\u63d2\u4ef6\u200b\u4e00\u7c7b\u200b\u7684\u200b\u8fd8\u662f\u200b\u6ca1\u200b\u4e00\u4e2a\u200b\u80fd\u200b\u8dd1\u200b\u7684\u200b\uff08\u200b\u62a5\u200b Cmake \u200b\u9636\u6bb5\u200b\u7684\u200b\u90a3\u4e2a\u200b\u9519\u200b\uff09\uff0c\u200b\u6211\u200b\u8bd5\u56fe\u7528\u200b Clion \u200b\u8fdc\u7a0b\u200b\u5f00\u53d1\u200b\u7ed3\u679c\u200b\u540e\u7aef\u200b\u4e5f\u200b\u5d29\u574f\u200b\u4e86\u200b\u5f00\u200b\u4e0d\u200b\u8d77\u6765\u200b\uff0c\u200b\u5404\u79cd\u200b\u4e8b\u60c5\u200b\u641e\u200b\u5f97\u200b\u6211\u200b\u5f88\u70e6\u200b\uff0c\u200b\u4f46\u200b\u603b\u7b97\u200b\u6709\u4e2a\u200b\u80fd\u200b\u7528\u200b\u7684\u200b VSCode + ssh + WSL2 \u200b\u7684\u200b\u65b9\u6848\u200b\u80fd\u200b\u8dd1\u200b\u4e86\u200b\uff0c\u200b\u4ed6\u200b\u7684\u200b\u4f18\u70b9\u200b\u662f\u200b\u80fd\u200b\u8dd1\u200b\uff0c\u200b\u7f3a\u70b9\u200b\u662f\u200b\u80fd\u200b\u8dd1\u200b\u7684\u200b\u8865\u96c6\u200b\uff0c\u200b\u4f46\u200b\u6211\u200b\u5b9e\u5728\u200b\u6298\u817e\u200b\u4e0d\u52a8\u200b\u4e86\u200b\u5c31\u200b\u5148\u200b\u8fd9\u6837\u200b\u4e86\u200b.

              "},{"location":"blog/Minisql/minisql_part1/","title":"Minisql#1 Disk and BufferPoolManager","text":"

              \u200b\u7ea6\u200b 475 \u200b\u4e2a\u200b\u5b57\u200b \u200b\u9884\u8ba1\u200b\u9605\u8bfb\u200b\u65f6\u95f4\u200b 2 \u200b\u5206\u949f\u200b

              Abstract

              \u200b\u8fd9\u200b\u4e00\u90e8\u5206\u200b\u4e3b\u8981\u200b\u8d1f\u8d23\u200b\u4e0e\u200b\u5185\u5b58\u200b\u78c1\u76d8\u7a7a\u95f4\u200b\u7533\u8bf7\u200b\u91ca\u653e\u200b\u7b49\u200b\u6253\u4ea4\u9053\u200b\uff0c\u200b\u5728\u200b\u9879\u76ee\u200b\u4e2d\u200b\u7684\u200b\u5730\u4f4d\u200b\u5927\u6982\u200b\u76f8\u5f53\u4e8e\u200bnew delete\uff0c\u200b\u6240\u4ee5\u200b\u8fd9\u200b\u4e00\u90e8\u5206\u200b\u5728\u200b\u540e\u7eed\u200b\u4f1a\u200b\u88ab\u200b\u9891\u7e41\u200b\u8c03\u7528\u200b\uff0c\u200b\u4e5f\u200b\u662f\u200b\u76f4\u63a5\u200b\u4e0e\u200b\u78c1\u76d8\u200b IO \u200b\u6253\u4ea4\u9053\u200b\u7684\u200b\uff0c\u200b\u5b9e\u73b0\u200b\u65e2\u200b\u8981\u6c42\u200b\u6b63\u786e\u200b\u53c8\u200b\u8981\u6c42\u200b\u6548\u7387\u200b

              "},{"location":"blog/Minisql/minisql_part1/#_1","title":"\u52a8\u673a","text":"

              \u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u624b\u5934\u4e0a\u200b\u73b0\u5728\u200b\u6709\u200b 65536\uff084096*16\uff09\u200b\u9875\u200b\uff08\u200b\u4e00\u9875\u200b\u4e3a\u200b 4096Bytes\uff09\u200b\u7684\u200b\u6570\u636e\u200b\u9700\u8981\u200b\u5b58\u5728\u200b\u78c1\u76d8\u200b\u4e0a\u200b\uff0c\u200b\u6700\u200b\u81ea\u7136\u200b\u7684\u200b\u60f3\u6cd5\u200b\u5c31\u662f\u200b\u6570\u7ec4\u200b\uff0c\u200b\u5b9e\u9645\u4e0a\u200b\u662f\u200b\u53d8\u957f\u200b\u6570\u7ec4\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b\u6587\u4ef6\u200b\u5c3e\u200b\u7ee7\u7eed\u200b\u5199\u5165\u200b\u65b0\u200b\u7684\u200b\u9875\u200b.

              \u200b\u4f46\u662f\u200b\uff0c\u200b\u6570\u636e\u5e93\u200b\u4f1a\u200b\u5bf9\u200b\u6570\u636e\u200b\u8fdb\u884c\u200b\u5220\u9664\u200b.\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u5206\u914d\u200b\u51fa\u53bb\u200b\u7b2c\u200b 0-9 \u200b\u9875\u200b\u7528\u4e8e\u200b\u8bb0\u5f55\u200b\u67d0\u4e2a\u200b\u8868\u200b\uff0c\u200b\u7136\u540e\u200b\u5220\u9664\u200b\u4e86\u200b\u5176\u4e2d\u200b\u7b2c\u200b 2\uff0c4\uff0c6 \u200b\u9875\u200b\u7684\u200b\u6570\u636e\u200b\uff0c\u200b\u90a3\u4e48\u200b\u4e0b\u6b21\u200b\u518d\u200b\u8bf7\u6c42\u200b\u9875\u9762\u200b\u6765\u200b\u5b58\u50a8\u200b\u4fe1\u606f\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7528\u200b\u8fd9\u200b\u7a7a\u95f2\u200b\u7684\u200b\u4e09\u9875\u200b\u6765\u200b\u5b58\u50a8\u200b.\u200b\u4e0d\u200b\u8fd9\u6837\u200b\u505a\u200b\uff0c\u200b\u90a3\u4e48\u200b\u9762\u5bf9\u200b\u7533\u8bf7\u200b 100 \u200b\u9875\u200b\uff0c\u200b\u5220\u200b 100 \u200b\u9875\u200b\uff0c\u200b\u7533\u8bf7\u200b 100 \u200b\u9875\u200b\uff0c\u200b\u5220\u200b 100 \u200b\u9875\u200b\u8fd9\u6837\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u672c\u6765\u200b\u53ea\u8981\u200b 100 \u200b\u9875\u200b\u7684\u200b\u7a7a\u95f4\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b9e\u73b0\u200b\uff0c\u200b\u5b9e\u9645\u4e0a\u200b\u5374\u4f1a\u82b1\u200b\u7684\u200b\u591a\u5f97\u591a\u200b.

              \u200b\u8fd9\u200b\u5c31\u200b\u5f15\u51fa\u200b\u4e86\u200b BitMap\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u62ff\u51fa\u200b\u4e00\u9875\u200b\u6765\u200b\uff0c\u200b\u628a\u200b\u8fd9\u200b\u4e00\u9875\u200b 4096 \u200b\u4e2a\u200b Byte\uff0c\u200b\u5373\u200b 32768 \u200b\u4e2a\u200b bit\uff0c\u200b\u6bcf\u4e2a\u200b bit \u200b\u7684\u200b 0 \u200b\u6307\u793a\u200b\u8be5\u9875\u200b\u672a\u200b\u88ab\u200b\u4f7f\u7528\u200b\uff0c1 \u200b\u6307\u793a\u200b\u5df2\u7ecf\u200b\u88ab\u200b\u4f7f\u7528\u200b\uff0c\u200b\u8fd9\u6837\u200b\u8fd9\u200b\u4e00\u9875\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7ba1\u7406\u200b\u5176\u540e\u200b\u7684\u200b 32768 \u200b\u9875\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u6bcf\u6b21\u200b\u90fd\u200b\u73b0\u5728\u200b\u5176\u4e2d\u200b\u627e\u200b 0\uff0c\u200b\u6ca1\u6709\u200b 0 \u200b\u4e86\u200b\uff0c\u200b\u624d\u200b\u53bb\u200b\u65b0\u5f00\u200b\u4e00\u9875\u200b.

              \u200b\u5f53\u7136\u200b\u5b9e\u9645\u4e0a\u200b\u8fd9\u200b\u4e00\u9875\u200b\u7684\u200b 4096B \u200b\u6211\u4eec\u200b\u4e0d\u4f1a\u200b\u90fd\u200b\u62ff\u200b\u53bb\u200b\u7528\u6765\u200b\u8bb0\u5f55\u200b\u4f7f\u7528\u200b\u60c5\u51b5\u200b\uff0c\u200b\u8fd8\u6709\u200b\u4e00\u4e9b\u200b\u5143\u200b\u6570\u636e\u200b\u6bd4\u5982\u200b\u8bb0\u5f55\u200b\u76ee\u524d\u200b\u4ee5\u200b\u5360\u7528\u200b\u7684\u200b\u6709\u200b 10 \u200b\u9875\u200b\u7b49\u7b49\u200b.

              \u200b\u4f46\u200b\u6ce8\u610f\u200b\u7b2c\u4e00\u6bb5\u200b\u5047\u8bbe\u200b\u6211\u4eec\u200b\u6709\u200b 65536 \u200b\u9875\u200b\u8981\u200b\u5b58\u200b\uff0c\u200b\u4e00\u9875\u200b BitMap \u200b\u4e0d\u591f\u200b\uff0c\u200b\u90a3\u200b\u5c31\u200b\u591a\u6765\u200b\u51e0\u4e2a\u200b.\u200b\u6211\u4eec\u200b\u628a\u200b 1 \u200b\u9875\u200b BitMap \u200b\u548c\u200b\u540e\u9762\u200b\u7684\u200b\uff08\u200b\u5927\u6982\u200b\uff0932767 \u200b\u9875\u200b\u79f0\u4e3a\u200b\u4e00\u6bb5\u200b(extent)\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u4e24\u6bb5\u200b\u6765\u200b\u5b58\u50a8\u200b 65536 \u200b\u9875\u200b\uff0c\u200b\u5728\u200b\u6700\u200b\u524d\u9762\u200b\u6765\u4e2a\u200b Disk Meta Page \u200b\u6765\u200b\u7ba1\u7406\u200b\u6240\u6709\u200b\u9875\u200b.

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/","title":"\u8ba1\u7b97\u673a\u200b\u4f53\u7cfb\u7ed3\u6784\u200b - lab4 Cache","text":"

              Abstract

              \u200b\u4ecb\u7ecd\u200b\u4e00\u4e0b\u200b\u5b9e\u9a8c\u200b\u4e2d\u200b Cache \u200b\u8bbe\u8ba1\u200b\u7684\u200b\u601d\u60f3\u200b\uff0c\u200b\u4ece\u200b\u6a21\u5757\u200b\u62bd\u8c61\u200b\u7684\u200b\u5c42\u9762\u200b\u8bb2\u8bb2\u200b\u5404\u200b\u6a21\u5757\u200b\u7684\u200b\u529f\u80fd\u200b\u548c\u200b\u4ea4\u4e92\u200b\u7684\u200b\u903b\u8f91\u200b.

              \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

              \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

              \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

              \u200b\u672c\u6b21\u200b\u5b9e\u9a8c\u200b\u662f\u200b\u8981\u200b\u5b9e\u73b0\u200b\u4e00\u4e2a\u200b Cache\uff0c\u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u4f1a\u200b\u5b9e\u73b0\u200b\u4e00\u4e2a\u200b CMU(Cache Management Unit)\u200b\u6765\u200b\u5b8c\u6210\u200b CPU\uff0c Memory\uff0c Cache \u200b\u4e4b\u95f4\u200b\u7684\u200b\u4ea4\u4e92\u200b\u548c\u200b\u63a7\u5236\u200b\uff0c\u200b\u7ed3\u6784\u200b\u5982\u4e0b\u200b\uff1a

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#memory","title":"Memory","text":"

              \u200b\u5728\u200b\u672c\u200b\u5b9e\u9a8c\u200b\u4e2d\u200b Memory \u200b\u53ea\u200b\u4e0e\u200b CMU \u200b\u4ea4\u4e92\u200b.

              Memory \u200b\u4e0e\u200b CMU \u200b\u7684\u200b\u4ea4\u4e92\u200b\u53ea\u6709\u200b\u4e00\u79cd\u200b\uff1a

              • CMU \u200b\u628a\u200b\u8bfb\u5199\u200b\u9700\u8981\u200b\u7684\u200b\u5730\u5740\u200b\u548c\u200b\u6570\u636e\u200b\u7ed9\u200b Memory\uff0c Memory \u200b\u8fdb\u884c\u200b\u8bfb\u5199\u64cd\u4f5c\u200b\u7136\u540e\u200b\u8fd4\u56de\u200b\u6570\u636e\u200b\u7ed9\u200b CMU
              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#cache","title":"Cache","text":"

              Cache \u200b\u5185\u90e8\u200b\u7ef4\u62a4\u200b\u7740\u200b\u6240\u6709\u200b Cache line \u200b\u548c\u200b\u6807\u8bb0\u200b\u4f4d\u200b\uff0c\u200b\u5e76\u4e14\u200b\u4e0e\u200b CMU \u200b\u8fdb\u884c\u200b\u4ea4\u4e92\u200b\uff0c\u200b\u4e3b\u8981\u200b\u6709\u200b\u4e24\u79cd\u200b\uff1a

              • \u200b\u8fd4\u56de\u200b\u90e8\u5206\u200b\u63a7\u5236\u200b\u4fe1\u606f\u200b\u7ed9\u200b CMU\uff0c\u200b\u5305\u62ec\u200b
                • \u200b\u662f\u5426\u200b\u547d\u4e2d\u200b
                • \u200b\u88ab\u200b\u66ff\u6362\u200b\u7684\u200b Cache line \u200b\u662f\u5426\u200b\u6709\u6548\u200b\u4e14\u810f\u200b
                • \u200b\u88ab\u200b\u5199\u200b\u56de\u200b\u7684\u200b Cache line \u200b\u7684\u200b tag\uff08\u200b\u8fd9\u6837\u200b CMU \u200b\u624d\u80fd\u200b\u83b7\u5f97\u200b\u6b63\u786e\u200b\u7684\u200b\u5730\u5740\u200b\uff0c\u200b\u7136\u540e\u200b\u628a\u200b\u6570\u636e\u200b\u5199\u56de\u200b Memory\uff09
              • \u200b\u6267\u884c\u200b CMU \u200b\u8981\u6c42\u200b\u7684\u200b\u64cd\u4f5c\u200b\uff0c\u200b\u5305\u62ec\u200b
                • load: \u200b\u4e5f\u200b\u5c31\u200b\u662f\u4ece\u200b\u547d\u4e2d\u200b\u7684\u200b(1)Cache line \u200b\u4e2d\u8bfb\u200b\u4fe1\u606f\u200b\u548c\u200b\u6807\u8bb0\u200b(LRU)\uff0c\u200b\u8fd4\u56de\u200b
                • edit: \u200b\u4e5f\u200b\u5c31\u662f\u200b\u5bf9\u200b\u547d\u4e2d\u200b\u7684\u200b Cache line \u200b\u8fdb\u884c\u200b\u4fee\u6539\u200b\u548c\u200b\u6807\u8bb0\u200b(LRU\uff0c dirty)\uff0c\u200b\u8fd4\u56de\u200b
                • store: \u200b\u5c06\u200b CMU \u200b\u7684\u200b\u7ed9\u200b\u7684\u200b\u6570\u636e\u200b\u66ff\u6362\u200b\u8fdb\u200b Cache line\uff0c\u200b\u5e76\u4e14\u200b\u6807\u8bb0\u200b(valid\uff0c dirty\uff0c tag)\uff0c \u200b\u8fd4\u56de\u200b
                • invalid: \u200b\u6e05\u7a7a\u200b Cache
              1. \u200b\u547d\u4e2d\u200b\u4e86\u200b\u54ea\u4e2a\u200b Cache line \u200b\u6216\u8005\u200b\u54ea\u4e2a\u200b\u90fd\u200b\u6ca1\u200b\u547d\u4e2d\u200b\u7531\u200b Cache \u200b\u5185\u90e8\u200b\u903b\u8f91\u200b\u5206\u8fa8\u200b.\u200b\u5982\u679c\u200b\u90fd\u200b\u6ca1\u200b\u547d\u4e2d\u200b Cache \u200b\u6b64\u200b\u5468\u671f\u200b\u5c31\u200b\u5565\u200b\u90fd\u200b\u4e0d\u200b\u5e72\u200b\uff0c\u200b\u53ea\u200b\u8fd4\u56de\u200b\u63a7\u5236\u200b\u4fe1\u53f7\u200b\uff0c\u200b\u7b49\u5f85\u200b CMU \u200b\u540e\u7eed\u200b\u63a7\u5236\u200b

              \u200b\u4e3a\u4e86\u200b\u505a\u597d\u200b\u8fd9\u4e9b\u200b\u4e8b\u200b\uff0cCache \u200b\u5185\u90e8\u200b\u4f1a\u200b\u8fdb\u884c\u200b\u5b9e\u73b0\u200b\u5408\u9002\u200b\u7684\u200b\u7ec4\u5408\u200b\u903b\u8f91\u200b\u6765\u200b\u8fdb\u884c\u200b\u7d22\u5f15\u200b\uff0c\u200b\u6bd4\u8f83\u200b\u7b49\u7b49\u200b

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#cpu","title":"CPU","text":"

              CPU \u200b\u4e0e\u200b CMU \u200b\u7684\u200b\u4ea4\u4e92\u200b\u6709\u200b\u4e24\u79cd\u200b\uff1a

              • CPU \u200b\u9700\u8981\u200b\u8bbf\u5b58\u200b\uff0c\u200b\u5c06\u200b\u8bfb\u5199\u200b\u5730\u5740\u200b\u548c\u200b\u6570\u636e\u200b\u7ed9\u200b CMU
              • CPU \u200b\u8fd8\u4f1a\u200b\u63a5\u53d7\u200b CMU \u200b\u7684\u200b\u7b49\u5f85\u200b\u4fe1\u53f7\u200b\uff0c\u200b\u963b\u585e\u200b\u6d41\u6c34\u7ebf\u200b\u7b49\u5f85\u200b\u6570\u636e\u200b\u5c31\u4f4d\u200b
              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84---lab4--cache/#cmu","title":"CMU","text":"

              CMU \u200b\u5185\u90e8\u200b\u7ef4\u62a4\u200b\u4e00\u4e2a\u200b\u72b6\u6001\u673a\u200b\uff0c\u200b\u8fd9\u4e2a\u200b\u72b6\u6001\u200b\u673a\u4f1a\u200b\u6839\u636e\u4e0a\u8ff0\u200b\u4e09\u4e2a\u200b\u7ec4\u4ef6\u200b\u7684\u200b\u63a7\u5236\u200b\u4fe1\u53f7\u200b\u8fdb\u884c\u200b\u8df3\u8f6c\u200b\uff1a

              • CPU \u200b\u662f\u5426\u200b\u6709\u200b\u8bfb\u5199\u200b\u8bf7\u6c42\u200b
              • Memory \u200b\u5bf9\u200b\u8bfb\u5199\u200b\u8bf7\u6c42\u200b\u7684\u200b\u5904\u7406\u200b
              • Cache \u200b\u7684\u200b\u63a7\u5236\u200b\u4fe1\u53f7\u200b\u53cd\u6620\u200b Cache \u200b\u662f\u200b\u547d\u4e2d\u200b\u4e86\u200b\uff0c\u200b\u9700\u8981\u200b\u8bbf\u5b58\u200b\u8fd8\u662f\u200b\u9700\u8981\u200b\u5199\u56de\u200b

              \u200b\u540c\u65f6\u200b CMU \u200b\u4e5f\u200b\u4f1a\u200b\u6839\u636e\u200b\u81ea\u5df1\u200b\u7684\u200b\u72b6\u6001\u200b\uff0c\u200b\u5bf9\u200b\u4e0a\u8ff0\u200b\u4e09\u4e2a\u200b\u7ec4\u4ef6\u200b\u8fdb\u884c\u200b\u63a7\u5236\u200b\uff1a

              • CPU \u200b\u662f\u5426\u200b\u5e94\u8be5\u200b stall(1)
              • Cache \u200b\u8981\u200b\u6267\u884c\u200b\u54ea\u4e2a\u200b\u64cd\u4f5c\u200b(2)
              • Memory \u200b\u8981\u200b\u6267\u884c\u200b\u54ea\u4e2a\u200b\u64cd\u4f5c\u200b(3)
              1. \u200b\u5177\u4f53\u6765\u8bf4\u200b\uff0c\u200b\u4e0b\u4e2a\u200b state \u200b\u4e0d\u662f\u200b IDLE \u200b\u5c31\u200b\u8be5\u200b stall \u200b\u4e86\u200b
                • load
                • edit
                • store
                • invalid
              2. \u200b\u8bfb\u5199\u64cd\u4f5c\u200b
              "},{"location":"blog/%E6%88%91%E7%9A%84-cli-%E5%B7%A5%E5%85%B7/","title":"\u6211\u200b\u7684\u200b CLI \u200b\u5de5\u5177","text":"

              Abstract

              \u200b\u8fd9\u91cc\u200b\u5217\u51fa\u200b\u4e86\u200b\u5f88\u591a\u200b\u597d\u7528\u200b\u7684\u200b CLI(commandline interface)\u200b\u5de5\u5177\u200b

              \u200b\u5982\u679c\u200b\u4ed4\u7ec6\u200b\u770b\u770b\u200b\u7684\u200b\u5316\u4f1a\u200b\u53d1\u73b0\u200b\u5927\u591a\u6570\u200b\u90fd\u200b\u662f\u200b\u62ff\u200b Rust \u200b\u91cd\u5199\u200b\u7684\u200b(Rewrite it in Rust!)

              • dust
              • duf
              • procs
              • fd
              • btm
              • exa
              • autojump
              • ripgrep
              • bat
              • httpie
              • hyperfine
              • fzf
              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/","title":"\u8ba1\u7b97\u673a\u7f51\u7edc\u200b - lab2 \u200b\u4f7f\u7528\u200b\u4e8c\u200b\u5c42\u4ea4\u6362\u673a\u200b\u7ec4\u7f51","text":"

              Abstract

              \u200b\u56e0\u4e3a\u200b\u8fd9\u4e2a\u200b\u5b9e\u9a8c\u200b\u505a\u200b\u7684\u200b\u65f6\u5019\u200b\u51e0\u4e4e\u200b\u6ca1\u4ec0\u4e48\u200b\u6307\u5bfc\u200b\uff0c\u200b\u53ea\u6709\u200b\u4e00\u4e2a\u200b\u795e\u79d8\u200b\u7684\u200b\u6587\u6863\u200b\uff0c\u200b\u4e00\u200b\u6574\u4e2a\u200b\u5b9e\u9a8c\u5ba4\u200b\u7684\u200b\u7ebf\u200b\u548c\u200b\u4e00\u200b\u7bb1\u5b50\u200b\u7684\u200b\u795e\u79d8\u200b\u673a\u5668\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5c31\u200b\u6fc0\u60c5\u200b\u5199\u4e2a\u200b\u7ecf\u9a8c\u200b

              \u200b\u4e3b\u8981\u200b\u662f\u200b\u8bb2\u200b\u4e86\u200b\u8bb2\u200b\u600e\u4e48\u200b\u8ba9\u200b\u5b9e\u9a8c\u200b\u8dd1\u200b\u8d77\u6765\u200b\uff0c\u200b\u8fd8\u6709\u200b\u5404\u79cd\u200b\u610f\u5916\u200b\u95ee\u9898\u200b\u7684\u200b\u5904\u7406\u200b\u4e4b\u7c7b\u200b\u7684\u200b

              \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

              \u200b\u5b9e\u9a8c\u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u5e74\u79cb\u51ac\u200b

              \u200b\u5b9e\u9a8c\u62a5\u544a\u200b\u6a21\u677f\u200b\uff1a

              \u200b\u5f80\u671f\u200b\u53c2\u8003\u200b\uff1a \uff08\u200b\u6765\u81ea\u200b\u6d59\u6c5f\u5927\u5b66\u200b\u8bfe\u7a0b\u200b\u5171\u4eab\u200b\u8ba1\u5212\u200b\uff09

              \u200b\u6307\u5bfc\u8001\u5e08\u200b\uff1a\u200b\u9ec4\u6b63\u8c26\u200b

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_1","title":"\u8ba4\u8bc6\u200b\u5b9e\u9a8c\u5ba4\u200b\u7684\u200b\u4eea\u5668","text":"

              \u200b\u679c\u200b\u54a9\u200b\u90a3\u200b\u585e\u200b\u8fd9\u91cc\u200b\u6ca1\u6709\u200b\u7167\u7247\u200b\uff0c\u200b\u4f46\u662f\u200b\u6bd4\u8f83\u200b\u5173\u952e\u200b\u7684\u200b\u51e0\u4e2a\u200b\u8bbe\u5907\u200b\u7684\u200b\u5916\u89c2\u200b\u90fd\u200b\u4f1a\u200b\u5927\u6982\u200b\u63cf\u8ff0\u200b\u4e00\u4e0b\u200b\uff1a

              \u200b\u4ea4\u6362\u673a\u200b\u8def\u7531\u5668\u200b\u7f51\u7ebf\u200bPC\u200b\u663e\u793a\u5c4f\u200b\u548c\u200b\u952e\u76d8\u200b

              \u200b\u6b63\u9762\u200b\u6709\u200b\u5f88\u591a\u200b\u7aef\u53e3\u200b\uff0c\u200b\u6ca1\u6709\u200b\u5f00\u200b\u5173\u952e\u200b\uff0c\u200b\u6b63\u9762\u200b\u6709\u200b mode \u200b\u952e\u200b

              \u200b\u6682\u65f6\u200b\u7528\u200b\u4e0d\u5230\u200b\uff0c\u200b\u6bd4\u8d77\u200b\u4ea4\u6362\u673a\u200b\u7aef\u53e3\u200b\u6ca1\u200b\u90a3\u4e48\u200b\u591a\u200b\uff0c\u200b\u6709\u5f00\u200b\u5173\u952e\u200b

              \u200b\u5b9e\u9a8c\u5ba4\u200b\u91cc\u200b\u770b\u8d77\u6765\u200b\u662f\u200b\u7f51\u7ebf\u200b\u7684\u200b\u57fa\u672c\u200b\u5c31\u662f\u200b\u7f51\u7ebf\u200b\uff08\u200b\u5e9f\u8bdd\u200b\uff09\uff0c

              \u200b\u6bd4\u8f83\u200b\u7279\u6b8a\u200b\u7684\u200b\u4e8b\u200b\u5982\u679c\u200b\u4e24\u7aef\u200b\u900f\u660e\u200b\u5934\u200b\u5185\u90e8\u200b\u7684\u200b\u7ebf\u200b\u7684\u200b\u989c\u8272\u200b\u987a\u5e8f\u200b\u4e0d\u200b\u4e00\u6837\u200b\uff0c\u200b\u90a3\u200b\u5c31\u662f\u200b\u4ea4\u53c9\u200b\u7f51\u7ebf\u200b.

              \u200b\u5982\u679c\u200b\u4e00\u6839\u200b\u6241\u6241\u7684\u200b\u6de1\u84dd\u8272\u200b\u7684\u200b\uff0c\u200b\u53e6\u4e00\u7aef\u200b\u662f\u200b\u4e32\u53e3\u200b\u7684\u200b\u7ebf\u200b\uff0c\u200b\u90a3\u4e2a\u200b\u662f\u200b\u62ff\u6765\u200b\u8fde\u200b console \u200b\u548c\u200b PC \u200b\u7684\u200b.

              \u200b\u673a\u7bb1\u200b\u91cc\u200b\u4e0a\u65b9\u200b\u8fde\u200b\u7740\u200b\u6446\u200b\u4e86\u200b\u56db\u53f0\u200b PC\uff0c\u200b\u4e00\u822c\u200b\u4ece\u200b\u4e0a\u200b\u5f80\u200b\u4e0b\u200b\u6807\u53f7\u200b 1-4

              \u200b\u5f00\u673a\u200b\u65b9\u5f0f\u200b\u5f88\u8ff7\u200b\uff0c\u200b\u6211\u200b\u662f\u200b\u6309\u200b F1 \u200b\u7136\u540e\u200b\u9000\u51fa\u200b\uff0c\u200b\u611f\u89c9\u200b\u80af\u5b9a\u200b\u4e0d\u662f\u200b\u6b63\u5e38\u200b\u9014\u5f84\u200b

              \u200b\u6700\u200b\u4e0b\u9762\u200b\u6446\u7740\u200b\u7684\u200b\u663e\u793a\u5c4f\u200b\u548c\u200b\u952e\u76d8\u200b\uff0c\u200b\u901a\u8fc7\u200b\u6309\u952e\u200b\u9009\u62e9\u200b\u53ef\u4ee5\u200b\u8fde\u63a5\u200b\u5230\u200b\u4e0d\u540c\u200b\u7684\u200b PC\uff0c\u200b\u987a\u7740\u200b\u663e\u793a\u5c4f\u200b\u7684\u200b\u7ebf\u200b\u5f80\u540e\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u56db\u53f0\u200b PC \u200b\u5728\u200b\u540e\u9762\u200b\u662f\u200b\u63d2\u200b\u5230\u200b\u4e86\u200b 1-4 \u200b\u53e3\u4e0a\u200b\u7684\u200b\uff08\u200b\u6211\u200b\u5f53\u65f6\u200b\u662f\u200b\u6ca1\u6709\u200b PC4\uff0c\u200b\u6709\u200b PC5 \u200b\u63d2\u200b\u5728\u200b 5 \u200b\u4e0a\u9762\u200b\uff0c\u200b\u6211\u200b\u7ed9\u200b\u6539\u200b\u63d2\u200b\u5230\u200b 4 \u200b\u4e86\u200b\uff09

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_2","title":"\u8d77\u6b65","text":"

              \u200b\u5176\u5b9e\u200b\u4e5f\u200b\u5c31\u200b\u8d77\u6b65\u200b\u662f\u200b\u6700\u96be\u200b\u7684\u200b\uff0c\u200b\u540e\u9762\u200b\u57fa\u672c\u200b\u5c31\u200b\u6309\u7167\u200b\u6587\u6863\u200b\u6765\u200b\u505a\u200b\u5c31\u662f\u200b.

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_3","title":"\u8fde\u4e0d\u4e0a\u200b\u4ea4\u6362\u673a","text":"

              \u200b\u8fde\u63a5\u200b\u4ea4\u6362\u673a\u200b\u8981\u200b\u505a\u200b\u7684\u200b\u6709\u200b\uff1a

              • \u200b\u7528\u200b\u524d\u6587\u200b\u63d0\u5230\u200b\u7684\u200b\u4e32\u53e3\u200b-\u200b\u7f51\u53e3\u200b\u7ebf\u6765\u200b\u8fde\u63a5\u200b\u67d0\u200b PC \u200b\u548c\u200b\u4ea4\u6362\u673a\u200b\u7684\u200b console\u3001
              • \u200b\u5207\u6362\u200b\u5230\u200b\u90a3\u53f0\u200b PC\uff0c \u200b\u6253\u5f00\u200b\u684c\u9762\u4e0a\u200b\u7684\u200b putty\uff0c \u200b\u9009\u62e9\u200b serial\uff0c\u200b\u9ed8\u8ba4\u200b\u901f\u7387\u200b 9600 \u200b\u5373\u53ef\u200b\uff0c\u200b\u542f\u52a8\u200b
              • \u200b\u72c2\u200b\u6309\u200b\u56de\u8f66\u200b\uff0c\u200b\u51fa\u73b0\u200b\u547d\u4ee4\u884c\u200b\u63d0\u793a\u7b26\u200b\u5c31\u200b\u6210\u529f\u200b\u4e86\u200b\uff0c\u200b\u6ca1\u200b\u53cd\u5e94\u200b\u7528\u200b\u624b\u6276\u200b\u4e00\u4e0b\u200b console \u200b\u770b\u200b\u4e00\u4e0b\u200b\u63d2\u7d27\u200b\u4e86\u200b\u6ca1\u6709\u200b

              \u200b\u5c31\u200b\u6211\u200b\u800c\u8a00\u200b\uff0c\u200b\u673a\u7bb1\u200b\u91cc\u200b\u7684\u200b\u4e0b\u9762\u200b\u7684\u200b\u4e00\u53f0\u200b\u4ea4\u6362\u673a\u200b\u662f\u200b\u6b7b\u6d3b\u200b\u8fde\u4e0d\u4e0a\u200b\uff0c\u200b\u6700\u540e\u200b\u8bd5\u200b\u4e86\u200b\u534a\u5929\u200b\u662f\u200b\u4e0a\u9762\u200b\u7684\u200b\u53e6\u4e00\u53f0\u200b\u4ea4\u6362\u673a\u200b\u7528\u200b\u624b\u6276\u200b\u7a33\u200b\u4e86\u200b\u53ef\u4ee5\u200b\u4e0a\u200b.

              \u200b\u5982\u679c\u200b\u4f60\u8bd5\u200b\u4e86\u200b\u5f88\u591a\u200b\u90fd\u200b\u4e0d\u884c\u200b\u7684\u8bdd\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5728\u200b\u5b9e\u9a8c\u5ba4\u200b\u91cc\u200b\u6e9c\u8fbe\u200b\u4e00\u5708\u200b\u591a\u200b\u6478\u200b\u51e0\u4e2a\u200b\u4ea4\u6362\u673a\u200b\u56de\u6765\u200b.\u200b\u6211\u4eec\u200b\u7b2c\u4e8c\u6b21\u200b\u6478\u200b\u4e86\u200b\u4e24\u53f0\u200b\u767d\u8272\u200b\u7684\u200b\u5c0f\u5c0f\u7684\u200b\u4ea4\u6362\u673a\u200b\u6765\u200b\u7528\u200b.

              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#_4","title":"\u4ea4\u6362\u673a\u200b\u5bc6\u7801","text":"

              \u200b\u6211\u4eec\u200b\u6478\u6765\u200b\u7684\u200b\u4e24\u53f0\u200b\u4ea4\u6362\u673a\u200b\u90fd\u200b\u8981\u6c42\u200b enable \u200b\u5bc6\u7801\u200b\uff0c\u200b\u91cd\u7f6e\u200b\u5bc6\u7801\u200b\u7684\u200b\u65b9\u6cd5\u200b\u6478\u200b\u7684\u200b\u6bd4\u8f83\u200b\u719f\u200b\u4e86\u200b\uff0c\u200b\u6ce8\u610f\u200b\u9002\u7528\u200b\u7684\u200b\u662f\u200b\u5c0f\u578b\u200b\u767d\u8272\u200b\u4ea4\u6362\u673a\u200b\uff0c\u200b\u6b63\u9762\u200b\u578b\u53f7\u200b\u5199\u200b\u7740\u200b C3560 \u200b\u6b65\u9aa4\u200b\uff1a

              • \u200b\u8fde\u63a5\u200b console \u200b\u548c\u200b PC\uff0c\u200b\u6253\u5f00\u200b putty\uff0c\u200b\u65ad\u7535\u200b
              • \u200b\u957f\u200b\u6309\u200b mode \u200b\u952e\u200b\uff0c\u200b\u4e0a\u7535\u200b
              • \u200b\u7ee7\u7eed\u200b\u6309\u200b mode\uff0c\u200b\u7b49\u5f85\u200b\uff0cputty \u200b\u4e0a\u200b\u5e94\u8be5\u200b\u9646\u7eed\u200b\u6709\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u8f93\u51fa\u200b\u4e86\u200b\uff0c\u200b\u773c\u5c16\u200b\u7684\u200b\u8fd8\u200b\u80fd\u200b\u770b\u5230\u200b password recovery mechanism is enabled\uff0c\u200b\u770b\u5230\u200b\u8fd9\u53e5\u200b\u8bdd\u200b\u7ee7\u7eed\u200b\u6309\u200b
              • \u200b\u7ee7\u7eed\u200b\u6309\u200b mode \u200b\u76f4\u5230\u200b\u5c4f\u5e55\u200b\u4e0a\u200b\u51fa\u73b0\u200b switch: \u200b\u63d0\u793a\u7b26\u200b\u548c\u200b\u4e24\u4e2a\u200b\u9009\u9879\u200b(flash_init\uff0c boot)
              • \u200b\u5148\u200bflash_init\uff0c\u200b\u7136\u540e\u200bren flash:config.text flash:config.old\uff0c\u200b\u7136\u540e\u200bboot
              • \u200b\u7b49\u5f85\u200b\u91cd\u542f\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5230\u200b\u5dee\u4e0d\u591a\u200b\u5b8c\u200b\u4e86\u200b\u4f1a\u200b\u8ba9\u200b\u6309\u200b\u56de\u8f66\u200b\u786e\u8ba4\u200b\uff0c\u200b\u6309\u200b\u5b8c\u6709\u200b\u4e2a\u200b\u662f\u5426\u200b\u8fdb\u5165\u200b\u521d\u59cb\u5316\u200b\u914d\u7f6e\u200b\uff0c\u200b\u8f93\u5165\u200b no
              • \u200b\u91cd\u7f6e\u200b\u6210\u529f\u200b
              "},{"location":"blog/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C---lab2-%E4%BD%BF%E7%94%A8%E4%BA%8C%E5%B1%82%E4%BA%A4%E6%8D%A2%E6%9C%BA%E7%BB%84%E7%BD%91/#pc-ip","title":"\u8bbe\u5b9a\u200b PC \u200b\u7684\u200b IP","text":"

              \u200b\u5b9e\u9a8c\u200b\u5f00\u59cb\u200b\u524d\u200b\u6211\u4eec\u200b\u8981\u200b\u67e5\u770b\u200b\u5404\u200b PC \u200b\u7684\u200b IP\uff0cwin + R\uff0c\u200b\u8f93\u5165\u200b cmd \u200b\u6253\u5f00\u200b\u547d\u4ee4\u884c\u200b\uff0c\u200b\u8f93\u5165\u200bipconfig\u200b\u5c31\u200b\u80fd\u200b\u770b\u5230\u200b ip \u200b\u4e86\u200b\uff0c\u200b\u6ca1\u6709\u200b\u7684\u8bdd\u200b\u68c0\u67e5\u200b\u8fde\u63a5\u200b\uff0c\u200b\u770b\u770b\u200b\u4fe1\u53f7\u706f\u200b\u53d8\u7eff\u200b\u4e86\u200b\u6ca1\u6709\u200b.

              \u200b\u4e00\u822c\u800c\u8a00\u200b PC \u200b\u7684\u200b IP \u200b\u90fd\u200b\u633a\u200b\u6b63\u5e38\u200b\u7684\u200b\uff0c\u200b\u4e92\u76f8\u200b\u4e4b\u95f4\u200b\u90fd\u200b\u901a\u200b\uff08\u200b\u6bd4\u8f83\u200b\u6b63\u5e38\u200b\u7684\u200b IP 10.0.0.13 10.0.1.13 10.0.2.13 10.0.3.13 \u200b\u4ed6\u4eec\u200b\u663e\u7136\u200b\u90fd\u200b\u901a\u200b\uff09

              \u200b\u7136\u800c\u200b\u6211\u200b\u5f53\u65f6\u200b\u4e24\u4e2a\u200b PC \u200b\u662f\u200b 10 \u200b\u5f00\u5934\u200b\u4e24\u4e2a\u200b\u662f\u200b 192 \u200b\u5f00\u5934\u200b\uff0c\u200b\u4e0d\u901a\u200b\uff0c\u200b\u9700\u8981\u200b\u624b\u52a8\u200b\u8bbe\u5b9a\u200b

              \u200b\u8fd9\u65f6\u5019\u200b\u5343\u4e07\u522b\u200b\u53bb\u200b putty \u200b\u91cc\u9762\u200b\u6572\u200b\u547d\u4ee4\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u6211\u200b\u8fd9\u4e48\u200b\u641e\u200b\u56db\u53f0\u200b PC \u200b\u5168\u65ad\u200b\u8054\u200b\u4e86\u200b\uff0c\u200b\u8981\u200b\u5728\u200b windows \u200b\u7684\u200b\u63a7\u5236\u9762\u677f\u200b\u91cc\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u5177\u4f53\u6b65\u9aa4\u200b\u7f51\u4e0a\u200b\u90fd\u200b\u6709\u200b\uff0c\u200b\u8981\u200b\u628a\u200b\u56db\u53f0\u200b\u653e\u5230\u200b\u540c\u4e00\u200b\u7f51\u6bb5\u200b.

              \u200b\u606d\u559c\u200b

              \u200b\u63a5\u4e0b\u6765\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8ddf\u7740\u200b\u6587\u6863\u200b\u4e00\u6b65\u6b65\u200b\u8d70\u200b\u5b8c\u200b\u5b9e\u9a8c\u200b\u4e86\u200b.

              "},{"location":"blog/enable-chatgpt_academic/","title":"Enable ChatGPT_academic","text":"

              Abstract

              \u200b\u901b\u200b\u5927\u8857\u200b\u7684\u200b\u65f6\u5019\u200b\u5076\u7136\u200b\u770b\u5230\u200b\u7684\u200b\u5de5\u5177\u200b\uff0c\u200b\u8dd1\u200b\u8d77\u6765\u200b\u7528\u7528\u200b\u770b\u200b\uff01

              \u200b\u51c6\u5907\u200b\u5de5\u4f5c\u200b

              \u200b\u8bf7\u200b\u5728\u200b\u9605\u8bfb\u200b\u6b64\u6587\u200b\u524d\u200b\u51c6\u5907\u200b\u597d\u200b ChatGPT \u200b\u7684\u200b API Key \u200b\u548c\u200b\u597d\u200b\u7528\u200b\u7684\u200b\u4ee3\u7406\u200b.\uff08\u200b\u524d\u8005\u200b\u4e3b\u8981\u200b\u662f\u200b\u6ce8\u518c\u200b\u597d\u200b\u8d26\u53f7\u200b\u5c31\u884c\u200b\uff0c\u200b\u5408\u7406\u200b\u5229\u7528\u200b https://sms-activate.org/\uff09

              \u200b\u4e3b\u8981\u200b\u7684\u200b\u6d41\u7a0b\u200b\u5c31\u200b\u5728\u200b\u9879\u76ee\u200b\u7684\u200b\u6e90\u5730\u5740\u200b\u8bb2\u200b\u7684\u200b\u5f88\u200b\u8be6\u7ec6\u200b\u4e86\u200b\uff0c\u200b\u7167\u200b\u505a\u200b\u5373\u53ef\u200b.

              \u200b\u7b14\u8005\u200b\u6ca1\u6709\u200b\u7528\u200b docker \u200b\u90e8\u7f72\u200b\uff0c\u200b\u90e8\u7f72\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u53ea\u200b\u9047\u5230\u200b\u4e00\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u6362\u200b\u8fc7\u6e90\u200b\u540e\u200b pip \u200b\u627e\u200b\u4e0d\u5230\u200b\u9ad8\u200b\u7248\u672c\u200b\u7684\u200b gradio

              \u200b\u89e3\u51b3\u65b9\u6848\u200b\u662f\u200b\uff1a

              pip install --upgrade gradio -i https://pypi.org/simple\n

              -i \u200b\u662f\u200b --index-url \u200b\u7684\u200b\u7f29\u5199\u200b\uff0c\u200b\u610f\u601d\u200b\u662f\u4ece\u200b\u6307\u5b9a\u200b\u6e90\u200b\u4e0b\u8f7d\u200b

              "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/","title":"\u7528\u200b Mac \u200b\u7684\u200b VSCode \u200b\u8c03\u8bd5\u200b C/C++\u200b\u7a0b\u5e8f","text":"

              Abstract

              \u200b\u5728\u200b Mac \u200b\u7684\u200b\u73af\u5883\u200b\u4e0a\u7528\u200b VSCode \u200b\u6765\u200b debug \u200b\u634f\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u4e5f\u200b\u78b0\u5230\u200b\u4e9b\u200b\u95ee\u9898\u200b\u7684\u8bdd\u200b\u4e0d\u59a8\u200b\u6765\u200b\u770b\u770b\u200b\ud83d\udc40

              \u200b\u73af\u5883\u200b

              MacOS: Ventura 13.2.1 VSCode: 1.76.2 x64 C/C++: 1.14.5 CodeLLDB: 1.8.0 Code Runner: 0.12.0

              "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/#cc","title":"C/C++","text":"

              \u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b VSCode \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u542f\u7528\u200b\u540e\u200b\uff0c\u200b\u4f1a\u200b\u5728\u200b VSCode \u200b\u4e2d\u200b\u6dfb\u52a0\u200b C/C++\u200b\u7684\u200b\u8bed\u6cd5\u200b\u9ad8\u4eae\u200b\u3001\u200b\u4ee3\u7801\u200b\u63d0\u793a\u200b\u3001\u200b\u4ee3\u7801\u200b\u8df3\u8f6c\u200b\u7b49\u200b\u529f\u80fd\u200b. \u200b\u540c\u65f6\u200b\u53f3\u4e0a\u89d2\u200b\u51fa\u73b0\u200b\u5982\u4e0b\u200b\u56fe\u6807\u200b\uff1a

              \u200b\u9009\u62e9\u200b run \u200b\u7684\u8bdd\u200b\uff0c\u200b\u63d2\u4ef6\u200b\u5c31\u200b\u4f1a\u200b\u63a5\u7740\u200b\u8ba9\u200b\u6211\u4eec\u200b\u9009\u62e9\u200b\u4f7f\u7528\u200b\u7684\u200b\u7f16\u8bd1\u5668\u200b

              \u200b\u6bd4\u5982\u200b\u6211\u200b\u9009\u62e9\u200b clang++\uff0c\u200b\u90a3\u4e48\u200b\u63d2\u4ef6\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u5f53\u524d\u5de5\u4f5c\u200b\u533a\u4e0b\u200b\u81ea\u52a8\u200b\u751f\u6210\u200b\u76f8\u5e94\u200b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u5e76\u200b\u5f00\u59cb\u8fd0\u884c\u200b.

              \u200b\u5bf9\u4e8e\u200b\u8c03\u8bd5\u200b\uff0c\u200b\u5f88\u200b\u9057\u61be\u200b\u7684\u200b\u662f\u200b\uff0c\u200b\u6211\u4eec\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u662f\u200b\u8fd0\u884c\u200b\u5728\u200b Debug Console \u200b\u4e2d\u200b\u7684\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u7ec8\u7aef\u200b\u4e2d\u200b\uff0c\u200b\u8fd0\u884c\u200b\u5728\u200b debug console \u200b\u4e2d\u200b\u7684\u200b\u95ee\u9898\u200b\u662f\u200b\u6ca1\u6709\u200b stdin \u200b\u8ba9\u200b\u6211\u4eec\u200b\u8f93\u5165\u200b.

              \u200b\u7ecf\u8fc7\u200b\u67e5\u8be2\u200b\uff0c\u200b\u53d1\u73b0\u200b Mac \u200b\u4e0a\u200b C/C++\u200b\u63d2\u4ef6\u200b\u4e0d\u200b\u652f\u6301\u200b debugger \u200b\u8fd0\u884c\u200b\u5728\u200b\u5185\u7f6e\u200b\u7ec8\u7aef\u200b\u4e2d\u200b\uff0csetting \u200b\u91cc\u200b\u4e5f\u200b\u6ca1\u6709\u200b\u4fee\u6539\u200b\u9009\u9879\u200b\uff0c\u200b\u53ea\u80fd\u200b\u8fd0\u884c\u200b\u5728\u200b debug console \u200b\u6216\u8005\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b.\u200b\u8be6\u89c1\u200b\u5b98\u7f51\u200b

              \u200b\u5982\u679c\u200b\u5e0c\u671b\u200b\u5728\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b\u8fd0\u884c\u200b\u8fdb\u884c\u200b\u8f93\u5165\u200b\u7684\u8bdd\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u5728\u200b launch.json \u200b\u4e2d\u200b\u914d\u7f6e\u200b.\u200b\u6ce8\u610f\u200b\uff0c\u200b\u5f53\u524d\u200b\u7248\u672c\u200b\u9ed8\u8ba4\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u53ea\u4f1a\u200b\u751f\u6210\u200b task.json\uff0c\u200b\u6ca1\u6709\u200b launch.json\uff1a

              \u200b\u90a3\u200b\u6211\u4eec\u200b\u5c31\u200b\u5148\u200b\u4ecb\u7ecd\u200b\u4e00\u4e0b\u200b task.json.\u200b\u8fd9\u91cc\u200b\u7684\u200b\u4e00\u4e9b\u200b\u53c2\u6570\u200b\u662f\u200b\u53ef\u4ee5\u200b\u4fee\u6539\u200b\u7684\u200b\uff0c\u200b\u6bd4\u5982\u200b args\uff0c\u200b\u5c31\u662f\u200b\u7f16\u8bd1\u200b\u65f6\u200b\u7684\u200b\u53c2\u6570\u200b\uff0c\u200b\u5176\u4e2d\u200b-g\u200b\u53c2\u6570\u200b\uff0c\u200b\u4f1a\u200b\u8ba9\u200b\u7f16\u8bd1\u5668\u200b\u751f\u6210\u200b\u8c03\u8bd5\u4fe1\u606f\u200b\uff0c\u200b\u8fd9\u6837\u200b\u624d\u80fd\u200b\u8fdb\u884c\u200b debug.\u200b\u8fd8\u6709\u200b cwd \u200b\u53c2\u6570\u200b\uff0c\u200b\u8fd0\u884c\u200b\u7a0b\u5e8f\u200b\u7684\u200b\u6587\u4ef6\u5939\u200b\u4f4d\u7f6e\u200b\uff0c\u200b\u5982\u679c\u200b\u4e0d\u5199\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u9ed8\u8ba4\u200b\u5728\u200b\u5f53\u524d\u5de5\u4f5c\u200b\u533a\u200b\u7684\u200b\u6839\u76ee\u5f55\u200b\u4e0b\u200b\u8fd0\u884c\u200b\uff0c\u200b\u800c\u200b\u975e\u200b\u7a0b\u5e8f\u200b\u6240\u5728\u200b\u76ee\u5f55\u200b\uff0c\u200b\u8fd9\u200b\u5728\u200b\u4e00\u4e9b\u200b\u6253\u5f00\u200b\u6587\u4ef6\u200b\u7684\u200b\u64cd\u4f5c\u200b\u4e0a\u200b\u53ef\u80fd\u200b\u4f1a\u200b\u5bfc\u81f4\u200b\u95ee\u9898\u200b.\u200b\u6700\u540e\u200b\u6ce8\u610f\u200b\u4e00\u4e0b\u200b label\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b\u522b\u7684\u200b\u914d\u7f6e\u6587\u4ef6\u200b\u4e2d\u200b\u901a\u8fc7\u200b\u8fd9\u4e2a\u200b label \u200b\u6765\u200b\u8c03\u7528\u200b\u8fd9\u4e2a\u200b task.

              \u200b\u6211\u4eec\u200b\u65b0\u5efa\u200b\u4e00\u4e2a\u200b\u914d\u7f6e\u6587\u4ef6\u200b launch.json\uff1a\u200b\u9009\u62e9\u200b\u4fa7\u680f\u200b\u7684\u200b debug \u200b\u56fe\u6807\u200b\uff0c\u200b\u70b9\u51fb\u200bcreate a launch.json file:

              \u200b\u521a\u200b\u5f00\u59cb\u200b\u662f\u200b\u7a7a\u200b\u7684\u200b\uff0c\u200b\u4ec0\u4e48\u200b\u90fd\u200b\u6ca1\u6709\u200b.\u200b\u70b9\u51fb\u200b\u53f3\u4e0b\u89d2\u200b\u7684\u200bAdd Configuration\uff0c\u200b\u5c31\u200b\u6709\u200b\u4e00\u4e9b\u200b\u9009\u9879\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u6709\u200b\u63d2\u4ef6\u200b\u4e3a\u200b\u6211\u4eec\u200b\u51c6\u5907\u200b\u7684\u200b\u9ed8\u8ba4\u200b\u6a21\u7248\u200b\uff0c\u200b\u6211\u4eec\u200b\u9009\u62e9\u200bC/C++ lldb\uff08\u200b\u542f\u52a8\u200b\uff09\uff0c\u200b\u610f\u601d\u200b\u662f\u200b C/C++\u200b\u63d2\u4ef6\u200b\u63d0\u4f9b\u200b\u7684\u200b\uff0c\u200b\u542f\u52a8\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u5e76\u200b\u5bf9\u200b\u5176\u200b debug \u200b\u7684\u200b\u914d\u7f6e\u200b\uff0c\u200b\u9009\u62e9\u200b\u9644\u52a0\u200b\u7684\u8bdd\u200b\u662f\u200b\u9644\u52a0\u200b\u5230\u200b\u4e00\u4e2a\u200b\u5df2\u7ecf\u200b\u5728\u200b\u6267\u884c\u200b\u7684\u200b\u8fdb\u7a0b\u200b\u4e0a\u200b\u7684\u200b\uff1a

              \u200b\u9ed8\u8ba4\u200b\u7684\u200b\u6a21\u677f\u200b\u957f\u200b\u8fd9\u4e2a\u200b\u6837\u5b50\u200b\uff1a

              \u200b\u8fd9\u200b\u5e76\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b\uff0c\u200b\u9996\u5148\u200b\u4fee\u6539\u200b program \u200b\u4e3a\u200b

              \"program\": \"${workspaceFolder}/${fileBasenameNoExtension}\"\uff0c\n
              \uff0c\u200b\u8fd9\u6837\u200b\u4ed6\u200b\u8fd0\u884c\u200b\u7684\u200b\u5c31\u200b\u4f1a\u200b\u662f\u200b\u5f53\u524d\u76ee\u5f55\u200b\u4e0b\u200b\u7684\u200b\u5f53\u524d\u200b\u6587\u4ef6\u200b\uff08\u200b\u4e00\u822c\u200b\u5c31\u662f\u200b\u5149\u6807\u200b\u60ac\u505c\u200b\u7684\u200b\u90a3\u4e2a\u200b\u6587\u4ef6\u200b\uff09\u200b\u540c\u540d\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\uff08\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u6ca1\u200b\u540e\u7f00\u200b\uff09\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u7f16\u8bd1\u200b\u51fa\u6765\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u53eb\u505a\u200ba.out\uff0c\u200b\u8fd9\u4e2a\u200b\u914d\u7f6e\u200b\u5c31\u200b\u4e0d\u200b\u9002\u7528\u200b\uff08\u200b\u4f1a\u200b\u8c03\u7528\u200ba\uff09\uff0c\u200b\u8bf7\u200b\u5728\u200b\u914d\u7f6e\u200b\u4e2d\u200b\u4fee\u6539\u200b\u4e3a\u200b/a.out\u200b\u6216\u8005\u200b\u8ba9\u200b\u7f16\u8bd1\u200b\u51fa\u6765\u200b\u7684\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u540d\u4e3a\u200ba.

              \u200b\u65b0\u52a0\u200b\u4e00\u5217\u200bpreLaunchTask\uff0c\u200b\u503c\u200b\u5c31\u662f\u200b\u4e4b\u524d\u200b task.json \u200b\u4e0a\u200b\u7684\u200b label\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u8fd0\u884c\u200b\u524d\u200b\u53ef\u6267\u884c\u6587\u4ef6\u200b\u524d\u5148\u200b\u8fd0\u884c\u200b task \u200b\u7f16\u8bd1\u200b\u5f53\u524d\u200b\u6587\u4ef6\u200b\uff08\u200b\u8fd9\u6837\u200b\u6bd4\u8f83\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u81ea\u52a8\u200b\u628a\u200b\u6700\u65b0\u200b\u7684\u200b\u6e90\u4ee3\u7801\u200b\u7f16\u8bd1\u200b\uff0c\u200b\u8981\u200b\u591a\u200b\u6587\u4ef6\u200b\u7f16\u8bd1\u200b\u7684\u8bdd\u200b\u4e5f\u200b\u5728\u200b task \u200b\u8bbe\u7f6e\u200b.\u200b\u5982\u679c\u200b\u4e0d\u200b\u4f7f\u7528\u200b task \u200b\u624b\u52a8\u200b\u7f16\u8bd1\u200b\u7684\u8bdd\u200b\uff0c\u200b\u8bb0\u5f97\u200b\u52a0\u4e0a\u200b-g\uff09.\u200b\u6700\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u8981\u200b\u628a\u200b\"externalConsole\": false\uff0c\u200b\u6539\u4e3a\u200b\"externalConsole\": true\uff0c\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b\u4e2d\u200b\u8fd0\u884c\u200b\u4e86\u200b.

              \u200b\u7b14\u8005\u200b\u5230\u200b\u8fd9\u200b\u4e00\u6b65\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5728\u200b\u5916\u90e8\u200b\u7ec8\u7aef\u200b debug \u200b\u5566\u200b\uff0c\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u5728\u200b watch \u200b\u7a97\u53e3\u200b\u6267\u884c\u547d\u4ee4\u200b\u6765\u200b\u76d1\u89c6\u200b\u53d8\u91cf\u200b\uff0c\u200b\u5982\u200b\u5168\u5c40\u53d8\u91cf\u200b\u4e00\u7c7b\u200b\u7684\u200b\uff0c\u200b\u4f46\u662f\u200b C/C++\u200b\u5bf9\u200b\u4e00\u4e9b\u200b\u7c7b\u578b\u200b\u7684\u200b\u53d8\u91cf\u200b\u7684\u200b\u76d1\u89c6\u200b\u652f\u6301\u200b\u4e0d\u662f\u200b\u5f88\u200b\u597d\u200b\uff0c\u200b\u6bd4\u5982\u8bf4\u200b string\uff1a \u200b\u76d1\u89c6\u200b\u4fe1\u606f\u200b\u5c31\u662f\u200b\u4e00\u5768\u200b.

              "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/#code-runner","title":"Code Runner","text":"

              \u200b\u53e6\u200b\u4e00\u4e2a\u200b VSCode \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u542f\u7528\u200b\u540e\u200b\u53f3\u4e0a\u89d2\u200b\u53c8\u200b\u4f1a\u200b\u591a\u200b\u4e00\u4e2a\u200b\u6807\u200b\uff1a

              \u200b\u8fd9\u4e2a\u200b\u662f\u200b\u53ef\u4ee5\u200b\u8dd1\u200b\u5728\u200b\u5185\u7f6e\u200b\u7ec8\u7aef\u200b\u91cc\u200b\u7684\u200b\uff1a

              "},{"location":"blog/%E7%94%A8-mac-%E7%9A%84-vscode-%E8%B0%83%E8%AF%95-cc%E7%A8%8B%E5%BA%8F/#codelldb","title":"CodeLLDB \ud83d\udc4d","text":"

              \u200b\u8fd9\u4e2a\u200b\u63d2\u4ef6\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b debug\uff0c\u200b\u6211\u200b\u611f\u89c9\u200b\u6bd4\u200b C/C++\u200b\u597d\u7528\u200b\u591a\u200b\u4e86\u200b.

              \u200b\u542f\u7528\u200b\u63d2\u4ef6\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b launch.json \u200b\u4e2d\u53ef\u9009\u200b\u914d\u7f6e\u200b\u5c31\u200b\u591a\u200b\u4e86\u200b\u51e0\u4e2a\u200b\uff0c\u200b\u6211\u4eec\u200b\u4f7f\u7528\u200bCodeLLDB (launch)\u200b\u6a21\u677f\u200b\uff1a

              \u200b\u540c\u6837\u200b\u7a0d\u5fae\u200b\u4fee\u6539\u200b\uff1a

              \u200b\u56de\u5230\u200b\u4fa7\u8fb9\u200b\u680f\u200b debug \u200b\u6a21\u5757\u200b\uff0c\u200b\u9009\u62e9\u200b\u65b0\u200b\u7684\u200b\u542f\u52a8\u200b\u914d\u7f6e\u200b\uff08\u200b\u8fd9\u91cc\u200b\u9009\u200b\u7684\u200b\u662f\u200b launch.json \u200b\u91cc\u200b\u5199\u200b\u597d\u200b\u7684\u200b\u51e0\u4e2a\u200b\u914d\u7f6e\u200b\uff09\uff1a

              \u200b\u8fd9\u4f1a\u200b\u5728\u200b\u6211\u4eec\u200b\u542f\u7528\u200b debug \u200b\u7684\u200b\u65f6\u5019\u200b\u53bb\u200b launch.json \u200b\u91cc\u9762\u200b\u627e\u200b\u6211\u4eec\u200b\u6307\u5b9a\u200b\u7684\u200b\u914d\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u8fdb\u884c\u200b debug.

              \u200b\u6709\u65f6\u5019\u200b debug \u200b\u5f39\u200b\u51fa\u200b\u5947\u602a\u200b\u7684\u200b\u62a5\u9519\u200b\uff0c\u200b\u662f\u56e0\u4e3a\u200b\u5f53\u524d\u200b\u6253\u5f00\u200b\u7684\u200b\u662f\u200b\u914d\u7f6e\u6587\u4ef6\u200b\uff0c\u200b\u8bd5\u56fe\u200b\u5bf9\u200b launch.json \u200b\u8fdb\u884c\u200b debug\uff0c\u200b\u6240\u4ee5\u200b\u62a5\u9519\u200b\u4e86\u200b.\u200b\u6211\u4eec\u200b\u6253\u5f00\u200b\u8981\u200b debug \u200b\u7684\u200b\u6e90\u4ee3\u7801\u200b\u6587\u4ef6\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b.

              CodeLLDB \u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b\u5185\u7f6e\u200b\u7ec8\u7aef\u200b\uff1a

              \u200b\u53ef\u4ee5\u200b\u5728\u200b\u76d1\u89c6\u200b\u91cc\u200b\u76f4\u63a5\u200b\u7528\u200b\u53d8\u91cf\u540d\u200b\u76d1\u89c6\u200b\u53d8\u91cf\u200b\uff1a

              \u200b\u53ef\u4ee5\u200b\u5728\u200b debug console \u200b\u4e2d\u200b\u8f93\u5165\u200b\u547d\u4ee4\u200b\uff1a

              \u200b\u53d8\u91cf\u200b\u91cc\u200b\u7684\u200b\u5b57\u7b26\u4e32\u200b\u652f\u6301\u200b\u4e5f\u597d\u200b\u4e00\u4e9b\u200b\uff1a

              \u200b\u8fd9\u91cc\u200b\u8fd8\u6709\u200b\u5b98\u65b9\u200b\u6587\u6863\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u770b\u200b.

              \u200b\u624b\u52a8\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b task.json

              \u200b\u5728\u200b\u83dc\u5355\u200b terminal > Configure Tasks \u200b\u9009\u62e9\u200b C/C++\u200b\u6765\u200b\u751f\u6210\u200b\u6a21\u677f\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab1-%E6%97%B6%E9%92%9F%E4%B8%AD%E6%96%AD/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab1 \u200b\u65f6\u949f\u200b\u4e2d\u65ad","text":"

              Abstract

              \u200b\u4e00\u4e2a\u200b kernel \u200b\u7684\u200b\u8fd0\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

              \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

              \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

              \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab1-%E6%97%B6%E9%92%9F%E4%B8%AD%E6%96%AD/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
              - `opensbi`\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\n- `start_kernel`: \u200b\u8fdb\u884c\u200b\u4e00\u4e9b\u200b\u8f93\u51fa\u200b\uff0c\u200b\u8fdb\u5165\u200b test()\u200b\u6b7b\u5faa\u73af\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u4fdd\u5b58\u200b\u597d\u200b\u4e0a\u4e0b\u6587\u200b\u540e\u200b\u8c03\u7528\u200b\u4e2d\u65ad\u200b\u5904\u7406\u7a0b\u5e8f\u200b trap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u540e\u200b\u8c03\u7528\u200b clock_set_next\n- `clock_set_next`: \u200b\u5229\u7528\u200b sbi_ecall \u200b\u8bbe\u7f6e\u200b\u4e0b\u200b\u4e00\u6b21\u200b\u4e2d\u65ad\u200b\u65f6\u95f4\u200b\n- `_traps`: \u200b\u8fd4\u56de\u200b_traps \u200b\u540e\u200b\u6062\u590d\u200b\u4e0a\u4e0b\u6587\u200b sret \u200b\u8fd4\u56de\u200b\u6b7b\u5faa\u73af\u200b\n- `test`: \u200b\u6b7b\u5faa\u73af\u200b\u76f4\u5230\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u91cd\u590d\u200b\u4e0a\u8ff0\u200b\u6d41\u7a0b\u200b\n
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab2-%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab2 \u200b\u7ebf\u7a0b\u200b\u8c03\u5ea6","text":"

              Abstract

              \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u7684\u200b\u8fd0\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

              \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

              \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

              \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab2-%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
              - `opensbi`\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `task_init`: \u200b\u5b8c\u6210\u200b\u5bf9\u200b\u6240\u6709\u200b\u7ebf\u7a0b\u200b\u7684\u200b PCB \u200b\u7684\u200b\u521d\u59cb\u5316\u200b(1)\uff0c\u200b\u5305\u62ec\u200b\u5f53\u524d\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b idle \u200b\u7ebf\u7a0b\u200b\n        - `test_init`: \u200b\u8be5\u200b\u51fd\u6570\u8c03\u7528\u200b\u4f1a\u586b\u200b\u597d\u200b task_test_counter \u200b\u548c\u200b 1task_test_priority \u200b\u4e24\u4e2a\u200b\u6570\u7ec4\u200b\u7528\u4e8e\u200b\u7ed9\u200b\u6211\u4eec\u200b\u540e\u7eed\u200b\u521d\u59cb\u5316\u200b\u4f7f\u7528\u200b\n        - \u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\u4f5c\u4e3a\u200b idle \u200b\u7684\u200b PCB\uff0c\u200b\u586b\u5199\u200b\u5e76\u4e14\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b current\n        - \u200b\u8fed\u4ee3\u200b\u4e3a\u200b\u6bcf\u4e2a\u200b\u7ebf\u7a0b\u200b\u5206\u914d\u200b\u5e76\u200b\u586b\u5199\u200b PCB\uff0c\u200b\u6ce8\u610f\u200b\u5176\u4e2d\u200b ra \u200b\u548c\u200b sp \u200b\u7684\u200b\u8bbe\u7f6e\u200b\n            - ra: ra \u200b\u56fa\u5b9a\u200b\u4e3a\u200b__dummy\uff0c\u200b\u8fd9\u662f\u200b\u6211\u4eec\u200b\u4e3a\u200b\u7ebf\u7a0b\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u540e\u200b\u8bbe\u7f6e\u200b\u7684\u200b\u8fd4\u56de\u200b\u5730\u5740\u200b\n            - sp: \u200b\u76f4\u63a5\u200b\u7528\u200b\u5206\u914d\u200b\u7ed9\u200b PCB \u200b\u7684\u200b\u8fd9\u200b\u4e00\u9875\u200b\u505a\u6808\u200b\uff0c\u200b\u6808\u9876\u200b\u81ea\u7136\u200b\u5c31\u662f\u200b PCB \u200b\u5730\u5740\u200b+4K\n- `start_kernel`: \u200b\u8fdb\u5165\u200b test()\u200b\u6b7b\u5faa\u73af\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u4fdd\u5b58\u200b\u597d\u200b\u4e0a\u4e0b\u6587\u200b\u540e\u200b\u8c03\u7528\u200b\u4e2d\u65ad\u200b\u5904\u7406\u7a0b\u5e8f\u200b trap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u540e\u200b\uff0c\u200b\u8bbe\u7f6e\u200b\u4e0b\u6b21\u200b\u4e2d\u65ad\u200b\u65f6\u95f4\u200b\uff0c\u200b\u8fdb\u5165\u200b do_timer()\u200b\u68c0\u67e5\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u5269\u4f59\u65f6\u95f4\u200b\n- `do_timer`: \u200b\u5982\u679c\u200b\u662f\u200b idle \u200b\u6216\u8005\u200b\u65f6\u95f4\u200b\u7528\u5c3d\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule()\u200b\u8c03\u5ea6\u200b\u8d70\u200b\uff0c\u200b\u5426\u5219\u200b\u65f6\u95f4\u200b\u51cf\u4e00\u200b\n- `schedule`: \u200b\u6839\u636e\u200b policy \u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b\uff0c\u200b\u8c03\u7528\u200b switch_to()\u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b(2)\uff0c\u200b\u5982\u679c\u200b\u6240\u6709\u200b\u7ebf\u7a0b\u200b\u65f6\u95f4\u200b\u90fd\u200b\u7528\u200b\u5b8c\u200b\u4e86\u200b\u5c31\u200b\u5148\u200b\u521d\u59cb\u5316\u200b\u65f6\u95f4\u200b\u518d\u200b\u9009\u62e9\u200b\n- `switch_to`: \u200b\u524d\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200b PCB\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u7ebf\u7a0b\u200b\u7684\u200b PCB(3)\n- `__dummy`: \u200b\u4ece\u200b__switch_to \u200b\u8fd4\u56de\u200b\uff0c\u200b\u8fd4\u56de\u200b\u5730\u5740\u200b\u5c31\u662f\u200b PCB \u200b\u4e2d\u200b\u6062\u590d\u200b\u7684\u200b__dummy.\u200b\u6211\u4eec\u200b\u5728\u200b dummy \u200b\u4e2d\u200b\u7ed3\u675f\u200b\u6b64\u6b21\u200b\u4e2d\u65ad\u200b\u7528\u200b sret \u200b\u56de\u5230\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u6267\u884c\u200b\u7684\u200b\u51fd\u6570\u200b dummy\n- `dummy`: \u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u4e3b\u200b\u51fd\u6570\u200b\uff0c\u200b\u5207\u6362\u200b\u56de\u6765\u200b\u540e\u200b\u8fdb\u884c\u200b\u4e00\u6b21\u200b\u8f93\u51fa\u200b\u7136\u540e\u200b\u5faa\u73af\u200b\u7b49\u5f85\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u4e00\u822c\u200b\u662f\u200b\u5269\u4f59\u65f6\u95f4\u200b\u51cf\u4e00\u200b\u7136\u540e\u200b\u7ee7\u7eed\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u95f4\u200b\u7528\u200b\u5b8c\u200b\uff0c\u200b\u518d\u6b21\u200b\u8fdb\u5165\u200b schedule \u200b\u5faa\u73af\u200b\n
              1. \u200b\u4e5f\u200b\u5c31\u662f\u200b\u5e2e\u200b\u6bcf\u4e2a\u200b\u7ebf\u7a0b\u200b\u586b\u597d\u200b task_struct
              2. \u200b\u5bf9\u4e8e\u200b\u8fd9\u4e2a\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u8d70\u200b\u7684\u200b\u7ebf\u7a0b\u200b\u6765\u8bf4\u200b\uff0c\u200b\u4ed6\u200b\u53ea\u662f\u200b\u8c03\u7528\u200b\u4e86\u200b switch_to \u200b\u51fd\u6570\u200b\uff0c\u200b\u7136\u540e\u200b\u7b49\u200b\u7740\u200b\u518d\u200b\u8fd4\u56de\u200b\u7f62\u4e86\u200b.\u200b\u867d\u7136\u200b\u5b9e\u9645\u4e0a\u200b CPU \u200b\u628a\u200b\u6b64\u200b\u7ebf\u7a0b\u200b\u8e22\u200b\u5f00\u53bb\u200b\u5e72\u200b\u522b\u7684\u200b\u6d3b\u200b\u4e86\u200b\uff0c\u200b\u4f46\u672c\u200b\u7ebf\u7a0b\u200b\u5e76\u4e0d\u77e5\u9053\u200b.\u200b\u6240\u4ee5\u200b CPU \u200b\u518d\u6b21\u200b\u8c03\u5ea6\u200b\u56de\u6b64\u200b\u7ebf\u7a0b\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5c31\u200b\u8be5\u200b\u4ece\u200b switch_to \u200b\u51fd\u6570\u200b\u8fd4\u56de\u200b\uff0c\u200b\u4ece\u800c\u200b\u8ba9\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u65e0\u611f\u200b\u8854\u63a5\u200b.
              3. \u200b\u52a0\u8f7d\u200b\u540e\u200b\u6211\u4eec\u200b\u7684\u200b sp \u200b\u4f1a\u8bbe\u200b\u4e3a\u200b\u4e4b\u524d\u200b\u5206\u914d\u200b\u9875\u200b\u7684\u200b\u9876\u7aef\u200b\uff0cra \u200b\u4f1a\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b__dummy\uff0c\u200b\u8fd9\u200b\u90fd\u200b\u662f\u200b\u521d\u59cb\u5316\u200b\u65f6\u200b\u8bbe\u8ba1\u200b\u7684\u200b
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab2-%E7%BA%BF%E7%A8%8B%E8%B0%83%E5%BA%A6/#_1","title":"\u6ce8\u610f\u4e8b\u9879","text":"

              \u200b\u6ce8\u610f\u200b\u5230\u200b\u6211\u4eec\u200b\u5bf9\u4e8e\u200b\u975e\u200b idle \u200b\u7ebf\u7a0b\u200b\u7b2c\u4e00\u6b21\u200b\u4ece\u200b __switch_to \u200b\u8fd4\u56de\u200b\u7684\u200b\u90fd\u200b\u662f\u200b __dummy\uff0c \u200b\u8fd9\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b PCB \u200b\u88ab\u200b\u6062\u590d\u200b\u51fa\u6765\u200b\u7684\u200b ra \u200b\u51b3\u5b9a\u200b\u7684\u200b

              \u200b\u4f46\u662f\u200b\u8be5\u200b\u7ebf\u7a0b\u200b\u7b2c\u4e8c\u6b21\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u7684\u200b\u65f6\u5019\u200b\uff0c\u200b\u5b83\u200b\u6062\u590d\u200b\u7684\u200b PCB \u200b\u5c31\u662f\u200b\u5b83\u200b\u4e4b\u524d\u200b\u81ea\u5df1\u200b\u5b58\u200b\u4e0b\u6765\u200b\u7684\u200b\u800c\u200b\u4e0d\u518d\u200b\u662f\u200b\u521d\u59cb\u5316\u200b\u7684\u200b.\u200b\u8fd9\u4e2a\u200b\u5b58\u200b\u4e0b\u6765\u200b\u7684\u200b ra \u200b\u5c31\u662f\u200b switch_to\uff0c__switch_to \u200b\u51fd\u6570\u200b\u8fd0\u884c\u200b\u65f6\u200b\u7684\u200b ra \u200b\u5f53\u7136\u200b\u662f\u200b__switch_to \u200b\u7684\u200b\u8c03\u7528\u8005\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab3 \u200b\u865a\u62df\u5185\u5b58","text":"

              Abstract

              \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

              \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

              \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

              \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
              - `opensbi`\u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b(1)\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b(2)\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u81f3\u6b64\u200b\u865a\u62df\u5185\u5b58\u200b\u5df2\u7ecf\u200b\u542f\u52a8\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5229\u7528\u200b mm \u200b\u4e2d\u200b\u7684\u200b\u51fd\u6570\u200b\u5206\u914d\u200b\u65b0\u200b\u7684\u200b\u9875\u200b\u6765\u200b\u8bbe\u7f6e\u200b\u591a\u7ea7\u200b\u5206\u6bb5\u200b\u9875\u8868\u200b\uff0c\u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b(3)\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n- `start_kernel`: \u200b\u8fdb\u5165\u200b test \u200b\u6b7b\u5faa\u73af\u200b\uff0c\u200b\u7b49\u5f85\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u8d70\u200b\n
              1. \u200b\u6ce8\u610f\u200b\u8981\u200b\u4f7f\u7528\u200b\u6808\u200b\u7684\u200b\u7269\u7406\u5730\u5740\u200b\uff0c\u200b\u6b64\u65f6\u200b\u7b26\u53f7\u8868\u200b\u91cc\u200b\u7684\u200b\u90fd\u200b\u662f\u200b\u865a\u62df\u5730\u5740\u200b
              2. \u200b\u6ce8\u610f\u200b\u8fd9\u91cc\u200b\u8df3\u200b\u586b\u8868\u200b\u8981\u200b\u586b\u200b\u76f4\u63a5\u200b\u6620\u5c04\u200b\u548c\u200b\u7b49\u503c\u200b\u6620\u5c04\u200b\u4e24\u6bb5\u200b
              3. \u200b\u786e\u5b9a\u200b\u597d\u200b\u4e0d\u540c\u200b\u6bb5\u200b\u7684\u200b\u7269\u7406\u200b\u865a\u62df\u5730\u5740\u200b\u548c\u200b\u6743\u9650\u200b\u7b49\u200b\uff0c\u200b\u8c03\u7528\u200b creat_mapping \u200b\u51fd\u6570\u200b\u5206\u914d\u200b\u5e76\u200b\u586b\u5199\u200b\u9875\u8868\u200b\uff0c\u200b\u6ce8\u610f\u200b\u9875\u8868\u200b\u9879\u5747\u200b\u4f7f\u7528\u200b\u7269\u7406\u5730\u5740\u200b
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#_1","title":"\u6ce8\u610f\u4e8b\u9879","text":""},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#satp","title":"\u5199\u200b satp","text":"

              \u200b\u6211\u4eec\u200b\u542f\u7528\u200b\u865a\u62df\u5185\u5b58\u200b\u7684\u200b\u90a3\u200b\u4e00\u6b65\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5199\u200b satp \u200b\u7684\u200b\u90a3\u200b\u4e00\u6b65\u200b\u53ea\u662f\u200b\u4e00\u53e5\u200bcsrw\uff0c\u200b\u6307\u4ee4\u200b\u5199\u200b\u5b8c\u200b\u5bc4\u5b58\u5668\u200b\u4e5f\u200b\u4e0d\u4f1a\u200b\u5e72\u4ec0\u4e48\u200b\u989d\u5916\u200b\u7684\u200b\u4e8b\u60c5\u200b\uff0cCP \u200b\u8fd8\u662f\u200b\u8981\u200b\u7ee7\u7eed\u200b\u53bb\u200b PC+4 \u200b\u6267\u884c\u200b\u4e0b\u200b\u4e00\u6761\u200b\u6307\u4ee4\u200b.

              \u200b\u6240\u4ee5\u200b PC+4 \u200b\u8fd9\u4e2a\u200b\u5730\u5740\u200b\u5728\u200b\u865a\u62df\u5185\u5b58\u200b\u4e0b\u8be5\u200b\u600e\u4e48\u200b\u53d6\u6307\u200b(1)\uff0c\u200b\u8fd9\u4e2a\u200b\u95ee\u9898\u200b\u5c31\u662f\u200b\u601d\u8003\u9898\u200b\u6240\u200b\u5173\u5fc3\u200b\u7684\u200b.

              1. \u200b\u6709\u200b\u5bf9\u5e94\u200b\u7684\u200b\u6620\u5c04\u200b\u5417\u200b\uff0c\u200b\u6216\u8005\u200b\u662f\u200b\u7528\u200b\u4e2d\u65ad\u200b\u5904\u7406\u200b\uff1f
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#_2","title":"\u4e3a\u4ec0\u4e48\u200b\u7b2c\u4e00\u6b21\u200b\u6211\u4eec\u200b\u542f\u7528\u200b\u7684\u200b\u9875\u8868\u200b\u662f\u200b\u4e00\u7ea7\u200b\u7684","text":"

              \u200b\u6587\u6863\u200b\u4e2d\u200b\u5176\u5b9e\u200b\u5df2\u7ecf\u200b\u6709\u200b\u94fe\u63a5\u200b\u6307\u5411\u200b\u4e86\u200b\u89e3\u91ca\u200b\u8fd9\u200b\u4e00\u70b9\u200b\u7684\u200b\u6587\u6863\u200b\uff0c\u200b\u5177\u4f53\u200b\u800c\u8a00\u200b\uff0c\u200b\u5728\u200b\u8fd9\u6bb5\u200b\u63cf\u8ff0\u200b\u8f6c\u5316\u200b\u865a\u62df\u5185\u5b58\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u7684\u200b\u624b\u518c\u200b\u4e2d\u200b

              \u200b\u4ed4\u7ec6\u9605\u8bfb\u200b\uff0c\u200b\u5176\u4e2d\u200b\u7b2c\u56db\u70b9\u200b\u63d0\u5230\u200b\u82e5\u200b\u5f53\u524d\u9875\u200b\u8868\u9879\u200b\u7684\u200b\u6743\u9650\u200b\u8868\u660e\u200b\u4e86\u200b\u53ef\u8bfb\u200b\u6216\u8005\u200b\u53ef\u200b\u6267\u884c\u200b\uff0c\u200b\u90a3\u4e48\u200b\u5c31\u200b\u4f1a\u200b\u5f53\u4f5c\u200b\u662f\u200b\u6700\u540e\u200b\u4e00\u7ea7\u200b\u9875\u8868\u200b\uff0c\u200b\u5426\u5219\u200b\u624d\u200b\u4f1a\u200b\u628a\u200b\u5b83\u200b\u5f53\u4f5c\u200b\u67d0\u200b\u4e00\u7ea7\u200b\u7684\u200b\u9875\u8868\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab3-%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98/#debug","title":"debug \u200b\u6ce8\u610f","text":"
              • \u200b\u5f53\u200b\u6211\u4eec\u200b\u6309\u7167\u200b\u6587\u6863\u200b\u4fee\u6539\u200b\u4e86\u200b\u94fe\u63a5\u200b\u6587\u4ef6\u200b\u540e\u200b\uff0c\u200b\u6211\u4eec\u200b gdb \u200b\u4e2d\u200b\u76f4\u63a5\u200b\u7528\u200b\u7b26\u53f7\u200b\u6765\u200b\u6253\u65ad\u200b\u70b9\u200b\u4e4b\u7c7b\u200b\u7684\u200b\u64cd\u4f5c\u200b\u5c31\u200b\u90fd\u200b\u662f\u200b\u6309\u7167\u200b\u4fee\u6539\u200b\u4e86\u200b\u94fe\u63a5\u200b\u6587\u4ef6\u200b\u4e4b\u540e\u200b\u7684\u200b\u865a\u62df\u5730\u5740\u200b\u4e86\u200b\uff0c\u200b\u6240\u4ee5\u200b\u542f\u7528\u200b\u865a\u62df\u5185\u5b58\u200b\u4e4b\u524d\u200b\u4e3a\u4e86\u200b\u5728\u200b\u6b63\u786e\u200b\u7684\u200b\u7269\u7406\u5730\u5740\u200b\u6253\u65ad\u200b\u70b9\u200b\uff0c\u200b\u9700\u8981\u200b\u624b\u52a8\u200b\u8f93\u5165\u200b\u5730\u5740\u200b.
              • \u200b\u5982\u679c\u200b\u4f60\u200b\u8ddf\u200b\u6211\u200b\u4e00\u6837\u200b\u6539\u5b8c\u200b\u9875\u8868\u200b\u6ca1\u4e8b\u200b\uff0c\u200b\u4f46\u662f\u200b\u4e00\u200b\u5237\u65b0\u200b tlb \u200b\u5c31\u200b\u5bc4\u200b\u4e86\u200b.\u200b\u4e8e\u200b\u6211\u200b\u7684\u200b\u7ecf\u9a8c\u200b\u800c\u8a00\u200b\uff0c\u200b\u662f\u200b\u9875\u8868\u200b\u5199\u200b\u7684\u200b\u6709\u200b\u95ee\u9898\u200b.
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab4 \u200b\u7528\u6237\u200b\u6001","text":"

              Abstract

              \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b

              \u200b\u57fa\u672c\u200b\u4fe1\u606f\u200b

              \u200b\u65f6\u95f4\u200b\uff1a2023 \u200b\u79cb\u51ac\u200b

              \u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff1a

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
              - `opensbi` \u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus(1) \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u542f\u52a8\u200b\u865a\u62df\u5185\u5b58\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n        - \u200b\u5bf9\u4e8e\u200b idle \u200b\u4ee5\u5916\u200b\u7684\u200b\u7ebf\u7a0b\u200b\uff0c\u200b\u9700\u8981\u200b\u5728\u200b task_struct \u200b\u4e2d\u200b\u989d\u5916\u200b\u7ed9\u5b9a\u200b\u4ee5\u4e0b\u200b\u4fe1\u606f\u200b\uff1a\n            - `sepc`: \u200b\u6b64\u200b\u7ebf\u7a0b\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u540e\u200b\u4ece\u200b S Mode \u200b\u56de\u200b U Mode \u200b\u7684\u200b\u5730\u5740\u200b\uff0c\u200b\u663e\u7136\u200b\u5c31\u662f\u200b\u7528\u6237\u7a0b\u5e8f\u200b\u8d77\u59cb\u200b\u5730\u5740\u200b USER_START\n            - `sscratch`: \u200b\u7528\u6237\u200b\u6808\u9876\u200b\uff0c\u200b\u7ea6\u5b9a\u200b\u4e3a\u200b USER_END\n            - `sstatus`: \u200b\u8fdb\u884c\u200b\u8bbe\u7f6e\u200b\u4f7f\u5f97\u200b sret \u200b\u540e\u200b\u6211\u4eec\u200b\u56de\u5230\u200b U Mode \u200b\u800c\u200b\u975e\u200b S Mode\n            - `satp`: \u200b\u6bcf\u4e2a\u200b\u8fdb\u7a0b\u200b\u90fd\u200b\u6709\u200b\u81ea\u5df1\u200b\u7684\u200b\u7269\u7406\u5730\u5740\u200b\u7a7a\u95f4\u200b\u548c\u200b\u865a\u62df\u5730\u5740\u200b\u7a7a\u95f4\u200b\uff0c\u200b\u5f7c\u6b64\u200b\u9694\u79bb\u200b\n                - \u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u5404\u200b\u8fdb\u7a0b\u200b\u95f4\u200b\u9694\u79bb\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u200b\u9700\u8981\u200b\u6bcf\u4e2a\u200b\u8fdb\u7a0b\u200b\u5404\u81ea\u200b\u6709\u200b\u4e00\u4efd\u200b\u4e8c\u8fdb\u5236\u200b\u7684\u200b\u6587\u4ef6\u200b\u7684\u200b\u62f7\u8d1d\u200b(2)\n                - \u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\u62f7\u8d1d\u200b\u4e8c\u8fdb\u5236\u200b\u6587\u4ef6\u200b\u540e\u200b\uff0c\u200b\u65b0\u5efa\u200b\u9875\u8868\u200b,\u200b\u628a\u200b\u8fd9\u4e9b\u200b\u9875\u200b\u7684\u200b\u7269\u7406\u200b\u5730\u5740\u6620\u5c04\u200b\u5230\u200b USER_START \u200b\u5f00\u5934\u200b\u7684\u200b\u865a\u62df\u5730\u5740\u200b\n                - \u200b\u5206\u914d\u200b\u65b0\u7684\u4e00\u9875\u200b\u4f5c\u6808\u200b\uff0c\u200b\u628a\u200b\u8fd9\u200b\u4e00\u9875\u200b\u7684\u200b\u7269\u7406\u200b\u5730\u5740\u6620\u5c04\u200b\u5230\u200b USER_END-4K\n                - \u200b\u6839\u636e\u200b\u65b0\u200b\u9875\u8868\u200b\u5730\u5740\u200b\u8ba1\u7b97\u200bsatp\n- `start_kernel`: \u200b\u4e0d\u200b\u8fdb\u5165\u200b test \u200b\u7b49\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b(3)\uff0c\u200b\u800c\u662f\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule \u200b\u8c03\u5ea6\u200b\u8d70\u200b\n- `schedule`: \u200b\u6839\u636e\u200bpolicy\u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b,\u200b\u8c03\u7528\u200b switch_to \u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b\n- `switch_to`: \u200b\u83b7\u53d6\u200b\u5148\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200bPCB\u200b\u5730\u5740\u200b\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u5f53\u524d\u200b\u4e0a\u4e0b\u6587\u200b\u5b58\u5165\u200b PCB\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\u7684\u200b PCB(6)\n- `__dummy`: \u200b\u5207\u200b\u7528\u6237\u200b\u6808\u200b\uff0csret \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b(4)\uff0c\u200b\u800c\u200b sepc \u200b\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6307\u5b9a\u200b\u7684\u200b\u7684\u200b USER_START(5)\n- `USER_START`: \u200b\u5f00\u59cb\u200b\u6267\u884c\u200b\u7528\u6237\u200b\u6001\u200b\u4ee3\u7801\u200b\uff0c\u200b\u5305\u62ec\u200b\u5404\u79cd\u200b\u7cfb\u7edf\u200b\u8c03\u7528\u200b\uff0c\u200b\u76f4\u5230\u200b\u65f6\u95f4\u200b\u7247\u7528\u200b\u5b8c\u200b\n- `_traps`: \u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u5207\u200b\u7cfb\u7edf\u200b\u6808\u200b\uff0c\u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\uff0c\u200b\u8c03\u5ea6\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\n- `__switch_to`: \u200b\u540c\u200b\u4e0a\u200b\uff0c\u200b\u6b64\u540e\u200b\u8f6e\u6d41\u200b\u8c03\u5ea6\u200b\n
              1. \u200b\u6ce8\u610f\u200b\u5bf9\u200b sstatus \u200b\u7684\u200b\u8bbe\u7f6e\u200b\u7981\u6b62\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u8fd9\u200b\u610f\u5473\u7740\u200b\u6211\u4eec\u200b\u7684\u200b idle \u200b\u8fdb\u7a0b\u200b\u4e0d\u4f1a\u200b\u88ab\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u8c03\u5ea6\u200b\u8d70\u200b
              2. \u200b\u4e8c\u8fdb\u5236\u200b\u6587\u4ef6\u200b\u91cc\u200b\u6709\u200b\u4ee3\u7801\u200b\u548c\u200b\u6570\u636e\u200b\u7b49\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u90a3\u4e9b\u200b\u5168\u5c40\u53d8\u91cf\u200b\u6211\u4eec\u200b\u5f53\u7136\u200b\u5e0c\u671b\u200b\u5404\u200b\u8fdb\u7a0b\u200b\u9694\u79bb\u200b.\u200b\u65b9\u4fbf\u200b\u8d77\u200b\u89c1\u200b\u6211\u4eec\u200b\u5168\u90fd\u200b\u62f7\u8d1d\u200b
              3. \u200b\u56e0\u4e3a\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\u4e4b\u524d\u200b\u5df2\u7ecf\u200b ban \u200b\u6389\u200b\u4e86\u200b
              4. \u200b\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b\u540e\u200b\u4e2d\u65ad\u200b\u624d\u200b\u91cd\u65b0\u200b\u4f7f\u80fd\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u4eec\u200b\u76f4\u63a5\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u4e86\u200b sstatus \u200b\u7684\u200b SPIE
              5. sepc \u200b\u5728\u200b__switch_to \u200b\u4e2d\u200b\u5c31\u200b\u5df2\u7ecf\u200b load \u200b\u597d\u200b\u4e86\u200b
              6. \u200b\u8fd9\u91cc\u200b\u52a0\u8f7d\u200b\u7684\u200b PCB \u200b\u5c31\u662f\u200b\u6211\u4eec\u200b task_init \u200b\u7684\u200b\u65f6\u5019\u200b\u5199\u200b\u597d\u200b\u7684\u200b\uff0c\u200b\u6ce8\u610f\u200b\u8fd9\u91cc\u200b\u52a0\u8f7d\u200b\u7684\u200b ra \u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u65f6\u200b\u8bbe\u7f6e\u200b\u4e3a\u200b__dummy
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_1","title":"\u6ce8\u610f\u4e8b\u9879","text":""},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#uapp","title":"uapp \u200b\u7684\u200b\u52a0\u8f7d","text":"

              \u200b\u5728\u200b vmlinux.lds \u200b\u4e2d\u200b\uff0c\u200b\u6211\u4eec\u200b\u6307\u5b9a\u200b\u7684\u200b uapp.S \u200b\u6587\u4ef6\u200b\u4f1a\u200b\u88ab\u200b\u52a0\u8f7d\u200b\u5230\u200b _sramdisk\uff0c_eramdisk \u200b\u4e4b\u95f4\u200b

              • \u200b\u5982\u679c\u200b uapp.S \u200b\u4e2d\u200b\u6211\u4eec\u200b\u7528\u200b\u7684\u200b\u662f\u200b\u7eaf\u200b\u4e8c\u8fdb\u5236\u200b\u6587\u4ef6\u200b\uff0c\u200b\u90a3\u4e48\u200b_sramdisk \u200b\u7b2c\u4e00\u884c\u200b\u5c31\u662f\u200b\u7a0b\u5e8f\u200b\u7b2c\u4e00\u884c\u200b
              • \u200b\u5982\u679c\u200b uapp.S \u200b\u4e2d\u200b\u6211\u4eec\u200b\u7528\u200b\u7684\u200b\u662f\u200b elf \u200b\u6587\u4ef6\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u89e3\u7801\u200b elf \u200b\u5934\u6765\u200b\u5b9a\u4f4d\u200b\u5177\u4f53\u200b\u7684\u200b\u4e8c\u8fdb\u5236\u200b\u4f4d\u7f6e\u200b\uff0c \u200b\u540c\u65f6\u200belf\u200b\u4e2d\u200b\u4e5f\u200b\u5236\u5b9a\u200b\u4e86\u200b\u7a0b\u5e8f\u200b\u5165\u53e3\u200b\u4e00\u7c7b\u200b\u7684\u200b\u4fe1\u606f\u200b
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#phdr-p_flags","title":"phdr->p_flags","text":"

              \u200b\u6ce8\u610f\u200b\u8fd9\u200b\u4e00\u9879\u200b\u867d\u7136\u200b\u662f\u200b\u58f0\u660e\u200b\u6743\u9650\u200b\u7684\u200b\u7684\u200b\u4f46\u200b\u5b9a\u4e49\u200b\u4e0d\u200b\u7b49\u540c\u4e8e\u200b\u9875\u8868\u200b\u9879\u200b\u7684\u200b perm\uff0c\u200b\u5b9a\u4e49\u200b\u5982\u4e0b\u200b\uff1a

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_2","title":"\u6267\u884c\u200b\u6743\u9650","text":"

              \u200b\u6ce8\u610f\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u9875\u8868\u200b\u548c\u200b sstatus \u200b\u4fdd\u8bc1\u200b\u8fd0\u884c\u200b\u7528\u6237\u200b\u6001\u200b\u4ee3\u7801\u200b\u65f6\u200b\u6743\u9650\u200b\u68c0\u67e5\u200b\u80fd\u591f\u200b\u901a\u8fc7\u200b\uff0c\u200b\u5426\u5219\u200b\u4f1a\u200b\u5bfc\u81f4\u200b scause = 0xc \u200b\u7684\u200b inst page fault \u200b\u6b64\u65f6\u200b\u4e5f\u8bb8\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5728\u200b gdb \u200b\u4e2d\u8bfb\u200b\u4fe1\u606f\u200b\u4f46\u662f\u200b\u4e00\u200b\u6267\u884c\u200b\u5c31\u200b\u51fa\u9519\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_3","title":"\u62f7\u8d1d\u200b\u95ee\u9898","text":"

              \u200b\u865a\u62df\u5185\u5b58\u200b\u6620\u5c04\u200b\u662f\u200b\u4ee5\u9875\u200b\u4e3a\u200b\u5355\u4f4d\u200b\u7684\u200b\uff0c\u200b\u6bd4\u5982\u200b 0x00010000 \u200b\u8d77\u200b\u7684\u200b\u865a\u62df\u200b\u9875\u200b\u6620\u5c04\u200b\u5230\u200b 0x80000000 \u200b\u8d77\u200b\u7684\u200b\u7269\u7406\u200b\u9875\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u4eec\u200b\u7684\u200b\u7a0b\u5e8f\u200b\u5165\u53e3\u200b\u5728\u200b 0x100e8\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u5e94\u8be5\u200b\u628a\u200b\u8fd9\u4e2a\u200b\u5165\u53e3\u200b\u62f7\u8d1d\u200b\u81f3\u200b 0x800000e8 \u200b\u800c\u200b\u4e0d\u662f\u200b 0x80000000

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab4-%E7%94%A8%E6%88%B7%E6%80%81/#_4","title":"\u6808\u200b\u5207\u6362","text":"

              \u200b\u5728\u200b_traps \u200b\u4e2d\u200b\uff0c\u200b\u5bf9\u4e8e\u200b\u4e00\u4e9b\u200b\u5185\u6838\u200b\u7ebf\u7a0b\u200b\u53d1\u8d77\u200b\u7684\u200b\u5f02\u5e38\u200b\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u5207\u6362\u200b\u6808\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u901a\u8fc7\u200b\u68c0\u67e5\u200b sscratch \u200b\u4e3a\u200b 0 \u200b\u6765\u200b\u786e\u8ba4\u200b\u8fd9\u200b\u4e00\u70b9\u200b

              \u200b\u8fd9\u4e00\u200b\u68c0\u67e5\u200b\u9700\u8981\u200b\u7528\u5230\u200b\u989d\u5916\u200b\u7684\u200b\u5bc4\u5b58\u5668\u200b\uff08\u200b\u5982\u200b t0\uff09\uff0c\u200b\u4f46\u662f\u200b\u6211\u4eec\u200b\u662f\u200b\u8981\u200b\u4fdd\u8bc1\u200b t0 \u200b\u7684\u200b\u503c\u200b\u5728\u200b\u4e2d\u65ad\u200b\u524d\u540e\u200b\u503c\u200b\u4e0d\u53d8\u200b\uff0c\u200b\u6240\u4ee5\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u7528\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u538b\u6808\u200b\uff0c\u200b\u8fd4\u56de\u200b\u4e4b\u524d\u200b\u8bb0\u5f97\u200b\u6062\u590d\u200b

              Bug

              \u200b\u8fd9\u91cc\u200b\u63d0\u5230\u200b\u7684\u200b\u538b\u6808\u200b\u7684\u200b\u529e\u6cd5\u200b\u5728\u200b\u6b64\u5904\u200b\u4ecd\u7136\u200b\u53ef\u884c\u200b\uff0c\u200b\u4f46\u200b\u5728\u200bLab5\u200b\u4e2d\u200b\u4f1a\u200b\u9047\u5230\u200b\u95ee\u9898\u200b\uff0c\u200b\u73b0\u5728\u200b\u6709\u200b\u4e00\u4e2a\u200b\u66f4\u597d\u200b\u7528\u200b\u4e5f\u200b\u66f4\u200b\u7b80\u6d01\u200b\u7684\u200b\u65b9\u6cd5\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab5 Demand Paging","text":"

              Abstract

              \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
              - `opensbi` \u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u542f\u52a8\u200b\u865a\u62df\u5185\u5b58\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n        - \u200b\u5bf9\u4e8e\u200b idle \u200b\u4ee5\u5916\u200b\u7684\u200b\u7ebf\u7a0b\u200b\uff0c\u200b\u5728\u200btask_struct\u200b\u4e2d\u200b\u6dfb\u52a0\u200bstack\u200b\u548c\u200bsegment-01(1)\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4e24\u6bb5\u200bvma\n- `start_kernel`: \u200b\u4e0d\u200b\u8fdb\u5165\u200b test \u200b\u7b49\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u800c\u662f\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule \u200b\u8c03\u5ea6\u200b\u8d70\u200b\n- `schedule`: \u200b\u6839\u636e\u200bpolicy\u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b,\u200b\u8c03\u7528\u200b switch_to \u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b\n- `switch_to`: \u200b\u83b7\u53d6\u200b\u5148\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200bPCB\u200b\u5730\u5740\u200b\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u5f53\u524d\u200b\u4e0a\u4e0b\u6587\u200b\u5b58\u5165\u200b PCB\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\u7684\u200b PCB\n- `__dummy`: \u200b\u5207\u200b\u7528\u6237\u200b\u6808\u200b\uff0csret \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b\uff0c\u200b\u800c\u200b sepc \u200b\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6307\u5b9a\u200b\u7684\u200b\u7684\u200b USER_START\n- `ENTRY`: PC\u200b\u8df3\u8f6c\u200b\u81f3\u200bENTRY\uff0c\u200b\u4f46\u662f\u200b\u6b64\u65f6\u200b\u8be5\u9875\u200b\u7684\u200b\u6620\u5c04\u200b\u5e76\u672a\u200b\u5b8c\u6210\u200b\uff0cPAGE FAULT\n- `_traps`: PAGE FAULT\uff0c\u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\u8fdb\u5165\u200btrap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200bPAGE FAULT\u200b\u540e\u200b\uff0c\u200b\u8c03\u7528\u200bdo_page_fault\n- `do_page_fault`: \u200b\u6839\u636e\u200bcurrent\u200b\u7684\u200bvma\u200b\u786e\u8ba4\u200b\u662f\u200b\u6bb5\u200b\u9519\u8bef\u200b\u3001\u200b\u6587\u4ef6\u200b\u9875\u200b\u7f3a\u9875\u200b\u8fd8\u662f\u200b\u533f\u540d\u200b\u9875\u200b\u7f3a\u9875\u200b\uff0c\u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\uff0c\u200b\u586b\u5199\u5185\u5bb9\u200b(2)\uff0c\u200b\u586b\u5199\u200b\u9875\u8868\u200b\uff0c\u200b\u8fd4\u56de\u200b\n- `_traps`: \u200b\u6062\u590d\u200b\u4e0a\u4e0b\u6587\u200b\u8fd4\u56de\u200b\uff0c\u200b\u6b64\u540e\u200b\u5bf9\u5e94\u200b\u9875\u200b\u5df2\u6709\u200b\u6620\u5c04\u200b\n- `ENTRY`: \u200b\u6062\u590d\u200b\u6267\u884c\u200b\uff0c\u200b\u6b64\u540e\u200b\u8c03\u5ea6\u200b\u6216\u8005\u200b\u9047\u5230\u200b\u65b0\u200b\u7684\u200b\u7f3a\u9875\u200b\u5747\u200b\u540c\u4e0a\u200b\u5904\u7406\u200b\n
              1. \u200b\u4e5f\u200b\u5373\u200breadelf\u200b\u65f6\u200b\u5f97\u5230\u200b\u7684\u200bsegment-01\uff0c\u200b\u5305\u62ec\u200b.text .rodata .bss
              2. \u200b\u6e05\u96f6\u200b\u6216\u8005\u200b\u62f7\u8d1d\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#_1","title":"\u6808\u200b\u5207\u6362\u200b\u95ee\u9898","text":"

              \u200b\u6587\u6863\u200b\u4e2d\u200b\u6307\u51fa\u200b\uff0c\u200b\u7531\u200b\u7528\u6237\u200b\u53d1\u8d77\u200b\u7684\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u5728\u200b_traps\u200b\u5f00\u5934\u200b\u5207\u6362\u200b\u5230\u200b\u5185\u6838\u200b\u6808\u200b\uff0c\u200b\u4f46\u662f\u200b\u5bf9\u4e8e\u200b\u5185\u6838\u200b\u53d1\u8d77\u200b\u7684\u200b\u4e2d\u65ad\u200b\u5c31\u200b\u4e0d\u200b\u9700\u8981\u200b\u3002\u200b\u800c\u200b\u8981\u200b\u5224\u65ad\u200b\u4e2d\u65ad\u200b\u662f\u5426\u200b\u7531\u200b\u5185\u6838\u200b\u53d1\u8d77\u200b\u5c31\u8981\u200b\u5224\u65ad\u200bsscratch\u200b\u662f\u5426\u200b\u4e3a\u200b0\uff0c\u200b\u5728\u200blab4\u200b\u4e2d\u200b\u6211\u200b\u628a\u200bt0\u200b\u538b\u6808\u200b\u540e\u200b\u7528\u200bt0\u200b\u6765\u200b\u68c0\u9a8c\u200b\u3002

              \u200b\u4f46\u662f\u200b\u5728\u200blab5\u200b\u4e2d\u200b\u8fd9\u200b\u4e00\u200b\u65b9\u6cd5\u200b\u884c\u4e0d\u901a\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u5f53\u200b\u6211\u4eec\u200b\u8bd5\u56fe\u200b\u628a\u200bt0\u200b\u538b\u6808\u200b\u7684\u200b\u65f6\u5019\u200b\u6211\u4eec\u200b\u7684\u200b\u6808\u200b\u53ef\u80fd\u200b\u6839\u672c\u5c31\u662f\u200b\u6ca1\u200b\u5206\u914d\u200b\u7684\u200b\u7528\u6237\u200b\u6808\u200b\uff0c\u200b\u90a3\u4e48\u200b\u8fd9\u4e2a\u200b\u538b\u6808\u200b\u7684\u200b\u884c\u4e3a\u200b\u53ea\u4f1a\u200b\u5f15\u53d1\u200b\u65b0\u200b\u7684\u200bPAGE FAULT\uff0c\u200b\u5982\u6b64\u200b\u6c38\u8fdc\u200b\u5faa\u73af\u200b\u3002

              \u200b\u4e3a\u4e86\u200b\u5bfb\u627e\u200b\u89e3\u51b3\u200b\u65b9\u6cd5\u200b\u53ef\u4ee5\u200b\u5148\u200b\u8bd5\u56fe\u200b\u53bb\u200b\u67e5\u770b\u200blinux\u200b\u65f6\u200b\u5982\u4f55\u200b\u89e3\u51b3\u200b\u8fd9\u4e00\u200b\u95ee\u9898\u200b\u7684\u200b\uff0c\u200b\u8fd9\u662f\u200b\u5bf9\u5e94\u200b\u7684\u200b\u4ee3\u7801\u200b

              \u200b\u53ef\u4ee5\u200b\u770b\u5230\u200blinux\u200b\u4f7f\u7528\u200b\u4e86\u200btp\uff08thread pointer\uff09\u200b\u4ee5\u53ca\u200b\u6307\u4ee4\u200bcsrwr,\u200b\u524d\u8005\u200b\u5012\u200b\u4e0d\u662f\u200b\u5fc5\u8981\u200b\u7684\u200b\u4f7f\u7528\u200b\uff0c\u200b\u6211\u4eec\u200b\u4e3b\u8981\u200b\u5173\u6ce8\u200b\u5230\u200bcsrwr\u200b\u6307\u4ee4\u200b\u53ef\u4ee5\u200b\u5b9e\u73b0\u200bcsr\u200b\u4e0e\u200b\u5176\u4ed6\u200b\u5bc4\u5b58\u5668\u200b\u7684\u200b\u4ea4\u6362\u200b\uff0c\u200b\u4ece\u800c\u200b\u6211\u4eec\u200bsp\u200b\u4e0e\u200bsscratch\u200b\u7684\u200b\u5207\u6362\u200b\u5c31\u200b\u4e0d\u200b\u9700\u8981\u200b\u5176\u4ed6\u200b\u5bc4\u5b58\u5668\u200b\u4e86\u200b\uff0c\u200b\u8fd9\u200b\u5c31\u662f\u200b\u6b63\u786e\u200b\u7684\u200b\u89e3\u51b3\u200b\u65b9\u5f0f\u200b\u3002

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#page-fault","title":"PAGE FAULT","text":"

              \u200b\u5904\u7406\u200b\u7f3a\u9875\u200b\u5f02\u5e38\u200b\u65f6\u8981\u200b\u4ed4\u7ec6\u200b\u5904\u7406\u200b\u6587\u4ef6\u200b\u9875\u200b\u7684\u200b\u590d\u5236\u200b\u95ee\u9898\u200b\uff0c\u200b\u5982\u679c\u200b\u8981\u200b\u590d\u5236\u200b\u7684\u200b\u4e00\u9875\u200b\u4e2d\u200b\u65e2\u6709\u200bfile_content\uff0c\u200b\u4e5f\u200b\u6709\u200b\u4e00\u4e9b\u200b\u4e0d\u200b\u5728\u200bfile\u200b\u4e4b\u4e2d\u200b\u7684\u200b\uff08\u200b\u5982\u200bbss\u200b\u6bb5\u200b\uff09\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u9700\u8981\u200b\u5206\u522b\u200b\u5904\u7406\u200b\u8fd9\u200b\u4e24\u6bb5\u200b\uff0c\u200b\u524d\u8005\u200b\u590d\u5236\u200b\uff0c\u200b\u540e\u8005\u200b\u6e05\u96f6\u200b\u3002

              \u200b\u4ee5\u4e0b\u200b\u662f\u200b\u4e00\u79cd\u200b\u5904\u7406\u200b\u601d\u8def\u200b\uff1a

              • \u200b\u65e0\u8bba\u5982\u4f55\u200b\uff0c\u200b\u6e05\u96f6\u200b\u65b0\u200b\u9875\u200b
              • \u200b\u627e\u5230\u200bbad_addr\u200b\u6240\u5728\u200b\u9875\u200b\u7684\u200b\u5f00\u5934\u200b\u548c\u200b\u7ed3\u5c3e\u200b\u4e3a\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u62f7\u8d1d\u200b\u8d77\u200b\u5730\u5740\u200b\u548c\u200b\u7ec8\u200b\u5730\u5740\u200b
              • \u200b\u8d77\u200b\u5730\u5740\u200b\u4e0d\u200b\u5e94\u200b\u5c0f\u4e8e\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u5f00\u5934\u200b\u5730\u5740\u200bvm_start
              • \u200b\u8d77\u200b\u5730\u5740\u200b\u4e0d\u200b\u5e94\u200b\u5927\u4e8e\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u7ed3\u5c3e\u200b\u5730\u5740\u200bvm_start + vm_content_size_in_file
              • \u200b\u7ec8\u200b\u5730\u5740\u200b\u4e0d\u200b\u5e94\u200b\u5927\u4e8e\u200b\u6587\u4ef6\u200b\u5185\u5bb9\u200b\u7ed3\u5c3e\u200b\u5730\u5740\u200bvm_start + vm_content_size_in_file
              • \u200b\u62f7\u8d1d\u200b
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab5-demand-paging/#vmas","title":"vmas","text":"

              \u200b\u5728\u200bkernel\u200b\u7ec8\u200b\uff0c\u200b\u6211\u4eec\u200b\u5206\u914d\u200b\u4e86\u200b\u4e00\u200b\u6574\u9875\u200b\uff0c\u200b\u5176\u4e2d\u200b\u7684\u200b\u4f4e\u200b\u5730\u5740\u200b\u653e\u200b\u4e86\u200b\u4e2a\u200btask_struct\uff0c\u200b\u9ad8\u200b\u5730\u5740\u200b\u5c31\u662f\u200b\u6808\u9876\u200b\uff08\u200b\u5982\u4e0b\u200b\u56fe\u200b\uff0c\u200b\u6765\u81ea\u200b\u5b9e\u9a8c\u200b\u6587\u6863\u200b\uff09\u3002\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8981\u200b\u7a0d\u5fae\u200b\u9650\u5236\u200b\u4e00\u4e0b\u200bvmas\u200b\u7684\u200b\u5927\u5c0f\u200b\uff0c\u200b\u4e0d\u80fd\u200b\u628a\u200b\u5206\u914d\u200b\u7684\u200b\u4e00\u9875\u200b\u5168\u7ed9\u200b\u7528\u200b\u4e86\u200b\uff0c\u200b\u8fd8\u8981\u200b\u7559\u70b9\u200b\u7ed9\u200b\u6808\u7528\u200b\u3002

                                  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u25c4\u2500\u2500\u2500 High Address\n                    \u2502             \u2502\n                    \u2502    stack    \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n              sp \u2500\u2500\u25ba\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n                    \u2502      \u2502      \u2502\n                    \u2502      \u25bc      \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n    4KB Page        \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2502 task_struct \u2502\n                    \u2502             \u2502\n                    \u2502             \u2502\n                    \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u25c4\u2500\u2500\u2500 Low Address\n
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab6-fork/","title":"\u64cd\u4f5c\u7cfb\u7edf\u200b - lab6 fork","text":"

              Abstract

              \u200b\u4e00\u4e9b\u200b\u8e29\u200b\u8fc7\u200b\u7684\u200b\u5751\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u4e00\u4e2a\u200b kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b\u603b\u7ed3\u200b

              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab6-fork/#kernel","title":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b","text":"kernel \u200b\u6267\u884c\u200b\u6d41\u7a0b\u200b
              - `opensbi` \u200b\u6267\u884c\u200b\u5b8c\u6bd5\u200b\n- `_start`: \u200b\u5b8c\u6210\u200b stvec\uff0c sie\uff0c mtimecmp\uff0c sstatus \u200b\u548c\u200b\u6808\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff0c\u200b\u7136\u540e\u200b\u4f9d\u6b21\u200b\u8c03\u7528\u200b\u4ee5\u4e0b\u200b\u51fd\u6570\u200b\n    - `setup_vm`: \u200b\u586b\u5199\u200b\u9875\u8868\u200b\n    - `relocate`: \u200b\u7528\u200b\u8bbe\u7f6e\u200b\u597d\u200b\u7684\u200b\u9875\u8868\u200b\u4fee\u6539\u200b satp\uff0c \u200b\u542f\u52a8\u200b\u865a\u62df\u5185\u5b58\u200b\n    - `mm_init`: \u200b\u5b8c\u6210\u200b\u5185\u5b58\u200b\u5206\u914d\u200b\u51fd\u6570\u200b\u7684\u200b\u521d\u59cb\u5316\u200b\n    - `setup_vm_final`: \u200b\u5207\u6362\u200b\u5230\u200b\u65b0\u200b\u7684\u200b\u9875\u8868\u200b\n    - `task_init`: \u200b\u521d\u59cb\u5316\u200b\u8fdb\u7a0b\u200b\n- `start_kernel`: \u200b\u4e0d\u200b\u8fdb\u5165\u200b test \u200b\u7b49\u200b\u65f6\u949f\u200b\u4e2d\u65ad\u200b\uff0c\u200b\u800c\u662f\u200b\u76f4\u63a5\u200b\u8c03\u7528\u200b schedule \u200b\u8c03\u5ea6\u200b\u8d70\u200b\n- `schedule`: \u200b\u6839\u636e\u200bpolicy\u200b\u9009\u62e9\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8981\u200b\u8c03\u5ea6\u200b\u7684\u200b\u7ebf\u7a0b\u200b,\u200b\u8c03\u7528\u200b switch_to \u200b\u81f3\u8be5\u200b\u7ebf\u7a0b\u200b\n- `switch_to`: \u200b\u83b7\u53d6\u200b\u5148\u540e\u200b\u7ebf\u7a0b\u200b\u7684\u200bPCB\u200b\u5730\u5740\u200b\uff0c\u200b\u8c03\u7528\u200b__switch_to\n- `__switch_to`: \u200b\u5f53\u524d\u200b\u4e0a\u4e0b\u6587\u200b\u5b58\u5165\u200b PCB\uff0c\u200b\u52a0\u8f7d\u200b\u4e0b\u200b\u4e00\u4e2a\u200b\u8fdb\u7a0b\u200b\u7684\u200b PCB\n- `__dummy`: \u200b\u5207\u200b\u7528\u6237\u200b\u6808\u200b\uff0csret \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6bb5\u200b\uff0c\u200b\u800c\u200b sepc \u200b\u662f\u200b\u6211\u4eec\u200b\u521d\u59cb\u5316\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u6307\u5b9a\u200b\u7684\u200b\u7684\u200b USER_START\n- `ENTRY`: PC\u200b\u8df3\u8f6c\u200b\u81f3\u200bENTRY\uff0c\u200b\u4f46\u662f\u200b\u6b64\u65f6\u200b\u8be5\u9875\u200b\u7684\u200b\u6620\u5c04\u200b\u5e76\u672a\u200b\u5b8c\u6210\u200b\uff0cPAGE FAULT\n- `_traps`: PAGE FAULT\uff0c\u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\u8fdb\u5165\u200btrap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200bPAGE FAULT\u200b\u540e\u200b\uff0c\u200b\u8c03\u7528\u200bdo_page_fault\n- `do_page_fault`: \u200b\u6839\u636e\u200bcurrent\u200b\u7684\u200bvma\u200b\u786e\u8ba4\u200b\u662f\u200b\u6bb5\u200b\u9519\u8bef\u200b\u3001\u200b\u6587\u4ef6\u200b\u9875\u200b\u7f3a\u9875\u200b\u8fd8\u662f\u200b\u533f\u540d\u200b\u9875\u200b\u7f3a\u9875\u200b\uff0c\u200b\u5206\u914d\u200b\u65b0\u200b\u9875\u200b\uff0c\u200b\u586b\u5199\u5185\u5bb9\u200b\uff0c\u200b\u586b\u5199\u200b\u9875\u8868\u200b\uff0c\u200b\u8fd4\u56de\u200b\n- `_traps`: \u200b\u6062\u590d\u200b\u4e0a\u4e0b\u6587\u200b\u8fd4\u56de\u200b\uff0c\u200b\u6b64\u540e\u200b\u5bf9\u5e94\u200b\u9875\u200b\u5df2\u6709\u200b\u6620\u5c04\u200b\n- `ENTRY`: \u200b\u6062\u590d\u200b\u6267\u884c\u200b\uff0c\u200b\u76f4\u5230\u200b\u8c03\u7528\u200bfork\n- `_traps`: \u200b\u4fdd\u5b58\u200b\u4e0a\u4e0b\u6587\u200b\uff0c\u200b\u8fdb\u5165\u200btrap_handler\n- `trap_handler`: \u200b\u786e\u8ba4\u200b\u662f\u200bfork\u200b\u540e\u200b\uff0c\u200b\u8c03\u7528\u200bsys_clone\n- `sys_clone`: \u200b\u8fdb\u884c\u200b\u4e00\u5b9a\u200b\u7684\u200b\u62f7\u8d1d\u200b\u4ee5\u200b\u521d\u59cb\u5316\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u521d\u59cb\u5316\u200b\u5b8c\u6210\u200b\u540e\u200b\u52a0\u5165\u200b\u8c03\u5ea6\u200b\u961f\u5217\u200b\n    -  \u200b\u5c06\u7236\u200b\u8fdb\u7a0b\u200bkernel stack \u200b\u6240\u5728\u200b\u9875\u200b\u62f7\u8d1d\u200b\u4e00\u4efd\u200b\u7ed9\u5b50\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u5176\u4e2d\u200b\u5305\u62ec\u200b\n          - task_struct: \u200b\u4f4d\u4e8e\u200b\u8be5\u9875\u200b\u4f4e\u200b\u5730\u5740\u200b\uff0c\u200b\u5176\u4e2d\u200b\u5185\u5bb9\u200b\u5728\u200b__switch_to\u200b\u5230\u200b\u81f3\u5b50\u200b\u8fdb\u7a0b\u200b\u7684\u200b\u65f6\u5019\u200b\u4f1a\u200b\u88ab\u200b\u52a0\u8f7d\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u9879\u200b\u9700\u8981\u200b\u6539\u52a8\u200b\n              - pid: \u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u7684\u200b\u65b0\u200bpid\n              - thread.sp: \u200b\u6362\u5230\u5b50\u200b\u8fdb\u7a0b\u200b\u540e\u200b\u7cfb\u7edf\u200b\u6808\u200b\u7684\u200b\u8d77\u59cb\u200b\u5730\u5740\u200b\uff0c\u200b\u6ce8\u610f\u200b\u5207\u6362\u200b\u8fc7\u6765\u200b\u65f6\u6808\u200b\u5185\u200b\u5df2\u6709\u200b\u6570\u636e\u200b\n              - thread.ra: __switch_to\u200b\u5230\u5b50\u200b\u8fdb\u7a0b\u200b\u540e\u200b\u7684\u200b\u8fd4\u56de\u200b\u5730\u5740\u200b\n              - thread.sscratch: \u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u5728\u200b\u5185\u6838\u200b\u6001\u200b\u7684\u200bsscratch\uff0c\u200b\u5728\u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u200b\u65f6\u4f1a\u200b\u4e0e\u200bsp\u200b\u4ea4\u6362\u200b\uff0c\u200b\u6240\u4ee5\u200b\u5b9e\u8d28\u200b\u662f\u5b50\u200b\u8fdb\u7a0b\u200b\u7528\u6237\u200b\u6001\u200b\u7684\u200bsp (1)\n              - satp: \u200b\u6839\u636e\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u9875\u8868\u200b\u4fee\u6539\u200b\n              - pgd: \u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u9875\u8868\u200b\n          - pt_regs: \u200b\u4f4d\u4e8e\u200b\u8be5\u9875\u200b\u9ad8\u200b\u5730\u5740\u200b\uff0c\u200b\u5176\u4e2d\u200b\u5185\u5bb9\u200b\u5728\u5b50\u200b\u8fdb\u7a0b\u200b\u4ece\u200b\u5185\u6838\u200b\u6001\u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u65f6\u200b\u5c06\u200b\u4f1a\u200b\u88ab\u200b\u52a0\u8f7d\u200b\uff0c\u200b\u4ee5\u4e0b\u200b\u9879\u200b\u9700\u8981\u200b\u6539\u52a8\u200b  \n              - a0: \u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u540e\u200b\u643a\u5e26\u200b\u7684\u200b\u8c03\u7528\u200b\u8fd4\u56de\u503c\u200b\uff0c\u200b\u4e5f\u200b\u5c31\u662f\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\u5f97\u5230\u200b\u7684\u200bfork\u200b\u8fd4\u56de\u503c\u200b\uff0c0\n              - sepc: fork\u200b\u5bf9\u5e94\u200becall\u200b\u7684\u200b\u4e0b\u200b\u4e00\u6761\u200b\u6307\u4ee4\u200b\n- `_traps`: \u200b\u7236\u200b\u8fdb\u7a0b\u200bfork\u200b\u5b8c\u6bd5\u200b\uff0c\u200b\u643a\u5e26\u200b\u5b50\u200b\u8fdb\u7a0b\u200bpid\u200b\u6062\u590d\u200b\u7528\u6237\u200b\u6001\u200b\u4e0a\u4e0b\u6587\u200b\u8fd4\u56de\u200b\n- `fork`: \u200b\u56de\u5230\u200b\u7528\u6237\u200b\u6001\u200b\uff0c\u200b\u7ee7\u7eed\u6267\u884c\u200b\u76f4\u5230\u200b\u88ab\u200b\u8c03\u5ea6\u200b\u8d70\u200b,\u200b\u968f\u540e\u200b\u8c03\u5ea6\u200b\u7b97\u6cd5\u200b\u9009\u62e9\u200b\u5b50\u200b\u8fdb\u7a0b\u200b\n
              1. \u200b\u6b63\u5e38\u200b\u6765\u8bf4\u200b\u8fd4\u56de\u200b\u7528\u6237\u200b\u6001\u200b\u7684\u200bsp\u200b\u5e94\u8be5\u200b\u4ece\u200bpt_regs\u200b\u4e2d\u200b\u6062\u590d\u200b\uff08\u200b\u6587\u6863\u200b\u4e2d\u200b\u4e5f\u200b\u662f\u200b\u8fd9\u4e48\u200b\u8bf4\u200b\u7684\u200b\uff09\uff0c\u200b\u4f46\u200b\u6211\u200b\u5b9e\u8df5\u200b\u4e0a\u200b\u662f\u4ece\u200bsscratch\u200b\u6062\u590d\u200b\u7684\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u5e94\u8be5\u200b\u6839\u636e\u200b\u5177\u4f53\u200b\u5b9e\u73b0\u200b\u4fee\u6539\u200b\u3002
              "},{"location":"blog/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F---lab6-fork/#_1","title":"\u8c03\u5ea6\u200b\u7b97\u6cd5","text":"

              \u200b\u6211\u4eec\u200b\u7684\u200btask\u200b\u6570\u7ec4\u200b\u5927\u5c0f\u200b\u662f\u200bNR_TASKS,\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u8981\u200b\u505a\u5230\u200b

              • \u200b\u53ea\u200b\u521d\u59cb\u5316\u200b\u6307\u5b9a\u200b\u6570\u91cf\u200b\u7684\u200b\u8fdb\u7a0b\u200b\uff0c\u200b\u800c\u200b\u4e0d\u662f\u200b\u586b\u6ee1\u200b\u6574\u4e2a\u200b\u6570\u7ec4\u200b
              • \u200b\u8c03\u5ea6\u200b\u7684\u200b\u65f6\u5019\u200b\u8981\u200b\u904d\u5386\u200b\u6570\u7ec4\u200b\uff0c\u200b\u4f46\u662f\u200b\u53ea\u4f1a\u200b\u8c03\u5ea6\u200b\u90a3\u4e9b\u200b\u6709\u6548\u200b\u7684\u200btask
              "},{"location":"blog/y-combinator-%E4%B8%8E%E9%80%92%E5%BD%92/","title":"Y-combinator \u200b\u4e0e\u200b\u9012\u5f52","text":"

              Abstract

              \u200b\u4ecb\u7ecd\u200b\u4e86\u200b lambda \u200b\u6f14\u7b97\u200b\u4e2d\u200b\u7684\u200b Y-combinator\uff0c\u200b\u4e3b\u8981\u200b\u662f\u200b\u5e0c\u671b\u200b\u7528\u200b\u62bd\u8c61\u200b\u7684\u200b\u601d\u60f3\u200b\u6765\u200b\u5e2e\u52a9\u200b\u7406\u89e3\u200b

              \u200b\u9996\u5148\u200b\u8bf7\u200b\u770b\u200b xg\u200b\u7684\u200b\u7b14\u8bb0\u200b\u8fd9\u91cc\u200b\uff0c\u200b\u63a8\u5bfc\u200b\u7684\u200b\u8fc7\u7a0b\u200b\u8bb2\u200b\u7684\u200b\u5f88\u200b\u6e05\u695a\u200b\u4e86\u200b

              \u200b\u8fd9\u91cc\u200b\u4e3b\u8981\u200b\u8ba8\u8bba\u200b\u53e6\u5916\u200b\u51e0\u4e2a\u200b\u95ee\u9898\u200b

              "},{"location":"blog/y-combinator-%E4%B8%8E%E9%80%92%E5%BD%92/#y-combinator_1","title":"\u4e0d\u7528\u200b Y-combinator \u200b\u53ef\u4ee5\u200b\u5417","text":"

              \u200b\u5f53\u7136\u200b\u53ef\u4ee5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u6587\u4e2d\u200b\u7684\u200bproto proto\u200b\u672c\u6765\u200b\u5c31\u662f\u200b\u7b49\u4ef7\u200b\u4e8e\u200bY u\u200b\u7684\u200b\uff0c\u200b\u8981\u200b\u7528\u200b\u8fd9\u79cd\u200b\u65b9\u5f0f\u200b\u5b9e\u73b0\u200b\u9012\u5f52\u200b\u4e3b\u8981\u200b\u8d70\u200b\u4ee5\u4e0b\u200b\u56db\u6b65\u200b

              1. \u200b\u5199\u51fa\u200b\u8c03\u7528\u200b\u81ea\u5df1\u200b\u7684\u200b\u90a3\u200b\u4e00\u7248\u200b\u7684\u200b lambda: \\(fact_1 = \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (fact_1\\ (pred\\ n)))\\)
              2. \u200b\u628a\u200b\u5bf9\u200b\u81ea\u5df1\u200b\u7684\u200b\u8c03\u7528\u200b\u6539\u6210\u200b\u5bf9\u200b\u53c2\u6570\u200b f \u200b\u7684\u200b\u8c03\u7528\u200b\uff1a\\(fact_2 = \\lambda f. \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (f\\ (pred\\ n)))\\)
              3. \u200b\u628a\u200b f \u200b\u6539\u5199\u200b\u6210\u200b f f: \\(fact_3 = \\lambda f. \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (f\\ f\\ (pred\\ n)))\\)
              4. \u200b\u5bf9\u200b\u5f97\u5230\u200b\u7684\u200b\u65b0\u200b\u7684\u200b lambda \u200b\u8868\u8fbe\u5f0f\u200b\u5e94\u7528\u200b\u81ea\u5df1\u200b\uff1a\\(fact = fact_3\\ fact_3\\)

              \u200b\u76f4\u63a5\u200b\u770b\u200b\u8fd9\u200b\u73a9\u610f\u200b\u8fd8\u662f\u200b\u6709\u70b9\u200b\u62bd\u8c61\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b\u62bd\u8c61\u200b\u7684\u200b\u601d\u60f3\u200b\u6765\u200b\u770b\u770b\u200b\u8fd9\u4e2a\u200b\u4e1c\u897f\u200b\u6709\u200b\u54ea\u4e9b\u200b\u6027\u8d28\u200b\uff0c\u200b\u800c\u200b\u820d\u53bb\u200b\u4e2d\u95f4\u200b\u5316\u7b80\u200b\u7684\u200b\u7ec6\u8282\u200b

              \\(fact_3\\ fact_3\\ 0 \\rightarrow 1\\)\\(fact_3\\ fact_3\\ 2 \\rightarrow *\\ 2\\ (fact_3\\ fact_3\\ 1)\\) \\[\\begin{align} &fact_3\\ fact_3\\ 0 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (f\\ f\\ (pred\\ n))))\\ fact_3\\ 0 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (fact_3\\ fact_3\\ (pred\\ n))))\\ 0 \\\\ =& is0\\ 0\\ 1\\ ( *\\ 0\\ (fact_3\\ fact_3\\ (pred\\ 0))) \\\\ =& 1 \\end{align}\\] \\[\\begin{align} &fact_3\\ fact_3 2 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (f\\ f\\ (pred\\ n))))\\ fact_3\\ 2 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (fact_3\\ fact_3\\ (pred\\ n))))\\ 2 \\\\ =& is0\\ 2\\ 1\\ ( *\\ 2\\ (fact_3\\ fact_3\\ (pred\\ 2))) \\\\ =& *\\ 2\\ (fact_3\\ fact_3\\ 1) \\\\ \\end{align}\\]

              \u200b\u4ee5\u4e0a\u200b\uff0c\u200b\u7b2c\u4e00\u4e2a\u200b\u6027\u8d28\u200b\u662f\u200b base case\uff0c\u200b\u7b2c\u4e8c\u4e2a\u200b\u6027\u8d28\u200b\u662f\u200b indection case\uff0c\u200b\u53ef\u4ee5\u200b\u663e\u7136\u200b\u770b\u51fa\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u9012\u5f52\u200b

              "},{"location":"blog/y-combinator-%E4%B8%8E%E9%80%92%E5%BD%92/#y-combinator_2","title":"Y-combinator \u200b\u7684\u200b\u5b9e\u4f8b","text":"

              \u200b\u4e0a\u9762\u200b\u90a3\u6837\u200b\u5df2\u7ecf\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u9012\u5f52\u200b\uff0c\u200b\u4e3a\u4ec0\u4e48\u200b\u8fd8\u200b\u9700\u8981\u200b Y-combinator? \u200b\u56e0\u4e3a\u200b\u4e0a\u9762\u200b\u7684\u200b\u5b9e\u73b0\u200b\u65b9\u6cd5\u200b\u4e2d\u200b\u9012\u5f52\u200b\u7684\u200b\u903b\u8f91\u200b\u548c\u200b\u51fd\u6570\u200b\u7684\u200b\u903b\u8f91\u200b\u6df7\u5728\u200b\u4e86\u200b\u4e00\u8d77\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b\u9012\u5f52\u200b\u7684\u200b\u903b\u8f91\u200b\u62bd\u8c61\u200b\u6210\u200b Y\uff0c\u200b\u628a\u200b\u51fd\u6570\u200b\u7684\u200b\u903b\u8f91\u200b\u62bd\u8c61\u200b\u6210\u200b u\uff0c\u200b\u5bf9\u200b Y \u200b\u5e94\u7528\u200b u \u200b\u5c31\u200b\u5f97\u5230\u200b\u4e86\u200b\u9012\u5f52\u200b\u7684\u200b u.\u200b\u5177\u4f53\u6765\u8bf4\u200b\u53ef\u4ee5\u200b\u5206\u6210\u200b\u4ee5\u4e0b\u200b\u4e09\u6b65\u200b

              1. \u200b\u5199\u51fa\u200b\u8c03\u7528\u200b\u81ea\u5df1\u200b\u7684\u200b\u90a3\u200b\u4e00\u7248\u200b\u7684\u200b lambda: \\(fact_1 = \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (fact_1\\ (pred\\ n)))\\)
              2. \u200b\u628a\u200b\u5bf9\u200b\u81ea\u5df1\u200b\u7684\u200b\u8c03\u7528\u200b\u6539\u6210\u200b\u5bf9\u200b\u53c2\u6570\u200b f \u200b\u7684\u200b\u8c03\u7528\u200b\uff1a\\(fact_2 = \\lambda f. \\lambda n . is0\\ n\\ 1\\ ( *\\ n\\ (f\\ (pred\\ n)))\\)
              3. \u200b\u5e94\u7528\u200b\u4e8e\u200b Y-combinator: \\(fact = Y\\ fact_2\\)

              \u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u7b80\u6d01\u200b\u4e86\u200b\u8bb8\u591a\u200b\uff0c\u200b\u4e0b\u9762\u200b\u518d\u200b\u6765\u200b\u4ecb\u7ecd\u200b\u4e00\u4e0b\u200b Y-combinator \u200b\u672c\u8eab\u200b\uff0c\u200b\u76f4\u63a5\u200b\u770b\u200b\u4ed6\u200b\u7684\u200b\u5185\u5bb9\u200b\u7684\u8bdd\u200b\u4e5f\u200b\u662f\u200b\u4e00\u200b\u5768\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5229\u7528\u200b\u62bd\u8c61\u200b\u7684\u200b\u601d\u60f3\u200b\uff0c\u200b\u4e0d\u7ba1\u200b\u4ed6\u200b\u7684\u200b\u5185\u5bb9\u200b\uff0c\u200b\u4e5f\u200b\u4e0d\u5728\u4e4e\u200b\u5316\u7b80\u200b\u7684\u200b\u7ec6\u8282\u200b\uff0c\u200b\u53ea\u200b\u770b\u200b\u51e0\u4e2a\u200b\u6027\u8d28\u200b\uff1a

              \\(Y\\ fact_2 \\rightarrow fact_2\\ (Y\\ fact_2)\\)\\(Y\\ fact_2\\ 0 \\rightarrow 1\\)\\(Y\\ fact_2\\ 2 \\rightarrow *\\ 2\\ (Y\\ fact_2\\ 1)\\) \\[\\begin{aligned} &Y\\ fact_2 \\\\ =& (\\lambda f. fact_2\\ (f\\ f)) (\\lambda f. fact_2\\ (f\\ f)) \\\\ =& fact_2\\ ((\\lambda f. fact_2\\ (f\\ f)) (\\lambda f. fact_2\\ (f\\ f))) \\\\ =& fact_2\\ (Y\\ fact_2) \\\\ \\end{aligned}\\] \\[\\begin{aligned} &Y\\ fact_2\\ 0 \\\\ =& fact_2\\ (Y\\ fact_2)\\ 0 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ (f\\ (pred\\ n))))\\ (Y\\ fact_2)\\ 0 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ ((Y\\ fact_2)\\ (pred\\ n))))\\ 0 \\\\ =& is0\\ 0\\ 1\\ ( *\\ 0\\ ((Y\\ fact_2)\\ (pred\\ 0))) \\\\ =& 1 \\end{aligned}\\] \\[\\begin{aligned} &Y\\ fact_2\\ 2 \\\\ =& fact_2\\ (Y\\ fact_2)\\ 2 \\\\ =& \\lambda f. \\lambda n .( is0\\ n\\ 1 ( *\\ n\\ (f\\ (pred\\ n)))) (Y\\ fact_2)\\ 2 \\\\ =& \\lambda n .( is0\\ n\\ 1\\ ( *\\ n\\ ((Y\\ fact_2)\\ (pred\\ n))))\\ 2 \\\\ =& is0\\ 2\\ 1\\ ( *\\ 2\\ ((Y\\ fact_2)\\ (pred\\ 2))) \\\\ =& *\\ 2\\ (Y\\ fact_2\\ 1) \\end{aligned}\\]

              \u200b\u4ee5\u4e0a\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u5176\u200b\u6027\u8d28\u200b\u6709\u200b

              1. \u200b\u5728\u200b\u524d\u9762\u200b\u51ed\u7a7a\u200b\u591a\u200b\u5e94\u7528\u200b\u4e00\u6b21\u200b fact_2
              2. base case
              3. induction case

              \u200b\u4ee5\u4e0a\u200b\u63a8\u5bfc\u200b\u7684\u200b\u6bd4\u8f83\u200b\u540a\u200b\u8be1\u200b\u7684\u200b\u5730\u65b9\u200b\u662f\u200b\u9700\u8981\u200b\u4ee5\u200b\u8fd9\u79cd\u200b\u8fd0\u7b97\u200b\u987a\u5e8f\u200b\u624d\u200b\u597d\u200b\u51fa\u200b\u7ed3\u679c\u200b\uff0c\u200b\u867d\u7136\u200b\u6211\u4eec\u200b\u8fd9\u91cc\u200b\u5bf9\u200b\u6709\u200b\u597d\u51e0\u4e2a\u200b\u5b50\u9879\u200b\u7684\u200b\u65f6\u5019\u200b\u5148\u200b\u6f14\u7b97\u200b\u4ec0\u4e48\u200b\u5e76\u200b\u6ca1\u6709\u200b\u89c4\u5b9a\u200b

              \u200b\u6709\u200b\u4ee5\u4e0a\u200b\u6027\u8d28\u200b\uff0c\u200b\u6beb\u65e0\u7591\u95ee\u200b\\(Y fact_2\\)\u200b\u4e5f\u200b\u5b9e\u73b0\u200b\u4e86\u200b\u9012\u5f52\u200b

              Reference

              • Lambda \u200b\u6f14\u7b97\u200b
              • Recursive Lambda Functions the Y-Combinator
              "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%8A%E5%86%99-markdown/","title":"\u5728\u200b VSCode \u200b\u4e0a\u200b\u5199\u200b Markdown","text":"

              Abstract

              markdown \u200b\u771f\u200b\u65b9\u4fbf\u200b\u554a\u200b\u771f\u200b\u65b9\u4fbf\u200b\uff0c\u200b\u672c\u6587\u200b\u8bb2\u200b\u4e86\u200b\u600e\u4e48\u200b\u5728\u200b VSCode \u200b\u4e0a\u200b\u914d\u7f6e\u200b\u4e00\u4e2a\u200b\u597d\u7528\u200b\u7684\u200b\u5199\u200b markdown \u200b\u7684\u200b\u73af\u5883\u200b

              "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%8A%E5%86%99-markdown/#_1","title":"\u8d77\u6b65","text":"

              \u200b\u9996\u5148\u200b\u542f\u7528\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u4e24\u4e2a\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5f00\u59cb\u200b\u5199\u200b markdown\uff0c\u200b\u5e76\u200b\u5728\u200b\u53f3\u4fa7\u200b\u9884\u89c8\u200b\u4e86\u200b

              \u200b\u6548\u679c\u56fe\u200b

              \u200b\u6ce8\u610f\u200b\u9884\u89c8\u200b\u9700\u8981\u200b\u5728\u200b\u7f16\u8f91\u5668\u200b\u53f3\u4e0a\u89d2\u200b\u70b9\u51fb\u200b\u9884\u89c8\u200b\u6309\u94ae\u200b\u5f00\u542f\u200b\u6216\u8005\u200b\u4f7f\u7528\u200b\u5feb\u6377\u952e\u200b

              \u200b\u5982\u679c\u200b\u9700\u8981\u200b\u4fdd\u5b58\u200b\u6210\u200b PDF \u200b\u6216\u8005\u200b\u522b\u7684\u200b\u683c\u5f0f\u200b\uff0c\u200b\u5728\u200b\u9884\u89c8\u200b\u754c\u9762\u200b\u53f3\u952e\u200b\u5c31\u200b\u597d\u200b\uff0cChrome \u200b\u4e00\u680f\u200b\u7684\u200b\u4e09\u4e2a\u200b\u9009\u9879\u200b\u90fd\u200b\u662f\u200b\u4e0d\u200b\u9700\u8981\u200b\u989d\u5916\u200b\u5b89\u88c5\u200b\u7684\u200b\uff1a

              \u200b\u6570\u5b66\u516c\u5f0f\u200b\u6e32\u67d3\u200b\u95ee\u9898\u200b

              \u200b\u6709\u65f6\u5019\u200b\u4fdd\u5b58\u200b\u6210\u200b PDF \u200b\u65f6\u4f1a\u200b\u53d1\u73b0\u200b\u6570\u5b66\u516c\u5f0f\u200b\u6e32\u67d3\u200b\u5931\u8d25\u200b\u4e86\u200b\uff0c\u200b\u8c03\u67e5\u200b\u4e86\u200b\u4e00\u4e0b\u200b\u53d1\u73b0\u200b\u662f\u200b\u751f\u6210\u200b\u7684\u200b\u901f\u5ea6\u200b\u592a\u5feb\u200b\u4e86\u200b\u6570\u5b66\u516c\u5f0f\u200b\u6765\u4e0d\u53ca\u200b\u6e32\u67d3\u200b\uff0c\u200b\u8c03\u8282\u200b\u4ee5\u4e0b\u200b\u53c2\u6570\u200b\u53ef\u4ee5\u200b\u89e3\u51b3\u95ee\u9898\u200b\uff1a

              "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%8A%E5%86%99-markdown/#_2","title":"\u5feb\u6377\u200b\u5730\u200b\u63d2\u5165\u200b\u56fe\u7247","text":"

              \u200b\u5c31\u200b\u6700\u200b\u539f\u6559\u65e8\u4e3b\u4e49\u200b\u7684\u200b\u63d2\u5165\u65b9\u5f0f\u200b\u800c\u8a00\u200b\uff0c\u200b\u9700\u8981\u200b\u628a\u200b\u56fe\u7247\u200b\u4fdd\u5b58\u200b\u5230\u200b\u6307\u5b9a\u200b\u6587\u4ef6\u5939\u200b\uff0c\u200b\u8d77\u597d\u200b\u540d\u5b57\u200b\uff0c\u200b\u518d\u200b\u5229\u7528\u200b![](url)\u200b\u683c\u5f0f\u200b\u63d2\u5165\u200b\uff0c\u200b\u6b65\u9aa4\u200b\u76f8\u5f53\u200b\u7e41\u7410\u200b\uff0c\u200b\u8ddf\u200b Word \u200b\u7684\u200b\u56fe\u7247\u200b\u63d2\u5165\u200b\u5b8c\u5168\u200b\u662f\u200b\u4e24\u4e2a\u200b\u91cf\u7ea7\u200b\u7684\u200b\u5de5\u4f5c\u91cf\u200b.

              \u200b\u63a8\u8350\u200b\u4f7f\u7528\u200bPaste Image\u200b\u63d2\u4ef6\u200b\uff1a

              \u200b\u4fee\u6539\u200b\u5982\u4e0b\u200b\u7684\u200b\u8bbe\u7f6e\u200b\uff1a \u200b\u8fd9\u4f1a\u200b\u5c06\u200b\u56fe\u7247\u200b\u63d2\u5165\u200b\u5230\u200b\u5f53\u524d\u200b md \u200b\u6587\u4ef6\u200b\u4e0b\u200b\u7684\u200b images/mdfilename/time.png \u200b\u4f4d\u7f6e\u200b.

              \u200b\u7528\u200b\u7cfb\u7edf\u200b\u81ea\u5e26\u200b\u7684\u200b\u622a\u5c4f\u200b\u5de5\u5177\u200b\u622a\u5c4f\u200b\u5230\u200b\u7c98\u8d34\u677f\u200b\u540e\u200b Command+Option+v \u200b\u5373\u53ef\u200b\u5b58\u5165\u200b\u6587\u4ef6\u5939\u200b\u5e76\u200b\u81ea\u52a8\u200b\u5f15\u7528\u200b\u6b63\u786e\u200b\u7684\u200b\u8def\u5f84\u200b.

              \u200b\u8bbe\u7f6e\u200b\u9ed8\u8ba4\u200b\u56fe\u7247\u200b\u6837\u5f0f\u200b

              \u200b\u672c\u4eba\u200b\u4f7f\u7528\u200b mkdocs for material \u200b\u642d\u5efa\u200b\u6b64\u200b\u7f51\u9875\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7ed9\u200b\u6b64\u200b\u63d2\u4ef6\u200b\u6dfb\u52a0\u200b\u7684\u200b\u56fe\u7247\u200b\u6dfb\u52a0\u200b\u7edf\u4e00\u200b\u6837\u5f0f\u200b\uff1a

              • \u200b\u8bbe\u7f6e\u200b css\uff1a\u200b\u6bd4\u5982\u200b\u9634\u5f71\u200b\u52a0\u200b\u5706\u89d2\u200b
                img[src*=\"pic\"] {\nbox-shadow: 4px 4px 15px #666;\nborder-radius: 10px;\n}\n
              • \u200b\u5728\u200b mkdocs.yml \u200b\u6dfb\u52a0\u200b css \u200b\u4f5c\u4e3a\u200b\u989d\u5916\u200b css\uff1a
                extra_css:\n- css/extra.css\n
              • \u200b\u8bbe\u7f6e\u200b Paste Imgae \u200b\u81ea\u52a8\u200b\u6dfb\u52a0\u200b\u540e\u7f00\u200b\uff1a
                \"pasteImage.suffix\": \"#pic\"\n
              • \u200b\u53ef\u4ee5\u200b\u6dfb\u52a0\u200b\u591a\u4e2a\u200b\u6837\u5f0f\u200b\uff0c\u200b\u5e76\u200b\u6539\u53d8\u200b#\u200b\u540e\u200b\u7684\u200b\u540d\u79f0\u200b\u6765\u200b\u5207\u6362\u200b
              "},{"location":"blog/%E5%9C%A8-vscode-%E4%B8%AD%E4%BD%BF%E7%94%A8-conda-%E7%9A%84%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E9%97%AE%E9%A2%98/","title":"\u5728\u200b VSCode \u200b\u4e2d\u200b\u4f7f\u7528\u200b conda \u200b\u7684\u200b\u865a\u62df\u73af\u5883\u200b\u95ee\u9898","text":"

              Abstract

              \u200b\u7528\u200b conda \u200b\u7684\u200b\u8fc7\u7a0b\u200b\u4e2d\u200b\u9047\u5230\u200b\u7684\u200b\u4e00\u4e2a\u200b\u795e\u79d8\u200b\u95ee\u9898\u200b\ud83e\udd14

              \u200b\u6700\u8fd1\u200b\u5f00\u59cb\u200b\u4f7f\u7528\u200b conda\uff0c\u200b\u8bd5\u56fe\u200b\u5728\u200b VSCode \u200b\u7ec8\u7aef\u200b\u91cc\u200b\u5207\u6362\u200b\u865a\u62df\u73af\u5883\u200b\uff0c\u200b\u547d\u4ee4\u884c\u200b\u63d0\u793a\u200b\u5df2\u7ecf\u200b\u5207\u6362\u200b\uff0c\u200b\u4f46\u662f\u200b python \u200b\u73af\u5883\u200b\u5b9e\u9645\u4e0a\u200b\u6ca1\u6709\u200b\u53d8\u200b. \u200b\u89e3\u51b3\u65b9\u6848\u200b\u5982\u4e0b\u200b\uff1a

              1. \u200b\u5feb\u6377\u952e\u200bcommand shift p\uff0c\u200b\u641c\u7d22\u200b settings\uff0c\u200b\u6253\u5f00\u200b user settings json
              2. \u200b\u52a0\u5165\u200b\u5982\u4e0b\u200b\u5185\u5bb9\u200b\uff1a
                    \"terminal.integrated.env.osx\": {\n      \"PATH\": \"\"\n  }\uff0c\n
              3. \u200b\u91cd\u542f\u200b VSCode \u200b\u5373\u53ef\u200b
              "},{"location":"blog/%E7%94%A8-vim-%E6%89%B9%E9%87%8F%E6%A0%BC%E5%BC%8F%E5%8C%96/","title":"\u7528\u200b Vim \u200b\u6279\u91cf\u200b\u683c\u5f0f\u5316","text":"

              Abstract

              \u200b\u4f17\u6240\u5468\u77e5\u200b\u4e2d\u82f1\u6587\u200b\u6df7\u6742\u200b\u7684\u200b\u6392\u7248\u200b\u5176\u5b9e\u200b\u662f\u200b\u6709\u200b\u8bb2\u7a76\u200b\u7684\u200b\uff0c\u200b\u4f46\u662f\u200b\u5b9e\u9645\u64cd\u4f5c\u200b\u8d77\u6765\u200b\u8f93\u5165\u6cd5\u200b\u5207\u6765\u5207\u200b\u53bb\u200b\u9ebb\u70e6\u200b\u5f97\u200b\u5f88\u200b\uff0c\u200b\u672c\u6587\u200b\u8bb2\u200b\u7684\u200b\u662f\u200b\u7528\u200b vim \u200b\u7684\u200b Pangu \u200b\u63d2\u4ef6\u200b\u6765\u200b\u6279\u91cf\u200b\u81ea\u52a8\u200b\u683c\u5f0f\u5316\u200b\u7684\u200b\u65b9\u6cd5\u200b

              "},{"location":"blog/%E7%94%A8-vim-%E6%89%B9%E9%87%8F%E6%A0%BC%E5%BC%8F%E5%8C%96/#vim-pangu","title":"\u5b89\u88c5\u200b Vim \u200b\u5de5\u5177\u200b Pangu","text":"

              \u200b\u9996\u5148\u200b\u5b89\u88c5\u200b vim-plug\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u53ef\u4ee5\u200b\u5e2e\u52a9\u200b\u6211\u4eec\u200b\u65b9\u4fbf\u200b\u7684\u200b\u5b89\u88c5\u200b vim \u200b\u63d2\u4ef6\u200b\u7684\u200b\u63d2\u4ef6\u200b

              \u200b\u968f\u540e\u200b\u5b89\u88c5\u200b Pangu \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u5728\u200b ~/.vimrc \u200b\u4e2d\u200b\u6dfb\u52a0\u200b

              Plug 'hotoo/pangu.vim'\uff0c { 'for': ['markdown'\uff0c 'vimwiki'\uff0c 'text'] }\nlet g:pangu_rule_date = 1\n

              \u200b\u968f\u540e\u200b\u5728\u200b vim \u200b\u4e2d\u200b\u6267\u884c\u200b:PlugInstall\u200b\u5373\u53ef\u200b\u5b89\u88c5\u200b

              Pangu \u200b\u7684\u200b \u200b\u5b98\u65b9\u200b\u9996\u9875\u200b\u4e0a\u200b\u5df2\u7ecf\u200b\u6709\u200b\u6bd4\u8f83\u200b\u8be6\u7ec6\u200b\u7684\u200b\u8bf4\u660e\u200b\u4e86\u200b\uff0c\u200b\u60f3\u8981\u200b\u542f\u7528\u200b\u5176\u4e2d\u200b\u7684\u200b\u529f\u80fd\u200b\u7167\u7740\u200b\u505a\u200b\u5c31\u662f\u200b\u4e86\u200b

              "},{"location":"blog/%E7%94%A8-vim-%E6%89%B9%E9%87%8F%E6%A0%BC%E5%BC%8F%E5%8C%96/#pangu","title":"\u6279\u91cf\u200b\u4f7f\u7528\u200b Pangu \u200b\u683c\u5f0f\u5316","text":"

              \u200b\u9996\u5148\u200b\u7528\u200b vim \u200b\u6279\u91cf\u200b\u6253\u5f00\u200b\u60f3\u8981\u200b\u683c\u5f0f\u5316\u200b\u7684\u200b\u6587\u4ef6\u200b

              vim *.md\n

              \u200b\u90a3\u4e48\u200b\u6240\u6709\u200b\u7b26\u5408\u200b\u683c\u5f0f\u200b\u7684\u200b\u6587\u4ef6\u200b\u90fd\u200b\u88ab\u200b\u6253\u5f00\u200b\u5728\u200b\u7f13\u5b58\u200b(buffer)\u200b\u4e2d\u200b\u4e86\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u7528\u200b:ls\u200b\u6765\u200b\u67e5\u770b\u200b\uff0c\u200b\u7528\u200b:n\u200b\u6765\u200b\u5207\u6362\u200b

              \u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u628a\u200b vim \u200b\u7684\u200b\u7f13\u5b58\u200b\u548c\u200b\u6587\u4ef6\u200b\u7684\u200b\u5173\u7cfb\u200b\u7406\u89e3\u200b\u6210\u200b\u5185\u5b58\u200b\u548c\u200b\u78c1\u76d8\u200b\u7684\u200b\u5173\u7cfb\u200b\uff0c\u200b\u6211\u4eec\u200b\u5728\u200b\u7f13\u5b58\u200b\u4e2d\u200b\u53ef\u4ee5\u200b\u4fee\u6539\u200b\u6587\u4ef6\u200b\uff0c\u200b\u4f46\u200b\u76f4\u5230\u200bw\u200b\u4e4b\u524d\u200b\u90fd\u200b\u4e0d\u4f1a\u200b\u5199\u5165\u200b\u78c1\u76d8\u200b

              \u200b\u8981\u200b\u6279\u91cf\u200b\u5904\u7406\u200b\uff0c\u200b\u4f7f\u7528\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b

              :bufdo PanguAll | update\n:bufdo w\n:q\n

              \u200b\u5176\u4e2d\u200b\u7684\u200b bufdo \u200b\u7684\u200b\u610f\u601d\u200b\u5c31\u662f\u200b\u5bf9\u200b\u6240\u6709\u200b\u7f13\u5b58\u200b\u4e2d\u200b\u7684\u200b\u6587\u4ef6\u200b\u6267\u884c\u547d\u4ee4\u200b

              \u200b\u6211\u4eec\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u628a\u200b\u547d\u4ee4\u200b\u5199\u5165\u200b.vim\u200b\u540e\u7f00\u200b\u7684\u200b\u811a\u672c\u200b\uff0c\u200b\u7136\u540e\u200b\u76f4\u63a5\u200b\u5728\u200b vim \u200b\u4e2d\u200b\u7528\u200b:source\u200b\u6267\u884c\u200b\u811a\u672c\u200b\u5c31\u200b\u597d\u200b

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/","title":"\u7528\u200b Docker \u200b\u642d\u5efa\u200b minisql \u200b\u73af\u5883","text":"

              Abstract

              \u200b\u4e00\u4e2a\u200b\u7b80\u6613\u200b\u7684\u200b\u6559\u7a0b\u200b\u6765\u200b\u4ecb\u7ecd\u200b\u5982\u4f55\u200b\u5728\u200b MacOS \u200b\u4e0a\u7528\u200b docker \u200b\u642d\u5efa\u200b minisql \u200b\u73af\u5883\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6709\u4eba\u200b\u8981\u200b\u95ee\u200b\u4e86\u200b\uff0c\u200b\u4e3a\u4ec0\u4e48\u200b\u4e0d\u200b\u76f4\u63a5\u200b\u672c\u5730\u200b\u90e8\u7f72\u200b\u5462\u200b. \u200b\u6211\u200b\u4e5f\u200b\u60f3\u200b\u672c\u5730\u200b\u90e8\u7f72\u200b\u554a\u200b\uff0c\u200b\u4f46\u662f\u200b\u7f16\u8bd1\u200b\u8d77\u6765\u200b\u7834\u4e8b\u200b\u592a\u591a\u200b\u4e86\u200b\ud83d\ude05\uff0c\u200b\u7d22\u6027\u200b\u8bd5\u200b\u4e00\u79cd\u200b\u8de8\u5e73\u53f0\u200b\u7684\u200b\u65b9\u6848\u200b.

              \u200b\u73af\u5883\u200b

              MacOS: Ventura 13.4.1 Docker: 4.16.2 Ubuntu: 20.04

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#1","title":"1.\u200b\u542f\u52a8\u200b\u5bb9\u5668","text":""},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#11-docker","title":"1.1 \u200b\u4e0b\u8f7d\u200b Docker","text":"

              \u200b\u9996\u5148\u200b\u4f60\u200b\u8981\u200b\u6709\u200b docker \u200b\u8f6f\u4ef6\u200b\uff0c\u200b\u5148\u53bb\u200b\u5b98\u7f51\u200b\u4e0b\u200b\u4e00\u4e2a\u200b.

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#12","title":"1.2 \u200b\u62c9\u53d6\u200b\u955c\u50cf","text":"

              \u200b\u542f\u52a8\u200b docker \u200b\u8f6f\u4ef6\u200b.\u200b\u6765\u5230\u200b\u547d\u4ee4\u884c\u200b\u4e2d\u200b\u8f93\u5165\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b\u6765\u62c9\u53d6\u200b ubuntu:20.04 \u200b\u955c\u50cf\u200b\uff08minisql \u200b\u5f53\u524d\u200b\u63a8\u8350\u200b\u90e8\u7f72\u200b\u5728\u200b ubuntu:20.04\uff09\uff1a

              docker pull ubuntu:20.04\n

              \u200b\u955c\u50cf\u200b

              \u200b\u955c\u50cf\u200b\uff08Image\uff09\u200b\u662f\u200b\u4e00\u4e2a\u200b\u9759\u6001\u200b\u7684\u200b\u3001\u200b\u53ea\u8bfb\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u5b83\u200b\u5305\u542b\u200b\u4e86\u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\u3001\u200b\u6587\u4ef6\u7cfb\u7edf\u200b\u548c\u200b\u5e94\u7528\u7a0b\u5e8f\u200b\u7684\u200b\u6240\u6709\u200b\u6587\u4ef6\u200b\u548c\u200b\u8bbe\u7f6e\u200b.\u200b\u955c\u50cf\u200b\u662f\u200b\u6784\u5efa\u200b\u5bb9\u5668\u200b\u7684\u200b\u57fa\u7840\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u770b\u4f5c\u200b\u662f\u200b\u4e00\u4e2a\u200b\u6a21\u677f\u200b\u6216\u8005\u200b\u84dd\u56fe\u200b.\u200b\u955c\u50cf\u200b\u662f\u200b\u901a\u8fc7\u200b Dockerfile \u200b\u6587\u4ef6\u200b\u5b9a\u4e49\u200b\u548c\u200b\u6784\u5efa\u200b\u7684\u200b\uff0cDockerfile \u200b\u4e2d\u200b\u5305\u542b\u200b\u4e86\u200b\u4e00\u7cfb\u5217\u200b\u6307\u4ee4\u200b\u548c\u200b\u914d\u7f6e\u200b\uff0c\u200b\u7528\u4e8e\u200b\u521b\u5efa\u200b\u955c\u50cf\u200b.\u200b\u955c\u50cf\u200b\u53ef\u4ee5\u200b\u5b58\u50a8\u200b\u5728\u200b Docker Registry \u200b\u4e2d\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u955c\u50cf\u200b\u540d\u79f0\u200b\u548c\u200b\u6807\u7b7e\u200b\u6765\u200b\u552f\u4e00\u200b\u6807\u8bc6\u200b.\u200b\u955c\u50cf\u200b\u662f\u200b\u4e0d\u53ef\u200b\u4fee\u6539\u200b\u7684\u200b\uff0c\u200b\u5982\u679c\u200b\u9700\u8981\u200b\u5bf9\u200b\u955c\u50cf\u200b\u8fdb\u884c\u200b\u66f4\u6539\u200b\uff0c\u200b\u9700\u8981\u200b\u91cd\u65b0\u200b\u6784\u5efa\u200b\u4e00\u4e2a\u200b\u65b0\u200b\u7684\u200b\u955c\u50cf\u200b.

              docker imagesdocker pulldocker rmi

              \u200b\u4f7f\u7528\u200bdocker images\u200b\u547d\u4ee4\u200b\u67e5\u770b\u200b\u5f53\u524d\u200b\u5df2\u6709\u200b\u7684\u200b\u955c\u50cf\u200b\u5217\u8868\u200b.\u200b\u8fd9\u200b\u5c06\u200b\u663e\u793a\u200b\u6240\u6709\u200b\u5df2\u200b\u4e0b\u8f7d\u200b\u548c\u200b\u6784\u5efa\u200b\u7684\u200b\u955c\u50cf\u200b\uff0c\u200b\u4ee5\u53ca\u200b\u5b83\u4eec\u200b\u7684\u200b\u76f8\u5173\u200b\u4fe1\u606f\u200b\uff0c\u200b\u5982\u200b\u955c\u50cf\u200b ID\u3001\u200b\u540d\u79f0\u200b\u3001\u200b\u6807\u7b7e\u200b\u3001\u200b\u5927\u5c0f\u200b\u7b49\u200b.

              \u200b\u4f7f\u7528\u200bdocker pull\u200b\u547d\u4ee4\u200b\u4ece\u200b Docker Registry \u200b\u4e2d\u62c9\u53d6\u200b\u955c\u50cf\u200b.\u200b\u5982\u679c\u200b\u4e0d\u200b\u6307\u5b9a\u200b\u6807\u7b7e\u200b\uff0c\u200b\u9ed8\u8ba4\u200b\u62c9\u53d6\u200b latest \u200b\u6807\u7b7e\u200b\u7684\u200b\u955c\u50cf\u200b.\u200b\u4f8b\u5982\u200b\uff0cdocker pull ubuntu:20.04\u200b\u5c06\u62c9\u53d6\u200b Ubuntu 20.04 \u200b\u955c\u50cf\u200b.

              \u200b\u4f7f\u7528\u200bdocker rmi\u200b\u547d\u4ee4\u200b\u5220\u9664\u200b\u955c\u50cf\u200b.\u200b\u4f8b\u5982\u200b\uff0cdocker rmi ubuntu:20.04\u200b\u5c06\u200b\u5220\u9664\u200b Ubuntu 20.04 \u200b\u955c\u50cf\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u4e5f\u200b\u53ef\u4ee5\u200b\u4f7f\u7528\u200b ID \u200b\u6307\u5b9a\u200b\u8981\u200b\u5220\u9664\u200b\u7684\u200b\u955c\u50cf\u200b.

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#13","title":"1.3 \u200b\u542f\u52a8\u200b\u5bb9\u5668","text":"

              \u200b\u7528\u200bdocker run\u200b\u542f\u52a8\u200b\u4e00\u4e2a\u200b\u5bb9\u5668\u200b\uff0c\u200b\u53c2\u6570\u200b-it\u200b\u8868\u793a\u200b\u542f\u52a8\u200b\u5b8c\u540e\u200b\u76f4\u63a5\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\u7684\u200b\u7ec8\u7aef\u200b\u4ee5\u4f9b\u200b\u64cd\u4f5c\u200b\uff0c-p\u200b\u8868\u793a\u200b\u7aef\u53e3\u6620\u5c04\u200b\uff0c\u200b\u8fd9\u91cc\u200b\u628a\u200b loclahost:2333 \u200b\u6620\u5c04\u200b\u4e3a\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u53f7\u200b\u7aef\u53e3\u200b\uff0c--name\u200b\u540e\u63a5\u200b\u5bb9\u5668\u200b\u540d\u5b57\u200b\uff0cubuntu:20.04\u200b\u8868\u793a\u200b\u4f7f\u7528\u200b\u7684\u200b\u955c\u50cf\u200b.

              docker run -it  -p 2333:22 --name minisql ubuntu:20.04\n
              \u200b\u6267\u884c\u200b\u5b8c\u200b\u547d\u4ee4\u200b\u5e94\u200b\u770b\u5230\u200b\u6211\u4eec\u200b\u4ee5\u200b root \u200b\u7528\u6237\u200b\u8fdb\u5165\u200b\u4e86\u200b\u5bb9\u5668\u200b\u7684\u200b\u7ec8\u7aef\u200b\uff1a

              \u200b\u7aef\u53e3\u6620\u5c04\u200b

              \u200b\u7aef\u53e3\u6620\u5c04\u200b\u662f\u200b\u4e00\u79cd\u200b\u5c06\u200b\u4e3b\u673a\u200b\uff08\u200b\u5bbf\u4e3b\u673a\u200b\uff09\u200b\u7aef\u53e3\u200b\u4e0e\u200b\u5bb9\u5668\u200b\u5185\u90e8\u200b\u7aef\u53e3\u200b\u8fdb\u884c\u200b\u7ed1\u5b9a\u200b\u7684\u200b\u6280\u672f\u200b.\u200b\u5b83\u200b\u5141\u8bb8\u200b\u4ece\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u7279\u5b9a\u200b\u7aef\u53e3\u200b\u8bbf\u95ee\u200b\u5bb9\u5668\u200b\u5185\u200b\u8fd0\u884c\u200b\u7684\u200b\u670d\u52a1\u200b\u6216\u200b\u5e94\u7528\u7a0b\u5e8f\u200b.

              \u200b\u5728\u200b Docker \u200b\u4e2d\u200b\uff0c\u200b\u901a\u8fc7\u200b\u4f7f\u7528\u200b-p\u200b\u6216\u200b--publish\u200b\u53c2\u6570\u200b\u6765\u200b\u8fdb\u884c\u200b\u7aef\u53e3\u6620\u5c04\u200b.\u200b\u53c2\u6570\u200b\u7684\u200b\u683c\u5f0f\u200b\u4e3a\u200b\u4e3b\u673a\u200b\u7aef\u53e3\u200b\uff1a\u200b\u5bb9\u5668\u200b\u7aef\u53e3\u200b\uff0c\u200b\u5176\u4e2d\u200b\u4e3b\u673a\u200b\u7aef\u53e3\u200b\u662f\u200b\u60a8\u200b\u5e0c\u671b\u200b\u5728\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u66b4\u9732\u200b\u7684\u200b\u7aef\u53e3\u53f7\u200b\uff0c\u200b\u5bb9\u5668\u200b\u7aef\u53e3\u200b\u662f\u200b\u5bb9\u5668\u200b\u5185\u90e8\u200b\u6b63\u5728\u200b\u8fd0\u884c\u200b\u7684\u200b\u670d\u52a1\u200b\u6240\u200b\u76d1\u542c\u200b\u7684\u200b\u7aef\u53e3\u53f7\u200b.

              docker run -it -p 2333:22 --name minisql ubuntu:20.04\u200b\u547d\u4ee4\u200b\u5c06\u200b\u4e3b\u673a\u200b\u7684\u200b 2333 \u200b\u7aef\u53e3\u6620\u5c04\u200b\u5230\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u53f7\u200b\u7aef\u53e3\u200b.\u200b\u8fd9\u200b\u610f\u5473\u7740\u200b\u4e3b\u673a\u200b\u4e0a\u200b\u7684\u200b\u4efb\u4f55\u200b\u8bf7\u6c42\u200b\u53d1\u9001\u5230\u200b 2333 \u200b\u7aef\u53e3\u200b\u65f6\u200b\uff0c\u200b\u5c06\u200b\u88ab\u200b\u8f6c\u53d1\u200b\u5230\u200b\u5bb9\u5668\u200b\u7684\u200b 22 \u200b\u53f7\u200b\u7aef\u53e3\u200b\uff0c22 \u200b\u53f7\u200b\u7aef\u53e3\u200b\u662f\u200b SSH \u200b\u4f7f\u7528\u200b\u7684\u200b\u9ed8\u8ba4\u200b\u7aef\u53e3\u200b.\u200b\u56e0\u6b64\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200b\u8bbf\u95ee\u200b\u4e3b\u673a\u200b\u7684\u200b 2333 \u200b\u7aef\u53e3\u200b\u6765\u200b\u8bbf\u95ee\u200b\u5bb9\u5668\u200b\u5185\u90e8\u200b\u8fd0\u884c\u200b\u7684\u200b SSH \u200b\u670d\u52a1\u200b\uff0c\u200b\u4ee5\u4fbf\u200b\u8fdb\u884c\u200b\u8fdc\u7a0b\u200b\u8fde\u63a5\u200b\u548c\u200b\u64cd\u4f5c\u200b.

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#2","title":"2.\u200b\u73af\u5883\u200b\u521d\u6b65\u200b\u8bbe\u7f6e","text":""},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#21","title":"2.1\uff08\u200b\u53ef\u200b\u9009\u200b\uff09\u200b\u6362\u6e90","text":"\u53ef\u80fd\u200b\u5b58\u5728\u200b\u7684\u200b\u95ee\u9898\u200b

              \u200b\u6709\u65f6\u5019\u200b\u76f4\u63a5\u200b\u6362\u6e90\u4f1a\u200b\u9047\u5230\u200b\u62a5\u9519\u200b\uff1a \u200b\u8fd9\u200b\u9700\u8981\u200b\u6211\u4eec\u200b\u5148\u200b\u4f7f\u7528\u200b http\uff0c\u200b\u8fd0\u884c\u200b\u5982\u4e0b\u200b\u547d\u4ee4\u200b\u6362\u200b http \u200b\u6e90\u200b\uff1a

              echo \"\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal main restricted universe multiverse\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal-updates main restricted universe multiverse\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal-backports main restricted universe multiverse\ndeb http://mirrors.zju.edu.cn/ubuntu/ focal-security main restricted universe multiverse\n\" > /etc/apt/sources.list\n
              \u200b\u8fd9\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u8fdb\u884c\u200b\u4e0b\u200b\u4e00\u6b65\u200b\u4e86\u200b\uff0c\u200b\u5982\u679c\u200b\u4f60\u200b\u5e0c\u671b\u200b\u5728\u200b\u4e4b\u540e\u200b\u6362\u56de\u200b https \u200b\u6e90\u200b\uff0c\u200b\u90a3\u4e48\u200b\u5728\u200b\u6267\u884c\u200b\u5b8c\u200b 2.2 \u200b\u540e\u200b\uff0c\u200b\u9700\u8981\u200b\u5148\u200b

              \u200b\u66f4\u65b0\u200b\u8bc1\u4e66\u200b\uff1a

              apt install --reinstall ca-certificates\n
              \u200b\u6362\u56de\u200b https \u200b\u6e90\u200b\uff1a
              echo \"\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal main restricted universe multiverse\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal-updates main restricted universe multiverse\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal-backports main restricted universe multiverse\ndeb https://mirrors.zju.edu.cn/ubuntu/ focal-security main restricted universe multiverse\n\" > /etc/apt/sources.list\n
              \u200b\u518d\u6b21\u200b\u66f4\u65b0\u200b apt\uff1a
              apt update\napt upgrade\n
              \u200b\u5373\u53ef\u200b\uff08\u200b\u8be5\u200b\u65b9\u6cd5\u200b\u6765\u81ea\u200b\u6b64\u200b\u535a\u5ba2\u200b)

              \u200b\u76f4\u63a5\u200b\u6267\u884c\u547d\u4ee4\u200b\u5373\u53ef\u200b

              cp /etc/apt/sources.list /etc/apt/sources.list.bak\necho \"\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal main restricted universe multiverse\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal-updates main restricted universe multiverse\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal-backports main restricted universe multiverse\n    deb https://mirrors.zju.edu.cn/ubuntu/ focal-security main restricted universe multiverse\n    \" > /etc/apt/sources.list\n

              \u200b\u6362\u6e90\u200b

              \u200b\u6362\u6e90\u200b\u662f\u200b\u6307\u200b\u5c06\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b\uff08\u200b\u955c\u50cf\u200b\uff09\u200b\u66ff\u6362\u200b\u4e3a\u200b\u7279\u5b9a\u200b\u5730\u533a\u200b\u6216\u200b\u7f51\u7edc\u200b\u73af\u5883\u200b\u4e0b\u200b\u66f4\u200b\u5feb\u901f\u200b\u3001\u200b\u53ef\u9760\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b.\u200b\u8fd9\u662f\u200b\u4e3a\u4e86\u200b\u63d0\u9ad8\u200b\u8f6f\u4ef6\u5305\u200b\u7684\u200b\u4e0b\u8f7d\u901f\u5ea6\u200b\u3001\u200b\u89e3\u51b3\u200b\u7f51\u7edc\u200b\u8bbf\u95ee\u200b\u9650\u5236\u200b\u6216\u200b\u8bbf\u95ee\u200b\u7279\u5b9a\u200b\u5730\u533a\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u800c\u200b\u91c7\u53d6\u200b\u7684\u200b\u63aa\u65bd\u200b.

              \u200b\u66f4\u6362\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b\u7684\u200b\u5177\u4f53\u65b9\u6cd5\u200b\u4f1a\u56e0\u200b\u4e0d\u540c\u200b\u7684\u200b\u64cd\u4f5c\u7cfb\u7edf\u200b\u548c\u200b\u8f6f\u4ef6\u5305\u200b\u7ba1\u7406\u5de5\u5177\u200b\u800c\u200b\u6709\u6240\u200b\u5dee\u5f02\u200b.\u200b\u5728\u200b\u57fa\u4e8e\u200b Ubuntu \u200b\u7684\u200b Docker \u200b\u5bb9\u5668\u200b\u4e2d\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7f16\u8f91\u200b /etc/apt/sources.list \u200b\u6587\u4ef6\u200b\uff0c\u200b\u5c06\u200b\u9ed8\u8ba4\u200b\u7684\u200b\u8f6f\u4ef6\u5305\u200b\u6e90\u200b\u66ff\u6362\u200b\u4e3a\u200b\u56fd\u5185\u200b\u7684\u200b\u955c\u50cf\u200b\u6e90\u200b\uff0c\u200b\u5982\u200b\u6d59\u6c5f\u5927\u5b66\u200b\u3001\u200b\u6e05\u534e\u5927\u5b66\u200b\u7b49\u200b.\u200b\u8fd9\u6837\u4e00\u6765\u200b\uff0c\u200b\u901a\u8fc7\u200b\u5bb9\u5668\u200b\u4e2d\u200b\u7684\u200b apt-get \u200b\u6216\u200b apt \u200b\u547d\u4ee4\u200b\u5b89\u88c5\u200b\u8f6f\u4ef6\u200b\u65f6\u200b\uff0c\u200b\u5c06\u200b\u4ece\u200b\u56fd\u5185\u200b\u955c\u50cf\u200b\u6e90\u200b\u4e0b\u8f7d\u200b\u8f6f\u4ef6\u5305\u200b\uff0c\u200b\u63d0\u9ad8\u200b\u901f\u5ea6\u200b\u548c\u200b\u7a33\u5b9a\u6027\u200b.

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#22","title":"2.2 \u200b\u5b89\u88c5\u200b\u5fc5\u8981\u200b\u5de5\u5177","text":"

              \u200b\u9996\u5148\u200b\u66f4\u65b0\u200b apt

              apt update\napt upgrade\n

              \u200b\u5b89\u88c5\u200b\u4e00\u4e9b\u200b\u5fc5\u8981\u200b\u7684\u200b\u5de5\u5177\u200b\uff1a

              apt install openssh-server vim git cmake gcc g++ gdb sudo\n

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#3-ssh-vscode","title":"3.\u200b\u914d\u7f6e\u200b SSH\uff0c\u200b\u4f7f\u7528\u200b VSCode \u200b\u5f00\u53d1","text":""},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#31","title":"3.1\uff08\u200b\u53ef\u200b\u9009\u200b\uff09\u200b\u521b\u5efa\u200b\u7528\u6237","text":"

              \u200b\u5982\u679c\u200b\u5e0c\u671b\u200b\u7528\u975e\u200b root \u200b\u7528\u6237\u200b\u767b\u9646\u200b\uff0c\u200b\u90a3\u4e48\u200b\u6211\u4eec\u200b\u53ef\u4ee5\u200b\u5148\u200b\u521b\u5efa\u200b\u5e76\u200b\u8bbe\u7f6e\u200b\u4e00\u4e2a\u200b\u7528\u6237\u200b\uff1a

              useradd -m stormckey\npasswd stormckey\n
              \u200b\u8fd9\u91cc\u200b\u7684\u200b stormckey \u200b\u6362\u6210\u200b\u4f60\u200b\u81ea\u5df1\u200b\u8d77\u200b\u7684\u200b\u7528\u6237\u540d\u200b

              \u200b\u7ed9\u200b\u7528\u6237\u200b\u6dfb\u52a0\u200b sudo \u200b\u6743\u9650\u200b\uff0c\u200b\u9700\u8981\u200b\u5728\u200b/etc/sudoers\u200b\u6587\u4ef6\u200b\u4e2d\u200b# User privilege specification\u200b\u6dfb\u52a0\u200b\uff1a

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#32","title":"3.2 \u200b\u914d\u7f6e\u200b\u514d\u5bc6\u200b\u767b\u9646","text":"

              \u200b\u6765\u5230\u200b\u8fdc\u7a0b\u200b\u8fde\u63a5\u200b\u7684\u200b\u53d1\u8d77\u8005\u200b\u7aef\u200b\uff08\u200b\u8fd9\u91cc\u200b\u5c31\u662f\u200b\u5bbf\u4e3b\u673a\u200b\uff09\uff0c\u200b\u6267\u884c\u200b\u4e0b\u9762\u200b\u547d\u4ee4\u200b\u751f\u6210\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u8f93\u5165\u200b paseephrase \u200b\u65f6\u200b\u76f4\u63a5\u200b\u56de\u8f66\u200b\uff08\u200b\u4e3a\u7a7a\u200b\uff09

              ssh-keygen\n
              \u200b\u6765\u5230\u200b\u63d0\u793a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e0b\u200b\uff0c\u200b\u590d\u5236\u200b id_rsa.pub \u200b\u7684\u200b\u5185\u5bb9\u200b\uff0c\u200b\u5c06\u200b\u5b83\u200b\u5199\u5165\u200b\u88ab\u200b\u8fde\u63a5\u7aef\u200b\uff08\u200b\u8fd9\u91cc\u200b\u662f\u200b\u5bb9\u5668\u200b\uff09\u200b\u7684\u200b/home/stormckey/.ssh/authorized_keys\u200b\u6587\u4ef6\u200b\u4e2d\u200b

              \u200b\u53e6\u200b\u4e00\u79cd\u200b\u66f4\u200b\u65b9\u4fbf\u200b\u7684\u200b\u65b9\u6848\u200b

              \u200b\u5728\u200b\u53ef\u4ee5\u200b\u7528\u200b\u5bc6\u7801\u200b\u767b\u5f55\u200b\u4e86\u200b\u4e4b\u540e\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200bssh-copy-id\u200b\u547d\u4ee4\u200b\u4e00\u952e\u200b\u628a\u200b\u5bc6\u94a5\u200b\u653e\u7f6e\u200b\u5230\u200b\u670d\u52a1\u5668\u200b\u5e76\u200b\u505a\u597d\u200b\u76f8\u5e94\u200b\u7684\u200b\u8bbe\u7f6e\u200b

              ssh-copy-id -i ~/.ssh/id_rsa.pub stormckey@localhost -p 2333\n

              \u200b\u63a5\u7740\u200b\u914d\u7f6e\u200b\u5bb9\u5668\u200b\u7684\u200b sshd: vim /etc/ssh/sshd_config

              \u200b\u53bb\u6389\u200b\u4ee5\u4e0b\u200b\u7684\u200b\u6ce8\u91ca\u200b\uff1a \u200b\u6ce8\u610f\u200b\u7b2c\u4e8c\u5f20\u200b\u56fe\u4e2d\u200b\u7684\u200b\u6587\u4ef6\u200b\u4e00\u5b9a\u200b\u662f\u200b\u4f60\u200b\u4e4b\u524d\u200b\u653e\u516c\u94a5\u200b\u7684\u200b\u6587\u4ef6\u200b\uff0c\u200b\u8def\u5f84\u200b\u4ece\u200b\u7528\u6237\u200b\u6839\u76ee\u5f55\u200b\u5f00\u59cb\u200b

              \u200b\u66f4\u6539\u200b\u5b8c\u200b\u914d\u7f6e\u200b\u540e\u200b\u542f\u52a8\u200b/\u200b\u91cd\u542f\u200b sshd

              service ssh start\n
              \u200b\u6211\u4eec\u200b\u6700\u597d\u200b\u628a\u200b\u81ea\u52a8\u200b\u542f\u52a8\u200b ssh \u200b\u670d\u52a1\u200b\u52a0\u5165\u200b bashrc\uff0c\u200b\u8fd9\u6837\u200b\u542f\u52a8\u200b\u5bb9\u5668\u200b\u7684\u200b\u65f6\u5019\u200b\u5c31\u200b\u4f1a\u200b\u81ea\u52a8\u200b\u542f\u52a8\u200b ssh \u200b\u670d\u52a1\u200b\u4e86\u200b
              echo \"service ssh start\" >> /root/.bashrc\n

              \u200b\u6b64\u65f6\u200b\u4f60\u200b\u5728\u200b\u5bbf\u4e3b\u673a\u200b\u4e0a\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u901a\u8fc7\u200bssh stormckey@localhost -p 2333\u200b\u767b\u9646\u200b\u5bb9\u5668\u200b\u4e86\u200b\uff1a

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#33-vscode","title":"3.3 \u200b\u914d\u7f6e\u200b VSCode","text":"

              \u200b\u4e0b\u8f7d\u200b\u63d2\u4ef6\u200b Remote-SSH \u200b\u63d2\u4ef6\u200b\uff0c\u200b\u70b9\u51fb\u200b\u53f3\u8fb9\u200b\u51fa\u73b0\u200b\u7684\u200b\u63d2\u4ef6\u200b\u56fe\u6807\u200b\uff0c\u200b\u5728\u200b\u4fa7\u680f\u200b\u4e2d\u200b\u9009\u62e9\u200b\u8bbe\u7f6e\u200b SSH\uff1a

              \u200b\u5199\u5165\u200b\u5982\u4e0b\u200b\u7684\u200b\u914d\u7f6e\u200b\u4fe1\u606f\u200b\uff1a

              \u200b\u8fde\u63a5\u200b\uff01

              \u200b\u6b64\u540e\u200b\u5c31\u200b\u6ca1\u6709\u200b\u4ec0\u4e48\u200b\u7279\u522b\u200b\u7684\u200b\u4e86\u200b\uff0c\u200b\u6253\u5f00\u200b\u7ec8\u7aef\u200b\u76f4\u63a5\u200b\u6309\u7167\u200b\u52a9\u6559\u200b\u7684\u200b\u6587\u6863\u200b\u914d\u7f6e\u200b minisql \u200b\u5373\u53ef\u200b.

              "},{"location":"blog/%E7%94%A8-docker-%E6%90%AD%E5%BB%BA-minisql-%E7%8E%AF%E5%A2%83/#4","title":"4.\u200b\u66f4\u200b\u591a\u200b\u8bbe\u7f6e","text":"

              \u200b\u73b0\u5728\u200b\u4f60\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7528\u200b\u8fd9\u4e2a\u200b\u7b80\u964b\u200b\u7684\u200b\u547d\u4ee4\u884c\u200b\u5f00\u59cb\u200b\u5de5\u4f5c\u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u5982\u679c\u200b\u4f60\u200b\u559c\u6b22\u200b\u7684\u8bdd\u200b\u53ef\u4ee5\u200b\u52a0\u5165\u200b\u66f4\u200b\u591a\u200b\u8bbe\u7f6e\u200b\uff01

              \u200b\u7ec8\u7aef\u200b\u7f8e\u5316\u200b

              \u200b\u89c1\u6b64\u200b\u535a\u5ba2\u200b

              "},{"location":"blog/%E9%85%8D%E7%BD%AE-github-profile/","title":"\u914d\u7f6e\u200b Github Profile","text":"

              Abstract

              \u200b\u6211\u200b\u914d\u7f6e\u200b Github \u200b\u4e3b\u9875\u200b Profile \u200b\u7684\u200b\u65b9\u6848\u200b\uff0c\u200b\u7075\u611f\u200b\u6765\u81ea\u200bTonycrane \u200b\u7684\u200b GitHub \u200b\u4e3b\u9875\u200b

              "},{"location":"blog/%E9%85%8D%E7%BD%AE-github-profile/#github-profile_1","title":"\u542f\u7528\u200b Github \u200b\u4e3b\u9875\u200b Profile","text":"

              \u200b\u6211\u4eec\u200b\u5148\u200b\u521b\u5efa\u200b\u4e00\u4e2a\u200b\u8ddf\u200b\u81ea\u5df1\u200b\u8d26\u53f7\u200b\u540c\u540d\u200b\u7684\u200b\u516c\u5f00\u200b\u4ed3\u5e93\u200b\uff0c\u200b\u8fd9\u662f\u200b\u4e00\u4e2a\u200b\u7279\u6b8a\u200b\u7684\u200b\u7528\u4f5c\u200b\u4e3b\u9875\u200b\u4ed3\u5e93\u200b Github \u200b\u4f1a\u200b\u5728\u200b\u4e3b\u9875\u200b\u4e0a\u200b\u663e\u793a\u200b\u8fd9\u4e00\u200b\u4ed3\u5e93\u200b\u7684\u200b README \u200b\u6587\u6863\u200b\u4f5c\u4e3a\u200b Profile\uff0c\u200b\u6240\u4ee5\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u7f16\u5199\u200b\u8fd9\u4e2a\u200b README \u200b\u6587\u6863\u200b\u5373\u53ef\u200b

              \u200b\u672c\u4eba\u200b\u4e3b\u9875\u200b\u9884\u89c8\u200b

              "},{"location":"blog/%E9%85%8D%E7%BD%AE-github-profile/#metrics-profile","title":"\u542f\u7528\u200b Metrics \u200b\u751f\u6210\u200b Profile \u200b\u56fe\u7247","text":"

              \u200b\u63a8\u8350\u200b\u4f7f\u7528\u200bMetrics\u200b\u6765\u200b\u751f\u6210\u200b\u597d\u770b\u200b\u7684\u200b Profile

              Metrics \u200b\u4f7f\u7528\u200b GitHub Action \u200b\u81ea\u52a8\u66f4\u65b0\u200b\uff0c\u200b\u6211\u4eec\u200b\u53ea\u8981\u200b\u7167\u7740\u200b\u94fe\u63a5\u200b\u91cc\u200b\u7684\u200b\u4ecb\u7ecd\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u5b8c\u6210\u200b\u90e8\u7f72\u200b.Metrics \u200b\u8fd8\u200b\u652f\u6301\u200b\u8bb8\u591a\u200b\u4e0d\u540c\u200b\u7684\u200b\u63d2\u4ef6\u200b\uff0c\u200b\u5927\u5bb6\u200b\u53ef\u4ee5\u200b\u968f\u610f\u200b\u9009\u62e9\u200b\u81ea\u5df1\u200b\u559c\u6b22\u200b\u7684\u200b\uff0c\u200b\u6700\u540e\u200b\u8d34\u200b\u4e0a\u200b\u7b14\u8005\u200b\u6ce8\u91ca\u200b\u7684\u200b\u7684\u200b Action \u200b\u914d\u7f6e\u200b\u548c\u200b README \u200b\u6e90\u4ee3\u7801\u200b\uff0c\u200b\u6b22\u8fce\u200b\u501f\u9274\u200b\u4f7f\u7528\u200b\uff01

              \u200b\u53c2\u8003\u200b\u914d\u7f6e\u200b Metrics.ymlREADME.md
              name: Metrics\non:\n# Schedule updates per hour\nschedule: [{cron: \"0 * * * *\"}]\n# (optional) Run workflow manually\nworkflow_dispatch:\n# (optional) Run workflow when pushing on master/main\npush: {branches: [\"master\"\uff0c \"main\"]}\njobs:\n#generate the left picture\ngithub-left-metrics:\n    runs-on: ubuntu-latest\n    permissions:\n    contents: write\n    steps:\n    - name: left\n        # use the official generator\n        uses: lowlighter/metrics@latest\n        with:\n        token: ${{ secrets.METRICS_TOKEN }}\n\n        # the file this action generates\n        filename: matrics-left.svg\n        config_timezone: Asia/Shanghai\n\n\n        # enable plugins\n        plugin_followup: yes\n\n\n        plugin_languages: yes\n        # repositories that wont be accounted\n        plugin_languages_skipped: stormckey/dotfiles\n        plugin_languages_ignored: html\uff0c css\uff0c ruby\uff0c perl\uff0c javascript\n        # show the size of source code and percentage of each language\n        plugin_languages_details: bytes-size\uff0c percentage\n\n\n        plugin_starlists: yes\n        plugin_starlists_languages: yes\n\n\n        config_order: followup\uff0c languages\uff0c starlists\n\ngithub-right-metrics:\n    runs-on: ubuntu-latest\n    permissions:\n    contents: write\n    steps:\n    - name: right\n        uses: lowlighter/metrics@latest\n        with:\n        #disable the basic metrics\n        base: \"\"\n        token: ${{ secrets.METRICS_TOKEN }}\n        filename: matrics-right.svg\n        config_timezone: Asia/Shanghai\n\n        plugin_topics: yes\n        plugin_topics_mode: icons\n\n\n        plugin_isocalendar: yes\n\n\n        plugin_anilist: yes\n        plugin_anilist_user: stormckey\n        plugin_anilist_sections: favorites\uff0c characters\n\n\n        config_order: topics\uff0c isocalendar\uff0c anilist\n
              <h3 align=\"center\"> Stormckey </h3>\n\n<p align=\"center\">\n<samp>\n    <a href=\"https://stormckey.github.io/\">home page</a> \u2219\n</samp>\n</p>\n\n<p align=\"center\">\n<a href=\"https://github.com/stormckey\">\n    <img width=\"400\" align=\"top\" src=\"https://github.com/stormckey/stormckey/blob/main/matrics-left.svg\" />\n</a>\n&emsp;\n<a href=\"https://github.com/stormckey\">\n    <img width=\"400\" align=\"top\" src=\"https://github.com/stormckey/stormckey/blob/main/matrics-right.svg\" />\n</a>\n</p>\n
              "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/","title":"Linux \u200b\u7ec8\u7aef\u200b\u914d\u7f6e","text":"

              Abstract

              \u200b\u4e00\u4e9b\u200b\u6781\u5927\u200b\u5730\u200b\u589e\u5f3a\u200b linux \u200b\u7ec8\u7aef\u200b\u6613\u7528\u6027\u200b\u7684\u200b\u5de5\u5177\u200b

              \u200b\u5bf9\u200b\u6211\u200b\u6765\u8bf4\u200b\uff0c\u200b\u5982\u679c\u200b\u6211\u8981\u200b\u65b0\u5f00\u200b\u4e00\u4e2a\u200b\u7528\u200b\u4e00\u6bb5\u65f6\u95f4\u200b\u7684\u200b\u73af\u5883\u200b\u7684\u8bdd\u200b\uff0c\u200b\u5c31\u200b\u4f1a\u200b\u628a\u200b\u8fd9\u4e9b\u200b\u914d\u7f6e\u200b\u5148\u8dd1\u200b\u4e00\u904d\u200b

              "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/#zsh","title":"\u542f\u7528\u200b zsh","text":"

              sudo apt install zsh\nchsh -s /bin/zsh\n
              \u200b\u91cd\u542f\u200b\u7ec8\u7aef\u200b\uff08docker \u200b\u4e2d\u8bf7\u200b\u91cd\u542f\u200b\u5bb9\u5668\u200b\uff09

              "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/#zsh_1","title":"\u5b89\u88c5\u200b zsh \u200b\u63d2\u4ef6","text":"

              \u200b\u5b89\u88c5\u200b p10k

              git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ~/.zsh/powerlevel10k\necho 'source ~/.zsh/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc\n
              \u200b\u91cd\u542f\u200b shell

              \u200b\u5b89\u88c5\u200b autosuggestion

              git clone https://gitee.com/renkx/zsh-autosuggestions.git ~/.zsh/plugins/zsh-autosuggestions\necho '#Enable autosuggestion' >> ~/.zshrc\necho 'source ~/.zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh' >> ~/.zshrc\n

              \u200b\u5b89\u88c5\u200b syntaxhighlight

              git clone https://gitee.com/renkx/zsh-syntax-highlighting.git ~/.zsh/plugins/zsh-syntax-highlighting\necho '#Enable syntax highlight' >> ~/.zshrc\necho 'source ~/.zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh' >> ~/.zshrc\n

              \u200b\u5b89\u88c5\u200b autojump

              sudo apt install autojump\necho '#Enable autojump' >> ~/.zshrc\necho 'source  /usr/share/autojump/autojump.sh'>>~/.zshrc\n

              "},{"location":"blog/linux-%E7%BB%88%E7%AB%AF%E9%85%8D%E7%BD%AE/#vi","title":"\u5728\u200b\u547d\u4ee4\u884c\u200b\u4e2d\u200b\u542f\u7528\u200b vi","text":"
              git clone https://github.com/soheilpro/zsh-vi-search.git ~/.zsh/plugins/zsh-vi-search\necho \"#Enable vi mode\" >> ~/.zshrc\necho \"bindkey -v\" >> ~/.zshrc\necho \"source ~/.zsh/plugins/zsh-vi-search/src/zsh-vi-search.zsh\" >> ~/.zshrc\n
              "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/","title":"\u7528\u200b ssh \u200b\u8fde\u63a5\u200b\u540c\u4e00\u200b\u5c40\u57df\u7f51\u200b\u4e0b\u200b\u7684\u200b Wsl2","text":"

              Abstract

              \u200b\u4e3a\u4ec0\u4e48\u200b\u4f1a\u200b\u6709\u200b\u8fd9\u4e2a\u200b\u9700\u6c42\u200b\uff0c\u200b\u56e0\u4e3a\u200b\u6211\u200b\u5927\u5b66\u200b\u5165\u5b66\u200b\u5e26\u200b\u7684\u200b\u7535\u8111\u5ba4\u200b\u662f\u200b\u4e00\u4e2a\u200b\u7eed\u822a\u200b\u7a00\u788e\u200b\u7684\u200b\u5de8\u91cd\u200b\u7684\u200b\u6e38\u620f\u200b\u672c\u200b\uff0c\u200b\u540e\u6765\u200b\u6709\u200b\u4e86\u200b mac \u200b\u4e4b\u540e\u200b\u6e38\u620f\u200b\u672c\u200b\u57fa\u672c\u200b\u6210\u200b\u53f0\u5f0f\u200b\u4e86\u200b\uff08\u200b\u4e0d\u662f\u200b\uff09\uff0c\u200b\u7528\u200b ssh \u200b\u8fde\u4e0a\u53bb\u200b\u4e3b\u8981\u200b\u662f\u200b\u7528\u200b\u4e00\u4e0b\u200b\u663e\u5361\u200b\u5565\u200b\u7684\u200b

              Abstract

              \u200b\u57fa\u7840\u200b\u7684\u200b\u6d41\u7a0b\u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b\u535a\u5ba2\u200b\u5c31\u200b\u597d\u200b\uff0c\u200b\u672c\u6587\u200b\u8bb0\u5f55\u200b\u4e00\u4e0b\u200b\u8e29\u200b\u7684\u200b\u96f7\u200b\u548c\u200b\u66f4\u200b\u8fdb\u9636\u200b\u7684\u200b\u8bbe\u7f6e\u200b

              "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/#_1","title":"\u68c0\u67e5\u200b\u901a\u8def","text":"

              \u200b\u8fd9\u200b\u4e00\u6b65\u200b\u6211\u4eec\u200b\u8981\u200b\u68c0\u67e5\u200b\u6211\u4eec\u200b\u5230\u200b\u8981\u200b\u8fde\u63a5\u200b\u7684\u200b\u7cfb\u7edf\u200b\u7684\u200b\u7f51\u7edc\u200b\u901a\u8def\u200b\u662f\u200b\u6b63\u5e38\u200b\u7684\u200b

              Windows \u200b\u4f1a\u200b\u7ed9\u200b Wsl2 \u200b\u5206\u914d\u200b\u4e00\u4e2a\u200b\u865a\u62df\u200b\u7684\u200b\u672c\u5730\u200b\u7684\u200b\u5730\u5740\u200b\uff0c\u200b\u5728\u200b Windows \u200b\u8f93\u5165\u200bipconfig\u200b\u4ee5\u200b\u67e5\u770b\u200b\u8be5\u200b\u5730\u5740\u200b. \u200b\u6211\u4eec\u200b\u5728\u200b Wsl \u200b\u4e2d\u200b\u542f\u7528\u200b ssh \u200b\u670d\u52a1\u200b\u540e\u200b\uff0c\u200b\u60f3\u8981\u200b\u9a8c\u8bc1\u200b Wsl \u200b\u662f\u5426\u200b\u53ef\u200b\u88ab\u200b\u8fde\u63a5\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5148\u200b\u5728\u200b Windows \u200b\u4e2d\u8bd5\u200b\u7740\u200b\u7528\u200b ssh \u200b\u8fde\u63a5\u200b ifconfig \u200b\u4e2d\u200b\u770b\u5230\u200b\u7684\u200b\u5730\u5740\u200b

              \u200b\u968f\u540e\u200b\u6211\u4eec\u200b\u5e0c\u671b\u200b\u4ece\u200b\u5c40\u57df\u7f51\u200b\u8fde\u63a5\u200b Windows \u200b\u4e5f\u200b\u662f\u200b\u901a\u200b\u7684\u200b\uff0c\u200b\u6211\u4eec\u200b\u5c31\u200b\u7528\u200bipconfig\u200b\u5f97\u5230\u200b\u670d\u52a1\u5668\u200b\uff08\u200b\u4e5f\u200b\u5c31\u662f\u200b\u8fd9\u53f0\u200b\u673a\u5668\u200b\uff09ip\uff0c\u200b\u5728\u200b\u53e6\u4e00\u53f0\u200b\u673a\u5668\u200b\u4e0a\u200b\uff08\u200b\u5ba2\u6237\u200b\uff09\u200b\u5c1d\u8bd5\u200bping <ip>\u200b\u6765\u8bd5\u200b\u7740\u200b\u8fde\u63a5\u200b\uff0c\u200b\u6216\u8005\u200b\u76f4\u63a5\u200b\u7528\u200b ssh \u200b\u8fde\u63a5\u200b Windows\uff0c\u200b\u4fdd\u8bc1\u200b\u5c40\u57df\u7f51\u200b\u5230\u200b Windows \u200b\u8fd9\u6761\u200b\u8def\u200b\u90fd\u200b\u662f\u200b\u901a\u200b\u7684\u200b.

              Warning

              \u200b\u4e00\u4e9b\u200b\u6807\u660e\u200b\u4e3a\u200b\u201cSecure\u201d\u200b\u7684\u200b\u5c40\u57df\u7f51\u200b\u53ef\u80fd\u200b\u4e0d\u200b\u5141\u8bb8\u200b\u5c40\u57df\u7f51\u200b\u5185\u200b\u8fde\u63a5\u200b\uff0c\u200b\u5728\u200b\u8fd9\u4e9b\u200b\u5c40\u57df\u7f51\u200b\u4e0b\u200b\u662f\u200b\u4e92\u76f8\u200b ping \u200b\u4e0d\u901a\u200b\u7684\u200b\uff0c\u200b\u5c1d\u8bd5\u200b\u6362\u4e2a\u200b\u5c40\u57df\u7f51\u200b\uff01\u200b\u8fd9\u70b9\u200b\u5751\u200b\u4e86\u200b\u6211\u200b\u5f88\u200b\u4e45\u200b.

              \u200b\u6700\u540e\u200b\u6211\u4eec\u200b\u9700\u8981\u200b\u786e\u4fdd\u200b\u628a\u200b\u5c40\u57df\u7f51\u200b\uff0cWindows\uff0cwsl \u200b\u90fd\u200b\u8fde\u63a5\u8d77\u6765\u200b\uff0c\u200b\u9700\u8981\u200b Windows \u200b\u628a\u200b\u6211\u4eec\u200b\u4ece\u200b ssh \u200b\u53d1\u6765\u200b\u7684\u200b\u8fde\u63a5\u200b\u8bf7\u6c42\u200b\u8f6c\u200b\u5230\u200b\u5185\u90e8\u200b\u7684\u200b wsl \u200b\u7684\u200b\u7aef\u53e3\u200b\uff0c\u200b\u8fd9\u6837\u200b\u5c31\u901a\u200b\u4e86\u200b.\uff08\u200b\u5bf9\u5e94\u200b\u7684\u200b\u64cd\u4f5c\u200b\u5728\u4e0a\u6587\u200b\u7684\u200b\u535a\u5ba2\u200b\u4e2d\u200b\u5df2\u7ecf\u200b\u63d0\u53ca\u200b\uff0c\u200b\u5982\u679c\u200b\u8fd8\u6709\u200b\u95ee\u9898\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5c1d\u8bd5\u200b\u8fd9\u7bc7\u200b\u770b\u770b\u200b\u662f\u4e0d\u662f\u200b\u5c40\u57df\u7f51\u200b\u5230\u200b Windows \u200b\u7684\u200b\u95ee\u9898\u200b\uff09

              "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/#_2","title":"\u8bbe\u7f6e\u200b\u514d\u5bc6\u200b\u767b\u9646","text":"

              \u200b\u514d\u5bc6\u200b\u767b\u9646\u200b\u4e5f\u200b\u53ef\u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b

              \u200b\u6765\u5230\u200b\u5ba2\u6237\u7aef\u200b\uff0c\u200b\u6267\u884c\u200b\u4e0b\u9762\u200b\u547d\u4ee4\u200b\u751f\u6210\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u8f93\u5165\u200b passephrase \u200b\u65f6\u200b\u76f4\u63a5\u200b\u56de\u8f66\u200b\uff08\u200b\u4e3a\u7a7a\u200b\uff09

              ssh-keygen\n

              \u200b\u5c31\u200b\u4f1a\u200b\u5728\u200b\u63d0\u793a\u200b\u7684\u200b\u76ee\u5f55\u200b\u4e0b\u200b\u751f\u6210\u200b\u5bc6\u94a5\u200b\uff0c\u200b\u9009\u62e9\u200b\u5176\u516c\u94a5\u200b\uff08.pub \u200b\u540e\u7f00\u200b\uff09\uff0c\u200b\u628a\u200b\u5b83\u200b\u5199\u5165\u200b\u670d\u52a1\u5668\u200b\u767b\u9646\u200b\u7528\u6237\u200b\u7684\u200b ssh \u200b\u914d\u7f6e\u200b\u6587\u4ef6\u5939\u200b\u4e0b\u200b\u7684\u200b\u201cauthorized_keys\"\u200b\u6587\u4ef6\u200b\uff08\u200b\u4e00\u822c\u200b\u4e3a\u200b~/.ssh/authorized_keys\uff09\uff0c\u200b\u6ce8\u610f\u200b\u4fee\u6539\u200b\"authorized_keys\"\u200b\u7684\u200b\u6743\u9650\u200b\u6539\u4e3a\u200b 600\uff0c\u200b\u6240\u5728\u200b\u6587\u4ef6\u5939\u200b\u6743\u9650\u200b\u6539\u4e3a\u200b 700.

              \u200b\u5982\u679c\u200b\u4e0a\u8ff0\u200b\u90fd\u200b\u505a\u200b\u4e86\u200b\u4e4b\u540e\u200b\u4ecd\u7136\u200b\u65e0\u6cd5\u200b\u514d\u5bc6\u200b\u767b\u9646\u200b\uff0c\u200b\u6bd4\u5982\u200bssh -v user@ip -p port\u200b\u540e\u200b\u770b\u5230\u200b\u8fde\u63a5\u200b\u65f6\u200b\u8bd5\u56fe\u200b\u4f7f\u7528\u200b\u516c\u94a5\u200b\u9a8c\u8bc1\u200b\u4f46\u662f\u200b\u5931\u8d25\u200b\u4e86\u200b\uff0c\u200b\u90a3\u4e48\u200b\u9700\u8981\u200b\u518d\u200b\u5b9a\u4f4d\u95ee\u9898\u200b.\u200b\u5728\u200b\u670d\u52a1\u5668\u7aef\u200b\u4f7f\u7528\u200b\u4e0b\u5217\u200b\u8bed\u53e5\u200b\u542f\u7528\u200b sshd \u200b\u76d1\u542c\u200b\u8fde\u63a5\u200b\u67d0\u4e2a\u200b\u7aef\u53e3\u200b

              sudo /usr/sbin/sshd -d  -p 4444\n
              \u200b\u6ce8\u610f\u200b\u4e0d\u80fd\u200b\u4f7f\u7528\u200b\u5df2\u7ecf\u200b\u88ab\u200b\u5360\u7528\u200b\u7684\u200b\u7aef\u53e3\u200b \u200b\u542f\u7528\u200b\u540e\u200b\u53bb\u200b powershell \u200b\u8fdb\u884c\u200b\u7aef\u53e3\u200b\u8f6c\u53d1\u200b\uff0c\u200b\u4fbf\u200b\u53ef\u4ee5\u200b\u5728\u200b\u7ec8\u7aef\u200b\u91cc\u200b\u770b\u5230\u200b\u670d\u52a1\u5668\u7aef\u200b\u8ba4\u8bc1\u200b\u7684\u200b\u5168\u8fc7\u7a0b\u200b\u4e86\u200b

              "},{"location":"blog/%E7%94%A8-ssh-%E8%BF%9E%E6%8E%A5%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84-wsl2/#wsl2-ip","title":"\u8bbe\u7f6e\u200b Wsl2 \u200b\u9759\u6001\u200b ip","text":"

              \u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b

              \u200b\u8fd8\u200b\u53ef\u4ee5\u200b\u987a\u5e26\u200b\u8bbe\u7f6e\u200b\u4e00\u4e0b\u200b Wsl2 \u200b\u5f00\u673a\u200b\u542f\u52a8\u200b\u548c\u200b\u81ea\u52a8\u200b\u5f00\u59cb\u200b ssh \u200b\u670d\u52a1\u200b

              "},{"location":"blog/%E5%9C%A8-wsl2-%E4%B8%8A%E5%90%AF%E7%94%A8-cuda/","title":"\u5728\u200b WSL2 \u200b\u4e0a\u200b\u542f\u7528\u200b CUDA","text":"

              Abstract

              \u200b\u522b\u8bf4\u200b\u4e86\u200b\uff0c\u200b\u5f00\u70bc\u200b\uff01

              \u200b\u4e3b\u8981\u200b\u662f\u200b\u53c2\u8003\u200b\u4e86\u200b\u8fd9\u200b\u7bc7\u6587\u7ae0\u200b

              "},{"location":"blog/%E5%9C%A8-wsl2-%E4%B8%8A%E5%90%AF%E7%94%A8-cuda/#1-windows","title":"1.\u200b\u5728\u200b Windows \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u663e\u5361\u200b\u9a71\u52a8","text":"

              \u200b\u8fd9\u6b65\u200b\u5f88\u200b\u7b80\u5355\u200b\uff0c\u200b\u5728\u200b\u5b98\u200b\u7f51\u4e0a\u200b\u627e\u5230\u200b\u9002\u5408\u200b\u81ea\u5df1\u200b\u663e\u5361\u200b\u7684\u200b\u7248\u672c\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b. Download Type \u200b\u9009\u9879\u200b\u9009\u200b Game Ready Driver \u200b\u5c31\u200b\u597d\u200b. \u200b\u60f3\u8981\u200b\u67e5\u770b\u200b\u81ea\u5df1\u200b\u7535\u8111\u200b\u663e\u5361\u200b\u578b\u53f7\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u5148\u200b win+R\uff0c\u200b\u8f93\u5165\u200b dxdiag\uff0c\u200b\u9009\u62e9\u200b dispaly \u200b\u5c31\u200b\u53ef\u4ee5\u200b\u770b\u5230\u200b\u4e86\u200b.

              "},{"location":"blog/%E5%9C%A8-wsl2-%E4%B8%8A%E5%90%AF%E7%94%A8-cuda/#2-wsl","title":"2.\u200b\u5728\u200b wsl \u200b\u4e0a\u200b\u5b89\u88c5\u200b\u9a71\u52a8","text":"

              \u200b\u4e0a\u200b\u4e00\u6b65\u200b\u7ed3\u675f\u200b\u4e4b\u540e\u200btorch.cuda.is_available()\u200b\u5c31\u200b\u5df2\u7ecf\u200b True \u200b\u4e86\u200b\uff0c\u200b\u4f46\u200b\u76f4\u63a5\u200b\u6267\u884c\u200b\u8fd8\u662f\u200b\u4f1a\u200b\u62a5\u9519\u200b. \u200b\u542f\u52a8\u200b wsl\uff0c\u200b\u6267\u884c\u200b\u4ee5\u4e0b\u200b\u547d\u4ee4\u200b

              wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin\nsudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600\nwget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb\nsudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb\nsudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub\napt-get update\nsudo apt-get -y install cuda\n
              \u200b\u6709\u4e9b\u200b\u5b89\u88c5\u200b\u6bd4\u8f83\u6162\u200b\uff0c\u200b\u6ca1\u6709\u200b\u6362\u200b\u8fc7\u6e90\u200b\u7684\u200b\u53ef\u4ee5\u200b\u6362\u4e0b\u200b\u56fd\u5185\u200b\u955c\u50cf\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200b\u6d59\u5927\u200b\u6e90\u200b

              \u200b\u7b14\u8005\u200b\u5728\u200b\u4e0a\u9762\u200b\u7684\u200b\u547d\u4ee4\u200b\u6267\u884c\u200b\u4e2d\u200b\u8fd8\u200b\u9047\u5230\u200b\u4e00\u4e2a\u200b\u95ee\u9898\u200b\uff0c\u200b\u6700\u540e\u200b\u4e00\u6b65\u200b\u62a5\u9519\u200b liburcu6 \u200b\u6ca1\u6709\u200b\u5b89\u88c5\u200b. \u200b\u53ef\u4ee5\u200b\u5728\u200b\u5b98\u65b9\u200b\u8f6f\u4ef6\u200b\u6e90\u4e0a\u200b\u53ef\u4ee5\u200b\u4e0b\u8f7d\u200b\uff0c\u200b\u6d4f\u89c8\u5668\u200b\u53ef\u80fd\u200b\u63d0\u793a\u200b\u4e0b\u8f7d\u200b\u4e0d\u200b\u5b89\u5168\u200b.\u200b\u5982\u679c\u200b\u53ef\u4ee5\u200b\u7684\u8bdd\u200b\uff0c\u200b\u9009\u62e9\u200b\u5408\u9002\u200b\u7684\u200b\u7248\u672c\u200b\u4e0b\u8f7d\u200b.\u200b\u7528\u200bcat /proc/version \u200b\u67e5\u770b\u200b\u6211\u4eec\u200b\u7cfb\u7edf\u200b\u7684\u200b\u7248\u672c\u200b\uff0cx86_64 \u200b\u7528\u200b amd64 \u200b\u5373\u53ef\u200b. \u200b\u5982\u679c\u200b\u65e0\u6cd5\u200b\u89e3\u51b3\u200b\uff0c\u200b\u53ef\u4ee5\u200b\u7528\u200b\u8fd9\u91cc\u200b\u7684\u200b\u65b9\u6cd5\u200b\uff0c\u200b\u4f7f\u7528\u200b\u547d\u4ee4\u200b\uff1a

              sudo add-apt-repository ppa:cloudhan/liburcu6\nsudo apt update\nsudo apt install liburcu6\n
              \u200b\u7b2c\u4e00\u6761\u200b\u547d\u4ee4\u200b\u4f3c\u4e4e\u200b\u9700\u8981\u200b\u79d1\u5b66\u200b\u4e0a\u7f51\u200b\uff0c\u200b\u6211\u200b\u6ca1\u5f00\u200b\u7684\u200b\u65f6\u5019\u200b\u8fde\u63a5\u200b\u8d85\u65f6\u200b\u4e86\u200b. \u200b\u968f\u540e\u200b\u5c31\u200b\u53ef\u4ee5\u200b\u7ee7\u7eed\u200b\u4e0a\u200b\u4e00\u6b65\u200b\u7684\u200b\u5b89\u88c5\u200b cuda \u200b\u4e86\u200b.\u200b\u5b89\u88c5\u200b\u5b8c\u6bd5\u200b\u540e\u200b\u7528\u200b nvidia-smi \u200b\u547d\u4ee4\u200b\u67e5\u770b\u200b\u662f\u5426\u200b\u6210\u529f\u200b.

              \u200b\u6b64\u65f6\u200b\u4ecd\u7136\u200b\u4e0d\u80fd\u200b\u76f4\u63a5\u200b\u4f7f\u7528\u200b cuda\uff0c\u200b\u9700\u8981\u200b\u518d\u200b\u5b89\u88c5\u200b nvcc\uff0c\u200b\u76f4\u63a5\u200b\u4e0b\u8f7d\u200b\u5c31\u200b\u597d\u200b\u4e86\u200b.

              \u200b\u81f3\u6b64\u200b\u5b89\u88c5\u200b\u7ed3\u675f\u200b.

              "},{"location":"blog/zsh-%E7%9A%84%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92/","title":"ZSH \u200b\u7684\u200b\u53c2\u6570\u4f20\u9012","text":"

              Abstract

              zsh \u200b\u4e2d\u200b\u4e00\u4e2a\u200b\u53c2\u6570\u4f20\u9012\u200b\u7684\u200b\u65f6\u5019\u200b\u9047\u5230\u200b\u7684\u200b\u795e\u79d8\u200b\u95ee\u9898\u200b\ud83e\udd14

              \u200b\u4eca\u5929\u200b\u5728\u200b\u8c03\u7528\u200b DDPM \u200b\u6a21\u578b\u200b\u7684\u200b\u65f6\u5019\u200b\u4f7f\u7528\u200b\u5b98\u65b9\u200b\u4ee3\u7801\u200b\uff0c\u200b\u7adf\u7136\u200b\u62a5\u9519\u200b\u8bf4\u200b\u53c2\u6570\u200b\u4e0d\u200b\u5b58\u5728\u200b\uff1a \u200b\u547d\u4ee4\u200b\u662f\u200b

              MODEL_FLAGS=\"--attention_resolutions 32\uff0c16\uff0c8 --class_cond True --diffusion_steps 1000 --dropout 0.1 --image_size 64 --learn_sigma True --noise_schedule cosine --num_channels 192 --num_head_channels 64 --num_res_blocks 3 --resblock_updown True --use_new_attention_order True --use_fp16 True --use_scale_shift_norm True\"\npython classifier_sample.py $MODEL_FLAGS --classifier_scale 1.0 --classifier_path models/64x64_classifier.pt --classifier_depth 4 --model_path models/64x64_diffusion.pt $SAMPLE_FLAGS\n
              \u200b\u62a5\u9519\u200b\u4e3a\u200b\uff1a
              python classifier_sample.py $MODEL_FLAGS --classifier_scale 1.0 --classifier_path models/64x64_classifier.pt --classifier_depth 4 --model_path models/64x64_diffusion.pt $SAMPLE_FLAGS\nusage: classifier_sample.py [-h] [--clip_denoised CLIP_DENOISED] [--num_samples NUM_SAMPLES] [--batch_size BATCH_SIZE]\n                            [--use_ddim USE_DDIM] [--model_path MODEL_PATH] [--classifier_path CLASSIFIER_PATH]\n                            [--classifier_scale CLASSIFIER_SCALE] [--image_size IMAGE_SIZE]\n                            [--num_channels NUM_CHANNELS] [--num_res_blocks NUM_RES_BLOCKS] [--num_heads NUM_HEADS]\n                            [--num_heads_upsample NUM_HEADS_UPSAMPLE] [--num_head_channels NUM_HEAD_CHANNELS]\n                            [--attention_resolutions ATTENTION_RESOLUTIONS] [--channel_mult CHANNEL_MULT]\n                            [--dropout DROPOUT] [--class_cond CLASS_COND] [--use_checkpoint USE_CHECKPOINT]\n                            [--use_scale_shift_norm USE_SCALE_SHIFT_NORM] [--resblock_updown RESBLOCK_UPDOWN]\n                            [--use_fp16 USE_FP16] [--use_new_attention_order USE_NEW_ATTENTION_ORDER]\n                            [--learn_sigma LEARN_SIGMA] [--diffusion_steps DIFFUSION_STEPS]\n                            [--noise_schedule NOISE_SCHEDULE] [--timestep_respacing TIMESTEP_RESPACING]\n                            [--use_kl USE_KL] [--predict_xstart PREDICT_XSTART]\n                            [--rescale_timesteps RESCALE_TIMESTEPS] [--rescale_learned_sigmas RESCALE_LEARNED_SIGMAS]\n                            [--classifier_use_fp16 CLASSIFIER_USE_FP16] [--classifier_width CLASSIFIER_WIDTH]\n                            [--classifier_depth CLASSIFIER_DEPTH]\n                            [--classifier_attention_resolutions CLASSIFIER_ATTENTION_RESOLUTIONS]\n                            [--classifier_use_scale_shift_norm CLASSIFIER_USE_SCALE_SHIFT_NORM]\n                            [--classifier_resblock_updown CLASSIFIER_RESBLOCK_UPDOWN]\n                            [--classifier_pool CLASSIFIER_POOL]\nclassifier_sample.py: error: unrecognized arguments: --attention_resolutions 32\uff0c16\uff0c8 --class_cond True --diffusion_steps 1000 --dropout 0.1 --image_size 64 --learn_sigma True --noise_schedule cosine --num_channels 192 --num_head_channels 64 --num_res_blocks 3 --resblock_updown True --use_new_attention_order True --use_fp16 True --use_scale_shift_norm True\n
              \u200b\u8c8c\u4f3c\u200b\u662f\u56e0\u4e3a\u200b\u7528\u200b\u8fd9\u79cd\u200b\u65b9\u5f0f\u200b\u4f20\u9012\u200b\u7684\u200b\u53c2\u6570\u200b\u4e0d\u4f1a\u200b\u88ab\u200b\u6309\u200b\u7a7a\u683c\u200b\u5206\u5f00\u200b\uff0c\u200b\u6240\u4ee5\u200b\u65e0\u6cd5\u200b\u8bc6\u522b\u200b \u200b\u6211\u200b\u8fd8\u200b\u8bd5\u8fc7\u200b\u6362\u7528\u200b bash\uff0c\u200b\u6216\u8005\u200b\u662f\u200b\u4f7f\u7528\u200b\"$FLAG\"\uff0c\u200b\u90fd\u200b\u6ca1\u7528\u200b\ud83d\ude21

              \u200b\u89e3\u51b3\u200b\u7684\u200b\u529e\u6cd5\u200b\u662f\u200b\u4f7f\u7528\u200b$=FLAG \uff08\u200b\u53ef\u4ee5\u200b\u53c2\u8003\u200b\u8fd9\u7bc7\u200b\u89e3\u7b54\u200b\uff09

              "},{"location":"blog/archive/2023/","title":"2023","text":"

              \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/os/","title":"OS","text":"

              \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/lab/","title":"Lab","text":"

              \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/","title":"\u8ba1\u7b97\u673a\u200b\u4f53\u7cfb\u7ed3\u6784","text":"

              \u200b\u7ea6\u200b 7 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/pl/","title":"PL","text":"

              \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/cool/","title":"Cool","text":"

              \u200b\u7ea6\u200b 1 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/%E9%85%8D%E7%8E%AF%E5%A2%83/","title":"\u914d\u200b\u73af\u5883","text":"

              \u200b\u7ea6\u200b 3 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/category/%E7%A5%9E%E7%A7%98-bug/","title":"\u795e\u79d8\u200b bug","text":"

              \u200b\u7ea6\u200b 3 \u200b\u4e2a\u200b\u5b57\u200b

              "},{"location":"blog/page/2/","title":"Blog","text":""},{"location":"blog/page/3/","title":"Blog","text":""},{"location":"blog/archive/2023/page/2/","title":"2023","text":""},{"location":"blog/archive/2023/page/3/","title":"2023","text":""}]} \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 5aace7da7c2f3da9de8db79153fbf1afaf3c3cbe..3dad057440fdffff52fe5cebb626920e258e38ec 100644 GIT binary patch delta 14 VcmbQiIfIi`zMF&N^G4RmEC3%H1VR7+ delta 14 VcmbQiIfIi`zMF$1aU<(w762SU1F!%9