cpp: Visitor Pattern

news/2024/10/29 0:29:11/
/*****************************************************************//*** \file   Gold.h* \brief 访问者模式  Visitor Pattern  C++ 14 行为模式*  2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef GOLD_H
#define GOLD_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>using namespace std;namespace DuJewelryVisitorPattern
{class GoldVisitor;/// <summary>/// 黄金/// </summary>class Gold{public:/// <summary>/// 这里的形参是访问者父类指针/// </summary>/// <param name="pvisitor"></param>virtual void Accept(GoldVisitor* pvisitor) = 0;public:/// <summary>/// 名称/// </summary>/// <returns></returns>virtual string getName() = 0; /// <summary>/// 总价格,单位:元/// </summary>/// <returns></returns>virtual float getPrice() = 0;   };}#endif/*****************************************************************//*** \file   GoldGenius.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef GOLDGENIUS_H
#define GOLDGENIUS_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 天赋/// </summary>class GoldGenius:public Gold{public:/// <summary>/// 名称/// </summary>/// <returns></returns>virtual string getName(){return "天赋";}/// <summary>/// 价格/// </summary>/// <returns></returns>virtual float getPrice(){return 46.8f;  }public:/// <summary>////// </summary>/// <param name="pvisitor"></param>void Accept(GoldVisitor* pvisitor);};
}
#endif/*****************************************************************//*** \file   GoldGentle.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef GOLDGENGLE_H
#define GOLDGENGLE_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 高尚/// </summary>class GoldGentle :public Gold{public:/// <summary>/// 名称/// </summary>/// <returns></returns>virtual string getName(){return "高尚";}/// <summary>/// 价格/// </summary>/// <returns></returns>virtual float getPrice(){return 111.3f;   }public:/// <summary>////// </summary>/// <param name="pvisitor"></param>void Accept(GoldVisitor* pvisitor);};}#endif/*****************************************************************//*** \file   GoldGlorious.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef GOLDGLORIOUS_H
#define GOLDGLORIOUS_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 璀璨/// </summary>class GoldGlorious :public Gold{public:/// <summary>/// 名称/// </summary>/// <returns></returns>virtual string getName(){return "璀璨";}/// <summary>/// 价格/// </summary>/// <returns></returns>virtual float getPrice(){return 122.0f;    //}public:/// <summary>/// virtual/// </summary>/// <param name="pvisitor"></param>void Accept(GoldVisitor* pvisitor) ; //};
}
#endif/*****************************************************************//*** \file   GoldGenius.cpp* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#include "GoldGenius.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>////// </summary>/// <param name="pvisitor"></param>void GoldGenius::Accept(GoldVisitor* pvisitor){pvisitor->VisitElmGenius(this);}
}/*****************************************************************//*** \file   GoldGentle.cpp* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#include "GoldGentle.h"
using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>////// </summary>/// <param name="pvisitor"></param>void GoldGentle::Accept(GoldVisitor* pvisitor){pvisitor->VisitElmGentle(this);}
}/*****************************************************************//*** \file   GoldGlorious.cpp* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#include "GoldGlorious.h"
using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>////// </summary>/// <param name="pvisitor"></param>void GoldGlorious::Accept(GoldVisitor* pvisitor){pvisitor->VisitElmGlorious(this);}}/*****************************************************************//*** \file   GoldVisitor.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef GOLDVISITOR_H
#define GOLDVISITOR_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>
#include <map>#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"using namespace std;namespace DuJewelryVisitorPattern
{class GoldGenius;class GoldGentle;class GoldGlorious;/// <summary>////// </summary>class GoldVisitor{public:/// <summary>/// 做父类时析构函数应该为虚函数/// </summary>virtual ~GoldVisitor() {}/// <summary>/// 访问元素: virtual  = 0/// </summary>/// <param name="pelem"></param>virtual void VisitElmGenius(GoldGenius* pelem)=0 ;/// <summary>/// 访问元素:/// </summary>/// <param name="pelem"></param>virtual void VisitElmGentle(GoldGentle* pelem)=0;/// <summary>/// 访问元素:/// </summary>/// <param name="pelem"></param>virtual void VisitElmGlorious(GoldGlorious* pelem)=0;以下几个接口的名字都叫Visit(成员函数重载)//virtual void Visit(GoldGenius* pelem) = 0;   //访问元素://virtual void Visit(GoldGentle* pelem) = 0;  //访问元素://virtual void Visit(GoldGlorious* pelem) = 0;       //访问元素:};}#endif/*****************************************************************//*** \file   ObjectStructure.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef OBJECTSTRUCTURE_H
#define OBJECTSTRUCTURE_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 对象结构/// </summary>class ObjectStructure{public:/// <summary>/// 增加黄金到黄金列表中/// </summary>/// <param name="p_mdc"></param>void addGold(Gold* p_mdc){goldlist.push_back(p_mdc);}/// <summary>/// //// </summary>/// <param name="pvisitor"></param>void procAction(GoldVisitor* pvisitor){for (auto iter = goldlist.begin(); iter != goldlist.end(); ++iter){(*iter)->Accept(pvisitor);}}private:/// <summary>/// 黄金列表/// </summary>list <Gold*> goldlist;};
}
#endif/*****************************************************************//*** \file   VisitorConsignee.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef VISITORCONSIGNEE_H
#define VISITORCONSIGNEE_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 取黄金人员/// </summary>class VisitorConsignee : public GoldVisitor{public:/// <summary>////// </summary>/// <param name="pelem"></param>virtual void VisitElmGenius(GoldGenius* pelem){cout << "取黄金人员将黄金“" << pelem->getName() << "”拿给了我!" << endl;}/// <summary>////// </summary>/// <param name="pelem"></param>virtual void VisitElmGentle(GoldGentle* pelem){cout << "取黄金人员将黄金“" << pelem->getName() << "”拿给了我!" << endl;}/// <summary>////// </summary>/// <param name="pelem"></param>virtual void VisitElmGlorious(GoldGlorious* pelem){cout << "取黄金人员将黄金“" << pelem->getName() << "”拿给了我!" << endl;}};}#endif/*****************************************************************//*** \file   VisitorCounselor.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef VISITORCOUNSELOR_H
#define VISITORCOUNSELOR_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 珠宝顾问/// </summary>class VisitorCounselor : public GoldVisitor{public:/// <summary>/// 天赋/// </summary>/// <param name="pelem"></param>virtual void VisitElmGenius(GoldGenius* pelem){cout << "珠宝顾问建议:“天赋”!" << endl;}/// <summary>/// 高尚/// </summary>/// <param name="pelem"></param>virtual void VisitElmGentle(GoldGentle* pelem){cout << "珠宝顾问建议:“高尚”!" << endl;}/// <summary>/// 璀璨/// </summary>/// <param name="pelem"></param>virtual void VisitElmGlorious(GoldGlorious* pelem){cout << "珠宝顾问建议:“璀璨”!" << endl;}};
}
#endif/*****************************************************************//*** \file   VisitorTollCollector.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef VISITORTOLLCOLLECTOR_H
#define VISITORTOLLCOLLECTOR_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>/// 收费人员访问者子类/// </summary>class VisitorTollCollector : public GoldVisitor{public:/// <summary>////// </summary>/// <param name="pelem"></param>virtual void VisitElmGenius(GoldGenius* pelem){float tmpprice = pelem->getPrice();cout << "收费人员累计黄金“" << pelem->getName() << "”的价格:" << tmpprice << endl;totalCost += tmpprice;}/// <summary>////// </summary>/// <param name="pelem"></param>virtual void VisitElmGentle(GoldGentle* pelem){float tmpprice = pelem->getPrice();cout << "收费人员累计黄金“" << pelem->getName() << "”的价格:" << tmpprice << endl;totalCost += tmpprice;}/// <summary>////// </summary>/// <param name="pelem"></param>virtual void VisitElmGlorious(GoldGlorious* pelem){float tmpprice = pelem->getPrice();cout << "收费人员累计黄金“" << pelem->getName() << "”的价格:" << tmpprice << endl;totalCost += tmpprice;}/// <summary>/// 返回总费用/// </summary>/// <returns></returns>float getTotalCost(){return totalCost;}private:/// <summary>/// 总费用/// </summary>float totalCost = 0.0f; };
}#endif/*****************************************************************//*** \file   GeovinDu.h* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#pragma once
#ifndef GEOVINDU_H
#define GEOVINDU_H#include<cstring>
#include<stdbool.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
#include<cmath>
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <array>
#include <functional>
#include <list>
#include <string>
#include <string.h>
#include <vector>#include "Gold.h"
#include "GoldVisitor.h"
#include "GoldGenius.h"
#include "GoldGentle.h"
#include "GoldGlorious.h"#include "GoldProcess.h"#include "VisitorConsignee.h"
#include "VisitorCounselor.h"
#include "VisitorTollCollector.h"
#include "ObjectStructure.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>////// </summary>class GeovinDu{private:public:/// <summary>////// </summary>void displaySimple();/// <summary>////// </summary>void displayDuSimple();};}#endif/*****************************************************************//*** \file   GeovinDu.cpp* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社* \author geovindu* \date   June 2023*********************************************************************/
#include "GeovinDu.h"using namespace std;namespace DuJewelryVisitorPattern
{/// <summary>////// </summary>void GeovinDu::displaySimple(){DuJewelryVisitorPattern::Gold* pm1 = new DuJewelryVisitorPattern::GoldGenius();DuJewelryVisitorPattern::Gold* pm2 = new DuJewelryVisitorPattern::GoldGentle();DuJewelryVisitorPattern::Gold* pm3 = new DuJewelryVisitorPattern::GoldGlorious();    DuJewelryVisitorPattern::GoldProcess mdcprocobj;mdcprocobj.addGold(pm1);mdcprocobj.addGold(pm2);mdcprocobj.addGold(pm3);mdcprocobj.procAction("收费人员");mdcprocobj.procAction("取黄金人员");//释放资源delete pm1;delete pm2;delete pm3;}/// <summary>////// </summary>void GeovinDu::displayDuSimple(){DuJewelryVisitorPattern::VisitorTollCollector visitorgeovindu; //收费人员访问者子类,里面承载着向我收费的算法DuJewelryVisitorPattern::GoldGenius goldasplcrp;DuJewelryVisitorPattern::GoldGentle  goldfftdnhsp;DuJewelryVisitorPattern::GoldGlorious golddlx;//各个元素子类调用Accept接受访问者的访问,就可以实现访问者要实现的功能goldasplcrp.Accept(&visitorgeovindu); //累加价格goldfftdnhsp.Accept(&visitorgeovindu);//累加价格golddlx.Accept(&visitorgeovindu);     //累加价格cout << "所有黄金的总价为:" << visitor_geovindu.getTotalCost() << ",收费人员收取了我的费用!" << endl;//----DuJewelryVisitorPattern::VisitorConsignee visitordu; //取黄金员访问者子类,里面承载着向我发黄金的算法goldasplcrp.Accept(&visitordu);goldfftdnhsp.Accept(&visitordu);golddlx.Accept(&visitordu);    //-----DuJewelryVisitorPattern::VisitorCounselor visitorgeovin;  //珠宝顾问访问者子类,里面承载着为我配置算法goldasplcrp.Accept(&visitorgeovin);goldfftdnhsp.Accept(&visitorgeovin);golddlx.Accept(&visitorgeovin);    //---------DuJewelryVisitorPattern::ObjectStructure objstruc;objstruc.addGold(&goldasplcrp);objstruc.addGold(&goldfftdnhsp);objstruc.addGold(&golddlx);objstruc.procAction(&visitorgeovin);}}

调用:

/*****************************************************************//*** \file   ConsoleDuVisitorPattern.cpp* \brief  访问者模式  Visitor Pattern  C++ 14 行为模式* 2023年6月8日 涂聚文 Geovin Du Visual Studio 2022 edit.文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社** \author geovindu* \date   June 2023*********************************************************************/
// ConsoleDuVisitorPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _UNICODE#include <iostream>
#include "GeovinDu.h"using namespace std;
using namespace DuJewelryVisitorPattern;int main()
{std::cout << "Hello World!!涂聚文 Geovin Du\n";GeovinDu geovin;geovin.displaySimple();cout << "************" << endl;geovin.displayDuSimple();system("pause");return 0;
}// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单// 入门使用技巧:
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE

输出:

Hello World!!涂聚文 Geovin Du
收费人员累计黄金“天赋”的价格:46.8
收费人员累计黄金“高尚”的价格:111.3
收费人员累计黄金“璀璨”的价格:122
所有黄金的总为:280.1,收费人员收取了我的费用!
取黄金人员将黄金“天赋”拿给了我!
取黄金人员将黄金“高尚”拿给了我!
取黄金人员将黄金“璀璨”拿给了我!
************
收费人员累计黄金“天赋”的价格:46.8
收费人员累计黄金“高尚”的价格:111.3
收费人员累计黄金“璀璨”的价格:122
所有黄金的总价为:280.1,收费人员收取了我的费用!
取黄金人员将黄金“天赋”拿给了我!
取黄金人员将黄金“高尚”拿给了我!
取黄金人员将黄金“璀璨”拿给了我!
珠宝顾问建议:“天赋”!
珠宝顾问建议:“高尚”!
珠宝顾问建议:“璀璨”!
珠宝顾问建议:“天赋”!
珠宝顾问建议:“高尚”!
珠宝顾问建议:“璀璨”!
请按任意键继续. . .


http://www.ppmy.cn/news/288540.html

相关文章

【新申请】新SRRC容易Fail点分享 2.4G和5.8G的干扰规避判定方法

新SRRC容易Fail点分享 一、2.4G 产品针对于高信道边带变严格了&#xff0c;在之前带外杂散limit为-80dBm/Hz的基础上增加了一段2483.5MHz-2500MHz限值为-40dBm/MHz, 计算可得-100dBm/Hz, 限值严格了20dB。 二、2.4G和5.8G低频发射杂散变严&#xff0c;新规2.4G和5.8G限值变为…

华硕B85M-D台式机主板音响没反应,更新驱动还是找不到realtek高清晰音频管理器原因及解决方案

"驱动人生"收到一些用户反馈说&#xff0c;华硕主板B85M-D台式机主板的音响用不了&#xff0c;更新驱动还是找不到realtek高清晰音频管理器 在驱动人生8检测显示驱动正常&#xff0c;但全面诊断显示声卡状态异常。 在驱动人生8里提示有且只有一个声卡状态异常&…

安装黑苹果macOS Mojave 10.14.6 -技嘉B85+i5 4690+HD4600 + GTX760

安装黑苹果macOS Mojave 10.14.6 安装Mac全过程只需要下载balenaEtcher一个软件即可&#xff0c;不用下载别的乱七八糟 的软件 制作启动U盘 1、下载软件balenaEtcher 2、下载镜像 macOS Mojave 10.14.6(18G84) Installer with Clover 5027.dmg 链接&#xff1a;https://pa…

华硕主板B85-PRO GAMER关机后鼠标、键盘仍亮着问题的解决办法

子丰最近入手了华硕B85-PRO GAMER&#xff0c;但是装上了之后&#xff0c;发现关机之后&#xff0c;鼠标和键盘还是亮着的。这其实就说明了USB还处于通电状态。而且关机后主板上的音频那一块的音频灯也是亮着的。 此方法应该也是适用于华硕其它型号的主板。 由于子丰不会截图…

[Telink][TLSR8251] [泰凌微][SDK3.4] 上手第三步 Demo 介绍

[Telink][TLSR8251] [泰凌微][SDK3.4] 上手第二步 框架介绍 Telink BLE SDK 给⽤⼾提供了多个 BLE demo。 ⽤⼾通过软硬件 demo 的运⾏&#xff0c;可以观察到直观的效果。⽤⼾也可以在 demo code 上进⾏修改&#xff0c;完成⾃⼰的应⽤开发。 BLE Slave Demo DemoStackAppl…

《Java 核心技术面试》课程笔记(十三)

谈谈接口和抽象类有什么区别&#xff1f; 典型回答 接口和抽象类是 Java 面向对象设计的两个基础机制。 接口 接口是对行为的抽象&#xff0c;它是抽象方法的集合&#xff0c;利用接口可以达到 API 定义和实现分离的目的。接口&#xff0c;不能实例化&#xff1b;不能包含任何…

关于B85M-V Plus支持AHCI驱动问题

一家小宾馆&#xff0c;搭个小服务器&#xff0c;主板为华硕的B85M-v Plus&#xff0c;考虑资源与效率服务器装Win2003 Server版&#xff0c;其他一切正常&#xff0c;但在提高IO读写性能&#xff0c;打开AHCI后&#xff0c;系统来回重启&#xff0c;用SKYIAR注入不成功&#x…

32.Linux命令行

目录 一、命令。 &#xff08;1&#xff09;jdk的下载与更改。 &#xff08;1.1&#xff09;删除Linux自带的jdk。 &#xff08;1.2&#xff09;删除Linux上自己安装的JDK。&#xff08;更换jdk版本&#xff09; 二、访问不了linux中的页面。 &#xff08;1&#xff09;关…