mirror of
https://github.com/142vip/408CSFamily.git
synced 2026-07-16 11:00:24 +08:00
feat: 移除eslint相关配置,引入@antfu/eslint-config,统一约束风格
This commit is contained in:
@@ -5,60 +5,38 @@
|
||||
注意:
|
||||
- 使用ClientOnly内置组件,只在客户端加载,避免依赖构建出错
|
||||
-->
|
||||
<template>
|
||||
<div class="x-mind-container">
|
||||
<!-- xmind思维导图管理器 -->
|
||||
<div id="x-mind-manager-container">
|
||||
</div>
|
||||
<div class="btn-container">
|
||||
<button id="openLocalBtn" @click="handleOpenLocalBtnClick">打开本地</button>
|
||||
<button id="zoomScaleBtn" @click="handleZoomScaleRevertBtnClick">还原缩放</button>
|
||||
|
||||
<div class="select">
|
||||
<select v-model="xmindIndex">
|
||||
<option v-for="(xmind, index) in xmindFileList" :key="index" :value="index">
|
||||
{{ xmind }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import mapData from "../public/mark-map/index.json"
|
||||
|
||||
import {XMindEmbedViewer} from "xmind-embed-viewer";
|
||||
import { XMindEmbedViewer } from 'xmind-embed-viewer'
|
||||
import mapData from '../public/mark-map/index.json'
|
||||
|
||||
console.log(111, XMindEmbedViewer)
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
viewer: {},
|
||||
xmindIndex: 0,
|
||||
xmindFileList: [],
|
||||
xmindFile: mapData.length > 0 ? mapData[0].xMindPath : '../mark-map/操作系统发展历程.xmind',
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 监听下来列表变更
|
||||
*/
|
||||
watch: {
|
||||
xmindIndex: async function (newIndex, oldVal) {
|
||||
const {xMindPath} = mapData[newIndex]
|
||||
async xmindIndex(newIndex, _oldVal) {
|
||||
const { xMindPath } = mapData[newIndex]
|
||||
|
||||
// 打开指定
|
||||
const xmindResponse = await fetch(xMindPath)
|
||||
const data = await xmindResponse.arrayBuffer()
|
||||
this.viewer.setZoomScale(100)
|
||||
this.viewer.load(data)
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
viewer: {},
|
||||
xmindIndex: 0,
|
||||
xmindFileList: [],
|
||||
xmindFile: mapData.length > 0 ? mapData[0].xMindPath : '../mark-map/操作系统发展历程.xmind'
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.xmindFileList = mapData.map(({name}) => name)
|
||||
this.xmindFileList = mapData.map(({ name }) => name)
|
||||
},
|
||||
mounted() {
|
||||
(async () => {
|
||||
@@ -71,10 +49,10 @@ export default {
|
||||
region: 'cn',
|
||||
styles: {
|
||||
width: '100%',
|
||||
minHeight: "600px",
|
||||
minHeight: '600px',
|
||||
height: 'auto',
|
||||
maxHeight: '1200px'
|
||||
}
|
||||
maxHeight: '1200px',
|
||||
},
|
||||
})
|
||||
})()
|
||||
},
|
||||
@@ -87,7 +65,7 @@ export default {
|
||||
const fileSelector = document.createElement('input')
|
||||
fileSelector.style.display = 'none'
|
||||
document.body.appendChild(fileSelector)
|
||||
await new Promise(resolve => {
|
||||
await new Promise((resolve) => {
|
||||
fileSelector.setAttribute('type', 'file')
|
||||
fileSelector.setAttribute('accept', '.xmind')
|
||||
fileSelector.addEventListener('change', () => {
|
||||
@@ -113,13 +91,34 @@ export default {
|
||||
async handleZoomScaleRevertBtnClick() {
|
||||
this.viewer.setFitMap()
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="x-mind-container">
|
||||
<!-- xmind思维导图管理器 -->
|
||||
<div id="x-mind-manager-container" />
|
||||
<div class="btn-container">
|
||||
<button id="openLocalBtn" @click="handleOpenLocalBtnClick">
|
||||
打开本地
|
||||
</button>
|
||||
<button id="zoomScaleBtn" @click="handleZoomScaleRevertBtnClick">
|
||||
还原缩放
|
||||
</button>
|
||||
|
||||
<div class="select">
|
||||
<select v-model="xmindIndex">
|
||||
<option v-for="(xmind, index) in xmindFileList" :key="index" :value="index">
|
||||
{{ xmind }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.btn-container {
|
||||
margin: 50px 0;
|
||||
text-align: center;
|
||||
@@ -146,7 +145,7 @@ export default {
|
||||
}
|
||||
|
||||
.select:before {
|
||||
content: "";
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 0;
|
||||
height: 0;
|
||||
@@ -206,7 +205,4 @@ button:hover {
|
||||
background-image: -ms-linear-gradient(top, #2079b0, #eb94d0);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
@@ -1,42 +1,56 @@
|
||||
import pluginsConfig from "./config/plugins.config";
|
||||
import themeConfig from "./config/theme.config";
|
||||
import {defineUserConfig} from "vuepress";
|
||||
import {fileURLToPath} from 'node:url'
|
||||
import {path} from "@vuepress/utils";
|
||||
import {name} from "../../package.json"
|
||||
// @ts-ignore
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import process from 'node:process'
|
||||
import { defineUserConfig } from 'vuepress'
|
||||
import { path } from '@vuepress/utils'
|
||||
import { name } from '../../package.json'
|
||||
import themeConfig from './config/theme.config'
|
||||
import pluginsConfig from './config/plugins.config'
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
/**
|
||||
* 用于区分base路径,是否nginx代理
|
||||
*/
|
||||
function getSiteBase(): '/' | `/${string}/` {
|
||||
// 用于区分base路径,是否nginx代理
|
||||
const PROXY_DOMAIN = process.env.PROXY_DOMAIN || false
|
||||
return PROXY_DOMAIN ? `/${name}/` : '/'
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户自定义配置
|
||||
* 注意:
|
||||
* - 环境变量中的PROXY_DOMAIN字段,用于区分是否nginx代理
|
||||
*/
|
||||
export default defineUserConfig({
|
||||
title: "计算机408全家桶",
|
||||
description: "磨刀不误砍柴工,读完硕士再打工",
|
||||
title: '计算机408全家桶',
|
||||
description: '磨刀不误砍柴工,读完硕士再打工',
|
||||
// 用于区分base路径,是否nginx代理
|
||||
base: process.env.PROXY_DOMAIN ? `/${name}/` : `/`,
|
||||
base: getSiteBase(),
|
||||
port: 4200,
|
||||
head: [
|
||||
// vercel统计 相关配置
|
||||
[
|
||||
'script', {type: 'text/javascript', src: '/_vercel/insights/script.js'}
|
||||
'script',
|
||||
{ type: 'text/javascript', src: '/_vercel/insights/script.js' },
|
||||
],
|
||||
[
|
||||
"link", {rel: "icon", href: "/408_favicon.ico"}
|
||||
'link',
|
||||
{ rel: 'icon', href: '/408_favicon.ico' },
|
||||
],
|
||||
// 百度统计
|
||||
[
|
||||
'script', {}, `
|
||||
'script',
|
||||
{},
|
||||
`
|
||||
var _hmt = _hmt || [];
|
||||
(function() {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "https://hm.baidu.com/hm.js?3515cc46ae60747b778140f0e5e22dfe";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();`
|
||||
]
|
||||
})();`,
|
||||
],
|
||||
],
|
||||
// 配置永久链接,参考:https://v2.vuepress.vuejs.org/zh/reference/frontmatter.html#permalink
|
||||
// permalink: "/:year/:month/:day/:slug",
|
||||
@@ -59,8 +73,8 @@ export default defineUserConfig({
|
||||
},
|
||||
// md doc formatter headerDepth
|
||||
headers: {
|
||||
level: [2, 3, 4]
|
||||
}
|
||||
level: [2, 3, 4],
|
||||
},
|
||||
},
|
||||
// 主题配置
|
||||
...themeConfig,
|
||||
@@ -68,4 +82,3 @@ export default defineUserConfig({
|
||||
...pluginsConfig,
|
||||
shouldPrefetch: false,
|
||||
})
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {name, version, authorInfo} from "../../../package.json"
|
||||
import { authorInfo, name, version } from '../../../package.json'
|
||||
|
||||
export const FOOTER_HTML_INFO = `
|
||||
<div>
|
||||
@@ -28,59 +28,59 @@ export const copyright = `
|
||||
export const AUTHOR_INFO = {
|
||||
name: authorInfo.name,
|
||||
email: authorInfo.email,
|
||||
url: authorInfo.homePages
|
||||
url: authorInfo.homePages,
|
||||
}
|
||||
|
||||
export const NotFoundMsgList = [
|
||||
"徒留我孤单在湖面成双。",
|
||||
"就让回忆永远停在那里。",
|
||||
"天青色等烟雨,而我在等你。",
|
||||
"我用无悔,刻永世爱你的碑。",
|
||||
"终有一天,我有属于我的天。",
|
||||
"你想说的想给的,我全都知道。",
|
||||
"我顶着大太阳,只想为你撑伞。",
|
||||
"海鸟跟鱼相爱,只是一场意外。",
|
||||
"那已风化千年的誓言,一切又重演。",
|
||||
"下降的速度太快,来不及踏上未来。",
|
||||
"我原谅不了我,就请你当作我已不在。",
|
||||
"琴声何在,生死难猜,用一声去等待。",
|
||||
"我戒不掉她的微笑,洋溢幸福的味道。",
|
||||
"缺氧过后的爱情,粗心的眼泪事多余。",
|
||||
"过往的欢乐是否褪色,想问你怎么舍得。",
|
||||
"繁华如三千东流水,我只取一瓢爱了解。",
|
||||
"唱反调是我的本性,出其不意是我的个性。",
|
||||
"没有你在我有多难熬,没有你烦我有烦恼。",
|
||||
"梦在远方,化成一缕香,随风飘散你的模样。",
|
||||
"最美的不是下雨天,是曾与你躲过雨的屋檐。",
|
||||
"初恋的颜色我牵着你的手经过种麦芽糖的山坡。",
|
||||
"而我已经分不清,你是友情,还是错过的爱情。",
|
||||
"也许时间是一种解药,也是我现在所服下的毒药。",
|
||||
"能不能给我一首歌的时间,紧紧的把那拥抱变成永远。",
|
||||
"如果邪恶是华丽残酷的乐章,它的终场我会亲手写上。",
|
||||
"我知道共同的默契很重要,那骄傲才不会寂寞得很无聊。",
|
||||
"想回到过去,试着让故事继续,至少不再让你离我而去。",
|
||||
"如果我遇见你是一个悲剧,我想我这辈子注定一个人演戏。",
|
||||
"请不要把分手当作你的请求,我知道坚持要走是你受伤的藉口。",
|
||||
"我想就这样牵着你的手不放开,爱能不能够永远单纯没有悲哀。",
|
||||
"翻着我们的照片,想念若隐若现,去年的冬天,我们笑得很甜。",
|
||||
"风筝在阴天搁浅,想念还在等待救援,我拉着线复习你给的温柔。",
|
||||
"整个画面是你,想你想的睡不着,我的快乐是你,想你想的都会笑。",
|
||||
"酸酸的空气,嗅出我们的距离,一幕锥心的结局,像呼吸般无法停息。",
|
||||
"我害怕你心碎没人帮你擦眼泪,别离开身边,拥有你我的世界才能完美。",
|
||||
"有谁能比我知道,你的温柔象羽毛,秘密躺在我怀抱,只有你能听得到。",
|
||||
"看着那白色的蜻蜓在空中忘了前进,还能不能重新编织,脑海中起毛球的记忆。",
|
||||
"为你弹奏萧邦的夜曲,纪念我死去的爱情,而我为你隐姓埋名,在月光下弹琴。",
|
||||
"我会发着呆然后忘记你,接着紧紧闭上眼,想着那一天会有人代替,让我不再想念你",
|
||||
"乘着风游荡在蓝天边,一片云掉落在我面前,捏成你的形状,随风跟着我,一口一口吃掉忧愁。",
|
||||
"听妈妈的话别让她受伤,想快快长大才能保护她,美丽的白发幸福总发芽,天使的魔法温暖中慈祥。",
|
||||
"断了的弦再怎么连,我的感觉你已听不见,你的转变像断掉的弦,再怎么接音都不对,你的改变我能够分辨。",
|
||||
"思绪不断阻挡着回忆播放,盲目的追寻仍然空空荡荡,灰蒙蒙的夜晚睡意又不知躲到哪去,一转身孤单已躺在身旁。",
|
||||
"从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜。",
|
||||
"谁在用琵琶弹奏一曲东风破,枫叶讲故事染色结局我看透,篱笆外的古道我牵着你走过,荒烟蔓草的年头就连分手都很沉默。",
|
||||
"我一路向北,离开有你的季节,你说你好累,已无法再爱上谁。风在山路吹,过往的画面全都是不对,细数惭愧,我伤你几回。",
|
||||
"雨下整夜我的爱溢出就像雨水,窗台蝴蝶像诗里纷飞的美丽章节。我接着写把永远爱你写进诗的结尾,你是我唯一想要的了解。",
|
||||
"缓缓飘落的枫叶像思念,为何挽回要赶在冬天来之前,爱你穿越时间,两行来自秋末的眼泪,让爱渗透了地面我要的只是你在我身边。",
|
||||
"我陪你走到最后,能不能别想太多,会不会手牵着手,晚一点再到尽头,你说不该再相见只为了瞬间,谢谢你让我听见因为我在等待永远。",
|
||||
"天灰灰会不会,让我忘了你是谁,累不累睡不睡,单影无人相依偎,夜越黑梦违背,有谁肯安慰,我的世界将被摧毁也许颓废也是另一种美。",
|
||||
"我知道你我都没有错,只是忘了怎么退后,信誓旦旦给的承诺,全被时间扑了空。我知道我们都没有错,只是放手会比较好过,最美的爱情回忆里待续。",
|
||||
'徒留我孤单在湖面成双。',
|
||||
'就让回忆永远停在那里。',
|
||||
'天青色等烟雨,而我在等你。',
|
||||
'我用无悔,刻永世爱你的碑。',
|
||||
'终有一天,我有属于我的天。',
|
||||
'你想说的想给的,我全都知道。',
|
||||
'我顶着大太阳,只想为你撑伞。',
|
||||
'海鸟跟鱼相爱,只是一场意外。',
|
||||
'那已风化千年的誓言,一切又重演。',
|
||||
'下降的速度太快,来不及踏上未来。',
|
||||
'我原谅不了我,就请你当作我已不在。',
|
||||
'琴声何在,生死难猜,用一声去等待。',
|
||||
'我戒不掉她的微笑,洋溢幸福的味道。',
|
||||
'缺氧过后的爱情,粗心的眼泪事多余。',
|
||||
'过往的欢乐是否褪色,想问你怎么舍得。',
|
||||
'繁华如三千东流水,我只取一瓢爱了解。',
|
||||
'唱反调是我的本性,出其不意是我的个性。',
|
||||
'没有你在我有多难熬,没有你烦我有烦恼。',
|
||||
'梦在远方,化成一缕香,随风飘散你的模样。',
|
||||
'最美的不是下雨天,是曾与你躲过雨的屋檐。',
|
||||
'初恋的颜色我牵着你的手经过种麦芽糖的山坡。',
|
||||
'而我已经分不清,你是友情,还是错过的爱情。',
|
||||
'也许时间是一种解药,也是我现在所服下的毒药。',
|
||||
'能不能给我一首歌的时间,紧紧的把那拥抱变成永远。',
|
||||
'如果邪恶是华丽残酷的乐章,它的终场我会亲手写上。',
|
||||
'我知道共同的默契很重要,那骄傲才不会寂寞得很无聊。',
|
||||
'想回到过去,试着让故事继续,至少不再让你离我而去。',
|
||||
'如果我遇见你是一个悲剧,我想我这辈子注定一个人演戏。',
|
||||
'请不要把分手当作你的请求,我知道坚持要走是你受伤的藉口。',
|
||||
'我想就这样牵着你的手不放开,爱能不能够永远单纯没有悲哀。',
|
||||
'翻着我们的照片,想念若隐若现,去年的冬天,我们笑得很甜。',
|
||||
'风筝在阴天搁浅,想念还在等待救援,我拉着线复习你给的温柔。',
|
||||
'整个画面是你,想你想的睡不着,我的快乐是你,想你想的都会笑。',
|
||||
'酸酸的空气,嗅出我们的距离,一幕锥心的结局,像呼吸般无法停息。',
|
||||
'我害怕你心碎没人帮你擦眼泪,别离开身边,拥有你我的世界才能完美。',
|
||||
'有谁能比我知道,你的温柔象羽毛,秘密躺在我怀抱,只有你能听得到。',
|
||||
'看着那白色的蜻蜓在空中忘了前进,还能不能重新编织,脑海中起毛球的记忆。',
|
||||
'为你弹奏萧邦的夜曲,纪念我死去的爱情,而我为你隐姓埋名,在月光下弹琴。',
|
||||
'我会发着呆然后忘记你,接着紧紧闭上眼,想着那一天会有人代替,让我不再想念你',
|
||||
'乘着风游荡在蓝天边,一片云掉落在我面前,捏成你的形状,随风跟着我,一口一口吃掉忧愁。',
|
||||
'听妈妈的话别让她受伤,想快快长大才能保护她,美丽的白发幸福总发芽,天使的魔法温暖中慈祥。',
|
||||
'断了的弦再怎么连,我的感觉你已听不见,你的转变像断掉的弦,再怎么接音都不对,你的改变我能够分辨。',
|
||||
'思绪不断阻挡着回忆播放,盲目的追寻仍然空空荡荡,灰蒙蒙的夜晚睡意又不知躲到哪去,一转身孤单已躺在身旁。',
|
||||
'从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜。',
|
||||
'谁在用琵琶弹奏一曲东风破,枫叶讲故事染色结局我看透,篱笆外的古道我牵着你走过,荒烟蔓草的年头就连分手都很沉默。',
|
||||
'我一路向北,离开有你的季节,你说你好累,已无法再爱上谁。风在山路吹,过往的画面全都是不对,细数惭愧,我伤你几回。',
|
||||
'雨下整夜我的爱溢出就像雨水,窗台蝴蝶像诗里纷飞的美丽章节。我接着写把永远爱你写进诗的结尾,你是我唯一想要的了解。',
|
||||
'缓缓飘落的枫叶像思念,为何挽回要赶在冬天来之前,爱你穿越时间,两行来自秋末的眼泪,让爱渗透了地面我要的只是你在我身边。',
|
||||
'我陪你走到最后,能不能别想太多,会不会手牵着手,晚一点再到尽头,你说不该再相见只为了瞬间,谢谢你让我听见因为我在等待永远。',
|
||||
'天灰灰会不会,让我忘了你是谁,累不累睡不睡,单影无人相依偎,夜越黑梦违背,有谁肯安慰,我的世界将被摧毁也许颓废也是另一种美。',
|
||||
'我知道你我都没有错,只是忘了怎么退后,信誓旦旦给的承诺,全被时间扑了空。我知道我们都没有错,只是放手会比较好过,最美的爱情回忆里待续。',
|
||||
]
|
||||
|
||||
@@ -1,73 +1,73 @@
|
||||
import {ThemeLocaleData} from "vuepress-theme-hope";
|
||||
import {NotFoundMsgList} from "./constant.config";
|
||||
import type { ThemeLocaleData } from 'vuepress-theme-hope'
|
||||
import { NotFoundMsgList } from './constant.config'
|
||||
|
||||
/**
|
||||
* 支持中文
|
||||
* 参考:https://theme-hope.vuejs.press/zh/config/i18n.html
|
||||
*/
|
||||
const localCN: ThemeLocaleData = {
|
||||
lang: "zh-CN",
|
||||
lang: 'zh-CN',
|
||||
navbarLocales: {
|
||||
langName: "简体中文",
|
||||
selectLangAriaLabel: "选择语言",
|
||||
langName: '简体中文',
|
||||
selectLangAriaLabel: '选择语言',
|
||||
},
|
||||
metaLocales: {
|
||||
author: "作者",
|
||||
date: "写作日期",
|
||||
origin: "原创",
|
||||
views: "访问量",
|
||||
category: "分类",
|
||||
tag: "标签",
|
||||
readingTime: "阅读时间",
|
||||
words: "字数",
|
||||
toc: "标题大纲",
|
||||
prev: "上一页",
|
||||
next: "下一页",
|
||||
lastUpdated: "上次编辑于",
|
||||
contributors: "贡献者",
|
||||
editLink: "编辑此页",
|
||||
print: "打印",
|
||||
author: '作者',
|
||||
date: '写作日期',
|
||||
origin: '原创',
|
||||
views: '访问量',
|
||||
category: '分类',
|
||||
tag: '标签',
|
||||
readingTime: '阅读时间',
|
||||
words: '字数',
|
||||
toc: '标题大纲',
|
||||
prev: '上一页',
|
||||
next: '下一页',
|
||||
lastUpdated: '上次编辑于',
|
||||
contributors: '贡献者',
|
||||
editLink: '编辑此页',
|
||||
print: '打印',
|
||||
},
|
||||
|
||||
blogLocales: {
|
||||
article: "文章",
|
||||
articleList: "文章列表",
|
||||
category: "分类",
|
||||
tag: "标签",
|
||||
timeline: "时间轴",
|
||||
timelineTitle: "昨日不在",
|
||||
all: "全部",
|
||||
intro: "个人介绍",
|
||||
star: "收藏",
|
||||
article: '文章',
|
||||
articleList: '文章列表',
|
||||
category: '分类',
|
||||
tag: '标签',
|
||||
timeline: '时间轴',
|
||||
timelineTitle: '昨日不在',
|
||||
all: '全部',
|
||||
intro: '个人介绍',
|
||||
star: '收藏',
|
||||
},
|
||||
|
||||
paginationLocales: {
|
||||
prev: "上一页",
|
||||
next: "下一页",
|
||||
navigate: "跳转到",
|
||||
action: "前往",
|
||||
errorText: "请输入 1 到 $page 之前的页码!",
|
||||
prev: '上一页',
|
||||
next: '下一页',
|
||||
navigate: '跳转到',
|
||||
action: '前往',
|
||||
errorText: '请输入 1 到 $page 之前的页码!',
|
||||
},
|
||||
|
||||
outlookLocales: {
|
||||
themeColor: "主题色",
|
||||
darkmode: "外观",
|
||||
fullscreen: "全屏",
|
||||
themeColor: '主题色',
|
||||
darkmode: '外观',
|
||||
fullscreen: '全屏',
|
||||
},
|
||||
|
||||
encryptLocales: {
|
||||
iconLabel: "文章已加密",
|
||||
placeholder: "输入密码",
|
||||
remember: "记住密码",
|
||||
errorHint: "请输入正确的密码",
|
||||
iconLabel: '文章已加密',
|
||||
placeholder: '输入密码',
|
||||
remember: '记住密码',
|
||||
errorHint: '请输入正确的密码',
|
||||
},
|
||||
routeLocales: {
|
||||
skipToContent: "跳至主要內容",
|
||||
notFoundTitle: "访问的页面不存在",
|
||||
skipToContent: '跳至主要內容',
|
||||
notFoundTitle: '访问的页面不存在',
|
||||
notFoundMsg: NotFoundMsgList,
|
||||
back: "返回上一页",
|
||||
home: "进入首页",
|
||||
openInNewWindow: "新窗口打开",
|
||||
back: '返回上一页',
|
||||
home: '进入首页',
|
||||
openInNewWindow: '新窗口打开',
|
||||
},
|
||||
}
|
||||
|
||||
@@ -75,5 +75,5 @@ const localCN: ThemeLocaleData = {
|
||||
* 自定义语言,支持文案
|
||||
*/
|
||||
export const langConfig = {
|
||||
"/": localCN
|
||||
'/': localCN,
|
||||
}
|
||||
|
||||
@@ -4,62 +4,62 @@
|
||||
export const navbar = [
|
||||
{
|
||||
text: '首页',
|
||||
link: '/'
|
||||
link: '/',
|
||||
},
|
||||
{
|
||||
text: "数据结构",
|
||||
link: "/manuscripts/ds"
|
||||
text: '数据结构',
|
||||
link: '/manuscripts/ds',
|
||||
},
|
||||
{
|
||||
text: "操作系统",
|
||||
link: "/manuscripts/os"
|
||||
text: '操作系统',
|
||||
link: '/manuscripts/os',
|
||||
},
|
||||
{
|
||||
text: "计算机组成原理",
|
||||
link: "/manuscripts/ccp"
|
||||
text: '计算机组成原理',
|
||||
link: '/manuscripts/ccp',
|
||||
},
|
||||
|
||||
{
|
||||
text: "计算机网络",
|
||||
link: "/manuscripts/cn"
|
||||
text: '计算机网络',
|
||||
link: '/manuscripts/cn',
|
||||
},
|
||||
{
|
||||
text: '思维导图',
|
||||
link: "/manuscripts/mark-map/ds-map.html",
|
||||
link: '/manuscripts/mark-map/ds-map.html',
|
||||
},
|
||||
{
|
||||
text: "了解更多",
|
||||
text: '了解更多',
|
||||
children: [
|
||||
{
|
||||
text: '变更记录',
|
||||
link: '/manuscripts/changelog.md'
|
||||
link: '/manuscripts/changelog.md',
|
||||
},
|
||||
{
|
||||
text: '网站动态',
|
||||
link: '/manuscripts/big-event-history.md'
|
||||
link: '/manuscripts/big-event-history.md',
|
||||
},
|
||||
{
|
||||
text: "自媒体",
|
||||
text: '自媒体',
|
||||
children: [
|
||||
{
|
||||
text: "公众号文章",
|
||||
link: "/manuscripts/wechat-list.md"
|
||||
text: '公众号文章',
|
||||
link: '/manuscripts/wechat-list.md',
|
||||
},
|
||||
]
|
||||
],
|
||||
},
|
||||
{
|
||||
text: "外链",
|
||||
text: '外链',
|
||||
children: [
|
||||
// {
|
||||
// text: '常用网站',
|
||||
// link: '/manuscripts/frequent-site-link.md'
|
||||
// },
|
||||
{
|
||||
text: "RoadMap计划",
|
||||
link: "https://142vip-cn.feishu.cn/share/base/view/shrcnpso8R4vCid01wmg66hFjae"
|
||||
}
|
||||
]
|
||||
text: 'RoadMap计划',
|
||||
link: 'https://142vip-cn.feishu.cn/share/base/view/shrcnpso8R4vCid01wmg66hFjae',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {searchProPlugin} from "vuepress-plugin-search-pro";
|
||||
import {path} from "@vuepress/utils";
|
||||
import {registerComponentsPlugin} from "@vuepress/plugin-register-components";
|
||||
import { searchProPlugin } from 'vuepress-plugin-search-pro'
|
||||
import { path } from '@vuepress/utils'
|
||||
import { registerComponentsPlugin } from '@vuepress/plugin-register-components'
|
||||
|
||||
/**
|
||||
* 插件配置
|
||||
@@ -21,13 +21,13 @@ export default {
|
||||
customFields: [
|
||||
{
|
||||
getter: (page: any) => page.frontmatter.category,
|
||||
formatter: "分类:$content",
|
||||
formatter: '分类:$content',
|
||||
},
|
||||
{
|
||||
getter: (page) => page.frontmatter.tag,
|
||||
formatter: "标签:$content",
|
||||
getter: page => page.frontmatter.tag,
|
||||
formatter: '标签:$content',
|
||||
},
|
||||
],
|
||||
}),
|
||||
]
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import {dsSidebar} from "../../manuscripts/ds/ds.sidebar";
|
||||
import {cppSidebar} from "../../manuscripts/ccp/cpp.sidebar";
|
||||
import {cnSidebar} from "../../manuscripts/cn/cn.sidebar";
|
||||
import {MarkMapSidebar} from "../../manuscripts/mark-map/mark-map.sidebar";
|
||||
import {osSidebar} from "../../manuscripts/os/os.sidebar";
|
||||
import { dsSidebar } from '../../manuscripts/ds/ds.sidebar'
|
||||
import { cppSidebar } from '../../manuscripts/ccp/cpp.sidebar'
|
||||
import { cnSidebar } from '../../manuscripts/cn/cn.sidebar'
|
||||
import { MarkMapSidebar } from '../../manuscripts/mark-map/mark-map.sidebar'
|
||||
import { osSidebar } from '../../manuscripts/os/os.sidebar'
|
||||
|
||||
/**
|
||||
* 侧边导航栏设置
|
||||
*/
|
||||
export const sidebar = {
|
||||
"/manuscripts/ds": dsSidebar,
|
||||
"/manuscripts/os": osSidebar,
|
||||
"/manuscripts/ccp": cppSidebar,
|
||||
"/manuscripts/cn": cnSidebar,
|
||||
"/manuscripts/mark-map": MarkMapSidebar
|
||||
}
|
||||
'/manuscripts/ds': dsSidebar,
|
||||
'/manuscripts/os': osSidebar,
|
||||
'/manuscripts/ccp': cppSidebar,
|
||||
'/manuscripts/cn': cnSidebar,
|
||||
'/manuscripts/mark-map': MarkMapSidebar,
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import {AUTHOR_INFO, copyright, FOOTER_HTML_INFO} from "./constant.config";
|
||||
import {hopeTheme} from "vuepress-theme-hope";
|
||||
import {langConfig} from "./lang.config";
|
||||
import {navbar} from "./navbar";
|
||||
import {sidebar} from "./sidebar";
|
||||
import { hopeTheme } from 'vuepress-theme-hope'
|
||||
import { AUTHOR_INFO, FOOTER_HTML_INFO, copyright } from './constant.config'
|
||||
import { langConfig } from './lang.config'
|
||||
import { navbar } from './navbar'
|
||||
import { sidebar } from './sidebar'
|
||||
|
||||
/**
|
||||
* hope主题配置
|
||||
@@ -12,7 +12,7 @@ import {sidebar} from "./sidebar";
|
||||
export default {
|
||||
theme: hopeTheme({
|
||||
locales: langConfig,
|
||||
darkmode: "disable",
|
||||
darkmode: 'disable',
|
||||
// 支持全屏
|
||||
// fullscreen: true,
|
||||
// 纯净模式
|
||||
@@ -20,21 +20,21 @@ export default {
|
||||
print: false, // 打印按钮
|
||||
hostname: 'https://408.142vip.cn',
|
||||
author: AUTHOR_INFO,
|
||||
favicon: "/408_favicon.ico",
|
||||
logo: "/408_logo.png",
|
||||
navbar: navbar,
|
||||
favicon: '/408_favicon.ico',
|
||||
logo: '/408_logo.png',
|
||||
navbar,
|
||||
// 导航栏布局
|
||||
navbarLayout: {
|
||||
start: ["Brand"],
|
||||
center: ["Links"],
|
||||
end: ["Language", "Search", "Repo", "Outlook",]
|
||||
start: ['Brand'],
|
||||
center: ['Links'],
|
||||
end: ['Language', 'Search', 'Repo', 'Outlook'],
|
||||
},
|
||||
sidebar: sidebar,
|
||||
sidebar,
|
||||
// sidebar: "heading",
|
||||
|
||||
// 主题布局选项
|
||||
repo: "https://github.com/142vip/408CSFamily",
|
||||
logoDark: "/408_logo.png",
|
||||
repo: 'https://github.com/142vip/408CSFamily',
|
||||
logoDark: '/408_logo.png',
|
||||
|
||||
// 博客配置
|
||||
// blog: {
|
||||
@@ -74,20 +74,21 @@ export default {
|
||||
// 启用图片大小
|
||||
imgSize: true,
|
||||
playground: {
|
||||
presets: ["ts", "vue"],
|
||||
presets: ['ts', 'vue'],
|
||||
},
|
||||
// 是否启用幻灯片
|
||||
revealjs: ["highlight", "math", "search", "notes", "zoom"],
|
||||
revealjs: ['highlight', 'math', 'search', 'notes', 'zoom'],
|
||||
stylize: [
|
||||
{
|
||||
matcher: "Recommended",
|
||||
replacer: ({tag}) => {
|
||||
if (tag === "em")
|
||||
matcher: 'Recommended',
|
||||
replacer: ({ tag }) => {
|
||||
if (tag === 'em') {
|
||||
return {
|
||||
tag: "Badge",
|
||||
attrs: {type: "tip"},
|
||||
content: "Recommended",
|
||||
};
|
||||
tag: 'Badge',
|
||||
attrs: { type: 'tip' },
|
||||
content: 'Recommended',
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -110,28 +111,28 @@ export default {
|
||||
// 参考:https://theme-hope.vuejs.press/zh/guide/markdown/components.html
|
||||
components: {
|
||||
components: [
|
||||
"ArtPlayer",
|
||||
"AudioPlayer",
|
||||
"Badge",
|
||||
"BiliBili",
|
||||
"CodePen",
|
||||
"PDF",
|
||||
"Replit",
|
||||
"Share",
|
||||
"SiteInfo",
|
||||
"StackBlitz",
|
||||
'ArtPlayer',
|
||||
'AudioPlayer',
|
||||
'Badge',
|
||||
'BiliBili',
|
||||
'CodePen',
|
||||
'PDF',
|
||||
'Replit',
|
||||
'Share',
|
||||
'SiteInfo',
|
||||
'StackBlitz',
|
||||
// "VidStack",
|
||||
"VideoPlayer",
|
||||
"XiGua",
|
||||
"YouTube",
|
||||
'VideoPlayer',
|
||||
'XiGua',
|
||||
'YouTube',
|
||||
],
|
||||
},
|
||||
copyCode: {
|
||||
showInMobile: true
|
||||
showInMobile: true,
|
||||
},
|
||||
feed: {
|
||||
json: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}),
|
||||
}
|
||||
|
||||
@@ -1,40 +1,74 @@
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Markmap</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#mindmap {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/default.min.css"><link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<svg id="mindmap"></svg>
|
||||
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script><script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script><script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script><script>(r => {
|
||||
setTimeout(r);
|
||||
})(() => {
|
||||
const {
|
||||
markmap,
|
||||
mm
|
||||
} = window;
|
||||
const toolbar = new markmap.Toolbar();
|
||||
toolbar.attach(mm);
|
||||
const el = toolbar.render();
|
||||
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px');
|
||||
document.body.append(el);
|
||||
})</script><script>((getMarkmap, getOptions, root, jsonOptions) => {
|
||||
const markmap = getMarkmap();
|
||||
window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root);
|
||||
})(() => window.markmap,null,{"type":"heading","depth":0,"payload":{"lines":[1,2]},"content":"计算机组成原理","children":[{"type":"fence","depth":1,"content":"<pre><code class=\"language-mindmap\">root(计算机组成原理)\n (引论)\n (数据的表示和运算)\n (储存系统)\n (指令系统)\n (中央处理器)\n (总线)\n (输入输出系统)\n</code></pre>\n","children":[],"payload":{"lines":[3,13]}},{"type":"heading","depth":1,"payload":{"lines":[16,17]},"content":"引论","children":[]},{"type":"heading","depth":1,"payload":{"lines":[18,19]},"content":"数据的表示和运算","children":[]},{"type":"heading","depth":1,"payload":{"lines":[20,21]},"content":"存储系统","children":[]},{"type":"heading","depth":1,"payload":{"lines":[22,23]},"content":"指令系统","children":[]},{"type":"heading","depth":1,"payload":{"lines":[24,25]},"content":"中央处理器","children":[]},{"type":"heading","depth":1,"payload":{"lines":[26,27]},"content":"总线","children":[]},{"type":"heading","depth":1,"payload":{"lines":[28,29]},"content":"输入输出系统","children":[]},{"type":"heading","depth":1,"payload":{"lines":[30,31]},"content":"一些总结","children":[]}]},null)</script>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
<title>Markmap</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#mindmap {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/default.min.css" />
|
||||
<link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<svg id="mindmap"></svg>
|
||||
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script>
|
||||
<script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script>
|
||||
<script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script>
|
||||
<script>
|
||||
;((r) => {
|
||||
setTimeout(r)
|
||||
})(() => {
|
||||
const { markmap, mm } = window
|
||||
const toolbar = new markmap.Toolbar()
|
||||
toolbar.attach(mm)
|
||||
const el = toolbar.render()
|
||||
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px')
|
||||
document.body.append(el)
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
;((getMarkmap, getOptions, root, jsonOptions) => {
|
||||
const markmap = getMarkmap()
|
||||
window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root)
|
||||
})(
|
||||
() => window.markmap,
|
||||
null,
|
||||
{
|
||||
type: 'heading',
|
||||
depth: 0,
|
||||
payload: { lines: [1, 2] },
|
||||
content: '计算机组成原理',
|
||||
children: [
|
||||
{
|
||||
type: 'fence',
|
||||
depth: 1,
|
||||
content:
|
||||
'<pre><code class="language-mindmap">root(计算机组成原理)\n (引论)\n (数据的表示和运算)\n (储存系统)\n (指令系统)\n (中央处理器)\n (总线)\n (输入输出系统)\n</code></pre>\n',
|
||||
children: [],
|
||||
payload: { lines: [3, 13] },
|
||||
},
|
||||
{ type: 'heading', depth: 1, payload: { lines: [16, 17] }, content: '引论', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [18, 19] }, content: '数据的表示和运算', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [20, 21] }, content: '存储系统', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [22, 23] }, content: '指令系统', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [24, 25] }, content: '中央处理器', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [26, 27] }, content: '总线', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [28, 29] }, content: '输入输出系统', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [30, 31] }, content: '一些总结', children: [] },
|
||||
],
|
||||
},
|
||||
null,
|
||||
)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,73 @@
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Markmap</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#mindmap {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/default.min.css"><link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<svg id="mindmap"></svg>
|
||||
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script><script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script><script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script><script>(r => {
|
||||
setTimeout(r);
|
||||
})(() => {
|
||||
const {
|
||||
markmap,
|
||||
mm
|
||||
} = window;
|
||||
const toolbar = new markmap.Toolbar();
|
||||
toolbar.attach(mm);
|
||||
const el = toolbar.render();
|
||||
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px');
|
||||
document.body.append(el);
|
||||
})</script><script>((getMarkmap, getOptions, root, jsonOptions) => {
|
||||
const markmap = getMarkmap();
|
||||
window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root);
|
||||
})(() => window.markmap,null,{"type":"heading","depth":0,"payload":{"lines":[1,2]},"content":"计算机网络","children":[{"type":"fence","depth":1,"content":"<pre><code class=\"language-mindmap\">root(计算机网络)\n (体系机构)\n (物理层)\n (数据链路层)\n (网络层)\n (传输层)\n (应用层)\n</code></pre>\n","children":[],"payload":{"lines":[3,12]}},{"type":"heading","depth":1,"payload":{"lines":[15,16]},"content":"体系结构","children":[]},{"type":"heading","depth":1,"payload":{"lines":[17,18]},"content":"物理层","children":[]},{"type":"heading","depth":1,"payload":{"lines":[19,20]},"content":"数据链路层","children":[]},{"type":"heading","depth":1,"payload":{"lines":[21,22]},"content":"网络层","children":[]},{"type":"heading","depth":1,"payload":{"lines":[23,24]},"content":"传输层","children":[]},{"type":"heading","depth":1,"payload":{"lines":[25,26]},"content":"应用层","children":[]},{"type":"heading","depth":1,"payload":{"lines":[27,28]},"content":"一些总结","children":[]}]},null)</script>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
<title>Markmap</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#mindmap {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/default.min.css" />
|
||||
<link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<svg id="mindmap"></svg>
|
||||
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script>
|
||||
<script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script>
|
||||
<script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script>
|
||||
<script>
|
||||
;((r) => {
|
||||
setTimeout(r)
|
||||
})(() => {
|
||||
const { markmap, mm } = window
|
||||
const toolbar = new markmap.Toolbar()
|
||||
toolbar.attach(mm)
|
||||
const el = toolbar.render()
|
||||
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px')
|
||||
document.body.append(el)
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
;((getMarkmap, getOptions, root, jsonOptions) => {
|
||||
const markmap = getMarkmap()
|
||||
window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root)
|
||||
})(
|
||||
() => window.markmap,
|
||||
null,
|
||||
{
|
||||
type: 'heading',
|
||||
depth: 0,
|
||||
payload: { lines: [1, 2] },
|
||||
content: '计算机网络',
|
||||
children: [
|
||||
{
|
||||
type: 'fence',
|
||||
depth: 1,
|
||||
content:
|
||||
'<pre><code class="language-mindmap">root(计算机网络)\n (体系机构)\n (物理层)\n (数据链路层)\n (网络层)\n (传输层)\n (应用层)\n</code></pre>\n',
|
||||
children: [],
|
||||
payload: { lines: [3, 12] },
|
||||
},
|
||||
{ type: 'heading', depth: 1, payload: { lines: [15, 16] }, content: '体系结构', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [17, 18] }, content: '物理层', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [19, 20] }, content: '数据链路层', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [21, 22] }, content: '网络层', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [23, 24] }, content: '传输层', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [25, 26] }, content: '应用层', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [27, 28] }, content: '一些总结', children: [] },
|
||||
],
|
||||
},
|
||||
null,
|
||||
)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -27,4 +27,4 @@
|
||||
"xMindPath": "../mark-map/cn.xmind",
|
||||
"mdPath": "../mark-map/cn-map.md"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -1,40 +1,72 @@
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Markmap</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#mindmap {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/default.min.css"><link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<svg id="mindmap"></svg>
|
||||
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script><script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script><script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script><script>(r => {
|
||||
setTimeout(r);
|
||||
})(() => {
|
||||
const {
|
||||
markmap,
|
||||
mm
|
||||
} = window;
|
||||
const toolbar = new markmap.Toolbar();
|
||||
toolbar.attach(mm);
|
||||
const el = toolbar.render();
|
||||
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px');
|
||||
document.body.append(el);
|
||||
})</script><script>((getMarkmap, getOptions, root, jsonOptions) => {
|
||||
const markmap = getMarkmap();
|
||||
window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root);
|
||||
})(() => window.markmap,null,{"type":"heading","depth":0,"payload":{"lines":[1,2]},"content":"操作系统","children":[{"type":"fence","depth":1,"content":"<pre><code class=\"language-mindmap\">root(操作系统)\n (系统概述)\n (进程管理)\n (进程管理)\n (文件管理)\n (输入、输出管理)\n</code></pre>\n","children":[],"payload":{"lines":[3,11]}},{"type":"heading","depth":1,"payload":{"lines":[14,15]},"content":"引论","children":[]},{"type":"heading","depth":1,"payload":{"lines":[16,17]},"content":"进程管理","children":[]},{"type":"heading","depth":1,"payload":{"lines":[18,19]},"content":"内存管理","children":[]},{"type":"heading","depth":1,"payload":{"lines":[20,21]},"content":"一些总结","children":[]},{"type":"heading","depth":1,"payload":{"lines":[22,23]},"content":"I/O管理","children":[]},{"type":"heading","depth":1,"payload":{"lines":[24,25]},"content":"文件管理","children":[]}]},null)</script>
|
||||
</body>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||
<title>Markmap</title>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#mindmap {
|
||||
display: block;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/default.min.css" />
|
||||
<link rel="stylesheet" href="https://unpkg.com/markmap-toolbar@0.15.4/dist/style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<svg id="mindmap"></svg>
|
||||
<script src="https://unpkg.com/d3@7.8.5/dist/d3.min.js"></script>
|
||||
<script src="https://unpkg.com/markmap-view@0.15.4/dist/browser/index.js"></script>
|
||||
<script src="https://unpkg.com/markmap-toolbar@0.15.4/dist/index.js"></script>
|
||||
<script>
|
||||
;((r) => {
|
||||
setTimeout(r)
|
||||
})(() => {
|
||||
const { markmap, mm } = window
|
||||
const toolbar = new markmap.Toolbar()
|
||||
toolbar.attach(mm)
|
||||
const el = toolbar.render()
|
||||
el.setAttribute('style', 'position:absolute;bottom:20px;right:20px')
|
||||
document.body.append(el)
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
;((getMarkmap, getOptions, root, jsonOptions) => {
|
||||
const markmap = getMarkmap()
|
||||
window.mm = markmap.Markmap.create('svg#mindmap', (getOptions || markmap.deriveOptions)(jsonOptions), root)
|
||||
})(
|
||||
() => window.markmap,
|
||||
null,
|
||||
{
|
||||
type: 'heading',
|
||||
depth: 0,
|
||||
payload: { lines: [1, 2] },
|
||||
content: '操作系统',
|
||||
children: [
|
||||
{
|
||||
type: 'fence',
|
||||
depth: 1,
|
||||
content:
|
||||
'<pre><code class="language-mindmap">root(操作系统)\n (系统概述)\n (进程管理)\n (进程管理)\n (文件管理)\n (输入、输出管理)\n</code></pre>\n',
|
||||
children: [],
|
||||
payload: { lines: [3, 11] },
|
||||
},
|
||||
{ type: 'heading', depth: 1, payload: { lines: [14, 15] }, content: '引论', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [16, 17] }, content: '进程管理', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [18, 19] }, content: '内存管理', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [20, 21] }, content: '一些总结', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [22, 23] }, content: 'I/O管理', children: [] },
|
||||
{ type: 'heading', depth: 1, payload: { lines: [24, 25] }, content: '文件管理', children: [] },
|
||||
],
|
||||
},
|
||||
null,
|
||||
)
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// 参考:https://theme-hope.vuejs.press/zh/guide/interface/code-theme.htm
|
||||
|
||||
// 浅色主题
|
||||
$code-light-them: "coldark-cold";
|
||||
$code-light-them: 'coldark-cold';
|
||||
|
||||
// 深色主题
|
||||
$code-dark-theme: "atom-dark";
|
||||
$code-dark-theme: 'atom-dark';
|
||||
|
||||
// 主题色
|
||||
//$theme-colors: #2196f3, #f26d6d, #3eaf7c, #fb9b5f;
|
||||
//$theme-colors: #2196f3, #f26d6d, #3eaf7c, #fb9b5f;
|
||||
|
||||
@@ -63,8 +63,8 @@
|
||||
--code-ln-wrapper-width: 3.5rem;
|
||||
|
||||
// font vars
|
||||
--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
|
||||
Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
|
||||
--font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans',
|
||||
'Droid Sans', 'Helvetica Neue', sans-serif;
|
||||
--font-family-code: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
|
||||
// layout vars
|
||||
@@ -77,7 +77,6 @@
|
||||
--homepage-width: 960px;
|
||||
}
|
||||
|
||||
|
||||
// plugin-docsearch
|
||||
.DocSearch {
|
||||
--docsearch-primary-color: var(--c-brand);
|
||||
@@ -106,7 +105,6 @@
|
||||
--medium-zoom-bg-color: var(--c-bg);
|
||||
}
|
||||
|
||||
|
||||
// plugin-pwa-popup
|
||||
.pwa-popup {
|
||||
--pwa-popup-text-color: var(--c-text);
|
||||
|
||||
@@ -4,4 +4,4 @@ $theme-color: #6184e8;
|
||||
//$sidebar-width: 20rem;
|
||||
//$sidebar-mobile-width: 16rem;
|
||||
//$content-width: 75rem;
|
||||
$home-page-width: 80rem;
|
||||
$home-page-width: 80rem;
|
||||
|
||||
@@ -7,29 +7,29 @@ permalink: /manuscripts/big-event-history.html
|
||||
|
||||
```mermaid
|
||||
%%{
|
||||
init: {
|
||||
init: {
|
||||
'theme': 'forest',
|
||||
"fontFamily": "monospace"
|
||||
}
|
||||
}
|
||||
}%%
|
||||
timeline
|
||||
title 408CSFamily时间轴
|
||||
2015 : 刚上学
|
||||
2015 : 刚上学
|
||||
: 接触计算机
|
||||
: 学习CS专业知识
|
||||
2019 : 初识408 <br> 年轻人别草率
|
||||
2020 : 武汉疫情解封 <br> 萌生念头,创建仓库
|
||||
2020 : 武汉疫情解封 <br> 萌生念头,创建仓库
|
||||
: 代号:408CSFamily
|
||||
|
||||
|
||||
2021 : 更新停滞期
|
||||
: 内容存在被抄袭风险 <br> 替换原有MIT协议
|
||||
: 内容存在被抄袭风险 <br> 替换原有MIT协议
|
||||
: 更新部分算法代码
|
||||
: 项目结构调整、优化
|
||||
|
||||
|
||||
2022 : 引入Vuepress框架大改造
|
||||
: 支持自动发版、部署 <br> Release版本下载
|
||||
: 全新出发,网站上线 <br> 域名:408.142vip.cn
|
||||
|
||||
|
||||
2023 : 分学科梳理文档
|
||||
: 基于Hope主题优化UI
|
||||
: 增加思维导图
|
||||
|
||||
@@ -5,17 +5,17 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '发展历程',
|
||||
link: '发展历程.md'
|
||||
link: '发展历程.md',
|
||||
},
|
||||
{
|
||||
text: '系统层次结构',
|
||||
link: '系统层次结构.md'
|
||||
link: '系统层次结构.md',
|
||||
},
|
||||
{
|
||||
text: '性能指标',
|
||||
link: '性能指标.md'
|
||||
}
|
||||
]
|
||||
link: '性能指标.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '数据的表示和运算',
|
||||
@@ -23,25 +23,25 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '数制和编码',
|
||||
link: '数制和编码.md'
|
||||
link: '数制和编码.md',
|
||||
},
|
||||
{
|
||||
text: '定点数',
|
||||
link: '定点数.md'
|
||||
link: '定点数.md',
|
||||
},
|
||||
{
|
||||
text: '浮点数',
|
||||
link: '浮点数.md'
|
||||
link: '浮点数.md',
|
||||
},
|
||||
{
|
||||
text: '算数逻辑单元',
|
||||
link: '算数逻辑单元.md'
|
||||
link: '算数逻辑单元.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '一些总结.md'
|
||||
}
|
||||
]
|
||||
link: '一些总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '存储系统',
|
||||
@@ -49,37 +49,37 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '存储器介绍',
|
||||
link: '存储器介绍.md'
|
||||
link: '存储器介绍.md',
|
||||
},
|
||||
{
|
||||
text: '存储器的层次化结构',
|
||||
link: '存储器的层次化结构.md'
|
||||
link: '存储器的层次化结构.md',
|
||||
},
|
||||
{
|
||||
text: '随机存储器',
|
||||
link: '随机存储器.md'
|
||||
link: '随机存储器.md',
|
||||
},
|
||||
{
|
||||
text: '主存和CPU',
|
||||
link: '主存和CPU.md'
|
||||
link: '主存和CPU.md',
|
||||
},
|
||||
{
|
||||
text: '双端口RAM和多模块存储器',
|
||||
link: '双端口RAM和多模块存储器.md'
|
||||
link: '双端口RAM和多模块存储器.md',
|
||||
},
|
||||
{
|
||||
text: '高速缓冲存储器',
|
||||
link: '高速缓冲存储器.md'
|
||||
link: '高速缓冲存储器.md',
|
||||
},
|
||||
{
|
||||
text: '虚拟存储器',
|
||||
link: '虚拟存储器.md'
|
||||
link: '虚拟存储器.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '一些总结.md'
|
||||
}
|
||||
]
|
||||
link: '一些总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '指令系统',
|
||||
@@ -87,21 +87,21 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '指令格式',
|
||||
link: '指令格式.md'
|
||||
link: '指令格式.md',
|
||||
},
|
||||
{
|
||||
text: '寻址方式',
|
||||
link: '寻址方式.md'
|
||||
link: '寻址方式.md',
|
||||
},
|
||||
{
|
||||
text: '指令集',
|
||||
link: '指令集.md'
|
||||
link: '指令集.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '一些总结.md'
|
||||
}
|
||||
]
|
||||
link: '一些总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '中央处理器',
|
||||
@@ -109,29 +109,29 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: 'CPU的基本介绍',
|
||||
link: 'CPU的基本介绍.md'
|
||||
link: 'CPU的基本介绍.md',
|
||||
},
|
||||
{
|
||||
text: '指令执行过程',
|
||||
link: '指令执行过程.md'
|
||||
link: '指令执行过程.md',
|
||||
},
|
||||
{
|
||||
text: '数据通路',
|
||||
link: '数据通路.md'
|
||||
link: '数据通路.md',
|
||||
},
|
||||
{
|
||||
text: '控制器',
|
||||
link: '控制器.md'
|
||||
link: '控制器.md',
|
||||
},
|
||||
{
|
||||
text: '指令流水线',
|
||||
link: '指令流水线.md'
|
||||
link: '指令流水线.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '一些总结.md'
|
||||
}
|
||||
]
|
||||
link: '一些总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '总线',
|
||||
@@ -139,25 +139,25 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '总线介绍',
|
||||
link: '总线介绍.md'
|
||||
link: '总线介绍.md',
|
||||
},
|
||||
{
|
||||
text: '总线仲裁',
|
||||
link: '总线仲裁.md'
|
||||
link: '总线仲裁.md',
|
||||
},
|
||||
{
|
||||
text: '总线的操作和定时',
|
||||
link: '总线的操作和定时.md'
|
||||
link: '总线的操作和定时.md',
|
||||
},
|
||||
{
|
||||
text: '总线标准',
|
||||
link: '总线标准.md'
|
||||
link: '总线标准.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '一些总结.md'
|
||||
}
|
||||
]
|
||||
link: '一些总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '输入输出系统',
|
||||
@@ -165,24 +165,24 @@ export const cppSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本概念',
|
||||
link: '基本概念.md'
|
||||
link: '基本概念.md',
|
||||
},
|
||||
{
|
||||
text: '外部设备',
|
||||
link: '外部设备.md'
|
||||
link: '外部设备.md',
|
||||
},
|
||||
{
|
||||
text: '输入输出接口',
|
||||
link: '输入输出接口.md'
|
||||
link: '输入输出接口.md',
|
||||
},
|
||||
{
|
||||
text: '输入输出方式',
|
||||
link: '输入输出方式.md'
|
||||
link: '输入输出方式.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '一些总结.md'
|
||||
}
|
||||
]
|
||||
}
|
||||
link: '一些总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -62,5 +62,5 @@ permalink: /manuscripts/ccp.html
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 《计算机组成原理》 第二版 唐朔飞
|
||||
- 《计算机组成原理》 第二版 唐朔飞
|
||||
- 《计算机组成原理-王道考研》 2019 王道论坛
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 一些总结
|
||||
permalink: /manuscripts/ccp/cpu/summary.html
|
||||
---
|
||||
|
||||
# 一些总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 指令执行过程
|
||||
permalink: /manuscripts/ccp/cpu/instruct-line.html
|
||||
---
|
||||
|
||||
# 指令流水线
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 控制器
|
||||
permalink: /manuscripts/ccp/cpu/controller.html
|
||||
---
|
||||
|
||||
# 控制器
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 数据通路
|
||||
permalink: /manuscripts/ccp/cpu/data-pathways.html
|
||||
---
|
||||
|
||||
# 数据通路
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 数据通路
|
||||
permalink: /manuscripts/ccp/store-memory/summary.html
|
||||
---
|
||||
|
||||
# 一些总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 主存和CPU
|
||||
permalink: /manuscripts/ccp/store-memory/cpu-storage.html
|
||||
---
|
||||
|
||||
# 主存和CPU
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 双端口RAM和多模块存储器
|
||||
permalink: /manuscripts/ccp/store-memory/ram-storage.html
|
||||
---
|
||||
|
||||
# 双端口RAM和多模块存储器
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 存储器介绍
|
||||
permalink: /manuscripts/ccp/store-memory/storage-introduce.html
|
||||
---
|
||||
|
||||
# 存储器介绍
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 随机存储器
|
||||
permalink: /manuscripts/ccp/store-memory/ram.html
|
||||
---
|
||||
|
||||
# 随机存储器
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 一些总结
|
||||
permalink: /manuscripts/ccp/bus/summary.html
|
||||
---
|
||||
|
||||
# 一些总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 总线介绍
|
||||
permalink: /manuscripts/ccp/bus/introduce.html
|
||||
---
|
||||
|
||||
# 总线介绍
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 总线仲裁
|
||||
permalink: /manuscripts/ccp/bus/bus-quorum.html
|
||||
---
|
||||
|
||||
# 总线仲裁
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 总线标准
|
||||
permalink: /manuscripts/ccp/bus/bus-standard.html
|
||||
---
|
||||
|
||||
# 总线标准
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 总线的操作和定时
|
||||
permalink: /manuscripts/ccp/bus/operate-schedule.html
|
||||
---
|
||||
|
||||
# 总线的操作和定时
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 寻址方式
|
||||
permalink: /manuscripts/ccp/directive-system/address-method.html
|
||||
---
|
||||
|
||||
# 寻址方式
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 总线介绍
|
||||
permalink: /manuscripts/ccp/directive-system/directive-style.html
|
||||
---
|
||||
|
||||
# 指令格式
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 指令集
|
||||
permalink: /manuscripts/ccp/directive-system/directive-collection.html
|
||||
---
|
||||
|
||||
# 指令集
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 一些总结
|
||||
permalink: /manuscripts/ccp/data-represent-compute/summary.html
|
||||
---
|
||||
|
||||
# 一些总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 定点数
|
||||
permalink: /manuscripts/ccp/data-represent-compute/fixed-number.html
|
||||
---
|
||||
|
||||
# 定点数
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 数制和编码
|
||||
permalink: /manuscripts/ccp/data-represent-compute/number-coding.html
|
||||
---
|
||||
|
||||
# 数制和编码
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 浮点数
|
||||
permalink: /manuscripts/ccp/data-represent-compute/float-number.html
|
||||
---
|
||||
|
||||
# 浮点数
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 发展历程
|
||||
permalink: /manuscripts/ccp/ccp-introduction/develop.html
|
||||
---
|
||||
|
||||
# 发展历程
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 性能指标
|
||||
permalink: /manuscripts/ccp/ccp-introduction/performance-metrics.html
|
||||
---
|
||||
|
||||
# 性能指标
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 系统层次结构
|
||||
permalink: /manuscripts/ccp/ccp-introduction/system-layer-info.html
|
||||
---
|
||||
|
||||
# 系统层次结构
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 基本概念
|
||||
permalink: /manuscripts/ccp/in-out/base-concept.html
|
||||
---
|
||||
|
||||
# 基本概念
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 外部设备
|
||||
permalink: /manuscripts/ccp/in-out/outer-equipment.html
|
||||
---
|
||||
|
||||
# 外部设备
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 输入输出接口
|
||||
permalink: /manuscripts/ccp/in-out/io-interface.html
|
||||
---
|
||||
|
||||
# 输入输出接口
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 算数逻辑单元
|
||||
permalink: /manuscripts/ccp/in-out/io-model.html
|
||||
---
|
||||
|
||||
# 输入输出方式
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 变更记录
|
||||
permalink: /manuscripts/changelog.html
|
||||
---
|
||||
|
||||
# 变更记录
|
||||
|
||||
该文件包含 `408CSFamily` 仓库和网站所有显着更改。
|
||||
|
||||
@@ -5,13 +5,13 @@ export const cnSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本介绍',
|
||||
link: '1.引论.md'
|
||||
link: '1.引论.md',
|
||||
},
|
||||
{
|
||||
text: '体系结构与参考模型',
|
||||
link: '2.体系结构与参考模型.md'
|
||||
}
|
||||
]
|
||||
link: '2.体系结构与参考模型.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '物理层',
|
||||
@@ -19,21 +19,21 @@ export const cnSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '通信基础',
|
||||
link: '1.通信基础.md'
|
||||
link: '1.通信基础.md',
|
||||
},
|
||||
{
|
||||
text: '传输介质',
|
||||
link: '2.传输介质.md'
|
||||
link: '2.传输介质.md',
|
||||
},
|
||||
{
|
||||
text: '物理层设备',
|
||||
link: '3.物理层设备.md'
|
||||
link: '3.物理层设备.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '4.总结.md'
|
||||
}
|
||||
]
|
||||
link: '4.总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// text: '数据链路层',
|
||||
@@ -122,22 +122,22 @@ export const cnSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '提供的服务',
|
||||
link: '1.提供的服务.md'
|
||||
link: '1.提供的服务.md',
|
||||
},
|
||||
{
|
||||
text: 'UDP协议',
|
||||
link: '2.UDP协议.md'
|
||||
link: '2.UDP协议.md',
|
||||
},
|
||||
{
|
||||
text: 'TCP协议',
|
||||
link: '3.TCP协议.md'
|
||||
link: '3.TCP协议.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '4.总结.md'
|
||||
}
|
||||
]
|
||||
}
|
||||
link: '4.总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// text: '应用层',
|
||||
// prefix: '应用层',
|
||||
|
||||
@@ -3,7 +3,6 @@ title: 计算机网络
|
||||
permalink: /manuscripts/cn.html
|
||||
---
|
||||
|
||||
|
||||
# 计算机网络
|
||||
|
||||

|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: UDP协议
|
||||
permalink: /manuscripts/cn/trans-port-layer/udp.html
|
||||
---
|
||||
|
||||
# UDP协议
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: TCP协议
|
||||
permalink: /manuscripts/cn/trans-port-layer/tcp.html
|
||||
---
|
||||
|
||||
# TCP协议
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: DNS
|
||||
permalink: /manuscripts/cn/application-layer/dns.html
|
||||
---
|
||||
|
||||
# DNS
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: FTP
|
||||
permalink: /manuscripts/cn/application-layer/ftp.html
|
||||
---
|
||||
|
||||
# FTP
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: HTTP
|
||||
permalink: /manuscripts/cn/application-layer/http.html
|
||||
---
|
||||
|
||||
# HTTP
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 电子邮件
|
||||
permalink: /manuscripts/cn/application-layer/email.html
|
||||
---
|
||||
|
||||
# 电子邮件
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 组帧
|
||||
permalink: /manuscripts/cn/data-link-layer/framing.html
|
||||
---
|
||||
|
||||
# 组帧
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 差错控制
|
||||
permalink: /manuscripts/cn/data-link-layer/error-control.html
|
||||
---
|
||||
|
||||
# 差错控制
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 通信设备
|
||||
permalink: /manuscripts/cn/data-link-layer/equipment.html
|
||||
---
|
||||
|
||||
# 通信设备
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 传输介质
|
||||
permalink: /manuscripts/cn/physical-layer/transmission-medium.html
|
||||
---
|
||||
|
||||
# 传输介质
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 一些总结
|
||||
permalink: /manuscripts/cn/network-layer/summary.html
|
||||
---
|
||||
|
||||
# 一些总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -6,17 +6,17 @@ export const dsSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本概念',
|
||||
link: '1.基本概念.md'
|
||||
link: '1.基本概念.md',
|
||||
},
|
||||
{
|
||||
text: '三要素',
|
||||
link: '2.三要素.md'
|
||||
link: '2.三要素.md',
|
||||
},
|
||||
{
|
||||
text: '算法和算法评价',
|
||||
link: '3.算法和算法评价.md'
|
||||
}
|
||||
]
|
||||
link: '3.算法和算法评价.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '线性表',
|
||||
@@ -25,21 +25,21 @@ export const dsSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基础概念和操作',
|
||||
link: '1.基础概念和操作.md'
|
||||
link: '1.基础概念和操作.md',
|
||||
},
|
||||
{
|
||||
text: '顺序表示',
|
||||
link: '2.顺序表示.md'
|
||||
link: '2.顺序表示.md',
|
||||
},
|
||||
{
|
||||
text: '链式表示',
|
||||
link: '3.链式表示.md'
|
||||
link: '3.链式表示.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '4.总结.md'
|
||||
}
|
||||
]
|
||||
link: '4.总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '栈',
|
||||
@@ -48,17 +48,17 @@ export const dsSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本概念和操作',
|
||||
link: '1.栈的基本概念和基本操作.md'
|
||||
link: '1.栈的基本概念和基本操作.md',
|
||||
},
|
||||
{
|
||||
text: '顺序存储结构',
|
||||
link: '2.栈的顺序存储结构.md'
|
||||
link: '2.栈的顺序存储结构.md',
|
||||
},
|
||||
{
|
||||
text: '链式存储结构',
|
||||
link: '3.栈的链式存储结构.md'
|
||||
}
|
||||
]
|
||||
link: '3.栈的链式存储结构.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '队列',
|
||||
@@ -67,20 +67,21 @@ export const dsSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本概念和操作',
|
||||
link: '4.队列的基本概念和操作.md'
|
||||
}, {
|
||||
link: '4.队列的基本概念和操作.md',
|
||||
},
|
||||
{
|
||||
text: '顺序存储结构',
|
||||
link: '5.队列的顺序存储结构.md'
|
||||
link: '5.队列的顺序存储结构.md',
|
||||
},
|
||||
{
|
||||
text: '链式存储结构',
|
||||
link: '6.队列的链式存储结构.md'
|
||||
link: '6.队列的链式存储结构.md',
|
||||
},
|
||||
{
|
||||
text: '栈VS队列补充',
|
||||
link: '7.栈VS队列补充.md'
|
||||
}
|
||||
]
|
||||
link: '7.栈VS队列补充.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// text: '串',
|
||||
@@ -174,29 +175,29 @@ export const dsSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本概念',
|
||||
link: '1.基本概念.md'
|
||||
link: '1.基本概念.md',
|
||||
},
|
||||
{
|
||||
text: '顺序查找',
|
||||
link: '2.顺序查找.md'
|
||||
link: '2.顺序查找.md',
|
||||
},
|
||||
{
|
||||
text: '折半查找',
|
||||
link: '3.折半查找.md'
|
||||
link: '3.折半查找.md',
|
||||
},
|
||||
{
|
||||
text: 'B树和B+树',
|
||||
link: '4.B树和B+树.md'
|
||||
link: '4.B树和B+树.md',
|
||||
},
|
||||
{
|
||||
text: '散列表',
|
||||
link: '5.散列表.md'
|
||||
link: '5.散列表.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '6.总结.md'
|
||||
}
|
||||
]
|
||||
link: '6.总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
text: '排序',
|
||||
@@ -205,36 +206,36 @@ export const dsSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '基本概念',
|
||||
link: '1.基本概念.md'
|
||||
link: '1.基本概念.md',
|
||||
},
|
||||
{
|
||||
text: '插入排序',
|
||||
link: '2.插入排序.md'
|
||||
link: '2.插入排序.md',
|
||||
},
|
||||
{
|
||||
text: '交换排序',
|
||||
link: '3.交换排序.md'
|
||||
link: '3.交换排序.md',
|
||||
},
|
||||
{
|
||||
text: '选择排序',
|
||||
link: '4.选择排序.md'
|
||||
link: '4.选择排序.md',
|
||||
},
|
||||
{
|
||||
text: '归并排序',
|
||||
link: '5.归并排序.md'
|
||||
link: '5.归并排序.md',
|
||||
},
|
||||
{
|
||||
text: '基数排序',
|
||||
link: '6.基数排序.md'
|
||||
link: '6.基数排序.md',
|
||||
},
|
||||
{
|
||||
text: '外部排序',
|
||||
link: '7.外部排序.md'
|
||||
link: '7.外部排序.md',
|
||||
},
|
||||
{
|
||||
text: '一些总结',
|
||||
link: '8.总结.md'
|
||||
}
|
||||
]
|
||||
}
|
||||
link: '8.总结.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: KMP算法
|
||||
permalink: /manuscripts/ds/string/kmp.html
|
||||
---
|
||||
|
||||
# KMP算法
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 图的存储
|
||||
permalink: /manuscripts/ds/graph/store.html
|
||||
---
|
||||
|
||||
# 图的存储
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 图的遍历
|
||||
permalink: /manuscripts/ds/graph/traverse.html
|
||||
---
|
||||
|
||||
# 图的遍历
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 图的应用
|
||||
permalink: /manuscripts/ds/graph/apply.html
|
||||
---
|
||||
|
||||
# 图的应用
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 一些总结
|
||||
permalink: /manuscripts/ds/graph/summary.html
|
||||
---
|
||||
|
||||
# 总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 基础概念
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/introduction-basic-concepts.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 基础概念 }]
|
||||
---
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 数据结构三要素
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/introduction-three-elements.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 数据结构三要素 }]
|
||||
---
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 算法和算法评价
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/introduction-algorithm-evaluation.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 算法和算法评价 }]
|
||||
---
|
||||
|
||||
@@ -16,7 +16,7 @@ root(算法和算法评价)
|
||||
(可行性)
|
||||
(输入)
|
||||
(输出)
|
||||
|
||||
|
||||
(算法的评价)
|
||||
(时间复杂度)
|
||||
(空间复杂度)
|
||||
@@ -71,8 +71,6 @@ int test(n) {
|
||||
.....
|
||||
}
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
在这个简单的函数里
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 交换排序
|
||||
permalink: /manuscripts/ds/sort-algorithm/swap-sort.html
|
||||
---
|
||||
|
||||
# 交换排序
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 选择排序
|
||||
permalink: /manuscripts/ds/sort-algorithm/select-sort.html
|
||||
---
|
||||
|
||||
# 选择排序
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 归并排序
|
||||
permalink: /manuscripts/ds/sort-algorithm/merge-sort.html
|
||||
---
|
||||
|
||||
# 归并排序
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 外部排序
|
||||
permalink: /manuscripts/ds/sort-algorithm/outer-sort.html
|
||||
---
|
||||
|
||||
# 外部排序
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 一些总结
|
||||
permalink: /manuscripts/ds/sort-algorithm/summary.html
|
||||
---
|
||||
|
||||
# 总结
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 折半查找
|
||||
permalink: /manuscripts/ds/search-algorithm/binary-search.html
|
||||
---
|
||||
|
||||
# 折半查找
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: B树和B+树
|
||||
permalink: /manuscripts/ds/search-algorithm/balance-tree.html
|
||||
---
|
||||
|
||||
# B树和B+树
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 散列表
|
||||
permalink: /manuscripts/ds/search-algorithm/hash-table.html
|
||||
---
|
||||
|
||||
# 散列表
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 算法和算法评价
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/stack-queue/stack-basic-concepts.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 栈的基本概念和基本操作 }]
|
||||
---
|
||||
|
||||
@@ -46,4 +46,4 @@ head:
|
||||
- `GetTop(S,&x)`: 读栈顶元素,若栈`S`非空,用x返回栈顶元素。
|
||||
- `ClearStack(&S)`: 销毁栈,释放栈`S`占用的存储空间。
|
||||
|
||||
> Tips: `&`是C++特有的,可以用来表示引用调用,类似`传址目的`,可以类比指针。 当然,在C语言中*代表指针,指向存储地址,也是具有`传址目的`
|
||||
> Tips: `&`是C++特有的,可以用来表示引用调用,类似`传址目的`,可以类比指针。 当然,在C语言中\*代表指针,指向存储地址,也是具有`传址目的`
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 栈的顺序存储结构
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/stack-queue/stack-sequential-storage.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 栈的顺序存储结构 }]
|
||||
---
|
||||
|
||||
@@ -95,7 +95,7 @@ bool Push(SqStack &S,ElemType x){
|
||||
}else{
|
||||
// 可进栈,栈顶指针+1,再元素入栈
|
||||
S.data[++S.top]=x;
|
||||
|
||||
|
||||
// 入栈成功
|
||||
return true;
|
||||
}
|
||||
@@ -121,7 +121,7 @@ bool Pop(SqStack &S,ElemType &x){
|
||||
}else{
|
||||
// 栈非空,先元素出栈,再进行指针-1
|
||||
x=S.data[S.top--];
|
||||
|
||||
|
||||
// 出栈成功,返回true
|
||||
return true;
|
||||
}
|
||||
@@ -141,15 +141,15 @@ bool Pop(SqStack &S,ElemType &x){
|
||||
```cpp
|
||||
|
||||
bool GetTop(SqStack S,ElemType &x){
|
||||
|
||||
|
||||
if(S.top==-1){
|
||||
// 栈空,无栈顶元素,返回false
|
||||
return false;
|
||||
}else{
|
||||
|
||||
|
||||
// 通过栈顶指针,获取栈顶元素,赋值给变量x
|
||||
x=S.data[S.top];
|
||||
|
||||
|
||||
// 读取栈顶元素成功,返回true
|
||||
return true;
|
||||
}
|
||||
@@ -170,7 +170,7 @@ bool GetTop(SqStack S,ElemType &x){
|
||||
|
||||
`共享栈`:利用栈底位置相对不变的特性,可以让两个顺序栈共享一个`一维存储空间`,将两个栈的栈底分别设置在共享空间的两端,两个栈顶则向共享空间的中间延伸
|
||||
|
||||
>Tips: 类似头对头,一致对外这种感觉,噗呲哈哈
|
||||
> Tips: 类似头对头,一致对外这种感觉,噗呲哈哈
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 栈的链式存储结构
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/stack-queue/stack-chained-storage.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 栈的链式存储结构 }]
|
||||
---
|
||||
|
||||
@@ -32,14 +32,14 @@ typedef struct LinkNode{
|
||||
|
||||
// 更为详细的定义
|
||||
|
||||
typedef struct StackNode
|
||||
typedef struct StackNode
|
||||
{
|
||||
int data;//结点数据域
|
||||
struct StackNode* next;//结点指针域
|
||||
}StackNode,* Linktop;
|
||||
|
||||
|
||||
//链栈的数据结构
|
||||
typedef struct LinkStack
|
||||
typedef struct LinkStack
|
||||
{
|
||||
Linktop top; //栈顶结点,定义了一个指向上个结构体的指针
|
||||
int count;//元素个数
|
||||
@@ -78,12 +78,12 @@ bool linkStackPushNode(LinkStack* linkStack,int e){
|
||||
// 开辟栈结点元素内存控件
|
||||
StackNode* node = (StackNode*)malloc(sizeof(StackNode));
|
||||
// 新结点指针域指向链表,即栈顶指针位置,元素加入链表
|
||||
node->next = linkStack->top;
|
||||
node->next = linkStack->top;
|
||||
// 新结点数据域赋值
|
||||
node->data = e;
|
||||
// 元素进栈,移动栈顶指针,指向新入栈的元素
|
||||
linkStack->top = node;
|
||||
// 链栈元素总数+1
|
||||
linkStack->top = node;
|
||||
// 链栈元素总数+1
|
||||
linkStack->count++;
|
||||
//链栈入栈成功,返回true
|
||||
return true;
|
||||
@@ -117,10 +117,10 @@ bool linkStackPopNode(LinkStack* linkStack,int *e){
|
||||
// 结点元素数据域赋值给变量e
|
||||
*e = linkStack->data;
|
||||
// 移动栈顶指向,栈顶指针指向待出栈结点的后继结点
|
||||
linkStack->top = node->next;
|
||||
linkStack->top = node->next;
|
||||
// 变量e已被赋值,释放链栈出栈元素的内存控件
|
||||
free(node);
|
||||
// 链栈元素个数-1
|
||||
free(node);
|
||||
// 链栈元素个数-1
|
||||
linkStack->count--;
|
||||
// 出栈成功,返回true.
|
||||
return true;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 队列的基本概念和操作
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/stack-queue/queue-basic-concepts.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 队列的基本概念和操作 }]
|
||||
---
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 队列的顺序存储结构
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/stack-queue/queue-sequential-storage.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 队列的顺序存储结构 }]
|
||||
---
|
||||
|
||||
@@ -105,7 +105,7 @@ typedef struct {
|
||||
### 如何区别队空还是队满
|
||||
|
||||
> 为了很好的区别循环队列的`队空`还是`队满`的情况,一般有三种处理方式.
|
||||
>
|
||||
|
||||
#### 牺牲一个单元来区分队空和队满
|
||||
|
||||
这种方式**要求在入队时少用一个队列单元**,是一种比较普遍的做法。约定:
|
||||
@@ -155,8 +155,6 @@ int EnLoopQueue(SqQueue &Q, ElemType x){
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 出队算法
|
||||
// 头结点删除:x=Q.data[Q.front];Q.front=(Q.front +1)%Maxsize;Q.tag=0
|
||||
// 队满条件:Q.front == Q.rear且Q.tag=1
|
||||
@@ -233,7 +231,7 @@ bool EnLoopQueue(SqQueue &Q, ElemType x){
|
||||
return false;
|
||||
}
|
||||
// 队列未满,可进行入队操作【队尾进行】
|
||||
|
||||
|
||||
// 队尾指针指向的数据域进行赋值
|
||||
Q.data[Q.rear]=x;
|
||||
|
||||
@@ -259,7 +257,7 @@ bool EnLoopQueue(SqQueue &Q, ElemType x){
|
||||
* @LastEditTime: 2021-03-18 20:32:18
|
||||
*/
|
||||
bool DeLoopQueue(SqQueue &Q, ElemType &x){
|
||||
|
||||
|
||||
// 判断循环队列是否为空队列
|
||||
if(Q.rear==Q.front){
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ permalink: /manuscripts/ds/stack-queue/queue-chained-storage.html
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 队列的链式存储结构 }]
|
||||
---
|
||||
|
||||
# 队列的链式存储结构
|
||||
|
||||
`链队列`:和顺序队列一样,基于队列的链式表示叫做`链队列`,实际上为:**一个同时带有队头指针和队尾指针的单链表**
|
||||
@@ -157,7 +158,7 @@ void EnLinkQueue(LinkQueue &Q, ElemType x){
|
||||
* @LastEditTime: 2021-02-22 06:15:06
|
||||
*/
|
||||
bool DeLinkQueue(LinkQueue &Q, ElemType &x){
|
||||
|
||||
|
||||
// 判断队列是否为空
|
||||
if(Q.front==Q.rear){
|
||||
// 队列为空,没有元素出队
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 栈VS队列补充
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/stack-queue/stack-vs-queue.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 栈VS队列补充 }]
|
||||
---
|
||||
|
||||
@@ -52,7 +52,6 @@ int Fibonacci(n){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
上面很基础的代码,是分`n=0`和`n=1`的情况,先进行过滤,其他情况下则进行递归,其实在日常开发中,经常会有简化的函数封装
|
||||
@@ -85,7 +84,7 @@ int Fibonacci(int n) {
|
||||
return n;
|
||||
int f = 0, g = 1;
|
||||
int result = 0;
|
||||
|
||||
|
||||
// 迭代
|
||||
for(int i = 1; i < n; i++){
|
||||
result = f + g;
|
||||
@@ -99,7 +98,7 @@ int Fibonacci(int n) {
|
||||
int Fibonacci(n){
|
||||
// 注意溢出
|
||||
int arr[100]={0,1,1}
|
||||
|
||||
|
||||
// 叠加,结果存放在数组中
|
||||
for(let i=3;i<=n;i++){
|
||||
arr[i]=arr[i-1]+arr[i-2]
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
title: 线索二叉树
|
||||
permalink: /manuscripts/ds/tree/threaded-binary-tree.html
|
||||
---
|
||||
|
||||
# 线索二叉树
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
# 树的应用
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 基础概念
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/linear-table/basic-concepts.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 线性表的基础概念和操作 }]
|
||||
---
|
||||
|
||||
@@ -25,7 +25,7 @@ root(数据结构三要素)
|
||||
|
||||
线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。一般表示:
|
||||
|
||||
L=(a<sub>1</sub>,a<sub>2</sub>,a<sub>3</sub>......a<sub>n</sub>) 其中n可以理解为表长(线性表的长度),n=0时候,即表空
|
||||
L=(a<sub>1</sub>,a<sub>2</sub>,a<sub>3</sub>......a<sub>n</sub>) 其中n可以理解为表长(线性表的长度),n=0时候,即表空
|
||||
|
||||
- `表头元素`:线性表中唯一的“第一个”数据元素,例如a<sub>1</sub>
|
||||
- `表尾元素`:线性表中唯一的“最后一个”数据元素,例如a<sub>n</sub>
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
---
|
||||
title: 顺序表示
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/linear-table/sequential-representation.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 顺序表示 , content: 顺序表示 }]
|
||||
---
|
||||
|
||||
|
||||
# 顺序表示
|
||||
|
||||
## 定义
|
||||
@@ -42,12 +41,11 @@ typedef struct{
|
||||
```c
|
||||
#define InitSize 100 // 表长度初始化
|
||||
|
||||
|
||||
// 动态分配数组顺序表的结构体定义
|
||||
typedef struct{
|
||||
ElemType *data; // 动态分配数组的指针
|
||||
int MaxSize,length; // 数组的最大容量和当前元素个数
|
||||
}SqList;
|
||||
}SqList;
|
||||
|
||||
```
|
||||
|
||||
@@ -58,7 +56,6 @@ typedef struct{
|
||||
|
||||
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);
|
||||
|
||||
|
||||
// C++ 中
|
||||
|
||||
L.data=new ElemType[InitSize];
|
||||
@@ -170,7 +167,7 @@ bool ListDelete(SqList &L, int i, ElemType &e){
|
||||
if(L.length >= MaxSize){
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 引用变量e赋值
|
||||
e=L.data[i-1]
|
||||
|
||||
@@ -180,7 +177,7 @@ bool ListDelete(SqList &L, int i, ElemType &e){
|
||||
L.data[j-1]=L.data[j];
|
||||
}
|
||||
|
||||
// 此时,表L中的表尾元素和倒数第二个元素值一样,将表的长度-1
|
||||
// 此时,表L中的表尾元素和倒数第二个元素值一样,将表的长度-1
|
||||
|
||||
// 表长度减1
|
||||
L.length--;
|
||||
@@ -228,10 +225,10 @@ int LocateElem(SqList L,ElemType e){
|
||||
return i+1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 未命中,返回0,即:没有
|
||||
return 0;
|
||||
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
title: 链式表示
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/linear-table/chained-representation.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 线性表的链式表示 }]
|
||||
---
|
||||
|
||||
# 链式表示
|
||||
|
||||
```mindmap
|
||||
@@ -95,32 +96,31 @@ typeof struct LNode{
|
||||
* @LastEditTime: 2020-03-04 23:39:16
|
||||
*/
|
||||
LinkList CreateListWithStartNode(LinkList &L){
|
||||
|
||||
|
||||
LNode *s;
|
||||
int x;
|
||||
L=(LinkList)malloc(sizeof(LNode)); // 创建头结点L
|
||||
L->next=NULL; // 初始化空链表
|
||||
|
||||
|
||||
// 控制台输入值
|
||||
scanf("%d",&x);
|
||||
|
||||
|
||||
// 输入9999 表示结束
|
||||
while(x!==9999){
|
||||
// 开辟新结点存储空间
|
||||
s=(LNode*)malloc(sizeof(LNode));
|
||||
s=(LNode*)malloc(sizeof(LNode));
|
||||
// 结点数据域赋值
|
||||
s->data=x;
|
||||
s->data=x;
|
||||
// 修改指针,新结点插入表中【注意:L->next为头结点的指针域】
|
||||
s->next=L->next;
|
||||
L->next=s;
|
||||
scanf("%d",&x);
|
||||
}
|
||||
|
||||
|
||||
// 返回单链表
|
||||
return L;
|
||||
}
|
||||
|
||||
|
||||
```
|
||||
|
||||
特点:
|
||||
@@ -132,7 +132,7 @@ LinkList CreateListWithStartNode(LinkList &L){
|
||||
|
||||
头插法建立的单链表,链表中结点的次序和输入数据的顺序不一致【相反】,尾插法则很好的避免了这个问题;
|
||||
|
||||
>新结点插入到当前链表的表尾上,必须增加一个尾指针r,始终指向当前链表的尾结点;
|
||||
> 新结点插入到当前链表的表尾上,必须增加一个尾指针r,始终指向当前链表的尾结点;
|
||||
|
||||
```cpp
|
||||
|
||||
@@ -145,37 +145,36 @@ LinkList CreateListWithStartNode(LinkList &L){
|
||||
* @LastEditTime: 2020-03-04 23:39:16
|
||||
*/
|
||||
LinkList CreateListWithEndNode(LinkList &L){
|
||||
|
||||
|
||||
|
||||
int x; // 输入结点值
|
||||
L=(LinkList)malloc(sizeof(LNode));
|
||||
LNode *s; // 新结点s
|
||||
LNode *r=L; // r为尾指针
|
||||
|
||||
|
||||
// 控制台输入值
|
||||
scanf("%d",&x);
|
||||
|
||||
|
||||
while(x!==9999){
|
||||
// 开辟新结点存储空间
|
||||
s=(LNode *)malloc(sizeof(LNode));
|
||||
|
||||
|
||||
// 新结点s的数据域赋值为x
|
||||
s->data=x;
|
||||
// 单链表L的尾指针指向新的结点s
|
||||
r->next=s;
|
||||
|
||||
|
||||
// 指针r指向新的表尾结点
|
||||
r=s;
|
||||
|
||||
scanf("%d",&x);
|
||||
}
|
||||
|
||||
|
||||
// 表尾指针置空【重要】
|
||||
r->next=NULL;
|
||||
|
||||
// 返回单链表
|
||||
return L;
|
||||
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
@@ -203,14 +202,13 @@ LinkList CreateListWithEndNode(LinkList &L){
|
||||
LNode *GetElem(LinkList L,int i){
|
||||
int j=1; // 查询计数,初始为1
|
||||
LNode *p=L->next; // 单链表头结点指针赋值给指针p
|
||||
|
||||
|
||||
// 第0个元素,则指向头结点,返回头结点
|
||||
if(i==0){
|
||||
// 头结点包含数据域和指针域
|
||||
return L;
|
||||
}
|
||||
|
||||
|
||||
// 不等于0,却小于1,则i为负数无效,直接返回NULL,查询结果空;
|
||||
if(i<1){
|
||||
return NULL;
|
||||
@@ -218,7 +216,7 @@ LNode *GetElem(LinkList L,int i){
|
||||
|
||||
// p存在且计数没有走到初始i的位置
|
||||
while(p&&j<i){
|
||||
|
||||
|
||||
// 指针后移
|
||||
p=p->next;
|
||||
|
||||
@@ -231,7 +229,7 @@ LNode *GetElem(LinkList L,int i){
|
||||
|
||||
// 跳出循环,返回第i个结点的指针
|
||||
return p;
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
@@ -243,7 +241,7 @@ LNode *GetElem(LinkList L,int i){
|
||||
|
||||
```cpp
|
||||
LNode *LocateElem(LinkList L,ElemType e){
|
||||
|
||||
|
||||
// 指针【哨兵】
|
||||
LNode *p=L->next;
|
||||
// 从第1个结点开始查找数据域(data)为e的结点
|
||||
@@ -251,12 +249,12 @@ LNode *LocateElem(LinkList L,ElemType e){
|
||||
// 无法匹配,指针后移
|
||||
p=p->next;
|
||||
}
|
||||
|
||||
|
||||
// 注意:p为NULL的时候,说明单链表已经遍历的尾结点了,跳出循环,没有找到目标结点;
|
||||
|
||||
// 查找到第1个匹配的结点,跳出循环,返回结点指针
|
||||
return p;
|
||||
//
|
||||
//
|
||||
}
|
||||
|
||||
```
|
||||
@@ -276,7 +274,7 @@ LNode *LocateElem(LinkList L,ElemType e){
|
||||
```cpp
|
||||
// 循环遍历,时间复杂度O(n)
|
||||
p=GetElem(L,i-1);
|
||||
|
||||
|
||||
// 移动指针,时间复杂度O(1)
|
||||
s->next=p->next;
|
||||
p->next=s;
|
||||
@@ -312,7 +310,6 @@ LNode *LocateElem(LinkList L,ElemType e){
|
||||
s->next=p->next;
|
||||
p->next=s;
|
||||
|
||||
|
||||
// 经典的借助变量,进行值交换
|
||||
temp=p->data;
|
||||
p->data=s->data;
|
||||
@@ -348,7 +345,7 @@ free(q)
|
||||
|
||||
和插入算法一样,时间都消耗在查询前驱结点上,时间复杂度为:O(n)
|
||||
|
||||
> 删除单链表L中给点结点元素*p,通常是按值查找获取到p结点的前驱元素,再执行删除操作,这样很明显会导致时间复杂度为:O(n),主要都消耗在`按值查找`上
|
||||
> 删除单链表L中给点结点元素\*p,通常是按值查找获取到p结点的前驱元素,再执行删除操作,这样很明显会导致时间复杂度为:O(n),主要都消耗在`按值查找`上
|
||||
|
||||
这里可以利用p结点的后继结点将p结点删除
|
||||
|
||||
@@ -360,11 +357,11 @@ free(q)
|
||||
```cpp
|
||||
// 存放p的后继结点指针
|
||||
q=p->next;
|
||||
|
||||
|
||||
// 结点p的后继结点元素赋值给结点p,避免后继结点的数据域丢失
|
||||
p->data=p->next->data;
|
||||
p->next=q->next;
|
||||
|
||||
|
||||
// 此时q指向更换数据域后的p,即原来p的后继结点
|
||||
free(q)
|
||||
|
||||
@@ -420,7 +417,7 @@ root(双链表)
|
||||
|
||||
- `数据域` 存放数据信息
|
||||
- `prior指针域` 指向结点的前驱结点
|
||||
- `next指针域` 指向结点的后继结点
|
||||
- `next指针域` 指向结点的后继结点
|
||||
|
||||
```cpp
|
||||
// 双链表结点类型
|
||||
@@ -512,7 +509,7 @@ typedef struct DNode{
|
||||
|
||||
#### 特点
|
||||
|
||||
- 在循环单链表中,尾结点*p的next指针域指向链表L(即:头结点),形成了`闭环`,不存在指针域为`NULL`的结点。
|
||||
- 在循环单链表中,尾结点\*p的next指针域指向链表L(即:头结点),形成了`闭环`,不存在指针域为`NULL`的结点。
|
||||
- **由于循环单链表是个`环`,在任何位置上的插入、删除操作都是等价的,不需要去判断是否是表尾**。当其中的结点的next指针指向自己,也就能判断表为空
|
||||
- 单链表只能从头结点(表头结点)开始往后顺序遍历整个表,循环单链表可以从表中任意位置开始遍历整个链表,结点是等价的;
|
||||
- **循环单链表可以抽象为时钟,形成的`环`是有顺序的;**
|
||||
@@ -534,7 +531,7 @@ typedef struct DNode{
|
||||
|
||||
#### 判空条件
|
||||
|
||||
循环双链表为空时,头结点*p的prior指针和next指针都指向L,即同时满足:
|
||||
循环双链表为空时,头结点\*p的prior指针和next指针都指向L,即同时满足:
|
||||
|
||||
- p->next=L
|
||||
- p->prior=L
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 链式表示
|
||||
#description:
|
||||
#description:
|
||||
permalink: /manuscripts/ds/linear-table/summary.html
|
||||
head:
|
||||
head:
|
||||
- [meta, { name: 数据结构 , content: 线性表总结 }]
|
||||
---
|
||||
|
||||
|
||||
@@ -14,15 +14,15 @@ root(字节工作内推)
|
||||
(直播)
|
||||
(智能营销中台)
|
||||
(社区安全)
|
||||
|
||||
|
||||
(高级前端)
|
||||
(翻译方向)
|
||||
(中后台方向)
|
||||
(抖音用户)
|
||||
|
||||
|
||||
(资深前端)
|
||||
(抖音电商)
|
||||
|
||||
|
||||
```
|
||||
|
||||
**帮朋友转发、宣传一下,JD是相对社招而言,校招、实习会降低要求!社招、校招、实习机会多多,更有漂亮hr小姐姐引导整个流程;
|
||||
@@ -126,7 +126,7 @@ root(字节工作内推)
|
||||
- 计算机基础扎实,熟练掌握Javascript,ES5/6,CSS,熟练掌握各种布局;
|
||||
- 对解决 CSS/JS 多浏览器兼容性问题,前端性能优化有一定的经验;
|
||||
- 理解工程化思想,对构建和持续集成有一定认识,熟悉一种构建工具;
|
||||
- 理解组件化开发思想,有一定的设计能力,熟悉最少一种前端MV*框架;
|
||||
- 理解组件化开发思想,有一定的设计能力,熟悉最少一种前端MV\*框架;
|
||||
- 对后端技术和数据库有一定了解;
|
||||
- 有移动端web开发经验(Hybrid,React Native等)优先;
|
||||
- 对大型网站重构有丰富经验者优先,有成功作品者优先;
|
||||
|
||||
@@ -165,7 +165,7 @@ root(数据结构)
|
||||
|
||||
- 用来定义算法运行过程中需要耗费的存储空间
|
||||
- 渐进空间复杂度也被称为空间复杂度
|
||||
记作:S(n)=O(g(n))
|
||||
记作:S(n)=O(g(n))
|
||||
|
||||
## 线性表
|
||||
|
||||
@@ -386,7 +386,7 @@ root(数据结构)
|
||||
|
||||
- 第一步:p->next=q->next
|
||||
- 第二步:q->next->prior=p
|
||||
- 第三步:free(q) 释放结点内存空间
|
||||
- 第三步:free(q) 释放结点内存空间
|
||||
- 时间复杂度:O(1)
|
||||
- 注意:删除双链表结点p的后继结点的第一二步,顺序可换,及时释放内存空间【重要】
|
||||
|
||||
@@ -403,7 +403,7 @@ root(数据结构)
|
||||
|
||||
- 基本特点
|
||||
|
||||
- 在循环单链表中,尾结点*p的next指针域指向链表L(即:头结点),形成了`闭环`,不存在指针域为`NULL`的结点
|
||||
- 在循环单链表中,尾结点\*p的next指针域指向链表L(即:头结点),形成了`闭环`,不存在指针域为`NULL`的结点
|
||||
- 由于循环单链表是个`环`,在任何位置上的插入、删除操作都是等价的,不需要去判断是否是表尾
|
||||
- 单链表只能从头结点(表头结点)开始往后顺序遍历整个表,循环单链表可以从表中任意位置开始遍历整个链表,结点是等价的
|
||||
- 循环单链表可以抽象为时钟,形成的`环`是有顺序的
|
||||
@@ -414,7 +414,7 @@ root(数据结构)
|
||||
- 定义:在双链表的基础上,将尾结点的next指针指向头结点,将头结点的prior指针指向尾结点。【双链表----->循环双链表】
|
||||
- 判空条件
|
||||
|
||||
- 循环双链表为空时,头结点*p的prior指针和next指针都指向L
|
||||
- 循环双链表为空时,头结点\*p的prior指针和next指针都指向L
|
||||
- 同时满足
|
||||
|
||||
- p->prior=L
|
||||
@@ -788,7 +788,7 @@ root(数据结构)
|
||||
- 使用缓存,存放数据
|
||||
|
||||
- 必须注意递归模型不能是循环定义,
|
||||
需要满足两个条件
|
||||
需要满足两个条件
|
||||
|
||||
- 递归表达式(递归体)
|
||||
- 边界条件(递归出口),即:算法结束条件
|
||||
@@ -1234,7 +1234,7 @@ root(数据结构)
|
||||
|
||||
- 概念:第一个字符串(模式串)在第二串(主串)中的位置
|
||||
- 基本过程:从主串指定字符开始(一般第一个)和模式串的第一个字符逐个比较....
|
||||
- 时间复杂度:O(n*m),n、m分别为主串和模式串的长度
|
||||
- 时间复杂度:O(n\*m),n、m分别为主串和模式串的长度
|
||||
|
||||
- 【难点,直接看代码理解】KMP算法
|
||||
|
||||
@@ -1247,7 +1247,7 @@ root(数据结构)
|
||||
|
||||
- 总结比较
|
||||
|
||||
- 简单模式匹配时间复杂度:O(n*m)
|
||||
- 简单模式匹配时间复杂度:O(n\*m)
|
||||
- KMP算法的时间复杂度为O(n+m)
|
||||
- 一般情况下,简单模式匹配的实际执行时间可以近似到O(n+m)
|
||||
- 【重要】KMP算法的重要特点是主串指针不回溯
|
||||
@@ -1281,7 +1281,6 @@ root(数据结构)
|
||||
- 最好的情况:元素已经有序,每个元素之需要比较一次,不用移动元素,O(n)
|
||||
- 最坏的情况:元素逆序,比较多次,移动多次,O(n^2)
|
||||
- 平均情况:总的比较次数和总的移动次数均约等于为(n^2)/4
|
||||
|
||||
|
||||
- 稳定性: 【稳定】的排序算法
|
||||
- 适用性
|
||||
@@ -1383,7 +1382,7 @@ root(数据结构)
|
||||
|
||||
- 基于递归实现,需要借助递归工作栈来保存每一次递归调用的必要信息
|
||||
- 最坏情况:进行n-1次递归,O(n)
|
||||
- 最好情况: log2(n+1) 向上取整
|
||||
- 最好情况: log2(n+1) 向上取整
|
||||
- 平均情况: O((n+1)以2为底的对数)
|
||||
|
||||
- 时间效率
|
||||
@@ -1439,10 +1438,10 @@ root(数据结构)
|
||||
- 一趟分配需要O(n)
|
||||
- 一趟收集需要O(r)
|
||||
|
||||
- 平均情况:时间复杂度为O(d*(n+r))
|
||||
- 平均情况:时间复杂度为O(d\*(n+r))
|
||||
- 【重要】算法的时间效率与初始排序表状态无关,依赖于分配和收集操作
|
||||
|
||||
- 稳定性:【稳定】<----- 按位排序必须稳定
|
||||
- 稳定性:【稳定】<----- 按位排序必须稳定
|
||||
|
||||
### 内部排序
|
||||
|
||||
@@ -1612,7 +1611,7 @@ root(数据结构)
|
||||
|
||||
- 特殊的排序算法
|
||||
- 除了对元素序列的关键字比较,更对关键字的不同位也进行处理和比较
|
||||
- 具有线性增长的时间复杂度O(d*(n+r)),适用性比较低、应用场景相对少
|
||||
- 具有线性增长的时间复杂度O(d\*(n+r)),适用性比较低、应用场景相对少
|
||||
- 需要额外的存储空间,一般用队列来实现桶
|
||||
|
||||
- 【重要】不同的排序算法缓和使用,往往能够对算法进行不错的改进,获得更好的性能
|
||||
|
||||
@@ -27,4 +27,4 @@
|
||||
"xMindPath": "../mark-map/cn.xmind",
|
||||
"mdPath": "../mark-map/cn-map.md"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@@ -4,20 +4,18 @@
|
||||
export const MarkMapSidebar = [
|
||||
{
|
||||
text: '数据结构',
|
||||
link: 'ds-map.md'
|
||||
link: 'ds-map.md',
|
||||
},
|
||||
{
|
||||
text: '操作系统',
|
||||
link: 'os-map.md'
|
||||
link: 'os-map.md',
|
||||
},
|
||||
{
|
||||
text: '计算机组成原理',
|
||||
link: 'ccp-map.md'
|
||||
link: 'ccp-map.md',
|
||||
},
|
||||
{
|
||||
text: '计算机网络',
|
||||
link: 'cn-map.md'
|
||||
}
|
||||
link: 'cn-map.md',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -6,22 +6,22 @@ export const osSidebar = [
|
||||
children: [
|
||||
{
|
||||
text: '引论',
|
||||
link: '1.操作系统引论.md'
|
||||
link: '1.操作系统引论.md',
|
||||
},
|
||||
{
|
||||
text: '发展和分类',
|
||||
link: '2.发展和分类.md'
|
||||
link: '2.发展和分类.md',
|
||||
},
|
||||
{
|
||||
text: '运行环境',
|
||||
link: '3.运行环境.md'
|
||||
link: '3.运行环境.md',
|
||||
},
|
||||
{
|
||||
text: '体系结构',
|
||||
link: '4.体系结构.md'
|
||||
}
|
||||
]
|
||||
}
|
||||
link: '4.体系结构.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
// {
|
||||
// text: '进程管理',
|
||||
// prefix: '进程管理',
|
||||
|
||||
@@ -45,5 +45,5 @@ permalink: /manuscripts/os.html
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
|
||||
- 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
|
||||
- 《操作系统-王道考研》 2019 王道论坛
|
||||
|
||||
@@ -3,7 +3,6 @@ title: 文件系统
|
||||
permalink: /manuscripts/os/file-manage/disk-manage.html
|
||||
---
|
||||
|
||||
|
||||
# 磁盘管理
|
||||
|
||||
努力赶稿中,等等我呀...
|
||||
|
||||
@@ -105,7 +105,7 @@ permalink: /manuscripts/os/system-introduce/os-intro.html
|
||||
|
||||
### 操作系统的定义
|
||||
|
||||
>操作系统(Operating System,OS)指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,提供给用户和其他软件方便的接口和环境的程序集合。是最基础的系统软件
|
||||
> 操作系统(Operating System,OS)指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,提供给用户和其他软件方便的接口和环境的程序集合。是最基础的系统软件
|
||||
|
||||
## 操作系统的发展过程
|
||||
|
||||
@@ -143,8 +143,8 @@ permalink: /manuscripts/os/system-introduce/os-intro.html
|
||||
单道批处理系统的显著特征:
|
||||
|
||||
- **自动性** 在顺序的情况下,在磁带上的一批作业任务能够自动地逐个依次有序运行,不需要人工干预;
|
||||
- **顺序性** 各道作业都是顺序进入内存中,完成的顺序和进入内存顺序,在正常情况下是完全相同的。可以理解为类似队列的方式,先调入内存的作业先完成;
|
||||
- **单道性** 内存中仅仅只有一道程序运行,监督程序每次从磁带上只调用一道程序进入内存运行。只有当程序完成或者发生异常时,才会更换后续程序进入内存中;
|
||||
- **顺序性** 各道作业都是顺序进入内存中,完成的顺序和进入内存顺序,在正常情况下是完全相同的。可以理解为类似队列的方式,先调入内存的作业先完成;
|
||||
- **单道性** 内存中仅仅只有一道程序运行,监督程序每次从磁带上只调用一道程序进入内存运行。只有当程序完成或者发生异常时,才会更换后续程序进入内存中;
|
||||
|
||||
单道批处理系统主要的缺点是:**系统中的资源得不到充分的利用**,程序在运行中发出I/O请求后,CPU便会处于等待状态,即:CPU空闲,同样也会造成内存的浪费;
|
||||
|
||||
@@ -154,11 +154,11 @@ permalink: /manuscripts/os/system-introduce/os-intro.html
|
||||
|
||||
多道程序设计的特点:**多道、宏观上并行、微观上串行**
|
||||
|
||||
>多道:计算机内存中同时存放多个相互独立的程序;
|
||||
> 多道:计算机内存中同时存放多个相互独立的程序;
|
||||
>
|
||||
>宏观上并行:同时进入系统到的多道程序都处于运行过程中,先后开始了各自的运行,但是都处于运行中,没有运行完毕;
|
||||
> 宏观上并行:同时进入系统到的多道程序都处于运行过程中,先后开始了各自的运行,但是都处于运行中,没有运行完毕;
|
||||
>
|
||||
>微观上串行:内存中的多道程序轮流占有CPU资源,交替进行;
|
||||
> 微观上串行:内存中的多道程序轮流占有CPU资源,交替进行;
|
||||
|
||||
多道程序设计计算实现需要解决的问题:
|
||||
|
||||
@@ -173,11 +173,12 @@ permalink: /manuscripts/os/system-introduce/os-intro.html
|
||||
|
||||
- **资源利用率高**
|
||||
- **系统吞吐量大**
|
||||
|
||||
- CPU和其他资源保持“忙碌”状态(主要原因);
|
||||
- 仅仅当作业完成时或者运行不下去时才进行切换,系统开销小(主要原因);
|
||||
|
||||
- **平均周转时间长** 需要排队依次处理,响应时间长
|
||||
- **无交互能力** 修改和调试程序极其不方便,用户既不能了解程序的运行情况,也不能控制计算机;
|
||||
- **平均周转时间长** 需要排队依次处理,响应时间长
|
||||
- **无交互能力** 修改和调试程序极其不方便,用户既不能了解程序的运行情况,也不能控制计算机;
|
||||
|
||||
#### 分时系统
|
||||
|
||||
@@ -213,8 +214,8 @@ permalink: /manuscripts/os/system-introduce/os-intro.html
|
||||
|
||||
> 为了能够在某个时间限制内完成某些紧急任务而不需要进行时间片排队 ,诞生了**实时操作系统**,时间限制有两种情况:
|
||||
>
|
||||
> - 硬实时系统 规定某个动作必须绝对地在规定的时刻(或者规定的时间范围)发生
|
||||
> - 软实时系统 能够接受偶尔违反时间规定,并且不会引起任何永久性的损害
|
||||
> - 硬实时系统 规定某个动作必须绝对地在规定的时刻(或者规定的时间范围)发生
|
||||
> - 软实时系统 能够接受偶尔违反时间规定,并且不会引起任何永久性的损害
|
||||
>
|
||||
> 上面两种情况,可以类比公司的上班只读:硬实时----->打卡上班,讲究KPI ,软实时------>扁平管理,推崇OKR
|
||||
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const fs = require('node:fs')
|
||||
const path = require('node:path')
|
||||
|
||||
const sideBarData = {
|
||||
text: '查找',
|
||||
@@ -14,34 +13,34 @@ const sideBarData = {
|
||||
children: [
|
||||
{
|
||||
text: '基本概念',
|
||||
link: '1.基本概念.md'
|
||||
link: '1.基本概念.md',
|
||||
},
|
||||
{
|
||||
text: '顺序查找',
|
||||
link: '2.顺序查找.md'
|
||||
link: '2.顺序查找.md',
|
||||
},
|
||||
{
|
||||
text: '折半查找',
|
||||
link: '3.折半查找.md'
|
||||
link: '3.折半查找.md',
|
||||
},
|
||||
{
|
||||
text: 'B树和B+树',
|
||||
link: '4.B树和B+树.md'
|
||||
link: '4.B树和B+树.md',
|
||||
},
|
||||
{
|
||||
text: '散列表',
|
||||
link: '5.散列表.md'
|
||||
link: '5.散列表.md',
|
||||
},
|
||||
{
|
||||
text: '总结',
|
||||
link: '6.总结.md'
|
||||
}
|
||||
]
|
||||
link: '6.总结.md',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const { prefix, children } = sideBarData;
|
||||
|
||||
(async() => {
|
||||
(async () => {
|
||||
/**
|
||||
* 第一步: 创建目录
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user