Qt監控系統放大招/歷經十幾年迭代完善/多屏幕輔屏預覽/多層級設備樹/網絡登錄和回放

一、前言說明

近期對視頻監控系統做了比較大的更新升級,主要就是三點,第一點就是增加了輔屏預覽,這個也是好多個客戶需要的功能,海康的iVMS-4200客戶端就有這個功能,方便在多個屏幕打開不同的視頻進行查看,比如有100個通道,如果只是在一個屏幕上查看,那就太小了,而現在很多電腦都是多屏幕,每個屏幕放個32個,相對來說畫面就大了很多,如果軟件上直接多開幾個預覽的畫面就方便多了。

第二點就是多層級的設備樹,這個功能積壓了很久,之前都是兩個層級,第一層是NVR名稱或者分組,第二層就是子設備也就是攝像頭,對于設備數量很少的時候關系不大,現在很多用戶需要接入的設備都是成百上千,而且有諸多分組,分組還不止一個層級,比如集團內部光銷售部就有很多子分組,所以必須能夠支持多層級的分組,稍微費了點做成了通用模塊。

第三點就是一個定制的功能,本系統支持非常友好的二開,盡最大化的可能,將常用的功能都封裝成了靜態的函數,可以直接調用,引入對應的頭文件即可,而且都有使用示例參考。近期一個用戶需要定制網絡登錄的功能,也就是利用現有的視頻監控系統框架,將登錄變成網絡登錄,然后設備信息也都是通過網絡請求獲取,視頻回放也是請求拉回來的地址播放,錄像文件通過網絡下載到本地,打上水印等。

二、效果圖

在這里插入圖片描述
在這里插入圖片描述

三、相關代碼

#include "frmvideowidgetslider.h"
#include "zdownload.h"
#include "zplayback.h"
#include "ui_zplayback.h"
#include "qthelper.h"
#include "deviceutil.h"
#include "deviceurl.h"
#include "videowidgetx.h"
#include "videohelper.h"
#include "videoutil.h"
#include "mediadata.h"
#include "mediahelper.h"ZPlayBack::ZPlayBack(QWidget *parent) : QWidget(parent), ui(new Ui::ZPlayBack)
{ui->setupUi(this);this->initForm();this->initIcon();this->initVideo();on_btnSelect_clicked();
}ZPlayBack::~ZPlayBack()
{delete ui;
}VideoWidget *ZPlayBack::getVideoWidget()
{return this->videoWidget;
}void ZPlayBack::initForm()
{ui->widgetRight->setFixedWidth(AppData::RightWidth);ui->calendarWidget->setFirstDayOfWeek(Qt::Sunday);ui->calendarWidget->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);ui->calendarWidget->setHorizontalHeaderFormat(QCalendarWidget::NoHorizontalHeader);doubleClickTime = QDateTime::currentDateTime();//添加設備for (int i = 0; i < MediaData::count; ++i) {ui->cboxCh->addItem(MediaData::name.at(i), MediaData::id.at(i));}//切換設備自動生成播放文件connect(ui->cboxCh, SIGNAL(currentIndexChanged(int)), this, SLOT(on_btnSelect_clicked()));connect(ui->calendarWidget, SIGNAL(clicked(QDate)), this, SLOT(on_btnSelect_clicked()));VideoUtil::loadSpeed(ui->cboxSpeed);ui->cboxSpeed->setCurrentIndex(1);//關聯樣式改變信號自動重新設置圖標connect(AppEvent::Instance(), SIGNAL(changeStyle()), this, SLOT(initIcon()));//關聯按下行自動切換選中狀態connect(ui->listWidget, SIGNAL(itemPressed(QListWidgetItem *)), AppEvent::Instance(), SLOT(slot_itemPressed(QListWidgetItem *)));//關聯下載完成信號connect(ZDownLoad::Instance(), SIGNAL(downFinsh()), this, SLOT(downFinsh()));
}void ZPlayBack::initIcon()
{//設置按鈕圖標CommonNav::setIconBtn(ui->frameRight);
}void ZPlayBack::initVideo()
{videoWidget = new VideoWidget;connect(videoWidget, SIGNAL(sig_receivePlayStart(int)), this, SLOT(receivePlayStart(int)));connect(videoWidget, SIGNAL(sig_receivePlayFinsh()), this, SLOT(receivePlayFinsh()));DeviceUtil::initVideoWidget(videoWidget);//重新設置解碼策略/這里不能和其他地方的解碼策略一樣VideoPara para = videoWidget->getVideoPara();para.decodeType = DecodeType_Fast;videoWidget->setVideoPara(para);//設置背景文字videoWidget->setBgText("視頻文件");//可以單獨設置填充拉伸//videoWidget->setScaleMode(ScaleMode_Fill);videoSlider = new frmVideoWidgetSlider(videoWidget);ui->gridLayout->addWidget(videoSlider, 0, 0);//隨機動態生成水印QTimer *timer = new QTimer(this);connect(timer, SIGNAL(timeout()), this, SLOT(initOsd()));timer->start(5000);
}void ZPlayBack::initOsd()
{if (videoWidget->getIsRunning()) {MediaHelper::setOsd(videoWidget->getVideoThread(), 10);}
}void ZPlayBack::receivePlayStart(int)
{//隨機生成多個水印this->initOsd();//設置播放速度on_cboxSpeed_currentIndexChanged(ui->cboxSpeed->currentIndex());
}void ZPlayBack::receivePlayFinsh()
{//自動切換到下一個視頻/并執行模擬雙擊事件if (!videoSlider->getIsStop() && ui->listWidget->currentRow() < ui->listWidget->count() - 1) {QDateTime now = QDateTime::currentDateTime();if (doubleClickTime.msecsTo(now) > 500) {ui->listWidget->setCurrentRow(ui->listWidget->currentRow() + 1);on_listWidget_doubleClicked();}}
}void ZPlayBack::downFinsh()
{ui->btnDownload->setEnabled(true);
}void ZPlayBack::on_btnSelect_clicked()
{if (ui->cboxCh->count() == 0) {return;}int id = ui->cboxCh->itemData(ui->cboxCh->currentIndex()).toInt();int index = MediaData::id.indexOf(id);if (index < 0) {return;}//啟用了模擬數據的時候用測試的地址QString url2 = "http://vd2.bdstatic.com/mda-mi1dd05gmhwejdwn/sc/cae_h264/1630576203346678103/mda-mi1dd05gmhwejdwn.mp4";ui->listWidget->clear();QString app = MediaData::app.at(index);QString stream = MediaData::stream.at(index);QString date = ui->calendarWidget->selectedDate().toString("yyyy-MM-dd");for (int i = 0; i < 24; ++i) {QString hour = QString("%1").arg(i, 2, 10, QChar('0'));QString hour2 = QString("%1").arg(i + 1, 2, 10, QChar('0'));QString url = QString("%1/%2/%3/%4/%5.m3u8").arg(OtherConfig::HttpVodUrl).arg(date).arg(app).arg(stream).arg(hour);url = QString("%1?uuid=%2&user=%3").arg(url).arg(MediaData::uuid).arg(AppConfig::LastLoginer);url = EnableConfig::EnableTestData ? url2 : url;QString name = QString("%1 %2:00 - %3:00").arg(date).arg(hour).arg(hour2);QListWidgetItem *item = new QListWidgetItem;item->setText(name);item->setData(Qt::UserRole, url);item->setCheckState(Qt::Unchecked);ui->listWidget->addItem(item);}
}void ZPlayBack::on_btnDownload_clicked()
{//取出勾選的要下載的視頻文件QStringList urls = DeviceUrl::getSelectUrls(ui->listWidget, true);if (urls.count() == 0) {return;}//取出要保存的地址QStringList files;QString path = OtherConfig::VideoNormalPath + "/2025-01-01";QtHelper::checkPath(path);for (int i = 0; i < urls.count(); ++i) {QString app = "1001";QString stream = "1";QString hour = QString("%1").arg(i, 2, 10, QChar('0'));QString file = QString("%1/%2_%3_%4.mp4").arg(path).arg(app).arg(stream).arg(hour);files << file;}ZDownLoad::Instance()->setUrls(urls, files);ZDownLoad::Instance()->show();ZDownLoad::Instance()->start();ui->btnDownload->setEnabled(false);
}void ZPlayBack::on_listWidget_doubleClicked()
{doubleClickTime = QDateTime::currentDateTime();QListWidgetItem *item = ui->listWidget->currentItem();QString url = item->data(Qt::UserRole).toString();videoWidget->open(url);
}void ZPlayBack::on_cboxSpeed_currentIndexChanged(int index)
{if (isVisible()) {double speed = ui->cboxSpeed->itemData(index).toDouble();videoWidget->setSpeed(speed);}
}

四、相關地址

  1. 國內站點:https://gitee.com/feiyangqingyun
  2. 國際站點:https://github.com/feiyangqingyun
  3. 個人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 文件地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 文件名:bin_video_system。

五、功能特點

0.6.1 軟件模塊

  1. 視頻監控模塊,各種停靠小窗體子模塊,包括設備列表、圖文警情、窗口信息、云臺控制、預置巡航、視頻輪詢、設備控制、懸浮地圖、網頁瀏覽等。
  2. 視頻回放模塊,包括本地回放、網絡回放、遠程回放、圖片回放、視頻上傳等。
  3. 電子地圖模塊,包括圖片地圖、設備地圖、設備移動、軌跡回放等。
  4. 日志查詢模塊,包括本地日志、設備日志等。
  5. 系統設置模塊,包括系統設置(基本設置、視頻參數、數據庫設置、顏色配置、功能激活等)、錄像機管理、攝像機管理、輪詢配置、錄像計劃、用戶管理、其他設置等。

0.6.2 基礎功能

  1. 支持各種音視頻流(rtsp、rtmp、http、srt、ws等)、音視頻文件(mp4、rmvb、avi等)、本地設備(本地攝像頭、麥克風、桌面)。
  2. 支持多畫面切換,包括1、4、6、8、9、13、16、25、36、64畫面切換。
  3. 支持全屏切換,多種切換方式包括鼠標右鍵菜單、工具欄按鈕、快捷鍵(alt+enter全屏,esc退出全屏)。
  4. 支持視頻輪詢,包括1、4、9、16畫面輪詢,可設置輪詢分組(輪詢預案)、輪詢間隔、碼流類型等。
  5. 支持onvif協議,包括設備搜索、云臺控制、預置位管理、設備控制(圖片參數、校對時間、系統重啟、抓拍圖片、OSD配置、網絡配置等)。
  6. 支持權限管理,不同的用戶可以對應不同的模塊權限,比如刪除日志、關閉系統等。
  7. 數據庫支持多種,包括sqlite、mysql、sqlserver、postgresql、oracle、人大金倉等。
  8. 支持本地設備采集比如本地桌面和攝像頭,支持設置分辨率、幀率等參數,支持多屏幕。
  9. 所有停靠模塊都自動生成對應的菜單用來控制顯示和隱藏,在標題欄右鍵可以彈出。
  10. 支持顯示所有模塊、隱藏所有模塊、復位普通布局、復位全屏布局。
  11. 支持圖片地圖和網頁地圖上雙擊設備圖標彈出實時預覽。
  12. 攝像機節點拖曳到對應窗體播放視頻,同時支持拖曳本地文件直接播放。
  13. 設備樹雙擊分組打開對應分組下的所有視頻,雙擊設備子節點直接打開對應設備視頻流。自動加載最后展開的節點。
  14. 設備樹支持自定義配置,可以添加分組、刪除分組、修改分組,任意層級設置。
  15. 設備樹可以開啟是否放大字體顯示、是否顯示主碼流子碼流節點、是否隱藏空組(沒有設備的分組自動隱藏)。
  16. 刪除視頻支持鼠標右鍵刪除、懸浮條關閉刪除、拖曳到視頻監控面板外刪除等多種方式。
  17. 圖片地圖上設備按鈕可自由拖動,自動保存位置信息。地圖上可以鼠標單擊獲取經緯度信息,用來更新設備位置。
  18. 視頻監控面板窗體中任意通道支持拖曳交換,瞬間響應。
  19. 網頁地圖支持視圖切換、運動軌跡顯示、設備點位,鼠標按下獲取經緯度等。
  20. 雙擊節點、拖曳節點、拖曳窗體交換位置等操作,均自動更新保存最后的播放地址,下次軟件打開自動應用。
  21. 右下角音量條控件,失去焦點自動隱藏,音量條帶靜音圖標,自動記憶最后的音量及靜音狀態。
  22. 支持視頻截圖,可指定單個或者對所有通道截圖,底部小工具欄也有截圖按鈕,每個視頻控件懸浮條也有抓拍按鈕。
  23. 支持輔屏預覽,可以打開多個,在多個屏幕分別打開64通道,按需顯示視頻。
  24. 支持超時自動隱藏鼠標指針、自動全屏機制。
  25. 支持onvif云臺控制,可上下左右移動云臺攝像機,包括復位和焦距調整等。
  26. 支持onvif預置位,可以添加、刪除、修改預置位,可以調用起始位。
  27. 支持OSD增刪改查,可以通過onvif協議添加及修改OSD信息。
  28. 支持onvif圖像參數設置,包括明亮度、對比度、飽和度、尖銳度等。
  29. 支持onvif其他操作,包括抓圖、網絡設置、校時、重啟、事件訂閱等。
  30. 支持任意onvif攝像機,包括但不限于海康、大華、宇視、天地偉業、華為等。
  31. 可保存視頻,可通過錄像計劃存儲,也可在懸浮條手動切換開始錄像和停止錄像。
  32. 可設置視頻流通信方式tcp或udp,可設置視頻解碼是速度優先、質量優先、均衡處理、最快速度等。
  33. 可設置軟件中文名稱、英文名稱、LOGO圖標等。
  34. 存儲的視頻文件支持導出到指定目錄,支持批量上傳到服務器。
  35. 完善的錄像計劃設置,支持每個通道7 * 24小時每半小時設置是否存儲錄像。
  36. 音視頻同步顯示以及音視頻同步存儲到MP4文件。

0.6.3 特色功能

  1. 主界面采用停靠窗體模式,各種組件以小模塊的形式加入,可自定義任意模塊加入。
  2. 停靠模塊可拖動任意位置嵌入和懸浮,支持最大化全屏,支持多屏幕。
  3. 雙重布局文件存儲機制,正常模式、全屏模式都對應不同的布局方案,自動切換和保存,比如全屏模式可以突出幾個模塊透明顯示在指定位置,更具科幻感現代化。
  4. 原創onvif協議機制,采用底層協議解析(udp廣播搜索+http請求執行命令)更輕量易懂易學習拓展,不依賴任何第三方組件比如gsoap。
  5. 原創數據導入、導出、打印機制,跨平臺不依賴任何組件,瞬間導出數據。
  6. 內置多個原創組件,宇宙超值超級牛逼,包括數據導入導出組件(導出到xls、pdf、打印)、數據庫組件(數據庫管理線程、自動清理數據線程、萬能分頁、數據請求等)、地圖組件、視頻監控組件、文件多線程收發組件、onvif通信組件、通用瀏覽器內核組件等。
  7. 自定義信息框、錯誤框、詢問框、右下角提示框(包含多種格式)等。
  8. 精美換膚,高達20套皮膚樣式隨意更換,所有樣式全部統一,包括菜單等。
  9. 選中通道對應設備樹節點高亮,選中通道節點對應視頻控件高亮,方便查看當前通道信息。
  10. 視頻控件懸浮條可以自行增加多個按鈕,監控界面底部小工具欄也可自行增加按鈕。
  11. 雙擊攝像機節點自動播放視頻,雙擊節點自動依次添加視頻,會自動跳到下一個,雙擊父節點自動添加該節點下的所有視頻。可選主碼流、子碼流。
  12. 錄像機管理、攝像機管理,可添加刪除修改導入導出打印信息,立即應用新的設備信息生成樹狀列表,不需重啟。
  13. 攝像機搜索支持一鍵搜索和批量添加,支持onvif的NVR一鍵添加子設備,可以手動設置開始地址和數量一鍵生成攝像機信息。
  14. 可選多種內核自由切換,ffmpeg、vlc、mpv等,均可在pro中設置。推薦用ffmpeg,跨平臺最多,默認提供好了linux和mac平臺上編譯好的庫。
  15. 支持windows、linux、macos等系統硬解碼,還支持嵌入式linux RKMPP硬解碼,可設置硬解碼類型(dxva2、d3d11va、vaapi、vdpau等)。
  16. 各種模塊可以勾選是否激活,方便根據實際需求搭配各種組合,比如隱藏電子地圖模塊,隱藏遠程回放模塊只保留本地回放等。
  17. 盡最大化可能,將常用的功能封裝接口,全局靜態函數調用,極其容易使用,提供各種使用示例,方便用戶二開。
  18. 默認采用opengl繪制視頻,超低的CPU資源占用,支持yuyv和nv12兩種格式繪制,性能爆表。
  19. 標簽和圖形信息支持三種繪制方式,繪制到遮罩層、繪制到圖片、源頭繪制(對應信息可以存儲到文件)。
  20. 包括但不限于視頻監控內核組件的所有功能,可參閱說明書中功能介紹 [視頻監控內核](###8.1 視頻監控內核)。
  21. 高度可定制化,用戶可以很方便的在此基礎上衍生自己的功能,比如增加自定義模塊,增加運行模式、機器人監控、無人機監控、挖掘機監控、廣播監控等。
  22. 支持xp、win7、win10、win11、linux、mac、各種國產系統(UOS、中標麒麟、銀河麒麟等)、嵌入式linux等系統。
  23. 注釋完整,項目結構清晰,超級詳細完整的使用開發手冊,精確到每個代碼文件的功能說明,不斷持續迭代版本。

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

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

相關文章

網絡原理(六): UDP 協議

目錄 1. UDP 協議 1.1 協議特點 1.2 協議報文格式 1.2.1 UDP 長度 1.2.2 校驗和 1. UDP 協議 在進行網絡編程時, 我們已經對 UDP 協議進行了簡單了解. 并且應用層的很多操作, 需要調用傳輸層的提供的接口, 基于 socket api 來進行完成的. 1.1 協議特點 UDP 協議具有以…

前端頁面展示本電腦的攝像頭,并使用js獲取攝像頭列表

可以通過 JavaScript 使用 navigator.mediaDevices.enumerateDevices() 獲取電腦上的攝像頭列表。以下是一個示例代碼&#xff0c;可以展示攝像頭列表并選擇進行預覽。 HTML JavaScript 實現攝像頭列表展示和預覽 <!DOCTYPE html> <html lang"zh-CN">…

【漫話機器學習系列】028.CP

Mallows’ Cp&#xff1a;標準化公式解析與應用 Mallows’ Cp 是一種常用的模型選擇工具&#xff0c;用于在一系列候選模型中權衡擬合度和復雜性&#xff0c;幫助我們選擇性能最優的模型。本文將基于其標準化公式展開詳細解析&#xff0c;并探討其應用場景、實現方法、優點與局…

期末算法分析程序填空題

目錄 5-1 最小生成樹&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 輸入樣例&#xff1a; 輸出樣例&#xff1a; 5-3 歸并排序(遞歸法) 輸入樣例&#xff1a; 輸出樣例&#xff1a; 5-4 求解編輯距離問題&#xff08;動態規劃法&#xff09;…

深入解析 Conda 安裝的默認依賴包及其作用:conda create安裝了哪些包(中英雙語)

深入解析 Conda 安裝的默認依賴包及其作用 當我們使用 Conda 創建新環境時&#xff0c;例如執行命令&#xff1a; conda create -n olmes python3.10Conda 會自動為我們安裝一系列基礎依賴包&#xff0c;保證 Python 環境能夠正常運行。這些包不僅是我們開發的基礎工具&#…

Mac、Linux命令

Linux 查本機IP&#xff1a;ip addr 查詢文件里符合條件的字符串&#xff1a;grep Mac 查本機IP&#xff1a;ipconfig

Visual Studio 中增加的AI功能

前言&#xff1a; 人工智能的發展&#xff0c;在現在&#xff0c;編程技術的IDE里面也融合了AI的基本操做。本例&#xff0c;以微軟的Visual Studio中的人工智能的功能介紹例子。 本例的環境&#xff1a; Visual Studio 17.12 1 AI 智能變量檢測&#xff1a; 上圖展示了一…

江科大學習筆記之——HAL庫點亮一個LED燈

HAL三步走&#xff1a;1.建工程。2.設配置。3.寫代碼 一.建立工程 HAL庫寫法 點擊FinIsh 2.配置時鐘 2 、設置配置參數 把模塊.C.h單獨設置文件 生產代碼 三寫代碼 控制GPIO就三步 1.RCC時鐘使能 2.結構體配置GPIO寄存器 3.控制GPIO值 上面的步驟已經把前兩步的配置完成了接下…

Spring MVC (下)小項目實戰

1. 加法計算器 需求分析: 客戶端輸入倆個數,服務端進行相加然后返回結果. 約定前后端交互接口: 接口的概念: 接口?叫API&#xff08;ApplicationProgrammingInterface),我們?般講到 接口或者API&#xff0c;指的都是同?個東西.是指應?程序對外提供的服務的描述,?于交換信…

在K8S中,如何查看Pod狀態的詳情?事件顯示cpu不足如何處理?

在Kubernetes中&#xff0c;查看Pod狀態的詳細通常設計使用kubectl命令行工具&#xff0c;這是kubernetes提供的一個強大的管理工具。以下是如何查看Pod狀態詳情的步驟&#xff1a; 1. 查看Pod狀態詳情 列出所有Pod&#xff1a; 使用kubectl get pods命令可以查看集群所有Po…

詳細講一下React中的路由React Router

1. 基本概念 React Router 是 React 的路由管理庫&#xff0c;用于在 React 應用中實現頁面導航和路由控制。 2. 安裝 npm install react-router-dom 3. 基礎用法 // App.jsx import { BrowserRouter, Routes, Route, Link } from react-router-domfunction App() {return (…

人工智能的視覺天賦:一文讀懂卷積神經網絡

什么是CNN&#xff1f; CNN&#xff0c;全稱為卷積神經網絡&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一種模擬人類視覺感知機制的人工神經網絡。它通過層疊的卷積、池化等操作&#xff0c;從數據中提取關鍵特征&#xff0c;進而完成分類、識別或預…

【OpenGL ES】GLSL基礎語法

1 前言 本文將介紹 GLSL 中數據類型、數組、結構體、宏、運算符、向量運算、矩陣運算、函數、流程控制、精度限定符、變量限定符&#xff08;in、out、inout&#xff09;、函數參數限定符等內容&#xff0c;另外提供了一個 include 工具&#xff0c;方便多文件管理 glsl 代碼&a…

使用 ECharts 與 Vue 構建數據可視化組件

在前端開發中&#xff0c;數據可視化是非常重要的一部分。ECharts 作為一個功能強大且易于使用的開源數據可視化庫&#xff0c;被廣泛應用于各種圖表展示需求中。而 Vue.js 是當下流行的前端框架之一&#xff0c;它的數據驅動和組件化開發模式讓我們能輕松地將 ECharts 集成到 …

RPA系列-uipath 學習筆記4

使用Uipath 處理hover的問題 備注&#xff1a;使用uipath stversion&#xff1a;2024.10.6,所有學習來源自uipath Academy 首先&#xff0c;打開uipath給我們提供的一個網站 ACME,這個網站呢&#xff0c;需要提前注冊一下的哈。 今天呢&#xff0c;就是記錄一下&#xff0c;怎…

Linux:進程概念

1.馮諾依曼體系結構 結論&#xff1a; --- CPU不和外設直接打交道&#xff0c;和內存直接打交道。 --- 所有的外設&#xff0c;有數據需要收入&#xff0c;只能載入到內存中&#xff1b;內存寫出&#xff0c;也一定是寫道外設中。 --- 為什么程序要運行必須加載到內存&#xf…

活動預告 | Microsoft Azure 在線技術公開課:使用 Azure OpenAI 服務構建生成式應用

課程介紹 通過 Microsoft Learn 免費參加 Microsoft Azure 在線技術公開課&#xff0c;掌握創造新機遇所需的技能&#xff0c;加快對 Microsoft Cloud 技術的了解。參加我們舉辦的“使用 Azure OpenAI 服務構建生成式應用”活動&#xff0c;了解如何使用包括 GPT 在內的強大的…

Linux(Centos 7.6)常見基礎配置

1.網絡配置 網絡配置詳見&#xff1a;VMware安裝Linux(Centos 7.6)后網絡配置 2.yum源配置 yum源配置詳見&#xff1a;Linux(Centos 7.6)yum源配置 3.主機名配置 1.Linux(Centos 7.6)系統安裝后&#xff0c;沒有配置主機名時&#xff0c;root用戶登錄后&#xff0c;是如下…

【PyCharm】如何把本地整個項目同步到服務器?

在PyCharm中&#xff0c;您可以使用部署功能將項目同步到服務器。以下是步驟和示例配置&#xff1a; 打開PyCharm&#xff0c;選擇您的項目。 點擊菜單欄的 “File” -> “Settings” -> “Build, Execution, Deployment”。 在左側菜單中&#xff0c;選擇 “Deployme…

電子電器架構 ---什么是智能電動汽車上的逆變器?

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 所謂雞湯,要么蠱惑你認命,要么慫恿你拼命,但都是回避問題的根源,以現象替代邏輯,以情緒代替思考,把消極接受現實的懦弱,偽裝成樂觀面對不幸的…