成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

maven怎么依賴本地的包 maven打包時怎么把所以的依賴一起打包?

maven打包時怎么把所以的依賴一起打包?Mav為什么有的jar包只能在maven中使用?因?yàn)楹芏鄷r候看起來你只是添加了一個jar包依賴,實(shí)際上這個依賴?yán)锩鏁衅渌囊蕾?,所以你單?dú)使用這個jar包就

maven打包時怎么把所以的依賴一起打包?

Mav

為什么有的jar包只能在maven中使用?

因?yàn)楹芏鄷r候看起來你只是添加了一個jar包依賴,實(shí)際上這個依賴?yán)锩鏁衅渌囊蕾?,所以你單?dú)使用這個jar包就會報錯。

m2文件夾怎么來的?

Mav

如何保證同一資源被多個線程并發(fā)訪問時的完整性?

對于這個問題,我們首先想到的是使用synchronized關(guān)鍵字,這是一個解決方案,比如:

公共同步void setStatus(布爾b) {}

但是synchronized不適合高并發(fā)數(shù)據(jù),會導(dǎo)致程序特別慢,不適合集群,負(fù)載均衡后數(shù)據(jù)會有問題。

我們使用另一種解決方案,redis分布式鎖。redis是單線程服務(wù),高效的鍵/值結(jié)構(gòu),支持高可用的分布式集群,可以讓多臺機(jī)器上的多個進(jìn)程互斥相同的數(shù)據(jù)。

讓 讓我們談?wù)剅edis從創(chuàng)建到使用的過程:

1.使用maven下載redis所依賴的包,在pom.xml中進(jìn)行配置:

ltdependencygt ltartifactidgt spring-boot-starter-data-redi SLT/artifactIdgt

2、熟悉r:在設(shè)置新值之前獲取以前的值。

3、新增redis類寫鎖,解鎖方法:

//自動便箋進(jìn)入redis

@自動連線

私有字符串模板

/***

*鎖定

* @param密鑰id

* @param value當(dāng)前時間超時

* @return*/

命令對應(yīng)的公共布爾鎖(String Key,String Value) {//setnx。

//可以設(shè)置值返回true,但是可以 不要將該值設(shè)置為返回false。

if(redisTemplate.opsForValue()。setIfAbsent(key,value)) { return true }

//確保只有一個線程獲得鎖。

字符串current value redis template . ops for value()。獲取(鍵)

//如果鎖過期,則存儲的鎖小于當(dāng)前時間。

如果(!(當(dāng)前值)ampamp(當(dāng)前值)lt ()) {

//獲取最后一次鎖定的時間

string old value redis template . opsforvalue()。getAndSet(鍵,值)

如果(!(old value)amp old value . equals(current value)){ return true } } return false }

/**

*解鎖

*/public void unlock(字符串鍵,字符串值){

嘗試{

字符串current value redis template . ops for value()。get(key) if(!(當(dāng)前值)ampamp當(dāng)前值. equals(值)){

值()的Redisttemplate.ops。getOperations()。delete(key)} Catch(Exception e){([Redis分布式鎖]解鎖異常,{}