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

青少年编程与数学 02-010 C++程序设计基础 11课题、程序结构

青少年编程与数学 02-010 C++程序设计基础 11课题、程序结构

  • 一、C++程序结构
  • 二、main函数
      • 1. `main` 函数的基本形式
        • 1.1 无参数形式
        • 1.2 带参数形式
      • 2. 参数解释
      • 3. 示例
        • 3.1 无参数形式
        • 3.2 带参数形式
      • 4. 编译和运行
        • 4.1 编译
        • 4.2 运行
      • 5. `main` 函数的返回值
      • 6. 总结
  • 三、预处理指令
      • 1. `#include` 指令
        • 1.1 包含标准头文件
        • 1.2 包含用户定义的头文件
      • 2. `#define` 指令
        • 2.1 定义常量
        • 2.2 定义宏函数
      • 3. `#undef` 指令
      • 4. `#ifdef`、`#ifndef`、`#if`、`#endif`、`#else`、`#elif` 指令
        • 4.1 `#ifdef` 和 `#endif`
        • 4.2 `#ifndef` 和 `#endif`
        • 4.3 `#if`、`#else` 和 `#endif`
        • 4.4 `#elif`
      • 5. `#pragma` 指令
        • 5.1 控制编译器警告
        • 5.2 控制代码的对齐方式
      • 6. `#line` 指令
      • 7. `#error` 指令
      • 总结

课题摘要: 本课题深入探讨了C++程序的结构,涵盖预处理指令、全局声明、函数定义、类定义以及程序执行的入口点main函数。预处理指令如#include和#define用于包含头文件和定义宏,对源代码进行预处理。main函数是程序的起点,可采用无参数或带参数形式,处理命令行参数。此外,详细介绍了预处理指令的使用,包括条件编译和宏定义等,强调其在提升代码可移植性和可维护性中的作用。理解这些基础结构,有助于学生更好地编写和组织C++代码。


一、C++程序结构

C++语言的程序结构通常包括以下几个主要部分:预处理指令、全局声明、函数定义和类定义。下面是一个典型的C++程序结构示例:

// 预处理指令
#include <iostream>  // 包含标准输入输出流库
using namespace std;  // 使用标准命名空间// 全局声明
const int MAX = 100;  // 全局常量// 函数声明
void printMessage();// 类定义
class MyClass {
public:void myFunction();  // 类成员函数声明
};// 主函数,程序执行的入口点
int main() {cout << "Hello, World!" << endl;  // 输出语句printMessage();  // 调用函数MyClass myObject;  // 创建类的对象myObject.myFunction();  // 调用对象的成员函数return 0;  // 返回值表示程序正常结束
}// 函数定义
void printMessage() {cout << "This is a message from a function." << endl;
}// 类成员函数定义
void MyClass::myFunction() {cout << "This is a member function of MyClass." << endl;
}
  1. 预处理指令:以#开头,如#include用于包含头文件,#define用于宏定义等。
  2. 全局声明:在所有函数之外声明的变量、常量等,它们的作用域通常覆盖整个程序。
  3. 函数声明:提前声明函数的原型,包括函数名、返回类型和参数列表,以便在程序的其他部分调用。
  4. 类定义:使用class关键字定义类,类封装了数据和操作数据的函数。
  5. 主函数main函数是程序的入口点,程序从这里开始执行。
  6. 函数定义:提供函数的具体实现。
  7. 类成员函数定义:定义类的成员函数,通常在类定义之外进行,使用作用域解析运算符::

这个结构是C++程序的基本框架,实际的程序可能会根据具体需求包含更多的元素,如命名空间定义、模板定义等。

二、main函数

在C++语言中,main 函数是程序的入口点。它是每个C++程序必须包含的一个特殊函数,程序从这里开始执行,并在这里结束。main 函数的返回类型是 int,表示程序的退出状态。返回值 0 通常表示程序成功执行,非零值表示程序执行过程中遇到了错误。

1. main 函数的基本形式

main 函数可以有以下两种基本形式:

1.1 无参数形式
int main() {// 程序代码return 0;
}
1.2 带参数形式
int main(int argc, char* argv[]) {// 程序代码return 0;
}

2. 参数解释

  • int argc:参数个数(Argument Count)。argc 是一个整数,表示命令行参数的数量,包括程序名称本身。
  • char\* argv[]:参数列表(Argument Vector)。argv 是一个字符指针数组,每个元素指向一个命令行参数的字符串。argv[0] 通常是程序的名称,argv[1]argv[argc-1] 是用户提供的命令行参数。

3. 示例

以下是一个简单的C++程序,展示了 main 函数的两种形式:

3.1 无参数形式
#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;
}
3.2 带参数形式
#include <iostream>int main(int argc, char* argv[]) {std::cout << "Program name: " << argv[0] << std::endl;for (int i = 1; i < argc; ++i) {std::cout << "Argument " << i << ": " << argv[i] << std::endl;}return 0;
}

4. 编译和运行

假设上述代码保存在文件 main.cpp 中,可以使用以下命令编译和运行:

4.1 编译
g++ -o main main.cpp
4.2 运行
./main arg1 arg2 arg3

输出:

Program name: ./main
Argument 1: arg1
Argument 2: arg2
Argument 3: arg3

5. main 函数的返回值

  • 返回值 0:表示程序成功执行。
  • 非零返回值:表示程序执行过程中遇到了错误。不同的返回值可以表示不同的错误类型。

6. 总结

main 函数是C++程序的入口点,程序从这里开始执行,并在这里结束。main 函数可以有无参数和带参数两种形式,带参数形式可以处理命令行参数。返回值 0 表示程序成功执行,非零值表示程序执行过程中遇到了错误。理解 main 函数的结构和用途是编写C++程序的基础。

三、预处理指令

在C++语言中,预处理指令(Preprocessor Directives)是编译过程中的一个步骤,用于在编译之前对源代码进行处理。预处理指令以#开头,它们在编译器开始编译代码之前被处理。预处理指令的主要用途包括包含头文件、定义宏、条件编译等。以下是一些常见的预处理指令及其用途:

1. #include 指令

#include 指令用于包含头文件。头文件通常包含函数声明、类定义、宏定义等,这些内容可以在多个源文件中共享。

1.1 包含标准头文件
#include <iostream>  // 包含标准输入输出流库
#include <vector>    // 包含标准库中的vector类
1.2 包含用户定义的头文件
#include "myheader.h"  // 包含用户定义的头文件

2. #define 指令

#define 指令用于定义宏。宏可以是简单的常量定义,也可以是带参数的宏函数。

2.1 定义常量
#define MAX 100  // 定义常量MAX
2.2 定义宏函数
#define SQUARE(x) ((x) * (x))  // 定义宏函数,计算平方

3. #undef 指令

#undef 指令用于取消之前定义的宏。

#define MAX 100
#undef MAX  // 取消MAX的定义

4. #ifdef#ifndef#if#endif#else#elif 指令

这些指令用于条件编译,可以根据预定义的宏或条件表达式来决定是否编译某段代码。

4.1 #ifdef#endif
#ifdef DEBUGstd::cout << "Debug mode is enabled." << std::endl;
#endif
4.2 #ifndef#endif
#ifndef NDEBUGstd::cout << "Assertions are enabled." << std::endl;
#endif
4.3 #if#else#endif
#if defined(DEBUG) && defined(VERBOSE)std::cout << "Debug mode is enabled and verbose output is on." << std::endl;
#elsestd::cout << "Debug mode is disabled or verbose output is off." << std::endl;
#endif
4.4 #elif
#if defined(DEBUG)std::cout << "Debug mode is enabled." << std::endl;
#elif defined(TEST)std::cout << "Test mode is enabled." << std::endl;
#elsestd::cout << "Release mode is enabled." << std::endl;
#endif

5. #pragma 指令

#pragma 指令用于控制编译器的特定行为,如优化、警告信息等。不同的编译器对#pragma指令的支持可能不同。

5.1 控制编译器警告
#pragma warning(disable: 4996)  // 禁用特定的编译器警告
5.2 控制代码的对齐方式
#pragma pack(1)  // 设置结构体的对齐方式为1字节

6. #line 指令

#line 指令用于修改编译器的行号和文件名,这在生成的代码中特别有用。

#line 100 "mycode.cpp"
std::cout << "This line is numbered 100 and comes from mycode.cpp." << std::endl;

7. #error 指令

#error 指令用于在预处理阶段生成错误信息,这在条件编译中特别有用。

#if defined(WIN32) && !defined(_MSC_VER)#error "This code requires Microsoft Visual C++ to compile on Windows."
#endif

总结

预处理指令在C++编译过程中起着重要的作用,它们在编译器开始编译代码之前对源代码进行处理。常见的预处理指令包括#include#define#undef、条件编译指令、#pragma#line#error。掌握这些预处理指令的使用方法可以提高代码的可移植性和可维护性,帮助你在不同的编译环境中灵活地控制代码的编译行为。

相关文章:

青少年编程与数学 02-010 C++程序设计基础 11课题、程序结构

青少年编程与数学 02-010 C程序设计基础 11课题、程序结构 一、C程序结构二、main函数1. main 函数的基本形式1.1 无参数形式1.2 带参数形式 2. 参数解释3. 示例3.1 无参数形式3.2 带参数形式 4. 编译和运行4.1 编译4.2 运行 5. main 函数的返回值6. 总结 三、预处理指令1. #in…...

Node.js与MySQL的深入探讨

Node.js与MySQL的深入探讨 引言 Node.js,一个基于Chrome V8引擎的JavaScript运行时环境,以其非阻塞、事件驱动的方式在服务器端应用中占据了一席之地。MySQL,作为一款广泛使用的开源关系型数据库管理系统,凭借其稳定性和高效性,成为了许多应用的数据库选择。本文将深入探…...

【洛谷贪心算法题】P2240部分背包问题

【解题思路】 贪心策略选择 对于部分背包问题&#xff0c;关键在于如何选择物品放入背包以达到最大价值。由于物品可以分割&#xff0c;遍历排序后的物品数组&#xff0c;根据物品重量和背包剩余容量的关系&#xff0c;决定是将整个物品放入背包还是分割物品放入背包&#xff…...

ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;地表覆盖图的矢量化是一项至关重要的任务。天地图作为中国国家级的地理信息服务平台&#xff0c;提供了丰富且详尽的地表覆盖数据。然而&#xff0c;这些数据通常以栅格格式存在&#xff0c;不利于进行空间分析和数据…...

AF3 pair_sequences函数解读

AlphaFold3 msa_pairing模块的pair_sequences函数的核心目标是基于 MSA(多序列比对)中的物种信息,在多条链之间建立 MSA 配对索引,从而帮助 AlphaFold3 捕捉共进化信息,提升蛋白复合物预测的准确性。函数pair_sequences 通过调用 _make_msa_df、 _create_species_dict 以…...

在VSCode 中使用通义灵码最新版详细教程

在 VSCode 中使用通义灵码&#xff1a;最新版详细教程与使用场景 Visual Studio Code&#xff08;简称 VSCode&#xff09;是一款由微软开发的轻量级、功能强大的开源代码编辑器&#xff0c;支持多种编程语言&#xff0c;深受开发者喜爱。而通义灵码&#xff08;TONGYI Lingma…...

ssh和rdp踩坑

ssh和rdp&#xff08;远程桌面&#xff09;踩坑 使用微软账号登录windows的话&#xff0c;ssh的用户名是本地用户名&#xff08;就是c盘用户文件夹下的用户名&#xff09;&#xff0c;rdp的用户名是微软账号用户名&#xff0c;但是密码都是微软账号的密码&#xff0c;跟登录密…...

Linux驱动学习(四)--字符设备注册

上一节讲到的字符设备注册与销毁是通过cdev_init、cdev_add、cdev_del等函数分步执行的&#xff0c;本小节用一种更简单的方式&#xff0c;来注册字符设备 register_chrdev 如果major为0&#xff0c;该函数将动态的分配一个主设备号并且返回对应的值如果major > 0&#xff…...

vue3 下载文件 responseType-blob 或者 a标签

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 来下载文件&#xff0c;并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例&#xff1a; 使用 axios 下载文件 首先&#xff0c;确保你已经安装了 axios&#xff1a; npm install axios然后在你…...

Meta最新研究:从单张照片到3D数字人的革命性突破

随着人工智能技术的发展,3D建模和虚拟人物生成逐渐变得更加普及和高效。Meta(前身为Facebook)的最新研究成果展示了如何仅通过一张普通手机拍摄的照片就能生成高质量、全方位的3D数字人。这项技术不仅适用于虚拟试衣、游戏角色建模,还能广泛应用于AR/VR内容生成等领域。本文…...

大中型虚拟化园区网络设计

《大中型虚拟化园区网络设计》属于博主的“园区网”专栏&#xff0c;若想成为HCIE&#xff0c;对于园区网相关的知识需要非常了解&#xff0c;更多关于园区网的内容博主会更新在“园区网”专栏里&#xff0c;请持续关注&#xff01; 一.前言 华为云园区网络解决方案(简称Cloud…...

Vue 项目中配置代理的必要性与实现指南

Vue 项目中配置代理的必要性与实现指南 在 Vue 前端项目的开发过程中&#xff0c;前端与后端地址通常不同&#xff0c;可能引发跨域问题。为了在开发环境下顺畅地请求后端接口&#xff0c;常常会通过配置**代理&#xff08;proxy&#xff09;**来解决问题。这篇文章将详细解析…...

chromadb向量数据库使用 (1)

目录 完整代码代码解释 完整代码 import chromadb chroma_client chromadb.Client()collection chroma_client.create_collection(name"my_collection")collection.add(documents["This is a document about pineapple","This is a document about…...

玩机日记 12 fnOS使用lucky反代https转发到外网提供服务

目录 1、安装lucky 2、更新lucky 3、上传ssl证书 4、设置安全入口&#xff0c;替换fnOS的应用url 5、添加https反代 这一篇主要是解决一下飞牛反代https的问题。可以先看玩机日记 12.5 在PVE Windows11上部署本地AI模型&#xff0c;使用群晖反代https转发到外网提供服务&a…...

5分钟学会SpringAI

引言 要开发一个Spring AI的入门案例&#xff0c;我们可以从一个简单的Spring Boot项目开始&#xff0c;然后集成Spring AI的功能来实现基本的生成式AI任务。下面是一个步骤指南&#xff0c;帮助你快速启动并运行一个简单的Spring AI应用。 步骤 1: 准备环境 首先&#xff0…...

专业的UML开发工具StarUML

专业的UML开发工具StarUML 可靠的软件建模软件StarUML StarUML 是一款支持统一建模语言 (UML)框架的开源建模软件。它提供了几种类型的图表&#xff0c;并允许用户生成多种语言的代码。在它的帮助下&#xff0c;软件开发人员可以创建设计、概念和编码解决方案。但是&#xff0…...

go语言环境下载与配置(Windows)

下载 Go下载 - Go语言中文网 - Golang中文社区 建议在D盘中创建文件夹安装到 D 盘 &#xff0c;方便进行管理&#xff0c;然后进行傻瓜式安装。 安装 验证安装 go version 安装成功 配置环境变量 winE --> 右击此电脑 --> 选择属性 --> 高级系统设置 --> 点击…...

矩阵系列 题解

1.洛谷 P1962 斐波那契数列 题意 大家都知道&#xff0c;斐波那契数列是满足如下性质的一个数列&#xff1a; F n { 1 ( n ≤ 2 ) F n − 1 F n − 2 ( n ≥ 3 ) F_n \left\{\begin{aligned} 1 \space (n \le 2) \\ F_{n-1}F_{n-2} \space (n\ge 3) \end{aligned}\right. …...

C++ 正则表达式分组捕获入门指南

在 C 中&#xff0c;正则表达式&#xff08;regex&#xff09;是一种用于匹配字符串模式的强大工具。正则表达式不仅能帮助你查找符合特定模式的字符&#xff0c;还能捕获匹配的子字符串&#xff08;即分组捕获&#xff09;。这篇文章将介绍 C 正则表达式中的分组捕获机制&…...

动态数据表格:基于 PrimeFaces 的运行时列选择实现

在现代的 Web 应用开发中&#xff0c;动态数据表格是一个非常实用的功能&#xff0c;它允许用户根据自己的需求选择显示哪些列。这种灵活性不仅提升了用户体验&#xff0c;还能适应不同的数据展示需求。今天&#xff0c;我们将通过一个具体的实现案例&#xff0c;展示如何使用 …...

Plugin ‘mysql_native_password‘ is not loaded`

Plugin ‘mysql_native_password’ is not loaded mysql_native_password介绍1. 使用默认的认证插件2. 修改 my.cnf 或 my.ini 配置文件3. 加载插件&#xff08;如果确实没有加载&#xff09;4. 重新安装或检查 MySQL 版本 遇到错误 ERROR 1524 (HY000): Plugin mysql_nativ…...

Kotlin 知识点二 延迟初始化和密封类

对变量延迟初始化 Kotlin 语言的许多特性&#xff0c;包括变量不可变&#xff0c;变量不可为空&#xff0c;等等。这些特性 都是为了尽可能地保证程序安全而设计的&#xff0c;但是有些时候这些特性也会在编码时给我们带来不 少的麻烦。 比如&#xff0c;如果你的类中存在很多…...

DeepSeek开源周第二弹:DeepEP如何用RDMA+FP8让MoE模型飞起来?

一、引言&#xff1a;MoE模型的通信瓶颈与DeepEP的诞生 在混合专家&#xff08;MoE&#xff09;模型训练中&#xff0c;专家间的全对全&#xff08;All-to-All&#xff09;通信成为性能瓶颈。传统方案在跨节点传输时带宽利用率不足50%&#xff0c;延迟高达300μs以上。DeepSee…...

C++ Primer 成员访问运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

无人机遥控器的亮度 和 两个工作频率

工作频率 2.4000-2.4835 GHz &#xff0c; 5.725-5.850 GHz 1.这是一个无人机的遥控器的两个工作频率&#xff0c;为什么会有两个工作频率&#xff1f; 无人机的遥控器采用双频段设计&#xff08;2.4GHz 和 5.8GHz&#xff09;&#xff0c;主要是为了解决以下问题并优化性…...

ubuntu20.04安装docker

3台主机&#xff0c;2台都能正确安装&#xff0c;第三台怎么都安装不成功&#xff1b; 3台主机都是一样的配置和系统&#xff1b; 后来看来是其外网的ip不一样&#xff0c;导致第三台主机可能被Qiang&#xff0c;不过错误只是提示签名不正确&#xff0c;在设置签名时好像没有…...

【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现

项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…...

深入解析Crawl4AI:为AI应用量身定制的高效开源爬虫框架

引言 在当今数据驱动的时代&#xff0c;人工智能&#xff08;AI&#xff09;和大型语言模型&#xff08;LLM&#xff09;的发展对高质量数据的需求日益增长。如何高效地从互联网上获取、处理和提取有价值的数据&#xff0c;成为了研究人员和开发者面临的关键挑战。Crawl4AI作为…...

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …...

深度生成模型(二)——基本概念与数学建模

上一篇笔记中提到了端到端模型底层核心采用了深度生成模型&#xff0c;先简单梳理一下 生成式人工智能&#xff08;Artificial Intelligence Generated Content&#xff0c;AIGC&#xff09;经历了从早期基于概率模型和规则系统的方法到现代深度生成模型的跨越式发展 深度神经…...

4.WebSocket 配置与Nginx 的完美结合

序言 在现代 web 应用中&#xff0c;WebSocket 作为一种全双工通信协议&#xff0c;为实时数据传输提供了强大的支持。若要确保 WebSocket 在生产环境中的稳定性和性能&#xff0c;使用 Nginx 作为反向代理服务器是一个明智的选择。本篇文章将带你了解如何在 Nginx 中配置 Web…...

【R语言】dplyr包经典函数summarise函数

dplyr包经典函数summarise函数&#xff0c;后面改名乘reframe函数了&#xff0c;但是summarise仍然适用 这个函数的返回结果是一个新的数据框&#xff0c;下面讲一下几种常见用法 示例数据为R自带的数据集mtcars 1.不分组 mtcars %>%summarise(mean mean(disp), n n()…...

Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)

漏洞简介&#xff1a; Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境&#xff1a; 春秋云镜中的漏洞靶标&#xff0c;CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…...

8.Dashboard的导入导出

分享自己的Dashboard 1. 在Dashboard settings中选择 JSON Model 2. 导入 后续请参考第三篇导入光放Dashboard&#xff0c;相近...

RabbitMQ 的介绍与使用

一. 简介 1> 什么是MQ 消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09;&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO先入先出&#xff0c;只不过队列中存放的内容是message而已。 其主要用途&#xff1a;不同进程Process/线程T…...

unity学习58:下拉列表框 dropdown的caption和options

目录 1 下拉列表框 dropdown 1.1 创建dropdown 1.2 dropdown的子物体构成 1.3 drop的子物体构成:默认灰色的模板 template 1.3.1 默认灰色的模板 template 实际是生效的&#xff0c;只是不直接显示 1.3.2 其中 item下面是下拉选项的格式 1.3.3 可以修改和新增 1.4 drop…...

STM32中使用PWM对舵机控制

目录 1、硬件JIE 2、PWM口配置 3、角度转换 4、main函数中应用 5、工程下载连接 1、硬件介绍 单片机&#xff1a;STM32F1 舵机&#xff1a;MG995 2、PWM口配置 20毫秒的PWM脉冲占空比&#xff0c;对舵机控制效果较好 计算的公式&#xff1a; PSC、ARR值的选取&#xf…...

如何免费使用稳定的deepseek

0、背景&#xff1a; 在AI辅助工作中&#xff0c;除了使用cursor做编程外&#xff0c;使用deepseek R1进行问题分析、数据分析、代码分析效果非常好。现在我经常会去拿行业信息、遇到的问题等去咨询R1&#xff0c;也给了自己不少启示。但是由于官网稳定性很差&#xff0c;很多…...

STM32内存五区及堆栈空间大小设置(启动文件浅析)

前言 嘿&#xff0c;朋友们&#xff01;今天咱们来聊聊STM32的内存五区和堆栈空间大小设置。这可是嵌入式开发里的“必修课”&#xff0c;要是没整明白&#xff0c;程序说不定就“翻车”了。别担心&#xff0c;我这就带你一步步搞懂这事儿&#xff0c;让你轻松上手&#xff0c…...

LVS+Keepalived高可用群集配置案例

以下是一个 LVSKeepalived 高可用群集配置案例&#xff1a; 1、环境准备 LVS 主调度器&#xff08;lvs1&#xff09;&#xff1a;IP 地址为 192.168.8.101&#xff0c;心跳 IP 为 192.168.4.101LVS 备调度器&#xff08;lvs2&#xff09;&#xff1a;IP 地址为 192.168.8.102…...

MySQL 中如何解决深度分页的问题? MySQL中 join、inner join、left join、right join区别

MySQL 中如何解决深度分页的问题&#xff1f; 在 MySQL 中解决深度分页问题的核心思路是减少扫描的数据量&#xff0c;尤其是避免通过 LIMIT offset, size 导致的大范围数据扫描。以下是三种优化方法及其原理、适用场景和注意事项&#xff1a; 1. 子查询 覆盖索引&#xff08…...

本地部署DeepSeek-R1(Ollama+Docker+OpenWebUI知识库)

安装Ollama 打开 Ollama官网 https://ollama.com/下载安装 Ollama服务默认只允许本机访问&#xff0c;修改允许其它主机访问 OLLAMA_HOST0.0.0.0 ollama serve也可以添加系统环境变量 都知道模型体积很大&#xff0c;顺便也通过环境变量修改模型存放位置&#xff0c;我这…...

ubuntu22.04安装docker engine

在Ubuntu 22.04上安装Docker Engine可以通过以下步骤完成&#xff1a; 更新系统包索引&#xff1a; sudo apt update安装必要的依赖包&#xff1a; 这些包允许apt通过HTTPS使用仓库。 sudo apt install -y apt-transport-https ca-certificates curl software-properties-commo…...

Protobuf原理与序列化

本文目录 1. Protobuf介绍2. Protobuf的优势3. 编写Protobuf头部全局定义消息结构具体定义字段类型定义标签号Base128编码 4. TLVProtobuf的TLV编码如何通过Varint表示300&#xff1f; 5. 编译Protobuf6. 构造消息对象 前言&#xff1a;之前写项目的时候只是简单用了下Protobuf…...

Redis|事务

文章目录 是什么能干嘛Redis 事务 VS 数据库事务怎么玩小总结 是什么 首先回想一下什么是数据库的事务&#xff1f;数据库事务是指作为单个逻辑单元执行的一系列操作&#xff0c;具备以下四个关键特性&#xff08;ACID&#xff09;&#xff1a; 原子性&#xff08;Atomicity&am…...

树莓百度百科更新!宜宾园区业务再添新篇

树莓集团宜宾园区业务不断拓展&#xff0c;主要体现在以下几个方面&#xff1a; 产业布局 -聚焦数字经济核心领域&#xff1a;涵盖软件开发、人工智能、大数据等&#xff0c;吸引众多上下游企业入驻&#xff0c;形成从芯片研发、软件开发到系统集成的完整产业链条。 -推进“双…...

设计模式教程:模板方法模式(Template Method Pattern)

一、概述 模板方法模式&#xff08;Template Method Pattern&#xff09; 是一种行为型设计模式&#xff0c;旨在定义一个操作中的算法骨架&#xff0c;而将一些步骤的具体实现延迟到子类中。通过模板方法模式&#xff0c;父类可以不改变算法结构的情况下&#xff0c;让子类重…...

unity学习54:图片+精灵+遮罩mask,旧版文本 text 和新的TMP文本

目录 1 图片 image 1.1 如果直接导入image 1.2 图片 image 和精灵 sprite 1.2.1 继续修改上面的格式 texture type 是default 1.2.2 再次关联到UI的 image 物体上就可以了 1.3 图片和遮罩 mask 1.3.1 创建1个父物体和1个子物体&#xff0c;分别都是image 1.3.2 如果父…...

【Java项目】基于Spring Boot的校园闲置物品交易网站

【Java项目】基于Spring Boot的校园闲置物品交易网站 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;校园闲置物品交易网站是一个典型的管理系统&#xff0c;主要功能包括管理员&#xff1a;首页、个人中心、用户管理、商品类…...

网页制作08-html,css,javascript初认识のhtml使用框架结构,请先建立站点!

框架一般由框架集和框架组成。 框架集就像一个大的容器&#xff0c;包括所有的框架&#xff0c;是框架的集合。 框架是框架集中一个独立的区域用于显示一个独立的网页文档。 框架集是文件html&#xff0c;它定义一组框架的布局和属性&#xff0c;包括框架的数目&#xff0c;框架…...