原创 OJ演練--救濟金髮放(循環)

(n<20)個人站成一圈,逆時針編號爲1~n。 有兩個官員,A從1開始逆時針數,B從n開始順時針數。 在每一輪中,官員A數k個就停下來,官員B數m個就停下來(注意有可能兩個官員停在同一個人上)。 接下來被官員選中的人(1個或者2個)離開隊

原创 C語言指針

一、細說指針 int p; //這是一個普通的整型變量 int *p; //首先從P 處開始,先與*結合,所以說明P 是一個指針, //然後再與int 結合,說明指針所指向的內容的類型爲int 型.所以P是一個返回整型數據的指針

原创 Linux進程狀態解析 之 R、S、D、T、Z、X

Linux是一個多用戶,多任務的系統,可以同時運行多個用戶的多個程序,就必然會產生很多的進程,而每個進程會有不同的狀態。 Linux進程狀態:R (TASK_RUNNING),可執行狀態。 只有在該狀態的進程纔可能在CPU上運行。而同一時

原创 c語言str系列函數

#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char *str1; char *str2 = "Hello"; cha

原创 Repo學習筆記

repo是什麼 repo是Google開發的用於管理Android版本庫的一個工具,repo並不是用於取代git,而是用Python對git進行了一定的封裝,簡化了對多個Git版本庫的管理。對於repo管理的任何一個版本庫,都需要使用gi

原创 shell 進階

字符串插入替換(sed) 1,插入與刪除 #特定字符串的行前插入新行 sed -i '/特定字符串/i 新行字符串' file #特定字符串的行後插入新行 sed -i '/特定字符串/a 新行字符串' file #文件末尾插入新行

原创 C/C++:使用dlopen、dlsym、dlclose運行時裝載動態庫

一個可執行程序可能與多個動態庫有關聯,通常是在程序運行時將必要的動態庫裝載入進程實體(內存中); 另外一種,則是使用dlopen/dlsym/dlclose來動態地將動態庫裝載到當前進程實體中. 簡單點說,就是: 1.dlopen將指定的

原创 Linux命令大全(手冊)

http://man.linuxde.net/

原创 ovs-vswitchd的啓動流程分析

ovs-vswitchd.c的main函數最終會進入一個while循環,在這個無限循環中,裏面最重要的兩個函數是bridge_run()和netdev_run()。 bridge_init(remote); free(re

原创 DPDK單核收發包 源碼解讀

dpdk 使用 mbuf 保存 packet,mempool 用於操作 mbuf。 數據結構: rte_mbuf——dpdk對報文的封裝結構 rte_ring——dpdk無鎖緩衝區,用於高性能的生產者消費者場景,比如virtio的前後

原创 rte_mbuf操作函數

mbuf是報文中的描素的結構體,是整個轉發過程中最核心的數據結構之一。主要針對於mbuf的常用API與基本原理做一個簡單的介紹。 內存結構 首先我們看一下rte_mbuf的數據結構的定義:先主要說明幾個跟數據有關的變量 struct rt

原创 TCP相關的工具--tcpdump,netstat和ss

一,tcpdump tcpdump採用命令行方式對接口的數據包進行篩選抓取,其豐富特性表現在靈活的表達式上。 不帶任何選項的tcpdump,默認會抓取第一個網絡接口,且只有將tcpdump進程終止纔會停止抓包 1.1, tcpdump選

原创 C語言--socket編程

分爲服務器端和客戶端,服務器端監聽端口發來的請求,收到後向客戶端發送一個Hello World,客戶機負責發送消息並打印收到的Hello World. 服務器步驟:建立socket,綁定socket和地址信息,開啓監聽,收到請求後發送數據

原创 RPM學習指南

rpm簡介 常見的Linux發行版主要可以分爲兩類,類ReadHat系列和類Debian系列,這裏我們是以其軟件包的格式來劃分的,這兩類系統分別提供了自己的軟件包管理系統和相應的工具。 類RedHat系統中軟件包的後綴是rpm;類Deb

原创 詳解IP分片與TCP分段的區別

首先注意:一般聽到的TCP分片應該稱爲TCP分段。IP分片與TCP分片是兩個不同概念,別把IP分片與TCP分片別弄混淆了, 接下來直接劃重點,兩者主要區別: 1.IP分片產生的原因是網絡層的MTU;TCP分段產生原因是MSS. 2.IP分