GCP :Stackdriver Logging

news2024/11/24 12:24:03

官方介绍

Logs Explorer

利用 Logs Explorer,您可以通过灵活的查询语句、丰富的直方图视觉呈现、简单的字段浏览器以及保存查询的功能,对日志进行搜索、排序和分析。设置提醒以便在您包含的日志中出现特定消息时通知您,或者使用 Cloud Monitoring 根据您定义的基于日志的指标发出提醒。

区域日志存储桶

使用日志存储桶作为本地或行业特有合规性策略的一部分。日志存储桶仅在您指定的区域存储和处理工作负载的日志数据。这些存储桶具有可自定义的访问权限控制和保留功能。

Error Reporting

Error Reporting 会自动分析您的日志中的异常并智能地将其整理为多个有意义的错误组。您可以一目了然地查看主要错误或新错误,并设置通知以在确定了新的错误组时自动发出提醒。

Cloud Audit Logs

Cloud Audit Logs 可以帮助安全团队在 Google Cloud 中维护审核跟踪记录。如同在本地环境一样,透明地了解 Google Cloud 中数据的管理活动和访问情况。每一项管理活动都会记录在经过安全强化、始终启用的审核跟踪中,任何恶意用户都无法停用此项功能。

日志路由器

Cloud Logging 通过 Cloud Logging API 接收日志条目,这些条目在此 API 中通过日志路由器进行传递。日志路由器会根据现有的包含过滤器和排除过滤器检查每个日志条目,以确定要舍弃的日志条目、要注入的日志条目和要包含在导出中的条目。

概述

Stackdriver Logging 是 Google Cloud Platform (GCP) Stackdriver 套裝產品的一部分。 它包含紀錄的儲存,一個使用者介面名為 Logs Viewer, 還提供 API 讓你可程式化的去管理紀錄. 使用 Stackdriver logging 來讀寫紀錄, 搜尋以及篩選紀錄, 匯出紀錄, 以及建立記錄指標

在這個練習中, 你將學習如何使用 Stackdriver Logging, 在同一個地方累積應用的 logs, 通過篩選來取得實際上需求的 紀錄, 理解如何建立紀錄指標來進行更進階的分析, 稽核紀錄 的使用案例, 以及匯出紀錄如果有更進階分析的需要

你需要做什麼?

  • 部署一個 Google App Engine 應用的範例來產生紀錄
  • 使用 Stackdriver Logging 主控台來對應用產生的紀錄做相關操作
  • 建立 Stackdriver monitoring 記錄指標
  • 建立 Stackdriver logs 的 Export 至 Google BigQuery

前言

本篇主要是利用 Google 的 Qwiklab 平台學習的同時,做的一份學習筆記 為避免翻譯誤解,專業術語在本篇將不會被翻譯,保留原文

設定及要求

在你按下 Start Lab 按鈕之前

詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。

Qwiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 Google Cloud Platform。

你需要什麼?

要完成這個 lab ,你需要:

  • 一個一般的網路瀏覽器(推薦 Chrome)
  • 完成這個 lab 的時間

備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab

現在你已經開始你的 lab, 你將會登入 Google Cloud Shell 主控台,然後開啟命令列工具

如何開始你的 lab ,然後登入 Console?

  • 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab

  • 複製 username , 然後點擊 Open Google Console。 Lab 會開啟另外一個視窗,顯示選擇帳號的頁面

tip: 開啟一個全新的視窗,然後跟原本的頁面並排

  • 選擇帳號頁面, 點擊 Use Another Account

  • 登入頁面開啟,貼上之前複製的 username 以及 password ,然後貼上

重要:必須使用之前於 Connection Details 面板 取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)

  • 點擊並通過接下來的頁面:
  • 接受terms以及conditions
  • 不要增加recovery optoins 或 two factor authentication (因為這只是一個臨時帳號)
  • 不要註冊免費體驗

稍待一些時候, GCP 控制台將會在這個視窗開啟。

注意:按下左上方位於Google Cloud Platform 隔壁的 Navigation menu ,你可以瀏覽選單,裡面有一系列的 GCP 產品以及服務

啟動 Google Cloud Shell

Google Cloud Shell 是載有開發工具的虛擬機器。它提供了5GB的 home 資料夾,並且運行在 Google Cloud 上。 Google Cloud Shell 讓你可以利用 command-line 存取 GCP 資源

  • 在 GCP 控制台 ,右上的工具列,點擊 Open Cloud Shell 按鈕

  • 在打開的對話框裡,按下 START CLOUD SHELL:

你可以立即按下 START CLOUD SHELL 當對話視窗打開。

連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:

gcloud 是 Google Cloud Platform 的 command-line 工具,他已事先被安裝在 Cloud Shell 並且支援自動補齊

使用這個 command ,你可以列出有效帳戶名稱:

輸出:

Credentialed accounts:
 - @.com (active)

範例輸出:

Credentialed accounts:
 - google1623327_student@qwiklabs.net

你可以使用以下 command 來列出專案 ID

輸出:

[core]
project =

範例輸出:

[core]
project = qwiklabs-gcp-44776a13dea667a6

gcloud 的完整文件可以參閱 Google Cloud gcloud Overview

部署應用

使用 Cloud Shell 命令行工具來部署 guestbook, 一個 Google App Engine 的範例應用。 這個網頁應用將會產生我們需要的紀錄

  • 從遠端 Clone guestbook 應用

  • 移動到 clone 下來的資料夾內

  • 部署 guestbook 應用

  • 選擇離你較近的地區

  • 輸入 “Y” 繼續。幾分鐘後,應用將會被完全部署完畢

檢視以及搜尋紀錄

移動到 Stackdriver Logs Viewer 設置要檢視的紀錄

選擇Navigation menu > Logging > Logs Viewer

Stackdriver Logging 主控台有以下功能:

  • (1) 服務篩選器: 根據資源種類篩選
  • (2) 紀錄篩選器: 根據選擇的資源的特定類型來篩選
  • (3) 紀錄等級篩選器: 篩選特定紀錄等級
  • (4) 日期篩選器: 根據特定日期篩選來檢視之前發生的問題
  • (5) 切換持續串流
  • (6) 一個搜索框,可以根據文字,標籤,正則,進階篩選器來搜尋

產生紀錄

造訪早前建立的 Google App Engine 應用 (guestbook) 來產生用來檢視的紀錄

  • 在一個新的網頁視窗,打開 guestbook 應用,應用的 URL 如下:

https://<PROJECT_ID>.appspot.com

用位於 lab 左方面板上的GCP Project ID來替換<PROJECT_ID>

或者,你也可以從 Cloud Shell (當你部署 App Engine app 時的輸出) 複製完整的 URL,然後在新的網頁視窗貼上

如果你看到Internal Server Error, 那是因為 Datastore Index 還沒準備好,等個一分鐘再重新整理瀏覽器

預測該有的結果:

當你在你的瀏覽器視窗看到 App Engine Guestbook, 這代表你的 App Engine 應用已經部署且驗證完畢,讓我們來產生一些紀錄吧

  • 重整瀏覽器幾次,並且輸入一些名字到 Guestbook 應用來產生一些紀錄
  • 回到 Stackdriver Logs Viewer

篩選器

Logs Viewer 提供多樣化的基本篩選以及進階篩選的搜尋功能

基礎篩選

  • 一樣在 Logs Viewer,在第一個下拉式窗 (服務選擇器),選擇GAE Application > Default Service > All version_id, 表示我們想要檢視該服務的紀錄。這會顯示 guestbook 的所有紀錄

  • 在下一個下拉選單 (紀錄選擇器), 選擇All logs
  • 在下一個下拉選單 (紀錄等級選擇器), 選擇Any log level

  • 其他下拉選單為默認值, 你的 Basic Filter 應該看起來是像這樣

注意,當你更換選擇時紀錄清單會自動重整

進階篩選器

使用進階篩選器來進一步訂做你的搜尋

  • Filter by label or text search下拉選單,選擇Covert to advanced filter

注意,你選擇的基礎篩選器已經在進階篩選器被轉譯成查詢表達式

  • 在進階篩選器的輸入文字區塊,加上下面新的一行。 輸入新的一行來看自動完成功能

protoPayload.latency>=0.01s

這行顯示所有延遲大於或等於 0.01 秒的 GAE app 紀錄

  • 點擊Submit Filter然後檢視更新過的紀錄資料,可看到所有延遲超過 0.01 秒的紀錄
  • 回到基礎篩選模式。點擊右上方,位於進階篩選器文字區塊區中的箭頭,在下拉選單選擇Clear filters and return to basic mode

紀錄指標

紀錄指標是根據於紀錄的內容的 Stackdriver Monitoring 指標。 因此,你的紀錄不會只坐在那什麼事情也不做就等著別人來發現錯誤; Stackdriver Monitoring 會自動地監控你的紀錄,監控那些你定義的事件以及指標。由此可見,紀錄指標真是一個監控你客製化應用的一個絕佳的好方式。如果你的應用可以寫紀錄到 VM 的文件系統,你可以在那之上建立監控系統。

Stackdriver Monitoring 提供兩種使用者定義的紀錄指標 - Counter 以及 Distribution

計數器指標 (Counter Metrics)

計數器指標計數那些符合進階紀錄篩選器的紀錄內容。舉例來說,一種指標,計數著那些,在特定資源中,代表某些類型的錯誤的紀錄內容。當很多拜訪你網頁的使用者收到了 HTTP 500 錯誤,想要收到警告嗎? 計數器指標可以幫到你

分佈指標

分布指標從紀錄中,累積那些符合篩選器的數據資料並且做數學運算。來說說一個分佈指標的普遍運用,像是追蹤一段時間的延遲模式/趨勢。當收到每一筆紀錄,延遲的數據會從紀錄中被取出並且加到分佈。累積的分佈將會有規律間隔的被寫到 Stackdriver Monitoring

建立計數器指標

在此節中,你將建立一個計數器指標來計數成功拜訪網站的次數 — 在這個例子中,所有帶的 HTTP 200 的紀錄都算

  • 依然在 Logs Viewer, 在select service的下拉選單中,選擇GAE Application > Default Service
  • log level selector下拉選單中,選擇All logs, 你的篩選器應該看起來如下:

  • 在紀錄清單中,點擊狀態 “200” (任何列有 200 就行) 然後選擇Show matching entries

你將會看到

  • 清單只會列出狀態 200 的紀錄
  • 在進階的篩選編輯器中,一條進階的篩選條件已經自動地被建立了 protoPayload.status=200

根據你的篩選器建立一個監控指標

  • 點擊Create Metric 來建立監控指標,根據你的進階篩選器
  • 在指標編輯器中,根據下圖賦值,其他的欄位留為預設值就可

  • 點擊Create Metric

  • 下滑紀錄指標清單來檢視剛剛建立的回應 200 的指標, 你的新指標被列在最尾端, User-defined Metrics 的區塊中
  • 在下圖三點圖案處點擊,選擇 View in Metrics Explorer 來檢視回應 200 的指標

在 Metrics Explorer 視窗打開 Stackdriver 主控台大概會需要一分鐘的時間

  • 在 Metric Explorer, 點擊 GAE Application 資源類型,應該在數秒後會被自動增添進去

如果在資源類型選項中你沒有看到 GAE Application

  • 關閉 Metrics Explorer 視窗
  • 重整你的 guestbook app 幾次,來產生紀錄數據
  • 等待一分鐘,等你的記錄數據被添載進去 (在你重整 App Engine app 之後), 很有可能會花 2 到 3 分鐘
  • 點擊三個點圖案,選擇View in Metrics Explorer

一旦紀錄有被吃到,你將會看到 GAE Application 出現在Resource types 選擇器當中

這個指標已經準備好可以監控並且分析你應用的行為

建立一個分佈指標

在此節中,你將會建立一個分佈計數器來監控 guestbook 應用的延遲

  • 回到 Stackdriver Logging Console > Logs Viewer, 建立一個篩選器來選擇GAE Application > Default Service, All Logs, 以及 Any Log Level, 如下圖:

  • 在頁面上方點擊Create Metrics

  • 在指標編輯器的面板中,設定如下圖中的值

  • 點擊Create Metric
  • 核對延遲指標已經被建立在使用者定義的指標中

  • 產生更多紀錄。重整 guestbook 應用多次,給指標 1 到 2 分鐘去取得以及累積新的紀錄資料
  • 點擊三個點的圖案,然後點擊View In Metrics Explorer, 如下圖:

  • 跟之前一樣,從resource type點擊GAE Application, 然後確認一下指標是你剛剛建立的那一個

如果GAE Application沒有自動載入

  • 關閉 Metrics Explorer 視窗
  • 重整你的 guestbook app 幾次,來產生紀錄數據
  • 等待一分鐘,等你的記錄數據被添載進去 (在你重整 App Engine app 之後), 很有可能會花 2 到 3 分鐘
  • 點擊三個點圖案,選擇View in Metrics Explorer

一旦紀錄有被吃到,你將會看到 GAE Application 出現在Resource types 選擇器當中

在 Stackdriver 監控主控台中檢視紀錄指標

Stackdriver Monitoring Overview 視窗提供監控資源縱覽,紀錄指標就被列在圖表中

Stackdriver 會用這四種格式的其中一種來顯示圖表資料: LineStacked BarStacked Area, 或是 HeatMap, 如果你想要指定格式:

  • 在其中一個圖表點擊三個點的圖案,然後點擊Edit

  • 在格式的下拉選單中,選擇一種格式

  • 點擊Save 把四種格式都試試看,看哪一種可以最好的呈現延遲指標
  • 也試試其他圖表

稽核紀錄

GCP 默認為所有的 GCP 資源提供稽核。稽核紀錄提供了 “誰做的?什麼時候做的?”, 讓我們來看看稽核紀錄吧,讓我們從建立一台 VM 開始。 開啟一台 VM 算是稽核權限活動的一種,所以會產生紀錄

開啟一台 VM 來產生稽核紀錄事件

  • 在 GCP 主控台,選擇Navigation menu > Compute Engine > VM Instances

等待 Compute Engine 服務初始化

  • 點擊Create

  • 依下圖設定相關欄位中的值,其餘的保留預設

  • 點擊Create

在活動檢視器中檢視稽核紀錄

GCP Dashboard 的活動檢視器提供快速檢視稽核紀錄的功能

  • 點擊主控台視窗上方的Google Cloud Platform來回到 GCP Dashboard

  • 切到 ACTIVITY 視窗,你可能要點擊Navigation menu來關閉選單,所以才能看到ACTIVITY視窗

  • 檢視最近的稽核紀錄數據,可以看到在最上面,有很多跟建立 VM 相關的數據

在上面的截圖,注意到四筆紀錄數據記錄著 VM 的建立以及與之相關的 HTTP 防火牆規則

  • 點擊其他行來看看他們說明些什麼。是否有認出這好像是在本教程中我們先前做過的動作

從 Stackdriver 記錄檢視器來檢視稽核紀錄

在 Stackdriver 記錄檢視器中,就像在活動檢視器一樣,你可以看到稽核紀錄數據。不同的是,記錄檢視器提供了更多功能,像是進階的篩選器以及其他的記錄管理功能

  • 從 GCP 主控台回到 Stackdriver 記錄檢視器 (Navigation menu > Logging > Logs Viewer)
  • service selector, 選擇 GCE VM Instance > All instance_id

在 logs selector 下拉選單,選擇cloudaudit.googleapis.com/activity, 然後點擊OK

檢視與Create VM 以及 Completed對應的兩筆稽核紀錄, 以及在活動檢視器看到的Create VM紀錄

看看基本篩選器是怎麼呈現的,對比進階篩選器。從標籤或文字搜尋下拉視窗,點擊篩選器,並且轉換成進階篩選器,看看進階篩選器的代碼如下:

進階篩選器只顯示 GCE instance 的被稽核的活動

放寬範圍來看看 GCP 服務的所有稽核紀錄。 移除第一行,第一行限制了稽核紀錄的範圍,然後點擊Submit Filter

檢視所有在 Google Cloud Platform 上被使用者所執行的活動

在任何一行,點擊你的 Qwiklabs 使用者名稱(信箱), 然後點擊Show matching entries

這增加了一行新的規則到進階篩選器中,限制只顯示被你所執行的活動

匯出紀錄

Stackdriver Logging 保留 30 天的記錄,超過就刪除。如果你要保留紀錄久一點,你可以將他們會出到其他的儲存系統,或者 sink, 像是 BigQuery 。 Stackdriver Logging 可以讓你設定自動化的匯出腳本,所以所有的紀錄都會自動地被匯出。 紀錄也可以在你選擇的接收器被進一步的分析

建立一個匯出工作

設定一個匯出工作來發送所有的稽核紀錄到 BigQuery 來長期儲存與分析。

  • 在 Stackdriver 記錄檢視器的視窗,從進階篩選器移除第二行,然後點擊Submit Filter, 然後你可以檢視 GCP Project 所有的稽核紀錄

  • 在頁面的上方,點擊Create Export,然後依照下圖輸入值

  • 點擊Create Sink。 點擊Close離開接收器建立確認視窗

在 BigQuery 檢視稽核紀錄

  • 開啟 BigQuery, 選擇Navigation menu > BigQuery
  • 關閉歡迎標語
  • 在左邊面板處,點擊 Project ID 旁邊的箭頭來展開 GCP 專案名稱,來看新的 AuditLogs 資料

注意到 AuditLogs 之下還沒有任何的表格。 Log Exporting 會再匯出作業建立之後,開始發送資料到接受器。 Log Exporting 會產生一些稽核記錄數據,然後會再接受器建立表格,並且開始存入資料

  • 回到 VM instance 視窗 (Navigation menu > Compute Engine > VM instances)
  • 點擊 GCE VM instance 來檢視細節

  • 點擊上方的Edit, 對 VM 做兩個小變更
  • (1) 勾選Enable connection to serial ports 的小格子,來允許連續 port 的連線
  • (2) 往下滑,勾選Allow HTTPS Traffic來允許 HTTPS 連線
  • 點擊Save

到主要 GCP Dashboard 的 Activity 視窗,你應會看到一些 Audit Log 數據,包含一個叫做 "Set metadata on VM (設定 VM 的中繼資料)", 另一個叫做 "Create firewall rule (建立防火牆規則)", 還有一些其他跟 VM 變更有關的。 你將會看到一個叫做 "Create Table (建立表格)" 的事件,顯示 BigQuery 接收器已經被建立

約一分鐘後(你可能需要重整頁面), 你將會看到 Audit Log 數據,顯示 BigQuery 的表格已經被更新了,更新資料為我們剛剛變更 VM 之後而產生的新的 Audit Log 數據。 看一下時間戳記來辨認所有 BigQuery 有接收到,那些與這次 VM 變更有關的數據資料

  • 回到 BigQuery 主控台,展開 AuditLog 資料組。你可能需要重整頁面。 你應會看到新的 cloudaudit 表格已經被建立了,點擊它

使用 BigQuery 來探查稽核紀錄

  • 點擊新的 cloudaudit 表格, 然後點擊 Query Table 按鈕

Query Editor 的輸入文字處已經事先仔入一部分的 SQL query, 且游標置於 "SELECT", 以及 "FROM"

  • 在 “SELECT” 以及 “FROM” 之間輸入 *, 然後點擊 Run

幾分鐘後,查詢完成了,你會在下方的結果處看到 Audit Log 數據, 有很多欄位, 裡頭有些是巢狀的

  • 點擊結果視窗的任何地方,然後使用方向鍵來左右移動,可以看到稽核紀錄非常的詳細

現在定義一個範圍小一點的查詢來檢視每個稽核數據的大概

  • (1) 在右上方點擊 Compose New Query
  • (2) 複製下面的 code, 貼到查詢編輯器

  • (3) 上面有些參數,參照下圖的表格內資訊替換

  • (4) 點擊 Run 來開始查詢。 你應會看到小一點的欄位,根據我們做的操作做限制,結果應會跟下圖相似:

這個簡單的查詢只是使用 BigQuery 來產生客制紀錄的一個範例,你可以建構任何數量的 SQL queries 來分析你的稽核紀錄來符合你的需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1415649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT-SoVITS 测试

开箱直用版&#xff08;使用 AutoDL&#xff09; step1 打开地址 https://www.codewithgpu.com/i/RVC-Boss/GPT-SoVITS/GPT-SoVITS-Official 选择 AutoDL创建实例&#xff0c;选择 3080ti 机器 step2 创建好实例之后&#xff0c;进入命令行&#xff0c;输入命令 echo {}>…

Kubernetes成本优化

云原生可以帮助团队更精细化利用资源&#xff0c;但如果缺乏工具的帮助&#xff0c;很难采取适当的措施优化资源的使用。本文介绍了若干用于可视化Kubernetes资源使用情况的工具&#xff0c;并且可以自定义策略优化资源使用&#xff0c;实现更好的成本优化。原文: Kubernetes C…

【计算机二级考试C语言】C强制类型转换

C 强制类型转换 强制类型转换是把变量从一种类型转换为另一种数据类型。例如&#xff0c;如果您想存储一个 long 类型的值到一个简单的整型中&#xff0c;您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#x…

【NodeJS】004- NodeJS的模块化与包管理工具

模块化 1. 介绍 1.1.什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用 1.2 什么是模块化项目 ? 编码时是按照模…

openssl3.2 - 测试程序的学习 - test\aesgcmtest.c

文章目录 openssl3.2 - 测试程序的学习 - test\aesgcmtest.c概述笔记能学到的流程性内容END openssl3.2 - 测试程序的学习 - test\aesgcmtest.c 概述 openssl3.2 - 测试程序的学习 aesgcmtest.c 工程搭建时, 发现没有提供 test_get_options(), cleanup_tests(), 需要自己补上…

公考之判断推理(一、图形推理)

一、前言 判断推理这一题型主要具体分为四种题型&#xff1a; 1.图形推理 2.类比推理 3.定义判断 4.逻辑判断每种题型做题方法又不一样。 才本文采用总分的形式结构。 每一小标题的下面紧接着就是总结。二、图形推理常见的命题形式 图形推理常见的命题形式&#xff1a; 1.…

路飞项目--04

分析后端接口 # 用户板块--原型图--分析需要写哪些接口 多方式登录接口 短信登录接口 发送短信接口 短信注册接口 校验手机号是否注册接口 手机号是否存在接口 思路&#xff1a; 1 用了全局异常捕获&#xff0c;直接抛出异常报错 2 路由用了自定义路由&…

剑指offer——删除链表的节点

题目描述&#xff1a;给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。返回删除后的链表的头节点。 数据范围&#xff1a; 0 <链表节点值 < 10000 0 <链表长度 < 10000 示例1&#xff1a; 输入&#xff1a;{2,5,1,9}&#xff…

NIO-Selector详解

NIO-Selector详解 Selector概述 Selector选择器&#xff0c;也可以称为多路复⽤器。它是Java NIO的核⼼组件之⼀&#xff0c;⽤于检查⼀个或多个Channel的状态是否处于可读、可写、可连接、可接收等。通过⼀个Selector选择器管理多个Channel&#xff0c;可以实现⼀个线程管理…

STM32标准库——(5)EXTI外部中断

1.中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行 中断优先级&#xff…

Ribbon 体系架构解析

前面已经介绍了服务治理相关组件&#xff0c;接下来趁热打铁&#xff0c;快速通关Ribbon&#xff01;前面我们了解了负载均衡的含义&#xff0c;以及客户端和服务端负载均衡模型&#xff0c;接下来我们就来看下SpringCloud 下的客户端负载均衡组件Ribbon 的特点以及工作模型。 …

day04 两两交换链表中的节点、删除链表倒数第N个节点、链表相交、环形链表II

题目链接&#xff1a;leetcode24-两两交换链表中的节点, leetcode19-删除链表倒数第N个节点, leetcode160-链表相交, leetcode142-环形链表II 两两交换链表中的节点 基础题没有什么技巧 解题思路见代码注释 时间复杂度: O(n) 空间复杂度: O(1) Go func swapPairs(head *Li…

Android Handler完全解读

一&#xff0c;概述 Handler在Android中比较基础&#xff0c;本文笔者将对此机制做一个完全解读。读者可简单参考上述类图与时序图&#xff0c;便于后续理解。 二&#xff0c;源码解读 1&#xff0c;主线程伊始 众所周知&#xff0c;通过Zygote的fork方式&#xff0c;新创建…

腾讯云轻量应用Ubuntu服务器如何一键部署幻兽帕鲁Palworld私服?

幻兽帕鲁/Palworld是一款2024年Pocketpair开发的开放世界生存制作游戏&#xff0c;在帕鲁的世界&#xff0c;玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。而帕鲁可以进行战斗、繁殖、协助玩家做农活&#xff0c;也…

网页转文件下载工具

为了更快捷copy博客 做了个 网页转文件下载工具 1.0.1 更新如下&#xff1a; javaphpjava提供页面转换文件的微服务APIphp调用接口&#xff0c;输出文件下载支持网页转md 1.0.2 更新如下&#xff1a; 样式表切换&#xff0c;白天or黑夜&#xff0c;cookie七天保质期 未…

全国首条智慧高速开通,“车牌付” 会取代传统 ETC 收费吗?

2024年1月19日&#xff0c;全国首条智慧高速--杭绍甬高速杭绍段正式建成通车&#xff01;项目全长约52.8公里&#xff0c;设计速度120公里/小时&#xff0c;是长三角智慧交通示范项目。 01 杭绍甬 “慧眼”感知系统 全国首条智慧高速公路--杭绍甬高速在视频AI算法、IoT物联网、…

SpringBoot系列之MybatisPlus实现分组查询

SpringBoot系列之MybatisPlus实现分组查询 我之前博主曾记写过一篇介绍SpringBoot2.0项目怎么集成MybatisPlus的教程&#xff0c;不过之前的博客只是介绍了怎么集成&#xff0c;并没有做详细的描述各种业务场景&#xff0c;本篇博客是对之前博客的补充&#xff0c;介绍在mybat…

mac裁剪图片

今天第一次用mac裁剪图片&#xff0c;记录一下过程&#xff0c;差点我还以为我要下载photoshop了&#xff0c; 首先准备好图片 裁剪的目的是把图片的标题给去掉&#xff0c;但是不能降低分辨率&#xff0c;否则直接截图就可以了 解决办法 打开原始图片(不要使用预览&#xf…

【机器学习笔记】0 基础知识之python基础

注&#xff1a;本文内容仅为个人学习笔记&#xff0c;教程为黄海广老师主讲的机器学习入门系列&#xff0c; 课程链接&#xff08;中国大学慕课&#xff0c;有习题和证书&#xff09; 课程资源&#xff08;pdf版本课件和代码&#xff09;公布在Github链接 课程视频也可以在b站观…

python10-Python的字符串之拼接字符串

如果直接将两个字符串紧挨着写在一起&#xff0c;Python就会自动拼接它们&#xff0c;例如如下代码。 s1 "软件测试划水老师傅&#xff0c;"软件测试老痞print(s1) 上面代码将会输出: 软件测试划水老师傅&#xff0c;软件测试老痞 上面这种写法只是书写字符串的一…