c********t 发帖数: 5706 | |
x*********w 发帖数: 533 | 2
大牛最后去哪了?
【在 c********t 的大作中提到】 : 谁能帮我找一下,多谢!
|
l*****a 发帖数: 14598 | 3 走自己的路,关心别人没意义
【在 x*********w 的大作中提到】 : : 大牛最后去哪了?
|
w****a 发帖数: 710 | 4 设计模式那个?讨论什么内容?
关于多线程的还是啥 |
p*****2 发帖数: 21240 | 5
大牛先说说?
【在 w****a 的大作中提到】 : 设计模式那个?讨论什么内容? : 关于多线程的还是啥
|
w****a 发帖数: 710 | 6 二爷抬举了,我不是大牛、、、
我觉得singleton在C++里面有几个要注意的。别的语言我也不熟悉就不说了。
一个是跨dll的链接问题。如果是模板的singleton那种继承下来那种,比如
class foo: public singleton
这样的,继承下来的时候注意要显示的声明一下singleton的getInstance之类的函数。
否则跨dll可能会报链接错误。
一个是singleton的生命周期管理问题。就是注意初始化释放的顺序别弄乱了。有些大
型程序,比如说很多个manager,都是以singleton的形式搞的,初始化和释放顺序要自
己手动把握好。
一个是多线程下的singleton问题了。getInstance的时候搞个锁就行。
还有没有大牛有其他的建议? |
c********t 发帖数: 5706 | 7 青蛙一只,还在求收留中。。。
【在 x*********w 的大作中提到】 : : 大牛最后去哪了?
|
c********t 发帖数: 5706 | 8 我觉得Design pattern,二爷也应该总结一下。
好像是有人问,为什么singleton要用 static, 有人回答为了thread safe。俺赶脚不
太对吧。static 我觉得是为了global access.要thread safe,还要单独考虑,比如
synchronized instance creation.
【在 w****a 的大作中提到】 : 设计模式那个?讨论什么内容? : 关于多线程的还是啥
|
|
c********t 发帖数: 5706 | 9 我这里也有个基础问题。java里 为了防止用new create singleton class instance,
需要把 construct class scope设为private, 可是这样就不能继承了啊?
如何既能可以被继承,又可以保持singleton性质?
【在 w****a 的大作中提到】 : 二爷抬举了,我不是大牛、、、 : 我觉得singleton在C++里面有几个要注意的。别的语言我也不熟悉就不说了。 : 一个是跨dll的链接问题。如果是模板的singleton那种继承下来那种,比如 : class foo: public singleton : 这样的,继承下来的时候注意要显示的声明一下singleton的getInstance之类的函数。 : 否则跨dll可能会报链接错误。 : 一个是singleton的生命周期管理问题。就是注意初始化释放的顺序别弄乱了。有些大 : 型程序,比如说很多个manager,都是以singleton的形式搞的,初始化和释放顺序要自 : 己手动把握好。 : 一个是多线程下的singleton问题了。getInstance的时候搞个锁就行。
|
w****a 发帖数: 710 | 10 我觉得可以搞个友元,委托给一个manager来专门new。
【在 c********t 的大作中提到】 : 我这里也有个基础问题。java里 为了防止用new create singleton class instance, : 需要把 construct class scope设为private, 可是这样就不能继承了啊? : 如何既能可以被继承,又可以保持singleton性质?
|
|
|
x*****0 发帖数: 452 | |
c********t 发帖数: 5706 | 12 java 没有友元啊,不过基本上同一个package相当于friend, 就是用default modifier
。但这样就造成同一个package的都可以用new来create instance, 就不能保证
singleton了。
【在 w****a 的大作中提到】 : 我觉得可以搞个友元,委托给一个manager来专门new。
|
w****a 发帖数: 710 | 13 那也好办,创建实例的时候assert一下,是否是null。其实这个是最简单的。
类似于这样:
Singleton( void )
{
Assert( !s_pSingleton );
s_pSingleton = static_cast( this );
}
modifier
【在 c********t 的大作中提到】 : java 没有友元啊,不过基本上同一个package相当于friend, 就是用default modifier : 。但这样就造成同一个package的都可以用new来create instance, 就不能保证 : singleton了。
|
g**e 发帖数: 6127 | 14 singleton这种anti-pattern的东西还是少用。
银行的人喜欢让你实现thread safe lazy initialization singleton,已显摆他们知
道double checked locking. IT公司面试我被问过singleton的缺点是什么,我觉得这
个题更好
modifier
【在 c********t 的大作中提到】 : java 没有友元啊,不过基本上同一个package相当于friend, 就是用default modifier : 。但这样就造成同一个package的都可以用new来create instance, 就不能保证 : singleton了。
|
c********t 发帖数: 5706 | 15 明白了,多谢!
【在 w****a 的大作中提到】 : 那也好办,创建实例的时候assert一下,是否是null。其实这个是最简单的。 : 类似于这样: : Singleton( void ) : { : Assert( !s_pSingleton ); : s_pSingleton = static_cast( this ); : } : : modifier
|
c********t 发帖数: 5706 | 16 想了半天,感觉只是为了需要啊。请指点一下缺点是什么吧?
【在 g**e 的大作中提到】 : singleton这种anti-pattern的东西还是少用。 : 银行的人喜欢让你实现thread safe lazy initialization singleton,已显摆他们知 : 道double checked locking. IT公司面试我被问过singleton的缺点是什么,我觉得这 : 个题更好 : : modifier
|
g**e 发帖数: 6127 | 17 真正意义上(比如java class loader level)的singleton的需要非常非常少。大部分都
可以用spring dependency injection.
缺点么,给singleton写个unit test看看?global variable总的来说越少越好。加一
堆lock影响性能。另外spring inject的java ben默认就是singleton (
ApplicationContext level)
们知
得这
【在 c********t 的大作中提到】 : 想了半天,感觉只是为了需要啊。请指点一下缺点是什么吧?
|
p*****2 发帖数: 21240 | 18
DP我不懂呀。这东西好像就在Java那里提的特别多吧?你能不能先总结一下?
【在 c********t 的大作中提到】 : 我觉得Design pattern,二爷也应该总结一下。 : 好像是有人问,为什么singleton要用 static, 有人回答为了thread safe。俺赶脚不 : 太对吧。static 我觉得是为了global access.要thread safe,还要单独考虑,比如 : synchronized instance creation.
|
c********t 发帖数: 5706 | 19 嗯,明白了,多谢。一般只会在必要的时候用,性能也只能委屈了。
【在 g**e 的大作中提到】 : 真正意义上(比如java class loader level)的singleton的需要非常非常少。大部分都 : 可以用spring dependency injection. : 缺点么,给singleton写个unit test看看?global variable总的来说越少越好。加一 : 堆lock影响性能。另外spring inject的java ben默认就是singleton ( : ApplicationContext level) : : 们知 : 得这
|
p*****2 发帖数: 21240 | 20
对于core java来说怎么理解?
【在 g**e 的大作中提到】 : 真正意义上(比如java class loader level)的singleton的需要非常非常少。大部分都 : 可以用spring dependency injection. : 缺点么,给singleton写个unit test看看?global variable总的来说越少越好。加一 : 堆lock影响性能。另外spring inject的java ben默认就是singleton ( : ApplicationContext level) : : 们知 : 得这
|
|
|
c********t 发帖数: 5706 | 21 其实大公司面试,问的不算多。根据CC150上说的,面试也就靠两种design pattern,
singleton and factory method.的基本概念吧。
【在 p*****2 的大作中提到】 : : 对于core java来说怎么理解?
|
p*****2 发帖数: 21240 | 22
所以没必要总结了?
【在 c********t 的大作中提到】 : 其实大公司面试,问的不算多。根据CC150上说的,面试也就靠两种design pattern, : singleton and factory method.的基本概念吧。
|
c********t 发帖数: 5706 | 23 en.haha.你的h2o 那题总结出来了吗?给个解法吧。
【在 p*****2 的大作中提到】 : : 所以没必要总结了?
|
p*****2 发帖数: 21240 | 24
我就是按照LZ那个思路做的。
【在 c********t 的大作中提到】 : en.haha.你的h2o 那题总结出来了吗?给个解法吧。
|
c********t 发帖数: 5706 | 25 可是第二问,lz说用了两个objects.两个objects 不能互相notify对方的threads.怎么
能在满足条件的时候,唤醒对方呢?能把你的codes发给我看看吗?
【在 p*****2 的大作中提到】 : : 我就是按照LZ那个思路做的。
|
c********r 发帖数: 286 | 26 用enum实现singleton好像更简单方便些,不知道gate大侠在实际应用中是否用过,感
觉如何
【在 g**e 的大作中提到】 : singleton这种anti-pattern的东西还是少用。 : 银行的人喜欢让你实现thread safe lazy initialization singleton,已显摆他们知 : 道double checked locking. IT公司面试我被问过singleton的缺点是什么,我觉得这 : 个题更好 : : modifier
|
u*********r 发帖数: 176 | 27 我不知道Java这种用enum实现singleton或者把enum拿来当class的用法到底是不是hack
,反正看着很不爽。。。
【在 c********r 的大作中提到】 : 用enum实现singleton好像更简单方便些,不知道gate大侠在实际应用中是否用过,感 : 觉如何
|
c********r 发帖数: 286 | 28 enum还是相对来讲比较新,
不知道实际应用中有没有什么弊端
hack
【在 u*********r 的大作中提到】 : 我不知道Java这种用enum实现singleton或者把enum拿来当class的用法到底是不是hack : ,反正看着很不爽。。。
|