从零开始搭建Hexo静态博客
本文主要讲述如何搭建Hexo纯静态个人博客
相对于 WordPress 的优势:
不需要购买虚拟主机搭载
支持 MarkDown 语法,支持本地编写、预览和最终发布(Git Push)
本文涉及的技术点:
🚆 Github Pages (搭载服务)、Coding (搭载服务)、Vercel(搭载服务)、LeanCloud (存储服务)
💺 Hexo(博客框架)、ButterFly(博客主题)
🚀 DNSPod (域名解析加速)、jsDeliver (CDN资源加速)
💡 PicGo(图床工具)、PicGo-Plugin-Watermark(图床水印插件)
准备工作
一个国外域名(国内域名需备案) 访问 NameSilo 域名提供商
Windows 系统安装 Git
下载 Git
安装 Git 教程
Windows 系统安装 Node.js(建议使用 12.0 及以上版本) ...
MySQL优化
一只小海豚
索引的常见类型底层哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。如果计算后的哈希值相同,则以链表的形式存在。
但由于哈希表并不是顺序存储,因此哈希索引做区间查询的速度是很慢的,它更适用于等值查询,比如 Memcached 及其他一些 NoSQL 引擎。
有序数组有序数组在等值查询和范围查询场景中的性能就都非常优秀,但是,在需要更新数据的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。所以,有序数组索引只适用于静态存储引擎。
二叉搜索树二叉搜索树的特点是:每个节点的左儿子小于父节点,父节点又小于右儿子。二叉树是搜索效率最高的,但是实际上大多数的数据库存储却并不使用二叉树。其原因是,索引不止存在内存中,还要写到磁盘上。
你可以想象一下一棵 100 万节点的平衡二叉树,树高 20。一次查询可能需要访问 20 个数据块。在机械硬盘时代,从磁盘 ...
Java分库分表
这个图标让我想起了火狐
Java分库分表概念对于分库分表的概念,建议查看这篇文章:[00 如何正确学习一款分库分表开源框架?.md (lianglianglee.com)](https://learn.lianglianglee.com/专栏/ShardingSphere 核心原理精讲-完/00 如何正确学习一款分库分表开源框架?.md),这篇文章大致讲述了分库分表的起源、原因以及各种解决方案。
本文主要讲述如何使用 ShardingSphere ,通过Java代码来分库分表,对于该组件的详细说明请参考概览 :: ShardingSphere (apache.org)。
引入Maven1234567891011121314151617<properties> <sharding-sphere.version>4.1.1</sharding-sphere.version> <shardingsphere.version>5.1.0</shardingsphere.version></properties& ...
TinyPNG搭配GitHub Action实现自动压缩上传图片
起因在使用Typora搭配PicGo自动上传图片至GitHub图床时,图片是未被压缩的,导致博客在GitHub图床上获取图片的时间很长。因此想通过TinyPNG无损压缩图片,并通过GitHub Action自动压缩并替换原图,从而实现自动压缩并上传图片的功能。
项目地址 :https://github.com/leopold7/Learn_Tinify_Image_Action
步骤申请 Tinify API key申请地址:https://tinypng.com/developers
在你的邮箱中点击链接登录后,选择 Add API key,即可生成。
请记住此token
申请 GitHub Token在GItHub中点击头像,选择 Settings
选择Developer settings
选择 Personal access tokens -> Generate new token
按照下图勾选即可
请记住此token
配置yaml在GitHub项目中创建GitHub Action 所需的yaml配置文件,路径为 /.github/workflows/,文件名为 ...
55r 指令笔记
55r 指令笔记防火墙1234567891011121314// 查看防火墙开启端口号firewall-cmd --list-port// 开启 tcp8080 端口firewall-cmd --zone=public --add-port=8080/tcp --permanent// 开启 udp8080 端口firewall-cmd --zone=public --add-port=8080/udp --permanent// 开启 udp1024-65535端口firewall-cmd --zone=public --add-port=1024-65535/udp --permanent// 重载防火墙firewall-cmd --reload
udp2raw1/opt/udp2raw/udp2raw_amd64 -s -l 0.0.0.0:高位端口1 -r 127.0.0.1:高位端口2 --raw-mode faketcp -a -k "你的密码"
udpspeeder1/opt/udpspeeder/speederv2_amd64 -s -l 0.0 ...
V2-ui转X-ui的升级与配置
前言自从在腾讯轻量云搭载V2-ui以来,稳定使用后就没再有过改动,由于最近入手了xbox,需要使用加速器,想到自身环境有利,便着手于对现有环境进行改造,发现V2-ui已经替换为X-ui。本文主要记录升级替换过程中遇到的问题,以及在nginx上的一些操作。
背景旧版使用的V2-ui采用HTTP域名访问的方式,共用443端口后,通过nginx进行分发到面板端口和地址。
系统采用的是CentOS。
域名解析托管于cloudflare,已做好解析,未采用CDN加速及80端口证书申请。
开始更新及安装组件12yum update -y #CentOS 命令yum install -y curl #CentOS 命令
升级 X-ui1bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
启动 X-ui1x-ui
V2-ui ~ X-ui 数据迁移1x-ui v2-ui
仅迁移帐号,面板设置和用户名密码不会迁移。
停止V2-ui12345678910111 ...
领域驱动架构笔记
事件驱动架构为何要引入事件驱动架构(Event-Driven Architecture)
解耦合:事件驱动架构是高度松耦合且高度分布式的架构模型,事件的创建者(来源)只知道发生的事件,并不知道事件的处理方式,也不关心有多少相关方订阅该事件。解耦合在微服务中只需要单次调用其他微服务,剩余的微服务调用只需要通过事件总线bus执行即可。
异步执行:EDA 架构是异步场景下最适合的执行工具,我们可以将需要事件保留在队列中,直到状态正常后执行。
可扩展性:事件驱动架构可以通过路由&过滤能力快速划分服务,提供更便捷的扩展与路由分发。
敏捷性:事件驱动架构可以通过将事件分发至任何地方,提供更敏捷高效的部署方案。
事件驱动架构重点的地方在于哪里
For Event Capturing(事件收集):具备采集事件的能力
For Routing(事件路由):通过事件内容将事件路由分发至于下游的能力的(交给Pulsar处理)
For Event Processing(事件过滤/替换):对事件进行脱敏或初步过滤&筛选的能力(哪些事件需要执行,哪些事件需要丢弃,哪些事件的数据需要脱敏)
事件驱 ...
Hexo博客改造
前言
为什么要改造
由于我对博客美化进行了改造,导致更新主题后,自己的美化都失效了,更新主题的成本太大,荒废精力。
博客未启用自动部署,每次部署都需要在本地渲染 public 文件,异地编写成本太大,反而降维。
npm、配置文件混乱,未使用的插件也写入了 package.json 中,对后续自动部署造成不必要的影响。
Hexo 标签的痛点在哪
某些标签语法的确美化页面,但对于以后移植性而言,它做不到兼容,因此,我强调 去Hexo标签化 ,尽量减少使用非 Markdown 渲染代码,减少日后移植难度。
Butterfly 主题的痛点在哪
配置文件项多,配置文件内容随版本更新变化大。
配置文件的部分选项没有开关,原作者意识到需要将非核心组件移除时已经太晚,而且移除需要修改配置文件(这是在写配置文件的时候没有考虑好,最起码你得支持向下兼容,更新太混乱!)对以前的用户非常不友好。
如何改造
整理npm、整理配置文件
Vercle自动部署。
主题使用npm引入方式,编写脚本,通过 cp 命令,将改造代码复制到主题对应文件处,自动部署时启动此脚本。
改造后的结果
插 ...
2021年Java对接APP支付宝API笔记
在图标的设计上,微信和支付宝都选择超出背景部分。
前言由于工作需求,需要添加统一支付功能,微信已经有人对接过,因此我主要负责对接支付宝,本文主要记录Java对接支付宝的步骤,以及服务改造。
支付宝API文档确保支付所需的证书和参数正确下,我第一步选择查看官方API文档:https://opendocs.alipay.com/apis
由于项目是APP项目,且只涉及到支付与退款,因此我选择查看 alipay.trade.app.pay(app支付接口2.0) 和 alipay.trade.refund(统一收单交易退款接口)。
APP支付的含义是:外部商户APP唤起快捷SDK创建订单并支付。因此,我们得知,是APP通过阿里SDK调起支付宝,对于后端而言,我们只需要生成 符合规则的订单串 给前端,由前端唤起即可。
在查看支付宝官方的请求示例后,我并没有直接动手按照请求示例的代码开始编写测试,而是选择先Google下 ,有没有更好的服务端SDK供我们使用,果不其然,我发现了支付宝官方升级版SDK, Alipay Easy SDK:https://github.com/alipay/ ...
Goland GitLab import 的步骤
gopher [ˈɡoʊfər] n. 囊地鼠(产自北美的一种地鼠)
Linux 系统
如果是私有仓库(GitLab),请先确保你能通过 git clone 命令克隆这个项目
shell 输入命令 nano ~/.gitconfig ,确认 git 的用户名,密码,代理以及强制替换的 GitLab 地址:(Ctrl+x 离开、Y 写入、Enter 确认文件)
1234567891011[user] name = your name email = your email[core] autocrlf = input [http "https://github.com"] proxy = socks5://127.0.0.1:1089[url "git@gitlab.com:"] insteadOf = https://gitlab.com/
确保代理能成功使用
Goland 里输入 Ctrl + Alt + S 进入设置页面,选择 Go -> ...