Snap 与 Deb:Ubuntu 下到底该选哪个软件安装方式?
Snap 与 Deb:Ubuntu 下到底该选哪个软件安装方式?问题是怎么来的最近我频繁地在 Ubuntu 上装软件,每次都会遇到同一个选择: 12sudo apt install xxx # debsudo snap install xxx # snap 有些软件两个渠道都有。比如 Firefox,apt 里有一个版本,snap 里也有一个版本。这时候我就懵了:到底该装哪个?两个都装会不会冲突?如果我想同时开两个 Firefox 怎么办? 这些问题不是”查一下命令”就能解决的。它们背后藏着 Linux 包管理的整个演进历史。这篇文章就是我当时想找但没找到的那篇——把 deb 和 snap 的来龙去脉、使用场景、以及你真正关心的那些问题,一次讲清楚。 一、先理解一个概念:Linux 软件安装的三层困境在讲 deb 和 snap 之前,你得先理解为什么 Linux 会有这么多种安装方式。这不是因为开发者闲得慌,而是因为传统 Linux 软件分发有一个从娘胎里带来的问题。 问题 1:依赖地狱你在 Windows 上装软件,一般是下载一个 .exe,双击,...
什么是 SaaS?—— 为什么微博不是 SaaS,但飞书是?帮你彻底搞懂"软件即服务"
什么是 SaaS?—— 为什么微博不是 SaaS,但飞书是?帮你彻底搞懂”软件即服务”前言最近听到”所见即服务”(SaaS)这个词,感觉好像是那么回事,又好像不是。 你一定也有过这些困惑: “微博也是网页登录用,飞书也是网页登录用——为什么飞书是 SaaS,微博不是?” “我手机上装了个美图秀秀 App,和我用网页版 Canva 修图,有什么区别?” “在线 PS(Photopea)可以在浏览器里编辑图片,这是 SaaS 吗?” “如果我买了一套 CRM 软件部署在自己的服务器上,跟直接用 Salesforce(在线 CRM)有什么区别?” 这些问题的答案,不在”用没用网页”上,而在”软件归谁管、钱怎么付、能不能定制”上。 这篇文章帮你彻底搞清楚。 目录 先建立一个直觉:租房子 vs 买房子 SaaS 的官方定义 SaaS 的五大核心特征 用五把尺子判断:是 SaaS 还是传统软件? 为什么微博不是 SaaS?为什么百度云盘也不是? 什么是 SaaS?什么不是?—— 大量案例逐一分析 SaaS 的优缺点 什么业务适合做 SaaS?什么不适合? SaaS 的常见误...
跨域、CORS、CSRF、SameSite 彻底讲清楚
跨域、CORS、CSRF、SameSite —— 前端开发中最容易混淆的一套概念,彻底讲清楚前言 “后端开发出身的人,第一次碰前端跨域问题,十有八九会被搞晕。” 我就是这样。 我在后端写接口写得好好的,前端一连就说”跨域报错”。我心想:“我接口都写对了,你浏览器凭什么拦我?” 然后浏览器说:“这是为你好,防止 CSRF 攻击。” 我又心想:“CSRF 又是什么东西?跨域跟 CSRF 什么关系?” 然后我去搜解决方案,有人跟我说加 CORS 头,有人跟我说用 SameSite cookie,有人跟我说 CSRF token……我彻底懵了。 这篇文章就是为了当时的我写的。从最底层开始,一层一层讲清楚: 为什么浏览器要限制跨域? CORS 是在解决什么问题? CSRF 又是什么?跟跨域什么关系? SameSite Cookie 又是干什么的? 代码里 trustedOrigins 到底该配置什么? 最终你会发现:这些概念并不复杂,只是没人把它们串起来讲。 目录 三个核心问题 先搞清楚:什么是”跨域”? 为什么浏览器要限制跨域? CORS —— 跨域资源共享 CSRF —— 跨站...
MCP vs Agent 全面对比与最佳实践
MCP vs Agent —— 它们到底是什么?有什么区别?什么时候该用哪个?前言最近 AI 开发领域有两个词频繁出现:MCP 和 Agent。 很多人刚接触时会混淆:它们不都是让 AI 能”做事”的吗?区别在哪?有了 Agent 为什么还要 MCP?MCP 会替代 Agent 吗? 这篇文章从最底层逻辑开始,帮你彻底理清这两个概念。 目录 一个类比:先建立直觉 什么是 MCP? 什么是 Agent? MCP vs Agent —— 全面对比 相同点:它们解决什么问题 不同点:核心思维差异 应用场景 MCP + Agent = 黄金组合 总结 1. 一个类比:先建立直觉在深入技术细节之前,先用一个外卖系统的类比建立直觉。 1234567891011121314151617181920你饿了,想吃饭。选择 A —— 你直接打电话给饭店: "喂,我要一份鱼香肉丝盖饭" 饭店做好,送到你家选择 B —— 你打开美团/饿了么: 打开 App → 浏览菜单 → 下单 → 骑手取餐 → 送到你家MCP 就像是"美团/饿了么"这个平...
从 Tokenizer 到 Embedding 再到 RAG
从 Tokenizer 到 Embedding 再到 RAG —— 大模型是怎么”理解”并”查找”信息的?前言你有没有想过这些问题: 大模型明明只认识数字,为什么它能理解”猫”和”狗”是相似的? RAG 说”从知识库检索相关内容”,它是怎么知道哪些内容跟我的问题相似的? Tokenizer 把文本切成 Token,Embedding 把 Token 变成向量——这两步到底有什么关系? 这篇文章会从最底层开始,把编码 → 向量化 → 相似搜索 → RAG 检索这条完整的链路讲清楚。 看完你会明白:为什么 Tokenizer 的分词质量直接影响 RAG 的检索准确性。 目录 编码的三层境界 第一层:Tokenizer —— 把文本切成块 第二层:Embedding —— 把 Token 变成向量 第三层:语义空间 —— 向量为什么能表示”相似” RAG 的完整检索流程 Tokenizer 如何影响 RAG 的检索准确性 实践:一个 RAG 系统的编码链路 总结 1. 编码的三层境界整个编码过程可以理解为三个层层递进的阶段: 12345678910自然语言 ...
彻底搞懂 Token
彻底搞懂 Token —— 大模型世界的”字数”到底怎么算?中文一定比英文费钱吗?前言 “中文一个 token 对应一个字?那文言文那么简短,岂不是能省很多 token?” 这是我给外行同事解释 Token 时最常听到的问题。 这个想法看起来很有道理:文言文用几个字就能表达一大段白话文的意思,如果每个字=一个 token,那文言文应该能省 50% 以上的 token 对吧? 答案是:不对。完全不对。 不仅不对,有时候文言文反而更费 token。 这篇文章会把 Token 这个概念从里到外掰开揉碎讲清楚,看完你就知道为什么了。 1. Token 到底是什么?1.1 最直白的定义Token 是 LLM(大语言模型)处理文本时的最小基本单位。 它不是字母,也不是完整的单词,而是一个”词块”(subword)。 类比:句子是一面墙,Token 就是砌墙的砖。一块砖可能大、可能小,但它是不可再分的基本单元。 1.2 为什么需要 Token?大模型本质上是数学机器,它不认识文字,只认识数字。 所以需要一个步骤把文本转换成数字: 123原始文本 → Token(分词)→ ID...
AI Agent 沙箱深度解析
AI Agent 沙箱深度解析 —— 为什么 Agent 需要沙箱?沙箱 vs 容器 vs 虚拟机有什么区别?前言如果你用过或者看过 AI Agent 的相关工具(比如 OpenAI Code Interpreter、AutoGPT、LangChain 的沙箱执行器),会发现它们几乎都有一个共同的设计——沙箱。 为什么 Agent 非要沙箱不可?直接用 Docker 不行吗?用虚拟机不是更安全吗? 这篇文章会把这些概念彻底讲清楚。 目录 一个灵魂拷问:Agent 执行代码到底有多危险? 什么是沙箱? 四大隔离技术全家桶 沙箱 vs 容器 vs 虚拟机 —— 全面对比 为什么 AI Agent 选择了沙箱? 常见的 Agent 沙箱方案 沙箱的局限性 生产环境的最佳实践 总结与脑图 1. 一个灵魂拷问:Agent 执行代码到底有多危险?1.1 一个典型场景假设你构建了一个 AI Agent,用户对它说: “帮我分析一下服务器上的 Nginx 日志,找出最近一小时的 500 错误,写一个分析报告保存到桌面。” Agent 会做什么? 12345678910111213# A...
大模型开发核心概念解析
大模型开发核心概念解析 —— Harness、Prompt、LLM、Agent、Context 到底是什么?前言刚开始接触大模型开发时,各种术语扑面而来:LLM、Prompt、Agent、RAG、Fine-tuning、Context、Harness…… 这些概念分别是什么意思?它们各自解决什么问题?它们之间的关系是什么?从零搭建一个大模型应用时,哪些是必须的? 这篇文章帮你一次性理清楚。 目录 大模型应用的整体架构 LLM —— 大脑 Prompt —— 指挥棒 Context —— 短期记忆 Agent —— 自主行动的躯干 Harness —— 缰绳与缰绳架 其他重要概念 它们如何协同工作 总结与脑图 1. 大模型应用的整体架构在深入每个概念前,先用一张图建立整体认识: 123456789101112131415161718192021222324252627282930313233┌─────────────────────────────────────────────────────┐│ 用户输入 ...
JWT 完全解析
JWT 完全解析 —— 从原理到实践,掰开了揉碎了讲清楚前言最近在学习 FastAPI 时遇到了登录认证的问题,接触到了 JWT 这个概念。说实话刚看到 JWT 时一头雾水:它是什么?为什么登录要用它?跟 session 有什么区别?里面的那一长串乱码到底藏了什么秘密? 这篇文章就是我对 JWT 的完整学习笔记,力求掰开了、揉碎了,把每一个知识点都讲清楚。 目录 JWT 是什么? 为什么需要 JWT?—— 从 Session 的痛点说起 JWT 长什么样? JWT 的三部分:Header · Payload · Signature JWT 的工作流程(核心逻辑) JWT 的签名是怎么保证安全的? JWT 的优缺点 JWT 在 FastAPI 中的实战 常见安全问题与防范 总结与脑图 1. JWT 是什么?JWT 全称 JSON Web Token,读作 “jot”(/dʒɒt/)。 官方的定义是:一种紧凑的、URL 安全的、用于在双方之间传递声明(claims)的令牌格式。 翻译成人话就是: JWT 是一段有结构的字符串,里面可以安全地存放一些信息(比...
从一份渗透报告开始的安全加固
从一份渗透报告开始的安全加固 项目:SGCC 智能服务控制台 · 学习记录 起因攻击方递来一份渗透报告,两个高危: 1234567891. 目录遍历 GET http://x.x.x.x:3000/@fs/server/index.js GET http://x.x.x.x:3000/@fs/node_modules/pg/lib/client.js GET http://x.x.x.x:3000/@fs/node_modules/multer/README.md GET http://x.x.x.x:3000/@fs/node_modules/express/index.js2. 任意文件读取(CVE-2025-30208) GET http://x.x.x.x:3000/@fs/etc/passwd?raw → 直接读出 /etc/passwd 的内容 我看完第一反应是:完了,源码全裸了。 根因:把开发服务器丢到生产/@fs/ 是 Vite 开发服务器(dev server)专用的源码读取端点,给热更新(HMR)用的。它的设计前提是「跑在开发者本机...









