空難與軟件開發(fā)(一)
我并不是嗜好災難片電影或者紀錄片的。但是偶然的機會看了一兩集Air Crash Investigation,便被其深深吸引了。因為這些事故,和我們日常進行的軟件開發(fā)是如此的相似,有一些今天廣泛提倡的Best Practice實際上早就提出幾十年了。于是突發(fā)奇想,干脆總結總結。這是第一篇:美航1420... ...
Entity Framework 并發(fā)處理
什么是并發(fā)?并發(fā)分悲觀并發(fā)和樂觀并發(fā)。悲觀并發(fā):比如有兩個用戶A,B,同時登錄系統(tǒng)修改一個文檔,如果A先進入修改,則系統(tǒng)會把該文檔鎖住,B就沒辦法打開了,只有等A修改完,完全退出的時候B才能進入修改。樂觀并發(fā):同上面的例子,A,B兩個用戶同時登錄,如果A先進入修改緊跟著B也進入了。A修改文檔的同時B... ...
從“在winform里打開網(wǎng)頁功能”引發(fā)的問題探究
今天有個同事問了一下我,怎么在winform里面打開網(wǎng)頁啊?我們都是基于B/S的開發(fā),很少接觸winform,所以我當時就懵了,實在不知道怎么回答,所以索性說不知道。但是我又想了想,這個應該是個很簡單的功能,趁著今天工作不是很忙,我就研究一下吧。 首先,新建一個winform項目,我在想,如果想要實... ...
SQL Server 簡單模式下,誤刪除堆表記錄如何恢復
首先,我需要強調下,這篇主旨是揭示堆表的刪除記錄找回的原理,我所考慮的方面并不適用于每個人的每種情況,望大家見諒~ 很多朋友認為數(shù)據(jù)庫在簡單模式下,堆表誤刪除一條記錄,是無法找回的,因為沒有日志記錄。其實不然,某種意義上是可以找回的,因為堆表在刪除記錄時,沒有回收空頁面的前提下,只更改了行偏移,實際... ...
一個簡單的跨庫事務問題
最近在做一個項目,其中一個方案涉及到跨庫事務一致性問題,是一個簡單的場景。這個項目是對老的業(yè)務進行性能提升,業(yè)務邏輯基本上保持不變。主要是在于新項目采用了分庫分表的設計,從而提升了性能。考慮到項目發(fā)布之后可能存在風險,采取了新老系統(tǒng)的并行方案。這個系統(tǒng)的業(yè)務比較簡單:接收來自外部的數(shù)據(jù),然后對數(shù)據(jù)進... ...
協(xié)議森林13 9527 (DNS協(xié)議)
作者:Vamei 出處:http://www.rzrgm.cn/vamei 嚴禁任何形式轉載。 在周星馳的電影《唐伯虎點秋香》中,周星馳飾演的主角一進入華府,就被強制增加了一個代號9527。從此,華府的人開始稱呼主角為9527,而不是他的姓名。 域名(domain name)是IP地址的代號。 ...
淺談SQL Server中的三種物理連接操作
簡介 在SQL Server中,我們所常見的表與表之間的Inner Join,Outer Join都會被執(zhí)行引擎根據(jù)所選的列,數(shù)據(jù)上是否有索引,所選數(shù)據(jù)的選擇性轉化為Loop Join,Merge Join,Hash Join這三種物理連接中的一種。理解這三種物理連接是理解在表連接時解決性能問題的基... ...
HTTP協(xié)議之狀態(tài)碼詳解
HTTP狀態(tài)碼,我都是現(xiàn)查現(xiàn)用。 我以前記得幾個常用的狀態(tài)碼,比如200,302,304,404, 503。 一般來說我也只需要了解這些常用的狀態(tài)碼就可以了。 如果是做AJAX,REST,網(wǎng)絡爬蟲,機器人等程序。還是需要了解其他狀態(tài)碼。 本文我花了一個多月的時間把所有的狀態(tài)碼都總結了下,內容太多,看 ...
MVVM(Knockout.js)的新嘗試:多個Page,一個ViewModel
對于面向數(shù)據(jù)的Web應用來說,MVVM模式是一項不錯的選擇,它借助JS框架提供的“綁定”機制是我們無需過多關注UI(HTML)的細節(jié),只需要操作綁定的數(shù)據(jù)源。MVVM最早被微軟應用于WPF/SL的開發(fā),所以針對Web的MVVM框架來說,Knockout.js(以下簡稱KO)無疑是“根正苗紅”。在進行... ...
協(xié)議森林11 涅槃 (TCP重新發(fā)送)
作者:Vamei 出處:http://www.rzrgm.cn/vamei 歡迎轉載,也請保留這段聲明。謝謝!TCP協(xié)議是一個可靠的協(xié)議。它通過重新發(fā)送(retransmission)來實現(xiàn)TCP片段傳輸?shù)目煽啃浴:唵蔚恼f,TCP會不斷重復發(fā)送TCP片段,直到片段被正確接收。TCP片段丟失TC... ...
選擇HttpHandler還是HttpModule?
最近收到幾個疑問:HttpHandler和HttpModule之間有什么差別,我到底該選擇哪個?之所以有這個疑問,是因為在這二類對象中都可以訪問Request, Response對象,都能處理請求。我原以為在博客 用Asp.net寫自己的服務框架中做了那么多的演示應該把它們的使用方法說清楚了,然而有... ...
Mac技巧合集第一期
很多微信訂閱者要求查看Mac技巧的歷史文章,但是由于微信的限制,大家輸入history只能收到最近的五條。好吧,放假期間終于有時間把Mac技巧整理為合集第一期,看一下內容還真是不少,所以說寫的慢少不可怕,只要你用心堅持寫。覺得有用就關注微信公共平臺“Mac技巧”,微信號sagacity-mac。Ma... ...
閑談.Net類型之public的不public,fixed的不能fixed
以前寫過《值類型不是值類型》一文。今天,就再來個語言游戲:public 的不public,fixed 的不能 fixed。本文將構造一個古怪類型:public字段無法訪問,標了fixed關鍵字卻無法fixed。 ...
2012,寫給24歲的自己
2012年6月,在我們以青春的名義,為逝去的大學生活而最后舉杯之后,我畢業(yè)了。 2012年7月,拖著沉重的行李箱,一路北上,在橫跨了四個省市后,我來到了這座北方的城市,開始了自己的第一份工作。 2012年12月,瑪雅人的預言似乎并不準確,世界末日也沒有如期而至。在重溫了一遍《2012》之后,我?guī)е?.. ...
高性能分布式計算與存儲系統(tǒng)設計概要——暨2012年工作3年半總結(下)
高性能分布式計算與存儲系統(tǒng)設計概要(下篇) (上篇) 在上篇里,我們主要討論了,這個系統(tǒng)怎樣處理大數(shù)據(jù)的“讀”操作,當然還有一些細節(jié)沒有講述。下篇,我們將主要講述,“寫”操作是如何被處理的。我們都知道,如果只有“讀”,那幾乎是不用做任何數(shù)據(jù)同步的,也不會有并發(fā)安全問題,之所以,會產(chǎn)生這樣那樣的問題, ...
高性能分布式計算與存儲系統(tǒng)設計概要——暨2012年工作3年半總結(上)
高性能分布式計算與存儲系統(tǒng)設計概要(上篇) 2012年底,末日之后,看到大家都在寫年末總結,我也忍不住想一試。工作已經(jīng)3年半了,頭一次寫總結。雖然到現(xiàn)在仍是無名小碼農(nóng)一名,但工作這些年,技術著實有不少積累。成長最大的,當然就是這篇文章標題提到的——高性能分布式計算與存儲系統(tǒng)的設計和研發(fā)過程,這也是我 ...
使用樹莓派制作的遠程開門器
話說自從我廠的商務部門搬到旁邊的商務樓之后,工程師發(fā)現(xiàn)漂亮的前臺MM也搬走了,某區(qū)只留下冷冷清清的魚缸。然后,工程師們發(fā)現(xiàn)開門成了個問題。鑒于進門需要刷卡,所以沒有帶卡的工程師就不得不摁下門鈴,等待其他人從座位上起身為自己開門。經(jīng)歷過多次不得不讓別人來開門以及不得不為別人開門之后,終于有工程師不能忍... ...
IIS故障問題(Connections_Refused)分析及處理
這篇文章其實已經(jīng)寫好很久,只是后來一直沒有重現(xiàn)當時的問題,或者因為業(yè)務的重要性、投訴的壓力也就臨時處理了。這幾天某地市Web服務器連續(xù)多次出現(xiàn)這個問題,正好借這個案例來做個收尾。前幾個月有臺重要的Web服務器(Windows Server2003 + IIS6.0)出現(xiàn)客戶端無法訪問Web服務器上的... ...
使用Lucene.Net實現(xiàn)全文檢索
本文是對全文檢索過程和Lucene.Net使用的簡單概述,涉及分詞、索引、搜索等主要內容。本文分享了Lucene.Net框架的使用方法,并介紹了如何在其中應有盤古分詞來處理中文分詞,同時也給出了實際使用中需要注意的問題。但是,本文并未給出代碼的最佳實踐,開發(fā)高性能的全文檢索應用,需要讀者自行摸索。本... ...



