在軟體開發的道路上,無論科技如何進步、工具如何發展,總是有些「東西」是亙古不變的。畢竟,軟體工程已經漸趨成熟,近20年並沒有新的理論被提出,只有流程和工具的不斷改良。
因此,如何在軟體開發的職涯上掌握先機,並且走出屬於自己的道路,這是每個軟體人所應該要思考的。藉由鐵人賽,我想分享一個從基層軟體工程師一路成為軟體架構師所需要具備的硬實力和軟實力。
內容會包含職涯發展的心態、資料庫的基本認知、系統設計原則和軟體測試。
MySQL和他的儲存引擎InnoDB可以說是現今最常見的關聯式資料庫了,而可重複讀是他們預設的隔離等級。 但是,與Postgres相比,InnoDB在可重複讀的...
我們用了兩天介紹MySQL在處理交易隔離的一些手段和方法,對於MySQL來說,能夠駕馭交易就能夠很好上手了,因為MySQL背後的概念相對單純,比起分散式的環境,...
我相信我們都很熟悉MySQL的索引規則了,因為MySQL的儲存引擎是用B+樹的資料結構儲存索引,所以會有一個最左匹配的規則。 為了讓查詢能夠吻合索引,索引使用欄...
之前在談到無論是消息佇列或分散式交易時,我們都有提到Redis的持久化不可靠,但我們只是簡短的敘述,並沒有解釋有多麽不可靠。 因此,這篇文章我們將從Redis的...
Redis是一個將資料存放在記憶體的存儲,而且我們都知道記憶體有多不可靠。更有甚者,在昨天,Redis的持久化中有提到Redis的儲存比我們想的更不可靠。因此,...
昨天,我們介紹了兩種形式的鎖,分別是排他鎖和屏障,並且我們以Redis作為範例來簡單解釋實作細節。 但我們曾一直提及,Redis的持久化很不可靠,為了要實作穩定...
基數計數有點拗口,但要做的事其實很單純,就是確認一個集合中的元素有多少個,但要去重(dedup)。 舉例來說,[1, 1, 2, 3]這樣一個陣列的基數計數為3...
今天我們要討論資料一致性,尤其是快取和資料庫間的一致性。事實上,這是一個很重要的主題,特別是當組織變大,那麼對一致性的要求就會提高,這也連帶影響快取的實作。 舉...
在昨天,我們介紹了為什麼需要快取也介紹了旁讀的流程和潛在問題,當然也解釋了如何改善一致性。儘管如此,旁讀快取仍不足以滿足高一致性需求。 旁讀會產生問題的其中一個...
在鐵人賽的最後一天,我想跟大家分享一個軟體開發中的萬金油:特性開關(Feature Toggle)。 為什麼說是萬金油呢?因為正確使用特性開關可以有效提高軟體開...