java分布式架構(gòu) 面一個(gè)5年java,不知數(shù)據(jù)結(jié)構(gòu),卻大談分布式,這樣的能要嗎?
面一個(gè)5年java,不知數(shù)據(jù)結(jié)構(gòu),卻大談分布式,這樣的能要嗎?我估計(jì)你是問了人家 jdk各種數(shù)據(jù)結(jié)構(gòu)底層實(shí)現(xiàn)原理,其實(shí)我一直很納悶啊,知道底層實(shí)現(xiàn)原理 這當(dāng)然很OK 很加分,但若是不是那么知道,那又怎
面一個(gè)5年java,不知數(shù)據(jù)結(jié)構(gòu),卻大談分布式,這樣的能要嗎?
我估計(jì)你是問了人家 jdk各種數(shù)據(jù)結(jié)構(gòu)底層實(shí)現(xiàn)原理,其實(shí)我一直很納悶啊,知道底層實(shí)現(xiàn)原理 這當(dāng)然很OK 很加分,但若是不是那么知道,那又怎樣呢?人家知道哪些數(shù)據(jù)結(jié)構(gòu)適合哪些場(chǎng)景并能熟練使用它們,這...不夠么?對(duì)你們公司的用人需求不夠么?難道你是指望他給你們公司創(chuàng)造一個(gè)新的數(shù)據(jù)結(jié)構(gòu)?又或者覺得jdk已經(jīng)實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)性能遇到瓶頸 指望求職者給你再實(shí)現(xiàn)一遍一模一樣但性能比jdk提供的還優(yōu)秀的數(shù)據(jù)結(jié)構(gòu)啊?
什么時(shí)候需要分布式鎖?
首先需要知道非分布式環(huán)境下,用鎖可以解決什么?
多線程環(huán)境下,共享資源的線程安全問題!這個(gè)時(shí)候的共享資源通常是在單機(jī)里面的多線程里存在競(jìng)爭(zhēng),從JAVA內(nèi)存模型來看,可以通過鎖住對(duì)象,鎖住方法,鎖住代碼塊等方式,避免共享資源的競(jìng)爭(zhēng)!
而在分布式環(huán)境中,共享資源所要經(jīng)過的代碼,方法,都不是在一個(gè)JVM里面,也不是同一個(gè)進(jìn)程!通過鎖方法,代碼塊的方式不能解決共享資源的競(jìng)爭(zhēng),需要分布式的鎖!
分布式鎖通常在以下場(chǎng)景中使用:
1,全局ID的生成;
2,全局配置文件的修改;
3,分布式服務(wù)中的秒殺問題;
4,分布式環(huán)境下的重復(fù)提交
分布式鎖通常有以下實(shí)現(xiàn)方式:
1,使用數(shù)據(jù)庫(kù)的唯一主鍵來實(shí)現(xiàn)鎖!
2,使用redis的指令:通常使用setnx方法,incr方法等進(jìn)行實(shí)現(xiàn)
3,使用zookeeper:使用api生成臨時(shí)節(jié)點(diǎn)實(shí)現(xiàn)鎖!
最近在持續(xù)分享JAVA相關(guān)技術(shù),有很多干貨,敬請(qǐng)關(guān)注。。