欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解JAVA中static的作用

 更新時間:2020年06月08日 16:32:07   作者:添碼星空  
這篇文章主要介紹了JAVA中static的作用,文中講解非常細致,代碼幫助大家更好的理解,感興趣的朋友可以了解下

1、深度總結

  引用一位網(wǎng)友的話,說的非常好,如果別人問你static的作用;如果你說靜態(tài)修飾 類的屬性 和 類的方法 別人認為你是合格的;如果是說 可以構成 靜態(tài)代碼塊,那別人認為你還可以; 如果你說可以構成 靜態(tài)內(nèi)部類, 那別人認為你不錯;如果你說了靜態(tài)導包,那別人認為你很OK;

  那我們就先在這幾方面一一對static進行總結;然后說一些模糊的地方,以及一些面試中容易問道的地方;

1)static方法

  static方法一般稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對象就可以進行訪問,因此對于靜態(tài)方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態(tài)方法中不能訪問類的非靜態(tài)成員變量和非靜態(tài)成員方法,因為非靜態(tài)成員方法/變量都是必須依賴具體的對象才能夠被調用。

  但是要注意的是,雖然在靜態(tài)方法中不能訪問非靜態(tài)成員方法和非靜態(tài)成員變量,但是在非靜態(tài)成員方法中是可以訪問靜態(tài)成員方法/變量的。舉個簡單的例子:

在上面的代碼中,由于print2方法是獨立于對象存在的,可以直接用過類名調用。假如說可以在靜態(tài)方法中訪問非靜態(tài)方法/變量的話,那么如果在main方法中有下面一條語句:

  MyObject.print2();

  此時對象都沒有,str2根本就不存在,所以就會產(chǎn)生矛盾了。同樣對于方法也是一樣,由于你無法預知在print1方法中是否訪問了非靜態(tài)成員變量,所以也禁止在靜態(tài)成員方法中訪問非靜態(tài)成員方法。

  而對于非靜態(tài)成員方法,它訪問靜態(tài)成員方法/變量顯然是毫無限制的。

  因此,如果說想在不創(chuàng)建對象的情況下調用某個方法,就可以將這個方法設置為static。我們最常見的static方法就是main方法,至于為什么main方法必須是static的,現(xiàn)在就很清楚了。因為程序在執(zhí)行main方法的時候沒有創(chuàng)建任何對象,因此只有通過類名來訪問。

2)static變量

  static變量也稱作靜態(tài)變量,靜態(tài)變量和非靜態(tài)變量的區(qū)別是:靜態(tài)變量被所有的對象所共享,在內(nèi)存中只有一個副本【存放在方法區(qū)】,它當且僅當在類初次加載時會被初始化【加final和不加final的static變量初始化的位置不一樣】。而非靜態(tài)變量是對象所擁有的,在創(chuàng)建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。

  static成員變量的初始化順序按照定義的順序進行初始化。

3)static代碼塊

  static關鍵字還有一個比較關鍵的作用就是 用來形成靜態(tài)代碼塊以優(yōu)化程序性能。static塊可以置于類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執(zhí)行每個static塊,并且只會執(zhí)行一次【根據(jù)class加載原理 每個類加載一次 使用雙親委托加載】。

  初始化的順序 靜態(tài)代碼塊 > 構造代碼塊 > 構造函數(shù)

public class Client {
 {//構造代碼塊
 System.out.println("執(zhí)行構造代碼塊");
 }
}

為什么說static塊可以用來優(yōu)化程序性能,是因為它的特性:只會在類加載的時候執(zhí)行一次。下面看個例子:

class Person{
 private Date birthDate;
 
 public Person(Date birthDate) {
 this.birthDate = birthDate;
 }
 
 boolean isBornBoomer() {
 Date startDate = Date.valueOf("1946");
 Date endDate = Date.valueOf("1964");
 return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
 }
}

isBornBoomer是用來這個人是否是1946-1964年出生的,而每次isBornBoomer被調用的時候,都會生成startDate和birthDate兩個對象,造成了空間浪費,如果改成這樣效率會更好,其實就是利用了靜態(tài)代碼塊在內(nèi)存中值加載一次的機制:

class Person{
 private Date birthDate;
 private static Date startDate,endDate;
 static{
 startDate = Date.valueOf("1946");
 endDate = Date.valueOf("1964");
 }
 
 public Person(Date birthDate) {
 this.birthDate = birthDate;
 }
 
 boolean isBornBoomer() {
 return birthDate.compareTo(startDate)>=0 && birthDate.compareTo(endDate) < 0;
 }
}

因此,很多時候會將一些只需要進行一次的初始化操作都放在static代碼塊中進行。

4)靜態(tài)內(nèi)部類

這個地方不單獨寫靜態(tài)內(nèi)部類,通過和普通的內(nèi)部類對比來加深對靜態(tài)內(nèi)部類的理解:

為何要用內(nèi)部類?

   1.   內(nèi)部類一般只為其外部類使用;【供外部類使用說的很好  舉例 hashmap集合中 有一個內(nèi)部類 Entry 就是 轉為為 hashmap 存儲來使用】

   2.   內(nèi)部類提供了某種進入外部類的窗戶,內(nèi)部類存在外部類的引用,所以內(nèi)部類可以直接訪問外部類的屬性;

   3.   也是最吸引人的原因,每個內(nèi)部類都能獨立地繼承一個接口,而無論外部類是否已經(jīng)繼承了某個接口。因此,內(nèi)部類使多重繼承的解決方案變得更加完整。

定義在一個類內(nèi)部的類叫內(nèi)部類,包含內(nèi)部類的類稱為外部類。內(nèi)部類可以聲明public、protected、private等訪問限制,可以聲明 為abstract的供其他內(nèi)部類或外部類繼承與擴展,或者聲明為static、final的,也可以實現(xiàn)特定的接口。

外部類按常規(guī)的類訪問方式(以對象的方式)使用內(nèi)部 類,唯一的差別是外部類可以訪問內(nèi)部類的所有方法與屬性,包括私有方法與屬性,外部類訪問內(nèi)部類,需要創(chuàng)建對象訪問;有一點需要注意,內(nèi)部類不能訪問外部類所在的局部變量,只能訪問final修飾的局部變量。

舉例: 在方法中 定義內(nèi)部類  然后內(nèi)部類 調用方法的的入?yún)?則 入?yún)⒈仨毷?nbsp; final 修飾

在方法內(nèi)定義內(nèi)部類時,如果內(nèi)部類調用了方法中的變量,那么該變量必須申明為final類型,百思不得其解,后來想到應該是生命周期的原因,因為方法內(nèi)定義的變量是局部變量,離開該方法,變量就失去了作用,也就會自動被消除,而內(nèi)部類卻不會離開它所在方法就失去作用,它有更廣的生命周期,下面通過一個實例加以說明:

(1)創(chuàng)建實例

OutClass.InnerClass obj = outClassInstance.new InnerClass(); //注意是外部類實例.new,內(nèi)部類
AAA.StaticInner in = new AAA.StaticInner();//注意是外部類本身,靜態(tài)內(nèi)部類

(2)內(nèi)部類中的this

    內(nèi)部類中的this與其他類一樣是指的本身。創(chuàng)建內(nèi)部類對象時,它會與創(chuàng)造它的外圍對象有了某種聯(lián)系,于是能訪問外圍類的所有成員,不需任何特殊條件,可理解為內(nèi)部類鏈接到外部類。 用外部類創(chuàng)建內(nèi)部類對象時,此內(nèi)部類對象會秘密的捕獲一個指向外部類的引用,于是,可以通過這個引用來訪問外圍類的成員。

(3)外部類訪問內(nèi)部類

    內(nèi)部類類似外部類的屬性,因此訪問內(nèi)部類對象時總是需要一個創(chuàng)建好的外部類對象。外部類對象通過‘外部類名.this.xxx'的形式訪問內(nèi)部類的屬性與方法。如:

System.out.println("Print in inner Outer.index=" + pouter.this.index);
System.out.println("Print in inner Inner.index=" + this.index);

(4)內(nèi)部類向上轉型

   內(nèi)部類也可以和普通類一樣擁有向上轉型的特性。將內(nèi)部類向上轉型為基類型,尤其是接口時,內(nèi)部類就有了用武之地。如果內(nèi)部類是private的,只可以被它的外部類問,從而完全隱藏實現(xiàn)的細節(jié)。

(5)方法內(nèi)的類

   方法內(nèi)創(chuàng)建的類(注意方法中也能定義類),不能加訪問修飾符。另外,方法內(nèi)部的類也不是在調用方法時才會創(chuàng)建的,它們一樣也被事先編譯了。

(6)靜態(tài)內(nèi)部類

   定義靜態(tài)內(nèi)部類:在定義內(nèi)部類的時候,可以在其前面加上一個權限修飾符static。此時這個內(nèi)部類就變?yōu)榱遂o態(tài)內(nèi)部類。

通常稱為嵌套類,當內(nèi)部類是static時,意味著:

   [1]要創(chuàng)建嵌套類的對象,并不需要其外圍類的對象;

   [2]不能從嵌套類的對象中訪問非靜態(tài)的外圍類對象(不能夠從靜態(tài)內(nèi)部類的對象中訪問外部類的非靜態(tài)成員);

   嵌 套類與普通的內(nèi)部類還有一個區(qū)別:普通內(nèi)部類的字段與方法,只能放在類的外部層次上,所以普通的內(nèi)部類不能有static數(shù)據(jù)和static字段, 也不能包含嵌套類。但是在嵌套類里可以包含所有這些東西。也就是說,在非靜態(tài)內(nèi)部類中不可以聲明靜態(tài)成員,只有將某個內(nèi)部類修飾為靜態(tài)類,然后才能夠在這 個類中定義靜態(tài)的成員變量與成員方法。

   另外,在創(chuàng)建靜態(tài)內(nèi)部類時不需要將靜態(tài)內(nèi)部類的實例綁定在外部類的實例上。普通非靜態(tài)內(nèi)部類的 對象是依附在外部類對象之中的,要在一個外部類中定義一個靜態(tài)的內(nèi)部類,不需要利用關鍵字new來創(chuàng)建內(nèi)部類的實例。靜態(tài)類和方法只屬于類本身,并不屬于 該類的對象,更不屬于其他外部類的對象。

(7)內(nèi)部類標識符

   每個類會產(chǎn)生一個.class文件,文件名即為類名。同樣,內(nèi)部類也會產(chǎn)生這么一個.class文件,但是它的名稱卻不是內(nèi)部類的類名,而是有著嚴格的限制:外圍類的名字,加上$,再加上內(nèi)部類名字。

代碼具體:

public class OutClassTest {
 static int a;
 int b;

 public static void test() {
 System.out.println("outer class static function");
 }

 public static void main(String[] args) {
 // new一個外部類
 OutClassTest oc1 = new OutClassTest();
 // 通過外部類的對象new一個非靜態(tài)的內(nèi)部類
 OutClassTest.InnerClass no_static_inner = oc1.new InnerClass();
 // 調用非靜態(tài)內(nèi)部類的方法
 System.out.println(no_static_inner.getKey());

 // 調用靜態(tài)內(nèi)部類的靜態(tài)變量
 System.out.println(OutClassTest.InnerStaticClass.static_value);
 // 不依賴于外部類實例,直接實例化內(nèi)部靜態(tài)類
 OutClassTest.InnerStaticClass inner = new OutClassTest.InnerStaticClass();
 // 調用靜態(tài)內(nèi)部類的非靜態(tài)方法
 System.out.println(inner.getValue());
 // 調用內(nèi)部靜態(tài)類的靜態(tài)方法
 System.out.println(OutClassTest.InnerStaticClass.getMessage());
 }

 private class InnerClass {
 // 只有在靜態(tài)內(nèi)部類中才能夠聲明或定義靜態(tài)成員
 // private static String tt = "0";
 private int flag = 0;

 public InnerClass() {
 // 三.非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問外部類的非靜態(tài)變量和靜態(tài)變量
 System.out.println("InnerClass create a:" + a);
 System.out.println("InnerClass create b:" + b);
 System.out.println("InnerClass create flag:" + flag);
 //
 System.out.println("InnerClass call outer static function");
 // 調用外部類的靜態(tài)方法
 test();
 }

 public String getKey() {
 return "no-static-inner";
 }
 }

 private static class InnerStaticClass {
 // 靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員。
 private static String static_value = "0";

 private int flag = 0;

 public InnerStaticClass() {
 System.out.println("InnerClass create a:" + a);
 // 靜態(tài)內(nèi)部類不能夠訪問外部類的非靜態(tài)成員
 // System.out.println("InnerClass create b:" + b);
 System.out.println("InnerStaticClass flag is " + flag);
 System.out.println("InnerStaticClass tt is " + static_value);
 }

 public int getValue() {
 // 靜態(tài)內(nèi)部類訪問外部類的靜態(tài)方法
 test();
 return 1;
 }

 public static String getMessage() {
 return "static-inner";
 }
 }

 public OutClassTest() {
 // new一個非靜態(tài)的內(nèi)部類
 InnerClass ic = new InnerClass();
 System.out.println("OuterClass create");
 }

}

4)靜態(tài)導包

靜態(tài)導包就是java包的靜態(tài)導入,用import static代替import靜態(tài)導入包是JDK1.5中的新特性。

一般我們導入一個類都用 import com…..ClassName;而靜態(tài)導入是這樣:import static com…..ClassName.*;這里的多了個static,還有就是類名ClassName后面多了個.* ,意思是導入這個類里的靜態(tài)方法。當然,也可以只導入某個靜態(tài)方法,只要把 .* 換成靜態(tài)方法名就行了。然后在這個類中,就可以直接用方法名調用靜態(tài)方法,而不必用ClassName.方法名 的方式來調用。

好處:這種方法的好處就是可以簡化一些操作,例如打印操作System.out.println(…);就可以將其寫入一個靜態(tài)方法print(…),在使用時直接print(…)就可以了。但是這種方法建議在有很多重復調用的時候使用,如果僅有一到兩次調用,不如直接寫來的方便

example:

在Java 5中,import語句得到了增強,以便提供甚至更加強大的減少擊鍵次數(shù)功能,雖然一些人爭議說這是以可讀性為代價的。這種新的特性成為靜態(tài)導入。當你想使用static成員時,可以使用靜態(tài)導入(在API中的類和你自己的類上,都可以使用該特性)。下面是靜態(tài)導入前后的代碼實例:

在靜態(tài)導入之前:

public class TestStatic {

public static void main(String[] args) {

System.out.println(Integer.MAX_VALUE);

System.out.println(Integer.toHexString(42));

}

}

在靜態(tài)導入之后:

import static java.lang.System.out;

import static java.lang.Integer.*;


public class TestStaticImport {

public static void main(String[] args) {

out.println(MAX_VALUE);

out.println(toHexString(42));

}

}

讓我們看一下使用靜態(tài)導入特性的代碼中將發(fā)生什么:

1、雖然該特性通常稱為“靜態(tài)導入”,但語法必須是import static,后面跟你想導入的static成員的完全限定名稱,或者通配符。在本例中,我們在System類的out對象上進行靜態(tài)導入。

2、在本例中,我們可能想使用java.lang.Integer類的幾個static成員。該靜態(tài)導入語句使用通配符來表達“我想在此類中的所有靜態(tài)成員上進行靜態(tài)導入”。

3、現(xiàn)在我們終于看到靜態(tài)導入特性的好處!我們不必在System.out.println中鍵入System。太好了!另外,我們不必在Integer.MAX_VALUE中鍵入Integer。因此,在這行代碼中,我們能夠將快捷方式用于靜態(tài)方法和一個常量。

4、最后,我們進行更多的快捷操作,這次針對Integer類的方法。

關于該特性,我們已經(jīng)有點兒諷刺意味兒了,但不僅我們是這樣的。我們不認為節(jié)省少量的擊鍵次數(shù)會讓代碼

難于閱讀一點,但許多開發(fā)人員要求將它添加到語言中。

下面是使用靜態(tài)導入的幾條原則:

你必須說import static, 不能說static import。

提防含糊不清的命名static成員。例如,如果你對Integer類和Long類執(zhí)行了靜態(tài)導入,引用MAX_VALUE將導致一個編譯器錯誤,因為Integer和Long都有一個MAX_VALUE常量,并且Java不會知道你在引用哪個MAX_VALUE。

你可以在static對象引用、常量(記住,它們是static 或final)和static方法上進行靜態(tài)導入。

二.static關鍵字的誤區(qū)

1.static關鍵字會改變類中成員的訪問權限嗎?

  有些初學的朋友會將java中的static與C/C++中的static關鍵字的功能混淆了。在這里只需要記住一點:與C/C++中的static不同,Java中的static關鍵字不會影響到變量或者方法的作用域。在Java中能夠影響到訪問權限的只有private、public、protected(包括包訪問權限)這幾個關鍵字。看下面的例子就明白了:

2.能通過this訪問靜態(tài)成員變量嗎?

  雖然對于靜態(tài)方法來說沒有this,那么在非靜態(tài)方法中能夠通過this訪問靜態(tài)成員變量嗎?先看下面的一個例子,這段代碼輸出的結果是什么?

public class Main {  
 static int value = 33;
 
 public static void main(String[] args) throws Exception{
 new Main().printValue();
 }
 
 private void printValue(){
 int value = 3;
 System.out.println(this.value);
 }

輸出

33

這里面主要考察隊this和static的理解。this代表什么?this代表當前對象,那么通過new Main()來調用printValue的話,當前對象就是通過new Main()生成的對象。而static變量是被對象所享有的,因此在printValue中的this.value的值毫無疑問是33。在printValue方法內(nèi)部的value是局部變量,根本不可能與this關聯(lián),所以輸出結果是33。在這里永遠要記住一點:靜態(tài)成員變量雖然獨立于對象,但是不代表不可以通過對象去訪問,所有的靜態(tài)方法和靜態(tài)變量都可以通過對象訪問(只要訪問權限足夠)。

3.static能作用于局部變量么?

  在C/C++中static是可以作用域局部變量的,但是在Java中切記:static是不允許用來修飾局部變量。不要問為什么,這是Java語法的規(guī)定。

三.常見的筆試面試題

  下面列舉一些面試筆試中經(jīng)常遇到的關于static關鍵字的題目,僅供參考,如有補充歡迎下方留言。

1.下面這段代碼的輸出結果是什么?

public class Test extends Base{
 
 static{
 System.out.println("test static");
 }
 
 public Test(){
 System.out.println("test constructor");
 }
 
 public static void main(String[] args) {
 new Test();
 }
}
 
class Base{
 
 static{
 System.out.println("base static");
 }
 
 public Base(){
 System.out.println("base constructor");
 }
}

base static
test static
base constructor
test constructor

至于為什么是這個結果,我們先不討論,先來想一下這段代碼具體的執(zhí)行過程,在執(zhí)行開始,先要尋找到main方法,因為main方法是程序的入口,但是在執(zhí)行main方法之前,必須先加載Test類,而在加載Test類的時候發(fā)現(xiàn)Test類繼承自Base類,因此會轉去先加載Base類,在加載Base類的時候,發(fā)現(xiàn)有static塊,便執(zhí)行了static塊。在Base類加載完成之后,便繼續(xù)加載Test類,然后發(fā)現(xiàn)Test類中也有static塊,便執(zhí)行static塊。在加載完所需的類之后,便開始執(zhí)行main方法。在main方法中執(zhí)行new Test()的時候會先調用父類的構造器,然后再調用自身的構造器。因此,便出現(xiàn)了上面的輸出結果。

2.這段代碼的輸出結果是什么?

public class Test {
 Person person = new Person("Test");
 static{
 System.out.println("test static");
 }
 
 public Test() {
 System.out.println("test constructor");
 }
 
 public static void main(String[] args) {
 new MyClass();
 }
}
 
class Person{
 static{
 System.out.println("person static");
 }
 public Person(String str) {
 System.out.println("person "+str);
 }
}
 
 
class MyClass extends Test {
 Person person = new Person("MyClass");
 static{
 System.out.println("myclass static");
 }
 
 public MyClass() {
 System.out.println("myclass constructor");
 }
}

test static
myclass static
person static
person Test
test constructor
person MyClass
myclass constructor

類似地,我們還是來想一下這段代碼的具體執(zhí)行過程。首先加載Test類,因此會執(zhí)行Test類中的static塊。接著執(zhí)行new MyClass(),而MyClass類還沒有被加載,因此需要加載MyClass類。在加載MyClass類的時候,發(fā)現(xiàn)MyClass類繼承自Test類,但是由于Test類已經(jīng)被加載了,所以只需要加載MyClass類,那么就會執(zhí)行MyClass類的中的static塊。在加載完之后,就通過構造器來生成對象。而在生成對象的時候,必須先初始化父類的成員變量,因此會執(zhí)行Test中的Person person = new Person(),而Person類還沒有被加載過,因此會先加載Person類并執(zhí)行Person類中的static塊,接著執(zhí)行父類的構造器,完成了父類的初始化,然后就來初始化自身了,因此會接著執(zhí)行MyClass中的Person person = new Person(),最后執(zhí)行MyClass的構造器。

3.這段代碼的輸出結果是什么?

public class Test {
 
 static{
 System.out.println("test static 1");
 }
 public static void main(String[] args) {
 
 }
 
 static{
 System.out.println("test static 2");
 }
}

test static 1
test static 2

以上就是詳解JAVA中static的作用的詳細內(nèi)容,更多關于JAVA STATIC作用的資料請關注腳本之家其它相關文章!

相關文章

  • Spring Cloud Data Flow初體驗以Local模式運行

    Spring Cloud Data Flow初體驗以Local模式運行

    這篇文章主要介紹了Spring Cloud Data Flow初體驗以Local模式運行,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Mybatis報錯mapkey is required問題及解決

    Mybatis報錯mapkey is required問題及解決

    這篇文章主要介紹了Mybatis報錯mapkey is required問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MyBatis-Plus中SimpleQuery查詢實現(xiàn)

    MyBatis-Plus中SimpleQuery查詢實現(xiàn)

    本文主要介紹了MyBatis-Plus中SimpleQuery查詢實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • SpringBoot整合Lombok插件與使用詳解

    SpringBoot整合Lombok插件與使用詳解

    Lombok是Java開發(fā)的插件,通過注解自動生成常用代碼,如getter/setter,節(jié)省開發(fā)時間,提高效率,它在編譯期生成方法,不影響性能,安裝Lombok需要添加Maven依賴和IDEA插件,使用注解如@Data、@Getter等簡化代碼編寫,官網(wǎng)提供詳細文檔
    2024-09-09
  • Java實現(xiàn)BP神經(jīng)網(wǎng)絡MNIST手寫數(shù)字識別的示例詳解

    Java實現(xiàn)BP神經(jīng)網(wǎng)絡MNIST手寫數(shù)字識別的示例詳解

    這篇文章主要為大家詳細介紹了Java實現(xiàn)BP神經(jīng)網(wǎng)絡MNIST手寫數(shù)字識別的相關方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • Java實現(xiàn)統(tǒng)計文件夾下所有文件的字數(shù)

    Java實現(xiàn)統(tǒng)計文件夾下所有文件的字數(shù)

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)統(tǒng)計文件夾下所有文件的字數(shù),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • 利用Java巧妙解決Excel公式迭代計算

    利用Java巧妙解決Excel公式迭代計算

    迭代計算其實是在?Excel?中,一種公式的循環(huán)引用,那么如何利用Java語言巧妙解決Excel公式迭代計算的問題呢,下面小編就來和大家詳細講講吧
    2023-10-10
  • SpringBoot設置Session失效時間的解決方案

    SpringBoot設置Session失效時間的解決方案

    當過期時間是大于1分鐘的時候是沒有什么問題的,但是如果設置過期時間小于1分鐘,就會失效,這篇文章主要介紹了SpringBoot設置Session失效時間的解決方案,需要的朋友可以參考下
    2024-05-05
  • Micronaut框架的簡單使用介紹

    Micronaut框架的簡單使用介紹

    這篇文章主要介紹了Micronaut框架的簡單使用介紹,幫助大家更好的理解和學習使用Micronaut,感興趣的朋友可以了解下
    2021-04-04
  • SpringBoot自定義監(jiān)聽器的項目實踐

    SpringBoot自定義監(jiān)聽器的項目實踐

    Spring Boot提供了強大的事件模型,其中包括多種內(nèi)置監(jiān)聽器,同時也支持開發(fā)者自定義監(jiān)聽器,下面就來介紹下SpringBoot自定義監(jiān)聽器,感興趣的可以了解一下
    2024-03-03

最新評論