posts - 7,  comments - 0,  trackbacks - 0
            2010年3月3日
          編程語言
          首先要能跳出語言之爭及語言偏見,架構(gòu)師需要在中立的角度選擇最合適團隊的語言,避免在技術(shù)決策中加入過多個人喜好。在系統(tǒng)語言層面,主要可關(guān)注以下幾種
          Erlang, 會繼續(xù)在小圈子內(nèi)流行,業(yè)界應用Erlang技術(shù)最大的障礙不是Erlang技術(shù)本身,而在于缺乏這方面專業(yè)人才。
          Scala, 和Erlang不同,Scala有成熟JVM及豐富的周邊library,在異構(gòu)系統(tǒng)中集成也很容易,新項目使用Scala風險很小,所以Scala在新語言中應該有較大的提升優(yōu)勢。
          Go, 由于剛開始推出,不適合正式項目使用,2010年會穩(wěn)步上升,可適當關(guān)注。
          其他語言基本保持現(xiàn)狀。java論壇

          架構(gòu)
          LAMP中的Linux, Apache, MySQL會受到云計算中的App Engine模式的沖擊,因為App Engine在分布式處理,可擴展性,穩(wěn)定性方面都有很大的優(yōu)勢。 在App Engine模式中,MySQL作用會降低,退化成一種存儲服務(wù)。而且App Engine的存儲服務(wù)含義會更廣泛,傳統(tǒng)架構(gòu)中的MySQL, Memcached, 及key value store在App Engine框架下都會以底層的服務(wù)方式提供。存儲不再是軟件,而是一種可靠服務(wù),因此也會帶來分布式存儲相關(guān)技術(shù)的繁榮。

          Web 2.0的設(shè)計中,Cache會成為一個中心元素。傳統(tǒng)的web應用cache只是一個可選的錦上添花層,即使去掉,PHP + MySQL這種模式也可正常運行。但隨著未來應用social化及realtime的趨勢,從facebook及twitter的設(shè)計來看,cache已經(jīng)從可選層成為核心層。cache設(shè)計的好壞直接決定架構(gòu)的成敗。

          由于web發(fā)展的趨勢會使應用更realtime化,體現(xiàn)到技術(shù)層面是HTML5(websockets)及類似技術(shù)具有更高的價值。但由于阻礙生產(chǎn)力的IE存在,HTML5無法一步到位。建議關(guān)注能解決HTML5及舊ajax自適應的框架。

          網(wǎng)絡(luò)模型方面,由于多核的硬件環(huán)境,輕量級的進程模型值得采用。如傳統(tǒng)的C++ boost的asio, 各公司自己實現(xiàn)的coroutine, Erlang的process, go的goroutines, Java/Scala的Netty/Mina框架等。但C++框架的代碼優(yōu)雅性可維護性欠佳,性能也沒有突出的優(yōu)勢,可關(guān)注后面幾種方案。

          分布式方面,Dynamo及Chubby的思想會逐漸在國內(nèi)的項目等到更廣泛的應用,架構(gòu)師會逐步丟棄雙寫,雙機心跳等山寨式的容錯設(shè)計思想,可靠的分布式設(shè)計思想會更普及。

          存儲
          2009是key value/nosql產(chǎn)品百花齊放的年代。到2010年,它們之中優(yōu)秀的會脫穎而出逐步主流化,主流化的產(chǎn)品周邊的工具會更豐富,運維相關(guān)經(jīng)驗也會更成熟。目前阻礙很多key value產(chǎn)品推廣很大一個障礙是運維的顧慮,而不是它們本身的性能。究竟會是Memcachedb/Tokyo Cabinet/Redis這樣的小巧軟件走向主流,還是Cassandra這樣的巨無霸更受歡迎,我們拭目以待。
          posted @ 2010-03-03 09:33 Mison 閱讀(124) | 評論 (0)編輯 收藏
            2010年3月2日

          備忘下地址,Black設(shè)計模式解析的還不錯。http://hi.baidu.com/misoner/blog/item/2334e388d8defd749e2fb429.html
          posted @ 2010-03-02 10:18 Mison 閱讀(111) | 評論 (0)編輯 收藏
            2010年2月26日
          posted @ 2010-02-26 09:23 Mison 閱讀(244) | 評論 (0)編輯 收藏
            2010年2月23日
          裝載:Mison(邁勝)http://bbs.misonsoft.com/thread-1225-1-2.html

          通過鐵路售票程序來理解實現(xiàn)多線程的兩種方法:通過java.lang.Thread類和通過Runnable接口
            java中有兩種實現(xiàn)多線程的方式。一是直接繼承Thread類,二是實現(xiàn)Runnable接口。那么這兩種實現(xiàn)多線程的方式在應用上有什么區(qū)別呢?
            為了回答這個問題,我們可以通過編寫一段代碼來進行分析。我們用代碼來模擬鐵路售票系統(tǒng),實現(xiàn)通過四個售票點發(fā)售某日某次列車的100張車票,一個售票點用一個線程表示。
            我們首先這樣編寫這個程序:
           public class ThreadDome1
            
          public static void main(String[] args)
            ThreadTest t 
          = new ThreadTest(); 
            t.start(); 
            t.start(); 
            t.start(); 
            t.start(); 
            }
           
            }
           
            
          class ThreadTest extends Thread
            
          private int ticket = 100
            
          public void run()
            
          while(true)
            
          if(ticket > 0)
            System.out.println(Thread.currentThread().getName() 
          + 
            
          "is saling ticket" + ticket--); 
            }
          else
            
          break
            }
           
            }
           
            }
           
            }
          上面的代碼中,我們用ThreadTest類模擬售票處的售票過程,run方法中的每一次循環(huán)都將總票數(shù)減1,模擬賣出一張車票,同時該車票號打印出來,直接剩余的票數(shù)到零為止。在ThreadDemo1類的main方法中,我們創(chuàng)建了一個線程對象,并重復啟動四次,希望通過這種方式產(chǎn)生四個線程。從運行的結(jié)果來看我們發(fā)現(xiàn)其實只有一個線程在運行,這個結(jié)果告訴我們:一個線程對象只能啟動一個線程,無論你調(diào)用多少遍start()方法,結(jié)果只有一個線程。
            我們接著修改ThreadDemo1,在main方法中創(chuàng)建四個Thread對象:
           public class ThreadDemo1
            
          public static void main(String[] args)
            
          new ThreadTest().start(); 
            
          new ThreadTest().start(); 
            
          new ThreadTest().start(); 
            
          new ThreadTest().start(); 
            }
           
            }
           
            
          class ThreadTest extends Thread
            
          private int ticket = 100
            
          public void run()
            
          while(true)
            
          if(ticket > 0)
            System.out.println(Thread.currentThread().getName() 
          + 
            
          " is saling ticket" + ticket--); 
            }
          else
            
          break
            }
           
            }
           
            }
           
            }

          這下達到目的了嗎?
            從結(jié)果上看每個票號都被打印了四次,即四個線程各自賣各自的100張票,而不去賣共同的100張票。這種情況是怎么造成的呢?我們需要的是,多個線程去處理同一個資源,一個資源只能對應一個對象,在上面的程序中,我們創(chuàng)建了四個ThreadTest對象,就等于創(chuàng)建了四個資源,每個資源都有100張票,每個線程都在獨自處理各自的資源。
            經(jīng)過這些實驗和分析,可以總結(jié)出,要實現(xiàn)這個鐵路售票程序,我們只能創(chuàng)建一個資源對象,但要創(chuàng)建多個線程去處理同一個資源對象,并且每個線程上所運行的是相同的程序代碼。在回顧一下使用接口編寫多線程的過程。
           public class ThreadDemo1
            
          public static void main(String[] args)
            ThreadTest t 
          = new ThreadTest(); 
            
          new Thread(t).start(); 
            
          new Thread(t).start(); 
            
          new Thread(t).start(); 
            
          new Thread(t).start(); 
            }
           
            }
           
            
          class ThreadTest implements Runnable
            
          private int tickets = 100
            
          public void run()
            
          while(true)
            
          if(tickets > 0)
            System.out.println(Thread.currentThread().getName() 
          + 
            
          " is saling ticket " + tickets--); 
            }
           
            }
           
            }
           
            }

          上面的程序中,創(chuàng)建了四個線程,每個線程調(diào)用的是同一個ThreadTest對象中的run()方法,訪問的是同一個對象中的變量(tickets)的實例,這個程序滿足了我們的需求。在Windows上可以啟動多個記事本程序一樣,也就是多個進程使用同一個記事本程序代碼。
            可見,實現(xiàn)Runnable接口相對于繼承Thread類來說,有如下顯著的好處:
            (1)適合多個相同程序代碼的線程去處理同一資源的情況,把虛擬CPU(線程)同程序的代碼,數(shù)據(jù)有效的分離,較好地體現(xiàn)了面向?qū)ο蟮脑O(shè)計思想。
            (2)可以避免由于Java的單繼承特性帶來的局限。我們經(jīng)常碰到這樣一種情況,即當我們要將已經(jīng)繼承了某一個類的子類放入多線程中,由于一個類不能同時有兩個父類,所以不能用繼承Thread類的方式,那么,這個類就只能采用實現(xiàn)Runnable接口的方式了。
            (3)有利于程序的健壯性,代碼能夠被多個線程共享,代碼與數(shù)據(jù)是獨立的。當多個線程的執(zhí)行代碼來自同一個類的實例時,即稱它們共享相同的代碼。多個線程操作相同的數(shù)據(jù),與它們的代碼無關(guān)。當共享訪問相同的對象時,即它們共享相同的數(shù)據(jù)。當線程被構(gòu)造時,需要的代碼和數(shù)據(jù)通過一個對象作為構(gòu)造函數(shù)實參傳遞進去,這個對象就是一個實現(xiàn)了Runnable接口的類的實例。
          posted @ 2010-02-23 09:19 Mison 閱讀(188) | 評論 (0)編輯 收藏
            2010年2月22日
          SCWCD(Sun Certified Web Component Developer)是SUN推出的一個認證,主要是考察開發(fā)者對網(wǎng)絡(luò)組件開發(fā)的熟悉程度,如果想考取該認證必須先要取得SCJP的認證。

                  考試的費用在中國大陸是1500RMB(不知道價格是否有變),考試的內(nèi)容主要有:

                  1)The Servlet Technology Model

                  2)The Structure and Deployment of Web Application

                  3)The Web Container Model

                  4)Session Management

                  5)Web Application Security

                  6)The JavaServer Pages(JSP) Technoloty Model

                  7)Buliding JSP Pages Using the Expression Language(EL)

                  8)Building JSP Pages Using Standard Actions

                  9)Building JSP Pages Using Tag Libraries

                  10)Building a Custom Tag Library

                  11)Java EE Patterns

          學習資料:
          http://bbs.misonsoft.com/forum-19-1.html
          posted @ 2010-02-22 16:51 Mison 閱讀(224) | 評論 (0)編輯 收藏
          在用[MyEclipse] 寫代碼很容易卡死機,尤其是在對JSP文件的<%%>之間寫代碼的時候,只要一彈出智能提示就立刻卡死,程序失去響應,我以為是MyEclipse版本的問題,結(jié)果換了6.0版-》6.5版-》7.0版全都一樣,難道是我機子的問題?可是還原系統(tǒng)后用還是一樣的結(jié)果。


          在網(wǎng)上找了很久才知道,是MyEclipse在智能提示的時候自動訪問網(wǎng)絡(luò)上sun公司的最新API文檔,只要關(guān)閉掉網(wǎng)絡(luò)連接就可以了。我試了試斷開網(wǎng)絡(luò)然后在用MyEclipse寫代碼,結(jié)果還真的搞定了。可是,我總不能因為個這就不上網(wǎng)了吧,終于,找到了兩全其美的解決方法。

          在自己創(chuàng)建的工程名上右鍵,選擇Properties》在打開的窗口中點擊Java Build Path》單擊Libraries選項卡,找到

          JRE System Libraries->charsets.jar->Javadoc location

          選中Javadoc location,再選擇右邊的Remove,更改成Javadoc location: (None),點擊OK。
          接下來在寫代碼的時候就不會再卡死了。

          MyEclipse 6.5編寫jsp代碼時聯(lián)想輸入無響應解決方法   
          很頭疼的一個問題,在jsp頁面輸入“.”之后,MyEclipse往往會出現(xiàn)無響應,要等上好幾分鐘才能恢復正常,找了很多方法,下面這個方法是最有效的,其實很簡單:


          Window-->java-->Installed JREs-->選中你的版本-->Edit-->選中jar包-->Javadoc Location 那里有個path
          把path下面的地址去掉就OK了!


          原因就是在引用javax.servelet.jar這個包中的javadoc location 位置設(shè)置的sun官方網(wǎng)站。這樣每次提示的時候都要去sun官方網(wǎng)站去找doc所以導致MyEclipse會無響應,當禁用網(wǎng)卡或者拔掉網(wǎng)線的時候,就不會出現(xiàn)這種情況http://java.sun.com/j2se/1.5.0/docs/api/

          裝載:http://bbs.misonsoft.com/thread-920-1-2.html




          總之把所有關(guān)于java.sun.com的東西都關(guān)掉就ok了應該是有5個
          posted @ 2010-02-22 09:32 Mison 閱讀(131) | 評論 (0)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 荃湾区| 河源市| 武陟县| 宽城| 禹城市| 江华| 扎兰屯市| 英德市| 深水埗区| 大庆市| 济源市| 凭祥市| 湛江市| 寿光市| 遂昌县| 法库县| 太仆寺旗| 仁化县| 岳阳市| 凌海市| 陕西省| 南充市| 海门市| 芷江| 聊城市| 保德县| 民权县| 东港市| 浏阳市| 于田县| 绍兴县| 册亨县| 正定县| 宁乡县| 大渡口区| 山东| 侯马市| 江源县| 乌兰浩特市| 类乌齐县| 鄂托克旗|