自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux三种网络方式、磁盘分区、虚拟机克隆、虚拟机快照

也可以关闭虚拟机在这里克隆。

2024-08-26 09:26:18 328 1

原创 docker中常见软件的常规安装 tomcar、mysql简单安装与复杂安装、redis简单安装与复杂安装

2024-08-25 08:55:48 186

原创 docker容器数据卷、数据卷基本案例

并且docker停止 时在主机中创建文件仍然可以生成在docker中。在docker里面创建也会在主机中生成文件。

2024-08-24 13:53:53 237

原创 docker容器基本命令、docker进入容器的指令、容器的备份、镜像底层原理、使用commit命令制造镜像、将镜像推送到阿里云镜像仓库与私服仓库

除了exit 还有 ctrl+p+q exit退出停止 ctrl+p+q 退出不停止。这里192.168.10.145这部分用自己ifconfig地址。登入阿里云 容器镜像服务 实力列表 镜像仓库。创建镜像仓库 安装里面步骤来。将本地镜像推到阿里云。

2024-08-23 20:27:14 418

原创 Docker基础概述、Docker安装、Docker镜像加速、Docker镜像指令

容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工程所需的库资源和设置。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。作用:解决运行和环境问题的软件容器,方便做持续集成并有助于整体发布。因此docker提供解决方法———系统平滑移植,容器虚拟化技术。linux容器不是模拟一个完整的操作系统而是对进程进行隔离。前提:确保本地的linun环境是centos7及以上的版本。创建一个开发环境内成为镜像文件再用docker使用镜像。Docker是基于go语言实现的云开源项目。

2024-08-21 15:07:15 421

原创 linux上常见问题

1、备份原有的yum源:sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak。2.编译配置文件:sudo vi /etc/sysconfig/network-scripts/lifcfg-ens33。5、此时就已经更新结束,可以使用指令 sudo yum repolist 进行查看源。4.在该行的下一行加入内容:zpp ALL=(ALL) ALL。2.yum源过期,需要更新yum源。

2024-08-19 19:38:24 382

原创 Cmake编译工程

2.包含源文件的子文件夹不包含Cmakelist.txt文件时,子目录编译规则,体现在目录中的CMakeLists.txt。内部构建会在主目录下,产生一大推中间文件,这些中间文件并不是我们最终所需要的,和工程文件放在一起时,会显得比较杂乱无章。将编译输出的文件与源文件放在不同的目录下,进行编译,此时,编译生成的中间文件,不会跟工程源文件进行混淆。#在当前目录下,编译主目录中的CMakeList.txt文件 文件生成Makefile文件。#1.在当前目录下,创建一个build文件,用于存储生成中间文件。

2024-08-13 22:22:04 603

原创 vsc远程连接centos

此时说明:已经添加连接成功了,后面只需正常点击连接即可。1.查看linux系统下的用户名和ip地址。3.远程连接linux下的centos系统。

2024-08-12 14:27:39 367

原创 vscode安装

vscode安装c++相关配置。对.vscode文件夹的更改。2.编写一i个简单的单目录。5.vsc调试与gdb对比。

2024-08-11 20:21:48 190

原创 vsc中使用cmake

add_executable(hello main.cpp hello.cpp) #通过main.cpp 和hello.cpp编译生成hello可执行程序。5.include_directories:向工程添加多个特定的头文件搜索路径,类似于g++编译指令中的-l。6.link_directories:向工程中添加多个特殊的库文件搜索路径,类似于g++编译指令的-L选项。set(HELLO hello.cpp) #定义一个变量名叫HELLO 变量的值为hello.cpp。

2024-08-11 14:16:21 666

原创 如何使用第三方库、makefile概念、使用、规则、条件执行

源文件 --->编译 --->目标文件 --->链接 --->可执行文件--->hello.cpp--->hello.o --->hello。可执行程序

2024-08-10 22:08:45 905

原创 linux中的库的概念、动态库与静态库

动态体现在:在使用g++编译生成程序时,将你的文件和库中的相关函数索引表一起生成一个可执行文件,每个可执行程序只拥有函数的索引表,当程序执行到对应函数时,会根据索引表,动态寻找相关库所在位置进行调用,体积小,执行效率较低,但是可以多个程序共享一个动态库,所以,动态库也叫共享库。概念:将一个***.cpp的文件编译生成一个lib***.a的二进制文件,当你需要使用该文件中的函数时,只需要链接该库即可,后期可以直接调用。ar -crs lib***.a ***.o //编译生成静态库。

2024-08-09 17:35:47 1057

原创 gbd的概念与常用指令

GDB,GNU工程调试器,让你看到发生了什么 在另一个程序执行时“内部”它 - 或者另一个程序 在它坠毁的那一刻正在做。启动程序,指定可能影响其行为的任何内容。使程序在指定条件下停止。检查程序停止时发生了什么。更改程序中的内容,以便进行试验 纠正一个 bug 的影响,然后继续了解另一个 bug。3.使用GDB1.准备一个c语言程序2.编译程序,编译选项中需要加上-g3.启动gdb调试gdb ./***4.gdb常用指令quit(q):表示退出gdb。

2024-08-08 19:24:53 901

原创 man手册安装

linux系统提供的有关函数或指令介绍的相关帮助手册,可以在该手册也中查看函数、指令功能,说白了就是相关操作说明书,一共有七章,主要使用前三章,第一章是shell指令相关说明,第二章是系统调用函数相关说明(重点),第三章是库函数(重要)1.文件的操作:open()、read()、write()、close()、lseek()等。2.进程控制函数:fork()、exit()、wait()、excel()等等。3.网络通信:socket()、bind()、listen()等等。

2024-08-07 17:27:27 408

原创 linux下的C++程序

sudo yum install gcc或者gcc-c++ //安装gcc/g++编译(用管理员权限弄)sudo yum remove gcc或者gcc-c++ //卸载gcc/g++编译(用管理员权限弄)gcc或者g++ --version //如果显示版本号,则表示安装成功。语法格式:g++ -E ***.cpp -o ***.i。语法格式:g++ -s ***.i -o ***.s。语法格式:g++ -c ***.i -o o。语法格式:g++***.o -o。语法格式:./可执行文件名称。

2024-08-06 17:23:00 614

原创 虚拟机器VMware与Linux基本命令行与Xshell

使用键来进行命令补全cd / 可以进入根目录 ls显示当前所有文件 ls -l可以显示文件 类型 权限 大小 创建时间 文件名字sudo yum install net-tools //安装网络工具 为了使用ifconfigsudo yum remove net-tools//卸载网络工具的指令验证是否安装好用 ifconfig查看网络相关属性ens33为网卡 inet为ipv4 netmask子网掩码 broadcast广播地址 inet6为ipv6 mtu最大传输单元Xshell是一款windows平

2024-08-05 14:08:53 1323

原创 P18 位运算

首先,右移操作符 >> 将二进制数 x 向右移动 i 位,即 x >> 2 = 001011。然后,位与操作符 & 将移动后的二进制数和 1 进行按位与操作,即 (x >> 2) & 1 = 001011 & 000001 = 000001 = 1。快速判断一个数字是否为2的幂次方 公式:x&(x-1) 如果x为2幂次方,则x的二进制中只有一个1,x-1就有很多个连续的1并且和x的1没有交集,二者与运算一定为0,获取二进制数的某一位 公式:x>>i&1 结果必然为0或1,表示x的二进制表示中的第i位。

2024-02-23 23:07:58 677

原创 P17 二分法 倍增

研究并发现数据结构单调性,并确定最大区间[l,r]确实分界点一定在里面,具体有一些细节:若以r作为答案,那么答案区间在[l+1,r]一般情况下,我们会将答案进行二分,然后在枚举某个可能解后判断其是否可以更优。整数二分:在已有的序列数组上,进行二分查找,一般找出某个值的位置。二分法适用于有序数据集合,并且每次迭代可以将搜索范围缩小一半。倍增算法是一种优化算法,通常应用某些需要高效计算指数幂的场景。1.整数二分 2.浮点二分 3.二分答案 (最常见)可以将问题搜索范围一分为二,浮点二分:是从实数范围内查找。

2024-02-21 20:13:44 413

原创 P16 贪心 双指针

贪心的题目会出现“不同的操作产生的贡献相同”的特征,在此特征下我们每次选择代价最小的。贪心的基本原理:每一步都选择局部最优解,而尽量不考虑后续的影响,最终达到全局最优解。双指针并非真的用指针实现,一般用两个变量来表示下标,双指针往往也和单调性、排序。贪心的局限性:贪心算法不能保证获得全局最优解,但再某些问题上具有高效性。构建贪心选择的策略可能通过“分类讨论”、“最下代价”、“最大价值”快慢指针:指两个指针同一侧开始遍历序列,并且一个快一个慢。然后l不断增,r不断递减,直到两个相撞或错开,

2024-02-21 18:54:50 477

原创 P15 差分 离散

diff[l]+=x;diff[r+1]-=x表示将区间[l,n]都加上x, 但是[r+1,n]完美并不想加x,所以再将[r+1,n]减取x即可。例如原数组的范围是[1,1e9],而数组大小仅为1e5,那么元素值的“种类”最多也就1e5种,从而可以利用一个数组来表示某个元素的排名。对差分数组做前缀可以还原为原数组:diff[1]=a[1] diff[2]=a[2]-a[1]离散把无限空间中有限的个体映射到有限的空间中取,以此提高算法的时空效率。diff[i]=a[i]-a[i-1]{原数组}

2024-02-21 14:07:43 438

原创 P14 前缀和原理和特点

在计算结果的过程中,我们需要对最终的结果进行取模操作,这是因为结果可能非常大,超出了计算机可以表示的范围。在代码中,我们使用这些特性来在计算前缀和数组时,更有效地计算数组的累加结果,并将其存储在 prefix 数组中。2. 对于数组中的每个元素,将其与前面的元素相加,并将结果存储到prefix数组中的对应位置。这样,prefix数组中的每个元素都是原数组a中对应位置之前所有元素的和。这在处理多次查询时非常高效和方便。prefix是一种预处理算法,只适用于a数组为静态数组的情况,即a数组中的元素查询不会变、

2024-02-19 16:41:35 525

原创 P13 进制

最终,ans的值为1+0+1+1+0+1=4。进制本质,每一个数位上的数字乘上这一位的权重。再计算机中,数字均通过二进制补码表示。- 当a[1]为0时,跳出循环。- 当a[2]为0时,跳出循环。- 当a[3]为0时,跳出循环。因此,程序输出为4。

2024-02-19 10:08:06 658

原创 P12 递归

1.直观、简介,易于理解和实现 2.适用于问题的规模可以通过递归调用不断减小奥。实现过程:1.将大问题分解为规模更小的子问题 2.使用递归调用解决每个子问题。1.避免无线递归 2.考虑边界,有时候窗口不止一个。3.可以处理复杂的数据结构和算法,如数和图的遍历。当满足条件时候,递归结束,避免无线递归。递归是指函数直接火间接调用自身的过程。3.通过递归终止条件来结束递归。

2024-02-18 20:24:10 400

原创 P11 时间复杂度 空间复杂度 分析技巧 枚举

是一种穷举所有可能的情况,将问题的解空间中的每个可能的解都枚举出来,并进行验证和比,是一个范围内的所有数字(或二元组、字符串等数据)或者满足某个条件的所有数字。常见时间复杂度包括:常数时间o(1)线性时间o(n).....例如当题目要求是满足条件的数字,可以循环枚举某个范围内的数字。一般完美关注的是最坏时间复杂度,用O(f(n))表示。一般1秒可以跑2e8,我们要尽可能规模来1e8以内。首先确定解空间的维度,即问题中需要枚举的变量个数。基本操作可以是算术运算(加法、乘法、为运算。常见空间和时间一样表达。

2024-02-18 13:38:06 721

原创 p10 set集合 multiset多重集合 map

insert 插入元素 erase删除元素 find查找元素 count查找元素 size返回元素 begin返回指向容器起始位置的迭代器 end返回指向容器末尾位置 clear清空容器 empty判断容器是否为空 lower_bound 返回指向第一个不小于指定键的元素位置 upper_bound 返回指向第一个大于指定键的元素位置。但这里用erase删除会把全部删除 如果只删除一个用a.erase(a.find())set是一种存储唯一的元素,并按照一定的排序,默认按照升序,默认情况使用<运算符排序。

2024-02-17 20:41:36 502

原创 P9 stack queue队列 priority_queue优先队列(重要) deque 双端队列

push_back()插入尾部元素 push_front()插入头部元素 pop_back()弹出尾部元素 pop_front()弹出头部元素 front()返回头部元素 back()返回尾部元素。push()插入首元素 pop()弹出顶元素 top()返回顶元素 empty()检查是否为空。push()插入尾元素 pop()弹出顶元素 front()返回顶元素 back()返回尾元素。push()插入优先队列元素 pop()弹出顶元素 top()返回顶元素。queue提高了一组函数来操作和访问元素。

2024-02-16 14:46:56 538 1

原创 P8 pair vector

比如pair pair 3默认会转入第一个first中的int “mike”传入string。相当于在上中可以用p1代替second的位置或者first位置,但取的时候要用second.first或者其他的。使用pair类,可以方便地将两个值组合在一起,并进行传参、存储、操作。pair也可以嵌套,让一个pair 对象作为另一个pair对象的成员。pair是一个模板类,用于表示一对值的组合,用中。size()获取元素的数量。

2024-02-11 22:56:32 811 1

原创 P7 其他函数库 memset swap reverse

void* memset(void* ptr【指向设置值的内存块指针】,int value【要设置值 是一个整数8位二进制】,size_t num【要设置字节数】)unique()一个去除容器中相邻重复元素的函数,并返回一个指向去重后范围的尾后迭代器。void reverse(用地址/迭代器:a,a+n])它会将[first,last]范围内的元素按相反顺序重新排序。memset()函数将ptr指向内存块的前num个字节设置为value的值,它返回一个指向ptr的指针。但是设置0与-1是准确的。

2024-02-08 22:03:44 428

原创 p6 全排列 next_permutation prev_permutation

next_permutation 函数用于生成当前序列的下一个排序,如果存在下一个排列,则更改下一个排列返回true,如果当前序列已经是最后一个排列,则更改为第一个序列,并放回false。结果:123 132 213 231 312 321 要想展示全部序列第一个必须是最小的。prev_permutation与next_permutation相反倒着排序。

2024-02-08 21:16:46 467

原创 p5 大小写转换 islower isupper tolower toupper

tolower(转换小写)/toupper(转换为大写)函数,但是通过转为小写那个不是大写则不能转换同理。islower(判断小写)/isupper(判断大写)用于字符分类函数,用于检测是否为小写或者大小字母。需要头文件 返回值为bool。大写+32=小写 小写-32=大写。这里char字符才能转换。

2024-02-07 17:12:57 513 1

原创 P4 二分查找 binary_search lower_bound upper_bound

binary_search(开始,结尾,查找值)用于已排序的序列中通过二分查找算法俩确定序列是否纯在目标元素。lower_bound(开始,结尾,值)返回地址[开始,结尾)中第一个大于等于值得元素地址。upper_bound(开始,结尾,值)返回地址[开始,结尾)中第一个大于值得元素地址。如果要找这个数字在那下标出现则是[lower_bound,upper_bound]返回值是bool值(因此只有true/false),表示目标元素是否纯在序列中。二分查找只能对于数组并且那数组是单调。

2024-02-07 16:48:49 564 1

原创 P3 Sort与min max与确定小数后几位

min(a,b) max(a,b) 功能估计就不介绍了,并且max与min也可传列表({ 2, 3, 4, 5, 6 })cout << fixed << setprecision(6) << num << endl;而这里 nth_element(起始,选定值,结尾)作用是排序,但是这数规定前后大小,但不精确每一个值。但如果要改为<,则要用比较函数bool,因为函数返回一个bool类型的值,表示a和b的大小关系所以是。Sort(起始地址,结束地址的下一位,*比较函数)快速排序 比较函数默认为<

2024-02-01 22:50:08 391 1

原创 p2 string用法

其中,“&”是引用符号。这里string x(数字,‘字符’)可构成那个多少个字符,这里取得“aaaa”S.compare(d)大于为1,小于为-1,等于0,从第一个开始比较,以此类推。s.substr(起始字符,长度)这里取得dd,这里第一个字符是(不要越界)S.replace(p,n,s)删除从p开始的n个字符,然后在p处插入串s。“auto”是自动类型推断关键字,“&”是引用符号,“s”是遍历范围。S.replace(字符起始位置,长度,替换字符)s.length()取字符长度【没有/0】

2024-01-31 16:04:25 474

原创 P1 如何输入与输出与取消同步

#include `:定义了对输入输出进行格式化的函数和操作符,比如可以通过`std::setw`来指定输出的宽度。#include `:定义了输入输出流,使得我们可以方便地使用输入(cin)和输出(cout)操作。同时也定义了`cerr`和`clog`流,用于错误和日志输出。#include `:定义了字符串类型和相关的操作,使得我们可以方便地操作字符串。Cin>>x>>y 输入X,Y Cout

2024-01-05 01:01:48 504 1

原创 p11 结构体:统计大数据

em emp[100]数组把数组用在em中,因此&emp[i].jbg,&emp[i].fdg,&emp[i].zc,这里用了这些之前定义,并存储在相对于的位置上,有3个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入3个学生数据,要求输出每门课的平均成绩及总分最高的学生的姓名和总分(用结构体数组实现)。输入一个正整数n(3

2023-12-29 22:04:56 673 1

原创 p10 指针 简单赋值与三个数算最大值

`i=1`时,`j=m-1-i`计算得到`j=3-1-1=1`,则`*(*(p+i)+j)`对应元素为`*(*(p+1)+1)`,即`p[1][1]`,将其加到`s`中,此时`s=19+3=22`;- `i=2`时,`j=m-1-i`计算得到`j=3-1-2=0`,则`*(*(p+i)+j)`对应元素为`*(*(p+2)+0)`,即`p[2][0]`,将其加到`s`中,此时`s=22+7=29`。``` 在上述示例中,指针 p 不加 * 表示指针 p 的地址,而不是指针所指向的内存中的值。

2023-12-26 23:31:26 1018 1

原创 P9 函数 :每个学生的平均分与每门课程的平均分与静态函数

这里用相当于定义了两个s[i]分用的score数组一个是用列就每个学生平均成绩,一个行是用于算每门课程平均成绩,而这里这里用颠倒s[i]+=score[i][j];2. 作用域:静态变量的作用域限定在声明它的函数内部,只能在该函数内部被访问。但是,由于静态变量的生命周期长,所以即使函数调用结束,静态变量的值也会保持不变。输入10个学生5门课的成绩,用二维数组作参数,分别用函数求:1)每个学生的平均分;2)每门课程的平均分。3. 初始值:静态变量的初始值只会被赋值一次,在第一次赋值后,其值会保持不变。

2023-12-25 22:59:50 448

原创 p8 函数:计算xn与阶乘与数组排序与大写转为小写的数组

",将导致编译错误。- 第一次内层循环交换位置:b[0] = 5 > b[1] = 1,交换位置后数列变为 [1, 5, 4, 2, 8]。- 第二次内层循环交换位置:b[1] = 5 > b[2] = 4,交换位置后数列变为 [1, 4, 5, 2, 8]。- 第三次内层循环交换位置:b[2] = 5 > b[3] = 2,交换位置后数列变为 [1, 4, 2, 5, 8]。- 第二次内层循环交换位置:b[1] = 4 > b[2] = 2,交换位置后数列变为 [1, 2, 4, 5, 8]。

2023-12-24 22:33:58 1132

原创 p7 函数 歌德巴赫猜想与最大公倍数与最小公因数

定义了 int prime(int n)用于判断数字是否为素数 如果是judge为0 不是为1,因此上面prime(n)&&prime(i-n)要确认都是素数,只要他们都是0,而这里两个数字相加因为为偶数,因为为素数所以构成,n为i/2开始,而i-n则是从另一边开始,就相当于16=1+15 16=2+14 这样直到加到素数,这里a

2023-12-24 00:05:49 440

原创 P6字符:位置颠倒与回文与字母排序

'\n')这一段就是一直输出字符存在str[]数组上面,其实这里str[i]取什么都可以,因为后面输出时候,是不打印这个字符的,编程,输入一个字符串(少于80个字符),判断是否是回文。所谓回文是指从前往后和从后往前是一致的,如“ABCBA”,“ABCCBA”都是回文。输入一个以回车结束的字符串(少于80个字符),将它的内容按逆序存放再输出。如”ABCD”颠倒为”DCBA”。这里用string,可以使用strlen使用来截取字符长度,这里要-1是因为,数组是从零开始的,

2023-12-22 22:58:18 419

空空如也

空空如也

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

TA关注的人

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