Java 面試中的高頻算法題詳解

💖 歡迎來到我的博客! 非常高興能在這里與您相遇。在這里,您不僅能獲得有趣的技術分享,還能感受到輕松愉快的氛圍。無論您是編程新手,還是資深開發者,都能在這里找到屬于您的知識寶藏,學習和成長。

🔍 博客內容包括:

  • Java核心技術與微服務:涵蓋Java基礎、JVM、并發編程、Redis、Kafka、Spring等,幫助您全面掌握企業級開發技術。
  • 大數據技術:涵蓋Hadoop(HDFS)、Hive、Spark、Flink、Kafka、Redis、ECharts、Zookeeper等相關技術。
  • 開發工具:分享常用開發工具(IDEA、Git、Mac、Alfred、Typora等)的使用技巧,提升開發效率。
  • 數據庫與優化:總結MySQL及其他常用數據庫技術,解決實際工作中的數據庫問題。
  • Python與大數據:專注于Python編程語言的深度學習,數據分析工具(如Pandas、NumPy)和大數據處理技術,幫助您掌握數據分析、數據挖掘、機器學習等技術。
  • 數據結構與算法:總結數據結構與算法的核心知識,提升編程思維,幫助您應對大廠面試挑戰。

🌟 我的目標:持續學習與總結,分享技術心得與解決方案,和您一起探索技術的無限可能!在這里,我希望能與您共同進步,互相激勵,成為更好的自己。

📣 歡迎訂閱本專欄,與我一起在這個知識的海洋中不斷學習、分享和成長!💻🚀


📍版權聲明:本博客所有內容均為原創,遵循CC 4.0 BY-SA協議,轉載請注明出處。

目錄

1. 兩數之和

題目描述

解題思路

代碼實現

處理方式

2. 反轉鏈表

題目描述

解題思路

代碼實現

處理方式

3. 深度優先搜索

題目描述

解題思路

代碼實現

處理方式

4. 排序相關算法

4.1 快速排序(Quick Sort)

題目描述

解題思路

解題步驟

代碼實現

復雜度分析

4.2 歸并排序(Merge Sort)

題目描述

解題思路

解題步驟

代碼實現

復雜度分析

5. 動態規劃算法

5.1 背包問題(Knapsack Problem)

題目描述

解題思路

解題步驟

代碼實現

復雜度分析

5.2 最長公共子序列(Longest Common Subsequence)

題目描述

解題思路

解題步驟

復雜度分析

6. 回溯算法

6.1 N皇后問題(N-Queens Problem)

題目描述

解題思路

解題步驟

代碼實現

復雜度分析

7. 貪心算法

7.1 活動選擇問題(Activity Selection Problem)

題目描述

解題思路

解題步驟

代碼實現

復雜度分析


Java 面試中,算法題是一個重要且常見的涉及領域。面試對算法效率和處理方式有高要求,下面將通過解析經典題目,配合解題思路和代碼實現進行詳細說明。


1. 兩數之和

題目描述

給定一個整數數組(nums)和一個目標值(target),請從數組中找出兩個元素,使它們之和為 target。假設每種計算僅能有一個結果,不允許重復使用數組中的元素。

解題思路
  1. 設計一個響應快速查詢的數據結構(如 HashMap),用于存儲數組元素和它們的位置。

  2. 遍歷數組,對于每個元素(nums[i]),計算 target - nums[i],檢查該值是否已存在于 HashMap。

  3. 如果存在,返回它們的位置;如果不存在,將當前元素和位置保存到 HashMap。

代碼實現
import java.util.HashMap;public class TwoSum {public int[] twoSum(int[] nums, int target) {HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int complement = target - nums[i];if (map.containsKey(complement)) {return new int[]{map.get(complement), i};}map.put(nums[i], i);}throw new IllegalArgumentException("No two sum solution");}
}
處理方式
  • 時間處理復雜度: O(n),遍歷數組一次。

  • 空間復雜度: O(n),依賴于 HashMap。


2. 反轉鏈表

題目描述

給定一個單鏈表,請反轉該鏈表。

解題思路
  1. 通過一個進程實現反轉:保存當前節點的上一節點,重新設置指針。

  2. 使用三個指針:pre、cur和next,采用進程盡頭更新。

代碼實現
class ListNode {int val;ListNode next;ListNode(int x) { val = x; }
}public class ReverseLinkedList {public ListNode reverseList(ListNode head) {ListNode prev = null;ListNode current = head;while (current != null) {ListNode nextTemp = current.next;current.next = prev;prev = current;current = nextTemp;}return prev;}
}
處理方式
  • 時間復雜度: O(n),遍歷鏈表一次。

  • 空間復雜度: O(1),只依賴指針。


3. 深度優先搜索

題目描述

給定一個整數矩陣,通過深度優先搜索(DFS)進行訪問,并實現目標方案。

解題思路
  1. 通過通用的算法回退,可以對于任何格式基于規劃優先加量。

  2. 用一個標記數據進行處理。

代碼實現
public class DepthFirstSearch {private static final int[] dx = {-1, 1, 0, 0};private static final int[] dy = {0, 0, -1, 1};public void dfs(int[][] grid, boolean[][] visited, int x, int y) {if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length || visited[x][y] || grid[x][y] == 0) {return;}visited[x][y] = true;for (int i = 0; i < 4; i++) {int nx = x + dx[i];int ny = y + dy[i];dfs(grid, visited, nx, ny);}}
}
處理方式
  • 時間復雜度: O(n × m),基于全部格式可進行加量進。

  • 空間復雜度: O(n × m),采用標記記錄。


4. 排序相關算法

4.1 快速排序(Quick Sort)
題目描述

給定一個無序的數組,要求通過快速排序算法將數組排序。

解題思路

快速排序的基本思想是:通過一個基準元素(pivot)將數組分成兩部分,其中一部分的元素都小于基準元素,另一部分的元素都大于基準元素。然后遞歸地對這兩部分進行排序。

解題步驟
  1. 選擇一個基準元素,通常選擇數組的第一個元素或最后一個元素。
  2. 通過一次排序將數組分成兩部分,左側部分小于基準元素,右側部分大于基準元素。
  3. 遞歸地對左右兩部分數組進行排序,直到數組的大小為1。
代碼實現
public class QuickSort {public void quickSort(int[] arr, int left, int right) {if (left < right) {int pivotIndex = partition(arr, left, right);quickSort(arr, left, pivotIndex - 1);quickSort(arr, pivotIndex + 1, right);}}private int partition(int[] arr, int left, int right) {int pivot = arr[right];int i = left - 1;for (int j = left; j < right; j++) {if (arr[j] <= pivot) {i++;swap(arr, i, j);}}swap(arr, i + 1, right);return i + 1;}private void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void main(String[] args) {int[] arr = {9, 7, 5, 11, 12, 2, 14, 3, 10, 6};QuickSort qs = new QuickSort();qs.quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));}
}
復雜度分析
  • 時間復雜度
    • 最好和平均情況:O(n log n)
    • 最壞情況:O(n^2),發生在每次選擇的基準元素是最小或最大的情況下。
  • 空間復雜度:O(log n),主要是遞歸調用的棧空間。
4.2 歸并排序(Merge Sort)
題目描述

給定一個無序的數組,要求通過歸并排序算法將數組排序。

解題思路

歸并排序的核心思想是分治法,將數組分成兩個子數組,對每個子數組進行排序后合并。

解題步驟
  1. 將數組分成兩個子數組。
  2. 遞歸地對子數組進行排序。
  3. 合并兩個已排序的子數組,最終得到一個有序數組。
代碼實現
public class MergeSort {public void mergeSort(int[] arr) {if (arr.length < 2) {return;}int mid = arr.length / 2;int[] left = Arrays.copyOfRange(arr, 0, mid);int[] right = Arrays.copyOfRange(arr, mid, arr.length);mergeSort(left);mergeSort(right);merge(arr, left, right);}private void merge(int[] arr, int[] left, int[] right) {int i = 0, j = 0, k = 0;while (i < left.length && j < right.length) {if (left[i] <= right[j]) {arr[k++] = left[i++];} else {arr[k++] = right[j++];}}while (i < left.length) {arr[k++] = left[i++];}while (j < right.length) {arr[k++] = right[j++];}}public static void main(String[] args) {int[] arr = {9, 7, 5, 11, 12, 2, 14, 3, 10, 6};MergeSort ms = new MergeSort();ms.mergeSort(arr);System.out.println(Arrays.toString(arr));}
}
復雜度分析
  • 時間復雜度:O(n log n),無論是最壞、最好還是平均情況,歸并排序的時間復雜度始終是O(n log n)。
  • 空間復雜度:O(n),歸并排序需要額外的空間來存儲臨時數組。

5. 動態規劃算法

5.1 背包問題(Knapsack Problem)
題目描述

給定一組物品,每個物品有重量和價值,背包的最大承重是W,要求選擇一些物品放入背包,使得背包中的物品總價值最大。

解題思路

動態規劃的解法通過構建一個二維數組,表示每個背包容量下能夠獲得的最大價值。通過遞推公式,逐步填充數組,最終求得最大價值。

解題步驟
  1. 定義狀態:dp[i][j]表示前i個物品,在背包容量為j時的最大價值。
  2. 遞推公式:
    • 如果不選擇第i個物品:dp[i][j] = dp[i-1][j]。
    • 如果選擇第i個物品:dp[i][j] = dp[i-1][j-weight[i]] + value[i]。
  3. 初始化狀態:dp[0][j] = 0(沒有物品時,背包的最大價值為0)。
代碼實現
public class Knapsack {public int knapsack(int W, int[] weights, int[] values) {int n = weights.length;int[][] dp = new int[n + 1][W + 1];for (int i = 1; i <= n; i++) {for (int w = 1; w <= W; w++) {if (weights[i - 1] <= w) {dp[i][w] = Math.max(dp[i - 1][w], dp[i - 1][w - weights[i - 1]] + values[i - 1]);} else {dp[i][w] = dp[i - 1][w];}}}return dp[n][W];}public static void main(String[] args) {int[] weights = {2, 3, 4, 5};int[] values = {3, 4, 5, 6};int W = 5;Knapsack knapsack = new Knapsack();System.out.println(knapsack.knapsack(W, weights, values));}
}
復雜度分析
  • 時間復雜度:O(n * W),其中n是物品數量,W是背包的最大承重。
  • 空間復雜度:O(n * W),用于存儲dp數組。
5.2 最長公共子序列(Longest Common Subsequence)
題目描述

給定兩個字符串,求它們的最長公共子序列的長度。子序列是一個序列,可以通過刪除一些字符(或不刪除)來得到,但不能改變字符的順序。

解題思路

使用動態規劃的方法來解決這個問題。我們定義 dp[i][j] 為字符串 s1 的前 i 個字符與字符串 s2 的前 j 個字符的最長公共子序列的長度。

遞推公式如下:

  • 如果 s1[i-1] == s2[j-1],則 dp[i][j] = dp[i-1][j-1] + 1
  • 如果 s1[i-1] != s2[j-1],則 dp[i][j] = max(dp[i-1][j], dp[i][j-1])
解題步驟
  1. 初始化狀態:dp[i][0] = 0dp[0][j] = 0,表示任意一個字符串為空時,公共子序列長度為0。
  2. 遞推填充 dp 數組。
  3. 最終答案為 dp[s1.length][s2.length]
public class LCS {public int longestCommonSubsequence(String s1, String s2) {int m = s1.length();int n = s2.length();int[][] dp = new int[m + 1][n + 1];for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (s1.charAt(i - 1) == s2.charAt(j - 1)) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[m][n];}public static void main(String[] args) {LCS lcs = new LCS();String s1 = "abcde";String s2 = "ace";System.out.println(lcs.longestCommonSubsequence(s1, s2));  // Output: 3}
}
復雜度分析
  • 時間復雜度:O(m * n),其中m和n分別是兩個字符串的長度。
  • 空間復雜度:O(m * n),用于存儲dp數組。

6. 回溯算法

6.1 N皇后問題(N-Queens Problem)
題目描述

在一個 n x n 的棋盤上放置 n 個皇后,使得每個皇后都不能互相攻擊。皇后可以攻擊同一行、同一列和同一對角線上的其他皇后。求所有可能的放置方式。

解題思路

回溯算法的基本思想是通過遞歸構建解的過程,并在發現不滿足條件時返回。對于N皇后問題,我們可以逐行放置皇后,然后通過回溯來嘗試不同的放置方式。

我們可以使用三個數組來標記列和兩個對角線的使用情況,確保每個皇后都不互相攻擊:

  • cols[i]:表示列 i 是否已經有皇后。
  • diag1[i]:表示主對角線是否已被占用。
  • diag2[i]:表示副對角線是否已被占用。
解題步驟
  1. 從第一行開始放置皇后,并遞歸地嘗試其他行。
  2. 每放置一個皇后,檢查其列、主對角線和副對角線是否已經有其他皇后。
  3. 如果某一行沒有合法的放置位置,則回溯到上一行并嘗試新的放置方案。
代碼實現
import java.util.ArrayList;
import java.util.List;public class NQueens {public List<List<String>> solveNQueens(int n) {List<List<String>> result = new ArrayList<>();boolean[] cols = new boolean[n];  // 是否已經在列上放置皇后boolean[] diag1 = new boolean[2 * n];  // 主對角線boolean[] diag2 = new boolean[2 * n];  // 副對角線List<String> current = new ArrayList<>();backtrack(result, current, cols, diag1, diag2, n, 0);return result;}private void backtrack(List<List<String>> result, List<String> current, boolean[] cols, boolean[] diag1, boolean[] diag2, int n, int row) {if (row == n) {result.add(new ArrayList<>(current));return;}for (int col = 0; col < n; col++) {if (cols[col] || diag1[row + col] || diag2[row - col + n - 1]) {continue;  // 該位置被攻擊}// 放置皇后cols[col] = true;diag1[row + col] = true;diag2[row - col + n - 1] = true;char[] rowArr = new char[n];for (int i = 0; i < n; i++) {rowArr[i] = (i == col) ? 'Q' : '.';}current.add(new String(rowArr));// 嘗試放置下一個皇后backtrack(result, current, cols, diag1, diag2, n, row + 1);// 回溯current.remove(current.size() - 1);cols[col] = false;diag1[row + col] = false;diag2[row - col + n - 1] = false;}}public static void main(String[] args) {NQueens nq = new NQueens();List<List<String>> solutions = nq.solveNQueens(4);for (List<String> solution : solutions) {for (String row : solution) {System.out.println(row);}System.out.println();}}
}
復雜度分析
  • 時間復雜度:O(N!),因為在每一行可能有 N 個選擇,最壞情況下遞歸的次數為 N!
  • 空間復雜度:O(N),用于存儲列、對角線的狀態和當前解的數組。

7. 貪心算法

7.1 活動選擇問題(Activity Selection Problem)
題目描述

有若干個活動,每個活動有一個開始時間和結束時間,要求選擇盡可能多的活動,使得每個活動都不與已選擇的活動重疊。

解題思路

貪心算法的思想是,選擇結束時間最早的活動。每次選擇當前活動時,要求它與之前選擇的活動不重疊。

解題步驟
  1. 將所有活動按照結束時間排序。
  2. 從第一個活動開始選擇,選擇的條件是活動的開始時間要晚于已選活動的結束時間。
  3. 繼續選擇下一個符合條件的活動,直到所有活動處理完畢。
代碼實現
import java.util.Arrays;public class ActivitySelection {public void selectActivities(int[] start, int[] end) {int n = start.length;int[] selected = new int[n];// 根據活動的結束時間排序Integer[] indices = new Integer[n];for (int i = 0; i < n; i++) {indices[i] = i;}Arrays.sort(indices, (a, b) -> end[a] - end[b]);// 選擇第一個活動selected[0] = indices[0];int lastEnd = end[indices[0]];for (int i = 1; i < n; i++) {if (start[indices[i]] >= lastEnd) {selected[i] = indices[i];lastEnd = end[indices[i]];}}System.out.println("Selected Activities:");for (int i = 0; i < n; i++) {if (selected[i] != 0) {System.out.println("Activity " + selected[i] + ": Start = " + start[selected[i]] + ", End = " + end[selected[i]]);}}}public static void main(String[] args) {ActivitySelection as = new ActivitySelection();int[] start = {1, 3, 0, 5, 8, 5};int[] end = {2, 4, 6, 7, 9, 9};as.selectActivities(start, end);}
}
復雜度分析
  • 時間復雜度:O(N log N),因為排序操作

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

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

相關文章

【Python項目】手寫數字識別系統

【Python項目】手寫數字識別系統 技術簡介&#xff1a;采用Python技術、Django框架、MYSQL數據庫等實現。 系統簡介&#xff1a;手寫數字識別系統主要的功能有手寫字識別、手寫字管理、修改密碼、個人信息和用戶管理。 背景&#xff1a; 在當今這個飛速發展的時代&#xff0c;…

Springboot + vue 小區物業管理系統

&#x1f942;(???)您的點贊&#x1f44d;?評論&#x1f4dd;?收藏?是作者創作的最大動力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;點贊&#x1f44d;收藏??留言&#x1f4dd;歡迎留言討論 &#x1f525;&#x1f525;&…

空指針:HttpSession異常,SpringBoot集成WebSocket

異常可能性&#xff1a; 404 &#xff1a; 請檢查攔截器是否將請求攔截WebSocket握手期間HttpSession為空 HttpSession為空 方法一 &#xff1a; 網上參考大量的文檔&#xff0c;有說跟前端請求域名有關系的。 反正對我來說&#xff0c;沒啥用無法連接。 需使用 localhost&a…

什么是視頻孿生智慧能源?視頻孿生智慧能源的應用案例

?視頻孿生智慧能源是集三維地理信息系統、視頻虛實融合、數字孿生、人工智能等多技術于一體的綜合應用&#xff0c;旨在實現對能源系統的實時、動態、全方位監控和管理?。 具體來說&#xff0c;視頻孿生智慧能源通過以下方式實現其功能&#xff1a; ?技術融合?&#xff1a;…

【update 更新數據語法合集】.NET開源ORM框架 SqlSugar 系列

系列文章目錄 &#x1f380;&#x1f380;&#x1f380; .NET開源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目錄 系列文章目錄前言 &#x1f343;一、實體對象更新1.1 單條與批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 無主鍵/指定列…

006-excel數據輸出insert語句

一、在空白列插入&#xff0c;選擇需要的列 "INSERT INTO tab_name1 (code, name) VALUES ("&A1&", "&B1&");"二、 拖動填充塊&#xff0c;或者雙擊填充塊&#xff08;可以快速填充整列&#xff09; 三、直接把生成的 insert 語…

前端組件開發:組件開發 / 定義配置 / 配置驅動開發 / 爬蟲配置 / 組件V2.0 / form表單 / table表單

一、最早的靈感 最早的靈感來自sprider / 網絡爬蟲 / 爬蟲配置&#xff0c;在爬蟲爬取網站文章時候&#xff0c;會輸入給爬蟲一個配置文件&#xff0c;里邊的內容是一個json對象。里邊包含了所有想要抓取的頁面的信息。爬蟲通過這個配置就可以抓取目標網站的數據。其實本文要引…

43.Textbox的數據綁定 C#例子 WPF例子

固定最簡步驟&#xff0c;包括 XAML&#xff1a; 題頭里引入命名空間 標題下面引入類 box和block綁定屬性 C#&#xff1a; 通知的類&#xff0c;及對應固定的任務 引入字段 引入屬性 屬性雙觸發&#xff0c;其中一個更新block的屬性 block>指向box的屬性 從Textbo…

excel按行檢索(index+match)

假設你的數據表如下&#xff1a; 假設 數據區域是 A1:D4。 你想查詢某人在某個日期的數據。 實現步驟 公式 在某個單元格中使用以下公式&#xff1a; excel 復制代碼 INDEX(A2:D4, MATCH(“張三”, A2:A4, 0), MATCH(“2025/01/02”, A1:D1, 0)) 2. 公式拆解 MATCH(“張三”,…

信創改造-龍蜥操作系統搭載MySql、Tomcat等服務

龍蜥操作系統 Anolis OS 8 是 OpenAnolis 社區推出的完全開源、中立、開放的發行版&#xff0c;它支持多計算架構&#xff0c;也面向云端場景優化&#xff0c;兼容 CentOS 軟件生態。Anolis OS 8 旨在為廣大開發者和運維人員提供穩定、高性能、安全、可靠、開源的操作系統服務。…

FPGA EDA軟件的位流驗證

位流驗證&#xff0c;對于芯片研發是一個非常重要的測試手段&#xff0c;對于純軟件開發人員&#xff0c;最難理解的就是位流驗證。在FPGA芯片研發中&#xff0c;位流驗證是在做什么&#xff0c;在哪些階段需要做位流驗證&#xff0c;如何做&#xff1f;都是問題。 我們先整體的…

px、em 和 rem 的區別:深入理解 CSS 中的單位

文章目錄 前言一、px - 像素 (Pixel)二、em - 相對父元素字體大小 (Ems)三、rem - 相對于根元素字體大小 (Root Ems)四、綜合比較結語 前言 在CSS中&#xff0c;px、em和rem是三種用于定義尺寸&#xff08;如寬度、高度、邊距、填充等&#xff09;的長度單位。它們各自有不同的…

【CI/CD構建】關于不小心將springMVC注解寫在service層

背景 之前寫一個接口的時候沒有察覺到將RequestBody這個注解帶到service層了。 今天提交代碼的時候&#xff0c;插件沒有檢測到這個低級錯誤&#xff0c;導致試飛構建連maven編譯都過不了&#xff0c;maven找不到程序包org.springframework.web.bind.annotation這個包 結果…

Oracle Dataguard(主庫為雙節點集群)配置詳解(4):配置備庫

Oracle Dataguard&#xff08;主庫為雙節點集群&#xff09;配置詳解&#xff08;4&#xff09;&#xff1a;配置備庫 目錄 Oracle Dataguard&#xff08;主庫為雙節點集群&#xff09;配置詳解&#xff08;4&#xff09;&#xff1a;配置備庫一、為備庫配置靜態監聽1、配置 li…

《深入理解Mybatis原理》Mybatis中的緩存實現原理

一級緩存實現 什么是一級緩存&#xff1f; 為什么使用一級緩存&#xff1f; 每當我們使用MyBatis開啟一次和數據庫的會話&#xff0c;MyBatis會創建出一個SqlSession對象表示一次數據庫會話。 在對數據庫的一次會話中&#xff0c;我們有可能會反復地執行完全相同的查詢語句&…

win32匯編環境,窗口程序中單選框的一般操作示例

;運行效果 ;win32匯編環境,窗口程序中單選框的一般操作示例 ;比如在窗口程序中生成單選框&#xff0c;默認哪項選中&#xff0c;判斷當前選中哪一項&#xff0c;讓哪項選中&#xff0c;得到選中項的名稱等 ;直接抄進RadAsm可編譯運行。重點部分加備注。 ;以下是ASM文件 ;>&g…

從transformer到informer

Transformer和Informer都是深度學習領域中的模型架構&#xff0c;它們主要用于處理序列數據&#xff0c;如自然語言處理&#xff08;NLP&#xff09;和時間序列預測任務。 **Transformer**&#xff1a; Transformer模型最初在2017年由Google的研究者提出&#xff0c;它在NLP領…

hive知識體系

hive知識體系 hive知識體系 鏈接: 1Hive概覽 鏈接: 2Hive表類型 鏈接: 3Hive數據抽樣 鏈接: 4Hive計算引擎 鏈接: 5Hive存儲與壓縮 鏈接: 6Hive Sql 大全 鏈接: 6Hive Sql 大全-Hive 函數 鏈接: 6Hive Sql 大全-窗口函數 鏈接: 7Hive執行計劃 鏈接: 8Hive SQL底層執行原理 鏈接…

優化 Azure Synapse Dedicated SQL Pool中的 SQL 執行性能的經驗方法

在 Azure Synapse Dedicated SQL Pool中優化 SQL 執行涉及了解底層體系結構&#xff08;例如分布和分區&#xff09;、查詢優化&#xff08;例如避免不必要的子查詢和聯接&#xff09;&#xff0c;以及利用具體化視圖和 PolyBase 等工具進行高效數據加載。 1.有效使用分布和分…

個人主頁搭建全流程(Nginx部署+SSL配置+DCDN加速)

前言 最近開始準備秋招&#xff0c;打算做一個個人主頁&#xff0c;以便在秋招市場上更有競爭力。 目前&#xff0c;現有的一些搭建主頁的博文教程存在以下一些問題&#xff1a; 使用Github Page進行部署&#xff0c;這在國內訪問容易受阻使用寶塔面板等框架&#xff0c;功能…