深藍色心情
過來聊聊~~~~
BlogJava
::
首頁
::
聯(lián)系
::
聚合
::
管理
31 Posts :: 0 Stories :: 46 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(7)
給我留言
查看公開留言
查看私人留言
我參與的團隊
隨筆分類
Java(20)
商業(yè)新聞(2)
游戲
軟件安裝入門(3)
非技術(shù)收藏
隨筆檔案
2012年7月 (1)
2012年2月 (1)
2012年1月 (1)
2011年12月 (1)
2011年11月 (2)
2011年8月 (2)
2011年7月 (2)
2011年5月 (1)
2011年3月 (1)
2011年2月 (1)
2011年1月 (1)
2010年12月 (1)
2010年10月 (3)
2010年6月 (2)
2010年5月 (3)
2010年4月 (2)
2006年2月 (1)
2006年1月 (2)
2005年12月 (1)
2005年11月 (2)
搜索
最新評論
1.?re: show下我做的消息提醒的chrome插件,免費使用,呵呵(有效果圖)
很好很有趣
頂!
--iLinux
2.?re: 對于12306,我的完整技術(shù)方案
最近這方面的討論好多啊。
--何楊
3.?re: chrome擴展程序“超級提醒”,源代碼開放!
支持開源啊
--Dahai
4.?re: show下我做的消息提醒的chrome插件,免費使用,呵呵(有效果圖)
評論內(nèi)容較長,點擊標題查看
--深藍色心情
5.?re: guzz 1.3.0大版本發(fā)布,支持Spring事務(wù)
不錯啊
--tb
閱讀排行榜
1.?show下我做的消息提醒的chrome插件,免費使用,呵呵(有效果圖)(8757)
2.?數(shù)據(jù)庫分切設(shè)計何必糾結(jié)于hibernate shard模式,應(yīng)該簡單化了(4224)
3.?3行代碼,實現(xiàn)IP到地理位置的反查功能(3432)
4.?guzz使用效果和經(jīng)驗技巧分享(3410)
5.?改進架構(gòu),實現(xiàn)動態(tài)數(shù)據(jù)源,降低java維護(2967)
評論排行榜
1.?3行代碼,實現(xiàn)IP到地理位置的反查功能(9)
2.?show下我做的消息提醒的chrome插件,免費使用,呵呵(有效果圖)(7)
3.?guzz1.2.9更新發(fā)布,支持選舉服務(wù)(6)
4.?改進架構(gòu),實現(xiàn)動態(tài)數(shù)據(jù)源,降低java維護(5)
5.?數(shù)據(jù)庫分切設(shè)計何必糾結(jié)于hibernate shard模式,應(yīng)該簡單化了(5)
2011年11月24日
#
萬眾期待的guzz新版終于發(fā)布啦!各種期待的功能噢~~
親愛的你萌是不是覺得哀家已經(jīng)放棄了小谷子,不不不,原因只是因為哀家最近比較懶木有更新而已。哀家每年總有那么十來個月是比較懶的~~【望天
不過,這次更新絕對有貨!在7月中發(fā),也用來紀念我家的小桔梗殿下吧。
guzz 1.3.1 20120712更新介紹:
大版本更新噢:
1. 動態(tài)拼接SQL終于發(fā)布啦,等的花都謝了。現(xiàn)在,乃可以寫一個有條件的sql語句,然后在執(zhí)行時,guzz娘會根據(jù)傳入的參數(shù)構(gòu)造成真正需要的sql語句,然后再綁定參數(shù)執(zhí)行。古娘默認是基于Velocity模板實現(xiàn)的,于是動態(tài)SQL拼接的語法、靈活性、易用性、學(xué)習(xí)成本是絕對足夠的,velocity文檔也是絕對的豐富和成熟。來仔細瞧瞧吧:
http://code.google.com/p/guzz/wiki/TutorialTemplatedSQLService?wl=zh-Hans
2. 受夠了一個一個的添加域?qū)ο蟮絞uzz.xml中?是解放自己的時候啦。面對著大半年來的各種訴求,1.3.1版這次終于良心發(fā)現(xiàn),增加了package-scan功能【淚目】。咱們也可以掃描文件并批量添加business啦。介是這個腦殘:
http://code.google.com/p/guzz/wiki/TutorialHbmPackageScan?wl=zh-Hans
3. 在SQL中寫時間串就報錯? 雖然是小功能,但轉(zhuǎn)義字符支持這次還是放出來啦。不害怕SQL注入,一門心思拼接SQL語句的孩紙們請看這里:
http://code.google.com/p/guzz/wiki/TutorialGuzzXml?wl=zh-Hans#sql語句中特殊字符轉(zhuǎn)義
。搞死就這么玩吧,勇士們自己被黑了求別黑我家小谷子。
4. JDNI數(shù)據(jù)源這次也支持啦。感謝波波提供的代碼。借機也感謝波波提供的其他代碼。
http://code.google.com/p/guzz/wiki/TutorialDatasourceProvider?wl=zh-Hans#guzz內(nèi)置連接池實現(xiàn)
5. 其他小功能和bug修正,本宮就不廢話了。親愛的你萌有興趣就自己去對比SVN代碼吧。
下面照例復(fù)制下宣傳介紹。
什么是guzz?
guzz是一套用于多數(shù)據(jù)庫編程的Java ORM框架,用于替代hibernate和ibatis,實現(xiàn)在一套系統(tǒng)中輕松使用多臺數(shù)據(jù)庫。guzz同時提供通用數(shù)據(jù)計算和配置管理等,簡化系統(tǒng)復(fù)雜度,為系統(tǒng)在數(shù)據(jù)層的設(shè)計提供一站式解決方案。
guzz主要功能與特點:
現(xiàn)代大規(guī)模系統(tǒng)設(shè)計,技術(shù)上吸收了ibatis/hibernate的優(yōu)點
支持應(yīng)用程序使用大量的數(shù)據(jù)庫和主從讀寫分離
支持數(shù)據(jù)庫表在多組機器間水平分布(Shard),并自動維護多組機器之間的分布式事務(wù)
支持1張表按照業(yè)務(wù)規(guī)則分切成多張小表(Shadow),并支持每張小表擁有自己特殊的屬性字段(Custom)
支持1張大表分切后的小表,分布到不同的數(shù)據(jù)庫中(VirtualDB)
支持超越范式的特殊關(guān)聯(lián)、非結(jié)構(gòu)化數(shù)據(jù)等異構(gòu)資源POJO模式的統(tǒng)一讀取
支持組件化服務(wù)(SOA)和服務(wù)相互依賴,構(gòu)建企業(yè)/項目實施基礎(chǔ)平臺
提供面向?qū)ο蟮臄?shù)據(jù)庫讀取標簽(JSP Taglib),加快頁面展示層的快速變更、開發(fā)與部署
對于大部分場景,支持像hibernate一樣的對象持久、映射和方便的增刪改查,提高開發(fā)效率
對于復(fù)雜場景,支持像ibatis一樣,讓DBA參與SQL設(shè)計的復(fù)雜數(shù)據(jù)庫操作和優(yōu)化,以及SQL在線調(diào)試
更簡潔、更好用、更容易控制的批操作接口
支持在線加載與調(diào)試SQL。按照應(yīng)用策略,從文件/數(shù)據(jù)庫/Web Service等途徑,動態(tài)提取與使用SQL語句(Dynamic SQL)
支持配置管理服務(wù)器,可以使用一套軟件系統(tǒng)對所有應(yīng)用程序的配置進行統(tǒng)一管理
項目地址:
http://code.google.com/p/guzz/
文檔:
http://code.google.com/p/guzz/wiki/AboutGuzz?tm=6
下載:
http://code.google.com/p/guzz/downloads/list
新浪微博:
http://weibo.com/guzzframework
扣扣群:
36429094 218658794
Mail List:
https://lists.sourceforge.net/lists/listinfo/guzz-mail-users
posted @
2012-07-18 08:32
深藍色心情 閱讀(1556) |
評論 (0)
|
編輯
收藏
guzz1.3.0 多配置文件支持發(fā)布
guzz 1.3.0 20120222更新介紹:
本次為改進型更新:
1. 增加了默認的多properties配置文件支持。方便配置管理和部署。詳細介紹[url] http://code.google.com/p/guzz/wiki/TutorialAppProperties?wl=zh-Hans[/url]
2. WriteTemplate增加了2個新接口,方便更好的進行sql語句直接操作。
3. 修正了打印sql語句的錯誤配置方式。
什么是guzz?
guzz是一套用于多數(shù)據(jù)庫編程的ORM框架,用于替代hibernate和ibatis,實現(xiàn)在一套系統(tǒng)中輕松使用多臺數(shù)據(jù)庫。guzz同時提供通用數(shù)據(jù)計算和配置管理等,簡化系統(tǒng)復(fù)雜度,為系統(tǒng)在數(shù)據(jù)層的設(shè)計提供一站式解決方案。
guzz主要功能與特點:
現(xiàn)代大規(guī)模系統(tǒng)設(shè)計,技術(shù)上吸收了ibatis/hibernate的優(yōu)點
支持應(yīng)用程序使用大量的數(shù)據(jù)庫和主從讀寫分離
支持數(shù)據(jù)庫表在多組機器間水平分布(Shard),并自動維護多組機器之間的分布式事務(wù)
支持1張表按照業(yè)務(wù)規(guī)則分切成多張小表(Shadow),并支持每張小表擁有自己特殊的屬性字段(Custom)
支持1張大表分切后的小表,分布到不同的數(shù)據(jù)庫中(VirtualDB)
支持超越范式的特殊關(guān)聯(lián)、非結(jié)構(gòu)化數(shù)據(jù)等異構(gòu)資源POJO模式的統(tǒng)一讀取
支持組件化服務(wù)(SOA)和服務(wù)相互依賴,構(gòu)建企業(yè)/項目實施基礎(chǔ)平臺
提供面向?qū)ο蟮臄?shù)據(jù)庫讀取標簽(JSP Taglib),加快頁面展示層的快速變更、開發(fā)與部署
對于大部分場景,支持像hibernate一樣的對象持久、映射和方便的增刪改查,提高開發(fā)效率
對于復(fù)雜場景,支持像ibatis一樣,讓DBA參與SQL設(shè)計的復(fù)雜數(shù)據(jù)庫操作和優(yōu)化,以及SQL在線調(diào)試
更簡潔、更好用、更容易控制的批操作接口
支持在線加載與調(diào)試SQL。按照應(yīng)用策略,從文件/數(shù)據(jù)庫/Web Service等途徑,動態(tài)提取與使用SQL語句(Dynamic SQL)
支持配置管理服務(wù)器,可以使用一套軟件系統(tǒng)對所有應(yīng)用程序的配置進行統(tǒng)一管理
項目地址:
http://code.google.com/p/guzz/
文檔:
http://code.google.com/p/guzz/wiki/AboutGuzz?tm=6
下載:
http://code.google.com/p/guzz/downloads/list
新浪微博:
http://weibo.com/guzzframework
扣扣群:
36429094
Mail List:
https://lists.sourceforge.net/lists/listinfo/guzz-mail-users
posted @
2012-02-22 15:29
深藍色心情 閱讀(1328) |
評論 (0)
|
編輯
收藏
對于12306,我的完整技術(shù)方案
12306主要就是賣票比較復(fù)雜,注冊登錄之類的功能就不說了。
有網(wǎng)友說,12306賣票系統(tǒng)比航空復(fù)雜,因為要分段賣,航空只有起點和終點,火車中間還有好多站。不過好消息是,這些站在售票時是連續(xù)的,不會出現(xiàn)1張票跳著站買的情況,這樣就可以把一張票拆成N張只有起點和終點的票,和航空售票一樣了。
賣票分為兩部分,查詢和購買。12306目前提供了單獨的查詢,我覺得這個其實挺好的,至少有讀寫分離的思想;不過延遲10分鐘的數(shù)據(jù),肯定沒什么人愿意用,大家還是要擠進購買系統(tǒng)查詢。單獨的查詢相當(dāng)于擺設(shè)了,沒有發(fā)揮作用。要讓查詢系統(tǒng)有效,尤其是春運期間,延遲應(yīng)該在30秒之內(nèi)。
查詢剩余票數(shù)設(shè)計:
查詢的特點是按照車次信息或者時間查,車次和時間一般都不會變,因此在設(shè)計時,可以把頁面分成兩部分。一是匹配的車次列表信息,如北京到上海有哪些車,這個結(jié)果可以用CDN緩存。車次基本是固定的,緩存設(shè)置為10分鐘應(yīng)該就能滿足需要。不占用負載。在瀏覽器拿到這個頁面后,通過異步請求,根據(jù)每趟車的編號二次查詢剩余票數(shù)等實時數(shù)據(jù),合并顯示。
車次查詢時,把車次信息分庫存儲,并作冗余存儲。好比這個庫提供所有北京->xxx的查詢,這個庫提供上海到xxx的查詢,這個庫提供廣州到xx的查詢,剩下的在一個大庫中等。車次變化很小,庫可以分散存,而且可以冗余存儲。用內(nèi)存表也行,總數(shù)據(jù)量也不多,性能上沒什么可說的。
對于實時票數(shù),確實是比較困難的,網(wǎng)上很多方案都不對,沒有考慮中間站的問題。剩余票數(shù)緩存并不好做。我的想法是,提前分好票,然后用單獨的數(shù)據(jù)結(jié)構(gòu)做緩存。
例如,對于G113高鐵,共有8站:北京、德州、濟南、徐州、南京、常州、蘇州、上海。假設(shè)它有兩千張票,座位啊臥鋪啊啥的。在發(fā)票前,創(chuàng)建新表20120113_G113,然后把2000張票提前插入到表中,每個票都有一個本表內(nèi)唯一的數(shù)字編號。表結(jié)構(gòu)基本上就是:編號、起始站、終點站、座位類型、車廂、座位號、乘客姓名、乘客證件號碼、車票狀態(tài)等實際業(yè)務(wù)模型需要。初始化時,起點站就是北京(根據(jù)順序存儲為1),終點站就是上海(根據(jù)順序存儲為8),乘客信息空著表示尚未綁定乘客,車票狀態(tài)置為“待出售”。
這樣我們要查詢2012年1月13號G113 濟南->南京 的剩余票數(shù)時,就查詢20120113_G113起始站編號大于等于3并且小于等于5,并且狀態(tài)為“待出售”的記錄數(shù)就行了。
每張表2000條數(shù)據(jù),對于非春運時節(jié),性能完全足夠。對于春運時節(jié),非繁忙路段,性能應(yīng)該也足夠了。對于春運繁忙期,繼續(xù)看下面的。
車票出售基本流程:
用戶選擇車票并要求購買,系統(tǒng)鎖定票并標記狀態(tài)為“鎖定中”,讓用戶付款等。完成后標記車票為“已經(jīng)發(fā)售”,并且更新用戶信息到車票的持有人信息字段中。此票不再出售。
對于中間站購票,假設(shè)用戶購買了 濟南->南京 ,前面流程不變。但完成出票后,將車票起始和終點站改為“濟南”和“南京”,并且自動插入兩張新票可用。一張是“北京->濟南”,一張是“南京->上海”,通知隊列更新相關(guān)緩存。相當(dāng)于車票做了自動分裂。這樣我們設(shè)計時只需要把一張票設(shè)計為“只有起點和終點”就行了。
更高效的剩余票數(shù)查詢設(shè)計:
數(shù)據(jù)庫的count操作并不快,因此對于繁忙季節(jié)的繁忙表,每次都count是鐵定不行的。我想到的一個辦法是:把上面提到的預(yù)售車票表加載到內(nèi)存中。我們用一個64位long類型數(shù)字表示一張車票,每趟車的每種座位類型是一個long數(shù)組。
對于每個long數(shù)字,前面的32位用來順序存儲32個車站(假設(shè)一趟車最多有32個站,沒查過,不行可以放長點),每一位標記“車票是否包含此站”。如G113 濟南到南京的票(車站順序為第3到第5站),long數(shù)字的第2到第4位設(shè)置為1,其他前32位設(shè)置為0。后面的32位用來表示車票在車票出售表中的唯一編號。這樣根據(jù)一個long類型數(shù)字,我們就能表述一張票的發(fā)售信息了。
比如2012年1月13號G113,有軟臥500張和硬臥1500張。那就需要兩個數(shù)組。20120113_G113_軟臥 對應(yīng)一個長度500的long數(shù)組;20120113_G113_硬臥 對應(yīng)一個長度1500的long數(shù)組。存儲所有售票信息。
有點類似BitSet的感覺,對空間要求不高。我們可以做個系統(tǒng)把所有車票信息按照這種結(jié)構(gòu)加載到內(nèi)存中。對于實時查票,如查詢2012年1月13號G113車次 濟南->南京 的余票,就是遍歷兩個數(shù)組,檢查位數(shù)為2和4的long數(shù)字有多少個,就直接獲得了軟臥和硬臥的剩余票數(shù)。對于現(xiàn)代計算機,這點遍歷,時間是納秒級的。
當(dāng)車票被出售后,從long數(shù)組中刪除票信息,比如先置為-1表示已經(jīng)無效。再用后臺線程實際刪除(避免寫沖突,將刪除延遲到重建一個數(shù)組所消耗的多少納秒內(nèi)剛好沒有寫請求的時間段中)。如果long數(shù)組長度為0,那就是沒有車票了,直接返回0;用戶再怎么刷,也不會干擾數(shù)據(jù)庫。
更高效的剩余票數(shù)查詢方案的擴展性和容錯性:
本身車票是按照車次劃分的,同時也有時間維度,橫向擴展不存在任何問題。
long數(shù)組可以根據(jù)數(shù)據(jù)庫票務(wù)信息重新構(gòu)造,而且成本不高(一條“select * from xxx where 狀態(tài)=待發(fā)售” SQL語句)。在硬件故障,擴容機器,或是發(fā)現(xiàn)數(shù)據(jù)不一致時,重新構(gòu)造數(shù)組就行。而且可以從后臺異步做。擴展性和容錯性都不是問題。
售票交易與鎖票:
用戶查詢到有票后,填寫要購買的票數(shù),提交。好比購買兩張硬臥,流程如下:
1. 在20120113_G113_硬臥long數(shù)組中隨機獲取符合要求的順序的兩個long數(shù)字,并將其從數(shù)組中刪除;這個速度很快,納秒級;
2. 根據(jù)long數(shù)字后32位,從數(shù)據(jù)庫中鎖票。如果全部鎖定成功,設(shè)置票為預(yù)定狀態(tài),更新用戶預(yù)定信息,鎖票時間等。然后記錄日志等其他相關(guān)操作。如果鎖票失敗,說明在納秒級的時間內(nèi),票還是有沖突,購票失敗,直接返回報錯。鎖票就是數(shù)據(jù)庫行鎖,sql中的 select for update nowait。
3. 頁面提示錯誤,或者進入下一步交易流程,如網(wǎng)銀支付等。
在整個過程中,我們看到,用戶請求就算集中爆發(fā),事務(wù)的沖突性也能降低到“隨機獲取的long數(shù)組值剛好一樣 + 在cpu執(zhí)行2000個for循環(huán)的可能百萬分之一秒內(nèi)剛好同時提交”。我覺得沖突概率應(yīng)該很低很低。一趟車2000個車票,1:100比例也就20萬人同時搶,20萬人同1秒提交cpu也算的過來。而實際上,怎么可能一秒鐘有20萬人同時搶一趟車的票哪……
在整個過程中,大部分請求都被long數(shù)組消耗完后,直接檢查long數(shù)組長度為0,提示無票攔截。進入數(shù)據(jù)庫階段的,也就是比實際的票數(shù)多一點點的有效訂單而已。
回票:
中間站買票的,在預(yù)定成功后,車票自動分裂,分裂的票可以通過隊列調(diào)度實時的回到long數(shù)組中,繼續(xù)服務(wù)。
預(yù)定后不買的,可以通過預(yù)定時間的超時檢查,后臺做個線程,讓票回歸。
歡迎討論。
微博:
http://weibo.com/guzzframework
posted @
2012-01-16 19:48
深藍色心情 閱讀(2499) |
評論 (1)
|
編輯
收藏
chrome擴展程序“超級提醒”,源代碼開放!
chrome插件,用于統(tǒng)一提醒來自gmail, yahoo,hotmail,新浪微博。。。等多家主流網(wǎng)站的新郵件或新通知。喜歡的朋友可以加入此項目,繼續(xù)加對更多網(wǎng)站的支持!
http://code.google.com/p/notifyall/
posted @
2011-12-01 13:16
深藍色心情 閱讀(2021) |
評論 (1)
|
編輯
收藏
guzz 1.3.0大版本發(fā)布,支持Spring事務(wù)
摘要: guzz是一套用于多數(shù)據(jù)庫編程的ORM框架,實現(xiàn)在一套系統(tǒng)中輕松使用多臺數(shù)據(jù)庫。在這次更新中,您可以像配置Hibernate一樣配置Guzz,讓Spring進行聲明式的全局事務(wù)管理。Guzz Spring事務(wù)支持標準Spring事務(wù)的所有配置,除了嵌套事務(wù)和JTA。
閱讀全文
posted @
2011-11-24 08:43
深藍色心情 閱讀(1603) |
評論 (1)
|
編輯
收藏
Copyright @ 深藍色心情
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
亚洲精品成人片在线播放
|
亚洲剧情在线观看
|
亚洲成人免费在线观看
|
亚洲人成人无码.www石榴
|
亚洲国产高清精品线久久
|
亚洲国产精品免费视频
|
亚洲性无码一区二区三区
|
国产精品亚洲精品日韩已满
|
在线看免费观看AV深夜影院
|
国产大陆亚洲精品国产
|
久久丫精品国产亚洲av不卡
|
日本无卡码免费一区二区三区
|
最近的免费中文字幕视频
|
美女被爆羞羞网站在免费观看
|
2019中文字幕免费电影在线播放
|
亚洲乱码日产精品a级毛片久久
|
亚洲精品人成网线在线播放va
|
无码的免费不卡毛片视频
|
亚洲AV一宅男色影视
|
日韩高清在线免费观看
|
美女视频黄a视频全免费网站色窝
|
国内精品久久久久久久亚洲
|
91精品免费国产高清在线
|
无人视频免费观看免费视频
|
亚洲视频免费在线看
|
亚洲日韩小电影在线观看
|
国内自产拍自a免费毛片
|
99精品在线免费观看
|
jizz18免费视频
|
精品亚洲国产成人av
|
亚洲成人在线免费观看
|
久久久青草青青亚洲国产免观
|
久久精品免费观看
|
国产精品亚洲va在线观看
|
亚洲剧情在线观看
|
久久亚洲日韩看片无码
|
国产亚洲精品成人a v小说
|
成人A级毛片免费观看AV网站
|
国产成人亚洲综合在线
|
亚洲国产91在线
|
亚洲国产成人va在线观看网址
|