diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 2ef8dbe..eb39cb0 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,12 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Netty核心原理.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "Java NIO核心原理" + "title": "Netty核心原理" } } ] @@ -94,7 +94,7 @@ "state": { "type": "backlink", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Netty核心原理.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -104,7 +104,7 @@ "unlinkedCollapsed": true }, "icon": "links-coming-in", - "title": "Java NIO核心原理 的反向链接列表" + "title": "Netty核心原理 的反向链接列表" } }, { @@ -113,12 +113,12 @@ "state": { "type": "outgoing-link", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Netty核心原理.md", "linksCollapsed": false, "unlinkedCollapsed": true }, "icon": "links-going-out", - "title": "Java NIO核心原理 的出链列表" + "title": "Netty核心原理 的出链列表" } }, { @@ -156,13 +156,13 @@ "state": { "type": "outline", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Netty核心原理.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "Java NIO核心原理 的大纲" + "title": "Netty核心原理 的大纲" } }, { @@ -198,12 +198,15 @@ }, "active": "fcbc762a80282002", "lastOpenFiles": [ + "10-中间件/Buffer核心属性.excalidraw", + "10-中间件/Selector多路复用模型.excalidraw", + "10-中间件/Java NIO三大核心组件架构.excalidraw", + "10-中间件/Java NIO核心原理.md", "00-项目概述/项目概述.md", "questions/02-数据库/MyBatis核心原理.md", "Obsidian技能使用指南.md", "Obsidian可视化插件指南.md", "10-中间件/Netty实战场景.md", - "10-中间件/Java NIO核心原理.md", "10-中间件/Netty核心原理.md", "10-中间件", "16-LeetCode Hot 100/从前序与中序遍历序列构造二叉树.md", @@ -224,15 +227,12 @@ "16-LeetCode Hot 100/括号生成.md", "16-LeetCode Hot 100/删除链表的倒数第N个结点.md", "16-LeetCode Hot 100/电话号码的字母组合.md", - "16-LeetCode Hot 100/盛最多水的容器.md", "16-LeetCode Hot 100", "00-项目概述", "questions/15-简历面试", "questions/14-Web3与区块链", "12-面试技巧", "08-算法与数据结构", - "questions/13-Golang语言", - "questions/12-面试技巧", - "questions/11-运维" + "questions/13-Golang语言" ] } \ No newline at end of file diff --git a/10-中间件/Buffer核心属性.excalidraw b/10-中间件/Buffer核心属性.excalidraw new file mode 100644 index 0000000..e7d4e6b --- /dev/null +++ b/10-中间件/Buffer核心属性.excalidraw @@ -0,0 +1,588 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "title", + "type": "text", + "x": 350, + "y": 30, + "width": 500, + "height": 35, + "angle": 0, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 1, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Buffer 核心属性与操作方法", + "fontSize": 28, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Buffer 核心属性与操作方法", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "buffer-title", + "type": "text", + "x": 480, + "y": 100, + "width": 240, + "height": 30, + "angle": 0, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 2, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Buffer 内存布局", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Buffer 内存布局", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "processed-box", + "type": "rectangle", + "x": 150, + "y": 160, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 3, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "processed-label", + "type": "text", + "x": 200, + "y": 185, + "width": 100, + "height": 30, + "angle": 0, + "strokeColor": "#2b8a3e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 4, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "已处理数据", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "已处理数据", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "readwrite-box", + "type": "rectangle", + "x": 360, + "y": 160, + "width": 280, + "height": 80, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 5, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "readwrite-label", + "type": "text", + "x": 450, + "y": 185, + "width": 100, + "height": 30, + "angle": 0, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 6, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "可读/写数据", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "可读/写数据", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "inaccessible-box", + "type": "rectangle", + "x": 650, + "y": 160, + "width": 200, + "height": 80, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 7, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "inaccessible-label", + "type": "text", + "x": 690, + "y": 185, + "width": 120, + "height": 30, + "angle": 0, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 8, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "不可访问", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "不可访问", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "mark-label", + "type": "text", + "x": 150, + "y": 255, + "width": 70, + "height": 25, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 9, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "mark", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "mark", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "position-label", + "type": "text", + "x": 360, + "y": 255, + "width": 100, + "height": 25, + "angle": 0, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 10, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "position", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "position", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "limit-label", + "type": "text", + "x": 640, + "y": 255, + "width": 70, + "height": 25, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 11, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "limit", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "limit", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "capacity-label", + "type": "text", + "x": 850, + "y": 255, + "width": 100, + "height": 25, + "angle": 0, + "strokeColor": "#7c3aed", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 12, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "capacity", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "capacity", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "methods-box", + "type": "rectangle", + "x": 150, + "y": 320, + "width": 700, + "height": 200, + "angle": 0, + "strokeColor": "#5c7cfa", + "backgroundColor": "#d0ebff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 13, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "methods-title", + "type": "text", + "x": 410, + "y": 335, + "width": 180, + "height": 30, + "angle": 0, + "strokeColor": "#364fc7", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 14, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "核心操作方法", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "核心操作方法", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "method1", + "type": "text", + "x": 180, + "y": 385, + "width": 300, + "height": 50, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 15, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "mark「」\n标记当前 position 位置", + "fontSize": 18, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "middle", + "containerId": null, + "originalText": "mark「」\n标记当前 position 位置", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "method2", + "type": "text", + "x": 510, + "y": 385, + "width": 300, + "height": 50, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 16, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "reset「」\n恢复到 mark 位置", + "fontSize": 18, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "middle", + "containerId": null, + "originalText": "reset「」\n恢复到 mark 位置", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "method3", + "type": "text", + "x": 180, + "y": 450, + "width": 300, + "height": 50, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 17, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "clear「」\nposition=0, limit=capacity", + "fontSize": 18, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "middle", + "containerId": null, + "originalText": "clear「」\nposition=0, limit=capacity", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "method4", + "type": "text", + "x": 510, + "y": 450, + "width": 300, + "height": 50, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 18, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "flip「」\nlimit=position, position=0", + "fontSize": 18, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "middle", + "containerId": null, + "originalText": "flip「」\nlimit=position, position=0", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/10-中间件/Java NIO三大核心组件架构.excalidraw b/10-中间件/Java NIO三大核心组件架构.excalidraw new file mode 100644 index 0000000..c970dcd --- /dev/null +++ b/10-中间件/Java NIO三大核心组件架构.excalidraw @@ -0,0 +1,520 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "title", + "type": "text", + "x": 400, + "y": 30, + "width": 400, + "height": 35, + "angle": 0, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 1, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Java NIO 三大核心组件", + "fontSize": 28, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Java NIO 三大核心组件", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "channel-box", + "type": "rectangle", + "x": 150, + "y": 150, + "width": 220, + "height": 140, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 2, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "channel-title", + "type": "text", + "x": 215, + "y": 165, + "width": 90, + "height": 30, + "angle": 0, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 3, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Channel", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Channel", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "channel-desc", + "type": "text", + "x": 160, + "y": 210, + "width": 200, + "height": 65, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 4, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "数据通道\n双向数据流\n非阻塞I/O", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "数据通道\n双向数据流\n非阻塞I/O", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "buffer-box", + "type": "rectangle", + "x": 830, + "y": 150, + "width": 220, + "height": 140, + "angle": 0, + "strokeColor": "#2f9e44", + "backgroundColor": "#b2f2bb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 5, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "buffer-title", + "type": "text", + "x": 895, + "y": 165, + "width": 90, + "height": 30, + "angle": 0, + "strokeColor": "#2b8a3e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 6, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Buffer", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Buffer", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "buffer-desc", + "type": "text", + "x": 840, + "y": 210, + "width": 200, + "height": 65, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 7, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "数据容器\n数据存储\n读写切换", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "数据容器\n数据存储\n读写切换", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "selector-box", + "type": "rectangle", + "x": 490, + "y": 450, + "width": 220, + "height": 140, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "#ffd8a8", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 8, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "selector-title", + "type": "text", + "x": 545, + "y": 465, + "width": 110, + "height": 30, + "angle": 0, + "strokeColor": "#e67700", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 9, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Selector", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Selector", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "selector-desc", + "type": "text", + "x": 500, + "y": 510, + "width": 200, + "height": 65, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 10, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "多路复用器\n事件监听\n单线程管理多连接", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "多路复用器\n事件监听\n单线程管理多连接", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-channel-buffer", + "type": "arrow", + "x": 370, + "y": 220, + "width": 450, + "height": 0, + "angle": 0, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 2}, + "seed": 11, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "points": [[0, 0], [450, 0]], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-read-write", + "type": "text", + "x": 545, + "y": 195, + "width": 100, + "height": 20, + "angle": 0, + "strokeColor": "#3b82f6", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 12, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "数据读写", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "数据读写", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-channel-selector", + "type": "arrow", + "x": 260, + "y": 290, + "width": 260, + "height": 150, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "dashed", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 2}, + "seed": 13, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "points": [[0, 0], [260, 150]], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-register", + "type": "text", + "x": 345, + "y": 350, + "width": 100, + "height": 20, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 14, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "注册事件", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "注册事件", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-selector-channel", + "type": "arrow", + "x": 710, + "y": 450, + "width": 250, + "height": 130, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 2}, + "seed": 15, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "points": [[0, 0], [-250, -130]], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-dispatch", + "type": "text", + "x": 545, + "y": 390, + "width": 100, + "height": 20, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 16, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "事件分发", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "事件分发", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/10-中间件/Selector多路复用模型.excalidraw b/10-中间件/Selector多路复用模型.excalidraw new file mode 100644 index 0000000..9dc97e5 --- /dev/null +++ b/10-中间件/Selector多路复用模型.excalidraw @@ -0,0 +1,499 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "id": "title", + "type": "text", + "x": 400, + "y": 30, + "width": 400, + "height": 35, + "angle": 0, + "strokeColor": "#1e40af", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 1, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Selector 多路复用模型", + "fontSize": 28, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Selector 多路复用模型", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "selector-container", + "type": "rectangle", + "x": 200, + "y": 120, + "width": 800, + "height": 250, + "angle": 0, + "strokeColor": "#f59e0b", + "backgroundColor": "#fff3bf", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 30, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 2, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "selector-box", + "type": "rectangle", + "x": 480, + "y": 145, + "width": 240, + "height": 80, + "angle": 0, + "strokeColor": "#e67700", + "backgroundColor": "#ffd8a8", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 3, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "selector-text", + "type": "text", + "x": 535, + "y": 160, + "width": 130, + "height": 50, + "angle": 0, + "strokeColor": "#e67700", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 4, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Selector\nselect「」等待", + "fontSize": 20, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Selector\nselect「」等待", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "channel1-box", + "type": "rectangle", + "x": 250, + "y": 270, + "width": 120, + "height": 60, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 5, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "channel1-text", + "type": "text", + "x": 275, + "y": 285, + "width": 70, + "height": 30, + "angle": 0, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 6, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Channel1\n就绪", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Channel1\n就绪", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "channel2-box", + "type": "rectangle", + "x": 440, + "y": 270, + "width": 120, + "height": 60, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 7, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "channel2-text", + "type": "text", + "x": 465, + "y": 285, + "width": 70, + "height": 30, + "angle": 0, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 8, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Channel2\n就绪", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Channel2\n就绪", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "channel3-box", + "type": "rectangle", + "x": 630, + "y": 270, + "width": 120, + "height": 60, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#a5d8ff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 9, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "channel3-text", + "type": "text", + "x": 655, + "y": 285, + "width": 70, + "height": 30, + "angle": 0, + "strokeColor": "#1864ab", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 10, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Channel3\n就绪", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Channel3\n就绪", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "channel-dots", + "type": "text", + "x": 800, + "y": 285, + "width": 50, + "height": 30, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 11, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "...", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "...", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "eventloop-box", + "type": "rectangle", + "x": 400, + "y": 420, + "width": 400, + "height": 120, + "angle": 0, + "strokeColor": "#7c3aed", + "backgroundColor": "#d0bfff", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 3}, + "seed": 12, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false + }, + { + "id": "eventloop-title", + "type": "text", + "x": 520, + "y": 435, + "width": 160, + "height": 30, + "angle": 0, + "strokeColor": "#5f3dc4", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 13, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "Event Loop", + "fontSize": 24, + "fontFamily": 5, + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "Event Loop", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "eventloop-desc", + "type": "text", + "x": 420, + "y": 480, + "width": 360, + "height": 45, + "angle": 0, + "strokeColor": "#374151", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 14, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "• select「」 - 等待就绪事件\n• process「」 - 处理事件\n• repeat - 循环执行", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "middle", + "containerId": null, + "originalText": "• select「」 - 等待就绪事件\n• process「」 - 处理事件\n• repeat - 循环执行", + "autoResize": true, + "lineHeight": 1.25 + }, + { + "id": "arrow-thread", + "type": "arrow", + "x": 600, + "y": 370, + "width": 0, + "height": 40, + "angle": 0, + "strokeColor": "#7c3aed", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 3, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": {"type": 2}, + "seed": 15, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "points": [[0, 0], [0, 40]], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "label-onethread", + "type": "text", + "x": 615, + "y": 380, + "width": 100, + "height": 20, + "angle": 0, + "strokeColor": "#7c3aed", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "roundness": null, + "seed": 16, + "version": 1, + "isDeleted": false, + "boundElements": null, + "updated": 1, + "link": null, + "locked": false, + "text": "单线程管理", + "fontSize": 16, + "fontFamily": 5, + "textAlign": "left", + "verticalAlign": "middle", + "containerId": null, + "originalText": "单线程管理", + "autoResize": true, + "lineHeight": 1.25 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file