招聘|歡迎加入非凸,學(xué)習(xí)Rust,了解內(nèi)存和線程安全問題
Rust編程語言旨在確保內(nèi)存安全,它混合使用編譯時(shí)靜態(tài)檢查和運(yùn)行時(shí)鎖來阻止程序訪問無效指針或在沒有適當(dāng)同步的情況下跨線程共享內(nèi)存。Rust的實(shí)現(xiàn)方式通常理解是引入了可變的借用和不可變的引用、生命周期等。
?
1.獨(dú)一無二的訪問。如果一個(gè)變量對(duì)一個(gè)值有唯一訪問權(quán),那么對(duì)它進(jìn)行修改是安全的。
?
2.獨(dú)一無二的所有權(quán)。獨(dú)一無二的訪問的一種形式是所有權(quán)。當(dāng)你用一個(gè)值初始化一個(gè)變量時(shí),這個(gè)變量就成為那個(gè)值的唯一所有者。因?yàn)橹抵挥幸粋€(gè)所有者,所有者可以安全地修改值、銷毀值或?qū)⒅缔D(zhuǎn)移給新的所有者。
?
3.獨(dú)一無二的借用。如果你對(duì)T類型的值有惟一的訪問權(quán),則可以使用借用對(duì)該值的惟一引用。對(duì)類型T的值的唯一引用具有類型&mut T。
?
4.獨(dú)一無二的借用不能被復(fù)制。一個(gè)&mut T類型的值不能被復(fù)制或克隆,因?yàn)檫@將導(dǎo)致對(duì)相同值有兩個(gè)唯一性引用,它只能被移動(dòng)。
?
5.共享訪問。如果一個(gè)值同時(shí)存在多個(gè)可用于來訪問它的可用變量,那么這個(gè)值就是共享的。
?
6.共享所有權(quán)。Rc<T>將在堆上為類型T的值分配空間,再加上一些額外的空間用于引用計(jì)數(shù),然后你可以調(diào)用Rc::clone來增加引用計(jì)數(shù),并生成另一個(gè)指向相同值的Rc<T>。
?
7.共享借用。由于Rc<T>對(duì)它的類型T值沒有唯一的訪問權(quán),所以它不能生成唯一的&mut T借用(除非在運(yùn)行時(shí)檢查引用計(jì)數(shù)是否等于1,但它實(shí)際上不是共享的借用)。但它可以生成類型T的共享引用&T。
?
8.線程安全。Rust通過標(biāo)準(zhǔn)庫內(nèi)置了兩個(gè)Trait,用來標(biāo)記其他線程是否可安全訪問的類型:
T: Send?意味著在單個(gè)其他線程上訪問T是安全的,其中在執(zhí)行時(shí)間線上每一個(gè)線程具有一次性的獨(dú)占訪問權(quán)。這種類型的值可以通過將獨(dú)一無二的所有權(quán)轉(zhuǎn)移到另一個(gè)線程,或者通過獨(dú)一無二的借用(&mut T)在另一個(gè)線程上使用。
T: Sync?意味著多個(gè)線程可同時(shí)訪問T是安全的,每個(gè)線程都有共享訪問權(quán)限。這些類型的值可以通過共享引用(&T)在其他線程上訪問<實(shí)際上是共享只讀而不是寫>。
?
9.共享可修改性。當(dāng)值不發(fā)生改變修改時(shí),共享是安全的,而當(dāng)值不發(fā)生共享時(shí),修改是安全的。但是如果我們想既要共享又要可改變一個(gè)值,怎么辦呢?Rust標(biāo)準(zhǔn)庫為這種共享的可修改性提供了獨(dú)特的實(shí)現(xiàn)機(jī)制,即UnsafeCell,它創(chuàng)造性的結(jié)合Send、Sync Trait以實(shí)現(xiàn)混合靜態(tài)檢查和運(yùn)行時(shí)檢查來保證內(nèi)存安全和線程安全。
?
非凸科技是Rust量化先行者,追求高效和極致。我們聘請(qǐng)優(yōu)秀的人,采用先進(jìn)的技術(shù),建立卓越的團(tuán)隊(duì),成就不平凡的非凸,為量化行業(yè)帶來效率價(jià)值最大化!歡迎加入非凸,為自己拼搏,也成就彼此!
?
招聘崗位:Rust開發(fā)工程師
?
工作內(nèi)容:
1.設(shè)計(jì)并開發(fā)基于Rust的高性能,低時(shí)延算法交易系統(tǒng);
2.設(shè)計(jì)并開發(fā)數(shù)據(jù)處理平臺(tái),監(jiān)控運(yùn)維平臺(tái);
3.設(shè)計(jì)并開發(fā)面向客戶的高可用交易工具等;
4.設(shè)計(jì)并開發(fā)策略相關(guān)的回測平臺(tái)。
?
崗位要求:
1.本科及以上學(xué)歷(985優(yōu)先),編程基礎(chǔ)扎實(shí),具有良好的計(jì)算機(jī)理論基礎(chǔ);
2.熟練掌握Linux操作,性能分析,具備Rust/C++/Java/Go豐富開發(fā)經(jīng)驗(yàn),熟悉常用的設(shè)計(jì)模式,有分布式相關(guān)經(jīng)驗(yàn)加分;
3.有研發(fā)高性能,低時(shí)延系統(tǒng)經(jīng)驗(yàn)加分;
4.對(duì)技術(shù)充滿熱情,思考深入,自我驅(qū)動(dòng),能快速學(xué)習(xí)新鮮事物。
?
Base?range:
30K-60K+期權(quán)激勵(lì)+年終獎(jiǎng)+員工福利
?
工作地點(diǎn):北京、上海、成都、新加坡
簡歷發(fā)送至:recruit@ft.tech
微信溝通:354334592
郵件注明:姓名+崗位+來源
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?