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

【C++ 类和数据抽象】static 类成员

目录

一、static 类成员的基本概念

1.1 静态成员的定义

1.2 静态数据成员

1.3 静态成员函数

1.4 内存布局

1.5 访问控制

1.6 性能分析

1.7 C++标准演进

二、static 类成员的特点

2.1 共享性

2.2 不依赖于对象

2.3 无 this 指针

三、静态成员的初始化规则

3.1 初始化方式对比

3.2 初始化顺序

四、static 类成员的使用场景

4.1 计数功能

4.2 全局资源管理

4.3 单例模式

五、static 类成员与普通成员的区别

5.1 存储方式

5.2 访问方式

5.3 this 指针

六、static 类成员的注意事项

6.1 初始化顺序问题

6.2 线程安全问题

6.3 生命周期管理

七、总结

7.1 适用场景

7.2 使用原则

 八、参考资料


在 C++ 编程中,类是面向对象编程的核心概念之一,它允许我们将数据和操作这些数据的函数封装在一起。而static类成员则是类的一种特殊成员,它为类的设计和使用带来了更多的灵活性和强大的功能。static类成员包括静态数据成员和静态成员函数,它们不属于类的某个具体对象,而是为类的所有对象所共享。

一、static 类成员的基本概念

1.1 静态成员的定义

静态成员通过static关键字修饰,分为静态成员变量和静态成员函数:

  • 静态变量:所有对象共享同一份内存空间
  • 静态函数:没有this指针,只能访问静态成员

1.2 静态数据成员

静态数据成员是类的所有对象共享的一个数据项。无论创建多少个类的对象,静态数据成员都只有一份副本,存储在全局数据区。静态数据成员在类的定义中声明,但必须在类的外部进行定义和初始化。其声明语法如下:

class MyClass {static int staticDataMember; // 静态数据成员的声明
};

在类的外部进行定义和初始化:

int MyClass::staticDataMember = 0; // 静态数据成员的定义和初始化

C++17内联初始化

C++17支持在类内直接初始化:

class Config {
public:inline static string version = "1.2.3"; // 内联初始化
};

1.3 静态成员函数

静态成员函数也是类的所有对象共享的函数。它不与任何特定的对象相关联,因此没有this指针。静态成员函数只能访问类的静态数据成员和其他静态成员函数,不能访问类的非静态成员。静态成员函数的声明语法如下:在类的外部进行定义: 

class MyClass {static void staticMemberFunction(); // 静态成员函数的声明
};

在类的外部进行定义:

void MyClass::staticMemberFunction() {// 函数体
}

1.4 内存布局

  • 静态变量:存储在全局/静态存储区(.data/.bss段)
  • 非静态变量:每个对象独立存储
  • 虚函数表:若有虚函数,对象内存包含vptr指针 

1.5 访问控制

访问方式静态变量非静态变量
类名直接访问✔️
对象实例访问✔️✔️
派生类访问基类的protected静态成员✔️✔️

1.6 性能分析

操作时间复杂度空间复杂度线程安全
访问静态变量O(1)O(1)取决于实现
静态函数调用O(1)O(1)线程安全
原子操作修改O(1)O(1)✔️
互斥锁修改O(1)O(1)✔️

1.7 C++标准演进

C++版本新特性示例
C++11类内静态成员初始化static constexpr int MAX = 100;
C++11线程安全的静态局部变量初始化static Singleton instance;
C++17内联静态变量inline static int counter;

、static 类成员的特点

2.1 共享性

静态数据成员和静态成员函数为类的所有对象所共享。意味着无论创建多少个类的对象,静态数据成员只有一份副本,静态成员函数也只有一个实现。例如:

#include <iostream>
class Counter {
public:static int count; // 静态数据成员的声明Counter() {count++; // 每次创建对象时,静态数据成员count加1}static int getCount() { // 静态成员函数return count;}
};
int Counter::count = 0; // 静态数据成员的定义和初始化
int main() {Counter c1;Counter c2;std::cout << "Number of objects created: " << Counter::getCount() << std::endl;return 0;
}

count是静态数据成员,getCount是静态成员函数。每次创建Counter对象时,count的值会加 1。通过Counter::getCount()可以获取创建的对象的总数。

2.2 不依赖于对象

静态成员函数不与任何特定的对象相关联,因此可以在没有创建类的对象的情况下直接调用。静态数据成员也可以通过类名直接访问。例如:

#include <iostream>
class MathUtils {
public:static int add(int a, int b) { // 静态成员函数return a + b;}
};
int main() {int result = MathUtils::add(3, 5); // 直接通过类名调用静态成员函数std::cout << "Result: " << result << std::endl;return 0;
}

2.3 无 this 指针

静态成员函数没有this指针,因为它不与任何特定的对象相关联。意味着静态成员函数不能访问类的非静态成员,只能访问类的静态成员。例如: 

#include <iostream>
class MyClass {
private:int nonStaticData;static int staticData;
public:static void staticFunction() {// nonStaticData = 10; // 错误,静态成员函数不能访问非静态数据成员staticData = 20; // 正确,静态成员函数可以访问静态数据成员}
};
int MyClass::staticData = 0;

三、静态成员的初始化规则

3.1 初始化方式对比

初始化方式适用类型示例代码
类内直接初始化整型常量类型(C++11起)static constexpr int MAX = 100;
类外定义初始化所有类型double MathUtils::PI = 3.14159;
静态函数初始化复杂类型通过静态函数初始化静态变量

3.2 初始化顺序

  • 全局静态变量
  • 静态成员变量(按定义顺序)
  • main函数执行 
class A {
public:static int x;static int y;
};int A::x = initX();  // 初始化顺序:x先于y
int A::y = initY();

四、static 类成员的使用场景

4.1 计数功能

静态数据成员可以用于实现计数功能,统计类的对象的创建数量。如前面的Counter类示例,通过静态数据成员count记录创建的对象的总数。

4.2 全局资源管理

静态成员可以用于管理全局资源,如数据库连接、文件句柄等。由于静态成员为类的所有对象所共享,因此可以确保全局资源的唯一性和一致性。例如:

#include <iostream>
#include <fstream>
class FileManager {
private:static std::ofstream file; // 静态数据成员,用于管理文件句柄
public:static void openFile(const std::string& filename) {file.open(filename);}static void writeToFile(const std::string& data) {if (file.is_open()) {file << data << std::endl;}}static void closeFile() {if (file.is_open()) {file.close();}}
};
std::ofstream FileManager::file;
int main() {FileManager::openFile("test.txt");FileManager::writeToFile("Hello, World!");FileManager::closeFile();return 0;
}

FileManager类的静态数据成员file用于管理文件句柄,静态成员函数openFilewriteToFilecloseFile用于对文件进行操作。

4.3 单例模式

单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。静态成员可以用于实现单例模式。例如:

#include <iostream>
class Singleton {
private:static Singleton* instance; // 静态数据成员,指向单例对象Singleton() {} // 私有构造函数,防止外部创建对象Singleton(const Singleton&) = delete; // 禁用拷贝构造函数Singleton& operator=(const Singleton&) = delete; // 禁用赋值运算符
public:static Singleton* getInstance() {if (instance == nullptr) {instance = new Singleton();}return instance;}void doSomething() {std::cout << "Doing something..." << std::endl;}
};
Singleton* Singleton::instance = nullptr;
int main() {Singleton* singleton = Singleton::getInstance();singleton->doSomething();return 0;
}

Singleton类的静态数据成员instance用于存储单例对象的指针,静态成员函数getInstance用于获取单例对象的唯一实例。

五、static 类成员与普通成员的区别

5.1 存储方式

普通数据成员为类的每个对象所拥有,每个对象都有自己的一份副本,存储在对象的内存空间中。而静态数据成员为类的所有对象所共享,只有一份副本,存储在全局数据区。

5.2 访问方式

普通成员需要通过对象来访问,而静态成员可以通过类名直接访问,也可以通过对象访问。例如: 

#include <iostream>
class MyClass {
public:int nonStaticData;static int staticData;void nonStaticFunction() {std::cout << "Non-static function" << std::endl;}static void staticFunction() {std::cout << "Static function" << std::endl;}
};
int MyClass::staticData = 0;
int main() {MyClass obj;obj.nonStaticData = 10; // 通过对象访问非静态数据成员MyClass::staticData = 20; // 通过类名访问静态数据成员obj.nonStaticFunction(); // 通过对象访问非静态成员函数MyClass::staticFunction(); // 通过类名访问静态成员函数return 0;
}

5.3 this 指针

普通成员函数有this指针,指向调用该函数的对象。而静态成员函数没有this指针,因为它不与任何特定的对象相关联。

六、static 类成员的注意事项

6.1 初始化顺序问题

不同编译单元的静态成员初始化顺序不确定,应避免相互依赖。解决方案:

  • 使用单例模式

  • 使用局部静态变量

class Logger {
private:static map<string, string>& getConfig() {static map<string, string> config; // 保证初始化顺序return config;}
};

6.2 线程安全问题

多线程环境下需考虑同步:

#include <mutex>class Counter {
private:static int count;static mutex mtx;public:static void increment() {lock_guard<mutex> lock(mtx);++count;}
};int Counter::count = 0;
mutex Counter::mtx;

6.3 生命周期管理

静态成员的销毁顺序与初始化顺序相反,需注意:

  • 避免在静态析构函数中访问已销毁的静态成员

  • 优先使用智能指针 

class ResourceManager {
private:static shared_ptr<vector<Resource>> resources;
};shared_ptr<vector<Resource>> ResourceManager::resources = make_shared<vector<Resource>>();

七、总结

static类成员是 C++ 中一个非常重要的特性,它为类的设计和使用带来了更多的灵活性和强大的功能。静态数据成员和静态成员函数为类的所有对象所共享,不依赖于对象,没有this指针。它们可以用于实现计数功能、全局资源管理、单例模式等多种场景。在使用static类成员时,需要注意静态数据成员的初始化、静态成员函数的访问权限和静态成员的生命周期等问题。通过合理使用static类成员,可以提高代码的可维护性和可扩展性,使程序更加高效和健壮。 

7.1 适用场景

  • 全局配置管理

  • 跨实例资源共享

  • 对象跟踪与统计

  • 资源池管理

  • 工具类方法

7.2 使用原则

  • 优先考虑是否需要静态成员

  • 严格控制访问权限(private/protected)

  • 注意线程安全问题

  • 合理管理生命周期

  • 避免循环依赖

 八、参考资料

  •  《C++ Primer(第 5 版)》这本书是 C++ 领域的经典之作,对 C++ 的基础语法和高级特性都有深入讲解。
  • 《Effective C++(第 3 版)》书中包含了很多 C++ 编程的实用建议和最佳实践。
  • 《C++ Templates: The Complete Guide(第 2 版)》该书聚焦于 C++ 模板编程,而using声明在模板编程中有着重要应用,如定义模板类型别名等。
  • C++ 官方标准文档:C++ 标准文档是最权威的参考资料,可以查阅最新的 C++ 标准(如 C++11、C++14、C++17、C++20 等)文档。例如,ISO/IEC 14882:2020 是 C++20 标准的文档,可从相关渠道获取其详细内容。
  • :这是一个非常全面的 C++ 在线参考网站,提供了详细的 C++ 语言和标准库文档。
  • :该网站提供了系统的 C++ 教程,配有丰富的示例代码和清晰的解释,适合初学者学习和理解相关知识。
  • 《C++标准库(第2版)》Nicolai M. Josuttis 著

  • Effective STL Scott Meyers 著

  • C++ Core Guidelines:C++ Core Guidelines

  • C++ Reference:https://en.cppreference.com/w/ 


相关文章:

【C++ 类和数据抽象】static 类成员

目录 一、static 类成员的基本概念 1.1 静态成员的定义 1.2 静态数据成员 1.3 静态成员函数 1.4 内存布局 1.5 访问控制 1.6 性能分析 1.7 C标准演进 二、static 类成员的特点 2.1 共享性 2.2 不依赖于对象 2.3 无 this 指针 三、静态成员的初始化规则 3.1 初始化…...

深入了解递归、堆与栈:C#中的内存管理与函数调用

在编程中&#xff0c;理解如何有效地管理内存以及如何控制程序的执行流程是每个开发者必须掌握的基本概念。C#作为一种高级编程语言&#xff0c;其内存管理和函数调用机制包括递归、堆与栈。本文将详细讲解这三者的工作原理、用途以及它们在C#中的实现和应用。 1. 递归 (Recur…...

声音分离人声和配乐-从头设计数字生命第5课, demucs——仙盟创梦IDE

demucs 伴奏提取人声分离技术具有多方面的重大意义&#xff0c;主要体现在以下几个领域&#xff1a; 音乐创作与制作 创作便利性提升&#xff1a;创作者能轻易获取无伴奏的人声轨道&#xff0c;便于对人声进行单独处理&#xff0c;如调整音准、音色、添加特效等&#xff0c…...

基于PHP+Uniapp的互联网医院源码:电子处方功能落地方案

随着“互联网医疗”政策红利持续释放&#xff0c;互联网医院已成为推动医疗数字化转型的重要方向。在这一趋势下&#xff0c;电子处方功能模块作为核心环节&#xff0c;不仅直接关系到线上问诊闭环的实现&#xff0c;也成为系统开发中技术难度较高、业务逻辑最为复杂的一部分。…...

Linux 基础命令入门指南

在 Linux 系统中&#xff0c;命令行是高效操作和管理系统的核心方式。掌握一些基础命令&#xff0c;能够让我们更便捷地完成文件操作、系统监控、文本处理等任务。本文将为大家介绍常用的 Linux 基础命令&#xff0c;帮助新手快速入门。 一、文件和目录操作命令 1. ls&#x…...

(done) 吴恩达版提示词工程 3. 迭代 (控制输出长度、提取特定细节、输出 HTML 格式)

url: https://www.bilibili.com/video/BV1Z14y1Z7LJ?spm_id_from333.788.videopod.episodes&vd_source7a1a0bc74158c6993c7355c5490fc600&p3 别人的笔记 url: https://zhuanlan.zhihu.com/p/626966526 3. 迭代&#xff08;Iterative&#xff09; 当我使用大语言模型…...

学员答题pk知识竞赛小程序怎么做

制作学员答题PK知识竞赛小程序&#xff0c;主要有以下步骤&#xff1a; 一、规划设计 明确需求&#xff1a;确定小程序的使用场景是校园知识竞赛、培训机构考核还是企业内部培训等。答题功能&#xff0c;规定答题的具体规则&#xff0c;包括题目类型&#xff08;单选、多选、…...

P1217 [USACO1.5] 回文质数 Prime Palindromes【python】

P1217 [USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151 151 151 是回文质数。 写一个程序来找出范围 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 …...

搭建私人网站

第一章 阿里云服务器选购与配置 1.1 注册与实名认证 ‌注册账号‌ 访问阿里云官网&#xff0c;点击右上角"免费注册"&#xff0c;填写邮箱/手机号&#xff0c;完成人机验证后获取验证码。 注意&#xff1a;企业用户需选择"企业实名认证"&#xff0c;个人用…...

Nacos简介—1.Nacos使用简介

大纲 1.Nacos的在服务注册中心 配置中心中的应用 2.Nacos 2.x最新版本下载与目录结构 3.Nacos 2.x的数据库存储与日志存储 4.Nacos 2.x服务端的startup.sh启动脚本 5.Dubbo Nacos微服务RPC调用开发示例 6.Nacos对临时与持久化服务实例的健康检查机制 7.Nacos保护阈值机…...

【工具】使用 MCP Inspector 调试服务的完全指南

Model Context Protocol (MCP) Inspector 是一个交互式开发工具&#xff0c;专为测试和调试 MCP 服务器而设计。本文将详细介绍如何使用 Inspector 工具有效地调试和测试 MCP 服务。 1. MCP Inspector 简介 MCP Inspector 提供了直观的界面&#xff0c;让开发者能够&#xff…...

架构-项目管理

一、盈亏平衡分析 核心知识点&#xff1a; 基本公式 正常情况&#xff1a;销售额 固定成本 可变成本 税费 利润盈亏平衡时&#xff1a;销售额 固定成本 可变成本 税费&#xff08;利润为0&#xff0c;即不赚不亏的临界点&#xff09; 公式推导&#xff1a;利润 销售额…...

域控重命名导致无法登录

问题描述&#xff1a;公司新买了一个服务器用于替换旧服务器&#xff0c;旧服务器名称为server3为域控&#xff0c;降级后新装的服务器升级为了新域控。然后旧服务器更名为server5&#xff0c;新服务器server6更名为server3.重启新服务器后服务器无法登录。但是服务器相关功能都…...

C++内存管理那些事

一、C/C内存分布 【说明】&#xff1a; 栈又叫堆栈&#xff0c;是非静态局部变量、函数参数、返回值存放的区域&#xff0c;栈向下增长内存映射段是高效的IO映射方式&#xff0c;用于装载一个共享的动态内存库。用户可以使用系统接口创建共享内存&#xff0c;做进程间的通信堆…...

C++多态(实现部分)(一)

目录 1.多态的概念 1.1运行时多态 1.2 编译时多态 2.多态的定义以及实现 2.1 多态构成的条件 2.2 虚函数 2.3 虚函数的重写/覆盖 2.3.1 虚函数重写的两个例外 1.协变 2.析构函数的重写 2.4 override 和final关键字 2.5 重载/重写/隐藏的对比 ​编辑 3. 抽象类 和…...

HOW - Code Review 流程自动化

文章目录 前言流程自动化落地一、自动发起 MR&#xff08;Merge Request&#xff09;macOS 安装 glab方式一&#xff1a;使用 Homebrew&#xff08;推荐&#xff09; 其他平台安装方法Linux (apt)Windows&#xff08;scoop 或 chocolatey&#xff09; 使用示例&#xff1a;自动…...

自动化标注软件解析

关于PyQt5信号槽机制的解析 信号槽机制是 Qt 框架中用于对象间通信的核心机制&#xff0c;它基于发布-订阅模式&#xff0c;能够实现松耦合的组件交互。 1. 信号槽机制的基本概念 信号&#xff08;Signal&#xff09; 信号是对象发出的一种通知&#xff0c;表示某个事件发生…...

机器人结构认知与安装

机器人结构认知与安装 1. ES机器人系统结构与硬件组成 核心组件&#xff1a; OPPO ES5机器人系统由机器人本体、控制手柄、48V电源和OPPO Studio终端构成。一体化底座&#xff1a;包含控制主板、安全接口板、监测保护电路单元&#xff0c;支持外接急停开关&#xff0c;采用光耦…...

SQLMesh 模型选择指南:优化大型项目的模型更新

在处理大型 SQLMesh 项目时&#xff0c;模型之间的依赖关系可能会变得非常复杂。为了更有效地管理这些项目&#xff0c;SQLMesh 提供了一种模型选择机制&#xff0c;允许用户有针对性地选择需要更新的模型。本文将详细介绍如何使用 SQLMesh 的模型选择功能来优化项目更新过程。…...

linux:启动后,ubuntu屏幕变成红色了

屏幕启动后变成 红色背景 通常说明 显卡驱动出了问题&#xff0c;或者是 图形界面加载失败 使用了 fallback 模式。这种现象在 NVIDIA 驱动安装失败或显卡与驱动不兼容时常见。 &#x1f3af; 先给你几个快速修复选项 ✅ 1. 进入 TTY 命令行界面 按下&#xff1a;Ctrl Alt …...

抖音的逆向工程获取弹幕(websocket和protobuf解析)

目录 声明前言第一节 获取room_id和ttwid值第二节 signture值逆向python 实现signature第三节 Websocket实现长链接请求protubuf反序列化pushFrame反序列化Response解压和反序列化消息体Message解析应答ack参考博客声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的…...

2194出差-节点开销Bellman-ford/图论

题目网址&#xff1a; 蓝桥账户中心 我先用Floyd跑了一遍&#xff0c;不出所料TLE了 n,mmap(int,input().split())clist(map(int,input().split()))INFfloat(inf) ma[[INF]*n for i in range(n)]for i in range(m):u,v,wmap(int,input().split())ma[u-1][v-1]wma[v-1][u-1]w#“…...

【hexo主题自定义】

主题下载安装 进入命令行&#xff0c;下载 NexT 主题&#xff0c;输入&#xff1a; git clone https://github.com/theme-next/hexo-theme-next themes/next 修改站点配置文件_config.yml&#xff0c;找到如下代码&#xff1a; ## Themes: https://hexo.io/themes/ theme: l…...

前后端部署

#在学习JavaWeb之后&#xff0c;进行了苍穹外卖的学习。在进行苍穹外卖的部署的时候&#xff0c;作者遇到了下面的问题# 1.前端工程nginx无法启动&#xff1a; 当我双击已经部署好的nginx工程中nginx.exe文件的时候&#xff0c;在服务中&#xff0c;并没有找到ngnix成功运行。…...

1.jdk+idea安装+HelloWorld项目创建

1.jdk1.8idea安装项目创建 jdk1.8安装配置环境变量 到华为镜像下载jdk,因为Oracle官网需要注册才可以下载jdk https://repo.huaweicloud.com/java/jdk/8u202-b08/ 直接下一步安装&#xff0c;配置环境变量 重启&#xff0c;执行java -version 和 javac idea下载 版本20…...

Puter部署指南:基于Docker的多功能个人云平台掌控自己的数据

前言&#xff1a;嗨&#xff0c;小伙伴们&#xff01;每次开机是不是都要像参加点击大赛一样不停地敲击各种网盘和应用的登录按钮&#xff1f;更让人抓狂的是&#xff0c;这些科技巨头会不会偷偷翻阅我们的隐私数据呢&#xff1f;别担心&#xff0c;今天给大家安利一个超炫酷的…...

动态渲染页面智能嗅探:机器学习判定AJAX加载触发条件

本文提出了一种基于机器学习的智能嗅探机制&#xff0c;革新性地应用于自动判定动态渲染页面中AJAX加载的最佳触发时机。系统架构采用先进模块化拆解设计&#xff0c;由请求分析模块、机器学习判定模块、数据采集模块和文件存储模块四大核心部分构成。在核心代码示例中&#xf…...

探索 CameraCtrl模型:视频生成中的精确摄像机控制技术

在当今的视频生成领域&#xff0c;精确控制摄像机轨迹一直是一个具有挑战性的目标。许多现有的模型在处理摄像机姿态时往往忽略了精准控制的重要性&#xff0c;导致生成的视频在摄像机运动方面不够理想。为了解决这一问题&#xff0c;一种名为 CameraCtrl 的创新文本到视频模型…...

理解欧拉公式

1. 欧拉公式中的符号 欧拉公式 e i x cos ⁡ x i sin ⁡ x e^{ix}\cos xi\sin x eixcosxisinx当 x π x \pi xπ时 e i π 1 0 / / 欧拉恒等式 e^{i\:\pi}10 //欧拉恒等式 eiπ10//欧拉恒等式 e e e:自然对数的底 i i i:虚数&#xff0c; i 2 − 1 i^2 -1 i2−1 cos…...

7.9 Python+Click实战:5步打造高效的GitHub监控CLI工具

Python+Click实战:5步打造高效的GitHub监控CLI工具 GitHub Sentinel Agent 命令行界面开发实战 关键词:CLI 开发实践、Click 框架、API 集成、命令行参数解析、错误处理机制 1. 命令行界面技术选型与架构设计 GitHub Sentinel 采用 Click + Requests 技术栈构建 CLI 工具,…...

leetcode28. 找出字符串中第一个匹配项的下标_简单KMP

28. 找出字符串中第一个匹配项的下标 - 力扣&#xff08;LeetCode&#xff09; 模仿&#xff1a;algorithm-journey/src/class100/Code01_KMP.java at main algorithmzuo/algorithm-journey GitHub #include <stdio.h> #include <stdlib.h> #include <strin…...

代码随想录算法训练营第二十六天

LeetCode题目: 452. 用最少数量的箭引爆气球435. 无重叠区间763. 划分字母区间2799. 统计完全子数组的数目(每日一题) 其他: 今日总结 往期打卡 452. 用最少数量的箭引爆气球 跳转: 452. 用最少数量的箭引爆气球 学习: 代码随想录公开讲解 问题: 有一些球形气球贴在一堵用 X…...

精益数据分析(20/126):解析经典数据分析框架,助力创业增长

精益数据分析&#xff08;20/126&#xff09;&#xff1a;解析经典数据分析框架&#xff0c;助力创业增长 在创业和数据分析的学习道路上&#xff0c;每一次深入探索都可能为我们带来新的启发。今天&#xff0c;依旧带着和大家共同进步的想法&#xff0c;我们一起深入研读《精…...

基于Django的权限管理平台

目录 单元一&#xff1a;项目准备 任务一&#xff1a;创建项目 1.1配置 DRF 模型 任务二&#xff1a;设置CSRF令牌 2.1创建app包 2.2检查浏览器Cookies权限 2.3获取cookies 单元二&#xff1a;用户平台 任务一&#xff1a;用户数据模型搭建 1.1创建user模块 1.2生成…...

深度解析 LangChain、ReAct、ReROO 架构及其在 AI Agent 中的应用

一、LangChain 架构&#xff1a;模块化智能代理的核心框架 1. 架构特性与设计原理 LangChain 是构建智能代理的模块化框架&#xff0c;其核心通过 Chains&#xff08;任务链&#xff09;、Agents&#xff08;代理&#xff09;、Memory&#xff08;记忆&#xff09; 和 Tools&a…...

数据库day-07

一、实验名称和性质 子查询 验证 设计 二、实验目的 1&#xff0e;掌握子查询的嵌套查询&#xff1b; 2.掌握集合操作 3&#xff0e;了解EXISTS嵌套查询方法&#xff1b; 三、实验的软硬件环境要求 硬件环境要求&#xff1a; PC机(单机) 使用的软件名称、版本号以及模块…...

使用Tauri 2.3.1+Leptos 0.7.8开发桌面小程序汇总

近期断断续续学习了Rust编程&#xff0c;使用Tauri 2.3.1Leptos 0.7.8开发了一个自用的桌面小程序。Win10操作系统&#xff0c;使用VS Code及rust analyzer插件搭建的开发环境&#xff0c;后期开始使用Roo Code绑定DeepSeek API 辅助编程&#xff0c;对我这个初学者编程帮助很大…...

计算机视觉——速度与精度的完美结合的实时目标检测算法RF-DETR详解

概述 目标检测已经取得了长足的发展&#xff0c;尤其是随着基于 Transformer 的模型的兴起。RF-DETR&#xff0c;由 Roboflow 开发&#xff0c;就是这样一种模型&#xff0c;它兼顾了速度和精度。使用 Roboflow 的工具可以让整个过程变得更加轻松。他们的平台涵盖了从上传和标…...

JS 应用算法逆向三重断点调试调用堆栈BP 插件发包安全结合

# 前置知识 1 、作用域&#xff1a;&#xff08;本地 & 全局&#xff09; 简单来说就是运行后相关的数据值 2 、调用堆栈&#xff1a;&#xff08;由下到上&#xff09; 简单来说就是代码的执行逻辑顺序 3 、常见分析调试&#xff1a; - 代码全局搜索 - 文件流程断点…...

从零开始在Win上添加一块QEMU开发板(四)实现简单USART

文章目录 一、前言背景二、QEMU的字符设备模拟三、USART的发送1. USART发送的QEMU字符设备模拟2. MMIO设计3. 中断连接4. 复位 三、代码验证1. 输出到serial控制台2. 输出到文件 一、前言背景 QEMU是一款开源的模拟器及虚拟机管理器。而QEMU内置支持了一些开发板&#xff0c;我…...

目标检测篇---faster R-CNN

目标检测系列文章 第一章 R-CNN 第二篇 Fast R-CNN 目录 目标检测系列文章&#x1f4c4; 论文标题&#x1f9e0; 论文逻辑梳理1. 引言部分梳理 (动机与思想) &#x1f4dd; 三句话总结&#x1f50d; 方法逻辑梳理&#x1f680; 关键创新点&#x1f517; 方法流程图关键疑问解答…...

【计算机视觉】CV实战项目- 深度解析FaceAI:一款全能的人脸检测与图像处理工具库

深度解析FaceAI&#xff1a;一款全能的人脸检测与图像处理工具库 项目概述核心功能与技术实现1. 人脸检测与识别2. 数字化妆与轮廓标识3. 性别与表情识别4. 高级图像处理 实战指南&#xff1a;项目运行与开发环境配置典型应用示例常见问题与解决方案 学术背景与相关研究项目扩展…...

Linux下编译opencv-4.10.0(静态链接库和动态链接库)

1. 安装依赖 在编译之前&#xff0c;确保系统中安装了必要的依赖工具和库。运行以下命令安装&#xff1a; sudo apt update sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config sudo apt-get install libavcodec-dev libavforma…...

OpenBMC:BmcWeb login创建session

OpenBMC:BmcWeb login认证-CSDN博客 完成用户的认证后,还需要为该用户创建session,从而为后续的rest api访问铺平道路 inline void handleLogin(const crow::Request& req,const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {...auto session =persisten…...

Java高频面试之并发编程-07

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;线程之间有哪些通信方式&#xff1f; 在 Java 多线程编程中&#xff0c;线程间通信&#xff08;Inter-Thread Communica…...

四、Python编程基础04

这里写目录标题 一、集合[了解]二、函数1. 函数定义与调用2. 函数返回值 三、模块和包1. 登录案例2.登录案例优化3. 随机数案例 四、异常五、web自动化测试1、selenium介绍2、环境搭建具体安装步骤请看 3、入门案例3.1 自动化测试步骤3.2 案例 一、集合[了解] 1, 集合 set, 表…...

专家系统的一般结构解析——基于《人工智能原理与方法》的深度拓展

不同的专家系统,其功能与结构都不尽相同,但一般都包括人机接口、推理机、知识库及其管理系统、数据库及其管理系统、知识获取机构、解释机构这六个部分,如下图所示。 一、人机接口(Human-Computer Interface, HCI) (一)基本思想与定义 1. 核心思想:双向交互的桥梁 人…...

手搓雷达图(MATLAB)

看下别人做出来什么效果 话不多说&#xff0c;咱们直接开始 %% 可修改 labels {用户等级, 发帖数, 发帖频率, 点度中心度, 中介中心度, 帖子类型计分, 被列为提案数}; cluster_centers [0.8, 4.5, 3.2, 4.0, 3.8, 4.5, 4.2; % 核心用户0.2, 0.5, 0.3, 0.2, 0.1, 0.0, 0.0;…...

FastMCP与FastAPI:构建自定义MCP服务器

FastMCP与FastAPI&#xff1a;构建自定义MCP服务器 模型上下文协议(Model Context Protocol, MCP)是一种让AI模型与外部工具和服务交互的标准。本文将介绍FastMCP和FastAPI&#xff0c;并通过实例展示如何创建自定义MCP服务器。 MCP基础概念 MCP允许语言模型: 访问外部工具…...

基于 springboot+vue+elementui 的办公自动化系统设计(

基于 springbootvueelementui 的办公自动化系统设计(前端代码在oa文件夹里) 系统主要功能&#xff1a; 1、统一的信息发布平台&#xff1a;公告栏&#xff0c;公司活动&#xff0c;项目进度&#xff0c;公司周报 2、统一的文件管理平台&#xff1a;收文管理、发文管理。文件查询…...