Linux编程 1. vi的工作方式 三种方式:命令方式、插入方式、末行方式 命令方式:用户一进入vi就进入命令方式,在该模式中任何键入的字符都被看成vi的命令,键入后立即执行。...移动多行: :n1,n2 m k # 从n1行到n2行的文本移动到k行处,其中m是移动命令 搜索和替换: /string:向前搜索指定字符串。 搜索时忽略大小写:set ic ?...同时,由于 GCC 编译器支持多种编程语言的编译,而实际情况中我们可能只需要编译 1~2 种编程语言,因此需要对其进行必要的配置。...对于不同版本的gcc来讲,n的取值范围及其对应的优化效果可能并不完全相同,比较典型的范围是从0变化到2或3。 通常情况下,数字越大,会起到更好的优化效果,但整个编译链接的过程会变慢。...Make工具大大提高了实际项目的工作效率,几乎所有Linux下的项目编程都会涉及它。 即:通过Makefile 文件,制定编译规则,根据时间戳,判断文件是否进行过修改。
shell编程 1. shell和shell脚本 1.1 shell Shell是一种具备特殊功能的程序,它是介于使用者和UNIX/Linux操作系统之核心程序 ( kernel) 之间的一个接口。...目前几乎所有的Linux系统 都支持它,将其作为应急Shell使用。 C Shell (简称csh) :C Shell由加利福尼亚大学 伯克利分校开发。...编程风格类似于C语言,健壮性不 如Bourne Shell。 Korn Shell (简称 ksh) :与Bourne Shell向下完全兼容。...$#:传递到脚本的参数的数量; $*:以"参数1参数2… "形式保存所有参数; $@:以"参数1" “参数2” …形式保存所有参数; $?...此为缺省(默认)选项; echo命令的转义符(echotest.sh): 转义符 含义 \a 从系统喇叭发送出声音 \b 向左刪除 \c 抑制输出后面的字符并且最后不换行 \E ESCAPE键 \f 换页字符
之前面试被问到什么是模板元编程,给我问懵了……一、什么是模板元编程(TMP)模板元编程(Template Metaprogramming, TMP)是一种利用C++模板在编译期执行计算和代码生成的编程范式...学习资源书籍:《C++模板元编程》(David Vandevoorde等):TMP经典教材,涵盖Boost.MPL。...在线教程:七、总结与展望模板元编程是C++“零成本抽象”哲学的巅峰体现,通过编译期计算和类型操作,实现了性能与灵活性的完美平衡。...从C++11到C++26,语言标准持续降低TMP使用门槛,Concepts简化约束、constexpr拓展编译期能力、未评估字符串优化诊断,未来随着静态反射(C++26提案)的引入,TMP将更强大。...关注C++标准演进,拥抱Concepts、静态反射等新特性。TMP不是“黑魔法”,而是C++开发者应对高性能、泛型编程的必备工具。掌握它,你将解锁C++最深层的潜力。
Shell 编程一般指shell脚本编程,不是指开发shell自身。 Shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。...Linux的Shell种类众多,一个系统可以存在多个 shell,可以通过cat /etc/shells 命令查看系统中安装的 shell。...同时, bash 也是大多数Linux 系统默认的 Shell。 2. Shell的基本格式 使用 vi 编辑器新建一个文件hello.sh(扩展名并不影响脚本执行) #!.../hello.sh #使脚本具有执行权限 [c48k9w528e.jpg] 执行shell程序: ....Shell程序:运算符 Shell和其他编程语音一样,支持包括:算术、关系、布尔、字符串等运算符。
1、Linux入门 1.1、主机名配置 查看主机名 hostname 修改主机名 (重启后无效) hostname hadoop 修改主机名 (重启后永久生效) vi /ect/sysconfig...grep sshd 查找指定 ssh 服务进程 ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除 gerp 本身 ps -ef | grep sshd – c...查找指定进程个数 cat a.txt | grep -f b.txt 从文件中读取关键词进行搜索 输出 a.txt 文件中含有从 b.txt 文件中读取出的关键词的内容行 cat a.txt | grep...– nf b.txt 从文件中读取关键词进行搜索, 显示行号 grep -n 'linux' test.txt 从文件中查找关键词,并显示行号 cat test.txt |grep ^u 找出以...这时就需要用到定时器功能,而在Linux系统中提供了一个类似于定时器的小工具:crontab crontab 是 Unix 和 Linux 用于设置周期性被执行的指令。
Go语言编程《从入门到精通》这是从2025年的过年开始整理的一套Go语言编程的系列课程,欢迎大家一起来学习它。为什么写Go语言编程这个文档?...,这样会变得更有意思一些,甚至更有意义的是能帮助到那些对编程语言感兴趣的人一起学习进步是我最终的目标。...为什么起Go语言编程《从入门到精通》这个名字?希望通过个人学习经历来写清楚如何引发兴趣?遇到哪些困难?如何解决?编程语言如何最终从语言到工具帮助我解决问题的。...很多的疑问最终汇总这这五个字“从入门到精通”。本文档适合人群?本文档适合的人群画像:大学生产品经理对编程语言感兴趣的人运维工程师Go语言编程《从入门到精通》文档的结构?...:视频讲解:Go语言编程《从入门到精通》课程讲义:讲义链接课程目录脑图: 脑图链接进阶篇这里还在构思中,应该会讲一些原理性的内容与算法等,帮助读者更好理解Go语言,敬请期待。
TOC一、引言在C++编程中,数组是一种非常基础且重要的数据结构,它可以存储一组相同类型的元素。...在C++11标准之前,开发者通常使用C风格数组来处理数组数据,但C风格数组存在一些问题,比如无法直接进行对象赋值、无法直接拷贝、数组名会退化为指针等,这些问题给开发带来了一定的困扰。...本文将详细介绍std::array的相关知识,帮助小白从入门到精通。二、std::array简介2.1 定义std::array是C++11标准库提供的一个固定大小的容器,用于存储特定类型的元素序列。...例如,在数学和科学计算中,表示向量和矩阵;在图形编程中,表示像素数据、纹理和颜色等。...通过本文的介绍,相信小白们已经对std::array有了更深入的了解,能够在实际编程中熟练使用它。希望大家在使用std::array的过程中,能够充分发挥其优势,提高编程效率和代码质量。
泛型编程 泛型编程是一种编程范式,旨在实现通用性和灵活性。它允许在编写代码时使用参数化类型,而不是具体的类型,从而使代码更加灵活和可重用。...举例: 在C语言中我们要交换两个数我们需要写一个swap函数,但是如果我们需要交换多个不同类型的数那就要写多个swap函数,那么这样大大降低了我们编程的效率,所以在C++中我们引入了泛型编程的概念,不管是函数还是类...对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而不会从该模板产生出一个实例。...size; int _cpacity; }; 我们来进行类的实例化 int main() { list l1; list l2; return 0; } 总结 当模板被介绍到C...++中时,它们彻底改变了编程的方式。
同时,nullptr还可以与C++的智能指针(如std::unique_ptr、std::shared_ptr等)一起使用,更好地管理动态分配的内存。...在C和C++中,可以使用NULL宏定义表示空指针。当使用NULL赋值给一个指针时,表示该指针不指向任何内存地址。 使用空指针可以用于以下情况: 初始化指针变量,避免野指针的问题。...二、指针空值nullptr(C++11) 指针空值nullptr是C++11引入的一种特殊的空指针常量。在以前的C++标准中,常用的空指针常量是NULL,它通常被定义为整数0或者(void*)0。...C++98中的指针空值 在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误,比如未初始化的指针。...注意: 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。
前言 C++模板是C++语言中的一种泛型编程技术,可以实现在编译期间生成不同类型的函数或类。通过使用模板,可以编写通用的代码,使其能够处理多种不同类型的数据。...C++模板可以分为函数模板和类模板两种类型 一、泛型编程 如何实现一个通用的交换函数呢?...泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。...同时,函数模板还可以提供更加灵活的编程方式,允许用户根据具体需求自定义类型参数。 函数模板格式 template<typename T1, typename T2,.........// 与非模板函数匹配,编译器不需要特化 Add(1, 2); // 调用编译器特化的Add版本 } 对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而不会从该模板产生出一个实例
C++的引用 前言 C++的引用是别名,它为已存在的对象提供了另一个名称。一旦引用被初始化指向一个对象,它就不能再指向其他对象。引用必须在声明时初始化,并且必须初始化为有效的对象或字面量。...C++11引入了右值引用和移动语义,允许更高效的资源管理和性能优化。总的来说,C++的引用是一种强大的工具,能够增强代码的可读性和性能。...因为参数是引用类型,所以对i的修改会直接影响到x。...需要注意的是,引用作为函数参数时,函数内部对引用的修改也会反映到函数外部的变量上。...x + y;//是可以的,和上面一样是临时变量的原因 除了类型转换之外,还有以下几种情况会生成临时变量: 函数返回值:当一个函数返回一个临时变量时,编译器会在函数结束时生成一个临时变量,并将其复制到函数返回的地方
这种机制使得成员函数能够识别和操作其所属的对象,从而实现了面向对象编程中的封装性和数据隐藏。 一、this指针的引出 this指针是C++中的一个特殊指针,它指向当前对象。...由于 p 是一个空指针,试图通过空指针调用函数会导致运行时错误,本题是对p指针解引用调用_a,所以会出现运行崩溃(即this->_a) 什么时候会出现编译报错 编译报错通常在编程过程中出现,以下是一些常见的情况...这可能是由于编程错误、内存泄漏、资源耗尽等引起的。 内存问题:程序运行时需要占用大量内存,但系统资源不足,导致程序崩溃。这可能是由于内存泄漏、内存溢出、过多的进程占用内存等引起的。...四、C语言和C++实现Stack的对比 C语言实现 typedef int DataType; typedef struct Stack { DataType* array; int capacity...函数中都是通过Stack*参数操作栈的 调用时必须传递Stack结构体变量的地址 结构体中只能定义存放数据的结构,操作数据的方法不能放在结构体中,即数据和操作数据的方式是分离开的,而且实现上相当复杂一点,涉及到大量指针操作
其简洁易懂的语法、丰富的库和广泛的应用领域,使得Python成为了众多初学者的首选编程语言。那么,如何学习Python呢?本文将带你一步步踏上Python编程的旅程。...一、入门篇:搭建环境与基础语法 首先,你需要在你的电脑上安装Python环境。Python官网提供了各种操作系统的安装程序,你可以根据自己的操作系统选择合适的版本进行安装。...安装完成后,你可以通过Python自带的IDLE工具或者其他的集成开发环境(IDE)如PyCharm、VSCode等进行编程。 接下来,你需要学习Python的基础语法。...此外,你还可以学习Python的并发编程、网络编程、数据库编程等高级话题。这些话题将帮助你更全面地掌握Python编程技能,并让你在实际工作中更加游刃有余。...五、总结 学习Python编程是一个持续不断的过程。从入门到精通,你需要不断地学习、实践和探索。在这个过程中,你需要保持耐心和热情,不断挑战自己的极限。
它是在linux上,第一个利用 虚拟文件系统实现出的文件系统,在linux核心 0.96c版中首次加入支持。...Start:起始柱面,代表分区从哪里开始。 End:终止柱面,代表分区到哪里结束。 Blocks:分区的大小,单位是 KB。 id:分区内文件系统的 ID。...如果这个分区并没有占满整块硬盘,就会提示 “Partition 1 does not end on cyl inder boundary”,表示第一个分区没有到硬盘的结束柱面。大家发现了吗?...dev/nodev:是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。.../boot xfs defaults 0 0 UUID=4b6a9d5f-1029-4c6b-b443-98150efe360c swap
当进程获得处理器而运行时 ,state的值仍然为TASK_RUNNING,并不发生改变;但Linux会把一个专门用来指向当前运行任务的指针current指向它,以表示它是一个正在运行的进程。...这个状态被应用在内核中某些场景中,比如当进程需要对磁盘进行读写,而此刻正在DMA中进行着数据到内存的拷贝,如果这时进程休眠被打断(比如强制退出信号)那么很可能会出现问题,所以这时进程就会处于不可被打断的状态下...一般和"-n"选项合用,用于把 top 命令重定向到文件中; -n 次数:指定 top 命令执行的次数。...简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。...如果我们想要看到所有的进程,则可以把 top 命令的执行结果重定向到文件中。 不过 top 命令是持续运行的,这时就需要使用 “-b” 和 “-n” 选项了。
Linux从入门到精通系列之DHCP 首先呢先讲下dhcp的简介: 对于那些不太了解网路技术的人来说,配置TCP/IP可能是一件非常复杂的工作,对那些将PC连接到局域网的用户来说只能将配置集中到服务器端...当然,这将在一定程度上,增加管理员的工作量,但是从整体考虑,这样是最优的。 ...在一定程度上是这样的,因为我向大家介绍的是一台主服务器带一个子网,这是最简单的一种网络拓扑结构,要是更加复杂的多子网情况,那配置起来就要更加麻烦一点,这就需要为每个子网配置一个中继代理(dhcrelay),它的文档在Linux
总结 扩容优化 留存空间 g++编译器string的扩容 capacity() reserve() resize() shrink_to_fit at insert erase 前言 string 类是编程语言中用于表示和操作字符串的基本数据类型或类...另外,不同的编译器还可能配置不同的编译选项和版本,这些也可能影响到 std::string 的实现和大小。 因此,如果在不同的编译器下运行相同的代码,可能会得到不同的结果。...append 在字符串后追加一个字符串 operator+= 在字符串后追加字符串str c_str 返回C格式字符串 find + npos 从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置...rfind 从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置 substr 在str中从pos位置开始,截取n个字符,然后将其返回 最常用的形式如下 s1 += 'y'; s1 +...深拷贝 如果一个类中涉及到资源的管理,其拷贝构造函数、赋值运算符重载以及析构函数必须要显式给出。一般情况都是按照深拷贝方式提供。
在许多编程语言中,如Python、Java和C++等,都支持缺省参数的概念。下文将以C++为例,通过在函数定义时为某些参数指定默认值,就可以创建出可以接受可变数量参数的函数。...10, int c = 20) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; coutc = "c<<endl...; } 如果参数不够就会报错 注意: 半缺省参数必须从右往左依次来给出,不能间隔着给 缺省参数不能在函数声明和定义中同时出现 //a.h void Func(int a = 10); /...需要注意的是,在 C++ 中,缺省参数只能从右到左连续出现,即在参数列表中,缺省参数必须位于非缺省参数的右侧。 lambda表达式 在C++中,lambda表达式被用于创建匿名函数。...它的语法与其他编程语言中的lambda表达式相似。
首先呢先讲下dhcp的简介: 对于那些不太了解网路技术的人来说,配置TCP/IP可能是一件非常复杂的工作,对那些将PC连接到局域网的用户来说只能将配置集中到服务器端,这样可以简化用户端的工作复杂度。...当然,这将在一定程度上,增加管理员的工作量,但是从整体考虑,这样是最优的。...在一定程度上是这样的,因为我向大家介绍的是一台主服务器带一个子网,这是最简单的一种网络拓扑结构,要是更加复杂的多子网情况,那配置起来就要更加麻烦一点,这就需要为每个子网配置一个中继代理(dhcrelay),它的文档在Linux