【Linux操作系统】简学深悟启示录:Linux环境基础开发工具使用

Linux操作系统基础(完结) 一、Linux操作系统概述 二、Linux操作系统安装 三、Linux文件系统及文件基础 四、Linux操作系统命令使用基础 五、Linux应用程序的安装与卸载基础 五、用户及进程 六、相关信息查询 七、网络配置 八、Linux应用程序的安装与卸载基础 九、vim 阅读详情

本文将介绍关于 Linux 系统常用的工具包,便于后续的代码操作

1.软件包管理器yum

对于 Linux 系统来说,下载软件是必不可少的,就像平常使用手机下载软件一样满足我们的日常需求,一般 Linux 有三种下载方式:

  • 源代码下载: 从官网下载代码自行配置,虽说可以充分利用代码自行调配,但是上手使用难度太高
  • rpm下载: 使用命令获取文件安装,但是会涉及该安装包依赖于其他安装包等问题,需要手动解决,过程繁琐
  • yum下载: 也是使用命令获取文件安装,能够自动分析软件包的依赖关系,并从 yum 源中下载并安装所需的依赖包,大大简化了软件安装过程,虽说安装的版本可能不是最新的,但是简单易上手,通常来说是够用的

因此我们主要使用 yum

🤔那么yum是如何下载的呢?

其实也没那么复杂,就拿手机来举例,跟 Linux 系统一样都叫做客户端,yum 就相当于是手机里的应用市场,是一个软件的仓库地址,告诉 yum 去哪里找软件,然后通过网络在服务器里找到对应的软件源来下载软件包,软件源又分为官方和第三方的


通常我们通过 yum list 查看可安装软件列表,或者 yum search 软件名 进行软件搜索

以rz、sz命令的下载为例

[zzh_test@hcss-ecs-6aa4 ~]$ yum list | grep rzsz
lrzsz.x86_64                             0.12.20-36.el7                @base    

我们查询到该命令的安装包为 lrzsz

yum install -y 软件包名

下载的命令通常如上所示,-y 表示省略输入是否同意安装的步骤

在这里插入图片描述

对于该红框的信息可以解释为:

软件包名称: 主版本号,次版本号,源程序发行号-软件包的发行号,主机平台,cpu架构

x86_64 后缀表示 64 位系统的安装包,i686 后缀表示 32 位系统安装包,选择包时要和系统匹配,el7 表示操作系统发行版的版本,el7 表示的是 centos7/redhat7,el6 表示 centos6/redhat6,最后一列,base 表示的是 “软件源” 的名称,类似于 “小米应用商店”,“华为应用商店” 这样的概念

顺便一提,rz 命令用于从 Windows 上传文件到 Linux,sz 命令用于从 Linux 下载文件到 Windows,输入命令后会弹出文件选择对话框,选择要上传的文件即可,在本地直接拖动文件到窗口也是一样的

yum remove 软件包名

想要删除可以输入以上命令

🔥值得注意的是:

  • 安装软件时由于需要向系统目录中写入内容,一般需要 sudo 或者切到 root 账户下才能完成
  • yum 安装软件只能一个装完了再装另一个,正在 yum 安装一个软件的过程中, 如果再尝试用 yum 安装另外一个软件,yum 会报错

2.Linux编辑器vim

在这里插入图片描述

vim 文件名 进入编辑界面,可以理解为记事本,初始状态下是命令模式

2.1 三模式切换

在这里插入图片描述
通常最常用的三个模式:

  • 命令模式: i 切换到插入模式,:(shift + ;) 切换到底行模式
  • 插入模式: esc 回到命令模式
  • 底行模式: esc 回到命令模式

命令模式就是使用命令控制屏幕光标的移动,字符、字或行的删除,一般不做文本输入;插入模式就是允许编辑的模式,是我们后面用的最频繁的编辑模式;底行模式用于文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作

2.2 正常模式

正常模式就是命令模式,通常使用命令进行一些简单的操作

移动:

  • gg:定位光标到开头行第一位
  • G(shift + g):定位到结尾行第一位
  • n + shift + g :定位到第 n 行文本第一位
  • $(shift + 4):定位到当前行的文本最后一位
  • ^(shift + 6):定位到当前行的文本第一位
  • w、b:光标按照单词进行行内、跨行移动
  • h、j、k、l:左下上右移动光标

复制粘贴:

  • (n)yy:复制光标所在(n)行
  • (n)dd:删除(n)行
  • (n)p:粘贴 n
  • u:撤回
  • ctrl + r:撤回之前的撤回

转换:

  • ~:大小写转换
  • (n)r:对光标字符之后的所有字符进行批量化替换
  • R(shirf + r):进入替换模式,对内容整体替换
  • (n)x:对光标字符之后的字符进行删除

2.3 底行模式

在使用底行模式之前,请记住先按 esc 键确定您已经处于正常模式,再按 : 冒号即可进入底行模式

跳到文件中的某一行:

  • #:# 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15,再回车,就会跳到文章的第15行

查找字符:

  • / + 关键字:先按 / 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往后寻找到您要的关键字为止,从当前光标位置向下(往后) 查找

  • ? + 关键字:先按 ? 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往前寻找到您要的关键字为止,从当前光标位置向上(往前) 查找

保存文件:

  • w:在冒号输入字母 w 就可以将文件保存起来离开 vim
  • q:按 q 就是退出,如果无法离开 vim,可以在 q 后跟一个 ! 强制离开 vim
  • wq:一般建议离开时,搭配 w 一起使用,这样在退出的时候还可以保存文件

2.4 可视化模式

可视化模式一般用于批量操作,比如批量加注释:

批量注释:

在正常模式下按 ctrl + v ,进入 V-BLOCK 模式,按 J 键 或 K 键选择要注释的内容,J 向上 K 向下,按住 shift + i 进入插入模式,输入 //,点击 esc 键,完成注释

批量取消注释:

在正常模式下按 ctrl + v ,进入 V-BLOCK 模式,然后按两下 L 键(右移两格),选中注释的符号,按 J 键或 K 键选择要取消注释的内容,按 d 键完成批量取消注释

2.5 vim 配置

vim 可以通过在自己用户下添加 .vimrc 的文件进行功能、风格等配置,为了能够像在VS
、IDEA中那样使用方便,可以自行上网进行配置搜索,这里我推荐一个配置项目

传送门:VimForCpp

3.Linux编译器gcc/g++

gcc/g++ [选项] 要编译的文件 [选项] [目标文件]

gcc/g++ 是一款语言编译器,相当于 Linux 系统的 VS,gcc 专门编译 C 语言,g++ 既可以编译 C 语言,也可以编译 C++

生成可执行文件直接 ./目标文件 执行即可

3.1 预处理

[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h
[zzh_test@hcss-ecs-6aa4 progressbar]$ gcc -E processBar.c -o processBar.i
[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h  processBar.i

预处理功能主要包括宏定义,文件包含,条件编译,去注释等

-E 表示让 gcc 在预处理结束后停止编译过程,-o 后面一定是接目标文件,源头文件放哪儿无所谓

3.2 编译

[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h  processBar.i
[zzh_test@hcss-ecs-6aa4 progressbar]$ gcc -S processBar.i -o processBar.s
[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar  processBar.c  processBar.h  processBar.i  processBar.s

编译主要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后, gcc 把代码翻译成汇编语言

-S 表示让 gcc 在编译结束后停止编译过程,生成汇编代码

3.3 汇编

[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar  processBar.c  processBar.h  processBar.i  processBar.s
[zzh_test@hcss-ecs-6aa4 progressbar]$ gcc -c processBar.s -o processBar.o
[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h  processBar.i  processBar.o  processBar.s

汇编主要生成机器可识别代码

-c 表示让 gcc 在汇编结束后停止编译过程,生成二进制代码

3.4 连接

[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h  processBar.i  processBar.o  processBar.s
[zzh_test@hcss-ecs-6aa4 progressbar]$ gcc processBar.o -o processBar
[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar  processBar.c  processBar.h  processBar.i  processBar.o  processBar.s

连接表示连接函数库生成可执行文件

3.5 函数库

函数库分为两种类型的库:

静态库:

静态库就是将需要展开的函数在函数定义的地方直接展开,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了,其后缀名一般为 .a

动态库:

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。所以动态库也叫共享库,动态库一般后缀名为 .so,如前面所述的 libc.so.6 就是动态库,gcc 在编译时默认使用动态库

4.Linux自动化构建工具Makefile

make 是一条命令,makefile 是一个文件,两个搭配使用,完成项目自动化构建

通常我们需要不断的进行 gcc / g++ 编译、rm 删除执行文件等等指令,如果有大量文件需要多次重复以上操作的话,那么每次都手动输入一大长串必然是麻烦的,因此就需要编写 Makefile( makefile 也行,大小写无所谓)文件自动化使用指令

在这里插入图片描述

如图所示可解释为:

processBar 可执行文件依赖于 processBar.c、main.c,$^ 表示 : 后面的文件,$@ 表示 : 前面的文件,直接写文件名也可以,不过用符号比较方便就是了,下面的 clean 同理,: 后面是空的表示不依赖于任何文件就可以执行

[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h

[zzh_test@hcss-ecs-6aa4 progressbar]$ make processBar
gcc processBar.c main.c -o processBar 
[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar  processBar.c  processBar.h

[zzh_test@hcss-ecs-6aa4 progressbar]$ make clean
rm -rf processBar
[zzh_test@hcss-ecs-6aa4 progressbar]$ ls
main.c  makefile  processBar.c  processBar.h

通常使用 make+冒号前的依赖名 的方式执行自动化,如果只输入 make 指令的话默认执行第一条自动化指令,被依赖的文件总会更新,所以要多次执行 make processBar 的指令

make 的默认行为是:基于时间戳判断更新,检查目标是否是一个已存在的文件,如果文件存在且没有更新(即依赖项未变化),则跳过该目标的命令。像 clean 这种没有具体依赖目标的叫做 伪目标

但有些场景下,目标并不是实际文件(比如常见的 clean、all、install 等),若目录中恰好有与这些目标同名的文件(比如名为 clean 的文件),make 会误将其当作 “已完成的目标文件”,认为无需执行,从而跳过本应运行的命令(如 rm -f *.o),导致清理、构建等预期操作失败

因此需要用 .PHONY 声明伪目标 —— 强制 make 忽略同名文件,始终执行命令

🔥值得注意的是:

hello:hello.o 
gcc hello.o -o hello 

hello.o:hello.s 
gcc -c hello.s -o hello.o 

hello.s:hello.i 
gcc -S hello.i -o hello.s 

hello.i:hello.c 
gcc -E hello.c -o hello.i

make 会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件,在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么 make 就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make 根本不理,make 只管文件的依赖性,即如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起,我就不工作啦

5.Linux调试器gdb

Linux 系统中,程序的发布默认是 release 版本,无法直接发布,所以调试的前提是处于 debug 版本,那么在 gcc / g++ 编译时要加上 -g 使文件以 debug 版本输出

gdb 是用来调试可执行文件或者目标文件的,所以用 gdb 目标文件 指令启动调试器

以下是 gdb 代码调试时的指令

在这里插入图片描述
一般我们还是在 VS 里调试比较方便,因此 gdb 的调试就不过多叙述


希望读者们多多三连支持

小编会继续更新

你们的鼓励就是我前进的动力!

请添加图片描述

别再瞎试了!用Python+正交设计,5分钟搞定你的多因素实验方案 本文介绍了如何利用Python和正交设计高效优化多因素实验方案。正交设计通过精心设计的正交表,用最少的实验次数覆盖所有因素的水平组合,显著提升实验效率。文章详细讲解了正交设计的核心优势、Python实现工具链、实验实施与数据分析方法,以及高级技巧与常见问题解决方案,帮助读者快速掌握这一强大的实验优化技术。 阅读详情

相关推荐

CKAD-CN 考试知识点分享(12) Secret - 1

步骤操作完成1提取 Deployment 中的硬编码 Secret 值✅2创建名为postgres的 Secret✅3修改 Deployment 使用引用 Secret✅4验证新 Pod 正常运行✅❌未删除原 Deployment✅(遵守要求)✅任务完成。敏感信息已从环境变量移出,安全地存储在 Kubernetes Secret 中。

轻的博客 632

【Linux操作系统】简学深悟启示录:进程控制

本文主要介绍了Linux进程管理的三个关键方面:进程终止、进程等待及相关系统调用。首先补充了进程创建时的写时拷贝机制,当子进程修改共享数据时系统会触发只读保护并分配新空间。其次详细讲解了进程退出的三种情况及查看方法,对比了exit和_exit函数的区别。重点阐述了进程等待的必要性,通过wait和waitpid函数回收子进程资源并获取退出状态,其中waitpid可解析子进程退出码和信号信息。文章通过代码示例展示了如何正确使用这些系统调用来处理进程终止和等待,避免僵尸进程的产生。

Zero_VPN的博客 2432

手把手教你用CODESYS将旧笔记本改造成软PLC(含证书配置避坑指南)

本文提供了一份详尽的指南,教你如何利用CODESYS平台将闲置旧笔记本改造为一台功能完整的软PLC。内容涵盖从硬件评估、系统实时性优化、软件安装与驱动配置,到关键的证书授权管理避坑指南,旨在帮助自动化工程师和爱好者低成本搭建稳定可靠的学习与开发平台。

weixin_29190573的博客 279

【Linux操作系统】简学深悟启示录:Linux基本指令

本篇将开启Linux操作系统的全面学习,默认使用的是CentOS操作系统,使用Xshell进行远程登录服务器进行操作测试

Zero_VPN的博客 1777

飞塔防火墙之Link Monitor

Link Monitor类似于SLA,飞塔防火墙线路质量探测的一个功能。

weixin_41903258的博客 2408

基于STM32F103与AD8232的便携式心电监测系统设计与实现

本文详细介绍基于STM32F103微控制器与AD8232心电传感器模块的便携式心电监测系统设计与实现。系统通过ADC采集心电信号,结合软件滤波算法处理基线漂移和工频干扰,并利用OLED屏幕实时显示波形,具有低成本、高实用性的特点,适用于健康监测与嵌入式学习。

m5n6o7的博客 737

【Linux操作系统】简学深悟启示录:Linux权限

Linux 权限是系统通过对文件 / 目录设置读(r)、写(w)、执行(x)权限,分别管控文件所有者、所属组及其他用户对其的访问操作,以保障系统安全

Zero_VPN的博客 2440

企业级智能知识库问答AI助手(大模型+Python)

智能知识问答库AI助手

usa_washington的博客 1655

【Linux操作系统】简学深悟启示录:环境变量&&进程地址

本文主要介绍了Linux环境变量和进程地址空间的概念。环境变量包括PATH、HOME等系统预定义变量,可通过env命令查看或getenv()函数获取,具有全局性,子进程会继承父进程的环境变量。进程地址空间是虚拟地址而非物理地址,通过页表映射到物理内存,实现进程隔离和保护。地址空间包含代码区、数据区等划分,由mm_struct结构体管理。进程地址空间和页表的存在使进程管理和内存管理解耦,确保安全访问和资源隔离。

Zero_VPN的博客 2937

数字IC后端实战:如何用ICC搞定复杂模块的floorplan与powerplan(附避坑指南)

本文深入解析数字IC后端设计中复杂模块的floorplan与powerplan实战技巧,重点介绍多边形模块边界处理、MTCMOS电源网络优化及存储器摆放陷阱规避。通过Synopsys ICC工具的具体操作示例和项目实战经验,帮助工程师高效解决设计难题,提升芯片性能与可靠性。

weixin_29213525的博客 351

【FISCO BCOS】二十、多机部署区块链

实际开发中,为了满足高可用性和高容错性的需求,往往会采用多级部署区块链的方式,今天介绍一下FISCO BCOS的多机部署流程。

naihe_fish的博客 3654

【Linux操作系统】简学深悟启示录:线程概念与控制

本文介绍了线程的基本概念和控制方法。线程作为轻量级进程,共享进程资源但拥有独立执行流,是操作系统的调度基本单位。文章详细讲解了线程与进程的区别,线程的创建、终止和等待操作,包括使用pthread_create创建线程、pthread_exit终止线程以及pthread_join等待线程回收资源。同时介绍了线程特有的ID、栈和寄存器等私有数据,以及共享的文件描述符等资源。通过对比用户态TID和内核态LWP,阐明了线程在用户态和内核态的不同表现形式。最后指出线程退出时返回值的内存管理注意事项,强调线程控制的关键

Zero_VPN的博客 2万+

RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

Systemcall名屋 1686

【Linux操作系统】简学深悟启示录:线程同步与互斥

本文展示了一个多线程抢票系统的实现,通过模拟5个线程并发访问共享变量tickets=1000,揭示了多线程环境下数据竞争的问题。文章详细分析了线程互斥的概念,包括临界资源、临界区和互斥锁的使用方法。通过引入pthread_mutex_t互斥锁机制,解决了数据混乱问题,保证了线程安全。同时探讨了互斥锁的原理,解释了CPU通过swap/exchange指令实现原子操作的过程,以及单核CPU环境下线程通过上下文切换实现逻辑隔离的机制。最后指出互斥锁虽然解决了数据竞争,但可能引发线程饥饿问题,需要合理设计锁的使用策

Zero_VPN的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux环境基础开发工具使用

Linux环境基础开发工具使用一级目录二级目录 Linux下安装软件的方式: 源代码安装 rmp包安装 yum命令安装 yum: 帮我们查找并下载软件 帮我们安装 帮我们解决依赖关系 yum是一条命令 一级目录 二级目录 ...

AI_ELF的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Linux操作系统】基础开发工具

本文介绍了Linux开发中的常用工具链,包括软件包管理(yum/apt)、文本编辑器(Vim)、编译器(gcc/g++)、构建工具(make/Makefile)、进度条实现、版本控制(Git)和调试器(gdb/cgdb)。重点讲解了Vim的多模式编辑、gcc的编译流程与动静态链接区别、Makefile的自动化构建原理,以及Git的版本控制三板斧操作。这些工具构成了Linux环境下高效开发的完整工作流,帮助开发者完成从代码编写、编译构建到版本管理的全流程工作。

2401_82610555的博客 4208

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

从入门到精通:详解Linux环境基础开发工具的使用

从入门到精通:详解Linux环境基础开发工具的使用

m0_73150338的博客 2131

【Linux】环境基础开发工具的使用(一)

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。

m0_64826370的博客 1758

Linux(一)操作系统基础知识

Linux操作系统基础知识 1、Linux简介与程序开发环境 1.1 什么是Linux? Linux是一个可以自由发布的类UNIX内核实现,它是一个操作系统的底层核心。Linux是由芬兰赫尔辛基大学的Linus开发,期间得到了网上广大UNIX程序员的帮助。它最初是受其教授的Minix(一个小型的类UNIX系统)启发而开发的程序,纯属个人的爱好,但是后来它自身逐步发展成为一个完整的系统。 要理解什么是Linux,首先要了解在Linux之前诞生的系统和应用程序——UNIX和GNU软件。 1.1.1 什么是UNI

潭影空心 8万+

Linux环境基础开发工具的使用

最后一列,base表示的是“软件源”的名称,类似于“小米应用商店”,“华为应用商店”这样的概念。​ 从上图可以发现,想要得到可执行程序,我们首先要得到test.o文件,要得到test.o文件就要得到test.s文件,以此类推,只要我们写好了源代码,通过这样的依赖关系和依赖方法,最终就能得到可执行程序。​ 项目清理类似于VS下的清理解决方案,也就是将之前生成的所有文件清理掉,如果我们进行手动清理,那么在有多个文件的情况下,手动清理未免太过麻烦,此时我们可以将项目加入到Makefile文件中。

qq_55317476的博客 968

Linux 环境基础开发工具详解

在 Linux 中,软件包是经过预编译、打包的应用程序或工具,它类似于 Windows 系统中的安装程序。软件包可以通过包管理器进行管理,简化软件的安装、更新和卸载过程。常见的软件包后缀包括.rpm.deb等。yum(Yellow dog Updater, Modified)是 Linux 下非常常用的包管理器,主要应用于 Fedora、RedHat、CentOS 等发行版。它相当于 Linux 系统的"应用商店",用户可以通过 yum 工具轻松地获取和安装各种预编译好的软件包。yum的工作原理基于rpm。

2406_83947720的博客 2543

【Linux操作系统】探秘Linux奥秘:Linux开发工具的解密与实战

本博文深入介绍了Linux开发中常用的工具及其使用方法,涵盖了gcc编译器、GDB调试器等关键工具。文章强调了在编写代码时应注意输入模式,阐述了使用gcc编译器的命令行参数来指定编译选项的技巧,包括-Wall和-g选项的灵活运用。

朝花夕拾 9054

【Linux】环境基础开发工具使用(万字汇总)

Linux环境基础开发工具总结,方便自己用来复习

m0_60338933的博客 5364

Linux:环境基础开发工具使用

前面已经介绍了一些指令内容,本章将会继续介绍在Linux上安装软件,已经编译器的使用,代码的调试等等内容。在Linux下安装软件,一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。软件包和软件包管理器,就好比 “App” 和 “应用商店” 这样的关系。

忘忧. 1238

【Linux】Linux环境基础开发工具

三种模式正常模式插入模式底行模式我们一共有12种总模式,大家下来可以研究一下vim操作打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。

m0_74091744的博客 1236
上一篇: 零代码也能抓数据:用 Web Scraper API 快速搭建数据采集流程
下一篇: 【Linux操作系统】简学深悟启示录:进程初步
澪贰
澪贰 优质创作者: C/C++技术领域 优质创作者: C/C++技术领域
博客等级 码龄2年 1万+粉丝 222原创
评论 52
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值