【Python語法基礎學習筆記】競賽常用標準庫

前言

此系列筆記是撥珠自己的學習筆記,自用為主,學習建議移步其他大佬的專門教程。

math庫

Python 的?math?庫是標準庫之一,提供了大量數學運算相關的函數,適用于基礎數學計算、科學計算等場景。下面詳細介紹其使用方法及常用功能:

1. 庫的調用

math?是 Python 內置標準庫,無需額外安裝,直接通過?import?語句導入即可使用:

import math  # 導入整個庫
# 或只導入需要的函數(推薦,減少內存占用)
from math import ceil, floor, factorial, comb, pow, sqrt, gcd, sin, cos, log, exp

2. 常用功能及示例

(1)向上取整與向下取整
  • math.ceil(x):向上取整,返回大于等于?x?的最小整數
  • math.floor(x):向下取整,返回小于等于?x?的最大整數
import mathprint(math.ceil(3.2))   # 輸出:4
print(math.ceil(-2.8))  # 輸出:-2(向上取整靠近0)
print(math.floor(3.8))  # 輸出:3
print(math.floor(-2.1)) # 輸出:-3(向下取整遠離0)
(2)階乘
  • math.factorial(n):返回非負整數?n?的階乘(n! = 1×2×...×n),n=0?時返回 1
import mathprint(math.factorial(5))  # 輸出:120(5! = 5×4×3×2×1)
print(math.factorial(0))  # 輸出:1(0! 定義為1)
(3)組合數
  • math.comb(n, k):返回從?n?個元素中選擇?k?個元素的組合數(C(n,k) = n!/(k!·(n-k)!)),要求?n ≥ k ≥ 0
import mathprint(math.comb(5, 2))  # 輸出:10(從5個中選2個的組合數)
print(math.comb(10, 3)) # 輸出:120
(4)指數與對數
  • math.exp(x):返回自然指數?e^xe≈2.718
  • math.log(x[, base]):返回以?base?為底?x?的對數,默認底為?e(自然對數)
  • math.log10(x):返回以 10 為底?x?的對數(常用對數)
import mathprint(math.exp(1))       # 輸出:2.71828...(e^1)
print(math.log(math.e))  # 輸出:1.0(自然對數 ln(e))
print(math.log(8, 2))    # 輸出:3.0(以2為底8的對數)
print(math.log10(100))   # 輸出:2.0(lg(100))
(5)冪運算與開方
  • math.pow(x, y):返回?x?的?y?次冪(x^y),與內置?**?運算符類似,但返回浮點數
  • math.sqrt(x):返回?x?的平方根(√x),要求?x ≥ 0
import mathprint(math.pow(2, 3))  # 輸出:8.0(2^3)
print(math.sqrt(25))   # 輸出:5.0(√25)
print(math.sqrt(2))    # 輸出:1.4142...(√2)

(6)最大公約數(GCD)

math.gcd(a, b):返回兩個非負整數?a?和?b?的最大公約數,a?和?b?不能同時為 0

import mathprint(math.gcd(12, 18))  # 輸出:6(12和18的最大公約數)
print(math.gcd(7, 5))    # 輸出:1(7和5互質)

(7)三角函數

math?庫的三角函數默認使用弧度制,需注意角度與弧度的轉換(math.radians(x)?可將角度轉為弧度):

  • 正弦:math.sin(x)
  • 余弦:math.cos(x)
  • 正切:math.tan(x)
  • 反三角函數:math.asin(x)math.acos(x)math.atan(x)
import math# 計算30度的正弦值(先轉弧度)
angle = 30
radian = math.radians(angle)
print(math.sin(radian))  # 輸出:0.5(sin(30°)=0.5)print(math.cos(math.pi)) # 輸出:-1.0(cos(π) = -1)

collections庫

counter:計數器

基本用法

(1)導入?Counter

from collections import Counter

(2)創建?Counter?對象

可以傳入可迭代對象(如列表、元組、字符串等)來初始化:

# 統計列表中元素的出現次數
nums = [1, 2, 3, 2, 1, 3, 3, 4]
count = Counter(nums)
print(count)  # 輸出:Counter({3: 3, 1: 2, 2: 2, 4: 1})# 統計字符串中字符的出現次數
s = "hello world"
count_char = Counter(s)
print(count_char)  # 輸出:Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

(3)獲取元素的計數

通過鍵訪問,類似字典:

count = Counter([1, 2, 3, 2, 1, 3, 3, 4])
print(count[3])  # 輸出:3(數字3出現了3次)
print(count[5])  # 輸出:0(不存在的元素默認計數為0)

counter可以直接統計列表中元素出現的次數

回顧
輸入一段文本(一組數據),統計每個字符出現次數

#讀入文本
s = input()#統計數據
C = {}
for i in s:C[i] = C.get(i, 0) + 1#打印結果
for x, y in C.items():print("{} : {}".format(x, y))

常用函數

1. 設初值(初始化方式)

除了傳入可迭代對象,Counter?還支持多種初始化方式:

  • 空初始化:創建空的?Counter,后續通過鍵值對添加

    from collections import Counter
    c = Counter()  # 空Counter
    c['a'] = 2
    c['b'] = 3
    print(c)  # Counter({'b': 3, 'a': 2})
    
  • 字典初始化:通過鍵值對字典直接初始化

    c = Counter({'a': 5, 'b': 2, 'c': 3})
    print(c)  # Counter({'a': 5, 'b': 2, 'c': 3})
    
  • 關鍵字參數初始化:通過關鍵字參數指定計數

    c = Counter(a=3, b=1, c=2)
    print(c)  # Counter({'a': 3, 'c': 2, 'b': 1})
    

2. 核心方法詳解

(1)most_common(k)

  • 功能:返回包含前?k?個出現次數最多元素的列表,每個元素是?(元素, 計數)?的元組。

  • 若?k?大于元素總數,返回所有元素;若?k=None,返回所有元素(按計數降序)。

  • 若多個元素計數相同,順序不固定(取決于插入順序)。

    c = Counter('abracadabra')  # 統計字符串中字符
    print(c.most_common(3))  # 前3個最常見元素
    # 輸出:[('a', 5), ('b', 2), ('r', 2)]print(c.most_common())   # 所有元素按計數排序
    # 輸出:[('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1)]
    

(2)elements()

  • 功能:返回一個迭代器,包含所有元素,每個元素重復的次數等于其計數(計數≤0 的元素會被忽略)。此方法可應用于把counter變回一個列表。

  • 元素順序與插入順序一致,適合將計數結果還原為原始元素序列。

    c = Counter(a=3, b=2, c=0, d=-1)
    elements = list(c.elements())  # 轉換為列表
    print(elements)  # ['a', 'a', 'a', 'b', 'b'](忽略c和d,因計數≤0)
    

(3)clear()

  • 功能:清空?Counter?中的所有元素和計數,使其變為空對象。

    c = Counter(a=2, b=3)
    c.clear()
    print(c)  # Counter()(空對象)
    

3. 與字典類似的功能

Counter?是?dict?的子類,因此支持大多數字典的操作:

  • 訪問 / 修改計數:通過鍵直接操作,不存在的鍵默認計數為 0

    c = Counter(a=2, b=3)
    print(c['a'])  # 2(訪問計數)
    c['a'] += 1    # 修改計數
    print(c['a'])  # 3
    print(c['c'])  # 0(不存在的鍵默認返回0)
    
  • 獲取鍵 / 值 / 鍵值對keys()values()items()

    c = Counter(a=2, b=3)
    print(list(c.keys()))    # ['a', 'b']
    print(list(c.values()))  # [2, 3]
    print(list(c.items()))   # [('a', 2), ('b', 3)]
    
  • 刪除元素del?關鍵字

    c = Counter(a=2, b=3)
    del c['a']  # 刪除鍵'a'
    print(c)    # Counter({'b': 3})
    
  • 檢查鍵是否存在in?關鍵字

    c = Counter(a=2)
    print('a' in c)  # True
    print('b' in c)  # False
    

4. 數學運算

Counter?支持多種集合類數學運算,方便對兩個計數結果進行合并、求差等操作(僅保留計數為正的元素):

  • 加法(+:合并兩個?Counter,相同元素的計數相加

    c1 = Counter(a=2, b=3)
    c2 = Counter(a=1, c=4)
    print(c1 + c2)  # Counter({'c': 4, 'b': 3, 'a': 3})
    
  • 減法(-:求差集,相同元素的計數相減(結果只保留計數 > 0 的元素)

    c1 = Counter(a=5, b=3)
    c2 = Counter(a=2, b=1, c=4)
    print(c1 - c2)  # Counter({'a': 3, 'b': 2})(5-2=3,3-1=2,忽略c)
    
  • 交集(&:取兩個?Counter?中相同元素的最小計數

    c1 = Counter(a=3, b=2, c=1)
    c2 = Counter(a=2, b=4, d=5)
    print(c1 & c2)  # Counter({'a': 2, 'b': 2})(取a的min(3,2),b的min(2,4))
    
  • 并集(|:取兩個?Counter?中相同元素的最大計數

    c1 = Counter(a=3, b=2, c=1)
    c2 = Counter(a=2, b=4, d=5)
    print(c1 | c2)  # Counter({'b': 4, 'd': 5, 'a': 3, 'c': 1})(取a的max(3,2),b的max(2,4))
    

  • 負數(-c:返回計數取負的?Counter(但通常結合其他運算使用)

    c = Counter(a=2, b=3)
    print(-c)  # Counter({'a': -2, 'b': -3})
    

deque雙端隊列(與列表非常類似)

方法 / 屬性語法格式功能描述示例代碼及輸出
clear()deque.clear()清空雙端隊列中的所有元素,使其變為空隊列(無返回值)。d = deque([1,2,3]); d.clear(); print(d)?→?deque([])
copy()deque.copy()復制當前雙端隊列,返回一個淺拷貝(新隊列與原隊列元素相同,但修改新隊列不影響原隊列)。d = deque([1,2]); d2 = d.copy(); d2.append(3); print(d)?→?deque([1,2])
count(x)deque.count(x)統計元素?x?在雙端隊列中出現的次數,返回整數。d = deque([1,2,2,3,2]); print(d.count(2))?→?3
index(x)deque.index(x[, start[, end]])返回元素?x?在隊列中首次出現的索引(可指定搜索范圍?[start, end)),不存在則拋?ValueErrord = deque([1,3,2,3]); print(d.index(3))?→?1d.index(3, 2)?→?3
reverse()deque.reverse()原地反轉雙端隊列中的元素順序(無返回值)。d = deque([1,2,3,4]); d.reverse(); print(d)?→?deque([4,3,2,1])
rotate(n=1)deque.rotate(n)向右旋轉?n?步(n?為負數則向左旋轉),旋轉 1 步即最后一個元素移到開頭。d = deque([1,2,3,4]); d.rotate(2); print(d)?→?deque([3,4,1,2])
maxlendeque.maxlen屬性,返回隊列最大長度(初始化時指定,不可修改),未指定則為?None(可無限增長)。d = deque([1,2], maxlen=5); print(d.maxlen)?→?5

關鍵特性補充:

  • maxlen?是初始化時的固定屬性,例如?deque([1,2], maxlen=3)?創建的隊列最多容納 3 個元素,新增元素時會自動移除另一端的舊元素。
  • reverse()?和?rotate()?均為原地操作,直接修改原隊列,不會返回新隊列。
  • copy()?為淺拷貝,若隊列中包含可變對象(如列表),修改拷貝隊列中的可變對象會影響原隊列。

defaultdict:有默認值的字典

即使一開始key不存在也不會報錯

1. 基本用法

(1)導入?defaultdict
from collections import defaultdict
(2)創建?defaultdict?對象

需要指定一個默認值工廠函數(如?intliststr?等),當訪問不存在的鍵時,會自動調用該函數生成默認值。

# 示例1:默認值為0(用int作為工廠函數)
d = defaultdict(int)
d['a'] += 1  # 鍵'a'不存在時,自動初始化為0,再+1
print(d['a'])  # 輸出:1
print(d['b'])  # 鍵'b'不存在,返回默認值0# 示例2:默認值為空列表(用list作為工廠函數)
d = defaultdict(list)
d[' fruits'].append('apple')  # 鍵'fruits'自動初始化為空列表,再添加元素
print(d['fruits'])  # 輸出:['apple']
print(d['vegetables'])  # 鍵不存在,返回空列表[]

2. 常用默認值類型

工廠函數默認值適用場景
int0計數統計(如統計元素出現次數)
list[]分組存儲(如將元素按 key 分組到列表)
dict{}嵌套字典(如多層級鍵值存儲)
setset()去重存儲(如按 key 存儲不重復元素)
str''字符串拼接(如按 key 累積字符串)

3. 與普通字典的區別

  • 普通字典訪問不存在的鍵會報錯:

    normal_dict = {}
    print(normal_dict['key'])  # 拋出 KeyError: 'key'
    
  • defaultdict?會自動生成默認值:

    d = defaultdict(str)
    print(d['key'])  # 輸出空字符串 ''(無報錯)
    

4. 典型應用場景

(1)統計元素出現次數
from collections import defaultdictwords = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
count = defaultdict(int)  # 默認值0for word in words:count[word] += 1  # 直接累加,無需判斷鍵是否存在print(dict(count))  # 轉換為普通字典:{'apple': 3, 'banana': 2, 'orange': 1}
(2)按 key 分組元素
from collections import defaultdictpairs = [('fruit', 'apple'), ('vegetable', 'carrot'), ('fruit', 'banana')]
groups = defaultdict(list)  # 默認值為空列表for key, value in pairs:groups[key].append(value)  # 自動按key分組print(dict(groups))  # {'fruit': ['apple', 'banana'], 'vegetable': ['carrot']}

heapq堆

heapq?是 Python 標準庫中用于實現堆(heap)?操作的模塊,主要提供了基于最小堆的一系列功能,可用于實現優先級隊列等場景。堆是一種特殊的完全二叉樹,其中最小堆的父節點值始終小于等于子節點值。

在這里插入圖片描述

上面的叫父親節點,左邊的叫左兒子,右邊的叫右兒子,二叉樹一個節點最多有兩叉,而且一定要兩個兒子都填滿才會往下填。

1. 基本用法

(1)導入模塊
import heapq
(2)核心操作
  • 創建堆:通過?heapq.heapify(list)?將列表原地轉換為最小堆(時間復雜度 O (n))。

    nums = [3, 1, 4, 2]
    heapq.heapify(nums)  # 轉換為最小堆
    print(nums)  # 輸出:[1, 2, 4, 3](堆的內部存儲結構)
    
  • 添加元素heapq.heappush(heap, item)?向堆中添加元素,并維持堆結構。

    heap = []
    heapq.heappush(heap, 3)
    heapq.heappush(heap, 1)
    heapq.heappush(heap, 2)
    print(heap)  # 輸出:[1, 3, 2](始終保持最小元素在堆頂)
    
  • 彈出最小元素heapq.heappop(heap)?移除并返回堆中最小的元素(堆頂),自動調整堆結構。

    print(heapq.heappop(heap))  # 輸出:1
    print(heap)  # 輸出:[2, 3](剩余元素重新構成最小堆)
    

2. 常用功能

  • 獲取最小元素(不彈出):直接訪問堆的第一個元素?heap[0]

    print(heap[0])  # 輸出:2(當前堆頂元素)
    
  • 合并多個有序序列heapq.merge(*iterables)?合并多個有序迭代器,返回一個生成器(需手動轉換為列表)。

    list1 = [1, 3, 5]
    list2 = [2, 4, 6]
    merged = heapq.merge(list1, list2)
    print(list(merged))  # 輸出:[1, 2, 3, 4, 5, 6]
    

  • 獲取前 n 個最大 / 小元素

    • heapq.nlargest(n, iterable):返回迭代器中最大的 n 個元素。
    • heapq.nsmallest(n, iterable):返回迭代器中最小的 n 個元素。
    nums = [5, 2, 9, 1, 5, 6]
    print(heapq.nlargest(3, nums))  # 輸出:[9, 6, 5]
    print(heapq.nsmallest(3, nums)) # 輸出:[1, 2, 5]

堆其實就是一個特殊的列表,它最常用的功能就是找到列表中的最小值。

functool函數工具中的partial

functools.partial?是 Python 中?functools?模塊提供的一個實用工具,用于固定函數的部分參數,生成一個新的簡化版函數(偏函數)。它可以減少函數調用時需要傳入的參數數量,提高代碼復用性。

1. 基本用法

(1)導入?partial
from functools import partial
(2)核心功能:固定參數

假設有一個需要多個參數的函數,使用?partial?可以固定其中一部分參數,生成一個只需傳入剩余參數的新函數。

def multiply(x, y):return x * y# 固定第一個參數 x=2,生成新函數 double
double = partial(multiply, 2)
print(double(3))  # 等價于 multiply(2, 3) → 輸出 6
print(double(5))  # 等價于 multiply(2, 5) → 輸出 10# 固定第二個參數 y=3,生成新函數 triple
triple = partial(multiply, y=3)
print(triple(4))  # 等價于 multiply(4, 3) → 輸出 12

2. 適用場景

  • 簡化重復調用:當函數需要頻繁以相同參數調用時,用?partial?固定重復參數,減少代碼冗余。

    import requests
    from functools import partial# 固定請求方法為 GET,生成簡化的 get 請求函數
    get = partial(requests.request, 'GET')
    # 調用時只需傳入 URL
    response = get('https://www.example.com')
    
  • 適配函數參數:當需要將一個多參數函數作為回調函數(通常要求參數更少)時,用?partial?適配參數數量。

    from functools import partialdef greet(greeting, name):print(f"{greeting}, {name}!")# 固定 greeting="Hello",生成適配單參數的回調函數
    hello_greet = partial(greet, "Hello")
    # 回調場景中只需傳入 name
    names = ["Alice", "Bob"]
    for name in names:hello_greet(name)  # 輸出:Hello, Alice! / Hello, Bob!
    

  1. 位置固定:按原函數參數順序固定值(不寫參數名),新參數自動補在后面。
    例:def add(x,y,z): return x+y+z
    add10 = partial(add, 10)?→ 固定?x=10,調用?add10(2,3)?等價于?add(10,2,3)

  2. 參數固定:用?參數名=值?固定特定參數(不依賴順序),新參數傳未固定的部分。
    例:add_y20 = partial(add, y=20)?→ 固定?y=20,調用?add_y20(1,3)?等價于?add(1,20,3)

3. 關鍵特性

  • partial?生成的新函數可以像原函數一樣被調用,且支持傳入額外參數(會補充在固定參數之后)。
  • 若固定參數時指定了關鍵字參數(如?partial(func, y=3)),調用新函數時不能再用位置參數重復傳入,避免沖突。

intertools迭代器工具

itertools?是 Python 用于高效循環的工具庫,提供了三類常用迭代器:

1. 無限迭代器

可無限生成元素,需手動終止(如用?break),常用 3 個:

迭代器功能示例
count(start, step)從?start?開始,按?step?遞增count(2, 2)?→ 2,4,6,8...
cycle(iterable)循環重復可迭代對象中的元素cycle([1,2])?→ 1,2,1,2...
repeat(val, n)重復?val?,n?為次數(缺省則無限)repeat(3, 2)?→ 3,3

2. 有限迭代器

處理有限可迭代對象,返回新的迭代器,常用:

迭代器功能示例
chain(*iterables)拼接多個可迭代對象chain([1,2], (3,4))?→ 1,2,3,4
accumulate(iterable, func)累積計算(默認求和)

accumulate([1,2,3])?→ 1,3,6

accumulate在前綴和的使用中有大用

itertools.accumulate?是用于累積計算的迭代器,它對可迭代對象(如列表、元組)中的元素進行連續操作,返回每一步的累積結果,默認是累加,也可自定義運算邏輯。

基本用法

1. 語法

itertools.accumulate(iterable, func=None)
  • iterable:需要處理的可迭代對象(如列表、range 等)

  • func:可選參數,指定累積運算的函數(默認是?operator.add,即加法)

2. 默認行為(累加)

不指定?func?時,默認對元素依次求和:

from itertools import accumulatenums = [1, 2, 3, 4]
result = accumulate(nums)
print(list(result))  # 輸出:[1, 3, 6, 10]
# 計算過程:1 → 1+2=3 → 3+3=6 → 6+4=10

3. 自定義運算(通過?func?參數)

指定?func?可以實現其他累積邏輯(如乘法、最大值等):

from itertools import accumulate
import operator# 累乘(用 operator.mul)
nums = [1, 2, 3, 4]
product = accumulate(nums, func=operator.mul)
print(list(product))  # 輸出:[1, 2, 6, 24]
# 計算過程:1 → 1×2=2 → 2×3=6 → 6×4=24# 累積取最大值(用 max 函數)
nums = [3, 1, 4, 2]
max_accum = accumulate(nums, func=max)
print(list(max_accum))  # 輸出:[3, 3, 4, 4]
# 計算過程:3 → max(3,1)=3 → max(3,4)=4 → max(4,2)=4

4. 處理非數字類型

只要?func?支持對應類型的運算,也可處理其他數據(如字符串拼接):

from itertools import accumulatewords = ["a", "b", "c"]
str_accum = accumulate(words, func=lambda x, y: x + y)
print(list(str_accum))  # 輸出:['a', 'ab', 'abc']

關鍵特點

  • 惰性計算:只在需要時生成結果,節省內存(尤其適合大數據)。

  • 長度不變:返回的迭代器長度與原可迭代對象一致(第?i?個元素是前?i+1?個元素的累積結果)。

  • 依賴順序:累積結果與元素順序相關(如?[1,2]?和?[2,1]?的累加結果不同)。

accumulate?非常適合需要 “逐步記錄中間結果” 的場景,如累計求和、累計乘積、歷史最大值追蹤等,避免手動寫循環累加的冗余代碼。

3. 排列組合迭代器

生成元素的排列或組合,適用于數學計算:

迭代器功能示例
product(*iterables, repeat=1)笛卡爾積(元素組合)product([1,2], ['a'])?→ (1,'a'),(2,'a')
permutations(iterable, r)從?iterable?選?r?個元素的排列(有序)permutations([1,2,3], 2)?→ (1,2),(1,3),(2,1)...
combinations(iterable, r)從?iterable?選?r?個元素的組合(無序)combinations([1,2,3], 2)?→ (1,2),(1,3),(2,3)
combinations_with_replacement(iterable, r)允許重復元素的組合combinations_with_replacement([1,2], 2)?→ (1,1),(1,2),(2,2)

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

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

相關文章

我的項目我做主:Focalboard+cpolar讓團隊協作擺脫平臺依賴

文章目錄前言1. 使用Docker本地部署Focalboard1.1 在Windows中安裝 Docker1.2 使用Docker部署Focalboard2. 安裝Cpolar內網穿透工具3. 實現公網訪問Focalboard4. 固定Focalboard公網地址前言 “項目管理軟件又漲價了!“小團隊負責人小林發愁——剛習慣操作邏輯&…

【3D 入門-4】trimesh 極速上手之 3D Mesh 數據結構解析(Vertices / Faces)

【3D入門-指標篇上】3D 網格重建評估指標詳解與通俗比喻【3D入門-指標篇下】 3D重建評估指標對比-附實現代碼【3D 入門-3】常見 3D 格式對比,.glb / .obj / .stl / .ply Mesh 數據結構解析 1. Vertices(頂點) original_vertices mesh_ful…

無需服務器,免費、快捷的一鍵部署前端 vue React代碼--PinMe

作為前端的開發,有時候想部署一個項目真的是很“受氣”,要不就是找運維,或者后端,看別人的時間,或者走流程。 現在,有這么一個神器PinMe, 以前部署項目:自己買服務器?域名、 SSL、N…

【LeetCode_26】刪除有序數組中的重復項

刷爆LeetCode系列LeetCode26題:github地址前言題目描述題目與思路分析代碼實現算法代碼優化LeetCode26題: github地址 有夢想的電信狗 前言 本文介紹用C實現leetCode第26題題目鏈接:https://leetcode-cn.com/problems/remove-duplicates-…

CMake構建學習筆記23-SQLite庫的構建

1. 構建思路 在前文中構建了大量的庫包程序(參看CMake構建學習筆記-目錄)之后,可以總結一下在Windows下使用腳本構建程序的辦法: 使用CMake構建。這是目前最通用最流行的構建方式,大部分C/C程序都在逐漸向這個方向轉…

Watt Toolkit下載安裝并加速GitHub

一、下載 官方地址:(Steam++官網) - Watt Toolkit Gitee下載地址:https://gitee.com/rmbgame/SteamTools/releases/tag/3.0.0-rc.16

DevOps運維與開發一體化及Kubernetes運維核心詳解

前言: 在云原生時代,技術的融合與流程的重構已成為驅動業務創新的核心引擎。Kubernetes作為容器編排的事實標準,其穩定的運維能力是業務應用的基石;而DevOps所倡導的開發與運維一體化文化,則是實現快速交付和價值流動的…

HQX SELinux 權限問題分析與解決

Google自Android 5.0起強制實施的SELinux安全子系統,通過最小權限原則顯著提升了系統安全性,但這也導致開發過程中頻繁出現權限拒絕問題。值得注意的是,即便設備已獲取root權限,SELinux的強制訪問控制機制仍會限制部分敏感操作。 …

SpringBoot集成Kafka實戰應用

目錄 使用Kafka-Client實現消息收發 引入依賴 發送端: 消費端: SpringBoot集成 引入maven依賴 消費端 在上一篇我們深度解析了Kafka的運行操作原理以及集群消息消費機制等,請點擊下方鏈接獲取 Kafka消息隊列深度解析與實戰指南 本篇我…

單元測試總結2

1、重載和重寫的區別01、定義不同:重載是在同一個類中定義多個方法名相同但參數列表不同的方法;重寫是子類對父類中同名同參數列表的方法進行重新實現02、范圍不同:重載發生在同一個類中,重寫發生在子類和父類中03、參數要求不同&…

Wi-Fi技術——MAC特性

有線和無線網絡在數據鏈路層的特性存在差異,具體為: CSMA/CD 用于有線網絡,通過檢測和處理沖突來維持網絡的穩定性。CSMA/CA 用于無線網絡,強調沖突的預防,以應對無線信道共享的挑戰 1 有線網 CSMA/CD 有線網 CSMA/…

OpenHarmony 分布式感知中樞深度拆解:MSDP 框架從 0 到 1 的實戰指南

MSDP設備狀態感知框架技術開發文檔 1. 系統概述 1.1 框架定位 MSDP (Multi-Sensor Data Processing) 設備狀態感知框架是OpenHarmony系統中負責設備狀態識別和分發的核心服務,基于多傳感器融合技術,為系統應用提供設備狀態感知能力。 1.2 核心功能 靜止狀態識別:基于加速…

圖像 OSD層數據 顯示--OSD LOGO單色黑色顯示,按區域大小申請MMZ內存的優缺點分析

在監控攝像機、嵌入式顯示設備等場景中,OSD(On-Screen Display,屏幕顯示)LOGO 常需單色黑色顯示,且按區域大小申請 MMZ(Multi-Media Zone,多媒體專用內存)內存,該方案的優缺點需結合硬件資源、顯示效率、功能適配性等維度綜合分析,具體如下: 一、核心優勢:針對性優…

徐真妍最新雜志封面大片曝光,探索鏡頭下的多面魅力

近日,青年演員徐真妍拍攝的一組大片正式曝光。這組以 “森林系” 為主題的大片,登上時尚雜志《慵懶LAZY DAYS》8-9月刊封面。融合了優雅與現代先鋒感,展現了徐真妍甜美溫婉的表現力。鏡頭前的她,在多種風格間自如切換,…

廣度優先搜索(BFS, Breadth-First Search)

好的,我給你講 廣度優先搜索(BFS, Breadth-First Search),并配一個直觀例子。1?? 什么是廣度優先廣度優先搜索的特點:按層訪問:先訪問根節點,然后訪問它的直接子節點,再訪問子節點…

GD32入門到實戰22--紅外NEC通信協議

ir_drv.c紅外傳輸協議地位在前&#xff0c;所以我們可以這樣保存數據到數組假使接收到1就>>1再|0x80&#xff0c;如果接收到0就>>1新建紅外驅動層代碼ir_drv.c#include <stdio.h> #include "gd32f30x.h" #include <stdbool.h> static voi…

zkML-JOLT——更快的ZK隱私機器學習:Sumcheck +Lookup

1. 引言 ICME團隊開源的zkML項目&#xff1a; https://github.com/ICME-Lab/jolt-atlas&#xff08;Rust&#xff09; zkML-JOLT&#xff08;JOLT ‘Atlas’&#xff09;構建在a16z Crypto團隊的JOLT研究和實現基礎上&#xff0c;其性能比其他zkML項目快了3到7倍。 a16z Cr…

【大模型記憶-Mem0詳解-2】系統架構

概述 Mem0 實現了雙架構系統&#xff0c;通過兩種主要部署模型為 AI 應用提供智能內存能力&#xff1a; 托管平臺 &#xff1a;通過 MemoryClient 和 AsyncMemoryClient 類訪問的托管服務開源 &#xff1a;以 Memory 類為中心的自托管組件&#xff0c;具有可插拔提供程序 此架構…

[Java]PTA:jmu-Java-01入門-取數字浮點數

本題目要求讀入若干以回車結束的字符串表示的整數或者浮點數&#xff0c;然后將每個數中的所有數字全部加總求和。輸入格式:每行一個整數或者浮點數。保證在浮點數范圍內。輸出格式:整數或者浮點數中的數字之和。題目保證和在整型范圍內。輸入樣例:-123.01 234輸出樣例:7 9代碼…

FFmpeg音視頻處理解決方案

核心組件&#xff1a; ffmpeg&#xff1a;主要的命令行工具&#xff0c;用于轉碼、轉換格式等 ffprobe&#xff1a;用于分析多媒體文件信息的工具 ffplay&#xff1a;簡單的媒體播放器 主要功能&#xff1a; ? 格式轉換&#xff08;轉碼&#xff09; ? 視頻裁剪、合并 ? 調整…