事務和原子性的一些思考

2021-09-02 15:37:51 字數 845 閱讀 3606

最近**寫的有些痛苦,或者說,有些慢。覺得自己不能任性地去寫**,在寫**的時候,應該去考慮**的復用,以及一些事務性的操作。

學習這東西真的很奇怪,大約在兩周前,我大致看了下事務的概念,當時覺得也就乙個一致性,並沒有什麼卵用。而事實上,在短短兩周之後,在自己寫**的過程中,就遇到事務性的問題,寫事務性的**。

至於原子性,涉及的具體操作是修改密碼,因為確實可以用一句sql解決這個問題,而實際上,也也可以分成三步操作:1.根據使用者名稱獲取賬戶資訊;2.比對密碼;3.更新密碼。僅僅對於這乙個問題來說,一句sql確實容易,後者分解操作,反而繁雜;

這裡就涉及到了原子性,因為根據手機號獲取賬戶資訊這一步操作,在整個業務過程中,會多次使用。那麼將這種多次使用的功能單獨拿出來,就很有必要了。

最直接的例子是,經過**重構,dao層只有四個介面,相比重構之前的8個介面,少了很多。

回頭再看mvc框架,在之前的一篇文章中說過 controller-service-dao大多都是一對多的,這種一對多的好處在於,盡量原子化每一層的服務,使得每一層的介面盡可能的少。聽起來似乎有點矛盾,盡量細化介面,還能減少介面?

事實上真是如此,就像資料庫,不過增刪改查四種功能,卻支撐起龐大的網際網路應用。

**寫到一定階段,確實應該思考**怎麼寫優雅,而不是僅僅為了實現功能。

都說程式設計師的抽象思維很重要,其實,就在這些不斷地思考中慢慢提高的。

回頭再看本科看作業系統時,書上提到的一對概念,精簡指令集和複雜指令集。現在計算機的晶元大多都是精簡指令集,也就是提供原子化的操作供上層應用使用。

而實際上,無論是從晶元還是作業系統,它們所提供的,都是對當前物件來說一些原子化的操作。

所謂的事務,其實早就被先賢們玩透了,我們僅僅是偷換個概念罷了。

事務的原子性

a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 1.從a的帳戶中減去1000塊錢。如果a的帳戶原來有3000塊錢,現在就變成2000塊錢了。2.在b的帳戶裡加1000塊錢。如果b的帳戶如果原來有2000塊錢,現在則...

事務的原子性

事務的原子性指的是,事務中包含的程式作為系統的邏輯工作單位,它所做的對資料修改操作要麼全部執行,要麼完全不執行。這種特性稱為原子性。原子性的意義是資料庫系統的基礎。也許有的人想大多數程式設計師都沒有需求去寫要求超長時間高穩定性 高健壯性執行的程式。我想這是不負責任的想法。不管你寫的是動態 嵌入式控制...

mysql原子性 MySQL事務的原子性

一 事務的acid特性 1 原子性 2 一致性 3 隔離性 4 永續性 二 對於事務的原子性 a 我們知道事務中的操作要麼都做要麼都不做。對於這一點許多人有錯誤的理解,我們來看乙個例子 1 mysql select from t4 id name 1 a 2 b 3 c 3 rows in set ...