原创 網絡編程(編寫一個小型服務器)--csapp11章

網絡應用隨處可見,表現的形式也各不相同,有趣的是,在不同的表現形式之下都是基於相同的編程模型,依賴於相同的編程接口,因此學習網絡還是比較保值的,因爲這麼多基礎設備還在運行着,基本機制也在短時間內很難改變。 網絡編程的知識很多,包括

原创 逆時針填充正方形(遞歸 循環)

如果所示,逆時針填充正方形,從1,2,3…到16,輸入一個正方形的大小,填充。 比如輸入4,正方形如上圖,如果輸入5,則是1,2,3…到25。 這道題,可以按照如圖所示的方法,先構造最外一圈的數,123一組,456一組,789

原创 理解重定向之dup,dup2

Linux下當使用 ls > file 命令,可以將原本輸出在屏幕上的文字重定向到file文件中(如果沒有file文件則創建之) 我們可以利用dup,dup2函數也實現一下重定向。它們的接口如下: #include <unis

原创 CRC校驗

網上關於CRC校驗的文章已經有不少了,但是我總覺得有些繁瑣,其實對於大部分人只需要瞭解CRC是做什麼的,原理是什麼即可。因此,我想用盡量簡短的篇幅來向大家介紹CRC。 關於CRC,我只介紹以下幾點: 用來做什麼的 基本的原理 給

原创 反轉字符串

反轉字符串 s = "123456" 打印出654321 這裏面有2種想法: 改變字符串s = “654321”,直接打印 逆序打印字符串,不改變字符串 這裏我都簡單實現了一下: void reverse_c(char* st

原创 多線程編程2--線程的同步和互斥

當多個線程共享相同的內存時,需要確保每個線程看到一致的數據視圖。 如果每個線程內部的變量其他線程都不會訪問到,那麼就不存在一致性問題; 如果變量是隻讀的,那麼多個線程同時訪問它也不存在不一致性問題; 但是,一旦一個變

原创 計算機網絡基礎知識和體系結構

現代社會,網絡已經和水,電一樣成爲我們的不可或缺的日常需求了,可以說網絡無處不在。作爲一名用戶,只需要學會如何使用網絡即可,而作爲一名計算機專業的學生,一名程序員有必要去深入瞭解其中原理。 因此,本章主要會介紹一些計算機網絡的基本

原创 shell腳本中倒引號,$(), eval的區別

在Shell腳本中,當我們vim test.sh輸入以下文本: echo date echo `date`

原创 gdb調試多線程多進程程序

gdb的簡介和功能: gdb是GNU開發的一個在Unix,Linux上使用的C/C++和彙編語言程序的調試工具,它主要幫助用戶在調試程序時完成以下工作: 啓動程序,按照用戶要求影響程序的運行 設置斷點,在指定位置停止 當程序停止

原创 瞭解網絡通信中的端口

熟悉TCP/UDP協議的同學可能都知道端口這一詞,無論是TCP還是UDP報文都有源端口和目的端口字段,爲什麼會需要這些字段呢? 這是因爲,對於網絡之間的通信,本質而言就是應用進程之間的通信,而IP協議只提供主機與主機之間的通信,可

原创 TCP協議報文格式和三次握手,四次揮手

源端口和目的端口: 用來表示發送主機的進程和接收主機的進程,實現TCP複用和分用 序號: TCP是面向字節流的,TCP連接中的每個字節都按序編號,序號字段又叫報文段序號,指的是當前報文段的第一個字節的序號,比如一報文段的序號字

原创 多線程編程1 --線程創建,退出,等待,分離

線程的基本概念 線程是在進程內部運行的一個執行分支,它是運行在進程的地址空間中。 和進程之間的獨立性不同,線程之間更強調共享性,它共享進程的地址空間,比如數據段,代碼段,堆。。。以及文件描述符表。因此,無論是線程的創建,終止,切換

原创 基於tcp的小型服務器(多線程多進程)

在深入理解計算機系統第11章中,講到一個echo服務器,基於tcp字節流的小型服務器,利用socket套接字接口,完成了一個簡易的服務器。 具體細節可參考網絡編程(編寫一個小型服務器)–csapp11章。 不過這個小型服務器有一個

原创 常用的C++11特性(面試易考)

大二的時候看過《C++Primer》,瞭解過C++11,因此就在簡歷上寫上了解C++11,結果就是頻頻被問到有關C++11。。。發現自己答的並不算太好~ 因此,簡單總結一下,我在找實習的過程被問到的C++11特性。 1. nul

原创 shell腳本運行的原理(source命令等)

Shell英文意思是外殼, 用戶可以通過Shell和操作系統交互,通俗的講Shell就是一個解釋器,當我們輸入命令Shell就解釋執行,Shell有很多版本,我們一般使用的都是bash,在Linux輸入一條命令可以查看當前正在使用