原创 tcp/ip四層模型之數據鏈路層

文章目錄數據鏈路層的作用數據鏈路層的主要工作認識以太網以太網幀格式MAC地址認識MTUMTU對IP協議的影響MTU對UDP協議的影響MTU對TCP協議的影響 數據鏈路層的作用 將從物理層接收到的比特流處理成數據幀,然後交給上層網

原创 求一個數組的所有組合

題目名稱:求和 題目描述: 輸入兩個整數 n 和 m,從數列1,2,3…n 中隨意取幾個數,使其和等於 m ,要求將其中所有的可能組合列出來 輸入描述: 每個測試輸入包含2個整數,n和m 輸出描述: 按每個組合的字典序排列輸出,

原创 tcp/ip四層模型之網絡層

文章目錄基本概念ip協議報頭網段劃分私有ip地址和公網ip地址路由 基本概念 網絡層實現數據包的選路和轉發。 網絡層最核心的協議是IP協議(Internet Protocol,因特網協議)。IP協議根據數據包的目的IP地址來決定

原创 udp協議詳解

1.udp頭部 源端口: 源端口號,需要對方回信時選用,不需要時全部置0 目的端口:目的端口號,在終點交付報文的時候需要用到 UDP的數據報的長度(包括首部和數據)其最小值爲8(只有首部) 校驗和:檢測UDP數據報在傳輸中是否

原创 小白都能看懂的TCP協議

1.定義:傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793 定義。 2.tcp頭部 源/目的端口號:表示數據是從

原创 什麼是URL

1.概念 在WWW上,每一信息資源都有統一的且在網上唯一的地址,該地址就叫URL(Uniform Resource Locator,統一資源定位符),它是WWW的統一資源定位標誌,就是指網絡地址。 2.組成 URL由三部分組成:資

原创 在線oj之編譯運行模塊

編譯運行模塊主要負責用戶代碼的編譯和運行,在此過程中我們會定義五個文件,他們分別是:源代碼、程序、編譯錯誤文件、運行錯誤文件、標準輸出 在編譯和運行方法中,我們會進行程序替換,並使用重定向分別將編譯結果和運行結果寫入文件然後返回給

原创 在線oj之日誌模塊

日誌模塊用於打印日誌信息 #pragma once #include <string.h> #include <sys/time.h> #include <iostream> #include <cstdio> //當前實現

原创 在線oj之server模塊

oj_server.cpp模塊是整個在線oj項目與外界溝通的橋樑,負責項目後臺與外界的通信。在這個模塊中使用了github上一個http開源庫(上一篇博客我提到過),模板填充技術以及Json數據格式,裏面有些可能看不懂,後面的博客

原创 在線oj之試題模塊

試題模塊用於保存試題信息(編號,題目,保存路徑,難度),提供接口用於server端調用。 保存題目的數據結構我們採用unordered_map,因爲其底層採用hash結構,所以我們在查找題目的時候更快 <k, v> 對應 <題目i

原创 在線oj之頁面渲染模塊

頁面渲染模塊的作用是將我們從後臺獲取到的數據渲染到html頁面上。爲此,我們採用了geogle的開源html模板庫ctemplate,具體介紹可以百度。 我使用的是碼雲上大神編譯好的(只支持centOS7),其他環境需要自己編譯。

原创 在線oj之工具模塊

工具模塊用於提供一些整個項目需要使用的接口 裏面用到了boost庫,需要自己安裝,boost庫介紹 裏面用到了url解碼,我們採用了網上一套通用的代碼,簡單修改下就能使用,ulrencode鏈接 #pragma once #in

原创 centos8誤刪/usr/bin/ld文件解決方案

誤刪/usr/bin/ld文件後會導致gcc或g++在編譯時出錯 /usr/bin/ld: error while loading shared libraries: libbfd-2.27-41.base.el7_7.2.so

原创 在線oj項目框架和前期準備工作

整體框架 1.目標:實現一個在線判題系統(類似於leetcode) 2.前臺工作流程: ①請求題目列表 ②獲取題目詳細信息 ③作答 ④提交代碼 ⑤獲取結果 3.後臺工作流程: ①啓動服務 ②監聽,等待客戶端連接 ③返回題目

原创 vim下多行註釋和取消

多行註釋: 進入命令行模式,按ctrl + v進入 visual block模式,然後按j, 或者k選中多行,把需要註釋的行標記起來 按大寫字母 I,再插入註釋符,例如// 按esc鍵就會全部註釋了 取消多行註釋: