原创 什麼是迭代器(Iterator)

轉自:牛客網 一、什麼是迭代器(Iterator)? 答:Iterator接口提供了很多對集合元素進行迭代的方法。每一個集合類都包括了可以返回迭代器實例的迭代方法。迭代器可以在迭代過程中刪除底層集合的元素,但是不可以直接調用集合的remo

原创 同步方法和同步代碼塊的區別

轉自:牛客網 1.同步方法使用synchronized修飾方法,在調用該方法前,需要獲得內置鎖(java每個對象都有一個內置鎖),否則就處於阻塞狀態 代碼如: public synchronized void save(){//內容}

原创 如何確保N個線程可以訪問N個資源同時又不導致死鎖

轉自:牛客網 如何確保N個線程可以訪問N個資源同時又不導致死鎖? 答:使用多線程時,一種非常簡單的避免死鎖的方式就是:指定鎖的順序,並強制線程按照指定的順序獲取鎖。因此所有的線程都是以同樣的加鎖和釋放鎖,就不會出現死鎖了 下面是詳細解釋

原创 在監視器(Monitor)內部,是如何做到線程同步的

轉自:牛客網 在java虛擬機中,每個對象(object和class)通過某種邏輯關聯監視器,每個監視器和一個對象引用相關聯,爲了實現監視器的互斥功能,每個對象都關聯着一把鎖 一旦方法或者代碼塊被synchronized修飾,那麼這個部

原创 接口和抽象類的區別

一、接口和抽象類的區別是什麼? 1)接口中的成員變量都是public static final 的; 而抽象類隨意,且不必是public的 2)接口中的成員函數都是public abstract的;而抽象類可以存在非抽象的方法,且不必是p

原创 數據庫索引到底是什麼,是怎樣工作的?

轉自:數據庫索引到底是什麼,是怎樣工作的? 我們通過一個簡單的例子來開始教程,解釋爲什麼我們需要數據庫索引。假設我們有一個數據庫表 Employee, 這個表有三個字段(列)分別是 Employee_Name、Employee_Age

原创 什麼是值傳遞和引用傳遞

一、什麼是值傳遞和引用傳遞? 值傳遞,是對於基本數據類型的變量而言的。傳遞的是該變量的一個副本,改變副本並不影響原變量 引用傳遞,是對於對象型變量而言的。傳遞的是該變量地址的一個副本,並不是該對象本身 鏈接:https://www.no

原创 概括解釋線程的幾種狀態

轉自:牛客網 1.新建(new):新創建了一個線程對象 2.可運行(runnnable):線程對象創建後,其他線程(比如main線程)調用了該對象的start()方法。該狀態的線程位於可運行線程池中,等待被線程調度選中,獲取cpu的使用權

原创 進程和線程的區別

一、進程和線程的區別 1)進程是一個正在執行的程序;線程隸屬於某個進程,是進程內部的一個執行序列 2)進程是CPU、內存等資源佔用的基本單位;線程不能佔有這些資源 3)進程之間相互獨立,通信比較困難;線程共用一塊內存區域,通信較爲方便 4

原创 java集合類框架的基本接口有哪些

轉自:牛客網 java集合類框架的基本接口有哪些? 答:Collection:代表一組對象,每一個對象都是它的子元素 Set:不包括重複元素的Collection List:有順序的Collection,並且可以包含重複元素 Map:可以

原创 mybatis多個plugins的執行順序

一、前言    在mybatis官網中,有插件一說  mybatis plugins . 如果同時有多個插件,那麼他們的執行順序是怎樣的?   二、準備工作、代碼準備 1、 項目結構 2、TestDAO public interfa

原创 HashMap 1.8

一、HashMap的結構:數組+鏈表 1、那麼數組在哪裏?有多大? 我們來到HashMap的源碼,可以發現它裏面有個數組  transient Node<K,V>[] table; 數組的初始大小爲16,static final int

原创 selectById的流程

  上一篇,我們講過DAO層接口,是怎麼被mybatis自動實現的。DAO層接口,爲什麼能操作數據庫 這篇,我們繼續下去,講一講DAO層接口中selectById的流程。   一、準備工作   和上一篇文章中,用到的代碼幾乎沒有區別,只是

原创 DAO層接口,爲什麼能操作數據庫

public interface TestDAO { Test selectById(Integer id); } 一、問題:   如上代碼所示,爲什麼調用TestMapper的selectById方法,就能從數據庫中讀取數據?

原创 synchronized和Lock的區別

先把結論寫一下: 1)Lock是個接口,而synchronized是java關鍵字,synchronized是內置語言實現 2)synchronized在發生異常時,會自動釋放線程佔有的鎖,因此不會導致死鎖現象的發生;而Lock在發生異常