docs: 优化Java NIO文档图解,使用Excalidraw可视化
- 将ASCII文字图替换为专业的Excalidraw图表 - 新增4个可视化图表:三大核心组件架构、Selector多路复用模型、Buffer核心属性、零拷贝原理对比 - 图表使用配色方案区分不同组件(蓝色-Channel, 绿色-Buffer, 橙色-Selector) - 在Obsidian中可通过![[...]]语法直接嵌入查看
This commit is contained in:
34
.obsidian/workspace.json
vendored
34
.obsidian/workspace.json
vendored
@@ -13,12 +13,12 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "10-中间件/Netty核心原理.md",
|
"file": "10-中间件/Java NIO核心原理.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "Netty核心原理"
|
"title": "Java NIO核心原理"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "backlink",
|
"type": "backlink",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "10-中间件/Netty核心原理.md",
|
"file": "10-中间件/Java NIO核心原理.md",
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
},
|
},
|
||||||
"icon": "links-coming-in",
|
"icon": "links-coming-in",
|
||||||
"title": "Netty核心原理 的反向链接列表"
|
"title": "Java NIO核心原理 的反向链接列表"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -113,12 +113,12 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "outgoing-link",
|
"type": "outgoing-link",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "10-中间件/Netty核心原理.md",
|
"file": "10-中间件/Java NIO核心原理.md",
|
||||||
"linksCollapsed": false,
|
"linksCollapsed": false,
|
||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
},
|
},
|
||||||
"icon": "links-going-out",
|
"icon": "links-going-out",
|
||||||
"title": "Netty核心原理 的出链列表"
|
"title": "Java NIO核心原理 的出链列表"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -156,13 +156,13 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "10-中间件/Netty核心原理.md",
|
"file": "10-中间件/Java NIO核心原理.md",
|
||||||
"followCursor": false,
|
"followCursor": false,
|
||||||
"showSearch": false,
|
"showSearch": false,
|
||||||
"searchQuery": ""
|
"searchQuery": ""
|
||||||
},
|
},
|
||||||
"icon": "lucide-list",
|
"icon": "lucide-list",
|
||||||
"title": "Netty核心原理 的大纲"
|
"title": "Java NIO核心原理 的大纲"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -198,16 +198,21 @@
|
|||||||
},
|
},
|
||||||
"active": "fcbc762a80282002",
|
"active": "fcbc762a80282002",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"10-中间件/Buffer核心属性.excalidraw",
|
"10-中间件/零拷贝原理对比.md",
|
||||||
"10-中间件/Selector多路复用模型.excalidraw",
|
"10-中间件/Buffer核心属性.md",
|
||||||
"10-中间件/Java NIO三大核心组件架构.excalidraw",
|
"10-中间件/Java NIO三大核心组件架构.excalidraw",
|
||||||
"10-中间件/Java NIO核心原理.md",
|
"10-中间件/Java NIO核心原理.md",
|
||||||
|
"10-中间件/Java NIO三大核心组件架构.md",
|
||||||
|
"10-中间件/Selector多路复用模型.md",
|
||||||
|
"10-中间件/Buffer核心属性.excalidraw",
|
||||||
|
"10-中间件/零拷贝原理对比.excalidraw",
|
||||||
|
"10-中间件/Netty核心原理.md",
|
||||||
|
"10-中间件/Selector多路复用模型.excalidraw",
|
||||||
"00-项目概述/项目概述.md",
|
"00-项目概述/项目概述.md",
|
||||||
"questions/02-数据库/MyBatis核心原理.md",
|
"questions/02-数据库/MyBatis核心原理.md",
|
||||||
"Obsidian技能使用指南.md",
|
"Obsidian技能使用指南.md",
|
||||||
"Obsidian可视化插件指南.md",
|
"Obsidian可视化插件指南.md",
|
||||||
"10-中间件/Netty实战场景.md",
|
"10-中间件/Netty实战场景.md",
|
||||||
"10-中间件/Netty核心原理.md",
|
|
||||||
"10-中间件",
|
"10-中间件",
|
||||||
"16-LeetCode Hot 100/从前序与中序遍历序列构造二叉树.md",
|
"16-LeetCode Hot 100/从前序与中序遍历序列构造二叉树.md",
|
||||||
"16-LeetCode Hot 100/路径总和.md",
|
"16-LeetCode Hot 100/路径总和.md",
|
||||||
@@ -224,15 +229,10 @@
|
|||||||
"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/最长回文子串.md",
|
||||||
"16-LeetCode Hot 100/括号生成.md",
|
|
||||||
"16-LeetCode Hot 100/删除链表的倒数第N个结点.md",
|
|
||||||
"16-LeetCode Hot 100/电话号码的字母组合.md",
|
|
||||||
"16-LeetCode Hot 100",
|
"16-LeetCode Hot 100",
|
||||||
"00-项目概述",
|
"00-项目概述",
|
||||||
"questions/15-简历面试",
|
"questions/15-简历面试",
|
||||||
"questions/14-Web3与区块链",
|
"questions/14-Web3与区块链",
|
||||||
"12-面试技巧",
|
"12-面试技巧"
|
||||||
"08-算法与数据结构",
|
|
||||||
"questions/13-Golang语言"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
602
10-中间件/Buffer核心属性.md
Normal file
602
10-中间件/Buffer核心属性.md
Normal file
@@ -0,0 +1,602 @@
|
|||||||
|
---
|
||||||
|
excalidraw-plugin: parsed
|
||||||
|
tags: [excalidraw]
|
||||||
|
---
|
||||||
|
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
|
||||||
|
|
||||||
|
# Excalidraw Data
|
||||||
|
|
||||||
|
## Text Elements
|
||||||
|
%%
|
||||||
|
## 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": {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
%%
|
||||||
95
10-中间件/Java NIO三大核心组件架构.md
Normal file
95
10-中间件/Java NIO三大核心组件架构.md
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
---
|
||||||
|
excalidraw-plugin: parsed
|
||||||
|
tags: [excalidraw]
|
||||||
|
---
|
||||||
|
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
|
||||||
|
|
||||||
|
# Excalidraw Data
|
||||||
|
|
||||||
|
## Text Elements
|
||||||
|
Java NIO 三大核心组件 ^title
|
||||||
|
|
||||||
|
Channel ^4uxiOSKr
|
||||||
|
|
||||||
|
数据通道
|
||||||
|
双向数据流
|
||||||
|
非阻塞I/O ^thM1aQV2
|
||||||
|
|
||||||
|
Buffer ^ZhHktmQf
|
||||||
|
|
||||||
|
数据容器
|
||||||
|
数据存储
|
||||||
|
读写切换 ^bwZYl5Ts
|
||||||
|
|
||||||
|
Selector ^EzyNSyMP
|
||||||
|
|
||||||
|
多路复用器
|
||||||
|
事件监听
|
||||||
|
单线程管理多连接 ^xLILOaBV
|
||||||
|
|
||||||
|
数据读写 ^30KtxT9O
|
||||||
|
|
||||||
|
注册事件 ^b9QGv9Jt
|
||||||
|
|
||||||
|
事件分发 ^W2YtCdM1
|
||||||
|
|
||||||
|
%%
|
||||||
|
## Drawing
|
||||||
|
```compressed-json
|
||||||
|
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebR4ABm0ANho6IIR9BA4oZm4AbXAwUDBSiBJuaDVgtNLIWERKqCwoWrLMbgAWBIT+MphuAGZeosgKEnUhhOTtAA4AdgBORc7B
|
||||||
|
|
||||||
|
2c755IBWZJ4tvshJBEJlaSH90YhrZRq0EbqIZihSNgBrBABhNnw2UkqAYgAjAhurgAGZtSCaXDYV7KF5CDjEL4/P4SZ7WZhwXCBHKQiBgwj4fAAZVgt3Qgg8+KeL3eAHUJpJuHxLrS3ggyTAKY9vhUDhAEacOOE8mhAQK2NjsGoBuKegL4cI4ABJYhi1D5AC6AoRSJFzA1HCExIFYQQxG4EsujBY7C4aFZD0IzAAIhlmpa0GCCGEBZphEiAKLBLI
|
||||||
|
|
||||||
|
5DXagVCODEXCeq3zeY8FYJHizZbza0PIgcV7cY2my4/WEW7g+/B+y7NTCtCQAKVw9FwqAAciqAPKoQCQcoByTUAHBaAYf1ACN+gDe5fFgzhQEmEIziXizAUTnIAMVw+iJctQFwe1agAEEiMoHegxDkmPjbVBzAQDydjxB18RiDUBXocrhCCLSGr8yb8JLSBOT8CAAFRaSoGybVsO27fthzHAVcCEKA2AAJXCGc52eIQEAFHMEAACWOU5a1QQF4m3
|
||||||
|
|
||||||
|
MpbVYTgW04MQrU6VYEkTZJZidMpP2ILBKlwBJx3ILIfzQAt/0uSRQjAmsABlPzzb1fVwy5yAoKTSIgCAigAXz6EpOK9E8JI4EV8GcAMOgFBo50FBBsCiDgbiQAUOnFLZ7n6K03IFcZiEmR1EgFI4TjOcVukQhyKXcgRng5FFfgBQFFkzbAeHxaFYSVRFkW+eKJH+XAtmIWYwQhRciVJclrKpfk2RihkmRZM06s5SrKmqy1dWEYVRStSVpVlK0FUu
|
||||||
|
|
||||||
|
TLVXVAodWUwNiANDU9LKKyhlGHS2QQUtHQFaj7Uay4XXdYJ4wUislIeAMspDTJslycaoxjOM1rIxNk26NMMyzMoc3k1BRLwtgSwM8tKweTbaPoucFh2JLkk6ZIBS4niJFwQEBLXBBhK+v9AsklpZNzMtFO03SdoMiBOiETBCHbEkAGk/ks+BrN3fEXN4QFKMgTdAW2byGrQWYZmmQZFkGVYeGSQFM1mBdxOIkLUGGcLHO4KLHmauK0XQIE+c6XBN
|
||||||
|
|
||||||
|
DSmE4T1bLUSacgOCxHFLvHcquR5dqaWaxlfOZdbarpFruSqvkOsmvxJBm3rLilGEBvlZWRrVCMJoeQ3/ZEjGVvuwYNqYGjjw4yBdo9e6AeOspTuDUNLsjm7YwOh6kxTF6kreyAPt/Qts1+95/sUyzwIkD4jJM8dJ2nWcWU6RdJ1Xdd8E3NnoBaW8j0qU9mlpm0mCvdxp/vR9nycy43yiT8mDR77A8A/xQPb9BO+sbvEOQtCMP7tBsNz2vd6I4LSP
|
||||||
|
|
||||||
|
IvZk7tEGOAY8VJYSTootOjsVhkieG6BcCpUXIJVGBkD4PAkswNSONPo511JQNSlRNKlGWqUOa5RibqAALKAlwAARQAGpQKrPTJo4FnJWmSMrTcPBATKx8n5VAsxlZBRItwJhCtIpNTdmrAEgx5idFZkjf0+tMpIlEeiU25tcStDKsSG2ntqTCI5I7Th6cVZuw0W1L2+IhR+x6uKPqwdYCDTDgiUaxcfb6gsejBuZRzQGUHovL+adYZuizi3I6/op
|
||||||
|
|
||||||
|
rnTDFdNAkZLjRlLvdcWFdnrpmrnhOS9cxKNz+njIJVZT4QEAA6mgA7Y0AFgJgBlBIADocEADPKgBEFQKYAQVtymAD10wA3GmAD0NFUCh2w9xyH3OcnMh4rjXBubgE9dyr1npdc8n9l43kPGvEgG98Tbw/F+fe8cHi/CAhwE+NZKgFJKeU6pdTGmtPaZ0q+KF0KsDvqgB+ySRQvz4eKCin9U50R/nOHgPB5gLHTFsKWzowHMyuIMZGQk4FrLKIg5B
|
||||||
|
|
||||||
|
KTDqAzKCpTBEhsFgFwcUImlRNBCBKkwMybALI0MaBIQIdlrgvkuMzWY8tLgcy8pcDhzteABWlq/RiytSVzmVuyd4CiNY8DBIsEEnQ9YZUNjyiA/xNB8p4JoXWaiKoe2MVo12Oiea8G0e8IxEg7adV9rHMiViZQ2NDoqexEdrpOOmi4ua9RaFoEGEtM0q0DIT2Br4na/j9rZ1bpcfOxBQlF3NQ8aJd0DJxKeqmRJmY7mfXge9JuXqslAxTvaN5v8t
|
||||||
|
|
||||||
|
yDEFoMbYuxQHcSBbgIV0CUarLcYcLGMkYWoBzgTIo+CKgSAAFqSAIq8KA+gyGlQJQzeh5LuC/IFBzLmdLVXzC2HMZImb5jiKWMmZIixAoy1IlSh47Klbqs+DldW4rpWzFwIMTeJ1ZGis3SbTE2IVFW3Ua1LVJj126IZforl7tba3p9t1Q0Ad1n9SNWRIaDxw5jQiVHeFU09WxoEE6/hLytou2dB6hAZc0E+pCYXcMgayjBrLmGyukaa4QDrnHUt+
|
||||||
|
|
||||||
|
H42BLhfUHJAAhLFYJJmXCXFOTCA9+lQBHkMtAIyp6zPGWeBeSbSDTPwGMiQ68yUPCWbvb84KiMbOPvgRF6AqPYt42UJCFzb5YVIDhO5hFF1Wmed415oMEw9C2DwaGWwvEArzbxLYoLYGpMxkg7GlakPRwwTk5FqK63E00BQBtABNfAWwQJ5DpoS9AjMGG8zCtSlkbDuZO34ZZyFum0ACMuKuu466xX/HEZIrY0ifVHqmmKjEZtz2WzlZqykr6HhP
|
||||||
|
|
||||||
|
vvdtOrzVqu8iVdHLq5iP2WMDt+jmf6ygAcce1rKYGIUQfuvMaDnBGucXg4h71J0UMXTQ0BkuIaEzxIja9aNDmiwkcyWRyeOyJAFMAJ3agALNXKQUwAGtqAAqFcpgBv6MAJmKgBwJUAEbGXSGPXL6XR4egyx7DLbjWITJ4JnKcgJea8gmuPCfmaJso4mVlSbSWUGTwE5M5LO5djgN37scGe+9/Eqmb5XI01posz9UtkX03xwz7z+FsLFokEBO1AW8
|
||||||
|
|
||||||
|
VSEWsFu2EHlqgCgg7j9BTueO+gTzhNnTEzCMEOyvxcX4p3La9AxL7KKyi6gToixmFdFpQ8elLImUIKp4CGLK6IocuyyevKYItgCoSLKorIqSuW41iVIquBZiXvlS+tr7iHaqsfc169NWfeQDMXqvDQdDV9bscqM1q2LV6utdARX9q6iovGwZf5VFk3Tdg7NvaCGE2Hd9f6lbmpgOQEw7Ex6OHtsU9xoRlHtd9uwsF661Nc4oZfMkYA/RcN83zDsy
|
||||||
|
|
||||||
|
WpvUhef89bzWvB6KJBBiMDAFsJIYBEIAAr4gWuiHtDxmYWYnpuczCXOGLDHaO5YgJ2KAhetMfRvDZbLpU2btdyruXO/FQgZIiYejCoNk742iiz0WzxCqyD1axqiazdgazz2ikMWAO1TfU6w1Aj161sRNVj0A3Lx1WcS61cRHw8W4HnQMxgzVXdQL3m0TTziWzCSGww1uiwxrwSTr2zErXA2IwyVbyB3UhJAyBl3BwJF7kY0dGS0gHo1YwB3Y3YJB
|
||||||
|
|
||||||
|
wgDnloz4wEwkJEwPQR0nGWT3mRwAk2W2Q4K4JQh4OJ0uX4JuU00F3wgeVlnfhdRzw4A70GgkUWDP3mGmFzXASuA9053s0b0c2hQbyrQW3hWF3UjF1rWn3QEwGkhVGknbFwAowoTX0VyO1UV7XY363ZmGXi2HUS3FDTAXRZTSzZQfyyyfw3V/w1jyykS/zkSNlygiyUQq0ALo2thgNq193AP93XRa1gOG3fQQINRDl/Rj2jDj3QITxcWYNwPlCmzd
|
||||||
|
|
||||||
|
TgxIKL0FxL1Q3CUGKDRoOr02yrijXrxjTGxYObgF3YMqEACxNQAe9jABYTUAApXbHQAaLkRxABFt0ABoVcpQAVWVAB+v0AGgvQAQu9AAwFz2MAD34wAUuNPselGFmMRDx5xCYdQceMLwl4oc5C4cFDIBEcVDudUcj50d5MIBDjTiLjri7iOAni3jPjfiidr49Drlbl68dNsjqcP4CDv401EhgFVglhFgs8M42cEZFgh9VDxIx8XMfDQ8/CsFJ80U
|
||||||
|
|
||||||
|
JdeJSAXgKBnBsAu4ggzJqNpD5pYicRxSmYhh7CB19d2FVVOgdcUtKTcjFZ8iwDYoX9ctNB2IwQOcHdv8spStqiAD4iHhCQr0FUb0Q8DEVV0iiCjSNUGi3Sw8XFEDrFo8UD+i0DIlhtMDZpRgbVwseAHUE5Q08NXUZsM45tpjgkzo5iqDK8ljQ06Ctskl1ikTm9WDvCyDIA4A2BPx5jCg6gwBay6yopSgEhoyK96zoywBtSmywAWy6ytRRgK98NQg
|
||||||
|
|
||||||
|
oAvh9B1wZALRl8qy8R3DaocQoAKMuJPxlBiyMAkRFykRlzVynh5y9wxS2AKAjhcAuSHhshiA9zxSjziYlSDzISfErDQpARBgCsnoYZWdrMEY9xOTVyoVnMvDq0cFxd9JKhhgqYoBMAQJFgzku06Edk1cd91TxQj8D8GUoYsjHleB9ShECictBgzS+VLTD1HcbSX8ytlFKs6jnTvdQCmiPS9FWjfSaLQ8Otw9uif02E+iHF0NmKRthjNjRiyJ9Fkz
|
||||||
|
|
||||||
|
IDyg0zSMZiKCA149FiYk8yVjcMdtZz0lti2DskRc8l8lnt/j9CftHS/tR4QS1L9wwTJCwc7zZCTL5DFklCJNh81DZM0SCktLzkSd9CyTGD7kjcads97yjM/5BhkxTNARUirMnDIjvylLIUeT/y+ShdVIPMhTvNRTxTJTpTTIpdbJtCYjwsrh9yqA1dRYtdHRNcUKWR0tDdKTWYsLzccKTTrdbd7ciLrT5FSK7SL0gCXTg8mL3T6pPSA9oDOqIBYx
|
||||||
|
|
||||||
|
mAjhvYOj4DP1UckDjVhpTUwzByY4rVozk9Yz4y6tINxQk4aSJj88AkdjkNMzlsazByq85Lw1Vi8MCNsCfpSzXMyhKzqyIxoyGy6huzey6g2yXrShCqDhSgqrWyBy8JhzRzxzPQpzqztyoh+MNzHAHJVyzyYatzIropdy8qrz4akQLyDz0aEY8q7y6c6S2E3IAFWFlZ+9eIPgIrrruSnMK0YqjpEqgiIBNBFgyEABxegRYOsB0hUnKyLBIuWbUxCu
|
||||||
|
|
||||||
|
WHUsYVVNC5lDCg3e/A01ATlVWOqm3BAO3Mo49Io6ANqiix0+owa9o2i3q+igotoxonizoyayASPHojikMri6SkDXirAkYjasiQQhgCwlM0SqY8SjMguI67MiAU6jbc6hSos5GrY9MoyyoQAC5tAAYxUuO0u+zfL0oGQMsByMokKkJ4MhxXksthOsvfFspPORPUIx3UtjvjpcpJLJyMMp0qu8ohwsIfLllYSFlYUAUcPzVdCpuYN/LptQVioRQSsA
|
||||||
|
|
||||||
|
sCJFNxpSoyu4NSoviCGyushvPyoFszCKvV1FogD10dFXpvzfjv0gEyzlot3Vv+HquVsarzmKxIvVrIpqJ5qEJ1uorGv1oQAgK9MfuNr9JYoDLYuDNmtQP9sWqwKT3X14DWvcWdtZnGI9szk9W9oOt9soO4oDtzKDtr0LI8o2KI2LBUrLMOwerLy+q+p7N+p7NbN+oIecD2G7OcCfPetKH7I+qBqeBBrUDBunNIhGKhoXKXLhrDoRq4ZXLDp3P4yx
|
||||||
|
|
||||||
|
sPJCCLsgDPOEZxogTxvGKbqWA2A1y2Asw7t4iDG7s2N7r515IZuHqn1HvQHpB4H8xHOIBIVntgpvogG3yFtiztRKrSM4Qloqqluqsf29MKMqPFWPpVpkWIpasvs1tqO1qos0W6vqxaKNsYoftNomu6y/SDOQJ/tDL/tAz4qIwEt0p8tTkgbEv2sW0OvgbtpzNkuQfoNQfeiYM2MwYjp3ByUuMADAlQAReUE7ekk6yhhD/tDLangcTLM7zLoTc6nx
|
||||||
|
|
||||||
|
4d4SbKkdVy0ctlS71IGnmnK71NuB3KKnPK67qTacU0/LUB7DvkM1RY+82SIFlx1GiNNHx9sHBdB71KAi9HgKJBXRl86woKiECIQJzGN84KBbdhBhtAEggqArUwNhthd8WRTMUhUwfmEhhgL9BYvlSreZ0LZZVmZbsL3GctgQ0W4Tmbz7/HPGr77TPc36wm/c+qGLdaTbBQP6sDAyo9En/05r/awQYE7L3ywq2bTFUnHb+KwG2JExAE1g2mG6fEhh
|
||||||
|
|
||||||
|
ZGNms0CtR0mE+9cn75DCfa/UszVzA7xR8zkw9hPkbqsG7ryNLn0F4rtXftul9DpahD9K2MtxQS7xKhggwRLHs6ZkLX0QpR86d4xmw6JmNCsE5nScFmZXySTC3567R9aatH6awhtJwAo4rg4A4AyQ7puA9JoAjgshLWWU+gGBCAEAKAKMsWKit0j6Sp822hJCRAVEVRmh9AyQRETT0XgRC3sBi3LpS3Mgs2/Gc3T1ys8XU262xSG2y3lw77QmH6i3
|
||||||
|
|
||||||
|
u2chG3y2iXDaEd62R2y2K2OQCXB2u2S2y3UIKWuiigh2l3Mh2xprejO2p2oBR3lwTXRCzX13F2e3Mgj2DXrlpaN2L39A1IJCrWea73p3MgY2hG0bRGkTX2D2y2gxMav3jzkrby93h2/3MhhGQJYjDZa393D2YEV2KRY1HhsAXhiQAANbgKh0WbQQYVmPmHl2wmwybdd5gND74fAfzK0WYbQLYTNLYCRPYejpYVNowNgAwONm0AgHCPTYWDYb5IU3
|
||||||
|
|
||||||
|
90dldh2jUclrKQt+EEgAEx0dyCAaT4gMkBAOANOgbQCUxtgbiADnWYIGB9TkgHlfBCjb4YmUgZQaEAAClYUmxZls5s+oDlro4AEp8R0JlATQcRKhzOrOeB5ZeB/O/PegnOthXOhPz3ulmpt2rxOAjQIUCREOzymAkbUB8FshdP7pFn4SiBVPpXycHgtkk28vBdhAoB8JvX8uyh9AcR3hSAWwUYKvBdqvSBaudPNA9PGuhO7AAArTK5gEkLZOAIhL
|
||||||
|
|
||||||
|
ThANrjr1SlTOyQgRgECDj/ALjhXHKiemLrgV8IQJ4AwaD8LZg6p/T9pl4ctrQwgzVocp4PcKbmbub1JITxwZgDLr4M8GsIhbIIQAXcAXBAkIkcIONrSEALSIAA==
|
||||||
|
```
|
||||||
|
%%
|
||||||
@@ -85,27 +85,7 @@ while (true) {
|
|||||||
|
|
||||||
### 2. NIO 三大核心组件
|
### 2. NIO 三大核心组件
|
||||||
|
|
||||||
```
|
![[Java NIO三大核心组件架构]]
|
||||||
┌────────────────────────────────────────┐
|
|
||||||
│ Java NIO 架构 │
|
|
||||||
├────────────────────────────────────────┤
|
|
||||||
│ │
|
|
||||||
│ ┌─────────┐ ┌─────────┐ │
|
|
||||||
│ │Channel │◄──►│ Buffer │ │
|
|
||||||
│ └────┬────┘ └─────────┘ │
|
|
||||||
│ │ │
|
|
||||||
│ ▼ │
|
|
||||||
│ ┌─────────┐ │
|
|
||||||
│ │Selector │ │
|
|
||||||
│ │(多路复用)│ │
|
|
||||||
│ └─────────┘ │
|
|
||||||
│ │
|
|
||||||
└────────────────────────────────────────┘
|
|
||||||
|
|
||||||
Channel: 数据通道(双向)
|
|
||||||
Buffer: 数据容器
|
|
||||||
Selector: 多路复用器
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **核心组件关系**
|
#### **核心组件关系**
|
||||||
|
|
||||||
@@ -137,29 +117,7 @@ buffer.clear();
|
|||||||
|
|
||||||
#### **工作原理**
|
#### **工作原理**
|
||||||
|
|
||||||
```
|
![[Selector多路复用模型]]
|
||||||
Selector 多路复用模型:
|
|
||||||
|
|
||||||
┌──────────────────────────────────┐
|
|
||||||
│ Selector │
|
|
||||||
│ │
|
|
||||||
│ select() - 阻塞等待就绪事件 │
|
|
||||||
│ │
|
|
||||||
│ ┌────┐ ┌────┐ ┌────┐ │
|
|
||||||
│ │Ch1 │ │Ch2 │ │Ch3 │ ... │
|
|
||||||
│ │就绪│ │就绪│ │就绪│ │
|
|
||||||
│ └────┘ └────┘ └────┘ │
|
|
||||||
└──────────────────────────────────┘
|
|
||||||
▲
|
|
||||||
│ one thread
|
|
||||||
│
|
|
||||||
┌─────────┴──────────┐
|
|
||||||
│ Event Loop │
|
|
||||||
│ - select() │
|
|
||||||
│ - process() │
|
|
||||||
│ - repeat │
|
|
||||||
└────────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **SelectionKey 事件类型**
|
#### **SelectionKey 事件类型**
|
||||||
|
|
||||||
@@ -307,25 +265,7 @@ sourceChannel.transferTo(0, sourceChannel.size(), destChannel);
|
|||||||
|
|
||||||
#### **Buffer 结构**
|
#### **Buffer 结构**
|
||||||
|
|
||||||
```
|
![[Buffer核心属性]]
|
||||||
Buffer 核心属性:
|
|
||||||
|
|
||||||
┌───────┬──────────┬──────────┬─────────┐
|
|
||||||
│ 0 │position │ limit │capacity │
|
|
||||||
│ │ │ │ │
|
|
||||||
│ 已处理 可读/写数据 │ 不可访问 │
|
|
||||||
│ 数据 │ │ │
|
|
||||||
└───────┴──────────┴──────────┴─────────┘
|
|
||||||
↑ ↑ ↑
|
|
||||||
mark position limit
|
|
||||||
|
|
||||||
操作方法:
|
|
||||||
- mark(): 标记当前 position
|
|
||||||
- reset(): 恢复到 mark 位置
|
|
||||||
- clear(): position=0, limit=capacity
|
|
||||||
- flip(): limit=position, position=0 (读→写)
|
|
||||||
- rewind(): position=0, limit 不变
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **Buffer 使用流程**
|
#### **Buffer 使用流程**
|
||||||
|
|
||||||
@@ -439,17 +379,7 @@ if (bytesWritten == 0) {
|
|||||||
|
|
||||||
#### **传统 I/O vs 零拷贝**
|
#### **传统 I/O vs 零拷贝**
|
||||||
|
|
||||||
```
|
![[零拷贝原理对比]]
|
||||||
传统 I/O(4 次拷贝,4 次上下文切换):
|
|
||||||
1. 磁盘 → 内核缓冲区 (DMA)
|
|
||||||
2. 内核缓冲区 → 用户缓冲区 (CPU)
|
|
||||||
3. 用户缓冲区 → Socket 缓冲区 (CPU)
|
|
||||||
4. Socket 缓冲区 → 网卡 (DMA)
|
|
||||||
|
|
||||||
零拷贝(2 次拷贝,2 次上下文切换):
|
|
||||||
1. 磁盘 → 内核缓冲区 (DMA)
|
|
||||||
2. 内核缓冲区 → 网卡 (DMA)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **transferTo 实现**
|
#### **transferTo 实现**
|
||||||
|
|
||||||
|
|||||||
513
10-中间件/Selector多路复用模型.md
Normal file
513
10-中间件/Selector多路复用模型.md
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
---
|
||||||
|
excalidraw-plugin: parsed
|
||||||
|
tags: [excalidraw]
|
||||||
|
---
|
||||||
|
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
|
||||||
|
|
||||||
|
# Excalidraw Data
|
||||||
|
|
||||||
|
## Text Elements
|
||||||
|
%%
|
||||||
|
## 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": {}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
%%
|
||||||
1085
10-中间件/零拷贝原理对比.excalidraw
Normal file
1085
10-中间件/零拷贝原理对比.excalidraw
Normal file
File diff suppressed because it is too large
Load Diff
1099
10-中间件/零拷贝原理对比.md
Normal file
1099
10-中间件/零拷贝原理对比.md
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user