diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index 6b4d5ac..97af964 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -29,7 +29,7 @@ "annotateSuffix": "", "annotatePrefix": "annotated_", "annotatePreserveSize": false, - "previewImageType": "SVGIMG", + "previewImageType": "SVG", "renderingConcurrency": 3, "allowImageCache": true, "allowImageCacheInScene": true, @@ -97,7 +97,7 @@ "embedMarkdownCommentLinks": true, "embedWikiLink": true, "syncExcalidraw": false, - "experimentalFileType": false, + "experimentalFileType": true, "experimentalFileTag": "✏️", "experimentalLivePreview": true, "fadeOutExcalidrawMarkup": false, diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 9bc5158..4c56a39 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -11,14 +11,12 @@ "id": "fcbc762a80282002", "type": "leaf", "state": { - "type": "markdown", + "type": "excalidraw", "state": { - "file": "10-中间件/Java NIO核心原理.md", - "mode": "source", - "source": false + "file": "10-中间件/Java NIO三大核心组件架构.md" }, - "icon": "lucide-file", - "title": "Java NIO核心原理" + "icon": "excalidraw-icon", + "title": "Java NIO三大核心组件架构" } } ] @@ -94,7 +92,7 @@ "state": { "type": "backlink", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Java NIO三大核心组件架构.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -104,7 +102,7 @@ "unlinkedCollapsed": true }, "icon": "links-coming-in", - "title": "Java NIO核心原理 的反向链接列表" + "title": "Java NIO三大核心组件架构 的反向链接列表" } }, { @@ -113,12 +111,12 @@ "state": { "type": "outgoing-link", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Java NIO三大核心组件架构.md", "linksCollapsed": false, "unlinkedCollapsed": true }, "icon": "links-going-out", - "title": "Java NIO核心原理 的出链列表" + "title": "Java NIO三大核心组件架构 的出链列表" } }, { @@ -156,13 +154,13 @@ "state": { "type": "outline", "state": { - "file": "10-中间件/Java NIO核心原理.md", + "file": "10-中间件/Java NIO三大核心组件架构.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "Java NIO核心原理 的大纲" + "title": "Java NIO三大核心组件架构 的大纲" } }, { @@ -198,14 +196,15 @@ }, "active": "fcbc762a80282002", "lastOpenFiles": [ - "10-中间件/零拷贝原理对比.md", - "10-中间件/Buffer核心属性.md", "10-中间件/Java NIO三大核心组件架构.excalidraw", - "10-中间件/Java NIO核心原理.md", "10-中间件/Java NIO三大核心组件架构.md", - "10-中间件/Selector多路复用模型.md", + "10-中间件/Buffer核心属性.md", "10-中间件/Buffer核心属性.excalidraw", + "10-中间件/零拷贝原理对比.md", "10-中间件/零拷贝原理对比.excalidraw", + "README.md", + "10-中间件/Java NIO核心原理.md", + "10-中间件/Selector多路复用模型.md", "10-中间件/Netty核心原理.md", "10-中间件/Selector多路复用模型.excalidraw", "00-项目概述/项目概述.md", @@ -227,8 +226,6 @@ "16-LeetCode Hot 100/最大正方形.md", "16-LeetCode Hot 100/柱状图中最大的矩形.md", "16-LeetCode Hot 100/单词搜索.md", - "16-LeetCode Hot 100/子集.md", - "16-LeetCode Hot 100/最长回文子串.md", "16-LeetCode Hot 100", "00-项目概述", "questions/15-简历面试", diff --git a/10-中间件/Buffer核心属性.md b/10-中间件/Buffer核心属性.md index 976542d..ac217d9 100644 --- a/10-中间件/Buffer核心属性.md +++ b/10-中间件/Buffer核心属性.md @@ -7,596 +7,95 @@ tags: [excalidraw] # Excalidraw Data ## Text Elements +Buffer 核心属性与操作方法 ^title + +Buffer 内存布局 ^F170UwND + +已处理数据 ^uEcrHn40 + +可读/写数据 ^nl2gkhR5 + +不可访问 ^7u7LcHEP + +mark ^XDipkAsd + +position ^n5M44OQA + +limit ^TmqgLMcU + +capacity ^rj9qYWgW + +核心操作方法 ^qybO9QdY + +mark「」 +标记当前 position 位置 ^method1 + +reset「」 +恢复到 mark 位置 ^method2 + +clear「」 +position=0, limit=capacity ^method3 + +flip「」 +limit=position, position=0 ^method4 + %% ## Drawing -```json -{ - "type": "excalidraw", - "version": 2, - "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin", - "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": {} -} +```compressed-json +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 ``` %% \ No newline at end of file diff --git a/10-中间件/Java NIO三大核心组件架构.md b/10-中间件/Java NIO三大核心组件架构.md index fb1bd23..b7bc3e5 100644 --- a/10-中间件/Java NIO三大核心组件架构.md +++ b/10-中间件/Java NIO三大核心组件架构.md @@ -33,6 +33,32 @@ Selector ^EzyNSyMP 事件分发 ^W2YtCdM1 +Java NIO 三大核心组件 ^title + +Channel ^2X52NCNg + +数据通道 +双向数据流 +非阻塞I/O ^MrNWXSvf + +Buffer ^an1w8pS5 + +数据容器 +数据存储 +读写切换 ^dWE7ePO1 + +Selector ^HFLUjTxi + +多路复用器 +事件监听 +单线程管理多连接 ^t1Kg2Zpr + +数据读写 ^fTvjwqXe + +注册事件 ^0qu1wdtb + +事件分发 ^vpw9Q2uL + %% ## Drawing ```compressed-json @@ -44,52 +70,68 @@ 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 ``` %% \ No newline at end of file diff --git a/10-中间件/Selector多路复用模型.md b/10-中间件/Selector多路复用模型.md index d9001b2..29bd48c 100644 --- a/10-中间件/Selector多路复用模型.md +++ b/10-中间件/Selector多路复用模型.md @@ -7,507 +7,83 @@ tags: [excalidraw] # Excalidraw Data ## Text Elements +Selector 多路复用模型 ^title + +Selector +select「」等待 ^dKlwZWLB + +Channel1 +就绪 ^iCbx4jCI + +Channel2 +就绪 ^XNZeJbHS + +Channel3 +就绪 ^KPimaPoH + +... ^g2B63Pk5 + +Event Loop ^Th3JCxgv + +• select「」 - 等待就绪事件 +• process「」 - 处理事件 +• repeat - 循环执行 ^3nHPhhA0 + +单线程管理 ^EU4MXsdi + %% ## Drawing -```json -{ - "type": "excalidraw", - "version": 2, - "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin", - "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": {} -} +```compressed-json +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 ``` %% \ No newline at end of file diff --git a/10-中间件/零拷贝原理对比.md b/10-中间件/零拷贝原理对比.md index 354afaa..4676791 100644 --- a/10-中间件/零拷贝原理对比.md +++ b/10-中间件/零拷贝原理对比.md @@ -7,1093 +7,129 @@ tags: [excalidraw] # Excalidraw Data ## Text Elements +零拷贝 vs 传统 I/O ^title + +传统 I/O「4次拷贝, 4次切换」 ^pPR2Zi0q + +磁盘 ^r8UcNJoO + +内核缓冲 ^lOhSI8AQ + +用户缓冲 ^ExFxKHzC + +Socket缓冲 ^GFkKE7aE + +网卡 ^nic-text + +① DMA ^label1 + +② CPU ^label2 + +③ CPU ^label3 + +④ DMA ^label4 + +零拷贝「2次拷贝, 2次切换」 ^IIlpdTRV + +磁盘 ^P64EyGfA + +内核缓冲 ^gSiJQa7m + +网卡 ^OdYyV6Ec + +① DMA ^label5 + +② DMA ^label6 + +优势: 减少2次CPU拷贝, 减少2次上下文切换 ^A7Gs02Kh + %% ## Drawing -```json -{ - "type": "excalidraw", - "version": 2, - "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin", - "elements": [ - { - "id": "title", - "type": "text", - "x": 350, - "y": 20, - "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": "零拷贝 vs 传统 I/O", - "fontSize": 28, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "零拷贝 vs 传统 I/O", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "traditional-box", - "type": "rectangle", - "x": 50, - "y": 100, - "width": 500, - "height": 400, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#ffe3e3", - "fillStyle": "solid", - "strokeWidth": 2, - "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": "traditional-title", - "type": "text", - "x": 150, - "y": 120, - "width": 300, - "height": 30, - "angle": 0, - "strokeColor": "#c92a2a", - "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": "传统 I/O「4次拷贝, 4次切换」", - "fontSize": 22, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "传统 I/O「4次拷贝, 4次切换」", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "disk-box", - "type": "rectangle", - "x": 100, - "y": 180, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#5c7cfa", - "backgroundColor": "#d0ebff", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 4, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "disk-text", - "type": "text", - "x": 130, - "y": 190, - "width": 60, - "height": 30, - "angle": 0, - "strokeColor": "#364fc7", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 5, - "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": "kernel-box", - "type": "rectangle", - "x": 100, - "y": 280, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#f59e0b", - "backgroundColor": "#ffd8a8", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 6, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "kernel-text", - "type": "text", - "x": 110, - "y": 290, - "width": 100, - "height": 30, - "angle": 0, - "strokeColor": "#e67700", - "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": "内核缓冲", - "fontSize": 18, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "内核缓冲", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "user-box", - "type": "rectangle", - "x": 100, - "y": 380, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#b2f2bb", - "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": "user-text", - "type": "text", - "x": 110, - "y": 390, - "width": 100, - "height": 30, - "angle": 0, - "strokeColor": "#2b8a3e", - "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": "用户缓冲", - "fontSize": 18, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "用户缓冲", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "socket-box", - "type": "rectangle", - "x": 380, - "y": 280, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#7c3aed", - "backgroundColor": "#d0bfff", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 10, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "socket-text", - "type": "text", - "x": 390, - "y": 290, - "width": 100, - "height": 30, - "angle": 0, - "strokeColor": "#5f3dc4", - "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": "Socket缓冲", - "fontSize": 18, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "Socket缓冲", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "nic-box", - "type": "rectangle", - "x": 380, - "y": 180, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#ffc9c9", - "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": "nic-text", - "type": "text", - "x": 400, - "y": 190, - "width": 80, - "height": 30, - "angle": 0, - "strokeColor": "#c92a2a", - "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": "网卡", - "fontSize": 20, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "网卡", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "arrow1", - "type": "arrow", - "x": 160, - "y": 230, - "width": 0, - "height": 40, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 2}, - "seed": 14, - "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": "label1", - "type": "text", - "x": 175, - "y": 240, - "width": 80, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "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": "① DMA", - "fontSize": 16, - "fontFamily": 5, - "textAlign": "left", - "verticalAlign": "middle", - "containerId": null, - "originalText": "① DMA", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "arrow2", - "type": "arrow", - "x": 220, - "y": 305, - "width": 120, - "height": 60, - "angle": 0, - "strokeColor": "#e67700", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 2}, - "seed": 16, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "points": [[0, 0], [120, 60]], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "label2", - "type": "text", - "x": 260, - "y": 320, - "width": 80, - "height": 20, - "angle": 0, - "strokeColor": "#e67700", - "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": "② CPU", - "fontSize": 16, - "fontFamily": 5, - "textAlign": "left", - "verticalAlign": "middle", - "containerId": null, - "originalText": "② CPU", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "arrow3", - "type": "arrow", - "x": 220, - "y": 395, - "width": 120, - "height": -60, - "angle": 0, - "strokeColor": "#e67700", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 2}, - "seed": 18, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "points": [[0, 0], [120, -60]], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "label3", - "type": "text", - "x": 260, - "y": 340, - "width": 80, - "height": 20, - "angle": 0, - "strokeColor": "#e67700", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 19, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "③ CPU", - "fontSize": 16, - "fontFamily": 5, - "textAlign": "left", - "verticalAlign": "middle", - "containerId": null, - "originalText": "③ CPU", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "arrow4", - "type": "arrow", - "x": 440, - "y": 280, - "width": 0, - "height": -40, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 2}, - "seed": 20, - "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": "label4", - "type": "text", - "x": 455, - "y": 240, - "width": 80, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 21, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "④ DMA", - "fontSize": 16, - "fontFamily": 5, - "textAlign": "left", - "verticalAlign": "middle", - "containerId": null, - "originalText": "④ DMA", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "zerocopy-box", - "type": "rectangle", - "x": 650, - "y": 100, - "width": 500, - "height": 400, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#d3f9d8", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 30, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 22, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "zerocopy-title", - "type": "text", - "x": 780, - "y": 120, - "width": 240, - "height": 30, - "angle": 0, - "strokeColor": "#2b8a3e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 23, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "零拷贝「2次拷贝, 2次切换」", - "fontSize": 22, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "零拷贝「2次拷贝, 2次切换」", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "disk2-box", - "type": "rectangle", - "x": 750, - "y": 180, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#5c7cfa", - "backgroundColor": "#d0ebff", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 24, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "disk2-text", - "type": "text", - "x": 780, - "y": 190, - "width": 60, - "height": 30, - "angle": 0, - "strokeColor": "#364fc7", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 25, - "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": "kernel2-box", - "type": "rectangle", - "x": 750, - "y": 350, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#f59e0b", - "backgroundColor": "#ffd8a8", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 26, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "kernel2-text", - "type": "text", - "x": 760, - "y": 360, - "width": 100, - "height": 30, - "angle": 0, - "strokeColor": "#e67700", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 27, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "内核缓冲", - "fontSize": 18, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "内核缓冲", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "nic2-box", - "type": "rectangle", - "x": 980, - "y": 180, - "width": 120, - "height": 50, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "#ffc9c9", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 28, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "nic2-text", - "type": "text", - "x": 1000, - "y": 190, - "width": 80, - "height": 30, - "angle": 0, - "strokeColor": "#c92a2a", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 29, - "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": "arrow5", - "type": "arrow", - "x": 810, - "y": 230, - "width": 0, - "height": 110, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 3, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 2}, - "seed": 30, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "points": [[0, 0], [0, 110]], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "label5", - "type": "text", - "x": 825, - "y": 275, - "width": 80, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 31, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "① DMA", - "fontSize": 16, - "fontFamily": 5, - "textAlign": "left", - "verticalAlign": "middle", - "containerId": null, - "originalText": "① DMA", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "arrow6", - "type": "arrow", - "x": 870, - "y": 350, - "width": 160, - "height": -120, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 3, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 2}, - "seed": 32, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "points": [[0, 0], [160, -120]], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "label6", - "type": "text", - "x": 920, - "y": 280, - "width": 80, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 33, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "② DMA", - "fontSize": 16, - "fontFamily": 5, - "textAlign": "left", - "verticalAlign": "middle", - "containerId": null, - "originalText": "② DMA", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "benefit-box", - "type": "rectangle", - "x": 700, - "y": 430, - "width": 400, - "height": 50, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#b2f2bb", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": {"type": 3}, - "seed": 34, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false - }, - { - "id": "benefit-text", - "type": "text", - "x": 740, - "y": 440, - "width": 320, - "height": 30, - "angle": 0, - "strokeColor": "#2b8a3e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, - "seed": 35, - "version": 1, - "isDeleted": false, - "boundElements": null, - "updated": 1, - "link": null, - "locked": false, - "text": "优势: 减少2次CPU拷贝, 减少2次上下文切换", - "fontSize": 18, - "fontFamily": 5, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": null, - "originalText": "优势: 减少2次CPU拷贝, 减少2次上下文切换", - "autoResize": true, - "lineHeight": 1.25 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} +```compressed-json +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 ``` %% \ No newline at end of file