原创 互聯網常用設計模式——通往架構師的第一步

什麼是設計模式? Christopher Alexander 說過:“每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重複勞動”。簡單來說就是: 設計模式(Design

原创 Web Api 基於Zookeeper的服務註冊與發現

差異 基於Nginx的服務提供和消費    基於zookeeper的服務註冊和發現    zk的負載均衡是可以調控,nginx只是能調權重,其他需要可控的都需要自己寫插件;但是nginx的吞吐量比zk大很多,可以根據業務選擇用哪種方式。 服

原创 一文理解:Java NIO 核心組件

背景知識 同步、異步、阻塞、非阻塞 首先,這幾個概念非常容易搞混淆,但NIO中又有涉及,所以總結一下。 同步:API調用返回時調用者就知道操作的結果如何了(實際讀取/寫入了多少字節)。 異步:相對於同步,API調用返回時調用者不知道操作

原创 瀏覽器緩存是什麼?它的機制又是什麼?

對於瀏覽器緩存,相信很多開發者對它真的是又愛又恨。一方面極大地提升了用戶體驗,而另一方面有時會因爲讀取了緩存而展示了“錯誤”的東西,而在開發過程中千方百計地想把緩存禁掉。那麼瀏覽器緩存究竟是個什麼樣的神奇玩意呢? 什麼是瀏覽器緩存:   簡

原创 程序員,你怎麼對待常見的數據一致性問題?

現象 應用系統中的關鍵服務絕大部分都會是對數據庫的依賴。  當多個進程同時操作同一個數據,會產生資源爭搶,數據一致性的問題。 如果只有一個數據庫服務器,數據一致性問題也就不存在了。 可是,隨着系統訪問量、數據量的不斷增長,數據庫出現多個服務

原创 傳統行業程序員的深度焦慮?——快來互聯網行業吧!

前言 不少在傳統行業摸爬滾打的程序員越來越焦慮了,有些甚至睡不着覺。爲什麼?傳統行業的程序員們每天進行的都是業務代碼的編寫,接觸不到更新更好的技術;公司的效益並不好,如未達到目標收益,只能進行“瘦身”,技術人員也很恐慌;看到BAT等互聯網企

原创 程序員如果只鑽研技術其實是很蠢的

前言 程序員一門心思鑽研技術其實是一件很蠢的事情。 因爲大部分人並不是那1%的天才,也完全沒辦法做到十年如一日地鑽研技術,至於光靠興趣驅動,未免太過理想。 如何解決 那麼,如果我們沒有足夠的信念和能力可以走出一條自己的技術路,那麼總有一天

原创 分佈式下的遠程通信技術(RPC)的一些理解

前言 爲什麼需要RPC,而不是簡單的HTTP接口? 剛開始還是菜鳥的時候,時常把RPC和HTTP搞混淆,本身概念還沒理解清楚,心裏就浮躁的不行,導致鬧出了不少笑話。 什麼是RPC? RPC(Remote Promote Call) 一種進

原创 爲什麼你要使用這麼強大的分佈式消息中間件——kafka

爲什麼是kafka? 在我們大量使用分佈式數據庫、分佈式計算集羣的時候,是否會遇到這樣的一些問題: 我們想分析下用戶行爲(pageviews),以便我們設計出更好的廣告位 我想對用戶的搜索關鍵詞進行統計,分析出當前的流行趨勢 有些數據,存

原创 【1024程序員節】程序員,你學編程的初衷是什麼?

前言 今天是1024程序員節,中國500w+的程序員今天可以享受一天專屬的節日,網絡上也有各種慶祝方式: 一些公司祭出了“程序員鼓勵師” 一些公司給程序員放了個“假” 還有公司出了張“海報” 都是玩的很嗨,套路一波接一波,看來在102

原创 如何看待Spring下單例模式與線程安全的矛盾

前言 有多少人在使用Spring框架時,很多時候不知道或者忽視了多線程的問題?   因爲寫程序時,或做單元測試時,很難有機會碰到多線程的問題,因爲沒有那麼容易模擬多線程測試的環境。那麼當多個線程調用同一個bean的時候就會存在線程安全問題。

原创 【十年磨一劍】我們能從阿里架構師的身上學到什麼?

前言 做技術的,一定不能放棄技術。在精進技術的同時完善其他方面的能力,十年如一日。不忘初心,方得始終。 正文 本文是看到阿里巴巴系統架構師黃勇的採訪記錄有感而發,如有侵權,請聯繫我。下面就一起來看看阿里架構師的十年架構路。 和大家介紹下

原创 淺析如何用Redis實現分佈式鎖

選用Redis實現分佈式鎖原因 Redis有很高的性能 Redis命令對此支持較好,實現起來比較方便 使用命令介紹 SETNX SETNX key val當且僅當key不存在時,set一個key爲val的字符串,返回1;若key存在,則

原创 同是ZooKeeper,你和架構師的理解差在哪裏?

前言 提到ZooKeeper,相信大家都不會陌生。Dubbo,Kafka,Hadoop等等項目裏都能看到它的影子。但是你真的瞭解 ZooKeeper 嗎?如果面試官讓你給他講講 ZooKeeper 是個什麼東西,你能回答到什麼地步呢?

原创 【乾貨】JDK動態代理的實現原理以及如何手寫一個JDK動態代理

動態代理 代理模式是設計模式中非常重要的一種類型,而設計模式又是編程中非常重要的知識點,特別是在業務系統的重構中,更是有舉足輕重的地位。代理模式從類型上來說,可以分爲靜態代理和動態代理兩種類型。 在解釋動態代理之前我們先理解一下靜態代理: