??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区综合,日韩在线播放一区,久久久www成人免费精品张筱雨http://www.aygfsteel.com/onlykeke/category/13503.htmlU尘最可笑Q我自乐逍遥zh-cnFri, 02 Mar 2007 07:11:08 GMTFri, 02 Mar 2007 07:11:08 GMT60java aio [转]http://www.aygfsteel.com/onlykeke/archive/2006/11/21/82592.html奇葛?/dc:creator>奇葛?/author>Tue, 21 Nov 2006 11:11:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/11/21/82592.htmlhttp://www.aygfsteel.com/onlykeke/comments/82592.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/11/21/82592.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/82592.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/82592.html回顾一下Unix?UI/O模型 1、阻塞I/O
2、非dI/O
3、I/O复用Qselect、poll、linux 2.6U改q的epollQ?br />4、信号驱动IOQSIGIOQ?br />5、异步I/OQPOSIX的aio_pd函数Q?br />

同步I/O和异步IO

POSIX把这两个术语定义如下Q?br />

同步I/O操作Dhq程dQ直x作完?br />异步I/O操作不导致请求阻塞?br />
Ҏ上述定义Q前四种I/O模型都是同步I/OQ第5U才是异步I/O?br />
select不允许多于一个的U程在同一个描q符集上{待。这使得反应式模型不适用于高性能应用Q因为它没有有效地利用硬件的q行性?br />异步I/O通常能够提高更好的性能Qwindows的iocp通过内核U程调度Q也能提供很好的q发性能Q但不是真正的异步?br />

Java nio和多路复?/h2>
java 1.4 nio提供的selectQ这是一U多路复用I/OQmultiplexed non-blocking I/OQ模型,底层是用select或者poll。I/O复用是Q阻塞在select或者pollpȝ调用的某一个之上,而不是阻塞在真正的I/Op? l调用之上。JDK 5.0 update 9和JDK 6.0在linux下支持用epollQ可以提高ƈ发idle connection的性能Q?a >http://blogs.sun.com/alanb/entry/epollQ?br />
以前看到有h猜测Windows下nio使用了IOCPQ那应该是错的,毕竟IOCP不是多\复用I/O模型。从JavaOne 2006的灯片来看Qaio才会使用IOCP来实现的?br />

Java aio和JSR 203


2003q_有了JSR 203Q?u>http://jcp.org/en/jsr/detail?id=203Q,但是一直没有实现?br />
l于QJSR 203的spec lead_会在Java SE 7.0中完成JSR 203QJava SE 6.0已经是RCQ很快正式版׃发布Q然后就是Java SE 7.0Q估计我们不需要等太久了?a >
http://blogs.sun.com/alanb/entry/what_is_happening_with_jsr

asynchronous I/O对于Java的媄响,不会低于当qJDK 1.4 nio引入multiplexed non-blocking I/O的媄响,很多的Java应用都会重写。如同Linux 2.6支持AIOQDB2、Oracle数据库都会发布新版本Q说支持使用AIOQ性能提高多少多少云云Q主要是AIO的文件操作部分)?br />
对asynchronous I/O的支持,JavaE序p够支撑大q发|络应用了,在IO模型斚wQ对于C/C++{语a不再存在“C/C++能做Q但是Java不能做的事情”?br />
q个是Java One 2006上的qȝ片?br />http://blogs.sun.com/roller/resources/alanb/bof0895.pdf
提到了:
需要新的channel types支持异步I/O模型
使用Native机制Q例如Windows IO Completion ports?br />
[附]
JDK 6.0 nio支持epollQ对q发idle connection会有大幅度的性能提升Q这是很多|络服务器应用程序需要的?br />
One of the updates in build 59 of Mustang (JavaTM SE 6) is that the New I/O Selector implementation will use the epoll event notification facility when running on the Linux 2.6 kernel.

JDK 5.0 update 9也支持:
The epoll SelectorProvider will be included in 5.0 update 9. To enable it requires setting the system property java.nio.channels.spi.SelectorProvider to the value sun.nio.ch.EPollSelectorProvider.

5UIO模型Q?br />dIO
非阻塞IO
多\复用
信号驱动IO
异步IO

最好性能的还是异步IOQ目前Java只能支持到多路复用一U,期待着以后Java 7.0/8.0支持异步IOQ?.0是没有希望了?br />

]]>
技术文章链?/title><link>http://www.aygfsteel.com/onlykeke/archive/2006/09/24/71552.html</link><dc:creator>奇葛?/dc:creator><author>奇葛?/author><pubDate>Sun, 24 Sep 2006 05:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/onlykeke/archive/2006/09/24/71552.html</guid><wfw:comment>http://www.aygfsteel.com/onlykeke/comments/71552.html</wfw:comment><comments>http://www.aygfsteel.com/onlykeke/archive/2006/09/24/71552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/onlykeke/comments/commentRss/71552.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/onlykeke/services/trackbacks/71552.html</trackback:ping><description><![CDATA[ <u> <font color="#0000ff">C语言高效~程的四大绝招?</font> </u> <a >http://blog.csdn.net/nhczp/archive/2006/09/22/1264355.aspx</a> <br /> <br /> <span id="wmqeeuq" class="ts"> <a >Does Wicket Suit Your Web Framework Style?</a> </span> <br /> <span id="wmqeeuq" class="blogEntryTitle"> <a title="http://javageek.org/2006/03/08/comparing_web_frameworks_wicket.html" name="a1141831685192"> <font color="#000000">Comparing Web Frameworks: Wicket</font> </a>  </span> <a >http://javageek.org/2006/03/08/comparing_web_frameworks_wicket.html</a> <img src ="http://www.aygfsteel.com/onlykeke/aggbug/71552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/onlykeke/" target="_blank">奇葛?/a> 2006-09-24 13:06 <a href="http://www.aygfsteel.com/onlykeke/archive/2006/09/24/71552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单例模式陷阱[转]http://www.aygfsteel.com/onlykeke/archive/2006/09/14/69537.html奇葛?/dc:creator>奇葛?/author>Thu, 14 Sep 2006 01:36:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/09/14/69537.htmlhttp://www.aygfsteel.com/onlykeke/comments/69537.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/09/14/69537.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/69537.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/69537.html

单例模式陷阱

Posted on 2006-08-26 11:26 JavaExplore

         今天去jdonQ看了它的设计研I栏目,bang有几评论单例模式的文章Q声U“Singleton is evil”(?a >http://www.jdon.com/jive/article.jsp?forum=91&thread=17578Q,q且引用几篇外文面佐证自己的观点,其中有一文章更是说Q单例不仅不是一U模式,而是一U反模式?br />        下面我谈谈我对单例模式的看法。逐一分析单例模式的陷阱,帮助大家正确使用单例模式?br />Q?Q 陷׃Q调用函数的性能瓉
        在c++中,单例只有一U实现方式——LazySingleton, 实现如下(本文全部使用java代码)Q?/p>

public   class  LazySingleton {
    
private   static  LazySingleton m_instance = null ;
     private LazySingleton(){};
     synchronized public static LazySingleton getInstance(){
        
if(m_instance!=null)
            m_instance
=new LazySingleton();
        
return m_instance;
    }

}

LazySingleton对象的初始化推q到调用的时候。ƈ且ؓ了防止多U程环境下生多个实例,使用synchronized关键字保证函数getInstance调用的线E安全。synchronized关键字的存在保证了只会生一个对象,但也成了多线E环境下的性能瓉。一个多U程的程序,Cq里却要排队{候成了一个单U程式的执行程Q这在高q发环境下是不可容忍的。而c++中可以用双重检查机制将q种性能问题仅仅限制在第一ơ构造对象的时候,而java中不可以使用双重查机制?br />        但是java可以实现EagerSingletonQ实现如下:

public   class  EagerSingleton {
    
private   static  EagerSingleton m_instance = new  EagerSingleton();
     private EagerSingleton(){};
     public static agerSingleton getInstance(){
        
return m_instance;
    }

}
与LazySingleton相比QEagerSingleton对象的初始化放Ccd载的时候。这样就避免了synchronized关键字的性能瓉?br />Q?Q陷׃Q访问互斥共享资?br />         EagerSingleton中访问互斥资源也要考虑U程安全问题。下面看一个例子:
public class EagerSingleton{
    
private static EagerSingleton m_instance=new EagerSingleton();
    
private HashMap map=new HashMap();
   
private EagerSingleton(){};
   
public static agerSingleton getInstance(){
        
return m_instance;
    }

       
public void refreshMap(Object key){
        
synchronized(map){
            
if(!map.contains(key))
                map.put(key,value);
//value为此时的实时数据
        }
 
    }

}
因ؓ该类是单例,可能多线Eƈ发访问mapQmap非线E安全,需要加U程安全关键字,否则掉入了讉K互斥资源的陷阱?br />Q?Q陷׃Q非法逻辑陷阱
        q种情况一般是滥用单例模式造成的,下面考虑一U滥用单例的情况。下面的代码的作用是getValueByName?马上printValue卛_成操作流E?br />
public class EagerSingleton{
    
private static EagerSingleton m_instance=new EagerSingleton();
    
private String value=null;
   
private EagerSingleton(){};
   
public static agerSingleton getInstance(){
        
return m_instance;
    }

    
synchronized public void getValueByName(String name){
        value
=getByNameFromDateBase(name);
        
    }

    
public viod printValue(){
        System.out.println(
this.vaue);
    }

}

该类含有一U有属性valueQ在多线E环境下不能保证value值的合理逻辑Q一U程getValueByName?马上printValueQ也有可能value的值已l被其他U程修改。这U情况就属于单例模式的滥用,该类Ҏ不适合做成单例?br />        消除非法逻辑的陷阱,可以通过该c重构ؓUa的行为类完成。重构后的代码如下:

public class EagerSingleton{
    
private static EagerSingleton m_instance=new EagerSingleton();
   
private EagerSingleton(){};
   
public static agerSingleton getInstance(){
        
return m_instance;
    }

    
private String getValueByName(String name){
        
return getByNameFromDateBase(name);
        
    }

    
public viod printName(String name){
        String value
=getValueByName(String name);
        System.out.println(value);
    }

}

通过调用printName(String name)直接完成操作程Q将其中的私有属性处理成q程式的参数传递,该cMҎUa的行为类?/p>

        含有U有属性ƈ且含有对它赋值操作的cdƈ非都会调入该陷阱Q构造函数里q行对私有属性赋g会引起非法逻辑Q如下代?/p>

public class EagerSingleton{
    
private static EagerSingleton m_instance=new EagerSingleton();
    
private HashMap map==new HashMap();
    
    private
 EagerSingleton(){
        map.put(key,value);
//value为此时的实时数据
    }

   
public static agerSingleton getInstance(){
        
return m_instance;
    }

}

构造函数里不必要加U程安全关键字也可以保证U程安全Q因为类加蝲器是U程安全的,EagerSingleton只会在类加蝲的时候实例化一ơ,q样不会出现单例模式的线E不安全Q也不会造成非法逻辑?br />Q?Q陷阱四Q单例陷q传?br />        当含有对象作为单例类的私有属性时Q陷׃仅会出现在该cLw,q会传递到U有对象所在的cM。看如下代码Q?/p>

public class EagerSingleton{
    
private static EagerSingleton m_instance=new EagerSingleton();
    
private NewClass newClass=nll;
   
private EagerSingleton(){
        newClass
=new NewClass();
    }
;
   
public static agerSingleton getInstance(){
        
return m_instance;
    }

   
public viod printName(String name){
        String value
=newClass.operationByNameAndReturnValue(String name);
        System.out.println(value);
    }

}
乍一看,代码中除了构造函数对U有属性进行了初始化操作,其他地方没有对私有属性的赋|不会引v非法逻辑陷阱。其实这个赋值操作可能隐含在newClass.operationByNameAndReturnValue(String name)操作Q只有保证了NewClass的operationByNameAndReturnValue操作不会对它的私有属性赋值操作,才能保证真正的合理逻辑。同P只有保证NewClass的operationByNameAndReturnValue操作没有掉入讉K互斥资源陷阱Q才能真正保证EagerSingleton没有掉入该陷阱?br />        消除该陷qҎQ(1Q类Ҏ的名U要合理Q比如纯_的行ؓҎ名:interprete,excute,operation之类的方法中׃该含有对U有属性直接或者间接的赋值操作,每个Ҏ的责任要明确。(2Q单例类中尽量不要含有非单例cȝ实例作ؓU有属性(容器c除外)Q一定要有类的实例作为私有属性的时候,重新审视q个作ؓU有属性的c,是不是也应该设计成单例类Q或者保证对它的初始化赋值限制在构造函数内?/div>


]]>
Java & Pxxhttp://www.aygfsteel.com/onlykeke/archive/2006/09/13/69339.html奇葛?/dc:creator>奇葛?/author>Wed, 13 Sep 2006 03:42:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/09/13/69339.htmlhttp://www.aygfsteel.com/onlykeke/comments/69339.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/09/13/69339.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/69339.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/69339.html
Yakov Fain:在世界上有许多不同的语言。有些h在说一些新语言的出C对Java构成威胁Q你认ؓ呢? 
James Gosling:不,我不q么认ؓ。最q出现的大部分语a都是脚本型语aQ例如:象PHP和RubyQ这些都是完的pȝ。它们的强大是因为经q了Ҏ的处理化Q因此所有这些h们谈论的令他们今天很兴奋的语a都仅仅是用来产生Web面的。因此你们只是想生成一个网,他们会做得很好。但是在应用领域别指望它们能有更大的做ؓQ因Z们都有严重的性能问题。在所有这些动态语a中,如果你试着用它们编写一些对执行有严D求的东西Q那么它们都会可怕地p|。如果你写一个语句a = b + cQ在性能差异上,Java与PHP相比可能完全一栗它们真正优良的地方在于它们都专注于一个领域,他们会在那个领域的~程更加单。我们一直在做的是在工具之外获得更多的化,我们做了大量的工作来辑ֈ单性和功能强大性之间的一个^衡点。他们彼此之间是怺依存Q相互排斥的。构建具有强大功能的pȝQ恰恰要有几分复杂性。正是因P世界才相互联p,极大地帮助你q行的系l有了可以gl的框架。利用PHPQ你能将Web表现层的内容做得很好。你不要用PHPd一个星际导航的cd。这个它做不到?

    另一个与之有关的是Microsoft的C#。很隑֜一个水q上批评C#Q因Z们就是拷贝了Java规范。那是我们担心他们会做出一些创新的东西的时刻,但他们没有,他们没有选择借鉴。很明显Q他们只是集中于一个开发^台?
我们试和所有的q些语言一起工作。我们知道有许多人在谈论Java与X相比或Java与Y相比如何如何。我们在努力工作来保证Java与PHP或Java与Python相结合在一赗这样你能用PHP做Web的表现层。许多的人用PHP做Web的表现层Q用Java来做分析部分的工作,因ؓJava在做高质量的分析工作斚w真的是太了?

    Z以上的分析, Ruby、PHP、Python{脚本语a惌越Java?NetQ困难挺大的。就我个言Q我喜欢~程语言的多h,Ƣ迎Ruby、PHP、Python{脚本语a的流行。因为它们会促进新思想和新语言的诞生。那么,十年之后能替换Java?Net的语a会出现吗Q如果出现这L语言Q会是Ruby、PHP、Python{脚本语a吗?或者是一门新的X语言呢?我的回答是一切皆有可能?br />

]]>
How proxool workshttp://www.aygfsteel.com/onlykeke/archive/2006/08/24/65519.html奇葛?/dc:creator>奇葛?/author>Thu, 24 Aug 2006 07:06:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/08/24/65519.htmlhttp://www.aygfsteel.com/onlykeke/comments/65519.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/08/24/65519.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/65519.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/65519.html[http://proxool.sourceforge.net/howitworks.html]
Proxool acts as a proxy. That is, when you ask it to do something it delegates that task to another JDBC driver (you can use whatever driver you like). This has an important benefit: you can switch from any JDBC driver to Proxool by simply making a few configuration changes. The standard life cycle of asking the DriverManager for a Connection and then closing that Connection when you have finished with it remains unchanged.

Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
connection = DriverManager.getConnection(url);
...
connection.close();

When the ProxoolDriver gives you a Connection it actually gives you a ProxyConnection instead. The ProxyConnection does everything that a Connection does except that when you call the close() method it doesn't really close. Instead, it puts itself back into the pool.



]]>
Language Evaluations[by Eric Raymond]http://www.aygfsteel.com/onlykeke/archive/2006/08/20/64667.html奇葛?/dc:creator>奇葛?/author>Sun, 20 Aug 2006 14:10:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/08/20/64667.htmlhttp://www.aygfsteel.com/onlykeke/comments/64667.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/08/20/64667.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/64667.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/64667.html阅读全文

]]>
Captchahttp://www.aygfsteel.com/onlykeke/archive/2006/07/31/61069.html奇葛?/dc:creator>奇葛?/author>Mon, 31 Jul 2006 11:13:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/07/31/61069.htmlhttp://www.aygfsteel.com/onlykeke/comments/61069.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/07/31/61069.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/61069.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/61069.htmlcaptchaQ读韻ICapture Ya,逮着你了Q?br />    Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自?a class="bluekey" target="_blank">区分计算机和人类的图灉|?
    相关文章中提到这个项目:http://sam.zoy.org/pwntcha/Q个人感觉目前的识别法只能识别比较单的认证囑ŞQ要辑ֈ完整识别Q难度可比hcȝ陆火星?br />推荐文章
[http://kb.csdn.net/java/Articles/200606/ab079af9-0fe6-4b00-8efb-ace38c802542.html]
[http://william.cswiz.org/blog/archives/2005-03-18/captcha/]
[
http://jcaptcha.sourceforge.net/]
[
http://www.captcha.net/]


]]>
中文|址Q垃圾!Q!http://www.aygfsteel.com/onlykeke/archive/2006/07/31/61045.html奇葛?/dc:creator>奇葛?/author>Mon, 31 Jul 2006 08:44:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/07/31/61045.htmlhttp://www.aygfsteel.com/onlykeke/comments/61045.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/07/31/61045.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/61045.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/61045.html    l论Q中文网址Q垃圾!Q?br />

]]>
Java Pet Store开始全面用Web2.0 技术[转]http://www.aygfsteel.com/onlykeke/archive/2006/05/18/46899.html奇葛?/dc:creator>奇葛?/author>Thu, 18 May 2006 13:12:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/05/18/46899.htmlhttp://www.aygfsteel.com/onlykeke/comments/46899.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/05/18/46899.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/46899.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/46899.html Java Pet Store 开始全面用Web 2.0 技?/b>


伴随着Java EE 5 SDK(下蝲) ?/strong>发布,最新的 Pet Store (最初版) 开始全面启?Web 2.0 技术?

Sean ?Geertjan 都曾l对此有所介绍?Alexis q制作了一个短片向您展C怎样?NetBeans 中启?br /> 
Pet StoreQ?大型 ?Q?




]]>
JAVA EE 5.0[转]http://www.aygfsteel.com/onlykeke/archive/2006/05/18/46741.html奇葛?/dc:creator>奇葛?/author>Thu, 18 May 2006 01:35:00 GMThttp://www.aygfsteel.com/onlykeke/archive/2006/05/18/46741.htmlhttp://www.aygfsteel.com/onlykeke/comments/46741.htmlhttp://www.aygfsteel.com/onlykeke/archive/2006/05/18/46741.html#Feedback0http://www.aygfsteel.com/onlykeke/comments/commentRss/46741.htmlhttp://www.aygfsteel.com/onlykeke/services/trackbacks/46741.html
W一个商业的,比较完善的Java EE 5 实现
化开?-对编E模式的重新l织
支持EJB3.0--POJO
支持Java Persistence API , ORM更简?br />JAX-WS 2.0 以及 JAXB 2.0 使得开发web services 以及SOA应用更加便捷
JavaServer Faces 1.2--更简易开发AJAX
效率更高, 同时理和部|功能更强大
启动速度提高30%, 占用内存减少30%.
web services 效率提高臛_5?
web services 理更强?br />整合了NetBeans以及支持Eclipse plug-in
提供了整合NetBeans的可视化的SOA 开发以及部|?br />Sun's Java System Application Server PE 9.0是完全开源的

更详l的介绍看这里:
Update: An Introduction to the Java EE 5 Platform

下蝲地址Q?br />Java EE 5.0

]]>
վ֩ģ壺 | | | ¬| | Ͻ| ɽ| | | | | | | ݶ| Ͽ| | ָ| ij| ˹| ͷ| | | | | ʯȪ| Ӧ| | | | | | | ɽ| ɽ| ͸| | | С| | | |