当前位置: 首页 > 编程日记 > 正文

单例和多例的区别

为什么80%的码农都做不了架构师?>>>   hot3.png

需要明白以下几个问题:

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通常很难重现和查找;

转载于:https://my.oschina.net/anlve/blog/1815133

相关文章:

CSP 201909-2 小明种苹果(续)Python实现+详解

试题 代码 # N表示苹果树的棵树 N int(input()) T, D, E 0, 0, 0 # 所有树剩果总数 # 发生苹果掉落的苹果树总数 # 相邻三棵树发生苹果掉落的组数 treeMatrix [] # 存放所有数的数果疏果信息 for i in range(N):treeRow list(map(int, input().split()))treeRow treeRow…

hdu1176

hdu1176 f(x,t)max{ f(x-1,t-1) , f(x,t-1) , f(x1,t-1) }; left(5-t)>0?(5-t):0; right(5t)<10?(5t):10; for left to right <-- i resmax{f(maxt,i)}; #include <stdio.h> #include <string.h> #define mmax(x,y,z) (x)>((y)>(z)?(y):(z))?(…

spring体系

2019独角兽企业重金招聘Python工程师标准>>> 一、spring从体系架构上分为 1. 基本组件框架组合&#xff1a;Spring Framework 2.专项领域应用组件&#xff1a;Spring Portfolio 这个Spring Portfolio主要应用满足于特定的的应用场合&#xff1a;包括了spring Securi…

电子学会青少年编程等级考试四级题目解析07

一、题目&#xff1a;数字反转 Jaime想去城堡探险&#xff0c;在城堡门口遇到了小猫&#xff0c;Jaime必须答对小猫提出的问题才能进入城堡。 小猫出题啦&#xff1a;找到一个四位数&#xff0c;该四位数的各位数字翻转&#xff08;个位变千位&#xff0c;十位变百位&#xf…

如何连接本地mysql+设置无密码登录

如果嫌麻烦&#xff0c;可以设置密码为空&#xff0c;下次登录就不需要密码了。

【GDI+】 线段 文字 定位的问题(二)

继续&#xff1a; 经过上文的分析&#xff0c;似乎可以得到类似这样的想法&#xff1a; 由此 分为左右两侧进行区分绘制&#xff0c;应该就可以获得想要的结果了~ 转载于:https://www.cnblogs.com/loveclumsybaby/p/3440314.html

电子学会青少年编程等级考试Python一级题目解析10

Python一级题目解析 1、题目 下面代码的执行结果是&#xff08;&#xff09; a 123456789 b "*" print("{0:{2}>{1},}\n{0:{2}^{1},}\n{0:{2}<{1},}".format(a,20,b))A. *********123,456,789 ****123,456,789***** 123,456,789*********B. **…

ES6基础之Array.fill函数

引子 关注「时事」的同学都会注意到&#xff0c;ES6和TypeScript是时下「投资」的热门。作为一位老同学&#xff0c;我也注意到这一点&#xff0c;不断收集一些小东东&#xff0c;以备不时之需。 正题 本文中记录的是ES6为Array增加的fill()函数。其功能是&#xff0c;用户可以…

CSP 202006-1 线性分类器 python实现+详解

试题 代码 # 读入m,n m, n [int(i) for i in input().split()]# 创建字典存放已知点 dict {} for i in range(m):line input().split()x, y, t linex, y int(x), int(y)dict[(x, y)] t# 逐条线地去判断每一个点 # 创建两个集合&#xff0c;一个存放坐标代入公式后大于零…

Java堆内存分配与回收策略

java主要在堆上分配内存&#xff0c;而Java堆又分为新生代(YoungGen)和老年代(OldGen)两个部分&#xff0c;新生代又再分为Eden区和Survivor区两部分&#xff0c;本文根据java堆的划分&#xff0c;描述hotspot的内存分配策略。 GC垃圾收集分类 Minor GC: 发生在新生代中的垃圾…

清华学长带你从宏观角度看递归

分享嘉宾 赵子一&#xff0c;Datawhale成员&#xff0c;清华大学研究生在读。 分享视频 见公众号“组队学习” 分享内容

关于loader加载的东西必须是继承sprite

如果不是继承sprite转载于:https://www.cnblogs.com/wonderKK/p/3440616.html

CSP 202006-2 稀疏向量 python实现(非满分)(待更新)

试题 代码 &#xff08;1&#xff09;30分代码 # 读取n,a,b # n表示向量u,v的维数&#xff0c;a&#xff0c;b分别表示u&#xff0c;v的非零值个数 n, a, b [int(i) for i in input().split()]# 创建两个二维队列存放u,v的信息 List1 [] List2 [] for i in range(a):line …

Java泛型总结

0. 概述 泛型是Jdk1.5引入的特性。泛型是Java程序员最常用且最容易被忽视的知识之一。许多Java程序员只是使用泛型类。但不考虑其工作方式&#xff0c;直到出现问题。 1 术语 用示例进行描述。ArrayList<E>类、ArrayList<Integer>类&#xff1a; 整个称为ArrayLi…

首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持

首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持 https://tech.sina.cn/digi/nb/2018-05-15/detail-ihapkuvm0295695.d.html 上海市徐汇区人民检察院依法以破坏计算机信息系统罪对全市首例利用智能路由网关设备进行流量劫持的犯罪嫌疑人章某批准逮捕。 经查&#xff0c;2018年…

电子学会青少年编程等级考试Python案例10

案例&#xff1a;彩虹 1、作品 2、代码 背景图片&#xff1a;蓝天白云.png import turtleturtle.Screen().setup(803, 648) turtle.Screen().bgpic("./蓝天白云.png")pen turtle.Pen() pen.speed(10) r 330 size 10 colors [#ff0000, #ff7f00, #ffff00, #00ff0…

CSP 201912-2 回收站选址 python实现+详解

试题 代码 # 读入点的个数 n int(input())# 创建字典&#xff0c;键为点的坐标&#xff0c;值为true&#xff0c;存放所有点 dict {} for i in range(n):x, y [int(m) for m in input().split()]dict[(x, y)] true# 创建字典&#xff0c;存放是回收站的点 dict1 {} for k…

web.xml 配置 加载顺序

web.xml 的加载顺序是&#xff1a;context-param -> listener -> filter -> servlet 。 过滤器执行顺序是根据filter-mapping &#xff0c;不是根据filter顺序。转载于:https://www.cnblogs.com/xiongjinpeng/p/web-xml%e9%85%8d%e7%bd%ae%e5%8a%a0%e8%bd%bd%e9%a1%ba…

python包引用问题

python模块引用梳理 文件组织结构&#xff1a; 复制代码t├── __init__.py├── main.py├── t1│ ├── A.py│ └── __init__.py└── t2 ├── B.py └── __init__.py 复制代码A.py def test(): print t.t1.A.test()B.py def test(): print t.t2.B.test()执行&a…

【新周报(051)】Datawhale组队学习

记录&#xff1a; 按照本周规划&#xff0c;我们正在与阿里云天池合作开展“在线编程训练营”的组队学习活动&#xff0c;在这次活动中我们已经完成12个知识点&#xff08;数组、链表、栈、字符串、树、位运算、双指针、搜索、排序、动态规划、分治、哈希表&#xff09;的视频…

ZJU-java进阶笔记 第一、二周(类与对象,对象交互)

对象变量是对象的管理者&#xff0c;而非所有者 VendingMachine vm new VendingMachine();this指代当前对象 成员函数可以直接&#xff08;不需要点运算符&#xff09;调用本类的其他成员函数 void insertMoney(int amount) {balance balance amount;showBalance(); }定义…

常用的文本处理函数

函数说明left()返回串左边的字符length()返回串的长度locate()找出串的一个子串lower()将串转换成小写upper()将串转换成大写ltrim()去掉串左边空格rtrim()去掉串右边空格substring()返回子串的字符转载于:https://www.cnblogs.com/forphp/p/3442568.html

【青少年编程竞赛交流】02月份微信图文索引

02月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习&#xff0c;所以&#xff0c;我另外新建了这个微信公众号“青少年编程竞赛交流”&#xff0c;在这个公众号上分享有关青少年编程方面的知识&#xff0c;带小朋友们参…

js ~取非运算符的妙用,将-1转为0(或假值)

典型的运用场景就是indexOf

CSP 201912-1 报数 python实现

试题 代码 python n int(input())list [0, 0, 0, 0] m 0 i 1while(i < (mn)):if 7 in str(i) or i % 7 0:list[(i3) % 4] 1m 1i 1for j in list:print(j)

暴裂无声张一鸣

2009年&#xff0c;张一鸣第一次创业&#xff0c;项目名为九九房。最巅峰时&#xff0c;九九房的用户超过600万&#xff0c;移动产品用户量超过100万&#xff0c;日启动10万人次。如果这一项目成功地做下去&#xff0c;张一鸣很有可能成为一名地产大佬。可惜的是&#xff0c;张…

select 不要 用*

背景 说实在的&#xff0c;这有什么好记录的呢。记录这个有啥用&#xff0c;真是技术人员的吹毛求疵。说起来&#xff0c;就是给人装有用吧。既然记录了&#xff0c;也想个相关的段子吧。曾经有个同事写了个sql&#xff0c;效率极差&#xff0c;来了个女同事&#xff0c;竟然解…

【青少年编程竞赛交流】01月份微信图文索引

01月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习&#xff0c;所以&#xff0c;我另外新建了这个微信公众号“青少年编程竞赛交流”&#xff0c;在这个公众号上分享有关青少年编程方面的知识&#xff0c;带小朋友们参…

CSP 201812-1 小明上学 Python实现+详解

题目 代码 #红灯 r 秒&#xff0c;黄灯 y 秒&#xff0c;绿灯 g 秒 r,y,g [int(i) for i in input().split()]#n表示小明总共经过的道路段数和看到的红绿灯数目 n int(input())#0-道路 #1-红灯 需要等r(所读值取代)秒 #2-黄灯 需要等yr(所读值取代)秒(黄灯亮后亮红灯) #3-绿…

Debain 7.2安装配置

一 下载安装Debian 7.2 安装debian CD1,在最后一步&#xff0c;使用网络安装基本界面。 二 修改源 cd /etc/apt mv sources.list sources.list.bak gedit /sources.list 添加&#xff1a; #####################主要&#xff0c;开源&#xff0c;闭源 deb http://mirrors.163.c…