日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

处理器,操作系统,编译器,调试器,语言和工具,网络

發布時間:2023/12/31 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理器,操作系统,编译器,调试器,语言和工具,网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

處理器

常用處理器架構、指令集

國產處理器

字長和處理器類型的關系

不同處理器的大小端

查看處理器類型

核與線程之間的關系

如何綁定處理器

基本的匯編原子操作

加減

比較后交換

交換

操作系統

操作系統接口標準,名稱,廠商

有哪些國產操作系統

哪些是實時、哪些是非實時操作系統

設置時間、時區

設置用戶、密碼和文件讀、寫、運行權限

查找文件、字符串及管道操作

遠程連接

ssh

vnc,winscp

命令行,查看內存、磁盤、進程、線程資源使用情況

查看操作系統、Glibc、GCC版本

如何殺死進程

如何查看系統日志

編寫批處理和Shell腳本

Tty切換

輸出stdout\stderror的意義,會重定向

編譯器

編譯器選項,頭文件包含方式、庫連接方式、優化選項

常用編譯選項

頭文件包含和庫鏈接

優化選項

類型未定義、缺少引用解決辦法

優化級別設置

編碼方式配置

并行編譯選項

VS

Windows 、Linux、下查看符號表,dumpbin、readelf、objdump用法

用denpends和ldd查看依賴關系

如何設置導出調試信息

調試器

設置調試斷點

使用快捷鍵操作

查看內存信息

遠程調試

附加部分代碼調試

調試時更改內存值

設置調試斷點條件

使用GDB調試基本程序

查看和調試軟件鎖死原因

語言和工具

SVN基本操作,checkin \check out\ update\add

與SVN特定版本比較,revert到某一個版本

內存對齊

不同語言的接口實現

C++插入C代碼

不同語言版本的主要差異

C++11 && C++98

c98 && c99

網絡

網絡地址、MAC地址查看、配置

Route路由查看

TCP基本原理

TCP頭

三次握手

四次揮手

UDP基本原理

UDP頭

設置不同防火墻

常用軟件默認端口

Wireshark查看過濾網絡包

netstat查看應用綁定的端口

iperf3測試不同協議下的網絡可用帶寬

調整操作系統和網卡的工作模式、緩沖區大小

不同協議包頭大小

后續補充


處理器

常用處理器架構、指令集

CISC:x86、x86_64-litte
RISC:Arm、MIPS(龍芯)、PowerPC-big

國產處理器

mips陣營:龍芯
arm陣營: 飛騰,海思麒麟
IBM powerpc陣營:
宏芯x86:兆芯,申威

字長和處理器類型的關系

計算機字長(機器字長)取決于數據總線的寬度,通常就是CPU一次能處理的數據的位數(CPU位數)。

不同處理器的大小端

Big Endian:低字節存儲在高地址
eg:PowerPC、IBM、Sun
Little Endian:低字節存放在低地址
eg:x86、DEC.

查看處理器類型

uname -m

核與線程之間的關系

總的邏輯 cpu 數 = 物理 cpu 數 * 每顆物理 cpu 的核心數 * 每個核心的超線程數

如何綁定處理器

cat /proc/cpuinfo|grep "physical id"|sort -u|wc -l
查看物理CPU個數
cat /proc/cpuinfo|grep "cpu cores"|uniq
查看每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo|grep "processor"|wc -l
查看邏輯CPU的個數
cat /proc/cpuinfo|grep "name"|cut -f2 -d:|uniq
查看CPU的名稱型號
ps -eo pid,args,psr
查看進程運行的邏輯CPU


taskset -c [CPU NUMBER] -p PID
指定cpu

基本的匯編原子操作

加減

mov? ? ?ecx, Addend; mov? ? ?eax, 0FFFFFFFFh;//-1 (mov? ? ? eax, 1;)//+1 lock xadd [ecx], eax; //加-1 dec? ? ?eax;


比較后交換

mov? ? ?ecx, Destination; mov? ? ?edx, Exchange; mov? ? ?eax, Comperand; lock cmpxchg [ecx], edx;

交換

? ? ? mov? ? ? ecx, Target;mov? ? ? edx, Value; label:lock cmpxchg [ecx], edx;//加jnz? ? ? short label;

操作系統

操作系統接口標準,名稱,廠商

操作系統 提供了3類型的接口供用戶使用:

  • 命令接口. 提供一組命令供用戶直接或間接操作。. 根據作業的方式不同,命令接口又分為聯機命令接口和脫機命令接口。
  • 程序接口. 程序接口 由一組系統調用命令組成,提供一組系統調用命令供 用戶程序 使用。
  • 圖形界面接口.
  • 名稱廠商
    posixIEEE

    有哪些國產操作系統

    國產操作系統
    中標麒麟(NeoKylin)銀河麒麟操作系統inux(Deepin)普華操作系統中科方德操作系統
    中興新支點操作系統一銘操作系統優麒麟(UbuntuKylin)湖南麒麟 KylinsecstartOS(起點操作系統)
    共創Linux桌面操作系統威科樂恩Linux(WIOS)恩普操作系統UOS 統一操作系統紅旗Linux

    哪些是實時、哪些是非實時操作系統

    ????????實時操作系統的實時性是第一要求,需要調度一切可利用的資源完成實時任務。根據響應時間在微秒毫秒級的不同,可分為強實時準實時弱實時三種。強實時系統必須是對即時的事件作出反應,絕對不能錯過事件處理時限。?

    實時操作系統:VxWorks、mC/OS-II、RT-Linux、QNX?
    非實時操作系統:Linux/Windows

    設置時間、時區

    查看時間:date
    設置時間(年月日):date -s 3/29/2021 (其中-s 指的是set)
    設置時間(時分秒):date -s 15:52:36
    設置時間(年月日時分秒) :date -s "2022-3-29 18:44:02"
    查看時區: date -R

    關閉網絡時間協議同步時間:sudo timedatectl set-ntp false
    修改時區:timedatectl set-timezone “Asia/Shanghai”
    修改時區:timedatectl set-time '16:10:40 2015-11-20'

    設置用戶、密碼和文件讀、寫、運行權限

    # useradd 用戶名稱 // 添加用戶 # passwd 用戶名稱 // 修改用戶密碼 # chmod [who] [+ | - | =] [mode] 文件名

    查找文件、字符串及管道操作

    將當前目錄及其子目錄下所有文件后綴為 .c 的文件列出來:

    find . -name "*.c"

    將當前目錄及其子目錄中的所有文件列出:

    find . -type f

    將當前目錄及其子目錄下所有最近 20 天內更新過的文件列出:

    find . -ctime? 20

    遠程連接

    ssh

    ssh user@remote -p port?

    // 保證對端機器打開sshd服務,使用 systemctl status sshd.service?查看

    vnc,winscp

    桌面工具,粘貼兩個鏈接

    VNC的安裝與使用(Windows環境下使用VNC進行遠程桌面控制) - 簡書

    WinSCP安裝教程 - 簡書

    不過使用vnc client要注意,一定不能讓目標主機磁盤占用過大,不然會導致 vnc server服務無法啟動從而連接失敗

    命令行,查看內存、磁盤、進程、線程資源使用情況

    磁盤:df -h
    內存:sar -r
    進程:ps -elf
    線程:ps -T -p 20756、top -H -p 20756

    或者 top 一鍵搞定

    查看操作系統、Glibc、GCC版本

    uname -r // 操作系統 ldd --version // glibc gcc --version // gcc// 跨平臺交叉編譯時需要

    如何殺死進程

    kill -9 PID

    如何查看系統日志

    Windows:

    程序-查看事件日志

    Linux:
    /var/log/message 系統啟動后的信息和錯誤日志,是Red Hat Linux中最常用的日志之一
    /var/log/secure 與安全相關的日志信息
    /var/log/cron 與定時任務相關的日志信息
    /var/log/spooler 與UUCP和news設備相關的日志信息
    /var/log/boot.log 守護進程啟動和停止相關的日志消息
    /var/log/wtmp 該日志文件永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件

    編寫批處理和Shell腳本

    程序必須以下面的行開始(必須方在文件的第一行):?

    ? #!/bin/sh?

    符號#!用來告訴系統它后面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。?(能寫一些shell普通命令,命令用分號隔開)

    #!bin/sh echo "===============================================" echo "================啟動 ***===================" echo "===============================================" start-all.sh;

    Tty切換

    chvt N

    輸出stdout\stderror的意義,會重定向

    ????????cout的輸出可以重定向到一個文件中,而cerr必須輸出在顯示器上。cerr不經過緩沖區,直接向顯示器輸出信息,而clog中的信息存放在緩沖區,緩沖區滿或者遇到endl 時才輸出。緩沖區的的,就是減少訪問文件的次數。


    編譯器

    編譯器選項,頭文件包含方式、庫連接方式、優化選項

    常用編譯選項

    • -E 預處理,生成.i的文件[預處理器cpp]
    • -S?將預處理后的文件不轉換成匯編語言,生成文件.s[編譯器egcs]
    • -s 有匯編變為目標代碼(機器代碼)生成.o的文件[匯編器as]
    • -l 連接目標代碼,生成可執行程序[鏈接器ld]

    頭文件包含和庫鏈接

    -nostdinc 使編譯器不再系統默認的頭文件目錄里面找頭文件, 一般和 -I 聯合使用,明確限定頭文件的位置。

    -llibrary? ?制定編譯的時候使用的庫

    優化選項

    -O0 、-O1 、-O2 、-O3

    編譯器的優化選項的 4 個級別,-O0 表示沒有優化, -O1 為默認值,-O3 優化級別最高。

    類型未定義、缺少引用解決辦法

    • 檢查頭文件包含
    • 庫文件符號表
    • 頭文件包含覆蓋

    優化級別設置

    gcc中指定優化級別的參數有:-O0、-O1、-O2、-O3、-Og、-Os、-Ofast。

  • 在編譯時,如果沒有指定上面的任何優化參數,則默認為 -O0,即沒有優化。
  • 參數 -O1、-O2、-O3 中,隨著數字變大,代碼的優化程度也越高,不過這在某種意義上來說,也是以犧牲程序的可調試性為代價的。
  • 參數 -Og 是在 -O1 的基礎上,去掉了那些影響調試的優化,所以如果最終是為了調試程序,可以使用這個參數。不過光有這個參數也是不行的,這個參數只是告訴編譯器,編譯后的代碼不要影響調試,但調試信息的生成還是靠 -g 參數的。
  • 參數 -Os 是在 -O2 的基礎上,去掉了那些會導致最終可執行程序增大的優化,如果想要更小的可執行程序,可選擇這個參數。
  • ?參數 -Ofast 是在 -O3 的基礎上,添加了一些非常規優化,這些優化是通過打破一些國際標準(比如一些數學函數的實現標準)來實現的,所以一般不推薦使用該參數。
  • gcc -Q --help=optimizers -O3?

    查尋O3參數具體做了哪些優化

    編碼方式配置

    • 源碼字符集:源碼存儲在計算機磁盤上所采用的編碼方式。
    • 執行字符集:運行的程序中的字符在內存中存儲所使用的編碼方式。
    • 內部字符集:編譯器內部使用的字符集。

    以gcc為例:

    -finput-charset 設置輸入字符集,用于從輸入的字符集轉換,默認為utf8。
    -fexec-charset=charset 設置執行字符集。決定了字符串常量在內存中的編碼。默認為utf8。

    ????????輸入字符集決定了源碼到內部字符集的轉換方式。源碼存儲方式如果為gbk,且編譯器指定的輸入字符集為gbk。在將c語言編譯為匯編時,會將源碼字符集轉換為內部utf-8。
    ????????執行字符集決定了由內部字符集到執行字符集的轉換方式。如果設置為gbk,在將匯編語言翻譯成機器語言時,會將字符串常量從內部字符集utf-8向gbk轉換。
    ????????如果二者都為utf-8,由于gcc內部字符集也為utf-8,不會發生轉換。內存中的字符串常量的編碼直接取決于源碼的編碼。

    并行編譯選項

    VS

  • 選取某項目的“Properties(屬性)
  • 在打開的對話框中,左側選擇 “C/C++”->“General(常規)”中將“ Multi-processor Compilation(多處理器編譯)”打開
  • “C/C++”->“Code Generation(代碼生成)”中將“Enable Minimal Rebuild(啟用最小重新生成)”關閉
  • 在“Debug(調試)”中選取項目的“Options and Settings (選項和設置)”->“Projects and Solutions (項目和解決方案)”->“ Build and Run (編譯與運行)”中設置“ maximum number of parallel project builds(最大并發C++編譯數)”(即開發項目機器本身的CPU所包含的核數)
  • Windows 、Linux、下查看符號表,dumpbin、readelf、objdump用法

    dumpbin

    dumpbin.exe /SYMBOLS <file(.lib)>

    readelf

    readelf -s <file>

    objdump

    objdmp -t <file(.so)>

    nm

    nm -D <file>? ? // 查村符號并支持反譯為函數名

    用denpends和ldd查看依賴關系

    ldd <filename> // linuxdenpends 軟件打開可執行文件或者動態庫查看依賴 // windows

    如何設置導出調試信息

    # gdb <file> // 進入到gdb命令行中 # set logging file <filename> // 設置輸出文件 # set logging on // 開始拷貝 # thread apply all bt // 查看所有線程堆棧并輸出到文件中 # set logging off // 停止拷貝

    調試器

    設置調試斷點

    GDB

    break | b | 添加斷點 tbreak | tb | 添加臨時斷點 delete | d | 刪除斷點 enable | enable | 啟用某個斷點 disable | disable | 禁用某個斷點

    使用快捷鍵操作

    GDB

    run | r | 運行一個待調試的程序 continue | c | 讓暫停的程序繼續運行 next | n | 運行到下一行 step | s | 單步執行,遇到函數會進入 until | u | 運行到指定行停下來 finish | fi | 結束當前調用函數,回到上一層調用函數處 return | return | 結束當前調用函數并返回指定值,到上一層函數調用處 jump | j | 將當前程序執行流跳轉到指定行或地址 print | p | 打印變量或寄存器值 backtrace | bt | 查看當前線程的調用堆棧 frame | f | 切換到當前調用線程的指定堆棧 thread | thread | 切換到指定線程 break | b | 添加斷點 tbreak | tb | 添加臨時斷點 delete | d | 刪除斷點 enable | enable | 啟用某個斷點 disable | disable | 禁用某個斷點 watch | watch | 監視某一個變量或內存地址的值是否發生變化 list | l | 顯示源碼 info | i | 查看斷點 / 線程等信息 ptype | ptype | 查看變量類型 disassemble | dis | 查看匯編代碼 set args | set args | 設置程序啟動命令行參數 show args | show args | 查看設置的命令行參數

    查看內存信息

    GDB

    print | p | 打印變量或寄存器值 backtrace | bt | 查看當前線程的調用堆棧 watch | watch | 監視某一個變量或內存地址的值是否發生變化

    遠程調試

    gdbserver、VsCode、qtcreator、VS2010、VisualGDB

    附加部分代碼調試

    qtcreator
    直接將想要調試的文件拖進qt中,但必須保證代碼版本一致(帶界面)

    調試時更改內存值

    GDB

    (gdb) whatis tmp type = double (gdb) p tmp $4 = 13 (gdb) set var tmp=47

    不能直接使用set tmp=47,因為set的子命令可能跟變量名沖突導致運行錯誤

    set {int}0x83040 = 4

    設置調試斷點條件

    GDB

    (gdb) b N if i == 8

    使用GDB調試基本程序

    GDB調試主要有三種方式

    • 直接調試目標程序:gdb ./hello_server
    • 附加進程id:gdb attach pid
    • 調試core文件:gdb filename corename

    查看和調試軟件鎖死原因

    方法1:

  • attach pid
  • bt
  • 定位到 pthread_mutex_lock()
  • 方法2:

  • attach pid
  • thread apply all bt?
  • 定位到 thread_proc (arg=0x0)
  • 方法3:

  • gdb test 進程號 ? | 啟動gdb attach 進程
  • info threads? ? ? ? ?| 顯示所有線程信息
  • thread 2? ? ? ? ? ? ? ?| 調到第2個線程(查看線程中帶有 __111_lock_wait() 的線程)
  • bt? ? ? ? ? ? ? ? ? ? ? ? ?| 查看第2個線程的堆棧,即可可以看到線程死鎖的地方

  • 語言和工具

    SVN基本操作,checkin \check out\ update\add

    拉取代碼:

    ????????svn checkout svn://192.168.0.1/runoob01 --username=user01
    提交代碼:

    ? ? ? ? cat readme //?在庫本版中需要增加一個readme的說明文件。

    ????????svn status //?查看工作副本中的狀態,此時 readme的狀態為?,說明它還未加到版本

    ????????????????????????????控制中。
    ????????svn add readme //?將文件readme加到版本控制,等待提交到版本庫。
    ????????svn status //?查看工作副本中的狀態,此時 readme的狀態為A,它意味著這個文件已經

    ????????????????????????????被成功地添加到了版本控制中。
    ????????svn commit -m "SVN readme" //?為了把 readme 存儲到版本庫中,使用 commit -m

    ????????????????????????????????????????????????????????????加上注釋信息來提交。

    ????????????????????????????????????????????????????????????如果你忽略了 -m 選項, SVN會打開一個可以輸入

    ????????????????????????????????????????????????????????????多行的文本編輯器來讓你輸入提交信息。

    更新代碼:

    ????????svn update

    與SVN特定版本比較,revert到某一個版本

    # svn revert readme // 文件 readme 回歸到未修改狀態 # svn revert -R trunk // 目錄 trunk 回歸到未修改狀態 # svn merge -r 22:21 readme // 恢復一個已經提交的版本:現版本22,舊版本21。

    內存對齊

    默認對齊數可以通過預編譯命令#pragma pack(n),n = 1,2,4,8,16來改變。

    詳聊內存對齊(Memory alignment)-技術圈

    #pragma pack(4)

    #pragma pack(1)

    #pragma pack(2)

    需要特別注意的有幾點

  • 對齊數時變化的
  • 不同的處理器默認對齊數不同,跨平臺通信要特別注意
  • 對其原則是在當前對齊數倍數的空間內是否能放下我下一個類型,可以直接放,不可以進行填充對齊
  • 結構體中有其他結構體,各自計算然后相加
  • 不同語言的接口實現

    C++插入C代碼

    extern "C" {void funcA(int x); }

    不同語言版本的主要差異

    C++11 && C++98

  • 自動類型推導auto
  • ?列表初始化
  • 變量類型推導
  • 范圍for循環
  • 返回類型后置語法
  • final和override
  • =default和=delete
  • lambda表達式
  • std::move
  • std::array
  • std::forward_list
  • std::unordered_map和std::unordered_set
  • 智能指針
  • 右值引用&線程庫
  • c98 && c99

  • 增加restrict指針
  • inline(內聯)關鍵字
  • 新增數據類型?
  • 對數組的增強
  • 單行注釋
  • 分散代碼與聲明
  • 預處理程序的修改
  • for語句內的變量聲明?
  • 復合賦值
  • 柔性數組結構成員
  • 指定的初始化符
  • printf()和scanf()函數系列的增強
  • C99新增的庫
  • __func__預定義標識符

  • 網絡

    網絡地址、MAC地址查看、配置

    查看IP/MAC

    $ ifconfig

    設置IP和掩碼

    # ifconfig eth0 192.168.5.40 netmask 255.255.255.0

    設置網關

    # route add default gw 192.168.5.1

    Route路由查看

    centos7

    $ route / $netstat -rn

    Ubuntu20.04

    $ route / $netstat -rn
    Destination目標網絡/主機
    Gateway網關地址,*表示目標和本機在同一網絡,不需要路由
    Genmask網絡掩碼
    Flags

    路由項標志,常見標志有如下

    U 該路由項是活動的
    H 該路由項的目標是一臺主機
    G 該路由項的目標是網關
    D 該路由項是重定向生成的
    M 該路由項被重定向修改過
    R 動態路由算法生成的
    A 該路由被 addrconf 安裝
    C 緩存(cache entry)
    ! 拒絕路由(reject route)。匹配這一條報文將丟棄

    Metric路由距離,即到達指定網絡所需的中轉數 Ref 路由項被引用的次數(Linux未使用)
    Use該路由項被使用的次數
    Iface該路由項對應的輸出網卡接口

    TCP基本原理

    TCP頭

    • URG:緊急比特(urgent)。當URG=1時,表明緊急指針字段有效,代表該封包為緊急封包。它告訴系統此報文段中有緊急數據,應盡快傳送(相當于高優先級的數據), 且上圖中的 Urgent Pointer 字段也會被啟用。
    • ACK:確認比特(Acknowledge)。只有當ACK=1時確認號字段才有效,代表這個封包為確認封包。當ACK=0時,確認號無效。
    • PSH:(Push function)。若為1時,代表要求對方立即傳送緩沖區內的其他對應封包,而無需等緩沖滿了才送。
    • RST:復位比特(Reset) 。當RST=1時,表明TCP連接中出現嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。
    • SYN:同步比特(Synchronous)。SYN置為1,就表示這是一個連接請求或連接接受報文,通常帶有 SYN 標志的封包表示『主動』要連接到對方的意思。
    • FIN:終止比特(Final)。用來釋放一個連接。當FIN=1時,表明此報文段的發送端的數據已發送完畢,并要求釋放運輸連接。

    三次握手

  • 第一次握手:建立連接時,客戶端A發送SYN包[SYN=1,seq=x]到服務器B,并進入SYN_SEND狀態,等待服務器B確認。
  • 第二次握手:服務器B收到SYN包,必須確認客戶A的SYN,同時自己也發送一個SYN包,即SYN+ACK包[SYN=1,ACK=1,seq=y,ack=x+1],此時服務器B進入SYN_RECV狀態。
  • 第三次握手:客戶端A收到服務器B的SYN+ACK包,向服務器B發送確認包ACK[ACK=1,seq=x+1,ack=y+1],此包發送完畢,客戶端A和服務器B進入ESTABLISHED狀態,完成三次握手。 完成三次握手,客戶端與服務器開始傳送數據。
  • 四次揮手

  • 首先A B端的TCP進程都處于established狀態, 當A的應用程序傳送完報文段,就會去主動關閉連接。A會停止發送報文段(但是還會接收),并向B發送[FIN = 1,seq=u]數據,之后進入FIN-WAIT-1狀態;
  • B接收到A發送的請求之后,會通知應用進程,A已經不再發送數據,同時B會向A發送ACK確認數據[ACK=1,seq=v,ack=u+1 ],B進入CLOSE-WAIT狀態,A接收到B發送的數據之后,A進入FIN-WAIT-2狀態;此時A到B方的連接已經關閉了(即半連接狀態)。
  • 當B的應用進程發現自己也沒有數據需要傳送,B應用進程就會發出被動關閉的請求,B此時向A發送[FIN=1,ACK=1,seq=w,ack=u+1]數據,并且進入LAST-ACK狀態;
  • A接收到B發送的數據之后,向B發送ACK確認數據[ACK =1,seq=u+1,ack=w+1],進入TIME-WAIT狀態,等待2MSL之后正常關閉連接進入CLOSED狀態;B接收到A發送的確認之后進入CLOSED狀態。B到A方的連接關閉!至此,TCP連接才真正全部關閉!
  • UDP基本原理

    UDP頭

    設置不同防火墻

    centos7
    啟動防火墻:# systemctl start firewalld
    查看防火墻狀態:# systemctl status firewalld
    停止防火墻:# systemctl disable firewalld
    禁用防火墻:# systemctl stop firewalld

    Ubuntu20.04
    開啟/關閉防火墻:$ sudo ufw enable|disable
    允許 53 端口
    $ sudo ufw allow 53
    禁用 53 端口
    $ sudo ufw delete allow 53
    允許 80 端口
    $ sudo ufw allow 80/tcp
    禁用 80 端口
    $ sudo ufw delete allow 80/tcp
    允許 smtp 端口
    $ sudo ufw allow smtp
    刪除 smtp 端口的許可
    $ sudo ufw delete allow smtp
    允許某特定 IP
    $ sudo ufw allow from 192.168.254.254
    刪除上面的規則
    $ sudo ufw delete allow from 192.168.254.254

    常用軟件默認端口

    HTTP:80/8080/3128/8081/9080
    HTTP:443
    FTP(文件傳輸):21
    Telnet(遠程登錄):23
    ssh(VNC 安全登錄):22
    DNS:53

    Wireshark查看過濾網絡包

    過濾源ip、目的ip:

    • 查找目的地址為192.168.101.8的包
    • ip.dst==192.168.101.8
    • 查找源地址為
    • ip.src==1.1.1.1


    端口過濾:

    • tcp.port==80,
    • 源端口和目的端口為80
    • tcp.dstport==80
    • 只過濾目的端口為80的
    • tcp.srcport==80
    • 只過濾源端口為80的


    協議過濾:

    • 在Filter框中直接輸入協議名即可,如過濾HTTP的協議


    http模式過濾:

    • 如過濾get包,http.request.method=="GET",過濾post包,http.request.method=="POST"


    連接符and

    • 過濾兩種條件時,使用and連接,如過濾ip為192.168.101.8并且為http協議的,ip.src==192.168.101.8 and http。

    netstat查看應用綁定的端口

    windows

    netstat -ano

    Linux

    TCP:netstat -ntlp<br> UDP:netstat -nulp

    iperf3測試不同協議下的網絡可用帶寬

    服務端

    iperf3 -s -i 1 -p 5201

    客戶端

    TCP iperf3 -c 192.168.1.120 -i 1 -t 60 -p 5201UDP iperf3 -u -c 192.168.1.120 -b 1000m -t 60 -p 5201

    調整操作系統和網卡的工作模式、緩沖區大小

    工作模式

    查看:mii-tool -v ens33 調整:mii-tool -F 10baseT-HD ens33 恢復自適應:mii-tool -r ens33 // HD:半雙工 FD:全雙工

    緩沖區大小

    查看:ethtool -g ens33 調整:ethtool -G ens33 rx 4096 tx 4096

    不同協議包頭大小

    以太頭 14 尾 4
    IP頭 20
    TCP頭 20
    UDP頭 8


    后續補充

    • 操作系統
      • 調整線程、進程優先級
      • 用戶線程和處理器線程之間的關系
      • 鎖的原理,連接讀寫鎖和自旋鎖的原理
      • 系統資源和文件句柄數、系統鎖等的關系
      • 查看不同操作系統定時器誤差,由此引起線程切換時間范圍
    • 編譯器
      • 編譯的基本工程,能夠手動通過命令行操作程序
      • 編譯運行和解釋運行的區別
      • 哪些主流語言是解釋運行,哪些是編譯運行
      • Java語言虛擬機基本原理
      • 如何判斷編譯器版本
      • 附加部分代碼調試

    這篇文章呢主要是搜索和整理,歡迎大家留言補充和糾正。后面關于網絡和 rtps 我會單獨開一兩篇去詳講我碰到的一些問題和查看處理辦法。共勉。

    總結

    以上是生活随笔為你收集整理的处理器,操作系统,编译器,调试器,语言和工具,网络的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。