關於應用層先後端軟件開發的思考

​賈思謙前端

「應用層的軟件開發其實就是對各個已有開源框架和公司本身造的輪子的一種綜合運用,簡單來講,就是你有不少功能強大的工具,你要作的就是怎麼組合這些工具,從而符合場景要求。」mysql

1面試

大前端的工做也是對spring

現有框架的技術選型,從而界定項目邊界sql

 

iOS,Android,以及各類流行的H5框架,其實沒有本質的區別,他們都是從硬件層,再加一層協議層,到組件層,再到應用層,每個層次都向外提供各類業務接口,從而達到提供知足APP 全部功能的能力。數據庫

 

雖然,各自運用的語言都不相同,可是語言層面的只是寫的形式不一樣,但根本的東西都是相通的。也就是幾行代碼就表示一種能力。swift

 

對於一個通常的APP來講,iOS的OC,swift,Android的Java,Kotlin, H5的好比Angular JS,ReactNative,ionic,等等,不用徹底掌握各類語言的細節,只要會一些基本的語言能力,就能夠完成相應的基本APP開發。後端

 

對於一些特殊功能的接口的調用,等用的時候再查一下就能夠了。好比硬件層,也無外乎都是一些硬件廠商提供的。對於一些成熟的社區,對不一樣的硬件功能實現也都會有相應的開源庫,這些開源庫改一改也就能知足具體業務需求了。固然有的也要本身造輪子,但通常大公司都有基礎開發團隊,也就是有本身的專門造輪子的團隊。緩存

若是沒有相應的開源庫,就須要本身研究一下,具體踩一些坑,運用一些邏輯也都會實現。性能優化

 

固然這是指通常的APP,一些用戶量大的APP,也會有專門的人員作內存優化,界面優化,也會處理一些圖像。一些基本的性能優化就會給客戶明顯的感受。更細粒度的優化其實已經算是追求用戶極致體驗的範疇了。坦白說,對用戶的感官體驗不會帶來明顯的感受。固然也會有一部分用戶是可以察覺出來的。

 

2

後臺的技術主要源自架構的設計,

技術的選型,以及對已有業務功能的劃分

 

這裏主要以Java爲例,Java是比較重的,並且由於開源的緣由,整個JAVA的生態特別好,有各類各樣的開源框架和庫,因此相對於.NET的本身造輪子,選擇Java開發比較大型的項目是一種節省成本的作法。

 

後臺的技術主要是圍繞的數據庫而展開的。有網關層接受客戶端的請求,從而業務層和數據邏輯層把收到的數據存入DB. 其中涉及到數據協議的轉化,以及一些傳輸協議。

 

數據庫有RDMS,好比mysql,oracle,SQL Server等。有NOSQL,好比MongoDB,以及NEWSQL。緩存的有Redis,memcached.

 

多臺,多機房部署時爲了保證數據一致性,也會用到分佈式鎖,分佈式事務,冪等。

 

如今用到的微服務架構,也會涉及到限流,降級,熔斷,服務治理,註冊與發現,配置中心等。

 

好比如今流行的spring boot ,spring Cloud,ZK,Consul, etcd ,eureka等,經過對現有技術框架的選型和組合,造成一套高可用,高併發的架構體系。

3

先後端經過數據連通,

數據是整個項目的精髓。

 

對於後臺程序而言,能夠有能力處理大量的讀寫請求,而且準確記錄數據一直以來都是後臺的追求。

 

咱們經過各類各樣的方式來保證數據的一致性和可靠性。並且也經過各類各樣的技術手段來確保在海量請求的狀況下,能夠保證整個項目的穩定性,高可用,高併發。

 

一切軟件的最終目的都是爲了處理,記錄,展現,分析數據。從而以可視化的展示來給人提供決策參考。傳統的關係性數據庫在數據量少的狀況下,能夠很好的鏈接不一樣變量,從而大大簡化數據的查詢和調用展現的時間。

 

關係性數據庫把多維度的變量經過主鍵關聯,從而能夠擁有方便處理和查詢的能力。可是面對愈來愈大量的數據,爲每個數據編制一種關聯關係已經愈來愈難。不少數據之間是沒有什麼聯繫的。

 

因此這個時候非關係性數據庫就產生了。他能夠解決大量非關係數據的存儲和查詢問題。爲海量數據的分析,處理,以及應對大數據的現實狀況提供了可行性解決方案。

 

4

軟件是一個綜合性的系統項目,

這個系統可使人類打破空間和時間的侷限

 

軟件的誕生,大大的簡化了人們獲取優質諮詢的過程。也縮短了人與人,人與組織的鏈接時間,軟件能夠大幅度提升人們的生活水平,也會高效的管理整個組織體系。使諸如資源管理,人力管理,財富管理,企業流程管理變得科學化和系統化。

 

軟件的誕生,標誌着人類進入了新的紀元。而接着的人工智能的到來,也將進一步加快社會的結構升級。也會進一步方便人們的生活,給人類以全新的生命體驗,也會加速提高人們的認知水平。經過科技來改變整我的類的生活。

 

雖然新技術不斷涌現,可是軟件行業的技術本質不會改變,精髓部分始終都不會改變,只是表現形式有所變化。關於應用層的基本思惟方式,以及一些本質的東西都是以最簡單方式表達出來。

 

固然,軟件的技術形式,各個技術的具體實現細節,要踩的坑,也都是遵循着必定的規律。當咱們掌握了這個規律,就會有堅決的信心,作出來是早晚的,只是時間的問題。

 

其實,全部問題的本質均可以歸結到時間的稀缺。咱們並非沒有解決具體問題的能力和信心,而是怎麼以有限的時間解決問題,達到降本增效的目的,纔是咱們做爲技術工做者的基本能力和應該持續學習的緣由。

 

 

精彩回顧:

面試點:Java 中 hashCode() 和 equals() 的關係

容器鏈接[Docker 系列-7]

現現在的技術浪潮中,咱們到底該作些什麼?

 

強烈推薦:

《Java 極客技術》知識星球限時優惠,如今加入只需 50 元,僅限前 1000 名,機不可失時再也不來。趁早行動吧!

https://t.zsxq.com/J6Em2nU

 

隆重介紹:

Java 極客技術公衆號,是由一羣熱愛 Java 開發的技術人組建成立,專一分享原創、高質量的 Java 文章。若是您以爲咱們的文章還不錯,請幫忙讚揚、在看、轉發支持,鼓勵咱們分享出更好的文章。

 

相關文章
相關標籤/搜索