Skip to content

Commit 3ddeec0

Browse files
feat(packages): collapse tabs table (#58)
1 parent f588781 commit 3ddeec0

File tree

39 files changed

+2976
-2226
lines changed

39 files changed

+2976
-2226
lines changed

.github/workflows/deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ jobs:
1717
- uses: pnpm/action-setup@v4
1818
name: Install pnpm
1919
with:
20-
version: 9
20+
version: 10
2121
run_install: false
2222

2323
- uses: actions/setup-node@v4
2424
with:
25-
node-version: 20
25+
node-version: 22
2626
cache: pnpm
2727

2828
- name: Install dependencies

.github/workflows/pre-deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ jobs:
1717
- uses: pnpm/action-setup@v4
1818
name: Install pnpm
1919
with:
20-
version: 9
20+
version: 10
2121
run_install: false
2222

2323
- uses: actions/setup-node@v4
2424
with:
25-
node-version: 20
25+
node-version: 22
2626
cache: pnpm
2727

2828
- name: Install dependencies

blog/2024-10/_partials/algorithmanddatastructure/algorithm-datastructure-part-2.mdx

Lines changed: 111 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import DocusaurusLink from "@docusaurus/Link";
66
import Flex from "@components/Flex";
77
import Image, { Center } from "@components/Image";
88
import Steps from "@components/Steps";
9-
import Tabs from "@components/Tabs";
109
import { Link, Text } from "@components/Typography";
1110
import { Collapse } from "@components/collapse";
1211

@@ -55,144 +54,88 @@ import PreOrderRecursiveContent from "../../_contents/tree-traversal/recursive/p
5554
1. 迭代通常用于树的遍历,通过迭代可以快速遍历所有节点
5655
2. 迭代通常使用栈或队列实现
5756

58-
<Collapse label="代码块以及图例">
59-
<Tabs
60-
items={[
61-
{
62-
label: "前序遍历",
63-
key: "preOrder",
64-
forceRender: true,
65-
children: [
66-
<Center
67-
key="preOrderImage"
68-
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的前序遍历-2024-11-20-20-41-25.png"
69-
alt="二叉树的前序遍历"
70-
/>,
71-
<Tabs
72-
key="preOrderTabs"
73-
items={[
74-
{
75-
label: "递归遍历",
76-
key: "preOrderRecursive",
77-
children: <PreOrderRecursiveContent />,
78-
forceRender: true
79-
},
80-
{
81-
label: "迭代遍历",
82-
key: "preOrderLoop",
83-
children: <PreOrderLoopContent />,
84-
forceRender: true
85-
}
86-
]}
87-
/>
88-
].map((item) => ({
89-
...item,
90-
forceRender: true
91-
}))
92-
},
93-
{
94-
label: "中序遍历",
95-
key: "inOrder",
96-
forceRender: true,
97-
children: [
98-
<Center
99-
key="inOrderImage"
100-
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的中序遍历-2024-11-20-20-44-04.png"
101-
alt="二叉树中序遍历"
102-
/>,
103-
<Tabs
104-
key="inOrderTabs"
105-
items={[
106-
{
107-
label: "递归遍历",
108-
key: "inOrderRecursive",
109-
children: (
110-
<>
111-
<InOrderRecursiveContent />
112-
</>
113-
),
114-
forceRender: true
115-
},
116-
{
117-
label: "迭代遍历",
118-
key: "inOrderLoop",
119-
children: <InOrderLoopContent />,
120-
forceRender: true
121-
}
122-
]}
123-
/>
124-
].map((item) => ({
125-
...item,
126-
forceRender: true
127-
}))
128-
},
129-
{
130-
label: "后序遍历",
131-
key: "postOrder",
132-
forceRender: true,
133-
children: [
134-
<Center
135-
key="postOrderImage"
136-
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的后序遍历-2024-11-20-20-44-31.png"
137-
alt="二叉树后序遍历"
138-
/>,
139-
<Tabs
140-
key="postOrderTabs"
141-
items={[
142-
{
143-
label: "递归遍历",
144-
key: "postOrderRecursive",
145-
children: <PostOrderRecursiveContent />,
146-
forceRender: true
147-
},
148-
{
149-
label: "迭代遍历",
150-
key: "postOrderLoop",
151-
children: <PostOrderLoopContent />,
152-
forceRender: true
153-
}
154-
]}
155-
/>
156-
].map((item) => ({
157-
...item,
158-
forceRender: true
159-
}))
160-
},
161-
{
162-
label: "层序遍历",
163-
key: "levelOrder",
164-
forceRender: true,
165-
children: [
166-
<Center
167-
key="levelOrderImage"
168-
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的层序遍历-2024-11-20-20-44-50.png"
169-
alt="二叉树层序遍历"
170-
/>,
171-
<Tabs
172-
key="levelOrderTabs"
173-
items={[
174-
{
175-
label: "递归遍历",
176-
key: "levelOrderRecursive",
177-
children: <LevelOrderRecursiveContent />,
178-
forceRender: true
179-
},
180-
{
181-
label: "迭代遍历",
182-
key: "levelOrderLoop",
183-
children: <LevelOrderLoopContent />,
184-
forceRender: true
185-
}
186-
]}
187-
/>
188-
].map((item) => ({
189-
...item,
190-
forceRender: true
191-
}))
192-
}
193-
]}
194-
/>
195-
</Collapse>
57+
:::::::collapse{label="代码块以及图例"}
58+
59+
::::::tabs
60+
61+
:::::tab{title="前序遍历" key="preOrder"}
62+
<Center
63+
key="preOrderImage"
64+
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的前序遍历-2024-11-20-20-41-25.png"
65+
alt="二叉树的前序遍历"
66+
/>
67+
::::tabs
68+
69+
:::tab{title="递归遍历" key="preOrderRecursive"}
70+
<PreOrderRecursiveContent />
71+
:::
72+
73+
:::tab{title="迭代遍历" key="preOrderLoop"}
74+
<PreOrderLoopContent />
75+
:::
76+
::::
77+
78+
:::::
79+
80+
:::::tab{title="中序遍历" key="inOrder"}
81+
82+
<Center
83+
key="inOrderImage"
84+
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的中序遍历-2024-11-20-20-44-04.png"
85+
alt="二叉树的中序遍历"
86+
/>
87+
88+
::::tabs
89+
90+
:::tab{title="递归遍历" key="inOrderRecursive"}
91+
<InOrderRecursiveContent />
92+
:::
93+
:::tab{title="迭代遍历" key="inOrderLoop"}
94+
<InOrderLoopContent />
95+
:::
96+
97+
::::
98+
99+
:::::
100+
101+
:::::tab{title="后序遍历" key="postOrder"}
102+
<Center
103+
key="postOrderImage"
104+
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的后序遍历-2024-11-20-20-44-31.png"
105+
alt="二叉树的后序遍历"
106+
/>
107+
108+
::::tabs
109+
110+
:::tab{title="递归遍历" key="postOrderRecursive"}
111+
<PostOrderRecursiveContent />
112+
:::
113+
:::tab{title="迭代遍历" key="postOrderLoop"}
114+
<PostOrderLoopContent />
115+
:::
116+
117+
::::
118+
119+
:::::
120+
121+
:::::tab{title="层序遍历" key="levelOrder"}
122+
<Center
123+
key="levelOrderImage"
124+
src="https://cdn.jsdelivr.net/gh/heliannuuthus/heliannuuthus.github.io@assets/static/img/2024-11-20/二叉树的层序遍历-2024-11-20-20-44-50.png"
125+
alt="二叉树的层序遍历"
126+
/>
127+
::::tabs
128+
129+
:::tab{title="递归遍历" key="levelOrderRecursive"}
130+
<LevelOrderRecursiveContent />,
131+
:::
132+
:::tab{title="迭代遍历" key="levelOrderLoop"}
133+
<LevelOrderLoopContent />,
134+
:::
135+
::::
136+
:::::
137+
::::::
138+
196139

197140
#### 二叉树的性质
198141

@@ -284,25 +227,19 @@ import PreOrderRecursiveContent from "../../_contents/tree-traversal/recursive/p
284227
}
285228
]}
286229
/>
230+
:::::collapse{label="代码块以及正在画的图例"}
231+
232+
::::tabs
233+
234+
:::tab{title="前序和中序" key="preAndInOrder"}
235+
<PreAndInOrderBuildTreeContent />
236+
:::
287237

288-
<Collapse label="代码块以及正在画的图例">
289-
<Tabs
290-
items={[
291-
{
292-
label: "前序和中序",
293-
key: "preAndInOrder",
294-
children: <PreAndInOrderBuildTreeContent />,
295-
forceRender: true
296-
},
297-
{
298-
label: "后序和中序",
299-
key: "postAndInOrder",
300-
children: <PostAndInOrderBuildTreeContent />,
301-
forceRender: true
302-
}
303-
]}
304-
/>
305-
</Collapse>
238+
:::tab{title="后序和中序" key="postAndInOrder"}
239+
<PostAndInOrderBuildTreeContent />
240+
:::
241+
:::::
242+
:::::
306243

307244
- [构造最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/description)
308245

@@ -456,27 +393,20 @@ import PreOrderRecursiveContent from "../../_contents/tree-traversal/recursive/p
456393
- 利用[_线索二叉树_](https://en.wikipedia.org/wiki/Threaded_binary_tree)的性质,在遍历过程中减少空间复杂度
457394
- 时间复杂度为 _O(n)_,空间复杂度为 _O(1)_(不包括递归栈)
458395

459-
<Collapse label="代码块">
460-
<Tabs
461-
items={[
462-
{
463-
label: "Morris 前序遍历",
464-
key: "morrisPreOrder",
465-
children: <MorrisTraversalPreOrderContent />,
466-
forceRender: true
467-
},
468-
{
469-
label: "Morris 中序遍历",
470-
key: "morrisInOrder",
471-
children: <MorrisTraversalInOrderContent />,
472-
forceRender: true
473-
},
474-
{
475-
label: "Morris 后序遍历",
476-
key: "morrisPostOrder",
477-
children: <MorrisTraversalPostOrderContent />,
478-
forceRender: true
479-
}
480-
]}
481-
/>
482-
</Collapse>
396+
:::::collapse{label="代码块"}
397+
398+
::::tabs
399+
400+
:::tab{title="Morris 前序遍历" key="morrisPreOrder"}
401+
<MorrisTraversalPreOrderContent />
402+
:::
403+
404+
:::tab{title="Morris 中序遍历" key="morrisInOrder"}
405+
<MorrisTraversalInOrderContent />
406+
:::
407+
408+
:::tab{title="Morris 后序遍历" key="morrisPostOrder"}
409+
<MorrisTraversalPostOrderContent />
410+
:::
411+
:::::
412+
:::::
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Collapse } from "@components/collapse";
21

32
import Thread from "../../_contents/juc/threadlocal/thread.mdx";
43
import ThreadLocal from "../../_contents/juc/threadlocal/threadlocal.mdx";
@@ -10,23 +9,23 @@ import ThreadLocalMap from "../../_contents/juc/threadlocal/threadlocalmap.mdx";
109

1110
- `Thread` 内部维护了一个名为 **threadLocals**`ThreadLocalMap` 对象,用于存储线程本地变量。以及一个名为 **inheritableThreadLocals**`ThreadLocalMap` 对象,用于传递给子线程。
1211

13-
<Collapse label="代码块">
12+
:::collapse{label="代码块"}
1413
<Thread />
15-
</Collapse>
14+
:::
1615

1716
- 在使用 `ThreadLocal` 时,会调用 `ThreadLocal``get` 方法,该方法会从当前线程的 `threadLocals` 中获取变量。
1817
- 如果当前线程的 `threadLocals` 为空,则调用 `ThreadLocal``setInitialValue` 方法,该方法会从当前线程的 `inheritableThreadLocals` 中获取变量。
1918
- 如果当前线程的 `inheritableThreadLocals` 为空,则调用 `ThreadLocal``setInitialValue` 方法,该方法会从当前线程的 `threadLocals` 中获取变量。
2019

21-
<Collapse label="代码块">
20+
:::collapse{label="代码块"}
2221
<ThreadLocal />
23-
</Collapse>
22+
:::
2423

2524
- `ThreadLocal` 的内存泄漏问题
2625

2726
- `ThreadLocalMap` 使用:term[**弱引用**]{./terms/java#weak-reference},如果触发 GC 会第一时间回收弱引用对象,此时的 `ThreadLocalMap` 中的 `Entry``Key` 会为 `null`,此时 `Entry``value` 会一直存在,直到线程结束。
2827
- 如果线程一直不结束,那么 `Entry``value` 会一直存在,导致内存泄漏。
2928

30-
<Collapse label="代码块">
29+
:::collapse{label="代码块"}
3130
<ThreadLocalMap />
32-
</Collapse>
31+
:::

0 commit comments

Comments
 (0)