前言

人无常师,水无常形。兵无常势,文无定法。 --《鬼谷子》

写在设计模式总结之前。任何东西,都在在变化的。开发也不例外。所谓设计模式,就是前辈在开发过程中总结出来的一系列需要学习的地方。但是文无定法,开发中可以使用这样的设计模式,也可以不使用。关键在于灵活运用,以及具体问题,具体分析。最终的目的就是完成开发任务,实现项目的正常上线,不出问题。

附: 文中所有的样例都可以在:https://github.com/SeanYanxml/arsenal/tree/master/arsenal-java/arsenal-design 项目内找到。


六大铁则

  • 单一指责原则(single responsibility principle, SRP)
There should never be more than one reason for a class to change.一个类的更改原因常常不只一个。
  • 里氏替换原则(Liskov Substitution Principle, LSP)
If for each object o1 of type S, there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substitued for o2 then S is a subtype of T.
(如果对于每一个S的对象o1, 都有类型为T的类型o2, 使得以T定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型S是T的子类型。)
  • 依赖倒置原则(Dependence Inversion Pinciple, DIP)
High level modules should not depend upon low modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.高层模块不应该依赖底层模块,两者都应该依赖其抽象;
抽象不应该依赖细节;
细节应该依赖抽象;
  • 接口隔离原则(Interface Segregation Principle, ISP)
Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该依赖它不需要的接口)
The dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上。)
  • 迪米特法则(Law of Demeter, LoD) 最少知识原则(Least Knowledge Principle, LKP)
Only talk to your immediate friends.(只与直接的朋友通信。)
  • 开闭原则(Open Closed Principle)
Software entities like classes,modules and functions should be open for extension but closed for modification.(一个软件实体如类、模块和函数应该对扩展开发,对修改关闭。)

单一职责原则(Simple Responsibility Principle - SRP)

There should never be more than one reason for a class to change.
(类更改的原因不应该超过一个)。

  • 单一职责 Case 1 (用户管理-职责细化)

UserInfo类图1

UserInfo类图

  • 单一职责 Case 2 (通话管理-职责细化)

Phone类图(初始)

Phone类图(变化)

优点:1.复杂度低,容易理解。2. 便于维护,变更的风险低。

缺点:1.有时划分太细,导致维护花费过大。

But it is sometimes hard to say. 分割过大容易造成功能分割不清,分割过细容易造成维护困难。通常需要根据开发的人员情况、项目规模、开发成本(时间/人员)等视情况而定。

个人理解:本文例举的例子其实是关于一个类的细节的划分,这通常根据开发的规模,项目的预算等决定的。把握划分的度其实非常的重要,这也是我们在开发过程中最难以把握的部分。作为一个架构师,需要根据多方面的决定进行决策。


里氏替换原则(Liskov Substitution Principle - LSP)

Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.
所有引用基类的地方必须能透明地使用其子类的对象。

父类能够使用的地方,子类必然可以替换。子类可以使用的地方,父类不一定可以替换。

里氏替换原则主要可以归纳为如下四点。前面2点主要讲的是继承的相关特性(即子类完全具有父类的特性,子类还可以有自己的特性),后面2点主要讲解在开发中需要注意的参数设置的问题。

  • 子类必须完全实现父亲类的方法

  • 子类可以有自己的个性

  • 覆盖或实现父类的方法时输入参数可以被放大

  • 覆写或实现父类方法时输出结果可以被缩小

  • 子类必须完全实现父类的方法

Gun类图(初始)

## AbstractGun
public void killEnemy(){gun.shoot();//gun为AbstractGun类型
}## Client
public class client{public static void main(String []args){Soldier soldier = new Soldier;soldier.setGun(new Rifile());soldier.killEnemy();}
}

在类中调用其它类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。

变种-玩具枪类
变种-玩具枪类

  1. 通过instanceof进行判断,但是维护性差。

  2. ToyGun脱离继承关系,建立独立的父类,为了代码的复用,可以与AbstractGun建立关联委托关系。

注:如果子类不能完整的实现父类的方法,或者父类的某些方法在子类中已经发生"畸变",则建议断开父子继承关系,采用依赖、聚合、组合等关系代替继承。

  • 子类可以有自己的个性

AUG

# 正确
public class Client{public static void main(String []args){Snipper snipper = new Snipper();snipper.setGun(new AUG());snipper.killEnemy();}
}# 错误
public class Client{public static void main(String []args){Snipper snipper = new Snipper();snipper.setGun( (AUG) new Rifle());snipper.killEnemy();}
}java.class.ClassCastException异常,父类转换成子类异常。

注意: 子类自己的个性,会导致有子类的地方不能出现父类。继而造成在某些类的使用时,只能依赖子类,而不是父类。

  • 覆盖父类方法时输入参数可以被放大(重载)

子类中方法的前置条件必须与超类中被覆写的方法的前置条件相同或者更宽松。

Father-Son类图(初始)

#调用public class Client{// 调用父类doSomething方法public static void invoker1(){Father f = new Father();HashMap map = new HashMap();f.doSomething(map);}// 调用父类doSomething方法public static void invoker2(){Son s = new Son();HashMap map = new HashMap();s.doSomething(map);}}

Father-Son类图(变化)

#调用public class Client{// 调用父类doSomething方法public static void invoker1(){Father f = new Father();HashMap map = new HashMap();f.doSomething(map);}// 调用子类doSomething方法public static void invoker2(){Son s = new Son();HashMap map = new HashMap();s.doSomething(map);}}

这里主要注意子类中,覆写(Override)和重载(Overload)的区别。我们在日常使用过程中,经常是父类和子类的输入参数一样(即覆写),常常没有意识到这类问题的存在。这里主要表明的是,在重载父类方法时一定要注意参数的变化。因为父类通常是抽象的,子类是具体的。我们不能在调用父类方法时,在子类中进行抽象化。导致逻辑的混乱。

如果一直使用覆写,是不会出现如下的问题的。

  • 覆写或实现父类的方法时输出结果可以被缩小
class Father{
public Object doSomething(...)
}class Son extends Father{
public String doSomething(...)
}

继承的优缺点主要如下所示:

优点:1.代码共享,减少工作量。2. 提高代码的重用性。3. 提高代码的扩展性和开放性。

缺点:1.继承是具有侵入性的。子类必须具有和父类相同的方法和成员。2. 降低代码的灵活性。子类必须具有和父类相同的方法和成员。3. 增加和耦合。修改父类时要考虑子类的变化和修改。

个人理解:里氏替换原则通常讲的是继承,以及继承过程中需要注意的事项。主要讲解的是替换这一操作的正确性。它和依赖倒置原则讲的是开发中继承的两个方面。对于里氏替换原则来说,只要了解父类存在的地方都可以使用子类。这个原则即可。

另外,在开发过程中通常都希望,使用父类,进而通过重写父类方法进行控制和使用。但是一旦子类中具有特性,使用子类独有方法时有时就无法通过父类进行调用了。

  1. 开发过程通常不需要子类的特性。
    2.父类中进行冗余创建对于其它子类无用的接口和方法。
    3.在子类一定具有特性时造成无法收场的情况下,违反里氏替换原则,这也是无法避免的事情。

依赖倒置原则(Dependence Inversion Principle -DIP)

High level modules should not depend upon low modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

高层模块不应该依赖底层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象;

  1. 模块间依赖通过抽象产生,实现类之间不发生直接的依赖关系。其依赖关系时通过换接口或抽象类产生;
  2. 接口或抽象类不依赖于实现类;
  3. 实现类依赖于抽象类或接口。

面向接口编程,OOD(Object-Oriented Design)面向对象设计的核心之一。

  • 面向实体

驾驶汽车

  • 面向接口

驾驶汽车2

  • 依赖的几种写法

上文中的driver(ICar car)变表明了IDriver对于ICar的依赖关系。主要的依赖的写法主要包括三种,下面以代码的形式表现出来。(构造参数传递对象/Setter方法传递对象/接口调用时传递)

# 1.构造参数传递对象
public interface IDriver{public void drive();
}public class Driver implements IDriver {private ICar car;public Driver(){car=null;}public Driver(ICar car){this.car=car;}public void drive(){if(null != car){car.dirve();}}
}# 2. Setter依赖注入
public interface IDriver{public void setCar(ICar car);public void drive();
}public class Driver implements IDriver {private ICar car;public void setCar(ICar car){this.car=car;}public void drive(){if(null != car){car.dirve();}}
}# 3. 接口声明依赖对象
public interface IDriver{public void drive(ICar car);
}public class Driver implements IDriver {public void drive(ICar car){if(null != car){car.dirve();}}
}

依赖倒置原则实现的原则:

  1. 每个类尽量都有接口或接口类,或者抽象类和接口两者都具备;
  2. 变量的表面类型尽量时接口或抽象类;
  3. 任何类都不应该从具体类派生;
  4. 尽量不要覆写基类的方法;
  5. 结合里氏替换原则使用。

接口负责public属性和方法,并且声明和其它对象的依赖关系,抽象类负责公共构造部分的实现,实现类准确实现业务逻辑,同时在适当的时候对父类进行细化。

"倒置"的含义?
“正置”含义在于面向实体。我开车,我会选择一辆实体的车。而倒置在于,我会选择一辆抽象的车,车的类型可以更换。我依赖的在于车的抽象,而不是实体车。

个人理解: 依赖倒置原则,说的在于开发的主体思想。面向接口,面向抽象,而不是面向具体。这样可以增加很多的变化,开发更加灵活和多样化。主要是利用面向对象中继承和多态的个性。

就好像我们常说的物质决定意识,意识反作用于物质。领导人讲话时,都将东西说的更加的抽象,这样可以适用于各行各业,而免去了一一列举的烦恼。


接口隔离原则(Interface Segregation Principle - ISP)

Clients should not be forced to depend upon interfaces that they don’t use.(客户端不应该依赖它不需要的接口)

The dependency of one class to another one should depend on the smallest possible interface.(类间的依赖关系应该建立在最小的接口上。)

这里的接口在Java中既包括实体接口(实体类Class),也包括虚拟接口(接口interface)。

总结为:建立单一接口,不要建立臃肿庞大的接口。再通俗一点,接口尽量细化,同时接口内的方法尽可能的少。

与单一职责的区别?

单一职责要求的是类和接口职责单一,注重的是职责,这是业务的划分;接口隔离原则要求的是接口的方法尽可能的少。比如:一个接口的职责包括10种方法,把10种方法放在一个接口内,这对于单一职责原则来说是可以的,但是对于接口隔离原则则不然。接口隔离原则要求接口简单,不要臃肿的系统。

  • 美女类的类图(初始)

美女类的类图(初始)

  • 美女类的类图(变化 形体美/气质美)

美女类定义(变化)

  • 注: 从表现来看,将形体美和内在美的评价区分开来。但是在某些设计力度较粗时,本做法多次一举。

保证接口的纯洁性:

  1. 接口尽量小,但是不要过小。(比如CURD分成4个子接口,多次一举。根据经验、项目规模和开发需要进行划分即可。)
  2. 接口要高内聚。高内聚就是提升接口、类、模块的处理能力,减少对外的交互。(接口是对外的承诺,承诺越少,变更风险越小,对开发越有利。)
  3. 定制服务。(当某些需要时,需要定制服务。比如淘宝网站的物品查询服务。查询使用次数频繁,牵连广泛,可以定制服务。)
  4. 接口设计有限度。(“度”来定量。)

实践要求:

  1. 一个接口只服务于一个子模块或业务逻辑;
  2. 通过业务逻辑压缩接口中的public方法,接口时常回顾和维护。
  3. 已经被污染的接口,尽量去修改,若变更风险较大,则采用适配器模式进行转化处理。
  4. 了解环境,拒绝盲从。了解环境、深入业务逻辑。

个人理解: 接口隔离原则和单一职责原则非常相似。但是两者的角度不同,单一职责原则是从实体在使用的角度进行划分,而接口隔离原则则是从开发接口管理的角度进行划分。具体哪一种优先,个人决定单一职责原则优先,但是还是那句老话根据实际的场景具体把握拆分的度


迪米特法则(Law of Demeter, LoD) 最少知识原则(Least Knowledge Principle, LKP)

Only talk to your immediate friends.(只与直接的朋友通信。)

一个对象应该对其它对象有最小的了解。(即:一个类应该对自己耦合或调用的类知道的最少。)

  • 只和朋友交流 & 朋友间也是有距离的

  • 是自己的就是自己的:

  • 如果一个方法放在本类中,既不增加类间关系,也不对本类产生负面影响,那就放置在本类中。

  • 谨慎使用Serializable

  • 只和朋友交流

清点人数(初始)

# class Teacher
public class Teacher{public void commond(GroupLeader groupLeader){List<Girl> girlList = new ArrayList();for(int i=0;i<10;i++){girlList.add(new Girl())}groupLeader.count(girlList);} 
}# class GroupLeader
public class GroupLeader{public void count(List<Girl> listGirls){System.out.println(listGirls.size());}
}

由上述类图可以知道,老师类可以完全将清点任务委托给GroupLeader类,可以避免与Girl类之间的耦合。这有点像后面将要说的代理模式?``命令模式?

清点人数(变化)

# class Teacher
public class Teacher{public void commond(GroupLeader groupLeader){groupLeader.count();} 
}# class GroupLeader
public class GroupLeader{private List<Girl> listGirls;public GroupLeader(List<Girl> listGirls){this.listGirls = listGirls;}public void count(){System.out.println(listGirls.size());}
}

朋友类:出现成员变量、方法的输入输出参数中的类成为朋友类,而出现在方法体内部的类不属于朋友类。

一个类只和朋友类交流,不和陌生类交流。类与类之间的关系是建立在类间的,而不是方法间,因此,一个方法尽量不要引用类中不存在的对象。(JDK API除外)

  • 朋友间也是有距离的

安装软件

#尽量减少类间距离# 错误
class InstallSoftware{public void intallWizard(Wizard wizard){wizard.first();wizard.second();wizard.third();}
}class Wizard{public void first(){}public void second(){}public void third(){}
}# 正确
class InstallSoftware{public void intallWizard(Wizard wizard){wizard.intallWizard();}
}class Wizard{private void first(){}private void second(){}private void third(){}public void intallWizard(){first();second();third();}
}

一个类公开的public属性的方法越多,修改涉及的面也越大,变更会引起的风险也越大。因此,为保持朋友间的距离,设计时需要反复衡量。尽量不要对外公布过多的public方法和非静态public变量,尽量内敛,多使用private、package-private、protected等访问权限。

个人理解: 与单一职责原则接口隔离原则不同讲述的类内关系不同。迪米特法则主要讲解的是类间关系,并且从类中方法实现的角度给出:"少使用类中不存在的类"的建议。主要的目标还是,降低耦合,降低风险。高内聚,低耦合的口号。

本章的主要目的主要是2个:

  1. 方法应该放置在哪个类中合适;
  2. 使用什么样的权限合适(private/public/protected/private-package)。

开闭原则(Open Closed Principle -OCP)

Software entities like classes, modules and functions should be open for extension but closed for modifications. (一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。)

软件实体:项目或软件产品中按照一定的逻辑规则划分的模块;抽象和类;方法。

“拥抱变化”。开闭原则告诉我们尽量通过扩展软件实体的行为来实现变化,而不是修改已有的代码来完成变化。

  • 书店售书类图(初始)

书店售书

  • 书店售书类图(变化-打折)

书店展开打折购书活动

  1. 修改接口IBook-造成冗余
  2. 修改实现类NovelBook-与原有逻辑冲突
  3. 通过扩展实现变化

书店售书类图(变化-打折)

主要的变化类型:

  1. 逻辑变化: a+b -> a-b
  2. 子模块变化,例子如上所示
  3. 可见视图的变化,JSP、Html页面等

个人感悟: 之前在开发过程经常都是直接改原来类和方法。1是当初的需求不太明确,老是修改 2.是项目尚未上线。所以,可以支持这样的修改方法。但是,从上线后的长远考虑,应该慎重修改。修改过多了,可以定时进行重构。

  • 书店售书类图(变化-打折)

书店售书类图(变化-新类别)

为什么要实现开闭原则?

  1. 开闭原则对测试的影响;
  2. 开闭原则可以提高复用性;
  3. 开闭原则可以提高可维护性;
  4. 面向对象开发的要求。

如何实现开闭原则?

  1. 抽象约束(依赖倒置原则)
  2. 元数据控制模块行为(例如:Spring注入)
  3. 制定项目章程
  4. 封装变化

抽象约束包括: 1.通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的非public方法(有时难以实现?);2.参数类型、引用对象尽量使用接口或者抽象类(以前没有注意到,直接使用PO或BO?);3. 抽象层尽量保持稳定。


总结

六大设计原则和23中设计模式

  • 开闭原则(Open Closed Principle - OCP)
  • 单一职责原则(Simple Responsibility Principle - SRP)
  • 接口隔离原则(Interface Seperate Principle - ISP)
  • 迪米特法则(Law of Demester)
  • 里氏替换原则(Liskv Subsitution Principle - LSP)
  • 依赖倒置原则(Dependence Inversion Principle - DIP)

六种原则,用于应对开发中的"变化"。

  1. 开闭原则为首,是主要目标。
  2. 单一职责原则接口隔离原则从业务和开发两个方面讲述类和接口的划分;
  3. 迪米特法则从类间关系的角度讲述接口中方法的划分和对象间的调用。
  4. 里氏替换原则依赖倒置原则主要讲解开发中如何使用继承和多态的特性。

开闭原则是一个终极目标,任何人包括大师级人物都无法百分百做到,但朝这个方向努力,可以非常显著地改善一个系统的架构,做到真正地拥抱变化。

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

相关文章

  1. wepy左滑动删除效果

    文档wepy快速指南 小程序框架wepy开发文档 wepy开源 wepy官方文档 微信小程序wepy框架资源汇总1:使用微信小程序框架wepy - 滑动删除插件 用命令安装npm install wepy-swipe-delete --save 或者cnpm install wepy-swipe-delete --save2:在WebStorm里面打开初始化生成的项目 编写…...

    2024/4/16 21:31:04
  2. Apache&WAMP 解决80端口被占用问题

    Wampserver 安装后一直显示黄色 并不变成绿色 更改80端口即可解决问题 在计算机管理-》服务中查看若程序正常启动 则wampapache和wampmysqld(二者分别是Apache和Mysql服务)显示正在运行 否则 其中一个未能正常启动 点击托盘中的wampserver图标 依次点击菜单中的A…...

    2024/4/16 21:31:16
  3. 李清照曹雪芹“躺枪”,古风歌真的都是词藻堆砌吗?

    中新网客户端北京1月25日电(任思雨)“昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。”坐在窗边感伤海棠花的李清照,大概不会想到自己写下的一首小令能在千年后引发人们的热议,原因还是“词藻堆砌”。来源:微博截图曹雪芹、李白也被评论…...

    2024/4/16 21:29:46
  4. 解决"电脑WiFi已连接,可是无法上网"办法

    目录A.出现问题原因B.解决方法C.遇到的问题D.无效方法A.出现问题原因 某些优化软件或者流氓插件会修改本地连接设置 个人估计与pycharm有关,多次使用pycharm后出现该问题B.解决方法以管理员身份打开cmd 输入netsh winsock reset后运行 重启即可netsh winsock reset这个命令作用…...

    2024/4/18 1:20:06
  5. 阿里云80端口被占用怎么办?

    http://www.cnblogs.com/toosuo/p/3571114.html阿里云个傻叉,把80端口占用了,使用sudo fuser -k 80/tcp命令停止阿里云的占用进程...

    2024/4/16 21:31:10
  6. 唯美的古风句子

    1、用我三生烟火,换你一世迷离。 2、 我自是年少,韶华倾负。 3、 长街长,烟花繁,你挑灯回看, 短亭短,红尘辗,我把萧再叹。 4、 终是谁使弦断,花落肩头,恍惚迷离 5、 多少红颜悴,多少相思碎,唯留血染墨香哭乱冢。 6、 苍茫大地一剑尽挽破,何处繁华笙歌落。斜…...

    2024/4/16 21:28:46
  7. wepy repeat标签循环渲染bug解决

    记录一个最近使用wepy开发微信小程序的使用repeat循环渲染的坑点wepy中使用了模板的概念,意味着同一个组件多次使用会共享实例,也就是说repeat渲染出来的多个子组件会共享同一份状态,就会造成了下面所说的情况//父组件<repeat for="{{subjectFinal.finish}}" k…...

    2024/4/16 21:28:52
  8. Hibernate继承关系的实体设计的两种方法

    1 对于父类和子类分别对应数据库中的一个表,父类表中的字段是公共的属性,子类表中是特殊的属性。 数据库表: 父表: titem 字段:id (id) name (名称) manufacturer (产地) 子表1:ibook 字段:id (id) pagecount(页数)子表2:idvd 字段:id (id) regioncode (编号…...

    2024/4/16 21:28:58
  9. python小玩具(恶俗古风生成器)

    直接粘代码#coding=utf-8 from random import choice from time import sleeptwo_chars_words = "朱砂 天下 杀伐 人家 韶华 风华 繁华 血染 墨染 白衣 素衣 嫁衣 倾城 孤城 空城 旧城 旧人 伊人 心疼 春风 古琴 无情 迷离 奈何 断弦 焚尽 散乱 陌路 乱世 笑靥 浅笑 明眸 …...

    2024/3/28 20:03:43
  10. 使用AIDL实现Android的跨进程通信

    欢迎Follow我的GitHub, 关注我的CSDN.本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.htmlAIDL(Android Interface Definition Language), 即Android接口定义语言. 在Android中, AIDL是跨进程通信…...

    2024/4/19 4:42:39
  11. VMware虚拟机启动后出现黑屏

    VMware虚拟机启动后出现黑屏 以管理员身份运行cmd控制台程序,输入命令netsh winsock reset,作用是重置winsock网络规范,然后重启系统,在打开VMware就可以了。...

    2024/4/16 21:30:46
  12. wepy遇到的错误

    文章目录1.编译成功但达不到效果(1)页面与组件间传值:props属性传值(2)异步函数修改页面数据无效2.开发者工具编译报错(1)ReferenceError: regeneratorRuntime is not defined3.wepy命令行工具报错1.编译成功但达不到效果 (1)页面与组件间传值:props属性传值 错误原因…...

    2024/4/16 21:29:46
  13. Window中80端口被占用,解决办法

    作为程序员,80端口是常常用到的,但是有时自己分明没有起任何测试应用服务器,80端口却被占用,发生这样的情况大体有以下几种可能: 1、机器上安装了IIS服务,并且IIS服务启动,该服务默认是使用80端口的 2、机器装了SQL server,SQL server中的SQL Server Reporting Service…...

    2024/4/16 21:29:58
  14. 无线网卡的安装

    madwifi-ng需要进行内核编译。需要yum list kernel,列出当前的内核相关包,然后下载kernel与kernel-devel,就可以重新编译内核于相关包了。 下面的文章属于转载。偶的ibook G4支持无线局域网 IEEE 802.11b/g,但是另外要买无线路由器才能体验无线移动的乐趣。最便宜的也要300多…...

    2024/4/16 13:18:21
  15. win2003系统80端口被占用

    今天启动Apache的时候发现无法启动~80端口被占用。检查进程发现是system进程id=4给占用了~这个是系统进程啊。检查服务,看看IIS~没发现问题。检查了半天,终于发现原来是SQL server 2008的报表服务在捣乱,结束-禁用~启动Apache,搞定了~~~贴上犯人的照片,以后大家小心…...

    2024/4/16 21:30:16
  16. 连接正常但上不了网的终极解决办法

    如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录借以恢复网络。解决步骤:1.单击"开始",运行中输入cmd。 2.然后输入命令 netsh winsock reset。 3.重启计算机。 如果同学们遇到相似的问题实在…...

    2024/4/16 21:30:04
  17. 【娱乐向】Java古风玛丽苏诗句生成器

    首先,把常用的古风玛丽苏词汇存到数组...public static final String [] TWO_CHARS_WORDS = {"朱砂", "天下", "杀伐", "人家","韶华","风华","繁华", "血染", "墨染", "白衣…...

    2024/4/16 21:30:10
  18. wepy-cli已安装 ,运行时报错“wepy-cli”不是内部或者外部命令

    上班时运行项目,突然报错“wepy-cli”不是内部或者外部命令。昨天用还是没问题的,what!我好脾气在安装一遍,然后检查环境配置。安装后任然报相同的错误 在此感谢一篇文章 https://www.cnblogs.com/yk95/p/9710634.html 先查看了C:\Users\Administrator\AppData\Roaming\npm\…...

    2024/4/16 21:29:40
  19. iOS开发 - MAC系统快捷键

    MAC系统快捷键一览表 系统启动系统启动在启动时按下 X: 强制使用 Mac OS X 启动电脑 在启动时按下 Option-Command-Shift-Delete: 不使用主要启动硬盘,并寻找使用外接磁盘与 CD 在启动时按下 C: 由具有系统文件夹的 CD 光盘启动 在启动时按下 N: 试图由兼容的网络服务器 (N…...

    2024/4/16 21:30:46
  20. python版恶俗古风自动生成器.py

    python版恶俗古风自动生成器.py """ python版恶俗古风自动生成器.py 模仿自: http://www.jianshu.com/p/f893291674ca 2016年4月4日 18:37:31 codegay """from random import sample import time import oswords="""朱砂 天下 杀…...

    2024/4/18 18:59:14

最新文章

  1. 设计模式之工厂模式(python3)

    一、简单工厂模式 什么是简单工厂模式&#xff1f; 专门定义一个类来负责创建其他类的实例&#xff0c;根据参数的不同创建不同类的实例&#xff0c;被创建的实例通常具有共同的父类&#xff0c;这个模式叫简单工厂模式&#xff08;Simple Factory Pattern&#xff09;。 &qu…...

    2024/4/19 7:46:48
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Vue3学习笔记+报错记录

    文章目录 1.创建Vue3.0工程1.1使用vue-cli创建1.2 使用vite创建工程1.3.分析Vue3工程结构 2.常用Composition2.1 拉开序幕的setup2.2 ref函数_处理基本类型2.3 ref函数_处理对象类型2.4 ref函数使用总结 1.创建Vue3.0工程 1.1使用vue-cli创建 查看vue/cli版本&#xff0c;确保…...

    2024/4/16 23:49:52
  4. FastAPI Web框架教程 第1章 快速上手

    1.1 fastapi介绍 简介&#xff1a; FastAPI 是一个高性能&#xff0c;易于学习&#xff0c;高效编码&#xff0c;生产可用的Python Web异步框架 FastAPI 适合来写API&#xff0c;使用 Python 3.6 并基于标准的 Python 类型提示 核心特性&#xff1a; 速度快&#xff1a;可…...

    2024/4/17 9:56:28
  5. 【外汇早评】美通胀数据走低,美元调整

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

    2024/4/18 0:33:31
  6. 【原油贵金属周评】原油多头拥挤,价格调整

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

    2024/4/18 22:36:36
  7. 【外汇周评】靓丽非农不及疲软通胀影响

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

    2024/4/18 9:45:31
  8. 【原油贵金属早评】库存继续增加,油价收跌

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

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

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

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

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

    2024/4/18 3:56:01
  11. 【外汇早评】美欲与伊朗重谈协议

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

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

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

    2024/4/18 3:55:30
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

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

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

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

    2024/4/18 3:55:45
  15. 【外汇早评】美伊僵持,风险情绪继续升温

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

    2024/4/17 21:50:30
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

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

    2024/4/15 13:53:08
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

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

    2024/4/15 9:16:52
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

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

    2024/4/18 9:24:29
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

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

    2024/4/18 3:56:18
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

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

    2024/4/18 3:55:57
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

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

    2024/4/18 3:55:50
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

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

    2024/4/15 23:28:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

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

    2024/4/18 3:56:20
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

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

    2024/4/18 3:56:11
  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