1.redis支援事務嗎?
只是部分支援事務
常用的命令有:
watch key(keys) 監視乙個或多個key,如果在事務執行之前這個或這些key被其他命令所改動,那麼事務將被打斷
multi 標記乙個事務塊的開始
exec 執行所有事務塊內的命令
discard 取消事務,放棄執行事務塊內的所有命令
unwatch 取消watch 命令對所有 key 的監控
1:正常執行 multi … exec
2:放棄事務 discard
3:全體連坐 要麼全部成功,要麼全部失敗,命令錯誤
4:冤頭債主 命令正確,但執行失敗報錯
5:watch監控:
悲觀鎖/樂觀鎖/cas(check and set)
悲觀鎖:鎖整張表,效能極差,但一致性很高
樂觀鎖:為了即保證高併發,又保證不說整張表,在每條記錄後面加乙個version版本號
無加塞篡改,先監控在開啟multi,保證兩筆金額變動在同乙個事務內
有加塞篡改,橫刀奪愛,先watch key 修改value 別人改了 那麼失敗了。 如果我知道別人改了,我先unwatch 在watch 在multi 然後修改 在exec提交執行
三個階段:
1. 開啟:以multi開始乙個事務
2. 入隊:將多個命令入隊到事務中,找到這些命令並不會立即執行,而是放到等待執行事務佇列裡面
3. 執行:由exec命令觸發事務
三個特性:單獨的隔離操作:事務的所有命令都會序列化、按順序地實行
沒有隔離級別的概念:事務提交前任何指令都不會被實際執行
不保證原子性:redis同乙個事務中如果有一條命令執行失敗,其後的命令仍然會被執行,不回滾
2.如何實現乙個棧?
static class mystack
/*出棧*/
void mypop()
/*入棧*/
void mypush(int x)
/*判空*/
boolean myisempty()
/*取棧頂元素*/
int mypeek()
/*棧大小*/
int mysize()
}public
static
void
main(string args)
}
好多問題記不得了,記起來就繼續寫 實習電話面試遇到到一些問題(三)
1.使用反射列出類的所有方法 obtain the class instance class personclass person.class get the methods method methods personclass.getdeclaredmethods loop through the...
面試的一些問題
作為web前端的開發人員,在外人眼裡,大多有碼農,呆板,死相的稱號。一定程度上,這種說法也是正確的。張哥說過,程式就像生活。而,生活大多數時候總是平平淡淡,甚至 更多的時候會覺得枯燥。對於web開發,對於技術,如果不能從理論角度透徹了解,只是單純使用,那也只是一種變相的體力勞動。因此很多面試上的問題...
遇到的一些問題心得
一.專案的版本管理。1 gnu 風格的版本號命名格式 主版本號 子版本號 修正版本號 編譯版本號 major version number.minor version number revision number build number 示例 1.2.1,2.0,5.0.0 build 13124...