Hello Vuepress

2021-10-3 About 2 min

# 遇到的问题

在根目录的readme中设置footer内容时使用双引号,会出现YAML Exception。项目无法正常编译。

# math

安装 markdown-it-katex 插件

yarn add markdown-it-katex -D
1

再设置

// .vuepress/config.js
module.exports = {
  markdown: {
    // 开启代码块行号
    lineNumbers: true,
    // 选择目录层级
    toc: { includeLevel: [1, 2, 3] },
    // 加载插件
    extendMarkdown: md => {
      // use more markdown-it plugins!
      md.use(require('markdown-it-katex'))
    }
  },
  // 要使 markdown-it-katex 插件生效,还需要设置在每个 html 的 <head> 部分,加上一些依赖的引用。
  head: [
    ['link', {
      rel: 'stylesheet',
      href: 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css'
    }],
    ['link', {
      rel: "stylesheet",
      href: "https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/2.10.0/github-markdown.min.css"
    }],
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

效果如下:
1n=n12\frac 1n = n^2_1

[cosϕsinϕsinϕcosϕ][λ100λ2][cosϕsinϕsinϕcosϕ]=[λ1cos2ϕ+λ2sin2ϕ(λ2λ1)cosϕsinϕ(λ2λ1)cosϕsinϕλ2cos2ϕ+λ1sin2ϕ]\begin{array}{r} {\left[\begin{array}{rr} \cos \phi & \sin \phi \\ -\sin \phi & \cos \phi \end{array}\right]\left[\begin{array}{cc} \lambda_{1} & 0 \\ 0 & \lambda_{2} \end{array}\right]\left[\begin{array}{cc} \cos \phi & -\sin \phi \\ \sin \phi & \cos \phi \end{array}\right]=} {\left[\begin{array}{ll} \lambda_{1} \cos ^{2} \phi+\lambda_{2} \sin ^{2} \phi & \left(\lambda_{2}-\lambda_{1}\right) \cos \phi \sin \phi \\ \left(\lambda_{2}-\lambda_{1}\right) \cos \phi \sin \phi & \lambda_{2} \cos ^{2} \phi+\lambda_{1} \sin ^{2} \phi \end{array}\right]} \end{array}

# git hub tables

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

# container

Tips

this is tips

Note

this is warning

STOP

this is danger warning

custom title

more details here

# 语法高亮

代码块内某些行高亮。{}里面行号之间不能有空格。


 



 


#version 330 core
(layout location = 0) in vec3 a_Pos

void main()
{
    gl_Position = a_Pos;
}
1
2
3
4
5
6
7

# 部署

按文档来,没成功。git push -f xxxxx master 会在github库中新建一个master分支,而且有时候推送失败,原因不明。
因为我安装了 wsl2,执行bash命令会进入Ubantu18.04,也导致shell脚本出错。
最终,解决方法如下:

在package.json中添加npm命令,用于执行shell脚本。




 


"scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs",
    "docs:deploy": "deploy.sh"
  },
1
2
3
4
5

手动clone GithubPage关联库 https://github.com/username/username.github.io.git 到本地,并放在目录project/docs/.vuepress/下。(和生成的dist目录同级)

deploy.sh内容为

#!/usr/bin/env sh

# abort on errors
set -e

# build
npm run docs:build

# navigate into the build output directory
cd docs/.vuepress/dist

# 将一个目录下的一些文件移动到另一个目录下
cp -R * ../username.github.io

cd ../username.github.io

git add -A
git commit -m 'deploy'
git push

cd -

# 执行完不立即退出shell,便于查看错误信息。
read -n 1 -p 'Press any key to continue...'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

deploy.sh 实际上完成了三件事

  1. 执行 npm run docs:build 生成要发布的内容。(重复生成时 dist 文件夹会先被清空,再生成新文件。)
  2. 将 dist 文件夹中的所有文件都复制到 username.githbu.io 文件夹中
  3. 在 username.githbu.io 文件夹中(GithubPage关联的库),提交修改并推送到远程库

# 全局Computed

因为 ketex 公式分隔符是 'dollar', 和 vue 提供的全局变量前缀冲突了。所以一页只能有一个全局变量保持正常。
site = { "title": "Leonhardt's Blog", "description": "想,都是问题。做,才是答案。", "base": "/", "headTags": [ [ "script", { "src": "https://cdn.jsdelivr.net/npm/react/umd/react.production.min.js" } ], [ "script", { "src": "https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.production.min.js" } ], [ "script", { "src": "https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js" } ], [ "script", { "src": "https://cdn.jsdelivr.net/npm/@babel/standalone/babel.min.js" } ], [ "link", { "rel": "alternate", "type": "application/atom+xml", "href": "https://kigane.github.io/atom.xml", "title": "Leonhardt's Blog Atom Feed" } ], [ "link", { "rel": "alternate", "type": "application/json", "href": "https://kigane.github.io/feed.json", "title": "Leonhardt's Blog JSON Feed" } ], [ "link", { "rel": "alternate", "type": "application/rss+xml", "href": "https://kigane.github.io/rss.xml", "title": "Leonhardt's Blog RSS Feed" } ], [ "link", { "rel": "icon", "href": "/favicon.ico" } ], [ "link", { "rel": "icon", "href": "/assets/icon/chrome-mask-512.png", "type": "image/png", "sizes": "512x512" } ], [ "link", { "rel": "icon", "href": "/assets/icon/chrome-mask-192.png", "type": "image/png", "sizes": "192x192" } ], [ "link", { "rel": "icon", "href": "/assets/icon/chrome-512.png", "type": "image/png", "sizes": "512x512" } ], [ "link", { "rel": "icon", "href": "/assets/icon/chrome-192.png", "type": "image/png", "sizes": "192x192" } ], [ "link", { "rel": "manifest", "href": "/manifest.webmanifest", "crossorigin": "use-credentials" } ], [ "meta", { "name": "theme-color", "content": "#46bd87" } ], [ "link", { "rel": "apple-touch-icon", "href": "/assets/icon/apple-icon-152.png" } ], [ "meta", { "name": "apple-mobile-web-app-capable", "content": "yes" } ], [ "meta", { "name": "apple-mobile-web-app-status-bar-style", "content": "black" } ], [ "meta", { "name": "msapplication-TileImage", "content": "/assets/icon/ms-icon-144.png" } ], [ "meta", { "name": "msapplication-TileColor", "content": "#ffffff" } ], [ "meta", { "name": "viewport", "content": "width=device-width, initial-scale=1.0, viewport-fit=cover" } ] ], "pages": [ { "title": "IoC(Inversion of Control)", "frontmatter": { "summary": "IoC(Inversion of Control)\rcontrol:类的非主要责任; \rdependency:A类的任务没有B类就完成不了,即A依赖B。; DIP Definition\rHigh-level modules should not depend on low-level modules. Both should depend on the ab", "meta": [ { "property": "og:url", "content": "/blog/IoCandDI.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "IoC(Inversion of Control)" }, { "property": "og:description", "content": "IoC(Inversion of Control)\rcontrol:类的非主要责任; \rdependency:A类的任务没有B类就完成不了,即A依赖B。; DIP Definition\rHigh-level modules should not depend on low-level modules. Both should depend on the ab" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "2/19" }, "regularPath": "/blog/IoCandDI.html", "relativePath": "blog/IoCandDI.md", "key": "v-0cbc6a73", "path": "/blog/IoCandDI/", "headers": [ { "level": 2, "title": "IoC(Inversion of Control)", "slug": "ioc-inversion-of-control" }, { "level": 2, "title": "DIP Definition", "slug": "dip-definition" }, { "level": 2, "title": "DI", "slug": "di" }, { "level": 2, "title": "IOC Container", "slug": "ioc-container" } ], "readingTime": { "minutes": 0.95, "words": 284 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Blender Basic", "frontmatter": { "title": "Blender Basic", "author": "Leonhardt", "category": "GameEngine", "tag": [ "blender" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-04T00:00:00.000Z", "summary": "基础操作 操作 快捷键 说明 --------- ---------- ----- 移动 g 按下g后再按x,y,z可固定移动轴为global,再按一次相同键,使用local,再按一次,取消固定。 旋转 r 按下r后再按x,y,z可固定旋转轴为global,再按一次相同键,使用local,再按一次,取消固定。 缩放 s 按下s后再按x,y,z可固定缩放轴为g", "meta": [ { "property": "og:url", "content": "/blog/blender.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Blender Basic" }, { "property": "og:description", "content": "基础操作 操作 快捷键 说明 --------- ---------- ----- 移动 g 按下g后再按x,y,z可固定移动轴为global,再按一次相同键,使用local,再按一次,取消固定。 旋转 r 按下r后再按x,y,z可固定旋转轴为global,再按一次相同键,使用local,再按一次,取消固定。 缩放 s 按下s后再按x,y,z可固定缩放轴为g" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "blender" }, { "property": "article:published_time", "content": "2022-02-04T00:00:00.000Z" } ], "parsedDate": "2/4" }, "regularPath": "/blog/blender.html", "relativePath": "blog/blender.md", "key": "v-4d9c8f3d", "path": "/blog/blender/", "headers": [ { "level": 2, "title": "基础操作", "slug": "基础操作" } ], "readingTime": { "minutes": 0.84, "words": 251 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "我的博客", "frontmatter": { "title": "我的博客", "lang": "zh-CN", "sidebarDepth": 2, "summary": "名言警句\r\" 不积跬步无以至千里\"\r\" Keep It Simple, Stupid.\"\r\" 快速推进,逐步优化\"\r\" Make it work. Make it right. Make it fast.\"\r\" 前途很远,也很暗。\"\r\" 然而不要怕,不怕的人的面前才有路。\"\r\" I want to create a collection of games d", "meta": [ { "property": "og:url", "content": "/blog/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "我的博客" }, { "property": "og:description", "content": "名言警句\r\" 不积跬步无以至千里\"\r\" Keep It Simple, Stupid.\"\r\" 快速推进,逐步优化\"\r\" Make it work. Make it right. Make it fast.\"\r\" 前途很远,也很暗。\"\r\" 然而不要怕,不怕的人的面前才有路。\"\r\" I want to create a collection of games d" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/blog/", "relativePath": "blog/README.md", "key": "v-42a99dd0", "path": "/blog/", "headers": [ { "level": 2, "title": "名言警句", "slug": "名言警句" } ], "readingTime": { "minutes": 4.37, "words": 1310 }, "updateTime": "2022年2月19日 13:19", "updateTimeStamp": 1645247953000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 3 } ] }, { "title": "Docker入门", "frontmatter": { "icon": "page", "title": "Docker入门", "author": "Leonhardt", "category": "Tool", "tag": [ "docker" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-01T00:00:00.000Z", "summary": "基本命令\rdocker pull image 从Docker仓库中拉取镜像。; \rdocker run image 创建一个新的容器, 启动镜像。如果镜像不存在,则会尝试先从Docker仓库中拉取。; \r-d 后台运行; \r-p 81:80 将主机的81端口和Docker Container的80端口绑定; \r--name custonName ; \rdoc", "meta": [ { "property": "og:url", "content": "/blog/docker.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Docker入门" }, { "property": "og:description", "content": "基本命令\rdocker pull image 从Docker仓库中拉取镜像。; \rdocker run image 创建一个新的容器, 启动镜像。如果镜像不存在,则会尝试先从Docker仓库中拉取。; \r-d 后台运行; \r-p 81:80 将主机的81端口和Docker Container的80端口绑定; \r--name custonName ; \rdoc" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "docker" }, { "property": "article:published_time", "content": "2022-04-01T00:00:00.000Z" } ], "parsedDate": "4/1" }, "regularPath": "/blog/docker.html", "relativePath": "blog/docker.md", "key": "v-7701ca13", "path": "/blog/docker/", "headers": [ { "level": 2, "title": "基本命令", "slug": "基本命令" }, { "level": 2, "title": "创建镜像", "slug": "创建镜像" }, { "level": 2, "title": "上传镜像", "slug": "上传镜像" }, { "level": 2, "title": "数据持久化", "slug": "数据持久化" }, { "level": 2, "title": "多容器应用", "slug": "多容器应用" }, { "level": 2, "title": "使用Docker Compose简化多容器应用", "slug": "使用docker-compose简化多容器应用" }, { "level": 2, "title": "创建镜像的最佳实践", "slug": "创建镜像的最佳实践" }, { "level": 3, "title": "layer caching", "slug": "layer-caching" } ], "readingTime": { "minutes": 5.33, "words": 1600 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "文件操作", "frontmatter": { "title": "文件操作", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2021-12-16T00:00:00.000Z", "summary": "os 方法 作用 补充说明 --------- ---------- ----- os.chdir(path) 修改当前工作目录 会改变getcwd()的结果 os.getcwd() 获取当前工作目录 os.mkdirs(path) 创建目录,可以直接创建不存在的父目录再创建子目录,如果目录已存在则抛出错误 可以使用exist_ok=True参数,使在创建已", "meta": [ { "property": "og:url", "content": "/blog/file_io.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "文件操作" }, { "property": "og:description", "content": "os 方法 作用 补充说明 --------- ---------- ----- os.chdir(path) 修改当前工作目录 会改变getcwd()的结果 os.getcwd() 获取当前工作目录 os.mkdirs(path) 创建目录,可以直接创建不存在的父目录再创建子目录,如果目录已存在则抛出错误 可以使用exist_ok=True参数,使在创建已" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2021-12-16T00:00:00.000Z" } ], "parsedDate": "12/16" }, "regularPath": "/blog/file_io.html", "relativePath": "blog/file_io.md", "key": "v-1420a6e7", "path": "/blog/file_io/", "headers": [ { "level": 2, "title": "os", "slug": "os" }, { "level": 2, "title": "shutil", "slug": "shutil" } ], "readingTime": { "minutes": 1.95, "words": 585 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "直方图均衡化", "frontmatter": { "title": "直方图均衡化", "category": "CV", "tag": [ "DIP" ], "time": "2021-12-05T00:00:00.000Z", "summary": "总览\r提高全局对比度,在图像灰度集中于某个小区域时效果尤为明显; \r直方图均衡化将集中在一起的灰度像素值打散到全灰度级上来获得对比度的增强; \r适合处理曝光不足的照片和骨骼的x-ray图像,热力图,卫星图; \r是可逆的,需要知道直方图均衡化函数; \r一个缺点是对背景噪音和有用的信号一视同仁; \r会使图像产生不真实感; \r会丢失一些细节,因此不用于分析环节,仅", "meta": [ { "property": "og:url", "content": "/blog/equalize_histogram.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "直方图均衡化" }, { "property": "og:description", "content": "总览\r提高全局对比度,在图像灰度集中于某个小区域时效果尤为明显; \r直方图均衡化将集中在一起的灰度像素值打散到全灰度级上来获得对比度的增强; \r适合处理曝光不足的照片和骨骼的x-ray图像,热力图,卫星图; \r是可逆的,需要知道直方图均衡化函数; \r一个缺点是对背景噪音和有用的信号一视同仁; \r会使图像产生不真实感; \r会丢失一些细节,因此不用于分析环节,仅" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "DIP" }, { "property": "article:published_time", "content": "2021-12-05T00:00:00.000Z" } ], "parsedDate": "12/5" }, "regularPath": "/blog/equalize_histogram.html", "relativePath": "blog/equalize_histogram.md", "key": "v-9ea05a9a", "path": "/blog/equalize_histogram/", "headers": [ { "level": 2, "title": "总览", "slug": "总览" }, { "level": 2, "title": "具体算法", "slug": "具体算法" }, { "level": 2, "title": "python实现", "slug": "python实现" } ], "readingTime": { "minutes": 1.06, "words": 319 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Hazel", "frontmatter": { "title": "Hazel", "category": "C/C++", "tag": [ "Games" ], "time": "2021-12-13T00:00:00.000Z", "summary": "EventSystem\rEntryPoint.h -- Game Main Loop; \rapp = CreateApplicaiton();; \rapp->run();; \rdelete app;; \rApplication.h; \rApplication(name); \r创建窗口,设置回调; \r渲染初始化; \r创建ImGui层; \rOnEvent(e);", "meta": [ { "property": "og:url", "content": "/blog/hazel.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Hazel" }, { "property": "og:description", "content": "EventSystem\rEntryPoint.h -- Game Main Loop; \rapp = CreateApplicaiton();; \rapp->run();; \rdelete app;; \rApplication.h; \rApplication(name); \r创建窗口,设置回调; \r渲染初始化; \r创建ImGui层; \rOnEvent(e);" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "Games" }, { "property": "article:published_time", "content": "2021-12-13T00:00:00.000Z" } ], "parsedDate": "12/13" }, "regularPath": "/blog/hazel.html", "relativePath": "blog/hazel.md", "key": "v-e7d1472e", "path": "/blog/hazel/", "headers": [ { "level": 2, "title": "EventSystem", "slug": "eventsystem" }, { "level": 2, "title": "precompiled header", "slug": "precompiled-header" }, { "level": 2, "title": "Layers", "slug": "layers" } ], "readingTime": { "minutes": 1.6, "words": 479 }, "updateTime": "December 13, 2021 23:53", "updateTimeStamp": 1639410791000, "createTime": "December 13, 2021 23:53", "createTimeStamp": 1639410791000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "游戏引擎总览", "frontmatter": { "title": "游戏引擎总览", "lang": "zh-CN", "sidebarDepth": 2, "summary": "典型的游戏团队结构\rengineers; \rruntime programmer: engine&game; \rtools programmer: offline tools for whole team; \rartists; \rConcept artists: 概念设计; \r3D modelers: 建模师; \rforeground modelers: 人", "meta": [ { "property": "og:url", "content": "/blog/game-engine-overview.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "游戏引擎总览" }, { "property": "og:description", "content": "典型的游戏团队结构\rengineers; \rruntime programmer: engine&game; \rtools programmer: offline tools for whole team; \rartists; \rConcept artists: 概念设计; \r3D modelers: 建模师; \rforeground modelers: 人" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/blog/game-engine-overview.html", "relativePath": "blog/game-engine-overview.md", "key": "v-5cff159a", "path": "/blog/game-engine-overview/", "headers": [ { "level": 2, "title": "典型的游戏团队结构", "slug": "典型的游戏团队结构" }, { "level": 2, "title": "什么是游戏?", "slug": "什么是游戏" }, { "level": 3, "title": "soft real-time interactive agent-based computer simulations.", "slug": "soft-real-time-interactive-agent-based-computer-simulations" }, { "level": 3, "title": "游戏中的数学模型", "slug": "游戏中的数学模型" }, { "level": 2, "title": "什么是游戏引擎?", "slug": "什么是游戏引擎" }, { "level": 2, "title": "不同类型游戏的游戏引擎的区别", "slug": "不同类型游戏的游戏引擎的区别" }, { "level": 3, "title": "FPS", "slug": "fps" }, { "level": 3, "title": "平台游戏和其他第三人称游戏", "slug": "平台游戏和其他第三人称游戏" }, { "level": 3, "title": "格斗游戏", "slug": "格斗游戏" }, { "level": 3, "title": "竞速游戏", "slug": "竞速游戏" }, { "level": 3, "title": "策略游戏", "slug": "策略游戏" }, { "level": 3, "title": "MMOG", "slug": "mmog" }, { "level": 3, "title": "VirtualReality,AugumentedR,MixedR", "slug": "virtualreality-augumentedr-mixedr" }, { "level": 2, "title": "有名的游戏引擎", "slug": "有名的游戏引擎" }, { "level": 2, "title": "开源引擎列表", "slug": "开源引擎列表" }, { "level": 2, "title": "运行时引擎架构", "slug": "运行时引擎架构" }, { "level": 3, "title": "目标硬件", "slug": "目标硬件" }, { "level": 3, "title": "设备驱动", "slug": "设备驱动" }, { "level": 3, "title": "操作系统", "slug": "操作系统" }, { "level": 3, "title": "第三方SDK(software development kits)和中间件(Middleware)", "slug": "第三方sdk-software-development-kits-和中间件-middleware" }, { "level": 3, "title": "平台无关层", "slug": "平台无关层" }, { "level": 3, "title": "核心系统", "slug": "核心系统" }, { "level": 3, "title": "资源管理器", "slug": "资源管理器" }, { "level": 3, "title": "渲染引擎", "slug": "渲染引擎" } ], "readingTime": { "minutes": 10.88, "words": 3263 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "katex 常用写法", "frontmatter": { "title": "katex 常用写法", "lang": "zh-CN", "sidebarDepth": 1, "summary": "常用符号 符号 写法 符号 写法 | :----: :----: :----: :----:| $\\phi$ \\phi $\\Phi$ \\Phi | $\\omega$ \\omega $\\Omega$ \\Omega | 环境 多行公式在vuepress中无效,使用aligned环境替代。", "meta": [ { "property": "og:url", "content": "/blog/katex-cheatsheet.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "katex 常用写法" }, { "property": "og:description", "content": "常用符号 符号 写法 符号 写法 | :----: :----: :----: :----:| $\\phi$ \\phi $\\Phi$ \\Phi | $\\omega$ \\omega $\\Omega$ \\Omega | 环境 多行公式在vuepress中无效,使用aligned环境替代。" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/blog/katex-cheatsheet.html", "relativePath": "blog/katex-cheatsheet.md", "key": "v-5edc6f5a", "path": "/blog/katex-cheatsheet/", "headers": [ { "level": 2, "title": "常用符号", "slug": "常用符号" }, { "level": 2, "title": "环境", "slug": "环境" } ], "readingTime": { "minutes": 0.15, "words": 45 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "PR剪辑", "frontmatter": { "title": "PR剪辑", "author": "Leonhardt", "category": "Blog", "tag": [ "premiere" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-04T00:00:00.000Z", "summary": "基础操作 操作 快捷键 说明 --------- ---------- ----- 新建文本图层 ctrl+T 不启用 shitf+E 打标志 M 选中素材就在素材上打,不选中则在时间轴上打 标记一段时间 Alt+拖动标志 移动图层 Alt+up/down 播放速度 j,k,l J后退(连按速率加倍)、K暂停播放,L前进(连按速率加倍), J+K 减速后退,", "meta": [ { "property": "og:url", "content": "/blog/premiere.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "PR剪辑" }, { "property": "og:description", "content": "基础操作 操作 快捷键 说明 --------- ---------- ----- 新建文本图层 ctrl+T 不启用 shitf+E 打标志 M 选中素材就在素材上打,不选中则在时间轴上打 标记一段时间 Alt+拖动标志 移动图层 Alt+up/down 播放速度 j,k,l J后退(连按速率加倍)、K暂停播放,L前进(连按速率加倍), J+K 减速后退," }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "premiere" }, { "property": "article:published_time", "content": "2022-02-04T00:00:00.000Z" } ], "parsedDate": "2/4" }, "regularPath": "/blog/premiere.html", "relativePath": "blog/premiere.md", "key": "v-09bd6f33", "path": "/blog/premiere/", "headers": [ { "level": 2, "title": "基础操作", "slug": "基础操作" } ], "readingTime": { "minutes": 0.56, "words": 168 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "随机数", "frontmatter": { "title": "随机数", "category": "blog", "tag": [ "random" ], "time": "2021-12-05T00:00:00.000Z", "summary": "固定种子 np.random.seed(seed) 均匀分布的随机数 [0, 1)内 指定范围内的离散的 高斯分布的随机数 其他分布 np.random.xx\rchisquare; \rgamma; \r;", "meta": [ { "property": "og:url", "content": "/blog/random.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "随机数" }, { "property": "og:description", "content": "固定种子 np.random.seed(seed) 均匀分布的随机数 [0, 1)内 指定范围内的离散的 高斯分布的随机数 其他分布 np.random.xx\rchisquare; \rgamma; \r;" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "random" }, { "property": "article:published_time", "content": "2021-12-05T00:00:00.000Z" } ], "parsedDate": "12/5" }, "regularPath": "/blog/random.html", "relativePath": "blog/random.md", "key": "v-7deec873", "path": "/blog/random/", "headers": [ { "level": 2, "title": "固定种子", "slug": "固定种子" }, { "level": 2, "title": "均匀分布的随机数", "slug": "均匀分布的随机数" }, { "level": 3, "title": "[0, 1)内", "slug": "_0-1-内" }, { "level": 3, "title": "指定范围内的离散的", "slug": "指定范围内的离散的" }, { "level": 2, "title": "高斯分布的随机数", "slug": "高斯分布的随机数" }, { "level": 2, "title": "其他分布", "slug": "其他分布" } ], "readingTime": { "minutes": 0.4, "words": 121 }, "updateTime": "December 13, 2021 23:53", "updateTimeStamp": 1639410791000, "createTime": "December 13, 2021 23:53", "createTimeStamp": 1639410791000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "日语基础语法", "frontmatter": { "icon": "page", "title": "日语基础语法", "author": "Leonhardt", "category": "Japanese", "tag": [ "japanese" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-01-16T00:00:00.000Z", "summary": "基本语法 状态表示\r某物的状态,使用「だ」,このDIOだ; \r否定状态,使用「じゃない」; \r曾经是,过去状态,使用「だった」; \r否定过去形,使用 「じゃなかった」; 助词\r主题助词,写作「は」,读作wa。指出了所谈论的对象,也就是句子的主题。; \r包含主题助词,「も」。就是一个带了「也」意思的主题助词。需要注意一致性。如俺は学生,JoJoも学生。不一致则", "meta": [ { "property": "og:url", "content": "/blog/japanese.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "日语基础语法" }, { "property": "og:description", "content": "基本语法 状态表示\r某物的状态,使用「だ」,このDIOだ; \r否定状态,使用「じゃない」; \r曾经是,过去状态,使用「だった」; \r否定过去形,使用 「じゃなかった」; 助词\r主题助词,写作「は」,读作wa。指出了所谈论的对象,也就是句子的主题。; \r包含主题助词,「も」。就是一个带了「也」意思的主题助词。需要注意一致性。如俺は学生,JoJoも学生。不一致则" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "japanese" }, { "property": "article:published_time", "content": "2022-01-16T00:00:00.000Z" } ], "parsedDate": "1/16" }, "regularPath": "/blog/japanese.html", "relativePath": "blog/japanese.md", "key": "v-2edacf9a", "path": "/blog/japanese/", "headers": [ { "level": 2, "title": "基本语法", "slug": "基本语法" }, { "level": 3, "title": "状态表示", "slug": "状态表示" }, { "level": 3, "title": "助词", "slug": "助词" }, { "level": 3, "title": "形容词", "slug": "形容词" }, { "level": 3, "title": "动词", "slug": "动词" }, { "level": 3, "title": "动词的否定", "slug": "动词的否定" }, { "level": 3, "title": "动词的过去形", "slug": "动词的过去形" } ], "readingTime": { "minutes": 2.61, "words": 784 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "黑魂复刻", "frontmatter": { "title": "黑魂复刻", "author": "Leonhardt", "category": "GameEngine", "tag": [ "unity" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-01-24T00:00:00.000Z", "summary": "玩家输入 统一输入 为了统一键盘和手柄等输入,抽象出一个信号概念。\rDup 上下信号; \rDright 左右信号; 衰减 Mathf.SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infin", "meta": [ { "property": "og:url", "content": "/blog/unity.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "黑魂复刻" }, { "property": "og:description", "content": "玩家输入 统一输入 为了统一键盘和手柄等输入,抽象出一个信号概念。\rDup 上下信号; \rDright 左右信号; 衰减 Mathf.SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infin" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "unity" }, { "property": "article:published_time", "content": "2022-01-24T00:00:00.000Z" } ], "parsedDate": "1/24" }, "regularPath": "/blog/unity.html", "relativePath": "blog/unity.md", "key": "v-322bb2e2", "path": "/blog/unity/", "headers": [ { "level": 2, "title": "玩家输入", "slug": "玩家输入" }, { "level": 3, "title": "统一输入", "slug": "统一输入" }, { "level": 3, "title": "衰减", "slug": "衰减" }, { "level": 3, "title": "使能标志", "slug": "使能标志" }, { "level": 3, "title": "1D Blend Tree", "slug": "_1d-blend-tree" }, { "level": 3, "title": "连接玩家输入和动画控制器", "slug": "连接玩家输入和动画控制器" }, { "level": 3, "title": "移动", "slug": "移动" }, { "level": 3, "title": "解决trigger累积的问题", "slug": "解决trigger累积的问题" }, { "level": 2, "title": "动画", "slug": "动画" }, { "level": 2, "title": "模型出现章鱼一样的情况", "slug": "模型出现章鱼一样的情况" } ], "readingTime": { "minutes": 1.96, "words": 587 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "视觉计算基础-预备知识", "frontmatter": { "icon": "page", "title": "视觉计算基础-预备知识", "author": "Leonhardt", "category": "CV", "tag": [ "basic" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-21T00:00:00.000Z", "summary": "数据 离散化\r样本:指一个连续函数f(t)在指定的t处的函数值(可以是标量或向量); \r采样过程:从一个连续信号中提取一个或多个样本的过程。将f(t)缩成一个离散函数$\\hat f(t)$; \r均匀采样:自变量取值间距相等; \r采样密度:自变量取值间距; \r重建(Reconstruction):从离散函数$\\hat f(t)$恢复f(t); \r混叠效应(Al", "meta": [ { "property": "og:url", "content": "/blog/visual_computing_intro.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "视觉计算基础-预备知识" }, { "property": "og:description", "content": "数据 离散化\r样本:指一个连续函数f(t)在指定的t处的函数值(可以是标量或向量); \r采样过程:从一个连续信号中提取一个或多个样本的过程。将f(t)缩成一个离散函数$\\hat f(t)$; \r均匀采样:自变量取值间距相等; \r采样密度:自变量取值间距; \r重建(Reconstruction):从离散函数$\\hat f(t)$恢复f(t); \r混叠效应(Al" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "basic" }, { "property": "article:published_time", "content": "2022-02-21T00:00:00.000Z" } ], "parsedDate": "2/21" }, "regularPath": "/blog/visual_computing_intro.html", "relativePath": "blog/visual_computing_intro.md", "key": "v-191e375a", "path": "/blog/visual_computing_intro/", "headers": [ { "level": 2, "title": "数据", "slug": "数据" }, { "level": 3, "title": "离散化", "slug": "离散化" }, { "level": 3, "title": "量化", "slug": "量化" }, { "level": 3, "title": "表示", "slug": "表示" }, { "level": 3, "title": "噪声", "slug": "噪声" }, { "level": 2, "title": "技术", "slug": "技术" } ], "readingTime": { "minutes": 2.85, "words": 854 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "VuePress 默认主题设置", "frontmatter": { "title": "VuePress 默认主题设置", "lang": "zh-CN", "sidebarDepth": 2, "summary": "frontmatter 必须在每个 .md 文件开头,通常以 yaml 格式表示。\rtitle 会自动作为 sidebar 的一级链接标题(优先级低于在 config.js 中配置)。; \rsidebarDepth 见下文内嵌链接; \rnavbar 用于在本页面关闭导航栏; \rsidebar 用于在本页面关闭侧边栏; \rsearch 用于在本页面关闭搜索框;", "meta": [ { "property": "og:url", "content": "/guide/configuration.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "VuePress 默认主题设置" }, { "property": "og:description", "content": "frontmatter 必须在每个 .md 文件开头,通常以 yaml 格式表示。\rtitle 会自动作为 sidebar 的一级链接标题(优先级低于在 config.js 中配置)。; \rsidebarDepth 见下文内嵌链接; \rnavbar 用于在本页面关闭导航栏; \rsidebar 用于在本页面关闭侧边栏; \rsearch 用于在本页面关闭搜索框;" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/guide/configuration.html", "relativePath": "guide/configuration.md", "key": "v-2e23be59", "path": "/guide/configuration/", "headers": [ { "level": 2, "title": "frontmatter", "slug": "frontmatter" }, { "level": 2, "title": "navbar", "slug": "navbar" }, { "level": 2, "title": "sidebar", "slug": "sidebar" }, { "level": 3, "title": "内嵌链接", "slug": "内嵌链接" }, { "level": 3, "title": "展开所有子链接", "slug": "展开所有子链接" }, { "level": 3, "title": "导航栏分组", "slug": "导航栏分组" }, { "level": 3, "title": "多重侧边栏", "slug": "多重侧边栏" }, { "level": 2, "title": "code groups", "slug": "code-groups" } ], "readingTime": { "minutes": 2.72, "words": 816 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "组件禁用", "frontmatter": { "title": "组件禁用", "icon": "config", "category": "使用指南", "navbar": false, "sidebar": false, "breadcrumb": false, "pageInfo": false, "contributor": false, "editLink": false, "updateTime": false, "prev": false, "next": false, "comment": false, "footer": false, "backtotop": false, "summary": "你可以通过设置页面的 Frontmatter,在页面禁用一些功能。\n", "meta": [ { "property": "og:url", "content": "/guide/disable.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "组件禁用" }, { "property": "og:description", "content": "你可以通过设置页面的 Frontmatter,在页面禁用一些功能。\n" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/guide/disable.html", "relativePath": "guide/disable.md", "key": "v-bf5d3a4e", "path": "/guide/disable/", "excerpt": "<p>你可以通过设置页面的 Frontmatter,在页面禁用一些功能。</p>\n", "readingTime": { "minutes": 0.25, "words": 74 }, "updateTime": "October 3, 2021 10:18", "updateTimeStamp": 1633227485000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "密码加密的文章", "frontmatter": { "icon": "lock", "password": 1234, "category": "使用指南", "tag": [ "文章加密" ], "summary": "密码加密的文章 实际的文章内容。 段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字。 段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字", "meta": [ { "property": "og:url", "content": "/guide/encrypt.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "密码加密的文章" }, { "property": "og:description", "content": "密码加密的文章 实际的文章内容。 段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字段落 1 文字。 段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字段落 2 文字" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "文章加密" } ], "parsedDate": "10/3" }, "regularPath": "/guide/encrypt.html", "relativePath": "guide/encrypt.md", "key": "v-1039c58e", "path": "/guide/encrypt/", "readingTime": { "minutes": 0.48, "words": 144 }, "updateTime": "October 3, 2021 10:18", "updateTimeStamp": 1633227485000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Markdown 增强", "frontmatter": { "icon": "markdown", "title": "Markdown 增强", "category": "使用指南", "tag": [ "markdown" ], "summary": "vuepress-theme-hope 通过内置 md-enhance,在 Markdown 中启用了更多的语法与新功能。\n", "meta": [ { "property": "og:url", "content": "/guide/markdown.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Markdown 增强" }, { "property": "og:description", "content": "vuepress-theme-hope 通过内置 md-enhance,在 Markdown 中启用了更多的语法与新功能。\n" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "markdown" } ], "parsedDate": "10/3" }, "regularPath": "/guide/markdown.html", "relativePath": "guide/markdown.md", "key": "v-008798e1", "path": "/guide/markdown/", "headers": [ { "level": 2, "title": "一键启用", "slug": "一键启用" }, { "level": 2, "title": "新增的更多语法", "slug": "新增的更多语法" }, { "level": 3, "title": "上下角标", "slug": "上下角标" }, { "level": 3, "title": "自定义对齐", "slug": "自定义对齐" }, { "level": 3, "title": "脚注", "slug": "脚注" }, { "level": 3, "title": "标记", "slug": "标记" }, { "level": 3, "title": "任务列表", "slug": "任务列表" }, { "level": 3, "title": "流程图", "slug": "流程图" }, { "level": 2, "title": "Mermaid", "slug": "mermaid" }, { "level": 3, "title": "Tex 语法", "slug": "tex-语法" }, { "level": 3, "title": "代码案例", "slug": "代码案例" }, { "level": 3, "title": "幻灯片", "slug": "幻灯片" }, { "level": 2, "title": "其他语法", "slug": "其他语法" } ], "excerpt": "<p><code>vuepress-theme-hope</code> 通过内置 <a href=\"https://vuepress-theme-hope.github.io/md-enhance\" target=\"_blank\" rel=\"noopener noreferrer\">md-enhance<OutboundLink/></a>,在 Markdown 中启用了更多的语法与新功能。</p>\n", "readingTime": { "minutes": 3.78, "words": 1134 }, "updateTime": "December 13, 2021 23:53", "updateTimeStamp": 1639410791000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "页面配置", "frontmatter": { "icon": "page", "title": "页面配置", "author": "Ms.Hope", "time": "2020-01-01T00:00:00.000Z", "category": "guide", "tag": [ "config", "guide" ], "sticky": true, "star": true, "footer": "这是测试显示的页脚", "summary": "页面信息 你可以在 Markdown 的 Frontmatter 中设置页面信息。 作者设置为 Ms.Hope。; 写作时间应为 2020 年 1 月 1 日; 分类为 “使用指南”; 标签为 “页面配置” 和 “使用指南”; 页面内容 你可以自由在这里书写你的 Markdown。 Markdown 文件夹的图片请使用相对链接 ./ 进行引用。; .vuep", "meta": [ { "property": "og:url", "content": "/guide/page.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "页面配置" }, { "property": "og:description", "content": "页面信息 你可以在 Markdown 的 Frontmatter 中设置页面信息。 作者设置为 Ms.Hope。; 写作时间应为 2020 年 1 月 1 日; 分类为 “使用指南”; 标签为 “页面配置” 和 “使用指南”; 页面内容 你可以自由在这里书写你的 Markdown。 Markdown 文件夹的图片请使用相对链接 ./ 进行引用。; .vuep" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Ms.Hope" }, { "property": "article:tag", "content": "config" }, { "property": "article:tag", "content": "guide" }, { "property": "article:published_time", "content": "2020-01-01T00:00:00.000Z" } ], "parsedDate": "1/1" }, "regularPath": "/guide/page.html", "relativePath": "guide/page.md", "key": "v-347ccaa1", "path": "/guide/page/", "headers": [ { "level": 2, "title": "页面信息", "slug": "页面信息" }, { "level": 2, "title": "页面内容", "slug": "页面内容" }, { "level": 2, "title": "页面结构", "slug": "页面结构" }, { "level": 2, "title": "slide", "slug": "slide" } ], "readingTime": { "minutes": 0.73, "words": 218 }, "updateTime": "December 13, 2021 23:53", "updateTimeStamp": 1639410791000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 3 } ] }, { "title": "Hello Vuepress", "frontmatter": { "title": "Hello Vuepress", "summary": "遇到的问题 在根目录的readme中设置footer内容时使用双引号,会出现YAML Exception。项目无法正常编译。 math 安装 markdown-it-katex 插件 再设置 效果如下: $\\frac 1n = n^2_1$ $$\\begin{array}{r} {\\left[\\begin{array}{rr} \\cos \\phi & \\si", "meta": [ { "property": "og:url", "content": "/guide/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Hello Vuepress" }, { "property": "og:description", "content": "遇到的问题 在根目录的readme中设置footer内容时使用双引号,会出现YAML Exception。项目无法正常编译。 math 安装 markdown-it-katex 插件 再设置 效果如下: $\\frac 1n = n^2_1$ $$\\begin{array}{r} {\\left[\\begin{array}{rr} \\cos \\phi & \\si" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/guide/", "relativePath": "guide/readme.md", "key": "v-9c738770", "path": "/guide/", "headers": [ { "level": 2, "title": "遇到的问题", "slug": "遇到的问题" }, { "level": 2, "title": "math", "slug": "math" }, { "level": 2, "title": "git hub tables", "slug": "git-hub-tables" }, { "level": 2, "title": "container", "slug": "container" }, { "level": 2, "title": "语法高亮", "slug": "语法高亮" }, { "level": 2, "title": "部署", "slug": "部署" }, { "level": 2, "title": "全局Computed", "slug": "全局computed" } ], "readingTime": { "minutes": 2.43, "words": 729 }, "updateTime": "December 13, 2021 23:53", "updateTimeStamp": 1639410791000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "Intro Page", "frontmatter": { "icon": "info", "summary": "Intro Page Place your introducation and profile here.", "meta": [ { "property": "og:url", "content": "/intro.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Intro Page" }, { "property": "og:description", "content": "Intro Page Place your introducation and profile here." }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/intro.html", "relativePath": "intro.md", "key": "v-506aff06", "path": "/intro/", "readingTime": { "minutes": 0.03, "words": 8 }, "updateTime": "October 3, 2021 10:18", "updateTimeStamp": 1633227485000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "这主题废弃了标题?", "frontmatter": { "home": true, "icon": "home", "title": "这主题废弃了标题?", "heroImage": "/logo.svg", "heroText": "小目标", "tagline": "luck is where preparation meets opportunity.", "action": [ { "text": "How to Use 💡", "link": "/guide/", "type": "primary" }, { "text": "Blog homepage 🏠", "link": "/" } ], "features": [ { "title": "数据可视化", "details": "tensorboard, plt", "link": "https://vuepress-theme-hope.github.io/guide/markdown/" }, { "title": "读论文", "details": "读得多了,不会写也能编。<br> RNN, transformer, VisionTransformer, SwinTransfromer, MAE, BERT", "link": "/thesis/" } ], "copyrightText": false, "footer": "MIT Licensed | Copyright © 2019-present Mr. H", "summary": "This is an example of a normal homepage. You can place your main content here. To use this layout, you need to set home: true in the page front matter. For related descriptions of ", "meta": [ { "property": "og:url", "content": "/home.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "这主题废弃了标题?" }, { "property": "og:description", "content": "This is an example of a normal homepage. You can place your main content here. To use this layout, you need to set home: true in the page front matter. For related descriptions of " }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/home.html", "relativePath": "home.md", "key": "v-1f93c3f4", "path": "/home/", "readingTime": { "minutes": 0.17, "words": 51 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 4 } ] }, { "title": "Custom Layout", "frontmatter": { "title": "Custom Layout", "icon": "layout", "summary": "You can use slots with markdown and component support to custom page layout. This is just a demo, you should add styles according to your own needs. @require '~@mr-hope/vuepress-sh", "meta": [ { "property": "og:url", "content": "/layout.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Custom Layout" }, { "property": "og:description", "content": "You can use slots with markdown and component support to custom page layout. This is just a demo, you should add styles according to your own needs. @require '~@mr-hope/vuepress-sh" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/layout.html", "relativePath": "layout.md", "key": "v-fb02d8c4", "path": "/layout/", "readingTime": { "minutes": 0.54, "words": 162 }, "updateTime": "October 3, 2021 10:18", "updateTimeStamp": 1633227485000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "UML类图简介", "frontmatter": { "title": "UML类图简介", "author": "Leonhardt", "category": "SoftwareEngineering", "tag": [ "design pattern" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-06T00:00:00.000Z", "summary": "类的表示\r类名; \r>; \r>; \r>; \r>; \r数据: 保护级别+类型+变量名; \r保护级别:public +, protected #, private -, package/internal ~; \r方法: 保护级别+方法名(参数)+返回值; 关系 泛化关系(generalization)\r类的继承结构表现在UML中为:泛化(generalize)与", "meta": [ { "property": "og:url", "content": "/note/algorithm/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "UML类图简介" }, { "property": "og:description", "content": "类的表示\r类名; \r>; \r>; \r>; \r>; \r数据: 保护级别+类型+变量名; \r保护级别:public +, protected #, private -, package/internal ~; \r方法: 保护级别+方法名(参数)+返回值; 关系 泛化关系(generalization)\r类的继承结构表现在UML中为:泛化(generalize)与" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "design pattern" }, { "property": "article:published_time", "content": "2022-02-06T00:00:00.000Z" } ], "parsedDate": "2/6" }, "regularPath": "/note/algorithm/", "relativePath": "note/algorithm/README.md", "key": "v-2b1ed1cb", "path": "/note/algorithm/", "headers": [ { "level": 2, "title": "类的表示", "slug": "类的表示" }, { "level": 2, "title": "关系", "slug": "关系" }, { "level": 3, "title": "泛化关系(generalization)", "slug": "泛化关系-generalization" }, { "level": 3, "title": "实现关系(realize)", "slug": "实现关系-realize" }, { "level": 3, "title": "聚合关系(aggregation)", "slug": "聚合关系-aggregation" }, { "level": 3, "title": "组合关系(composition)", "slug": "组合关系-composition" }, { "level": 3, "title": "关联关系(association)", "slug": "关联关系-association" }, { "level": 3, "title": "依赖关系(dependency)", "slug": "依赖关系-dependency" } ], "readingTime": { "minutes": 1.99, "words": 596 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "观察者模式--Observer", "frontmatter": { "title": "观察者模式--Observer", "author": "Leonhardt", "category": "SoftwareEngineering", "tag": [ "design pattern" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-07T00:00:00.000Z", "summary": "定义 定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式。 理解 被观察者实现IObservable接口,包含基本的Add(),Remove(),No", "meta": [ { "property": "og:url", "content": "/note/algorithm/observer.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "观察者模式--Observer" }, { "property": "og:description", "content": "定义 定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式。 理解 被观察者实现IObservable接口,包含基本的Add(),Remove(),No" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "design pattern" }, { "property": "article:published_time", "content": "2022-02-07T00:00:00.000Z" } ], "parsedDate": "2/7" }, "regularPath": "/note/algorithm/observer.html", "relativePath": "note/algorithm/observer.md", "key": "v-57164b00", "path": "/note/algorithm/observer/", "headers": [ { "level": 2, "title": "定义", "slug": "定义" }, { "level": 2, "title": "理解", "slug": "理解" }, { "level": 2, "title": "类图", "slug": "类图" } ], "readingTime": { "minutes": 0.81, "words": 242 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "策略模式--Strategy", "frontmatter": { "title": "策略模式--Strategy", "author": "Leonhardt", "category": "SoftwareEngineering", "tag": [ "design pattern" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-06T00:00:00.000Z", "summary": "定义 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。 理解 继承是个强大的技巧,但很多情况下并不需要使用继承,或者继承不够好。 继承只能在不同类层级之间共享,子类在父类的基础上修改。而没有办法在相同层级进行共享。 例如,同意父类的6个子类,都有一个方法各不相同。但又有一个方法是3个子类一组,组间不同,组内相同的。继承方法无法共享,只能将相同的代", "meta": [ { "property": "og:url", "content": "/note/algorithm/strategy.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "策略模式--Strategy" }, { "property": "og:description", "content": "定义 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。 理解 继承是个强大的技巧,但很多情况下并不需要使用继承,或者继承不够好。 继承只能在不同类层级之间共享,子类在父类的基础上修改。而没有办法在相同层级进行共享。 例如,同意父类的6个子类,都有一个方法各不相同。但又有一个方法是3个子类一组,组间不同,组内相同的。继承方法无法共享,只能将相同的代" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "design pattern" }, { "property": "article:published_time", "content": "2022-02-06T00:00:00.000Z" } ], "parsedDate": "2/6" }, "regularPath": "/note/algorithm/strategy.html", "relativePath": "note/algorithm/strategy.md", "key": "v-391e00a0", "path": "/note/algorithm/strategy/", "headers": [ { "level": 2, "title": "定义", "slug": "定义" }, { "level": 2, "title": "理解", "slug": "理解" }, { "level": 2, "title": "类图", "slug": "类图" } ], "readingTime": { "minutes": 0.98, "words": 294 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "C++ 小知识", "frontmatter": { "title": "C++ 小知识", "lang": "zh-CN", "sidebarDepth": 2, "summary": "lvalue & rvalue 简单来说\r左值(lvalue):是变量,占用某一块确定的内存。; \r右值(rvalue):是字面量或临时量。; 有啥好处呢?好处在于可以通过重载函数,区分出传入的参数是不是临时的,因此可以做一些特殊处理。 移动语义(move semantics) 先看一个例子 执行结果为: 这意味着,在Entity(String name)的", "meta": [ { "property": "og:url", "content": "/note/cpp/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "C++ 小知识" }, { "property": "og:description", "content": "lvalue & rvalue 简单来说\r左值(lvalue):是变量,占用某一块确定的内存。; \r右值(rvalue):是字面量或临时量。; 有啥好处呢?好处在于可以通过重载函数,区分出传入的参数是不是临时的,因此可以做一些特殊处理。 移动语义(move semantics) 先看一个例子 执行结果为: 这意味着,在Entity(String name)的" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cpp/", "relativePath": "note/cpp/README.md", "key": "v-a809066a", "path": "/note/cpp/", "headers": [ { "level": 2, "title": "lvalue & rvalue", "slug": "lvalue-rvalue" }, { "level": 2, "title": "移动语义(move semantics)", "slug": "移动语义-move-semantics" }, { "level": 2, "title": "inline", "slug": "inline" }, { "level": 2, "title": "constexpr", "slug": "constexpr" }, { "level": 2, "title": "可变参数", "slug": "可变参数" } ], "readingTime": { "minutes": 3.64, "words": 1091 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "C语言", "frontmatter": { "title": "C语言", "lang": "zh-CN", "sidebarDepth": 1, "summary": "Union和匿名结构 Union: 定义类似struct,但内存分配方式不一样。struct会为所有成员分配内存空间,union是所有成员共用一个内存空间,大小以最大的成员为准。 匿名:通常嵌套于union或strcut中,可以用外层类型的变量名直接访问匿名的结构成员。union中的匿名比较有用,因为可以将一系列成员包裹起来以获取更大的内存空间。 bitfi", "meta": [ { "property": "og:url", "content": "/note/cpp/c.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "C语言" }, { "property": "og:description", "content": "Union和匿名结构 Union: 定义类似struct,但内存分配方式不一样。struct会为所有成员分配内存空间,union是所有成员共用一个内存空间,大小以最大的成员为准。 匿名:通常嵌套于union或strcut中,可以用外层类型的变量名直接访问匿名的结构成员。union中的匿名比较有用,因为可以将一系列成员包裹起来以获取更大的内存空间。 bitfi" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cpp/c.html", "relativePath": "note/cpp/c.md", "key": "v-17ab2c98", "path": "/note/cpp/c/", "headers": [ { "level": 2, "title": "Union和匿名结构", "slug": "union和匿名结构" }, { "level": 3, "title": "bitfield", "slug": "bitfield" }, { "level": 2, "title": "getopt(int argc, char const argv[], const char optstring)", "slug": "getopt-int-argc-char-const-argv-const-char-optstring" }, { "level": 2, "title": "readline", "slug": "readline" }, { "level": 2, "title": "str系列", "slug": "str系列" }, { "level": 2, "title": "scanf系列&printf系列", "slug": "scanf系列-printf系列" }, { "level": 3, "title": "转换规约", "slug": "转换规约" }, { "level": 3, "title": "*号", "slug": "号" }, { "level": 2, "title": "regex系列", "slug": "regex系列" }, { "level": 2, "title": "system", "slug": "system" }, { "level": 2, "title": "popen/pclose", "slug": "popen-pclose" } ], "readingTime": { "minutes": 11.34, "words": 3403 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "随机数", "frontmatter": { "title": "随机数", "lang": "zh-CN", "sidebarDepth": 1, "summary": "线性同余法 原理大致如上。这样简单的随机数不够\"好\"。 C 标准库中的随机数生成 原理就是线性同余法,不同编译器实现略有不同,且大多有缺陷。仅供学习使用。 一个好的伪随机数生成器(PRNG)的标准\r应该以大致相同的概率生成每个数字(生成六个数字5,6,7,8,9的概率大致相等),即数字分布均匀性。; \r生成序列中的下一个数字应该是不可预测。(num = nu", "meta": [ { "property": "og:url", "content": "/note/cpp/cpp-random.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "随机数" }, { "property": "og:description", "content": "线性同余法 原理大致如上。这样简单的随机数不够\"好\"。 C 标准库中的随机数生成 原理就是线性同余法,不同编译器实现略有不同,且大多有缺陷。仅供学习使用。 一个好的伪随机数生成器(PRNG)的标准\r应该以大致相同的概率生成每个数字(生成六个数字5,6,7,8,9的概率大致相等),即数字分布均匀性。; \r生成序列中的下一个数字应该是不可预测。(num = nu" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cpp/cpp-random.html", "relativePath": "note/cpp/cpp-random.md", "key": "v-415993a0", "path": "/note/cpp/cpp-random/", "headers": [ { "level": 2, "title": "线性同余法", "slug": "线性同余法" }, { "level": 2, "title": "C 标准库中的随机数生成", "slug": "c-标准库中的随机数生成" }, { "level": 2, "title": "一个好的伪随机数生成器(PRNG)的标准", "slug": "一个好的伪随机数生成器-prng-的标准" }, { "level": 2, "title": "更好的随机数生成器", "slug": "更好的随机数生成器" }, { "level": 2, "title": "Effolkronium’s random library.", "slug": "effolkronium-s-random-library" } ], "readingTime": { "minutes": 1.75, "words": 525 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "C/C++ 文件 IO", "frontmatter": { "title": "C/C++ 文件 IO", "lang": "zh-CN", "sidebarDepth": 2, "summary": "C 读写 C提供两种访问文件的途径:二进制模式和文本模式。二进制模式中打开的文件一个字节都不会变,而文本模式中打开的文件中的行末尾和文件末尾会被映射为C模式(行尾:\\n, 文件末尾: EOF)。 模式串\rr 读; \rw 写。如果文件不存在,会创建新文件。如果文件存在,会先删除文件内容。; \ra 写,添加。如果文件不存在,会创建新文件。; \r+ 后缀,表示以更", "meta": [ { "property": "og:url", "content": "/note/cpp/file-io.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "C/C++ 文件 IO" }, { "property": "og:description", "content": "C 读写 C提供两种访问文件的途径:二进制模式和文本模式。二进制模式中打开的文件一个字节都不会变,而文本模式中打开的文件中的行末尾和文件末尾会被映射为C模式(行尾:\\n, 文件末尾: EOF)。 模式串\rr 读; \rw 写。如果文件不存在,会创建新文件。如果文件存在,会先删除文件内容。; \ra 写,添加。如果文件不存在,会创建新文件。; \r+ 后缀,表示以更" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cpp/file-io.html", "relativePath": "note/cpp/file-io.md", "key": "v-17612430", "path": "/note/cpp/file-io/", "headers": [ { "level": 2, "title": "C", "slug": "c" }, { "level": 3, "title": "读写", "slug": "读写" }, { "level": 3, "title": "临时文件", "slug": "临时文件" }, { "level": 3, "title": "文件缓冲", "slug": "文件缓冲" }, { "level": 3, "title": "其他文件操作", "slug": "其他文件操作" } ], "readingTime": { "minutes": 3.97, "words": 1191 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "宏", "frontmatter": { "title": "宏", "lang": "zh-CN", "sidebarDepth": 1, "summary": "预定义的宏 注意:不同的编译器宏的名称可能不同。\rfunc 所在函数名; \rFILE 所在文件名 ; \rLINE 所在行数 ; \rDATE 当前源文件的编译时间; \r`` ; MSVC #操作符\r#x 用来把参数转换成字符串; \ra##b 将两个单独的符号合并成一个,且该符号必须是有效的。; \r## VA_ARGS 这里##的作用在于,当可变参数的个数为0时", "meta": [ { "property": "og:url", "content": "/note/cpp/macro.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "宏" }, { "property": "og:description", "content": "预定义的宏 注意:不同的编译器宏的名称可能不同。\rfunc 所在函数名; \rFILE 所在文件名 ; \rLINE 所在行数 ; \rDATE 当前源文件的编译时间; \r`` ; MSVC #操作符\r#x 用来把参数转换成字符串; \ra##b 将两个单独的符号合并成一个,且该符号必须是有效的。; \r## VA_ARGS 这里##的作用在于,当可变参数的个数为0时" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cpp/macro.html", "relativePath": "note/cpp/macro.md", "key": "v-40851574", "path": "/note/cpp/macro/", "headers": [ { "level": 2, "title": "预定义的宏", "slug": "预定义的宏" }, { "level": 2, "title": "#操作符", "slug": "操作符" }, { "level": 2, "title": "多行宏", "slug": "多行宏" } ], "readingTime": { "minutes": 0.76, "words": 227 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "异常控制流", "frontmatter": { "title": "异常控制流", "lang": "zh-CN", "sidebarDepth": 2, "summary": "异常 异常和异常处理\r异常(exception):就是控制流中的突变,用来相应处理器状态中的某些变化。; \r事件(event):即状态变化。在处理器中,状态被编码为不同的位和信号。; \r异常号(exception number):系统为每种类型的异常分配的唯一的非负整数标识。; \r异常表(exception table):当处理器检测到事件发生时,会通过该表", "meta": [ { "property": "og:url", "content": "/note/cs/ECF.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "异常控制流" }, { "property": "og:description", "content": "异常 异常和异常处理\r异常(exception):就是控制流中的突变,用来相应处理器状态中的某些变化。; \r事件(event):即状态变化。在处理器中,状态被编码为不同的位和信号。; \r异常号(exception number):系统为每种类型的异常分配的唯一的非负整数标识。; \r异常表(exception table):当处理器检测到事件发生时,会通过该表" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/ECF.html", "relativePath": "note/cs/ECF.md", "key": "v-0e4e2066", "path": "/note/cs/ECF/", "headers": [ { "level": 2, "title": "异常", "slug": "异常" }, { "level": 3, "title": "异常和异常处理", "slug": "异常和异常处理" }, { "level": 3, "title": "异常的类别", "slug": "异常的类别" }, { "level": 2, "title": "进程", "slug": "进程" }, { "level": 3, "title": "逻辑控制流", "slug": "逻辑控制流" }, { "level": 3, "title": "并发", "slug": "并发" }, { "level": 3, "title": "私有地址空间", "slug": "私有地址空间" }, { "level": 3, "title": "用户模式和内核模式", "slug": "用户模式和内核模式" }, { "level": 3, "title": "上下文切换", "slug": "上下文切换" }, { "level": 2, "title": "系统调用错误处理", "slug": "系统调用错误处理" }, { "level": 2, "title": "进程控制", "slug": "进程控制" }, { "level": 3, "title": "fork()", "slug": "fork" }, { "level": 3, "title": "waitpid()--回收子进程", "slug": "waitpid-回收子进程" }, { "level": 3, "title": "execve函数", "slug": "execve函数" }, { "level": 2, "title": "信号", "slug": "信号" }, { "level": 3, "title": "信号术语", "slug": "信号术语" }, { "level": 3, "title": "发送信号", "slug": "发送信号" }, { "level": 3, "title": "接收信号", "slug": "接收信号" }, { "level": 3, "title": "信号的阻塞和解除", "slug": "信号的阻塞和解除" }, { "level": 3, "title": "编写信号处理程序", "slug": "编写信号处理程序" }, { "level": 2, "title": "非本地跳转", "slug": "非本地跳转" }, { "level": 2, "title": "操作进程的工具", "slug": "操作进程的工具" } ], "readingTime": { "minutes": 18.58, "words": 5574 }, "updateTime": "2022年2月19日 13:19", "updateTimeStamp": 1645247953000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "Window 小知识", "frontmatter": { "icon": "page", "title": "Window 小知识", "author": "Leonhardt", "category": "Window", "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-03-29T00:00:00.000Z", "summary": "bat 文件复制-robocopy 语法:robocopy [[ ...]] [] source和destination都是目录,如果要复制文件,用file参数指定 常用选项:\r/s 复制子目录。默认不包含空目录。; \r/e 复制子目录。默认包含空目录。; \r/mov 移动文件,复制后删除原文件; \r/move 移动文件和目录,复制后删除原文件; \r/cre", "meta": [ { "property": "og:url", "content": "/note/cs/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Window 小知识" }, { "property": "og:description", "content": "bat 文件复制-robocopy 语法:robocopy [[ ...]] [] source和destination都是目录,如果要复制文件,用file参数指定 常用选项:\r/s 复制子目录。默认不包含空目录。; \r/e 复制子目录。默认包含空目录。; \r/mov 移动文件,复制后删除原文件; \r/move 移动文件和目录,复制后删除原文件; \r/cre" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:published_time", "content": "2022-03-29T00:00:00.000Z" } ], "parsedDate": "3/29" }, "regularPath": "/note/cs/", "relativePath": "note/cs/README.md", "key": "v-1eb6924e", "path": "/note/cs/", "headers": [ { "level": 2, "title": "bat", "slug": "bat" }, { "level": 3, "title": "文件复制-robocopy", "slug": "文件复制-robocopy" }, { "level": 2, "title": "日期与时间", "slug": "日期与时间" } ], "readingTime": { "minutes": 0.58, "words": 174 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "虚拟内存", "frontmatter": { "title": "虚拟内存", "lang": "zh-CN", "sidebarDepth": 1, "summary": "虚拟内存提供三个重要能力\r将主存看作磁盘的高速缓存,在主存中只保留活动区域,并根据需要在主存和磁盘间传送数据,高效地使用了主存; \r为每个进程提供了一致的地址空间,简化了内存管理; \r也保护了每个进程的地址空间不被其他进程破坏; 物理和虚拟寻址 物理地址(Physical Address, PA):计算机的主存被组织成一个由M个连续的字节大小的单元组成的数组", "meta": [ { "property": "og:url", "content": "/note/cs/VM.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "虚拟内存" }, { "property": "og:description", "content": "虚拟内存提供三个重要能力\r将主存看作磁盘的高速缓存,在主存中只保留活动区域,并根据需要在主存和磁盘间传送数据,高效地使用了主存; \r为每个进程提供了一致的地址空间,简化了内存管理; \r也保护了每个进程的地址空间不被其他进程破坏; 物理和虚拟寻址 物理地址(Physical Address, PA):计算机的主存被组织成一个由M个连续的字节大小的单元组成的数组" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/VM.html", "relativePath": "note/cs/VM.md", "key": "v-f30eef40", "path": "/note/cs/VM/", "headers": [ { "level": 2, "title": "物理和虚拟寻址", "slug": "物理和虚拟寻址" }, { "level": 2, "title": "地址空间", "slug": "地址空间" }, { "level": 2, "title": "虚拟内存的结构", "slug": "虚拟内存的结构" }, { "level": 3, "title": "DRAM缓存", "slug": "dram缓存" }, { "level": 3, "title": "页表(Page Table)", "slug": "页表-page-table" }, { "level": 2, "title": "命中与缺页", "slug": "命中与缺页" }, { "level": 2, "title": "内存管理", "slug": "内存管理" }, { "level": 2, "title": "内存保护", "slug": "内存保护" }, { "level": 2, "title": "地址翻译", "slug": "地址翻译" }, { "level": 3, "title": "结合高速缓存和虚拟内存", "slug": "结合高速缓存和虚拟内存" }, { "level": 3, "title": "使用TLB加速地址翻译", "slug": "使用tlb加速地址翻译" }, { "level": 3, "title": "多级页表", "slug": "多级页表" }, { "level": 2, "title": "Linux虚拟内存系统", "slug": "linux虚拟内存系统" }, { "level": 3, "title": "Linux虚拟内存区域", "slug": "linux虚拟内存区域" }, { "level": 3, "title": "虚拟内存区域的内核数据结构", "slug": "虚拟内存区域的内核数据结构" }, { "level": 3, "title": "Linux缺页处理异常", "slug": "linux缺页处理异常" }, { "level": 2, "title": "内存映射", "slug": "内存映射" }, { "level": 3, "title": "再看共享对象", "slug": "再看共享对象" }, { "level": 3, "title": "再看fork函数", "slug": "再看fork函数" }, { "level": 3, "title": "再看 execve 函数", "slug": "再看-execve-函数" }, { "level": 3, "title": "使用mmap函数的用户级内存映射", "slug": "使用mmap函数的用户级内存映射" }, { "level": 2, "title": "动态内存分配", "slug": "动态内存分配" }, { "level": 3, "title": "malloc和free函数", "slug": "malloc和free函数" }, { "level": 3, "title": "碎片", "slug": "碎片" }, { "level": 3, "title": "分配器的实现问题", "slug": "分配器的实现问题" }, { "level": 3, "title": "隐式空闲链表", "slug": "隐式空闲链表" }, { "level": 3, "title": "显式空闲链表", "slug": "显式空闲链表" }, { "level": 3, "title": "分离的空闲链表", "slug": "分离的空闲链表" }, { "level": 2, "title": "垃圾收集", "slug": "垃圾收集" }, { "level": 3, "title": "基本知识", "slug": "基本知识" }, { "level": 3, "title": "Mark&Sweep垃圾收集器", "slug": "mark-sweep垃圾收集器" } ], "readingTime": { "minutes": 38.44, "words": 11532 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "编译器相关", "frontmatter": { "title": "编译器相关", "lang": "zh-CN", "sidebarDepth": 1, "summary": "gcc gcc在编译代码时可以做出优化,通过选项-On(n=0,1,2...)确定优化等级。优化后的代码在debug时,打印某些变量时会出现。解决方法就是关闭优化选项。或者,如果你只关心某个变量的话,可以将其用volatile`关键字修饰。\r-E 预编译 .c->.i 对应cpp,即c预处理器,主要是在扩展include和宏。; \r-S 编译为汇编代码 .i", "meta": [ { "property": "og:url", "content": "/note/cs/compiler.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "编译器相关" }, { "property": "og:description", "content": "gcc gcc在编译代码时可以做出优化,通过选项-On(n=0,1,2...)确定优化等级。优化后的代码在debug时,打印某些变量时会出现。解决方法就是关闭优化选项。或者,如果你只关心某个变量的话,可以将其用volatile`关键字修饰。\r-E 预编译 .c->.i 对应cpp,即c预处理器,主要是在扩展include和宏。; \r-S 编译为汇编代码 .i" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/compiler.html", "relativePath": "note/cs/compiler.md", "key": "v-79a30160", "path": "/note/cs/compiler/", "headers": [ { "level": 2, "title": "gcc", "slug": "gcc" }, { "level": 2, "title": "attribute", "slug": "attribute" }, { "level": 2, "title": "工具", "slug": "工具" }, { "level": 3, "title": "反汇编器 objdump", "slug": "反汇编器-objdump" } ], "readingTime": { "minutes": 1.69, "words": 506 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "gdb", "frontmatter": { "title": "gdb", "lang": "zh-CN", "sidebarDepth": 1, "summary": "gdb cheatsheet gdb 文档\r-g: 生成debugging symbols,使得调试更高效。-ggdb,包含gdb规定的符号。; gdb [--args] program [args]进入debug模式\rset args \\; \rrun: 执行程序; \rkill: 关闭执行的程序; \rhelp; 检查栈\rbacktrace/where | b", "meta": [ { "property": "og:url", "content": "/note/cs/gdb-cheatsheet.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "gdb" }, { "property": "og:description", "content": "gdb cheatsheet gdb 文档\r-g: 生成debugging symbols,使得调试更高效。-ggdb,包含gdb规定的符号。; gdb [--args] program [args]进入debug模式\rset args \\; \rrun: 执行程序; \rkill: 关闭执行的程序; \rhelp; 检查栈\rbacktrace/where | b" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/gdb-cheatsheet.html", "relativePath": "note/cs/gdb-cheatsheet.md", "key": "v-00a724b4", "path": "/note/cs/gdb-cheatsheet/", "headers": [ { "level": 2, "title": "gdb cheatsheet", "slug": "gdb-cheatsheet" }, { "level": 2, "title": "gdb-tui", "slug": "gdb-tui" }, { "level": 2, "title": "小技巧", "slug": "小技巧" } ], "readingTime": { "minutes": 5.14, "words": 1541 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "git", "frontmatter": { "title": "git", "lang": "zh-CN", "sidebarDepth": 1, "summary": "资源 交互式Git入门网站 强烈推荐!!! Pro Git 中文版 Oh Shit, Git!?! 简短的介绍了如何从Git错误中恢复 Git 的数据模型 Git from the Bottom Up Git 的数据模型 快照 在Git的术语里,文件被称作Blob对象,也就是一组数据。目录则被称之为“树”,它将名字与 Blob 对象或树对象进行映射(使得目录", "meta": [ { "property": "og:url", "content": "/note/cs/git.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "git" }, { "property": "og:description", "content": "资源 交互式Git入门网站 强烈推荐!!! Pro Git 中文版 Oh Shit, Git!?! 简短的介绍了如何从Git错误中恢复 Git 的数据模型 Git from the Bottom Up Git 的数据模型 快照 在Git的术语里,文件被称作Blob对象,也就是一组数据。目录则被称之为“树”,它将名字与 Blob 对象或树对象进行映射(使得目录" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/git.html", "relativePath": "note/cs/git.md", "key": "v-18cdf9a6", "path": "/note/cs/git/", "headers": [ { "level": 2, "title": "资源", "slug": "资源" }, { "level": 2, "title": "Git 的数据模型", "slug": "git-的数据模型" }, { "level": 3, "title": "快照", "slug": "快照" }, { "level": 3, "title": "历史记录", "slug": "历史记录" }, { "level": 3, "title": "数据模型的伪码表示", "slug": "数据模型的伪码表示" }, { "level": 3, "title": "对象和内存寻址", "slug": "对象和内存寻址" }, { "level": 3, "title": "引用", "slug": "引用" }, { "level": 3, "title": "仓库", "slug": "仓库" }, { "level": 2, "title": "相对引用", "slug": "相对引用" }, { "level": 2, "title": "暂存区", "slug": "暂存区" }, { "level": 2, "title": "tag", "slug": "tag" }, { "level": 2, "title": "cheatsheet", "slug": "cheatsheet" }, { "level": 3, "title": "git stash", "slug": "git-stash" }, { "level": 2, "title": "远程仓库", "slug": "远程仓库" }, { "level": 3, "title": "git clone", "slug": "git-clone" }, { "level": 3, "title": "git fetch", "slug": "git-fetch" }, { "level": 3, "title": "git pull", "slug": "git-pull" }, { "level": 3, "title": "git push", "slug": "git-push" }, { "level": 3, "title": "最常见团队合作工作流", "slug": "最常见团队合作工作流" }, { "level": 3, "title": "远程服务器拒绝!(Remote Rejected)", "slug": "远程服务器拒绝-remote-rejected" }, { "level": 3, "title": "合并特性分支", "slug": "合并特性分支" }, { "level": 3, "title": "rebase 和 merge", "slug": "rebase-和-merge" }, { "level": 3, "title": "远程跟踪", "slug": "远程跟踪" } ], "readingTime": { "minutes": 12.96, "words": 3889 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "ICS-PA心得", "frontmatter": { "title": "ICS-PA心得", "lang": "zh-CN", "sidebarDepth": 1, "summary": "PA1 NEMU准备\rmake ISA=$ISA run; \r在cmdc()函数中, 调用cpuexec()的时候传入了参数-1,但参数类型是uint64_t,因此实际的值为$2^{64}-1$,即0xffffffffffffffff。; \r三个对调试有用的宏(在nemu/include/debug.h中定义); \rLog()是printf()的升级版, 专", "meta": [ { "property": "og:url", "content": "/note/cs/ics-pa.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "ICS-PA心得" }, { "property": "og:description", "content": "PA1 NEMU准备\rmake ISA=$ISA run; \r在cmdc()函数中, 调用cpuexec()的时候传入了参数-1,但参数类型是uint64_t,因此实际的值为$2^{64}-1$,即0xffffffffffffffff。; \r三个对调试有用的宏(在nemu/include/debug.h中定义); \rLog()是printf()的升级版, 专" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/ics-pa.html", "relativePath": "note/cs/ics-pa.md", "key": "v-c177b7f8", "path": "/note/cs/ics-pa/", "headers": [ { "level": 2, "title": "PA1", "slug": "pa1" }, { "level": 3, "title": "NEMU准备", "slug": "nemu准备" }, { "level": 3, "title": "如何调试", "slug": "如何调试" }, { "level": 3, "title": "一条指令在NEMU中的执行过程", "slug": "一条指令在nemu中的执行过程" } ], "readingTime": { "minutes": 8.97, "words": 2692 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "riscv", "frontmatter": { "title": "riscv", "lang": "zh-CN", "sidebarDepth": 1, "summary": "", "meta": [ { "property": "og:url", "content": "/note/cs/isa-riscv.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "riscv" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/isa-riscv.html", "relativePath": "note/cs/isa-riscv.md", "key": "v-2645e174", "path": "/note/cs/isa-riscv/", "readingTime": { "minutes": 0, "words": 0 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "i386", "frontmatter": { "title": "i386", "lang": "zh-CN", "sidebarDepth": 2, "summary": "基本编程模型 内存组织和分段(Segmentation) 物理内存由8-bit的字节组成的序列构成。每个字节有一个唯一的地址,范围$[0, 2^{32}-1]$,共4GB。 内存组织模型有两种\rflat address space 由大小为4GB的单个数组组成; \rsegmented address space 由16383($2^{14}-1$)个线性地址", "meta": [ { "property": "og:url", "content": "/note/cs/isa-i386.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "i386" }, { "property": "og:description", "content": "基本编程模型 内存组织和分段(Segmentation) 物理内存由8-bit的字节组成的序列构成。每个字节有一个唯一的地址,范围$[0, 2^{32}-1]$,共4GB。 内存组织模型有两种\rflat address space 由大小为4GB的单个数组组成; \rsegmented address space 由16383($2^{14}-1$)个线性地址" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/isa-i386.html", "relativePath": "note/cs/isa-i386.md", "key": "v-f3d9ca5c", "path": "/note/cs/isa-i386/", "headers": [ { "level": 2, "title": "基本编程模型", "slug": "基本编程模型" }, { "level": 3, "title": "内存组织和分段(Segmentation)", "slug": "内存组织和分段-segmentation" }, { "level": 3, "title": "数据类型", "slug": "数据类型" }, { "level": 2, "title": "寄存器", "slug": "寄存器" }, { "level": 3, "title": "通用寄存器", "slug": "通用寄存器" }, { "level": 3, "title": "段寄存器", "slug": "段寄存器" }, { "level": 3, "title": "指令格式", "slug": "指令格式" }, { "level": 3, "title": "操作数选择 Operand Selection", "slug": "操作数选择-operand-selection" }, { "level": 3, "title": "中断和异常(Interrupts and Exceptions)", "slug": "中断和异常-interrupts-and-exceptions" }, { "level": 2, "title": "应用指令集", "slug": "应用指令集" }, { "level": 3, "title": "数据移动指令", "slug": "数据移动指令" }, { "level": 3, "title": "二元算术指令", "slug": "二元算术指令" }, { "level": 3, "title": "十进制算数指令", "slug": "十进制算数指令" }, { "level": 3, "title": "逻辑指令", "slug": "逻辑指令" }, { "level": 3, "title": "控制转移指令", "slug": "控制转移指令" }, { "level": 3, "title": "杂项指令", "slug": "杂项指令" }, { "level": 2, "title": "80386指令集说明", "slug": "_80386指令集说明" }, { "level": 3, "title": "操作数和地址的大小(Operand-Size, Address-Size)", "slug": "操作数和地址的大小-operand-size-address-size" }, { "level": 3, "title": "指令格式", "slug": "指令格式-2" }, { "level": 3, "title": "指令", "slug": "指令" }, { "level": 2, "title": "Intel 和 AT&T 格式汇编的语法差异", "slug": "intel-和-at-t-格式汇编的语法差异" } ], "readingTime": { "minutes": 22.44, "words": 6733 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Python数据类", "frontmatter": { "icon": "page", "title": "Python数据类", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-05T00:00:00.000Z", "summary": "dataclasses 数据类,即一种主要用于存放数据的类。如果要手动写的话,需要在init方法中写一大段样板代码,并且可能需要重写eq,repr等方法。这些代码都高度重复,手写又很麻烦。Python从3.7开始内置了dataclasses模块,用于解决这个问题。 基本用法 定义一个Book数据类,有三个属性,其中两个有默认值。用inspect模块查看Boo", "meta": [ { "property": "og:url", "content": "/note/python/dataclass.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Python数据类" }, { "property": "og:description", "content": "dataclasses 数据类,即一种主要用于存放数据的类。如果要手动写的话,需要在init方法中写一大段样板代码,并且可能需要重写eq,repr等方法。这些代码都高度重复,手写又很麻烦。Python从3.7开始内置了dataclasses模块,用于解决这个问题。 基本用法 定义一个Book数据类,有三个属性,其中两个有默认值。用inspect模块查看Boo" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2022-04-05T00:00:00.000Z" } ], "parsedDate": "4/5" }, "regularPath": "/note/python/dataclass.html", "relativePath": "note/python/dataclass.md", "key": "v-52b7ae26", "path": "/note/python/dataclass/", "headers": [ { "level": 2, "title": "dataclasses", "slug": "dataclasses" }, { "level": 3, "title": "基本用法", "slug": "基本用法" }, { "level": 3, "title": "冻结实例", "slug": "冻结实例" }, { "level": 3, "title": "计算属性", "slug": "计算属性" }, { "level": 3, "title": "实例排序", "slug": "实例排序" }, { "level": 2, "title": "pydantic", "slug": "pydantic" }, { "level": 3, "title": "基础使用", "slug": "基础使用" }, { "level": 3, "title": "属性检查", "slug": "属性检查" }, { "level": 3, "title": "模型检查", "slug": "模型检查" }, { "level": 3, "title": "设置", "slug": "设置" }, { "level": 3, "title": "将pydantic数据对象转为python字典对象", "slug": "将pydantic数据对象转为python字典对象" } ], "readingTime": { "minutes": 2.75, "words": 826 }, "contributors": [] }, { "title": "构建图片数据集", "frontmatter": { "icon": "page", "title": "构建图片数据集", "author": "Leonhardt", "category": "Python", "tag": [ "pytorch" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-03T00:00:00.000Z", "summary": "ImageFolder torchvision.datasets.ImageFolder(root, transform = None, loader=)\rroot: 数据集的根目录; \rtransform: 图像的预处理操作; \rloader: 图像加载函数,默认使用Pillow。给定路径,返回图片。; 一个通用的图片数据加载器,要求数据集以以下方式组织 ", "meta": [ { "property": "og:url", "content": "/note/python/image_folder.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "构建图片数据集" }, { "property": "og:description", "content": "ImageFolder torchvision.datasets.ImageFolder(root, transform = None, loader=)\rroot: 数据集的根目录; \rtransform: 图像的预处理操作; \rloader: 图像加载函数,默认使用Pillow。给定路径,返回图片。; 一个通用的图片数据加载器,要求数据集以以下方式组织 " }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "pytorch" }, { "property": "article:published_time", "content": "2022-04-03T00:00:00.000Z" } ], "parsedDate": "4/3" }, "regularPath": "/note/python/image_folder.html", "relativePath": "note/python/image_folder.md", "key": "v-40b88f82", "path": "/note/python/image_folder/", "headers": [ { "level": 2, "title": "ImageFolder", "slug": "imagefolder" } ], "readingTime": { "minutes": 0.73, "words": 218 }, "contributors": [] }, { "title": "Pytorch基础", "frontmatter": { "icon": "page", "title": "Pytorch基础", "author": "Leonhardt", "category": "Python", "tag": [ "pytorch" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-19T00:00:00.000Z", "summary": "learning rate scheduler 学习率和优化器优化参数同时进行,所以step, T_max计算要考虑每轮迭代多少次。 nn.Module中的self.register_buffer()解析 该方法的作用是定义一组参数,该组参数的特别之处在于:模型训练时不会更新(即调用 optimizer.step() 后该组参数不会变化,只可人为地改变它们的", "meta": [ { "property": "og:url", "content": "/note/python/pytorch_base.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Pytorch基础" }, { "property": "og:description", "content": "learning rate scheduler 学习率和优化器优化参数同时进行,所以step, T_max计算要考虑每轮迭代多少次。 nn.Module中的self.register_buffer()解析 该方法的作用是定义一组参数,该组参数的特别之处在于:模型训练时不会更新(即调用 optimizer.step() 后该组参数不会变化,只可人为地改变它们的" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "pytorch" }, { "property": "article:published_time", "content": "2022-04-19T00:00:00.000Z" } ], "parsedDate": "4/19" }, "regularPath": "/note/python/pytorch_base.html", "relativePath": "note/python/pytorch_base.md", "key": "v-a5f2a928", "path": "/note/python/pytorch_base/", "headers": [ { "level": 2, "title": "learning rate scheduler", "slug": "learning-rate-scheduler" }, { "level": 2, "title": "nn.Module中的self.register_buffer()解析", "slug": "nn-module中的self-register-buffer-解析" } ], "readingTime": { "minutes": 1.5, "words": 451 }, "contributors": [] }, { "title": "SqlAlchemy", "frontmatter": { "icon": "page", "title": "SqlAlchemy", "author": "Leonhardt", "category": "Python", "tag": [ "python", "database" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-06T00:00:00.000Z", "summary": "基本用法 创建表 增删改查", "meta": [ { "property": "og:url", "content": "/note/python/sqlalchemy.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "SqlAlchemy" }, { "property": "og:description", "content": "基本用法 创建表 增删改查" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:tag", "content": "database" }, { "property": "article:published_time", "content": "2022-04-06T00:00:00.000Z" } ], "parsedDate": "4/6" }, "regularPath": "/note/python/sqlalchemy.html", "relativePath": "note/python/sqlalchemy.md", "key": "v-6a298ac0", "path": "/note/python/sqlalchemy/", "headers": [ { "level": 2, "title": "基本用法", "slug": "基本用法" }, { "level": 3, "title": "创建表", "slug": "创建表" }, { "level": 3, "title": "增删改查", "slug": "增删改查" } ], "readingTime": { "minutes": 1.11, "words": 334 }, "contributors": [] }, { "title": "使用Weight&Bias记录实验数据", "frontmatter": { "icon": "page", "title": "使用Weight&Bias记录实验数据", "author": "Leonhardt", "category": "Python", "tag": [ "python", "pytorch", "visualization" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-06T00:00:00.000Z", "summary": "准备工作\r注册,获取api-key; \rpip install wandb; \rwandb login 输入api-key; 界面 Project\rDashboard: 实验跟踪,各种图表,可视化记录的数据; \rArtifacts: 数据集、模型的版本控制; \rSweeps: 超参数优化; \rReports: 保存和共享可重现的结果; 每个Project下会", "meta": [ { "property": "og:url", "content": "/note/python/weight_bias.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "使用Weight&Bias记录实验数据" }, { "property": "og:description", "content": "准备工作\r注册,获取api-key; \rpip install wandb; \rwandb login 输入api-key; 界面 Project\rDashboard: 实验跟踪,各种图表,可视化记录的数据; \rArtifacts: 数据集、模型的版本控制; \rSweeps: 超参数优化; \rReports: 保存和共享可重现的结果; 每个Project下会" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:tag", "content": "pytorch" }, { "property": "article:tag", "content": "visualization" }, { "property": "article:published_time", "content": "2022-04-06T00:00:00.000Z" } ], "parsedDate": "4/6" }, "regularPath": "/note/python/weight_bias.html", "relativePath": "note/python/weight_bias.md", "key": "v-ed791134", "path": "/note/python/weight_bias/", "headers": [ { "level": 2, "title": "准备工作", "slug": "准备工作" }, { "level": 2, "title": "界面", "slug": "界面" }, { "level": 2, "title": "基本使用", "slug": "基本使用" }, { "level": 2, "title": "sweep", "slug": "sweep" }, { "level": 3, "title": "准备", "slug": "准备" }, { "level": 3, "title": "启动", "slug": "启动" } ], "readingTime": { "minutes": 2.32, "words": 696 }, "contributors": [] }, { "title": "Linux - Ubantu", "frontmatter": { "title": "Linux - Ubantu", "lang": "zh-CN", "sidebarDepth": 2, "summary": "安装 NJU PA0 分区:此电脑->管理->磁盘管理,选择磁盘,右键->压缩卷,分配适当空间即可,不用新建简单卷。 设置\rsudo apt install gnome-tweaks; \rsudo apt remove gnome-shell-extension-ubantu-dock; \rsudo dpkg -i package_file.deb; 关于键", "meta": [ { "property": "og:url", "content": "/note/cs/linux.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Linux - Ubantu" }, { "property": "og:description", "content": "安装 NJU PA0 分区:此电脑->管理->磁盘管理,选择磁盘,右键->压缩卷,分配适当空间即可,不用新建简单卷。 设置\rsudo apt install gnome-tweaks; \rsudo apt remove gnome-shell-extension-ubantu-dock; \rsudo dpkg -i package_file.deb; 关于键" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/linux.html", "relativePath": "note/cs/linux.md", "key": "v-54e5b966", "path": "/note/cs/linux/", "headers": [ { "level": 2, "title": "安装", "slug": "安装" }, { "level": 2, "title": "设置", "slug": "设置" }, { "level": 2, "title": "关于键位", "slug": "关于键位" }, { "level": 2, "title": "ANSI转义码", "slug": "ansi转义码" }, { "level": 3, "title": "8-bit颜色", "slug": "_8-bit颜色" }, { "level": 3, "title": "24-bit颜色(RGB)", "slug": "_24-bit颜色-rgb" }, { "level": 2, "title": "Unix哲学:", "slug": "unix哲学" }, { "level": 2, "title": "Linux命令", "slug": "linux命令" }, { "level": 3, "title": "别名", "slug": "别名" }, { "level": 3, "title": "特别", "slug": "特别" }, { "level": 2, "title": "环境变量", "slug": "环境变量" }, { "level": 2, "title": "工具", "slug": "工具" }, { "level": 3, "title": "strace", "slug": "strace" }, { "level": 3, "title": "tmux", "slug": "tmux" }, { "level": 3, "title": "tree", "slug": "tree" }, { "level": 2, "title": "makefile", "slug": "makefile" }, { "level": 3, "title": "基本规则", "slug": "基本规则" }, { "level": 3, "title": "设置变量&变量展开", "slug": "设置变量-变量展开" }, { "level": 3, "title": "判断", "slug": "判断" }, { "level": 3, "title": "include", "slug": "include" }, { "level": 3, "title": "函数", "slug": "函数" }, { "level": 2, "title": "ssh", "slug": "ssh" }, { "level": 2, "title": "任务管理", "slug": "任务管理" }, { "level": 2, "title": "进程管理", "slug": "进程管理" } ], "readingTime": { "minutes": 10.98, "words": 3293 }, "updateTime": "2022年2月19日 13:19", "updateTimeStamp": 1645247953000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "正则表达式", "frontmatter": { "title": "正则表达式", "lang": "zh-CN", "sidebarDepth": 1, "summary": "学习网站推荐 regexone.com 一个交互式的入门网站 learn-regex 基础 元字符 描述 | ----------------------------------------------------------------------| . match-any-charcater | [ ] 匹配方括号内的任意一个字符 | [^ ] 匹配除了", "meta": [ { "property": "og:url", "content": "/note/cs/regex.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "正则表达式" }, { "property": "og:description", "content": "学习网站推荐 regexone.com 一个交互式的入门网站 learn-regex 基础 元字符 描述 | ----------------------------------------------------------------------| . match-any-charcater | [ ] 匹配方括号内的任意一个字符 | [^ ] 匹配除了" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/regex.html", "relativePath": "note/cs/regex.md", "key": "v-e9d275f4", "path": "/note/cs/regex/", "headers": [ { "level": 2, "title": "学习网站推荐", "slug": "学习网站推荐" }, { "level": 2, "title": "基础", "slug": "基础" }, { "level": 2, "title": "标志", "slug": "标志" }, { "level": 2, "title": "前后预查", "slug": "前后预查" }, { "level": 2, "title": "贪婪匹配和惰性匹配", "slug": "贪婪匹配和惰性匹配" } ], "readingTime": { "minutes": 2.36, "words": 707 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "shell", "frontmatter": { "title": "shell", "lang": "zh-CN", "sidebarDepth": 2, "summary": "shell 是什么 核心功能:允许你执行程序,输入并获取某种半结构化的输出。 shell 基础 shell 基于空格分割命令并进行解析,执行第一个单词代表的程序,后续单词将作为程序访问的参数 环境变量 shell去哪里找需要执行的程序呢?shell是一个编程环境,有变量,条件,循环和函数,在shell中执行命令就是在执行一段shell可以理解的代码。如果执行", "meta": [ { "property": "og:url", "content": "/note/cs/shell-cheatsheet.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "shell" }, { "property": "og:description", "content": "shell 是什么 核心功能:允许你执行程序,输入并获取某种半结构化的输出。 shell 基础 shell 基于空格分割命令并进行解析,执行第一个单词代表的程序,后续单词将作为程序访问的参数 环境变量 shell去哪里找需要执行的程序呢?shell是一个编程环境,有变量,条件,循环和函数,在shell中执行命令就是在执行一段shell可以理解的代码。如果执行" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/shell-cheatsheet.html", "relativePath": "note/cs/shell-cheatsheet.md", "key": "v-e781ae88", "path": "/note/cs/shell-cheatsheet/", "headers": [ { "level": 2, "title": "shell 是什么", "slug": "shell-是什么" }, { "level": 2, "title": "shell 基础", "slug": "shell-基础" }, { "level": 3, "title": "环境变量", "slug": "环境变量" }, { "level": 3, "title": "ls -l & chmod", "slug": "ls-l-chmod" }, { "level": 3, "title": "在程序间创建连接--重定向", "slug": "在程序间创建连接-重定向" }, { "level": 3, "title": "root", "slug": "root" }, { "level": 2, "title": "shell脚本", "slug": "shell脚本" }, { "level": 3, "title": "bash函数", "slug": "bash函数" }, { "level": 3, "title": "文件描述符", "slug": "文件描述符" }, { "level": 2, "title": "shell工具", "slug": "shell工具" }, { "level": 3, "title": "查看程序执行时间--time", "slug": "查看程序执行时间-time" }, { "level": 3, "title": "查找文件--find", "slug": "查找文件-find" }, { "level": 3, "title": "xargs", "slug": "xargs" }, { "level": 3, "title": "wc--代码统计", "slug": "wc-代码统计" }, { "level": 3, "title": "查找代码--grep", "slug": "查找代码-grep" }, { "level": 3, "title": "sed--流编辑器", "slug": "sed-流编辑器" }, { "level": 3, "title": "awk--行文本处理", "slug": "awk-行文本处理" }, { "level": 3, "title": "nl--加行号显示", "slug": "nl-加行号显示" }, { "level": 3, "title": "文件夹导航", "slug": "文件夹导航" }, { "level": 2, "title": "cheatsheet", "slug": "cheatsheet" } ], "readingTime": { "minutes": 16.64, "words": 4992 }, "updateTime": "2022年4月2日 16:34", "updateTimeStamp": 1648888453000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "vim", "frontmatter": { "title": "vim", "category": "使用指南", "tag": [ "页面配置", "使用指南" ], "sticky": true, "star": true, "summary": "Vim基础 资料 学习Vim vimtutor : Vim安装时自带的教程 Vim Adventures Vim 小技巧 改键 ubantu \rsetxkbmap -option caps:escape capslock映射为esc; \rsetxkbmap -option ctrl:nocaps capslock映射为ctrl; 模式 Vim的设计以大多数时", "meta": [ { "property": "og:url", "content": "/note/cs/vim.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "vim" }, { "property": "og:description", "content": "Vim基础 资料 学习Vim vimtutor : Vim安装时自带的教程 Vim Adventures Vim 小技巧 改键 ubantu \rsetxkbmap -option caps:escape capslock映射为esc; \rsetxkbmap -option ctrl:nocaps capslock映射为ctrl; 模式 Vim的设计以大多数时" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "页面配置" }, { "property": "article:tag", "content": "使用指南" } ], "parsedDate": "10/3" }, "regularPath": "/note/cs/vim.html", "relativePath": "note/cs/vim.md", "key": "v-23c6f2a6", "path": "/note/cs/vim/", "headers": [ { "level": 2, "title": "Vim基础", "slug": "vim基础" }, { "level": 3, "title": "资料", "slug": "资料" }, { "level": 3, "title": "改键", "slug": "改键" }, { "level": 3, "title": "模式", "slug": "模式" }, { "level": 3, "title": "缓存,标签页,窗口", "slug": "缓存-标签页-窗口" }, { "level": 3, "title": "基操", "slug": "基操" }, { "level": 3, "title": "移动", "slug": "移动" }, { "level": 3, "title": "编辑", "slug": "编辑" }, { "level": 3, "title": "计数", "slug": "计数" }, { "level": 3, "title": "搜索", "slug": "搜索" }, { "level": 3, "title": "修饰语", "slug": "修饰语" }, { "level": 3, "title": "扩展Vim", "slug": "扩展vim" }, { "level": 2, "title": "practice vim", "slug": "practice-vim" }, { "level": 3, "title": "Text Object", "slug": "text-object" }, { "level": 2, "title": "Vim进阶", "slug": "vim进阶" }, { "level": 3, "title": "vim生成的文件", "slug": "vim生成的文件" }, { "level": 3, "title": "搜索和替换", "slug": "搜索和替换" }, { "level": 3, "title": "宏", "slug": "宏" }, { "level": 3, "title": "在Vim中执行外部命令", "slug": "在vim中执行外部命令" }, { "level": 3, "title": "保存选中部分,取回内容", "slug": "保存选中部分-取回内容" }, { "level": 3, "title": "设置", "slug": "设置" }, { "level": 3, "title": "自动补全", "slug": "自动补全" }, { "level": 3, "title": "代码折叠", "slug": "代码折叠" }, { "level": 3, "title": "命令重映射", "slug": "命令重映射" }, { "level": 3, "title": "先导键(leader key)", "slug": "先导键-leader-key" }, { "level": 3, "title": "vim寄存器", "slug": "vim寄存器" }, { "level": 2, "title": "多文件,多窗口", "slug": "多文件-多窗口" }, { "level": 2, "title": "会话(session)", "slug": "会话-session" }, { "level": 2, "title": "插件", "slug": "插件" }, { "level": 3, "title": "vim-plug", "slug": "vim-plug" }, { "level": 3, "title": "ctags", "slug": "ctags" }, { "level": 3, "title": "YouCompleteMe", "slug": "youcompleteme" }, { "level": 3, "title": "ack", "slug": "ack" }, { "level": 3, "title": "ctrlp", "slug": "ctrlp" }, { "level": 3, "title": "easy-motion", "slug": "easy-motion" }, { "level": 3, "title": "vim-bookmark", "slug": "vim-bookmark" }, { "level": 3, "title": "snippet", "slug": "snippet" }, { "level": 2, "title": "vim-script", "slug": "vim-script" }, { "level": 3, "title": "语法", "slug": "语法" } ], "readingTime": { "minutes": 15.81, "words": 4744 }, "updateTime": "October 3, 2021 10:18", "updateTimeStamp": 1633227485000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "JS 小知识", "frontmatter": { "title": "JS 小知识", "lang": "zh-CN", "sidebarDepth": 2, "summary": "箭头函数 类似 lambda 表达式。 需要注意的是,箭头函数没有 this, 如果在箭头函数内使用了 this,会导致 this 作为变量一直向上级词法作用域查找,直至找到为止。这经常会导致错误。 提升(Hoisting) JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,", "meta": [ { "property": "og:url", "content": "/note/js/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "JS 小知识" }, { "property": "og:description", "content": "箭头函数 类似 lambda 表达式。 需要注意的是,箭头函数没有 this, 如果在箭头函数内使用了 this,会导致 this 作为变量一直向上级词法作用域查找,直至找到为止。这经常会导致错误。 提升(Hoisting) JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句," }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/", "relativePath": "note/js/README.md", "key": "v-48d387a7", "path": "/note/js/", "headers": [ { "level": 2, "title": "箭头函数", "slug": "箭头函数" }, { "level": 2, "title": "提升(Hoisting)", "slug": "提升-hoisting" }, { "level": 2, "title": "in", "slug": "in" }, { "level": 2, "title": "exports&module.exports", "slug": "exports-module-exports" }, { "level": 3, "title": "创建和导出模块", "slug": "创建和导出模块" }, { "level": 3, "title": "导出多个方法和值", "slug": "导出多个方法和值" }, { "level": 3, "title": "语法变体", "slug": "语法变体" }, { "level": 3, "title": "导出默认值", "slug": "导出默认值" }, { "level": 3, "title": "console.log(module)", "slug": "console-log-module" }, { "level": 2, "title": "三个点(...)", "slug": "三个点" }, { "level": 2, "title": "caller & callee", "slug": "caller-callee" }, { "level": 2, "title": "apply & call & bind & this", "slug": "apply-call-bind-this" }, { "level": 2, "title": "正则", "slug": "正则" }, { "level": 2, "title": "JSON", "slug": "json" }, { "level": 2, "title": "Proxy对象", "slug": "proxy对象" }, { "level": 3, "title": "基础示例1", "slug": "基础示例1" }, { "level": 3, "title": "基础示例2", "slug": "基础示例2" }, { "level": 3, "title": "数组示例", "slug": "数组示例" } ], "readingTime": { "minutes": 6.83, "words": 2048 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "CSS 高级话题", "frontmatter": { "title": "CSS 高级话题", "lang": "zh-CN", "sidebarDepth": 1, "summary": "背景,阴影和混合模式 backgrounp属性是以下8个属性的简写\rbackground-image——指定一个文件或者生成的颜色渐变作为背景图片。; \r可以是一个图片url路径,如url(bg.png); \r也可以是一个渐变函数,如linear-gradient(to-right, white, blue); \rbackground-position——设", "meta": [ { "property": "og:url", "content": "/note/js/css-advance.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "CSS 高级话题" }, { "property": "og:description", "content": "背景,阴影和混合模式 backgrounp属性是以下8个属性的简写\rbackground-image——指定一个文件或者生成的颜色渐变作为背景图片。; \r可以是一个图片url路径,如url(bg.png); \r也可以是一个渐变函数,如linear-gradient(to-right, white, blue); \rbackground-position——设" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/css-advance.html", "relativePath": "note/js/css-advance.md", "key": "v-9ca7f6f4", "path": "/note/js/css-advance/", "headers": [ { "level": 2, "title": "背景,阴影和混合模式", "slug": "背景-阴影和混合模式" }, { "level": 3, "title": "渐变", "slug": "渐变" }, { "level": 3, "title": "阴影", "slug": "阴影" }, { "level": 3, "title": "混合模式", "slug": "混合模式" }, { "level": 2, "title": "对比,颜色和间距", "slug": "对比-颜色和间距" }, { "level": 3, "title": "对比", "slug": "对比" }, { "level": 3, "title": "颜色", "slug": "颜色" }, { "level": 3, "title": "间距", "slug": "间距" }, { "level": 2, "title": "排版", "slug": "排版" }, { "level": 3, "title": "Web字体", "slug": "web字体" }, { "level": 3, "title": "调整字距", "slug": "调整字距" }, { "level": 2, "title": "过渡", "slug": "过渡" }, { "level": 3, "title": "从这边到那边", "slug": "从这边到那边" }, { "level": 3, "title": "定时函数", "slug": "定时函数" }, { "level": 3, "title": "创建下拉菜单并添加过渡效果", "slug": "创建下拉菜单并添加过渡效果" }, { "level": 2, "title": "变换", "slug": "变换" }, { "level": 3, "title": "图标放大效果", "slug": "图标放大效果" }, { "level": 3, "title": "飞入效果", "slug": "飞入效果" }, { "level": 3, "title": "3D变换", "slug": "_3d变换" }, { "level": 2, "title": "动画", "slug": "动画" }, { "level": 3, "title": "关键帧", "slug": "关键帧" }, { "level": 3, "title": "动画延迟和填充模式", "slug": "动画延迟和填充模式" }, { "level": 3, "title": "用动画传递意图", "slug": "用动画传递意图" } ], "readingTime": { "minutes": 25.26, "words": 7577 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "CSS布局", "frontmatter": { "title": "CSS布局", "lang": "zh-CN", "sidebarDepth": 1, "summary": "浮动布局 要实现将图片移动到网页一侧,并且让文字围绕图片的效果,浮动是唯一的方法。这也是设计浮动的初衷。 双容器模式 通过将内容放置到两个嵌套的容器中,然后给内层的容器设置外边距,让它在外层容器中居中。\r示例代码 双容器外层为body,内层为.container 容器折叠 浮动元素不同于普通文档流的元素,它们的高度不会加到父元素上。这会造成容器折叠问题(容器", "meta": [ { "property": "og:url", "content": "/note/js/css-layout.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "CSS布局" }, { "property": "og:description", "content": "浮动布局 要实现将图片移动到网页一侧,并且让文字围绕图片的效果,浮动是唯一的方法。这也是设计浮动的初衷。 双容器模式 通过将内容放置到两个嵌套的容器中,然后给内层的容器设置外边距,让它在外层容器中居中。\r示例代码 双容器外层为body,内层为.container 容器折叠 浮动元素不同于普通文档流的元素,它们的高度不会加到父元素上。这会造成容器折叠问题(容器" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/css-layout.html", "relativePath": "note/js/css-layout.md", "key": "v-e1780150", "path": "/note/js/css-layout/", "headers": [ { "level": 2, "title": "浮动布局", "slug": "浮动布局" }, { "level": 3, "title": "双容器模式", "slug": "双容器模式" }, { "level": 3, "title": "容器折叠", "slug": "容器折叠" }, { "level": 3, "title": "浮动陷阱", "slug": "浮动陷阱" }, { "level": 3, "title": "媒体对象", "slug": "媒体对象" }, { "level": 3, "title": "网格系统", "slug": "网格系统" }, { "level": 2, "title": "Flexbox", "slug": "flexbox" }, { "level": 3, "title": "input", "slug": "input" }, { "level": 3, "title": "更多属性", "slug": "更多属性" }, { "level": 2, "title": "网格布局", "slug": "网格布局" }, { "level": 3, "title": "特性查询", "slug": "特性查询" }, { "level": 2, "title": "定位", "slug": "定位" }, { "level": 3, "title": "固定定位", "slug": "固定定位" }, { "level": 3, "title": "绝对定位", "slug": "绝对定位" }, { "level": 3, "title": "相对定位", "slug": "相对定位" }, { "level": 3, "title": "层叠上下文和z-index", "slug": "层叠上下文和z-index" }, { "level": 3, "title": "粘性定位", "slug": "粘性定位" } ], "readingTime": { "minutes": 20.08, "words": 6023 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "CSS 基础", "frontmatter": { "title": "CSS 基础", "lang": "zh-CN", "sidebarDepth": 1, "summary": "基础 术语\r声明:CSS中的一行,由一个属性和一个值组成。例如 color:black。; \r声明块:包含在大括号内的一组声明。; \r规则集:选择器 + 声明块; \r@规则:用“@”符号开头的语法。比如@import规则或者@media查询。; \r层叠值:作为层叠结果,应用到一个元素上的特定属性的值。; \r计算值:浏览器根据相对单位的值计算出的绝对值。; \r", "meta": [ { "property": "og:url", "content": "/note/js/css-basic.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "CSS 基础" }, { "property": "og:description", "content": "基础 术语\r声明:CSS中的一行,由一个属性和一个值组成。例如 color:black。; \r声明块:包含在大括号内的一组声明。; \r规则集:选择器 + 声明块; \r@规则:用“@”符号开头的语法。比如@import规则或者@media查询。; \r层叠值:作为层叠结果,应用到一个元素上的特定属性的值。; \r计算值:浏览器根据相对单位的值计算出的绝对值。; \r" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/css-basic.html", "relativePath": "note/js/css-basic.md", "key": "v-7f564674", "path": "/note/js/css-basic/", "headers": [ { "level": 2, "title": "基础", "slug": "基础" }, { "level": 3, "title": "术语", "slug": "术语" }, { "level": 3, "title": "选择器", "slug": "选择器" }, { "level": 3, "title": "浏览器的开发者工具", "slug": "浏览器的开发者工具" }, { "level": 3, "title": "层叠", "slug": "层叠" }, { "level": 3, "title": "继承(inherit 属性值)", "slug": "继承-inherit-属性值" }, { "level": 3, "title": "简写属性", "slug": "简写属性" }, { "level": 2, "title": "相对单位", "slug": "相对单位" }, { "level": 3, "title": "em & rem", "slug": "em-rem" }, { "level": 3, "title": "媒体查询", "slug": "媒体查询" }, { "level": 3, "title": "视口单位", "slug": "视口单位" }, { "level": 3, "title": "无单位的数值", "slug": "无单位的数值" }, { "level": 3, "title": "自定义属性(css变量)", "slug": "自定义属性-css变量" }, { "level": 2, "title": "盒模型", "slug": "盒模型" }, { "level": 3, "title": "元素宽度问题", "slug": "元素宽度问题" }, { "level": 3, "title": "元素高度问题", "slug": "元素高度问题" }, { "level": 3, "title": "负外边距", "slug": "负外边距" }, { "level": 3, "title": "外边距折叠", "slug": "外边距折叠" }, { "level": 3, "title": "容器内堆叠元素的间距", "slug": "容器内堆叠元素的间距" }, { "level": 2, "title": "渲染", "slug": "渲染" }, { "level": 3, "title": "布局", "slug": "布局" }, { "level": 3, "title": "绘制", "slug": "绘制" }, { "level": 3, "title": "合成", "slug": "合成" }, { "level": 2, "title": "css属性建议书写顺序", "slug": "css属性建议书写顺序" } ], "readingTime": { "minutes": 21.5, "words": 6449 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "CSS 模块化", "frontmatter": { "title": "CSS 模块化", "lang": "zh-CN", "sidebarDepth": 1, "summary": "模块化CSS 是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系。最终目的是,当我们修改其中一部分CSS时,不会对其他部分产生意料之外的影响。 基础样式 每个样式表的开头都要写一些给整个页面使用的通用规则,模块化CSS也不例外。这些规则通常被称为基础样式,其他的样式是构建在这些基础样式之上的。\rhttps://n", "meta": [ { "property": "og:url", "content": "/note/js/css-modular.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "CSS 模块化" }, { "property": "og:description", "content": "模块化CSS 是指把页面分割成不同的组成部分,这些组成部分可以在多种上下文中重复使用,并且互相之间没有依赖关系。最终目的是,当我们修改其中一部分CSS时,不会对其他部分产生意料之外的影响。 基础样式 每个样式表的开头都要写一些给整个页面使用的通用规则,模块化CSS也不例外。这些规则通常被称为基础样式,其他的样式是构建在这些基础样式之上的。\rhttps://n" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/css-modular.html", "relativePath": "note/js/css-modular.md", "key": "v-38b384f4", "path": "/note/js/css-modular/", "headers": [ { "level": 2, "title": "模块化CSS", "slug": "模块化css" }, { "level": 3, "title": "基础样式", "slug": "基础样式" }, { "level": 3, "title": "简单的模块组织规则", "slug": "简单的模块组织规则" }, { "level": 3, "title": "预处理器", "slug": "预处理器" }, { "level": 3, "title": "工具类", "slug": "工具类" }, { "level": 2, "title": "模式库", "slug": "模式库" }, { "level": 3, "title": "KSS", "slug": "kss" }, { "level": 3, "title": "编写KSS文档", "slug": "编写kss文档" } ], "readingTime": { "minutes": 9.95, "words": 2985 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "CSS 预处理器", "frontmatter": { "title": "CSS 预处理器", "lang": "zh-CN", "sidebarDepth": 2, "summary": "Sass 预处理器的工作原理是把我们写的源文件转译成输出文件,即常规CSS样式表。 安装 1. 新建项目目录并进入 2. npm init -y 初始化一个新的npm项目,创建package.json文件。 3. npm install --save-dev node-sass 安装node-sass包,并把它作为开发依赖写入package.json。在Wi", "meta": [ { "property": "og:url", "content": "/note/js/css-sass.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "CSS 预处理器" }, { "property": "og:description", "content": "Sass 预处理器的工作原理是把我们写的源文件转译成输出文件,即常规CSS样式表。 安装 1. 新建项目目录并进入 2. npm init -y 初始化一个新的npm项目,创建package.json文件。 3. npm install --save-dev node-sass 安装node-sass包,并把它作为开发依赖写入package.json。在Wi" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/css-sass.html", "relativePath": "note/js/css-sass.md", "key": "v-46e736e0", "path": "/note/js/css-sass/", "headers": [ { "level": 2, "title": "Sass", "slug": "sass" }, { "level": 3, "title": "安装", "slug": "安装" }, { "level": 3, "title": "运行", "slug": "运行" }, { "level": 3, "title": "核心特性", "slug": "核心特性" } ], "readingTime": { "minutes": 5.23, "words": 1568 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "css 小技巧", "frontmatter": { "title": "css 小技巧", "lang": "zh-CN", "sidebarDepth": 1, "summary": "背景与边框 透明边框 元素的背景默认会占据border+padding+content区域。即background-clip: border-box。 要实现元素背景外有一圈透明边框,需要修改background-clip为padding-box。则背景只占据padding+content区域。再将边框设为透明即可。 多重边框 box-shadow:一个正值", "meta": [ { "property": "og:url", "content": "/note/js/css-tricks.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "css 小技巧" }, { "property": "og:description", "content": "背景与边框 透明边框 元素的背景默认会占据border+padding+content区域。即background-clip: border-box。 要实现元素背景外有一圈透明边框,需要修改background-clip为padding-box。则背景只占据padding+content区域。再将边框设为透明即可。 多重边框 box-shadow:一个正值" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/css-tricks.html", "relativePath": "note/js/css-tricks.md", "key": "v-4f1f7eac", "path": "/note/js/css-tricks/", "headers": [ { "level": 2, "title": "背景与边框", "slug": "背景与边框" }, { "level": 3, "title": "透明边框", "slug": "透明边框" }, { "level": 3, "title": "多重边框", "slug": "多重边框" }, { "level": 3, "title": "边框内圆角", "slug": "边框内圆角" }, { "level": 3, "title": "条纹背景", "slug": "条纹背景" }, { "level": 2, "title": "布局", "slug": "布局" }, { "level": 3, "title": "紧贴底部的页脚", "slug": "紧贴底部的页脚" }, { "level": 2, "title": "oneline css", "slug": "oneline-css" }, { "level": 3, "title": "水平,垂直居中", "slug": "水平-垂直居中" }, { "level": 3, "title": "The Deconstructed Pancake", "slug": "the-deconstructed-pancake" }, { "level": 3, "title": "sidebar", "slug": "sidebar" }, { "level": 3, "title": "Pancake Stack", "slug": "pancake-stack" }, { "level": 3, "title": "经典圣杯布局", "slug": "经典圣杯布局" }, { "level": 3, "title": "12-span(网格布局)", "slug": "_12-span-网格布局" }, { "level": 3, "title": "RAM", "slug": "ram" }, { "level": 2, "title": "回到顶部", "slug": "回到顶部" } ], "readingTime": { "minutes": 3.62, "words": 1086 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "JS 基础", "frontmatter": { "title": "JS 基础", "lang": "zh-CN", "sidebarDepth": 2, "summary": "变量 按照ECMA-262的定义,JavaScript的变量只是在特定时间用于保存特定值的一个名字而已。 变量基础 类型 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。\r基本类型值指的是简单的数据段:包括 Undefined、Null、Boolean、Number和String 这五种。; \r引用类型值指那些可能由多个值构成的", "meta": [ { "property": "og:url", "content": "/note/js/js-base.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "JS 基础" }, { "property": "og:description", "content": "变量 按照ECMA-262的定义,JavaScript的变量只是在特定时间用于保存特定值的一个名字而已。 变量基础 类型 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。\r基本类型值指的是简单的数据段:包括 Undefined、Null、Boolean、Number和String 这五种。; \r引用类型值指那些可能由多个值构成的" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/js-base.html", "relativePath": "note/js/js-base.md", "key": "v-b0ce21b4", "path": "/note/js/js-base/", "headers": [ { "level": 2, "title": "变量", "slug": "变量" }, { "level": 3, "title": "变量基础", "slug": "变量基础" }, { "level": 3, "title": "执行环境及作用域", "slug": "执行环境及作用域" }, { "level": 3, "title": "垃圾收集", "slug": "垃圾收集" }, { "level": 2, "title": "函数", "slug": "函数" }, { "level": 3, "title": "递归", "slug": "递归" }, { "level": 3, "title": "闭包", "slug": "闭包" }, { "level": 3, "title": "模仿块级作用域", "slug": "模仿块级作用域" }, { "level": 3, "title": "私有变量和单例模式", "slug": "私有变量和单例模式" }, { "level": 3, "title": "[[scoped]]", "slug": "scoped" } ], "readingTime": { "minutes": 10.75, "words": 3226 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Vue.js", "frontmatter": { "title": "Vue.js", "lang": "zh-CN", "sidebarDepth": 1, "summary": "基础 深入 data vue组件中data中定义的数组,对象,实际类型是Proxy,都使用了代理。 全局变量 或使用provide/inject 父组件中用provide选项提供数据,子组件中用inject选项使用该数据。 router-link\r当router-link的目标路径可以和当前路径匹配(例如,当前/foo/bar,可以匹配/,/foo,/foo", "meta": [ { "property": "og:url", "content": "/note/js/vue.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Vue.js" }, { "property": "og:description", "content": "基础 深入 data vue组件中data中定义的数组,对象,实际类型是Proxy,都使用了代理。 全局变量 或使用provide/inject 父组件中用provide选项提供数据,子组件中用inject选项使用该数据。 router-link\r当router-link的目标路径可以和当前路径匹配(例如,当前/foo/bar,可以匹配/,/foo,/foo" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/vue.html", "relativePath": "note/js/vue.md", "key": "v-cccb9d74", "path": "/note/js/vue/", "headers": [ { "level": 2, "title": "基础", "slug": "基础" }, { "level": 2, "title": "深入", "slug": "深入" }, { "level": 3, "title": "data", "slug": "data" }, { "level": 3, "title": "全局变量", "slug": "全局变量" }, { "level": 3, "title": "router-link", "slug": "router-link" }, { "level": 3, "title": "nested router-view", "slug": "nested-router-view" }, { "level": 3, "title": "named router-view", "slug": "named-router-view" }, { "level": 3, "title": "route路径参数(动态链接)", "slug": "route路径参数-动态链接" }, { "level": 3, "title": "如何获取事件的event对象", "slug": "如何获取事件的event对象" } ], "readingTime": { "minutes": 2.01, "words": 602 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "python", "frontmatter": { "title": "python", "category": "Python", "sidebarDepth": 1, "summary": "import module\rdir(): 无参数,查看全局命名空间的变量; \rdir(module): 查看指定模块的变量; \r一个.py文件可看作一个模块; \rimport module (as alias) 引入module,可使用module命名空间及其内的变量; \rfrom module import var 将var从module中导入全局命名空间", "meta": [ { "property": "og:url", "content": "/note/python/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "python" }, { "property": "og:description", "content": "import module\rdir(): 无参数,查看全局命名空间的变量; \rdir(module): 查看指定模块的变量; \r一个.py文件可看作一个模块; \rimport module (as alias) 引入module,可使用module命名空间及其内的变量; \rfrom module import var 将var从module中导入全局命名空间" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "4/2" }, "regularPath": "/note/python/", "relativePath": "note/python/README.md", "key": "v-6012e381", "path": "/note/python/", "headers": [ { "level": 2, "title": "import", "slug": "import" }, { "level": 3, "title": "module", "slug": "module" }, { "level": 3, "title": "package", "slug": "package" }, { "level": 3, "title": "模块查找顺序", "slug": "模块查找顺序" }, { "level": 3, "title": "只导入一次", "slug": "只导入一次" }, { "level": 2, "title": "解包(自动)", "slug": "解包-自动" }, { "level": 2, "title": "函数", "slug": "函数" }, { "level": 3, "title": "参数", "slug": "参数" }, { "level": 3, "title": "函数注解", "slug": "函数注解" }, { "level": 3, "title": "lambda", "slug": "lambda" }, { "level": 2, "title": "类", "slug": "类" }, { "level": 3, "title": "基础", "slug": "基础" }, { "level": 3, "title": "动态加载", "slug": "动态加载" }, { "level": 3, "title": "成员变量", "slug": "成员变量" }, { "level": 2, "title": "打包到pip", "slug": "打包到pip" }, { "level": 2, "title": "anaconda", "slug": "anaconda" }, { "level": 3, "title": "常用命令", "slug": "常用命令" }, { "level": 2, "title": "tqdm", "slug": "tqdm" } ], "readingTime": { "minutes": 4.32, "words": 1297 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "资源与工具", "frontmatter": { "title": "资源与工具", "lang": "zh-CN", "sidebarDepth": 1, "summary": "谷歌字体 谷歌字体网站 选中字体后,点击select this style。在右边弹窗中复制部分到html中,复制@import`部分到css中。要使用字体时,复制下方的CSS rules即可指定字体。 font-awesome FontAwesome 在index.html的head最后添加: `` serve npm i -g serve serve -", "meta": [ { "property": "og:url", "content": "/note/js/resources.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "资源与工具" }, { "property": "og:description", "content": "谷歌字体 谷歌字体网站 选中字体后,点击select this style。在右边弹窗中复制部分到html中,复制@import`部分到css中。要使用字体时,复制下方的CSS rules即可指定字体。 font-awesome FontAwesome 在index.html的head最后添加: `` serve npm i -g serve serve -" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/resources.html", "relativePath": "note/js/resources.md", "key": "v-8e9843b4", "path": "/note/js/resources/", "headers": [ { "level": 2, "title": "谷歌字体", "slug": "谷歌字体" }, { "level": 2, "title": "font-awesome", "slug": "font-awesome" }, { "level": 2, "title": "serve", "slug": "serve" }, { "level": 2, "title": "json-serve", "slug": "json-serve" } ], "readingTime": { "minutes": 0.39, "words": 117 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "DL常用操作", "frontmatter": { "icon": "page", "title": "DL常用操作", "author": "Leonhardt", "category": "Python", "tag": [ "pytorch" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-03-28T00:00:00.000Z", "summary": "Dataloader, Dataset和Sampler 先简单介绍一下Dataloader, Dataset和Sampler:\rDataset即数据集,是实际数据存储的地方,可以简单的视为一个列表,列表中的元素为(X, y); \rSampler用于产生索引; \rDataloader使用Sampler产生的索引逐批量的读取Dataset中的数据。通常我们就是在", "meta": [ { "property": "og:url", "content": "/note/python/dl_operations.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "DL常用操作" }, { "property": "og:description", "content": "Dataloader, Dataset和Sampler 先简单介绍一下Dataloader, Dataset和Sampler:\rDataset即数据集,是实际数据存储的地方,可以简单的视为一个列表,列表中的元素为(X, y); \rSampler用于产生索引; \rDataloader使用Sampler产生的索引逐批量的读取Dataset中的数据。通常我们就是在" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "pytorch" }, { "property": "article:published_time", "content": "2022-03-28T00:00:00.000Z" } ], "parsedDate": "3/28" }, "regularPath": "/note/python/dl_operations.html", "relativePath": "note/python/dl_operations.md", "key": "v-53b023f4", "path": "/note/python/dl_operations/", "headers": [ { "level": 2, "title": "Dataloader, Dataset和Sampler", "slug": "dataloader-dataset和sampler" }, { "level": 3, "title": "数据采样", "slug": "数据采样" }, { "level": 3, "title": "Dataloader", "slug": "dataloader" }, { "level": 3, "title": "Sampler", "slug": "sampler" }, { "level": 3, "title": "另一种数据集划分方法random_split", "slug": "另一种数据集划分方法random-split" }, { "level": 2, "title": "范数与标准化", "slug": "范数与标准化" }, { "level": 2, "title": "scipy随机变量", "slug": "scipy随机变量" }, { "level": 2, "title": "截断分布-scipy.stats.truncnorm", "slug": "截断分布-scipy-stats-truncnorm" }, { "level": 2, "title": "谱归一化", "slug": "谱归一化" } ], "readingTime": { "minutes": 6.19, "words": 1856 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Effective Python", "frontmatter": { "title": "Effective Python", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2021-12-16T00:00:00.000Z", "summary": "用@property替代getter, setter写法\r用@property修饰的方法可以当做属性使用,被修饰的方法可看作属性的getter方法。; \r用@attr.setter修饰的方法为属性的setter方法。; 字典转对象 python读取json等数据时,会返回字典。因为python的字典不能用点操作符来访问,只能用[key]来访问,如果key是字", "meta": [ { "property": "og:url", "content": "/note/python/effective_python.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Effective Python" }, { "property": "og:description", "content": "用@property替代getter, setter写法\r用@property修饰的方法可以当做属性使用,被修饰的方法可看作属性的getter方法。; \r用@attr.setter修饰的方法为属性的setter方法。; 字典转对象 python读取json等数据时,会返回字典。因为python的字典不能用点操作符来访问,只能用[key]来访问,如果key是字" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2021-12-16T00:00:00.000Z" } ], "parsedDate": "12/16" }, "regularPath": "/note/python/effective_python.html", "relativePath": "note/python/effective_python.md", "key": "v-3ee45e84", "path": "/note/python/effective_python/", "headers": [ { "level": 2, "title": "用@property替代getter, setter写法", "slug": "用-property替代getter-setter写法" }, { "level": 2, "title": "字典转对象", "slug": "字典转对象" } ], "readingTime": { "minutes": 0.76, "words": 227 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "BOM&DOM&Event", "frontmatter": { "title": "BOM&DOM&Event", "lang": "zh-CN", "sidebarDepth": 2, "summary": "BOM\rwindow; \rwindow对象是JS的全局对象,所有全局作用域的变量和函数,都会变成window对象的属性和方法。; \r全局变量和定义在window对象上的属性间的唯一差别是,全局变量不能delete,而window对象上的属性可以。; \r访问未声明的全局变量会抛出错误,而访问未声明的window对象属性会返回undefined。; \r页面中每个", "meta": [ { "property": "og:url", "content": "/note/js/js-bom-dom.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "BOM&DOM&Event" }, { "property": "og:description", "content": "BOM\rwindow; \rwindow对象是JS的全局对象,所有全局作用域的变量和函数,都会变成window对象的属性和方法。; \r全局变量和定义在window对象上的属性间的唯一差别是,全局变量不能delete,而window对象上的属性可以。; \r访问未声明的全局变量会抛出错误,而访问未声明的window对象属性会返回undefined。; \r页面中每个" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/js-bom-dom.html", "relativePath": "note/js/js-bom-dom.md", "key": "v-14d75544", "path": "/note/js/js-bom-dom/", "headers": [ { "level": 2, "title": "BOM", "slug": "bom" }, { "level": 3, "title": "间歇调用和超时调用", "slug": "间歇调用和超时调用" }, { "level": 2, "title": "Event", "slug": "event" }, { "level": 3, "title": "事件流", "slug": "事件流" }, { "level": 3, "title": "事件处理程序", "slug": "事件处理程序" }, { "level": 3, "title": "事件对象", "slug": "事件对象" }, { "level": 3, "title": "事件类型", "slug": "事件类型" }, { "level": 3, "title": "内存和性能", "slug": "内存和性能" } ], "readingTime": { "minutes": 11.57, "words": 3472 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Python文件操作", "frontmatter": { "icon": "page", "title": "Python文件操作", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-03-30T00:00:00.000Z", "summary": "os.walk() os.walk(top[, topdown=True]): 从top目录开始,先序遍历所有子目录 pathlib & os & os.path path.xxx表示实例方法,Path.xxx表示类方法(@classmethod)。 文件操作 os & os.path pathlib 作用 ------------- -----------", "meta": [ { "property": "og:url", "content": "/note/python/file_operations.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Python文件操作" }, { "property": "og:description", "content": "os.walk() os.walk(top[, topdown=True]): 从top目录开始,先序遍历所有子目录 pathlib & os & os.path path.xxx表示实例方法,Path.xxx表示类方法(@classmethod)。 文件操作 os & os.path pathlib 作用 ------------- -----------" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2022-03-30T00:00:00.000Z" } ], "parsedDate": "3/30" }, "regularPath": "/note/python/file_operations.html", "relativePath": "note/python/file_operations.md", "key": "v-31708c46", "path": "/note/python/file_operations/", "headers": [ { "level": 2, "title": "os.walk()", "slug": "os-walk" }, { "level": 2, "title": "pathlib & os & os.path", "slug": "pathlib-os-os-path" }, { "level": 3, "title": "文件操作", "slug": "文件操作" }, { "level": 3, "title": "路径操作", "slug": "路径操作" }, { "level": 2, "title": "shutil", "slug": "shutil" }, { "level": 3, "title": "高阶文件操作", "slug": "高阶文件操作" }, { "level": 3, "title": "压缩操作", "slug": "压缩操作" } ], "readingTime": { "minutes": 3.51, "words": 1052 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "PyQt5 Image Viewer示例", "frontmatter": { "title": "PyQt5 Image Viewer示例", "author": "Leonhardt", "category": "Python", "tag": [ "PyQt5" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2021-12-15T00:00:00.000Z", "summary": "用Label显示图片\rQSizePolicy::Fixed:固定尺寸不能变; \rQSizePolicy::Minimum:可以放大; \rQSizePolicy::Maximum:可以缩小; \rQSizePolicy::Preferred:可以放大也可以缩小; \rQSizePolicy::Expanding:自动放大和缩小; \rQSizePolicy::Min", "meta": [ { "property": "og:url", "content": "/note/python/image_viewer.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "PyQt5 Image Viewer示例" }, { "property": "og:description", "content": "用Label显示图片\rQSizePolicy::Fixed:固定尺寸不能变; \rQSizePolicy::Minimum:可以放大; \rQSizePolicy::Maximum:可以缩小; \rQSizePolicy::Preferred:可以放大也可以缩小; \rQSizePolicy::Expanding:自动放大和缩小; \rQSizePolicy::Min" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "PyQt5" }, { "property": "article:published_time", "content": "2021-12-15T00:00:00.000Z" } ], "parsedDate": "12/15" }, "regularPath": "/note/python/image_viewer.html", "relativePath": "note/python/image_viewer.md", "key": "v-4746e18c", "path": "/note/python/image_viewer/", "headers": [ { "level": 2, "title": "用Label显示图片", "slug": "用label显示图片" }, { "level": 2, "title": "打开文件--QFileDialog", "slug": "打开文件-qfiledialog" }, { "level": 3, "title": "static 成员", "slug": "static-成员" }, { "level": 3, "title": "signals", "slug": "signals" }, { "level": 2, "title": "ScrollArea", "slug": "scrollarea" }, { "level": 2, "title": "QPainter", "slug": "qpainter" }, { "level": 2, "title": "代码", "slug": "代码" } ], "readingTime": { "minutes": 1.54, "words": 461 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "用Python制作gif图", "frontmatter": { "icon": "page", "title": "用Python制作gif图", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-03-30T00:00:00.000Z", "summary": "准备 安装 imageio 和 pygifsicle 库。 pygifsicle 只是 gifsicle 的Python接口,因此还需要安装 gifsicle 本体。 \rWindows系统需要下载二进制程序,然后将 gifsicle.exe 所在文件夹设为 path 环境变量。若执行gifsicle --version成功,则说明安装好了。; \rLinux系", "meta": [ { "property": "og:url", "content": "/note/python/make_gif.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "用Python制作gif图" }, { "property": "og:description", "content": "准备 安装 imageio 和 pygifsicle 库。 pygifsicle 只是 gifsicle 的Python接口,因此还需要安装 gifsicle 本体。 \rWindows系统需要下载二进制程序,然后将 gifsicle.exe 所在文件夹设为 path 环境变量。若执行gifsicle --version成功,则说明安装好了。; \rLinux系" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2022-03-30T00:00:00.000Z" } ], "parsedDate": "3/30" }, "regularPath": "/note/python/make_gif.html", "relativePath": "note/python/make_gif.md", "key": "v-7b4a8b80", "path": "/note/python/make_gif/", "headers": [ { "level": 2, "title": "准备", "slug": "准备" }, { "level": 2, "title": "代码", "slug": "代码" } ], "readingTime": { "minutes": 0.62, "words": 185 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "PyQt5记录", "frontmatter": { "title": "PyQt5记录", "author": "Leonhardt", "category": "Python", "tag": [ "PyQt5" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2021-12-14T00:00:00.000Z", "summary": "QtDesigner\r设计界面,产生一个xxx.ui文件; \rpyuic5 -x -o yyy.py xxx.ui; \r-o后面为输出文件名; \r-x表示在py文件中生成测试代码; 正确使用ui文件\r使用类继承,而非直接在生成的py文件上修改。; \r或直接用uic模块得到需要的类; 注意到,生成的py文件中,UI类是object的子类,而非QWiget的子类", "meta": [ { "property": "og:url", "content": "/note/python/pyqt5.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "PyQt5记录" }, { "property": "og:description", "content": "QtDesigner\r设计界面,产生一个xxx.ui文件; \rpyuic5 -x -o yyy.py xxx.ui; \r-o后面为输出文件名; \r-x表示在py文件中生成测试代码; 正确使用ui文件\r使用类继承,而非直接在生成的py文件上修改。; \r或直接用uic模块得到需要的类; 注意到,生成的py文件中,UI类是object的子类,而非QWiget的子类" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "PyQt5" }, { "property": "article:published_time", "content": "2021-12-14T00:00:00.000Z" } ], "parsedDate": "12/14" }, "regularPath": "/note/python/pyqt5.html", "relativePath": "note/python/pyqt5.md", "key": "v-6e6dfb46", "path": "/note/python/pyqt5/", "headers": [ { "level": 2, "title": "QtDesigner", "slug": "qtdesigner" }, { "level": 2, "title": "正确使用ui文件", "slug": "正确使用ui文件" }, { "level": 2, "title": "基本的Qt程序", "slug": "基本的qt程序" }, { "level": 2, "title": "基本布局", "slug": "基本布局" }, { "level": 2, "title": "Signal & Slot", "slug": "signal-slot" }, { "level": 3, "title": "基本用法", "slug": "基本用法" }, { "level": 3, "title": "signal可以携带数据", "slug": "signal可以携带数据" }, { "level": 3, "title": "自定义signal", "slug": "自定义signal" }, { "level": 2, "title": "QWidget", "slug": "qwidget" }, { "level": 3, "title": "signals", "slug": "signals" }, { "level": 3, "title": "slots", "slug": "slots" }, { "level": 2, "title": "QMainWindow", "slug": "qmainwindow" }, { "level": 2, "title": "图片和图标", "slug": "图片和图标" }, { "level": 3, "title": "QPixmap", "slug": "qpixmap" }, { "level": 3, "title": "QBitmap", "slug": "qbitmap" }, { "level": 3, "title": "QImage", "slug": "qimage" }, { "level": 3, "title": "QPicture", "slug": "qpicture" }, { "level": 3, "title": "QIcon(QPixmap)", "slug": "qicon-qpixmap" }, { "level": 2, "title": "文件位置处理", "slug": "文件位置处理" }, { "level": 2, "title": "QSS", "slug": "qss" } ], "readingTime": { "minutes": 4.89, "words": 1467 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "JS 对象", "frontmatter": { "title": "JS 对象", "lang": "zh-CN", "sidebarDepth": 2, "summary": "ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值,对象或函数。” 简单地说,对象就是一个散列表,包含一系列 key-value 对,其中值可以是数据或函数。 理解对象 ECMAScript 中有两类属性(property):数据属性和访问器属性。 属性的特征由 ECMA 定义的内部特性(attribute)描述。 数据属性的特性 1. [", "meta": [ { "property": "og:url", "content": "/note/js/js-object.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "JS 对象" }, { "property": "og:description", "content": "ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值,对象或函数。” 简单地说,对象就是一个散列表,包含一系列 key-value 对,其中值可以是数据或函数。 理解对象 ECMAScript 中有两类属性(property):数据属性和访问器属性。 属性的特征由 ECMA 定义的内部特性(attribute)描述。 数据属性的特性 1. [" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "zh-CN" }, { "property": "og:locale:alternate", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ], "parsedDate": "10/3" }, "regularPath": "/note/js/js-object.html", "relativePath": "note/js/js-object.md", "key": "v-0e0c7766", "path": "/note/js/js-object/", "headers": [ { "level": 2, "title": "理解对象", "slug": "理解对象" }, { "level": 3, "title": "数据属性的特性", "slug": "数据属性的特性" }, { "level": 3, "title": "访问器属性的特性", "slug": "访问器属性的特性" }, { "level": 3, "title": "Object.defineProperty()", "slug": "object-defineproperty" }, { "level": 2, "title": "创建对象", "slug": "创建对象" }, { "level": 3, "title": "工厂模式", "slug": "工厂模式" }, { "level": 3, "title": "构造函数模式", "slug": "构造函数模式" }, { "level": 3, "title": "原型模式", "slug": "原型模式" }, { "level": 3, "title": "组合使用构造函数模式和原型模式", "slug": "组合使用构造函数模式和原型模式" }, { "level": 3, "title": "动态原型模式", "slug": "动态原型模式" }, { "level": 3, "title": "寄生构造函数", "slug": "寄生构造函数" }, { "level": 3, "title": "稳妥构造函数模式", "slug": "稳妥构造函数模式" }, { "level": 2, "title": "继承", "slug": "继承" }, { "level": 3, "title": "原型链", "slug": "原型链" }, { "level": 3, "title": "借用构造函数(constructor stealing)", "slug": "借用构造函数-constructor-stealing" }, { "level": 3, "title": "组合继承", "slug": "组合继承" }, { "level": 3, "title": "原型式继承", "slug": "原型式继承" }, { "level": 3, "title": "寄生式继承", "slug": "寄生式继承" }, { "level": 3, "title": "寄生组合式继承", "slug": "寄生组合式继承" } ], "readingTime": { "minutes": 17.14, "words": 5141 }, "updateTime": "2021年10月3日 10:18", "updateTimeStamp": 1633227485000, "createTime": "2021年10月3日 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "numpy用法", "frontmatter": { "title": "numpy用法", "category": "Python", "tag": [ "numpy" ], "time": "2021-12-05T00:00:00.000Z", "summary": "索引 采样 x是一维数组,x[i],为x的第i个元素,np支持数组索引,x[[i, j, k]],得到[x[i], x[j], x[k]]。如果x[]中传入的数组大于一维,得到的结果类似于将数组flatten后作为索引,得到的结果再reshape成索引数组的形状。 np.clip np.random.shuffle 原地打乱数组元素的顺序 np.cumsum", "meta": [ { "property": "og:url", "content": "/note/python/numpy.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "numpy用法" }, { "property": "og:description", "content": "索引 采样 x是一维数组,x[i],为x的第i个元素,np支持数组索引,x[[i, j, k]],得到[x[i], x[j], x[k]]。如果x[]中传入的数组大于一维,得到的结果类似于将数组flatten后作为索引,得到的结果再reshape成索引数组的形状。 np.clip np.random.shuffle 原地打乱数组元素的顺序 np.cumsum" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "numpy" }, { "property": "article:published_time", "content": "2021-12-05T00:00:00.000Z" } ], "parsedDate": "12/5" }, "regularPath": "/note/python/numpy.html", "relativePath": "note/python/numpy.md", "key": "v-4b9468f4", "path": "/note/python/numpy/", "headers": [ { "level": 2, "title": "索引", "slug": "索引" }, { "level": 3, "title": "采样", "slug": "采样" }, { "level": 2, "title": "np.clip", "slug": "np-clip" }, { "level": 2, "title": "np.random.shuffle", "slug": "np-random-shuffle" }, { "level": 2, "title": "np.cumsum", "slug": "np-cumsum" }, { "level": 2, "title": "np.diff", "slug": "np-diff" }, { "level": 2, "title": "np.ma.masked_where", "slug": "np-ma-masked-where" }, { "level": 2, "title": "np.histogram", "slug": "np-histogram" } ], "readingTime": { "minutes": 1.8, "words": 539 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "PyQt5的Model/View组件", "frontmatter": { "title": "PyQt5的Model/View组件", "author": "Leonhardt", "category": "Python", "tag": [ "PyQt5" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2021-12-15T00:00:00.000Z", "summary": "总览 几种View的样式 Model 在PyQt5中,所有数据模型类都从QAbstractItemModel继承而来,所有的数据都是以表格的层次结构组织的,视图组件通过这种规则来存取数据。如下图右侧 模型索引--QModelIndex。\r通过数据模型存取的每个Item都有一个模型索引,视图组件和代理都要通过索引来获取数据; \r一个模型索引由三个部分组成; \r", "meta": [ { "property": "og:url", "content": "/note/python/pyqt_model_view.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "PyQt5的Model/View组件" }, { "property": "og:description", "content": "总览 几种View的样式 Model 在PyQt5中,所有数据模型类都从QAbstractItemModel继承而来,所有的数据都是以表格的层次结构组织的,视图组件通过这种规则来存取数据。如下图右侧 模型索引--QModelIndex。\r通过数据模型存取的每个Item都有一个模型索引,视图组件和代理都要通过索引来获取数据; \r一个模型索引由三个部分组成; \r" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "PyQt5" }, { "property": "article:published_time", "content": "2021-12-15T00:00:00.000Z" } ], "parsedDate": "12/15" }, "regularPath": "/note/python/pyqt_model_view.html", "relativePath": "note/python/pyqt_model_view.md", "key": "v-6b0bd426", "path": "/note/python/pyqt_model_view/", "headers": [ { "level": 2, "title": "总览", "slug": "总览" }, { "level": 2, "title": "Model", "slug": "model" }, { "level": 3, "title": "模型索引--QModelIndex。", "slug": "模型索引-qmodelindex。" }, { "level": 3, "title": "Item Roles", "slug": "item-roles" }, { "level": 3, "title": "Model的使用", "slug": "model的使用" }, { "level": 3, "title": "继承QAbstractItemModel", "slug": "继承qabstractitemmodel" }, { "level": 3, "title": "QStandardItemModel", "slug": "qstandarditemmodel" }, { "level": 3, "title": "QStandardItem", "slug": "qstandarditem" }, { "level": 2, "title": "View", "slug": "view" }, { "level": 2, "title": "Delegate", "slug": "delegate" }, { "level": 2, "title": "示例", "slug": "示例" } ], "readingTime": { "minutes": 5.15, "words": 1544 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Python爬虫", "frontmatter": { "icon": "page", "title": "Python爬虫", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-03-31T00:00:00.000Z", "summary": "准备\rBeautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.; \rlxml是HTML或XML文件的解析器.速度很快.通常比python内置的解析器html.parser更好用.; \rrequests用于获取网页; Beautiful Soup介绍 Beauti", "meta": [ { "property": "og:url", "content": "/note/python/scraper.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Python爬虫" }, { "property": "og:description", "content": "准备\rBeautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.; \rlxml是HTML或XML文件的解析器.速度很快.通常比python内置的解析器html.parser更好用.; \rrequests用于获取网页; Beautiful Soup介绍 Beauti" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2022-03-31T00:00:00.000Z" } ], "parsedDate": "3/31" }, "regularPath": "/note/python/scraper.html", "relativePath": "note/python/scraper.md", "key": "v-1021ee26", "path": "/note/python/scraper/", "headers": [ { "level": 2, "title": "准备", "slug": "准备" }, { "level": 2, "title": "Beautiful Soup介绍", "slug": "beautiful-soup介绍" }, { "level": 3, "title": "遍历文档树", "slug": "遍历文档树" }, { "level": 3, "title": "搜索文档树", "slug": "搜索文档树" }, { "level": 3, "title": "通过CSS选择器搜索", "slug": "通过css选择器搜索" }, { "level": 3, "title": "解析部分文档", "slug": "解析部分文档" }, { "level": 2, "title": "爬取数据", "slug": "爬取数据" }, { "level": 2, "title": "解析数据", "slug": "解析数据" }, { "level": 2, "title": "保存数据", "slug": "保存数据" } ], "readingTime": { "minutes": 4.13, "words": 1240 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "用tensorboard可视化模型,数据和训练", "frontmatter": { "icon": "page", "title": "用tensorboard可视化模型,数据和训练", "author": "Leonhardt", "category": "Pytorch", "tag": [ "visualization" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-03-26T00:00:00.000Z", "summary": "准备 SummaryWriter:向tensorboard写入的关键对象。创建该对象时,需要指定持久化文件保存的文件夹路径。如果路径不存在,会自动创建。 运行tensorboard: tensorboard --logdir logpath 写入图片 添加global_step参数后,可以向同一个ImageName写入多次,会有一个类似进度条的东西,通过调节", "meta": [ { "property": "og:url", "content": "/note/python/tensorboard.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "用tensorboard可视化模型,数据和训练" }, { "property": "og:description", "content": "准备 SummaryWriter:向tensorboard写入的关键对象。创建该对象时,需要指定持久化文件保存的文件夹路径。如果路径不存在,会自动创建。 运行tensorboard: tensorboard --logdir logpath 写入图片 添加global_step参数后,可以向同一个ImageName写入多次,会有一个类似进度条的东西,通过调节" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "visualization" }, { "property": "article:published_time", "content": "2022-03-26T00:00:00.000Z" } ], "parsedDate": "3/26" }, "regularPath": "/note/python/tensorboard.html", "relativePath": "note/python/tensorboard.md", "key": "v-d9c878f4", "path": "/note/python/tensorboard/", "headers": [ { "level": 2, "title": "准备", "slug": "准备" }, { "level": 2, "title": "写入图片", "slug": "写入图片" }, { "level": 2, "title": "查看模型", "slug": "查看模型" }, { "level": 2, "title": "Projector--可视化高维数据", "slug": "projector-可视化高维数据" }, { "level": 2, "title": "记录loss等标量和plt.figure", "slug": "记录loss等标量和plt-figure" }, { "level": 2, "title": "绘制PR-曲线", "slug": "绘制pr-曲线" }, { "level": 2, "title": "查看权重分布", "slug": "查看权重分布" }, { "level": 2, "title": "记录超参数", "slug": "记录超参数" }, { "level": 2, "title": "从tfevents中读取数据", "slug": "从tfevents中读取数据" } ], "readingTime": { "minutes": 1.81, "words": 543 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Pytorch Tensor 常用操作", "frontmatter": { "title": "Pytorch Tensor 常用操作", "author": "Leonhardt", "category": "Python", "tag": [ "pytorch" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-01-04T00:00:00.000Z", "summary": "可重复性\rnp.random.seed(seed) 设置NumPy的全局RNG种子; \rtorch.manual_seed(seed) 设置CPU和CUDA的RNG种子; \rif torch.cuda.is_available():; \r torch.cuda.manual_seed(42); \r torch.cuda.manualseedall(42); ", "meta": [ { "property": "og:url", "content": "/note/python/torch.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Pytorch Tensor 常用操作" }, { "property": "og:description", "content": "可重复性\rnp.random.seed(seed) 设置NumPy的全局RNG种子; \rtorch.manual_seed(seed) 设置CPU和CUDA的RNG种子; \rif torch.cuda.is_available():; \r torch.cuda.manual_seed(42); \r torch.cuda.manualseedall(42); " }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "pytorch" }, { "property": "article:published_time", "content": "2022-01-04T00:00:00.000Z" } ], "parsedDate": "1/4" }, "regularPath": "/note/python/torch.html", "relativePath": "note/python/torch.md", "key": "v-d8020d34", "path": "/note/python/torch/", "headers": [ { "level": 2, "title": "可重复性", "slug": "可重复性" }, { "level": 2, "title": "创建张量", "slug": "创建张量" }, { "level": 2, "title": "改变张量形状", "slug": "改变张量形状" }, { "level": 2, "title": "矩阵相乘与点积", "slug": "矩阵相乘与点积" }, { "level": 2, "title": "广播机制", "slug": "广播机制" }, { "level": 2, "title": "squeeze/unsqueeze", "slug": "squeeze-unsqueeze" }, { "level": 2, "title": "torch.max", "slug": "torch-max" }, { "level": 2, "title": "cat", "slug": "cat" }, { "level": 2, "title": "stack", "slug": "stack" }, { "level": 2, "title": "linspace", "slug": "linspace" }, { "level": 2, "title": "randperm", "slug": "randperm" } ], "readingTime": { "minutes": 3.5, "words": 1049 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "YAML", "frontmatter": { "icon": "page", "title": "YAML", "author": "Leonhardt", "category": "Python", "tag": [ "python" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-01T00:00:00.000Z", "summary": "是什么 一种非常适合写配置文件的文件格式。和python一样,对缩进非常敏感。 怎么用 安装pyyaml pip install pyyaml YAML语法简介\r大小写敏感; \r使用缩进表示层级关系; \r缩进不允许使用tab,只允许空格; \r缩进的空格数不重要,只要相同层级的元素左对齐即可; \r#表示注释; \rkey: value表示对象键值对, 冒号后面要", "meta": [ { "property": "og:url", "content": "/note/python/yaml.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "YAML" }, { "property": "og:description", "content": "是什么 一种非常适合写配置文件的文件格式。和python一样,对缩进非常敏感。 怎么用 安装pyyaml pip install pyyaml YAML语法简介\r大小写敏感; \r使用缩进表示层级关系; \r缩进不允许使用tab,只允许空格; \r缩进的空格数不重要,只要相同层级的元素左对齐即可; \r#表示注释; \rkey: value表示对象键值对, 冒号后面要" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "python" }, { "property": "article:published_time", "content": "2022-04-01T00:00:00.000Z" } ], "parsedDate": "4/1" }, "regularPath": "/note/python/yaml.html", "relativePath": "note/python/yaml.md", "key": "v-5839d098", "path": "/note/python/yaml/", "headers": [ { "level": 2, "title": "是什么", "slug": "是什么" }, { "level": 2, "title": "怎么用", "slug": "怎么用" }, { "level": 3, "title": "安装pyyaml", "slug": "安装pyyaml" }, { "level": 3, "title": "YAML语法简介", "slug": "yaml语法简介" }, { "level": 3, "title": "python读写", "slug": "python读写" }, { "level": 3, "title": "多YAML文档", "slug": "多yaml文档" } ], "readingTime": { "minutes": 1.29, "words": 387 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "Blog Home", "frontmatter": { "blog": true, "home": true, "icon": "home", "title": "Blog Home", "heroImage": "/logo.svg", "heroText": "Leonhardt's Blog", "tagline": "You can put your slogan here, but it's not work", "heroFullScreen": true, "project": [ { "type": "project", "name": "vuepress-theme-hope", "desc": "所用主题的主页", "link": "https://vuepress-theme-hope.github.io/zh/" }, { "type": "link", "name": "link name", "desc": "link detailed description", "link": "https://link.address" }, { "type": "book", "name": "book name", "desc": "Detailed description of the book", "link": "https://link.to.your.book" }, { "type": "article", "name": "article name", "desc": "Detailed description of the article", "link": "https://link.to.your.article" } ], "footer": "luck is where preparation meets opportunity.", "summary": "", "meta": [ { "property": "og:url", "content": "/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "Blog Home" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/", "relativePath": "readme.md", "key": "v-23addf96", "path": "/", "readingTime": { "minutes": 0, "words": 0 }, "updateTime": "December 13, 2021 23:53", "updateTimeStamp": 1639410791000, "createTime": "October 3, 2021 10:18", "createTimeStamp": 1633227485000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "ConvNeXt", "frontmatter": { "title": "ConvNeXt", "author": "Leonhardt", "category": "Thesis", "tag": [ "thesis note", "DL" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-01-17T00:00:00.000Z", "summary": "摘要 2020年以来,在视觉识别领域,Vision Transformers(ViTs)迅速超越了ConvNets成为当前最好的模型。纯ViT在图像分类上表现很好,但泛化到检测,分割任务时遇到了困难。hierarchical Transformer(e.g. SwinTransformer)通过重新引入一些卷积层解决了这个困难,在各种视觉任务中都表现良好。这", "meta": [ { "property": "og:url", "content": "/thesis/ConvNeXt.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "ConvNeXt" }, { "property": "og:description", "content": "摘要 2020年以来,在视觉识别领域,Vision Transformers(ViTs)迅速超越了ConvNets成为当前最好的模型。纯ViT在图像分类上表现很好,但泛化到检测,分割任务时遇到了困难。hierarchical Transformer(e.g. SwinTransformer)通过重新引入一些卷积层解决了这个困难,在各种视觉任务中都表现良好。这" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "thesis note" }, { "property": "article:tag", "content": "DL" }, { "property": "article:published_time", "content": "2022-01-17T00:00:00.000Z" } ], "parsedDate": "1/17" }, "regularPath": "/thesis/ConvNeXt.html", "relativePath": "thesis/ConvNeXt.md", "key": "v-e795161a", "path": "/thesis/ConvNeXt/", "headers": [ { "level": 2, "title": "摘要", "slug": "摘要" }, { "level": 2, "title": "主要内容", "slug": "主要内容" }, { "level": 3, "title": "宏观设计(Macro Design)", "slug": "宏观设计-macro-design" }, { "level": 3, "title": "微观设计(Micro Design)", "slug": "微观设计-micro-design" } ], "readingTime": { "minutes": 2.43, "words": 730 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "GANs", "frontmatter": { "icon": "page", "title": "GANs", "author": "Leonhardt", "category": "Thesis", "tag": [ "thesis note", "GAN" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-02-22T00:00:00.000Z", "summary": "DCGAN Approach\rall convolution net: 不使用常用的确定性池化,改用步长为2的卷积让模型学到适合自己的下采样。; \r去掉了全连接层; \rBN: 在所有层后加BN,会使模型不稳定。去掉G的输出层,和D的输入层后的BN后可以避免该问题。; \rReLU in Generator except for the output layer", "meta": [ { "property": "og:url", "content": "/thesis/GANs.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "GANs" }, { "property": "og:description", "content": "DCGAN Approach\rall convolution net: 不使用常用的确定性池化,改用步长为2的卷积让模型学到适合自己的下采样。; \r去掉了全连接层; \rBN: 在所有层后加BN,会使模型不稳定。去掉G的输出层,和D的输入层后的BN后可以避免该问题。; \rReLU in Generator except for the output layer" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "thesis note" }, { "property": "article:tag", "content": "GAN" }, { "property": "article:published_time", "content": "2022-02-22T00:00:00.000Z" } ], "parsedDate": "2/22" }, "regularPath": "/thesis/GANs.html", "relativePath": "thesis/GANs.md", "key": "v-3d1515f3", "path": "/thesis/GANs/", "headers": [ { "level": 2, "title": "DCGAN", "slug": "dcgan" }, { "level": 3, "title": "Approach", "slug": "approach" } ], "readingTime": { "minutes": 0.33, "words": 98 }, "updateTime": "April 2, 2022 16:34", "updateTimeStamp": 1648888453000, "createTime": "April 2, 2022 16:34", "createTimeStamp": 1648888453000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "卷积网络参数及计算量估计", "frontmatter": { "title": "卷积网络参数及计算量估计", "category": "Thesis", "tag": [ "thesis note" ], "time": "2021-12-13T00:00:00.000Z", "summary": "概念\rFLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。; \rFLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。; \rMAC:乘法和", "meta": [ { "property": "og:url", "content": "/thesis/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "卷积网络参数及计算量估计" }, { "property": "og:description", "content": "概念\rFLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。; \rFLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。; \rMAC:乘法和" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "thesis note" }, { "property": "article:published_time", "content": "2021-12-13T00:00:00.000Z" } ], "parsedDate": "12/13" }, "regularPath": "/thesis/", "relativePath": "thesis/README.md", "key": "v-232d0dd8", "path": "/thesis/", "headers": [ { "level": 2, "title": "概念", "slug": "概念" }, { "level": 2, "title": "卷积层", "slug": "卷积层" }, { "level": 2, "title": "全连接层", "slug": "全连接层" }, { "level": 2, "title": "LSTM", "slug": "lstm" } ], "readingTime": { "minutes": 0.82, "words": 246 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "December 13, 2021 23:53", "createTimeStamp": 1639410791000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 2 } ] }, { "title": "StyleGAN", "frontmatter": { "icon": "page", "title": "StyleGAN", "author": "Leonhardt", "category": "Thesis", "tag": [ "GAN" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-04-10T00:00:00.000Z", "summary": "StyleGAN v1 摘要 The new architecture leads to an automatically learned, unsupervised separation of high-level attributes (e.g., pose and identity when trained on human faces) and st", "meta": [ { "property": "og:url", "content": "/thesis/StyleGAN.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "StyleGAN" }, { "property": "og:description", "content": "StyleGAN v1 摘要 The new architecture leads to an automatically learned, unsupervised separation of high-level attributes (e.g., pose and identity when trained on human faces) and st" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "GAN" }, { "property": "article:published_time", "content": "2022-04-10T00:00:00.000Z" } ], "parsedDate": "4/10" }, "regularPath": "/thesis/StyleGAN.html", "relativePath": "thesis/StyleGAN.md", "key": "v-1180be73", "path": "/thesis/StyleGAN/", "headers": [ { "level": 2, "title": "StyleGAN v1", "slug": "stylegan-v1" }, { "level": 3, "title": "摘要", "slug": "摘要" }, { "level": 3, "title": "图", "slug": "图" }, { "level": 3, "title": "要点", "slug": "要点" }, { "level": 2, "title": "StyleGANv2", "slug": "styleganv2" }, { "level": 3, "title": "摘要", "slug": "摘要-2" }, { "level": 3, "title": "图", "slug": "图-2" }, { "level": 3, "title": "要点", "slug": "要点-2" } ], "readingTime": { "minutes": 1.86, "words": 557 }, "contributors": [] }, { "title": "语义分割", "frontmatter": { "title": "语义分割", "category": "Thesis", "tag": [ "thesis note", "DL" ], "time": "2021-12-13T00:00:00.000Z", "summary": "什么是语义分割\r将图像划分为不同意义区域的图像处理技巧; \r定义图像中不同语义实体边界的过程; \r根据视觉或语义特征将为每个像素做标注的过程; 定义良好的分割问题\r语义分割:每一个像素的类别属于事先定义好的一组类别。每一个语义实体的所有像素都属于同一类别。语义不仅由数据定义,问题也会影响语义。例如:行人检测中整个人属于一个语义实体,而动作检测中不同的部位属于", "meta": [ { "property": "og:url", "content": "/thesis/Segmentation.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "语义分割" }, { "property": "og:description", "content": "什么是语义分割\r将图像划分为不同意义区域的图像处理技巧; \r定义图像中不同语义实体边界的过程; \r根据视觉或语义特征将为每个像素做标注的过程; 定义良好的分割问题\r语义分割:每一个像素的类别属于事先定义好的一组类别。每一个语义实体的所有像素都属于同一类别。语义不仅由数据定义,问题也会影响语义。例如:行人检测中整个人属于一个语义实体,而动作检测中不同的部位属于" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "thesis note" }, { "property": "article:tag", "content": "DL" }, { "property": "article:published_time", "content": "2021-12-13T00:00:00.000Z" } ], "parsedDate": "12/13" }, "regularPath": "/thesis/Segmentation.html", "relativePath": "thesis/Segmentation.md", "key": "v-2feb5153", "path": "/thesis/Segmentation/", "headers": [ { "level": 2, "title": "什么是语义分割", "slug": "什么是语义分割" }, { "level": 2, "title": "定义良好的分割问题", "slug": "定义良好的分割问题" }, { "level": 2, "title": "CNN系列分割算法", "slug": "cnn系列分割算法" }, { "level": 3, "title": "FCN", "slug": "fcn" }, { "level": 3, "title": "DeepMask & SharpMask", "slug": "deepmask-sharpmask" }, { "level": 3, "title": "RCNN系列", "slug": "rcnn系列" }, { "level": 3, "title": "DeepLab", "slug": "deeplab" }, { "level": 3, "title": "使用多尺度特征预测", "slug": "使用多尺度特征预测" }, { "level": 2, "title": "AutoEncoder", "slug": "autoencoder" }, { "level": 3, "title": "UNet", "slug": "unet" }, { "level": 3, "title": "SegNet", "slug": "segnet" }, { "level": 2, "title": "GANs", "slug": "gans" }, { "level": 2, "title": "序列模型--用于实例级别分割", "slug": "序列模型-用于实例级别分割" }, { "level": 3, "title": "Convolutional LSTM", "slug": "convolutional-lstm" }, { "level": 3, "title": "Attention", "slug": "attention" }, { "level": 3, "title": "一个实例分割网络", "slug": "一个实例分割网络" }, { "level": 2, "title": "Interactive Segmentation", "slug": "interactive-segmentation" }, { "level": 3, "title": "Two stream fusion", "slug": "two-stream-fusion" }, { "level": 3, "title": "Deep Extreme Cut", "slug": "deep-extreme-cut" }, { "level": 3, "title": "Polygon-RNN", "slug": "polygon-rnn" }, { "level": 2, "title": "构建更高效的网络", "slug": "构建更高效的网络" }, { "level": 3, "title": "ENet", "slug": "enet" }, { "level": 3, "title": "Deep Layer Cascade", "slug": "deep-layer-cascade" }, { "level": 3, "title": "SegFast", "slug": "segfast" }, { "level": 3, "title": "Segmentation using superpixels", "slug": "segmentation-using-superpixels" } ], "readingTime": { "minutes": 9.28, "words": 2783 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "title": "经典网络的要点", "frontmatter": { "title": "经典网络的要点", "author": "Leonhardt", "category": "Thesis", "tag": [ "thesis note", "DL" ], "sidebarDepth": 1, "sticky": false, "star": false, "time": "2022-01-18T00:00:00.000Z", "summary": "DenseNet\r在每一个block内,每一层特征图的输入都包含前面所有层的特征图,其输出也会传递到后续所有层的输入中。; \r不像ResNet一样,特征图是通过逐元素相加合并的。DenseNet的处理方式是将所有输入拼接起来。; \rDenseNet的参数更少,计算效率更高。原因是其架构允许其输出较窄的特征图(每一层的输出通道数k可以很小,如k=12)。; \r", "meta": [ { "property": "og:url", "content": "/thesis/classic_net_sparkle.html" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:title", "content": "经典网络的要点" }, { "property": "og:description", "content": "DenseNet\r在每一个block内,每一层特征图的输入都包含前面所有层的特征图,其输出也会传递到后续所有层的输入中。; \r不像ResNet一样,特征图是通过逐元素相加合并的。DenseNet的处理方式是将所有输入拼接起来。; \rDenseNet的参数更少,计算效率更高。原因是其架构允许其输出较窄的特征图(每一层的输出通道数k可以很小,如k=12)。; \r" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" }, { "property": "article:tag", "content": "thesis note" }, { "property": "article:tag", "content": "DL" }, { "property": "article:published_time", "content": "2022-01-18T00:00:00.000Z" } ], "parsedDate": "1/18" }, "regularPath": "/thesis/classic_net_sparkle.html", "relativePath": "thesis/classic_net_sparkle.md", "key": "v-6813ba57", "path": "/thesis/classic_net_sparkle/", "headers": [ { "level": 2, "title": "DenseNet", "slug": "densenet" }, { "level": 2, "title": "MobileNet", "slug": "mobilenet" }, { "level": 3, "title": "节省了多少", "slug": "节省了多少" }, { "level": 3, "title": "其他", "slug": "其他" }, { "level": 2, "title": "MobileNetV2", "slug": "mobilenetv2" } ], "readingTime": { "minutes": 2.26, "words": 679 }, "updateTime": "February 19, 2022 13:19", "updateTimeStamp": 1645247953000, "createTime": "February 19, 2022 13:19", "createTimeStamp": 1645247953000, "contributors": [ { "name": "kigane", "email": "huwkigane@outlook.com", "commits": 1 } ] }, { "frontmatter": { "layout": "Blog", "summary": "", "meta": [ { "property": "og:url", "content": "/article/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/article/", "key": "v-6453f364", "path": "/article/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "summary": "", "meta": [ { "property": "og:url", "content": "/star/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/star/", "key": "v-4340f7e8", "path": "/star/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "summary": "", "meta": [ { "property": "og:url", "content": "/encrypt/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/encrypt/", "key": "v-7d484ebf", "path": "/encrypt/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "summary": "", "meta": [ { "property": "og:url", "content": "/slide/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "article" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/slide/", "key": "v-2470be33", "path": "/slide/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "summary": "", "meta": [ { "property": "og:url", "content": "/timeline/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/timeline/", "key": "v-6319eb4e", "path": "/timeline/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/", "key": "v-b1564aac", "path": "/tag/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/", "key": "v-28e6393c", "path": "/category/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "blender Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/blender/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/blender/", "key": "v-d191684a", "path": "/tag/blender/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "docker Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/docker/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/docker/", "key": "v-5ae80825", "path": "/tag/docker/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "python Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/python/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/python/", "key": "v-309cc62e", "path": "/tag/python/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "DIP Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/DIP/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/DIP/", "key": "v-32590a64", "path": "/tag/DIP/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Games Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/Games/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/Games/", "key": "v-f3427650", "path": "/tag/Games/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "premiere Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/premiere/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/premiere/", "key": "v-4d6e1b28", "path": "/tag/premiere/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "random Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/random/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/random/", "key": "v-283365e2", "path": "/tag/random/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "japanese Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/japanese/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/japanese/", "key": "v-a9298998", "path": "/tag/japanese/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "unity Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/unity/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/unity/", "key": "v-54d96af8", "path": "/tag/unity/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "basic Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/basic/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/basic/", "key": "v-9717362a", "path": "/tag/basic/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "文章加密 Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/文章加密/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/%E6%96%87%E7%AB%A0%E5%8A%A0%E5%AF%86/", "key": "v-7d1822f6", "path": "/tag/文章加密/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "markdown Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/markdown/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/markdown/", "key": "v-3ae5b494", "path": "/tag/markdown/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "config Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/config/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/config/", "key": "v-269a9743", "path": "/tag/config/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "guide Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/guide/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/guide/", "key": "v-83dc5046", "path": "/tag/guide/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "design pattern Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/design pattern/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/design%20pattern/", "key": "v-48962eda", "path": "/tag/design pattern/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "pytorch Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/pytorch/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/pytorch/", "key": "v-0ee5dfa6", "path": "/tag/pytorch/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "database Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/database/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/database/", "key": "v-04bea2aa", "path": "/tag/database/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "visualization Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/visualization/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/visualization/", "key": "v-58a00e96", "path": "/tag/visualization/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "页面配置 Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/页面配置/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/%E9%A1%B5%E9%9D%A2%E9%85%8D%E7%BD%AE/", "key": "v-51731a71", "path": "/tag/页面配置/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "使用指南 Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/使用指南/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/", "key": "v-65a436eb", "path": "/tag/使用指南/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "PyQt5 Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/PyQt5/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/PyQt5/", "key": "v-d1ffe620", "path": "/tag/PyQt5/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "numpy Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/numpy/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/numpy/", "key": "v-6bf475ac", "path": "/tag/numpy/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "thesis note Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/thesis note/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/thesis%20note/", "key": "v-6f9bb330", "path": "/tag/thesis note/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "DL Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/DL/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/DL/", "key": "v-e8d99486", "path": "/tag/DL/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "GAN Tag", "summary": "", "meta": [ { "property": "og:url", "content": "/tag/GAN/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/tag/GAN/", "key": "v-32568cb6", "path": "/tag/GAN/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "GameEngine Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/GameEngine/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/GameEngine/", "key": "v-7aab9202", "path": "/category/GameEngine/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Tool Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Tool/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Tool/", "key": "v-264c05bb", "path": "/category/Tool/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Python Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Python/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Python/", "key": "v-011eadf7", "path": "/category/Python/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "CV Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/CV/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/CV/", "key": "v-7f5f7360", "path": "/category/CV/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "C/C++ Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/C/C++/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/C/C++/", "key": "v-fad10b98", "path": "/category/C/C++/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Blog Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Blog/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Blog/", "key": "v-254d00f1", "path": "/category/Blog/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "blog Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/blog/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/blog/", "key": "v-270ff111", "path": "/category/blog/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Japanese Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Japanese/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Japanese/", "key": "v-1dd840c2", "path": "/category/Japanese/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "使用指南 Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/使用指南/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/", "key": "v-1152eb99", "path": "/category/使用指南/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "guide Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/guide/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/guide/", "key": "v-781afe22", "path": "/category/guide/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "SoftwareEngineering Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/SoftwareEngineering/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/SoftwareEngineering/", "key": "v-5b2403c2", "path": "/category/SoftwareEngineering/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Window Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Window/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Window/", "key": "v-57c66563", "path": "/category/Window/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Pytorch Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Pytorch/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Pytorch/", "key": "v-231af058", "path": "/category/Pytorch/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Blog", "title": "Thesis Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Thesis/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Thesis/", "key": "v-92327bf2", "path": "/category/Thesis/", "readingTime": { "minutes": 0, "words": 0 } }, { "frontmatter": { "layout": "Layout", "title": "Page 2 - Python | Category", "summary": "", "meta": [ { "property": "og:url", "content": "/category/Python/page/2/" }, { "property": "og:site_name", "content": "Leonhardt's Blog" }, { "property": "og:type", "content": "website" }, { "property": "og:locale", "content": "en-US" }, { "name": "twitter:card", "content": "summary_large_image" }, { "name": "twitter:image:alt", "content": "Leonhardt's Blog" }, { "property": "article:author", "content": "Leonhardt" } ] }, "regularPath": "/category/Python/page/2/", "key": "v-56d113e6", "path": "/category/Python/page/2/", "readingTime": { "minutes": 0, "words": 0 } } ], "themeConfig": { "logo": "/link.png", "hostname": "https://kigane.github.io/", "author": "Leonhardt", "repo": "https://github.com/kigane/HopeBlog", "nav": [ { "text": "Home", "link": "/", "icon": "home" }, { "text": "Target", "link": "/home/", "icon": "notice" }, { "text": "Guide", "link": "/guide/", "icon": "creative" }, { "text": "Blog", "link": "/blog/", "icon": "blog" }, { "text": "Note", "icon": "note", "prefix": "/note/", "items": [ { "text": "Algorithm", "link": "algorithm/" }, { "text": "Computer Science", "link": "cs/" }, { "text": "C/C++", "link": "cpp/" }, { "text": "JavaScript", "link": "js/" }, { "text": "Python", "link": "python/" } ] }, { "text": "Thesis", "link": "/thesis/", "icon": "article" } ], "sidebar": { "/guide/": [ "", "configuration", "page", "markdown", "disable", "encrypt" ], "/blog/": [ "", "katex-cheatsheet", "game-engine-overview", "random", "hazel", "japanese", "equalize_histogram", "visual_computing_intro" ], "/thesis/": [ "", "Segmentation", "ConvNeXt", "classic_net_sparkle" ], "/note/algorithm/": [ "", "strategy", "observer" ], "/note/cs/": [ "", "isa-i386", "isa-riscv", "gdb-cheatsheet", "shell-cheatsheet", "vim", "git", "regex", "linux", "ECF", "VM" ], "/note/cpp/": [ "", "c", "cpp-random", "file-io", "macro" ], "/note/python/": [ "", "effective_python", "dl_operations", "numpy", "tensorboard", "torch", "pyqt5", "pyqt_model_view", "image_viewer", "make_gif", "file_operations", "scraper", "yaml", "dataclass", "sqlalchemy", "weight_bias", "pytorch_base" ], "/note/js/": [ "", "js-base", "js-object", "js-bom-dom", "vue", "css-basic", "css-layout", "css-modular", "css-advance", "css-sass", "css-tricks" ], "/": [ "" ] }, "editLinks": false, "contributor": false, "blog": { "intro": "/intro/", "sidebarDisplay": "mobile", "links": { "Zhihu": "https://zhihu.com", "Baidu": "https://baidu.com", "Github": "https://github.com" } }, "footer": { "display": true, "content": "Less interests, more interest." }, "copyright": { "status": "global" }, "git": { "timezone": "Asia/Shanghai" }, "mdEnhance": { "sub": true, "sup": true, "footnote": true, "tex": true, "flowchart": true, "mermaid": true, "demo": true, "presentation": { "plugins": [ "highlight", "math", "search", "notes", "zoom", "anything", "audio", "chalkboard" ] } }, "pwa": { "favicon": "/favicon.ico", "cachePic": true, "apple": { "icon": "/assets/icon/apple-icon-152.png", "statusBarColor": "black" }, "msTile": { "image": "/assets/icon/ms-icon-144.png", "color": "#ffffff" }, "manifest": { "icons": [ { "src": "/assets/icon/chrome-mask-512.png", "sizes": "512x512", "purpose": "maskable", "type": "image/png" }, { "src": "/assets/icon/chrome-mask-192.png", "sizes": "192x192", "purpose": "maskable", "type": "image/png" }, { "src": "/assets/icon/chrome-512.png", "sizes": "512x512", "type": "image/png" }, { "src": "/assets/icon/chrome-192.png", "sizes": "192x192", "type": "image/png" } ], "shortcuts": [ { "name": "Guide", "short_name": "Guide", "url": "/guide/", "icons": [ { "src": "/assets/icon/guide-maskable.png", "sizes": "192x192", "purpose": "maskable", "type": "image/png" }, { "src": "/assets/icon/guide-monochrome.png", "sizes": "192x192", "purpose": "monochrome", "type": "image/png" } ] } ] } }, "locales": { "/": { "lang": "en-US", "selectText": "Language", "label": "English", "ariaLabel": "Select language", "meta": { "contributor": "Contributors", "editLink": "Edit this page", "updateTime": "Last update" }, "themeColor": { "themeColor": "Theme Color", "themeMode": "Theme Mode" }, "encrypt": { "title": "Please enter password", "errorHint": "Please enter the correct password!" }, "error404": { "hint": [ "There’s nothing here.", "How did we get here?", "That’s a Four-Oh-Four.", "Looks like we've got some broken links." ], "back": "Go back", "home": "Take me home" }, "blog": { "article": "Articles", "articleList": "Article List", "category": "Category", "tag": "Tags", "timeline": "Timeline", "timelineText": "Yesterday Once More!", "allText": "All", "intro": "Personal Intro", "star": "Star", "slides": "Slides", "encrypt": "Encrypted" } } } }, "locales": { "/": { "lang": "en-US", "path": "/" } } }

Last update: December 13, 2021 23:53