MySQL介紹及使用

1.?安裝、啟動、配置 MySQL

1. 安裝 MySQL

更新軟件包索引
sudo apt update
安裝 MySQL 服務器
sudo apt install mysql-server

安裝過程中可能會提示你設置 root 用戶密碼。如果沒有提示,可以跳過,后續可以手動設置。


2. 配置 MySQL

運行安全腳本

安裝完成后,運行以下命令以提高 MySQL 的安全性:

sudo mysql_secure_installation

按照提示進行操作:

  • 設置 root 用戶密碼(如果之前未設置)。

  • 移除匿名用戶(建議選擇 Y)。

  • 禁止 root 用戶遠程登錄(如果不需要遠程訪問,建議選擇 Y)。

  • 刪除測試數據庫(建議選擇 Y)。

  • 重新加載權限表(選擇 Y)。


3. 設置 MySQL 用戶密碼

如果在安裝過程中沒有設置密碼,或者需要更改密碼,可以通過以下步驟設置密碼。

登錄到 MySQL
sudo mysql -uroot -p

如果之前沒有設置密碼,直接按回車鍵即可登錄。

設置密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

新密碼 替換為你想要設置的密碼。

FLUSH PRIVILEGES;
退出 MySQL
exit;

4. 配置遠程訪問(可選)

如果你需要從其他計算機遠程訪問 MySQL 數據庫,可以按照以下步驟配置。

登錄到 MySQL
sudo mysql -uroot -p
創建遠程用戶并授予權限
CREATE USER 'root'@'%' IDENTIFIED BY '新密碼';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
  • CREATE USER 創建一個允許從任何 IP 地址訪問的 root 用戶。

  • GRANT ALL PRIVILEGES 授予該用戶所有數據庫和表的完全訪問權限。

刷新權限
FLUSH PRIVILEGES;
退出 MySQL
exit;

5. 配置 MySQL 服務:實現所有IP都能訪問

編輯 MySQL 配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改?bind-address
bind-address = 127.0.0.1
bind-address = 0.0.0.0
保存并退出

保存文件并退出編輯器。

重啟 MySQL 服務
sudo systemctl restart mysql

6. 測試遠程訪問(可選)

在另一臺計算機上,使用以下命令測試遠程訪問:

mysql -uroot -h[MySQL服務器IP] -p

輸入你設置的密碼,如果能夠成功連接,說明配置成功。


7. 安裝 MySQL 客戶端(可選)

如果你需要從其他計算機連接到 MySQL 數據庫,可以在客戶端計算機上安裝 MySQL 客戶端。

安裝 MySQL 客戶端
sudo apt install mysql-client

2.MySQL介紹?

MySQL 是一個 關系型數據庫管理系統(RDBMS),使用 結構化查詢語言(SQL) 來管理和操作數據。

“關系”在這里指的是二維表格(表 / table),每張表由行(row)列(column) 組成,數據以結構化形式存儲。

名稱說明
數據庫(Database)數據的集合,一個數據庫中可以有多張表
表(Table)類似 Excel 表格,用來存儲結構化數據
行(Row)表中的一條記錄,例如一個用戶信息
列(Column)數據的字段,比如姓名、年齡、郵箱等
主鍵(Primary Key)每行的唯一標識,不可重復
外鍵(Foreign Key)引用其他表的主鍵,用于建立表之間的關系

1.數值類型

1.?整數類型
數據類型存儲大小(字節)范圍(有符號)范圍(無符號)
TINYINT1-128 到 1270 到 255
SMALLINT2-32768 到 327670 到 65535
MEDIUMINT3-8388608 到 83886070 到 16777215
INT?或?INTEGER4-2147483648 到 21474836470 到 4294967295
BIGINT8-9223372036854775808 到 9223372036854775807
2.?浮點數類型
數據類型存儲大小(字節)范圍
FLOAT4依賴于精度
DOUBLE8依賴于精度

2、字符串類型

1.?字符類型
數據類型存儲大小用途
CHAR固定長度存儲固定長度的字符串,如電話號碼
VARCHAR可變長度存儲可變長度的字符串,如用戶名
2.?二進制字符串類型
數據類型存儲大小用途
BINARY固定長度存儲固定長度的二進制字符串
VARBINARY可變長度存儲可變長度的二進制字符串
3.?文本類型
數據類型存儲大小用途
TINYTEXT最大 255 字節存儲較短的文本
TEXT最大 65535 字節存儲中等長度的文本
MEDIUMTEXT最大 16777215 字節存儲較長的文本
LONGTEXT最大 4294967295 字節存儲非常長的文本

3.MySQL使用

SQL(結構化查詢語言) 是操作關系型數據庫的標準語言,包括:

  • SELECT:查詢數據

  • INSERT:插入數據

  • UPDATE:更新數據

  • DELETE:刪除數據

  • CREATE / DROP:創建或刪除表和數據庫

  • JOIN:多表聯查

1.SQL

1.?登錄 MySQL

在終端中輸入以下命令登錄 MySQL:

mysql -u root -p
  • -u root 表示以管理員用戶登錄(root 是 MySQL 的默認管理員賬號)。

  • -p 表示提示輸入密碼。輸入你在安裝過程中設置的 MySQL 管理員密碼。

如果密碼正確,你會看到 MySQL 的命令行提示符,類似如下:

mysql>

2.?查看數據庫

登錄后,查看當前數據庫列表:

SHOW DATABASES;

你會看到類似以下輸出:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

這些是 MySQL 系統自帶的數據庫。你可以創建自己的數據庫。

3.?創建數據庫

創建一個新的數據庫,例如 mydatabase

CREATE DATABASE mydatabase;

4.?切換到新創建的數據庫

USE mydatabase;

5.?創建表

mydatabase 數據庫中創建一個表,例如 students

CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT,grade VARCHAR(10)
);
  • id 是主鍵,自動遞增。

  • name 是字符串類型,最大長度為 50,不能為空。

  • age 是整數類型。

  • grade 是字符串類型,最大長度為 10。

6.?插入數據

students 表中插入數據:

INSERT INTO students (name, age, grade) VALUES ('Alice', 20, 'A');
INSERT INTO students (name, age, grade) VALUES ('Bob', 22, 'B');

7.?查詢數據

查詢 students 表中的所有數據:

SELECT * FROM students;
+----+-------+-----+-------+
| id | name  | age | grade |
+----+-------+-----+-------+
|  1 | Alice |  20 | A     |
|  2 | Bob   |  22 | B     |
+----+-------+-----+-------+

8.?更新數據

更新表中的數據,例如將 Alice 的年齡改為 21:

UPDATE students SET age = 21 WHERE name = 'Alice';

9.?刪除數據

刪除表中的數據,例如刪除 Bob 的記錄:

sql復制

DELETE FROM students WHERE name = 'Bob';

再次查詢數據,確認刪除是否成功:

sql復制

SELECT * FROM students;

10.?退出 MySQL

EXIT;

11.?其他常用操作

  • 查看表結構

    DESCRIBE students;
  • 刪除表

    DROP TABLE students;
  • 刪除數據庫

    DROP DATABASE mydatabase;

2.列的完整性約束

1.?主鍵約束(Primary Key)

  • 作用:唯一標識表中的每條記錄。

  • 特點:值必須唯一且不能為空。

  • 示例

    sql復制

    CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50)
    );

2.?外鍵約束(Foreign Key)

  • 作用:建立表與表之間的關系。

  • 特點:值必須是另一個表的主鍵值,或者為空。

  • 示例

    sql復制

    CREATE TABLE enrollments (student_id INT,FOREIGN KEY (student_id) REFERENCES students(id)
    );

3.?唯一約束(Unique)

  • 作用:確保列中的值是唯一的。

  • 特點:允許空值,但每個值必須唯一。

  • 示例

    sql復制

    CREATE TABLE users (email VARCHAR(100) UNIQUE
    );

4.?非空約束(NOT NULL)

  • 作用:確保列中的值不能為空。

  • 特點:插入或更新時必須提供值。

  • 示例

    sql復制

    CREATE TABLE employees (name VARCHAR(50) NOT NULL
    );

5.?默認值約束(DEFAULT)

  • 作用:為列指定默認值。

  • 特點:插入記錄時未指定值時自動使用默認值。

  • 示例

    sql復制

    CREATE TABLE orders (order_date DATE DEFAULT CURRENT_DATE
    );

6.?檢查約束(CHECK)

  • 作用:限制列的值必須滿足某些條件。

  • 特點:確保數據符合特定規則。

  • 示例

    sql復制

    CREATE TABLE products (price DECIMAL(10, 2) CHECK (price > 0)
    );

7.?添加和刪除約束

  • 添加約束

    sql復制

    ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type;
  • 刪除約束

    sql復制

    ALTER TABLE table_name DROP CONSTRAINT constraint_name;

?4.操作 MySQL 的三種主流 C/C++ 接口/庫

名稱語言說明
libmysqlclient-devC最底層、官方提供的 C API
libmysql++C++C++ 封裝庫,封裝了上面的 C API
MySQL Connector/C++C++Oracle 官方維護的 C++ 驅動,現代化設計

1?? libmysqlclient-dev - 最底層的 C API(推薦了解)

  • 作用:提供最基礎的 C API 來操作 MySQL。

  • 包管理器名(Debian/Ubuntu)

    sudo apt install libmysqlclient-dev

  • 常用頭文件#include <mysql/mysql.h>

  • 使用方式

    • 初始化連接

    • 發送 SQL 查詢

    • 獲取結果集

  • 適合:底層開發、嵌入式開發、對性能控制要求高的場景。

    #include <mysql++/mysql++.h>mysqlpp::Connection conn(false);
    conn.connect("testdb", "localhost", "root", "password");mysqlpp::Query query = conn.query("SELECT * FROM users");
    mysqlpp::StoreQueryResult res = query.store();
    

? 優點:輕量、速度快、控制力強
? 缺點:接口是 C 風格,寫起來繁瑣、類型安全差、易出錯


2?? libmysql++ - 對 C API 的 C++ 封裝(較舊但簡單)

  • 作用:基于 libmysqlclient 封裝,提供更易用的 C++ 接口。

  • 安裝方式(Ubuntu)

    sudo apt install libmysql++-dev

  • 項目地址:http://tangentsoft.com/mysql++/

#include <mysql++/mysql++.h>mysqlpp::Connection conn(false);
conn.connect("testdb", "localhost", "root", "password");mysqlpp::Query query = conn.query("SELECT * FROM users");
mysqlpp::StoreQueryResult res = query.store();

? 優點:寫起來比 C API 簡潔
? 缺點:項目已經多年未更新,缺乏現代 C++ 特性(比如 smart pointer, exception 安全等)


3?? MySQL Connector/C++ - Oracle 官方的現代 C++ 驅動(推薦)

  • 作用:Oracle 提供的官方 C++ 庫,支持 C++11/14 風格編程,模塊化、支持連接池等。

  • 安裝方式(Ubuntu)

    sudo apt install libmysqlcppconn-dev

  • 頭文件<mysql_driver.h><mysql_connection.h>

#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/prepared_statement.h>sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();
std::unique_ptr<sql::Connection> con(driver->connect("tcp://127.0.0.1:3306", "root", "pwd"));
con->setSchema("testdb");std::unique_ptr<sql::PreparedStatement> stmt(con->prepareStatement("INSERT INTO users(name) VALUES(?)"));
stmt->setString(1, "Alice");
stmt->execute();

? 優點:

  • 支持 prepared statements(防注入)

  • 面向對象

  • 官方維護,現代設計

? 缺點:比 C API 慢一點,依賴較多


? 總結:我該選哪個?

如果你是...推薦選擇理由
新手/想快速開發MySQL Connector/C++ (libmysqlcppconn-dev)現代 C++ 風格、易用、安全
想學底層 / 嵌入式libmysqlclient-dev學會底層原理,便于擴展
想用老項目代碼libmysql++有些老代碼仍然使用它,但新項目建議不要用了

5.C/C++ 使用 MySQL API 操作 數據庫

// include/db.hpp#pragma once
#include <string>
#include <vector>struct FileMeta {std::string filename;std::string filepath;std::string user;long size;
};bool init_db();
void close_db();
bool insert_file(const FileMeta &file);
std::vector<FileMeta> query_files_by_path(const std::string &path);
// src/db.cpp#include "db.hpp"
#include <iostream>
#include <mysql/mysql.h>MYSQL *conn = nullptr;bool init_db() {// 1.初始化一個 MySQL 連接句柄conn = mysql_init(nullptr);if (!conn) {std::cerr << "mysql_init failed\n";return false;}// 2.建立與 MySQL 數據庫if (!mysql_real_connect(conn, "127.0.0.1", "root", "123456", "metadb", 3306,nullptr, 0)) {std::cerr << "mysql_real_connect failed: " << mysql_error(conn) << "\n";return false;}return true;
}void close_db() {if (conn) {//關閉與MySQL數據庫的連接mysql_close(conn);conn = nullptr;}
}// 向數據庫插入文件元數據
bool insert_file(const FileMeta &file) {// 1.SQL 插入語句格式化到 query 數組char query[1024];snprintf(query, sizeof(query),"INSERT INTO file_metadata (filename, filepath, user, size) VALUES ""('%s', '%s', '%s', %ld)",file.filename.c_str(), file.filepath.c_str(), file.user.c_str(),file.size);// 2.mysql_query 函數執行 SQL 查詢語句if (mysql_query(conn, query)) {std::cerr << "Insert failed: " << mysql_error(conn) << "\n";return false;}return true;
}std::vector<FileMeta> query_files_by_path(const std::string &path) {std::vector<FileMeta> results;std::string query = "SELECT filename, filepath, user, size FROM ""file_metadata WHERE filepath = '" +path + "'";if (mysql_query(conn, query.c_str())) {std::cerr << "Query failed: " << mysql_error(conn) << "\n";return results;}// 3.mysql_store_result 函數獲取查詢結果。MYSQL_RES *res = mysql_store_result(conn);if (!res) {std::cerr << "mysql_store_result failed\n";return results;}// 4.mysql_fetch_row 函數逐行獲取查詢結果MYSQL_ROW row;while ((row = mysql_fetch_row(res))) {FileMeta file;file.filename = row[0];file.filepath = row[1];file.user = row[2];file.size = std::stol(row[3]);results.push_back(file);}mysql_free_result(res);return results;
}

//src/main.cpp
#include "db.hpp"
#include <iostream>int main() {if (!init_db()) {return 1;}FileMeta file = {"report.docx", "/home/user/docs", "alice", 5120};insert_file(file);auto files = query_files_by_path("/home/user/docs");for (const auto &f : files) {std::cout << f.filename << " (" << f.size << " bytes) - " << f.user << "\n";}close_db();return 0;
}
cmake_minimum_required(VERSION 3.10)
project(MetaFS_C_API)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)# 設置頭文件路徑
include_directories(${PROJECT_SOURCE_DIR}/include)# 設置源文件
file(GLOB SOURCES${PROJECT_SOURCE_DIR}/src/*.cpp
)# 生成可執行文件
add_executable(meta_fs ${SOURCES})# 鏈接 MySQL client 庫
target_link_libraries(meta_fs mysqlclient)

——————————————————————————————————————————

#pragma once
#include <string>
#include <vector>struct FileMeta {std::string filename;std::string filepath;std::string user;long size;
};bool init_db();
bool insert_file(const FileMeta &file);
std::vector<FileMeta> list_files(const std::string &path);
#include "db.hpp"
#include <cppconn/prepared_statement.h> //SQL執行
#include <cppconn/resultset.h>          //查詢結果
#include <fstream>
#include <mysql_connection.h> //鏈接數據庫
#include <mysql_driver.h>     //驅動
#include <nlohmann/json.hpp>using json = nlohmann::json;
static sql::Connection *conn = nullptr;bool init_db() {std::ifstream file("config/db_config.json");json cfg;file >> cfg;// 1.創建 MySQL 驅動對象,初始化驅動sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();// 2. 建立連接conn = driver->connect(cfg["host"], cfg["user"], cfg["password"]);// 3. 選擇數據庫conn->setSchema(cfg["database"]);return true;
}// 將文件元數據插入到數據庫中
bool insert_file(const FileMeta &file) {// 1.準備SQL語句sql::PreparedStatement *stmt =conn->prepareStatement("INSERT INTO file_metadata(filename, filepath, ""user, size) VALUES (?, ?, ?, ?)");// 2.設置參數stmt->setString(1, file.filename);stmt->setString(2, file.filepath);stmt->setString(3, file.user);stmt->setInt64(4, file.size);// 3.執行SQL語句stmt->execute();// 4.釋放PreparedStatement對象,避免內存泄漏delete stmt;return true;
}//從數據庫中查詢指定路徑下的所有文件元數據,并將結果存儲到一個std::vector<FileMeta>
//中返回
std::vector<FileMeta> list_files(const std::string &path) {std::vector<FileMeta> files;sql::PreparedStatement *stmt =conn->prepareStatement("SELECT filename, filepath, user, size FROM ""file_metadata WHERE filepath = ?");stmt->setString(1, path);// 3.執行查詢sql::ResultSet *res = stmt->executeQuery();// 4.處理查詢結果while (res->next()) {files.push_back({res->getString("filename"), res->getString("filepath"),res->getString("user"), res->getInt64("size")});}delete res;delete stmt;return files;
}
#include "db.hpp"
#include <iostream>int main() {if (!init_db()) {std::cerr << "DB init failed\n";return 1;}FileMeta f1 = {"data.txt", "/home/user/docs", "alice", 2048};insert_file(f1);auto files = list_files("/home/user/docs");for (const auto &f : files) {std::cout << f.filename << " (" << f.size << " bytes) - " << f.user << "\n";}return 0;
}
-- sql/init.sqlCREATE DATABASE IF NOT EXISTS metadb;USE metadb;CREATE TABLE IF NOT EXISTS file_metadata (id INT AUTO_INCREMENT PRIMARY KEY,filename VARCHAR(255) NOT NULL,filepath VARCHAR(255) NOT NULL,user VARCHAR(64),create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,size BIGINT
);
cmake_minimum_required(VERSION 3.10)
project(MiniMetaFS)set(CMAKE_CXX_STANDARD 17)include_directories(include)add_executable(minifs src/main.cpp src/db.cpp)find_package(MySQL REQUIRED)
target_link_libraries(minifs mysqlcppconn)# 使用 nlohmann/json(假設你用的是頭文件方式)

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

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

相關文章

九、重學C++—類和函數

上一章節&#xff1a; 八、重學C—動態多態&#xff08;運行期&#xff09;-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147004745?spm1001.2014.3001.5502 本章節代碼&#xff1a; cpp/cppClassAndFunc.cpp CuiQingCheng/cppstudy - 碼云 - 開源中國…

lua和C的交互

1.C調用lua例子 #include <iostream> #include <lua.hpp>int main() {//用于創建一個新的lua虛擬機lua_State* L luaL_newstate();luaL_openlibs(L);//打開標準庫/*if (luaL_dofile(L, "test.lua") ! LUA_OK) {std::cerr << "Lua error: &…

java高并發------守護線程Daemon Thread

文章目錄 1.概念2.生命周期與行為2. 應用場景3. 示例代碼4. 注意事項 1.概念 Daemon &#xff1a; 滴門 在Java中&#xff0c;線程分為兩類&#xff1a;用戶線程(User Thread)和守護線程(Daemon Thread)。 守護線程是后臺線程&#xff0c;主要服務于用戶線程&#xff0c;當所…

Docker存儲策略深度解析:臨時文件 vs 持久化存儲選型指南

Docker存儲策略深度解析&#xff1a;臨時文件 vs 持久化存儲選型指南 一、存儲類型全景對比二、臨時存儲適用場景與風險2.1 最佳使用案例2.2 風險警示 三、持久化存儲技術選型3.1 Volume核心優勢Volume管理命令&#xff1a; 3.2 Bind Mount適用邊界掛載模式對比&#xff1a; 四…

【Linux網絡#18】:深入理解select多路轉接:傳統I/O復用的基石

&#x1f4c3;個人主頁&#xff1a;island1314 &#x1f525;個人專欄&#xff1a;Linux—登神長階 目錄 一、前言&#xff1a;&#x1f525; I/O 多路轉接 為什么需要I/O多路轉接&#xff1f; 二、I/O 多路轉接之 select 1. 初識 select2. select 函數原型2.1 關于 fd_set 結…

高級:微服務架構面試題全攻略

一、引言 在現代軟件開發中&#xff0c;微服務架構被廣泛應用于構建復雜、可擴展的應用程序。面試官通過相關問題&#xff0c;考察候選人對微服務架構的理解、拆分原則的掌握、服務治理的能力以及API網關的運用等。本文將深入剖析微服務架構相關的面試題&#xff0c;結合實際開…

使用MQTTX軟件連接阿里云

使用MQTTX軟件連接阿里云 MQTTX軟件阿里云配置MQTTX軟件設置 MQTTX軟件 阿里云配置 ESP8266連接阿里云這篇文章里有詳細的創建過程&#xff0c;這里就不再重復了&#xff0c;需要的可以點擊了解一下。 MQTTX軟件設置 打開軟件之后&#xff0c;首先點擊添加進行創建。 在阿…

【HFP】藍牙Hands-Free Profile(HFP)核心技術解析

藍牙 Hands-Free Profile&#xff08;HFP&#xff09;作為車載通信和藍牙耳機的核心協議&#xff0c;定義了設備間語音交互的標準化流程&#xff0c;并持續推動著無線語音交互體驗的革新。自2002年首次納入藍牙核心規范以來&#xff0c;HFP歷經多次版本迭代&#xff08;最新為v…

輕量化大模型微調工具XTuner指令微調實戰(下篇)

接著上篇文章《輕量化大模型微調工具XTuner指令微調實戰&#xff08;上篇&#xff09;》來接著寫教程。 一、模型轉換 模型訓練后會自動保存成 PTH 模型&#xff08;例如 iter_500.pth&#xff09;&#xff0c;我們需要利用 xtuner convert pth_to_hf 將其轉換為 HuggingFace…

pyTorch框架使用CNN進行手寫數字識別

目錄 1.導包 2.torchvision數據處理的方法 3.下載加載手寫數字的訓練數據集 4.下載加載手寫數字的測試數據集 5. 將訓練數據與測試數據 轉換成dataloader 6.轉成迭代器取數據 7.創建模型 8. 把model拷到GPU上面去 9. 定義損失函數 10. 定義優化器 11. 定義訓練…

強化學習課程:stanford_cs234 學習筆記(3)introduction to RL

文章目錄 前言7 markov 實踐7.1 markov 過程再敘7.2 markov 獎勵過程 MRP&#xff08;markov reward process&#xff09;7.3 markov 價值函數與貝爾曼方程7.4 markov 決策過程MDP&#xff08;markov decision process&#xff09;的 狀態價值函數7.4.1 狀態價值函數7.4.2 狀態…

操作系統 4.5-文件使用磁盤的實現

通過文件進行磁盤操作入口 // 在fs/read_write.c中 int sys_write(int fd, const char* buf, int count) {struct file *file current->filp[fd];struct m_inode *inode file->inode;if (S_ISREG(inode->i_mode))return file_write(inode, file, buf, count); } 進程…

libreoffice-help-common` 的版本(`24.8.5`)與官方源要求的版本(`24.2.7`)不一致

出現此錯誤的原因主要是軟件包依賴沖突&#xff0c;具體分析如下&#xff1a; ### 主要原因 1. **軟件源版本不匹配&#xff08;國內和官方服務器版本有差距&#xff09; 系統中可能啟用了第三方軟件源&#xff08;如 PPA 或 backports 源&#xff09;&#xff0c;導致 lib…

使用Geotools中的原始方法來操作PostGIS空間數據庫

目錄 前言 一、原生PostGIS連接介紹 1、連接參數說明 2、創建DataStore 二、工程實戰 1、Maven Pom.xml定義 2、空間數據庫表 3、讀取空間表的數據 三、總結 前言 在當今數字化與信息化飛速發展的時代&#xff0c;空間數據的處理與分析已成為眾多領域不可或缺的一環。從…

訊飛語音合成(流式版)語音專業版高質量的分析

一、引言 在現代的 Web 應用開發中&#xff0c;語音合成技術為用戶提供了更加便捷和人性化的交互體驗。訊飛語音合成&#xff08;流式版&#xff09;以其高效、穩定的性能&#xff0c;成為了眾多開發者的首選。本文將詳細介紹在 Home.vue 文件中實現訊飛語音合成&#xff08;流…

走進未來的交互世界:下一代HMI設計趨勢解析

在科技日新月異的今天&#xff0c;人機交互界面&#xff08;HMI&#xff09;設計正以前所未有的速度發展&#xff0c;不斷引領著未來的交互世界。從簡單的按鈕和圖標&#xff0c;到如今的智能助手和虛擬現實&#xff0c;HMI設計不僅改變了我們的生活方式&#xff0c;還深刻影響…

洛谷題單3-P1217 [USACO1.5] 回文質數 Prime Palindromes-python-流程圖重構

題目描述 因為 151 151 151 既是一個質數又是一個回文數&#xff08;從左到右和從右到左是看一樣的&#xff09;&#xff0c;所以 151 151 151 是回文質數。 寫一個程序來找出范圍 [ a , b ] ( 5 ≤ a < b ≤ 100 , 000 , 000 ) [a,b] (5 \le a < b \le 100,000,000…

學習筆記,DbContext context 對象是保存了所有用戶對象嗎

DbContext 并不會將所有用戶對象保存在內存中&#xff1a; DbContext 是 Entity Framework Core (EF Core) 的數據庫上下文&#xff0c;它是一個數據庫訪問的抽象層它實際上是與數據庫的一個連接會話&#xff0c;而不是數據的內存緩存當您通過 _context.Users 查詢數據時&…

本地命令行啟動服務并連接MySQL8

啟動服務命令 net start mysql8 關閉服務命令 net stop mysql8 本地連接MySQL數據庫mysql -u [用戶名] -p[密碼] 這里&#xff0c;我遇到了個問題 —— 啟動、關閉服務時&#xff0c;顯示 “發生系統錯誤 5。拒絕訪問。 ” 解法1&#xff1a;在 Windows 上以管理員身份打開…

數據蒸餾:Dataset Distillation by Matching Training Trajectories 論文翻譯和理解

一、TL&#xff1b;DR 數據集蒸餾的任務是合成一個較小的數據集&#xff0c;使得在該合成數據集上訓練的模型能夠達到在完整數據集上訓練的模型相同的測試準確率&#xff0c;號稱優于coreset的選擇方法本文中&#xff0c;對于給定的網絡&#xff0c;我們在蒸餾數據上對其進行幾…