卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

mysql的鎖有幾種 多個線程可以讀一個變量,只有一個線程可以對這個變量進行寫,到底要不要加鎖?

多個線程可以讀一個變量,只有一個線程可以對這個變量進行寫,到底要不要加鎖?先說結(jié)論:不必要如果不需要可見性,什么都不需要加如果需要保證可見性,則需要加volatile關(guān)鍵字。這里可以加鎖,但是沒必要,

多個線程可以讀一個變量,只有一個線程可以對這個變量進行寫,到底要不要加鎖?

先說結(jié)論:不必要

  • 如果不需要可見性,什么都不需要加
  • 如果需要保證可見性,則需要加volatile關(guān)鍵字。這里可以加鎖,但是沒必要,對性能有影響

下面簡單解釋下原因:

加鎖是因為操作不是原子性的,以i 這個操作來解釋,看下面兩張圖。

i 這個操作需要

  • 先將i的值從內(nèi)存中讀出來
  • 然后加1
  • 最后寫回去

看上面第二張圖,能很清楚的理解流程吧?

加鎖就是保證上面的三步是一個原子操作。

回到問題,這里只有一個線程寫,實際沒有競爭,所以沒必要加鎖。

但是,看第一張圖,因為有主內(nèi)存和本地內(nèi)存的存在

  • 線程先寫入本地內(nèi)存
  • 然后刷入主內(nèi)存
  • 其它內(nèi)存同步主內(nèi)存到工作內(nèi)存
  • 然后從工作內(nèi)存中讀取

一個線程寫入后,不能保證其它線程立即看到,這就是可見性問題。

加了volatile關(guān)鍵字后,會強制操作后同步工作內(nèi)存和主內(nèi)存,保證其它線程立刻看到。

Mysql數(shù)據(jù)庫可以加密嗎?

MySQL數(shù)據(jù)庫的認證密碼有兩種方式,MySQL4.1版本之前是MySQL323加密,MySQL4.1和之后的版本都是MySQLSHA1加密,MySQL數(shù)據(jù)庫中自帶Old_Password(str)和Password(str)函數(shù),它們均可以在MySQL數(shù)據(jù)庫里進行查詢,前者是MySQL323加密,后者是MySQLSHA1方式加密。(1)以MySQL323方式加密 select old_password("111111")(2)以MySQLSHA1方式加密 selectpassword("111111") MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入實際的密碼運算中,通過觀察在很多用戶中都攜帶了"*",在實際破解過程中去掉"*",也就是說MySQLSHA1加密的密碼的實際位數(shù)是40位。