成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

扒一扒那些和編程語言無關的技術

開發 開發工具
“負載均衡,分布式,集群,高可用......” 這些“高深”的技術在日常Coding也不常用, 略過不談,主要扒一扒工程中常用的、編程語言無關的具體技術。

這世界上編程語言如此之多,想學完是不可能的,也是沒有必要的。

一般來說,一個人能精通一門語言,然后會使用另外一種語言就不錯了。

既然編程語言學不完,能不能把重點放到編程語言無關的技術上呢?

首先能想到的就是數據結構和算法,它的重要性已經不用再強調了,直接跳過。 

“負載均衡,分布式,集群,高可用......” 這些“高深”的技術在日常Coding也不常用, 略過不談,主要扒一扒工程中常用的、編程語言無關的具體技術。 

[[224848]]

1.HTTP

HTTP誕生于1991年,是互聯網領域一個基石性的協議。全世界電腦上的內容能互聯起來,全拜HTTP所賜。

程序員主要通過HTTP來傳輸XML, JSON等數據。日常使用的就是GET、POST方法,但HTTP可不僅僅只有這些,它的細節相當多, 我覺得程序員至少應該掌握這些:

Cookie: domain, path, expiration

HTTP狀態碼

HTTP長連接  ,由此擴展到websocket。

HTTP重定向 ,非常有用的技術,對理解OAuth, CAS(SSO)很有幫助。

緩存 :Last-Modified和ETag

chunked :分塊傳輸

代理:正向代理/反向代理

2.socket

socket是對TCP/IP的抽象, 網絡編程肯定繞不過socket,絕大部分語言都提供了socket相關的API。

工作中直接對socket編程的機會不多,大多都是封裝好的, 但是要理解socket在客戶端和服務器端的區別,服務器端是如何維護連接的, 這就會引出一個重要的技術:I/O多路復用(select/poll/epoll) ,也是ngnix,redis等著名軟件的基礎。

I/O多路復用是I/O模型之一,其他還有同步阻塞,同步非阻塞,信號驅動和異步。

這方面最經典的書應該是《Unix網絡編程了》。

3.安全基礎

如果說socket,HTTP建立了傳輸的通道,Hash技術,對稱/非對稱加密, 數字簽名等安全基礎就是安全的守護者。

去看看最近大熱的區塊鏈,會發現這些安全基礎是區塊鏈基本的技術支撐。

他們是如此重要,到處都能看到他們的身影:

HTTPS:使用“非對稱加密”來傳輸“對稱加密的密鑰”,使用Hash,數字簽名來確保身份的合法性。

Secure Shell : 使用RSA的方式登錄服務器

Hash的用途更為廣泛:

用戶密碼的存儲: 現在基本上沒有網站存儲明文密碼了,基本上都是把密碼加salt生成hash 值以后來保存。

HashMap等數據結構: 使用Hash來生成key 。

Memcached :分布式一致性Hash算法。

文件傳輸校驗: 使用Hash算法生成消息摘要,驗證文件是否被篡改。

如果是做Web開發,還必須得掌握XSS/CSRF/SQL注入等常見的Web攻擊技術和和應對方案

4.并發編程

這是一個編程中繞不過的主題,單個線程的狀態變化, 多線程的同步與互斥,各種各樣的鎖,死鎖,ThreadLocal , volatile ,CAS......  總之有點煩人。

擴展開去還有線程池,各種并發模型如Actor, Channel等等。

5.OOD/OOP(面向對象的設計/編程)

只要使用面向對象編程語言,就要修煉OOD內功,用OO的語言寫面向過程的程序實在是一件可悲的事情。

OOD/OOP的核心就是“抽象”, 什么是抽象? 其實就是擯棄了細節,找到那些本質不變的部分。  舉個例子, Java中的List 是對一個可以通過下標順序訪問的集合的抽象,管你是什么ArrayList, LinkedList, 都是List。

有了“抽象”,就可以針對接口編程,而不是針對實現編程。就像一個領導,說話的層次高,說出的話比較含糊。

正是由于這個特點,具體的實現可以替換,可以擴展,靈活性很高。

說起來簡單,做起來確很難,因為這個東西有點“玄妙”,需要自己去修煉,去體會哪些SOLID原則,去領悟設計模式背后的思想,而不是學習招式。

閱讀優秀源碼是個很好的途徑,看看大牛們是怎么抽象出哪些“不變”的部分的。

6.數據庫

關系數據庫也幾乎是每個系統的必備,即使是Android開發也需要利用sqlite這樣的輕型數據庫。

所以程序員要會根據需求來設計表,掌握基本的SQL操作。

深入一點的話,事務和索引是理解關系數據庫的兩個重頭戲。

需要理解事務的特性和隔離級別,理解Undo/Redo日志的原理。

理解MVCC這個常見的并發控制技術。

理解索引的實現原理,以及在特定數據庫如MySQL的實現。查詢和索引的關系。

7.函數式編程思想

函數式編程已經誕生很久很久了,雖然沒有成為主流,但是它的思想卻在很多語言中生根,發芽,結果。

很多語言都擁抱了函數式編程的思想,JavaScript,Python, Ruby, Scala..... 也包括非常“保守”的Java。

不僅如此,函數式編程中的Map 和 Reduce 的思想還在大數據的領域大放異彩。

我估計以后使用函數式編程的機會越來越多,了解它的思想有極大好處。

函數式編程的基本概念包括: 純函數,不變量,遞歸,高階函數。 高級一點的有Currying, 惰性求值,宏(macro)。

8.測試和重構

掌握單元測試已經是程序員的必備技能了, 如果還不會的話,趕緊去補上吧。

需要注意的是,一定要讓單元測試有這么幾個特點:

1.  單元測試是“白盒測試”, 應該覆蓋各個分支流程、異常條件

2.  單元測試面向的是一個單元("Unit"), 是java中的一個類或者幾個類組成的單元。

3.  單元測試運行一定要快!

4.  單元測試一定是可重復執行的

5.  單元測試之間不能有相互依賴,應該是獨立的。

6.  單元測試代碼和業務代碼同等重要, 要一并維護。

另外還有自動化的功能測試, 性能測試,都是應該了解,甚至掌握的技能。

重構也是一大技能,在保證功能不改變的情況下,讓代碼變得更好。

Martin Flower的書《重構》中介紹了巨多的重構方法, 我覺得最最常用的是兩個:

變量重命名: 用清晰的名稱體現代碼的意圖

提取函數:將大函數拆分成小函數,消除重復,讓代碼更容易閱讀

當然,重構需要IDE的支持,在這一點上靜態類型語言要比動態類型語言表現得更好。

9.版本管理

公司的源碼肯定是要納入版本管理的,如果你的公司還在通過程序員之間復制的方式來共享代碼,我建議馬上跑路。

如今程序員也愛社交,不會使用Git/GitHub簡直不好意思和人打招呼。

初學者不要把它想得很復雜,自己找個教程,動手做幾次,很快就掌握了。

10.正則表達式

這個不多說,對文本進行查找、替換非常有用。

【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2019-10-21 10:59:52

編程語言JavaC

2023-01-30 22:10:12

BeanSpring容器

2015-08-18 09:12:54

app推廣渠道

2015-09-16 14:11:47

2025-06-04 01:20:00

2022-07-11 20:46:39

AQSJava

2019-09-10 07:29:44

2019-01-03 11:09:19

2019-02-25 22:46:39

2020-01-15 15:29:52

InnoDB數據硬盤

2025-04-30 07:26:04

2015-09-16 14:04:06

大數據巨頭

2023-04-10 23:05:54

NacosOpenFeignRibbon

2022-09-30 09:40:39

智能汽車

2015-10-15 13:38:39

2015-12-15 09:51:42

大公司技術知乎

2015-09-21 10:07:31

2017-09-07 18:45:51

C#

2021-05-13 05:25:16

數據分析數分培訓大數據

2019-04-28 14:24:54

吳亦凡流量數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩综合 | 日本一区二区高清不卡 | 国产精品视频一二三区 | 久久影院一区 | www..99re| 日韩av福利在线观看 | 五月天婷婷久久 | 国产精品1区2区 | 国产精品久久久久一区二区 | 91亚洲国产成人久久精品网站 | 日本午夜一区 | 久久9999久久 | 人人干超碰 | 久久激情五月丁香伊人 | 亚洲成人av一区二区 | 国产激情偷乱视频一区二区三区 | 99久久国产免费 | 日韩精品一区二区三区中文字幕 | 麻豆毛片 | 午夜电影福利 | 日韩中文字幕一区二区 | www.久| 国产精品视频久久久 | 国产精品欧美一区二区 | 国产成人精品久久二区二区91 | 国产91精品久久久久久久网曝门 | 激情在线视频网站 | 亚洲欧美bt | 亚洲精选一区二区 | 亚洲黄色在线免费观看 | 一区二区三区四区免费观看 | 午夜影院毛片 | 久久精品久久久久久 | 国产精品一二区 | 二区久久| 九九综合 | 亚洲成人一区二区 | 日本精品在线播放 | 日韩精品无码一区二区三区 | 一区二区三区四区视频 | 国产成人网 |