C++复习笔记6
1.String类的实现
注意深浅拷贝, C语言字符串拼接函数strcat()
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vld.h>
#include<assert.h>
using namespace std;class String
{friend ostream& operator<<(ostream & cout, const String & s);
public://String(const char* str)//处理了空指针,等效空串进行初始化//{// if (str == nullptr)// {// this->m_data = (char*)malloc(sizeof(char));// this->m_data[0] = '\0';// }// else// {// this->m_data = (char*)malloc(sizeof(char) * (strlen(str) + 1));// strcpy(this->m_data, str);// }//}String(const char* str = "")//等效写法 空指针和空串不同 没有处理空指针,更加严格{this->m_data = (char*)malloc(sizeof(char) * (strlen(str) + 1));strcpy(this->m_data, str);}String(const String& s){this->m_data = (char*)malloc(sizeof(char) * (strlen(s.m_data) + 1));strcpy(this->m_data, s.m_data);}String& operator=(const String& s){if (this != &s){free(this->m_data);this->m_data = (char*)malloc(sizeof(char) * (strlen(s.m_data) + 1));strcpy(this->m_data, s.m_data);}return *this;}int Length() const{return strlen(this->m_data);}String operator+(const String& s){String tmp(*this);tmp += s;return tmp;}String& operator+=(const String& s){char* tmp = (char*)malloc(strlen(this->m_data) + strlen(s.m_data) + 1);strcpy(tmp, this->m_data);free(this->m_data);this->m_data = (char*)malloc(strlen(tmp) + strlen(s.m_data) + 1);strcat(tmp, s.m_data);strcpy(this->m_data, tmp);free(tmp);return *this;}char operator[](int pos) const{assert(pos >= 0 && pos < Length());return *(this->m_data + pos);//return this->m_data[pos];}~String(){if (this->m_data != nullptr){free(this->m_data);this->m_data = nullptr;}}
private:char* m_data;
};ostream& operator<<(ostream& cout, const String& s)
{cout << s.m_data << endl;return cout;
}void test01()
{//String s(nullptr);//空指针不能拿来给字符串初始化或者赋值String s1("a,b,c");String s2 = s1;
}void test02()
{String s1("abc");String s2("xyz");
}void test03()
{const char* pstr = "ABCXYZ";cout << *(pstr + 1) << endl;cout << pstr[1] << endl;String s("ABC");cout << s[2] << endl;
}void test04()
{String s1("abc");String s2("xyz");s1 += s2;cout << s1;String s3;s3 = s1 + s2;cout << s3;
}int main()
{test04();system("pause");return 0;
}
#include<iostream>
using namespace std;class Date
{
public:Date(int year, int month, int day){this->m_year = year;this->m_month = month;this->m_day = day;}private:int m_year;int m_month;int m_day;
};
3.初始化列表
#include<iostream>
using namespace std;class Time
{
public:Time(int h=0 ) :hour(h) {}//有了全缺省有参构造可以不用默认构造public:int hour;
};class Date
{
public:Date(int day){//有了全缺省有参构造可以不用默认构造对于t,也可以不用在函数体内或者初始化列表初始化this->day = day;}public:Time t;int day;
};int main()
{Date d(10);cout << d.t.hour << endl;system("pause");return 0;
}
#include<iostream>
using namespace std;class Test1
{public:Test1(int a){t = a;}private:int t;
};class Test2
{
public:Test2(int a,int b, const Test1& t):ref(a),ca(b),t1(t){}private:int& ref;const int ca;Test1 t1;
};
成员变量初始化顺序只与成员变量定义的顺序有关。
#include<iostream>
using namespace std;class Date
{
public:Date(int year, int month, int day) :m_month(month), m_year(year), m_day(day), ref(day),c_value(100){}
private://初始化顺序只和这里的定义顺序有关,和上面的初始化列表无关int m_year;int m_month;int m_day;int& ref;//引用数据成员 必须通过参数列表进行初始化const int c_value;
};int main()
{Date dt(2023, 2, 5);system("pause");return 0;
}
初始化顺序例题:
#include<iostream>
using namespace std;class Test
{
public:Test(int a) :_a1(a), _a2(_a1){}void Print(){cout << "_a1 =" << this->_a1 << " _a2 =" << this->_a2 << endl;}private:int _a2;//先初始化a2在初始化a1int _a1;
};int main()
{Test t(1);t.Print();system("pause");return 0;
}
隐式类型转换的发生,不一定类只有一个成员变量,可以有多个(只要缺省值够多,只剩一个或者没有未缺省的值)就可以发生隐式类型转换。
4 友元函数:友元函数可以在类外通过对象访问类的私有成员和保护成员(这个对象可以通过传参得到,也可以通过函数内部实例化得到)。友元函数可以直接访问类的私有成员和保护成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声 明,声明时需要加friend关键字。因此友元函数没有this指针。
注意:友元函数可访问类的私有和保护成员,但不是类的成员函数 ;
#include<iostream>
using namespace std;class A
{
friend void func(A& a);
public:A(int a = 0) :m_a(a) {}private:int m_a;
};void func(A& a)
{a.m_a = 30;cout << a.m_a << endl;A a1(50);a1.m_a = 60;cout << a1.m_a << endl;
}int main()
{A a;func(a);system("pause");return 0;
}
一个函数可以做多个类的友元函数
#include<iostream>
using namespace std;class B;class A
{
friend void func(A& a, B& b);
public:A(int a = 0):m_a(a) {}private:int m_a;
};class B
{
friend void func(A& a, B& b);
public:B(int b=0):m_b(b){ }
private:int m_b;
};void func(A& a, B& b)
{b.m_b = 20;a.m_a = 10;cout << a.m_a << " " << b.m_b << endl;
}int main()
{A a;B b;func(a, b);system("pause");return 0;
}
成员函数做友元:让一个类的成员函数作为另一个类的友元函数。友元函数可以传参或者实例化目标类的对象,这个对象可以访问目标类的非公有成员。成员函数做友元会遇到类声明顺序的问题,一般是前面的类成员访问后面类的私有成员,这样就把前面的类作用域和成员函数声明过了,能够正常声明为友元函数并进行访问,反之不行,后访问前会出现后面的类未定义,不能正常声明成友元函数。
#include<iostream>
using namespace std;class B;class A
{friend void B::PrintA(A& a);
public:void PrintB(B& b);A(int a);
private:int m_a;
};class B
{
friend void A:: PrintB(B& b);
public:B(int b);void PrintA(A& a);
private:int m_b;
};A::A(int a = 0) : m_a(a) {}
B::B(int b = 0) : m_b(b) {}void B::PrintA(A& a)
{ a.m_a = 10;
cout << a.m_a << endl;
}void A::PrintB(B& b)
{b.m_b = 20;cout << b.m_b << endl;
}
正确代码:
#include<iostream>
using namespace std;class B;class A
{
//friend void B::PrintA(A& a);
public:void PrintB(B& b);A(int a);
private:int m_a;
};class B
{
friend void A:: PrintB(B& b);
public:B(int b);//void PrintA(A& a);
private:int m_b;
};A::A(int a = 0) : m_a(a) {}
B::B(int b = 0) : m_b(b) {}//void B::PrintA(A& a)
//{ a.m_a = 10;
//cout << a.m_a << endl;
//}void A::PrintB(B& b)
{b.m_b = 20;cout << b.m_b << endl;
}int main()
{A a;B b;a.PrintB(b);system("pause");return 0;
}
友元类:将一个类声明为另一个类的友元,友元类中所有的成员函数都是目标类的友元函数,可以在类外访问它的私有和保护成员。这里注意涉及到类的声明顺序,通过学习博客发现:
-
类的声明相关资料:
不完全类型(只声明的类)只能在非常有限的情况下使用:可以定义指向这种类型的指针或引用,也可以作为一个已经声明(但没有定义)的函数的参数或返回类型。
对于一个类来说,在创建它的对象前必须首先完成类的定义,而不能仅仅被声明。否则编译器就无法了解这样的对象需要多少存储空间。类似的,类也必须首先被定义,然后才能用引用或者指针访问其成员。简而言之:
如果在一段代码中使用了A类实例化对象(为堆区开辟对象)或者成员变量、成员函数,那么A类必须在这段代码之前定义;
如果这段代码只使用A类来定义指针或者函数参数中的数据类型那么A类可以在这段代码上面声明,而在下面定义。
————————————————
版权声明:本文为CSDN博主「拒绝省略号」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_49030008/article/details/123243230 -
#include<iostream> #include<vld.h> using namespace std;class B; class A { public:A(int a, int b);void setB(int i);void getB();~A();private:int m_a;B* pb; };class B { friend class A; public:B(int b);private:A* pa;int m_b; };A::A(int a=0, int b=0):m_a(a), pb(new B(b)) {} A::~A() { delete pb; pb = nullptr; } B::B(int b = 0) :m_b(b) {}void A::setB(int i) {this->pb->m_b = i; }void A::getB() {cout << this->pb->m_b << endl; }int main() {A a;a.setB(30);a.getB();system("pause"); return 0; }
#include<iostream> using namespace std;//class B; class A { friend class B; public:A(int a = 0){this->m_a = a;}/*void showB(const B& b){cout << b.m_b << endl;}*/private:int m_a; };class B { //friend class A; public:B(int b=0):m_b(b){}void showA(A& a){cout << a.m_a << endl;}private:int m_b; };int main() {A a(10);B b;b.showA(a);system("pause");return 0; }
1.友元关系不能被继承。
2.友元关系是单向的。
3.友元关系不具有传递性。
#include<iostream>
using namespace std;//class B;
class A
{
friend class B;
public:A(int a = 0){this->m_a = a;}/*void showB(const B& b){cout << b.m_b << endl;}*/private:int m_a;
};class B
{
//friend class A;
public:B(int b=0):m_b(b){}void showA(A& a){cout << a.m_a << endl;}private:int m_b;
};int main()
{A a(10);B b;b.showA(a);system("pause");return 0;
}
静态成员:
静态成员函数:1.静态成员函数没有this指针,静态成员函数只能访问静态成员变量。静态成员函数也受到访问权限限定符的限制。
静态成员变量:1.在编译时分配内存。
2.必须在类外进行初始化。
3.由所有对象共享,它是属于整个类的。
4.可以使用对象名调用也可以使用类名调用。
5.静态成员也受到访问权限的限制。
#include<iostream>
using namespace std;//普通可调常和静态 静态和常不能调普通
//Test* const this 普通方法this指针
// const Test* const this 常方法this指针
//静态成员函数 没有this指针class Test
{
public:Test()//:m_value(0)//不能在类内初始化{this->m_data = 0;//this->m_value = 0;//不能在类内初始化}static void Show(){//cout << "m_data =" << m_data << endl;//静态成员函数只能调动静态成员cout << "m_value" << m_value << endl;//Fun();静态成员不能调普通成员}void Fun()//普通成员可以调动静态成员{this->m_data = 1;this->m_value = 10;this->Print();//普通方法可以调动常方法this->Show();//普通方法可以调静态方法}void Print() const{cout << "This is Print()" << endl;//Fun();//常方法不能调普通方法}static int m_value;
private:int m_data;
};
//静态成员并不属于某个对象,属于整个类,所有对象共享
int Test::m_value = 0;//静态成员变量只能在类外进行初始化void test01()
{Test t1;Test t2;cout << t2.m_value << endl;t1.m_value = 100;cout << t2.m_value << endl;
}void test02()
{Test t1;t1.Fun();t1.Show();//类名和对象名都可以调用Test::Show();
}void main()
{test02();
}
静态成员可以作类的实例化对象计数器:
#include<iostream>
using namespace std;void fun2();class Test
{friend void fun(const Test& t);//没有this指针
public:Test(int data =0){this->m_data = data;this->count++;}static void ShowCount(){cout << count << endl;}~Test(){this->count--;}private:int m_data;static int count;
};
int Test::count;void test()
{Test t[100];Test::ShowCount();t[99].ShowCount();Test::ShowCount();
}void main()
{test();system("pause");
}
c11规定,可以在声明类的成员变量时,给它赋默认值,即缺省参数。
#include<iostream>
using namespace std;//友元函数可以在类外访问类的保护和私有成员
//友元函数不能用const修饰class B
{friend class A;//友元类的使用
public:B(int b = 0) :m_b(b) {}private:int m_b;
};class A
{
public:void Print(){cout << "sizeof(p)=" << sizeof(p) << endl;cout << "b.m_b=" << this->b.m_b<< endl;cout << "a.m_a=" << this->m_a << endl;}private:int* p = (int*)malloc(sizeof(int));B b = 20;int m_a = 10;
};int main()
{A a;a.Print();system("pause");return 0;
}
内部类,一个类的内部又定义了另一个类,主要注意在内部类实例化对象时,前面要加上外部类的作用域限定符。
#include<iostream>
using namespace std;class Test
{
public:class Stu{public:void func(){cout << "AAA" << endl;}};void func(){cout << "BBB" << endl;}
};int main()
{Test t;t.func();Test::Stu s;s.func();system("pause");return 0;
}
相关文章:
C++复习笔记6
1.String类的实现 注意深浅拷贝, C语言字符串拼接函数strcat() #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vld.h> #include<assert.h> using namespace std;class String {friend ostream& operator<<(ostream &am…...
指针的步长及意义(C语言基础)
指针的步长及意义 文章目录指针的步长及意义指针变量1后偏移的字节数不同指针解引用时取出的字节数不同其他例子不同类型的指针有何不同的意义指针变量1后跳跃字节数量不同解引用的时候,取出字节数量不同 指针变量1后偏移的字节数不同 代码演示:&#…...
SpringMVC:统一异常处理(11)
统一异常处理1. 说明2. 问题描述3. 异常处理器使用3.1 创建异常处理器类3.2 让程序抛出异常3.3 测试4. 项目异常处理方案4.1 异常分类4.2 异常解决方案4.3 异常解决方案的具体实现4.4 测试5. 总结1. 说明 \quad本篇文章是在文章SpringMVC:SSM整合(Spring…...
SpringBoot的配置与使用
SpringBoot简介 我们的Spring是包含了众多工具的IoC容器,而SpringBoot则是Spring的加强版,可以更加方便快捷的使用 如果Spring是手动挡的车,那么SpringBoot就是自动挡的车,让我们的驾驶体验变得更好 SpringBoot具有一下几种特征…...
【Python】tkinter messagebox练习笔记
我一好友在朋友圈看到人家用代码花式秀恩爱,让我也做一个,我就用我学习半年python的功力,做了这一个东西。🙏窗口主页面(图一)为了让我这个盆友有颜面,特意做了一个问答问他帅不帅,以…...
2022年12月电子学会Python等级考试试卷(五级)答案解析
青少年软件编程(Python)等级考试试卷(五级) 分数:100 题数:38 一、单选题(共25题,共50分) 1. 下面哪个语句正确定义了元组类型数据tuple1?( ) A. t…...
计算机网络自定向下 -- 浅谈可靠性之rdt协议
可靠性数据传输原理 可靠指数据在传输过程中不错,不丢,不乱 运输层要为应用层提供一种服务:数据可以通过一条可靠的信道进行传输,在该信道中传输的数据不会受到损坏或者丢失, 实现这种服务的是可靠数据传输协议。 要实现这种服…...
制造业升级转型:制造业上市公司-智能制造词频统计数据集
发展智能制造,关乎中国制造业转型升级的成效。基于中国制造业上市公司年报,通过文本数据挖掘,提取关键词反映企业对智能制造的关切焦点,进而运用词频及共词网络分析,洞察中国智能制造的发展态势。 研究发现࿰…...
HTML 开发工具整理
一、千乐微云团队推荐的HTML开发工具Visual Studio Code 简称VS Code (第一推荐)Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号…...
介绍ACE C++网络通信框架
很久以前笔者也不太熟悉ACE C网络通信框架,偶然的机会逐渐接触后,发现它的优良! 总结来看它的有点如下 非常适合后台无界面网络通信的系统编程 适合小型化核心网使用;但值得注意,如果您需要的是web领域技术栈&…...
【Mac OS】JDK 多版本切换配置
前言 由于不同的项目可能需要使用的 JDK 版本不一样,所以在系统中配置多个 JDK 版本,并且能随时切换,是一个必要的配置。 查看已安装的 JDK 版本 /usr/libexec/java_home -V框框1是执行的命令 框框2是当前系统下所有的 JDK 版本 框框3是当…...
RabbitMQ-Exchanges交换机
一、介绍 RabbitMQ消息传递模型的核心思想是:生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至不知道这些消息传递到了哪些队列中。相反,生产者只能将消息发送到交换机,交换机工作的内容非常简单,一方…...
离散数学 课时二 命题逻辑等值演算
等值式(等值联结词) 1、设A、B是两个命题公式,若A、B构成的等价式 A等价于B 为重言式,那么称A与B是等值的 2、常用等值式: 注意: 1 双否定律 2 幂等律 3 交换律 4 结合律 5 吸收律 6 德摩根律 7 同一律 8 零律 9 矛盾律 10 排中律 11 蕴含表达式 12 …...
Debezium系列之:事件扁平化转换SMT,简化debezium数据格式,为数据添加head,为值添加键值对
Debezium系列之:事件扁平化转换SMT,简化debezium数据格式,为数据添加head,为值添加键值对 一、需求背景二、Debezium数据格式和扁平化数据格式对比三、事件扁平化SMT作用四、事件扁平化转换SMT设置五、事件扁平化参数详解六、完整SMT参数配置一、需求背景 Debezium 数据更改…...
内网渗透(十八)之Windows协议认证和密码抓取-本地认证(NTML哈希和LM哈希)
系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…...
Portraiture全新4.0最新版人像磨皮插件更新内容
Portraiture是一款智能磨皮插件,为Photoshop和Lightroom添加一键磨皮美化功能,快速对照片中皮肤、头发、眉毛等部位进行美化,无需手动调整,大大提高P图效率。全新4版本,升级AI算法,并独家支持多人及全身模式…...
前端也能悄悄对视频截图?js实现对视频按帧缓存
前言 虽然最后没有采用这种方案来实现滚动控制视频进度,但是仍然想自己试试这种方案的实现,毕竟应用范围也挺广的。 核心代码并不多,算是一篇小短文~。 掘金好像不允许放站外演示链接,所以这里就用动图大概展示下最终…...
TCP、UDP网络编程面试题
TCP、UDP、Socket、HTTP网络编程面试题 什么是网络编程 网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给其他设备,然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式…...
用网络调试助手测试PLC-Reocrder收听模式的过程
目录 一、测试环境 二、步骤及要点说明 1、PLC-Recorder的通道配置 2、PLC-Recorder启动采集 3、配置网络调试助手 4、启动调试助手的连接,并点击“启动批量发送” 5、停止发送,查看发送和接收的情况 三、小结 一、测试环境 Windows10操作系统&a…...
牛客小白月赛66
牛客小白月赛66_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)冒着期末挂科的风险打了打,缓解了一下网瘾,感觉还行最近为了期末鸽了很多期的div3,一学期末就手痒想训,感觉再不打人要没了,结果…...
加载sklearn新闻数据集出错 fetch_20newsgroups() HTTPError: HTTP Error 403: Forbidden解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…...
图解LeetCode——剑指 Offer 53 - I. 在排序数组中查找数字 I
一、题目 统计一个数字在排序数组中出现的次数。 二、示例 示例 1 【输入】nums [5,7,7,8,8,10], target 8 【输出】2 示例 2: 【输入】nums [5,7,7,8,8,10], target 6 【输出】0 提示: 0 < nums.length < 10^5-10^9 < nums[i] < 10^9nums 是一…...
python 实现热门音乐分析 附代码+数据 +论文
项目概述: 本选取了抖音当下最热门的 400 首音乐,通过一系列方法提取每首歌的波形特征,再经过降维以及机器学习等手段,进行无监督学习对音乐数据进行聚类的同时训练并使用监督学习分类器进行音乐流派分类,并通过可视化方法呈现分类聚类效果。 关键词:特征提取,PCA 主成分…...
【2335. 装满杯子需要的最短总时长】
来源:力扣(LeetCode) 描述: 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,…...
再不跳槽,就晚了
从时间节点上来看,3月、4月是每年跳槽的黄金季! 以 BAT 为代表的互联网大厂,无论是薪资待遇、还是平台和福利,都一直是求职者眼中的香饽饽,“大厂经历” 在国内就业环境中无异于一块金子招牌。在这金三银四的时间里&a…...
Java 内存结构解密
程序计数器 物理上被称为寄存器,存取速度很快。 作用 记住下一条jvm指令的执行地址。 特点 线程私有,和线程一块出生。 不存在内存溢出。 虚拟机栈 每个线程运行时所需要的内存,称为虚拟机栈。 每个栈由多个栈帧组成,…...
ROS小车研究笔记2/11/2023:使用ssh远程登录小车
1 SSH简介: SSH全称Secure Shell,是一种建立在应用层的安全网络协议。其安全性又非对称加密(RSA)实现 对称加密:使用同一密钥对信息进行加密和解密,但是一旦该密钥被窃取就会威胁通信安全 非对称加密:使用公钥和私钥。…...
koa ts kick off 搭建项目的基本架子
koa ts kick off 使用ts开发koa项目的基本架子,便于平时随手调研一些技术 项目结构 ├── src │ ├── controller //controller层 │ ├── service //service层 │ ├── routes.ts //路由 │ └── index.ts //项目入…...
h2database源码解析-查询优化器原理
目录一、成本计算规则二、单表查询三、多表关联查询一、成本计算规则 h2的查询优化器基于成本的,因此在执行查询前,会基于成本计算使用哪个索引,如果涉及多表关联,还会计算不同表关联顺序的成本,最终基于最小成本得出…...
2月11日,30秒知全网,精选7个热点
///国产邮轮首制船将于今年5月底出坞,年底交付 浦东新区近期将发布相关政策支持包括外高桥造船在内的船舶产业发展 ///首批个人养老金理财产品名单发布:3家机构7只产品 中国理财网发布的信息显示,首批个人养老金理财产品名单发布࿰…...
创建网站代码/广告推广策划方案
每年收到的申请数超1,500多份,但只招收约130名学生。研究生共开设有以下4个学位项目,分别是:计算机科学理学硕士:为期2年,共需修读32个学分,其中授课部分占28个学分,毕业论文占4个学分。该项目属于研究导向…...
swoole+wordpress/新闻内容摘抄
eval将值代入字符串之中。语法: void eval(string code_str);传回值: 无函式种类: 数据处理内容说明本函式可将字符串之中的变量值代入,通常用在处理数据库的数据上。参数 code_str 为欲处理的字符串。值得注意的是待处理的字符串要符合 PHP 的字符串格式࿰…...
织梦做网站教程/seo推广优化
首先在头文件中声明要实现的功能;标头.h#ifndef game_h #define game_h #define MAX_SIZE 10 typedef unsigned int size_t; typedef int DataType;typedef struct SeqList {DataType _array[MAX_SIZE];int _size; // 顺序表中有效元素的个数 }SeqList, *PSeqList; // 初始化…...
织梦cms网站/百度爱采购平台登录
导读在上周末,开源的Mesa图形库背后的开发团队宣布,基于Linux的操作系统的最终Mesa 18.1版本发布。Mesa 18.1系列在大约18.0分支释出两个月后发布的,可能大多数GNU/Linux发行版目前正在使用,并且已经获得了第四次维护更新。 Mesa …...
西安年网站建设/重庆网站建设与制作
基于springboot和vue实现地方美食分享网站演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包…...
青岛外贸网站制作公司/dw网站制作
问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示: 类型说明ID_Userint自动增长字段,用作该表的主键UserNamevarchar UserDepart表,存放用户所拥有的部…...