最近有一個需求是根據(jù)數(shù)據(jù)自動在前端頁面畫出一個流程導(dǎo)向圖,簡單說就是把數(shù)據(jù)以A節(jié)點指向B節(jié)點,B節(jié)點指向C節(jié)點這種形式給你,然后讓頁面自己在一定區(qū)域內(nèi)渲染出一個流程圖.當(dāng)然節(jié)點上可能還有其他信息,這個暫時不考慮,就是這樣一個需求,最后是借助一個工具完成的.先說一下處理過程:
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)海拉爾免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
可以說這個問題一開始我走了彎路,想的不是那么清楚,一開始想的是自己畫.低端的就是用html+css各種布局,畫出方塊和線條,至于箭頭什么的再想辦法.后來一想這樣太低端了,應(yīng)該專業(yè)一點,就打算用canvas或者svg.因為之前用過echarts前端的圖標(biāo)庫,知道它底層有個依賴庫zrender就是專門弄canvas的,所以好一陣看,感覺還靠譜,能畫出來.
這樣雖然能畫出來,不過接下來我們就要考慮更多的問題,首先什么時候折行,然后遇到分支的種種情況怎么處理.最后我查資料竟然開始涉及一些圖論的東西了,深刻感覺到東西好像變復(fù)雜了,我的目的不是研究理論,而是為了一個實現(xiàn).
這時候轉(zhuǎn)變一下思路,有沒有什么工具能專門做這樣的工作,類似于jQuery大家都用它操作DOM,RequireJS都用它來實現(xiàn)模塊化加載.那應(yīng)該也有類似的東西,集成了數(shù)學(xué)上的圖論,自動布局等.這就不得不說Github火的一塌糊涂是有原因的,我搜了很多中文網(wǎng)站以及百度都沒什么結(jié)果(不知道是不是關(guān)鍵字有問題),總之沒搜到能用的東西.但是在Github上找到了一個開源項目:dagre-d3.
看名字就能猜到它是基于D3庫的,D3是一個專門用于前端圖形繪制的庫,dagre-d3就是實現(xiàn)自動布局并且繪制流程圖的這么一個東西.
Dagre is a JavaScript library that makes it easy to lay out directed graphs on the client-side. The dagre-d3 library acts a front-end to dagre, providing actual rendering using D3.
上一個簡單的Demo:
// Create a new directed graph
var g = new dagreD3.Digraph();
// Add nodes to the graph. The first argument is the node id. The second is
// metadata about the node. In this case we're going to add labels to each of
// our nodes.
g.addNode("kspacey", ? ?{ label: "Kevin Spacey" });
g.addNode("swilliams", ?{ label: "Saul Williams" });
g.addNode("bpitt", ? ? ?{ label: "Brad Pitt" });
g.addNode("hford", ? ? ?{ label: "Harrison Ford" });
g.addNode("lwilson", ? ?{ label: "Luke Wilson" });
g.addNode("kbacon", ? ? { label: "Kevin Bacon" });
// Add edges to the graph. The first argument is the edge id. Here we use null
// to indicate that an arbitrary edge id can be assigned automatically. The
// second argument is the source of the edge. The third argument is the target
// of the edge. The last argument is the edge metadata.
g.addEdge(null, "kspacey", ? "swilliams", { label: "K-PAX" });
g.addEdge(null, "swilliams", "kbacon", ? ?{ label: "These Vagabond Shoes" });
g.addEdge(null, "bpitt", ? ? "kbacon", ? ?{ label: "Sleepers" });
g.addEdge(null, "hford", ? ? "lwilson", ? { label: "Anchorman 2" });
g.addEdge(null, "lwilson", ? "kbacon", ? ?{ label: "Telling Lies in America" });
它渲染出來是這樣的:
這樣我們只要把數(shù)據(jù)處理成對應(yīng)格式,就可以輕松的自動繪制會流程圖.比較給力的是它對數(shù)據(jù)的支持良好,有多個格式可以選擇,而且雖然接口不多,但是對于節(jié)點以及線條的操作都有,可以很輕松的改變節(jié)點以及線條的樣式,這個大家可以看官方的demo.
另外如果要附加交互事件,可以通過jquery實現(xiàn),也很容易,我使用bootstrap的tooltip很輕松的就加上去了.感覺還是個很給力的庫,而且國內(nèi)這方面資料感覺不多
學(xué)習(xí)計算機(jī)的內(nèi)容順序:基本操作、打字速度、知識定位、辦公軟件、專業(yè)知識。
基本操作:需要掌握電腦開機(jī)、關(guān)機(jī)、待機(jī)、關(guān)機(jī)、重啟等各種方法,使用鼠標(biāo)的基本功能,復(fù)制、粘貼、滾動等。
打字速度:提升自己的打字速度,方便以后的各種操作,熟能生巧,多花費點時間去練就可以。
知識定位:計算機(jī)相關(guān)的知識、領(lǐng)域、技能很多,這就需要做好定位,看自己需要學(xué)習(xí),專研哪方面的知識,然后著手去學(xué)習(xí)相關(guān)的知識,進(jìn)行大量實踐操作即可。
辦公軟件:應(yīng)付日常的工作,我們掌握相關(guān)的辦公軟件,如:表格、文檔、畫圖等。
專業(yè)知識:針對自己所需的專業(yè)知識,去學(xué)習(xí)、研究,去參考成功的案例。還需要在實踐中運用自己所掌握的知識,以及總結(jié)相關(guān)的專業(yè)知識和經(jīng)驗。
cytoscope.js能支持 2 g 字節(jié)的數(shù)據(jù)最多Cytoscape是一個強(qiáng)大的JavaScript庫,被廣泛用于圖形數(shù)據(jù)分析和可視化。
它是一個用純JavaScript編寫的輕量級庫,它允許我們以豐富的圖形格式顯示和操作數(shù)據(jù)。在許可開源許可證(MIT)下,
庫包含許多與圖論理論算法相關(guān)的有用函數(shù) - 從BFS到PageRank。
程序員邏輯思維的培養(yǎng)對軟件工程非常重要,思維快的能快速編寫邏輯代碼??梢詮囊幌聨讉€方面進(jìn)行慢慢培養(yǎng)。
第一:明確學(xué)習(xí)目的
邏輯思維學(xué)習(xí)編程對多數(shù)IT業(yè)人員來說都是非常有用的。學(xué)編程,做一名編程人員,從個人角度講,可以解決在軟件使用中所遇到的問題,改進(jìn)現(xiàn)有軟件,可以為自己找到一份理想的工作添加重要得砝碼,有利于在求職道路上謀得一個好的職位;從國家的角度,可以為中國的軟件產(chǎn)業(yè)做出應(yīng)有的貢獻(xiàn),一名優(yōu)秀的程序員永遠(yuǎn)是被爭奪的對象。學(xué)習(xí)編程還能鍛煉思維,使我們的邏輯思維更加嚴(yán)密;能夠不斷享受到創(chuàng)新的樂趣,將一直有機(jī)會走在高科技的前沿,因為程序設(shè)計本身是一種創(chuàng)造性的工作。知識經(jīng)濟(jì)時代給我們帶來了無限的機(jī)會,要想真正掌握計算機(jī)技術(shù),并在IT行業(yè)里干出一番事業(yè)來,有所作為,具有一定的編程能力是一個基本條件和要求。
第二打好基礎(chǔ),學(xué)好基礎(chǔ)知識對我們開發(fā)也很重要學(xué)編程要具備一定的基礎(chǔ),總結(jié)之有以下幾方面:
首先是數(shù)學(xué)基礎(chǔ) 從計算機(jī)發(fā)展和應(yīng)用的歷史來看計算機(jī)的數(shù)學(xué)模型和體系結(jié)構(gòu)等都是有數(shù)學(xué)家提出的,最早的計算機(jī)也是為數(shù)值計算而設(shè)計的。因此,要學(xué)好計算機(jī)就要有一定的數(shù)學(xué)基礎(chǔ),出學(xué)者有高中水平就差不多了。
其次是邏輯思維能力的培養(yǎng) 學(xué)程序設(shè)計要有一定的邏輯思維能力,“邏思力”的培養(yǎng)要長時間的實踐鍛煉。要想成為一名優(yōu)秀的程序員,最重要的是掌握編程思想。要做到這一點必須在反復(fù)的實踐、觀察、分析、比較、總結(jié)中逐漸地積累。因此在學(xué)習(xí)編程過程中,我們不必等到什么都完全明白了才去動手實踐,只要明白了大概,就要敢于自己動手去體驗。誰都有第一次。有些問題只有通過實踐后才能明白,也只有實踐才能把老師和書上的知識變成自己的,高手都是這樣成材的。最后是選擇一種合適的入門語言 面對各種各樣的語言,應(yīng)按什么樣的順序?qū)W呢?程序設(shè)計工具不外乎如下幾類: 1)本地開發(fā) 應(yīng)用軟件開發(fā)的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;數(shù)據(jù)庫開發(fā)工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。 2)跨平臺開發(fā) 開發(fā)工具如 Java 等。 3)網(wǎng)絡(luò)開發(fā) 對客戶端開發(fā)工具如:Java Script 等;對服務(wù)器開發(fā)工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。 以上不同的環(huán)境下幾種開發(fā)工具中 VB 法簡單并容易理解,界面設(shè)計是可設(shè)化的,易學(xué)、易用。選 VB 作為入門的方向?qū)Τ鰧W(xué)者是較為適合的。
第三:注意理解一些重要概念
一本程序設(shè)計的書看到的無非就是變量、函數(shù)、條件語句、循環(huán)語句等概念,但要真正能進(jìn)行編程應(yīng)用,需要深入理解這些概念,在理解的基礎(chǔ)上應(yīng)用,不要只簡單地學(xué)習(xí)語法、結(jié)構(gòu),而要吃透針對這些語法、結(jié)構(gòu)的應(yīng)用例子,做到舉一反三,觸類旁通。
第四:掌握編程思想,編程思想使用較多的就是oop編程思想
學(xué)習(xí)一門語言或開發(fā)工具,語法結(jié)構(gòu)、功能調(diào)用是次要的,最主要是學(xué)習(xí)它的思想。例如學(xué)習(xí) VC 就要學(xué)習(xí) Windows 的內(nèi)在機(jī)理、什么是線程......;學(xué)習(xí) COM 就要知道VTALBE 、類廠、接口、idl......,關(guān)鍵是學(xué)一種思想,有了思想,那么我們就可以觸類旁通。
第六:多實踐、多交流,一切思維來自項目開發(fā)的積累
掌握編程思想必須在編程實際工作中去實踐和體會。編程起步階段要經(jīng)常自己動手設(shè)計程序,具體設(shè)計時不要拘泥于固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實踐,幫助自己提高水平。親自動手進(jìn)行程序設(shè)計是創(chuàng)造性思維應(yīng)用的體現(xiàn),也是培養(yǎng)邏輯思維的好方法。
第七:養(yǎng)成良好的編程習(xí)慣
編程入門不難,但入門后不斷學(xué)習(xí)是十分重要的,相對來說較為漫長。在此期間要注意養(yǎng)成一些良好的編程習(xí)慣。編程風(fēng)格的好壞很大程度影響程序質(zhì)量。良好的編程風(fēng)格可以使
程序結(jié)構(gòu)清晰合理,且使程序代碼便于維護(hù)。如代碼的縮進(jìn)編排、變量命令規(guī)則的一致性、代碼的注釋等。
第八:上網(wǎng)學(xué)編程
在網(wǎng)上可以學(xué)到很多不同的編程思想、方法、經(jīng)驗和技巧,有大量的工具和作品及相關(guān)的輔導(dǎo)材料供下載
8.加強(qiáng)計算機(jī)理論知識的再學(xué)習(xí)
思維培養(yǎng)學(xué)編程是符合“理論→實踐→再理論→再實踐”的一個認(rèn)識過程。一開始要具有一定的計算機(jī)理論基礎(chǔ)知識,包括編程所需的數(shù)學(xué)基礎(chǔ)知識,具備了入門的條件,就可以
開始編程的實踐,從實踐中可以發(fā)現(xiàn)問題需要加強(qiáng)計算機(jī)理論知識的再學(xué)習(xí)。程序人人皆可編,但當(dāng)你發(fā)現(xiàn)編到一定程度很難再提高的時候,就要回頭來學(xué)習(xí)一些計算機(jī)科學(xué)和數(shù)
學(xué)基礎(chǔ)理論。學(xué)過之后,很多以前遇到的問題都會迎刃而解,使人有豁然開朗之感。因此在學(xué)習(xí)編程的過程中要不斷地針對應(yīng)用中的困惑和問題深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、算法、計算機(jī)
原理、編譯原理、操作系統(tǒng)原理、軟件工程等計算機(jī)科學(xué)的理論基礎(chǔ)和數(shù)理邏輯、代數(shù)系統(tǒng)、圖論、離散數(shù)學(xué)等數(shù)學(xué)理論基礎(chǔ)知識。這樣經(jīng)過不斷的學(xué)習(xí),再努力地實踐,編程水平一定會不斷提高到一個新高度。
這就是總結(jié)出來的思維培養(yǎng)模式,希望能幫到你,謝謝!
計算機(jī)網(wǎng)絡(luò)技術(shù)--專業(yè)主要學(xué)習(xí)軟件和網(wǎng)絡(luò)。
1、計算機(jī)網(wǎng)絡(luò)專業(yè)的學(xué)習(xí)當(dāng)然首先會學(xué)習(xí)《計算機(jī)基礎(chǔ)知識》,讓你學(xué)會用電腦,然后的課程就有,《綜合布線技術(shù)》《通信設(shè)備安裝與防護(hù) 》這個是通信設(shè)備的正確安裝是網(wǎng)絡(luò)工程的基礎(chǔ)。
還有《網(wǎng)絡(luò)基礎(chǔ) 》《OSI參考模型》《TCP/IP》《以太網(wǎng)技術(shù)》這個就是局域網(wǎng),《廣域網(wǎng)技術(shù) 》《交換機(jī)及基本配置》《路由器及基本配置》《網(wǎng)絡(luò)架構(gòu)》《大型網(wǎng)絡(luò)組網(wǎng)方案》《防火墻技術(shù)》等,包括后面還要對linux系統(tǒng)進(jìn)行學(xué)習(xí)
2、 從軟件來說: 大一的時候?qū)W習(xí)C語言,java,然后學(xué)數(shù)據(jù)庫,學(xué)HTML,然后學(xué)習(xí)jsp,javaWEB開發(fā),一直學(xué)到了struct 2,對于軟件這一塊,都是一路學(xué)下來的。網(wǎng)絡(luò)原理就是對那七大層的學(xué)習(xí)/從物理層到應(yīng)用層,學(xué)網(wǎng)絡(luò)互連技術(shù),就是對交換機(jī)和路由器的配置。
信息安全與管理
專業(yè)基礎(chǔ)和專業(yè)課主要有:高等數(shù)學(xué)、線性代數(shù)、計算方法、概率論與數(shù)理統(tǒng)計、計算機(jī)與算法初步、C++語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法、計算機(jī)原理與匯編語言、數(shù)據(jù)庫原理、操作系統(tǒng)、大學(xué)物理、集合與圖論、代數(shù)與邏輯、密碼學(xué)原理、編碼理論、信息論基礎(chǔ)、信息安全體系結(jié)構(gòu)、軟件工程、數(shù)字邏輯、計算機(jī)網(wǎng)絡(luò)等。
選修課,主要有:數(shù)據(jù)通信原理、信息安全概論、計算機(jī)網(wǎng)絡(luò)安全管理、數(shù)字鑒別及認(rèn)證系統(tǒng)、網(wǎng)絡(luò)安全檢測與防范技術(shù)、防火墻技術(shù)、病毒機(jī)制與防護(hù)技術(shù)、網(wǎng)絡(luò)安全協(xié)議與標(biāo)準(zhǔn)等。學(xué)生除要完成信息安全體系不同層次上的各種實驗和課程設(shè)計外,還將在畢業(yè)設(shè)計中接受嚴(yán)格訓(xùn)練。
1、 學(xué)習(xí)一門腳本語言
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發(fā)出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關(guān)鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統(tǒng) (sys, os, path),例如寫一個程序統(tǒng)計一個目錄下所有文件大小并按各種條件排序并保存結(jié)果
跟數(shù)據(jù)庫打交道 (python sqlite),寫一個小腳本統(tǒng)計數(shù)據(jù)庫里條目數(shù)量
學(xué)會用各種print之類簡單粗暴的方式進(jìn)行調(diào)試
學(xué)會用Google (phrase, domain, use reader to follow tech blogs)
為什么要學(xué)腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發(fā)現(xiàn)正規(guī)的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學(xué)會如何配置代碼補(bǔ)全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日志會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學(xué)會用虛擬機(jī)里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學(xué)會使用man來查看幫助
文件系統(tǒng)結(jié)構(gòu)和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學(xué)會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學(xué)會使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…/p
了解/etc目錄下的各種配置文章,學(xué)會查看/var/log下的系統(tǒng)日志,以及/proc下的系統(tǒng)運行信息
了解正則表達(dá)式,使用正則表達(dá)式來查找文件。
對于程序員來說Unix/Linux比Windows簡單多了,學(xué)會使用Unix/Linux你會發(fā)現(xiàn)圖形界面在某些時候?qū)嵲谑翘y用了,相當(dāng)?shù)叵喈?dāng)?shù)亟档凸ぷ餍省?/p>
4、 學(xué)習(xí)Web基礎(chǔ)(HTML/CSS/JS) + 服務(wù)器端技術(shù) (LAMP)
未來必然是Web的世界,學(xué)習(xí)WEB基礎(chǔ)的最佳網(wǎng)站是W3School。
學(xué)習(xí)HTML基本語法
學(xué)習(xí)CSS如何選中HTML元素并應(yīng)用一些基本樣式(關(guān)鍵詞:box model)
學(xué)會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網(wǎng)頁結(jié)構(gòu),并動態(tài)修改。
學(xué)習(xí)使用Javascript操縱HTML元件。理解DOM和動態(tài)網(wǎng)頁,網(wǎng)上有免費的章節(jié),足夠用了?;騾⒖?DOM 。
學(xué)會用 Firefox + Firebug 或 chrome 調(diào)試/p
在一臺機(jī)器上配置Apache 或 Nginx
學(xué)習(xí)PHP,讓后臺PHP和前臺HTML進(jìn)行數(shù)據(jù)交互,對服務(wù)器相應(yīng)瀏覽器請求形成初步認(rèn)識。實現(xiàn)一個表單提交和反顯的功能。
把PHP連接本地或者遠(yuǎn)程數(shù)據(jù)庫 MySQL(MySQL 和 SQL現(xiàn)學(xué)現(xiàn)用夠了)
跟完一個名校的網(wǎng)絡(luò)編程課程,不要覺得需要多于一學(xué)期時間,大學(xué)生是全職一學(xué)期選3-5門課,你業(yè)余時間一定可以跟上
學(xué)習(xí)一個+ Ajax (異步讀入一個服務(wù)器端圖片或者數(shù)據(jù)庫內(nèi)容)+JSON數(shù)據(jù)格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網(wǎng)用瀏覽器的時候發(fā)生的事情了(proxy, gateway, browsers)
做個小網(wǎng)站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網(wǎng)站。
新聞標(biāo)題:javascript圖論,JavaScript繪圖庫
網(wǎng)站鏈接:http://jinyejixie.com/article24/dssojce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站設(shè)計公司、面包屑導(dǎo)航、定制網(wǎng)站、App開發(fā)、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)