javascript各种设计模式

  • 设计模式之单例模式
  • 设计模式之构造函数模式
  • 设计模式之建造者模式
  • 设计模式之工厂模式
  • 设计模式之代理模式
  • 设计模式之命令模式
  • 设计模式之原型模式


    看了这么多模式之后,你或许很茫然,但是在实际写代码的过程中,这些设计模式能起到不少作用,下面我们就来讨论每一种设计模式的具体实现以及他们的使用方法。


一、设计模式之单利模式


1、概念:在传统的开发工程师眼里,单利模式就是保证每一个类只有一个实例,我们在实现时首先判断实例是否存在,如果存在,则直接返回,如果不存在就创建了再返回,这就确保了每一个类只有一个实例对象。在javascript里单例作为一个命名空间的提供者,从全局里提供一个唯一的访问点来访问对象。

 2、作用以及注意事项:作用:1.模块间通信2.系统中某个类的对象只能存在一个3.保护自己的属性和方法注意事项:1.注意this的使用2.闭包容易造成内存泄漏    3.使用继承时注意new的使用。    

3、实现
最简单的一种办法就是使用是对象字面量的方法,其字面量里可以包含大量的属性和方法。

var firstObject = {property1: "something",property2: "something else",method1: function () {console.log('hello web!');}
};

如果你要扩展该对象,我们可以提供自己的私有成员,然后我们通过闭包在其内部封装这些变量和函数声明。我们可以实现私有或者公有的方法。我们再看下面这一段代码:

var firstObject= function () {/* 这里声明私有变量和方法 */var privateVariable = 'something private';function showPrivate() {console.log(privateVariable);}/* 公有变量和方法(可以访问私有变量和方法) */return {publicMethod: function () {showPrivate();},publicVar: 'the public can see this!'};
};var single = firstObject();
single.publicMethod();  // 输出 'something private'
console.log(single.publicVar); // 输出 'the public can see this!'

如果我们想做到只有在使用的时候才初始化,那该如何做呢?为了节约资源的目的,我们可以另外一个构造函数里来初始化这些代码,如下:

var firstjObiect= (function () {var instantiated;function init() {/*这里定义单例代码*/return {publicMethod: function () {console.log('hello world');},publicProperty: 'test'};}return {getInstance: function () {if (!instantiated) {instantiated = init();}return instantiated;}};
})();/*调用公有的方法来获取实例:*/
firstjObiect.getInstance().publicMethod();

我们来看一下他的使用场景,单例一般是用在系统间各种模式的通信协调上

var firstObjectTester = (function () {//参数:传递给单例的一个参数集合function Singleton(args) {//设置args变量为接收的参数或者为空(如果没有提供的话)var args = args || {};//设置name参数this.name = 'SingletonTester';//设置pointX的值this.pointX = args.pointX || 6; //从接收的参数里获取,或者设置为默认值//设置pointY的值this.pointY = args.pointY || 10;}//实例容器var instance;var _static = {name: 'SingletonTester',//获取实例的方法//返回Singleton的实例getInstance: function (args) {if (instance === undefined) {instance = new Singleton(args);}return instance;}};return _static;
})();var singletonTest = firstObjectTester .getInstance({ pointX: 5 });
console.log(singletonTest.pointX); // 输出 5 

下面给大家链接一下单例模式实现的一个例子,这里把那链接给大家:
解决Textarea的数据存储时的Html转Txt和展示时Txt转Html

上面这种方式主要实现的方法,还有其他的一些实现方法(来自汤姆大叔的博客)
方法一、

function Universe() {// 判断是否存在实例if (typeof Universe.instance === 'object') {return Universe.instance;}// 其它内容this.start_time = 0;this.bang = "Big";// 缓存Universe.instance = this;// 隐式返回this
}// 测试
var uni = new Universe();
var uni2 = new Universe();
console.log(uni === uni2); // true

方法二、

function Universe() {// 缓存的实例var instance = this;// 其它内容this.start_time = 0;this.bang = "Big";// 重写构造函数Universe = function () {return instance;};
}// 测试
var uni = new Universe();
var uni2 = new Universe();
uni.bang = "123";
console.log(uni === uni2); // true
console.log(uni2.bang); // 123

二、设计模式之构造函数模式


1.概念
构造函数用于创建特定类型的对象,我们在里面不仅声明了使用的对象,构造函数还可以接受参数以便于第一次创建的时候设置对象的成员值。你也可以声明自定义类型对象的属性和方法。


2.作用和注意事项
作用:

  • 用于创建特定类型的对象。
  • 第一次声明的时候给对象赋值
  • 可以传参进去,自己声明构造函数,赋予属性和方法

注意事项:

  • 注意new的使用
  • 区分与单例的区别

3.基本用法
在JavaScript里,构造函数通常是认为用来实现实例的,JavaScript没有类的概念,但是有特殊的构造函数。我们通过使用new操作付,我们可以告诉javascript我们要创建的的一个新的对象并且新对象的成员都是构造函数里定义的。在构造函数里,this指向的是新创建的对象,基本语法如下:

function PersonBir(name, year, month) {this.month = month;this.year = year;this.name = name;this.output= function () {return this.name + ":" + this.year +"年"+ this.month+"月";};
}var ming= new PersonBir("小明", 1998, 5);
var gang= new PersonBir("小刚", 2000, 4);console.log(ming.output());
console.log(gang.output());

这就是最简单的构造函数的方法,但是我们有没有发现一个问题,我们在继承的时候是不是感觉太麻烦了,所以我们可以通过原型prototype,将ouput方法添加到创建的对象上,来看下面的这一段代码

function PersonBir(name, year, month) {this.month = month;this.year = year;this.name = name;
}
PersonBir.prototype.output=function(){return this.name + ":" + this.year +"年"+ this.month+"月";
}
var ming= new PersonBir("小明", 1998, 5);
var gang= new PersonBir("小刚", 2000, 4);
console.log(ming.output());
console.log(gang.output());

这样output单实例可以在PersonBir对象实例中共享使用,我们通过给构造函数命名时采用函数名大写来表示,以便于区分普通函数。


4.强制使用new操作符
对于构造函数new操作符的使用我们来看下面这些代码,我们通过判断this值的instanceof是是不是PersonBir达到强制使用new操作符,以达到目的。

function PersonBir(name, year, month) {//核心代码,如果为假,就创建一个新的实例返回。if(!(this instanceof PersonBir)){return new PersonBir(name, year, month);}this.month = month;this.year = year;this.name = name;
}
PersonBir.prototype.output=function(){return this.name + ":" + this.year +"年"+ this.month+"月";
}
var ming= new PersonBir("小明", 1998, 5);
var gang= new PersonBir("小刚", 2000, 4);
console.log(ming.output());
console.log(gang.output());

三、建造者模式


1.概念
建造者模式可以将一个复杂的对象的构建与其表示相分离,使同样的构建过程可以创建不同的表示。如果我们用了建造者模式,那么用户就需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式实际就是一个指挥者,一个建造者,一个使用指挥者调用具体建造者工作得出结果的客户。主要用于“分步骤构建一个复杂的对象”


2.作用以及注意事项

模式作用:

  • 分步创建一个复杂的对象
  • 解耦封装过程和具体创建组件
  • 无需关心组件如何组装

注意事项:

  • 一定要一个稳定的算法进行支持(“分步骤”是一个稳定的算法)
  • 加工工艺是暴露的

了解了基本原理之后,我们来看下面这个实例,然后你就会对建造这模式有更深的认识了。


3.实例

一个土豪需要建一个别墅,然后直接找包工头,包工头再找工人把别墅建好。这里土豪不用直接一个一个工人的去找。只需包工头知道土豪需求,然后去找工人,工人干活,土豪也不需要知道房子具体怎么建,最后能拿到房就可以了。

    //1.产出东西是房子 //2.包工头调用工人进行开工而且他要很清楚工人们具体的某一个大项 //3.工人是盖房子的 工人可以建厨房、卧室、建客厅 //4.包工头只是一个接口而已 他不干活 他只对外说我能建房子function House() { this.kitchen = ""; this.bedroom = ""; this.livingroom = ""; }; function Contractor() { this.construct = function(worker) { worker.construct_kitchen(); worker.construct_bedroom(); worker.construct_livingroom(); } }; function Worker() {this.construct_kitchen =function() { console.log("厨房建好了"); } this.construct_bedroom = function() { console.log("卧室建好了"); } this.construct_livingroom = function() { console.log("客厅建好了"); }this.submit = function() {var _house = new House(); _house.kitchen = "finished"; _house.bedroom = "finished"; _house.livingroom = "finished"; return _house; }}; var worker = new Worker(); var contractor = new Contractor(); contractor.construct(worker); // 主人要房子 var myhouse = worker.submit(); console.log(myhouse);

四、工厂模式


1.概念
工厂模式定义了一个用于创建对象的接口,这个接口由子类决定实例化哪一个类,该模式是一个类的实例化延迟到了子类。而子类可以重写接口的方法以便创建的时候指定自己的对象类型(抽象工厂)


2.作用和注意事项
作用:

  • 对象构建十分复杂。
  • 需要依赖具体的环境创建不同的实例
  • 处理大量的具有相同属性的小对象

注意事项:

  • 不能滥用工厂,有时候仅仅是给代码增加复杂度


    3.使用方法
    我们通过一个例子来演示这个问题,就像我们这个工厂里要生产不同类型的产品一样,我们每个类型写在一个方法,这样我们在生产的时候直接调用这个办法就行了。 那请看这段代码:

var productManager = {};productManager.createProductA = function () {console.log('ProductA');
}productManager.createProductB = function () {console.log('ProductB');
}productManager.factory = function (typeType) {return new productManager[typeType];
}productManager.factory("createProductA");

我们在详细一点,假如我们想要在网页中插入一些元素,而这些元素的类型不固定,可能是图片可能是链接,甚至可能是文本,根据工行模式的定义我们需要定义相应的子类

var page = page || {};
page.dom = page.dom || {};
//子函数1:处理文本
page.dom.Text = function () {this.insert = function (where) {var txt = document.createTextNode(this.url);where.appendChild(txt);};
};//子函数2:处理链接
page.dom.Link = function () {this.insert = function (where) {var link = document.createElement('a');link.href = this.url;link.appendChild(document.createTextNode(this.url));where.appendChild(link);};
};//子函数3:处理图片
page.dom.Image = function () {this.insert = function (where) {var im = document.createElement('img');im.src = this.url;where.appendChild(im);};
};

那我们如何定义工厂模式呢?其实很简单

page.dom.factory = function (type) {return new page.dom[type];
}

使用方式如下:

var o = page.dom.factory('Link');
o.url = 'http://www.cnblogs.com';
o.insert(document.body);

五、代理模式


1.概念
代理模式就是为一个对象提供一个代用品或者占位符,以便控制对它的访问。也就是为了保障当前对象的单一职责,而需要创建另一个对象来处理当前对象的一些逻辑以提高代码效率判定状态等,代理几乎可以是任何对象:文件,资源,内存中的对象,或者是一些难以复制的东西,常见的代理有远程代理,虚拟代理,安全代理,智能指引,我主要介绍最常见的两种代理模式就是虚拟代理。


2.作用和注意事项
1.远程代理(一个空间将不同空间的的对象进行局部代理)
2.虚拟代理(需要创建开销很大的对象,如图片加载)
3.安全代理(控制真实对象的访问权限)
4.智能引导(调用对象代理处理另外的一些事情,如垃圾回收机制)
注意事项:
不能滥用代理,有时候仅仅会增加代码的复杂程度。


我们来看虚拟代理实现图片预加载

// 图片加载函数
var myImage = (function(){var imgNode = document.createElement("img");document.body.appendChild(imgNode);return {setSrc: function(src) {imgNode.src = src;}}
})();// 引入代理对象
var proxyImage = (function(){var img = new Image;img.onload = function(){// 图片加载完成,正式加载图片myImage.setSrc( this.src );};return {setSrc: function(src){// 图片未被载入时,加载一张提示图片myImage.setSrc("file://c:/loading.png");img.src = src;}}
})();
// 调用代理对象加载图片
proxyImage.setSrc( "http://images/qq.jpg");

另一个就是虚拟代理合并http请求

// 文件同步函数
var synchronousFile = function( id ){console.log( "开始同步文件,id为:" + id );
}
// 使用代理合并请求
var proxySynchronousFile = (function(){var cache = [], // 保存一段时间内需要同步的IDtimer; // 定时器指针return function( id ){cache[cache.length] = id;if( timer ){return;}timer = setTimeout( function(){proxySynchronousFile( cache.join( "," ) ); // 2s 后向本体发送需要同步的ID集合clearTimeout( timer ); // 清空定时器timer = null;cache = [];},2000 );}
})();
// 绑定点击事件
var checkbox = document.getElementsByTagName( "input" );for(var i= 0, c; c = checkbox[i++]; ){c.onclick = function(){if( this.checked === true ){// 使用代理进行文件同步proxySynchronousFile( this.id );}}
}

六、命令模式

1.概念
命令模式用于将一个请求封装成一个对象,从而可以用不同的参数对客户进行参数化,该模式将函数的调用请求和操作封装成一个单一的对象,然后对这个对象进行单一的处理,简而言之分为三个对象:
1.发起者:发出调用命令即可,具体如何执行,谁来执行并不清楚。
2.接收者:有对应的接口处理不同的命令,至于命令是什么,谁发出的,这不重要。
3.命令对象:上面我们说过,我们将发起者和接受者分开了,而这需要这个桥梁链接起来,这就是命令对象,命令对象接受发送者的调用,=然后调用接受者的相应接口。


2.作用以及注意事项
作用:
1.将封装、请求、调用结合为一体。
2.提高程序模块化的灵活性。
注意事项:
不需要借口一致,直接调用函数即可,以免造成浪费。


3.实例

    // 发送者 var setCommond = function(button, fn) { button.onClick = function() { fn() } }; // 执行命令者 var menu = { reFresh: function() { console.log("刷新"); }, add: function() { console.log("增加"); }, delete: function() { console.log("删除"); } }; // 命令对象 var commondObj = function(reciver) {return function() { reciver.reFresh(); } }; var commondObj1 = commondObj(menu); setCommond(btn1, commondObj1);

发送者(setCommond):不关心给哪个button,以及绑定什么事件,只要通过参数传入就好。
命令对象(commondObj):只需要接收到接受者的参数,当发送者发出命令时,执行就好。
接受者(menu):不用关心在哪里被调用被谁调用,只需要按需执行就好了。


七、原型模式


1.概念
原型模式是指用原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象。对于原型模式,我们利用javascript原型继承特性去继承特性这样一种方式来创建,也就是创建一个对象作为另一个对象的prototype属性。

var vehiclePrototype = {init: function (carModel) {this.model = carModel;},getModel: function () {console.log('车辆模具是:' + this.model);}
};function vehicle(model) {function F() { };F.prototype = vehiclePrototype;var f = new F();f.init(model);return f;
}var car = vehicle('福特Escort');
car.getModel();
//上面代码来自汤姆大叔的博客

对于原型模式我们在javascript中使用无处不在,往往我们将原型与我们其他设计模式结合起来使用,能达到更好的效果。


总结:

说了这么设计模式,你理解的有多少呢,使用设计模式是为了提高我们解决问题的效率,不同的设计模式也是根据不同的应用环境来制订的,而在大多数情况下,设计方式一般是结合起来使用的,往往能达到更好的效果,制定好的设计方案有利于我们解决问题,有利于代码的维护,在使用过程中千万不要为了实用设计模式而强行使用,这样往往会提高代码的复杂度。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 【Webpack】320- Webpack4 入门手册(共 18 章)(下)

    介绍1. 背景最近和部门老大,一起在研究团队【EFT - 前端新手村】的建设,目的在于:帮助新人快速了解和融入公司团队,帮助零基础新人学习和入门前端开发并且达到公司业务开发水平。本文也是属于【EFT - 前端新手村】的一部分,用来帮助新人快速入门 Webpack4,内容偏基础,当…...

    2024/5/9 4:58:31
  2. Javascript 设计模式系统讲解与应用

    下载地址:百度网盘...

    2024/4/20 23:44:47
  3. Android SDK 和 Eclipse ADT 安装

    开发移动项目需安装 Android SDK 和 Eclipse ADT,官方下载地址http://developer.android.com/居然被墙了,于是google一个代理地址打开下载页面(代理地址第二天就不能用了,也没给大家贴出来),下载android-sdk_r07-windows.zip和ADT-0.9.9.zip,1. 安装SDK包,解压后双击SD…...

    2024/5/8 22:30:00
  4. 大量的QT控件及示例发放

    大量的QT控件及示例发放QT属性控件项目https://github.com/lexxmark/QtnProperty 比特币交易软件https://github.com/JulyIGHOR/QtBitcoinTrader 导航控件http://qt-apps.org/content/show.php/NavBar?content=162885 虚拟键盘http://qt-apps.org/content/show.php/VirtualKey…...

    2024/4/20 23:44:45
  5. 【Webpack】319- Webpack4 入门手册(共 18 章)(上)

    介绍1. 背景最近和部门老大,一起在研究团队【EFT - 前端新手村】的建设,目的在于:帮助新人快速了解和融入公司团队,帮助零基础新人学习和入门前端开发并且达到公司业务开发水平。本文也是属于【EFT - 前端新手村】的一部分,用来帮助新人快速入门 Webpack4,内容偏基础,当…...

    2024/5/8 12:31:33
  6. 【学习笔记javascript设计模式与开发实践----1】

    个人吐槽 读了不少的关于js的基础书箱,有必要在js的编码结构和编码效率上有所提高(个人资质很差,所以只代表个人观点。如有说的不对的,还请大神们见谅……),个人一直觉得,不会用设计模式不代表你就不是一个好的程序员,可能在编码的过程中,你已经不知不觉的用到一些模式…...

    2024/4/20 23:44:46
  7. Android开发插件 Eclipse ADT安装

    Eclipse ADT 是 Eclipse 平台下用来开发 Android 应用程序的插件。 在线安装地址:https://dl-ssl.google.com/android/eclipse/...

    2024/5/8 22:54:05
  8. JavaScript设计模式-01-原型模式

    Javascript 设计模式 - 01 - 原型模式简介原型模式实际上也是一种继承,可以让多个对象分享同一个原型对象的属性和方法,这种继承的实现是不需要创建的,而是将原型对象分享给那些继承的对象,原型模式是一种用来创建对象的模式在以类为中心的语言中,要创建一个对象首先要指定…...

    2024/4/20 21:14:51
  9. Eclipse ADT配置CVS

    最近使用Eclipse ADT(Android Developer Tools)开发环境发现,并没有像Eclipse那样自带CVS,那么要如何配置呢?1. 菜单栏 Help -> Install New software。2. 在Work with那里选择"Juno - http://download.eclipse.org/releases/juno"。3. 选择下面列表的“Coll…...

    2024/4/20 21:14:50
  10. 开源Linux系统成为微软Vista竞争对手

    开源Linux系统成为微软Vista竞争对手关键词: 开源Linux系统成为微软Vi Ubuntu 6.10和OpenSUSE 10.2正在成为微软Vista竞争对手(在某些方面)  来自Canonical公司的Edgy Eft为我们提供了非常好的管理工具和非常多的应用程…...

    2024/5/8 16:36:18
  11. C#界面美化之美化单个控件

    潘鹏在CSDN上原创,如其他网站转载请注意排版和写明出处: 使用的是DotNetBar控件 使用方法参照上一篇美化的文章 区别在于: 1.需要安装破解补丁,外国人的东东 2.不同于上一个控件直接换肤,是像工具箱一样多了一个新的工具箱,我截图就更明白了...

    2024/5/9 5:39:13
  12. Eclipse ADT 新增加的 String Translation(ADT Translation Manager Plugin)功能

    Eclipse ADT 新增加的 String Translation(ADT Translation Manager Plugin)功能 最新版的ADT界面多了“Upload String for translation”和“Download Translated String”选项,其实是Google新加的ADT Translation Manager Plugin功能,具体功能是让你把XML文件里的String内…...

    2024/5/8 14:17:31
  13. javascript设计模式【上】

    参考《javascript设计模式》[美]Addy Osmani一书,下面介绍使用javascript经常会使用的主要设计模式。本博文是使用ES5语法的【上】篇,还有一个【下】篇,ES6语法会单独写个博客。 主要是以下几个设计模式:Constructor Pattern 构造模式 Module Pattern 模块化模式 Revealin…...

    2024/4/20 23:44:40
  14. c#分页控件

    该Winform分页控件很早就开发了,一直在我所有的共享软件项目中使用,并得到很多Winform开发者的热爱和支持,其中逐步完善了一些功能及优化。从较早时期的随笔《WinForm界面开发之“分页控件”》中的评论可见该控件是大家在Winform开发中常用到的一个控件。本文主要介绍该分页…...

    2024/5/9 0:48:38
  15. 解决Eclipse ADT v22.0.1 升级不了v23.0.0,但又卸载不了的坑人问题

    近期由于要切换到Android Studio 开发环境,而原来Eclipse Android项目又想移植过来(我的Eclipse 是adt-bundle-windows-x86_64-20130522.zip,它的ADT是v22.0.1),而又想保持原来的目录结构(兼容模式),所以需要 在Eclipse Export 生成build.gradle文件,生成此文件需要ADT v22…...

    2024/5/9 4:19:17
  16. EMC电磁兼容知识框架

    EMC电磁兼容知识框架名词解释EMC = EMI + EMSEMC (Electro Magnetic Compatibility )电磁兼容EMI(Electro Magnetic Interference) 电磁干扰(对外辐射)EMS(Electro Magnetic Susceptibility) 电磁敏感度(抗干扰)按不用应用领域划分EMC的测试标准及测试项目LED和照明(LED &…...

    2024/5/8 21:20:34
  17. JAVASCRIPT设计模式pdf

    链接:https://pan.baidu.com/s/1b07WjaHDm0VhwL6Ub-w_Eg 密码:goms本书为完整版,以下为内容截图:...

    2024/5/9 4:43:04
  18. Eclipse ADT, Maven和SVN插件…

    Eclipse ADT和SVN、Marketplace、Maven插件安装地址 1、adt地址http://dl-ssl.google.com/android/eclipse 2、svn地址http://subclipse.tigris.org/update_1.6.xhttp://subclipse.tigris.org/update_1.10.x3、市场插件安装:android开发的eclipse基本上没安装这个插件,能字自…...

    2024/4/20 23:44:35
  19. JavaScript设计模式(一)单例模式、组合模式和外观模式

    作者 JosephZimmermanhttp://www.joezimjs.com 创建日期19 March 2012本文是介绍 JavaScript 采用的常见设计模式系列文章的首篇文章。 设计模式是一些可靠的编程方式,有助于保证您的代码更加易于维护、扩展及分离,所有设计模式在创建大型 JavaScript 应用程序(特别是在大群…...

    2024/4/20 23:44:34
  20. C#VS2017添加ReportViewer控件

    VS2017中没有ReportViewer控件,这个控件用来实现在项目中显示和打印关系数据库中的表比较容易,特别是想要打印的时候,这个比用DataGridView和PrintDocument要简单一些。所以我去网上查,查了很多,最终成功添加了此控件。下面是对实验证明可行的方法的总结。1.要有Microsoft…...

    2024/4/20 23:44:33

最新文章

  1. sed小实践2(随手记)

    删除/etc/passwd的第一个字符 #本质是利用sg替换,将第一个字符替换成空 sed s|^.||g /etc/passwd删除/etc/passwd的第二个字符 sed -r s|^(.).(.*$)|\1\2|g /etc/passwd sed -r s|^(.).|\1|g /etc/passwd删除/etc/passwd的最后一个字符 sed s|.$||g /etc/passwd删…...

    2024/5/9 5:50:37
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. GIS与数字孪生共舞,打造未来智慧场景

    作为一名数字孪生资深用户,近日我深刻理解到GIS(地理信息系统)在构建数字孪生体中的关键作用。 数字孪生技术旨在构建现实世界的虚拟镜像,而GIS则是这一镜像中不可或缺的空间维度框架和导航灯塔。数字孪生的核心是通过数字化方式…...

    2024/5/8 22:48:05
  4. 动态规划刷题(算法竞赛、蓝桥杯)--饥饿的奶牛(线性DP)

    1、题目链接&#xff1a;饥饿的奶牛 - 洛谷 #include <bits/stdc.h> using namespace std; const int N3000010; vector<int> a[N];//可变数组vector存区间 int n,mx,f[N]; int main(){scanf("%d",&n);for(int i1;i<n;i){int x,y;scanf("%…...

    2024/5/7 17:16:20
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在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