Python中內置的數據結構類型詳析(內置數據容器)

目錄

  • 1. 元組(Tuple)??
  • 2. 列表(List)?
  • 3. 字典(Dict)
  • 4. 集合(Set)??
  • 5. 字符串(Str)
  • 6. 隊列(Queue)與棧(Stack)?
    • 6.1. 數據訪問方式
      • 6.1.1 隊列(Queue)
      • 6.1.2 棧(Stack)
    • 6.2. 應用場景
    • 6.3. 實現方式
    • 6.4. 內存結構
    • 6.5. 性能
  • 總結:數據結構對比表

1. 元組(Tuple)??

元組是一種??不可變??的有序序列,用于存儲固定數據。適用于需要數據保護或哈希的場景(如字典的鍵)。

# 1、創建元組
# 可以使用圓括號 () 或者內置的 tuple() 函數來創建元組
empty_tuple = ()  		# 空元組
single_element = (1,)  	# 單元素元組(需逗號)
multi_elements = (1, "a", 3.14)# 使用 tuple() 函數創建元組
from_list = tuple([4, 5, 6]) 	 # 從列表創建元組
from_string = tuple('abc') 		 # 從字符串創建元組 ,輸出('a', 'b', 'c')# 2、雙向訪問與切片
# 元組支持切片操作,用于獲取元組的子集
# 切片操作使用 [start:stop:step] 的語法
print(multi_elements[0])       # 輸出: 1 
print(multi_elements[-1])      # 輸出: 3.14
print(multi_elements[1:3])     # 輸出: ('a', 3.14)  
print(multi_elements[0::2])    # 輸出:(1, 3.14)  # 3、不可變性示例
try:multi_elements[0] = 10  
except TypeError as e:print(f"錯誤: {e}")  # 輸出: 元組不可修改  # 4、常用方法
# 元組只有兩個內置方法:count() 和 index()
# count():用于返回指定元素在元組中出現的次數
# index():用于返回指定元素在元組中第一次出現的索引,如果元素不存在則引發 ValueError
count = multi_elements.count(1)      # 統計元素在元組中出現次數  
index = multi_elements.index("a") 	 # 查找元素索引  
print(count, index)  				 # 輸出: 1 1  # 5、元組的解包
# 可以將元組中的元素解包到多個變量中
my_tuple = (10, 20, 30)
a, b, c = my_tuple
print(a)  # 輸出10
print(b)  # 輸出20
print(c)  # 輸出30# 6、元組作為函數返回值
# 函數可以返回一個元組,方便同時返回多個值
def get_name_and_age():return 'Alice', 25name, age = get_name_and_age()
print(name)
print(age)# 7、元組的遍歷
my_tuple = (1, 2, 3, 4, 5)
for element in my_tuple:print(element)

2. 列表(List)?

列表是??可變??的有序集合,支持動態增刪改,適合存儲動態數據。與元組不同,列表的元素可以被修改、添加或刪除。

# 1、創建列表
my_list = [1, "a", 3.14]  
from_range = list(range(3))  # [0, 1, 2]  # 2、訪問與切片
my_list = [10, 20, 30, 40, 50]
first_element = my_list[0]		# 訪問第一個元素
last_element = my_list[-1]		#訪問最后一個元素
subset = my_list[1:3]			# 獲取從索引 1 到索引 3(不包含)的元素
every_second = my_list[0::2]	# 獲取從索引 0 到末尾,步長為 2 的元素# 3、增刪改操作
# 可以使用 append()、extend() 和 insert() 方法來添加元素
# 可以使用 remove()、pop() 和 del 語句來刪除元素
my_list = [10, 10, 20, 30, 40, 50]my_list.append(4)          # 末尾添加   
my_list.extend([5, 6])	   # 擴展列表,將另一個可迭代對象的元素添加到列表末尾
my_list.insert(1, 15)	   # 在指定索引位置插入一個元素my_list[1] = 20            # 修改元素  
my_list.remove(20)		   # 刪除指定值的第一個匹配項
popped_element = my_list.pop(1)		# 刪除指定索引位置的元素,并返回該元素
del my_list[0]             # 刪除索引0的元素
print(my_list)             # [20, 30, 40, 50, 4, 5, 6]# 4、切片與遍歷
my_list = [10, 10, 20, 30, 40, 50]
print(my_list[::2])        # 輸出: [10, 20, 40]  
for idx, val in enumerate(my_list):print(f"索引{idx}: {val}")  # 5、常用方法
# 列表還有 count()、index()、sort()、reverse() 等方法
my_list = [1, 2, 2, 3, 2]
count_2 = my_list.count(2)		# 統計元素 2 出現的次數
index_3 = my_list.index(3)		# 查找元素 3 第一次出現的索引
my_list.sort()					# 對列表進行排序
my_list.reverse()				# 反轉列表
print(count_2)	# 3
print(index_3)	# 3
print(my_list) 	# [3, 2, 2, 2, 1]# 6、列表的遍歷
my_list = [1, 2, 3, 4, 5]
for element in my_list:print(element)# 7、列表推導式
# 創建一個包含 1 到 5 的平方的列表
# 列表推導式是一種簡潔的創建列表的方式
squares = [i ** 2 for i in range(1, 6)]
print(squares)	# [1, 4, 9, 16, 25]

3. 字典(Dict)

字典(dict)是一種無序、可變且以鍵值對形式存儲數據的數據結構。字典是??鍵值對??的無序集合(Python 3.7+ 有序),支持快速查詢。

# 1、創建字典
# 可以使用花括號 {} 或者內置的 dict() 函數來創建字典
empty_dict = {}  # 空字典
simple_dict = {'name': 'Alice', 'age': 25}  # 包含鍵值對的字典
from_tuples = dict([('city', 'New York'), ('country', 'USA')])
from_kwargs = dict(name='Bob', age=30)# 2、訪問字典元素
# 可以通過鍵來訪問字典中的值。如果鍵不存在,直接訪問會引發 KeyError
# 解決辦法在下段落,此處先不談
my_dict = {'name': 'Alice', 'age': 25}		
name = my_dict['name']		# 通過鍵訪問值
city = my_dict.get('city')	# 使用 get() 方法訪問值,如果鍵不存在,返回默認值(這里是 None)# 3、增刪查改
my_dict = {'name': 'Alice', 'age': 25}	
my_dict['age'] = 26					# 修改已有鍵的值
my_dict['city'] = 'New York'		# 添加新的鍵值對
print(my_dict)						# {'name': 'Alice', 'age': 26, 'city': 'New York'}
del my_dict['city']			# 使用 del 語句刪除指定鍵的鍵值對
age = my_dict.pop('age')	# 使用 pop() 方法刪除指定鍵的鍵值對,并返回該鍵對應的值
print(my_dict)				# {'name': 'Alice'}# 4、遍歷鍵值
for key, value in person.items():print(f"{key}: {value}")  # 5、常用方法
# keys():返回一個包含字典所有鍵的視圖對象。
# values():返回一個包含字典所有值的視圖對象。
# items():返回一個包含字典所有鍵值對的視圖對象。
# update():將另一個字典的鍵值對更新到當前字典中
my_dict = {'name': 'Alice', 'age': 25}
keys = my_dict.keys()			# 獲取所有鍵
values = my_dict.values()		# 獲取所有值
items = my_dict.items()			# 獲取所有鍵值對
new_dict = {'city': 'Bei Jing'}	# 更新字典
my_dict.update(new_dict)
print(keys)						# dict_keys(['name', 'age', 'city'])
print(values)					# dict_values(['Alice', 25, 'Bei Jing'])
print(list(values))				# ['Alice', 25, 'Bei Jing']
print(items)					# dict_items([('name', 'Alice'), ('age', 25), ('city', 'Bei Jing')])
print(my_dict)					# {'name': 'Alice', 'age': 25, 'city': 'Bei Jing'}# 6、字典推導式
# 創建一個包含 1 到 5 的平方的字典
squares_dict = {i: i ** 2 for i in range(1, 6)}
print(squares_dict)		# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

在 Python 中,字典(dict)是一種非常常用的數據結構,用于存儲鍵值對。當嘗試訪問一個不存在的鍵時,直接使用 dict[key] 會導致 KeyError。為了避免這種情況,可以使用以下幾種方法:

  1. 使用 get() 方法
    get() 方法是字典的一個內置方法,它允許你安全地訪問字典中的值。如果鍵不存在,get() 方法會返回一個默認值(通常是 None),而不是拋出錯誤。
my_dict = {"a": 1, "b": 2}# 使用 get() 方法訪問鍵
value = my_dict.get("a")  # 返回 1
print(value)# 如果鍵不存在,返回默認值 None
value = my_dict.get("c")  # 返回 None
print(value)# 也可以指定默認值
value = my_dict.get("c", "默認值")  # 返回 "默認值"
print(value)
  1. 使用 defaultdict
    defaultdict 是 collections 模塊中的一個類,它繼承自普通的字典,但允許你指定一個默認值。當你訪問一個不存在的鍵時,defaultdict 會自動創建一個默認值,并將其與該鍵關聯起來。
from collections import defaultdict# 創建一個 defaultdict,指定默認值為 list
anagram_dict = defaultdict(list)# 添加一些數據
anagram_dict["a"].append("apple")
anagram_dict["b"].append("banana")# 訪問一個不存在的鍵
print(anagram_dict["c"])  # 輸出:[]
  1. 使用 setdefault() 方法
    setdefault() 方法也是字典的一個內置方法,它類似于 get(),但會在鍵不存在時插入一個默認值。
my_dict = {"a": 1, "b": 2}# 使用 setdefault() 方法訪問鍵
value = my_dict.setdefault("a", "默認值")  # 返回 1
print(value)# 如果鍵不存在,插入默認值
value = my_dict.setdefault("c", "默認值")  # 返回 "默認值"
print(value)print(my_dict)  # 輸出:{'a': 1, 'b': 2, 'c': '默認值'}

4. 集合(Set)??

集合(set)是一種無序且唯一的數據結構,它不允許有重復的元素,常用于去重、成員檢測和集合運算(如并集、交集、差集等)。

# 1、創建集合
str = set()					# set() 是創建空集合的唯一方式,str = {}是空字典
my_set = {1, 2, 2, 3}       # 自動去重 → {1, 2, 3}  
from_list = set([3, 4, 5])  
fruits = {'apple', 'banana', 'cherry'}# 2、訪問集合元素
# 由于集合是無序的,不能通過索引來訪問元素。但可以使用 for 循環遍歷集合中的元素,或者使用 in 關鍵字檢查元素是否存在于集合中```python
fruits = {'apple', 'banana', 'cherry'}	# 遍歷集合
for fruit in fruits:print(fruit)# 檢查元素是否存在
is_apple_in = 'apple' in fruits
print(is_apple_in)		# True# 3、添加元素
# 可以使用 add() 方法向集合中添加單個元素,使用 update() 方法添加多個元素(可以是列表、元組、集合等可迭代對象)
fruits = {'apple', 'banana'}
# 添加單個元素
fruits.add('cherry')
# 添加多個元素
fruits.update(['date', 'elderberry'])
print(fruits)		# {'apple', 'banana', 'cherry', 'elderberry', 'date'}# 4、刪除元素
# 可以使用 remove()、discard() 和 pop() 方法來刪除集合中的元素
# remove():如果元素存在,將其從集合中移除;若元素不存在,會引發 KeyError
# discard():如果元素存在,將其從集合中移除;若元素不存在,不會引發錯誤
# pop():隨機移除并返回集合中的一個元素,若集合為空,會引發 KeyError
fruits = {'apple', 'banana', 'cherry'}# 使用 remove() 方法刪除元素
fruits.remove('apple')# 使用 discard() 方法刪除元素
fruits.discard('banana')# 使用 pop() 方法刪除元素
popped_fruit = fruits.pop()# 5、集合的常用操作
## 5.1并集:可以使用 | 運算符或 union() 方法實現
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用 | 運算符求并集
union_set1 = set1 | set2# 使用 union() 方法求并集
union_set2 = set1.union(set2)print(union_set1)	# {1, 2, 3, 4, 5}
print(union_set2)	# {1, 2, 3, 4, 5}## 5.2交集:可以使用 & 運算符或 intersection() 方法實現
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用 & 運算符求交集
intersection_set1 = set1 & set2# 使用 intersection() 方法求交集
intersection_set2 = set1.intersection(set2)print(intersection_set1)	# {3}
print(intersection_set2)	# {3}## 5.3差集:可以使用 - 運算符或 difference() 方法實現
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用 - 運算符求差集
difference_set1 = set1 - set2# 使用 difference() 方法求差集
difference_set2 = set1.difference(set2)print(difference_set1)	# {1, 2}
print(difference_set2)	# {1, 2}## 5.4對稱差集:可以使用 ^ 運算符或 symmetric_difference() 方法實現
set1 = {1, 2, 3}
set2 = {3, 4, 5}# 使用 ^ 運算符求對稱差集
symmetric_difference_set1 = set1 ^ set2# 使用 symmetric_difference() 方法求對稱差集
symmetric_difference_set2 = set1.symmetric_difference(set2)print(symmetric_difference_set1)	# {1, 2, 4, 5}
print(symmetric_difference_set2)	# {1, 2, 4, 5}# 6、集合的長度
# 可以使用 len() 函數獲取集合中元素的數量
fruits = {'apple', 'banana', 'cherry'}
length = len(fruits)
print(length)	# 3# 7、清空集合
# 可以使用 clear() 方法清空集合中的所有元素
fruits = {'apple', 'banana', 'cherry'}
fruits.clear()
print(fruits)	# set()

5. 字符串(Str)

字符串是??不可變??的字符序列,支持文本處理和格式化。

# 創建字符串
s = "Hello, 世界!"  
multiline = """多行  
字符串"""  # 切片與操作
print(s[0:5])              # 輸出: Hello  
print(s.upper())           # 轉為大寫  # 常用方法
words = s.split(",")       # 分割 → ['Hello', ' 世界!']  
joined = '-'.join(words)  # 合并 → "Hello-世界!"  # 格式化
name = "Alice"  
print(f"Name: {name}")     # 輸出: Name: Alice  

6. 隊列(Queue)與棧(Stack)?

??隊列(FIFO)??:用 deque 實現。
??棧(LIFO)??:用列表的 append 和 pop 實現。
隊列(Queue)和棧(Stack)是兩種常見的數據結構,它們在數據存儲和訪問方式上有很大的區別。以下是它們的主要區別:

6.1. 數據訪問方式

6.1.1 隊列(Queue)

特點:先進先出(FIFO,First In First Out)。最早進入隊列的元素會最先被移除。
操作:
入隊(Enqueue):在隊列的尾部添加一個元素。
出隊(Dequeue):從隊列的頭部移除一個元素。
查看隊首元素(Peek):查看隊列頭部的元素,但不移除它。
在這里插入圖片描述

6.1.2 棧(Stack)

特點:后進先出(LIFO,Last In First Out)。最后進入棧的元素會最先被移除。
操作:
入棧(Push):在棧的頂部添加一個元素。
出棧(Pop):從棧的頂部移除一個元素。
查看棧頂元素(Peek):查看棧頂的元素,但不移除它。
在這里插入圖片描述

# 隊列示例
from collections import deque  
queue = deque([1, 2, 3])  
queue.append(4)            # 入隊  
print(queue.popleft())     # 出隊 → 1  # 棧示例
stack = []  
stack.append(10)          # 入棧  
print(stack.pop())         # 出棧 → 10  

6.2. 應用場景

隊列(Queue)
任務調度:操作系統中的任務調度,按照任務到達的順序執行。
消息隊列:在多線程或多進程環境中,用于傳遞消息。
打印隊列:打印機按照任務提交的順序打印文檔。
廣度優先搜索(BFS):在圖的遍歷中,隊列用于存儲待訪問的節點。

棧(Stack)
函數調用:程序運行時,函數調用的上下文(如局部變量、返回地址等)存儲在棧中。
表達式求值:計算算術表達式的值,如逆波蘭表達式。
括號匹配:檢查括號是否正確匹配。
深度優先搜索(DFS):在圖的遍歷中,棧用于存儲待訪問的節點。
撤銷操作(Undo):在軟件中實現撤銷功能,如文本編輯器中的撤銷操作。

6.3. 實現方式

隊列(Queue)
Python 實現:可以使用 collections.deque,它是一個雙端隊列,支持高效的頭部和尾部操作。

from collections import dequequeue = deque()
queue.append(1)  # 入隊
queue.append(2)
queue.append(3)
print(queue.popleft())  # 出隊,輸出 1

棧(Stack)
Python 實現:可以使用普通的列表(list),利用 append() 和 pop() 方法來模擬棧的操作。

stack = []
stack.append(1)  # 入棧
stack.append(2)
stack.append(3)
print(stack.pop())  # 出棧,輸出 3

6.4. 內存結構

隊列(Queue)
隊列的元素順序是固定的,新元素總是添加到尾部,舊元素總是從頭部移除。隊列的頭部和尾部可以動態變化。
隊列通常需要維護兩個指針(頭部指針和尾部指針)來跟蹤元素的位置。
棧(Stack)
棧的元素順序是
動態的
,新元素總是添加到頂部,舊元素也總是從頂部移除。棧的頂部位置會不斷變化。
棧通常只需要維護**一個指針(棧頂指針)**來跟蹤元素的位置。

6.5. 性能

隊列(Queue)
使用 collections.deque 時,隊列的頭部和尾部操作(入隊、出隊)的時間復雜度為 O(1)。
棧(Stack)
使用列表(list)時,棧的入棧和出棧操作的時間復雜度為 O(1)。

總結:數據結構對比表

在這里插入圖片描述

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

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

相關文章

Socket多路復用網絡編程應用總結

Socket多路復用網絡編程應用總結 概述 ? 傳統I/O模型的局限性:傳統阻塞式I/O模型每次僅在一個文件描述符(File Descriptor, FD)上執行I/O操作,導致程序需等待單個操作完成,無法高效處理多連接場景(如高并…

安卓開發提示Android Gradle plugin錯誤

The project is using an incompatible version (AGP 8.9.1) of the Android Gradle plugin. Latest supported version is AGP 8.8.0-alpha05 See Android Studio & AGP compatibility options. 改模塊級 build.gradle(如果有獨立配置):…

【C++初階】--- vector容器功能模擬實現

1.什么是vector? 在 C 里,std::vector 是標準模板庫(STL)提供的一個非常實用的容器類,它可以看作是動態數組 2.成員變量 iterator _start;:指向 vector 中第一個元素的指針。 iterator _finish;&#x…

分布式鎖在秒殺場景中的Python實現與CAP權衡

目錄 一、分布式鎖的前世今生 二、秒殺系統的 “硬核” 挑戰 三、Python 實現分布式鎖的 “實戰演練” Redis 實現:快準狠 ZooKeeper 實現:穩如老狗 數據庫實現:老實本分 四、CAP 理論的 “三角戀” 五、性能優化的 “錦囊妙計” 鎖粒度控制:粗細有道 超時機制:別…

企業級開發SpringBoost玩轉Elasticsearch

案例 Spring Boot 提供了 spring-data-elasticsearch 模塊,可以方便地集成 Elasticsearch。 下面我們將詳細講解如何在 Spring Boot 中使用 Elasticsearch 8,并提供示例代碼。 1. 添加依賴: 首先,需要在 pom.xml 文件中添加 spring-data-e…

磐石云智能語音客服系統——技術革新引領服務新體驗

在人工智能技術飛速發展的今天,企業對于智能化客戶服務的需求日益增長。磐石云智能語音客服系統憑借其前沿技術架構與深度場景適配能力,正在重新定義人機交互的邊界。本文將深入解析該系統如何通過技術創新實現服務效率與體驗的雙重突破。 一、意圖識別…

OpenGL學習筆記(assimp封裝、深度測試、模板測試)

目錄 模型加載Assimp網格模型及導入 深度測試深度值精度深度緩沖的可視化深度沖突 模板測試物體輪廓 GitHub主頁:https://github.com/sdpyy1 OpenGL學習倉庫:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdpyy1/CppL…

通過AWS EKS 生成并部署容器化應用

今天給大家分享一個實戰例子,如何在EKS上創建容器化應用并通過ALB來發布。先介紹一下幾個基本概念: IAM, OpenID Connect (OIDC) 2014 年,AWS Identity and Access Management 增加了使用 OpenID Connect (OIDC) 的聯合身份支持。此功能允許…

入侵檢測snort功能概述

1. 數據包嗅探與日志記錄 網絡流量監控:實時捕獲和分析網絡數據包(支持以太網、無線等)。 日志記錄:將數據包以二進制格式(pcap)或文本格式存儲,供后續分析。 2. 協議分析與解碼 深度協議解析…

【Easylive】定時任務-每日數據統計和臨時文件清理

【Easylive】項目常見問題解答(自用&持續更新中…) 匯總版 這個定時任務系統主要包含兩個核心功能:每日數據統計和臨時文件清理。下面我將詳細解析這兩個定時任務的實現邏輯和技術要點: Component Slf4j public class SysTas…

藍橋杯 15g

班級活動 問題描述 小明的老師準備組織一次班級活動。班上一共有 nn 名 (nn 為偶數) 同學,老師想把所有的同學進行分組,每兩名同學一組。為了公平,老師給每名同學隨機分配了一個 nn 以內的正整數作為 idid,第 ii 名同學的 idid 為…

如何使用AI輔助開發R語言

R語言是一種用于統計計算和圖形生成的編程語言和軟件環境,很多學術研究和數據分析的科學家和統計學家更青睞于它。但對與沒有編程基礎的初學者而言,R語言也是有一定使用難度的。不過現在有了通義靈碼輔助編寫R語言代碼,我們完全可以用自然語言…

CISCO組建RIP V2路由網絡

1.實驗準備: 2.具體配置: 2.1根據分配好的IP地址配置靜態IP: 2.1.1PC配置: PC0: PC1: PC2: 2.1.2路由器配置: R0: Router>en Router#conf t Enter configuration…

React + TipTap 富文本編輯器 實現消息列表展示,類似Slack,Deepseek等對話框功能

經過幾天折騰再折騰,弄出來了,弄出來了!!! 消息展示 在位編輯功能。 兩個tiptap實例1個用來展示 消息列表,一個用來在位編輯消息。 tiptap靈活富文本編輯器,拓展性太好了!!! !!! 關鍵點&#x…

Ubuntu搭建Pytorch環境

Ubuntu搭建Pytorch環境 例如:第一章 Python 機器學習入門之pandas的使用 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 Ubuntu搭建Pytorch環境前言一、Anaconda二、Cuda1.安裝流程2、環境變量&#…

Sping Cloud配置和注冊中心

1.Nacos實現原理了解嗎? Nacos是注冊中心,主要是幫助我們管理服務列表。Nacos的實現原理大概可以從下面三個方面來講: 服務注冊與發現:當一個服務實例啟動時,它會向Nacos Server發送注冊請求,將自己的信息…

C++筆記之父類引用是否可以訪問到子類特有的屬性?

C++筆記之父類引用是否可以訪問到子類特有的屬性? code review! 參考筆記 1.C++筆記之在基類和派生類之間進行類型轉換的所有方法 文章目錄 C++筆記之父類引用是否可以訪問到子類特有的屬性?1.主要原因2.示例代碼3.說明4.如何訪問子類特有的屬性5.注意事項6.總結在 C++ 中,…

JavaScript逆向工程:如何判斷對稱加密與非對稱加密

在現代Web應用安全分析中,加密算法的識別是JavaScript逆向工程的關鍵環節。本文將詳細介紹如何在逆向工程中判斷JavaScript代碼使用的是對稱加密還是非對稱加密。 一、加密算法基礎概念 1. 對稱加密 (Symmetric Encryption) 特點:加密和解密使用相同的…

物理備份工具 BRM vs gs_probackup

什么是BRM 上一篇文章講了openGauss的物理備份工具gs_probackup,今天來說說BRM備份工具。 BRM備份恢復工具全稱為:Backup and Recovery Manager,是MogDB基于opengauss的備份工具 gs_probackup 做了一些封裝和優化,面向MogDB數據庫實現備份和…

問問lua怎么寫DeepSeek,,,,,

很坦白說,這十年,我幾乎沒辦法從互聯網找到這個這樣的代碼,互聯網引擎找不到,我也沒有很大的“追求”要傳承,或者要宣傳什么;直到DeepSeek的出現 兄弟,Deepseek現在已經比你更了解你樓下的超市…