├── .idea ├── .gitignore ├── CS-Tutorial.iml ├── misc.xml ├── modules.xml └── vcs.xml ├── Assets ├── Algo │ ├── leetcode3.JPG │ ├── leetcode371.jpg │ ├── leetcode55.JPG │ ├── leetcode56_1.jpg │ ├── leetcode56_2.jpg │ ├── queue1.JPG │ ├── queue2.JPG │ ├── queue3.JPG │ ├── queue4.JPG │ ├── queue5.JPG │ ├── stack1.JPG │ ├── stack2.JPG │ ├── stack3.JPG │ ├── stack4.JPG │ ├── tree1.JPG │ ├── tree2.JPG │ ├── tree3.JPG │ ├── tree4.JPG │ ├── tree5.JPG │ ├── tree6.JPG │ ├── union1.JPG │ ├── union2.JPG │ ├── union3.JPG │ ├── union4.JPG │ ├── union5.JPG │ ├── union6.JPG │ ├── union7.JPG │ └── union8.JPG ├── CO │ ├── cisc_risc.JPG │ ├── dev.JPG │ ├── map1.JPG │ ├── map2.JPG │ └── replace.JPG ├── DL │ ├── act1.JPG │ ├── act10.jpg │ ├── act11.JPG │ ├── act2.JPG │ ├── act3.JPG │ ├── act4.JPG │ ├── act5.jpg │ ├── act6.jpg │ ├── act7.jpg │ ├── act8.jpg │ └── act9.jpg ├── Database │ ├── ACID.jpg │ ├── MVCC.JPG │ └── normalization.JPG ├── Exp │ ├── algo1.JPG │ ├── algo2.JPG │ ├── algo3.JPG │ ├── algo4.JPG │ ├── algo5.JPG │ ├── algo6.JPG │ ├── debug1.JPG │ ├── debug2.JPG │ ├── debug3.JPG │ ├── debug4.JPG │ ├── debug5.JPG │ ├── debug6.JPG │ ├── debug7.JPG │ ├── debug8.JPG │ ├── github1.JPG │ ├── github2.JPG │ ├── github3.JPG │ ├── github4.JPG │ ├── github5.JPG │ ├── github6.JPG │ ├── xcx_1.jpg │ ├── xcx_2.jpg │ ├── xcx_3.jpg │ ├── xcx_4.jpg │ ├── year1_1.JPG │ ├── year1_2.JPG │ ├── year1_3.JPG │ ├── year1_4.JPG │ └── year1_5.JPG ├── Network │ ├── arp.jpg │ ├── asymm.jpg │ ├── cookie_session.JPG │ ├── csma1.JPG │ ├── csma2.jpg │ ├── dns.png │ ├── five_layer1.JPG │ ├── five_layer2.jpg │ ├── get_post.jpg │ ├── http_https.png │ ├── sliding_window.jpg │ ├── sram_dram.png │ ├── tcp_udp.jpg │ ├── three_way.JPG │ ├── time_wait.jpg │ ├── websocket.jpg │ └── zombie_process.png ├── OS │ ├── deadlock1.jpg │ ├── deadlock2.jpg │ ├── fcfs.png │ ├── features.jpg │ ├── hrrn.jpg │ ├── interrupt1.jpg │ ├── interrupt2.jpg │ ├── process.jpg │ ├── sjf.png │ ├── smoker.jpg │ └── thread_state.jpg ├── leetcode.png └── marie.png ├── README.md ├── 操作系统 ├── 中断和异常.md ├── 僵尸孤儿.md ├── 吸烟者问题.md ├── 操作系统.md ├── 死锁.md ├── 特征.md ├── 线程的六种状态.md ├── 调度算法一.md └── 进程线程协程.md ├── 数据库 ├── acid.md ├── mvcc.md ├── 数据库.md └── 范式.md ├── 深度学习 ├── 深度学习.md └── 激活函数.md ├── 算法和数据结构 ├── draw_tree.md ├── leetcode3.md ├── leetcode371.md ├── leetcode55.md ├── leetcode56.md ├── 栈.md ├── 算法和数据结构.md └── 队列.md ├── 经验分享 ├── Debug.md ├── GitHub.md ├── 小程序.md ├── 方向.md ├── 算法入门.md └── 经验分享.md ├── 计算机组成原理 ├── cisc_risc.md ├── sramdram.md ├── 发展.md ├── 映射.md ├── 替换.md └── 计算机组成原理.md └── 计算机网络 ├── TCP_UDP.md ├── arp.md ├── cookie_session.md ├── csmacd.md ├── dns.md ├── get_post.md ├── http_https.md ├── time_wait.md ├── websocket.md ├── 三次握手.md ├── 滑动窗口.md ├── 网络五层.md ├── 计算机网络.md └── 非对称加密.md /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /.idea/CS-Tutorial.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Assets/Algo/leetcode3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/leetcode3.JPG -------------------------------------------------------------------------------- /Assets/Algo/leetcode371.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/leetcode371.jpg -------------------------------------------------------------------------------- /Assets/Algo/leetcode55.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/leetcode55.JPG -------------------------------------------------------------------------------- /Assets/Algo/leetcode56_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/leetcode56_1.jpg -------------------------------------------------------------------------------- /Assets/Algo/leetcode56_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/leetcode56_2.jpg -------------------------------------------------------------------------------- /Assets/Algo/queue1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/queue1.JPG -------------------------------------------------------------------------------- /Assets/Algo/queue2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/queue2.JPG -------------------------------------------------------------------------------- /Assets/Algo/queue3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/queue3.JPG -------------------------------------------------------------------------------- /Assets/Algo/queue4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/queue4.JPG -------------------------------------------------------------------------------- /Assets/Algo/queue5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/queue5.JPG -------------------------------------------------------------------------------- /Assets/Algo/stack1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/stack1.JPG -------------------------------------------------------------------------------- /Assets/Algo/stack2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/stack2.JPG -------------------------------------------------------------------------------- /Assets/Algo/stack3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/stack3.JPG -------------------------------------------------------------------------------- /Assets/Algo/stack4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/stack4.JPG -------------------------------------------------------------------------------- /Assets/Algo/tree1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/tree1.JPG -------------------------------------------------------------------------------- /Assets/Algo/tree2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/tree2.JPG -------------------------------------------------------------------------------- /Assets/Algo/tree3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/tree3.JPG -------------------------------------------------------------------------------- /Assets/Algo/tree4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/tree4.JPG -------------------------------------------------------------------------------- /Assets/Algo/tree5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/tree5.JPG -------------------------------------------------------------------------------- /Assets/Algo/tree6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/tree6.JPG -------------------------------------------------------------------------------- /Assets/Algo/union1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union1.JPG -------------------------------------------------------------------------------- /Assets/Algo/union2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union2.JPG -------------------------------------------------------------------------------- /Assets/Algo/union3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union3.JPG -------------------------------------------------------------------------------- /Assets/Algo/union4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union4.JPG -------------------------------------------------------------------------------- /Assets/Algo/union5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union5.JPG -------------------------------------------------------------------------------- /Assets/Algo/union6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union6.JPG -------------------------------------------------------------------------------- /Assets/Algo/union7.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union7.JPG -------------------------------------------------------------------------------- /Assets/Algo/union8.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Algo/union8.JPG -------------------------------------------------------------------------------- /Assets/CO/cisc_risc.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/CO/cisc_risc.JPG -------------------------------------------------------------------------------- /Assets/CO/dev.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/CO/dev.JPG -------------------------------------------------------------------------------- /Assets/CO/map1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/CO/map1.JPG -------------------------------------------------------------------------------- /Assets/CO/map2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/CO/map2.JPG -------------------------------------------------------------------------------- /Assets/CO/replace.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/CO/replace.JPG -------------------------------------------------------------------------------- /Assets/DL/act1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act1.JPG -------------------------------------------------------------------------------- /Assets/DL/act10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act10.jpg -------------------------------------------------------------------------------- /Assets/DL/act11.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act11.JPG -------------------------------------------------------------------------------- /Assets/DL/act2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act2.JPG -------------------------------------------------------------------------------- /Assets/DL/act3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act3.JPG -------------------------------------------------------------------------------- /Assets/DL/act4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act4.JPG -------------------------------------------------------------------------------- /Assets/DL/act5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act5.jpg -------------------------------------------------------------------------------- /Assets/DL/act6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act6.jpg -------------------------------------------------------------------------------- /Assets/DL/act7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act7.jpg -------------------------------------------------------------------------------- /Assets/DL/act8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act8.jpg -------------------------------------------------------------------------------- /Assets/DL/act9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/DL/act9.jpg -------------------------------------------------------------------------------- /Assets/Database/ACID.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Database/ACID.jpg -------------------------------------------------------------------------------- /Assets/Database/MVCC.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Database/MVCC.JPG -------------------------------------------------------------------------------- /Assets/Database/normalization.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Database/normalization.JPG -------------------------------------------------------------------------------- /Assets/Exp/algo1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/algo1.JPG -------------------------------------------------------------------------------- /Assets/Exp/algo2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/algo2.JPG -------------------------------------------------------------------------------- /Assets/Exp/algo3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/algo3.JPG -------------------------------------------------------------------------------- /Assets/Exp/algo4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/algo4.JPG -------------------------------------------------------------------------------- /Assets/Exp/algo5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/algo5.JPG -------------------------------------------------------------------------------- /Assets/Exp/algo6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/algo6.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug1.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug2.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug3.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug4.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug5.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug6.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug7.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug7.JPG -------------------------------------------------------------------------------- /Assets/Exp/debug8.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/debug8.JPG -------------------------------------------------------------------------------- /Assets/Exp/github1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/github1.JPG -------------------------------------------------------------------------------- /Assets/Exp/github2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/github2.JPG -------------------------------------------------------------------------------- /Assets/Exp/github3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/github3.JPG -------------------------------------------------------------------------------- /Assets/Exp/github4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/github4.JPG -------------------------------------------------------------------------------- /Assets/Exp/github5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/github5.JPG -------------------------------------------------------------------------------- /Assets/Exp/github6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/github6.JPG -------------------------------------------------------------------------------- /Assets/Exp/xcx_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/xcx_1.jpg -------------------------------------------------------------------------------- /Assets/Exp/xcx_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/xcx_2.jpg -------------------------------------------------------------------------------- /Assets/Exp/xcx_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/xcx_3.jpg -------------------------------------------------------------------------------- /Assets/Exp/xcx_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/xcx_4.jpg -------------------------------------------------------------------------------- /Assets/Exp/year1_1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/year1_1.JPG -------------------------------------------------------------------------------- /Assets/Exp/year1_2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/year1_2.JPG -------------------------------------------------------------------------------- /Assets/Exp/year1_3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/year1_3.JPG -------------------------------------------------------------------------------- /Assets/Exp/year1_4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/year1_4.JPG -------------------------------------------------------------------------------- /Assets/Exp/year1_5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Exp/year1_5.JPG -------------------------------------------------------------------------------- /Assets/Network/arp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/arp.jpg -------------------------------------------------------------------------------- /Assets/Network/asymm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/asymm.jpg -------------------------------------------------------------------------------- /Assets/Network/cookie_session.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/cookie_session.JPG -------------------------------------------------------------------------------- /Assets/Network/csma1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/csma1.JPG -------------------------------------------------------------------------------- /Assets/Network/csma2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/csma2.jpg -------------------------------------------------------------------------------- /Assets/Network/dns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/dns.png -------------------------------------------------------------------------------- /Assets/Network/five_layer1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/five_layer1.JPG -------------------------------------------------------------------------------- /Assets/Network/five_layer2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/five_layer2.jpg -------------------------------------------------------------------------------- /Assets/Network/get_post.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/get_post.jpg -------------------------------------------------------------------------------- /Assets/Network/http_https.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/http_https.png -------------------------------------------------------------------------------- /Assets/Network/sliding_window.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/sliding_window.jpg -------------------------------------------------------------------------------- /Assets/Network/sram_dram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/sram_dram.png -------------------------------------------------------------------------------- /Assets/Network/tcp_udp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/tcp_udp.jpg -------------------------------------------------------------------------------- /Assets/Network/three_way.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/three_way.JPG -------------------------------------------------------------------------------- /Assets/Network/time_wait.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/time_wait.jpg -------------------------------------------------------------------------------- /Assets/Network/websocket.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/websocket.jpg -------------------------------------------------------------------------------- /Assets/Network/zombie_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/Network/zombie_process.png -------------------------------------------------------------------------------- /Assets/OS/deadlock1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/deadlock1.jpg -------------------------------------------------------------------------------- /Assets/OS/deadlock2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/deadlock2.jpg -------------------------------------------------------------------------------- /Assets/OS/fcfs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/fcfs.png -------------------------------------------------------------------------------- /Assets/OS/features.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/features.jpg -------------------------------------------------------------------------------- /Assets/OS/hrrn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/hrrn.jpg -------------------------------------------------------------------------------- /Assets/OS/interrupt1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/interrupt1.jpg -------------------------------------------------------------------------------- /Assets/OS/interrupt2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/interrupt2.jpg -------------------------------------------------------------------------------- /Assets/OS/process.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/process.jpg -------------------------------------------------------------------------------- /Assets/OS/sjf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/sjf.png -------------------------------------------------------------------------------- /Assets/OS/smoker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/smoker.jpg -------------------------------------------------------------------------------- /Assets/OS/thread_state.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/OS/thread_state.jpg -------------------------------------------------------------------------------- /Assets/leetcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/leetcode.png -------------------------------------------------------------------------------- /Assets/marie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chiewhui1113/CS-Tutorial/df5efbfb9155d60d723315aa81c1e66da8ce9223/Assets/marie.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 计算机教程秒懂系列 2 | 3 | 经营两个多月的小红书终于万粉啦!把发过的内容都整理好在这里了,很感谢大家的支持!十二月中的时候那篇三次握手突然爆火,当时也挺没想到的,感觉人生成就又+1了哈哈。 4 | 做这个秒懂系列,为了让教程简单易懂,需要四处看视频查资料,所以也是在督促自己学习吧!希望大家继续支持和喜欢这个秒懂系列! 5 | 6 | 1. [计算机网络](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C.md) 7 | 2. [操作系统](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.md) 8 | 3. [算法和数据结构](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E7%AE%97%E6%B3%95%E5%92%8C%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E7%AE%97%E6%B3%95%E5%92%8C%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md) 9 | 4. [数据库](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E6%95%B0%E6%8D%AE%E5%BA%93/%E6%95%B0%E6%8D%AE%E5%BA%93.md) 10 | 5. [计算机组成原理](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86.md) 11 | 6. [深度学习](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.md) 12 | 7. [经验分享](https://github.com/chiewhui1113/CS-Tutorial/blob/main/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB.md) 13 | 14 | ## 关于本系列 15 | - 目前不知道怎么做图片轮播,感觉没有小红书好看,知道的可以跟我说一下啊 T_T 16 | - 因为刚开始都是发在小红书上面的,这个是临时整理可能没仔细检查会有错字,可以提一下 :) 17 | - 我用了各种各样日常/稀奇古怪的方式来比喻计算机知识,来一起说:**博主好油菜!** 18 | 19 | ## 主要平台 20 | 小红书:[TickQ](https://www.xiaohongshu.com/user/profile/604b1ba1000000000100b0ee)
21 | Instagram:[tickq2](https://www.instagram.com/tickq2/)
22 | YouTube:[TickQ](https://www.youtube.com/@TickQ-2)
23 | B站:[TickQ](https://b23.tv/gBTkakk) 24 | 25 | ## 教程 26 | 1. Python速成课(英) 27 | 2. MARIE汇编语言(英)
28 | [![MARIE](./Assets/marie.png)](https://www.youtube.com/watch?v=EVUe44rCm3c&list=PLiVa9GQCsXJ1b4y9j9dKxNh-J-wSE82QT) 29 | 4. LeetCode讲解(英)
30 | [![LEETCODE](./Assets/leetcode.png)](https://www.youtube.com/watch?v=o2zTVv6uV3A&list=PLiVa9GQCsXJ2h9HprbKQ1CKA6btqIXICG) 31 | 32 | 33 | ## 其他 34 | 笔记:MAT1830、FIT1047、FIT1008
35 | 辅导:私 36 | -------------------------------------------------------------------------------- /操作系统/中断和异常.md: -------------------------------------------------------------------------------- 1 | # 中断和异常 2 | ![interrupt1](../Assets/OS/interrupt1.jpg) 3 | ![interrupt2](../Assets/OS/interrupt2.jpg) 4 | 5 | 用户态:普通应用程序运行在用户态,有很多权限限制 6 | 内核态:操作系统运行在内核态,有完全的权限访问和管理所有资源(硬件,内存) 7 | 8 | ## 中断的作用 9 | 把CPU从用户态变内核态 10 | 11 | ## 异常(内中断) 12 | 和执行的指令有关,中断来源于CPU内部。分为终止,陷入和故障 13 | 1. 终止:当前执行的指令出现不可恢复的错误(在非内核态尝试执行特权指令/整数除0),会直接终止该程序 14 | 2. 陷入:应用程序主动请求操作系统服务,执行陷入指令。处理完会返回到下一个指令 15 | 3. 故障:可以被内核程序修复的错误(好像缺页故障只需要把数据从硬盘加载到内存即可)。处理完会返回之前的指令 16 | 17 | ## 中断(外中断) 18 | 和执行的指令无关,中断来源于CPU外部。分为时钟中断和IO中断 19 | 1. 时钟中断:系统计时器每隔一段时间给CPU发送中断信号,CPU会处理相应的时钟中断ISR(中断服务程序),然后操作系统会指定接下来执行哪个应用程序 20 | 2. I/O中断:I/O设备任务完成后会给CPU发出中断信号。CPU收到信号后会暂停当前任务,处理相应的I/O中断服务程序,处理完了再恢复执行之前被中断的任务 21 | 22 | ## 中断向量表 23 | 每种中断信号都有不同的ISR(中断服务程序)。CPU收到中断信号后,会在这个表查该中断类型的程序在内存中的位置 24 | -------------------------------------------------------------------------------- /操作系统/僵尸孤儿.md: -------------------------------------------------------------------------------- 1 | # 孤儿进程和僵尸进程 2 | 3 | [![zombie](../Assets/Network/zombie_process.png)](https://www.bilibili.com/video/BV1tC4y1r7Zj?vd_source=f60330185adabf166359748da895c646) 4 | 5 | ## 孤儿进程 6 | 假如一个父进程exit了,但是它的子进程还在运行,这些子进程就会变成孤儿进程被init进程收养。等这些子进程结束时,init进程会处理结束状态,并且释放占用资源 7 | 8 | ## 僵尸进程 9 | 假如子进程exit了,不过父进程并没有用wait或waitpid读取子进程的终止状态并释放资源,子进程就会变成僵尸进程。要是积累了太多僵尸进程,系统就无法创建新进程,因为系统的进程号数量是有限制的 10 | 11 | ## 僵尸进程解决 12 | 1. Kill父进程 13 | 那些子进程就会变成孤儿进程被init进程收养,然后处理释放资源 14 | 15 | 2. 发送SIGCHLD信号 16 | 子进程exit时给父进程发送SIGCHLD信号,这样父进程就能及时处理 17 | 18 | 3. fork两次 19 | 父进程用fork创建第一个子进程,然后执行wait()等待该子进程结束。第一个子进程接着fork创建第二个子进程。第一个子进程结束的时候会被父进程处理,而第二个进程则变成孤儿进程被init收养 20 | -------------------------------------------------------------------------------- /操作系统/吸烟者问题.md: -------------------------------------------------------------------------------- 1 | # 吸烟者问题 2 | ![interrupt1](../Assets/OS/smoker.jpg) 3 | 4 | 吸烟者问题是为了让大家了解操作系统并发中互斥和同步的概念。互斥代表同个时间只有一个进程能访问共享资源/临界区。 5 | 好像同个时间只有一个抽烟者能获得那两种材料,而且条件会确保只有一个吸烟者会满足要求获得材料。 6 | 同步代表任务必须按照严格顺序执行,好像A抽完了B才可以抽 7 | -------------------------------------------------------------------------------- /操作系统/操作系统.md: -------------------------------------------------------------------------------- 1 | # 操作系统 2 | 3 | ## 并发 4 | 1. [死锁的条件、预防、避免、检测](./死锁.md) 5 | 2. [操作系统的特征](./特征.md) 6 | 3. [吸烟者问题](./吸烟者问题.md) 7 | 8 | ## 系统处理 9 | 1. [中断和异常](./中断和异常.md) 10 | 11 | ## 进程管理 12 | 1. [进程、线程和协程](./进程线程协程.md) 13 | 2. [线程的六种状态](./线程的六种状态.md) 14 | 3. [孤儿进程和僵尸进程](./僵尸孤儿.md) 15 | 4. [调度算法(一)](./调度算法一.md) 16 | -------------------------------------------------------------------------------- /操作系统/死锁.md: -------------------------------------------------------------------------------- 1 | # 死锁的条件、预防、避免、检测 2 | ![deadlock1](../Assets/OS/deadlock1.jpg) 3 | ![deadlock2](../Assets/OS/deadlock2.jpg) 4 | **死锁的必要条件** 5 | 1. 互斥条件:一个资源一次只能给一个进程使用,非共享 6 | 2. 请求与保持条件:保持自己资源的同时请求其他资源,该资源可能被占有 7 | 3. 非剥夺条件:不能强行夺走资源,只能等别的进程主动释放 8 | 4. 循环等待条件:每个进程都在等待另一个进程占有的资源,形成死循环 9 | 10 | **死锁预防** 11 | 1. 破坏互斥条件:共享资源 12 | 2. 破坏请求与保持条件:一次性申请所有必须的资源,申请的时候要释放已有资源 13 | 3. 破坏非剥夺条件:强行释放资源给优先级更高的进程 14 | 4. 破坏循环等待条件:按照顺序申请资源,避免循环 15 | 16 | **死锁避免 - 银行家算法** 17 | 1. 系统状态:记录每个进程最多需要多少资源,已分配多少资源,还剩下多少可用资源 18 | 2. 安全状态:按照顺序分配资源,确保每个进程都可以完成任务释放资源 19 | 3. 资源请求处理:检查是否超过最大需求,有没有足够资源,怎么分配 20 | 21 | **死锁检测**
22 | 允许死锁,发现死锁再采取措施(终止,强行释放) 23 | -------------------------------------------------------------------------------- /操作系统/特征.md: -------------------------------------------------------------------------------- 1 | # 操纵系统的特征 2 | ![features](../Assets/OS/features.jpg) 3 | 4 | 1. **并发**: 5 | 一个厨师(单核CPU)快速切换轮流处理三样菜(进程),看起来像同时处理 6 | 7 | 2. **并行**: 8 | 有多个厨师(多核CPU),每个厨师独立处理一样菜(进程),真正的同时处理 9 | 10 | 3. **互斥共享**: 11 | 某个资源可以给多个进程使用,但是一个时间段内只允许一个进程访问某个资源(摄像头,在一个app打视频就不能同时在另一个app打视频) 12 | 13 | 4. **同时共享**: 14 | 一个时间段内允许多个进程同时访问资源(文件,可以同时在两个app发文件) 15 | 16 | 5. **空分复用虚拟**: 17 | 内存不够时,计算机会把不常用的数据从内存转到硬盘,这叫虚拟内存管理。假如需要访问移到硬盘的数据,再把它们加载到内存。不过用户看着会以为超出了实际内存也可以运行 18 | 19 | 6. **时分复用虚拟**: 20 | 虽然只有一个CPU(实际上),但是操作系统通过时间片把CPU的时间分配给不同进程,因为时间很短用户就感觉(逻辑上)像是同时执行多个进程 21 | 22 | 7. **异步**: 23 | 异步处理就是等待一个长时间操作的时候先去执行别的任务,不用等这个操作完成。因此执行的时间和顺序是不确定的 24 | 25 | ## 四个特征总结 26 | 并发:多个进程在同一时间段能“同时”执行

27 | 共享:多个并发进程可以同时使用同一资源

28 | 虚拟:将单一的物理资源分割成多个逻辑资源

29 | 异步:多个进程执行的时候是走走停停,所以执行顺序和时间不确定

30 | 31 | ## 虚拟这句话可能比较懵,比喻一下 32 | 有一栋大楼(物理资源),里面被划分成很多个公寓(逻辑资源/虚拟内存空间)。每个公寓都是独立的虚拟环境,居民(进程)在公寓里可能觉得自己独占了整栋楼,其实是和其他进程共享。所以虚拟化让进程在共享物理资源的同时,又有一种自己完全独立控制资源的错觉 33 | -------------------------------------------------------------------------------- /操作系统/线程的六种状态.md: -------------------------------------------------------------------------------- 1 | # 线程的六种状态 2 | ![thread](../Assets/OS/thread_state.jpg) 3 | 4 | 线程是操作系统进行运算调度的最小单位,它可以分为六种状态 5 | 6 | ## 新建状态(NEW) 7 | 用new创建一个线程对象,这时候处于新建状态 8 | 9 | ## 可运行状态(RUNNABLE) 10 | 可运行状态又分为两种状态:就绪状态和运行状态 11 | 12 | 1. 就绪状态(READY) 13 | 线程调用start()后就处于就绪状态,等待被线程调度选中获取CPU使用权 14 | 15 | 2. 运行状态(RUNNING) 16 | 获得CPU时间片后执行run(),就处于运行状态。单核CPU一次只能有一个线程处于运行状态 17 | 18 | ## 阻塞状态(BLOCKED) 19 | 线程试图访问一个被其他线程锁定的synchronized代码块或方法时,就会进入阻塞状态等锁被释放。锁被释放后即变成就绪态 20 | 21 | ## 等待状态(WAITING) 22 | 假如线程调用了某对象的wait(),就会释放该对象的锁进入等待状态。这种状态只能等待别的线程唤醒变成就绪态(notify() / notifyAll()) 23 | 24 | ## 超时等待状态(TIMED-WAITING) 25 | 当线程调用sleep()时,会让自己在指定的时间内暂停执行,不占用系统资源,等时间结束再进入就绪状态。假如线程调用另一个线程的join(),就会等待那个线程结束。这两个都是超时等待状态 26 | 27 | ## 终止状态(TERMINATED) 28 | 线程因为任务结束/异常退出run()方法 29 | -------------------------------------------------------------------------------- /操作系统/调度算法一.md: -------------------------------------------------------------------------------- 1 | # 操纵系统的特征 2 | ![fcfs](../Assets/OS/fcfs.png) 3 | ![sjf](../Assets/OS/sjf.png) 4 | ![hrrn](../Assets/OS/hrrn.jpg) 5 | 6 | 调度算法是操作系统用来决定各个进程/作业在CPU上执行顺序的方法。最常见的调度算法有:FCFS、SJF、HRRN、RR、HPF和MFQ。这集先介绍前三个 7 | 8 | ## 先来先服务 FCFS 9 | 根据作业到达的先后顺序调度,CPU会一直运行直到作业结束,所以这个是非抢占式的 10 | 11 | 优点:公平,对长作业有利
12 | 缺点:不利于短作业。假如一个长作业先运行,后面的短作业就需要等很久 13 | 14 | ## 短作业优先 SJF 15 | 每次调度选择当前已到达并且运行时间最短的作业 16 | 17 | 优点:减少平均等待和周转时间
18 | 缺点:不利于长作业。假如队列有很多短作业,长作业的周转时间就会变长。 19 | 虽然是长作业先来的,可是一直不被运行 20 | 21 | ## 高响应比优先 HRRN 22 | FCFS和SJF的综合,考虑到了公平性+短作业的处理。在调度时会先计算响应比,然后运行响应比最高的作业。

23 | 响应比的计算公式为: 24 | 25 | 响应比: (等待时间 + 要求服务时间) / 要求服务时间 26 | 27 | 当作业的等待时间相同时,要求服务时间短的响应比就会更高,就会先被调度
28 | 当作业的要求服务时间相同时,等待时间长的响应比就会更高,就会先被调度
29 | 30 | 以上的三种算法都默认为非抢占式。SJF的抢占式版本称作“最短剩余时间优先SRTN” 31 | 32 | ## ️计算公式 33 | 周转时间 = 完成时间 - 到达时间
34 | 带权周转时间 = 周转时间 / 运行时间
35 | 等待时机 = 周转时间 - 运行时间
-------------------------------------------------------------------------------- /操作系统/进程线程协程.md: -------------------------------------------------------------------------------- 1 | # 进程、线程和协程 2 | ![process](../Assets/OS/process.jpg) 3 | 4 | ## 进程 5 | 进程是一个正在运行的可执行文件(exe),它是系统分配资源的最小单位。好像wx、xhs和wb都是不同的进程。它们各自独立,有自己的资源 6 | 7 | ## 线程 8 | 一个进程里可以有多个线程,线程是系统进行运行调度的最小单位。好像xhs里可以有不同线程:刷新页面、打字聊天、加载图片、推送通知等。这些线程都共享同一个进程的资源(同个xhs的账号),不过它们各自负责不同的任务 9 | 10 | ## 协程 11 | 一个线程里可以有多个协程。进程和线程都是被操作系统内核控制的,但是协程是完全由程序控制。其实它们就是函数,程序员可以编写程序来决定什么时候“暂停”和“恢复”。因为它们在同个线程,所以协程的运行是串行的,虽然有多个协程但是任何时刻只能有一个协程执行。好像我们聊天的时候,一个时间只能有一个聊天界面,我们可以在等待回复期间回复别人,但是这个行为是串行的。这里的每个聊天界面对应一个协程。协程也是异步的,能保留每次调用之间的状态。好像我们的聊天界面都有历史记录,会保留我问“在吗“的状态,下次调用(打开聊天界面)还能继续交流 12 | 13 | 所以它们就是进程(线程(协程))) 14 | 15 | ## 线程和协程区别 16 | 操作系统会根据时间片调度来切换不同线程。但是协程是由用户决定的,用户会在协程(函数)里设定点(yield)暂停和恢复执行任务。这样就可以决定什么时候切换协程 17 | -------------------------------------------------------------------------------- /数据库/acid.md: -------------------------------------------------------------------------------- 1 | # ACID 2 | 3 | ![ACID](../Assets/Database/ACID.jpg) 4 | 5 | 为了保证数据库管理系统(DBMS)的事务正确及可靠,具备了ACID四种特性: 6 | 7 | ## Atomicity 原子性 8 | 事务中的操作要么全部完成,要么全部不完成。中途出错就回滚到最初的状态 9 | 10 | ## Consistency 一致性 11 | 在事务开始前和结束后,数据库的状态都一致,满足所有限制条件 12 | 13 | ## Isolation 隔离性 14 | 并发执行的事务互不干扰,独立运行 15 | 16 | - **情况1: Dirty Read 脏读**
17 | 一个事务读取到了另一个事务未提交的数据。那份数据有可能被回滚=不存在 18 | - **情况2: Non-repeatable Read 不可重复读**
19 | 一个事务读取到了另一个事务已提交的更新数据。但是和之前的数据不一致 20 | - **情况3: Phantom Read 幻读**
21 | 一个事务读取到了另一个事务已提交的增删数据。但是和之前的数据不一致 22 | 23 | 隔离级别在p6 p7,有读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable) 24 | 25 | ## Durability 持久性 26 | 事务提交=永久结果。系统坏了天塌了,这个事务对数据库的更改还在。所以事务提交前需要把更改写入到Logging(日志),系统崩溃就从这里恢复数据 27 | -------------------------------------------------------------------------------- /数据库/mvcc.md: -------------------------------------------------------------------------------- 1 | # MVCC原理 2 | 3 | ![MVCC](../Assets/Database/MVCC.JPG) 4 | 5 | MVCC(multi-version concurrency control)多版本并发控制是用于实现ACID中的隔离性的一种机制。它的存在是为了解决脏读和不可重复读 6 | 7 | 注:MVCC是无法单独解决幻读的,只有串行化(Serializabke)才能防止幻读 8 | 9 | MVCC是基于隐藏字段、Undo Log和ReadView实现的 10 | 11 | ## 隐藏字段 12 | 1. trx_id:事务ID,标识了进行该记录最后修改的事务 13 | 2. roll_pointer:回滚指针,指向该记录的上一个版本 14 | 3. row_id:如果表没有指定聚集索引,就会用row_id来创建聚集索引 15 | 16 | ## Undo Log 17 | 每次增删改的操作都记录在Undo Log 18 | 19 | ## Read View 20 | 快照读的时候会有一个读视图,分为四个部分: 21 | 1. m_ids:活跃事务的id列表,活跃事务就是启动了还未提交的事务 22 | 2. min_trx_id:m_ids中的最小值 23 | 3. max_trx_id:下一个事务分配的id(m_ids最大值+1) 24 | 4. creator_trx_id:创建该ReadView的事务id 25 | 26 | ## 规则 27 | 至于读到哪个版本的数据,分为以下规则: 28 | 1. 判断该版本是否为当前事务创建(creator==trx_id) 29 | - 是,代表这个当前版本是这个事务修改的,当然可以看 30 | - 不是,—> 2 31 | 32 | 2. 判断该版本是否在ReadView生成前提交(trx_id < min_trx_id) 33 | - 是,代表这条记录已经提交了,当然可以看 34 | - 不是,—> 3 35 | 36 | 3. 判断该版本是否在ReadView生成之后开启(trx_id > max_trx_id) 37 | - 是,不能被当前事务访问,下一个版本 38 | - 不是,—> 4 39 | 40 | 4. 判断创建ReadView时是否已经提交(在不在m_ids里) 41 | - 是,修改的事务还没提交不能看,下一个版本 42 | - 不是,已经提交可以看 43 | 44 | MVCC只会在读已提交(Read Commited)和可重复读(Repeatable Read)这两个隔离级别生效。在RC级别下,每次快照读都会生成新的ReadView。在RR级别下,只有第一次会生成新的ReadView,后续都是用第一次的ReadView 45 | 46 | ## 提问 47 | **cohao酱**:判断该版本是否为当前事务创建(creator==trx_id) 这里的creator是哪来的呢? 48 | 49 | **答**:creator是创建ReadView的事务id。好像p4我们看到有三个trx_id(102、105、106),但是是trx_id为105的事务A开的ReadView,所以105就是creator。 50 | p6的话,还是事务A开的ReadView,所以creator还是105。不过因为版本里有106和102两条记录,所以要从上面开始跟着那四个条件看,看应该给creator查看哪一个版本。 51 | 这里就是对比creator和trx_id,不同版本 52 | -------------------------------------------------------------------------------- /数据库/数据库.md: -------------------------------------------------------------------------------- 1 | # 数据库 2 | 3 | 1. [ACID](./acid.md) 4 | 3. [数据库范式 (1NF - BCNF)](./范式.md) 5 | 4. [MVCC原理](./mvcc.md) 6 | -------------------------------------------------------------------------------- /数据库/范式.md: -------------------------------------------------------------------------------- 1 | # 数据库范式 (1NF - BCNF) 2 | 3 | ![norm](../Assets/Database/normalization.JPG) 4 | 5 | 为了避免数据的冗余和增删改异常,有几种数据库范式,这里只会说前四个函数依赖的 6 | 7 | ## 第一范式(1NF) 8 | 表中的每一列不能再细分。好像图里皮肤可以分为类型和数量。需要把它拆开满足第一范式 9 | 10 | ## 第二范式(2NF) 11 | 非主属性要完全函数依赖于某一个候选键,要是出现部分依赖就不满足。好像{A, B} -> {C},{A} -> {C}, 12 | A是候选键{A, B}的一部分,不过{C}只部分依赖{A}而不是{A, B},这个例子就不符合第二范式。好像图里的例子, 13 | 因为部分依赖,要是玩家只有段位没有皮肤,就不加上去表了。所以可以拆开成两个表来满足第二范式 14 | 15 | ## 第三范式(3NF) 16 | 非主属性不能传递依赖于候选键。假设A是候选键,C是非主属性,{A} -> {B}, {B} -> {C}, 17 | C就可以通过B依赖于候选键A,这就是传递函数依赖。不过注意,要是这里{B} -> {A}就不是传递函数依赖 18 | 19 | ## BCNF 20 | 所有属性(主属性和非主属性)都完全函数依赖于候选键。做题只需要看左边的决定因素是不是都是候选键就可以。 21 | 假如候选键是{A,B},依赖是{A,B} -> {C},{B} -> {D}, {D} -> {B},这满足第三范式因为没有传递依赖, 22 | 但是左边的{B}不是候选键,{B}和{A,B}不一样,所以不满足BCNF 23 | -------------------------------------------------------------------------------- /深度学习/深度学习.md: -------------------------------------------------------------------------------- 1 | # 深度学习 2 | 3 | 1. [图解激活函数的作用](./激活函数.md) 4 | -------------------------------------------------------------------------------- /深度学习/激活函数.md: -------------------------------------------------------------------------------- 1 | # 激活函数的作用 2 | 3 | ![act1](../Assets/DL/act1.JPG) 4 | ![act2](../Assets/DL/act2.JPG) 5 | ![act3](../Assets/DL/act3.JPG) 6 | ![act4](../Assets/DL/act4.JPG) 7 | ![act5](../Assets/DL/act5.jpg) 8 | ![act6](../Assets/DL/act6.jpg) 9 | ![act7](../Assets/DL/act7.jpg) 10 | ![act8](../Assets/DL/act8.jpg) 11 | ![act9](../Assets/DL/act9.jpg) 12 | ![act10](../Assets/DL/act10.jpg) 13 | ![act11](../Assets/DL/act11.JPG) 14 | -------------------------------------------------------------------------------- /算法和数据结构/draw_tree.md: -------------------------------------------------------------------------------- 1 | # 根据前中/中后序画二叉树 2 | 3 | ![tree1](../Assets/Algo/tree1.JPG) 4 | ![tree2](../Assets/Algo/tree2.JPG) 5 | ![tree3](../Assets/Algo/tree3.JPG) 6 | ![tree4](../Assets/Algo/tree4.JPG) 7 | ![tree5](../Assets/Algo/tree5.JPG) 8 | ![tree6](../Assets/Algo/tree6.JPG) 9 | -------------------------------------------------------------------------------- /算法和数据结构/leetcode3.md: -------------------------------------------------------------------------------- 1 | # LeetCode 3: 无重复最长字符 2 | ![leetcode3](../Assets/Algo/leetcode3.JPG) 3 | 4 | ```C++ 5 | int lengthOfLongestSubstring(string s) { 6 | int maxLen = 0; // MAX 7 | unordered_set hash; // 记录的纸 8 | 9 | int left = 0; // 左边站着的A 10 | for (int right = 0; right < s.length(); right++) { // 负责走的B 11 | // 假如看到已经在纸上记录的字符,A要删除当前字符然后往右移动 12 | while (hash.count(s[right])) { 13 | hash.erase(s[left]); // 删除 14 | left++; // left往右走一步 15 | } 16 | hash.insert(s[right]); // 把right指向的字符加进去 17 | maxLen = max(maxLen, right - left + 1); // 更新MAX 18 | } 19 | return maxLen; 20 | } 21 | -------------------------------------------------------------------------------- /算法和数据结构/leetcode371.md: -------------------------------------------------------------------------------- 1 | # LeetCode 55:跳跃游戏 2 | 3 | ![leetcode371](../Assets/Algo/leetcode371.jpg) 4 | 5 | ```C++ 6 | int getSum(int a, int b) { 7 | while (b) { // 0就代表不用继续加了 退出循环 8 | int sign = (a & b) << 1; // 找进位 9 | a ^= b; // 剩下的加起来 10 | b = sign; 11 | } 12 | return a; 13 | 14 | // a = 0100 15 | // b = 0101 16 | 17 | // sign = 0100 18 | // sign = 1000 19 | 20 | // a ^= b --> 0001 21 | // b = 1000 22 | 23 | // sign = 0000 24 | // sign = 0000 25 | 26 | // a ^= b --> 1001 27 | } 28 | -------------------------------------------------------------------------------- /算法和数据结构/leetcode55.md: -------------------------------------------------------------------------------- 1 | # LeetCode 55:跳跃游戏 2 | 3 | ![leetcode55](../Assets/Algo/leetcode55.JPG) 4 | 5 | ```C++ 6 | bool canJump(vector& nums) { 7 | int n = nums.size(); // 数组长度 8 | int rightmost = 0; // 最右边的 9 | for (int i = 0; i < n; i++) { // 遍历 10 | if (i <= rightmost) { 11 | // 记录目前能达到的最远距离 12 | rightmost = max(rightmost, i + nums[i]); 13 | } 14 | // 已经到最后一个位置 15 | if (rightmost >= n - 1) { 16 | return true; 17 | } 18 | } 19 | // 达不到 20 | return false; 21 | } 22 | -------------------------------------------------------------------------------- /算法和数据结构/leetcode56.md: -------------------------------------------------------------------------------- 1 | # LeetCode 56:区间合并 2 | 3 | ![leetcode56_1](../Assets/Algo/leetcode56_1.jpg) 4 | ![leetcode56_2](../Assets/Algo/leetcode56_2.jpg) 5 | 6 | ```C++ 7 | vector> merge(vector>& intervals) { 8 | sort(intervals.begin(), intervals.end()); 9 | int st = -2e9, ed = -2e9; 10 | vector> res; 11 | for (auto inter : intervals) { 12 | if (inter[0] > ed) { // 不在区间内 13 | // 不是第一次就加进res 14 | if (st != -2e9) res.push_back({st, ed}); 15 | // 更新st和ed 16 | st = inter[0], ed = inter[1]; 17 | } else { // 在区间内 18 | // 更新ed 19 | ed = max(ed, inter[1]); 20 | } 21 | } 22 | if (st != -2e9) res.push_back({st, ed}); 23 | return res; 24 | } 25 | -------------------------------------------------------------------------------- /算法和数据结构/栈.md: -------------------------------------------------------------------------------- 1 | # 栈 2 | ![stack1](../Assets/Algo/stack1.JPG) 3 | ![stack2](../Assets/Algo/stack2.JPG) 4 | ![stack3](../Assets/Algo/stack3.JPG) 5 | ![stack4](../Assets/Algo/stack4.JPG) 6 | -------------------------------------------------------------------------------- /算法和数据结构/算法和数据结构.md: -------------------------------------------------------------------------------- 1 | # 算法和数据结构 2 | 3 | ## 算法 4 | 1. [KMP算法](https://www.bilibili.com/video/BV1964y1H7Ly?vd_source=f60330185adabf166359748da895c646) 5 | 6 | ## 数据结构 7 | 1. [二叉树遍历](http://xhslink.com/NBpWQz) 8 | 2. [根据前中/中后序画二叉树](./draw_tree.md) 9 | 3. [栈](./栈.md) 10 | 4. [队列](./队列.md) 11 | 12 | ## LeetCode 13 | ### 滑动窗口 14 | - [LeetCode 3: 无重复最长字符](./leetcode3.md) 15 | 16 | ### 贪心 17 | - [LeetCode 55:跳跃游戏](./leetcode55.md) 18 | - [LeetCode 56:区间合并](./leetcode56.md) 19 | 20 | ### 位运算 21 | - [LeetCode 371: 两整数之和](./leetcode371.md) -------------------------------------------------------------------------------- /算法和数据结构/队列.md: -------------------------------------------------------------------------------- 1 | # 队列 2 | 3 | ![queue1](../Assets/Algo/queue1.JPG) 4 | ![queue2](../Assets/Algo/queue2.JPG) 5 | ![queue3](../Assets/Algo/queue3.JPG) 6 | ![queue4](../Assets/Algo/queue4.JPG) 7 | ![queue5](../Assets/Algo/queue5.JPG) 8 | -------------------------------------------------------------------------------- /经验分享/Debug.md: -------------------------------------------------------------------------------- 1 | # 计算机新手Debug技巧 2 | 3 | ![debug1](../Assets/Exp/debug1.JPG) 4 | ![debug2](../Assets/Exp/debug2.JPG) 5 | ![debug3](../Assets/Exp/debug3.JPG) 6 | ![debug4](../Assets/Exp/debug4.JPG) 7 | ![debug5](../Assets/Exp/debug5.JPG) 8 | ![debug6](../Assets/Exp/debug6.JPG) 9 | ![debug7](../Assets/Exp/debug7.JPG) 10 | ![debug8](../Assets/Exp/debug8.JPG) 11 | 12 | -------------------------------------------------------------------------------- /经验分享/GitHub.md: -------------------------------------------------------------------------------- 1 | # 三分钟弄好GitHub个人主页 2 | ![github1](../Assets/Exp/github1.JPG) 3 | ![github2](../Assets/Exp/github2.JPG) 4 | ![github3](../Assets/Exp/github3.JPG) 5 | ![github4](../Assets/Exp/github4.JPG) 6 | ![github5](../Assets/Exp/github5.JPG) 7 | ![github6](../Assets/Exp/github6.JPG) 8 | 9 | 10 | -------------------------------------------------------------------------------- /经验分享/小程序.md: -------------------------------------------------------------------------------- 1 | # 三天快速入门小程序 2 | ![xcx_1](../Assets/Exp/xcx_1.jpg) 3 | ![xcx_2](../Assets/Exp/xcx_2.jpg) 4 | ![xcx_3](../Assets/Exp/xcx_3.jpg) 5 | ![xcx_4](../Assets/Exp/xcx_4.jpg) 6 | 7 | 小程序的GitHub Repo:https://github.com/chiewhui1113/XZS-WX 8 | -------------------------------------------------------------------------------- /经验分享/方向.md: -------------------------------------------------------------------------------- 1 | # 计算机新手怎么在大一就确定好方向 2 | 3 | ![year1_1](../Assets/Exp/year1_1.JPG) 4 | ![year1_2](../Assets/Exp/year1_2.JPG) 5 | ![year1_3](../Assets/Exp/year1_3.JPG) 6 | ![year1_4](../Assets/Exp/year1_4.JPG) 7 | ![year1_5](../Assets/Exp/year1_5.JPG) 8 | -------------------------------------------------------------------------------- /经验分享/算法入门.md: -------------------------------------------------------------------------------- 1 | # 零基础入门算法刷LeetCode 2 | 3 | ![algo1](../Assets/Exp/algo1.JPG) 4 | ![algo2](../Assets/Exp/algo2.JPG) 5 | ![algo3](../Assets/Exp/algo3.JPG) 6 | ![algo4](../Assets/Exp/algo4.JPG) 7 | ![algo5](../Assets/Exp/algo5.JPG) 8 | ![algo6](../Assets/Exp/algo6.JPG) 9 | -------------------------------------------------------------------------------- /经验分享/经验分享.md: -------------------------------------------------------------------------------- 1 | # 经验分享 2 | 3 | 1. [计算机新手怎么在大一就确定好方向](./方向.md) 4 | 2. [零基础入门算法刷LeetCode](./算法入门.md) 5 | 3. [计算机新手Debug技巧](./Debug.md) 6 | 4. [三分钟弄好GitHub个人主页](./GitHub.md) 7 | 5. [三天快速入门小程序](./小程序.md) -------------------------------------------------------------------------------- /计算机组成原理/cisc_risc.md: -------------------------------------------------------------------------------- 1 | # CISC和RISC的区别 2 | 3 | ![CISC](../Assets/CO/cisc_risc.JPG) 4 | 5 | ## 评论区指正 6 | 诺丁山下的大渣猫:指令数目和寄存器数量是没有具体界定的,这事情我问过 Patterson。CISC可以有固定字长,比如PDP-8架构。访存指令和RISC CISC无关,比如m2m型RISC不利用load store 访存。控制方式归根结底都是时序逻辑电路,而且CISC不一定要使用微指令。现代处理器设局周期和指令集关系也不大了,真正瓶颈包括eda软件等等。应用方面,电脑上用RISC的也越来越多了,比如华为泰山芯片,苹果m系列芯片。 -------------------------------------------------------------------------------- /计算机组成原理/sramdram.md: -------------------------------------------------------------------------------- 1 | # SRAM和DRAM的区别 2 | 3 | [![SRAM](../Assets/Network/sram_dram.png)](https://www.bilibili.com/video/BV1Ck4y1D7ut?vd_source=f60330185adabf166359748da895c646) 4 | 5 | ## 存储信息 6 | SRAM用双稳定触发器,DRAM用棚级电容 7 | 8 | ## 破坏性读出 9 | SRAM没有,DRAM有 10 | 11 | ## 需要刷新 12 | SRAM不需要,DRAM需要 13 | 14 | ## 行列地址 15 | SRAM同时送,DRAM分两次 16 | 17 | ## 运行速度 18 | SRAM快,DRAM慢 19 | 20 | ## 集成度 21 | SRAM低,DRAM高 22 | 23 | ## 发热量 24 | SRAM大,DRAM小 25 | 26 | ## 存储成本 27 | SRAM高,DRAM低 28 | 29 | ## 用途 30 | SRAM是Cache,DRAM是主存储器 31 | 32 | ## 怎么秒记 33 | 把DRAM的D想成电容。服务员比较少的大规模餐馆,服务比较慢(集成度高+成本低+运行速度慢)。服务员可以穿背心所以凉快(发热量小)。菜单每次看完就没了要重新打印(破坏性读出+需要刷新)。然后SRAM和DRAM都是相反的,就记住了。行列地址的话我想不出来,背吧🤣 -------------------------------------------------------------------------------- /计算机组成原理/发展.md: -------------------------------------------------------------------------------- 1 | # 计算机发展阶段和硬件基本组成 2 | 3 | ![dev](../Assets/CO/dev.JPG) 4 | 5 | ## 计算机发展历程 6 | 1. 第一代(1946-1957):电子管时代 7 | ENIAC是第一台计算机,1946年推出。非常大,而且耗电 8 | 9 | 2. 第二代(1958-1964):晶体管时代 10 | 开始用磁带、磁鼓,计算机也变得更小、更快、耗电低 11 | 12 | 3. 第三代(1965-1971):中小规模集成电路 13 | 引入了分时操作系统、高级语言迅速发展 14 | 15 | 4. 第四代(1972-现在):超大规模集成电路 16 | 出现微处理器、微型计算机 17 | 18 | ## 计算机硬件基本组成 19 | 五大部分 20 | 1. 输入设备:将信息转成二进制 21 | 2. 输出设备:将二进制转成信息 22 | 3. 运算器:进行算术/逻辑运算 23 | 4. 控制器:指挥各部件使程序运行 24 | 5. 主存储器:存放数据和程序 25 | 26 | 冯诺依曼结构 27 | - 运算器为中心 28 | - 存储程序:把要执行的指令先存在主存储器 29 | 30 | 现代计算机结构 31 | - 以存储器为中心 32 | - CPU = 运算器 + 控制器 33 | -------------------------------------------------------------------------------- /计算机组成原理/映射.md: -------------------------------------------------------------------------------- 1 | # Cache和主存的三种映射方式 2 | 3 | ![map1](../Assets/CO/map1.JPG) 4 | ![map2](../Assets/CO/map2.JPG) 5 | 6 | 因为内存(主存)和CPU相比很慢,所以会复制一份频繁使用的代码到Cache。 7 | Cache是用SRAM实现的,比DRAM的内存快几十倍上百倍,所以解决了这个问题。但是成本高,所以容量很小 8 | 9 | ## Cache和主存三种映射方式 10 | 1. 全相联映射:可以放到Cache中的任意位置,随便放,很好地利用了Cache的空间,但是查找要一个一个查很慢 11 | 12 | 2. 直接映射:放到Cache中的特定行(主存块号%总行数)。好像例子里,主存块号是车牌号,总行数是四个停车位。 13 | 计算机里的话,总行数是总Cache行。这个查找很快,但是不能很好利用空间。好像要是车牌号一直是A4,B4,C8,只会用到第一个停车位 14 | 15 | 3. 组相联映射:Cache会分组,图里每一组有两个位,所以叫2路。主存块分类的位置就是“主存块号%总组数”, 16 | 好像例子里分成了两组,奇数%2一定是1,偶数%2一定是0。这个综合了上面的两个映射 17 | 18 | ## 注 19 | 1. Cache中需要有效位(0/1),因为Cache的默认标记都是0,不过不一定代表标记0都映射到主存块号0。所以有效位可以让我们知道当前标记有没有效 20 | 2. 我把名字当成块内地址,车(数据块)里有多个人(多个地址) 21 | -------------------------------------------------------------------------------- /计算机组成原理/替换.md: -------------------------------------------------------------------------------- 1 | # Cache替换算法 2 | 3 | ![replace](../Assets/CO/replace.JPG) 4 | 5 | 当Cache满了但需要加载新主存块的时候,就需要替换算法。替换算法只应用在全相联和组相联映射,因为直接映射可以直接替换 6 | 7 | 1. 随机算法(RAND) 8 | 随机选一个主存块替换 9 | 10 | 2. 先进先出算法(FIFO) 11 | 最先进入Cache的主存块就先被替换,FIFO也是队列的思想 12 | 13 | 3. 近期最少使用(LRU) 14 | 替换最久没被访问过的主存块。用计数器记录,访问/替换了就把当前主存块的计数值清零,其他比它小的计数器的值+1 15 | 16 | 4. 最不经常使用(LFU) 17 | 替换访问次数最少的主存块,计数器来记录被访问了多少次 18 | -------------------------------------------------------------------------------- /计算机组成原理/计算机组成原理.md: -------------------------------------------------------------------------------- 1 | # 计算机组成原理 2 | 3 | ## 基础 4 | 1. [计算机发展阶段和硬件基本组成](./发展.md) 5 | 6 | ## Cache 7 | 1. [Cache和主存的三种映射方式](./映射.md) 8 | 2. [Cache替换算法](./替换.md) 9 | 10 | ## 存储器 11 | 1. [SRAM和DRAM的区别](./sramdram.md) 12 | 13 | ## 指令 14 | 1. [CISC和RISC的区别](./cisc_risc.md) -------------------------------------------------------------------------------- /计算机网络/TCP_UDP.md: -------------------------------------------------------------------------------- 1 | # TCP和UDP的区别 2 | 3 | ![tcp_udp](../Assets/Network/tcp_udp.jpg) 4 | 5 | ## 连接性 6 | **TCP面向连接,UDP无连接**
7 | TCP传输前需要先握手建立连接,好像打电话要等别人先接电话
8 | UDP不管接收方有没有准备好都直接发,所以无连接 9 | 10 | ## 可靠性 11 | **TCP 可靠,UDP不可靠**
12 | TCP有确认重传机制确保数据正确传输,所以很可靠
13 | UDP不管,有可能丟包/出錯/重复,所以不可靠 14 | 15 | ## 速度 16 | **TCP慢,UDP快**
17 | TCP需要建立连接,检查有没有出错,调整等,一堆事做所以慢
18 | UDP不管直接发送所以快 19 | 20 | ## 数据包顺序 21 | **TCP有序,UDP可能无序**
22 | TCP会保证数据包的顺序和完整性
23 | UDP有可能中途丟包或者顺序不对 24 | 25 | ## 拥塞控制 26 | **TCP会控制,UDP不会**
27 | TCP会根据网络情况调整传输速率,减少网络拥塞
28 | UDP不管,拥塞也发,所以可能导致网络更拥塞 29 | 30 | ## 怎么秒背 31 | TCP像严谨可靠的尺姐,UDP像什么都不管的闪电侠 32 | 33 | ## 应用场景 34 | TCP用在需要可靠数据传输的场景,像网页、邮件、文件传输,因为我们不想要丢失任何数据
35 | UDP用在实时的场景,像直播、视频通话、游戏,点数据丟了无碍,不过不要延迟 36 | 37 | ## 其他 38 | 1. momo:"...越来越多的高层协议嫌弃tcp开支过大,转用udp了。他们在udp之上自己解决可靠连接" (QUIC) 39 | 2. 还有很6的表情包在小红书评论区 40 | -------------------------------------------------------------------------------- /计算机网络/arp.md: -------------------------------------------------------------------------------- 1 | # ARP协议 2 | 3 | ![arp](../Assets/Network/arp.jpg) 4 | 5 | 设备A要给设备B发数据的时候需要先知道它的MAC地址,通常都只有IP,所以要用ARP找MAC 6 | 7 | 1. A会先检查自己的ARP高速缓存,看有没有B的MAC地址。如果有,直接给这个地址发数据。 8 | 如果没有,A会在本地网络广播ARP请求,这个请求有源IP(A的IP)、目的IP(B的IP)、源MAC (A的 9 | MAC)和全F的目的MAC(广播) 10 | 2. 如果B在同一个局域网,它会发现ARP请求中的目的IP和自己的IP一样,然后回复一个ARP响应(自己的IP和MAC) 11 | 3. 如果B不在同一个局域网,A会用ARP找到路由器(网关)的MAC,然后将数据包发送给它。不过数据包的目标IP地址还是B的IP 12 | 4. 如果B在路由器连接的网络里,路由器会广播发ARP请求找到B的MAC,然后给B发送数据包(注意源IP还是A的不是路由器)。 13 | 如果B不在,路由器会把数据包转发给下一个路由器 14 | 5. 设备和路由器会把新知道的MAC 地址加到自己的ARP缓存,不过过段时间会清理 15 | 16 | ps. 路由器中一般有至少两个MAC,一个给局域网一个给广域网。局域网的接口是一个私有IP,广域网的接口是一个公共IP。好像我们对朋友和对外人有不一样的"名字"和wx号 17 | -------------------------------------------------------------------------------- /计算机网络/cookie_session.md: -------------------------------------------------------------------------------- 1 | # Cookie和Session的区别 2 | 3 | ![cookie_session](../Assets/Network/cookie_session.JPG) 4 | 5 | ## Cookie 6 | 存储在用户浏览器的一小块数据。第一次访问服务器的时候,服务器会给你发送cookie。Cookie会存储 7 | sessionID和偏好这些 8 | 9 | ## Session 10 | 用于存储用户的会话信息,好像用户身份信息,状态和安全性相关的数据 11 | 12 | ## 过程 13 | 我们输入用户名和密码登入网站的时候,服务器会验证这些信息。假如验证成功就创建一个新的会话(session),然后把sessionID存储在cookie中。 14 | sessionID是为了区别不同的session,好像我们现在登入的状态就是一个session。 15 | 浏览网站其他界面的时候浏览器会自动发送cookie,假如cookie中的 16 | sessionID没过期就不用重新登入,过期了就需要重新输入用户名和密码。不过就算cookie中的 17 | sessionID过期了,它还是记住用户的偏好设置的,好像界面语言等 18 | 19 | ## 区别 20 | 1. 存储位置 21 | cookie 存储在客户端(用户的浏览器),Session存 22 | 储在服务器端,只有服务器可以访问 23 | 2. 存储方式 24 | cookie只能存储 ASCll 字符串,Session什么数据类 25 | 型都可以存储 26 | 3. 安全性 27 | cookie 因为存储在客户端相对不太安全,Session因为存储在服务器上相对更安全 28 | 4. 生命周期 29 | cookie可以设置为长期有效,Session通常在用户关闭浏览器或者一定时间不活跃后就失效了 30 | 5. 存储大小 31 | Cookie 的存储容量只有 4KB,所以一般存储少量数据。Session存储容量较大,可以存储更多的用户信息 32 | -------------------------------------------------------------------------------- /计算机网络/csmacd.md: -------------------------------------------------------------------------------- 1 | # CSMA/CD协议 2 | 3 | ![csma1](../Assets/Network/csma1.JPG) 4 | ![csma2](../Assets/Network/csma2.jpg) 5 | 6 | ## 单词 7 | 1. CS (Carrier Sense)载波监听
8 | 发送数据之前和发送数据时,都需要检测总线上有没有其他计算机在发送数据 9 | 2. MA(Multiple Access)多点接入
10 | 多台计算机连在一根总线上 11 | 3. CD (Collusion Detection) 碰撞检测
12 | 边传边听,检测有没有碰撞,碰撞就停止发送数据,随机时间后重发 13 | 14 | ## 传播时延T 15 | 信号从A点传播到B点所需的时间 16 | 17 | ## 最迟等多久 18 | (0, 2T)
19 | 因为 A的数据信号有可能在很接近B点的时候B发数据了,这也会碰撞。2T也叫争用期/碰撞窗口 20 | 21 | ## 碰撞后停发+重传 22 | 一检测到碰撞就停发。然后用二进制指数退避算法決定等多久后重传 23 | 1. 争用期为2T 24 | 2. 重传次数k = min(重传次数,10) 25 | 3. 从[0, 2^k -1]中随机选个数 26 | 4. 退避时间为2r T 27 | 假如重传16次后还不成功,就停止重传向上报错 28 | 29 | ## 最小帧长 30 | 要是帧太短,A很快地把数据发完,但是因为传播速率可能在中途碰撞。 31 | 不过A都发完了不会继续检测和重传,所以要确定最小帧长
32 | 公式:2T * 数据传输速率
33 | 注:以太网最小帧长为 64字节/512比特 34 | -------------------------------------------------------------------------------- /计算机网络/dns.md: -------------------------------------------------------------------------------- 1 | # DNS解析过程 2 | 3 | [![DNS](../Assets/Network/dns.png)](https://www.bilibili.com/video/BV1KK4y1i7gD?vd_source=f60330185adabf166359748da895c646) 4 | 5 | DNS的基本工作就是把域名转IP。DNS和ARP一样有一个缓存,记录之前查过的域名。假如已经保存,就可以直接返回IP给客户端,没有的话就需要通过递归/迭代查询。以下例子是迭代查询: 6 | 7 | 1. 客户端给最近的DNS服务器发送查询请求 8 | 2. 最近的DNS服务器没有www.666.com的缓存记录,所以向根域DNS服务器发送查询 9 | 3. 根域也没有www.666.com的记录,但是识别了com域,会返回com域的DNS服务器的IP地址 10 | 4. 最近的DNS服务器给com域的DNS服务器发送查询,com域也没有www.666.com,但是识别了666.com,会返回666.com域的DNS服务器的IP地址 11 | 5. 最近的DNS服务器给666.com域的DNS服务器发送查询,得到了www.666.com的IP,然后返回给客户端 12 | 13 | DNS中的域名都用“.”来分隔,越后面阶级越高: 14 | 15 | ## 根域(.) 16 | 其实我们的域名最后都有一个句点(www.666.com.),但是没人写,根域保管的是顶级域的DNS服务器信息 17 | 18 | ## 顶级域TLDs(com、cn、org) 19 | 分为国家顶级域名(ccTLDs)和通用顶级域名(gTLDs)。cn就属于前者,com和org属于后者 20 | 21 | ## 二级域名(666.com、xx.com) 22 | 通常由个人、组织、企业注册 -------------------------------------------------------------------------------- /计算机网络/get_post.md: -------------------------------------------------------------------------------- 1 | # GET和POST的区别 2 | 3 | ![get_post](../Assets/Network/get_post.jpg) 4 | 5 | GET和POST是HTTP协议中的两种发送请求方式。GET是从指定的资源请求数据,POST则是向指定的资源提交数据 6 | 7 | GET把参数放在URL中,POST把参数放在request body 8 | 9 | 根据这点我们可以推出: 10 | 11 | ## 安全性 12 | POST比GET相对更安全,因为GET直接把参数暴露在URL中。(但是其实他们两个都不安全,因为HTTP是明文传输,HTTPS才是最安全的) 13 | 14 | ## 参数长度 15 | URL是有限制的长度的,因为GET把参数放在URL中,所以长度也有限制。POST放在request body,不受限制 16 | 17 | ## 数据包 18 | GET只会产生一个数据包,POST两个。因为对于GET浏览器会把header和data一起发送,然后等服务器响应200。POST会先发生header,等浏览器响应100(continue),才会再发送data,然后等服务器响应200 19 | 20 | 注:但是有些浏览器,像Firefox的POST只发送一次包 21 | 22 | ## 参数数据类型 23 | URL只允许ASCII字符,所以GET也是,POST没有限制 24 | 25 | ## 回退 26 | GET回退是无害的,POST会再次发送请求。所以我们有时候填表回退的时候会出现要不要重新提交 27 | -------------------------------------------------------------------------------- /计算机网络/http_https.md: -------------------------------------------------------------------------------- 1 | # HTTP和HTTPS的区别 2 | 3 | [![http_https](../Assets/Network/http_https.png)](https://www.bilibili.com/video/BV1Pg4y1S7cx?vd_source=f60330185adabf166359748da895c646) 4 | 5 | HTTP(超文本传输协议)是浏览器和服务器沟通的一种方法。不过由于HTTP不提供数据加密,黑客可以很容易读取/篡改这些信息。为了解决这个安全问题,引入了HTTPS(超文本传输安全协议),多出的S是secure安全的意思。HTTPS在HTTP的基础上加上了SSL/TLS加密层。在有涉及到支付网站都会使用HTTPS,以避免任何信息被盗。 6 |
7 | 以下是HTTP和HTTPS的主要区别: 8 | 9 | ## 加密层 10 | HTTP没有加密层,HTTPS用SSL/TLS加密 11 | 12 | ## 速度 13 | HTTP响应速度快,HTTPS比较慢 14 | 因为HTTP省略掉了加密的过程 15 | 16 | ## 安全性 17 | HTTP不安全,HTTPS安全 18 | 19 | ## 端口 20 | HTTP是端口80,HTTPS是端口443 21 | 22 | ## 证书 23 | HTTP不需要证书,HTTPS需要SSL/TLS证书 24 | 25 | ## 搜索引擎优化SEO 26 | HTTP排名比较低,HTTPS排名比较高
27 | Google的SEO会倾向于HTTPS的网站,因为更安全 -------------------------------------------------------------------------------- /计算机网络/time_wait.md: -------------------------------------------------------------------------------- 1 | # 为什么是三次握手?什么是time_wait? 2 | 3 | ![time_wait](../Assets/Network/time_wait.jpg) 4 | 5 | ## 为什么不是两次? 6 | 如果只有前两次握手,B无法确认A是否收到了它发出的SYN-ACK。B可能会认为连接已经建立且开始等待A的数据。 7 | 如果B的SYN-ACK丢了,A可能会重新发送SYN/放弃连接。这种情况会导致资源浪费和混乱,所以需要三次握手。 8 | 9 | ## 为什么不是四次? 10 | 三次都够了四次来干嘛 11 | 12 | ## 为什么是四次挥手不是三次? 13 | 因为TCP是全双工,代表A和B两边都能独立传输。A发给B“FIN“的时候代表A发完了,但是不代表B发完了。 14 | B发一个ACK给A是为了表示自己知道A结束了。要是B不发ACK,A就会以为B没看到一直发FIN。 15 | 等B传完数据B才会再发FIN,所以需要四个。 16 | 17 | ## 什么是time wait? 18 | 先发送FIN的A最后一个ACK可能会丢失。B没收到A的ACK 就会重发FIN。要是A刚刚没进入 19 | time_wait 直接刪除套接字和保存的端口号,原先A的端口号可能被分配给了另一个程序C。 20 | 这时候B的FIN就会误发给C,C也会执行断开操作,结果就是() 21 | -------------------------------------------------------------------------------- /计算机网络/websocket.md: -------------------------------------------------------------------------------- 1 | # 什么是WebSocket 2 | 3 | ![WebSocket](../Assets/Network/websocket.jpg) 4 | 5 |
6 | WebSocket是HTML5定义的一种协议,可以让客户端和服务器建立全双工通信。它建立了可持久化的TCP连接,这个连接会保持开放直到客户端/服务器决定关闭它 7 |

8 | HTTP有1.0和1.1版本,HTTP 1.0默认TCP连接只处理一个请求和响应,然后结束。HTTP 1.1新增了Connection: keep-alive,让TCP连接可以发送多个请求和接受多个响应。 9 |

10 | 在websocket之前,为了实现实时通信通常会使用轮询和长轮询,这两种技术在HTTP 1.0和1.1都适用。轮询就是让客户端定期主动发送HTTP请求来获取最新信息,长轮询可以把GET请求保持一段时间,但是超时后客户端还是要重发请求。所以这两个技术都会造成资源浪费和延迟 11 |

12 | 实现WebSocket可以解决这一点。客户端会先给服务器发送一个HTTP请求开始一个WebSocket握手,请求里包含Upgrade:websocket。要是服务器同意的话就会返回一个101 响应,这下双方都可以在这个连接上自由地进行数据传输 13 | -------------------------------------------------------------------------------- /计算机网络/三次握手.md: -------------------------------------------------------------------------------- 1 | # 什么是三次握手四次挥手 2 | 3 | ![three_way](../Assets/Network/three_way.JPG) 4 | 5 | ## 三次握手: 6 | 1. 在吗 (SYN):A向B发送建立连接的请求 7 | 2. ?(SYN+ACK):B确认收到了A的请求,并向A发送同意建立连接的信号 8 | 3. 跟你说件事 (ACK):A收到B的确认后,再次发送确认信息,此时已经建立连接可以开始数据传输 9 | 10 | ## 四次挥手: 11 | 1. 不聊了(FIN):A告诉B它要关闭连接 12 | 2. 好吧 (ACK):B收到A的结束连接请求,发送确认 13 | 3. 拜拜 (FIN):B告诉A它也要关闭连接 14 | 4. 拜拜 (ACK):A收到B的结束请求后,发送确认,断开连接 15 | 16 | 在三次握手和四次挥手的时候,发送方为了确保不丢包会有一个计时器。如果在预定时间内未收到对方的 17 | ACK,就会假设丢包了且重新发送。好像我们发"在吗〞,如果对方很久都不回复,可能会假设对方没看见,再发一次"在吗" 18 | 19 | ## 单词 20 | ACK: Acknowledgment,确认收到
21 | SYN: Synchronize,开始连接
22 | FIN: Finish,结束连接
23 | -------------------------------------------------------------------------------- /计算机网络/滑动窗口.md: -------------------------------------------------------------------------------- 1 | # TCP滑动窗口 2 | 3 | ![sliding_window](../Assets/Network/sliding_window.jpg) 4 | 5 | 在TCP中,由于发一次数据等待一次ACK效率太低,就引入了滑动窗口这个概念。发送方和接收方各有滑动窗口: 6 | 7 | ## 发送方 8 | 1. 已发送并收到ACK
9 | 这部分数据已经发送并被接收方确认,好像已经点了咖啡并收到了咖啡 10 | 11 | 2. 己发送未收到ACK
12 | 这部分数据已经发送但是还没被接收方确认,好像已经点了咖啡但是咖啡还没做好 13 | 14 | 3. 末发送但在接收方处理范围内
15 | 这部分数据准备发送,并且在接收方处理范围内,好像在店里的排队区等待 16 | 17 | 4. 末发送但超出接收方处理范围内
18 | 这部分数据准备发送,但是超出了接收方处理范围,好像在店外的排队区等待 19 | 20 | ## 接收方 21 | 1. 己接受并确认的数据
22 | 这些数据已经被接收并处理,好像已经处理好的咖啡订单 23 | 24 | 2. 未收到但可以接收的数据
25 | 这些数据准备接收但还末收到,好像店里的排队区 26 | 27 | 3. 未收到但不可以接收的数据
28 | 这些数据因为滑动窗口大小限制无法被接收,好像店外的排队区,店里不够位了 29 |
30 | TCP的窗口大小是由接收方决定的,要是发送方一下发太多接收方会觉得难以承受,无法正常接收数据。 31 | 等接收方给发送方发送了ACK,滑动窗口就可以向右移发送更多数据。就好像咖啡店里处理完了现在的订单,可以处理之后的其他订单一样 32 | -------------------------------------------------------------------------------- /计算机网络/网络五层.md: -------------------------------------------------------------------------------- 1 | # 网络五层模型 2 | 3 | ![five_layer1](../Assets/Network/five_layer1.JPG) 4 | ![five_layer2](../Assets/Network/five_layer2.jpg) 5 | 6 | ## 发送方:应用层 (HTTP/HTTPS, DNS, SMTP, FTP) 7 | 阿刀用HTTP协议向小姐的服务器发送一个请求 8 | 9 | ## 发送方:传输层 (TCP, UDP) 10 | HTTP请求被TCP处理,它会把请求分成几个小的数据包,并指定端口号(HTTP的是80) 11 | 12 | ## 发送方:网络层(IP) 13 | IP接管,为每个数据包标记源和目的地的IP地址,井确定到B市的最好路径 (OSPF, RIP) 14 | 15 | ## 发送方:数据链路层(以太网,Wi-Fi) 16 | 每个数据包被封装成帧,附加了MAC地址,确保数据正确地在网络设备之间传输 17 | 18 | ## 发送方:物理层 (光纤,电线) 19 | 以电信号的形式发送 20 | 21 | ## 接收方:物理层 22 | 以电信号的形式接收数据 23 | 24 | ## 接收方:数据链路层 25 | 检查MAC地址,确认数据到达正确的接收方 26 | 27 | ## 接收方:网络层 28 | 检查目标IP地址,确保数据包发送到正确的系统 29 | 30 | ## 接收方:传输层 31 | TCP重组数据包,检查数据的顺序正不正确,完不完整 32 | 33 | ## 接收方:应用层 34 | 小姐的服务器接收到 HTTP 请求,处理并回复 35 | -------------------------------------------------------------------------------- /计算机网络/计算机网络.md: -------------------------------------------------------------------------------- 1 | # 计算机网络 2 | 3 | ## TCP 4 | 1. [什么是三次握手四次挥手](./三次握手.md) 5 | 2. [为什么是三次握手?什么是time_wait?](./time_wait.md) 6 | 3. [TCP和UDP的区别](./TCP_UDP.md) 7 | 4. [网络五层模型](./网络五层.md) 8 | 5. [TCP滑动窗口](./滑动窗口.md) 9 | 10 | ## HTTP 11 | 1. [HTTP和HTTPS的区别](./http_https.md) 12 | 2. [GET和POST的区别](./get_post.md) 13 | 14 | ## 应用层 15 | 1. [Cookie和Session的区别](./cookie_session.md) 16 | 2. [DNS解析过程](./dns.md) 17 | 3. [什么是WebSocket](./websocket.md) 18 | 19 | ## 网络层 20 | 1. [ARP协议](./arp.md) 21 | 22 | ## 数据链路层 23 | 1. [CSMA/CD协议](./csmacd.md) 24 | 25 | ## 加密 26 | 1. [非对称加密](./非对称加密.md) 27 | -------------------------------------------------------------------------------- /计算机网络/非对称加密.md: -------------------------------------------------------------------------------- 1 | # 非对称加密 2 | 3 | ![asymm](../Assets/Network/asymm.jpg) 4 | 5 | 在对称加密中加密和解密都用的同一个密钥。既然双方都要有这个密钥,密钥传输可能会被截获不安全,所以有了非对称加密 6 | 7 | ## 非对称加密是什么 8 | 每一端都有两个密钥,一个公钥和一个私钥。公钥是公开的,用来加密。私钥只有自己有,用来解密。 9 | 别人用我们的公钥加密的密文只有自己的私钥可以解开。所以就算中间被截获了,攻击者也解不开 10 | 11 | 这对应着图里的,自己的孩子的血只能和自己的融,外人的血融不了。所以那个宝箱也打不开 12 | --------------------------------------------------------------------------------