- KDB+ 教程
- KDB+ - 首頁
- Q 程式語言
- Q 程式語言
- Q 語言 - 型別轉換
- Q 語言 - 時間資料
- Q 語言 - 列表
- Q 語言 - 索引
- Q 語言 - 字典
- Q 語言 - 表格
- Q 語言 - 動詞 & 副詞
- Q 語言 - 連線
- Q 語言 - 函式
- Q 語言 - 內建函式
- Q 語言 - 查詢
- Q - 程序間通訊
- Q - 訊息處理器(.Z 庫)
- KDB+ 有用資源
- KDB+ - 快速指南
- KDB+ - 有用資源
- KDB+ - 討論
Q 語言 - 訊息處理器
當一個q程序透過程序間通訊連線到另一個q程序時,它由訊息處理器處理。這些訊息處理器具有預設行為。例如,在同步訊息處理的情況下,處理器返回查詢的值。在這種情況下,同步處理器是.z.pg,我們可以根據需要覆蓋它。
Kdb+ 程序有幾個預定義的訊息處理器。訊息處理器對於配置資料庫非常重要。一些用法包括:
日誌記錄 - 記錄傳入訊息(在發生任何致命錯誤時很有幫助),
安全性 - 根據使用者名稱/IP 地址允許/拒絕訪問資料庫、某些函式呼叫等。它有助於僅向授權的訂閱者提供訪問許可權。
處理來自其他程序的連線/斷開連線。
預定義的訊息處理器
下面討論一些預定義的訊息處理器。
.z.pg
它是一個同步訊息處理器(程序獲取)。每當在 kdb+ 例項上收到同步訊息時,此函式都會自動呼叫。
引數是要執行的字串/函式呼叫,即傳遞的訊息。預設情況下,其定義如下:
.z.pg: {value x} / simply execute the message
received but we can overwrite it to
give any customized result.
.z.pg : {handle::.z.w;value x} / this will store the remote handle
.z.pg : {show .z.w;value x} / this will show the remote handle
.z.ps
它是一個非同步訊息處理器(程序設定)。它是非同步訊息的等效處理器。引數是要執行的字串/函式呼叫。預設情況下,其定義為:
.z.pg : {value x} / Can be overriden for a customized action.
以下是非同步訊息的自定義訊息處理器,其中我們使用了受保護的執行:
.z.pg: {@[value; x; errhandler x]}
這裡errhandler是發生任何意外錯誤時使用的函式。
.z.po[]
它是一個連線開啟處理器(程序開啟)。當遠端程序開啟連線時執行。要檢視開啟與程序的連線時的控制代碼,我們可以將 .z.po 定義為:
.z.po : {Show “Connection opened by” , string h: .z.h}
.z.pc[]
它是一個關閉連線處理器(程序關閉)。當連線關閉時呼叫。我們可以建立自己的關閉處理器,它可以將全域性連線控制代碼重置為 0 併發出命令以設定定時器以每 3 秒(3000 毫秒)觸發(執行)。
.z.pc : { h::0; value “\\t 3000”}
定時器處理器 (.z.ts) 嘗試重新開啟連線。成功後,它會關閉定時器。
.z.ts : { h:: hopen `::5001; if [h>0; value “\\t 0”] }
.z.pi[]
PI 代表程序輸入。它用於任何型別的輸入。它可以用於處理控制檯輸入或遠端客戶端輸入。使用 .z.pi[],可以驗證控制檯輸入或替換預設顯示。此外,它可以用於任何型別的日誌記錄操作。
q).z.pi
'.z.pi
q).z.pi:{">", .Q.s value x}
q)5+4
>9
q)30+42
>72
q)30*2
>60
q)\x .z.pi
>q)
q)5+4
9
.z.pw
它是一個驗證連線處理器(使用者身份驗證)。在開啟到 kdb+ 會話的連線時,它會新增一個額外的回撥。它在 –u/-U 檢查之後和 .z.po(埠開啟)之前呼叫。
.z.pw : {[user_id;passwd] 1b}
輸入是userid(符號)和password(文字)。