原创 TCP(HTTP)長連接和短連接的區別以及怎樣維護長連接

一、HTTP協議和TCP協議HTTP的長連接和短連接本質上是TCP長連接和短連接。HTTP屬於應用層協議,在傳輸層使用TCP協議,在網絡層使用IP協議。IP協議主要解決網絡路由和尋址問題,TCP協議主要解決如何在IP層之上可靠的傳遞數據包

原创 Go程序結構

1.1 名稱 Go中函數,變量,常量,類型,語句標籤和包的名稱遵循一個簡單的命名規則:名稱的開頭是一個字母或下劃線,並且區分大小寫 注:實體的第一個字母的大小寫決定了其可見性是否可以跨包。如果名字是大寫字母的開頭,它是導出的,意味

原创 Mysql學習(2) -創建、刪除用戶、權限管理以及flush privileges的使用(很多人只是會使用sql語句,但是對用戶以及用戶權限的概念比較模糊)

Time:2019-8-15 21.42 Site:深圳科興科學院 Author: strivewang 摘要 第一部分是介紹Mysql創建用戶以及相應的權限介紹。 第二部分細節介紹了Mysql不同維度的權限控制 第三部分講

原创 linux下開發 最實用指令之調試篇-----ps、top、grep

Time:2019-8-25 16:19 Site:深圳科興科學院 Author: strivewang top工具的介紹 ps指令及參數的詳細介紹 grep配合其它指令的妙用 最常見的性能分析工具 top(類似於Window

原创 Mysql學習筆記(1) -- Mysql 日常開發中最實用的語句

1. 創建 1.1 創建數據庫 語法:create database db_name create database `awesome_app` 1.2 創建表格 語法:create table table_name ( … c

原创 指針和引用的區別

一. 性質的區別:           1  指針是一個變量,存儲的是一個地址。這個地址指向內存的一個內存單元。  引用跟原來的變量實質上是一個東西,是原來變量的別名。  int a=1;int *p=&a;  上面定義了一個整形變量和一

原创 淺析c++函數重載的原理

一. 函數重載的概念 在C語言中,一個函數不能與另一個函數重名,而在C++中,一個函數的函數名相同的,只要參數列表與另一個函數的參數列表不完全相同,C++這一特點就是所謂函數的重載現象。 同一個名字因爲參數列表不同,展現了不同的

原创 合併兩個有序鏈表,合併之後依舊有序

解法一   使用遞歸 struct list_node { int data; list_node* next; list_node(int data) :data(data) , next(NULL) {} }; /

原创 A + B 問題

給出兩個整數a和b, 求他們的和, 但不能使用 + 等數學運算符。 注意事項你不需要從輸入流讀入數據,只需要根據aplusb的兩個參數a和b,計算他們的和並返回就行。您在真實的面試中是否遇到過這個題?說明a和b都是 32位 整數麼?是的我

原创 TCP半關閉,半連接,半打開

半關閉: 當TCP鏈接中A向B發送 FIN 請求關閉,另一端B迴應ACK之後,並沒有立即發送 FIN 給A,A方處於半連接狀態(半開關),此時A可以接收B發送的數據,但是A已經不能再向B發送數據。 半連接: 發生在TCP三次

原创 詳細分析c/c++語言中的static

一 static在c語言中的應用詳細分析一下static關鍵字在c語言中編寫程序時有的三大類用法:        一,static全局變量           我們知道,一個進程在內存中的佈局如圖1所示:      其中.text段保存進

原创 360第一次面試(電面)未完待續

1 內部名稱 C和C++語言實現都會按照特定的規則把用戶(程序員)定義的標識符(各種函數,變量,類型,以及命名空間)轉換爲相應的內部名稱。當然,這些內部名稱的命名方法還與用戶爲它們指定的連接規範有關,比如使用C的連接規範,則ma

原创 c語言內存對齊詳解

一、什麼是字節對齊,爲什麼要對齊?    現代計算機中內存空間都是按照byte劃分的,從理論上講似乎對任何類型的變量的訪問可以從任何地址開始,但實際情況是在訪問特定類型變量的時候經常在特定的內存地址訪問,這就需要各種類型數據按照一定的規則

原创 c語言str系列函數

strcat(); 函數原型: char* strcat(char* dest, const char* src) 功 能:    將src 的 字符串追加到 dest後邊 char* Strcat(char* dest, const c

原创 逆置/反轉單鏈表,要求只能遍歷一遍鏈表

第一種方法,非遞歸 list_node* reverse(list_node* list) { assert(list); if (NULL == list->next) { return list; } list_n