Levon's Blog

微信: L6241425

们现在家里用的宽带大多是光纤入户,光纤里传输的是光信号。而我们的路由器、电脑这些设备,它们内部通信用的是电信号。光猫的核心使命,就是在这两者之间搭建一座桥梁,进行 “ 光电转换 “。它把来自运营商机房的光信号,翻译成路由器能听懂的电信号;再把路由器发出的电信号,翻译成光信号传回运营商。

因为现在的运营商为了方便,给你装的光猫通常是 “ 光猫一体机 “。它不仅仅是个翻译官,还集成了路由器和 Wi-Fi 的功能。它既能做信号翻译,也能拨号上网、分配 IP 地址,还能发射 Wi-Fi。

这就是为什么很多爱折腾的用户会选择 “ 桥接模式 “:把光猫的功能改回纯粹的 “ 翻译官 “,让它只负责光电转换,然后自己连接一个高性能的(软/硬)路由器来负责拨号和管理整个家庭网络。

阅读全文 »

1. 路由器和光猫

世界上第一台路由器诞生于 1980 年左右,由斯坦福大学的一对夫妻(Leonard Bosack 和 Sandy Lerner)为了连接不同系的电脑而发明。后来,他们创立了一家公司来销售这款产品,这家公司就是今天大名鼎鼎的思科 (Cisco)。

阅读全文 »

Google IAP 就像去游乐园玩项目:你在官方售票亭(Google Play)买票(发起支付),拿到一张带有防伪码的票据(Purchase Token),然后项目管理员(你的服务器)必须用特殊的验票机(调用 Google API)去验证这张票的真伪,确认无误后,才会放你进去玩(发放商品)。

服务器的验证逻辑应该是:” 我收到了 purchaseToken,我去问 Google 这是谁、买了什么 “。商品信息和用户信息应该以 Google API 返回的结果为唯一标准。开发阶段,你可以将自己服务器的用户 ID 编码到购买请求的 obfuscatedAccountId 字段中,Google 会在验证结果里原样返回给你,用以校验用户身份。

  • 对于一次性商品(如游戏币):使用 client.VerifyProduct()
  • 对于订阅商品(如月度会员):使用 client.VerifySubscription()
阅读全文 »

Cloudflare 是一个全球网络平台,它不托管你的网站,而是作为你和用户之间的 “ 智能中间层 “(技术上称为反向代理)。它横亘在你的源服务器(Origin Server)和全球访客之间,旨在让你的网站、API 或应用变得 更快、更安全、更可靠。

Cloudflare 就像是你网站的 “ 全球智能前台与安保团队 “。

  • 安保:它会盘查所有访客,把恶意机器人、黑客攻击(如 DDoS)挡在门外。
  • 前台/礼宾:对于常规访客,它会从离访客最近的 “ 储物柜 “(缓存)里直接提供访客要的资料(如图片、CSS 文件),而无需每次都麻烦你(源服务器),从而极大提升访问速度。
特性/概念Cloudflare传统 CDN (如 KeyCDN, BunnyCDN)云服务商 CDN (如 AWS CloudFront)
核心定位一体化的安全与性能平台专注内容分发加速云生态内的内容分发网络
工作模式通常接管整个域名的 DNS (反向代理模式)通过修改特定 URL (cdn.yourdomain.com) 来加速静态资源与云服务(S3, EC2)深度集成,配置灵活但更复杂
安全能力非常强大且易于使用。内置顶级的 DDoS 防护、WAF、Bot 管理通常只有基础的 DDoS 防护,或需额外购买 WAF 服务提供强大的 WAF 和 Shield 等服务,但通常是独立计费且配置复杂
易用性极易上手,5 分钟即可完成基本配置同样比较简单,专注于资源加速配置学习曲线较陡峭,需要对 AWS/GCP/Azure 生态有深入了解
典型场景保护和加速整个网站/应用,包括动态和静态内容只加速网站的静态资源(图片、JS、CSS)深度依赖特定云服务商,用于加速云上的应用和数据
阅读全文 »

一个最基本的自定义节点就是一个 .py Python 文件。ComfyUI 在启动时会扫描 ComfyUI/custom_nodes/ 文件夹,并加载其中的节点。这个 Python 文件必须告诉 ComfyUI 四件核心事情:

  1. “ 我需要什么?” (Inputs):定义节点的输入接口。
  2. “ 我能产出什么?” (Outputs):定义节点的输出接口。
  3. “ 我的核心工作是什么?” (Function):实现节点功能的具体代码。
  4. “ 我叫什么,怎么找到我?” (Registration):给节点一个唯一的名称,并注册到系统中。
阅读全文 »

1. Golang 的锁

1.1 锁的分类

  • sync.Mutex (互斥锁):一个“排他锁”。在任何时刻,最多只允许一个 goroutine(Go 语言中的轻量级线程)进入被它保护的代码区域。一旦一个 goroutine 持有该锁,其他任何试图获取该锁的 goroutine 都会被阻塞,直到锁被释放。
  • sync.RWMutex (读写互斥锁):一个“共享-排他锁”。它更加智能,对读和写操作进行了区分:
    • 读锁 (Read Lock):可以被多个 goroutine 同时持有。只要没有 goroutine 持有写锁,任意数量的 goroutine 都可以获得读锁。
    • 写锁 (Write Lock):是完全排他的。当一个 goroutine 持有写锁时,其他任何 goroutine(无论是想读还是想写)都必须等待。
阅读全文 »

1. 介绍

GPU(Graphics Processing Unit,图形处理器)是一种专门设计的微处理器,其核心特点是拥有数以千计的小型、高效的计算核心,能够同时执行海量的、重复的、简单的计算任务。它最初是为了加速图形渲染而生,但现在已广泛应用于科学计算、人工智能等领域。

CPU 是一个顶尖的数学教授,而 GPU 则是一个由几千名小学生组成的巨大班级。

  • 教授 (CPU): 你可以交给他任何复杂、需要按步骤推理的难题(比如一篇复杂的博士论文),他能以极快的速度独立完成。但如果你让他同时计算 1000 道 “1+1=?” 的算术题,他必须一道一道地算,速度再快也有限。
  • 小学生班级 (GPU): 你无法让他们写博士论文。但如果你把那 1000 道 “1+1=?” 的题分发下去,每个学生领一道,然后大喊一声 “ 开始!”,几乎在同一瞬间,你就能得到所有答案。

这个类比完美揭示了核心思想:CPU 擅长处理复杂、串行的任务,而 GPU 擅长处理海量、简单、并行的任务。

阅读全文 »

1. 原生 Markdown 及 Obsidian 增强技巧

1.1 链接

  • 内部链接 [[文件名]]:这是最基本的,链接到你的另一篇笔记。
  • 指定标题链接 [[文件名#标题]]:精准跳转到某篇笔记的特定章节,非常适合长文导航。
  • 指定块链接 [[文件名#^块ID]]:链接到笔记中的某一个段落、列表项或图片。在段落结尾输入 ^ 就会出现一个唯一的块 ID,点击即可复制。
  • 别名链接 [[文件名|你想要显示的名字]]:让链接在文章中读起来更自然。例如 [[2025-08-02|今天]]
  • 嵌入/引用 (Transclusion) ![[文件名]]:这简直是黑魔法!可以直接将另一篇笔记、某个标题下的内容,甚至是某个段落(块)直接 “ 嵌入 “ 到当前笔记中,实现内容复用。
    • 嵌入整个文件:![[另一篇笔记]]
    • 嵌入某个标题:![[另一篇笔记#某个标题]]
    • 嵌入某个块:![[另一篇笔记#^块ID]]
阅读全文 »
0%