自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 从入门到精通:运算符、内置函数、推导式与函数编程

本文系统讲解Python四大核心语法模块:1)序列拼接运算符+/*的使用规则与数据类型限制;2)range()、enumerate()等高频内置函数的实战应用;3)列表/集合/字典三大推导式的语法模板与典型场景;4)函数编程从基础定义到嵌套调用、高阶传参的完整体系。通过20+代码案例演示,帮助新手快速掌握Python简洁编程范式,提升代码复用性和执行效率。内容涵盖语法要点、避坑指南及性能优化技巧,适合系统学习与日常查阅。

2026-04-02 11:25:07 295

原创 从入门到精通:列表、元组、字典

本文全面介绍了Python中三种核心数据结构:列表(List)、元组(Tuple)和字典(Dictionary)。重点讲解了列表的增删改查、遍历方式及嵌套应用;元组的不可变特性及其与列表的区别;字典的键值对操作与遍历方法。通过随机分配办公室和筛选幸运数字等实战案例,展示了这些数据结构的实际应用场景。

2026-03-10 20:24:06 351

原创 从入门到精通:玩转Python字符串

本文全面介绍Python字符串的核心操作技巧,包括字符串定义(单/双引号、三引号)、索引切片(正向/逆向索引、切片规则)和常用方法(find、replace、split)。通过实战案例(提取偶数字符、判断文件后缀、打印质数)展示字符串应用,并总结面试高频考点(字符串翻转、子串处理)和最佳实践(不可变性、f-string格式化)。全文涵盖从基础语法到实际开发的完整知识体系,帮助开发者高效处理文本操作。

2026-03-09 22:37:03 388

原创 从入门到精通:Python 循环结构全解析

本文系统讲解了Python中的while和for循环结构及其应用场景。while循环适合条件驱动的重复执行,通过15+实战案例展示了基础打印、数值计算、水仙花数查找和图形打印等典型用法。for循环则更擅长遍历可迭代对象,结合range函数可高效处理序列操作。文章还详细介绍了break/continue控制语句、循环+else特殊语法以及两种循环的选择原则,最后总结了常见避坑指南,帮助开发者掌握循环编程的核心思维和实用技巧。

2026-03-09 22:30:58 571

原创 从入门到精通:Python 条件判断

本文系统介绍了Python条件判断的完整体系,从基础的if单分支到多分支结构,再到嵌套逻辑和三元表达式。通过年龄判断、成绩分级等实用案例,详细讲解了不同条件结构的语法特点和使用场景,并提供了最佳实践建议。最后通过一个猜拳游戏综合案例,展示了条件判断在实际开发中的完整应用。文章强调编写条件代码时应注意边界校验、逻辑清晰和代码可读性,帮助读者全面掌握Python条件判断的核心用法。

2026-03-05 14:58:48 399

原创 计算机与编程语言通识:从硬件到 Python,一篇读懂编程世界

本文系统介绍了计算机基础概念和Python编程语言的发展历程与特点。首先阐述了计算机的本质是执行二进制指令的电子设备,程序是其运作的核心。随后将计算机语言划分为四代:面向机器的C语言、面向对象的C++、带自动GC的Java/Python等高级语言,以及当前面向问题的智能化编程趋势。重点讲解了Python语言的核心优势:语法简洁易读、生态丰富成熟、跨平台性强、开发效率高,并对比了Python与Java在执行方式上的差异。

2026-03-05 14:54:39 1084

原创 MySQL 多表查询从入门到精通:外键约束 + 连接查询 + 子查询(全网最易懂完整版)

MySQL多表查询是关系型数据库的核心技能。本文通过武侠和电商案例,详细讲解三种表关系(一对一、一对多、多对多)及其建表原则,重点解析外键约束的作用。实战演示了交叉连接、内连接、外连接(左/右连接)的区别与适用场景,并介绍子查询的嵌套使用方法。文章以图文结合方式,帮助读者掌握多表查询精髓,解决实际业务中的表关联问题,如数据统计、分类查询等。

2026-03-03 21:28:23 343

原创 深入浅出 MySQL 多表关系设计:一对一、一对多与多对多实战解析

本文详细讲解了MySQL中三种多表关联关系(一对多、多对多、一对一)的设计方法。一对多关系通过在"多"方表添加外键实现;多对多关系需要中间表配合两个外键建立关联;一对一关系则在任意一方添加唯一外键约束。文章通过部门-员工、学生-课程、员工-档案等实际案例,演示了建表规范、外键约束设置及关联查询操作,并总结了外键命名、数据插入顺序、查询优化等最佳实践,帮助开发者掌握多表设计的核心技巧。

2026-03-03 09:09:12 1057

原创 MySQL 单表查询从入门到精通:一篇吃透所有基础与高频考点

本文系统讲解了MySQL单表查询的核心技能,包括环境搭建、基础语法和实战案例。主要内容涵盖:1.商品表构建与测试数据准备;2.完整查询语法框架和执行顺序;3.基础查询、条件筛选、排序、聚合统计;4.分组查询与分组后过滤;5.分页查询公式与实现;6.去重查询应用。通过商品表案例,详细演示了从简单查询到复杂统计分析的完整流程,帮助开发者掌握SQL单表查询的各类场景应用,提升数据库操作能力。

2026-03-02 21:34:41 848

原创 MySQL 核心进阶:DML 语句深度解析与单表约束全攻略

本文系统讲解了MySQL中DML语句(增删改操作)和单表约束的使用方法。DML部分详细介绍了INSERT、UPDATE、DELETE三种操作的基础语法、避坑要点和进阶技巧,特别强调WHERE条件的重要性。约束部分解析了主键、非空、唯一、默认四种约束的定义与验证方式。文章还提供了数据表备份技巧和常见问题解决方案,帮助开发者掌握数据操作的核心要点,规避常见错误,确保数据完整性和操作安全性。

2026-03-02 10:01:07 956

原创 一文吃透 MySQL DDL 操作:数据库、数据表、字段全解析

本文详细解析了MySQL中DDL(数据定义语言)的核心操作,涵盖数据库、数据表和字段三个层级。主要内容包括:数据库级别的创建、查看、修改和删除操作,强调字符集设置和安全创建;数据表级别的结构定义,重点讲解字段类型、约束条件及表结构查看;字段级别的新增、修改和删除操作,区分modify与change的差异。文章特别强调了DDL操作的不可逆性、字符集一致性和约束合理性等注意事项,为MySQL初学者提供了全面的操作指南和实用建议,帮助开发者安全高效地进行数据库结构管理。

2026-03-01 22:42:19 1113

原创 MySQL入门零基础教程:从环境搭建到SQL基础,新手一看就会

从核心概念到基础操作 本文为编程新手提供MySQL数据库的入门指导。首先介绍数据库核心概念,包括数据库与DBMS的区别、常见数据库分类,重点讲解关系型数据库的特点。详细说明MySQL环境搭建步骤和登录退出操作,推荐使用DataGrip图形化工具简化操作。最后讲解SQL语句基础,包括四大分类(DDL、DML、DQL、DCL)、通用语法规则和常用数据类型。文章内容由浅入深,涵盖MySQL从安装到基础操作的全流程,适合零基础学习者快速入门数据库开发。

2026-02-28 22:25:58 804

原创 彻底搞懂 Linux 静态库与动态库:从原理、实战到避坑全指南

本文深入解析Linux开发中的静态库(.a)与动态库(.so)的核心差异与使用场景。静态库在编译期将代码完整复制到可执行文件中,使程序独立运行但体积较大;动态库在运行时加载,支持多程序共享内存中的同一份代码,但需解决运行环境依赖问题。文章通过实战演示了两种库的制作流程:静态库使用ar命令归档目标文件,动态库通过gcc的-fPIC和-shared参数生成。重点讲解了动态库运行时路径配置的三种解决方案,包括环境变量设置、编译嵌入路径和系统目录部署。

2026-02-21 22:53:08 1157

原创 深入理解 Linux 文件系统:元数据、inode 与 block 核心原理

本文深入解析Linux文件系统的底层设计。首先介绍文件元数据的7个核心属性,包括权限、链接数、所有者等。重点剖析inode结构,它是文件的唯一标识,存储除文件名外的所有元数据。文件内容实际存储在block中,block是最小存储单元。文章详细阐述了文件名、inode和block之间的关联关系:目录保存文件名到inode的映射,inode指向数据block。最后解释了硬链接和软链接的本质区别。通过本文可以全面理解Linux文件系统的存储机制和工作原理。

2026-02-14 22:55:22 1273 1

原创 光学算法实战:深度解析镜片厚度对前后表面折射/反射的影响(纯Python实现)

本文提出了一种基于Python的光学反射/折射模拟方法,通过Numpy和Matplotlib实现了镜片前后表面反射的轻量级模拟。重点分析了镜片厚度对后表面反射"鬼影"现象的影响:厚度越大,鬼影位移越明显(与厚度线性相关),主影像强度越低。模拟采用标准测试图案,对比展示了前表面反射(无位移、低衰减)与不同厚度后表面反射(产生错位鬼影)的效果差异。结果表明,极薄镜片(≤2像素)鬼影可忽略,而厚镜片(≥8像素)会产生明显双重影像。该模拟方法为光学系统设计提供了直观的厚度选择参考。

2026-02-07 23:15:54 1168

原创 系统文件 I/O 入门:fd、系统调用与重定向

文章系统介绍了Linux文件I/O操作的核心概念。首先阐述了文件访问的基本原理,包括进程与文件的关系及文件描述符(fd)的概念。重点分析了系统调用与库函数的区别,详细说明了open、close、read、write等关键系统调用的用法。深入讲解了文件描述符的分配原则和标准输入/输出/错误(0/1/2)的作用机制。最后全面解析了重定向的底层实现原理,包括输入/输出/错误重定向的实现方式及其应用场景,揭示了dup2系统调用在重定向中的核心作用。

2026-02-06 22:22:20 976

原创 进程控制:操作系统核心解析

本文介绍了Linux进程管理的核心机制,包括进程创建、终止和等待。重点解析了fork()函数的实现原理和写时复制技术,详细说明了进程退出的三种场景及exit()、_exit()等退出方法。在进程等待部分,深入分析了wait()和waitpid()系统调用的使用方式,通过多个代码实例演示了阻塞/非阻塞等待的实现方法,包括状态码解析、子进程资源回收等关键操作。文章还阐述了进程等待的必要性,包括避免僵尸进程、获取子进程运行结果和控制执行顺序等重要功能,为Linux系统编程提供了实用的进程管理参考方案。

2026-02-03 22:24:35 1104 2

原创 从零实现一个简易 Shell:理解 Linux 进程与命令执行

本文实现了一个简易Shell程序,具备Linux终端核心功能。该Shell能显示标准提示符([用户名@主机名工作目录]#),读取并解析用户输入命令,通过fork创建子进程执行外部命令(如ls、pwd等),并等待子进程完成。核心模块包括:提示符生成(获取环境变量)、命令读取与解析(使用strtok分割参数)、命令执行(fork+execvp组合)。程序采用C++编写,完整复现了Shell的工作流程:循环执行"提示-读取-解析-执行"的经典链路。

2026-02-02 13:55:51 1128 1

原创 程序地址空间全解析:虚拟地址与内存布局

C语言程序的地址空间分为7个核心区域:代码段(只读指令)、数据段(初始化全局变量)、BSS段(未初始化变量)、堆(动态内存)、内存映射区、栈(局部变量)和环境/参数区。代码段存储可执行指令,数据段和BSS段存放全局变量,堆由程序员手动管理,栈自动管理函数调用。验证实验显示地址从低到高依次为代码段、数据段/BSS段、堆、栈和环境表。此外,父子进程中的相同虚拟地址可能指向不同物理内存,操作系统通过写时复制机制实现进程隔离。

2026-02-01 22:52:39 864 2

原创 深入理解 Linux 环境变量:原理、配置与应用

环境变量是操作系统中存储配置信息的全局变量,具有继承性和持久性特点。常见环境变量包括PATH(命令搜索路径)、HOME(用户主目录)和SHELL(当前Shell)。通过echo、export等命令可查看或修改环境变量。PATH变量决定了命令能否直接执行,可通过export扩展PATH添加新路径。程序运行时通过环境表(char*envp[])获取环境变量,C/C++程序可通过main函数参数或environ全局变量访问,也可使用getenv()系统调用获取特定变量值。理解环境变量对程序运行和系统配置至关重要。

2026-01-31 22:15:05 874 1

原创 Linux进程概念

冯诺依曼体系结构是现代计算机的基础框架,其核心在于存储程序概念,将指令和数据统一存储在内存中。该体系由运算器、控制器、存储器、输入和输出设备五大部件组成,通过"取指-译码-执行"循环工作。操作系统作为系统软件,管理硬件资源并为用户提供接口。进程是程序的执行实例,Linux系统包含7种进程状态(R/S/D/T/t/Z/X),通过task_struct数据结构管理。进程优先级由PRI和nice值决定,可通过top命令调整nice值来改变调度顺序。

2026-01-30 23:03:06 1223

原创 Make和Makefile的使用

如果你是编程新手,一定遇到过这样的烦恼:每次修改代码后,都要手动输入一长串编译命令。如果项目有几十个文件,输入这些命令不仅麻烦,还容易出错。Make工具就是为了解决这个问题而生的!:是一个自动化构建工具:是告诉Make该做什么的"说明书"

2026-01-20 13:50:46 691

原创 使用vim实现进度条(初级)

执行程序后,屏幕上会出现一个动态更新的进度条。该进度条从0%开始,随着时间递增而逐步填充,直到完全填满,最终效果如图所示。

2026-01-17 21:34:12 274

原创 一文快速读懂Linux:从学生习作到统治数字世界的开源传奇

如果你是一名开发者、运维工程师,或是对计算机底层技术感兴趣的爱好者,一定绕不开“Linux”这个名字。它潜伏在我们身边的每一个角落:手机里的Android系统基于它开发,阿里云、AWS等云计算平台的服务器几乎全是它的天下,甚至纽约证券交易所的核心交易系统、全球超算TOP500中的绝大多数,都在依靠它稳定运行。但你可能不知道,这个统治着数字世界后台的操作系统,最初只是一个芬兰大学生的“业余爱好项目”。今天,我们就来聊聊Linux的前世今生,看看它如何从一个简单的内核原型,成长为影响全球科技产业的开源巨头。

2026-01-12 20:20:01 1116

原创 [Linux进程控制]进程创建|进程终止|进程等待

wait和waitpid,都有一个status参数,该参数是一个输出型参数,由操作系统填充,传递NULL,表示不关心子进程的退出状态信息,操作系统会根据该参数,将子进程的退出信息反馈给父进程。通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。执行用户通过 atexit或on_exit定义的清理函数。status不能简单的当作整形来看待,可以当作位图来看待。关闭所有打开的流,所有的缓存数据均被写入。之后,父子两个执行流分别执行。代码运行完毕,结果不正确。

2024-10-29 19:02:55 672 2

原创 [Linux进程概念]进程地址空间

{ //child,子进程肯定先跑完,也就是子进程先修改,完成之后,父进程再读取g_val=100;sleep(1);return 0;运行结果:这里可以看到,父子进程变量数值不一样,但是输出地址却是一样的,说明该地址绝对不是物理地址,在Linux地址下,这种地址叫虚拟地址。

2024-10-24 18:08:18 1063

原创 [Linux进程概念]命令行参数|环境变量

命令行参数(Command-Line Arguments)是指在命令行界面(CLI,Command-Line Interface)中运行程序时,紧随程序名称之后传递给程序的额外信息或指令。这些参数允许用户自定义程序的行为,而无需修改程序代码。命令行参数通常用于指定输入文件、输出文件、配置选项、运行模式等。环境变量(Environment Variables)是在操作系统中用来指定操作系统运行环境的一些参数。这些参数定义了程序运行时的各种配置,比如文件路径、系统资源位置、程序行为等。

2024-10-22 19:43:59 983

原创 [Linux进程概念]进程切换|进程调度

进程切换(Process Switch)是操作系统内核的一项基本功能,它允许操作系统在多个并发执行的进程之间高效地分配处理器时间。进程切换涉及保存当前正在运行的进程的状态,并恢复另一个进程的状态,以便后者可以在处理器上继续执行。

2024-10-17 16:42:01 1168

原创 [Linux进程概念]进程状态|进程优先级

进程状态是指进程在执行过程中的不同情况或阶段,这些状态反映了进程的生命周期和当前的活动情况。进程状态可以随着进程的执行和外界条件的变化而转换。

2024-10-11 19:27:35 1141

原创 [Linux进程概念]PCB进程初识

进程是程序的一个执行实例,是操作系统对程序执行的基本单位进程是程序的一次执行过程进程是一个程序及其数据在处理机上顺序执行时所发生的活动进程是系统进行资源分配和调度的一个独立单位进程控制块(PCB)是操作系统为了管理和维护进程而设置的一个专门的数据结构。作用:PCB使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,或与其他进程并发执行的进程。通过PCB,操作系统可以跟踪和控制每个进程的运行,并在需要时恢复进程的执行。

2024-10-08 19:43:51 1204

原创 [Linux进程概念]冯诺依曼体系|操作系统

操作系统由内核(进程管理、内存管理、文件管理、驱动管理)和其他程序(函数库、shell)构成通常情况下,操作系统内核是可以直接访问硬件资源的。内核通过特定的系统调用接口(System Call Interface, SCI)或直接硬件访问指令来管理CPU、内存、I/O设备等用户空间的应用程序无法直接访问内核空间的数据和函数,必须通过系统调用接口来请求内核服务。

2024-10-06 16:40:30 1172

原创 分支管理

合并完成后, dev 分⽀对于我们来说就没⽤了, 那么dev分⽀就可以被删除掉,注意如果当前正处于某分⽀下,就不能删除当前分⽀。在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题。为了演⽰这问题,创建⼀个新的分⽀ dev1。发现file⽂件有冲突后,可以直接查看⽂件内容,要说的是 Git 会⽤ <<<<<<<,=======,此时需要切换至mater分支,使用git merge [分支]指令,合并dev和master分支。创建新的分⽀后,Git 新建了⼀个指针叫dev,

2024-09-06 18:20:48 712 2

原创 Git初识

当执行commit命令之后,暂存区的内容被提交了,暂存区的文件依然存在,当更改工作区后,工作区的内容不会自动更新至暂存区,需要手动的git add才能实现将修改添加至暂存区,使用git status指令就可以查看修改后的文件是否完成添加和提交。版本库:隐藏目录.git文件,版本库里的所有文件都可以被Git管理起来,每个文件的修改、删除Git都能跟踪,以便任何时刻都可以追踪历史,或者在某个时刻可以“还原”时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。

2024-09-03 16:31:04 1564 2

原创 红黑树

红黑树结构:首先定义四个重要的红黑树节点:g(grandfather)、p(parent)、u(uncle)、c(current)​​​​​​​红黑树的源码:

2024-09-01 10:15:23 525 1

原创 AVL树

二叉搜索树默认是当前节点的左节点的数值小于当前节点的数值,当前节点的右节点的数值大于当前节点的数值,如果要插入的值小于当前节点的数值,就往左走,大于当前节点的数值,就往右走。又因为AVL树是没有重复数值的,所以当出现要插入的数值跟树的某个节点的数值相同时,则退出函数,不进行插入操作。如果pParent的平衡因子为0,说明插入之前pParent的平衡因子为正负1,插入后被调整。如果pParent的平衡因子为正负2,则pParent的平衡因子违反平衡树的性质,需要对其进。节点的平衡因子是否计算正确。

2024-08-25 22:53:01 727 3

原创 二叉搜索树

a. 从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。二叉搜索树:一棵二叉树,可以为空;b. 树不空,按二叉搜索树性质查找插入位置,插入新节点。b. 最多查找高度次,走到到空,还没找到,这个值不存在。a. 树为空,则直接新增节点,赋值给root指针。若它的左子树不为空,则左子树的值小于根结点。若它的右子树不为空,则右子树的值大于根结点。它的左右子树也分别是搜索二叉树。

2024-08-06 11:52:47 497 8

原创 Linux权限理解

将使用者的命令解释给核心处理将核心处理的结果翻译给使用者。

2024-07-13 21:03:15 1180 14

原创 多态

多态是在不同继承关系的类对象,去调用同一函数,产生不同行为必须通过基类的指针或者对象调用虚函数被调用的函数必须是虚函数,切派生类必须对基类的虚函数进行重写virtual只能修饰类中非静态成员函数。

2024-07-11 19:36:42 1272 16

原创 继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public:protected:protected:基类private成员在派生类中无论以什么方式继承都是不可见的。

2024-07-10 22:42:44 899 15

原创 二叉树的链式存储

二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。链式结构又分为二叉链和三叉链,当前我们学习中一般都是二叉链,后面课程学到高阶数据结构如红黑树等会用到三叉链。}BN;

2024-07-07 19:06:54 641 9

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除