成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

github熱度最高的語言是什么,用wordcloud制作流程解析(下)

譯文
開發(fā)
數(shù)據(jù)源自2016年年中至年末期間,約300萬套開源GitHub庫,用wordcloud制作流程解析。

【51CTO.com快譯】在本系列文章的上一部分中,我們選定了四叉樹作為索引結(jié)構(gòu),并將借此對GitHub各公開資源庫內(nèi)的詞匯出現(xiàn)頻率進(jìn)行歸納。下面我們閑言少敘,一同來看其實(shí)際表現(xiàn)以及由此得到的具體結(jié)論。

首先來看JavaScript logo的四叉樹結(jié)構(gòu):
 

[[182546]]

 
空白矩形代表的是具備可用空間的四邊形。如果候選矩形小于其中任意空白四邊形,則代表可以將其立即放置在對應(yīng)四邊形之內(nèi)。
通過簡單的四叉樹索引能夠提供合理的結(jié)果,也很容易實(shí)現(xiàn)某些視覺層面的效果。大家可以看到各象限的邊界——即無法將文本放置如所在四邊形的位置:
 

 
作者并沒有發(fā)布自己使用的最終四叉樹詞匯云代碼,因?yàn)樽髡哂X得在其它場景下并沒有復(fù)用價(jià)值。
 
網(wǎng)站是如何構(gòu)建完成的?

(1)渲染文本

總體而言,對于詞匯云的生成速度是比較令人滿意的。不過對于common-words即常用詞網(wǎng)站而言,這樣的速度還是太過緩慢。

作者使用SVG來渲染屏幕上的每個(gè)詞匯。單獨(dú)渲染這么多文本元素可能導(dǎo)致UI線程發(fā)生數(shù)秒鐘的停頓,而且根本沒有充足的CPU資源來完成文本布局計(jì)算。但好消息是,作者找到了另一種解決辦法。

相較于每次打開頁面時(shí)一次又一次計(jì)算詞匯布局,我決定只對布局進(jìn)行一次計(jì)算,而后將結(jié)果保存在一個(gè)JSON文件當(dāng)中。這能幫助作者專注于進(jìn)行UI線程優(yōu)化。

為了避免UI發(fā)生長時(shí)間卡頓,需要以異步方式進(jìn)行詞匯添加。在每個(gè)事件循環(huán)周期內(nèi),會(huì)添加N個(gè)詞匯,同時(shí)允許瀏覽器處理用戶的命令與更新。在第二輪循環(huán)周期內(nèi)添加更多詞匯,并以此類推。為了實(shí)現(xiàn)這一目標(biāo),作者編寫了anvaka/rafor,這是一款面向循環(huán)迭代器的異步方案,能夠跨越多個(gè)事件循環(huán)周期并充分利用CPU負(fù)載。

(2)平移與縮放

此網(wǎng)站支持類似于谷歌地圖的SVG場景導(dǎo)航機(jī)制, 同時(shí)適用于移動(dòng)設(shè)備及臺(tái)式電腦。這些特性都可通過panzoom庫加以實(shí)現(xiàn)。

(3)應(yīng)用結(jié)構(gòu)

在這里,作者使用vue.js作為渲染框架選項(xiàng)。這主要是因?yàn)槠浞浅:唵吻宜俣润@人。單一文件組件及熱重載機(jī)制可以獲得理想的開發(fā)速度。

應(yīng)用的整體狀態(tài)被存儲(chǔ)在單一對象當(dāng)中,而各語言的對應(yīng)文件則會(huì)在用戶從下拉菜單中選定對應(yīng)選項(xiàng)時(shí)進(jìn)行加載。

作為消息分派器,作者使用的是ngraph.events,這是一套以速度為主要訴求的小型消息傳遞庫。

作者還使用anvaka/query-state來將當(dāng)前選中的語言存儲(chǔ)在查詢字符串當(dāng)中。

 
工具匯總
 
  • https://github.com/anvaka/query-state-允許將應(yīng)用狀態(tài)保存在查詢字符串之內(nèi)。支持雙向更新:查詢字符串〈--〉應(yīng)用狀態(tài)。
  • https://github.com/anvaka/rafor- 數(shù)組之上的異步迭代方案,且不會(huì)阻塞UI線程。此模塊每個(gè)周期內(nèi)會(huì)采用部分工作量,這意味著始終有充裕的CPU時(shí)間以維持UI響應(yīng)。
  • https://github.com/anvaka/simplesvg- 一套基于SVG DOM元素的簡單打包器,且操作方式亦非常便捷。
  • https://github.com/anvaka/panzoom- 這套庫能夠在SVG場景下實(shí)現(xiàn)類似于谷歌地圖的平移與縮放效果。
 
為什么采取詞匯云的形式?
 
事實(shí)上,出于以下幾個(gè)理由,很多朋友并不太喜歡詞匯云這種表現(xiàn)形式:將詞匯從上下文中剝離出來,因此good并不總是代表好的意思(例如not good中的not部分并不會(huì)被顯示出來)。對詞匯進(jìn)行縮放以適應(yīng)圖形顯示,因此各詞匯的顯示大小無法保證。其會(huì)直接舍棄部分常用詞匯(例如a、the、not等)。
 
不過作者還是非常喜歡利用各類算法將詞匯填充進(jìn)圖形內(nèi)以生成詞匯云。很多時(shí)候,藝術(shù)感才是最重要的——不是嗎?
 
原文標(biāo)題:Common Words
原文作者:anvaka
文章審核人:老曹  譯者:核子可樂
老曹專欄文章鏈接:http://zhuanlan.51cto.com/columnlist/laocao/

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:陶家龍 來源: 51CTO
相關(guān)推薦

2017-02-05 14:10:30

wordcloud

2018-01-28 14:50:33

開發(fā)語言數(shù)據(jù)

2021-02-20 08:55:58

PythonGitHub互聯(lián)網(wǎng)

2022-06-30 16:25:03

編程語言JavaScriptPython

2016-12-09 07:33:44

2021-11-09 23:15:20

編程語言本質(zhì)

2009-07-17 17:02:54

JRuby是什么

2024-03-18 07:48:00

大語言模型NVIDIA生成式 AI

2009-07-08 14:51:10

2020-08-02 19:55:46

Python編程語言技術(shù)

2021-09-28 10:48:07

開源雙因素認(rèn)證單點(diǎn)登錄

2009-12-03 10:14:06

Linux端口

2021-06-15 10:30:57

PythonNFT區(qū)塊鏈

2011-12-05 12:42:31

JavaJ2EEJVM

2020-06-28 13:51:03

哈希map結(jié)構(gòu)

2022-08-17 17:57:37

GoGo語言

2012-05-16 13:11:28

編程語言開發(fā)語言Java

2021-05-27 09:30:51

Java流程控制

2022-07-27 16:40:25

C語言

2009-07-17 17:05:29

JRuby是什么JRuby
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品精品 | 免费在线观看91 | 国产精品久久777777 | 欧美日韩在线免费观看 | 麻豆精品国产91久久久久久 | 成人深夜福利在线观看 | 欧美日韩在线一区二区 | 亚洲国产精品久久 | 日韩α片 | 国产精品一区二区三区在线播放 | 午夜影院在线视频 | 毛片免费在线观看 | 成人在线观看免费 | 欧美成人一区二区三区片免费 | 欧美一级片在线播放 | 自拍视频一区二区三区 | 久操福利| 欧洲亚洲一区二区三区 | 久久精品国产免费看久久精品 | 在线观看中文字幕av | 久草热在线 | 日韩美女在线看免费观看 | 香蕉久久久 | 免费视频一区二区 | 国产精品一区在线观看 | 国产第一区二区 | 日一区二区 | 精品免费视频 | 99re在线视频 | 97成人精品 | 国产成人精品一区二区三区 | 狠狠爱免费视频 | 极品销魂美女一区二区 | 久久成人免费观看 | 国产女人与拘做受免费视频 | 亚洲日韩中文字幕一区 | 久久精品一区二区三区四区 | 性高湖久久久久久久久3小时 | 婷婷毛片| 日韩欧美国产一区二区 | 人人叉 |