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

c++柔性数组、友元、类模版

目录

1、柔性数组: 

 2、友元函数:

3、静态成员 

注意事项

面试题:c/c++ static的作用?

C语言:

C++:

为什么可以创建出 objx

4、对象与对象之间的关系

5、类模版


1、柔性数组: 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>using namespace std;class MyString
{
private:struct  StrNode{int refcount; //引用计数int slen;int capa;char data[0]; //数组不填或填0就成为柔性数组};private:StrNode* pstr;static const size_t DAFAUSIZE = 32;static const size_t INCSIZE = 2;static StrNode* GetMem(rsize_t n){size_t total = (n > DAFAUSIZE) ? n + 1 : DAFAUSIZE;StrNode* s = (StrNode*)malloc(sizeof(StrNode) + sizeof(char) * total);memset(s, 0, sizeof(StrNode) + sizeof(char) * total);s->capa = total - 1;return s;}static void  FreeMem(StrNode *p){free(p);}
public:MyString(const char* p = nullptr) :pstr(nullptr){if (p != nullptr){int len = strlen(p);pstr = GetMem(len);pstr->refcount = 1;pstr->slen = len;strcpy(pstr->data, p);}}MyString(const MyString &st) :pstr(st.pstr)  //st给当前对象{if (pstr != nullptr){pstr->refcount += 1; //+1 说明有两个对象持有这块空间}}MyString(MyString &&st) :pstr(st.pstr)  //移动构造{st.pstr = nullptr;}~MyString() {if (pstr != nullptr && --pstr->refcount == 0){FreeMem(pstr);}pstr = nullptr;}ostream& operator<<(ostream& out)const{if (pstr != nullptr){out << pstr->data;}return out;}
};
ostream &operator<<(ostream &out, const MyString &st)
{return st << out;
}int main()
{MyString s1 = "chengxi";MyString s2(s1);MyString s3(s2);MyString s4(s3);cout << s3 << endl;return 0;
}

 2、友元函数:

(1)不具有传递特性、继承特性、是单向的。

(2)友元函数分为:函数友元、成员函数友元、类友元

(3)友元函数是访问类的对象非公有属性。

成员函数友元:

using namespace std;
class Base;
class Test
{
private:int sum;
public:Test(int x = 0) :sum(x) {}void SetSum(int x = 0){sum = x;}int GetSum()const { return sum; }int Add(const Base &it);
};class Base
{friend int Test::Add(const Base& it);//成员函数友元int num;
public:Base(int x = 0) :num(x){}
};
int Test::Add(const Base& it)
{return this->sum + it.num;
}int main()
{Test t1(100);Base b1(2);t1.Add(b1);
}

类友元: 

using namespace std;
//Test对象访问base的私有和公有,注意方向
class Base
{friend class Test; 
private:int num;
public:Base(int x = 0) :num(x){}
};class Test
{
private:int sum;
public:Test(int x = 0) :sum(x) {}void SetSum(int x = 0){	sum = x;}int GetSum()const { return sum; }int Add(const Base &it) {return it.num + 10;}int func(const Base& it){return it.num;}
};int main()
{Test t1;Base b1;t1.Add(b1);t1.func(b1);return 0;
}

3、静态成员 

(1) 类静态成员只能在类外进行初始化,

(2)静态成员变量在数据区存储。静态量不属于对象,是被所有对象共享,不管有多少个对象,静态成员只有一份存在于数据区。

(3)静态数据可以在普通方法中使用

(4)为什么不能在参数列表中对静态成员初始化?

答:参数列表,在定义对象的时候要调用构造函数,拿参数列表对数据成员进行创建,静态成员被所有对象共享,在定义不同的对象时都要对静态成员进行构建,c++中,数据成员(对象、变量)在生存期内只能被构建一次。放在参数列表中,被构建了n次,不允许。要在类外进行初始化。

静态成员在类模版中,数据类型不同 ,就会产生不同的 “静态成员”

using namespace std;template<class T>
class Object
{
private:int value;
protected:static int num;
public:Object(int x=0):value(x){}~Object(){}
};class Test :public Object<Test>
{
public:Test(){cout << "Create Test::" << (num += 1) << endl;}
};class Base :public Object<Base>
{
public:Base() {cout << "Create Base:" << (num += 1) << endl;}
};
template<class T>
int Object<T>::num = 0;
int main() {Test t1[1];Base b1[2];return 0;
}

  • Test t1[1];:创建一个包含 1 个 Test 对象的数组,在创建 Test 对象时,会调用 Test 类的构造函数,输出相应的信息。
  • Base b1[2];:创建一个包含 2 个 Base 对象的数组,在创建 Base 对象时,会调用 Base 类的构造函数,输出相应的信息。

注意事项

由于 Object 类的静态成员变量 num 是模板化的,Object<Test> 和 Object<Base> 是不同的模板实例化,它们各自拥有独立的 num 副本。所以在创建 Test 和 Base 对象时,它们的 num 计数是相互独立的。

面试题

C语言:

(1)静态关键字修饰全局/局部变量,存在于数据区,当函数消亡时,静态变量还存在,可以&。

全局变量有static和无的区别?

(2)全局静态变量只在本文件中可见,同一工程的其他文件不可见, (私有),未用static修饰的全局变量,可以用extern在其他文件用。

(3)static修饰函数,此函数只在当前文件夹有效,在其他文件中不能用,(私有)。修饰函数本身而不是修饰返回值 static int* add() {} ,。

C++:
(1)static可以修饰类的成员,要在类外进行初始化。所有的对象都共享同一个静态成员变量,派生的类也共享(但前提是将其设置成protected /public)。

(2)静态成员变量不属于对象,无this,在常方法中可以修改静态成员变量的值,this不修饰它。

static可以修饰属性的类型,要在类外进行初始化,如果是静态常性变量可以在类内进行初始化,但必须要求是整型类型。

(3)static修饰成员方法,static void func(){}  无this指针。静态成员方法无this。

(3)static修饰的成员方法可以访问静态属性也可以访问非静态属性(非静态属性必须把对象传进来)。

静态成员方法可以通过 对象访问,也可以通过类名。

静态成员变量
  • 类的所有对象共享:静态成员变量属于类本身,而不是类的某个对象。无论创建多少个类的对象,静态成员变量都只有一份副本,被所有对象共享。
  • 需要在类外初始化:静态成员变量必须在类外进行初始化,因为它不依赖于对象的创建。

     :obja可以创建出来,指针:4字节

    #include<stdio.h>
    #include<iostream>
    using namespace std;
    class Object
    {
    private:int value;
    private:static Object objx;
    private:Object(int x = 0) :value(x) {cout << "create Obj" << this << endl;}~Object(){cout << "destroy obj:" << this << endl;}
    };
    Object Object::objx(1);int main()
    {return 0;
    }

    • 成员变量
      • int value;:一个私有成员变量,用于存储对象的值。
      • static Object objx;:一个私有静态成员变量,类型为 Object 类本身。静态成员变量属于类,而不是类的某个对象,所有该类的对象共享同一个静态成员变量。
    • 静态成员变量初始化
      • Object Object::objx(1);
        

        这行代码对 Object 类的静态成员变量 objx 进行初始化,调用了 Object 类的构造函数,并将参数 1 传递给构造函数,将 value 成员变量初始化为 1

        为什么可以创建出 objx

        虽然 Object 类的构造函数和析构函数都是私有的,通常情况下,外部代码无法直接创建 Object 类的对象。但是,静态成员变量 objx 是类的一部分,类的内部可以访问其私有成员。因此,在类的外部对静态成员变量 objx 进行初始化时,实际上是在类的作用域内调用了构造函数,这是被允许的。

         

        当程序开始执行时,在进入 main 函数之前,会先对静态成员变量进行初始化,所以 Object::objx 会被创建,调用构造函数输出创建信息。当程序结束时,静态对象 objx 会被销毁,调用析构函数输出销毁信息。

    using namespace std;
    class Object
    {
    private:int value;
    private:static Object objx;
    private:Object(int x = 0) :value(x) {cout << "create Obj" << this << endl;}~Object(){cout << "destroy obj:" << this << endl;}
    public:void Print()const { cout << "value" << value << endl; }void SetValue(int x) { value = x; }int GetValue()const { return value; }//通过静态方法将静态对象的地址返回static Object* getObject(){return &objx;}
    };
    Object Object::objx(1);int main()
    {Object* pa = Object::getObject();Object* pb = Object::getObject();if (pa == pb) { cout << "pa,pb pinter:object" << endl; }pa->Print();pa->SetValue(100);pa->GetValue();pa->Print();return 0;
    }
    • if (pa == pb) { cout << "pa,pb pinter:object" << endl; }:比较 pa 和 pb 的值,如果相等,说明它们指向同一个对象,输出相应信息。由于 objx 是静态对象,无论调用多少次 getObject() 函数,返回的都是同一个对象的地址,所以 pa 和 pb 相等。
    • 通过静态成员函数可以在类外部访问私有静态成员对象,并且由于静态成员对象只有一个实例,无论通过多少个指针访问,操作的都是同一个对象。

    4、对象与对象之间的关系

    依赖关系:用-------> 表示

    一个对象在运行期间会用到另一个对象的关系,通常在运行期间产生,并且伴随运行时的变化依赖关系也发生变化。主要表现为 :“使用关系”。

    关联关系:用——> 表示:

    静态关系,如:学生和学校,是关联关系

    在设计中。关联关系主要体现在目标类型的指针或引用。

    聚合、继承、组合等。

    5、类模版

    template<类型模版参数表>

    类模板不是类,因此无法直接实例化对象,需要在声明类时给定确定的数据类型,编译器才会以此分配内存。对于普通类而言,类的声明和类成员函数的定义可以写在不同的文件中,但是对于类模板来说,最好定义在同一个文件中。

    //define _N 10
    template<class T,int N>
    class SeqStack
    {T* data;int capa;int top;static const int stackinitsize = 100;static const int incsize = 2;static T* GetMen(size_t sz){T* newdata = (T*)malloc(sizeof(T) * sz);if (nullptr == newdata){cout << "malloc fail" << endl;exit(1);}memset(newdata, 0, sizeof(T) * sz);return newdata;}static void FreeMem(T* p){free(p);}public:SeqStack(int sz = stackinitsize) :data(nullptr), capa(sz), top(-1){//data = (T*)malloc(sizeof(T) * capa); //只申请空间不构建对象data = GetMen(capa);}~SeqStack(){}int size()const { return top + 1; }bool empty()const { return size() == 0; }int capacity()const { return capa; }bool full()const { return size() == capacity(); }bool push(const T& x){if (full())return false; //满了调增容函数 top += 1;new(&data[top]) T(x);   //data[++top] = x;构建对象return true;}bool gettop(T *val) {if (empty())return false;val = data[top];return true;}bool poptop(T& val){if (empty())return false;val = data[top];(&data[top])->~T(); //析构top中的对象top -= 1;return true;}bool pop(){if (empty())return false;(&data[top])->T();top -= -1;return true;}};
    int main()
    {SeqStack<int, 10> istack;   //using T:int N:10}
    int main() {ClassName<int> intObj(10);  // 实例化类模板,创建一个处理 int 类型的类对象int result = intObj.getData();std::cout << "Result: " << result << std::endl;ClassName<double> doubleObj(3.14);  // 实例化类模板,创建一个处理 double 类型的类对象double dResult = doubleObj.getData();std::cout << "Result: " << dResult << std::endl;return 0;
    }

    相关文章:

    c++柔性数组、友元、类模版

    目录 1、柔性数组&#xff1a; 2、友元函数&#xff1a; 3、静态成员 注意事项 面试题&#xff1a;c/c static的作用? C语言&#xff1a; C: 为什么可以创建出 objx 4、对象与对象之间的关系 5、类模版 1、柔性数组&#xff1a; #define _CRT_SECURE_NO_WARNINGS #…...

    电子技术基础

    目录 一、整体概述 二、知识点梳理及考点分析 &#xff08;一&#xff09;半导体器件 &#xff08;二&#xff09;基本放大电路 &#xff08;三&#xff09;功率放大电路 &#xff08;四&#xff09;集成运算放大器 &#xff08;五&#xff09;直流稳压电源 &#xff0…...

    解码大模型时代算力基座的隐形引擎

    在千亿参数大模型竞速的今天&#xff0c;算力军备竞赛已进入白热化阶段。当我们聚焦GPU集群的运算峰值时&#xff0c;一个关键命题正在浮出水面&#xff1a;支撑大模型全生命周期的存力基座&#xff0c;正在成为制约AI进化的关键变量。绿算技术将深入解剖大模型训练与推理场景中…...

    【NetCore】ControllerBase:ASP.NET Core 中的基石类

    ControllerBase:ASP.NET Core 中的基石类 一、什么是 ControllerBase?二、ControllerBase 的主要功能三、ControllerBase 的常用属性四、ControllerBase 的常用方法2. 模型绑定与验证3. 依赖注入五、ControllerBase 与 Controller 的区别六、实际开发中的最佳实践七、总结在 …...

    人工智能之数学基础:矩阵分解之LU分解

    本文重点 LU分解是线性代数中一种重要的矩阵分解方法,它将一个方阵分解为一个下三角矩阵(L)和一个上三角矩阵(U)的乘积。这种分解方法在数值线性代数中有着广泛的应用,特别是在求解线性方程组、计算矩阵的行列式、求逆矩阵等方面。 LU分解的基本概念 设A是一个nn的方阵…...

    C#核心学习(六)面向对象--封装(5)静态成员及静态构造函数和静态类 以及和常量的区别

    目录 一、什么是静态的&#xff1f;什么是常量&#xff1f; 1. ​静态&#xff08;Static&#xff09;​ 2. ​常量&#xff08;const&#xff09;​ 二、类中的静态成员有什么用&#xff1f; 1. ​共享数据 2. ​工具方法与全局配置 3. ​单例模式 三、静态类和静态成…...

    去中心化稳定币机制解析与产品策略建议

    去中心化稳定币机制解析与产品策略建议&#xff08;以Maker/DAI为例&#xff09; 一、核心机制对比&#xff1a;法币抵押型 vs. 加密货币抵押型 法币抵押型&#xff08;如USDT&#xff09; 技术逻辑&#xff1a;1:1美元储备托管于中心化机构&#xff08;如银行&#xff09;&…...

    构造超小程序

    文章目录 构造超小程序1 编译器-大小优化2 编译器-移除 C 异常3 链接器-移除所有依赖库4 移除所有函数依赖_RTC_InitBase() _RTC_Shutdown()__security_cookie __security_check_cookie()__chkstk() 5 链接器-移除清单文件6 链接器-移除调试信息7 链接器-关闭随机基址8 移除异常…...

    JSONP跨域访问漏洞

    一、漏洞一:利用回调GetCookie <?php$conn new mysqli(127.0.0.1,root,root,learn) or die("数据库连接不成功"); $conn->set_charset(utf8); $sql "select articleid,author,viewcount,creattime from learn3 where articleid < 5"; $result…...

    数据结构优化DP总结

    单调栈&#xff1a;Codeforces Round 622 (Div. 2) C2. Skyscrapers (hard version) 简单来讲就是最后需要呈现出一个单峰数组&#xff0c;使得总高度最高。 最开始想到暴力枚举每一个元素都充当最高的“单峰”&#xff0c;但是这里的 n 过大&#xff0c;这样枚举肯定会TLE。 …...

    Linux网络相关概念和重要知识(4)(序列化和反序列化、TCP协议、会话和守护进程)

    目录 1.序列化和反序列化 &#xff08;1&#xff09;为什么需要序列化 &#xff08;2&#xff09;序列化方案 ①json ②json序列化代码模板 ③json反序列化代码模板 ④将自定义方案和json结合 2.TCP协议&#xff08;传输控制协议&#xff09; &#xff08;1&#xff09…...

    [MySQL初阶]MySQL数据库基础

    MySQL数据库基础 1. 数据库基础1.1 什么是数据库1.2 主流数据库2. 数据库的基本使用2.1 连接服务器2.2 使用案例2.3 数据逻辑存储3. MySQL架构与分类3.1 MySQL架构3.2 SQL分类4. 存储引擎4.1 存储引擎基本概念4.2 存储引擎基本操作1. 数据库基础 1.1 什么是数据库 存储数据用…...

    【mysql 的安装及使用】

    MySQL 9.0 一、下载MySQL[MySQL 9.0 下载] [(https://dev.mysql.com/downloads/mysql/)选择自定义,选择合适安装路径二、检查安装情况配置环境变量打开命令行查看版本创建数据库在MySQL中,可以使用create database语句来创建数据库。以下是创建一个名为my_db的数据库的示例:…...

    d202542

    一、142.环形链表I 142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 用set统计一下 如果再次出现那么就环的第一个return返回就行 public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();ListNode cur head;while(cur ! …...

    vscode代码片段的设置与使用

    在 Visual Studio Code (VS Code) 中&#xff0c;可以通过自定义**代码片段&#xff08;Snippets&#xff09;**快速插入常用代码模板。以下是详细设置步骤&#xff1a; 步骤 1&#xff1a;打开代码片段设置 按下快捷键 Ctrl Shift P&#xff08;Windows/Linux&#xff09;或…...

    3D 地图渲染-区域纹理图添加

    引入-初始化地图&#xff08;关键代码&#xff09; // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…...

    spring-security原理与应用系列:HttpSecurity.filters

    目录 AnyRequestMatcher WebSecurityConfig HttpSecurity AbstractInterceptUrlConfigurer AbstractAuthenticationProcessingFilter 类图 在前面的文章《spring-security原理与应用系列&#xff1a;securityFilterChainBuilders》中&#xff0c;我们遗留了一个问题&…...

    每日总结4.2

    蓝桥杯刷题&#xff1a; 1. 方格分割&#xff08;dfs,选中心点&#xff0c;开始上下左右遍历&#xff0c;达到边界时数量加一&#xff09; #include <bits/stdc.h> using namespace std; bool vis[10][10]; int mp[10][10]; int ans0; int dx[4]{1,0,0,-1}; int dy[4]{…...

    架构师面试(二十五):分布式存储 Leader 设计

    问题 在非常多的分布式存储系统中&#xff0c;如&#xff1a;Zookeeper、Etcd、Kafka等&#xff0c;往往会存在一个 【Leader】 角色&#xff0c;并由该角色负责数据的写入&#xff0c;这样设计最主要的原因是什么呢&#xff1f; A. 唯一负责数据写入的 Leader 角色可以避免并…...

    mycat --分片规则--

    文章目录 MyCat分片规则详解1. rule1 (基于id的func1算法)2. sharding-by-date (按日期分片)3. rule2 (基于user_id的func1算法)4. sharding-by-intfile (基于枚举值分片)5. auto-sharding-long (长整型范围分片)6. mod-long (取模分片)7. sharding-by-murmur (MurmurHash分片)…...

    系统分析师备考启动

    以考促学&#xff1a;软件高级系统分析师。 一、考试目的&#xff1a; 1、练习三遍读书法、快速阅读、番茄工作法、第一性原理、思维导图等学习方法和学习工具的使用。 2、掌握知识、编织知识网、顺便拿证。 二、组织形式&#xff1a; 小组统一安排学习内容&#xff0c;每…...

    轻量级搜索接口技术解析:快速实现关键词检索的Java/Python实践

    Hi&#xff0c;你好&#xff01; 轻量级搜索接口技术解析&#xff1a;快速实现关键词检索的Java/Python实践 接口特性与适用场景 本接口适用于需要快速集成搜索能力的开发场景&#xff0c;支持通过关键词获取结构化搜索结果。典型应用场景包括&#xff1a; 垂直领域信息检索…...

    防爆风扇选型指南:根据风量风压匹配应用场景​

    在化工、石油、煤矿等存在易燃易爆气体或粉尘的危险环境中&#xff0c;通风设备的安全性能至关重要&#xff0c;防爆风扇成为保障生产环境安全与空气流通的关键装备。正确选型是确保其发挥最佳效能的前提&#xff0c;而根据风量风压匹配应用场景则是选型的核心要点。​ 风量&am…...

    Laravel 中使用 JWT 作用户登录,身份认证

    什么是JWT&#xff1a; JWT 全名 JSON Web Token&#xff0c;是一种开放标准 (RFC 7519)。 用于在网络应用环境间安全地传输信息作为 JSON 对象。 它是一种轻量级的认证和授权机制&#xff0c;特别适合分布式系统的身份验证。 核心特点 紧凑格式&#xff1a;体积小&#x…...

    Git安装

    1、 下载Git https://git-scm.com/ 2、 双击【Git-2.44.0-64-bit.exe】安装&#xff1a; 2-1、 选择自定义安装目录&#xff1a;F:\software\Git 2-2、 一直点击next&#xff0c;直到安装成功。 2-3、 在git项目文件夹&#xff0c;右键出现Git GUI Here和Git Bash Here就说明成…...

    bit与byte的区别与联系?

    李升伟 整理 byte 和 bit 是计算机中常用的数据单位&#xff0c;它们的主要区别和联系如下&#xff1a; 1. 定义 bit&#xff08;比特&#xff09;&#xff1a;计算机中最小的数据单位&#xff0c;表示一个二进制位&#xff0c;值为0或1。 byte&#xff08;字节&#xff09…...

    程序化广告行业(51/89):Cookie映射与移动设备ID映射解析

    程序化广告行业&#xff08;51/89&#xff09;&#xff1a;Cookie映射与移动设备ID映射解析 在当今数字化营销的浪潮中&#xff0c;程序化广告已经成为企业精准触达目标客户的重要手段。作为一名对程序化广告充满兴趣的学习者&#xff0c;我希望通过这篇博客和大家一起深入探索…...

    从吉卜力漫画到艺术创造:GPT-4o多种风格绘图Prompt大全

    在3月底&#xff0c;GPT-4o掀起了一阵吉卜力绘图浪潮&#xff0c;大家纷纷输入一张图片&#xff0c;让4o模型进行风格化迁移&#xff0c;其中吉卜力风格的漫画在社交媒体上最为火热。在大家争议4o的训练数据是否侵权和4o背后的技术原理的时候&#xff0c;我们先来玩一玩&#x…...

    48. 旋转图像

    leetcode Hot 100系列 文章目录 一、核心操作二、外层配合操作三、核心模式代码总结 一、核心操作 先上下翻转再沿着对角线翻转 提示&#xff1a;小白个人理解&#xff0c;如有错误敬请谅解&#xff01; 二、外层配合操作 三、核心模式代码 代码如下&#xff1a; class S…...

    【Linux篇】自主Shell命令行解释器

    &#x1f4cc; 个人主页&#xff1a; 孙同学_ &#x1f527; 文章专栏&#xff1a;Liunx &#x1f4a1; 关注我&#xff0c;分享经验&#xff0c;助你少走弯路&#xff01; 文章目录 1. 获取用户名的接口2. 等待用户输入接口3. 将上述代码进行面向对象式的封装4. 命令行解析5.…...

    leetcode 2873. 有序三元组中的最大值 I

    欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 文章目录 题目描述题目剖析&信息挖掘解题思路方法一 暴力枚举法思路注意复杂度代码实现 方法二 公式拆分动态规划思路注意复杂度代码实现 题目描述 [2873] 有序三元…...

    深度学习 Deep Learning 第14章 自编码器

    深度学习 Deep Learning 第14章 自编码器 内容概要 本章深入探讨了自编码器&#xff08;Autoencoders&#xff09;&#xff0c;这是一种用于特征学习和降维的神经网络架构。自编码器通过编码器和解码器两个部分&#xff0c;将输入数据映射到一个内部表示&#xff08;编码&…...

    全国产传感器的可靠性、MTBF计算、极限测试与加速寿命测试

    全国产传感器的可靠性是指传感器在规定条件下和规定时间内完成规定功能的能力。它是衡量传感器性能的重要指标之一&#xff0c;直接影响传感器的使用寿命和系统稳定性。武汉利又德的小编来和大家分享一下关于全国产传感器的可靠性以及MTBF计算、极限测试与加速寿命测试的小知识…...

    【算法中的数学】裴蜀定理(Bézout’s Identity)总结

    裴蜀定理&#xff08;Bzout’s Identity&#xff09;总结 裴蜀定理是数论中的一个重要定理&#xff0c;描述了整数线性组合与最大公约数&#xff08;GCD&#xff09;之间的关系。 1. 裴蜀定理的内容 对于任意两个整数 a a a 和 b b b&#xff0c;设它们的最大公约数为 d …...

    unity点击button后不松开通过拖拽显示模型松开后模型实例化

    using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;[RequireComponent(typeof(Button))] // 确保脚本挂在Button上 public class DragButtonSpawner : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandle…...

    计算机网络复习 吉林大学

    1、信息交换的三种方式&#xff1a;电路交换&#xff0c;分组交换&#xff0c;报文交换。 从通信资源的分配角度来看&#xff0c;交换就是按照某种方式动态地分配传输线路的资源。 电路交换&#xff1a;&#xff08;星形结构替代全连接&#xff09; 电话交换机接通电话的方式…...

    超级好用的小软件,连接电脑和手机。

    将手机变成电脑摄像头的高效工具Iriun Webcam是一款多平台软件&#xff0c;能够将手机摄像头变成电脑的摄像头&#xff0c;通过简单的设置即可实现视频会议、直播、录制等功能。它支持Windows、Mac和Linux系统&#xff0c;同时兼容iOS和Android手机&#xff0c;操作简单&#x…...

    【JavaScript】十三、事件监听与事件类型

    文章目录 1、事件监听1.1 案例&#xff1a;击关闭顶部广告1.2 案例&#xff1a;随机点名1.3 事件监听的版本 2、事件类型2.1 鼠标事件2.1.1 语法2.1.2 案例&#xff1a;轮播图主动切换 2.2 焦点事件2.2.1 语法2.2.2 案例&#xff1a;模拟小米搜索框 2.3 键盘事件2.3.1 语法2.3.…...

    微服务架构技术栈选型避坑指南:10大核心要素深度拆解

    微服务架构的技术栈选型直接影响系统的稳定性、扩展性和可维护性。以下从10大核心要素出发&#xff0c;结合主流技术方案对比、兼容性评估、失败案例及优化策略&#xff0c;提供系统性选型指南。 1. 服务框架与通信 关键考量点 扩展性&#xff1a;框架需支持定制化扩展&#x…...

    虚拟试衣间微信小程序解决方案

    目录 项目名称: 云尚衣橱 核心功能模块: 技术栈选型: 架构设计概览: 详细功能点实现思路: 数据库设计 (MongoDB 示例): 开发步骤建议: 关键注意事项和挑战: 项目名称: 云尚衣橱 核心功能模块: 用户系统 (User System) 我的衣柜 (My Wardrobe) 虚拟试衣间 (Vir…...

    C++STL——容器-vector(含部分模拟实现,即地层实现原理)(含迭代器失效问题)

    目录 容器——vector 1.构造 模拟实现 2.迭代器 模拟实现&#xff1a; ​编辑 3.容量 模拟实现&#xff1a; 4.元素的访问 模拟实现 5.元素的增删查改 迭代器失效问题&#xff1a; 思考问题 【注】&#xff1a;这里的模拟实现所写的参数以及返回值&#xff0c;都是…...

    MoLe-VLA:通过混合层实现的动态跳层视觉-语言-动作模型实现高效机器人操作

    25年3月来自南京大学、香港理工、北大和香港科技大学的论文“MoLe-VLA: Dynamic Layer-skipping Vision Language Action Model via Mixture-of-Layers for Efficient Robot Manipulation”。 多模态大语言模型 (MLLM) 在理解复杂语言和视觉数据方面表现出色&#xff0c;使通用…...

    《数字图像处理》教材寻找合作者

    Rafael Gonzalez和Richard Woods所著的《数字图像处理》关于滤波器的部分几乎全错&#xff0c;完全从零开始写&#xff0c;困难重重。关于他的问题已经描述在《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》。 现寻找能够共同讨论、切磋、…...

    uni-app 框架 调用蓝牙,获取 iBeacon 定位信标的数据,实现室内定位场景

    背景&#xff1a;最近需要对接了一个 叫 iBeacon 定位信标 硬件设备&#xff0c;这个设备主要的作用是&#xff0c;在信号不好的地方&#xff0c;或者室内实现定位&#xff0c;准确的找到某个东西。就比如 地下停车场&#xff0c;商城里&#xff0c;我们想知道这个停车场的某个…...

    Java面试黄金宝典29

    1. 什么是普通索引和唯一性索引 定义&#xff1a; 普通索引&#xff1a;是最基本的索引类型&#xff0c;它为数据表中的某一列或多列建立索引&#xff0c;以加快数据的查询速度。它不限制索引列的值重复&#xff0c;允许存在多个相同的值。唯一性索引&#xff1a;在普通索引的基…...

    C语言常见3种排序

    主要是三种排序方法&#xff1a;冒泡排序、选择排序、插入排序。 文章目录 一、冒泡排序 1.代码&#xff1a; 2.工作原理&#xff1a; 3.具体过程&#xff1a; 二、选择排序 1.代码 2. 工作原理 3.具体过程&#xff1a; 三、插入排序 1.代码 2.工作原理 3.具体过程 总结 一、…...

    Nyquist插件基础:LISP语法-自定义函数

    1 Nyquist插件基础&#xff1a;LISP语法-自定义函数 在 Nyquist 里&#xff0c;自定义函数能够让你把特定的操作封装起来&#xff0c;实现代码复用和逻辑模块化。下面详细介绍如何在 Nyquist 中定义和使用自定义函数。 1.1.1 1. 基本函数定义 在 Nyquist 中使用 defun 来定义…...

    Visual-RFT:视觉强化微调

    文章目录 速览摘要1. 引言2. 相关工作大型视觉语言模型&#xff08;LVLMs&#xff09;强化学习 3. 方法3.1. 初步带可验证奖励的强化学习DeepSeek R1-Zero和GRPO 3.2. Visual-RFT3.2.1. 视觉感知中的可验证奖励检测任务中的IoU奖励分类任务中的CLS奖励 3.2.2 数据准备 4. 实验4…...

    快速入手-基于DRF的过滤、分页、查询配置(十五)

    1、过滤需要安装插件 pip install django-filter 2、注册 INSTALLED_APPS [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages",…...

    最新Spring Security实战教程(八)Remember-Me实现原理 - 持久化令牌与安全存储方案

    &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...