网站地图生成安装插件在 Hexo 站点根目录执行:
1npm install hexo-generator-sitemap --save
配置 _config.yml编辑 Hexo 根目录的 _config.yml 文件,添加以下配置:
123456789# 站点地图配置sitemap: path: sitemap.xml # 可选参数 priority: 0.5 # 页面优先级,范围 0.0-1.0 changefreq: daily # 更新频率:always/hourly/daily/weekly/monthly/yearly/never lastmod: true # 是否包含最后修改时间 tags: true # 是否包含标签页 categories: true # 是否包含分类页
注意:确保 _config.yml 中的 url 配置正确,站点地图会基于这个 URL 生成完整链接 :
1234# URL 配置(必须正确设置)url: https://images.mingliangstar.co ...
引入tff字体
本文中涉及的文件没有的话再对应的目录下创建即可
首先,找一个你喜欢的字体。你可以在一些网站上免费下载。下载完之后,把那个.ttf格式的文件放到你网站根目录下的/source/fonts文件夹里。
免费字体下载大全,可免费商用中文字体一览表 - 猫啃网
接下来,你需要把下面的代码加到/source/css/custom.css文件里,这样就可以引入字体了。
1234567@font-face { font-family: 'BailuFeiYun'; src: url('/fonts/BailuFeiYu.ttf') format('truetype'); font-weight: normal; font-style: normal; font-display: swap; /* 关键:防止闪烁,先显示后备字体 */}
记得在_config.anzhiyu.yml文件里加上custom.css,并且设置一下“# Global ...
前言对于使用 Hexo 搭建的静态博客而言,一个稳定、轻量的评论系统是连接读者的重要桥梁。Twikoo 作为目前最受欢迎的开源评论方案之一,除了官方提供的云开发版本外,私有化部署能让你获得完全的数据自主权——不再受限于免费额度,无需担心云厂商政策变动,还能通过自定义二级域名和 SSL 证书实现更专业、更稳定的访问体验。本文将提供一份从零开始的实操指南,手把手教你通过 Docker 完成 Twikoo 的私有化部署。无论你是习惯命令行的开发者,还是偏好图形界面的宝塔用户,都能找到适合自己的部署方式。内容涵盖域名解析、容器配置、反向代理到证书申请的全流程,特别针对 AnZhiYu 等热门 Hexo 主题给出了详细的对接配置。跟随本文操作,你将拥有一个完全属于自己、独立运行的评论服务。
准备:解析二级域名建议为 Twikoo 单独分配一个二级域名(如 twikoo.yourdomain.com),便于后期维护和管理。
记录类型:A 记录
主机记录:twikoo(或其他你喜欢的二级域名前缀)
记录值:你的服务器 IP 地址
提示:解析生效需要几分钟到几小时不等,可通过 ping twik ...
PostgreSQL
未读本文主要介绍基于pg_basebackup实现主从复制(异步流复制)
PostgreSQL安装的方法可以参考这篇文章,PostgreSQL安装
关于基本的配置就不作过多的介绍了,直接开始
MASTER节点首先在master节点创建一个用于复制的用户rep 设置密码 123456,并授予rolcanlogin权限
1CREATE ROLE rep WITH REPLICATION LOGIN PASSWORD '123456';
接下来需要配置pg_hba.conf文件,配置完后记得重启PG
由于我们的SLAVE节点是一个DOCKER PG的容器,下面就需要使用pg_basebackup来备份MASTER 节点的数据目录用来启动SLAVE节点,先备份
1pg_basebackup -D /opt/pg_basebackup/ -h 172.17.0.2 -p 5432 -U rep -Fp -R -X s -P -v
SLAVE节点接下来在DOCKER的数据目录下创建一个SLAVE的本地映射文件用于启动SLAVE节点
接下来将MASTER节点中pg_ ...
背景:用镜像拉起的mysql5.6.44的容器,os是Debian GNU/Linux 9 (stretch)
这个错误表明系统仍在使用 Debian 9 (Stretch),但该版本已于 2022年6月30日 结束生命周期(EOL),官方仓库已下线。
解决方案
12345678910111213141516171819# 进入容器docker exec -it <container_name> bash# 导入 Debian 归档密钥apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50 112695A0E562B32A 04E7233B7D453EEC EF0F382A1A7B6500 648ACFD622F3D138 0E98404D386FA1D9# 修改 apt 源为归档镜像cat > /etc/apt/sources.list << 'EOF'deb http://archive.debian.org/debian/ ...
MySQL
未读没有将等值条件列用做组合索引前缀如果查询语句的谓词条件是范围条件与等值条件,存在组合索引,那么当范围条件列作为索引前缀的时候,等值条件是无法被range optimizer用来生成引擎扫描range减少扫描行数的。
索引列类型和常量类型不一致当索引列类型和常量类型不一致的时候,可能导致索引无法使用。例如下面的例子,列类型是varchar,而常量类型是Int。在MySQL中varchar类型和int类型比较是会将varchar转换为int类型去比较,这就导致下面语句需要扫描每一行数据将id转换为int类型再做比较。
关联字段类型不一致对于JOIN操作,如果关联字段类型不一样,比如一个是Int,一个是varchar,由于比较类型是Int,那么varchar字段的关联索引就无法用来生成REF访问,减少扫描行数。
关联字段字符集不一致对于JOIN操作,如果关联字段的字符集不一致,这也会导致索引无法被有效利用,进而导致扫描大量数据,查询执行慢。
索引列上有表达式计算当谓词条件中,索引列上有表达式计算的时候,优化器会无法分析抽取range
range optimizer限制索引 ...
MySQL
未读目的:使用iptables禁止121.43.122.130客户端连接140.143.94.243机器上部署的mysql
部署MySQL的机器
客户端
140.143.94.243
121.43.122.130
安装 iptables-services(若没装)
1yum install -y iptables-services
让 systemd 接管iptables
1systemctl start iptables
在部署MySQL机器上的filter表INPUT链里加一条DROP规则
1iptables -I INPUT -s 121.43.122.130 -p tcp --dport 3306 -j DROP
查看规则是否已插入
1iptables -nvL
验证
这种情况下端口不通
删除规则
1iptables -D INPUT -s 121.43.122.130 -p tcp --dport 3306 -j DROP
针对这类iptables禁用后使用wireshark分析抓包情况,可以看到tcp一直再重传
我们经常在MySQL的error log中可以看到这样的[Note],从官网的介绍来说,导致下述这种情况出现的原因,有下述几种
https://dev.mysql.com/doc/refman/8.0/en/communication-errors.html
另外我们要清楚,Got an error reading communication packets:是客户端异常关闭之后DB才会被动打印的日志,不是DB主动关闭的。所以首要排查方向应该是应用侧,非db侧。如果是客户端超过wait_timeout不活动被DB主动关闭的话,应该打印的日志是:Got timeout reading communication packets
场景分析客户端使用mycli和mysql分别去连接
mycli可以看到使用mycli连接后Aborted_clients 增加,并且错误日志中出现
[Note] [MY-010914] [Server] Aborted connection 9 to db: ‘unconnected’ user: ‘root’ host: ‘localhost’ (Got ...
【bug1】MySQL建Spatial索引的前提条件是列定义NOT NULL,而当location列中有**’GEOMETRYCOLLECTION EMPTY ‘的值时,这里‘GEOMETRYCOLLECTION EMPTY’**变相绕过了这个限制,会导致报错。
插入空集合 GEOMETRYCOLLECTION EMPTY,空集合占一行空间,语义上“我知道这里该有几何,但当前没有数据”。
与 NULL 的区别
场景
存储值
ST_IsEmpty
ST_AsText
NULL
无
NULL
NULL
GEOMETRYCOLLECTION EMPTY
有
1
GEOMETRYCOLLECTION EMPTY
重建表也无法进行修复
12345678910111213141516171819202122CREATE TABLE `spatial_table` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `location` geometry NOT NULL SRI ...
介绍由《MySQL技术内幕 InnoDB存储引擎》一书的作者姜承尧开发的 py_innodb_page_info.py 是一款功能强大的工具,旨在深入分析MySQL表空间中的页面类型及其详细信息。该工具采用Python编写,由三个文件组成:py_innodb_page_info.py、mylib.py 和 include.py。为了确保工具的正常运行,这三个文件需要放置在同一个目录下。
值得注意的是,该工具需要在Python 2的环境中运行。如果在Python 3环境下使用,可能会遇到兼容性问题,导致运行出错。此外,py_innodb_page_info.py 工具专门设计用于解析MySQL 5.7版本的.ibd文件。对于MySQL 8.0及更高版本的.ibd文件,该工具可能无法正确解析。
include.py12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include.py#encoding=utf-8INNODB_PAGE_SIZE = 1024 * 16 ...













