这个杂记模块用于写日常学习心得,以及一些奇奇怪怪的学习想法,立志写满28篇争取连续打卡,每天多多少少要有点收获~技术小白还有很多的路要走。
1 为什么开发用 Linux
很奇怪研究生前辈写的命令行都是sodo,是 Linux/Unix 系统特有的命令。
【我感觉市面上通用的笔记本基本上就是mac或者windows,那为什么我们开发的时候经常会用linux呢?】
在软件开发中频繁使用 Linux,主要源于其独特的特性与开发场景的高度适配,具体原因如下:
-
与服务器环境高度一致
绝大多数生产环境的服务器(如后端服务、云服务器等)都基于 Linux 系统。开发时使用 Linux 可以最大限度减少「开发环境与生产环境不一致」导致的问题(例如系统命令差异、库依赖兼容问题等),降低上线风险。
-
强大的命令行工具与脚本支持
Linux 内置的命令行工具(如 grep、awk、sed 等)和 Shell 脚本能力,对于自动化部署、日志分析、批量处理等开发任务非常高效。开发者可以通过命令组合快速完成复杂操作,这是图形化界面难以替代的。
-
开源生态与开发工具兼容性
大量开发工具、编程语言(如 Python、Java、Go 等)和框架对 Linux 有原生支持,甚至优先适配 Linux。开源社区的许多项目也以 Linux 为主要开发和运行平台,使用 Linux 能更顺畅地参与开源协作。
-
高度可定制与权限控制
Linux 允许开发者深度定制系统配置,灵活调整内核参数、进程管理策略等。同时,其严格的用户权限管理机制(基于用户、组、权限位的模型)更符合开发中对资源隔离和安全控制的需求。
-
轻量与资源效率
相比 Windows 或 macOS,Linux 发行版(如 Ubuntu、CentOS)通常更轻量,对硬件资源占用更低,适合作为开发服务器或虚拟机环境运行,尤其在多任务开发时能保持较好的性能。
-
容器与虚拟化友好
主流容器技术(如 Docker)和虚拟化工具(如 KVM)最初都基于 Linux 内核特性(如 Namespace、Cgroups)开发,在 Linux 上运行容器时兼容性更好、性能损耗更低,这对微服务、云原生开发至关重要。
当然,macOS 基于 Unix 内核,与 Linux 有一定兼容性(如命令行工具相似),因此也常被开发者选用;而 Windows 可以通过 WSL(Windows Subsystem for Linux)实现对 Linux 环境的兼容。但 Linux 凭借开源免费、高度可控等特点,仍是开发领域的主流选择。
【sodo命令应该是linux环境命令下的,为什么在win的cmd终端直接输入没有用?】
在 Windows 的 CMD 终端中直接输入 sudo
命令无效,主要原因是 sudo
是 Linux/Unix 系统特有的命令,而 Windows 的命令行环境(CMD 或 PowerShell)有自己的权限管理机制,不支持这个命令。
具体来说:
-
sudo
的作用与依赖的系统机制
sudo
(Super User Do)的核心功能是让普通用户临时获取管理员(root)权限执行命令,它依赖于 Linux/Unix 的 用户权限模型 (基于uid
、gid
和文件权限位)和 PAM(可插拔认证模块) 等底层机制。 -
Windows 与 Linux 的权限体系差异
Windows 的权限管理基于 用户账户控制(UAC) 机制,与 Linux 的权限模型完全不同。在 Windows 中,获取管理员权限的方式是:
- 右键程序选择「以管理员身份运行」
- 在 PowerShell 中使用
Start-Process -Verb RunAs
启动带权限的进程 - 直接登录管理员账户操作
-
如何在 Windows 中实现类似
sudo
的功能- 如果使用 WSL(Windows subsystem for Linux) ,可以在 WSL 的终端中正常使用
sudo
(因为 WSL 本质是 Linux 环境)。 - 在 CMD 或 PowerShell 中,没有直接对应
sudo
的命令,但可以通过上述 UAC 相关方式获取管理员权限。
- 如果使用 WSL(Windows subsystem for Linux) ,可以在 WSL 的终端中正常使用
简单说,sudo
是 Linux 生态的「专属工具」,而 Windows 有自己的权限管理逻辑,因此在 CMD 中无法直接使用。
【好奇怪很多地方都用Linux生态,为什么不直接在本机win上写?】
虽然 Windows 是非常流行的桌面系统,但很多开发者选择在 Linux 环境(或类 Unix 环境)中开发,核心原因是开发需求与系统特性的匹配度不同。具体来说,主要有以下几个关键差异导致这种选择:
1. 开发工具与环境的兼容性
- 大量开发工具、框架和开源项目(尤其是后端、云计算、嵌入式等领域)最初是为 Linux/Unix 设计的。例如:
- 很多编程语言的包管理工具(如 Python 的
pip
、Node.js 的npm
)在 Linux 上的支持更完善,依赖安装更少出问题。 - 容器技术(Docker)、虚拟机工具(KVM)等底层依赖 Linux 内核特性,在 Windows 上运行需要额外的虚拟化层(如 Hyper-V),可能存在性能损耗或兼容性问题。
- 很多编程语言的包管理工具(如 Python 的
- 命令行工具链(如
git
、ssh
、grep
、awk
等)在 Linux 中是原生集成的,而在 Windows 的 CMD 中需要额外安装(如通过 Git Bash 或 WSL 模拟),体验和功能完整性有差距。
2. 生产环境与开发环境的一致性
- 绝大多数服务器、云平台、嵌入式设备的运行环境是 Linux(如阿里云、AWS 服务器几乎都是 Linux 系统)。
- 如果在 Windows 上开发,可能会遇到环境差异导致的问题 :
- 路径分隔符不同(Windows 用
\
,Linux 用/
),可能导致脚本或配置文件在部署时出错。 - 系统命令行为差异(如
ls
与dir
、find
命令的参数不同),自动化脚本难以跨系统通用。 - 库依赖的编译环境不同(如 C/C++ 程序在 Windows 上用 MSVC 编译,在 Linux 上用 GCC,可能导致兼容性问题)。
- 路径分隔符不同(Windows 用
- 用 Linux 开发能最大限度减少「开发环境能跑,生产环境报错」的情况。
3. 权限管理与系统可控性
- Linux 的权限模型(用户、组、文件权限位)更符合开发中对「资源隔离」和「精细控制」的需求。例如,通过
chmod
控制文件读写权限、用sudo
临时获取管理员权限,操作更灵活。 - Windows 的 UAC(用户账户控制)机制虽然安全,但在命令行中获取临时管理员权限的流程不如
sudo
直观,对于需要频繁执行高权限操作(如修改系统配置、安装服务)的开发场景不够高效。
4. 开源生态的适配性
- 开源社区的核心工具和项目(如 Linux 内核、Git、Kubernetes 等)大多以 Linux 为主要开发和运行平台,对 Linux 的适配优先于 Windows。
- 很多开源软件的文档、教程默认以 Linux 命令为例,在 Windows 上操作时需要额外转换,增加学习和使用成本。
如何在 Windows 上兼顾 Linux 开发体验?
如果习惯 Windows 桌面,但需要 Linux 开发环境,有两种主流方案:
- WSL(Windows Subsystem for Linux):在 Windows 中直接运行 Linux 子系统,可通过终端使用完整的 Linux 命令和工具,文件系统互通,是目前最推荐的方案。
- 虚拟机:通过 VirtualBox 或 VMware 安装 Linux 发行版(如 Ubuntu),完全隔离的 Linux 环境,适合需要深度定制系统的场景。
总之,选择 Linux 开发不是因为 Windows 不好,而是开发场景(尤其是服务器端、开源项目、底层开发等)与 Linux 的特性更匹配,能减少环境差异带来的问题,提高开发效率。
【Linux 更多是生产环境的主流】
实际情况是:Linux 更多是生产环境的主流,而 Windows 更多是个人桌面 / 办公环境,开发环境则灵活多样(可能是 Linux、macOS,也可能是带 Linux 子系统的 Windows)。
具体可以这样理解:
1. 生产环境:Linux 占绝对主导
生产环境指的是软件最终运行、对外提供服务的环境(比如网站服务器、APP 后端服务器、云计算节点等)。
- 全球超过 90% 的服务器使用 Linux 系统(如阿里云、AWS、腾讯云等主流云平台的服务器几乎都是 Linux 发行版)。
- 原因包括:开源免费、稳定可靠、资源占用低、安全性强、适合大规模集群管理,且对容器(Docker)、微服务等现代架构支持原生。
- 相比之下,Windows Server 虽然也可用作生产环境,但主要限于某些依赖 Windows 生态的场景(如 .NET 框架早期版本、特定企业软件),整体占比远低于 Linux。
2. 开发环境:灵活多样,以「贴近生产环境」为原则
开发环境是开发者编写、调试代码的环境,核心需求是「与生产环境尽量一致,减少兼容性问题」。因此:
- 后端开发、云原生开发、嵌入式开发等场景,开发者更倾向于用 Linux 或类 Unix 环境(如 macOS,因为它基于 Unix 内核,与 Linux 命令行兼容)。
- Windows 作为开发环境时,通常需要通过 WSL(Windows Subsystem for Linux) 模拟 Linux 环境,否则可能因系统差异导致代码在生产环境运行出错(比如路径分隔符、命令行为不同)。
3. Windows 的主要场景
Windows 更多用于 个人桌面办公、游戏、图形化软件操作 等场景,而非开发或生产环境的主流选择(除非是 Windows 平台专属开发,如 .NET Framework 桌面应用、Windows 驱动开发等)。
总结来说:
- 生产环境:Linux 为主(稳定、高效、适配服务器架构)。
- 开发环境:优先 Linux 或类 Unix 环境(减少与生产环境的差异),Windows 需配合 WSL 使用。
- Windows 优势场景:桌面办公、图形化操作,而非服务部署或开发主力。
【所以一般要怎么弄,在wsl还是乌班图虚拟机下面?】
在 Windows 系统上搭建 Linux 开发环境,WSL(Windows Subsystem for Linux) 和 Ubuntu 虚拟机 是两种主流方案,选择哪种取决于你的具体需求。以下是两者的对比和推荐场景:
1. 优先推荐:WSL(Windows Subsystem for Linux)
WSL 是 Windows 自带的 Linux 子系统,目前最新的 WSL 2 基于轻量级虚拟机技术,性能和兼容性都远超早期版本,是大多数开发者的首选。
优势:
- 无缝集成 :WSL 与 Windows 系统深度融合,可直接访问 Windows 文件系统(如
C:\
对应/mnt/c/
),Windows 和 Linux 环境的文件互通极为方便。 - 资源占用低:相比传统虚拟机,WSL 启动快、内存占用少,无需单独分配固定硬件资源。
- 命令行体验完整 :支持所有 Linux 命令和工具(
sudo
、apt
、git
、docker
等),可直接运行 shell 脚本、编译代码、部署服务。 - 工具链兼容:可与 Windows 上的 IDE(如 VS Code)无缝协作(VS Code 有专门的 WSL 插件,能直接编辑 WSL 中的文件)。
适合场景:
- 日常开发(后端、脚本、容器化应用等)。
- 需要频繁在 Windows 和 Linux 之间交换文件或切换操作。
- 对系统资源占用敏感,不想为虚拟机分配固定内存 / 硬盘。
安装简单:
在 Windows 10/11 中,只需打开 PowerShell(管理员模式),运行:
powershell
wsl --install
默认会安装 Ubuntu 发行版,全程自动完成,重启后即可在开始菜单找到「Ubuntu」终端。
2. 备选方案:Ubuntu 虚拟机(如 VirtualBox/VMware)
通过虚拟机软件(如 VirtualBox、VMware Workstation)安装独立的 Ubuntu 系统,相当于在 Windows 中「嵌套」一个完整的 Linux 操作系统。
优势:
- 完全隔离:Linux 环境与 Windows 彻底分离,适合需要深度定制系统内核、测试系统级配置的场景。
- 图形化界面完整:可安装 Ubuntu 桌面版,适合依赖 Linux 图形化工具的开发(如某些嵌入式开发工具、Linux 桌面应用调试)。
- 兼容性更广:对于极少数不支持 WSL 的特殊工具(如部分硬件驱动开发工具),虚拟机更可靠。
适合场景:
- 需要使用 Linux 图形化界面进行开发(而非纯命令行)。
- 开发涉及 Linux 内核修改、底层系统配置等深度操作。
- 对 WSL 兼容性有疑虑(如某些古老工具或特殊场景)。
不足:
- 资源占用高:需要预先分配固定的 CPU、内存、硬盘空间,对电脑配置有一定要求。
- 文件交换麻烦:Windows 与虚拟机之间的文件传输需要通过共享文件夹或网络,不如 WSL 直接访问方便。
总结:选择建议
- 90% 的开发场景(尤其是后端、云原生、脚本开发) :优先用 WSL 2,轻便、高效、集成性好。
- 需要 Linux 图形化界面或深度系统定制 :选 Ubuntu 虚拟机。
实际使用中,WSL 已经能满足绝大多数开发需求,且微软持续优化 WSL 的功能(如支持 GUI 应用、Docker 原生运行等),推荐优先尝试。
2 为什么要设计不同的IDE
vscode很好用,搭配合适的get prettier插件很好用,接入通义灵码也好用,反正就是很好用啊,能写java能写python什么都可以加个扩展就好了,那我以前用pycharm idea社区版是要干嘛,而且都没插件开发效率也很低?
=====================================
VS Code 凭借轻量、高度可扩展的特点,确实给很多开发者带来了超棒的体验,咱们可以从 工具定位差异 和 存在价值 角度,聊聊 PyCharm、IDEA 社区版的意义:
1. 「专注领域的深度体验」
PyCharm(尤其专业版)、IDEA 社区版(及 Ultimate 版)是 "为特定语言深度定制" 的 IDE:
- 比如写 Java 时,IDEA 能直接帮你处理复杂的 Maven/Gradle 依赖、自动补全各种框架(Spring、MyBatis 等)的语法、一键生成样板代码,连代码里的设计模式不规范都能智能提醒;写 Python 时,PyCharm 对 Django、Flask 框架的路由跳转、ORM 映射支持,比 VS Code 装插件后体验更 "无缝"。
- 简单说:VS Code 是「全能瑞士军刀」,但这些专业 IDE 是「为特定语言打造的高精度手术刀」 。对深度用 Java/Python 做大型项目的人,它们能省去大量 "自己找插件、调配置" 的精力,开箱即用的 "专业感" 很强。
2. 「历史与习惯的延续」
很多开发者入行时,接触的第一套工具就是 PyCharm/IDEA:
- 比如学 Python 的同学,老师可能直接教 "装 PyCharm 写代码";做 Java 开发的团队,多年前就统一用 IDEA 协作。习惯的力量很强大 ,即使后来发现 VS Code 好用,老项目、老流程里,这些工具依然是 "最顺手的旧鞋子",换 VS Code 反而要重新适配。
3. 「团队协作与标准化」
大型团队 / 公司里,工具选型不只是 "好不好用",还要考虑 "统一标准、减少协作成本" :
- 比如团队规定必须用 IDEA 开发 Java,所有人的代码风格、依赖管理、调试流程都能对齐;用 PyCharm 时,团队能共享代码模板、检查规则。VS Code 虽然灵活,但 "每个人装的插件不一样、配置千奇百怪",反而可能让团队协作变复杂。
4. 「功能互补,不是替代」
其实 VS Code 和 PyCharm/IDEA 完全可以 "互补着用" :
- 写小脚本、临时调试代码 → 开 VS Code,装个插件秒变 Python/Java 编辑器,轻量又快;
- 做大型 Java 项目、深度 Python 框架开发 → 切回 IDEA/PyCharm,用它们的专业功能兜底;
- 甚至可以像你说的,VS Code 里接通义灵码、搭自己的插件,做 "日常编码的主力",遇到复杂场景再切专业 IDE,灵活又高效~
所以呀,PyCharm、IDEA 社区版的存在,不是 "被 VS Code 淘汰",而是 "在特定场景下,依然有不可替代的优势" 。工具没有绝对的 "谁比谁好",能根据需求灵活切换、组合使用,才是最厉害的~ (当然,如果你用 VS Code 已经能 cover 所有场景,无脑选它也超赞,毕竟 "自己用着爽" 才是王道 )
plus,我自己的jetBrian学生认证申请了但是没有把这些工具用好,理论上说我应该进阶一下java的,无论是算法还是学习更多框架的...然而平时都是闲着。(真要敲打自己了。)
现在已经下好了wsl,明天试试看LLM大模型的部署,然后web课也可以推进度了,不要担心现在学的太杂,只是这几个月而已,把握好现在,至少试错成本还很低。
3 感受到hello algo算法书的魅力
感受到hello algo算法书的魅力,算法学习不是一蹴而就的,系统看一下书还真是清晰不少,之前做力扣都是云里雾里,看来底层还要慢慢学,算法和数学题差不多吧?需要大量练习了以后再内化成思想?
========来自comments的打卡小结帖==========
1.算法复杂度计算
第一步,统计操作数量;第二步,判断渐进上界
2.常见类型的时间复杂度
比较好搞定的是相加,常数这些,嵌套是相乘,因为比较好理解,而且比较常见,但是比较需要额外了解一下的是指数阶,对数阶和阶乘阶,这个在之前没有出现过。
在实际算法中,指数阶常出现于递归函数中。
指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。
与指数阶相反,对数阶反映了"每轮缩减到一半"的情况。
对数阶常出现于基于分治策略的算法中,体现了"一分为多"和"化繁为简"的算法思想。它增长缓慢,是仅次于常数阶的理想的时间复杂度。
3.最佳、最差、平均时间复杂度
算法的时间效率往往不是固定的,而是与输入数据的分布有关。
总结:最差时间复杂度更为实用,因为它给出了一个效率安全值
我自己想记:


========================================
你对算法学习的感悟特别到位!确实,算法学习就像建房子,底层基础(数据结构、核心思想)打得越牢,后面解决复杂问题时才越能游刃有余。
《Hello Algo》这类系统性的算法书之所以有魅力,就是因为它能帮你把零散的知识点串联起来,从 "知道怎么做这道题" 到 "理解为什么这么做",再到 "能举一反三解决同类问题"。这和数学学习太像了 ------ 小学时背公式做题,中学后理解定理推导,大学后用数学思想建模,都是从 "术" 到 "道" 的过程。
力扣的题目就像数学里的练习题,初期做起来云里雾里很正常,因为很多题目背后藏着你还没吃透的算法思想(比如动态规划的 "状态转移"、贪心的 "局部最优")。这时候回头补基础,再带着理解去刷题,会发现很多题目突然 "通透" 了。
而且算法的 "内化" 真的离不开刻意练习。可以试试这样的节奏:
- 先通过书本 / 课程搞懂一个算法的核心逻辑(比如二叉树的递归遍历,到底是怎么 "分解问题" 的);
- 找 2-3 道基础题练手,熟悉它的典型应用场景;
- 再挑战 1 道稍难的变形题,逼自己思考 "这个算法还能怎么用";
- 隔几天回头复盘,用自己的话总结这个算法的适用范围和易错点。
坚持下去,你会慢慢发现,面对新问题时,脑子里会自动跳出 "这有点像 xx 算法的思路",这就是思想内化的开始啦~ 继续加油!
加油!
4 什么叫工作流
"扣子空间最大的问题是,调用的各种别人开发的插件,没有版本控制,这意味着,一旦插件发生变动,而你工作流里有引用,就会受影响,甚至如果插件下架了,你还要重新调整。"
扣子空间的网页设计功能虽然刚上线,但是完成度很不错。
它的三个重点功能----设计稿/截图还原、可视化编辑、网站生成----相当好用,生成质量完全可以接受,加上免费,我觉得很有竞争力。
它同样也有一些使用限制。
(1)没有命令行窗口。如果你不需要 UI,只让它生成后端代码,它没有提供命令行,无法测试。
(2)未集成 GitHub。它无法将代码直接跟 GitHub 同步,只能先下载到本地,再手动推送到 GitHub。
(3)不适合复杂的状态管理。它的强项是 UI 生成,不适合复杂的状态管理和交互逻辑。
......然后我读博客提到了扣子有自己的ai工作流,那么,什么是工作流?
===================================================
工作流(Workflow)简单来说,就是 "一系列按规则执行的任务流程" ,它描述了一件事从开始到结束,需要 "谁做、做什么、按什么顺序做",核心是让流程标准化、自动化,减少混乱和重复劳动。
工作流的核心特点
- 步骤明确:有固定的任务节点和执行顺序(比如 "提交申请→部门审批→财务审核→完成")。
- 角色清晰:每个步骤由特定的人或系统负责(比如 "部门审批" 由部门经理执行)。
- 规则驱动:流程中的判断、跳转有明确规则(比如 "金额超过 1000 元需总经理审批,否则部门经理直接通过")。
生活 / 工作中的例子(更易理解)
-
日常场景:
- 报销流程:填报销单→贴发票→部门领导签字→财务审核→打款。
- 网购退货:申请退货→商家同意→寄回商品→商家签收→退款。
-
企业场景:
- 请假流程:员工提交申请→直属领导审批→HR 备案。
- 项目审批:项目经理提交方案→部门总监审核→总经理审批→执行。
为什么需要工作流?
- 提高效率:避免流程混乱(比如 "不知道该找谁签字"),减少人为疏漏。
- 标准化操作:确保所有人按统一规则执行,尤其适合大型企业或复杂流程。
- 便于追踪:可以清晰看到任务当前在哪个节点、由谁处理,方便催办或复盘。
工作流的 "数字化"
现在很多企业会用 工作流管理系统(WMS) 来实现流程自动化,比如:
- 用钉钉、企业微信的 "审批流程" 自动推送任务给对应人员;
- 用专业工具(如 Flowable、Activiti)设计复杂流程,甚至自动触发某些操作(比如审批通过后自动生成合同)。
简单说,工作流就是把 "做事的步骤" 规范化、条理化,让复杂的事情变得有序可控~
【程序员的工作流是什么】
程序员的工作流是指从接到开发任务到最终交付上线的标准化流程,不同公司、项目(如前端 / 后端、敏捷 / 瀑布)会有细节差异,但核心逻辑是 "明确分工、控制质量、高效协作"。以下是通用的典型流程拆解:
一、需求阶段:明确 "做什么"
-
需求对接
- 与产品经理、业务方沟通,理解需求目标(比如 "开发一个用户登录功能")、使用场景("支持手机号 + 验证码登录")、验收标准("输入错误时显示具体提示")。
- 输出需求文档(PRD) 或需求评审记录,确认细节(避免开发后和预期不符)。
-
技术方案设计
- 分析需求可行性:评估技术难点(比如 "登录接口如何防刷")、依赖资源(是否需要调用第三方短信接口)。
- 输出技术方案:选框架(如用 React 还是 Vue 做前端)、设计数据结构(数据库表字段)、接口规范(前后端交互的 API 格式)。
- 复杂需求会进行技术评审(TR),和团队确认方案合理性。
二、开发阶段:动手 "怎么做"
-
任务拆分与排期
- 把需求拆成具体开发任务(比如 "登录页 UI 实现→后端接口开发→前后端联调→验证码逻辑"),估算每个任务的时间。
- 从版本控制工具(如 Git)拉取分支(通常按 "功能分支" 开发,避免直接改主分支)。
-
编码实现
- 按技术方案写代码,遵循团队编码规范(如命名规则、注释要求)。
- 边写边做单元测试:用工具(如 Jest、JUnit)测试单个函数 / 模块是否符合预期(比如 "验证手机号格式的函数,输入 11 位数字返回 true")。
-
本地调试
- 搭建本地开发环境,运行代码验证功能(比如前端页面是否显示正常,后端接口是否返回正确数据),修复明显 bug。
三、协作与质量控制:确保 "做得对"
-
提交代码与代码评审(CR)
- 完成开发后,把代码提交到版本库(Git),发起合并请求(MR/PR)。
- 同事进行代码评审:检查逻辑漏洞、性能问题、规范合规性(比如 "这里循环嵌套可能导致 O (n²) 复杂度,能不能优化?"),提出修改意见。
-
集成测试
- 代码合并到开发分支后,部署到测试环境,进行集成测试:验证多个模块配合是否正常(比如 "登录成功后能否跳转到首页,用户信息是否正确显示")。
- 测试工程师(QA)会用测试用例覆盖各种场景(正常操作、异常输入、边界条件等),发现 bug 后反馈给开发修复。
四、上线与运维:保证 "用得稳"
-
预发布与灰度发布
- 修复测试 bug 后,部署到预发布环境,模拟生产环境再次验证(比如数据和生产一致时,功能是否正常)。
- 重要功能可能先灰度发布:只对部分用户开放(比如 10% 用户),观察是否有问题,再逐步扩大范围。
-
正式上线与监控
- 确认无误后,部署代码到生产环境,完成上线。
- 上线后通过监控工具(如 Prometheus、ELK)观察系统状态:接口响应时间、错误率、服务器负载等,出现问题及时回滚或修复。
-
复盘与迭代
- 上线后总结流程中的问题(比如 "某个需求理解偏差导致返工"),优化下次流程。
- 根据用户反馈,进入下一轮需求迭代,重复以上流程。
总结
程序员的工作流本质是 **"从需求到交付的闭环管理"**,核心目标是:
- 减少沟通成本(明确需求和方案);
- 保证代码质量(测试、评审);
- 降低上线风险(灰度、监控)。
不同团队(比如互联网公司偏敏捷快速迭代,传统企业偏严谨流程)会调整步骤,但核心逻辑相通~