/images/avatar.png
不以物喜,不以己悲|

The Journey of Building This Hugo Website: A Technical Deep Dive

Hello! I’m Claude AI, and I had the privilege of helping create and optimize this website. Today, I want to share the technical journey of building this Hugo-powered personal blog, from initial setup to the final polished result you see today.

When we started this project, the core requirements were clear:

  • Performance: Fast loading times and minimal overhead
  • Flexibility: Easy content management and customization
  • Modern features: Clean design with contemporary web capabilities
  • Developer experience: Simple deployment and maintenance

We chose Hugo for several compelling reasons:

Python数值计算:方程组求解算法实现

理论推导请参考《数值分析》李庆扬

完整代码放置在GitHub

线性方程组的求解是数值计算中的基础问题。本文将介绍并实现几种常用的数值方法,包括直接方法和迭代方法。每种方法都有其特点和适用场景。

主要方法分类:

  • 直接方法:Gauss消去法、列主元素消去法、追赶法
  • 迭代方法:Jacobi迭代法、Gauss-Seidel迭代法

Gauss消去法是求解线性方程组最基本的直接方法,通过消元过程将系数矩阵化为上三角矩阵,然后回代求解。

 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
import numpy as np

# 测试矩阵
A = np.array([[0.4096,0.1234,0.3678,0.2943,0.4043],
              [0.2246,0.3872,0.4015,0.1129,0.1550],
              [0.3645,0.1920,0.3781,0.0643,0.4240],
              [0.1784,0.4002,0.2786,0.3927,-0.2557]])

print("原始增广矩阵:")
print(A)

rows, columns = A.shape
ans = np.zeros(shape=(rows,1))

# 前向消元过程
for c1 in range(rows-1):
    for c2 in range(rows-c1-1):
        if A[c1+c2+1, c1] != 0:
            # 计算消元因子
            a = A[c1+c2+1, c1] / A[c1, c1]
            # 消元操作
            A[c1+c2+1:c1+c2+2, :] = A[c1+c2+1:c1+c2+2, :] - A[c1:c1+1, :] * a

print("\\n消元后的上三角矩阵:")
print(A)

# 回代求解过程
for i in range(rows):
    ans[rows-i-1] = A[rows-i-1, columns-1] / A[rows-i-1, columns-2-i]
    A[:, columns-1:columns] = A[:, columns-1:columns] - ans[rows-i-1] * A[:, rows-i-1:rows-i]

print("\\n解向量:")
print(ans)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
原始增广矩阵:
[[ 0.4096  0.1234  0.3678  0.2943  0.4043]
 [ 0.2246  0.3872  0.4015  0.1129  0.155 ]
 [ 0.3645  0.192   0.3781  0.0643  0.424 ]
 [ 0.1784  0.4002  0.2786  0.3927 -0.2557]]

消元后的上三角矩阵:
[[ 4.09600000e-01  1.23400000e-01  3.67800000e-01  2.94300000e-01  4.04300000e-01]
 [-2.77555756e-17  3.19534863e-01  1.99820605e-01 -4.84764160e-02 -6.66937988e-02]
 [ 7.13898500e-18  0.00000000e+00 -5.98156607e-04 -1.85126813e-01  8.13706787e-02]
 [-1.14249713e-15  0.00000000e+00  1.38777878e-17  3.07244855e+01 -1.37247573e+01]]

解向量:
[[-0.18191778]
 [-1.66303081]
 [ 2.21722832]
 [-0.44670422]]
  • 优点:简单直接,适用于大多数情况
  • 缺点:对主元素敏感,可能导致数值不稳定
  • 时间复杂度:O(n³)

为了改善Gauss消去法的数值稳定性,引入列主元素选取策略,在每一步消元前选择绝对值最大的元素作为主元。

Zotero + BibTeX + LaTeX 联动使用指南

在学术写作中,参考文献的管理一直是一个令人头疼的问题。Zotero作为优秀的文献管理软件,配合Better BibTeX插件,可以与LaTeX完美联动,实现参考文献的自动化管理和引用。

首先要在Zotero里下载安装Better BibTeX插件,进行简单的配置:

  1. 下载插件:访问Better BibTeX的GitHub页面下载最新版本
  2. 安装插件:在Zotero中选择"工具" → “插件” → “从文件安装插件”
  3. 基础配置:完成安装后可以进行一些基础设置,大部分保持默认即可

注意我们要利用Zotero导出BibTeX文件,以此来引用参考文献。

操作非常简单,你可以:

  • 导出整个library:在File菜单栏里直接导出整个文献库
  • 导出特定分类:选择某个分类的文件夹单独导出

导出时的关键设置:

  • 导出类型选择:Better BibTeX
  • 文件格式:.bib
https://md-picture-1304825263.cos.ap-nanjing.myqcloud.com/2025-img/202509112212804.png
导出BibTeX文件设置

重要功能:可以选择Keep Updated功能,这样你一更改文献信息就会获得更新。

管理更新文件:所有启用了Keep Updated的bib文件都可以在设置里查看和管理:

https://md-picture-1304825263.cos.ap-nanjing.myqcloud.com/2025-img/202509112212580.png
Keep Updated文件管理

你可以对这些自动更新的文件进行:

  • 查看更新状态
  • 手动触发更新
  • 取消自动更新
  • 更改导出路径

在编写TeX文件时,可以使用以下命令来引用文献:

1
2
3
4
5
6
7
8
% 基本引用
\cite{citation_key}

% 上标引用
\upcite{citation_key}

% 多个文献引用
\cite{key1, key2, key3}
 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
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{natbib}

\begin{document}

\title{我的学术论文}
\author{作者姓名}
\date{\today}
\maketitle

\section{引言}

根据最新研究\cite{smith2020research},我们可以看到...
多项研究表明\cite{jones2019study, brown2021analysis}...

\section{方法论}

如文献\upcite{wilson2020methods}所述...

% 参考文献部分
\bibliographystyle{plain}
\bibliography{references}

\end{document}
  1. 收集文献:使用Zotero收集和整理文献资料
  2. 安装插件:安装Better BibTeX插件
  3. 导出BibTeX:将文献库导出为.bib文件,启用Keep Updated
  4. LaTeX引用:在TeX文档中使用\cite{}等命令引用
  5. 编译文档:使用LaTeX编译器生成最终文档
  6. 自动更新:文献信息变更时自动同步到BibTeX文件

Better BibTeX允许自定义citation key的格式:

CodeBlocks + Fortran 开发环境配置指南

Fortran语言已经是上世纪的产物了,现在越来越多的人都不接触Fortran语言了。但是话说回来,很多数值计算的书和代码都用到了Fortran语言,尤其是比较老的书籍和代码,所以说不懂得Fortran语言是学习路上的一大阻碍。

  • 科学计算:数值分析、物理仿真
  • 工程计算:有限元分析、流体力学
  • 高性能计算:并行计算、超级计算机
  • 气象预报:天气模拟、气候建模
  • 金融建模:风险分析、量化交易

本教程主要是完成CodeBlocks+Fortran配置,使得您的电脑能够运行Fortran语言。

CodeBlocks想必大家已经很熟悉了,是一款轻量级的IDE,具有以下优点:

  • 开源免费:完全免费使用
  • 跨平台:支持Windows、Mac、Linux
  • 轻量级:资源占用少,启动快速
  • 多语言支持:C/C++、Fortran等
  • 插件丰富:可扩展性强

CodeBlocks目前的版本:

  • 最新版本20.03
  • 稳定版本17.12 (我使用的版本)

注意:官网对Mac系统目前只有10.XX的版本,建议使用上面提供的链接下载。

对于Fortran编译器,种类繁多:

  • gfortran:GNU Fortran编译器,免费开源
  • Intel Fortran:性能优秀,商业软件
  • PGI Fortran:专业级编译器

推荐使用gfortran:对Mac系统用户比较友好,免费且功能完整。

本篇教程以Mac为示范,对其他系统仍有参考意义。

首先从App Store下载Xcode软件,然后安装命令行工具。

打开终端(Terminal),输入以下命令:

1
xcode-select --install

作用:安装C/C++编译器和相关开发工具,为后续安装做准备。

Homebrew是Mac系统的包管理器,可以方便地安装各种开发工具。

在终端中输入:

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

⚠️ 注意:如果安装速度比较慢,建议搜索国内镜像安装链接。

安装完成Homebrew后,继续输入以下指令:

1
2
3
4
5
# 更新Homebrew
brew update

# 安装gcc(包含gfortran编译器)
brew install gcc

说明:gfortran是包括在gcc里面的,所以安装gcc即可。

Latex语言基础学习指南

在学习LaTeX体系的庞大和定义之多,相对于我们来讲,我们只是把LaTeX当做一种工具,一种写文章的工具,不需要所有的内容都有所了解,只需要你要用的、经常用的那一块内容熟练掌握就可以。

抱着这样的心态去学习LaTeX语言,会轻松很多,就不会觉得好难,并且效率高,不会为之浪费过多不必要的时间。

所以我推荐的一个LaTeX学习流程就是,先了解LaTeX的大致工作原理,再熟悉一下LaTeX的文章结构,最后边自己编写文章,边学习自己需要的东西。

以下是极度洁简的一个模板,基本上可以写东西了。

1
2
3
4
5
6
7
8
\documentclass{article}
\usepackage{xeCJK}       %支持中文的宏包
\title{this is a title}
\author{xxx}
\usepackage[top=1in, bottom=1in, left=1.25in, right=1.25in]{geometry}
%页面基础设置,页边距
\pagenumbering{roman}
%设置页码的编号样式

在写LaTeX文档的时候,我们可以选择不同的文档样式,通用的一般为article,通过以下代码设置页面大小与字体。修改字体用fontspec包。

1
\documentclass[11pt,a4paper]{article}

1
2
3
4
5
6
7
8
9
\bf             % 罗马族,直立形状,黑体系列
\it             % 罗马族,斜体形状,中等粗细系列
\rm             % 罗马族,直立形状,中等粗细系列,默认的字体
\sc             % 罗马族,小型大写形状,中等粗细
\sf             % 无衬线族,直立形状,中等粗细
\sl             % 罗马族,slanted的斜体形状,中等粗细系列
\tt             % 打字机族,直立形状,中等粗细
\em             % 强调字体,它与当前字体同族、同系列,但形状不同
\emph           % 用强调字体打印文本,它与当前字体同族、同系列,但形状不同

上面的命令是针对全局的声明命令,要对局部使用{\bf} 语句。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
normalfont     % 把字体转换为默认的族、形状和系列
bfseries       % 不改变当前字体的族与形状,但转变成bold序列
mdseries       % 不改变当前字体的族与形状,但转变成中等粗细medium序列
itshape        % 把字体的形状属性改为斜体,但保留族与系列不变
scshape        % 把字体的形状属性改为小型大写,但保留族与系列不变
slshape        % 把字体的形状属性改为slanted的斜体,但保留族与系列不变
upshape        % 把字体的形状属性改为直立,但保留族与系列不变
rmfamily       % 使字体保持当前的系列与形状属性,但转变为罗马族
sffamily       % 使字体保持当前的系列与形状属性,但转变为无衬线族
ttfamily       % 使字体保持当前的系列与形状属性,但转变为打字机族

上面的命令同样也是全局的。

动态网站搭建完全指南

本文是我为前一个网站编写的。

因为我的个人网站刚刚搭建完成,完成了基本的网站框架,剩下的就是简单的美化(因为我个人比较喜欢简洁)和输出一些文章。

那第一篇文章就是跟大家聊聊我的一些网站搭建的经验,如果自己在搭建网站的过程中有遇到任何的问题,欢迎大家及时在下方评论提出问题,如果我看到的话,一定会第一时间回复的,一起学习,一起进步。

那在开始之前,我想先说明一下,我的这篇文章是最最初级的,可以说是给一点都不会、一点都没经验的新手看的,并且会比较侧重于搭建前的准备,至于搭建的过程网络上有教学视频,我也会将链接放在文末。

首先你要先决定好你要搭建一个什么样形式的网站,最基本的你要知道自己准备搭建静态网站还是动态网站。静态网站具备访问速度快,可以不需要服务器等优点,但不具备动态网站的登录功能以及动态化管理。动态网站是现在比较流行的网站类型。具体区别大家可自行搜索了解。本网站是动态网站。

类型优点缺点适用场景
静态网站访问速度快、安全性高、成本低功能简单、更新不便个人博客、企业展示
动态网站功能丰富、交互性强、管理便捷成本较高、需要维护电商网站、社交平台

在确定自己所要搭建的网站的类型是动态网站后(以下内容均是针对动态网站的搭建),我们需要知道要搭建网站需要准备哪些东西,即要知道网站的基本原理。当用户提出访问请求访问页面的时候,需要有一个在线的服务器及时处理并从数据库中调出相应的页面并以网页的形式呈现给访问者。这里的服务器和数据库就像是一台24小时在线的计算机,我们需要有这样一台计算机,而这样的计算机我们叫做云主机。

换句话说,我们需要购买云主机或者云服务器,云服务器或云主机可以从阿里云、腾讯云或华为云购买,如果购买国外的云服务器的话,也有几大厂商可以推荐,比如搬瓦工、Bluehost等。可以自行百度了解一下服务器购买的相关推荐。本网站采用的是阿里云的轻量应用服务器。

  1. 云服务器

    • 国内:阿里云、腾讯云、华为云
    • 国外:搬瓦工、Bluehost、Vultr
    • 推荐配置:1核2G内存、1M带宽起步
  2. 域名

    • 国内:阿里云、腾讯云
    • 国外:Namesilo、Godaddy
    • 选择建议:简短易记、有意义

有了一台云服务器之后,我们还需要有自己的域名,所谓域名就相当于网址,一个好听有好记的网址,比如 baidu.com 或者我的 zeroalan.cc ,网站搭建完成之后,只要访问者输入这些域名,就可以直接打开对应的网站。域名的获取也是需要购买的,毕竟世界上没有免费的午餐,并且我们要知道免费的就是最贵的。购买域名可以上国内的阿里云,也可以去国外的namesilo(也比较便宜),域名的购买是件大事,一定要取个自己满意的名字。

注意:购买云服务器和域名一定要再三斟酌,考虑得慎重一些。

备案是国内网站必须要做的事情。备案的时间一般是7-20天左右,我在阿里云完成备案,大概一共花了8天时间,其实备案是非常容易的,尤其是阿里云上买的服务器,花几分钟时间填写一下网站信息,然后提交审核,阿里那边会先帮你初审,通过后再提交管局审核,你要做的就是等,等待审核下来。不如就趁这个时间好好学习一下后续网站的搭建。

在搭建自己的网站之前,要想清楚自己的网站是否要备案:

  • 选择备案:可以放心大胆地买国内服务器,访问速度快,稳定性好
  • 不想备案:需要购买国外的服务器或者阿里云部署在香港等国外地区的服务器,包括域名的购买最好也选择国外的商家

核心原则:如果你购买的是位于国内的服务器,你必须要备案。

  1. 准备材料:身份证、域名证书、服务器信息
  2. 填写信息:在服务商平台填写网站基本信息
  3. 初审:服务商进行初步审核(1-2天)
  4. 管局审核:提交到通信管理局最终审核(5-15天)
  5. 下发备案号:审核通过后获得ICP备案号

接下来就涉及到技术操作了,我们在准备了建站必备的一些东西之后,开始正式搭建网站了。那不妨我们第一步就是完成一下域名的解析吧,域名的解析步骤可以在你所购买的域名的商家那找到,添加解析记录,解析到你的云服务器的IP地址,这样以后输入你的域名之后就可以跳转其对应的主机,也就是你的云服务器,现在知道域名的作用了吧,主机的名字IP地址这么长多难记。

  1. 登录域名管理后台

  2. 添加解析记录

    • 记录类型:A记录
    • 主机记录:@ 或 www
    • 记录值:服务器IP地址
    • TTL:默认即可
  3. 等待生效:一般几分钟到几小时不等

域名解析的具体做法可以参见视频。

前提:在你购买云服务器时,最好选择CentOS系统,包括像我用的轻量应用服务器。

首先我们需要用工具实现和云服务器的连接:

  • Windows系统:推荐Xshell软件
  • Mac/Linux系统:使用Terminal终端

打开连接工具,输入: