1、单例模式

单例模式的八种方式:饿汉式(静态常量)、饿汉式(静态代码块)、懒汉式(线程不安全)、懒汉式(线程安全,同步方法)、懒汉式(线程不安全,同步代码块)、双重检查、静态内部类、枚举

1):饿汉式(静态常量)

​ 构造器私有化,类的内部创建对象,向外暴露一个静态的公共方法

package com.singleModel.test1;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}
class Singleton{//1、构造器私有化private Singleton() {}//2、本类北部创建实例对象private final static Singleton instance = new Singleton();//3、提供一个工友的静态方法,返回实例对象public static Singleton getInstance(){return instance;}
}

优点:这种写法比较简单,就是在类装载的时候就完成实例化,避免了线程同步问题

缺点:(1)在类装载的时候就完成实例化,没有达到lazy loading的效果,如果从始至终从未使用过这个实例,则会造成内存的浪费。

​ (2)这种方式基于classLoader机制避免了多线程的同步问题,不过,instance在类装载的时候就实例化,在单例模式中大多数都是调用instance方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance就没有达到lazy loading的效果。

结论:这种单例模式可用,可能造成内存浪费。

2):饿汉式(静态代码块)

package com.singleModel.test02;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}class Singleton{//1、构造器私有化private Singleton() {}//2、本类北部创建实例对象private final static Singleton instance;static {instance  = new Singleton();}//3、提供一个工友的静态方法,返回实例对象public static Singleton getInstance(){return instance;}
}

优缺点说明:

​ 这种方式和上面的方式其实类似,只不过将实例化的过程放在了静态代码块中,也是在类装载的时候,就执行静态代码块中的代码,初始化的实例。优缺点和上面也是一样的。

结论:这种单例模式可用,但是可能造成内存浪费。

3)懒汉式(线程不安全)

package com.singleModel.test03;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}class Singleton{//1、构造器私有化private Singleton() {}//2、本类北部创建实例对象private static Singleton instance;//3、提供一个工友的静态方法,返回实例对象public static Singleton getInstance(){if(instance == null){instance = new Singleton();}return instance;}
}

优缺点说明:

​ 起到了lazy loading的效果,但是只能在单线程下使用,如果在多线程下,一个线程进入了if(singleton == null)判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例,所以在多线程环境下不可使用这种模式。

结论:在实际开发中,不要使用这种方式。

4):懒汉式(线程安全,同步方法)

package com.singleModel.test04;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}class Singleton{//1、构造器私有化private Singleton() {}//2、本类北部创建实例对象private static Singleton instance;//3、提供一个工友的静态方法,返回实例对象public static synchronized Singleton getInstance(){if(instance == null){instance = new Singleton();}return instance;}
}

优缺点分析:

​ 解决了线程不安全的问题,效率太低了,每个线程在想获得类的实例的时候,执行getInstance()方法否要进行同步,而其实这个方法只执行一次实例化代码就够了,后面的相获得该实例,直接return就行了,方法进行同步效率太低。

结论:在实际开发中,不推荐使用这种方式

5)懒汉式(线程不安全,同步代码块)

package com.singleModel.test05;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}class Singleton{//1、构造器私有化private Singleton() {}//2、本类北部创建实例对象private static Singleton instance;//3、提供一个工友的静态方法,返回实例对象public static Singleton getInstance(){if(instance == null){synchronized (Singleton.class){instance = new Singleton();}}return instance;}
}

优缺点说明:

​ 这种方式,本意是想对第四种实现方式的改进,因为前面同步方法效率太低,改为同步产生实例化的代码块,但是这种不同步并不能起到线程同步的作用,跟第三种实现方式遇到的情形一样,假如一个线程进入了if(singleton == null)判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生过个实例。

结论:在实际开发中,不能使用这种方式。

6)双重检查

package com.singleModel.test06;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}
class Singleton{//1、构造器私有化private Singleton() { }//2、本类北部创建实例对象private static volatile Singleton instance;//3、提供一个工友的静态方法,返回实例对象public static Singleton getInstance(){if(instance == null){synchronized (Singleton.class){if(instance == null){instance = new Singleton();}}}return instance;}
}

优缺点说明:

​ Double-Check概念是多线程开发中常使用到的,如代码中所示,我们进行了两次if(singleton == null)检查,这样就可以保证线程安全了

​ 这样,实例化代码只用执行一次,后面再次访问时,判断if(singleton == null),直接return实例化对象,也避免了反复进行方法同步,线程安全,延迟加载,效率较高

结论:在实际开发中,推荐使用这种单例设计模式。

7):静态内部类

package com.singleModel.test07;public class test01 {public static void main(String[] args) {Singleton instance02 = Singleton.getInstance();Singleton instance01 = Singleton.getInstance();System.out.println(instance01 == instance02);System.out.println(instance01.hashCode());System.out.println(instance02.hashCode());}
}class Singleton{//1、构造器私有化private Singleton() { }//2、本类北部创建实例对象private static volatile Singleton instance;//3.在Singleton装载的时候,静态内部类不会被装载,从而实现懒加载private static class SingletonInstance{private static final Singleton INSTANCE = new Singleton();}//JVM在装载类的时候  是线程安全的public static Singleton getInstance(){return SingletonInstance.INSTANCE;}
}

​ 这种方式采用了类装载的机制来保证初始化实例时只有一个线程,静态内部类方式在Singleton被装载是并不会立即实例化,而是在需要实例化时,调用getInstance方法,才会装载SinglrtonInstance类,从而完成Singleton的实例化,类的静态属性只会在第一次加载类的时候初始化,所以在这里,JVM帮助我们保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。

优点:避免了线程不安全,利用静态内部类特点实现延迟加载,效率高。

结论:推荐使用

8)枚举

package com.singleModel.test08;public class Test08 {public static void main(String[] args) {Singleton instance = Singleton.instance;Singleton instance1 = Singleton.instance;System.out.println(instance == instance1);System.out.println(instance.hashCode());System.out.println(instance1.hashCode());}
}
enum Singleton{instance;public void method(){System.out.println("hello~");}
}

​ 借助JDK1.5中添加的枚举来实现单例对象,不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象,这种方式是Effective Java作者Josh Bloch提倡的方式。

结论:推荐使用

单例模式注意事项和细节说明:

​ 单例模式保证了系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能,当想实例化一个单例类的时候,必须要记住使用响应的获取对象的方法,而不是使用new

​ 单例模式使用的场景:需要频繁的进行创建和销毁对象,创建对象耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象,工具类对象,频繁访问数据库或者文件的对象(比如数据源,session工厂等)

2、工厂模式

package com.factoryModel;public abstract class Pizza {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}//准备元材料,不同的披萨做法不一样,所以做成抽象方法public abstract void prepare();public void bake(){System.out.println(name + "is bake");}public void cut(){System.out.println(name + "is cut");}public void box(){System.out.println(name + "is box");}
}
package com.factoryModel;
public class CheesePizza extends Pizza {public void prepare() {System.out.println("制作奶酪披萨准备原材料");}
}
package com.factoryModel;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class OrderPizza {public OrderPizza() {Pizza pizza = null;String orderType;do {orderType = getType();if(orderType.equals("cheese")){pizza = new CheesePizza();pizza.setName("cheese");}else if (orderType.equals("greece")){pizza = new GreecePizza();pizza.setName("greece");} else {break;}pizza.prepare();pizza.bake();pizza.cut();pizza.box();}while (true);}private String getType(){BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));System.out.println("input is ");try {String readLine = bufferedReader.readLine();return readLine;} catch (IOException e) {return "";}}
}
package com.factoryModel;public class PizzaStore {public static void main(String[] args) {new OrderPizza();}
}

传统方式的优缺点:

​ 优点:比较好理解,简单易操作

​ 缺点:违反了设计模式的ocp原则。即对扩展开放,对修改关闭,当我们给类新增加功能的时候,尽量不修改代码,或者尽可能减少修改代码。

1)简单工厂模式:

​ 简单工厂模式是属于创建型模式,是工厂模式的一种,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单使用的模式,

​ 简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为。

​ 在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式。

package com.factoryModel.simpleFactory;import com.factoryModel.CheesePizza;
import com.factoryModel.GreecePizza;
import com.factoryModel.Pizza;public class SimpleFactory {//增加orderType,返回对应的Pizza对象public Pizza createPizza(String orderType){Pizza pizza = null;System.out.println("使用简单工厂模式");if(orderType.equals("cheese")){pizza = new CheesePizza();pizza.setName("cheese");}else if (orderType.equals("greece")){pizza = new GreecePizza();pizza.setName("greece");}return pizza;}
}
package com.factoryModel.simpleFactory;import com.factoryModel.Pizza;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class OrderPizza {SimpleFactory simpleFactory;//构造器public OrderPizza(SimpleFactory simpleFactory) {setFactory(simpleFactory);}public void setFactory(SimpleFactory simpleFactory){String orderType = "";this.simpleFactory = simpleFactory;do {orderType = getType();Pizza pizza = this.simpleFactory.createPizza(orderType);if( pizza != null){pizza.prepare();pizza.bake();pizza.cut();pizza.box();}else{System.out.println("订购失败");break;}}while (true);}private String getType(){BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));System.out.println("input is ");try {String readLine = bufferedReader.readLine();return readLine;} catch (IOException e) {return "";}}
}
package com.factoryModel.simpleFactory;public class PizzaStore {public static void main(String[] args) {new OrderPizza(new SimpleFactory());}
}
  1. 工厂方法模式

​ 工厂方法模式定义了一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1YlPNru-1595929884627)(D:\大数据\设计模式\picture\方法工厂模式.png)]

package com.factoryModel.methodFactory;public abstract class Pizza {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}//准备元材料,不同的披萨做法不一样,所以做成抽象方法public abstract void prepare();public void bake(){System.out.println(name + "is bake");}public void cut(){System.out.println(name + "is cut");}public void box(){System.out.println(name + "is box");}
}
package com.factoryModel.methodFactory;public class BJCheesePizza extends Pizza {public void prepare() {setName("北京奶酪披萨");System.out.println("北京的奶酪准备原材料");}
}
package com.factoryModel.methodFactory;public class BJPepperPizza extends Pizza {public void prepare() {setName("北京胡椒披萨");System.out.println("北京的胡椒准备原材料");}
}
package com.factoryModel.methodFactory;public class LDCheesePizza extends Pizza {public void prepare() {setName("伦敦奶酪披萨");System.out.println("伦敦的奶酪准备原材料");}
}
package com.factoryModel.methodFactory;public class LDPepperPizza extends Pizza {public void prepare() {setName("伦敦胡椒披萨");System.out.println("伦敦的胡椒准备原材料");}
}
package com.factoryModel.methodFactory;public class BJOrderPizza extends OrderPizza{Pizza createPizza(String orderType) {Pizza pizza = null;if(orderType.equals("cheese")){pizza = new BJCheesePizza();}else if(orderType.equals("pepper")){pizza =  new BJPepperPizza();}return pizza;}
}
package com.factoryModel.methodFactory;public class LDOrderPizza extends OrderPizza {Pizza createPizza(String orderType) {Pizza pizza = null;if(orderType.equals("cheese")){pizza = new LDCheesePizza();}else if(orderType.equals("pepper")){pizza = new LDPepperPizza();}return pizza;}
}
package com.factoryModel.methodFactory;public class PizzaStore {public static void main(String[] args) {//new BJOrderPizza();new LDOrderPizza();}
}
  1. 抽象工厂模式

​ 抽象工厂模式定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类。

​ 抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合。从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称进一步的抽象),将工厂抽象成两层,AbsFactory(抽象工厂)和具体实现的工厂子类,程序员可以根据创建对象类型使用对应的工厂子类,这样将单个的简单工厂类变成了工厂簇,更利于代码的的维护和扩展。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-esMS2LEA-1595929884629)(D:\大数据\设计模式\picture\抽象工厂模式.png)]

package com.factoryModel.absFactory.order;import com.factoryModel.absFactory.pizza.Pizza;public interface AbsFactory {public Pizza createPizza(String orderType);
}
package com.factoryModel.absFactory.order;import com.factoryModel.absFactory.pizza.BJCheesePizza;
import com.factoryModel.absFactory.pizza.BJPepperPizza;
import com.factoryModel.absFactory.pizza.Pizza;public class BJFactory implements AbsFactory {public Pizza createPizza(String orderType) {Pizza pizza = null;if(orderType.equals("cheese")){pizza = new BJCheesePizza();}else if(orderType.equals("pepper")){pizza = new BJPepperPizza();}return pizza;}
}
package com.factoryModel.absFactory.order;import com.factoryModel.absFactory.pizza.LDCheesePizza;
import com.factoryModel.absFactory.pizza.LDPepperPizza;
import com.factoryModel.absFactory.pizza.Pizza;public class LDFactory implements AbsFactory {public Pizza createPizza(String orderType) {Pizza pizza = null;if(orderType.equals("cheese")){pizza = new LDCheesePizza();}else if(orderType.equals("pepper")){pizza = new LDPepperPizza();}return pizza;}
}
package com.factoryModel.absFactory.order;import com.factoryModel.absFactory.pizza.Pizza;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class OrderPizza {AbsFactory factory;public OrderPizza(AbsFactory factory) {setFactory(factory);}private void setFactory(AbsFactory factory){Pizza pizza = null;String orderType = "";this.factory = factory;do {orderType = getType();pizza =factory.createPizza(orderType);if(pizza != null){pizza.prepare();pizza.bake();pizza.cut();pizza.box();}else{System.out.println("订购失败");break;}}while (true);}private String getType(){BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));System.out.println("input is ");try {String readLine = bufferedReader.readLine();return readLine;} catch (IOException e) {return "";}}
}
package com.factoryModel.absFactory.order;public class PizzaStore {public static void main(String[] args) {new OrderPizza(new BJFactory());}
}

工厂模式小结:

(1)工厂模式的意义:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦,从而提高项目的扩展和维护性。

(2)三种工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

(3)设计模式的依赖抽象原则

​ 创建对象实例时,不要直接new类,而是把这个new类的动作放在一个工厂的方法中,并返回。有的书上说,变量不要直接持有具体类的引用。

​ 不要让类继承具体类,而是继承抽象类或者是实现interface(接口)

​ 不要覆盖基类中已经实现的方法。

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

相关文章

  1. 初识React(一:环境搭建,项目创建)

    React官网:React中文官网 (https://react.docschina.org/)环境搭建/项目创建:1:安装cnpm,如果有翻墙可以直接使用npm。npm install -g cnpm --registry=https://registry.npm.taobao.org2:全局安装Reactcnpm install -g create-react-app3:创建项目cd至项目目录cre…...

    2024/5/4 23:14:34
  2. Redis(2)数据类型(string、hash、list、set、sorted_set)详解与业务场景实战

    目录前言redis 数据存储格式一、string 类型1、基本介绍2、string 类型数据的基本操作 3、string 类型数据的扩展操作 业务场景1string 作为数值操作 业务场景24、string 类型数据操作的注意事项 业务场景3二、hash 类型1、基本介绍2、hash 类型数据的基本操作3、hash 类型数据…...

    2024/4/15 16:11:45
  3. Shiro实现用户认证和授权

    文章目录1. Shiro认证1. Shiro认证流程源码分析2. 自定义Realm3. md5+salt密码加盐认证2. Shiro授权 1. Shiro认证 1. Shiro认证流程源码分析 主体(subject)需要携带身份信息和凭证信息,shiro在认证时会将这些信息打包成一个令牌,进入到安全管理器中进行认证。public class…...

    2024/4/15 16:11:44
  4. 深入理解Spring MVC思想

    一、前言为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:(1)简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。(2)性能优秀,这是一个最能吸引眼…...

    2024/4/15 16:11:43
  5. Fastjson<=1.2.47反序列化漏洞复现

    0x01简介 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。 FastJson特点如下: (1)能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bea…...

    2024/5/5 7:48:47
  6. 搭建kafka

    搭建kafka 本教程假定您是从头开始的,并且没有现有的Kafka或ZooKeeper数据。 由于Kafka控制台脚本在基于Unix的平台和Windows平台上有所不同,因此在Windows平台上使用bin \ windows \而不是bin /,并将脚本扩展名更改为.bat。 kafka官网 Step 1: Download the code Download …...

    2024/5/4 4:56:34
  7. 电子病历后结构化研究之医疗大数据如何结构化处理助力临床科研:医疗大数据发展现状

    我们是专注于电子病历后结构化研究的人工智能研发团队,可点击个人主页了解详细情况,或博客留言讨论自2013年至今,国家出台了一系列有关健康医疗大数据的政策意见,要求规范和促进健康医疗大数据的整合共享和开放应用。卫生保健大数据已成为我国的重要战略基础数据,并被纳入…...

    2024/4/15 16:11:27
  8. 【框架专题】——管理型容器——Spring——泛型处理

    注意泛型处理解决的问题就是,获取某个泛型类或方法在,某段代码(类或接口)里的具体类型,并无法获得原本泛型类的动态类型,永远是T泛型处理——Java泛型模块——Type接口概述Type体系中类型的包括:原始类型(Class)、参数化类型(ParameterizedType)、数组类型(GenericArray…...

    2024/4/25 21:21:01
  9. LED流水灯设计-ISE操作工具

    本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。系统性的掌握技术开发以及相关要求,对个人就业以…...

    2024/4/23 16:57:44
  10. 音视频到底是什么

    1.2音视频到底是什么***【免费下载源码和PPT课件】******【在线视频课程(csdn)】******【在线视频课程(51cto)】***好文章,来自【福优学苑@音视频+流媒体】视频是什么?动画书不知道大家小时候是否玩过一种动画小人书,连续翻动的时候,小人书的画面就会变成一个动画,类似现在…...

    2024/4/20 17:36:33
  11. w3c之HTML5实战标签属性

    ** w3cschool通关之H5实战 **2018年9月我刚毕业进入大学,对计算机方面的了解仅仅停留在安装和卸载软件,就这样一个对计算机白中白的傻孩子填报了计算机专业,幻想着有一天也能成为令别人羡慕的黑kuo,大学入学第一件事就是加入计算机协会做一些渗透的题,我发现自己的确不是往…...

    2024/4/15 16:11:41
  12. 滴滴云 AI 图像处理实践指引教程

    滴滴云 AI 图像处理实践指引教程 介绍讲座内容使用前准备在滴滴云创建 DAI Notebook 实例实验前准备工作解压后运行代码如下使用效果简单使用的API利好消息兴趣链接 介绍 最近因为参加大创项目,所以需要拓宽自己的视野,让自己更加熟悉人工智能CV方面的知识。看到CCF举办了一场…...

    2024/4/15 16:11:39
  13. 边缘计算研究热点地图

    边缘AI 深度学习的蓬勃发展,AI应用越来越普及,例如基于视频的智能分析应用已经极大的改变了人们的生活。随着移动计算和物联网的发展,数据在网络边缘发生了指数级的增长,因此需要把AI的能力推到网络边缘,减少数据传输量的同时提高AI推理的处理速度。 边缘AI在学术界发展迅…...

    2024/4/21 19:48:39
  14. java前后端分离使用支付宝支付PC端【详细教学】

    为了方便,个人好测试,支付,我们使用沙箱来做,什么是沙箱支付?就是给程序员用来测试支付的, 支付不是很难,只是配置东西麻烦 如何进入配置沙箱支付? 1.直接百度支付宝 进入官网,选择我是开发者进去登录,然后首页往下翻到开发服务,点击沙箱点击沙箱环境接下来设置沙箱…...

    2024/4/26 8:00:55
  15. 源站IP暴露了怎么自查?

    运营网站的朋友应该对DDoS攻击并不陌生。DDoS攻击会导致我们的网站出现无法访问,或者访问延迟等问题。游戏界面怎么也登录不上,影音视频一直刷新就是打不开,如果排除网络出现问题,那么就很有可能是DDoS攻击导致的。 随着我们迈入了5G时代,DDoS攻击也正向着Tb级别迈进,202…...

    2024/4/14 22:29:46
  16. git + 码云 + tortoisegie

    注册码云 新建仓库3.生成公钥4- 1 客户端操作 命令行操作 第一步 按照码云上的提示操作 第二步 公钥的生成 https://gitee.com/help/articles/4181如果不好使 解决方案 git正确设置了ssh,但仍然提示Permission denied (publickey)https://blog.csdn.net/I_can_/article/de…...

    2024/4/15 16:11:35
  17. fn_dblog_如何使用fn_dblog和fn_dump_dblog直接在SQL Server数据库中连续读取事务日志文件数据

    fn_dblog 大纲 (Outline)In this article, we’ll discuss how to read SQL Server transaction logs. This article should provide and insight into how the workload is being captured in the transaction log files. We are going to see how to get the transaction me…...

    2024/4/15 16:11:40
  18. RxJava3 创建操作符整理

    最近这三四个项目中都用到了RxJava,使用频率之高,觉着有必要进行整理,方便自己巩固记忆,也便于他人学习查找;本文就RxJava3的创建操作符进行记录,整理如下图:RxJava 使用步骤 :数据源产生数据并发射给订阅了这个数据的观察者(响应式编程)。所以主要分为三步:第一步:…...

    2024/4/15 16:11:34
  19. Pycharm的光标变粗了,如何变回细光标?

    Pycharm的光标变粗了,如何变回细光标?变粗了的原因是因为光标进入了读写状态。解决办法:如果键盘中有单独的insert键,按一下就可以。如果是笔记本电脑,比如我的是华硕的,insert键和delete键是在一起的,那么先按一下num键即小键盘锁,然后按住fn+insert/delete就可以了。…...

    2024/5/1 8:22:41
  20. shiro做安全框架出现页面循环重定向问题

    本文引用:https://blog.csdn.net/chengtanyong4777/article/details/79632781 感谢博主的分享: 转发和重定向的URLString前有加 “/” 为绝对路径 反之为相对路径 我这里是引用的shiro - springboot - web - starter 这里配置都放在yml中了 在路径前添加 /即可 #shiro 配置…...

    2024/4/15 16:11:32

最新文章

  1. 【LinuxC语言】信号集与sigprocmask

    文章目录 前言一、信号集1.1 操作信号集相关的函数1.2 信号屏蔽字1.3 sigprocmask1.4 示例代码 总结 前言 在Linux C编程中,信号是一种重要的进程间通信机制,用于通知进程发生了特定的事件。然而,程序在执行过程中可能会收到各种各样的信号&…...

    2024/5/5 11:23:07
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 基于ArrayList实现简单洗牌

    前言 在之前的那篇文章中,我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此,便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表&…...

    2024/5/4 10:31:32
  4. WPS二次开发专题:WPS SDK实现文档打印功能

    作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在办公场景或者家教场景中经常碰到需要对文档进行打印…...

    2024/5/1 13:31:33
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/4 12:05:22
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/4 11:23:32
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...

    2024/5/4 14:46:16
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...

    2024/5/4 23:54:44
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...

    2024/5/4 12:10:13
  10. 【Objective-C】Objective-C汇总

    方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/4 23:54:49
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...

    2024/5/4 23:54:44
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/4 14:46:12
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...

    2024/5/4 14:46:11
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/4 14:46:11
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/5 2:25:33
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/4 21:24:42
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/4 12:39:12
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...

    2024/5/4 13:16:06
  19. --max-old-space-size=8192报错

    vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...

    2024/5/4 16:48:41
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...

    2024/5/4 14:46:05
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...

    2024/5/5 3:37:58
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...

    2024/5/4 23:54:30
  23. python django 小程序图书借阅源码

    开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图&#xff0…...

    2024/5/4 9:07:39
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

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

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

    2022/11/19 21:17:18
  26. 错误使用 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
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 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系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

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

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

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

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

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

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

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

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

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

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

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

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