陰溝裡翻船,浪費乙個小時時間

2022-02-01 12:14:05 字數 1478 閱讀 5029

做了這麼久的專案,在公司,不大不小的問題基本都能短期內解決或者提供方案,尤其給同事提供,也算是得心應手,可今天自己用一小時的時間買了個不爽。

也許在博友嚴重,這種低智商的錯誤不應該發生,但是卻發生在我這個智商不是太天才的人身上了。

儲存過程除錯:

code

1alter

procedure

[dbo].

[p_chkuserinfo]2

(3@deviceid

varchar(64

),4@rlt

tinyint

output5)

6as7begin

8declare

@cnt

asint

9declare

@flag

asint

10select

@cnt

=count(*

) from

userinfo 

where

deviceid

=@deviceid;11

if(@cnt

>0)

12begin

13select

@flag

=valid 

from

userinfo 

where

deviceid

=@deviceid;14

if(@flag=0

)15begin

16set

@rlt=0

--已經註冊的            

17end

18else

19begin

20set

@rlt=1

--未註冊

21end

22end

23else

24begin

25insert

into

userinfo(deviceid,valid) 

values

(@deviceid,1

);26

set@rlt=3

--原來使用者表沒有的

27end

28end

如此簡單,乙個裝置沒有註冊,怎麼也註冊不上,返回值是3;

顯然是沒有插入資料啊,可沒有異常啊,不明白,半小時過去了, 問題依舊,出去溜達一圈吧,總不能這麼鬱悶著吧,不是吧,儲存過程有異常不會丟擲,除非你做了異常處理。

於是就在儲存過程中做了異常處理,問題一下子顯出來了,截斷了,暈倒,哦,對照一下,裝置的id超過了長度32位,應該64才夠用啊。

之前好好的程式,本地資料庫和開發的不同步了。

良好的專案管理,良好的程式設計風格需要我們時刻銘記在心,如果儲存過程做了異常處理,如果資料庫和開發庫同步,如果聰明點,意識到儲存過程會吃掉異常,如果再聰明點...... 我還會犯這個低階的錯誤嗎,下班了,不再懺悔了。

異常處理是設計的重要部分,不論何時何地,猶如事務一樣,也不要把多執行緒隨便拋到腦後。

陰溝裡翻船之C函式memset

服務端每次處理客戶端請求的執行實現發現已接近100毫秒左右,這尼瑪真不能忍。起初還懷疑是與memcache服務進行通訊上的問題,結果經過一步步打log輸出各個環節的呼叫時間,最終定位到了乙個c函式memset 占用了每次處理的99 的時間!每次在收到服務端的請求時都對乙個50m左右的資料執行了一次m...

精彩十年(2) 陰溝裡也翻船

按照常理,我的第 一 二兩本書都是在人郵出版的,而且是人郵最先向我約稿寫書的,後面的書自然就會在人郵出版,至少後面還會在人郵出版出幾本書,不會這麼快另選東家,因為我一向注重誠信合作,而不是喜新厭舊之輩。但是令所有讀者都感到意外的是,我自第三本書開始就沒有在人郵出版了。究其原因將在本文後面介紹。在出版...

精彩十年(2) 陰溝裡也翻船

按照常理,我的第 一 二兩本書都是在人郵出版的,而且是人郵最先向我約稿寫書的,後面的書自然就會在人郵出版,至少後面還會在人郵出版出幾本書,不會這麼快另選東家,因為我一向注重誠信合作,而不是喜新厭舊之輩。但是令所有讀者都感到意外的是,我自第三本書開始就沒有在人郵出版了。究其原因將在本文後面介紹。在出版...