基于docker搭建CLIProxyAPI图文教程

1. 前言 本文基于CLIProxyAPI v6.8.24版本,Github地址为 https://github.com/router-for-me/CLIProxyAPI CLIProxyAPI 能够将 GeminiCLI , ClaudeCode 等转换为不仅限于原客户端使用的API,从而供给OpenClaw或其它客户端使用 2. 搭建 首先选择一个目录,本文中使用的是/data/CLIProxyAPI 运行 mkdir -p /data/CLIProxyAPI && touch /data/CLIProxyAPI/config.yaml ,创建项目配置文件 复制以下项目配置,将 secret-key 修改为你的密码 # Server host/interface to bind…

golang 重要知识:golang 调度

摘要 Go 的调度机制相当于我们微服务里的基础组件。很多运行时操作都涉及到了调度的关联。本文会细聊调度概念,策略,以及它的机制。当然,也少不了最常提及的 GMP 模型。 一、调度是什么? 计算机的资源是有限的,像 CPU,内存都是固定的。但是同一时间可能会有多个任务要去完成,比如操作系统的定时监控,用户程序的运行等。 怎么让资源最大化的完成任务,这是调度需要考虑的关键点。 调度可以理解为一个指挥员,指导我们的程序按照一定的规则去获取资源,然后去执行里面的指令。 调度分配 那么,一般的规则有哪些呢? 常见的调度策略有 2 种,一种是协作式调度,会让程序顺利的完成自己的任务,再把资源腾出来给其他程序使用。 另一种是抢占式调度,也就是让程序按一定的时间去占有这些资源,时间到了就被迫让出现有资源,给其他的程序轮流使用。 协作式调度有利于程序专注的完成自己的任务,但也可能会造成其他程序一直饿死,得不到执行。 协作式调度 抢占式调度有利于程序在资源的利用上雨露均沾,但是在不断的切换过程中,将会使得程序原本 10 ms 能完成的事,不得不延迟多几 ms。 抢占式调度 注:Linux 操作系统也是采用了抢占式调度,并且使用了 CFS:完全公平调度算法。通过对程序大致的运行时间来平衡调度,让越没有执行过的程序,越快被调度到。 当前大多数操作系统都是采用抢占式调度来执行程序的,毕竟很多操作系统都是面向用户,需要很高的响应速度,而且只要切换程序的周期够短,例如 50ms,那对于用户来讲,就像没切换一样。 二、golang…

基于docker搭建newapi图文教程

1. 前言 本文基于newapi v0.11.0-alpha.5版本,Github地址为 https://github.com/QuantumNous/new-api newapi 是一个聚合API项目,能够将其它免费或付费 API 接入,并统一到一个API接口,从而方便供给OpenClaw或其它客户端使用 该项目可以作为个人用途使用,也可以分发多人使用,目前市面上的中转站基本都是基于该项目,本文中仅作为个人用途使用 2. 搭建 首先选择一个目录,本文中使用的是 /data/newapi ,先在该目录下创建 compose.yaml 文件 然后在以下两个版本里面任选其一复制(3000端口比较常见容易被占用所以这里我改成了3480,可自行修改为其它端口) 精简单容器版本 services: new-api: image: calciumion/new-api:latest container_name: new-api restart: always command: --log-dir /app/logs…

Kubernetes Ingress 架构验证实践文档

概述 本文档记录了在低配置 Kubernetes 集群环境中,对 Ingress 架构设计进行完整技术验证(PoC)的详细过程。验证过程包括部署、配置、测试和流量追踪等全链路环节。 验证环境 准备工作:资源适配策略 副本数调整 将 Controller 副本数从 3 降为 1(Worker 节点内存紧张,跑 1 个足矣)。 Service 类型选择 如果你的 K8s 是自建的(裸金属/虚拟机)且没有配置 MetalLB,LoadBalancer 类型的 Service 会一直处于 Pending 状态。为了验证,我们将 Controller…

Kubernetes集群搭建并部署Web应用

写在前面 本文记录了从零开始使用 Kind 搭建单节点 Kubernetes 集群,并成功部署 Go Web 应用的完整过程。包括集群搭建、镜像构建、应用部署等各个环节,以及遇到的各种问题和解决方案。 环境准备 系统环境 Docker 安装 参考菜鸟教程:https://www.runoob.com/docker/ubuntu-docker-install.html Go 安装参考:https://www.runoob.com/go/go-environment.html Kind 安装 Kind 安装方式非常多,我们这里使用 Go 安装,使用以下命令: 更多关于 Kind 的内容可以参考官方文档:https://kind.sigs.k8s.io/ kubectl 安装 网络环境 Kind 集群搭建…

知识分享之Golang——在Golang中用于日常时间快速对比的内置函数

背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。 开发环境 系统:windows10 语言:Golang golang版本:1.18 内容 本节我们分享一个在Golang中用于日常时间快速对比的内置函数,以下是其常用的使用方式: test1 := "2020-07-10 12:15:30" test2 := "2022-05-30 22:26:25" oldTime, _ := time.Parse("2006-01-02 15:04:05", test1) newTime, _ := time.Parse("2006-01-02 15:04:05", test2) fmt.Println("oldTime时间是否在newTime时间之后:",…

知识分享之Golang——基于Golang的文件夹是否存在、文件是否存在函数

背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。 开发环境 系统:windows10 语言:Golang golang版本:1.18 内容 本节内容主要为基于Golang的文件夹是否存在、文件是否存在函数,为了日常便于使用,特将其整理出来。有需要的小伙伴可以直接使用。 1、文件夹是否存在,不存在则创建 // // IsDir // @Description: 文件夹是否存在 // @param path // @return bool // func IsDir(path string) bool { s, err…

深度解密 Go 语言之 context

Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获! 什么是 context Go 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。 context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。 随着 context 包的引入,标准库中很多接口因此加上了 context 参数,例如 database/sql 包。context 几乎成为了并发控制和超时控制的标准做法。 context.Context 类型的值可以协调多个…