GridBagLayout GridBagConstraints 筆記231130

實例化使用模板

		GridBagLayout gbl = new GridBagLayout();
//		gbl.columnWidths = new int[]{200,200,200}; // 用數組設置列
//		gbl.rowHeights   = new int[]{100,100,100,100,100}; // 用數組設置行GridBagConstraints gbc = new GridBagConstraints();/*** gridBagConstraints.fill* 當子組件比所在網格小時:* 設置 fill =* GridBagConstraints.NONE; 不拉伸, 是默認值* GridBagConstraints.HORIZONTAL;  水平填滿所在網格* GridBagConstraints.VERTICAL;    垂直填滿所在網格* GridBagConstraints.BOTH;        拉伸到所在網格大小,填滿所在網格, */gbc.fill = GridBagConstraints.NONE;
//		gbc.fill = GridBagConstraints.BOTH        ;/*** gridBagConstraints.anchor , `anchor`中文意思是: 錨(n), 拋錨(v)* 當子組件比所在網格小時:* 設置 anchor =* GridBagConstraints.CENTER;   位于水平和垂直的正中央,(默認值)* GridBagConstraints.EAST;   東* GridBagConstraints.SOUTH;  南* GridBagConstraints.WEST;   西* GridBagConstraints.NORTH;  北* GridBagConstraints.NORTHEAST;(東北,右上)* GridBagConstraints.SOUTHEAST;(東南,右下)* GridBagConstraints.SOUTHWEST;(西南,左上)* GridBagConstraints.NORTHWEST;(西北,左上)* 還有很多選項* 此屬性接受三種類型的值:相對于方向(orientation relative)、相對于基線(baseline relative)和絕對位置(absolute)。絕對位置值不依賴于其他因素,包括:CENTER(中心)、NORTH(北)、NORTHEAST(東北)、EAST(東)、SOUTHEAST(東南)、SOUTH(南)、SOUTHWEST(西南)、WEST(西)和NORTHWEST(西北)。
相對于方向的值依賴于容器的組件方向屬性,包括:PAGE_START(頁面開始)、PAGE_END(頁面結束)、LINE_START(行開始)、LINE_END(行結束)、FIRST_LINE_START(第一行開始)、FIRST_LINE_END(第一行結束)、LAST_LINE_START(最后一行開始)和LAST_LINE_END(最后一行結束)。
相對于基線的值依賴于基線位置,包括:BASELINE(基線)、BASELINE_LEADING(基線前導)、BASELINE_TRAILING(基線后尾)、ABOVE_BASELINE(基線之上)、ABOVE_BASELINE_LEADING(基線之上前導)、ABOVE_BASELINE_TRAILING(基線之上后尾)、BELOW_BASELINE(基線之下)、BELOW_BASELINE_LEADING(基線之下前導)和BELOW_BASELINE_TRAILING(基線之下后尾)。
默認值是CENTER,表示組件居中放置。*/gbc.anchor = GridBagConstraints.CENTER;
//		gbc.anchor = GridBagConstraints.NORTH;gbc.gridx = -1;     gbc.gridy = GridBagConstraints.RELATIVE;  //網格的橫縱坐標,從0開始, -1是RELATIVE相對自動gbc.gridwidth = 1;  gbc.gridheight = 1;  //橫向或縱向站幾個網格,如同html的td的colspan和rowspangbc.ipadx = 0;      gbc.ipady = 0;    //增加子組件寬高, gbc.weightx = 0; gbc.weighty = 0; 才有效gbc.weightx = 0;    gbc.weighty = 0;  //值為浮點數, 功能有點像css的grid的fr , 不為0時

GridBagLayout

  • columnWidths 用int數組設置的數量和寬度
  • rowHeights 用int數組設置的數量和寬度
  • columnWeights double數組, 默認是空,
  • rowWeights double數組, 默認是空,
columnWidths 和 rowHeights

三行三列

GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl);
gbl.columnWidths=new int[]{200,200,200}; // 用數組設置列
gbl.rowHeights = new int[]{100,100,100}; // 用數組設置行

單行單列

GridBagLayout gbl = new GridBagLayout(); frame.setLayout(gbl);
gbl.columnWidths=new int[]{200}; // 用數組設置列
gbl.rowHeights = new int[]{100}; // 用數組設置行
columnWeights 和 rowWeights

columnWeights
columnWeights是一個double數組,它包含一組可以覆蓋已計算列權重的值。如果這個字段是非空的,那么在所有列的權重被計算之后,這些值將被應用到GridBag布局中。如果columnWeights數組中的某個元素的值大于對應列的權重,那么該列將被分配columnWeights數組中對應元素的值作為權重。然而,如果columnWeights數組的元素數量超過列的數量,多余的元素將被忽略,而不會導致創建更多的列。

/*** This field holds the overrides to the column weights.* If this field is non-{@code null} the values are* applied to the gridbag after all of the columns* weights have been calculated.* If {@code columnWeights[i] >} weight for column i, then* column i is assigned the weight in {@code columnWeights[i]}.* If {@code columnWeights} has more elements than the number* of columns, the excess elements are ignored - they do* not cause more columns to be created.** @serial*/
public double[] columnWeights;
此字段包含列權重的覆蓋。如果此字段非空,則值將在計算完所有列權重后應用于網格包。如果columnWeights[i] > column i的權重,則column i被分配columnWeights[i]中的權重。如果columnWeights的元素多于列數,則多余的元素將被忽略 - 它們不會導致創建更多的列。

rowWeights
rowWeights是一個double數組,它包含行權重的覆蓋值。如果該字段不為空,則在計算完所有行權重后,這些值將被應用到網格包中。如果rowWeights[i]的值大于第i行的權重,則第i行將被分配rowWeights[i]中的權重。如果rowWeights的元素數量超過行數,多余的元素將被忽略,并且不會導致創建更多的行。

/*** This field holds the overrides to the row weights.* If this field is non-{@code null} the values are* applied to the gridbag after all of the rows* weights have been calculated.* If {@code rowWeights[i] > } weight for row i, then* row i is assigned the weight in {@code rowWeights[i]}.* If {@code rowWeights} has more elements than the number* of rows, the excess elements are ignored - they do* not cause more rows to be created.** @serial*/
這個字段持有對行權重的覆蓋。如果這個字段非空,那么這些值將在所有行權重被計算后應用于網格包(GridBag)。如果rowWeights[i] > i行的權重,那么i行將分配rowWeights[i]中的權重。如果rowWeights的元素數量超過行數,多余的元素將被忽略,它們不會導致創建更多的行。
public double[] rowWeights;

GridBagConstraint

GridBagConstraints 類包含許多用于定義這些約束的字段和方法。以下是一些常用的字段:

  • gridxgridy:指定組件在網格中的位置。
  • gridwidthgridheight:指定組件跨越的網格單元數量。
  • weightxweighty:指定組件在其行或列中的額外空間分配比例。
  • anchor:指定組件在其網格單元中的對齊方式。
  • fill:指定組件在其網格單元中的填充方式。
  • insets:指定組件的邊緣間距。

GridBagConstraints源碼的無參構造方法,可看出默認值

    public GridBagConstraints () {gridx = RELATIVE; //從0開始第幾列; 默認RELATIVE=-1,表示add時自動加列gridy = RELATIVE; //從0開始第幾行; 默認RELATIVE=-1,表示add時自動加行gridwidth = 1;  //如同colspan,橫跨幾列gridheight = 1;  //如共同rowspan,豎跨幾行weightx = 0;  //浮點數, 功能有點像css的grid的frweighty = 0;  //浮點數, 功能有點像css的grid的franchor = CENTER;fill = NONE;insets = new Insets(0, 0, 0, 0);ipadx = 0;  // 增加子件寬度, weightx=0時才有用ipady = 0;  // 增加子件高度, weighty=0時才有用}

GridBagConstraints源碼的設參構造方法

    public GridBagConstraints(int gridx, int gridy,int gridwidth, int gridheight,double weightx, double weighty,int anchor, int fill,Insets insets, int ipadx, int ipady) {this.gridx = gridx;this.gridy = gridy;this.gridwidth = gridwidth;this.gridheight = gridheight;this.fill = fill;this.ipadx = ipadx;this.ipady = ipady;this.insets = insets;this.anchor  = anchor;this.weightx = weightx;this.weighty = weighty;}

anchor

anchor中文意思是: 錨(n), 拋錨(v)

anchor 屬性決定了組件在其單元格中的位置。例如,如果 anchor 被設置為 GridBagConstraints.WEST,組件將被左對齊。

以下是一些可能的 anchor 值:

  • GridBagConstraints.CENTER:將組件居中在其單元格中(默認)。
  • GridBagConstraints.NORTH:將組件與其單元格的頂部對齊。
  • GridBagConstraints.SOUTH:將組件與其單元格的底部對齊。
  • GridBagConstraints.EAST:將組件與其單元格的右側對齊。
  • GridBagConstraints.WEST:將組件與其單元格的左側對齊。
  • GridBagConstraints.NORTHWEST:將組件與其單元格的左上角對齊。
  • GridBagConstraints.NORTHEAST:將組件與其單元格的右上角對齊。
  • GridBagConstraints.SOUTHWEST:將組件與其單元格的左下角對齊。
  • GridBagConstraints.SOUTHEAST:將組件與其單元格的右下角對齊。

還有更多取值,如與基線對齊相關的: GridBagConstraints.BASELINE, GridBagConstraints.BASELINE_LEADING, 和 GridBagConstraints.BASELINE_TRAILING 等值

anchor還有更多的取值,

此屬性接受三種類型的值:相對于方向(orientation relative)、相對于基線(baseline relative)和絕對位置(absolute)。

  • 絕對位置值不依賴于其他因素,包括:CENTER(中心)(默認值)、NORTH(北)、NORTHEAST(東北)、EAST(東)、SOUTHEAST(東南)、SOUTH(南)、SOUTHWEST(西南)、WEST(西)和NORTHWEST(西北)。

  • 相對于方向的值依賴于容器的組件方向屬性,包括:PAGE_START(頁面開始)、PAGE_END(頁面結束)、LINE_START(行開始)、LINE_END(行結束)、FIRST_LINE_START(第一行開始)、FIRST_LINE_END(第一行結束)、LAST_LINE_START(最后一行開始)和LAST_LINE_END(最后一行結束)。

  • 相對于基線的值依賴于基線位置,包括:BASELINE(基線)、BASELINE_LEADING(基線前導)、BASELINE_TRAILING(基線后尾)、ABOVE_BASELINE(基線之上)、ABOVE_BASELINE_LEADING(基線之上前導)、ABOVE_BASELINE_TRAILING(基線之上后尾)、BELOW_BASELINE(基線之下)、BELOW_BASELINE_LEADING(基線之下前導)和BELOW_BASELINE_TRAILING(基線之下后尾)。

默認值是 CENTER,表示組件居中放置。GridBagConstraints.CENTER


fill

這個字段用于當組件的顯示區域大于組件所請求的大小時。它決定了是否要調整組件的大小,以及如果要調整,該如何調整。

對于填充(fill)屬性,以下值是有效的:

? NONE:不調整組件的大小。(默認值)
? HORIZONTAL:使組件足夠寬,以水平填充其顯示區域,但不改變其高度。
? VERTICAL:使組件足夠高,以垂直填充其顯示區域,但不改變其寬度。
? BOTH:使組件完全填充其顯示區域。

默認值是NONE。這意味著,除非明確指定,否則組件的大小不會進行調整以適應其顯示區域。




weightxweighty
gbc.weightx ; gbc.weighty; 可實現css的grid的fr的效果

在這里插入圖片描述
注意f下面代碼or循環中的gbc.weighty = gbc.weightx = r*c;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class T2311300901 {public static void main(String...arguments)throws Exception{JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());frame.setBounds(100, 100, 800, 600);frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent wev) {System.exit(100);}});GridBagLayout gbl = new GridBagLayout();
//		gbl.columnWidths = new int[]{200,200,200}; // 用數組設置列
//		gbl.rowHeights   = new int[]{100,100,100,100,100}; // 用數組設置行GridBagConstraints gbc = new GridBagConstraints();gbc.fill = GridBagConstraints.BOTH;
//		gbc.anchor = GridBagConstraints.EAST;gbc.gridwidth = 1;  gbc.gridheight = 1; gbc.ipadx = 0;      gbc.ipady = 0;gbc.weightx = 0;    gbc.weighty = 0;JPanel panel = new JPanel(gbl); frame.getContentPane().add(panel);int xc=3 , yc=3;JButton jbtA2[][] = new JButton[yc][];for(int r=0;r<yc;r++) {jbtA2[r] = new JButton[xc];for(int c=0;c<xc;c++) {gbc.gridx=c;gbc.gridy=r;gbc.weighty = gbc.weightx = r*c;JButton jbt = new JButton("<html><div style='color:red;'>"+"R"+r+"C"+c+"</div></html>");
//				gbl.setConstraints(jbt, gbc);  panel.add(jbt);   // 可用 panel.add(jbt, gbc); 取代//👆👇上下句效果一樣,二選一panel.add(jbt, gbc);}}frame.setVisible(true);}
}




用 GridBagLayout 和 GridBagConstraints 來居中

例1 , 單網格居中
import java.awt.*;
import java.awt.event.*;import javax.swing.*;public class GridBag居中 {static JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());static GridBagLayout frameGbl = new GridBagLayout();static GridBagConstraints frameGbc = new GridBagConstraints();static {frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent ev) {System.exit(0);}});frame.setBounds(100, 100, 800, 600);frame.setLayout(frameGbl);}static JButton jbt = new JButton("jbt001");static {GridBagLayout gbl = frameGbl; GridBagConstraints gbc = frameGbc;// 將布局設為一列一行, 如果不設定, 在只加入一個子組件時也會自動變為一列一行, 但是沒有高寬, 即便fill=BOTH,由于網格的高寬為0,子組件依然是原始大小gbl.columnWidths = new int[] {300};  // 網格寬度gbl.rowHeights = new int[] {100};    // 網格高度gbc.fill = GridBagConstraints.BOTH;  // 橫縱拉伸為和網格一樣的寬高, 就可以用 columnWidths 和 rowHeights 來設定子組件的寬高frame.add(jbt, gbc);// 注意: 此時布局大小只是整個Button的大小,并不是容器的大小, 居中是因為容器的默認, 而不是 anchor 屬性默認值的作用}public static void main(String...arguments)throws Exception{frame.setVisible(true);}}

效果
在這里插入圖片描述
關鍵代碼

		// 將布局設為一列一行, 如果不設定, 在只加入一個子組件時也會自動變為一列一行, 但是沒有高寬, 即便fill=BOTH,由于網格的高寬為0,子組件依然是原始大小gbl.columnWidths = new int[] {300};  // 網格寬度gbl.rowHeights = new int[] {100};    // 網格高度gbc.fill = GridBagConstraints.BOTH;  // 橫縱拉伸為和網格一樣的寬高, 就可以用 columnWidths 和 rowHeights 來設定子組件的寬高frame.add(jbt, gbc);// 注意: 此時布局大小只是整個Button的大小,并不是容器的大小, 居中是因為容器的默認, 而不是 anchor 屬性默認值的作用

還有一些屬性因為默認值就滿足要求,所以不用設置

注意: 此時布局大小只是整個Button的大小,并不是容器的大小, 居中是因為容器的默認, 而不是 anchor 屬性默認值的作用


例2 , 九網格居中
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class GridBag居中2 {static JFrame frame = new JFrame(Thread.currentThread().getStackTrace()[1].getClassName());static GridBagLayout frameGbl = new GridBagLayout();static GridBagConstraints frameGbc = new GridBagConstraints();static {frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent ev) {System.exit(0);}});frame.setBounds(100, 100, 800, 600);frame.setLayout(frameGbl);}static JButton jbt = new JButton("""<html><span style="font-size:30px; color:blue; ">按鈕1</span></html>""");static {GridBagLayout gbl = frameGbl; GridBagConstraints gbc = frameGbc;// 將布局設為一列一行, 如果不設定, 在只加入一個子組件時也會自動變為一列一行, 但是沒有高寬, 即便fill=BOTH,由于網格的高寬為0,子組件依然是原始大小gbl.columnWidths = new int[] {9999,300,9999};  // 網格寬度, 設置3列, 只要左右相等,就能居中,即便總數超過容器寬度gbl.rowHeights = new int[] {666,300,666};    // 網格高度, 設置3列, 只要左右相等,就能居中,即便總數超過容器高度gbc.fill = GridBagConstraints.BOTH;  // 橫縱拉伸為和網格一樣的寬高, 就可以用 columnWidths 和 rowHeights 來設定子組件的寬高gbc.gridx=1; gbc.gridy=1;  // 放到中間格(橫豎第二格),索引從0開始,所以第二格的索引號是1gbc.anchor = GridBagConstraints.WEST;frame.add(jbt, gbc);}public static void main(String...arguments)throws Exception{frame.setVisible(true);}

效果

在這里插入圖片描述

關鍵代碼

		// 將布局設為一列一行, 如果不設定, 在只加入一個子組件時也會自動變為一列一行, 但是沒有高寬, 即便fill=BOTH,由于網格的高寬為0,子組件依然是原始大小gbl.columnWidths = new int[] {9999,300,9999};  // 網格寬度, 設置3列, 只要左右相等,就能居中,即便總數超過容器寬度gbl.rowHeights = new int[] {666,300,666};    // 網格高度, 設置3列, 只要左右相等,就能居中,即便總數超過容器高度gbc.fill = GridBagConstraints.BOTH;  // 橫縱拉伸為和網格一樣的寬高, 就可以用 columnWidths 和 rowHeights 來設定子組件的寬高gbc.gridx=1; gbc.gridy=1;  // 放到中間格(橫豎第二格),索引從0開始,所以第二格的索引號是1gbc.anchor = GridBagConstraints.WEST;frame.add(jbt, gbc);

可以用邊緣網格控制中間網格的位置, 只居中時, 可以將左右上下網格的高寬設很大,只要左等于右,上等于下,就能居中,并且可以用中間網格的大小調整子組件的大小

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

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

相關文章

14-1、IO流

14-1、IO流 lO流打開和關閉lO流打開模式lO流對象的狀態 非格式化IO二進制IO讀取二進制數據獲取讀長度寫入二進制數據 讀寫指針 和 隨機訪問設置讀/寫指針位置獲取讀/寫指針位置 字符串流 lO流打開和關閉 通過構造函數打開I/O流 其中filename表示文件路徑&#xff0c;mode表示打…

用Guava做本地緩存示例

緩存的作用 提升系統性能&#xff0c;暫時在內存中保存業務系統的數據處理結果&#xff0c;并且等待下次訪問使用 本地緩存和分布式緩存 緩存分為本地緩存與分布式緩存。本地緩存為了保證線程安全問題&#xff0c;一般使用ConcurrentMap的方式保存在內存之中&#xff0c;而常…

【KCC@南京】KCC南京“數字經濟-開源行”活動回顧錄

11月26日&#xff0c;由KCC南京、中科南京軟件研究所、傲空間、PowerData聯合主辦的 KCC南京“數字經濟-開源行” 的活動已圓滿結束。此次活動&#xff0c;3 場主題研討&#xff0c;11 場分享&#xff0c;現場參會人數 60&#xff0c;線上直播觀看 3000&#xff0c;各地小伙伴從…

Android畫布Canvas繪圖scale,Kotlin

Android畫布Canvas繪圖scale&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.…

數據倉庫工具Hive

1. 請解釋Hive是什么&#xff0c;它的主要用途是什么&#xff1f; Hive是一個基于Hadoop的數據倉庫工具&#xff0c;主要用于處理和分析大規模結構化數據。它可以將結構化的數據文件映射為一張數據庫表&#xff0c;并提供類似SQL的查詢功能&#xff0c;將SQL語句轉換為MapRedu…

Windows 和 MacOS 上安裝配置ADB(安卓調試橋)

一、Android 調試橋 (ADB) Android 調試橋&#xff08;ADB&#xff09; 是一款多功能命令行工具&#xff0c;它讓你能夠更便捷地訪問和管理 Android 設備。使用 ADB 命令&#xff0c;你可以輕松執行以下操作 在設備上安裝、復制和刪除文件&#xff1b;安裝應用程序&#xff1…

YOLOV3 SPP 目標檢測項目(針對xml或者yolo標注的自定義數據集)

1. 目標檢測的兩種標注形式 項目下載地址:YOLOV3 SPP網絡對自定義數據集的目標檢測(標注方式包括xml或者yolo格式) 目標檢測邊界框的表現形式有兩種: YOLO(txt) : 第一個為類別,后面四個為邊界框,x,y中心點坐標以及h,w的相對值 xml文件:類似于網頁的標注文件,里面會…

力扣第 375 場周賽(Java)

文章目錄 T1 統計已測試設備代碼解釋 T2 雙模冪運算代碼解釋 T3 統計最大元素出現至少 K 次的子數組代碼解釋 T4 統計好分割方案的數目代碼解釋 鏈接&#xff1a;第 375 場周賽 - 力扣&#xff08;LeetCode&#xff09; T1 統計已測試設備 給你一個長度為 n 、下標從 0 開始的…

JavaEE 08 線程池簡介

前言 前面我們談完了定時器,單例模式,阻塞隊列等的操作并且做了模擬實現,今天我們再來說一說線程池的操作以及一些鎖策略. 注:本章幾乎均為理論篇,實踐較少. 下面就讓我們開始吧. 線程池 我們知道因為進程的頻繁創建和銷毀,帶來的開銷過大,我們無法接受,所以我們引入了更輕量級…

Linux常見壓縮指令小結

為什么需要壓縮技術 我們都知道文件是以byte作為單位的&#xff0c;如果我們的文件僅僅在低位占一個1 0000 0001這種情況我們完全可以壓縮一下&#xff0c;將高位的0全部抹掉即可。 如上所說是一種壓縮技術&#xff0c;還有一種就是將1111(此處省略96個)一共100個1&#xff0…

mysql執行帶函數命令的sql腳本報錯

一、前言 開發給了一個帶函數的sql文件讓我執行&#xff0c;但是執行導入時報以下錯誤 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled 二、解決 在數據庫命令行中執行以下命令&#xff08;臨時生效&…

HarmonyOS4.0從零開始的開發教程11給您的應用添加彈窗

HarmonyOS&#xff08;十&#xff09;給您的應用添加彈窗 概述 在我們日常使用應用的時候&#xff0c;可能會進行一些敏感的操作&#xff0c;比如刪除聯系人&#xff0c;這時候我們給應用添加彈窗來提示用戶是否需要執行該操作&#xff0c;如下圖所示&#xff1a; 彈窗是一種…

AI:99-基于深度學習的飛機故障檢測與維修

?? 本文選自專欄:人工智能領域200例教程專欄 從基礎到實踐,深入學習。無論你是初學者還是經驗豐富的老手,對于本專欄案例和項目實踐都有參考學習意義。 ??? 每一個案例都附帶有在本地跑過的核心代碼,詳細講解供大家學習,希望可以幫到大家。歡迎訂閱支持,正在不斷更新…

【pycharm】Pycharm中進行Git版本控制

本篇文章主要記錄一下自己在pycharm上使用git的操作&#xff0c;一個新項目如何使用git進行版本控制。 文章使用的pycharm版本PyCharm Community Edition 2017.2.4&#xff0c;遠程倉庫為https://gitee.com/ 1.配置Git&#xff08;File>Settings&#xff09; 2.去Gitee創建…

記錄一次云原生線上服務數據遷移全過程

文章目錄 背景遷移方案調研遷移過程服務監控腳本定時任務暫停本地副本服務啟動&#xff0c;在線服務下線MySQL 數據遷移Mongo 數據遷移切換新數據庫 ip 本地服務啟動數據庫連接驗證服務打包部署服務重啟前端恢復正常監控腳本定時任務啟動舊服務器器容器關閉 遷移總結 背景 校園…

正確使用React組件緩存

簡介 正常來講的話當我們點擊組件的時候&#xff0c;該組件以及該組件的子組件都會重新渲染&#xff0c;但是如何避免子組件重新渲染呢&#xff0c;我們經常用memo來解決 React.memo配合useCallback緩存組件 父組件沒有傳props const Index ()> {console.log(子組件刷新…

Java14道高頻面試題

面試題 1、JWT ①、JWT(全稱:Json Web Token)是一個開放標準(RFC 7519),它定義了一種緊湊的、自包含的方式,用于作為 JSON 對象在各方之間安全地傳輸信息。 ②、JWT 的原理是&#xff0c;服務器認證以后&#xff0c;生成一個 JSON 對象&#xff0c;發回給用戶 ③、JWT是由頭…

機器學習基本概念介紹 2023

筆記來源于&#xff1a; https://www.youtube.com/watch?vphQK8xZpgoU&t172s https://www.youtube.com/watch?vXLyPFnephpY&t645s Machine/Deep Learning 機器學習概況來說&#xff0c;讓機器具備自動找函式的能力 &#xff08;Machine Learning 約等于 Looking …

智能優化算法應用:基于飛蛾撲火算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于飛蛾撲火算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于飛蛾撲火算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.飛蛾撲火算法4.實驗參數設定5.算法結果6.…

訂單系統的設計與海量數據處理實戰

概述 訂單系統可以說是整個電商系統中最重要的一個子系統&#xff0c;因此訂單數據可以算作電商企業最重要的數據資產。訂單系統從代碼上來說可分為兩部分&#xff1a;訂單程序和歷史訂單處理程序。數據存儲進行分庫分表。 訂單系統業務分析 對于一個合格的訂單系統&#xf…