『壹』 J.U.C|同步隊列(CLH)
在上篇我們聊到AQS的原理,具體參見 《J.U.C|帶你走進AQS的內心世界》 。
這篇我們來給大家聊聊AQS中核心同步隊列(CLH)。
同步隊列
一個FIFO雙向隊列,隊列中每個節點等待前驅節點釋放共享狀態(鎖)被喚醒就可以了。
AQS如何使用它?
AQS依賴它來完成同步狀態的管理,當前線程如果獲取同步狀態失敗時,AQS則會將當前線程已經等待狀態等信息構造成一個節點(Node)並將其加入到CLH同步隊列,同時會阻塞當前線程,當同步狀態釋放時,會把首節點喚醒(公平鎖),使其再次嘗試獲取同步狀態。
Node節點面貌?
CLH同步隊列的結構圖
這里是基於CAS(保證線程的安全)來設置尾節點的。
如上圖了解了同步隊列的結構, 我們在分析其入列操作在簡單不過。無非就是將tail(使用CAS保證原子操作)指向新節點,新節點的prev指向隊列中最後一節點(舊的tail節點),原隊列中最後一節點的next節點指向新節點以此來建立聯系,來張圖幫助大家理解。
源碼
源碼我們可以通過AQS中的以下兩個方法來了解下
addWaiter方法
先通過addWaiter(Node node)方法嘗試快速將該節點設置尾成尾節點,設置失敗走enq(final Node node)方法
enq
通過「自旋」也就是死循環的方式來保證該節點能順利的加入到隊列尾部,只有加入成功才會退出循環,否則會一直循序直到成功。
上述兩個方法都是通過compareAndSetHead(new Node())方法來設置尾節點,以保證節點的添加的原子性(保證節點的添加的線程安全。)
同步隊列(CLH)遵循FIFO,首節點是獲取同步狀態的節點,首節點的線程釋放同步狀態後,將會喚醒它的後繼節點(next),而後繼節點將會在獲取同步狀態成功時將自己設置為首節點,這個過程非常簡單。如下圖
設置首節點是通過獲取同步狀態成功的線程來完成的(獲取同步狀態是通過CAS來完成),只能有一個線程能夠獲取到同步狀態,因此設置頭節點的操作並不需要CAS來保證,只需要將首節點設置為其原首節點的後繼節點並斷開原首節點的next(等待GC回收)應用即可。
聊完後我們來總一下,同步隊列就是一個FIFO雙向對隊列,其每個節點包含獲取同步狀態失敗的線程應用、等待狀態、前驅節點、後繼節點、節點的屬性類型以及名稱描述。
其入列操作也就是利用CAS(保證線程安全)來設置尾節點,出列就很簡單了直接將head指向新頭節點並斷開老頭節點聯系就可以了。
『貳』 統計學畢業論文選題
統計學畢業論文選題
畢業論文的題目是開始寫作的關鍵,先選好題,再下筆。下面是我整理的統計學畢業論文選題,希望大家喜歡。
統計學畢業論文選題
1、具有預測能力的呼叫中心系統的設計與實現
2、PVAR模型在研究經濟增長與能源消費關系中的應用
3、基於有限元的深基坑組合型圍護結構可靠度分析
4、一些帶有偏序結構的完全碼
5、Stein方法在復合泊松分布近似中的應用
6、各類分布產生的背景
7、保險金融中的計數過程的若干漸近性
8、高中概率教學的現狀、問題及對策研究
9、隨機變數序列的極限定理
10、Cayley樹上非對稱馬氏鏈及任意相依隨機變數序列強極限定理的若干研究
11、一類混合隨機序列的概率極限定理
12、保證齒輪質量的結構和工藝措施研究
13、道路施工機群資源配置和計劃調度瀝青混凝土路面機械化施工系統狀態分析與技術經濟評價研究
14、高速公路服務區合理規模與布局研究
15、基於圖像區域統計特徵的隱寫分析技術研究
16、統計收斂的測度理論
17、關於φ-混合隨機變數序列的矩完全收斂性的研究
18、混合相依隨機變數序列極限理論的若干結果
19、兩兩NQD列的一些收斂性質
20、電力市場環境下的電能質量評估研究
21、本科概率論試驗課程設計初探
22、基於隨機模擬試驗的穩健優化設計方法研究
23、隨機變數序列部分和乘積的幾乎處處中心極限定理
24、AQSI序列的強極限定理
25、幾類相依混合隨機變數列的大數律和L~r收斂性
26、現代經濟計量學建立簡史
27、任意隨機變數序列的相關定理
28、新建電氣化鐵路電能質量影響預測研究
29、鞅差與相依隨機變數序列部分和精確漸近性
30、ND序列若干收斂性質的研究
31、證券組合投資決策的均勻試驗設計優化研究
32、相依隨機變數序列部分和收斂速度
33、行為兩兩NQD隨機變數陣列加權和的收斂性
34、數值計算的統計確認研究與初步應用
35、基於證據理論的足球比賽結果預測方法
36、城市工業用地集約利用評價與潛力挖掘
37、節理化岩體邊坡穩定性研究
38、隨機變分不等式及其應用
39、基於模糊綜合評價的靶場實時光測數據質量評估
40、基於路徑的加權地域通信網可靠性研究
41、LNQD樣本近鄰估計的大樣本性質
42、20CrMoH齒輪彎曲疲勞強度研究
43、我國股票市場與宏觀經濟之間的協整分析
44、一類Copula函數及其相關問題研究
45、樂透型彩票N選M中獎號碼的概率分析
46、協整理論在汽車發動機系統故障診斷中的應用
47、2010年上海世博會會展中斷風險分析和保險建議
48、貝兒康有限公司激勵設計研究
49、雲模型在系統可靠性中的應用研究
50、離散更新模型破產概率及赤字的上下界估計
51、輸電線微風振動與疲勞壽命
52、電器產品模糊可靠性分析中模糊可靠度的研究
53、變分不等式及變分包含解的存在性與演算法
54、隧道測量誤差控制方案的'研究
55、塔式起重機臂架可靠性分析軟體開發
56、分布式認證跳錶及其在P2P分布式存儲系統中的應用
57、房地產行業企業所得稅納稅評估實證研究
58、天然氣管道斷裂事故分析
59、粗集理論及其在數據預處理過程中的應用
60、集裝箱碼頭後方堆場荷載統計分析和概率模型
61、多工序製造過程計算機輔助誤差診斷控制系統
62、實(復)值統計型測度的表示理論及其它在統計收斂上的應用
63、應用統計教育部重點實驗室程序庫建設
64、基於個體的捕食系統模型
65、相依樣本下移動平均過程的矩完全收斂
66、基坑變形監測分析及單撐—排樁牆支護結構抗傾覆可靠度研究
67、基於綜合的交通沖突技術的城市道路交叉口安全評價方法研究
68、暗挖地鐵車站下穿對既有結構安全性影響分析
69、隨機變數陣列的強收斂性
70、基於隨機有限元的疲勞斷裂可靠性研究
71、高中數學教學概率統計部分淺析
72、敏感問題二階段抽樣調查的統計方法及應用
73、三大重要分布及其性質的進一步研究
74、隨機變數的統計收斂性及統計收斂在數據處理方面的應用
75、多變數密度函數小波估計的一致中心極限定理
76、混合Copula構造及相關性應用
77、數學職前教師對正態分布的理解水平的研究
78、煤礦事故系統脆性模型的建立與模擬
79、基於貝葉斯網路的客戶信用風險評估及系統設計
80、河北北方學院學生成績關聯分析及預測
81、房地產項目現金流管理研究
82、高壓電磁感應信號的採集及處理演算法的研究
83、基於神經網路的逆變電源可靠性研究
84、跳頻序列的局部隨機性與線性復雜度分析
85、金川二礦區中段平面運輸系統數據分析與模擬模型研究
86、房地產投資風險定量評價與規避策略研究
87、審計統計抽樣技術方法研究與設計運行
88、幾種概率統計濾波法在重磁數據處理中的研究及應用
89、模糊隨機變數序列的極限定理
90、數據挖掘的若干新方法及其在我國證券市場中應用
91、城市道路交通流特徵參數研究
92、遼寧紅沿河核電廠可能最大風暴潮的估算
93、潛油電泵軸的可靠性分析與設計
94、起重機金屬結構極限狀態法設計研究
95、相依隨機變數極限理論的若干結果
96、局部次高斯隨機序列的強極限定理
97、基於自然風險度量的農業保險定價及其財政補貼研究
98、NA和(ρ|~)混合序列的某些收斂性質
99、可交換隨機變數序列的極限理論
100、一類相依重尾隨機序列的強極限定理及其應用
;
第一個是基礎,比如對集合類,並發包,IO/NIO,JVM,內存模型,泛型,異常,反射,等有深入了解,最好是看過源碼了解底層的設計。比如一般面試都會問ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛擬機優化等知識點,因為這些對互聯網的企業是絕對重要的。而且一般人這關都過不了,還發鬧騷說這些沒什麼用,為什麼要面試。舉一例子,在使用線程池時,因為使用了無界隊列,在遠程服務異常情況下導致內層飆升,怎麼去解決?你要是連線程池都不清楚,你怎麼去玩?再舉一例,由於對ThreadLocal理解出錯,使用它做線程安全的控制,導致沒能實現真的線程安全,你怪我哦?所以作為一個拿兩萬的JAVA程序員這點基礎是必須的。
第二你需要有全面的互聯網技術相關知識。從底層說起,你起碼得深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知識。你要問需要了解到什麼程度,我可以給你說個大慨。首先對於MySQL,你要知道常見的參數設置,存儲引擎怎麼去選擇,還需要了解常見的索引引擎,知道怎麼去選擇。知道怎麼去設計表,怎麼優化sql,怎麼根據執行計劃去調優。高級的你需要去做分庫分表的設計和優化,一般互聯網企業的資料庫都是讀寫分離,還會垂直與水平拆分,所以這個也有經驗的成分在裡面。然後redis,mongodb都是需要了解原理,需要會調整參數的,而nginx和tomcat幾乎都是JAVA互聯網方面必配,其實很阿里的技術棧選擇有點關系。至於rpc相關的就多的去,必須各種網路協議,序列化技術,SOA等等,你要有一個深入的理解。現在應用比較廣的rpc框架,在國內就是bbo了,可以自行搜索。至於jms相關的起碼得了解原理吧,一般情況下不是專門開發中間件系統和支撐系統的不需要了解太多細節,國內企業常用的主要是activeMQ和kafka。你能對我說的都研究的比較深入,阿里p6我覺得是沒問題的,當然這個還需要看你的架構能力方面的面試表現了。
第三就是編程能力,編程思想,演算法能力,架構能力的考量。首先2W程序員對演算法的要求我覺得還是比較低,再高級也最多紅黑樹吧,但是排序和查詢的基本演算法得會。編程思想是必須的,問你個AOP和IOC你起碼的清清楚楚,設計模式不說每種都用過,但是也能深入理解個十四五種。編程能力這個我覺得不好去評價,但是拿一個2000W用戶根據姓名年齡排序這種題目也能信手拈來。最後就是架構能力,這種不是說要你設計個多牛逼多高並發的系統,起碼讓你做一個秒殺系統,防重請求的設計能快速搞定而沒