Linux CPU占用率監控工具

来源:https://www.cnblogs.com/hyf20131113/archive/2019/12/09/12013182.html
-Advertisement-
Play Games

關鍵詞:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、munin、htop、glances、atop、nmon、pcp-gui、collectl。 1. top top是最常用的查看系統資源使用情況的工具,包括CPU、記憶體等等 ...


關鍵詞:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、munin、htop、glances、atop、nmon、pcp-gui、collectl。

 

1. top

top是最常用的查看系統資源使用情況的工具,包括CPU、記憶體等等資源。

這裡主要關註CPU資源。

1.1 /proc/loadavg

load average取自/proc/loadavg。

9.53 9.12 8.37 3/889 28165

前三個數字是1、5、15分鐘內進程隊列中平均進程數,包括正在運行的進程+準備好等待運行的進程。

第四個數字分子表示正在運行的進程數,分母是進程總數。

最後一個數字是最近運行的進程ID號。

其中top取的是/proc/loadavg的前三個數。

1.2 top使用

打開top,可以指定更新的周期。

輸入H,打開隱藏的線程;輸入1,可以顯示單核CPU使用情況。

top -H -b -d 1 -n 200 > top.txt,每個1秒統計一次,共200次,顯示線程細節,並保存到top.txt中。

top採樣來源你還依賴於/proc/stat和/proc/<pid>/stat兩個,這兩個的詳細介紹參考:/proc/stat/proc/<pid>/stat

其中CPU信息對應的含義如下:

us是user的意思,統計nice小於等於0的用戶空間進程,也即優先順序為100~120。

ni是nice的意思,統計nice大於0的用戶空間進程,也即優先順序為121~139。

sys是system的意思,統計內核態運行時間,不包括中斷。

id是idle的意思,幾系統處於空閑態。

wa是iowait的意思,統計io等待時間。

hi是hardware interrupt,統計硬體中斷時間。

si是software interrupt,統計軟中斷時間。

最後的st是steal的意思。

 

 

 

2. perf

系統級性能分析工具perf的介紹與使用》有關於perf使用的詳細介紹,這裡重點關註CPU占用率。

通過sudo perf top -s comm,可以查看當前系統運行進程占比。

這裡不像top一樣區分idle、system、user,這裡的占比是各個進程在總運行時間裡面占比。

通過sudo perf record記錄採樣信息,然後通過sudo perf report -s comm。

 

 

3. sar、ksar

sar是System Activity Report的意思,可以用於實時觀察當前系統活動,也可以生成歷史記錄的報告。

要使用sar需要安裝sudo apt install sysstat,然後對sysstat進行配置。

sar用於記錄統計信息,ksar用於將記錄的信息圖形化輸出。

ksar下載地址在:https://github.com/vlsi/ksar/releases

sudo gedit /etc/default/sysstat--------------------------------將 ENABLED=“false“ 改為ENABLED=“true“。

sudo gedit /etc/cron.d/sysstat--------------------------------修改sar的周期等配置。

sudo /etc/init.d/sysstat restart--------------------------------重啟sar服務

/var/log/sysstat/--------------------------------------------------sar log存放目錄

使用sar記錄開機到目前的統計信息到文件sar.txt。

LC_ALL=C sar -A > sar.txt 

PS:這裡直接使用sar -A,在ksar中無法正常顯示。

如下執行java -jar ksar.jar,然後Data->Load from text file...選擇保存的sar.txt文件。

得到如下的圖表。 

還可以通過sar記錄一段時間的信息,指定採樣周期和採樣次數。

這些命令前加上LC_ALL=C之後保存到文件中,都可以在ksar中圖形化顯示。

sar 1 100---------------------------------------所有cpu合一的統計信息

sar -P ALL 1 100-----------------------------包括cpu合一以及單個cpu的統計信息

sar -B 1 100-----------------------------------paging統計信息

sar -b 1 100----------------------------------塊設備IO統計信息

sar -d 1 100----------------------------------塊設備活動統計信息

sar -F 1 100---------------------------------掛載的文件系統統計信息

sar -r ALL------------------------------------顯示詳細的記憶體使用統計信息

sar -S----------------------------------------顯示swap空間使用情況統計信息

sar -w---------------------------------------顯示進程創建以及進程切換統計信息

sar -W--------------------------------------顯示swap換入換出統計信息。

 

更詳細請參考《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks》、《Collect and report Linux System Activity Information with sar》。

 

4. mpstat

mpstat是Multiprocessor Statistics。當沒有參數時,mpstat顯示系統系統以來所有信息平均值。

常見用法如下,-P ALL監控所有CPU,細節顯示特定CPU;10表示每10秒監控一次;20表示監控20次。

mpstat -P ALL 10 20

結果如下:

複製代碼
Linux 4.13.0-36-generic (xxx)     2018年08月13日     _x86_64_    (4 CPU)

11時01分09秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11時01分19秒  all    3.44    6.26    5.15    0.13    0.00    0.20    0.00    0.00    0.00   84.82
11時01分19秒    0    3.09   13.46    3.29    0.00    0.00    0.10    0.00    0.00    0.00   80.06
11時01分19秒    1    4.41    3.11    5.02    0.00    0.00    0.60    0.00    0.00    0.00   86.86
11時01分19秒    2    2.96    0.20    9.29    0.00    0.00    0.10    0.00    0.00    0.00   87.45
11時01分19秒    3    3.32    7.95    3.12    0.50    0.00    0.00    0.00    0.00    0.00   85.11

11時01分19秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11時01分29秒  all    3.65    6.09    5.08    0.00    0.00    0.25    0.00    0.00    0.00   84.93
11時01分29秒    0    3.92   11.07    4.63    0.00    0.00    0.20    0.00    0.00    0.00   80.18
11時01分29秒    1    4.39    1.90    3.49    0.00    0.00    0.80    0.00    0.00    0.00   89.42
11時01分29秒    2    3.35    0.10   10.14    0.00    0.00    0.00    0.00    0.00    0.00   86.41
11時01分29秒    3    2.91   11.26    2.21    0.00    0.00    0.00    0.00    0.00    0.00   83.62
複製代碼

 

usr表示用戶空間進程,nice表示nice值大於0的用戶空間進程。

sys是內核空間,iowait是I/O等待時間,irq是硬中斷,soft是軟中斷,idle是空閑時間,guest和gnice都是虛擬機時間。

 

5. uptime

uptime是一個簡單獲取系統總共運行多長時間,以及最近1分鐘、5分鐘、15分鐘的平均負載。

uptime通過/proc/uptime和/proc/loadavg獲取相關信息。

up前是當前系統時間,up後是系統運行時長。

load average後是1分鐘、5分鐘、15分鐘平均負載。

11:15:41 up 82 days, 20:34,  8 users,  load average: 0.28, 0.40, 0.43

 

6. vmstat

vmstat主要用於監控系統記憶體使用情況的工具,但是也包含一些CPU相關信息。

使用方法vmstat 5 5表示運行5次,每次5秒。結果如下:

複製代碼
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 472576 228688 559092 1061756    0    0     9    39    1    0  8  4 87  0  0
 1  0 472576 228184 559100 1061756    0    0     0    13 1532 3395 10  6 84  0  0
 1  0 472576 229308 559100 1061616    0    0     0     0 1446 3449 10  5 85  0  0
 0  0 472576 229592 559108 1061616    0    0     0     6 1419 3474 10  5 85  0  0
 1  0 472576 229804 559108 1061616    0    0     0     0 1446 3439 10  5 85  0  0
複製代碼

上面的參數可以分為6大部分:進程、記憶體、swap、io、中斷和進程切換、cpu。

更加詳細的解釋:

 參考文檔:《Linux Performance Measurements using vmstat

 

7. pidstat

pidstat主要用於監控全部或指定進程占用系統資源的情況。

7.1 查看CPU使用情況

pidstat首次運行時顯示自系統啟動開始的各項統計信息,之後運行pidstat將顯示自上次運行該命令以後的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。

pidstat -p ALL---------------------------顯示所有的進程統計信息,包括idle進程。

pidstat -p ALL -t------------------------更加詳細的顯示了線程統計信息。

pidstat [option] interval [count]-----周期採樣和採樣次數

除此之外還可以通過-p獲取指定進程的統計信息。

pidstat還可以通過-r獲取記憶體使用統計信息,通過-d獲取IO使用統計信息。

 

7.2 查看記憶體使用情況

pidstat -p ALL -r結果如下:

複製代碼
15時18分21秒   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
15時18分21秒     0         1      0.02      0.00  185316    3028   0.08  systemd
15時18分21秒     0         2      0.00      0.00       0       0   0.00  kthreadd
15時18分21秒     0         4      0.00      0.00       0       0   0.00  kworker/0:0H
15時18分21秒     0         6      0.00      0.00       0       0   0.00  mm_percpu_wq
15時18分21秒     0         7      0.00      0.00       0       0   0.00  ksoftirqd/0
15時18分21秒     0         8      0.00      0.00       0       0   0.00  rcu_sched
複製代碼

 

minflt/s: 每秒次缺頁錯誤次數(minor page faults),次缺頁錯誤次數意即虛擬記憶體地址映射成物理記憶體地址產生的page fault次數。

majflt/s: 每秒主缺頁錯誤次數(major page faults),當虛擬記憶體地址映射成物理記憶體地址時,相應的page在swap中,這樣的page fault為major page fault,一般在記憶體使用緊張時產生。

VSZ: 該進程使用的虛擬記憶體(以kB為單位)。

RSS: 該進程使用的物理記憶體(以kB為單位)。

%MEM: 該進程使用記憶體的百分比。

Command: 拉起進程對應的命令。

7.3 查看磁碟使用情況

pidstat -p ALL -d結果如下:

複製代碼
15時20分40秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
15時20分40秒     0         1     -1.00     -1.00     -1.00 243523129  systemd
15時20分40秒     0         2     -1.00     -1.00     -1.00       0  kthreadd
15時20分40秒     0         4     -1.00     -1.00     -1.00       0  kworker/0:0H
15時20分40秒     0         6     -1.00     -1.00     -1.00       0  mm_percpu_wq
15時20分40秒     0         7     -1.00     -1.00     -1.00 714512328679  ksoftirqd/0
15時20分40秒     0         8     -1.00     -1.00     -1.00 417757303594  rcu_sched
複製代碼

 

kB_rd/s: 每秒進程從磁碟讀取的數據量(以kB為單位)。

kB_wr/s: 每秒進程向磁碟寫的數據量(以kB為單位)。

kB_ccwr/s:每秒進程被取消向磁碟寫的數據量(以kB為單位)。

Command: 拉起進程對應的命令。

 

8. time

time命令可以被用於統計指定程式的CPU耗時。

比如time cksum nomachine_6.0.80_1.exe得到如下結果。

複製代碼
2401940638 32606752 nomachine_6.0.80_1.exe

real    0m0.263s-----------------整個操作總耗時,0.263-0.094-0.011=0.158是IO等待耗時。
user    0m0.094s-----------------用戶態耗時
sys    0m0.011s------------------內核態耗時
2401940638 32606752 nomachine_6.0.80_1.exe

real    0m0.098s-----------------第二次執行就可以看出等待IO操作的時間基本上沒有了。
user    0m0.097s
sys    0m0.000s
複製代碼

 

9. cpustat

通過sudo apt install cpustat安裝,cpustat -T -D -x結果如下。

複製代碼
Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online------------------------------顯示Load Avg信息和平均頻率等。
3791.1 Ctxt/s, 1709.9 IRQ/s, 1800.0 softIRQ/s, 0.0 new tasks/s, 1 running, 0 blocked----進程切換次數、硬中斷、軟中斷等等統計信息。
  %CPU   %USR   %SYS   PID S  CPU   Time Task-------------------------------------------CPU占用率、用戶空間和內核空間占用率等。
 25.74  25.74   0.00 11435 R    3  2.29w /usr/bin/python3
 15.84  15.84   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg
 10.89   9.90   0.99  2722 S    1  1.05w compiz
  7.92   0.00   7.92 32352 S    2 16.60s [kworker/2:1]
  0.99   0.00   0.99 32397 R    1  0.01s cpustat
  0.99   0.99   0.00 11046 S    2 16.20h compiz
  0.99   0.99   0.00  1317 S    0  8.76h /usr/NX/bin/nxnode.bin
  0.99   0.00   0.99 10293 S    1  1.24m [kworker/1:2]
 64.36  53.47  10.89 Total

Load Avg 0.66 0.54 0.49, Freq Avg. 1.75 GHz, 4 CPUs online
2834.8 Ctxt/s, 1190.9 IRQ/s, 1183.3 softIRQ/s, 0.0 new tasks/s, 4 running, 0 blocked
  %CPU   %USR   %SYS   PID S  CPU   Time Task
 25.76  25.76   0.00 11435 R    3  2.29w /usr/bin/python3
 18.18  18.18   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg
  7.58   7.58   0.00  2722 S    1  1.05w compiz
  6.06   0.00   6.06 32352 S    2 16.64s [kworker/2:1]
  1.52   0.00   1.52 32397 R    1  0.02s cpustat
  1.52   0.00   1.52     8 S    0  3.00h [rcu_sched]
  1.52   0.00   1.52 18409 S    0  1.16m update-notifier
 62.12  51.52  10.61 Total

Distribution of CPU utilisation (per Task):
% CPU Utilisation   Count   (%)
  0.00 -   1.97       706  98.88
  1.97 -   3.94         0   0.00
  3.94 -   5.91         0   0.00
  5.91 -   7.88         2   0.28
  7.88 -   9.85         0   0.00
  9.85 -  11.82         0   0.00
 11.82 -  13.79         1   0.14
 13.79 -  15.76         0   0.00
 15.76 -  17.73         1   0.14
 17.73 -  19.70         1   0.14
 19.70 -  21.67         0   0.00
 21.67 -  23.64         0   0.00
 23.64 -  25.61         2   0.28
 25.61 -  27.57         0   0.00
 27.58 -  29.54         0   0.00
 29.55 -  31.51         0   0.00
 31.52 -  33.48         0   0.00
 33.48 -  35.45         0   0.00
 35.45 -  37.42         0   0.00
 37.42 -  39.39         1   0.14

Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用戶空間和內核空間。
 CPU#   USR%   SYS%
    0  17.37   1.20
    1   8.98   2.40
    2   0.60   7.19
    3  25.75   0.00
複製代碼

 

10.  htop

htop和top的功能類似,但是可讀性比top更好。在界面按下F5,可以看到進程裡面的線程,樹形結構表示了父子關係。

 

 

11. atop

atop是一個監控系統資源和進程的工具。它通過CPU使用率來對列表中的進程進行降序排列,而每一個進程則包含了CPU、記憶體、磁碟和網路狀態等信息。它的功能與top和htop類似。

 

12. glances

glances是一個由python編寫的,與Nmon功能類似的報告工具,它能夠報告統計cpu、記憶體、網路、磁碟和進程。除了報告統計,glances不支持任何其他特性或功能。當程式運行時點擊“h”可以顯示幫助頁面。

 

 

13. nmon

Nmon是一個非常容易使用,能夠在一個屏幕上監視CPU、記憶體、網路、磁碟使用狀況和進程列表的工具。除了無法管理進程和修改報告顯示,Nmon與那些只用於報告的報告工具完全一樣。另外,它可以將數據保存到電子錶格文件。

 

 

 13. pcp-gui

Performance Co-Pilot,簡稱PCP,是一個系統性能和分析框架。它從多個主機整理數據並實時的分析,幫你識別不正常的表現模式。它也提供API讓你設計自己的監控和報告解決方案。

安裝pcp相關工具。

sudo apt install pcp pcp-gui

File->Open View選擇需要打開的視圖,比如CPU、Disk、Memory等。

 

14. collectl、colplot

14.1 collectl使用

collectl是一款非常優秀並且有著豐富的命令行功能的實用程式,你可以用它來採集描述當前系統狀態的性能數據。

不同於大多數其它的系統監控工具,collectl 並非僅局限於有限的系統度量,相反,它可以收集許多不同類型系統資源的相關信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。

同時collectl還可以替代常用工具,比如top、vmstat、ps、iotop等。

安裝collectl:

sudo apt-get install collectl

collectl的使用很簡單,預設collectl顯示cpu、磁碟、網路信息。

複製代碼
#<----CPU[HYPER]-----><----------Disks-----------><----------Network---------->
#cpu sys inter  ctxsw KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut 
   0   0   162    460      0      0      0      0      0      0      0       0 
   1   0   308    820      0      0     36      1      0      0      0       0 
   1   0   572   2022      0      0     36      2      0      0      0       0 
   0   0   270    728      0      0      0      0      0      0      0       0 
複製代碼

 

collectl還可以顯示更多的子系統信息,如果選項存在對應的大寫選項,大寫選項表示更細節的設備統計信息。

b – buddy info (記憶體碎片)

c – 所有CPU的合一統計信息;C - 單個CPU的統計信息。

d – 整個文件系統Disk合一統計信息;C - 單個磁碟的統計信息。

f – NFS V3 Data

i – Inode and File System

j – 顯示每個CPU的Interrupts觸發情況;J - 顯示每個中斷詳細觸發情況。

l – Lustre

m – 顯示整個系統Memory使用情況;M - 按node顯示記憶體使用情況。

n – 顯示整個系統的Networks使用情況;N - 分網卡顯示網路使用情況。

s – Sockets

t – TCP

x – Interconnect

y – 對系統所有Slabs (系統對象緩存)使用統計信息;Y - 每個slab使用的詳細信息。

collectl --all顯示所有子系統的統計信息,包括cpu、終端、記憶體、磁碟、網路、TCP、socket、文件系統、NFS。

複製代碼
#<----CPU[HYPER]-----><-----------------Int------------------><-----------------Memory-----------------><----------Disks-----------><----------Network----------><-------TCP--------><------Sockets-----><----Files---><------NFS Totals------>
#cpu sys inter  ctxsw Cpu0 Cpu1 Cpu2 Cpu3 Cpu4 Cpu5 Cpu6 Cpu7 Free Buff Cach Inac Slab  Map   Fragments KBRead  Reads KBWrit Writes   KBIn  PktIn  KBOut  PktOut   IP  Tcp  Udp Icmp  Tcp  Udp  Raw Frag Handle Inodes  Reads Writes Meta Comm 
   5   1   749   2738   79   83   67  126  289   57   87   47   4G 107M   1G 640M 151M   1G nlsrkjebaas      0      0      0      0      0      0      0       0    0    2    0    0 1138    0    1    0  11648  71267      0      0    0    0 
   1   0   276   1323   22    8   12   37   76   19   33   72   4G 107M   1G 640M 151M   1G nlsrkjebaas      0      0     56     13      0      0      0       0    0    0    0    0 1138    0    1    0  11648  71264      0      0    0    0 
   1   0   298   1336   40    9   26   31   75   31   34   49   4G 107M   1G 640M 151M   1G olsrkjebaas      0      0     24      5      0      0      0       0    0    0    0    0 1138    0    1    0  11648  71256      0      0    0    0 
複製代碼

 

collectl --top可以代替top命令:

複製代碼
# TOP PROCESSES sorted by time (counters are /sec) 12:11:40
# PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command
14557  al       20  7305    0 R   75M   28M  4  0.02  0.05   7  00:00.47    0    0    0    0 /usr/bin/perl 
 6985  al       20     1   36 S    1G  181M  3  0.01  0.03   4  01:48.14    0    4    0    1 /opt/google/chrome/chrome 
 7255  al       20  7000   21 S  955M  215M  1  0.00  0.04   4  01:30.44    0    0    0 1999 /opt/google/chrome/chrome 
 8006  al       20  7000   17 S  923M  135M  0  0.01  0.03   4  01:24.67    0    0    0    0 /opt/google/chrome/chrome 
 7294  al       20  2415    3 S  710M   60M  7  0.01  0.01   2  00:12.79    0    0    0    4 /usr/bin/python 
複製代碼

 

collectl --vmstat可以代替vmstat命令:

#procs ---------------memory (KB)--------------- --swaps-- -----io---- --system-- ----cpu-----
# r  b   swpd   free   buff  cache  inact active   si   so    bi    bo   in    cs us sy  id wa
  2  0      0  4634M   108M  1535M   642M   481M    0    0     0   132  594  2523  2  0  96  0
  0  0      0  4631M   108M  1539M   642M   481M    0    0     0     0 1006  5308  4  1  93  0
  0  0      0  4623M   108M  1547M   642M   481M    0    0     0    48  564  2572  2  0  96  0

 

collectl -c1 -sZ -i:1可以代替ps命令。

 

collectl和一些處理分析數據工具(比如colmux、colgui、colplot)結合能提供可視化圖形。

14.2 colplot使用

colplot是collectl工具集的一部分,其將collectl收集的數據在瀏覽器中圖形化展示。

colplot的介紹在此,相關源碼可以再collectl-utils下載。

解壓下載的colplot之後,sudo ./INSTALL安裝colplot。

安裝之後重啟apache服務:

suod systemctl reload apache2

sudo systemctl restart apache2

在瀏覽器中輸入http://127.0.0.1/colplot/,即可使用colplot。

通過Change Dir選擇存放經過collectl -P保存的數據,然後設置Plot細節、顯示那些子系統、plot大小等等。

最後Generate Plot查看結果。

 

參考文檔:《Collectl: Linux 性能監控的全能冠軍》、《Collectl Documentation》、《Collectl Examples - An Awesome Performance Analysis Tool in Linux

 

本文轉載自:Arnold Lu@南京

原文鏈接:https://www.cnblogs.com/arnoldlu/p/9462221.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [toc] 程式離不開數據。把數字、字母和文字輸入電腦,就是希望它利用這些數據完成某些任務。例如,需要計算雙十一怎麼買才最省錢或者顯示購物車裡面的商品列表。 C 語言必須允許程式存儲和讀取數據,才能進行各種複雜的計算,而這正是通過變數實現的。 變數的聲明 上面這行代碼叫作聲明變數(declarat ...
  • 1、準備工作 環境 本地: 、`Docker` 代碼倉庫: 伺服器: 、`Docker` 前提準備 1. 創建個有 文件的 項目 新建一個dotnet 3.0的web項目,在項目文件夾添加Dockerfile文件,內容如下: 2. 準備git倉庫,將項目的代碼上傳上去 3. 構建有 的`jenkin ...
  • 大家好,我是Dotnet9小編,一個從事dotnet開發8年+的程式員。我最近開始寫dotnet分享文章,希望能讓更多人看到dotnet的發展,瞭解更多dotnet技術,幫助dotnet程式員應用dotnet技術更好的運用於工作和學習中去。 歷經3個白天2個黑夜(至凌晨2點),Dotnet9小編經過 ...
  • 一、鍵盤類和鍵盤事件 WPF提供了基礎的鍵盤類(System.Input.Keyboard類),該類提供與鍵盤相關的事件、方法和屬性,這些事件、方法和屬性提供有關鍵盤狀態的信息。Keyboard的事件也通過UIElement等XAML基元素類的事件向外提供。 對於鍵盤操作,其常用的事件有兩組: Ke ...
  • 項目框架介紹: 1:Application: 在service裡面事件具體業務,Dto相當於viewmodel實現了驗證 2:Core:實現了數據層Model 3:EntityFrameworkCore: 資料庫管理 對Model的改動使用 add-migration xxxx(這裡是你給這次遷移文 ...
  • abp依賴註入的原理剖析 請先移步參考 "[Abp vNext 源碼分析] 3. 依賴註入與攔截器" 本文此篇文章的補充和完善。 abp的依賴註入最後是通過IConventionalRegister介面的AddType方法實現的。先看下該介面: 該介面定義了三個方法,支持傳入程式集、類型數組、具體類 ...
  • 使用abp模板進行項目開發: 1:準備工作:我使用v2.x版本,所以會依賴.net core 2.2 查看並更新本地環境: 更新.net core版本:cmd 運行 dotnet --version查看本機版本(我的是core 2.1) 通過下載安裝sdk更新core版本:https://dotne ...
  • 下麵是針對 nfs 所有的版本,我們可以通過不同的RFC 進行詳細看其RFC的細節來進行對比: 下麵是備忘一些NFS RFC 的鏈接: https://datatracker.ietf.org/doc/search?name=nfs&sort=&rfcs=on&activedrafts=on nfs ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...