BeautifulSoup解析HTML

  • 需要解析HTML源碼里面的內容,包含特定標簽和屬性
<div class="file-source"><table><tr><th align="right">Line</th><th align="right">Branch</th><th align="right">Exec</th><th align="left">Source</th></tr><tr class="source-line"><td class="lineno"><a id="l1" href="#l1">1</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="c1">// RunAdder.cpp</span></td></tr><tr class="source-line"><td class="lineno"><a id="l2" href="#l2">2</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l3" href="#l3">3</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l4" href="#l4">4</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;unistd.h&gt;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l5" href="#l5">5</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l6" href="#l6">6</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#ifdef GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l7" href="#l7">7</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="k">extern</span><span class="w"> </span><span class="s">&quot;C&quot;</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">__gcov_flush</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l8" href="#l8">8</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="k">extern</span><span class="w"> </span><span class="s">&quot;C&quot;</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">__gcov_dump</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l9" href="#l9">9</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="k">extern</span><span class="w"> </span><span class="s">&quot;C&quot;</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">__gcov_reset</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l10" href="#l10">10</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#endif </span><span class="c1">// TESTPLUS_GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l11" href="#l11">11</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l12" href="#l12">12</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;./include/Adder.h&quot;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l13" href="#l13">13</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l14" href="#l14">14</a></td><td class="linebranch"></td><td class="linecount coveredLine">1</td><td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span></td></tr><tr class="source-line"><td class="lineno"><a id="l15" href="#l15">15</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l16" href="#l16">16</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></td></tr><tr class="source-line"><td class="lineno"><a id="l17" href="#l17">17</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="p">{</span></td></tr><tr class="source-line"><td class="lineno"><a id="l18" href="#l18">18</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l19" href="#l19">19</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">       </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;dump</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l20" href="#l20">20</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l21" href="#l21">21</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">Adder</span><span class="w"> </span><span class="n">adder</span><span class="p">;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l22" href="#l22">22</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l23" href="#l23">23</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l24" href="#l24">24</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l25" href="#l25">25</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l26" href="#l26">26</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l27" href="#l27">27</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l28" href="#l28">28</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l29" href="#l29">29</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span></td></tr><tr class="source-line"><td class="lineno"><a id="l30" href="#l30">30</a></td><td class="linebranch"></td><td class="linecount coveredLine">1</td><td class="src coveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l31" href="#l31">31</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l32" href="#l32">32</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="c1">// reference https://github.com/mongodb/mongo/blob/3adaac9be00bb0800184e0c27503c3d29c8e577e/src/mongo/util/quick_exit.cpp#L72</span></td></tr><tr class="source-line"><td class="lineno"><a id="l33" href="#l33">33</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="c1">// exit </span></td></tr><tr class="source-line"><td class="lineno"><a id="l34" href="#l34">34</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#ifdef TESTPLUS_GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l35" href="#l35">35</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#if (defined(__clang__) &amp;&amp; __clang_major__ &gt;= 12) || __GNUC__ &gt;= 11</span></td></tr><tr class="source-line"><td class="lineno"><a id="l36" href="#l36">36</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">0/2</summary><div class="linebranchContents"><div class="notTakenBranch">&cross; Branch 1 not taken.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">    </span><span class="n">__gcov_dump</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l37" href="#l37">37</a></td><td class="linebranch"></td><td class="linecount uncoveredLine">&cross;</td><td class="src uncoveredLine"><span class="w">    </span><span class="n">__gcov_reset</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l38" href="#l38">38</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#else</span></td></tr><tr class="source-line"><td class="lineno"><a id="l39" href="#l39">39</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="n">__gcov_flush</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l40" href="#l40">40</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#endif</span></td></tr><tr class="source-line"><td class="lineno"><a id="l41" href="#l41">41</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#endif </span><span class="c1">// TESTPLUS_GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l42" href="#l42">42</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l43" href="#l43">43</a></td><td class="linebranch"></td><td class="linecount uncoveredLine">&cross;</td><td class="src uncoveredLine"><span class="w">        </span><span class="n">sleep</span><span class="p">(</span><span class="mi">61</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l44" href="#l44">44</a></td><td class="linebranch"></td><td class="linecount uncoveredLine">&cross;</td><td class="src uncoveredLine"><span class="w">    </span><span class="p">}</span></td></tr><tr class="source-line"><td class="lineno"><a id="l45" href="#l45">45</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l46" href="#l46">46</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l47" href="#l47">47</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="p">}</span></td></tr><tr class="source-line"><td class="lineno"><a id="l48" href="#l48">48</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr></table>
</div>
  • BeautifulSoup

https://blog.csdn.net/naer_chongya/article/details/130633043
https://blog.51cto.com/u_13673090/2466801

安裝

pip install BeautifulSoup4

demo.py解析Gcov工具生成html文件,主要思路是先觀察HTML中我們需要提取信息數據的特征,找到特征之后利用BeautifulSoup的各種方法來遍歷和查詢HTML文檔。
具體的使用方法前面兩個鏈接介紹的較為詳細。

from bs4 import BeautifulSoup
import json
import requestsheaders = {'accept': 'application/json','Content-Type': 'application/json',
}json_data = {'project_id': 'mecha','report_id': 314,'file_name': 'Game/AchievementMoudle/AchievementData.cpp',
}response = requests.post('http://10.11.00.00:0000/api/get/file', headers=headers, json=json_data)file_data = json.loads(response.text).get('data')src_code = []with open(r'D:/test/html_test/out.RunAdder.cpp.a9f32ea8f9bca6ced5ffba7e0bd94313.html') as f:# soup = BeautifulSoup(f.read(), 'html.parser')  # 讀文件方式soup = BeautifulSoup(file_data, 'html.parser')  # 指定數據"str"# for child in soup.children:#     print(child)# 查找 標簽為tr class為source-line的數據links = soup.find_all("tr", "source-line")# print(links)for link in links:# url = link.text# print(url.strip())src = link.find("td", "src")line_no = link.find("td", "lineno")line_count_coveredLine = link.find("td", "linecount coveredLine")line_count_partial_coveredLine = link.find("td", "linecount partialCoveredLine")line_count_uncoveredLine = link.find("td", "linecount uncoveredLine")src_code.append({"src": src.text.strip(),"line_no": int(line_no.text.strip()),"line_count_coveredLine": line_count_coveredLine.text.strip()if line_count_coveredLine else None,"line_count_partial_coveredLine": line_count_partial_coveredLine.text.strip()if line_count_partial_coveredLine else None,"line_count_uncoveredLine": line_count_uncoveredLine.text.strip()if line_count_uncoveredLine else None})print(src.text.strip())
function_name = "main"
function_line_no = 0
stack_list = []
function_end_line_no = 0for s in src_code:if function_name in s["src"]:function_line_no = s["line_no"]break# 括號匹配來找到指定函數的起始行號
for s in src_code:if s["line_no"] >= function_line_no:if "{" in s["src"]:stack_list.append("{")if "}" in s["src"]:stack_list.pop()if len(stack_list) == 0 and s["line_no"] != function_line_no:function_end_line_no = s["line_no"]breakprint(function_line_no)
print(function_end_line_no)cover_count = 0
uncover_count = 0if function_end_line_no:for s in src_code:if function_line_no <= s["line_no"] <= function_end_line_no:if s["line_count_coveredLine"] or s["line_count_partial_coveredLine"]:cover_count += 1if s["line_count_uncoveredLine"]:uncover_count += 1print(cover_count)
print(uncover_count)

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

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

相關文章

箭頭函數的應用場景

箭頭函數是 ES6 中新增的一種函數書寫方式&#xff0c;通常用于簡潔地定義匿名函數。它的應用場景包括但不限于以下幾個方面&#xff1a; 1.簡化回調函數&#xff1a;箭頭函數可以讓回調函數的書寫更加簡潔&#xff0c;減少代碼量。 // 傳統函數形式 setTimeout(function() {…

麒麟系統安裝Redis

一、背景 如前文&#xff08;《麒麟系統安裝MySQL》&#xff09;所述。 二、下載Redis源碼 官方未提供麒麟系統的Redis軟件&#xff0c;須下載源碼編譯。 下載地址&#xff1a;https://redis.io/downloads 6.2.14版本源碼下載地址&#xff1a;https://download.redis.io/re…

Linux系統中管理文件和目錄權限的詳細說明,部署服務器遇到文件權限的問題,就想著記錄一下

Linux 文件權限基礎 在Linux中&#xff0c;每個文件和目錄都關聯著三個類別的權限&#xff1a; 所有者&#xff08;Owner&#xff09;&#xff1a;通常是創建文件或目錄的用戶。組&#xff08;Group&#xff09;&#xff1a;與文件或目錄關聯的用戶組。組成員共享文件的組權限…

【linux】socket通信代碼解析

目錄 一、Linux中Socket編程的基本步驟 1.1 創建Socket 1.2 綁定Socket 2.3 監聽Socket(僅服務器端) 2.4 接受連接(僅服務器端) 2.5 連接Socket(僅客戶端) 2.6 發送和接收數據 2.7. 關閉Socket 二、Linux中Socket編程具體實現 2.1 TCP服務器 2.2 TCP客戶端 2…

生成隨機函數f3,利用f3生成f18(python)

一、題目 給定一個完全隨機函數f3。能夠完全隨機產生1~3之間任意一個自然數。現在要構造一個f18&#xff0c;讓其能隨機產生1~18之間任意一個自然數&#xff0c;要求寫出f18的函數&#xff0c;另外要測試是否符合預期&#xff0c;f18要用f3 二、代碼 歡迎大家給我更優解&…

mac 安裝mysql啟動報錯 ERROR!The server quit without update PID file

發現問題&#xff1a; mac安裝mysql初次啟動報錯&#xff1a; 一般出現這種問題&#xff0c;大多是文件夾權限&#xff0c;或者以前安裝mysql卸載不干凈導致。首先需要先確定問題出在哪&#xff1f;根據提示我們可以打開mysql的啟動目錄&#xff0c;查看啟動日志。 問題解決&a…

項目如何整合sentinel

1、添加依賴 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifact…

2.x86游戲實戰-跨進程讀取血量

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 接下來會寫C/C代碼&#xff0c;C/C代碼不是很難&#xff0c;然后為了快速掌握逆向這個技能&#xff0c;我…

python--pickle函數的用法(超詳細)

pickle是Python中的一個標準庫&#xff0c;它提供了一種簡單的方法來序列化和反序列化Python對象&#xff0c;以便可以將它們保存到文件或通過網絡傳輸。pickle模塊可以將Python對象轉換為一種可以存儲或傳輸的格式&#xff0c;然后可以通過pickle模塊將其恢復為原始對象。 下…

不用再找了,這是大模型實踐最全的總結

隨著ChatGPT的迅速出圈&#xff0c;加速了大模型時代的變革。對于以Transformer、MOE結構為代表的大模型來說&#xff0c;傳統的單機單卡訓練模式肯定不能滿足上千&#xff08;萬&#xff09;億級參數的模型訓練&#xff0c;這時候我們就需要解決內存墻和通信墻等一系列問題&am…

對于mysql 故障的定位和排查

故障表現 他的執行時間超過規定的限制&#xff08;比如1000ms&#xff09;CPU使用率高大量業務失敗&#xff0c;數據連接異常執行sql越來越慢&#xff0c;失敗越來越多 解決方案 定位 應急 故障恢復 定位 查詢慢sql的日志查看mysql 的performance schena&#xff08;里面…

flask-socket的實踐

1.長連接和短連接的由來 1&#xff09;TCP在真正的讀寫操作之前&#xff0c;server與client之間必須建立一個連接&#xff0c; 當讀寫操作完成后&#xff0c;雙方不再需要這個連接時它們可以釋放這個連接&#xff0c; 連接的建立通過三次握手&#xff0c;釋放則需要四次握手…

用Roofline模型去分析pytorch和Triton算子

用Roofline模型去分析pytorch和Triton算子 1.參考鏈接2.測試環境3.安裝相關依賴4.鎖頻5.獲取理論算力6.創建測試腳本7.運行測試程序生成Roofline圖8.NVIDIA Nsight Compute生成Roofline9.效果圖A.nn.LinearB.Triton實現 本文演示了如何用Roofline模型去分析pytorch和Triton算子…

如何快速判斷IP被墻

IP被墻是指IP部分地區或者運營商無法被正常進行訪問的一個情況。 被墻的原因有很多種不一一列舉&#xff0c;由于被墻的時間短的為按周按月計算&#xff0c;時間長的則為按年計算&#xff0c;所以一般這種情況下只能選擇更換IP。 檢查辦法&#xff1a; 第一&#xff0c;確認IP…

【銀河麒麟】unzip程序卡住,處理機制詳解,附代碼

1.服務器環境以及配置 【機型】 處理器&#xff1a; HUAWEI,Kunpeng 920 內存&#xff1a; 400G 【內核版本】 4.19.90-23.18.v2101.ky10.aarch64 【OS鏡像版本】 銀河麒麟高級服務器操作系統V10-SP1-0711-arm 【第三方軟件】 docker 2.問題現象描述 一臺k8s服務器…

netconf_h3c_ac

# -*- coding:utf-8 -*- import xmltodict from ncclient import managerip=ACip地址, m=manager.connect(host=ip,port=830,username=賬號,password=密碼,hostkey_verify=False,device_params={name: h3c},allow_agent=False,look_for_keys=False,timeout=30)data_xml = <…

el-dropdown問題

問題&#xff1a;用element組件中的el-dropdown組件之后&#xff0c;發現隨便點擊屏幕任何地方控制臺都會報錯&#xff0c;之前使用的element的級聯查詢 &#xff0c;在加入這個組件之后點擊空白地方下拉面板沒辦法收回去。 element-ui.common.js?ccbf:2432 Uncaught TypeErr…

水上實用救生工具_救生拉桿_鼎躍安全

每年&#xff0c;由于水上事故而失去生命的人數不勝數&#xff0c;水上安全問題也成為公眾關注的焦點。如何在關鍵時刻實施有效的救援&#xff0c;成為保障生命的重要課題。作為水上救援的重要工具&#xff0c;救生拉桿在緊急情況下發揮了無可替代的作用。 救生拉桿&#xff0c…

springboot 緩存框架Cache整合redis組成二級緩存

springboot 緩存框架Cache整合redis組成二級緩存 項目性能優化的解決方案除開硬件外的方案無非就是優化sql&#xff0c;減少sql 的執行時間&#xff0c;合理運用緩存讓同樣的請求和數據庫之間的連接盡量減少&#xff0c;內存的處理速度肯定比直接查詢數據庫來的要快一些。今天就…

CDP問卷的常見問題

CDP問卷的常見問題可以歸納如下&#xff1a; 哪些企業會收到CDP邀請&#xff1f; 企業會收到來自投資和/或采購機構的邀請&#xff0c;以填寫CDP問卷并披露相應的環境管理信息。 未收到邀請的企業可否填報&#xff1f; 未收到邀請的企業可以選擇自行填報。他們需發送申請自愿…