Linux命令行性能監控工具大全

Linux命令行性能監控工具大全

作者:Arnold Lu

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

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

01-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//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

在這里插入圖片描述

在top運行之后,還可以通過交互命令動態改變top的顯示輸出。

z:彩色顯示。

H:顯示線程。

R:排序。

V:Forest view,顯示所有進程間的屬性結構。

u/U:輸入僅看某些用戶進程,all表示查看所有用戶。

o/O:對某一列進行過濾。RES>100000,表示只顯示RES列大于100000的行。

02-perf

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

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

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

通過 sudo perf record 記錄采樣信息,然后通過 sudo perf report -s comm

在這里插入圖片描述

03-sar和ksar

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

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

sar用于記錄統計信息,ksar[4]用于將記錄的信息圖形化輸出。

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

# 將 ENABLED=“false“ 改為ENABLED=“true“
$ sudo gedit /etc/default/sysstat# 修改sar的周期等配置
$ sudo gedit /etc/cron.d/sysstat# 重啟sar服務
$ sudo /etc/init.d/sysstat restart# sar log存放目錄
$ ls -l /var/log/sysstat/

使用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》。

04-mpstat

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

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

mpstat -P ALL 10 20

結果如下:

在這里插入圖片描述

05. 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

06-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 st1  0 472576 228688 559092 1061756    0    0     9    39    1    0  8  4 87  0  01  0 472576 228184 559100 1061756    0    0     0    13 1532 3395 10  6 84  0  01  0 472576 229308 559100 1061616    0    0     0     0 1446 3449 10  5 85  0  00  0 472576 229592 559108 1061616    0    0     0     6 1419 3474 10  5 85  0  01  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》

07-pidstat

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

7.1查看CPU使用情況

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

# 顯示所有的進程統計信息,包括idle進程。
pidstat -p ALL# 更加詳細的顯示了線程統計信息。
pidstat -p ALL -t# 周期采樣和采樣次數
pidstat [option] interval [count]

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

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

7.2 查看內存使用情況

pidstat -p ALL -r 結果如下:

151821UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
1518210         1      0.02      0.00  185316    3028   0.08  systemd
1518210         2      0.00      0.00       0       0   0.00  kthreadd
1518210         4      0.00      0.00       0       0   0.00  kworker/0:0H
1518210         6      0.00      0.00       0       0   0.00  mm_percpu_wq
1518210         7      0.00      0.00       0       0   0.00  ksoftirqd/0
1518210         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 結果如下:

152040UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
1520400         1     -1.00     -1.00     -1.00 243523129  systemd
1520400         2     -1.00     -1.00     -1.00       0  kthreadd
1520400         4     -1.00     -1.00     -1.00       0  kworker/0:0H
1520400         6     -1.00     -1.00     -1.00       0  mm_percpu_wq
1520400         7     -1.00     -1.00     -1.00 714512328679  ksoftirqd/0
1520400         8     -1.00     -1.00     -1.00 417757303594  rcu_sched

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

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

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

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

08-time

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

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

2401940638 32606752 nomachine_6.0.80_1.exe# 整個操作總耗時,0.263-0.094-0.011=0.158是IO等待耗時。
real    0m0.263s# 用戶態耗時
user    0m0.094s# 內核態耗時
sys    0m0.011s
2401940638 32606752 nomachine_6.0.80_1.exe# 第二次執行就可以看出等待IO操作的時間基本上沒有了。
real    0m0.098s
user    0m0.097s
sys    0m0.000s

09-cpustat

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

# 顯示Load Avg信息和平均頻率等
Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online
# 進程切換次數、硬中斷、軟中斷等等統計信息。
# CPU占用率、用戶空間和內核空間占用率等。
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 Task25.74  25.74   0.00 11435 R    3  2.29w /usr/bin/python315.84  15.84   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg10.89   9.90   0.99  2722 S    1  1.05w compiz7.92   0.00   7.92 32352 S    2 16.60s [kworker/2:1]0.99   0.00   0.99 32397 R    1  0.01s cpustat0.99   0.99   0.00 11046 S    2 16.20h compiz0.99   0.99   0.00  1317 S    0  8.76h /usr/NX/bin/nxnode.bin0.99   0.00   0.99 10293 S    1  1.24m [kworker/1:2]64.36  53.47  10.89 TotalLoad 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 Task25.76  25.76   0.00 11435 R    3  2.29w /usr/bin/python318.18  18.18   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg7.58   7.58   0.00  2722 S    1  1.05w compiz6.06   0.00   6.06 32352 S    2 16.64s [kworker/2:1]1.52   0.00   1.52 32397 R    1  0.02s cpustat1.52   0.00   1.52     8 S    0  3.00h [rcu_sched]1.52   0.00   1.52 18409 S    0  1.16m update-notifier62.12  51.52  10.61 TotalDistribution of CPU utilisation (per Task):
% CPU Utilisation   Count   (%)0.00 -   1.97       706  98.881.97 -   3.94         0   0.003.94 -   5.91         0   0.005.91 -   7.88         2   0.287.88 -   9.85         0   0.009.85 -  11.82         0   0.0011.82 -  13.79         1   0.1413.79 -  15.76         0   0.0015.76 -  17.73         1   0.1417.73 -  19.70         1   0.1419.70 -  21.67         0   0.0021.67 -  23.64         0   0.0023.64 -  25.61         2   0.2825.61 -  27.57         0   0.0027.58 -  29.54         0   0.0029.55 -  31.51         0   0.0031.52 -  33.48         0   0.0033.48 -  35.45         0   0.0035.45 -  37.42         0   0.0037.42 -  39.39         1   0.14Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用戶空間和內核空間。CPU#   USR%   SYS%0  17.37   1.201   8.98   2.402   0.60   7.193  25.75   0.00

10-htop

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

在這里插入圖片描述

按下F2對htop進行設置,選擇Display options:

在這里插入圖片描述

Tree view:選擇是否以樹形結構表示進程線程間關系。

Hide kernel threads:可以選擇是否將內核線程隱藏。

Hide userland process threads:選擇是否顯示用戶空間進程的線程。

Show program path:是否顯示進程程序完整路徑。

11-atop

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

在這里插入圖片描述

12-glances

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

在這里插入圖片描述

13-nmon

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

在這里插入圖片描述

14-pcp-gui

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

安裝pcp相關工具。

sudo apt install pcp pcp-gui

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

在這里插入圖片描述

15-collectl、colplot

15.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 wa2  0      0  4634M   108M  1535M   642M   481M    0    0     0   132  594  2523  2  0  96  00  0      0  4631M   108M  1539M   642M   481M    0    0     0     0 1006  5308  4  1  93  00  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)結合能提供可視化圖形。

colplot使用

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

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

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

安裝之后重啟apache服務:

sudo 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》

其他:munin、rrdtool

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

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

相關文章

Weblogic12c T3 協議安全漏洞分析【CVE-2020-14645 CVE-2020-2883 CVE-2020-14645】

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 關注公眾號&#xff1a;b1gpig信息安全&#xff0c;文章推送不錯過 ## 前言 WebLogic是美國Oracle公司出品的一個application server,確切的說是一個基于JAV…

Getshell總結

按方式分類&#xff1a; 0x01注入getshell&#xff1a; 0x02 上傳 getwebshell 0x03 RCE getshell 0x04 包含getwebshell 0x05 漏洞組合拳getshell 0x06 系統層getcmdshell 0x07 釣魚 getcmdshell 0x08 cms后臺getshell 0x09 紅隊shell競爭分析 0x01注入getshell&#xff1a;…

編寫可靠bash腳本的一些技巧

編寫可靠bash腳本的一些技巧 原作者&#xff1a;騰訊技術工程 原文鏈接&#xff1a;https://zhuanlan.zhihu.com/p/123989641 寫過很多 bash 腳本的人都知道&#xff0c;bash 的坑不是一般的多。 其實 bash 本身并不是一個很嚴謹的語言&#xff0c;但是很多時候也不得不用。以下…

python 到 poc

0x01 特殊函數 0x02 模塊 0x03 小工具開發記錄 特殊函數 # -*- coding:utf-8 -*- #內容見POC.demo; POC.demo2 ;def add(x,y):axyprint(a)add(3,5) print(------------引入lambad版本&#xff1a;) add lambda x,y : xy print(add(3,5)) #lambda函數,在lambda函數后面直接…

protobuf版本常見問題

protobuf版本常見問題 許多軟件都依賴 google 的 protobuf&#xff0c;我們很有可能在安裝多個軟件時重復安裝了多個版本的 protobuf&#xff0c;它們之間很可能出現沖突并導致在后續的工作中出現版本不匹配之類的錯誤。本文將討論筆者在使用 protobuf 中遇到的一些問題&#…

CMake常用命令整理

CMake常用命令整理 轉自&#xff1a;https://zhuanlan.zhihu.com/p/315768216 CMake 是什么我就不用再多說什么了&#xff0c;相信大家都有接觸才會看一篇文章。對于不太熟悉的開發人員可以把這篇文章當個查找手冊。 1.CMake語法 1.1 指定cmake的最小版本 cmake_minimum_r…

CVE-2021-41773 CVE-2021-42013 Apache HTTPd最新RCE漏洞復現 目錄穿越漏洞

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; CVE-2021-41773漏洞描述&#xff1a; Apache HTTPd是Apache基金會開源的一款流行的HTTP服務器。2021年10月8日Apache HTTPd官方發布安全更新&#xff0c;披…

SSRF,以weblogic為案例

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 復習一下ssrf的原理及危害&#xff0c;并且以weblog的ssrf漏洞為案例 漏洞原理 SSRF(Server-side Request Forge, 服務端請求偽造) 通常用于控制web進而…

C++11 右值引用、移動語義、完美轉發、萬能引用

C11 右值引用、移動語義、完美轉發、引用折疊、萬能引用 轉自&#xff1a;http://c.biancheng.net/ C中的左值和右值 右值引用可以從字面意思上理解&#xff0c;指的是以引用傳遞&#xff08;而非值傳遞&#xff09;的方式使用 C 右值。關于 C 引用&#xff0c;已經在《C引用…

C++11 std::function, std::bind, std::ref, std::cref

C11 std::function, std::bind, std::ref, std::cref 轉自&#xff1a;http://www.jellythink.com/ std::function 看看這段代碼 先來看看下面這兩行代碼&#xff1a; std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed; std::function<void(Ev…

Java安全(一) : java類 | 反射

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.java基礎 Java平臺共分為三個主要版本Java SE&#xff08;Java Platform, Standard Edition&#xff0c;Java平臺標準版&#xff09;、Java EE&#xff0…

LeetCode-287 尋找重復數 二分法

LeetCode-287 尋找重復數 二分法 287. 尋找重復數 給定一個包含 n 1 個整數的數組 nums &#xff0c;其數字都在 1 到 n 之間&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一個重復的整數。 假設 nums 只有 一個重復的整數 &#xff0c;找出 這個重復的數 。…

對某公司一次弱口令到存儲型xss挖掘

轉自我的奇安信攻防社區文章:https://forum.butian.net/share/885 免責聲明: 滲透過程為授權測試,所有漏洞均以提交相關平臺,博客目的只為分享挖掘思路和知識傳播** 涉及知識: xss注入及xss注入繞過 挖掘過程: 某次針對某目標信息搜集無意發現某工程公司的項目招標平臺 …

C++11新特性選講 語言部分 侯捷

C11新特性選講 語言部分 侯捷 本課程分為兩個部分&#xff1a;語言的部分和標準庫的部分。只談新特性&#xff0c;并且是選講。 本文為語言部分筆記。 語言 Variadic Templatesmove semanticsautoRange-based for loopInitializer listLambdas… 標準庫 type_traitsunodered…

java安全(二):JDBC|sql注入|預編譯

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1 JDBC基礎 JDBC(Java Database Connectivity)是Java提供對數據庫進行連接、操作的標準API。Java自身并不會去實現對數據庫的連接、查詢、更新等操作而是通…

java安全(三)RMI

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.RMI 是什么 RMI(Remote Method Invocation)即Java遠程方法調用&#xff0c;RMI用于構建分布式應用程序&#xff0c;RMI實現了Java程序之間跨JVM的遠程通信…

LeetCode-726 原子的數量 遞歸

LeetCode-726 原子的數量 遞歸 題目鏈接&#xff1a;LeetCode-726 原子的數量 給你一個字符串化學式 formula &#xff0c;返回 每種原子的數量 。 原子總是以一個大寫字母開始&#xff0c;接著跟隨 0 個或任意個小寫字母&#xff0c;表示原子的名字。 如果數量大于 1&#xf…

java安全(四) JNDI

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.JNDI JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目錄接口。通過調用JNDI的API應用程序可以定位資源和其他程序對象。JNDI是Java…

二叉樹的層序遍歷和前中后序遍歷代碼 迭代/遞歸

前中后序遍歷&#xff08;DFS&#xff09; 首先我們要明確前中后序遍歷的順序&#xff1a; 前序&#xff1a;中左右中序&#xff1a;左中右后序&#xff1a;左右中 前中后序遍歷的遞歸代碼和迭代代碼分別有各自的框架&#xff0c;然后根據遍歷順序調整記錄元素的位置即可。 …

java安全(五)java反序列化

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1. 序列化 在調用RMI時,發現接收發送數據都是反序列化數據. 例如JSON和XML等語言,在網絡上傳遞信息,都會用到一些格式化數據,大多數處理方法中&#xff0c…