更换Hexo渲染引擎

更换渲染引擎

hexo-renderer-markdown-it渲染引擎,自带很多插件,社区也比较活跃。可以将自带的渲染引擎替换成。

  1. 首先卸载原有的渲染引擎
1
2
npm un hexo-renderer-marked --save
npm un hexo-renderer-pandoc --save

默认渲染引擎:hexo-renderer-marked

  1. 安装新引擎npm i hexo-renderer-markdown-it --save
  2. 在_config文件中增加配置,启用新引擎的特性,具体配置如下:
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
markdown:
preset: "default"
render:
html: true
xhtmlOut: false
langPrefix: "language-"
breaks: true
linkify: true
typographer: true
quotes: "“”‘’"
enable_rules:
disable_rules:
plugins:
- markdown-it-abbr
- markdown-it-attrs
- markdown-it-cjk-breaks
- markdown-it-deflist
- markdown-it-emoji
- markdown-it-footnote
- markdown-it-ins
- markdown-it-mark
- markdown-it-sub
- markdown-it-sup
- name: markdown-it-container
options: success
- name: markdown-it-container
options: tips
- name: markdown-it-container
options: warning
- name: markdown-it-container
options: danger

anchors:
level: 2
collisionSuffix: ""
permalink: false
permalinkClass: "header-anchor"
permalinkSide: "left"
permalinkSymbol: "¶"
case: 0
separator: "-"

测试新渲染引擎

markdown-it-container插件,支持容器显示内容

测试
测试markdown-it-container生效

阅读更多

Hexo 支持admonition 插件

安装hexo-admonition 插件

  1. 在Blog目录下执行如下命令安装插件
1
npm install hexo-admonition --save
  1. 在修改主题样式,增加admonition样式

    • 在Blog根目录下找到./node_modules/hexo-theme-icarus/source/css目录
    • 添加一个自定义css文件,例如 custom.styl,具体的css样式文件拷贝此文件中;
    • 在style.styl中引入custom.styl文件@import 'custom'

如果无法显示样式

如果在本地可以显示admonition样式但是在github上无法显示样式可以尝试将 custom.styl 样式文件内容直接写入到tyle.styl

如何使用hexo-admonition

在md文件中加入如下内容

1
2
3
4
5
6
7
8
9
!!! note Hexo-admonition 插件使用示例
这是基于 hexo-admonition 插件渲染的一条提示信息。类型为 note,并设置了自定义标题。
**提示内容开头留 4 个空格**,可以有多行,最后用空行结束此标记。

提示类型 type 将用作 CSS 类名称,暂支持如下类型:
- note
- info, todo
- warning, attention, caution
- error, failure, missing, fail

Hexo-admonition 插件使用示例

这是基于 hexo-admonition 插件渲染的一条提示信息。类型为 note,并设置了自定义标题。 提示内容开头留 4 个空格,可以有多行,最后用空行结束此标记。

提示类型 type 将用作 CSS 类名称,暂支持如下类型:

  • note
  • info, todo
  • warning, attention, caution
  • error, failure, missing, fail
阅读更多

安装中文LaTeX环境

安装中文LaTeX环境

sudo apt install texlive texlive-xetex texlive-latex-extra texlive-fonts-recommended texlive-fonts-extra -y

SOA架构和微服务架构的区别

什么是SOA架构

企业范围内的应用程序或者服务开发的方法,目的是复用组件和服务。在SOA架构中每个服务(service)都会提供独立的代码和数据来实现特定的企业业务功能(business function)。各个服务之间是松藕荷的,提供接口通过企业总线(ESB)进行集成;从而减少服务更新导致的大量的集成工作;在这种架构下,如果服务出现问题仍会影响到关联的服务。

实践中XML数据是SOA架构重要的组成部分,基于XML的SOA应用程序可以构建web服务。在SOA架构出现在大约1990年代末,在此之前单体应用之间的集成是点对点集成,每增加一个应用都需要重新做开发和集成测试。

阅读更多

Hexo Quick Start

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Mathjax

$$
\Gamma(z) = \int_ 0 ^\infty t ^{z-1} e^{-t} dt.
$$

阅读更多

Pandoc将Markdown文件导出成PDF文件

Pandoc将Markdown文件转换成PDF文件时是先将Markdown文件转换成Latex文件,再将Latex文件专程PDF文件。参考命令:

1
pandoc example.md -o example.pdf --from markdown --pdf-engine=xelatex --template=eisvogel --listings

选择编译引擎

一般默认的编译引擎是pdflatex编译引擎,这个引擎对中文支撑不太友好,可以通过–pdf-engine=xelatex 修改编译引擎

选择模板

使用pandoc模板 eisvogel ,eisvogel可以导出很漂亮的PDF文件。

  1. 将 eisvogel 模板拷贝到pandoc用户模板目录下,具体配置:

    • 在Linux系统下:/home/USERNAME/.local/share/pandoc/templates/
    • 在Windows系统下:C:\Users\USERNAME\AppData\Roaming\pandoc\templates\
  2. 改善中文支持,需要在eisvogel添加如下参数:

1
2
3
4
5
6
7
8
\else % if not pdftex
$if(mainfont)$
$else$
\usepackage[fallback]{xeCJK}
\setCJKmainfont{SimSun}[BoldFont=SimHei, ItalicFont=KaiTi] %配置中文字体
\setCJKfallbackfamilyfont{rm}{SimSun}
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
  1. 增加首行缩进,在 eisvogel.tex 文件中查找,在\begin{document}请增加一段代码:
1
2
3
4
\usepackage{ctex} %调用中文字体宏包
\usepackage{indentfirst} %调用首行缩进宏包
\setlength{\parindent}{2em} %设置首行缩进为2字符
\begin{document}
阅读更多

云计算中VM资源利用率和宿主机资源利用率之间的关系

资源分配模型

  • 虚拟机利用率:指分配给VM的CPU、内存、磁盘I/O等资源被实际使用的百分比。
  • 宿主机利用率:宿主机物理资源被所有运行中VM实际消耗的总和。

关系公式(简化为CPU场景):

$$
\text{Host利用率} = \sum_{i=1}^{n} \left( \text{VM}_i利用率 \times \frac{\text{VM}_i分配量}{\text{Host总资源}} \right)
$$

::: note

假设宿主机有16个物理CPU核心和64GB内存:

  • 静态分配:若为4个VM各分配4核+16GB,则宿主机利用率上限为:
  • CPU利用率 = Σ(VM实际使用CPU时间) / 宿主机总CPU时间
  • 内存利用率 = Σ(VM实际使用内存) / 64GB
  • 动态超售:若超售50%(分配24核+96GB),实际利用率可能超过100%,但需依赖调度算法避免性能下降。
    :::

关键影响因素

  1. 资源超分(Overcommitment)
  • 场景:当宿主机分配的虚拟资源(如vCPU、内存)总和超过物理资源时,可能提高宿主机利用率,但会引入资源争用风险。
  • 权衡:
    • 高VM利用率 -> 宿主机利用率提升,但VM可能因资源不足出现性能抖动。
    • 低VM利用率 -> 宿主机资源浪费,但VM稳定性更高。
  1. 资源隔离技术
  • CPU调度:通过份额(Shares)、限制(Limits)和预留(Reservations)控制VM的优先级和资源上限。示例:若VM设置CPU Limit为2核,即使宿主机有空闲资源,VM也无法突破该限制。
  • 内存Ballooning/KSM:动态调整VM内存占用以优化宿主机利用率,但可能增加延迟。
  1. 负载均衡与碎片化
  • 动态迁移(Live Migration):将VM在宿主机间迁移以消除资源碎片,提高宿主机利用率。
  • 反亲和性策略:避免高负载VM集中于同一宿主机,降低资源争用概率。
阅读更多

安装Linux发行版本日常工具

安装Linux

无论安装那个Linux发行版本都要注意下载完成镜像文件以后需要验证一下sha256sum文件一支

1
sha256sum /path/Linux.iso

修改发行版本的源为中国镜像源

  1. 修改Linux系统源,以下以POP OS为例
1
2
3
sudo sed -i 's@http://apt.pop-os.org/@https://mirror.sjtu.edu.cn/pop-os/@g' /etc/apt/sources.list.d/pop-os-apps.sources
sudo sed -i 's@http://apt.pop-os.org/@https://mirror.sjtu.edu.cn/pop-os/@g' /etc/apt/sources.list.d/pop-os-release.sources
sudo sed -i 's@http://apt.pop-os.org/@https://mirror.sjtu.edu.cn/@g' /etc/apt/sources.list.d/system.sources
  1. 修改flatpak源
1
flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub

如果报错了,尝试以下操作

1
2
3
wget https://mirror.sjtu.edu.cn/flathub/flathub.gpg
sudo flatpak remote-modify --gpg-import=flathub.gpg flathub

阅读更多

分布式数据库以及应用改造

分布式数据库

典型的分布式数据库及实现

  1. 增加分布式数据中间件(即在多个独立数据库实例前增加一个数据库中间件),由分布式数据库中间件实现分库分表,分布式SQL执行,分布式事务等。
  2. 内置分布式数据库中间件(将分布式数据库中间件作为分布式数据的一个组件)
  3. 不论是内置还是外置的数据库中间件都会接管数据库客户端和数据库服务之间的链接,一般会提供如下能力:
    1. 分库能力
    2. 分表能力
    3. 分布式事务(有限的分布式事务能力:Local、XA、Free/Base)
    4. 支持读写分离
    5. 兼容有限的数据库协议和客户端
    6. 支持水平扩展,(可选)提供前端负载均衡能力
阅读更多

大数据通用架构

Lambda架构

Lambda架构

  1. Lambda架构有三层,批处理层、速度层和服务层。
    1. 批处理层:批处理层是基于Hadoop生态,随着数据的更新会对所有数据进行重计算并将计算结果保存到NoSQL数据库中(如:electicalsearch、HBase、Redis、Hive等),提供批处理视图,批处理视图会整体批量更新;
    2. 速度层:由于批处理的机制导致延迟较大(天级/小时级),如果需要尽快的处理实时数据则需要提供单独的机制产生实时视图,通常只需要保存少量近期数据;
    3. 服务层:只会调用批处理视图和实时视图(汇总实时图和批处理视图),为应用系统提供查询服务;
  2. Lambda架构特点:
    1. 有批处理层、速度层和服务层三层;
    2. 所有数据最终都需要放在统一分布式存储上;
    3. 批处理层重新计算以后速度层的视图就可以丢弃;
    4. Lambda平台实现逻辑复杂(实时数据和批处理数据是两套处理)
阅读更多