1
0
mirror of https://github.com/142vip/408CSFamily.git synced 2026-04-03 10:38:38 +08:00

feat: 修复 docs

This commit is contained in:
mmdapl
2022-04-24 09:08:22 +08:00
parent 7fcdfb829f
commit f5daee2ae3
145 changed files with 1 additions and 30388 deletions

BIN
.DS_Store vendored

Binary file not shown.

3
.gitignore vendored
View File

@@ -13,8 +13,7 @@ pids
*.pid.lock
# docs
docs
docs11
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

View File

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

View File

@@ -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": []
}

View File

@@ -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 = {
"&": "&",
"<": "&lt;",
">": "&gt;",
"'": "&#39;",
'"': "&quot;"
};
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 = {
"&amp;": "&",
"&#38;": "&",
"&lt;": "<",
"&#60;": "<",
"&gt;": ">",
"&#62;": ">",
"&apos;": "'",
"&#39;": "'",
"&quot;": '"',
"&#34;": '"'
};
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

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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": []
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1 +0,0 @@
<template></template>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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">&lt;</span>数据对象的定义<span class="token operator">></span>
数据关系<span class="token operator">&lt;</span>数据关系的定义<span class="token operator">></span>
基本操作<span class="token operator">&lt;</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>索引表的每一项称为索引项索引项的一般形式是&lt;关键字地址&gt;</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">&lt;</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&lt;1的时候例如-2就不需要循环此时时间复杂度可以理解为T(1)</li>
<li>当n&gt;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>

View File

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

View File

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

View File

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

View File

@@ -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>链接失效可以关注公众号或私信获取&quot;链接&quot;</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>

View File

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

View File

@@ -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>线性表是具有相同数据类型的nn0个数据元素的有限序列一般表示</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(&amp;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(&amp;L,i,e)</code><strong>插入操作</strong>在表的第i个位置上插入指定元素e</li>
<li><code>ListDelete(&amp;L,i,&amp;e)</code><strong>删除操作</strong>删除表中第i个位置的元素并用e返回删除元素的值</li>
<li><code>PrintList(L)</code><strong>输出操作</strong>按照前后顺序12....n输出线性表的所有元素值</li>
<li><code>Empty(L)</code><strong>判空操作</strong>当表L为空则返回true否则返回false</li>
<li><code>DestoryList(&amp;L)</code><strong>销毁操作</strong>将线性表销毁释放线性表L所占用的内存空间类似释放内存</li>
</ul>
<p>线性表是具有相同的数据类型的有限个数据元素组成的<strong>数据元素是由数据项组成的</strong></p>
</template>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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>理解的含义链条---&gt;捆绑指向------&gt;指针</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>无论链表是否为空头指针始终是指向头结点的头结点的非空指针空表中往往就只有头结点此时头结点的指针域为空可以有效避免头指针空指针异常问题-----&gt; <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站&amp;公众号】Rong姐姐好可爱
* @Date: 2020-03-04 23:38:04
* @LastEditors: 【B站&amp;公众号】Rong姐姐好可爱
* @LastEditTime: 2020-03-04 23:39:16
*/
LinkList CreateListWithStartNode(LinkList &amp;L){
LNode *s;
int x;
L=(LinkList)malloc(sizeof(LNode)); // 创建头结点L
L-&gt;next=NULL; // 初始化空链表
// 控制台输入值
scanf(&quot;%d&quot;,&amp;x);
// 输入9999 表示结束
while(x!==9999){
// 开辟新结点存储空间
s=(LNode*)malloc(sizeof(LNode));
// 结点数据域赋值
s-&gt;data=x;
// 修改指针新结点插入表中【注意L-&gt;next为头结点的指针域】
s-&gt;next=L-&gt;next;
L-&gt;next=s;
scanf(&quot;%d&quot;,&amp;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站&amp;公众号】Rong姐姐好可爱
* @Date: 2020-03-04 23:38:04
* @LastEditors: 【B站&amp;公众号】Rong姐姐好可爱
* @LastEditTime: 2020-03-04 23:39:16
*/
LinkList CreateListWithEndNode(LinkList &amp;L){
int x; // 输入结点值
L=(LinkList)malloc(sizeof(LNode));
LNode *s; // 新结点s
LNode *r=L; // r为尾指针
// 控制台输入值
scanf(&quot;%d&quot;,&amp;x);
while(x!==9999){
// 开辟新结点存储空间
s=(LNode *)malloc(sizeof(LNode));
// 新结点s的数据域赋值为x
s-&gt;data=x;
// 单链表L的尾指针指向新的结点s
r-&gt;next=s;
// 指针r指向新的表尾结点
r=s;
scanf(&quot;%d&quot;,&amp;x);
}
// 表尾指针置空【重要】
r-&gt;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站&amp;公众号】Rong姐姐好可爱
* @Date: 2020-03-04 23:38:04
* @LastEditors: 【B站&amp;公众号】Rong姐姐好可爱
* @LastEditTime: 2020-03-04 23:39:16
*/
LNode *GetElem(LinkList L,int i){
int j=1; // 查询计数初始为1
LNode *p=L-&gt;next; // 单链表头结点指针赋值给指针p
// 第0个元素则指向头结点返回头结点
if(i==0){
// 头结点包含数据域和指针域
return L;
}
// 不等于0却小于1则i为负数无效直接返回NULL查询结果空
if(i&lt;1){
return NULL;
}
// p存在且计数没有走到初始i的位置
while(p&amp;&amp;j&lt;i){
// 指针后移
p=p-&gt;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站&amp;公众号】Rong姐姐好可爱
* @Date: 2020-03-04 23:38:04
* @LastEditors: 【B站&amp;公众号】Rong姐姐好可爱
* @LastEditTime: 2020-03-04 23:39:16
*/
LNode *LocateElem(LinkList L,ElemType e){
// 指针【哨兵】
LNode *p=L-&gt;next;
// 从第1个结点开始查找数据域(data)为e的结点
while(p!=NULL&amp;&amp;p-&gt;data!=e){
// 无法匹配,指针后移
p=p-&gt;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-&gt;next=p-&gt;next;
p-&gt;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-&gt;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-&gt;next=p-&gt;next;
p-&gt;next=s;
// 经典的借助变量,进行值交换
temp=p-&gt;data;
p-&gt;data=s-&gt;data;
s-&gt;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-&gt;next;
// 修改指针,将删除位置结点元素前驱结点的指针域指向其后继结点
p-&gt;next=q-&gt;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-&gt;next;
// 结点p的后继结点元素赋值给结点p避免后继结点的数据域丢失
p-&gt;data=p-&gt;next-&gt;data;
p-&gt;next=q-&gt;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-&gt;next=NULL;
if(L-&gt;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>

View File

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

View File

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

View File

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

View File

@@ -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>目前活跃于BilibiliGithub上新注册了掘金微信公众号均可直接搜<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>

View File

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

View File

@@ -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">&lt;</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&lt;1的时候例如-2就不需要循环此时时间复杂度可以理解为T(1)</li>
<li>当n&gt;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>

View File

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

View File

@@ -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>索引表的每一项称为索引项索引项的一般形式是&lt;关键字地址&gt;</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>

View File

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

View File

@@ -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">&lt;</span>数据对象的定义<span class="token operator">></span>
数据关系<span class="token operator">&lt;</span>数据关系的定义<span class="token operator">></span>
基本操作<span class="token operator">&lt;</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>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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>线性表是具有相同数据类型的nn0个数据元素的有限序列一般表示</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(&amp;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(&amp;L,i,e)</code><strong>插入操作</strong>在表的第i个位置上插入指定元素e</li>
<li><code>ListDelete(&amp;L,i,&amp;e)</code><strong>删除操作</strong>删除表中第i个位置的元素并用e返回删除元素的值</li>
<li><code>PrintList(L)</code><strong>输出操作</strong>按照前后顺序12....n输出线性表的所有元素值</li>
<li><code>Empty(L)</code><strong>判空操作</strong>当表L为空则返回true否则返回false</li>
<li><code>DestoryList(&amp;L)</code><strong>销毁操作</strong>将线性表销毁释放线性表L所占用的内存空间类似释放内存</li>
</ul>
<p>线性表是具有相同的数据类型的有限个数据元素组成的<strong>数据元素是由数据项组成的</strong></p>
</template>

View File

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

View File

@@ -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>单链表-----&gt;循环单链表</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-&gt;next</code> 减少头指针到尾指针间的遍历时间复杂度:O(n)----&gt;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>双链表-----&gt;循环双链表</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-&gt;next=L</li>
<li>p-&gt;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>

View File

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

View File

@@ -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">ES6ES7ES8ES9ES10的新特性</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>相比前端作为偏后端的开发者 后端技术的学习则需要稳扎稳打不断积累整理在会用能用熟练的基础上更应该学习其中的原理所以若你为后端开发者不论JavaNodejsGo等技术栈对待下面将提及的微服务架构容器技术服务治理高可用等都需要努力学习抓住重点</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和面向对象语言JavaNet等很相似如果你之前有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>背靠国内一线互联网大厂阿里巴巴也是可适用于微服务下的配置管理支持JavaNodejs等主流语言目前生态良好技术支持表现一般属于Apollo替代产品</p>
</blockquote>
<h2 id="消息中间件" tabindex="-1"><a class="header-anchor" href="#消息中间件" aria-hidden="true">#</a> 消息中间件</h2>
<blockquote>
<p>消息队列已经逐渐成为企业IT系统内部通信的核心手段具有低耦合可靠投递广播流量控制最终一致性等一系列功能成为异步RPC的主要手段之一当今市面上有很多主流的消息中间件如老牌的ActiveMQRabbitMQ炙手可热的Kafka阿里巴巴自主开发RocketMQ等</p>
<p>目前个人了解的有RabbitMQKafkaRocketMQ</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 grafanazabbixlepus等</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==&amp;mid=2247483659&amp;idx=1&amp;sn=ac7b633a45ac06d388e0698163a2543e&amp;chksm=fcdfb887cba8319151aedfa80c5b59d130838af81fe51c76e5c4926f82f4937b51c8c0c1470e&amp;token=1304241434&amp;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==&amp;mid=2247483760&amp;idx=1&amp;sn=30a9fa2a051079c5330039615950c34d&amp;chksm=fcdfb8fccba831ea64644be501ecca3cea5846f16367faed9c84b44a30d9b6dc30456dae6548&amp;token=1304241434&amp;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==&amp;mid=2247483762&amp;idx=1&amp;sn=e9ea759f1c1589881cc3bd9cabddb70a&amp;chksm=fcdfb8fecba831e8c4635a4cefd302977071ed11a4dda6161cf9ad8458865297194f87cb013a&amp;token=1304241434&amp;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==&amp;mid=2247483770&amp;idx=1&amp;sn=6b760873a814f4e18baab415bee3d863&amp;chksm=fcdfb8f6cba831e00802de653ff6723a0bb169a93fe3a6a9762ee62d75d8cd88409268db9047&amp;token=1304241434&amp;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==&amp;mid=2247483778&amp;idx=1&amp;sn=3d9f623c58d595f75d7092783a6c5abe&amp;chksm=fcdfb80ecba83118e76de1ed88a5be51229e4145182aee6e0bcc13e4697707cf9f4609d8799d&amp;token=1304241434&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-07-31CSDN关注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==&amp;mid=2247483790&amp;idx=1&amp;sn=76e13ac79ad498309542c9f41878bb1c&amp;chksm=fcdfb802cba8311456ea9ff3309c4354055022cd0056b13c11fac44252231550e17a03f26f29&amp;token=639111151&amp;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==&amp;mid=2247483805&amp;idx=1&amp;sn=4da4e0d3a2912aee146248c1d8f7f96f&amp;chksm=fcdfb811cba83107fd8f08d3e35af7c72bf7d908d577ad83e45d80b0e9d1bbdbf16b1f169d64&amp;token=639111151&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-08-03JavaScript基础介绍和快速入门<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==&amp;mid=2247484600&amp;idx=1&amp;sn=489aa1bd12487b0bf8f2a7694f4ca1aa&amp;chksm=fcdfbd34cba83422f0afee027747d9e95773e093fa3a24225c2729029c4392bf42043964782f&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-01Redis的简单安装和部署 <ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484600&amp;idx=2&amp;sn=a9962c6ca3a5eddd085bcd15617f64d9&amp;chksm=fcdfbd34cba83422b987020a858b7cf31bfde6033642d697d5a00ad9ed618f3cf14deb207d67&amp;token=1613702159&amp;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==&amp;mid=2247484702&amp;idx=1&amp;sn=6e3e862153755d9e61f5f4ebf220381d&amp;chksm=fcdfbc92cba835844e8b6fd37d86a34ccf83342895f448c88ba5b62db974eb536a8e74a121aa&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-03shell编程基础整理 <ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484702&amp;idx=2&amp;sn=c7589eecbe58ff8939f72c0ff0bf567d&amp;chksm=fcdfbc92cba83584b03dfeea7290606ce8249b0c3105b0b3b95a9087c77e3b1c7f863d8e30f9&amp;token=1613702159&amp;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==&amp;mid=2247484711&amp;idx=1&amp;sn=bf362439ccfad04da53ce65c824a988d&amp;chksm=fcdfbcabcba835bddc43c40fd3a454793adf7849a5d5bb356825d481b82ae3e58a749859502c&amp;token=1613702159&amp;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==&amp;mid=2247484759&amp;idx=1&amp;sn=e0f8a7a70ddede75d94b202ddc6106d6&amp;chksm=fcdfbcdbcba835cd2138658d750f7e09a820b34daf4624f253a21a11b5de56635d35e4c0df19&amp;token=1613702159&amp;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==&amp;mid=2247484759&amp;idx=2&amp;sn=ade86739c94f99f944a3d387bc7e13ef&amp;chksm=fcdfbcdbcba835cd192c3b7b7eeea8f5dbb16b2b2fa58b6e2094184f5aa3341927a6d1fad6f8&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-06GitHub简单使用 <ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484771&amp;idx=1&amp;sn=6ae4c6e8d333b0e1aa5cd1aee161d9b8&amp;chksm=fcdfbcefcba835f94e3c0abc189477f241f675f38a63eb03bd320447e89da39cb08b72038ba3&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-07MySQL日志类型把我难哭了你学废了吗<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484783&amp;idx=1&amp;sn=b9e82a2c2b04b7050d0659085af537ef&amp;chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&amp;token=639111151&amp;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==&amp;mid=2247484783&amp;idx=1&amp;sn=b9e82a2c2b04b7050d0659085af537ef&amp;chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&amp;token=639111151&amp;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==&amp;mid=2247484784&amp;idx=1&amp;sn=ae73f1f4e53b622039a75ec41cabe378&amp;chksm=fcdfbcfccba835eafefe304913e4078cf8dfac22f62fd9d686b307bbdf46d147016f5e876e05&amp;token=639111151&amp;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==&amp;mid=2247484815&amp;idx=1&amp;sn=10d26a600112ec4f95b3b3f470955744&amp;chksm=fcdfbc03cba83515b07f0ae6cee791d1fb5fd619364cff3a17a4deab91333f0a6277b09a66a9&amp;token=639111151&amp;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==&amp;mid=2247484815&amp;idx=2&amp;sn=94a6455ed6b17fa5b27e96358e935803&amp;chksm=fcdfbc03cba83515d13dcfc2dea2445085a34ff4360e0a367fd914bb04bc6ba18a780a0cd2d2&amp;token=639111151&amp;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==&amp;mid=2247484815&amp;idx=3&amp;sn=38a289efffda9510b5ff04c5bed0663e&amp;chksm=fcdfbc03cba835154c888b9d7f86eac85c250eefb9d053687173274373f2f8d7b19fc307e76a&amp;token=639111151&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-13PM2进程管理给我学<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484823&amp;idx=1&amp;sn=d41bb8da02585cf9ea8d0b3ef27e3dbb&amp;chksm=fcdfbc1bcba8350d84ba2f01eaf187cbaa2d4cf5a9078beb1f2fafe94edb0126c82595ed8191&amp;token=368257571&amp;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==&amp;mid=2247484837&amp;idx=1&amp;sn=7f0de3eeea3fc6ee299587704f5c44cd&amp;chksm=fcdfbc29cba8353fd894582da7ae2c93b5920c4dbb1e197b011a817dc0962e317842a32d5560&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-16ELK基础概念与常用架构整理<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484850&amp;idx=1&amp;sn=7af55ef3a7d843d9c43de6d6c7911da3&amp;chksm=fcdfbc3ecba835287b2c644cda606454a713d370fbd7d14714b22a04277f7a7784b96b8b277e&amp;token=368257571&amp;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==&amp;mid=2247484850&amp;idx=2&amp;sn=c59839c677d7c9652a09d1f8c70ef8d6&amp;chksm=fcdfbc3ecba83528cf8271a2615129340a6f11954b6d9396160d0fb2c41593253d5e3510a031&amp;token=368257571&amp;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==&amp;mid=2247484865&amp;idx=2&amp;sn=63e6b669341217135013816464dd5bd9&amp;chksm=fcdfbc4dcba8355b4de0f712047709425a35fa3b122378b31f0e4db3afb82dfd38872862aab4&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-20express()函数整理<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484865&amp;idx=1&amp;sn=e39e3547da49f40e1b64deadf9a9cfef&amp;chksm=fcdfbc4dcba8355bfa9c8b9531a463fc652b764064528dd6c243f47a157b20e017bad3f410f4&amp;token=368257571&amp;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==&amp;mid=2247484897&amp;idx=1&amp;sn=b1073522cfd3ce6ebbe85e85ad4e35e0&amp;chksm=fcdfbc6dcba8357bdb212c9db1378a045d0dcfd95b79ed05688180f05d2b391f9b724d0d752f&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-22Nginx安装详解我服务器上也是这样的<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484897&amp;idx=2&amp;sn=34c61ed01c6522d2861be3342ec12ad5&amp;chksm=fcdfbc6dcba8357b76eb0fe6c502d932def6cd232297b010f9b2f9a1fca35c38df77dacce7f2&amp;token=368257571&amp;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==&amp;mid=2247484929&amp;idx=1&amp;sn=394783dd2bfd65da24ae6dcb89d69ec6&amp;chksm=fcdfbf8dcba8369b926b7083bbe3515aa5857f7589acc3f9d6d4987c67539a76dbd6e3cb70a1&amp;token=368257571&amp;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==&amp;mid=2247484943&amp;idx=1&amp;sn=ad37db87dc40f381fd18cc828e492384&amp;chksm=fcdfbf83cba8369598fc2773b63df235a9719b43749e7daab753c621fef5af4fba054dbb46ea&amp;token=368257571&amp;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==&amp;mid=2247484951&amp;idx=1&amp;sn=edddf3d6c8f3fc6dd1d14063b536c732&amp;chksm=fcdfbf9bcba8368d81ddffcbd258f7e4b7fb573d2a8963859e1b156e8a5f5d81f5629c49be6e&amp;token=368257571&amp;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==&amp;mid=2247484968&amp;idx=1&amp;sn=d37960ed81044fbf314440af85049d65&amp;chksm=fcdfbfa4cba836b25082535910f7137d1513d834d54fbfadf48a433b29511ccf4d532f19b88a&amp;token=368257571&amp;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==&amp;mid=2247484988&amp;idx=1&amp;sn=947c487946fa3574d33e9c6861a1ee28&amp;chksm=fcdfbfb0cba836a626d2efa904a5177c2e0916c381b26c89b6dcfc610a380b906d4480f7cc9b&amp;token=368257571&amp;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==&amp;mid=2247485002&amp;idx=1&amp;sn=3760eba58f7ded433b71bec48b89a681&amp;chksm=fcdfbfc6cba836d0b7db1f2aa5a4a884f68f8ce20a59aa44b4ac46c59eb4dd1c233079241a4a&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-11-0111你好<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247485042&amp;idx=1&amp;sn=181ae5062c31ee7931390607b6f10358&amp;chksm=fcdfbffecba836e8275c849007470db6964f7cd675af59fe73c94369334d17d4840e8c0413d5&amp;token=898438314&amp;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==&amp;mid=2247485053&amp;idx=1&amp;sn=ed2fe0de87b70781cdb7755ef4726340&amp;chksm=fcdfbff1cba836e7165dc53722aaf96ef38d8f43cfadadcb4695d8ff430ea64619caada81cfa&amp;token=1939941957&amp;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==&amp;mid=2247485066&amp;idx=1&amp;sn=1d357917f548a6d977af96c6582db527&amp;chksm=fcdfbf06cba836103152f7a3fdfbf97c1be2472a84f824cbddd532c15aefe14c71b3b076233f&amp;token=831506871&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-11-3011月的尾巴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==&amp;mid=2247485080&amp;idx=2&amp;sn=bdc551f2e9bf54dc01881979339af8ad&amp;chksm=fcdfbf14cba836022a05854547cbca03b5a08b912a0e0f195d4856d6b53ecd78aee2f167b515&amp;token=1581389686&amp;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==&amp;mid=2247485100&amp;idx=1&amp;sn=e7c0c41229d51ebfab2939deb1751672&amp;chksm=fcdfbf20cba836364da35ab5acfed076876aae486126bc1c41cdd2502cc89a41cbde7c645610&amp;token=1054397108&amp;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==&amp;mid=2247485136&amp;idx=1&amp;sn=4619fb835e6d57e106ab01116012662a&amp;chksm=fcdfbf5ccba8364aecddf14d11ed8ba36f38050b83b30b8d46e10f86b164aab05322b8455b36&amp;token=755050934&amp;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==&amp;mid=2247485180&amp;idx=1&amp;sn=15ab9be3e15130103f26c919cbe0b605&amp;chksm=fcdfbf70cba83666d287acc35485d02ddf67bacad6ea46d9ef04521f9f429fcb015d371c918e&amp;token=1356818265&amp;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==&amp;mid=2247485228&amp;idx=1&amp;sn=1c30866a209af2a5eb927fd7bd63cc8b&amp;chksm=fcdfbea0cba837b6d4cf9865b72a6a1553c4d9b6a6cce369bb09f66730ab37ec649071e7ab7c&amp;token=1356818265&amp;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==&amp;mid=2247485249&amp;idx=1&amp;sn=dadf2a6dbed1879bbd98c62491436a9c&amp;chksm=fcdfbecdcba837db5c11b8023ffa7ad6cf5a47c03027a0029604a50d0a77c75908efc05af39a&amp;token=1356818265&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2021-01-152020小结没事就点点看看呗反正小目标都没完成<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247485258&amp;idx=1&amp;sn=fb71007a5feed8e18674be27b1c749ab&amp;chksm=fcdfbec6cba837d099e90a5f45781ee8cac474388e25ad9383a4fbc05fdb16a8e1377265c018&amp;token=1356818265&amp;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==&amp;mid=2247485277&amp;idx=1&amp;sn=9eb7c3cef21ace2cc5853e382f2bb03f&amp;chksm=fcdfbed1cba837c7839f3b57836f43b3425c8b5a7888f543bf4a1dd8b39cd82ed7d51a24a685&amp;token=1356818265&amp;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==&amp;mid=2247485291&amp;idx=1&amp;sn=19f13df8131a9f662973f2d9240c1eab&amp;chksm=fcdfbee7cba837f180d8ad30735cd61e6c73fe195e63d46046bb24f80e1536aa0a585c3e1015&amp;token=1356818265&amp;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==&amp;mid=2247485318&amp;idx=1&amp;sn=6ae5fc9f1cf994818ff89d53a926761e&amp;chksm=fcdfbe0acba8371c9d0025008084857cf14c52b01dfb1b9460d3388ba543c36da2abcbf90216&amp;token=1356818265&amp;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==&amp;mid=2247485341&amp;idx=1&amp;sn=fc493c28ab138056567e916b769ddbf2&amp;chksm=fcdfbe11cba8370793e8e0d71e7766f4e1e7f3e8672921d6b98757f7d7b271b290f3edc65d6f&amp;token=1356818265&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2021-01-30ORM框架入门之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==&amp;mid=2247485376&amp;idx=1&amp;sn=049a5df5cb97786e80aded38a1bf3732&amp;chksm=fcdfbe4ccba8375a52cb8d7077836216e5f5f41ee9453aebf524eb0a5d8a5db48cbabc11f3e4&amp;token=1356818265&amp;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==&amp;mid=2247485404&amp;idx=1&amp;sn=276100858df23daf987dbc68997477df&amp;chksm=fcdfbe50cba837460079fc9ab414754a49668f82dc0f6a5a41ec320d3e5dd77c1a8c271e061b&amp;token=1356818265&amp;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==&amp;mid=2247485420&amp;idx=1&amp;sn=26c0e3690363af5dddd805ae417eeee9&amp;chksm=fcdfbe60cba8377645e44333ccbe35147b9844578008e5699aba62b82c12fc03634e2d68781c&amp;token=1356818265&amp;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>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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">ES6ES7ES8ES9ES10的新特性</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>相比前端作为偏后端的开发者 后端技术的学习则需要稳扎稳打不断积累整理在会用能用熟练的基础上更应该学习其中的原理所以若你为后端开发者不论JavaNodejsGo等技术栈对待下面将提及的微服务架构容器技术服务治理高可用等都需要努力学习抓住重点</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和面向对象语言JavaNet等很相似如果你之前有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>背靠国内一线互联网大厂阿里巴巴也是可适用于微服务下的配置管理支持JavaNodejs等主流语言目前生态良好技术支持表现一般属于Apollo替代产品</p>
</blockquote>
<h2 id="消息中间件" tabindex="-1"><a class="header-anchor" href="#消息中间件" aria-hidden="true">#</a> 消息中间件</h2>
<blockquote>
<p>消息队列已经逐渐成为企业IT系统内部通信的核心手段具有低耦合可靠投递广播流量控制最终一致性等一系列功能成为异步RPC的主要手段之一当今市面上有很多主流的消息中间件如老牌的ActiveMQRabbitMQ炙手可热的Kafka阿里巴巴自主开发RocketMQ等</p>
<p>目前个人了解的有RabbitMQKafkaRocketMQ</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 grafanazabbixlepus等</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==&amp;mid=2247483659&amp;idx=1&amp;sn=ac7b633a45ac06d388e0698163a2543e&amp;chksm=fcdfb887cba8319151aedfa80c5b59d130838af81fe51c76e5c4926f82f4937b51c8c0c1470e&amp;token=1304241434&amp;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==&amp;mid=2247483760&amp;idx=1&amp;sn=30a9fa2a051079c5330039615950c34d&amp;chksm=fcdfb8fccba831ea64644be501ecca3cea5846f16367faed9c84b44a30d9b6dc30456dae6548&amp;token=1304241434&amp;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==&amp;mid=2247483762&amp;idx=1&amp;sn=e9ea759f1c1589881cc3bd9cabddb70a&amp;chksm=fcdfb8fecba831e8c4635a4cefd302977071ed11a4dda6161cf9ad8458865297194f87cb013a&amp;token=1304241434&amp;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==&amp;mid=2247483770&amp;idx=1&amp;sn=6b760873a814f4e18baab415bee3d863&amp;chksm=fcdfb8f6cba831e00802de653ff6723a0bb169a93fe3a6a9762ee62d75d8cd88409268db9047&amp;token=1304241434&amp;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==&amp;mid=2247483778&amp;idx=1&amp;sn=3d9f623c58d595f75d7092783a6c5abe&amp;chksm=fcdfb80ecba83118e76de1ed88a5be51229e4145182aee6e0bcc13e4697707cf9f4609d8799d&amp;token=1304241434&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-07-31CSDN关注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==&amp;mid=2247483790&amp;idx=1&amp;sn=76e13ac79ad498309542c9f41878bb1c&amp;chksm=fcdfb802cba8311456ea9ff3309c4354055022cd0056b13c11fac44252231550e17a03f26f29&amp;token=639111151&amp;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==&amp;mid=2247483805&amp;idx=1&amp;sn=4da4e0d3a2912aee146248c1d8f7f96f&amp;chksm=fcdfb811cba83107fd8f08d3e35af7c72bf7d908d577ad83e45d80b0e9d1bbdbf16b1f169d64&amp;token=639111151&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-08-03JavaScript基础介绍和快速入门<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==&amp;mid=2247484600&amp;idx=1&amp;sn=489aa1bd12487b0bf8f2a7694f4ca1aa&amp;chksm=fcdfbd34cba83422f0afee027747d9e95773e093fa3a24225c2729029c4392bf42043964782f&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-01Redis的简单安装和部署 <ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484600&amp;idx=2&amp;sn=a9962c6ca3a5eddd085bcd15617f64d9&amp;chksm=fcdfbd34cba83422b987020a858b7cf31bfde6033642d697d5a00ad9ed618f3cf14deb207d67&amp;token=1613702159&amp;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==&amp;mid=2247484702&amp;idx=1&amp;sn=6e3e862153755d9e61f5f4ebf220381d&amp;chksm=fcdfbc92cba835844e8b6fd37d86a34ccf83342895f448c88ba5b62db974eb536a8e74a121aa&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-03shell编程基础整理 <ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484702&amp;idx=2&amp;sn=c7589eecbe58ff8939f72c0ff0bf567d&amp;chksm=fcdfbc92cba83584b03dfeea7290606ce8249b0c3105b0b3b95a9087c77e3b1c7f863d8e30f9&amp;token=1613702159&amp;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==&amp;mid=2247484711&amp;idx=1&amp;sn=bf362439ccfad04da53ce65c824a988d&amp;chksm=fcdfbcabcba835bddc43c40fd3a454793adf7849a5d5bb356825d481b82ae3e58a749859502c&amp;token=1613702159&amp;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==&amp;mid=2247484759&amp;idx=1&amp;sn=e0f8a7a70ddede75d94b202ddc6106d6&amp;chksm=fcdfbcdbcba835cd2138658d750f7e09a820b34daf4624f253a21a11b5de56635d35e4c0df19&amp;token=1613702159&amp;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==&amp;mid=2247484759&amp;idx=2&amp;sn=ade86739c94f99f944a3d387bc7e13ef&amp;chksm=fcdfbcdbcba835cd192c3b7b7eeea8f5dbb16b2b2fa58b6e2094184f5aa3341927a6d1fad6f8&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-06GitHub简单使用 <ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484771&amp;idx=1&amp;sn=6ae4c6e8d333b0e1aa5cd1aee161d9b8&amp;chksm=fcdfbcefcba835f94e3c0abc189477f241f675f38a63eb03bd320447e89da39cb08b72038ba3&amp;token=1613702159&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-07MySQL日志类型把我难哭了你学废了吗<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484783&amp;idx=1&amp;sn=b9e82a2c2b04b7050d0659085af537ef&amp;chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&amp;token=639111151&amp;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==&amp;mid=2247484783&amp;idx=1&amp;sn=b9e82a2c2b04b7050d0659085af537ef&amp;chksm=fcdfbce3cba835f5e692f5ffbb16505dbf3b5ccc9bb0bdf4b3f467629b293d0e0ce3086ec8dc&amp;token=639111151&amp;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==&amp;mid=2247484784&amp;idx=1&amp;sn=ae73f1f4e53b622039a75ec41cabe378&amp;chksm=fcdfbcfccba835eafefe304913e4078cf8dfac22f62fd9d686b307bbdf46d147016f5e876e05&amp;token=639111151&amp;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==&amp;mid=2247484815&amp;idx=1&amp;sn=10d26a600112ec4f95b3b3f470955744&amp;chksm=fcdfbc03cba83515b07f0ae6cee791d1fb5fd619364cff3a17a4deab91333f0a6277b09a66a9&amp;token=639111151&amp;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==&amp;mid=2247484815&amp;idx=2&amp;sn=94a6455ed6b17fa5b27e96358e935803&amp;chksm=fcdfbc03cba83515d13dcfc2dea2445085a34ff4360e0a367fd914bb04bc6ba18a780a0cd2d2&amp;token=639111151&amp;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==&amp;mid=2247484815&amp;idx=3&amp;sn=38a289efffda9510b5ff04c5bed0663e&amp;chksm=fcdfbc03cba835154c888b9d7f86eac85c250eefb9d053687173274373f2f8d7b19fc307e76a&amp;token=639111151&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-13PM2进程管理给我学<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484823&amp;idx=1&amp;sn=d41bb8da02585cf9ea8d0b3ef27e3dbb&amp;chksm=fcdfbc1bcba8350d84ba2f01eaf187cbaa2d4cf5a9078beb1f2fafe94edb0126c82595ed8191&amp;token=368257571&amp;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==&amp;mid=2247484837&amp;idx=1&amp;sn=7f0de3eeea3fc6ee299587704f5c44cd&amp;chksm=fcdfbc29cba8353fd894582da7ae2c93b5920c4dbb1e197b011a817dc0962e317842a32d5560&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-16ELK基础概念与常用架构整理<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484850&amp;idx=1&amp;sn=7af55ef3a7d843d9c43de6d6c7911da3&amp;chksm=fcdfbc3ecba835287b2c644cda606454a713d370fbd7d14714b22a04277f7a7784b96b8b277e&amp;token=368257571&amp;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==&amp;mid=2247484850&amp;idx=2&amp;sn=c59839c677d7c9652a09d1f8c70ef8d6&amp;chksm=fcdfbc3ecba83528cf8271a2615129340a6f11954b6d9396160d0fb2c41593253d5e3510a031&amp;token=368257571&amp;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==&amp;mid=2247484865&amp;idx=2&amp;sn=63e6b669341217135013816464dd5bd9&amp;chksm=fcdfbc4dcba8355b4de0f712047709425a35fa3b122378b31f0e4db3afb82dfd38872862aab4&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-20express()函数整理<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484865&amp;idx=1&amp;sn=e39e3547da49f40e1b64deadf9a9cfef&amp;chksm=fcdfbc4dcba8355bfa9c8b9531a463fc652b764064528dd6c243f47a157b20e017bad3f410f4&amp;token=368257571&amp;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==&amp;mid=2247484897&amp;idx=1&amp;sn=b1073522cfd3ce6ebbe85e85ad4e35e0&amp;chksm=fcdfbc6dcba8357bdb212c9db1378a045d0dcfd95b79ed05688180f05d2b391f9b724d0d752f&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-09-22Nginx安装详解我服务器上也是这样的<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247484897&amp;idx=2&amp;sn=34c61ed01c6522d2861be3342ec12ad5&amp;chksm=fcdfbc6dcba8357b76eb0fe6c502d932def6cd232297b010f9b2f9a1fca35c38df77dacce7f2&amp;token=368257571&amp;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==&amp;mid=2247484929&amp;idx=1&amp;sn=394783dd2bfd65da24ae6dcb89d69ec6&amp;chksm=fcdfbf8dcba8369b926b7083bbe3515aa5857f7589acc3f9d6d4987c67539a76dbd6e3cb70a1&amp;token=368257571&amp;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==&amp;mid=2247484943&amp;idx=1&amp;sn=ad37db87dc40f381fd18cc828e492384&amp;chksm=fcdfbf83cba8369598fc2773b63df235a9719b43749e7daab753c621fef5af4fba054dbb46ea&amp;token=368257571&amp;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==&amp;mid=2247484951&amp;idx=1&amp;sn=edddf3d6c8f3fc6dd1d14063b536c732&amp;chksm=fcdfbf9bcba8368d81ddffcbd258f7e4b7fb573d2a8963859e1b156e8a5f5d81f5629c49be6e&amp;token=368257571&amp;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==&amp;mid=2247484968&amp;idx=1&amp;sn=d37960ed81044fbf314440af85049d65&amp;chksm=fcdfbfa4cba836b25082535910f7137d1513d834d54fbfadf48a433b29511ccf4d532f19b88a&amp;token=368257571&amp;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==&amp;mid=2247484988&amp;idx=1&amp;sn=947c487946fa3574d33e9c6861a1ee28&amp;chksm=fcdfbfb0cba836a626d2efa904a5177c2e0916c381b26c89b6dcfc610a380b906d4480f7cc9b&amp;token=368257571&amp;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==&amp;mid=2247485002&amp;idx=1&amp;sn=3760eba58f7ded433b71bec48b89a681&amp;chksm=fcdfbfc6cba836d0b7db1f2aa5a4a884f68f8ce20a59aa44b4ac46c59eb4dd1c233079241a4a&amp;token=368257571&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-11-0111你好<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247485042&amp;idx=1&amp;sn=181ae5062c31ee7931390607b6f10358&amp;chksm=fcdfbffecba836e8275c849007470db6964f7cd675af59fe73c94369334d17d4840e8c0413d5&amp;token=898438314&amp;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==&amp;mid=2247485053&amp;idx=1&amp;sn=ed2fe0de87b70781cdb7755ef4726340&amp;chksm=fcdfbff1cba836e7165dc53722aaf96ef38d8f43cfadadcb4695d8ff430ea64619caada81cfa&amp;token=1939941957&amp;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==&amp;mid=2247485066&amp;idx=1&amp;sn=1d357917f548a6d977af96c6582db527&amp;chksm=fcdfbf06cba836103152f7a3fdfbf97c1be2472a84f824cbddd532c15aefe14c71b3b076233f&amp;token=831506871&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2020-11-3011月的尾巴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==&amp;mid=2247485080&amp;idx=2&amp;sn=bdc551f2e9bf54dc01881979339af8ad&amp;chksm=fcdfbf14cba836022a05854547cbca03b5a08b912a0e0f195d4856d6b53ecd78aee2f167b515&amp;token=1581389686&amp;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==&amp;mid=2247485100&amp;idx=1&amp;sn=e7c0c41229d51ebfab2939deb1751672&amp;chksm=fcdfbf20cba836364da35ab5acfed076876aae486126bc1c41cdd2502cc89a41cbde7c645610&amp;token=1054397108&amp;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==&amp;mid=2247485136&amp;idx=1&amp;sn=4619fb835e6d57e106ab01116012662a&amp;chksm=fcdfbf5ccba8364aecddf14d11ed8ba36f38050b83b30b8d46e10f86b164aab05322b8455b36&amp;token=755050934&amp;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==&amp;mid=2247485180&amp;idx=1&amp;sn=15ab9be3e15130103f26c919cbe0b605&amp;chksm=fcdfbf70cba83666d287acc35485d02ddf67bacad6ea46d9ef04521f9f429fcb015d371c918e&amp;token=1356818265&amp;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==&amp;mid=2247485228&amp;idx=1&amp;sn=1c30866a209af2a5eb927fd7bd63cc8b&amp;chksm=fcdfbea0cba837b6d4cf9865b72a6a1553c4d9b6a6cce369bb09f66730ab37ec649071e7ab7c&amp;token=1356818265&amp;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==&amp;mid=2247485249&amp;idx=1&amp;sn=dadf2a6dbed1879bbd98c62491436a9c&amp;chksm=fcdfbecdcba837db5c11b8023ffa7ad6cf5a47c03027a0029604a50d0a77c75908efc05af39a&amp;token=1356818265&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2021-01-152020小结没事就点点看看呗反正小目标都没完成<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s?__biz=MzU3MTUxOTIwMw==&amp;mid=2247485258&amp;idx=1&amp;sn=fb71007a5feed8e18674be27b1c749ab&amp;chksm=fcdfbec6cba837d099e90a5f45781ee8cac474388e25ad9383a4fbc05fdb16a8e1377265c018&amp;token=1356818265&amp;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==&amp;mid=2247485277&amp;idx=1&amp;sn=9eb7c3cef21ace2cc5853e382f2bb03f&amp;chksm=fcdfbed1cba837c7839f3b57836f43b3425c8b5a7888f543bf4a1dd8b39cd82ed7d51a24a685&amp;token=1356818265&amp;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==&amp;mid=2247485291&amp;idx=1&amp;sn=19f13df8131a9f662973f2d9240c1eab&amp;chksm=fcdfbee7cba837f180d8ad30735cd61e6c73fe195e63d46046bb24f80e1536aa0a585c3e1015&amp;token=1356818265&amp;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==&amp;mid=2247485318&amp;idx=1&amp;sn=6ae5fc9f1cf994818ff89d53a926761e&amp;chksm=fcdfbe0acba8371c9d0025008084857cf14c52b01dfb1b9460d3388ba543c36da2abcbf90216&amp;token=1356818265&amp;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==&amp;mid=2247485341&amp;idx=1&amp;sn=fc493c28ab138056567e916b769ddbf2&amp;chksm=fcdfbe11cba8370793e8e0d71e7766f4e1e7f3e8672921d6b98757f7d7b271b290f3edc65d6f&amp;token=1356818265&amp;lang=zh_CN#rd" target="_blank" rel="noopener noreferrer">2021-01-30ORM框架入门之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==&amp;mid=2247485376&amp;idx=1&amp;sn=049a5df5cb97786e80aded38a1bf3732&amp;chksm=fcdfbe4ccba8375a52cb8d7077836216e5f5f41ee9453aebf524eb0a5d8a5db48cbabc11f3e4&amp;token=1356818265&amp;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==&amp;mid=2247485404&amp;idx=1&amp;sn=276100858df23daf987dbc68997477df&amp;chksm=fcdfbe50cba837460079fc9ab414754a49668f82dc0f6a5a41ec320d3e5dd77c1a8c271e061b&amp;token=1356818265&amp;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==&amp;mid=2247485420&amp;idx=1&amp;sn=26c0e3690363af5dddd805ae417eeee9&amp;chksm=fcdfbe60cba8377645e44333ccbe35147b9844578008e5699aba62b82c12fc03634e2d68781c&amp;token=1356818265&amp;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>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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-&gt;next=p-&gt;next;
// 第二步
p-&gt;next-&gt;prior=s;
// 第三步
s-&gt;prior=p;
// 第四步
p-&gt;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-&gt;next=q-&gt;next;
// 第二步
q-&gt;next-&gt;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