大二C++期末复习(自用)
一、类
1.定义成员函数
输入年份判断是否是闰年,若是输出年份;若不是,输出NO
#include<iostream>
#include<cstring>
using namespace std;
class TDate{private:int month;int day;int year;public:TDate(int y,int m,int d){year = y;month = m;day = d;}void IsLeapYear(){if((year%400 == 0 )||(year%4==0&&year%100!=0)) {this->Print() ;}else cout<<"No"<<endl;}void Print(){cout<<"Yes"<<endl;cout<<year<<"/"<<month<<"/"<<day<<endl;}
};
int main(){int y,m,d;cin>>y>>m>>d;TDate s(y,m,d);s.IsLeapYear();return 0;
}
2.定义头文件,使用类的接口
成员函数定义看作类的内部,如private的变量定义和public成员函数的声明
//文件名:tdate。h
//预编译处理器
#ifndef TDATE//if not define TDATE将会定义
#define TDATE//定义TDATE
class TDate{
private:int year;int month;int day;
public:void Set(int int int);void IsLeapYear();void Print();
};
#endif
上述是一个tdate.h的类定义 -> 接口
//tdate.cpp 实现类---成员函数的定义
#include<iostream>
#include"tdate.h"//文件名名称
using namespace std;
void TDate::Set(int y,int m,int d){//....
}
2.调用成员函数
1)指针
#include<iostream>
#include"tdate.h"//文件名名称
using namespace std;
void somefuc(TDate *ps){ps->IsLeapYear();//调用指针输出判断
}
int main(){TDate s;s.Set(1983,2,3);somefuc(&s);
}
2) 引用
#include<iostream>
#include"tdate.h"//文件名名称
using namespace std;
void somefuc(TDate &ps){ps->IsLeapYear();//调用指针输出判断
}
int main(){TDate s;s.Set(1983,2,3);somefuc(s);
}
**注意区别指针和引用 大部分情况下是相同 **但指针要给新变量分配空间,而引用直接给原来的地址
3.总结
1.应用1为输入年份,应用2是计算点的直角坐标和极坐标
2.掌握实现类的定义 tdate.h 类的实现 tdate.cpp(成员函数定义)
二、构造函数
1.默认构造函数
class Student{private:char name[10];
};
int main(){Student s;
}
2.无参构造函数
构造函数可以直接调用print
#include<iostream>
#include<cstring>
using namespace std;class Desk{private:int weight;int high;int width;int length;public:Desk(){weight = 20;high = 10;width = 90;length = 100;print();}void print(){cout<<weight<<" "<<high<<" "<<width<<" "<<length<<endl;}
};
int main(){Desk d;
}
3.传参构造函数
见1.1(常见)
4.重载构造函数
1.重载过程中参数个数要不一样才能构造成功
2.在构造无参传递过程中,不用加(),如
Student s( ); —error 不用加括号
#include<iostream>
#include<cstring>
using namespace std;class Student{private:int grade;float gpa;int num;public:Student(){grade = 100;gpa = 5.0;num = 123;cout<<grade<<" "<<gpa<<" "<<num<<" "<<endl;}Student(int s,float g){grade = s;gpa = g;num = 456;cout<<grade<<" "<<gpa<<" "<<num<<" "<<endl;}Student(int s){grade = s;gpa = 3.6;num = 789;cout<<grade<<" "<<gpa<<" "<<num<<" "<<endl;}
};int main(){Student s1;Student s2(90,4.7);Student s3(80);
}
5.嵌套构造函数
main函数开始运行,创建Pair对象p,调用Pair构造函数,为private变量分配空间(int变量,Student,Teacher),最后执行自己的public钟的成员函数,
一步一步的执行
**private 成员变量会在 public 成员函数之前分配空间**
#include<iostream>
#include<cstring>
using namespace std;class Student{private:int grade;float gpa;public:Student(){grade = 100;gpa = 5.0;cout<<grade<<" "<<gpa<<" "<<endl;}
};
class Teacher{private:int salary;public:Teacher(){salary = 30000;cout<<salary<<endl;}
};
class Pair{private:int meeting;
//组合Student s;//创建2 Teacher t;//创建3 public:Pair(){meeting = 0;cout<<meeting<<endl;}
};
int main(){Pair p;//创建1
}
6.拷贝构造函数
一般拷贝构造函数的结构
Student (Student &s) //有一个&
1)使用指针
当private里面是指针时,使用new分配空间 strcpy()
#include<iostream>
#include<cstring>
using namespace std;
class Person{private:char *name;public:Person(char *pname){name = new char[strlen(pname) + 1];if(pname != 0)strcpy(name,pname);cout<<"构造:"<<endl;}//自定义拷贝构造函数 Person(const Person &other){name = new char[strlen(other.name) + 1];if(other.name != 0 )strcpy(name,other.name);cout<<"拷贝:"<<endl; }const char* getName( )const{return name;}~Person(){delete[] name;}
};
int main(){Person p1("A");Person p2(p1);// 等价于p2 = p1;cout<<p2.getName()<<endl;
}
输出
构造:
拷贝:
A
2)使用数组
直接复制 ,不用分配空间和删除空间 strncpy()
#include<iostream>
#include<cstring>
using namespace std;
class Person{private:char name[40];public:Person(char *pname = "NoName"){strncpy(name,pname,sizeof(name));name[sizeof(name) - 1] = '\0';cout<<"构造:"<<endl; }//自定义拷贝构造函数 Person(const Person &other){strncpy(name,other.name,sizeof(name);name[sizeof(name) - 1] = '\0';cout<<"拷贝: "<<endl;}const char* getName( )const{return name;}~Person(){delete name;}
};
int main(){Person p1("A");Person p2(p1);cout<<p2.getName()<<endl;
}
3) 区别strcpy和strncpy
strcpy () 完整的将数组进行复制
strncpy()对于数组中位置多的元素,使用’\0’ 进行填充,否则就全部复制,但常常与 name[sizeof(name) - 1 ] = '\0 连用,保证结尾为空字符,字符串完整
7.关于类的数据成员初始化
对于类的数据成员是一般变量的情况,放在冒号后放在函数体中的初始化是一样的
1)赋值操作有两次初始化
class Myclass{private:int d;public:Myclass(int i){d = i;}
};
2)成员初始化列表
class Myclass{private:int d;public:
//成员初始化列表
//d 在构造函数体执行之前就已经被初始化为 iMyclass(int i) : d(i){}
};
常常使用于常量和引用变量,因为
它们必须再被声明的同时进行初始化,它们**不能**在之后被赋值。这意味着你不能先声明一个常量或引用变量,然后再给它赋值
class MyClass {
private:const int myConst;int& myRef;
public:MyClass(int value, int& refValue) : myConst(value), myRef(refValue) {// 构造函数体}
};
相当于进行一次初始化,构造函数的参数值给到后面: 成员的()值中。
class StudentID{int value;public:Student(int id = 0){value = id;}
};
class Student{private:char name[20];StudentID id;public:Student(char *pname,int ssID = 0):id(ssID){//...}
};
三、析构函数
1.析构过程
无返回类型 无参数 生命周期结束后自动调用
析构函数和调用构造函数的相反顺序(栈)
#include<iostream>
#include<cstring>
using namespace std;class Student{private:int grade;float gpa;public:Student(){grade = 100;gpa = 5.0;cout<<grade<<" "<<gpa<<" "<<endl;}~Student(){cout<<"销毁学生类"<<endl; }
};
class Teacher{private:int salary;public:Teacher(){salary = 30000;cout<<salary<<endl;}~Teacher(){cout<<"销毁老师类"<<endl; }
};
class Pair{private:int meeting;Student s;//创建2 Teacher t;//创建3 public:Pair(){meeting = 0;cout<<meeting<<endl;}~Pair(){cout<<"销毁配对类"<<endl; }
};
int main(){Pair p;//创建1
}
输出 :
100 5
30000
0
销毁配对类
销毁老师类
销毁学生类
2.外部定义成员函数
使用 :: 进行设置
#include<iostream>
#include<cstring>
using namespace std;class Student{private:int grade;float gpa;int num;public:Student();void Print();
};
Student::Student(){grade = 100;gpa = 4.2;Print();
};
void Student::Print(){cout<<grade<<" "<<gpa<<" "<<endl;
}
int main(){Student s;
}
四、综合应用(1)
1.学生姓名 和 学号构造
#include<iostream>
#include<cstring>
using namespace std;class Student{private:char name[20];int num;public:Student(char*,int);void Print();
};
Student::Student(char* pname ,int n){num = n;strncpy(name,pname,sizeof(name));name[sizeof(name) - 1] = '\0';Print();
};
void Student::Print(){cout<<name<<" "<<num<<" "<<endl;
}
int main(){Student s("AAB",1);
}
若构造函数传递过程中不提供任何值,则为默认值和python的函数传递有点像
Student::Student(char* pname = "NoName" ,int n = 0){num = n;strncpy(name,pname,sizeof(name));name[sizeof(name) - 1] = '\0';Print();
};//输出:NOName 0
2,学生姓名 和 学号构(进阶)
定义两个类,进行嵌套使用
#include<iostream>
#include<cstring>
using namespace std;int id = 0;
class SId{private:int value;public:SId(int id = 0){cout<<"构建值="<<id<<endl; value = ++id;}~SId(){cout<<"销毁id"<<endl;value = --id;}int GetValue(){return value;}
};class Student{private:char name[20];SId id;//分配变量空间 public:Student(char*,int);void Print();
};
Student::Student(char* pname = "NoName" ,int n = 0){
//无参传递为默认值strncpy(name,pname,sizeof(name));name[sizeof(name) - 1] = '\0';SId id(n);//传入值 Print();
};
void Student::Print(){cout<<name<<" "<<id.GetValue()<<" "<<endl;
}
int main(){Student s("ABC",2);
}
输出:
构建值=0
构建值=2
ABC 1
销毁id
销毁id
上面的方法,初始化浪费空间,
****(常用)****下面在初始化其他类对象时,直接给其他类变量赋值,不用再次申请多余的变量空间
注意使用一个: 进行初始化对象
#include<iostream>
#include<cstring>
using namespace std;int id = 0;
class SId{private:int value;public:SId(int id = 0){cout<<"构建值="<<id<<endl; value = ++id;}~SId(){cout<<"销毁id"<<endl;value = --id;}int GetValue(){return value;}
};class Student{private:char name[20];SId id;//分配变量空间 //该处不能初始化其他类的对象 public:Student(char*,int);void Print();
};
Student::Student(char* pname = "NoName" ,int n = 0) :id(n){strncpy(name,pname,sizeof(name));name[sizeof(name) - 1] = '\0';Print();
};
void Student::Print(){cout<<name<<" "<<id.GetValue()<<" "<<endl;
}
int main(){Student s("ABC",9999);
}
输出:
构建值=9999
ABC 10000
销毁id
五、静态成员变量
静态成员函数和静态成员变量都是属于类而并非属于一个对象(类的实例 ) 可以直接通过对类名进行访问
-
声明和定义是分开的。静态成员变量在类的定义中声明,在类外部进行初始化。
#include<iostream> #include<cstring> using namespace std;class Student{static int noOfStudent;char name[40];public:Student(char* pname="no name"){strncpy(name,pname,40);name [39] = '\0';noOfStudent ++;//1}~Student(){cout<<"销毁"<<endl;noOfStudent--;}static int number(){return noOfStudent;} }; int Student::noOfStudent = 0;void fn(){Student s1;cout<<"s1构造完毕"<<endl;Student s2;cout<<"s2构造完毕"<<endl;cout<<Student::number()<<endl; } int main(){fn();cout<<"主函数输出:";cout<<Student::number<<endl; }
输出:
s1构造完毕
s2构造完毕2
销毁
销毁
主函数输出:0
六、友元函数
#include<iostream>
#include<cstring>
using namespace std;class Person{private:int age;public:Person(int age){this->age = age;}friend void showAge(Person &p);
};
void showAge(Person &p){cout<<p.age<<endl;
}
int main(){Person p(10);showAge(p);
}
下面两个为使用友元函数和不使用友元函数的对比
#include<iostream>
#include<cstring>
using namespace std;class Animal{private:int itsWeight;int itsAge;public:friend void setValue(Animal & ,int);friend void setValue(Animal& ,int ,int);
};
void setValue(Animal &ta ,int tw)
{ta.itsWeight = tw;cout<<ta.itsWeight<<" "<<endl;
}void setValue(Animal &ta ,int tw ,int tn){ta.itsWeight = tw;ta.itsAge = tn;cout<<ta.itsWeight<<" "<<ta.itsAge<<" "<<endl;}int main(){Animal c1,c2;setValue(c1,123);setValue(c2,45,67);}
增加访问类中保护数据的成员函数
#include<iostream>
#include<cstring>
using namespace std;class Animal{private:int itsWeight;int itsAge;public:Animal(int tw,int ta){itsWeight = tw;itsAge = ta; }int getWeight(){return itsWeight; }int getitsAge(){return itsAge;}
};int main(){Animal c1(123,456);cout<<c1.getitsAge()<<" "<<c1.getWeight()<<" "<<endl;}
总结
- 使用友元, 可以不用增加访问数据的成员函数
- 直接定义友元使用,可以不考虑private、和protected的性质
七、继承
使用学生类进行大学生和研究生的继承
#include<iostream>
#include<cstring>
using namespace std;
class Advisor{int noOfMeeting;
};
class Student{char name[40];float gpa;public:Student(char *pname = "NoName"){strncpy(name,pname,40);name[39] = '\0';gpa = 0;}void addCourse(int hours,float grade){gpa = (hours + 1 + grade) / 2;}float getGpa(){return gpa;} void Print(){cout<<name<<" "<<gpa<<endl;}
};
class GraduateStudent : public Student{private:Advisor teacher;int grade;public:int getGrade(){return grade;}
};
int main(){Student s1("Leo");GraduateStudent gs;s1.addCourse(2,10.0);s1.Print();//6gs.addCourse(1,4.0);cout<<gs.getGpa()<<endl;//3gs.Print();//3
}
输出:
Leo 6.5
3
NoName 3
- 1.public继承
- 2.private继承,基类的私有还是私有
- 3.protected的保护还是保护
继承后面可以不看,了解
1.继承和组合
类以另一个类对象作为数据成员------组合
前面代码中学生和老师共同形成Pair已经遇到了
2.多继承
尽可能不使用,容易产生成员模糊性
#include<iostream>
#include<cstring>
using namespace std;
class Bed{protected:int weight;public:Bed(){weight = 0;} void Sleep(){cout<<"Sleeping"<<endl;}int SetWeight(int i){weight = i;return weight;}
};
class Sofa{protected:int weight;public:Sofa(){weight = 0;}void Watch(){cout<<"Watching"<<endl;}int SetWeight(int i){weight = i;return weight;}
};
class SleeperSofa : public Bed , public Sofa{
//多继承public:SleeperSofa(){} void FoldOut(){cout<<"Folding"<<endl;}
};
int main(){SleeperSofa ss;ss.Watch();ss.FoldOut();ss.Sleep();
//都有输出SetWeight,但要指明类别,否则模糊cout<<ss.Sofa::SetWeight(20);
}
输出:
Watching
Folding
Sleeping
20
3.虚拟继承
还很少见 vritual
区分虚拟函数和虚拟继承,二者无任何联系
家具: 获取重量 设置重量(床、沙发)
床:睡觉
沙发:看电视
沙发床:折叠 (床、沙发)
#include<iostream>
#include<cstring>
using namespace std;
class Furniture{int weight;public:Furniture(){}void SetWeight(int i){weight = i;}int GetWeight(){return weight;}
};//虚拟继承
class Bed : virtual public Furniture{public:Bed(){}void Sleep(){cout<<"Sleeping"<<endl;}
};
class Sofa : virtual public Furniture{public:Sofa(){}void WatchTV(){cout<<"Watching"<<endl;}
};class SleeperSofa : public Bed,public Sofa{public:SleeperSofa():Sofa(),Bed(){//类成员初始化嵌套 }void FoldOut(){cout<<"Folding"<<endl;}
};
int main(){SleeperSofa ss;ss.FoldOut();ss.WatchTV();ss.Sleep();ss.SetWeight(20);cout<<ss.GetWeight()<<endl;
}
4.继承、组合、虚拟的构造顺序
先虚拟后对象,再自己
八、多态
#include<iostream>
#include<cstring>
using namespace std;
class Base{public:virtual void fn(){cout<<"Base"<<endl;}
};
class SubClass : public Base{public:virtual void fn(){//派生类中的virtual可以省略cout<<"Subclass"<<endl;}
};
int i = 0;
void Test(Base & b){b.fn();i++;cout<<"创建完毕"<<i<<endl;
}
int main(){Base bc;SubClass sc;Test(bc);Test(sc);
}
输出
Base
创建完毕1
Subclass
创建完毕2
多态效果 :virtual 虚函数与成员函数完全相同
纯虚函数:被标明,但不具体实现的虚成员函数
virtual void init() = 0
九、运算符重载
1、一元运算符重载(++)
class Counter {
private:int count;
public:Counter(int c = 0) : count(c) {}// 前缀自增运算符重载Counter& operator++() {++count;return *this;}// 后缀自增运算符重载Counter operator++(int) {Counter temp(*this);count++;return temp;}void display() const {cout << "Count: " << count << endl;}
};int main() {Counter c;++c; // 前缀自增c.display(); // 输出: Count: 1c++; // 后缀自增c.display(); // 输出: Count: 2return 0;
}
this指针指向当前函数
2.二元运算符重载(+)
class Complex {
private:double real, imag;
public:Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}Complex operator+(const Complex& c) const {return Complex(real + c.real, imag + c.imag);}void display() const {cout << real << " + " << imag << "i" << endl;}
};int main() {Complex c1(1.0, 2.0);Complex c2(3.0, 4.0);Complex c3 = c1 + c2;c3.display(); // 输出: 4 + 6ireturn 0;
}
++当二元运算符作为成员函数重载时,第一个操作数是调用该函数的对象,第二个操作数通过参数传递。++
3、赋值运算符重载(=):
class MyString {
private:char* str;
public:MyString(const char* s = "") {if (s) {str = new char[strlen(s) + 1];strcpy(str, s);} else {str = nullptr;}}~MyString() {delete[] str;}MyString& operator=(const MyString& s) {if (this != &s) {delete[] str;str = new char[strlen(s.str) + 1];strcpy(str, s.str);}return *this;}void display() const {if (str)cout << str << endl;elsecout << "Empty string" << endl;}
};int main() {MyString s1("Hello");MyString s2;s2 = s1;s2.display(); // 输出: Helloreturn 0;
}
相关文章:
大二C++期末复习(自用)
一、类 1.定义成员函数 输入年份判断是否是闰年,若是输出年份;若不是,输出NO #include<iostream> #include<cstring> using namespace std; class TDate{private:int month;int day;int year;public:TDate(int y,int m,int d)…...
重大进展!微信支付收款码全场景接入银联网络
据中国银联6月19日消息,近日,银联网络迎来微信支付收款码场景的全面接入,推动条码支付互联互通取得新进展,为境内外广大消费者提供更多支付选择、更好支付体验。 2024年6月,伴随微信支付经营收款码的开放,微…...
msvcr110.dll丢失的解决方法,亲测有效的几种解决方法
最近,我在启动一个程序时,系统突然弹出一个错误提示,告诉我电脑缺失了一个名为msvcr110.dll的文件。这让我感到非常困惑,因为我之前从未遇到过这样的问题。经过一番搜索和尝试,我总结了5种靠谱的解决方法。下面分享给大…...
SUSE Linux 15 sp5上Nginx安装配置升级
1.安装SUSE linux 15 SP5 图形化界面安装很简单,选择最小安装,安装好后,使用vim编辑配置文件,结果提示"bash: vim: command not found"。 最简安装把一些常用命令都整没有了,于是又重新选择了Server Applica…...
突破Web3红海,DePIN如何构建创新生态系统?
撰文:TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向,当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设,寻找更多 Web3 行业创新机遇成为…...
裸机与操做系统区别(RTOS)
声明:该系列笔记是参考韦东山老师的视频,链接放在最后!!! rtos:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件…...
详解 ClickHouse 的分片集群
一、简介 分片功能依赖于 Distributed 表引擎,Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…...
AI问答-医疗:什么是“手术报台”
手术报台并不是传统意义上的医疗工具或设备,而是一个与手术耗材追溯管理相关的系统或工具。以下是对手术报台的详细解释: 一、定义与功能 手术报台系统,如医迈德手术报台系统,是一款面向医院跟台人员的微信小程序。 它通过手术耗…...
S-Clustr(影子集群)V3 高并发,去中心化,多节点控制
S-Clustr 项目地址:https://github.com/MartinxMax/S-Clustr/releases/tag/S-Clustr-V3.0 Maptnh Не ограничивайте свои действия виртуальным миром. GitHub: Maptnh Jay Steinberg Man kann die Menschen, die man hasst, in d…...
支持WebDav的网盘infiniCloud(静读天下,Zotero 等挂载)
前言 WebDav是一种基于HTTP的协议,允许用户在Web上直接编辑和管理文件,如复制、移动、删除等。 尽管有一些网盘支持WebDav,但其中大部分都有较多的使用限制。这些限制可能包括:上传文件的大小限制、存储空间的限制、下载速度的限…...
Linux命令行导出MySQL数据库备份并压缩
Linux命令行导出MySQL数据库备份并压缩 导出SQL: 如果使用的是 MySQL 或者 MariaDB 可以使用mysqldump工具进行数据备份的导出; 基本命令: mysqldump -u用户名 -p密码 数据库名称 > 要导出的文件名.sql替换掉你实际的数据库“用户名”…...
二叉树的广度优先搜索(层次遍历)
目录 定义 层序遍历的数据结构 实现过程简述 具体代码 定义 层序遍历就是从左到右一层一层地遍历二叉树。 层序遍历的数据结构 层序遍历需要借用一个辅助数据结构实现,由于队列具有先进先出的特性,符合一层一层遍历的逻辑,而栈先进后出…...
AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM
导入音频,选中音频,并且点 New Multitrack Session 的图标 设计文件名和存储路径,然后点 OK 点 Essential Sound 面板点 Music (如果没有这个面板 点菜单栏 Windows > Essential Sound 调出来) 点 Duration 展…...
11-Django项目--Ajax请求二
目录 模版: demo_list.html perform_list.html 数据库操作: 路由: 视图函数: Ajax_data.py perform.py 模版: demo_list.html {% extends "index/index.html" %} {% load static %} # 未实现修改,删除操作{% block content %}<div class"container…...
代码评审——Java占位符%n的处理
问题描述 在软件开发项目中,特别是在处理动态内容生成与呈现至前端界面的过程中,正确运用占位符以确保文本完整性和数据准确性显得尤为重要。不当的占位符管理不仅可能导致语法错误或逻辑混乱,还会引发一系列隐蔽的问题,这些问题…...
超低排放标准
据朗观视觉小编了解发现,超低排放标准作为衡量一个行业或企业环保水平的重要指标,越来越受到社会各界的关注。本文将深入探讨超低排放标准的内涵、实施意义以及未来展望。 一、超低排放标准的定义 超低排放标准,是指在特定工业生产过程中&am…...
Day15 —— 大语言模型简介
大语言模型简介 大语言模型基本概述什么是大语言模型主要应用领域大语言模型的关键技术大语言模型的应用场景 NLP什么是NLPNLP的主要研究方向word2vecword2vec介绍word2vec的两种模型 全连接神经网络神经网络结构神经网络的激活函数解决神经网络过拟合问题的方法前向传播与反向…...
使用了CDN,局部访问慢,如何排查
如果是局部访问慢,则可从如下角度查看 是否DNS设置错误导致? 个别用户可能存在local DNS设置错误,导致出现跨地域或跨运营商访问。因为CDN的权威DNS是基于用户请求的localDNS来判断所属的地区和运营商,从而将请求引导至对应最近…...
谈谈SQL优化
SQL优化是数据库性能优化中的关键环节,旨在提高查询执行的效率和响应速度。下面是一些常见的SQL优化技巧和策略,涵盖索引、查询设计、表结构设计等方面: 1. 索引优化 创建索引:为常用查询的过滤条件(WHERE 子句&…...
力扣随机一题 6/26 哈希表 数组 思维
博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 题目一: 2869.收集元素的最少操作次数【简单】 题目ÿ…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
