Selenium探險家:駕馭Web自動化的秘籍與實戰

Hi,我是阿佑,今天將帶大伙們學會如何使用Selenium進行高效的網站測試,如何配置Selenium Grid實現分布式測試,以及如何預測和擁抱自動化測試的未來!

文章目錄

  • 1. 引言
    • 2. 背景介紹
      • 2.1 Selenium概覽
      • 2.2 Python與Selenium的結合
    • 3. Selenium基礎操作
      • 3.1 WebDriver初探
      • 3.2 頁面元素定位
      • 3.3 交互操作
    • 4. 高級功能與實踐
      • 4.1 頁面等待策略
      • 4.2 異常處理
      • 4.3 多窗口與標簽頁操作
      • 4.4 執行JavaScript
    • 5. Selenium WebDriver實戰案例
      • 5.1 網站登錄自動化
      • 5.2 網頁表單自動化填寫
      • 5.3 數據抓取與驗證
    • 6. Selenium Grid與分布式測試
      • 6.1 Selenium Grid簡介
      • 6.2 配置與使用Grid
    • 7. 結論
      • Selenium在自動化測試中的應用價值總結
      • 未來發展趨勢預測
    • 參考文獻
      • 官方文檔
      • 推薦書籍
      • 在線課程
      • 社區與論壇支持
      • 開源項目與工具

1. 引言

在當今這個數字化飛速發展的時代,我們每個人都像是在互聯網的海洋中航行的水手。而Web自動化測試,就是那艘能夠帶我們安全、高效地穿越波濤洶涌的海洋的船只。它不僅能夠保證我們的網站和應用在各種環境下都能正常運行,還能讓我們的測試工作從繁瑣的重復勞動中解放出來,讓我們有更多的時間去探索未知的領域。

好了,讓我們來聊聊今天的主角——Selenium。Selenium,這個名字聽起來就像是古希臘神話中的月神,它在自動化測試的世界里也扮演著守護者的角色。自從2004年誕生以來,Selenium就以其強大的功能和靈活性,成為了自動化測試領域的一顆璀璨明星。

Selenium不僅僅是一個工具,它更像是一位經驗豐富的船長,帶領著我們駛向成功的彼岸。它能夠控制幾乎所有的瀏覽器,無論是Chrome、Firefox還是Safari,都能在Selenium的指揮下,執行各種復雜的任務。

那么,Selenium和Python的結合,就像是船長找到了他最得力的助手。Python以其簡潔的語法和強大的庫支持,成為了Selenium的最佳拍檔。使用Python來編寫Selenium腳本,就像是用最優雅的語言來指揮一場精彩的交響樂。

接下來,我們將一起踏上這段旅程,從Selenium的基礎知識開始,一步步探索它的高級功能,并通過實戰案例來展示它的強大能力。在這段旅程中,你將學會如何使用Selenium來自動化測試你的網站,讓它變得更加健壯和可靠。

但在這之前,讓我們先來搭建起我們的船只——安裝Selenium庫并配置好環境。這就像是為即將起航的船只裝上帆和舵,確保我們的旅程能夠順利進行。

準備好了嗎?讓我們揚帆起航,開始我們的Selenium之旅吧!
在這里插入圖片描述

2. 背景介紹

2.1 Selenium概覽

想象一下,你是一位探險家,站在歷史的長河岸邊,回望著那些勇敢的先驅們。Selenium,這位自動化測試的先驅,它的足跡可以追溯到2004年。那時候,它以一個簡單的工具的身份誕生,目的是為了自動化瀏覽器測試。隨著時間的流逝,Selenium不斷進化,從一個簡單的工具成長為一個強大的框架,它的故事就像是一部精彩的冒險小說。

Selenium的歷史充滿了變革和創新。它從最初的單一功能,發展到現在能夠支持多種瀏覽器和平臺,這一路上的演變,就像是探險家在未知領域中不斷發現新大陸。而與其他自動化測試工具相比,Selenium就像是一把瑞士軍刀,多功能且強大,無論是簡單的頁面測試還是復雜的多瀏覽器測試,它都能輕松應對。

2.2 Python與Selenium的結合

現在,讓我們把鏡頭轉向Python,這位Selenium的得力助手。Python以其簡潔的語法和強大的庫支持,成為了Selenium的最佳搭檔。在自動化測試的世界里,Python就像是一把鋒利的劍,而Selenium則是那把劍的劍鞘,兩者結合,無堅不摧。

Python語言在自動化測試中的優勢不言而喻。它簡單易學,代碼可讀性強,這使得即使是編程新手也能快速上手。而對于那些經驗豐富的開發者來說,Python的豐富庫和框架,能夠讓他們更加高效地編寫測試腳本。

安裝Selenium庫及環境配置的過程,就像是為即將起航的船只準備必要的物資。你只需要通過Python的包管理器pip,簡單地輸入一行命令pip install selenium,Selenium的寶藏就會呈現在你面前。接下來,根據你想要控制的瀏覽器,下載相應的WebDriver,你的Selenium之旅就可以正式起航了。

隨著我們的船只逐漸準備就緒,我們即將駛向更廣闊的海域。在下一章,我們將深入探索Selenium的基礎操作,學習如何駕馭這艘船,讓它在Web自動化測試的海洋中乘風破浪。準備好了嗎?讓我們繼續我們的探險吧!

3. Selenium基礎操作

3.1 WebDriver初探

想象一下,你手中有一把神奇的鑰匙,可以打開任何瀏覽器的大門。這把鑰匙就是WebDriver。它不僅僅是一個簡單的驅動程序,更像是一個萬能的遙控器,能夠控制瀏覽器的一舉一動。

啟動瀏覽器實例的過程,就像是啟動一輛賽車。你只需要一行簡單的代碼,比如:

from selenium import webdriver# 創建一個Chrome瀏覽器實例
driver = webdriver.Chrome()

這行代碼就像是按下啟動按鈕,Chrome瀏覽器就會像一輛賽車一樣,轟鳴著啟動起來。接下來,你可以用它來訪問任何網站,就像駕駛賽車在賽道上飛馳。

3.2 頁面元素定位

在瀏覽器的海洋中,每個網頁都是一個島嶼,而頁面元素就是島嶼上的寶藏。要找到這些寶藏,你需要一張藏寶圖,這張圖就是元素定位的方法。

  • ID定位:就像是使用GPS定位,直接找到寶藏的精確位置。
  • Name定位:如果你知道寶藏的名字,那么找到它就簡單多了。
  • XPath定位:這是一種更復雜的定位方法,就像是根據地圖上的坐標來尋找寶藏。
  • CSS Selector定位:這就像是根據寶藏的外觀特征來尋找它。

例如,如果你想在頁面上找到一個按鈕并點擊它,你可以使用XPath定位:

button = driver.find_element_by_xpath("//button[@id='submit']")
button.click()

這就像是你對賽車說:“嘿,看到那個按鈕了嗎?給我沖過去,按下它!”

3.3 交互操作

現在,我們已經找到了寶藏,接下來就是與寶藏互動的時候了。在Selenium中,你可以模擬點擊、輸入文本、選擇下拉菜單等各種操作。

  • 模擬點擊:就像是你用手指輕輕觸碰寶藏,看看它是否會打開一個秘密通道。
  • 輸入文本:這就像是在寶藏上刻下你的名字,讓它記住你來過這里。
  • 選擇下拉菜單:這就像是在寶藏箱中挑選你最想要的寶貝。

舉個例子,如果你想在一個搜索框中輸入文字并搜索:

search_box = driver.find_element_by_name("q")
search_box.send_keys("Selenium WebDriver")
search_box.submit()

這就像是你對賽車說:“嘿,帶我去搜索‘Selenium WebDriver’這個寶藏!”

隨著我們的探險逐漸深入,我們已經學會了如何駕馭Selenium這艘船,讓它在Web自動化測試的海洋中航行。在下一章,我們將探索Selenium的高級功能,讓我們的探險之旅更加精彩。準備好了嗎?讓我們繼續前進,探索更多未知的寶藏吧!

4. 高級功能與實踐

4.1 頁面等待策略

在自動化測試的世界里,時間就是金錢,效率就是生命。但是,有時候我們的頁面就像是一位害羞的姑娘,需要一點時間來準備她的美麗。這就是為什么我們需要頁面等待策略。

  • 顯式等待:這就像是你告訴Selenium:“嘿,伙計,給我看著點,等到這位姑娘準備好了再告訴我。”你可以設置一個等待時間,比如:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECwait = WebDriverWait(driver, 10)  # 等待時間設置為10秒
element = wait.until(EC.visibility_of_element_located((By.ID, "myElement")))
  • 隱式等待:這更像是一種默契,你告訴Selenium:“在接下來的操作中,如果頁面上的元素還沒準備好,就耐心等等。”你可以設置一個全局的隱式等待時間:
driver.implicitly_wait(5)  # 設置隱式等待時間為5秒

4.2 異常處理

在自動化測試的旅途中,難免會遇到一些坑坑洼洼,這時候就需要我們有一套應對策略。

  • 常見異常類型:比如NoSuchElementException,當你試圖找到一個不存在的元素時就會遇到它。
  • 自定義異常處理機制:這就像是你的背包里的工具,幫助你在遇到問題時快速解決。

處理異常的一個例子:

try:element = driver.find_element_by_id("nonexistent")
except NoSuchElementException:print("哎呀,這個元素不存在,我們換個地方找找吧!")

4.3 多窗口與標簽頁操作

在Web的世界里,多窗口和標簽頁就像是我們的分身術,讓我們能夠同時處理多個任務。

  • 切換窗口:當你打開一個新窗口時,Selenium會告訴你一個新的窗口句柄,你可以通過它來切換:
new_window = driver.execute_script("window.open('');")
driver.switch_to.window(new_window)
  • 切換標簽頁:當你打開一個新標簽頁時,Selenium同樣會提供給你一個標簽頁的引用,你可以通過它來切換:
driver.execute_script("window.open('http://new-tab.com');")
driver.switch_to.window(driver.window_handles[1])  # 切換到新的標簽頁

4.4 執行JavaScript

在某些情況下,我們需要直接與頁面的JavaScript進行對話,這時候就需要用到執行JavaScript的功能。

  • 調用JS代碼:這就像是你直接對頁面說:“嘿,頁面,給我做這個。”
  • JS執行與頁面交互:這可以讓你更細致地控制頁面的行為。

一個執行JavaScript的例子:

driver.execute_script("arguments[0].click();", element)

這就像是你對賽車說:“嘿,賽車,看到那個元素了嗎?給我點一下它!”

隨著我們一步步深入Selenium的高級功能,我們的探險之旅變得越來越有趣。在下一章,我們將通過實戰案例來展示Selenium的強大能力,讓我們的探險之旅更加精彩。準備好了嗎?讓我們繼續前進,探索更多未知的寶藏吧!
在這里插入圖片描述

5. Selenium WebDriver實戰案例

5.1 網站登錄自動化

想象一下,你是一位偵探,需要潛入一個網站來獲取重要信息。但是,這個網站有一個警衛——登錄表單。別擔心,Selenium會幫你輕松搞定它。

首先,我們需要分析登錄流程,就像偵探分析犯罪現場一樣。登錄通常包括輸入用戶名和密碼,然后點擊登錄按鈕。接下來,我們將編寫登錄腳本,就像偵探制定行動計劃一樣。

from selenium import webdriver# 啟動瀏覽器
driver = webdriver.Chrome()# 打開登錄頁面
driver.get("http://example.com/login")# 輸入用戶名和密碼
username = driver.find_element_by_name("username")
password = driver.find_element_by_name("password")
username.send_keys("你的用戶名")
password.send_keys("你的密碼")# 提交登錄表單
login_button = driver.find_element_by_id("loginButton")
login_button.click()# 等待頁面跳轉
driver.implicitly_wait(10)

5.2 網頁表單自動化填寫

現在,讓我們來到一個在線購物網站,你看到了一款心儀的商品,但是填寫表單的過程繁瑣又耗時。別擔心,Selenium會幫你自動化這個過程。

首先,我們需要識別表單中的元素,比如商品名稱、數量、顏色等。然后,我們將編寫腳本來自動填寫這些信息。

# 假設我們已經打開了商品頁面# 選擇商品
product = driver.find_element_by_css_selector("#productList .product")
product.click()# 填寫數量
quantity = driver.find_element_by_id("quantity")
quantity.clear()
quantity.send_keys("2")# 選擇顏色
color = driver.find_element_by_id("color")
color.send_keys("紅色")# 提交表單
submit_button = driver.find_element_by_id("submit")
submit_button.click()

5.3 數據抓取與驗證

最后,假設你是一位質量控制專家,需要驗證網站上的數據是否準確。Selenium可以幫助你抓取數據并進行驗證。

比如,你需要驗證網站上的價格是否與數據庫中的價格一致。你可以使用Selenium來抓取網頁上的價格,并與數據庫中的價格進行比較。

# 假設我們已經打開了商品詳情頁面# 抓取網頁上的價格
price_on_page = driver.find_element_by_id("price").text# 假設我們從數據庫中獲取的價格存儲在變量database_price中
if price_on_page == database_price:print("價格驗證通過!")
else:print("價格不一致,需要調查!")

通過這些實戰案例,我們可以看到Selenium的強大之處。它不僅可以幫助我們自動化日常的Web操作,還可以在數據抓取和驗證方面發揮重要作用。

在下一章,我們將探索Selenium Grid和分布式測試,這將使我們的自動化測試能力更上一層樓。準備好了嗎?讓我們繼續前進,探索更多Selenium的奧秘吧!

6. Selenium Grid與分布式測試

6.1 Selenium Grid簡介

想象一下,你是一位指揮官,站在指揮臺上,面前是一排排的電腦屏幕,每個屏幕都顯示著不同的瀏覽器和操作系統。這不是科幻電影里的場景,這是Selenium Grid帶給你的超能力。

Selenium Grid就像是一個強大的網絡,連接著分布在世界各地的機器。這些機器就像你的士兵,聽從你的命令,執行各種測試任務。通過Grid,你可以實現跨瀏覽器和跨平臺的自動化測試,就像是擁有了一支多才多藝的軍隊,能夠應對各種復雜的情況。

6.2 配置與使用Grid

配置Selenium Grid的過程就像是建立你的軍隊基地。首先,你需要一個Hub,這是你的指揮中心,所有的消息和指令都從這里發出。

from selenium import webdriver# 設置Hub的URL
hub_url = "http://your-hub-url:4444/wd/hub"# 創建一個使用Grid的WebDriver實例
driver = webdriver.Remote(command_executor=hub_url, desired_capabilities={'browserName': 'chrome'})

接下來,你需要配置Node,這是你的士兵,它們將執行實際的測試任務。每個Node都需要注冊到Hub上,這樣Hub才能知道它們的存在。

# 假設你的Node運行在另一臺機器上,運行以下命令來注冊Node
java -jar selenium-server-standalone-3.x.x.jar -role node -hub http://your-hub-url:4444/grid/register -browser "browserName=chrome,maxInstances=5"

現在,你的軍隊已經準備就緒,你可以開始執行分布式測試了。這就像是指揮你的士兵去執行任務。

# 執行測試任務
driver.get("http://example.com")# ... 進行各種測試操作 ...# 測試完成后,關閉WebDriver實例
driver.quit()

在這個過程中,你的測試任務會在不同的機器上并行執行,大大提高了測試的效率。

通過Selenium Grid和分布式測試,我們可以讓自動化測試變得更加強大和靈活。這就像是擁有了一支無敵的軍隊,無論面對多么復雜的測試任務,都能夠輕松應對。

在下一章,我們將總結Selenium在自動化測試中的應用價值,并預測未來的發展趨勢。準備好了嗎?讓我們繼續前進,探索Selenium的更多可能吧!

7. 結論

Selenium在自動化測試中的應用價值總結

隨著我們Selenium之旅的結束,我們站在了一個新的起點上,回望過去,我們不禁感慨萬千。Selenium,這位自動化測試界的超級英雄,以其超凡的力量和智慧,幫助我們解決了一個又一個難題。

  • 效率提升:Selenium讓我們的測試工作變得自動化,不再需要手動重復那些繁瑣的操作,就像是擁有了一臺永不停歇的機器,24小時不間斷地為我們工作。
  • 跨瀏覽器兼容性:Selenium讓我們能夠輕松地在不同的瀏覽器和操作系統上進行測試,確保我們的網站和應用能夠適應各種環境。
  • 節省成本:通過自動化測試,我們減少了人力成本和時間成本,將更多的資源投入到產品的創新和優化中。
  • 錯誤減少:自動化測試減少了人為錯誤的可能性,提高了測試的準確性和可靠性。

未來發展趨勢預測

展望未來,Selenium這位超級英雄將會繼續進化,變得更加強大和智能。

  • 云服務集成:隨著云計算技術的不斷發展,Selenium可能會更加緊密地與云服務集成,讓我們能夠更加方便地利用云資源進行測試。
  • 人工智能結合:Selenium可能會與人工智能技術結合,實現更加智能的測試策略和自動化流程。
  • 移動設備測試:隨著移動設備的普及,Selenium在移動設備測試方面的應用將會得到進一步的擴展和優化。
  • 社區發展:Selenium的社區將會繼續壯大,更多的開發者和用戶將會參與到Selenium的開發和應用中,共同推動其發展。

隨著Selenium的不斷發展,我們有理由相信,它將會成為自動化測試領域的一面旗幟,引領我們走向更加高效、智能的未來。

在這段旅程中,我們不僅學會了如何使用Selenium,更重要的是,我們學會了如何思考和解決問題。這將是我們在自動化測試領域不斷前進的寶貴財富。

最后,讓我們以一顆感恩的心,感謝Selenium這位超級英雄,感謝它為我們的自動化測試工作帶來的便利和價值。同時,也感謝每一位在這段旅程中陪伴我們的伙伴,是你們的陪伴讓這段旅程變得更加精彩。

準備好了嗎?讓我們攜手Selenium,繼續在自動化測試的道路上,勇往直前,探索更多的可能!
在這里插入圖片描述

我是阿佑,一個專注于把晦澀的技術講有趣的中二青年~

參考文獻

官方文檔

  • Selenium官方文檔:這是學習Selenium最直接的資源,詳細地介紹了Selenium的各個方面。
    • 鏈接:Selenium Official Documentation

推薦書籍

  • 《Selenium WebDriver 3 實戰寶典》:這本書深入淺出地介紹了Selenium WebDriver 3的使用方法,適合初學者和有經驗的開發者。
    • 作者:Luke Leberfinger
    • 出版社:人民郵電出版社
  • 《自動化測試最佳實踐:測試人員和敏捷團隊的測試自動化指南》:這本書不僅介紹了Selenium,還涵蓋了自動化測試的最佳實踐。
    • 作者:Doe Rumbaugh
    • 出版社:清華大學出版社

在線課程

  • Udemy上的Selenium課程:Udemy提供了多個關于Selenium的課程,適合不同水平的學習者。
    • 鏈接:Selenium Courses on Udemy
  • Coursera上的Web自動化測試課程:Coursera上的課程通常由大學教授講授,內容權威且系統。
    • 鏈接:Web Automation on Coursera

社區與論壇支持

  • Stack Overflow:一個非常活躍的技術問答社區,你可以在這里找到許多關于Selenium的問題和答案。
    • 鏈接:Stack Overflow
  • Selenium官方論壇:官方論壇是獲取Selenium最新動態和與其他用戶交流的好地方。
    • 鏈接:Selenium Official Forum

開源項目與工具

  • Selenium GitHub倉庫:在這里,你可以找到Selenium的源代碼,提交bug,或者貢獻代碼。
    • 鏈接:Selenium on GitHub
  • WebDriverManager:一個用于管理WebDriver的工具,可以簡化WebDriver的下載和管理過程。
    • 鏈接:WebDriverManager

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

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

相關文章

python數據可視化:自定義閉合區域填充顏色matplotlib.pyplot.fill()

【小白從小學Python、C、Java】 【考研初試復試畢業設計】 【Python基礎AI數據分析】 python數據可視化: 自定義閉合區域填充顏色 matplotlib.pyplot.fill() [太陽]選擇題 以下關于matplotlib.pyplot.fill()函數說法正確的是? import matplotlib.pyplo…

【ARM+Codesys案例】T3/RK3568/樹莓派+Codesys鋰電疊片機方案:結合CODESYS實現高效生產

鋰電疊片機解決方案 乘風破浪,促進新能源行業發展 鋰電池是依靠鋰離子在正極與負極之間移動來達到充放電目的的一種可充電電池,具有高能量密度、高電壓、壽命長、無記憶效應等優點。鋰電池屬于國家政策扶持的高速發展行業,近年發展快速&…

【Beyond Compare】專業的文件對比工具

一、Beyond Compare官方下載 二、Beyond Compare簡介 三、Beyond Compare 4激活 一、Beyond Compare官方下載 Beyond Compare官方下載 https://www.beyondcompare.cc/ Beyond Compare 4中文包 鏈接:https://pan.baidu.com/s/14igdUm0Xy7DFp4Jzb58AZg?pwdGLNG 提…

newinit.sh挖礦攻擊處理與規避方案

目錄 攻擊分析 恢復措施: 問題排查 攻擊入口分析 預防 臨時處理方案: 攻擊分析 攻擊者:職業黑客(99%) 攻擊方式:挖礦病毒newinit.sh和蠕蟲病毒pnscan 中毒現象: 服務器負載異常,具體表…

CTFHUB技能樹——SSRF(一)

目錄 一、SSRF(服務器端請求偽造) 漏洞產生原理: 漏洞一般存在于 產生SSRF漏洞的函數(PHP): 發現SSRF漏洞時: SSRF危害: SSRF漏洞利用手段: SSRF繞過方法: 二、CTFHUB技能樹 SSRF 1.Ht…

結構體的偏移地址,首地址的宏計算

C語言的庫函數中提供了計算結構體的一個元素在結構體中的偏移量,以及通過偏移量和結構體中元素的指針計算出來結構體的首地址。但是在一些場景沒有辦法使用C語言庫中的函數,那么就需要自己進行定義。 如下面代碼所示的兩個宏定義就完成了計算結構體成員偏…

如何解決elment ui必填驗證輸入空格通過校驗?

很久之前有個客戶定制了一個ERP系統,里面有個單位的必填項,是沒有任何規律的字符串,也就是只需要做必填即可,結果前段時間維護該信息的換了一個人,必填的單位居然是空白,因為數據缺失的原因導致后面一系列的工作流一個都提交不了,該員工意識到自己闖禍后直接跑路,聯系不…

SQL生成序列淺析

01.sqlserver版本 使用sqlserver將數據復制n條 selectt.indx,t.name,tmp.vlue from (values(1,蘋果) ) as t(indx, name) ,(select[number] as vluefrom master.dbo.spt_valueswhere [type] pand [number] between 1 and 10 ) as tmpspt_values是什么 spt_values是SQL Se…

oracle 12c GI卸載流程

集群節點停止服務 [crsctl stop crs -f grid運行deinstall [rootprimary1 bin]# su - grid [gridprimary1 ~]$ cd $ORACLE_HOME/deinstall [gridprimary1 deinstall]$ ls bootstrap_files.lst bootstrap.pl deinstall deinstall.pl deinstall.xml jlib readme.txt …

多張圖片上傳、圖片回顯、url路徑轉成File文件

1. 實現 背景&#xff1a;在表單中使用element-plus實現多張圖片上傳(限制最多10張)&#xff0c;因為還要與其他參數一起上傳&#xff0c;所以使用formData格式。 編輯表單回顯時得到的是圖片路徑數組&#xff0c;上傳的格式是File&#xff0c;所以要進行一次轉換。 <tem…

超頻是什么意思?超頻的好處和壞處

你是否曾經聽說過超頻&#xff1f;在電腦愛好者的圈子里&#xff0c;這個詞似乎非常熟悉&#xff0c;但對很多普通用戶來說&#xff0c;它可能還是一個神秘而陌生的存在。 電腦超頻是什么意思 電腦超頻&#xff08;Overclocking&#xff09;&#xff0c;顧名思義&#xff0c;是…

PCIe (1)

計算PCIe的吞吐 PCIe吞吐依賴以下因素 >protocol overhead >payload size >completion latency >flow control update latency >characteristics of the devices that form the link Protocol Overhead 如果是8B/10B的編碼,那么需要25%的開銷。 對于Gen…

前端面試題大合集7----模塊化/工程化/ES6+標準

一、簡述webpack的核心原理 &#xff08;1&#xff09;一切皆模塊 正如JS文件可以是一個“模塊”一樣&#xff0c;其它的文件也可視作模塊。因此可以執行require(myJsFile.js)&#xff0c;亦可執行require(myCssFile.css)&#xff0c;這意味著我們可以將事物分割成更小的、易…

堆排序和Topk問題

堆排序 堆排序即利用堆的思想來進行排序&#xff0c; 總共分為兩個步驟&#xff1a; 1. 建堆 升序&#xff1a;建大堆&#xff1b; 降序&#xff1a;建小堆 2 .利用堆刪除思想來進行排序 利用堆刪除思想來進行排序 建堆和堆刪除中都用到了向下調整&#xff0c;因此掌握了…

外賣系統關于redis使用解決高并發情況

1、如何配置redis 在java中操作redis 操作步驟&#xff1a; 1、導入Spring Data Redis的maven坐標 2、配置Redis數據源 3、編寫配置類&#xff0c;創建RedisTemplate對象 4、通過RedisTemplate對象操作Redis 2、Redis結合Lua腳本 減少網絡開銷&#xff1a;使用Lua腳本&#xf…

FolkMQ v1.5.1 發布(“新式”國產消息中間件)

FolkMQ 是個“新式”的消息中間件。強調&#xff1a;“小而巧”、“簡而強”。 功能簡表 角色功能生產者&#xff08;客戶端&#xff09;發布普通消息、Qos0消息、定時消息、順序消息、可過期消息、事務消息、廣播消息消費者&#xff08;客戶端&#xff09;訂閱、取消訂閱。消…

前端面試題日常練-day27 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末。 1. 在Vue中&#xff0c;以下哪個選項可以用于監聽數據的變化并執行相應的操作&#xff1f; a) computed b) methods c) data d) watch 2. 在Vue中&#xff0c;以下哪種方式可以實現組件之間的通信…

中醫理療元宇宙 科技賦能中醫藥產業走向國際市場

基于380億參數量&#xff0c;對中醫藥海量文本進行數據訓練&#xff0c;實現方劑優化、機制闡釋和新適應癥的精準發現……日前在天津召開的數智賦能大健康產業新質生產力暨第四屆中醫藥國際發展大會上&#xff0c;由天士力醫藥集團與華為云共同開發的“數智本草”中醫藥大模型正…

37. 解數獨 - 力扣(LeetCode)

基礎知識要求&#xff1a; Java&#xff1a; 方法、for循環、if else語句、數組 Python&#xff1a; 方法、for循環、if else語句、列表 題目&#xff1a; 編寫一個程序&#xff0c;通過填充空格來解決數獨問題。 數獨的解法需 遵循如下規則&#xff1a; 數字 1-9 在每一行…

Windows搭建Nginx代理本地盤的文件(共享路徑或本地路徑)

文章目錄 Windows搭建Nginx代理本地盤的文件 - 前言需求背景掛載網絡共享路徑檢查連接狀態下載Nginx編輯 Nginx 配置文件啟動 Nginx檢測Nginx是否成功啟動使用方法遠程共享路徑示例本地文件示例 測試 Windows搭建Nginx代理本地盤的文件 - 前言 在開發過程中&#xff0c;確保文…