• 关于 多例 的搜索结果

回答

单例多例需要搞明白两个问题: 1. 什么是单例多例; 2. 如何产生单例多例; 3. 为什么要用单例多例 4. 什么时候用单例,什么时候用多例; 1. 什么是单例多例: 所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action; 2. 如何产生单例多例: 在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype"; 3. 为什么用单例多例: 之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存; 之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理; 用单例和多例的标准只有一个: 当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例; 4. 何时用单例?何时用多例? 对于struts2来说,action必须用多例,因为action本身含有请求参数的值,即可改变的状态; 而对于STRUTS1来说,action则可用单例,因为请求参数的值是放在actionForm中,而非action中的; 另外要说一下,并不是说service或dao一定是单例,标准同第3点所讲的,就曾见过有的service中也包含了可改变的状态,同时执行方法也依赖该状态,但一样用的单例,这样就会出现隐藏的BUG,而并发的BUG通常很难重现和查找。

蛮大人123 2019-12-02 01:50:47 0 浏览量 回答数 0

回答

单例和多线程是完全不相关的两个领域,单例解决的是对对象的控制,多线程解决的是充分利用多核处理器的能力。 并不是说单例就一定需要同步,只有在发生数据共享的时候才需要同步,所以就算你不使用单例,但是多个对象之间共享一个资源,一样是需要同步的;同理,就算你使用单例,但是你不发生资源共享同样是不需要同步的。 举个实际的例子: 现在有一个单例,但是单例的方法并未使用任何static对象,也就是不存在资源共享,所以是不需要同步的。

小勿悔 2019-12-02 02:04:37 0 浏览量 回答数 0

回答

单例和多线程是完全不相关的两个领域,单例解决的是对对象的控制,多线程解决的是充分利用多核处理器的能力。并不是说单例就一定需要同步,只有在发生数据共享的时候才需要同步,所以就算你不使用单例,但是多个对象之间共享一个资源,一样是需要同步的;同理,就算你使用单例,但是你不发生资源共享同样是不需要同步的。举个实际的例子:现在有一个单例,但是单例的方法并未使用任何static对象,也就是不存在资源共享,所以是不需要同步的。

蛮大人123 2019-12-02 02:04:37 0 浏览量 回答数 0

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

问题

什么时候用单例什么时候用多例?

蛮大人123 2019-12-01 19:58:49 3218 浏览量 回答数 2

问题

PostMan 能实现 一个接口 设计 多条测试用例吗

问问小秘 2020-01-07 14:30:04 0 浏览量 回答数 1

问题

为什么jfinal的控制器不用单例模式? 400 报错

爱吃鱼的程序员 2020-05-30 23:35:43 0 浏览量 回答数 1

问题

用例设计|如何写一份漂亮的测试用例?

技术小菜鸟 2019-12-01 21:11:51 4108 浏览量 回答数 1

问题

spring 的 controller 是单例还是多例,怎么保证并发的安全。

游客pklijor6gytpx 2020-03-22 15:35:27 124 浏览量 回答数 2

回答

在Java5之前的版本,使用双重检查锁定创建单例Singleton时,如果多个线程试图同时创建Singleton实例,则可能有多个Singleton实例被创建。从Java5开始,使用Enum创建线程安全的Singleton很容易。但如果面试官坚持双重检查锁定,那么你必须为他们编写代码。记得使用volatile变量。 为什么枚举单例在Java中更好 枚举单例是使用一个实例在Java中实现单例模式的新方法。虽然Java中的单例模式存在很长时间,但枚举单例是相对较新的概念,在引入Enum作为关键字和功能之后,从Java5开始在实践中。本文与之前关于Singleton的内容有些相关,其中讨论了有关Singleton模式的面试中的常见问题,以及10个Java枚举示例,其中我们看到了如何通用枚举可以。这篇文章是关于为什么我们应该使用Eeame作为Java中的单例,它比传统的单例方法相比有什么好处等等。 Java枚举和单例模式 Java中的枚举单例模式是使用枚举在Java中实现单例模式。单例模式在Java中早有应用,但使用枚举类型创建单例模式时间却不长.如果感兴趣,你可以了解下构建者设计模式和装饰器设计模式。 1)枚举单例易于书写 这是迄今为止最大的优势,如果你在Java5之前一直在编写单例,你知道,即使双检查锁定,你仍可以有多个实例。虽然这个问题通过Java内存模型的改进已经解决了,从Java5开始的volatile类型变量提供了保证,但是对于许多初学者来说,编写起来仍然很棘手。与同步双检查锁定相比,枚举单例实在是太简单了。如果你不相信,那就比较一下下面的传统双检查锁定单例和枚举单例的代码: 在Java中使用枚举的单例 这是我们通常声明枚举的单例的方式,它可能包含实例变量和实例方法,但为了简单起见,我没有使用任何实例方法,只是要注意,如果你使用的实例方法且该方法能改变对象的状态的话,则需要确保该方法的线程安全。默认情况下,创建枚举实例是线程安全的,但Enum上的任何其他方法是否线程安全都是程序员的责任。 你可以通过EasySingleton.INSTANCE来处理它,这比在单例上调用getInstance()方法容易得多。 具有双检查锁定的单例示例 下面的代码是单例模式中双重检查锁定的示例,此处的getInstance()方法检查两次,以查看INSTANCE是否为空,这就是为什么它被称为双检查锁定模式,请记住,双检查锁定是代理之前Java5,但Java5内存模型中易失变量的干扰,它应该工作完美。 你可以调用DoubleCheckedLockingSingleton.getInstance()来获取此单例类的访问权限。 现在,只需查看创建延迟加载的线程安全的Singleton所需的代码量。使用枚举单例模式,你可以在一行中具有该模式,因为创建枚举实例是线程安全的,并且由JVM进行。 人们可能会争辩说,有更好的方法来编写Singleton而不是双检查锁定方法,但每种方法都有自己的优点和缺点,就像我最喜欢在类加载时创建的静态字段Singleton,如下面所示,但请记住,这不是一个延迟加载单例: 单例模式用静态工厂方法 这是我最喜欢的在Java中影响Singleton模式的方法之一,因为Singleton实例是静态的,并且最后一个变量在类首次加载到内存时初始化,因此实例的创建本质上是线程安全的。 你可以调用Singleton.getSingleton()来获取此类的访问权限。 2)枚举单例自行处理序列化 传统单例的另一个问题是,一旦实现可序列化接口,它们就不再是Singleton,因为readObject()方法总是返回一个新实例,就像Java中的构造函数一样。通过使用readResolve()方法,通过在以下示例中替换Singeton来避免这种情况: 如果Singleton类保持内部状态,这将变得更加复杂,因为你需要标记为transient(不被序列化),但使用枚举单例,序列化由JVM进行。 3)创建枚举实例是线程安全的 如第1点所述,因为Enum实例的创建在默认情况下是线程安全的,你无需担心是否要做双重检查锁定。 总之,在保证序列化和线程安全的情况下,使用两行代码枚举单例模式是在Java5以后的世界中创建Singleton的最佳方式。你仍然可以使用其他流行的方法,如你觉得更好,欢迎讨论。

珍宝珠 2020-02-07 16:58:59 0 浏览量 回答数 0

问题

编写软件测试需求及测试用例

技术小菜鸟 2019-12-01 21:26:22 4075 浏览量 回答数 1

问题

去粗取精,云效打造独特测试用例管理工具

技术小菜鸟 2019-12-01 21:40:05 3576 浏览量 回答数 1

问题

测试用例质量不高?我教你如何编写高质量的测试用例!

技术小菜鸟 2019-12-01 21:41:09 4370 浏览量 回答数 1

回答

同时产生50个还叫单例么?单例不应该是被第一个线程实例化的,而是实例化后被多个线程同时访问。例如tomcat中的servlet是个典型的单例,是被tomcat容器new出来,doXXX方法同时服务多个请求,每个请求都是一个独立的线程。这种方法中的局部变量,每个线程都有独立的内存空间,互不干扰。如果存在成员变量,则会被多个线程同时访问,就会产生线程安全的问题。单例的成员变量你可以简单的想象成像static的类变量一样,只有一份,被多个线程同时操作。######谢谢了,大神,豁然开朗了许多~######不管你几个线程,单例就是只有一个,是线程同步的。

爱吃鱼的程序员 2020-06-01 10:30:44 0 浏览量 回答数 0

问题

servlet中的单例问题

蛮大人123 2019-12-01 20:03:56 904 浏览量 回答数 1

问题

hibernateTemplate在项目中是单例还是多例?

a123456678 2019-12-01 20:20:26 1355 浏览量 回答数 1

问题

objective-c 单例继承问题

a123456678 2019-12-01 20:27:21 1025 浏览量 回答数 2

回答

首先struts 2的Action是多实例的并非单例,也就是每次请求都会产生一个Action的对象。Servlet是单例的,也就是整个应用中每个被请求到的Servlet类都只创建了一个对象,所有相同请求都是调用同一个对象的service方法处理的。所谓单例就是通过限制对象的构造过程通常私有化构造函数,保证整个应用中只有一个该类的实例,即单例。

蛮大人123 2019-12-02 02:35:05 0 浏览量 回答数 0

回答

单实例化也叫单例,当编写的程序全局只需要一个对象时,可以使用单例,防止对象被多次创建。比如我们电脑中的资源管理器只有一个,这就是一个单例的使用场景

一个人睡觉 2019-12-02 01:01:41 0 浏览量 回答数 0

回答

1、为了性能。 2、不需要多例:不需要多例会让很多人迷惑,因为spring mvc官方也没明确说不可以多例。

游客pklijor6gytpx 2019-12-02 03:16:55 0 浏览量 回答数 0

回答

1、Spring MVC中默认的Controller是单例模式2、@Controller之前增加@Scope(“prototype”)可以更换为多例模式3、如果非要在单例模式下,共享变量,记得加锁解决线程安全问题

徐雷frank 2019-12-02 01:44:19 0 浏览量 回答数 0

回答

单例可以减少对象的创建,从而减少内存使用,也减少了不必要的垃圾回收动作。在多线程模式下使用单例需要注意并发引起的线程安全问题,即对于单例类应尽可能不使用实例和类变量。

老虎羊 2019-12-02 01:00:13 0 浏览量 回答数 0

问题

多重条件下测试用例如何设计?

问问小秘 2020-01-07 14:32:03 0 浏览量 回答数 1

回答

看您的逻辑, TempDAO 这个类应该是个单例类,不然DBCP本身就没有意义了.如果是单例的类,那么在并发场景下您的代码就有严重的问题.如果不是单例的类,那么DBCP本身没有关闭,会出现很多无效的连接.

游客bgx5ifdnbokuq 2019-12-02 02:44:31 0 浏览量 回答数 0

回答

骚年,你的理解偏颇了。。。单例模式,顾名思义,就是在某个环境里,不管怎么实例化,只能产生唯一对象。static方法只是个特殊的动作(特殊在于它是类(不是对象的)的动作),这个动作可以被执行多次,并且没有限制里面处理内容,所以完全可以产生多个对象(你无法阻止),static方法跟产生几个对象没有直接关系。所以说,static方法或变量都只是一种手段,用这种手段的组合判断,就可以生成单例模式,也就是说static方法或变量或许是必要条件,但绝对不是充分条件。至于达到单例模式效果的方法,有很多。详细参照如下:http://www.runoob.com/design-pattern/singleton-pattern.html

蛮大人123 2019-12-02 02:23:06 0 浏览量 回答数 0

问题

SQL查询语句有哪些?

茶什i 2020-01-16 18:27:02 56 浏览量 回答数 1

问题

Markov(阿里妈妈功能测试平台) 自研的新一代功能测试平台【开源分享】9期

montos 2020-05-15 13:33:49 70 浏览量 回答数 1

回答

单例模式,实例是application是同级的,只要在application销毁的情况下才会销毁,再者如果你的单例如果持有一些context的引用的话,会导致该context无法释放,有内存泄露的风险。反之静态方法会比单例好很多!提醒你,人家回答你,要先说谢谢,不要什么都不说就直接追问,最基本的尊重还是要有的

爵霸 2019-12-02 01:58:41 0 浏览量 回答数 0

问题

ossClient使用单例的话 最大支持多少并发相对于多个ossclient性能会有影响吗

风川浅钊 2019-12-01 21:20:45 2335 浏览量 回答数 1

回答

"不能在没有对代码进行更改的情况下在Flink中使用Apache Spark代码。由于这两者是不同的处理框架和由两个提供的API,它的语法彼此不同。框架的选择应该由用例驱动,而不是像Flink那样通用语句比Spark更好。框架可能对你的用例很有用,并且在其他用例中可能表现不佳。顺便说一句,Spark不仅仅是微批。它有批量,流媒体,图形,ML和其他东西。由于没有提到完整的用例,因此很难说明哪种情况更适合这种情况。但是,如果你的用例可以提供亚秒级延迟,那么我不会浪费时间转移到另一个框架。此外,如果事物是​​动态的并且预计处理框架将来可能会发生变化,那么最好使用像apache beam这样的东西来提供大多数处理引擎的抽象。使用apache beam处理API可以让您随时灵活地更改底层处理引擎。以下是阅读更多关于beam的链接 - https://beam.apache.org/。"

flink小助手 2019-12-02 01:44:53 0 浏览量 回答数 0

问题

全局事务服务 GTS样例工程

猫饭先生 2019-12-01 21:24:46 1104 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号