主頁 >  其他 > Sysbench 使用總結

Sysbench 使用總結

2021-04-06 06:22:30 其他

Sysbench使用總結

實踐環境

CentOS 7.8

Sysbench 1.0.20

下載地址:https://github.com/akopytov/sysbench/archive/refs/tags/1.0.20.tar.gz

用法介紹

sysbench [options]... [testname] [command]

具體說明:

  • testname

    可選的內置測驗型別名稱、或者是和工具捆綁的lua腳本名稱(不帶后綴.lua),形如oltp_read_only,或者是指定lua腳本的路徑,形如sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua ,可選內置測驗名稱如下:

    fileio 檔案I/O測驗

    cpu CPU性能測驗

    memory 記憶體測驗

    threads POSIX執行緒性能測驗

    mutex 執行Mutext性能測驗(調度程式性能測驗)

    說明:當testname指定為lua腳本名稱時,實際執行時,會到sysbench_installation_home/share/sysbench目錄下查找對應名稱的腳本,找到后再執行腳本,

    可通過sysbench <testname> help查看每種測驗支持的選項

    問題:如果testnamelua腳本名稱、lua腳本路徑時,咋知道該腳本支持的選項有哪些,選項引數默認值為多少呢?

    解答:這個就要看testname對應腳本參考的common.lua腳本檔案,該檔案中定義的set_vars函式定義了命令支持的選項,以及對應的默認值,具體參見下文,然后,分析待執行的腳本中用到了哪些選項,

  • command 命令會被傳遞給內置測驗名稱或者由testname指定的腳本,其定義了測驗必須執行的動作,可用命令串列取決于特定的測驗,有些測驗也實作了自己的命令,以下為典型的測驗命令的描述:

    • prepare 測驗前的準備操作,比如為fileio測驗創建必要的檔案,或者為資料庫測驗基線填充測驗資料庫,

    • run 運行由testname引數指定的測驗,所有測驗都支持該命令,

    • cleanup 測驗運行完成后,移除測驗創建的臨時資料,比如洗掉創建的表

    • help 顯示testname使用幫助

  • options 可選項,常見選項許下

    常用一般命令列選項

    --threads 需要創建的worker執行緒數量 默認值 1

    --events=N 設定期望執行的事件總數,0表示不限制 默認值 0

    --time=N 設定總執行時間,單位秒,0表示不限制, 默認值 10

    --forced-shutdown=STRING 超過--time限制后,關閉程式之前需要等待的秒數,如果設定為off則表示不啟用, 默認值 off

    --rate=N 平均事務速率, 0表示不限制,默認值 0
    --report-interval=N 設定定期報告中間統計的時間間隔為N,單位為秒 , 0表示不設定,默認值 0

    注意:

    1. 如果運行程式命令時,如果當前總執行時間已經達到--time選項引數值(默認10秒),不管當前已執行事件總數是否達到--events選項引數值,都會停止運行程式,所以如果需要為程式命令顯示指定--events選項時,需要合理的設定--time選項引數值,
    2. 如果運行程式命令時,如果當前已執行事件總數已達到--events選項引數值,不管當前總執行時間是否達到--time選項引數值,都會停止測驗

    常用日志選項

    --verbosity=N 日志詳細級別 {5 - debug, 0 - 僅critical messages} 默認值 3

    --percentile=N 延時統計(latency statistics)中,需要計算的百分比 (1-100),設定為0表示禁用百分比值計算, Use the special

    常用資料庫選項

    --db-driver=STRING 設定程式使用的資料庫驅動,默認值 mysql

    常用mysql 選項:
    --mysql-host=host mysql服務主機地址 默認localhost
    --mysql-port=3306 mysql服務埠 默認值 3306
    --mysql-user=STRING mysql用戶名稱 默認值 sbtest
    --mysql-password=STRING mysql密碼,默認值 []
    --mysql-db=STRING mysql資料庫名稱 默認 sbtest

應用實踐

mysql資料庫性能基準測驗

創建資料庫

CREATE DATABASE `sbtest` DEFAULT CHARACTER SET utf8;

注意:如果不事先創建資料庫,則運行一下測驗腳本時,會報錯:FATAL: error 1049: Unknown database 'sbtest'

插入資料測驗

運行壓測準備命令

# sysbench --oltp-tables-count=5 --oltp_table_size=0 --mysql-host=10.118.80.88 --mysql-user=testacc --mysql-password=test1234 sysbench-1.0.20/tests/include/oltp_legacy/insert.lua prepare

說明:

1、執行以上命令后,會自動創建5張空表

2、sysbench-1.0.20/tests/include/oltp_legacy/insert.luasysbench工具壓縮包中自帶腳本,下文所用到的腳本皆非自定義腳本,不再贅述

運行插入資料測驗

# sysbench --threads=80 --time=600 --events=50000000 --oltp-tables-count=5 --oltp_table_size=10000000 --mysql-host=10.118.80.88 --mysql-user=testacc --mysql-password=test1234 sysbench-1.0.20/tests/include/oltp_legacy/insert.lua run > result.txt

查看運行結果

混合操作測驗

# sysbench  --threads=300 --time=1200 --oltp-tables-count=5 --oltp_table_size=10000000 mysql-host=10.118.80.88 --mysql-user=testacc --mysql-password=test1234 sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua run > result.txt

運行清理命令

# sysbench --oltp-tables-count=5 --mysql-host=10.118.80.88 --mysql-user=testacc --mysql-password=test1234 sysbench-1.0.20/tests/include/oltp_legacy/insert.lua cleanup

注意:執行preparecleanup命令時的--oltp-tables-count選項引數值要保持一致

lua腳本分析

sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua

具體分析參見中文注釋

pathtest = string.match(test, "(.*/)") # 首先,正則匹配當前測驗名稱(sysbench命令列提供的testname)

if pathtest then # 如果測驗名稱正則匹配 .*/
   # 說明測驗名稱為腳本,形如sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua,因為測驗腳本和common.lua位于同一層級目錄,所以,拼接腳本所在目錄路徑和"common.lua"得到common.lua檔案路徑,然后,加載檔案
   dofile(pathtest .. "common.lua") 
else # 否則,加載工具捆綁的common腳本,即sysbench_installation_home/share/sysbench/common.lua
   require("common")
end


function thread_init() # 執行緒初始化函式定義
   set_vars() # 呼叫common中的set_vars函式設定變數

   # 如果資料庫驅動為mysql、attachsql,并且mysql表引擎為myisam 
   if (((db_driver == "mysql") or (db_driver == "attachsql")) and mysql_table_engine == "myisam") then
      # 則走下述邏輯
      local i
      local tables = {}
      # 根據命令列oltp_tables_count引數值,初始化tables陣列元素為表名,格式形如sbtestN WRITE,其中N從1開始,最大值等于oltp_tables_count,即表數量
      for i=1, oltp_tables_count do 
         tables[i] = string.format("sbtest%i WRITE", i)
      end
      begin_query = "LOCK TABLES " .. table.concat(tables, " ,")
      commit_query = "UNLOCK TABLES"
   else # 否則定義事務起始查詢陳述句為 begin_query為BEGIN,結束查詢陳述句為 COMMIT
      begin_query = "BEGIN"
      commit_query = "COMMIT"
   end

end

# 定義函式 用于獲取查詢條件
function get_range_str()
   local start = sb_rand(1, oltp_table_size) # 隨機獲取 [1, 單表記錄總數] 范圍內的整數,作為范圍查詢條件起始值
   return string.format(" WHERE id BETWEEN %u AND %u",
                        start, start + oltp_range_size - 1) # 回傳查詢條件WHERE id BETWEEN start AND (start + 99) (oltp_range_size默認為100
end

定義待執行的“事件”函式
function event()
   local rs # 查詢回傳結果
   local i   
   local table_name
   # 以下變數用于存放欄位值和查詢
   local c_val
   local pad_val
   local query

   table_name = "sbtest".. sb_rand_uniform(1, oltp_tables_count) # 隨機獲取表名,格式形如 sbtestN,其中N為從[1,表數量]范圍內的隨機整數
   if not oltp_skip_trx then # 如果不跳過事務,
      db_query(begin_query) # 則執行do_query(oltp_skip_trx默認為false,所以這里會執行do_query),即標記事務開始
   end
   
    
   if not oltp_write_only then # 如果not oltp_write_only為真(oltp_write_only默認為false)
   # 則執行以下for回圈(oltp_point_selects默認為10次,所以,會執行10次for回圈查詢,查詢陳述句為:
   # SELECT c FROM table_name WHERE id=id_value
   # 說明:
   #  table_name   上述獲取的隨機表名,下同,不再贅述
   #  c            非索引列
   #  id           主鍵列
   #  id_value     目標id值,隨機獲取已存在記錄ID
   for i=1, oltp_point_selects do
      rs = db_query("SELECT c FROM ".. table_name .." WHERE id=" ..
                       sb_rand(1, oltp_table_size))
   end

   if oltp_range_selects then # 如果oltp_range_selects為true,(oltp_range_selects默認為true)
   # 執行按范圍簡單查詢 1次(oltp_simple_ranges默認為1次,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # SELECT c FROM table_name WHERE id BETWEEN id_value1 AND id_value2 
   # 說明:
   #  id_value1   隨機獲取已存在記錄ID,下同,不再贅述
   #  id_value2   id_value1 + 99,下同,不再贅述
   for i=1, oltp_simple_ranges do 
      rs = db_query("SELECT c FROM ".. table_name .. get_range_str())
   end


   # 執行 按范圍sum查詢  1次 (oltp_sum_ranges默認值為 1,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # SELECT sum(c) FROM table_name WHERE id BETWEEN id_value1 AND id_value2 
   for i=1, oltp_sum_ranges do 
      rs = db_query("SELECT SUM(K) FROM ".. table_name .. get_range_str())
   end

   # 執行 按范圍排序查詢  1次 (oltp_order_ranges默認值為 1,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # SELECT c FROM table_name WHERE id BETWEEN id_value1 AND id_value2 ORDER BY c
   for i=1, oltp_order_ranges do
      rs = db_query("SELECT c FROM ".. table_name .. get_range_str() ..
                    " ORDER BY c")
   end

   # 執行 DISTINCT 排序查詢 1次 (oltp_distinct_ranges默認值為 1,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # SELECT DISTINCT c FROM table_name WHERE id BETWEEN id_value1 AND id_value2 ORDER BY c
   for i=1, oltp_distinct_ranges do
      rs = db_query("SELECT DISTINCT c FROM ".. table_name .. get_range_str() ..
                    " ORDER BY c")
   end

   end

   end
   
   if not oltp_read_only then # not oltp_read_only為真(oltp_read_only默認為false)
   # 執行 更新索引列欄位操作 1次 (oltp_index_updates默認值為 1,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # UPDATE table_name SET k=k+1  WHERE id=id_value
   # 說明:
   #   k為索引列欄位
   for i=1, oltp_index_updates do
      rs = db_query("UPDATE " .. table_name .. " SET k=k+1 WHERE id=" .. sb_rand(1, oltp_table_size))
   end

   # 執行 更新非索引列欄位操作 1次 (oltp_index_updates默認值為 1,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # UPDATE table_name SET c="c_val"  WHERE id=id_value
   # 說明:
   #  c_val  長度為119位字符的隨機字串
   for i=1, oltp_non_index_updates do
      c_val = sb_rand_str("###########-###########-###########-###########-###########-###########-###########-###########-###########-###########") # 長度為119位字符的隨機字串
      query = "UPDATE " .. table_name .. " SET c='" .. c_val .. "' WHERE id=" .. sb_rand(1, oltp_table_size)
      rs = db_query(query)
      if rs then
        print(query) # 列印查詢結果
      end
   end
   
   # 執行 洗掉指定記錄操作 1次 (oltp_delete_inserts默認值為 1,所以只會執行1次for回圈查詢)
   # SQL陳述句為:
   # DELETE FROM table_name WHERE id=id_value1
   for i=1, oltp_delete_inserts do

   i = sb_rand(1, oltp_table_size)

   rs = db_query("DELETE FROM " .. table_name .. " WHERE id=" .. i)
   
   c_val = sb_rand_str([[
###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]]) 
   pad_val = sb_rand_str([[
###########-###########-###########-###########-###########]]) # 64位隨機字串 
   
   # 執行 插入資料操作 1次
   # SQL陳述句為:
   # INSERT INTO table_name(id, K, c, pad)VALUES(id_value, num, field_value1, field_value2 )
   # 說明:
   #   num   [1,表記錄數] 范圍內的隨機整數
   #   field_value1  119位隨機字串 
   #   field_value2  64位隨機字串 
    rs = db_query("INSERT INTO " .. table_name ..  " (id, k, c, pad) VALUES " .. string.format("(%d, %d, '%s', '%s')",i, sb_rand(1, oltp_table_size) , c_val, pad_val))

   end

   end -- oltp_read_only

   if not oltp_skip_trx then
      db_query(commit_query)
   end

end
sysbench-1.0.20/tests/include/oltp_legacy/common.lua

具體分析參見中文注釋

-- Input parameters
-- oltp-tables-count - number of tables to create
-- oltp-secondary - use secondary key instead PRIMARY key for id column
--
--

# 定義插入函式
function create_insert(table_id)

   local index_name
   local i
   local j
   local query

   if (oltp_secondary) then
     index_name = "KEY xid"
   else
     index_name = "PRIMARY KEY"
   end

   if (pgsql_variant == 'redshift') then
      auto_inc_type = "INTEGER IDENTITY(1,1)"
   else
      auto_inc_type = "SERIAL"
   end

   i = table_id

   print("Creating table 'sbtest" .. i .. "'...")
   # 根據不同驅動,執行對應建表陳述句,表名格式 sbtestN,其中N從1開始,最大值為oltp_tables_count
   if ((db_driver == "mysql") or (db_driver == "attachsql")) then
      query = [[
CREATE TABLE sbtest]] .. i .. [[ (
id INTEGER UNSIGNED NOT NULL ]] ..
((oltp_auto_inc and "AUTO_INCREMENT") or "") .. [[,
k INTEGER UNSIGNED DEFAULT '0' NOT NULL,
c CHAR(120) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
]] .. index_name .. [[ (id)
) /*! ENGINE = ]] .. mysql_table_engine ..
" MAX_ROWS = " .. myisam_max_rows .. " */ " ..
   (mysql_table_options or "")

   elseif (db_driver == "pgsql") then
      query = [[
CREATE TABLE sbtest]] .. i .. [[ (
id ]] .. auto_inc_type .. [[ NOT NULL,
k INTEGER DEFAULT '0' NOT NULL,
c CHAR(120) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
]] .. index_name .. [[ (id)
) ]]

   elseif (db_driver == "drizzle") then
      query = [[
CREATE TABLE sbtest (
id INTEGER NOT NULL ]] .. ((oltp_auto_inc and "AUTO_INCREMENT") or "") .. [[,
k INTEGER DEFAULT '0' NOT NULL,
c CHAR(120) DEFAULT '' NOT NULL,
pad CHAR(60) DEFAULT '' NOT NULL,
]] .. index_name .. [[ (id)
) ]]
   else
      print("Unknown database driver: " .. db_driver)
      return 1
   end

   db_query(query)

   print("Inserting " .. oltp_table_size .. " records into 'sbtest" .. i .. "'")

   if (oltp_auto_inc) then
      db_bulk_insert_init("INSERT INTO sbtest" .. i .. "(k, c, pad) VALUES")
   else
      db_bulk_insert_init("INSERT INTO sbtest" .. i .. "(id, k, c, pad) VALUES")
   end

   local c_val
   local pad_val


   # for回圈,往表插入資料,直到插入oltp_table_size條記錄
   for j = 1,oltp_table_size do

   c_val = sb_rand_str([[
###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]])
   pad_val = sb_rand_str([[
###########-###########-###########-###########-###########]])

      if (oltp_auto_inc) then
	 db_bulk_insert_next("(" .. sb_rand(1, oltp_table_size) .. ", '".. c_val .."', '" .. pad_val .. "')")
      else
	 db_bulk_insert_next("("..j.."," .. sb_rand(1, oltp_table_size) .. ",'".. c_val .."', '" .. pad_val .. "'  )")
      end
   end

   db_bulk_insert_done()

   if oltp_create_secondary then
     print("Creating secondary indexes on 'sbtest" .. i .. "'...")
     db_query("CREATE INDEX k_" .. i .. " on sbtest" .. i .. "(k)")
   end

end

# 定義執行prepare命令時呼叫的函式
function prepare()
   local query
   local i
   local j

   set_vars() # 設定變數

   db_connect() # 連接資料庫


   # for回圈插入資料,回圈次數為 oltp_tables_count,
   for i = 1,oltp_tables_count do
     create_insert(i) 
   end

   return 0
end

# 定義執行clean命令時呼叫的函式
function cleanup()
   local i

   set_vars() # 呼叫set_vars函式,設定變數

   for i = 1,oltp_tables_count do
   print("Dropping table 'sbtest" .. i .. "'...") 
   db_query("DROP TABLE IF EXISTS sbtest".. i ) # 洗掉表sbtestN,其中N從1~ oltp_tables_count,即表數量
   end
end

function set_vars()
   # 以下非本地變數的默認值都為 nil
   oltp_table_size = tonumber(oltp_table_size) or 10000  # 單表記錄總數 默認值10000
   oltp_range_size = tonumber(oltp_range_size) or 100    # between and 范圍查詢 默認值100
   oltp_tables_count = tonumber(oltp_tables_count) or 1    # 表數量 默認值 1
   oltp_point_selects = tonumber(oltp_point_selects) or 10 # 按點查詢次數(where id=) 默認值 10
   oltp_simple_ranges = tonumber(oltp_simple_ranges) or 1  # 簡單查詢次數 默認值 1
   oltp_sum_ranges = tonumber(oltp_sum_ranges) or 1      # sum查詢次數 默認值 1
   oltp_order_ranges = tonumber(oltp_order_ranges) or 1  # order by排序查詢次數 默認值 1
   oltp_distinct_ranges = tonumber(oltp_distinct_ranges) or 1 # distinct范圍查詢次數 默認值 1
   oltp_index_updates = tonumber(oltp_index_updates) or 1     # 更新索引列操作次數 默認值 1
   oltp_non_index_updates = tonumber(oltp_non_index_updates) or 1 # 更新索引列欄位操作次數 默認值 1
   oltp_delete_inserts = tonumber(oltp_delete_inserts) or 1   # 執行洗掉記錄操作次數 默認值 1

   if (oltp_range_selects == 'off') then
      oltp_range_selects = false
   else 
      oltp_range_selects = true
   end

   if (oltp_auto_inc == 'off') then
      oltp_auto_inc = false
   else
      oltp_auto_inc = true
   end

   if (oltp_read_only == 'on') then
      oltp_read_only = true
   else
      oltp_read_only = false
   end

   if (oltp_write_only == 'on') then
      oltp_write_only = true
   else
      oltp_write_only = false
   end

   if (oltp_read_only and oltp_write_only) then
      error("--oltp-read-only and --oltp-write-only are mutually exclusive")
   end

   if (oltp_skip_trx == 'on') then
      oltp_skip_trx = true
   else
      oltp_skip_trx = false
   end

   if (oltp_create_secondary == 'off') then
      oltp_create_secondary = false
   else
      oltp_create_secondary = true
   end

   if (pgsql_variant == 'redshift') then
      oltp_create_secondary = false
      oltp_delete_inserts = 0
   end

end

運行結果說明

混合操作壓測結果為例

# cat result.txt
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 300
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            34507228
        write:                           9859208
        other:                           4929604
        total:                           49296040
    transactions:                        2464802 (2053.74 per sec.)
    queries:                             49296040 (41074.74 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          1200.1525s
    total number of events:              2464802

Latency (ms):
         min:                                  129.86
         avg:                                  146.06
         max:                                  806.70
         95th percentile:                      155.80
         sum:                            360014005.42

Threads fairness:
    events (avg/stddev):           8216.0067/329.90
    execution time (avg/stddev):   1200.0467/0.04

結果項說明:

SQL statistics:
    queries performed:                   執行的SQL查詢:
        read:                            讀請求次數
        write:                           寫請求次數
        other:                           其它請求次數
        total:                           總請求次數
    transactions:                        執行的事務總數   (每秒事務數.)
    queries:                             執行的查詢總次數   (每秒查詢次數.)
    ignored errors:                      忽略錯誤數      (每秒忽略錯誤次數.)
    reconnects:                          資料庫重連次數      (每秒重連次數.)

General statistics:
    total time:                          總運行時間,以秒為單位
    total number of events:              總執行事件數

Latency (毫秒為單位):
         min:                                  最小請求回應時間
         avg:                                  平均請求回應時間
         max:                                  最大請求回應時間
         95th percentile:                      95%的請求回應時間
         sum:                                  總請求回應時間

Threads fairness:
    events (avg/stddev):           執行的事件總數(平均每個執行緒執行的事件總數/標準差)
    execution time (avg/stddev):   執行耗時(平均每個執行緒執行事件耗時/標準差)

參考連接

https://github.com/akopytov/sysbench#general-command-line-options

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272767.html

標籤:其他

上一篇:APP | edxposed框架+trustmealredy模塊抓包小程式

下一篇:哇塞!原來這樣學編程可以直接起飛,讓你超越同學一大截!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more