原创 Eureka 和 Zookeeper 都可以提供服務註冊與發現的功能,請說說兩個的區別?

Zookeeper 保證了CP(C:一致性,P:分區容錯性),Eureka保證了AP(A:高可用) 【1】當向註冊中心查詢服務列表時,我們可以容忍註冊中心返回的是幾分鐘以前的信息,但不能容忍直接 down 掉不可用。也就是說,服務註冊

原创 SpringCloud五大組件詳解

springcloud是微服務架構的集大成者,將一系列優秀的組件進行了整合。基於springboot構建。 springcloud的版本說明: springcloud項目是由多個獨立項目集合而成的,每個項目都是獨立的,各自進行自己的迭代和

原创 InnoDB 索引實現

雖然 InnoDB 也使用 B+Tree 作爲索引結構,但具體實現方式卻與 MyISAM 截然不同。InnoDB 的數據文件本身就是索引文件。MyISAM 索引文件和數據文件是分離的,索引文件僅保存數據記錄的地址。 而在InnoDB 中,

原创 spring框架的優點

1、非侵入式設計 Spring是一種非侵入式(non-invasive)框架,它可以使應用程序代碼對框架的依賴最小化。 2、方便解耦、簡化開發 Spring就是一個大工廠,可以將所有對象的創建和依賴關係的維護工作都交給Spring容器的管

原创 Spring 如何保證 Controller 併發的安全

Controller 默認是單例的,一般情況下,如果用Spring MVC 的 Controller時,儘量不在 Controller中使用實例變量。否則會出現線程不安全性的情況,導致數據邏輯混亂。正因爲單例所以不是線程安全的。舉個簡單例

原创 spring 事務的傳播機制

spring 對事務的控制,是使用 aop 切面實現的,我們不用關心事務的開始,提交 ,回滾,只需要在方法上加 @Transactional 註解,這時候就有問題了。 場景一: serviceA 方法調用了 serviceB 方法,但兩個

原创 jvm垃圾回收的流程及垃圾回收器詳解

jvm垃圾回收的流程 允許GC之後,開始查找那些允許被回收的(兩個算法)-> 開始回收(四個算法) 第一步:那些對象是垃圾:          1,引用計數法:通過對引用的遍歷,找到對應的實例,讓對應的實例計數加  1 ,如果引用取消,或

原创 談談Threadlocal(本地線程)

ThreadLocal是的作用是提供線程的局部變量。ThreadLocal的核心機制: 每個Thread線程內部都有一個Map。ThreadLocalMap(ThreadLocal的靜態類 ) Map裏面存儲線程本地對象(key)和線程的

原创 java面試--spring

目錄 springMVC請求流程詳解 BeanFactory 和 FactoryBean ApplicationContext和beanfactory的區別 Spring常用註解總結 Spring 中用到了那些設計模式 spring 事務

原创 線程的五大狀態

線程從創建、運行到結束總是處於下面五個狀態之一:新建狀態、就緒狀態、運行狀態、阻塞狀態及死亡狀態。 1.新建狀態 當用new操作符創建一個線程時。此時程序還沒有開始運行線程中的代碼。 2.就緒狀態 一個新創建的線程並不自動開始運行,要執

原创 Spring常用註解總結

@Controller 標識一個該類是Spring MVC controller處理器,用來創建處理http請求的對象. @RestController @Controller+@ResponseBody Spring4之後加入的註解,原

原创 深入理解樂觀鎖與悲觀鎖

講講樂觀鎖和悲觀鎖; 樂觀鎖 :總是認爲不會產生併發問題,每次去取數據的時候總認爲不會有其他線程對數據進行修改,因此不會上鎖,但是在更新時會判斷其他線程在這之前有沒有對數據進行修改,一般會使用版本號機制或CAS操作實現 version方式

原创 多線程的三種實現方式以及線程池詳解

1.繼承Thread類;2.Runnable接口。兩種方式都要通過重寫run()方法來定義線程的行爲,推薦使用後者,因爲Java中的繼承是單繼承,一個類有一個父類,如果繼承了Thread類就無法再繼承其他類了,顯然使用Runnable接口

原创 發生死鎖的情況以及解決的辦法

死鎖是指在一組進程中的各個進程均佔有不會釋放的資源,但因互相申請被其他進程所站用不會釋放的資源而處於的一種永久等待狀態。     死鎖的四個必要條件: 互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。請

原创 發生死鎖的情況以及解決的辦法

死鎖是指在一組進程中的各個進程均佔有不會釋放的資源,但因互相申請被其他進程所站用不會釋放的資源而處於的一種永久等待狀態。     死鎖的四個必要條件: 互斥條件(Mutual exclusion):資源不能被共享,只能由一個進程使用。請