進程和內存管理

?

目錄

一.進程的基本信息

1.1進程的定義

1.2進程的特征

1.3進程的組成

1.4線程產生的背景?

1.5線程的定義

1.6進程與線程的區別?

?1.7進程的類別

1.8進程的優先級?

1.8.1進程優先級的概念

1.8.2PRI和NI

?1.9僵尸進程

? 1.9.1僵尸進程的定義

1.9.2僵尸進程產生的原因

1.9.3如何解決僵尸進程

二.查看進程?

2.1靜態查看進程信息 ps命令

2.1.1ps aux

2.1.2ps -le

2.1.3ps -l

2.1.4ps -ef?

?2.1.4 -o的使用

2.1.5? [選項]--sort的使用?

2.2動態查看進程信息 top命令?

2.2.1top命令顯示的界面的組成

2.2.2top命令的選項

2.2.3top命令的交互界面

2.3 以樹狀結構顯示當前系統中運行的進程 pstree

2.4?查看指定的進程信息?

2.4.1根據PID查程序名 prtstat

2.4.2根據程序名查PID?pgrep和pidof

2.5?監控系統資源 vmstat

1. Procs(進程)

2. Memory

3. Swap(交換分區)

4. I/O(磁盤)

5. System(系統)

6. CPU

?三:進程的前后臺調度?

?3.1區別

3.2前臺和后臺程序的切換?

四:結束進程?

4.1kill

4.2killall

五.計劃管理工具

5.1計劃管理工具的定義

5.2at命令

5.2.1定義

5.2.2格式

5.2.3例子

5.3crontab工具?

5.3.1定義

5.3.2格式

六.怎么查看操作系統的五大性能


一.進程的基本信息

1.1進程的定義

運行中的程序的一個副本,是被載入內存的指令集合,是資源分配的單位。

1.2進程的特征

動態性:進程是程序的一次動態執行過程,具有生命周期(創建、運行、終止)。

并發性:任何進程都可以同其他進程一起并發執行。

獨立性:進程是系統進行資源分配和調度的一個獨立單位。

結構性:由程序、數據集合和進程控制塊(PCB)三部分組成。

1.3進程的組成

  1. 程序:用于描述進程要完成的功能,是控制進程執行的指令集。
  2. 數據集合:是程序在執行時所需要的數據和工作區。
  3. 程序控制塊(Program Control Block,簡稱PCB):包含進程的描述信息和控制信息,是進程? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?存在的唯一標志。

1.4線程產生的背景?

早期操作系統中,進程是資源分配和調度的最小單位。但隨著應用復雜度提升,進程切換的開銷(如內存隔離、上下文保存)成為性能瓶頸,因此引入了更輕量的線程概念。

1.5線程的定義

線程是程序執行中一個單一的順序控制流程,是程序執行流的最小單元,是處理器調度和分派的基本單位。一個進程可以有一個或多個線程,各個線程之間共享程序的內存空間。

1.6進程與線程的區別?

  1. 線程是程序執行的最小單位,而進程是操作系統分配資源的最小單位

  2. 一個進程由一個或多個線程組成,線程是一個進程中代碼的不同執行路線

  3. 進程之間相互獨立,但同一進程下的各個線程之間共享程序的內存空間

  4. 進程只接收任務, 不處理任務,線程才是干活的那個

題目

如何確定一個程序 ?是多線程 還是 單線程?

grep -i threads /proc/[PID]/status  # 查看指定進程的線程數
prtstat [PID]                      # 顯示進程詳細信息

?1.7進程的類別

  1. 守護進程:完全脫離終端;獨立于用戶會話運行,系統重啟或顯式終止才會結束。

  2. 前臺進程:?直接與用戶終端(如命令行界面)綁定,接收用戶輸入并實時輸出結果;生命周期與終端會話綁定,終端關閉時進程會被終止;與守護進程相比,前臺進程可能被系統分配更高優先級以保證響應速度。

1.8進程的優先級?

1.8.1進程優先級的概念

進程優先級是操作系統調度資源的依據,決定了進程獲取CPU時間的順序。優先級越高,進程越容易被調度執行。

1.8.2PRI和NI

在?Linux?系統中,表示進程優先級的有兩個參數:Priority Nice

  1. PRI(Priority):直接表示進程優先級,數值越小優先級越高

  2. NI(Nice):調整PRI的修正值,范圍通常為?20到19。通過nice值可間接影響優先級,例如:

    PRI新值=PRI原值+NI值

    NI值為負時提高優先級,為正時降低優先級。
ps axo pid,comm,ni  //查看[root@centos8 ~]#nice -n -10 ping 127.0.0.1//將進程的 nice值 設為 ?10[root@centos7 ~]#renice -n -20 2118//將進程的nice值調整為 -20//注意:普通用戶只能調高 NI 值,而不能降低,只有 root 用戶才能設定進程 NI 值為負值

?1.9僵尸進程

? 1.9.1僵尸進程的定義

僵尸進程是指?已經終止運行(Exit),但其退出狀態(Exit Status)尚未被父進程(Parent Process)回收?的進程。在 Linux/Unix 系統中,僵尸進程仍然占用一個?進程表項(Process Table Entry)。

1.9.2僵尸進程產生的原因

僵尸進程的產生主要有?兩個根本原因,都與?父進程未能正確處理子進程的退出狀態?有關

  1. 子進程終止后,父進程沒有調用?wait()?或?waitpid()?來讀取子進程的退出狀態

  2. ?父進程異常終止,未正確移交子進程給?init

1.9.3如何解決僵尸進程

[root@centos7 ~]#bash                 //進入子 Shell[root@centos7 ~]#echo $BASHPID      //打印當前Bash shell的進程ID(這里是1809)
1809
[root@centos7 ~]#echo $PPID          //打印其父進程ID(這里是1436)
1436
#將父進程設為停止態
[root@centos7 ~]#kill -19 1436      //殺死子進程,使其進入僵尸態[root@centos7 ~]#kill -9 1809      //向當前shell(1809)發送SIGKILL信號(9),強制終止當前shell[root@centos7 ~]#ps aux            //查看進程狀態,檢查是否有僵尸進程,STAT為Z,表示為僵尸態[root@centos7 ~]#kill -18 1436    //若是父進程未調用 wait()而產生的僵尸進程,則向父進程(1436)發 送SIGCONT信號(18),恢復被暫停的父進程[root@centos7 ~]#kill -9 1436      //若父進程異常終止未傳遞子進程,則向父進程(1436)發送SIGKILL 信號(9),強制終止父進程[root@centos7 ~]#ps aux           //再次觀察,可以發現僵尸態的進程不存在了

二.查看進程?

2.1靜態查看進程信息 ps命令

ps 即 process state,是用于查看當前運行的進程信息的命令。

格式:ps [選項]

選項功能
-a顯示當前終端下的所有進程信息,包括其他用戶的進程。與“x”選項結合時將示系統中所有的進程信息。
-u使用以用戶為主的格式輸出進程信息。
-x顯示當前用戶在所有終端下的進程信息。
-e顯示系統內的所有進程信息。
-l使用長(Long)格式顯示進程信息。
-f使用完整的(Full)格式顯示進程信
[選項]--sort?對屬性排序,屬性前加 - 表示倒序
?-o用于?自定義輸出,允許你只顯示特定的進程信息字段

2.1.1ps aux

顯示系統中所有用戶的進程

?了解

TTYtty1 ~ tty7 代表本地控制臺終端(可以通過 Alt+F1 ~ F7 快捷鍵切換不同的終端)
tty1~tty6 是本地的字符界面終端
tty7 是圖形終端
pts/0 ~ 255 代表虛擬終端,一般是遠程連接的終端,第一個遠程連接占用 pts/0,第二個
遠程連接占用 pts/1,?代表和終端無關
STAT 組合狀態示例
狀態碼	解釋
Ss	會話領導者(如 bash),處于可中斷睡眠狀態。
Rl	多線程進程(如 java),正在運行或可運行。
D<	高優先級的不可中斷睡眠進程(如內核磁盤 I/O 操作)。
S+	前臺進程(如 vim),處于可中斷睡眠狀態。
Z	僵尸進程(需父進程調用 wait() 回收資源)。

2.1.2ps -le

可以查看系統中所有的進程,而且還能看到進程的父進程的 PID 和進程優先級

?了解:

F?值含義
0普通進程,無特殊標志。
1進程剛被?fork()?但尚未執行新程序(如?bash?啟動的子進程)。
4進程以 root 權限運行(如?sudo?啟動的進程)。
40進程是會話領導者(如?sshd?或終端 shell)。
41會話領導者 + 剛?fork()(如?sshd?新創建的會話)。
100進程被調試器(如?gdb)附加。

2.1.3ps -l

只能看到當前 Shell 產生的進程

2.1.4ps -ef?

要注意區分與ps aux的區別

ps -ef?是?UNIX System V 風格?的命令格式,與?BSD 風格(如?ps aux)形成鮮明對比

3. 與 BSD 風格(ps aux)的關鍵區別

對比項UNIX 風格(ps -efBSD 風格(ps aux
選項前綴必須加?-(如?-e-f無?-(直接寫?aux
用戶顯示UID(數字)USER(用戶名)
CPU/內存無默認列,需手動指定(如?ps -eo %cpu,%mem默認顯示?%CPU?和?%MEM
命令行信息CMD(短格式),-f?顯示完整命令默認顯示完整?COMMAND
進程樹ps -ejHps axjf

?2.1.4 -o的使用

格式;ps -o <字段1>,<字段2>,<字段3>...

?例子:

2.1.5? [選項]--sort的使用?

作用:用于?按指定字段對進程列表進行排序,幫助快速識別高資源占用的進程或特定狀態的進程

ps [選項] --sort=[+|-]字段名+字段名:升序排序(默認,可省略 +)。-字段名:降序排序(如 -%cpu 表示 CPU 占用從高到低)。多字段排序:用逗號分隔(如 --sort=-%cpu,%mem)

例子:

2.2動態查看進程信息 top命令?

top是 Linux 系統中一個?實時動態監控系統進程和資源占用?的交互式工具,比?ps?更直觀,適合實時觀察 CPU、內存、負載等關鍵指標

2.2.1top命令顯示的界面的組成

界面主要分為兩部分

  1. 系統匯總信息(頂部前5行)

    • 系統運行時間、用戶數、負載均衡(Load Average)、CPU/內存使用率等。

  2. 進程列表(下方)

    • 實時更新的進程狀態(默認按 CPU 占用排序)。

如下圖所示:?

?系統匯總信息?(頂部前5行)?

第一行:系統運行時間與負載

內 容說 明
13:43:55系統當前時間
up 1:57系統的運行時間1小時57分鐘
4 users當前登錄了四個用戶
load average: 0.00,0.00,0.00系統在之前 1 分鐘、5 分鐘、15 分鐘的平均負載

?第二行:任務(進程)狀態

內 容說 明
Tasks: 216 total系統中的進程總數
1 running正在運行的進程數
215 sleeping睡眠的進程數
0 stopped正在停止的進程數
0 zombie僵尸進程數。如果不是 0,則需要手工檢查僵尸進程

第三行:CPU使用率

字段含義
us用戶空間?CPU 占用(如應用程序運算)。
sy內核空間?CPU 占用(如系統調用、中斷處理)。
ni低優先級進程nice值>0)占用的CPU。
id空閑CPU百分比(越高說明系統負載越輕)。
waI/O等待(高值說明磁盤或網絡瓶頸)。
hi/si硬件/軟件中斷占用(通常接近0)。
st虛擬機偷取時間(若>10%,說明宿主物理機資源不足)

第四行:物理內存(RAM)

字段含義
total內存總量(單位:MiB)。
free完全未使用的內存(Linux會充分利用空閑內存緩存數據,此值低未必是問題)。
used已使用的內存(含應用程序和緩存)。
buff/cache緩存和緩沖區內存(可被快速釋放供應用程序使用)。

第五行:交換分區(Swap)

字段含義
total/free/usedSwap分區總量/剩余/使用量(若used持續>0,說明物理內存不足)。
avail Mem可用內存估算(含未被占用的緩存,更真實反映剩余可用內存)。

?進程列表(動態刷新)

字段含義同ps 命令

2.2.2top命令的選項

選項作用示例
-d <秒>設置刷新間隔時間(默認3秒)。top -d 1(每秒刷新)
-n <次數>刷新指定次數后自動退出(適合腳本捕獲數據)。top -n 2(刷新2次后退出)
-b批處理模式(禁止交互,直接打印結果)。top -b -n 1 > log.txt
-p <PID>僅監控指定PID(多個PID用逗號分隔)。top -p 1234,5678
-u <用戶>僅顯示指定用戶的進程。top -u mysql
-c切換顯示完整命令行(啟動時直接展開)。top -c

2.2.3top命令的交互界面

在?top?運行后,可通過按鍵動態調整:

按鍵功能
m按內存使用率排序(升序)。
T按運行時間排序(降序)。
N按PID排序(升序)。
c按照 CPU 的使用率排序,默認就是此選項
k終止進程(需輸入PID,默認發送SIGTERM)。
r調整進程優先級(需輸入PID和新的nice值)。
h或者?顯示幫助菜單。
q退出?top

2.3 以樹狀結構顯示當前系統中運行的進程 pstree

pstree是 Linux 中用于?以樹狀結構可視化進程父子關系?的命令,比?ps?更直觀地展示進程的層次結構。

pstree  //不指定參數:顯示整個系統的進程樹,以 systemd(或 init)為根節點。pstree [選項] <PID>   //指定 PID:顯示該進程及其子進程的子樹。pstree [選項] <用戶名>  //指定用戶名:僅顯示該用戶的進程樹。常用選項
-a	顯示啟動每個進程對應的完整指令,包括啟動進程的路徑、參數等
-p  顯示PID
-T  不顯示線程thread,默認顯示線程
-u  顯示用戶切換
-H  pid 高亮顯示指定進程及其前輩進程

2.4?查看指定的進程信息?

2.4.1根據PID查程序名 prtstat

例子:查找PID=10268的進程信息

2.4.2根據程序名查PID?pgrep和pidof

選項作用
-l同時輸出進程名(否則僅輸出 PID)。
-u按用戶名過濾(如?-u root)。
-a顯示完整格式的進程名。
-p pid顯示指定進程的子進程。

例子:?

[root@test ~]# pgrep -l "log"    //顯示進程名
435 xfs-log/dm-0
713 xfs-log/sda1
790 xfs-log/md5
877 systemd-logind
885 abrt-watch-log
886 abrt-watch-log
890 rsyslogd[root@localhost ~]#pidof nginx   //查看  nginx進程的 pid 號
22142 22002

2.5?監控系統資源 vmstat

vmstat(Virtual Memory Statistics)是 Linux 系統中用于?監控系統資源使用情況?的命令行工具,主要報告?內存、進程、CPU 活動、磁盤 I/O?等關鍵指標。

1. Procs(進程)
字段含義
r運行隊列中的進程數(正在運行或等待 CPU 的進程,若持續 > CPU 核心數,說明 CPU 飽和)。
b不可中斷睡眠的進程數(通常因 I/O 阻塞,如磁盤讀寫)。
2. Memory
字段含義
swpd已使用的?交換分區(Swap)?大小。
free空閑的物理內存
buff用作?緩沖區?的內存(緩存文件元數據)。
cache用作?頁面緩存?的內存(緩存文件內容)。
3. Swap(交換分區)
字段含義
si從磁盤換入內存?的數據量(KB/s,高值說明內存不足)。
so從內存換出到磁盤?的數據量(KB/s,高值說明內存不足)。
4. I/O(磁盤)
字段含義
bi從塊設備讀取?的塊數(Blocks/s,如磁盤讀操作)。
bo寫入塊設備?的塊數(Blocks/s,如磁盤寫操作)。
5. System(系統)
字段含義
in每秒中斷次數(包括時鐘中斷)。
cs每秒上下文切換次數(進程/線程切換,高值可能因過多線程或鎖競爭)。
6. CPU
字段含義
us用戶空間?CPU 時間(應用程序運算)。
sy內核空間?CPU 時間(系統調用、中斷處理)。
id空閑 CPU 時間
waI/O 等待時間(高值說明磁盤瓶頸)。
st虛擬機偷取時間(若 >10%,物理機資源不足)。

?三:進程的前后臺調度?

?3.1區別

特性前臺進程后臺進程
終端控制權占用當前終端,用戶無法輸入其他命令,直到進程結束。不占用終端,啟動后立即返回 Shell,用戶可繼續操作。
適用場景需要交互的命令(如?vimpasswd)。長時間運行的任務(如編譯、下載),并行運行

3.2前臺和后臺程序的切換?

Linux 前后臺任務管理
├── **后臺啟動**
│   └── `命令 + &`(例:`python script.py &`)
├── **查看任務**
│   └── `jobs -l`(顯示任務編號與進程ID)
├── **前后臺切換**
│   ├── 前臺轉后臺:`Ctrl+Z` → `bg %任務編號`
│   └── 后臺轉前臺:`fg %任務編號`
├── **任務控制**
│   ├── 暫停任務:`Ctrl+Z`
│   └── 恢復后臺運行:`bg %任務編號`
└── **終止任務**└── `kill %任務編號` 或 `kill 進程ID`

四:結束進程?

4.1kill

kill?命令是 Linux 中用于?向進程發送信號(Signal)?的核心工具,用于終止進程

kill [選項] <PID>  // 通過進程ID發送信號常用信號
-1       重新加載進程-9       強制結束進程-19      暫時停止進程
-18      讓進程從停止狀態恢復

4.2killall

killall?是 Linux 中用于?按進程名批量終止進程?的命令,相比 kill(需指定 PID),它直接通過進程名稱操作,更適合批量管理。

命令格式
killall [選項] [信號] 進程名[選項]
-u  僅終止指定用戶的進程
-l  列出可用的信號列表
-i  交互式,詢問是否要殺死某個進程
-I  忽略進程名的大小寫

五.計劃管理工具

5.1計劃管理工具的定義

計劃管理工具是指通過系統化的方法,幫助個人或組織對任務、資源、時間等要素進行規劃、協調、監控和優化的軟件或平臺。其核心目標是通過結構化流程提升效率,確保項目或任務在既定時間、預算和資源約束下達成目標

5.2at命令

5.2.1定義

?at命令是 Linux 中用于?在指定時間執行一次性任務?的計劃任務工具,適合臨時安排未來某個時間點運行的命令或腳本。

5.2.2格式

at [選項] 時間??

其中關于時間有絕對時間相對時間兩種計時方式

絕對時間?

  • 格式用法
    HH:MM比如 04:00 AM。如果時間已過,則它會在第二天的同一時間執行。
    Midnight(midnight)代表 12:00 AM(也就是 00:00)。
    Noon(noon)代表 12:00 PM(相當于 12:00)。
    Teatime(teatime)下午茶代表 4:00 PM(相當于 16:00)。
    英文月名 日期 年份比如 January 15 2018 表示 2018 年 1 月 15 號,年份可有可無。
    MMDDYY、MM/DD/YY、MM.DD.YY比如 011518 表示 2018 年 1 月 15 號。

相對時間

now +n minutes-----------從現在起 n 分鐘后

now +n hours--------------從現在起 n 小時后

now +n days---------------從現在起 n 天后

now +n weeks-------------從現在起 n 周后

5.2.3例子

at 14:30
at> echo "會議時間到了!" > ~/reminder.txt
at> <按Ctrl+D結束>//這個命令會在下午2:30創建一個提醒文件at now + 5 minutes
at> wall "系統將在5分鐘后重啟,請保存工作!"
at> <Ctrl+D>//5分鐘后執行命令at midnight 12252023
at> /home/user/christmas_script.sh
at> <Ctrl+D>//2023年12月25日午夜執行命令

5.3crontab工具?

5.3.1定義

crontab是 Linux/Unix 系統中用于設置?周期性任務?的工具,允許用戶在固定時間、日期或間隔自動執行命令或腳本。與 at(單次任務調度)不同,crontab適用于?重復性任務。

5.3.2格式

crontab [選項]? 文件名

選項說明
-e編輯當前用戶的 crontab 文件
-l列出當前用戶的 crontab 任務
-r刪除當前用戶的 crontab 任務(全部刪除)
-i刪除前提示確認(配合?-r?使用)
-u user管理指定用戶的 crontab(需 root 權限)
crontab -l   //查看當前用戶的crontabcrontab -e   //創建或編輯當前用戶的crontab執行此命令后,會打開一個文本編輯器,編輯crontab文件

?crontab時間格式

* ? ?* ? ?* ? ?* ? ?* ? ?command_to_execute
│ ? ?│ ? ?│ ? ?│ ? ?│
│ ? ?│ ? ?│ ? ?│ ? ?└───── 星期 (0 - 6, 0=周日)
│ ? ?│ ? ?│ ? ?└────────── 月份 (1 - 12)
│ ? ?│ ? ?└─────────────── 日 (1 - 31)
│ ? ?└──────────────────── 小時 (0 - 23)
└───────────────────────── 分鐘 (0 - 59)

特殊符號說明

符號含義示例
*任意值(每分鐘/每小時等)* * * * *?→ 每分鐘執行
,指定多個時間點0,15,30,45 * * * *?→ 每 15 分鐘執行
-時間范圍0 9-18 * * *?→ 9AM-6PM 每小時執行
/間隔時間*/5 * * * *?→ 每 5 分鐘執行

?5..3.3例子

# 每天 9AM-6PM,每小時執行一次
0 9-18 * * * /path/to/check_status.sh# 每周一至周五,上午 8:30 執行
30 8 * * 1-5 /path/to/daily_task.sh# 每月 1 號和 15 號,晚上 11:30 執行
30 23 1,15 * * /path/to/monthly_job.sh# 每 10 分鐘執行,但僅在工作日(周一到周五)
*/10 * * * 1-5 /path/to/frequent_task.sh

六.怎么查看操作系統的五大性能

1.內存

2.磁盤 磁盤剩余量 磁盤I/O讀寫性能

3.CPU CPU占用率

4.網絡

內存用free;top

磁盤剩余量用df;lsblk;fdisk -l

磁盤讀寫用iostat;vmstat

CPU用top(實時) ps(靜態)

網絡 iftop?

系統版本cat /etc/redhat-release

ip地址 ifconfig

內核版本 uname-r?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75396.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

css動態設置div寬高,calc函數

在css中使用calc函數 calc() 是 CSS 中的一種函數&#xff0c;用于動態計算長度值。它允許你在 CSS 屬性中進行數學運算&#xff0c;結合不同的單位&#xff08;如 px、%、em 等&#xff09;&#xff0c;從而創建更加靈活和響應式的布局 表達式規則 運算符&#xff1a;支持加…

飛漿PaddlePaddle 貓狗數據大戰

貓狗數據大戰 1 數據集的準備以及處理操作1.1 數據集1.2 文件解壓操作&#xff08;python&#xff09; 1.3 數據的分類1.4 創建訓練集和測試集 2 網絡構建CNN版本--DeepID 人臉識別網絡結構DeepID 與 CNN 網絡結構的差異 3 深度學習模型訓練和推理的核心設置4 制圖5 訓練6 預測…

Spring Boot后端開發全攻略:核心概念與實戰指南

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、全棧領域優質創作者、高級開發工程師、高級信息系統項目管理師、系統架構師&#xff0c;數學與應用數學專業&#xff0c;10年以上多種混合語言開發經驗&#xff0c;從事DICOM醫學影像開發領域多年&#xff0c;熟悉DICOM協議及…

PPT助手:一款集計時、遠程控制與多屏切換于一身的PPT輔助工具

PPT助手&#xff1a;一款集計時、遠程控制與多屏切換于一身的PPT輔助工具 &#x1f4dd;&#x1f3a4; 在現代化的演講和演示中&#xff0c;如何高效地控制PPT進程、保證展示的流暢性與精準性&#xff0c;成為了每個演講者必須面對的挑戰。無論是商務匯報、學術演講&#xff0…

WEB安全--文件上傳漏洞--php偽協議的利用

一、偽協議介紹 1.1、內容 在 PHP 中&#xff0c;偽協議通常指的是一種通過特定的 URL 協議方案實現某些特殊功能或行為的方式。偽協議通常并不是標準的協議&#xff08;如 HTTP、HTTPS&#xff09;&#xff0c;而是由應用程序或開發者自定義的“偽”協議&#xff0c;用于執行…

高級:高并發架構面試題深度解析

一、引言 在現代互聯網應用開發中&#xff0c;高并發架構設計是確保系統在高負載下仍能穩定、高效運行的關鍵。面試官通過相關問題&#xff0c;考察候選人對高并發系統設計的理解、架構模式的掌握以及在實際項目中解決問題的能力。本文將深入剖析高并發系統的設計原則、常見的…

Opencv之dilib庫:表情識別

一、簡介 在計算機視覺領域&#xff0c;表情識別是一個既有趣又具有挑戰性的任務。它在人機交互、情感分析、安防監控等眾多領域都有著廣泛的應用前景。本文將詳細介紹如何使用 Python 中的 OpenCV 庫和 Dlib 庫來實現一個簡單的實時表情識別系統。 二、實現原理 表情識別系統…

【動態規劃】線性dp——LIS和LCS

參考文章 子序列 一個序列 A &#xff1d; a 1 , a 2 , … , a n A&#xff1d;a_1,a_2,…,a_n A&#xff1d;a1?,a2?,…,an? 中任意刪除若干項&#xff0c;剩余的序列叫做 A 的一個子序列。也可以認為是從序列 A 按原順序保留任意若干項得到的序列。&#xff08;例如&…

umi框架開發移動端h5

1、官網&#xff1a;https://umijs.org/ 2、創建出來的項目 yarn create umi yarn start3、推薦目錄結構 . ├── config │ └── config.ts ├── public//靜態資源 ├── dist ├── mock │ └── app.ts&#xff5c;tsx ├── src │ ├── .umi │ ├── .um…

《Golang高性能網絡編程:構建低延遲服務器應用》

在本文中&#xff0c;我們將深入探討Golang高性能網絡編程&#xff0c;幫助您構建低延遲服務器應用。我們將介紹Golang的網絡編程特性、優化技巧和實際案例&#xff0c;讓您更好地理解和應用Golang在網絡編程領域的優勢。 高性能網絡編程簡介 什么是Golang高性能網絡編程 高性能…

循環結構- P1217-回文質數-第三十四天

洛谷題單 第三十四天&#xff1a;4.3&#xff08;周四&#xff09; 題目&#xff1a;循環結構–P1217 注意&#xff01;&#xff01;&#xff01;本題的解法在初學階段足矣&#xff0c;使用埃氏篩即可全部AC&#xff08;高級算法&#xff0c;優化時間復雜度&#xff09;&…

github鏡像網站的使用

很多時候我們無法訪問github 那么我們可以網上搜索鏡像網站 比如 https://blog.csdn.net/eytha/article/details/144797222 這里可以找到一些鏡像站 然后直接編輯 c:/user/xxx/.gitconfig 內容如 [user]name xxxxemail xxxxhotmail.com [gui]recentrepo D:/ProjectFolder/t…

論定制開發開源 AI 智能名片 S2B2C 商城小程序源碼在零售變革中的角色與價值

摘要&#xff1a;本文深入探討了新零售中 O2O 模式的特點與局限性&#xff0c;指出其雖有導流作用但難以成為企業轉型適應消費大環境的主力做法。強調解決零售根本問題需依靠大零售概念&#xff0c;包括業態融合、情境創造、分解滲透等。同時引入定制開發開源 AI 智能名片 S2B2…

硬件工程師零基礎入門教程(三)

27.二極管的基本結構 二極管的結構就是一個PN節&#xff0c;導通后肯定會存在壓降&#xff08;硅管≈0.7V&#xff1b;鍺管≈0.3V&#xff09;。 其結構就像一個漏斗結構&#xff0c;普通二極管只能單向導通。 注意&#xff1a;二極管兩端不能直接接大于二極管導通壓降的電壓…

ollama導入huggingface下載的大模型并量化

1. 導入GGUF 類型的模型 1.1 先在huggingface 下載需要ollama部署的大模型 1.2 編寫modelfile 在ollama 里面輸入 ollama show --modelfile <你有的模型名稱> eg: ollama show --modelfile qwen2.5:latest修改其中的from 路徑為自己的模型下載路徑 FROM /Users/lzx/A…

C++基礎系列【35】巧用assert

博主介紹&#xff1a;程序喵大人 35- 資深C/C/Rust/Android/iOS客戶端開發10年大廠工作經驗嵌入式/人工智能/自動駕駛/音視頻/游戲開發入門級選手《C20高級編程》《C23高級編程》等多本書籍著譯者更多原創精品文章&#xff0c;首發gzh&#xff0c;見文末&#x1f447;&#x1f…

【EI檢索】2025年城市設計與規劃國際會議 (CoUDP 2025)

重要信息 會議網址&#xff1a;www.coudp.org 會議時間&#xff1a;2025年9月19-21日 召開地點&#xff1a;中國北京 截稿時間&#xff1a;2025年8月19日 錄用通知&#xff1a;投稿后2周內 收錄檢索&#xff1a;Ei Compendex, SCOPUS 會議簡介 2025年城市設計與規劃…

《實戰AI智能體》MCP對Agent有哪些好處

首先MCP為Agent提供了標準化的方式來接入各種工具和數據源,無論是本地運行的工具,例如通過stdio服務器,還是遠程托管的服務HTTP over SSE服務, Agent都可以通過統一的接口與它們進行交互,極大擴展了第三方工具庫。 例如,在金融領域,Agent 可以接入股票分析的MCP工具。當…

知識圖譜在官網中的本質與部署邏輯

知識圖譜在官網中的本質與部署邏輯 ?1. 知識圖譜不是獨立頁面&#xff0c;而是智能化基礎設施 知識圖譜的最終形態并非一個可見的“圖譜頁面”&#xff0c;而是滲透在官網各交互模塊的AI能力引擎&#xff0c;其核心作用在于&#xff1a; ?后臺&#xff1a;構建實體關系網絡…

藍橋杯沖刺

例題1&#xff1a;握手問題 方法1&#xff1a;數學推理(簡單粗暴&#xff09; 方法2&#xff1a;用代碼實現方法1 #include<iostream> using namespace std; int main() {int result 0;for (int i 1; i < 49; i){for (int j i 1; j < 50; j){//第i個人與第j個…