生而为人

程序员的自我修养

0%

[toc]

如何在文中引用生成的其他页面

在 Hexo 中引用其他页面,主要有三种方法,你可以根据对便捷性、灵活性和可维护性的需求来选择。

📝 方法一:标准 Markdown 链接(最基础)

这是最直接的方法,使用标准的 Markdown 链接语法 [显示文字](链接地址)。

  • 操作方式:你需要手动填写目标文章的相对路径或绝对路径--10。
  • 优点:通用性强,不依赖任何 Hexo 特性,在所有主题和编辑器下都能工作。
  • 缺点:一旦文章的URL 结构(Permalink)发生变化,所有手动书写的链接都会失效,维护成本较高。

🚀 方法二:Hexo 标签插件(官方推荐)

Hexo 提供了内置的 post_link 标签插件,这是官方推荐的做法--10。

  • 操作方式:在文章中这样使用:

    1
    {% post_link 目标文章的文件名(不含.md后缀) "自定义显示文字(可选)" %}

    例如,要引用 source/_posts/hello-world.md 这篇文章--4:

    1
    2
    {% post_link hello-world %}
    {% post_link hello-world 你好,世界! %}
  • 优点:

    • 智能解析:Hexo 会自动根据文章文件名找到正确的 URL-10。
    • 高可维护性:即使你修改了文章的 permalink 配置,链接也依然有效,无需手动更改-10。
    • 多语言友好:能更好地适应多语言站点-10。
  • 缺点:语法不是标准 Markdown,在部分编辑器(如 Typora)中可能无法实时预览。

🔌 方法三:社区插件(功能更强大)

如果你追求更优雅的语法或更高级的功能,可以安装社区插件。

  • 1. 回归标准 Markdown 语法:hexo-post-link
    • 这个插件让你能用标准的 Markdown 链接语法来实现 post_link 的效果--5。
    • 操作方式:安装插件后,链接写法变为 [显示文字](文章文件名)-5。Hexo 在生成时会自动将文件名替换为正确的 URL。
    • 优点:兼顾了标准语法和智能解析。
  • 2. 拥抱 Wiki 链接:hexo-filter-titlebased-link
    • 如果你习惯使用 [[双链]] 语法(尤其在 Obsidian 等笔记软件中),这个插件将非常适合你--1。
    • 操作方式:安装并配置后,可以直接使用 [[目标文章标题]] 或 [[目标文章标题|自定义别名]] 来创建链接-1。
    • 高级功能:它甚至可以生成“反向链接”,让你在主题中展示有哪些文章引用了当前文章,构建知识图谱-1。

💡 补充:链接到文章的特定章节

如果你想链接到另一篇文章的某个具体小标题,也是完全可以的。

  • 操作方法:在链接地址后加上 # 和小标题的 id。

  • Hexo 默认行为:Hexo 默认的 Markdown 渲染器会自动为每个小标题(##、### 等)生成一个 id,通常就是标题文字本身。

  • 示例:假设你要引用的文章中有个 ## 总结 的标题,你可以这样链接:

    1
    [跳转到那篇文章的总结部分]({% post_link target-article %}#总结)

    小技巧:如果不确定某个标题的准确 id,可以在浏览器中打开该文章,按 F12 打开开发者工具,检查(Inspect)那个标题元素,就能看到它的 id 属性值。

💎 总结与建议

方法 核心操作 优点 缺点 推荐场景
标准 Markdown 链接 [文字](/path/to/page) 简单直接,通用性强 链接硬编码,URL 变更后易失效 临时引用,或引用站外链接
post_link 标签 {% post_link 文件名 %} 官方支持,稳定可靠,自动适配 URL 变化-10 语法非标准 Markdown 绝大多数内部引用场景(首选)
社区插件 [文字](文件名) 或 [[标题]] 语法优雅,功能强大(如支持反向链接)-1 需要额外安装和配置 追求极致写作体验,或需要构建知识网络

对于大多数情况,直接使用 Hexo 自带的 post_link 标签插件是兼顾了便捷与可靠的最佳选择。

主题

  1. One dark vivid Italic(plugins - One Dark theme)

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Microsoft Windows [Version 10.0.19044.2006]
(c) Microsoft Corporation. All rights reserved.

C:\Users\jingqicao>echo PATH
PATH

C:\Users\jingqicao>echo $PATH
$PATH

C:\Users\jingqicao>echo %PATH
%PATH

C:\Users\jingqicao>echo %PATH%
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;C:\Program Files\Common Files\Microsoft Shared\Microsoft Online Services;C:\Program Files (x86)\Common Files\Microsoft Shared\Microsoft Online Services;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Git\cmd;C:\Program Files\Go\bin;D:\Support\gawk-3.1.6-1-bin\bin;D:\Support\Nuget;C:\Program Files\dotnet\;C:\Users\jingqicao\AppData\Local\CloudBuild;C:\Users\jingqicao\AppData\Local\CloudBuild;C:\Users\jingqicao\AppData\Local\Microsoft\WindowsApps;C:\Users\jingqicao\.dotnet\tools;C:\Users\jingqicao\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\jingqicao\Program Files\protoc-3.13.0-win64\bin;D:\Support\spark-3.0.1-bin-hadoop2.7\bin;D:\Support\spark-3.0.1-bin-hadoop2.7\sbin;C:\Program Files\Java\jdk1.8.0_291\bin;D:\Support\hadoop-2.7.7\bin;D:\Support\hadoop-2.7.7\sbin;D:\Support\apache-maven-3.8.1\bin;C:\Users\jingqicao\AppData\Local\Programs\Python\Python39\Scripts;C:\Users\jingqicao\AppData\Local\atom\bin;C:\Users\jingqicao\.dotnet\tools;D:\Support\Go\bin;

C:\Users\jingqicao>protoc.exe -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ --go_opt=file_extension=.pd.go D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
protoc-gen-go: no such flag -file_extension
--go_out: protoc-gen-go: Plugin failed with status code 1.

C:\Users\jingqicao>protoc.exe -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ --go_opt=.pd.go D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
protoc-gen-go: no such flag -.pd.go
--go_out: protoc-gen-go: Plugin failed with status code 1.

C:\Users\jingqicao>protoc.exe -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ --go_opt=. D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
protoc-gen-go: no such flag -.
--go_out: protoc-gen-go: Plugin failed with status code 1.

C:\Users\jingqicao>protoc.exe -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
protoc-gen-go: unable to determine Go import path for "Events/App.proto"

Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.

See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

--go_out: protoc-gen-go: Plugin failed with status code 1.

C:\Users\jingqicao>protoc.exe -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Auction.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\AuctionFacts.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Bid.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\ClickEvent.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\CommonTypes.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Device.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\ExternalUser.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\L1ClassifierScore.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Location.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\MediationConfigParams.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\MediationServingLogRecord.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\OperatingSystem.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\PiiRecord.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Revenue.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Site.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\User.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\ViewabilityEvent.proto
google/protobuf/timestamp.proto: File not found.
Events/ViewabilityEvent.proto:4:1: Import "google/protobuf/timestamp.proto" was not found or had errors.
Events/ViewabilityEvent.proto:21:5: "google.protobuf.Timestamp" is not defined.
Events/ClickEvent.proto:4:1: Import "google/protobuf/timestamp.proto" was not found or had errors.
Events/ClickEvent.proto:18:9: "google.protobuf.Timestamp" is not defined.
Events/AuctionFacts.proto:3:1: Import "google/protobuf/timestamp.proto" was not found or had errors.
Events/AuctionFacts.proto:10:1: Import "Events/ViewabilityEvent.proto" was not found or had errors.
Events/AuctionFacts.proto:11:1: Import "Events/ClickEvent.proto" was not found or had errors.
Events/AuctionFacts.proto:23:9: "google.protobuf.Timestamp" is not defined.
Events/AuctionFacts.proto:45:9: "ViewabilityEvent" is not defined.
Events/AuctionFacts.proto:46:9: "ViewabilityEvent" is not defined.
Events/AuctionFacts.proto:47:9: "ClickEvent" is not defined.

C:\Users\jingqicao>protoc.exe -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
protoc-gen-go: unable to determine Go import path for "Events/App.proto"

Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.

See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

--go_out: protoc-gen-go: Plugin failed with status code 1.

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
protoc-gen-go: unable to determine Go import path for "Events/App.proto"

Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.

See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

--go_out: protoc-gen-go: Plugin failed with status code 1.

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_package=Microsoft.BI.Mediation.Schemas.Go --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
Unknown flag: --go_package

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_package=Microsoft.BI.Mediation.Schemas.Go --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
Unknown flag: --go_package

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
Events/App.proto:4:23: Invalid escape sequence in string literal.
Events/App.proto:4:31: Invalid escape sequence in string literal.
Events/App.proto:4:48: Invalid escape sequence in string literal.
Events/App.proto:4:56: Invalid escape sequence in string literal.
Events/App.proto:4:64: Invalid escape sequence in string literal.
Events/App.proto:6:1: Expected ";".

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
Events/App.proto:4:23: Invalid escape sequence in string literal.
Events/App.proto:4:31: Invalid escape sequence in string literal.
Events/App.proto:4:48: Invalid escape sequence in string literal.
Events/App.proto:4:56: Invalid escape sequence in string literal.
Events/App.proto:4:64: Invalid escape sequence in string literal.

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
Events/App.proto:4:23: Invalid escape sequence in string literal.
Events/App.proto:4:31: Invalid escape sequence in string literal.
Events/App.proto:4:48: Invalid escape sequence in string literal.
Events/App.proto:4:56: Invalid escape sequence in string literal.
Events/App.proto:4:64: Invalid escape sequence in string literal.
Events/App.proto:4:98: Invalid escape sequence in string literal.

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto
Events/App.proto:4:23: Invalid escape sequence in string literal.
Events/App.proto:4:26: Invalid escape sequence in string literal.
Events/App.proto:4:60: Invalid escape sequence in string literal.

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto

C:\Users\jingqicao>protoc.exe -I=C:\Users\jingqicao\.nuget\packages\google.protobuf.tools\3.6.1\tools -I=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\ --go_out=D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas.Go\Events\ D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\App.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Auction.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\AuctionFacts.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Bid.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\ClickEvent.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\CommonTypes.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Device.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\ExternalUser.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\L1ClassifierScore.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Location.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\MediationConfigParams.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\MediationServingLogRecord.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\OperatingSystem.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\PiiRecord.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Revenue.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\Site.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\User.proto D:\project\Ads.BI.Mediation\private\Schemas\Microsoft.BI.Mediation.Schemas\PROTO\Events\ViewabilityEvent.proto

[toc]

文件间跳转

Markdown 语法

图片保存

PicGo config

PicGo config2

设置

配置文件

通过文件-偏好设置-外观-打开主题文件夹,找到主题配置文件目录。如果没有找到对应的配置文件,可以手动生成。

配置文件分类

  1. base.user.css 基础的用户自定义配置文件,会全局生效,优先级第二。
  2. {当前主题}.user.css 主题级的用户自定义配置文件,当前主题生效,优先级最高。
  3. {当前主题}.css 主题基础配置文件,当前主题生效,优先级最低。

优先级逻辑:自定义 > 基础;{当前主题} > base

加载顺序: {当前主题}.css -> base.user.css -> {当前主题}.user.css

toc展示的目录层级

配置文件中加入如下内容,建议加在base.user.css中

1
2
3
4
5
6
/* 隐藏四级、五级、六级标题(只显示 h1, h2, h3) */
.md-toc-h4,
.md-toc-h5,
.md-toc-h6 {
display: none;
}

格式

数学表达式

要启用这个功能,首先到Preference->Editor中启用。然后使用$符号包裹Tex命令,例如:$lim_{x \to \infty} \ exp(-x)=0$将产生如下的数学表达式:

img

下标

下标使用~包裹,例如:H~2~O将产生水的分子式。

上标

上标使用^包裹,例如:y^2^=4将产生表达式

img

下划线

用HTML的语法Underline将产生下划线Underline.

删除线

GFM添加了删除文本的语法,这是标准的Markdown语法木有的。使用~~包裹的文本将会具有删除的样式,例如~删除文本~将产生删除文本的样式。

代码

使用`包裹的内容将会以代码样式显示,例如

使用printf()

则会产生printf()样式。

输入~~~或者```然后回车,可以输入代码块,并且可以选择代码的语言。例如:public Class HelloWorld{ System.out.println(“Hello World!”); }

目录列表Table of Contents(TOC)

输入[toc]然后回车,将会产生一个目录,这个目录抽取了文章的所有标题,自动更新内容。

水平分割线

使用***或者—,然后回车,来产生水平分割线。

标注

我们可以对某一个词语进行标注。例如

某些人用过了才知道[^注释] [^注释]:Somebody that I used to know.

将产生:

把鼠标放在注释上,将会有提示内容。

强调

使用两个*号或者两个_包裹的内容将会被强调。例如

使用两个*号强调内容 使用两个下划线强调内容

将会输出

使用两个号强调内容 使用两个下划线强调内容 Typroa 推荐使用两个号。

斜体

在标准的Markdown语法中,*和_包裹的内容会是斜体显示,但是GFM下划线一般用来分隔人名和代码变量名,因此我们推荐是用星号来包裹斜体内容。如果要显示星号,则使用转义:

*

插入图片

我们可以通过拖拉的方式,将本地文件夹中的图片或者网络上的图片插入。

插入URL连接

使用尖括号包裹的url将产生一个连接,例如:将产生连接:www.baidu.com.

如果是标准的url,则会自动产生连接,例如:www.baidu.com

插入表情

使用:happy:输入高兴的表情,使用:sad:输入悲伤的表情,使用:cry:输入哭的表情等。以此类推!

img

grouping sets 要保证sets中每个组合中缺失的维度,不能包含null值

group语法增强,可以使用维度下标表示,但如果grouping sets不支持,只能写字段名

Join 类别

1. inner join

2. left/right join

3. cross join

4. left/right semi join 半开连接

LEFT SEMI JOIN:左半开连接会返回左边表的记录,前提是其记录对于右边表满足ON语句中的判定条件。对于常见的内连接(INNER JOIN),这是一个特殊的,优化了的情况。大多数的SQL方言会通过in…exists结构来处理这种情况。

  • 只会保留左/右表中能关联上的数据,且数量不会受另一张表影响而膨胀(即在原表中是几条数据,结果还是几条)

总结:

对待右表中重复key的处理方式差异:因为 left semi join 是 in(keySet) 的关系,遇到右表重复记录,左表会跳过,而 join on 则会一直遍历。
left semi join 中最后 select 的结果只许出现左表,因为右表只有 join key 参与关联计算了,而 join on 默认是整个关系模型都参与计算了。

5.