mirror of
https://github.com/142vip/408CSFamily.git
synced 2026-04-03 10:38:38 +08:00
feat: 修复 docs
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -13,8 +13,7 @@ pids
|
||||
*.pid.lock
|
||||
|
||||
# docs
|
||||
docs
|
||||
|
||||
docs11
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
import {
|
||||
isPerformanceSupported,
|
||||
now,
|
||||
setupDevtoolsPlugin
|
||||
} from "./chunk-WT46H2UR.js";
|
||||
import {
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
} from "./chunk-JQISXBHW.js";
|
||||
|
||||
// dep:@vue_devtools-api
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
export {
|
||||
isPerformanceSupported,
|
||||
now,
|
||||
setupDevtoolsPlugin
|
||||
};
|
||||
//# sourceMappingURL=@vue_devtools-api.js.map
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["dep:@vue_devtools-api"],
|
||||
"sourcesContent": ["\nexport * from \"../../../../node_modules/@vue/devtools-api/lib/esm/index.js\""],
|
||||
"mappings": ";;;;;;;;;;;AAAA;AAAA;",
|
||||
"names": []
|
||||
}
|
||||
@@ -1,258 +0,0 @@
|
||||
import {
|
||||
isArray,
|
||||
isFunction,
|
||||
isPromise,
|
||||
isString
|
||||
} from "./chunk-SDTWZDHJ.js";
|
||||
import {
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
} from "./chunk-JQISXBHW.js";
|
||||
|
||||
// dep:@vuepress_shared
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/index.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/types/index.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/types/head.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/types/locale.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/types/page.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/types/site.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/types/ssr.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/index.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/dedupeHead.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/resolveHeadIdentifier.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var resolveHeadIdentifier = ([tag, attrs, content]) => {
|
||||
if (tag === "meta" && attrs.name) {
|
||||
return `${tag}.${attrs.name}`;
|
||||
}
|
||||
if (["title", "base"].includes(tag)) {
|
||||
return tag;
|
||||
}
|
||||
if (tag === "template" && attrs.id) {
|
||||
return `${tag}.${attrs.id}`;
|
||||
}
|
||||
return JSON.stringify([tag, attrs, content]);
|
||||
};
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/dedupeHead.js
|
||||
var dedupeHead = (head) => {
|
||||
const identifierSet = /* @__PURE__ */ new Set();
|
||||
const result = [];
|
||||
head.forEach((item) => {
|
||||
const identifier = resolveHeadIdentifier(item);
|
||||
if (!identifierSet.has(identifier)) {
|
||||
identifierSet.add(identifier);
|
||||
result.push(item);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/ensureLeadingSlash.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var ensureLeadingSlash = (str) => str.replace(/^\/?/, "/");
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/ensureEndingSlash.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var ensureEndingSlash = (str) => /(\.html|\/)$/.test(str) ? str : str + "/";
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/formatDateString.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var formatDateString = (str, defaultDateString = "") => {
|
||||
const dateMatch = str.match(/\b(\d{4})-(\d{1,2})-(\d{1,2})\b/);
|
||||
if (dateMatch === null) {
|
||||
return defaultDateString;
|
||||
}
|
||||
const [, yearStr, monthStr, dayStr] = dateMatch;
|
||||
return [yearStr, monthStr.padStart(2, "0"), dayStr.padStart(2, "0")].join("-");
|
||||
};
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/htmlEscape.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var htmlEscapeMap = {
|
||||
"&": "&",
|
||||
"<": "<",
|
||||
">": ">",
|
||||
"'": "'",
|
||||
'"': """
|
||||
};
|
||||
var htmlEscapeRegexp = /[&<>'"]/g;
|
||||
var htmlEscape = (str) => str.replace(htmlEscapeRegexp, (char) => htmlEscapeMap[char]);
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/htmlUnescape.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var htmlUnescapeMap = {
|
||||
"&": "&",
|
||||
"&": "&",
|
||||
"<": "<",
|
||||
"<": "<",
|
||||
">": ">",
|
||||
">": ">",
|
||||
"'": "'",
|
||||
"'": "'",
|
||||
""": '"',
|
||||
""": '"'
|
||||
};
|
||||
var htmlUnescapeRegexp = /&(amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;
|
||||
var htmlUnescape = (str) => str.replace(htmlUnescapeRegexp, (char) => htmlUnescapeMap[char]);
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isLinkExternal.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isLinkFtp.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var isLinkFtp = (link) => link.startsWith("ftp://");
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isLinkHttp.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var isLinkHttp = (link) => /^(https?:)?\/\//.test(link);
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isLinkExternal.js
|
||||
var isLinkExternal = (link, base = "/") => {
|
||||
if (isLinkHttp(link) || isLinkFtp(link)) {
|
||||
return true;
|
||||
}
|
||||
if (link.startsWith("/") && !link.startsWith(base)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isLinkMailto.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var isLinkMailto = (link) => /^mailto:/.test(link);
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isLinkTel.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var isLinkTel = (link) => /^tel:/.test(link);
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/isPlainObject.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var isPlainObject = (val) => Object.prototype.toString.call(val) === "[object Object]";
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/normalizePackageName.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var normalizePackageName = (request, org, type = null) => {
|
||||
const orgPrefix = `${org}-`;
|
||||
const typePrefix = type === null ? "" : `${type}-`;
|
||||
const scopedMatch = request.match(/^@(.*)\/(.*)$/);
|
||||
if (scopedMatch === null) {
|
||||
if (request.startsWith(`${orgPrefix}${typePrefix}`)) {
|
||||
return request;
|
||||
}
|
||||
return `${orgPrefix}${typePrefix}${request}`;
|
||||
}
|
||||
const [, reqOrg, reqName] = scopedMatch;
|
||||
if (reqOrg === org) {
|
||||
if (reqName.startsWith(typePrefix)) {
|
||||
return request;
|
||||
}
|
||||
return `@${reqOrg}/${typePrefix}${reqName}`;
|
||||
}
|
||||
if (reqName.startsWith(`${orgPrefix}${typePrefix}`)) {
|
||||
return request;
|
||||
}
|
||||
return `@${reqOrg}/${orgPrefix}${typePrefix}${reqName}`;
|
||||
};
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/removeEndingSlash.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var removeEndingSlash = (str) => str.replace(/\/$/, "");
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/removeLeadingSlash.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var removeLeadingSlash = (str) => str.replace(/^\//, "");
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/resolveLocalePath.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var resolveLocalePath = (locales, routePath) => {
|
||||
const localePaths = Object.keys(locales).sort((a, b) => {
|
||||
const levelDelta = b.split("/").length - a.split("/").length;
|
||||
if (levelDelta !== 0) {
|
||||
return levelDelta;
|
||||
}
|
||||
return b.length - a.length;
|
||||
});
|
||||
for (const localePath of localePaths) {
|
||||
if (routePath.startsWith(localePath)) {
|
||||
return localePath;
|
||||
}
|
||||
}
|
||||
return "/";
|
||||
};
|
||||
|
||||
// node_modules/@vuepress/shared/lib/esm/utils/resolveRoutePathFromUrl.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var resolveRoutePathFromUrl = (url, base = "/") => url.replace(/^(https?:)?\/\/[^/]*/, "").replace(new RegExp(`^${base}`), "/");
|
||||
export {
|
||||
dedupeHead,
|
||||
ensureEndingSlash,
|
||||
ensureLeadingSlash,
|
||||
formatDateString,
|
||||
htmlEscape,
|
||||
htmlUnescape,
|
||||
isArray,
|
||||
isFunction,
|
||||
isLinkExternal,
|
||||
isLinkFtp,
|
||||
isLinkHttp,
|
||||
isLinkMailto,
|
||||
isLinkTel,
|
||||
isPlainObject,
|
||||
isPromise,
|
||||
isString,
|
||||
normalizePackageName,
|
||||
removeEndingSlash,
|
||||
removeLeadingSlash,
|
||||
resolveHeadIdentifier,
|
||||
resolveLocalePath,
|
||||
resolveRoutePathFromUrl
|
||||
};
|
||||
//# sourceMappingURL=@vuepress_shared.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,56 +0,0 @@
|
||||
{
|
||||
"hash": "b1589631",
|
||||
"browserHash": "c000c366",
|
||||
"optimized": {
|
||||
"@vue/devtools-api": {
|
||||
"src": "../../../../node_modules/@vue/devtools-api/lib/esm/index.js",
|
||||
"file": "@vue_devtools-api.js",
|
||||
"fileHash": "5af9d1a0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@vueuse/core": {
|
||||
"src": "../../../../node_modules/@vueuse/core/index.mjs",
|
||||
"file": "@vueuse_core.js",
|
||||
"fileHash": "67c1bb0c",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue": {
|
||||
"src": "../../../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "22dcdaac",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue-router": {
|
||||
"src": "../../../../node_modules/vue-router/dist/vue-router.esm-bundler.js",
|
||||
"file": "vue-router.js",
|
||||
"fileHash": "0f951dc0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"nprogress": {
|
||||
"src": "../../../../node_modules/nprogress/nprogress.js",
|
||||
"file": "nprogress.js",
|
||||
"fileHash": "8a8a501a",
|
||||
"needsInterop": true
|
||||
},
|
||||
"@vuepress/shared": {
|
||||
"src": "../../../../node_modules/@vuepress/shared/lib/esm/index.js",
|
||||
"file": "@vuepress_shared.js",
|
||||
"fileHash": "790174eb",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-WT46H2UR": {
|
||||
"file": "chunk-WT46H2UR.js"
|
||||
},
|
||||
"chunk-J5QUGD5J": {
|
||||
"file": "chunk-J5QUGD5J.js"
|
||||
},
|
||||
"chunk-SDTWZDHJ": {
|
||||
"file": "chunk-SDTWZDHJ.js"
|
||||
},
|
||||
"chunk-JQISXBHW": {
|
||||
"file": "chunk-JQISXBHW.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,26 +0,0 @@
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __esm = (fn, res) => function __init() {
|
||||
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
||||
};
|
||||
var __commonJS = (cb, mod) => function __require() {
|
||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||
};
|
||||
|
||||
// <define:__EXTERNAL_LINK_ICON_LOCALES__>
|
||||
var init_define_EXTERNAL_LINK_ICON_LOCALES = __esm({
|
||||
"<define:__EXTERNAL_LINK_ICON_LOCALES__>"() {
|
||||
}
|
||||
});
|
||||
|
||||
// <define:__MZ_ZOOM_OPTIONS__>
|
||||
var init_define_MZ_ZOOM_OPTIONS = __esm({
|
||||
"<define:__MZ_ZOOM_OPTIONS__>"() {
|
||||
}
|
||||
});
|
||||
|
||||
export {
|
||||
__commonJS,
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
};
|
||||
//# sourceMappingURL=chunk-JQISXBHW.js.map
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
@@ -1,284 +0,0 @@
|
||||
import {
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
} from "./chunk-JQISXBHW.js";
|
||||
|
||||
// node_modules/@vue/shared/dist/shared.esm-bundler.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
function makeMap(str, expectsLowerCase) {
|
||||
const map = /* @__PURE__ */ Object.create(null);
|
||||
const list = str.split(",");
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
map[list[i]] = true;
|
||||
}
|
||||
return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];
|
||||
}
|
||||
var GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt";
|
||||
var isGloballyWhitelisted = makeMap(GLOBALS_WHITE_LISTED);
|
||||
var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
|
||||
var isSpecialBooleanAttr = makeMap(specialBooleanAttrs);
|
||||
var isBooleanAttr = makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);
|
||||
function includeBooleanAttr(value) {
|
||||
return !!value || value === "";
|
||||
}
|
||||
var isNoUnitNumericStyleProp = makeMap(`animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width`);
|
||||
var isKnownHtmlAttr = makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`);
|
||||
var isKnownSvgAttr = makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);
|
||||
function normalizeStyle(value) {
|
||||
if (isArray(value)) {
|
||||
const res = {};
|
||||
for (let i = 0; i < value.length; i++) {
|
||||
const item = value[i];
|
||||
const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);
|
||||
if (normalized) {
|
||||
for (const key in normalized) {
|
||||
res[key] = normalized[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
} else if (isString(value)) {
|
||||
return value;
|
||||
} else if (isObject(value)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
var listDelimiterRE = /;(?![^(]*\))/g;
|
||||
var propertyDelimiterRE = /:(.+)/;
|
||||
function parseStringStyle(cssText) {
|
||||
const ret = {};
|
||||
cssText.split(listDelimiterRE).forEach((item) => {
|
||||
if (item) {
|
||||
const tmp = item.split(propertyDelimiterRE);
|
||||
tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
function normalizeClass(value) {
|
||||
let res = "";
|
||||
if (isString(value)) {
|
||||
res = value;
|
||||
} else if (isArray(value)) {
|
||||
for (let i = 0; i < value.length; i++) {
|
||||
const normalized = normalizeClass(value[i]);
|
||||
if (normalized) {
|
||||
res += normalized + " ";
|
||||
}
|
||||
}
|
||||
} else if (isObject(value)) {
|
||||
for (const name in value) {
|
||||
if (value[name]) {
|
||||
res += name + " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
return res.trim();
|
||||
}
|
||||
function normalizeProps(props) {
|
||||
if (!props)
|
||||
return null;
|
||||
let { class: klass, style } = props;
|
||||
if (klass && !isString(klass)) {
|
||||
props.class = normalizeClass(klass);
|
||||
}
|
||||
if (style) {
|
||||
props.style = normalizeStyle(style);
|
||||
}
|
||||
return props;
|
||||
}
|
||||
var HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
|
||||
var SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
|
||||
var VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
|
||||
var isHTMLTag = makeMap(HTML_TAGS);
|
||||
var isSVGTag = makeMap(SVG_TAGS);
|
||||
var isVoidTag = makeMap(VOID_TAGS);
|
||||
function looseCompareArrays(a, b) {
|
||||
if (a.length !== b.length)
|
||||
return false;
|
||||
let equal = true;
|
||||
for (let i = 0; equal && i < a.length; i++) {
|
||||
equal = looseEqual(a[i], b[i]);
|
||||
}
|
||||
return equal;
|
||||
}
|
||||
function looseEqual(a, b) {
|
||||
if (a === b)
|
||||
return true;
|
||||
let aValidType = isDate(a);
|
||||
let bValidType = isDate(b);
|
||||
if (aValidType || bValidType) {
|
||||
return aValidType && bValidType ? a.getTime() === b.getTime() : false;
|
||||
}
|
||||
aValidType = isArray(a);
|
||||
bValidType = isArray(b);
|
||||
if (aValidType || bValidType) {
|
||||
return aValidType && bValidType ? looseCompareArrays(a, b) : false;
|
||||
}
|
||||
aValidType = isObject(a);
|
||||
bValidType = isObject(b);
|
||||
if (aValidType || bValidType) {
|
||||
if (!aValidType || !bValidType) {
|
||||
return false;
|
||||
}
|
||||
const aKeysCount = Object.keys(a).length;
|
||||
const bKeysCount = Object.keys(b).length;
|
||||
if (aKeysCount !== bKeysCount) {
|
||||
return false;
|
||||
}
|
||||
for (const key in a) {
|
||||
const aHasKey = a.hasOwnProperty(key);
|
||||
const bHasKey = b.hasOwnProperty(key);
|
||||
if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return String(a) === String(b);
|
||||
}
|
||||
function looseIndexOf(arr, val) {
|
||||
return arr.findIndex((item) => looseEqual(item, val));
|
||||
}
|
||||
var toDisplayString = (val) => {
|
||||
return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);
|
||||
};
|
||||
var replacer = (_key, val) => {
|
||||
if (val && val.__v_isRef) {
|
||||
return replacer(_key, val.value);
|
||||
} else if (isMap(val)) {
|
||||
return {
|
||||
[`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {
|
||||
entries[`${key} =>`] = val2;
|
||||
return entries;
|
||||
}, {})
|
||||
};
|
||||
} else if (isSet(val)) {
|
||||
return {
|
||||
[`Set(${val.size})`]: [...val.values()]
|
||||
};
|
||||
} else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {
|
||||
return String(val);
|
||||
}
|
||||
return val;
|
||||
};
|
||||
var EMPTY_OBJ = true ? Object.freeze({}) : {};
|
||||
var EMPTY_ARR = true ? Object.freeze([]) : [];
|
||||
var NOOP = () => {
|
||||
};
|
||||
var NO = () => false;
|
||||
var onRE = /^on[^a-z]/;
|
||||
var isOn = (key) => onRE.test(key);
|
||||
var isModelListener = (key) => key.startsWith("onUpdate:");
|
||||
var extend = Object.assign;
|
||||
var remove = (arr, el) => {
|
||||
const i = arr.indexOf(el);
|
||||
if (i > -1) {
|
||||
arr.splice(i, 1);
|
||||
}
|
||||
};
|
||||
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
var hasOwn = (val, key) => hasOwnProperty.call(val, key);
|
||||
var isArray = Array.isArray;
|
||||
var isMap = (val) => toTypeString(val) === "[object Map]";
|
||||
var isSet = (val) => toTypeString(val) === "[object Set]";
|
||||
var isDate = (val) => val instanceof Date;
|
||||
var isFunction = (val) => typeof val === "function";
|
||||
var isString = (val) => typeof val === "string";
|
||||
var isSymbol = (val) => typeof val === "symbol";
|
||||
var isObject = (val) => val !== null && typeof val === "object";
|
||||
var isPromise = (val) => {
|
||||
return isObject(val) && isFunction(val.then) && isFunction(val.catch);
|
||||
};
|
||||
var objectToString = Object.prototype.toString;
|
||||
var toTypeString = (value) => objectToString.call(value);
|
||||
var toRawType = (value) => {
|
||||
return toTypeString(value).slice(8, -1);
|
||||
};
|
||||
var isPlainObject = (val) => toTypeString(val) === "[object Object]";
|
||||
var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
|
||||
var isReservedProp = makeMap(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");
|
||||
var isBuiltInDirective = makeMap("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo");
|
||||
var cacheStringFunction = (fn) => {
|
||||
const cache = /* @__PURE__ */ Object.create(null);
|
||||
return (str) => {
|
||||
const hit = cache[str];
|
||||
return hit || (cache[str] = fn(str));
|
||||
};
|
||||
};
|
||||
var camelizeRE = /-(\w)/g;
|
||||
var camelize = cacheStringFunction((str) => {
|
||||
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
|
||||
});
|
||||
var hyphenateRE = /\B([A-Z])/g;
|
||||
var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase());
|
||||
var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
|
||||
var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);
|
||||
var hasChanged = (value, oldValue) => !Object.is(value, oldValue);
|
||||
var invokeArrayFns = (fns, arg) => {
|
||||
for (let i = 0; i < fns.length; i++) {
|
||||
fns[i](arg);
|
||||
}
|
||||
};
|
||||
var def = (obj, key, value) => {
|
||||
Object.defineProperty(obj, key, {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
value
|
||||
});
|
||||
};
|
||||
var toNumber = (val) => {
|
||||
const n = parseFloat(val);
|
||||
return isNaN(n) ? val : n;
|
||||
};
|
||||
var _globalThis;
|
||||
var getGlobalThis = () => {
|
||||
return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
|
||||
};
|
||||
|
||||
export {
|
||||
makeMap,
|
||||
isGloballyWhitelisted,
|
||||
isSpecialBooleanAttr,
|
||||
includeBooleanAttr,
|
||||
normalizeStyle,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
isHTMLTag,
|
||||
isSVGTag,
|
||||
looseEqual,
|
||||
looseIndexOf,
|
||||
toDisplayString,
|
||||
EMPTY_OBJ,
|
||||
EMPTY_ARR,
|
||||
NOOP,
|
||||
NO,
|
||||
isOn,
|
||||
isModelListener,
|
||||
extend,
|
||||
remove,
|
||||
hasOwn,
|
||||
isArray,
|
||||
isMap,
|
||||
isSet,
|
||||
isFunction,
|
||||
isString,
|
||||
isSymbol,
|
||||
isObject,
|
||||
isPromise,
|
||||
toRawType,
|
||||
isPlainObject,
|
||||
isIntegerKey,
|
||||
isReservedProp,
|
||||
isBuiltInDirective,
|
||||
camelize,
|
||||
hyphenate,
|
||||
capitalize,
|
||||
toHandlerKey,
|
||||
hasChanged,
|
||||
invokeArrayFns,
|
||||
def,
|
||||
toNumber,
|
||||
getGlobalThis
|
||||
};
|
||||
//# sourceMappingURL=chunk-SDTWZDHJ.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -1,212 +0,0 @@
|
||||
import {
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
} from "./chunk-JQISXBHW.js";
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/time.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var supported;
|
||||
var perf;
|
||||
function isPerformanceSupported() {
|
||||
var _a;
|
||||
if (supported !== void 0) {
|
||||
return supported;
|
||||
}
|
||||
if (typeof window !== "undefined" && window.performance) {
|
||||
supported = true;
|
||||
perf = window.performance;
|
||||
} else if (typeof global !== "undefined" && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
|
||||
supported = true;
|
||||
perf = global.perf_hooks.performance;
|
||||
} else {
|
||||
supported = false;
|
||||
}
|
||||
return supported;
|
||||
}
|
||||
function now() {
|
||||
return isPerformanceSupported() ? perf.now() : Date.now();
|
||||
}
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/index.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/env.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
function getDevtoolsGlobalHook() {
|
||||
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
|
||||
}
|
||||
function getTarget() {
|
||||
return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {};
|
||||
}
|
||||
var isProxyAvailable = typeof Proxy === "function";
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/const.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var HOOK_SETUP = "devtools-plugin:setup";
|
||||
var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/proxy.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var ApiProxy = class {
|
||||
constructor(plugin, hook) {
|
||||
this.target = null;
|
||||
this.targetQueue = [];
|
||||
this.onQueue = [];
|
||||
this.plugin = plugin;
|
||||
this.hook = hook;
|
||||
const defaultSettings = {};
|
||||
if (plugin.settings) {
|
||||
for (const id in plugin.settings) {
|
||||
const item = plugin.settings[id];
|
||||
defaultSettings[id] = item.defaultValue;
|
||||
}
|
||||
}
|
||||
const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
|
||||
let currentSettings = Object.assign({}, defaultSettings);
|
||||
try {
|
||||
const raw = localStorage.getItem(localSettingsSaveId);
|
||||
const data = JSON.parse(raw);
|
||||
Object.assign(currentSettings, data);
|
||||
} catch (e) {
|
||||
}
|
||||
this.fallbacks = {
|
||||
getSettings() {
|
||||
return currentSettings;
|
||||
},
|
||||
setSettings(value) {
|
||||
try {
|
||||
localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
|
||||
} catch (e) {
|
||||
}
|
||||
currentSettings = value;
|
||||
},
|
||||
now() {
|
||||
return now();
|
||||
}
|
||||
};
|
||||
if (hook) {
|
||||
hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
|
||||
if (pluginId === this.plugin.id) {
|
||||
this.fallbacks.setSettings(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
this.proxiedOn = new Proxy({}, {
|
||||
get: (_target, prop) => {
|
||||
if (this.target) {
|
||||
return this.target.on[prop];
|
||||
} else {
|
||||
return (...args) => {
|
||||
this.onQueue.push({
|
||||
method: prop,
|
||||
args
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
this.proxiedTarget = new Proxy({}, {
|
||||
get: (_target, prop) => {
|
||||
if (this.target) {
|
||||
return this.target[prop];
|
||||
} else if (prop === "on") {
|
||||
return this.proxiedOn;
|
||||
} else if (Object.keys(this.fallbacks).includes(prop)) {
|
||||
return (...args) => {
|
||||
this.targetQueue.push({
|
||||
method: prop,
|
||||
args,
|
||||
resolve: () => {
|
||||
}
|
||||
});
|
||||
return this.fallbacks[prop](...args);
|
||||
};
|
||||
} else {
|
||||
return (...args) => {
|
||||
return new Promise((resolve) => {
|
||||
this.targetQueue.push({
|
||||
method: prop,
|
||||
args,
|
||||
resolve
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
async setRealTarget(target) {
|
||||
this.target = target;
|
||||
for (const item of this.onQueue) {
|
||||
this.target.on[item.method](...item.args);
|
||||
}
|
||||
for (const item of this.targetQueue) {
|
||||
item.resolve(await this.target[item.method](...item.args));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/index.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/api.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/app.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/component.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/context.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/hooks.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/api/util.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/plugin.js
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
|
||||
// node_modules/@vue/devtools-api/lib/esm/index.js
|
||||
function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
|
||||
const descriptor = pluginDescriptor;
|
||||
const target = getTarget();
|
||||
const hook = getDevtoolsGlobalHook();
|
||||
const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;
|
||||
if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
|
||||
hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
|
||||
} else {
|
||||
const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;
|
||||
const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
|
||||
list.push({
|
||||
pluginDescriptor: descriptor,
|
||||
setupFn,
|
||||
proxy
|
||||
});
|
||||
if (proxy)
|
||||
setupFn(proxy.proxiedTarget);
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
isPerformanceSupported,
|
||||
now,
|
||||
setupDevtoolsPlugin
|
||||
};
|
||||
//# sourceMappingURL=chunk-WT46H2UR.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -1,295 +0,0 @@
|
||||
import {
|
||||
__commonJS,
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
} from "./chunk-JQISXBHW.js";
|
||||
|
||||
// node_modules/nprogress/nprogress.js
|
||||
var require_nprogress = __commonJS({
|
||||
"node_modules/nprogress/nprogress.js"(exports, module) {
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
(function(root, factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define(factory);
|
||||
} else if (typeof exports === "object") {
|
||||
module.exports = factory();
|
||||
} else {
|
||||
root.NProgress = factory();
|
||||
}
|
||||
})(exports, function() {
|
||||
var NProgress = {};
|
||||
NProgress.version = "0.2.0";
|
||||
var Settings = NProgress.settings = {
|
||||
minimum: 0.08,
|
||||
easing: "ease",
|
||||
positionUsing: "",
|
||||
speed: 200,
|
||||
trickle: true,
|
||||
trickleRate: 0.02,
|
||||
trickleSpeed: 800,
|
||||
showSpinner: true,
|
||||
barSelector: '[role="bar"]',
|
||||
spinnerSelector: '[role="spinner"]',
|
||||
parent: "body",
|
||||
template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
|
||||
};
|
||||
NProgress.configure = function(options) {
|
||||
var key, value;
|
||||
for (key in options) {
|
||||
value = options[key];
|
||||
if (value !== void 0 && options.hasOwnProperty(key))
|
||||
Settings[key] = value;
|
||||
}
|
||||
return this;
|
||||
};
|
||||
NProgress.status = null;
|
||||
NProgress.set = function(n) {
|
||||
var started = NProgress.isStarted();
|
||||
n = clamp(n, Settings.minimum, 1);
|
||||
NProgress.status = n === 1 ? null : n;
|
||||
var progress = NProgress.render(!started), bar = progress.querySelector(Settings.barSelector), speed = Settings.speed, ease = Settings.easing;
|
||||
progress.offsetWidth;
|
||||
queue(function(next) {
|
||||
if (Settings.positionUsing === "")
|
||||
Settings.positionUsing = NProgress.getPositioningCSS();
|
||||
css(bar, barPositionCSS(n, speed, ease));
|
||||
if (n === 1) {
|
||||
css(progress, {
|
||||
transition: "none",
|
||||
opacity: 1
|
||||
});
|
||||
progress.offsetWidth;
|
||||
setTimeout(function() {
|
||||
css(progress, {
|
||||
transition: "all " + speed + "ms linear",
|
||||
opacity: 0
|
||||
});
|
||||
setTimeout(function() {
|
||||
NProgress.remove();
|
||||
next();
|
||||
}, speed);
|
||||
}, speed);
|
||||
} else {
|
||||
setTimeout(next, speed);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
NProgress.isStarted = function() {
|
||||
return typeof NProgress.status === "number";
|
||||
};
|
||||
NProgress.start = function() {
|
||||
if (!NProgress.status)
|
||||
NProgress.set(0);
|
||||
var work = function() {
|
||||
setTimeout(function() {
|
||||
if (!NProgress.status)
|
||||
return;
|
||||
NProgress.trickle();
|
||||
work();
|
||||
}, Settings.trickleSpeed);
|
||||
};
|
||||
if (Settings.trickle)
|
||||
work();
|
||||
return this;
|
||||
};
|
||||
NProgress.done = function(force) {
|
||||
if (!force && !NProgress.status)
|
||||
return this;
|
||||
return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
|
||||
};
|
||||
NProgress.inc = function(amount) {
|
||||
var n = NProgress.status;
|
||||
if (!n) {
|
||||
return NProgress.start();
|
||||
} else {
|
||||
if (typeof amount !== "number") {
|
||||
amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);
|
||||
}
|
||||
n = clamp(n + amount, 0, 0.994);
|
||||
return NProgress.set(n);
|
||||
}
|
||||
};
|
||||
NProgress.trickle = function() {
|
||||
return NProgress.inc(Math.random() * Settings.trickleRate);
|
||||
};
|
||||
(function() {
|
||||
var initial = 0, current = 0;
|
||||
NProgress.promise = function($promise) {
|
||||
if (!$promise || $promise.state() === "resolved") {
|
||||
return this;
|
||||
}
|
||||
if (current === 0) {
|
||||
NProgress.start();
|
||||
}
|
||||
initial++;
|
||||
current++;
|
||||
$promise.always(function() {
|
||||
current--;
|
||||
if (current === 0) {
|
||||
initial = 0;
|
||||
NProgress.done();
|
||||
} else {
|
||||
NProgress.set((initial - current) / initial);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
})();
|
||||
NProgress.render = function(fromStart) {
|
||||
if (NProgress.isRendered())
|
||||
return document.getElementById("nprogress");
|
||||
addClass(document.documentElement, "nprogress-busy");
|
||||
var progress = document.createElement("div");
|
||||
progress.id = "nprogress";
|
||||
progress.innerHTML = Settings.template;
|
||||
var bar = progress.querySelector(Settings.barSelector), perc = fromStart ? "-100" : toBarPerc(NProgress.status || 0), parent = document.querySelector(Settings.parent), spinner;
|
||||
css(bar, {
|
||||
transition: "all 0 linear",
|
||||
transform: "translate3d(" + perc + "%,0,0)"
|
||||
});
|
||||
if (!Settings.showSpinner) {
|
||||
spinner = progress.querySelector(Settings.spinnerSelector);
|
||||
spinner && removeElement(spinner);
|
||||
}
|
||||
if (parent != document.body) {
|
||||
addClass(parent, "nprogress-custom-parent");
|
||||
}
|
||||
parent.appendChild(progress);
|
||||
return progress;
|
||||
};
|
||||
NProgress.remove = function() {
|
||||
removeClass(document.documentElement, "nprogress-busy");
|
||||
removeClass(document.querySelector(Settings.parent), "nprogress-custom-parent");
|
||||
var progress = document.getElementById("nprogress");
|
||||
progress && removeElement(progress);
|
||||
};
|
||||
NProgress.isRendered = function() {
|
||||
return !!document.getElementById("nprogress");
|
||||
};
|
||||
NProgress.getPositioningCSS = function() {
|
||||
var bodyStyle = document.body.style;
|
||||
var vendorPrefix = "WebkitTransform" in bodyStyle ? "Webkit" : "MozTransform" in bodyStyle ? "Moz" : "msTransform" in bodyStyle ? "ms" : "OTransform" in bodyStyle ? "O" : "";
|
||||
if (vendorPrefix + "Perspective" in bodyStyle) {
|
||||
return "translate3d";
|
||||
} else if (vendorPrefix + "Transform" in bodyStyle) {
|
||||
return "translate";
|
||||
} else {
|
||||
return "margin";
|
||||
}
|
||||
};
|
||||
function clamp(n, min, max) {
|
||||
if (n < min)
|
||||
return min;
|
||||
if (n > max)
|
||||
return max;
|
||||
return n;
|
||||
}
|
||||
function toBarPerc(n) {
|
||||
return (-1 + n) * 100;
|
||||
}
|
||||
function barPositionCSS(n, speed, ease) {
|
||||
var barCSS;
|
||||
if (Settings.positionUsing === "translate3d") {
|
||||
barCSS = { transform: "translate3d(" + toBarPerc(n) + "%,0,0)" };
|
||||
} else if (Settings.positionUsing === "translate") {
|
||||
barCSS = { transform: "translate(" + toBarPerc(n) + "%,0)" };
|
||||
} else {
|
||||
barCSS = { "margin-left": toBarPerc(n) + "%" };
|
||||
}
|
||||
barCSS.transition = "all " + speed + "ms " + ease;
|
||||
return barCSS;
|
||||
}
|
||||
var queue = function() {
|
||||
var pending = [];
|
||||
function next() {
|
||||
var fn = pending.shift();
|
||||
if (fn) {
|
||||
fn(next);
|
||||
}
|
||||
}
|
||||
return function(fn) {
|
||||
pending.push(fn);
|
||||
if (pending.length == 1)
|
||||
next();
|
||||
};
|
||||
}();
|
||||
var css = function() {
|
||||
var cssPrefixes = ["Webkit", "O", "Moz", "ms"], cssProps = {};
|
||||
function camelCase(string) {
|
||||
return string.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function(match, letter) {
|
||||
return letter.toUpperCase();
|
||||
});
|
||||
}
|
||||
function getVendorProp(name) {
|
||||
var style = document.body.style;
|
||||
if (name in style)
|
||||
return name;
|
||||
var i = cssPrefixes.length, capName = name.charAt(0).toUpperCase() + name.slice(1), vendorName;
|
||||
while (i--) {
|
||||
vendorName = cssPrefixes[i] + capName;
|
||||
if (vendorName in style)
|
||||
return vendorName;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
function getStyleProp(name) {
|
||||
name = camelCase(name);
|
||||
return cssProps[name] || (cssProps[name] = getVendorProp(name));
|
||||
}
|
||||
function applyCss(element, prop, value) {
|
||||
prop = getStyleProp(prop);
|
||||
element.style[prop] = value;
|
||||
}
|
||||
return function(element, properties) {
|
||||
var args = arguments, prop, value;
|
||||
if (args.length == 2) {
|
||||
for (prop in properties) {
|
||||
value = properties[prop];
|
||||
if (value !== void 0 && properties.hasOwnProperty(prop))
|
||||
applyCss(element, prop, value);
|
||||
}
|
||||
} else {
|
||||
applyCss(element, args[1], args[2]);
|
||||
}
|
||||
};
|
||||
}();
|
||||
function hasClass(element, name) {
|
||||
var list = typeof element == "string" ? element : classList(element);
|
||||
return list.indexOf(" " + name + " ") >= 0;
|
||||
}
|
||||
function addClass(element, name) {
|
||||
var oldList = classList(element), newList = oldList + name;
|
||||
if (hasClass(oldList, name))
|
||||
return;
|
||||
element.className = newList.substring(1);
|
||||
}
|
||||
function removeClass(element, name) {
|
||||
var oldList = classList(element), newList;
|
||||
if (!hasClass(element, name))
|
||||
return;
|
||||
newList = oldList.replace(" " + name + " ", " ");
|
||||
element.className = newList.substring(1, newList.length - 1);
|
||||
}
|
||||
function classList(element) {
|
||||
return (" " + (element.className || "") + " ").replace(/\s+/gi, " ");
|
||||
}
|
||||
function removeElement(element) {
|
||||
element && element.parentNode && element.parentNode.removeChild(element);
|
||||
}
|
||||
return NProgress;
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// dep:nprogress
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
var nprogress_default = require_nprogress();
|
||||
export {
|
||||
nprogress_default as default
|
||||
};
|
||||
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
|
||||
* @license MIT */
|
||||
//# sourceMappingURL=nprogress.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
{"type":"module"}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,303 +0,0 @@
|
||||
import {
|
||||
BaseTransition,
|
||||
Comment,
|
||||
EffectScope,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
VueElement,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
computed,
|
||||
createApp,
|
||||
createBaseVNode,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hydrate,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
openBlock,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useSSRContext,
|
||||
useSlots,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-J5QUGD5J.js";
|
||||
import {
|
||||
camelize,
|
||||
capitalize,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
toDisplayString,
|
||||
toHandlerKey
|
||||
} from "./chunk-SDTWZDHJ.js";
|
||||
import {
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES,
|
||||
init_define_MZ_ZOOM_OPTIONS
|
||||
} from "./chunk-JQISXBHW.js";
|
||||
|
||||
// dep:vue
|
||||
init_define_EXTERNAL_LINK_ICON_LOCALES();
|
||||
init_define_MZ_ZOOM_OPTIONS();
|
||||
export {
|
||||
BaseTransition,
|
||||
Comment,
|
||||
EffectScope,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
VueElement,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
computed,
|
||||
createApp,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createBaseVNode as createElementVNode,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hydrate,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
openBlock,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useSSRContext,
|
||||
useSlots,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
};
|
||||
//# sourceMappingURL=vue.js.map
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["dep:vue"],
|
||||
"sourcesContent": ["\nexport * from \"../../../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js\""],
|
||||
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;",
|
||||
"names": []
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
import clientAppEnhance0 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/plugin-external-link-icon/lib/client/clientAppEnhance.js'
|
||||
import clientAppEnhance1 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/plugin-medium-zoom/lib/client/clientAppEnhance.js'
|
||||
import clientAppEnhance2 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/plugin-theme-data/lib/client/clientAppEnhance.js'
|
||||
import clientAppEnhance3 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/theme-default/lib/client/clientAppEnhance.js'
|
||||
|
||||
export const clientAppEnhances = [
|
||||
clientAppEnhance0,
|
||||
clientAppEnhance1,
|
||||
clientAppEnhance2,
|
||||
clientAppEnhance3,
|
||||
]
|
||||
@@ -1,5 +0,0 @@
|
||||
import clientAppRootComponent0 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/plugin-back-to-top/lib/client/components/BackToTop.js'
|
||||
|
||||
export const clientAppRootComponents = [
|
||||
clientAppRootComponent0,
|
||||
]
|
||||
@@ -1,9 +0,0 @@
|
||||
import clientAppSetup0 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/plugin-active-header-links/lib/client/clientAppSetup.js'
|
||||
import clientAppSetup1 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/plugin-nprogress/lib/client/clientAppSetup.js'
|
||||
import clientAppSetup2 from '/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/theme-default/lib/client/clientAppSetup.js'
|
||||
|
||||
export const clientAppSetups = [
|
||||
clientAppSetup0,
|
||||
clientAppSetup1,
|
||||
clientAppSetup2,
|
||||
]
|
||||
@@ -1,6 +0,0 @@
|
||||
import { defineAsyncComponent } from 'vue'
|
||||
|
||||
export const layoutComponents = {
|
||||
"404": defineAsyncComponent(() => import("/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/theme-default/lib/client/layouts/404.vue")),
|
||||
"Layout": defineAsyncComponent(() => import("/Users/mmdapl/Desktop/github/408CSFamily/node_modules/@vuepress/theme-default/lib/client/layouts/Layout.vue")),
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
import { defineAsyncComponent } from 'vue'
|
||||
|
||||
export const pagesComponents = {
|
||||
// path: /Big_Event_History.html
|
||||
"v-8bf0fafc": defineAsyncComponent(() => import(/* webpackChunkName: "v-8bf0fafc" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/Big_Event_History.html.vue")),
|
||||
// path: /
|
||||
"v-8daa1a0e": defineAsyncComponent(() => import(/* webpackChunkName: "v-8daa1a0e" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/index.html.vue")),
|
||||
// path: /CN/
|
||||
"v-2d0a038b": defineAsyncComponent(() => import(/* webpackChunkName: "v-2d0a038b" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/CN/index.html.vue")),
|
||||
// path: /OS/
|
||||
"v-2d0a3132": defineAsyncComponent(() => import(/* webpackChunkName: "v-2d0a3132" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/OS/index.html.vue")),
|
||||
// path: /NoteMap/CN_Map.html
|
||||
"v-62bd4033": defineAsyncComponent(() => import(/* webpackChunkName: "v-62bd4033" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/NoteMap/CN_Map.html.vue")),
|
||||
// path: /NoteMap/DS_Map.html
|
||||
"v-85ddaee2": defineAsyncComponent(() => import(/* webpackChunkName: "v-85ddaee2" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/NoteMap/DS_Map.html.vue")),
|
||||
// path: /pages/c1bec1/
|
||||
"v-5c57558c": defineAsyncComponent(() => import(/* webpackChunkName: "v-5c57558c" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/c1bec1/index.html.vue")),
|
||||
// path: /DS/
|
||||
"v-2d0a07e7": defineAsyncComponent(() => import(/* webpackChunkName: "v-2d0a07e7" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/index.html.vue")),
|
||||
// path: /DS/basic_introduction.html
|
||||
"v-75163b67": defineAsyncComponent(() => import(/* webpackChunkName: "v-75163b67" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/basic_introduction.html.vue")),
|
||||
// path: /DS/linear_table.html
|
||||
"v-c8ed33c4": defineAsyncComponent(() => import(/* webpackChunkName: "v-c8ed33c4" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/linear_table.html.vue")),
|
||||
// path: /pages/c12319/
|
||||
"v-599b7814": defineAsyncComponent(() => import(/* webpackChunkName: "v-599b7814" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/c12319/index.html.vue")),
|
||||
// path: /pages/add102/
|
||||
"v-4995d319": defineAsyncComponent(() => import(/* webpackChunkName: "v-4995d319" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/add102/index.html.vue")),
|
||||
// path: /pages/15aa63/
|
||||
"v-0e2293aa": defineAsyncComponent(() => import(/* webpackChunkName: "v-0e2293aa" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/15aa63/index.html.vue")),
|
||||
// path: /pages/c33acd/
|
||||
"v-5d28eacc": defineAsyncComponent(() => import(/* webpackChunkName: "v-5d28eacc" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/c33acd/index.html.vue")),
|
||||
// path: /pages/bdad06/
|
||||
"v-7e68f740": defineAsyncComponent(() => import(/* webpackChunkName: "v-7e68f740" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/bdad06/index.html.vue")),
|
||||
// path: /pages/53976b/
|
||||
"v-47e9dd3a": defineAsyncComponent(() => import(/* webpackChunkName: "v-47e9dd3a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/53976b/index.html.vue")),
|
||||
// path: /pages/3f923d/
|
||||
"v-6d791ca4": defineAsyncComponent(() => import(/* webpackChunkName: "v-6d791ca4" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/3f923d/index.html.vue")),
|
||||
// path: /pages/18d025/
|
||||
"v-13550f15": defineAsyncComponent(() => import(/* webpackChunkName: "v-13550f15" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/18d025/index.html.vue")),
|
||||
// path: /DS/coding/algorithm.html
|
||||
"v-37abb588": defineAsyncComponent(() => import(/* webpackChunkName: "v-37abb588" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/coding/algorithm.html.vue")),
|
||||
// path: /pages/924aed/
|
||||
"v-a4870ef4": defineAsyncComponent(() => import(/* webpackChunkName: "v-a4870ef4" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/924aed/index.html.vue")),
|
||||
// path: /pages/ff395c/
|
||||
"v-52cfe897": defineAsyncComponent(() => import(/* webpackChunkName: "v-52cfe897" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/ff395c/index.html.vue")),
|
||||
// path: /pages/0a7dde/
|
||||
"v-2203c86c": defineAsyncComponent(() => import(/* webpackChunkName: "v-2203c86c" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/0a7dde/index.html.vue")),
|
||||
// path: /pages/e577f8/
|
||||
"v-6af7422e": defineAsyncComponent(() => import(/* webpackChunkName: "v-6af7422e" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/e577f8/index.html.vue")),
|
||||
// path: /pages/a7b602/
|
||||
"v-069c5402": defineAsyncComponent(() => import(/* webpackChunkName: "v-069c5402" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/a7b602/index.html.vue")),
|
||||
// path: /pages/5de3a5/
|
||||
"v-32135c7a": defineAsyncComponent(() => import(/* webpackChunkName: "v-32135c7a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/5de3a5/index.html.vue")),
|
||||
// path: /pages/7088fd/
|
||||
"v-40ac0f54": defineAsyncComponent(() => import(/* webpackChunkName: "v-40ac0f54" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/7088fd/index.html.vue")),
|
||||
// path: /pages/56b8ef/
|
||||
"v-3926f79a": defineAsyncComponent(() => import(/* webpackChunkName: "v-3926f79a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/56b8ef/index.html.vue")),
|
||||
// path: /pages/cddc8f/
|
||||
"v-990daf06": defineAsyncComponent(() => import(/* webpackChunkName: "v-990daf06" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/cddc8f/index.html.vue")),
|
||||
// path: /pages/10b7a4/
|
||||
"v-0595fa04": defineAsyncComponent(() => import(/* webpackChunkName: "v-0595fa04" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/10b7a4/index.html.vue")),
|
||||
// path: /404.html
|
||||
"v-3706649a": defineAsyncComponent(() => import(/* webpackChunkName: "v-3706649a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/404.html.vue")),
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
export const pagesData = {
|
||||
// path: /Big_Event_History.html
|
||||
"v-8bf0fafc": () => import(/* webpackChunkName: "v-8bf0fafc" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/Big_Event_History.html.js").then(({ data }) => data),
|
||||
// path: /
|
||||
"v-8daa1a0e": () => import(/* webpackChunkName: "v-8daa1a0e" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/index.html.js").then(({ data }) => data),
|
||||
// path: /CN/
|
||||
"v-2d0a038b": () => import(/* webpackChunkName: "v-2d0a038b" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/CN/index.html.js").then(({ data }) => data),
|
||||
// path: /OS/
|
||||
"v-2d0a3132": () => import(/* webpackChunkName: "v-2d0a3132" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/OS/index.html.js").then(({ data }) => data),
|
||||
// path: /NoteMap/CN_Map.html
|
||||
"v-62bd4033": () => import(/* webpackChunkName: "v-62bd4033" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/NoteMap/CN_Map.html.js").then(({ data }) => data),
|
||||
// path: /NoteMap/DS_Map.html
|
||||
"v-85ddaee2": () => import(/* webpackChunkName: "v-85ddaee2" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/NoteMap/DS_Map.html.js").then(({ data }) => data),
|
||||
// path: /pages/c1bec1/
|
||||
"v-5c57558c": () => import(/* webpackChunkName: "v-5c57558c" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/c1bec1/index.html.js").then(({ data }) => data),
|
||||
// path: /DS/
|
||||
"v-2d0a07e7": () => import(/* webpackChunkName: "v-2d0a07e7" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/index.html.js").then(({ data }) => data),
|
||||
// path: /DS/basic_introduction.html
|
||||
"v-75163b67": () => import(/* webpackChunkName: "v-75163b67" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/basic_introduction.html.js").then(({ data }) => data),
|
||||
// path: /DS/linear_table.html
|
||||
"v-c8ed33c4": () => import(/* webpackChunkName: "v-c8ed33c4" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/linear_table.html.js").then(({ data }) => data),
|
||||
// path: /pages/c12319/
|
||||
"v-599b7814": () => import(/* webpackChunkName: "v-599b7814" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/c12319/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/add102/
|
||||
"v-4995d319": () => import(/* webpackChunkName: "v-4995d319" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/add102/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/15aa63/
|
||||
"v-0e2293aa": () => import(/* webpackChunkName: "v-0e2293aa" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/15aa63/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/c33acd/
|
||||
"v-5d28eacc": () => import(/* webpackChunkName: "v-5d28eacc" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/c33acd/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/bdad06/
|
||||
"v-7e68f740": () => import(/* webpackChunkName: "v-7e68f740" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/bdad06/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/53976b/
|
||||
"v-47e9dd3a": () => import(/* webpackChunkName: "v-47e9dd3a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/53976b/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/3f923d/
|
||||
"v-6d791ca4": () => import(/* webpackChunkName: "v-6d791ca4" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/3f923d/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/18d025/
|
||||
"v-13550f15": () => import(/* webpackChunkName: "v-13550f15" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/18d025/index.html.js").then(({ data }) => data),
|
||||
// path: /DS/coding/algorithm.html
|
||||
"v-37abb588": () => import(/* webpackChunkName: "v-37abb588" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/DS/coding/algorithm.html.js").then(({ data }) => data),
|
||||
// path: /pages/924aed/
|
||||
"v-a4870ef4": () => import(/* webpackChunkName: "v-a4870ef4" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/924aed/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/ff395c/
|
||||
"v-52cfe897": () => import(/* webpackChunkName: "v-52cfe897" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/ff395c/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/0a7dde/
|
||||
"v-2203c86c": () => import(/* webpackChunkName: "v-2203c86c" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/0a7dde/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/e577f8/
|
||||
"v-6af7422e": () => import(/* webpackChunkName: "v-6af7422e" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/e577f8/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/a7b602/
|
||||
"v-069c5402": () => import(/* webpackChunkName: "v-069c5402" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/a7b602/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/5de3a5/
|
||||
"v-32135c7a": () => import(/* webpackChunkName: "v-32135c7a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/5de3a5/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/7088fd/
|
||||
"v-40ac0f54": () => import(/* webpackChunkName: "v-40ac0f54" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/7088fd/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/56b8ef/
|
||||
"v-3926f79a": () => import(/* webpackChunkName: "v-3926f79a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/56b8ef/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/cddc8f/
|
||||
"v-990daf06": () => import(/* webpackChunkName: "v-990daf06" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/cddc8f/index.html.js").then(({ data }) => data),
|
||||
// path: /pages/10b7a4/
|
||||
"v-0595fa04": () => import(/* webpackChunkName: "v-0595fa04" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/pages/10b7a4/index.html.js").then(({ data }) => data),
|
||||
// path: /404.html
|
||||
"v-3706649a": () => import(/* webpackChunkName: "v-3706649a" */"/Users/mmdapl/Desktop/github/408CSFamily/docs/.vuepress/.temp/pages/404.html.js").then(({ data }) => data),
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
import { Vuepress } from '@vuepress/client/lib/components/Vuepress'
|
||||
|
||||
const routeItems = [
|
||||
["v-8bf0fafc","/Big_Event_History.html",{"title":""},["/Big_Event_History","/Big_Event_History.md"]],
|
||||
["v-8daa1a0e","/",{"title":""},["/index.html","/README.md"]],
|
||||
["v-2d0a038b","/CN/",{"title":""},["/CN/index.html","/CN/Readme.md"]],
|
||||
["v-2d0a3132","/OS/",{"title":"Readme"},["/OS/index.html","/OS/Readme.md"]],
|
||||
["v-62bd4033","/NoteMap/CN_Map.html",{"title":""},["/NoteMap/CN_Map","/NoteMap/CN_Map.md"]],
|
||||
["v-85ddaee2","/NoteMap/DS_Map.html",{"title":""},["/NoteMap/DS_Map","/NoteMap/DS_Map.md"]],
|
||||
["v-5c57558c","/pages/c1bec1/",{"title":""},["/pages/c1bec1/index.html","/DS/README11.html","/DS/README11.md"]],
|
||||
["v-2d0a07e7","/DS/",{"title":""},["/DS/index.html","/DS/Readme.md"]],
|
||||
["v-75163b67","/DS/basic_introduction.html",{"title":"基础入门"},["/DS/basic_introduction","/DS/basic_introduction.md"]],
|
||||
["v-c8ed33c4","/DS/linear_table.html",{"title":"线性表"},["/DS/linear_table","/DS/linear_table.md"]],
|
||||
["v-599b7814","/pages/c12319/",{"title":"Readme"},["/pages/c12319/index.html","/CCP/","/CCP/Readme.md"]],
|
||||
["v-4995d319","/pages/add102/",{"title":""},["/pages/add102/index.html","/category/","/category/README.md"]],
|
||||
["v-0e2293aa","/pages/15aa63/",{"title":"关于作者"},["/pages/15aa63/index.html","/category/about_author.html","/category/about_author.md"]],
|
||||
["v-5d28eacc","/pages/c33acd/",{"title":"赞赏支持"},["/pages/c33acd/index.html","/category/reader_donate.html","/category/reader_donate.md"]],
|
||||
["v-7e68f740","/pages/bdad06/",{"title":"更新日志"},["/pages/bdad06/index.html","/category/update_logs.html","/category/update_logs.md"]],
|
||||
["v-47e9dd3a","/pages/53976b/",{"title":"test"},["/pages/53976b/index.html","/DS/basic_introduction/1.basic_concepts.html","/DS/basic_introduction/1.basic_concepts.md"]],
|
||||
["v-6d791ca4","/pages/3f923d/",{"title":"three_elements_of_data_structure"},["/pages/3f923d/index.html","/DS/basic_introduction/2.three_elements_of_data_structure.html","/DS/basic_introduction/2.three_elements_of_data_structure.md"]],
|
||||
["v-13550f15","/pages/18d025/",{"title":"algorithm_and_algorithm_evaluation"},["/pages/18d025/index.html","/DS/basic_introduction/3.algorithm_and_algorithm_evaluation.html","/DS/basic_introduction/3.algorithm_and_algorithm_evaluation.md"]],
|
||||
["v-37abb588","/DS/coding/algorithm.html",{"title":""},["/DS/coding/algorithm","/DS/coding/algorithm.md"]],
|
||||
["v-a4870ef4","/pages/924aed/",{"title":"basic_concept_and_operation"},["/pages/924aed/index.html","/DS/linear_table/1.basic_concept_and_operation.html","/DS/linear_table/1.basic_concept_and_operation.md"]],
|
||||
["v-52cfe897","/pages/ff395c/",{"title":"sequential_representation"},["/pages/ff395c/index.html","/DS/linear_table/2.sequential_representation.html","/DS/linear_table/2.sequential_representation.md"]],
|
||||
["v-2203c86c","/pages/0a7dde/",{"title":"chain_representation"},["/pages/0a7dde/index.html","/DS/linear_table/3.chain_representation.html","/DS/linear_table/3.chain_representation.md"]],
|
||||
["v-6af7422e","/pages/e577f8/",{"title":"double_linked_list"},["/pages/e577f8/index.html","/DS/linear_table/4.double_linked_list.html","/DS/linear_table/4.double_linked_list.md"]],
|
||||
["v-069c5402","/pages/a7b602/",{"title":"circular_list"},["/pages/a7b602/index.html","/DS/linear_table/5.circular_list.html","/DS/linear_table/5.circular_list.md"]],
|
||||
["v-32135c7a","/pages/5de3a5/",{"title":"static_linked_list"},["/pages/5de3a5/index.html","/DS/linear_table/6.static_linked_list.html","/DS/linear_table/6.static_linked_list.md"]],
|
||||
["v-40ac0f54","/pages/7088fd/",{"title":"comparison_of_sequential_list_and_linked_list"},["/pages/7088fd/index.html","/DS/linear_table/7.comparison_of_sequential_list_and_linked_list.html","/DS/linear_table/7.comparison_of_sequential_list_and_linked_list.md"]],
|
||||
["v-3926f79a","/pages/56b8ef/",{"title":"selection_of_storage_structure"},["/pages/56b8ef/index.html","/DS/linear_table/8.selection_of_storage_structure.html","/DS/linear_table/8.selection_of_storage_structure.md"]],
|
||||
["v-990daf06","/pages/cddc8f/",{"title":"piecemeal_knowledge_supplement"},["/pages/cddc8f/index.html","/DS/linear_table/9.piecemeal_knowledge_supplement.html","/DS/linear_table/9.piecemeal_knowledge_supplement.md"]],
|
||||
["v-0595fa04","/pages/10b7a4/",{"title":"test"},["/pages/10b7a4/index.html","/category/test/1.test.html","/category/test/1.test.md"]],
|
||||
["v-3706649a","/404.html",{"title":""},["/404"]],
|
||||
]
|
||||
|
||||
export const pagesRoutes = routeItems.reduce(
|
||||
(result, [name, path, meta, redirects]) => {
|
||||
result.push(
|
||||
{
|
||||
name,
|
||||
path,
|
||||
component: Vuepress,
|
||||
meta,
|
||||
},
|
||||
...redirects.map((item) => ({
|
||||
path: item,
|
||||
redirect: path,
|
||||
}))
|
||||
)
|
||||
return result
|
||||
},
|
||||
[
|
||||
{
|
||||
name: "404",
|
||||
path: "/:catchAll(.*)",
|
||||
component: Vuepress,
|
||||
}
|
||||
]
|
||||
)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,29 +0,0 @@
|
||||
export const siteData = {
|
||||
"base": "/",
|
||||
"lang": "en-US",
|
||||
"title": "计算机应试全家桶",
|
||||
"description": "磨刀不误砍柴工,读完硕士再打工",
|
||||
"head": [
|
||||
[
|
||||
"link",
|
||||
{
|
||||
"rel": "icon",
|
||||
"href": "/assets/fight_favicon.ico"
|
||||
}
|
||||
]
|
||||
],
|
||||
"locales": {}
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updateSiteData) {
|
||||
__VUE_HMR_RUNTIME__.updateSiteData(siteData)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ siteData }) => {
|
||||
__VUE_HMR_RUNTIME__.updateSiteData(siteData)
|
||||
})
|
||||
}
|
||||
@@ -1,140 +0,0 @@
|
||||
export const themeData = {
|
||||
"logo": "/assets/fight_favicon.ico",
|
||||
"darkMode": false,
|
||||
"navbar": [
|
||||
{
|
||||
"text": "首页",
|
||||
"link": "/"
|
||||
},
|
||||
{
|
||||
"text": "恶补算法",
|
||||
"children": [
|
||||
{
|
||||
"text": "课本习题",
|
||||
"link": "/"
|
||||
},
|
||||
{
|
||||
"text": "刷题笔记",
|
||||
"link": "/todo"
|
||||
},
|
||||
{
|
||||
"text": "在线刷题",
|
||||
"children": [
|
||||
{
|
||||
"text": "杭电OJ",
|
||||
"link": "http://acm.hdu.edu.cn/"
|
||||
},
|
||||
{
|
||||
"text": "牛客网",
|
||||
"link": "https://www.nowcoder.com/"
|
||||
},
|
||||
{
|
||||
"text": "LeetCode",
|
||||
"link": "https://leetcode-cn.com/"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "数据结构",
|
||||
"link": "/DS/"
|
||||
},
|
||||
{
|
||||
"text": "操作系统",
|
||||
"link": "/OS/"
|
||||
},
|
||||
{
|
||||
"text": "计算机组成原理",
|
||||
"link": "/CCP/"
|
||||
},
|
||||
{
|
||||
"text": "计算机网络",
|
||||
"link": "/CN/"
|
||||
},
|
||||
{
|
||||
"text": "其他资料",
|
||||
"children": [
|
||||
{
|
||||
"text": "考研相关",
|
||||
"children": [
|
||||
{
|
||||
"text": "111",
|
||||
"link": "/333"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "思维导图",
|
||||
"children": [
|
||||
{
|
||||
"text": "数据结构",
|
||||
"link": "/NoteMap/DS_Map"
|
||||
},
|
||||
{
|
||||
"text": "操作系统",
|
||||
"link": "/NoteMap/OS_Map"
|
||||
},
|
||||
{
|
||||
"text": "计组",
|
||||
"link": "/NoteMap/CCP_Map"
|
||||
},
|
||||
{
|
||||
"text": "计算机网络",
|
||||
"link": "/NoteMap/CN_Map"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"text": "大事记",
|
||||
"link": "/Big_Event_History/"
|
||||
}
|
||||
],
|
||||
"sidebar": {
|
||||
"/DS/": [
|
||||
"basic_introduction",
|
||||
"linear_table"
|
||||
]
|
||||
},
|
||||
"smoothScroll": true,
|
||||
"lastUpdated": true,
|
||||
"lastUpdatedText": "最近更新",
|
||||
"contributorsText": "贡献者",
|
||||
"notFound": [
|
||||
"宝贝不要急,我努力更新就会慢慢有的哟...想要什么,也欢迎微信后台私信哟!"
|
||||
],
|
||||
"backToHome": "返回首页",
|
||||
"repo": "https://github.com/mmdapl/408CSFamily",
|
||||
"editLink": false,
|
||||
"displayAllHeaders": true,
|
||||
"search": true,
|
||||
"searchMaxSuggestions": 10,
|
||||
"locales": {
|
||||
"/": {
|
||||
"selectLanguageName": "English"
|
||||
}
|
||||
},
|
||||
"selectLanguageText": "Languages",
|
||||
"selectLanguageAriaLabel": "Select language",
|
||||
"sidebarDepth": 2,
|
||||
"editLinkText": "Edit this page",
|
||||
"contributors": true,
|
||||
"openInNewWindow": "open in new window",
|
||||
"toggleDarkMode": "toggle dark mode",
|
||||
"toggleSidebar": "toggle sidebar"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updateThemeData) {
|
||||
__VUE_HMR_RUNTIME__.updateThemeData(themeData)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ themeData }) => {
|
||||
__VUE_HMR_RUNTIME__.updateThemeData(themeData)
|
||||
})
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-3706649a",
|
||||
"path": "/404.html",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"layout": "404"
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [],
|
||||
"git": {},
|
||||
"filePathRelative": null
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
<template></template>
|
||||
@@ -1,34 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-8bf0fafc",
|
||||
"path": "/Big_Event_History.html",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "网站大事记",
|
||||
"slug": "网站大事记",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": null,
|
||||
"contributors": []
|
||||
},
|
||||
"filePathRelative": "Big_Event_History.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2022-04-21 23:43:19
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-21 23:44:50
|
||||
-->
|
||||
<h2 id="网站大事记" tabindex="-1"><a class="header-anchor" href="#网站大事记" aria-hidden="true">#</a> 网站大事记</h2>
|
||||
</template>
|
||||
@@ -1,40 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-2d0a038b",
|
||||
"path": "/CN/",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "计算机网络",
|
||||
"slug": "计算机网络",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "CN/Readme.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-08 10:10:27
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-21 23:33:59
|
||||
-->
|
||||
<h2 id="计算机网络" tabindex="-1"><a class="header-anchor" href="#计算机网络" aria-hidden="true">#</a> 计算机网络</h2>
|
||||
<p>doing</p>
|
||||
</template>
|
||||
@@ -1,123 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-75163b67",
|
||||
"path": "/DS/basic_introduction.html",
|
||||
"title": "基础入门",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "基础入门"
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "基础概念",
|
||||
"slug": "基础概念",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据",
|
||||
"slug": "数据",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据元素",
|
||||
"slug": "数据元素",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据对象",
|
||||
"slug": "数据对象",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据类型",
|
||||
"slug": "数据类型",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "抽象数据类型(ADT)",
|
||||
"slug": "抽象数据类型-adt",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据结构",
|
||||
"slug": "数据结构",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "数据结构三要素",
|
||||
"slug": "数据结构三要素",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据的逻辑结构",
|
||||
"slug": "数据的逻辑结构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据的存储(物理)结构",
|
||||
"slug": "数据的存储-物理-结构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据的运算",
|
||||
"slug": "数据的运算",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "算法和算法评价",
|
||||
"slug": "算法和算法评价",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "算法",
|
||||
"slug": "算法",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "效率的度量",
|
||||
"slug": "效率的度量",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/basic_introduction.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,221 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:54:07
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-09 00:25:07
|
||||
-->
|
||||
<h2 id="基础概念" tabindex="-1"><a class="header-anchor" href="#基础概念" aria-hidden="true">#</a> 基础概念</h2>
|
||||
<h3 id="数据" tabindex="-1"><a class="header-anchor" href="#数据" aria-hidden="true">#</a> 数据</h3>
|
||||
<p><strong>信息的载体</strong>,是客观事物属性的数、字符以及所有能够输入到计算机包中并且被计算机程序识别和处理的<strong>集合</strong></p>
|
||||
<h3 id="数据元素" tabindex="-1"><a class="header-anchor" href="#数据元素" aria-hidden="true">#</a> 数据元素</h3>
|
||||
<p><strong>数据的基本单位</strong>,通常按照一个整数来进行考虑和处理。</p>
|
||||
<p>特别注意:一个数据元素由若干个<strong>数据项</strong>组成,数据项是构成数组元素的最小单位,且不可分割。</p>
|
||||
<h3 id="数据对象" tabindex="-1"><a class="header-anchor" href="#数据对象" aria-hidden="true">#</a> 数据对象</h3>
|
||||
<p>具有<strong>相同性质</strong>的数据元素的<strong>集合</strong>,<strong>是数据的子集</strong></p>
|
||||
<h3 id="数据类型" tabindex="-1"><a class="header-anchor" href="#数据类型" aria-hidden="true">#</a> 数据类型</h3>
|
||||
<p>值的集合和定义在此集合上一组操作的总称</p>
|
||||
<ul>
|
||||
<li>原子类型:不可再分的数据类型;</li>
|
||||
<li>结构类型:可以分解成若干分量(成分)的数据类型;</li>
|
||||
<li><strong>抽象数据类型</strong>:抽象出具组织和其相关的操作;</li>
|
||||
</ul>
|
||||
<h3 id="抽象数据类型-adt" tabindex="-1"><a class="header-anchor" href="#抽象数据类型-adt" aria-hidden="true">#</a> 抽象数据类型(ADT)</h3>
|
||||
<blockquote>
|
||||
<p>Tips: 可以结合高级语言中类对象封装来理解;</p>
|
||||
</blockquote>
|
||||
<div class="language-bash ext-sh line-numbers-mode"><pre v-pre class="language-bash"><code>ADT抽象数据类型名<span class="token punctuation">{</span>
|
||||
数据对象:<span class="token operator"><</span>数据对象的定义<span class="token operator">></span>
|
||||
数据关系:<span class="token operator"><</span>数据关系的定义<span class="token operator">></span>
|
||||
基本操作:<span class="token operator"><</span>基本操作的定义<span class="token operator">></span>
|
||||
<span class="token punctuation">}</span> ADT抽象数据类型名
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>一个数学模型以及定义在该模型上的一组操作。定义仅仅取决于它的一组逻辑操作。与计算机内部如何表示和实现是没有关系;</p>
|
||||
<p><strong>不论内部结构如何变化,只要其数学特性不变,就不会影响到外部的使用,实现了数据封装和信息隐藏</strong></p>
|
||||
<p>通常由(数据对象、数据关系、数据操作集)三元组来表示抽象数据类型;</p>
|
||||
<p>抽象数据类型的主要作用是<strong>数据封装和信息隐藏,让实现与使用相分离</strong>。数据及其相关操作的结合称为数据封装。对象可以对其他对象隐藏某些操作细节,从而使这些操作不会受到其他对象的影响。</p>
|
||||
<p>抽象数据类型独立于运算的具体实现,使用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,实现了信息隐藏。</p>
|
||||
<h3 id="数据结构" tabindex="-1"><a class="header-anchor" href="#数据结构" aria-hidden="true">#</a> 数据结构</h3>
|
||||
<p>首先明确:数据元素都不是孤立存在的。元素与元素之间存在着某种关系,这种相互之间的关系就是<strong>结构</strong>。</p>
|
||||
<p><strong>数据结构是相互之间存在一种或者多种特定关系的数据元素的集合</strong></p>
|
||||
<ul>
|
||||
<li>逻辑结构</li>
|
||||
<li>存储结构(物理结构)</li>
|
||||
<li>数据运算</li>
|
||||
</ul>
|
||||
<p>数据的逻辑结构和存储结构是密不可分的。</p>
|
||||
<p><strong>算法的设计取决于所选定的逻辑结构;算法的实现依赖于所采用的存储结构;</strong></p>
|
||||
<hr>
|
||||
<h2 id="数据结构三要素" tabindex="-1"><a class="header-anchor" href="#数据结构三要素" aria-hidden="true">#</a> 数据结构三要素</h2>
|
||||
<ul>
|
||||
<li>数据的逻辑结构</li>
|
||||
<li>数据的存储结构</li>
|
||||
<li>数据的运算</li>
|
||||
</ul>
|
||||
<h3 id="数据的逻辑结构" tabindex="-1"><a class="header-anchor" href="#数据的逻辑结构" aria-hidden="true">#</a> 数据的逻辑结构</h3>
|
||||
<p>数据元素之间的逻辑关系,从逻辑关系上描述数据,叫做数据的逻辑结构。</p>
|
||||
<p>与数据的存储(物理)结构无关,是独立于计算机的。</p>
|
||||
<p>可以分为:</p>
|
||||
<ul>
|
||||
<li>线性结构</li>
|
||||
<li>非线性结构</li>
|
||||
</ul>
|
||||
<p>线性表是典型的线性结构,衍生出的栈、队列、串、数组、广义表也都是线性结构;</p>
|
||||
<p>非线性结构主要有:集合、树(一般树、二叉树)、图(有向图、无向图)</p>
|
||||
<p>特别注意:</p>
|
||||
<ul>
|
||||
<li><code>集合</code>:结构中的数据元素之间<strong>除了“同属于一个集合”的关系外,别无其他关系。</strong></li>
|
||||
<li><code>线性结构</code>:结构中的数据元素之间<strong>只存在一对一的关系</strong>。</li>
|
||||
<li><code>树形结构</code>:结构中的数据元素之间<strong>存在一对多的关系。</strong></li>
|
||||
<li><code>图状结构和网状结构</code>:结构中的数据元素之间<strong>存在多对多的关系。</strong></li>
|
||||
</ul>
|
||||
<h3 id="数据的存储-物理-结构" tabindex="-1"><a class="header-anchor" href="#数据的存储-物理-结构" aria-hidden="true">#</a> 数据的存储(物理)结构</h3>
|
||||
<p>数据结构在计算机中的表示(映像)。包括数据<code>元素的表示</code>和<code>关系的表示</code>。</p>
|
||||
<p>存储结构是逻辑结构用计算机语言实现的,依赖于计算机语言。</p>
|
||||
<p>可以分为:</p>
|
||||
<ul>
|
||||
<li>顺序存储</li>
|
||||
<li>链式存储</li>
|
||||
<li>索引存储</li>
|
||||
<li>散列(Hash)存储</li>
|
||||
</ul>
|
||||
<p><strong>注意:存储和存取的概念不一样</strong></p>
|
||||
<h4 id="顺序存储" tabindex="-1"><a class="header-anchor" href="#顺序存储" aria-hidden="true">#</a> 顺序存储</h4>
|
||||
<p><strong>逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来体现。</strong></p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>可以实现随机存取</li>
|
||||
<li>元素占用最少的存储空间</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>只能使用相邻的一整块存储单元,依赖于物理结构相邻;</li>
|
||||
<li>容易产生<code>外部碎片</code></li>
|
||||
</ul>
|
||||
<p>什么是内外部碎片?</p>
|
||||
<blockquote>
|
||||
<p>参考资料:https://blog.csdn.net/qq_22238021/article/details/80209062</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>外部碎片:<code>还没有分配出去</code>(不属于任何进程),但是<strong>由于大小而无法分配给申请内存空间的新进程的内存空闲块。</strong></li>
|
||||
<li>内部碎片:<code>已经被分配出去</code>(能明确指出属于哪个进程)的<strong>内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片。</strong></li>
|
||||
</ul>
|
||||
<h4 id="链式存储" tabindex="-1"><a class="header-anchor" href="#链式存储" aria-hidden="true">#</a> 链式存储</h4>
|
||||
<p>与顺序存储不同,<strong>链式存储不要求逻辑上相邻的元素在物理位置上也相邻。</strong></p>
|
||||
<p>借助指示元素存储地址的<code>指针</code>表示元素之间的逻辑关系。</p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>不会出现碎片现象</li>
|
||||
<li>充分利用所有存储单元</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>除了存储元素外,还需要额外存储指针,会占用额外的存储空间(结合数据库索引学习)。</li>
|
||||
<li>链式存储,<strong>只能实现<code>顺序存取</code>,不能实现<code>随机存取</code>(指针的遍历)</strong></li>
|
||||
</ul>
|
||||
<h4 id="索引存储" tabindex="-1"><a class="header-anchor" href="#索引存储" aria-hidden="true">#</a> 索引存储</h4>
|
||||
<p>存放数据元素和元素间关系的存储方式,在存储元素信息的同时,还需要建立附加的<code>索引表</code>。</p>
|
||||
<p><strong>索引表的每一项称为索引项,索引项的一般形式是:<关键字,地址></strong></p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>检索快(就好比字典有了目录,查询就很快了)</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>增加了索引表,占用较多的存储空间(典型的空间换时间策略)</li>
|
||||
<li>增加、删除数据时,需要对应修改索引表,花费更多时间。</li>
|
||||
</ul>
|
||||
<h4 id="散列-hash-存储" tabindex="-1"><a class="header-anchor" href="#散列-hash-存储" aria-hidden="true">#</a> 散列(Hash)存储</h4>
|
||||
<p>根据元素的关键字直接通过散列(Hash)函数计算出元素的存储地址。</p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>检索快,添加、删除元素结点操作快(获取元素地址直接,整体时间就少了)</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>非常依赖于<code>散列函数</code></li>
|
||||
<li>会出现<code>散列冲突</code>(主要依赖与散列函数,散列函数不好就很容易出现散列冲突)</li>
|
||||
<li>出现<code>散列冲突</code>时,解决冲突就会增加时间和空间上的开销</li>
|
||||
</ul>
|
||||
<h3 id="数据的运算" tabindex="-1"><a class="header-anchor" href="#数据的运算" aria-hidden="true">#</a> 数据的运算</h3>
|
||||
<p>数据上的运算包括:<code>运算的定义</code> 、<code>运算的实现</code></p>
|
||||
<ul>
|
||||
<li><code>运算的定义</code>:针对逻辑结构,指出运算的功能</li>
|
||||
<li><code>原酸的实现</code>:针对存储结构,指出运算的具体操作步骤</li>
|
||||
</ul>
|
||||
<p>线性表既可以用顺序存储方式实现,也可以用链式存储方式实现。</p>
|
||||
<hr>
|
||||
<h2 id="算法和算法评价" tabindex="-1"><a class="header-anchor" href="#算法和算法评价" aria-hidden="true">#</a> 算法和算法评价</h2>
|
||||
<h3 id="算法" tabindex="-1"><a class="header-anchor" href="#算法" aria-hidden="true">#</a> 算法</h3>
|
||||
<p><code>算法</code> : 对特定问题求解步骤的一种描述,<strong>是指令的有序集合</strong>,每一条指令表示一个或多个操作。</p>
|
||||
<h4 id="重要特性" tabindex="-1"><a class="header-anchor" href="#重要特性" aria-hidden="true">#</a> 重要特性</h4>
|
||||
<ul>
|
||||
<li><code>有穷性</code>:必须总是(对任何合法的输入值)在<strong>执行有穷步后结束</strong>,并且每一步都可<strong>在有穷时间内完成</strong></li>
|
||||
<li><code>确定性</code>:每条指令的含义明确,不会产生二义性(歧义),<strong>对相同的输入只能得出相同的结果</strong></li>
|
||||
<li><code>可行性</code>:算法是可行的。<strong>算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的</strong></li>
|
||||
<li><code>输入</code>:有零个或者多个输入,<strong>输入取决于某个特定的对象的集合。</strong></li>
|
||||
<li><code>输出</code>:有一个或者多个输出,<strong>输出是和输入有着某种特定关系的量(强调输出与输入的关系)</strong></li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p><strong>算法是有穷的,但是程序不一定满足有穷性</strong>,程序只是算法在计算机上的特定的实现, 例如:死循环</p>
|
||||
</blockquote>
|
||||
<h4 id="算法的目标" tabindex="-1"><a class="header-anchor" href="#算法的目标" aria-hidden="true">#</a> 算法的目标</h4>
|
||||
<p>由于设计思路、解决问题方案等方面不同,不同算法之间也是有好坏的,就像人与人之间存在着差异。为设计出更好的算算法,往往需要追求更高的目标,而好的算法需要考虑到的目标就有:</p>
|
||||
<ul>
|
||||
<li>正确性:首先算法肯定是<strong>需要正确的解决求解问题</strong></li>
|
||||
<li>可读性:<strong>算法应该具有良好的可读性</strong>,就像项目代码一样,好的业务代码、逻辑清楚,<strong>便于理解</strong>。</li>
|
||||
<li>健壮性:<strong>在输入非法数据时,算法也能适当地做出反应或进行处理,而不会产生莫名奇妙的输出结果</strong>(在高级语言编程中,类似于强调封装方法的参数校验)</li>
|
||||
<li>效率与低存储量需求:<strong>效率即算法执行的时间</strong>,<strong>存储量需求即算法那执行过程中所有要的最大存储空间</strong>,这些与算法所解决问题的规模有关;</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Tips: 效率可以结合时间复杂度来理解,存储量需求可以结合空间复杂度理解;</p>
|
||||
</blockquote>
|
||||
<h3 id="效率的度量" tabindex="-1"><a class="header-anchor" href="#效率的度量" aria-hidden="true">#</a> 效率的度量</h3>
|
||||
<p>算法效率的度量是通过<code>时间复杂度</code>和<code>空间复杂度</code>来描述的;</p>
|
||||
<h4 id="时间复杂度" tabindex="-1"><a class="header-anchor" href="#时间复杂度" aria-hidden="true">#</a> 时间复杂度</h4>
|
||||
<p>语句的频度:语句在算法中被重复执行的次数</p>
|
||||
<p>算法中所有语句的<code>频度之和</code>记作T(n),即:对应算法问题规模n的函数,时间复杂度主要是来分析T(n)的数量级;</p>
|
||||
<p><strong>算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入的数据的性质(例如:输入元素的初始状态)</strong></p>
|
||||
<p>上面这句话是不是不能理解??? 哈哈哈,我第一次看,也是!!</p>
|
||||
<div class="language-c ext-c line-numbers-mode"><pre v-pre class="language-c"><code>
|
||||
<span class="token keyword">int</span> <span class="token function">test</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">if</span><span class="token punctuation">(</span>n<span class="token operator"><</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||||
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token comment">// 循环叠加 输出</span>
|
||||
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
|
||||
<span class="token punctuation">}</span>
|
||||
|
||||
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>在这个简单的函数里</p>
|
||||
<ul>
|
||||
<li>当n<1的时候,例如:-2,就不需要循环,此时时间复杂度可以理解为T(1)</li>
|
||||
<li>当n>1的时候,例如:5 此时时间复杂度可以理解为T(n)</li>
|
||||
</ul>
|
||||
<p>当然,这里只是简单举例子便于理解:</p>
|
||||
<blockquote>
|
||||
<p><strong>算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入的数据的性质(例如:输入元素的初始状态)</strong></p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><code>最坏时间复杂度</code>:<strong>最坏情况下</strong>,算法的时间复杂度</li>
|
||||
<li><code>平均时间复杂度</code>:<strong>所有可能输入实例在同等概率出现的情况下</strong>,算法的期望运行时间</li>
|
||||
<li><code>最好时间复杂度</code>:<strong>最好的情况下</strong>,算法的时间复杂度</li>
|
||||
</ul>
|
||||
<p>一般情况下,考虑最坏情况的时间复杂度(即:最坏时间复杂度),保证算法的运行时间不会更长(最糟糕我都能预料,难道还有更糟糕?????噗呲)</p>
|
||||
<h4 id="空间复杂度" tabindex="-1"><a class="header-anchor" href="#空间复杂度" aria-hidden="true">#</a> 空间复杂度</h4>
|
||||
<p>算法的空间复杂度可以用函数记作:S(n),<strong>用来定义算法运行过程中需要耗费的存储空间</strong>,是问题规模n的函数;</p>
|
||||
<blockquote>
|
||||
<p>渐进空间复杂度也被称为空间复杂度,记作:S(n)=O(g(n))</p>
|
||||
</blockquote>
|
||||
<p><strong>一个程序除了需要存储空间来存放本身所用的指令、常数、变量和输入数据外,也需要对数据进行操作的工作单元和存储一些实现计算所需要信息的辅助空间。</strong></p>
|
||||
<p>当输入数据所占用的空间只取决于问题本身,和算法无关时,只需要去分析除了输入和程序之外的额外空间</p>
|
||||
<p>算法原地工作:算法所需要辅助空间是常量,记作S(1),例如:</p>
|
||||
<div class="language-c ext-c line-numbers-mode"><pre v-pre class="language-c"><code><span class="token keyword">int</span> <span class="token function">switchValue</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span>b<span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||||
<span class="token comment">// 定义临时变量</span>
|
||||
<span class="token keyword">int</span> temp<span class="token operator">=</span>a<span class="token punctuation">;</span>
|
||||
b<span class="token operator">=</span>temp<span class="token punctuation">;</span>
|
||||
a<span class="token operator">=</span>b<span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>在上面的函数中,只是通过临时变量temp来实现a和b的值交换,没有需要更多变量,因此可以简单理解函数的在<code>原地工作</code>,辅助空间是常量,记作S(1)</p>
|
||||
</template>
|
||||
@@ -1,34 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-37abb588",
|
||||
"path": "/DS/coding/algorithm.html",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "恶补算法",
|
||||
"slug": "恶补算法",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": null,
|
||||
"contributors": []
|
||||
},
|
||||
"filePathRelative": "DS/coding/algorithm.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<template><!--
|
||||
* @Description: 恶补算法
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2022-04-19 08:56:55
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-19 08:56:56
|
||||
-->
|
||||
<h2 id="恶补算法" tabindex="-1"><a class="header-anchor" href="#恶补算法" aria-hidden="true">#</a> 恶补算法</h2>
|
||||
<blockquote>
|
||||
<p>todo</p>
|
||||
</blockquote>
|
||||
</template>
|
||||
@@ -1,83 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-2d0a07e7",
|
||||
"path": "/DS/",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "写在最前面",
|
||||
"slug": "写在最前面",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "阅读须知",
|
||||
"slug": "阅读须知",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "技术支持",
|
||||
"slug": "技术支持",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "适用群体",
|
||||
"slug": "适用群体",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "资料共享",
|
||||
"slug": "资料共享",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "参考资料",
|
||||
"slug": "参考资料",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "联系我",
|
||||
"slug": "联系我",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "公众号",
|
||||
"slug": "公众号",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/Readme.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2022-04-08 23:10:00
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-21 23:26:09
|
||||
-->
|
||||
<h2 id="写在最前面" tabindex="-1"><a class="header-anchor" href="#写在最前面" aria-hidden="true">#</a> 写在最前面</h2>
|
||||
<p>这份《薛定谔的Egg.js》文档,是我考虑很久之后,才决定要整理出来的,在这上面倾注了很多时间</p>
|
||||
<ul>
|
||||
<li>也不知道有没有用</li>
|
||||
<li>也不知道能不能整理完</li>
|
||||
<li>更不知道对你会不会有所帮助</li>
|
||||
</ul>
|
||||
<p>但愿我们都能在此有所收获,放手开始吧!!</p>
|
||||
<p>最后,仅以“<strong>祷以恒切, 盼以喜乐,苦以坚忍,必有所得</strong>”,共勉~</p>
|
||||
<hr>
|
||||
<h2 id="阅读须知" tabindex="-1"><a class="header-anchor" href="#阅读须知" aria-hidden="true">#</a> 阅读须知</h2>
|
||||
<ul>
|
||||
<li>该部分为框架基础,是基于<a href="https://eggjs.org/zh-cn/" target="_blank" rel="noopener noreferrer">Egg.js官网<ExternalLinkIcon/></a>和自己使用体验进行整理汇总,难免会存在重复部分。</li>
|
||||
<li>若在阅读、学习过程中发现与官网描述有所差异,可以立即与我联系进行确认与更改。</li>
|
||||
<li><strong>文档用于个人整理和技术学习,禁止无授权转载、商用。</strong></li>
|
||||
</ul>
|
||||
<h2 id="技术支持" tabindex="-1"><a class="header-anchor" href="#技术支持" aria-hidden="true">#</a> 技术支持</h2>
|
||||
<ul>
|
||||
<li><a href="https://eggjs.org/zh-cn/" target="_blank" rel="noopener noreferrer">Egg.js官网<ExternalLinkIcon/></a></li>
|
||||
<li><a href="https://www.vuepress.cn/guide" target="_blank" rel="noopener noreferrer">VuePress<ExternalLinkIcon/></a></li>
|
||||
<li><a href="https://antdocs.seeyoz.cn/guide/" target="_blank" rel="noopener noreferrer">AntDocs<ExternalLinkIcon/></a></li>
|
||||
</ul>
|
||||
<h2 id="适用群体" tabindex="-1"><a class="header-anchor" href="#适用群体" aria-hidden="true">#</a> 适用群体</h2>
|
||||
<ul>
|
||||
<li>默认已了解过<a href="https://es6.ruanyifeng.com/" target="_blank" rel="noopener noreferrer">ES6<ExternalLinkIcon/></a>语法和部分Node后端框架(<a href="https://www.expressjs.com.cn/" target="_blank" rel="noopener noreferrer">Express<ExternalLinkIcon/></a>、<a href="https://koa.bootcss.com/" target="_blank" rel="noopener noreferrer">Koa<ExternalLinkIcon/></a>)。</li>
|
||||
<li>具有一定JavaScript开发基础,对JavaScript开发有浓烈兴趣。</li>
|
||||
<li><strong>已有Egg.js开发经验,但细节用法不胜了解的,非常适合用来查缺补漏。</strong></li>
|
||||
</ul>
|
||||
<h2 id="资料共享" tabindex="-1"><a class="header-anchor" href="#资料共享" aria-hidden="true">#</a> 资料共享</h2>
|
||||
<blockquote>
|
||||
<p>链接失效可以关注公众号或私信获取"链接"</p>
|
||||
</blockquote>
|
||||
<h2 id="参考资料" tabindex="-1"><a class="header-anchor" href="#参考资料" aria-hidden="true">#</a> 参考资料</h2>
|
||||
<ul>
|
||||
<li>大话数据结构 - 程杰</li>
|
||||
<li>数据结构复习全书 - 王道论坛</li>
|
||||
<li>视频教程 - 王道论坛</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h3 id="联系我" tabindex="-1"><a class="header-anchor" href="#联系我" aria-hidden="true">#</a> 联系我</h3>
|
||||
<ul>
|
||||
<li>有任何问题或建议,欢迎微信“骚扰”,商务合作请备注!</li>
|
||||
</ul>
|
||||
<div align="left">
|
||||
<img src="https://cdn.jsdelivr.net/gh/lir0115/images@main/qr_code/wechat_code.jpg" width="300" height="300" style="border-radius:4px;"/>
|
||||
</div>
|
||||
<h1 id="" tabindex="-1"><a class="header-anchor" href="#" aria-hidden="true">#</a> </h1>
|
||||
<h3 id="公众号" tabindex="-1"><a class="header-anchor" href="#公众号" aria-hidden="true">#</a> 公众号</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<p>相逢不用忙归去,明日黄花蝶也愁....</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>若系列文章对你有所帮助,不如来公众号交个朋友吧.</strong></p>
|
||||
</li>
|
||||
</ul>
|
||||
<template>
|
||||
<div>
|
||||
<a-row>
|
||||
<a-col :xs="20" :sm="16" :md="12" :lg="10" :xl="10"><img src="https://cdn.jsdelivr.net/gh/lir0115/images@main/qr_code/gongzhonghao.jpg"/>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
@@ -1,55 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-c8ed33c4",
|
||||
"path": "/DS/linear_table.html",
|
||||
"title": "线性表",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "线性表"
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "基础概念和基本操作",
|
||||
"slug": "基础概念和基本操作",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "定义",
|
||||
"slug": "定义",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "基本操作",
|
||||
"slug": "基本操作",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:57:27
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-09 01:06:17
|
||||
-->
|
||||
<!-- ## 线性表的基础概念和基本操作 -->
|
||||
<h2 id="基础概念和基本操作" tabindex="-1"><a class="header-anchor" href="#基础概念和基本操作" aria-hidden="true">#</a> 基础概念和基本操作</h2>
|
||||
<blockquote>
|
||||
<p>强调线性表是一种逻辑结构,不是存储结构</p>
|
||||
</blockquote>
|
||||
<h3 id="定义" tabindex="-1"><a class="header-anchor" href="#定义" aria-hidden="true">#</a> 定义</h3>
|
||||
<p>线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。一般表示:</p>
|
||||
<p>L=(a<sub>1</sub>,a<sub>2</sub>,a<sub>3</sub>......a<sub>n</sub>) 其中n可以理解为表长(线性表的长度),n=0时候,即表空</p>
|
||||
<ul>
|
||||
<li><code>表头元素</code>:线性表中唯一的“第一个”数据元素,例如a<sub>1</sub></li>
|
||||
<li><code>表尾元素</code>:线性表中唯一的“最后一个”数据元素,例如a<sub>n</sub></li>
|
||||
</ul>
|
||||
<p>重要逻辑特性:</p>
|
||||
<ul>
|
||||
<li>除表头元素外,线性表中每个元素有且仅有一个<code>直接前驱</code></li>
|
||||
<li>除表尾元素外,线性表中每个元素有且仅有一个<code>直接后继</code></li>
|
||||
</ul>
|
||||
<p>基于此,这种<strong>线性有序的逻辑结构</strong>,使得线性表的特点如下:</p>
|
||||
<ul>
|
||||
<li>元素的<strong>个数有限</strong>(强调有限序列)</li>
|
||||
<li>元素在逻辑上具有<strong>顺序性</strong>,在序列中每个元素都是都有先后次序的</li>
|
||||
<li>元素都数据元素,<strong>每个元素都是单个元素</strong></li>
|
||||
<li>元素的<strong>数据类型都相同</strong>(强调相同数据类型),每个数据元素占用相同大小的存储空间</li>
|
||||
<li>元素具有<strong>抽象性</strong>,仅仅讨论元素之间的逻辑关系,不需要去考虑元素究竟表示的什么内容</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Tips: <strong>线性表是一种逻辑结构</strong>,表示元素之间一对一的相邻关系。<strong>顺序表和链表则指的是存储结构</strong></p>
|
||||
</blockquote>
|
||||
<h3 id="基本操作" tabindex="-1"><a class="header-anchor" href="#基本操作" aria-hidden="true">#</a> 基本操作</h3>
|
||||
<ul>
|
||||
<li><code>InitList(&L)</code>: <strong>初始化表</strong>。构造空的线性表</li>
|
||||
<li><code>Length(L)</code>:<strong>获取表的长度</strong>。返回线性表L的长度,即表中的数据元素个数</li>
|
||||
<li><code>LocateElem(L,e)</code>:<strong>按值查找操作</strong>。在表L中国查找具有给定关键字的元素</li>
|
||||
<li><code>GetElem(L,i)</code>:<strong>按位查找操作</strong>。获取表中第i个位置的元素的值</li>
|
||||
<li><code>ListInsert(&L,i,e)</code>:<strong>插入操作</strong>。在表的第i个位置上插入指定元素e</li>
|
||||
<li><code>ListDelete(&L,i,&e)</code>:<strong>删除操作</strong>。删除表中第i个位置的元素,并用e返回删除元素的值</li>
|
||||
<li><code>PrintList(L)</code>:<strong>输出操作</strong>。按照前后顺序(如:1、2....n)输出线性表的所有元素值</li>
|
||||
<li><code>Empty(L)</code>:<strong>判空操作</strong>。当表L为空,则返回true,否则返回false</li>
|
||||
<li><code>DestoryList(&L)</code>:<strong>销毁操作</strong>。将线性表销毁,释放线性表L所占用的内存空间(类似:释放内存)</li>
|
||||
</ul>
|
||||
<p>线性表是具有相同的数据类型的有限个数据元素组成的,<strong>数据元素是由数据项组成的</strong></p>
|
||||
</template>
|
||||
@@ -1,34 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-62bd4033",
|
||||
"path": "/NoteMap/CN_Map.html",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "计算机网络思维导图",
|
||||
"slug": "计算机网络思维导图",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": null,
|
||||
"contributors": []
|
||||
},
|
||||
"filePathRelative": "NoteMap/CN_Map.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<template><!--
|
||||
* @Description: 计算机网络思维导图
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2022-04-21 23:21:16
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-21 23:21:17
|
||||
-->
|
||||
<h2 id="计算机网络思维导图" tabindex="-1"><a class="header-anchor" href="#计算机网络思维导图" aria-hidden="true">#</a> 计算机网络思维导图</h2>
|
||||
</template>
|
||||
@@ -1,34 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-85ddaee2",
|
||||
"path": "/NoteMap/DS_Map.html",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "数据结构思维导图",
|
||||
"slug": "数据结构思维导图",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": null,
|
||||
"contributors": []
|
||||
},
|
||||
"filePathRelative": "NoteMap/DS_Map.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<template><!--
|
||||
* @Description: 数据结构思维导图
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2022-04-21 23:21:49
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-21 23:21:49
|
||||
-->
|
||||
<h2 id="数据结构思维导图" tabindex="-1"><a class="header-anchor" href="#数据结构思维导图" aria-hidden="true">#</a> 数据结构思维导图</h2>
|
||||
</template>
|
||||
@@ -1,42 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-2d0a3132",
|
||||
"path": "/OS/",
|
||||
"title": "Readme",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "Readme"
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "操作系统",
|
||||
"slug": "操作系统",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "OS/Readme.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-08 10:10:52
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2022-04-21 23:13:11
|
||||
-->
|
||||
<h2 id="操作系统" tabindex="-1"><a class="header-anchor" href="#操作系统" aria-hidden="true">#</a> 操作系统</h2>
|
||||
<p>doing</p>
|
||||
</template>
|
||||
@@ -1,192 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-8daa1a0e",
|
||||
"path": "/",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"home": true,
|
||||
"heroImage": "https://static01.imgkr.com/temp/f0108d7c178b4ce196e43ebec14fbf23.png",
|
||||
"heroText": "计算机应试全家桶",
|
||||
"externalLinkIcon": false,
|
||||
"tagline": "磨刀不误砍柴工、读完硕士再打工,笔记内容持续更新...",
|
||||
"actions": [
|
||||
{
|
||||
"text": "快速开始→",
|
||||
"link": "/guide/",
|
||||
"type": "primary"
|
||||
},
|
||||
{
|
||||
"text": "工作机会",
|
||||
"link": "/gangg",
|
||||
"type": "secondary"
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
{
|
||||
"title": "基础概览",
|
||||
"details": "与官网同步的Egg.js框架基础知识整理,有效地降低日常开发和复习巩固的查询、学习时间。"
|
||||
},
|
||||
{
|
||||
"title": "整理强化",
|
||||
"details": "官方插件的基础上,抽象、封装出适合自己功能的plus插件,能够快速集成、使用在新的项目中。"
|
||||
},
|
||||
{
|
||||
"title": "反复反复",
|
||||
"details": "通过以项目Demo示例的方式,对框架常用的功能进行Code编写和整理,提供有效且易用的代码封装。"
|
||||
}
|
||||
],
|
||||
"footerColumn": 3,
|
||||
"footerWrap": [
|
||||
{
|
||||
"headline": "相关资料",
|
||||
"items": [
|
||||
{
|
||||
"title": "王道论坛",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "全平台都可以关注"
|
||||
},
|
||||
{
|
||||
"title": "研招网",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "考研最新消息"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"headline": "开源共享",
|
||||
"items": [
|
||||
{
|
||||
"title": "408Family",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "egg-axios-plus"
|
||||
},
|
||||
{
|
||||
"title": "408CSFamily",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "egg-grpc-plus"
|
||||
},
|
||||
{
|
||||
"title": "mysql",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "egg-mysql-plus"
|
||||
},
|
||||
{
|
||||
"title": "sequelize",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "egg-sequleize-plus"
|
||||
},
|
||||
{
|
||||
"title": "MQ",
|
||||
"link": "https://github.com/zpfz/vuepress-theme-antdocs",
|
||||
"details": "egg-rabbit-plus"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"headline": "线上平台",
|
||||
"items": [
|
||||
{
|
||||
"title": "Oauth2",
|
||||
"link": "http://oauth2.142vip.cn",
|
||||
"details": "授权管理"
|
||||
},
|
||||
{
|
||||
"title": "Yapi",
|
||||
"link": "https://yapi.142vip.cn",
|
||||
"details": "高效、易用的api平台"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"headline": "联系方式",
|
||||
"items": [
|
||||
{
|
||||
"title": "掘金",
|
||||
"link": "https://juejin.cn/user/448256476724807",
|
||||
"details": "不定期更新"
|
||||
},
|
||||
{
|
||||
"title": "CSDN",
|
||||
"link": "https://blog.csdn.net/Mmdapls",
|
||||
"details": "不定期更新"
|
||||
},
|
||||
{
|
||||
"title": "Github",
|
||||
"link": "https://github.com/mmdapl",
|
||||
"details": "日常更新"
|
||||
},
|
||||
{
|
||||
"title": "哔哩哔哩",
|
||||
"link": "https://space.bilibili.com/350937042",
|
||||
"details": "不定期更新"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"footer": "Copyrights © 2019-2022 妍荣姑娘网络工作室 | <a href=\"https://github.com/mmdapl\" target=\"_blank\">Rong姐姐好可爱</a>",
|
||||
"footerHtml": true
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "本地浏览【推荐】",
|
||||
"slug": "本地浏览【推荐】",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "提交记录",
|
||||
"slug": "提交记录",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "赞赏列表",
|
||||
"slug": "赞赏列表",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "赞助商",
|
||||
"slug": "赞助商",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "联系作者",
|
||||
"slug": "联系作者",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "外链",
|
||||
"slug": "外链",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "README.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
<template><hr>
|
||||
<h3 id="本地浏览【推荐】" tabindex="-1"><a class="header-anchor" href="#本地浏览【推荐】" aria-hidden="true">#</a> 本地浏览【推荐】</h3>
|
||||
<p>由于平台、网络等原因,在线浏览容易出现加载面、加载不出来等常见问题,因此非常建议在本地进行浏览、学习;<strong>下面指令默认你已经安装<a href="https://git-scm.com/download" target="_blank" rel="noopener noreferrer">Git</a>、<a href="https://www.npmjs.com/" target="_blank" rel="noopener noreferrer">NPM</a>、<a href="https://www.pnpm.cn/" target="_blank" rel="noopener noreferrer">PNPM</a>、<a href="https://yarn.bootcss.com/" target="_blank" rel="noopener noreferrer">Yarn</a>、<a href="http://nodejs.cn" target="_blank" rel="noopener noreferrer">Node</a>等环境,并对此有一定了解!</strong></p>
|
||||
<CodeGroup>
|
||||
<CodeGroupItem title="PNPM(推荐)" >
|
||||
<div class="language-bash ext-sh"><pre v-pre class="language-bash"><code><span class="token comment">## 进入cmd命令行,直接克隆仓库</span>
|
||||
<span class="token function">git</span> clone https://github.com/mmdapl/408CSFamily.git
|
||||
|
||||
<span class="token comment">## 进入408CSFamily文件夹中</span>
|
||||
<span class="token builtin class-name">cd</span> 408CSFamily/
|
||||
|
||||
<span class="token comment">## tips: 如果本地已经clone过仓库,建议执行pull指令,获取最新</span>
|
||||
<span class="token function">git</span> pull
|
||||
|
||||
<span class="token comment">## 下载依赖包</span>
|
||||
<span class="token function">pnpm</span> <span class="token function">install</span>
|
||||
|
||||
<span class="token comment">## 执行dev指令,本地启动项目,打开http://localhost:4200即可访问文档</span>
|
||||
<span class="token function">pnpm</span> dev
|
||||
|
||||
</code></pre></div></CodeGroupItem>
|
||||
<CodeGroupItem title=" NPM ">
|
||||
<div class="language-bash ext-sh"><pre v-pre class="language-bash"><code><span class="token comment">## 进入cmd命令行,直接克隆仓库</span>
|
||||
<span class="token function">git</span> clone https://github.com/mmdapl/408CSFamily.git
|
||||
|
||||
<span class="token comment">## 进入408CSFamily文件夹中</span>
|
||||
<span class="token builtin class-name">cd</span> 408CSFamily/
|
||||
|
||||
<span class="token comment">## tips: 如果本地已经clone过仓库,建议执行pull指令,获取最新</span>
|
||||
<span class="token function">git</span> pull
|
||||
|
||||
<span class="token comment">## 下载依赖包</span>
|
||||
<span class="token function">npm</span> <span class="token function">install</span>
|
||||
|
||||
<span class="token comment">## 执行dev指令,本地启动项目,打开http://localhost:4200即可访问文档</span>
|
||||
<span class="token function">npm</span> run dev
|
||||
|
||||
</code></pre></div></CodeGroupItem>
|
||||
<CodeGroupItem title=" YARN ">
|
||||
<div class="language-bash ext-sh"><pre v-pre class="language-bash"><code><span class="token comment">## 进入cmd命令行,直接克隆仓库</span>
|
||||
<span class="token function">git</span> clone https://github.com/mmdapl/408CSFamily.git
|
||||
|
||||
<span class="token comment">## 进入408CSFamily文件夹中</span>
|
||||
<span class="token builtin class-name">cd</span> 408CSFamily/
|
||||
|
||||
<span class="token comment">## tips: 如果本地已经clone过仓库,建议执行pull指令,获取最新</span>
|
||||
<span class="token function">git</span> pull
|
||||
|
||||
<span class="token comment">## 下载依赖包</span>
|
||||
<span class="token function">yarn</span> <span class="token function">install</span>
|
||||
|
||||
<span class="token comment">## 执行dev指令,本地启动项目,打开http://localhost:4200即可访问文档</span>
|
||||
<span class="token function">yarn</span> run dev
|
||||
|
||||
</code></pre></div></CodeGroupItem>
|
||||
</CodeGroup>
|
||||
<p>查看项目启动日志并访问:<a href="http://localhost:4200" target="_blank" rel="noopener noreferrer">http://127.0.0.1:4200</a>,开启学习之旅吧~</p>
|
||||
<h3 id="提交记录" tabindex="-1"><a class="header-anchor" href="#提交记录" aria-hidden="true">#</a> 提交记录</h3>
|
||||
<hr>
|
||||
<h3 id="赞赏列表" tabindex="-1"><a class="header-anchor" href="#赞赏列表" aria-hidden="true">#</a> 赞赏列表</h3>
|
||||
<p>以下排名不分先后! <a href="">详细统计</a></p>
|
||||
<div>
|
||||
<a href="https://github.com/ChiefPing" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/34122068?s=460&v=4" width="50px" style="brder-radius:5px;"/>
|
||||
</a>
|
||||
<a name="gzh"></a>
|
||||
<a href="https://github.com/xiaoliuxin" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/60652527?s=460&v=4" style="border-radius:5px;" width="50px"/>
|
||||
</a>
|
||||
</div>
|
||||
<h3 id="赞助商" tabindex="-1"><a class="header-anchor" href="#赞助商" aria-hidden="true">#</a> 赞助商</h3>
|
||||
<p>以下排名不分先后! 哈哈哈,还木有收到赞助,先留坑</p>
|
||||
<hr>
|
||||
<h3 id="联系作者" tabindex="-1"><a class="header-anchor" href="#联系作者" aria-hidden="true">#</a> 联系作者</h3>
|
||||
<div class="open-info-div">
|
||||
<!-- <a href="#gzh" target="self_blank"><img src="https://img.shields.io/badge/WeChat-公众号-5wd.svg"></a>
|
||||
<a href="#wechat" target="_blank"><img src="https://img.shields.io/badge/WeChat-微信-yellow.svg"></a> -->
|
||||
<a href="https://space.bilibili.com/350937042" target="_blank"><img src="https://img.shields.io/badge/Bilibili-B站-green.svg"></a>
|
||||
<a href="https://142vip.cn" target="_blank"><img src="https://img.shields.io/badge/142vip-网站-orange.svg"></a>
|
||||
<a href="https://blog.142vip.cn" target="_blank"><img src="https://img.shields.io/badge/blog-博客-blue.svg"></a>
|
||||
<a href="https://github.com/mmdapl" target="_blank"><img src="https://img.shields.io/badge/Github-Github-9ac.svg"></a>
|
||||
<a href="https://gitee.com/mmdapl" target="_blank"><img src="https://img.shields.io/badge/Gitee-码云-4ed.svg"></a>
|
||||
<a href="https://blog.csdn.net/Mmdapl" target="_blank"><img src="https://img.shields.io/badge/csdn-CSDN-8ea.svg"></a>
|
||||
<a href="https://juejin.im/user/448256476724807" target="_blank"><img src="https://img.shields.io/badge/JueJin-掘金-75c.svg"></a>
|
||||
</div>
|
||||
<p>若系列文章对你有所帮助,欢迎订阅公众号,获取更多内容。也可微信”骚扰“,商务合作请备注来意</p>
|
||||
<!-- <div align="left">
|
||||
<img src="https://cdn.jsdelivr.net/gh/lir0115/images@main/qr_code/wechat_code.jpg" width="300" height="300" style="border-radius:5px;"/>
|
||||
</div> -->
|
||||
<p><a name="gzh"></a></p>
|
||||
<p>
|
||||
<img src="https://cdn.jsdelivr.net/gh/lir0115/images@main/qr_code/gongzhonghao.jpg" style="border-radius:10px;">
|
||||
</p>
|
||||
<p>交流/加群/互看朋友圈
|
||||
当然:<strong>聊天 /提问 /建议 /提需求</strong> 可以在本公众号直接<strong>私信</strong>,后台可以看到,有时间即会回复,偶尔的延迟和疏漏还请小伙伴们谅解,蟹蟹。</p>
|
||||
<h3 id="外链" tabindex="-1"><a class="header-anchor" href="#外链" aria-hidden="true">#</a> 外链</h3>
|
||||
</template>
|
||||
@@ -1,43 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-5b214e9e",
|
||||
"path": "/pages/01c16a/",
|
||||
"title": "Readme",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "Readme",
|
||||
"date": "2021-03-08T10:10:27.000Z",
|
||||
"permalink": "/pages/01c16a/",
|
||||
"categories": [
|
||||
"ComputerNetwork"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [],
|
||||
"git": {
|
||||
"updatedTime": 1649437776000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "CN/Readme.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-08 10:10:27
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-08 10:10:28
|
||||
-->
|
||||
<p>doing</p>
|
||||
</template>
|
||||
@@ -1,58 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-2203c86c",
|
||||
"path": "/pages/0a7dde/",
|
||||
"title": "chain_representation",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "chain_representation",
|
||||
"date": "2021-03-07T21:58:40.000Z",
|
||||
"permalink": "/pages/0a7dde/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "线性表的链式表示",
|
||||
"slug": "线性表的链式表示",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "单链表",
|
||||
"slug": "单链表",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/3.chain_representation.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,336 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:58:40
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:58:40
|
||||
-->
|
||||
<h2 id="线性表的链式表示" tabindex="-1"><a class="header-anchor" href="#线性表的链式表示" aria-hidden="true">#</a> 线性表的链式表示</h2>
|
||||
<p>顺序表的插入、删除操作需要移动大量元素,影响了运行效率(虽然时间复杂度为O(1)的情况也存在)。</p>
|
||||
<p><strong>链式存储线性表时,不需要使用连续的存储单元,不要求逻辑上相邻的两个元素在物理位置上也相邻</strong></p>
|
||||
<p>理解“链”的含义,链条--->捆绑、指向------>指针</p>
|
||||
<p><strong>链式存储线性表时,对线性表的插入、删除元素是不需要移动元素的,只是需要修改指针</strong></p>
|
||||
<ul>
|
||||
<li>单链表</li>
|
||||
<li>双链表</li>
|
||||
<li>循环链表</li>
|
||||
<li>静态链表</li>
|
||||
</ul>
|
||||
<h3 id="单链表" tabindex="-1"><a class="header-anchor" href="#单链表" aria-hidden="true">#</a> 单链表</h3>
|
||||
<p>线性表的链式存储称作<code>单链表</code>,通过<strong>一组任意的存储单元</strong>来存储线性表中的数据元素。</p>
|
||||
<p>每个链表结点(node)除了存放元素自身的信息外,还需要存放一个指向其后继结点的指针。目的是:<strong>通过指针建立起链表元素之间的线性关系</strong></p>
|
||||
<p>单链表中结点类型的描述:</p>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 单链表结点类型定义
|
||||
typeof struct LNode{
|
||||
ElemType data; // 数据域
|
||||
struct LNode *next; // 指针域
|
||||
}LNode , *LinkList;
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>单链表可以解决顺序表需要大量连续存储空间的缺点,但是单链表在数据域的基础上附加了指针域,存在浪费存储空间的缺点;</p>
|
||||
<p>单链表的元素是<strong>离散地分布</strong>在存储空间中的,因此<strong>单链表是非随机存取的存储结构</strong>,不能直接找到表中特定的结点,需要从头开始遍历、一次查找;</p>
|
||||
<p>通常,<strong>头指针用来标识一个单链表</strong>。头指针指向<code>NULL</code>时,标识单链表为空。</p>
|
||||
<h4 id="头结点" tabindex="-1"><a class="header-anchor" href="#头结点" aria-hidden="true">#</a> 头结点</h4>
|
||||
<p>为了操作上的方便,在单链表第一个结点之前附加一个结点,叫做<strong>头结点</strong>。</p>
|
||||
<ul>
|
||||
<li>头结点的数据域可以不存任何信息、也可以记录表长等基础信息</li>
|
||||
<li>头结点的指针域指向线性表的第一个元素结点;</li>
|
||||
</ul>
|
||||
<p><strong>不论单链表是否带头结点(可选),头指针始终指向链表的第一个结点。</strong></p>
|
||||
<p>头结点是带头结点的链表中的第一个结点【重要】</p>
|
||||
<ul>
|
||||
<li>头结点的数据域可以不存任何信息、也可以记录表长等基础信息</li>
|
||||
<li>头结点的指针域指向线性表的第一个元素结点;</li>
|
||||
</ul>
|
||||
<p>头结点的优点:</p>
|
||||
<ul>
|
||||
<li>因为开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作和在表的其他位置上的操作一致,不需要进行特殊处理;</li>
|
||||
<li>无论链表是否为空,头指针始终是指向头结点的头结点的非空指针【空表中,往往就只有头结点,此时头结点的指针域为空,可以有效避免头指针空指针异常问题】-----> <strong>头结点的引入,很好的统一了空表和非空表的操作;</strong></li>
|
||||
</ul>
|
||||
<h4 id="头插法" tabindex="-1"><a class="header-anchor" href="#头插法" aria-hidden="true">#</a> 头插法</h4>
|
||||
<blockquote>
|
||||
<p>从空表开始,生成新的结点,将读取的数据存放在新结点的数据域中,将新结点插入到当前链表的表头【头结点之后】</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>/*
|
||||
* @Description: 单链表头插法创建
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2020-03-04 23:38:04
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @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->data=x;
|
||||
// 修改指针,新结点插入表中【注意:L->next为头结点的指针域】
|
||||
s->next=L->next;
|
||||
L->next=s;
|
||||
scanf("%d",&x);
|
||||
}
|
||||
|
||||
// 返回单链表
|
||||
return L;
|
||||
}
|
||||
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br></div></div><p>特点:</p>
|
||||
<ul>
|
||||
<li>读入数据的顺序与生成的链表中的元素顺序是相反的【结合队列先进先出思考】</li>
|
||||
<li>每个结点插入的时间复杂度为O(1),单链表长度为n时,头插法的时间复杂度为O(n)【结合算法中的while循环,可以很明确看出时间复杂度】</li>
|
||||
</ul>
|
||||
<h4 id="尾插法" tabindex="-1"><a class="header-anchor" href="#尾插法" aria-hidden="true">#</a> 尾插法</h4>
|
||||
<p>头插法建立的单链表,链表中结点的次序和输入数据的顺序不一致【相反】,尾插法则很好的避免了这个问题;</p>
|
||||
<blockquote>
|
||||
<p>新结点插入到当前链表的表尾上,必须增加一个尾指针r,始终指向当前链表的尾结点;</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
/*
|
||||
* @Description: 单链表尾插法创建
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2020-03-04 23:38:04
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @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;
|
||||
|
||||
}
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br></div></div><p>特点:</p>
|
||||
<ul>
|
||||
<li>读入数据的顺序与生成的链表中的元素顺序完全一致</li>
|
||||
<li>每个结点插入的时间复杂度为O(1),单链表长度为n时,尾巴插法的时间复杂度为O(n)【结合算法中的while循环,可以很明确看出时间复杂度】</li>
|
||||
<li>相比头插法附设了一个指向表尾结点的指针,但时间复杂度与头插法相同</li>
|
||||
</ul>
|
||||
<h4 id="按序号查找" tabindex="-1"><a class="header-anchor" href="#按序号查找" aria-hidden="true">#</a> 按序号查找</h4>
|
||||
<blockquote>
|
||||
<p>在单链表中从第一个结点出发,顺指针next域逐个往下搜索、遍历,直到找出第i个结点为止,否则返回最后一个结点指针域NULL</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
/*
|
||||
* @Description: 单链表按序号查找
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2020-03-04 23:38:04
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2020-03-04 23:39:16
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
// p存在且计数没有走到初始i的位置
|
||||
while(p&&j<i){
|
||||
|
||||
// 指针后移
|
||||
p=p->next;
|
||||
|
||||
// 计数标记+1
|
||||
j++;
|
||||
}
|
||||
|
||||
// 注意: 当p不存在时, 跳出循环,p=NULL; 当p存在但是j大于等于i,跳出循环,返回查找的结果,返回p
|
||||
// 从跳出循环上来分析,p要么存在即:找到的结点元素,要么为空即NULL
|
||||
|
||||
// 跳出循环,返回第i个结点的指针
|
||||
return p;
|
||||
|
||||
}
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br></div></div><p>需要遍历(扫描)单链表,时间复杂度为:O(n)</p>
|
||||
<h4 id="按值查找" tabindex="-1"><a class="header-anchor" href="#按值查找" aria-hidden="true">#</a> 按值查找</h4>
|
||||
<blockquote>
|
||||
<p>从单链表的第一个结点开始,从前往后依次比较表中个结点数据域的值,等于给定值e,则返回该结点的指针;若整个单链表【遍历完】中没有数据域值为e的结点,则返回NULL;</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
/*
|
||||
* @Description: 单链表按值查找
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2020-03-04 23:38:04
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2020-03-04 23:39:16
|
||||
*/
|
||||
LNode *LocateElem(LinkList L,ElemType e){
|
||||
|
||||
// 指针【哨兵】
|
||||
LNode *p=L->next;
|
||||
// 从第1个结点开始查找数据域(data)为e的结点
|
||||
while(p!=NULL&&p->data!=e){
|
||||
// 无法匹配,指针后移
|
||||
p=p->next;
|
||||
}
|
||||
|
||||
// 注意:p为NULL的时候,说明单链表已经遍历的尾结点了,跳出循环,没有找到目标结点;
|
||||
|
||||
// 查找到第1个匹配的结点,跳出循环,返回结点指针
|
||||
return p;
|
||||
//
|
||||
}
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br></div></div><p>链表遍历无法匹配,会返回NULL,因为在尾结点无法匹配的时候,直接返回尾结点指针域</p>
|
||||
<p>需要遍历(扫描)单链表,时间复杂度为:O(n)</p>
|
||||
<h4 id="结点插入" tabindex="-1"><a class="header-anchor" href="#结点插入" aria-hidden="true">#</a> 结点插入</h4>
|
||||
<blockquote>
|
||||
<p>单链表中,将值为x的新结点插入到单链表的第i个位置上</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>第一步: 检查插入位置的合法性;</li>
|
||||
<li>第二步: 找到待插入位置的前驱结点,即第(i-1)个结点;</li>
|
||||
<li>第三部: 在前驱结点后插入新结点;</li>
|
||||
</ul>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code> // 循环遍历,时间复杂度O(n)
|
||||
p=GetElem(L,i-1);
|
||||
|
||||
// 移动指针,时间复杂度O(1)
|
||||
s->next=p->next;
|
||||
p->next=s;
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>结合上面的代码可以看出,将元素x插入到单链表L的第i个元素上,必须先找到单链表L的i个结点的前驱结点,即(i-1)的位置,需要采用<code>GetElem()</code>函数,按照序号查找;</p>
|
||||
<p>如果返回的前驱结点不为空,则说明插入的位置i合法,否则位置非法,插入失败;</p>
|
||||
<p>找到前驱结点p后,最重要的是移动指针,将新的结点s的指针域指向结点p的指针域,也就是s的指针域指向元素p的后继结点,第i个结点元素</p>
|
||||
<p>原来的(i-1)位置上的元素,也就是前驱结点p的指针域则必须指向新的结点元素;</p>
|
||||
<p><strong>上面的过程不能更换,避免后继指针不存在的问题</strong></p>
|
||||
<p>最后的最后,一定要注意将s的数据域赋值x</p>
|
||||
<p>插入结点的时间复杂度集中在查找第(i-1)个元素,时间复杂度为O(n);如果在给定结点的后面插入新结点,只需要执行<code>p->next=s</code>操作,时间复杂度为O(1)</p>
|
||||
<h5 id="前插操作" tabindex="-1"><a class="header-anchor" href="#前插操作" aria-hidden="true">#</a> 前插操作</h5>
|
||||
<blockquote>
|
||||
<p>在某结点的前面插入一个新的结点</p>
|
||||
</blockquote>
|
||||
<p><strong>对结点的前插操作都可以转化为后插操作,前提:需要从单链表的头结点开始顺序查找到其前驱结点;时间复杂度为O(n)。</strong></p>
|
||||
<h5 id="后插操作" tabindex="-1"><a class="header-anchor" href="#后插操作" aria-hidden="true">#</a> 后插操作</h5>
|
||||
<blockquote>
|
||||
<p>在某结点的后面插入一个新的结点,单链表插入算法中,通常采用后插操作的</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 结点s插入到结点p的前面,修改指针域,顺序不能改变
|
||||
s->next=p->next;
|
||||
p->next=s;
|
||||
|
||||
|
||||
// 经典的借助变量,进行值交换
|
||||
temp=p->data;
|
||||
p->data=s->data;
|
||||
s->data=temp;
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>上述借助临时变量<code>temp</code>来将结点s和结点p的数据域进行交换,需要开辟O(1)的空间复杂度,但是时间复杂度却从O(n)改变为O(1),典型的空间换时间策略</p>
|
||||
<h4 id="删除结点" tabindex="-1"><a class="header-anchor" href="#删除结点" aria-hidden="true">#</a> 删除结点</h4>
|
||||
<blockquote>
|
||||
<p>将单链表L的第i个结点元素删除;</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>第一步: 先检查删除位置的合法性;</li>
|
||||
<li>第二步: 查找表中的第(i-1)个结点,即被删结点的前驱结点;</li>
|
||||
<li>第三步: 移动指针,删除结点元素;</li>
|
||||
</ul>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 获取删除位置结点元素的前驱结点
|
||||
p=GetElem(L,i-1);
|
||||
|
||||
// 删除位置结点元素指针
|
||||
q=p->next;
|
||||
|
||||
// 修改指针,将删除位置结点元素前驱结点的指针域指向其后继结点
|
||||
p->next=q->next;
|
||||
|
||||
// 释放结点元素的内存控件
|
||||
free(q)
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><p>和插入算法一样,时间都消耗在查询前驱结点上,时间复杂度为:O(n)</p>
|
||||
<blockquote>
|
||||
<p>删除单链表L中给点结点元素*p,通常是按值查找获取到p结点的前驱元素,再执行删除操作,这样很明显会导致时间复杂度为:O(n),主要都消耗在<code>按值查找</code>上</p>
|
||||
</blockquote>
|
||||
<p>这里可以利用p结点的后继结点将p结点删除</p>
|
||||
<ul>
|
||||
<li>第一步:申请结点q,使其只想p结点的后继结点;</li>
|
||||
<li>第二步:将p结点的数据域值换成其后继结点的数据域;【注意,交换没什么意义,最终p的后继结点会删除、释放】</li>
|
||||
<li>第三步:p的指针域指向q的指针域,q结点从链中“断开”</li>
|
||||
<li>第四步:释放q的内存空间</li>
|
||||
</ul>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code> // 存放p的后继结点指针
|
||||
q=p->next;
|
||||
|
||||
// 结点p的后继结点元素赋值给结点p,避免后继结点的数据域丢失
|
||||
p->data=p->next->data;
|
||||
p->next=q->next;
|
||||
|
||||
// 此时q指向更换数据域后的p,即原来p的后继结点
|
||||
free(q)
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p>相比按值查找前驱结点来删除给定的结点p,利用后继结点来删除的时间复杂度更小,为:O(1)</p>
|
||||
<h4 id="计算表长" tabindex="-1"><a class="header-anchor" href="#计算表长" aria-hidden="true">#</a> 计算表长</h4>
|
||||
<blockquote>
|
||||
<p>计算单链表中数据结点(不含头结点)的个数</p>
|
||||
</blockquote>
|
||||
<p>算法思路:从第一个结点开始顺序依次访问表中的每一个结点,为此需要设置一个<code>计数器变量</code>,每访问一个结点,计算器加1,直到访问到空结点为止。</p>
|
||||
<p>算法时间复杂度:O(n)</p>
|
||||
<p><strong>单链表的长度是不包括头结点的,不带头结点和带头结点的单链表在求表长操作上会略有不同。</strong></p>
|
||||
<p>不带头结点的单链表,当表为空时候,需要单独处理;</p>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>// 不带头结点的单链表L为空,判定条件是L=NULL。
|
||||
if(L===NULL){
|
||||
// 链表为空,表长为0
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 带头结点的单链表L为空,判空条件:L->next=NULL;
|
||||
|
||||
if(L->next===NULL){
|
||||
// 链表为空,不包含头结点,表长为0
|
||||
return 0;
|
||||
}
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div></template>
|
||||
@@ -1,44 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-0595fa04",
|
||||
"path": "/pages/10b7a4/",
|
||||
"title": "test",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "test",
|
||||
"date": "2021-03-07T23:06:30.000Z",
|
||||
"permalink": "/pages/10b7a4/",
|
||||
"categories": [
|
||||
"category",
|
||||
"test"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "category/test/1.test.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 23:06:30
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 23:06:31
|
||||
-->
|
||||
<p>werwre</p>
|
||||
</template>
|
||||
@@ -1,94 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-0e2293aa",
|
||||
"path": "/pages/15aa63/",
|
||||
"title": "关于作者",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "关于作者",
|
||||
"sidebarDepth": 0,
|
||||
"date": "2021-01-19T08:04:19.000Z",
|
||||
"permalink": "/pages/15aa63/",
|
||||
"categories": [
|
||||
"category"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "我在做哪些事情?",
|
||||
"slug": "我在做哪些事情",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "代码开源",
|
||||
"slug": "代码开源",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "知识仓库",
|
||||
"slug": "知识仓库",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "npm插件",
|
||||
"slug": "npm插件",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "项目",
|
||||
"slug": "项目",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "平台账号",
|
||||
"slug": "平台账号",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "联系我",
|
||||
"slug": "联系我",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "公众号",
|
||||
"slug": "公众号",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "category/about_author.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,161 +0,0 @@
|
||||
<template><!--
|
||||
* @Description: 关于作者
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-01-19 08:04:19
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-02-14 22:17:49
|
||||
-->
|
||||
<h2 id="我在做哪些事情" tabindex="-1"><a class="header-anchor" href="#我在做哪些事情" aria-hidden="true">#</a> 我在做哪些事情?</h2>
|
||||
<h3 id="代码开源" tabindex="-1"><a class="header-anchor" href="#代码开源" aria-hidden="true">#</a> 代码开源</h3>
|
||||
<!-- - **「bilibili-reptile」** https://github.com/mmdapl/bilibili-reptile
|
||||
- **「project-display」** https://github.com/mmdapl/project-display -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center">仓库名称</th>
|
||||
<th style="text-align:center">链接地址</th>
|
||||
<th style="text-align:center">当前状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>bilibili-reptile</strong></td>
|
||||
<td style="text-align:center"><a href="hhttps://github.com/mmdapl/bilibili-reptile">https://github.com/mmdapl/bilibili-reptile</a></td>
|
||||
<td style="text-align:center">done</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>project-display</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl/project-display" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl/project-display<ExternalLinkIcon/></a></td>
|
||||
<td style="text-align:center">done</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="知识仓库" tabindex="-1"><a class="header-anchor" href="#知识仓库" aria-hidden="true">#</a> 知识仓库</h3>
|
||||
<p>利用业余时间,结合工作经验,以JavaScript和CS专业课为主题,持续维护的知识文档型仓库,其中</p>
|
||||
<ul>
|
||||
<li><code>408CSFamily</code> 主攻计算机408基础知识,以考研基础作为切入点</li>
|
||||
<li><code>JavaScriptCollection</code> 偏向工作实战,以JavaScript技术栈及周边技术作为切入点</li>
|
||||
</ul>
|
||||
<!-- - **「JavaScriptCollection」** https://github.com/mmdapl/JavaScriptCollection
|
||||
|
||||
- **「408CSFamily」** https://github.com/mmdapl/408CSFamily -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center">仓库名称</th>
|
||||
<th style="text-align:center">链接地址</th>
|
||||
<th style="text-align:center">当前状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>408CSFamily</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl/408CSFamily" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl/408CSFamily<ExternalLinkIcon/></a></td>
|
||||
<td style="text-align:center">日常维护</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>JavaScriptCollection</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl/JavaScriptCollection" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl/JavaScriptCollection<ExternalLinkIcon/></a></td>
|
||||
<td style="text-align:center">日常维护</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="npm插件" tabindex="-1"><a class="header-anchor" href="#npm插件" aria-hidden="true">#</a> npm插件</h3>
|
||||
<!-- - **「egg-sequelize-plus」** https://github.com/mmdapl/egg-sequelize-plus
|
||||
- **「egg-axios-plus」** https://github.com/mmdapl/egg-axios-plus
|
||||
- **「grpc相关」** doing.. -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center">插件名称</th>
|
||||
<th style="text-align:center">链接地址</th>
|
||||
<th style="text-align:center">当前状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>egg-axios-plus</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl/egg-axios-plus" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl/egg-axios-plus<ExternalLinkIcon/></a></td>
|
||||
<td style="text-align:center">done</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>egg-sequelize-plus</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl/egg-sequelize-plus" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl/egg-sequelize-plus<ExternalLinkIcon/></a></td>
|
||||
<td style="text-align:center">done</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>grpc相关</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl<ExternalLinkIcon/></a></td>
|
||||
<td style="text-align:center">doing</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="项目" tabindex="-1"><a class="header-anchor" href="#项目" aria-hidden="true">#</a> 项目</h3>
|
||||
<blockquote>
|
||||
<p>正在整理汇总</p>
|
||||
</blockquote>
|
||||
<h4 id="工作项目" tabindex="-1"><a class="header-anchor" href="#工作项目" aria-hidden="true">#</a> 工作项目</h4>
|
||||
<blockquote>
|
||||
<p>采用分布式微服务架构的邮箱类项目,涉及服务网关、消息队列、Apollo配置中心、Consul服务注册发现、redis集群及优化、mysql集群及优化、grpc远程调用、Oauth2授权认证等功能的新框架重构项目,待整理</p>
|
||||
</blockquote>
|
||||
<h4 id="日常项目" tabindex="-1"><a class="header-anchor" href="#日常项目" aria-hidden="true">#</a> 日常项目</h4>
|
||||
<blockquote>
|
||||
<p>oauth2授权平台....</p>
|
||||
</blockquote>
|
||||
<h2 id="平台账号" tabindex="-1"><a class="header-anchor" href="#平台账号" aria-hidden="true">#</a> 平台账号</h2>
|
||||
<p>「目前活跃于Bilibili、Github上,新注册了掘金、微信公众号,均可直接搜:<strong>Rong姐姐好可爱</strong>,访问主页;所有内容以微信公众号和Github为准,选择部分公众号内容发表博客」</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align:center">平台名称</th>
|
||||
<th style="text-align:center">链接地址</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>Bilibili</strong></td>
|
||||
<td style="text-align:center"><a href="https://space.bilibili.com/350937042" target="_blank" rel="noopener noreferrer">https://space.bilibili.com/350937042<ExternalLinkIcon/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>CSDN</strong></td>
|
||||
<td style="text-align:center"><a href="https://blog.csdn.net/Mmdapl" target="_blank" rel="noopener noreferrer">https://blog.csdn.net/Mmdapl<ExternalLinkIcon/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>Github</strong></td>
|
||||
<td style="text-align:center"><a href="https://github.com/mmdapl" target="_blank" rel="noopener noreferrer">https://github.com/mmdapl<ExternalLinkIcon/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align:center"><strong>掘金</strong></td>
|
||||
<td style="text-align:center"><a href="https://juejin.im/user/448256476724807" target="_blank" rel="noopener noreferrer">https://juejin.im/user/448256476724807<ExternalLinkIcon/></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- - **Bilibili** [https://space.bilibili.com/350937042](https://space.bilibili.com/350937042)
|
||||
- **CSDN** [https://blog.csdn.net/Mmdapl](https://blog.csdn.net/Mmdapl)
|
||||
- **Github** [https://github.com/mmdapl](https://github.com/mmdapl)
|
||||
- **掘金** [https://juejin.im/user/448256476724807](https://juejin.im/user/448256476724807)
|
||||
- **个人博客** [http://blog.142vip.cn/](http://blog.142vip.cn/) -->
|
||||
<h2 id="联系我" tabindex="-1"><a class="header-anchor" href="#联系我" aria-hidden="true">#</a> 联系我</h2>
|
||||
<p>对仓库有任何问题或建议,欢迎公众号留言“骚扰”,商务合作请备注!</p>
|
||||
<div align="left">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/wechat.jpg" width="300" height="300" style="border-radius:5px;"/>
|
||||
</div>
|
||||
<h2 id="公众号" tabindex="-1"><a class="header-anchor" href="#公众号" aria-hidden="true">#</a> 公众号</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<p>相逢不用忙归去,明日黄花蝶也愁....</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>若系列文章对你有所帮助,不如来公众号交个朋友吧.</strong></p>
|
||||
</li>
|
||||
</ul>
|
||||
<template>
|
||||
<div>
|
||||
<a-row>
|
||||
<a-col :xs="20" :sm="16" :md="12" :lg="10" :xl="10"><img src="/assets/image_code/official_wechat_code.png"/>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
@@ -1,64 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-13550f15",
|
||||
"path": "/pages/18d025/",
|
||||
"title": "algorithm_and_algorithm_evaluation",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "algorithm_and_algorithm_evaluation",
|
||||
"date": "2021-03-07T21:55:28.000Z",
|
||||
"permalink": "/pages/18d025/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"basic_introduction"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "算法和算法评价",
|
||||
"slug": "算法和算法评价",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "算法",
|
||||
"slug": "算法",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "效率的度量",
|
||||
"slug": "效率的度量",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/basic_introduction/3.algorithm_and_algorithm_evaluation.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:55:28
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:55:36
|
||||
-->
|
||||
<h2 id="算法和算法评价" tabindex="-1"><a class="header-anchor" href="#算法和算法评价" aria-hidden="true">#</a> 算法和算法评价</h2>
|
||||
<h3 id="算法" tabindex="-1"><a class="header-anchor" href="#算法" aria-hidden="true">#</a> 算法</h3>
|
||||
<p><code>算法</code> : 对特定问题求解步骤的一种描述,<strong>是指令的有序集合</strong>,每一条指令表示一个或多个操作。</p>
|
||||
<h4 id="重要特性" tabindex="-1"><a class="header-anchor" href="#重要特性" aria-hidden="true">#</a> 重要特性</h4>
|
||||
<ul>
|
||||
<li><code>有穷性</code>:必须总是(对任何合法的输入值)在<strong>执行有穷步后结束</strong>,并且每一步都可<strong>在有穷时间内完成</strong></li>
|
||||
<li><code>确定性</code>:每条指令的含义明确,不会产生二义性(歧义),<strong>对相同的输入只能得出相同的结果</strong></li>
|
||||
<li><code>可行性</code>:算法是可行的。<strong>算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的</strong></li>
|
||||
<li><code>输入</code>:有零个或者多个输入,<strong>输入取决于某个特定的对象的集合。</strong></li>
|
||||
<li><code>输出</code>:有一个或者多个输出,<strong>输出是和输入有着某种特定关系的量(强调输出与输入的关系)</strong></li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p><strong>算法是有穷的,但是程序不一定满足有穷性</strong>,程序只是算法在计算机上的特定的实现, 例如:死循环</p>
|
||||
</blockquote>
|
||||
<h4 id="算法的目标" tabindex="-1"><a class="header-anchor" href="#算法的目标" aria-hidden="true">#</a> 算法的目标</h4>
|
||||
<p>由于设计思路、解决问题方案等方面不同,不同算法之间也是有好坏的,就像人与人之间存在着差异。为设计出更好的算算法,往往需要追求更高的目标,而好的算法需要考虑到的目标就有:</p>
|
||||
<ul>
|
||||
<li>正确性:首先算法肯定是<strong>需要正确的解决求解问题</strong></li>
|
||||
<li>可读性:<strong>算法应该具有良好的可读性</strong>,就像项目代码一样,好的业务代码、逻辑清楚,<strong>便于理解</strong>。</li>
|
||||
<li>健壮性:<strong>在输入非法数据时,算法也能适当地做出反应或进行处理,而不会产生莫名奇妙的输出结果</strong>(在高级语言编程中,类似于强调封装方法的参数校验)</li>
|
||||
<li>效率与低存储量需求:<strong>效率即算法执行的时间</strong>,<strong>存储量需求即算法那执行过程中所有要的最大存储空间</strong>,这些与算法所解决问题的规模有关;</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Tips: 效率可以结合时间复杂度来理解,存储量需求可以结合空间复杂度理解;</p>
|
||||
</blockquote>
|
||||
<h3 id="效率的度量" tabindex="-1"><a class="header-anchor" href="#效率的度量" aria-hidden="true">#</a> 效率的度量</h3>
|
||||
<p>算法效率的度量是通过<code>时间复杂度</code>和<code>空间复杂度</code>来描述的;</p>
|
||||
<h4 id="时间复杂度" tabindex="-1"><a class="header-anchor" href="#时间复杂度" aria-hidden="true">#</a> 时间复杂度</h4>
|
||||
<p>语句的频度:语句在算法中被重复执行的次数</p>
|
||||
<p>算法中所有语句的<code>频度之和</code>记作T(n),即:对应算法问题规模n的函数,时间复杂度主要是来分析T(n)的数量级;</p>
|
||||
<p><strong>算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入的数据的性质(例如:输入元素的初始状态)</strong></p>
|
||||
<p>上面这句话是不是不能理解??? 哈哈哈,我第一次看,也是!!</p>
|
||||
<div class="language-c ext-c line-numbers-mode"><pre v-pre class="language-c"><code>
|
||||
<span class="token keyword">int</span> <span class="token function">test</span><span class="token punctuation">(</span>n<span class="token punctuation">)</span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">if</span><span class="token punctuation">(</span>n<span class="token operator"><</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||||
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token comment">// 循环叠加 输出</span>
|
||||
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
|
||||
<span class="token punctuation">}</span>
|
||||
|
||||
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>在这个简单的函数里</p>
|
||||
<ul>
|
||||
<li>当n<1的时候,例如:-2,就不需要循环,此时时间复杂度可以理解为T(1)</li>
|
||||
<li>当n>1的时候,例如:5 此时时间复杂度可以理解为T(n)</li>
|
||||
</ul>
|
||||
<p>当然,这里只是简单举例子便于理解:</p>
|
||||
<blockquote>
|
||||
<p><strong>算法的时间复杂度不仅依赖于问题的规模n,也取决于待输入的数据的性质(例如:输入元素的初始状态)</strong></p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><code>最坏时间复杂度</code>:<strong>最坏情况下</strong>,算法的时间复杂度</li>
|
||||
<li><code>平均时间复杂度</code>:<strong>所有可能输入实例在同等概率出现的情况下</strong>,算法的期望运行时间</li>
|
||||
<li><code>最好时间复杂度</code>:<strong>最好的情况下</strong>,算法的时间复杂度</li>
|
||||
</ul>
|
||||
<p>一般情况下,考虑最坏情况的时间复杂度(即:最坏时间复杂度),保证算法的运行时间不会更长(最糟糕我都能预料,难道还有更糟糕?????噗呲)</p>
|
||||
<h4 id="空间复杂度" tabindex="-1"><a class="header-anchor" href="#空间复杂度" aria-hidden="true">#</a> 空间复杂度</h4>
|
||||
<p>算法的空间复杂度可以用函数记作:S(n),<strong>用来定义算法运行过程中需要耗费的存储空间</strong>,是问题规模n的函数;</p>
|
||||
<blockquote>
|
||||
<p>渐进空间复杂度也被称为空间复杂度,记作:S(n)=O(g(n))</p>
|
||||
</blockquote>
|
||||
<p><strong>一个程序除了需要存储空间来存放本身所用的指令、常数、变量和输入数据外,也需要对数据进行操作的工作单元和存储一些实现计算所需要信息的辅助空间。</strong></p>
|
||||
<p>当输入数据所占用的空间只取决于问题本身,和算法无关时,只需要去分析除了输入和程序之外的额外空间</p>
|
||||
<p>算法原地工作:算法所需要辅助空间是常量,记作S(1),例如:</p>
|
||||
<div class="language-c ext-c line-numbers-mode"><pre v-pre class="language-c"><code><span class="token keyword">int</span> <span class="token function">switchValue</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span>b<span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||||
<span class="token comment">// 定义临时变量</span>
|
||||
<span class="token keyword">int</span> temp<span class="token operator">=</span>a<span class="token punctuation">;</span>
|
||||
b<span class="token operator">=</span>temp<span class="token punctuation">;</span>
|
||||
a<span class="token operator">=</span>b<span class="token punctuation">;</span>
|
||||
<span class="token punctuation">}</span>
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>在上面的函数中,只是通过临时变量temp来实现a和b的值交换,没有需要更多变量,因此可以简单理解函数的在<code>原地工作</code>,辅助空间是常量,记作S(1)</p>
|
||||
</template>
|
||||
@@ -1,70 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-6d791ca4",
|
||||
"path": "/pages/3f923d/",
|
||||
"title": "three_elements_of_data_structure",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "three_elements_of_data_structure",
|
||||
"date": "2021-03-07T21:55:06.000Z",
|
||||
"permalink": "/pages/3f923d/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"basic_introduction"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "数据结构三要素",
|
||||
"slug": "数据结构三要素",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据的逻辑结构",
|
||||
"slug": "数据的逻辑结构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据的存储(物理)结构",
|
||||
"slug": "数据的存储-物理-结构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据的运算",
|
||||
"slug": "数据的运算",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/basic_introduction/2.three_elements_of_data_structure.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:55:06
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:55:14
|
||||
-->
|
||||
<h2 id="数据结构三要素" tabindex="-1"><a class="header-anchor" href="#数据结构三要素" aria-hidden="true">#</a> 数据结构三要素</h2>
|
||||
<ul>
|
||||
<li>数据的逻辑结构</li>
|
||||
<li>数据的存储结构</li>
|
||||
<li>数据的运算</li>
|
||||
</ul>
|
||||
<h3 id="数据的逻辑结构" tabindex="-1"><a class="header-anchor" href="#数据的逻辑结构" aria-hidden="true">#</a> 数据的逻辑结构</h3>
|
||||
<p>数据元素之间的逻辑关系,从逻辑关系上描述数据,叫做数据的逻辑结构。</p>
|
||||
<p>与数据的存储(物理)结构无关,是独立于计算机的。</p>
|
||||
<p>可以分为:</p>
|
||||
<ul>
|
||||
<li>线性结构</li>
|
||||
<li>非线性结构</li>
|
||||
</ul>
|
||||
<p>线性表是典型的线性结构,衍生出的栈、队列、串、数组、广义表也都是线性结构;</p>
|
||||
<p>非线性结构主要有:集合、树(一般树、二叉树)、图(有向图、无向图)</p>
|
||||
<p>特别注意:</p>
|
||||
<ul>
|
||||
<li><code>集合</code>:结构中的数据元素之间<strong>除了“同属于一个集合”的关系外,别无其他关系。</strong></li>
|
||||
<li><code>线性结构</code>:结构中的数据元素之间<strong>只存在一对一的关系</strong>。</li>
|
||||
<li><code>树形结构</code>:结构中的数据元素之间<strong>存在一对多的关系。</strong></li>
|
||||
<li><code>图状结构和网状结构</code>:结构中的数据元素之间<strong>存在多对多的关系。</strong></li>
|
||||
</ul>
|
||||
<h3 id="数据的存储-物理-结构" tabindex="-1"><a class="header-anchor" href="#数据的存储-物理-结构" aria-hidden="true">#</a> 数据的存储(物理)结构</h3>
|
||||
<p>数据结构在计算机中的表示(映像)。包括数据<code>元素的表示</code>和<code>关系的表示</code>。</p>
|
||||
<p>存储结构是逻辑结构用计算机语言实现的,依赖于计算机语言。</p>
|
||||
<p>可以分为:</p>
|
||||
<ul>
|
||||
<li>顺序存储</li>
|
||||
<li>链式存储</li>
|
||||
<li>索引存储</li>
|
||||
<li>散列(Hash)存储</li>
|
||||
</ul>
|
||||
<p><strong>注意:存储和存取的概念不一样</strong></p>
|
||||
<h4 id="顺序存储" tabindex="-1"><a class="header-anchor" href="#顺序存储" aria-hidden="true">#</a> 顺序存储</h4>
|
||||
<p><strong>逻辑上相邻的元素存储在物理位置上也相邻的存储单元里,元素之间的关系由存储单元的邻接关系来体现。</strong></p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>可以实现随机存取</li>
|
||||
<li>元素占用最少的存储空间</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>只能使用相邻的一整块存储单元,依赖于物理结构相邻;</li>
|
||||
<li>容易产生<code>外部碎片</code></li>
|
||||
</ul>
|
||||
<p>什么是内外部碎片?</p>
|
||||
<blockquote>
|
||||
<p>参考资料:https://blog.csdn.net/qq_22238021/article/details/80209062</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>外部碎片:<code>还没有分配出去</code>(不属于任何进程),但是<strong>由于大小而无法分配给申请内存空间的新进程的内存空闲块。</strong></li>
|
||||
<li>内部碎片:<code>已经被分配出去</code>(能明确指出属于哪个进程)的<strong>内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片。</strong></li>
|
||||
</ul>
|
||||
<h4 id="链式存储" tabindex="-1"><a class="header-anchor" href="#链式存储" aria-hidden="true">#</a> 链式存储</h4>
|
||||
<p>与顺序存储不同,<strong>链式存储不要求逻辑上相邻的元素在物理位置上也相邻。</strong></p>
|
||||
<p>借助指示元素存储地址的<code>指针</code>表示元素之间的逻辑关系。</p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>不会出现碎片现象</li>
|
||||
<li>充分利用所有存储单元</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>除了存储元素外,还需要额外存储指针,会占用额外的存储空间(结合数据库索引学习)。</li>
|
||||
<li>链式存储,<strong>只能实现<code>顺序存取</code>,不能实现<code>随机存取</code>(指针的遍历)</strong></li>
|
||||
</ul>
|
||||
<h4 id="索引存储" tabindex="-1"><a class="header-anchor" href="#索引存储" aria-hidden="true">#</a> 索引存储</h4>
|
||||
<p>存放数据元素和元素间关系的存储方式,在存储元素信息的同时,还需要建立附加的<code>索引表</code>。</p>
|
||||
<p><strong>索引表的每一项称为索引项,索引项的一般形式是:<关键字,地址></strong></p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>检索快(就好比字典有了目录,查询就很快了)</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>增加了索引表,占用较多的存储空间(典型的空间换时间策略)</li>
|
||||
<li>增加、删除数据时,需要对应修改索引表,花费更多时间。</li>
|
||||
</ul>
|
||||
<h4 id="散列-hash-存储" tabindex="-1"><a class="header-anchor" href="#散列-hash-存储" aria-hidden="true">#</a> 散列(Hash)存储</h4>
|
||||
<p>根据元素的关键字直接通过散列(Hash)函数计算出元素的存储地址。</p>
|
||||
<p>优点:</p>
|
||||
<ul>
|
||||
<li>检索快,添加、删除元素结点操作快(获取元素地址直接,整体时间就少了)</li>
|
||||
</ul>
|
||||
<p>缺点:</p>
|
||||
<ul>
|
||||
<li>非常依赖于<code>散列函数</code></li>
|
||||
<li>会出现<code>散列冲突</code>(主要依赖与散列函数,散列函数不好就很容易出现散列冲突)</li>
|
||||
<li>出现<code>散列冲突</code>时,解决冲突就会增加时间和空间上的开销</li>
|
||||
</ul>
|
||||
<h3 id="数据的运算" tabindex="-1"><a class="header-anchor" href="#数据的运算" aria-hidden="true">#</a> 数据的运算</h3>
|
||||
<p>数据上的运算包括:<code>运算的定义</code> 、<code>运算的实现</code></p>
|
||||
<ul>
|
||||
<li><code>运算的定义</code>:针对逻辑结构,指出运算的功能</li>
|
||||
<li><code>原酸的实现</code>:针对存储结构,指出运算的具体操作步骤</li>
|
||||
</ul>
|
||||
<p>线性表既可以用顺序存储方式实现,也可以用链式存储方式实现。</p>
|
||||
</template>
|
||||
@@ -1,88 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-47e9dd3a",
|
||||
"path": "/pages/53976b/",
|
||||
"title": "test",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "test",
|
||||
"date": "2021-03-07T21:54:07.000Z",
|
||||
"permalink": "/pages/53976b/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"basic_introduction"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "基础概念",
|
||||
"slug": "基础概念",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据",
|
||||
"slug": "数据",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据元素",
|
||||
"slug": "数据元素",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据对象",
|
||||
"slug": "数据对象",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据类型",
|
||||
"slug": "数据类型",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "抽象数据类型(ADT)",
|
||||
"slug": "抽象数据类型-adt",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "数据结构",
|
||||
"slug": "数据结构",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/basic_introduction/1.basic_concepts.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:54:07
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 22:59:29
|
||||
-->
|
||||
<h2 id="基础概念" tabindex="-1"><a class="header-anchor" href="#基础概念" aria-hidden="true">#</a> 基础概念</h2>
|
||||
<h3 id="数据" tabindex="-1"><a class="header-anchor" href="#数据" aria-hidden="true">#</a> 数据</h3>
|
||||
<p><strong>信息的载体</strong>,是客观事物属性的数、字符以及所有能够输入到计算机包中并且被计算机程序识别和处理的<strong>集合</strong></p>
|
||||
<h3 id="数据元素" tabindex="-1"><a class="header-anchor" href="#数据元素" aria-hidden="true">#</a> 数据元素</h3>
|
||||
<p><strong>数据的基本单位</strong>,通常按照一个整数来进行考虑和处理。</p>
|
||||
<p>特别注意:一个数据元素由若干个<strong>数据项</strong>组成,数据项是构成数组元素的最小单位,且不可分割。</p>
|
||||
<h3 id="数据对象" tabindex="-1"><a class="header-anchor" href="#数据对象" aria-hidden="true">#</a> 数据对象</h3>
|
||||
<p>具有<strong>相同性质</strong>的数据元素的<strong>集合</strong>,<strong>是数据的子集</strong></p>
|
||||
<h3 id="数据类型" tabindex="-1"><a class="header-anchor" href="#数据类型" aria-hidden="true">#</a> 数据类型</h3>
|
||||
<p>值的集合和定义在此集合上一组操作的总称</p>
|
||||
<ul>
|
||||
<li>原子类型:不可再分的数据类型;</li>
|
||||
<li>结构类型:可以分解成若干分量(成分)的数据类型;</li>
|
||||
<li><strong>抽象数据类型</strong>:抽象出具组织和其相关的操作;</li>
|
||||
</ul>
|
||||
<h3 id="抽象数据类型-adt" tabindex="-1"><a class="header-anchor" href="#抽象数据类型-adt" aria-hidden="true">#</a> 抽象数据类型(ADT)</h3>
|
||||
<blockquote>
|
||||
<p>Tips: 可以结合高级语言中类对象封装来理解;</p>
|
||||
</blockquote>
|
||||
<div class="language-bash ext-sh line-numbers-mode"><pre v-pre class="language-bash"><code>ADT抽象数据类型名<span class="token punctuation">{</span>
|
||||
数据对象:<span class="token operator"><</span>数据对象的定义<span class="token operator">></span>
|
||||
数据关系:<span class="token operator"><</span>数据关系的定义<span class="token operator">></span>
|
||||
基本操作:<span class="token operator"><</span>基本操作的定义<span class="token operator">></span>
|
||||
<span class="token punctuation">}</span> ADT抽象数据类型名
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p>一个数学模型以及定义在该模型上的一组操作。定义仅仅取决于它的一组逻辑操作。与计算机内部如何表示和实现是没有关系;</p>
|
||||
<p><strong>不论内部结构如何变化,只要其数学特性不变,就不会影响到外部的使用,实现了数据封装和信息隐藏</strong></p>
|
||||
<p>通常由(数据对象、数据关系、数据操作集)三元组来表示抽象数据类型;</p>
|
||||
<p>抽象数据类型的主要作用是<strong>数据封装和信息隐藏,让实现与使用相分离</strong>。数据及其相关操作的结合称为数据封装。对象可以对其他对象隐藏某些操作细节,从而使这些操作不会受到其他对象的影响。</p>
|
||||
<p>抽象数据类型独立于运算的具体实现,使用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,实现了信息隐藏。</p>
|
||||
<h3 id="数据结构" tabindex="-1"><a class="header-anchor" href="#数据结构" aria-hidden="true">#</a> 数据结构</h3>
|
||||
<p>首先明确:数据元素都不是孤立存在的。元素与元素之间存在着某种关系,这种相互之间的关系就是<strong>结构</strong>。</p>
|
||||
<p><strong>数据结构是相互之间存在一种或者多种特定关系的数据元素的集合</strong></p>
|
||||
<ul>
|
||||
<li>逻辑结构</li>
|
||||
<li>存储结构(物理结构)</li>
|
||||
<li>数据运算</li>
|
||||
</ul>
|
||||
<p>数据的逻辑结构和存储结构是密不可分的。</p>
|
||||
<p><strong>算法的设计取决于所选定的逻辑结构;算法的实现依赖于所采用的存储结构;</strong></p>
|
||||
</template>
|
||||
@@ -1,70 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-3926f79a",
|
||||
"path": "/pages/56b8ef/",
|
||||
"title": "selection_of_storage_structure",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "selection_of_storage_structure",
|
||||
"date": "2021-03-07T22:00:36.000Z",
|
||||
"permalink": "/pages/56b8ef/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "存储结构的选取",
|
||||
"slug": "存储结构的选取",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "基于存储的考虑",
|
||||
"slug": "基于存储的考虑",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "基于运算的考虑",
|
||||
"slug": "基于运算的考虑",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "基于环境的考虑",
|
||||
"slug": "基于环境的考虑",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/8.selection_of_storage_structure.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 22:00:36
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 22:00:43
|
||||
-->
|
||||
<h2 id="存储结构的选取" tabindex="-1"><a class="header-anchor" href="#存储结构的选取" aria-hidden="true">#</a> 存储结构的选取</h2>
|
||||
<h3 id="基于存储的考虑" tabindex="-1"><a class="header-anchor" href="#基于存储的考虑" aria-hidden="true">#</a> 基于存储的考虑</h3>
|
||||
<ul>
|
||||
<li>对线性表的长度和存储规模难以估计时,不宜采用顺序表存储</li>
|
||||
<li>链表不用事先估计存储规模,但存储密度较低</li>
|
||||
<li>链式存储结构的存储密度小于1,不要求连续的存储空间</li>
|
||||
</ul>
|
||||
<h3 id="基于运算的考虑" tabindex="-1"><a class="header-anchor" href="#基于运算的考虑" aria-hidden="true">#</a> 基于运算的考虑</h3>
|
||||
<ul>
|
||||
<li>顺序表支持随机存取,按序号查找顺序表的时间复杂度为O(1);</li>
|
||||
<li>链表不支持随机存取,按序号查找链表的时间复杂度为O(n);</li>
|
||||
<li>顺序表的插入、删除操作,平均需要移动表中一半的元素,当表的数据量较大时,这种情况需要重点考虑的。</li>
|
||||
<li>链表的插入、删除操作,也是需要找插入位置(前驱结点、后继结点),主要的操作还是比较操作,相对较好;</li>
|
||||
</ul>
|
||||
<h3 id="基于环境的考虑" tabindex="-1"><a class="header-anchor" href="#基于环境的考虑" aria-hidden="true">#</a> 基于环境的考虑</h3>
|
||||
<ul>
|
||||
<li>顺序表容易实现,任何高级语言中都有数组类型;</li>
|
||||
<li>链表操作是基于指针的,指针移动,相对复杂;</li>
|
||||
</ul>
|
||||
<p>综上比较</p>
|
||||
<ul>
|
||||
<li>通常比较稳定的线性表选择顺序存储;</li>
|
||||
<li>频繁进行插入、删除操作的线性表,应该选择链式存储,动态性较强</li>
|
||||
</ul>
|
||||
</template>
|
||||
@@ -1,51 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-32135c7a",
|
||||
"path": "/pages/5de3a5/",
|
||||
"title": "static_linked_list",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "static_linked_list",
|
||||
"date": "2021-03-07T21:59:47.000Z",
|
||||
"permalink": "/pages/5de3a5/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "静态链表",
|
||||
"slug": "静态链表",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/6.static_linked_list.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:59:47
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:59:47
|
||||
-->
|
||||
<h2 id="静态链表" tabindex="-1"><a class="header-anchor" href="#静态链表" aria-hidden="true">#</a> 静态链表</h2>
|
||||
<blockquote>
|
||||
<p>借助数组来描述线性表的链式存储结构,结点元素同样存在数据域<code>data</code>和指针域<code>next</code></p>
|
||||
</blockquote>
|
||||
<p>注意: 和普通的链表的指针域不同的是,静态链表的指针是结点元素的相对地址(数组下标),也称为<code>游标</code>,建议结合高级语言中数组的概念来理解;</p>
|
||||
<p><strong>与顺序表一样,虽然静态链表属于链表,但是存储时需要预先分配一块连续的内存空间</strong></p>
|
||||
<p>静态链表结构类型:</p>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 定义静态链表的最大长度
|
||||
# define MaxSize 50
|
||||
|
||||
typedef struct{
|
||||
ElemType data; // 存储数据元素,数据域
|
||||
int next; // 下个元素的相对地址,数组下标
|
||||
}SLinkList[MaxSize];
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><p>很显然,静态链表是通过<code>数组游标</code>来访问下一个结点元素,可以和<code>指针域</code>的相关概念结合理解;</p>
|
||||
<ul>
|
||||
<li>静态链表以<code>next=-1</code>作为结束的标志【尾结点】</li>
|
||||
<li>和动态链表相同,<strong>插入、删除操作不需要移动元素,只需要修改指针</strong>;</li>
|
||||
<li>总体来说,静态链表没有单链表使用方便,需要将整个链表存储在一块连续的内存空间中,内部的存储可以分散,通过指针构成<code>链</code>的关系</li>
|
||||
</ul>
|
||||
</template>
|
||||
@@ -1,76 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-40ac0f54",
|
||||
"path": "/pages/7088fd/",
|
||||
"title": "comparison_of_sequential_list_and_linked_list",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "comparison_of_sequential_list_and_linked_list",
|
||||
"date": "2021-03-07T22:00:10.000Z",
|
||||
"permalink": "/pages/7088fd/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "顺序表和链表的比较",
|
||||
"slug": "顺序表和链表的比较",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "存取方式",
|
||||
"slug": "存取方式",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "逻辑结构与物理结构",
|
||||
"slug": "逻辑结构与物理结构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "时间复杂度",
|
||||
"slug": "时间复杂度",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "空间分配",
|
||||
"slug": "空间分配",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/7.comparison_of_sequential_list_and_linked_list.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 22:00:10
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 22:00:10
|
||||
-->
|
||||
<h2 id="顺序表和链表的比较" tabindex="-1"><a class="header-anchor" href="#顺序表和链表的比较" aria-hidden="true">#</a> 顺序表和链表的比较</h2>
|
||||
<h3 id="存取方式" tabindex="-1"><a class="header-anchor" href="#存取方式" aria-hidden="true">#</a> 存取方式</h3>
|
||||
<ul>
|
||||
<li>顺序表支持顺序存取和随机存取;</li>
|
||||
<li>链表只能从表头顺序存取元素,支持顺序存取;</li>
|
||||
</ul>
|
||||
<h3 id="逻辑结构与物理结构" tabindex="-1"><a class="header-anchor" href="#逻辑结构与物理结构" aria-hidden="true">#</a> 逻辑结构与物理结构</h3>
|
||||
<ul>
|
||||
<li>顺序存储时,逻辑上相邻的元素,对应的物理存储位置也相邻【一定性】。</li>
|
||||
<li>链式存储时,逻辑上相邻的元素,对应的物理存储位置不一定相邻【可以相邻,也可以不相邻】。</li>
|
||||
<li>链式存储的逻辑关系通过指针链接表示;</li>
|
||||
</ul>
|
||||
<h3 id="时间复杂度" tabindex="-1"><a class="header-anchor" href="#时间复杂度" aria-hidden="true">#</a> 时间复杂度</h3>
|
||||
<h4 id="按值查找" tabindex="-1"><a class="header-anchor" href="#按值查找" aria-hidden="true">#</a> 按值查找</h4>
|
||||
<ul>
|
||||
<li>顺序表无序的情况下,顺序表和链表的时间复杂度均为O(n)</li>
|
||||
<li>顺序表有序的情况下,顺序表的时间复杂度为O(log<sub>2</sub>n),链表的时间复杂度为O(n);</li>
|
||||
</ul>
|
||||
<p><strong>注意:O(log<sub>2</sub>n) < O(n)</strong></p>
|
||||
<h4 id="按序号查找" tabindex="-1"><a class="header-anchor" href="#按序号查找" aria-hidden="true">#</a> 按序号查找</h4>
|
||||
<ul>
|
||||
<li>顺序表支持随机访问,时间复杂度为O(1);</li>
|
||||
<li>顺序表不支持随机访问,时间复杂度为O(n);</li>
|
||||
</ul>
|
||||
<h4 id="插入、删除" tabindex="-1"><a class="header-anchor" href="#插入、删除" aria-hidden="true">#</a> 插入、删除</h4>
|
||||
<ul>
|
||||
<li>顺序表平均需要移动半个表长的元素;</li>
|
||||
<li>链表只需要修改相应结点的指针域,不需要移动元素;</li>
|
||||
<li>链表结点除了数据域,还有指针域,在存储空间上比顺序存储需要更大的存储空间,付出更大的存储代价,存储密度不够大</li>
|
||||
</ul>
|
||||
<h3 id="空间分配" tabindex="-1"><a class="header-anchor" href="#空间分配" aria-hidden="true">#</a> 空间分配</h3>
|
||||
<h4 id="顺序存储" tabindex="-1"><a class="header-anchor" href="#顺序存储" aria-hidden="true">#</a> 顺序存储</h4>
|
||||
<h5 id="静态分配" tabindex="-1"><a class="header-anchor" href="#静态分配" aria-hidden="true">#</a> 静态分配</h5>
|
||||
<ul>
|
||||
<li>需要预先分配足够大的存储空间;</li>
|
||||
<li>空间装满后不能扩充,存储新元素将出现<code>内存溢出</code>;</li>
|
||||
<li>存储空间过大,顺序表后部闲置空间过多,造成<code>内部碎片</code></li>
|
||||
<li>存储空间过小,会造成<code>内存溢出</code></li>
|
||||
</ul>
|
||||
<h5 id="动态分配" tabindex="-1"><a class="header-anchor" href="#动态分配" aria-hidden="true">#</a> 动态分配</h5>
|
||||
<ul>
|
||||
<li>动态分配能够扩充存储空间,但需要移动大量元素,操作效率降低</li>
|
||||
<li>内存中没有更大块的连续存储空间,将会导致空间分配失败;</li>
|
||||
</ul>
|
||||
<h4 id="链式存储" tabindex="-1"><a class="header-anchor" href="#链式存储" aria-hidden="true">#</a> 链式存储</h4>
|
||||
<ul>
|
||||
<li>链式存储的结点空间只在需要的时候申请分配</li>
|
||||
<li>只要内存由空间就可以分配,操作灵活、高效</li>
|
||||
</ul>
|
||||
</template>
|
||||
@@ -1,64 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-a4870ef4",
|
||||
"path": "/pages/924aed/",
|
||||
"title": "basic_concept_and_operation",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "basic_concept_and_operation",
|
||||
"date": "2021-03-07T21:57:27.000Z",
|
||||
"permalink": "/pages/924aed/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "线性表的基础概念和基本操作",
|
||||
"slug": "线性表的基础概念和基本操作",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "定义",
|
||||
"slug": "定义",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "基本操作",
|
||||
"slug": "基本操作",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/1.basic_concept_and_operation.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:57:27
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:57:35
|
||||
-->
|
||||
<h2 id="线性表的基础概念和基本操作" tabindex="-1"><a class="header-anchor" href="#线性表的基础概念和基本操作" aria-hidden="true">#</a> 线性表的基础概念和基本操作</h2>
|
||||
<blockquote>
|
||||
<p>强调线性表是一种逻辑结构,不是存储结构</p>
|
||||
</blockquote>
|
||||
<h3 id="定义" tabindex="-1"><a class="header-anchor" href="#定义" aria-hidden="true">#</a> 定义</h3>
|
||||
<p>线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。一般表示:</p>
|
||||
<p>L=(a<sub>1</sub>,a<sub>2</sub>,a<sub>3</sub>......a<sub>n</sub>) 其中n可以理解为表长(线性表的长度),n=0时候,即表空</p>
|
||||
<ul>
|
||||
<li><code>表头元素</code>:线性表中唯一的“第一个”数据元素,例如a<sub>1</sub></li>
|
||||
<li><code>表尾元素</code>:线性表中唯一的“最后一个”数据元素,例如a<sub>n</sub></li>
|
||||
</ul>
|
||||
<p>重要逻辑特性:</p>
|
||||
<ul>
|
||||
<li>除表头元素外,线性表中每个元素有且仅有一个<code>直接前驱</code></li>
|
||||
<li>除表尾元素外,线性表中每个元素有且仅有一个<code>直接后继</code></li>
|
||||
</ul>
|
||||
<p>基于此,这种<strong>线性有序的逻辑结构</strong>,使得线性表的特点如下:</p>
|
||||
<ul>
|
||||
<li>元素的<strong>个数有限</strong>(强调有限序列)</li>
|
||||
<li>元素在逻辑上具有<strong>顺序性</strong>,在序列中每个元素都是都有先后次序的</li>
|
||||
<li>元素都数据元素,<strong>每个元素都是单个元素</strong></li>
|
||||
<li>元素的<strong>数据类型都相同</strong>(强调相同数据类型),每个数据元素占用相同大小的存储空间</li>
|
||||
<li>元素具有<strong>抽象性</strong>,仅仅讨论元素之间的逻辑关系,不需要去考虑元素究竟表示的什么内容</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>Tips: <strong>线性表是一种逻辑结构</strong>,表示元素之间一对一的相邻关系。<strong>顺序表和链表则指的是存储结构</strong></p>
|
||||
</blockquote>
|
||||
<h3 id="基本操作" tabindex="-1"><a class="header-anchor" href="#基本操作" aria-hidden="true">#</a> 基本操作</h3>
|
||||
<ul>
|
||||
<li><code>InitList(&L)</code>: <strong>初始化表</strong>。构造空的线性表</li>
|
||||
<li><code>Length(L)</code>:<strong>获取表的长度</strong>。返回线性表L的长度,即表中的数据元素个数</li>
|
||||
<li><code>LocateElem(L,e)</code>:<strong>按值查找操作</strong>。在表L中国查找具有给定关键字的元素</li>
|
||||
<li><code>GetElem(L,i)</code>:<strong>按位查找操作</strong>。获取表中第i个位置的元素的值</li>
|
||||
<li><code>ListInsert(&L,i,e)</code>:<strong>插入操作</strong>。在表的第i个位置上插入指定元素e</li>
|
||||
<li><code>ListDelete(&L,i,&e)</code>:<strong>删除操作</strong>。删除表中第i个位置的元素,并用e返回删除元素的值</li>
|
||||
<li><code>PrintList(L)</code>:<strong>输出操作</strong>。按照前后顺序(如:1、2....n)输出线性表的所有元素值</li>
|
||||
<li><code>Empty(L)</code>:<strong>判空操作</strong>。当表L为空,则返回true,否则返回false</li>
|
||||
<li><code>DestoryList(&L)</code>:<strong>销毁操作</strong>。将线性表销毁,释放线性表L所占用的内存空间(类似:释放内存)</li>
|
||||
</ul>
|
||||
<p>线性表是具有相同的数据类型的有限个数据元素组成的,<strong>数据元素是由数据项组成的</strong></p>
|
||||
</template>
|
||||
@@ -1,64 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-069c5402",
|
||||
"path": "/pages/a7b602/",
|
||||
"title": "circular_list",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "circular_list",
|
||||
"date": "2021-03-07T21:59:27.000Z",
|
||||
"permalink": "/pages/a7b602/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "循环链表",
|
||||
"slug": "循环链表",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "循环单链表",
|
||||
"slug": "循环单链表",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "循环双链表",
|
||||
"slug": "循环双链表",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/5.circular_list.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:59:27
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:59:27
|
||||
-->
|
||||
<h2 id="循环链表" tabindex="-1"><a class="header-anchor" href="#循环链表" aria-hidden="true">#</a> 循环链表</h2>
|
||||
<ul>
|
||||
<li>循环单链表</li>
|
||||
<li>循环双链表</li>
|
||||
</ul>
|
||||
<h3 id="循环单链表" tabindex="-1"><a class="header-anchor" href="#循环单链表" aria-hidden="true">#</a> 循环单链表</h3>
|
||||
<p><code>循环单链表</code>是在单链表的基础上,将最后一个结点(尾结点)的指针由<code>NULL</code>改为指向<code>头结点</code>,形成<code>环</code>。【单链表----->循环单链表】</p>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>// 双链表结点类型
|
||||
typedef struct DNode{
|
||||
ElemType data; // 结点的数据域
|
||||
struct DNode *prior; // 结点的前驱指针
|
||||
struct DNode *next; // 结点的后继指针
|
||||
}DNode, *DlinkList;
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h4 id="判空条件" tabindex="-1"><a class="header-anchor" href="#判空条件" aria-hidden="true">#</a> 判空条件</h4>
|
||||
<p><strong>不是判断头结点的指针是否为空,而是需要判断是否等于头指针</strong>,表为空时,头结点的next指针域其实是指向自己;</p>
|
||||
<h4 id="特点" tabindex="-1"><a class="header-anchor" href="#特点" aria-hidden="true">#</a> 特点</h4>
|
||||
<ul>
|
||||
<li>在循环单链表中,尾结点*p的next指针域指向链表L(即:头结点),形成了<code>闭环</code>,不存在指针域为<code>NULL</code>的结点。</li>
|
||||
<li><strong>由于循环单链表是个<code>环</code>,在任何位置上的插入、删除操作都是等价的,不需要去判断是否是表尾</strong>。当其中的结点的next指针指向自己,也就能判断表为空</li>
|
||||
<li>单链表只能从头结点(表头结点)开始往后顺序遍历整个表,循环单链表可以从表中任意位置开始遍历整个链表,结点是等价的;</li>
|
||||
<li><strong>循环单链表可以抽象为时钟,形成的<code>环</code>是有顺序的;</strong></li>
|
||||
<li>频繁的<code>表头</code>和<code>表尾</code>操作,可以对循环单链表设置<code>尾指针</code>,而不设置<code>头指针</code>,明确尾指针r后,头指针即为:<code>r->next</code> ,减少头指针到尾指针间的遍历,时间复杂度:O(n)---->O(1)</li>
|
||||
</ul>
|
||||
<h3 id="循环双链表" tabindex="-1"><a class="header-anchor" href="#循环双链表" aria-hidden="true">#</a> 循环双链表</h3>
|
||||
<p><code>循环双链表</code>是在双链表的基础上,将<code>尾结点</code>的<code>next</code>指针指向<code>头结点</code>,将<code>头结点</code>的<code>prior</code>指针指向<code>尾结点</code>。【双链表----->循环双链表】</p>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>// 双链表结点类型
|
||||
typedef struct DNode{
|
||||
ElemType data; // 结点的数据域
|
||||
struct DNode *prior; // 结点的前驱指针
|
||||
struct DNode *next; // 结点的后继指针
|
||||
}DNode, *DlinkList;
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h4 id="判空条件-1" tabindex="-1"><a class="header-anchor" href="#判空条件-1" aria-hidden="true">#</a> 判空条件</h4>
|
||||
<p>循环双链表为空时,头结点*p的prior指针和next指针都指向L,即同时满足:</p>
|
||||
<ul>
|
||||
<li>p->next=L</li>
|
||||
<li>p->prior=L</li>
|
||||
</ul>
|
||||
<h4 id="基本特点" tabindex="-1"><a class="header-anchor" href="#基本特点" aria-hidden="true">#</a> 基本特点</h4>
|
||||
<ul>
|
||||
<li>从双向链表中的任意一个结点开始,都可以很方便地访问它的<code>前驱结点</code>和<code>后继结点</code>。</li>
|
||||
</ul>
|
||||
</template>
|
||||
@@ -1,220 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-4995d319",
|
||||
"path": "/pages/add102/",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": null,
|
||||
"date": "2021-01-19T08:04:19.000Z",
|
||||
"permalink": "/pages/add102/",
|
||||
"categories": [
|
||||
"category"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "写最前面",
|
||||
"slug": "写最前面",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "关于作者",
|
||||
"slug": "关于作者",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "思维导图",
|
||||
"slug": "思维导图",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "日常推荐",
|
||||
"slug": "日常推荐",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "前端",
|
||||
"slug": "前端",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "",
|
||||
"slug": "-1",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "后端【Node】",
|
||||
"slug": "后端【node】",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "算法",
|
||||
"slug": "算法",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "数据库",
|
||||
"slug": "数据库",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "服务部署",
|
||||
"slug": "服务部署",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "服务网关",
|
||||
"slug": "服务网关",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "服务注册",
|
||||
"slug": "服务注册",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "消息中间件",
|
||||
"slug": "消息中间件",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "RPC框架",
|
||||
"slug": "rpc框架",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "Elk日志管理平台",
|
||||
"slug": "elk日志管理平台",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "监控工具",
|
||||
"slug": "监控工具",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "高可用架构",
|
||||
"slug": "高可用架构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "网站搭建",
|
||||
"slug": "网站搭建",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "书籍整理",
|
||||
"slug": "书籍整理",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "技术类",
|
||||
"slug": "技术类",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "非技术类",
|
||||
"slug": "非技术类",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "公众号汇总",
|
||||
"slug": "公众号汇总",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "2020年",
|
||||
"slug": "_2020年",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "2021年",
|
||||
"slug": "_2021年",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "赞赏支持",
|
||||
"slug": "赞赏支持",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "联系我",
|
||||
"slug": "联系我",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "鸣谢",
|
||||
"slug": "鸣谢",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "赞助列表",
|
||||
"slug": "赞助列表",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "公众号",
|
||||
"slug": "公众号",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "category/README.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,839 +0,0 @@
|
||||
<template><h1 id="" tabindex="-1"><a class="header-anchor" href="#" aria-hidden="true">#</a> </h1>
|
||||
<p align="center">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/image-20200605224832237.png">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="#gzh" target="_blank"><img src="https://img.shields.io/badge/WeChat-公众号-5wd.svg"></a>
|
||||
<a href="#wechat" target="_blank"><img src="https://img.shields.io/badge/WeChat-微信-yellow.svg"></a>
|
||||
<a href="https://space.bilibili.com/350937042" target="_blank"><img src="https://img.shields.io/badge/Bilibili-哔哩哔哩-green.svg"></a>
|
||||
<a href="https://142vip.cn" target="_blank"><img src="https://img.shields.io/badge/142vip-网站-orange.svg"></a>
|
||||
<a href="https://blog.142vip.cn" target="_blank"><img src="https://img.shields.io/badge/blog-博客-blue.svg"></a>
|
||||
<a href="https://github.com/mmdapl" target="_blank"><img src="https://img.shields.io/badge/github-Github-9ac.svg"></a>
|
||||
<a href="https://gitee.com/mmdapl" target="_blank"><img src="https://img.shields.io/badge/gitee-码云-4ed.svg"></a>
|
||||
<a href="https://blog.csdn.net/Mmdapl" target="_blank"><img src="https://img.shields.io/badge/csdn-CSDN-8ea.svg"></a>
|
||||
<a href="https://juejin.im/user/448256476724807" target="_blank"><img src="https://img.shields.io/badge/JueJin-掘金-75c.svg"></a>
|
||||
</p>
|
||||
<div align="center" style="font-size:20px">
|
||||
<a href="https://gitee.com/mmdapl/JavaScriptCollection" target="_blank">码云版</a>
|
||||
<!-- ||
|
||||
<a href="readme-wechat.md" target="_blank">微信版</a> -->
|
||||
</div>
|
||||
<h2 id="写最前面" tabindex="-1"><a class="header-anchor" href="#写最前面" aria-hidden="true">#</a> 写最前面</h2>
|
||||
<blockquote>
|
||||
<p>这里是日常工作、学习、生活中总结的各类文章笔记,主要涉及开发技术总结记录,偶尔也会感慨万千,水一些无关技术的文章;若发现博客外链不能访问则可能博客设置修改过,请直接访问博客;所有内容会选择性的发表于<strong>微信公众号、个人博客、掘金、CSDN ,实际内容以本仓库排版、校对为主。</strong> 也会不定时同步到 <strong>码云</strong> 。
|
||||
<strong>以下内容没有链接的代表尚未完成,大家善用快捷键Ctrl+F</strong></p>
|
||||
<p>创建时间:2020年2月14日</p>
|
||||
</blockquote>
|
||||
<h2 id="关于作者" tabindex="-1"><a class="header-anchor" href="#关于作者" aria-hidden="true">#</a> 关于作者</h2>
|
||||
<ul>
|
||||
<li><img src="https://cdn.142vip.cn/article-notes/img/original.png" width="36" height="26" align="left" /><a href="http://blog.142vip.cn/s/projects" target="_blank" rel="noopener noreferrer">个人项目整理<ExternalLinkIcon/></a></li>
|
||||
<li><img src="https://cdn.142vip.cn/article-notes/img/original.png" width="36" height="26" align="left" /><a href="">自我介绍</a></li>
|
||||
</ul>
|
||||
<h2 id="思维导图" tabindex="-1"><a class="header-anchor" href="#思维导图" aria-hidden="true">#</a> 思维导图</h2>
|
||||
<blockquote>
|
||||
<p>内容同步与文档,可以结合思维导图对文档进行有效学习.相关目录的xmind文件为思维导图原文件</p>
|
||||
</blockquote>
|
||||
<h2 id="日常推荐" tabindex="-1"><a class="header-anchor" href="#日常推荐" aria-hidden="true">#</a> 日常推荐</h2>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/recommend/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8E%A8%E8%8D%90.html">云服务器推荐</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/recommend/%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99%E3%80%81%E6%95%88%E7%8E%87%E5%B7%A5%E5%85%B7.html">学习网站、使用工具</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/recommend/%E5%80%BC%E5%BE%97%E7%BB%86%E8%AF%BB%E7%9A%84%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0%E6%8E%A8%E8%8D%90.html">值得细读的技术文章推荐</RouterLink></li>
|
||||
</ul>
|
||||
<h1 id="文章笔记" tabindex="-1"><a class="header-anchor" href="#文章笔记" aria-hidden="true">#</a> 文章笔记</h1>
|
||||
<p><strong>注:无高亮有效访问链接的待完成/同步</strong></p>
|
||||
<h2 id="前端" tabindex="-1"><a class="header-anchor" href="#前端" aria-hidden="true">#</a> 前端</h2>
|
||||
<blockquote>
|
||||
<p>前端技术百花齐放、层出不穷,个人认为要注重广度,学会看官方文档熟练操作即可;</p>
|
||||
</blockquote>
|
||||
<h4 id="css" tabindex="-1"><a class="header-anchor" href="#css" aria-hidden="true">#</a> CSS</h4>
|
||||
<blockquote>
|
||||
<p>依赖W3CSchool文档和日常整理,主要是对CSS常用操作和基础属性进行整理总结。不会过多深入</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/css/CSS%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.html">CSS开发规范</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>样式属性</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>页面布局</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>移动端适配</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="基础教程" tabindex="-1"><a class="header-anchor" href="#基础教程" aria-hidden="true">#</a> <a href="docs/css/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B">基础教程</a></h5>
|
||||
<h2 id="-1" tabindex="-1"><a class="header-anchor" href="#-1" aria-hidden="true">#</a> </h2>
|
||||
<h4 id="javascript" tabindex="-1"><a class="header-anchor" href="#javascript" aria-hidden="true">#</a> JavaScript</h4>
|
||||
<blockquote>
|
||||
<p><strong>本级目录下的JavaScript内容没有发表到<a href="http://blog.142vip.cn" target="_blank" rel="noopener noreferrer">博客<ExternalLinkIcon/></a>上,建议对照<RouterLink to="/category/docs/javascript/">脑图</RouterLink>在<a href="javascript">JavaScript主目录</a>下学习</strong>,依赖官方文档及自身对JavaScript语言的初步了解,进行的关于JavaScript知识整理,主要目的是复习基础概念、了解新特性、熟练ES6/7操作;整体相对来说由易到难,方便后续查阅学习~</p>
|
||||
</blockquote>
|
||||
<h5 id="快速入门" tabindex="-1"><a class="header-anchor" href="#快速入门" aria-hidden="true">#</a> 快速入门</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/javascript%E7%AE%80%E5%8D%95%E4%BB%8B%E7%BB%8D.html">简单介绍</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/javascript%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8.html">快速了解</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/JavaScript%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.html">JavasScript开发规范</RouterLink></li>
|
||||
</ul>
|
||||
<h5 id="基础教程-1" tabindex="-1"><a class="header-anchor" href="#基础教程-1" aria-hidden="true">#</a> 基础教程</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E8%AF%AD%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.html">语法与数据结构</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E5%BE%AA%E7%8E%AF%E4%B8%8E%E8%BF%AD%E4%BB%A3.html">循环与迭代</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E4%B8%8E%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.html">流程控制与错误处理</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6.html">表达式和运算符</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E5%87%BD%E6%95%B0.html">函数和方法</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E6%95%B0%E5%AD%97%E5%92%8C%E6%97%A5%E6%9C%9F.html">数字和日期</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%BD%BF%E7%94%A8.html">对象的使用</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.html">正则表达式</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/promise%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%BD%BF%E7%94%A8.html">promise对象的使用</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/modules%E6%A8%A1%E5%9D%97.html">modules模块</RouterLink></li>
|
||||
</ul>
|
||||
<h5 id="中级教程" tabindex="-1"><a class="header-anchor" href="#中级教程" aria-hidden="true">#</a> 中级教程</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/javascript/%E4%B8%AD%E7%BA%A7%E6%95%99%E7%A8%8B/promise%E5%AF%B9%E8%B1%A1.html">Promise对象</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E4%B8%AD%E7%BA%A7%E6%95%99%E7%A8%8B/async%E5%87%BD%E6%95%B0.html">async函数</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E4%B8%AD%E7%BA%A7%E6%95%99%E7%A8%8B/class%E7%B1%BB.html">class类</RouterLink></li>
|
||||
</ul>
|
||||
<h5 id="高级教程" tabindex="-1"><a class="header-anchor" href="#高级教程" aria-hidden="true">#</a> 高级教程</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/javascript/%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B/%E4%B8%8D%E4%B8%80%E6%A0%B7%E7%9A%84ajax.html">不一样的ajax</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/javascript/%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B/%E4%BB%80%E4%B9%88%E6%98%AF%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF.html">什么是事件循环</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="">JSON.stringify()的三个参数</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="最后稻草" tabindex="-1"><a class="header-anchor" href="#最后稻草" aria-hidden="true">#</a> 最后稻草</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/ES6%E3%80%81ES7%E3%80%81ES8%E3%80%81ES9%E3%80%81ES10%E7%9A%84%E6%96%B0%E7%89%B9%E6%80%A7.html">ES6、ES7、ES8、ES9、ES10的新特性</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/ES2020%E6%96%B0%E7%89%B9%E6%80%A7.html">ES2020新特性</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/JavaScript%E5%B7%A5%E5%85%B7%E5%87%BD%E6%95%B0%E5%A4%A7%E5%85%A8.html">JavaScript 工具函数大全</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E6%96%B9%E6%B3%95%E6%95%B4%E7%90%86.html">常用函数方法整理</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="jquery" tabindex="-1"><a class="header-anchor" href="#jquery" aria-hidden="true">#</a> JQuery</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/jquery/%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8.html">安装使用</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/jquery/%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7.html">基本属性</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Css样式</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>选择器</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>文档处理</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>筛选</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>事件</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>效果</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>事件对象</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>延迟对象</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>回调函数</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>其他整理</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="vuejs" tabindex="-1"><a class="header-anchor" href="#vuejs" aria-hidden="true">#</a> Vuejs</h4>
|
||||
<blockquote>
|
||||
<p>介绍基础、常用的vue功能,不会很深入的涉及到vue源码及原理</p>
|
||||
</blockquote>
|
||||
<h4 id="react" tabindex="-1"><a class="header-anchor" href="#react" aria-hidden="true">#</a> React</h4>
|
||||
<h4 id="nuxtjs" tabindex="-1"><a class="header-anchor" href="#nuxtjs" aria-hidden="true">#</a> Nuxtjs</h4>
|
||||
<blockquote>
|
||||
<p>Nuxtjs是在vue框架上进行封装的,主要是用来解决单体页面的服务端渲染问题,提供网站进行SEO优化的可能</p>
|
||||
</blockquote>
|
||||
<p><a href="">前端读写cookie</a></p>
|
||||
<h4 id="ui框架" tabindex="-1"><a class="header-anchor" href="#ui框架" aria-hidden="true">#</a> UI框架</h4>
|
||||
<blockquote>
|
||||
<p>市面上前端框架层出不穷,不同的技术栈依赖的UI框架也不尽相同,这里将会依据笔者使用的UI框架,以线上项目展示的方式,介绍用过的框架;</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Bootstrap</li>
|
||||
<li>LayerUI</li>
|
||||
<li>Ant-design-vue</li>
|
||||
<li>iView-UI</li>
|
||||
<li>VantUI</li>
|
||||
<li>Element-UI</li>
|
||||
</ul>
|
||||
<h2 id="后端【node】" tabindex="-1"><a class="header-anchor" href="#后端【node】" aria-hidden="true">#</a> 后端【Node】</h2>
|
||||
<blockquote>
|
||||
<p>相比前端,作为偏后端的开发者, 后端技术的学习则需要稳扎稳打、不断积累整理,在会用、能用、熟练的基础上,更应该学习其中的原理;所以若你为后端开发者,不论Java、Nodejs、Go等技术栈,对待下面将提及的微服务架构、容器技术、服务治理、高可用等都需要努力学习,抓住重点;</p>
|
||||
<p>在面试面前,能力是不会说谎的,打铁还需自身硬,加油~</p>
|
||||
</blockquote>
|
||||
<h4 id="express框架" tabindex="-1"><a class="header-anchor" href="#express框架" aria-hidden="true">#</a> Express框架</h4>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/express/%E6%A1%86%E6%9E%B6%E4%BB%8B%E7%BB%8D.html">框架概念简介</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/express/brew%E5%92%8Ctree%E7%9A%84%E5%AE%89%E8%A3%85.html">brew和tree的安装</RouterLink></li>
|
||||
<li>搭建express基础项目</li>
|
||||
<li>安装</li>
|
||||
<li>路由</li>
|
||||
<li>静态文件</li>
|
||||
<li>中间件</li>
|
||||
<li>统一错误处理</li>
|
||||
<li><RouterLink to="/category/docs/express/express()%E5%87%BD%E6%95%B0.html">express()函数</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/express/application%E5%AF%B9%E8%B1%A1%E8%AF%A6%E8%A7%A3.html">application对象详解</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/express/request%E5%AF%B9%E8%B1%A1.html">request对象</RouterLink></li>
|
||||
<li><a href="">respon对象</a></li>
|
||||
<li><a href="">router对象</a></li>
|
||||
<li>数据库集成</li>
|
||||
<li>MVC分层</li>
|
||||
<li><RouterLink to="/category/docs/express/pm2%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86.html">pm2进程管理</RouterLink></li>
|
||||
<li>分环境部署上线</li>
|
||||
</ul>
|
||||
<h4 id="koa框架" tabindex="-1"><a class="header-anchor" href="#koa框架" aria-hidden="true">#</a> Koa框架</h4>
|
||||
<ul>
|
||||
<li>koa介绍</li>
|
||||
<li>手把手搭建第一个koa项目</li>
|
||||
<li>应用(Application)</li>
|
||||
<li>中间件(Middleware)</li>
|
||||
<li>上下文(Context)</li>
|
||||
<li>请求(Request)</li>
|
||||
<li>响应(Response)</li>
|
||||
</ul>
|
||||
<h4 id="eggjs框架" tabindex="-1"><a class="header-anchor" href="#eggjs框架" aria-hidden="true">#</a> Eggjs框架</h4>
|
||||
<h5 id="基础篇" tabindex="-1"><a class="header-anchor" href="#基础篇" aria-hidden="true">#</a> 基础篇</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-README.html">第一部分:Git概述</RouterLink></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-download.html">1.1 下载和安装</RouterLink>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-config.html">1.2 基本配置</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-dns.html">1.3 常用命令</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-github.html">1.4 GitHub简单使用</RouterLink></li>
|
||||
<li><a href="https://mp.weixin.qq.com/s/Wn_IZ6K4eqh1PtomRtqdqg" target="_blank" rel="noopener noreferrer">1.5 GitBook简单使用<ExternalLinkIcon/></a>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-typora.html">1.5.1 Typora简介</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-markdown.html">1.5.2 MarkDown语法</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-choice.html">1.6 码云和GitHub的选择</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/mysql-README.html">第二部分:数据库概述</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/mysql-download.html">2.1 下载和安装</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/git-connect.html">2.2 连接数据库</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/mysql-curd.html">2.3 CURD操作</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/mysql-redis.html">2.4 Redis缓存</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/mysql-redis-install.html">2.4.1 redis安装</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/mysql-redis-dns.html">2.4.2 redis常用指令</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/mysql-redis-view.html">2.5 可视化管理</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="入门篇" tabindex="-1"><a class="header-anchor" href="#入门篇" aria-hidden="true">#</a> 入门篇</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/egg-README.html">第一部分:Egg框架快速入门</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/egg-base.html">1.1 基础功能</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-request-params.html">1.1.1 接口参数获取</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-object.html">1.1.2 Egg内置对象 </RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-config.html">1.1.3 Config配置</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-life.html">1.1.4 Egg生命周期</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-middleware.html">1.1.5 中间件理解</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-router.html">1.1.6 Router路由分发</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-controller.html">1.1.7 Controller控制器</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-service.html">1.1.8 Service服务</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-plugin.html">1.1.9 常用插件</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/egg-core.html">1.2 核心功能</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-logger.html">1.2.1 日志输出</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-schedule.html">1.2.2 定时任务</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-httpclient.html">1.2.2 HttpClient网络请求</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-cookies.html">1.2.3 Cookie的基本使用</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-session.html">1.2.4 Session的基本使用</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-try-catch.html">1.2.5 统一异常-错误处理</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-csrf-xss.html">1.2.6 CSRF防范和XSS攻击</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/egg-restful.html">1.2.7 RESTful API接口风格</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/plugin-README.html">第二部分:插件开发</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/plugin-egg-validate.html">2.1 egg-validate参数校验</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/plugin-egg-view.ejs.html">2.2 egg-view-ejs页面渲染</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/plugin-egg-redis.html">2.3 egg-redis缓存</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/plugin-egg-mysql.html">2.4 egg-mysql</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/plugin-egg-sequelize.html">2.5 egg-sequelize</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/plugin-egg-socket.io.html">2.6 egg-socket.io即时通讯</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="代码实战篇" tabindex="-1"><a class="header-anchor" href="#代码实战篇" aria-hidden="true">#</a> 代码实战篇</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/project-README-CODE.html">第一部分:常用代码</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-images-cropper.html">1.1 图片前端在线剪辑</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-upload.html">1.2 文件上传后台处理</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-md5.html">1.3 MD5加密-解密算法</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-token.html">1.4 Egg Jwt加密和校验</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/project-README-INTRODUCE.html">第二部分:项目简介</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-ssoCenterSystem.html">2.1 基于OAuth2的统一认证中心系统</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-pagenation.html">2.2 常用前后端分页比较与实现</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-spring-boot-blog.html">2.3基于Spring Boot实现的个人博客</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-webapi.html">2.4 基于Yapi搭建的接口管理系统</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-gitbook.html">2.5 GitBook开源笔记总结站点搭建</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/eggjs/project-142vip.cn.html">2.6 个人网站及接口服务搭建搭建</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/eggjs/egg-egg-example.html">第三部分:手把手搭建基础Egg开发框架</RouterLink></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="nestjs框架" tabindex="-1"><a class="header-anchor" href="#nestjs框架" aria-hidden="true">#</a> Nestjs框架</h4>
|
||||
<blockquote>
|
||||
<p>Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此在学习Nestjs框架之前,请务必先熟悉express框架相关操作并进行typescript入门;在一定程度上typescript和面向对象语言Java、Net等很相似,如果你之前有JavaScript和Java的基础,那么应该恭喜你,你的学习速度将会倍速提高</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/nestjs/nestjs%E6%A0%B8%E5%BF%83%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5.html">核心基础概念</RouterLink></li>
|
||||
<li><RouterLink to="/category/nestjs/nestjs%E9%A1%B9%E7%9B%AE%E5%88%9B%E5%BB%BA%E5%88%9D%E5%A7%8B%E5%8C%96%E5%85%A5%E9%97%A8.html">项目创建初始化入门</RouterLink></li>
|
||||
<li><RouterLink to="/category/nestjs/nestjs%E6%95%B4%E5%90%88swagger%E5%BF%AB%E9%80%9F%E7%94%9F%E6%88%90api%E6%96%87%E6%A1%A3.html">整合swagger快速生成api文档</RouterLink></li>
|
||||
<li><RouterLink to="/category/nestjs/nestjs%E6%8E%A5%E5%8F%A3%E8%B7%AF%E7%94%B1%E8%AF%B7%E6%B1%82%E4%BC%A0%E5%8F%82.html">接口路由请求传参</RouterLink></li>
|
||||
</ul>
|
||||
<h2 id="算法" tabindex="-1"><a class="header-anchor" href="#算法" aria-hidden="true">#</a> 算法</h2>
|
||||
<ul>
|
||||
<li>算法分析</li>
|
||||
</ul>
|
||||
<h4 id="查找" tabindex="-1"><a class="header-anchor" href="#查找" aria-hidden="true">#</a> 查找</h4>
|
||||
<ul>
|
||||
<li>顺序查找</li>
|
||||
<li>折半查找</li>
|
||||
<li>分块查找</li>
|
||||
<li>B树和B+树</li>
|
||||
<li>散列(Hash)表</li>
|
||||
<li>字符串模式匹配(KPM)</li>
|
||||
</ul>
|
||||
<h4 id="排序" tabindex="-1"><a class="header-anchor" href="#排序" aria-hidden="true">#</a> 排序</h4>
|
||||
<ul>
|
||||
<li>插入排序</li>
|
||||
<li>交换排序</li>
|
||||
<li>选择排序</li>
|
||||
<li>归并排序</li>
|
||||
<li>基数排序</li>
|
||||
<li>内部排序比较</li>
|
||||
<li>外部排序比较</li>
|
||||
</ul>
|
||||
<h4 id="leetcode刷题" tabindex="-1"><a class="header-anchor" href="#leetcode刷题" aria-hidden="true">#</a> LeetCode刷题</h4>
|
||||
<h2 id="数据库" tabindex="-1"><a class="header-anchor" href="#数据库" aria-hidden="true">#</a> 数据库</h2>
|
||||
<blockquote>
|
||||
<p>主讲数据库基础知识,结合node的简单使用,相关的部署方案参照下方的文档</p>
|
||||
</blockquote>
|
||||
<h4 id="mysql" tabindex="-1"><a class="header-anchor" href="#mysql" aria-hidden="true">#</a> MySQL</h4>
|
||||
<ul>
|
||||
<li><a href="https://mp.weixin.qq.com/s/U1OUZYHEChFDx03FvgbMHA" target="_blank" rel="noopener noreferrer">【服务器版】MySQL的安装部署<ExternalLinkIcon/></a></li>
|
||||
<li><RouterLink to="/category/docs/mysql/MySQL%E4%BC%98%E5%8C%96%E4%B9%8BExplain%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E.html">MySQL优化之Explain参数说明</RouterLink></li>
|
||||
<li>索引</li>
|
||||
<li>sql优化</li>
|
||||
<li><RouterLink to="/category/docs/mysql/%E5%9F%BA%E4%BA%8EGTID%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%E7%9A%84%E5%8E%9F%E7%90%86%E5%92%8C%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE.html">基于GTID主从复制的原理和基础配置</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/mysql/mysql%E6%97%A5%E5%BF%97%E6%AF%94%E8%BE%83.html">MySQL日志类型把我难哭了,你学废了吗?</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="redis" tabindex="-1"><a class="header-anchor" href="#redis" aria-hidden="true">#</a> Redis</h4>
|
||||
<blockquote>
|
||||
<p>将围绕redis基础概念、使用场景、使用方式、简单部署等方面 展开介绍,<a href="redis">主目录</a>下有自己觉得还不错PDF文档~</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/redis/key%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83%E4%B8%8E%E5%BB%BA%E8%AE%AE.html">key命名规范与建议</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/redis/redis%E5%BC%80%E5%8F%91%E4%BD%BF%E7%94%A8%E8%A7%84%E8%8C%83.html">redis开发使用规范</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/redis/redis%E5%9F%BA%E7%A1%80%E4%BB%8B%E7%BB%8D.html">redis基础介绍</RouterLink></li>
|
||||
<li><a href="https://mp.weixin.qq.com/s/Xe-ZDf2kgUWfYSkuULAdlw" target="_blank" rel="noopener noreferrer">redis的简单安装和部署<ExternalLinkIcon/></a></li>
|
||||
<li><a href="code/docs/redis/redis-default.conf">官方默认配置模板</a></li>
|
||||
<li>数据类型</li>
|
||||
<li><RouterLink to="/category/docs/docs/redis/redis%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.html">redis简单主从集群部署-docker方式</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/redis/memCache%E4%B8%8ERedis.html">memCache与Redis比较</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="mongo" tabindex="-1"><a class="header-anchor" href="#mongo" aria-hidden="true">#</a> Mongo</h4>
|
||||
<ul>
|
||||
<li>基本介绍</li>
|
||||
<li>安装部署</li>
|
||||
<li>简单使用</li>
|
||||
<li>Node下的CURD操作</li>
|
||||
</ul>
|
||||
<h2 id="服务部署" tabindex="-1"><a class="header-anchor" href="#服务部署" aria-hidden="true">#</a> 服务部署</h2>
|
||||
<h4 id="nginx" tabindex="-1"><a class="header-anchor" href="#nginx" aria-hidden="true">#</a> nginx</h4>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/nginx/nginx%E5%9F%BA%E7%A1%80%E9%83%A8%E7%BD%B2.html">nginx安装,普通安装 Or Docker搞定?</RouterLink></li>
|
||||
<li><a href="">手把手nginx基础入门</a></li>
|
||||
<li><a href="">反向代理、负载均衡真有那么难吗?</a></li>
|
||||
<li><RouterLink to="/category/docs/nginx/nginx%E6%9C%8D%E5%8A%A1%E5%99%A8ssl%E8%AF%81%E4%B9%A6%E9%85%8D%E7%BD%AE.html">Nginx SSL证书,从此踏上Https之路</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="docker" tabindex="-1"><a class="header-anchor" href="#docker" aria-hidden="true">#</a> docker</h4>
|
||||
<ul>
|
||||
<li>我与docker的第一次硬碰硬</li>
|
||||
<li>docker操作入门真有那么难吗?</li>
|
||||
<li>这些基础操作指令,你会吗?</li>
|
||||
<li>那些年,我常用的docker指令操作汇总</li>
|
||||
</ul>
|
||||
<h4 id="docker-compose" tabindex="-1"><a class="header-anchor" href="#docker-compose" aria-hidden="true">#</a> docker-compose</h4>
|
||||
<ul>
|
||||
<li>听说你装了N次都没搞定?</li>
|
||||
<li>集群启动失败,yaml规范不清楚?</li>
|
||||
<li><a href="https://mp.weixin.qq.com/s/nC4nF51xn61TZlenuUxDog" target="_blank" rel="noopener noreferrer">我了解的docker-compose都在这里了<ExternalLinkIcon/></a></li>
|
||||
</ul>
|
||||
<h4 id="linux下shell编程" tabindex="-1"><a class="header-anchor" href="#linux下shell编程" aria-hidden="true">#</a> linux下shell编程</h4>
|
||||
<ul>
|
||||
<li><a href="https://mp.weixin.qq.com/s/gctrWdB1JEK59_a9tJQSkg" target="_blank" rel="noopener noreferrer">shell基础整理<ExternalLinkIcon/></a></li>
|
||||
<li><RouterLink to="/category/shell/shell%E8%BF%9E%E6%8E%A5mysql.html">操作mysql数据库</RouterLink></li>
|
||||
<li>shell操作docker</li>
|
||||
<li>环境变量env</li>
|
||||
</ul>
|
||||
<h2 id="服务网关" tabindex="-1"><a class="header-anchor" href="#服务网关" aria-hidden="true">#</a> 服务网关</h2>
|
||||
<h4 id="kong" tabindex="-1"><a class="header-anchor" href="#kong" aria-hidden="true">#</a> kong</h4>
|
||||
<ul>
|
||||
<li><RouterLink to="/api-gateway/kong/kong%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%BB%8D.html">kong的的基本介绍</RouterLink></li>
|
||||
<li><RouterLink to="/api-gateway/kong/%E5%9F%BA%E4%BA%8Edocker%E9%83%A8%E7%BD%B2kong%E7%BD%91%E5%85%B3%E6%9C%8D%E5%8A%A1.html">docker下kong的部署</RouterLink></li>
|
||||
<li>docker-compose搭建kong集群</li>
|
||||
<li>可视化管理界面介绍</li>
|
||||
</ul>
|
||||
<h4 id="konga" tabindex="-1"><a class="header-anchor" href="#konga" aria-hidden="true">#</a> konga</h4>
|
||||
<ul>
|
||||
<li>基本介绍与docker部署</li>
|
||||
<li>简单使用</li>
|
||||
<li>路由管理</li>
|
||||
</ul>
|
||||
<h4 id="kong-dashboard" tabindex="-1"><a class="header-anchor" href="#kong-dashboard" aria-hidden="true">#</a> kong-dashboard</h4>
|
||||
<ul>
|
||||
<li>docker简单部署</li>
|
||||
<li>路由管理</li>
|
||||
<li>插件介绍</li>
|
||||
</ul>
|
||||
<h2 id="服务注册" tabindex="-1"><a class="header-anchor" href="#服务注册" aria-hidden="true">#</a> 服务注册</h2>
|
||||
<h4 id="apollo" tabindex="-1"><a class="header-anchor" href="#apollo" aria-hidden="true">#</a> Apollo</h4>
|
||||
<blockquote>
|
||||
<p>携程开发的配置中心经典项目,可集成多语言客户端,实现灰度部署,在分布式微服务的场景下抽离出服务配置,方便统一管理、发布</p>
|
||||
</blockquote>
|
||||
<h4 id="consul" tabindex="-1"><a class="header-anchor" href="#consul" aria-hidden="true">#</a> Consul</h4>
|
||||
<blockquote>
|
||||
<p>服务注册、发现,key-value键值对管理</p>
|
||||
</blockquote>
|
||||
<h4 id="nacos" tabindex="-1"><a class="header-anchor" href="#nacos" aria-hidden="true">#</a> Nacos</h4>
|
||||
<blockquote>
|
||||
<p>背靠国内一线互联网大厂——阿里巴巴,也是可适用于微服务下的配置管理,支持Java、Nodejs等主流语言,目前生态良好,技术支持表现一般,属于Apollo替代产品</p>
|
||||
</blockquote>
|
||||
<h2 id="消息中间件" tabindex="-1"><a class="header-anchor" href="#消息中间件" aria-hidden="true">#</a> 消息中间件</h2>
|
||||
<blockquote>
|
||||
<p>消息队列已经逐渐成为企业IT系统内部通信的核心手段。具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。</p>
|
||||
<p>目前个人了解的有:RabbitMQ、Kafka、RocketMQ</p>
|
||||
</blockquote>
|
||||
<h4 id="rabbitmq" tabindex="-1"><a class="header-anchor" href="#rabbitmq" aria-hidden="true">#</a> RabbitMQ</h4>
|
||||
<h4 id="kafka" tabindex="-1"><a class="header-anchor" href="#kafka" aria-hidden="true">#</a> kafka</h4>
|
||||
<h4 id="rocketmq" tabindex="-1"><a class="header-anchor" href="#rocketmq" aria-hidden="true">#</a> RocketMQ</h4>
|
||||
<h2 id="rpc框架" tabindex="-1"><a class="header-anchor" href="#rpc框架" aria-hidden="true">#</a> RPC框架</h2>
|
||||
<h4 id="grpc" tabindex="-1"><a class="header-anchor" href="#grpc" aria-hidden="true">#</a> gRPC</h4>
|
||||
<blockquote>
|
||||
<p>gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,tensorflow分布式与tensorflow serving底层通信都是是用的grpc。我自己基于JavaScript技术栈上较多的接触到gRPC,传送门:<a href="">基于js下各框架grpc的使用</a></p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>
|
||||
<p>nodejs下grpc的简单实用</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>grpc集成express框架</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>grpc集成koa框架</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>eggjs框架下grpc的线上部署</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>grpc插件开发示例</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="dubbo" tabindex="-1"><a class="header-anchor" href="#dubbo" aria-hidden="true">#</a> Dubbo</h4>
|
||||
<blockquote>
|
||||
<p>Alibaba开发的一个RPC框架,远程接口基于Java Interface, 依托于Spring框架(<strong>Java技术栈重点研究</strong>)</p>
|
||||
</blockquote>
|
||||
<h4 id="thrift" tabindex="-1"><a class="header-anchor" href="#thrift" aria-hidden="true">#</a> Thrift</h4>
|
||||
<blockquote>
|
||||
<p>Apache的一个项目(http://thrift.apache.org),前身是Facebook开发的一个RPC框架,采用thrift作为IDL (Interface description language)。</p>
|
||||
</blockquote>
|
||||
<h2 id="elk日志管理平台" tabindex="-1"><a class="header-anchor" href="#elk日志管理平台" aria-hidden="true">#</a> Elk日志管理平台</h2>
|
||||
<blockquote>
|
||||
<p>全链路日志</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/elk/%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%B8%B8%E7%94%A8%E6%9E%B6%E6%9E%84%E6%95%B4%E7%90%86.html">ELK基础概念与常用架构整理</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="elasticsearch" tabindex="-1"><a class="header-anchor" href="#elasticsearch" aria-hidden="true">#</a> ElasticSearch</h4>
|
||||
<blockquote>
|
||||
<p>数据存储</p>
|
||||
</blockquote>
|
||||
<h4 id="logstash" tabindex="-1"><a class="header-anchor" href="#logstash" aria-hidden="true">#</a> Logstash</h4>
|
||||
<blockquote>
|
||||
<p>数据收集</p>
|
||||
</blockquote>
|
||||
<h4 id="kibana" tabindex="-1"><a class="header-anchor" href="#kibana" aria-hidden="true">#</a> Kibana</h4>
|
||||
<blockquote>
|
||||
<p>数据展示</p>
|
||||
</blockquote>
|
||||
<h2 id="监控工具" tabindex="-1"><a class="header-anchor" href="#监控工具" aria-hidden="true">#</a> 监控工具</h2>
|
||||
<blockquote>
|
||||
<p>参考笔者线上平台:http://view.142vip.cn/grafana 账号/密码:test/123456 基于docker部署,由于是个人学生服务器,站点访问延迟较高</p>
|
||||
<p>常用工具:promethus 、grafana、zabbix、lepus等</p>
|
||||
</blockquote>
|
||||
<h4 id="prometheus" tabindex="-1"><a class="header-anchor" href="#prometheus" aria-hidden="true">#</a> Prometheus</h4>
|
||||
<h4 id="grafana" tabindex="-1"><a class="header-anchor" href="#grafana" aria-hidden="true">#</a> Grafana</h4>
|
||||
<h4 id="zabbix" tabindex="-1"><a class="header-anchor" href="#zabbix" aria-hidden="true">#</a> Zabbix</h4>
|
||||
<h4 id="lepus-天兔" tabindex="-1"><a class="header-anchor" href="#lepus-天兔" aria-hidden="true">#</a> lepus(天兔)</h4>
|
||||
<h2 id="高可用架构" tabindex="-1"><a class="header-anchor" href="#高可用架构" aria-hidden="true">#</a> 高可用架构</h2>
|
||||
<h4 id="mysql集群" tabindex="-1"><a class="header-anchor" href="#mysql集群" aria-hidden="true">#</a> MySQL集群</h4>
|
||||
<h5 id="主从同步" tabindex="-1"><a class="header-anchor" href="#主从同步" aria-hidden="true">#</a> 主从同步</h5>
|
||||
<blockquote>
|
||||
<p>实现功能:主从服务器数据一致,低延迟、高并发</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Binlog主从复制</li>
|
||||
<li>GTID主从复制</li>
|
||||
<li>主主复制</li>
|
||||
</ul>
|
||||
<h5 id="代理中间件" tabindex="-1"><a class="header-anchor" href="#代理中间件" aria-hidden="true">#</a> 代理中间件</h5>
|
||||
<blockquote>
|
||||
<p>实现功能:读写分离、分库分表、负载均衡、故障切换</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Mycat</li>
|
||||
<li>360Atlas</li>
|
||||
</ul>
|
||||
<h4 id="集群监控" tabindex="-1"><a class="header-anchor" href="#集群监控" aria-hidden="true">#</a> 集群监控</h4>
|
||||
<blockquote>
|
||||
<p>实现功能:实时监控、可视化数据显示、故障报警</p>
|
||||
</blockquote>
|
||||
<h5 id="prometheus-1" tabindex="-1"><a class="header-anchor" href="#prometheus-1" aria-hidden="true">#</a> Prometheus</h5>
|
||||
<ul>
|
||||
<li>监控MySQL集群</li>
|
||||
<li>监控Mongo数据库</li>
|
||||
<li>监控Node服务</li>
|
||||
<li>监控linux服务器</li>
|
||||
<li>监控redis集群</li>
|
||||
</ul>
|
||||
<h5 id="grafana-1" tabindex="-1"><a class="header-anchor" href="#grafana-1" aria-hidden="true">#</a> Grafana</h5>
|
||||
<ul>
|
||||
<li>基本安装部署</li>
|
||||
<li>功能介绍和简单操作</li>
|
||||
<li>可视化数据图形显示界面</li>
|
||||
<li>常用模板</li>
|
||||
</ul>
|
||||
<h5 id="alter-manager" tabindex="-1"><a class="header-anchor" href="#alter-manager" aria-hidden="true">#</a> alter-manager</h5>
|
||||
<ul>
|
||||
<li>推送到邮箱</li>
|
||||
<li>推送到钉钉、微信机器人</li>
|
||||
<li>推送到自定义消息接口(webhook钩子)</li>
|
||||
</ul>
|
||||
<h4 id="压力测试" tabindex="-1"><a class="header-anchor" href="#压力测试" aria-hidden="true">#</a> 压力测试</h4>
|
||||
<ul>
|
||||
<li>jmeter</li>
|
||||
</ul>
|
||||
<h4 id="redis集群" tabindex="-1"><a class="header-anchor" href="#redis集群" aria-hidden="true">#</a> Redis集群</h4>
|
||||
<blockquote>
|
||||
<p>持续整理中...</p>
|
||||
</blockquote>
|
||||
<h5 id="简单主从模式" tabindex="-1"><a class="header-anchor" href="#简单主从模式" aria-hidden="true">#</a> 简单主从模式</h5>
|
||||
<h4 id="哨兵模式" tabindex="-1"><a class="header-anchor" href="#哨兵模式" aria-hidden="true">#</a> 哨兵模式</h4>
|
||||
<h5 id="cluster模式" tabindex="-1"><a class="header-anchor" href="#cluster模式" aria-hidden="true">#</a> cluster模式</h5>
|
||||
<h2 id="网站搭建" tabindex="-1"><a class="header-anchor" href="#网站搭建" aria-hidden="true">#</a> 网站搭建</h2>
|
||||
<blockquote>
|
||||
<p>从大二开始搭建个人网站:http://www.142vip.cn 起初非常简陋,工作之后计划进行第三版迭代,一直抽空佛系谢谢, 目前在重构中..</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>最初的梦想</li>
|
||||
<li>舍弃Java,我的重构之路</li>
|
||||
<li>网站正规化,Nginx配置SSL证书</li>
|
||||
<li>小小网站却耗费三台学生服务器?</li>
|
||||
</ul>
|
||||
<h2 id="书籍整理" tabindex="-1"><a class="header-anchor" href="#书籍整理" aria-hidden="true">#</a> 书籍整理</h2>
|
||||
<h3 id="技术类" tabindex="-1"><a class="header-anchor" href="#技术类" aria-hidden="true">#</a> 技术类</h3>
|
||||
<blockquote>
|
||||
<p>待整理</p>
|
||||
</blockquote>
|
||||
<h4 id="狼书-了不起的node-js" tabindex="-1"><a class="header-anchor" href="#狼书-了不起的node-js" aria-hidden="true">#</a> <RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/">狼书 - 了不起的Node.js</RouterLink></h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%B8%80%E7%AB%A0%20Node.js%E5%88%9D%E8%AF%86.html">第一章 Node.js初识</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20Nodejs%E5%AE%89%E8%A3%85%E4%B8%8E%E5%85%A5%E9%97%A8.html">第二章 Nodejs安装与入门</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%9B%B4%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js.html">第三章 更了不起的Node.js</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E6%9B%B4%E5%A5%BD%E7%9A%84Node.js.html">第四章 更好的Node.js</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%BA%94%E7%AB%A0%20Node.js%E6%98%AF%E5%A6%82%E4%BD%95%E6%89%A7%E8%A1%8C%E7%9A%84.html">第五章 Node.js是如何执行的</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E5%85%AD%E7%AB%A0%20%E6%A8%A1%E5%9D%97%E4%B8%8E%E6%A0%B8%E5%BF%83.html">第六章 模块与核心</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%B8%83%E7%AB%A0%20%E5%BC%82%E6%AD%A5%E5%86%99%E6%B3%95%E4%B8%8E%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6.html">第七章 异步写法与流程控制</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E5%85%A8%E9%83%A8%E7%AC%94%E8%AE%B0.html">全部笔记</RouterLink></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="es6标准入门——阮一峰" tabindex="-1"><a class="header-anchor" href="#es6标准入门——阮一峰" aria-hidden="true">#</a> <a href="">ES6标准入门——阮一峰</a></h4>
|
||||
<blockquote>
|
||||
<p>本书内容较多,很多基础细节都有说明,难度中等、适合入门,书中很多例子我也摘抄了很多,主要是我认为重要的,笔记按照自己学习逻辑整理的,请君慢用</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/ES6%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8/1.ECMAScript%206%20%E7%AE%80%E4%BB%8B.html">1.ECMAScript 6 简介</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/ES6%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8/2.let%E5%92%8Cconst%E7%9A%84%E5%91%BD%E4%BB%A4.html">2.let和const命令</RouterLink></li>
|
||||
<li><RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/ES6%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8/3.%E5%8F%98%E9%87%8F%E7%9A%84%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC.html">3.变量的解构赋值</RouterLink></li>
|
||||
<li><a href="">4.字符串详解</a></li>
|
||||
</ul>
|
||||
<h3 id="非技术类" tabindex="-1"><a class="header-anchor" href="#非技术类" aria-hidden="true">#</a> 非技术类</h3>
|
||||
<blockquote>
|
||||
<p>主要是跟计算机无关的一些书,在看完之后,会选择性的进行思维导图、经典词句整理,也可能添加个人思考</p>
|
||||
</blockquote>
|
||||
<h4 id="你好孤独-陈果" tabindex="-1"><a class="header-anchor" href="#你好孤独-陈果" aria-hidden="true">#</a> <RouterLink to="/category/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%A5%BD%E7%9A%84%E5%AD%A4%E7%8B%AC-%E9%99%88%E6%9E%9C/">你好孤独 - 陈果</RouterLink></h4>
|
||||
<h2 id="公众号汇总" tabindex="-1"><a class="header-anchor" href="#公众号汇总" aria-hidden="true">#</a> 公众号汇总</h2>
|
||||
<h3 id="_2020年" tabindex="-1"><a class="header-anchor" href="#_2020年" aria-hidden="true">#</a> 2020年</h3>
|
||||
<h4 id="_7月" tabindex="-1"><a class="header-anchor" href="#_7月" aria-hidden="true">#</a> 7月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483659&idx=1&sn=ac7b633a45ac06d388e0698163a2543e&chksm=fcdfb887cba8319151aedfa80c5b59d130838af81fe51c76e5c4926f82f4937b51c8c0c1470e&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-26】微信公众号我来了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483760&idx=1&sn=30a9fa2a051079c5330039615950c34d&chksm=fcdfb8fccba831ea64644be501ecca3cea5846f16367faed9c84b44a30d9b6dc30456dae6548&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-27】介绍一下,我在B站<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483762&idx=1&sn=e9ea759f1c1589881cc3bd9cabddb70a&chksm=fcdfb8fecba831e8c4635a4cefd302977071ed11a4dda6161cf9ad8458865297194f87cb013a&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-28】五年了,我终于换了人生中的第一台MacBookPro<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483770&idx=1&sn=6b760873a814f4e18baab415bee3d863&chksm=fcdfb8f6cba831e00802de653ff6723a0bb169a93fe3a6a9762ee62d75d8cd88409268db9047&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-29】工作中第一次被喷,我到底是如何应对的?<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483778&idx=1&sn=3d9f623c58d595f75d7092783a6c5abe&chksm=fcdfb80ecba83118e76de1ed88a5be51229e4145182aee6e0bcc13e4697707cf9f4609d8799d&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-31】CSDN关注100了,就这????<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_8月" tabindex="-1"><a class="header-anchor" href="#_8月" aria-hidden="true">#</a> 8月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483790&idx=1&sn=76e13ac79ad498309542c9f41878bb1c&chksm=fcdfb802cba8311456ea9ff3309c4354055022cd0056b13c11fac44252231550e17a03f26f29&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-08-01】旧友相见,甚是怀念<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483805&idx=1&sn=4da4e0d3a2912aee146248c1d8f7f96f&chksm=fcdfb811cba83107fd8f08d3e35af7c72bf7d908d577ad83e45d80b0e9d1bbdbf16b1f169d64&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-08-03】JavaScript基础介绍和快速入门<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_9月" tabindex="-1"><a class="header-anchor" href="#_9月" aria-hidden="true">#</a> 9月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484600&idx=1&sn=489aa1bd12487b0bf8f2a7694f4ca1aa&chksm=fcdfbd34cba83422f0afee027747d9e95773e093fa3a24225c2729029c4392bf42043964782f&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-01】Redis的简单安装和部署 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484600&idx=2&sn=a9962c6ca3a5eddd085bcd15617f64d9&chksm=fcdfbd34cba83422b987020a858b7cf31bfde6033642d697d5a00ad9ed618f3cf14deb207d67&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-01】就很像?? <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484702&idx=1&sn=6e3e862153755d9e61f5f4ebf220381d&chksm=fcdfbc92cba835844e8b6fd37d86a34ccf83342895f448c88ba5b62db974eb536a8e74a121aa&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-03】shell编程基础整理 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484702&idx=2&sn=c7589eecbe58ff8939f72c0ff0bf567d&chksm=fcdfbc92cba83584b03dfeea7290606ce8249b0c3105b0b3b95a9087c77e3b1c7f863d8e30f9&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-03】大学四年建站用过的云服务器都在这里了 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484711&idx=1&sn=bf362439ccfad04da53ce65c824a988d&chksm=fcdfbcabcba835bddc43c40fd3a454793adf7849a5d5bb356825d481b82ae3e58a749859502c&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-04】面试复盘和思考 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484759&idx=1&sn=e0f8a7a70ddede75d94b202ddc6106d6&chksm=fcdfbcdbcba835cd2138658d750f7e09a820b34daf4624f253a21a11b5de56635d35e4c0df19&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-06】朋友是“无用”的,不是你瞧不起我,就是我瞧不起你 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484759&idx=2&sn=ade86739c94f99f944a3d387bc7e13ef&chksm=fcdfbcdbcba835cd192c3b7b7eeea8f5dbb16b2b2fa58b6e2094184f5aa3341927a6d1fad6f8&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-06】GitHub简单使用 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484771&idx=1&sn=6ae4c6e8d333b0e1aa5cd1aee161d9b8&chksm=fcdfbcefcba835f94e3c0abc189477f241f675f38a63eb03bd320447e89da39cb08b72038ba3&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-07】MySQL日志类型把我难哭了,你学废了吗?<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484783&idx=1&sn=b9e82a2c2b04b7050d0659085af537ef&chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-11】向各位汇报这周状态,再也不敢鸽了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484783&idx=1&sn=b9e82a2c2b04b7050d0659085af537ef&chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-11】向各位汇报这周状态,再也不敢鸽了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484784&idx=1&sn=ae73f1f4e53b622039a75ec41cabe378&chksm=fcdfbcfccba835eafefe304913e4078cf8dfac22f62fd9d686b307bbdf46d147016f5e876e05&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-12】向各位汇报,再也不敢鸽了,人生处处有惊喜<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484815&idx=1&sn=10d26a600112ec4f95b3b3f470955744&chksm=fcdfbc03cba83515b07f0ae6cee791d1fb5fd619364cff3a17a4deab91333f0a6277b09a66a9&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-13】来来来,无厘头技术(水)文,各种尬。简简单单评价一下<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484815&idx=2&sn=94a6455ed6b17fa5b27e96358e935803&chksm=fcdfbc03cba83515d13dcfc2dea2445085a34ff4360e0a367fd914bb04bc6ba18a780a0cd2d2&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-13】基础Brew和Tree的安装实录<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484815&idx=3&sn=38a289efffda9510b5ff04c5bed0663e&chksm=fcdfbc03cba835154c888b9d7f86eac85c250eefb9d053687173274373f2f8d7b19fc307e76a&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-13】PM2进程管理,给我学!<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484823&idx=1&sn=d41bb8da02585cf9ea8d0b3ef27e3dbb&chksm=fcdfbc1bcba8350d84ba2f01eaf187cbaa2d4cf5a9078beb1f2fafe94edb0126c82595ed8191&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-14】数据结构,一定要学废了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484837&idx=1&sn=7f0de3eeea3fc6ee299587704f5c44cd&chksm=fcdfbc29cba8353fd894582da7ae2c93b5920c4dbb1e197b011a817dc0962e317842a32d5560&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-16】ELK基础概念与常用架构整理<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484850&idx=1&sn=7af55ef3a7d843d9c43de6d6c7911da3&chksm=fcdfbc3ecba835287b2c644cda606454a713d370fbd7d14714b22a04277f7a7784b96b8b277e&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-17】分享书上一段话,问一个问题<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484850&idx=2&sn=c59839c677d7c9652a09d1f8c70ef8d6&chksm=fcdfbc3ecba83528cf8271a2615129340a6f11954b6d9396160d0fb2c41593253d5e3510a031&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-17】看源码遇到的三个知识点,一个也没懂<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484865&idx=2&sn=63e6b669341217135013816464dd5bd9&chksm=fcdfbc4dcba8355b4de0f712047709425a35fa3b122378b31f0e4db3afb82dfd38872862aab4&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-20】express()函数整理<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484865&idx=1&sn=e39e3547da49f40e1b64deadf9a9cfef&chksm=fcdfbc4dcba8355bfa9c8b9531a463fc652b764064528dd6c243f47a157b20e017bad3f410f4&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-22】入秋了,安好<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484897&idx=1&sn=b1073522cfd3ce6ebbe85e85ad4e35e0&chksm=fcdfbc6dcba8357bdb212c9db1378a045d0dcfd95b79ed05688180f05d2b391f9b724d0d752f&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-22】Nginx安装详解,我服务器上也是这样的<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484897&idx=2&sn=34c61ed01c6522d2861be3342ec12ad5&chksm=fcdfbc6dcba8357b76eb0fe6c502d932def6cd232297b010f9b2f9a1fca35c38df77dacce7f2&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-22】被攻击的一天<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484929&idx=1&sn=394783dd2bfd65da24ae6dcb89d69ec6&chksm=fcdfbf8dcba8369b926b7083bbe3515aa5857f7589acc3f9d6d4987c67539a76dbd6e3cb70a1&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-26】跟父亲视频的一个半小时,聊到了我,也聊到了Ta<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_10月" tabindex="-1"><a class="header-anchor" href="#_10月" aria-hidden="true">#</a> 10月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484943&idx=1&sn=ad37db87dc40f381fd18cc828e492384&chksm=fcdfbf83cba8369598fc2773b63df235a9719b43749e7daab753c621fef5af4fba054dbb46ea&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-07】时间太快,溜了溜了,杭州见<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484951&idx=1&sn=edddf3d6c8f3fc6dd1d14063b536c732&chksm=fcdfbf9bcba8368d81ddffcbd258f7e4b7fb573d2a8963859e1b156e8a5f5d81f5629c49be6e&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-14】写不了代码就不写嘛<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484968&idx=1&sn=d37960ed81044fbf314440af85049d65&chksm=fcdfbfa4cba836b25082535910f7137d1513d834d54fbfadf48a433b29511ccf4d532f19b88a&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-18】我不行了,这号关注量男女7:3 还怎么相亲嘛?<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484988&idx=1&sn=947c487946fa3574d33e9c6861a1ee28&chksm=fcdfbfb0cba836a626d2efa904a5177c2e0916c381b26c89b6dcfc610a380b906d4480f7cc9b&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-26】悄悄接你下班,陪你回家<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_11月" tabindex="-1"><a class="header-anchor" href="#_11月" aria-hidden="true">#</a> 11月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485002&idx=1&sn=3760eba58f7ded433b71bec48b89a681&chksm=fcdfbfc6cba836d0b7db1f2aa5a4a884f68f8ce20a59aa44b4ac46c59eb4dd1c233079241a4a&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-01】11月,你好<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485042&idx=1&sn=181ae5062c31ee7931390607b6f10358&chksm=fcdfbffecba836e8275c849007470db6964f7cd675af59fe73c94369334d17d4840e8c0413d5&token=898438314&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-15】她来了她来了,她带着剪了三遍的视频来了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485053&idx=1&sn=ed2fe0de87b70781cdb7755ef4726340&chksm=fcdfbff1cba836e7165dc53722aaf96ef38d8f43cfadadcb4695d8ff430ea64619caada81cfa&token=1939941957&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-18】陪我一路的小姐姐,谢谢啦~ 我大意了呀,没有闪<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485066&idx=1&sn=1d357917f548a6d977af96c6582db527&chksm=fcdfbf06cba836103152f7a3fdfbf97c1be2472a84f824cbddd532c15aefe14c71b3b076233f&token=831506871&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-30】11月的尾巴,12月你好<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_12月" tabindex="-1"><a class="header-anchor" href="#_12月" aria-hidden="true">#</a> 12月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485080&idx=2&sn=bdc551f2e9bf54dc01881979339af8ad&chksm=fcdfbf14cba836022a05854547cbca03b5a08b912a0e0f195d4856d6b53ecd78aee2f167b515&token=1581389686&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-06】周末小记——忆旧友、吃火锅,也会感慨<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485100&idx=1&sn=e7c0c41229d51ebfab2939deb1751672&chksm=fcdfbf20cba836364da35ab5acfed076876aae486126bc1c41cdd2502cc89a41cbde7c645610&token=1054397108&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-10】上火、牙疼,也要砍程序媛一刀<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485136&idx=1&sn=4619fb835e6d57e106ab01116012662a&chksm=fcdfbf5ccba8364aecddf14d11ed8ba36f38050b83b30b8d46e10f86b164aab05322b8455b36&token=755050934&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-17】今晚不蹦迪,来聊一聊个人项目的接口返回<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485180&idx=1&sn=15ab9be3e15130103f26c919cbe0b605&chksm=fcdfbf70cba83666d287acc35485d02ddf67bacad6ea46d9ef04521f9f429fcb015d371c918e&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-20】事情,从英吉利海岸的那杯卡布奇诺美式咖啡说起<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id="_2021年" tabindex="-1"><a class="header-anchor" href="#_2021年" aria-hidden="true">#</a> 2021年</h3>
|
||||
<h4 id="_1月" tabindex="-1"><a class="header-anchor" href="#_1月" aria-hidden="true">#</a> 1月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485228&idx=1&sn=1c30866a209af2a5eb927fd7bd63cc8b&chksm=fcdfbea0cba837b6d4cf9865b72a6a1553c4d9b6a6cce369bb09f66730ab37ec649071e7ab7c&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-06】谁在看小王子呀~<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485249&idx=1&sn=dadf2a6dbed1879bbd98c62491436a9c&chksm=fcdfbecdcba837db5c11b8023ffa7ad6cf5a47c03027a0029604a50d0a77c75908efc05af39a&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-15】2020小结,没事就点点看看呗,反正小目标都没完成<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485258&idx=1&sn=fb71007a5feed8e18674be27b1c749ab&chksm=fcdfbec6cba837d099e90a5f45781ee8cac474388e25ad9383a4fbc05fdb16a8e1377265c018&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-17】搞波大的,浅谈深拷贝——文末有彩蛋<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485277&idx=1&sn=9eb7c3cef21ace2cc5853e382f2bb03f&chksm=fcdfbed1cba837c7839f3b57836f43b3425c8b5a7888f543bf4a1dd8b39cd82ed7d51a24a685&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-18】到底该如何发布Npm插件,常用指令在这里<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485291&idx=1&sn=19f13df8131a9f662973f2d9240c1eab&chksm=fcdfbee7cba837f180d8ad30735cd61e6c73fe195e63d46046bb24f80e1536aa0a585c3e1015&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-20】好用的AntDocs,也来学着用一下,基本过程整理<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485318&idx=1&sn=6ae5fc9f1cf994818ff89d53a926761e&chksm=fcdfbe0acba8371c9d0025008084857cf14c52b01dfb1b9460d3388ba543c36da2abcbf90216&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-27】【持续更新】从查找算法开始数据结构入门,大家都在掘金等你<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485341&idx=1&sn=fc493c28ab138056567e916b769ddbf2&chksm=fcdfbe11cba8370793e8e0d71e7766f4e1e7f3e8672921d6b98757f7d7b271b290f3edc65d6f&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-30】ORM框架入门之Sequelize,我快翻译不动了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_2月" tabindex="-1"><a class="header-anchor" href="#_2月" aria-hidden="true">#</a> 2月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485376&idx=1&sn=049a5df5cb97786e80aded38a1bf3732&chksm=fcdfbe4ccba8375a52cb8d7077836216e5f5f41ee9453aebf524eb0a5d8a5db48cbabc11f3e4&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-02-07】被妹妹支配的一周,晚上差点连家都回不去..<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485404&idx=1&sn=276100858df23daf987dbc68997477df&chksm=fcdfbe50cba837460079fc9ab414754a49668f82dc0f6a5a41ec320d3e5dd77c1a8c271e061b&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-02-11】【新年快乐】程序员的2020,就这样悄咪咪地溜走了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485420&idx=1&sn=26c0e3690363af5dddd805ae417eeee9&chksm=fcdfbe60cba8377645e44333ccbe35147b9844578008e5699aba62b82c12fc03634e2d68781c&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-02-13】抢红包、拼手气来啦,之前答应的抽奖变成新年红包啦~<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="赞赏支持" tabindex="-1"><a class="header-anchor" href="#赞赏支持" aria-hidden="true">#</a> 赞赏支持</h2>
|
||||
<blockquote>
|
||||
<p>相逢不用忙归去,明日黄花蝶也愁;若系列文章对你有帮助,不如请作者喝一杯伏见桃山...</p>
|
||||
<p><strong>赞赏过的一定要扫下方右侧微信跟我说呀!!!!!!</strong></p>
|
||||
</blockquote>
|
||||
<p><a name="wechat"></a></p>
|
||||
<div align="left">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/weChatDonate.jpg" width="300" height="300" style="border-radius:10px;" />
|
||||
</div>
|
||||
<h2 id="联系我" tabindex="-1"><a class="header-anchor" href="#联系我" aria-hidden="true">#</a> 联系我</h2>
|
||||
<blockquote>
|
||||
<p>对仓库有任何问题或建议,欢迎微信“骚扰”,商务合作请备注!</p>
|
||||
</blockquote>
|
||||
<div align="left">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/wechat.jpg" width="300" height="300" style="border-radius:10px;"/>
|
||||
</div>
|
||||
<h2 id="鸣谢" tabindex="-1"><a class="header-anchor" href="#鸣谢" aria-hidden="true">#</a> 鸣谢</h2>
|
||||
<p>以下排名不分先后!(<a href="">详细统计</a>)</p>
|
||||
<div>
|
||||
<a href="https://github.com/ChiefPing" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/34122068?s=460&v=4" width="50px" style="brder-radius:5px;"/>
|
||||
</a> <a href="https://github.com/xiaoliuxin" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/60652527?s=460&v=4" style="border-radius:5px;" width="50px"/>
|
||||
</a>
|
||||
</div>
|
||||
<h2 id="赞助列表" tabindex="-1"><a class="header-anchor" href="#赞助列表" aria-hidden="true">#</a> 赞助列表</h2>
|
||||
<p>以下排名不分先后!</p>
|
||||
<h2 id="公众号" tabindex="-1"><a class="header-anchor" href="#公众号" aria-hidden="true">#</a> 公众号</h2>
|
||||
<p>如果大家想要实时关注我更新的文章以及我的日常的话,可以关注我的公众号,基本每天都会更新技术和各种吹水文章,就当做是记录心情、成长的地方吧</p>
|
||||
<p><a name="gzh"></a></p>
|
||||
<div>
|
||||
<img src="https://cdn.142vip.cn/gzh.png" style="border-radius:10px;">
|
||||
</div></template>
|
||||
@@ -1,76 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-7e68f740",
|
||||
"path": "/pages/bdad06/",
|
||||
"title": "更新日志",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "更新日志",
|
||||
"sidebarDepth": 0,
|
||||
"date": "2021-02-14T20:52:54.000Z",
|
||||
"permalink": "/pages/bdad06/",
|
||||
"categories": [
|
||||
"category"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "基本说明",
|
||||
"slug": "基本说明",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "提交记录",
|
||||
"slug": "提交记录",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "版本记录",
|
||||
"slug": "版本记录",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "0.1.2",
|
||||
"slug": "_0-1-2",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "0.1.1",
|
||||
"slug": "_0-1-1",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "category/update_logs.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-02-14 20:52:54
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-02-14 22:37:05
|
||||
-->
|
||||
<h1 id="" tabindex="-1"><a class="header-anchor" href="#" aria-hidden="true">#</a> </h1>
|
||||
<h2 id="基本说明" tabindex="-1"><a class="header-anchor" href="#基本说明" aria-hidden="true">#</a> 基本说明</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a-tag color="green">优化</a-tag>表示优化、已完成、可正式使用状态。
|
||||
</li>
|
||||
<li>
|
||||
<a-tag color="purple">紫色</a-tag>表示修复、可测试状态。
|
||||
</li>
|
||||
<li>
|
||||
<a-tag color="red">红色</a-tag>红色表示出现异常、告警、错误状态。
|
||||
</li>
|
||||
<li>
|
||||
<a-tag color="orange">橙色</a-tag>表示新增、正在进行、默认状态。
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="提交记录" tabindex="-1"><a class="header-anchor" href="#提交记录" aria-hidden="true">#</a> 提交记录</h2>
|
||||
<p>以下为个人Github账号<strong>Rong姐姐好可爱</strong>所有仓库代码提交记录</p>
|
||||
<p><img src="https://ghchart.rshah.org/mmdapl" alt=""></p>
|
||||
<h2 id="版本记录" tabindex="-1"><a class="header-anchor" href="#版本记录" aria-hidden="true">#</a> 版本记录</h2>
|
||||
<h3 id="_0-1-2" tabindex="-1"><a class="header-anchor" href="#_0-1-2" aria-hidden="true">#</a> 0.1.2</h3>
|
||||
<p><strong>2020-11-01</strong></p>
|
||||
<ul>
|
||||
<li>Egg.js框架基础整理完成</li>
|
||||
<li>基于VuePress进行md文档修订,规整文档样式及模板</li>
|
||||
</ul>
|
||||
<h3 id="_0-1-1" tabindex="-1"><a class="header-anchor" href="#_0-1-1" aria-hidden="true">#</a> 0.1.1</h3>
|
||||
<p><strong>2020-10-09</strong></p>
|
||||
<ul>
|
||||
<li>
|
||||
<a-tag color="red">2332</a-tag>第一篇egg相关文档
|
||||
</li>
|
||||
<li>初次接触VuePress</li>
|
||||
</ul>
|
||||
</template>
|
||||
@@ -1,50 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-599b7814",
|
||||
"path": "/pages/c12319/",
|
||||
"title": "Readme",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "Readme",
|
||||
"date": "2021-03-08T10:09:25.000Z",
|
||||
"permalink": "/pages/c12319/",
|
||||
"categories": [
|
||||
"ComputerComposePrinciple"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "当前状态",
|
||||
"slug": "当前状态",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "CCP/Readme.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-08 10:09:25
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-08 10:09:52
|
||||
-->
|
||||
<h2 id="当前状态" tabindex="-1"><a class="header-anchor" href="#当前状态" aria-hidden="true">#</a> 当前状态</h2>
|
||||
<p>doing</p>
|
||||
</template>
|
||||
@@ -1,220 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-5c57558c",
|
||||
"path": "/pages/c1bec1/",
|
||||
"title": "",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": null,
|
||||
"date": "2021-03-07T23:04:24.000Z",
|
||||
"permalink": "/pages/c1bec1/",
|
||||
"categories": [
|
||||
"DataStructure"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "写最前面",
|
||||
"slug": "写最前面",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "关于作者",
|
||||
"slug": "关于作者",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "思维导图",
|
||||
"slug": "思维导图",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "日常推荐",
|
||||
"slug": "日常推荐",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "前端",
|
||||
"slug": "前端",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "",
|
||||
"slug": "-1",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "后端【Node】",
|
||||
"slug": "后端【node】",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "算法",
|
||||
"slug": "算法",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "数据库",
|
||||
"slug": "数据库",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "服务部署",
|
||||
"slug": "服务部署",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "服务网关",
|
||||
"slug": "服务网关",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "服务注册",
|
||||
"slug": "服务注册",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "消息中间件",
|
||||
"slug": "消息中间件",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "RPC框架",
|
||||
"slug": "rpc框架",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "Elk日志管理平台",
|
||||
"slug": "elk日志管理平台",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "监控工具",
|
||||
"slug": "监控工具",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "高可用架构",
|
||||
"slug": "高可用架构",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "网站搭建",
|
||||
"slug": "网站搭建",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "书籍整理",
|
||||
"slug": "书籍整理",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "技术类",
|
||||
"slug": "技术类",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "非技术类",
|
||||
"slug": "非技术类",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "公众号汇总",
|
||||
"slug": "公众号汇总",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "2020年",
|
||||
"slug": "_2020年",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "2021年",
|
||||
"slug": "_2021年",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "赞赏支持",
|
||||
"slug": "赞赏支持",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "联系我",
|
||||
"slug": "联系我",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "鸣谢",
|
||||
"slug": "鸣谢",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "赞助列表",
|
||||
"slug": "赞助列表",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "公众号",
|
||||
"slug": "公众号",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/README11.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,839 +0,0 @@
|
||||
<template><h1 id="" tabindex="-1"><a class="header-anchor" href="#" aria-hidden="true">#</a> </h1>
|
||||
<p align="center">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/image-20200605224832237.png">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="#gzh" target="_blank"><img src="https://img.shields.io/badge/WeChat-公众号-5wd.svg"></a>
|
||||
<a href="#wechat" target="_blank"><img src="https://img.shields.io/badge/WeChat-微信-yellow.svg"></a>
|
||||
<a href="https://space.bilibili.com/350937042" target="_blank"><img src="https://img.shields.io/badge/Bilibili-哔哩哔哩-green.svg"></a>
|
||||
<a href="https://142vip.cn" target="_blank"><img src="https://img.shields.io/badge/142vip-网站-orange.svg"></a>
|
||||
<a href="https://blog.142vip.cn" target="_blank"><img src="https://img.shields.io/badge/blog-博客-blue.svg"></a>
|
||||
<a href="https://github.com/mmdapl" target="_blank"><img src="https://img.shields.io/badge/github-Github-9ac.svg"></a>
|
||||
<a href="https://gitee.com/mmdapl" target="_blank"><img src="https://img.shields.io/badge/gitee-码云-4ed.svg"></a>
|
||||
<a href="https://blog.csdn.net/Mmdapl" target="_blank"><img src="https://img.shields.io/badge/csdn-CSDN-8ea.svg"></a>
|
||||
<a href="https://juejin.im/user/448256476724807" target="_blank"><img src="https://img.shields.io/badge/JueJin-掘金-75c.svg"></a>
|
||||
</p>
|
||||
<div align="center" style="font-size:20px">
|
||||
<a href="https://gitee.com/mmdapl/JavaScriptCollection" target="_blank">码云版</a>
|
||||
<!-- ||
|
||||
<a href="readme-wechat.md" target="_blank">微信版</a> -->
|
||||
</div>
|
||||
<h2 id="写最前面" tabindex="-1"><a class="header-anchor" href="#写最前面" aria-hidden="true">#</a> 写最前面</h2>
|
||||
<blockquote>
|
||||
<p>这里是日常工作、学习、生活中总结的各类文章笔记,主要涉及开发技术总结记录,偶尔也会感慨万千,水一些无关技术的文章;若发现博客外链不能访问则可能博客设置修改过,请直接访问博客;所有内容会选择性的发表于<strong>微信公众号、个人博客、掘金、CSDN ,实际内容以本仓库排版、校对为主。</strong> 也会不定时同步到 <strong>码云</strong> 。
|
||||
<strong>以下内容没有链接的代表尚未完成,大家善用快捷键Ctrl+F</strong></p>
|
||||
<p>创建时间:2020年2月14日</p>
|
||||
</blockquote>
|
||||
<h2 id="关于作者" tabindex="-1"><a class="header-anchor" href="#关于作者" aria-hidden="true">#</a> 关于作者</h2>
|
||||
<ul>
|
||||
<li><img src="https://cdn.142vip.cn/article-notes/img/original.png" width="36" height="26" align="left" /><a href="http://blog.142vip.cn/s/projects" target="_blank" rel="noopener noreferrer">个人项目整理<ExternalLinkIcon/></a></li>
|
||||
<li><img src="https://cdn.142vip.cn/article-notes/img/original.png" width="36" height="26" align="left" /><a href="">自我介绍</a></li>
|
||||
</ul>
|
||||
<h2 id="思维导图" tabindex="-1"><a class="header-anchor" href="#思维导图" aria-hidden="true">#</a> 思维导图</h2>
|
||||
<blockquote>
|
||||
<p>内容同步与文档,可以结合思维导图对文档进行有效学习.相关目录的xmind文件为思维导图原文件</p>
|
||||
</blockquote>
|
||||
<h2 id="日常推荐" tabindex="-1"><a class="header-anchor" href="#日常推荐" aria-hidden="true">#</a> 日常推荐</h2>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/recommend/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8E%A8%E8%8D%90.html">云服务器推荐</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/recommend/%E5%AD%A6%E4%B9%A0%E7%BD%91%E7%AB%99%E3%80%81%E6%95%88%E7%8E%87%E5%B7%A5%E5%85%B7.html">学习网站、使用工具</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/recommend/%E5%80%BC%E5%BE%97%E7%BB%86%E8%AF%BB%E7%9A%84%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0%E6%8E%A8%E8%8D%90.html">值得细读的技术文章推荐</RouterLink></li>
|
||||
</ul>
|
||||
<h1 id="文章笔记" tabindex="-1"><a class="header-anchor" href="#文章笔记" aria-hidden="true">#</a> 文章笔记</h1>
|
||||
<p><strong>注:无高亮有效访问链接的待完成/同步</strong></p>
|
||||
<h2 id="前端" tabindex="-1"><a class="header-anchor" href="#前端" aria-hidden="true">#</a> 前端</h2>
|
||||
<blockquote>
|
||||
<p>前端技术百花齐放、层出不穷,个人认为要注重广度,学会看官方文档熟练操作即可;</p>
|
||||
</blockquote>
|
||||
<h4 id="css" tabindex="-1"><a class="header-anchor" href="#css" aria-hidden="true">#</a> CSS</h4>
|
||||
<blockquote>
|
||||
<p>依赖W3CSchool文档和日常整理,主要是对CSS常用操作和基础属性进行整理总结。不会过多深入</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/css/CSS%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.html">CSS开发规范</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>样式属性</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>页面布局</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>移动端适配</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="基础教程" tabindex="-1"><a class="header-anchor" href="#基础教程" aria-hidden="true">#</a> <a href="docs/css/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B">基础教程</a></h5>
|
||||
<h2 id="-1" tabindex="-1"><a class="header-anchor" href="#-1" aria-hidden="true">#</a> </h2>
|
||||
<h4 id="javascript" tabindex="-1"><a class="header-anchor" href="#javascript" aria-hidden="true">#</a> JavaScript</h4>
|
||||
<blockquote>
|
||||
<p><strong>本级目录下的JavaScript内容没有发表到<a href="http://blog.142vip.cn" target="_blank" rel="noopener noreferrer">博客<ExternalLinkIcon/></a>上,建议对照<RouterLink to="/DS/docs/javascript/">脑图</RouterLink>在<a href="javascript">JavaScript主目录</a>下学习</strong>,依赖官方文档及自身对JavaScript语言的初步了解,进行的关于JavaScript知识整理,主要目的是复习基础概念、了解新特性、熟练ES6/7操作;整体相对来说由易到难,方便后续查阅学习~</p>
|
||||
</blockquote>
|
||||
<h5 id="快速入门" tabindex="-1"><a class="header-anchor" href="#快速入门" aria-hidden="true">#</a> 快速入门</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/javascript%E7%AE%80%E5%8D%95%E4%BB%8B%E7%BB%8D.html">简单介绍</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8/javascript%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8.html">快速了解</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/JavaScript%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.html">JavasScript开发规范</RouterLink></li>
|
||||
</ul>
|
||||
<h5 id="基础教程-1" tabindex="-1"><a class="header-anchor" href="#基础教程-1" aria-hidden="true">#</a> 基础教程</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E8%AF%AD%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.html">语法与数据结构</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E5%BE%AA%E7%8E%AF%E4%B8%8E%E8%BF%AD%E4%BB%A3.html">循环与迭代</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6%E4%B8%8E%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.html">流程控制与错误处理</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6.html">表达式和运算符</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E5%87%BD%E6%95%B0.html">函数和方法</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E6%95%B0%E5%AD%97%E5%92%8C%E6%97%A5%E6%9C%9F.html">数字和日期</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%BD%BF%E7%94%A8.html">对象的使用</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/javascript%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.html">正则表达式</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/promise%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%BD%BF%E7%94%A8.html">promise对象的使用</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/modules%E6%A8%A1%E5%9D%97.html">modules模块</RouterLink></li>
|
||||
</ul>
|
||||
<h5 id="中级教程" tabindex="-1"><a class="header-anchor" href="#中级教程" aria-hidden="true">#</a> 中级教程</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E4%B8%AD%E7%BA%A7%E6%95%99%E7%A8%8B/promise%E5%AF%B9%E8%B1%A1.html">Promise对象</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E4%B8%AD%E7%BA%A7%E6%95%99%E7%A8%8B/async%E5%87%BD%E6%95%B0.html">async函数</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E4%B8%AD%E7%BA%A7%E6%95%99%E7%A8%8B/class%E7%B1%BB.html">class类</RouterLink></li>
|
||||
</ul>
|
||||
<h5 id="高级教程" tabindex="-1"><a class="header-anchor" href="#高级教程" aria-hidden="true">#</a> 高级教程</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/javascript/%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B/%E4%B8%8D%E4%B8%80%E6%A0%B7%E7%9A%84ajax.html">不一样的ajax</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/javascript/%E9%AB%98%E7%BA%A7%E6%95%99%E7%A8%8B/%E4%BB%80%E4%B9%88%E6%98%AF%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF.html">什么是事件循环</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="">JSON.stringify()的三个参数</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="最后稻草" tabindex="-1"><a class="header-anchor" href="#最后稻草" aria-hidden="true">#</a> 最后稻草</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/ES6%E3%80%81ES7%E3%80%81ES8%E3%80%81ES9%E3%80%81ES10%E7%9A%84%E6%96%B0%E7%89%B9%E6%80%A7.html">ES6、ES7、ES8、ES9、ES10的新特性</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/ES2020%E6%96%B0%E7%89%B9%E6%80%A7.html">ES2020新特性</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/JavaScript%E5%B7%A5%E5%85%B7%E5%87%BD%E6%95%B0%E5%A4%A7%E5%85%A8.html">JavaScript 工具函数大全</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/javascript/%E6%9C%80%E5%90%8E%E7%A8%BB%E8%8D%89/%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E6%96%B9%E6%B3%95%E6%95%B4%E7%90%86.html">常用函数方法整理</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="jquery" tabindex="-1"><a class="header-anchor" href="#jquery" aria-hidden="true">#</a> JQuery</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/jquery/%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8.html">安装使用</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/jquery/%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7.html">基本属性</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Css样式</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>选择器</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>文档处理</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>筛选</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>事件</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>效果</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>事件对象</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>延迟对象</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>回调函数</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>其他整理</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="vuejs" tabindex="-1"><a class="header-anchor" href="#vuejs" aria-hidden="true">#</a> Vuejs</h4>
|
||||
<blockquote>
|
||||
<p>介绍基础、常用的vue功能,不会很深入的涉及到vue源码及原理</p>
|
||||
</blockquote>
|
||||
<h4 id="react" tabindex="-1"><a class="header-anchor" href="#react" aria-hidden="true">#</a> React</h4>
|
||||
<h4 id="nuxtjs" tabindex="-1"><a class="header-anchor" href="#nuxtjs" aria-hidden="true">#</a> Nuxtjs</h4>
|
||||
<blockquote>
|
||||
<p>Nuxtjs是在vue框架上进行封装的,主要是用来解决单体页面的服务端渲染问题,提供网站进行SEO优化的可能</p>
|
||||
</blockquote>
|
||||
<p><a href="">前端读写cookie</a></p>
|
||||
<h4 id="ui框架" tabindex="-1"><a class="header-anchor" href="#ui框架" aria-hidden="true">#</a> UI框架</h4>
|
||||
<blockquote>
|
||||
<p>市面上前端框架层出不穷,不同的技术栈依赖的UI框架也不尽相同,这里将会依据笔者使用的UI框架,以线上项目展示的方式,介绍用过的框架;</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Bootstrap</li>
|
||||
<li>LayerUI</li>
|
||||
<li>Ant-design-vue</li>
|
||||
<li>iView-UI</li>
|
||||
<li>VantUI</li>
|
||||
<li>Element-UI</li>
|
||||
</ul>
|
||||
<h2 id="后端【node】" tabindex="-1"><a class="header-anchor" href="#后端【node】" aria-hidden="true">#</a> 后端【Node】</h2>
|
||||
<blockquote>
|
||||
<p>相比前端,作为偏后端的开发者, 后端技术的学习则需要稳扎稳打、不断积累整理,在会用、能用、熟练的基础上,更应该学习其中的原理;所以若你为后端开发者,不论Java、Nodejs、Go等技术栈,对待下面将提及的微服务架构、容器技术、服务治理、高可用等都需要努力学习,抓住重点;</p>
|
||||
<p>在面试面前,能力是不会说谎的,打铁还需自身硬,加油~</p>
|
||||
</blockquote>
|
||||
<h4 id="express框架" tabindex="-1"><a class="header-anchor" href="#express框架" aria-hidden="true">#</a> Express框架</h4>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/express/%E6%A1%86%E6%9E%B6%E4%BB%8B%E7%BB%8D.html">框架概念简介</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/express/brew%E5%92%8Ctree%E7%9A%84%E5%AE%89%E8%A3%85.html">brew和tree的安装</RouterLink></li>
|
||||
<li>搭建express基础项目</li>
|
||||
<li>安装</li>
|
||||
<li>路由</li>
|
||||
<li>静态文件</li>
|
||||
<li>中间件</li>
|
||||
<li>统一错误处理</li>
|
||||
<li><RouterLink to="/DS/docs/express/express()%E5%87%BD%E6%95%B0.html">express()函数</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/express/application%E5%AF%B9%E8%B1%A1%E8%AF%A6%E8%A7%A3.html">application对象详解</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/express/request%E5%AF%B9%E8%B1%A1.html">request对象</RouterLink></li>
|
||||
<li><a href="">respon对象</a></li>
|
||||
<li><a href="">router对象</a></li>
|
||||
<li>数据库集成</li>
|
||||
<li>MVC分层</li>
|
||||
<li><RouterLink to="/DS/docs/express/pm2%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86.html">pm2进程管理</RouterLink></li>
|
||||
<li>分环境部署上线</li>
|
||||
</ul>
|
||||
<h4 id="koa框架" tabindex="-1"><a class="header-anchor" href="#koa框架" aria-hidden="true">#</a> Koa框架</h4>
|
||||
<ul>
|
||||
<li>koa介绍</li>
|
||||
<li>手把手搭建第一个koa项目</li>
|
||||
<li>应用(Application)</li>
|
||||
<li>中间件(Middleware)</li>
|
||||
<li>上下文(Context)</li>
|
||||
<li>请求(Request)</li>
|
||||
<li>响应(Response)</li>
|
||||
</ul>
|
||||
<h4 id="eggjs框架" tabindex="-1"><a class="header-anchor" href="#eggjs框架" aria-hidden="true">#</a> Eggjs框架</h4>
|
||||
<h5 id="基础篇" tabindex="-1"><a class="header-anchor" href="#基础篇" aria-hidden="true">#</a> 基础篇</h5>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-README.html">第一部分:Git概述</RouterLink></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-download.html">1.1 下载和安装</RouterLink>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-config.html">1.2 基本配置</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-dns.html">1.3 常用命令</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-github.html">1.4 GitHub简单使用</RouterLink></li>
|
||||
<li><a href="https://mp.weixin.qq.com/s/Wn_IZ6K4eqh1PtomRtqdqg" target="_blank" rel="noopener noreferrer">1.5 GitBook简单使用<ExternalLinkIcon/></a>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-typora.html">1.5.1 Typora简介</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-markdown.html">1.5.2 MarkDown语法</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-choice.html">1.6 码云和GitHub的选择</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/mysql-README.html">第二部分:数据库概述</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/mysql-download.html">2.1 下载和安装</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/git-connect.html">2.2 连接数据库</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/mysql-curd.html">2.3 CURD操作</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/mysql-redis.html">2.4 Redis缓存</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/mysql-redis-install.html">2.4.1 redis安装</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/mysql-redis-dns.html">2.4.2 redis常用指令</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/mysql-redis-view.html">2.5 可视化管理</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="入门篇" tabindex="-1"><a class="header-anchor" href="#入门篇" aria-hidden="true">#</a> 入门篇</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/egg-README.html">第一部分:Egg框架快速入门</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/egg-base.html">1.1 基础功能</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-request-params.html">1.1.1 接口参数获取</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-object.html">1.1.2 Egg内置对象 </RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-config.html">1.1.3 Config配置</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-life.html">1.1.4 Egg生命周期</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-middleware.html">1.1.5 中间件理解</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-router.html">1.1.6 Router路由分发</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-controller.html">1.1.7 Controller控制器</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-service.html">1.1.8 Service服务</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-plugin.html">1.1.9 常用插件</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/egg-core.html">1.2 核心功能</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-logger.html">1.2.1 日志输出</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-schedule.html">1.2.2 定时任务</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-httpclient.html">1.2.2 HttpClient网络请求</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-cookies.html">1.2.3 Cookie的基本使用</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-session.html">1.2.4 Session的基本使用</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-try-catch.html">1.2.5 统一异常-错误处理</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-csrf-xss.html">1.2.6 CSRF防范和XSS攻击</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/egg-restful.html">1.2.7 RESTful API接口风格</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/plugin-README.html">第二部分:插件开发</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/plugin-egg-validate.html">2.1 egg-validate参数校验</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/plugin-egg-view.ejs.html">2.2 egg-view-ejs页面渲染</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/plugin-egg-redis.html">2.3 egg-redis缓存</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/plugin-egg-mysql.html">2.4 egg-mysql</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/plugin-egg-sequelize.html">2.5 egg-sequelize</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/plugin-egg-socket.io.html">2.6 egg-socket.io即时通讯</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h5 id="代码实战篇" tabindex="-1"><a class="header-anchor" href="#代码实战篇" aria-hidden="true">#</a> 代码实战篇</h5>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/project-README-CODE.html">第一部分:常用代码</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-images-cropper.html">1.1 图片前端在线剪辑</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-upload.html">1.2 文件上传后台处理</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-md5.html">1.3 MD5加密-解密算法</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-token.html">1.4 Egg Jwt加密和校验</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/project-README-INTRODUCE.html">第二部分:项目简介</RouterLink></p>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-ssoCenterSystem.html">2.1 基于OAuth2的统一认证中心系统</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-pagenation.html">2.2 常用前后端分页比较与实现</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-spring-boot-blog.html">2.3基于Spring Boot实现的个人博客</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-webapi.html">2.4 基于Yapi搭建的接口管理系统</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-gitbook.html">2.5 GitBook开源笔记总结站点搭建</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/eggjs/project-142vip.cn.html">2.6 个人网站及接口服务搭建搭建</RouterLink></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/eggjs/egg-egg-example.html">第三部分:手把手搭建基础Egg开发框架</RouterLink></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="nestjs框架" tabindex="-1"><a class="header-anchor" href="#nestjs框架" aria-hidden="true">#</a> Nestjs框架</h4>
|
||||
<blockquote>
|
||||
<p>Nestjs框架推崇typescript语法,并且友好的兼容express框架,因此在学习Nestjs框架之前,请务必先熟悉express框架相关操作并进行typescript入门;在一定程度上typescript和面向对象语言Java、Net等很相似,如果你之前有JavaScript和Java的基础,那么应该恭喜你,你的学习速度将会倍速提高</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/nestjs/nestjs%E6%A0%B8%E5%BF%83%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5.html">核心基础概念</RouterLink></li>
|
||||
<li><RouterLink to="/DS/nestjs/nestjs%E9%A1%B9%E7%9B%AE%E5%88%9B%E5%BB%BA%E5%88%9D%E5%A7%8B%E5%8C%96%E5%85%A5%E9%97%A8.html">项目创建初始化入门</RouterLink></li>
|
||||
<li><RouterLink to="/DS/nestjs/nestjs%E6%95%B4%E5%90%88swagger%E5%BF%AB%E9%80%9F%E7%94%9F%E6%88%90api%E6%96%87%E6%A1%A3.html">整合swagger快速生成api文档</RouterLink></li>
|
||||
<li><RouterLink to="/DS/nestjs/nestjs%E6%8E%A5%E5%8F%A3%E8%B7%AF%E7%94%B1%E8%AF%B7%E6%B1%82%E4%BC%A0%E5%8F%82.html">接口路由请求传参</RouterLink></li>
|
||||
</ul>
|
||||
<h2 id="算法" tabindex="-1"><a class="header-anchor" href="#算法" aria-hidden="true">#</a> 算法</h2>
|
||||
<ul>
|
||||
<li>算法分析</li>
|
||||
</ul>
|
||||
<h4 id="查找" tabindex="-1"><a class="header-anchor" href="#查找" aria-hidden="true">#</a> 查找</h4>
|
||||
<ul>
|
||||
<li>顺序查找</li>
|
||||
<li>折半查找</li>
|
||||
<li>分块查找</li>
|
||||
<li>B树和B+树</li>
|
||||
<li>散列(Hash)表</li>
|
||||
<li>字符串模式匹配(KPM)</li>
|
||||
</ul>
|
||||
<h4 id="排序" tabindex="-1"><a class="header-anchor" href="#排序" aria-hidden="true">#</a> 排序</h4>
|
||||
<ul>
|
||||
<li>插入排序</li>
|
||||
<li>交换排序</li>
|
||||
<li>选择排序</li>
|
||||
<li>归并排序</li>
|
||||
<li>基数排序</li>
|
||||
<li>内部排序比较</li>
|
||||
<li>外部排序比较</li>
|
||||
</ul>
|
||||
<h4 id="leetcode刷题" tabindex="-1"><a class="header-anchor" href="#leetcode刷题" aria-hidden="true">#</a> LeetCode刷题</h4>
|
||||
<h2 id="数据库" tabindex="-1"><a class="header-anchor" href="#数据库" aria-hidden="true">#</a> 数据库</h2>
|
||||
<blockquote>
|
||||
<p>主讲数据库基础知识,结合node的简单使用,相关的部署方案参照下方的文档</p>
|
||||
</blockquote>
|
||||
<h4 id="mysql" tabindex="-1"><a class="header-anchor" href="#mysql" aria-hidden="true">#</a> MySQL</h4>
|
||||
<ul>
|
||||
<li><a href="https://mp.weixin.qq.com/s/U1OUZYHEChFDx03FvgbMHA" target="_blank" rel="noopener noreferrer">【服务器版】MySQL的安装部署<ExternalLinkIcon/></a></li>
|
||||
<li><RouterLink to="/DS/docs/mysql/MySQL%E4%BC%98%E5%8C%96%E4%B9%8BExplain%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E.html">MySQL优化之Explain参数说明</RouterLink></li>
|
||||
<li>索引</li>
|
||||
<li>sql优化</li>
|
||||
<li><RouterLink to="/DS/docs/mysql/%E5%9F%BA%E4%BA%8EGTID%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6%E7%9A%84%E5%8E%9F%E7%90%86%E5%92%8C%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE.html">基于GTID主从复制的原理和基础配置</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/mysql/mysql%E6%97%A5%E5%BF%97%E6%AF%94%E8%BE%83.html">MySQL日志类型把我难哭了,你学废了吗?</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="redis" tabindex="-1"><a class="header-anchor" href="#redis" aria-hidden="true">#</a> Redis</h4>
|
||||
<blockquote>
|
||||
<p>将围绕redis基础概念、使用场景、使用方式、简单部署等方面 展开介绍,<a href="redis">主目录</a>下有自己觉得还不错PDF文档~</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/redis/key%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83%E4%B8%8E%E5%BB%BA%E8%AE%AE.html">key命名规范与建议</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/redis/redis%E5%BC%80%E5%8F%91%E4%BD%BF%E7%94%A8%E8%A7%84%E8%8C%83.html">redis开发使用规范</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/redis/redis%E5%9F%BA%E7%A1%80%E4%BB%8B%E7%BB%8D.html">redis基础介绍</RouterLink></li>
|
||||
<li><a href="https://mp.weixin.qq.com/s/Xe-ZDf2kgUWfYSkuULAdlw" target="_blank" rel="noopener noreferrer">redis的简单安装和部署<ExternalLinkIcon/></a></li>
|
||||
<li><a href="code/docs/redis/redis-default.conf">官方默认配置模板</a></li>
|
||||
<li>数据类型</li>
|
||||
<li><RouterLink to="/DS/docs/docs/redis/redis%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.html">redis简单主从集群部署-docker方式</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/redis/memCache%E4%B8%8ERedis.html">memCache与Redis比较</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="mongo" tabindex="-1"><a class="header-anchor" href="#mongo" aria-hidden="true">#</a> Mongo</h4>
|
||||
<ul>
|
||||
<li>基本介绍</li>
|
||||
<li>安装部署</li>
|
||||
<li>简单使用</li>
|
||||
<li>Node下的CURD操作</li>
|
||||
</ul>
|
||||
<h2 id="服务部署" tabindex="-1"><a class="header-anchor" href="#服务部署" aria-hidden="true">#</a> 服务部署</h2>
|
||||
<h4 id="nginx" tabindex="-1"><a class="header-anchor" href="#nginx" aria-hidden="true">#</a> nginx</h4>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/nginx/nginx%E5%9F%BA%E7%A1%80%E9%83%A8%E7%BD%B2.html">nginx安装,普通安装 Or Docker搞定?</RouterLink></li>
|
||||
<li><a href="">手把手nginx基础入门</a></li>
|
||||
<li><a href="">反向代理、负载均衡真有那么难吗?</a></li>
|
||||
<li><RouterLink to="/DS/docs/nginx/nginx%E6%9C%8D%E5%8A%A1%E5%99%A8ssl%E8%AF%81%E4%B9%A6%E9%85%8D%E7%BD%AE.html">Nginx SSL证书,从此踏上Https之路</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="docker" tabindex="-1"><a class="header-anchor" href="#docker" aria-hidden="true">#</a> docker</h4>
|
||||
<ul>
|
||||
<li>我与docker的第一次硬碰硬</li>
|
||||
<li>docker操作入门真有那么难吗?</li>
|
||||
<li>这些基础操作指令,你会吗?</li>
|
||||
<li>那些年,我常用的docker指令操作汇总</li>
|
||||
</ul>
|
||||
<h4 id="docker-compose" tabindex="-1"><a class="header-anchor" href="#docker-compose" aria-hidden="true">#</a> docker-compose</h4>
|
||||
<ul>
|
||||
<li>听说你装了N次都没搞定?</li>
|
||||
<li>集群启动失败,yaml规范不清楚?</li>
|
||||
<li><a href="https://mp.weixin.qq.com/s/nC4nF51xn61TZlenuUxDog" target="_blank" rel="noopener noreferrer">我了解的docker-compose都在这里了<ExternalLinkIcon/></a></li>
|
||||
</ul>
|
||||
<h4 id="linux下shell编程" tabindex="-1"><a class="header-anchor" href="#linux下shell编程" aria-hidden="true">#</a> linux下shell编程</h4>
|
||||
<ul>
|
||||
<li><a href="https://mp.weixin.qq.com/s/gctrWdB1JEK59_a9tJQSkg" target="_blank" rel="noopener noreferrer">shell基础整理<ExternalLinkIcon/></a></li>
|
||||
<li><RouterLink to="/DS/shell/shell%E8%BF%9E%E6%8E%A5mysql.html">操作mysql数据库</RouterLink></li>
|
||||
<li>shell操作docker</li>
|
||||
<li>环境变量env</li>
|
||||
</ul>
|
||||
<h2 id="服务网关" tabindex="-1"><a class="header-anchor" href="#服务网关" aria-hidden="true">#</a> 服务网关</h2>
|
||||
<h4 id="kong" tabindex="-1"><a class="header-anchor" href="#kong" aria-hidden="true">#</a> kong</h4>
|
||||
<ul>
|
||||
<li><RouterLink to="/api-gateway/kong/kong%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%BB%8D.html">kong的的基本介绍</RouterLink></li>
|
||||
<li><RouterLink to="/api-gateway/kong/%E5%9F%BA%E4%BA%8Edocker%E9%83%A8%E7%BD%B2kong%E7%BD%91%E5%85%B3%E6%9C%8D%E5%8A%A1.html">docker下kong的部署</RouterLink></li>
|
||||
<li>docker-compose搭建kong集群</li>
|
||||
<li>可视化管理界面介绍</li>
|
||||
</ul>
|
||||
<h4 id="konga" tabindex="-1"><a class="header-anchor" href="#konga" aria-hidden="true">#</a> konga</h4>
|
||||
<ul>
|
||||
<li>基本介绍与docker部署</li>
|
||||
<li>简单使用</li>
|
||||
<li>路由管理</li>
|
||||
</ul>
|
||||
<h4 id="kong-dashboard" tabindex="-1"><a class="header-anchor" href="#kong-dashboard" aria-hidden="true">#</a> kong-dashboard</h4>
|
||||
<ul>
|
||||
<li>docker简单部署</li>
|
||||
<li>路由管理</li>
|
||||
<li>插件介绍</li>
|
||||
</ul>
|
||||
<h2 id="服务注册" tabindex="-1"><a class="header-anchor" href="#服务注册" aria-hidden="true">#</a> 服务注册</h2>
|
||||
<h4 id="apollo" tabindex="-1"><a class="header-anchor" href="#apollo" aria-hidden="true">#</a> Apollo</h4>
|
||||
<blockquote>
|
||||
<p>携程开发的配置中心经典项目,可集成多语言客户端,实现灰度部署,在分布式微服务的场景下抽离出服务配置,方便统一管理、发布</p>
|
||||
</blockquote>
|
||||
<h4 id="consul" tabindex="-1"><a class="header-anchor" href="#consul" aria-hidden="true">#</a> Consul</h4>
|
||||
<blockquote>
|
||||
<p>服务注册、发现,key-value键值对管理</p>
|
||||
</blockquote>
|
||||
<h4 id="nacos" tabindex="-1"><a class="header-anchor" href="#nacos" aria-hidden="true">#</a> Nacos</h4>
|
||||
<blockquote>
|
||||
<p>背靠国内一线互联网大厂——阿里巴巴,也是可适用于微服务下的配置管理,支持Java、Nodejs等主流语言,目前生态良好,技术支持表现一般,属于Apollo替代产品</p>
|
||||
</blockquote>
|
||||
<h2 id="消息中间件" tabindex="-1"><a class="header-anchor" href="#消息中间件" aria-hidden="true">#</a> 消息中间件</h2>
|
||||
<blockquote>
|
||||
<p>消息队列已经逐渐成为企业IT系统内部通信的核心手段。具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。</p>
|
||||
<p>目前个人了解的有:RabbitMQ、Kafka、RocketMQ</p>
|
||||
</blockquote>
|
||||
<h4 id="rabbitmq" tabindex="-1"><a class="header-anchor" href="#rabbitmq" aria-hidden="true">#</a> RabbitMQ</h4>
|
||||
<h4 id="kafka" tabindex="-1"><a class="header-anchor" href="#kafka" aria-hidden="true">#</a> kafka</h4>
|
||||
<h4 id="rocketmq" tabindex="-1"><a class="header-anchor" href="#rocketmq" aria-hidden="true">#</a> RocketMQ</h4>
|
||||
<h2 id="rpc框架" tabindex="-1"><a class="header-anchor" href="#rpc框架" aria-hidden="true">#</a> RPC框架</h2>
|
||||
<h4 id="grpc" tabindex="-1"><a class="header-anchor" href="#grpc" aria-hidden="true">#</a> gRPC</h4>
|
||||
<blockquote>
|
||||
<p>gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,tensorflow分布式与tensorflow serving底层通信都是是用的grpc。我自己基于JavaScript技术栈上较多的接触到gRPC,传送门:<a href="">基于js下各框架grpc的使用</a></p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>
|
||||
<p>nodejs下grpc的简单实用</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>grpc集成express框架</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>grpc集成koa框架</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>eggjs框架下grpc的线上部署</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>grpc插件开发示例</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="dubbo" tabindex="-1"><a class="header-anchor" href="#dubbo" aria-hidden="true">#</a> Dubbo</h4>
|
||||
<blockquote>
|
||||
<p>Alibaba开发的一个RPC框架,远程接口基于Java Interface, 依托于Spring框架(<strong>Java技术栈重点研究</strong>)</p>
|
||||
</blockquote>
|
||||
<h4 id="thrift" tabindex="-1"><a class="header-anchor" href="#thrift" aria-hidden="true">#</a> Thrift</h4>
|
||||
<blockquote>
|
||||
<p>Apache的一个项目(http://thrift.apache.org),前身是Facebook开发的一个RPC框架,采用thrift作为IDL (Interface description language)。</p>
|
||||
</blockquote>
|
||||
<h2 id="elk日志管理平台" tabindex="-1"><a class="header-anchor" href="#elk日志管理平台" aria-hidden="true">#</a> Elk日志管理平台</h2>
|
||||
<blockquote>
|
||||
<p>全链路日志</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/elk/%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%B8%B8%E7%94%A8%E6%9E%B6%E6%9E%84%E6%95%B4%E7%90%86.html">ELK基础概念与常用架构整理</RouterLink></li>
|
||||
</ul>
|
||||
<h4 id="elasticsearch" tabindex="-1"><a class="header-anchor" href="#elasticsearch" aria-hidden="true">#</a> ElasticSearch</h4>
|
||||
<blockquote>
|
||||
<p>数据存储</p>
|
||||
</blockquote>
|
||||
<h4 id="logstash" tabindex="-1"><a class="header-anchor" href="#logstash" aria-hidden="true">#</a> Logstash</h4>
|
||||
<blockquote>
|
||||
<p>数据收集</p>
|
||||
</blockquote>
|
||||
<h4 id="kibana" tabindex="-1"><a class="header-anchor" href="#kibana" aria-hidden="true">#</a> Kibana</h4>
|
||||
<blockquote>
|
||||
<p>数据展示</p>
|
||||
</blockquote>
|
||||
<h2 id="监控工具" tabindex="-1"><a class="header-anchor" href="#监控工具" aria-hidden="true">#</a> 监控工具</h2>
|
||||
<blockquote>
|
||||
<p>参考笔者线上平台:http://view.142vip.cn/grafana 账号/密码:test/123456 基于docker部署,由于是个人学生服务器,站点访问延迟较高</p>
|
||||
<p>常用工具:promethus 、grafana、zabbix、lepus等</p>
|
||||
</blockquote>
|
||||
<h4 id="prometheus" tabindex="-1"><a class="header-anchor" href="#prometheus" aria-hidden="true">#</a> Prometheus</h4>
|
||||
<h4 id="grafana" tabindex="-1"><a class="header-anchor" href="#grafana" aria-hidden="true">#</a> Grafana</h4>
|
||||
<h4 id="zabbix" tabindex="-1"><a class="header-anchor" href="#zabbix" aria-hidden="true">#</a> Zabbix</h4>
|
||||
<h4 id="lepus-天兔" tabindex="-1"><a class="header-anchor" href="#lepus-天兔" aria-hidden="true">#</a> lepus(天兔)</h4>
|
||||
<h2 id="高可用架构" tabindex="-1"><a class="header-anchor" href="#高可用架构" aria-hidden="true">#</a> 高可用架构</h2>
|
||||
<h4 id="mysql集群" tabindex="-1"><a class="header-anchor" href="#mysql集群" aria-hidden="true">#</a> MySQL集群</h4>
|
||||
<h5 id="主从同步" tabindex="-1"><a class="header-anchor" href="#主从同步" aria-hidden="true">#</a> 主从同步</h5>
|
||||
<blockquote>
|
||||
<p>实现功能:主从服务器数据一致,低延迟、高并发</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Binlog主从复制</li>
|
||||
<li>GTID主从复制</li>
|
||||
<li>主主复制</li>
|
||||
</ul>
|
||||
<h5 id="代理中间件" tabindex="-1"><a class="header-anchor" href="#代理中间件" aria-hidden="true">#</a> 代理中间件</h5>
|
||||
<blockquote>
|
||||
<p>实现功能:读写分离、分库分表、负载均衡、故障切换</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Mycat</li>
|
||||
<li>360Atlas</li>
|
||||
</ul>
|
||||
<h4 id="集群监控" tabindex="-1"><a class="header-anchor" href="#集群监控" aria-hidden="true">#</a> 集群监控</h4>
|
||||
<blockquote>
|
||||
<p>实现功能:实时监控、可视化数据显示、故障报警</p>
|
||||
</blockquote>
|
||||
<h5 id="prometheus-1" tabindex="-1"><a class="header-anchor" href="#prometheus-1" aria-hidden="true">#</a> Prometheus</h5>
|
||||
<ul>
|
||||
<li>监控MySQL集群</li>
|
||||
<li>监控Mongo数据库</li>
|
||||
<li>监控Node服务</li>
|
||||
<li>监控linux服务器</li>
|
||||
<li>监控redis集群</li>
|
||||
</ul>
|
||||
<h5 id="grafana-1" tabindex="-1"><a class="header-anchor" href="#grafana-1" aria-hidden="true">#</a> Grafana</h5>
|
||||
<ul>
|
||||
<li>基本安装部署</li>
|
||||
<li>功能介绍和简单操作</li>
|
||||
<li>可视化数据图形显示界面</li>
|
||||
<li>常用模板</li>
|
||||
</ul>
|
||||
<h5 id="alter-manager" tabindex="-1"><a class="header-anchor" href="#alter-manager" aria-hidden="true">#</a> alter-manager</h5>
|
||||
<ul>
|
||||
<li>推送到邮箱</li>
|
||||
<li>推送到钉钉、微信机器人</li>
|
||||
<li>推送到自定义消息接口(webhook钩子)</li>
|
||||
</ul>
|
||||
<h4 id="压力测试" tabindex="-1"><a class="header-anchor" href="#压力测试" aria-hidden="true">#</a> 压力测试</h4>
|
||||
<ul>
|
||||
<li>jmeter</li>
|
||||
</ul>
|
||||
<h4 id="redis集群" tabindex="-1"><a class="header-anchor" href="#redis集群" aria-hidden="true">#</a> Redis集群</h4>
|
||||
<blockquote>
|
||||
<p>持续整理中...</p>
|
||||
</blockquote>
|
||||
<h5 id="简单主从模式" tabindex="-1"><a class="header-anchor" href="#简单主从模式" aria-hidden="true">#</a> 简单主从模式</h5>
|
||||
<h4 id="哨兵模式" tabindex="-1"><a class="header-anchor" href="#哨兵模式" aria-hidden="true">#</a> 哨兵模式</h4>
|
||||
<h5 id="cluster模式" tabindex="-1"><a class="header-anchor" href="#cluster模式" aria-hidden="true">#</a> cluster模式</h5>
|
||||
<h2 id="网站搭建" tabindex="-1"><a class="header-anchor" href="#网站搭建" aria-hidden="true">#</a> 网站搭建</h2>
|
||||
<blockquote>
|
||||
<p>从大二开始搭建个人网站:http://www.142vip.cn 起初非常简陋,工作之后计划进行第三版迭代,一直抽空佛系谢谢, 目前在重构中..</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>最初的梦想</li>
|
||||
<li>舍弃Java,我的重构之路</li>
|
||||
<li>网站正规化,Nginx配置SSL证书</li>
|
||||
<li>小小网站却耗费三台学生服务器?</li>
|
||||
</ul>
|
||||
<h2 id="书籍整理" tabindex="-1"><a class="header-anchor" href="#书籍整理" aria-hidden="true">#</a> 书籍整理</h2>
|
||||
<h3 id="技术类" tabindex="-1"><a class="header-anchor" href="#技术类" aria-hidden="true">#</a> 技术类</h3>
|
||||
<blockquote>
|
||||
<p>待整理</p>
|
||||
</blockquote>
|
||||
<h4 id="狼书-了不起的node-js" tabindex="-1"><a class="header-anchor" href="#狼书-了不起的node-js" aria-hidden="true">#</a> <RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/">狼书 - 了不起的Node.js</RouterLink></h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%B8%80%E7%AB%A0%20Node.js%E5%88%9D%E8%AF%86.html">第一章 Node.js初识</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20Nodejs%E5%AE%89%E8%A3%85%E4%B8%8E%E5%85%A5%E9%97%A8.html">第二章 Nodejs安装与入门</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E6%9B%B4%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js.html">第三章 更了不起的Node.js</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E6%9B%B4%E5%A5%BD%E7%9A%84Node.js.html">第四章 更好的Node.js</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%BA%94%E7%AB%A0%20Node.js%E6%98%AF%E5%A6%82%E4%BD%95%E6%89%A7%E8%A1%8C%E7%9A%84.html">第五章 Node.js是如何执行的</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E5%85%AD%E7%AB%A0%20%E6%A8%A1%E5%9D%97%E4%B8%8E%E6%A0%B8%E5%BF%83.html">第六章 模块与核心</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E7%AC%AC%E4%B8%83%E7%AB%A0%20%E5%BC%82%E6%AD%A5%E5%86%99%E6%B3%95%E4%B8%8E%E6%B5%81%E7%A8%8B%E6%8E%A7%E5%88%B6.html">第七章 异步写法与流程控制</RouterLink></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E7%8B%BC%E4%B9%A6-%E4%BA%86%E4%B8%8D%E8%B5%B7%E7%9A%84Node.js/%E5%85%A8%E9%83%A8%E7%AC%94%E8%AE%B0.html">全部笔记</RouterLink></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="es6标准入门——阮一峰" tabindex="-1"><a class="header-anchor" href="#es6标准入门——阮一峰" aria-hidden="true">#</a> <a href="">ES6标准入门——阮一峰</a></h4>
|
||||
<blockquote>
|
||||
<p>本书内容较多,很多基础细节都有说明,难度中等、适合入门,书中很多例子我也摘抄了很多,主要是我认为重要的,笔记按照自己学习逻辑整理的,请君慢用</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/ES6%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8/1.ECMAScript%206%20%E7%AE%80%E4%BB%8B.html">1.ECMAScript 6 简介</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/ES6%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8/2.let%E5%92%8Cconst%E7%9A%84%E5%91%BD%E4%BB%A4.html">2.let和const命令</RouterLink></li>
|
||||
<li><RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/ES6%E6%A0%87%E5%87%86%E5%85%A5%E9%97%A8/3.%E5%8F%98%E9%87%8F%E7%9A%84%E8%A7%A3%E6%9E%84%E8%B5%8B%E5%80%BC.html">3.变量的解构赋值</RouterLink></li>
|
||||
<li><a href="">4.字符串详解</a></li>
|
||||
</ul>
|
||||
<h3 id="非技术类" tabindex="-1"><a class="header-anchor" href="#非技术类" aria-hidden="true">#</a> 非技术类</h3>
|
||||
<blockquote>
|
||||
<p>主要是跟计算机无关的一些书,在看完之后,会选择性的进行思维导图、经典词句整理,也可能添加个人思考</p>
|
||||
</blockquote>
|
||||
<h4 id="你好孤独-陈果" tabindex="-1"><a class="header-anchor" href="#你好孤独-陈果" aria-hidden="true">#</a> <RouterLink to="/DS/docs/article-records/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/%E5%A5%BD%E7%9A%84%E5%AD%A4%E7%8B%AC-%E9%99%88%E6%9E%9C/">你好孤独 - 陈果</RouterLink></h4>
|
||||
<h2 id="公众号汇总" tabindex="-1"><a class="header-anchor" href="#公众号汇总" aria-hidden="true">#</a> 公众号汇总</h2>
|
||||
<h3 id="_2020年" tabindex="-1"><a class="header-anchor" href="#_2020年" aria-hidden="true">#</a> 2020年</h3>
|
||||
<h4 id="_7月" tabindex="-1"><a class="header-anchor" href="#_7月" aria-hidden="true">#</a> 7月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483659&idx=1&sn=ac7b633a45ac06d388e0698163a2543e&chksm=fcdfb887cba8319151aedfa80c5b59d130838af81fe51c76e5c4926f82f4937b51c8c0c1470e&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-26】微信公众号我来了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483760&idx=1&sn=30a9fa2a051079c5330039615950c34d&chksm=fcdfb8fccba831ea64644be501ecca3cea5846f16367faed9c84b44a30d9b6dc30456dae6548&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-27】介绍一下,我在B站<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483762&idx=1&sn=e9ea759f1c1589881cc3bd9cabddb70a&chksm=fcdfb8fecba831e8c4635a4cefd302977071ed11a4dda6161cf9ad8458865297194f87cb013a&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-28】五年了,我终于换了人生中的第一台MacBookPro<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483770&idx=1&sn=6b760873a814f4e18baab415bee3d863&chksm=fcdfb8f6cba831e00802de653ff6723a0bb169a93fe3a6a9762ee62d75d8cd88409268db9047&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-29】工作中第一次被喷,我到底是如何应对的?<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483778&idx=1&sn=3d9f623c58d595f75d7092783a6c5abe&chksm=fcdfb80ecba83118e76de1ed88a5be51229e4145182aee6e0bcc13e4697707cf9f4609d8799d&token=1304241434&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-07-31】CSDN关注100了,就这????<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_8月" tabindex="-1"><a class="header-anchor" href="#_8月" aria-hidden="true">#</a> 8月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483790&idx=1&sn=76e13ac79ad498309542c9f41878bb1c&chksm=fcdfb802cba8311456ea9ff3309c4354055022cd0056b13c11fac44252231550e17a03f26f29&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-08-01】旧友相见,甚是怀念<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247483805&idx=1&sn=4da4e0d3a2912aee146248c1d8f7f96f&chksm=fcdfb811cba83107fd8f08d3e35af7c72bf7d908d577ad83e45d80b0e9d1bbdbf16b1f169d64&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-08-03】JavaScript基础介绍和快速入门<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_9月" tabindex="-1"><a class="header-anchor" href="#_9月" aria-hidden="true">#</a> 9月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484600&idx=1&sn=489aa1bd12487b0bf8f2a7694f4ca1aa&chksm=fcdfbd34cba83422f0afee027747d9e95773e093fa3a24225c2729029c4392bf42043964782f&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-01】Redis的简单安装和部署 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484600&idx=2&sn=a9962c6ca3a5eddd085bcd15617f64d9&chksm=fcdfbd34cba83422b987020a858b7cf31bfde6033642d697d5a00ad9ed618f3cf14deb207d67&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-01】就很像?? <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484702&idx=1&sn=6e3e862153755d9e61f5f4ebf220381d&chksm=fcdfbc92cba835844e8b6fd37d86a34ccf83342895f448c88ba5b62db974eb536a8e74a121aa&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-03】shell编程基础整理 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484702&idx=2&sn=c7589eecbe58ff8939f72c0ff0bf567d&chksm=fcdfbc92cba83584b03dfeea7290606ce8249b0c3105b0b3b95a9087c77e3b1c7f863d8e30f9&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-03】大学四年建站用过的云服务器都在这里了 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484711&idx=1&sn=bf362439ccfad04da53ce65c824a988d&chksm=fcdfbcabcba835bddc43c40fd3a454793adf7849a5d5bb356825d481b82ae3e58a749859502c&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-04】面试复盘和思考 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484759&idx=1&sn=e0f8a7a70ddede75d94b202ddc6106d6&chksm=fcdfbcdbcba835cd2138658d750f7e09a820b34daf4624f253a21a11b5de56635d35e4c0df19&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-06】朋友是“无用”的,不是你瞧不起我,就是我瞧不起你 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484759&idx=2&sn=ade86739c94f99f944a3d387bc7e13ef&chksm=fcdfbcdbcba835cd192c3b7b7eeea8f5dbb16b2b2fa58b6e2094184f5aa3341927a6d1fad6f8&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-06】GitHub简单使用 <ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484771&idx=1&sn=6ae4c6e8d333b0e1aa5cd1aee161d9b8&chksm=fcdfbcefcba835f94e3c0abc189477f241f675f38a63eb03bd320447e89da39cb08b72038ba3&token=1613702159&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-07】MySQL日志类型把我难哭了,你学废了吗?<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484783&idx=1&sn=b9e82a2c2b04b7050d0659085af537ef&chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-11】向各位汇报这周状态,再也不敢鸽了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484783&idx=1&sn=b9e82a2c2b04b7050d0659085af537ef&chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-11】向各位汇报这周状态,再也不敢鸽了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484784&idx=1&sn=ae73f1f4e53b622039a75ec41cabe378&chksm=fcdfbcfccba835eafefe304913e4078cf8dfac22f62fd9d686b307bbdf46d147016f5e876e05&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-12】向各位汇报,再也不敢鸽了,人生处处有惊喜<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484815&idx=1&sn=10d26a600112ec4f95b3b3f470955744&chksm=fcdfbc03cba83515b07f0ae6cee791d1fb5fd619364cff3a17a4deab91333f0a6277b09a66a9&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-13】来来来,无厘头技术(水)文,各种尬。简简单单评价一下<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484815&idx=2&sn=94a6455ed6b17fa5b27e96358e935803&chksm=fcdfbc03cba83515d13dcfc2dea2445085a34ff4360e0a367fd914bb04bc6ba18a780a0cd2d2&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-13】基础Brew和Tree的安装实录<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484815&idx=3&sn=38a289efffda9510b5ff04c5bed0663e&chksm=fcdfbc03cba835154c888b9d7f86eac85c250eefb9d053687173274373f2f8d7b19fc307e76a&token=639111151&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-13】PM2进程管理,给我学!<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484823&idx=1&sn=d41bb8da02585cf9ea8d0b3ef27e3dbb&chksm=fcdfbc1bcba8350d84ba2f01eaf187cbaa2d4cf5a9078beb1f2fafe94edb0126c82595ed8191&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-14】数据结构,一定要学废了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484837&idx=1&sn=7f0de3eeea3fc6ee299587704f5c44cd&chksm=fcdfbc29cba8353fd894582da7ae2c93b5920c4dbb1e197b011a817dc0962e317842a32d5560&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-16】ELK基础概念与常用架构整理<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484850&idx=1&sn=7af55ef3a7d843d9c43de6d6c7911da3&chksm=fcdfbc3ecba835287b2c644cda606454a713d370fbd7d14714b22a04277f7a7784b96b8b277e&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-17】分享书上一段话,问一个问题<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484850&idx=2&sn=c59839c677d7c9652a09d1f8c70ef8d6&chksm=fcdfbc3ecba83528cf8271a2615129340a6f11954b6d9396160d0fb2c41593253d5e3510a031&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-17】看源码遇到的三个知识点,一个也没懂<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484865&idx=2&sn=63e6b669341217135013816464dd5bd9&chksm=fcdfbc4dcba8355b4de0f712047709425a35fa3b122378b31f0e4db3afb82dfd38872862aab4&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-20】express()函数整理<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484865&idx=1&sn=e39e3547da49f40e1b64deadf9a9cfef&chksm=fcdfbc4dcba8355bfa9c8b9531a463fc652b764064528dd6c243f47a157b20e017bad3f410f4&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-22】入秋了,安好<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484897&idx=1&sn=b1073522cfd3ce6ebbe85e85ad4e35e0&chksm=fcdfbc6dcba8357bdb212c9db1378a045d0dcfd95b79ed05688180f05d2b391f9b724d0d752f&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-22】Nginx安装详解,我服务器上也是这样的<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484897&idx=2&sn=34c61ed01c6522d2861be3342ec12ad5&chksm=fcdfbc6dcba8357b76eb0fe6c502d932def6cd232297b010f9b2f9a1fca35c38df77dacce7f2&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-22】被攻击的一天<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484929&idx=1&sn=394783dd2bfd65da24ae6dcb89d69ec6&chksm=fcdfbf8dcba8369b926b7083bbe3515aa5857f7589acc3f9d6d4987c67539a76dbd6e3cb70a1&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-09-26】跟父亲视频的一个半小时,聊到了我,也聊到了Ta<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_10月" tabindex="-1"><a class="header-anchor" href="#_10月" aria-hidden="true">#</a> 10月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484943&idx=1&sn=ad37db87dc40f381fd18cc828e492384&chksm=fcdfbf83cba8369598fc2773b63df235a9719b43749e7daab753c621fef5af4fba054dbb46ea&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-07】时间太快,溜了溜了,杭州见<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484951&idx=1&sn=edddf3d6c8f3fc6dd1d14063b536c732&chksm=fcdfbf9bcba8368d81ddffcbd258f7e4b7fb573d2a8963859e1b156e8a5f5d81f5629c49be6e&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-14】写不了代码就不写嘛<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484968&idx=1&sn=d37960ed81044fbf314440af85049d65&chksm=fcdfbfa4cba836b25082535910f7137d1513d834d54fbfadf48a433b29511ccf4d532f19b88a&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-18】我不行了,这号关注量男女7:3 还怎么相亲嘛?<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247484988&idx=1&sn=947c487946fa3574d33e9c6861a1ee28&chksm=fcdfbfb0cba836a626d2efa904a5177c2e0916c381b26c89b6dcfc610a380b906d4480f7cc9b&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-10-26】悄悄接你下班,陪你回家<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_11月" tabindex="-1"><a class="header-anchor" href="#_11月" aria-hidden="true">#</a> 11月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485002&idx=1&sn=3760eba58f7ded433b71bec48b89a681&chksm=fcdfbfc6cba836d0b7db1f2aa5a4a884f68f8ce20a59aa44b4ac46c59eb4dd1c233079241a4a&token=368257571&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-01】11月,你好<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485042&idx=1&sn=181ae5062c31ee7931390607b6f10358&chksm=fcdfbffecba836e8275c849007470db6964f7cd675af59fe73c94369334d17d4840e8c0413d5&token=898438314&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-15】她来了她来了,她带着剪了三遍的视频来了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485053&idx=1&sn=ed2fe0de87b70781cdb7755ef4726340&chksm=fcdfbff1cba836e7165dc53722aaf96ef38d8f43cfadadcb4695d8ff430ea64619caada81cfa&token=1939941957&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-18】陪我一路的小姐姐,谢谢啦~ 我大意了呀,没有闪<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485066&idx=1&sn=1d357917f548a6d977af96c6582db527&chksm=fcdfbf06cba836103152f7a3fdfbf97c1be2472a84f824cbddd532c15aefe14c71b3b076233f&token=831506871&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-11-30】11月的尾巴,12月你好<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_12月" tabindex="-1"><a class="header-anchor" href="#_12月" aria-hidden="true">#</a> 12月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485080&idx=2&sn=bdc551f2e9bf54dc01881979339af8ad&chksm=fcdfbf14cba836022a05854547cbca03b5a08b912a0e0f195d4856d6b53ecd78aee2f167b515&token=1581389686&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-06】周末小记——忆旧友、吃火锅,也会感慨<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485100&idx=1&sn=e7c0c41229d51ebfab2939deb1751672&chksm=fcdfbf20cba836364da35ab5acfed076876aae486126bc1c41cdd2502cc89a41cbde7c645610&token=1054397108&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-10】上火、牙疼,也要砍程序媛一刀<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485136&idx=1&sn=4619fb835e6d57e106ab01116012662a&chksm=fcdfbf5ccba8364aecddf14d11ed8ba36f38050b83b30b8d46e10f86b164aab05322b8455b36&token=755050934&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-17】今晚不蹦迪,来聊一聊个人项目的接口返回<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485180&idx=1&sn=15ab9be3e15130103f26c919cbe0b605&chksm=fcdfbf70cba83666d287acc35485d02ddf67bacad6ea46d9ef04521f9f429fcb015d371c918e&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2020-12-20】事情,从英吉利海岸的那杯卡布奇诺美式咖啡说起<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id="_2021年" tabindex="-1"><a class="header-anchor" href="#_2021年" aria-hidden="true">#</a> 2021年</h3>
|
||||
<h4 id="_1月" tabindex="-1"><a class="header-anchor" href="#_1月" aria-hidden="true">#</a> 1月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485228&idx=1&sn=1c30866a209af2a5eb927fd7bd63cc8b&chksm=fcdfbea0cba837b6d4cf9865b72a6a1553c4d9b6a6cce369bb09f66730ab37ec649071e7ab7c&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-06】谁在看小王子呀~<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485249&idx=1&sn=dadf2a6dbed1879bbd98c62491436a9c&chksm=fcdfbecdcba837db5c11b8023ffa7ad6cf5a47c03027a0029604a50d0a77c75908efc05af39a&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-15】2020小结,没事就点点看看呗,反正小目标都没完成<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485258&idx=1&sn=fb71007a5feed8e18674be27b1c749ab&chksm=fcdfbec6cba837d099e90a5f45781ee8cac474388e25ad9383a4fbc05fdb16a8e1377265c018&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-17】搞波大的,浅谈深拷贝——文末有彩蛋<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485277&idx=1&sn=9eb7c3cef21ace2cc5853e382f2bb03f&chksm=fcdfbed1cba837c7839f3b57836f43b3425c8b5a7888f543bf4a1dd8b39cd82ed7d51a24a685&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-18】到底该如何发布Npm插件,常用指令在这里<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485291&idx=1&sn=19f13df8131a9f662973f2d9240c1eab&chksm=fcdfbee7cba837f180d8ad30735cd61e6c73fe195e63d46046bb24f80e1536aa0a585c3e1015&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-20】好用的AntDocs,也来学着用一下,基本过程整理<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485318&idx=1&sn=6ae5fc9f1cf994818ff89d53a926761e&chksm=fcdfbe0acba8371c9d0025008084857cf14c52b01dfb1b9460d3388ba543c36da2abcbf90216&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-27】【持续更新】从查找算法开始数据结构入门,大家都在掘金等你<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485341&idx=1&sn=fc493c28ab138056567e916b769ddbf2&chksm=fcdfbe11cba8370793e8e0d71e7766f4e1e7f3e8672921d6b98757f7d7b271b290f3edc65d6f&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-01-30】ORM框架入门之Sequelize,我快翻译不动了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="_2月" tabindex="-1"><a class="header-anchor" href="#_2月" aria-hidden="true">#</a> 2月</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485376&idx=1&sn=049a5df5cb97786e80aded38a1bf3732&chksm=fcdfbe4ccba8375a52cb8d7077836216e5f5f41ee9453aebf524eb0a5d8a5db48cbabc11f3e4&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-02-07】被妹妹支配的一周,晚上差点连家都回不去..<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485404&idx=1&sn=276100858df23daf987dbc68997477df&chksm=fcdfbe50cba837460079fc9ab414754a49668f82dc0f6a5a41ec320d3e5dd77c1a8c271e061b&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-02-11】【新年快乐】程序员的2020,就这样悄咪咪地溜走了<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&mid=2247485420&idx=1&sn=26c0e3690363af5dddd805ae417eeee9&chksm=fcdfbe60cba8377645e44333ccbe35147b9844578008e5699aba62b82c12fc03634e2d68781c&token=1356818265&lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">【2021-02-13】抢红包、拼手气来啦,之前答应的抽奖变成新年红包啦~<ExternalLinkIcon/></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="赞赏支持" tabindex="-1"><a class="header-anchor" href="#赞赏支持" aria-hidden="true">#</a> 赞赏支持</h2>
|
||||
<blockquote>
|
||||
<p>相逢不用忙归去,明日黄花蝶也愁;若系列文章对你有帮助,不如请作者喝一杯伏见桃山...</p>
|
||||
<p><strong>赞赏过的一定要扫下方右侧微信跟我说呀!!!!!!</strong></p>
|
||||
</blockquote>
|
||||
<p><a name="wechat"></a></p>
|
||||
<div align="left">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/weChatDonate.jpg" width="300" height="300" style="border-radius:10px;" />
|
||||
</div>
|
||||
<h2 id="联系我" tabindex="-1"><a class="header-anchor" href="#联系我" aria-hidden="true">#</a> 联系我</h2>
|
||||
<blockquote>
|
||||
<p>对仓库有任何问题或建议,欢迎微信“骚扰”,商务合作请备注!</p>
|
||||
</blockquote>
|
||||
<div align="left">
|
||||
<img src="https://cdn.142vip.cn/article-notes/img/wechat.jpg" width="300" height="300" style="border-radius:10px;"/>
|
||||
</div>
|
||||
<h2 id="鸣谢" tabindex="-1"><a class="header-anchor" href="#鸣谢" aria-hidden="true">#</a> 鸣谢</h2>
|
||||
<p>以下排名不分先后!(<a href="">详细统计</a>)</p>
|
||||
<div>
|
||||
<a href="https://github.com/ChiefPing" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/34122068?s=460&v=4" width="50px" style="brder-radius:5px;"/>
|
||||
</a> <a href="https://github.com/xiaoliuxin" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/60652527?s=460&v=4" style="border-radius:5px;" width="50px"/>
|
||||
</a>
|
||||
</div>
|
||||
<h2 id="赞助列表" tabindex="-1"><a class="header-anchor" href="#赞助列表" aria-hidden="true">#</a> 赞助列表</h2>
|
||||
<p>以下排名不分先后!</p>
|
||||
<h2 id="公众号" tabindex="-1"><a class="header-anchor" href="#公众号" aria-hidden="true">#</a> 公众号</h2>
|
||||
<p>如果大家想要实时关注我更新的文章以及我的日常的话,可以关注我的公众号,基本每天都会更新技术和各种吹水文章,就当做是记录心情、成长的地方吧</p>
|
||||
<p><a name="gzh"></a></p>
|
||||
<div>
|
||||
<img src="https://cdn.142vip.cn/gzh.png" style="border-radius:10px;">
|
||||
</div></template>
|
||||
@@ -1,63 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-5d28eacc",
|
||||
"path": "/pages/c33acd/",
|
||||
"title": "赞赏支持",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "赞赏支持",
|
||||
"sidebarDepth": 0,
|
||||
"date": "2021-01-19T08:04:19.000Z",
|
||||
"permalink": "/pages/c33acd/",
|
||||
"categories": [
|
||||
"category"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "赞赏支持",
|
||||
"slug": "赞赏支持",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "鸣谢列表",
|
||||
"slug": "鸣谢列表",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 2,
|
||||
"title": "赞助列表",
|
||||
"slug": "赞助列表",
|
||||
"children": []
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "category/reader_donate.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-01-19 08:04:19
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-02-14 22:16:55
|
||||
-->
|
||||
<h2 id="赞赏支持" tabindex="-1"><a class="header-anchor" href="#赞赏支持" aria-hidden="true">#</a> 赞赏支持</h2>
|
||||
<ul>
|
||||
<li>相逢不用忙归去,明日黄花蝶也愁;若系列文章对你有帮助,不如请作者喝一杯伏见桃山...</li>
|
||||
<li><strong>赞赏过的一定要扫下方右侧微信跟我说呀!!!!!!</strong></li>
|
||||
</ul>
|
||||
<p><a name="wechat"></a></p>
|
||||
<div align="left">
|
||||
<img src="/assets/image_code/wechat_donate_code.jpeg" width="300" height="300" style="border-radius:10px;" />
|
||||
</div>
|
||||
<h2 id="鸣谢列表" tabindex="-1"><a class="header-anchor" href="#鸣谢列表" aria-hidden="true">#</a> 鸣谢列表</h2>
|
||||
<p>以下排名不分先后!(<a href="">详细统计</a>)</p>
|
||||
<div>
|
||||
<a href="https://github.com/ChiefPing" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/34122068?s=460&v=4" width="50px" style="brder-radius:5px;"/>
|
||||
</a> <a href="https://github.com/xiaoliuxin" target="_blank">
|
||||
<img src="https://avatars2.githubusercontent.com/u/60652527?s=460&v=4" style="border-radius:5px;" width="50px"/>
|
||||
</a>
|
||||
</div>
|
||||
<h2 id="赞助列表" tabindex="-1"><a class="header-anchor" href="#赞助列表" aria-hidden="true">#</a> 赞助列表</h2>
|
||||
<p>以下排名不分先后!</p>
|
||||
</template>
|
||||
@@ -1,58 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-990daf06",
|
||||
"path": "/pages/cddc8f/",
|
||||
"title": "piecemeal_knowledge_supplement",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "piecemeal_knowledge_supplement",
|
||||
"date": "2021-03-07T22:00:53.000Z",
|
||||
"permalink": "/pages/cddc8f/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "零碎知识补充",
|
||||
"slug": "零碎知识补充",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "单链表设置头结点",
|
||||
"slug": "单链表设置头结点",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/9.piecemeal_knowledge_supplement.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 22:00:53
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 22:00:53
|
||||
-->
|
||||
<h2 id="零碎知识补充" tabindex="-1"><a class="header-anchor" href="#零碎知识补充" aria-hidden="true">#</a> 零碎知识补充</h2>
|
||||
<ul>
|
||||
<li>无论是链表的插入还是删除操作,必须保证不断链【重要】</li>
|
||||
<li>顺序存储结构可以随机存取也能顺序存取,链式结构只能进行顺序存取</li>
|
||||
<li>顺序存储方式同样适合图和树的存储,例如:满二叉树的顺序存储</li>
|
||||
<li>队列需要在表头删除元素,在表尾插入元素【先进先出】,采用带尾指针的循环单链表比较方便</li>
|
||||
<li>数组排序最少时间复杂度为O(nlog<sub>2</sub>n)【重要】</li>
|
||||
<li>静态链表中的指针称为<code>游标</code>,指示下一个元素在数组中的<code>下标</code></li>
|
||||
<li>静态链表用数组表示,需要预先分配较大的连续空间,同时具有一般链表的特点(插入、删除元素不需要移动元素)</li>
|
||||
</ul>
|
||||
<h3 id="单链表设置头结点" tabindex="-1"><a class="header-anchor" href="#单链表设置头结点" aria-hidden="true">#</a> 单链表设置头结点</h3>
|
||||
<p>目的</p>
|
||||
<blockquote>
|
||||
<p>主要是方便运算。</p>
|
||||
</blockquote>
|
||||
<p>好处</p>
|
||||
<ul>
|
||||
<li>有头结点后,插入、删除数据元素的算法统一起来了,不需要判断是否在第一个元素之前插入或者删除第一个元素了。</li>
|
||||
<li>不论链表是否为空,头指针是指向头结点的<code>非空指针</code>,链表的头指针不变,因此空链表和非空链表的处理也就统一起来了。</li>
|
||||
</ul>
|
||||
</template>
|
||||
@@ -1,70 +0,0 @@
|
||||
export const data = {
|
||||
"key": "v-6af7422e",
|
||||
"path": "/pages/e577f8/",
|
||||
"title": "double_linked_list",
|
||||
"lang": "en-US",
|
||||
"frontmatter": {
|
||||
"title": "double_linked_list",
|
||||
"date": "2021-03-07T21:59:05.000Z",
|
||||
"permalink": "/pages/e577f8/",
|
||||
"categories": [
|
||||
"DataStructure",
|
||||
"linear_table"
|
||||
],
|
||||
"tags": [
|
||||
null
|
||||
]
|
||||
},
|
||||
"excerpt": "",
|
||||
"headers": [
|
||||
{
|
||||
"level": 2,
|
||||
"title": "双链表",
|
||||
"slug": "双链表",
|
||||
"children": [
|
||||
{
|
||||
"level": 3,
|
||||
"title": "基本特点",
|
||||
"slug": "基本特点",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "插入结点",
|
||||
"slug": "插入结点",
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"level": 3,
|
||||
"title": "删除结点",
|
||||
"slug": "删除结点",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"git": {
|
||||
"updatedTime": 1650556197000,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "mmdapl",
|
||||
"email": "2237221210@qq.com",
|
||||
"commits": 2
|
||||
}
|
||||
]
|
||||
},
|
||||
"filePathRelative": "DS/linear_table/4.double_linked_list.md"
|
||||
}
|
||||
|
||||
if (import.meta.webpackHot) {
|
||||
import.meta.webpackHot.accept()
|
||||
if (__VUE_HMR_RUNTIME__.updatePageData) {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(({ data }) => {
|
||||
__VUE_HMR_RUNTIME__.updatePageData(data)
|
||||
})
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
<template><!--
|
||||
* @Description:
|
||||
* @Version: Beta1.0
|
||||
* @Author: 【B站&公众号】Rong姐姐好可爱
|
||||
* @Date: 2021-03-07 21:59:05
|
||||
* @LastEditors: 【B站&公众号】Rong姐姐好可爱
|
||||
* @LastEditTime: 2021-03-07 21:59:13
|
||||
-->
|
||||
<h2 id="双链表" tabindex="-1"><a class="header-anchor" href="#双链表" aria-hidden="true">#</a> 双链表</h2>
|
||||
<p>从单链表的结构上来看</p>
|
||||
<ul>
|
||||
<li>访问特定结点的前驱结点需要遍历整个单链表,移动指针,时间复杂度为:O(n)</li>
|
||||
<li>访问特定结点的后继结点只需要移动一次指针,时间复杂度为:O(1)</li>
|
||||
</ul>
|
||||
<p>双链表的引入,很好的解决单链表访问前驱结点时间消耗大的问题。</p>
|
||||
<p>双链表结点由三部分组成:</p>
|
||||
<ul>
|
||||
<li><code>数据域</code> 存放数据信息</li>
|
||||
<li><code>prior指针域</code> 指向结点的前驱结点</li>
|
||||
<li><code>next指针域</code> 指向结点的后继结点</li>
|
||||
</ul>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 双链表结点类型
|
||||
typedef struct DNode{
|
||||
ElemType data; // 结点的数据域
|
||||
struct DNode *prior; // 结点的前驱指针
|
||||
struct DNode *next; // 结点的后继指针
|
||||
}DNode, *DlinkList;
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h3 id="基本特点" tabindex="-1"><a class="header-anchor" href="#基本特点" aria-hidden="true">#</a> 基本特点</h3>
|
||||
<ul>
|
||||
<li>双链表仅仅在单链表的结点中增加了一个指向结点前驱的<code>prior</code>指针;</li>
|
||||
<li><code>按值查找</code>、<code>按序号查找</code>在单链表和双链表上的操作是相同的。</li>
|
||||
<li>和单链表不同,<code>插入</code>、<code>删除</code>操作除了修改<code>next</code>指针域,双链表还需要修改<code>prior</code>指针域,确保不断<code>链</code>,时间复杂度都为:O(1)</li>
|
||||
</ul>
|
||||
<h3 id="插入结点" tabindex="-1"><a class="header-anchor" href="#插入结点" aria-hidden="true">#</a> 插入结点</h3>
|
||||
<blockquote>
|
||||
<p>在双链表中p所指的结点之后插入结点s</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 第一步
|
||||
s->next=p->next;
|
||||
|
||||
// 第二步
|
||||
p->next->prior=s;
|
||||
|
||||
// 第三步
|
||||
s->prior=p;
|
||||
|
||||
// 第四步
|
||||
p->next=s
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><p><strong>第一步和第二步必须再第四步之前</strong>,整体时间复杂度为:O(1)</p>
|
||||
<h3 id="删除结点" tabindex="-1"><a class="header-anchor" href="#删除结点" aria-hidden="true">#</a> 删除结点</h3>
|
||||
<blockquote>
|
||||
<p>删除双链表中结点p的后继结点q</p>
|
||||
</blockquote>
|
||||
<div class="language-C ext-C line-numbers-mode"><pre v-pre class="language-C"><code>
|
||||
// 第一步
|
||||
p->next=q->next;
|
||||
|
||||
// 第二步
|
||||
q->next->prior=p;
|
||||
|
||||
// 第三步
|
||||
free(q);
|
||||
|
||||
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p><strong>第一步和第二步顺序可换</strong>,整体时间复杂度为:O(1)</p>
|
||||
</template>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user