- 博客(38)
- 收藏
- 关注
原创 05-Flask表单处理与文件上传
在 Web 开发中,表单是用户与应用交互的最重要桥梁。无论是用户注册登录、文章发布、商品搜索,还是文件上传,几乎所有需要用户输入数据的场景都离不开表单。可以说,掌握了表单处理,就掌握了 Web 应用开发的半壁江山。Flask 作为一个轻量级框架,本身并不强制要求你使用某个特定的表单库。你可以用最原始的方式,通过 手动获取数据、手动验证、手动返回错误信息。这种方式在简单场景下足够用,但随着表单数量增多、字段类型变复杂、验证规则变严格,手动处理的代码会迅速膨胀,变得难以维护,还容易留下安全漏洞。这就是 Fla
2026-08-26 20:59:15
194
原创 04-Flask数据库操作SQLAlchemy
在现代Web应用开发中,数据库操作是最核心的功能之一。Flask本身不内置数据库功能,而是通过扩展与Python最强大的ORM框架SQLAlchemy深度集成,为开发者提供了一套完整、高效、优雅的数据库操作方案。本文将从零开始,系统讲解Flask数据库开发的完整知识体系,共分为十章,助你掌握Flask数据库开发核心技能。各参数详解:这个参数在Flask-SQLAlchemy 3.x中已不再需要,建议显式设为以避免警告:2.3.2 SQLALCHEMY_ECHO开发调试时非常有用的参数,会在日志中打印所
2026-08-26 20:51:32
227
原创 03-Flask模板引擎Jinja2详解
在 Web 开发的早期,人们习惯于把 HTML 代码直接写在 Python 字符串里,用字符串拼接或 的方式往里塞数据。这种方式在项目规模较小时看似简单,但随着页面数量增加、交互逻辑变复杂,很快就会演变成一场灾难:HTML 与 Python 代码混杂在一起,难以维护,难以协作,前后端分工无从谈起。于是,模板引擎应运而生——它把"页面结构"和"业务逻辑"彻底分离,让设计师专注 HTML/CSS,让后端工程师专注数据处理,两者通过一套约定的模板语法协作。Flask 默认使用 Jinja2 作为模板引擎。Jin
2026-08-26 19:56:04
223
原创 01-Flask入门与环境搭建
Web开发是指构建运行在Web服务器上、通过浏览器访问的应用程序的过程。在深入Flask之前,我们需要先理解Web开发的底层逻辑。B/S架构(Browser/Server,浏览器/服务器架构)是现代Web应用的基础架构模式。与传统的C/S架构(Client/Server,客户端/服务器架构)相比,B/S架构具有以下特点:在B/S架构中,核心的交互流程如下:1.1.2 前后端分离趋势传统Web开发中,服务器端负责生成完整的HTML页面,前端只是展示。随着Web应用复杂度的提升,前后端分离逐渐成为主流。传统
2026-08-26 19:44:12
200
原创 10-Docker生产环境部署与K8s入门
在前面九篇文章中,我们从Docker的基础概念出发,逐步学习了镜像构建、容器管理、网络与存储、Docker Compose编排等核心技能。相信读者已经能够熟练地在开发环境中使用Docker来构建、运行和管理容器化应用。然而,当应用从开发环境走向生产环境时,我们面临的挑战将截然不同——高可用、可扩展、可观测、安全合规等生产级要求,远非单机Docker所能满足。生产环境需要的是一个能够跨多台服务器调度容器、自动故障恢复、弹性伸缩、滚动更新的容器编排平台。在当今的云原生生态中,Kubernetes(K8s)已经成
2026-08-12 00:24:00
373
原创 09-Docker监控与日志管理
在现代云原生架构中,Docker容器已经成为应用部署的标准方式。然而,随着容器数量的增长和微服务架构的复杂化,如何有效地监控容器运行状态、如何收集和分析海量日志,成为了每个运维团队必须面对的核心挑战。没有监控的系统就像没有仪表盘的汽车——你无法知道当前的速度、油量,更无法预知即将到来的故障。没有日志管理的系统则像没有黑匣子的飞机——当问题发生时,你无法回溯和定位根因。本文将从以下维度全面展开:无论你是刚开始使用Docker的开发者,还是需要构建生产级可观测性体系的运维工程师,本文都将为你提供系统性的指导。在
2026-08-12 00:22:54
498
原创 08-Docker安全最佳实践
在云原生时代,Docker容器已经成为应用交付和运行的标准载体。据CNCF(云原生计算基金会)2024年度调查报告显示,超过94%的企业在生产环境中使用容器技术,而Docker及其生态(Kubernetes、containerd等)是其中的核心。然而,容器技术的广泛应用也带来了前所未有的安全挑战。第一,容器共享主机内核。与传统虚拟机不同,所有容器共享宿主机的操作系统内核。这意味着一旦攻击者突破容器边界(即"容器逃逸"),就可能直接获得宿主机乃至同宿主机上所有其他容器的控制权。
2026-08-10 04:19:21
416
原创 07-Docker Compose多容器编排
在现代软件开发中,一个应用往往不是孤立的。一个典型的Web应用可能包含前端服务器、后端API、数据库、缓存、消息队列等多个组件。如果用原生的命令来启动这些容器,你需要手动管理容器之间的依赖关系、网络连接、数据卷挂载、环境变量传递等诸多细节。当容器数量增多时,这种手动管理方式会变得极其繁琐且容易出错。Docker Compose正是为了解决这个问题而诞生的。它允许你使用一个YAML文件来定义整个多容器应用的服务、网络和数据卷,然后通过一条命令就能启动、停止和管理整个应用栈。Docker Compose将"基础
2026-08-10 04:17:31
313
原创 06-Docker存储与数据持久化
在Docker的世界里,容器的生命周期通常是短暂的。一个容器可以被创建、启动、停止、删除,而当容器被删除时,容器内部写入的所有数据也会随之消失。这种"临时性"是容器设计的核心特征之一,它使得容器可以随时被重建和替换,但也带来了一个严峻的挑战——如何持久化保存数据?想象这样一个场景:你运行了一个MySQL容器,业务系统持续写入数据。某天因为配置变更需要删除并重建容器,结果所有数据库数据全部丢失。又或者,你在开发环境中修改了代码,但因为容器的隔离性,修改无法反映到容器内运行的应用中。这些问题都指向同一个核心概念
2026-08-09 02:23:00
468
原创 05-Docker网络深度解析
特性默认bridge (docker0)自定义bridgeDNS解析(容器名)不支持支持网络隔离所有容器在同一网络不同自定义网络互相隔离配置灵活性有限支持自定义子网、网关、IP范围容器连接只能在一个网络可连接多个网络兼容性向后兼容推荐使用–link参数支持(已弃用)不需要(有DNS)# 默认bridge网络的DNS问题# 默认bridge中无法通过容器名解析# 创建自定义bridge网络# 在自定义网络中创建容器# 自定义bridge中可以通过容器名解析!
2026-08-09 02:13:16
713
原创 04-Docker容器生命周期管理
Docker容器的生命周期是指容器从被创建到最终被删除的整个过程。理解容器生命周期的每一个阶段,是进行高效容器运维的基础。一个容器的完整生命周期包含以下几个核心阶段:创建阶段(Created)当执行命令时,Docker引擎会在镜像的基础上创建一个可写的容器层,但此时容器并未启动,容器内的进程也尚未运行。这个阶段的主要工作包括:运行阶段(Running)通过或命令,容器从created状态进入running状态。此时容器内的主进程(PID 1)被启动,容器开始执行其设计的工作:暂停阶段(Paused)通过
2026-08-08 01:23:02
387
原创 03-Docker镜像管理与Dockerfile实战
联合文件系统是一种能把多个不同物理位置的目录"联合"挂载(mount)到同一个目录树下的文件系统技术。它最核心的能力是:将多个目录叠加在一起,使其看起来像一个目录,同时还能处理不同层之间的文件冲突。假设有三个目录lowerupper和work,我们想把它们联合挂载到merged目录。lower目录是只读的底层目录(对应镜像的只读层)upper目录是可读写的上层目录(对应容器的可写层)work目录是文件系统内部使用的工作目录merged目录是联合挂载后的结果(用户看到的统一文件系统)用户在。
2026-08-08 01:20:55
242
原创 02-Docker安装与环境配置详解
Docker自2013年开源以来,已经成为容器化技术的事实标准。无论是微服务架构、CI/CD流水线、还是云原生应用部署,Docker都扮演着不可或缺的角色。然而,对于初学者而言,Docker的安装与配置往往是第一道门槛——不同操作系统的安装方式各异、网络加速配置容易踩坑、生产环境的参数调优更需要深厚的经验积累。本篇博文将从最基础的系统要求评估讲起,手把手带你完成Docker在所有主流平台上的安装,深入解析每一个配置参数的含义,并提供生产环境的完整配置模板。无论你使用的是Windows、macOS还是Linu
2026-08-07 01:53:07
537
原创 01-Docker入门与核心概念
要真正理解Docker,我们不能仅仅停留在"它是一个工具"的层面。任何一项技术的诞生都不是凭空而来的,它是对前人智慧的继承与发展,是对现实问题的回应。容器化技术同样如此——它有着超过四十年的技术积淀,经历了从chroot到LXC,再到Docker和Kubernetes的漫长演进。本章将带你穿越时光,梳理容器化技术的发展脉络,让你明白Docker为什么会出现在这个时代,以及它解决了前人没有解决好的哪些问题。软件交付方式的演进,本质上是人类对计算资源利用率和管理效率不断追求的过程。我们可以将这个过程分为三个主要
2026-08-07 01:50:14
685
原创 第二十章 Linux实战项目综合案例
1. 开启 Nginx status 模块 vim /etc/nginx/nginx.conf # 在 server 块中添加: # location /nginx_status { # stub_status on;# deny all;# } nginx -s reload # 2. 编写监控脚本 mkdir -p /etc/zabbix/scripts vim /etc/zabbix/scripts/nginx_status.sh/bin/bash# 获取 Nginx 状态。
2026-08-06 02:43:52
156
原创 第十九章 Linux 职业发展与认证
在 IT 行业,认证不是万能的,但没有认证有时候是万万不能的。尤其是对零基础转行的人,一个含金量高的认证能帮你过简历筛选那一关。打个比方,认证就像驾照。你说你开车技术好,但没驾照,出租车公司敢不敢雇你?反过来,有驾照也不代表你是赛车手。认证的作用是:在别人还不了解你的时候,给你一个"第三方背书",让你获得面试机会。进了公司之后,能不能留下来、能拿多少钱,靠的还是真本事。简历加分:很多 HR 筛简历时会把"有 RHCE 证书"作为加分项甚至硬性条件。系统学习。
2026-08-06 02:43:08
192
原创 第十八章 Linux故障排查与恢复
你有没有去医院看病的经历?当你身体不舒服去看医生时,医生会怎么做?先问症状:“哪里不舒服?什么时候开始的?疼了多久?再查体征:量体温、测血压、听心跳做检查:验血、拍X光、做CT下诊断:根据检查结果判断是什么病开药方:针对诊断结果给出治疗方案观察疗效:吃药后看看有没有好转,没好转就换方案Linux故障排查的过程和医生看病简直一模一样!只不过"病人"换成了你的Linux系统,"医生"就是你自己。医生看病Linux故障排查问症状:哪里不舒服?收集故障现象:什么报错?什么时候开始的?
2026-08-05 02:21:33
15
原创 第十七章 Linux 内核与系统调优
想象一下,你的电脑是一家大型公司。这家公司有很多员工(程序),有很多办公设备(硬件:CPU、内存、硬盘、网卡),还有一栋办公大楼(主板)。那么谁来管理这一切?谁来决定哪个员工先用打印机?谁来分配谁坐哪个工位?谁来收发快递(网络数据)?这个总管一切的"大管家",就是操作系统内核。它不直接面向用户(普通用户看不到它),但所有事情都归它管它是离硬件最近的那一层软件,所有程序要使用硬件,都必须"打报告"给内核它掌管着公司的所有资源(CPU、内存、硬盘、外设),负责公平分配。
2026-08-05 02:20:43
19
原创 第十六章 Docker 容器技术
想象一下你要搬家。选择一:传统搬家法(类似虚拟机)你雇了一辆大卡车,然后把整个房间的家具、电器、甚至连地板和墙壁都拆下来装上车。到了新家,你得先重新铺地板、砌墙壁,再把家具一件件摆好。这辆大卡车就像一台虚拟机——它要带上整个操作系统(地板和墙壁),沉重、缓慢、浪费空间。选择二:集装箱搬家法(类似容器)你把所有的东西分门别类装进标准化的集装箱里。每个集装箱大小一致,上面有标签写着"厨房用品"“卧室用品”“书房用品”。到了新家,你只需要把集装箱整体搬到对应的房间,打开就能用。
2026-08-04 21:35:52
148
原创 第十五章 Linux服务器部署实战
想象一下,你的服务器是一座大型商场,每天都有成千上万的顾客(用户请求)要进来购物。如果没有人管理入口,顾客们就会一窝蜂地涌进来,商场很快就会乱套。接收请求:把每个顾客(HTTP请求)迎接进来分发指引:根据顾客要去的店铺(不同的网站/应用),指引到正确的方向静态资源服务:如果顾客只是想看看海报、宣传册(图片、HTML、CSS等静态文件),Nginx直接就把东西递给他,不需要麻烦后面的"店铺员工"负载均衡:如果某个店铺人太多了,Nginx可以把顾客分流到其他分店反向代理。
2026-08-03 01:44:02
19
原创 第十四章 Shell高级编程与自动化
14.1 正则表达式深度解析14.1.1 什么是正则表达式?——一个生动的比喻想象你是一个图书管理员,面对一个藏有百万本书的巨大书库。如果有人问你"找出所有以’张’开头、以’传’结尾的书名",你怎么找?一本一本地翻?那得翻到天荒地老。正则表达式(Regular Expression,简称regex)就是一把魔法筛子。 你只要告诉它筛选规则,它就能在一秒钟内从百万行文本中捞出所有符合条件的内容。它就像一个超级聪明的"文本侦探",能识别出各种复杂模式的文字。打个比方:正则表达式由普通字符和**元字符(特殊字
2026-08-03 01:43:21
231
原创 第十三章 Linux安全与防火墙
欢迎来到Linux学习之旅的第十三站!在这一章里,我们将一起探索Linux安全的世界。想象一下,你刚刚买了一栋漂亮的新房子。房子有了,但大门没锁、窗户敞开、围墙还没建好——任何人都可以随便进出。你的Linux服务器就像这栋新房子,如果不做安全加固,它就像一个"不设防的城市",黑客可以像逛超市一样随意进出。本章我们将从最基础的安全概念讲起,逐步深入到用户管理、SSH加固、防火墙配置、SELinux/AppArmor强制访问控制、漏洞扫描、入侵检测、日志审计,最后总结安全最佳实践和应急响应流程。每一个概念都会用
2026-08-02 02:31:27
20
原创 第十二章 系统监控与性能优化
系统监控,简单来说,就是持续地观察和记录计算机系统各项资源的使用情况,以便及时发现异常、定位问题、优化性能。打个比方,系统监控就像医院里给病人接上的那台生命体征监护仪。监护仪上实时显示着心率、血压、血氧饱和度等指标,一旦某项指标超出正常范围,机器就会"滴滴滴"报警。系统监控做的事情一模一样——它实时显示 CPU 使用率、内存占用、磁盘读写速度、网络流量等指标,一旦某个资源告急,就会触发告警。再打个比方,系统监控也像汽车仪表盘。
2026-08-02 02:30:20
13
原创 第十一章 磁盘管理与存储
想象你刚买了一栋空荡荡的大仓库,仓库里什么都没有,就是一个巨大的空壳。在 Linux 的世界里,一块新买的硬盘(磁盘)就是这样一个空仓库。磁盘(Disk):就是物理上的硬盘设备,比如你电脑里的 SSD 固态硬盘或者机械硬盘 HDD。在 Linux 中,第一块硬盘通常被命名为/dev/sda,第二块叫/dev/sdb,以此类推。如果是 NVMe 固态硬盘,则叫等。/dev/sda ← 第一块 SATA/SCSI 硬盘/dev/sdb ← 第二块 SATA/SCSI 硬盘。
2026-08-01 03:14:24
142
原创 第十章 网络配置与管理
网络接口,通俗说就是电脑连网的"出入口"。每块网卡(不管是插在主板上的有线网卡,还是 Wi-Fi 模块,还是虚拟出来的软件网卡)在 Linux 里都对应一个"网络接口",有一个名字,比如eth0ens33wlan0。打个比方:网络接口就是房子上的"门"。有线网卡是一扇实体的门,Wi-Fi 是另一扇门,虚拟网卡是凭空造出来的门。数据进出电脑,都得从某扇门过。你要联网,就得先搞清楚自己有几扇门、每扇门叫什么、开没开。
2026-08-01 03:13:16
29
原创 第九章 进程管理与服务控制
先理解一个关键概念。命令开始执行终端被"占用"了——你必须等它跑完,才能输入下一条命令这种模式叫**前台(Foreground)**运行。就像你在厨房炒菜,双手都在忙,没法同时做别的事。但有些任务很耗时(比如编译大程序、下载大文件),你不想傻等着。这时候你可以让它在后台跑,自己继续干别的。这种模式叫**后台(Background)**运行。就像你把汤炖上后,火开着,你转身去切别的菜——炖汤这事在"后台"进行,你不盯着它。到目前为止,我们讲的进程都是你手动敲命令启动的——你敲一下ls,它跑一下就结束。
2026-07-31 01:07:44
14
原创 第八章 软件包管理与安装
在 Windows 下,我们安装软件通常是:去网上下载一个.exe安装包,双击运行,一路点击"下一步",最后完成安装。这种"自助式"安装有个致命问题——你需要自己找软件、自己下载、自己处理各种依赖(比如某个软件需要先装 .NET Framework 才能运行),稍不留神还会装上流氓软件。Linux 的做法完全不同。Linux 采用的是一种集中式的软件分发方式,就像手机上的"应用商店"。打个比方:Windows 装软件像是去菜市场买菜——你得自己挑、自己砍价、自己提回家、自己洗自己切;
2026-07-31 01:06:45
157
原创 第七章 Shell脚本编程
想象一下这样一个场景:你只懂中文,现在面前站着一个只懂英语的外国人。你想让他帮你搬个箱子,但你说的中文他听不懂,他说的英语你也听不懂。怎么办?这时候你需要一个"翻译官"。你对翻译官说中文"请帮我搬一下箱子",翻译官把它翻成英语"Please help me move the box",外国人听懂了,就把箱子搬走了。在Linux的世界里,你就是那个"只懂中文的人",Linux内核就是那个"只懂英语的外国人",而Shell就是你中间的翻译官。用稍微正式一点的话来说:Shell 是一个命令行解释器(Command
2026-07-30 02:53:09
540
原创 第六章 文本处理与编辑
如果你用过 Windows,那你一定知道"记事本"。在 Linux 中,vi 就相当于记事本,但它比记事本古老得多,也强大得多。vi(读作"vee-eye",不是"vi"两个字母连读)是 1976 年由 Bill Joy 编写的全屏幕文本编辑器。那个年代连鼠标都没有,所有操作都靠键盘完成,所以 vi 设计了一套独特的命令体系。vim 是 vi Improved(改进版)的缩写,由 Bram Moolenaar 在 1988 年开发。
2026-07-30 02:52:12
295
原创 第五章 用户与权限管理
这是密码最后一次修改的日期,不过它不是"年月日"格式,而是从 1970 年 1 月 1 日起经过的天数(Unix 时间戳的天数版本)。# 计算 19800 是哪一天# 或者使用 Python如果这个数字是 0,表示用户在下次登录时必须修改密码。特殊权限数值作用位置SUID4所有者执行位SGID2所属组执行位Sticky1其他用户执行位组合示例# SUID + 普通权限 755# SGID + 普通权限 755# Sticky + 普通权限 777。
2026-07-29 01:08:07
336
原创 第四章 文件与目录操作命令
让我们从一个形象的类比开始。第一种方式叫做图形界面(GUI,Graphical User Interface)。这就像你走进一家高级餐厅,服务员递给你一本精美的菜单,上面有每道菜的图片。你用手指指一下"红烧肉",服务员就懂了。Windows、macOS的桌面、Android手机的界面,都是图形界面。这种方式直观、友好,但效率有限——你得一页一页翻菜单,找到想要的东西。第二种方式叫做命令行(CLI,Command Line Interface)。
2026-07-29 01:06:58
347
原创 第三章 Linux文件系统与目录结构
亲爱的读者朋友,当你打开这一章的时候,你已经迈出了探索Linux世界非常关键的一步。如果说操作系统是一座宏伟的城市,那么文件系统就是这座城市的"道路规划图"和"建筑布局图"——它决定了数据如何存储、如何组织、如何被找到。对于零基础的你来说,本章内容可能听起来有些抽象,但请放心,我会用大量生活中的类比和比喻,带你一步步揭开Linux文件系统的神秘面纱。读完这一章,你将真正理解Linux的"五脏六腑",知道那些看起来很神秘的目录到底是什么意思,这将为你后续的学习打下最坚实的基础。在学习Linux之前,你可能每天
2026-07-28 14:22:30
521
原创 第二章 Linux安装与环境搭建
在正式安装Linux之前,我们首先要做一个重要的选择:到底是在"物理机"上安装,还是在"虚拟机"上安装?物理机,顾名思义,就是你面前那台看得见摸得着的真实电脑。它有自己的CPU、内存、硬盘、显卡等硬件设备。你现在用的Windows电脑就是一台物理机。在物理机上安装Linux,就像给你的电脑"换心脏"——要么完全替换掉Windows,要么和Windows"和平共处"(双系统)。虚拟机(Virtual Machine,简称VM)则是一个神奇的概念。
2026-07-28 13:55:32
349
原创 第一章:Linux 入门与历史
想象一下,你走进一家五星级酒店。酒店里有前台接待、客房服务、餐厅、健身房、游泳池等各种设施。作为客人,你不需要知道酒店的水电系统如何运作,也不需要知道厨房里的厨师如何准备食物——你只需要向前台提出需求,剩下的事情酒店会帮你搞定。操作系统(Operating System,简称 OS)就是计算机世界的这位"大管家"。你的电脑里有 CPU(大脑)、内存(短期记忆)、硬盘(长期记忆)、显卡(画家)、网卡(邮差)等各种硬件设备。这些硬件就像酒店里的各种设施和工作人员,它们各司其职,但需要一个统一的协调者来管理。
2026-07-27 21:26:55
153
原创 从小白到掌握 ORAM:保护隐私的“访问模式隐身术”
ORAM(Oblivious RAM,全称 Oblivious Random Access Machine,不经意随机存取存储器)是一种密码学原语,由 Goldreich 和 Ostrovsky 于 1996 年首次提出。其核心目的是隐藏程序运行时对内存/存储的访问模式。简单来说,即使攻击者能够完整观察到每一次磁盘读写的时间顺序和地址,也无法推断出真实的数据访问规律。ORAM 让每次访问看起来都像是对随机地址的随机操作,从而从根本上保护用户隐私。
2026-07-27 17:33:34
708
原创 向量数据库学习笔记:从原理到实践
这份指南面向向量数据库新手,阐释核心概念、和传统数据库的区别以及AI领域价值。讲解向量、嵌入、相似度、索引等底层原理,对比多款主流数据库特性并给出选型方案。以RAG为例拆解全流程步骤,附上Chroma实操代码。总结文本分块、模型选型、索引调优、混合搜索、部署运维、效果评估等落地经验,为新手搭建优质向量检索系统提供完整参考。
2026-07-26 06:16:42
485
原创 XD C语言程序设计大作业:5道编程题解析
本文分享了西电C语言课程的5个大作业题目及其实现方案:1)文件复制程序,处理命令行参数和文件读写;2)学生成绩排序系统,使用结构体和排序算法;3)字符串压缩算法,处理连续字符统计;4)堆栈模拟实现,支持基本堆栈操作;5)通讯录管理系统,涵盖增删改查和文件存储功能。每个题目都包含问题分析、核心知识点、设计思路和代码框架,重点展示了模块化设计和异常处理技巧。这些作业涵盖了C语言的文件操作、数据结构、字符串处理等核心内容,适合作为编程学习参考。
2025-06-23 16:57:28
759
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅