├── .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 | [](https://www.youtube.com/watch?v=EVUe44rCm3c&list=PLiVa9GQCsXJ1b4y9j9dKxNh-J-wSE82QT)
29 | 4. LeetCode讲解(英)
30 | [](https://www.youtube.com/watch?v=o2zTVv6uV3A&list=PLiVa9GQCsXJ2h9HprbKQ1CKA6btqIXICG)
31 |
32 |
33 | ## 其他
34 | 笔记:MAT1830、FIT1047、FIT1008
35 | 辅导:私
36 |
--------------------------------------------------------------------------------
/操作系统/中断和异常.md:
--------------------------------------------------------------------------------
1 | # 中断和异常
2 | 
3 | 
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 | [](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 | 
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 | 
3 | 
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 | 
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 | 
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 | 
3 | 
4 | 
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 | 
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 | 
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 | 
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 | 
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 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 | 
11 | 
12 | 
13 | 
14 |
--------------------------------------------------------------------------------
/算法和数据结构/draw_tree.md:
--------------------------------------------------------------------------------
1 | # 根据前中/中后序画二叉树
2 |
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 |
--------------------------------------------------------------------------------
/算法和数据结构/leetcode3.md:
--------------------------------------------------------------------------------
1 | # LeetCode 3: 无重复最长字符
2 | 
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 | 
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 | 
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 | 
4 | 
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 | 
3 | 
4 | 
5 | 
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 | 
4 | 
5 | 
6 | 
7 | 
8 |
--------------------------------------------------------------------------------
/经验分享/Debug.md:
--------------------------------------------------------------------------------
1 | # 计算机新手Debug技巧
2 |
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 | 
10 | 
11 |
12 |
--------------------------------------------------------------------------------
/经验分享/GitHub.md:
--------------------------------------------------------------------------------
1 | # 三分钟弄好GitHub个人主页
2 | 
3 | 
4 | 
5 | 
6 | 
7 | 
8 |
9 |
10 |
--------------------------------------------------------------------------------
/经验分享/小程序.md:
--------------------------------------------------------------------------------
1 | # 三天快速入门小程序
2 | 
3 | 
4 | 
5 | 
6 |
7 | 小程序的GitHub Repo:https://github.com/chiewhui1113/XZS-WX
8 |
--------------------------------------------------------------------------------
/经验分享/方向.md:
--------------------------------------------------------------------------------
1 | # 计算机新手怎么在大一就确定好方向
2 |
3 | 
4 | 
5 | 
6 | 
7 | 
8 |
--------------------------------------------------------------------------------
/经验分享/算法入门.md:
--------------------------------------------------------------------------------
1 | # 零基础入门算法刷LeetCode
2 |
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
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 | 
4 |
5 | ## 评论区指正
6 | 诺丁山下的大渣猫:指令数目和寄存器数量是没有具体界定的,这事情我问过 Patterson。CISC可以有固定字长,比如PDP-8架构。访存指令和RISC CISC无关,比如m2m型RISC不利用load store 访存。控制方式归根结底都是时序逻辑电路,而且CISC不一定要使用微指令。现代处理器设局周期和指令集关系也不大了,真正瓶颈包括eda软件等等。应用方面,电脑上用RISC的也越来越多了,比如华为泰山芯片,苹果m系列芯片。
--------------------------------------------------------------------------------
/计算机组成原理/sramdram.md:
--------------------------------------------------------------------------------
1 | # SRAM和DRAM的区别
2 |
3 | [](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 | 
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 | 
4 | 
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 | 
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 | 
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 | 
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 | 
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 | 
4 | 
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 | [](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 | 
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 | [](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 | 
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 | 
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 | 
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 | 
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 | 
4 | 
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 | 
4 |
5 | 在对称加密中加密和解密都用的同一个密钥。既然双方都要有这个密钥,密钥传输可能会被截获不安全,所以有了非对称加密
6 |
7 | ## 非对称加密是什么
8 | 每一端都有两个密钥,一个公钥和一个私钥。公钥是公开的,用来加密。私钥只有自己有,用来解密。
9 | 别人用我们的公钥加密的密文只有自己的私钥可以解开。所以就算中间被截获了,攻击者也解不开
10 |
11 | 这对应着图里的,自己的孩子的血只能和自己的融,外人的血融不了。所以那个宝箱也打不开
12 |
--------------------------------------------------------------------------------