04端木公司


1.XML映射中,如何使用LIKE進行模糊查詢

1.直接傳參法 直接傳參法,就是將要查詢的關鍵字keyword,在代碼中拼接好要查詢的格式,如%keyword%,然后直接作為參數傳入mapper.xml的映射文件中。

2.CONCAT()函數 MySQL的 CONCAT()函數用於將多個字符串連接成一個字符串,是最重要的mysql函數之一。

3.使用mybatis標簽<bind value='' name=''/>

4.在mybatis中xml文件中配置 name LIKE '%${name}%' 或者是 address LIKE "%"#{address}"%"

 

2.XML映射中,如何批量插入傳入的集合(Collection<E>)?,即如何根據集合生成如下SQL?

INSERT INTO TABLE_NAME(a,b,c) VALUES (a1,b1,c1),(a2,b2,c2)

3.XML映射中,如何在插入的同時獲取MYSQL自增字段(AUTO_INCREMENT)生成的值?

使用select last_insert_id()

@Insert("insert into table(content,questionid,active,submit,createtime) values(#{content},#{questionid},1,#{submit},#{createtime})")
    @SelectKey(statement="select last_insert_id()",before=false,keyProperty="_id",resultType=Integer.class,keyColumn="_id")
    int insertQuestionItem(QuestionItemInfo questionItemInfo);

 

 4.BlockingQueue相比普通的Queue最大的區別是什么?

阻塞隊列是與普通隊列的區別有兩點

1.阻塞隊列獲取元素時,如果隊列為空,則會等待隊列有元素,否則就阻塞隊列(普通隊列返回結果,無元素)

2.阻塞隊列放入元素時,如果隊列滿,則等待隊列,直到有空位置,然后插入。(普通隊列,要么直接擴容,要么直接無法插入,不阻塞)

 

阻塞隊列的最佳場景就是生產者和消費者,使用代碼時無需判斷直接獲取並處理(普通隊列得判斷有沒有元素,阻塞隊列不用判斷,無元素自身就會阻塞,直到有東西)

 

5.Thread.sleep()可能拋出的InterruptedException代表什么?如何處理?

當一個方法后面聲明可能會拋出InterruptedException異常時,說明該方法是可能會花一點時間,但是可以取消的方法。

拋InterruptedException的代表方法有:

1.Java.lang.Object類的wait方法

2.Java.lang.Thread類的sleep方法。

3.Java.lang.Thread類的join方法。



這里我們只看sleep方法。

interrupt方法是Thread類的實例方法,在執行的時候並不需要獲取Thread實例的鎖定,任何線程在任何時刻,都可以通過線程實例來調用其他線程的interrupt方法。當在sleep中的線程被調用interrupt方法時,就會放棄暫停的狀態,並拋出InterruptException異常,這樣一來,線程的控制權就交給了捕獲這個異常的catch塊了。



Interrupt方法的作用-------

interrupt方法只是改變了中斷狀態

sleep方法內部會不斷的檢查中斷狀態的值,從而自己拋出InterruptedException.

由 Thread 提供並受 Thread.sleep() 和 Object.wait() 支持的中斷機制就是一種取消機制;它允許一個線程請求另一個線程停止它正在做的事情。當一個方法拋出 InterruptedException 時,它是在告訴您,如果執行該方法的線程被中斷,它將嘗試停止它正在做的事情而提前返回,並通過拋出 InterruptedException 表明它提前返回。 行為良好的阻塞庫方法應該能對中斷作出響應並拋出 InterruptedException,以便能夠用於可取消活動中,而不至於影響響應。
————————————————
版權聲明:本文為CSDN博主「Silvia_flora」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lilylove1994/article/details/78964330

 

6.如何實現一個方法,該方法執行某項任務並設定某個時間限制,如果該任務能在限制時間內完成則返回任務執行結果,否則返回null?寫出核心代碼

ScheduledExecuterService service = Executors.newSinglThreadSchduledExecetor();

ScheduledFuture f = service.scheduleAtFixedDelay(task, initialDelay, period, time unit);

if currentDate = 00:00
f.cancel()
service.shutdown()

 7.

a.下述代碼在多線程環境中是否存在問題?若有,如何修正?

b.下述代碼中的volatile關鍵字是什么意思?如果刪除對該段代碼有何影響?

class Counter{
    private volatile int count = 0;

    public int getNext(){
        return ++count;    
    }     
}

 

8.@Controller中,跳轉("redirect:url")和轉發("forward:url")有什么區別?

 

1.從地址欄顯示來說
forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然后把這些內容再發給瀏覽器.瀏覽器根本不知道服務器發送的內容從哪里來的,所以它的地址欄還是原來的地址.
redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL.
2.從數據共享來說
forward:轉發頁面和轉發到的頁面可以共享request里面的數據.
redirect:不能共享數據.
3.從運用地方來說
forward:一般用於用戶登陸的時候,根據角色轉發到相應的模塊.
redirect:一般用於用戶注銷登陸時返回主頁面和跳轉到其它的網站等.
4.從效率來說
forward:高.
redirect:低.

 

 

9.

 

 

 

10.使用注解(如@Component)聲明Bean,如何指定Bean加載順序?

@Primary 注解

當系統中需要配置多個具有相同類型的bean時,@Primary可以定義這些Bean的優先級。下面將給出一個實例代碼來說明這一特性:

 

 

 

 

 

11.多個同類型的Bean,使用注解注入時如何指定?

@Qualifier 注解

當系統中存在同一類型的多個Bean時,@Autowired在進行依賴注入的時候就不知道該選擇哪一個實現類進行注入。此時,我們可以使用@Qualifier注解來微調,幫助@Autowired選擇正確的依賴項。下面是一個關於此注解的代碼示例:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM