Compare commits
6 Commits
04732a0119
...
f956786a44
| Author | SHA1 | Date | |
|---|---|---|---|
| f956786a44 | |||
| 16ae667e2b | |||
| ec78ea8752 | |||
| fabdaaee1f | |||
| 932dc8844d | |||
| 34a440b064 |
10
.obsidian/community-plugins.json
vendored
10
.obsidian/community-plugins.json
vendored
@@ -1,10 +1,6 @@
|
||||
[
|
||||
"obsidian-git",
|
||||
"dataview",
|
||||
"kanban",
|
||||
"calendar",
|
||||
"heatmap",
|
||||
"obsidian-tasks-plugin",
|
||||
"obsidian-chart",
|
||||
"obsidian-advanced-slides"
|
||||
"obsidian-excalidraw-plugin",
|
||||
"advanced-canvas",
|
||||
"mermaid-tools"
|
||||
]
|
||||
7548
.obsidian/plugins/advanced-canvas/main.js
vendored
Normal file
7548
.obsidian/plugins/advanced-canvas/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
11
.obsidian/plugins/advanced-canvas/manifest.json
vendored
Normal file
11
.obsidian/plugins/advanced-canvas/manifest.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "advanced-canvas",
|
||||
"name": "Advanced Canvas",
|
||||
"version": "6.0.0",
|
||||
"minAppVersion": "1.1.0",
|
||||
"description": "Supercharge your canvas experience! Create presentations, flowcharts and more!",
|
||||
"author": "Developer-Mike",
|
||||
"authorUrl": "https://github.com/Developer-Mike",
|
||||
"fundingUrl": "https://ko-fi.com/X8X27IA08",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
508
.obsidian/plugins/advanced-canvas/styles.css
vendored
Normal file
508
.obsidian/plugins/advanced-canvas/styles.css
vendored
Normal file
@@ -0,0 +1,508 @@
|
||||
/* src/styles.scss */
|
||||
.properties-field > .setting-item-info {
|
||||
flex: 0;
|
||||
margin: 0;
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
border: var(--input-border-width) solid var(--background-modifier-border);
|
||||
border-radius: var(--input-radius) 0 0 var(--input-radius);
|
||||
}
|
||||
.properties-field > .setting-item-control > input {
|
||||
width: 100%;
|
||||
border-radius: 0 var(--input-radius) var(--input-radius) 0;
|
||||
}
|
||||
.ac-settings-heading:not(:first-child) {
|
||||
margin-top: var(--size-4-10) !important;
|
||||
}
|
||||
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) {
|
||||
border-bottom-color: var(--background-modifier-border-hover);
|
||||
}
|
||||
.ac-settings-heading .setting-item-description {
|
||||
margin-inline-end: 20px;
|
||||
}
|
||||
.settings-header-children {
|
||||
transform-origin: top center;
|
||||
transform: scaleY(1);
|
||||
transition: transform 0.2s ease-in-out;
|
||||
}
|
||||
.settings-header-children details {
|
||||
flex-direction: column;
|
||||
align-items: initial;
|
||||
}
|
||||
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) + .settings-header-children {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
height: 0;
|
||||
transform: scaleY(0);
|
||||
}
|
||||
details.setting-item[open] > summary {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
details.setting-item > *:not(summary) {
|
||||
padding-left: 1em;
|
||||
border-left: 1px solid var(--color-accent);
|
||||
}
|
||||
.kofi-banner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: var(--size-4-3);
|
||||
background-color: var(--background-secondary);
|
||||
border: 1px solid var(--divider-color);
|
||||
border-radius: var(--radius-s);
|
||||
}
|
||||
.kofi-banner h1 {
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
font-size: var(--font-ui-large);
|
||||
font-weight: 600;
|
||||
}
|
||||
.kofi-banner .progress-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
}
|
||||
.kofi-banner .progress-container progress {
|
||||
background: transparent;
|
||||
}
|
||||
.kofi-banner .progress-container progress::-webkit-progress-bar {
|
||||
background-color: var(--background-modifier-border);
|
||||
border-radius: var(--input-radius);
|
||||
}
|
||||
.kofi-banner .progress-container progress::-webkit-progress-value {
|
||||
background-color: var(--color-accent);
|
||||
border-radius: var(--input-radius);
|
||||
}
|
||||
.kofi-banner .progress-container .hourly-rate {
|
||||
margin-left: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.kofi-banner .ac-kofi-button {
|
||||
align-self: flex-end;
|
||||
width: min-content;
|
||||
height: min-content;
|
||||
line-height: 0;
|
||||
}
|
||||
.kofi-banner .ac-kofi-button img {
|
||||
min-width: 100px;
|
||||
width: 25%;
|
||||
max-width: 200px;
|
||||
}
|
||||
.canvas-wrapper > .document-search-container {
|
||||
transform: translateZ(0);
|
||||
margin: 0;
|
||||
}
|
||||
.canvas-wrapper:not(.mod-readonly) .show-while-readonly {
|
||||
display: none;
|
||||
}
|
||||
.canvas-control-item[data-toggled=true] {
|
||||
background-color: var(--color-accent);
|
||||
}
|
||||
.canvas-control-item[data-toggled=true] svg {
|
||||
stroke: var(--text-on-accent);
|
||||
}
|
||||
.reactive-node,
|
||||
.canvas-node[data-shape=database],
|
||||
.canvas-node[data-shape=document],
|
||||
.canvas-node[data-shape=predefined-process],
|
||||
.canvas-node[data-shape=diamond] {
|
||||
--border-color: rgb(var(--canvas-color));
|
||||
--border-width: 3px;
|
||||
--box-shadow: none;
|
||||
}
|
||||
.reactive-node.is-focused,
|
||||
.is-focused.canvas-node[data-shape=database],
|
||||
.is-focused.canvas-node[data-shape=document],
|
||||
.is-focused.canvas-node[data-shape=predefined-process],
|
||||
.is-focused.canvas-node[data-shape=diamond],
|
||||
.reactive-node.is-selected,
|
||||
.is-selected.canvas-node[data-shape=database],
|
||||
.is-selected.canvas-node[data-shape=document],
|
||||
.is-selected.canvas-node[data-shape=predefined-process],
|
||||
.is-selected.canvas-node[data-shape=diamond] {
|
||||
--border-color: var(--color-accent);
|
||||
--border-width: 5px;
|
||||
--box-shadow: var(--shadow-border-accent);
|
||||
}
|
||||
.reactive-node.is-themed,
|
||||
.is-themed.canvas-node[data-shape=database],
|
||||
.is-themed.canvas-node[data-shape=document],
|
||||
.is-themed.canvas-node[data-shape=predefined-process],
|
||||
.is-themed.canvas-node[data-shape=diamond] {
|
||||
--border-color: rgba(var(--canvas-color), 0.7);
|
||||
}
|
||||
.reactive-node.is-themed.is-focused,
|
||||
.is-themed.is-focused.canvas-node[data-shape=database],
|
||||
.is-themed.is-focused.canvas-node[data-shape=document],
|
||||
.is-themed.is-focused.canvas-node[data-shape=predefined-process],
|
||||
.is-themed.is-focused.canvas-node[data-shape=diamond],
|
||||
.reactive-node.is-themed.is-selected,
|
||||
.is-themed.is-selected.canvas-node[data-shape=database],
|
||||
.is-themed.is-selected.canvas-node[data-shape=document],
|
||||
.is-themed.is-selected.canvas-node[data-shape=predefined-process],
|
||||
.is-themed.is-selected.canvas-node[data-shape=diamond] {
|
||||
--border-color: rgb(var(--canvas-color));
|
||||
--box-shadow: var(--shadow-border-themed);
|
||||
}
|
||||
.canvas-node[data-text-align=center] .markdown-preview-view {
|
||||
scrollbar-gutter: auto;
|
||||
}
|
||||
.canvas-node[data-text-align=center] .markdown-preview-view .markdown-preview-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.canvas-node[data-text-align=right] {
|
||||
text-align: right;
|
||||
}
|
||||
.canvas-node[data-shape] .canvas-node-container .markdown-preview-view.markdown-rendered {
|
||||
transform: unset;
|
||||
}
|
||||
.canvas-node[data-shape=pill] .canvas-node-container {
|
||||
border-radius: 5000px;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] {
|
||||
}
|
||||
.canvas-node[data-shape=diamond].is-focused,
|
||||
.canvas-node[data-shape=diamond].is-selected {
|
||||
border-radius: var(--radius-m);
|
||||
outline: 2px solid var(--color-accent);
|
||||
outline-offset: 5px;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] .canvas-node-container {
|
||||
border: none;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] .canvas-node-container:not(:has(.embed-iframe)) {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
}
|
||||
.canvas-node[data-shape=diamond] .canvas-node-container .canvas-node-placeholder::after {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
}
|
||||
.canvas-node[data-shape=diamond]::before {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: calc(var(--border-width) * -1);
|
||||
left: calc(var(--border-width) * -1);
|
||||
width: calc(100% + var(--border-width) * 2);
|
||||
height: calc(100% + var(--border-width) * 2);
|
||||
background-color: var(--border-color);
|
||||
}
|
||||
.canvas-node[data-shape=parallelogram] .canvas-node-container {
|
||||
transform: skewX(-20deg);
|
||||
backface-visibility: hidden;
|
||||
}
|
||||
.canvas-node[data-shape=parallelogram] .canvas-node-container .canvas-node-content .markdown-embed-content {
|
||||
transform: skewX(20deg);
|
||||
}
|
||||
.canvas-node[data-shape=circle] .canvas-node-container {
|
||||
border-radius: 50%;
|
||||
}
|
||||
.canvas-node[data-shape=circle] .canvas-node-container .markdown-preview-view {
|
||||
overflow-y: initial;
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container .canvas-node-content {
|
||||
padding: 0 10px;
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::before,
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::after {
|
||||
content: "";
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 0;
|
||||
height: 100%;
|
||||
border-left: var(--border-width) solid var(--border-color);
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::before {
|
||||
left: calc(10px - var(--border-width));
|
||||
}
|
||||
.canvas-node[data-shape=predefined-process] .canvas-node-container::after {
|
||||
right: calc(10px - var(--border-width));
|
||||
}
|
||||
.canvas-node[data-shape=document] {
|
||||
--border-width: 2.5px;
|
||||
filter: drop-shadow(0 var(--border-width) 0 var(--border-color)) drop-shadow(0 calc(var(--border-width) * -1) 0 var(--border-color));
|
||||
}
|
||||
.canvas-node[data-shape=document] .canvas-node-container {
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 75 45' preserveAspectRatio='none'%3E%3Cpath d='M75 0 75 39.375Q56.25 29.25 37.5 39.375 18.75 49.5 0 39.375L0 0Z' /%3E%3C/svg%3E");
|
||||
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 75 45' preserveAspectRatio='none'%3E%3Cpath d='M75 0 75 39.375Q56.25 29.25 37.5 39.375 18.75 49.5 0 39.375L0 0Z' /%3E%3C/svg%3E");
|
||||
mask-repeat: no-repeat;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
mask-size: 100%;
|
||||
-webkit-mask-size: 100%;
|
||||
border: var(--border-width) solid var(--border-color);
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
.canvas-node[data-shape=document].is-focused,
|
||||
.canvas-node[data-shape=document].is-selected {
|
||||
--border-width: 4px;
|
||||
}
|
||||
.canvas-node[data-shape=database] {
|
||||
}
|
||||
.canvas-node[data-shape=database] .canvas-node-container {
|
||||
border: var(--border-width) solid var(--border-color);
|
||||
border-bottom: 0;
|
||||
border-top: 0;
|
||||
border-radius: 0;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
.canvas-node[data-shape=database] .canvas-node-container .canvas-node-placeholder {
|
||||
transform: translateY(25px);
|
||||
}
|
||||
.canvas-node[data-shape=database]::before,
|
||||
.canvas-node[data-shape=database]::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
border: var(--border-width) solid var(--border-color);
|
||||
background-color: var(--background-primary);
|
||||
}
|
||||
.canvas-node[data-shape=database]::after {
|
||||
top: -25px;
|
||||
}
|
||||
.canvas-node[data-shape=database]::before {
|
||||
bottom: -25px;
|
||||
}
|
||||
.canvas-node[data-shape=database].is-themed .canvas-node-content {
|
||||
background-color: transparent;
|
||||
}
|
||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe)) .canvas-node-container,
|
||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::after,
|
||||
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::before {
|
||||
box-shadow: inset 0 0 0 1000px rgba(var(--canvas-color), 0.07) !important;
|
||||
}
|
||||
.canvas-node[data-shape=database] .canvas-node-content:not(:has(.embed-iframe)) {
|
||||
transform: translateY(20px);
|
||||
}
|
||||
.canvas-node[data-shape=database]:has(.embed-iframe)::after {
|
||||
z-index: -1;
|
||||
}
|
||||
.canvas-node[data-border=dashed] .canvas-node-container {
|
||||
box-shadow: none;
|
||||
border-style: dashed;
|
||||
}
|
||||
.canvas-node[data-border=dotted] .canvas-node-container {
|
||||
box-shadow: none;
|
||||
border-style: dotted;
|
||||
}
|
||||
.canvas-node[data-border=invisible] {
|
||||
box-shadow: none;
|
||||
}
|
||||
.canvas-node[data-border=invisible]:not(.is-focused):not(.is-selected) .canvas-node-container {
|
||||
border-color: transparent !important;
|
||||
}
|
||||
.canvas-node[data-border=invisible] .canvas-node-label {
|
||||
display: none;
|
||||
}
|
||||
.canvas-node[data-border=invisible] .canvas-node-container {
|
||||
background-color: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.canvas-node[data-border][data-shape=predefined-process] {
|
||||
--border-width: 2px;
|
||||
}
|
||||
.canvas-node[data-border][data-shape=predefined-process] .is-focused,
|
||||
.canvas-node[data-border][data-shape=predefined-process] .is-selected {
|
||||
--border-width: 2px;
|
||||
}
|
||||
.canvas-node[data-border=dashed][data-shape=predefined-process] .canvas-node-container::before,
|
||||
.canvas-node[data-border=dashed][data-shape=predefined-process] .canvas-node-container::after {
|
||||
border-left: var(--border-width) dashed var(--border-color);
|
||||
}
|
||||
.canvas-node[data-border=dotted][data-shape=predefined-process] .canvas-node-container::before,
|
||||
.canvas-node[data-border=dotted][data-shape=predefined-process] .canvas-node-container::after {
|
||||
border-left: var(--border-width) dotted var(--border-color);
|
||||
}
|
||||
.canvas-node[data-border][data-shape=document] .canvas-node-container {
|
||||
border-top: none;
|
||||
border-bottom: none;
|
||||
}
|
||||
.canvas-edges path[data-path=dotted] {
|
||||
stroke-dasharray: calc(3px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas-edges path[data-path=short-dashed] {
|
||||
stroke-dasharray: 9px;
|
||||
}
|
||||
.canvas-edges path[data-path=long-dashed] {
|
||||
stroke-dasharray: 18px;
|
||||
}
|
||||
.canvas-edges [data-arrow=triangle-outline] polygon,
|
||||
.canvas-edges [data-arrow=diamond-outline] polygon,
|
||||
.canvas-edges [data-arrow=circle-outline] polygon {
|
||||
fill: var(--canvas-background);
|
||||
stroke: rgb(var(--canvas-color));
|
||||
stroke-width: calc(3px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas-edges [data-arrow=thin-triangle] polygon {
|
||||
fill: transparent;
|
||||
stroke: rgb(var(--canvas-color));
|
||||
stroke-width: calc(4px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas.is-exporting {
|
||||
--zoom-multiplier: 1;
|
||||
}
|
||||
.canvas.is-exporting * {
|
||||
pointer-events: none !important;
|
||||
transition: none !important;
|
||||
}
|
||||
.canvas.is-exporting .collapse-button {
|
||||
display: none;
|
||||
}
|
||||
.canvas.is-exporting #watermark-ac {
|
||||
z-index: 9999999;
|
||||
position: absolute;
|
||||
}
|
||||
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas.is-exporting .canvas-node .canvas-group-label {
|
||||
left: 0;
|
||||
}
|
||||
.progress-bar-modal-ac {
|
||||
margin-top: 0.75em;
|
||||
}
|
||||
.progress-bar-modal-ac.error .setting-progress-bar {
|
||||
color: var(--color-error);
|
||||
}
|
||||
.canvas-wrapper[data-disable-font-size-relative-to-zoom=true] {
|
||||
--zoom-multiplier: 1 !important;
|
||||
}
|
||||
.canvas-wrapper.mod-readonly .canvas-controls .canvas-control-group:nth-child(3),
|
||||
.canvas-wrapper.mod-readonly .canvas-card-menu {
|
||||
display: none;
|
||||
}
|
||||
.canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background {
|
||||
visibility: hidden;
|
||||
}
|
||||
.collapse-button {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
transform-origin: bottom left;
|
||||
transform: translate(0, -100%) scale(var(--zoom-multiplier));
|
||||
border-radius: var(--radius-s);
|
||||
color: var(--text-muted);
|
||||
background-color: rgba(var(--canvas-color), 0.1);
|
||||
font-size: 1.5em;
|
||||
line-height: 1;
|
||||
pointer-events: initial;
|
||||
cursor: pointer;
|
||||
transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1);
|
||||
}
|
||||
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas-node .canvas-group-label {
|
||||
left: calc(40px * var(--zoom-multiplier));
|
||||
}
|
||||
.canvas-node[data-collapsed] .canvas-node-container {
|
||||
display: none;
|
||||
}
|
||||
.canvas-node[data-collapsed] .canvas-group-label {
|
||||
max-width: initial;
|
||||
}
|
||||
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container {
|
||||
display: block;
|
||||
opacity: 0.5;
|
||||
border-style: dashed;
|
||||
}
|
||||
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container .canvas-node-content {
|
||||
background-color: transparent;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer {
|
||||
pointer-events: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer .canvas-node-connection-point {
|
||||
display: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group)::after {
|
||||
all: unset;
|
||||
content: "";
|
||||
z-index: 100;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: max(10px, 100% - 50px * var(--zoom-multiplier) * 2);
|
||||
height: max(10px, 100% - 50px * var(--zoom-multiplier) * 2);
|
||||
transform: translate(-50%, -50%);
|
||||
border-radius: var(--radius-m);
|
||||
outline: calc(4px * var(--zoom-multiplier)) dashed hsla(var(--color-accent-hsl), 0.5);
|
||||
}
|
||||
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group).hovering-floating-edge-zone::after {
|
||||
outline-color: var(--color-accent);
|
||||
outline-style: solid;
|
||||
background-color: hsla(var(--color-accent-hsl), 0.1);
|
||||
}
|
||||
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-node:not(.is-focused) {
|
||||
filter: blur(5px);
|
||||
}
|
||||
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-edges > g:not(.is-focused) {
|
||||
filter: blur(5px);
|
||||
}
|
||||
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-path-label-wrapper > .canvas-path-label:not(.is-focused) {
|
||||
filter: blur(5px);
|
||||
}
|
||||
.canvas-wrapper.presentation-mode .canvas-controls {
|
||||
visibility: hidden;
|
||||
}
|
||||
.canvas-wrapper.presentation-mode .canvas-card-menu {
|
||||
visibility: hidden;
|
||||
}
|
||||
.canvas-wrapper:not(.presentation-mode) .canvas-node[data-is-start-node=true]::before {
|
||||
content: "Start";
|
||||
position: absolute;
|
||||
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
|
||||
right: 0;
|
||||
transform: translate(0, -100%) scale(var(--zoom-multiplier));
|
||||
transform-origin: bottom right;
|
||||
max-width: calc(100% / var(--zoom-multiplier));
|
||||
padding: var(--size-4-1) var(--size-4-2);
|
||||
font-size: 1em;
|
||||
border-radius: var(--radius-s);
|
||||
color: var(--color-green);
|
||||
background-color: rgba(var(--color-green-rgb), 0.1);
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true] {
|
||||
pointer-events: all;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) {
|
||||
pointer-events: none;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) .canvas-node-label {
|
||||
pointer-events: all;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true] .canvas-node-container {
|
||||
background-color: transparent;
|
||||
border-style: dashed;
|
||||
}
|
||||
.canvas-node[data-is-portal-loaded=true] .canvas-node-container .canvas-node-content {
|
||||
display: none;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer {
|
||||
pointer-events: none;
|
||||
cursor: inherit;
|
||||
}
|
||||
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer .canvas-node-connection-point {
|
||||
pointer-events: all;
|
||||
}
|
||||
2633
.obsidian/plugins/mermaid-tools/main.js
vendored
Normal file
2633
.obsidian/plugins/mermaid-tools/main.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
11
.obsidian/plugins/mermaid-tools/manifest.json
vendored
Normal file
11
.obsidian/plugins/mermaid-tools/manifest.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "mermaid-tools",
|
||||
"name": "Mermaid Tools",
|
||||
"version": "1.3.0",
|
||||
"minAppVersion": "1.4.0",
|
||||
"description": "Improved Mermaid.js experience for Obsidian: visual toolbar with common elements & more",
|
||||
"author": "dartungar",
|
||||
"authorUrl": "https://dartungar.com",
|
||||
"fundingUrl": "https://www.paypal.com/paypalme/dartungar",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
149
.obsidian/plugins/mermaid-tools/styles.css
vendored
Normal file
149
.obsidian/plugins/mermaid-tools/styles.css
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
.mermaid-toolbar-container, .mermaid-toolbar-container * {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-top-row {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-elements-container {
|
||||
padding-top: 1rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-element {
|
||||
font-size: var(--font-ui-small);
|
||||
cursor: pointer;
|
||||
padding: 2px 2px 2px 5px;
|
||||
border-radius: 3px;
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
.mermaid-toolbar-element:hover {
|
||||
background-color: var(--interactive-hover);
|
||||
}
|
||||
|
||||
.mermaid-tools-element-category-header::before {
|
||||
content: "▼ ";
|
||||
font-size: 70%;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.mermaid-tools-element-category-header.collapsed::before {
|
||||
content: "▶ ";
|
||||
font-size: 70%;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
.mermaid-tools-element-container {
|
||||
padding-top: 6px;
|
||||
border-bottom: var(--border-width) solid var(--color-base-35);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-element-modal > div {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-element-modal label {
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
/* Custom Category Management Styles */
|
||||
.mermaid-tools-category-management {
|
||||
margin-bottom: 2rem;
|
||||
padding: 1rem;
|
||||
border: 1px solid var(--color-base-25);
|
||||
border-radius: 8px;
|
||||
background-color: var(--color-base-00);
|
||||
}
|
||||
|
||||
.mermaid-tools-category-management h3 {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.mermaid-tools-category-management button.mod-cta {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Edit Category Modal Styles */
|
||||
.mermaid-tools-edit-category-modal {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item {
|
||||
padding: 8px 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item-info {
|
||||
flex-grow: 1;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item-name {
|
||||
font-weight: 600;
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal .setting-item-description {
|
||||
color: var(--text-muted);
|
||||
font-size: var(--font-ui-smaller);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal input,
|
||||
.mermaid-tools-edit-category-modal textarea {
|
||||
width: 100%;
|
||||
padding: 4px 8px;
|
||||
border: 1px solid var(--color-base-30);
|
||||
border-radius: 4px;
|
||||
background-color: var(--color-base-00);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.mermaid-tools-edit-category-modal input:focus,
|
||||
.mermaid-tools-edit-category-modal textarea:focus {
|
||||
border-color: var(--color-accent);
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 2px var(--color-accent-2);
|
||||
}
|
||||
|
||||
.modal-button-container {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
margin-top: 20px;
|
||||
padding-top: 16px;
|
||||
border-top: 1px solid var(--color-base-25);
|
||||
}
|
||||
|
||||
.modal-button-container button {
|
||||
padding: 6px 16px;
|
||||
border: 1px solid var(--color-base-30);
|
||||
border-radius: 4px;
|
||||
background-color: var(--color-base-10);
|
||||
color: var(--text-normal);
|
||||
cursor: pointer;
|
||||
font-size: var(--font-ui-small);
|
||||
}
|
||||
|
||||
.modal-button-container button:hover {
|
||||
background-color: var(--color-base-20);
|
||||
}
|
||||
|
||||
.modal-button-container button.mod-cta {
|
||||
background-color: var(--color-accent);
|
||||
color: var(--text-on-accent);
|
||||
border-color: var(--color-accent);
|
||||
}
|
||||
|
||||
.modal-button-container button.mod-cta:hover {
|
||||
background-color: var(--color-accent-hover);
|
||||
}
|
||||
820
.obsidian/plugins/obsidian-excalidraw-plugin/data.json
vendored
Normal file
820
.obsidian/plugins/obsidian-excalidraw-plugin/data.json
vendored
Normal file
@@ -0,0 +1,820 @@
|
||||
{
|
||||
"copyLinkToElemenetAnchorTo100": false,
|
||||
"copyFrameLinkByName": false,
|
||||
"disableDoubleClickTextEditing": false,
|
||||
"folder": "Excalidraw",
|
||||
"cropFolder": "",
|
||||
"annotateFolder": "",
|
||||
"embedUseExcalidrawFolder": false,
|
||||
"templateFilePath": "Excalidraw/Template.excalidraw",
|
||||
"scriptFolderPath": "Excalidraw/Scripts",
|
||||
"fontAssetsPath": "Excalidraw/CJK Fonts",
|
||||
"loadChineseFonts": false,
|
||||
"loadJapaneseFonts": false,
|
||||
"loadKoreanFonts": false,
|
||||
"compress": true,
|
||||
"decompressForMDView": false,
|
||||
"onceOffCompressFlagReset": true,
|
||||
"onceOffGPTVersionReset": true,
|
||||
"autosave": true,
|
||||
"autosaveIntervalDesktop": 60000,
|
||||
"autosaveIntervalMobile": 30000,
|
||||
"drawingFilenamePrefix": "Drawing ",
|
||||
"drawingEmbedPrefixWithFilename": true,
|
||||
"drawingFilnameEmbedPostfix": " ",
|
||||
"drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
|
||||
"useExcalidrawExtension": true,
|
||||
"cropSuffix": "",
|
||||
"cropPrefix": "cropped_",
|
||||
"annotateSuffix": "",
|
||||
"annotatePrefix": "annotated_",
|
||||
"annotatePreserveSize": false,
|
||||
"previewImageType": "SVG",
|
||||
"renderingConcurrency": 3,
|
||||
"allowImageCache": true,
|
||||
"allowImageCacheInScene": true,
|
||||
"displayExportedImageIfAvailable": false,
|
||||
"previewMatchObsidianTheme": false,
|
||||
"width": "400",
|
||||
"height": "",
|
||||
"overrideObsidianFontSize": false,
|
||||
"dynamicStyling": "colorful",
|
||||
"isLeftHanded": false,
|
||||
"desktopUIMode": "tray",
|
||||
"tabletUIMode": "compact",
|
||||
"phoneUIMode": "mobile",
|
||||
"iframeMatchExcalidrawTheme": true,
|
||||
"matchTheme": false,
|
||||
"matchThemeAlways": false,
|
||||
"matchThemeTrigger": false,
|
||||
"defaultMode": "normal",
|
||||
"defaultPenMode": "never",
|
||||
"penModeDoubleTapEraser": true,
|
||||
"penModeSingleFingerPanning": true,
|
||||
"penModeCrosshairVisible": true,
|
||||
"panWithRightMouseButton": false,
|
||||
"renderImageInMarkdownReadingMode": false,
|
||||
"renderImageInHoverPreviewForMDNotes": false,
|
||||
"renderImageInMarkdownToPDF": false,
|
||||
"allowPinchZoom": false,
|
||||
"allowWheelZoom": false,
|
||||
"zoomToFitOnOpen": true,
|
||||
"zoomToFitOnResize": false,
|
||||
"zoomToFitMaxLevel": 2,
|
||||
"zoomStep": 0.05,
|
||||
"zoomMin": 0.1,
|
||||
"zoomMax": 30,
|
||||
"linkPrefix": "📍",
|
||||
"urlPrefix": "🌐",
|
||||
"parseTODO": false,
|
||||
"todo": "☐",
|
||||
"done": "🗹",
|
||||
"hoverPreviewWithoutCTRL": false,
|
||||
"linkOpacity": 1,
|
||||
"openInAdjacentPane": true,
|
||||
"showSecondOrderLinks": true,
|
||||
"focusOnFileTab": true,
|
||||
"openInMainWorkspace": true,
|
||||
"showLinkBrackets": false,
|
||||
"syncElementLinkWithText": false,
|
||||
"allowCtrlClick": true,
|
||||
"forceWrap": false,
|
||||
"pageTransclusionCharLimit": 200,
|
||||
"wordWrappingDefault": 0,
|
||||
"removeTransclusionQuoteSigns": true,
|
||||
"iframelyAllowed": true,
|
||||
"pngExportScale": 1,
|
||||
"exportWithTheme": true,
|
||||
"exportWithBackground": true,
|
||||
"exportPaddingSVG": 10,
|
||||
"exportEmbedScene": false,
|
||||
"keepInSync": false,
|
||||
"autoexportSVG": false,
|
||||
"autoexportPNG": false,
|
||||
"autoExportLightAndDark": false,
|
||||
"autoexportExcalidraw": false,
|
||||
"embedType": "excalidraw",
|
||||
"embedMarkdownCommentLinks": true,
|
||||
"embedWikiLink": true,
|
||||
"syncExcalidraw": false,
|
||||
"experimentalFileType": true,
|
||||
"experimentalFileTag": "✏️",
|
||||
"experimentalLivePreview": true,
|
||||
"fadeOutExcalidrawMarkup": false,
|
||||
"loadPropertySuggestions": false,
|
||||
"experimentalEnableFourthFont": false,
|
||||
"experimantalFourthFont": "Virgil",
|
||||
"addDummyTextElement": false,
|
||||
"zoteroCompatibility": false,
|
||||
"fieldSuggester": true,
|
||||
"compatibilityMode": false,
|
||||
"drawingOpenCount": 0,
|
||||
"library": "deprecated",
|
||||
"library2": {
|
||||
"type": "excalidrawlib",
|
||||
"version": 2,
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.20.6",
|
||||
"libraryItems": []
|
||||
},
|
||||
"imageElementNotice": true,
|
||||
"mdSVGwidth": 500,
|
||||
"mdSVGmaxHeight": 800,
|
||||
"mdFont": "Virgil",
|
||||
"mdFontColor": "Black",
|
||||
"mdBorderColor": "Black",
|
||||
"mdCSS": "",
|
||||
"scriptEngineSettings": {},
|
||||
"previousRelease": "2.20.6",
|
||||
"showReleaseNotes": true,
|
||||
"compareManifestToPluginVersion": true,
|
||||
"showNewVersionNotification": true,
|
||||
"latexBoilerplate": "\\color{blue}",
|
||||
"latexPreambleLocation": "preamble.sty",
|
||||
"taskboneEnabled": false,
|
||||
"taskboneAPIkey": "",
|
||||
"pinnedScripts": [],
|
||||
"sidepanelTabs": [],
|
||||
"customPens": [
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "highlighter",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#FFC47C",
|
||||
"backgroundColor": "#FFC47C",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"roughness": null,
|
||||
"penOptions": {
|
||||
"highlighter": true,
|
||||
"constantPressure": true,
|
||||
"hasOutline": true,
|
||||
"outlineWidth": 4,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "finetip",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#3E6F8D",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0.5,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"constantPressure": true,
|
||||
"options": {
|
||||
"smoothing": 0.4,
|
||||
"thinning": -0.5,
|
||||
"streamline": 0.4,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 5,
|
||||
"cap": false,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 5,
|
||||
"cap": false,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "fountain",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 2,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"smoothing": 0.2,
|
||||
"thinning": 0.6,
|
||||
"streamline": 0.2,
|
||||
"easing": "easeInOutSine",
|
||||
"start": {
|
||||
"taper": 150,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 1,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "marker",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#B83E3E",
|
||||
"backgroundColor": "#FF7C7C",
|
||||
"fillStyle": "dashed",
|
||||
"strokeWidth": 2,
|
||||
"roughness": 3,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": true,
|
||||
"hasOutline": true,
|
||||
"outlineWidth": 4,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "thick-thin",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#CECDCC",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": null,
|
||||
"penOptions": {
|
||||
"highlighter": true,
|
||||
"constantPressure": true,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"taper": 0,
|
||||
"cap": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "thin-thick-thin",
|
||||
"freedrawOnly": true,
|
||||
"strokeColor": "#CECDCC",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": null,
|
||||
"penOptions": {
|
||||
"highlighter": true,
|
||||
"constantPressure": true,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 1,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "linear",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": true,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": true,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"freedrawOnly": false,
|
||||
"strokeColor": "#000000",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "hachure",
|
||||
"strokeWidth": 0,
|
||||
"roughness": 0,
|
||||
"penOptions": {
|
||||
"highlighter": false,
|
||||
"constantPressure": false,
|
||||
"hasOutline": false,
|
||||
"outlineWidth": 1,
|
||||
"options": {
|
||||
"thinning": 0.6,
|
||||
"smoothing": 0.5,
|
||||
"streamline": 0.5,
|
||||
"easing": "easeOutSine",
|
||||
"start": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
},
|
||||
"end": {
|
||||
"cap": true,
|
||||
"taper": 0,
|
||||
"easing": "linear"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"numberOfCustomPens": 0,
|
||||
"pdfScale": 4,
|
||||
"pdfBorderBox": true,
|
||||
"pdfFrame": false,
|
||||
"pdfGapSize": 20,
|
||||
"pdfGroupPages": false,
|
||||
"pdfLockAfterImport": true,
|
||||
"pdfNumColumns": 1,
|
||||
"pdfNumRows": 1,
|
||||
"pdfDirection": "right",
|
||||
"pdfImportScale": 0.3,
|
||||
"gridSettings": {
|
||||
"DYNAMIC_COLOR": true,
|
||||
"COLOR": "#000000",
|
||||
"OPACITY": 50,
|
||||
"GRID_DIRECTION": {
|
||||
"horizontal": true,
|
||||
"vertical": true
|
||||
}
|
||||
},
|
||||
"laserSettings": {
|
||||
"DECAY_LENGTH": 50,
|
||||
"DECAY_TIME": 1000,
|
||||
"COLOR": "#ff0000"
|
||||
},
|
||||
"embeddableMarkdownDefaults": {
|
||||
"useObsidianDefaults": false,
|
||||
"backgroundMatchCanvas": false,
|
||||
"backgroundMatchElement": true,
|
||||
"backgroundColor": "#fff",
|
||||
"backgroundOpacity": 60,
|
||||
"borderMatchElement": true,
|
||||
"borderColor": "#fff",
|
||||
"borderOpacity": 0,
|
||||
"filenameVisible": false
|
||||
},
|
||||
"markdownNodeOneClickEditing": false,
|
||||
"canvasImmersiveEmbed": true,
|
||||
"startupScriptPath": "",
|
||||
"aiEnabled": true,
|
||||
"openAIAPIToken": "",
|
||||
"openAIDefaultTextModel": "gpt-5-mini",
|
||||
"openAIDefaultTextModelMaxTokens": 4096,
|
||||
"openAIDefaultVisionModel": "gpt-5-mini",
|
||||
"openAIDefaultImageGenerationModel": "gpt-image-1",
|
||||
"openAIURL": "https://api.openai.com/v1/chat/completions",
|
||||
"openAIImageGenerationURL": "https://api.openai.com/v1/images/generations",
|
||||
"openAIImageEditsURL": "https://api.openai.com/v1/images/edits",
|
||||
"openAIImageVariationURL": "https://api.openai.com/v1/images/variations",
|
||||
"modifierKeyConfig": {
|
||||
"Mac": {
|
||||
"LocalFileDragAction": {
|
||||
"defaultAction": "image-import",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
}
|
||||
]
|
||||
},
|
||||
"WebBrowserDragAction": {
|
||||
"defaultAction": "image-url",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
}
|
||||
]
|
||||
},
|
||||
"InternalDragAction": {
|
||||
"defaultAction": "link",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "image-fullsize"
|
||||
}
|
||||
]
|
||||
},
|
||||
"LinkClickAction": {
|
||||
"defaultAction": "new-tab",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "active-pane"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-tab"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-pane"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "popout-window"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "md-properties"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"Win": {
|
||||
"LocalFileDragAction": {
|
||||
"defaultAction": "image-import",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
}
|
||||
]
|
||||
},
|
||||
"WebBrowserDragAction": {
|
||||
"defaultAction": "image-url",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-url"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-import"
|
||||
}
|
||||
]
|
||||
},
|
||||
"InternalDragAction": {
|
||||
"defaultAction": "link",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "link"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "embeddable"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "image"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "image-fullsize"
|
||||
}
|
||||
]
|
||||
},
|
||||
"LinkClickAction": {
|
||||
"defaultAction": "new-tab",
|
||||
"rules": [
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": false,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "active-pane"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-tab"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "new-pane"
|
||||
},
|
||||
{
|
||||
"shift": true,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": true,
|
||||
"meta_ctrl": false,
|
||||
"result": "popout-window"
|
||||
},
|
||||
{
|
||||
"shift": false,
|
||||
"ctrl_cmd": true,
|
||||
"alt_opt": false,
|
||||
"meta_ctrl": true,
|
||||
"result": "md-properties"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"slidingPanesSupport": false,
|
||||
"areaZoomLimit": 1,
|
||||
"longPressDesktop": 500,
|
||||
"longPressMobile": 500,
|
||||
"doubleClickLinkOpenViewMode": true,
|
||||
"isDebugMode": false,
|
||||
"rank": "Bronze",
|
||||
"modifierKeyOverrides": [
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "Enter"
|
||||
},
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "k"
|
||||
},
|
||||
{
|
||||
"modifiers": [
|
||||
"Mod"
|
||||
],
|
||||
"key": "G"
|
||||
}
|
||||
],
|
||||
"showSplashscreen": true,
|
||||
"pdfSettings": {
|
||||
"pageSize": "A4",
|
||||
"pageOrientation": "portrait",
|
||||
"fitToPage": 1,
|
||||
"paperColor": "white",
|
||||
"customPaperColor": "#ffffff",
|
||||
"alignment": "center",
|
||||
"margin": "normal"
|
||||
},
|
||||
"disableContextMenu": false
|
||||
}
|
||||
10
.obsidian/plugins/obsidian-excalidraw-plugin/main.js
vendored
Normal file
10
.obsidian/plugins/obsidian-excalidraw-plugin/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
12
.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json
vendored
Normal file
12
.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "obsidian-excalidraw-plugin",
|
||||
"name": "Excalidraw",
|
||||
"version": "2.20.6",
|
||||
"minAppVersion": "1.5.7",
|
||||
"description": "Sketch Your Mind. An Obsidian plugin to edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
|
||||
"author": "Zsolt Viczian",
|
||||
"authorUrl": "https://excalidraw-obsidian.online",
|
||||
"fundingUrl": "https://ko-fi.com/zsolt",
|
||||
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
1
.obsidian/plugins/obsidian-excalidraw-plugin/styles.css
vendored
Normal file
1
.obsidian/plugins/obsidian-excalidraw-plugin/styles.css
vendored
Normal file
File diff suppressed because one or more lines are too long
55
.obsidian/workspace.json
vendored
55
.obsidian/workspace.json
vendored
@@ -13,12 +13,12 @@
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "questions/02-数据库/MyBatis核心原理.md",
|
||||
"file": "10-中间件/Java NIO核心原理.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "MyBatis核心原理"
|
||||
"title": "Java NIO核心原理"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -78,7 +78,7 @@
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300
|
||||
"width": 369.5
|
||||
},
|
||||
"right": {
|
||||
"id": "302ba9ccf0f34d23",
|
||||
@@ -94,7 +94,7 @@
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "questions/02-数据库/MyBatis核心原理.md",
|
||||
"file": "10-中间件/Java NIO核心原理.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
@@ -104,7 +104,7 @@
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "MyBatis核心原理 的反向链接列表"
|
||||
"title": "Java NIO核心原理 的反向链接列表"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -113,12 +113,12 @@
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "questions/02-数据库/MyBatis核心原理.md",
|
||||
"file": "10-中间件/Java NIO核心原理.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "MyBatis核心原理 的出链列表"
|
||||
"title": "Java NIO核心原理 的出链列表"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -156,13 +156,13 @@
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "questions/02-数据库/MyBatis核心原理.md",
|
||||
"file": "10-中间件/Java NIO核心原理.md",
|
||||
"followCursor": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "MyBatis核心原理 的大纲"
|
||||
"title": "Java NIO核心原理 的大纲"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -191,16 +191,30 @@
|
||||
"templates:插入模板": false,
|
||||
"command-palette:打开命令面板": false,
|
||||
"bases:新建数据库": false,
|
||||
"obsidian-git:Open Git source control": false
|
||||
"obsidian-git:Open Git source control": false,
|
||||
"obsidian-excalidraw-plugin:新建绘图文件": false,
|
||||
"mermaid-tools:Open Mermaid Toolbar": false
|
||||
}
|
||||
},
|
||||
"active": "16a7ce8de420dd10",
|
||||
"active": "fcbc762a80282002",
|
||||
"lastOpenFiles": [
|
||||
"10-中间件/Java NIO三大核心组件架构.excalidraw",
|
||||
"10-中间件/Netty核心原理.md",
|
||||
"10-中间件/Buffer核心属性.excalidraw",
|
||||
"10-中间件/零拷贝原理对比.excalidraw",
|
||||
"10-中间件/零拷贝原理对比.md",
|
||||
"10-中间件/Selector多路复用模型.excalidraw",
|
||||
"10-中间件/Selector多路复用模型.md",
|
||||
"10-中间件/Java NIO核心原理.md",
|
||||
"10-中间件/Buffer核心属性.md",
|
||||
"Java NIO三大核心组件架构.md",
|
||||
"10-中间件/Java NIO三大核心组件架构.md",
|
||||
"README.md",
|
||||
"00-项目概述/项目概述.md",
|
||||
"questions/02-数据库/MyBatis核心原理.md",
|
||||
"Obsidian技能使用指南.md",
|
||||
"Obsidian可视化插件指南.md",
|
||||
"10-中间件/Netty实战场景.md",
|
||||
"10-中间件/Java NIO核心原理.md",
|
||||
"10-中间件/Netty核心原理.md",
|
||||
"10-中间件",
|
||||
"16-LeetCode Hot 100/从前序与中序遍历序列构造二叉树.md",
|
||||
"16-LeetCode Hot 100/路径总和.md",
|
||||
@@ -214,23 +228,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/盛最多水的容器.md",
|
||||
"16-LeetCode Hot 100/三数之和.md",
|
||||
"16-LeetCode Hot 100/无重复字符的最长子串.md",
|
||||
"16-LeetCode Hot 100",
|
||||
"00-项目概述",
|
||||
"questions/15-简历面试",
|
||||
"questions/14-Web3与区块链",
|
||||
"12-面试技巧",
|
||||
"08-算法与数据结构",
|
||||
"questions/13-Golang语言",
|
||||
"questions/12-面试技巧",
|
||||
"questions/11-运维"
|
||||
"12-面试技巧"
|
||||
]
|
||||
}
|
||||
93
10-中间件/Buffer核心属性.md
Normal file
93
10-中间件/Buffer核心属性.md
Normal file
@@ -0,0 +1,93 @@
|
||||
---
|
||||
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
|
||||
Buffer 核心属性与操作方法 ^title
|
||||
|
||||
Buffer 内存布局 ^8JjCGz6b
|
||||
|
||||
已处理数据 ^875zBsDl
|
||||
|
||||
可读/写数据 ^cipaXLtw
|
||||
|
||||
不可访问 ^Ncptto5V
|
||||
|
||||
mark ^1ryRw0Uu
|
||||
|
||||
position ^S6OCIPfM
|
||||
|
||||
核心操作方法 ^lg23asBD
|
||||
|
||||
mark「」
|
||||
标记当前 position 位置 ^method1
|
||||
|
||||
reset「」
|
||||
恢复到 mark 位置 ^method2
|
||||
|
||||
clear「」
|
||||
position=0, limit=capacity ^method3
|
||||
|
||||
flip「」
|
||||
limit=position, position=0 ^method4
|
||||
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
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
|
||||
```
|
||||
%%
|
||||
678
10-中间件/Java NIO三大核心组件架构.excalidraw
Normal file
678
10-中间件/Java NIO三大核心组件架构.excalidraw
Normal file
@@ -0,0 +1,678 @@
|
||||
{
|
||||
"type": "excalidraw",
|
||||
"version": 2,
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.20.6",
|
||||
"elements": [
|
||||
{
|
||||
"id": "title",
|
||||
"type": "text",
|
||||
"x": 400,
|
||||
"y": 30,
|
||||
"width": 306.87994384765625,
|
||||
"height": 35,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1e40af",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 1,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "Java NIO 三大核心组件",
|
||||
"fontSize": 28,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "Java NIO 三大核心组件",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 934674734,
|
||||
"index": "a0",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "channel-box",
|
||||
"type": "rectangle",
|
||||
"x": 150,
|
||||
"y": 150,
|
||||
"width": 220,
|
||||
"height": 140,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1971c2",
|
||||
"backgroundColor": "#a5d8ff",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"seed": 2,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"versionNonce": 1200124082,
|
||||
"index": "a1",
|
||||
"frameId": null,
|
||||
"hasTextLink": false
|
||||
},
|
||||
{
|
||||
"id": "WUWQQFAl",
|
||||
"type": "text",
|
||||
"x": 215,
|
||||
"y": 165,
|
||||
"width": 86.06393432617188,
|
||||
"height": 30,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1864ab",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 3,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "Channel",
|
||||
"fontSize": 24,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "Channel",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 670673774,
|
||||
"index": "a2",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "QFgWpovs",
|
||||
"type": "text",
|
||||
"x": 160,
|
||||
"y": 210.17819684651062,
|
||||
"width": 80,
|
||||
"height": 60,
|
||||
"angle": 0,
|
||||
"strokeColor": "#374151",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 4,
|
||||
"version": 3,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940885556,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "数据通道\n双向数据流\n非阻塞I/O",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "数据通道\n双向数据流\n非阻塞I/O",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 1563719794,
|
||||
"index": "a3",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "buffer-box",
|
||||
"type": "rectangle",
|
||||
"x": 830,
|
||||
"y": 150,
|
||||
"width": 220,
|
||||
"height": 140,
|
||||
"angle": 0,
|
||||
"strokeColor": "#2f9e44",
|
||||
"backgroundColor": "#b2f2bb",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"seed": 5,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"versionNonce": 516820398,
|
||||
"index": "a4",
|
||||
"frameId": null,
|
||||
"hasTextLink": false
|
||||
},
|
||||
{
|
||||
"id": "HHe1ugZH",
|
||||
"type": "text",
|
||||
"x": 895,
|
||||
"y": 165,
|
||||
"width": 75.86393737792969,
|
||||
"height": 30,
|
||||
"angle": 0,
|
||||
"strokeColor": "#2b8a3e",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 6,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "Buffer",
|
||||
"fontSize": 24,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "Buffer",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 119893042,
|
||||
"index": "a5",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "7Gq30uCz",
|
||||
"type": "text",
|
||||
"x": 840,
|
||||
"y": 210,
|
||||
"width": 64,
|
||||
"height": 60,
|
||||
"angle": 0,
|
||||
"strokeColor": "#374151",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 7,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "数据容器\n数据存储\n读写切换",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "数据容器\n数据存储\n读写切换",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 2036082670,
|
||||
"index": "a6",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "selector-box",
|
||||
"type": "rectangle",
|
||||
"x": 490,
|
||||
"y": 450,
|
||||
"width": 220,
|
||||
"height": 140,
|
||||
"angle": 0,
|
||||
"strokeColor": "#f59e0b",
|
||||
"backgroundColor": "#ffd8a8",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": {
|
||||
"type": 3
|
||||
},
|
||||
"seed": 8,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"versionNonce": 2009929202,
|
||||
"index": "a7",
|
||||
"frameId": null,
|
||||
"hasTextLink": false
|
||||
},
|
||||
{
|
||||
"id": "QB6vfwLt",
|
||||
"type": "text",
|
||||
"x": 545,
|
||||
"y": 465,
|
||||
"width": 95.75991821289062,
|
||||
"height": 30,
|
||||
"angle": 0,
|
||||
"strokeColor": "#e67700",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 9,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "Selector",
|
||||
"fontSize": 24,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "Selector",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 128776750,
|
||||
"index": "a8",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "1NOeMBmL",
|
||||
"type": "text",
|
||||
"x": 500,
|
||||
"y": 510,
|
||||
"width": 128,
|
||||
"height": 60,
|
||||
"angle": 0,
|
||||
"strokeColor": "#374151",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 10,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "多路复用器\n事件监听\n单线程管理多连接",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "多路复用器\n事件监听\n单线程管理多连接",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 1364821938,
|
||||
"index": "a9",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "arrow-channel-buffer",
|
||||
"type": "arrow",
|
||||
"x": 370,
|
||||
"y": 220,
|
||||
"width": 450,
|
||||
"height": 0,
|
||||
"angle": 0,
|
||||
"strokeColor": "#3b82f6",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": {
|
||||
"type": 2
|
||||
},
|
||||
"seed": 11,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
450,
|
||||
0
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": "arrow",
|
||||
"versionNonce": 816415854,
|
||||
"index": "aA",
|
||||
"frameId": null,
|
||||
"hasTextLink": false
|
||||
},
|
||||
{
|
||||
"id": "y4PVGoYN",
|
||||
"type": "text",
|
||||
"x": 545,
|
||||
"y": 195,
|
||||
"width": 64,
|
||||
"height": 20,
|
||||
"angle": 0,
|
||||
"strokeColor": "#3b82f6",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 12,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "数据读写",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "数据读写",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 737263986,
|
||||
"index": "aB",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "arrow-channel-selector",
|
||||
"type": "arrow",
|
||||
"x": 260,
|
||||
"y": 290,
|
||||
"width": 260,
|
||||
"height": 150,
|
||||
"angle": 0,
|
||||
"strokeColor": "#f59e0b",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "dashed",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": {
|
||||
"type": 2
|
||||
},
|
||||
"seed": 13,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
260,
|
||||
150
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": "arrow",
|
||||
"versionNonce": 370853550,
|
||||
"index": "aC",
|
||||
"frameId": null,
|
||||
"hasTextLink": false
|
||||
},
|
||||
{
|
||||
"id": "WhZFanNR",
|
||||
"type": "text",
|
||||
"x": 345,
|
||||
"y": 350,
|
||||
"width": 64,
|
||||
"height": 20,
|
||||
"angle": 0,
|
||||
"strokeColor": "#f59e0b",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 14,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "注册事件",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "注册事件",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 48022322,
|
||||
"index": "aD",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
},
|
||||
{
|
||||
"id": "arrow-selector-channel",
|
||||
"type": "arrow",
|
||||
"x": 710,
|
||||
"y": 450,
|
||||
"width": 250,
|
||||
"height": 130,
|
||||
"angle": 0,
|
||||
"strokeColor": "#f59e0b",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": {
|
||||
"type": 2
|
||||
},
|
||||
"seed": 15,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
-250,
|
||||
-130
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": "arrow",
|
||||
"versionNonce": 950649070,
|
||||
"index": "aE",
|
||||
"frameId": null,
|
||||
"hasTextLink": false
|
||||
},
|
||||
{
|
||||
"id": "QItxiuFB",
|
||||
"type": "text",
|
||||
"x": 545,
|
||||
"y": 390,
|
||||
"width": 64,
|
||||
"height": 20,
|
||||
"angle": 0,
|
||||
"strokeColor": "#f59e0b",
|
||||
"backgroundColor": "transparent",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 2,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 1,
|
||||
"opacity": 100,
|
||||
"groupIds": [],
|
||||
"roundness": null,
|
||||
"seed": 16,
|
||||
"version": 2,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1772940884174,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"text": "事件分发",
|
||||
"fontSize": 16,
|
||||
"fontFamily": 5,
|
||||
"textAlign": "center",
|
||||
"verticalAlign": "middle",
|
||||
"containerId": null,
|
||||
"originalText": "事件分发",
|
||||
"autoResize": true,
|
||||
"lineHeight": 1.25,
|
||||
"versionNonce": 1350667506,
|
||||
"index": "aF",
|
||||
"frameId": null,
|
||||
"hasTextLink": false,
|
||||
"rawText": ""
|
||||
}
|
||||
],
|
||||
"appState": {
|
||||
"theme": "light",
|
||||
"viewBackgroundColor": "#ffffff",
|
||||
"currentItemStrokeColor": "#1e1e1e",
|
||||
"currentItemBackgroundColor": "transparent",
|
||||
"currentItemFillStyle": "solid",
|
||||
"currentItemStrokeWidth": 2,
|
||||
"currentItemStrokeStyle": "solid",
|
||||
"currentItemRoughness": 1,
|
||||
"currentItemOpacity": 100,
|
||||
"currentItemFontFamily": 5,
|
||||
"currentItemFontSize": 20,
|
||||
"currentItemTextAlign": "left",
|
||||
"currentItemStartArrowhead": null,
|
||||
"currentItemEndArrowhead": "arrow",
|
||||
"currentItemArrowType": "round",
|
||||
"currentItemFrameRole": null,
|
||||
"scrollX": -126.31591366168612,
|
||||
"scrollY": 37.49614013341022,
|
||||
"zoom": {
|
||||
"value": 1.271417
|
||||
},
|
||||
"currentItemRoundness": "round",
|
||||
"gridSize": 20,
|
||||
"gridStep": 5,
|
||||
"gridModeEnabled": false,
|
||||
"gridColor": {
|
||||
"Bold": "rgba(217, 217, 217, 0.5)",
|
||||
"Regular": "rgba(230, 230, 230, 0.5)"
|
||||
},
|
||||
"currentStrokeOptions": null,
|
||||
"frameRendering": {
|
||||
"enabled": true,
|
||||
"clip": true,
|
||||
"name": true,
|
||||
"outline": true,
|
||||
"markerName": true,
|
||||
"markerEnabled": true
|
||||
},
|
||||
"objectsSnapModeEnabled": false,
|
||||
"activeTool": {
|
||||
"type": "selection",
|
||||
"customType": null,
|
||||
"locked": false,
|
||||
"fromSelection": false,
|
||||
"lastActiveTool": null
|
||||
},
|
||||
"disableContextMenu": false
|
||||
},
|
||||
"files": {}
|
||||
}
|
||||
@@ -84,28 +84,7 @@ while (true) {
|
||||
---
|
||||
|
||||
### 2. NIO 三大核心组件
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────┐
|
||||
│ Java NIO 架构 │
|
||||
├────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────┐ ┌─────────┐ │
|
||||
│ │Channel │◄──►│ Buffer │ │
|
||||
│ └────┬────┘ └─────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────┐ │
|
||||
│ │Selector │ │
|
||||
│ │(多路复用)│ │
|
||||
│ └─────────┘ │
|
||||
│ │
|
||||
└────────────────────────────────────────┘
|
||||
|
||||
Channel: 数据通道(双向)
|
||||
Buffer: 数据容器
|
||||
Selector: 多路复用器
|
||||
```
|
||||
![[Java NIO三大核心组件架构.excalidraw]]
|
||||
|
||||
#### **核心组件关系**
|
||||
|
||||
@@ -137,29 +116,7 @@ buffer.clear();
|
||||
|
||||
#### **工作原理**
|
||||
|
||||
```
|
||||
Selector 多路复用模型:
|
||||
|
||||
┌──────────────────────────────────┐
|
||||
│ Selector │
|
||||
│ │
|
||||
│ select() - 阻塞等待就绪事件 │
|
||||
│ │
|
||||
│ ┌────┐ ┌────┐ ┌────┐ │
|
||||
│ │Ch1 │ │Ch2 │ │Ch3 │ ... │
|
||||
│ │就绪│ │就绪│ │就绪│ │
|
||||
│ └────┘ └────┘ └────┘ │
|
||||
└──────────────────────────────────┘
|
||||
▲
|
||||
│ one thread
|
||||
│
|
||||
┌─────────┴──────────┐
|
||||
│ Event Loop │
|
||||
│ - select() │
|
||||
│ - process() │
|
||||
│ - repeat │
|
||||
└────────────────────┘
|
||||
```
|
||||
![[Selector多路复用模型]]
|
||||
|
||||
#### **SelectionKey 事件类型**
|
||||
|
||||
@@ -307,25 +264,7 @@ sourceChannel.transferTo(0, sourceChannel.size(), destChannel);
|
||||
|
||||
#### **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 +378,7 @@ if (bytesWritten == 0) {
|
||||
|
||||
#### **传统 I/O vs 零拷贝**
|
||||
|
||||
```
|
||||
传统 I/O(4 次拷贝,4 次上下文切换):
|
||||
1. 磁盘 → 内核缓冲区 (DMA)
|
||||
2. 内核缓冲区 → 用户缓冲区 (CPU)
|
||||
3. 用户缓冲区 → Socket 缓冲区 (CPU)
|
||||
4. Socket 缓冲区 → 网卡 (DMA)
|
||||
|
||||
零拷贝(2 次拷贝,2 次上下文切换):
|
||||
1. 磁盘 → 内核缓冲区 (DMA)
|
||||
2. 内核缓冲区 → 网卡 (DMA)
|
||||
```
|
||||
![[零拷贝原理对比]]
|
||||
|
||||
#### **transferTo 实现**
|
||||
|
||||
|
||||
91
10-中间件/Selector多路复用模型.md
Normal file
91
10-中间件/Selector多路复用模型.md
Normal file
@@ -0,0 +1,91 @@
|
||||
---
|
||||
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
|
||||
Selector 多路复用模型 ^title
|
||||
|
||||
Selector
|
||||
select「」等待 ^PQ5TCqR4
|
||||
|
||||
Channel1
|
||||
就绪 ^K7clAQPy
|
||||
|
||||
Channel2
|
||||
就绪 ^TB56AkxD
|
||||
|
||||
Channel3
|
||||
就绪 ^n6T3kYLo
|
||||
|
||||
... ^QZYyxIMx
|
||||
|
||||
Event Loop ^p9IOsECm
|
||||
|
||||
• select「」 - 等待就绪事件
|
||||
• process「」 - 处理事件
|
||||
• repeat - 循环执行 ^PjLUBcm9
|
||||
|
||||
单线程管理 ^9bR9jOTv
|
||||
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebR4ABm0ANho6IIR9BA4oZm4AbXAwUDBSiBJuaDVgtNLIWERKqCwoWrLMbgB2BIT+MphuAGZeosgKEnVuHgBOJOmARmnpgFYe
|
||||
|
||||
QemeZc6ADnm+yEkEQmVpIeX9iGtlGrQRuohmKFI2AGsEAGE2fDZSSoBieYIAAsCVwADM2pBNLhsC9lM8hBxiJ9vr8JE9rMw4LhAjlIRAwYR8PgAMqwG7oQQefGPZ5vADqE0kUwutNeCDJMApDy+FQuCJOHHCeTQe1GEDY2OwagGop6F3hwjgAEliCLUPkALr84RIoXMdUcITE1kIBDEbhi+6MFjsLhoPjiwjMAAiGWaFrQYIIYQuml1xAAosEsjl
|
||||
|
||||
1VqLkI4MRcB7LZ1OjMQclOssVoMLkQOC9uEaTeLvrDzdxvfhfeLmphWhISRlsFAfqhAFiagHvYwCwmoAKV0AhFaAaPV8WDOFASYQjOJeNsLgOcgAxXD6Imy1DnCstACCRGU9vQYhyTHxNqg5gI6+OW4g8+IxBqFz0OVwhCFpFVueN+AuP2OD4IABUWpVa8E9aNq2na9viuBCA2ABK4QjmOTxCAgmYPggAASRwnNWqDzPEy7WkwrCcAAcpwYiWsky
|
||||
|
||||
TLMsKbLIMQIXA+xBYJUuAJP25BZM+aB5m+4qSKEv5VgAMg+OZej6SHiuQFCCVhEAQEUAC+fQlGUFQSGEgENqQzi3lEKG/BcDRjhAgT1lc17ih0aDDHc/SWokFzjMQkxyvKfEYacDrbHZkAWWOvkPE87Ioj8/xgmmCAJJo+LQrCiqIsiXxhRIfxgulgyaBCk5EqS5ImVSfLimyDJMkMrLBW8nLcoVFo6n4kj6uqVplJKMIykMgUJSqaoFNqUkBk13
|
||||
|
||||
CqWUxlDKMynFWanq8BcNqEVujr3M6brBHG4llpJ9z+olwaZNkuR9ZG0axsWooJkmCQ0emyHZi++b3IWbwzaW5b4baxGkWO8w/Z0ySLNsswMUizESLg8zsXOCBcagPEXPxzCySJd0bWESkqU6M0PHW2nOP6HRGfAJlmVEHDXEgFzWagyTDBci7zECeFlM5rnjoFhzHF5qBA+K/ncIFJUfMlaLoH8CApt0bF+jCcIIkioUixAaVgsQ2y4Ns/a5dVBW
|
||||
|
||||
8nVxWVQgjIucyDoVXSHL5ZUtX4gKjXCpa75Sh1bkKgiPXhv19xy8QQ1oCN9RE+NdSTfcYRnagGbivNdosk6rruuHr1bWUO1IntoaHWgEbilGMbrdhF3TMmqY3QWon3bxj1sEWL0SXNBF2iRHBkaKyQbNM2zbDsS1qSDVOXDwkOcTNcN8QJLTI2JqBJ+jRQjeUWMAAoAIrLN+7wAI5QUC+Jjeif6U9wbdM5A9PJIFLMm9hyw4QmnQd0C/0LMmPcHJ
|
||||
|
||||
5WFURcfO3GbIXC/84sEw9FijLBK8t/7onIBwLEOIDqa2JNrK2usaQGyNqzV+QVzaII0sg+qgp7aikdu1WAlp3L3G6qqD29U9QENhq+U04d6JRwbpwWOy145rUTnXcUqcgwhgOlQnOJ187zELsXNMtFbpT1HlXGuJZuH3ErHJACCAgKkAADrQJxoAGAZACwDIASW9ACh+v2Qcw5RxTAwVOKAs55z4EXCfaAa4Nxnh3M0QyzDSCHncCeTclQLxXgpu
|
||||
|
||||
KPS95Hwwxka1Ugn4OA/j/DWHGPxNGaVUVAPRRjwKQTYDBVg5i0AIWTpALMaF36WlwvXD6HAm4t2wgsLuywgTTFpk6PuLFBhD2hiPehY9EYT3LqjfJplKCyUqApUoIdiiY0qNgfiHAhT4HmHjNgBMKyBwkCTPmh8bLLECouGYF8yqii2fDYpaBuhfzJhSAWBsFb/EWJ0eY2BB7S3it7a5qVcDLFVuleBeUuQ62pL/Uqxs2FlEFtgykuCBoNV9thIh
|
||||
|
||||
0oSEu3FBQ3qWdPZlG9tC/20AVkRwmgwmaDjo6sNNnHVaCB85Jz9AGdOAijpCLzuHURiYi5XRLpIsuKM6EPTKE9Lhm0ykLUqd9dYbc7lAkGBOJpTF+64B3pODi7SK7w3HsJXp08JKz1KPPdS6AADSnRsD4FXMvReAxCaNH3lWfEVNxUOMXMMBxl8uhxDWOsQYPB6k31EYsI5nMsKMzOeTfmAKhaohudsZIQJcAxSebLAMrz0AYmgdiXErQcoIMtjg
|
||||
|
||||
/5+tzZoKvhg0FGbwVZq9sIfBBoHbijanC+mZCyhIsESWxK0LwkCGmkfflMdiXsNJeShRKcqX8LDLS+4udTozUZZda6bLHqqpbRAHltc+UrktRId40zZnzE0YARh1ABXfiYnIZjvoSvuFYmxC5uAOKUT4lxB09xlK8ceZxfiSABPxMEgyYTOn3A/P4GJK70BrusBu7de6v4ZKyXBbgeTbpFN9SUzYHbPrNzHJ0IEmweDbEOZK0G6B3ltM/Vyg4yqo
|
||||
|
||||
CT3kUur2gzYnoBGWAMZWqsZTKA0EHgCylmKOxaZZJ6yrIXtOeKHZPN7iOoOezY5qA+P3G/qgS55t41K1ufcx5PDQEvIgaLd5nzsrikJOm35SDi0gtQfs2a2b2Rgp5AZyAttoUtUgFW522Fa2QHrcOtFg1aGYr3ji4OeKuiIcWgxDhZLeVvX7btQdmcNSosgKOkRYiWUSMjjOjlc6F1kdC5AQlFSvqkIWPMcV4rgZSpYqkOVUMCOVzKAjJGqqZ6jI
|
||||
|
||||
xstLG34ABC1FVwvEwC6XeHGlFWqPgkW1nUHXGYTNoBm99BjrDTNMc+RcfWYW4P63m5yArBrkwCcNkbo3KeeXGtT0AoEwJTd88z1tg25uBQIA2p2IWNrLc1WFDn5hOYgC5lF1Cfa0LnWHGax6yhZcu+UILvbyNhbThFhtZRYsMvi1OpL3LZ1fu5dXZ66X+m9dXeu5jIH91Dkg6KP7kBT1znPWgS9TjTyTNve496D7DVPokP4yy9x32hI6YRiUkTf3
|
||||
|
||||
4CGZjpj+AeA47A9BWCOTUDQfZbBhbopSkeIFTl0UIIgTzDbokDBjEcOXE6Ph9nlWiPdJVRyilUlKP/vkhq8ZjXJlY/wIMVj3XzXoDWStvrJzBP2QdO7sYxn5hYfuBzaX4nApSZk3/UNqUFMPJAbtxK62NPbC+Wmn5NVbuGZzcZ/N13C0WaKndu25bCGVqdvCxzXU3aUNc1Z9zBfUCeexYMXFU1w7TH84DlaCdF0ZYgLw6lQ73t0rHfGJl4jS7Jek
|
||||
|
||||
UjgpKOQv9Ky4KofPBKK+4okVzX6sdeKq6TVo36r6tzwmRIDgyRvyDBeAATSEmwB3JlesbNQNsBD/GhtORG8sbQ9TFhisGGmQYqZ5tcyW5Ji7j/KZm8OtvMJtlGtHrGrHvtomkdnAknjdpZpguyBdl2mnmZtnmdpCvdhWt+sXjWmXkqBXv3o2jQjXt9m2nKK3ugZAO3pwp3v0j3hDpXhANDuOrDqyvDgUojhzmln0kZFRhAIBjMkEIMELtpqYvjth
|
||||
|
||||
ITgSIOGenYheoIVWNelTruDTv9kwHTqoYzi+szmUKzkwBVu+Fzl+DzkISIbMuIRwLuukiLtkvBKQIhDBuhHBjLg/u9PLshpaIyjsN3MkCvtKtMOvtxBPlIMRqRgISbjJEITRnRvvugMvAAFqn4wCYDKgACybGo0PWB8PGcoz2dMT+4owmvAgw2gCQvuSw8wPAz2DSv+HkbhEcDiIea2+2fwP+yuN8UBYCSU4eCah2yaCB2mWsWBqeV26eQKtBKBV
|
||||
|
||||
UYxyB1mtCtmEoBBpCRBUYJBUWH2zaYRP2PhNBJm3aHeaOlK4W+0femxA+cWw+CWo+COKWYR/BaqoO9QQh2gbxuOh6UwshxOti9iyhUAOh241O+4WhR49OlOuhl4+hkAhhT4uuJhUSf6ckbx2gdhmSoujhzhkurhgeOEHhmh5Sc+ZODMA2Kuc22G0qq4IRnKeu4RBuJGtWfaVmpuckcRDWakWMCAjAOQ3wko9uZqxMXGLut+Wy2yi2fuzMxmopf+W
|
||||
|
||||
EJJAaFybR/RSs+qgwuAxYMavR62xA0U6UWmJ6oxemmaueGBgK6CwaSBxpVeUKixj2Jez2ax7srB6KHmowAcjuDePmTe46GCAO0x9BwWjBJx4OZxkW2cI6wiMO1xcOUiG+siqOURnhjcCuBcNM6GCQ9+gRLEzW1Jc61WPS2+m0Fu9GlQcA0wyoAA8swIGO8PoFfk0HkfcFTJRGKWgI/MNlMdhGKtoImPfIkLRDwAOZRAEY0YHm6toC0UAdJoqSlKL
|
||||
|
||||
MsGCIMMQNgLKjttAeAkqXAUMXiIgXMZaTMYbBnuaTuXrHnjZraYQa7MQcihcWQZ9hQTsVQdhNwQwCwgFiSkcQmWDnwiGZDjFhGRwVGVwTGaEXwVPoGcunJIGNyVAKgBfpKB8dIQvpOPISTooWTv8YCRAK4neh4toQzugEzoEizoOCEkYfCZWqYdEuYWbpBQdDBWwHBcLuiQ4VBk4f0oUjiVzHiQSi+USUuKhnRLRF7uUM0mDO8DmWEXmYblPMbhR
|
||||
|
||||
jEWbmyXvlbhIIvAAFZCQACqzW2A+gwRAp9ZlqIpjS9w9ijkJRGedE45JcaGSwgwKuyYMpR8nQ458pq2IBIaM5SsnRvuEMGpqm65gxsCW5IxumKeyBgsaBBxJpFshpRau5CxNeSx9mdpL2b215bmTaX295DKTCiZRKkVdBwO0+QZX5GcP5bBf58+zK0Z7K4+IFciH5LxZugARASoBJL1h6KoDOCoBGK7qADRcoAG9ymiLVcAzwYgBoHVXVgAIJqAB
|
||||
|
||||
gLgNUNagIEIgLGJ1agIAFX6gA9c6ADmRoADIR8FYu4BSFM4KFfx4FGFwQYIqaOFYJGFBFb6xFH6ZF36FFSJlQLVbVKSuiK1PVO6c1HAw1o1woE1qAM1v1LVi1IQ0FXVG1O1aJEGYuEuyWUunFsuuV2W3hDoNRaGWyhRFJLEXWZWw8sZVWERjJzxAyclrJRZCRlwpAzwFAzg6ggQuAx5ORjuNNdNru4mEmHuqAIIeyHZomTRIILlQabl62KpapLNU
|
||||
|
||||
IKme2/lmIm5l1+pIVfyu54VxmT5BaMVOeUtpkpa+eD2RexC55iK5eV5YZ6V5B6odejuPAjeocD5vu+x6uhVYF20A635rB7BlVI+06dxtVtJjxMlZQcAbAD4oZrphQdQpQvk0drp0WYAkdUdMdYAIIcdow0W86oQUAnw+g84Mg5oi8odeIwFtJjwOIUAzWjED4ygRNkA2QxAldSI1dtdQU5dq4tNbAFAhwzNLd9d7ddN3dWMOIHN/mvF4BPkiYtRy
|
||||
|
||||
wshGu0qgY4lHOklDJBZaMu+mq1N0wmgUE0wKl5Z349AdZFqit7QXQmGRRrZONQmxmQlAeXMA5zly2gawBocVy7REt6pK5mpsBAVx225Wt2BL9kxZpblFpOt8VBt+BRtqxF56xZtGdzpd5HOuxrcTtgWPaRVPC7tpVntFV50AFiWQFNJmYoFxx4FlQgAqsqAD9foANBegAhd7TV7VHqHXWLHVKGnV4XzoIAXUgmeLXUcO3U3j3Vs4t0/pmG87oBUN
|
||||
|
||||
0MMOMVw2YlsUoQcWyko0EleFVIq6+5URurL641gzTgL20lL2RFPFd7STiPm5r2W4clNAABq8A04GRAAGtkW6dfg2SfaKKIkCLhECD4wNtsI/PUp0OfUuJUfEGsJLGmBGkCH9M/h2bIbfVhPiX5JOaHqAe0YCBk4RSnDLTAXLUmoFcfUTgaaFarUZh2ZnlgkeTbHraeYbdWtAybZeWVWCPKsYTo7hgAOLVMZWIOl0O1aM2rT0+kvnlRy5Jno1Lg3x
|
||||
|
||||
Aj34bDDmHEMEsVYlu2nHYMl3HT0r/mTq9l1LEP1XGPo6xH8gsnDLMOfEOiBQ/Gk5LjoUcPnWFPPm8PeIcMNhwB3V3gPUiPPVUWskyMYmLPyNCiKPwYOKGOk2r20bgCeyXBwBwBkinTDRFDQCHBZCVAbinB9AMCEAIAUDNY5NrkeXKy6l6kwkiAprKjND6BkiybpMICZNtCYWksHTkuZC4sx74uKwbkFP0vYCMs5DMv6DTjFMq0s0Mu01MsUtUuoE
|
||||
|
||||
HmIs8tit8sStZ7/2p6itksUtQQ1M2kyu8tQD8vlkrEIoGHav8vTjIW/FsOGtys6sUsmsHoIV2QqviuZCyRnVcPH0OvyuZBwueL92d2D1E3utWuZCBhIg+td0hBD0d1UAYuyuquZChvfgcbezctGvWvyrqsUjhIPDYDPDEgOPcDOA8CdDlHJD+O1EDYL62VbAYvMDZtfD4Cn5dDJBjZXQbBf7TD3w/SDBzOQBGD0W1l+xRwECIQlIMxoapgW4Bv8v
|
||||
|
||||
qs9Pqi62JT0vwgkBnO8D2uLvEBkgICvNoWItrsZFsBMTBtRrBCu3OaRJ9EznzzNZfBYykDKDQgAAUtRQTvAoi1AL7z7SQywAAlPiDBMoMaDiJULew+2sL0GUWB6B2+5+z+xOzGwdJK28Hq4eJwIaEjgSGm/XUwM3QO/cNkEe+HAjQYUQFu+LqxRcNEii7kmR5WpBIUv8xcPoDiG8KQERFDPR+KIx6QMx4e5oMe/8xO3YCpckswCSNEnAHuwe9Erx
|
||||
|
||||
xg2UDCIeIwN+PRfgAi+xmze9THDeEII8AYAm47qliQw1ehwYCovWJ2vs5mFnauKZwp0pxXBO44MwPh58LuFWBkdkEIGjuACHASESOEMNIpCAIpEAA===
|
||||
```
|
||||
%%
|
||||
153
10-中间件/零拷贝原理对比.md
Normal file
153
10-中间件/零拷贝原理对比.md
Normal file
@@ -0,0 +1,153 @@
|
||||
---
|
||||
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
|
||||
零拷贝 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
|
||||
|
||||
零拷贝 vs 传统 I/O ^title
|
||||
|
||||
① DMA ^label1
|
||||
|
||||
② CPU ^label2
|
||||
|
||||
③ CPU ^label3
|
||||
|
||||
④ DMA ^label4
|
||||
|
||||
① DMA ^label5
|
||||
|
||||
② DMA ^label6
|
||||
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
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=
|
||||
```
|
||||
%%
|
||||
0
Java NIO三大核心组件架构.md
Normal file
0
Java NIO三大核心组件架构.md
Normal file
Reference in New Issue
Block a user