From 27830531c5c22ad18d0b62ff8f28ae96af60845c Mon Sep 17 00:00:00 2001 From: minervaning <61038128+minervaning@users.noreply.github.com> Date: Fri, 8 Dec 2023 13:43:54 +0800 Subject: [PATCH] Deployed 218ce84 with MkDocs version: 1.4.3 --- 404.html | 32 ++--------------- App/24fall/index.html | 32 ++--------------- App/index.html | 38 +++------------------ App/nlp_phd/index.html | 32 ++--------------- App/zju_ling_cs/index.html | 32 ++--------------- CS/CPP/copy/index.html | 32 ++--------------- CS/CPP/course/index.html | 32 ++--------------- CS/CPP/file_io/index.html | 32 ++--------------- CS/CPP/final_review/index.html | 32 ++--------------- CS/CPP/inheritance/index.html | 32 ++--------------- CS/CPP/namespace/index.html | 32 ++--------------- CS/CPP/templates/index.html | 32 ++--------------- CS/CPP/type/index.html | 32 ++--------------- CS/OS/index.html | 32 ++--------------- CS/OS/mem_file/index.html | 32 ++--------------- CS/OS/overview/index.html | 32 ++--------------- CS/OS/process_syn/index.html | 32 ++--------------- CS/c_lang/index.html | 32 ++--------------- CS/coding_code/index.html | 32 ++--------------- CS/crawler/index.html | 32 ++--------------- CS/index.html | 32 ++--------------- CS/libgraphics/index.html | 32 ++--------------- CS/objdump/index.html | 32 ++--------------- CS/x86assm/index.html | 32 ++--------------- DL/NLPTech/bert_code/index.html | 32 ++--------------- DL/NLPTech/cs224n/index.html | 32 ++--------------- DL/NLPTech/cs231n/index.html | 32 ++--------------- DL/NLPTech/gpt_code/index.html | 32 ++--------------- DL/NLPTech/llama_code/index.html | 32 ++--------------- DL/NLPTech/ml_cheatsheet/index.html | 32 ++--------------- DL/NLPTech/rule_text/index.html | 32 ++--------------- DL/NLPTech/transformer_code/index.html | 32 ++--------------- DL/NLPTheory/autoregressive/index.html | 32 ++--------------- DL/NLPTheory/cot/index.html | 32 ++--------------- DL/NLPTheory/embodied_ai/index.html | 32 ++--------------- DL/NLPTheory/explainable_nlp/index.html | 32 ++--------------- DL/NLPTheory/index.html | 32 ++--------------- DL/NLPTheory/ling_ebender/index.html | 32 ++--------------- DL/NLPTheory/mwp/index.html | 32 ++--------------- DL/NLPTheory/neural_symbolic/index.html | 32 ++--------------- DL/NLPTheory/nli/index.html | 32 ++--------------- DL/Python/broadcastable_vector/index.html | 32 ++--------------- DL/Python/ipdb/index.html | 32 ++--------------- DL/Python/pandas_dataframe/index.html | 32 ++--------------- DL/Python/python_object/index.html | 32 ++--------------- DL/Python/pytorch/index.html | 32 ++--------------- DL/Python/setup_pack/index.html | 32 ++--------------- DL/Terminal/anaconda/index.html | 32 ++--------------- DL/Terminal/linux/index.html | 32 ++--------------- DL/Terminal/pytorch_terminal/index.html | 32 ++--------------- DL/Terminal/tmux/index.html | 32 ++--------------- DL/index.html | 32 ++--------------- Ling/Phonetics/reduction/index.html | 32 ++--------------- Ling/Phonetics/signal/index.html | 32 ++--------------- Ling/Pragmatics/ca_da/index.html | 32 ++--------------- Ling/Semantics/ambiguity/index.html | 32 ++--------------- Ling/Semantics/definitions/index.html | 32 ++--------------- Ling/Semantics/formal_semantics/index.html | 32 ++--------------- Ling/Semantics/index.html | 32 ++--------------- Ling/Syntax/conv_gen/index.html | 32 ++--------------- Ling/Syntax/ud_sud/index.html | 32 ++--------------- Ling/Syntax/uni_gram/index.html | 32 ++--------------- Ling/index.html | 32 ++--------------- Ling/pol_en_todo/index.html | 32 ++--------------- Ling/pol_zh/index.html | 32 ++--------------- Math/Graph/laplace_matrix/index.html | 32 ++--------------- Math/index.html | 32 ++--------------- Math/normal_forms/index.html | 32 ++--------------- Math/questions/index.html | 32 ++--------------- Other/apa/index.html | 32 ++--------------- Other/index.html | 32 ++--------------- Other/nlp_resources/index.html | 32 ++--------------- Other/tools/index.html | 32 ++--------------- Other/zotero/index.html | 32 ++--------------- index.html | 32 ++--------------- search/search_index.json | 2 +- sitemap.xml.gz | Bin 811 -> 811 bytes 77 files changed, 154 insertions(+), 2254 deletions(-) diff --git a/404.html b/404.html index 35c2da2c..f0600b88 100644 --- a/404.html +++ b/404.html @@ -52,17 +52,13 @@ - - - + - - @@ -107,30 +103,6 @@ -
- - - - - - - - - - - - - - - - - -
- @@ -280,7 +252,7 @@
  • - mu + 索引
  • diff --git a/App/24fall/index.html b/App/24fall/index.html index 97d32c41..f69c3a9b 100644 --- a/App/24fall/index.html +++ b/App/24fall/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/App/index.html b/App/index.html index 6e57e8d8..cd5a626c 100644 --- a/App/index.html +++ b/App/index.html @@ -21,7 +21,7 @@ - mu - MiniBabelLibrary + 索引 - MiniBabelLibrary @@ -58,17 +58,13 @@ - - - + - - @@ -105,7 +101,7 @@
    - mu + 索引
    @@ -113,30 +109,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -293,7 +265,7 @@ - mu + 索引 @@ -1852,7 +1824,7 @@ -

    mu

    +

    索引

    本章节包含升学经验和心得,已经完成 - ZJU英专转CS/NLP的心得

    diff --git a/App/nlp_phd/index.html b/App/nlp_phd/index.html index 772a078c..7993efc8 100644 --- a/App/nlp_phd/index.html +++ b/App/nlp_phd/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/App/zju_ling_cs/index.html b/App/zju_ling_cs/index.html index 2f8a247f..220c5726 100644 --- a/App/zju_ling_cs/index.html +++ b/App/zju_ling_cs/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/copy/index.html b/CS/CPP/copy/index.html index ea21cc7c..668e5010 100644 --- a/CS/CPP/copy/index.html +++ b/CS/CPP/copy/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/course/index.html b/CS/CPP/course/index.html index b90b212f..4857a2fc 100644 --- a/CS/CPP/course/index.html +++ b/CS/CPP/course/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/file_io/index.html b/CS/CPP/file_io/index.html index f4eb47d9..1d48c56e 100644 --- a/CS/CPP/file_io/index.html +++ b/CS/CPP/file_io/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/final_review/index.html b/CS/CPP/final_review/index.html index badb8d02..444031ef 100644 --- a/CS/CPP/final_review/index.html +++ b/CS/CPP/final_review/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/inheritance/index.html b/CS/CPP/inheritance/index.html index 462a31b6..03a14014 100644 --- a/CS/CPP/inheritance/index.html +++ b/CS/CPP/inheritance/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/namespace/index.html b/CS/CPP/namespace/index.html index 57584b75..6e3c97a7 100644 --- a/CS/CPP/namespace/index.html +++ b/CS/CPP/namespace/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/templates/index.html b/CS/CPP/templates/index.html index 26a7d407..e7fdb5fa 100644 --- a/CS/CPP/templates/index.html +++ b/CS/CPP/templates/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/CPP/type/index.html b/CS/CPP/type/index.html index acf01418..55fcb079 100644 --- a/CS/CPP/type/index.html +++ b/CS/CPP/type/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/OS/index.html b/CS/OS/index.html index ec4a0917..40b7034b 100644 --- a/CS/OS/index.html +++ b/CS/OS/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/OS/mem_file/index.html b/CS/OS/mem_file/index.html index 8046b75d..4be4f2e4 100644 --- a/CS/OS/mem_file/index.html +++ b/CS/OS/mem_file/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/OS/overview/index.html b/CS/OS/overview/index.html index ab70018b..f699f041 100644 --- a/CS/OS/overview/index.html +++ b/CS/OS/overview/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/OS/process_syn/index.html b/CS/OS/process_syn/index.html index f2564bfd..26281147 100644 --- a/CS/OS/process_syn/index.html +++ b/CS/OS/process_syn/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/c_lang/index.html b/CS/c_lang/index.html index 5a3016ea..b9262792 100644 --- a/CS/c_lang/index.html +++ b/CS/c_lang/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/coding_code/index.html b/CS/coding_code/index.html index d73fd5c8..d15905a4 100644 --- a/CS/coding_code/index.html +++ b/CS/coding_code/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/crawler/index.html b/CS/crawler/index.html index 9bbe47bc..32694729 100644 --- a/CS/crawler/index.html +++ b/CS/crawler/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/index.html b/CS/index.html index 96e670f6..dd3b82ec 100644 --- a/CS/index.html +++ b/CS/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -113,30 +109,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -286,7 +258,7 @@
  • - mu + 索引
  • diff --git a/CS/libgraphics/index.html b/CS/libgraphics/index.html index 5bc9657a..9579bdc9 100644 --- a/CS/libgraphics/index.html +++ b/CS/libgraphics/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/objdump/index.html b/CS/objdump/index.html index 6ad6f635..4d095b85 100644 --- a/CS/objdump/index.html +++ b/CS/objdump/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/CS/x86assm/index.html b/CS/x86assm/index.html index 555aa477..e647b594 100644 --- a/CS/x86assm/index.html +++ b/CS/x86assm/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/bert_code/index.html b/DL/NLPTech/bert_code/index.html index dd9768f4..ea621e24 100644 --- a/DL/NLPTech/bert_code/index.html +++ b/DL/NLPTech/bert_code/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/cs224n/index.html b/DL/NLPTech/cs224n/index.html index 805e821d..55c48320 100644 --- a/DL/NLPTech/cs224n/index.html +++ b/DL/NLPTech/cs224n/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/cs231n/index.html b/DL/NLPTech/cs231n/index.html index f30ac2ba..b2a951ba 100644 --- a/DL/NLPTech/cs231n/index.html +++ b/DL/NLPTech/cs231n/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/gpt_code/index.html b/DL/NLPTech/gpt_code/index.html index 571ac385..4eccd2a6 100644 --- a/DL/NLPTech/gpt_code/index.html +++ b/DL/NLPTech/gpt_code/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/llama_code/index.html b/DL/NLPTech/llama_code/index.html index 9660a35c..20d8a00d 100644 --- a/DL/NLPTech/llama_code/index.html +++ b/DL/NLPTech/llama_code/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/ml_cheatsheet/index.html b/DL/NLPTech/ml_cheatsheet/index.html index 69dc11a5..97364570 100644 --- a/DL/NLPTech/ml_cheatsheet/index.html +++ b/DL/NLPTech/ml_cheatsheet/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/rule_text/index.html b/DL/NLPTech/rule_text/index.html index 0c287d3a..b689cf30 100644 --- a/DL/NLPTech/rule_text/index.html +++ b/DL/NLPTech/rule_text/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTech/transformer_code/index.html b/DL/NLPTech/transformer_code/index.html index 70356197..167d6b92 100644 --- a/DL/NLPTech/transformer_code/index.html +++ b/DL/NLPTech/transformer_code/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/autoregressive/index.html b/DL/NLPTheory/autoregressive/index.html index bac876f5..1b944723 100644 --- a/DL/NLPTheory/autoregressive/index.html +++ b/DL/NLPTheory/autoregressive/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/cot/index.html b/DL/NLPTheory/cot/index.html index d96ff543..7fc54dde 100644 --- a/DL/NLPTheory/cot/index.html +++ b/DL/NLPTheory/cot/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/embodied_ai/index.html b/DL/NLPTheory/embodied_ai/index.html index 0a4ddc7f..a8f43a2b 100644 --- a/DL/NLPTheory/embodied_ai/index.html +++ b/DL/NLPTheory/embodied_ai/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/explainable_nlp/index.html b/DL/NLPTheory/explainable_nlp/index.html index 3fc43e7f..c36c01ac 100644 --- a/DL/NLPTheory/explainable_nlp/index.html +++ b/DL/NLPTheory/explainable_nlp/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/index.html b/DL/NLPTheory/index.html index aaee8915..323d5a19 100644 --- a/DL/NLPTheory/index.html +++ b/DL/NLPTheory/index.html @@ -54,17 +54,13 @@ - - - + - - @@ -114,30 +110,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -287,7 +259,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/ling_ebender/index.html b/DL/NLPTheory/ling_ebender/index.html index 7d06996e..e67dfece 100644 --- a/DL/NLPTheory/ling_ebender/index.html +++ b/DL/NLPTheory/ling_ebender/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/mwp/index.html b/DL/NLPTheory/mwp/index.html index be8a46c6..f490c140 100644 --- a/DL/NLPTheory/mwp/index.html +++ b/DL/NLPTheory/mwp/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/neural_symbolic/index.html b/DL/NLPTheory/neural_symbolic/index.html index 50c9ecb5..c46a5bcc 100644 --- a/DL/NLPTheory/neural_symbolic/index.html +++ b/DL/NLPTheory/neural_symbolic/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/NLPTheory/nli/index.html b/DL/NLPTheory/nli/index.html index 30bc9fc6..3644d3d8 100644 --- a/DL/NLPTheory/nli/index.html +++ b/DL/NLPTheory/nli/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Python/broadcastable_vector/index.html b/DL/Python/broadcastable_vector/index.html index 3e94c62f..7adba466 100644 --- a/DL/Python/broadcastable_vector/index.html +++ b/DL/Python/broadcastable_vector/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Python/ipdb/index.html b/DL/Python/ipdb/index.html index 7e2c2a76..c918bafd 100644 --- a/DL/Python/ipdb/index.html +++ b/DL/Python/ipdb/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Python/pandas_dataframe/index.html b/DL/Python/pandas_dataframe/index.html index ae4ca394..e8dbcfbe 100644 --- a/DL/Python/pandas_dataframe/index.html +++ b/DL/Python/pandas_dataframe/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Python/python_object/index.html b/DL/Python/python_object/index.html index 9e3f7258..c679289a 100644 --- a/DL/Python/python_object/index.html +++ b/DL/Python/python_object/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Python/pytorch/index.html b/DL/Python/pytorch/index.html index b804b264..78e64b91 100644 --- a/DL/Python/pytorch/index.html +++ b/DL/Python/pytorch/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Python/setup_pack/index.html b/DL/Python/setup_pack/index.html index 6f5409ca..c5453c99 100644 --- a/DL/Python/setup_pack/index.html +++ b/DL/Python/setup_pack/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Terminal/anaconda/index.html b/DL/Terminal/anaconda/index.html index 8adb2ad9..8e271306 100644 --- a/DL/Terminal/anaconda/index.html +++ b/DL/Terminal/anaconda/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Terminal/linux/index.html b/DL/Terminal/linux/index.html index f0b71b32..fdf09081 100644 --- a/DL/Terminal/linux/index.html +++ b/DL/Terminal/linux/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Terminal/pytorch_terminal/index.html b/DL/Terminal/pytorch_terminal/index.html index 3bce9338..7f9c5b0e 100644 --- a/DL/Terminal/pytorch_terminal/index.html +++ b/DL/Terminal/pytorch_terminal/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/Terminal/tmux/index.html b/DL/Terminal/tmux/index.html index c2519ae0..660c98f0 100644 --- a/DL/Terminal/tmux/index.html +++ b/DL/Terminal/tmux/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/DL/index.html b/DL/index.html index 4a18123d..09bd4ba3 100644 --- a/DL/index.html +++ b/DL/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -113,30 +109,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -286,7 +258,7 @@
  • - mu + 索引
  • diff --git a/Ling/Phonetics/reduction/index.html b/Ling/Phonetics/reduction/index.html index 9b4e7051..6f55a1d1 100644 --- a/Ling/Phonetics/reduction/index.html +++ b/Ling/Phonetics/reduction/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Phonetics/signal/index.html b/Ling/Phonetics/signal/index.html index 1eba142e..2a5dd998 100644 --- a/Ling/Phonetics/signal/index.html +++ b/Ling/Phonetics/signal/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Pragmatics/ca_da/index.html b/Ling/Pragmatics/ca_da/index.html index f1599552..d4d6d08f 100644 --- a/Ling/Pragmatics/ca_da/index.html +++ b/Ling/Pragmatics/ca_da/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Semantics/ambiguity/index.html b/Ling/Semantics/ambiguity/index.html index 1aa002a2..f5a5fa45 100644 --- a/Ling/Semantics/ambiguity/index.html +++ b/Ling/Semantics/ambiguity/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Semantics/definitions/index.html b/Ling/Semantics/definitions/index.html index 864d69fc..2cbeea01 100644 --- a/Ling/Semantics/definitions/index.html +++ b/Ling/Semantics/definitions/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Semantics/formal_semantics/index.html b/Ling/Semantics/formal_semantics/index.html index 2b2862ec..6c735a21 100644 --- a/Ling/Semantics/formal_semantics/index.html +++ b/Ling/Semantics/formal_semantics/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Semantics/index.html b/Ling/Semantics/index.html index 2b093fe6..cafb656f 100644 --- a/Ling/Semantics/index.html +++ b/Ling/Semantics/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Syntax/conv_gen/index.html b/Ling/Syntax/conv_gen/index.html index c34762cb..67e5fe82 100644 --- a/Ling/Syntax/conv_gen/index.html +++ b/Ling/Syntax/conv_gen/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Syntax/ud_sud/index.html b/Ling/Syntax/ud_sud/index.html index e9d41682..e87b7993 100644 --- a/Ling/Syntax/ud_sud/index.html +++ b/Ling/Syntax/ud_sud/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/Syntax/uni_gram/index.html b/Ling/Syntax/uni_gram/index.html index 506a1050..fd8973a3 100644 --- a/Ling/Syntax/uni_gram/index.html +++ b/Ling/Syntax/uni_gram/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Ling/index.html b/Ling/index.html index 7a2d325e..4082f25d 100644 --- a/Ling/index.html +++ b/Ling/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -113,30 +109,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -286,7 +258,7 @@
  • - mu + 索引
  • diff --git a/Ling/pol_en_todo/index.html b/Ling/pol_en_todo/index.html index 3f292f27..7ef979be 100644 --- a/Ling/pol_en_todo/index.html +++ b/Ling/pol_en_todo/index.html @@ -54,17 +54,13 @@ - - - + - - @@ -114,30 +110,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -287,7 +259,7 @@
  • - mu + 索引
  • diff --git a/Ling/pol_zh/index.html b/Ling/pol_zh/index.html index 4bc0b72a..8cab267a 100644 --- a/Ling/pol_zh/index.html +++ b/Ling/pol_zh/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Math/Graph/laplace_matrix/index.html b/Math/Graph/laplace_matrix/index.html index afae5021..8d76a8f2 100644 --- a/Math/Graph/laplace_matrix/index.html +++ b/Math/Graph/laplace_matrix/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Math/index.html b/Math/index.html index 403fe047..07ac3495 100644 --- a/Math/index.html +++ b/Math/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -113,30 +109,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -286,7 +258,7 @@
  • - mu + 索引
  • diff --git a/Math/normal_forms/index.html b/Math/normal_forms/index.html index 5f6266b0..eb338e09 100644 --- a/Math/normal_forms/index.html +++ b/Math/normal_forms/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Math/questions/index.html b/Math/questions/index.html index 30e753bb..7d4790b0 100644 --- a/Math/questions/index.html +++ b/Math/questions/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Other/apa/index.html b/Other/apa/index.html index cac94115..7b1e8efd 100644 --- a/Other/apa/index.html +++ b/Other/apa/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Other/index.html b/Other/index.html index 1e73f685..3046bab1 100644 --- a/Other/index.html +++ b/Other/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Other/nlp_resources/index.html b/Other/nlp_resources/index.html index 3de8a4dd..7464981b 100644 --- a/Other/nlp_resources/index.html +++ b/Other/nlp_resources/index.html @@ -56,17 +56,13 @@ - - - + - - @@ -116,30 +112,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -289,7 +261,7 @@
  • - mu + 索引
  • diff --git a/Other/tools/index.html b/Other/tools/index.html index bad88898..78994dff 100644 --- a/Other/tools/index.html +++ b/Other/tools/index.html @@ -58,17 +58,13 @@ - - - + - - @@ -118,30 +114,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -291,7 +263,7 @@
  • - mu + 索引
  • diff --git a/Other/zotero/index.html b/Other/zotero/index.html index f4bfa4da..c140eb2f 100644 --- a/Other/zotero/index.html +++ b/Other/zotero/index.html @@ -54,17 +54,13 @@ - - - + - - @@ -109,30 +105,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -282,7 +254,7 @@
  • - mu + 索引
  • diff --git a/index.html b/index.html index 378f8cb6..b99e58b6 100644 --- a/index.html +++ b/index.html @@ -56,17 +56,13 @@ - - - + - - @@ -116,30 +112,6 @@ -
    - - - - - - - - - - - - - - - - - -
    - @@ -388,7 +360,7 @@
  • - mu + 索引
  • diff --git a/search/search_index.json b/search/search_index.json index 473c807a..b43d8be0 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["ja"],"separator":"[\\s\\-\uff0c\u3002]+","pipeline":["stemmer"]},"docs":[{"location":"","title":"Home","text":"

    Hi there \ud83d\udc4b

    "},{"location":"#_1","title":"\u6253\u62db\u547c\u7528\u7684","text":"

    \u6211\u7684BLOG\uff0c\u4e3b\u8981\u8bed\u8a00\u662f\u4e2d\u6587\uff0c\u4e3b\u8981\u5185\u5bb9\u6709\u7b14\u8bb0 + \u4e00\u4e9b\u778e\u8bdd

    \u6211\u7684\u7b14\u8bb0\u4e0d\u591a\uff01\u4ee5\u540e\u4e5f\u4e0d\u4f1a\u591a\u7684\ud83d\ude24 \u6b22\u8fce\u6765\u770b\u6211\u7684\u7b14\u8bb0\uff01

    \u5982\u679c\u60f3\u67e5\u627eZJU\u8bfe\u7a0b\u8d44\u6599\uff0c\u53ef\u4ee5\u914d\u5408\u4ed3\u5e93ZJU_COURSE_MATERIALS\u98df\u7528

    \u6682\u65f6\u8fd9\u6837\u5206\u5de5

    \u5927\u90e8\u5206\u5185\u5bb9\u8fd8\u5728\u4e00\u70b9\u4e00\u70b9\u65bd\u5de5\u4e2d\uff0c\u8bf7\u7a0d\u7b49\uff01

    "},{"location":"#_2","title":"\u63a8\u8350\u9605\u8bfb","text":""},{"location":"#_3","title":"\u7533\u8bf7\u5fc3\u5f97","text":"

    \u4ece\u82f1\u4e13\u8f6cCS\u548cNLP\u7684\u5efa\u8bae\u5e16\uff01

    "},{"location":"#computer-science-notes","title":"Computer Science Notes","text":"

    C\u5927\u7a0blibgraphics\u8e29\u5751\u6587\u6863 \uff08\u4f46\u5176\u5b9e\u9047\u5230\u7684\u5751\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u8fd9\u91cc\u5217\u51fa\u6765\u7684 \u6b22\u8fceissue\u6216\u90ae\u4ef6\u50ac\u66f4\uff01\uff09

    C++\u542c\u8bfe\u7b14\u8bb0

    OS\u64cd\u4f5c\u7cfb\u7edf\u7b14\u8bb0

    "},{"location":"#deep-learning-notes","title":"Deep Learning Notes","text":"

    \u62b1\u6b49\uff0c\u8fd9\u680f\u5168\u662fTODO\uff0c\uff0c

    "},{"location":"#linguistics-notes","title":"Linguistics Notes","text":"

    ZJU Semantics Notes \uff08\u867d\u7136\u6392\u7248\u4ecd\u4e0d\u662f\u5f88\u597d\u770b\u4f46\u53ef\u80fd\u662f\u5168\u7f51\u9996\u4e2a\ud83d\ude2d\uff09

    "},{"location":"#_4","title":"\u5176\u5b83\u8bfe\u7a0b","text":"

    ZJU\u6253\u5f00\u827a\u672f\u4e4b\u95e8-\u94a2\u7434\u671f\u672b\u590d\u4e60\u7b14\u8bb0

    "},{"location":"#_5","title":"\u5de5\u5177\u63a8\u8350","text":"

    \u5173\u4e8e\u6211\u600e\u6837\u5728\u7b14\u8bb0\u5de5\u5177Notion\u548cObsidian\u4e4b\u95f4\u505a\u9009\u62e9

    "},{"location":"#_6","title":"\u8054\u7cfb\u4f5c\u8005","text":"

    \ud83d\udceb RuoxiNing@outlook.com \ud83e\uddd1\u200d\ud83d\udcbb https://ruoxining.github.io

    "},{"location":"App/","title":"mu","text":"

    \u672c\u7ae0\u8282\u5305\u542b\u5347\u5b66\u7ecf\u9a8c\u548c\u5fc3\u5f97\uff0c\u5df2\u7ecf\u5b8c\u6210 - ZJU\u82f1\u4e13\u8f6cCS/NLP\u7684\u5fc3\u5f97

    "},{"location":"App/24fall/","title":"\u3010TODO\u3011\u6211\u768424fall\u7533\u8bf7\u8bb0\u5f55","text":"

    \u672c\u9875\u9762\u4f1a\u5728\u621112\u6708\u6295\u9012\u5b8c\u7b2c\u4e00\u6279\u7533\u8bf7\u540e\u66f4\u65b0\u4e00\u4e2a\u7533\u8bf7\u8bb0\u5f55\u3002

    \u4e3b\u8981\u76ee\u7684\u6709\u5206\u4eab\u6211\u7684\u7ecf\u9a8c\u5fc3\u5f97\u548c\u52aa\u529b\u83b7\u5f97\u7684\u4e00\u4e9b\u4fe1\u606f\uff0c\u81f4\u529b\u4e8e\u7ef4\u62a4CS\u548clinguistics\u7533\u8bf7\u8d44\u6599\u5f00\u6e90\u7684\u751f\u6001\u3002

    \u9884\u8ba1\u66f4\u65b0\u5c0f\u6807\u9898\u6709\uff1a

    "},{"location":"App/24fall/#_1","title":"\u7533\u8bf7\u683c\u8a00","text":""},{"location":"App/24fall/#ms","title":"ms\u9009\u6821","text":"

    \u6211\u52a0\u5fc3\u9009\u5355\u4e3b\u8981\u770b\u7684\u98de\u8dc3+opencsapp\uff0c\u7136\u540e\u4ece\u91cc\u9762\u5220\u53bb\u6240\u6709\u7533\u5230\u4e5f\u4e0d\u60f3\u53bb\u7684

    "},{"location":"App/24fall/#phd","title":"Ph.D. \u9009\u5bfc","text":""},{"location":"App/24fall/#_2","title":"\u8bed\u8a00\u6210\u7ee9","text":"

    CMU \u5fc5\u987b\u9001\u5206

    Umich Meng ECE\u9700\u8981GRE\uff0c\u5fc5\u987b\u9001\u5206 The University of Michigan school code is 1839.

    Uchi MPCS\u9700\u8981GRE\u7684q>85%\uff08\u597d\u50cf\u662f\u8fd9\u4e2a\u6570\uff09\uff0cv\u6ca1\u6709\u8981\u6c42 Please have an official TOEFL or IELTS score sent directly to the University of Chicago. The University's institution code for TOEFL/GRE reporting is 1832

    UW CLMS \u5fc5\u987b\u8981\u5b98\u65b9\u9001\u5206 TOEFL/GRE ETS report code: 4854

    USC: 4852

    UCSD\uff1a4836

    "},{"location":"App/24fall/#_3","title":"\u63a8\u8350\u4fe1","text":"

    \u5927\u7ea612.2\u53f7\u770b\u5230phd\u7533\u8bf7\u7fa4\u91cc\u8bf4\u7684\uff0c\u5176\u5b9e\u4e0d\u8981\u627e3\u4e2a\u63a8\u8350\u4eba\u5c31\u7ed3\u675f\uff0c\u6700\u597d\u63d0\u524d\u627e4\u52305\u4e2a\uff0c\u56e0\u4e3a\u591a\u4ea4\u6ca1\u6709\u5173\u7cfb\uff0c\u5927\u90e8\u5206\u5b66\u6821\u90fd\u6709\u6dfb\u52a0\u591a\u4e2a\u63a8\u8350\u4eba\u7684\u9009\u9879\uff08\u6211\u7684\u9009\u6821\u91cc\u53ea\u6709loo\u548cumich\u4e0a\u9650\u4e09\u4e2a\uff09\uff0c\u4f46\u662f\u7ecf\u5e38\u6709\u63a8\u8350\u4eba\u5fd9\u5fd8\u4e86\u7684\u60c5\u51b5\u3002\u518d\u95ee\u53e6\u4e00\u4e2a\u7fa4\uff0c\u5f97\u5982\u679c\u662fphd\uff0c\u4e0d\u4f1a\u56e0\u4e3a\u6709\u4e00\u4e2a\u63a8\u8350\u4eba\u5fd8\u4e86\u4ea4\u62d2\u4f60\uff0c\u4f46\u662f\u6709\u7684ms\u542c\u8bf4\u4e09\u5c01\u4ea4\u4e0d\u9f50\u5c31\u63d0\u4ea4\u4e0d\u4e86\uff08\u6211\u7684\u6682\u65f6\u6ca1\u9047\u5230\uff09\uff0c\u6216\u8005\u53ef\u80fd\u56e0\u6b64\u65e0\u58f0\u62d2\u4f60\uff0c\u6240\u4ee5\u8fd8\u662f\u63d0\u524d\u627e4\u4e2a\u4ee5\u4e0a\u3002

    \u542c\u8bf4USC MSCS\u5b8c\u5168\u4e0d\u770b\u63a8\u8350\u4fe1\uff0c\u56e0\u4e3a\u4e5f\u4e0d\u6562\u591a\u8981\uff0c\u6211\u5c31\u4ea4\u4e86\u4e00\u5c01\uff0c\u8d4c\u3002\u3002\u3002\u3002

    Uchi\u53ef\u4ee5\u5171\u4eab\u63a8\u8350\u4fe1

    Rice\u53ef\u4ee5\u5171\u4eab\u63a8\u8350\u4fe1

    CMU\u540c\u4e00\u4e2a\u7533\u8bf7\u7cfb\u7edf\u4e4b\u95f4\u53ef\u4ee5\u5171\u4eab\u63a8\u8350\u4fe1\uff0c\u6bd4\u5982MSCS\u548cPhD\u5171\u4eab\uff0cMLT\u90a3\u4e00\u5927\u4e32\u7684AI\u9879\u76ee\u5171\u4eab\u3002

    UCSD\u7684ms\u548cphd\u4e4b\u95f4\u4e0d\u80fd\u5171\u4eab\u63a8\u8350\u4fe1\uff0c\u4f46\u662f\u636e\u8bf4cs ce master\u4e4b\u95f4\u662f\u4e92\u901a\u7684\uff0c\u8ddfgit\u4e0d\u4e92\u901a

    Umich\u76ee\u524d\u53ea\u77e5\u9053\u81f3\u5c11ms\u548cmeng\u4e4b\u95f4\u4e0d\u80fd\u5171\u4eab\u63a8\u8350\u4fe1\u3002\u586b\u9519\u4e86\u53ef\u4ee5\u66f4\u6539\u63a8\u8350\u4eba\uff0c\u66f4\u6539\u540e\u65b0\u7684\u63a8\u8350\u4eba\u4f1a\u6536\u5230\u90ae\u4ef6\uff0c\u53ea\u662f\u5728\u4f60\u7684\u7533\u8bf7\u91cc\u8fd8\u662f\u663e\u793a\u539f\u6765\u63a8\u8350\u4eba\u3002

    Waterloo\u7684\u63a8\u8350\u4fe1\u5728\u7b2c\u4e00\u6b65\u63d0\u4ea4\u540e1-3\u5929\u5185\u53d1\u51fa\uff0c\u7533\u8bf7\u4eba\u4e0d\u53ef\u51b3\u5b9a\u3002\u6211\u7684\u63a8\u8350\u4eba\u6700\u5feb\u6536\u5230\u7684\u662f\u63d0\u4ea4\u540e1\u5929\u5de6\u53f3\u3002\u4e4b\u540e\u5728ddl\u524d14\u5929\u548c7\u5929\u8fd8\u4f1a\u5404\u81ea\u52a8\u53d1\u4e00\u6b21\u50ac\u4fe1

    \u7fa4\u91cc\u8bf4\u7684\uff1a\u8865\u5145\u4e00\u4e2a\u54e5\u5927cs ce ee\u4e5f\u662f\u5171\u7528\u3002\u5e94\u8be5\u662fms

    "},{"location":"App/24fall/#_4","title":"\u5957\u74f7","text":"

    \u7f51\u4e0a\u8bf4\u5957\u5230\u74f7\u624d\u80fd\u7533\u3002\u7533\u8bf7\u8fc7\u7a0b\u4e2d\u5f97\u5230\u7684\u6d88\u606f\u662f\u5957\u74f7\u548c\u7533\u8bf7\u5e76\u4e0d\u5f3a\u76f8\u5173\uff0c\u6709\u6559\u6388\u5c31\u60f3\u7b49\u770b\u5230\u6c60\u5b50\u518d\u51b3\u5b9a\u7684\u60c5\u51b5\u3002

    "},{"location":"App/24fall/#college-specific","title":"College-specific\u7f51\u7533\u7684\u5751","text":"

    CMU\u5982\u679c\u76f4\u63a5\u641c\u7d22 MLT application \u51fa\u73b0\u7684\u4ee5\u4e0b\u9875\u9762\u53ca\u7533\u8bf7\u94fe\u63a5\u662f\u627e\u4e0d\u5230MLT\u9879\u76ee\u7684

    Application Management (cmu.edu) \u8fd9\u4e2a\u9875\u9762\u548c\u4ee5\u4e0b\u622a\u56fe\u662f\u6b63\u786e\u7684\uff0c\u540c\u7406mscv\u548cmsaii\u4ec0\u4e48\u7684\u9879\u76ee\u4e5f\u5728\u8fd9\u91cc\u7533\u8bf7\u3002

    UWaterloo \u7684\u7533\u8bf7\u5206\u4e3a\u4e24\u4e2a\u9636\u6bb5\uff0c\u7b2c\u4e00\u4e2a\u9636\u6bb5\u8d76\u7d27\u4ea4\u4e86\u624d\u80fd\u5728\u7b2c\u4e8c\u4e2a\u9636\u6bb5\u4e0a\u4f20cv \u6587\u4e66 \u8bed\u8a00\u6210\u7ee9\u7b49\u4e1c\u897f\uff0c\u7b2c\u4e8c\u9636\u6bb5\u7684\u94fe\u63a5\u4f1a\u5728\u7b2c\u4e00\u9636\u6bb5\u540e2-4\u5929\u6536\u5230\u3002\u7b2c\u4e00\u4e2a\u9636\u6bb5\u4e00\u5b9a\u4e00\u5b9a\u8981\u6bd412.1\u63d0\u524d\u81f3\u5c11\u56db\u4e94\u5929\u4ea4

    Umich\u7684\u7cfb\u7edf\u4e00\u5f00\u59cb\u56db\u4e94\u4e2a\u9875\u9762\u8981\u987a\u5e8f\u586b\u5b8c\uff0c\u540e\u9762\u7684\u9875\u9762\u624d\u80fd\u8df3\u7740\u586b

    "},{"location":"App/24fall/#_5","title":"\u6587\u4e66","text":"

    \u5176\u5b9e\u6211\u4e2a\u4eba\u8ba4\u4e3a\u5728\u5ba1\u6587\u4e66\u65f6\u6bcf\u4efd\u6587\u4e665-10\u5206\u949f\uff0c\u53ef\u80fd\u6240\u6709\u4eba\u80fd\u4e00\u773c\u770b\u5230\u7684\u662f 1\uff09\u5c0f\u6807\u9898 2\uff09\u52a0\u7c97\u7684\u5173\u952e\u8bcd\u3002\u8bb2\u4e00\u4e2a\u4f8b\u5b50\u662f\u6211\u4e0a\u6b21\u53c2\u52a0\u4e00\u95e8\u8bfe\u7684group tutorial\u65f6\uff0c\u5f53\u65f6\u5c0f\u7ec4\u6210\u5458\u5408\u5199\u4e86\u4e00\u4efdrp\uff0c\u5176\u4e2d\u6211\u5199\u7684\u662f\u6700\u6666\u6da9\u7684lit review\uff0c\u5373\u4e13\u4e1a\u672f\u8bed\u5bc6\u5ea6\u6700\u9ad8\u8fd8\u53e5\u5b50\u6700\u957f\uff0c\u4f46\u662f\u6211\u7ed9\u6bcf\u4e2a\u5206\u4e3b\u9898\u52a0\u4e86\u5c0f\u6807\u9898\uff0c\u5176\u5b83\u540c\u5b66\u5199\u7684\u90e8\u5206\u6ca1\u6709\u52a0\u3002\u8001\u5e08\u5728\u4e0e\u6211\u4eec\u8c08\u8bdd\u7684\u95f4\u9699\u7784\u4e86\u51e0\u773c\u6211\u4eec\u7684\u6587\u4ef6\uff0c\u77ed\u77ed\u7684\u65f6\u95f4\u91cc\u5c31\u53ea\u770b\u8fdb\u53bb\u4e86lit review\u7684\u5c0f\u6807\u9898\uff0c\u70b9\u8bc4\u4e86\u4e00\u4e0b\u3002\u6240\u4ee5\u6211\u89c9\u5f97\u505a\u6e05\u6670\u7684\u5206\u6bb5\u548c\u5c0f\u6807\u9898\u5f88\u91cd\u8981\uff08\u8fd9\u91cc\u771f\u7684\u6709\u70b9\u50cf\u8bbe\u8ba1\u56db\u539f\u5219\uff0c\u5bf9\u6bd4/\u805a\u5408\uff09\uff0c\u5c24\u5176\u662f\u65f6\u95f4\u7cbe\u529b\u4e0d\u591f\u65f6\uff0c\u5176\u4e2d\u7684\u7ec6\u8282\u5185\u5bb9\u8bf4\u4e0d\u5b9a\u4e0d\u7528\u62a0\u592a\u7ec6\u3002

    \u60f3\u7ed9\u70b9\u5199\u6587\u4e66\u65f6\u81ea\u5df1\u7528\u7684\u683c\u5f0f

    PS\u7ed3\u6784

    \u7b2c\u4e00\u6bb5\uff1a\u4e00\u4e9beye-catcher\uff0c\u8bb2\u4e00\u70b9\u5bf9\u81ea\u5df1\u603b\u7ed3\u6027\u7684\u8bdd/tattoo\uff0c\u6216\u8005\u5e72\u8106\u76f4\u63a5\u4ece\u201c\u6211\u672c\u79d1\u5f00\u59cb\u5bf9xxx\u611f\u5174\u8da3\uff0c\u4e8e\u662f\u4e0a\u4e86\u5f88\u591a\u8bfe\u505a\u4e86\u5f88\u591a\u7814\u7a76\u201d\u5e73\u5b9e\u5730\u5f00\u59cb

    \u7b2c\u4e8c\u6bb5\uff1a\u4e00\u822c\u4e00\u4e24\u53e5\u8bdd\u5e26\u8fc7\u8bfe\u7a0b\uff0c\u6709\u7279\u522b\u51fa\u8272\u7684score\u6216coursework\u53ef\u4ee5\u5728\u8fd9\u91cc\u8bf4

    \u7b2c\u4e09\u5230\u4e94\uff08\u6216\u56db\uff09\u6bb5\uff1a\u6bcf\u6bb5\u4e00\u4e2a\u7ecf\u5386\uff0c\u53ef\u4ee5\u603b\u5206\u603b\u5199\uff0c\u627e\u5230\u4e00\u4e2a\u8fd9\u6bb5\u7ecf\u5386\u6700\u60f3\u7a81\u51fa\u7684\u7279\u70b9/\u54c1\u8d28\uff0c\u7136\u540e\u56f4\u7ed5\u7740\u8bf4

    \u7b2c\u516d\u6bb5\uff1amoving forward \u8bb2\u4ee5\u540e\u7684\u89c4\u5212

    \u7b2c\u4e03\u6bb5\uff1awhy [program name] and why [school name]

    \u7b2c\u516b\u4e5d\u6bb5\uff1a\u5982\u679c\u5b66\u6821\u6709\u7279\u6b8a\u7684diversity \u5956\u5b66\u91d1 gre clarification\u4e4b\u7c7b\u7684\u53ef\u4ee5\u5728\u8fd9\u91cc\u5199

    References

    SoP\u7ed3\u6784

    \u7b2c\u4e00\u6bb5\uff1axxx\u662f\u5f88\u91cd\u8981\u7684\uff0c\u6211\u4e00\u76f4\u5bf9xxx\u611f\u5174\u8da3\uff0c\u6211\u9009\u62e9\u5728x\u6821\u8bfbphd is naturally a continuation of my previous interests and experiences\u3002\u5177\u4f53\u800c\u8a00\uff0c\u6211\u7684\u7814\u7a76\u5174\u8da3\u4e3a\uff1a ( \u6b64\u5904\u53ef\u4ee5\u6709\u5c0f\u6807\u9898\u548c\u4e00\u53e5\u8bdd\u4ecb\u7ecd

    1. AAA aaaa
    2. BBB bbbb
    3. CCC cccc )

    \u7b2c\u4e8c\u6bb5\uff1aAAA \u7ed3\u6784\u5982\u4e0b

    \u5199\u5b8c\u4e00\u6574\u6bb5\u540e\u6700\u540e\u518d\u8d77\u5c0f\u6807\u9898\n\u4e00\u4e2a\u65b9\u5411\u6709\u591a\u91cd\u8981\u7b80\u4ecb\n\uff08+\u81ea\u5df1\u8fc7\u53bb\u8bfe\u7a0b\u9879\u76ee\uff0c\u5982\u679c\u771f\u7684\u5f88\u91cd\u8981\u7684\u8bdd\u5427\uff09\n+\u81ea\u5df1\u8fc7\u53bb\u7814\u7a76\n+\u81ea\u5df1\u8fc7\u53bb\u7814\u7a76\n+\u672a\u6765\u7814\u7a76\n+\u672a\u6765\u7814\u7a76\n+\u5e0c\u671bachieve\u7684\u76ee\u6807\n

    \u7b2c\u4e09\u6bb5\uff1aBBB \u540c\u4e0a

    \u7b2c\u56db\u6bb5\uff1aCCC \u540c\u4e0a\u4e0a

    \u7b2c\u4e94\u6bb5\uff1aMoving forward

    \u7b2c\u516d\u6bb5\uff1awhy [program name] and why [school name]

    References

    \u6211\u7684\u8fc7\u53bb\u7814\u7a76\u7ecf\u5386\u4e0e\u6211\u672a\u6765\u7684\u76ee\u6807\u65b9\u5411\u7279\u522b\u4e0d\u76f8\u4f3c\uff0c\u4f46\u662f\u611f\u89c9\u4f60\u5fc5\u987b\u53bb\u5bfb\u627e\u4e00\u4e2a\u5e73\u8861\u70b9\uff0c\u5bfb\u627e\u4e24\u4e09\u4e2a\u5c0f\u6807\u9898\u80fd\u628a\u4ed6\u4eec\u90fd\u6982\u62ec\u4f4f\u3002\u8fd9\u4e24\u4e09\u4e2a\u5c0f\u6807\u9898\u9996\u5148\u8981\u670d\u52a1\u4e8e\u672a\u6765\u65b9\u5411\uff0c\u7136\u540e\u56e0\u4e3a\u4f60\u8fc7\u53bb\u7684\u6bcf\u4e2a\u9879\u76ee\u4e0d\u53ef\u80fd\u53ea\u6709\u4e00\u4e2a\u5c5e\u6027/\u9886\u57df\uff0c\u53ef\u4ee5\u9009\u62e9\u80fd\u591f\u670d\u52a1\u4e8e\u672a\u6765\u65b9\u5411\u7684\u65b9\u9762\uff0c\u7528\u201c\u6211\u53d7\u5230\u4e86xx\u65b9\u9762\u7684\u542f\u53d1\u201d\u4e4b\u7c7b\u7684\u8bdd\u8fde\u63a5\u8d77\u6765\u3002

    UCSD \u7ed9\u7684\u53c2\u8003\u6307\u5bfc \u4e94\u4e2a\u95ee\u9898 - How did you become interested in this field? - What experiences have contributed toward your preparation for further study in this field? - What are your future goals? - What are your research interests? - How are you a \"match\" for the program to which you are applying? \u5176\u5b83\u8981\u6ce8\u610f\u7684 - Give examples of personal attributes or qualities that would help you complete graduate study successfully. - Describe your determination to achieve your goals, your initiative and ability to develop ideas, and your ability to work independently. - Describe background characteristics that may have placed you at an educational disadvantage (English language learner, family economic history, lack of educational opportunity, disability, etc.). - Leave the reader believing that you are prepared for advanced academic work and will be successful in graduate school.

    "},{"location":"App/24fall/#_6","title":"\u81f4\u8c22","text":"

    \u6211\u7684\u63a8\u8350\u4eba

    \u7ed9\u8fc7\u6211\u91cd\u8981\u4eba\u751f\u5efa\u8bae\u7684

    \u8001\u5e08

    \u8ddf\u6211\u804a\u7533\u8bf7\u7684\u540c\u5b66

    \u63d0\u4f9b\u60c5\u611f\u652f\u6301\u7684\u540c\u5b66\u548cTA\u4eec

    "},{"location":"App/24fall/#emotion-timeline","title":"\u9644\u5f55\uff1aEmotion \u7248 \u6211\u7684 Timeline\uff08\u5efa\u8bae\u522b\u770b \u770b\u6211\u4e22\u4eba\uff09","text":"

    \u6211\u7684\u7533\u8bf7\u771f\u7684\u597d\u6781\u9650\u554a\u554a\u554a\u554a\u554a\u554a\u554a

    "},{"location":"App/nlp_phd/","title":"NLP Global PHD Equality Digest (\u642c\u8fd0)","text":"

    \u7ffb\u8bd1\u81eahttps://github.com/zhijing-jin/nlp-phd-global-equality

    "},{"location":"App/nlp_phd/#_1","title":"\u9996\u63a8\u8d44\u6e90","text":"
    1. ACL \u5e74\u5ea6\u5bfc\u5e08\u5236\u9879\u76ee\uff08https://acl-mentorship.github.io\uff09
    2. NLP with Friends \uff08Welcome! - NLP with Friends\uff09
    "},{"location":"App/nlp_phd/#phd","title":"\u7b2c\u4e00\u9636\u6bb5\uff1a\u600e\u6837\u7533\u8bf7PhD\uff1f","text":""},{"location":"App/nlp_phd/#_2","title":"\u7533\u8bf7\u5efa\u8bae","text":""},{"location":"App/nlp_phd/#phd_1","title":"\u6211\u5e94\u8be5\u8bfbPhD\u5417\uff1f","text":"
    1. (John Hewitt, PhD@Stanford)\u00a0Undergrad to PhD, or not - advice for undergrads interested in research\u00a0(2018). [Suggestions]

    2. \u7a77\u548c\u4e0d\u806a\u660e\u4e0d\u662f\u7406\u7531

    3. \u591a\u4e0e\u4eba\u4ea4\u6d41\uff0c\u542c\u7684\u5efa\u8bae\u8d8a\u591a\u8d8a\u597d
    4. \u89c2\u5bdf\u4e86\u89e3phd\u7684\u65e5\u5e38\u751f\u6d3b
    5. \u770b\u770b\u81ea\u5df1\u662f\u5426\u6709\u70ed\u60c5
    6. \u7533\u8bf7\u524d\u76848\u6708\u52309\u6708\u8981\u5199\u597d\u81ea\u5df1\u7684SOP\uff0c\u601d\u8003\u81ea\u5df1\u8981\u505a\u600e\u6837\u7684\u7814\u7a76\uff0c\u600e\u6837\u8ba9\u81ea\u5df1\u7684\u7814\u7a76\u6709\u5f71\u54cd\u529b\u3002\u57288\u6708\u8981\u8054\u7cfb\u597d\u63a8\u8350\u4fe1

    7. (Prof Jason Eisner@JHU)\u00a0Advice for Research Students\u00a0(last updated: 2021). [List of suggestions]

    "},{"location":"App/nlp_phd/#_3","title":"\u7533\u8bf7\u8fc7\u7a0b\u662f\u4ec0\u4e48\u6837\u5b50\u7684\uff1f","text":"
    1. (Nelson Liu, PhD@Stanfard)\u00a0Student Perspectives on Applying to NLP PhD Programs\u00a0(2019). [Suggestions Based on Surveys]
    2. \u4e3a\u4ec0\u4e48\u73b0\u5728\u5c31\u8981\u7533\u8bf7\uff1a\uff081\uff09AI\u754c\u8d8a\u6765\u8d8a\u5377\uff0c\u66f4\u65b0\u975e\u5e38\u5feb\uff0c\u6240\u4ee5\u53d1\u66f4\u591apaper\u4e0d\u4e00\u5b9a\u8868\u793a\u7533\u8bf7\u66f4\u5360\u4f18\u52bf \uff082\uff09\u7855\u58eb\u7533\u8bf7phd\u6bd4\u672c\u79d1\u7533\u8bf7phd\u9700\u8981\u66f4\u591a\u6587\u7ae0 \uff083\uff09\u4e0d\u786e\u5b9a\u6027\u5f88\u5927\uff0c\u8ba1\u5212\u5f88\u53ef\u80fd\u6ca1\u6709\u53d8\u5316\u5feb \uff084\uff09\u9664\u975e\u4f60\u8ba4\u4e3a\u8bfb\u5b8c\u7855\u58eb\u540e\u81ea\u5df1\u80fd\u53d8\u5f97\u66f4\u5f3a
    3. \u7533\u8bf7\u54ea\u91cc\uff1a\uff081\uff09\u9996\u5148\u8981\u8003\u8651\u5b66\u6821\u548c\u5bfc\u5e08\uff0c\u6709\u5efa\u8bae\u79f0\u6700\u597d\u9009\u62e9\u67092\u4f4d\u4ee5\u4e0a\u76f8\u5173\u5bfc\u5e08\u7684\u5b66\u6821\u3002\uff082\uff09\u5730\u5740\u4e5f\u5f88\u91cd\u8981\uff0c\u8fd9\u662f\u672a\u67655\u5e74\u91cc\u4f60\u7684\u5de5\u4f5c\u73af\u5883\u3002\uff083\uff09\u9009\u62e9\u4e0e\u5de5\u4e1a\u754c\u5173\u7cfb\u7d27\u5bc6\u7684\u5730\u65b9
    4. \u51c6\u5907SOP\u548c\u63a8\u8350\u4fe1\uff1a\u89c1\u4e0b\u65b9\u5c0f\u6807\u9898
    5. \u51c6\u5907\u4e09\u7ef4\u6210\u7ee9\uff1a\u5360\u5c0f\u5206\u91cf\u3002\u5176\u4e2d\u6258\u798f\u5fc5\u987b\u8fc7\u7ebf
    6. \u9762\u8bd5\uff1a\u7ed3\u6784\u662f\u201c\u4ecb\u7ecd\u4e00\u4e2a\u4f60\u6700\u60f3\u8bb2\u7684\u7814\u7a76\u9879\u76ee\u201d+\u201c\u4f60\u7684\u7814\u7a76\u5174\u8da3\u662f\u4ec0\u4e48\u201d+\u201c\u8fd8\u6709\u4ec0\u4e48\u95ee\u9898\u201d\u3002\u5927\u90e8\u5206\u60c5\u51b5\u4e0b\u662f\u770b\u4f60\u7684\u89e3\u51b3\u95ee\u9898\u80fd\u529b\u600e\u4e48\u6837\uff0c\u7814\u7a76\u5174\u8da3\u5339\u914d\u4e0d\u5339\u914d\uff0c\u5c11\u90e8\u5206\u60c5\u51b5\u4e5f\u4f1a\u95ee\u5230\u6280\u672f\u7ec6\u8282\u3002\u5728QA\u73af\u8282\uff0c\u53ef\u4ee5\u95ee\u5bf9\u65b9\u4e4b\u524d\u7684\u5de5\u4f5c\uff0c\u53ef\u4ee5\u95ee\u672a\u6765\u4f60\u80fd\u505a\u7684\u5de5\u4f5c\uff0c\u53ef\u4ee5\u95ee\u9879\u76ee\uff0c\u95ee\u5b66\u6821\u3002\u4e0d\u77e5\u9053\u7684\u5c31\u8bf4\u4e0d\u77e5\u9053\u3002
    7. (Prof Dragomir Radev@Yale)\u00a0Advice for PhD Applications, Faculty Applications, etc\u00a0(2023). [List of Suggestions]
    1. [(Roma Patel PhD@Brown, Prof Nathan Schneider@Georgetown University)\u00a0PhD Application Series of the NLP Highlights Podcast)\u00a0(2021). [Podcast] (A new series they launched that addresses all aspects of PhD application. Besides, it is just a great podcast in general that talks about recent NLP advances)
    2. (Albert Webson et al., PhDs@Brown University)\u00a0Resources for Underrepresented Groups, including Brown's Own Applicant Mentorship Program\u00a0(2020, but we will keep updating it throughout the 2021 application season.) [List of Resources]
    3. A Princeton CS Major's Guide to Applying to Graduate School. [List of suggestions]
    4. (Tim Dettmers, PhD@UW)\u00a0Machine Learning PhD Applications \u2014 Everything You Need to Know\u00a0(2018). [Guide]
    1. (Kalpesh Krishna, PhD@UMass Amherst)\u00a0Grad School Resources\u00a0(2018). [Article] (This list lots of useful pointers!)
    2. (Prof\u00a0Mor Harchol-Balter@CMU)\u00a0Applying to Ph.D. Programs in Computer Science\u00a0(2014). [Guide]
    1. (CS Rankings)\u00a0Advice on Applying to Grad School in Computer Science. [Pointers]
    2. (Prof Scott E. Fahlman@CMU)\u00a0Quora answers on the LTI program at CMU\u00a0(2017). [Article] ---------------------------------------------------------------------------------------
    "},{"location":"App/nlp_phd/#_4","title":"\u600e\u6837\u9009\u62e9\u5b66\u6821/\u9879\u76ee\uff1f","text":"
    1. (Nelson Liu, PhD@Stanfard)\u00a0Student Perspectives on Applying to NLP PhD Programs\u00a0(2019). [Suggestions Based on Surveys]
    2. \u6295\u591a\u5c11\u6240\u5b66\u6821\uff1a8\uff5e13\u6240
    "},{"location":"App/nlp_phd/#sop","title":"\u600e\u6837\u51c6\u5907SOP\uff1f","text":"
    1. (Nelson Liu, PhD@Stanfard)\u00a0Student Perspectives on Applying to NLP PhD Programs\u00a0(2019). [Suggestions Based on Surveys]
    2. \u516b\u6708\u4efd\u5f00\u59cb\u5199\u7684\u6700\u591a
    3. SOP\u5e94\u5f53\u63cf\u8ff0\u4f60\u7684\u7814\u7a76\u7ecf\u5386\uff0c\u8be6\u7ec6\u4ecb\u7ecd\u505a\u8fc7\u7684\u7814\u7a76\u7684\u5177\u4f53\u8fc7\u7a0b\u3001\u7814\u7a76\u6bcf\u4e00\u6b65\u7684\u7ec6\u8282\uff0c\u8fd9\u6837\u6bd4\u8f83\u65b9\u4fbf\u8bc4\u59d4\u4f30\u8ba1\u4f60\u7814\u7a76\u7684\u4ef7\u503c\uff0c\u8ba9\u4ed6\u4eec\u77e5\u9053\u4f60\u660e\u767d\u81ea\u5df1\u7684\u7814\u7a76\u6bcf\u4e00\u6b65\u90fd\u5728\u505a\u4ec0\u4e48\u3002\u4e4b\u540e\uff0c\u4f60\u5e94\u5f53\u4ece\u6574\u4e2a\u7814\u7a76\u751f\u6daf\u7684\u89c6\u89d2\u6765\u4ecb\u7ecd\u4f60\u4e4b\u524d\u7684\u5de5\u4f5c\uff0c\u5e76\u5206\u522b\u4ece\u5177\u4f53\u7684\u7814\u7a76\u5de5\u4f5c\u3001\u4f60\u7684\u7814\u7a76\u5fc3\u5f97\u4e24\u4e2a\u65b9\u9762\u4ecb\u7ecd\u4f60\u7684\u672a\u6765\u5c55\u671b\uff0c\u4ecb\u7ecd\u4f60\u5728phd\u9636\u6bb5\u8981\u505a\u600e\u6837\u7684\u7814\u7a76\u3002
    4. \u6bcf\u6240\u5b66\u6821\u5e94\u8be5\u6295\u4e0d\u4e00\u6837\u7684SOP\uff0c\u53ea\u6539\u6700\u540e\u4e00\u4e24\u6bb5\u4e5f\u6709\u70b9\u5c11\uff0c\u6700\u597d\u6539\u52a8\u5927\u4e00\u4e9b\uff0c\u6295\u5176\u6240\u597d\u3002
    5. \u53ef\u4ee5\u628aSOP\u7ed9recommender\u770b\u4e00\u4e0b
    "},{"location":"App/nlp_phd/#_5","title":"\u600e\u6837\u51c6\u5907\u63a8\u8350\u4fe1\uff1f","text":"
    1. (Nelson Liu, PhD@Stanfard)\u00a0Student Perspectives on Applying to NLP PhD Programs\u00a0(2019). [Suggestions Based on Surveys]
    2. \u9009\u62e9\u63a8\u8350\u4eba\uff081\uff09\u4f60\u5bf9\u63a8\u8350\u4eba\u7684\u719f\u77e5\u7a0b\u5ea6\uff082\uff09\u4f60\u4e0e\u8fd9\u4f4d\u63a8\u8350\u4eba\u5408\u4f5c\u7684\u5de5\u4f5c\u597d\u4e0d\u597d\uff083\uff09\u63a8\u8350\u4eba\u7684\u77e5\u540d\u5ea6\u3002\u56e0\u6b64\u8bfe\u7a0b\u63a8\u6216TA\u63a8\u662f\u4e0d\u597d\u7528\u7684\u3002\u5de5\u4e1a\u754c\u63a8\u662f\u597d\u7528\u7684\uff0c\u5bf9\u4e8e\u8fd9\u79cd\u63a8\u8350\u4fe1\u4f60\u540c\u6837\u9700\u8981\u8bc4\u4f30\u63a8\u8350\u4eba\u7684\u77e5\u540d\u5ea6\u3002
    3. \u9700\u8981\u6ce8\u610f\u77e5\u540d\u7684\u63a8\u8350\u4eba\uff0c\u7ade\u4e89\u7684\u5b66\u751f\u4e5f\u591a\uff0c\u53ea\u4f1a\u63a8\u8350\u6700\u4f18\u79c0\u7684\u5b66\u751f\u3002
    4. \u63d0\u9192\u63a8\u8350\u4eba\u4f60\u7684\u4f18\u70b9\u548c\u5de5\u4f5c\uff0c\u63a8\u8350\u4eba\u5f88\u5fd9\uff0c\u53ef\u80fd\u60f3\u4e0d\u8d77\u6765\u3002\u6ce8\u610f\u5728\u63a8\u8350\u4fe1\u63d0\u4ea4\u622a\u6b62\u524d1\u661f\u671f\u548c2\u661f\u671f\u5206\u522b\u90ae\u4ef6\u63d0\u9192\u63a8\u8350\u4eba\u63d0\u4ea4\u63a8\u8350\u4fe1\u3002
    "},{"location":"App/nlp_phd/#_6","title":"\u524d\u63d0\u6761\u4ef6\uff1a\u6691\u7814","text":"
    1. (Andrew Kuznetsov, PhD@CMU)\u00a0CS/HCI PhD Opportunity Tracker from Twitter\u00a0(Developed in 2021).\u00a0http://www.andrewkuz.net/hci-opportunities-2022.html
    2. (Eugene Vinitsky, PhD@UC Berkeley)\u00a0A Guide to Cold Emailing\u00a0(2020). [Article]
    3. (Prof Shomir Wilson@Penn State University)\u00a0Guide for Interacting With Faculty\u00a0(2018). [Suggestions]
    4. (Prof Shomir Wilson@Penn State University)\u00a0Reference Letter Procedure. [Suggestions]
    "},{"location":"App/nlp_phd/#_7","title":"\u524d\u63d0\u6761\u4ef6\uff1a\u5de5\u6b32\u5584\u5176\u4e8b\uff0c\u5fc5\u5148\u5229\u5176\u5668","text":""},{"location":"App/nlp_phd/#_8","title":"\u53e6\u4e00\u79cd\u9009\u62e9\uff1a\u8f6f\u4ef6\u5f00\u53d1\u5de5\u7a0b\u5e08","text":""},{"location":"App/nlp_phd/#phd_2","title":"\u7b2c\u4e8c\u9636\u6bb5\uff1a\u600e\u6837\u505a\u4e00\u4e2a\u597dPHD\uff1f","text":""},{"location":"App/nlp_phd/#_9","title":"\u7efc\u5408\u6307\u5bfc","text":"
    1. (Prof Isabelle Augenstein@UCopenhagen)\u00a0Increasing Well-Being in Academia\u00a0(2020). [Suggestions]
    2. (Sebastian Ruder@DeepMind)\u00a010 Tips for Research and a PhD\u00a0(2020) . [Suggestions]
    3. (Maxwell Forbes, PhD@UW)\u00a0Every PhD Is Different. [Suggestions]
    4. (Prof Mark Dredze@JHU, Prof Hanna M. Wallach@UMass Amherst)\u00a0How to be a successful PhD student (in computer science (in NLP/ML)). [Suggestions]
    5. (Andrej Karpathy)\u00a0A Survival Guide to a PhD\u00a0(2016). [Suggestions]
    6. be \u201cshe\u2019s the person who did X\u201d
    7. \u4e0d\u8981\u628aphd\u5f53\u4f5c\u5199paper\uff0c\u4f60\u8981\u628a\u81ea\u5df1\u5f53\u6210\u8be5\u9886\u57df\u7684\u4e00\u5458\uff0c\u8981\u63a8\u52a8\u9886\u57df\u7684\u8fdb\u5c55\u3002
    8. (Prof Kevin Gimpel@TTIC)\u00a0Kevin Gimpel's Advice to PhD Students. [Suggestions]
    9. (Prof Marie desJardins@Simmons University)\u00a0How to Succeed in Graduate School: A Guide for Students and Advisors\u00a0(1994). [Article] [Part II]
    10. (Prof Eric Gilbert@UMich)\u00a0Syllabus for Eric\u2019s PhD students\u00a0(incl. Prof's expectation for PhD students). [syllabus]
    11. (Marek Rei, Lecturer@Imperial College London)\u00a0Advice for students doing research projects in ML/NLP\u00a0(2022). [Suggestions]
    12. (Prof H.T. Kung@Harvard)\u00a0Useful Thoughts about Research\u00a0(1987). [Suggestions]
    13. (Prof Phil Agre@UCLA)\u00a0Networking on the Network: A Guide to Professional Skills for PhD Students\u00a0(last updated: 2015). [Suggestions] --------------------------------------------------------------------------------------------------------------------------------------
    14. (Prof Stephen C. Stearns@Yale)\u00a0Some Modest Advice for Graduate Students. [Article]
    15. (Prof Tao Xie@UIUC)\u00a0Graduate Student Survival/Success Guide. [Slides]
    16. (Mu Li@Amazon)\u00a0\u535a\u58eb\u8fd9\u4e94\u5e74\u00a0(A Chinese article about five years in PhD at CMU). [Article]
    17. (Karl Stratos)\u00a0A Note to a Prospective Student. [Suggestions]
    "},{"location":"App/nlp_phd/#llmnlp","title":"\u70ed\u70b9\u8bdd\u9898\uff1aLLM\u65f6\u4ee3\u7684NLP\u7814\u7a76","text":"
    1. (UMich; led by Prof Rada Mihalcea)\u00a0A PhD Student's Perspective on Research in NLP in the Era of Very Large Language Models\u00a0(2023). [Paper]
    2. Multilinguality and Low-resource Languages ------------------------------------------
    3. Reasoning ---------
    4. Knowledge Bases ---------------
    5. Language Grounding ------------------
    6. Computational Social Science
    7. Child Language Acquisition
    8. Non-verbal Communication
    9. Synthetic Datasets
    10. Interpretability
    11. Efficient NLP
    12. NLP in education
    13. NLP in healthcare
    14. NLP and ethics
    15. (Prof Julian Togelius@NYU, Prof Georgios Yannakakis@UMalta)\u00a0Choose Your Weapon: Survival Strategies for Depressed AI Academics Julian Togelius, Georgios N. Yannakakis\u00a0(2023). [Tweet] [Paper]
    "},{"location":"App/nlp_phd/#idea","title":"\u627e\u5230\u597d\u7684\u7814\u7a76Idea","text":"
    1. (Prof Jia-Bin Huang@UMaryland)\u00a0How to come up with research ideas?\u00a0(2021). [Suggestions]
    1. (John Schulman, co-founder of OpenAI)\u00a0An Opinionated Guide to ML Research (e.g., horning your taste)\u00a0(2020). [Suggestions]

    Interesting snippets: \"Goal-driven. Develop a vision of some new AI capabilities you\u2019d like to achieve, and solve problems that bring you closer to that goal.\", \"If you are working on incremental ideas, be aware that their usefulness depends on their complexity.\", \"Consider how the biggests bursts of impactful work tend to be tightly clustered in a small number of research groups and institutions. That\u2019s not because these people are dramatically smarter than everyone else, it\u2019s because they have a higher density of expertise and perspective, which puts them a little ahead of the rest of the community, and thus they dominate in generating new results.\", \"Early on in your career, I recommend splitting your time about evenly between textbooks and papers. You should choose a small set of relevant textbooks and theses to gradually work through, and you should also reimplement the models and algorithms from your favorite papers.\" 3. (Prof Fei-Fei Li@Stanford)\u00a0De-Mystifying Good Research and Good Papers\u00a0(2014). [Suggestions]

    Interesting snippets: \"This means publishing papers is NOT about \u201cthis has not been published or written before, let me do it\u201d, nor is it about \u201clet me find an arcane little problem that can get me an easy poster\u201d. It\u2019s about \u201cif I do this, I could offer a better solution to this important problem,\u201d or \u201cif I do this, I could add a genuinely new and important piece of knowledge to the field.\u201d You should always conduct research with the goal that it could be directly used by many people (or industry). In other words, your research topic should have many \u2018customers\u2019, and your solution would be the one they want to use. A good research project is not about the past (i.e. obtaining a higher performance than the previous N papers). It\u2019s\u00a0about the future (i.e. inspiring N future papers to follow and cite you, N->\\inf).\"

    "},{"location":"App/nlp_phd/#_10","title":"\u8bfb\u6587\u7ae0\u7684\u5de5\u5177","text":""},{"location":"App/nlp_phd/#_11","title":"\u8bfb\u6587\u7ae0","text":"
    1. (Prof Srinivasan Keshav@Cambridge)\u00a0How to Read a Paper\u00a0(2007). [Suggestions]
    1. (Prof Jason Eisner@JHU)\u00a0How to Read a Technical Paper\u00a0(2009). [Suggestions]
    1. (Prof Emily M. Bender@UW)\u00a0Critical Reading\u00a0(2003). [Suggestions]
    2. \u6279\u5224\u6027\u9605\u8bfb\u662f\u5728\u9605\u8bfb\u4e2d\u79ef\u6781\u6295\u5165\u6587\u7ae0\u7684\u8fc7\u7a0b\u3002\u4f60\u53ef\u4ee5\u5728\u9605\u8bfb\u8fc7\u7a0b\u4e2d\u95ee\u4ee5\u4e0b\u95ee\u9898\uff1a
    3. \u5b9e\u9a8c\u6587\u7ae0\uff1a
    4. \u6559\u79d1\u4e66\u6587\u7ae0\uff0c\u6982\u5ff5\u8bf4\u660e\u6587\u7ae0
    5. \u671f\u520a\u6742\u5fd7\u4e2d\u7684\u8bf4\u7406\u6027\u6587\u7ae0
    "},{"location":"App/nlp_phd/#_12","title":"\u5199\u6587\u7ae0","text":"
    1. (Prof Jason Eisner@JHU)\u00a0How to write a paper?\u00a0(2010). [Suggestions]
    2. (Simon Peyton Jones@Microsoft)\u00a0How to write a great research paper: Seven simple suggestions\u00a0(2014). [Slides] [Talk]
    3. \u5199\u6587\u7ae0\u662f\u5e2e\u52a9\u5efa\u7acb\u7814\u7a76\u7684\u7b2c\u4e00\u6b65\uff0c\u800c\u4e0d\u662f\u4e00\u79cd\u6c47\u62a5\u7814\u7a76\u7684\u673a\u5236
    4. \u4e0d\u662f\u53ea\u6709\u597d\u7684idea\u80fd\u5199\uff0c\u968f\u4fbf\u4ec0\u4e48idea\u90fd\u53ef\u4ee5\u5199\u4e0b\u6765\uff0c\u7136\u540e\u8ddf\u522b\u4eba\u8c08\u4e00\u8c08
    5. \u4e00\u7bc7paper\u4e00\u4e2aidea\uff0c\u80fd\u591f\u6e05\u6670\u8868\u8fbe\u3002\u6bd4\u5982\u6709\u8fd9\u79cd\u53e5\u5f0f\u201cThe main idea of this paper is\u2026\u201d \u201cIn this section we present the main contributions of this paper.\u201d
    6. \u8981\u5f3a\u8c03\u4f60\u7684contribution\uff0c\u5728introduction\u91cc\u5f3a\u8c03\u3002introduction\u5c31\u662f\u7528\u6765\u63cf\u8ff0\u95ee\u9898+\u4ecb\u7ecd\u8d21\u732e\u7684\u3002
    7. \u53ef\u4ee5\u5148\u5217\u4e3e\u51fa\u6240\u6709\u7684contribution\uff0c\u7136\u540e\u7528contribution\u9a71\u52a8\u6574\u7bc7\u6587\u7ae0
    8. introduction\u91cc\u7684\u201c\u540e\u6587\u7ed3\u6784\u5982\u4e0b\u2026.\u201d\u5e94\u5f53\u7528\u5c06\u6765\u65f6\uff08\u5b58\u7591\uff09
    9. \u600e\u6837\u5199\u76f8\u5173\u7814\u7a76\uff1a
    10. \u600e\u6837\u5199\u7ed3\u679c\uff1a\u628a\u8bfb\u8005\u653e\u5728\u7b2c\u4e00\u4f4d
    11. \u8bb2\u7ed9\u522b\u4eba\u542c\uff0c\u95ee\u8bfb\u8005\u7684\u610f\u89c1\uff0c\u95ee\u8bc4\u59d4\u7684\u610f\u89c1\uff08\u975e\u5e38\u96be\u4f46\u975e\u5e38\uff0c\u975e\u5e38\uff0c\u975e\u5e38\u91cd\u8981\uff09
    12. \u7528\u4e3b\u52a8\u8bed\u6c14\uff08we can see\uff09\u4e0d\u8981\u7528\u88ab\u52a8\u8bed\u6c14\uff08it can be seen that\uff09\uff0c\u4f1a\u4f7f\u6587\u7ae0\u8bfb\u8d77\u6765\u5f88\u6b7b
    13. \u7528\u7b80\u5355\u8bcd\uff0c\u7b80\u5355\u8868\u8fbe
    14. (Prof Jennifer Widom@Stanford)\u00a0Tips for Writing Technical Papers\u00a0(2006). [Suggestions]
    15. (Prof Shomir Wilson@Penn State University)\u00a0Guide for Scholarly Writing. [Suggestions]
    16. (Prof Jia-Bin Huang@U Maryland)\u00a0How to write the introduction (and also the What-Why-How figures). [Tweet]
    17. (Prof Jia-Bin Huang@U Maryland)\u00a0How to write a rebuttal for a conference?\u00a0[Tweet]
    18. (Prof Michael Black@Max Planck Institute)\u00a0Twitter Thread about \"Writing is laying out your logical thoughts\". [Tweet]
    19. (Prof Shomir Wilson@Penn State University)\u00a0Guide for Citations and References\u00a0[Suggestions]
    20. (Carmine Gallo, a bestselling author)\u00a0The Storytellers Secret\u00a0(2016). [Video]Takeaways: Writing the Introduction section and giving talks can also be like telling a Hollywood story: the setting (what problem we are solving; how important it is), the villian (how difficult this problem is; how previous work cannot solve it well), and the superhero (what we propose). For giving talks, starting with personal stories (e.g., a story of grandma telling the kid not to drink and persist the right thing leading to the person's life pursuit on social justice) is very helpful to get the audience involved.
    21. (Maxwell Forbes@UW)\u00a0Figure Creation Tutorial: Making a Figure 1\u00a0(2021). [Suggestions]
    22. UI design as a medium of thought: see Michael Nielsen's\u00a0explanation of why UI is important for science,\u00a0Bret Victor's work,\u00a0Miegakure\u00a0that visualizes a 4D environment.
    23. (Prof Jia-Bin Huang@U Maryland)\u00a0How to write math in a paper?\u00a0(2023). [Tweet]

    \u672a\u5b8c\u5f85\u7eed\uff1a

    "},{"location":"App/nlp_phd/#_13","title":"\u7b2c\u4e09\u9636\u6bb5\uff1a\u5de5\u4e1a\u754c\u7814\u7a76\u8005\u7684\u751f\u6d3b","text":""},{"location":"App/nlp_phd/#_14","title":"\u7b2c\u56db\u9636\u6bb5\uff1a\u5982\u4f55\u83b7\u5f97\u6559\u804c\uff1f\u5982\u4f55\u505a\u4e00\u4e2a\u597d\u5bfc\u5e08\uff1f","text":""},{"location":"App/nlp_phd/#nlp","title":"\u7b2c\u4e94\u9636\u6bb5\uff1a\u89c4\u5212NLP\u7684\u7814\u7a76\u751f\u6daf","text":""},{"location":"App/nlp_phd/#_15","title":"\u4e86\u89e3\u66f4\u591a","text":""},{"location":"App/nlp_phd/#_16","title":"\u5f15\u7528","text":"
    @misc{resources2021jin,\n  author = {Zhijing Jin},\n  title = {Resources to Help Global Equality for PhDs in NLP},\n  year = {2021},\n  publisher = {GitHub},\n  journal = {GitHub repository},\n  howpublished = {\\url{https://github.com/zhijing-jin/nlp-phd-global-equality}}\n}\n
    "},{"location":"App/zju_ling_cs/","title":"ZJU English Major to CS&NLP","text":"

    \u26a0\ufe0f \u611f\u89c9\u5f53\u65f6\u5199\u5f97\u4e0d\u662f\u5f88\u597d\uff0c\u73b0\u5728\u5f88\u591a\u89c2\u5ff5\u53c8\u6709\u4e9b\u6539\u53d8\uff0c\u53ef\u80fd24\u5e74\u6625\u8282\u671f\u95f4\u7a7a\u4e0b\u6765\u4f1a\u518d\u8ba4\u771f\u6539\u4e00\u4e0borz

    "},{"location":"App/zju_ling_cs/#_1","title":"\u672c\u6587\u6863\u662f\u4ec0\u4e48\uff1f","text":"

    \u7b14\u8005\u8f6c\u4e13\u4e1a\u8e29\u8fc7\u7684\u5751\u548c\u5bf9\u540e\u8f88\u7684\u5efa\u8bae\uff0c\u771f\u5fc3\u60f3\u5efa\u7acb\u8d77ZJU\u5185\u90e8\u826f\u597d\u7684\u4f20\u5e2e\u5e26\u6c1b\u56f4\u3002

    "},{"location":"App/zju_ling_cs/#_2","title":"\u89c2\u5ff5&\u4e60\u60ef\u95ee\u9898","text":"

    \u5728\u5177\u4f53\u5efa\u8bae\u524d\u9996\u5148\u56de\u7b54\u4e00\u4e9b\u5e38\u6709\u7684\u62c5\u5fe7+\u505a\u4e00\u4e9b\u4e60\u60ef\u65b9\u9762\u7684\u63d0\u9192

    "},{"location":"App/zju_ling_cs/#cs","title":"\u6211\u80fd\u8f6c\u5230CS\u5417\uff1f","text":"

    \u80fd\u3002\u6709\u5982\u4e0b\u6848\u4f8b\uff08\u4e0d\u4ee3\u8868\u6240\u6709\u4eba\u613f\u610f\u88ab\u8054\u7cfb\u5230\uff0c\u4e0d\u4fdd\u8bc1\u63d0\u4f9b\u8054\u7cfb\u65b9\u5f0f\uff09

    "},{"location":"App/zju_ling_cs/#nlp","title":"NLP\u4e0d\u8981\u8bed\u8a00\u5b66\u540c\u5b66\u5417\uff1f","text":""},{"location":"App/zju_ling_cs/#_3","title":"\u660e\u786e\u4e00\u4e2a\u5341\u5e74\u5230\u4e09\u5341\u5e74\u7684\u957f\u8fdc\u89c4\u5212\uff0c\u4e3b\u8981\u662f\u4ee5\u4e0b\u51e0\u4e2a\u95ee\u9898","text":"\u95ee\u9898 \u6211\u7684\u56de\u7b54 \u6211\u8981\u5728\u54ea\u91cc\u751f\u6d3b\uff0c\u56fd\u5185\u8fd8\u662f\u56fd\u5916\uff1f \u6211\u8f6cCS\u662f\u66f4\u591a\u56e0\u4e3a\u559c\u6b22\u7406\u5de5\u79d1\uff0c\u8fd8\u662f\u56e0\u4e3a\u559c\u6b22\u5de5\u8d44\uff1f \u6211\u8981\u8fdb\u5de5\u4e1a\u754c\uff0c\u53bb\u79d1\u6280\u4e92\u8054\u7f51\u516c\u53f8\u5de5\u4f5c\uff1b\u8fd8\u662f\u7559\u5728\u5b66\u672f\u754c\uff0c\u5728\u9ad8\u6821\u6216\u7814\u7a76\u6240\u5de5\u4f5c\uff1f \u6211\u8981\u505aCS\u9664NLP\u5176\u5b83\u7684\u65b9\u5411\uff0c\u5982\u7cfb\u7edf\u3001\u7f51\u7edc\u3001\u5b89\u5168\u3001CV\u6216\u7eaf\u6df1\u5ea6\u5b66\u4e60\u7406\u8bba\u65b9\u5411\uff1b\u8fd8\u662f\u505a\u504f\u6df1\u5ea6\u5b66\u4e60\u7684NLP\u65b9\u5411\uff1b\u8fd8\u662f\u505a\u504f\u8bed\u8a00\u5b66\u7684NLP\u65b9\u5411\uff1f \u6211\u6709\u591a\u5c11\u7ecf\u8d39\uff1f \u6211\u591a\u5c11\u5e74\u5185\u9700\u8981\u8f6c\u597d\u4e13\u4e1a\uff1f"},{"location":"App/zju_ling_cs/#_4","title":"\u89c4\u5212\u4eba\u751f\u4e2d\u8be5\u505a/\u4e0d\u8be5\u505a\u7684\u4e8b\u7684\u4e24\u4e2a\u51c6\u5219","text":""},{"location":"App/zju_ling_cs/#cs_1","title":"\u628a\u81ea\u5df1\u770b\u6210CS\u4eba","text":""},{"location":"App/zju_ling_cs/#cs_2","title":"CS\u6709\u8001\u5e08\u540c\u5b66\u770b\u4e0d\u8d77\u6211\u600e\u4e48\u529e\uff1f","text":""},{"location":"App/zju_ling_cs/#cs_3","title":"\u5b66\u4e0d\u597dCS\uff0c\u662f\u4e0d\u662f\u56e0\u4e3a\u5b66\u82f1\u8bed\u8bfe\u4f7f\u6211\u53d8\u4e0d\u806a\u660e\u4e86\uff1f","text":"

    \u4e0d\u662f\u7684\u3002 - \u7406\u8bba\u4e0a\u662f\u5b8c\u5168\u53ef\u4ee5\u5b66\u597d\u7684\u3002NLP\u5708\u6709\u5f88\u591a\u7814\u7a76\u8005\u8bfb\u8fc7\u8bed\u8a00\u5b66\u548cCS\u53cc\u672c\u79d1\uff0c\u4ee3\u8868AP\u6709AllenNLP Noah Smitch, Colimbia University Zhou Yu\uff08ZJU\u7684\u672c\u79d1\uff09. \u8bfb\u8bed\u8a00\u5b66\u6ca1\u6709\u803d\u8bef\u4ed6\u4eec\u7684\u8111\u5b50\uff0c\u53cd\u800c\u662f\u4e00\u4e2a\u5f88\u597d\u7684idea\u6765\u6e90\u3002\u6211\u611f\u89c9\u6709\u5f88\u591a\u5929\u624d\u7684\u6848\u4f8b\u53ef\u4ee5\u8bc1\u660e\u4eba\u7684\u77e5\u8bc6\u5bb9\u91cf\u548c\u5b66\u4e60\u80fd\u529b\u4e0a\u9650\u662f\u8d85\u51fa\u5927\u5bb6\u60f3\u8c61\u7684\uff0c\u5b66\u4e24\u4e2a\u4e13\u4e1a\u8fd9\u4ef6\u5c0f\u4e8b\u8fdc\u8fdc\u5728\u8fd9\u4e2a\u4e0a\u9650\u4e4b\u4e0b\u3002\u6211\u6c38\u8fdc\u8ba4\u4e3a\u6bc5\u529b\u548c\uff08\u5bf9\u81ea\u5df1\u4eba\u751f\u4e0a\u9650\u7684\uff09\u60f3\u8c61\u529b\u6bd4\u5f53\u524d\u80fd\u529b\u66f4\u6709\u51b3\u5b9a\u4f5c\u7528\u3002 - \u5b9e\u9645\u82f1\u8bed\u4e13\u4e1a\u53bbCS\u53cc\u4e13\u4e1a\u5bb9\u6613\u5403\u4f4e\u7ee9\u70b9\u7684\u539f\u56e0\uff0c\u5f80\u5f80\u4e0d\u662f\u80fd\u529b\u667a\u529b\u4e0d\u8db3\uff0c\u800c\u662f\u6709\u4fe1\u606f\u5dee\uff1a\u751f\u6d3b\u5728\u6587\u79d1\u7684\u6563\u6f2b\u73af\u5883\u4e2d\u96be\u4ee5\u77e5\u9053\u5927\u90e8\u5206\u540c\u5b66\u7684\u81ea\u5b66\u8fdb\u5ea6\uff0c\u548c\u5982\u679c\u67d0\u4e9b\u8bfe\u7a0b\u6709\u5b9e\u8df5\u4e0a\u7684\u5751\uff0c\u6ca1\u6709\u4e0e\u5927\u90e8\u961f\u4e00\u8d77\u5b66\u4e60\u7684\u540c\u5b66\u5c31\u96be\u4ee5\u77e5\u9053\u600e\u6837\u7075\u6d3b\u5e94\u5bf9\u3002\u6240\u4ee5\u5efa\u8bae\u4e0e\u540c\u5b66\u4e00\u8d77\u5b66\u4e60\uff0c\u53c2\u89c1\u4e0b\u4e00\u6761\u3002

    "},{"location":"App/zju_ling_cs/#cscs","title":"\u8981\u62e5\u6709\u4e00\u4e2a\u6216\u51e0\u4e2a\u540c\u6837\u8de8\u4e13\u4e1a\u5b66CS\u7684\u670b\u53cb\uff0c\u6216\u76f4\u63a5\u878d\u5165\u540c\u4e00\u7ea7\u7684CS\u672c\u79d1\u751f\u5708\u5b50\u91cc\u3002\u5982\u679c\u5b9e\u5728\u6ca1\u6709\uff0c\u4e00\u4e9b\u5176\u5b83\u5de5\u79d1\u7684\u540c\u5b66\u4e5f\u53ef\u4ee5\u3002","text":"

    \u540c\u5b66\u7684\u7528\u5904\u6709\uff1a - \u5e2e\u52a9\u4f60\u8ddf\u4e0a\u5b66\u4e60\u8282\u594f\u3002CS\u7684\u751f\u6d3b\u8282\u594f\u662f\u82f1\u8bed\u4e13\u4e1a\u76842\u500d\uff0c\u662f\u7406\u79d1\u4e13\u4e1a\u76841.5\u500d\uff0c\u5982\u679c\u51b3\u5b9a\u8f6c\u4e13\u4e1a\u662f\u9700\u8981\u4e3b\u52a8\u63d0\u9ad8\u4e00\u4e0b\u751f\u6d3b\u8282\u594f\u7684\uff0c\u505a\u4e8b\u79ef\u6781\u4e00\u70b9\uff0c\u544a\u522b\u62d6\u5ef6\u3002 - \u4e92\u76f8\u63a8\u8350\u597d\u7684\u81ea\u5b66\u8d44\u6599\uff0c\u4e92\u76f8\u5206\u4eab\u7b14\u8bb0\u548c\u8ba8\u8bba\u9898\u76ee\uff0c\u5206\u5de5\u6574\u7406\u671f\u672b\u590d\u4e60\u8d44\u6599\uff0c\u671f\u672b\u4e92\u76f8\u63d0\u95ee\uff0c\u5f62\u6210\u81ea\u5b66\u6c1b\u56f4\uff0c\u8282\u7701\u4e00\u4e9b\u8e29\u5751\u65f6\u95f4\u3002 - \u5982\u679c\u67d0\u4e9b\u8bfe\u7a0b\u5b89\u6392\u6709\u6559\u5b66\u4e8b\u6545\uff0c\u4f60\u53ef\u4ee5\u53ca\u65f6\u77e5\u9053\u5927\u90e8\u5206\u540c\u5b66\u662f\u600e\u6837\u5e94\u5bf9\u7684\uff0c\u53ca\u65f6\u8c03\u6574\u81ea\u5df1\u7684\u5e94\u5bf9\u63aa\u65bd\uff0c\u9632\u6b62\u5982\u679c\u6210\u7ee9\u5360\u6bd4\u7a81\u7136\u8c03\u6574\uff0c\u81ea\u5df1\u5c06\u52aa\u529b\u82b1\u5728\u4e86\u6700\u540e\u5360\u6210\u7ee9\u6bd4\u91cd\u5f88\u5c0f\u7684\u5730\u65b9\u3002

    "},{"location":"App/zju_ling_cs/#_5","title":"\u8981\u591a\u8bb0\u7b14\u8bb0","text":"

    \u8bb0\u7b14\u8bb0\u662f\u8d39\u66fc\u5b66\u4e60\u6cd5\u7684\u6295\u5165\u4ea7\u51fa\u6bd4\u6700\u9ad8\u7684\u5b9e\u8df5\u5f62\u5f0f\uff0c\u5373\u65e2\u5e2e\u52a9\u68c0\u67e5\u7406\u89e3\uff0c\u7b14\u8bb0\u53c8\u9020\u798f\u540e\u4eba\u3002\u4f60\u53ef\u4ee5\u79c9\u627f\u5f00\u6e90\u7cbe\u795e\uff0c\u50cf\u524d\u8f88\u4e00\u6837\u591a\u5c06\u7b14\u8bb0\u516c\u5e03\u9020\u798f\u540e\u4eba\uff08\u4e0d\u8fc7\u8bf7\u9075\u5b88\u8bda\u4fe1\u5b88\u5219\uff09\u3002\u975e\u5e38\u5e0c\u671bZJU\u80fd\u9010\u6e10\u5f62\u6210\u8f83\u597d\u7684\u4f20\u5e2e\u5e26\u6c1b\u56f4\uff0c\u8ba9\u540e\u8f88\u4e5f\u6709\u826f\u597d\u6821\u53cb\u8d44\u6e90\u53ef\u4eab\u7528\u3002

    "},{"location":"App/zju_ling_cs/#_6","title":"\u6211\u53ef\u4ee5\u4ee5\u600e\u6837\u7684\u8eab\u4efd\u672c\u79d1\u6bd5\u4e1a\uff1f\u6211\u6709\u54ea\u4e9b\u53ef\u884c\u7684\u51fa\u8def\uff1f","text":"

    \u4ee5\u4e0b\u8fd9\u4e9b\u90fd\u662f\u53ef\u80fd\u505a\u5230\u7684\uff0c\u6211\u4e5f\u5206\u522b\u5217\u51fa\u4e86\u6211\u8ba4\u4e3a\u9700\u8981\u51c6\u5907\u7684\u80cc\u666f\u3002 - \u51fa\u56fdms\uff1a\u7ee9\u70b9\uff0c\u6691\u7814/\u5b9e\u4e60 - \u51fa\u56fd\u76f4\u63a5phd\uff1a\u6691\u7814\uff0cpaper - \u672c\u6821\u76f4\u535a\uff1a\u7ee9\u70b9\uff0c\u8fdb\u672c\u6821\u7ec4\uff0c\u590f\u4ee4\u8425\uff0cpaper - \u8de8\u6821\u76f4\u535a\uff1a\u7ee9\u70b9\uff0c\u5bf9\u65b9\u6821\u590f\u4ee4\u8425\uff0cpaper - \u5de5\u4f5c\uff1a\u5237\u9898\uff0c\u5b9e\u4e60 \u5176\u4e2d\u6211\u8ba4\u4e3a\u503c\u5f97\u6ce8\u610f\u7684\u8fd8\u6709\uff0c\u5177\u4f53\u6700\u597d\u7531\u8bfb\u8005\u518d\u54a8\u8be2\u76f8\u5e94\u8eab\u4efd\u7684\u4eba\u7684\u5efa\u8bae\u3002\u672c\u6761\u9002\u7528\u524d\u9762\u6240\u8ff0\u201c20\u4e2a\u4eba\u5efa\u8bae\u201d\u51c6\u5219\u3002

    "},{"location":"App/zju_ling_cs/#_7","title":"\u8bfe\u7a0b","text":""},{"location":"App/zju_ling_cs/#cs_4","title":"CS\u5fc5\u4fee\u8bfe","text":"

    \u9996\u5148\u8981\u660e\u786e\u4e00\u4e2a\u8ba4\u77e5\u95ee\u9898\uff1a\u8bfbCS\u53cc\u5b66\u4f4d\u662f\u4e00\u4e2a\u539f\u5b50\u6027\u7684\u4e8b\u52a1\uff0c\u8981\u4e48\u4e0d\u8bfb\uff0c\u8981\u4e48\u6309\u9700\u6c42\u8bfb\u5b8c\u6216\u8f85\u4fee\u6216\u53cc\u5b66\u4f4d\uff0c\u8fd9\u4e24\u79cd\u9009\u62e9\u90fd\u662f\u6295\u5165\u4ea7\u51fa\u6bd4\u8f83\u9ad8\u7684\uff1b\u6295\u5165\u4ea7\u51fa\u6bd4\u6700\u4f4e\u7684\u662f\u8bfb\u4e00\u534a\uff08\u5fae\u8f85\u4fee\u6216\u53cc\u4e13\u4e1a\uff09\u3002 \u8be5\u56fe\u4e2d\u9664\u6570\u7406\u57fa\u7840\u6a21\u5757\u4e0d\u662f\u53cc\u5b66\u4f4d\u5fc5\u4fee\uff0c\u5176\u5b83\u662f\u5fc5\u4fee\u3002 \uff08\u8fd9\u4e2a\u56fe\u4e0d\u77e5\u9053\u4e3a\u4ec0\u4e48\u6709\u4e2a\u7ea2\u5708\uff0c\u627e\u4e0d\u5230\u539f\u56fe\u4e86\uff0c\u6279\u8bc4cyh\u540c\u5b66\u4e71\u753b\uff09

    \u9009\u4e0d\u4e0aCS\u7684\u8bfe\u600e\u4e48\u529e\uff1f - \u6700\u6709\u6548\uff1a\u8865\u9009+\u5728\u8865\u9009\u7684\u51e0\u5929\u91cc\u7ebf\u4e0b\u53bb\u9009\u8bfe\u529e\u6216\u7ed9\u9009\u8bfe\u529e\u53d1\u90ae\u4ef6\u3002\u674e\u6653\u8001\u5e08\u548c\u5f20\u4f20\u534e\u8001\u5e08\u90fd\u5f88nice\uff0c\u8868\u793a\u81ea\u5df1\u5f88\u60f3\u9009\u8bfe\uff0c\u8ddf\u8001\u5e08\u8bf4\u660e\u539f\u56e0\u3002 - \u7b2c\u4e8c\u6709\u6548\uff1a\u5982\u679c\u4efb\u8bfe\u8001\u5e08\u5728\u8ba1\u9662\u8bdd\u8bed\u6743\u8f83\u5927\uff0c\u8bf7\u4efb\u8bfe\u8001\u5e08\u5e2e\u5fd9\u8ddf\u9009\u8bfe\u529e\u8bf4\uff0c\u80fd\u4fdd\u8bc1\u4f60\u9009\u4e0a\u8be5\u8001\u5e08\u7684\u8bfe\u3002 - \u7b2c\u4e09\u6709\u6548\uff1a\u9009\u8bfe\u65f6\u4e0eCS\u7684\u540c\u5b66\u5546\u91cf\uff0c\u505a\u51fa\u65f6\u95f4\u6b63\u597d\u7684\u4e00\u4e9b\u8bfe\u8868\u3002\u53ef\u80fd\u6d89\u53ca\u5230\u201c\u7528\u4e00\u4e9b\u8bfe\u5835\u4f4f\u53e6\u4e00\u4e9b\u8bfe\u201d\u8fd9\u79cd\u590d\u6742\u64cd\u4f5c\uff0c\u6240\u4ee5\u5408\u4f5c\u6bd4\u8f83\u5212\u7b97\u3002

    \u600e\u4e48\u5b66\uff1f - ZJU\u8bfe\u7a0b\u5171\u4eab\u8ba1\u5212 https://github.com/QSCTech/zju-icicles - \u56fe\u7075\u73ed\u8bfe\u7a0b\u901f\u901a\u8ba1\u5212 https://github.com/ZJU-Turing/TuringCourses - \u4e00\u4f4d\u5b66\u957f\u7684\u4f18\u8d28\u7b14\u8bb0 \u54b8\u9c7c\u6684\u7684\u4ee3\u7801\u7a7a\u95f4\uff01 - \u54b8\u9c7c\u6684\u7684\u4ee3\u7801\u7a7a\u95f4 (xuan-insr.github.io) - \u4e00\u4f4d\u5b66\u957f\u7684\u4f18\u8d28\u7b14\u8bb0 https://github.com/Zhang-Each/CourseNoteOfZJUSE

    "},{"location":"App/zju_ling_cs/#ai","title":"AI","text":"

    AI\u8bfe\u4e00\u822c\u6bd4CS\u8bfe\u597d\u9009\uff0c\u4f46\u662f\u5982\u679c\u9009\u4e0d\u4e0a\u4e5f\u8bf7\u9075\u7167\u4e0a\u6761\u4e2d\u7684\u5efa\u8bae\u3002 \u975e\u5fc5\u8981\u4e0d\u9009AI\u8bfe\uff0cAI\u8bfe\u6700\u5927\u7684\u6536\u83b7\u662f\u5728\u7b80\u5386\u4e0a\u4f5c\u4e3a\u4e00\u4e2a90+\u8bfe\u7a0b\u51fa\u73b0\uff0c\u57fa\u672c\u5b66\u4e0d\u5230\u4e1c\u897f\uff08\u9664\u4e86NLP\u8bfe\u6211\u611f\u89c9\u542c\u8bfe\u6536\u83b7\u633a\u5927\u7684\uff09\uff0c\u4e3b\u8981\u9760\u81ea\u5b66\u540e\u5377\u51fa\u5927\u4f5c\u4e1a\u3002

    "},{"location":"App/zju_ling_cs/#_8","title":"\u8bed\u8a00\u5b66","text":"

    \u56e0\u4e3a\u82f1\u4e13\u57f9\u517b\u65b9\u6848\u8fd8\u662f\u8981\u6c42\u4fee\u5927\u91cf\u4e13\u4e1a\u8bfe\u7684\uff0c\u611f\u89c9\u53ef\u4ee5\u5c3d\u91cf\u628a\u8bed\u8a00\u5b66\u6a21\u5757\u591a\u4fee\u4e00\u70b9\uff0c\u6709\u4e9b\u5728\u8fdb\u7ec4\u7684\u65f6\u5019\u53ef\u80fd\u8fd8\u662f\u8ba4\u53ef\u7684\u3002 \u4ee5\u4e0b\u8bfe\u7a0b\u5982\u679c\u62ff\u4e86\u9ad8\u5206\u503c\u5f97\u5728\u7b80\u5386\u4e0a\u4e00\u63d0 - \u5f53\u4ee3\u8bed\u8a00\u5b66 - \u8bed\u97f3\u5b66 - \u53e5\u6cd5\u5b66 - \u5fc3\u7406\u8bed\u8a00\u5b66 - \u8bed\u4e49\u5b66 - \u8bed\u7528\u5b66 - \u8bed\u6599\u5e93\u8bed\u8a00\u5b66

    "},{"location":"App/zju_ling_cs/#_9","title":"\u6570\u5b66","text":"

    \u5bf9\u4e8ePhD\u3001\u627e\u5de5\u548c\u56fd\u5185\u76f4\u535a\uff1a \u53ef\u80fd\u4e0d\u9700\u8981\u6570\u5b66\u3002\u3002\u3002\u8ba4\u4e3a\u6700\u597d\u4e0d\u8981\u989d\u5916\u9009\u6570\u5b66\u8bfe \u6211\u81f3\u4eca\u9047\u5230\u7684\u8001\u5e08\u6ca1\u6709\u56e0\u4e3a\u6211\u7b80\u5386\u4e0a\u4efb\u4f55\u6570\u5b66\u76f8\u5173\u7684\u4e1c\u897f\u800c\u5f55\u6211\u6216\u62d2\u6211\u7684\uff0c\u90fd\u662f\u53ea\u95ee\u7f16\u7a0b\u3002 CS\u4e13\u4e1a\u8bfe\u91cc\u7684\u79bb\u6563\u6570\u5b66\u548c\u8ba1\u7b97\u7406\u8bba\uff08\u548c\u53ef\u80fd\u8fd8\u6709\u6570\u903b\uff09\u5df2\u7ecf\u8db3\u591f\u57f9\u517b\u6570\u5b66\u601d\u7ef4\u3002 \u5982\u679c\u62c5\u5fc3\u6570\u636e\u5206\u6790\u548c\u7edf\u8ba1\u6280\u80fd\uff0c\u6587\u6570\u91cc\u636e\u8bf4\u5e94\u7528\u7edf\u8ba1\u5b66\u8fd9\u95e8\u8bfe\u7a0b\u6bd4\u9ad8\u7b49\u6570\u5b66\u597d\u4f7f\uff0c\u8fd8\u6709\u673a\u4f1a\u7684\u540c\u5b66\u53ef\u4ee5\u8bd5\u4e00\u4e0b\u3002

    \u5bf9\u4e8ems\uff1a \u786e\u5b9e\u6709\u4e00\u4e9b\u9879\u76ee\u8981\u6c42\u4fee\u8fc7\u4e00\u4e9b\u6570\u5b66\u8bfe\u7a0b\uff0c\u4f8b\u5982\u521a\u770b\u5230SUTD\u7684ISTD ms\u8981\u6c42\u4e24\u5b66\u671f\u5fae\u79ef\u5206\uff0c\u4e00\u5b66\u671f\u7ebf\u4ee3\u548c\u4e00\u5b66\u671f\u6982\u7edf\uff0c\u8fd9\u79cd\u65e0\u7591\u662f\u6bd4\u8f83\u4e0d\u53cb\u597d\u7684\u9879\u76ee\u4e86\u3002 \u4e5f\u6709\u6bd4\u8f83\u53cb\u597d\u7684\u9879\u76ee\uff0c\u5317\u7f8e\u4e00\u4e9b0\u57fa\u7840\u8f6c\u7801\u9879\u76ee\u53ef\u53c2\u7167OpenCSapp\uff0c\u82f1\u56fd\u7684IC\u548cUCL\u5728\u524d\u5e74\u4e5f\u5f00\u4e86\u96f6\u57fa\u7840\u8f6c\u7801\u9879\u76ee\uff0c\u4e0d\u8fc7\u51fa\u8def\u548c\u542b\u91d1\u91cf\u9700\u8981\u81ea\u5df1\u8861\u91cf\uff0c\u8fd8\u662f\u5efa\u8bae\u201c\u54a8\u8be220\u4e2a\u4eba\u201d\u51c6\u5219\u3002\u4ee3\u8868dp\u662f18\u7ea7SJTU\u82f1\u8bed\u4e13\u4e1a\uff0c4\u6bb5\u79d1\u7814\u6216\u4e92\u8054\u7f51\u5382NLP\u4ea7\u54c1\u5b9e\u4e60\uff0c\u5c11\u91cf\u9ad8\u5206\u6570\u5b66\u548c\u7f16\u7a0b\u8bfe\u7a0b\uff0c\u7ee9\u70b990+ \u2192 IC CS ms

    "},{"location":"App/zju_ling_cs/#_10","title":"\u7ee9\u70b9","text":""},{"location":"App/zju_ling_cs/#_11","title":"\u79d1\u7814","text":""},{"location":"App/zju_ling_cs/#nlp_1","title":"\u5982\u4f55\u9009\u9898\uff1fNLP\u6709\u54ea\u4e9b\u65b9\u5411\u53ef\u505a\uff1f","text":"

    \u53c2\u7167\u8fd9\u4e9b\u9876\u4f1a\u90fd\u6709\u4ec0\u4e48track\uff0c\u4e0b\u9762\u662f\u6700\u8fd1\u4e00\u671f\u6bcf\u4e2atrack\u7684best paper - Best Papers - ACL 2023 (aclweb.org) - Best Paper Awards - emnlp 2022 (balhafni.github.io) - Transactions of the Association for Computational Linguistics (transacl.org) - Announcing the NAACL 2022 Best Paper Awards! - NAACL-HLT 2022

    \u7279\u522b\u5730\uff0c\u60f3\u5230NLP\u91cc\u6bd4\u8f83\u7eaf\u8bed\u8a00\u5b66\u7684\u4e3b\u9898/\u65b9\u6cd5\u4e5f\u6709\u4e00\u4e9b\uff0c\u6709\u5982\u4e0b\u51e0\u4e2a \u4e3a\u4ec0\u4e48\u8981\u8bb2\u8fd9\u4e00\u5757\u56e0\u4e3a\u62c5\u5fc3\u4f60\u5728\u9762\u8bd5\u7684\u65f6\u5019\u4f1a\u9700\u8981\u5411\u8001\u5e08\u8bc1\u660e\u4f60\u7684\u53e6\u4e00\u90e8\u5206\u4e13\u4e1a\u77e5\u8bc6\u4e5f\u662f\u6709\u7528\u7684 \u4e00\u822c\u6b27\u6d32\u7684NLP\u4f1a\u504f\u8bed\u8a00\u5b66\u4e00\u70b9 - \u5b9e\u9a8c\u8bed\u97f3\u548c\u97f3\u7cfb\u5b66 - \u7528\u8bed\u8a00\u5b66\u77e5\u8bc6\u505a\u6570\u636e\u548c\u6570\u636e\u589e\u5f3a - AI\u4e2d\u7684\u4f26\u7406\u9053\u5fb7\u95ee\u9898 - \u7a00\u6709\u8bed\u8a00\u6316\u6398

    "},{"location":"App/zju_ling_cs/#_12","title":"\u5982\u4f55\u9009\u5bfc\uff1f","text":"

    \u56fd\u5916\u5bfc\u5e08\uff1a\u5e38\u8bfb\u6bcf\u5e74\u7684\u9876\u4f1a\u6709\u610f\u601d\u8bba\u6587\uff0c\u5e76\u53c2\u7167CSRankings: Computer Science Rankings\uff0c\u5173\u6ce8\u5b66\u672f\u5708\u517b\u597d\u53f7\u540e\u5e38\u5237Twitter \u56fd\u5185\u6821\u5185\u5bfc\u5e08\uff1a\u5982\u679c\u6709\u60f3\u8be2\u95ee\u7684\u5bfc\u5e08\u540d\u5355\u53ef\u4ee5\u90ae\u4ef6\u95ee\u6211 \u9009\u5bfc\u6216\u8005\u8054\u7cfbPhD\u7684\u65f6\u5019\u5982\u679c\u63a5\u5230\u7684\u4efb\u52a1\u662f\u4e8c\u4f5c\u4e09\u4f5c\u5f80\u540e\uff0c\u5f88\u53ef\u80fd\u662f\u6253\u767d\u5de5\uff0c\u57fa\u672c\u53ef\u4ee5\u62d2\u7edd\u3002\u9664\u975e\u4f60\u8ba4\u4e3a\u4f60\u627f\u62c5\u7684\u5de5\u4f5c\u8f83\u4e3a\u91cd\u8981\uff0c\u8001\u5e08\u53ef\u4ee5\u7ed9\u4f60\u63a8\u8350\u4fe1\uff0c\u4e8c\u4f5c\u4e09\u4f5c\u7684\u4f5c\u7528\u53ef\u80fd\u6ca1\u6709\u63a8\u8350\u4fe1\u5927\u3002 \u5982\u679c\u7533\u8bf7PhD\uff0c\u63a8\u8350\u4fe1\u7684\u529b\u5ea6\uff1a\u4f60\u4e0e\u63a8\u8350\u4eba\u7684\u4ea7\u51fa\u5f88\u91cd\u8981+\u76ee\u6807PhD\u5bfc\u8ba4\u8bc6\u7684\u4eba > \u4f60\u4e0e\u63a8\u8350\u4eba\u7684\u4ea7\u51fa\u5f88\u91cd\u8981+\u76ee\u6807PhD\u5bfc\u4e0d\u8ba4\u8bc6\u7684\u4eba > \u5176\u5b83

    "},{"location":"App/zju_ling_cs/#_13","title":"\u7533\u8bf7","text":"

    \u56e0\u4e3a\u4fdd\u7814\u548c\u627e\u5de5\u6211\u786e\u5b9e\u4e0d\u61c2\uff0c\u8fd9\u91cc\u6682\u65f6\u53ea\u5199\u7533\u8bf7\u4e86\u3002\u540e\u7eed\u6709\u8bf7\u5171\u540c\u4f5c\u8005\u6269\u5c55\u5185\u5bb9\u7684\u8ba1\u5212\uff0c\u5982\u613f\u610f\u8d21\u732e\u8bf7\u8054\u7cfb\u6211\u3002

    "},{"location":"App/zju_ling_cs/#check-point","title":"Check Point","text":"

    \u5927\u4e00\u6691\u5047\u7ed3\u675f\u65f6\uff1a\u4e13\u5fc3\u5b66\u4e13\u4e1a\u8bfe \u5927\u4e8c\u6691\u5047\u7ed3\u675f\u65f6\uff1a\u8fdb\u7ec4\uff0c\u5b66\u4f1apytorch\uff0c\u8bad\u8fc7\u4e00\u4e9b\u5e38\u7528\u7684\u6a21\u578b \u5927\u4e09\u6691\u5047\u7ed3\u675f\u65f6\uff1a\u4ea7\u51fa\u4e00\u4f5c\u6216\u5171\u4e00\u8bba\u6587

    "},{"location":"App/zju_ling_cs/#_14","title":"\u6211\u8981\u4e0d\u8981\u627e\u4e2d\u4ecb\uff1f","text":"

    \u4e0d\u8981\u3002 \u539f\u56e0\u4e00\uff1aCS\u7684\u5728\u7ebf\u514d\u8d39\u8d44\u6599\u8db3\u591f\u4f7f\u7528 \u539f\u56e0\u4e8c\uff1a\u4e2d\u4ecb\u7684\u4fe1\u606f\u66f4\u65b0\u901f\u5ea6\u8d76\u4e0d\u4e0aCS\u5b66\u79d1\u7684\u53d1\u5c55\u901f\u5ea6

    "},{"location":"App/zju_ling_cs/#_15","title":"\u6211\u7533\u8bf7\u53ef\u4ee5\u53c2\u8003\u54ea\u4e9b\u8d44\u6599\uff1f","text":"

    \u7533\u8bf7MS - \u5317\u7f8e\u7684CS master Home - Open CS Application - \u9664\u5317\u7f8e\u5916\u7684\u5176\u5b83CS master Global CS (global-cs-application.github.io) - \u4e00\u4ea9\u4e09\u5206\u5730/\u5bc4\u6258\u5bb6\u56ed\u7b49\u8bba\u575b - CC98\u4e0a\u6bcf\u4e00\u5e74CS\u7684\u98de\u8dc3\u624b\u518c

    \u7533\u8bf7PhD - \u6b27\u7f8eNLP\u5708\u5bf9PhD\u7533\u8bf7\u7684\u5efa\u8bae https://github.com/zhijing-jin/nlp-phd-global-equality - \u4e86\u89e3\u5b66\u79d1\u4f18\u52bf\u5b66\u6821\u548c\u5bfc\u5e08 CSRankings: Computer Science Rankings - \u6ce8\u518c\u4e00\u4e2aTwitter\u8d26\u53f7\uff0c\u5f00\u59cb\u5173\u6ce8NLP\u5708\u7684PhD\u548cAP\uff0c\u5404\u79cd\u7533\u8bf7\u673a\u4f1a\u4ed6\u4eec\u90fd\u4f1a\u5c3d\u5feb\u53d1\u5e03\u7684\u3002\u6bd4\u5982\u4f60\u53ef\u4ee5\u5148\u4eceAndrew Ng\u3001Christopher Manning\u3001Geoffrey Hinton\u8fd9\u79cd\u8001\u6559\u6388\u5173\u6ce8\u8d77\uff0c\u7136\u540e\u5173\u6ce8\u4ed6\u4eec\u7684\u5173\u6ce8\u8fd9\u6837\u6765\u641e\u3002 - \u5173\u6ce8\u4e00\u4ea9\u4e09\u5206\u5730/CC98/\u4e00\u4e9b\u5fae\u4fe1\u516c\u4f17\u53f7/\u77e5\u4e4e\u7684\u62db\u751f\u4fe1\u606f

    "},{"location":"App/zju_ling_cs/#_16","title":"\u6295\u9012\u6691\u7814\u6ce8\u610f\u4e8b\u9879","text":"

    \u6d41\u7a0b\u540c\u7533\u8bf7PhD \u5df2\u7ecf\u719f\u8bc6\u7684\u5bfc\u5e08\u63a8\u8350\u662f\u6700\u5feb\u7684\uff1b\u5426\u5219\u5c31\u81ea\u5df1\u6d77\u6295\uff0c\u6295\u53d1\u5e03\u8fc7\u62db\u751f\u5e7f\u544a\u6216\u4e3b\u9875\u8868\u660e\u6b63\u5728\u62db\u751f\u7684\u8001\u5e08\u662f\u6700\u5feb\u7684\u3002\u6709\u7684\u65f6\u5019\u53ef\u4ee5\u5c1d\u8bd5\u6295\u8ba4\u8bc6\u7684PhD\uff0c\u56e0\u4e3a\u6691\u7814\u671f\u95f4\u5927\u90e8\u5206\u60c5\u51b5\u8fd8\u662f\u8ddf\u7740PhD\u6253\u5de5\u3002 \u5982\u679c\u8001\u5e08\u7ed9\u4f60\u7684\u8d23\u4efb\u6bd4\u8f83\u91cd\uff0c\u4e14\u4f60\u6709\u6bd4\u8f83\u597d\u7684\u5de5\u4f5c\u73af\u5883\uff0c\u6211\u8ba4\u4e3a\u7ebf\u4e0a\u7ebf\u4e0b\u533a\u522b\u4e0d\u5927\u3002 \u60f3\u53bb\u5317\u7f8e\u5c31\u5957\u5317\u7f8e\uff0c\u6211\u89c9\u5f97\u6700\u597d\u4e0d\u8981\u627e\u8df3\u677f\uff0c\u6709\u5317\u7f8e\u7684\u7ebf\u4e0a\u6691\u7814\u4e5f\u5f88\u597d\uff0c\u53ea\u8981\u662f\u4f60\u4e00\u4f5c\uff0c\u65f6\u957f6\u4e2a\u6708\u4ee5\u4e0a\uff0c\u6bcf\u5468\u6c47\u62a5\u8fdb\u5ea6\u3002

    "},{"location":"App/zju_ling_cs/#_17","title":"\u6295\u9012\u5b9e\u4e60\u6ce8\u610f\u4e8b\u9879","text":"

    \u9700\u8981\u5b9e\u4e60 iff \u4f60\u6253\u7b97\u627e\u5de5or\u8bfb\u5b8c\u7855\u58eb\u627e\u5de5\uff0c\u7533\u8bf7\u5b66\u672f\u7c7bms\u548cPhD\u7684\u8bdd\uff0c\u5b9e\u4e60\u4e0d\u5f3a\u6c42\u3002

    "},{"location":"App/zju_ling_cs/#-xuan-insrgithubio","title":"- \ud83c\udff3\ufe0f\u200d\ud83c\udf08 \u603b\u89c8 - \u54b8\u9c7c\u6684\u7684\u4ee3\u7801\u7a7a\u95f4 (xuan-insr.github.io) \u627e\u6691\u671f\u5b9e\u4e60\u548c\u79cb\u62db\u7684\u7ecf\u9a8c\u5e16","text":"

    http://www-cc98-org-s.webvpn.zju.edu.cn:8001/topic/4950730

    "},{"location":"App/zju_ling_cs/#_18","title":"\u5173\u4e8e\u7b14\u8005&\u8054\u7cfb\u7b14\u8005","text":"

    \u7b14\u8005\u4f30\u8ba1\u662f\u4ece\u82f1\u8bed\u4e13\u4e1a\u8f6cNLP\u89c4\u5212\u6700\u4e0d\u987a\u3001\u8fdb\u5ea6\u6700\u66f2\u6298\u7684\u4e00\u4e2a\u3002\u8fd9\u4efd\u6587\u6863\u4e0d\u662f\u4ec0\u4e48\u6210\u529f\u7ecf\u9a8c\u5206\u4eab\uff0c\u6211\u5e76\u4e0d\u6210\u529f\uff0c\u53ea\u662f\u60f3\u628a\u6211\u8e29\u8fc7\u7684\u5751\u544a\u8bc9\u540e\u4eba\uff0c\u5e0c\u671b\u5c11\u6709\u4eba\u91cd\u8e48\u6211\u7684\u8986\u8f99\u3002\u6211\u89c9\u5f97\u6211\u7684\u9ad8\u4e2d\u548c\u672c\u79d1\u8fc7\u5f97\u592a\u574e\u5777\u4e86\uff0c\u771f\u8bda\u5730\u60f3\u5e2e\u52a9\u5b66\u5f1f\u5b66\u59b9\uff0c\u5e0c\u671b\u4f60\u4eec\u4e00\u5207\u987a\u5229\u3002\u8bfb\u8005\u53ef\u4ee5\u4ee5\u6211\u4f5c\u4e3a\u57fa\u51c6\uff0c\u5728\u56db\u5e74\u540e\u4e0d\u80fd\uff08\u5f53\u7136\u5982\u679c\u65e9\u505a\u89c4\u5212\uff0c\u4e00\u76f4\u5728\u52aa\u529b\uff0c\u4e5f\u4e0d\u4f1a\uff09\u6bd4\u6211\u66f4\u5dee\u3002\u6bd5\u7adf\u4e00\u6761\u8def\u8d70\u7684\u4eba\u591a\u4e86\uff0c\u540e\u4eba\u4e00\u5b9a\u662f\u8981\u8d8a\u8d70\u8d8a\u987a\u7684\u3002

    \u5982\u6709\u5efa\u8bae\u6216\u7591\u95ee\u8bf7\u901a\u8fc7\u90ae\u4ef6\u8054\u7cfb\u6211 RuoxiNing@outlook.com\u3002

    "},{"location":"CS/","title":"\u7d22\u5f15","text":"

    \u672c\u7ae0\u8282\u5305\u62ec\u8ba1\u7b97\u673a\u79d1\u5b66\u7b14\u8bb0

    "},{"location":"CS/c_lang/","title":"C\u8bed\u6cd5","text":""},{"location":"CS/c_lang/#_1","title":"\u6307\u9488","text":"

    \u6570\u7ec4\u540d\u662f\u4e00\u4e2a\u6307\u9488\u5e38\u91cf \u6307\u5411\u6307\u9488\u7684\u6570\u7ec4\uff08\u4e8c\u7ea7\u6307\u9488\uff09

    int a = 10;\nint *p = &a;\nint **p = &p;\n

    \u6307\u9488\u6570\u7ec4\u4e0e\u6570\u7ec4\u6307\u9488

    char ccolor[][] = {\"red\", \"blue\", \"yellow\"};\n

    \u662f\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\uff0c\u6bcf\u4e00\u884c\u90fd\u662f\u4e00\u4e2a\u4e00\u7ef4\u6570\u7ec4\uff0c\u5373ccolor+i\u662f\u4e00\u4e2a\u6307\u9488\uff0c\u6307\u5411\u7b2ci\u884c\u7684\u4e00\u7ef4\u6570\u7ec4\uff0cccolor+i\u7c7b\u578b\u662f\u201c\u957f\u5ea6\u4e3a7\u7684\u4e00\u7ef4\u6570\u7ec4\u201d\u7684\u6307\u9488\u3002ccolor[i]\u662f\u4e00\u7ef4\u6570\u7ec4

    "},{"location":"CS/c_lang/#_2","title":"\u6307\u9488\u8fdb\u9636","text":"

    \u7c7b\u578b\u540d* \u6307\u9488\u53d8\u91cf\u540d

    \u6307\u9488\u7684\u503c\u6216\u5730\u5740\u503c

    double a, x[10];\ndouble *p1, *p2;\n

    p1\u548cp2\u90fd\u662f\u6307\u9488\uff1ap1\u7684\u57fa\u7c7b\u578b\u662fdouble\uff0cp2\u7684\u57fa\u7c7b\u578b\u662fdouble*\uff0c\u6b64\u65f6\u90fd\u8fd8\u6ca1\u6709\u786e\u5b9a\u5730\u5740\u503c\uff0c\u9700\u8981\u8d4b\u503c\u3002

    // \u8bfb\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\nchar str[100], *s;\nscanf(\"%s\", s);\n// \u8bfb\u5165\u4e00\u4e2a\u6574\u6570\nint a, *p;\nscanf(\"%d\", p);\n// \u5f15\u7528\u6307\u9488\nint c, a = 2, *p;\nc = 3 + *p;\n

    \u6307\u9488\u7684\u52a0\u6cd5\u5bf9\u5730\u5740\u503c\u7684\u5f71\u54cd

    \u5730\u5740\u503c\u7684\u589e\u91cf = sizeof(\u57fa\u7c7b\u578b)

    \u5b9a\u4e49 \u57fa\u7c7b\u578b p\u5f53\u524d\u6307\u5411\u5730\u5740 p+1 char *p char (1 byte) 20 21 short *p short (2 bytes) 40 42 long *p long (4 bytes) 80 84

    \u7406\u89e3\u8fd0\u7b97\u7b26[]

    a[3]\u7b49\u4ef7\u4e8e3[a]\u7b49\u4ef7\u4e8e*(3+a)

    \u4e8c\u7ef4\u6570\u7ec4\u4e0e\u884c\u6307\u9488

    "},{"location":"CS/c_lang/#-","title":"\u7ea6\u745f\u592b\u73af - \u516c\u5f0f\u6cd5\uff08\u9012\u63a8\u516c\u5f0f\uff09","text":""},{"location":"CS/c_lang/#_3","title":"\u95ee\u9898\u63cf\u8ff0","text":"

    N\u4e2a\u4eba\u56f4\u6210\u4e00\u5708\uff0c\u7b2c\u4e00\u4e2a\u4eba\u4ece1\u5f00\u59cb\u62a5\u6570\uff0c\u62a5M\u7684\u5c06\u88ab\u6740\u6389\uff0c\u4e0b\u4e00\u4e2a\u4eba\u4ece1\u5f00\u59cb\u62a5\uff0c\u6700\u540e\u5269\u4e0b\u4e00\u4e2a\uff0c\u6c42\u6700\u540e\u7684\u80dc\u5229\u8005\u3002

    "},{"location":"CS/c_lang/#_4","title":"\u666e\u901a\u89e3\u6cd5","text":"

    \u7528\u94fe\u8868\u6a21\u62df\u8fd9\u4e2a\u8fc7\u7a0b\uff0cN\u4e2a\u4eba\u770b\u4f5cN\u4e2a\u8282\u70b9\uff0c\u8282\u70b91\u6307\u5411\u8282\u70b92\uff0c\u8282\u70b92\u6307\u5411\u8282\u70b93\uff0c\u8282\u70b9N\u6307\u5411\u8282\u70b91.

    \u6bcf\u62a5\u5230M\uff0c\u5c31\u5220\u9664\u8fd9\u4e2a\u6570\u3002\u7f3a\u70b9\u662f\u8981\u6a21\u62df\u6574\u4e2a\u6e38\u620f\u8fc7\u7a0b\uff0c\u65f6\u95f4\u590d\u6742\u5ea6\u5c31\u9ad8\u8fbeO(nm)\u3002

    "},{"location":"CS/c_lang/#_5","title":"\u516c\u5f0f\u6cd5","text":"

    \u9012\u63a8\u516c\u5f0f

    \\[ f(N, M) = (f(N-1, M)+M)\\%N \\]

    \u5176\u4e2df(M, N) \u8868\u793a N \u4e2a\u4eba\u62a5\u6570\uff0c\u6bcf\u62a5\u5230 M \u65f6\u6740\u6389\u8fd9\u4e2a\u4eba\uff0c\u6700\u540e\u80dc\u5229\u8005\u7684\u7f16\u53f7\u3002

    \u600e\u6837\u63a8\u5bfc\u8be5\u516c\u5f0f\u3002

    f(11, 3)

    \u95ee\u98981: \u5047\u8bbe\u77e5\u905311\u4e2a\u4eba\u65f6\u80dc\u5229\u8005\u7684\u4e0b\u6807\u4e3a6\uff0c\u4e0b\u4e00\u8f6e10\u4e2a\u4eba\u65f6\u80dc\u5229\u8005\u7684\u4e0b\u6807\u4e3a\uff1a\u7b2c\u4e00\u8f6e\u5220\u6389\u7f16\u53f7\u4e3a3\u7684\u4eba\u540e\uff0c\u6240\u6709\u4eba\u90fd\u5f80\u524d\u79fb\u52a8\u4e863\u4f4d\uff0c\u80dc\u5229\u8005\u4e5f\u5f80\u524d\u79fb\u52a8\u4e863\u4f4d\uff0c\u6240\u4ee5\u4e0b\u6807\u75316\u53d83.

    \u95ee\u98982: \u5047\u8bbe\u5df2\u77e510\u4e2a\u4eba\u65f6\uff0c\u80dc\u5229\u8005\u4e0b\u6807\u4e3a3\uff0c\u90a3\u4e0b\u4e00\u8f6e11\u4e2a\u4eba\u65f6\u80dc\u5229\u8005\u7684\u4e0b\u6807\u662f\uff1f

    \u53ef\u4ee5\u770b\u4f5c\u4e0a\u4e2a\u8fc7\u7a0b\u7684\u9006\u8fc7\u7a0b\uff0c\u5927\u5bb6\u90fd\u5f80\u540e\u79fb\u52a83\u4f4d\uff0c\u6240\u4ee5f(11, 3) = f(10, 3) + 3\u3002\u4e0d\u8fc7\u6709\u53ef\u80fd\u6570\u7ec4\u4f1a\u8d8a\u754c\uff0c\u6240\u4ee5\u6700\u540e\u6a21\u5f53\u524d\u4eba\u6570\u7684\u4e2a\u6570\uff0cf(11, 3) = (f(10, 3) + 3) %11

    \u95ee\u98983: \u73b0\u5728\u6539\u6210\u4eba\u6570\u4e3aN\uff0c\u62a5\u5230M\u65f6\u628a\u4eba\u6740\u6389\uff0c\u6570\u7ec4\u662f\u600e\u6837\u79fb\u52a8\u7684\uff1f\u6bcf\u6740\u6389\u4e00\u4e2a\u4eba\uff0c\u4e0b\u4e00\u4e2a\u4eba\u6210\u4e3a\u5934\uff0c\u76f8\u5f53\u4e8e\u628a\u6570\u7ec4\u5411\u524d\u79fb\u52a8M\u4f4d\u3002\u82e5\u5df2\u77e5N-1\u4e2a\u4eba\u65f6\uff0c\u80dc\u5229\u8005\u7684\u4e0b\u6807\u4f4d\u7f6ef(N-1, M)\uff0c\u5219N\u4e2a\u4eba\u65f6\uff0c\u5c31\u662f\u5f80\u540e\u79fb\u52a8M\uff0c\u8003\u8651\u5230\u6570\u7ec4\u8d8a\u754c\uff0c\u8981\u6a21N\uff0c\u5373f(N, M) = (f(N-1, M) + M) % N\u3002

    int cir(int n, int m)\n{\nint p = 0;\nfor (int i=2; i<=n; i++)\n{\np=(p+m)%i;\n}\nreturn p+1;\n}\n
    "},{"location":"CS/coding_code/","title":"\u7f16\u7a0b\u89c4\u8303\u6587\u6863\u6a21\u677f","text":"

    \u4e00\u4efd\u7528\u4e8eC\u5927\u7a0b\u7684\u7b80\u6613\u7f16\u7a0b\u89c4\u8303\u6587\u6863\u3002 \u4e3a\u7edf\u4e00\u5c0f\u7ec4\u6210\u5458\u5728\u8f6f\u4ef6\u5f00\u53d1\u8bbe\u8ba1\u8fc7\u7a0b\u4e2d\u7684\u4ee3\u7801\u98ce\u683c\uff0c\u65b9\u4fbf\u7ec4\u5458\u4e92\u76f8\u4e4b\u95f4\u534f\u4f5c\uff0c\u7279\u63d0\u51fa\u4ee5\u4e0b\u7f16\u7801\u89c4\u8303\u3002

    "},{"location":"CS/coding_code/#_1","title":"\u6392\u7248\u89c4\u8303","text":""},{"location":"CS/coding_code/#_2","title":"\u547d\u540d\u89c4\u5219","text":""},{"location":"CS/coding_code/#_3","title":"\u7f16\u7801\u89c4\u5219","text":""},{"location":"CS/coding_code/#_4","title":"\u53c2\u8003\u6587\u732e","text":"

    \u7f16\u7801\u89c4\u8303\u8bf4\u660e\u6587\u6863_\u7f16\u7801\u89c4\u8303\u6587\u6863_\u67ef\u897f\u6ca1\u79d1\u6c14\u7684\u535a\u5ba2-CSDN\u535a\u5ba2

    "},{"location":"CS/crawler/","title":"\u5199\u4e2a\u722c\u866bCrawler\ud83d\udd77\ufe0f\uff01","text":"

    \u89e3\u6790html\u7684\u6b65\u9aa4\uff1a - \u5c42\u6b21\u5316\u7684\u6570\u636e - \u6709\u591a\u4e2a\u89e3\u6790html\u7684\u4e09\u65b9\u5e93\uff0c\u5982\uff1alxml\uff0cbeautifulsoup\uff0chtmlparser

    "},{"location":"CS/crawler/#requests","title":"requests","text":"
    import requests\n

    \u53cd\u53cd\u722c\u7684

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}\n

    "},{"location":"CS/crawler/#beautifulsoup","title":"Beautifulsoup","text":""},{"location":"CS/crawler/#_1","title":"\u5b89\u88c5\u548c\u521d\u59cb\u5316","text":"
    pip install beautifulsoup4\n

    \u89e3\u6790\u7684\u7b2c\u4e00\u6b65\u662f\u6784\u5efa\u4e00\u4e2abeautifulsoup\u5bf9\u8c61

    from bs4 import BeautifulSoup\nsoup = BeautifulSoup(html_doc, 'html_parser')\n

    "},{"location":"CS/crawler/#_2","title":"\u4ecb\u7ecd","text":"

    \u7b2c\u4e00\u4e2a\u53c2\u6570html_doc\u662f\u8bfb\u53d6\u7684html\u6587\u6863\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u89e3\u6790\u5668\uff0cbeautifulsoup\u652f\u6301\u4ee5\u4e0b\u89e3\u6790\u5668

    \u89e3\u6790\u5668 \u4f7f\u7528\u65b9\u6cd5 \u4f18\u52bf \u52a3\u52bf Python\u6807\u51c6\u5e93 BeautifulSoup(markup, \u201chtml.parser\u201d) \u4e2d\u6587\u4e0d\u884c lxml HTML\u89e3\u6790\u5668 BeautifulSoup(markup, \u201clxml\u201d) \u5feb C\u8bed\u8a00\u5e93 lxml XML\u89e3\u6790\u5668 BeautifulSoup(markup, [\u201dlxml-xml\u201d]), BeautifulSoup(markup, \u201cxml\u201d) \u5feb C\u8bed\u8a00\u5e93 htmlSlib BeautifulSoup(markup, \u201chtml5lib\u201d) \u51c6 \u6162

    BeautifulSoup\u7c7b\u7684\u57fa\u672c\u5143\u7d20

    \u57fa\u672c\u5143\u7d20 \u8bf4\u660e Tag \u6807\u7b7e\uff0c\u6700\u57fa\u672c\u7684\u4fe1\u606f\u7ec4\u7ec7\u5355\u5143\uff0c\u5206\u522b\u7528<>\u548c\u6807\u660e\u5f00\u5934\u548c\u7ed3\u5c3e Name \u6807\u7b7e\u7684\u540d\u5b57\uff0c\u5373\u5c16\u62ec\u53f7\u91cc\u7684\u5185\u5bb9 Attribute \u6807\u7b7e\u7684\u5c5e\u6027\uff0c\u8fd4\u56de\u4e00\u4e2a\u5b57\u5178 NavigableString \u6807\u7b7e\u5185\u7684\u975e\u5c5e\u6027\u5b57\u7b26\u4e32\uff0c\u8fd4\u56de\u4e00\u4e2aString Comment \u6807\u7b7e\u5185\u5b57\u7b26\u4e32\u7684\u6ce8\u91ca\u90e8\u5206\uff0c\u4e00\u79cd\u7279\u6b8a\u7684Comment\u7c7b\u578b"},{"location":"CS/crawler/#_3","title":"\u4f7f\u7528\u65b9\u6cd5","text":"

    \u8bbf\u95ee\u6807\u7b7e\uff1a\u7528soup.\u7684\u683c\u5f0f\uff0c\u6bcf\u6b21\u53ea\u80fd\u8fd4\u56de\u7b2c\u4e00\u4e2a\u5339\u914d\u7684tag\u3002

    soup = BeautifulSoup(html_doc, 'lxml')\nprint(soup.head) #<head><title>The Dormouse's story</title><head>\nprint(soup.head.title) # <title>The Dormouse's story</title>\nprint(soup.a) # <a class=\"sister\" href=\"http://example.com/elsie\" id=\"link1\">Elsie</a>\n

    \u8bbf\u95ee\u591a\u4e2a\u6807\u7b7e\uff1b\u4f7f\u7528soup.find_all(\u2019\u2019)\u3002\u4f1a\u8fd4\u56de\u4e00\u4e2alist.

    soup.find_all('a')\n// [<a class=\"sister\" href=\"http://example.com/elsie\" id=\"link1\">Elsie</a>, <a class=\"sister\" href=\"http://example.com/lacie\" id=\"link2\">Lacie</a>, <a class=\"sister\" href=\"http://example.com/tillie\" id=\"link3\">Tillie</a>]\nsoup.find_all('a')[0]\n// <a class=\"sister\" href=\"http://example.com/elsie\" id=\"link1\">Elsie</a>\n

    \u53ef\u4ee5\u5728find_all\u65b9\u6cd5\u4e2d\u6dfb\u52a0\u8fc7\u6ee4\u6761\u4ef6\u3002

    soup.find_all('a', text = 'Elsie')\n// [<a class=\"sister\" href=\"http://example.com/elsie\" id=\"link1\">Elsie</a>]\nsoup.find_all('a', attrs = {'id': 'link1'})\n// [<a class=\"sister\" href=\"http://example.com/elsie\" id=\"link1\">Elsie</a>]\nsoup.find_all('a', id = 'link1')\n// \u4f46\u662f\u8fd9\u6837\u5199\u4e0d\u9002\u7528\u4e8e\u6240\u6709\u5c5e\u6027\uff1f\nsoup.find_all('p', class_= 'title')\n// [<p class=\"title\"><b>The Dormouse's story</b></p>]\n// \u8fd9\u79cd\u662fCSS\u9009\u62e9\u5668\n
    "},{"location":"CS/crawler/#_4","title":"\u8bbf\u95ee\u6807\u7b7e\u5185\u5bb9\u548c\u5c5e\u6027","text":"

    \u901a\u8fc7 name \u548c string \u53ef\u4ee5\u8bbf\u95ee\u6807\u7b7e\u7684\u540d\u5b57\u548c\u5185\u5bb9\uff0c\u901a\u8fc7 get \u548c\u4e2d\u62ec\u53f7\u64cd\u4f5c\u7b26\u53ef\u4ee5\u8bbf\u95ee\u6807\u7b7e\u4e2d\u7684\u5c5e\u6027\u548c\u503c\u3002

    print(soup.a)\n## <a class=\"sister\" href=\"http://example.com/elsie\" id=\"link1\">Elsie</a>\nprint(soup.a['class'])\n## ['sister']\nprint(soup.a.get('class'))\n## ['sister']\nprint(soup.a.name)\n## 'a'\nprint(soup.a.string)\n## 'Elsie'\n
    "},{"location":"CS/crawler/#_5","title":"\u89e3\u6790\u7f51\u9875","text":"
    import requests\nimport chardet\nfrom bs4 import BeautifulSoup\nheaders = {\n'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}\nurl = \"\"\nrqg = requests.get(url, headers = hearders, timeout = 3.0)\nrqg.encoding = chardet.detect(rqg.content)['encoding']  # requests \u8bf7\u6c42\u8fc7\u7a0b\n# \u521d\u59cb\u5316HTML\nhtml = rqg.content.decode('utf-8')\nsoup = BeautifulSoup(html, 'lxml')  # \u751f\u6210 BeautifulSoup \u5bf9\u8c61\nprint('\u8f93\u51fa\u683c\u5f0f\u5316\u7684BeautifulSoup\u5bf9\u8c61\uff1a', soup.prettify())\nprint('\u540d\u4e3atitle\u7684\u5168\u90e8\u5b57\u8282\u70b9\uff1a', soup.find_all(\"title\"))\nprint('title\u5b50\u8282\u70b9\u7684\u6587\u672c\u5185\u5bb9:', soup.title.string)\nprint('\u4f7f\u7528get_text()\u83b7\u53d6\u7684\u6587\u672c\u5185\u5bb9\uff1a', soup.title.get())\ntarget = soup.find_all('ul', class_ = 'menu') # \u6309\u7167CSS\u7c7b\u540d\u5b8c\u5168\u5339\u914d\ntarget = soup.find_all(id = 'menu')  # \u4f20\u5165\u5173\u952e\u5b57id\uff0c\u641c\u7d22\u7b26\u5408\u6761\u4ef6\u7684\u8282\u70b9\ntarget = soup.ul.find_all('a')   # \u6240\u6709\u540d\u79f0\u4e3aa\u7684\u8282\u70b9\n
    "},{"location":"CS/crawler/#lxmlxpath","title":"lxml\u7684XPath","text":"

    lxml\u8fd9\u4e2a\u5e93\u540c\u65f6\u652f\u6301HTML\u548cXML\u7684\u89e3\u6790\uff0c\u652f\u6301XPath\u89e3\u6790\u65b9\u5f0f\uff0c\u89e3\u6790\u6548\u7387\u9ad8\u3002

    \u4f7f\u7528xpath\u9700\u8981\u4ecelxml\u5e93\u4e2d\u5012\u5165etree\u6a21\u5757\uff0c\u9700\u8981\u4f7f\u7528html\u7c7b\u5bf9\u9700\u8981\u5339\u914d\u7684html\u5bf9\u8c61\u8fdb\u884c\u521d\u59cb\u5316\u3002

    import requests\nimport chardet\nfrom lxml import etree\nheaders = {\n'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}\nurl = \"\"\nrqg = requests.get(url, headers = hearders, timeout = 3.0)\nrqg.encoding = chardet.detect(rqg.content)['encoding']  # requests \u8bf7\u6c42\u8fc7\u7a0b\n# \u521d\u59cb\u5316HTML\nhtml = rqg.content.decode('utf-8')\nhtml = etree.HTML(html, parser = etree.HTMLParser(encoding = 'utf-8'))\n

    \u5b89\u88c5\u9014\u5f84

    pip install lxml\n

    Xpath\u5e38\u7528\u7684\u8868\u8fbe\u5f0f

    \u8868\u8fbe\u5f0f \u63cf\u8ff0 nodename \u9009\u53d6\u6b64\u8282\u70b9\u7684\u6240\u6709\u5b50\u8282\u70b9\u3002 / \u4ece\u6839\u8282\u70b9\u9009\u53d6\u3002 // \u4ece\u5339\u914d\u9009\u62e9\u7684\u5f53\u524d\u8282\u70b9\u9009\u62e9\u6587\u6863\u4e2d\u7684\u8282\u70b9 . \u9009\u53d6\u5f53\u524d\u8282\u70b9\u3002 \u2026 \u9009\u53d6\u5f53\u524d\u8282\u70b9\u7684\u7236\u8282\u70b9\u3002 @ \u9009\u53d6\u5c5e\u6027\u3002

    \u4f7f\u7528\u8868\u8fbe\u5f0f\u5b9a\u4f4dhead\u548ctitle\u8282\u70b9

    result = html.xpath('head')  ## \u901a\u8fc7\u540d\u79f0\u5b9a\u4e3ahead\u8282\u70b9\nresult1 = html.xpath('/html/heda/title')  ## \u6309\u8282\u70b9\u5c42\u7ea7\u5b9a\u4f4dtitle\u8282\u70b9\nresult2 = html.xpath('//title')  ## \u4e5f\u53ef\u4ee5\u5b9a\u4f4dtitle\u8282\u70b9\n

    Xpath\u8c13\u8bcd\u5e38\u7528\u7684\u8868\u8fbe\u5f0f

    \u8868\u8fbe\u5f0f \u7ed3\u679c xpath(\u2019/body/div[1]\u2019) \u9009\u53d6body\u4e0b\u7684\u7b2c\u4e00\u4e2adiv\u8282\u70b9 xpath(\u2019/body/div[last()]\u2019) \u9009\u53d6body\u4e0b\u6700\u540e\u4e00\u4e2adiv\u8282\u70b9 xpath(\u2019/body/div[last()-1]\u2019) \u9009\u53d6body\u4e0b\u5012\u6570\u7b2c\u4e8c\u4e2adiv\u8282\u70b9 xpath(\u2019/body/div[position()<3]\u2019) \u9009\u53d6body\u4e0b\u524d\u4e24\u4e2a\u8282\u70b9 xpath(\u2019/body/div[@class]\u2019) \u9009\u53d6body\u4e0b\u5e26\u6709class\u5c5e\u6027\u7684div\u8282\u70b9 xpath(/body/div[@class=\u201dmain\u201d]\u2019) \u9009\u53d6body\u4e0bclass\u5c5e\u6027\u4e3amain\u7684div\u8282\u70b9 xpath(\u201d/body/div[price>35]\u201d) \u9009\u53d6body\u4e0bprice\u5143\u7d20\u503c\u5927\u4e8e35\u7684\u8282\u70b9"},{"location":"CS/crawler/#request-html","title":"request-html","text":"

    requests-html\u7406\u89e3\u4e3a\u53ef\u4ee5\u89e3\u6790HTML\u6587\u6863\u7684request\u5e93

    pip install requests-html\n

    \u83b7\u53d6\u4e00\u4e2auser-agent

    user_agent = requests_html.user_agent()\n

    \u5bf9JavaScript\u7684\u652f\u6301\u662frequests-html\u6700\u5927\u7684\u4eae\u70b9\uff0c\u4f1a\u7528\u5230render\u51fd\u6570\uff0c\u9700\u8981\u6ce8\u610f\u7684\u662f\u7b2c\u4e00\u6b21\u4f7f\u7528\u8fd9\u4e2a\u65b9\u6cd5\uff0c\u5b83\u4f1a\u5148\u4e0b\u8f7dChromium\uff0c\u7136\u540e\u4f7f\u7528Chromium\u6765\u6267\u884c\u4ee3\u7801\uff0c\u4f46\u662f\u4e0b\u8f7d\u7684\u65f6\u5019\u53ef\u80fd\u9700\u8981\u4e00\u4e2a\u68af\u5b50\u3002

    \u793a\u4f8b

    from requests_html import HTMLSession\nsession = HTMLSession()\ndef parse():\nr = session.get('http://www.qdaily.com/')\n# \u83b7\u53d6\u9996\u9875\u65b0\u95fb\u6807\u7b7e\u3001\u56fe\u7247\u3001\u6807\u9898\u3001\u53d1\u5e03\u65f6\u95f4\nfor x in r.html.find('.packery-item'):\nyield {\n'tag': x.find('.category')[0].text,\n'image': x.find('.lazyload')[0].attrs['data-src'],\n'title': x.find('.smart-dotdotdot')[0].text if x.find('.smart-dotdotdot') else x.find('.smart-lines')[0].text,\n'addtime': x.find('.smart-date')[0].attrs['data-origindate'][:-6]\n}\n

    \u901a\u8fc7\u7b80\u77ed\u7684\u51e0\u884c\u4ee3\u7801\uff0c\u5c31\u53ef\u4ee5\u628a\u6574\u4e2a\u9996\u9875\u7684\u6587\u7ae0\u6293\u53d6\u4e0b\u6765\u3002

    \u793a\u4f8b\u4e2d\u4f7f\u7528\u7684\u51e0\u4e2a\u65b9\u6cd5\uff1a

    \u2460 find( ) \u53ef\u4ee5\u63a5\u6536\u4e24\u4e2a\u53c2\u6570\uff1a

    \u7b2c\u4e00\u4e2a\u53c2\u6570\u53ef\u4ee5\u662fclass\u540d\u79f0\u6216ID\u7b2c\u4e8c\u4e2a\u53c2\u6570first=True\u65f6\uff0c\u53ea\u9009\u53d6\u7b2c\u4e00\u6761\u6570\u636e

    \u2461 text \u83b7\u53d6\u5143\u7d20\u7684\u6587\u672c\u5185\u5bb9

    \u2462 attrs \u83b7\u53d6\u5143\u7d20\u7684\u5c5e\u6027\uff0c\u8fd4\u56de\u503c\u662f\u4e2a\u5b57\u5178

    \u2463 html \u83b7\u53d6\u5143\u7d20\u7684html\u5185\u5bb9

    \u4f7f\u7528requests-html\u6765\u89e3\u6790\u5185\u5bb9\u7684\u597d\u5904\u5728\u4e8e\u4f5c\u8005\u90fd\u9ad8\u5ea6\u5c01\u88c5\u8fc7\u4e86\uff0c\u8fde\u8bf7\u6c42\u8fd4\u56de\u5185\u5bb9\u7684\u7f16\u7801\u683c\u5f0f\u8f6c\u6362\u4e5f\u81ea\u52a8\u505a\u4e86\uff0c\u5b8c\u5168\u53ef\u4ee5\u8ba9\u4ee3\u7801\u903b\u8f91\u66f4\u7b80\u5355\u76f4\u63a5\uff0c\u66f4\u4e13\u6ce8\u4e8e\u89e3\u6790\u5de5\u4f5c\u672c\u8eab\u3002

    "},{"location":"CS/libgraphics/","title":"C\u5927\u7a0b libgraphics \u6587\u6863 \u4f7f\u7528\u8bb0\u5f55","text":"

    \u26a0\ufe0f \u6ca1\u5199\u5b8c TODO

    "},{"location":"CS/libgraphics/#_1","title":"\u5df2\u77e5\u95ee\u9898","text":""},{"location":"CS/libgraphics/#devc","title":"DevC++\u56fe\u5f62\u7f16\u7a0b\u8fc7\u7a0b","text":""},{"location":"CS/libgraphics/#_2","title":"\u51fd\u6570\u5e93","text":"

    graphics.h \u4ec5\u63d0\u4f9b\u4ee5\u4e0b\u5c11\u91cf\u753b\u56fe\u51fd\u6570\u63a5\u53e3

    InitGraphics();\nMovePen(x, y);\nDrawLine(dx, dy);\nDrawArc(r, start, sweep);\nGetWindowWidth();\nGetWindowHeight();\nGetCurrentX();\nGetCurrentY();\n

    \u6211\u4eec\u5c06\u5728\u4e0b\u9762\u4ecb\u7ecd\u8fd9\u4e9b\u63a5\u53e3\u7684\u7528\u6cd5\u3002

    "},{"location":"CS/libgraphics/#_3","title":"\u521d\u59cb\u5316\u64cd\u4f5c","text":"

    \u5728main.c\u91cc\u9700\u8981\u8fdb\u884c\u5982\u4e0b\u521d\u59cb\u5316

    #include \"graphics.h\"\n#include \"extragraph.h\"\n#include \"imgui.h\"\nvoid Main()        // \u6ce8\u610f\u8fd9\u91cc\u9700\u8981\u4f7f\u7528\u5927\u5199Main\n{\nSet WindowTitle(\"Your Title\");\nInitGraphics();  // \u8c03\u7528\u4e86\u56fe\u5f62\u6a21\u5f0f\n}\n

    InitGraphics(); \u8fd9\u4e2a\u51fd\u6570\u4f1a\u6253\u5f00\u4e00\u4e2a\u7a7a\u7684\u56fe\u5f62\u7a97\u53e3\u3002

    "},{"location":"CS/libgraphics/#_4","title":"\u7a97\u53e3","text":"

    \u4ee5\u4e0b\u56db\u4e2a\u51fd\u6570\u90fd\u4e0d\u9700\u8981\u4f20\u5165\u53c2\u6570\uff0c\u5206\u522b\u8fd4\u56de\u7a97\u53e3\u5bbd\u3001\u9ad8\uff0c\u5f53\u524dX\u3001Y\u5750\u6807\u3002

    GetWindowWidth();\nGetWindowHeight();\nGetCurrentX();\nGetCurrentY();\n
    "},{"location":"CS/libgraphics/#_5","title":"\u597d\u7684\u7f16\u5199\u4e60\u60ef","text":"

    \u5e94\u8be5\u5148\u5b9a\u4e49\u4e00\u4e9b\u5e38\u91cf\uff0c\u7ed9\u8fd9\u4e9b\u5e38\u91cf\u53d6\u540d\u5b57

    #define HouseHeight 2.0\n#define HouseWidth 3.0\n#define AtticHeight 0.7\n#define DoorWidth 0.4\n#define DoorKnobRadius 0.03\n#define DoorKnobInset 0.07\n#define PaneHeight 0.25\n#define PaneWidth 0.2\n#define FirstFloorWindows 0.3\n#define SecondFloorWindows 1.25\n
    "},{"location":"CS/libgraphics/#_6","title":"\u753b\u56fe\u5f62\u7684","text":""},{"location":"CS/libgraphics/#movepen","title":"MovePen","text":"

    \u5c06\u7b14\u79fb\u52a8\u5230(x, y)\u8be5\u5750\u6807\u3002\u6ce8\u610f\u5f53\u753b\u56fe\u5f62\u65f6\uff0c\u540e\u9762\u51e0\u4e2a\u51fd\u6570\u7684\u76f8\u5bf9\u4f4d\u79fb\uff0c\u90fd\u662f\u76f8\u5bf9\u4e8e\u8fd9\u4e2a\u51fd\u6570\u8bbe\u7f6e\u7684\u7b14\u5750\u6807\u79fb\u52a8\u7684\u3002

    MovePen(double x, double y);\n
    "},{"location":"CS/libgraphics/#drawline","title":"DrawLine","text":"

    \u5728\u753b\u7ebf\u4e4b\u524d\u4e00\u5b9a\u8981MovePen();

    DrawLine(double dx, double dy);\n

    \u753b\u7ebf\u7684\u65b9\u5411\uff1a

    \u6a2a\u5750\u6807\u6700\u5de6\u8fb9\u662f0\uff0c\u5411\u53f3\u589e\u5927

    \u7eb5\u5750\u6807\u6700\u4e0b\u9762\u662f0\uff0c\u5411\u4e0a\u589e\u5927

    \u53ef\u4ee5\u7406\u89e3\u4e3a\u6211\u4eec\u5728\u7b2c\u4e00\u8c61\u9650

    "},{"location":"CS/libgraphics/#drawarc","title":"DrawArc","text":"

    \u5728\u753b\u5f27\u4e4b\u524d\u4e00\u5b9a\u8981MovePen();

    DrawArc(double r, double start, double sweep);\n
    "},{"location":"CS/libgraphics/#_7","title":"\u6211\u4eec\u5e94\u5f53\u628a\u753b\u77e9\u5f62\u5c01\u88c5\u6210\u4e00\u4e2a\u65b0\u7684\u51fd\u6570","text":"
    void DrawBox (double x, double y, double width, double height)\n{\nMovePen(x, y);\nDrawLine(0, height);\nDrawLine(width, 0);\nDrawLine(0, height);\nDrawLine(-width, 0);\n}\n
    void DrawCenteredBox(double x, double y, double width, double height)\n{\nDrawBox(w - width/2, y - height/2, width, height);\n}\n
    "},{"location":"CS/libgraphics/#_8","title":"\u753b\u5706\u7684\u51fd\u6570","text":"
    void DrawCenteredCircle(double x, double y, double r)\n{\nMovePen(x + r, y);\nDrawArc(r, 0, 360);\n}\n
    "},{"location":"CS/libgraphics/#_9","title":"\u6587\u5b57","text":"

    \u4ece\u5f53\u524d\u4f4d\u7f6e\u5f00\u59cb\u8f93\u51fa\u6587\u672c\u4e32

    DrawTextString(string);\n

    \u8fd9\u4e2a\u51fd\u6570\u7528\u4e8e\u83b7\u53d6\u67d0\u4e2a\u5b57\u7b26\u4e32\u957f\u5ea6

    double stringLen = TextStringWidth(string); 
    "},{"location":"CS/libgraphics/#_10","title":"\u67e5\u770b\u56de\u8c03\u51fd\u6570\u7c7b\u578b","text":"
    typedef void(* KeyboardEventCallback)(int key, int event);\n
    "},{"location":"CS/libgraphics/#_11","title":"\u5b9a\u65f6\u5668","text":""},{"location":"CS/libgraphics/#_12","title":"\u65f6\u95f4\u56de\u8c03\u51fd\u6570","text":"
    registerTimerEvent(mytimer);  //\u83b7\u53d6\u7535\u8111\u65f6\u949f\u4fe1\u606f\u8fd4\u56de\u7ed9mytimer\nstartTimer(0, (int)(1000/speed));  // \u8981\u8ba8\u8bba\u4f20\u8fdb\u6765\u7684timer\u662f\u4ec0\u4e48\n
    "},{"location":"CS/libgraphics/#_13","title":"\u5b9a\u65f6\u5668\u6d88\u606f\u56de\u8c03\u51fd\u6570","text":"
    void TimerEventProcess(int timerID);\n

    \u793a\u4f8b

    typedef enum\n{\nLabelTimer,\nBoxTimer,\n} MyTimer;\n
    void mytimer(int  timerID)\n{\nswitch (timerID)\n{\ncase LabelTimer:\nlabel_x += 0.5;\nif (label_x > 5.0) label_x = 1.0;\ndisplay();\nbreak;\ncase BoxTimer:\nbox_y += 0.5;\nif (box_y > 5.0) box_y = 1.0;\ndisplay();\nbreak;\nbreak;\n}\n}\n
    registerTimerEvent(mytimer);\nstartTimer(LabelTimer, 100);\nstartTimer(BoxTimer, 200);\n
    "},{"location":"CS/libgraphics/#_14","title":"\u9f20\u6807","text":""},{"location":"CS/libgraphics/#_15","title":"\u9f20\u6807\u6d88\u606f\u56de\u8c03\u51fd\u6570","text":"
    void MouseEventProcess(int x, int y, int button, int event);\n

    x, y - \u4f4d\u7f6e\u5750\u6807

    button - \u6309\u4e0b\u7684\u662f\u54ea\u4e2a\u952e

    event - \u6309\u4e0b\uff0c\u677e\u5f00\uff0c\u79fb\u52a8\u7b49\u4e8b\u4ef6

    void myMouseEvent (int x, int y, int button, int event)\n{\nmouse_x = ScaleXInches(x);   // \u8fd9\u4e2a\u51fd\u6570\u5728extragraph\u5e93\u91cc\nmouse_y = ScaleYInches(y);\ndisplay();\n}\n

    \u9700\u8981\u5728Main()\u91cc\u6dfb\u52a0\u8fd9\u4e00\u884c

    registerMouseEvent(myMouseEvent);\n

    \u5728display()\u91cc

    void display()\n{\ndouble w = 1.0;\ndouble h = GetFontHeight() * 2;\n// \u6e05\u9664\u5c4f\u5e55\nDisplayClear();\n// draw a square\nSetPenColor(\"Red\");\ndrawLabel(label_x, label_y, \"Lable is Here\");\n//draw a rect/box to trace the mouse\n//drawRectangle(mouse_x, mouse_y, w, h, 0);\nSetPenColor(\"Blue\");\ndrawBox(mouse_x, mouse_y, w, h, 1, \"This box follows the mouse\", 'L', \"Red\");\n}\n
    "},{"location":"CS/libgraphics/#linkedlist","title":"\u4f7f\u7528linkedlist\u5e93","text":"
    #include \"linkedlist.h\"\n

    \u521b\u5efa\u4e00\u4e2a linkedlist \u540d\u53eb g_polylines

    linkedlistADT g_polylines = NULL;\ng_polylines = NewLinkedList();\ndisplay();\n
    void display()\n{\nlinkedlistADT poly = NextNode(g_polylines, g_polylines);\nSetPenColor(\"Blue\");\nif (poly) {\nPoint * p = (Point*) NodeObj(g_polylines, poly);\ndouble lx = p->x;\ndouble ly = p->y;\nMovePen(lx, ly);\nwhile (poly = NextNode(g_polylines, poly))\n{\np = (Point*) NodeObj(g_polylines, poly);\nDrawLine(p->x - lx, p->y - ly);\nlx = p->x;\nly = p->y;\n}\n}\n}\n
    "},{"location":"CS/libgraphics/#button","title":"\u4f7f\u7528button\u548c\u952e\u76d8","text":"

    \u8fd9\u6b21\u9700\u8981\u7528\u5230\u7684\u5e93

    #include <windows.h>\n#include <winuser.h>\n#include \"graphics.h\"\n#include \"extgraph.h\"\n#include \"imgui.h\"\n#include \"linkedlist.h\"\n
    "},{"location":"CS/libgraphics/#_16","title":"\u5b57\u7b26\u8f93\u5165\u56de\u8c03\u51fd\u6570","text":"
    void charEventProcess(char c);\n

    c - \u8f93\u5165\u5b57\u7b26\u7684ASCII\u7801

    "},{"location":"CS/libgraphics/#_17","title":"\u952e\u76d8\u56de\u8c03\u51fd\u6570","text":"
    void KeyboardEventProcess(int key, int event);\n

    key - \u54ea\u4e2a\u952e

    event - \u6309\u4e0b\u8fd8\u662f\u677e\u5f00

    \u793a\u4f8b

    \u5728Main()\u4e2d

    \n
    void myKeyboardEvent(int key, int event)\n{\nuiGetKeyboard(key, event); // needed for using simpleGUI\ndisplay();\nswitch (event)\n{\ncase KEY_UP:\nif (key == VK_F1)\ng_add_point = !g_add_point;\nbreak;\ndefault:\nbreak;\n}\n}\n
    "},{"location":"CS/libgraphics/#_18","title":"\u989c\u8272\u5e93","text":"

    \u81ea\u5e26\u7684\u989c\u8272\u5217\u8868

    char colorlist[100][100] = {\u201dBlack\u201d, \u201cDark Gray\u201d, \u201cGray\u201d, \u201cLight Gary\u201d, \u201cWhite\u201d, \u201cBrown\u201d, \u201cRed\u201d, \u201cOrange\u201d, \u201cYellow\u201d, \u201cGreen\u201d, \u201cBlue\u201d, \u201cViolet\u201d, \u201cMagenta\u201d, \u201cCyan\u201d};\nconst int colorNumber = 14;\n

    \u81ea\u5b9a\u4e49\u989c\u8272

    \u989c\u8272\u4f1a\u88ab\u52a0\u5165\u989c\u8272\u5e93\uff0cRGB\u7684\u53d6\u503c\u8303\u56f4\u90fd\u662f[0, 1]\u800c\u4e0d\u662f[0, 256)

    DefineColor(\"Color Name\", R, G, B);\n
    "},{"location":"CS/libgraphics/#libgraphics","title":"libgraphics\u5176\u5b83\u5e38\u7528\u7684\u4e1c\u897f","text":""},{"location":"CS/objdump/","title":"Objdump\u5de5\u5177","text":"

    \u6e90\u4ee3\u7801\u6587\u4ef6\u540dmytest.c

    gcc -c -g -o mytest mytest.c\nobjdump -s -d main.o > main.o.txt\n

    \u76ee\u6807\u6587\u4ef6\u53cd\u6c47\u7f16\uff0c\u540c\u65f6\u663e\u793a\u6e90\u4ee3\u7801

    gcc -g -c -o main.o main.c\nobjdump -S -d main.o > main.o.txt\n

    \u663e\u793a\u6e90\u4ee3\u7801\u7684\u540c\u65f6\u663e\u793a\u884c\u53f7

    objdump -j .text -ld -C -S main.o > main.o.txt\n

    \u53ef\u6267\u884c\u6587\u4ef6\u53cd\u6c47\u7f16

    gcc -o main main.c\nobjdump -s -d main > main.txt\n

    \u540c\u65f6\u663e\u793a\u6e90\u4ee3\u7801

    gcc -g -o main main.c\nobjdump -S -d main > main.txt\n
    "},{"location":"CS/x86assm/","title":"x86\u6c47\u7f16","text":""},{"location":"CS/x86assm/#lab","title":"Lab\u8bb0\u5f55","text":"

    \u26a0 Lab\u5df2\u7ecf\u5168\u90e8\u6362\u6389\uff0c\u8fd9\u90e8\u5206\u4f5c\u4e1a\u4ecb\u7ecd\u65e0\u6cd5\u53c2\u8003\u4e86\u3002 1. \u4f5c\u4e1a1: \u5b57\u7b26\u4e32\u8f6c\u6362 \u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5c0f\u5199\u5b57\u6bcd\u5168\u90e8\u8f6c\u6362\u4e3a\u5927\u5199\u5b57\u6bcd\uff0c\u5220\u9664\u7a7a\u683c\u540e\u8f93\u51fa\u3002 \u8bb0\u5f97\u4ed6\u6709\u5b57\u7b26\u4e32\u8bfb\u5199\u7684\u6e90\u4ee3\u7801\u3002 2. \u4f5c\u4e1a2: \u6253\u5370ASCII\u7801\u8868 \u8fdb\u5165\u56fe\u5f62\u6a21\u5f0f\uff0c\u8f93\u51fa\u7ea2\u7684ascii\u7801\u548c\u7eff\u7684\u76f8\u5e94\u5341\u516d\u8fdb\u5236\u7f16\u53f7\u3002 \u4e2a\u4eba\u611f\u89c9\u5148\u628a\u4f4d\u79fb\u5199\u51fa\u6765\u518d\u586b\u91cc\u9762\u7684\u8f93\u51fa\u6bd4\u8f83\u597d\u5f04\u3002 \u53ef\u4ee5\u53c2\u7167\u4ed6\u7684\u6570\u5b57\u7528\u5faa\u73af\u5de6\u79fb\u8f93\u51fa\u6210\u5341\u516d\u8fdb\u5236\u4ee3\u7801\u3002 3. \u4f5c\u4e1a3: \u7b80\u6613\u8ba1\u7b97\u5668 \u6574\u4f53\u601d\u8def\uff1a80386\u8bed\u6cd5\u5199\uff0c\u5185\u5bb9\u90fd\u5b58\u5728\u5185\u5b58\u53d8\u91cf\u91cc \u52a0\u6cd5\u601d\u8def\uff1a\u9ad8\u4f4d\u52a0\u9ad8\u4f4d\uff0c\u4f4e\u4f4d\u52a0\u4f4e\u4f4d \u4e58\u6cd5\u601d\u8def\uff1a\u5206\u522b\u4e58\u4f4e\u4f4d\u548c\u9ad8\u4f4d\uff0c\u9ad8\u4f4d\u7ed3\u679c\u52a0\u8fdb\u4f4d \u9664\u6cd5\u601d\u8def\uff1a\u5206\u522b\u9664\u9ad8\u4f4d\u548c\u4f4e\u4f4d\uff0c\u3002\u3002\u540e\u9762\u5fd8\u4e86 \u8f93\u51fa\u5341\u8fdb\u5236\u601d\u8def\uff1a\u9ad8\u4f4d\u4f4e\u4f4d \u8f93\u51fa\u5341\u516d\u8fdb\u5236\u601d\u8def\uff1a 4. \u4f5c\u4e1a4: C\u4ee3\u7801\u6587\u4ef6\u67e5\u770b\u5668\u7ffb\u8bd1\u6210\u6c47\u7f16 \u4ed6\u4f1a\u7ed9\u4e00\u4e2ac\u6e90\u4ee3\u7801\uff0c\u7528c\u548c\u6c47\u7f16\u5939\u5fc3\u8c03\u8bd5\u628ac\u7ffb\u8bd1\u6210\u6c47\u7f16\u3002 \u903b\u8f91\u7684\u601d\u8def\uff1a \u5bc4\u5b58\u5668\u72b6\u6001\u4fdd\u5b58+\u521d\u59cb\u72b6\u6001+\u5224\u65ad\u7ec8\u6b62+\u64cd\u4f5c+\u50a8\u5b58+\u5faa\u73af\u6761\u4ef6+\u8df3\u8f6c+\u5bc4\u5b58\u5668\u72b6\u6001\u6062\u590d

    "},{"location":"CS/x86assm/#6","title":"6\u79cd\u5bfb\u5740\u65b9\u5f0f\u4e0e\u5176\u4f5c\u7528","text":"\u8bf4\u660e \u793a\u4f8b \u4f5c\u7528 \u7acb\u5373\u5bfb\u5740 mov eax,56H \u901a\u5e38\u7528\u4e8e\u8d4b\u503c \u76f4\u63a5\u5bfb\u5740 mov eax,[1255887H] \u901a\u5e38\u7528\u4e8e\u5904\u7406\u53d8\u91cf \u5bc4\u5b58\u5668\u5bfb\u5740 mov eax,[edi] \u5730\u5740\u5728\u5bc4\u5b58\u5668\u4e2d \u5bc4\u5b58\u5668\u76f8\u5bf9\u5bfb\u5740 mov eax,[edi+20H] \u5e38\u7528\u4e8e\u8bbf\u95ee\u6570\u7ec4\u548c\u7ed3\u6784 \u57fa\u5740\u52a0\u53d8\u5740\u5bfb\u5740 mov eax,[EBP+ESI] \u5e38\u7528\u4e8e\u8bbf\u95ee\u6570\u7ec4 \u76f8\u5bf9\u57fa\u5740\u52a0\u53d8\u5740\u5bfb\u5740 mov eax,[EBX+EDI-10H] \u5e38\u7528\u4e8e\u8bbf\u95ee\u7ed3\u6784"},{"location":"CS/x86assm/#obj-dump","title":"obj dump","text":"

    \u6e90\u4ee3\u7801\u6587\u4ef6\u540dmytest.c

    gcc -c -g -o mytest mytest.c\nobjdump -s -d main.o > main.o.txt\n

    \u76ee\u6807\u6587\u4ef6\u53cd\u6c47\u7f16\uff0c\u540c\u65f6\u663e\u793a\u6e90\u4ee3\u7801

    gcc -g -c -o main.o main.c\nobjdump -S -d main.o > main.o.txt\n

    \u663e\u793a\u6e90\u4ee3\u7801\u7684\u540c\u65f6\u663e\u793a\u884c\u53f7

    objdump -j .text -ld -C -S main.o > main.o.txt\n

    \u53ef\u6267\u884c\u6587\u4ef6\u53cd\u6c47\u7f16

    gcc -o main main.c\nobjdump -s -d main > main.txt\n

    \u540c\u65f6\u663e\u793a\u6e90\u4ee3\u7801

    gcc -g -o main main.c\nobjdump -S -d main > main.txt\n
    "},{"location":"CS/x86assm/#_1","title":"\u671f\u672b\u8003\u8bd5","text":"
    1. \u662f\u975e\u9898(10\u4e2a\uff0c\u6bcf\u98981\u5206\uff0c\u517110\u5206)
    2. \u586b\u7a7a(15\u4e2a\uff0c\u6bcf\u7a7a2\u5206\uff0c\u517130\u5206)\uff1a
    3. \u7a0b\u5e8f\u586b\u7a7a\u9898(3\u9898\uff0c\u6bcf\u989810\u5206\uff0c\u517130\u5206)

      \u4e00\u822c\u90fd\u4f1a\u7528stack\u538b\u5165\u53c2\u6570 \u4f1a\u7ed9\u51fac\u8bed\u8a00\u7684\u539f\u578b\uff08\uff1f\uff0c\u53c2\u6570\u7684\u538b\u5165\u987a\u5e8f\u4ece\u53f3\u5230\u5de6\uff0ccaller\u6e05\u7406 pascal\uff0c\u4ece\u5de6\u5230\u53f3\uff0ccallee\u6e05\u7406 stdcall\uff0c\u4ece\u53f3\u5230\u5de6\uff0ccaller\u6e05\u7406 \u90fd\u7528ax\u8fd4\u56de\u53c2\u6570 \u4e00\u822c\u4e24\u4e2a\u7a7a\u4e0d\u53ef\u4ee5\u4ea4\u6362\u3002\u3002\u3002 \u5148\u81ea\u5df1\u5199\u4e00\u904d\u518d\u586b \uff08\u4e00\u822c20\u51e0\u884c\u7684\u7a0b\u5e8f\uff09

    4. \u7a0b\u5e8f\u9605\u8bfb(2\u9898\uff0c\u6bcf\u98985\u5206\uff0c\u517110\u5206) \u4f1a\u95ee\u8fd0\u884c\u7ed3\u679c\u548c\u4e2d\u95f4\u7ed3\u679c\uff08#\uff09\uff08\u5982\u679c\u6709\u5faa\u73af\uff0c\u6bcf\u6b21\u5faa\u73af\u5230\u90fd\u8981\u5199\uff0c\u4f46\u662f\u4e0d\u4f1a\u592a\u591a\uff09

    \u4e0d\u4f1a\u6709\u76f4\u63a5\u624b\u5199\u4e00\u6574\u4e2a\u7a0b\u5e8f\u7684\u9898

    \u91cd\u70b9\uff1a \u51fd\u6570\u53c2\u6570\u4f20\u9012\uff0c\u5982\u4f55\u6784\u9020\u4e00\u4e2a\u5806\u6808\u6846\u67b6\uff0cebp\u3002\u3002 \u9700\u8981\u770b\u61c2\u662f\u4e0d\u662f\u9012\u5f52\uff0c \u6709\u4e00\u4e2a\u7a0b\u5e8f\u586b\u7a7a\u4f1a\u51fa\u5355\u6b65\u8c03\u8bd5\uff0c\u8fb9\u89e3\u5bc6\u8fb9\u52a0\u5bc6\u90a3\u4e2a\u3002\u3002 \u4e0d\u4f1a\u8003\u4fdd\u62a4\u6a21\u5f0f\u3002

    "},{"location":"CS/x86assm/#_2","title":"\u590d\u4e60","text":""},{"location":"CS/x86assm/#intel-808680386-cpu","title":"Intel 8086/80386 CPU \u529f\u80fd\u7ed3\u6784","text":""},{"location":"CS/x86assm/#_3","title":"\u5de5\u4f5c\u65b9\u5f0f","text":"
    1. \u4ece\u5b58\u50a8\u5668\u4e2d\u53d6\u4e00\u6761\u6307\u4ee4
    2. \u5206\u6790\u6307\u4ee4\u7684\u64cd\u4f5c\u7801
    3. \u4ece\u5b58\u50a8\u5668\u4e2d\u8bfb\u53d6\u64cd\u4f5c\u6570
    4. \u6267\u884c\u6307\u4ee4
    5. \u5199\u5165\u7ed3\u679c\u96c6
    6. \u56de\u52301

    \u8fd0\u7b97\u5668\u8fdb\u884c\u4fe1\u606f\u5904\u7406\uff0c\u5bc4\u5b58\u5668\u8fdb\u884c\u4fe1\u606f\u5b58\u50a8\uff0c\u63a7\u5236\u5668\u63a7\u5236\u5404\u79cd\u5668\u4ef6\u5de5\u4f5c\uff0c\u603b\u7ebf\u8fde\u63a5\u5404\u79cd\u5668\u4ef6\u3002

    "},{"location":"CS/x86assm/#163280x86-view","title":"16\u4f4d\u548c32\u4f4d\u768480x86\u7684\u533a\u522b - \u64cd\u4f5c\u7cfb\u7edfview","text":""},{"location":"CS/x86assm/#_4","title":"\u903b\u8f91\u5730\u5740\u4e0e\u7269\u7406\u5730\u5740\u8f6c\u6362\uff1a","text":"

    1234h:0058h \u8f6c\u5316\u6210\u7269\u7406\u5730\u5740=12340h+0058h=12398h \u8865\u7801

    "},{"location":"CS/x86assm/#_5","title":"\u6807\u5fd7\u4f4d","text":"

    \u72b6\u6001\u6807\u5fd7\uff1aCF ZF SF OF AF PF \u63a7\u5236\u6807\u5fd7\uff1aDF(direction flags) TF(trace/trap flag) IF(interrupt flag)

    "},{"location":"CS/x86assm/#_6","title":"\u6570\u636e\u5728\u5185\u5b58\u4e2d\u7684\u5b58\u653e\u89c4\u5f8b\uff1a","text":"

    \u5c0f\u7aef\u683c\u5f0f\u3002\u4f4e\u5b57\u8282\u5728\u524d\uff0c\u9ad8\u5b57\u8282\u5728\u540e\u3002 \u8bbeds=1000h, bx=2000h, ax=1234h Mov ds:[bx], ax \u6267\u884c\u540e1000:2001\u6307\u5411\u7684\u5b57\u8282=12h

    "},{"location":"CS/x86assm/#_7","title":"\u5bc4\u5b58\u5668","text":"

    \u603b\u7ed3

    \u5bc4\u5b58\u5668 \u7c7b\u522b \u7528\u9014 AX \u6570\u636e\u5bc4\u5b58\u5668 \u7b97\u672f\u8fd0\u7b97\u4e2d\u7684\u4e3b\u8981\u5bc4\u5b58\u5668\uff0c\u5728\u4e58\u9664\u8fd0\u7b97\u4e2d\u7528\u6765\u5236\u5b9a\u88ab\u9664\u6570\uff0c\u4e5f\u662f\u4e58\u9664\u8fd0\u7b97\u540e\u7ed3\u679c\u7684\u9ed8\u8ba4\u5b58\u50a8\u5355\u5143\u3002\u53e6\u5916I/O\u6307\u4ee4\u5747\u4f7f\u7528\u8be5\u5bc4\u5b58\u5668\u4e0eI/O\u8bbe\u5907\u4f20\u9001\u4fe1\u606f\u3002 BX \u6570\u636e\u5bc4\u5b58\u5668 \u6307\u4ee4\u5bfb\u5740\u65f6\u5e38\u7528\u505a\u57fa\u5740\u5bc4\u5b58\u5668\uff0c\u5b58\u5165\u504f\u79fb\u91cf\u6216\u504f\u79fb\u91cf\u7684\u6784\u6210\u6210\u5206 CX \u6570\u636e\u5bc4\u5b58\u5668 \u5728\u5faa\u73af\u6307\u4ee4\u64cd\u4f5c\u6216\u4e32\u5904\u7406\u6307\u4ee4\u4e2d\u9690\u542b\u8ba1\u6570 DX \u6570\u636e\u5bc4\u5b58\u5668 \u5728\u53cc\u5b57\u8282\u957f\u8fd0\u7b97\u4e2d\u4e0eAX\u6784\u621032\u4f4d\u64cd\u4f5c\u6570\uff0cDX\u4e3a\u9ad816\u4f4d\u3002\u5728\u67d0\u4e9bI/O\u6307\u4ee4\u4e2d\uff0cDX\u88ab\u7528\u6765\u5b58\u653e\u7aef\u53e3\u5730\u5740 SP \u6307\u9488\u53ca\u53d8\u5740\u5bc4\u5b58\u5668 \u59cb\u7ec8\u662f\u6808\u9876\u7684\u4f4d\u7f6e\uff0c\u4e0eSS\u5bc4\u5b58\u5668\u4e00\u8d77\u6784\u6210\u6808\u9876\u6570\u636e\u7684\u7269\u7406\u5730\u5740 BP \u6307\u9488\u53ca\u53d8\u5740\u5bc4\u5b58\u5668 \u7cfb\u7edf\u9ed8\u8ba4\u5176\u6307\u5411\u5806\u6808\u4e2d\u67d0\u4e00\u5355\u5143\uff0c\u5373\u63d0\u4f9b\u6808\u4e2d\u8be5\u5355\u5143\u7684\u504f\u79fb\u91cf\u3002\u52a0\u6bb5\u524d\u7f00\u540e\uff0cBP\u53ef\u4f5c\u4e3a\u975e\u5806\u6808\u6bb5\u7684\u5730\u5740\u6307\u9488 SI \u6307\u9488\u53ca\u53d8\u5740\u5bc4\u5b58\u5668 \u4e0eDS\u8054\u7528\uff0c\u6307\u793a\u6570\u636e\u6bb5\u4e2d\u67d0\u64cd\u4f5c\u7684\u504f\u79fb\u91cf\u3002\u5728\u505a\u4e32\u5904\u7406\u65f6\uff0cSI\u6307\u793a\u6e90\u64cd\u4f5c\u6570\u5730\u5740\uff0c\u5e76\u6709\u81ea\u52a8\u589e\u91cf\u548c\u81ea\u52a8\u51cf\u91cf\u7684\u529f\u80fd\u3002\u53d8\u5740\u5bfb\u5740\u65f6\uff0cSI\u4e0e\u67d0\u4e00\u4f4d\u79fb\u91cf\u5171\u540c\u6784\u6210\u64cd\u4f5c\u6570\u7684\u504f\u79fb\u91cf DI \u6307\u9488\u53ca\u53d8\u5740\u5bc4\u5b58\u5668 \u4e0eDS\u8054\u7528\uff0c\u6307\u793a\u6570\u636e\u6bb5\u4e2d\u67d0\u64cd\u4f5c\u6570\u7684\u504f\u79fb\u91cf\uff0c\u6216\u4e0e\u67d0\u4e00\u4f4d\u79fb\u91cf\u5171\u540c\u6784\u6210\u64cd\u4f5c\u6570\u7684\u504f\u79fb\u91cf\uff0c\u4e32\u5904\u7406\u64cd\u4f5c\u65f6\uff0cDI\u6307\u793a\u9644\u52a0\u6bb5\u4e2d\u76ee\u7684\u5730\u5740\uff0c\u5e76\u6709\u81ea\u52a8\u589e\u91cf\u548c\u51cf\u91cf\u7684\u529f\u80fd\u3002 CS \u6bb5\u5bc4\u5b58\u5668 \u5b58\u653e\u5f53\u524d\u7a0b\u5e8f\u7684\u6307\u793a\u4ee3\u7801 DS \u6bb5\u5bc4\u5b58\u5668 \u5b58\u653e\u7a0b\u5e8f\u6240\u8bbe\u8ba1\u7684\u6e90\u6570\u636e\u6216\u7ed3\u679c SS \u6bb5\u5bc4\u5b58\u5668 \u4ee5\u201c\u5148\u5165\u540e\u51fa\u201d\u4e3a\u539f\u5219\u7684\u6570\u636e\u533a ES \u6bb5\u5bc4\u5b58\u5668 \u8f85\u52a9\u6570\u636e\u533a\uff0c\u5b58\u653e\u4e32\u6216\u5176\u5b83\u6570\u636e IP \u63a7\u5236\u5bc4\u5b58\u5668 \u5b83\u59cb\u7ec8\u6307\u5411\u5f53\u524d\u5c06\u8981\u6267\u884c\u6307\u4ee4\u5728\u4ee3\u7801\u6bb5\u4e2d\u7684\u504f\u79fb\u91cf FR \u63a7\u5236\u5bc4\u5b58\u5668 \u63a7\u5236\u6807\u5fd7\u4f4d

    "},{"location":"CS/x86assm/#_8","title":"\u901a\u7528\u5bc4\u5b58\u5668","text":"

    IA-32\u67b6\u6784\u4e2d\u4e00\u5171\u67094\u4e2a32\u4f4d\u5bc4\u5b58\u5668\uff0c\u7528\u4e8e\u4fdd\u5b58\u4e34\u65f6\u6570\u636e\uff0c\u8fd94\u4e2a\u901a\u7528\u5bc4\u5b58\u5668\u53ef\u4ee5\u5f53\u4f5c16\u4f4d\u7528\uff0c\u4e5f\u53ef\u4ee5\u4f5c8\u4f4d\u7528\u3002

    AX BX CX DX\uff1a\u6570\u636e\u5bc4\u5b58\u5668\uff0c\u6bcf\u4e2a\u6570\u636e\u5bc4\u5b58\u5668\u90fd\u53ef\u4ee5\u62c6\u6210\u4e24\u4e2a 8 \u4f4d\u5bc4\u5b58\u5668\u72ec\u7acb\u4f7f\u7528\uff0c\u5982 AX \u53ef\u62c6\u5206\u4e3a AH \u548c AL\uff0cBX \u62c6\u5206\u4e3a BH \u548c BL \u7b49\u3002H \u548c L \u5206\u522b\u8868\u793a\u9ad8 8 \u4f4d\u548c\u4f4e 8 \u4f4d\u3002

    AX(accumulator)\uff1a\u7d2f\u52a0\u5668\u3002\u5728\u4e58\u9664\u6cd5\u8fd0\u7b97\u3001\u4e32\u8fd0\u7b97\u3001 I/O \u6307\u4ee4\u4e2d\u90fd\u4f5c\u4e3a\u4e13\u7528\u5bc4\u5b58\u5668\uff1b BX (base)\uff1a\u57fa\u5740\u5bc4\u5b58\u5668\uff0c\u5e38\u7528\u4e8e\u5b58\u6863\u5185\u5b58\u5730\u5740\u3002

    CX (count)\uff1a\u8ba1\u6570\u5bc4\u5b58\u5668\u3002\u5e38\u7528\u4e8e\u5b58\u653e\u5faa\u73af\u8bed\u53e5\u7684\u5faa\u73af\u6b21\u6570\uff0c\u5b57\u7b26\u4e32\u64cd\u4f5c\u4e2d\u4e5f\u5e38\u7528\u3002

    DX (data)\uff1a\u6570\u636e\u5bc4\u5b58\u5668\u3002\u5e38\u5e38\u548cEAX\u4e00\u8d77\u4f7f\u7528\u3002

    "},{"location":"CS/x86assm/#_9","title":"\u53d8\u5740\u5bc4\u5b58\u5668","text":"

    \u5b58\u653e\u5728\u53d8\u52a8\u7684\u5185\u5b58\u5730\u5740

    ESI(source index): \u6e90\u53d8\u5740\u5bc4\u5b58\u5668\uff0c\u901a\u5e38\u5b58\u653e\u8981\u5904\u7406\u7684\u6570\u636e\u7684\u5185\u5b58\u5730\u5740\u3002

    EDI(destination index)\uff1a\u76ee\u7684\u53d8\u5740\u5bc4\u5b58\u5668\uff0c\u901a\u5e38\u5b58\u653e\u5904\u7406\u540e\u7684\u6570\u636e\u7684\u5185\u5b58\u5730\u5740\u3002

    ESI\u548cEDI\u5e38\u7528\u6765\u914d\u5408\u4f7f\u7528\u5b8c\u6210\u6570\u636e\u7684\u8d4b\u503c\u64cd\u4f5c

    rep movs dword ptr[edi], dword ptr[esi];\n

    \u8fd9\u53e5\u7684\u610f\u601d\u662f\u628aESI\u6307\u5411\u7684\u5185\u5b58\u5730\u5740\u4e2d\u7684\u5185\u5bb9\u590d\u5236\u5230EDI\u6240\u6307\u5411\u7684\u5185\u5b58\u4e2d\uff0c\u6570\u636e\u957f\u5ea6\u5728ECX\u4e2d\u6307\u5b9a\u3002

    "},{"location":"CS/x86assm/#_10","title":"\u6307\u9488\u5bc4\u5b58\u5668","text":"

    ESP\uff08stack pointer\uff09\uff1a\u5806\u6808\u6307\u9488\u5bc4\u5b58\u5668\u3002SS\uff1aSP\u6307\u5411\u5806\u6808\u7684\u6808\u9876\uff0c\u56e0\u6b64\u867d\u7136\u662f\u901a\u7528\u5bc4\u5b58\u5668\uff0c\u4f46\u4e0d\u5e94\u968f\u4fbf\u6539\u53d8SP\u7684\u503c\u3002\u4e0d\u53ef\u4ee5\u4f5c\u4e3a\u901a\u7528\u5bc4\u5b58\u5668\u4f7f\u7528\uff0cESP\u5b58\u653e\u5f53\u524d\u5806\u6808\u6808\u9876\u7684\u5730\u5740\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\uff0cESP\u548cEBP\u8054\u5408\u4f7f\u7528\u6765\u8bbf\u95ee\u51fd\u6570\u4e2d\u7684\u53c2\u6570\u548c\u5c40\u90e8\u53d8\u91cf\u3002 EBP\uff08base pointer\uff09\uff1a\u57fa\u5740\u6307\u9488\u5bc4\u5b58\u5668\u3002\u53ef\u4ee5\u4f5c\u4e3a\u901a\u7528\u5bc4\u5b58\u5668\u7528\u4e8e\u5b58\u653e\u64cd\u4f5c\u6570\uff0c\u5e38\u7528\u6765\u4ee3\u66ff\u5806\u6808\u6307\u9488\u8bbf\u95ee\u5806\u6808\u7684\u6570\u636e\u3002 EIP\uff1a\u6307\u4ee4\u6307\u9488\u5bc4\u5b58\u5668\uff0c\u603b\u662f\u6307\u5411\u4e0b\u4e00\u6761\u8981\u6267\u884c\u7684\u6307\u4ee4\u7684\u5730\u5740\u3002 \u5e38\u89c1\u7684\u8bbf\u95ee\u5806\u6808\u6307\u4ee4\uff1a

    push ebp\nmov ebp, esp\nsub esp, 78\npush esi\npush edi\ncmp dword ptr [ebp+8], 0\n

    ss\u6808\u6bb5\u5bc4\u5b58\u5668 sp\u6808\u9876\u6307\u9488\u5bc4\u5b58\u5668 bp\u9ed8\u8ba4\u7684\u6808\u5bfb\u5740\u5bc4\u5b58\u5668

    "},{"location":"CS/x86assm/#_11","title":"\u6807\u5fd7\u5bc4\u5b58\u5668","text":"

    \u6807\u5fd7\u5bc4\u5b58\u5668EFLAGS\u4e00\u5171\u670932\u4f4d\uff0c\u5728\u8fd932\u4f4d\u4e2d\u5927\u90e8\u5206\u662f\u4fdd\u7559\u7ed9\u7f16\u5199\u64cd\u4f5c\u7cfb\u7edf\u7684\u4eba\u7528\u7684\u3002

    IP (instruction pointer)\uff1a\u6307\u4ee4\u6307\u9488\u5bc4\u5b58\u5668\u3002\u4ee3\u7801\u6bb5\u5bc4\u5b58\u5668 CS \u548c\u6307\u4ee4\u6307\u9488\u5bc4\u5b58\u5668 IP \u662f 8086CPU \u4e2d\u6700\u5173\u952e\u7684\u4e24\u4e2a\u5bc4\u5b58\u5668\u3002\u5b83\u4eec\u5206\u522b\u7528\u6765\u63d0\u4f9b\u5f53\u524d\u6307\u4ee4\u7684\u6bb5\u5730\u5740\u548c\u504f\u79fb\u5730\u5740\u3002\u5373\u4efb\u610f\u65f6\u523b\uff0c8086CPU \u5c06 CS:IP \u6307\u5411\u7684\u5185\u5bb9\u5f53\u505a\u547d\u4ee4\u6267\u884c\u3002\u6bcf\u6761\u6307\u4ee4\u8fdb\u5165\u6307\u4ee4\u7f13\u51b2\u5668\u540e\u3001\u6267\u884c\u524d\uff0cIP += \u6240\u8bfb\u53d6\u6307\u4ee4\u7684\u957f\u5ea6\uff0c\u4ece\u800c\u6307\u5411\u4e0b\u4e00\u6761\u6307\u4ee4\u3002\u7528\u6237\u4e0d\u80fd\u76f4\u63a5\u8bbf\u95ee IP \u5bc4\u5b58\u5668\u3002

    FL (flags)\uff1a\u6807\u5fd7\u5bc4\u5b58\u5668\u3002\u4e0e\u5176\u4ed6\u5bc4\u5b58\u5668\u4e00\u6837\uff0c\u6807\u5fd7\u5bc4\u5b58\u5668\u4e5f\u6709 16 \u4f4d\uff0c\u4f46\u662f\u6807\u5fd7\u5bc4\u5b58\u5668\u53ea\u7528\u5230\u5176\u4e2d\u7684 9 \u4f4d\u3002\u8fd9 9 \u4f4d\u5305\u62ec 6 \u4e2a\u72b6\u6001\u6807\u5fd7\u548c 3 \u4e2a\u63a7\u5236\u6807\u5fd7\uff0c\u53c2\u89c1\u4e0b\u9762\u7684\u201c\u6807\u5fd7\u4f4d\u201d\u3002

    OF\uff08Overflow Flag\uff09:\u6ea2\u51fa\u6807\u5fd7\uff0c\u6ea2\u51fa\u65f6\u4e3a1\uff0c\u5426\u5219\u7f6e0\u3002\u4e24\u4e2a\u6b63\u6570\u76f8\u52a0\u53d8\u8d1f\uff0c\u6216\u4e24\u4e2a\u8d1f\u6570\u76f8\u52a0\u53d8\u6b63\u4f1a\u6ea2\u51fa\u3002#

    DF \uff08Direction Flag\uff09:\u65b9\u5411\u6807\u5fd7\uff0c\u5728\u4e32\u5904\u7406\u6307\u4ee4\u4e2d\u63a7\u5236\u4fe1\u606f\u7684\u65b9\u5411\u30020:\u6b63\u65b9\u5411\uff0c1\uff1a\u53cd\u65b9\u5411\u3002cld\uff0cstd\u3002#

    IF (Interrupt Flag) :\u4e2d\u65ad\u6807\u5fd7\u3002\u7981\u6b62\u4e2d\u65ad0\uff0c\u5141\u8bb8\u4e2d\u65ad1\u3002cli\uff0csti\u3002#

    AF (Auxiliary carry Flag) :\u8f85\u52a9\u8fdb\u4f4d\u6807\u5fd7\uff0c\u6709\u8fdb\u4f4d\u65f6\u7f6e1\uff0c\u5426\u5219\u7f6e0\u3002

    ZF (Zero Flag) :\u96f6\u6807\u5fd7\uff0c\u8fd0\u7b97\u7ed3\u6784\u4e3a0\u65f6ZF\u4f4d\u4f4d\u7f6e1\uff0c\u5426\u5219\u7f6e0\u3002

    SF (Sign Flag):\u7b26\u53f7\u6807\u5fd7\uff0c\u7ed3\u679c\u4e3a\u8d1f\u65f6\u7f6e1\uff0c\u5426\u5219\u7f6e0\u3002#

    CF (Carry Flag): \u8fdb\u4f4d\u6807\u5fd7\uff0c\u8fdb\u4f4d\u65f6\u7f6e1\uff0c\u5426\u5219\u7f6e0\u3002\u914d\u5957\u7684clc\uff0cstc\u4e24\u6761\u8bbe\u7f6e\u6307\u4ee4\uff1a\u6e05\u9664\u548c\u7f6e1\u3002#

    PF (Parity Flag): \u5947\u5076\u6807\u5fd7\u3002\u7ed3\u679c\u64cd\u4f5c\u6570\u4e2d1\u7684\u4e2a\u6570\u4e3a\u5076\u6570\u65f6\u7f6e1\uff0c\u5426\u5219\u7f6e0\u3002

    TF\uff1a\u5355\u6b65\u8c03\u8bd5\u8981\u7528\u3002#

    EFLAGS\u662f\u5b9e\u73b0\u6761\u4ef6\u5224\u65ad\u548c\u903b\u8f91\u5224\u65ad\u7684\u4e00\u79cd\u673a\u5236\uff0c\u5728\u6c47\u7f16\u8bed\u8a00\u4e2d\u4e00\u822c\u4e0d\u76f4\u63a5\u8bbf\u95eeEFLAGS\u5bc4\u5b58\u5668\uff0c\u800c\u662f\u901a\u8fc7\u6307\u4ee4\u7684\u64cd\u4f5c\u9690\u542b\u8bbf\u95eeEFLAGS\u5bc4\u5b58\u5668\u3002

    cmp dword ptr [ebp+8], 0. // \u5f71\u54cd\u6807\u5fd7\u4f4dCF\uff0cZF\uff0cSF\uff0cOF\uff0cAF\u548cPF\nJz 99495898 //\u5982\u679cZF\u7b49\u4e8e1\uff0c\u5219\u8df3\u8f6c\u523000405898 
    "},{"location":"CS/x86assm/#_12","title":"\u6307\u4ee4","text":"

    \u603b\u7ed3

    \u6307\u4ee4 \u4f5c\u7528 \u53c2\u6570 \u6539\u53d8\u6807\u5fd7\u4f4d mov \u8d4b\u503c \u88ab\u8d4b\u503c\u5bc4\u5b58\u5668\uff0c\u3010\u5bc4\u5b58\u5668\uff0c\u5185\u5b58\uff0c\u503c\u3011 no xchg \u6570\u636e\u4ea4\u6362 \u3010\u5bc4\u5b58\u5668\uff0c\u5185\u5b58\u3011\uff0c\u3010\u5bc4\u5b58\u5668\uff0c\u5185\u5b58\u3011 no push \u8fdb\u6808 \u6e90\u64cd\u4f5c\u6570\u3010\u5bc4\u5b58\u5668\u3011 pop \u51fa\u6808 \u76ee\u7684\u64cd\u4f5c\u6570\u3010\u5bc4\u5b58\u5668\u3011 pushf \u6807\u5fd7\u4f4d\u8fdb\u6808 \u65e0 popf \u6807\u5fd7\u4f4d\u51fa\u6808 \u65e0 lea Load effect address\uff0c\u5bfb\u5740\uff0c\u53d6\u504f\u79fb\u5730\u5740 lds \u5f53\u6307\u4ee4\u6307\u5b9a\u7684\u662f16\u4f4d\u5bc4\u5b58\u5668\u65f6\uff0c\u628a\u6e90\u64cd\u4f5c\u6570\u5b58\u50a8\u5355\u5143\u4e2d\u5b58\u653e\u7684\u5341\u516d\u4f4d\u504f\u79fb\u5730\u5740\u53d6\u51fa\u5b58\u653e\u5728\u5bc4\u5b58\u5668\u4e2d\uff0c\u7136\u540e\u628a\u6e90\u64cd\u4f5c\u6570+2\u7684\u5341\u516d\u4f4d\u6570\u88c5\u5165\u6307\u4ee4\u6307\u5b9a\u7684\u6bb5\u5bc4\u5b58\u5668\u3002\u5f53\u6307\u4ee4\u6307\u5b9a\u7684\u662f32\u4f4d\u5bc4\u5b58\u5668\u65f6 \u628a\u6e90\u64cd\u4f5c\u6570\u5b58\u50a8\u5355\u5143\u4e2d\u5b58\u653e\u768432\u4f4d\u504f\u79fb\u5730\u5740\u88c5\u5165\u5bc4\u5b58\u5668 \u7136\u540e\u628a \u6e90\u64cd\u4f5c\u6570+4 \u768416\u4f4d\u6570\u88c5\u5165\u6bb5\u5bc4\u5b58\u5668\u3002mem\u6307\u5411\u7684\u5730\u5740,\u9ad8\u4f4d\u5b58\u653e\u5728DS\u4e2d,\u4f4e\u4f4d\u5b58\u653e\u5728reg\u4e2d. LDS reg,mem les \u628a\u5185\u5b58\u4e2d\u6307\u5b9a\u4f4d\u7f6e\u7684\u53cc\u5b57\u64cd\u4f5c\u6570\u7684\u4f4e\u4f4d\u5b57\u88c5\u5165\u6307\u4ee4\u4e2d\u6307\u5b9a\u7684\u5bc4\u5b58\u5668\u3001\u9ad8\u4f4d\u5b57\u88c5\u5165ES\u5bc4\u5b58\u5668\u3002 cbw 8\u4f4d\u6570\u6269\u5c55\u4e3a16\u4f4d\u6570\uff0c\u6709\u7b26\u53f7\u6269\u5145 no cwd \u5b57(16\u4f4d)\u6269\u5c55\u4e3a\u53cc\u5b57(32\u4f4d)\uff0c\u6709\u7b26\u53f7\uff1f no add \u52a0 OPRDS\uff0cOPRDD adc \u5e26\u8fdb\u4f4d\u52a0\uff08\u7ed3\u679c\u542b\u6807\u5fd7\u4f4dCF\u7684\u503c\uff0c=OPRDS\uff0bOPRDD\uff0bCF\uff09 OPRDS\uff0cOPRDD sub \u51cf OPRDD\uff0cOPRDS sbb \u5e26\u8fdb\u4f4d\u51cf\uff08\u7ed3\u679c\u542b\u6807\u5fd7\u4f4dCF\u7684\u503c\uff0c=OPRDD\uff0dOPRDS\uff0dCF\uff09 OPRDD\uff0cOPRDS inc \u81ea\u589e1 \u5bc4\u5b58\u5668 dec \u81ea\u51cf1 \u5bc4\u5b58\u5668 mul 32\u4f4d\uff1a\u88ab\u4e58\u6570\u9ed8\u8ba4\u4e3aEAX\uff0c\u90a3\u4e48\u4e58\u79ef\u5c06\u5b58\u653e\u5728EDX\uff1aEAX\u4e2d 32\u4f4d\u4e58\u6570 16\u4f4d\uff1a\u88ab\u4e58\u6570\u9ed8\u8ba4\u4e3aAX\u90a3\u4e48\u4e58\u79ef\u5c06\u653e\u5728DX\uff1aAX\u4e2di 16\u4f4d\u4e58\u6570 8\u4f4d\uff1a\u88ab\u4e58\u6570\u9ed8\u8ba4\u4e3aAL\uff0c\u90a3\u4e48\u4e58\u79ef\u5c06\u653e\u5728AX 8\u4f4d\u4e58\u6570 div 32\u4f4d\uff1a\u88ab\u9664\u6570\u5c06\u662fEDX\uff1aEAX\uff0c \u6700\u7ec8\u7684\u5546\u5c06\u5b58\u653e\u5728EAX\uff0c \u4f59\u6570\u5c06\u5b58\u653e\u5728EDX\u4e2d 32\u4f4d\u4e58\u6570 16\u4f4d\uff1a\u88ab\u9664\u6570\u4e3aEAX\uff0c\u6700\u7ec8\u5f97\u5230\u7684\u5546\u653e\u5728AX\uff0c\u4f59\u6570\u653e\u5728EAX\u7684\u9ad816\u4f4d 16\u4f4d\u4e58\u6570 8\u4f4d\uff1a\u88ab\u9664\u6570\u662f16\u4f4d\uff0c\u6700\u7ec8\u5f97\u5230\u7684\u5546\u5c06\u653e\u5728AL\u4e2d\uff0c\u4f59\u6570\u653e\u5728AH\u4e2d 8\u4f4d\u4e58\u6570 imul \u65e0\u7b26\u53f7\u4e58 idiv \u65e0\u7b26\u53f7\u9664 xlat \u6362\u7801\u6307\u4ee4\uff0c\u4ee5bx\u4e3a\u9996\u5730\u5740\u7684\uff0c\u504f\u79fb\u5730\u5740\u4e3aal\u7684\u5185\u5bb9\u9001\u7ed9al\u3002 in \u7aef\u53e3\u8bfb\u5199\u6307\u4ee4 IN AL,21H\uff1b\u8868\u793a\u4ece21H\u7aef\u53e3\u8bfb\u53d6\u4e00\u5b57\u8282\u6570\u636e\u5230AL out \u7aef\u53e3\u8bfb\u5199\u6307\u4ee4 and \u6309\u4f4d\u4e0e or \u6309\u4f4d\u6216 xor \u6309\u4f4d\u5f02\u6216 not \u64cd\u4f5c\u6570\u6309\u4f4d\u53d6\u53cd neg \u64cd\u4f5c\u6570\u6309\u4f4d\u53d6\u53cd\u52a0\u4e00 test \u5bf9\u4e24\u4e2a\u64cd\u4f5c\u6570\u8fdb\u884c\u6309\u4f4d\u4e0e\u64cd\u4f5c\u3002\u4e0eand\u4e0d\u540c\uff0c\u4e0d\u5f71\u54cd\u76ee\u6807\u64cd\u4f5c\u6570\u7684\u503c\u3002 shl \u903b\u8f91\u5de6\u79fb\uff0c\u5c06\u4e00\u4e2a\u5bc4\u5b58\u5668\u4e2d\u7684\u503c\u6216\u5355\u5143\u4e2d\u7684\u6570\u636e\u5411\u5de6\u79fb\u4f4d\uff0c\u5c06\u6700\u540e\u79fb\u51fa\u7684\u4e00\u4f4d\u5199\u5165cf\u4e2d\u3002\u6700\u4f4e\u4f4d\u75280\u8865\u5145\u3002 shr \u903b\u8f91\u53f3\u79fb\uff0c\u5c06\u4e00\u4e2a\u5bc4\u5b58\u5668\u4e2d\u7684\u503c\u6216\u5355\u5143\u4e2d\u7684\u6570\u636e\u5411\u5de6\u79fb\u4f4d\uff0c\u5c06\u6700\u540e\u79fb\u51fa\u7684\u4e00\u4f4d\u5199\u5165cf\u4e2d\u3002\u6700\u9ad8\u4f4d\u75280\u8865\u5145\u3002 sal \u7b97\u672f\u5de6\u79fb\uff0c\u4e0eshl\u4e00\u6837\uff0c\u88650 sar \u7b97\u672f\u53f3\u79fb\uff0c\u4e0eshr\u4e0d\u4e00\u6837\uff0c\u7b97\u672f\u53f3\u79fb\u8865\u6700\u9ad8\u4f4d rol \u5faa\u73af\u5de6\u79fb ror \u5faa\u73af\u53f3\u79fb rcl \u5e26\u8fdb\u4f4d\u5faa\u73af\u5de6\u79fb\uff0c\u5de6\u79fb\u7684\u65f6\u5019\u79fb\u51fa\u53bb\u7684\u4f1a\u653e\u5728cf\uff1f rcr \u5e26\u8fdb\u4f4d\u5faa\u73af\u53f3\u79fb cmp \u6bd4\u8f83 ja jump if above jb Jump if below jae Jump if above or equal jbe Jump if below or equal jg jump if greater\uff0c\u6709\u7b26\u53f7\u5927\u4e8e\u8df3\u8f6c jl jump less\uff0c\u6709\u7b26\u53f7\u5c0f\u4e8e\u8df3\u8f6c jge jump if greater or equal jle Jump if less or equal jc jump if with carry, CF = 1 jnc jump if not with carry, CF = 0 je = jz jump if equal, ZF = 1 jne = jnz jump if not equal, ZF = 0 jz jump if zero, ZF = 1 jnz jump if not zero, ZF = 0 jcxz jump if cx equals zero js SF = 1 jns SF = 0 jo Jump if overflow, OF = 1 jno jump if not overflow, OF = 0 loop \u5faa\u73af \u4ee3\u7801\u6bb5\uff08\uff1f\uff09\u540d clc clear carry flag\uff0c\u5c06cf\u4f4d\u6e05\u96f6 stc set carry flag\uff0cCF\u7f6e1 cli clear interrupt endable flag\uff0cIF\u6e05\u96f6\uff0c\u5173\u95ed\u4e2d\u65ad sti set interrupt endable flag\uff0cIF\u7f6e\u4f4d1\uff0c\u6253\u5f00\u4e2d\u65ad CMC complement carry flag\uff0cCF\u53d6\u53cd CLD clear direction flag\uff0cDF\u6e05\u96f6 STD set interrupt endable flag\uff0cDF\u7f6e1 call \u8fd1\u8c03\u7528 ret \u8fd1\u8fd4\u56de call far ptr \u8fdc\u8c03\u7528\u3002\u4e09\u4e2apush\u4e00\u4e2ajmp\u3002push f\uff0cpush cs\uff0cpush ip\uff0cjump retf \u8fdc\u8fd4\u56de\u3002\u4e09\u4e2apop\u3002\u6307\u4ee4\u2f64\u6808\u4e2d\u7684\u6570\u636e\uff0c\u4fee\u6539CS\u548cIP\u7684\u5185\u5bb9\uff0c\u4ece\u2f7d\u5b9e\u73b0\u8fdc\u8f6c\u79fb int \u4e2d\u65ad\u6307\u4ee4 iret \u4e2d\u65ad\u8fd4\u56de jmp short \u6bb5\u5185\u77ed\u8f6c\u79fb\uff0c\u77ed\u662f\u6307\u8981\u8df3\u2f84\u7684\u2f6c\u6807\u5730\u5740\u4e0e\u5f53\u524d\u5730\u5740\u524d\u540e\u76f8\u5dee\u4e0d\u8d85\u8fc7128\u5b57\u8282 jmp near ptr \u6bb5\u5185\u8fd1\u8f6c\u79fb\u3002\u8fd1\u662f\u6307\u8df3\u8f6c\u7684\u2f6c\u6807\u5730\u5740\u4e0e\u5f53\u524d\u5730\u5740\u5728\u2f64\u2f00\u4e2a\u6bb5\u5185\uff0c\u5373CS\u7684\u503c\u4e0d\u53d8\uff0c\u53ea\u6539\u53d8EIP\u7684\u503c jmp far ptr \u6bb5\u95f4\u8f6c\u79fb\uff0c\u8fdc\u6307\u8df3\u5230\u53e6\u2f00\u4e2a\u4ee3\u7801\u6bb5\u53bb\u6267\u2f8f\uff0cCS/EIP\u90fd\u8981\u6539\u53d8 Jmp dword ptr \u6bb5\u95f4\u8f6c\u79fb\uff0c\u4ee5\u5185\u5b58\u5730\u5740\u5355\u5143\u5904\u7684\u53cc\u5b57\u6765\u4fee\u6539\u6307\u4ee4\uff0c\u2fbc\u5730\u5740\u5185\u5bb9\u4fee\u6539CS\uff0c\u4f4e\u5730\u5740\u5185\u5bb9 \u4fee\u6539IP\uff0c\u5185\u5b58\u5730\u5740\u53ef\u4ee5\u4ee5\u4efb\u4f55\u5408\u6cd5\u7684\u2f45\u5f0f\u7ed9\u51fa repe/renpe scasb \u5b57\u7b26\u4e32\u626b\u63cf\u6307\u4ee4\u3002cmp al, es:[di] di++; \u5f53DF=1\u65f6\uff0c\u4e3adi-- repne:\u5f53ECX!=0\u5e76\u4e14ZF==0\u65f6 \u91cd\u590d repe: cx != 0\u4e14zf != 0\u91cd\u590d repe/renpe cmpsb \u5b57\u7b26\u4e32\u6bd4\u8f83\u6307\u4ee4\u3002\u2f50\u8f83byte ptr ds:[si]\u4e0ebyte ptr es:[di] \u5f53DF=0\u65f6\uff0cSI++\uff0cDI++ \u5f53DF=1\u65f6\uff0cSI--\uff0cDI-- repne:\u5f53ECX!=0\u5e76\u4e14ZF==0\u65f6 \u91cd\u590d repe: cx != 0\u4e14zf != 0\u91cd\u590d rep movsb \u5b57\u7b26\u4e32\u79fb\u52a8\u6307\u4ee4\u3002\u5176\u4e2drep\u8868\u793arepeat\uff0cs\u8868\u793astring\uff0cb\u8868\u793abyte \u5728\u6267\u2f8f\u6b64\u6307\u4ee4\u524d\u8981\u505a\u4ee5\u4e0b\u51c6\u5907\u2f2f\u4f5c\uff1a \u2460ds:si lodsb \u5757\u88c5\u5165\u6307\u4ee4\uff0c\u628aSI\u6307\u5411\u7684\u5b58\u50a8\u5355\u5143\u8bfb\u5165\u7d2f\u52a0\u5668\uff0clodsb\u5c31\u8bfb\u5165ax\uff0clodsw\u5c31\u8bfb\u5165ax\uff0c\u7136\u540esi\u81ea\u52a8\u589e\u52a0\u6216\u51cf\u5c0f1\u62162 stosb/stosw/stosd SI\u6307\u5411\u7684https://baike.baidu.com/item/%E5%AD%98%E5%82%A8%E5%8D%95%E5%85%83\u8bfb\u5165https://baike.baidu.com/item/%E7%B4%AF%E5%8A%A0%E5%99%A8,\u5176\u4e2dLODSB\u662f\u8bfb\u5165AL, LODSW\u662f\u8bfb\u5165AX\u4e2d, \u7136\u540eSI\u81ea\u52a8\u589e\u52a0\u6216\u51cf\u5c0f1\u62162\u4f4d.\u5f53\u65b9\u5411\u6807\u5fd7\u4f4dDF=0\u65f6\uff0c\u5219SI\u81ea\u52a8\u589e\u52a0\uff1bDF=1\u65f6\uff0cSI\u81ea\u52a8\u51cf\u5c0f\u3002 rep stosb lodsb"},{"location":"CS/x86assm/#_13","title":"\u6570\u636e\u4f20\u9001\u6307\u4ee4","text":"

    \u6570\u636e\u4f20\u9001\u6307\u4ee4\u662f\u4e3a\u4e86\u5b9e\u73b0CPU\u548c\u5185\u5b58\uff0c\u8f93\u5165\u548c\u8f93\u51fa\u7aef\u53e3\u4e4b\u95f4\u7684\u6570\u636e\u4f20\u9001\u3002

    mov

    mov eax, 56 // \u5c0656H\u4f20\u9001\u5230eax\u5bc4\u5b58\u5668\nmov esi, dword ptr [eax * 2 + 1]  // \u5c06\u5185\u5b58\u5730\u5740\u4e3aeax*2+1\u76844\u5b57\u8282\u6570\u636e\u4f20\u9001\u5230esi\u5bc4\u5b58\u5668\nmov ah, byte ptr [esi * 2 + eax]  // \u5c06\u5185\u5b58\u5730\u5740\u4e3aesi*+eax\u5904\u76848\u4f4d\u6570\u636e\u4f20\u9001\u5230AH\u5bc4\u5b58\u5668\n

    xchg

    \u5bc4\u5b58\u5668\u548c\u5185\u5b58\u7684\u6570\u636e\u4ea4\u6362\uff0c\u4ea4\u6362\u7684\u6570\u636e\u53ef\u4ee5\u662f8\u5b57\u8282\u300116\u5b57\u8282\u621632\u5b57\u8282\uff0c\u5fc5\u987b\u683c\u5f0f\u76f8\u540c

    xchg eax, edx; // \u5c06edx\u5bc4\u5b58\u5668\u7684\u503c\u548ceax\u5bc4\u5b58\u5668\u7684\u503c\u4ea4\u6362\nxchg [esp-55], edi; // \u5c06edi\u5bc4\u5b58\u5668\u7684\u503c\u548c\u5806\u6808\u5730\u5740\u4e3a[esp-55]\u5904\u7684\u503c\u4ea4\u6362\n

    push pop

    push\u548cpop\uff1a\u79f0\u4e3a\u538b\u5165\u5806\u6808\u6307\u4ee4\u548c\u5f39\u51fa\u5806\u6808\u6307\u4ee4\uff0c\u683c\u5f0f\u662fpush src(\u6e90\u64cd\u4f5c\u6570)\u548cpop dst(\u76ee\u7684\u64cd\u4f5c\u6570)\uff0cpush\u6307\u4ee4\u548cpop\u6307\u4ee4\u9700\u8981\u5339\u914d\u51fa\u73b0\uff0c\u5426\u5219\u5806\u6808\u4f1a\u4e0d\u5e73\u8861\u3002push\u6307\u4ee4\u5c06\u539f\u64cd\u4f5c\u6570src\u538b\u5165\u5806\u6808\uff0c\u540c\u65f6esp-4\uff08\u6808\u9876\u6307\u9488\u51cf\u4e00\u4e2a4\u4f4d\uff09\uff0c\u800cpop\u53cd\u4e4b\uff0c\u4ece\u5806\u6808\u7684\u9876\u90e8\u5f39\u51fa4\u5b57\u8282\u7684\u6570\u503c\u7136\u540e\u653e\u5165dst\u3002\u572832\u4f4d\u7684\u64cd\u4f5c\u7cfb\u7edf\u4e0a\uff0cpush\u548cpop\u7684\u64cd\u4f5c\u662f\u4ee54\u5b57\u8282\u4e3a\u5355\u4f4d\u7684\uff0cpush\u548cpop\u6307\u4ee4\u5e38\u7528\u4e8e\u5411\u51fd\u6570\u4f20\u53c2\u3002

    push eax // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u4ee54\u5b57\u8282\u538b\u5165\u5806\u6808\uff0c\u540c\u65f6esp-4\npush dword ptr [12FF8589] // \u5c06\u5806\u6808\u9876\u90e8\u76844\u5b57\u8282\u5f39\u51fa\u5230\u5185\u5b58\u5730\u5740\u4e3a12FF8589\u6240\u6307\u5730\u65b9\uff0c\u540c\u65f6esp+4\n-----------------------------------------------------------------------------\npop dword ptr [12FF8589] // \u5c06\u5806\u6808\u9876\u90e8\u76844\u5b57\u8282\u5f39\u51fa\u5230\u5185\u5b58\u5730\u5740\u4e3a12FF8589\u6240\u6307\u7684\u5730\u65b9\uff0c\u540c\u65f6esp+4\npop eax // \u5c06\u5806\u6808\u9876\u90e8\u76844\u5b57\u8282\u5f39\u51fa\u5230eax\u5bc4\u5b58\u5668\uff0c\u540c\u65f6esp+4\n
    "},{"location":"CS/x86assm/#_14","title":"\u5730\u5740\u4f20\u9001\u6307\u4ee4","text":"

    x86\u67093\u6761\u5730\u5740\u4f20\u9001\u6307\u4ee4\uff0c\u5206\u522b\u662fLEA\uff0cLDS\u548cLES\u3002\u5176\u5b9eLDS\u548cLES\u6307\u4ee4\u548c\u6bb5\u5bc4\u5b58\u5668\u6709\u5173\uff0c\u572832\u4f4d\u7684windows\u64cd\u4f5c\u7cfb\u7edf\u4e0a\uff0c\u4e00\u822c\u7684\u7a0b\u5e8f\u5458\u90fd\u4e0d\u9700\u8981\u7ba1\u7406\u6bb5\u5bc4\u5b58\u5668\uff0c\u6240\u4ee5\u76f8\u5bf9\u800c\u8a00\uff0cLDS\u548cLES\u5bc4\u5b58\u5668\u4f7f\u7528\u5f97\u6bd4\u8f83\u5c11\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u5e38\u89c1\u7684\u53ea\u6709LEA\u6307\u4ee4\u3002

    LEA

    \u79f0\u4e3a\u5730\u5740\u4f20\u9001\u6307\u4ee4\uff0c\u683c\u5f0f\u662f\u201cLEA DST, ADDR\u201d\u3002LEA\u5c06ADDR\u5730\u5740\u52a0\u8f7d\u5230DST\uff0c\u5176\u4e2dADDR\u53ef\u4ee5\u662f\u5185\u5b58\uff0c\u4e5f\u53ef\u4ee5\u662f\u5bc4\u5b58\u5668\uff0c\u800cDST\u5fc5\u987b\u662f\u4e00\u4e2a\u901a\u7528\u5bc4\u5b58\u5668\u3002

    lea eax, [12345678]; // \u6307\u4ee4\u6267\u884c\u540eeax\u5bc4\u5b58\u5668\u7684\u503c\u4e3a12345678H\nmov eax, [12345678]; // \u800cmov eax, [12345678] \u6307\u4ee4\u6267\u884c\u540eeax\u5bc4\u5b58\u5668\u7684\u503c\u4e3a\u5185\u5b58\u5730\u574012345678\u6307\u5411\u7684\u90a3\u4e2a\u6570\u503c\n// LEA\u6307\u4ee4\u53ef\u7528\u4e8e\u7b97\u6cd5\u8fd0\u7b97\nlea ecx, [ecx + eax*4];  // ecx = ecx + eax * 4\n// \u76f8\u5f53\u4e8e\u8ba1\u7b97\u51faecx+eax*4\u7684\u6570\u503c\uff0c\u5728[]\u91cc\u662f\u4e00\u4e2a\u5730\u5740\uff0clea\u53d6\u5730\u5740\u540e\u5c31\u53d6\u5230\u4e86\u8fd9\u4e2a\u6570\u503c\n
    "},{"location":"CS/x86assm/#_15","title":"\u7b97\u6570\u8fd0\u7b97\u6307\u4ee4","text":"

    80x86\u63d0\u4f9b\u4e868\u6761\u52a0\u51cf\u6cd5\u6307\u4ee4\uff0c4\u6761\u4e58\u9664\u6cd5\u6307\u4ee4\u3002

    ADD\uff1a\u52a0\u6cd5\u6307\u4ee4

    add eax, esi; // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u52a0\u4e0aesi\u5bc4\u5b58\u5668\u7684\u503c\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u4fdd\u5b58\u5728eax\u7684\u5bc4\u5b58\u5668\u4e2d\nadd ebx, dword ptr[12345678] // \u5c06ebx\u5bc4\u5b58\u5668\u7684\u503c\u52a0\u4e0a\u5185\u5b58\u5730\u5740\u4e3a12345678\u6240\u5728\u76844\u5b57\u8282\u503c\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u4fdd\u5b58\u5728ebx\u5bc4\u5b58\u5668\u4e2d\n// \u4e0d\u540c\u7684\u5e73\u53f0\u548c\u7f16\u8bd1\u5668\u4e2d\uff0cdword\u5360\u7528\u7684\u5b57\u8282\u6570\u4e0d\u540c\uff0c\u572832\u4f4d\u7684windows\u4e2d\u4e00\u4e2aword\u536016\u5b57\u8282\uff0cdword\u536032\u5b57\u8282\n// 64\u4f4d\u4e2d\u4e00\u4e2aword\u536032\u5b57\u8282\uff0cdword\u536064\u5b57\u8282\n

    sub \u51cf\u6cd5\u6307\u4ee4

    sub ecx, 4H; // \u5c06ecx\u5bc4\u5b58\u5668\u7684\u503c\u51cf\u53bb4H\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u4fdd\u5b58\u5728eax\u5bc4\u5b58\u5668\u4e2d\nsub byte ptr[eax], ch; // \u5c06\u5185\u5b58\u5730\u5740\u4e3aeax\u6240\u6307\u5411\u7684\u6570\u636e\u7ed3\u6784\u6309\u5b57\u8282\u4e3a\u5355\u4f4d\u548cch\u5bc4\u5b58\u5668\u76f8\u51cf\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u6309\u5b57\u8282\u4e3a\u5355\u4f4d\u4fdd\u5b58\u5728eax\u6240\u6307\u5411\u7684\u4f4d\u7f6e\n

    inc\u52a01\u6307\u4ee4

    inc eax; // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u52a01\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u5b58\u653e\u5728\u539f\u6765\u7684\u5730\u65b9\n

    dec\u51cf1\u6307\u4ee4

    dec edx; // \u5c06dec\u5bc4\u5b58\u5668\u7684\u503c\u51cf1\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u5b58\u653e\u5728\u539f\u6765\u7684\u5730\u65b9\n

    cmp\u6bd4\u8f83\u6307\u4ee4

    \u79f0\u6bd4\u8f83\u6307\u4ee4\u683c\u5f0f\u662f\u201dcmp oper1, oper2\u201d

    cmp\u6307\u4ee4\u5c06oper1\u51cf\u53bboper2\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u4e0d\u4fdd\u5b58\uff0c\u53ea\u662f\u76f8\u5e94\u5730\u8bbe\u7f6e\u5bc4\u5b58\u5668eflags\u7684cf\uff0cpf\uff0czf\uff0caf\uff0csf\u548cof\u3002\u4e5f\u5c31\u662f\u8bf4\u53ef\u4ee5\u901a\u8fc7\u6d4b\u8bd5\u5bc4\u5b58\u5668eflags\u76f8\u5173\u7684\u6807\u5fd7\u503c\u5f97\u77e5cmp\u6267\u884c\u540e\u7684\u7ed3\u679c

    cmp eax, 56H; // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u51cf\u53bb56H\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u4e0d\u4fdd\u5b58\uff0c\u5e76\u4e14\u8bbe\u7f6e\u5bc4\u5b58\u5668eflags\u76f8\u5173\u7684\u6807\u5fd7\u4f4d\n

    neg

    neg\uff1a\u53d6\u8865\u6307\u4ee4\uff0c\u683c\u5f0f\u662fneg oper

    neg\u6307\u4ee4\u5c06oper\u64cd\u4f5c\u6570\u53d6\u53cd\uff0c\u7b80\u800c\u8a00\u4e4b\u5c31\u662f\u5c060\u51cf\u53bboper\u64cd\u4f5c\u6570\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u5b58\u5728oper\u81ea\u8eab\u4e2d\u3002

    neg eax; \n

    mul imul

    \u65e0\u7b26\u53f7\u4e58\u6cd5\u6307\u4ee4\u548c\u6709\u7b26\u53f7\u4e58\u6cd5\u6307\u4ee4\u3002mul\u6307\u4ee4\u9690\u542b\u4e86\u4e00\u4e2a\u53c2\u52a0\u8fd0\u7b97\u7684\u64cd\u4f5c\u6570eax\u5bc4\u5b58\u5668\uff0c\u5c06eax\u5bc4\u5b58\u5668\u91cc\u7684\u503c\u4e58oper\uff0c\u7ed3\u679c\u4fdd\u5b58\u5728eax\u4e2d\u3002\u5982\u679c\u7ed3\u679c\u8d85\u8fc732\u4f4d\u5219\u9ad832\u4f4d\u4f7f\u7528edx\u5bc4\u5b58\u5668\u4fdd\u5b58\uff0ceax\u5bc4\u5b58\u5668\u4fdd\u5b58\u4f4e32\u4f4d\u3002

    mul edx; // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u4e58\u4ee5edx\u5bc4\u5b58\u5668\u7684\u503c\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u4fdd\u5b58\u5728eax\u5bc4\u5b58\u5668\u4e2d\n

    div idiv

    \u9664\u6cd5\u6307\u4ee4\u548c\u6709\u7b26\u53f7\u9664\u6cd5\u6307\u4ee4\u3002

    div ecx; // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u63094\u5b57\u8282\u4e3a\u5355\u4f4d\u9664\u4ee5ecx\u5bc4\u5b58\u5668\u7684\u503c\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u5546\u4fdd\u5b58\u5728eax\u5bc4\u5b58\u5668\u4e2d\uff0c\u4f59\u6570\u4fdd\u5b58\u5728edx\u5bc4\u5b58\u5668\u4e2d\u3002\ndiv word ptr [esp+36]; // \u5c06eax\u5bc4\u5b58\u5668\u7684\u503c\u6309word\u4e3a\u5355\u4f4d\u9664\u4ee5\u5806\u6808\u5730\u5740\u4e3aesp+36\u6240\u6307\u5411\u7684\u6570\u636e\uff0c\u5f97\u51fa\u7684\u7ed3\u679c\u5546\u4fdd\u5b58\u5728eax\u5bc4\u5b58\u5668\u4e2d\uff0c\u4f59\u6570\u4fdd\u5b58\u5728edx\u5bc4\u5b58\u5668\u4e2d\u3002\n
    "},{"location":"CS/x86assm/#80386","title":"\u9ad8\u7ea7\u8bed\u8a00\u4e2d\u7684\u6570\u636e\u7ed3\u6784\u4e0e80386\u95f4\u63a5\u5bfb\u5740","text":"

    BX BP SI DI

    BX\uff1a

    BP\uff1a

    SI\uff1a

    DI\uff1a

    \u95f4\u63a5\u5bfb\u5740\uff1abx\uff0cbp\uff0csi\uff0cdi\uff0c\u53ef\u4ee5\u653e\u5728\u65b9\u62ec\u53f7\u5185

    \u7f3a\u7701\u6bb5\u5740\uff1ads\u548css\uff0c\u5982\u679c\u65b9\u62ec\u53f7\u5185\u6709bp\uff0c\u4e00\u5b9a\u662fss\uff0cbx\u4e00\u5b9a\u662fds

    CS (code segment): \u4ee3\u7801\u6bb5\u5bc4\u5b58\u5668\uff0c\u7528\u6765\u5b58\u50a8\u4ee3\u7801\u6bb5\u7684\u6bb5\u5730\u5740\u3002

    DS (data segment)\uff1a\u6570\u636e\u6bb5\u5bc4\u5b58\u5668\uff0c\u7528\u6765\u5b58\u50a8\u6570\u636e\u6bb5\u7684\u6bb5\u5730\u5740\u3002

    SS (stack segment)\uff1a\u5806\u6808\u6bb5\u5bc4\u5b58\u5668\uff0c\u7528\u6765\u5b58\u50a8\u5806\u6808\u6bb5\u7684\u6bb5\u5730\u5740\u3002

    ES (extra segment)\uff1a\u9644\u52a0\u6570\u636e\u6bb5\u5bc4\u5b58\u5668\uff0c\u7528\u6765\u5b58\u653e\u9644\u52a0\u6bb5\u7684\u6bb5\u5730\u5740\u3002\u6709\u65f6\uff0c\u4e00\u4e2a\u6570\u636e\u6bb5\u4e0d\u591f\u7528\u65f6\uff0c\u6211\u4eec\u53ef\u4ee5\u58f0\u660e\u4e00\u4e2a\u9644\u52a0\u6bb5\u6765\u5b58\u653e\u66f4\u591a\u7684\u6570\u636e\u3002\u4f8b\u5982\uff0c\u6211\u4eec\u53ef\u4ee5\u58f0\u660e 2 \u4e2a\u6570\u636e\u6bb5\uff0c\u5206\u522b\u7528 DS \u548c ES \u6307\u5411\u3002

    \u7a0b\u5e8f\u5f00\u59cb\u8fd0\u884c\u65f6\uff0cDOS \u4f1a\u628a ds \u548c es \u8d4b\u503c\u4e3a psp(program segment prefix) \u6bb5\u5730\u5740\u3002psp \u6bb5\u4f4d\u4e8e\u7a0b\u5e8f\u9996\u4e2a\u6bb5\u7684\u524d\u9762\uff0c\u957f\u5ea6\u4e3a 100h \u5b57\u8282\uff0c\u5176\u7528\u9014\u662f\u4fdd\u5b58\u5f53\u524d exe \u76f8\u5173\u7684\u4e00\u4e9b\u4fe1\u606f\uff0c\u5982 psp:80h \u5f00\u59cb\u5b58\u653e\u4e86 exe \u7684\u547d\u4ee4\u884c\u53c2\u6570\u3002

    \u95f4\u63a5\u5bfb\u5740\uff1a \u53ef\u4ee5\u2f64\u4f5c\u95f4\u63a5\u5bfb\u5740\u7684\u5bc4\u5b58\u5668\u53ea\u6709\u56db\u4e2a\uff1abx, bp, si, di [bx], [bp], [si], [di]\u662f\u6700\u7b80\u5355\u7684\u95f4\u63a5\u5bfb\u5740 [bx + si], [bp + si], [bx + di], [bp + di]\u6ce8\u610f\u524d\u2faf\u5fc5\u987b\u662fbx/bp\uff0c\u540e\u2faf\u5fc5\u987b\u662fdi/si [bx+2] [bp-2] [si+1] [di-1] [bx+si+2] [bx+di-2]

    [bp+si+1] [bp+di-1] tips\uff1a\u4e24\u4e2a\u5bc4\u5b58\u5668\u76f8\u52a0\u7684\u95f4\u63a5\u5bfb\u5740\u2f45\u5f0f\u4e2d, bx\u6216bp\u901a\u5e38\u2f64\u6765\u8868\u793a\u6570\u7ec4\u7684\u2fb8\u5730\u5740, \u2f7dsi\u6216di\u5219\u2f64\u6765\u8868\u793a\u4e0b \u6807\u3002

    \u7f3a\u7701\u6bb5\u5740\uff1a\u4e0d\u542bbp\u7684\u6e90\u64cd\u4f5c\u6570\u2f00\u822c\u90fd\u7701\u7565\u7684\u6bb5\u5730\u5740ds\uff0c\u542b\u6709bp\u7684\u6e90\u64cd\u4f5c\u6570\u7701\u7565\u4e86ss\uff0c\u2f7d\u8fd9\u4e2a\u9ed8\u8ba4\u7684\u6bb5\u5730\u5740\u662f \u53ef\u4ee5\u88ab\u6539\u53d8\u7684

    \u7528\u5806\u6808\u4f20\u9012\u53c2\u6570\u65f6\uff0c\u5982\u4f55\u7528[bp+]\u5b9e\u73b0\u5bf9\u53c2\u6570\u7684\u5f15\u7528\uff1f

    bp + \u591a\u5c11\u5c31\u662f\u6808\u91cc\u7684\u591a\u5c11

    \u738b\u723d\u300a\u6c47\u7f16\u8bed\u2f94\u300b\u7b2c\u56db\u7248 \u9644\u5f554:\u2f64\u6808\u4f20\u9012\u53c2\u6570

    difcube:\n    mov bp, sp\n    mov ax, [bp+4]  ;a\u7684\u503c\u9001\u5165ax\u4e2d\n    sub ax, [bp+6]  ;\u51cf\u6808\u4e2db\u7684\u503c\n    mov bp, ax\n    mul bp\n    mul bp\n    pop bp\n    ret 4\n
    "},{"location":"CS/x86assm/#_16","title":"\u5176\u5b83\u7684\u7b14\u8bb0","text":""},{"location":"CS/x86assm/#x86_1","title":"x86\uff1a","text":"

    Intel\u4ece16\u4f4d\u5fae\u5904\u7406\u56688086\u5f00\u59cb\u7684\u6574\u4e2aCPU\u82af\u7247\u7cfb\u5217\uff0c\u7cfb\u5217\u4e2d\u7684\u6bcf\u79cd\u578b\u53f7\u90fd\u4fdd\u6301\u4e0e\u4ee5\u524d\u7684\u5404\u79cd\u578b\u53f7\u517c\u5bb9\uff0c\u4e3b\u8981\u67098086\uff0c8088\uff0816\u4f4dCPU\uff09\uff0c80186\uff0c80286\uff08\u8fd9\u4e24\u4e2a\u662f\u8fc7\u6e21\u4ea7\u54c1\uff09\uff0c 80386\uff0c80486\u4ee5\u53ca\u4ee5\u540e\u5404\u79cd\u578b\u53f7\u7684Pentium\u82af\u7247\uff0832\u4f4dCPU\uff09\uff0c\u901a\u5e38\u6240\u8bf4\u7684x86\u90fd\u662f\u630732\u4f4dCPU

    80386: 32\u4f4d\u6c47\u7f16\u3002

    80836\u5bc4\u5b58\u5668

    \u901a\u7528\u5bc4\u5b58\u5668(EAX EBX ECX EDX,ESP,EBP,ESI,EDI)

    \u901a\u7528\u5bc4\u5b58\u5668\u4e0e8086\u7684\u5bc4\u5b58\u5668\u76f8\u6bd4,\u753116\u4f4d\u53d8\u4e3a\u4e8632\u4f4d

    ESP:\u6808\u9876

    EBP:\u6808\u5e95

    EAX\uff0cEBX\uff0cECX\uff0cEDX\u901a\u7528\u5bc4\u5b58\u5668

    EAX\uff1a\u7d2f\u52a0\u5668\uff08\u4e58\u6cd5\u7684\u65f6\u5019\u5b58\u4f4e\u4f4d\uff09

    EBX\uff1a\u57fa\u5740\uff08\uff3bEBX\uff0b100\uff28\uff3d\uff09

    ECX\uff1a\u8ba1\u6570\uff08\u5faa\u73af\u7684\u65f6\u5019\u8ba1\u6570\uff09

    EDX\uff1a\u6570\u636e\uff08\u9ed8\u8ba4EDX\uff0a10H\uff0b\uff0e\uff0e\uff0e\uff1b\u4e58\u6cd5\u7684\u65f6\u5019\u5b58\u9ad8\u4f4d\uff09

    ESI\uff0cEDI\uff1a\u53d8\u5740\u5bc4\u5b58\u5668

    ESI\uff1a\u6e90\u53d8\u5740\u5bc4\u5b58\u5668

    EDI\uff1a\u76ee\u7684\u53d8\u5740\u5bc4\u5b58\u5668\u3000\u4e0eEBX\u57fa\u5740\u642d\u914d\u4f7f\u7528

    "},{"location":"CS/x86assm/#_17","title":"\u53c2\u8003\u6587\u732e","text":"

    asm_sum.doc

    xxjj\u7684\u300a\u6c47\u7f16\u8bed\u8a00\u8003\u8bd5\u603b\u7ed3\u300b https://www.yuque.com/xianyuxuan/coding/mkte6u

    [80386]80x86\u6c47\u7f16\u6307\u4ee4_CarlosX\u7684\u535a\u5ba2-CSDN\u535a\u5ba2_80386\u6307\u4ee4\u96c6

    80386 \u7b97\u672f\u8fd0\u7b97\u6307\u4ee4\uff0c\u903b\u8f91\u8fd0\u7b97\u6307\u4ee4\uff0c\u79fb\u4f4d\u6307\u4ee4 (\u4e09) _ttzyanswer\u7684\u535a\u5ba2-CSDN\u535a\u5ba2

    "},{"location":"CS/CPP/copy/","title":"\u62f7\u8d1d Copy","text":"

    \u6d45\u62f7\u8d1d\uff08\u9ed8\u8ba4\u62f7\u8d1d\u51fd\u6570\uff09\uff1a\u5c06\u539f\u5bf9\u8c61\u6216\u539f\u6570\u7ec4\u7684\u5f15\u7528\u76f4\u63a5\u8d4b\u503c\u7ed9\u65b0\u5bf9\u8c61\u3001\u65b0\u6570\u7ec4\uff0c\u65b0\u5bf9\u8c61/\u65b0\u6570\u7ec4\u53ea\u662f\u539f\u5bf9\u8c61\u7684\u4e00\u4e2a\u5f15\u7528\u3002 \u6df1\u62f7\u8d1d\uff1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5bf9\u8c61\u548c\u6570\u7ec4\uff0c\u5c06\u539f\u5bf9\u8c61\u7684\u5404\u9879\u5c5e\u6027\u7684\u201c\u503c\u201d\uff08\u6570\u7ec4\u91cc\u7684\u6240\u6709\u5143\u7d20\uff09\u62f7\u8d1d\u8fc7\u6765\u3002\u662f\u201c\u503c\u201d\u800c\u4e0d\u662f\u5f15\u7528\u3002

    \u4f7f\u7528\u65f6\u6ce8\u610f\uff1a \u6df1\u62f7\u8d1d\u4f1a\u5728\u5806\u5185\u5b58\u91cc\u53e6\u5916\u7533\u8bf7\u7a7a\u95f4\u6765\u50a8\u5b58\u6570\u636e\uff0c\u4ece\u800c\u89e3\u51b3\u4e86\u6307\u9488\u60ac\u6302\u95ee\u9898\u3002\u5f53\u6570\u636e\u6210\u5458\u4e2d\u6709\u6307\u9488\u65f6\uff0c\u5fc5\u987b\u4f7f\u7528\u6df1\u62f7\u8d1d\u3002

    \u6df1\u62f7\u8d1d\u7684\u5199\u6cd5

    class MyString\n{\nprivate:\nchar *str;\npublic:\nMyString(const char *p=nullstr)//\u7f3a\u7701\u6784\u9020\u51fd\u6570\n:str(nullptr)\n{\nif(p!=nullptr)\n{\nint len=strlen(p)+1;\nstr=new char[len];\nstrcpy_s(str,lrn,p);\n}\n}\nMyString(const MyString& ms)//\u62f7\u8d1d\u6784\u9020\u51fd\u6570\uff0c\u6df1\u62f7\u8d1d\n{\nint n = strlen(ms.str) + 1;\n*str = new char[n];\nstrcpy_s = (str, n, ms.str);\n//int *str\n// this->str=new int(*ms.str)\n}\n~MyString()//\u6790\u6784\u51fd\u6570\n{\n}\n}\uff1b\n

    "},{"location":"CS/CPP/course/","title":"Courses \u542c\u8bfe","text":""},{"location":"CS/CPP/course/#cs106bcs106l","title":"\u5173\u4e8eCS106B\u548cCS106L","text":"

    CS106B\u504f\u7b80\u5355\uff0c\u76f8\u5f53\u4e8eZJU\u7684\u6570\u636e\u7ed3\u6784+C++\u7684STL\u7528\u6cd5\u4e00\u5757\u8bb2\uff0c\u53e6\u5916\u518d\u8bb2\u4e00\u4e9bFDS\u7684\u7b97\u6cd5\u3002 CS106L\u662f\u4e13\u95e8\u8bb2C++\u8fdb\u9636\u7279\u6027\u7684\u3002

    \u56e0\u4e3a\u5728\u542cCS106B\u4e4b\u524d\u5b66\u8fc7FDS\uff0cCS106B\u82b1\u4e00\u5929\u901f\u901a\u4e86\u4e00\u4e0b\uff0c\u91cd\u590d\u5185\u5bb9\u6709\u70b9\u591a\uff0c\u622a\u4e0b\u4e86\u4e00\u5e45\u56fe\u3002

    CS106L\u63d0\u4f9b\u7684C++\u5b66\u4e60\u8def\u7ebf\u56fe

    "},{"location":"CS/CPP/course/#zju","title":"ZJU\u8bfe\u7a0b","text":""},{"location":"CS/CPP/course/#_1","title":"\u8bfe\u7a0b\u53c2\u8003\u8d44\u6599","text":"

    CPP Reference Standard C++ CppCon

    "},{"location":"CS/CPP/course/#_2","title":"\u4e0a\u8bfe\u5fc3\u5f97","text":"

    \u6211\u8ddf\u7684\u662fcx\u8001\u5e08\u7684\u73ed\uff0c\u5e94\u8be5\u662f\u6559\u5f97\u6700\u597d\u7684\u4e00\u6863orz \u4f46\u662f\u4e0a\u8bfe\u5185\u5bb9\u4ecd\u4e0d\u80fd\u8986\u76d6\u4f5c\u4e1a\u548c\u671f\u672b\u7684\u5185\u5bb9\uff0c\u89c9\u5f97\u542c\u8bfe\u5185\u5bb9\u53ea\u80fd\u8d77\u5230\u4e00\u4e2a\u9aa8\u67b6\u4f5c\u7528\uff0c\u8bfe\u540e\u9700\u8981\u82b1\u4e0a\u8bfe2\u81f33\u500d\u7684\u65f6\u95f4\u81ea\u5b66\u81ea\u5df1\u6574\u7406\u7b14\u8bb0\uff0c\u591a\u8bfb\u591a\u5199\u4ee3\u7801\uff0c\u4e0d\u7136\u671f\u672b\u4f1a\u9047\u5230\u6ca1\u89c1\u8fc7\u7684\u7279\u6027\uff0c\u4f1a\u6709\u70b9\u60e8orz\uff08\u50cf\u6211\u4e00\u6837\uff09

    "},{"location":"CS/CPP/course/#_3","title":"\u9762\u5411\u5bf9\u8c61\u56db\u5927\u7279\u6027","text":""},{"location":"CS/CPP/course/#_4","title":"\u7c7b\u548c\u5bf9\u8c61/\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570","text":""},{"location":"CS/CPP/course/#class-struct","title":"class \u4e0e struct \u7684\u6bd4\u8f83","text":""},{"location":"CS/CPP/course/#_5","title":"\u7c7b\u7684\u7ed3\u6784\uff1a\u6570\u636e\u6210\u5458\u548c\u6210\u5458\u51fd\u6570","text":""},{"location":"CS/CPP/course/#_6","title":"\u7c7b\u7684\u58f0\u660e\u683c\u5f0f","text":"
    class Name\n{\n    public:\n        public_data;\n        public_functions;\n    protected:\n        protected_data;\n        protected_functions;\n    private:\n        private_data;\n        private_functions;\n}\n
    "},{"location":"CS/CPP/course/#_7","title":"\u4e60\u60ef","text":""},{"location":"CS/CPP/course/#_8","title":"\u7c7b\u5916\u5b9a\u4e49","text":"

    \u8fd4\u56de\u7c7b\u578b \u7c7b\u540d::\u6210\u5458\u51fd\u6570\u540d\uff08\u53c2\u6570\u8868\uff09 { // \u51fd\u6570\u4f53 }

    "},{"location":"CS/CPP/course/#_9","title":"\u5185\u8054\u51fd\u6570\u548c\u5916\u8054\u51fd\u6570","text":""},{"location":"CS/CPP/course/#_10","title":"\u5bf9\u8c61","text":"

    \u53ef\u4ee5\u628a\u76f8\u540c\u6570\u636e\u7ed3\u6784\u548c\u76f8\u540c\u64cd\u4f5c\u96c6\u7684\u5bf9\u8c61\u770b\u4f5c\u5c5e\u4e8e\u540c\u4e00\u7c7b\u3002\u5bf9\u8c61\u662f\u7c7b\u7684\u5b9e\u4f8b\u3002

    "},{"location":"CS/CPP/course/#_11","title":"\u5bf9\u8c61\u7684\u5b9a\u4e49","text":""},{"location":"CS/CPP/course/#_12","title":"\u5bf9\u8c61\u4e2d\u6210\u5458\u7684\u8bbf\u95ee","text":"

    \u5bf9\u8c61\u540d.\u6570\u636e\u6210\u5458\u540d\uff08\u662f \u5bf9\u8c61\u540d.\u7c7b\u540d::\u6210\u5458\u540d \u7684\u7f29\u5199\uff09 \u5bf9\u8c61\u540d.\u6210\u5458\u51fd\u6570\u540d\uff08\u53c2\u6570\u8868\uff09

    class Sample\n{\npublic:\nint k;\nint geti(){return i;}\nint getj(){return j;}\nint getk(){return k;}\nprivate:\nint i;\nprotected:\nint j;\n};\nint main()\n{\nSample a;\na.i;        // \u975e\u6cd5\na.j:        // \u975e\u6cd5\na.k;        // \u5408\u6cd5\n}\n

    "},{"location":"CS/CPP/course/#_13","title":"\u7c7b\u7684\u4f5c\u7528\u57df","text":""},{"location":"CS/CPP/course/#_14","title":"\u6784\u9020\u51fd\u6570\u4e0e\u6790\u6784\u51fd\u6570","text":"

    \u7c7b\u7684\u6784\u9020\u51fd\u6570\u662f\u7c7b\u7684\u4e00\u4e2a\u7279\u6b8a\u6210\u5458\u51fd\u6570\uff0c\u6ca1\u6709\u8fd4\u56de\u7c7b\u578b\uff08\u4e0d\u662fvoid\uff09\uff0c\u53ef\u4ee5\u6709\u53c2\u6570\uff0c\u51fd\u6570\u540d\u548c\u7c7b\u540d\u4e00\u6837\u3002\u5f53\u521b\u5efa\u7c7b\u7684\u4e00\u4e2a\u65b0\u5bf9\u8c61\u65f6\uff0c\u81ea\u52a8\u8c03\u7528\u6784\u9020\u51fd\u6570\uff0c\u5b8c\u6210\u521d\u59cb\u5316\u5de5\u4f5c\u3002

    "},{"location":"CS/CPP/course/#namespace","title":"Namespace","text":""},{"location":"CS/CPP/course/#namespace_1","title":"\u4ec0\u4e48\u662fnamespace\uff1f","text":"

    \u662f\u5355\u4e00\u7684\u5168\u5c40\u540d\u5b57\u7a7a\u95f4\u3002\u9632\u6b62\u5728\u4e00\u4e2a\u7a7a\u95f4\u4e2d\u76f8\u540c\u7684\u540d\u5b57\u5f15\u8d77\u51b2\u7a81\u3002 \u4f8b\u5b50\uff1a

    namespace myown1\n{\nstring user_name = \"myown1\";\n}\nnamespace myown2\n{\nstring user_name = \"myown2\";\n}\nint main()\n{\n// using namespace myown1; \ncout << \"\\\\n\" << \"Hello, \"\n<< myown1::user_name\n<< \"...and goodbye!\\\\n\"\ncout << \"\\\\n\" << \"Hello, \"\n<< myown2::user_name\n<< \"...and goodbye!\\\\n\"\nreturn 0;\n}\n

    \u5173\u952e\u8bcdusing\u5c06\u4e00\u4e2a\u540d\u5b57\u7a7a\u95f4\u53d8\u4e3a\u53ef\u89c1\uff0c\u4e0d\u4f1a\u8986\u76d6\u5f53\u524d\u7684namespace\u3002

    "},{"location":"CS/CPP/course/#_15","title":"\u7ee7\u627f\u4e0e\u6d3e\u751f\u7c7b","text":" \u76ee\u7684 \u4ee3\u7801\u7684\u91cd\u7528\u548c\u4ee3\u7801\u7684\u6269\u5145 \u7ee7\u627f\u79cd\u7c7b \u5355\u7ee7\u627f/\u591a\u7ee7\u627f \u7ee7\u627f\u5185\u5bb9 \u9664\u6784\u9020\u51fd\u6570/\u6790\u6784\u51fd\u6570/\u79c1\u6709\u6210\u5458\u5916\u7684\u6240\u6709\u6210\u5458"},{"location":"CS/CPP/course/#_16","title":"\u7ee7\u627f\u7684\u8bbf\u95ee\u63a7\u5236","text":"

    \u6d3e\u751f\u7c7b\u7ee7\u627f\u4e86\u57fa\u7c7b\u4e2d\u9664\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u4e4b\u5916\u7684\u6240\u6709\u6210\u5458\u3002\u6d3e\u751f\u7c7b\u7684\u6210\u5458\u5305\u62ec\uff1a - \u7ee7\u627f\u57fa\u7c7b\u7684\u6210\u5458 - \u6d3e\u751f\u7c7b\u5b9a\u4e49\u65f6\u58f0\u660e\u7684\u6210\u5458

    \u4ece\u5df2\u6709\u7c7b\u6d3e\u751f\u51fa\u65b0\u7c7b\u65f6\uff0c\u53ef\u4ee5\u5728\u6d3e\u751f\u7c7b\u5185\u5b8c\u6210\u4ee5\u4e0b\u51e0\u79cd\u529f\u80fd\uff1a - \u589e\u52a0\u65b0\u7684\u6570\u636e\u6210\u5458 - \u589e\u52a0\u65b0\u7684\u6210\u5458\u51fd\u6570 - \u91cd\u65b0\u5b9a\u4e49\u57fa\u7c7b\u4e2d\u5df2\u6709\u7684\u6210\u5458\u51fd\u6570 - \u53ef\u4ee5\u6539\u53d8\u73b0\u6709\u6210\u5458\u7684\u5c5e\u6027

    \u58f0\u660e\u4e00\u4e2a\u6d3e\u751f\u7c7b\u7684\u4e00\u822c\u683c\u5f0f

    class \u6d3e\u751f\u7c7b\u540d:\u7ee7\u627f\u65b9\u5f0f \u57fa\u7c7b\u540d\n{\n// \u6d3e\u751f\u7c7b\u65b0\u589e\u7684\u6570\u636e\u6210\u5458\u548c\u6210\u5458\u51fd\u6570\n};\n

    \u4e09\u79cd\u7ee7\u627f\u65b9\u5f0f

    class employee: public person\n{};\n// default\nclass employee: private person\n{};\nclass employee: protected person\n{};\n

    \u57fa\u7c7b\u6210\u5458\u5728\u6d3e\u751f\u7c7b\u4e2d\u7684\u8bbf\u95ee\u5c5e\u6027

    \u5728\u57fa\u7c7b\u4e2d\u7684\u8bbf\u95ee\u5c5e\u6027 \u7ee7\u627f\u65b9\u5f0f \u5728\u6d3e\u751f\u7c7b\u4e2d\u7684\u8bbf\u95ee\u5c5e\u6027 \u89e3\u91ca private public inaccessible \u57fa\u7c7b\u4e2dprivate\u7684\u5bf9\u8c61\u5728\u7c7b\u5916\u5f53\u7136\u4e0d\u53ef\u8bbf\u95ee private private inaccessible private protected inaccessible public public public \u57fa\u7c7b\u4e0d\u7ba1 public private private public protected protected protected public protected \u6743\u9650\u4f1a\u88ab\u7ee7\u627f\u65b9\u5f0f\u7f29\u5c0f\u800c\u4e0d\u4f1a\u653e\u5927 protected private private protected protected protected

    \u6d3e\u751f\u7c7b\u5bf9\u57fa\u7c7b\u7684\u8bbf\u95ee\u89c4\u5219 - \u5185\u90e8\u8bbf\u95ee\uff1a\u7531\u6d3e\u751f\u7c7b\u4e2d\u65b0\u589e\u6210\u5458\u5bf9\u57fa\u7c7b\u7ee7\u627f\u6765\u7684\u6210\u5458\u7684\u8bbf\u95ee\u3002 - \u5bf9\u8c61\u8bbf\u95ee\uff1a\u5728\u6d3e\u751f\u7c7b\u5916\u90e8\uff0c\u901a\u8fc7\u6d3e\u751f\u7c7b\u7684\u5bf9\u8c61\u5bf9\u4ece\u57fa\u7c7b\u7ee7\u627f\u6765\u7684\u6210\u5458\u7684\u8bbf\u95ee\u3002

    \u57fa\u7c7b\u6210\u5458 private\u6210\u5458 public\u6210\u5458 protected\u6210\u5458 \u5185\u90e8\u8bbf\u95ee \u4e0d\u53ef\u8bbf\u95ee \u53ef\u8bbf\u95ee \u53ef\u8bbf\u95ee \u5bf9\u8c61\u8bbf\u95ee \u4e0d\u53ef\u8bbf\u95ee \u4e0d\u53ef\u8bbf\u95ee \u4e0d\u53ef\u8bbf\u95ee

    \u79c1\u6709\u7ee7\u627f\u4e3e\u4f8b

    class Point\n{\npublic:\nvoid InitP(float x = 0, float y = 0)\n{\nthis->X = x;\nthis->Y = y;\n}\nvoid Move(float offX, float offY)\n{\nX += offX;\nY += offY;\n}\nfloat GetX() const{return X;}\nfloat GetY() const{return Y;}\nprivate:\nfloat X, Y;\n};\nclass Rectangle: private Point // \u6d3e\u751f\u7c7b\u58f0\u660e\n{\npublic: //\u65b0\u589e\u5916\u90e8\u63a5\u53e3\nvoid InitR(float x, float y, float w, float h)\n{\nInitR(x, y);\nW = w;\nH = h;\n} // \nvoid Move(float xOff, float yOff)\n{\nPoint::\n}\n}\n

    "},{"location":"CS/CPP/file_io/","title":"\u6587\u4ef6\u8bfb\u5199 File IO","text":"

    #include <fstream>\n
    ifstream fin;\nofstream fout;\n

    \u6587\u4ef6\u6253\u5f00\u65b9\u5f0f

    ios::in \u53ea\u8bfb ios::out \u53ea\u5199 ios::app \u4ece\u6587\u4ef6\u672b\u5c3e\u5f00\u59cb\u5199 ios::binary \u4e8c\u8fdb\u5236\u6a21\u5f0f"},{"location":"CS/CPP/final_review/","title":"ZJU \u671f\u672b\u590d\u4e60","text":"

    \u9762\u5411\u671f\u672b\u9898\u7684\u76f8\u4f3c\u77e5\u8bc6\u70b9\u805a\u7c7b

    "},{"location":"CS/CPP/final_review/#_1","title":"\u6784\u9020\u987a\u5e8f","text":"

    \uff081\uff09main\u51fd\u6570\u4ee5\u5916\u7684\u5bf9\u8c61\uff0c\u5168\u5c40\u7c7b\u5b9a\u4e49\u540e\u76f4\u63a5\u5b9a\u4e49\u7684\u7c7b\u5bf9\u8c61 \uff082\uff09main\u51fd\u6570\u5185\u7684\u5bf9\u8c61 \uff083\uff09\u7236\u7c7b\u6784\u9020 \uff084\uff09\u5b50\u7c7b\u7c7b\u6210\u5458 \uff085\uff09\u5b50\u7c7b\u6784\u9020 \u6790\u6784\u987a\u5e8f\u76f8\u53cd

    "},{"location":"CS/CPP/final_review/#_2","title":"\u4ec0\u4e48\u65f6\u5019\u751f\u6210\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff1f","text":"

    \u5982\u679c\u5df2\u7ecf\u6709\u6784\u9020\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u4e0d\u4f1a\u751f\u6210\u9ed8\u8ba4\u6784\u9020\u51fd\u6570 \u6ca1\u6709\u7684\u65f6\u5019\u4e5f\u4e0d\u4e00\u5b9a\u4f1a\u751f\u6210 \u9700\u8981\u7528\u624d\u751f\u6210

    "},{"location":"CS/CPP/final_review/#_3","title":"\u91cd\u8f7d\u89c4\u5219","text":"

    \u4e0d\u80fd\u91cd\u8f7d\u7684\u6709\uff1a - \u4f5c\u7528\u57df\u64cd\u4f5c\u7b26:: - \u6761\u4ef6\u64cd\u4f5c\u7b26?:\uff08\u5e94\u8be5\u662f\u95ee\u53f7\u8868\u8fbe\u5f0f\uff1f\uff09 - \u70b9\u64cd\u4f5c\u7b26\u3001\u7c7b\u6210\u5458\u6307\u9488 - \u9884\u5904\u7406\u7b26\u53f7#

    \u53ea\u80fd\u91cd\u8f7d\u4e3a\u53cb\u5143\u4e0d\u80fd\u6210\u5458\u51fd\u6570\uff1a - <<\u548c>> \u539f\u56e0\u662f\u6210\u5458\u51fd\u6570\u91cd\u8f7d\uff0c\u53ea\u80fd\u5e26\u4e00\u4e2a\u53c2\u6570\uff0clhs\u5fc5\u987b\u662f\u6210\u5458\u81ea\u8eab

    \u4f46\u662f\u6d41\u64cd\u4f5c\u7b26\u5de6\u8fb9\u662fcin\u6216cout\uff0c\u91cd\u8f7d\u4e3a\u53cb\u5143\u51fd\u6570\u65f6\uff0c\u53ef\u4ee5\u6bd4\u6210\u5458\u51fd\u6570\u591a\u8bf4\u660e\u4e00\u4e2a\u5f62\u53c2\u505alhs

    \u91cd\u8f7d\u548c\u91cd\u5199\u90fd\u662f\u591a\u6001\uff1a \u91cd\u8f7d\uff1a\u8fd0\u884c\u65f6\u591a\u6001 \u91cd\u5199\uff1a\u7f16\u8bd1\u65f6\u591a\u6001

    static\u548cvirtual\u53ea\u80fd\u6709\u4e00\u4e2a

    \u6790\u6784\u51fd\u6570\u4e0d\u80fd\u5e26\u53c2\u6570

    "},{"location":"CS/CPP/final_review/#_4","title":"\u5b50\u7c7b\u548c\u7236\u7c7b\u6307\u9488","text":""},{"location":"CS/CPP/final_review/#static_castdynamic_cast","title":"static_cast\u548cdynamic_cast","text":""},{"location":"CS/CPP/final_review/#_5","title":"\u5f15\u7528","text":"

    \u4ec0\u4e48\u65f6\u5019\u5fc5\u987b\u7528\u5e38\u5f15\u7528\uff08const &\uff09\uff1a\u5f15\u7528\u578b\u53c2\u6570\u5e94\u5f53\u5728\u80fd\u5b9a\u4e49\u4e3aconst\u7684\u60c5\u51b5\u4e0b\u5c3d\u91cf\u5b9a\u4e49\u4e3aconst\u3002

    \u4f7f\u7528\u5f15\u7528\u7684\u4e3b\u8981\u539f\u56e0\uff1a \u7a0b\u5e8f\u80fd\u591f\u4fee\u6539\u8c03\u7528\u51fd\u6570\u4e2d\u7684\u6570\u636e\u5bf9\u8c61 \u901a\u8fc7\u4f20\u9012\u5f15\u7528\u800c\u4e0d\u662f\u6574\u4e2a\u6570\u636e\u5bf9\u8c61\uff0c\u53ef\u4ee5\u63d0\u9ad8\u7a0b\u5e8f\u7684\u8fd0\u884c\u901f\u5ea6

    \u53ea\u4f7f\u7528\u4f20\u9012\u8fc7\u6765\u7684\u503c\u800c\u4e0d\u4fee\u6539 \u9700\u8981\u4fee\u6539\u4f20\u9012\u8fc7\u6765\u7684\u503c \u5185\u7f6e\u6570\u636e\u7c7b\u578b\uff08\u5c0f\u578b\u7ed3\u6784\uff09 \u6309\u503c\u4f20\u9012 \u6307\u9488\u4f20\u9012 \u6570\u7ec4 \u6307\u9488\u4f20\u9012 \u6307\u9488\u4f20\u9012 \u8f83\u5927\u7684\u7ed3\u6784\uff09 \u6307\u9488\u6216\u5f15\u7528 \u6307\u9488\u6216\u5f15\u7528 \u7c7b/\u5bf9\u8c61 \u5f15\u7528\u4f20\u9012 \u5f15\u7528\u4f20\u9012

    \u5f15\u7528\u548c\u6307\u9488\u7684\u533a\u522b\uff1a \u53ef\u4ee5\u628a\u5f15\u7528\u7406\u89e3\u6210\u4e00\u4e2a\u5e38\u91cf\u6307\u9488\uff0c\u56e0\u6b64\u5f15\u7528\u58f0\u660e\u65f6\u5c31\u5fc5\u987b\u521d\u59cb\u5316\uff0c\u4e00\u7ecf\u58f0\u660e\u4e0d\u80fd\u518d\u548c\u5176\u5b83\u5bf9\u8c61\u7ed1\u5b9a\u3002

    Copy constructor must pass its first argument by reference

    "},{"location":"CS/CPP/final_review/#_6","title":"\u7c7b\u5185\u9759\u6001\u6210\u5458\u7684\u521d\u59cb\u5316","text":"

    const static\u53ef\u4ee5\u5728\u7c7b\u5185\u76f4\u63a5\u521d\u59cb\u5316\uff0c\u975econst static\u6210\u5458\u9700\u8981\u5728\u7c7b\u5916\u521d\u59cb\u5316\u3002

    \u53ef\u4ee5\u8c03\u7528\u9ed8\u8ba4\u521d\u59cb\u5316A::n\uff0c\u81ea\u52a8\u521d\u59cb\u5316\u4e3a0\u3002\u6b64\u65f6\u8c03\u7528\u9ed8\u8ba4\u6784\u9020\u4e0d\u80fd\u7528n()\uff0c\u5426\u5219\u8ba4\u4e3a\u662f\u4e2a\u51fd\u6570\u3002\u6216\u8005\u5e26\u521d\u59cb\u503c\u521d\u59cb\u5316A::n(9)

    static\u548cconst - \u6ca1\u6709static\u5c31\u662fconst\u7684\u8bf4\u6cd5

    const\u7684\u51e0\u79cd\u5f62\u5f0f

    const int& fun(int& a); // \u4fee\u9970\u8fd4\u56de\u503c \nint& fun(const int& a); // \u4fee\u9970\u5f62\u53c2 \nint& fun(int& a) const {} // const\u6210\u5458\u51fd\u6570\n

    const\u8fd4\u56de\u503c\uff1a\u662f\u4fee\u9970\u8fd4\u56de\u503c\u5f15\u7528\u7c7b\u578b\u7684\u65f6\u5019\uff0c\u4e3a\u4e86\u907f\u514d\u8fd4\u56de\u503c\u88ab\u4fee\u6539\u7684\u60c5\u51b5

    \u8fd4\u56de\u503c\u662f\u5f15\u7528\u7684\u51fd\u6570\uff0c\u8fd9\u4e2a\u5f15\u7528\u5fc5\u7136\u4e0d\u662f\u4e34\u65f6\u5bf9\u8c61\u7684\u5f15\u7528\uff0c\u4e00\u5b9a\u662f\u6210\u5458\u53d8\u91cf\u6216\u8005\u51fd\u6570\u53c2\u6570\u3002\uff08\u53ea\u8981\u53c2\u6570\u4e0d\u9700\u8981\u4fee\u6539\u4e00\u5b9a\u52a0\u4e0aconst\uff09

    const\u53c2\u6570\u5fc5\u987b\u4f20\u7b7e\u540d\u540e\u5e26const\u7684\u51fd\u6570\uff1a\u8981\u628athis\u6307\u9488\u53d8\u6210const

    \u600e\u6837\u6784\u6210\u91cd\u8f7d - \u4e0d\u91cd\u8f7d\u7684

    const int& fun(int& a); // \u53c2\u6570\u5217\u8868\u6ca1\u6709\u53d8 \nint& fun(const int a); // \u56e0\u4e3a\u662f\u503c\u4f20\u9012\uff0c\u4e0d\u662fconst\u7684\u4e5f\u80fdtype conversion\n

    "},{"location":"CS/CPP/final_review/#inline-function","title":"inline function","text":"

    \u4ee3\u66ff\u5b8f\u7684\u4e00\u79cd\u64cd\u4f5c\uff0c\u5728\u7f16\u8bd1\u9636\u6bb5\u628a\u6240\u6709\u51fd\u6570\u540d\u66ff\u6362\u6210inline function\u7684\u5b9e\u73b0 \u6bd4\u51fd\u6570\u7684\u4f18\u70b9\uff1a\u4e0d\u7528\u9891\u7e41\u8fdb\u6808\u51fa\u6808 \u6bd4\u5b8f\u7684\u4f18\u70b9\uff1a\u6709\u7c7b\u578b\u68c0\u67e5\uff0c\u80fd\u5199\u591a\u884c\uff0c\u80fd\u64cd\u4f5c\u7c7b\u7684\u79c1\u6709\u6210\u5458 inline\u5173\u952e\u5b57\u53ea\u6709\u51fa\u73b0\u5728\u51fd\u6570\u7684\u5b9a\u4e49\u800c\u4e0d\u662f\u58f0\u660e\u524d\u65f6\u624d\u6709\u7528\u3002 \u9759\u6001\u7ed1\u5b9a\u00a0Static\u00a0Binding \u3002\u80fd\u591f\u660e\u786e\u8fd0\u884c\u7684\u662f\u54ea\u4e2a\u7c7b\u7684\u65b9\u6cd5\u65f6\u4f1a\u53d1\u751f\u9759\u6001\u7ed1\u5b9a \u3002\u53d1\u751f\u5728\u7f16\u8bd1\u65f6\u523b\uff0c\u6240\u4ee5\u53c8\u53eb\u65e9\u7ed1\u5b9a \u52a8\u6001\u7ed1\u5b9aDynamic\u00a0Binding \u3002\u51fa\u73b0\u591a\u6001\uff0c\u7f16\u8bd1\u5668\u4e0d\u80fd\u660e\u786e\u5230\u5e95\u4f7f\u7528\u54ea\u4e2a\u7c7b\u7684\u65b9\u6cd5\u65f6\u53d1\u751f\u52a8\u6001\u7ed1\u5b9a \u3002\u53d1\u751f\u5728\u8fd0\u884c\u65f6\u523b\uff0c\u6240\u4ee5\u53c8\u53eb\u665a\u7ed1\u5b9a \u3002\u53ea\u6709\u5b58\u5728\u00a0virtual\u00a0\u65e6\u901a\u8fc7\u6307\u9488\u8bbf\u95ee\u65f6\uff0c\u624d\u4f1a\u53d1\u751f\u52a8\u6001\u7ed1\u5b9a

    static binding \u7f16\u8bd1\u65f6

    class Animal { public: void eat() { cout << \"Animal eats\" << endl; } }; class Dog : public Animal { public: void eat() { cout << \"Dog eats\" << endl; } };\n

    dynamic binding \u8fd0\u884c\u65f6

    class Animal { public: virtual void eat() { cout << \"Animal eats\" << endl; } }; class Dog : public Animal { public: void eat() { cout << \"Dog eats\" << endl; } };\n
    \u200b

    \u5728\u4e0b\u9762\u7684\u60c5\u51b5\u4e0b\uff0c\u6784\u9020\u51fd\u6570\u4f1a\u88ab\u8c03\u7528\uff1a - \u5bf9\u4e8e\u5168\u5c40\u5bf9\u8c61\uff0c\u5728main()\u4e24\u6570\u8fd0\u884c\u4e4b\u524d\uff0c\u6216\u8005\u5728\u540c\u4e00\u4e2a\u7f16\u8bd1\u5355\u5143\u5185\u5b9a\u4e49\u7684\u4efb\u4e00\u51fd\u6570\u6216\u5bf9\u8c61 \u88ab\u4f7f\u7528\u4e4b\u524d\u3002\u5728\u540c\u4e00\u4e2a\u7f16\u8bd1\u5355\u5143\u5185\uff0c\u5b83\u4eec\u7684\u6784\u9020\u4e24\u6570\u6309\u7167\u58f0\u660e\u7684\u987a\u5e8f\u521d\u59cb\u5316\u3002 - \u5bf9\u4e8e static\u00a0local\u00a0variables\uff0c\u00a0\u5728\u7b2c\u4e00\u6b21\u8fd0\u884c\u5230\u5b83\u7684\u58f0\u660e\u7684\u65f6\u5019. - \u5bf9\u4e8e automatic\u00a0storage\u00a0duration\u00a0\u7684\u5bf9\u8c61\uff0c\u5728\u5176\u58f0\u660e\u88ab\u8fd0\u884c\u65f6\u3002 - \u5bf9\u4e8e dynamic\u00a0storage\u00a0duration\u00a0\u7684\u5bf9\u8c61\uff0c\u5728\u5176\u7528\u00a0new\u00a0\u8868\u8fbe\u5f0f\u521b\u5efa\u65f6\u3002

    "},{"location":"CS/CPP/final_review/#_7","title":"\u667a\u80fd\u6307\u9488","text":"
    std::unique_ptr<T> //\u72ec\u5360\u8d44\u6e90\u6240\u6709\u6743\u7684\u6307\u9488\u3002 \nstd::shared_ptr<T> //\u5171\u4eab\u8d44\u6e90\u6240\u6709\u6743\u7684\u6307\u9488\u3002 \nstd::weak_ptr<T> //\u5171\u4eab\u8d44\u6e90\u7684\u89c2\u5bdf\u8005\uff0c\u9700\u8981\u548cstd::shared_ptr \u4e00\u8d77\u4f7f\u7528\uff0c\u4e0d\u5f71\u54cd\u8d44\u6e90\u7684\u751f\u547d\u5468\u671f\u3002\n

    \u4f7f\u7528\u88f8\u6307\u9488 \u6240\u4ee5\u9ed8\u8ba4\u53c2\u6570\u662f\u548c\u865a\u8868\u65e0\u5173\u4e0e\u5f53\u524d\u7c7b\u578b\u6709\u5173\u5417 \u662f\u7684 \u9ed8\u8ba4\u53c2\u6570\u4e0d\u8fdb\u865a\u8868 \u2192 upcasting\u7684\u65f6\u5019

    "},{"location":"CS/CPP/final_review/#upcasting","title":"upcasting","text":""},{"location":"CS/CPP/inheritance/","title":"\u7ee7\u627f Inheritance","text":"

    is_a \u903b\u8f91

    #include <...>\nclass B{\npublic:\nint f(int i) {cout << \"f(int)\"; return i+1; }\n};\nclass D: public B{\npublic:\nusing B::f;  // \u4fdd\u8bc1\u4e0d\u4f1a\u8986\u76d6\u6389B\u4e2d\u7684f\ndouble f(double d)  }\n

    \u8bbf\u95ee\u63a7\u5236\uff1aprivate\u548cprotected\u7ee7\u627f

    int a;\nclass X{\nint a;\n};\nclass XX: public X{\nvoid }\n

    \u865a\u7ee7\u627f

    \u5411\u4e0a\u8f6c\u578b

    Base *pb = &derived;\n

    \u8fd9\u4e2a\u4e0d\u4e00\u5b9a\u53ef\u884c

    Shape s = c;   // object slicing\ns = c;         // copy assignment\n

    virtual \u5173\u952e\u5b57

    \u8bf4\u660e\u4e00\u4e2a non-static member function \u662f\u4e00\u4e2a virtual function

    \u884c\u4e3a\u53ef\u4ee5\u88ab\u6d3e\u751f\u7c7boverride\uff08\u91cd\u5199/\u8986\u76d6\uff09

    Base::vf\uff0c\u5b50\u7c7b\u6709\u4e00\u4e2a\u540d\u5b57\u3001\u53c2\u6570\u5217\u8868

    struct Base {\nvirtual void print() {cout << \"Base\\\\n\"; }\n};\nstruct Derived: public Base{\nvoid }\n

    virtual call \u53ea\u5173\u5fc3\u5bf9\u8c61\u7684\u7c7b\u578b\uff0ccall\u5bf9\u5e94\u7c7b\u7684\u51fd\u6570

    \u53ea\u8981\u8c03\u7528\u865a\u51fd\u6570\u5c31\u662f\u865a\u8c03\u7528

    virtual void do_draw() = 0;   // \u662f\u7eaf\u865a\u51fd\u6570\uff0c\u4e0d\u5fc5\u6709\u5b9e\u73b0\uff0c\u4f46\u662f\u53ef\u4ee5\u6709\u5b9e\u73b0\n

    \u5982\u679c\u6709\u81f3\u5c11\u4e00\u4e2a\u7eaf\u865a\u51fd\u6570\uff0c\u662f\u62bd\u8c61\u7c7b\uff0c\u62bd\u8c61\u7c7b\u4e0d\u80fd\u7528\u4e8e\u58f0\u660e\u6210\u5458\uff0c\u53ea\u80fd\u4f5c\u4e3a\u57fa\u7c7b

    final \u5173\u952e\u5b57\uff1a\u4e0d\u80fd\u88ab\u91cd\u5199\uff0c\u4e0d\u80fd\u88ab\u7ee7\u627f

    \u865a\u51fd\u6570\u7684\u901a\u5e38\u5b9e\u73b0\uff1avirtual table (vtable)

    static vtable \u865a\u8868

    class Der: public Base {\npublic:\nvirtual arbiturary_return_type vir0{}\nvirtual arbiturary_return_type vir1{}\nvirtual arbiturary_return_type vie2{}\n}\n

    \u5b83\u7684\u865a\u51fd\u6570\u8868

    FunctionPtr Der::__vtable[5]{\n&Der::vir0, &Der::vir1, &Der::vir2, &Base::vir3, &Base::vir4\n}\n

    \u597d\u50cf\u5b9e\u9645\u4e0a\u76f8\u5f53\u4e8e\u8fd9\u4e48call\u7684

    b.__vptr[3](b);\n

    template\u548cOOP\u7684\u533a\u522b\uff0c\u8bed\u4e49\u4e0d\u4e00\u6837\u3002

    "},{"location":"CS/CPP/namespace/","title":"\u547d\u540d\u7a7a\u95f4 Namespace","text":"

    \u547d\u540d\u7a7a\u95f4\uff1a \u540d\u79f0name\u53ef\u4ee5\u662f\u7b26\u53f7\u5e38\u91cf\uff0c\u53d8\u91cf\uff0c\u51fd\u6570\uff0c\u7ed3\u6784\uff0c\u679a\u4e3e\uff0c\u7c7b\u548c\u5bf9\u8c61\u7b49\u3002

    \u5b9a\u4e49

    namespace A{\nint a = 100;\n}\nnamespace B{\nint b = 200;\n}\nvoid test(){\ncout << A::a << endl;\ncout << B::a << endl;\n}\n

    "},{"location":"CS/CPP/namespace/#namespace_1","title":"\u4ec0\u4e48\u65f6\u5019\u9700\u8981\u4f7f\u7528namespace\uff1f","text":"

    \u53d8\u91cf\u540d\u51b2\u7a81\u7684\u89e3\u51b3\u65b9\u6cd5

    \u5982\u679c\u5168\u5c40\u53d8\u91cf\u4e0e\u5c40\u90e8\u53d8\u91cf\u51b2\u7a81\uff0c\u90a3\u4e48\u6309\u5c31\u8fd1\u539f\u5219\u6765\u4f7f\u7528\u3002\uff08\uff1f\uff09

    "},{"location":"CS/CPP/templates/","title":"\u6a21\u677fTemplate \u548c \u6807\u51c6\u6a21\u677f\u5e93STL","text":"

    \u9700\u6c42\uff1a\u8ba9\u6211\u4eec\u7684\u4ee3\u7801\u72ec\u7acb\u4e8e\u5177\u4f53\u7684\u7c7b\u578b\u5de5\u4f5c\u3002

    \u6211\u4eec\u5199\u51fa\u4e00\u4e2a\u9002\u7528\u4e8e\u6240\u6709\u7c7b\u578b\u7684\u6570\u636e\u7ed3\u6784\u7684\u7c7b\u6216\u7b97\u6cd5\uff08\u51fd\u6570\uff09\uff0c\u5728\u771f\u6b63\u9700\u8981\u4f7f\u7528\u65f6\u751f\u6210\u4e00\u4e2a\u9002\u7528\u4e8e\u6240\u9700\u7c7b\u578b\u7684\u5b9e\u4f8b\u3002\u8fd9\u79cd\u7f16\u7a0b\u8303\u5f0f\u79f0\u4e3a\u8303\u578b\u7f16\u7a0b\u3002

    \u6a21\u677f\u7c7b\u7684\u5199\u6cd5

    template<typename T>\nclass Container{\nT *data;\nunsigned size, capa;\npiblic:\nContainer(unsigned capa = 512): data(new T[capa]){}\n~Container() {delete[] data;}\nT& operator[](unsigned index) {return data[index];}\n}\n

    \u8fd9\u91cctemplate T\u8868\u660e\u5b83\u63a5\u53d7\u4e00\u4e2a\u7c7b\u578b\u4f5c\u4e3a\u53c2\u6570\uff0c\u540d\u5b57\u662fT\u3002\u5728\u6a21\u677f\u7684\u5b9a\u4e49\u5185\u90e8\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5230\u8fd9\u4e2a\u7c7b\u578b\u53d8\u91cfT\u3002

    \u7279\u5316\uff1a\u6839\u636e\u6a21\u677f\u751f\u6210\u5b9e\u9645\u7684\u7c7b\u7684\u8fc7\u7a0b

    Container<int> ci;\nContainer<double> cd;\n

    \u6a21\u677f\u51fd\u6570\u8981\u600e\u4e48\u5199

    template<typename T>\nT abs(T x) {return x>0?x:-x;}\n

    \u6a21\u677f\u8fd0\u7b97\u7b26\u91cd\u8f7d\u600e\u4e48\u5199

    template<typename T>\nclass Container {\nT* data;\nunsigned size = 0, capa;\npublic: Container(unsigned capa = 512) : data(new T[capa]), capa(capa){}\n~Container(){delete[] data;}\nT& operator[](unsigned index) {return data[index];}\nconst T& operator[](unsigned idnex) const {return data[index];}\nunsigned getSize() const {return size;}\nunsigned getCapa() const {return capa;}\nContainer &add(T val){\ndata[size++] = val;\nreturn *this;\n}\n};\ntemplate<typename T>\nostream & operator<<(ostream& os, const Container<T>&c){\nfor (unsigned i = 0; i < c.getSize(); i++){\nos << c[i] << ' ';\nreturn os;\n}\n}\n

    "},{"location":"CS/CPP/templates/#reference","title":"Reference","text":"

    7 \u6a21\u677f (I) - \u57fa\u672c\u77e5\u8bc6\u4e0e STL \u4f7f\u7528 - \u54b8\u9c7c\u6684\u7684\u4ee3\u7801\u7a7a\u95f4

    "},{"location":"CS/CPP/templates/#template","title":"\u53ef\u53d8\u53c2\u6570\u6a21\u677f template

    C++11\u7684\u65b0\u7279\u6027 \u5bf9\u53c2\u6570\u9ad8\u5ea6\u6cdb\u5316\uff0c\u53ef\u4ee5\u8868\u793a0\u5230\u4efb\u610f\u4e2a\u4efb\u610f\u7c7b\u578b\u7684\u53c2\u6570\u3002

    \u8bed\u6cd5

    template <class ...T>  // \u58f0\u660e\u4e00\u4e2a\u53c2\u6570\u5305\uff0c\u8fd9\u4e2a\u53c2\u6570\u5305\u4e2d\u5305\u542b0\u5230\u4efb\u610f\u4e00\u4e2a\u53c2\u6570\u6a21\u677f\nvoid f(T... args);     // \u5728\u6a21\u677f\u5b9a\u4e49\u7684\u53f3\u8fb9\uff0c\u53ef\u4ee5\u5c06\u53c2\u6570\u5305\u5c55\u5f00\u6210\u4e00\u4e2a\u4e00\u4e2a\u72ec\u7acb\u53c2\u6570\n

    \u6700\u5927\u7684\u96be\u70b9\uff1a\u5982\u4f55\u5c55\u5f00\u53ef\u53d8\u6a21\u677f\u53c2\u6570

    \u6253\u5370\u53c2\u6570\u4e2a\u6570\uff1a

    template<class ...T>\nvoid f(T... args)\n{\n        cout << sizeof...(args) << endl;\n}\n\nf();\nf(1, 2);\nf(1, 2.5, \"\");\n

    \u9012\u5f52\u65b9\u5f0f\u5c55\u5f00\u53c2\u6570\u5305

    #include <iostream>\nusing namespace std;\n\n// \u9012\u5f52\u7ec8\u6b62\u51fd\u6570\nvoid print(){\n    cout << \"empty\" << endl;\n}\n\n// \u5c55\u5f00\u51fd\u6570\ntemplate<class T, class ...Args>\nvoid print(T head, Args... rest){\n    cout << \"parameter\" << head << endl;\n    print(rest...);\n}\n\nint main(){\n    print(1, 2, 3, 4);\n    return 0;\n}\n

    \u4e0a\u8ff0\u4f8b\u5b50\u4f1a\u8f93\u51fa\u6bcf\u4e00\u4e2a\u53c2\u6570\uff0c\u76f4\u5230\u7a7a\u65f6\u8f93\u51faempty\u3002\u5c55\u5f00\u53c2\u6570\u5305\u7684\u51fd\u6570\u6709\u4e24\u4e2a\uff0c\u4e00\u4e2a\u662f\u9012\u5f52\u51fd\u6570\uff0c\u53e6\u4e00\u4e2a\u662f\u9012\u5f52\u7ec8\u6b62\u51fd\u6570\uff0c\u53c2\u6570\u5305Args\u2026\u5728\u5c55\u5f00\u7684\u8fc7\u7a0b\u4e2d\u9012\u5f52\u8c03\u7528\u81ea\u5df1\uff0c\u6bcf\u8c03\u7528\u4e00\u6b21\uff0c\u53c2\u6570\u5305\u4e2d\u7684\u53c2\u6570\u5c31\u5c11\u4e00\u4e2a\uff0c\u76f4\u5230\u6240\u6709\u53c2\u6570\u90fd\u5c55\u5f00\u4e3a\u6b62\u3002\u5f53\u6ca1\u6709\u53c2\u6570\u65f6\uff0c\u5219\u8c03\u7528\u975e\u6a21\u677f\u51fd\u6570print()\u7ec8\u6b62\u9012\u5f52\u8fc7\u7a0b\u3002

    \u7ec8\u6b62\u51fd\u6570\u4e5f\u53ef\u4ee5\u5199\u6210

    template<class T>\nvoid print(T t){\n    cout << t << endl;\n}\n

    \u53ef\u53d8\u6a21\u677f\u53c2\u6570\u6c42\u548c

    template<typename T>\nT sum(T t){\n    return t;\n}\ntemplate<typename T, typename ... Types>\nT sum(T first, Types ...rest){\n    return first + sum<T> (rest...);\n}\n\nsum(1, 2, 3, 4);\n

    \u9012\u5f52\u51fd\u6570\u5c55\u5f00\u53c2\u6570\u5305\u662f\u4e00\u79cd\u6807\u51c6\u505a\u6cd5\uff0c\u4e5f\u6bd4\u8f83\u597d\u7406\u89e3\uff0c\u4f46\u662f\u7f3a\u70b9\u65f6\u5fc5\u987b\u8981\u4e00\u4e2a\u91cd\u8f7d\u7684\uff08\u540c\u540d\uff09\u9012\u5f52\u7ec8\u6b62\u51fd\u6570\u6765\u7ec8\u6b62\u9012\u5f52\u3002

    \u6216\u8005\u4e0d\u9012\u5f52\u65b9\u5f0f\uff0c\u8fd9\u79cd\u65b9\u5f0f\u9700\u8981\u501f\u52a9\u9017\u53f7\u8868\u8fbe\u5f0f\u548c\u521d\u59cb\u5316\u5217\u8868\u3002\u524d\u9762\u7684print\u53ef\u4ee5\u8fd9\u4e48\u5199

    template<class T>\nvoid printarg(T t){\n    cout << t << endl;\n}\n\ntemplate <class ...Args>\nvoid expand(Args... args){\n    int arr[] = {(printarg(args), 0)...};\n}\n\nexpand(1, 2, 3, 4);\n

    arr\u8fd9\u4e2a\u6570\u7ec4\u7684\u76ee\u7684\u5355\u7eaf\u662f\u5c55\u5f00\u53c2\u6570\u5305

    \u5982\u679c\u5c06\u51fd\u6570\u4f5c\u4e3a\u53c2\u6570\uff0c\u5c31\u53ef\u4ee5\u652f\u6301lambda\u8868\u8fbe\u5f0f

    template<class F, class... Args> void expand(const F& f, Args&&...args){\ninitializer_list<int>{(f(std::forward< Args>(args)), 0)};\n}\nexpand([](int i){cout << i << endl;}, 1,2,3);\n

    \u53ef\u4ee5\u5e26\u4efb\u610f\u4e2a\u6570\u4e0d\u540c\u7684\u53c2\u6570\uff0c\u6bd4\u5982std::tuple

    template<class... Types>\nclass tuple;\n

    \u6a21\u677f\u504f\u7279\u5316\u548c\u9012\u5f52\u65b9\u5f0f\u5c55\u5f00\u53c2\u6570\u5305

    \u53ef\u53d8\u53c2\u6570\u6a21\u677f\u7c7b\u7684\u5c55\u5f00\u4e00\u822c\u9700\u8981\u5b9a\u4e49\u4e24\u5230\u4e09\u4e2a\u7c7b\uff0c\u5305\u62ec\u7c7b\u58f0\u660e\u548c\u504f\u7279\u5316\u7684\u6a21\u677f\u7c7b

    // \u524d\u5411\u58f0\u660e\ntemplate<typename... Args>\nstruct Sum;\n\n// \u57fa\u672c\u5b9a\u4e49\ntemplate<typename First, typename... Rest>\nstruct Sum<First, Rest...>{\n    enum { value = Sum<First>::value + Sum<Rest...>::value };\n}\n\n// \u9012\u5f52\u7ec8\u6b62\ntemplate<typename Last>\nstruct Sum<Last>{\n    enum { value = sizeof(Last) };\n}\n

    ","text":""},{"location":"CS/CPP/templates/#stl","title":"\u6807\u51c6\u6a21\u677f\u5e93 STL

    STL\u516d\u5927\u90e8\u4ef6\uff1a\u5bb9\u5668\uff08containers\uff09\uff0c\u5206\u914d\u5668\uff08allocators\uff09\uff0c\u7b97\u6cd5\uff08algorithm\uff09\uff0c\u8fed\u4ee3\u5668\uff08iterator\uff09\uff0c\u9002\u914d\u5668\uff08adapters\uff09\uff0c\u4eff\u51fd\u6570\uff08functors\uff09

    ","text":""},{"location":"CS/CPP/templates/#_1","title":"\u5e38\u7528\u7684\u5bb9\u5668","text":"

    vector, deque, list, set/multiset, map/multimap \u7b49

    "},{"location":"CS/CPP/templates/#1-vector","title":"1. Vector","text":"

    Vector\u662f\u4e00\u79cd\u53d8\u957f\u6570\u7ec4\u3002

    #include<vector>\nusing namespace std;\nvector<int> name;\nvector<double> name;\nvector<char> name;\nvector<struct node> name;\n// \u8fd9\u4e24\u4e2a\u4e3b\u8981\u6709\u901f\u5ea6\u4e0a\u7684\u533a\u522b\uff0carray\u975e\u5e38\u6162\uff0cvector\u5feb\u4e00\u4e9b\nvector< vector<int> > name; // > >\u4e4b\u95f4\u8981\u52a0\u7a7a\u683c\uff0c\u65b0\u6807\u51c6\u4e0d\u7528\u52a0\u4e86\nvector<int> array[SIZE]; // \u8fd9\u4e2a\u4e0d\u662f\u5f88\u5e38\u7528\uff0c\u56e0\u4e3a\u5bb9\u6613\u51fa\u9519\uff0c\u4e14\u6570\u7ec4\u4e0d\u77e5\u9053\u81ea\u5df1\u7684\u957f\u5ea6\uff0c\u8fd8\u6709std::array\n

    \u8bbf\u95ee\u65b9\u5f0f

    // 1. \u901a\u8fc7\u4e0b\u6807\n#include<iostream>\n#include<vector>\nusing namespace std;\nint main()\n{\nvector<int> vi;\nvi.push_back(1);\ncout<<vi[0]<<endl;\nreturn 0;\n}\n// 2. \u901a\u8fc7\u8fed\u4ee3\u5668\nvector<int>::iterator\nvector<double>::iterator\n// \u4f8b\n#include<iostream>\n#include<vector>\nint main()\n{\nvector<int> v;\nfor(int i = 0; i < 5; i++)\n{\nv.push_back(i); }\nvector<int>::iterator it=v.begin();\nfor(int i = 0; i < v.size(); i++)\n{\ncout << it[i] << \" \";\n// \u4e5f\u53ef\u4ee5\u5199\u6210 cout << * (it + i) << \" \";\n}\nreturn 0;\n}\n// \u6216\u8005\u4f18\u96c5\u7684\u5199\u6cd5\n// \u56e0\u4e3a\u8fed\u4ee3\u5668\u4e0d\u652f\u6301 it < v.end()\u7684\u5199\u6cd5\uff0c\u53ea\u80fd\u5199!=\nfor (vector<int>::iterator it=v.begin(); it!=v.end();it++)\n{\ncout << *it << \" \";\n}\n
    \u5e38\u7528\u51fd\u6570
    push_back(item) // \u5728vector\u540e\u9762\u6dfb\u52a0\u4e00\u4e2a\u5143\u7d20\npop_back(item) // \u5728vector\u540e\u9762\u5220\u9664\u4e00\u4e2a\u5143\u7d20\nsize(vector) // \u8fd4\u56de\u5143\u7d20\u4e2a\u6570\uff0c\u65f6\u95f4\u590d\u6742\u5ea6O(1)\nclear(vector) // \u6e05\u9664\u6240\u6709\u5143\u7d20\uff0c\u65f6\u95f4\u590d\u6742\u5ea6O(N)\ninsert(position, x) // \u5728position\u7684\u5730\u65b9\u63d2\u5165\u4e00\u4e2ax\n// \u4f8b\nv.insert(v.begin()+2, -1); // \u76f8\u5f53\u4e8e\u5728v[2]\u5904\u63d2\u5165\u4e00\u4e2a-1\nerase(position);\nerase(positionBegin, positionEnd);  // \u5de6\u95ed\u53f3\u5f00\n

    "},{"location":"CS/CPP/templates/#2-set","title":"2. set","text":"

    \u96c6\u5408\u662f\u4e0d\u5141\u8bb8\u5143\u7d20\u91cd\u590d\u7684\u65e0\u5e8f\u5bb9\u5668

    #include<set>\nusing namespace std;\nset<int> name;\nset<double> name;\nset<char> name;\nset<struct node> name;\nset<set<int> > name;\n
    \u56e0\u4e3a\u65e0\u5e8f\uff0cset\u53ea\u80fd\u901a\u8fc7iterator\u8bbf\u95ee\uff0c\u9664\u4e86vector\u548cstring\u4e4b\u5916\u7684\u5bb9\u5668\u90fd\u4e0d\u80fd\u901a\u8fc7\u4e0b\u6807\u8bbf\u95ee
    set<int>::iterator it;\nset<char>::iterator it;\n
    \u5e38\u7528\u51fd\u6570
    st.insert(X);\nst.find(X); // \u8fd4\u56deset\u4e2dvalue\u6240\u5bf9\u5e94\u7684\u8fed\u4ee3\u5668\uff0c\u4e5f\u5c31\u662fvalue\u7684\u6307\u9488\n// \u4f8b\nset<int>::iterator it = st.find(2);\ncout << *it << endl;\n// \u53ef\u4ee5\u76f4\u63a5\u5199\u6210\ncout << *(st.find(2)) << endl;\nst.erase(it); // \u5220\u9664\u67d0\u4e2a\u5730\u5740\u7684\u5143\u7d20\uff0c\u65f6\u95f4\u590d\u6742\u5ea6O(1)\nst.erase(X); // \u5220\u9664\u67d0\u4e2a\u5143\u7d20\uff0c\u65f6\u95f4\u590d\u6742\u5ea6O(N)\nst.erase(itBegin, itEnd);\nst.size();\n

    "},{"location":"CS/CPP/templates/#3-deque","title":"3. deque","text":"

    deque\u662f\u7531\u4e00\u6bb5\u5b9a\u91cf\u8fde\u7eed\u7a7a\u95f4\u6784\u6210\uff0c\u4e00\u65e6\u8981\u5728deque\u7684\u524d\u7aef\u548c\u5c3e\u7aef\u589e\u52a0\u7a7a\u95f4\uff0c\u4fbf\u914d\u7f6e\u4e00\u6bb5\u8fde\u7eed\u7a7a\u95f4\uff0c\u4e32\u5728\u6574\u4e2adeque\u7684\u5934\u90e8\u548c\u5c3e\u90e8.

    "},{"location":"CS/CPP/templates/#4-list","title":"4. list","text":""},{"location":"CS/CPP/templates/#5-mapunordered_map","title":"5. map/unordered_map","text":""},{"location":"CS/CPP/templates/#6-string","title":"6. string","text":"
    // init\n#include<string>\nstring str;\nstring str = \"Hello\";\ncin >> str;\ncout << str;\n// assignment\nchar cstr1[20];\nchar cstr2[20] = \"jaguar\";\nstring str1;\nstring str2 = \"panther\";\ncstr1 = cstr2; // illegal\nstr1 = str2; // legal\n// concatenation\nstring str3;\nstr3 = str1 + str2;\nstr1 += str2;\nstr1 += \"a string literal\";\n// constructors (Ctors)\nstring (const char *cp, int len);\nstring (const string& s2, int pos);\nstring (const string& s2, int pos, int len);\n// sub-string\nsubstr (int pos, int len);\n// modification\nassign (...);\ninsert (...);\ninsert (int pos, const string& s);\nerase (...);\nappend (...);\nreplace (...);\nreplace (int pos, int len, const string& s);\n...\n// search\nfind (const string& s);\n// File I/O\n#include <ifstream> // read from file\n#include <ofstream>  // write to file\n// write into file\nofstream File1(\"...\");\nFile1 << \"Hello world\" << std::enl;\n// read from file\nifstream File2(\"...\");\nstd::string str;\nFile2 >> str;\n
    "},{"location":"CS/CPP/templates/#_2","title":"\u7b97\u6cd5","text":"

    \u7b97\u6cd5\u90e8\u5206\u4e3b\u8981\u7531<algorithm> <numeric> <functional>\u7ec4\u6210 <algorithm>\u662f\u6700\u5927\u7684\u4e00\u4e2a <numeric>\u4f53\u79ef\u5f88\u5c0f\uff0c\u53ea\u5305\u62ec\u51e0\u4e2a\u5728\u5e8f\u5217\u4e0a\u8fdb\u884c\u7b80\u5355\u6570\u5b66\u8fd0\u7b97\u7684\u6a21\u677f\u51fd\u6570 <functional>\u5b9a\u4e49\u4e86\u4e00\u4e9b\u6a21\u677f\u7c7b\uff0c\u7528\u4ee5\u58f0\u660e\u51fd\u6570\u5bf9\u8c61

    "},{"location":"CS/CPP/templates/#iterator","title":"\u8fed\u4ee3\u5668 Iterator","text":"

    \u7528\u8fed\u4ee3\u5668\u53ef\u4ee5\u8bfb\u53d6\u5b83\u6307\u5411\u7684\u5143\u7d20\u3002\u8fed\u4ee3\u5668\u540d\u5c31\u8868\u793a\u8fed\u4ee3\u5668\u6307\u5411\u7684\u5143\u7d20\uff0c\u901a\u8fc7\u975e\u5e38\u91cf\u8fed\u4ee3\u5668\u8fd8\u80fd\u4fee\u6539\u5176\u6307\u5411\u7684\u5143\u7d20\u3002

    #include<iostream> #include<vector> using namespace std; int main() { vector<int> v; for (int n = 0; n < 5; ++n) v.push_back(n); vector<int>::iterator i; for (i = v.begin(); i != v.end(); i++) { cout << *i << \" \"; // *i \u662f i \u6307\u5411\u7684\u5143\u7d20 *i *= 2; \n} }\n

    "},{"location":"CS/CPP/templates/#stl_1","title":"\u7c7b\u5e93\u548cSTL

    STL\u662f\u8303\u578b\u7a0b\u5e8f\u8bbe\u8ba1\u7684\u4e00\u4e2a\u8303\u4f8b\uff0c\u542b\uff1a\u5bb9\u5668\uff08container\uff09\u3001\u8fed\u4ee3\u5668\uff08iterator\uff09\u3001\u7b97\u6cd5\uff08algorithm\uff09\u3001\u51fd\u6570\u5bf9\u8c61\uff08function object\uff09\u3002\u7c7b\u5e93\u662f\u7c7b\u7684\u96c6\u5408\uff0c\u662f\u4e00\u79cd\u9884\u5b9a\u4e49\u7684\u9762\u5411\u5bf9\u8c61\u7684\u7a0b\u5e8f\u5e93\u3002

    ","text":""},{"location":"CS/CPP/templates/#c","title":"C++\u7684\u6807\u51c6\u5e93","text":"

    using namespace std;

    "},{"location":"CS/CPP/templates/#stl_2","title":"STL\u4e2d\u7684\u5bb9\u5668\u7c7b","text":"

    \u5bb9\u5668\uff08container\uff09\u7c7b\u662f\u7528\u6765\u5bb9\u7eb3\u3001\u5305\u542b\u4e00\u7ec4\u5143\u7d20\u6216\u5143\u7d20\u96c6\u5408\u7684\u5bf9\u8c61\u7684\u3002STL\u4e2d\u5b9a\u4e49\u4e86\u591a\u79cd\u4e0d\u540c\u7c7b\u578b\u7684\u5bb9\u5668\uff0c\u4f8b\u5982

    "},{"location":"CS/CPP/templates/#vector","title":"\u5411\u91cf vector","text":"

    \u5b9a\u4e49

    vector<int> iv;\nvector<int> cv(5);\nvector<int> cv(5, 'x');\nvector<int> iv2(iv);\n

    \u4f7f\u7528

    #include<iostream>\n#include<vector>\nusing namespace std;\nint main()\n{\nvector<char> v;  // create zero-len vector\nint i;\n// put values into a vector\nfor (i = 0; i < 10; i++)\nv.push_back('A' + i);\n// can access vector contents using subsripting\nfor (i = 0; i < 10; i++)\ncout << v[i] << \" \";\ncout << endl;\n// access via iterator\nvector<char>::iterator p = v.begin();\nwhile(p != v.end())\n{\ncout << *p << \" \";\np++;\n}\nreturn 0;\n}\n
    "},{"location":"CS/CPP/templates/#list","title":"\u7ebf\u6027\u8868 list","text":"

    \u5b9a\u4e49\u4e86\u53cc\u5411\u7684\u7ebf\u6027\u8868\uff0c\u53c8\u53ef\u79f0\u4e3a\u53cc\u5411\u94fe\u8868\u3002list\u7c7b\u53ea\u652f\u6301\u987a\u5e8f\u8bbf\u95ee\u3002

    // sort a list\n#include<iostream>\n#include<list>\n#include<cstdlib>\nusing namespace std;\nint main()\n{\nint i;\nlist<char> lst;\n// create a list of random characters\nfor (i = 0; i < 10; i++)\nlist.push_back('A' + (rand()%26));\n}\n
    "},{"location":"CS/CPP/templates/#set","title":"\u96c6\u5408 set","text":"
    #include<set>\n#include<iostream>\n#include<string>\nint main()\n{\nstd::set<std::string> source;\nstd::string input;\nfor(int i=0;i<6;i++)\n{\nstd::cin>>input;\nsource.insert(input);\n}\nstd::set<std::string>::iterator at = source.begin();\nwhile(at != source.end())\nstd::cour << * at++ << std::endl;\n}\n
    "},{"location":"CS/CPP/templates/#multiset","title":"multiset","text":""},{"location":"CS/CPP/templates/#map","title":"\u6620\u5c04 map","text":""},{"location":"CS/CPP/templates/#queue","title":"\u961f\u5217 queue","text":""},{"location":"CS/CPP/templates/#stdstack","title":"std::stack","text":""},{"location":"CS/CPP/templates/#stdpair","title":"std::pair","text":""},{"location":"CS/CPP/templates/#string","title":"\u5b57\u7b26\u4e32string","text":""},{"location":"CS/CPP/templates/#_3","title":"\u7b97\u6cd5\u5e93 ` ","text":""},{"location":"CS/CPP/templates/#sort","title":"\u6392\u5e8f\u7b97\u6cd5sort","text":"
    #include<algorithm>\n#include<iostream>\n#include<string>\n#include<vector>\nusing namespace std;\nvoid load(vector<string>&);\nvoid print(vector<string>);\nconst int SIZE = 8;\nint main()\n{\nvector<string> v(SIZE);\nload(v);\nsort(v.begin(), v.end());  // \u6307\u5b9a\u6392\u5e8f\u7684\u8d77\u6b62\u4f4d\u7f6e\nprint(v);\nreturn 0;\n}\n// \u4f1a\u6309\u7167\u5b57\u6bcd\u5e8f\u6392\u5e8f\n
    "},{"location":"CS/CPP/templates/#_4","title":"\u8fed\u4ee3\u5668

    \u662f\u4e00\u79cd\u7c7b\u4f3c\u6307\u9488\u7684\u5bf9\u8c61\uff0c\u53ef\u4ee5\u4f7f\u7528\u8fed\u4ee3\u5668\u6765\u8bbf\u95ee\u5bb9\u5668\u4e2d\u7684\u5143\u7d20\u3002

    ","text":""},{"location":"CS/CPP/templates/#reverse-iterator","title":"\u53cd\u5411\u8fed\u4ee3\u5668 reverse iterator","text":"
    #include<list>\n#include<iostream>\nint main()\n{\nusing namespace std;\nlist<int> c1;\nlist<int>::iterator c1_Iter;\nlist<int>::reverse_iterator c1_rIter;\nc1_rIter = c1.rbegin(); // the last element\n}\n
    "},{"location":"CS/CPP/templates/#_5","title":"\u53c2\u8003\u8d44\u6599

    https://zhuanlan.zhihu.com/p/344558356 LJJ PPT

    ","text":""},{"location":"CS/CPP/type/","title":"\u7c7b\u578b\u548c\u7c7b\u578b\u8f6c\u6362 Type & Type Conversion","text":""},{"location":"CS/CPP/type/#type-info","title":"Type info \u5e93","text":"
    #include <typeinfo>\n

    \u7b80\u4ecb - \u548csizeof\u8fd9\u7c7b\u64cd\u4f5c\u7b26\u4e00\u6837\uff0ctypeid\u662fc++\u7684\u5173\u952e\u5b57\u4e4b\u4e00 - typeid\u64cd\u4f5c\u7b26\u8fd4\u56de\u7684\u7ed3\u679c\u662f\u540d\u4e3atype_info\u7684\u6807\u51c6\u5e93\u7c7b\u578b\u7684\u5bf9\u8c61\u7684\u5f15\u7528\uff08\u5728\u5934\u6587\u4ef6typeinfo\u4e2d\u5b9a\u4e49\uff09 - c++\u5e76\u6ca1\u6709\u89c4\u5b9atypeid\u5b9e\u73b0\u6807\u51c6\uff0c\u5404\u4e2a\u7f16\u8bd1\u5668\u53ef\u80fd\u4f1a\u4e0d\u4e00\u6837 - \u7f16\u8bd1\u5668\u4f1a\u4e3a\u6bcf\u4e00\u79cdtypeid\u64cd\u4f5c\u7684\u7c7b\u578b\u751f\u6210\u4e00\u4efd\u4fdd\u5b58\u5728\u6570\u636e\u6bb5\u7684type_info\u6570\u636e - \u6bcf\u79cd\u7c7b\u578b\u7684type_info\u6570\u636e\u957f\u5ea6\u4f9d\u8d56\u4e8e\u7c7b\u578b\u540d\u79f0\uff0c\u81f3\u5c119\u4e2a\u5b57\u8282

    \u7528\u6cd5 - \\== \u548c!=\u64cd\u4f5c

    #include <iostream>\n#include <typeinfo>\nstruct Base{};\nstruct Derived: Base {};\nstruct Poly_Base {virtual void Member(){}};\nstruct Poly_Derived: Poly_Base {};\ntypedef int my_int_type;\nint main()\n{\nstd::cout << std::boolalpha;\nstd::cout << \"int vs my_int_type: \";\nstd::cout << (typeid(int) == typeid(my_int_type)) << '\\\\n';\nstd::cout << \"Base vs Derived: \";\nstd::cout << (typeid(Base) == typeid(Derived)) << '\\\\n'; // \u8f93\u51fafalse\nBase* pbase = new Derived;\n}\n

    #include <iostream>\n#include <typeinfo>\nstruct Base{}\nstruct Derived: Base{};\ntemplate <class T>\nvoid swap(T a, T b){\nstd::cout << \"T is: \" << typeid(T).name() << '\\\\n';\nT temp = a;\na = b;\nb = temp;\n}\nint main(){\nint i;\nint* ptr;\nstd::cout << \"int is: \" << typeid(int).name() << '\\\\n';\nstd::cout << \"  i is: \" << typeid(i).name() << '\\\\n';\n}\n

    \u53c2\u8003 C++\u4e2d\u7684typeInfo\u7528\u6cd5\u603b\u7ed3_\u975e\u665a\u975e\u665a\u7684\u535a\u5ba2-CSDN\u535a\u5ba2

    "},{"location":"CS/CPP/type/#_1","title":"\u7c7b\u578b\u8f6c\u6362","text":""},{"location":"CS/CPP/type/#const_cast","title":"const_cast","text":"
    const_cast<new_type>(expression);\n
    #include <iostream>\nstruct type\n{\nint i;\ntype(): i(3) {}\nvoid f(int v) const\n{\n// this->i = v;                 // compile error: this is a pointer to const\nconst_cast<type*>(this)->i = v; // OK as long as the type object isn't const\n}\n};\nint main()\n{\nint i = 3;                 // i is not declared const\nconst int& rci = i;\nconst_cast<int&>(rci) = 4; // OK: modifies i\nstd::cout << \"i = \" << i << '\\\\n';\ntype t; // if this was const type t, then t.f(4) would be undefined behavior\nt.f(4);\nstd::cout << \"type::i = \" << t.i << '\\\\n';\nconst int j = 3; // j is declared const\n[[maybe_unused]]\nint* pj = const_cast<int*>(&j);\n// *pj = 4;      // undefined behavior\n[[maybe_unused]]\nvoid (type::* pmf)(int) const = &type::f; // pointer to member function\n// const_cast<void(type::*)(int)>(pmf);   // compile error: const_cast does\n// not work on function pointers\n}\n
    "},{"location":"CS/CPP/type/#dynamic_cast","title":"dynamic_cast","text":"
    dynamic_cast<new_type>(expression);\n
    #include <iostream>\nstruct V\n{\nvirtual void f() {} // must be polymorphic to use runtime-checked dynamic_cast\n};\nstruct A : virtual V {};\nstruct B : virtual V\n{\nB(V* v, A* a)\n{\n// casts during construction (see the call in the constructor of D below)\ndynamic_cast<B*>(v); // well-defined: v of type V*, V base of B, results in B*\ndynamic_cast<B*>(a); // undefined behavior: a has type A*, A not a base of B\n}\n};\nstruct D : A, B\n{\nD() : B(static_cast<A*>(this), this) {}\n};\nstruct Base\n{\nvirtual ~Base() {}\n};\nstruct Derived: Base\n{\nvirtual void name() {}\n};\nint main()\n{\nD d; // the most derived object\nA& a = d; // upcast, dynamic_cast may be used, but unnecessary\n[[maybe_unused]]\nD& new_d = dynamic_cast<D&>(a); // downcast\n[[maybe_unused]]\nB& new_b = dynamic_cast<B&>(a); // sidecast\nBase* b1 = new Base;\nif (Derived* d = dynamic_cast<Derived*>(b1); d != nullptr)\n{\nstd::cout << \"downcast from b1 to d successful\\\\n\";\nd->name(); // safe to call\n}\nBase* b2 = new Derived;\nif (Derived* d = dynamic_cast<Derived*>(b2); d != nullptr)\n{\nstd::cout << \"downcast from b2 to d successful\\\\n\";\nd->name(); // safe to call\n}\ndelete b1;\ndelete b2;\n}\n
    "},{"location":"CS/CPP/type/#reinterpret_cast","title":"reinterpret_cast","text":"
    reinterpret_cast<new_type>(expression)\n
    #include <cassert>\n#include <cstdint>\n#include <iostream>\nint f() { return 42; }\nint main()\n{\nint i = 7;\n// pointer to integer and back\nstd::uintptr_t v1 = reinterpret_cast<std::uintptr_t>(&i); // static_cast is an error\nstd::cout << \"The value of &i is \" << std::showbase << std::hex << v1 << '\\\\n';\nint* p1 = reinterpret_cast<int*>(v1);\nassert(p1 == &i);\n// pointer to function to another and back\nvoid(*fp1)() = reinterpret_cast<void(*)()>(f);\n// fp1(); undefined behavior\nint(*fp2)() = reinterpret_cast<int(*)()>(fp1);\nstd::cout << std::dec << fp2() << '\\\\n'; // safe\n// type aliasing through pointer\nchar* p2 = reinterpret_cast<char*>(&i);\nstd::cout << (p2[0] == '\\\\x7' ? \"This system is little-endian\\\\n\"\n: \"This system is big-endian\\\\n\");\n// type aliasing through reference\nreinterpret_cast<unsigned int&>(i) = 42;\nstd::cout << i << '\\\\n';\n[[maybe_unused]] const int &const_iref = i;\n// int &iref = reinterpret_cast<int&>(\n//     const_iref); // compiler error - can't get rid of const\n// Must use const_cast instead: int &iref = const_cast<int&>(const_iref);\n}\n
    "},{"location":"CS/CPP/type/#static_cast","title":"static_cast","text":"
    static_cast<new_type>(expression)\n
    "},{"location":"CS/OS/","title":"\u7d22\u5f15","text":"

    ZJU OS\u64cd\u4f5c\u7cfb\u7edf\u8bfe\u7a0b\u7b14\u8bb0\u3002

    \u4f9b\u81ea\u5b66\u800c\u5199\u7684\uff0c\u4e0d\u4fdd\u8bc1\u5199\u5f97\u6613\u61c2\u3002\u56e0\u6b64\u4e0d\u5efa\u8bae\u9605\u8bfb\uff01

    \u63a8\u8350\u53c2\u8003\u8d44\u6599

    \u3010\u7b14\u8bb0\u3011RISC-V ISA - \u9e64\u7fd4\u4e07\u91cc\u7684\u7b14\u8bb0\u672c (tonycrane.cc)

    \u3010\u7b14\u8bb0\u3011Unit 4: \u5b58\u50a8\u7ba1\u7406 | Storage Management [\u672a\u5b8c\u6210] - Isshiki\u4fee's Notebook (isshikih.top)

    \u3010\u7b14\u8bb0\u30111 \u5199\u5728\u524d\u9762 - \u54b8\u9c7c\u6684\u7684\u4ee3\u7801\u7a7a\u95f4 (xuan-insr.github.io)

    \u3010\u4e60\u9898\u3011rCore-Tutorial-Book-v3 3.6.0-alpha.1 \u6587\u6863 (rcore-os.cn)

    \u3010\u6587\u6863\u3011RISC-V\u624b\u518c (riscvbook.com)

    \u3010\u6587\u6863\u3011makefile\u4ecb\u7ecd \u2014 \u8ddf\u6211\u4e00\u8d77\u5199Makefile 1.0 \u6587\u6863 (seisman.github.io)

    \u3010\u6587\u6863\u3011riscv-asm-manual/riscv-asm.md at master \u00b7 riscv-non-isa/riscv-asm-manual (github.com)

    "},{"location":"CS/OS/mem_file/","title":"OS Lecture \u5185\u5b58\u548c\u6587\u4ef6\u7cfb\u7edf","text":""},{"location":"CS/OS/mem_file/#8","title":"8. \u4e3b\u5b58","text":"

    \u5e38\u8bc6\uff1a

    \u5185\u5b58\u662f\u4e00\u4e2a\u5f88\u5927\u7684\u5b57\u8282\u6570\u7ec4\uff0cCPU\u6839\u636ePC(Program Counter)\u7684\u503c\u4ece\u5185\u5b58\u4e2d\u63d0\u53d6\u6307\u4ee4\u3002\u5185\u5b58\u4e2d\u7684\u8fdb\u7a0b\u8fd0\u884c\u7684\u524d\u63d0\u662f\uff0c\u7a0b\u5e8f\u4ee3\u7801\u548c\u9700\u8981\u8bbf\u95ee\u7684\u6570\u636e\u5728\u5185\u5b58\u4e2d\u3002

    CPU\u53ef\u4ee5\u76f4\u63a5\u8bbf\u95ee\u7684\u901a\u7528\u5b58\u50a8\u53ea\u6709main memory\u548cregisters\u3002\u5bf9registers\u7684\u8bbf\u95ee\u901a\u5e38\u53ef\u4ee5\u5728\u4e00\u4e2aCPU\u65f6\u949f\u5468\u671f\u5b8c\u6210\uff0c\u4f46\u662f\u8bbf\u95ee\u5185\u5b58\u9700\u8981\u591a\u4e2a\u65f6\u949f\u5468\u671f\uff0c\u8fd9\u5c31\u4f1a\u5f15\u8d77\u6307\u4ee4\u7684stall\u3002\u56e0\u4e3a\u6211\u4eec\u4e0d\u60f3\u8981stall\uff0c\u6240\u4ee5\u6211\u4eec\u5728CPU\u4e0a\u8bbe\u8ba1\u4e86\u5b58\u53d6\u66f4\u5feb\u7684\u5185\u5b58cache\u3002

    \u8868\u793a\u6e90\u7a0b\u5e8f\u5730\u5740\u7684\u65b9\u6cd5\uff1aAddress Binding

    \u6e90\u7a0b\u5e8f\u4e2d\u7684\u5730\u5740\u901a\u5e38\u662f\u7528\u7b26\u53f7\uff08symbolic\uff0c\u4f8b\u5982\u5404\u79cd\u53d8\u91cf\u3001\u51fd\u6570\u540d\u3001\u6c47\u7f16\u4e2d\u7684label\u7b49\uff09\u8868\u793a\u3002\u7f16\u8bd1\u5668\u4f1a\u5c06\u7b26\u53f7\u7ed1\u5230relocatable addresses\uff08\u6bb5\u540d+\u504f\u79fb\u91cf\uff09\u3002\u94fe\u63a5\u5668\u6216\u52a0\u8f7d\u5668\uff08linker/loader\uff09\u4f1a\u5c06relocatable addresses\u7ed1\u5b9a\u5230absolute addresses\u3002\u5f53\u7136\uff0c\u5982\u679c\u7f16\u8bd1\u5668\u5728\u7f16\u8bd1\u65f6\u5c31\u77e5\u9053\u7a0b\u5e8f\u6240\u5904\u7684\u5185\u5b58\u5730\u5740\uff0c\u5219\u4f1a\u751f\u6210absolute code\u3002

    "},{"location":"CS/OS/mem_file/#81-partitioning-strategies","title":"8.1 Partitioning Strategies","text":"

    \u5728Batch\u7cfb\u7edf\u4e2d\uff0c\u6bcf\u6b21\u53ea\u6709\u4e00\u4e2a\u7a0b\u5e8f\u88ab\u52a0\u8f7d\u5165\u7269\u7406\u5185\u5b58\uff0c\u5e76\u8fd0\u884c\u81f3\u7ed3\u675f\u3002\u5982\u679c\u7a0b\u5e8f\u9700\u8981\u7684\u5b58\u50a8\u7a7a\u95f4\u6bd4\u5185\u5b58\u5927\uff0c\u5219\u5c06\u7a0b\u5e8f\u4e00\u5757\u4e00\u5757\u5207\u5f00

    \u4e0eprehistory\u4e0d\u540c\u7684\u662f\uff0c\u73b0\u5728\u9700\u8981\u628a\u591a\u4e2a\u8fdb\u7a0b\u540c\u65f6\u653e\u5165\uff0c\u5e76\u4e14\u652f\u6301\u5feb\u901f\u5207\u6362\u3002\u6700\u7b80\u5355\u7684\u5185\u5b58\u5206\u914d\u65b9\u6cd5\u662f\u5c06\u5185\u5b58\u5207\u6210partition\uff0c\u6bcf\u4e00\u4e2a\u5305\u542b\u4e00\u5757\u8fdb\u7a0b\u3002\u5207\u5206\u7684\u8981\u6c42\u6709

    \u5982\u679c\u8fdb\u7a0b\u8bf7\u6c42\u7a7a\u95f4\u6765\u8fd0\u884c\uff0c\u4f46\u6ca1\u6709\u8db3\u591f\u7684\u5185\u5b58\uff0c\u53ef\u4ee5

    Fixed Partition\uff1a\u56fa\u5b9apartition\u7684\u5927\u5c0f\u3002\u4f46\u662f\u53ef\u80fd\u9020\u6210\u6d6a\u8d39

    Variable Partition\uff1a\u4e0d\u56fa\u5b9apartition\u7684\u5927\u5c0f\u3002OS\u4f1a\u7ef4\u62a4\u4e00\u4e2a\u8868\u8bb0\u5f55\u53ef\u7528\u548c\u5df2\u7528\u7684\u5185\u5b58\u3002\u5b83\u7684\u7f3a\u70b9\u662f\uff1a\u6700\u5f00\u59cb\u5185\u5b58\u662f\u6574\u4e00\u4e2a\u5f88\u5927\u7684\u5185\u5b58\uff08hole\uff09\uff0c\u7ecf\u8fc7\u4e00\u6bb5\u65f6\u95f4\u8fd0\u884c\u540e\uff0c\u51fa\u73b0\u4e00\u7cfb\u5217\u5927\u5c0f\u4e0d\u7b49\u7684\u5b54\uff0c\u8fd9\u4e9b\u5c0f\u7684\u5b54\u90fd\u4e0d\u80fd\u88ab\u5229\u7528\u3002\u79f0\u4e3aexternal fragmentation\u3002

    Dynamic Storage-Allocation Problem\uff1a\u6839\u636e\u4e00\u7ec4hole\u6765\u5206\u914d\u5927\u5c0f\u4e3an\u7684\u8bf7\u6c42\uff0c\u79f0\u4e3adynamic storage-allocation problem.

    worst-fit\u5bf9\u4e2d\u5c0f\u8fdb\u7a0b\u8f83\u591a\u7684\u60c5\u51b5\u6709\u7528\uff0c\u56e0\u4e3a\u4f7f\u5f97\u5269\u4e0b\u7684\u7a7a\u95f2\u5757\u6bd4\u8f83\u5927\u3002\u4f46\u662f\u5e73\u5747\u60c5\u51b5\u4e0bfirst-fit\u548cbest-fit\u66f4\u597d\u4e00\u70b9\uff0c\u5176\u4e2dfirst-fit\u66f4\u5feb\uff0c\u5176\u5b83\u6ca1\u6709\u4e0ebest-fit\u6709\u660e\u663e\u5dee\u522b\u3002

    Protection

    \u4fdd\u8bc1\u4e00\u4e2a\u8fdb\u7a0b\u53ea\u80fd\u4f7f\u7528\u81ea\u5df1\u7684\u5185\u5b58\uff1a\u4f7f\u7528\u4e24\u4e2a\u5bc4\u5b58\u5668\uff0c\u4e00\u4e2abase\uff0c\u4e00\u4e2alimit\uff0c\u5206\u522b\u8868\u793a\u57fa\u5740\u548c\u504f\u79fb\u91cf\u3002\u5f53context switch\u5230\u4e00\u4e2a\u65b0\u7684\u8fdb\u7a0b or user mode\u60f3\u8981\u8fdb\u884c\u5185\u5b58\u8bbf\u95ee\uff0cCPU\u5c31\u4f1aload\u8fd9\u4e24\u4e2a\u5bc4\u5b58\u5668\u7684\u503c\u3002\u5982\u679c\u975e\u6cd5\u4e86\uff0c\u5c31trap\u6389\uff08\u901a\u5e38\u662fterminate\u8be5\u8fdb\u7a0b\uff09\u3002

    \u89e3\u51b3external fragmentation\u6709\u4e24\u4e2a\u601d\u8def\uff1a

    "},{"location":"CS/OS/mem_file/#82-segmentation","title":"8.2 \u5206\u6bb5 Segmentation","text":"

    \u4e00\u4e2a\u7a0b\u5e8f\u7531\u4e00\u7ec4\u6bb5(unordered set of)\u7ec4\u6210

    \u6bcf\u4e2a\u90fd\u662f\u4e00\u4e2a\u6bb5\uff0c\u5728\u5185\u5b58\u4e2d\u4e0d\u4e00\u5b9a\u662f\u6309\u7167\u7528\u6237\u5199\u7684\u987a\u5e8f\u6392\u5217\u7684\uff0c\u987a\u5e8f\u5f88\u968f\u673a\u3002\u8fd9\u4e2a\u987a\u5e8f\u662f\u7f16\u8bd1\u5668\u6784\u5efa\u7684\u3002\u6240\u4ee5\u6211\u4eec\u9700\u8981\u7528\u4e00\u7ec4\u903b\u8f91\u5730\u5740(logical address)\u6216\u8005\u53eb\u865a\u62df\u5730\u5740(virtual address)\u6765\u8bbf\u95ee\u3002

    \u903b\u8f91\u5730\u5740 = \u57fa\u5730\u5740 + \u6bb5\u754c

    \u6211\u4eec\u6709\u4e00\u4e2asegment table\uff0c\u6bcf\u4e2a\u6761\u76ee\u4ee5segment-number\u7d22\u5f15\uff0c\u5b58\u50a8base\u548climit\uff08\u4e5f\u53ef\u80fd\u8fd8\u5305\u62ec\u6743\u9650\u4f4d\uff09\u3002

    \u903b\u8f91\u5730\u5740\u7684\u6620\u5c04\u65b9\u5f0f\u5982\u4e0b\u56fe \u4ece\u903b\u8f91\u5730\u5740\u6620\u5c04\u5230\u7269\u7406\u5730\u5740\u7684\u8fd9\u4e00\u8fc7\u7a0b\u662f\u7531\u786c\u4ef6\u8bbe\u5907MMU\uff08memory-management unit\uff0c\u5185\u5b58\u7ba1\u7406\u5355\u5143\u5b8c\u6210\u7684\uff09\u3002CPU\u4f7f\u7528\u903b\u8f91\u5730\u5740\uff0c\u800c\u5bfb\u5740\u7684\u65f6\u5019\u5c31\u8981\u7528\u7269\u7406\u5730\u5740\u4e86\u3002 \u5206\u6bb5\u662f\u89e3\u51b3external fragmentation\u7684\u4e00\u79cd\u5c1d\u8bd5\uff0c\u56e0\u4e3a\u5b83\u628a\u7a0b\u5e8f\u5206\u6210\u4e86\u5f88\u591a\u6bb5\u3002

    \u8fd9\u79cd\u65b9\u6cd5\u597d\u50cf\u4e5f\u88ab\u53eb\u505a\u6742\u5408\u65b9\u6cd5\uff0c\u56e0\u4e3a\u4e0d\u662f\u4e3a\u6574\u4e2a\u5185\u5b58\u7a7a\u95f4\u63d0\u4f9b\u9875\u8868\uff0c\u800c\u662f\u4e3a\u6bcf\u4e2a\u903b\u8f91\u5206\u6bb5\u63d0\u4f9b\u3002

    "},{"location":"CS/OS/mem_file/#83-paging","title":"8.3 \u5206\u9875 Paging","text":"

    \uff08\u8fd9\u4e2a\u5730\u65b9\u6211\u771f\u7684\u771f\u7684\u6ca1\u770b\u61c2\uff0c\u53ef\u4ee5\u7559\u7740\u505alab\u518d\u770b\uff1a\u634f\u5417\u4eca\u5929lab\u5c31\u662f\u8fd9\u4e2a\u73a9\u610f\uff09

    \u5141\u8bb8\u8fdb\u7a0b\u7684\u7269\u7406\u5730\u5740\u7a7a\u95f4\u4e0d\u8fde\u7eed\u7684\u5185\u5b58\u7ba1\u7406\u65b9\u6848\u3002

    \u6211\u4eec\u5c06physical memory\u5207\u6210\u7b49\u5927\u7684\u5757\uff082\u7684\u5e42\uff0c\u901a\u5e38\u4e3a4KB = 2^12 B\uff09\uff0c\u79f0\u4e3aframes\uff08\u5e27\uff09\u3002

    \u5c06logical memory\u5207\u6210\u540c\u6837\u5927\u5c0f\u7684\u5757\uff0c\u79f0\u4e3apages\uff08\u9875\uff09\u3002

    \u5728paging\u4e2d\u5bf9\u5e94\u5173\u7cfb\u6709\uff1a

    MMU\u628alogical address\u7ffb\u8bd1\u6210physical address\u7684\u6b65\u9aa4\uff1a

    \u4e3a\u4ec0\u4e48paging\u80fd\u6ee1\u8db3not contiguous\u5462\uff1f\u56e0\u4e3a\u6211\u4eec\u5728PC+1\u6307\u5411\u4e0b\u4e00\u6761\u6307\u4ee4\u65f6\uff0c\u53ea\u8981\u5728logical addr\u4e2d\u662f\u4e0b\u4e00\u6761\u6307\u4ee4\u5c31\u53ef\u4ee5\uff0c\u65e0\u6240\u8c13\u8fd9\u4e2alogical addr\u5bf9\u5e94\u7684physical addr\u5728\u54ea\u91cc\u3002\u6211\u4eec\u518d\u56de\u5fc6\u4e00\u4e0blogical addr\u7684\u683c\u5f0f\u5982\u4e0b \u53ef\u89c1d\u662f2^n+1\u65f6 +1 \u662f

    \uff08\u5c31\u662f\u4e8c\u8fdb\u5236\u8fdb\u4e86\u4f4d\uff09\u3002\u8fd9\u65f6\u4e00\u4e2apage\u7ed3\u675f\uff0c\u8fdb\u5165\u4e86\u4e0b\u4e00\u4e2apage\u3002logical addr\u4ecd\u7136\u662f\u8fde\u7eed\u7684\u3002

    \u786c\u4ef6\u652f\u6301 Hardware Support\uff1apage table\u7684\u786c\u4ef6\u5b9e\u73b0\u6709\u5f88\u591a\u65b9\u6cd5