当前位置: 首页 > article >正文

学习笔记—C++—入门基础()

目录

C++介绍

参考文档

C++第一个程序

命名空间namespace

namespace的价值

namespace的定义

namespace使用

指定命名空间访问

using将命名空间中某个成员展开

展开命名空间中全部成员

输入和输出

缺省参数

函数重载

引用

引用的概念

应用

const引用

指针和引用的关系

inline

nullptr


C++介绍

“C++”是一种多功能的编程语言,它起源于1980年代初,由Bjarne Stroustrup在C语言的基础上发展而来。C++最初被设计为支持面向对象编程的C语言变体,后来经过多次迭代和标准化,发展成为一种广泛应用于系统软件、游戏开发、嵌入式系统等领域的语言。C++的发展经历了多个重要阶段,包括C++98、C++03、C++11、C++14、C++17、C++20和即将到来的C++23标准.

参考文档

Reference - C++ Reference

特点:通俗易懂                

https://zh.cppreference.com/w/cpp

特点:完整中文版

https://en.cppreference.com/w/

特点:完整英文版

C++第一个程序

// test.cpp
#include<iostream>
using namespace std;int main()
{cout << "hello world\n" << endl;return 0;
}

#include<iostream>是什么头文件

using namespace std;又是什么东西

打印“hello world”怎么变成了cout << "hello world\n" << endl;

命名空间namespace

namespace的价值

在C/C++中,变量、函数和后面要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全 局作用域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进行本地化,以避免命名 冲突或名字污染,namespace关键字的出现就是针对这种问题的。

c语言项目类似下面程序这样的命名冲突是普遍存在的问题,C++引入namespace就是为了更好的解决 这样的问题。

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
int rand = 10;
int main()
{// 编译报错:error C2365: “rand”: 重定义;以前的定义是“函数”printf("%d\n", rand);return 0;
}

当头文件只有stdio.h的时候是没有问题的,但是我们加上另一个头文件stdlib.h就会出现报错的现象,在stdlib这个库里面定义了一个rand 的函数,那么我们现在又在外面定义一个rand的变量,那么就会出现冲突

namespace的定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。

namespace wuguo
{// 命名空间中可以定义变量/函数/类型int rand = 10;int Add(int left, int right){return left + right;}struct Node{struct Node* next;int val;};
}

namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。

#include<stdio.h>
#include<stdlib.h>
#include<iostream>int rind = 10;namespace wuguo
{int rind = 30;
}int main()
{printf("%d\n", rind);          //打印的是全局的10printf("%d\n", wuguo::rind);   //打印的是wuguo域里的30return 0;
}

C++中域有函数局部域全局域命名空间域类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离名字冲突就解决了局部域全局域除了会影响 编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期

int x = 0;//全局域namespace bit
{int x = 10;//命名空间域
}void func()
{int x = 20;//局部域
}int main()
{int x = 30;//局部域printf("%d\n", x);      //这里默认访问的是局部的这个x,因为搜索是先局部再全局搜索。printf("%d\n", bit::x); //这里就是访问命名空间域printf("%d\n", ::x);    //这里就是访问全局变量。return 0;
}

namespace只能定义在全局,当然他还可以嵌套定义

// 命名空间可以嵌套
namespace wuguo
{// 小王namespace xw{int rand = 10;int Add(int left, int right){return left + right;}}// 大王namespace dw{int rand = 20;int Add(int left, int right){return (left + right) * 10;}}
}int main()
{printf("%d\n", wuguo::pg::rand);printf("%d\n", wuguo::hg::rand);printf("%d\n", wuguo::pg::Add(10, 20));printf("%d\n", wuguo::hg::Add(10, 20));return 0;
}

• 项目工程中多文件中定义同名namespace会认为是⼀个namespace不会冲突

C++标准库都放在⼀个叫std(standard)的命名空间中。

namespace使用

指定命名空间访问

namespace wuguo
{int a = 0;int b = 1;
}
int main()
{printf("%d\n", wuguo::a);return 0;
}

项目中推荐这种方式。

using将命名空间中某个成员展开

namespace wuguo
{int a = 0;int b = 1;
}
//把wuguo域里的a展开了
using wuguo::a;
int main()
{printf("%d\n", a);return 0;
}

项目中经常访问的不存在冲突的成员推荐这种方式。

展开命名空间中全部成员

namespace wuguo
{int a = 0;int b = 1;
}
using namespace wuguo;
int main()
{printf("%d\n", a);printf("%d\n", b);return 0;
}

项目不推荐,冲突风险很大,日常小练习程序为了方便推荐使用。

输入和输出

<iostream>是 Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输

出对象,就是他们的库函数

std::cin 是istream类的对象,它主要面向窄字符(narrowcharacters(oftypechar))的标准输入流,就是输入

std::cout 是ostream类的对象,它主要面向窄字符的标准输出流,就是输出

std::endl 是⼀个函数,流插⼊输出时,相当于插入⼀个换行字符加刷新缓冲区,就是换行

<<是流插入运算符,>>是流提取运算符。

#include<iostream>
using namespace std;int main()
{// <<输出cout << "hello world\n";int i = 10;double d = 1.1;//>>输入cin >> i >> d;cout << i<<":"<<d << std::endl;return 0;
}

输入一个“整数” “空格” “小数”

输出“整数” “:” “小数”

缺省参数

缺省参数是一种便捷的机制,允许在函数声明时为参数指定默认值。如果在调用函数时省略了这些参数,编译器会自动使用它们的缺省值。使用缺省参数可以简化函数调用,减少冗余代码,并提高代码的可读性和灵活性。

全缺省参数:函数的所有参数都可以有缺省值,调用时可以不传递任何参数。
半缺省参数:只有部分参数有缺省值,这些缺省值必须从右向左依次指定,不能间断。
声明与定义分离:如果函数声明和定义分开,缺省参数只能在声明中指定,定义中不应再次指定。
缺省值的限制:缺省值必须是常量表达式或全局变量,不能是局部变量或动态分配的内存。
调用顺序:实参的传递顺序是从左向右,而形参的缺省值赋值顺序是从右向左。

#include <iostream>
#include <assert.h>
using namespace std;void Func(int a = 0)
{cout << a << endl;
}// 全缺省
void Func1(int a = 10, int b = 20, int c = 30)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl << endl;
}// 半缺省
void Func2(int a, int b = 10, int c = 20)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl << endl;
}int main()
{Func(); // 没有传参时,使用参数的默认值Func(10); // 传参时,使用指定的实参Func1();                 //a=10 b=20  c=30Func1(1);                //a=1  b=20  c=30Func1(1, 2);             //a=1  b=2   c=30Func1(1, 2, 3);          //a=1  b=2   c=3// 不支持// Func1(,2,3);Func2(100);              //a=100 b=10  c=20Func2(100, 200);         //a=100 b=200 c=20Func2(100, 200, 300);    //a=100 b=200 c=300return 0;
}

函数重载

C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同可以是参数个数不同或者类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同⼀作用域中出现同名函数的。

函数名称必须相同

参数列表必须不同,这包括参数的个数、类型或顺序的不同。

返回类型不影响函数重载,即使两个函数的返回类型不同,它们也可以构成重载,因为重载决策是基于函数的参数列表进行的。

void ADD(int a, int b)
{cout << a + b << endl;
}void ADD(double a, int b)
{cout << a + b << endl;
}void ADD(int a, double b)
{cout << a + b << endl;
}int main()
{ADD(1, 1);ADD(1, 1.1);ADD(1.1, 1);return 0;
}

引用

引用的概念

在C++中,引用是一种特殊的变量类型,它提供了对另一个变量的别名。

引用在语法层面是不开辟空间的

在底层引用类似于指针变量是开辟空间

void Test()
{int a = 10;//定义引用类型ra就是a的别名,地址也是一样的int& ra = a;printf("%p\n", &a);printf("%p\n", &ra);
}​

应用

作为函数参数

//作为函数参数
​void Swap(int& left, int& right)
{int temp = left;left = right;right = temp;
}int main()
{int x = 0, y = 1;cout << x << " " << y << endl;Swap(x, y);cout << x << " " << y << endl;return 0;
}//传返回值
int& STTop(ST& rs)
{assert(rs.top > 0);return rs.a[rs.top];
}
STTop(st1)++;
​

易错示例

int& Add(int a, int b)
{int c = a + b;return c;
}
int main()
{int& ret = Add(1, 2);Add(3, 4);cout << "Add(1, 2) is :"<< ret <<endl;return 0;
}

这个代码将C的值返回,返回值是别名,当调用函数的时候,函数会建立栈帧,当调用结束的时候,这空间的随之就会返回给操作系统,C变量也就不会存在。输出是随机值。

const引用

可以引用⼀个const对象,但是必须用const引用const引用也可以引用普通对象,因为对象的访 问权限在引用过程中可以缩小,但是不能放大

int main()
{//a不能进行修改,所以不能取别名,取别名的话是会对a造成修改的风险的const int a = 10;//在引用的过程中权限不能放大//int& ra = a;//那么这里的ra就是const对象const int& ra = a;//cnost引用普通的对象//权限可以缩小int b = 1;//rb不能进行修改,b能被修改const int& rb = b;//rb++;b++;//x不能修改const int x = 0;//这里是拷贝赋值,所以可以修改y对x没有影响int y = x;return 0;
}

指针问题

int main()
{//a是不能进行修改的const int a = 10;//√p1固定指a不能被修改const int* p1 = &a;//×权限的放大int* p2 = p1;int b = 20;//√p3存的是b的地址int* p3 = &b;//√p4也是b的地址,只读不改const int* p4 = p3;return 0;
}

指针和引用的关系

C++中指针和引用就像两个性格迥异的亲兄弟,指针是哥哥,引用是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有自己的特点,互相不可替代。

• 语法概念上引用是⼀个变量的取别名不开空间,指针是存储⼀个变量地址,要开空间。

• 引用在定义时必须初始化,指针建议初始化,但是语法上不是必须的。

• 引用在初始化时引用⼀个对象后,就不能再引用其他对象;而指针可以在不断地改变指向对象。

• 引用可以直接访问指向对象,指针需要解引用才是访问指向对象。

• sizeof中含义不同,引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占4个字节,64位下是8byte)

• 指针很容易出现空指针和野指针的问题,引用很少出现,引用使用起来相对更安全⼀些。

inline

用inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地方展开内联函数,这样调用内联函数就不需要建立栈帧了,就可以提高效率。

宏定义的问题

 //实现⼀个ADD宏函数的常⻅问题
#define ADD(int a, int b) return a + b;
#define ADD(a, b) a + b;
#define ADD(a, b) (a + b)//正确的宏实现
#define ADD(a, b) ((a) + (b))

 为什么不能加分号?宏是替换机制的  ,在宏定义后面加分号的话就有问题了
 为什么要加外面的括号?   不加外面的括号这个优先级就有问题了
 为什么要加里面的括号?   同样是为了保持优先级


int main()
{int ret = ADD(1, 2);//宏是替换机制的cout << ret << endl;;cout << ADD(1, 2) << endl;     //第一个问题cout << ADD(1, 2) * 5 << endl;    //第二个问题int x = 1, y = 2;ADD(x & y, x | y); // -> (x&y+x|y)  第三个问题return 0;
}

 inline对于编译器而言只是⼀个建议,也就是说,你加了inline编译器也可以选择在调用的地方不展开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。

inline适用于频繁调用的短小函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。

debug是默认不展开的,release是展开的

debug展开方式

展开了就没有栈帧的消耗,不展开就有,如果函数较长的话,就不展开了。

nullptr

NULL实际是⼀个宏,在传统的C头⽂件(stddef.h)中,可以看到如下代码:

#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif
#endif

C++中NULL可能被定义为字面常量0,或者C中被定义为无类型指针(void)的常量。不论采取何种定义,在使用空值的指针时,都不可避免的会遇到⼀些麻烦,本想通过f(NULL)调用指针版本的f(int*)函数,但是由于NULL被定义成0,调用了f(int x),因此与程序的初衷相悖。f((void*)NULL);调用会报错。

C++11中引入nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字面量,它可以转换成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,而不能被转换为整数类型

在c++中使用nullptr来定义空指针可以避免类型转换的问题

void f(int x)
{cout << "f(int x)" << endl;
}void f(int* ptr)
{cout << "f(int* ptr)" << endl;
}int main()
{f(0);        //调用第一个//f(NULL);   //调用第二个//f((void*)0);f(nullptr);  //在c++中使用nullptr来定义空指针可以避免类型转换的问题return 0;
}

相关文章:

学习笔记—C++—入门基础()

目录 C介绍 参考文档 C第一个程序 命名空间namespace namespace的价值 namespace的定义 namespace使用 指定命名空间访问 using将命名空间中某个成员展开 展开命名空间中全部成员 输入和输出 缺省参数 函数重载 引用 引用的概念 应用 const引用 指针和引用的关…...

kotlin函数类型

一 函数类型定义 1 定义 函数类型就是 (Int, Int) -> Int 函数类型其实就是将函数的 “参数类型” 和 “返回值类型” 抽象出来 2 示例 &#xff1a; (Int, Int) -> Int 表示接收两个 Int 参数并返回 Int 的函数类型&#xff1b; (String) -> Unit 表示接收 Strin…...

大数据Spark(五十七):Spark运行架构与MapReduce区别

文章目录 Spark运行架构与MapReduce区别 一、Spark运行架构 二、Spark与MapReduce区别 Spark运行架构与MapReduce区别 一、Spark运行架构 Master:Spark集群中资源管理主节点&#xff0c;负责管理Worker节点。Worker:Spark集群中资源管理的从节点&#xff0c;负责任务的运行…...

虚拟Ashx页面,在WEB.CONFIG中不添加handlers如何运行

https://localhost:44311/webapi.ashx 虚拟ASHX页面,在WEB.CONFIG中添加handlers&#xff0c;如何不添加节点&#xff0c;直接运行?把页面直接保存ASHX名称&#xff1f;现在是.VB 如果你不想通过在 web.config 里添加 handlers 节点来配置处理程序&#xff0c;而是直接让 .as…...

道路裂缝数据集CrackForest-156-labelme

来源于开源的数据集 https://github.com/cuilimeng/CrackForest-dataset 进行整理修改而成。 文章目录 1. 介绍2. 应用场景3. 相关工具4. 下载地址 1. 介绍 在现代城市管理中&#xff0c;道路状况的监测与维护是确保交通安全和城市基础设施健康的重要环节。 CrackForest是一个…...

HTML 表单:构建交互式网页的关键元素

HTML 表单:构建交互式网页的关键元素 引言 HTML表单是构建交互式网页的核心组件之一,它允许用户与网站进行交互,提交信息、填写问卷或进行其他操作。本文将深入探讨HTML表单的基础知识、常用元素、表单验证以及如何优化表单设计,以提高用户体验和网站的可访问性。 HTML表…...

Java进阶-day06:反射、注解与动态代理深度解析

目录 一、反射机制&#xff1a;Java的自我认知能力 1.1 认识反射 1.2 获取Class对象 1.3 获取类的成分 二、注解&#xff1a;Java的元数据机制 2.1 注解概述 2.2 元注解 2.3 注解解析 2.4 注解的实际应用 三、动态代理&#xff1a;灵活的间接访问机制 3.1 为什么需要…...

Redis数据结构之Hash

目录 1.概述2.常见操作2.1 H(M)SET/H(M)GET2.2 HGETALL2.3 HDEL2.4 HLEN2.5 HEXISTS2.6 HKEYS/HVALS2.7 HINCRBY2.8 HSETNX 3.总结 1.概述 Hash是一个String类型的field(字段)和value(值)的映射表&#xff0c;而且value是一个键值对集合&#xff0c;类似Map<String, Map<…...

故障矩阵像素照片效果ps标题文本特效滤镜样机 Glitched Arcade Text Logo Effect

有时&#xff0c;视觉效果比文字本身更能讲述故事&#xff0c;因此请确保您已竭尽全力提供令人敬畏的展示。品牌标识或演示元素&#xff0c;该资产可以处理您的项目所涉及的任何内容。由于智能对象图层&#xff0c;此文本效果将为获得理想的结果铺平道路。这些允许您在指定的图…...

[创业之路-352]:从创业和公司经营的角度看:分析美国的三大财务报表

一、美国政府的财务报表 如果把美国政府看成一个公司&#xff0c;从三大财务报表上看&#xff0c;美国政府资产雄厚&#xff0c;但利润表年年亏损&#xff0c;现金流量表年年为负&#xff0c;现金流持续吃紧&#xff0c;面临现金流断裂导致公司倒闭的风险。 马斯克在降低公司各…...

【学Rust写CAD】27 双线性插值函数(bilinear_interpolation.rs)

源码 use super::constant::BILINEAR_INTERPOLATION_BITS; // Inspired by Filter_32_opaque from Skia. fn bilinear_interpolation(tl: u32,tr: u32,bl: u32,br: u32,mut distx: u32,mut disty: u32, ) -> u32 {let distxy;let distxiy;let distixy;let distixiy;let mut…...

vs环境中编译osg以及osgQt

1、下载 OpenSceneGraph 获取源代码 您可以通过以下方式获取 OSG 源代码: 官网下载:https://github.com/openscenegraph/OpenSceneGraph/releases 使用 git 克隆: git clone https://github.com/openscenegraph/OpenSceneGraph.git 2、下载必要的第三方依赖库 依赖库 ht…...

【教学类-102-02】自制剪纸图案(留白边、沿线剪)02——Python+PS自动化添加虚线边框

背景需求: 01版本实现了对透明背景png图案边界线的扩展,黑线实线描边 【教学类-102-01】自制剪纸图案(留白边、沿线剪)01-CSDN博客文章浏览阅读974次,点赞15次,收藏7次。【教学类-102-01】自制剪纸图案(留白边、沿线剪)01https://blog.csdn.net/reasonsummer/article…...

基于 Netty 框架的 Java TCP 服务器端实现,用于启动一个 TCP 服务器来处理客户端的连接和数据传输

代码&#xff1a; package com.example.tpson_tcp;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; imp…...

fbx bip互转 测试OK

目录 fbx bip互转 3dmax插件fbx转bip: 测试可以转: MotionBuilder fbx转bip fbx bip互转 3dmax插件fbx转bip: 测试可以转: 不用插件!!无脑把Mxiamo转bip骨骼动画 - CG软件插件脚本交流 - Powered by Discuz!...

iptables只允许指定网段的ip访问某端口配置

yum install -y iptables-services #安装 systemctl restart iptables.service #重启防火墙使配置生效 systemctl enable iptables.service #设置防火墙开机启动 systemctl disable iptables.service #禁止防火墙开机启动 iptables -F 清除所有链的规则。 关闭所有访问端口 …...

OFP--2018

文章目录 AbstractIntroductionRelated Work2D object detection3D object detection from LiDAR3D object detection from imagesIntegral images 3D Object Detection ArchitectureFeature extractionOrthographic feature transformFast average pooling with integral imag…...

libevent DNS开发

一、DNS功能 Libevent的DNS功能提供异步解析与服务器搭建能力,其核心设计分为‌阻塞式解析‌与‌事件驱动异步解析‌两套机制。 阻塞式解析(同步)‌ ‌功能定位‌ 通过evutil_getaddrinfo()提供可移植的阻塞式域名解析,兼容无标准getaddrinfo()接口的系统(如旧版…...

CentOS-查询实时报错日志-查询前1天业务报错gz压缩日志

最新版本更新 https://code.jiangjiesheng.cn/article/364?fromcsdn 推荐 《高并发 & 微服务 & 性能调优实战案例100讲 源码下载》 1. 查询实时报错日志 物理路径&#xff08;带*的放在靠后&#xff0c;或者不用*&#xff09; cd /home/logs/java-gz-log-dir &am…...

ETF 场内基金是什么?佣金最低又是多少呢?

嘿&#xff0c;朋友们&#xff0c;大家好啊&#xff0c;我是StockMasterX&#xff0c;今天咱们就坐下来慢慢聊聊这个话题&#xff0c;ETF 场内基金到底是个啥东西&#xff0c;它的佣金最低能到多少&#xff0c;真的是个值得深挖的问题。 说起ETF&#xff0c;我还记得刚入行那会…...

[论文阅读]PMC-LLaMA: Towards Building Open-source Language Models for Medicine

PMC-LLaMA&#xff1a;构建医学开源语言模型 摘要 最近&#xff0c;大语言模型在自然语言理解方面展现了非凡的能力。尽管在日常交流和问答场景下表现很好&#xff0c;但是由于缺乏特定领域的知识&#xff0c;这些模型在需要精确度的领域经常表现不佳&#xff0c;例如医学应用…...

26考研——线性表(2)

408答疑 文章目录 一、线性表的定义和基本操作二、线性表的顺序表示三、 线性表的链式表示四、 顺序表和链表的比较五、参考资料鲍鱼科技课件26王道考研书 六、总结顺序表总结顺序表特点深入掌握顺序表的管理方式 单链表总结双循环链表总结 一、线性表的定义和基本操作 文章链…...

写.NET可以指定运行SUB MAIN吗?调用任意一个里面的类时,如何先执行某段初始化代码?

VB.NET 写.NET可以指定运行SUB MAIN吗?调用任意一个里面的类时,如何先执行某段初始化代码? 分享 1. 在 VB.NET 中指定运行 Sub Main 在 VB.NET 里&#xff0c;你能够指定 Sub Main 作为程序的入口点。下面为你介绍两种实现方式&#xff1a; 方式一&#xff1a;在项目属性…...

低代码开发平台:飞帆画 echarts 柱状图

https://fvi.cn/711 柱状图这个控件是由折线图的控件改过来的&#xff0c;在配置中&#xff0c;单选框选择柱状图就行了。...

PowerPhotos:拯救你的Mac照片库,告别苹果原生应用的局限

如果你用Mac管理照片&#xff0c;大概率被苹果原生「照片」应用折磨过——无法真正并行操作多个图库。每次切换图库都要关闭重启&#xff0c;想合并照片得手动导出导入&#xff0c;重复文件更是无处可逃…… 直到我发现了 PowerPhotos&#xff0c;这款专为Mac设计的照片库管理…...

如何在Springboot的Mapper中轻松添加新的SQL语句呀?

在如今的软件开发界&#xff0c;Spring Boot可是非常受欢迎的框架哦&#xff0c;尤其是在微服务和RESTful API的构建上&#xff0c;真的是让人爱不释手&#xff01;今天&#xff0c;我们就来聊聊如何为Spring Boot项目中的Mapper添加新的SQL语句吧&#xff01;说起来&#xff0…...

Linux 下 日志系统搭建全攻略

目录 一、引言 二、日志系统基础 日志级别 日志输出格式 三、创建日志所需函数 认识可变参数 ​编辑 获取时间的函数 小结 四、创建日志 一、引言 在 Linux 环境中开发 C/C 程序时&#xff0c;日志系统是不可或缺的一部分。它不仅有助于调试程序、排查问题&#xff…...

Linux系统安装Postgre和Postgis教程

卸载 如果之前没装过可以忽略这一步 卸载前记得备份数据库数据(如果还需要的话)&#xff01;&#xff01;&#xff01; 一、删除 Docker 安装的 PostgreSQL/PostGIS 1. 停止并删除容器 # 查看所有容器 docker ps -a | grep postgres# 停止并删除容器&#xff08;替换为实际…...

LXC 导入多Linux系统

前提要求 ubuntu下安装lxd 参考Rockylinux下安装lxd 参考LXC 源替换参考LXC 容器端口发布参考LXC webui 管理<...

6547网:蓝桥STEMA考试 Scratch 试卷(2025年3月)

『STEMA考试是蓝桥青少教育理念的一部分&#xff0c;旨在培养学生的知识广度和独立思考能力。考试内容主要考察学生的未来STEM素养、计算思维能力和创意编程实践能力。』 一、选择题 第一题 运行下列哪个程序后&#xff0c;飞机会向左移动&#xff1f; ( ) A. …...