將mysql數據庫表結構導出成DBML格式

前言

DBML(數據庫標記語言)是一種簡單易讀的 DSL 語言,用于定義數據庫結構。

因為需要分析商品模塊的表設計是否合理,所以需要圖形化表,并顯示表之前的關系。
想來想去,找到了DBML。所以就需要將數據庫結構,導出成DBML格式。

方法

用的laravel框架。

有兩種方法

  • 使用 desc tableName
輸入如下:
array:13 [0 => array:6 ["Field" => "id""Type" => "bigint(20)""Null" => "NO""Key" => "PRI""Default" => null"Extra" => "auto_increment"]1 => array:6 ["Field" => "parent_id""Type" => "bigint(20)""Null" => "YES""Key" => "MUL""Default" => "0""Extra" => ""]
  • 使用 show create table tableName
輸出如下:
CREATE TABLE `category` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分類ID',`parent_id` bigint(20) DEFAULT '0' COMMENT '父分類ID(0表示頂級分類)',`category_name` varchar(255) NOT NULL COMMENT '分類名稱',`category_alias` varchar(255) NOT NULL DEFAULT '' COMMENT '分類別名',`category_code` varchar(50) DEFAULT NULL COMMENT '分類編碼',`category_sort` int(11) NOT NULL DEFAULT '1' COMMENT '分類排序值',`level` int(11) NOT NULL DEFAULT '1' COMMENT '分類層級(1=一級分類)',`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '狀態(1=啟用,0=停用)',`user_created` varchar(255) NOT NULL DEFAULT '' COMMENT '創建人',`user_cid` int(11) NOT NULL DEFAULT '0' COMMENT '創建人id',`user_updated` varchar(255) NOT NULL DEFAULT '' COMMENT '更新人',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',PRIMARY KEY (`id`) USING BTREE,KEY `idx_parent_id` (`parent_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=777 DEFAULT CHARSET=utf8mb4 COMMENT='分類表'

因此就需要結合這兩種命令得到DBML格式所需要的數據。,腳本如下。

<?phpnamespace App\Http\Controllers;use Illuminate\Support\Facades\DB;class TestController extends Controller
{public function dbtableToDbml(){$tables = ['category','category_attribute','attribute','attribute_option','product','product_attribute','product_attribute_option','process','process_resource','combo','combo_item','combo_item_attribute','customer_subtotal','customer_product','customer_combo','customer_combo_item','customer_combo_attribute','customer_combo_material','customer_combo_material_attribute','customer_product_process','customer_product_process_resource',];$res = $this->dbtableStruToDbml($tables);return $res;}//數據庫表結構轉為DBML格式public function dbtableStruToDbml($tables){$tableArr = is_string($tables) ? explode(',', $tables) : $tables;$res = '';//獲取字段名及備注$extractFieldAndComment = function ($str) {$result = ['field' => null,'comment' => null];// 1. 提取字段名(匹配反引號包裹的內容)if (preg_match('/`([^`]+)`/', $str, $fieldMatches)) {$result['field'] = trim($fieldMatches[1]);}// 2. 提取COMMENT后的內容(如果存在)if (preg_match('/COMMENT\s+\'([^\']*)\'/i', $str, $commentMatches)) {$result['comment'] = trim($commentMatches[1]);}return $result;};$getTableComment = function ($str) {// 正則表達式解析:// COMMENT\s*=\s* 匹配"COMMENT"及可能的空格、等號、空格(不區分大小寫)// '([^']*)' 匹配單引號內的內容(捕獲組1),[^']*表示非單引號的任意字符(包括空)$pattern = '/COMMENT\s*=\s*\'([^\']*)\'/i';// 執行匹配if (preg_match($pattern, $str, $matches)) {// 匹配成功,返回捕獲到的內容(trim處理避免意外空格,保留空內容)return trim($matches[1]);}// 無COMMENT時返回空字符串return '';};foreach ($tableArr as $table) {$tableComment = '';$tableDesc = DB::select("desc {$table}");$filedArr = [];foreach ($tableDesc as $item) {$filedArr[$item->Field] = ['field' => $item->Field,'type' => $item->Type,'comment' => ''];}$createTable = DB::select("show create table {$table}");$createTable = json_decode(json_encode($createTable), true);$createTable = $createTable[0]['Create Table'];$fieldInfos = explode("\n", $createTable);foreach ($fieldInfos as $fieldInfo) {$fieldInfo = trim($fieldInfo, ' '); //去掉前面的空格$pattern = '/^`/'; //是否以 ` 號開頭,是的話,才是字段,否則就是其他的,其他的不考慮if (preg_match($pattern, $fieldInfo)) {//是字段才處理$fieldAndComment = $extractFieldAndComment($fieldInfo);$filedArr[$fieldAndComment['field']]['comment'] = $fieldAndComment['comment'];} elseif (preg_match('/^\)/', $fieldInfo)) {$tableComment = $getTableComment($fieldInfo);}}$str = '';$str = "Table {$table} {\n";foreach ($filedArr as $fieldItem) {$str .= "   {$fieldItem['field']} {$fieldItem['type']} [note: '{$fieldItem['comment']}'] \n";}$str .= "   Note: '{$tableComment}'\n";$str .= "}\n";strlen($res) ? $res =  $res . "\n\n\n" : '';$res .= $str;}return $res;}}

導出的內容如下:

Table category {id bigint(20) [note: '分類ID'] parent_id bigint(20) [note: '父分類ID(0表示頂級分類)'] category_name varchar(255) [note: '分類名稱'] category_alias varchar(255) [note: '分類別名'] category_code varchar(50) [note: '分類編碼'] category_sort int(11) [note: '分類排序值'] level int(11) [note: '分類層級(1=一級分類)'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] user_created varchar(255) [note: '創建人'] user_cid int(11) [note: '創建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] Note: '分類表'
}Table category_attribute {id bigint(20) [note: '記錄ID'] category_id bigint(20) [note: '分類ID'] attribute_id bigint(20) [note: '屬性ID'] limit_ids text [note: '限定屬性值id'] Note: '分類屬性關聯表'
}Table attribute {id bigint(20) [note: '屬性ID'] attribute_name varchar(255) [note: '屬性名稱(如顏色,尺寸)'] attribute_code varchar(50) [note: '屬性編碼(程序識別唯一值)'] sort mediumint(9) [note: '排序'] remark varchar(255) [note: '屬性說明'] input_type varchar(50) [note: '輸入類型(single=單選,double=多選)'] unit varchar(50) [note: '屬性單位'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] user_created varchar(255) [note: '創建人'] user_id int(11) [note: '創建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] Note: '屬性定義表'
}Table attribute_option {id bigint(20) [note: '選項ID'] attribute_id bigint(20) [note: '所屬屬性ID'] option_value varchar(255) [note: '屬性選項值'] option_code varchar(50) [note: '屬性選項編碼'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] sort_order int(11) [note: '排序值(用于前端展示順序)'] remark varchar(255) [note: '備注'] Note: '屬性選項表(全局)'
}Table product {id bigint(20) [note: '商品ID(主鍵,自增)'] category_id bigint(20) [note: '分類ID(外鍵)'] category_top_ids varchar(255) [note: '上級分類id'] category_top_name varchar(255) [note: '上級分類名稱'] product_code varchar(50) [note: '商品編碼(內部唯一)'] product_name varchar(255) [note: ''] product_image varchar(255) [note: '商品圖片'] product_type int(11) [note: '物料類型:100-原料 200-輔料 201-紙箱 202-套袋'] short_name varchar(255) [note: '商品簡稱'] scientific_name varchar(255) [note: '商品學名'] label_alias varchar(255) [note: '標簽別名'] description text [note: '商品描述'] unit_name varchar(50) [note: '基礎單位名稱'] inspection_standard text [note: '質檢標準'] shelf_life int(11) [note: '保質期,單位:天'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] user_created varchar(255) [note: '創建人'] user_id int(11) [note: '創建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] safe_stock int(11) [note: '安全庫存值'] Note: '商品主數據表'
}Table product_attribute {id bigint(20) [note: '記錄ID'] product_id bigint(20) [note: '商品ID'] attribute_id bigint(20) [note: '屬性ID'] is_must tinyint(4) [note: '是否必填:0-否 1-是'] Note: '商品屬性值表'
}Table product_attribute_option {id bigint(20) [note: '記錄ID'] product_id bigint(20) [note: '商品ID'] attribute_id bigint(20) [note: '屬性ID'] option_id bigint(20) [note: '屬性值ID'] Note: '商品屬性可選值關聯表'
}Table process {id bigint(20) [note: '工藝ID'] process_code varchar(50) [note: '工藝編碼'] process_name varchar(255) [note: '工藝名稱'] process_type varchar(255) [note: '工藝類型'] process_duration int(11) [note: '工藝工期'] duration varchar(255) [note: '時間單位'] description text [note: '工藝描述'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] user_created varchar(255) [note: '創建人'] user_id int(11) [note: '創建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] Note: '組合商品工藝表'
}Table process_resource {process_id bigint(20) [note: '工藝ID'] product_id bigint(20) [note: '物料ID'] Note: '工藝物料關聯表'
}Table combo {id bigint(20) [note: '組合ID'] category_id bigint(20) [note: '分類ID(外鍵)'] category_top_ids varchar(255) [note: '上級分類id'] category_top_name varchar(255) [note: '上級分類名稱'] combo_name varchar(255) [note: '組合名稱'] combo_code varchar(255) [note: '組合編碼'] combo_image text [note: '組合圖片'] combo_price decimal(10,2) [note: '組合價格'] combo_label varchar(255) [note: '組合成品標簽'] subtotal_name varchar(255) [note: '小計名稱'] unit_name varchar(50) [note: '基礎單位名稱'] unit_spec decimal(10,2) [note: '基礎單位規格'] unit_pack_name varchar(50) [note: '包裝單位名稱'] unit_pack_spec decimal(10,2) [note: '包裝單位規格'] description text [note: '組合描述'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] user_created varchar(255) [note: '創建人'] user_id int(11) [note: '創建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] Note: '組合產成品主表'
}Table combo_item {id bigint(20) [note: '組合項ID'] combo_id bigint(20) [note: '組合ID'] product_id bigint(20) [note: '所屬組合的商品ID'] category_id bigint(20) [note: '所屬組合的分類ID'] category_name varchar(255) [note: '分類名稱'] item_name varchar(255) [note: '組合名稱'] item_type varchar(50) [note: '組合項類型(LABEL/PRODUCT)'] quantity int(11) [note: '數量'] label_name varchar(50) [note: '標簽名稱'] remark text [note: '備注'] Note: '組合項表'
}Table combo_item_attribute {id bigint(20) [note: '記錄ID'] item_id bigint(20) [note: '組合項ID'] attribute_id bigint(20) [note: '屬性ID'] option_id bigint(20) [note: '屬性值ID'] Note: '組合項屬性值表'
}Table customer_subtotal {id bigint(20) [note: '小計ID'] name varchar(128) [note: '小計名稱'] remark varchar(255) [note: '備注'] plan_name varchar(128) [note: '小計名稱-采購'] production_name varchar(128) [note: '小計名稱-生產'] sort_num int(11) [note: '排序值'] Note: '客戶商品小計關聯表'
}Table customer_product {id bigint(20) [note: '記錄ID'] client_id bigint(20) [note: '客戶ID'] customer_product_name varchar(255) [note: '客戶成品名稱'] customer_product_code varchar(255) [note: '客戶成品編碼'] customer_product_alias varchar(255) [note: '客戶成品代號'] customer_product_process text [note: '加工工藝描述'] customer_product_label text [note: '關聯組合成品名稱(combo名稱)'] customer_product_tag text [note: '關聯組合成品代碼(combo編碼)'] customer_product_image text [note: '客戶成品圖片'] subtotal_id bigint(20) [note: '小計關聯'] subtotal_name varchar(255) [note: '小計分類名稱'] unit_name varchar(50) [note: '單位名稱'] unit_spec int(11) [note: '單位規格'] custom_price decimal(10,2) [note: '客戶成品定價'] piece_count decimal(10,2) [note: '計件價格'] gross_weight int(11) [note: '毛重'] pure_weight int(11) [note: '凈重'] currency varchar(10) [note: '幣種'] custom_spec1 varchar(50) [note: '規格1'] custom_spec2 varchar(50) [note: '規格2'] custom_length varchar(50) [note: '客戶商品長度'] status tinyint(4) [note: '狀態(1=啟用,0=停用)'] user_created varchar(255) [note: '創建人'] user_id int(11) [note: '創建人id'] user_updated varchar(255) [note: '更新人'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] remark varchar(255) [note: '備注'] Note: '客戶商品表'
}Table customer_combo {id bigint(20) [note: '記錄ID'] customer_product_id bigint(20) [note: '客戶商品ID'] customer_combo_name varchar(255) [note: '組合名稱'] customer_combo_code varchar(255) [note: '組合代碼'] quantity int(11) [note: '組合數量'] Note: '客戶組合商品表'
}Table customer_combo_item {id bigint(20) [note: '組合項ID'] customer_combo_id bigint(20) [note: '組合ID'] product_id bigint(20) [note: '所屬組合的商品ID'] category_id bigint(20) [note: '所屬組合的分類ID'] category_name varchar(255) [note: '分類名稱'] item_name varchar(255) [note: '組合名稱'] item_type varchar(50) [note: '組合項類型(LABEL/PRODUCT)'] quantity int(11) [note: '數量'] label_name varchar(50) [note: '標簽名稱'] replace_product_id varchar(255) [note: '可替換商品ID'] replace_label varchar(255) [note: '可替換標簽'] remark text [note: '備注'] Note: '客戶組合商品明細表'
}Table customer_combo_attribute {id bigint(20) [note: '記錄ID'] item_id bigint(20) [note: '組合項ID'] attribute_id bigint(20) [note: '屬性ID'] option_id bigint(20) [note: '屬性值ID'] Note: '客戶組合商品屬性表'
}Table customer_combo_material {id bigint(20) [note: '輔料ID'] customer_product_id bigint(20) [note: '客戶商品ID'] customer_combo_id bigint(20) [note: '客戶商品組合ID'] product_id bigint(20) [note: '產品ID'] process_type varchar(255) [note: '標記所屬工藝'] product_type varchar(255) [note: '標記物料類型'] quantity int(11) [note: '數量'] remark text [note: '備注'] is_new tinyint(4) [note: '是否新數據:1-新'] Note: '客戶組合輔料表'
}Table customer_combo_material_attribute {id bigint(20) [note: '記錄ID'] customer_material_id bigint(20) [note: '輔料ID,關聯customer_combo_material表id'] attribute_id bigint(20) [note: '屬性ID'] option_id bigint(20) [note: '屬性值ID'] Note: '客戶組合輔料屬性值表'
}Table customer_product_process {id bigint(20) [note: '記錄ID'] customer_product_id bigint(20) [note: '客戶商品ID'] process_id bigint(20) [note: '工藝id'] description text [note: '描述'] source varchar(255) [note: '來源'] created_at datetime [note: '創建時間'] updated_at datetime [note: '更新時間'] Note: '客戶組合商品工藝表'
}Table customer_product_process_resource {id bigint(20) [note: 'ID'] customer_process_id bigint(20) [note: '客戶商品工藝ID,關聯customer_product_process表id'] product_id bigint(20) [note: '工藝產品id'] Note: '客戶組合商品工藝物料關聯表'
}
總結

表與表之間的關系,需要在導出的DBML中用ref定義。

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

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

相關文章

玩轉tokenizer

&#x1f31f; 案例 1&#xff1a;加載現成的 BERT 分詞器from tokenizers import Tokenizer# 加載一個預訓練的 BERT tokenizer&#xff08;文件需要提前下載&#xff0c;比如bert-base-uncased&#xff09; tokenizer Tokenizer.from_file("bert-base-uncased-tokenize…

Day53--圖論--106. 島嶼的周長(卡碼網),110. 字符串接龍(卡碼網),105. 有向圖的完全聯通(卡碼網)

Day53–圖論–106. 島嶼的周長&#xff08;卡碼網&#xff09;&#xff0c;110. 字符串接龍&#xff08;卡碼網&#xff09;&#xff0c;105. 有向圖的完全聯通&#xff08;卡碼網&#xff09; 106. 島嶼的周長&#xff08;卡碼網&#xff09; 方法&#xff1a;深搜 思路&am…

Elasticsearch 數據建模與映射(Mapping)詳解

在 Elasticsearch 中&#xff0c;數據建模與映射&#xff08;Mapping&#xff09; 是決定搜索性能、存儲效率和功能支持的核心環節。合理的映射設計能讓搜索更精準、聚合更高效、存儲更節省。 本文將全面詳解 Elasticsearch 的 數據建模原則、字段類型、動態映射、自定義分析器…

5G工業一體機汽車零部件工廠的無紙化管理

在全球數字化轉型的浪潮中&#xff0c;制造業對信息化、智能化的需求日益強烈。尤其是在汽車零部件領域&#xff0c;生產線的復雜性、質量追溯的苛刻性以及對效率的高要求&#xff0c;迫切需要一種高效、可靠、可擴展的管理模式。以“5G工業一體機”為核心的無紙化管理&#xf…

項目管理工具

1、概述IT 項目生命周期通常可分為啟動、規劃、執行、監控與控制、收尾五個核心階段&#xff0c;每個階段的目標和任務不同&#xff0c;所依賴的工具也各有側重。以下按階段梳理常用工具&#xff0c;涵蓋項目管理、協作、技術開發等多個維度。2、啟動階段&#xff1a;明確項目目…

Linux 進程、線程與 exec/系統調用詳解

1. wait 與 waitpid —— 子進程資源回收1.1 waitpid_t wait(int *wstatus);功能&#xff1a;阻塞等待&#xff0c;回收任意子進程的資源空間。參數&#xff1a;wstatus&#xff1a;保存子進程退出狀態的變量地址NULL&#xff1a;不保存退出狀態返回值&#xff1a;成功&#xf…

Laravel 使用ssh鏈接遠程數據庫

1.創建ssh ssh -i ./id_rsa -N -L 13306:127.0.0.1:3306 -p 22 root***對上述代碼的解釋&#xff1a; 命令是一個SSH隧道命令&#xff0c;用于將本地端口3306轉發到遠程服務器上的3306端口。以下是命令的詳細解釋&#xff1a;# 調用SSH客戶端。 ssh # 指定用于身份驗證的私鑰文…

Python延申內容(一)

1.技術面試題 &#xff08;1&#xff09;TCP與UDP的區別是什么&#xff1f; 答&#xff1a; TCP&#xff08;傳輸控制協議&#xff09;&#xff1a;面向連接、可靠傳輸&#xff08;數據完整有序&#xff09;、流量控制、擁塞控制&#xff0c;適用于文件傳輸、網頁瀏覽等場景。 …

Java 9 新特性及具體應用

目錄 1. 模塊系統&#xff08;Jigsaw&#xff09; 2. JShell&#xff08;REPL工具&#xff09; 3. 集合工廠方法 4. 接口私有方法 5. Stream API 增強 6. HTTP/2 客戶端&#xff08;Incubator&#xff09; 7. 多版本JAR包 總結 1. 模塊系統&#xff08;Jigsaw&#xff0…

第二十五天:構造函數/析構函數/拷貝構造

構造函數/析構函數/拷貝構造 1. 構造函數&#xff08;Constructor&#xff09; 定義與作用&#xff1a;構造函數是一種特殊的成員函數&#xff0c;其名稱與類名相同&#xff0c;沒有返回類型&#xff08;包括 void 也沒有&#xff09;。它的主要作用是在創建對象時初始化對象的…

【P14 3-6 】OpenCV Python——視頻加載、攝像頭調用、視頻基本信息獲取(寬、高、幀率、總幀數),視頻保存在指定位置

文章目錄1 讀取本地視頻1.1 絕對路徑 6種方式1.2 相對路徑 4種方式1.3 讀取本地視頻2 視頻基本信息3 調用攝像頭 并將視頻保存在指定位置P14 3-6 1 讀取本地視頻 現在要讀取本地視頻“video.mp4”&#xff0c; 視頻文件“video.mp4”和playVideo.py腳本文件&#xff0c;都在…

【DL學習筆記】常用數據集總結

一、如何找數據集 paperswithcode&#xff0c;但好像沒了 AutoDL Roboflow Kaggle Hungging Face 百度飛漿PP AIStudio 二、目標檢測數據集格式 常用數據集坐標格式 MSCOCO &#xff1a; 坐標格式&#xff08;x&#xff0c;y&#xff0c;w&#xff0c;h&#xff…

19.3 Transformers量化模型極速加載指南:4倍推理加速+75%顯存節省實戰

Transformers量化模型極速加載指南:4倍推理加速+75%顯存節省實戰 實戰項目:模型量化 Transformers 兼容性配置 量化模型加載核心配置邏輯 #mermaid-svg-rDjfMigtxckLYWp3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merm…

Android 終端接入 GB28181 國標視頻平臺的完整解決方案解析

1. 引言&#xff1a;讓 Android 終端無縫融入國標視頻網絡在公安、交通、應急、工業、教育等領域&#xff0c;GB/T 28181 國標協議早已成為視頻監控與指揮調度的事實標準。傳統國標視頻網絡通常由固定部署的 IPC 攝像機、NVR、視頻管理平臺構成&#xff0c;設備形態單一。隨著一…

Docker目錄的遷移

# 遷移 docker 目錄 &#xff08;無論容器與鏡像占用空間大小&#xff0c;哪怕只占用1G&#xff0c;也需用此方式&#xff0c;否則可能遷移不成功&#xff09;service docker stopcd /var/lib/docker# 一個一個復制除 overlay2 外的其他所有文件夾cp -R builder /home/docker/l…

IOS APP 前端存儲

UserDefaults優點簡單易用提供簡單的鍵值對存儲接口無需復雜配置&#xff0c;開箱即用適合存儲少量簡單數據輕量級專門為存儲小量數據設計內存占用小性能開銷低自動持久化數據自動保存到磁盤應用重啟后數據仍然可用通過synchronize()方法可以強制立即寫入&#xff08;iOS 12已自…

在前端js中使用jsPDF或react-to-pdf生成pdf文件時,不使用默認下載,而是存儲到服務器

開源地址&#xff1a; https://github.com/ivmarcos/react-to-pdf 主要就是這個方法&#xff0c;有三種可選&#xff1a; 默認是save&#xff0c;也就是會自動觸發下載的方法&#xff0c;open方法是默認會打開一個pdf預覽的tab頁面&#xff0c;build方法就是在調用的函數gener…

會議征稿!IOP出版|第二屆人工智能、光電子學與光學技術國際研討會(AIOT2025)

往屆已EI檢索&#xff0c;歡迎投稿&#xff01; AIOT2024會后兩個月實現見刊&#xff01; AIOT2025已通過IOP-JPCS出版申請&#xff0c;獨立JPCS出版 AIOT2025已上線西安文理學院官網&#xff1a; 征文通知&#xff5c;第二屆人工智能、光電子學與光學技術國際…

CPP多線程2:多線程競爭與死鎖問題

在多線程編程中&#xff0c;多個線程協同工作能顯著提升程序效率&#xff0c;但當它們需要共享和操作同一資源時&#xff0c;潛在的問題也隨之而來&#xff1b;線程間的執行順序不確定性可能導致資源競爭&#xff0c;可能引發死鎖&#xff0c;讓程序陷入停滯。 多線程競爭問題示…

全國產飛騰d2000+復旦微690t信號處理模塊

UD VPX-404是基于高速模擬/數字采集回放、FPGA信號實時處理、CPU主控、高速SSD實時存儲架構開發的一款高度集成的信號處理組合模塊&#xff0c;采用6U VPX架構&#xff0c;模塊裝上外殼即為獨立整機&#xff0c;方便用戶二次開發。 UD VPX-404模塊的國產率可達到100%&#xff0…