溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)中能夠自動(dòng)解決依賴問題的通用編譯工具有哪些

發(fā)布時(shí)間:2021-12-06 11:36:02 來源:億速云 閱讀:148 作者:柒染 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)大數(shù)據(jù)中能夠自動(dòng)解決依賴問題的通用編譯工具有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Fac——能夠自動(dòng)解決依賴問題的通用編譯工具

如果在編譯工程的時(shí)候未正確指定依賴項(xiàng),F(xiàn)ac可以在多次嘗試之后將工程成功編譯。

該項(xiàng)目創(chuàng)立于2014年,最開始用C編寫,2017年后開始使用rust。

Fac的靈感來自于通用編譯工具make,它利用ptrace來枚舉所有依賴項(xiàng),并將所有源文件添加到(git)repo中。Fac的一個(gè)重要特性是它能夠自動(dòng)處理依賴關(guān)系,而不會(huì)像傳統(tǒng)的編譯工具一樣在工程的依賴性上報(bào)錯(cuò)。目前,fac僅能夠在Linux系統(tǒng)上運(yùn)行,但它非常易于使用。

Read More: https://github.com/droundy/fac http://physics.oregonstate.edu/~roundyd/fac

選擇性抗鋸齒像素算法

始終一致地應(yīng)用抗鋸齒處理圖像非常耗費(fèi)資源,因此通過這個(gè)算法可以將此過程輕松實(shí)現(xiàn)自動(dòng)化選擇。

大致步驟分為:

  1. 給定像素一個(gè)完整的線條

  2. 計(jì)算每1 px寬塊的長度和方向

  3. 針對(duì)每個(gè)像素塊,將一定長度的一部分顏色變?yōu)槠渌伾?/p>

/// selectively anti-alias a pixel perfect line
/// each segment of length l contains floor(l*k) number of $alt_color pixels
pub fn selective_antialias(path: &mut Pixels, k: f64, alt_color: Color) {
   let mut chunks = vec![];
   let mut start_idx = 0;
   for (i, (pi,pj)) in path.iter().zip(path.iter().skip(1)).enumerate() {
       // if consecutive pixels not connected
       if (pi.point.x != pj.point.x) && (pi.point.y != pj.point.y) {
           let start_pix = path.0.get_index(start_idx).unwrap();
           let dir = start_pix.dir(&pi);
           chunks.push((i - start_idx, dir));
           start_idx = i + 1;
       }
   }
   let start_pix = path.0.get_index(start_idx).unwrap();
   let dir = start_pix.dir(path.iter().last().unwrap());
   chunks.push(((path.len() - start_idx - 1), dir));
   assert_eq!(chunks.iter().map(|i|i.0 + 1).sum::<usize>(), path.len());
   let mut idx = 0;
   for (l, dir) in chunks {
       for j in 0..=l {
           // xor with dir to keep orientation of coloring
           // example:
           //           o    o
           //           o    o
           //           x    x
           //           x    x
           //            ooxx
           if (j <= (l as f64 * k) as usize) ^ dir {
               let p = path.0.get_index(idx).unwrap().with_color(alt_color);
               path.0.replace(p);
           } else {
               // noop
           }
           idx += 1;
       }
   }
}

Read More: Ricky Han blog

rxRust 0.2發(fā)布

rxrust是一個(gè)Rust實(shí)現(xiàn)的Reactive Extensions。ReactiveX是一個(gè)用于通過使用可觀察序列來編寫異步和基于事件的程序的庫。除了對(duì)象必須將流的第一個(gè)閉包打包之外,他幾乎是0開銷的。

它擴(kuò)展了觀測模式以支持?jǐn)?shù)據(jù)“與/或”事件序列,并添加了允許以聲明方式組合序列的運(yùn)算符,同時(shí)抽象出對(duì)低級(jí)線程同步、線程安全、并行數(shù)據(jù)結(jié)構(gòu)和無阻塞I / O等問題的補(bǔ)充。

Read More: https://github.com/M-Adoo/rxRust/blob/master/CHANGELOG.md

Reactive Extensions官網(wǎng):http://reactivex.io/

Helm本月迎來第一批用戶

heim是用于系統(tǒng)信息獲取的Rust跨平臺(tái)異步庫,已經(jīng)發(fā)布一個(gè)多月,能夠獲取Rust crates生態(tài)系統(tǒng)中的系統(tǒng)信息(例如,CPU,內(nèi)存,磁盤或進(jìn)程統(tǒng)計(jì))。

heim 有幾個(gè)關(guān)鍵目標(biāo)來奠定他的發(fā)展基礎(chǔ)和公共接口:1.異步優(yōu)先 2.跨平臺(tái)。3.模塊化設(shè)計(jì)。4.符合用戶習(xí)慣且易于上手。

現(xiàn)在可以使用新模塊heim::process查詢系統(tǒng)進(jìn)程:

let current = heim::process::current().await?;

let mut processes = heim::process::processes();
while let Some(process) = processes.next().await {
   let process = process?;

   println!("Pid: {}", process.pid());
   if process.pid() == current.pid() {
       println!("It's-a me, Mario!");
   }

   println!("Status: {:?}", process.status().await?);
   println!("Name: {}", process.name().await?);
   println!("Path to executable: {:?}", process.exe().await?);
   // …and many other methods available
}

上述就是小編為大家分享的大數(shù)據(jù)中能夠自動(dòng)解決依賴問題的通用編譯工具有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI