围绕明确职责组织的一组代码,可以是函数、文件或一组文件;通过约定的接口与外部合作。
知识索引
知识索引定位到具体小节。阅读和实战引用同一份内容。
术语说明 · 96
带点状下划线的词可以点击查看解释;说明卡片可跳到对应知识小节。
模块内部工作之间的相关程度。高内聚让共同服务于一项职责、常因同类需求变化的代码聚在一起。
模块之间相互依赖的程度。低耦合减少对另一模块内部细节的依赖,通过清楚、稳定的约定协作。
模块对外承诺的调用方式,包含输入、输出、错误与同步或异步语义。内部实现可变,替换时仍须遵守约定。
便于记忆的互联网名称;注册通常按期限续费,DNS 决定它对应哪些记录,网站还需要运行环境。
办理域名注册、续费和转移的服务商。DNS 托管可以另选;比价需同时看续费与多年成本。
提供 DNS 回答的服务器;在注册商处设置权威 nameservers,决定由哪一组服务器管理域名解析。
域名解析中的有类型条目,例如 A/AAAA 指向地址、CNAME 指向主机名、MX 指定邮件服务器、TXT 提供验证信息。
提供 DNS、网站代理与开发平台等多类服务。DNS only 只做解析;Proxied 才让受支持的网站流量经过其网络。
用分布式节点交付内容,并可缓存适合复用的资源。个人数据与登录响应需要正确的缓存规则。
通过 TLS 保护的 HTTP,提供传输加密与服务身份验证。使用代理时,要分别检查客户端到代理和代理到源站的连接。
对接入设备的 DNS、网络和 HTTP 流量应用策略的安全网关;适合上网过滤,需先把流量接入。
由 cloudflared 向外建立连接,让 Cloudflare 能访问原机器上的服务。应用和连接器仍需保持运行。
在应用入口按用户身份等条件控制访问的服务,可与 Tunnel 组合使用;需要单独配置允许规则。
Cloudflare 的应用运行平台,可提供静态资源与服务端逻辑;需核对框架兼容性与运行额度。
由平台管理底层服务器资源的运行方式;开发者仍需负责代码、数据、权限、运行限制与用量费用。
通过对象标识保存与读取文件类数据的服务,适合图片、附件和备份;Cloudflare R2 是其中一种产品。
提供网站构建、部署和预览的平台,也支持服务端能力;选择时要确认运行限制和套餐用途。
用于验收改动的独立部署环境。它与正式生产发布区分,但数据和密钥是否隔离仍取决于配置。
通过环境传入程序的命名配置,例如 API 地址。进入浏览器代码的值会公开,不能靠变量名来保护密钥。
提供 Machines 等应用运行资源的平台,适合 API 与后台进程;计算、存储和网络等资源分别计费。
镜像打包程序与运行依赖,容器运行镜像中的程序;部署平台也可用镜像启动虚拟机。持久数据需要另外规划。
为应用提供跨部署保留数据的存储。Fly Volume 有区域和宿主位置约束,不自动跨卷复制,也不替代备份。
服务端用响应头说明哪些来源的浏览器脚本可以读取响应的机制;前后端分域部署时常用,不替代接口认证。
严格指 Linux 内核;日常用法也常指以它为基础、配有工具和软件仓库的完整发行版。
操作系统的核心管理部分,负责进程调度、内存与设备等资源;不等于图形桌面。
帮助操作系统与某类硬件协作的软件;更换系统前需要确认关键设备的支持情况。
把内核、工具、安装器和软件仓库组织成可安装维护的系统;各发行版的版本、默认设置与支持周期不同。
从软件仓库安装、更新和移除软件包,并处理依赖关系的工具;不同发行版使用的工具与仓库可能不同。
在宿主系统中运行的虚拟计算机,可用专用虚拟磁盘安装客户系统;共享目录与设备直通会改变隔离边界。
表示安装介质内容与结构的映像文件;应匹配设备架构并核验来源和完整性,复制到普通 U 盘通常不会自动可启动。
制作多镜像启动介质的工具;初始化 U 盘后可复制受支持的 ISO 并从菜单启动,首次安装会格式化目标介质。
操作系统启动前运行的固件接口规范,用于初始化和选择启动项;其 Secure Boot 功能涉及启动组件的信任检查。
磁盘上的逻辑区域,可能用于系统、用户文件或启动信息;整盘擦除会影响目标盘上的所有分区。
在磁盘区域内组织文件、目录与相关信息的规则和结构;格式化会创建文件系统,并可能破坏原有数据。
执行程序指令的处理器。核心数量、频率和工作负载都会影响速度,不能只看一个数字。
程序运行时的工作空间,通常断电就失去内容;它不等于长期保存文件的磁盘。
较长期保存文件的位置。文件仍在磁盘上,不代表程序里尚未保存的修改也已经写入。
从初始化硬件、寻找启动项,到加载操作系统的过程;程序打不开不一定是系统启动故障。
管理进程、文件和硬件资源的基础软件,例如 Windows、macOS、Linux。
程序运行时的实例。同一个应用可能有多个进程,关闭窗口不一定结束全部后台任务。
多个任务在同一段时间内推进;可能轮流执行,不代表一定在同一时刻并行运行。
用具体规则处理输入并产生结果的一组指令。AI 生成代码后,仍需要运行和验证。
表达程序规则的工具。选择时看运行环境、生态和现有项目,而不是只比较语法。
给程序中的数据一个可引用的名字;数据的值可能随操作改变。
根据判断结果选择要执行的行为,例如价格是否小于预算。
对一组对象或在条件成立时重复执行步骤,要明确终止条件。
有名字的可复用处理,可以接收输入并返回结果,也可能产生副作用。
程序在某个时刻记住的信息,例如任务是否完成;状态变化需要反映到界面。
发生的一次动作或变化,例如点击按钮。程序可以监听事件并更新状态;事件和状态不是同一件事。
用文字命令与工具交互的界面。执行结果还取决于当前目录和运行环境。
执行代码所需的工具与环境。相同代码在不同版本或缺少依赖时可能表现不同。
项目使用的外部库或工具。版本需要可追踪,以便其他人重现同样的环境。
记录文件修改历史的版本控制工具,可以比较差异和恢复版本;它不自动验证程序正确。
一份可识别的代码或工具状态。保存版本与测试功能相互配合,不能彼此替代。
网络传输的数据单位。协议规定设备怎样组织、发送和处理这些数据。
用于在 IP 网络中定位网络接口的地址。它不直接说明这台设备上的哪个服务要处理请求。
一台设备上区分网络服务的编号。知道 IP 后,还要找到正确端口上正在监听的服务。
通过无线方式接入局域网。连上 Wi-Fi 不等于路由器已经能连接互联网。
连接不同网络并决定数据下一跳的设备。家用设备常同时提供无线接入和地址转换。
把域名等名称映射到网络记录的系统。修改记录可能受到缓存和记录生效时间影响。
客户端与服务端交换请求和响应的应用协议;HTTPS 在传输过程中加入加密和身份验证。
用户直接看到和操作的界面及其交互逻辑;浏览器端代码不能保管秘密 API Key。
在服务端处理业务、权限或数据的程序。API 是约定好的交互接口,不等于后端本身。
HTTP 响应中描述结果类别的数字,例如成功、未找到或服务器错误;具体原因还要看响应和日志。
把可运行的程序及配置放到目标环境,让预期用户可以访问和使用。
通过网络使用别人维护的计算能力或软件。托管不意味着不需要关注费用、权限和数据安全。
使用对象、数组和基本值表示结构化数据的文本格式。格式有效不代表业务内容正确。
例如 localStorage,可让同一浏览器、同一网站在刷新后读取保存的数据;不等于账号同步或永久备份。
管理、查询和更新数据的系统。需要设计数据结构、访问权限和备份方式。
创建、读取、更新、删除四类常见数据操作,用于把界面需求转成数据行为。
表达关系数据库查询和数据操作的语言。使用数据库不代表每种数据库都用相同的 SQL 能力。
为常见查询维护的辅助数据结构,可以加快查找,但需要额外空间和维护成本。
让多台机器协作处理数据或任务,同时需要处理通信、失败和一致性问题。
在同一时刻处理多份工作。拆分、传输和汇总都有成本,不一定越多机器越快。
保存可复用结果以减少重复工作,需要定义何时过期或更新,否则可能读到旧数据。
通过事件和指标回答具体问题;数据质量、统计口径与隐私边界会影响结论。
在用户、数据或工作量增长时调整系统的能力;先测量瓶颈,再决定如何扩展。
利用样本调整模型参数,从而在特定任务上形成预测或处理能力;结果取决于数据和评估。
由多层可调整计算组成的模型结构,不是把真实人脑逐个神经元复制到电脑。
学习文本等数据中的模式、按上下文生成 token 的模型;生成得流畅不代表事实正确。
用已训练的模型处理输入并生成输出的过程,区别于训练,也不等于输出已经得到事实验证。
模型这次处理时可使用的信息。上下文长度有限,重要要求需要清楚、相关并及时更新。
模型生成看似可信但不符合事实或缺乏依据的内容,需要通过来源和实际操作核验。
能围绕任务调用工具并执行多步操作的系统。必须明确权限、确认点和停止条件,不应默认无限自治。
用代表真实需求的任务和明确标准比较结果,而不是只看型号、宣传或一次演示。
给模型更多处理复杂任务的空间,可能增加延迟和成本,但不能保证答案正确。
可持续更新的项目事实、约束和验收要求;供 AI 理解当前工作,避免把旧猜测当成新事实。
给 AI 的任务描述和背景。应说明目标、现状、边界与期望结果,不是保证成功的咒语。
判断需求是否完成的可观察条件,包括正常行为、错误情况和必须保留的旧功能。
由触发、输入、处理、输出和失败处理组成的步骤,适合先做小范围验证再自动执行。
浏览器对网页结构的对象表示,可供脚本查找和修改;不等于屏幕截图中的像素。
系统约定的交互接口,定义输入、输出及调用方式;使用时还要遵守授权、限制和错误处理约定。
把原始内容转换成有结构的数据。页面变化、缺失字段和格式错误都需要处理与校验。
通过定位元素、等待页面状态和执行操作来控制浏览器,不应只靠固定延时猜页面已准备好。
同一操作重复执行,不会产生额外的不期望效果。重试发送、写入或扣款前尤其需要考虑。
72 个相关小节
拆开看:里面有哪些角色
容量、速度和角色是不同的事。磁盘空余很多,不代表运行程序时内存也充足。
按下电源:谁先把谁叫醒
描述故障时先说清:停在哪一屏、出现什么文字、之前做过什么。
操作系统:文件、程序和硬件的协调者
向 AI 询问操作步骤时,先交代你的操作系统;文件与正在运行的进程不要混为一谈。
双击之后:文件如何变成运行中的程序
“看到了变化”和“保存了变化”是两件需要分别验证的事。
为什么会卡,重启为什么有时有用
先记录何时出现、影响哪些程序、什么动作能改善,再讨论原因。
重装系统,究竟重装了什么?
重装替换的是运行环境;先明确写入哪块磁盘、哪些数据必须保留。
特殊的软件:向下管硬件,向上提供能力
内核不是桌面;操作系统提供可复用的资源管理和访问边界。
从一批作业,到每个人都能交互
操作系统的演进,是逐步把重复的机器管理工作交给软件。
为什么值得学 Linux,尤其是在 AI 时代?
Linux 是很有价值的 AI 编程环境,但选择环境要服务于你的需求。
发行版家谱:同一个内核,不同的组合与维护
先认家族、版本和维护状态,再跟教程;不要把 Linux 当作一个固定安装包。
Arch、Gentoo、SUSE:选择不同,不是等级不同
第一次选择是降低学习变量;之后再根据兴趣探索不同维护模式。
第一遍真安装:先用虚拟机
虚拟机不需要 Ventoy;先确认‘新建虚拟磁盘’,再安装。
ISO、架构与校验:下载对的安装材料
来源可信、版本在维护、架构匹配、校验通过,缺一项都先别继续。
Ventoy:一只 U 盘,选择多个安装镜像
第一次写 Ventoy 会影响 U 盘;安装系统时还要再次核对另一块目标磁盘。
备用 PC 上安装:每一步都有停下来的条件
没有把目标和恢复办法讲清楚,就还没到点击最终写入的时候。
第一次启动后:证明它真的装好了
用启动来源、系统信息和文件保留来验收,不靠‘看起来好了’。
让 AI 当教练,不替你按下擦除键
AI 提升理解与执行效率;边界、备份、授权与验收仍然需要你掌握。
程序是一份需要准确执行的步骤
先说清输入和期待的结果,再讨论用什么代码实现。
为什么有很多编程语言
语言是实现选择,目标和运行环境应当先明确。
变量、条件与循环:名字、分支和重复
代码的行为可以用具体输入来推演,不必靠猜。
编程心得:先组合逻辑,再表达成语法
先练习拆解规则与跟踪数据变化,再用语法把逻辑写准确。
函数与数据结构:给处理命名,把信息组织起来
让 AI 说明数据长什么样,往往比先解释每行语法更容易理解程序。
高内聚、低耦合:内部专心,外部约定清楚
高内聚看模块内部的职责是否相关,低耦合看模块之间依赖了多少内部细节。
像乐高积木一样组合:接口匹配,才能复用
让模块做好一件事,用清楚的输入输出连接它,再验证新场景是否接受同一套规则。
代码怎样才能跑起来
运行问题至少提供:系统、项目目录、命令和完整错误。
现代编程:组合现有工具,管理每次修改
AI 写完不等于任务完成。运行、检查差异和验证结果仍然属于编程。
从一根线开始:信息拆成小包
网络程序需要考虑等待、失败和重试,不仅是成功路径。
IP 与交换机:找到设备
先区分本地网络与其他网络,不必把每个协议细节一次记住。
端口:到了这台电脑,要找哪个服务
描述访问问题时,贴出完整地址和服务启动输出,保留端口。
Wi-Fi:换了传输方式,逻辑仍然存在
“连上无线”只说明一部分连接已经建立。
路由器:把一个网络接到另一个网络
讨论“能不能访问”时,先问从哪台设备、哪个网络访问。
域名与 DNS:用名字寻找地址
提供完整网址,比只说“那个网站”更容易定位问题。
一次访问:请求与响应
把问题拆成:发出了什么请求、收到了什么响应、界面怎样使用响应。
提交表单:数据也会往回走
陈述观察与证据,把原因留给排查。
部署:让别人也能访问
“我能打开”与“目标用户能使用”需要分别验收。
托管服务:哪些事情交给别人管理
从需求倒推服务,不用把每种平台都接进第一版。
先认分工:名字、地址簿、运行环境和数据
先问每项服务负责什么,再决定自己的作品需要哪几项。
买域名:NameSilo、Cloudflare 与比价工具
域名比价要看后缀、续费和多年总价,不给注册商排永久的便宜榜。
托管 DNS:在 NameSilo 买,在 Cloudflare 配
更换 NS 是更换 DNS 托管;转移注册商是另一项操作。
Cloudflare:DNS、橙云、CDN 与 HTTPS
DNS 托管与网站代理是两层配置;橙云才把相应网站流量带进 Cloudflare。
Gateway:管理设备向外访问什么
Gateway 侧重设备的上网流量策略,先接入流量,再配置并验证规则。
Tunnel 与 Access:连到内网,再决定谁能进
Tunnel 负责连通,Access 负责入口身份策略,应用仍由你选择的机器运行。
Cloudflare 还能做什么:运行代码、存文件、防刷
Cloudflare 同时提供网络与开发平台服务,按“运行、存储、访问、防刷”选能力。
Vercel:让前端发布、预览和更新更省事
Vercel 把构建、预览和发布串起来;环境配置、服务端限制与套餐用途仍需确认。
Fly.io:给后端程序一个可控的运行环境
Fly.io 提供后端运行资源;数据持久化、可用性与持续费用要一起设计。
把它们串起来:一份可验证的上线方案
沿请求路径验收,并把数据保存、访问权限、回退和费用写进上线需求。
从文件开始:TXT、CSV 和 JSON
说“保存数据”时,还要说明位置、生命周期和谁能访问。
数据库:负责管理与查询的系统
先画出数据字段和关系,再让 AI 选择合适的存储方案。
增删改查:把功能变成数据操作
把筛选、修改和删除分清,是准确描述需求的一部分。
关系表与其他组织方式
选数据库之前,先说明“有哪些数据、怎样关联、经常怎么查”。
索引:查得快,也要付出成本
性能优化需要测量;不要只凭“数据库慢”就堆新技术。
装不下或忙不过来:把数据和工作分开
先明确单机遇到的限制,再讨论是否需要分布式。
一起干活:拆任务、局部处理、汇总
评估并行方案时,同时考虑可拆分工作和协调开销。
搜索为什么快:很多工作提前做了
如果数据重复被查询,先想能否提前整理或缓存,而不只是增加机器。
用户行为分析:从事件到问题
先提出要回答的问题,再决定记录什么事件。
普通项目什么时候需要关心规模
把复杂度花在已确认的问题上。
机器学习:从例子中调整规则
模型的能力需要在实际任务和新例子上检验。
神经网络:很多可调整的计算层
把神经网络当作可训练的计算结构,而不是一个小人脑。
大语言模型:处理与生成 token
理解 token 是处理单位即可,精确计数要使用对应模型的工具。
你发送一句话后:推理和工具调用
分清模型生成的说法与工具真正完成的动作。
上下文与幻觉:为什么会忘、为什么会编
关键约束明确提供,重要结果独立验证。
同一个模型,不同的工作环境
说明任务之前,先确定助手实际看得见和做得到什么。
选模型:看任务,而不是只看型号
用适合自己的任务评估模型,结果比宣传词更重要。
思考深度:给复杂问题更多处理空间
更多计算不能替代缺失信息和验收标准。
管理背景:把事实写成一份可更新的说明
交接的目标是让接手者知道现状和下一步,而不是复述全部历史。
写清需求:目标、现状、约束和验收
专业性来自明确的信息和可检查的结果,不来自堆砌术语。
从重复动作到流程
先写出流程和输出标准,再决定工具。
先看清你面对的应用
先找数据来自哪里,再考虑怎样操作界面。
获取信息:接口与页面各有边界
接口选择影响可靠性,也影响后续维护。
解析:把原始内容变成可检查的字段
把提取结果当作需要验证的数据。
浏览器自动化:按页面状态执行动作
自动化也需要验收动作的结果,而不仅是记录动作发生过。
脚本与智能体:让流程可控、可重试
专业自动化同时说明成功路径、失败路径和重复执行时的行为。