Java基礎
1.集合list、set、map區別?
- List和Set是存儲單列數據的集合,Map是存儲鍵值對這樣的雙列數據的集合;
- List中存儲的數據是有順序的,並且值允許重複;Map中存儲的數據是無序的,它的鍵是不允許重複的,但是值是允許重複的;Set中存儲的數據是無順序的,並且不允許重複,但元素在集合中的位置是由元素的hashcode決定,即位置是固定的(Set集合是根據hashcode來進行數據存儲的,所以位置是固定的,但是這個位置不是用戶可以控制的,所以對於用戶來說set中的元素還是無序的)。
2.list、set、map的子類?
- list:
- Vector:內部是數組數據結構,線程安全。增刪,查詢都很慢。
- ArrayList:內部是數組數據結構,線程不安全,替代Vector,查詢速度快,增刪速度慢。如果需要使用多線程,我們可以給ArrayList加鎖,或者使用其他的方法,Vector已經不再使用了。
- LinkedList:內部是鏈表數據結構,線程不安全,增刪速度快,查詢速度慢。
- set:
- HashSet:通過hash算法,排列順序和插入順序無關。
- LinkedHashSet:用鏈表實現,排列順序就是插入順序。
- TreeSet:
- AbstractSet抽象類
- map:
- HashMap:無序存放,新的操作類,key不允許重複
- Hahtable:無序存放,舊的操作類,key不允許重複
- TreeMap:可以排序的Map集合,按集合的key排序,key不允許重複
- WeakHashMap:弱引用的Map集合,清除集合中不再使用的內容,使用gc進行回收
- IndentityHashMap:key可以重複的Map集合
-
Java的重載和重寫的區別?
- 重寫:父類中定義的方法,在子類中重新實現。
- 重載:相同方法名稱相同,參數類型、參數個數、參數順序不同。重載對返回類型沒有要求,可以相同也可以不同,但不能通過返回類型是否相同來判斷重載。
-
Java面向對象的三大特徵
封裝、繼承、多態 -
jsp的內置對象。
- pageContext:JSP的頁面容器
- request : 獲取用戶的請求信息
- response: 服務器向客戶端的迴應信息
- session :用來保存每一個用戶的信息
- application:表示所有用戶的共享信息
- config : 服務器配置信息,可以取得初始化參數
- out : 用於向客戶端、瀏覽器輸出數據。
- page:指向了當前jsp程序本身。
- exception:封裝了jsp程序執行過程中發生的異常和錯誤信息。
-
四種屬性範圍:
- page(pageContext):只在一個頁面中保存屬性。 跳轉之後無效;
- request:只在一次請求中有效,服務器跳轉之後有效。 客戶端跳無效;
- session:再一次會話中有效。服務器跳轉、客戶端跳轉都有效。 網頁關閉重新打開無效;
- application:在整個服務器上保存,所有用戶都可使用。 重啓服務器後無效;
框架
-
springmvc的工作流程?
可以看這個博客:https://blog.csdn.net/u014191220/article/details/81387596
https://www.cnblogs.com/jiyukai/p/7629498.html -
springmvc的常用註解
- @Controller:用於控制層註解 , (特殊的@Component)。
- @RestContoller:用戶控制器註解,等於@Controller+@ResponseBody.
- @RequestMappint:用於方法上,來映射 Request 請求與處理器。參數:
- value:定義request請求的映射地址
- method:定義地request址請求的方式,包括【GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE.】默認接受get請求,如果請求方式和定義的方式不一樣則請求無法成功。
- params:定義request請求中必須包含的參數值。
- headers:定義request請求中必須包含某些指定的請求頭,如:RequestMapping(value = “/something”, headers = “content-type=text/*”)說明請求中必須要包含"text/html", "text/plain"這中類型的Content-type頭,纔是一個匹配的請求。
- consumes:定義請求提交內容的類型。
- produces:指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回
- @ResponseBody:將返回值內容通過springMVC提供的HttpMessageConverter接口轉換爲json、xml等格式的數據,再轉換爲java對象綁定到Controller類方法的參數上,即將返回值放在response體內。
- @RequestBody:允許request的參數在request體中,而不是在直接鏈接在地址後面。此註解放在參數前。
- @PathVariable:用來接收路徑參數,如/news/001,可接收001作爲參數,此註解放置在參數前。
- @RequestParam:value:請求參數名,require:是否必須存在,默認爲true,defaultValue:默認值,表示如果請求中沒有同名參數時的默認值;處理簡單類型的綁定,作用在參數前。
- @ModelAttribute:用於把參數保存到model中,可以註解方法或參數,註解在方法上的時候,該方法將在處理器方法執行之前執行,然後把返回的對象存放在 session或模型屬性中。
- @ControllerAdvice 使一個Controller成爲全局的異常處理類, 類中用ExceptinHandler方法註解的方法可以處理所有Controller發生的異常。
- @ExceptionHandler: 註解到方法上, 出現異常時會執行該方法。
-
spring的優點?
- 非侵入式設計:Spring是一種非侵入式(non-invasive)框架,它可以使應用程序代碼對框架的依賴最小化。
- 方便解耦、簡化開發:Spring就是一個大工廠,可以將所有對象的創建和依賴關係的維護工作都交給Spring容器的管理,大大的降低了組件之間的耦合性。
- 支持AOP:Spring提供了對AOP的支持,它允許將一些通用任務,如安全、事物、日誌等進行集中式處理,從而提高了程序的複用性。
- 支持聲明式事務處理:只需要通過配置就可以完成對事物的管理,而無須手動編程。
- 方便程序的測試:Spring提供了對Junit4的支持,可以通過註解方便的測試Spring程序。
- 方便集成各種優秀框架:Spring不排斥各種優秀的開源框架,其內部提供了對各種優秀框架(如Struts、Hibernate、MyBatis、Quartz等)的直接支持。
- 降低Jave EE API的使用難度:Spring對Java EE開發中非常難用的一些API(如JDBC、JavaMail等),都提供了封裝,使這些API應用難度大大降低。
-
IOC反轉控制(也可以叫DI依賴注入)
就是對象依賴關係不用你來維護,由IOC容器來維護(對象間依賴關係就是類與類之間的依賴關係,使用與被使用。之前這些要你自己去完成它們的依賴關係,有了IOC容器這工作就就交給IOC容器來完成。) -
AOP面向切面編程
-
Mybatis的xml配置
https://blog.csdn.net/weixin_39805338/article/details/80893558 -
mybatis的標籤
-
mybatis的自動sql
數據庫
- sql的連接類型
- where和having的區別
where執行在返回結果之前,且先於聚合函數之前,用於過濾行,不能使用聚合函數;having執行在返回結果之後,可以使用聚合查詢,對放回的結果進行過濾。 - sql的約束
- 事務的特徵
- sql優化