HTML5新特性:為Web帶來的翻天覆地變化

cover

隨著互聯網的發展,HTML5作為Web開發的重要里程碑,為我們帶來了一系列令人興奮的新特性和功能。本文將帶領大家探索HTML5的新特性,揭示其對Web技術的巨大影響。

一、介紹

HTML5作為HTML的最新版本,不僅強化了網頁結構與內容,還引入了豐富的多媒體功能,以及改進的用戶體驗。這些新特性不僅為開發人員提供了更多的工具和選項,也為用戶帶來了更加流暢和豐富的網絡體驗。

主要新特性:

  1. 語義化標簽:HTML5引入了一系列的語義化標簽,如<header><footer><nav>等,使得網頁結構更加清晰,利于搜索引擎優化(SEO)和無障礙訪問。
  2. 多媒體支持:HTML5提供了內置的多媒體支持,包括<audio><video>標簽,不再需要第三方插件如Flash,提升了網頁性能和可訪問性。
  3. Canvas繪圖:借助<canvas>標簽,開發者可以通過JavaScript繪制圖形、動畫等,為Web應用添加了更多的交互性和視覺效果。
  4. 本地存儲:HTML5引入了Web Storage和IndexedDB等新的存儲機制,使得網頁可以在本地存儲數據,提高了應用的性能和用戶體驗。

詳細案例與代碼解釋:

1. 語義化標簽
  • 案例代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Semantic HTML5</title>
</head>
<body><header><h1>Website Header</h1></header><nav><ul><li><a href="#">Home</a></li><li><a href="#">About</a></li><li><a href="#">Contact</a></li></ul></nav><section><h2>Main Content Section</h2><p>This is the main content of the website.</p></section><footer><p>&copy; 2024 My Website</p></footer>
</body>
</html>
  • 參數解釋
    • <header>: 定義文檔或文檔部分的頁眉。
    • <nav>: 定義導航鏈接的部分。
    • <section>: 定義文檔中的節,比如章節、頁眉、頁腳或文檔中的其他部分。
    • <footer>: 定義文檔或文檔部分的頁腳。
      效果如下:
      result
2. 多媒體支持
  • 案例代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 Media</title>
</head>
<body><video controls width="400"><source src="movie.mp4" type="video/mp4">Your browser does not support the video tag.</video><audio controls><source src="music.mp3" type="audio/mpeg">Your browser does not support the audio tag.</audio>
</body>
</html>
  • 參數解釋

    • <video>: 用于嵌入視頻文件。
      • controls: 顯示視頻控制條。
      • width: 視頻播放器的寬度。
    • <audio>: 用于嵌入音頻文件。
      • controls: 顯示音頻控制條。

    結果如下:
    result

3. Canvas繪圖
  • 案例代碼

以逐漸浮現某元素效果為例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Canvas Drawing</title>
</head><body><!-- 定義一個寬度為200像素,高度為100像素的畫布 --><canvas id="myCanvas"></canvas> <!-- canvas不能用css設置屬性,只能用js --><script>// 獲取畫布元素var canvas = document.getElementById('myCanvas');canvas.width = 200;canvas.height = 100;// 獲取畫布的二維渲染上下文var ctx = canvas.getContext('2d');// 定義顏色的透明度var alpha = 0;// 使用 requestAnimationFrame 逐幀更新畫布內容function draw() {// 設置填充顏色為綠色,并設置透明度ctx.fillStyle = 'rgba(0, 128, 0, ' + alpha + ')';// 繪制一個矩形,其左上角坐標為(10,10),寬度為150像素,高度為80像素ctx.fillRect(10, 10, 150, 80);// 每幀增加透明度alpha += 0.001;// 當透明度大于等于1時,停止更新if (alpha < 1) {requestAnimationFrame(draw);}}// 兩秒后執行setTimeout(function () {requestAnimationFrame(draw);}, 2000);</script>
</body></html>

requestAnimationFrame 是一個用于在瀏覽器中執行動畫的 API。它允許您告訴瀏覽器您希望執行動畫,并請求瀏覽器在下一次重繪之前調用指定的回調函數更新動畫。這個函數被設計成在下一次重繪之前只更新一次動畫,以提高性能和效率。
使用 requestAnimationFrame 可以幫助您創建平滑的動畫,因為它會自動優化動畫的幀率,以適應瀏覽器的性能和顯示器的刷新率。例如,如果瀏覽器正在處理其他任務或者顯示器的刷新率很低,那么 requestAnimationFrame 可能會減慢動畫的幀率,以避免浪費資源。
requestAnimationFrame 的回調函數接收一個參數,即表示當前幀的時間戳(以毫秒為單位)的數值。這個時間戳可以用來計算動畫的時間,以實現更精確的動畫控制。
這個示例中,使用 requestAnimationFrame() 方法來逐幀更新畫布內容,每幀都增加顏色的透明度,從而實現顏色慢慢浮現的效果;

  • 參數解釋
  • <canvas>: 用于繪制圖形的區域。
    • width: 畫布的寬度。
    • height: 畫布的高度。
  • getContext('2d'): 獲取一個用于在畫布上繪圖的二維渲染上下文。
  • fillStyle: 設置用于填充繪制的形狀的顏色、漸變或模式。
  • fillRect(x, y, width, height): 在畫布上繪制一個矩形,其左上角坐標為 (x, y),寬度為 width,高度為 height。
  • requestAnimationFrame(callback): 請求瀏覽器在下一次重繪之前調用指定的回調函數更新動畫。
  • rgba(red, green, blue, alpha): 以紅、綠、藍和 alpha 通道的值來指定顏色。alpha 通道的值范圍為 0 到 1,用于指定顏色的不透明度。
  • setTimeout(callback, delay): 在指定的延遲(以毫秒計)后調用指定的回調函數。

Canvas 標簽元素本身是一個畫布容器,它的大小可以通過 HTML 屬性或者 CSS 樣式進行設置。但是,Canvas 內部繪制的圖形和元素是使用 JavaScript 來控制的,不能通過 CSS 來直接控制它們的顯示效果。例如,你可以使用 CSS 來設置 Canvas 元素的背景色、邊框、大小等屬性,但是無法使用 CSS 來設置 Canvas 內部的矩形、線條、文本等元素的顏色、大小、位置等屬性。這些屬性需要通過 JavaScript 中的 Canvas API 來控制。

效果如下:
canvas

4. 本地存儲LocalStorage
  • 案例代碼
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Web Storage</title>
</head><body><h1>LocalStorage 示例</h1><input type="text" id="input" placeholder="輸入文本"><button onclick="saveData()">保存數據</button><button onclick="loadData()">加載數據</button><p id="output"></p><script>// 保存數據到本地存儲function saveData() {var input = document.getElementById('input').value; // 獲取輸入框中的值localStorage.setItem('userData', input); // 將值保存到本地存儲中,鍵為'userData'}// 從本地存儲中加載數據function loadData() {var output = document.getElementById('output'); // 獲取輸出元素var data = localStorage.getItem('userData'); // 從本地存儲中獲取鍵為'userData'的值if (data) { // 如果值不為空output.textContent = '加載的數據: ' + data; // 將值顯示在輸出元素中} else {output.textContent = '沒有找到數據。'; // 否則顯示提示信息}}</script>
</body></html>

參數解釋:

  • localStorage: 用于在瀏覽器中存儲鍵值對數據,數據在頁面會話結束后仍然存在。
  • setItem(key, value): 將指定的值與指定的鍵相關聯。
  • getItem(key): 獲取與指定鍵相關聯的值。如果鍵不存在,則返回 null

效果如下:
本地存儲

5. 會話存儲Session Storage

特性描述

sessionStorage提供了一種方式來臨時存儲數據,對于需要臨時保存如表單數據、用戶界面狀態等信息的場景非常有用。每個會話都有自己的存儲空間,并且這些數據只對當前會話的窗口可見。

案例代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>會話存儲案例</title>
</head>
<body><input type="text" id="sessionInput"><button onclick="saveSessionData()">保存到會話存儲</button><button onclick="showSessionData()">展示存儲的結果</button><script>function saveSessionData() {var data = document.getElementById('sessionInput').value;sessionStorage.setItem('sessionData', data);}function showSessionData() {alert(sessionStorage.getItem('sessionData'));}</script>
</body>
</html>
參數解釋
  • sessionStorage: 用于臨時存儲在瀏覽器會話中的鍵值對數據。
  • setItem(key, value): 將數據以鍵值對形式保存在sessionStorage中。
  • getItem(key): 從sessionStorage中檢索與指定鍵相關聯的值。

通過使用sessionStorage,開發者可以在用戶瀏覽網頁時臨時存儲必要的數據,而不必擔心頁面刷新或關閉后數據丟失的問題。這為創建具有更好用戶體驗的動態網頁應用提供了更多的可能性。

效果如下:
會話存儲

6.地理定位Geolocation API

原理

Geolocation API允許Web應用訪問用戶的地理位置信息。用戶必須授權網站訪問這些信息,保證了用戶隱私的安全。一旦授權,Web應用就可以獲取用戶的緯度和經度信息,從而提供定位服務,如天氣更新、附近的餐館等。

案例代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>地理定位案例</title>
</head>
<body><!-- 點擊按鈕獲取當前坐標 --><button onclick="getLocation()">獲取當前坐標</button><!-- 顯示坐標信息的元素 --><p id="location"></p><script>// 獲取當前坐標function getLocation() {// 檢查瀏覽器是否支持地理定位if (navigator.geolocation) {// 獲取當前位置坐標navigator.geolocation.getCurrentPosition(showPosition, showError);} else {// 瀏覽器不支持地理定位document.getElementById("location").innerHTML = "該瀏覽器不支持地理定位。";}}// 顯示坐標信息function showPosition(position) {// 獲取緯度和經度var latlon = "緯度: " + position.coords.latitude +"<br>經度: " + position.coords.longitude;// 顯示坐標信息document.getElementById("location").innerHTML = latlon;}// 顯示錯誤信息function showError(error) {switch(error.code) {case error.PERMISSION_DENIED:document.getElementById("location").innerHTML = "用戶拒絕了獲取地理定位的請求。"break;case error.POSITION_UNAVAILABLE:document.getElementById("location").innerHTML = "位置信息不可用。"break;case error.TIMEOUT:document.getElementById("location").innerHTML = "獲取用戶位置超時。"break;case error.UNKNOWN_ERROR:document.getElementById("location").innerHTML = "發生了未知錯誤。"break;}}</script>
</body>
</html>
參數解釋
  • navigator.geolocation: Web瀏覽器的Geolocation對象,用于訪問用戶的地理位置。

  • getCurrentPosition(success, error, options): 獲取用戶當前位置。接受三個參數:成功回調函數、錯誤回調函數和可選的選項對象。

    • success: 成功回調函數,接收一個position對象作為參數。
    • error: 錯誤回調函數,接收一個error對象作為參數。
    • options: 可選參數,如最大年齡、超時時間和是否需要高精度位置。

    實現效果如下:
    地理定位

7.元素拖動放置Drag and Drop API

原理

Drag and Drop API使得HTML元素可拖動。通過監聽拖動事件,Web應用可以定義元素被拖動時的行為以及放下(drop)時的動作,使得用戶界面更為直觀和交互性強。

案例代碼
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>拖拽放置示例</title><style>#div1,#div2 {width: 350px;height: 70px;padding: 10px;border: 1px solid #9c2c2c;}</style>
</head><body><div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <br> <img id="drag1"src="../assit/logo.png" draggable="true" ondragstart="drag(event)" width="336" height="69"><script> // 禁止默認拖拽行為,允許dropping function allowDrop(ev) {ev.preventDefault();} // 在開始拖拽時,保存被拖拽元素的 id 到數據傳輸對象 dataTransfer 中 function drag(ev) {ev.dataTransfer.setData("text", ev.target.id);} // 在放置被拖拽元素時,prevent default 阻止默認行為,并將被拖拽元素追加到目標容器中 function drop(ev) {ev.preventDefault();var data = ev.dataTransfer.getData("text"); // 獲取被拖拽元素的 id ev.target.appendChild(document.getElementById(data)); // 將被拖拽元素追加到目標容器中 } </script>
</body></html>
注釋說明:
  • allowDrop(ev) 函數用于在拖拽元素移動到可放置容器上方時觸發,通過調用 ev.preventDefault() 禁止默認的拖拽行為,并允許放置操作。
  • drag(ev) 函數用于在拖拽操作開始時觸發,通過調用 ev.dataTransfer.setData(“text”, ev.target.id) 保存被拖拽元素的 id 到數據傳輸對象 dataTransfer 中。
  • drop(ev) 函數用于在拖拽元素放置到可放置容器上時觸發,通過調用 ev.preventDefault() 禁止默認的拖拽行為,并通過獲取數據傳輸對象中保存的被拖拽元素 id,將其追加到目標容器中。
參數解釋:
  • ev 為觸發事件對象,包含了與事件相關的信息和方法。
  • dataTransfer 為數據傳輸對象,用于在拖拽操作中保存和傳遞數據。
  • setData(“text”, ev.target.id) 用于向數據傳輸對象中保存被拖拽元素的 id。
  • getData(“text”) 用于從數據傳輸對象中獲取被拖拽元素的 id。
  • appendChild() 用于將被拖拽元素追加到目標容器中。

效果如下:
拖拽放置

8.Web Sockets

原理

Web Sockets提供了一種在用戶和服務器之間建立持久連接的方法。與傳統的HTTP連接不同,WebSocket提供了全雙工通信機制,即客戶端和服務器可以在任何時刻發送數據,適用于需要實時數據交換的應用,如在線游戲、聊天應用等。

案例代碼
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>WebSocket Demo</title>
</head>
<body><h1>WebSocket Demo</h1><div id="messages"></div><input type="text" id="messageInput" placeholder="Type a message..."><button id="sendButton">Send</button><script>var socket = new WebSocket("wss://echo.websocket.org");var messagesDiv = document.getElementById("messages");socket.onopen = function(event) {console.log("Connection opened");};socket.onmessage = function(event) {var message = document.createElement("p");message.textContent = "Received: " + event.data;messagesDiv.appendChild(message);};socket.onclose = function(event) {console.log("Connection closed");};document.getElementById("sendButton").addEventListener("click", function() {var input = document.getElementById("messageInput");var message = input.value;if (message.trim() !== "") {socket.send(message);var sentMessage = document.createElement("p");sentMessage.textContent = "Sent: " + message;messagesDiv.appendChild(sentMessage);input.value = "";}});</script>
</body>
</html>
參數解釋
  • WebSocket: 構造函數,用于創建WebSocket連接。接受一個表示服務器地址的URL作為參數。
  • onopen: 連接成功建立時觸發的事件處理程序。
  • onmessage: 接收到消息時觸發的事件處理程序。
  • onclose: 連接關閉時觸發的事件處理程序。
  • send(message): 方法,用于向服務器發送信息。
    效果如下:
    websocket

9.Web Workers

原理

Web Workers 的主要作用是允許 web 應用程序在主線程之外運行腳本操作,使得主線程(通常負責 UI 渲染、用戶交互等)不會被阻塞,從而提供更流暢的用戶體驗。

下面是一個完整的 HTML 代碼示例,包含了使用 Web Workers 的案例:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Web Workers Example</title>
</head><body><h1>Web Workers 案例</h1><p id="result"></p><script>if (window.Worker) {const myWorker = new Worker("../js/worker.js");myWorker.onmessage = function (e) {console.log('Message received from worker:', e.data);document.getElementById('result').textContent += e.data;};myWorker.postMessage("Hello, worker!");} else {console.log('Web Workers are not supported in this browser.');}</script>
</body></html>

在這個示例中,我們在 HTML 文檔中添加了一個 p 元素,用于顯示從 Web Worker 接收到的數據。在主腳本中,我們使用 document.getElementById 方法獲取 p 元素,并將接收到的數據顯示在頁面上。

// worker.js
self.onmessage = function(event) {// 接收主線程發送過來的消息var data = event.data;console.log('Received message from main thread:', data);// 逐字輸出中文名言var quote = "學而時習之,不亦說乎...";for (let i = 0; i < quote.length; i++) {setTimeout(() => {self.postMessage(quote[i]);}, 500 * i);}
};

請注意,worker.js 文件應該與 HTML 文件位于同一個目錄下。
效果如下:
webworkers

以上就是對HTML5中新特性的詳細介紹,包括它們的工作原理、使用案例,以及相關參數的解釋。這些新特性大大擴展了Web開發的能力,使得創建富有表現力和高度互動的Web應用成為可能。

總結

HTML5的新特性為Web開發者提供了更多的選擇和靈活性,使得開發更加高效和便捷。通過合理利用這些特性,我們可以為用戶提供更加豐富、流暢的網絡體驗。

文章參考

  • W3C官方文檔
  • MDN Web文檔

項目地址

Github地址
拓展閱讀


如果覺得我的文章對您有幫助,三連+關注便是對我創作的最大鼓勵!或者一個star🌟也可以😂.

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

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

相關文章

Android 解決引入的三方庫中類名沖突問題

參考&#xff1a; Android開發——如何解決三方庫中的類名沖突問題_android 類沖突-CSDN博客 Android 解決 jar/aar 包類名沖突 - 簡書 實操步驟 1.提前安裝好unzip-5.51-bin&#xff0c;proguard-7.4.0&#xff0c;jarjar-1.4軟件 2.解壓包名沖突的 AAR 文件 進入到需要修…

reach功能的使用

1.reach添加后 1.reach添加后2 2.拷貝reach最后一幀的動作 3.刪除reach(注意畫選時如果reach延長不能直接刪否則以前的動畫也會刪掉&#xff0c;要縮短reach后再刪另外這兩個灰原點也要刪掉否則影響后邊新加clip的對齊會出現亂七八糟的事情) 4.刪除reach后&#xff0c;光標移到…

收藏:數據防泄漏系統推薦,數據防泄漏系統有哪些?

一金融機構在近期發生了一起數據泄露事件。 經過調查&#xff0c;發現是由于一名員工將包含客戶敏感信息的文件通過電子郵件發送給了未經授權的第三方。 這一事件導致客戶數據泄露&#xff0c;給該機構帶來了嚴重的聲譽損失和信任危機。 這一案例凸顯了數據防泄漏系統的重要性…

Neo4j aura 官方網站快速入門新手教精讀-從官方教程學習知識圖譜

Neo4j 官方網站快速入門新手教精讀 本文旨在為Neo4j新手提供一份全面的入門指南。除了基礎的文本解釋&#xff0c;我在里面還插入了每一步驟的詳細截圖或者自己畫的圖&#xff0c;從官方了解知識肯定比自己亂看要權威一些&#xff0c;有看不懂的不要糾結了解大概意思即可&#…

Java中心校智慧校園智慧班牌物聯網平臺源碼

目錄 智慧班牌 班牌首頁 班級信息 課表信息 視頻 圖片 進離校管理 人臉登錄頁 學生個人中心 請假管理 成績管理 家長留言 學生綁卡 學生評價 系統設置 通知管理 值日管理 倒計時 班級德育 班牌模式 1.課堂授課模式 2.家長會簽到模式 3.考場模式 4.班級…

React富文本編輯器開發(一)

這是一個系統的完整的教程&#xff0c;每一節文章的內容都很重要。這個教程學完后自己可以開發出一個相當完美的富文本編輯器了。下面就開始我們今天的內容&#xff1a; 安裝 是的&#xff0c;我們的開發是基于Slate的開發基礎&#xff0c;所以要安裝它&#xff1a; yarn ad…

【貪心算法】Leetcode 122. 買賣股票的最佳時機 II

【貪心算法】Leetcode 122. 買賣股票的最佳時機 II 122. 買賣股票的最佳時機 II貪心算法&#xff1a;整體利潤拆為每天的利潤&#xff0c;只收集每天的正利潤 122. 買賣股票的最佳時機 II ---------------&#x1f388;&#x1f388;122. 買賣股票的最佳時機 II 題目鏈接&…

【Excel PDF 系列】EasyExcel + iText 庫實現 Excel 轉換 PDF

你知道的越多&#xff0c;你不知道的越多 點贊再看&#xff0c;養成習慣 如果您有疑問或者見解&#xff0c;歡迎指教&#xff1a; 企鵝&#xff1a;869192208 文章目錄 前言轉換前后效果引入 pom 配置代碼實現定義 ExcelDataVo 對象主方法EasyExcel 監聽器 前言 最近遇到生成 …

圖論 - 最小生成樹(Prime、Kruskal)

文章目錄 前言Part 1&#xff1a;Prim算法求最小生成樹1.題目描述輸入格式輸出格式數據范圍輸入樣例輸出樣例 2.算法 Part 2&#xff1a;Kruskal算法求最小生成樹1.題目描述輸入格式輸出格式數據范圍輸入樣例輸出樣例 2.算法 前言 本篇博客介紹兩種求最小生成樹的方法&#xff…

遼寧博學優晨教育視頻:引領安全可靠的學習新風尚

在數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;線上教育已成為越來越多人提升自我、拓寬視野的重要選擇。遼寧博學優晨教育視頻憑借其安全可靠的特質&#xff0c;在眾多在線教育平臺中脫穎而出&#xff0c;成為廣大學子信賴的學習伙伴。 一、遼寧博學優晨教育視頻…

MagiskHideProps 使用 props 開啟 android 手機的 ro.debuggable =1 的方法

因為 CDSN 一直不給對舊的文章&#xff08;特別是邊幅比較長的文章&#xff09;一直都無法修改&#xff0c;保存&#xff0c;重新發布 一直都是操作超時 我這里是補全 這邊文章中 unity shader - 圣斗士星矢 人物 shader 還原 - GPA 抓幀提取資源、shader&#xff0c;ROOT權…

python 使用curl_cffi 繞過jax3指紋-Cloudflare 5s盾

現在越來越多的網站已經能夠通過JA3或者其他指紋信息&#xff0c;來識別你是不是爬蟲了。傳統的方式比如換UA&#xff0c;加代理是沒有任何意義了&#xff0c;所以這個時候我們就需要使用到curl_cffi 了。 1.TLS 指紋是啥&#xff1f; 在絕大多數的網站都已經使用了 HTTPS&am…

構造pop鏈

反序列化視頻筆記 第一步&#xff1a;找到目標觸發echo調用$flag 第二步&#xff1a;觸發_invoke函數調用appeng函數$varflag.php&#xff08;把對象當成函數&#xff09; 第三步&#xff1a;給$p賦值為對象&#xff0c;即function成為對象Modifier卻被當成函數調用&#xff…

加密與安全_探索口令加密算法(PBE)

文章目錄 概述疑問PBE 算法 &#xff08; Password Based Encryption&#xff09;CodePOM實現 小結 概述 加密與安全_探索對稱加密算法中我們提到AES加密密鑰長度是固定的128/192/256位&#xff0c;而不是我們用WinZip/WinRAR那樣&#xff0c;隨便輸入幾位都可以。 這是因為對…

2024最新算法:斑翠鳥優化算法(Pied Kingfisher Optimizer ,PKO)求解23個基準函數

一、斑翠鳥優化算法 斑翠鳥優化算法&#xff08;Pied Kingfisher Optimizer ,PKO&#xff09;&#xff0c;是由Abdelazim Hussien于2024年提出的一種基于群體的新型元啟發式算法&#xff0c;它從自然界中觀察到的斑翠鳥獨特的狩獵行為和共生關系中汲取靈感。PKO 算法圍繞三個不…

【Ubuntu操作系統】講解

Ubuntu操作系統 1. 前言2. 系統更新3. 安裝編譯工具4. 安裝文本編輯器4.1 Vim4.2 Visual Studio Code 5. 安裝開發庫6. 安裝版本控制系統6.1 Git 7. 安裝數據庫7.1 MySQL7.2 PostgreSQL 8. 安裝編程語言環境8.1 Python8.2 Node.js 9. 安裝其他常用軟件9.1 Chrome瀏覽器9.2 Dock…

MySQL數據庫引擎,以及常用引擎的區別

先看圖&#xff1a; mysql常用引擎包括&#xff1a;MYISAM、Innodb、Memory、MERGE MYISAM&#xff1a; 全表鎖&#xff0c;擁有較高的執行速度&#xff0c;不支持事務&#xff0c;不支持外鍵&#xff0c;并發性能差&#xff0c;占用空間相對較小&#xff0c;對事務完整性沒有…

SpringBoot整合rabbitmq-主題交換機隊列(四)

說明&#xff1a;Topic主題交換機它的大致流程是交換機和一個或者多個隊列綁定&#xff0c;這個綁定的Routingkey是包含通配符的&#xff0c;滿足通配符的隊列會接收到消息。 通配符規則&#xff1a; #&#xff1a;匹配一個或多個詞 *&#xff1a;匹配一個詞 例如&#xff…

2024洗地機深度測評推薦,洗地機哪款值得入手?新手入門必看洗地機選購技巧

洗地機是近年來備受矚目的智能家居產品&#xff0c;它能夠有效地幫助我們節省勞動時間&#xff0c;高效清潔地面&#xff0c;從而減輕我們的勞動負擔。洗地機實現了掃地和拖地的一體化功能&#xff0c;在掃地的同時還能順便完成地面的拖洗工作。配備水箱的設計使得不再需要頻繁…

【kubernetes VPA】記錄一次安裝 VPA 相關組件的報錯解決過程

文章目錄 1. 問題描述2. 問題原因3. 解決辦法4. 參考鏈接 1. 問題描述 在執行 ./hack/vpa-up.sh腳本命令時&#xff0c;提示有報錯。名為vpa-admission-controller的容器狀態一直停留在ContainerCreating&#xff0c;從該Pod詳細描述中得知&#xff0c;volume "tls-certs…