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

C++类与对象深度解析(一):从引用、内联函数到构造析构的编程实践

目录

一.引用

引用的特征:1.引用必须初始化

2.本质是别名

3.函数参数传递

4.常引用

5.函数返回值

6.权限 放大 缩小 平移

引用 vs 指针

二.内联函数

关键点说明

三.宏函数

四.类

什么是类?

简单的类

五.构造函数与析构函数

1. 构造函数(Constructor)

使用环境:

2. 析构函数(Destructor)

作用

示例

总结

六.this指针

1. 什么是 this 指针?

2. 为什么需要 this 指针?

3. 注意事项

七.拷贝构造函数

一、什么是拷贝构造函数?

二、浅拷贝(Shallow Copy)

什么是浅拷贝?

浅拷贝的问题

三、深拷贝(Deep Copy)

什么是深拷贝?

深拷贝解决方案

四、关键总结


一.引用

引用:引用不是新定义一个量而是给已存变量取一个别名,它和它引用的变量共用一块空间

引用的特征:

1.引用必须初始化

引用必须在声明时初始化,且不能重新绑定到其他对象。

int x = 10;
int &ref = x;  // 正确:引用必须初始化
// int &ref2;  // 错误:未初始化的引用
2.本质是别名

引用是变量的另一个名字,没有独立的内存地址,操作引用等价于操作原变量。

int x = 10;
int &ref = x;  // 正确:引用必须初始化
// int &ref2;  // 错误:未初始化的引用
3.函数参数传递

引用常用于函数参数,避免拷贝开销且允许修改实参(替代指针的简洁语法)。

void swap(int &x, int &y) {int temp = x;x = y;y = temp;
}int main() {int a = 1, b = 2;swap(a, b);  // 直接传递变量,无需取地址cout << a << " " << b;  // 输出 2 1
}
4.常引用

常引用可以绑定到临时对象或字面量,且不能通过引用修改原对象

const int &r1 = 42;  // 正确:常引用可绑定到字面量
int x = 10;
const int &r2 = x;   // 正确:r2 是 x 的只读别名
// r2 = 20;          // 错误:不能通过常引用修改值
5.函数返回值

引用可以作为函数返回值,但需确保返回的对象生命周期有效(避免悬空引用)。

int global = 100;int& getGlobal() {return global;  // 返回全局变量的引用(安全)
}int& dangerous() {int local = 50;return local;   // 错误:返回局部变量的引用(悬空引用)
}
6.权限 放大 缩小 平移
int main()
{//权限不能放大//const int a = 0;//int& b = a;//可以只是一个拷贝const int c = 0;int d = c;//引用过程中权限可以平移或者缩小int x = 0;int& y = x;//权限的平移const int& z = x;//权限的缩小++x;//可以,因为上面是缩小了z的权限//不可以++z;double dd = 1.11;int ii = dd;//  不可以   int& rii = dd;const int& rii = dd;//临时变量具有常性return 0;
}
引用 vs 指针
特性引用指针
初始化必须初始化可以声明后赋值
重新绑定不能可以
空值不能为空可以为 nullptr
内存占用无独立内存地址有自己的内存地址
语法简洁性直接操作对象(无需 * 或 ->需要解引用操作符(* 或 ->

二.内联函数

内联函数建议编译器将函数体直接插入调用位置(类似宏展开),以减少函数调用的开销(压栈、跳转、返回等)。适用于短小且频繁调用的函数。

#include <iostream>// 1. 使用 inline 关键字声明内联函数
inline int add(int a, int b) {return a + b;
}// 2. 类内定义的成员函数默认是内联的
class Calculator {
public:int multiply(int a, int b) {  // 隐式内联return a * b;}inline int subtract(int a, int b) {  // 显式内联return a - b;}
};int main() {int x = 5, y = 3;// 调用内联函数 addstd::cout << "加法结果: " << add(x, y) << std::endl;  // 编译器可能直接替换为 x + yCalculator calc;// 调用类内联函数std::cout << "乘法结果: " << calc.multiply(x, y) << std::endl;std::cout << "减法结果: " << calc.subtract(x, y) << std::endl;return 0;
}
关键点说明
  1. inline 关键字
    用于建议编译器将函数内联,但最终是否内联由编译器决定(可通过编译器优化选项控制,如 -O2)。

  2. 类成员函数的内联性

    • 在类内部直接定义的成员函数(如 multiply)默认是内联的。
    • 也可以在类外定义成员函数时使用 inline 关键字(需在头文件中实现)。
  3. 适用场景

    • 函数体短小(如 1-3 行代码)。
    • 频繁调用且对性能敏感的场景(如循环中的操作)。
  4. 注意事项

    • 避免内联复杂函数(如递归函数或包含循环的函数)。
    • 内联函数定义必须对调用者可见,通常直接写在头文件中。

三.宏函数

 优点-- 不需要建立栈帧,提高调用效率
 缺点-- 复杂,容易出错、可读性差、不能调试

举例三个问题的宏函数

Add(a | b, a & b); // (a | b + a & b)

为例:
以下三个有问题:

#define Add(int x, int y) return (x+y);
#define Add(x, y) x+y
#define Add(x, y) (x+y)

原因:(+ 与- 的优先级大于| 与&)

成功示范:
 

#define Add(x, y) ((x)+(y))

四.类

什么是类?
  • 是对象的“蓝图”或“模板”,用于定义对象的属性(成员变量)行为(成员函数)
  • 通过类可以创建具体的对象(实例),每个对象拥有独立的属性值。
  • 类的核心思想是封装:将数据和对数据的操作绑定在一起,并控制外部对数据的访问权限。

简单的类
#include <iostream>
using namespace std;// 定义一个 Person 类
class Person {
public: // 公有成员,外部可以直接访问char name;  // 成员变量:姓名int age;      // 成员变量:年龄// 成员函数:显示信息void display() {cout << "姓名: " << name << ", 年龄: " << age << endl;}
};int main() {// 创建 Person 类的对象Person person1;// 设置对象的属性person1.name = "张三";person1.age = 25;// 调用对象的方法person1.display(); // 输出:姓名: 张三, 年龄: 25return 0;
}

封装:通过 private 隐藏内部细节,通过 public 提供安全接口

五.构造函数与析构函数

1. 构造函数(Constructor)

作用

  • 在对象创建时自动调用,用于初始化对象的成员变量。
  • 可以重载(定义多个不同参数的构造函数)。
  • 没有返回类型,且名称与类名相同

默认构造函数:无参构造函数,全缺省构造函数,编译器默认生成的构造函数

示例

构造函数:

class Person {
public:char name;int age;// 默认构造函数(无参数)Person() {name = "Unknown";age = 0;cout << "默认构造函数被调用" << endl;}// 带参数的构造函数Person(string n, int a) {name = n;age = a;cout << "带参数的构造函数被调用" << endl;}
};
使用环境:
int main() {Person p1;                // 调用默认构造函数Person p2("Alice", 25);   // 调用带参数的构造函数return 0;
}
2. 析构函数(Destructor)
作用
  • 在对象销毁时自动调用,用于释放对象占用的资源(如内存、文件句柄)。
  • 名称是类名前加 ~没有参数和返回类型
  • 不能重载(每个类只有一个析构函数)。
示例

析构函数:

class FileHandler {
private:FILE* file;
public:// 构造函数:打开文件FileHandler(const char* filename) {file = fopen(filename, "r");cout << "文件已打开" << endl;}// 析构函数:关闭文件~FileHandler() {if (file) {fclose(file);cout << "文件已关闭" << endl;}}
};

使用场景:
 

int main() {Person p1;                // 调用默认构造函数Person p2("Alice", 25);   // 调用带参数的构造函数return 0;
}
总结
特性构造函数析构函数
调用时机对象创建时对象销毁时
主要用途初始化成员变量释放资源(如内存、文件)
重载支持重载(多个构造函数)不支持重载(唯一析构函数)
默认生成未定义时编译器生成默认构造函数未定义时编译器生成默认析构函数

通过合理使用构造函数和析构函数,可以确保对象在生命周期内正确初始化和清理资源,避免内存泄漏和逻辑错误。

六.this指针

1. 什么是 this 指针?

在 C++ 中,this 是一个指向当前对象的指针

  • 每个类的非静态成员函数(包括构造函数和析构函数)内部都可以访问 this
  • this 指针是隐式存在的,不需要手动定义。
  • 它的类型是 ClassName*(例如,Person*Car*)。
class Person {
public:string name;void printName() {// 实际上等价于:cout << this->name << endl;cout << name << endl;}
};

2. 为什么需要 this 指针?

当你在类的成员函数中访问成员变量或调用成员函数时,编译器实际上是通过 this 指针来找到当前对象的成员
例如:

class Person {
public:string name;void printName() {// 实际上等价于:cout << this->name << endl;cout << name << endl;}
};

3. 注意事项

this 是一个指针静态函数属于类,而不是对象,因此不能使用 this。this指针是形参所以是存在栈中的

class MyClass {
public:static void staticFunc() {// this->xxx;  // 错误!静态函数没有 this}
};

七.拷贝构造函数

一、什么是拷贝构造函数?

拷贝构造函数是一个特殊的构造函数,用于通过已存在的对象创建一个新对象。当发生以下情况时会自动调用:

  1. 用已有对象初始化新对象
  2. 对象作为函数参数传递(值传递)
  3. 对象作为函数返回值(值返回)

基本语法:

ClassName(const ClassName& other);
二、浅拷贝(Shallow Copy)
什么是浅拷贝?
  • 默认的拷贝构造函数是浅拷贝
  • 直接复制成员变量的值(包括指针地址)
  • 如果类中有指针成员,会导致多个对象指向同一块内存
浅拷贝的问题
class ShallowCopy {
public:int* data;//构造函数ShallowCopy(int val) {data = new int(val); // 动态分配内存}// 默认拷贝构造函数是浅拷贝:ShallowCopy(const ShallowCopy& other) = default;//析构函数~ShallowCopy() {delete data; // 释放内存}
};int main() {ShallowCopy obj1(10);ShallowCopy obj2 = obj1; // 浅拷贝// 问题:obj1和obj2的data指向同一块内存// 当main结束时,obj2先调用析构函数释放内存// 然后obj1的析构函数会尝试释放已释放的内存 → 程序崩溃!
}
三、深拷贝(Deep Copy)
什么是深拷贝?
  • 需要手动实现拷贝构造函数
  • 为指针成员分配新的内存
  • 复制指针指向的内容,而不是复制指针地址
深拷贝解决方案
class DeepCopy {
public:int* data;DeepCopy(int val) {data = new int(val);}// 手动实现深拷贝构造函数DeepCopy(const DeepCopy& other) {data = new int(*other.data); // 分配新内存并复制值}// 注意:还需要重载赋值运算符(规则同理)DeepCopy& operator=(const DeepCopy& other) {if (this != &other) {delete data;            // 释放原有内存data = new int(*other.data); // 深拷贝}return *this;}~DeepCopy() {delete data;}
};int main() {DeepCopy obj1(20);DeepCopy obj2 = obj1; // 深拷贝// obj1.data 和 obj2.data 指向不同内存// 析构时不会出现重复释放问题
}
四、关键总结
浅拷贝深拷贝
复制内容复制指针地址复制指针指向的内容
内存安全性多个对象共享同一内存,易导致崩溃每个对象拥有独立内存,安全可靠
实现方式默认拷贝构造函数需要手动实现拷贝构造函数
适用场景无动态内存分配的简单类有指针成员或动态分配资源的类

相关文章:

C++类与对象深度解析(一):从引用、内联函数到构造析构的编程实践

目录 一.引用 引用的特征&#xff1a;1.引用必须初始化 2.本质是别名 3.函数参数传递 4.常引用 5.函数返回值 6.权限 放大 缩小 平移 引用 vs 指针 二.内联函数 关键点说明 三.宏函数 四.类 什么是类&#xff1f; 简单的类 五.构造函数与析构函数 1. 构造函数&…...

SpringCloud-使用FFmpeg对视频压缩处理

在现代的视频处理系统中&#xff0c;压缩视频以减小存储空间、加快传输速度是一项非常重要的任务。FFmpeg作为一个强大的开源工具&#xff0c;广泛应用于音视频的处理&#xff0c;包括视频的压缩和格式转换等。本文将通过Java代码示例&#xff0c;向您展示如何使用FFmpeg进行视…...

Pytorch实现之粒子群优化算法在GAN中的应用

简介 简介:主要是采用了粒子群优化(PSO)算法来优化GAN的一个训练。PSO是一种是一种基于种群的随机优化技术。这种优化技术是通过粒子群进行的,粒子群在每次迭代中都会更新自己。对于给定的目标函数,这种方法利用一个搜索空间,在那里粒子群移动,找到所需的全局最小值。这…...

http+nginx

HTTP协议&#xff1a;超文本传输协议&#xff0c;Hyper Text transfer protocol&#xff08;发明者&#xff1a;蒂姆.伯纳斯.李&#xff09; 1.超文本 包含超链接(link)和各种多媒体元素的文本&#xff0c;这些超文本文件彼此相连&#xff0c;形成网状&#xff08;web&…...

网络运维学习笔记 014网工初级(HCIA-Datacom与CCNA-EI)ACL访问控制列表

文章目录 ACL&#xff08;Access Control List&#xff0c;访问控制列表&#xff09;思科&#xff1a;实验1&#xff08;标准ACL&#xff09;&#xff1a;实验2&#xff08;扩展ACL&#xff09;&#xff1a;实验3&#xff08;ACL在VTY的使用场景&#xff09;&#xff1a; 华为&…...

002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡

前文地址&#xff1a; 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控 文章目录 8.Feign远程调用、loadbalancer负载均衡整合1.OpenFeign整合1.引入依赖2.启动类添加EnableFeignClients注解3.yml配置4.日志配置5.远程调用测试6.服务…...

机器视觉检测中,2D面阵相机和线扫相机的区别

2D面阵相机和线扫相机是工业视觉系统中常用的两种相机类型&#xff0c;各有其特点和应用场景。 2D面阵相机 特点&#xff1a; 成像方式&#xff1a;通过二维传感器一次性捕捉整个场景的图像。 分辨率&#xff1a;分辨率由传感器的像素数决定&#xff0c;常见的有百万像素到几千…...

解锁观察者模式:Java编程中的高效事件管理之道

系列文章目录 后续补充~~~ 文章目录 一、引言&#xff1a;探索观察者模式的奥秘二、观察者模式的核心原理2.1 模式定义与概念2.2 关键角色剖析2.3 工作机制深度解析 三、观察者模式在 Java 中的实现3.1 手动实现观察者模式3.2 使用 JDK 内置的观察者模式3.3 代码示例解析与对比…...

Ubuntu编译ZLMediaKit

下载 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init安装工具 sudo apt install -y build-essential sudo apt install -y gcc g sudo apt install -y cmakesudo apt install -y build-essential cmake git libssl-dev libsdl1.…...

全面指南:使用JMeter进行性能压测与性能优化(中间件压测、数据库压测、分布式集群压测、调优)

目录 一、性能测试的指标 1、并发量 2、响应时间 3、错误率 4、吞吐量 5、资源使用率 二、压测全流程 三、其他注意点 1、并发和吞吐量的关系 2、并发和线程的关系 四、调优及分布式集群压测&#xff08;待仔细学习&#xff09; 1.线程数量超过单机承载能力时的解决…...

鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )

前言 在纯血鸿蒙中最具有用户特色的效果就是自定义的动画效果。在纯血鸿蒙中有多种定义方式&#xff0c;但是今天介绍的是ApI中的自定义动画。 注意: 动画本身具有生命周期&#xff0c;但是不支持在UIAbility的文件使用&#xff0c;简单而言就是不允许在UIAbility生命周期中…...

Grok 3.0 Beta 版大语言模型评测

2025年2月17日至18日&#xff0c;全球首富埃隆马斯克&#xff08;Elon Musk&#xff09;携手其人工智能公司xAI&#xff0c;在美国重磅发布了Grok 3.0 Beta版。这款被誉为“迄今为止世界上最智能的语言模型”的AI&#xff0c;不仅集成了先进的“DeepSearch”搜索功能&#xff0…...

IDEA中查询Maven项目的依赖树

在Maven项目中&#xff0c;查看项目的依赖树是一个常见的需求&#xff0c;特别是当你需要了解项目中直接或间接依赖了哪些库及其版本时。你可以通过命令行使用Maven的dependency:tree插件来做到这一点。这个命令会列出项目中所有依赖的树状结构。 打开idea项目的终端&#xff…...

学习aigc

DALLE2 论文 Hierarchical Text-Conditional Image Generation with CLIP Latents [2204.06125] Hierarchical Text-Conditional Image Generation with CLIP LatentsAbstract page for arXiv paper 2204.06125: Hierarchical Text-Conditional Image Generation with CLIP L…...

springboot整合mybatis-plus【详细版】

目录 一&#xff0c;简介 1. 什么是mybatis-plus2.mybatis-plus特点 二&#xff0c;搭建基本环境 1. 导入基本依赖&#xff1a;2. 编写配置文件3. 创建实体类4. 编写controller层5. 编写service接口6. 编写service层7. 编写mapper层 三&#xff0c;基本知识介绍 1. 基本注解 T…...

【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?

前言&#xff1a; Hello大家好&#xff0c;我是Dream。不知不觉2024年已经过去&#xff0c;自己也马上迈入23岁&#xff0c;感慨时间飞快&#xff0c;从19岁刚入大学加入CSDN&#xff0c;到现在大学毕业已经整整四年了。CSDN陪伴我走过了最青涩的四年大学时光&#xff0c;在这里…...

在VS中通过vcpkg包管理器来安装使用qt5

常用指令 .\vcpkg install 库名 .\vcpkg install 库名版本号.\vcpkg install 库名 --trip x86-windows.\vcpkg list.\vcpkg search 库名 .\vcpkg x-all-installed --7zip PS G:\vcpkg> .\vcpkg help usage: vcpkg <command> [--switches] [--optionsvalues] [argume…...

【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道

文章目录 从结构到操作&#xff1a;手撕AVL树的实现一、AVL树介绍1.1 什么是AVL树1.2 平衡因子的定义1.3 平衡的意义1.4 AVL树的操作 二、AVL树的节点结构2.1 节点结构的定义&#xff1a; 三、插入操作3.1 插入操作概述3.2 步骤1&#xff1a;按二叉查找树规则插入节点3.3 步骤2…...

CPU、SOC、MPU、MCU--详细分析四者的区别

一、CPU 与SOC的区别 1.CPU 对于电脑&#xff0c;我们经常提到&#xff0c;处理器&#xff0c;内存&#xff0c;显卡&#xff0c;硬盘四大部分可以组成一个基本的电脑。其中的处理器——Central Processing Unit&#xff08;中央处理器&#xff09;。CPU是一台计算机的运算核…...

nacos编写瀚高数据库插件

1、下载nacos源码 git clone gitgithub.com:alibaba/nacos.git 2、引入瀚高驱动 <dependency><groupId>com.highgo</groupId><artifactId>jdbc</artifactId><version>${highgo.version}</version></dependency> 3、DataSource…...

使用excel中的VBA合并多个excel文件

需求是这样的&#xff1a; 在Windows下&#xff0c;用excel文件让多个小组填写了统计信息&#xff0c;现在我需要把收集的多个文件汇总到一个文件中&#xff0c;前三行为标题可以忽略&#xff0c;第四行为收集信息的列名&#xff0c;处理每一行数据的时候&#xff0c;发现某一行…...

linux 安装启动zookeeper全过程及遇到的坑

1、下载安装zookeeper 参考文章&#xff1a;https://blog.csdn.net/weixin_48887095/article/details/132397448 2、启动失败 1、启动失败JAVA_HOME is not set and java could not be found in PATH 已安装 JAVA 配置了JAVA_HOME,还是报错解决方法&#xff1a;参考&#xf…...

JAVA JUC 并发编程学习笔记(一)

文章目录 JUC进程概述对比 线程创建线程ThreadRunnableCallable 线程方法APIrun startsleep yieldjoininterrupt打断线程打断 park终止模式 daemon不推荐 线程原理运行机制线程调度未来优化 线程状态查看线程 同步临界区syn-ed使用锁同步块同步方法线程八锁 锁原理Monitor字节码…...

内容中台架构下智能推荐系统的算法优化与分发策略

内容概要 在数字化内容生态中&#xff0c;智能推荐系统作为内容中台的核心引擎&#xff0c;承担着用户需求与内容资源精准匹配的关键任务。其算法架构的优化路径围绕动态特征建模与多模态数据融合展开&#xff0c;通过深度强化学习技术实现用户行为特征的实时捕捉与动态更新&a…...

Java 内存区域详解

1 常见面试题 1.1 基本问题 介绍下Java内存区域&#xff08;运行时数据区&#xff09;Java对象的创建过程&#xff08;五步&#xff0c;建议能够默写出来并且要知道每一步虚拟机做了什么&#xff09;对象的访问定位的两种方式&#xff08;句柄和直接指针两种方式&#xff09;…...

jEasyUI 创建学校课程表

jEasyUI 创建学校课程表 引言 随着信息技术的飞速发展,教育行业也迎来了数字化转型的浪潮。学校课程表的创建和管理作为教育信息化的重要组成部分,其效率和准确性直接影响到学校的教学秩序。jEasyUI,作为一款优秀的开源UI框架,凭借其易用性、灵活性和丰富的组件,成为了许…...

利用 OpenCV 进行棋盘检测与透视变换

利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域&#xff0c;棋盘检测与透视变换是一个常见的任务&#xff0c;广泛应用于 摄像机标定、文档扫描、增强现实&#xff08;AR&#xff09; 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测&#xff0c;并…...

git-提交时间和作者时间的区别

1.介绍 定义介绍 提交时间&#xff08;Committer Date&#xff09;&#xff1a;决定了提交在 Git 历史中的位置&#xff0c;通常影响 GitHub 上提交显示的顺序。 作者时间&#xff08;Author Date&#xff09;&#xff1a;虽然不影响提交的排序&#xff0c;但在每个提交详情页…...

解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported

找了好多教程都没有用&#xff0c;终于解决了&#xff01;&#xff01;我是因为ubuntu分区的时候出问题了 问题描述&#xff1a; 双系统装好&#xff0c;隔天开机找不到引导项&#xff0c;黑屏显示下列 因为我用的D盘划分出来的部分空闲空间&#xff0c;而不是全部&#xff0c…...

基于Flask的京东商品信息可视化分析系统的设计与实现

【Flask】基于Flask的京东商品信息可视化分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 系统能够灵活地执行SQL查询&#xff0c;提取出用于分析的关键数据指标。为了将这…...

期权帮|股指期货中的套期保值如何操作?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 股指期货中的套期保值如何操作&#xff1f; 一、股指期货中的套期保值准备阶段 确定套保需求&#xff0c;投资者依据市场预判与投资组合分析&#xff0c;决定是否套保。 &…...

用Chrome Recorder轻松完成自动化测试脚本录制

前言 入门自动化测试,录制回放通常是小白测试首先用到的功能。而录制回放工具也一直是各大Web自动化测试必然会着重提供的一块功能。 早期WinRunner、QTP这样的工具,自动化测试可以说是围绕录制回放开展的。近年像Selenium也提供有录制工具 Selenium IDE,Playwright也包含…...

C/C++面试知识点总结

目录 1. 指针1.1 智能指针1.2 指针和引用的区别1.3 数组和指针的区别1.4 数组指针和指针数组的区别1.5 迭代器和指针的区别1.6 strcpy 和 memcpy 的区别 2. 内存管理与分配2.1 内存分配与存储区2.2 malloc / free2.3 volatile和extern的区别2.4 拷贝构造函数2.5 预处理、编译、…...

springboot三层架构详细讲解

目录 springBoot三层架构 0.简介1.各层架构 1.1 Controller层1.2 Service层1.3 ServiceImpl1.4 Mapper1.5 Entity1.6 Mapper.xml 2.各层之间的联系 2.1 Controller 与 Service2.2 Service 与 ServiceImpl2.3 Service 与 Mapper2.4 Mapper 与 Mapper.xml2.5 Service 与 Entity2…...

助力DeepSeek私有化部署服务:让企业AI落地更简单、更安全

在数字化转型的浪潮中&#xff0c;越来越多的企业选择私有化部署AI技术&#xff0c;以保障数据安全、提升业务效率并实现自主可控。DeepSeek作为行业领先的AI开源技术&#xff0c;其技术可以支持企业私有化部署&#xff0c;企业需要一站式服务私有化部署&#xff0c;涵盖硬件采…...

Mac book Air M2 用VMware安装 Ubuntu22.04

安装 VMware Fusion 下载 Ubuntu 安装VMware 完成之后运行新建 将对应Ubuntu 版本拖拽 如图 选择第一个回车 选绿色 回车 为空 相关命令行 sudo apt install net-tools sudo apt install ubuntu-desktop sudo reboot 常用命令行 uname uname -a clear ll ifconfig (查…...

Spring Boot接收参数的19种方式

Spring Boot是一个强大的框架&#xff0c;允许开发人员通过多种方式接收和处理参数。无论是HTTP请求参数、路径变量&#xff0c;还是请求体中的数据&#xff0c;Spring Boot都能提供灵活的处理方式。本文将介绍19种不同的方式来接收参数。 1. 查询参数&#xff08;Query Param…...

Linux firewalld 常用命令

本文参考RedHat官网文章How to configure a firewall on Linux with firewalld。 Firewalld 是守护进程名&#xff0c;对应命令为firewall-cmd。帮助详见以下命令&#xff1a; $ firewall-cmd --helpUsage: firewall-cmd [OPTIONS...]General Options-h, --help Pr…...

火语言RPA--Excel插入空行

【组件功能】&#xff1a;在Excel内指定的位置插入空行 配置预览 配置说明 在第n行之前 支持T或# 填写添加插入第n行之前行号。 插入n行 支持T或# 插入多少行。 Sheet页名称 支持T或# Excel表格工作簿名称。 示例 Excel插入空行 描述 在第3行之后插入3行。 配置 输…...

纷析云开源版- Vue2-增加字典存储到localStorage

main.js //保存字典数据到LocalStorage Vue.prototype.$api.setting.SystemDictType.all().then(({data}) > {loadDictsToLocalStorage(data) })新增 dictionary.js 放在 Utils文件夹里面 // 获取字典数据 export function getDictByType(dictType) {const dicts JSON.par…...

LangChain-基础(prompts、序列化、流式输出、自定义输出)

LangChain-基础 我们现在使用的大模型训练数据都是基于历史数据训练出来的&#xff0c;它们都无法处理一些实时性的问题或者一些在训练时为训练到的一些问题&#xff0c;解决这个问题有2种解决方案 基于现有的大模型上进行微调&#xff0c;使得它能适应这些问题&#xff08;本…...

机器学习在脑卒中预测中的应用:不平衡数据集处理方法详解

机器学习在脑卒中预测中的应用:不平衡数据集处理方法详解 目录 引言 脑卒中的全球影响机器学习在医疗预测中的挑战类别不平衡问题的核心痛点数据预处理与特征选择 数据来源与清洗缺失值处理方法类别特征编码特征选择技术处理类别不平衡的四大方法 SMOTE(合成少数类过采样技术…...

Spring Boot项目@Cacheable注解的使用

Cacheable 是 Spring 框架中用于缓存的注解之一&#xff0c;它可以帮助你轻松地将方法的结果缓存起来&#xff0c;从而提高应用的性能。下面详细介绍如何使用 Cacheable 注解以及相关的配置和注意事项。 1. 基本用法 1.1 添加依赖 首先&#xff0c;确保你的项目中包含了 Spr…...

飞书API

extend目录下,API <?php // ---------------------------------------------------------------------- // | 飞书API // ---------------------------------------------------------------------- // | COPYRIGHT (C) 2021 http://www.jeoshi.com All rights reserved. …...

杨校老师课堂之信息学奥赛结构体操作使用经典题集锦汇总

C基础:结构体数组综合训练 员工信息处理系统题目描述输入描述输出描述解题思路参考代码 员工信息处理系统 题目描述 在一家企业中&#xff0c;员工信息的准确性和时效性是日常人事管理工作的关键。由于企业员工数量众多&#xff0c;手动统计与更新员工信息不仅耗费大量时间&a…...

交互编程工具之——Jupyter

Jupyter 是什么&#xff1f; Jupyter 是一个开源的交互式编程和数据分析工具&#xff0c;广泛应用于数据科学、机器学习、教育和研究领域。其核心是 Jupyter Notebook&#xff08;现升级为 JupyterLab&#xff09;&#xff0c;允许用户在一个基于浏览器的界面中编写代码、运行…...

Redis常见问题排查

redis连接不上去&#xff0c;ERR max number of clients reached redis默认最大连接是10000&#xff0c;如果出现连接泄露或者被服务器被攻击可能会出现连接数超过限制。 Redis 的 INFO 命令可以提供服务器的统计信息&#xff0c;其中包括当前客户端连接数。这是获取连接数最…...

Hadoop初体验

一、HDFS初体验 1. shell命令操作 hadoop fs -mkdir /itcast hadoop fs -put zookeeper.out /itcast hadoop fs -ls / 2. Web UI页面操作 结论&#xff1a; HDFS本质就是一个文件系统有目录树结构 和Linux类似&#xff0c;分文件、文件夹为什么上传一个小文件也这…...

深入解析C++26 Execution Domain:设计原理与实战应用

一、Domain设计目标与核心价值 Domain是C26执行模型的策略载体&#xff0c;其核心解决两个问题&#xff1a; 执行策略泛化&#xff1a;将线程池、CUDA流等异构调度逻辑抽象为统一接口策略组合安全&#xff1a;通过类型隔离避免不同执行域的策略污染 // Domain类型定义示例&a…...

基于Flask的租房信息可视化系统的设计与实现

【Flask】基于Flask的租房信息可视化系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网的快速发展&#xff0c;租房市场日益繁荣&#xff0c;信息量急剧增加&#xff…...