基于 Hadoop 生態圈的數據倉庫實踐 —— OLAP 與數據可視化(一)

目錄

一、OLAP 與 Impala 簡介

1. OLAP 簡介

2. Impala 簡介

(1)Impala 是什么

(2)為什么要使用 Impala

(3)適合 Impala 的使用場景

(4)Impala 架構

(5)開發 Impala 應用

(6)Impala 與 Hadoop 生態圈


一、OLAP 與 Impala 簡介

1. OLAP 簡介

? ? ? ? OLAP 是 Online Analytical Processing 的縮寫,意為聯機分析處理。此概念最早是由關系數據庫之父 E.F.Codd 于 1993 年提出,至今已有 20 多年。OLAP 允許以一種稱為多維數據集的結構,訪問業務數據源經過聚合和組織整理的后數據。以此為標準,OLAP 作為單獨的一類產品同聯機事務處理(OLTP)得以明顯區分。

? ? ? ? 在計算領域,OLAP 是一種快速應答多維分析查詢的方法,也是商業智能的一個組成部分,與之相關的概念還包括數據倉庫、報表系統、數據挖掘等。數據倉庫用于數據的存儲和組織,OLAP 集中于數據的分析,數據挖掘則致力于知識的自動發現,報表系統則側重于數據的展現。OLAP 從數據倉庫中的集成數據出發,構建面向分析的多維數據模型,再使用多維分析方法從多個不同的視角對多維數據進行分析比較,分析活動以數據驅動。

? ? ? ? 通過使用 OLAP 工具,用戶可以從多個視角交互式地分析多維數據。OLAP 由三個基本的分析操作構成:合并(上卷)、下鉆和切片。合并是指數據的聚合,即數據可以在一個或多個維度上進行累積和計算。例如,所有的營業部數據被上卷到銷售部門以分析銷售趨勢。下鉆是一種由匯總數據向下瀏覽細節數據的技術,比如用戶可以從產品分類的銷售數據下鉆查看單個產品的銷售數據。切片則是這樣一種特性,通過它用戶可以獲取 OLAP 立方體中的特定數據集合,并從不同的視角觀察這些數據。這些觀察數據的視角又叫做維度(例如通過經銷商、日期、客戶、產品或區域等等,查看同一銷售數據)。

? ? ? ? OLAP 系統的核心是 OLAP 立方體(或稱為多維立方體或超立方體)。它由被稱為度量的數值事實組成,這些度量被維度劃分歸類。一個 OLAP 立方體的例子如下圖所示,數據單元位于立方體的交叉點上,每個數據單元跨越產品、時間、位置等多個維度。通常使用一個矩陣接口操作 OLAP 立方體,例如電子表格程序的數據透視表,可以按維度分組執行聚合或求平均值等操作。立方體的元數據一般由關系數據庫中的星型模式或雪花模式生成,度量來自事實表的記錄,維度來自維度表。

? ? ? ? OLAP 分析所需的原始數據量是非常龐大的。一個分析模型,往往會涉及數千萬或數億條數據,甚至更多,而分析模型中包含多個維度數據,這些維度又可以由用戶作任意的組合。這樣的結果就是大量的實時運算導致過長的響應時間。想象一個 1000 萬條記錄的分析模型,如果一次提取 4 個維度進行組合分析,每個維度有 10 個不同的取值,理論上的運算次數將達到 10 的 12 次方。這樣的運算量將導致數十分鐘乃至更長的等待時間。如果用戶對維組合次序進行調整,或增加、或減少某些維度的話,又將是一個重新的計算過程。

? ? ? ? 從上面的分析中可以得出結論,如果不能解決 OLAP 運算效率問題的話,OLAP 將只會是一個沒有實用價值的概念。在 OLAP 的發展歷史中,常見的解決方案是用多維數據庫代替關系數據庫設計,將數據根據維度進行最大限度的聚合運算,運算中會考慮到各種維度組合情況,運算結果將生成一個數據立方體,并保存在磁盤上。用這種以空間換時間的預運算方式提高 OLAP 的速度。那么,在大數據流行的今天,又有什么產品可以解決 OLAP 的效率問題呢?且看 Hadoop 生態圈中適合做 OLAP 的組件 —— Impala。

2. Impala 簡介

(1)Impala 是什么

? ? ? ? Impala 是一個運行在 Hadoop 之上的大規模并行處理(MPP)查詢引擎,提供對 Hadoop 集群數據的高性能、低延遲的 SQL 查詢,使用 HDFS 作為底層存儲。它是基于 Google Dremel 的開源實現。對查詢的快速響應使交互式查詢和對分析查詢的調優成為可能,而這些在針對處理長時間批處理作業的 SQL-on-Hadoop 傳統技術上是無法完成的。

? ? ? ? Impala 與 Hive 元數據存儲數據庫相結合,在這兩個組件之間共享數據庫表,并且 Impala 與 HiveQL 的語法兼容。因此既可以使用 Impala 也可以使用 Hive 進行建立表、發布查詢、裝載數據等操作。Impala 可以在已經存在的 Hive 表上執行交互式實時查詢。

(2)為什么要使用 Impala

  • Impala 可以使用 SQL 訪問存儲在 Hadoop 上的數據,而傳統的 MapReduce 則需要掌握 Java 技術。Impala 還提供 SQL 直接訪問 HDFS 文件系統、HBase 數據庫系統或 Amazon S3 的數據。
  • Impala 在 Hadoop 生態系統之上提供并行處理數據庫技術,允許用戶執行低延遲的交互式查詢。
  • Impala 大都能在幾秒或幾分鐘內返回查詢結果,而相同的 Hive 查詢通常需要幾十分鐘甚至幾小時完成。
  • Impala 的實時查詢引擎非常適合對 Hadoop 文件系統上的數據進行分析式查詢。
  • 由于 Impala 能實時給出查詢結果,使它能夠很好地與 Pentaho、Tableau 這類報表或可視化工具一起使用(這些工具已經配備了 Impala 連接器,可以從 GUI 直接執行可視化查詢)。
  • Impala 與 Hadoop 生態圈相結合,內置對所有 Hadoop 文件格式(ORC、Parquet 等等)的支持。這意味著可以使用 Hadoop 上的各種解決方案存儲、共享和訪問數據,同時避免了數據豎井,并且降低了數據遷移的成本。
  • Impala 缺省使用 Parquet 文件格式,這種列式存儲對于典型數據倉庫場景下的大查詢是最優的。

? ? ? ? Impala 之所以使用 Parquet 文件格式,最初靈感來自于 Google 2010 年發表的 Dremel 論文,文中論述了對大規模查詢的優化。Parquet 是一種列式存儲,它不像普通數據倉庫那樣水平存儲數據,而是垂直存儲數據。當查詢在數值列上應用聚合函數時,這種存儲方式將帶來巨大的性能提升。原因是只需要讀取文件中該列的數據,而不是像 Hive 需要讀取整個數據集。Parquet 文件格式支持高效的壓縮編碼方式(例如 Hadoop 和 Hive 缺省使用的 snappy 壓縮),Parquet 文件也可用 Hive 和 Pig 處理。

(3)適合 Impala 的使用場景

  • 需要低延遲得到查詢結果。
  • 快速分析型查詢。
  • 實時查詢。
  • 需要多次處理相同類型的查詢。

? ? ? ? 總而言之,Impala 非常適合 OLAP 類型的查詢需求。

(4)Impala 架構

? ? ? ? Impala 架構圖如下所示。

? ? ? ? Impala 服務器是一個分布式、大規模并行處理(MPP)數據庫引擎。它由不同的守護進程組成,每種守護進程運行在Hadoop集群中的特定主機上。其中 Impalad、Statestored、Catalogd 三個守護進程在其架構中扮演主要角色。

  • Impala 守護進程

? ? ? ? Impala 的核心組件是一個運行在集群中每個數據節點上的守護進程,物理表現為 impalad 進程。該進程讀寫數據文件,接收從 impala-shell 命令行、Hue、JDBC、ODBC 提交的查詢請求,將查詢工作并行分布到集群的數據節點上,并將查詢的中間結果返回給中心協調節點。

? ? ? ? 可以將查詢提交至任意一個數據節點上運行的 Impala 守護進程,此守護進程實例擔任該查詢的協調器,其他節點提交部分中間結果返給協調器,協調器構建查詢的最終結果集。當在試驗環境使用 impala-shell 命令行運行 SQL 時,出于方便性,通常總是連接同一個 Impala 守護進程。而在生產環境負載的集群中,可以采用循環的方式,通過 JDBC 或 ODBC 接口,將每個查詢輪流提交至不同的 Impala 守護進程,已達到負載均衡。

? ? ? ? Impala 守護進程持續與 statestore 進行通信,以確認每個節點健康狀況以及是否可以接收新的任務。

? ? ? ? 當集群中的任何 Impala 節點建立、修改、刪除任何類型的對象,或者通過 Impala 處理一個 insert 或 load data 語句時,catalogd 守護進程(Impala 1.2 引入)都會發出廣播消息。Impala 守護進程會接收這種從 catalogd 守護進程發出的廣播消息。這種后臺通信減少了對 refresh 或 invalidate metadata 語句的需要,而在 Impala 1.2 版本前,這些語句被用于在節點間協調元數據信息。

  • Impala Statestore

? ? ? ? 叫做 statestore 的 Impala 組件檢查集群中所有數據節點上 Impala 守護進程的健康狀況,并將這些信息持續轉發給每個 Impala 守護進程。其物理表現為一個名為 statestored 的守護進程,該進程只需要在集群中的一臺主機上啟動。如果 Impala 守護進程由于硬件、軟件、網絡或其他原因失效,statestore 會通知所有其他的 Impala 守護進程,這樣以后的查詢就不會再向不可到達的節點發出請求。

? ? ? ? statestore 的目的只是在發生某種錯誤時提供幫助,因此在正常操作一個 Impala 集群時,它并不是一個關鍵組件。即使 statestore 沒有運行或者不可用,Impala 守護進程依然會運行,并像通常一樣在它們中分法任務。 這時如果一個 Impala 守護進程失效,僅僅是降低了集群的魯棒性。當 statestore 恢復可用后,它會重建與 Impala 守護進程之間的通信并恢復監控功能。

? ? ? ? 在 Impala 中,所有負載均衡和高可用的考慮都是用于 Impala 守護進程的。statestored 和 catalogd 進程沒有高可用的需求,因為這些進程即使出現問題也不會引起數據丟失。當這些進程由于所在的主機停機而變成不可用時,可以這樣處理:先停止 Impala 服務,然后刪除 Impala StateStore 和 Impala Catalog 服務器角色,再在另一臺主機上添加這兩個角色,最后重啟 Impala服務。

  • Impala Catalog 服務

? ? ? ? 稱為 Catalog 服務的 Impala 組件將 Impala SQL 語句產生的元數據改變轉發至集群中的所有數據節點。其物理表現為一個名為 catalogd 的守護進程,該進程只需要在集群中的一臺主機上啟動,而且應該與 statestored 進程在同一臺主機上。

? ? ? ? 由于 catalog 服務的存在,當通過執行 Impala 語句而改變元數據時,不需要再發出 refresh 或 invalidate metadata 語句。然而,當通過 Hive 執行建立表、裝載數據等操作后,在一個 Impala 節點上執行查詢前,仍然需要先發出 refresh 或 invalidate metadata 語句。例如,通過 Impala 執行的 create table、insert 或其他改變表或改變數據的操作,無需執行 refresh and invalidate metadata 語句。而如果這些操作是用過 Hive 執行的,或者是直接操縱的 HDFS 數據文件,仍需執行 refresh and invalidate metadata 語句(只需在一個 Impala 節點執行,而不是全部節點)。

? ? ? ? 缺省情況下,元數據在 Impala 啟動時異步裝載并緩存,這樣 Impala 可以立即接收查詢請求。如果想讓 Impala 等所有元數據裝載后再接收查詢請求,需要設置 catalogd 的配置選項 load_catalog_in_background=false。

(5)開發 Impala 應用

1. Impala SQL 方言

? ? ? ? Impala 的核心開發語言是 SQL,也可以使用 Java 或其他語言,通過 JDBC 或 ODBC 接口與 Impala 進行交互,許多商業智能工具都使用這種方式。對于特殊的分析需求,還可以用 C++ 或 Java 編寫用戶定義的函數(UDFs),補充 SQL 內建的功能。

? ? ? ? Impala 的 SQL 方言與 Hive 組件(HiveQL)在語法上高度兼容。正因如此,對于熟悉 Hadoop 架構上 SQL 查詢的用戶來說,Impala SQL 并不陌生。當前,Impala SQL 支持 HiveQL 語句、數據類型、內建函數的一個子集。Impala還包含一些附加的符合工業標準的內建函數,用于簡化從非 Hadoop 系統移植 SQL。

? ? ? ? 對于具有傳統數據庫或數據倉庫背景的用戶來說,下面關于 SQL 方言的內容應該是非常熟悉的:

  • 包含 where、group by、order by、with 等子句的 select 語句(Impala 的 with 子句并不支持遞歸查詢),連接操作,處理字符串、數字、日期的內建函數、聚合函數、子查詢、in 和 between 這樣的比較操作符等。這些 select 語句與 SQL 標準是兼容的。
  • 分區表在數據倉庫中經常使用。把一個或多個列作為分區鍵,數據按照分區鍵的值物理分布。當查詢的 where 子句中包含分區鍵列時,可以直接跳過不符合過濾條件的分區,這也就是所謂的“分區消除”。例如,假設有 10 年的數據,并且查詢語句中有類似 where year = 2015、where year > 2010、where year in (2014, 2015) 的 where 子句,則 Impala 跳過所有不匹配年份的數據,這會大大降低查詢的 I/O 數量。
  • 在 Impala 1.2 及其以上版本中,UDFs 可以在 select 和 insert...select 語句中執行定制的比較和轉換邏輯。

? ? ? ? 如果對 Hadoop 環境不夠熟悉但具有傳統數據庫或數據倉庫背景,需要學習并實踐一下 Impala SQL 與傳統 SQL 的不同之處:

  • Impala SQL 專注于查詢而不是 DML,所以沒有提供 update 或 delete 語句。對于沒用的陳舊數據,典型的做法是使用 drop table 或 alter table ... drop partition 語句直接刪除,或者使用? insert overwrite 語句將老數據替換掉。
  • 在 Impala 中,所有的數據創建都是通過 insert 語句,典型情況是通過查詢其他表批量插入數據。insert 語句有兩種插入數據的方式,insert into 在現有數據上追加,而 insert overwrite 則會替換整個表或分區的內容(效果就像先 truncate table 再 insert 一樣)。Impala 沒有 insert ... values 的插入單行的語法。
  • 比較常見的情況是,在其他環境建立表和數據文件,然后使用 Impala 對其進行實時查詢。相同的數據文件和表的元數據在 Hadoop 生態圈的不同組件之間共享。例如,Impala 可以訪問 Hive 里的表和數據,而 Hive 也可以訪問在 Impala 中建立的表及其數據。許多其他的 Hadoop 組件可以生成 Parquet 和 Avro 格式的文件,Impala 也可以查詢這些文件。
  • Hadoop 和 Impala 的關注點在大數據集上的數據倉庫型操作,因此 Impala 包含一些對于傳統數據庫應用系統非常重要的 SQL 方言。例如,可以在 create table 語句中指定分隔符,通過表讀取以逗號和 tab 做分隔的文本文件。還可以建立外部表,在不遷移和轉換現有數據文件的前提下讀取它們。
  • impala 讀取的大量數據可能不太容易確定其長度,所以不能強制字符串類型數據的長度。例如,可以定義一個表列為 string 類型,而不是象 char(1) 或 varchar(64) 限制字符串長度。(在 Impala 1.2 及其以后版本中,可以使用 char 和 varchar 類型限制字符串長度。)

2. Impala 編程接口

? ? ? ? 可以通過下面的接口連接 Impala,并向 Impala 守護進程提交請求。

  • impala-shell 命令行接口
  • Hue 基于 web 的用戶界面
  • JDBC
  • ODBC

? ? ? ? 使用這些接口,可以在異構環境下使用 Impala,如在非 Linux 平臺上運行的 JDBC、ODBC 應用,還可以使用 JDBC、ODBC 接口將 Impala 和商業智能工具結合使用。

? ? ? ? 每個 impalad 守護進程運行在集群中的不同節點上,監聽來自多個端口的請求。來自 impala-shell 和 Hue 的請求通過相同的端口被路由至 impalad 守護進程,而 JDBC 和 ODBC 的請求發往不同的 impalad 監聽端口。

(6)Impala 與 Hadoop 生態圈

? ? ? ? Impala 可以利用 Hadoop 生態圈中許多熟悉的組件,并且可以和這些組件交換數據,即可作為生產者也可作為消費者,因此可以靈活地加入到 ETL 管道中。

1.?Impala 與 Hive

? ? ? ? Impala 的一個主要目標是讓 SQL-on-Hadoop 操作足夠快,以吸引新的 Hadoop 用戶,或開發 Hadoop 新的使用場景。在實際中,許多 Hadoop 用戶使用 Hive 來執行長時間運行的、面向批處理的 SQL 查詢,而 Impala 可以利用這些已有的 Hive 架構。Impala 將它的表定義存儲在一個傳統的 MySQL 或 PostgreSQL 數據庫中,這個數據庫被稱為 metastore,而 Hive 也將其元數據存儲在同一個的數據庫中。通過這種方式,只要 Hive 表定義的文件類型和壓縮算法為 Impala 所支持,所有列的數據類型也是 Impala 所支持的類型,Impala 就可以訪問它。

? ? ? ? Impala 最初被設計成致力于提高查詢的性能,這就意味著在 Impala 里,select 語句能夠讀取的數據的類型比 insert 語句能夠插入的數據的類型要多。Impala 可以讀取使用 Hive 裝載的 Avro、RCFile 或 SequenceFile 文件格式的數據。

? ? ? ? Impala 查詢優化器也可以利用表和列的統計信息。在 Impala 1.2.2 版本前,使用 Hive 里的 analyze table 語句收集這些信息,在 Impala 1.2.2 及其更高版本中,使用 Impala 的 compute stats 語句收集信息。compute stats 更靈活也更簡單,并且不需要再 impala-shell 和 Hive shell 之間來回切換。

2.?Impala 的元數據和元數據存儲

? ? ? ? 前面討論 Impala 如何與 Hive 一起使用時提到,Impala 使用一個叫做 metastore 的數據庫維護它的表定義信息。同時 Impala 還跟蹤其他數據文件底層特性的元數據,如 HDFS 中數據塊的物理位置信息。

? ? ? ? 對于一個有很多分區或很多數據的大表,獲取它的元數據可能很耗時,有時需要花上幾分鐘的時間。因此每個 Impala 節點都會緩存這些元數據,當后面再查詢該表時,就可以復用緩存中的元數據。

? ? ? ? 如果表定義或表中的數據更新了,集群中所有其他的 Impala 守護進程在查詢該表前, ? 都必須能收到最新的元數據,并更新自己緩存的元數據。在 Impala 1.2 或更高版本中,這種元數據的更新是自動的,由 catalogd 守護進程為所有通過 Impala 發出的 DDL 和 DML 語句進行協調。

? ? ? ? 對于通過 Hive 發出的 DDL 和 DML,或者手工改變了 HDFS 文件的情況,還是需要在 Impala 中使用 refresh 語句(當新的數據文件被加到已有的表上)或 invalidate metadata 語句(新建表、刪除表、執行了 HDFS 的 rebalance 操作,或者刪除了數據文件)。invalidate metadata 語句獲取 metastore 中存儲的所有表的元數據。如果能夠確定在 Impala 外部只有特定的表被改變,可以為每一個受影響的表使用 refresh 表名,該語句只獲取特定表的最新元數據。

3.?Impala 與 HDFS

? ? ? ? Impala 使用分布式文件系統 HDFS 作為主要的數據存儲介質。Impala 依賴 HDFS 提供的冗余功能,保證在單獨節點因硬件、軟件或網絡問題失效后仍能工作。Impala 表數據物理表現為 HDFS 上的數據文件,這些文件使用常見的 HDFS 文件格式和壓縮算法。

4.?Impala 與 Hbase

? ? ? ? 除 HDFS 外,HBase 也是 Impala 數據存儲介質的備選方案。HBase 是建立在 HDFS 之上的數據庫存儲系統,不提供內建的 SQL 支持。許多 Hadoop 用戶使用 HBase 存儲大量的稀疏數據。在 Impala 中可以定義表,并映射為 HBase 中等價的表,通過這種方式就可以使用 Impala 查詢 HBase 表的內容,甚至可以聯合 Impala 表和 HBase 表執行關聯查詢。

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

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

相關文章

PyTorch L2范數詳解與應用

torch.norm 是什么 torch.norm(dot_product, p=2, dim=-1) 是 PyTorch 中用于計算張量 L2 范數的函數, 1. 各參數解析 dot_product:輸入張量,在代碼中形狀為 [batch_size, seq_len](每個元素是 token 隱藏狀態與關注向量的點積)。 p=2:指定計算L2 范數(歐幾里得范數)…

循環神經網絡RNN原理精講,詳細舉例!

第一部分:為什么需要RNN?在了解RNN是什么之前,我們先要明白它解決了什么問題。傳統的神經網絡,比如我們常見的前饋神經網絡(Feedforward Neural Network)或者卷積神經網絡(CNN)&…

如何用USRP捕獲手機信號波形(中)手機/基站通信

目錄: 如何用USRP捕獲手機信號波形(上)系統及知識準備 如何用USRP捕獲手機信號波形(中)手機/基站通信 如何用USRP捕獲手機信號波形(下)協議分析 四、信號捕獲結果 4.1 時域波形 我懷疑下面…

(LeetCode 面試經典 150 題 ) 155. 最小棧 (棧)

題目&#xff1a;155. 最小棧 思路&#xff1a;棧&#xff0c;時間復雜度0(n)。 在插入棧元素val時&#xff0c;同時加入一個字段&#xff0c;維護插入當前元素val時的最小值即可。 C版本&#xff1a; class MinStack { public:stack<pair<int,int>> st;MinStac…

算法:動態規劃 洛谷 線性狀態動態規劃 P1439【模板】最長公共子序列

思路&#xff1a;因為n<1e5,所以不能O&#xff08;n方&#xff09;的復雜度&#xff0c;所以常規的計算最長公共子序列的方法就不行&#xff0c;不過這題有個特點&#xff0c;就是a&#xff0c;b都是排列&#xff0c;那么a有的數b也有&#xff0c;并且數量還一樣&#xff0c…

Linux跑后臺服務

vi /usr/lib/systemd/system/my_service.service文件配置內容&#xff1a;[Unit] Descriptionmyprogram Afternetwork.target[Service] Userroot Typesimple ExecStart/home/userabc/programs/myprogram/myprogram.out Restarton-failure WorkingDirectory/home/userabc/progra…

Linux基礎練習題1

1、配置網絡地址 請為此虛擬機配置以下網絡參數&#xff1a; 1&#xff09;主機名&#xff1a;chenyu.example.com &#xff08;將chenyu改成自己名字的全拼&#xff09; 2&#xff09;IP 地址&#xff1a;192.168.100.100/24 3&#xff09;默認網關&#xff1a;192.168.100.25…

# 前端開發規范基礎匯總

前端開發規范基礎匯總 命名規范 常用的命名規范 camelCase&#xff08;小駝峰式命名法 —— 首字小寫&#xff09;PascalCase&#xff08;大駝峰式命名法 —— 首字大寫&#xff09;snake_case&#xff08;下劃線命名法&#xff09;kebab-case&#xff08;短橫線命名法&…

jQuery UI Tabs切換功能實例

jQuery UI Tabs切換功能使用jQuery UI實現Tabs切換功能的方法。代碼示例創建了一個包含四個標簽頁&#xff08;按鈕A-D&#xff09;的界面&#xff0c;每個標簽對應不同的內容區域。通過引入jQuery UI庫并調用tabs()方法實現基本切換功能。文章還提到可以通過配置選項修改默認行…

關于為什么stm32的開漏輸出可以讀取引腳的數值

在使用軟件模擬iic通信時&#xff0c;要將SDA線配置為開漏輸出&#xff0c;既然配置為開漏輸出&#xff0c;為什么程序還可以通過SDA線讀取數據&#xff1f;查閱手冊&#xff1a;只說了結論&#xff1a;在開樓模式下&#xff0c;對輸入數據寄存器的讀訪問可以得到IO狀態來看輸出…

墨者:SQL手工注入漏洞測試(SQLite數據庫)

1. 墨者學院&#xff1a;SQL手工注入漏洞測試(SQLite數據庫)&#x1f680; 2. SQLite數據庫注入特點&#x1f50d; SQLite數據庫和MySQL數據庫語法不同&#xff0c;不能直接套用MySQL的注入方式。但SQLite有個特殊的數據庫sqlite_master&#xff0c;它存儲了所有表結構信息&…

【Apache Tomcat】

目錄Tomcat 基本簡介Tomcat 架構組成Tomcat 的目錄結構Tomcat 的工作原理Tomcat 的配置文件Tomcat 與其他服務器對比Tomcat 使用場景Tomcat 與 Spring Boot常見問題與優化Tomcat&#xff08;全稱 Apache Tomcat&#xff09;是由 Apache 軟件基金會開發和維護的一款 開源的 Web …

Nginx參數proxy_set_header 與 add_header 核心區別

proxy_set_header 與 add_header 是 Nginx 中兩個用于操作 HTTP 頭部信息的指令&#xff0c;但作用方向和使用場景完全不同。以下是兩者的核心區別&#xff1a;核心區別概述特性proxy_set_headeradd_header作用方向? 請求頭&#xff08;Request Headers&#xff09; → 后端服…

若依框架-前端二次開發快速入門簡述

1.目錄如左圖所示&#xff0c;主要分為bin,build,node_modules,public,src幾個部分&#xff0c;我們從gitee上使用bash將項目克隆到本地后&#xff0c;進入項目目錄&#xff0c;并安裝好依賴后可以直接使用命令啟動服務&#xff0c;具體命令見README.md&#xff0c;安裝好依賴后…

day 41 類和方法

day 28 類是對屬性和方法的封裝&#xff0c;可以理解為模版&#xff0c;通過對模型實例化可以實現調用這個類的屬性和方法。比如創建一個隨機森林類&#xff0c;然后就可以調用它的訓練和預測方法。 一個常見的類的定義包括了&#xff1a; 1、關鍵字class 2、類名 3、語法固定…

Docker學習日志-Docker容器配置、Nginx 配置與文件映射

Docker學習日志-Docker容器配置、Nginx 配置與文件映射 docker run 之后能否再次修改卷映射或端口映射&#xff1f; 不能直接修改已創建容器的卷映射或端口映射。 Docker 的設計原則是 **容器是不可變的 **&#xff0c;也就是說&#xff1a; 一旦容器通過 docker run 創建完成&…

cpp實現音頻重采樣8k->16k及16k->8k

static int convert_8khz_to_16khz(void* dst_buf, void* src_buf, int src_size) {short* in static_cast<short*>(src_buf);short* out static_cast<short*>(dst_buf);int in_samples src_size / sizeof(short);// 邊界處理&#xff1a;前兩個樣本out[0] in[…

【機器學習】機器學習新手入門概述

目錄 一、機器學習概念 1.1基本概念 1.2 主要類型 1.2.1 監督學習&#xff08;Supervised Learning&#xff09; &#xff08;1&#xff09;基本介紹 &#xff08;2&#xff09;任務目標 &#xff08;3&#xff09;常見算法 &#xff08;4&#xff09;應用場景 1.2.2 無…

嵌入式硬件篇---ESP32穩壓板

制作 ESP32 穩壓板的核心目標是&#xff1a;給 ESP32 提供穩定的 3.3V 電源&#xff08;ESP32 的工作電壓必須是 3.3V&#xff09;&#xff0c;同時支持多種供電方式&#xff08;比如鋰電池、USB、外接電源&#xff09;&#xff0c;并具備保護功能&#xff08;防止過流、接反電…

sql server 刪除用戶時提示:數據庫主體在該數據庫中擁有 架構,無法刪除

sql server 刪除用戶時提示&#xff1a;數據庫主體在該數據庫中擁有 架構&#xff0c;無法刪除&#xff0c;怎么辦&#xff1f; 1、刪除用戶ncdb2、 數據庫主體在該數據庫中擁有 架構&#xff0c;無法刪除。3、查看該用戶擁有的架構4、找到該用戶擁有的這個架構&#xff0c;右鍵…