设计模式之工厂模式C++实现
参考书籍《Head First设计模式》
参考文章:设计模式:简单工厂、工厂方法、抽象工厂之小结与区别_superbeck的专栏-CSDN博客_简单工厂模式,工厂方法模式,抽象工厂模式简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。 简单工厂简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。 工厂https://blog.csdn.net/superbeck/article/details/4446177
提到工厂模式有三种比较容易混淆的模式,分别是简单工厂模式、工厂方法模式和抽象工厂模式。
相同点:简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。
它们之间的区别是:工厂方法模式用的是继承,即利用工厂方法创建对象时,需要扩展一个类,并覆盖它的工厂方法。抽象工厂模式是通过对象的组合,抽象工厂提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它,然后将它传入一些针对抽象类型所写的代码中。
浅谈简单工厂,工厂方法,抽象工厂的区别和使用 - 程序猿灿林 - 博客园
简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)
工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)
抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)
一、简单工厂(静态工厂)模式
简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。但由于经常被使用,很多地方也都把它叫做设计模式。
简单工厂通过实例化一个工厂类,来获取对应的产品实例。我们不需要关注产品本身如何被创建的细节,只需要通过相应的工厂就可以获得相应的实例。
简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
1.1 简单工厂模式的类图
简单工厂模式的类图如下,图片链接工厂模式--简单工厂模式 - 简书,侵删
Factory工厂类,简单工厂模式的核心。其包含一个创建产品的方法,负责创建具体的产品,一般为静态函数。一般接收参数为枚举类型,通过枚举值确定创建哪一个具体产品,返回一个抽象产品IProduct的指针。客户端通过返回的指针调用产品的一些公共接口。
IProduct产品基类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
Product具体产品类。工厂方法种创建出的就是该类型的对象。
1.2 案列描述
披萨店可以生产各种口味的披萨,比如cheese口味,greek口味和pepperoni口味。披萨生产出来后需要准备、烘烤、切片、装盒的工作。
1.3 代码实现
声明:类的声明和实现在同一个文件里是个坏习惯,坏习惯,坏习惯,但因为我懒,还是写一起了,大家不要效仿,要引以为戒,要引以为戒,要引以为戒。
首先定义披萨类基类Pissa(就是类图中的IProduct类),和具体披萨类CheesePizza和PepperoniPizza(对应于类图中的Product),代码如下。
//披萨类
class Pizza{
public:void prepare(){cout << "Preparing " << m_name << "..." << endl;cout << "Tossing " << m_name << "..." << endl;cout << "Add " << m_sauce<< "..." << endl;cout << "Add toppings: ";for (vector<string>::iterator it = m_toppings.begin(); it != m_toppings.end(); it++){cout << " " << *it;}cout << endl;}void bake(){cout << "Bake for 25 minutes at 350 "<< endl;;}void cut(){cout << "Cutting the pizza into diagonal slices" << endl;;}void box(){cout << "Place pizza in official pizzaStore box " << endl;;}string getName(){return m_name;}
protected:string m_name;string m_dough;string m_sauce;vector<string>m_toppings;
};//具体披萨
class CheesePizza :public Pizza
{
public:CheesePizza(){m_name = "Cheese Pizza"; m_dough = "Thin crust dough";m_sauce = "Marinara Sauce";m_toppings.push_back("Grated Reggiano Cheese");}
};class PepperoniPizza :public Pizza
{
public:PepperoniPizza(){m_name = "Pepperoni Pizza";m_dough = "Thick crust dough";m_sauce = "Plum tomato sauce";m_toppings.push_back("Pepperoni");}
};
然后是简单披萨工厂类SimplePizzaFactory(对应于类图中的Factory),其包含一个静态方法来生产具体披萨。代码如下
//披萨工厂
class SimplePizzaFactory{
public:static Pizza* CreatePizza(string pizzaType){Pizza* pizza = nullptr;if (pizzaType == "cheese")pizza = new CheesePizza();else if (pizzaType == "pepperoni")pizza = new PepperoniPizza();return pizza;}
};
接下来就是使用工厂的代码了。定义披萨店类,其包含一个披萨工厂的指针,使用该工厂生产披萨,代码如下
//测试代码
//使用披萨工厂生产披萨
class PizzaStore
{
public:PizzaStore(SimplePizzaFactory* factory){m_factory = factory;}Pizza* OrderPizza(string pizzaType){Pizza* pizza = m_factory->CreatePizza(pizzaType);pizza->prepare();pizza->bake();pizza->cut();pizza->box();return pizza;}
private:SimplePizzaFactory* m_factory;
};
最后,在main函数中使用PissaStroe对象定一个cheese披萨和一个pepperoni披萨。代码如下
//测试代码
int main()
{SimplePizzaFactory factory;PizzaStore pizzaStore(&factory);Pizza* pizza = pizzaStore.OrderPizza("cheese");cout << "Order a " << pizza->getName()<<endl<<endl;pizza = pizzaStore.OrderPizza("pepperoni");cout << "Order a " << pizza->getName() << endl;system("pause");
}
1.4 运行结果
二、工厂方法模式
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样客户关于超类的代码就和子类对象创建代码解耦了。
2.1 工厂方法模式类图
工厂方法模式类图如下, 图片链接Carson带你学设计模式:工厂方法模式(Factory Method)_Carson带你学Android-CSDN博客_工厂方法类图,侵删
与简单工厂模式的不同之处是,简单工厂是在工厂类的方法中处理对象的创建,而工厂方法模式是将针对具体对象的处理封装在子类中。这样就优化了简单工厂中内聚性低的缺点。
2.2 案列描述
继续1.2中的案例,披萨店要开两个分店,纽约披萨店和芝加哥披萨店。每个分店因为区域差异,需要的披萨口味不同,就需要用当地的工厂生产披萨。
2.3 代码实现
首先定义披萨类基类Pissa(就是类图中的Product类)这个与简单工厂中一样,然后是具体披萨类NYStyleCheesePizza、NYStylePepperoniPizza、ChicagoStyleCheesePizza、和ChicagoStylePepperoniPizza(对应于类图中的ProductA或ProductB),代码如下。
//披萨类
class Pizza{
public:void prepare(){cout << "Preparing " << m_name << "..." << endl;cout << "Tossing " << m_name << "..." << endl;cout << "Add " << m_sauce << "..." << endl;cout << "Add toppings: ";for (vector<string>::iterator it = m_toppings.begin(); it != m_toppings.end(); it++){cout << " " << *it;}cout << endl;}void bake(){cout << "Bake for 25 minutes at 350 " << endl;;}void cut(){cout << "Cutting the pizza into diagonal slices" << endl;;}void box(){cout << "Place pizza in official pizzaStore box " << endl;;}string getName(){return m_name;}
protected:string m_name;string m_dough;string m_sauce;vector<string>m_toppings;
};//纽约风味奶酪披萨
class NYStyleCheesePizza :public Pizza
{
public:NYStyleCheesePizza(){m_name = "NY Style Cheese Pizza";m_dough = "Thin crust dough";m_sauce = "Marinara Sauce";m_toppings.push_back("Grated Reggiano Cheese");}
};//纽约风味Pepperoni披萨
class NYStylePepperoniPizza :public Pizza
{
public:NYStylePepperoniPizza(){m_name = "NY Style Pepperoni Pizza";m_dough = "Thick crust dough";m_sauce = "Plum tomato sauce";m_toppings.push_back("A lot Pepperoni");}
};//芝加哥风味奶酪披萨
class ChicagoStyleCheesePizza :public Pizza
{
public:ChicagoStyleCheesePizza(){m_name = "Chicago Style Cheese Pizza";m_dough = "Extra Thik crust dough";m_sauce = "Plum Tomato Sauce";m_toppings.push_back("Shredded Mozzarella Cheese");}
};//芝加哥风味Pepperoni披萨
class ChicagoStylePepperoniPizza :public Pizza
{
public:ChicagoStylePepperoniPizza(){m_name = "Chicago Style Pepperoni Pizza";m_dough = "Thick crust dough";m_sauce = "Plum tomato sauce";m_toppings.push_back("A little Pepperoni");}
};
然后是披萨店和各个区域的披萨分店即PizzaStore类(对应与类图中的Factory),该类中声包含一个纯虚函数CreatePizza,即工厂方法。 NYPizzaStore和ChicagoPizzaStore(对应与类图中的FactoryA和FactoryB即具体工厂,负责生产具体的披萨)继承自PizzaStore,实现工厂方法CreatePizza
。代码如下
//披萨店
class PizzaStore
{
public:Pizza* OrderPizza(string pizzaType){Pizza* pizza = CreatePizza(pizzaType);pizza->prepare();pizza->bake();pizza->cut();pizza->box();return pizza;}//与简单工厂相比,实例化披萨的责任被移到一个方法,此方法如同是一个工厂。virtual Pizza* CreatePizza(string pizzaType) = 0;
};//纽约披萨分店
class NYPizzaStore :public PizzaStore
{
public:virtual Pizza* CreatePizza(string pizzaType){if (pizzaType == "cheese")return new NYStyleCheesePizza();else if (pizzaType == "pepperoni")return new NYStylePepperoniPizza();elsereturn nullptr;}
};//芝加哥披萨分店
class ChicagoPizzaStore :public PizzaStore
{
public:virtual Pizza* CreatePizza(string pizzaType){if (pizzaType == "cheese")return new ChicagoStyleCheesePizza();else if (pizzaType == "pepperoni")return new ChicagoStylePepperoniPizza();elsereturn nullptr;}
};
最后是测试代码。首先实例化两个不同的披萨店,然后用不同的店订不同风味的奶酪披萨。代码如下
//测试代码
int main()
{PizzaStore* nyStore = new NYPizzaStore();PizzaStore* chicagoStore = new ChicagoPizzaStore();Pizza* pizza = nyStore->OrderPizza("cheese");cout << "Order a " << pizza->getName() << endl << endl;delete pizza;pizza = chicagoStore->OrderPizza("cheese");cout << "Order a " << pizza->getName() << endl;delete nyStore;delete chicagoStore;delete pizza;system("pause");
}
2.4 运行结果
三、抽象工厂模式
抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂的任务是定义一个负责创建一组产品的接口。这个接口内的每个方法都负责创建一个具体产品,同时我们利用实现抽象工厂的子类来提供这些具体的做法。所以,在抽象工厂中利用工厂方法实现生产方法是相当自然的做法。
3.1 抽象工厂模式类图
抽象工厂模式类图如下, 图片链接设计模式:简单工厂、工厂方法、抽象工厂之小结与区别_superbeck的专栏-CSDN博客_简单工厂模式,工厂方法模式,抽象工厂模式,侵删
3.2 案列描述
继续2.2中的案例,披萨店想要扩展自己的业务,除了生产披萨,也开始生产蛋糕(这样的店看上去不伦不类,因为是我瞎编的,哈哈哈)。每个不同区域的披萨工厂可以生产当地风味的披萨和蛋糕(披萨和蛋糕是两个不同的产品族)。
3.3 代码实现
#include <string>
#include <vector>
#include <iostream>using namespace std;//披萨类
class Pizza{
public:void prepare(){cout << "Preparing " << m_name << "..." << endl;cout << "Tossing " << m_name << "..." << endl;cout << "Add " << m_sauce << "..." << endl;cout << "Add toppings: ";for (vector<string>::iterator it = m_toppings.begin(); it != m_toppings.end(); it++){cout << " " << *it;}cout << endl;}void bake(){cout << "Bake for 25 minutes at 350 " << endl;;}void cut(){cout << "Cutting the pizza into diagonal slices" << endl;;}void box(){cout << "Place pizza in official pizzaStore box " << endl;;}string getName(){return m_name;}
protected:string m_name;string m_dough;string m_sauce;vector<string>m_toppings;
};//纽约风味奶酪披萨
class NYStyleCheesePizza :public Pizza
{
public:NYStyleCheesePizza(){m_name = "NY Style Cheese Pizza";m_dough = "Thin crust dough";m_sauce = "Marinara Sauce";m_toppings.push_back("Grated Reggiano Cheese");}
};//纽约风味Pepperoni披萨
class NYStylePepperoniPizza :public Pizza
{
public:NYStylePepperoniPizza(){m_name = "NY Style Pepperoni Pizza";m_dough = "Thick crust dough";m_sauce = "Plum tomato sauce";m_toppings.push_back("A lot Pepperoni");}
};//芝加哥风味奶酪披萨
class ChicagoStyleCheesePizza :public Pizza
{
public:ChicagoStyleCheesePizza(){m_name = "Chicago Style Cheese Pizza";m_dough = "Extra Thik crust dough";m_sauce = "Plum Tomato Sauce";m_toppings.push_back("Shredded Mozzarella Cheese");}
};//芝加哥风味Pepperoni披萨
class ChicagoStylePepperoniPizza :public Pizza
{
public:ChicagoStylePepperoniPizza(){m_name = "Chicago Style Pepperoni Pizza";m_dough = "Thick crust dough";m_sauce = "Plum tomato sauce";m_toppings.push_back("A little Pepperoni");}
};class Cake
{
public:string getName(){return m_name;}void bake(){cout << "Bake for 15 minutes at 130 " << endl;;}void box(){cout << "Place cake in official cake box " << endl;;}
protected:string m_name;
};//纽约风味甜饼
class NYStyleSweetCake :public Cake
{
public:NYStyleSweetCake(){m_name = "NY Style Sweet Cake";}
};//纽约风味咸饼
class NYStyleSaltyCake :public Cake
{
public:NYStyleSaltyCake(){m_name = "NY Style salty cake";}
};//芝加哥风味甜饼
class ChicagoStyleSweetCake :public Cake
{
public:ChicagoStyleSweetCake(){m_name = "Chicago Style Sweet Cake";}
};//芝加哥风味咸饼
class ChicagoStyleSaltyCake :public Cake
{
public:ChicagoStyleSaltyCake(){m_name = "Chicago Style salty cake";}
};//测试代码
//披萨店
class PizzaStore
{
public:Pizza* OrderPizza(string pizzaType){Pizza* pizza = CreatePizza(pizzaType);pizza->prepare();pizza->bake();pizza->cut();pizza->box();return pizza;}Cake* OrderCake(string cakeType){Cake* cake = CreateCake(cakeType);cake->bake();cake->box();return cake;}//与简单工厂相比,实例化披萨的责任被移到一个方法,此方法如同是一个工厂。virtual Pizza* CreatePizza(string pizzaType) = 0;virtual Cake* CreateCake(string cakeType) = 0;
};//纽约披萨分店
class NYPizzaStore :public PizzaStore
{
public:virtual Pizza* CreatePizza(string pizzaType){if (pizzaType == "cheese")return new NYStyleCheesePizza();else if (pizzaType == "pepperoni")return new NYStylePepperoniPizza();elsereturn nullptr;}virtual Cake* CreateCake(string cakeType){if (cakeType == "sweet")return new NYStyleSweetCake();else if (cakeType == "salty")return new NYStyleSaltyCake();elsereturn nullptr;}
};//芝加哥披萨分店
class ChicagoPizzaStore :public PizzaStore
{
public:virtual Pizza* CreatePizza(string pizzaType){if (pizzaType == "cheese")return new ChicagoStyleCheesePizza();else if (pizzaType == "pepperoni")return new ChicagoStylePepperoniPizza();elsereturn nullptr;}virtual Cake* CreateCake(string cakeType){if (cakeType == "sweet")return new ChicagoStyleSweetCake();else if (cakeType == "salty")return new ChicagoStyleSaltyCake();elsereturn nullptr;}
};//测试代码
int main()
{PizzaStore* nyStore = new NYPizzaStore();PizzaStore* chicagoStore = new ChicagoPizzaStore();Pizza* pizza = nyStore->OrderPizza("cheese");cout << "Order a " << pizza->getName() << endl;Cake* cake = nyStore->OrderCake("sweet");cout << "Order a " << cake->getName() << endl<<endl;delete pizza;delete cake;pizza = chicagoStore->OrderPizza("cheese");cout << "Order a " << pizza->getName() << endl;cake = chicagoStore->OrderCake("sweet");cout << "Order a " << cake->getName() << endl;delete nyStore;delete chicagoStore;delete pizza;system("pause");
}
输出结果
ps:三个模式放在一起写,就一不小心又臭又长了。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Pass-01
这一种是属于javascript 只允许上传jpg,png,gif,如果要用php,要修改限制 打开开发者工具,把限制文件传入的代码删除,就可以上传带有木马的php文件了 打开页面是空白的,php中的代码已经被读取了,用蚁剑就可…...
2024/3/17 11:03:36 - mysql存储引擎
mysql存储引擎mysql存储引擎介绍1、InnoDB存储引擎2、MyISAM存储引擎3、MEMORY存储引擎存储引擎的选择mysql存储引擎介绍 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储…...
2024/3/6 11:25:08 - Linux--mkdir和rm命令选项
1. mkdir命令选项 命令选项说明-p创建所依赖的文件夹2. rm命令选项 命令选项说明-i交互式提示-r递归删除目录及其内容-f强制删除,忽略不存在的文件,无需提示-d删除空目录3. 小结 创建嵌套文件夹使用 “mkdir –p” 嵌套目录删除空目录使用 “rmdir 目…...
2024/3/6 11:25:07 - 变量、结构体、联合体重定义问题
变量、结构体、联合体定义只能有一次,所以定义不能放在.h文件里面 如果放在.h文件然后多个.c(源文件)包含此.h文件,这会造成编译重定义报错 那多个.c(源文件)里面要用同一个变量怎么办? 在变…...
2024/3/17 11:03:47 - Nginx学习
概念扫盲 反向代理...
2024/3/4 14:46:33 - .netCore3.0 + WebApi + Vue2.0项目搭建——(二)、Swagger的使用
一、什么是Swagger Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持…...
2024/3/4 14:46:31 - webpack打包基本配置
webpack打包基本配置 安装webpack及相关基本包 yarn add -D webpack webpack-cli typescript// 自动生成html文件 yarn add -D html-webpack-plugin// 内置服务器,热更新 yarn add -D webpack-dev-server// 每一次编译前清空dist yarn add -D clean-webpack-plugi…...
2024/3/11 2:48:19 - 总结了下自己的XSS绕过思路和心得
最常见的XSS检测代码: <script>alert(1)</script> // 调用JavaScript语句 <img srcx οnerrοralert(1)> // src是错误的 就会调用error函数 <a hrefjavascript:alert(1)> // 点击a即可触发 实际应用中web程序往往会通过一些过滤规则来防…...
2024/3/6 11:25:06 - Flutter开发(二十九):Flutter热重启、热加载、调试与发布应用
1.Flutter热重启、热加载 2.混合开发调试 dart 代码 3.发布应用 1.Flutter热重启、热加载 Flutter自带热重启/热加载的功能,但是到了 Android 项目中集成 Flutter ,这个功能好像没用了。下面来打开这个功能。 将设备连接到电脑上,关闭 APP…...
2024/3/14 4:29:12 - Vue mixins混入
Vue mixins 混入 1、mixins 含义 mixins 就是混入,就是定义一部分公共的方法或者计算属性,然后混入到各个组件中使用,方便管理与统一修改,mixins 是一种分发Vue组件中可复用功能的非常灵活的一种方式。 一个混入对象可以包含任意组件选项。比如组件的生命周期&…...
2024/3/6 11:25:03 - 多目标优化算法:多目标社交网络搜索算法MOSNS(提供MATLAB源码)
社交网络搜索算法 社交网络搜索算法(SNS)是Hadi Bayzidi等人在2021年提出的一种元启发式优化算法。SNS 算法通过模仿社交网络用户为获得更多人气过程中的决策情绪进行建模。 四种决策情绪包括模仿、对话、争论和创新,这是用户在社交网络中的…...
2024/3/9 17:59:16 - 严格模式注意点 “use strict“;
严格模式的作用域 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>11-严格模式的作用域</title><style>* {margin: 0;padding: 0;}</style> </head> <body>"use s…...
2024/3/17 17:33:02 - 31.函数参数
位置参数,位置参数需要按照顺序 关键字参数 函数调用时,如果有位置参数,位置参数必须在关键字参数前面,但关键字参数之间不存在先后顺序 缺省参数 不定长参数:不定长参数也叫可变参数,用于不确定调用…...
2024/3/6 11:25:00 - java 操作 docker
1. 开启docker 远程访问, 2. 开启docker swarm 上述内容不在详细说明 <!-- Docker依赖 --> <dependency><groupId>com.github.docker-java</groupId><artifactId>docker-java</artifactId><!-- use latest version htt…...
2024/3/6 11:24:59 - oracle数据库使用指南
(44条消息) oracle数据库_风请扬-CSDN博客...
2024/3/6 11:24:58 - 选择结构homework
任务1、四个整数排序 降序输出 升序输出 任务2、判断是否酒驾 小知识:国家质量监督检验检疫局发布的《车辆驾驶人员血液、呼气酒精含量阈值与检验》中规定:车辆驾驶人员血液中的酒精含量小20mg/100ml不构成饮酒驾驶行为;酒精含量大等于20…...
2024/3/12 13:20:00 - 346 UDP通信程序练习
346 UDP通信程序练习 【需求】 UDP发送数据,数据来自键盘录入,直到输入的数据是886,发送数据结束 UDP接收数据,因为不确定停止发送的时间,故采用死循环接收 --------------------------------------------- packa…...
2024/3/6 11:24:56 - linux Prometheus+Grafana 部署配置
Prometheus+grafana部署简介:Prometheus是一个最初在SoundCloud上构建的开源系统监控和警报工具包 。自2012年成立以来,许多公司和组织都采用 Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,并且独立于任何公司。为了强调这一点,并澄清…...
2024/3/6 11:24:55 - ASP.NET(C#)系统如何对接验证码短信接口?
ASP.NET(C#)对接验证码短信接口DEMO示例 本文为您提供了ASP.NET(C#)版本的验证码短信接口对接DEMO示例 //接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。 //账户注册:请通过该地址开通账户http://user.ihuyi.com/?9v…...
2024/3/6 11:24:55 - AMD用户受益,Win11更新将修复锐龙性能bug
Win11官方版已经正式推送,全新的UI设计和全新的实用功能赢得了众多用户的青睐。但看起来新的win11系统对AMD锐龙用户并不友好,AMD锐龙处理器的BUG在其首次升级中,使AMD锐龙处理器的性能受到影响,好在最新消息披露,解决…...
2024/3/6 11:24:53
最新文章
- AMS概念以及面试相关整理
1、ActivityManagerService是什么?什么时候初始化的?有什么作用? ActivityManagerService(AMS)是什么? ActivityManagerService(简称AMS)是Android操作系统中的一个核心服务&#…...
2024/3/28 18:03:06 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【Go】panic/recover、编译器指令
https://blog.csdn.net/zhanggqianglovec/article/details/127906942 https://www.cnblogs.com/ricklz/p/14692264.html https://zhuanlan.zhihu.com/p/624326431 学一点,整一点,基本都是综合别人的,弄成我能理解的内容 panic、recover 1、p…...
2024/3/28 17:33:15 - 网络安全笔记-day6,NTFS安全权限
文章目录 NTFS安全权限常用文件系统文件安全权限打开文件安全属性修改文件安全权限1.取消父项继承权限2.添加用户访问权限3.修改用户权限4.验证文件权限5.总结权限 强制继承父项权限文件复制移动权限影响跨分区同分区 总结1.权限累加2.管理员最高权限2.管理员最高权限 NTFS安全…...
2024/3/27 18:22:31 - 【Linux】Linux安装软件---软件包管理器 yum
主页:醋溜马桶圈-CSDN博客 专栏:Linux_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.Linux中安装软件 1.1 源代码安装 1.2 rpm包安装 1.3 yum安装 1.3.1 举例 1.3.2 图示yum下载安装 2.Linux系统的生态 如何选…...
2024/3/27 21:32:06 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/3/27 10:21:24 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/3/24 20:11:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/3/18 12:12:47 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/3/24 20:11:23 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/3/26 20:58:42 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/3/28 17:01:12 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/3/24 5:55:47 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/3/27 10:28:22 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/3/26 23:04:51 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/3/26 11:20:25 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/3/24 20:11:18 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/3/28 9:10:53 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/3/24 20:11:16 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/3/24 20:11:15 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/3/27 7:12:50 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/3/24 20:11:13 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/3/26 11:21:23 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/3/24 20:11:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/3/28 12:42:28 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/3/26 9:58:17 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57