原创 Windows中常用的git GUI客戶端的介紹

原文鏈接:https://www.cnblogs.com/littleswan/p/11353666.html 工欲善其事,必先利其器。 作爲一名開發人員,你不可能不知道git,無論你是開發自己

原创 大數據實踐的 6 個階段

原文鏈接:https://blog.csdn.net/csdnnews/article/details/100144731 版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議

原创 驗證(Verification)與確認(Validation)的差別

原文鏈接:https://www.cnblogs.com/blfshiye/p/4050734.html 說法一: (2)“驗證(Verification)”的涵義 通過提供客觀證據對規定要求已

原创 一個Java程序猿眼中的前後端分離以及Vue.js入門

原文:https://mp.weixin.qq.com/s/HWRYAR16vLE1XFep6_i1tA 鬆哥的書裏邊,其實有涉及到 Vue,但是並沒有詳細說過,原因很簡單,Vue 的資料都是中文的,把 Vue.js 官網的資料從頭到尾瀏

原创 前後端分離時代,Java 程序員的變與不變!

事情的起因是這樣的,有個星球的小夥伴向邀請鬆哥在知乎上回答一個問題,原題是: 前後端分離的時代,Java後臺程序員的技術建議? 鬆哥認真看了下這個問題,感覺對於初次接觸前後端分離的小夥伴來說,可能都會存在這樣的疑問,於是決定通過這篇文章和

原创 C++對象內存模型

0.前言 文章較長,而且內容相對來說比較枯燥,希望對C++對象的內存佈局、虛表指針、虛基類指針等有深入瞭解的朋友可以慢慢看。 本文的結論都在VS2013上得到驗證。不同的編譯器在內存佈局的細節上可能有所不同。 文章如果有解釋不清、解釋不通

原创 衡量數據的離散程度

我們通常使用均值、中位數、衆數等統計量來反映數據的集中趨勢,但這些統計量無法完全反應數據的特徵,即使均值相等的數據集也存在無限種分佈的可能,所以需要結合數據的離散程度。常用的可以反映數據離散程度的統計量如下: 極差(Range)   極差

原创 基於UDP的服務器端和客戶端

前面的文章中我們給出了幾個 TCP 的例子,對於 UDP 而言,只要能理解前面的內容,實現並非難事。 UDP中的服務器端和客戶端沒有連接 UDP 不像 TCP,無需在連接狀態下交換數據,因此基於 UDP 的服務器端和客戶端也無需經過連接過

原创 socket編程實現文件傳輸功能

這節我們來完成 socket 文件傳輸程序,這是一個非常實用的例子。要實現的功能爲:client 從 server 下載一個文件並保存到本地。 編寫這個程序需要注意兩個問題: 1) 文件大小不確定,有可能比緩衝區大很多,調用一次 writ

原创 shutdown()函數:優雅地斷開TCP連接

調用 close()/closesocket() 函數意味着完全斷開連接,即不能發送數據也不能接收數據,這種“生硬”的方式有時候會顯得不太“優雅”。 圖1:close()/closesocket() 斷開連接 上圖演示了兩臺正在進行雙

原创 網絡數據的大小端問題

不同 CPU 中,4 字節整數 1 在內存空間的存儲方式是不同的。4 字節整數 1 可用 2 進製表示如下: 00000000 00000000 00000000 00000001 有些 CPU 以上面的順序存儲到內存,另外一些 CPU

原创 再談UDP和TCP

TCP 是面向連接的傳輸協議,建立連接時要經過三次握手,斷開連接時要經過四次握手,中間傳輸數據時也要回復 ACK 包確認,多種機制保證了數據能夠正確到達,不會丟失或出錯。 UDP 是非連接的傳輸協議,沒有建立連接和斷開連接的過程,它只是簡

原创 gethostbyname()函數:通過域名獲取IP地址

客戶端中直接使用 IP 地址會有很大的弊端,一旦 IP 地址變化(IP 地址會經常變動),客戶端軟件就會出現錯誤。 而使用域名會方便很多,註冊後的域名只要每年續費就永遠屬於自己的,更換 IP 地址時修改域名解析即可,不會影響軟件的正常使用

原创 圖解TCP數據報結構以及三次握手(非常詳細)

TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基於字節流的通信協議,數據在傳輸前要建立連接,傳輸完畢後還要斷開連接。 客戶端在收發數據前要使用 connect() 函數和服務器

原创 TCP協議的粘包問題(數據的無邊界性)

上節我們講到了socket緩衝區和數據的傳遞過程,可以看到數據的接收和發送是無關的,read()/recv() 函數不管數據發送了多少次,都會儘可能多的接收數據。也就是說,read()/recv() 和 write()/send() 的執