太理IM即時通訊軟件開發

easyQQ

??項目基本介紹

easyQQ是基于electron(vue2)nodejs實現的簡單聊天軟件,其中用websockethttp進行通訊傳遞,數據庫使用了mysql數據庫,該項目功能簡單,界面簡潔,每個功能都會添加相應的邏輯

🧧 作者自己的配置環境

數據庫

在這里插入圖片描述

nodejs

在這里插入圖片描述

npm

在這里插入圖片描述

🧨 部分用戶遇到的問題

雙擊chat.exe出現閃退

這里大概率就是你的數據庫配置有問題,你需要去修改config.json將里面的內容修改成你自己mysql的配置信息

啟動項目出現問題

在這里插入圖片描述

問題分析

數據庫配置出現錯誤

問題解決方案

檢測當前目錄下的config.json文件,看數據庫配置是否與自己的本機的數據庫配置一致

數據庫無法連接

在這里插入圖片描述

問題分析

可能用戶新裝的mysql,沒有設置數據庫訪問權限

問題解決方案

  1. 進入到你的數據庫
mysql -u root -p
  1. 輸入以下命令
use mysql;
update user set Host="%" where User="root";
flush privileges;
exit;
  1. 使用連接工具嘗試連接mysql數據庫(navicat)

mysql8后端無法連接成功,navicat能連接?

在這里插入圖片描述

問題分析

MySQL 8 默認情況下不允許使用舊的身份驗證插件,而某些 Node.js MySQL 驅動程序(例如 mysql 模塊)可能仍在使用這些插件。如果您遇到這個問題,可以在 MySQL 8 中啟用舊的身份驗證插件。您可以使用以下命令在 MySQL 8 中啟用舊的身份驗證插件:

解決方案

  1. 進入到你的數據庫
mysql -u root -p
  1. 輸入以下命令
use mysql;
update user set Host="%" where User="root";
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密碼';
flush privileges;
exit;

前端安裝依賴出現問題

在這里插入圖片描述

問題分析

這個是因為沒有管理員權限

解決方案

在win+S搜索框輸入cmd或者powershell后,右鍵以管理員身份運行

electron安裝報錯?

在這里插入圖片描述

問題分析

報錯信息提到用了淘寶鏡像,復制url到瀏覽器,這個鏡像已經找不到了

解決方案

將鏡像換為electron官方鏡像,運行如下3行代碼

npm config delete ELECTRON_CUSTOM_VERSION
npm config delete ELECTRON_MIRROR
npm config set electron_mirror https://npmmirror.com/mirrors/electron/

后端安裝依賴出現問題(node-gyp)

在這里插入圖片描述

問題分析

node-pty需要python依賴,這個只能根據錯誤去一個一個查找問題

問題解決方案

錯誤可忽略,不影響程序運行

前端依賴安裝成功結果

在這里插入圖片描述

后端依賴安裝成功結果

在這里插入圖片描述

🧨項目目前存在的問題

  • 目前視頻通話存在畫質模糊問題
  • 如果想使用需要將chat.exe放在windows上運行
  • 還沒有實現文件斷點續傳功能
  • 與new bing的AI對話功能未實現

🥑已修復的bug

  1. 文件下載出現了白屏
  2. 聊天框沒有置底

👻注意事項

  1. 打開軟件第一時間修改服務器地址

在這里插入圖片描述

在這里插入圖片描述

格式必須為https://你的ip地址

🎉已完成功能

  • 登錄賬號
  • 修改服務器地址
  • 注冊賬號
  • 忘記密碼
  • 查詢好友和群聊
  • 添加好友和群聊
  • 一對一聊天
  • 發送表情包,圖片,文字,文件(50mb以內)
  • 支持一對一語音通話,一對一視頻通話
  • 群聊
  • 修改好友備注
  • 邀請好友進入群聊
  • 群視頻

🖼? 項目截圖

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

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

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

🪵前端框架和技術介紹

前端主要是由vue2electron配合elementuiUI框架實現的頁面

vue2

Vue.js是一款流行的前端JavaScript框架,它由尤雨溪(Yuxi You)開發并維護,第一個版本發布于2014年2月。Vue.js 的目標是通過盡可能簡單的 API 實現響應式的數據綁定和組合視圖組件。

Vue.js的核心庫只關注視圖層,易于上手,同時也可以輕松與其他第三方庫或現有項目集成。Vue.js 可以通過簡單的模板語法和可重用組件來實現快速開發,它也支持許多高級特性,例如計算屬性、指令、路由、狀態管理等。

Vue.js在2016年發布了Vue.js 2.0版本,Vue.js 2.x的性能得到了很大提升,并增加了許多新特性。Vue.js 2.x使用虛擬DOM(Virtual DOM)進行高效的DOM更新,還支持服務端渲染(SSR)和單文件組件(SFC)等功能。Vue.js 2.x也提供了更好的TypeScript支持,使得開發更加友好。

Vue.js還有一些周邊生態,例如Vue Router、Vuex、Vue CLI、Vue Devtools等,這些庫可以進一步擴展Vue.js的功能和性能,以提高開發效率。

electron

Electron(前身為Atom Shell)是由 GitHub 開發的一款跨平臺桌面應用程序開發框架,它基于 Chromium 和 Node.js 構建,允許開發者使用 web 技術(如 HTML、CSS 和 JavaScript)構建原生的跨平臺桌面應用程序。Electron 的目標是讓開發人員使用簡單的前端技術構建跨平臺桌面應用程序,并且可以像開發網頁一樣進行調試。

Electron 采用了多進程架構,應用程序主進程使用 Node.js 運行,用于管理應用程序的生命周期和處理系統級別的操作,如菜單、對話框、剪貼板等。而渲染進程則是一個 Chromium 瀏覽器實例,用于渲染應用程序的 UI。

Electron 提供了豐富的 API 和開發工具,例如可以通過 Electron-Builder、Electron-Packager 等工具將應用程序打包成可執行文件,并支持跨平臺發布和自動更新。此外,Electron 還支持許多第三方模塊和插件,如 Spectron、electron-devtools-installer、electron-store 等,用于進一步擴展應用程序的功能。

Electron 已經被廣泛應用于許多知名的跨平臺應用程序,如 Visual Studio Code、GitHub Desktop、Slack、Atom、Discord 等。

elementui

Element UI 是一款基于 Vue.js 2.0 的桌面端組件庫,由餓了么前端團隊開發并維護。它提供了豐富的 UI 組件,包括表單、表格、彈窗、菜單、導航等,可以滿足大部分企業級應用的 UI 需求。

Element UI 設計風格簡潔、美觀,同時還具備響應式設計,可以適應不同屏幕尺寸的設備。Element UI 的組件可高度定制,允許通過修改主題、樣式、屬性等實現自定義的外觀和功能。

Element UI 還提供了豐富的文檔和示例,便于開發人員快速學習和上手,同時也提供了豐富的 API 文檔和源代碼,方便開發者進行二次開發和定制。

除了 Vue.js,Element UI 還支持其他常用的前端框架,例如 React、Angular 等,可以與這些框架輕松集成。Element UI 是一款開源的組件庫,采用 MIT 許可證,可以在任何商業和非商業項目中免費使用。

目錄介紹

在這里插入圖片描述

核心文件介紹

components的vueImageVerify.vue

這個文件主要是生成驗證碼圖片

utils的cookie.js

這個文件主要是幫你存儲你的登錄信息,個人信息到緩存里

utils的file.js

這個文件主要是獲取從一個url里獲取文件名和判斷你的文件類型是圖片還是zip或者其他的

utils的request.js

這個文件主要就是向后端發送請求并獲取相應的數據,axios

views的Login

這個目錄核心就是負責登錄,注冊,忘記密碼,修改服務器地址,代碼基本上一樣,如果看懂其中一個頁面其他頁面的代碼基本上就都看懂了,以下是實現登錄的核心邏輯,簡單吧!!

在這里插入圖片描述

views的index目錄

這個目錄偏核心一點,主要就是我們登錄后的界面,界面主要分為三大塊,側邊欄,列表欄,聊天欄,側邊只會影響列表欄并不會影響聊天欄

前端邏輯

  1. 用戶打開應用后,頁面具有四個功能,登錄,注冊,找回密碼,設置服務器地址,二個次要功能自動登錄記住密碼,填入正確的用戶名和密碼后會直接跳轉到首頁,如果填入失敗則會提示響應的錯誤

在這里插入圖片描述

  1. 登錄成功或者注冊成功后,我們將進入到主頁面,主頁面主要由側邊欄,列表欄,聊天欄組成,側邊欄主要可以進行個人信息的修改,選擇聊天聯系人,當我們點擊其中一個圖片,我們會進行相對于的tag修改,然后通過vue的路由跳轉實現響應的界面展示

在這里插入圖片描述

  1. 當我們選擇一個好友時,我們獲取房間號和好友名稱來建立一個websocket,后端會發送所有與之相關的所有歷史記錄,前端會根據消息的類型來進行相對應的展示,(音視頻記錄不會展示,可以做但是不想做😼😼😼),當發送或接收一條消息會自動更新列表欄的數據

    在這里插入圖片描述

后端項目

后端主要是由nodejs配合expressexpress-ws實現簡單的后端搭建,通過mysql對數據的存儲,代碼已經實現創建各個表,無需執行sql文件,代碼簡單且邏輯基本上類似

nodejs

Node.js是一個基于Chrome V8引擎的JavaScript運行時環境,使JavaScript可以在服務器端運行。Node.js采用事件驅動、非阻塞I/O模型,因此可以處理大量并發連接,且處理速度快、性能高。Node.js的模塊化設計使得開發者可以方便地組織代碼和管理依賴項。

Node.js最初由Ryan Dahl在2009年開發,目的是構建高性能、可擴展的網絡應用程序。Node.js的優點在于可以使用JavaScript編寫服務器端代碼,并且可以方便地與前端JavaScript框架進行集成,如React、Angular、Vue.js等。

Node.js擁有豐富的內置庫和第三方模塊,可用于構建Web應用程序、命令行工具、網絡服務器、流處理應用程序等。Node.js提供了許多有用的工具和工具庫,如npm、Express、Socket.IO等,使得開發和維護應用程序變得更加輕松和高效。

Node.js具有跨平臺的特性,可在Windows、Linux、macOS等不同操作系統上運行。由于其強大的性能和便捷的開發體驗,Node.js被越來越多的開發者和企業所采用,并且在大型公司和開源社區中得到了廣泛的應用。

express

Express是一個流行的基于Node.js的Web應用程序框架,提供了一組簡單的API,可以幫助開發者更快地構建Web應用程序。Express采用MVC(模型-視圖-控制器)的軟件設計模式,使得開發者可以將應用程序的邏輯、數據和UI分離開來,從而使得代碼更加模塊化和易于維護。

Express框架提供了許多有用的功能和中間件,如路由、模板引擎、HTTP工具、數據庫集成等,可幫助開發者快速構建Web應用程序。同時,Express也是高度可定制的,允許開發者根據需求自定義中間件和插件,以滿足特定的開發需求。

Express非常流行,因為它具有簡單、輕量級、易于學習的特點,同時也可以通過第三方模塊擴展其功能,例如body-parser、cookie-parser、multer等。Express也被廣泛應用于許多開源項目和企業級應用程序中,包括GitHub、PayPal、IBM等。

express-ws

Express-ws是一個基于Express框架的WebSocket插件,用于在Express應用程序中添加WebSocket功能。WebSocket是一種網絡協議,允許客戶端和服務器之間進行雙向通信,可以在Web應用程序中實現實時數據傳輸和通信。

Express-ws提供了WebSocket相關的API,可幫助開發者快速添加WebSocket功能,同時也與Express的中間件機制兼容,使得WebSocket和HTTP請求可以在同一應用程序中共存。使用Express-ws,開發者可以在Express應用程序中實現實時通信、在線游戲、聊天室等功能。

Express-ws支持標準的WebSocket協議和Socket.IO協議,可以通過簡單的API進行配置和使用。Express-ws也可以與其他Express中間件和插件集成,例如Express-session、Passport等,以實現更加復雜的功能。

總的來說,Express-ws是一個非常有用的工具,使得在Express應用程序中添加WebSocket功能變得更加容易和快速,可以大大提高Web應用程序的實時通信能力。

目錄介紹

在這里插入圖片描述

🎙?WebRTC

代碼邏輯

  1. 邀請人先創建麥克風并初始化PC源

  2. 發送創建房間的指令到當前房間,后端接受到指令后,給當前房間的所有用戶發送響應的指令

在這里插入圖片描述

  1. 被邀請人點擊同意后,獲取自己的視頻流,初始化PC源,PC添加音視頻流,創建offer,獲取自己的音視頻流,并通過setLocalDescription函數存儲自己的音視頻流,并發送new_peer指令(攜帶自己的音視頻)告訴房間的人,我要進入房間
    在這里插入圖片描述

在這里插入圖片描述

  1. 邀請人接收到有新人進入房間,則發送視頻流和offer指令給新人

在這里插入圖片描述

  1. 新人接受到對方同意的指令后,將對方的音視頻流通過setRemoteDescription函數進行存儲,存儲完后新人創建answer來獲取自己的音視頻流,通過setLocalDescription函數存儲自己的音視頻流,并發送answer指令(攜帶自己的音視頻)告訴對方要存儲邀請人的音視頻
    在這里插入圖片描述

  2. 設置邀請方發來的音頻源

在這里插入圖片描述

6.雙方建連成功后,會相互發送ice_candidate,我們需要將其發送給雙方

在這里插入圖片描述

7.雙方收到后,addIceCandidate添加到pc中

在這里插入圖片描述

  1. 如何驗證成功了,一般是查看pc.onaddstream是否監聽到數據,如果有大概率就是ok的

在這里插入圖片描述

🕹?數據庫

用戶表(user)

在這里插入圖片描述

這是一個MySQL數據庫中的用戶表,其中包含以下字段:

  • id:用戶ID,用于標識每個用戶,是自動增加的整數類型。
  • username:用戶名,必填字段,用于登錄和身份驗證,是一個長度為255的字符串,使用utf8mb4編碼和Unicode排序規則,使用B樹索引來保證唯一性。
  • password:用戶密碼,必填字段,用于登錄驗證,是一個長度為255的字符串,使用utf8mb4編碼和Unicode排序規則,不需要索引。
  • avatar:用戶頭像,可選字段,用于顯示用戶的個人信息,是一個長度為255的字符串,使用utf8mb4編碼和Unicode排序規則,可以為NULL。
  • phone:用戶電話,可選字段,用于聯系用戶,是一個長度為50的字符串,使用utf8mb4編碼和Unicode排序規則,可以為NULL。
  • name:用戶昵稱,可選字段,用于顯示用戶的個人信息,是一個長度為255的字符串,使用utf8mb4編碼和Unicode排序規則,可以為NULL。
  • signature:用戶簽名,可選字段,用于顯示用戶的個人信息,是一個長文本類型,使用utf8mb4編碼和Unicode排序規則,可以為NULL。
  • created_at:用戶創建時間,用于記錄用戶的創建時間,是一個日期時間類型,使用當前時間戳作為默認值,可以為NULL。

好友表(friend)

在這里插入圖片描述

  • id: 該字段為自增主鍵,表示每個朋友記錄的唯一標識符。
  • user_id: 該字段表示朋友所屬的用戶 ID。
  • username: 該字段表示朋友的用戶名。
  • online_status: 該字段表示朋友的在線狀態,取值為 online 或 offline。
  • remark: 該字段表示朋友的備注,可以為 NULL。
  • group_id: 該字段表示朋友所屬的朋友分組 ID,可以為 NULL。
  • room: 該字段表示朋友所在的聊天室,可以為 NULL。
  • unread_msg_count: 該字段表示未讀消息數量,初始值為 0。
  • created_at: 該字段表示記錄創建時間,類型為 timestamp。
  • updated_at: 該字段表示記錄最后一次更新時間,類型為 timestamp,并且設置了 ON UPDATE 觸發器以自動更新時間。
  • PRIMARY KEY: 指定主鍵為 id 字段。
  • INDEX: 指定索引為 group_id 字段。
  • CONSTRAINT: 指定外鍵約束,將 group_id 字段與 friend_group 表中的 id 字段關聯,實現級聯更新和級聯刪除。該約束名稱為 friend_ibfk_1。

好友組表(friend_group)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。
  • user_id: 外鍵,引用user表的id字段,整數類型。
  • username: 用戶名,最大長度為255個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • name: 組名,最大長度為50個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • created_at: 記錄創建時間,時間戳類型,默認值為當前時間戳。
  • updated_at: 記錄更新時間,時間戳類型,默認值為當前時間戳,在記錄更新時自動更新。
  • 此外,該表還定義了一個名為idx_user_id的索引,用于加速對user_id字段的查詢。并且定義了一個名為friend_group_ibfk_1的外鍵約束,當刪除user表中的記錄時,會級聯刪除與之關聯的friend_group表中的記錄。

群聊表(group_chat)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。
  • name: 群聊名稱,最大長度為50個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • creator_id: 外鍵,引用user表的id字段,整數類型。
  • avatar: 群聊頭像,最大長度為255個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • announcement: 群公告,文本類型,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • room: 房間號,最大長度為255個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • created_at: 記錄創建時間,時間戳類型,默認值為當前時間戳。
  • updated_at: 記錄更新時間,時間戳類型,默認值為當前時間戳,在記錄更新時自動更新。
  • 此外,該表還定義了一個名為idx_creator_id的索引,用于加速對creator_id字段的查詢。并且定義了一個名為group_chat_ibfk_1的外鍵約束,當刪除user表中的記錄時,會級聯刪除與之關聯的group_chat表中的記錄。

群聊成員表(group_numbers)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。
  • group_id: 外鍵,引用group_chat表的id字段,整數類型。
  • user_id: 用戶ID,整數類型。
  • nickname: 用戶在群聊中的昵稱,最大長度為50個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • created_at: 記錄創建時間,時間戳類型,默認值為當前時間戳。
  • updated_at: 記錄更新時間,時間戳類型,默認值為當前時間戳,在記錄更新時自動更新。
  • 此外,該表還定義了兩個索引:一個名為idx_user_id的索引用于加速對user_id字段的查詢;另一個名為idx_group_id的索引用于加速對group_id字段的查詢。并且定義了一個名為group_members_ibfk_1的外鍵約束,當刪除group_chat表中的記錄時,會級聯刪除與之關聯的group_members表中的記錄

消息表(message)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。
  • sender_id: 外鍵,引用user表的id字段,整數類型。
  • receiver_id: 接收者ID,整數類型。
  • content: 消息內容,長文本類型,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • room: 房間號,最大長度為255個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • type: 消息類型,枚舉類型,可選值為’private’和’group’。
  • media_type: 媒體類型,枚舉類型,可選值為’text’、‘image’、‘video’和’file’。
  • status: 消息狀態,整數類型,默認值為0。
  • created_at: 記錄創建時間,時間戳類型,默認值為當前時間戳。
    此外,該表還定義了一個名為sender_id的索引,用于加速對sender_id字段的查詢。并且定義了一個名為message_ibfk_1的外鍵約束,當刪除user表中的記錄時,會級聯刪除與之關聯的message表中的記錄。

消息統計表(message_statistics)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。
  • room: 房間號,最大長度為255個字符,使用utf8mb4字符集和utf8mb4_unicode_ci排序規則。
  • total: 消息總數,整數類型。
  • created_at: 記錄創建時間,時間戳類型,默認值為當前時間戳。
  • updated_at: 記錄更新時間,時間戳類型,默認值為當前時間戳,在記錄更新時自動更新。
    該表沒有定義外鍵約束和索引。

AI密鑰存儲表(ai_conversation)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。
  • username: 用戶名,非空字符串。
  • room: 房間名稱,非空字符串。
  • conversation_id: 會話 ID,非空字符串。
  • conversation_signature: 會話簽名,非空字符串。
  • client_id: 客戶端 ID,非空字符串。
  • count: 統計使用次數,默認值為 0。
  • created_at: 記錄創建時間,默認值為當前時間戳。
  • updated_at: 記錄更新時間,默認值為當前時間戳,在更新時自動更新。

此外,該表還包含一個外鍵約束,它引用了 user 表中的 username 字段,并在刪除或更新時級聯操作。
表使用 InnoDB 引擎,并使用 utf8mb4 字符集和 utf8mb4_unicode_ci 校對規則。

AI消息存儲表(ai_conversation)

在這里插入圖片描述

  • id: 主鍵,自動遞增的整數。

  • sender_id: 發送者 ID,非空整數。

  • receiver_id: 接收者 ID,非空整數。

  • content: 消息內容,非空長文本。

  • link_list: 鏈接列表,JSON 格式,默認值為 NULL。

  • room: 房間名稱,非空字符串。

  • conversation_id: 會話 ID,非空字符串。

  • conversation_signature: 會話簽名,非空字符串。

  • client_id: 客戶端 ID,非空字符串。

  • invocation_id: 調用ID,非空整數。

  • created_at: 記錄創建時間,默認值為當前時間戳。

注意electron打包會出現的問題

打包前必須做的事

  • 進入到下面目錄C:\Users\自己的用戶名\AppData\Local\electron-builder\Cache
    在這里插入圖片描述

  • 創建目錄winCodeSignnsis
    在這里插入圖片描述

  • electron必須安裝包目錄下的winCodeSign-2.6.0.7z解壓到C:\Users\自己的用戶名\AppData\Local\electron-builder\Cache\winCodeSign目錄下

在這里插入圖片描述

  • 進入到C:\Users\自己的用戶名\AppData\Local\electron-builder\Cache\nsis目錄下,將electron必須安裝包目錄下分別解壓成如下圖所示的樣子
    在這里插入圖片描述

前端成功打包結果

在這里插入圖片描述

后端成果打包結果

在這里插入圖片描述

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

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

相關文章

BERT 模型準備與轉換詳細操作流程

在嘗試復現極客專欄《PyTorch 深度學習實戰|24 | 文本分類:如何使用BERT構建文本分類模型?》時候,構建模型這一步驟專欄老師一筆帶過,對于新手有些不友好,經過一陣摸索,終于調通了,現在總結一下…

doris 和StarRocks 導入導出數據配置

一、StarRocks 導數據到hdfs EXPORT TABLE database.table TO “hdfs://namenode/tmp/demo/table” WITH BROKER ( “username”“username”, “password”“password” ); 二、StarRocks 導數據到oss EXPORT TABLE database.table TO “oss://broke/aa/” WITH BROKER ( “…

【HTTP】取消已發送的請求

場景 在頁面中,可能會因為某些操作多次觸發某個請求,如多次點擊某按鈕觸發請求,實際上我們只需要最后一次請求的返回值,但是由于請求的耗時不一,請求未必會按發送的順序返回,導致我們最終獲取到的值 ≠ 最后…

JSON框架轉化isSuccess()為sucess字段

在您的描述中,BankInfoVO子類返回的JSON中出現了"success": true字段,但類本身沒有定義這個字段。這通常是由以下原因之一造成的: 原因分析及解決方案 序列化框架的Getter自動推導 Java序列化框架(如Jackson/Gson&…

Ragflow 源碼:task_executor.py

目錄 介紹主要功能核心組件 流程圖核心代碼解釋1. 系統架構與核心組件2. 核心處理流程3. 高級處理能力4. 關鍵創新點5. 容錯與監控機制6. 性能優化技巧 介紹 task_executor.py 是RAGFlow系統中的任務執行器(Task Executor)核心部分,主要負責文檔的解析、分塊(chunk…

創客匠人聯盟生態:重構家庭教育知識變現的底層邏輯

在《家庭教育促進法》推動行業剛需化的背景下,單一個體 IP 的增長天花板日益明顯。創客匠人提出的 “聯盟生態思維”,正推動家庭教育行業從 “單打獨斗” 轉向 “矩陣作戰”,其核心在于通過工具整合資源,將 “同行競爭” 轉化為 “…

【Docker基礎】Docker容器管理:docker stop詳解

目錄 1 Docker容器生命周期概述 2 docker stop命令深度解析 2.1 命令基本語法 2.2 命令執行流程 2.3 stop與kill的區別 3 docker stop的工作原理 3.1 工作流程 3.2 詳細工作流程 3.3 信號處理機制 4 docker stop的使用場景與最佳實踐 4.1 典型使用場景 場景1&#…

rules寫成動態

拖拽排序和必填校驗聯動(rules寫到computed里) computed: {rules() {const rules {};this.form.feedList.forEach((item, idx) > {rules[feedList.${idx}] [{ required: true, message: 路線評價動態${idx 1}待填寫,請填寫完畢提交, trigger: change }];});re…

The Open Group開放流程自動化? 論壇(OPAF)發布組織最新進展報告

除埃克森美孚(ExxonMobil)的成就外,開放流程自動化? 論壇(OPAF)的最新論壇報告顯示,該組織其他成員也在多個領域取得進展。 “我們祝賀埃克森美孚,因為他們證明了在前線、創收的工藝操作中部署…

線程的基本控制

線程終止 exit是危險的 如果進程中的任意一個線程調用了exit,那么整個進程終止。 不終止進程的退出方式 普通單個線程的退出方法,以下方法退出不會導致進程終止: (1)從啟動例程中返回,返回值是線程的退出…

DeepSeek+WinForm串口通訊實戰

前言 在現代軟件開發中,串口通訊仍然是工業自動化、物聯網設備和嵌入式系統的重要通信方式。隨著.NET技術的發展,特別是.NET 5/.NET 6的跨平臺能力,傳統的WinForm應用現在可以通過現代UI框架實現真正的跨平臺串口通訊。本文將深入探討三種主…

針對數據倉庫方向的大數據算法工程師面試經驗總結

?? 一、技術核心考察點 數據建模能力 星型 vs 雪花模型:面試官常要求對比兩種模型。星型模型(事實表冗余維度表)查詢性能高但存儲冗余;雪花模型(規范化維度表)減少冗余但增加JOIN復雜度。需結合場景選擇&…

Nuxt3 Cannot read properties of undefined (reading ‘createElement‘)

你遇到的 TypeError: Cannot read properties of undefined (reading createElement) 這個報錯,通常是由于在 Nuxt3 或 Vue3 項目中,某些地方嘗試訪問 document.createElement 或類似 DOM API,但此時 document 還未定義(比如在服務…

正則表達式匹配實現

直接上代碼 using Microsoft.AspNetCore.Mvc; using System.Text.RegularExpressions;namespace SaaS.OfficialWebSite.Web.Controllers {public class RegController : Controller{public IActionResult Index(){return View();}[HttpPost]public IActionResult TestRegex([F…

API測試工具Parasoft SOAtest:應對API變化,優化測試執行

API頻繁變更給測試工作帶來諸多挑戰,如手動排查變更影響耗時費力、測試用例維護繁瑣易出錯等。Parasoft SOAtest作為一款企業級API測試工具,通過自動掃描API接口、智能分析變更影響、優化測試,執行以及支持測試用例共享與版本控制等功能&…

mysql 數據庫連接 -h localhost 和 -h 127.0.0.1 區別是什么

對于 mysql 數據庫, 在 my.conf 中指定的client 端口是 3358,實際的mysql server 的端口監聽在 3306, mysql -h localhost 可以居然可以連接成功; mysql -h 127.0.0.1 連接失敗提示Can’t connect to MySQL server on 127.0.0.1&a…

Educational Codeforces Round 180 (Rated for Div. 2) A-D

A.Race 題目大意 給你兩個x,y,終點會在二點之間隨機出現,alice在點a,假設alice和bob有相同的速度(距離更短者用時更少),問對于bob是否存在一點,無論終點是x還是y,他都能比alice更快到達 思路 如果alice在…

python requests post請求

在Python中,使用requests庫進行POST請求是一種常見的操作,用于向服務器發送數據。下面是如何使用requests庫進行POST請求的步驟: 安裝requests庫 如果你還沒有安裝requests庫,可以通過pip安裝: pip install requests…

Postman中設置定時自動運行接口測試

?創建測試集合? 將需每日運行的接口組織到Collection中,并配置好測試腳本和斷言。 ?配置定時運行? 打開目標Collection → 點擊 ?Run? 按鈕在Collection Runner頁面底部選擇 ?Schedule runs?關鍵配置: Frequency: Daily // 選擇每日執行 Time…

multiprocessing.pool和multiprocessing.Process

在CPU密集型任務中,Python的multiprocessing模塊是突破GIL限制的關鍵工具。multiprocessing.Pool(進程池)和multiprocessing.Process(獨立進程)是最常用的兩種并行化方案,但其設計思想和適用場景截然不同。…