對接極速行情丨DolphinDB MDL 行情插件使用指南

通聯數據依托于金融大數據,結合人工智能技術為投資者提供個性化、智能化、專業化投資服務, MDL 則是通聯數據提供的高頻行情數據服務。DolphinDB 提供了能夠從 MDL 服務器獲取高頻行情數據的 DolphinDB MDL 插件,幫助用戶方便地通過 DolphinDB 腳本語言將實時行情數據接入 DolphinDB 中,以便進行后續的計算或存儲

本文主要介紹如何通過 MDL 插件將實時行情數據寫入分布式數據庫。本文全部代碼需要運行在 2.00.11 或者更高版本的 DolphinDB Server 以及插件上,目前僅支持 Linux 系統。

1. DolphinDB MDL 行情插件介紹

MDL 插件基于 MDL 官方提供的行情數據服務 C++ SDK(即 TCP 版本 MDL)實現。MDL 插件最核心的功能是實現了行情回調函數,每次接收到行情時會寫入訂閱時所指定的 DolphinDB 共享流表中。DolphinDB MDL 插件目前已經支持了包括上交所、深交所、中金所 、鄭商所、上期能源、大商所、廣期所數據源的 50 余種數據類型,訂閱使用所需指定的參數詳情見下文。具體MDL 插件的接口介紹見?DolphinDB MDL Plugin 使用說明。

2. 基本使用介紹

2.1 安裝插件

MDL 插件目前可以在 2.00.11 版本及以后的 DolphinDB Server 通過插件市場進行安裝。節點啟動后,連接節點并在 GUI(或 VS Code、Web UI)等?DolphinDB 客戶端中執行?installPlugin?函數,則可以下載到與當前 server 版本適配的 MDL 插件文件,插件文件包括插件描述文件及插件的二進制文件。

login("admin", "123456")
installPlugin("MDL")

installPlugin?函數若正常返回,則代表下載成功,其返回值為插件描述文件(PluginMDL.txt)的安裝路徑,如:

/path_to_dolphindb_server/server/plugins/MDL/PluginMDL.txt

installPlugin?函數實際上是完成從遠程文件服務器拉取插件文件到 DolphinDB Server 所在的服務器,壓縮后的 MDL 包大小約為 60 MB,下載需要一定的耗時。

2.2 加載插件

在腳本中調用插件相關的接口前,需要先加載插件。在 GUI(或 VS Code、Web UI)等客戶端中執行?loadPlugin("MDL")。以下示例中使用了相對路徑,也可以使用 2.1 中返回的絕對路徑?/path_to_dolphindb_server/server/plugins/MDL/PluginMDL.txt

loadPlugin("./plugins/MDL/PluginMDL.txt")

loadPlugin?函數正常返回則插件加載成功,以 VS Code 為例,首次加載成功后返回的部分信息如下,返回值內容是 MDL 插件所提供的函數:

3. 行情的接入與存儲

本章以訂閱滬深兩市的全市場股票的逐筆數據、實時寫入 DolphinDB 分布式數據庫為例,對 MDL 插件的使用進行說明。

3.1 數據接入方案

數據接入的流程如下:

  • 通過 MDL 插件訂閱深圳市場的股票逐筆委托、逐筆成交,以及上海市場的逐筆合并數據逐筆數據寫入 DolphinDB 的三個持久化流數據表。持久化流數據表是具備發布訂閱功能的內存表。
  • 訂閱持久化流數據表寫入 DolphinDB 分布式數據庫,將數據存儲到磁盤上。

注意:請勿使用 MDL 插件將行情數據直接寫入分布式數據庫。因為分布式數據庫并不適用于此類高頻的流式寫入。建議在使用時,借助流數據表及其發布訂閱功能以實現部分的批處理。這樣既可以提高寫入的吞吐量,也有助于降低時延。

MDL 行情接收流程圖

下面分步驟介紹關鍵的 DolphinDB 代碼實現,完整腳本見附錄。

3.2 數據接入方案實施步驟

3.2.1 流表和分布式表規劃

注意:為保證后續的?enableTableShareAndPersistence?函數能夠正常執行,需要節點啟動之前在配置文件中(單節點:dolohindb.cfg,集群:cluster.cfg)指定配置參數?persistenceDir?,配置參考功能配置。

獲取表結構

調用?MDL::getSchema?方法可以獲取行情數據各個表的表結構。運行以下代碼可以獲取上海股票逐筆合并、深圳股票逐筆成交和逐筆委托三張表的表結構:

// 深交所股票逐筆成交
transactionSchema = MDL::getSchema(`MDLSID_MDL_SZL2, 36);
// 深交所股票逐筆委托
orderSchema = MDL::getSchema(`MDLSID_MDL_SZL2, 33);
// 上交所股票逐筆合并
ngtsSchema = MDL::getSchema(`MDLSID_MDL_SHL2, 24);

創建持久化流數據表

得到行情數據的表結構后,使用該表結構創建持久化流數據表。

cacheSize = 1000000enableTableShareAndPersistence(table=streamTable(cacheSize:0, transactionSchema[`name], transactionSchema[`type]), tableName=`transactionTable_sz, cacheSize=cacheSize)
enableTableShareAndPersistence(table=streamTable(cacheSize:0, orderSchema[`name], orderSchema[`type]), tableName=`orderTable_sz, cacheSize=cacheSize)
enableTableShareAndPersistence(table=streamTable(cacheSize:0, ngtsSchema[`name], ngtsSchema[`type]), tableName=`ngtsTable_sh, cacheSize=cacheSize)

代碼第二行的?cacheSize?變量控制了在建表時預分配內存的大小、以及流數據表可占用的最大內存,其單位是行,設置較大的?cacheSize?可以降低出現峰值時延的頻率。具體大小可以根據實際的可使用的內存大小決定。具體優化原理可參考?DolphinDB 流計算時延統計與性能優化。

創建分布式數據庫

為將行情數據存入分布式數據庫,需要根據之前得到的行情數據表結構來創建分布式庫表,分區規則參考自《基于 DolphinDB 存儲金融數據的分區方案最佳實踐》。

注意:由于 MDL 沒有當天的日期字段,因此需要手動增加日期字段以便于分區。

transactionColName = transactionSchema[`name]
transactionColName.append!("Date")
transactionColType = transactionSchema[`type]
transactionColType.append!(DATE)
orderColName = orderSchema[`name]
orderColName.append!("Date")
orderColType = orderSchema[`type]
orderColType.append!(DATE)
ngtsColName = ngtsSchema[`name]
ngtsColName.append!("Date")
ngtsColType = ngtsSchema[`type]
ngtsColType.append!(DATE)dbName = "dfs://Stock_TB"
transactionTbName = "transactionTable_sz"
orderTbName = "orderTable_sz"
ngtsTbName = "ngtsTable_sh"dbDate = database(, partitionType=VALUE, partitionScheme=2024.01.01..2025.01.01)
dbID = database(, partitionType=HASH, partitionScheme=[SYMBOL, 25])
db = database(directory=dbName, partitionType=COMPO, partitionScheme=[dbDate, dbID],engine='TSDB',atomic='CHUNK')tbSchema = table(1:0, transactionColName, transactionColType)
db.createPartitionedTable(table=tbSchema,tableName=transactionTbName,partitionColumns=`Date`SecurityID,sortColumns=`SecurityID`TransactTime)
tbSchema = table(1:0, orderColName, orderColType)
db.createPartitionedTable(table=tbSchema,tableName=orderTbName,partitionColumns=`Date`SecurityID,sortColumns=`SecurityID`TransactTime)
tbSchema = table(1:0, ngtsColName, ngtsColType)
db.createPartitionedTable(table=tbSchema,tableName=ngtsTbName,partitionColumns=`Date`SecurityID,sortColumns=`SecurityID`TickTime)

3.2.2 訂閱 MDL 行情將增量數據到流數據表

建立 MDL 連接句柄

用戶配置 MDL 的連接信息及驗證 TOKEN,使用?MDL::createHandle?函數創建連接的句柄。注意創建連接句柄并沒有連接,只有在執行?MDL::connectMDL?后才會真正進行連接、接收數據。

因為通聯 MDL 不支持同時訂閱在不同服務器的數據源,也就是當同時訂閱上交所 L2 和深交所 L2 時,只能收到其中一個數據源的行情。為了解決這個問題,需要創建兩個句柄,分別訂閱上交所 L2 和深交所 L2 的數據。

需要注意的是,在?createHandle?建立連接時可以指定?workerNum?線程數,如果指定了大于 1 的線程數,則 MDL 的回調會在多個線程內進行,因此寫入 DolphinDB 流表的過程也是多線程的。下面的例子中指定線程數為 1,即單線程進行回調。

// 配置連接
HOST =  ["mdl-sse01.datayes.com","mdl01.datayes.com","mdl02.datayes.com","mdl01.datayes.com","mdl02.datayes.com","mdl01.datayes.com","mdl02.datayes.com","mdl01.datayes.com","mdl02.datayes.com","mdl-cloud-bj.datayes.com","mdl-cloud-sz.datayes.com","mdl01.datayes.com","mdl02.datayes.com"]
PORT =  [19010,19011,19011,19010,19010,19013,19013,19012,19012,19012,19012,19018,19018]
// TOKEN 根據實際需要進行替換
USERNAME = "97887ADLJFKAJLSDF98976WRUJD0KJDFLAKJDS"handle_sh = MDL::createHandle(`handle_sh, HOST, PORT, USERNAME, 1)
handle_sz = MDL::createHandle(`handle_sz, HOST, PORT, USERNAME, 1)

訂閱行情數據

使用?MDL::subscribe?函數進行 MDL 行情訂閱,在訂閱時需要傳入要訂閱的數據服務 ID 和版本號,并指定消息 ID。

// 深交所股票數據
MDL::subscribe(handle_sz, orderTable_sz, `MDLSID_MDL_SZL2, `MDLVID_MDL_SZL2, 33)
MDL::subscribe(handle_sz, transactionTable_sz, `MDLSID_MDL_SZL2, `MDLVID_MDL_SZL2, 36)
// 上交所股票數據
MDL::subscribe(handle_sh, ngtsTable_sh, `MDLSID_MDL_SHL2, `MDLVID_MDL_SHL2, 24)

有關 MDL 插件對數據品類的支持情況和相關訂閱參數,參考附錄 3.。

3.2.3 訂閱流表寫入分布式庫

訂閱 3.2 節中的三個持久化流數據表,將增量數據實時寫入分布式數據庫。

Transaction = loadTable(database=dbName, tableName=transactionTbName)
Order = loadTable(database=dbName, tableName=orderTbName)
Ngts = loadTable(database=dbName, tableName=ngtsTbName)def handleInsert(tb, mutable msg) {msg.addColumn("Date", DATE)msg.replaceColumn!("Date", take(date(now()), msg.size()))tableInsert(tb, msg)
}subscribeTable(tableName="transactionTable_sz", actionName="transactionTableInsert", offset=-1, handler=handleInsert{Transaction}, msgAsTable=true, batchSize=20000, throttle=1, reconnect=true)
subscribeTable(tableName="orderTable_sz", actionName="orderTableInsert", offset=-1, handler=handleInsert{Order}, msgAsTable=true, batchSize=20000, throttle=1, reconnect=true)
subscribeTable(tableName="ngtsTable_sh", actionName="ngtsTableInsert", offset=-1, handler=handleInsert{Ngts}, msgAsTable=true, batchSize=20000, throttle=1, reconnect=true)
  • handleInsert?自定義函數會手動新增一列新的 Date 數據,并寫入當天的日期。
  • 通過調整?subscribeTable?函數中的?batchSize?和?throttle?參數可以控制寫入分布式數據庫的頻率。
    • batchSize=20000 表示當未處理消息的數量達到 20000 時,handler 才會處理消息。
    • throttle=1 表示繼上次 handler 處理消息之后,若未處理消息的數量還沒有達到 20000 ,但是時間間隔 1s 后也會處理消息。
    • 因此,達到?batchSize?設置的條件或者達到?throttle?設置的條件,才會向分布式數據庫寫入一次。

3.2.4 啟動 MDL 連接,開啟數據寫入

由于 MDL 需要在連接前設置完數據的訂閱,連接后將無法添加訂閱。所以在訂閱后,使用函數?MDL::connectMDL?連接 MDL,行情數據將進入流數據表。

MDL::connectMDL(handle_sh)
MDL::connectMDL(handle_sz)

3.3 MDL 運行狀態監控

運行過程中,可以查看 MDL 行情的接收情況。可以使用?MDL::getHandleStatus?查詢 MDL 行情的接收情況。

stat = MDL::getHandleStatus()
select HandleName,CreateTime,IsConnect,SubscribeInfo from stat

返回結果如下,可以看到在本例提交了 MDL 訂閱,訂閱了深交所的逐筆成交和逐筆委托,以及上交所的逐筆合成,目前的連接狀態為 true。

查詢流表的訂閱,可以看到發布訂閱都正常進行。

getStreamingStat().subWorkers

查詢 dfs 表中某一只股票的數據,觀察數據。這里查詢?600100?這支上交所股票的數據,執行以下命令,從 dfs 表中獲取了從連接之后的所有該股票的逐筆數據。

select * from loadTable("dfs://Stock_TB", "ngtsTable_sh") where SecurityID=`600100

至此,已經成功訂閱上交所和深交所的逐筆數據并將它落盤到 DolphinDB 分布式表中。

附錄

1. 訂閱落庫的腳本文件

MDL落庫腳本.dos

2. 常見問題

如果重復執行?loadPlugin?加載插件,會拋出模塊已經被使用的錯誤提示,因為節點啟動后,只允許加載一次 MDL 插件,即可在任意會話中調用該插件提供的函數。錯誤提示如下:

The module [MDL] is already in use.

可以通過?try-cach?語句捕獲這個錯誤,避免因為插件已加載而中斷后續腳本代碼的執行:

try{ loadPlugin("./plugins/MDL/PluginMDL.txt") }catch(ex){print ex}

3. MDL 插件數據品類參數表

MDL 插件目前支持了下表中出現的數據品類。在訂閱時可以查詢該表,找到想要訂閱的數據入參。表中為空的項,對應字段在訂閱時填空即可。

行情源品種svrIDsvrVersion行情數據類型msgIDextraOrderLevel
上交所L2“MDLSID_MDL_SHL2”“MDLVID_MDL_SHL2”市場行情 (mdl.4.4)4
上交所L2“MDLSID_MDL_SHL2”“MDLVID_MDL_SHL2”市場行情 (mdl.4.4)

帶10檔買賣方向委托隊列數據
41-10 (僅支持上交所、深交所快照。視具體需要的委托隊列檔位而指定, 下同。)
上交所L2“MDLSID_MDL_SHL2”“MDLVID_MDL_SHL2”指數行情 (mdl.4.6)6
上交所L2“MDLSID_MDL_SHL2”“MDLVID_MDL_SHL2”盤后固定價格行情消息 (mdl.4.16)16
上交所L2“MDLSID_MDL_SHL2”“MDLVID_MDL_SHL2”盤后固定價格交易逐筆成交消息 (mdl.4.17)17
上交所L2“MDLSID_MDL_SHL2”“MDLVID_MDL_SHL2”競價逐筆合并行情 (mdl.4.24)24
orderbookSnapshotEngine

上交所L2股票行情快照實時合成
"SHL2_ORDER_AND_TRANSACTION"非通聯MDL原始行情,
用于獲取實時快照合成的數據
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”市場行情 (mdl.6.28)28
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”市場行情 (mdl.6.28)

帶10檔買賣方向委托隊列數據
281-10
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”指數行情 (mdl.6.29)29
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”成交量統計指標行情快照 (mdl.6.30)30
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”盤后定價交易業務行情快照 (mdl.6.31)31
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”逐筆委托行情 (mdl.6.33)33
深交所L2“MDLSID_MDL_SZL2”“MDLVID_MDL_SZL2”逐筆成交行情 (mdl.6.36)36
orderbookSnapshotEngine

深交所 L2股票行情快照實時合成
"SZL2_ORDER_AND_TRANSACTION"非通聯MDL原始行情,
用于獲取實時快照合成的數據
中金所 L2“MDLSID_MDL_CFFEXL2”“MDLVID_MDL_CFFEXL2“期貨行情 (mdl.21.1)1
鄭商所 L2“MDLSID_MDL_CZCEL2““MDLVID_MDL_CZCEL2“期貨行情 (mdl.23.1)1
鄭商所 L2“MDLSID_MDL_CZCEL2““MDLVID_MDL_CZCEL2“期貨組合行情 (mdl.23.5)5
上期能源 L2“MDLSID_MDL_SHFEL2““MDLVID_MDL_SHFEL2“上期期貨 (mdl.22.1)1
上期能源 L2“MDLSID_MDL_SHFEL2““MDLVID_MDL_SHFEL2“原油期貨 (mdl.22.3)3
大商所 L2“MDLSID_MDL_DCEL2”“MDLVID_MDL_DCEL2”期貨行情 (mdl.24.1)1
大商所 L2“MDLSID_MDL_DCEL2”“MDLVID_MDL_SHFEL2“期貨成交量統計 (mdl.24.3)3
大商所 L2“MDLSID_MDL_DCEL2”“MDLVID_MDL_SHFEL2“期貨組合行情 (mdl.24.5)5
大商所 L2“MDLSID_MDL_DCEL2”“MDLVID_MDL_SHFEL2“期貨最優價十筆委托 (mdl.24.7)7
廣期所 L2“MDLSID_MDL_GFEXL2““MDLVID_MDL_GFEXL2“期貨行情 (mdl.26.1)1
廣期所 L2“MDLSID_MDL_GFEXL2““MDLVID_MDL_GFEXL2“期貨成交量統計 (mdl.26.3)3
廣期所 L2“MDLSID_MDL_GFEXL2““MDLVID_MDL_GFEXL2“期貨組合行情 (mdl.26.5)5
廣期所 L2“MDLSID_MDL_GFEXL2““MDLVID_MDL_GFEXL2“期貨最優價十筆委托 (mdl.26.7)7

注:行情快照合成類型是為了對接 DolphinDB 快照合成流計算引擎的特殊處理,指將逐筆成交和逐筆委托處理為同構數據寫入一張 DolphinDB 表中。(可聯系 DolphinDB 小助手 dolphindb1,以進一步了解)

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

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

相關文章

算法day06

第一題 1658. 將 x 減到 0 的最小操作數 如題上述: 本題原來的意思給定一個數字x,從數組的左邊或者右邊 使用x減去數組中的數字,直到減去最后一個數字為0時,返回最小的操作次數;如果最終減去的數組中的數字之后不能得…

HR系統組合漏洞挖掘過程

前言 某天在項目中遇到了一個奇怪的人才管理系統,通過FOFA(會員可在社區獲取)進行了一番搜索,發現了該系統在互聯網上的使用情況相當廣泛。于是,我開始了后續的審計過程。 在搜索過程中,我偶然間找到了一份…

「TypeScript系列」TypeScript 基礎類型

文章目錄 一、TypeScript 基礎類型1. **Number**: 用于表示數字。可以是整數或浮點數。2. **String**: 用于表示文本類型的數據。3. **Boolean**: 表示邏輯值:true 或 false。4. **Array**: 表示一組值。TypeScript 使用泛型(generics)來定義…

Mysql存儲引擎對比

存儲引擎InnoDBMyISAM文件存儲結構.frm文件:存放表結構的定義信息 .ibd文件或.ibdata文件:存放InnoDB數據(數據和索引)【獨享表空間】每個表一個.ibd文件【共享表空間】所有表使用一個.ibdata文件- .frm文件:存放表結構…

Nginx靜態壓縮和代碼壓縮,提高訪問速度!

一、概述 基于目前大部分的應用,都使用了前后端分離的框架,vue的前端應用,也是十分的流行。不知道大家有沒有遇到這樣的問題: 隨著前端框架的頁面,功能開發不斷的迭代;安裝的依賴,不斷的增多&a…

機器學習【簡述】

什么是機器學習 機器學習研究的是計算機怎么模擬人類的學習行為,以獲取的知識或技能,并重新組織已有的知識結構使之不斷改善自身。簡單一點說,就是計算機從數據中學習初規律和模式,以應用在新數據上做預測的任務。近年來互聯網數…

無人機的用途

無人機,即無人駕駛飛機,其用途廣泛且多樣,涉及到多個領域。 在農業領域,無人機通過搭載各種傳感器和相機,可以對農田進行空中巡視,收集農田數據,如土壤含水量、氣溫、濕度等,以及植…

詳細的性能分析和調優的示例過程:

當面臨數據庫查詢性能下降的問題時,以下是一個詳細的性能分析和調優的示例過程: ### 1. 監控和識別問題 假設你負責維護一個電子商務網站數據庫,最近用戶反映搜索功能響應慢。你立即使用數據庫監控工具(如Prometheus、Grafana&am…

Ardupilot開源飛控工程項目編譯回顧

Ardupilot開源飛控工程項目編譯回顧 1. 源由2. 工程編譯3. 命令列表3.1 工作環境設置3.2 獲取工程代碼3.3 建立編譯環境3.4 編譯工程代碼3.5 保存編譯結果3.6 清理編譯結果3.7 編譯設備目標 4. 補充 1. 源由 最近,有點莫名的連續遇到了2次Ardupilot編譯報錯。百思不…

Quartz.Net(2)——NetCore3.1整合Quartz.Net

在上篇文章中Quartz.Net(1) 已經介紹了Quartz.Net的基本運用&#xff0c;該篇文章中將主要介紹NetCore3.1如何整合Quartz.Net&#xff0c;在后臺運行定時job&#xff0c;并運用到上篇文章講到的介紹點。 1 導入Nuget包 <PackageReference Include"Quartz" Versio…

PyTorch中的torch.cuda.amp.autocast

torch.cuda.amp.autocast的使用 torch.cuda.amp.autocast是PyTorch中一種自動混合精度計算的方法&#xff0c;它允許在深度學習模型的訓練過程中自動執行混合精度計算&#xff0c;從而加快訓練速度并減少顯存占用。 在使用torch.cuda.amp.autocast時&#xff0c;一般會將模型…

Ubuntu系統如何使用寶塔面板搭建HYBBS論壇并發布公網遠程訪問

文章目錄 前言1. HYBBS網站搭建1.1 HYBBS網站安裝1.2 HYBBS網站測試1.3. cpolar的安裝和注冊 2. 本地網頁發布2.1.Cpolar臨時數據隧道2.2.Cpolar穩定隧道&#xff08;云端設置&#xff09;2.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 3.公網訪問測試總結 前言 在國內…

【智能算法】河馬優化算法(HO)原理及實現

目錄 1.背景2.算法原理2.1算法思想2.2算法過程 3.結果展示4.參考文獻5.代碼獲取 1.背景 2024年&#xff0c;MH Amiri受到自然界河馬社會行為啟發&#xff0c;提出了河馬優化算法&#xff08;Hippopotamus Optimization Algorithm, HO&#xff09;。 2.算法原理 2.1算法思想 …

動態IP的應用場景

動態IP適用于網絡設備規模較小、需要靈活連接網絡、經濟條件有限或者需要臨時建立網絡的場景。

【C++】AVL

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 目錄 前言 一、AVL 樹 1.1、AVL樹的概念 1.2、AVL樹節點的定義 1.3、AVL樹的插入 1.4、AVL樹的旋轉 1.4.1、新節點插入較高左子樹的左側---左左&#xff1a;右單旋 1…

Spring整體流程源碼分析

DisableEncodeUrlFilter 防止sessionId被泄露 包裝器模式 WebAsyncManagerIntegrationFilter WebAsyncManagerIntegrationFilter通常與Spring MVC的異步請求處理機制一起使用&#xff0c;確保在使用Callable或DeferredResult等異步處理方式時&#xff0c;安全上下文能夠正…

CSP備考---位運算

前言 本期我們將學習位運算&#xff0c;與本期類型的考點&#xff08;二進制轉換&#xff09;反碼、補碼、原碼。 1、位運算是什么 首先我們需要先了解位運算是什么。 我們知道&#xff0c;計算機中的數在內存中都是以二進制形式進行存儲的 &#xff0c;而位運算就是直接對整…

332_C++_mmap 映射文件或設備到進程的地址空間,或者創建一個新的映射區域

mmap : 映射文件或設備到進程的地址空間,或者創建一個新的映射區域(通常是匿名的) mmap 是 Linux 和其他類 Unix 系統中的一個系統調用,用于映射文件或設備到進程的地址空間,或者創建一個新的映射區域(通常是匿名的)。mmap 提供了靈活的方式來管理內存,它經常用于實現…

打造本地GPT專業領域知識庫AnythingLLM+Ollama

如果你覺得openai的gpt沒有隱私&#xff0c;或者需要離線使用gpt&#xff0c;還是打造專業領域知識&#xff0c;可以借用AnythingLLMOllama輕松實現本地GPT. AnythingLLMOllama 實現本地GPT步聚&#xff1a; 1 下載 AnythingLLM軟件 AnythingLLM官網地址&#xff1a; Anythi…

功能卓越,未來可期!實在Agent智能體公測圓滿收官

“被需要的智能才是實實在在的智能。”一直以來&#xff0c;實在智能始終堅持從行業本質出發思考如何圍繞客戶需求打造更智能、更普惠的智能體數字員工&#xff0c;切實關注用戶真實的使用體驗與感受。 自2020年7月起&#xff0c;實在智能率先推出第一代實在RPA數字員工&#…