从低成本域名、Cloudflare 反代 Gemini 到 Hermes 运维与避坑全记录

导语:在大陆境内的低配云服务器(如阿里云 2C2G 实例)上部署一个 24 小时随叫随到的 AI 运维管家,看似简单,实操中却布满了“网络阻断、境外超时、计费暗坑、死循环烧 Token”等重重陷阱。本文记录了从 Spaceship 购入 1 美元域名、通过 Cloudflare Workers 反向代理 Google Gemini API、领取 Google AI Pro 每月 $10 赠额,到在 CentOS 8 上部署新一代 Hermes Agent(爱马仕)并打通 QQ 机器人的完整实战流程,附赠关键的避坑调优经验。 一、整体架构与设计思路 在大陆境内服务器上落地 AI Agent,核心矛盾在于:机器在境内(网络受限、内存小),但优质大模型和通讯协议在境外。 整...
点我阅读更多...

隔离体验卡

一直以来总觉得疫情隔离和自己很远,去年多次居家隔离也是走走形式,但是最近一次的体验确实工作后很多年第一次经历。从最初的略有期待(想看看到底是什么情况),到中途的焦躁不安,再到最后的重获自由,整个过程跟做梦一样。简单的把体验分享一下。 起源 4月12号由于工作需要出差到成都,其实成都的防疫情况在我心里一直认为做的比较好,我也始终坚信成都是一个拥有科学防疫办法的城市,所以本次出差并没有考虑太多疫情相关的因素。出发来成都前专门在家做了一次核酸,按照成都的防疫政策,到成都后还需要在本地再做一次,为了不变黄码,13号中午放弃了午睡的时间去郫都区人民医院又做了1次核酸。按说已经做了2次核酸,期间一直在研究所办公,周五晚上还和同事去聚餐,已经完完全全的融入了成都人群。 然而,昨天(4月17日)凌...
点我阅读更多...

Java ClassLoader

众所周知Java中的类是由ClassLoader负责加载的,最近定位了一个关于类加载的问题,顺便回顾了下Java中类的加载机制,对Java中提供的ClassLoader进行一一说明。 Java中提供的ClassLoader 开始说明该问题前不妨先看看如下代码: public static void main(String[] args) { // 用户自定义类 // sun.misc.Launcher$AppClassLoader@14dad5dc System.out.println(Application.class.getClassLoader()); // 系统基本类 // null System.out.println(...
点我阅读更多...

人生三重境界

最近在搞一个务虚的事情,从痛点分析到目标制定再到措施落地,目标要可量化,措施要可执行,结果要可衡量。 如何衡量一个人的能力,通常会转换成另一个一般化指标,例如,考试分数可以比较客观的反应学生能力,但不能完全代表学生的能力。 所以我们可以将我们的衡量标准价值导向绑定,假设我们绩效导向为代码量,那这个我们定义的能力强就需要包含开发代码量多。 立 昨夜西风凋碧树,独上高楼,望尽天涯路 该阶段需要“立”志,确定目标,也就是价值导向。 守 衣带渐宽终不悔,为伊消得人憔悴 主要为了目标不断的求索,努力。 得 众里寻他千百度,蓦然回首,那人却在灯火阑珊处 付出努力,一步一个脚印,结果(真理)会来找我们,这是一个自然而然的过程。 实操 例如公司需要员工加班...
点我阅读更多...

Mac用户构建Linux开发环境

最近可能会从Mac暂时迁移至Linux环境进行常规软件开发,所以本周末利用空隙时间从Linux发行版本到常用软件再到开发环境的准备做了一个大致的梳理。由于我是重度Mac使用者,所以我会分大概3篇文章来说明怎么准备一个Linux系统便于Mac重度开发者迁移。 发行版的选择 在发行版的选择上,本人也有过纠结,毕竟Linux发行版众多,选出一种合适的发行版确实是一个头疼的事儿。经过慎重考虑,我从Centos、Fedora、ArchLinux、Ubuntu、LinuxMint中选择了LinuxMint。具体原因如下: LinuxMint是基于Ubuntu的发行版,在Ubuntu的基础了做了一些改变。Ubuntu的优点就是软件支持性好,生态好,这样其实LinuxMint也就可以轻松的借...
点我阅读更多...

Java泛型函数

背景 PHP的Array以方便灵活著称,再加上丰富的库函数,可以让开发者灵活的应对大部分需求。经常和数据库打交道的同学,肯定熟悉这个方法array_column array_column() 返回input数组中键值为column_key的列, 如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。 做Java后,我们也常碰到需要如此操作的场景,但并没有合适的库函数,于是本着解放劳动力的出发点,打算自己开发一个。但是由于Java是一个强类型语言,我们经常会碰到如此的类型List<T>,如下: public class UserInfo { private String userName = "codecook...
点我阅读更多...