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

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

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

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

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

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

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

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

          通過鐵路售票程序來理解實現多線程的兩種方法:通過java.lang.Thread類和通過Runnable接口
            java中有兩種實現多線程的方式。一是直接繼承Thread類,二是實現Runnable接口。那么這兩種實現多線程的方式在應用上有什么區別呢?
            為了回答這個問題,我們可以通過編寫一段代碼來進行分析。我們用代碼來模擬鐵路售票系統,實現通過四個售票點發售某日某次列車的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方法中的每一次循環都將總票數減1,模擬賣出一張車票,同時該車票號打印出來,直接剩余的票數到零為止。在ThreadDemo1類的main方法中,我們創建了一個線程對象,并重復啟動四次,希望通過這種方式產生四個線程。從運行的結果來看我們發現其實只有一個線程在運行,這個結果告訴我們:一個線程對象只能啟動一個線程,無論你調用多少遍start()方法,結果只有一個線程。
            我們接著修改ThreadDemo1,在main方法中創建四個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
            }
           
            }
           
            }
           
            }

          這下達到目的了嗎?
            從結果上看每個票號都被打印了四次,即四個線程各自賣各自的100張票,而不去賣共同的100張票。這種情況是怎么造成的呢?我們需要的是,多個線程去處理同一個資源,一個資源只能對應一個對象,在上面的程序中,我們創建了四個ThreadTest對象,就等于創建了四個資源,每個資源都有100張票,每個線程都在獨自處理各自的資源。
            經過這些實驗和分析,可以總結出,要實現這個鐵路售票程序,我們只能創建一個資源對象,但要創建多個線程去處理同一個資源對象,并且每個線程上所運行的是相同的程序代碼。在回顧一下使用接口編寫多線程的過程。
           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--); 
            }
           
            }
           
            }
           
            }

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

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

                  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版本的問題,結果換了6.0版-》6.5版-》7.0版全都一樣,難道是我機子的問題?可是還原系統后用還是一樣的結果。


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

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

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

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

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


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


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

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




          總之把所有關于java.sun.com的東西都關掉就ok了應該是有5個
          posted @ 2010-02-22 09:32 Mison 閱讀(131) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 建宁县| 沈丘县| 乌审旗| 巢湖市| 肇源县| 方城县| 阿图什市| 深泽县| 日照市| 嘉祥县| 延边| 如东县| 新丰县| 师宗县| 铜山县| 永定县| 湖口县| 罗田县| 鹤壁市| 竹山县| 农安县| 西城区| 台江县| 德江县| 峡江县| 岳阳县| 绥芬河市| 呼图壁县| 英德市| 桐城市| 台北县| 临安市| 乐都县| 右玉县| 淮阳县| 丰镇市| 胶南市| 班戈县| 固安县| 仙游县| 寻乌县|