![author avatar](https://guqing-blog.oss-cn-hangzhou.aliyuncs.com/d5399ade-9263-4b58-9db7-a7da54c93310.png)
guqing
毕生所求无它,爱与自由而已
一款美观小巧的 Oh My Zsh 主题
特性: 箭头符号在命令正常执行时显示为 user color,输入执行错误后显示红色 目录提示符只会显示当前所在目录名,上级目录只显示首字母 在一个 Git 仓库时会显示分支名称和工作区状态,当工作区 clean 时分支名为绿色,dirty 时分支名为红色,还有勾、叉、星等具体的状态提示符 使用方式: cd ~/.oh-my-zsh/custom/themes 下载一下文件到此目录 vim ~/.zshrc 然后修改ZSH_THEME的值为ZSH_THEME="guqing" source ~/.zshrc 就完成啦🥳
Halo 2.0 如何开发一个插件 [WIP]
如果定义了这样的 Controller ,插件启动后会生成如下的 APIs 生成规则为 /api/{version}/plugins/{plugin-name}/{mapping-in-class}/{mapping-in-method} 其中: version:来自 @ApiVersion("v1alpha1") 的 value,详情参考:Halo plugin API composition plugin-name:值来自 plugin.yaml 中的 metadata.name 属性 mapping-in-class:来自标注在类上的 @RequestMapping("colors") mapping-in-method:来自标注在方法上的 @GetMapping 插件还允许使用 @Service、@Component 注解将其声明为一个 Spring Bean,便可通过依赖注入使用 Spring Bean,示例: resources:目录为插件资源目录 admin 目录下为插件前端打包后的产物存放目录,固定为 main.js 和 style.css 两个文件 extensions 存放自定义模型资源配置 plugin.yaml为插件描述配置 static 为静态资源示例目录 插件启动时会加载 extensions 目录的 yaml 保存到数据库,apple.yaml 为本项目自定义的模型的数据示例,当启用插件后调用 便可查询到 apple.yaml 中定义的记录 reverseProxy.yaml 为 Halo 中提供的模型,表示反向代理,允许插件配置规则代理到插件目录 它表示访问 GET /assets/{plugin-name}/static/** 时代理访问到插件的 resources/static 目录,本插件便可访问到一下静态资源 roleTemplate.yaml 文件中 kind: Role 表示插件允许提供角色模版,定义格式如下: 必须带有plugin.halo.run/role-template: "true" labels,表示该角色为角色模版,当用户启用插件后,创建角色或修改角色时会将其列在权限列表位置。
我们很激动的宣布 Halo 1.5.0 发布了
halo-dev/halo-admin#439 halo-dev/halo-admin#440 halo-dev/halo-admin#449 halo-dev/halo#1668 @ruibaby @guqing Content API 的评论列表接口不再返回 ipAddress 和 email 字段。 halo-dev/halo-admin#453 halo-dev/halo-admin#513 @ruibaby halo-dev/halo-admin 修改用于切换后台样式的 less 依赖 CDN 为 unpkg。
如何使用不同云厂商的服务器搭建 K3S 集群
在阅读本篇之前建议你先阅读 WireGuard 的Quickstart来了解它的概念,这将对接下来配置WireGuard十分重要: https://www.wireguard.com/quickstart/ 本篇以两台服务器为例信息如下: 集群节点类型 厂商 公网 IP 地址 内网 IP 地址 操作系统 master 腾讯云 42.xxx.xxx.60 172.17.16.4 CentOS Linux 7.9 node-1 qingcloud 139.xx.xx.46 10.190.19.38 CentOS Linux 7.9 首先会通过 WireGuard为两台机器创建一块虚拟网卡并指定虚拟 ip 形如: 最终信息如下: 安装WireGuard 在搭建跨云的 k3s 集群前,需要先把 WireGuard 安装好,WireGuard 对内核有要求,要升级到 5.15.2-1.el7.elrepo.x86_64以上 分别在Master(表示腾讯云的服务器在集群中作为master节点使用)和Node-1(表示QingCloud的服务器在集群中作为工作节点使用)执行如下命令以开启 IP 地址转发: 对两台服务器修改主机名称 修改 iptables 以允许NAT 对两台服务器都进行如下设置,添加 iptables 规则,允许本机的 NAT 转换,执行前需要将如下的192.168.1.1/24修改为在简介中决定设定的虚拟ip: 释意: wg0: 为虚拟网卡名称,两台服务器可以都叫wg0 192.168.1.1: 为虚拟 IP 地址段, Master设置为192.168.2.1, Node-1改为192.168.2.2 eth0: 为服务器的物理网卡 升级内核 配置好 iptables 只有升级内核以安装WireGuard,否则安装WireGuard时会出现如下错误: 在所有节点都执行如下操作: 载入公钥 升级安装 elrepo 载入 elrepo-kernel元数据 安装最新版本的内核 删除旧版本工具包 然后修改默认内核版本,首先查看当前实际启动顺序 查看内核插入顺序 设置默认启动, 将CentOS Linux (5.15.2-1.el7.elrepo.x86_64) 7 (Core)改为步骤6中列出的最新内核信息 重新创建内核配置 重启服务器 验证当前内核版本 安装WireGuard 在两台服务器都需要执行如下操作,安装流程非常简单,CentOS 内核更新到 5.15.2以上版本后,其中就已经包含了 WireGuard 的内核模块,只需要安装 wireguard-tools 包即可 配置 WireGuard wireguard-tools 包提供了我们所需的工具 wg 和 wg-quick,可以使用它们来分别完成手动部署和自动部署。
Kubenetes使用及配置模板
当出于任何原因从节点中删除Pod时,emptyDir中的数据将被永久删除(注:容器崩溃时不会从节点中移除Pod,因此emptyDir卷中的数据在容器崩溃时是安全的) emptyDir的用法有: 暂存空间,例如用于基于磁盘的合并排序 用作长时间计算崩溃恢复时的检查点 Web服务器容器提供数据时,保存内容管理器容器提取的文件 不同的容器可以使用不同的mountPath指向同一个卷例如 如上test-container容器的卷路径为cache,而busybox容器的卷路径为test都是指向同一个卷cache-volume内容是共享的只是路径不同 hostPath hostPath卷将主机节点的文件系统中的文件或目录挂载到集群中 hostPath的用途如下: 运行需要访问Docker内部的容器,使用/var/lib/docker的hostPath 在容器中运行cAdvisor使用/dev/cgroups的hostPath 除了所需要的path属性之外,用户还可以为hostPath卷指定type 值 行为 空白字符串(默认)用于向后兼容,这意味着在挂载hostPath卷之前不会执行任何检查 DirectoryOrCreate 如果在给定的路径上没有任何东西存在,那么将根据需要在那里创建一个空目录,权限设置为755,与Kubelet具有相同的组和所有权 Directory 给定的路径下必须存在目录 FileOrCreate 如果在给定的路径上没有任何东西存在,那么会根据需要创建一个空文件,权限设置为0644,与Kubelet具有相同的组和所有权 File 给定的路径下必须存在文件 Socket 给定的路径下必须存在UNIX套接字 CharDevice 给定的路径下必须存在字符设备 BlockDevice 给定的路径下必须存在块设备 使用这种卷类型时请注意: 由于每个节点上的文件都不同,具有相同的配置(例如从PodTemplate创建)的Pod在不同节点上的行为可能会有所不同 当Kubernetes按照计划添加资源感知调度时,将无法考虑hostPath使用的资源 在底层主机上创建的文件或目录只能由root写入。
Kubernetes学习之安装Minikube环境
其中常见参数: --driver=xxx 从1.5.0版本开始,Minikube缺省使用本地最好的驱动来创建Kubernetes本地环境,测试过的版本 docker, kvm --image-mirror-country=cn 将缺省利用 registry.cn-hangzhou.aliyuncs.com/google_containers 作为安装Kubernetes的容器镜像仓库 (阿里云版本可选) --iso-url=xxx 利用阿里云的镜像地址下载相应的 .iso 文件 (阿里云版本可选) --registry-mirror=xxx 为了拉取Docker Hub镜像,需要为 Docker daemon 配置镜像加速,参考阿里云镜像服务 --cpus=2: 为minikube虚拟机分配CPU核数 --memory=2048mb: 为minikube虚拟机分配内存数 --kubernetes-version=xxx: minikube 虚拟机将使用的 kubernetes 版本 启动示例推荐 结果
笛卡尔积工具类
在数学中,两个集合X和Y的笛卡儿积,又称直积,在集合论中表示为X x Y,是所有可能的有序对组成的集合,其中有序对的第一个对象是X的成员,第二个对象是Y的成员。 举个实例,假设有两个集合 A 和 B: 那么A和B的笛卡尔积 A×B 表示如下: 笛卡尔积的Java实现如下:
模板方法模式实现Redis缓存查询简化
简述 在高并发场景下查询缓存时很容易出现缓存击穿(本文针对单机没有使用分布式锁),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力,因此查询缓存需要进行加锁,但这种代码每次写多了很烦,而且容易写错,因此本文采用模板方法模式简化缓存查询及并发处理 快速开始 Redis Dependency: Redis Service Redis Service Impl Redis Key Util: Cache Enum CacheTemplate: LoadCallback Example:
vue 计算属性传参
使用JavaScript闭包,进行传值操作。 使用计算属性传参