欢迎来到我的数字花园 🌱

这里记录着我的技术学习、职业成长和生活感悟。
希望我的分享能对你有所帮助,也期待与你的交流!

最新文章

滇西之行:寻找那个远方

寻找那个远方 昆明,第一次遇见这个词不是中学地理,但我也实在记不起是某个电视剧还是某篇文章。那时它只是地图上的一个名字,遥远而陌生。再后来就是知道了她另一个名字-春城,光看名字,就很吸引人。再长大一点好像在林徽因的传记中知道了西南联大,西南联大在昆明,而在遇到《我的团长我的团》后,让我听到了云南在炮火轰鸣中不屈的呐喊,山河破碎时民族脊梁的震颤。 如果说汪曾祺平实闲适的慢条斯理浪漫描绘的昆明让你感受这座城市的美丽、明朗、滋味横生以及浓厚的人文气息,这次亲自踏入这片土地让我深切感受到了她的厚重,这是一片被历史浸透的土地,她的美不只是明媚如春,更在于她承载过的苦难、坚守与希望。 一、人间四月天:翠湖边的诗意与记忆 来昆明,怎能不吃一碗米线? 飞机晚点,抵达已是深夜八点,天空阴沉,城市静默。第二天清晨,我打车几分钟便到了白云巷,寻得一家豆花米线小店。汤清味鲜,豆花嫩滑,一口下去,仿佛整个春天都融进了舌尖。 吃完后,沿着钱局巷缓缓前行,穿过文林街、先生坡,街道两旁鲜花簇拥,咖啡馆林立,空气中飘荡着咖啡香与花香交织的气息。我捧着一杯热拿铁,漫无目的地走着,不知不觉就来到了翠湖公园。 湖水碧绿如玉,柳枝低垂,荷花满池。走出翠湖,一座明黄色的建筑映入眼帘,门前排起长队。走近一看,竟是陆军讲武堂。那一刻,我忽然意识到:这座城市的肌理里,不仅藏着诗情画意,更埋藏着一段滚烫的历史。 继续前行,我发现翠湖周边许多老建筑都是统一的明黄色墙体。其中一面墙上,写着:“人间四月天”。我不由自主地想起林徽因那首著名的诗: “你是人间的四月天, 笑响点亮了四面风……” 只是这首诗写于1934年,所以这里的“人间四月天”,究竟是指林徽因的诗句,还是借其意喻昆明的春光?这是那时看到的想法;现在,我想,两者皆是。昆明的春天确实如诗如画,可这“四月天”的温柔背后,却也隐藏着战火纷飞年代的知识分子们,在风雨飘摇中守护文明火种的坚韧。 二、坚毅与智慧::从讲武堂到西南联大 陆军讲武堂:铁血铸就的脊梁 第二天上午,我走进了陆军讲武堂,也仿佛走进了那段硝烟弥漫的滚烫历史,我对军事所知甚少,参观后除了知道这是一所创建于1909年的军事学堂,早于辛亥革命,是中国近代最早引进西方军事教育体系的军校之一,开设多种专业,堪称当时中国最先进的军事学府。还知道了蔡锷将军原来曾是教官,我们的朱德、叶剑英元帅也出身陆军讲武堂,这里不仅孕育了将帅,更孕育了我们民族不屈的脊梁。 参观后出来,我在院子里发了好一会呆,仰望天空时,我似乎看见了《冲天》里的高志航、刘粹刚驾机在昆明上空与敌机搏斗,那时的天空很近,生与死也很近,那个时候的昆明天空,是飞虎队和中国空军守护的,陆军讲武堂里的脚步声,和天上的引擎声,守护着我们这个民族不屈的尊严和脊梁。 西南联大:烽火中的学术圣殿 离开讲武堂,我吃了鸡汤米线,米线还没吃完天空毫无道理骤然落下急剧的雨点,我在小店棚下躲了会雨,最终还是决定冒雨去我心心念念的西南联大旧址。由于离的不远,我走着去的,也感受下昆明的雨,路上还碰到了一对叔叔阿姨也是去西南联大旧址的。 西南联大旧址位于现在云南师范大学校内。如果说讲武堂是铁血刚毅的民族剂量,孕育了一代将帅,那西南联大就是智慧与坚毅的化身,1938年月,三路师生先后抵达昆明,长沙临时大学更名为国立西南联合大学,尽管办学条件异常艰苦,初期甚至没有正式校舍,工学院和师范学院租借昆明各地维持教学,经费紧张,除图书馆与东区食堂为砖木结构,其余多为铁皮顶、土坯墙,后来还因资金不足,改用茅草顶,学生宿舍也拥挤,还因日军轰炸,时常需要躲避空袭,尽管如此恶劣,师生仍坚持教学,学生们还经常靠刻印、卖物等方式贴补生活。了解了这些,参观了那些保留下来的学习、生活痕迹,很难不为之动容,而这一切在汪曾祺笔下却趣味横生,那些大家乐观坚毅的精神同样是我们民族的脊梁。在战火纷飞的年代,中国最顶尖的知识分子,背着书本和理想,跨越几千公里,从华北走到西南,在写到这里,有那么一瞬让我想起《我的团长我的团》中龙文章报菜名的那段戏,他是这么报菜名的:“我去过的那些地方,我们没了的地方。北平的爆肚涮肉皇城根、南京的干丝烧卖。还有销金的秦淮风月,上海的润饼蚵仔煎,看得我直瞪眼的花花世界,天津麻花狗不理,广州艇仔粥和肠粉,旅顺口的咸鱼饼子和炮台,东北地三鲜、狗肉汤、酸菜白肉炖粉条,苦哈哈找活路的老林子,火宫殿的鸭血汤,还有臭豆腐和已经打成粉了的长沙城”。他还说:“没涵养不用亲眼看见半个中国都没了才开始发急和心痛,不用等到中国人都死光了才开始心痛和发急。好大的河山,好些地方我也没去过,但是去没去过铁骊、扶余、呼伦池、海拉尔河、贝尔池、长白山、大兴安、小兴安、营口、安东、老哈河、承德、郭家屯、万全、滦河、白河、桑乾河、北平天津、济苑、绥归、镇头包、历城、道口、阳曲、开封、郾城……我是个瞎着急的人,我瞎着急。三两字就是一方水土一方人,一场大败和天文数字的人命,南阳、襄阳、赊旗店、长台关、正阳关、颖水、汝水、巢湖洪泽湖、镇江、南京、怀宁……上海、淮阴、苏州、杭州、黄埔江、太湖、南通……屯溪、六安、九江、武昌、汉口、修水、宜昌……”。然后旁白响起:“他说得很纷乱,就像他走过的路一样纷乱。这些丢失了和惨败过的地方,三两字一个的地名,他数了足足三十分钟,然后很谦虚地告诉我们,不到十分之一,记性有限”。那些坚毅勇敢值得铭记,同样,家国沦丧的历史也值得铭记。 三、血肉的长城:腾冲·国殇墓园 终于来到腾冲了,这个我想了几年的西南边陲小城。 我一直希望,来此之时无人打扰,不想在缅怀之际突然收到电话或消息。因此一拖再拖,直到今年才成行。因为我知道,这里是中国远征军的主战场,是松山战役的发生地,是无数英魂安息之所。 想要来腾冲的初始原因就是《我的团长我的团》,这部剧的背景是中国远征军,剧中的禅达是现实中的腾冲,南天门战役是以松山战役为原型写的。由此,我知道了中国远征军,知道了松山战役。 远征军入缅作战 第一次入缅作战(1942年):这是甲午战争后中国军队首次出国作战,十万将士奔赴缅甸,为保卫滇缅公路这条抗战生命线。初期虽取得同古保卫战等胜利,但因盟军协调不畅和日军攻势猛烈,最终被迫撤退。戴安澜将军的200师作为先锋,在撤退途中壮烈殉国。戴安澜将军的200师是最先进入缅甸作战的先锋,撤退时亦是最后一支撤退的队伍。...

CS50 Week 9: Flask - 构建你的第一个 Web 应用

Week 9 概述 本周主题:使用 Flask 框架构建动态 Web 应用程序 在过去的几周里,我们学习了多种编程语言、技术和策略。事实上,这门课与其说是 C 语言课或 Python 课,不如说是一门编程思维课,让你能够继续追随未来的编程趋势。 今天我们将整合之前学过的所有技术:HTML、CSS、SQL、Python 和 JavaScript,创建属于自己的 Web 应用程序! 💡 提示:本周所学技能非常适合用来完成 CS50 的最终项目(Final Project)! 🌐 Web...

CS50 Week 8: HTML, CSS, JavaScript

之前课程,我们学习了高级编程语言 Python,它与 C 语言类似,也是通过把功能放到特定模块中构建。今天,我们将进一步扩展这些构建模块,深入探索HTML、CSS和JavaScript。 互联网 互联网将全球计算机相互连接,是一项我们都在使用的技术。 运用前几周掌握的技能,我们可以构建自己的网页和应用程序。 ARPANET首次将互联网上的节点相互连接起来。 两点之间的节点可视为路由器。 路由器 要将数据从一处路由到另一处,我们需要做出路由决策。也就是说,需要有人编程设定数据从点A传输到点B的途径。 可以想象数据从点A到点B可能存在多条路径,这样当某台路由器拥塞时,数据就能通过其他路径流动。数据包就这样从一台路由器传递到另一台,从一台计算机传递到另一台。 TCP/IP是两项协议,使计算机能够通过互联网相互传输数据。 IP(互联网协议)是计算机在互联网上相互识别的途径。每台计算机在全球范围内都有唯一的地址,其格式如下: #.#.#.# 数字范围为0至255。IP地址采用32位(IPv4),意味着可支持超过40亿个地址。新型IP地址(如IPv6)采用128位设计,能支持数量庞大的计算机! 现实世界中,服务器承担着大量工作。 数据包结构如下: 0 1 2 3 0 1 2...

CS50 Week 7: SQL - 结构化查询语言

Week 7: SQL 官方笔记:https://cs50.harvard.edu/x/notes/7/ 本周内容概览 主题 核心概念 重要程度 扁平文件数据库 CSV 文件、csv 模块 ⭐⭐ 关系型数据库 表、行、列、键 ⭐⭐⭐⭐ SQL 基础命令 SELECT, INSERT, DELETE, UPDATE ⭐⭐⭐⭐⭐ 表间关系 主键、外键、JOIN...

CS50 Week 6: Python - 从 C 到高级语言的跨越

欢迎来到 Python! 在前几周的学习中,你已经掌握了编程的基础构建块,并使用底层编程语言 C 进行了实践。今天,我们将使用一门高级编程语言 Python。 随着你学习这门新语言,你会发现自己越来越有能力自学新的编程语言——这正是 CS50 的核心目标之一。 课程官方笔记:https://cs50.harvard.edu/x/notes/6/ 本周内容概览 主题 C 语言 Python 关键区别 程序入口 int main(void) 直接执行 Python 无需 main 函数 变量声明...

CS50 Week 5: 数据结构(Data Structures)

复习 前几周我们学习如何在编程中构建基础的代码块 你在 C 语言中学到的所有知识将使你能够在 Python 等更高级的编程语言中实现这些构建模块 随着课程的进展,我们每周学习到的概念越来越有挑战,就像山越来越陡。本周,我们学习数据结构 目前为止,你已经学习了数组在内存中是如何组织数据的 今天继续讨论数据在内存中的组织方式以及随着学习知识的增长可能出现的设计可能性 课程官方笔记:https://cs50.harvard.edu/x/notes/5/ 本周数据结构概览 数据结构 特点 时间复杂度(搜索) 优点 缺点 数组 连续内存 O(1) 随机访问 / O(log n) 二分搜索...

CS50 Week 4: 内存(Memory)

在过去的几周里,我们讨论过图像是由更小的构建单元——像素——组成的。 本周,我们将: 深入探讨构成图像的二进制数据 研究文件在内存中的存储方式 学习如何直接访问和操作计算机内存中的数据 掌握C语言中的指针概念 重要提示:本周的内容可能是整个课程中最具挑战性的部分之一。涉及的概念(特别是指针)需要时间消化和理解,这是完全正常的。不要气馁,慢慢来! 像素(Pixels) 什么是像素? 像素(Pixel)是图像的最小单位,是排列在上下、左右网格上的方形色点。 简单理解: 像素 = Picture Element(图片元素) 每个像素都是一个独立的彩色点 成千上万的像素组成了我们看到的图像 黑白图像 最简单的图像是黑白图像,可以用位图(bitmap)表示: 0 代表黑色 1 代表白色 通过排列0和1,就能创建简单的图案和图像! 十六进制(Hexadecimal)...

CS50 Week 3: 算法(Algorithms)

本周主题: 搜索算法:线性搜索(Linear Search)、二分查找(Binary Search) 排序算法:冒泡排序(Bubble Sort)、选择排序(Selection Sort)、归并排序(Merge Sort) 算法复杂度:大O表示法(𝑂)、Ω、Θ 递归(Recursion) 引言 在Week 0中,我们介绍了算法的概念:一个接收输入并产生输出的”黑箱”。 本周,我们将: 通过伪代码(pseudocode)深入理解算法 将伪代码转换为真正的C代码 探讨算法的效率问题 学习如何衡量和比较不同算法的性能 为什么算法效率很重要? 回顾之前介绍算法时展示的图表: 关键问题:算法处理问题的方式如何决定解决问题所需的时间? 对于小规模数据,算法效率差异可能不明显 但对于大规模数据(如百万级、亿级),效率差异可能是秒级 vs 天级!...

CS50 Week 2: 数组(Arrays)

编译过程详解 上节提到过,编译就是把源码翻译为机器码。让我们以上节的hello.c为例,深入了解编译的四个阶段: #include <cs50.h> #include <stdio.h> int main(void) { string name = get_string("What's your name? "); printf("hello, %s\n", name); } 编译命令 在终端输入以下命令对hello.c进行编译: clang -o hello...

CS50 Week 1: C语言入门

任何编程语言都包含函数、条件语句、循环语句、变量,这些也是构建程序的基础模块。 我们知道计算机只能理解二进制,我们写的是源码(source code),源码就是人类可以读懂的给计算机的指令列表,而计算机只能理解机器码(machine code),机器码是指一串只有0和1构成的代码。 因此我们需要将源码翻译为机器码,这个翻译工具称为编译器(compiler)。本节内容就是介绍如何将C源码翻译为机器码,另外,还将学习如何写出优秀的代码。 CS50 的VS Code 环境 课程提供了配置好的云环境 cs50.dev,这个环境已经配置好了该课程需要的库,可以直接使用。由于我们的目的是学习编程,不是配置环境,所以没必要自己折腾。比如该课程中使用的cs50.h等文件,如果你自己配置还需要把这些文件下载到本地。 在继续学习之前,可以先简单了解一些会用到的Linux命令: cd - 切换目录(change directory),也就是Windows系统下的打开文件夹 cp - 拷贝文件或目录(copy) ls - 列出目录下的所有文件(list) mkdir - 新建目录(make...

CS50 Problem Set 1 英语教学脚本

CS50 Problem Set 1 - Teaching Script English Lecture Notes for Speaking Practice 🎓 Introduction [Start of Lecture] Good morning, everyone! Welcome to our Problem...

CS50 Problem Set 9: Flask Web 应用实战

1. Birthdays 实现一个 Web 应用,用于记录朋友的生日。 项目文件结构 tree . ├── app.py ├── birthdays.db ├── static │ └── styles.css └── templates └── index.html 数据库结构 sqlite3 birthdays.db sqlite>...

CS50 Problem Set 7: SQL 数据库查询实战

Problem Set 7: SQL 作业页面:https://cs50.harvard.edu/x/psets/7/ 💡 本周任务:使用 SQL 查询语句解决三个递进难度的问题,从基础查询到复杂的侦探推理游戏。 题目概览 题目 难度 核心技能 数据库 Songs ⭐⭐ 基础查询、聚合函数、子查询 songs.db Movies ⭐⭐⭐ 多表连接、JOIN、嵌套查询 movies.db Fiftyville ⭐⭐⭐⭐⭐ 综合推理、多表交叉分析...

CS50 Problem Set 6: Python 实战 - 用 Python 重写经典问题

Problem Set 6 概述 本周作业的核心目标是用 Python 重新实现之前用 C 写过的程序。这是一个绝佳的学习机会:通过对比两种语言的实现,你会深刻理解 Python 的简洁与强大。 题目 C 版本 Python 版本 难度 Hello Week 1 本周 ⭐ Mario (Less) Week...

CS50 Problem Set 5: 数据结构实战 - 遗传模拟与拼写检查器

Problem Set 5 概述 本周作业围绕数据结构主题展开,需要运用 Week 5 学习的链表、哈希表等知识解决实际问题。 题目 难度 核心知识点 Inheritance ⭐⭐ 递归、动态内存分配、树结构 Speller ⭐⭐⭐⭐ 哈希表、链表、文件操作、性能优化 作业页面: Problem Set 5 总览 Inheritance 题目 Speller...

CS50 Problem Set 4: Memory - 图像处理与文件恢复

Problem Set 4 概述 本周的作业围绕 内存 主题展开,包含音频处理、图像滤镜和文件恢复三类题目: 题目 难度 核心知识点 Volume ⭐ 文件 I/O、二进制数据处理 Filter-less ⭐⭐⭐ 图像处理、二维数组、结构体 Filter-more ⭐⭐⭐⭐ 卷积运算、Sobel 边缘检测 Recover ⭐⭐⭐ 文件签名、状态机、FAT 文件系统...

CS50 Problem Set 3 原始笔记

1. Sort 按照教程中下载并解压,我们看下有哪些文件 cd sort/ sort/ $ ls -l total 1108 -rw-r--r-- 1 ubuntu ubuntu 125 Dec 31 2021 answers.txt -rw-r--r-- 1 ubuntu ubuntu 48894...

CS50 Problem Set 2 原始笔记

scrabble In the game of Scrabble, players create words to score points, and the number of points is the sum of the point values of...

CS50 Problem Set 1 原始笔记

Set 1 What To Do Log into submit.cs50.io using your GitHub account and click Authorize cs50, then close the tab. Log into cs50.dev using your...

CS50 Problem Set 1 角色扮演对话脚本

CS50 Problem Set 1 - Role Play Dialogue Script 教授与学生对话式讲解(优化用于 Text-to-Speech) 🎭 使用说明 适用于 Gemini TTS 或其他语音合成工具 设置建议: 教授声音: 男声(如 en-US-Neural2-D)- 较低沉、权威 学生声音: 女声(如 en-US-Neural2-F)-...

CS50 编程术语发音指南

CS50 Programming Terms - Pronunciation Guide 完整发音指南(适用于 Text-to-Speech) 📢 使用说明 为 Gemini TTS 优化的发音文本: ✅ 每个术语后都有拼读版本(TTS 会读得更准确) ✅ 包含示例句子供 TTS 朗读 ✅ 符号和代码的口语化表达 1️⃣ 基础编程术语...

CS50 Problem Set 9: Flask Web 应用开发实战

Week 9 Problem Set 概述 本周的作业让我们将所学的 Flask 知识应用到实际项目中,包含两个项目: 项目 难度 核心技术 Birthdays ⭐⭐ Flask 基础、表单处理、SQL CRUD Finance ⭐⭐⭐⭐⭐ 完整 Web 应用、Session、API 调用、数据库设计 📚 前置知识回顾:Week 9...

CS50 Problem Set 3: Algorithms - 选举算法实战

Problem Set 3 概述 本周的作业围绕算法主题展开,包含一道排序算法分析题和三道选举系统实现题。三道选举题难度循序渐进: 题目 难度 核心知识点 Sort ⭐ 算法时间复杂度分析 Plurality ⭐⭐ 结构体、线性搜索 Runoff ⭐⭐⭐ 二维数组、状态管理 Tideman ⭐⭐⭐⭐⭐ 图论、递归、DFS 作业页面:https://cs50.harvard.edu/x/psets/3/ 1. Sort - 排序算法识别...

CS50 Week 2 Problem Set - Arrays and Strings

CS50 Problem Set 2: Arrays and Strings 本文记录 CS50x Week 2 Problem Set 的解题过程。这周的主题是数组(Arrays)和字符串(Strings),我们将通过四道题目深入理解这些核心概念。 📚 本周知识点回顾 在开始解题之前,让我们回顾 Week 2 的核心概念: 数组(Arrays) 相同类型数据的连续存储 零索引(从 0 开始)...

CS50 Problem Set 1: C语言编程实战

CS50 Problem Set 1 解题思路与实现 在完成 Week 1 的 C 语言基础学习后,是时候通过实际编程来巩固所学知识了。Problem Set 1 包含四个编程题,难度逐步递增,涵盖了循环、条件判断、算法设计等核心概念。 官方链接:CS50 Problem Set 1 问题1:Mario(简单版) 问题描述 还记得超级马里奥游戏中的阶梯吗?我们要用 # 字符在终端中画出一个右对齐的金字塔。 要求: 提示用户输入金字塔的高度(1-8之间)...

Gemini TTS 英语练习指南

Gemini Text-to-Speech 使用指南 如何使用 AI 语音工具练习英语 🎯 目标 使用 Gemini 和其他 TTS 工具,将 CS50 学习材料转换为音频,帮助你: ✅ 学习专业术语的正确发音 ✅ 提高英语听力理解能力 ✅ 练习口语表达和教学能力 ✅ 熟悉技术英语的节奏和语调 📱 方法...

CS50 进阶思考:从需求到代码框架

随着课程的深入,problem 的难度也在升级,如week 3,可以根据课程提供的代码框架完成指定函数功能的实现是一部分,如何训练自己能够设计出类似工程化的框架是程序员的基本功。 下面我们以 Tideman为例来说明如何训练自己从需求到代码框架的设计能力。 可以尝试遵循以下4个步骤的思维训练 第一步: 名词动词法(提取数据结构与函数) 拿到需求文档(如 Tideman 选举规则)后先不要想代码怎么写,而是在纸上圈出名词和动词。 1. 圈名词 -> 变成数据结构(Data Structure) 文档提到”候选人” -> 需要一个 string candidates[] 每两个候选人之间的胜负票数,有多少人认为候选人 i 比候选人 j...

CS50 系列导读:回望初心,重拾编程的纯粹

为什么我要做这个系列? “如果你在对的时候遇到对的引路人,一切或许会截然不同。” 偶然在 B 站刷到 CS50,那些精良的课程制作和深入浅出的授课方式,让我不禁感叹:如果大一时的我也能邂逅这样的启蒙,或许编程之路会少许多迷茫。 回忆起那时,对着“绿皮书”和枯燥 PPT 照本宣科的课堂,让我一度对软件科学关上了心门。虽然后来兜兜转转回到了这个行业,并已在软件领域深耕六年,但如今回看,这份“迟到的启蒙”依然让我心生感怀。 如今,这些基础知识早已是坦途,但我决定按照 CS50 的节奏,将学习心得与实验解法系统地记录下来。 这一系列博客,是给曾经那个迷茫自己的迟到回响,也是写给正在路上的“小朋友”们的一份微薄指引。 愿你们在代码的世界里,不只有困惑,更有发现的喜悦。 📚 系列目录 核心课程笔记 (Notes) Week 1: C 语言基础 Week 2: 数组与内存...

容器技术详解与Kubernetes的演进之路

容器技术详解与Kubernetes的演进之路 1. 从传统部署到容器化:技术演进的必然 在现代软件开发与部署实践中,效率、一致性、可伸缩性与高可用性是系统工程师持续追求的目标。回顾过去,从物理机直接部署,到虚拟机(VM)的引入,再到如今容器化技术的普及,每一次技术变革都旨在解决前一阶段的痛点,并带来了新的效率提升。 1.1 传统部署:架构演进与运维挑战 在容器技术广泛应用之前,应用部署主要围绕单体架构(Monolithic Architecture)和分层架构(Layered Architecture)展开。 1.1.1 单体架构 单体架构将所有业务功能(如用户界面、业务逻辑、数据访问等)集中打包成一个独立的、可执行的应用程序。 优点: 初期开发简单、部署直接。 挑战: 紧耦合: 任何模块的改动都可能波及整个应用,导致测试和发布周期长,风险高。 扩展性瓶颈: 只能对整个应用进行横向扩展,无法针对性地扩容某个高负载模块,易造成资源浪费。 技术栈锁定: 难以引入新语言或框架,限制了技术栈的灵活性。 维护复杂度: 随着代码库膨胀,维护和理解难度逐渐增大。 ** 1.1.2...

SRE视角:从零到深入掌握Kubernetes(一)—— K8s是什么,为什么我们需要它?

作为一名SRE,你是否也曾在凌晨被告警电话惊醒,只为一个服务的 очередное “雪崩”?你是否也曾面对着一套套环境各异、配置不一的服务器,感叹“为什么在我的机器上是好的”这个问题如此难以根除? 这些场景,或许是每一位运维工程师都曾经历过的痛。在那个我们称之为“传统部署”的时代,手动配置服务器、编写复杂的部署脚本、小心翼翼地执行每一次上线。但随着业务的快速迭代和系统复杂度的指数级增长,这种“手工艺”式的运维方式,其弊端日益凸显: 效率低下:大量的人工操作,不仅耗时,而且极易出错。 环境不一致:开发、测试、生产环境的细微差别,成了滋生Bug的温床。 资源浪费:为了应对峰值流量,我们不得不预留大量服务器资源,而大部分时间里,它们都在“沉睡”。 扩展性差:当流量洪峰来临时,手动扩容的速度,远跟不上用户请求增长的速度。 我们迫切需要一种更现代化、更自动化的方式来管理我们的应用。 容器化浪潮:解决了“我的环境”问题 大约在2013年,Docker的出现,像一道光照亮了前路。它带来的“容器化”技术,优雅地解决了“环境不一致”这一核心痛点。 什么是容器? 简单来说,容器就是一个轻量级的、可移植的、自给自足的软件打包技术。它将应用及其所有依赖(库、配置文件、环境变量等)打包在一起,形成一个标准的、可执行的单元。 我们可以用一个简单的图来理解虚拟机(VM)和容器的区别: graph TD subgraph 传统虚拟机 (VM) A[物理服务器] --> B(Hypervisor) B --> C1[Guest...

环境搭建和基础部署

大模型推理部署实战(一):vLLM从入门到生产 记录从零开始学习大模型推理部署的完整过程,基于vGPU云服务器环境 🎯 本周成果 ✅ 成功部署Qwen2-7B模型,实现156 tokens/s的优秀性能 ✅ 搭建OpenAI兼容API服务,支持25个标准端点 ✅ 建立完整的服务管理体系,包含启动、监控、测试 ✅ 掌握vGPU环境特点和优化策略 🏗️ 环境配置 硬件环境 云平台: InternStudio开发机,这里感谢上海人工智能实验室的算力支持(参加了训练营获得的算力) GPU: A100-80GB的30%算力 (约24GB显存) 优势: 成本低、配置灵活、开箱即用 软件安装 #...

数字花园正式开放!

🎉 欢迎来到我的数字花园! 经过一番准备,我的个人博客终于正式上线了!这里将成为我记录技术学习、职业成长、生活感悟的数字空间。

内容分类

📚

学习笔记

课程学习、知识整理、技能提升

28 篇文章

查看文章 →
🌸

生活随笔

日常感悟、旅行记录、兴趣爱好

2 篇文章

查看文章 →
💼

工作笔记

工作经验、技术实践、项目总结

1 篇文章

查看文章 →