1
0
mirror of https://github.com/142vip/408CSFamily.git synced 2026-07-16 19:10:21 +08:00

feat: 移除eslint相关配置,引入@antfu/eslint-config,统一约束风格

This commit is contained in:
142vip.cn
2024-09-25 15:16:40 +08:00
parent e792ed40b2
commit 9303820456
134 changed files with 10220 additions and 1804 deletions

View File

@@ -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>

View File

@@ -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,
})

View File

@@ -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 = [
"徒留我孤单在湖面成双。",
"就让回忆永远停在那里。",
"天青色等烟雨,而我在等你。",
"我用无悔,刻永世爱你的碑。",
"终有一天,我有属于我的天。",
"你想说的想给的,我全都知道。",
"我顶着大太阳,只想为你撑伞。",
"海鸟跟鱼相爱,只是一场意外。",
"那已风化千年的誓言,一切又重演。",
"下降的速度太快,来不及踏上未来。",
"我原谅不了我,就请你当作我已不在。",
"琴声何在,生死难猜,用一声去等待。",
"我戒不掉她的微笑,洋溢幸福的味道。",
"缺氧过后的爱情,粗心的眼泪事多余。",
"过往的欢乐是否褪色,想问你怎么舍得。",
"繁华如三千东流水,我只取一瓢爱了解。",
"唱反调是我的本性,出其不意是我的个性。",
"没有你在我有多难熬,没有你烦我有烦恼。",
"梦在远方,化成一缕香,随风飘散你的模样。",
"最美的不是下雨天,是曾与你躲过雨的屋檐。",
"初恋的颜色我牵着你的手经过种麦芽糖的山坡。",
"而我已经分不清,你是友情,还是错过的爱情。",
"也许时间是一种解药,也是我现在所服下的毒药。",
"能不能给我一首歌的时间,紧紧的把那拥抱变成永远。",
"如果邪恶是华丽残酷的乐章,它的终场我会亲手写上。",
"我知道共同的默契很重要,那骄傲才不会寂寞得很无聊。",
"想回到过去,试着让故事继续,至少不再让你离我而去。",
"如果我遇见你是一个悲剧,我想我这辈子注定一个人演戏。",
"请不要把分手当作你的请求,我知道坚持要走是你受伤的藉口。",
"我想就这样牵着你的手不放开,爱能不能够永远单纯没有悲哀。",
"翻着我们的照片,想念若隐若现,去年的冬天,我们笑得很甜。",
"风筝在阴天搁浅,想念还在等待救援,我拉着线复习你给的温柔。",
"整个画面是你,想你想的睡不着,我的快乐是你,想你想的都会笑。",
"酸酸的空气,嗅出我们的距离,一幕锥心的结局,像呼吸般无法停息。",
"我害怕你心碎没人帮你擦眼泪,别离开身边,拥有你我的世界才能完美。",
"有谁能比我知道,你的温柔象羽毛,秘密躺在我怀抱,只有你能听得到。",
"看着那白色的蜻蜓在空中忘了前进,还能不能重新编织,脑海中起毛球的记忆。",
"为你弹奏萧邦的夜曲,纪念我死去的爱情,而我为你隐姓埋名,在月光下弹琴。",
"我会发着呆然后忘记你,接着紧紧闭上眼,想着那一天会有人代替,让我不再想念你",
"乘着风游荡在蓝天边,一片云掉落在我面前,捏成你的形状,随风跟着我,一口一口吃掉忧愁。",
"听妈妈的话别让她受伤,想快快长大才能保护她,美丽的白发幸福总发芽,天使的魔法温暖中慈祥。",
"断了的弦再怎么连,我的感觉你已听不见,你的转变像断掉的弦,再怎么接音都不对,你的改变我能够分辨。",
"思绪不断阻挡着回忆播放,盲目的追寻仍然空空荡荡,灰蒙蒙的夜晚睡意又不知躲到哪去,一转身孤单已躺在身旁。",
"从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜。",
"谁在用琵琶弹奏一曲东风破,枫叶讲故事染色结局我看透,篱笆外的古道我牵着你走过,荒烟蔓草的年头就连分手都很沉默。",
"我一路向北,离开有你的季节,你说你好累,已无法再爱上谁。风在山路吹,过往的画面全都是不对,细数惭愧,我伤你几回。",
"雨下整夜我的爱溢出就像雨水,窗台蝴蝶像诗里纷飞的美丽章节。我接着写把永远爱你写进诗的结尾,你是我唯一想要的了解。",
"缓缓飘落的枫叶像思念,为何挽回要赶在冬天来之前,爱你穿越时间,两行来自秋末的眼泪,让爱渗透了地面我要的只是你在我身边。",
"我陪你走到最后,能不能别想太多,会不会手牵着手,晚一点再到尽头,你说不该再相见只为了瞬间,谢谢你让我听见因为我在等待永远。",
"天灰灰会不会,让我忘了你是谁,累不累睡不睡,单影无人相依偎,夜越黑梦违背,有谁肯安慰,我的世界将被摧毁也许颓废也是另一种美。",
"我知道你我都没有错,只是忘了怎么退后,信誓旦旦给的承诺,全被时间扑了空。我知道我们都没有错,只是放手会比较好过,最美的爱情回忆里待续。",
'徒留我孤单在湖面成双。',
'就让回忆永远停在那里。',
'天青色等烟雨,而我在等你。',
'我用无悔,刻永世爱你的碑。',
'终有一天,我有属于我的天。',
'你想说的想给的,我全都知道。',
'我顶着大太阳,只想为你撑伞。',
'海鸟跟鱼相爱,只是一场意外。',
'那已风化千年的誓言,一切又重演。',
'下降的速度太快,来不及踏上未来。',
'我原谅不了我,就请你当作我已不在。',
'琴声何在,生死难猜,用一声去等待。',
'我戒不掉她的微笑,洋溢幸福的味道。',
'缺氧过后的爱情,粗心的眼泪事多余。',
'过往的欢乐是否褪色,想问你怎么舍得。',
'繁华如三千东流水,我只取一瓢爱了解。',
'唱反调是我的本性,出其不意是我的个性。',
'没有你在我有多难熬,没有你烦我有烦恼。',
'梦在远方,化成一缕香,随风飘散你的模样。',
'最美的不是下雨天,是曾与你躲过雨的屋檐。',
'初恋的颜色我牵着你的手经过种麦芽糖的山坡。',
'而我已经分不清,你是友情,还是错过的爱情。',
'也许时间是一种解药,也是我现在所服下的毒药。',
'能不能给我一首歌的时间,紧紧的把那拥抱变成永远。',
'如果邪恶是华丽残酷的乐章,它的终场我会亲手写上。',
'我知道共同的默契很重要,那骄傲才不会寂寞得很无聊。',
'想回到过去,试着让故事继续,至少不再让你离我而去。',
'如果我遇见你是一个悲剧,我想我这辈子注定一个人演戏。',
'请不要把分手当作你的请求,我知道坚持要走是你受伤的藉口。',
'我想就这样牵着你的手不放开,爱能不能够永远单纯没有悲哀。',
'翻着我们的照片,想念若隐若现,去年的冬天,我们笑得很甜。',
'风筝在阴天搁浅,想念还在等待救援,我拉着线复习你给的温柔。',
'整个画面是你,想你想的睡不着,我的快乐是你,想你想的都会笑。',
'酸酸的空气,嗅出我们的距离,一幕锥心的结局,像呼吸般无法停息。',
'我害怕你心碎没人帮你擦眼泪,别离开身边,拥有你我的世界才能完美。',
'有谁能比我知道,你的温柔象羽毛,秘密躺在我怀抱,只有你能听得到。',
'看着那白色的蜻蜓在空中忘了前进,还能不能重新编织,脑海中起毛球的记忆。',
'为你弹奏萧邦的夜曲,纪念我死去的爱情,而我为你隐姓埋名,在月光下弹琴。',
'我会发着呆然后忘记你,接着紧紧闭上眼,想着那一天会有人代替,让我不再想念你',
'乘着风游荡在蓝天边,一片云掉落在我面前,捏成你的形状,随风跟着我,一口一口吃掉忧愁。',
'听妈妈的话别让她受伤,想快快长大才能保护她,美丽的白发幸福总发芽,天使的魔法温暖中慈祥。',
'断了的弦再怎么连,我的感觉你已听不见,你的转变像断掉的弦,再怎么接音都不对,你的改变我能够分辨。',
'思绪不断阻挡着回忆播放,盲目的追寻仍然空空荡荡,灰蒙蒙的夜晚睡意又不知躲到哪去,一转身孤单已躺在身旁。',
'从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜。',
'谁在用琵琶弹奏一曲东风破,枫叶讲故事染色结局我看透,篱笆外的古道我牵着你走过,荒烟蔓草的年头就连分手都很沉默。',
'我一路向北,离开有你的季节,你说你好累,已无法再爱上谁。风在山路吹,过往的画面全都是不对,细数惭愧,我伤你几回。',
'雨下整夜我的爱溢出就像雨水,窗台蝴蝶像诗里纷飞的美丽章节。我接着写把永远爱你写进诗的结尾,你是我唯一想要的了解。',
'缓缓飘落的枫叶像思念,为何挽回要赶在冬天来之前,爱你穿越时间,两行来自秋末的眼泪,让爱渗透了地面我要的只是你在我身边。',
'我陪你走到最后,能不能别想太多,会不会手牵着手,晚一点再到尽头,你说不该再相见只为了瞬间,谢谢你让我听见因为我在等待永远。',
'天灰灰会不会,让我忘了你是谁,累不累睡不睡,单影无人相依偎,夜越黑梦违背,有谁肯安慰,我的世界将被摧毁也许颓废也是另一种美。',
'我知道你我都没有错,只是忘了怎么退后,信誓旦旦给的承诺,全被时间扑了空。我知道我们都没有错,只是放手会比较好过,最美的爱情回忆里待续。',
]

View File

@@ -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,
}

View File

@@ -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',
},
],
},
],
},
];
]

View File

@@ -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',
},
],
}),
]
}
],
}

View File

@@ -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,
}

View File

@@ -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,
},
},
})
}
}),
}

View File

@@ -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>

View File

@@ -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

View File

@@ -27,4 +27,4 @@
"xMindPath": "../mark-map/cn.xmind",
"mdPath": "../mark-map/cn-map.md"
}
]
]

View File

@@ -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>

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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
: 增加思维导图

View File

@@ -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',
},
],
},
]

View File

@@ -62,5 +62,5 @@ permalink: /manuscripts/ccp.html
## 参考资料
- 《计算机组成原理》 第二版 唐朔飞
- 《计算机组成原理》 第二版 唐朔飞
- 《计算机组成原理-王道考研》 2019 王道论坛

View File

@@ -2,6 +2,7 @@
title: 一些总结
permalink: /manuscripts/ccp/cpu/summary.html
---
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 指令执行过程
permalink: /manuscripts/ccp/cpu/instruct-line.html
---
# 指令流水线
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 控制器
permalink: /manuscripts/ccp/cpu/controller.html
---
# 控制器
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 数据通路
permalink: /manuscripts/ccp/cpu/data-pathways.html
---
# 数据通路
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 数据通路
permalink: /manuscripts/ccp/store-memory/summary.html
---
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 主存和CPU
permalink: /manuscripts/ccp/store-memory/cpu-storage.html
---
# 主存和CPU
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 双端口RAM和多模块存储器
permalink: /manuscripts/ccp/store-memory/ram-storage.html
---
# 双端口RAM和多模块存储器
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 存储器介绍
permalink: /manuscripts/ccp/store-memory/storage-introduce.html
---
# 存储器介绍
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 随机存储器
permalink: /manuscripts/ccp/store-memory/ram.html
---
# 随机存储器
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 一些总结
permalink: /manuscripts/ccp/bus/summary.html
---
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 总线介绍
permalink: /manuscripts/ccp/bus/introduce.html
---
# 总线介绍
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 总线仲裁
permalink: /manuscripts/ccp/bus/bus-quorum.html
---
# 总线仲裁
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 总线标准
permalink: /manuscripts/ccp/bus/bus-standard.html
---
# 总线标准
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 总线的操作和定时
permalink: /manuscripts/ccp/bus/operate-schedule.html
---
# 总线的操作和定时
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 寻址方式
permalink: /manuscripts/ccp/directive-system/address-method.html
---
# 寻址方式
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 总线介绍
permalink: /manuscripts/ccp/directive-system/directive-style.html
---
# 指令格式
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 指令集
permalink: /manuscripts/ccp/directive-system/directive-collection.html
---
# 指令集
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 一些总结
permalink: /manuscripts/ccp/data-represent-compute/summary.html
---
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 定点数
permalink: /manuscripts/ccp/data-represent-compute/fixed-number.html
---
# 定点数
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 数制和编码
permalink: /manuscripts/ccp/data-represent-compute/number-coding.html
---
# 数制和编码
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 浮点数
permalink: /manuscripts/ccp/data-represent-compute/float-number.html
---
# 浮点数
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 发展历程
permalink: /manuscripts/ccp/ccp-introduction/develop.html
---
# 发展历程
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 性能指标
permalink: /manuscripts/ccp/ccp-introduction/performance-metrics.html
---
# 性能指标
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 系统层次结构
permalink: /manuscripts/ccp/ccp-introduction/system-layer-info.html
---
# 系统层次结构
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 基本概念
permalink: /manuscripts/ccp/in-out/base-concept.html
---
# 基本概念
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 外部设备
permalink: /manuscripts/ccp/in-out/outer-equipment.html
---
# 外部设备
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 输入输出接口
permalink: /manuscripts/ccp/in-out/io-interface.html
---
# 输入输出接口
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 算数逻辑单元
permalink: /manuscripts/ccp/in-out/io-model.html
---
# 输入输出方式
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 变更记录
permalink: /manuscripts/changelog.html
---
# 变更记录
该文件包含 `408CSFamily` 仓库和网站所有显着更改。

View File

@@ -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: '应用层',

View File

@@ -3,7 +3,6 @@ title: 计算机网络
permalink: /manuscripts/cn.html
---
# 计算机网络
![打好基础推荐学习这本](./images/cn-base.png)

View File

@@ -2,6 +2,7 @@
title: UDP协议
permalink: /manuscripts/cn/trans-port-layer/udp.html
---
# UDP协议
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: TCP协议
permalink: /manuscripts/cn/trans-port-layer/tcp.html
---
# TCP协议
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: DNS
permalink: /manuscripts/cn/application-layer/dns.html
---
# DNS
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: FTP
permalink: /manuscripts/cn/application-layer/ftp.html
---
# FTP
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: HTTP
permalink: /manuscripts/cn/application-layer/http.html
---
# HTTP
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 电子邮件
permalink: /manuscripts/cn/application-layer/email.html
---
# 电子邮件
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 组帧
permalink: /manuscripts/cn/data-link-layer/framing.html
---
# 组帧
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 差错控制
permalink: /manuscripts/cn/data-link-layer/error-control.html
---
# 差错控制
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 通信设备
permalink: /manuscripts/cn/data-link-layer/equipment.html
---
# 通信设备
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 传输介质
permalink: /manuscripts/cn/physical-layer/transmission-medium.html
---
# 传输介质
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 一些总结
permalink: /manuscripts/cn/network-layer/summary.html
---
# 一些总结
努力赶稿中,等等我呀...

View File

@@ -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',
},
],
},
]

View File

@@ -2,6 +2,7 @@
title: KMP算法
permalink: /manuscripts/ds/string/kmp.html
---
# KMP算法
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 图的存储
permalink: /manuscripts/ds/graph/store.html
---
# 图的存储
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 图的遍历
permalink: /manuscripts/ds/graph/traverse.html
---
# 图的遍历
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 图的应用
permalink: /manuscripts/ds/graph/apply.html
---
# 图的应用
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 一些总结
permalink: /manuscripts/ds/graph/summary.html
---
# 总结
努力赶稿中,等等我呀...

View File

@@ -1,8 +1,8 @@
---
title: 基础概念
#description:
#description:
permalink: /manuscripts/ds/introduction-basic-concepts.html
head:
head:
- [meta, { name: 数据结构 , content: 基础概念 }]
---

View File

@@ -1,8 +1,8 @@
---
title: 数据结构三要素
#description:
#description:
permalink: /manuscripts/ds/introduction-three-elements.html
head:
head:
- [meta, { name: 数据结构 , content: 数据结构三要素 }]
---

View File

@@ -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) {
.....
}
```
在这个简单的函数里

View File

@@ -2,6 +2,7 @@
title: 交换排序
permalink: /manuscripts/ds/sort-algorithm/swap-sort.html
---
# 交换排序
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 选择排序
permalink: /manuscripts/ds/sort-algorithm/select-sort.html
---
# 选择排序
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 归并排序
permalink: /manuscripts/ds/sort-algorithm/merge-sort.html
---
# 归并排序
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 外部排序
permalink: /manuscripts/ds/sort-algorithm/outer-sort.html
---
# 外部排序
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 一些总结
permalink: /manuscripts/ds/sort-algorithm/summary.html
---
# 总结
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 折半查找
permalink: /manuscripts/ds/search-algorithm/binary-search.html
---
# 折半查找
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: B树和B+树
permalink: /manuscripts/ds/search-algorithm/balance-tree.html
---
# B树和B+树
努力赶稿中,等等我呀...

View File

@@ -2,6 +2,7 @@
title: 散列表
permalink: /manuscripts/ds/search-algorithm/hash-table.html
---
# 散列表
努力赶稿中,等等我呀...

View File

@@ -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语言中\*代表指针,指向存储地址,也是具有`传址目的`

View File

@@ -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: 类似头对头,一致对外这种感觉,噗呲哈哈
![顺序栈共享存储空间](./images/顺序栈共享存储空间.png)

View File

@@ -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;

View File

@@ -1,8 +1,8 @@
---
title: 队列的基本概念和操作
#description:
#description:
permalink: /manuscripts/ds/stack-queue/queue-basic-concepts.html
head:
head:
- [meta, { name: 数据结构 , content: 队列的基本概念和操作 }]
---

View File

@@ -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){

View File

@@ -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){
// 队列为空,没有元素出队

View File

@@ -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]

View File

@@ -2,6 +2,7 @@
title: 线索二叉树
permalink: /manuscripts/ds/tree/threaded-binary-tree.html
---
# 线索二叉树
努力赶稿中,等等我呀...

View File

@@ -1,4 +1,3 @@
# 树的应用
努力赶稿中,等等我呀...

View File

@@ -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(数据结构三要素)
线性表是具有相同数据类型的nn≥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>

View File

@@ -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;
}
```

View File

@@ -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

View File

@@ -1,8 +1,8 @@
---
title: 链式表示
#description:
#description:
permalink: /manuscripts/ds/linear-table/summary.html
head:
head:
- [meta, { name: 数据结构 , content: 线性表总结 }]
---

View File

@@ -14,15 +14,15 @@ root(字节工作内推)
(直播)
(智能营销中台)
(社区安全)
(高级前端)
(翻译方向)
(中后台方向)
(抖音用户)
(资深前端)
(抖音电商)
```
**帮朋友转发、宣传一下JD是相对社招而言校招、实习会降低要求社招、校招、实习机会多多更有漂亮hr小姐姐引导整个流程
@@ -126,7 +126,7 @@ root(字节工作内推)
- 计算机基础扎实熟练掌握JavascriptES5/6CSS熟练掌握各种布局
- 对解决 CSS/JS 多浏览器兼容性问题,前端性能优化有一定的经验;
- 理解工程化思想,对构建和持续集成有一定认识,熟悉一种构建工具;
- 理解组件化开发思想有一定的设计能力熟悉最少一种前端MV*框架;
- 理解组件化开发思想有一定的设计能力熟悉最少一种前端MV\*框架;
- 对后端技术和数据库有一定了解;
- 有移动端web开发经验HybridReact Native等优先
- 对大型网站重构有丰富经验者优先,有成功作品者优先;

View File

@@ -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)),适用性比较低、应用场景相对少
- 需要额外的存储空间,一般用队列来实现桶
- 【重要】不同的排序算法缓和使用,往往能够对算法进行不错的改进,获得更好的性能

View File

@@ -27,4 +27,4 @@
"xMindPath": "../mark-map/cn.xmind",
"mdPath": "../mark-map/cn-map.md"
}
]
]

View File

@@ -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',
},
]

View File

@@ -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: '进程管理',

View File

@@ -45,5 +45,5 @@ permalink: /manuscripts/os.html
## 参考资料
- 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
- 《计算机操作系统》 第四版 汤小丹、梁红兵、汤子瀛著
- 《操作系统-王道考研》 2019 王道论坛

View File

@@ -3,7 +3,6 @@ title: 文件系统
permalink: /manuscripts/os/file-manage/disk-manage.html
---
# 磁盘管理
努力赶稿中,等等我呀...

View File

@@ -105,7 +105,7 @@ permalink: /manuscripts/os/system-introduce/os-intro.html
### 操作系统的定义
>操作系统Operating SystemOS指控制和管理整个计算机系统的硬件和软件资源并合理地组织调度计算机的工作和资源的分配提供给用户和其他软件方便的接口和环境的程序集合。是最基础的系统软件
> 操作系统Operating SystemOS指控制和管理整个计算机系统的硬件和软件资源并合理地组织调度计算机的工作和资源的分配提供给用户和其他软件方便的接口和环境的程序集合。是最基础的系统软件
## 操作系统的发展过程
@@ -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

View File

@@ -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