藍橋杯python編程每日刷題 day 20

題目:

給定一個長度為 N 的整數序列:A1, A2, · · · , AN。現在你有一次機會,將其中連續的 K 個數修改成任意一個相同值。請你計算如何修改可以使修改后的數列的最長不下降子序列最長,請輸出這個最長的長度。?

最長不下降子序列是指序列中的一個子序列,子序列中的每個數不小于在它之前的數。?

輸入格式

輸入第一行包含兩個整數 N 和 K。

第二行包含 N 個整數 A1, A2, · · · , AN。?

輸出格式

輸出一行包含一個整數表示答案。
(1)代碼:

?
##########################輸入部分
n, k = map(int, input().split())
arr = [int(i) for i in input().split()]
?
l = n
notk_max = 0
zd = [0 for i in range(l)]
?
######################################代碼部分
?
def bs(t,a,mid):
? ? if t:
? ? ? ? return mid <= a
? ? else:
? ? ? ? return mid >= a
?
?
def erf(t,dp,a):#找到新元素在單調棧中的位置,t為False是自左往右第一個小于a,t為True是自左往右第一個大于a
? ? if not dp:
? ? ? ? return -1
? ? l,r=0,len(dp)-1
? ? while l<r:
? ? ? ? mid=(l+r)//2
? ? ? ? if bs(t,a,dp[mid]):#縮頭
? ? ? ? ? ? l=mid+1
? ? ? ? else:
? ? ? ? ? ? r=mid
? ? return -1 if bs(t,a,dp[l]) else l
?
def zhao2(): ?# 得出以我結尾的的最長子序列
? ? global zd, notk_max, arr, k, l
? ? dp = []
? ? for i in range(l - k):
? ? ? ? wz = erf(True, dp, arr[i])
? ? ? ? if wz < 0:
? ? ? ? ? ? dp.append(arr[i])
? ? ? ? ? ? zd[i] += len(dp)
? ? ? ? else:
? ? ? ? ? ? dp[wz] = arr[i]
? ? ? ? ? ? zd[i] += (wz + 1)
? ? ? ? if zd[i] > notk_max:
? ? ? ? ? ? notk_max = zd[i]
?
?
def zhao1(): ?# 得出以我開頭的最長子序列 (不包括自己),以及k在最左側的not_kmax
? ? global zd, notk_max, arr, k, l
? ? dp = []
? ? for i in range(l - 1, k, -1):
? ? ? ? wz = erf(False, dp, arr[i])
? ? ? ? if wz < 0:
? ? ? ? ? ? dp.append(arr[i])
? ? ? ? else:
? ? ? ? ? ? dp[wz] = arr[i]
? ? ? ? #######以下為zd賦值
? ? ? ? wz = erf(False, dp, arr[i - k - 1])
? ? ? ? if wz < 0:
? ? ? ? ? ? zd[i - k - 1] = len(dp)
? ? ? ? else:
? ? ? ? ? ? zd[i - k - 1] = wz
? ? ########以下得出k覆蓋最左 最長不下降子序列長度
? ? notk_max = len(dp)
? ? wz = erf(False, dp, arr[k])
? ? if wz < 0:
? ? ? ? notk_max += 1
?
?
##############################################輸出部分
zhao1()
zhao2()
print(notk_max + k)

(1)解析:

1.在代碼中的前兩個函數為輔助判斷二次搜查

def bs(t,a,mid):
? ? if t:
? ? ? ? return mid <= a
? ? else:
? ? ? ? return mid >= a
?
?
def erf(t,dp,a):#找到新元素在單調棧中的位置,t為False是自左往右第一個小于a,t為True是自左往右第一個大于a
? ? if not dp:
? ? ? ? return -1
? ? l,r=0,len(dp)-1
? ? while l<r:
? ? ? ? mid=(l+r)//2
? ? ? ? if bs(t,a,dp[mid]):#縮頭
? ? ? ? ? ? l=mid+1
? ? ? ? else:
? ? ? ? ? ? r=mid
? ? return -1 if bs(t,a,dp[l]) else l

首先我們用t = True,來表示找到在dp這個列表中,比a大的數,首先用二分搜查,來確定比a大的屬的序列在哪里,用輔助函數bs來判斷,當t為True時,dp[mid]比a小,說明此時mid不是我們要找的序列,將l更新,直到找到我們需要的序列,最后返回l

接下來對主題函數的思想進行分析,首先將k想象為一個可以覆蓋元素的滑動窗口,自左往右滑動,k每滑動一次我們就從沒有被k覆蓋的元素中找最長不下降子序列。而k自左往右滑動完,出現過的最長的最長不下降子序列的長度+k就是我們要的答案

案例 :1,4,2,8,5 ? 。k=2 ? ? max=0

(1)k覆蓋1,4。從剩余的2,8,5找得最長不下降子序列,2,8。或2,5。max=2

(2)k覆蓋4,2。從剩余的1,8,5找得最長不下降子序列 1,8。1,5。max不變

(3)k覆蓋2,8。從剩余的1,4,5找得最長不下降子序列1,4,5。max=3

(4)k覆蓋8,5。.........max不變

最終max+k就是我們要的答案

2.zhao2的作用是將前(n-k)個數的最佳排序調整到notk——max,并解釋一下global用法,用 global 之后的變量將不只局限函數,而是放大于整體程序,在函數中變量的變值可以在函數以外的程序中使用

def zhao2(): ?# 得出以我結尾的的最長子序列
? ? global zd, notk_max, arr, k, l
? ? dp = []
? ? for i in range(l - k):(此時l為n)
? ? ? ? wz = erf(True, dp, arr[i])
? ? ? ? if wz < 0:
? ? ? ? ? ? dp.append(arr[i])
? ? ? ? ? ? zd[i] += len(dp)
? ? ? ? else:
? ? ? ? ? ? dp[wz] = arr[i]
? ? ? ? ? ? zd[i] += (wz + 1)
? ? ? ? if zd[i] > notk_max:
? ? ? ? ? ? notk_max = zd[i]

關鍵操作作用
erf(True, dp, arr[i])找到?arr[i]?在?dp?中的插入位置(第一個?>arr[i]?的數)。
dp.append(arr[i])擴展 LNDS 長度(當前數字比所有?dp?值大)。
dp[wz] = arr[i]替換?dp?中的值,保持最小末尾(優化后續可能性)。
zd[i]?賦值記錄以?arr[i]?結尾的 LNDS 長度。

第1步:處理?arr[0] = 3

  1. ?查找插入位置
    • erf(True, [], 3)?→ 空棧直接返回?-1
  2. ?更新?dp?和?zd
    • wz = -1?→ 執行?dp.append(3)?→?dp = [3]
    • zd[0] = len(dp) = 1(以?3?結尾的 LNDS 長度為 1)。
  3. ?更新全局最大值
    • notk_max = max(0, 1) = 1
iarr[i]dp 變化zdnotk_max
03[3][1,0,0,0,0]1

?第2步:處理?arr[1] = 1

  1. ?查找插入位置
    • erf(True, [3], 1)?→ 找第一個?>1?的數(3?在索引?0)。
    • 返回?0
  2. ?更新?dp?和?zd
    • wz = 0?→ 替換?dp[0] = 1?→?dp = [1]
    • zd[1] = wz + 1 = 1(以?1?結尾的 LNDS 長度為 1)。
  3. ?全局最大值
    • notk_max?保持?1(未更新)。
iarr[i]dp 變化zdnotk_max
11[1][1,1,0,0,0]1

?第3步:處理?arr[2] = 4

  1. ?查找插入位置
    • erf(True, [1], 4)?→ 找第一個?>4?的數(無,返回?-1)。
  2. ?更新?dp?和?zd
    • wz = -1?→?dp.append(4)?→?dp = [1, 4]
    • zd[2] = len(dp) = 2(以?4?結尾的 LNDS 為?[1, 4])。
  3. ?全局最大值
    • notk_max = max(1, 2) = 2
iarr[i]dp 變化zdnotk_max
24[1, 4][1,1,2,0,0]2

?第4步:處理?arr[3] = 2

  1. ?查找插入位置
    • erf(True, [1, 4], 2)?→ 找第一個?>2?的數(4?在索引?1)。
    • 返回?1
  2. ?更新?dp?和?zd
    • wz = 1?→ 替換?dp[1] = 2?→?dp = [1, 2]
    • zd[3] = wz + 1 = 2(以?2?結尾的 LNDS 為?[1, 2])。
  3. ?全局最大值
    • notk_max?保持?2
iarr[i]dp 變化zdnotk_max
32[1, 2][1,1,2,2,0]2

?3. 最終結果

  • zd = [1, 1, 2, 2, 0]
    • zd[0]=1:子序列?[3]
    • zd[1]=1:子序列?[1]
    • zd[2]=2:子序列?[1, 4]
    • zd[3]=2:子序列?[1, 2]
  • notk_max = 2(前?n-k=4?個元素的最長 LNDS 長度)。

3.接下來為后(n-k)個元素的最佳排序,首先對

從右向左掃描,計算以每個位置開頭的 LNDS 長度
?

變量作用
dp動態維護的單調棧(反向遞減),存儲 ?不同長度反向 LNDS 的最大起始值
zd[i]記錄以?arr[i]?開頭的 LNDS 長度(用于后續拼接)
notk_max全局最大值,記錄反向掃描后的最長 LNDS 長度(用于處理?k?在最左側的情況)

def zhao1(): ?# 得出以我開頭的最長子序列 (不包括自己),以及k在最左側的not_kmax
? ? global zd, notk_max, arr, k, l
? ? dp = []
? ? for i in range(l - 1, k, -1):
? ? ? ? wz = erf(False, dp, arr[i])
? ? ? ? if wz < 0:
? ? ? ? ? ? dp.append(arr[i])
? ? ? ? else:
? ? ? ? ? ? dp[wz] = arr[i]
? ? ? ? #######以下為zd賦值
? ? ? ? wz = erf(False, dp, arr[i - k - 1])
? ? ? ? if wz < 0:
? ? ? ? ? ? zd[i - k - 1] = len(dp)
? ? ? ? else:
? ? ? ? ? ? zd[i - k - 1] = wz
? ? ########以下得出k覆蓋最左 最長不下降子序列長度
? ? notk_max = len(dp)
? ? wz = erf(False, dp, arr[k])
? ? if wz < 0:
? ? ? ? notk_max += 1

wz = erf(False, dp, arr[i - k - 1])以上的代碼用于更新dp之后的代碼適用于將前(n-k)個數與后(n-k)連接起來

i - k - 1?的物理意義
  • ?**i**:當前反向遍歷的位置(從?n-1?到?k+1)。
  • ?**k**:允許修改的連續元素個數。
  • ?**i - k - 1
    ?
    表示前?n - k?個元素中,與當前反向位置?i?對應的“連接點”?**。
    這個位置是 ?前?n - k?個元素的尾部,用于檢查是否能與后?n - k?個元素的頭部拼接。
??為什么需要?i - k - 1
  • ?動態拼接的核心
    修改?k?個元素后,前?n - k?和后?n - k?部分的子序列需要通過某個值連接。
    i - k - 1?標記了前?n - k?部分的最后一個元素,用于判斷是否能與后?n - k?部分的第一個元素形成不下降序列。
?具體例子說明

輸入arr = [3, 1, 4, 2, 8]n=5k=1(修改 1 個元素)。

  • ?前?n - k = 4?個元素[3, 1, 4, 2](不修改部分)。
  • ?反向遍歷范圍i = 4, 3, 2(對應?arr[4]=8,?arr[3]=2,?arr[2]=4)。
?步驟解析:?
  1. ?**i = 4arr[4] = 8)?**:

    • i - k - 1 = 2(即?arr[2] = 4)。
    • ?作用:檢查?4(前部分的最后一個值)是否能與?8(后部分的第一個值)拼接。
      • 若?4 <= 8,則可以連接,此時?zd[2]?記錄反向 LNDS 長度。
      • 本例中?4 <= 8zd[2]?被更新為反向長度?1[8])。
  2. ?**i = 3arr[3] = 2)?**:

    • i - k - 1 = 1(即?arr[1] = 1)。
    • ?作用:檢查?1?是否能與?2?拼接。
      • 1 <= 2,可以連接,zd[1]?更新為反向長度?2[2, 8])。
  3. ?**i = 2arr[2] = 4)?**:

    • i - k - 1 = 0(即?arr[0] = 3)。
    • ?作用:檢查?3?是否能與?4?拼接。
      • 3 <= 4,可以連接,zd[0]?更新為反向長度?2[4, 8])。
?關鍵作用總結
場景i - k - 1?的作用
?反向遍歷時定位前?n - k?個元素的尾部(arr[i - k - 1]),判斷是否能與后?n - k?的頭部連接。
?更新?zd記錄前?n - k?個元素中每個位置能向后延伸的 LNDS 長度,用于后續全局拼接。
?修改?k?的靈活性通過?zd?和?notk_max?的配合,動態計算修改?k?個元素后的最優解。
??為什么這樣設計?
  • ?高效性:避免顯式枚舉所有可能的修改方案,通過反向掃描直接計算可能的最優連接點。
  • ?正確性:確保前?n - k?和后?n - k?部分的子序列能通過某個值(可能是修改后的?k?個元素)無縫拼接。
??最終結果的意義
  • ?**zd?數組**:
    • zd[i]?表示以?arr[i]?開頭或結尾的 LNDS 長度。
    • 例如?zd = [2, 2, 1, 2, 0]?表示:
      • 從?3?開頭的 LNDS 長度為 2([3, 4])。
      • 從?1?開頭的 LNDS 長度為 2([1, 2])。
  • ?**notk_max + k**:
    結合正向和反向結果,允許修改?k?個元素時的最長 LNDS(如?[1, 4, 8]?長度為 3)。

?總結

i - k - 1?是算法中 ?連接前后子序列的橋梁,通過反向掃描動態更新?zd?數組,確保能高效計算出修改?k?個元素后的最優解。其核心思想是:
?“前?n - k?的末尾必須 ≤ 后?n - k?的開頭”?,而?i - k - 1?正是找到這個關鍵連接點的索引。

4.接下來解釋如何取得最大的值

首先我們已經取得了前(n-k)個數和后(n-k)個數的最佳排序,用notk_max代替兩個值相加,再用其加上k即可
notk_max = len(dp)
? ? wz = erf(False, dp, arr[k])
? ? if wz < 0:
? ? ? ? notk_max += 1

數字示例

?輸入
  • arr = [3, 1, 4, 2, 8]n=5k=1(修改 1 個元素)。
  • ?前?n-k=4?個元素[3, 1, 4, 2]
  • ?后?n-k=4?個元素[1, 4, 2, 8](反向掃描從?i=4?到?i=1)。
?步驟解析
?**(1)?zhao2()?正向掃描后:?**
  • zd = [1, 1, 2, 2, 0](前?n-k?部分的 LNDS 長度):
    • zd[0]=1[3]
    • zd[1]=1[1]
    • zd[2]=2[1,4]
    • zd[3]=2[1,2]
?**(2)?zhao1()?反向掃描時:?**
  • ?初始化dp = [](反向單調棧),notk_max = 0
  • ?處理?i=4arr[4]=8)?
    • dp = [8](反向 LNDS 長度?len(dp)=1)。
    • i-k-1=2arr[2]=4):
      • 檢查?4 <= 8(可以拼接)。
      • notk_max = max(0, zd[2] + len(dp)) = max(0, 2+1) = 3
  • ?處理?i=3arr[3]=2)?
    • dp = [8, 2](反向 LNDS 長度?len(dp)=2)。
    • i-k-1=1arr[1]=1):
      • 檢查?1 <= 2(可以拼接)。
      • notk_max = max(3, zd[1] + len(dp)) = max(3, 1+2) = 3(未更新)。
  • ?處理?i=2arr[2]=4)?
    • dp = [8, 4](替換?2?為?4,保持遞減)。
    • i-k-1=0arr[0]=3):
      • 檢查?3 <= 4(可以拼接)。
      • notk_max = max(3, zd[0] + len(dp)) = max(3, 1+2) = 3(未更新)。
  • ?最終?notk_max = 3
    • 對應子序列?[1,4,8](前?[1]?+ 后?[4,8],修改?arr[0]=1)。
?**(3) 輸出?notk_max + k = 3 + 1 = 4**:
  • 實際最長 LNDS 為?[1,1,4,8](修改?arr[0]=1,長度 4)。

?關鍵點總結

操作數學意義示例中的作用
zd[i](正向)前?n-k?部分以?arr[i]?結尾的 LNDS 長度。zd[2]=2?表示?[1,4]
len(dp)(反向)后?n-k?部分以?arr[i]?開頭的 LNDS 長度。dp=[8,4]?表示?[4,8]
notk_max?更新取?zd[i-k-1] + len(dp)?的最大值,確保前后部分能拼接。max(3, 2+1)=3[1,4,8])。
+ k修改的?k?個元素作為橋梁,連接前后子序列。長度?3 + 1 = 4[1,1,4,8])。

?為什么這樣能覆蓋所有情況?

  • ?不修改?k?的情況
    notk_max?已經記錄了前/后部分的最長拼接(如?[1,4,8]?長度 3)。
  • ?修改?k?的情況
    通過?+ k?直接擴展長度(如修改?arr[0]=1,得到?[1,1,4,8]?長度 4)。
  • ?數學保證
    最長 LNDS 必然由以下兩種之一構成:
    1. 不修改?k?時的?notk_max
    2. 修改?k?時的?notk_max + k(因為修改的?k?個元素可以完美連接前后部分)。

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

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

相關文章

游戲引擎學習第185天

回顧并計劃今天的內容 我們完成了開始整理這些數據的工作&#xff0c;但我們還沒有機會真正去查看這些數據的具體內容&#xff0c;因為我們只是剛剛開始了數據整理的基本工作。我們收集了大量的信息&#xff0c;但到目前為止&#xff0c;仍然沒有足夠的可視化工具來幫助我們理…

協議學習——1 NCDSSB

上次面試NCDssb, 今天特意學習下&#xff0c;除了物理層的定義&#xff0c;其實再很多物理層的書上都有&#xff0c;主要是講下RRC曾怎么玩的。 配置在專用BWP上配置&#xff0c;切實BWP的專用部分

pom.xml與.yml,java配置參數傳遞

pom.xml與 .yml java配置參數傳遞 在Java項目中&#xff0c;通過 pom.xml 和 .yml 文件&#xff08;如 application.yml&#xff09;傳遞變量通常涉及 構建時&#xff08;Maven&#xff09;和 運行時&#xff08;Spring Boot&#xff09;兩個階段的配置。以下是具體的實現方法&…

【解決】:VSCode 中識別不到電腦中的已安裝的 Git

# 問題 自己電腦中明明已經安裝了 git &#xff0c;但在 vscode 中確識別不到。——————————&#xff08;問題一樣就看下去&#xff0c;不一樣早早潤。省流&#xff01;&#xff01;&#xff01;&#xff01;&#x1f680;&#xff09; # 【第一步】首先要確認你電腦中…

gogs私服搭建

一.介紹&#xff1a; gogs是一個用Go語言開發的自助Git服務&#xff0c;目標是簡單、快速搭建Git服務&#xff0c; 支持多種平臺&#xff0c;包括Linux、Windows等。它類似于GitHub&#xff0c;但更輕量&#xff0c;適合個人或小團隊使用&#xff0c; 在簡化git服務搭建流程的…

數位和相等

問題描述 如果一個正整數轉化成二進制與轉換成八進制后所有數位的數字之和相等&#xff0c;則稱為數位和相等的數。 前幾個數位和相等的正整數為 11, 88, 99, 6464&#xff0c;…… 請問第 2323 個數位和相等的正整數是多少&#xff1f; import java.util.Scanner; public …

Java-servlet(九)前端會話,會話管理與Cookie和HttpSession全解析

Java-servlet&#xff08;九&#xff09;前端會話&#xff0c;會話管理與Cookie和HttpSession全解析 前言一、什么是會話二、會話管理1. 隱藏的表單域2. 網址重寫3. 使用 Cookie3.1 Cookie 的工作流程3.2 Java 中的方法&#xff0c;Cookie 類 三、Cookie 的實現1. 創建 Cookie2…

uniapp開發中store的基本用法和模塊化詳解

在 UniApp 開發中,狀態管理是非常重要的一部分,尤其是在復雜的應用場景下。Vuex 是 Vue.js 的官方狀態管理庫,可以幫助開發者集中管理應用的狀態數據。UniApp 作為基于 Vue.js 的跨平臺開發框架,也支持使用 Vuex 進行狀態管理。 以下是關于 Vuex 在 UniApp 中的詳細用法介…

手寫數據庫MYDB(一):項目啟動效果展示和環境配置問題說明

1.項目概況 這個項目實際上就是一個輪子項目&#xff0c;現在我看到的這個市面上面比較火的就是這個首先RPC&#xff0c;好多的機構都在搞這個&#xff0c;還有這個消息隊列之類的&#xff0c;但是這個是基于MYSQL的&#xff0c;我們知道這個MYSQL在八股盛宴里面是重點考察對象…

基于Spring Boot的電動車智能充電服務平臺的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

【AI學習】人工神經網絡

1,人工神經網絡(Artificial Neural Networks,ANNs,連接模型,Connection Model) 模仿動物神經網絡行為特征(突觸聯接的結構),進行分布式并行信息處理的算法數學模型。依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。 2,前饋神…

場館預約小程序的設計與實現

摘 要 時代在進步&#xff0c;人們對日常生活質量的要求不再受限于衣食住行。現代人不僅想要一個健康的身體&#xff0c;還想擁有一身宛如黃金比例的身材。但是人們平常除了上下班和上下學的時間&#xff0c;其余空余時間寥寥無幾&#xff0c;所以我們需要用體育場館預約來節省…

筆記:純真IP庫

最近需要使用到ip解析成對應的地域&#xff0c;查找了一些資料&#xff0c;發現純真ip庫&#xff0c;這個比較好用&#xff0c;而且社區版可以獲得免費授權。 純真ip庫官網地址&#xff1a;https://www.cz88.net/ python版本git地址&#xff1a;https://github.com/tagphi/cz…

骨密度以及骨密度測量,測量方案,意義;提高;實現方案

骨密度及骨密度測量 骨密度&#xff08;Bone Mineral Density, BMD&#xff09; 是指骨骼單位體積或單位面積內礦物質&#xff08;主要是鈣和磷&#xff09;的含量&#xff0c;是評估骨骼強度的重要指標。骨密度降低可能導致骨質疏松&#xff0c;增加骨折風險。 簡單分析效果&…

MySQL 體系結構與存儲引擎

目錄 一、MySQL 體系結構 1. 連接層 (Connection Layer) 2. 服務層 (Server Layer) 3. 存儲引擎層 (Storage Engine Layer) 二、MySQL 核心存儲引擎比較 1. InnoDB (默認引擎) 2. MyISAM 3. Memory (HEAP) 4. 其他存儲引擎 三、InnoDB 存儲引擎深度解析 1. 核心架構組…

知識就是力量——物聯網應用技術

基礎知識篇 一、常用電子元器件1——USB Type C 接口引腳詳解特點接口定義作用主從設備關于6P引腳的簡介 2——常用通信芯片CH343P概述特點引腳定義 CH340概述特點封裝 3——蜂鳴器概述類型驅動電路原文鏈接 二、常用封裝介紹貼片電阻電容封裝介紹封裝尺寸與功率關系&#xff1…

vue復習1~45

1.關于vue 要理解記憶規則&#xff0c;可以到官網上去找 vue的兩種使用方式 vue核心包開發 場景&#xff1a;局部模塊改造vue核心包 & vue插件 工程化開發 場景&#xff1a;整站開發 2.創建vue實例 構建用戶頁面->創建vue實例初始化渲染 學習階段用開發版本 3.插值…

Netty和Project Reactor如何共同處理大數據流?

在處理大數據流時&#xff0c;Netty和Project Reactor可以協同工作&#xff0c;充分利用Netty的高性能非阻塞IO和Project Reactor的響應式編程模型&#xff0c;實現高效的數據處理和背壓控制。以下是如何共同處理大數據流的詳細步驟和示例代碼&#xff1a; ### 1. Netty和Proj…

【Nginx】location匹配模式與規則

文章目錄 一、環境二、匹配模式1. 精準模式2. 前綴模式&#xff08;不繼續匹配正則&#xff09;3. 前綴模式&#xff08;繼續匹配正則&#xff09;4. 正則模式&#xff08;大小寫敏感&#xff09;5. 正則模式&#xff08;大小寫不敏感&#xff09; 三、需要注意的地方1. 命中多…

JavaScript基礎-定時器

在Web開發中&#xff0c;有時我們需要延遲執行某些操作或者定期重復執行某段代碼。JavaScript提供了強大的定時器功能&#xff0c;使得這些需求變得簡單易行。本文將詳細介紹JavaScript中的定時器&#xff0c;包括setTimeout和setInterval函數的使用方法、注意事項以及一些實際…